From 639bb270ac1a8f12f7d0d1222b94f0b213c2a0ac Mon Sep 17 00:00:00 2001 From: Eyal Danieli Date: Wed, 25 Sep 2024 09:41:02 +0300 Subject: [PATCH] Align to master branch (#826) * [Category] Fix and add categories to functions (#808) * [Category] Fix and add categories to functions * bump version in structured * test is not valid in huggingface_serving * Fix duplicated footer * Fix duplicated footer * revert python version change as it will be done in another PR * comments * comments * Bump python:3.6 to python:3.9 (#810) * [Describe] Align describe to new pandas version (#812) * [Describe] Align describe to new pandas version * minor test fix * update mlrun version * add dask to requirements * remove dask * update numpy version * debug * debug * debug * remove dask tests * remove debug code * [get_offline_features] Updated to mlrun 1.6.3 (#813) * [Feature-selection] Replace matplotlib with plotly (#815) * Iguazio-cicd user token updated Iguazio-cicd user token updated in repo secrets: https://github.com/mlrun/functions/settings/secrets/actions MARKETPLACE_ACCESS_TOKEN_V3 new token gh...Zmf was set around April * forcing iguazio-cicd auth forcing iguazio-cicd to deal with Author identity unknown * checkout@v3 to v4 and echo * [Mlflow_utils] - mlflow model server (#811) * mlflow server * small fix to test * small fixes to ms and nb * small fixes to mlrun version * update requirements lightgbm * added req * Added xgboost to req --------- Co-authored-by: Avi Asulin <34214569+aviaIguazio@users.noreply.github.com> * [Mlflow] Remove mlflow tag (#825) * remove mlflow tag * remove mlflow tag --------- Co-authored-by: Avi Asulin <34214569+aviaIguazio@users.noreply.github.com> * align feature_selection yaml --------- Co-authored-by: Avi Asulin <34214569+aviaIguazio@users.noreply.github.com> Co-authored-by: Yonatan Shelach <92271540+yonishelach@users.noreply.github.com> Co-authored-by: rokatyy Co-authored-by: Katerina Molchanova <35141662+rokatyy@users.noreply.github.com> Co-authored-by: nashpaz123 <44337075+nashpaz123@users.noreply.github.com> Co-authored-by: ZeevRispler <73653682+ZeevRispler@users.noreply.github.com> --- .github/workflows/test-all.yaml | 23 +- churn_server/churn_server.py | 10 - churn_server/function.yaml | 4 +- churn_server/item.yaml | 2 +- describe/describe.py | 39 +- describe/function.yaml | 96 +- describe/item.yaml | 4 +- describe/requirements.txt | 1 - describe/test_describe.py | 76 -- feature_selection/feature_selection.py | 52 +- feature_selection/function.yaml | 4 +- feature_selection/requirements.txt | 4 +- feature_selection/test_feature_selection.py | 57 +- hugging_face_serving/function.yaml | 41 +- hugging_face_serving/item.yaml | 5 +- mlflow_utils/function.yaml | 31 + mlflow_utils/item.yaml | 31 + mlflow_utils/mlflow_utils.ipynb | 1353 +++++++++++++++++++ mlflow_utils/mlflow_utils.py | 45 + mlflow_utils/requirements.txt | 3 + mlflow_utils/test_mlflow_utils.py | 179 +++ model_server/function.yaml | 2 +- pii_recognizer/function.yaml | 3 +- pii_recognizer/item.yaml | 3 +- pyannote_audio/function.yaml | 6 +- pyannote_audio/item.yaml | 6 +- question_answering/function.yaml | 4 +- question_answering/item.yaml | 4 +- silero_vad/function.yaml | 6 +- silero_vad/item.yaml | 6 +- structured_data_generator/function.yaml | 4 +- structured_data_generator/item.yaml | 4 +- text_to_audio_generator/function.yaml | 3 +- text_to_audio_generator/item.yaml | 3 +- tf2_serving/function.yaml | 2 +- transcribe/function.yaml | 5 +- transcribe/item.yaml | 4 +- translate/function.yaml | 24 +- translate/item.yaml | 3 +- v2_model_server/function.yaml | 4 +- v2_model_server/item.yaml | 2 +- v2_model_server/v2_model_server.py | 11 - 42 files changed, 1860 insertions(+), 309 deletions(-) create mode 100644 mlflow_utils/function.yaml create mode 100644 mlflow_utils/item.yaml create mode 100644 mlflow_utils/mlflow_utils.ipynb create mode 100644 mlflow_utils/mlflow_utils.py create mode 100644 mlflow_utils/requirements.txt create mode 100644 mlflow_utils/test_mlflow_utils.py diff --git a/.github/workflows/test-all.yaml b/.github/workflows/test-all.yaml index 4832c6456..a09ba17a2 100644 --- a/.github/workflows/test-all.yaml +++ b/.github/workflows/test-all.yaml @@ -15,7 +15,7 @@ jobs: run: echo "::set-output name=branch::${GITHUB_REF#refs/heads/}" id: myref - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - id: set-matrix # This is very hacky, but it goes like that: # 1) Associate base_ref with origin/base_ref since actions/checkout doesn't do it, if we don't do that we won't be able to check the actual diff @@ -63,7 +63,7 @@ jobs: steps: # Source - name: Checkout current repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: functions # Install python 3.9 @@ -106,11 +106,11 @@ jobs: run: echo "::set-output name=branch::${GITHUB_REF#refs/heads/}" id: branch - name: Checkout current repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: functions - name: Checkout Marketplace - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: mlrun/marketplace path: marketplace @@ -136,6 +136,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.MARKETPLACE_ACCESS_TOKEN_V3 }} USERNAME: iguazio-cicd + USEREMAIL: iguaziocicd@gmail.com REPO_PATH: marketplace BASE_REPO: mlrun BASE_BRANCH: master @@ -153,24 +154,30 @@ jobs: exit 1; }; git config --local user.name $USERNAME + git config --local user.email $USEREMAIL git branch --set-upstream-to origin/master git remote -v - echo "Checking out [$BRANCH_NAME]..." + echo "1. Checking out [$BRANCH_NAME]..." git checkout -b $BRANCH_NAME - echo "Checking out [$BASE_BRANCH]..." + echo "2. Checking out [$BASE_BRANCH]..." git checkout $BASE_BRANCH git pull - echo "Checking out [$BRANCH_NAME]..." + echo "3. Checking out [$BRANCH_NAME]..." git checkout $BRANCH_NAME + echo "3a. merging" git merge $BASE_BRANCH + echo "3b. status" git status git status --ignored find . -type f | xargs ls -artl + echo "3b. add" git add --all git status git status --ignored - echo "Commiting changes..." + echo "4. Commiting changes..." + echo "4a. git rev-parse" git rev-parse --show-toplevel + echo "4b. git commit" git commit -a -m "Automatically generated by github-worflow[bot] for commit: $COMMIT_SHA" git status git status --ignored diff --git a/churn_server/churn_server.py b/churn_server/churn_server.py index 55f37f280..def2850da 100644 --- a/churn_server/churn_server.py +++ b/churn_server/churn_server.py @@ -43,13 +43,3 @@ def predict(self, body): except Exception as e: raise Exception("Failed to predict %s" % e) - -from mlrun.runtimes import nuclio_init_hook - - -def init_context(context): - nuclio_init_hook(context, globals(), "serving_v2") - - -def handler(context, event): - return context.mlrun_handler(context, event) diff --git a/churn_server/function.yaml b/churn_server/function.yaml index 7a73c11a4..14f6c8cef 100644 --- a/churn_server/function.yaml +++ b/churn_server/function.yaml @@ -29,14 +29,14 @@ spec: annotations: nuclio.io/generated_by: function generated from /User/functions/churn_server/churn_server.py spec: - runtime: python:3.6 + runtime: python:3.9 handler: churn_server:handler env: [] volumes: [] build: commands: [] noBaseImagesPull: true - functionSourceCode: IyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKaW1wb3J0IG51bXB5IGFzIG5wCmZyb20gY2xvdWRwaWNrbGUgaW1wb3J0IGxvYWQKCgppbXBvcnQgbWxydW4KCgpjbGFzcyBDaHVybk1vZGVsKG1scnVuLnNlcnZpbmcuVjJNb2RlbFNlcnZlcik6CiAgICBkZWYgbG9hZChzZWxmKToKICAgICAgICAiIiIKICAgICAgICBsb2FkIG11bHRpcGxlIG1vZGVscyBpbiBuZXN0ZWQgZm9sZGVycywgY2h1cm4gbW9kZWwgb25seQogICAgICAgICIiIgogICAgICAgIGNsZl9tb2RlbF9maWxlLCBleHRyYV9kYXRhID0gc2VsZi5nZXRfbW9kZWwoIi5wa2wiKQogICAgICAgIHNlbGYubW9kZWwgPSBsb2FkKG9wZW4oc3RyKGNsZl9tb2RlbF9maWxlKSwgInJiIikpCiAgICAgICAgaWYgImNveCIgaW4gZXh0cmFfZGF0YS5rZXlzKCk6CiAgICAgICAgICAgIGNveF9tb2RlbF9maWxlID0gZXh0cmFfZGF0YVsiY294Il0KICAgICAgICAgICAgc2VsZi5jb3hfbW9kZWwgPSBsb2FkKG9wZW4oc3RyKGNveF9tb2RlbF9maWxlKSwgInJiIikpCiAgICAgICAgICAgIGlmICJjb3gva20iIGluIGV4dHJhX2RhdGEua2V5cygpOgogICAgICAgICAgICAgICAga21fbW9kZWxfZmlsZSA9IGV4dHJhX2RhdGFbImNveC9rbSJdCiAgICAgICAgICAgICAgICBzZWxmLmttX21vZGVsID0gbG9hZChvcGVuKHN0cihrbV9tb2RlbF9maWxlKSwgInJiIikpCgogICAgZGVmIHByZWRpY3Qoc2VsZiwgYm9keSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmZWF0cyA9IG5wLmFzYXJyYXkoYm9keVsiaW5wdXRzIl0sIGR0eXBlPW5wLmZsb2F0MzIpLnJlc2hhcGUoLTEsIDIzKQogICAgICAgICAgICByZXN1bHQgPSBzZWxmLm1vZGVsLnByZWRpY3QoZmVhdHMsIHZhbGlkYXRlX2ZlYXR1cmVzPUZhbHNlKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvbGlzdCgpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxlZCB0byBwcmVkaWN0ICVzIiAlIGUpCgoKZnJvbSBtbHJ1bi5ydW50aW1lcyBpbXBvcnQgbnVjbGlvX2luaXRfaG9vawoKCmRlZiBpbml0X2NvbnRleHQoY29udGV4dCk6CiAgICBudWNsaW9faW5pdF9ob29rKGNvbnRleHQsIGdsb2JhbHMoKSwgInNlcnZpbmdfdjIiKQoKCmRlZiBoYW5kbGVyKGNvbnRleHQsIGV2ZW50KToKICAgIHJldHVybiBjb250ZXh0Lm1scnVuX2hhbmRsZXIoY29udGV4dCwgZXZlbnQpCgpmcm9tIG1scnVuLnJ1bnRpbWVzIGltcG9ydCBudWNsaW9faW5pdF9ob29rCmRlZiBpbml0X2NvbnRleHQoY29udGV4dCk6CiAgICBudWNsaW9faW5pdF9ob29rKGNvbnRleHQsIGdsb2JhbHMoKSwgJ3NlcnZpbmdfdjInKQoKZGVmIGhhbmRsZXIoY29udGV4dCwgZXZlbnQpOgogICAgcmV0dXJuIGNvbnRleHQubWxydW5faGFuZGxlcihjb250ZXh0LCBldmVudCkK + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKIyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKaW1wb3J0IG51bXB5IGFzIG5wCmZyb20gY2xvdWRwaWNrbGUgaW1wb3J0IGxvYWQKCgppbXBvcnQgbWxydW4KCgpjbGFzcyBDaHVybk1vZGVsKG1scnVuLnNlcnZpbmcuVjJNb2RlbFNlcnZlcik6CiAgICBkZWYgbG9hZChzZWxmKToKICAgICAgICAiIiIKICAgICAgICBsb2FkIG11bHRpcGxlIG1vZGVscyBpbiBuZXN0ZWQgZm9sZGVycywgY2h1cm4gbW9kZWwgb25seQogICAgICAgICIiIgogICAgICAgIGNsZl9tb2RlbF9maWxlLCBleHRyYV9kYXRhID0gc2VsZi5nZXRfbW9kZWwoIi5wa2wiKQogICAgICAgIHNlbGYubW9kZWwgPSBsb2FkKG9wZW4oc3RyKGNsZl9tb2RlbF9maWxlKSwgInJiIikpCiAgICAgICAgaWYgImNveCIgaW4gZXh0cmFfZGF0YS5rZXlzKCk6CiAgICAgICAgICAgIGNveF9tb2RlbF9maWxlID0gZXh0cmFfZGF0YVsiY294Il0KICAgICAgICAgICAgc2VsZi5jb3hfbW9kZWwgPSBsb2FkKG9wZW4oc3RyKGNveF9tb2RlbF9maWxlKSwgInJiIikpCiAgICAgICAgICAgIGlmICJjb3gva20iIGluIGV4dHJhX2RhdGEua2V5cygpOgogICAgICAgICAgICAgICAga21fbW9kZWxfZmlsZSA9IGV4dHJhX2RhdGFbImNveC9rbSJdCiAgICAgICAgICAgICAgICBzZWxmLmttX21vZGVsID0gbG9hZChvcGVuKHN0cihrbV9tb2RlbF9maWxlKSwgInJiIikpCgogICAgZGVmIHByZWRpY3Qoc2VsZiwgYm9keSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmZWF0cyA9IG5wLmFzYXJyYXkoYm9keVsiaW5wdXRzIl0sIGR0eXBlPW5wLmZsb2F0MzIpLnJlc2hhcGUoLTEsIDIzKQogICAgICAgICAgICByZXN1bHQgPSBzZWxmLm1vZGVsLnByZWRpY3QoZmVhdHMsIHZhbGlkYXRlX2ZlYXR1cmVzPUZhbHNlKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvbGlzdCgpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxlZCB0byBwcmVkaWN0ICVzIiAlIGUpCgoKZnJvbSBtbHJ1bi5ydW50aW1lcyBpbXBvcnQgbnVjbGlvX2luaXRfaG9vawpkZWYgaW5pdF9jb250ZXh0KGNvbnRleHQpOgogICAgbnVjbGlvX2luaXRfaG9vayhjb250ZXh0LCBnbG9iYWxzKCksICdzZXJ2aW5nX3YyJykKCmRlZiBoYW5kbGVyKGNvbnRleHQsIGV2ZW50KToKICAgIHJldHVybiBjb250ZXh0Lm1scnVuX2hhbmRsZXIoY29udGV4dCwgZXZlbnQpCg== source: '' function_kind: serving_v2 default_class: ChurnModel diff --git a/churn_server/item.yaml b/churn_server/item.yaml index 3a3b4b6ba..09ba9b713 100644 --- a/churn_server/item.yaml +++ b/churn_server/item.yaml @@ -29,4 +29,4 @@ spec: - xgboost==1.3.1 - lifelines==0.22.8 url: '' -version: 1.1.0 +version: 1.2.0 diff --git a/describe/describe.py b/describe/describe.py index def92782b..27d789f5b 100644 --- a/describe/describe.py +++ b/describe/describe.py @@ -36,7 +36,7 @@ ) from mlrun.datastore import DataItem from mlrun.execution import MLClientCtx -from mlrun.feature_store import FeatureSet, FeatureVector +from mlrun.feature_store import FeatureSet from plotly.subplots import make_subplots pd.set_option("display.float_format", lambda x: "%.2f" % x) @@ -234,24 +234,24 @@ def _create_features_histogram_artifacts( if label_column is not None and problem_type == "classification": all_labels = df[label_column].unique() visible = True - for (columnName, _) in df.iteritems(): - if columnName == label_column: + for column_name in df.columns: + if column_name == label_column: continue if label_column is not None and problem_type == "classification": for label in all_labels: sub_fig = go.Histogram( histfunc="count", - x=df.loc[df[label_column] == label][columnName], + x=df.loc[df[label_column] == label][column_name], name=str(label), visible=visible, ) - figs[f"{columnName}@?@{label}"] = sub_fig + figs[f"{column_name}@?@{label}"] = sub_fig else: - sub_fig = go.Histogram(histfunc="count", x=df[columnName], visible=visible) - figs[f"{columnName}@?@{1}"] = sub_fig + sub_fig = go.Histogram(histfunc="count", x=df[column_name], visible=visible) + figs[f"{column_name}@?@{1}"] = sub_fig if visible: - first_feature_name = columnName + first_feature_name = column_name visible = False fig = go.Figure() @@ -338,7 +338,7 @@ def _create_features_2d_scatter_artifacts( Create and log a scatter-2d artifact for each couple of features """ features = [ - columnName for (columnName, _) in df.iteritems() if columnName != label_column + column_name for column_name in df.columns if column_name != label_column ] max_feature_len = float(max(len(elem) for elem in features)) if label_column is not None: @@ -450,11 +450,12 @@ def _create_violin_artifact( plot_num = 0 - for (columnName, columnData) in df.iteritems(): + for column_name in df.columns: + column_data = df[column_name] violin = go.Violin( - x=[columnName] * columnData.shape[0], - y=columnData, - name=columnName, + x=[column_name] * column_data.shape[0], + y=column_data, + name=column_name, ) fig.add_trace( @@ -491,15 +492,15 @@ def _create_imbalance_artifact( """ if label_column: if problem_type == "classification": + values_column = "count" labels_count = df[label_column].value_counts().sort_index() df_labels_count = pd.DataFrame(labels_count) - df_labels_count.rename(columns={label_column: "Total"}, inplace=True) df_labels_count[label_column] = labels_count.index - df_labels_count["weights"] = df_labels_count["Total"] / sum( - df_labels_count["Total"] + df_labels_count.rename(columns={"": values_column}, inplace=True) + df_labels_count[values_column] = df_labels_count[values_column] / sum( + df_labels_count[values_column] ) - - fig = px.pie(df_labels_count, names=label_column, values="Total") + fig = px.pie(df_labels_count, names=label_column, values=values_column) else: fig = px.histogram( histfunc="count", @@ -532,7 +533,7 @@ def _create_corr_artifact( """ if label_column is not None: df = df.drop([label_column], axis=1) - tblcorr = df.corr() + tblcorr = df.corr(numeric_only=True) extra_data["correlation-matrix-csv"] = context.log_artifact( TableArtifact("correlation-matrix-csv", df=tblcorr, visible=True), local_path=f"{plots_dest}/correlation-matrix.csv", diff --git a/describe/function.yaml b/describe/function.yaml index 6f518bbfa..f989c6ec7 100644 --- a/describe/function.yaml +++ b/describe/function.yaml @@ -1,54 +1,12 @@ +verbose: false kind: job -metadata: - name: describe - tag: '' - hash: 38ac49fa67c647c7defc230c9853a22657690a9e - project: '' - labels: - author: Davids - categories: - - data-analysis spec: - command: '' - args: [] - image: mlrun/mlrun - build: - functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKIyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKaW1wb3J0IHdhcm5pbmdzCmZyb20gdHlwaW5nIGltcG9ydCBVbmlvbgoKaW1wb3J0IG1scnVuCmltcG9ydCBudW1weSBhcyBucAoKd2FybmluZ3Muc2ltcGxlZmlsdGVyKGFjdGlvbj0iaWdub3JlIiwgY2F0ZWdvcnk9RnV0dXJlV2FybmluZykKCmltcG9ydCBtbHJ1bi5mZWF0dXJlX3N0b3JlIGFzIGZzdG9yZQppbXBvcnQgcGFuZGFzIGFzIHBkCmltcG9ydCBwbG90bHkuZXhwcmVzcyBhcyBweAppbXBvcnQgcGxvdGx5LmZpZ3VyZV9mYWN0b3J5IGFzIGZmCmltcG9ydCBwbG90bHkuZ3JhcGhfb2JqZWN0cyBhcyBnbwpmcm9tIG1scnVuLmFydGlmYWN0cyBpbXBvcnQgKAogICAgQXJ0aWZhY3QsCiAgICBEYXRhc2V0QXJ0aWZhY3QsCiAgICBQbG90bHlBcnRpZmFjdCwKICAgIFRhYmxlQXJ0aWZhY3QsCiAgICB1cGRhdGVfZGF0YXNldF9tZXRhLAopCmZyb20gbWxydW4uZGF0YXN0b3JlIGltcG9ydCBEYXRhSXRlbQpmcm9tIG1scnVuLmV4ZWN1dGlvbiBpbXBvcnQgTUxDbGllbnRDdHgKZnJvbSBtbHJ1bi5mZWF0dXJlX3N0b3JlIGltcG9ydCBGZWF0dXJlU2V0LCBGZWF0dXJlVmVjdG9yCmZyb20gcGxvdGx5LnN1YnBsb3RzIGltcG9ydCBtYWtlX3N1YnBsb3RzCgpwZC5zZXRfb3B0aW9uKCJkaXNwbGF5LmZsb2F0X2Zvcm1hdCIsIGxhbWJkYSB4OiAiJS4yZiIgJSB4KQpNQVhfU0laRV9PRl9ERiA9IDUwMDAwMAoKCmRlZiBhbmFseXplKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBuYW1lOiBzdHIgPSAiZGF0YXNldCIsCiAgICB0YWJsZTogVW5pb25bRmVhdHVyZVNldCwgRGF0YUl0ZW1dID0gTm9uZSwKICAgIGxhYmVsX2NvbHVtbjogc3RyID0gTm9uZSwKICAgIHBsb3RzX2Rlc3Q6IHN0ciA9ICJwbG90cyIsCiAgICByYW5kb21fc3RhdGU6IGludCA9IDEsCiAgICBwcm9ibGVtX3R5cGU6IHN0ciA9ICJjbGFzc2lmaWNhdGlvbiIsCiAgICBkYXNrX2tleTogc3RyID0gImRhc2tfa2V5IiwKICAgIGRhc2tfZnVuY3Rpb246IHN0ciA9IE5vbmUsCiAgICBkYXNrX2NsaWVudD1Ob25lLAopIC0+IE5vbmU6CiAgICAiIiIKICAgIFRoZSBmdW5jdGlvbiB3aWxsIG91dHB1dCB0aGUgZm9sbG93aW5nIGFydGlmYWN0cyBwZXIKICAgIGNvbHVtbiB3aXRoaW4gdGhlIGRhdGEgZnJhbWUgKGJhc2VkIG9uIGRhdGEgdHlwZXMpCiAgICBJZiB0aGUgZGF0YSBoYXMgbW9yZSB0aGFuIDUwMCwwMDAgc2FtcGxlIHdlCiAgICBzYW1wbGUgcmFuZG9tbHkgNTAwLDAwMCBzYW1wbGVzOgoKICAgIGRlc2NyaWJlIGNzdgogICAgaGlzdG9ncmFtcwogICAgc2NhdHRlci0yZAogICAgdmlvbGluIGNoYXJ0CiAgICBjb3JyZWxhdGlvbi1tYXRyaXggY2hhcnQKICAgIGNvcnJlbGF0aW9uLW1hdHJpeCBjc3YKICAgIGltYmFsYW5jZSBwaWUgY2hhcnQKICAgIGltYmFsYW5jZS13ZWlnaHRzLXZlYyBjc3YKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBjb250ZXh0CiAgICA6cGFyYW0gbmFtZTogICAgICAgICAgICAgICAgICAgIEtleSBvZiBkYXRhc2V0IHRvIGRhdGFiYXNlICgiZGF0YXNldCIgZm9yIGRlZmF1bHQpCiAgICA6cGFyYW0gdGFibGU6ICAgICAgICAgICAgICAgICAgIE1MUnVuIGlucHV0IHBvaW50aW5nIHRvIHBhbmRhcyBkYXRhZnJhbWUgKGNzdi9wYXJxdWV0IGZpbGUgcGF0aCkgb3IgRmVhdHVyZVNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBwYXJhbQogICAgOnBhcmFtIGxhYmVsX2NvbHVtbjogICAgICAgICAgICBHcm91bmQgdHJ1dGggY29sdW1uIGxhYmVsCiAgICA6cGFyYW0gcGxvdHNfZGVzdDogICAgICAgICAgICAgIERlc3RpbmF0aW9uIGZvbGRlciBvZiBzdW1tYXJ5IHBsb3RzIChyZWxhdGl2ZSB0byBhcnRpZmFjdF9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInBsb3RzIiBmb3IgZGVmYXVsdCkKICAgIDpwYXJhbSByYW5kb21fc3RhdGU6ICAgICAgICAgICAgV2hlbiB0aGUgdGFibGUgaGFzIG1vcmUgdGhhbiA1MDAsMDAwIHNhbXBsZXMsIHdlIHNhbXBsZSByYW5kb21seSA1MDAsMDAwIHNhbXBsZXMKICAgIDpwYXJhbSBwcm9ibGVtX3R5cGUgICAgICAgICAgICAgVGhlIHR5cGUgb2YgdGhlIE1MIHByb2JsZW0gdGhlIGRhdGEgZmFjaW5nIC0gcmVncmVzc2lvbiwgY2xhc3NpZmljYXRpb24gb3IgTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3NpZmljYXRpb24gZm9yIGRlZmF1bHQpCiAgICA6cGFyYW0gZGFza19rZXk6ICAgICAgICAgICAgICAgIEtleSBvZiBkYXRhZnJhbWUgaW4gZGFzayBjbGllbnQgImRhdGFzZXRzIiBhdHRyaWJ1dGUKICAgIDpwYXJhbSBkYXNrX2Z1bmN0aW9uOiAgICAgICAgICAgRGFzayBmdW5jdGlvbiB1cmwgKGRiOi8vLi4pCiAgICA6cGFyYW0gZGFza19jbGllbnQ6ICAgICAgICAgICAgIERhc2sgY2xpZW50IG9iamVjdAogICAgIiIiCiAgICBkYXRhX2l0ZW0sIGZlYXR1cmVzZXQsIGNyZWF0LCB1cGRhdGUgPSBGYWxzZSwgRmFsc2UsIEZhbHNlLCBGYWxzZQogICAgZ2V0X2Zyb21fdGFibGUgPSBUcnVlCiAgICBpZiBkYXNrX2Z1bmN0aW9uIG9yIGRhc2tfY2xpZW50OgogICAgICAgIGRhdGFfaXRlbSwgY3JlYXQgPSBUcnVlLCBUcnVlCiAgICAgICAgaWYgZGFza19mdW5jdGlvbjoKICAgICAgICAgICAgY2xpZW50ID0gbWxydW4uaW1wb3J0X2Z1bmN0aW9uKGRhc2tfZnVuY3Rpb24pLmNsaWVudAogICAgICAgIGVsaWYgZGFza19jbGllbnQ6CiAgICAgICAgICAgIGNsaWVudCA9IGRhc2tfY2xpZW50CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGFzayBjbGllbnQgd2FzIG5vdCBwcm92aWRlZCIpCgogICAgICAgIGlmIGRhc2tfa2V5IGluIGNsaWVudC5kYXRhc2V0czoKICAgICAgICAgICAgZGYgPSBjbGllbnQuZ2V0X2RhdGFzZXQoZGFza19rZXkpCiAgICAgICAgICAgIGRhdGFfaXRlbSwgY3JlYXQsIGdldF9mcm9tX3RhYmxlID0gVHJ1ZSwgVHJ1ZSwgRmFsc2UKICAgICAgICBlbGlmIHRhYmxlOgogICAgICAgICAgICBnZXRfZnJvbV90YWJsZSA9IFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgZiJvbmx5IHRoZXNlIGRhdGFzZXRzIGFyZSBhdmFpbGFibGUge2NsaWVudC5kYXRhc2V0c30gaW4gY2xpZW50IHtjbGllbnR9IgogICAgICAgICAgICApCiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZGF0YXNldCBub3QgZm91bmQgb24gZGFzayBjbHVzdGVyIikKCiAgICBpZiBnZXRfZnJvbV90YWJsZToKICAgICAgICBpZiB0eXBlKHRhYmxlKSA9PSBEYXRhSXRlbToKICAgICAgICAgICAgaWYgdGFibGUubWV0YSBpcyBOb25lOgogICAgICAgICAgICAgICAgZGF0YV9pdGVtLCBjcmVhdCwgdXBkYXRlID0gVHJ1ZSwgVHJ1ZSwgRmFsc2UKICAgICAgICAgICAgZWxpZiB0YWJsZS5tZXRhLmtpbmQgPT0gImRhdGFzZXQiOgogICAgICAgICAgICAgICAgZGF0YV9pdGVtLCBjcmVhdCwgdXBkYXRlID0gVHJ1ZSwgRmFsc2UsIFRydWUKICAgICAgICAgICAgZWxpZiB0YWJsZS5tZXRhLmtpbmQgPT0gIkZlYXR1cmVWZWN0b3IiOgogICAgICAgICAgICAgICAgZGF0YV9pdGVtLCBjcmVhdCwgdXBkYXRlID0gVHJ1ZSwgRmFsc2UsIEZhbHNlCiAgICAgICAgICAgIGVsaWYgdGFibGUubWV0YS5raW5kID09ICJGZWF0dXJlU2V0IjoKICAgICAgICAgICAgICAgIGZlYXR1cmVzZXQsIGNyZWF0LCB1cGRhdGUgPSBUcnVlLCBGYWxzZSwgRmFsc2UKCiAgICAgICAgaWYgZGF0YV9pdGVtOgogICAgICAgICAgICBkZiA9IHRhYmxlLmFzX2RmKCkKICAgICAgICBlbGlmIGZlYXR1cmVzZXQ6CiAgICAgICAgICAgIHByb2plY3RfbmFtZSwgc2V0X25hbWUgPSAoCiAgICAgICAgICAgICAgICB0YWJsZS5fcGF0aC5zcGxpdCgiLyIpWzJdLAogICAgICAgICAgICAgICAgdGFibGUuX3BhdGguc3BsaXQoIi8iKVs0XSwKICAgICAgICAgICAgKQogICAgICAgICAgICBmZWF0dXJlX3NldCA9IGZzdG9yZS5nZXRfZmVhdHVyZV9zZXQoCiAgICAgICAgICAgICAgICBmInN0b3JlOi8vZmVhdHVyZS1zZXRzL3twcm9qZWN0X25hbWV9L3tzZXRfbmFtZX0iCiAgICAgICAgICAgICkKICAgICAgICAgICAgZGYgPSBmZWF0dXJlX3NldC50b19kYXRhZnJhbWUoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGYiV3JvbmcgdGFibGUgdHlwZS4iKQogICAgICAgICAgICByZXR1cm4KCiAgICBpZiBkZi5zaXplID4gTUFYX1NJWkVfT0ZfREY6CiAgICAgICAgZGYgPSBkZi5zYW1wbGUobj1pbnQoTUFYX1NJWkVfT0ZfREYgLyBkZi5zaGFwZVsxXSksIHJhbmRvbV9zdGF0ZT1yYW5kb21fc3RhdGUpCiAgICBleHRyYV9kYXRhID0ge30KCiAgICBpZiBsYWJlbF9jb2x1bW4gbm90IGluIGRmLmNvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1uID0gTm9uZQoKICAgIGV4dHJhX2RhdGFbImRlc2NyaWJlIGNzdiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgVGFibGVBcnRpZmFjdCgiZGVzY3JpYmUtY3N2IiwgZGY9ZGYuZGVzY3JpYmUoKSksCiAgICAgICAgbG9jYWxfcGF0aD1mIntwbG90c19kZXN0fS9kZXNjcmliZS5jc3YiLAogICAgKQoKICAgIHRyeToKICAgICAgICBfY3JlYXRlX2hpc3RvZ3JhbV9tYXRfYXJ0aWZhY3QoCiAgICAgICAgICAgIGNvbnRleHQsIGRmLCBleHRyYV9kYXRhLCBsYWJlbF9jb2x1bW4sIHBsb3RzX2Rlc3QKICAgICAgICApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihmIkZhaWxlZCB0byBjcmVhdGUgaGlzdG9ncmFtIG1hdHJpeCBhcnRpZmFjdCBkdWUgdG86IHtlfSIpCiAgICB0cnk6CiAgICAgICAgX2NyZWF0ZV9mZWF0dXJlc19oaXN0b2dyYW1fYXJ0aWZhY3RzKAogICAgICAgICAgICBjb250ZXh0LCBkZiwgZXh0cmFfZGF0YSwgbGFiZWxfY29sdW1uLCBwbG90c19kZXN0LCBwcm9ibGVtX3R5cGUKICAgICAgICApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihmIkZhaWxlZCB0byBjcmVhdGUgcGFpcnBsb3QgaGlzdG9ncmFtcyBkdWUgdG86IHtlfSIpCiAgICB0cnk6CiAgICAgICAgX2NyZWF0ZV9mZWF0dXJlc18yZF9zY2F0dGVyX2FydGlmYWN0cygKICAgICAgICAgICAgY29udGV4dCwgZGYsIGV4dHJhX2RhdGEsIGxhYmVsX2NvbHVtbiwgcGxvdHNfZGVzdCwgcHJvYmxlbV90eXBlCiAgICAgICAgKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oZiJGYWlsZWQgdG8gY3JlYXRlIHBhaXJwbG90IDJkX3NjYXR0ZXIgZHVlIHRvOiB7ZX0iKQogICAgdHJ5OgogICAgICAgIF9jcmVhdGVfdmlvbGluX2FydGlmYWN0KGNvbnRleHQsIGRmLCBleHRyYV9kYXRhLCBwbG90c19kZXN0KQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oZiJGYWlsZWQgdG8gY3JlYXRlIHZpb2xpbiBkaXN0cmlidXRpb24gcGxvdHMgZHVlIHRvOiB7ZX0iKQogICAgdHJ5OgogICAgICAgIF9jcmVhdGVfaW1iYWxhbmNlX2FydGlmYWN0KAogICAgICAgICAgICBjb250ZXh0LCBkZiwgZXh0cmFfZGF0YSwgbGFiZWxfY29sdW1uLCBwbG90c19kZXN0LCBwcm9ibGVtX3R5cGUKICAgICAgICApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihmIkZhaWxlZCB0byBjcmVhdGUgY2xhc3MgaW1iYWxhbmNlIHBsb3QgZHVlIHRvOiB7ZX0iKQogICAgdHJ5OgogICAgICAgIF9jcmVhdGVfY29ycl9hcnRpZmFjdChjb250ZXh0LCBkZiwgZXh0cmFfZGF0YSwgbGFiZWxfY29sdW1uLCBwbG90c19kZXN0KQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oZiJGYWlsZWQgdG8gY3JlYXRlIGZlYXR1cmVzIGNvcnJlbGF0aW9uIHBsb3QgZHVlIHRvOiB7ZX0iKQoKICAgIGlmIG5vdCBkYXRhX2l0ZW06CiAgICAgICAgcmV0dXJuCgogICAgYXJ0aWZhY3QgPSB0YWJsZS5hcnRpZmFjdF91cmwKICAgIGlmIGNyZWF0OiAgIyBkYXRhc2V0IG5vdCBzdG9yZWQKICAgICAgICBhcnRpZmFjdCA9IERhdGFzZXRBcnRpZmFjdCgKICAgICAgICAgICAga2V5PSJkYXRhc2V0Iiwgc3RhdHM9VHJ1ZSwgZGY9ZGYsIGV4dHJhX2RhdGE9ZXh0cmFfZGF0YQogICAgICAgICkKICAgICAgICBhcnRpZmFjdCA9IGNvbnRleHQubG9nX2FydGlmYWN0KGFydGlmYWN0LCBkYl9rZXk9bmFtZSkKICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiVGhlIGRhdGEgc2V0IGlzIGxvZ2dlZCB0byB0aGUgcHJvamVjdCB1bmRlciB7bmFtZX0gbmFtZSIpCgogICAgaWYgdXBkYXRlOgogICAgICAgIHVwZGF0ZV9kYXRhc2V0X21ldGEoYXJ0aWZhY3QsIGV4dHJhX2RhdGE9ZXh0cmFfZGF0YSkKICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiVGhlIGRhdGEgc2V0IG5hbWVkIHtuYW1lfSBpcyB1cGRhdGVkIikKCiAgICAjIFRPRE8gOiAzLUQgcGxvdCBvbiBvbiBzZWxlY3RlZCBmZWF0dXJlcy4KICAgICMgVE9ETyA6IFJlaW50ZWdyYXRpb24gcGxvdCBvbiBvbiBzZWxlY3RlZCBmZWF0dXJlcy4KICAgICMgVE9ETyA6IFBDQSBwbG90ICh3aXRoIG9wdGlvbnMpCgoKZGVmIF9jcmVhdGVfaGlzdG9ncmFtX21hdF9hcnRpZmFjdCgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGY6IHBkLkRhdGFGcmFtZSwKICAgIGV4dHJhX2RhdGE6IGRpY3QsCiAgICBsYWJlbF9jb2x1bW46IHN0ciwKICAgIHBsb3RzX2Rlc3Q6IHN0ciwKKToKICAgICIiIgogICAgQ3JlYXRlIGFuZCBsb2cgYSBoaXN0b2dyYW0gbWF0cml4IGFydGlmYWN0CiAgICAiIiIKICAgIGNvbnRleHQubG9nX2FydGlmYWN0KAogICAgICAgIGl0ZW09QXJ0aWZhY3QoCiAgICAgICAgICAgIGtleT0iaGlzdCIsCiAgICAgICAgICAgIGJvZHk9YiI8Yj4gRGVwcmVjYXRlZCwgc2VlIHRoZSBhcnRpZmFjdHMgc2NhdHRlci0yZCAiCiAgICAgICAgICAgIGIiYW5kIGhpc3RvZ3JhbXMgaW5zdGVhZDxiPiIsCiAgICAgICAgKSwKICAgICAgICBsb2NhbF9wYXRoPWYie3Bsb3RzX2Rlc3R9L2hpc3QuaHRtbCIsCiAgICApCgoKZGVmIF9jcmVhdGVfZmVhdHVyZXNfaGlzdG9ncmFtX2FydGlmYWN0cygKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGY6IHBkLkRhdGFGcmFtZSwKICAgIGV4dHJhX2RhdGE6IGRpY3QsCiAgICBsYWJlbF9jb2x1bW46IHN0ciwKICAgIHBsb3RzX2Rlc3Q6IHN0ciwKICAgIHByb2JsZW1fdHlwZTogc3RyLAopOgogICAgIiIiCiAgICBDcmVhdGUgYW5kIGxvZyBhIGhpc3RvZ3JhbSBhcnRpZmFjdCBmb3IgZWFjaCBmZWF0dXJlCiAgICAiIiIKCiAgICBmaWdzID0gZGljdCgpCiAgICBmaXJzdF9mZWF0dXJlX25hbWUgPSAiIgogICAgaWYgbGFiZWxfY29sdW1uIGlzIG5vdCBOb25lIGFuZCBwcm9ibGVtX3R5cGUgPT0gImNsYXNzaWZpY2F0aW9uIjoKICAgICAgICBhbGxfbGFiZWxzID0gZGZbbGFiZWxfY29sdW1uXS51bmlxdWUoKQogICAgdmlzaWJsZSA9IFRydWUKICAgIGZvciAoY29sdW1uTmFtZSwgXykgaW4gZGYuaXRlcml0ZW1zKCk6CiAgICAgICAgaWYgY29sdW1uTmFtZSA9PSBsYWJlbF9jb2x1bW46CiAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIGlmIGxhYmVsX2NvbHVtbiBpcyBub3QgTm9uZSBhbmQgcHJvYmxlbV90eXBlID09ICJjbGFzc2lmaWNhdGlvbiI6CiAgICAgICAgICAgIGZvciBsYWJlbCBpbiBhbGxfbGFiZWxzOgogICAgICAgICAgICAgICAgc3ViX2ZpZyA9IGdvLkhpc3RvZ3JhbSgKICAgICAgICAgICAgICAgICAgICBoaXN0ZnVuYz0iY291bnQiLAogICAgICAgICAgICAgICAgICAgIHg9ZGYubG9jW2RmW2xhYmVsX2NvbHVtbl0gPT0gbGFiZWxdW2NvbHVtbk5hbWVdLAogICAgICAgICAgICAgICAgICAgIG5hbWU9c3RyKGxhYmVsKSwKICAgICAgICAgICAgICAgICAgICB2aXNpYmxlPXZpc2libGUsCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBmaWdzW2Yie2NvbHVtbk5hbWV9QD9Ae2xhYmVsfSJdID0gc3ViX2ZpZwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN1Yl9maWcgPSBnby5IaXN0b2dyYW0oaGlzdGZ1bmM9ImNvdW50IiwgeD1kZltjb2x1bW5OYW1lXSwgdmlzaWJsZT12aXNpYmxlKQogICAgICAgICAgICBmaWdzW2Yie2NvbHVtbk5hbWV9QD9AezF9Il0gPSBzdWJfZmlnCiAgICAgICAgaWYgdmlzaWJsZToKICAgICAgICAgICAgZmlyc3RfZmVhdHVyZV9uYW1lID0gY29sdW1uTmFtZQogICAgICAgIHZpc2libGUgPSBGYWxzZQoKICAgIGZpZyA9IGdvLkZpZ3VyZSgpCiAgICBmb3IgayBpbiBmaWdzLmtleXMoKToKICAgICAgICBmaWcuYWRkX3RyYWNlKGZpZ3Nba10pCgogICAgZmlnLnVwZGF0ZV9sYXlvdXQoCiAgICAgICAgdXBkYXRlbWVudXM9WwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiYnV0dG9ucyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6IGNvbHVtbl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kIjogInVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhcmdzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkuc3BsaXQoIkA/QCIpWzBdID09IGNvbHVtbl9uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gZmlncy5rZXlzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4YXhpcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJhbmdlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKGRmW2NvbHVtbl9uYW1lXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoZGZbY29sdW1uX25hbWVdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJ0aXRsZSI6IGYiPGk+PGI+SGlzdG9ncmFtIG9mIHtjb2x1bW5fbmFtZX08L2I+PC9pPiJ9LAogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgY29sdW1uX25hbWUgaW4gZGYuY29sdW1ucwogICAgICAgICAgICAgICAgICAgIGlmIGNvbHVtbl9uYW1lICE9IGxhYmVsX2NvbHVtbgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJkaXJlY3Rpb24iOiAiZG93biIsCiAgICAgICAgICAgICAgICAicGFkIjogeyJyIjogMTAsICJ0IjogMTB9LAogICAgICAgICAgICAgICAgInNob3dhY3RpdmUiOiBUcnVlLAogICAgICAgICAgICAgICAgIngiOiAwLjI1LAogICAgICAgICAgICAgICAgInhhbmNob3IiOiAibGVmdCIsCiAgICAgICAgICAgICAgICAieSI6IDEuMSwKICAgICAgICAgICAgICAgICJ5YW5jaG9yIjogInRvcCIsCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIGFubm90YXRpb25zPVsKICAgICAgICAgICAgZGljdCgKICAgICAgICAgICAgICAgIHRleHQ9IlNlbGVjdCBGZWF0dXJlIE5hbWUgIiwKICAgICAgICAgICAgICAgIHNob3dhcnJvdz1GYWxzZSwKICAgICAgICAgICAgICAgIHg9MCwKICAgICAgICAgICAgICAgIHk9MS4wNSwKICAgICAgICAgICAgICAgIHlyZWY9InBhcGVyIiwKICAgICAgICAgICAgICAgIHhyZWY9InBhcGVyIiwKICAgICAgICAgICAgICAgIGFsaWduPSJsZWZ0IiwKICAgICAgICAgICAgICAgIHhhbmNob3I9ImxlZnQiLAogICAgICAgICAgICAgICAgeWFuY2hvcj0idG9wIiwKICAgICAgICAgICAgICAgIGZvbnQ9ewogICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICJibHVlIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICkKICAgICAgICBdLAogICAgKQoKICAgIGZpZy51cGRhdGVfbGF5b3V0KAogICAgICAgIHdpZHRoPTYwMCwKICAgICAgICBoZWlnaHQ9NDAwLAogICAgICAgIGF1dG9zaXplPUZhbHNlLAogICAgICAgIG1hcmdpbj1kaWN0KHQ9MTAwLCBiPTAsIGw9MCwgcj0wKSwKICAgICAgICB0ZW1wbGF0ZT0icGxvdGx5X3doaXRlIiwKICAgICkKCiAgICBmaWcudXBkYXRlX2xheW91dCh0aXRsZV90ZXh0PWYiPGk+PGI+SGlzdG9ncmFtcyBvZiB7Zmlyc3RfZmVhdHVyZV9uYW1lfTwvYj48L2k+IikKICAgIGV4dHJhX2RhdGFbZiJoaXN0b2dyYW1zIl0gPSBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90bHlBcnRpZmFjdChrZXk9ZiJoaXN0b2dyYW1zIiwgZmlndXJlPWZpZyksCiAgICAgICAgbG9jYWxfcGF0aD1mIntwbG90c19kZXN0fS9oaXN0b2dyYW1zLmh0bWwiLAogICAgKQoKCmRlZiBfY3JlYXRlX2ZlYXR1cmVzXzJkX3NjYXR0ZXJfYXJ0aWZhY3RzKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBkZjogcGQuRGF0YUZyYW1lLAogICAgZXh0cmFfZGF0YTogZGljdCwKICAgIGxhYmVsX2NvbHVtbjogc3RyLAogICAgcGxvdHNfZGVzdDogc3RyLAogICAgcHJvYmxlbV90eXBlOiBzdHIsCik6CiAgICAiIiIKICAgIENyZWF0ZSBhbmQgbG9nIGEgc2NhdHRlci0yZCBhcnRpZmFjdCBmb3IgZWFjaCBjb3VwbGUgb2YgZmVhdHVyZXMKICAgICIiIgogICAgZmVhdHVyZXMgPSBbCiAgICAgICAgY29sdW1uTmFtZSBmb3IgKGNvbHVtbk5hbWUsIF8pIGluIGRmLml0ZXJpdGVtcygpIGlmIGNvbHVtbk5hbWUgIT0gbGFiZWxfY29sdW1uCiAgICBdCiAgICBtYXhfZmVhdHVyZV9sZW4gPSBmbG9hdChtYXgobGVuKGVsZW0pIGZvciBlbGVtIGluIGZlYXR1cmVzKSkKICAgIGlmIGxhYmVsX2NvbHVtbiBpcyBub3QgTm9uZToKICAgICAgICBsYWJlbHMgPSBzb3J0ZWQoZGZbbGFiZWxfY29sdW1uXS51bmlxdWUoKSkKICAgIGVsc2U6CiAgICAgICAgbGFiZWxzID0gW05vbmVdCiAgICBmaWcgPSBnby5GaWd1cmUoKQogICAgaWYgbGFiZWxfY29sdW1uIGlzIG5vdCBOb25lIGFuZCBwcm9ibGVtX3R5cGUgPT0gImNsYXNzaWZpY2F0aW9uIjoKICAgICAgICBmb3IgbCBpbiBsYWJlbHM6CiAgICAgICAgICAgIGZpZy5hZGRfdHJhY2UoCiAgICAgICAgICAgICAgICBnby5TY2F0dGVyKAogICAgICAgICAgICAgICAgICAgIHg9ZGYubG9jW2RmW2xhYmVsX2NvbHVtbl0gPT0gbF1bZmVhdHVyZXNbMF1dLAogICAgICAgICAgICAgICAgICAgIHk9ZGYubG9jW2RmW2xhYmVsX2NvbHVtbl0gPT0gbF1bZmVhdHVyZXNbMF1dLAogICAgICAgICAgICAgICAgICAgIG1vZGU9Im1hcmtlcnMiLAogICAgICAgICAgICAgICAgICAgIHZpc2libGU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICBzaG93bGVnZW5kPVRydWUsCiAgICAgICAgICAgICAgICAgICAgbmFtZT1zdHIobCksCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgIGVsaWYgbGFiZWxfY29sdW1uIGlzIE5vbmU6CiAgICAgICAgZmlnLmFkZF90cmFjZSgKICAgICAgICAgICAgZ28uU2NhdHRlcigKICAgICAgICAgICAgICAgIHg9ZGZbZmVhdHVyZXNbMF1dLAogICAgICAgICAgICAgICAgeT1kZltmZWF0dXJlc1swXV0sCiAgICAgICAgICAgICAgICBtb2RlPSJtYXJrZXJzIiwKICAgICAgICAgICAgICAgIHZpc2libGU9VHJ1ZSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgIGVsaWYgcHJvYmxlbV90eXBlID09ICJyZWdyZXNzaW9uIjoKICAgICAgICBmaWcuYWRkX3RyYWNlKAogICAgICAgICAgICBnby5TY2F0dGVyKAogICAgICAgICAgICAgICAgeD1kZltmZWF0dXJlc1swXV0sCiAgICAgICAgICAgICAgICB5PWRmW2ZlYXR1cmVzWzBdXSwKICAgICAgICAgICAgICAgIG1vZGU9Im1hcmtlcnMiLAogICAgICAgICAgICAgICAgbWFya2VyPWRpY3QoCiAgICAgICAgICAgICAgICAgICAgY29sb3I9ZGZbbGFiZWxfY29sdW1uXSwgY29sb3JzY2FsZT0iVmlyaWRpcyIsIHNob3dzY2FsZT1UcnVlCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgdmlzaWJsZT1UcnVlLAogICAgICAgICAgICApCiAgICAgICAgKQoKICAgIHhfYnV0dG9ucyA9IFtdCiAgICB5X2J1dHRvbnMgPSBbXQoKICAgIGZvciBuY29sIGluIGZlYXR1cmVzOgogICAgICAgIGlmIHByb2JsZW1fdHlwZSA9PSAiY2xhc3NpZmljYXRpb24iIGFuZCBsYWJlbF9jb2x1bW4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHhfYnV0dG9ucy5hcHBlbmQoCiAgICAgICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICAgICAgIG1ldGhvZD0idXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICBsYWJlbD1uY29sLAogICAgICAgICAgICAgICAgICAgIGFyZ3M9WwogICAgICAgICAgICAgICAgICAgICAgICB7IngiOiBbZGYubG9jW2RmW2xhYmVsX2NvbHVtbl0gPT0gbF1bbmNvbF0gZm9yIGwgaW4gbGFiZWxzXX0sCiAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFyYW5nZShsZW4obGFiZWxzKSkudG9saXN0KCksCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQoKICAgICAgICAgICAgeV9idXR0b25zLmFwcGVuZCgKICAgICAgICAgICAgICAgIGRpY3QoCiAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSJ1cGRhdGUiLAogICAgICAgICAgICAgICAgICAgIGxhYmVsPW5jb2wsCiAgICAgICAgICAgICAgICAgICAgYXJncz1bCiAgICAgICAgICAgICAgICAgICAgICAgIHsieSI6IFtkZi5sb2NbZGZbbGFiZWxfY29sdW1uXSA9PSBsXVtuY29sXSBmb3IgbCBpbiBsYWJlbHNdfSwKICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJhbmdlKGxlbihsYWJlbHMpKS50b2xpc3QoKSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgeF9idXR0b25zLmFwcGVuZCgKICAgICAgICAgICAgICAgIGRpY3QobWV0aG9kPSJ1cGRhdGUiLCBsYWJlbD1uY29sLCBhcmdzPVt7IngiOiBbZGZbbmNvbF1dfV0pCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIHlfYnV0dG9ucy5hcHBlbmQoCiAgICAgICAgICAgICAgICBkaWN0KG1ldGhvZD0idXBkYXRlIiwgbGFiZWw9bmNvbCwgYXJncz1beyJ5IjogW2RmW25jb2xdXX1dKQogICAgICAgICAgICApCgogICAgIyBQYXNzIGJ1dHRvbnMgdG8gdGhlIHVwZGF0ZW1lbnVzIGFyZ3VtZW50CiAgICBmaWcudXBkYXRlX2xheW91dCgKICAgICAgICB1cGRhdGVtZW51cz1bCiAgICAgICAgICAgIGRpY3QoYnV0dG9ucz14X2J1dHRvbnMsIGRpcmVjdGlvbj0idXAiLCB4PTAuNSwgeT0tMC4xKSwKICAgICAgICAgICAgZGljdChidXR0b25zPXlfYnV0dG9ucywgZGlyZWN0aW9uPSJkb3duIiwgeD0tbWF4X2ZlYXR1cmVfbGVuIC8gMTAwLCB5PTAuNSksCiAgICAgICAgXQogICAgKQoKICAgIGZpZy51cGRhdGVfbGF5b3V0KAogICAgICAgIHdpZHRoPTYwMCwKICAgICAgICBoZWlnaHQ9NDAwLAogICAgICAgIGF1dG9zaXplPUZhbHNlLAogICAgICAgIG1hcmdpbj1kaWN0KHQ9MTAwLCBiPTAsIGw9MCwgcj0wKSwKICAgICAgICB0ZW1wbGF0ZT0icGxvdGx5X3doaXRlIiwKICAgICkKCiAgICBmaWcudXBkYXRlX2xheW91dCh0aXRsZV90ZXh0PWYiPGk+PGI+U2NhdHRlci0yZDwvYj48L2k+IikKICAgIGV4dHJhX2RhdGFbZiJzY2F0dGVyLTJkIl0gPSBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90bHlBcnRpZmFjdChrZXk9ZiJzY2F0dGVyLTJkIiwgZmlndXJlPWZpZyksCiAgICAgICAgbG9jYWxfcGF0aD1mIntwbG90c19kZXN0fS9zY2F0dGVyLTJkLmh0bWwiLAogICAgKQoKCmRlZiBfY3JlYXRlX3Zpb2xpbl9hcnRpZmFjdCgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LCBkZjogcGQuRGF0YUZyYW1lLCBleHRyYV9kYXRhOiBkaWN0LCBwbG90c19kZXN0OiBzdHIKKToKICAgICIiIgogICAgQ3JlYXRlIGFuZCBsb2cgYSB2aW9saW4gYXJ0aWZhY3QKICAgICIiIgogICAgY29scyA9IDUKICAgIHJvd3MgPSAoZGYuc2hhcGVbMV0gLy8gY29scykgKyAxCiAgICBmaWcgPSBtYWtlX3N1YnBsb3RzKHJvd3M9cm93cywgY29scz1jb2xzKQoKICAgIHBsb3RfbnVtID0gMAoKICAgIGZvciAoY29sdW1uTmFtZSwgY29sdW1uRGF0YSkgaW4gZGYuaXRlcml0ZW1zKCk6CiAgICAgICAgdmlvbGluID0gZ28uVmlvbGluKAogICAgICAgICAgICB4PVtjb2x1bW5OYW1lXSAqIGNvbHVtbkRhdGEuc2hhcGVbMF0sCiAgICAgICAgICAgIHk9Y29sdW1uRGF0YSwKICAgICAgICAgICAgbmFtZT1jb2x1bW5OYW1lLAogICAgICAgICkKCiAgICAgICAgZmlnLmFkZF90cmFjZSgKICAgICAgICAgICAgdmlvbGluLAogICAgICAgICAgICByb3c9KHBsb3RfbnVtIC8vIGNvbHMpICsgMSwKICAgICAgICAgICAgY29sPShwbG90X251bSAlIGNvbHMpICsgMSwKICAgICAgICApCgogICAgICAgIHBsb3RfbnVtICs9IDEKCiAgICBmaWdbImxheW91dCJdLnVwZGF0ZSgKICAgICAgICBoZWlnaHQ9KHJvd3MgKyAxKSAqIDIwMCwKICAgICAgICB3aWR0aD0oY29scyArIDEpICogMjAwLAogICAgICAgIHRpdGxlPSI8aT48Yj5WaW9saW4gUGxvdHM8L2I+PC9pPiIsCiAgICApCgogICAgZmlnLnVwZGF0ZV9sYXlvdXQoc2hvd2xlZ2VuZD1GYWxzZSkKICAgIGV4dHJhX2RhdGFbInZpb2xpbiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgUGxvdGx5QXJ0aWZhY3Qoa2V5PSJ2aW9saW4iLCBmaWd1cmU9ZmlnKSwKICAgICAgICBsb2NhbF9wYXRoPWYie3Bsb3RzX2Rlc3R9L3Zpb2xpbi5odG1sIiwKICAgICkKCgpkZWYgX2NyZWF0ZV9pbWJhbGFuY2VfYXJ0aWZhY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIGRmOiBwZC5EYXRhRnJhbWUsCiAgICBleHRyYV9kYXRhOiBkaWN0LAogICAgbGFiZWxfY29sdW1uOiBzdHIsCiAgICBwbG90c19kZXN0OiBzdHIsCiAgICBwcm9ibGVtX3R5cGU6IHN0ciwKKToKICAgICIiIgogICAgQ3JlYXRlIGFuZCBsb2cgYW4gaW1iYWxhbmNlIGNsYXNzIGFydGlmYWN0IChjc3YgKyBwbG90KQogICAgIiIiCiAgICBpZiBsYWJlbF9jb2x1bW46CiAgICAgICAgaWYgcHJvYmxlbV90eXBlID09ICJjbGFzc2lmaWNhdGlvbiI6CiAgICAgICAgICAgIGxhYmVsc19jb3VudCA9IGRmW2xhYmVsX2NvbHVtbl0udmFsdWVfY291bnRzKCkuc29ydF9pbmRleCgpCiAgICAgICAgICAgIGRmX2xhYmVsc19jb3VudCA9IHBkLkRhdGFGcmFtZShsYWJlbHNfY291bnQpCiAgICAgICAgICAgIGRmX2xhYmVsc19jb3VudC5yZW5hbWUoY29sdW1ucz17bGFiZWxfY29sdW1uOiAiVG90YWwifSwgaW5wbGFjZT1UcnVlKQogICAgICAgICAgICBkZl9sYWJlbHNfY291bnRbbGFiZWxfY29sdW1uXSA9IGxhYmVsc19jb3VudC5pbmRleAogICAgICAgICAgICBkZl9sYWJlbHNfY291bnRbIndlaWdodHMiXSA9IGRmX2xhYmVsc19jb3VudFsiVG90YWwiXSAvIHN1bSgKICAgICAgICAgICAgICAgIGRmX2xhYmVsc19jb3VudFsiVG90YWwiXQogICAgICAgICAgICApCgogICAgICAgICAgICBmaWcgPSBweC5waWUoZGZfbGFiZWxzX2NvdW50LCBuYW1lcz1sYWJlbF9jb2x1bW4sIHZhbHVlcz0iVG90YWwiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZpZyA9IHB4Lmhpc3RvZ3JhbSgKICAgICAgICAgICAgICAgIGhpc3RmdW5jPSJjb3VudCIsCiAgICAgICAgICAgICAgICB4PWRmW2xhYmVsX2NvbHVtbl0sCiAgICAgICAgICAgICkKICAgICAgICAgICAgaGlzdCA9IG5wLmhpc3RvZ3JhbShkZltsYWJlbF9jb2x1bW5dKQogICAgICAgICAgICBkZl9sYWJlbHNfY291bnQgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgICAgICB7Im1pbl92YWwiOiBoaXN0WzFdLCAiY291bnQiOiBoaXN0WzBdLnRvbGlzdCgpICsgWzBdfQogICAgICAgICAgICApCiAgICAgICAgZmlnLnVwZGF0ZV9sYXlvdXQodGl0bGVfdGV4dD0iPGk+PGI+TGFiZWxzIEltYmFsYW5jZTwvYj48L2k+IikKICAgICAgICBleHRyYV9kYXRhWyJpbWJhbGFuY2UiXSA9IGNvbnRleHQubG9nX2FydGlmYWN0KAogICAgICAgICAgICBQbG90bHlBcnRpZmFjdChrZXk9ImltYmFsYW5jZSIsIGZpZ3VyZT1maWcpLAogICAgICAgICAgICBsb2NhbF9wYXRoPWYie3Bsb3RzX2Rlc3R9L2ltYmFsYW5jZS5odG1sIiwKICAgICAgICApCiAgICAgICAgZXh0cmFfZGF0YVsiaW1iYWxhbmNlLWNzdiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgICAgIFRhYmxlQXJ0aWZhY3QoImltYmFsYW5jZS13ZWlnaHRzLXZlYyIsIGRmPWRmX2xhYmVsc19jb3VudCksCiAgICAgICAgICAgIGxvY2FsX3BhdGg9ZiJ7cGxvdHNfZGVzdH0vaW1iYWxhbmNlLXdlaWdodHMtdmVjLmNzdiIsCiAgICAgICAgKQoKCmRlZiBfY3JlYXRlX2NvcnJfYXJ0aWZhY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIGRmOiBwZC5EYXRhRnJhbWUsCiAgICBleHRyYV9kYXRhOiBkaWN0LAogICAgbGFiZWxfY29sdW1uOiBzdHIsCiAgICBwbG90c19kZXN0OiBzdHIsCik6CiAgICAiIiIKICAgIENyZWF0ZSBhbmQgbG9nIGFuIGNvcnJlbGF0aW9uLW1hdHJpeCBhcnRpZmFjdCAoY3N2ICsgcGxvdCkKICAgICIiIgogICAgaWYgbGFiZWxfY29sdW1uIGlzIG5vdCBOb25lOgogICAgICAgIGRmID0gZGYuZHJvcChbbGFiZWxfY29sdW1uXSwgYXhpcz0xKQogICAgdGJsY29yciA9IGRmLmNvcnIoKQogICAgZXh0cmFfZGF0YVsiY29ycmVsYXRpb24tbWF0cml4LWNzdiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgVGFibGVBcnRpZmFjdCgiY29ycmVsYXRpb24tbWF0cml4LWNzdiIsIGRmPXRibGNvcnIsIHZpc2libGU9VHJ1ZSksCiAgICAgICAgbG9jYWxfcGF0aD1mIntwbG90c19kZXN0fS9jb3JyZWxhdGlvbi1tYXRyaXguY3N2IiwKICAgICkKCiAgICB6ID0gdGJsY29yci52YWx1ZXMudG9saXN0KCkKICAgIHpfdGV4dCA9IFtbIns6LjJmfSIuZm9ybWF0KHkpIGZvciB5IGluIHhdIGZvciB4IGluIHpdCiAgICBmaWcgPSBmZi5jcmVhdGVfYW5ub3RhdGVkX2hlYXRtYXAoCiAgICAgICAgeiwKICAgICAgICB4PWxpc3QodGJsY29yci5jb2x1bW5zKSwKICAgICAgICB5PWxpc3QodGJsY29yci5jb2x1bW5zKSwKICAgICAgICBhbm5vdGF0aW9uX3RleHQ9el90ZXh0LAogICAgICAgIGNvbG9yc2NhbGU9ImFnc3Vuc2V0IiwKICAgICkKICAgIGZpZ1sibGF5b3V0Il1bInlheGlzIl1bImF1dG9yYW5nZSJdID0gInJldmVyc2VkIiAgIyBsIC0+IHIKICAgIGZpZy51cGRhdGVfbGF5b3V0KHRpdGxlX3RleHQ9IjxpPjxiPkNvcnJlbGF0aW9uIG1hdHJpeDwvYj48L2k+IikKICAgIGZpZ1siZGF0YSJdWzBdWyJzaG93c2NhbGUiXSA9IFRydWUKCiAgICBleHRyYV9kYXRhWyJjb3JyZWxhdGlvbiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgUGxvdGx5QXJ0aWZhY3Qoa2V5PSJjb3JyZWxhdGlvbiIsIGZpZ3VyZT1maWcpLAogICAgICAgIGxvY2FsX3BhdGg9ZiJ7cGxvdHNfZGVzdH0vY29ycmVsYXRpb24uaHRtbCIsCiAgICApCg== - commands: [] - code_origin: https://github.com/davesh0812/functions.git#6c5f9ed5f39ccb1e0f478eee7b4aa10994dfd22b:/Users/davids/Projects/functions/describe/describe.py - origin_filename: /Users/davids/Projects/functions/describe/describe.py entry_points: analyze: - name: analyze - doc: 'The function will output the following artifacts per - - column within the data frame (based on data types) - - If the data has more than 500,000 sample we - - sample randomly 500,000 samples: - - - describe csv - - histograms - - scatter-2d - - violin chart - - correlation-matrix chart - - correlation-matrix csv - - imbalance pie chart - - imbalance-weights-vec csv' parameters: - name: context type: MLClientCtx doc: The function context - default: '' - name: name type: str doc: Key of dataset to database ("dataset" for default) @@ -86,15 +44,47 @@ spec: - name: dask_client doc: Dask client object default: null - outputs: - - default: '' + has_varargs: false lineno: 46 - description: describe and visualizes dataset stats - default_handler: analyze + outputs: + - type: None + name: analyze + has_kwargs: false + doc: 'The function will output the following artifacts per + + column within the data frame (based on data types) + + If the data has more than 500,000 sample we + + sample randomly 500,000 samples: + + + describe csv + + histograms + + scatter-2d + + violin chart + + correlation-matrix chart + + correlation-matrix csv + + imbalance pie chart + + imbalance-weights-vec csv' disable_auto_mount: false - env: [] - priority_class_name: '' - preemption_mode: prevent - affinity: null - tolerations: null -verbose: false + default_handler: analyze + description: describe and visualizes dataset stats + build: + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKIyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKaW1wb3J0IHdhcm5pbmdzCmZyb20gdHlwaW5nIGltcG9ydCBVbmlvbgoKaW1wb3J0IG1scnVuCmltcG9ydCBudW1weSBhcyBucAoKd2FybmluZ3Muc2ltcGxlZmlsdGVyKGFjdGlvbj0iaWdub3JlIiwgY2F0ZWdvcnk9RnV0dXJlV2FybmluZykKCmltcG9ydCBtbHJ1bi5mZWF0dXJlX3N0b3JlIGFzIGZzdG9yZQppbXBvcnQgcGFuZGFzIGFzIHBkCmltcG9ydCBwbG90bHkuZXhwcmVzcyBhcyBweAppbXBvcnQgcGxvdGx5LmZpZ3VyZV9mYWN0b3J5IGFzIGZmCmltcG9ydCBwbG90bHkuZ3JhcGhfb2JqZWN0cyBhcyBnbwpmcm9tIG1scnVuLmFydGlmYWN0cyBpbXBvcnQgKAogICAgQXJ0aWZhY3QsCiAgICBEYXRhc2V0QXJ0aWZhY3QsCiAgICBQbG90bHlBcnRpZmFjdCwKICAgIFRhYmxlQXJ0aWZhY3QsCiAgICB1cGRhdGVfZGF0YXNldF9tZXRhLAopCmZyb20gbWxydW4uZGF0YXN0b3JlIGltcG9ydCBEYXRhSXRlbQpmcm9tIG1scnVuLmV4ZWN1dGlvbiBpbXBvcnQgTUxDbGllbnRDdHgKZnJvbSBtbHJ1bi5mZWF0dXJlX3N0b3JlIGltcG9ydCBGZWF0dXJlU2V0CmZyb20gcGxvdGx5LnN1YnBsb3RzIGltcG9ydCBtYWtlX3N1YnBsb3RzCgpwZC5zZXRfb3B0aW9uKCJkaXNwbGF5LmZsb2F0X2Zvcm1hdCIsIGxhbWJkYSB4OiAiJS4yZiIgJSB4KQpNQVhfU0laRV9PRl9ERiA9IDUwMDAwMAoKCmRlZiBhbmFseXplKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBuYW1lOiBzdHIgPSAiZGF0YXNldCIsCiAgICB0YWJsZTogVW5pb25bRmVhdHVyZVNldCwgRGF0YUl0ZW1dID0gTm9uZSwKICAgIGxhYmVsX2NvbHVtbjogc3RyID0gTm9uZSwKICAgIHBsb3RzX2Rlc3Q6IHN0ciA9ICJwbG90cyIsCiAgICByYW5kb21fc3RhdGU6IGludCA9IDEsCiAgICBwcm9ibGVtX3R5cGU6IHN0ciA9ICJjbGFzc2lmaWNhdGlvbiIsCiAgICBkYXNrX2tleTogc3RyID0gImRhc2tfa2V5IiwKICAgIGRhc2tfZnVuY3Rpb246IHN0ciA9IE5vbmUsCiAgICBkYXNrX2NsaWVudD1Ob25lLAopIC0+IE5vbmU6CiAgICAiIiIKICAgIFRoZSBmdW5jdGlvbiB3aWxsIG91dHB1dCB0aGUgZm9sbG93aW5nIGFydGlmYWN0cyBwZXIKICAgIGNvbHVtbiB3aXRoaW4gdGhlIGRhdGEgZnJhbWUgKGJhc2VkIG9uIGRhdGEgdHlwZXMpCiAgICBJZiB0aGUgZGF0YSBoYXMgbW9yZSB0aGFuIDUwMCwwMDAgc2FtcGxlIHdlCiAgICBzYW1wbGUgcmFuZG9tbHkgNTAwLDAwMCBzYW1wbGVzOgoKICAgIGRlc2NyaWJlIGNzdgogICAgaGlzdG9ncmFtcwogICAgc2NhdHRlci0yZAogICAgdmlvbGluIGNoYXJ0CiAgICBjb3JyZWxhdGlvbi1tYXRyaXggY2hhcnQKICAgIGNvcnJlbGF0aW9uLW1hdHJpeCBjc3YKICAgIGltYmFsYW5jZSBwaWUgY2hhcnQKICAgIGltYmFsYW5jZS13ZWlnaHRzLXZlYyBjc3YKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBjb250ZXh0CiAgICA6cGFyYW0gbmFtZTogICAgICAgICAgICAgICAgICAgIEtleSBvZiBkYXRhc2V0IHRvIGRhdGFiYXNlICgiZGF0YXNldCIgZm9yIGRlZmF1bHQpCiAgICA6cGFyYW0gdGFibGU6ICAgICAgICAgICAgICAgICAgIE1MUnVuIGlucHV0IHBvaW50aW5nIHRvIHBhbmRhcyBkYXRhZnJhbWUgKGNzdi9wYXJxdWV0IGZpbGUgcGF0aCkgb3IgRmVhdHVyZVNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBwYXJhbQogICAgOnBhcmFtIGxhYmVsX2NvbHVtbjogICAgICAgICAgICBHcm91bmQgdHJ1dGggY29sdW1uIGxhYmVsCiAgICA6cGFyYW0gcGxvdHNfZGVzdDogICAgICAgICAgICAgIERlc3RpbmF0aW9uIGZvbGRlciBvZiBzdW1tYXJ5IHBsb3RzIChyZWxhdGl2ZSB0byBhcnRpZmFjdF9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInBsb3RzIiBmb3IgZGVmYXVsdCkKICAgIDpwYXJhbSByYW5kb21fc3RhdGU6ICAgICAgICAgICAgV2hlbiB0aGUgdGFibGUgaGFzIG1vcmUgdGhhbiA1MDAsMDAwIHNhbXBsZXMsIHdlIHNhbXBsZSByYW5kb21seSA1MDAsMDAwIHNhbXBsZXMKICAgIDpwYXJhbSBwcm9ibGVtX3R5cGUgICAgICAgICAgICAgVGhlIHR5cGUgb2YgdGhlIE1MIHByb2JsZW0gdGhlIGRhdGEgZmFjaW5nIC0gcmVncmVzc2lvbiwgY2xhc3NpZmljYXRpb24gb3IgTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3NpZmljYXRpb24gZm9yIGRlZmF1bHQpCiAgICA6cGFyYW0gZGFza19rZXk6ICAgICAgICAgICAgICAgIEtleSBvZiBkYXRhZnJhbWUgaW4gZGFzayBjbGllbnQgImRhdGFzZXRzIiBhdHRyaWJ1dGUKICAgIDpwYXJhbSBkYXNrX2Z1bmN0aW9uOiAgICAgICAgICAgRGFzayBmdW5jdGlvbiB1cmwgKGRiOi8vLi4pCiAgICA6cGFyYW0gZGFza19jbGllbnQ6ICAgICAgICAgICAgIERhc2sgY2xpZW50IG9iamVjdAogICAgIiIiCiAgICBkYXRhX2l0ZW0sIGZlYXR1cmVzZXQsIGNyZWF0LCB1cGRhdGUgPSBGYWxzZSwgRmFsc2UsIEZhbHNlLCBGYWxzZQogICAgZ2V0X2Zyb21fdGFibGUgPSBUcnVlCiAgICBpZiBkYXNrX2Z1bmN0aW9uIG9yIGRhc2tfY2xpZW50OgogICAgICAgIGRhdGFfaXRlbSwgY3JlYXQgPSBUcnVlLCBUcnVlCiAgICAgICAgaWYgZGFza19mdW5jdGlvbjoKICAgICAgICAgICAgY2xpZW50ID0gbWxydW4uaW1wb3J0X2Z1bmN0aW9uKGRhc2tfZnVuY3Rpb24pLmNsaWVudAogICAgICAgIGVsaWYgZGFza19jbGllbnQ6CiAgICAgICAgICAgIGNsaWVudCA9IGRhc2tfY2xpZW50CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGFzayBjbGllbnQgd2FzIG5vdCBwcm92aWRlZCIpCgogICAgICAgIGlmIGRhc2tfa2V5IGluIGNsaWVudC5kYXRhc2V0czoKICAgICAgICAgICAgZGYgPSBjbGllbnQuZ2V0X2RhdGFzZXQoZGFza19rZXkpCiAgICAgICAgICAgIGRhdGFfaXRlbSwgY3JlYXQsIGdldF9mcm9tX3RhYmxlID0gVHJ1ZSwgVHJ1ZSwgRmFsc2UKICAgICAgICBlbGlmIHRhYmxlOgogICAgICAgICAgICBnZXRfZnJvbV90YWJsZSA9IFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgZiJvbmx5IHRoZXNlIGRhdGFzZXRzIGFyZSBhdmFpbGFibGUge2NsaWVudC5kYXRhc2V0c30gaW4gY2xpZW50IHtjbGllbnR9IgogICAgICAgICAgICApCiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZGF0YXNldCBub3QgZm91bmQgb24gZGFzayBjbHVzdGVyIikKCiAgICBpZiBnZXRfZnJvbV90YWJsZToKICAgICAgICBpZiB0eXBlKHRhYmxlKSA9PSBEYXRhSXRlbToKICAgICAgICAgICAgaWYgdGFibGUubWV0YSBpcyBOb25lOgogICAgICAgICAgICAgICAgZGF0YV9pdGVtLCBjcmVhdCwgdXBkYXRlID0gVHJ1ZSwgVHJ1ZSwgRmFsc2UKICAgICAgICAgICAgZWxpZiB0YWJsZS5tZXRhLmtpbmQgPT0gImRhdGFzZXQiOgogICAgICAgICAgICAgICAgZGF0YV9pdGVtLCBjcmVhdCwgdXBkYXRlID0gVHJ1ZSwgRmFsc2UsIFRydWUKICAgICAgICAgICAgZWxpZiB0YWJsZS5tZXRhLmtpbmQgPT0gIkZlYXR1cmVWZWN0b3IiOgogICAgICAgICAgICAgICAgZGF0YV9pdGVtLCBjcmVhdCwgdXBkYXRlID0gVHJ1ZSwgRmFsc2UsIEZhbHNlCiAgICAgICAgICAgIGVsaWYgdGFibGUubWV0YS5raW5kID09ICJGZWF0dXJlU2V0IjoKICAgICAgICAgICAgICAgIGZlYXR1cmVzZXQsIGNyZWF0LCB1cGRhdGUgPSBUcnVlLCBGYWxzZSwgRmFsc2UKCiAgICAgICAgaWYgZGF0YV9pdGVtOgogICAgICAgICAgICBkZiA9IHRhYmxlLmFzX2RmKCkKICAgICAgICBlbGlmIGZlYXR1cmVzZXQ6CiAgICAgICAgICAgIHByb2plY3RfbmFtZSwgc2V0X25hbWUgPSAoCiAgICAgICAgICAgICAgICB0YWJsZS5fcGF0aC5zcGxpdCgiLyIpWzJdLAogICAgICAgICAgICAgICAgdGFibGUuX3BhdGguc3BsaXQoIi8iKVs0XSwKICAgICAgICAgICAgKQogICAgICAgICAgICBmZWF0dXJlX3NldCA9IGZzdG9yZS5nZXRfZmVhdHVyZV9zZXQoCiAgICAgICAgICAgICAgICBmInN0b3JlOi8vZmVhdHVyZS1zZXRzL3twcm9qZWN0X25hbWV9L3tzZXRfbmFtZX0iCiAgICAgICAgICAgICkKICAgICAgICAgICAgZGYgPSBmZWF0dXJlX3NldC50b19kYXRhZnJhbWUoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKGYiV3JvbmcgdGFibGUgdHlwZS4iKQogICAgICAgICAgICByZXR1cm4KCiAgICBpZiBkZi5zaXplID4gTUFYX1NJWkVfT0ZfREY6CiAgICAgICAgZGYgPSBkZi5zYW1wbGUobj1pbnQoTUFYX1NJWkVfT0ZfREYgLyBkZi5zaGFwZVsxXSksIHJhbmRvbV9zdGF0ZT1yYW5kb21fc3RhdGUpCiAgICBleHRyYV9kYXRhID0ge30KCiAgICBpZiBsYWJlbF9jb2x1bW4gbm90IGluIGRmLmNvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1uID0gTm9uZQoKICAgIGV4dHJhX2RhdGFbImRlc2NyaWJlIGNzdiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgVGFibGVBcnRpZmFjdCgiZGVzY3JpYmUtY3N2IiwgZGY9ZGYuZGVzY3JpYmUoKSksCiAgICAgICAgbG9jYWxfcGF0aD1mIntwbG90c19kZXN0fS9kZXNjcmliZS5jc3YiLAogICAgKQoKICAgIHRyeToKICAgICAgICBfY3JlYXRlX2hpc3RvZ3JhbV9tYXRfYXJ0aWZhY3QoCiAgICAgICAgICAgIGNvbnRleHQsIGRmLCBleHRyYV9kYXRhLCBsYWJlbF9jb2x1bW4sIHBsb3RzX2Rlc3QKICAgICAgICApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihmIkZhaWxlZCB0byBjcmVhdGUgaGlzdG9ncmFtIG1hdHJpeCBhcnRpZmFjdCBkdWUgdG86IHtlfSIpCiAgICB0cnk6CiAgICAgICAgX2NyZWF0ZV9mZWF0dXJlc19oaXN0b2dyYW1fYXJ0aWZhY3RzKAogICAgICAgICAgICBjb250ZXh0LCBkZiwgZXh0cmFfZGF0YSwgbGFiZWxfY29sdW1uLCBwbG90c19kZXN0LCBwcm9ibGVtX3R5cGUKICAgICAgICApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihmIkZhaWxlZCB0byBjcmVhdGUgcGFpcnBsb3QgaGlzdG9ncmFtcyBkdWUgdG86IHtlfSIpCiAgICB0cnk6CiAgICAgICAgX2NyZWF0ZV9mZWF0dXJlc18yZF9zY2F0dGVyX2FydGlmYWN0cygKICAgICAgICAgICAgY29udGV4dCwgZGYsIGV4dHJhX2RhdGEsIGxhYmVsX2NvbHVtbiwgcGxvdHNfZGVzdCwgcHJvYmxlbV90eXBlCiAgICAgICAgKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oZiJGYWlsZWQgdG8gY3JlYXRlIHBhaXJwbG90IDJkX3NjYXR0ZXIgZHVlIHRvOiB7ZX0iKQogICAgdHJ5OgogICAgICAgIF9jcmVhdGVfdmlvbGluX2FydGlmYWN0KGNvbnRleHQsIGRmLCBleHRyYV9kYXRhLCBwbG90c19kZXN0KQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oZiJGYWlsZWQgdG8gY3JlYXRlIHZpb2xpbiBkaXN0cmlidXRpb24gcGxvdHMgZHVlIHRvOiB7ZX0iKQogICAgdHJ5OgogICAgICAgIF9jcmVhdGVfaW1iYWxhbmNlX2FydGlmYWN0KAogICAgICAgICAgICBjb250ZXh0LCBkZiwgZXh0cmFfZGF0YSwgbGFiZWxfY29sdW1uLCBwbG90c19kZXN0LCBwcm9ibGVtX3R5cGUKICAgICAgICApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihmIkZhaWxlZCB0byBjcmVhdGUgY2xhc3MgaW1iYWxhbmNlIHBsb3QgZHVlIHRvOiB7ZX0iKQogICAgdHJ5OgogICAgICAgIF9jcmVhdGVfY29ycl9hcnRpZmFjdChjb250ZXh0LCBkZiwgZXh0cmFfZGF0YSwgbGFiZWxfY29sdW1uLCBwbG90c19kZXN0KQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oZiJGYWlsZWQgdG8gY3JlYXRlIGZlYXR1cmVzIGNvcnJlbGF0aW9uIHBsb3QgZHVlIHRvOiB7ZX0iKQoKICAgIGlmIG5vdCBkYXRhX2l0ZW06CiAgICAgICAgcmV0dXJuCgogICAgYXJ0aWZhY3QgPSB0YWJsZS5hcnRpZmFjdF91cmwKICAgIGlmIGNyZWF0OiAgIyBkYXRhc2V0IG5vdCBzdG9yZWQKICAgICAgICBhcnRpZmFjdCA9IERhdGFzZXRBcnRpZmFjdCgKICAgICAgICAgICAga2V5PSJkYXRhc2V0Iiwgc3RhdHM9VHJ1ZSwgZGY9ZGYsIGV4dHJhX2RhdGE9ZXh0cmFfZGF0YQogICAgICAgICkKICAgICAgICBhcnRpZmFjdCA9IGNvbnRleHQubG9nX2FydGlmYWN0KGFydGlmYWN0LCBkYl9rZXk9bmFtZSkKICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiVGhlIGRhdGEgc2V0IGlzIGxvZ2dlZCB0byB0aGUgcHJvamVjdCB1bmRlciB7bmFtZX0gbmFtZSIpCgogICAgaWYgdXBkYXRlOgogICAgICAgIHVwZGF0ZV9kYXRhc2V0X21ldGEoYXJ0aWZhY3QsIGV4dHJhX2RhdGE9ZXh0cmFfZGF0YSkKICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiVGhlIGRhdGEgc2V0IG5hbWVkIHtuYW1lfSBpcyB1cGRhdGVkIikKCiAgICAjIFRPRE8gOiAzLUQgcGxvdCBvbiBvbiBzZWxlY3RlZCBmZWF0dXJlcy4KICAgICMgVE9ETyA6IFJlaW50ZWdyYXRpb24gcGxvdCBvbiBvbiBzZWxlY3RlZCBmZWF0dXJlcy4KICAgICMgVE9ETyA6IFBDQSBwbG90ICh3aXRoIG9wdGlvbnMpCgoKZGVmIF9jcmVhdGVfaGlzdG9ncmFtX21hdF9hcnRpZmFjdCgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGY6IHBkLkRhdGFGcmFtZSwKICAgIGV4dHJhX2RhdGE6IGRpY3QsCiAgICBsYWJlbF9jb2x1bW46IHN0ciwKICAgIHBsb3RzX2Rlc3Q6IHN0ciwKKToKICAgICIiIgogICAgQ3JlYXRlIGFuZCBsb2cgYSBoaXN0b2dyYW0gbWF0cml4IGFydGlmYWN0CiAgICAiIiIKICAgIGNvbnRleHQubG9nX2FydGlmYWN0KAogICAgICAgIGl0ZW09QXJ0aWZhY3QoCiAgICAgICAgICAgIGtleT0iaGlzdCIsCiAgICAgICAgICAgIGJvZHk9YiI8Yj4gRGVwcmVjYXRlZCwgc2VlIHRoZSBhcnRpZmFjdHMgc2NhdHRlci0yZCAiCiAgICAgICAgICAgIGIiYW5kIGhpc3RvZ3JhbXMgaW5zdGVhZDxiPiIsCiAgICAgICAgKSwKICAgICAgICBsb2NhbF9wYXRoPWYie3Bsb3RzX2Rlc3R9L2hpc3QuaHRtbCIsCiAgICApCgoKZGVmIF9jcmVhdGVfZmVhdHVyZXNfaGlzdG9ncmFtX2FydGlmYWN0cygKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGY6IHBkLkRhdGFGcmFtZSwKICAgIGV4dHJhX2RhdGE6IGRpY3QsCiAgICBsYWJlbF9jb2x1bW46IHN0ciwKICAgIHBsb3RzX2Rlc3Q6IHN0ciwKICAgIHByb2JsZW1fdHlwZTogc3RyLAopOgogICAgIiIiCiAgICBDcmVhdGUgYW5kIGxvZyBhIGhpc3RvZ3JhbSBhcnRpZmFjdCBmb3IgZWFjaCBmZWF0dXJlCiAgICAiIiIKCiAgICBmaWdzID0gZGljdCgpCiAgICBmaXJzdF9mZWF0dXJlX25hbWUgPSAiIgogICAgaWYgbGFiZWxfY29sdW1uIGlzIG5vdCBOb25lIGFuZCBwcm9ibGVtX3R5cGUgPT0gImNsYXNzaWZpY2F0aW9uIjoKICAgICAgICBhbGxfbGFiZWxzID0gZGZbbGFiZWxfY29sdW1uXS51bmlxdWUoKQogICAgdmlzaWJsZSA9IFRydWUKICAgIGZvciBjb2x1bW5fbmFtZSBpbiBkZi5jb2x1bW5zOgogICAgICAgIGlmIGNvbHVtbl9uYW1lID09IGxhYmVsX2NvbHVtbjoKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgaWYgbGFiZWxfY29sdW1uIGlzIG5vdCBOb25lIGFuZCBwcm9ibGVtX3R5cGUgPT0gImNsYXNzaWZpY2F0aW9uIjoKICAgICAgICAgICAgZm9yIGxhYmVsIGluIGFsbF9sYWJlbHM6CiAgICAgICAgICAgICAgICBzdWJfZmlnID0gZ28uSGlzdG9ncmFtKAogICAgICAgICAgICAgICAgICAgIGhpc3RmdW5jPSJjb3VudCIsCiAgICAgICAgICAgICAgICAgICAgeD1kZi5sb2NbZGZbbGFiZWxfY29sdW1uXSA9PSBsYWJlbF1bY29sdW1uX25hbWVdLAogICAgICAgICAgICAgICAgICAgIG5hbWU9c3RyKGxhYmVsKSwKICAgICAgICAgICAgICAgICAgICB2aXNpYmxlPXZpc2libGUsCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBmaWdzW2Yie2NvbHVtbl9uYW1lfUA/QHtsYWJlbH0iXSA9IHN1Yl9maWcKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdWJfZmlnID0gZ28uSGlzdG9ncmFtKGhpc3RmdW5jPSJjb3VudCIsIHg9ZGZbY29sdW1uX25hbWVdLCB2aXNpYmxlPXZpc2libGUpCiAgICAgICAgICAgIGZpZ3NbZiJ7Y29sdW1uX25hbWV9QD9AezF9Il0gPSBzdWJfZmlnCiAgICAgICAgaWYgdmlzaWJsZToKICAgICAgICAgICAgZmlyc3RfZmVhdHVyZV9uYW1lID0gY29sdW1uX25hbWUKICAgICAgICB2aXNpYmxlID0gRmFsc2UKCiAgICBmaWcgPSBnby5GaWd1cmUoKQogICAgZm9yIGsgaW4gZmlncy5rZXlzKCk6CiAgICAgICAgZmlnLmFkZF90cmFjZShmaWdzW2tdKQoKICAgIGZpZy51cGRhdGVfbGF5b3V0KAogICAgICAgIHVwZGF0ZW1lbnVzPVsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImJ1dHRvbnMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiBjb2x1bW5fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCI6ICJ1cGRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAiYXJncyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LnNwbGl0KCJAP0AiKVswXSA9PSBjb2x1bW5fbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5IGluIGZpZ3Mua2V5cygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieGF4aXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYW5nZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbihkZltjb2x1bW5fbmFtZV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4KGRmW2NvbHVtbl9uYW1lXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsidGl0bGUiOiBmIjxpPjxiPkhpc3RvZ3JhbSBvZiB7Y29sdW1uX25hbWV9PC9iPjwvaT4ifSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yIGNvbHVtbl9uYW1lIGluIGRmLmNvbHVtbnMKICAgICAgICAgICAgICAgICAgICBpZiBjb2x1bW5fbmFtZSAhPSBsYWJlbF9jb2x1bW4KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAiZGlyZWN0aW9uIjogImRvd24iLAogICAgICAgICAgICAgICAgInBhZCI6IHsiciI6IDEwLCAidCI6IDEwfSwKICAgICAgICAgICAgICAgICJzaG93YWN0aXZlIjogVHJ1ZSwKICAgICAgICAgICAgICAgICJ4IjogMC4yNSwKICAgICAgICAgICAgICAgICJ4YW5jaG9yIjogImxlZnQiLAogICAgICAgICAgICAgICAgInkiOiAxLjEsCiAgICAgICAgICAgICAgICAieWFuY2hvciI6ICJ0b3AiLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBhbm5vdGF0aW9ucz1bCiAgICAgICAgICAgIGRpY3QoCiAgICAgICAgICAgICAgICB0ZXh0PSJTZWxlY3QgRmVhdHVyZSBOYW1lICIsCiAgICAgICAgICAgICAgICBzaG93YXJyb3c9RmFsc2UsCiAgICAgICAgICAgICAgICB4PTAsCiAgICAgICAgICAgICAgICB5PTEuMDUsCiAgICAgICAgICAgICAgICB5cmVmPSJwYXBlciIsCiAgICAgICAgICAgICAgICB4cmVmPSJwYXBlciIsCiAgICAgICAgICAgICAgICBhbGlnbj0ibGVmdCIsCiAgICAgICAgICAgICAgICB4YW5jaG9yPSJsZWZ0IiwKICAgICAgICAgICAgICAgIHlhbmNob3I9InRvcCIsCiAgICAgICAgICAgICAgICBmb250PXsKICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiYmx1ZSIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApCiAgICAgICAgXSwKICAgICkKCiAgICBmaWcudXBkYXRlX2xheW91dCgKICAgICAgICB3aWR0aD02MDAsCiAgICAgICAgaGVpZ2h0PTQwMCwKICAgICAgICBhdXRvc2l6ZT1GYWxzZSwKICAgICAgICBtYXJnaW49ZGljdCh0PTEwMCwgYj0wLCBsPTAsIHI9MCksCiAgICAgICAgdGVtcGxhdGU9InBsb3RseV93aGl0ZSIsCiAgICApCgogICAgZmlnLnVwZGF0ZV9sYXlvdXQodGl0bGVfdGV4dD1mIjxpPjxiPkhpc3RvZ3JhbXMgb2Yge2ZpcnN0X2ZlYXR1cmVfbmFtZX08L2I+PC9pPiIpCiAgICBleHRyYV9kYXRhW2YiaGlzdG9ncmFtcyJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgUGxvdGx5QXJ0aWZhY3Qoa2V5PWYiaGlzdG9ncmFtcyIsIGZpZ3VyZT1maWcpLAogICAgICAgIGxvY2FsX3BhdGg9ZiJ7cGxvdHNfZGVzdH0vaGlzdG9ncmFtcy5odG1sIiwKICAgICkKCgpkZWYgX2NyZWF0ZV9mZWF0dXJlc18yZF9zY2F0dGVyX2FydGlmYWN0cygKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGY6IHBkLkRhdGFGcmFtZSwKICAgIGV4dHJhX2RhdGE6IGRpY3QsCiAgICBsYWJlbF9jb2x1bW46IHN0ciwKICAgIHBsb3RzX2Rlc3Q6IHN0ciwKICAgIHByb2JsZW1fdHlwZTogc3RyLAopOgogICAgIiIiCiAgICBDcmVhdGUgYW5kIGxvZyBhIHNjYXR0ZXItMmQgYXJ0aWZhY3QgZm9yIGVhY2ggY291cGxlIG9mIGZlYXR1cmVzCiAgICAiIiIKICAgIGZlYXR1cmVzID0gWwogICAgICAgIGNvbHVtbl9uYW1lIGZvciBjb2x1bW5fbmFtZSBpbiBkZi5jb2x1bW5zIGlmIGNvbHVtbl9uYW1lICE9IGxhYmVsX2NvbHVtbgogICAgXQogICAgbWF4X2ZlYXR1cmVfbGVuID0gZmxvYXQobWF4KGxlbihlbGVtKSBmb3IgZWxlbSBpbiBmZWF0dXJlcykpCiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgbm90IE5vbmU6CiAgICAgICAgbGFiZWxzID0gc29ydGVkKGRmW2xhYmVsX2NvbHVtbl0udW5pcXVlKCkpCiAgICBlbHNlOgogICAgICAgIGxhYmVscyA9IFtOb25lXQogICAgZmlnID0gZ28uRmlndXJlKCkKICAgIGlmIGxhYmVsX2NvbHVtbiBpcyBub3QgTm9uZSBhbmQgcHJvYmxlbV90eXBlID09ICJjbGFzc2lmaWNhdGlvbiI6CiAgICAgICAgZm9yIGwgaW4gbGFiZWxzOgogICAgICAgICAgICBmaWcuYWRkX3RyYWNlKAogICAgICAgICAgICAgICAgZ28uU2NhdHRlcigKICAgICAgICAgICAgICAgICAgICB4PWRmLmxvY1tkZltsYWJlbF9jb2x1bW5dID09IGxdW2ZlYXR1cmVzWzBdXSwKICAgICAgICAgICAgICAgICAgICB5PWRmLmxvY1tkZltsYWJlbF9jb2x1bW5dID09IGxdW2ZlYXR1cmVzWzBdXSwKICAgICAgICAgICAgICAgICAgICBtb2RlPSJtYXJrZXJzIiwKICAgICAgICAgICAgICAgICAgICB2aXNpYmxlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgc2hvd2xlZ2VuZD1UcnVlLAogICAgICAgICAgICAgICAgICAgIG5hbWU9c3RyKGwpLAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICBlbGlmIGxhYmVsX2NvbHVtbiBpcyBOb25lOgogICAgICAgIGZpZy5hZGRfdHJhY2UoCiAgICAgICAgICAgIGdvLlNjYXR0ZXIoCiAgICAgICAgICAgICAgICB4PWRmW2ZlYXR1cmVzWzBdXSwKICAgICAgICAgICAgICAgIHk9ZGZbZmVhdHVyZXNbMF1dLAogICAgICAgICAgICAgICAgbW9kZT0ibWFya2VycyIsCiAgICAgICAgICAgICAgICB2aXNpYmxlPVRydWUsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICBlbGlmIHByb2JsZW1fdHlwZSA9PSAicmVncmVzc2lvbiI6CiAgICAgICAgZmlnLmFkZF90cmFjZSgKICAgICAgICAgICAgZ28uU2NhdHRlcigKICAgICAgICAgICAgICAgIHg9ZGZbZmVhdHVyZXNbMF1dLAogICAgICAgICAgICAgICAgeT1kZltmZWF0dXJlc1swXV0sCiAgICAgICAgICAgICAgICBtb2RlPSJtYXJrZXJzIiwKICAgICAgICAgICAgICAgIG1hcmtlcj1kaWN0KAogICAgICAgICAgICAgICAgICAgIGNvbG9yPWRmW2xhYmVsX2NvbHVtbl0sIGNvbG9yc2NhbGU9IlZpcmlkaXMiLCBzaG93c2NhbGU9VHJ1ZQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIHZpc2libGU9VHJ1ZSwKICAgICAgICAgICAgKQogICAgICAgICkKCiAgICB4X2J1dHRvbnMgPSBbXQogICAgeV9idXR0b25zID0gW10KCiAgICBmb3IgbmNvbCBpbiBmZWF0dXJlczoKICAgICAgICBpZiBwcm9ibGVtX3R5cGUgPT0gImNsYXNzaWZpY2F0aW9uIiBhbmQgbGFiZWxfY29sdW1uIGlzIG5vdCBOb25lOgogICAgICAgICAgICB4X2J1dHRvbnMuYXBwZW5kKAogICAgICAgICAgICAgICAgZGljdCgKICAgICAgICAgICAgICAgICAgICBtZXRob2Q9InVwZGF0ZSIsCiAgICAgICAgICAgICAgICAgICAgbGFiZWw9bmNvbCwKICAgICAgICAgICAgICAgICAgICBhcmdzPVsKICAgICAgICAgICAgICAgICAgICAgICAgeyJ4IjogW2RmLmxvY1tkZltsYWJlbF9jb2x1bW5dID09IGxdW25jb2xdIGZvciBsIGluIGxhYmVsc119LAogICAgICAgICAgICAgICAgICAgICAgICBucC5hcmFuZ2UobGVuKGxhYmVscykpLnRvbGlzdCgpLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIHlfYnV0dG9ucy5hcHBlbmQoCiAgICAgICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICAgICAgIG1ldGhvZD0idXBkYXRlIiwKICAgICAgICAgICAgICAgICAgICBsYWJlbD1uY29sLAogICAgICAgICAgICAgICAgICAgIGFyZ3M9WwogICAgICAgICAgICAgICAgICAgICAgICB7InkiOiBbZGYubG9jW2RmW2xhYmVsX2NvbHVtbl0gPT0gbF1bbmNvbF0gZm9yIGwgaW4gbGFiZWxzXX0sCiAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFyYW5nZShsZW4obGFiZWxzKSkudG9saXN0KCksCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHhfYnV0dG9ucy5hcHBlbmQoCiAgICAgICAgICAgICAgICBkaWN0KG1ldGhvZD0idXBkYXRlIiwgbGFiZWw9bmNvbCwgYXJncz1beyJ4IjogW2RmW25jb2xdXX1dKQogICAgICAgICAgICApCgogICAgICAgICAgICB5X2J1dHRvbnMuYXBwZW5kKAogICAgICAgICAgICAgICAgZGljdChtZXRob2Q9InVwZGF0ZSIsIGxhYmVsPW5jb2wsIGFyZ3M9W3sieSI6IFtkZltuY29sXV19XSkKICAgICAgICAgICAgKQoKICAgICMgUGFzcyBidXR0b25zIHRvIHRoZSB1cGRhdGVtZW51cyBhcmd1bWVudAogICAgZmlnLnVwZGF0ZV9sYXlvdXQoCiAgICAgICAgdXBkYXRlbWVudXM9WwogICAgICAgICAgICBkaWN0KGJ1dHRvbnM9eF9idXR0b25zLCBkaXJlY3Rpb249InVwIiwgeD0wLjUsIHk9LTAuMSksCiAgICAgICAgICAgIGRpY3QoYnV0dG9ucz15X2J1dHRvbnMsIGRpcmVjdGlvbj0iZG93biIsIHg9LW1heF9mZWF0dXJlX2xlbiAvIDEwMCwgeT0wLjUpLAogICAgICAgIF0KICAgICkKCiAgICBmaWcudXBkYXRlX2xheW91dCgKICAgICAgICB3aWR0aD02MDAsCiAgICAgICAgaGVpZ2h0PTQwMCwKICAgICAgICBhdXRvc2l6ZT1GYWxzZSwKICAgICAgICBtYXJnaW49ZGljdCh0PTEwMCwgYj0wLCBsPTAsIHI9MCksCiAgICAgICAgdGVtcGxhdGU9InBsb3RseV93aGl0ZSIsCiAgICApCgogICAgZmlnLnVwZGF0ZV9sYXlvdXQodGl0bGVfdGV4dD1mIjxpPjxiPlNjYXR0ZXItMmQ8L2I+PC9pPiIpCiAgICBleHRyYV9kYXRhW2Yic2NhdHRlci0yZCJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgUGxvdGx5QXJ0aWZhY3Qoa2V5PWYic2NhdHRlci0yZCIsIGZpZ3VyZT1maWcpLAogICAgICAgIGxvY2FsX3BhdGg9ZiJ7cGxvdHNfZGVzdH0vc2NhdHRlci0yZC5odG1sIiwKICAgICkKCgpkZWYgX2NyZWF0ZV92aW9saW5fYXJ0aWZhY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwgZGY6IHBkLkRhdGFGcmFtZSwgZXh0cmFfZGF0YTogZGljdCwgcGxvdHNfZGVzdDogc3RyCik6CiAgICAiIiIKICAgIENyZWF0ZSBhbmQgbG9nIGEgdmlvbGluIGFydGlmYWN0CiAgICAiIiIKICAgIGNvbHMgPSA1CiAgICByb3dzID0gKGRmLnNoYXBlWzFdIC8vIGNvbHMpICsgMQogICAgZmlnID0gbWFrZV9zdWJwbG90cyhyb3dzPXJvd3MsIGNvbHM9Y29scykKCiAgICBwbG90X251bSA9IDAKCiAgICBmb3IgY29sdW1uX25hbWUgaW4gZGYuY29sdW1uczoKICAgICAgICBjb2x1bW5fZGF0YSA9IGRmW2NvbHVtbl9uYW1lXQogICAgICAgIHZpb2xpbiA9IGdvLlZpb2xpbigKICAgICAgICAgICAgeD1bY29sdW1uX25hbWVdICogY29sdW1uX2RhdGEuc2hhcGVbMF0sCiAgICAgICAgICAgIHk9Y29sdW1uX2RhdGEsCiAgICAgICAgICAgIG5hbWU9Y29sdW1uX25hbWUsCiAgICAgICAgKQoKICAgICAgICBmaWcuYWRkX3RyYWNlKAogICAgICAgICAgICB2aW9saW4sCiAgICAgICAgICAgIHJvdz0ocGxvdF9udW0gLy8gY29scykgKyAxLAogICAgICAgICAgICBjb2w9KHBsb3RfbnVtICUgY29scykgKyAxLAogICAgICAgICkKCiAgICAgICAgcGxvdF9udW0gKz0gMQoKICAgIGZpZ1sibGF5b3V0Il0udXBkYXRlKAogICAgICAgIGhlaWdodD0ocm93cyArIDEpICogMjAwLAogICAgICAgIHdpZHRoPShjb2xzICsgMSkgKiAyMDAsCiAgICAgICAgdGl0bGU9IjxpPjxiPlZpb2xpbiBQbG90czwvYj48L2k+IiwKICAgICkKCiAgICBmaWcudXBkYXRlX2xheW91dChzaG93bGVnZW5kPUZhbHNlKQogICAgZXh0cmFfZGF0YVsidmlvbGluIl0gPSBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90bHlBcnRpZmFjdChrZXk9InZpb2xpbiIsIGZpZ3VyZT1maWcpLAogICAgICAgIGxvY2FsX3BhdGg9ZiJ7cGxvdHNfZGVzdH0vdmlvbGluLmh0bWwiLAogICAgKQoKCmRlZiBfY3JlYXRlX2ltYmFsYW5jZV9hcnRpZmFjdCgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGY6IHBkLkRhdGFGcmFtZSwKICAgIGV4dHJhX2RhdGE6IGRpY3QsCiAgICBsYWJlbF9jb2x1bW46IHN0ciwKICAgIHBsb3RzX2Rlc3Q6IHN0ciwKICAgIHByb2JsZW1fdHlwZTogc3RyLAopOgogICAgIiIiCiAgICBDcmVhdGUgYW5kIGxvZyBhbiBpbWJhbGFuY2UgY2xhc3MgYXJ0aWZhY3QgKGNzdiArIHBsb3QpCiAgICAiIiIKICAgIGlmIGxhYmVsX2NvbHVtbjoKICAgICAgICBpZiBwcm9ibGVtX3R5cGUgPT0gImNsYXNzaWZpY2F0aW9uIjoKICAgICAgICAgICAgdmFsdWVzX2NvbHVtbiA9ICJjb3VudCIKICAgICAgICAgICAgbGFiZWxzX2NvdW50ID0gZGZbbGFiZWxfY29sdW1uXS52YWx1ZV9jb3VudHMoKS5zb3J0X2luZGV4KCkKICAgICAgICAgICAgZGZfbGFiZWxzX2NvdW50ID0gcGQuRGF0YUZyYW1lKGxhYmVsc19jb3VudCkKICAgICAgICAgICAgZGZfbGFiZWxzX2NvdW50W2xhYmVsX2NvbHVtbl0gPSBsYWJlbHNfY291bnQuaW5kZXgKICAgICAgICAgICAgZGZfbGFiZWxzX2NvdW50LnJlbmFtZShjb2x1bW5zPXsiIjogdmFsdWVzX2NvbHVtbn0sIGlucGxhY2U9VHJ1ZSkKICAgICAgICAgICAgZGZfbGFiZWxzX2NvdW50W3ZhbHVlc19jb2x1bW5dID0gZGZfbGFiZWxzX2NvdW50W3ZhbHVlc19jb2x1bW5dIC8gc3VtKAogICAgICAgICAgICAgICAgZGZfbGFiZWxzX2NvdW50W3ZhbHVlc19jb2x1bW5dCiAgICAgICAgICAgICkKICAgICAgICAgICAgZmlnID0gcHgucGllKGRmX2xhYmVsc19jb3VudCwgbmFtZXM9bGFiZWxfY29sdW1uLCB2YWx1ZXM9dmFsdWVzX2NvbHVtbikKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaWcgPSBweC5oaXN0b2dyYW0oCiAgICAgICAgICAgICAgICBoaXN0ZnVuYz0iY291bnQiLAogICAgICAgICAgICAgICAgeD1kZltsYWJlbF9jb2x1bW5dLAogICAgICAgICAgICApCiAgICAgICAgICAgIGhpc3QgPSBucC5oaXN0b2dyYW0oZGZbbGFiZWxfY29sdW1uXSkKICAgICAgICAgICAgZGZfbGFiZWxzX2NvdW50ID0gcGQuRGF0YUZyYW1lKAogICAgICAgICAgICAgICAgeyJtaW5fdmFsIjogaGlzdFsxXSwgImNvdW50IjogaGlzdFswXS50b2xpc3QoKSArIFswXX0KICAgICAgICAgICAgKQogICAgICAgIGZpZy51cGRhdGVfbGF5b3V0KHRpdGxlX3RleHQ9IjxpPjxiPkxhYmVscyBJbWJhbGFuY2U8L2I+PC9pPiIpCiAgICAgICAgZXh0cmFfZGF0YVsiaW1iYWxhbmNlIl0gPSBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICAgICAgUGxvdGx5QXJ0aWZhY3Qoa2V5PSJpbWJhbGFuY2UiLCBmaWd1cmU9ZmlnKSwKICAgICAgICAgICAgbG9jYWxfcGF0aD1mIntwbG90c19kZXN0fS9pbWJhbGFuY2UuaHRtbCIsCiAgICAgICAgKQogICAgICAgIGV4dHJhX2RhdGFbImltYmFsYW5jZS1jc3YiXSA9IGNvbnRleHQubG9nX2FydGlmYWN0KAogICAgICAgICAgICBUYWJsZUFydGlmYWN0KCJpbWJhbGFuY2Utd2VpZ2h0cy12ZWMiLCBkZj1kZl9sYWJlbHNfY291bnQpLAogICAgICAgICAgICBsb2NhbF9wYXRoPWYie3Bsb3RzX2Rlc3R9L2ltYmFsYW5jZS13ZWlnaHRzLXZlYy5jc3YiLAogICAgICAgICkKCgpkZWYgX2NyZWF0ZV9jb3JyX2FydGlmYWN0KAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBkZjogcGQuRGF0YUZyYW1lLAogICAgZXh0cmFfZGF0YTogZGljdCwKICAgIGxhYmVsX2NvbHVtbjogc3RyLAogICAgcGxvdHNfZGVzdDogc3RyLAopOgogICAgIiIiCiAgICBDcmVhdGUgYW5kIGxvZyBhbiBjb3JyZWxhdGlvbi1tYXRyaXggYXJ0aWZhY3QgKGNzdiArIHBsb3QpCiAgICAiIiIKICAgIGlmIGxhYmVsX2NvbHVtbiBpcyBub3QgTm9uZToKICAgICAgICBkZiA9IGRmLmRyb3AoW2xhYmVsX2NvbHVtbl0sIGF4aXM9MSkKICAgIHRibGNvcnIgPSBkZi5jb3JyKG51bWVyaWNfb25seT1UcnVlKQogICAgZXh0cmFfZGF0YVsiY29ycmVsYXRpb24tbWF0cml4LWNzdiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgVGFibGVBcnRpZmFjdCgiY29ycmVsYXRpb24tbWF0cml4LWNzdiIsIGRmPXRibGNvcnIsIHZpc2libGU9VHJ1ZSksCiAgICAgICAgbG9jYWxfcGF0aD1mIntwbG90c19kZXN0fS9jb3JyZWxhdGlvbi1tYXRyaXguY3N2IiwKICAgICkKCiAgICB6ID0gdGJsY29yci52YWx1ZXMudG9saXN0KCkKICAgIHpfdGV4dCA9IFtbIns6LjJmfSIuZm9ybWF0KHkpIGZvciB5IGluIHhdIGZvciB4IGluIHpdCiAgICBmaWcgPSBmZi5jcmVhdGVfYW5ub3RhdGVkX2hlYXRtYXAoCiAgICAgICAgeiwKICAgICAgICB4PWxpc3QodGJsY29yci5jb2x1bW5zKSwKICAgICAgICB5PWxpc3QodGJsY29yci5jb2x1bW5zKSwKICAgICAgICBhbm5vdGF0aW9uX3RleHQ9el90ZXh0LAogICAgICAgIGNvbG9yc2NhbGU9ImFnc3Vuc2V0IiwKICAgICkKICAgIGZpZ1sibGF5b3V0Il1bInlheGlzIl1bImF1dG9yYW5nZSJdID0gInJldmVyc2VkIiAgIyBsIC0+IHIKICAgIGZpZy51cGRhdGVfbGF5b3V0KHRpdGxlX3RleHQ9IjxpPjxiPkNvcnJlbGF0aW9uIG1hdHJpeDwvYj48L2k+IikKICAgIGZpZ1siZGF0YSJdWzBdWyJzaG93c2NhbGUiXSA9IFRydWUKCiAgICBleHRyYV9kYXRhWyJjb3JyZWxhdGlvbiJdID0gY29udGV4dC5sb2dfYXJ0aWZhY3QoCiAgICAgICAgUGxvdGx5QXJ0aWZhY3Qoa2V5PSJjb3JyZWxhdGlvbiIsIGZpZ3VyZT1maWcpLAogICAgICAgIGxvY2FsX3BhdGg9ZiJ7cGxvdHNfZGVzdH0vY29ycmVsYXRpb24uaHRtbCIsCiAgICApCg== + origin_filename: '' + code_origin: '' + image: mlrun/mlrun + command: '' +metadata: + tag: '' + name: describe + categories: + - data-analysis diff --git a/describe/item.yaml b/describe/item.yaml index 4703771b7..47f36787f 100644 --- a/describe/item.yaml +++ b/describe/item.yaml @@ -11,7 +11,7 @@ labels: author: Davids maintainers: [] marketplaceType: '' -mlrunVersion: 1.4.1 +mlrunVersion: 1.6.0 name: describe platformVersion: 3.5.3 spec: @@ -21,4 +21,4 @@ spec: kind: job requirements: [] url: '' -version: 1.2.0 +version: 1.3.0 diff --git a/describe/requirements.txt b/describe/requirements.txt index 8dbc3e68b..a96b6ff1b 100644 --- a/describe/requirements.txt +++ b/describe/requirements.txt @@ -1,6 +1,5 @@ scikit-learn~=1.0.2 plotly~=5.16.1 pytest~=7.0.1 -pandas~=1.3.5 matplotlib~=3.5.1 seaborn~=0.11.2 diff --git a/describe/test_describe.py b/describe/test_describe.py index 1a2270a86..9ffe39abb 100644 --- a/describe/test_describe.py +++ b/describe/test_describe.py @@ -271,79 +271,3 @@ def _create_data(n_samples, n_features, n_classes, n_informative, reg=False): df["timestamp"] = [pd.Timestamp("2022").now()] * n_samples df.to_parquet("artifacts/random_dataset.parquet") return df - - -def _create_dask_func(uri): - dask_cluster_name = "dask-cluster" - dask_cluster = new_function(dask_cluster_name, kind="dask", image="mlrun/ml-models") - dask_cluster.spec.remote = False - dask_uri = uri - dask_cluster.export(dask_uri) - - -def test_import_function_describe_dask(): - dask_uri = "dask_func.yaml" - _create_dask_func(dask_uri) - describe_func = import_function("function.yaml") - is_test_passed = True - _create_data(n_samples=100, n_features=5, n_classes=3, n_informative=3) - describe_func.spec.command = "describe_dask.py" - - try: - describe_run = describe_func.run( - name="task-describe", - handler="analyze", - inputs={"table": DATA_PATH}, - params={ - "label_column": "label", - "dask_function": dask_uri, - "dask_flag": True, - }, - artifact_path=os.path.abspath("./artifacts"), - local=True, - ) - - except Exception as exception: - print(f"- The test failed - raised the following error:\n- {exception}") - is_test_passed = False - _validate_paths( - { - "imbalance.html", - "imbalance-weights-vec.csv", - } - ) - assert is_test_passed - - -def test_code_to_function_describe_dask(): - dask_uri = "dask_func.yaml" - _create_dask_func(dask_uri) - describe_func = code_to_function(filename="describe.py", kind="local") - is_test_passed = True - _create_data(n_samples=100, n_features=5, n_classes=3, n_informative=3) - describe_func.spec.command = "describe_dask.py" - - try: - describe_run = describe_func.run( - name="task-describe", - handler="analyze", - inputs={"table": DATA_PATH}, - params={ - "label_column": "label", - "dask_function": dask_uri, - "dask_flag": True, - }, - artifact_path=os.path.abspath("./artifacts"), - local=True, - ) - - except Exception as exception: - print(f"- The test failed - raised the following error:\n- {exception}") - is_test_passed = False - _validate_paths( - { - "imbalance.html", - "imbalance-weights-vec.csv", - } - ) - assert is_test_passed diff --git a/feature_selection/feature_selection.py b/feature_selection/feature_selection.py index 630a09694..30fa8f904 100644 --- a/feature_selection/feature_selection.py +++ b/feature_selection/feature_selection.py @@ -13,17 +13,15 @@ # limitations under the License. # import json -import os -import matplotlib.pyplot as plt import mlrun import mlrun.datastore -import mlrun.utils import mlrun.feature_store as fs +import mlrun.utils import numpy as np import pandas as pd -import seaborn as sns -from mlrun.artifacts import PlotArtifact +import plotly.express as px +from mlrun.artifacts import PlotlyArtifact from mlrun.datastore.targets import ParquetTarget # MLRun utils from mlrun.utils.helpers import create_class @@ -42,15 +40,6 @@ } -def _clear_current_figure(): - """ - Clear matplotlib current figure. - """ - plt.cla() - plt.clf() - plt.close() - - def show_values_on_bars(axs, h_v="v", space=0.4): def _show_on_single_plot(ax_): if h_v == "v": @@ -74,33 +63,18 @@ def _show_on_single_plot(ax_): def plot_stat(context, stat_name, stat_df): - _clear_current_figure() - - # Add chart - ax = plt.axes() - stat_chart = sns.barplot( + sorted_df = stat_df.sort_values(stat_name) + fig = px.bar( + data_frame=sorted_df, x=stat_name, - y="index", - data=stat_df.sort_values(stat_name, ascending=False).reset_index(), - ax=ax, + y=sorted_df.index, + title=f"{stat_name} feature scores", + color=stat_name, ) - plt.tight_layout() - - for p in stat_chart.patches: - width = p.get_width() - plt.text( - 5 + p.get_width(), - p.get_y() + 0.55 * p.get_height(), - "{:1.2f}".format(width), - ha="center", - va="center", - ) - context.log_artifact( - PlotArtifact(f"{stat_name}", body=plt.gcf()), - local_path=os.path.join("plots", "feature_selection", f"{stat_name}.html"), + item=PlotlyArtifact(key=stat_name, figure=fig), + local_path=f"{stat_name}.html", ) - _clear_current_figure() def feature_selection( @@ -115,7 +89,6 @@ def feature_selection( sample_ratio: float = None, output_vector_name: float = None, ignore_type_errors: bool = False, - is_feature_vector: bool = False, ): """ Applies selected feature selection statistical functions or models on our 'df_artifact'. @@ -138,10 +111,9 @@ def feature_selection( model name (ex. LinearSVC), formalized json (contains 'CLASS', 'FIT', 'META') or a path to such json file. :param max_scaled_scores: produce feature scores table scaled with max_scaler. - :param sample_ratio: percentage of the dataset the user whishes to compute the feature selection process on. + :param sample_ratio: percentage of the dataset the user wishes to compute the feature selection process on. :param output_vector_name: creates a new feature vector containing only the identifies features. :param ignore_type_errors: skips datatypes that are neither float nor int within the feature vector. - :param is_feature_vector: bool stating if the data is passed as a feature vector. """ stat_filters = stat_filters or DEFAULT_STAT_FILTERS model_filters = model_filters or DEFAULT_MODEL_FILTERS diff --git a/feature_selection/function.yaml b/feature_selection/function.yaml index f1bf53b8a..44cdd9894 100644 --- a/feature_selection/function.yaml +++ b/feature_selection/function.yaml @@ -73,7 +73,7 @@ spec: default: true - name: sample_ratio type: float - doc: percentage of the dataset the user whishes to compute the feature selection + doc: percentage of the dataset the user wishes to compute the feature selection process on. default: null - name: output_vector_name @@ -95,7 +95,7 @@ spec: command: '' build: origin_filename: '' - functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KaW1wb3J0IG9zCgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbWxydW4uZmVhdHVyZV9zdG9yZSBhcyBmcwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RBcnRpZmFjdApmcm9tIG1scnVuLmRhdGFzdG9yZS50YXJnZXRzIGltcG9ydCBQYXJxdWV0VGFyZ2V0CiMgTUxSdW4gdXRpbHMKZnJvbSBtbHJ1bi51dGlscy5oZWxwZXJzIGltcG9ydCBjcmVhdGVfY2xhc3MKIyBGZWF0dXJlIHNlbGVjdGlvbiBzdHJhdGVnaWVzCmZyb20gc2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbiBpbXBvcnQgU2VsZWN0RnJvbU1vZGVsLCBTZWxlY3RLQmVzdAojIFNjYWxlIGZlYXR1cmUgc2NvcmVzZ2l0IHN0CmZyb20gc2tsZWFybi5wcmVwcm9jZXNzaW5nIGltcG9ydCBNaW5NYXhTY2FsZXIKIyBTS0xlYXJuIGVzdGltYXRvcnMgbGlzdApmcm9tIHNrbGVhcm4udXRpbHMgaW1wb3J0IGFsbF9lc3RpbWF0b3JzCgpERUZBVUxUX1NUQVRfRklMVEVSUyA9IFsiZl9jbGFzc2lmIiwgIm11dHVhbF9pbmZvX2NsYXNzaWYiLCAiY2hpMiIsICJmX3JlZ3Jlc3Npb24iXQpERUZBVUxUX01PREVMX0ZJTFRFUlMgPSB7CiAgICAiTGluZWFyU1ZDIjogIkxpbmVhclNWQyIsCiAgICAiTG9naXN0aWNSZWdyZXNzaW9uIjogIkxvZ2lzdGljUmVncmVzc2lvbiIsCiAgICAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiOiAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiLAp9CgoKZGVmIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpOgogICAgIiIiCiAgICBDbGVhciBtYXRwbG90bGliIGN1cnJlbnQgZmlndXJlLgogICAgIiIiCiAgICBwbHQuY2xhKCkKICAgIHBsdC5jbGYoKQogICAgcGx0LmNsb3NlKCkKCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBfY2xlYXJfY3VycmVudF9maWd1cmUoKQoKICAgICMgQWRkIGNoYXJ0CiAgICBheCA9IHBsdC5heGVzKCkKICAgIHN0YXRfY2hhcnQgPSBzbnMuYmFycGxvdCgKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PSJpbmRleCIsCiAgICAgICAgZGF0YT1zdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSwgYXNjZW5kaW5nPUZhbHNlKS5yZXNldF9pbmRleCgpLAogICAgICAgIGF4PWF4LAogICAgKQogICAgcGx0LnRpZ2h0X2xheW91dCgpCgogICAgZm9yIHAgaW4gc3RhdF9jaGFydC5wYXRjaGVzOgogICAgICAgIHdpZHRoID0gcC5nZXRfd2lkdGgoKQogICAgICAgIHBsdC50ZXh0KAogICAgICAgICAgICA1ICsgcC5nZXRfd2lkdGgoKSwKICAgICAgICAgICAgcC5nZXRfeSgpICsgMC41NSAqIHAuZ2V0X2hlaWdodCgpLAogICAgICAgICAgICAiezoxLjJmfSIuZm9ybWF0KHdpZHRoKSwKICAgICAgICAgICAgaGE9ImNlbnRlciIsCiAgICAgICAgICAgIHZhPSJjZW50ZXIiLAogICAgICAgICkKCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90QXJ0aWZhY3QoZiJ7c3RhdF9uYW1lfSIsIGJvZHk9cGx0LmdjZigpKSwKICAgICAgICBsb2NhbF9wYXRoPW9zLnBhdGguam9pbigicGxvdHMiLCAiZmVhdHVyZV9zZWxlY3Rpb24iLCBmIntzdGF0X25hbWV9Lmh0bWwiKSwKICAgICkKICAgIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpCgoKZGVmIGZlYXR1cmVfc2VsZWN0aW9uKAogICAgY29udGV4dCwKICAgIGRmX2FydGlmYWN0LAogICAgazogaW50ID0gNSwKICAgIG1pbl92b3RlczogZmxvYXQgPSAwLjUsCiAgICBsYWJlbF9jb2x1bW46IHN0ciA9IE5vbmUsCiAgICBzdGF0X2ZpbHRlcnM6IGxpc3QgPSBOb25lLAogICAgbW9kZWxfZmlsdGVyczogZGljdCA9IE5vbmUsCiAgICBtYXhfc2NhbGVkX3Njb3JlczogYm9vbCA9IFRydWUsCiAgICBzYW1wbGVfcmF0aW86IGZsb2F0ID0gTm9uZSwKICAgIG91dHB1dF92ZWN0b3JfbmFtZTogZmxvYXQgPSBOb25lLAogICAgaWdub3JlX3R5cGVfZXJyb3JzOiBib29sID0gRmFsc2UsCiAgICBpc19mZWF0dXJlX3ZlY3RvcjogYm9vbCA9IEZhbHNlLAopOgogICAgIiIiCiAgICBBcHBsaWVzIHNlbGVjdGVkIGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyBvciBtb2RlbHMgb24gb3VyICdkZl9hcnRpZmFjdCcuCgogICAgRWFjaCBzdGF0aXN0aWNhbCBmdW5jdGlvbiBvciBtb2RlbCB3aWxsIHZvdGUgZm9yIGl0J3MgYmVzdCBLIHNlbGVjdGVkIGZlYXR1cmVzLgogICAgSWYgYSBmZWF0dXJlIGhhcyA+PSAnbWluX3ZvdGVzJyB2b3RlcywgaXQgd2lsbCBiZSBzZWxlY3RlZC4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIGNvbnRleHQuCiAgICA6cGFyYW0gZGZfYXJ0aWZhY3Q6ICAgICAgICAgZGF0YWZyYW1lIHRvIHBhc3MgYXMgaW5wdXQuCiAgICA6cGFyYW0gazogICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRvcCBmZWF0dXJlcyB0byBzZWxlY3QgZnJvbSBlYWNoIHN0YXRpc3RpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgbW9kZWwuCiAgICA6cGFyYW0gbWluX3ZvdGVzOiAgICAgICAgICAgbWluaW1hbCBudW1iZXIgb2Ygdm90ZXMgKGZyb20gYSBtb2RlbCBvciBieSBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgc3BlY2lmaWVkIGJ5IHBlcmNlbnRhZ2Ugb2Ygdm90ZXMgb3IgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygdm90ZXMuCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uOiAgICAgICAgZ3JvdW5kLXRydXRoICh5KSBsYWJlbHMuCiAgICA6cGFyYW0gc3RhdF9maWx0ZXJzOiAgICAgICAgc3RhdGlzdGljYWwgZnVuY3Rpb25zIHRvIGFwcGx5IHRvIHRoZSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIHNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24pLgogICAgOnBhcmFtIG1vZGVsX2ZpbHRlcnM6ICAgICAgIG1vZGVscyB0byB1c2UgZm9yIGZlYXR1cmUgZXZhbHVhdGlvbiwgY2FuIGJlIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIG5hbWUgKGV4LiBMaW5lYXJTVkMpLCBmb3JtYWxpemVkIGpzb24gKGNvbnRhaW5zICdDTEFTUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJVCcsICdNRVRBJykgb3IgYSBwYXRoIHRvIHN1Y2gganNvbiBmaWxlLgogICAgOnBhcmFtIG1heF9zY2FsZWRfc2NvcmVzOiAgIHByb2R1Y2UgZmVhdHVyZSBzY29yZXMgdGFibGUgc2NhbGVkIHdpdGggbWF4X3NjYWxlci4KICAgIDpwYXJhbSBzYW1wbGVfcmF0aW86ICAgICAgICBwZXJjZW50YWdlIG9mIHRoZSBkYXRhc2V0IHRoZSB1c2VyIHdoaXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICA6cGFyYW0gaXNfZmVhdHVyZV92ZWN0b3I6ICAgYm9vbCBzdGF0aW5nIGlmIHRoZSBkYXRhIGlzIHBhc3NlZCBhcyBhIGZlYXR1cmUgdmVjdG9yLgogICAgIiIiCiAgICBzdGF0X2ZpbHRlcnMgPSBzdGF0X2ZpbHRlcnMgb3IgREVGQVVMVF9TVEFUX0ZJTFRFUlMKICAgIG1vZGVsX2ZpbHRlcnMgPSBtb2RlbF9maWx0ZXJzIG9yIERFRkFVTFRfTU9ERUxfRklMVEVSUwogICAgIyBDaGVjayBpZiBkZi5tZXRhIGlzIHZhbGlkLCBpZiBpdCBpcywgbG9vayBmb3IgYSBmZWF0dXJlIHZlY3RvcgogICAgc3RvcmVfdXJpX3ByZWZpeCwgXyA9IG1scnVuLmRhdGFzdG9yZS5wYXJzZV9zdG9yZV91cmkoZGZfYXJ0aWZhY3QuYXJ0aWZhY3RfdXJsKQogICAgaXNfZmVhdHVyZV92ZWN0b3IgPSBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXgKCiAgICAjIExvb2sgaW5zaWRlIG1ldGEuc3BlYy5sYWJlbF9mZWF0dXJlIHRvIGlkZW50aWZ5IHRoZSBsYWJlbF9jb2x1bW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGl0CiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgTm9uZToKICAgICAgICBpZiBpc19mZWF0dXJlX3ZlY3RvcjoKICAgICAgICAgICAgbGFiZWxfY29sdW1uID0gZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUuc3BsaXQoIi4iKVsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGxhYmVsX2NvbHVtbiB3YXMgZ2l2ZW4sIHBsZWFzZSBhZGQgYSBsYWJlbF9jb2x1bW4uIikKCiAgICAjIFVzZSB0aGUgZmVhdHVyZSB2ZWN0b3IgYXMgZGF0YWZyYW1lCiAgICBkZiA9IGRmX2FydGlmYWN0LmFzX2RmKCkKCiAgICAjIEVuc3VyZSBrIGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzCiAgICBpZiBrID4gZGYuc2hhcGVbMV06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJLIGNhbm5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzICh7ZGYuc2hhcGVbMV19KS4gUGxlYXNlIGNob29zZSBhIHNtYWxsZXIgSy4iCiAgICAgICAgKQogICAgZWxpZiBrIDwgMToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gMS4gUGxlYXNlIGNob29zZSBhIGJpZ2dlciBLLiIpCgogICAgIyBDcmVhdGUgYSBzYW1wbGUgZGF0YWZyYW1lIG9mIHRoZSBvcmlnaW5hbCBmZWF0dXJlIHZlY3RvcgogICAgaWYgc2FtcGxlX3JhdGlvOgogICAgICAgIGRmID0gKAogICAgICAgICAgICBkZi5ncm91cGJ5KGxhYmVsX2NvbHVtbikKICAgICAgICAgICAgLmFwcGx5KGxhbWJkYSB4OiB4LnNhbXBsZShmcmFjPXNhbXBsZV9yYXRpbykpCiAgICAgICAgICAgIC5yZXNldF9pbmRleChkcm9wPVRydWUpCiAgICAgICAgKQogICAgICAgIGRmID0gZGYuZHJvcG5hKCkKCiAgICAjIFNldCBmZWF0dXJlIHZlY3RvciBhbmQgbGFiZWxzCiAgICB5ID0gZGYucG9wKGxhYmVsX2NvbHVtbikKICAgIFggPSBkZgoKICAgIGlmIG5wLm9iamVjdF8gaW4gbGlzdChYLmR0eXBlcykgYW5kIGlnbm9yZV90eXBlX2Vycm9ycyBpcyBGYWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIntkZi5zZWxlY3RfZHR5cGVzKGluY2x1ZGU9WydvYmplY3QnXSkuY29sdW1ucy50b2xpc3QoKX0gYXJlIG5laXRoZXIgZmxvYXQgb3IgaW50LiIKICAgICAgICApCgogICAgIyBDcmVhdGUgc2VsZWN0ZWQgc3RhdGlzdGljYWwgZXN0aW1hdG9ycwogICAgc3RhdF9mdW5jdGlvbnNfbGlzdCA9IHsKICAgICAgICBzdGF0X25hbWU6IFNlbGVjdEtCZXN0KAogICAgICAgICAgICBzY29yZV9mdW5jPWNyZWF0ZV9jbGFzcyhmInNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24ue3N0YXRfbmFtZX0iKSwgaz1rCiAgICAgICAgKQogICAgICAgIGZvciBzdGF0X25hbWUgaW4gc3RhdF9maWx0ZXJzCiAgICB9CiAgICByZXF1aXJlc19hYnMgPSBbImNoaTIiXQoKICAgICMgUnVuIHN0YXRpc3RpYyBmaWx0ZXJzCiAgICBzZWxlY3RlZF9mZWF0dXJlc19hZ2cgPSB7fQogICAgc3RhdHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKS5kcm9wbmEoKQoKICAgIGZvciBzdGF0X25hbWUsIHN0YXRfZnVuYyBpbiBzdGF0X2Z1bmN0aW9uc19saXN0Lml0ZW1zKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJhbXMgPSAoWCwgeSkgaWYgc3RhdF9uYW1lIGluIHJlcXVpcmVzX2FicyBlbHNlIChhYnMoWCksIHkpCiAgICAgICAgICAgIHN0YXQgPSBzdGF0X2Z1bmMuZml0KCpwYXJhbXMpCgogICAgICAgICAgICAjIENvbGxlY3Qgc3RhdCBmdW5jdGlvbiByZXN1bHRzCiAgICAgICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgICAgICBpbmRleD1YLmNvbHVtbnMsIGNvbHVtbnM9W3N0YXRfbmFtZV0sIGRhdGE9c3RhdC5zY29yZXNfCiAgICAgICAgICAgICkKICAgICAgICAgICAgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZikKICAgICAgICAgICAgc3RhdHNfZGYgPSBzdGF0c19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgICAgICAjIFNlbGVjdCBLIEJlc3QgZmVhdHVyZXMKICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXMgPSBYLmNvbHVtbnNbc3RhdF9mdW5jLmdldF9zdXBwb3J0KCldCiAgICAgICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1tzdGF0X25hbWVdID0gc2VsZWN0ZWRfZmVhdHVyZXMKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiQ291bGRuJ3QgY2FsY3VsYXRlIHtzdGF0X25hbWV9IGJlY2F1c2Ugb2Y6IHtlfSIpCgogICAgIyBDcmVhdGUgbW9kZWxzIGZyb20gY2xhc3MgbmFtZSAvIGpzb24gZmlsZSAvIGpzb24gcGFyYW1zCiAgICBhbGxfc2tsZWFybl9lc3RpbWF0b3JzID0gZGljdChhbGxfZXN0aW1hdG9ycygpKSBpZiBsZW4obW9kZWxfZmlsdGVycykgPiAwIGVsc2Uge30KICAgIHNlbGVjdGVkX21vZGVscyA9IHt9CiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gbW9kZWxfZmlsdGVycy5pdGVtcygpOgogICAgICAgIGlmICIuanNvbiIgaW4gbW9kZWw6CiAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWQob3Blbihtb2RlbCwgInIiKSkKICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgIGVsaWYgbW9kZWwgaW4gYWxsX3NrbGVhcm5fZXN0aW1hdG9yczoKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gYWxsX3NrbGVhcm5fZXN0aW1hdG9yc1ttb2RlbF9uYW1lXSgpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWRzKG1vZGVsKQogICAgICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBjbGFzc2lmaWVyX2NsYXNzKCoqY3VycmVudF9tb2RlbFsiQ0xBU1MiXSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInVuYWJsZSB0byBsb2FkIHttb2RlbH0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIFJ1biBtb2RlbCBmaWx0ZXJzCiAgICBtb2RlbHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKQogICAgZm9yIG1vZGVsX25hbWUsIG1vZGVsIGluIHNlbGVjdGVkX21vZGVscy5pdGVtcygpOgoKICAgICAgICBpZiBtb2RlbF9uYW1lID09ICJMb2dpc3RpY1JlZ3Jlc3Npb24iOgogICAgICAgICAgICBtb2RlbC5zZXRfcGFyYW1zKHNvbHZlcj0ibGlibGluZWFyIikKCiAgICAgICAgIyBUcmFpbiBtb2RlbCBhbmQgZ2V0IGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIHNlbGVjdF9mcm9tX21vZGVsID0gU2VsZWN0RnJvbU1vZGVsKG1vZGVsKS5maXQoWCwgeSkKICAgICAgICBmZWF0dXJlX2lkeCA9IHNlbGVjdF9mcm9tX21vZGVsLmdldF9zdXBwb3J0KCkKICAgICAgICBmZWF0dXJlX25hbWVzID0gWC5jb2x1bW5zW2ZlYXR1cmVfaWR4XQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1ttb2RlbF9uYW1lXSA9IGZlYXR1cmVfbmFtZXMudG9saXN0KCkKCiAgICAgICAgIyBDb2xsZWN0IG1vZGVsIGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImNvZWZfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmNvZWZfCiAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8sICJmZWF0dXJlX2ltcG9ydGFuY2VzXyIpOgogICAgICAgICAgICBzdGF0X2RmID0gc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXy5mZWF0dXJlX2ltcG9ydGFuY2VzXwoKICAgICAgICBzdGF0X2RmID0gcGQuRGF0YUZyYW1lKGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bbW9kZWxfbmFtZV0sIGRhdGE9c3RhdF9kZlswXSkKICAgICAgICBtb2RlbHNfZGYgPSBtb2RlbHNfZGYuam9pbihzdGF0X2RmKQoKICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgbW9kZWxfbmFtZSwgc3RhdF9kZikKCiAgICAjIENyZWF0ZSBmZWF0dXJlX3Njb3JlcyBERiB3aXRoIHN0YXQgJiBtb2RlbCBmaWx0ZXJzIHNjb3JlcwogICAgcmVzdWx0X21hdHJpeF9kZiA9IHBkLmNvbmNhdChbc3RhdHNfZGYsIG1vZGVsc19kZl0sIGF4aXM9MSwgc29ydD1GYWxzZSkKICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAga2V5PSJmZWF0dXJlX3Njb3JlcyIsCiAgICAgICAgZGY9cmVzdWx0X21hdHJpeF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJmZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQogICAgaWYgbWF4X3NjYWxlZF9zY29yZXM6CiAgICAgICAgbm9ybWFsaXplZF9kZiA9IHJlc3VsdF9tYXRyaXhfZGYucmVwbGFjZShbbnAuaW5mLCAtbnAuaW5mXSwgbnAubmFuKS52YWx1ZXMKICAgICAgICBtaW5fbWF4X3NjYWxlciA9IE1pbk1heFNjYWxlcigpCiAgICAgICAgbm9ybWFsaXplZF9kZiA9IG1pbl9tYXhfc2NhbGVyLmZpdF90cmFuc2Zvcm0obm9ybWFsaXplZF9kZikKICAgICAgICBub3JtYWxpemVkX2RmID0gcGQuRGF0YUZyYW1lKAogICAgICAgICAgICBkYXRhPW5vcm1hbGl6ZWRfZGYsCiAgICAgICAgICAgIGNvbHVtbnM9cmVzdWx0X21hdHJpeF9kZi5jb2x1bW5zLAogICAgICAgICAgICBpbmRleD1yZXN1bHRfbWF0cml4X2RmLmluZGV4LAogICAgICAgICkKICAgICAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgICAgICBrZXk9Im1heF9zY2FsZWRfc2NvcmVzX2ZlYXR1cmVfc2NvcmVzIiwKICAgICAgICAgICAgZGY9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgbG9jYWxfcGF0aD0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMucGFycXVldCIsCiAgICAgICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICAgICAgKQoKICAgICMgQ3JlYXRlIGZlYXR1cmUgY291bnQgRGF0YUZyYW1lCiAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZzoKICAgICAgICByZXN1bHRfbWF0cml4X2RmW3Rlc3RfbmFtZV0gPSBbCiAgICAgICAgICAgIDEgaWYgeCBpbiBzZWxlY3RlZF9mZWF0dXJlc19hZ2dbdGVzdF9uYW1lXSBlbHNlIDAgZm9yIHggaW4gWC5jb2x1bW5zCiAgICAgICAgXQogICAgcmVzdWx0X21hdHJpeF9kZi5sb2NbOiwgIm51bV92b3RlcyJdID0gcmVzdWx0X21hdHJpeF9kZi5zdW0oYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50IiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50LnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBIb3cgbWFueSB2b3RlcyBhcmUgbmVlZGVkIGZvciBhIGZlYXR1cmUgdG8gYmUgc2VsZWN0ZWQ/CiAgICBpZiBpc2luc3RhbmNlKG1pbl92b3RlcywgaW50KToKICAgICAgICB2b3Rlc19uZWVkZWQgPSBtaW5fdm90ZXMKICAgIGVsc2U6CiAgICAgICAgbnVtX2ZpbHRlcnMgPSBsZW4oc3RhdF9maWx0ZXJzKSArIGxlbihtb2RlbF9maWx0ZXJzKQogICAgICAgIHZvdGVzX25lZWRlZCA9IGludChucC5mbG9vcihudW1fZmlsdGVycyAqIG1heChtaW4obWluX3ZvdGVzLCAxKSwgMCkpKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInZvdGVzIG5lZWRlZCB0byBiZSBzZWxlY3RlZDoge3ZvdGVzX25lZWRlZH0iKQoKICAgICMgQ3JlYXRlIGZpbmFsIGZlYXR1cmUgZGF0YWZyYW1lCiAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGZbCiAgICAgICAgcmVzdWx0X21hdHJpeF9kZi5udW1fdm90ZXMgPj0gdm90ZXNfbmVlZGVkCiAgICBdLmluZGV4LnRvbGlzdCgpCiAgICBnb29kX2ZlYXR1cmVfZGYgPSBkZi5sb2NbOiwgc2VsZWN0ZWRfZmVhdHVyZXNdCiAgICBmaW5hbF9kZiA9IHBkLmNvbmNhdChbZ29vZF9mZWF0dXJlX2RmLCB5XSwgYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzIiwKICAgICAgICBkZj1maW5hbF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJzZWxlY3RlZF9mZWF0dXJlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQoKICAgICMgQ3JlYXRpbmcgYSBuZXcgZmVhdHVyZSB2ZWN0b3IgY29udGFpbmluZyBvbmx5IHRoZSBpZGVudGlmaWVkIHRvcCBmZWF0dXJlcwogICAgaWYgaXNfZmVhdHVyZV92ZWN0b3IgYW5kIGRmX2FydGlmYWN0Lm1ldGEuc3BlYy5mZWF0dXJlcyBhbmQgb3V0cHV0X3ZlY3Rvcl9uYW1lOgogICAgICAgICMgU2VsZWN0aW5nIHRoZSB0b3AgSyBmZWF0dXJlcyBmcm9tIG91ciB0b3AgZmVhdHVyZSBkYXRhZnJhbWUKICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGYuaGVhZChrKS5pbmRleAoKICAgICAgICAjIE1hdGNoIHRoZSBzZWxlY3RlZCBmZWF0dXJlIG5hbWVzIHRvIHRoZSBGUyBGZWF0dXJlIGFubm90YXRpb25zCiAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zID0gWwogICAgICAgICAgICBmZWF0dXJlCiAgICAgICAgICAgIGZvciBmZWF0dXJlIGluIGxpc3QoZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzKQogICAgICAgICAgICBmb3Igc2VsZWN0ZWQgaW4gbGlzdChzZWxlY3RlZF9mZWF0dXJlcykKICAgICAgICAgICAgaWYgZmVhdHVyZS5lbmRzd2l0aChzZWxlY3RlZCkKICAgICAgICBdCgogICAgICAgICMgRGVmaW5pbmcgb3VyIG5ldyBmZWF0dXJlIHZlY3RvcgogICAgICAgIHRvcF9mZWF0dXJlc19mdiA9IGZzLkZlYXR1cmVWZWN0b3IoCiAgICAgICAgICAgIG91dHB1dF92ZWN0b3JfbmFtZSwKICAgICAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zLAogICAgICAgICAgICBsYWJlbF9mZWF0dXJlPSJsYWJlbHMubGFiZWwiLAogICAgICAgICAgICBkZXNjcmlwdGlvbj0iZmVhdHVyZSB2ZWN0b3IgY29tcG9zZWQgc3RyaWN0bHkgb2Ygb3VyIHRvcCBmZWF0dXJlcyIsCiAgICAgICAgKQoKICAgICAgICAjIFNhdmluZwogICAgICAgIHRvcF9mZWF0dXJlc19mdi5zYXZlKCkKICAgICAgICBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcyh0b3BfZmVhdHVyZXNfZnYsIHRhcmdldD1QYXJxdWV0VGFyZ2V0KCkpCgogICAgICAgICMgTG9nZ2luZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yIFVSSQogICAgICAgIGNvbnRleHQubG9nX3Jlc3VsdCgidG9wX2ZlYXR1cmVzX3ZlY3RvciIsIHRvcF9mZWF0dXJlc19mdi51cmkpCg== + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KCmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi5mZWF0dXJlX3N0b3JlIGFzIGZzCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgcGxvdGx5LmV4cHJlc3MgYXMgcHgKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RseUFydGlmYWN0CmZyb20gbWxydW4uZGF0YXN0b3JlLnRhcmdldHMgaW1wb3J0IFBhcnF1ZXRUYXJnZXQKIyBNTFJ1biB1dGlscwpmcm9tIG1scnVuLnV0aWxzLmhlbHBlcnMgaW1wb3J0IGNyZWF0ZV9jbGFzcwojIEZlYXR1cmUgc2VsZWN0aW9uIHN0cmF0ZWdpZXMKZnJvbSBza2xlYXJuLmZlYXR1cmVfc2VsZWN0aW9uIGltcG9ydCBTZWxlY3RGcm9tTW9kZWwsIFNlbGVjdEtCZXN0CiMgU2NhbGUgZmVhdHVyZSBzY29yZXNnaXQgc3QKZnJvbSBza2xlYXJuLnByZXByb2Nlc3NpbmcgaW1wb3J0IE1pbk1heFNjYWxlcgojIFNLTGVhcm4gZXN0aW1hdG9ycyBsaXN0CmZyb20gc2tsZWFybi51dGlscyBpbXBvcnQgYWxsX2VzdGltYXRvcnMKCkRFRkFVTFRfU1RBVF9GSUxURVJTID0gWyJmX2NsYXNzaWYiLCAibXV0dWFsX2luZm9fY2xhc3NpZiIsICJjaGkyIiwgImZfcmVncmVzc2lvbiJdCkRFRkFVTFRfTU9ERUxfRklMVEVSUyA9IHsKICAgICJMaW5lYXJTVkMiOiAiTGluZWFyU1ZDIiwKICAgICJMb2dpc3RpY1JlZ3Jlc3Npb24iOiAiTG9naXN0aWNSZWdyZXNzaW9uIiwKICAgICJFeHRyYVRyZWVzQ2xhc3NpZmllciI6ICJFeHRyYVRyZWVzQ2xhc3NpZmllciIsCn0KCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBzb3J0ZWRfZGYgPSBzdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSkKICAgIGZpZyA9IHB4LmJhcigKICAgICAgICBkYXRhX2ZyYW1lPXNvcnRlZF9kZiwKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PXNvcnRlZF9kZi5pbmRleCwKICAgICAgICB0aXRsZT1mIntzdGF0X25hbWV9IGZlYXR1cmUgc2NvcmVzIiwKICAgICAgICBjb2xvcj1zdGF0X25hbWUsCiAgICApCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBpdGVtPVBsb3RseUFydGlmYWN0KGtleT1zdGF0X25hbWUsIGZpZ3VyZT1maWcpLAogICAgICAgIGxvY2FsX3BhdGg9ZiJ7c3RhdF9uYW1lfS5odG1sIiwKICAgICkKCgpkZWYgZmVhdHVyZV9zZWxlY3Rpb24oCiAgICBjb250ZXh0LAogICAgZGZfYXJ0aWZhY3QsCiAgICBrOiBpbnQgPSA1LAogICAgbWluX3ZvdGVzOiBmbG9hdCA9IDAuNSwKICAgIGxhYmVsX2NvbHVtbjogc3RyID0gTm9uZSwKICAgIHN0YXRfZmlsdGVyczogbGlzdCA9IE5vbmUsCiAgICBtb2RlbF9maWx0ZXJzOiBkaWN0ID0gTm9uZSwKICAgIG1heF9zY2FsZWRfc2NvcmVzOiBib29sID0gVHJ1ZSwKICAgIHNhbXBsZV9yYXRpbzogZmxvYXQgPSBOb25lLAogICAgb3V0cHV0X3ZlY3Rvcl9uYW1lOiBmbG9hdCA9IE5vbmUsCiAgICBpZ25vcmVfdHlwZV9lcnJvcnM6IGJvb2wgPSBGYWxzZSwKKToKICAgICIiIgogICAgQXBwbGllcyBzZWxlY3RlZCBmZWF0dXJlIHNlbGVjdGlvbiBzdGF0aXN0aWNhbCBmdW5jdGlvbnMgb3IgbW9kZWxzIG9uIG91ciAnZGZfYXJ0aWZhY3QnLgoKICAgIEVhY2ggc3RhdGlzdGljYWwgZnVuY3Rpb24gb3IgbW9kZWwgd2lsbCB2b3RlIGZvciBpdCdzIGJlc3QgSyBzZWxlY3RlZCBmZWF0dXJlcy4KICAgIElmIGEgZmVhdHVyZSBoYXMgPj0gJ21pbl92b3Rlcycgdm90ZXMsIGl0IHdpbGwgYmUgc2VsZWN0ZWQuCgogICAgOnBhcmFtIGNvbnRleHQ6ICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiBjb250ZXh0LgogICAgOnBhcmFtIGRmX2FydGlmYWN0OiAgICAgICAgIGRhdGFmcmFtZSB0byBwYXNzIGFzIGlucHV0LgogICAgOnBhcmFtIGs6ICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiB0b3AgZmVhdHVyZXMgdG8gc2VsZWN0IGZyb20gZWFjaCBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9yIG1vZGVsLgogICAgOnBhcmFtIG1pbl92b3RlczogICAgICAgICAgIG1pbmltYWwgbnVtYmVyIG9mIHZvdGVzIChmcm9tIGEgbW9kZWwgb3IgYnkgc3RhdGlzdGljYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbikgbmVlZGVkIGZvciBhIGZlYXR1cmUgdG8gYmUgc2VsZWN0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIHNwZWNpZmllZCBieSBwZXJjZW50YWdlIG9mIHZvdGVzIG9yIGFic29sdXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHZvdGVzLgogICAgOnBhcmFtIGxhYmVsX2NvbHVtbjogICAgICAgIGdyb3VuZC10cnV0aCAoeSkgbGFiZWxzLgogICAgOnBhcmFtIHN0YXRfZmlsdGVyczogICAgICAgIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyB0byBhcHBseSB0byB0aGUgZmVhdHVyZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJvbSBza2xlYXJuLmZlYXR1cmVfc2VsZWN0aW9uKS4KICAgIDpwYXJhbSBtb2RlbF9maWx0ZXJzOiAgICAgICBtb2RlbHMgdG8gdXNlIGZvciBmZWF0dXJlIGV2YWx1YXRpb24sIGNhbiBiZSBzcGVjaWZpZWQgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbCBuYW1lIChleC4gTGluZWFyU1ZDKSwgZm9ybWFsaXplZCBqc29uIChjb250YWlucyAnQ0xBU1MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGSVQnLCAnTUVUQScpIG9yIGEgcGF0aCB0byBzdWNoIGpzb24gZmlsZS4KICAgIDpwYXJhbSBtYXhfc2NhbGVkX3Njb3JlczogICBwcm9kdWNlIGZlYXR1cmUgc2NvcmVzIHRhYmxlIHNjYWxlZCB3aXRoIG1heF9zY2FsZXIuCiAgICA6cGFyYW0gc2FtcGxlX3JhdGlvOiAgICAgICAgcGVyY2VudGFnZSBvZiB0aGUgZGF0YXNldCB0aGUgdXNlciB3aXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICAiIiIKICAgIHN0YXRfZmlsdGVycyA9IHN0YXRfZmlsdGVycyBvciBERUZBVUxUX1NUQVRfRklMVEVSUwogICAgbW9kZWxfZmlsdGVycyA9IG1vZGVsX2ZpbHRlcnMgb3IgREVGQVVMVF9NT0RFTF9GSUxURVJTCiAgICAjIENoZWNrIGlmIGRmLm1ldGEgaXMgdmFsaWQsIGlmIGl0IGlzLCBsb29rIGZvciBhIGZlYXR1cmUgdmVjdG9yCiAgICBzdG9yZV91cmlfcHJlZml4LCBfID0gbWxydW4uZGF0YXN0b3JlLnBhcnNlX3N0b3JlX3VyaShkZl9hcnRpZmFjdC5hcnRpZmFjdF91cmwpCiAgICBpc19mZWF0dXJlX3ZlY3RvciA9IG1scnVuLnV0aWxzLlN0b3JlUHJlZml4LkZlYXR1cmVWZWN0b3IgPT0gc3RvcmVfdXJpX3ByZWZpeAoKICAgICMgTG9vayBpbnNpZGUgbWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUgdG8gaWRlbnRpZnkgdGhlIGxhYmVsX2NvbHVtbiBpZiB0aGUgdXNlciBkaWQgbm90IHNwZWNpZnkgaXQKICAgIGlmIGxhYmVsX2NvbHVtbiBpcyBOb25lOgogICAgICAgIGlmIGlzX2ZlYXR1cmVfdmVjdG9yOgogICAgICAgICAgICBsYWJlbF9jb2x1bW4gPSBkZl9hcnRpZmFjdC5tZXRhLnNwZWMubGFiZWxfZmVhdHVyZS5zcGxpdCgiLiIpWzFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gbGFiZWxfY29sdW1uIHdhcyBnaXZlbiwgcGxlYXNlIGFkZCBhIGxhYmVsX2NvbHVtbi4iKQoKICAgICMgVXNlIHRoZSBmZWF0dXJlIHZlY3RvciBhcyBkYXRhZnJhbWUKICAgIGRmID0gZGZfYXJ0aWZhY3QuYXNfZGYoKQoKICAgICMgRW5zdXJlIGsgaXMgbm90IGJpZ2dlciB0aGFuIHRoZSB0b3RhbCBudW1iZXIgb2YgZmVhdHVyZXMKICAgIGlmIGsgPiBkZi5zaGFwZVsxXToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIksgY2Fubm90IGJlIGJpZ2dlciB0aGFuIHRoZSB0b3RhbCBudW1iZXIgb2YgZmVhdHVyZXMgKHtkZi5zaGFwZVsxXX0pLiBQbGVhc2UgY2hvb3NlIGEgc21hbGxlciBLLiIKICAgICAgICApCiAgICBlbGlmIGsgPCAxOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIksgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAxLiBQbGVhc2UgY2hvb3NlIGEgYmlnZ2VyIEsuIikKCiAgICAjIENyZWF0ZSBhIHNhbXBsZSBkYXRhZnJhbWUgb2YgdGhlIG9yaWdpbmFsIGZlYXR1cmUgdmVjdG9yCiAgICBpZiBzYW1wbGVfcmF0aW86CiAgICAgICAgZGYgPSAoCiAgICAgICAgICAgIGRmLmdyb3VwYnkobGFiZWxfY29sdW1uKQogICAgICAgICAgICAuYXBwbHkobGFtYmRhIHg6IHguc2FtcGxlKGZyYWM9c2FtcGxlX3JhdGlvKSkKICAgICAgICAgICAgLnJlc2V0X2luZGV4KGRyb3A9VHJ1ZSkKICAgICAgICApCiAgICAgICAgZGYgPSBkZi5kcm9wbmEoKQoKICAgICMgU2V0IGZlYXR1cmUgdmVjdG9yIGFuZCBsYWJlbHMKICAgIHkgPSBkZi5wb3AobGFiZWxfY29sdW1uKQogICAgWCA9IGRmCgogICAgaWYgbnAub2JqZWN0XyBpbiBsaXN0KFguZHR5cGVzKSBhbmQgaWdub3JlX3R5cGVfZXJyb3JzIGlzIEZhbHNlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgIGYie2RmLnNlbGVjdF9kdHlwZXMoaW5jbHVkZT1bJ29iamVjdCddKS5jb2x1bW5zLnRvbGlzdCgpfSBhcmUgbmVpdGhlciBmbG9hdCBvciBpbnQuIgogICAgICAgICkKCiAgICAjIENyZWF0ZSBzZWxlY3RlZCBzdGF0aXN0aWNhbCBlc3RpbWF0b3JzCiAgICBzdGF0X2Z1bmN0aW9uc19saXN0ID0gewogICAgICAgIHN0YXRfbmFtZTogU2VsZWN0S0Jlc3QoCiAgICAgICAgICAgIHNjb3JlX2Z1bmM9Y3JlYXRlX2NsYXNzKGYic2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbi57c3RhdF9uYW1lfSIpLCBrPWsKICAgICAgICApCiAgICAgICAgZm9yIHN0YXRfbmFtZSBpbiBzdGF0X2ZpbHRlcnMKICAgIH0KICAgIHJlcXVpcmVzX2FicyA9IFsiY2hpMiJdCgogICAgIyBSdW4gc3RhdGlzdGljIGZpbHRlcnMKICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZyA9IHt9CiAgICBzdGF0c19kZiA9IHBkLkRhdGFGcmFtZShpbmRleD1YLmNvbHVtbnMpLmRyb3BuYSgpCgogICAgZm9yIHN0YXRfbmFtZSwgc3RhdF9mdW5jIGluIHN0YXRfZnVuY3Rpb25zX2xpc3QuaXRlbXMoKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcmFtcyA9IChYLCB5KSBpZiBzdGF0X25hbWUgaW4gcmVxdWlyZXNfYWJzIGVsc2UgKGFicyhYKSwgeSkKICAgICAgICAgICAgc3RhdCA9IHN0YXRfZnVuYy5maXQoKnBhcmFtcykKCiAgICAgICAgICAgICMgQ29sbGVjdCBzdGF0IGZ1bmN0aW9uIHJlc3VsdHMKICAgICAgICAgICAgc3RhdF9kZiA9IHBkLkRhdGFGcmFtZSgKICAgICAgICAgICAgICAgIGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bc3RhdF9uYW1lXSwgZGF0YT1zdGF0LnNjb3Jlc18KICAgICAgICAgICAgKQogICAgICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgc3RhdF9uYW1lLCBzdGF0X2RmKQogICAgICAgICAgICBzdGF0c19kZiA9IHN0YXRzX2RmLmpvaW4oc3RhdF9kZikKCiAgICAgICAgICAgICMgU2VsZWN0IEsgQmVzdCBmZWF0dXJlcwogICAgICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IFguY29sdW1uc1tzdGF0X2Z1bmMuZ2V0X3N1cHBvcnQoKV0KICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXNfYWdnW3N0YXRfbmFtZV0gPSBzZWxlY3RlZF9mZWF0dXJlcwoKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oZiJDb3VsZG4ndCBjYWxjdWxhdGUge3N0YXRfbmFtZX0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIENyZWF0ZSBtb2RlbHMgZnJvbSBjbGFzcyBuYW1lIC8ganNvbiBmaWxlIC8ganNvbiBwYXJhbXMKICAgIGFsbF9za2xlYXJuX2VzdGltYXRvcnMgPSBkaWN0KGFsbF9lc3RpbWF0b3JzKCkpIGlmIGxlbihtb2RlbF9maWx0ZXJzKSA+IDAgZWxzZSB7fQogICAgc2VsZWN0ZWRfbW9kZWxzID0ge30KICAgIGZvciBtb2RlbF9uYW1lLCBtb2RlbCBpbiBtb2RlbF9maWx0ZXJzLml0ZW1zKCk6CiAgICAgICAgaWYgIi5qc29uIiBpbiBtb2RlbDoKICAgICAgICAgICAgY3VycmVudF9tb2RlbCA9IGpzb24ubG9hZChvcGVuKG1vZGVsLCAiciIpKQogICAgICAgICAgICBjbGFzc2lmaWVyX2NsYXNzID0gY3JlYXRlX2NsYXNzKGN1cnJlbnRfbW9kZWxbIk1FVEEiXVsiY2xhc3MiXSkKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gY2xhc3NpZmllcl9jbGFzcygqKmN1cnJlbnRfbW9kZWxbIkNMQVNTIl0pCiAgICAgICAgZWxpZiBtb2RlbCBpbiBhbGxfc2tsZWFybl9lc3RpbWF0b3JzOgogICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBhbGxfc2tsZWFybl9lc3RpbWF0b3JzW21vZGVsX25hbWVdKCkKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY3VycmVudF9tb2RlbCA9IGpzb24ubG9hZHMobW9kZWwpCiAgICAgICAgICAgICAgICBjbGFzc2lmaWVyX2NsYXNzID0gY3JlYXRlX2NsYXNzKGN1cnJlbnRfbW9kZWxbIk1FVEEiXVsiY2xhc3MiXSkKICAgICAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYidW5hYmxlIHRvIGxvYWQge21vZGVsfSBiZWNhdXNlIG9mOiB7ZX0iKQoKICAgICMgUnVuIG1vZGVsIGZpbHRlcnMKICAgIG1vZGVsc19kZiA9IHBkLkRhdGFGcmFtZShpbmRleD1YLmNvbHVtbnMpCiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gc2VsZWN0ZWRfbW9kZWxzLml0ZW1zKCk6CgogICAgICAgIGlmIG1vZGVsX25hbWUgPT0gIkxvZ2lzdGljUmVncmVzc2lvbiI6CiAgICAgICAgICAgIG1vZGVsLnNldF9wYXJhbXMoc29sdmVyPSJsaWJsaW5lYXIiKQoKICAgICAgICAjIFRyYWluIG1vZGVsIGFuZCBnZXQgZmVhdHVyZSBpbXBvcnRhbmNlCiAgICAgICAgc2VsZWN0X2Zyb21fbW9kZWwgPSBTZWxlY3RGcm9tTW9kZWwobW9kZWwpLmZpdChYLCB5KQogICAgICAgIGZlYXR1cmVfaWR4ID0gc2VsZWN0X2Zyb21fbW9kZWwuZ2V0X3N1cHBvcnQoKQogICAgICAgIGZlYXR1cmVfbmFtZXMgPSBYLmNvbHVtbnNbZmVhdHVyZV9pZHhdCiAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXNfYWdnW21vZGVsX25hbWVdID0gZmVhdHVyZV9uYW1lcy50b2xpc3QoKQoKICAgICAgICAjIENvbGxlY3QgbW9kZWwgZmVhdHVyZSBpbXBvcnRhbmNlCiAgICAgICAgaWYgaGFzYXR0cihzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLCAiY29lZl8iKToKICAgICAgICAgICAgc3RhdF9kZiA9IHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8uY29lZl8KICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImZlYXR1cmVfaW1wb3J0YW5jZXNfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmZlYXR1cmVfaW1wb3J0YW5jZXNfCgogICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zLCBjb2x1bW5zPVttb2RlbF9uYW1lXSwgZGF0YT1zdGF0X2RmWzBdKQogICAgICAgIG1vZGVsc19kZiA9IG1vZGVsc19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgIHBsb3Rfc3RhdChjb250ZXh0LCBtb2RlbF9uYW1lLCBzdGF0X2RmKQoKICAgICMgQ3JlYXRlIGZlYXR1cmVfc2NvcmVzIERGIHdpdGggc3RhdCAmIG1vZGVsIGZpbHRlcnMgc2NvcmVzCiAgICByZXN1bHRfbWF0cml4X2RmID0gcGQuY29uY2F0KFtzdGF0c19kZiwgbW9kZWxzX2RmXSwgYXhpcz0xLCBzb3J0PUZhbHNlKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9ImZlYXR1cmVfc2NvcmVzIiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9ImZlYXR1cmVfc2NvcmVzLnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCiAgICBpZiBtYXhfc2NhbGVkX3Njb3JlczoKICAgICAgICBub3JtYWxpemVkX2RmID0gcmVzdWx0X21hdHJpeF9kZi5yZXBsYWNlKFtucC5pbmYsIC1ucC5pbmZdLCBucC5uYW4pLnZhbHVlcwogICAgICAgIG1pbl9tYXhfc2NhbGVyID0gTWluTWF4U2NhbGVyKCkKICAgICAgICBub3JtYWxpemVkX2RmID0gbWluX21heF9zY2FsZXIuZml0X3RyYW5zZm9ybShub3JtYWxpemVkX2RmKQogICAgICAgIG5vcm1hbGl6ZWRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgIGRhdGE9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgY29sdW1ucz1yZXN1bHRfbWF0cml4X2RmLmNvbHVtbnMsCiAgICAgICAgICAgIGluZGV4PXJlc3VsdF9tYXRyaXhfZGYuaW5kZXgsCiAgICAgICAgKQogICAgICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAgICAgIGtleT0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMiLAogICAgICAgICAgICBkZj1ub3JtYWxpemVkX2RmLAogICAgICAgICAgICBsb2NhbF9wYXRoPSJtYXhfc2NhbGVkX3Njb3Jlc19mZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICAgICAgZm9ybWF0PSJwYXJxdWV0IiwKICAgICAgICApCgogICAgIyBDcmVhdGUgZmVhdHVyZSBjb3VudCBEYXRhRnJhbWUKICAgIGZvciB0ZXN0X25hbWUgaW4gc2VsZWN0ZWRfZmVhdHVyZXNfYWdnOgogICAgICAgIHJlc3VsdF9tYXRyaXhfZGZbdGVzdF9uYW1lXSA9IFsKICAgICAgICAgICAgMSBpZiB4IGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1t0ZXN0X25hbWVdIGVsc2UgMCBmb3IgeCBpbiBYLmNvbHVtbnMKICAgICAgICBdCiAgICByZXN1bHRfbWF0cml4X2RmLmxvY1s6LCAibnVtX3ZvdGVzIl0gPSByZXN1bHRfbWF0cml4X2RmLnN1bShheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgIGtleT0ic2VsZWN0ZWRfZmVhdHVyZXNfY291bnQiLAogICAgICAgIGRmPXJlc3VsdF9tYXRyaXhfZGYsCiAgICAgICAgbG9jYWxfcGF0aD0ic2VsZWN0ZWRfZmVhdHVyZXNfY291bnQucGFycXVldCIsCiAgICAgICAgZm9ybWF0PSJwYXJxdWV0IiwKICAgICkKCiAgICAjIEhvdyBtYW55IHZvdGVzIGFyZSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZD8KICAgIGlmIGlzaW5zdGFuY2UobWluX3ZvdGVzLCBpbnQpOgogICAgICAgIHZvdGVzX25lZWRlZCA9IG1pbl92b3RlcwogICAgZWxzZToKICAgICAgICBudW1fZmlsdGVycyA9IGxlbihzdGF0X2ZpbHRlcnMpICsgbGVuKG1vZGVsX2ZpbHRlcnMpCiAgICAgICAgdm90ZXNfbmVlZGVkID0gaW50KG5wLmZsb29yKG51bV9maWx0ZXJzICogbWF4KG1pbihtaW5fdm90ZXMsIDEpLCAwKSkpCiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYidm90ZXMgbmVlZGVkIHRvIGJlIHNlbGVjdGVkOiB7dm90ZXNfbmVlZGVkfSIpCgogICAgIyBDcmVhdGUgZmluYWwgZmVhdHVyZSBkYXRhZnJhbWUKICAgIHNlbGVjdGVkX2ZlYXR1cmVzID0gcmVzdWx0X21hdHJpeF9kZlsKICAgICAgICByZXN1bHRfbWF0cml4X2RmLm51bV92b3RlcyA+PSB2b3Rlc19uZWVkZWQKICAgIF0uaW5kZXgudG9saXN0KCkKICAgIGdvb2RfZmVhdHVyZV9kZiA9IGRmLmxvY1s6LCBzZWxlY3RlZF9mZWF0dXJlc10KICAgIGZpbmFsX2RmID0gcGQuY29uY2F0KFtnb29kX2ZlYXR1cmVfZGYsIHldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgIGtleT0ic2VsZWN0ZWRfZmVhdHVyZXMiLAogICAgICAgIGRmPWZpbmFsX2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzLnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBDcmVhdGluZyBhIG5ldyBmZWF0dXJlIHZlY3RvciBjb250YWluaW5nIG9ubHkgdGhlIGlkZW50aWZpZWQgdG9wIGZlYXR1cmVzCiAgICBpZiBpc19mZWF0dXJlX3ZlY3RvciBhbmQgZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzIGFuZCBvdXRwdXRfdmVjdG9yX25hbWU6CiAgICAgICAgIyBTZWxlY3RpbmcgdGhlIHRvcCBLIGZlYXR1cmVzIGZyb20gb3VyIHRvcCBmZWF0dXJlIGRhdGFmcmFtZQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzID0gcmVzdWx0X21hdHJpeF9kZi5oZWFkKGspLmluZGV4CgogICAgICAgICMgTWF0Y2ggdGhlIHNlbGVjdGVkIGZlYXR1cmUgbmFtZXMgdG8gdGhlIEZTIEZlYXR1cmUgYW5ub3RhdGlvbnMKICAgICAgICBtYXRjaGVkX3NlbGVjdGlvbnMgPSBbCiAgICAgICAgICAgIGZlYXR1cmUKICAgICAgICAgICAgZm9yIGZlYXR1cmUgaW4gbGlzdChkZl9hcnRpZmFjdC5tZXRhLnNwZWMuZmVhdHVyZXMpCiAgICAgICAgICAgIGZvciBzZWxlY3RlZCBpbiBsaXN0KHNlbGVjdGVkX2ZlYXR1cmVzKQogICAgICAgICAgICBpZiBmZWF0dXJlLmVuZHN3aXRoKHNlbGVjdGVkKQogICAgICAgIF0KCiAgICAgICAgIyBEZWZpbmluZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yCiAgICAgICAgdG9wX2ZlYXR1cmVzX2Z2ID0gZnMuRmVhdHVyZVZlY3RvcigKICAgICAgICAgICAgb3V0cHV0X3ZlY3Rvcl9uYW1lLAogICAgICAgICAgICBtYXRjaGVkX3NlbGVjdGlvbnMsCiAgICAgICAgICAgIGxhYmVsX2ZlYXR1cmU9ImxhYmVscy5sYWJlbCIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJmZWF0dXJlIHZlY3RvciBjb21wb3NlZCBzdHJpY3RseSBvZiBvdXIgdG9wIGZlYXR1cmVzIiwKICAgICAgICApCgogICAgICAgICMgU2F2aW5nCiAgICAgICAgdG9wX2ZlYXR1cmVzX2Z2LnNhdmUoKQogICAgICAgIGZzLmdldF9vZmZsaW5lX2ZlYXR1cmVzKHRvcF9mZWF0dXJlc19mdiwgdGFyZ2V0PVBhcnF1ZXRUYXJnZXQoKSkKCiAgICAgICAgIyBMb2dnaW5nIG91ciBuZXcgZmVhdHVyZSB2ZWN0b3IgVVJJCiAgICAgICAgY29udGV4dC5sb2dfcmVzdWx0KCJ0b3BfZmVhdHVyZXNfdmVjdG9yIiwgdG9wX2ZlYXR1cmVzX2Z2LnVyaSkK code_origin: '' default_handler: feature_selection image: mlrun/mlrun diff --git a/feature_selection/requirements.txt b/feature_selection/requirements.txt index 70a079c7d..e4d79d180 100644 --- a/feature_selection/requirements.txt +++ b/feature_selection/requirements.txt @@ -1,5 +1,3 @@ scikit-learn -matplotlib -seaborn scikit-plot - +plotly~=5.4.0 diff --git a/feature_selection/test_feature_selection.py b/feature_selection/test_feature_selection.py index 9cb5ca621..6ae949aab 100644 --- a/feature_selection/test_feature_selection.py +++ b/feature_selection/test_feature_selection.py @@ -12,14 +12,31 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from mlrun import code_to_function -from pathlib import Path +import os import shutil +from pathlib import Path + +import mlrun -METRICS_PATH = 'data/metrics.pq' -ARTIFACTS_PATH = 'artifacts' -RUNS_PATH = 'runs' -SCHEDULES_PATH = 'schedules' +METRICS_PATH = "data/metrics.pq" +ARTIFACTS_PATH = "artifacts" +RUNS_PATH = "runs" +SCHEDULES_PATH = "schedules" +PLOTS_PATH = os.path.abspath("./artifacts/feature-selection-feature-selection/0") + + +def _validate_paths(paths): + """ + Check if all the expected plot are saved + """ + base_folder = PLOTS_PATH + for path in paths: + full_path = os.path.join(base_folder, path) + if Path(full_path).is_file(): + print(f"{path} exist") + else: + raise FileNotFoundError(f"{path} not found!") + return True def _delete_outputs(paths): @@ -29,20 +46,24 @@ def _delete_outputs(paths): def test_run_local_feature_selection(): - fn = code_to_function(name='test_run_local_feature_selection', - filename="feature_selection.py", - handler="feature_selection", - kind="local", - ) - fn.spec.command = "feature_selection.py" + fn = mlrun.import_function("function.yaml") run = fn.run( params={ - 'k': 2, - 'min_votes': 0.3, - 'label_column': 'is_error', + "k": 2, + "min_votes": 0.3, + "label_column": "is_error", }, - inputs={'df_artifact': 'data/metrics.pq'}, - artifact_path='artifacts/', + inputs={"df_artifact": "data/metrics.pq"}, + artifact_path="artifacts/", + local=True, + ) + assert _validate_paths( + [ + "chi2.html", + "f_classif.html", + "f_regression.html", + "mutual_info_classif.html", + ] ) - assert run.outputs['feature_scores'] and run.outputs['selected_features'] _delete_outputs({ARTIFACTS_PATH, RUNS_PATH, SCHEDULES_PATH}) + assert run.outputs['feature_scores'] and run.outputs['selected_features'] diff --git a/hugging_face_serving/function.yaml b/hugging_face_serving/function.yaml index e1bb3b0ce..764fc1cfe 100644 --- a/hugging_face_serving/function.yaml +++ b/hugging_face_serving/function.yaml @@ -2,11 +2,13 @@ kind: serving metadata: name: hugging-face-serving tag: '' - hash: 39bfca7b639022fa03f5ca87f85f9e17fc837b70 + hash: 1a489a57da861f129eb26e933f34e58927e41195 project: '' labels: author: yonish categories: + - huggingface + - genai - model-serving - machine-learning spec: @@ -14,37 +16,28 @@ spec: args: [] image: mlrun/ml-models build: - commands: - - python -m pip install transformers==4.21.3 tensorflow==2.9.2 - code_origin: https://github.com/mlrun/functions.git#250244b2527c5ce8a82438b4340df34de6e19dc3:/Users/yonatanshelach/yoni/projects/functions/hugging_face_serving/hugging_face_serving.py - origin_filename: /Users/yonatanshelach/yoni/projects/functions/hugging_face_serving/hugging_face_serving.py + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKCmZyb20gYWJjIGltcG9ydCBBQkMKZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9tb2R1bGUKZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKCmZyb20gdHJhbnNmb3JtZXJzIGltcG9ydCBwaXBlbGluZQoKaW1wb3J0IG1scnVuLnNlcnZpbmcKClBBQ0tBR0VfTU9EVUxFID0gInRyYW5zZm9ybWVycyIKU0VSSUFMSVpBQkxFX1RZUEVTID0gW2RpY3QsIGxpc3QsIHR1cGxlLCBzdHIsIGludCwgZmxvYXRdCgoKY2xhc3MgSHVnZ2luZ0ZhY2VNb2RlbFNlcnZlcihtbHJ1bi5zZXJ2aW5nLlYyTW9kZWxTZXJ2ZXIsIEFCQyk6CiAgICAiIiIKICAgIEh1Z2dpbmcgRmFjZSBNb2RlbCBzZXJ2aW5nIGNsYXNzLCBpbmhlcml0aW5nIHRoZSBWMk1vZGVsU2VydmVyIGNsYXNzIGZvciBiZWluZyBpbml0aWFsaXplZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZQogICAgbW9kZWwgc2VydmVyIGFuZCBiZSBhYmxlIHRvIHJ1biBsb2NhbGx5IGFzIHBhcnQgb2YgYSBudWNsaW8gc2VydmVybGVzcyBmdW5jdGlvbiwgb3IgYXMgcGFydCBvZiBhIHJlYWwtdGltZSBwaXBlbGluZS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXygKICAgICAgICBzZWxmLAogICAgICAgIGNvbnRleHQ6IG1scnVuLk1MQ2xpZW50Q3R4LAogICAgICAgIG5hbWU6IHN0ciwKICAgICAgICB0YXNrOiBzdHIsCiAgICAgICAgbW9kZWxfcGF0aDogc3RyID0gTm9uZSwKICAgICAgICBtb2RlbF9uYW1lOiBzdHIgPSBOb25lLAogICAgICAgIG1vZGVsX2NsYXNzOiBzdHIgPSBOb25lLAogICAgICAgIHRva2VuaXplcl9uYW1lOiBzdHIgPSBOb25lLAogICAgICAgIHRva2VuaXplcl9jbGFzczogc3RyID0gTm9uZSwKICAgICAgICBmcmFtZXdvcms6IHN0ciA9IE5vbmUsCiAgICAgICAgKipjbGFzc19hcmdzLAogICAgKToKICAgICAgICAiIiIKICAgICAgICBJbml0aWFsaXplIGEgc2VydmluZyBjbGFzcyBmb3IgYSBIdWdnaW5nIGZhY2UgbW9kZWwuCgogICAgICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIFRoZSBtbHJ1biBjb250ZXh0IHRvIHdvcmsgd2l0aAogICAgICAgIDpwYXJhbSBuYW1lOiAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgc2VydmVyIHRvIGJlIGluaXRpYWxpemVkCiAgICAgICAgOnBhcmFtIG1vZGVsX3BhdGg6ICAgICAgTm90IGluIHVzZS4gV2hlbiBhZGRpbmcgYSBtb2RlbCBwYXNzIGFueSBzdHJpbmcgdmFsdWUKICAgICAgICA6cGFyYW0gbW9kZWxfbmFtZTogICAgICBUaGUgbW9kZWwncyBuYW1lIGluIHRoZSBIdWdnaW5nIEZhY2UgaHViCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgYG5scHRvd24vYmVydC1iYXNlLW11bHRpbGluZ3VhbC11bmNhc2VkLXNlbnRpbWVudGAKICAgICAgICA6cGFyYW0gbW9kZWxfY2xhc3M6ICAgICBUaGUgbW9kZWwncyBjbGFzcyB0eXBlIG9iamVjdCB3aGljaCBjYW4gYmUgcGFzc2VkIGFzIHRoZSBjbGFzcydzIG5hbWUgKHN0cmluZykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSBwcm92aWRlZCBhbmQgdG8gYmUgbWF0Y2hlZCB3aXRoIGBtb2RlbF9uYW1lYC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmcuLCBgQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbmAKICAgICAgICA6cGFyYW0gdG9rZW5pemVyX25hbWU6ICBUaGUgdG9rZW5pemVyJ3MgbmFtZSBpbiB0aGUgSHVnZ2luZyBGYWNlIGh1YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4sIGBubHB0b3duL2JlcnQtYmFzZS1tdWx0aWxpbmd1YWwtdW5jYXNlZC1zZW50aW1lbnRgCiAgICAgICAgOnBhcmFtIHRva2VuaXplcl9jbGFzczogVGhlIG1vZGVsJ3MgY2xhc3MgdHlwZSBvYmplY3Qgd2hpY2ggY2FuIGJlIHBhc3NlZCBhcyB0aGUgY2xhc3MncyBuYW1lIChzdHJpbmcpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgcHJvdmlkZWQgYW5kIHRvIGJlIG1hdGNoZWQgd2l0aCBgbW9kZWxfbmFtZWAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgYEF1dG9Ub2tlbml6ZXJgCiAgICAgICAgOnBhcmFtIGZyYW1ld29yazogICAgICAgVGhlIGZyYW1ld29yayB0byB1c2UsIGVpdGhlciBgInB0ImAgZm9yIFB5VG9yY2ggb3IgYCJ0ZiJgIGZvciBUZW5zb3JGbG93LiBUaGUgc3BlY2lmaWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrIG11c3QgYmUgaW5zdGFsbGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vIGZyYW1ld29yayBpcyBzcGVjaWZpZWQsIHdpbGwgZGVmYXVsdCB0byB0aGUgb25lIGN1cnJlbnRseSBpbnN0YWxsZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm8gZnJhbWV3b3JrIGlzIHNwZWNpZmllZCBhbmQgYm90aCBmcmFtZXdvcmtzIGFyZSBpbnN0YWxsZWQsIHdpbGwgZGVmYXVsdCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsgb2YgdGhlIGBtb2RlbGAsIG9yIHRvIFB5VG9yY2ggaWYgbm8gbW9kZWwgaXMgcHJvdmlkZWQuCiAgICAgICAgOnBhcmFtIGNsYXNzX2FyZ3M6ICAgICAgLQogICAgICAgICIiIgogICAgICAgIHN1cGVyKEh1Z2dpbmdGYWNlTW9kZWxTZXJ2ZXIsIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIG5hbWU9bmFtZSwKICAgICAgICAgICAgbW9kZWxfcGF0aD1tb2RlbF9wYXRoLAogICAgICAgICAgICAqKmNsYXNzX2FyZ3MsCiAgICAgICAgKQogICAgICAgIHNlbGYudGFzayA9IHRhc2sKICAgICAgICBzZWxmLm1vZGVsID0gTm9uZQogICAgICAgIHNlbGYudG9rZW5pemVyID0gTm9uZQogICAgICAgIHNlbGYubW9kZWxfbmFtZSA9IG1vZGVsX25hbWUKICAgICAgICBzZWxmLnRva2VuaXplcl9uYW1lID0gdG9rZW5pemVyX25hbWUKICAgICAgICBzZWxmLm1vZGVsX2NsYXNzID0gbW9kZWxfY2xhc3MKICAgICAgICBzZWxmLnRva2VuaXplcl9jbGFzcyA9IHRva2VuaXplcl9jbGFzcwogICAgICAgIHNlbGYuZnJhbWV3b3JrID0gZnJhbWV3b3JrCiAgICAgICAgc2VsZi5waXBlID0gTm9uZQoKICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICIiImxvYWQgYW5kIGluaXRpYWxpemUgdGhlIG1vZGVsIGFuZC9vciBvdGhlciBlbGVtZW50cyIiIgogICAgICAgIGlmIHNlbGYubW9kZWxfY2xhc3M6CiAgICAgICAgICAgIG1vZGVsX29iamVjdCA9IGdldGF0dHIoaW1wb3J0X21vZHVsZShQQUNLQUdFX01PRFVMRSksIHNlbGYubW9kZWxfY2xhc3MpCiAgICAgICAgICAgIHNlbGYubW9kZWwgPSBtb2RlbF9vYmplY3QuZnJvbV9wcmV0cmFpbmVkKHNlbGYubW9kZWxfbmFtZSkKICAgICAgICBpZiBzZWxmLnRva2VuaXplcl9jbGFzczoKICAgICAgICAgICAgdG9rZW5pemVyX29iamVjdCA9IGdldGF0dHIoCiAgICAgICAgICAgICAgICBpbXBvcnRfbW9kdWxlKFBBQ0tBR0VfTU9EVUxFKSwgc2VsZi50b2tlbml6ZXJfY2xhc3MKICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLnRva2VuaXplciA9IHRva2VuaXplcl9vYmplY3QuZnJvbV9wcmV0cmFpbmVkKHNlbGYudG9rZW5pemVyX25hbWUpCiAgICAgICAgc2VsZi5waXBlID0gcGlwZWxpbmUoCiAgICAgICAgICAgIHRhc2s9c2VsZi50YXNrLAogICAgICAgICAgICBtb2RlbD1zZWxmLm1vZGVsIG9yIHNlbGYubW9kZWxfbmFtZSwKICAgICAgICAgICAgdG9rZW5pemVyPXNlbGYudG9rZW5pemVyLAogICAgICAgICAgICBmcmFtZXdvcms9c2VsZi5mcmFtZXdvcmssCiAgICAgICAgKQoKICAgIGRlZiBwcmVkaWN0KHNlbGYsIGJvZHk6IGRpY3QpIC0+IExpc3Q6CiAgICAgICAgIiIiR2VuZXJhdGUgbW9kZWwgcHJlZGljdGlvbnMgZnJvbSBzYW1wbGUuIiIiCiAgICAgICAgaWYgc2VsZi5waXBlIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBsZWFzZSB1c2UgYC5sb2FkKClgIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYm9keVsiaW5wdXRzIl1bMF0sIGRpY3QpOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gW3NlbGYucGlwZSgqKl9pbnB1dCkgZm9yIF9pbnB1dCBpbiBib2R5WyJpbnB1dHMiXV0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucGlwZShib2R5WyJpbnB1dHMiXSkKICAgICAgICAgICAgIyByZXBsYWNlIGxpc3Qgb2YgbGlzdHMgb2YgZGljdHMgaW50byBhIGxpc3Qgb2YgZGljdHM6CiAgICAgICAgICAgIGlmIGFsbChpc2luc3RhbmNlKHJlcywgbGlzdCkgZm9yIHJlcyBpbiByZXN1bHQpOgogICAgICAgICAgICAgICAgbmV3X3Jlc3VsdCA9IFtyZXNbMF0gZm9yIHJlcyBpbiByZXN1bHRdCiAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXdfcmVzdWx0CgogICAgICAgICAgICBub25fc2VyaWFsaXphYmxlX3R5cGVzID0gW10KICAgICAgICAgICAgZm9yIHJlcyBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWwgaW4gcmVzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgaWYgdHlwZSh2YWwpIG5vdCBpbiBTRVJJQUxJWkFCTEVfVFlQRVM6CiAgICAgICAgICAgICAgICAgICAgICAgIG5vbl9zZXJpYWxpemFibGVfdHlwZXMuYXBwZW5kKHN0cih0eXBlKHZhbCkpKQogICAgICAgICAgICAgICAgICAgICAgICByZXNba2V5XSA9IHN0cih2YWwpCiAgICAgICAgICAgIGlmIG5vbl9zZXJpYWxpemFibGVfdHlwZXM6CiAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgZiJOb24tc2VyaWFsaXphYmxlIHR5cGVzOiB7bm9uX3NlcmlhbGl6YWJsZV90eXBlc30gd2VyZSBjYXN0ZWQgdG8gc3RyaW5ncyIKICAgICAgICAgICAgICAgICkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRmFpbGVkIHRvIHByZWRpY3QgJXMiICUgZSkKICAgICAgICByZXR1cm4gcmVzdWx0Cgpmcm9tIG1scnVuLnJ1bnRpbWVzIGltcG9ydCBudWNsaW9faW5pdF9ob29rCmRlZiBpbml0X2NvbnRleHQoY29udGV4dCk6CiAgICBudWNsaW9faW5pdF9ob29rKGNvbnRleHQsIGdsb2JhbHMoKSwgJ3NlcnZpbmdfdjInKQoKZGVmIGhhbmRsZXIoY29udGV4dCwgZXZlbnQpOgogICAgcmV0dXJuIGNvbnRleHQubWxydW5faGFuZGxlcihjb250ZXh0LCBldmVudCkK + commands: [] + code_origin: '' + origin_filename: '' + requirements: + - transformers==4.21.3 + - tensorflow==2.9.2 description: Generic Hugging Face model server. - default_handler: handler + default_handler: '' disable_auto_mount: false - env: [] + clone_target_dir: '' + env: + - name: MLRUN_HTTPDB__NUCLIO__EXPLICIT_ACK + value: enabled priority_class_name: '' preemption_mode: prevent min_replicas: 1 max_replicas: 4 - base_spec: - apiVersion: nuclio.io/v1 - kind: Function - metadata: - name: hugging-face-serving - labels: {} - annotations: - nuclio.io/generated_by: function generated from /Users/yonatanshelach/yoni/projects/functions/hugging_face_serving/hugging_face_serving.py - spec: - runtime: python - handler: hugging_face_serving:handler - env: [] - volumes: [] - build: - commands: [] - noBaseImagesPull: true - functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKCmZyb20gYWJjIGltcG9ydCBBQkMKZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9tb2R1bGUKZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKCmZyb20gdHJhbnNmb3JtZXJzIGltcG9ydCBwaXBlbGluZQoKaW1wb3J0IG1scnVuLnNlcnZpbmcKClBBQ0tBR0VfTU9EVUxFID0gInRyYW5zZm9ybWVycyIKU0VSSUFMSVpBQkxFX1RZUEVTID0gW2RpY3QsIGxpc3QsIHR1cGxlLCBzdHIsIGludCwgZmxvYXRdCgoKY2xhc3MgSHVnZ2luZ0ZhY2VNb2RlbFNlcnZlcihtbHJ1bi5zZXJ2aW5nLlYyTW9kZWxTZXJ2ZXIsIEFCQyk6CiAgICAiIiIKICAgIEh1Z2dpbmcgRmFjZSBNb2RlbCBzZXJ2aW5nIGNsYXNzLCBpbmhlcml0aW5nIHRoZSBWMk1vZGVsU2VydmVyIGNsYXNzIGZvciBiZWluZyBpbml0aWFsaXplZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZQogICAgbW9kZWwgc2VydmVyIGFuZCBiZSBhYmxlIHRvIHJ1biBsb2NhbGx5IGFzIHBhcnQgb2YgYSBudWNsaW8gc2VydmVybGVzcyBmdW5jdGlvbiwgb3IgYXMgcGFydCBvZiBhIHJlYWwtdGltZSBwaXBlbGluZS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXygKICAgICAgICBzZWxmLAogICAgICAgIGNvbnRleHQ6IG1scnVuLk1MQ2xpZW50Q3R4LAogICAgICAgIG5hbWU6IHN0ciwKICAgICAgICB0YXNrOiBzdHIsCiAgICAgICAgbW9kZWxfcGF0aDogc3RyID0gTm9uZSwKICAgICAgICBtb2RlbF9uYW1lOiBzdHIgPSBOb25lLAogICAgICAgIG1vZGVsX2NsYXNzOiBzdHIgPSBOb25lLAogICAgICAgIHRva2VuaXplcl9uYW1lOiBzdHIgPSBOb25lLAogICAgICAgIHRva2VuaXplcl9jbGFzczogc3RyID0gTm9uZSwKICAgICAgICBmcmFtZXdvcms6IHN0ciA9IE5vbmUsCiAgICAgICAgKipjbGFzc19hcmdzLAogICAgKToKICAgICAgICAiIiIKICAgICAgICBJbml0aWFsaXplIGEgc2VydmluZyBjbGFzcyBmb3IgYSBIdWdnaW5nIGZhY2UgbW9kZWwuCgogICAgICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIFRoZSBtbHJ1biBjb250ZXh0IHRvIHdvcmsgd2l0aAogICAgICAgIDpwYXJhbSBuYW1lOiAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgc2VydmVyIHRvIGJlIGluaXRpYWxpemVkCiAgICAgICAgOnBhcmFtIG1vZGVsX3BhdGg6ICAgICAgTm90IGluIHVzZS4gV2hlbiBhZGRpbmcgYSBtb2RlbCBwYXNzIGFueSBzdHJpbmcgdmFsdWUKICAgICAgICA6cGFyYW0gbW9kZWxfbmFtZTogICAgICBUaGUgbW9kZWwncyBuYW1lIGluIHRoZSBIdWdnaW5nIEZhY2UgaHViCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgYG5scHRvd24vYmVydC1iYXNlLW11bHRpbGluZ3VhbC11bmNhc2VkLXNlbnRpbWVudGAKICAgICAgICA6cGFyYW0gbW9kZWxfY2xhc3M6ICAgICBUaGUgbW9kZWwncyBjbGFzcyB0eXBlIG9iamVjdCB3aGljaCBjYW4gYmUgcGFzc2VkIGFzIHRoZSBjbGFzcydzIG5hbWUgKHN0cmluZykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSBwcm92aWRlZCBhbmQgdG8gYmUgbWF0Y2hlZCB3aXRoIGBtb2RlbF9uYW1lYC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmcuLCBgQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbmAKICAgICAgICA6cGFyYW0gdG9rZW5pemVyX25hbWU6ICBUaGUgdG9rZW5pemVyJ3MgbmFtZSBpbiB0aGUgSHVnZ2luZyBGYWNlIGh1YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4sIGBubHB0b3duL2JlcnQtYmFzZS1tdWx0aWxpbmd1YWwtdW5jYXNlZC1zZW50aW1lbnRgCiAgICAgICAgOnBhcmFtIHRva2VuaXplcl9jbGFzczogVGhlIG1vZGVsJ3MgY2xhc3MgdHlwZSBvYmplY3Qgd2hpY2ggY2FuIGJlIHBhc3NlZCBhcyB0aGUgY2xhc3MncyBuYW1lIChzdHJpbmcpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgcHJvdmlkZWQgYW5kIHRvIGJlIG1hdGNoZWQgd2l0aCBgbW9kZWxfbmFtZWAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgYEF1dG9Ub2tlbml6ZXJgCiAgICAgICAgOnBhcmFtIGZyYW1ld29yazogICAgICAgVGhlIGZyYW1ld29yayB0byB1c2UsIGVpdGhlciBgInB0ImAgZm9yIFB5VG9yY2ggb3IgYCJ0ZiJgIGZvciBUZW5zb3JGbG93LiBUaGUgc3BlY2lmaWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrIG11c3QgYmUgaW5zdGFsbGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vIGZyYW1ld29yayBpcyBzcGVjaWZpZWQsIHdpbGwgZGVmYXVsdCB0byB0aGUgb25lIGN1cnJlbnRseSBpbnN0YWxsZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm8gZnJhbWV3b3JrIGlzIHNwZWNpZmllZCBhbmQgYm90aCBmcmFtZXdvcmtzIGFyZSBpbnN0YWxsZWQsIHdpbGwgZGVmYXVsdCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsgb2YgdGhlIGBtb2RlbGAsIG9yIHRvIFB5VG9yY2ggaWYgbm8gbW9kZWwgaXMgcHJvdmlkZWQuCiAgICAgICAgOnBhcmFtIGNsYXNzX2FyZ3M6ICAgICAgLQogICAgICAgICIiIgogICAgICAgIHN1cGVyKEh1Z2dpbmdGYWNlTW9kZWxTZXJ2ZXIsIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIG5hbWU9bmFtZSwKICAgICAgICAgICAgbW9kZWxfcGF0aD1tb2RlbF9wYXRoLAogICAgICAgICAgICAqKmNsYXNzX2FyZ3MsCiAgICAgICAgKQogICAgICAgIHNlbGYudGFzayA9IHRhc2sKICAgICAgICBzZWxmLm1vZGVsID0gTm9uZQogICAgICAgIHNlbGYudG9rZW5pemVyID0gTm9uZQogICAgICAgIHNlbGYubW9kZWxfbmFtZSA9IG1vZGVsX25hbWUKICAgICAgICBzZWxmLnRva2VuaXplcl9uYW1lID0gdG9rZW5pemVyX25hbWUKICAgICAgICBzZWxmLm1vZGVsX2NsYXNzID0gbW9kZWxfY2xhc3MKICAgICAgICBzZWxmLnRva2VuaXplcl9jbGFzcyA9IHRva2VuaXplcl9jbGFzcwogICAgICAgIHNlbGYuZnJhbWV3b3JrID0gZnJhbWV3b3JrCiAgICAgICAgc2VsZi5waXBlID0gTm9uZQoKICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICIiImxvYWQgYW5kIGluaXRpYWxpemUgdGhlIG1vZGVsIGFuZC9vciBvdGhlciBlbGVtZW50cyIiIgogICAgICAgIGlmIHNlbGYubW9kZWxfY2xhc3M6CiAgICAgICAgICAgIG1vZGVsX29iamVjdCA9IGdldGF0dHIoaW1wb3J0X21vZHVsZShQQUNLQUdFX01PRFVMRSksIHNlbGYubW9kZWxfY2xhc3MpCiAgICAgICAgICAgIHNlbGYubW9kZWwgPSBtb2RlbF9vYmplY3QuZnJvbV9wcmV0cmFpbmVkKHNlbGYubW9kZWxfbmFtZSkKICAgICAgICBpZiBzZWxmLnRva2VuaXplcl9jbGFzczoKICAgICAgICAgICAgdG9rZW5pemVyX29iamVjdCA9IGdldGF0dHIoCiAgICAgICAgICAgICAgICBpbXBvcnRfbW9kdWxlKFBBQ0tBR0VfTU9EVUxFKSwgc2VsZi50b2tlbml6ZXJfY2xhc3MKICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLnRva2VuaXplciA9IHRva2VuaXplcl9vYmplY3QuZnJvbV9wcmV0cmFpbmVkKHNlbGYudG9rZW5pemVyX25hbWUpCiAgICAgICAgc2VsZi5waXBlID0gcGlwZWxpbmUoCiAgICAgICAgICAgIHRhc2s9c2VsZi50YXNrLAogICAgICAgICAgICBtb2RlbD1zZWxmLm1vZGVsIG9yIHNlbGYubW9kZWxfbmFtZSwKICAgICAgICAgICAgdG9rZW5pemVyPXNlbGYudG9rZW5pemVyLAogICAgICAgICAgICBmcmFtZXdvcms9c2VsZi5mcmFtZXdvcmssCiAgICAgICAgKQoKICAgIGRlZiBwcmVkaWN0KHNlbGYsIGJvZHk6IGRpY3QpIC0+IExpc3Q6CiAgICAgICAgIiIiR2VuZXJhdGUgbW9kZWwgcHJlZGljdGlvbnMgZnJvbSBzYW1wbGUuIiIiCiAgICAgICAgaWYgc2VsZi5waXBlIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBsZWFzZSB1c2UgYC5sb2FkKClgIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYm9keVsiaW5wdXRzIl1bMF0sIGRpY3QpOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gW3NlbGYucGlwZSgqKl9pbnB1dCkgZm9yIF9pbnB1dCBpbiBib2R5WyJpbnB1dHMiXV0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucGlwZShib2R5WyJpbnB1dHMiXSkKICAgICAgICAgICAgIyByZXBsYWNlIGxpc3Qgb2YgbGlzdHMgb2YgZGljdHMgaW50byBhIGxpc3Qgb2YgZGljdHM6CiAgICAgICAgICAgIGlmIGFsbChpc2luc3RhbmNlKHJlcywgbGlzdCkgZm9yIHJlcyBpbiByZXN1bHQpOgogICAgICAgICAgICAgICAgbmV3X3Jlc3VsdCA9IFtyZXNbMF0gZm9yIHJlcyBpbiByZXN1bHRdCiAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXdfcmVzdWx0CgogICAgICAgICAgICBub25fc2VyaWFsaXphYmxlX3R5cGVzID0gW10KICAgICAgICAgICAgZm9yIHJlcyBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWwgaW4gcmVzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgaWYgdHlwZSh2YWwpIG5vdCBpbiBTRVJJQUxJWkFCTEVfVFlQRVM6CiAgICAgICAgICAgICAgICAgICAgICAgIG5vbl9zZXJpYWxpemFibGVfdHlwZXMuYXBwZW5kKHN0cih0eXBlKHZhbCkpKQogICAgICAgICAgICAgICAgICAgICAgICByZXNba2V5XSA9IHN0cih2YWwpCiAgICAgICAgICAgIGlmIG5vbl9zZXJpYWxpemFibGVfdHlwZXM6CiAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgZiJOb24tc2VyaWFsaXphYmxlIHR5cGVzOiB7bm9uX3NlcmlhbGl6YWJsZV90eXBlc30gd2VyZSBjYXN0ZWQgdG8gc3RyaW5ncyIKICAgICAgICAgICAgICAgICkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRmFpbGVkIHRvIHByZWRpY3QgJXMiICUgZSkKICAgICAgICByZXR1cm4gcmVzdWx0Cgpmcm9tIG1scnVuLnJ1bnRpbWVzIGltcG9ydCBudWNsaW9faW5pdF9ob29rCmRlZiBpbml0X2NvbnRleHQoY29udGV4dCk6CiAgICBudWNsaW9faW5pdF9ob29rKGNvbnRleHQsIGdsb2JhbHMoKSwgJ3NlcnZpbmdfdjInKQoKZGVmIGhhbmRsZXIoY29udGV4dCwgZXZlbnQpOgogICAgcmV0dXJuIGNvbnRleHQubWxydW5faGFuZGxlcihjb250ZXh0LCBldmVudCkK source: '' function_kind: serving_v2 + function_handler: hugging_face_serving:handler + base_image_pull: false default_class: HuggingFaceModelServer secret_sources: [] affinity: null diff --git a/hugging_face_serving/item.yaml b/hugging_face_serving/item.yaml index f7fa92637..d1f78769d 100644 --- a/hugging_face_serving/item.yaml +++ b/hugging_face_serving/item.yaml @@ -1,5 +1,7 @@ apiVersion: v1 categories: +- huggingface +- genai - model-serving - machine-learning description: Generic Hugging Face model server. @@ -26,4 +28,5 @@ spec: - transformers==4.21.3 - tensorflow==2.9.2 url: '' -version: 1.0.0 +version: 1.1.0 +test_valid: false \ No newline at end of file diff --git a/mlflow_utils/function.yaml b/mlflow_utils/function.yaml new file mode 100644 index 000000000..d2e2bffec --- /dev/null +++ b/mlflow_utils/function.yaml @@ -0,0 +1,31 @@ +metadata: + name: mlflow-utils + categories: + - genai + - model-serving + - machine-learning + tag: '' +spec: + default_handler: '' + image: mlrun/mlrun + command: '' + base_image_pull: false + default_class: MLFlowModelServer + function_handler: mlflow-utils:handler + disable_auto_mount: false + build: + origin_filename: '' + code_origin: '' + requirements: + - mlflow==2.12.2 + functionSourceCode: aW1wb3J0IHppcGZpbGUKZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGljdAppbXBvcnQgbWxmbG93CmZyb20gbWxydW4uc2VydmluZy52Ml9zZXJ2aW5nIGltcG9ydCBWMk1vZGVsU2VydmVyCmltcG9ydCBwYW5kYXMgYXMgcGQKCgpjbGFzcyBNTEZsb3dNb2RlbFNlcnZlcihWMk1vZGVsU2VydmVyKToKICAgICIiIgogICAgTUxGbG93IHRyYWNrZXIgTW9kZWwgc2VydmluZyBjbGFzcywgaW5oZXJpdGluZyB0aGUgVjJNb2RlbFNlcnZlciBjbGFzcyBmb3IgYmVpbmcgaW5pdGlhbGl6ZWQgYXV0b21hdGljYWxseSBieSB0aGUgbW9kZWwKICAgIHNlcnZlciBhbmQgYmUgYWJsZSB0byBydW4gbG9jYWxseSBhcyBwYXJ0IG9mIGEgbnVjbGlvIHNlcnZlcmxlc3MgZnVuY3Rpb24sIG9yIGFzIHBhcnQgb2YgYSByZWFsLXRpbWUgcGlwZWxpbmUuCiAgICAiIiIKCiAgICBkZWYgbG9hZChzZWxmKToKICAgICAgICAiIiIKICAgICAgICBsb2FkcyBhbiBtb2RlbCB0aGF0IHdhcyBsb2dnZWQgYnkgdGhlIE1MRmxvdyB0cmFja2VyIG1vZGVsCiAgICAgICAgIiIiCiAgICAgICAgIyBVbnppcCB0aGUgbW9kZWwgZGlyIGFuZCB0aGVuIHVzZSBtbGZsb3cncyBsb2FkIGZ1bmN0aW9uCiAgICAgICAgbW9kZWxfZmlsZSwgXyA9IHNlbGYuZ2V0X21vZGVsKCIuemlwIikKICAgICAgICBtb2RlbF9wYXRoX3VuemlwID0gbW9kZWxfZmlsZS5yZXBsYWNlKCIuemlwIiwgIiIpCgogICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKG1vZGVsX2ZpbGUsICJyIikgYXMgemlwX3JlZjoKICAgICAgICAgICAgemlwX3JlZi5leHRyYWN0YWxsKG1vZGVsX3BhdGhfdW56aXApCgogICAgICAgIHNlbGYubW9kZWwgPSBtbGZsb3cucHlmdW5jLmxvYWRfbW9kZWwobW9kZWxfcGF0aF91bnppcCkKCiAgICBkZWYgcHJlZGljdChzZWxmLCByZXF1ZXN0OiBEaWN0W3N0ciwgQW55XSkgLT4gbGlzdDoKICAgICAgICAiIiIKICAgICAgICBJbmZlciB0aGUgaW5wdXRzIHRocm91Z2ggdGhlIG1vZGVsLiBUaGUgaW5mZXJyZWQgZGF0YSB3aWxsCiAgICAgICAgYmUgcmVhZCBmcm9tIHRoZSAiaW5wdXRzIiBrZXkgb2YgdGhlIHJlcXVlc3QuCgogICAgICAgIDpwYXJhbSByZXF1ZXN0OiBUaGUgcmVxdWVzdCB0byB0aGUgbW9kZWwgdXNpbmcgeGdib29zdCdzIHByZWRpY3QuCiAgICAgICAgICAgICAgICBUaGUgaW5wdXQgdG8gdGhlIG1vZGVsIHdpbGwgYmUgcmVhZCBmcm9tIHRoZSAiaW5wdXRzIiBrZXkuCgogICAgICAgIDpyZXR1cm46IFRoZSBtb2RlbCdzIHByZWRpY3Rpb24gb24gdGhlIGdpdmVuIGlucHV0LgogICAgICAgICIiIgoKICAgICAgICAjIEdldCB0aGUgaW5wdXRzIGFuZCBzZXQgdG8gYWNjZXB0ZWQgdHlwZToKICAgICAgICBpbnB1dHMgPSBwZC5EYXRhRnJhbWUocmVxdWVzdFsiaW5wdXRzIl0pCgogICAgICAgICMgUHJlZGljdCB1c2luZyB0aGUgbW9kZWwncyBwcmVkaWN0IGZ1bmN0aW9uOgogICAgICAgIHByZWRpY3Rpb25zID0gc2VsZi5tb2RlbC5wcmVkaWN0KGlucHV0cykKCiAgICAgICAgIyBSZXR1cm4gYXMgbGlzdDoKICAgICAgICByZXR1cm4gcHJlZGljdGlvbnMudG9saXN0KCkKCmZyb20gbWxydW4ucnVudGltZXMgaW1wb3J0IG51Y2xpb19pbml0X2hvb2sKZGVmIGluaXRfY29udGV4dChjb250ZXh0KToKICAgIG51Y2xpb19pbml0X2hvb2soY29udGV4dCwgZ2xvYmFscygpLCAnc2VydmluZ192MicpCgpkZWYgaGFuZGxlcihjb250ZXh0LCBldmVudCk6CiAgICByZXR1cm4gY29udGV4dC5tbHJ1bl9oYW5kbGVyKGNvbnRleHQsIGV2ZW50KQo= + min_replicas: 1 + description: Mlflow model server, and additional utils. + max_replicas: 4 + source: '' + function_kind: serving_v2 + env: + - name: MLRUN_HTTPDB__NUCLIO__EXPLICIT_ACK + value: enabled +verbose: false +kind: serving diff --git a/mlflow_utils/item.yaml b/mlflow_utils/item.yaml new file mode 100644 index 000000000..bda09c5bb --- /dev/null +++ b/mlflow_utils/item.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +categories: +- genai +- model-serving +- machine-learning +description: Mlflow model server, and additional utils. +doc: '' +example: mlflow_utils.ipynb +generationDate: 2024-05-23:12-00 +hidden: false +icon: '' +labels: + author: zeevr +maintainers: [] +marketplaceType: '' +mlrunVersion: 1.7.0-rc17 +name: mlflow_utils +platformVersion: '' +spec: + customFields: + default_class: MLFlowModelServer + filename: mlflow_utils.py + handler: handler + image: mlrun/mlrun + kind: serving + requirements: + - mlflow==2.12.2 + - lightgbm + - xgboost +url: '' +version: 1.0.0 diff --git a/mlflow_utils/mlflow_utils.ipynb b/mlflow_utils/mlflow_utils.ipynb new file mode 100644 index 000000000..165dafc6f --- /dev/null +++ b/mlflow_utils/mlflow_utils.ipynb @@ -0,0 +1,1353 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c478ebb2", + "metadata": {}, + "source": [ + "# MLflow tracker demo\n", + "\n", + "This demo demonstrates how to seamlessly integrate and transfer logs from MLflow to MLRun,
\n", + "creating a unified and powerful platform for your machine learning experiments.\n", + "\n", + "You can combine MLflow and MLRun for a comprehensive solution for managing, tracking, and deploying machine learning models. \n", + "\n", + "This notebook guides you through the process of:\n", + "\n", + "1. Setting up the integration between MLflow and MLRun.\n", + "2. Extracting data, metrics, and artifacts from MLflow experiments.\n", + "3. Creating MLRun artifacts and projects to organize and manage the transferred data.\n", + "4. Leveraging MLRun's capabilities for model deployment and data processing.\n", + "\n", + "By the end of this demo, you will have a understanding of how to establish a smooth flow of data between MLflow and MLRun.\n", + "\n", + "## MLRun installation and configuration\n", + "Before running this notebook make sure the mlrun package is installed (pip install mlrun) and that you have configured the access to MLRun service." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ab49e1f1", + "metadata": {}, + "outputs": [], + "source": [ + "# Install MLRun and scikit-learn if not already installed. Run this only once. Restart the notebook after the install!\n", + "# %pip install mlrun scikit-learn~=1.3.0" + ] + }, + { + "cell_type": "markdown", + "id": "1770566a", + "metadata": {}, + "source": [ + "Then you can import the necessary packages." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0d2dfd8b-65c4-417b-b66e-99f44b015ee7", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "import mlrun\n", + "from mlrun.datastore.targets import ParquetTarget\n", + "import mlrun.feature_store as fstore" + ] + }, + { + "cell_type": "markdown", + "id": "7c4513d4", + "metadata": {}, + "source": [ + "Create a project for this demo:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "43ea863f-02d5-45f2-8143-306ce3bb6c58", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2024-03-27 15:34:40,940 [info] Project loaded successfully: {'project_name': 'mlflow-tracking-example-guy'}\n" + ] + } + ], + "source": [ + "# Create a project for this demo:\n", + "project = mlrun.get_or_create_project(name=\"mlflow-tracking-example\", context=\"./\")" + ] + }, + { + "cell_type": "markdown", + "id": "94413ee8", + "metadata": {}, + "source": [ + "Set all the necessary environment variables for the Databricks cluster:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "22f94f89-acce-442d-93ff-b2d08d3a35a4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "DATABRICKS_HOST=\"add your host\"\n", + "DATABRICKS_TOKEN=\"add your token\"\n", + "DATABRICKS_CLUSTER_ID=\"add your cluster id\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7af310da-fd02-444e-8619-43ba6dcdb0a4", + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"DATABRICKS_HOST\"] = DATABRICKS_HOST\n", + "os.environ[\"DATABRICKS_TOKEN\"] = DATABRICKS_TOKEN\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d98e823c-3a27-4532-9a2d-6398ea4e1778", + "metadata": {}, + "outputs": [], + "source": [ + "# Set the Databricks environment variables\n", + "job_env = {\n", + " \"DATABRICKS_HOST\": DATABRICKS_HOST,\n", + " \"DATABRICKS_CLUSTER_ID\": DATABRICKS_CLUSTER_ID\n", + "}\n", + "secrets = {\"DATABRICKS_TOKEN\": DATABRICKS_TOKEN}\n", + "\n", + "# Set the secrets in the project\n", + "project.set_secrets(secrets)" + ] + }, + { + "cell_type": "markdown", + "id": "37d75366", + "metadata": {}, + "source": [ + "## Create a feature set and ingest data\n", + "\n", + "This is a short example of how to create a feature set about music preferences." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5701c04a-8442-4958-8f4c-265bf4c9b06a", + "metadata": {}, + "outputs": [], + "source": [ + "# create df\n", + "columns = [\"id\", \"name\", \"age\", \"gender\", \"favorite_music_type\"]\n", + "data = [\n", + " (1, \"Alice\", 20, \"f\", \"Pop\"),\n", + " (2, \"Bob\", 30, \"m\", \"Rock\"),\n", + " (3, \"Charlie\", 25, \"m\", \"Pop\"),\n", + " (4, \"David\", 40, \"m\", \"Classical\"),\n", + " (5, \"Eva\", 18, \"f\", \"Pop\"),\n", + " (6, \"Frank\", 32, \"m\", \"Rock\"),\n", + " (7, \"Grace\", 28, \"f\", \"Pop\"),\n", + " (8, \"Henry\", 45, \"m\", \"Classical\"),\n", + " (9, \"Ivy\", 22, \"f\", \"Pop\"),\n", + " (10, \"Jack\", 38, \"m\", \"Classical\"),\n", + " (11, \"Karen\", 27, \"f\", \"Pop\"),\n", + " (12, \"Liam\", 19, \"m\", \"Pop\"),\n", + " (13, \"Mia\", 27, \"f\", \"Rock\"),\n", + " (14, \"Nora\", 31, \"f\", \"Rock\"),\n", + " (15, \"Oliver\", 29, \"m\", \"Pop\"),\n", + " (16, \"Ben\", 38, \"m\", \"Pop\"),\n", + " (17, \"Alicia\", 20, \"f\", \"Pop\"),\n", + " (18, \"Bobby\", 30, \"m\", \"Rock\"),\n", + " (19, \"Charlien\", 22, \"f\", \"Pop\"),\n", + " (20, \"Davide\", 40, \"m\", \"Classical\"),\n", + " (21, \"Evans\", 19, \"m\", \"Pop\"),\n", + " (22, \"Franklin\", 34, \"m\", \"Rock\"),\n", + " (23, \"Grace\", 22, \"f\", \"Pop\"),\n", + " (24, \"Henrik\", 48, \"m\", \"Classical\"),\n", + " (25, \"eevee\", 29, \"f\", \"Pop\"),\n", + " (26, \"Jack\", 75, \"m\", \"Classical\"),\n", + " (27, \"Karen\", 26, \"f\", \"Pop\"),\n", + " (28, \"Lian\", 21, \"f\", \"Pop\"),\n", + " (29, \"kia\", 27, \"f\", \"Rock\"),\n", + " (30, \"Novak\", 30, \"m\", \"Rock\"),\n", + " (31, \"Olivia\", 29, \"f\", \"Pop\"),\n", + " (32, \"Benjamin\", 18, \"m\", \"Pop\")\n", + "]\n", + "df = pd.DataFrame(data, columns=columns)" + ] + }, + { + "cell_type": "markdown", + "id": "4b91576b", + "metadata": {}, + "source": [ + "Transfer the data to DataBricks." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8679b0bb-0da6-4c35-9345-6cf0e83e19b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'dbfs:///demos/mlrun_databricks_demo/1711553684480_33/music.parquet'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Where to save the data in DataBricks\n", + "target_path = f\"dbfs:///demos/mlrun_databricks_demo/music.parquet\"\n", + "output_path = f\"dbfs:///demos/mlrun_databricks_demo/music_output_new.parquet\"\n", + "\n", + "targets = [ParquetTarget(path=target_path)]\n", + "\n", + "# Create a feature set and ingest the data\n", + "fset = fstore.FeatureSet(name=\"music_fset\", entities=[fstore.Entity(\"name\")])\n", + "fstore.ingest(fset, df, targets=targets, overwrite=True)\n", + "\n", + "# Get the target path and check it\n", + "dbfs_data_path = fset.get_target_path()\n", + "dbfs_data_path" + ] + }, + { + "cell_type": "markdown", + "id": "fe173be8-18eb-40ec-9662-6639b0deaedb", + "metadata": {}, + "source": [ + "We can look and see how how our data is logged in the DataBricks cluster:\n", + "(only top 20 rows)" + ] + }, + { + "attachments": { + "f7ad0425-26fe-482c-b97c-c9493b05fbf2.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzcAAAJMCAYAAADHQ1hsAAABU2lDQ1BJQ0MgUHJvZmlsZQAAGJVtkE1LAlEUhh9LEcPIoFW0cJGtNMKEaFkSEoSJfVAtonH8CvwYxpHoH1Q/IILqL0QtomUuWrcpomWuCtpF2KJkOqOVWp3Ly3l473svhwNdKJqWswP5gqHHI9PeldU1r/NJLhy48OBS1JI2FYvNSYTv3lm1O2xWvwlYf81UT8LPgd1ib/U4en+efPib76ieZKqkSv8QjaiaboBtWDi2ZWgWixjQZSjhHYszTT6yONHk00ZmMR4WvhL2qFklKXwr7E+0+Zk2zufK6tcM1vTuVGFpwZpHNMQyEYJMMCV7+T8XauTCFNHYRmeTDFkMvPJGk5MjJTxLAZVR/MJBxkQha7+/99by9D2YTAs8trz1Q7goQ/9by/OdQZ8PKvOaois/27TV7KX0eLDJ7kFwVEzzxQTnBtSvTfP9wDTr+9D9CpfRT9xxYozukjtkAAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADkoYABwAAABIAAABEoAIABAAAAAEAAAM3oAMABAAAAAEAAAJMAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdBIyf/QAAAHWaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjU4ODwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj44MjM8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KyQQwEgAAQABJREFUeAHsnQeYFEXTgOvIOeecMwIiQRERBUVEFMWIip9ZUcAsBkRBEQQxoiBiBDEgKphRMiJIVHLOOedw3N9vH73M7W2649LyVz3P7s5Mx3mnZ6arq7o3Js6IqCgBJaAElIASUAJKQAkoASWgBKKcQKYor79WXwkoASWgBJSAElACSkAJKAElYAmocqMNQQkoASWgBJSAElACSkAJKIGzgoAqN2fFZdSTUAJKQAkoASWgBJSAElACSkCVG20DSkAJKAEloASUgBJQAkpACZwVBFS5OSsuo56EElACSkAJKAEloASUgBJQAqrcaBtQAkpACSgBJaAElIASUAJK4KwgoMrNWXEZ9SSUgBJQAkpACSgBJaAElIASUOVG24ASUAJKQAkoASWgBJSAElACZwUBVW7OisuoJ6EElIASUAJKQAkoASWgBJSAKjfaBpSAElACSkAJKAEloASUgBI4KwiocnNWXEY9CSWgBJSAElACSkAJKAEloARUudE2oASUgBJQAkpACSgBJaAElMBZQUCVm7PiMupJKAEloASUgBJQAkpACSgBJaDKjbYBJaAElIASUAJKQAkoASWgBM4KAqrcnBWXUU9CCSgBJaAElIASUAJKQAkoAVVutA0oASWgBJSAElACSkAJKAElcFYQUOXmrLiMehJKQAkoASWgBJSAElACSkAJZIkEQWxsrJw4cULi4uIiia5xlIASUAJKQAkoASWgBJSAElACaU4gIuUGxSYmJsZ+0ryGWqASUAJKQAkoASWgBJSAElACSiACAhG5panFJgKSGkUJKAEloASUgBJQAkpACSiBdCUQkXKTrjXUwpWAElACSkAJKAEloASUgBJQAhEQUOUmAkgaRQkoASWgBJSAElACSkAJKIGMT0CVmzO4RmvWrJHRo0fL77//HnEuP/30k3zyySf2s3LlypDpDh8+LF9++aXs3bs3ZLxIA0+ePCnuE2maSONt2LDBsog0fkrGiz18SLaOHS2H1sTz3D1jiuya/EfQImIPHZKNIz+S43v32DiH16+VTV99FjS+N+DYrh2y5buvbPqTx455g1Ju21wns3pH8PzChMedjA2aFkabvxkZNDy9A0LV3b9ue/6ZIes/fNd+dk2d4B+cofb3/D1N0qqOSWnPoSDZtv7tKIk7fjxUtERh237+Xvb/OzfR8dQ4kO7tOcy9mOCcTVzat/8nQRyzc2LfHok9dDDhYfM88E9n75VQz4mEOSTYC5aW44fXrZFjO7YliM8Oz8tDq1aY+gV+H1HnQ6tN+P59idKGOxBnFi06smGd/bDtL9Tr6JZNcmTjegkUzrM4WL398wq5D0+uqZ+cPHJYDq9dJSnyzE9Km/GrR3J3DyxdJDv++CW5yf/fpYPV3tl/2/M+uHyJ7V/EmbnnKtFDIGqUm5Mn42TxX/vk42dWy1v3LpNV8w6kK+WRI0dKp06dZMqUKbJ48eKI67Jr1y7Ztm2bDB06VMIpN/v375e33npLSJMScvfdd0vz5s3tp3Xr1vL666/LsmXLkpT1sGHDZObMmYnSoOiRX3oIL9tlvZ40D6P4em38fLisHfJm0Kqc2L9XVg3sI8d3bLdxDq1YKiv79Qoa3wXsmz9H/m7dRLb+8I0pa4Z5CSZ+Cbu4yf3l5Tnj8qay4fNhAbM4uHKZTGlUVfYvnB8wfIvpjP7VooGg8AWSg0sXy+o3Xw0UlO7HwtXdv4KxBw7I0W1bZPPokbJz4nj/4Ay1v+PPX2TbuDFJqtP2X8bKplGfJikNkSNtz+EyPmo6kstfflZiTccuKbLx8w9l94ypSUmS7Ljp2Z7970U63Tsn/Cbz7ugoUxpWlj0zpyc4r+kt6svURtUSfejUIzzH/r3/VvmrZUOZ3vwcWd67h7gO1WZzXwdKu+zFp3xl0Pnn3ibtgrtv8h3339j4xcc2r/UfvZcgiAEiyvinw6Xy9+Xny9r3BvnC593eQWZc0lBmX3+5qd+5svTZR4QOP8J5/9f1Tlvu7I4m/OIG9nl88thRX/pQdePendq4msy6uqX9/N3mfNk9bZIv7c6Jv9v6zLyyucxqf7EQvmfWX75wnvXTzq/pq/f8O2+QI5s2+MIj3UApm3FZE/t89SpQm778VKY1qyP/XNvaluN/T/IsXvJ0V3vN1w19K2Rx/m0mZOQUDNxj7sf1wwenYI7RnxXK+LKXng7YVriPNn89wp7k7umTbXsO9k6NfhJn5xlEtFpaRjj1v77bKXN/2y0V6+WWfTuOm1Gs9K3Vjz/+KI8++qhcd911SarIrbfeauP/9ttvSUqXUpHbtGkjKDlr16611qMuXbrIN998I/nz54+oiAkTJkjevHmlcePGEcU/myLtGP+TFG55mdQakLBTkJLnuO3Hb02n4YiUvPbmgNluGP6eFGxyoeStUz9ROIrRmvdel7J3PSiZc+ZKFJ6RDySn7oUvbiV8lhol52yU/YsWCFaYUjfdni6nl7tqDWn41S+SJXeedCk/oxfqfy9uHDFc1n3wthRre7W1XFnriOckGowcm2BAZM27A62lI0eZcjYWHSqU9UY/TJT9/5kO8zPdJFeV6lL65juk6GVXSoHzmvhyO7p9m/x7XyfT/lvHHzMWBzr/Bc+/SHJVriYng4wyY+laO/jUIJTH6oMVlAGi0p3ulJLX3SyZcuSU47t2+sore2cXyV21umTJl98OrPzX5Q7JWaGSlLvnYWtlzlWhslR44FHJXqqM7DV5LX6yi3Be5e5+yIaHqlvO8hWk3vCvJFfFKtbqs+bdAVZZumDKAsmcK7dR8I5LpUeekQKNzjeDNoftwBRK4AWT50tm0zYzZc8udQd/Krmr1zKWn7W2bM7lnKFJs1CvGvSKffb6TtpsoPCs7P+iVOz2tJS45gbZ/ts4WdG3p+Sr31Dy1KhtrzPKLGG2rrGhR/f924y3rNTcLn719VLk0japWUTU5X3y6FHZ+v3XUup60ycz7Vbl7CIQNcpNneb5pUm7wnJ4/wlZOTf9OjPPP/+8rFu3TrBUfPTRR/LDDz9IhQoV5MUXX7QtY8mSJdbasnz5cilcuLDceOON0qFDh4haDavSYRFC2ThuXEEuu+yyBOlwKRszZox8/fXXsn79eqlXr55VsKpUqeKL991338l///0nNWrUsPns3LnTKjPUA8mTJ4+ULFnSfth/7LHHrAXp3HPPlX79+smMGTOsZYlzuvbaa+2HZcAHDhwoCxYssOf92WefCe51yKBBg6RQoUJ2m69Ro0ZZV7qCBQtK586dpUWLFr6wdNswXDd8+oFs+vITOWm4FmvTPmBVVg/qK5u//UKyFS0m5e/tJkXbXGXjYUVh1B2XCGTOTVfa33rDvzYvtFz2Bbj2/UGya8oEGydv7XOk+stvSM6y5W08vhjFXfX6y0JY1ef7+o57N+jg0zkqe+cD9qXtDWMbl5Btv/xgOwL+Yexv+2mMfTnbh/WpCIxOrRzQW3b8/pNkL1HSlF8vQdLYgwdkzeCBdsT5hLEUFr7oUqn0RE/JWqCgrBv2ju2o7F+4QPI1OE+y5s0vu2dOsx2NYm2vsfkcWPSvPS/cHuBW+pb/ScmOnXxlMCq7Zcwo65KVtVBhKXXDbfEdIl+M+A3/uh/buV3oQNFhwC2g1I23y5bvv5J85zSQqs/1lawFT7c5v6x8u4y+zu3UXsr+7wHD5jvZO2em5ChdVuq+95nEZM1qO4fVXxpoOoNVbRpGows0vVCKX3WddUngehW74mrjgjjclFfYdtRQbiMRlJIVxuoBuzw160imLFltx9Cl3fzNCNMeP7XXNHvxEkZpvlwqPPS4VUoZQaejTHvj+rn2VrHrU1Lwgovk2PatsrzPs/Z8CM9bt4FUfPgJyd/wdOeXcoK1Z8I2j/5C9i+YY+pW17hkfmry3CblH3jEXj9GKOk4O6n7/gjbzt0+v7jYrRv2ru3c2et6Y2fDp4s3it3GtY2OZm7TSaf+SKRtwkb2+0rv9uyqE+heRAFBET1h3LcCuX56nwfcd7i+VHmmj83y5NEj1t21ytMv2ja6c9J4e3yLeR6h3GTJm89+XPnbzf0M90IXtow/ZJ7R5337u+QsX0lWvPqCHFiy0EX1/XI/LOv5uFR69Blzzye0stPeuKcrPfqsdX+LyZRZshcv6UvLIIKTgo2bmbAScnz3LnsoJksWm86F04lGMT60ann8oTB1Q6lxgvJUqNnFsv3XcQIj7v8irdq6YPuL8kX7O7p1i+SqVEXK3nG/L5znVtHW7exz3Hcwgg3cmFHKKpj7yGvF3zUp3r251A23WoWvxLU3GetYP9n++49WuYF30/Gz7PPIa00KVKR/m4nkGYeCyzV2z1vcqbH0VX7yBVsEyleodw/eBqsG9rZx4VztxdcSVA1r4dr33zD35G+WZ756DaXaC6/adpQgYoAdLEGHVi6XEwf222cR17zKM73tvU70UM84wkM9n3m+YxFb+VpvU8YyKXLJ5YIyUvD85oKihssYgwH1P423hvNcWHDPzVKtV3/b9hhYwPLCM/bw2tWSv0Ejyyx3tZoUbd8LzhKz+KmHbDvLXrK01B401IbrV/QTyBItp5C/aNYMUdWHH37YKh533HGH3HbbbXLhhRdKVtNRQg4ePCiE169fX9544w35559/ZMCAAVaRaNq0adj64yI2ePBg6dq1q1SrVs3m4U307bffWmXimWeekerVq1sl54UXXpARI0b4ou3evVt+/vln2bhxo9x7771StGhRq6z4IpzaQJGaO3eu3StfPr4TXqRIEXn55ZetsjJnzhy7XaJECWnWrJlVVI6ah0v37t2lVatW0q5dO5vW3+KzcOFCm4469OnTRy666KKw/4805sc/5ZcJCV04XH3vvrWDNKpf2+0G/OWFWP3FAZKnzjk2vPStdyaYJ0DHe/Vb/ewLmNG2la+9FDCfg6uXmxHAT8yL6ydZ8mx325Ek7+JXdZQiF18mK/r3kiy58thOKBlkzpHD5rPRKD+4o9R+80PJmr+g7FswW2IyZUpQBi8AOulZ8uRNcNy7QwccBaMkI0kBBDcSRi95AfkL8yJwiSj7v/sTKEZbzMjUril/2pcacZb3eSZB0qU9HzOjxyttJ4u6rXrjVatgVTYKztGtm23nuvZbH1o3FxSXsnc+KIxw8rKl87HAdILzn9vYckOBY1QzR8kyUrBZCzm+Z7cseuw+qfDgozb/E3t327ISVMDsBKo7x+BV/aUB1sWJc6//8TfmujxiOzYoIGHFDAaQB+dc6ibT+b7nITloXBDjMPuajh4dQK/LFS4j7uXH9SI8R5nyUrP/u7LVKLdLTceQ0WLToMMWvfqNV0zeRwR2+4xSRWeyaOt4pZjEMZkzS6XHnrOj1bx8aW+ZsmWzI8SFW7SyL2MUXa5B1edeseVlLVTE/qKg0w4YTY7JnMkqKgvuvUWa/j7TdnhtJPMVrD0TftwoHVvHfWstQ1yfbEVL2LIIy5w9h1Qz3A8uWWTrFec3Gr137ixZ2O1uq3BW6WHuJcN59/RJJE0gKHj/dels20eFBx+zYZG2iQQZeXbSsz17qiGB7sXsJUp5o4TcZl4SUvTy+OfosZ077H6uSlXt3EFcwkp2vCWgksS9QaeNgQIUCyd0tEPJho/fj++gX31DIuWGDiT3MW5ndMLpQDKgkMdYQ5ygqNPhxGWM5xRxAglKuR2Q8Fgcw9UN9zuef4fMvBbcfik7W9HigbKXXcZNCMUuZ/mKicJhs/vvqXaQJlFgkAMoacuMC2CNvm/J0c0bE8TKcsqjgXsZaxb505F28Xg/RCr+bSaSZxzXIm+t+Pca5TCwwdwiJ+HePSgcKDRbxpi5u6fmkLi0zOvEne6wsXZVeOgJ+15BwePZF4kc3bbVDraVueM++15YZ9wDV7zyvG/wLdQzzuYf6vlsIizpYSyXxgrJMxQLCwollkyEOtIendB+eF47V8nNX40w7/kXjaLWzyqhG0d9Yp9lDb/+1Sap2e8d837aJfM6X2f7BQy+eO8lnq0oyggDStkKFzXv+5x2X7+ig8DpJ2N01Dfda1msWDFfHbDMlC5d2rc/f/58OWQmq993332CNaV27doybtw4wZUrEuWGuSwVKlSw1h4yveWWW+Sll053xFFizjnnHMmZM6d1K3P5//vvv1K3bl1fPdh49tlnpUyZxKbWyZMny6ZNm+w8IRQhXNQ4D+Suu+4SjjGHKJvpaOUyVolVq1ZZ5QbFB+F4gQIFEpy3DTj1RX4oS1iIUMZwf+OcQknL5o2kwTk1AkYpViT8CD0uWMXanbaOFWzaPEFeu/+abEf4cLlAytx+jyx9Pr6z5Y1Y4f5HJE+tuuZhWMeOnOOqwYhR1vwF7AfFhpedcyNxaePMfDCEl1XWwkUSjTQSxkum8lO9JFuR0+2H405Iu27om2YU8r6AChDuJLz8zxk2yiVJ8BtMMdptrElYHzgPZI+xvGz/7Ue7jR88o+glOtxkXtiH7AfLCC9CrAgIVgFGvRhBLdD4AslWrISsMpYgOrR0cnnRE5fzIy6dz+1//GyVG6fg4SJDxx3FwSkPNvNTX8HqTnABM1KHKwqdJfIn/fFTHUFvHqG2GUmu0CX+ejt3PreYRKh0hJV/oLvgcsPI+eavP7cdT+9Ic6D0jMLDtdbA9y07+DEvyCsw50XMC5rOFXkyfwShw2Q/pt0dNyOr/u0th3GhKH3rXVYxOWgUd6xRCMoEnT4nwdqzC+eXjo/XomDDjGLOOceaUeFAssUsSMHIPQqwU/SwTnlln1lQAGspSjDWCBcv0jbhzcu7nZ7t2dUj3L3o4gX9NZ1KRuCxcLrBDjcJP8ZY+LCuVOjyuA3DAkR7ymQUTic7J/1uXcaKt+/oDoX9ZYAHBfu8McYS4TfwQmIUEj7Vew+09zJxsTy6kXHiHDaDIDv//NXOd8Gakj2A8sFo+JIeXa3ynZT64Xq201hPDhhXTNxyUd4DyY7xP9v7sO6QEXaAwD/OKjOogEWkzrsf+wcF3cfSVbhFa+P219ROHPdG5JmHrHm7vxRvf72xKI21+yf2Bb43bGCAr1Bt5kyeceHePXgW8Gyhc+4vKJIoggwgOcuQe5b4xw22z3uBZyuWvrJ3d7HWE6xBPL9CPeO8+QV6PvMsoz3WMpaU3EbBQfnAoh2pbPh0iFXWOP9Da1ZJvrr1rYKEJStfvXPtMxWXRgQLpf8z1uvCx7uNj0p0EVDlJgWv144d8aNvFSueHlGqVauWbN26NaJS5s2bZ93JXOTKlSu7TTPQHGstMFhisKo4weUNdzWvlC1bNqBiQxzCsLzcfPPNUqdOHauscBw3uG7dulmXO9zdnMKDtSYp4qxAuKUhWLPCSRYzip0je7aA0TIHeBEHjBjiIJ1w3G+cBHtQ4eKA4LJEHFZ8ckqBSxvoF5eFo2YC69zb4l216LTwwPeO6tGBzFn2tkDJ7TFGcq3VxozGBpL1Zq4Nbkd0lP0FxWjtkDekTGejGJlOuBNM87y8nHsdx/FL9yo3HGN1Ju+onrPKEIY/u/01Viq44F6F4FLAKCLCaLOTvHXqybEtm+0u509nCbcHrErwxTWpUPNLXHSrEAaqu4tAeShGjJoi7J88fswFR/Rb6MKLI4oXKBKdfAS3NCQ2glFNFDEkIZeEc6SwJOI2kc8obDnKVbCTyekoRCK4pcz7X0frwkZ7cCOObtTS5RGuPTPynUixcYlD/B5ev8bO7XAKS6CojO7TUdr/3zx7vTJli29HkbSJQPlxLL3bs6tXqHvRxQn1i/sS1josBU6ymnsFwdWGts4zZZNxXUS8ig37G0d+bOf+ed3GOB5KlpuJ03TYWAWNDwrEYdN5PLhssR0wQFnNWa6ir5NbxijPWAPpYLoOLwNIfBjQmN3xMvvMqdLDDHScEtrf4scesM+Gmq8Nth1eFxbul3N2cxlxZ1r0+APS+McpxpX2tDWMNoULEZ1xFBF/wdq19YfR1nIQqDPvH5998mQuJQMRuK2ihCD2nWGelTxPcT/e+sPXpk73W6WrkHHdZcArKRKqzZzJMy6Sd0+wejK4heSrf16wKGGPY9lDsUHc8465ggwwRvqMC/R8xmXW5nnq+ct1cO3QBoT44t2Ey2K2YiWNIj7DF5P3sv88OF+gbpx1BFS5ScFLikUDwSWsXLlydnvFihUJFBZ70Hxh2WCpZ6+gCP3111++Q8yrcZLZKAAoDCgPjz8eP6ruwvx/8+U73cH1D0Pxuvzyy/0Py/jx4wXLE3OIUGyoG8tc+0sW4waBopWS8vMf0+S3iafP25v33Z06SJOGpxUTb1ik28wz2T1toi86HYtActh0Ghkh4uFIB5W5GpEI7hPVXx4kVY0JfI9RJhZ2v8eOlnkngqMI7F/4rzF1F0j0MsGkjt90mc73JlBOXNksQbrtxzFBJ8gyDwfFiBedV3jp4MLmPd/DZhTLSdZTo3mFL2qVwPLlwv1/Y2Iy+UbgCXMdfibxOrcTuHkVSRQlPnSSUHKWPNNdzv/TuO2dcuUMVnf/sn37mWJ8m24jk1G8Yg8dcLuJfrOYuUL+gsKEOGXFuYiIsXKdqbiX/BEz+pjTKC4I7nB5qsW7+DAqueGToVL7jQ98ih6rWyWaBB4TY9riCZve+8VcqOzGgtbgc+PaZOKgmLI8ub+Ea89Z8iWtg+byz27cDun8hRKso6Vvu1vm3NjWuoFWffZlX/RwbcIX0W8jI7TncPeiX5UD7rLsPHPvvC5fWHyRffNnS6Oxk6x1hXvJfyAGCwxxkmKZIF+s2yzTvKLv8+xaBYV5eFhgmaeA+6VXicKChGBR8Zd4K24z6+4qp5QbFJtFjz9olovebea0fRrwOeafT7B9Z3lH2aCtICghrMhGXYtdedpK7/Lg2YI1DMu2PzMXJ9AvliYGAVjEAMFtElnZ7wVbFu8ORvr5MITDu2HWVRcZt7nONl4kX0luM55nHKy9bmK4qXklknePN7532ymA1v32lPXXG842bRDLOsJ8JKfI2APmi/Zo/7bAPId4DyBYWiJ+xpn4gZ7PuKMhKGAoNVgveYc4cS5itDsUYwZcnOAOhwU7V4VKYt1mXYD/76mB00Bt3D+q7kcfAdNbiQ5hKejt647Kjo3xo7Z7th+z+8ePJrRapOfZYAlBmFTPRH4UBhYeCLSyGPNY+H8c/h/G/Y8N8XAJmzp1qmzevFm+/950Xjxy1VVXycSJE2XatGlyzEw+J93YsWOtK5wnWrI2ixeP92/G+kS+LJYQSLDquPodMaN/zN05U7m+fWv54PWeAT9nqthQN16WuP8wSZclQllyOJBs+uJj69LgloAM5hrhn5bJqDzMM5kOOx1bXkgnjye0eO37d56df7LmnfiXqDcPZ7XBhz6QrP/IuDdhtTEff7GKkVkhjc6k11Lk4hW66BLrq8xLCEsUE0ed5DQvDZQfRogJY1SL88C/ORLJa1zYkA1m6V9cQZgEzMu3YNML7XEUOpjzAuIljDsV4jrs4epuI0fwVcCsHsdiDswHYIWnSEbn6OzRwWT1I9zCmMOQUsL1Z0W7zd+OtCOIcPEqmG4xBF7csOH6B1IWcKXYN/cf24GgE0bHCuFlzz71puNE+wgkyW3P8EPZY24PwjYfOsII80Q4HxbawOqHG4rrANkI5gsG2cwcIeYrcb85l5JwbcKlD/abnu2ZOoW8F831of0fOjV4wrwM9rnGTnj+MD+POWBewbLFHBY6ZXTOuF9ZCtzftQurBlYW5y7lzQOLDOWdMB302IP77babG0Knn/kG7kM5uMCiLCAoEUzS5z/CuJcph/mJDFowCs4CFNSdNsfSzFzPYm3jlQzu40WP3m+VLuaRHdu+3U4093ZGQ9WNtrNv3j+2HdGZdsv4s7gHQp1QbHArZv4Jk9j5cA8gzE3jg/sjVhAXbjvdNkbwryKtrvAxgY1b9OLcUT/5Fl/hP6p4rsBhZf9e9td7XbCkwp1O8jHz3mfbKUmUHKrNBK9ZfAjzoOBN2YH+Kyvcu4dnhr1/zSCJb/vUfc27CkVwwydD7LUjnOcQ/Jwwvwf3Uj4Sm7ivhRWPtsH13fTV57bN8KyP9BnnyvH/zWPcj2mjPJd5xmz68rMEUfKYZzey7afvrQfBppEf2333VeKaG+2CHcw3ZUlyrseW7760Sr2Lg/UN6zVzbGnX3vvUxdHf6CUQNZabQ3tj5Ys+8SMD4J42eodMkx1ydbfSUr52ZO4cqX2ZWDWsb9++0rt3b59iwlLRuIH5y0033SQffPCBnV/DPB5WQcNy07ZtW3nqqadsdDdPh9XKkDvuuMMqMk8++aTd54u5PS1btvTts4GVJ6nSoEEDueKKK+TOO++0SZs0aWLz9s+nffv28uqrr0rHjh1tEKuz4Srn6ugfPyPs4yrFBPRFj95nq8NkdyunuLo68gL5+7J4dwcmWfNwTSCeETXv8d3m5bfwkXt9h1iNzV9R8fHxc7OjY8CLOZhywsuFjgQ+5oGEDpC12pgJuIGE82aEdu4tV9lgOt3Mh7Bi6lKj75uy/MWn7X9zuPSMjNLRcvMj3HH/XzqvuHMwf8kpjEwELnp5fFm8+JY+96jvhcKLtHrv130uZiHr7ndt/Mv27rOaEEtn/3v/bbYsRr6tIhUmD9z4Vrza01o9WELXuj2cSuO7Xt6CkrDNXJ1/H+wsM9s2sx19FCk51X6YZ8FqR6vf6m9XtqJc5jA4Nz9XDHUq0KSZ79rhxsSKXCw7S0dnRuvGNirzb5hX5i8h27M5z2DXd+3gQaZD9p4vO1dODbMCIC6OuGpWevx5O/eKFdkQ2pkbZbcHTnHEba7iw08KK6bZVePMAECoNmHThvhKz/Yc7l5kgjIT8p2woh2CYuHcSRk4QPEL5O7KJGYsqzPbxnfquQ+9Kx+iRHKfVexuFpI45QrkyuKXa+b9DxbqwgBN3fc/90Y7ve25P4q3u9YODrBCIUIdnZtYnHEDXf/hO2ay+HM2jOciyhmWZgRrDe6vCCtWOWHghCWekVB1YyEP7xxInlG1Xh9ilWPS0kFFWNGNjxOWf+b+cIszsOCHV5pN+8/3rPEeT+o2dXcroaFY4qbmOu/kheLlBi9YGZIP74+yd3Wxk/+DPr89/IPVqegV7e29zXOEsnGJc4NDpAn37plv3Fe9E++nNo2fO+Jc/rjG3Jv8NxDCdU8wr9NbR++2jS1WOcCtGIugt81E9IwLkN+pbK3lkpX7eFZwzVFCOH8n5M8y4/wPF8LiG15h5Uas+XhROOH9U+TSK9yu/eU6sSomZfAcZhl2lbODQIwZeQ879M4IfSa/TtnZcfqpcxZufgxuZDlOraiVlJL2mcmKXBb/lchcHsyPYR4P4fznTErKAfOfIdQ/WNkpWVZa58UIEBMw3Soogcqng5k5d17zoM4VKDjoMSbkM+KZwywn6eZABI3sCcDdjJfy+RPmBLS82D8ZMwpOghfOqfSMtPGHe3RMyt3b1ZNr4k06ullNe3FzV/xjsPLZMTM6md0s5xwsjn8at089sELQ6Un0/zpmtB8uuE95F1NISt1dOanxi3JJ58y5aKRkGZaLWe2MuRGMxvsLZbNKlvel7R8n1D5c+Q+aUNcrue05VLkuDAvPUTO/ik5NqHvKxff9BmkTvvAINtKjPYe6FyOocsRRWD47U9ZsZ+TaFXFhfhEZvbZt0sx18W+zjG4zYBHJwIFftmF3GV0/Zv5UmU5rIAt02AxSM4J5F/P/QwwGYJVIiqRUm6G9Zy9myg6gECT33eM9Dxa0QHm2zyrPCnzeOP7bLMTAqos1X31bjpjnf6Dn3Jk+42iP/KcTXgbzjALGQJZ3yXnqTTvlGRRI+HsFVpzESpPh2lWgCuuxFCOgyk2KodSMlEDSCaAU0Am2VoMAyXFxoOOYyIpk4uJuwARYJoWH6uAGyDbdD0Vz3ZkfY33Ng1BsNM4sVZvECcdBsvp/dRh3pI3GxTGYYGX0/a9LsEipeDzUvZiKxWrWySTAXJWZVzQLmpqRfGdZChrpDAPO5jbjU26M62laCH+W6q/cpEW5WkZ0ElDlJjqvm9ZaCSiBdCKAm4fz9w9Uhfxm9aGkWO8C5fH/8RjzvRhlDSZMVPa6AwWLp8eVAAQYNAo0l83RyWz+UsH/T41dmP6GJ4D7HS7RuFSnheACy181uP+GSosytYzoJaDKTfReO625ElACSkAJKAEloASUgBJQAh4CmTzbuqkElIASUAJKQAkoASWgBJSAEohaAqrcRO2l04orASWgBJSAElACSkAJKAEl4CWgyo2Xhm4rASWgBJSAElACSkAJKAElELUEVLmJ2kunFVcCSkAJKAEloASUgBJQAkrAS0CVGy8N3VYCSkAJKAEloASUgBJQAkogagmochO1l04rrgRSlsDGLXGya0/K5qm5KYGMRmD1+jjZdyCj1UrrowSUgBJQAilFIKqUm+PmH703bd4qu/fsTanzP+N8Zs2aJdOnT0+Uz0nzL9xz586VL7/8UubPn58o/Gw7cNz8oSTnum3btgx/aocPH7Z13bs347Sj9IZ24JBIixuPy9JVcQGrkpz2fMLcr5988onvc+BA6B7l2rVr5bvvvgtYfnIOUmf3SU76UGm4t6dMmRIqSrLDjhw9IYM/mCZbt+1Pdh5JSbhsxXb58NO/k5Ik2XHNX49IsE+yM01iwnc/jZXeb51IYiqNrgSUgBJQAtFCIEu0VPTLb8fKpKmnX8BFixSWLvfcJsWKFknXU5g4caLs27dPLrjgggT1eOKJJ2Tp0qVSq1YtyZs3r9SrVy9B+Nm2c+TIEXnrrbekWrVqUqxYsQx9evvNH49R18aNG0v+/PkzdF1TonKHD+2XkYN7SPtOT0jRkuUDZvn5mFgpVzpGzj83JmB4ctpzXFycVXa5P/7880+5/PLLJU+ePAHz5+Dy5cvl3XfflWuuuSZonEgDUKQoz0nZsmXtfvv27aVw4cLucNjfYcOGyTnnnGPbijfy1KlTZd26ddK8eXPv4RTZPnTomDz9wjhp2qi8FC+WN0XyDJXJgoWb5Pk+P8tdtzcJFe2Mw6b/JdL+2sDKM5kv+TdGiqTB4/zOGzLLJbccl+53xknpEoHb+xmfrGagBJSAElAC6UYgapSbrFmzyn3/6yQVK5SVLVu3y3sffibvfzhCej7dLd3gBSt4165dMmPGDPnoo49sZz9YPD2uBNKCwPFjR2Tx3MlyyVV3BVRujh4TeefTk/JCt8wBq5Pc9sw9i1KERQblJi0FxQp59NFHpUmTJrJkyRJ54403ZObMmfLee+9FXJUJEybYwQkUYZUzI9CgvsiMqfHKxN8zRbo9Gidjvo6RkiXj8y1Y8MzyjzR1raoxcmGjTDL0i5Py4iOB23ykeWk8JaAElIASyHgEoka5ufaqNj56+fLmkfp1a8usOWnv7rVhwwbp37+/LF68WKpXry5ZsmSxnR8qx2hxly5d5NAh4+NjpGfPnpI9e3Zp27at3HjjjfZYan99/vnnMnnyZFm4cKEwWv3QQw/JhRdeaIt98sknpUyZMjJ79mzZtGmTtTY9/vjjvvr369fPKmW4llWoUEGuvfZa+4mJie+Q0EHs27ev3HvvvdbViDIuueQS6d27d6LTWrRokQwYMEBuvfVWGydRhAAHyLtixYqyfv16mTRpko3Rp08fqV+/vhw8eFCGDh1qzw3OnFP37t19lpdQdaejO3LkSPnmm28E97nLLrssQOnBD40dMUA2rV0qWEA2rVsqhYqUlk4P9ZOylWrbRH98P0ym/PK5HNi3S7LnyCU1G1wk19/9gtnO7ct0+ICHpVT5arJlwypZMn+qPX7HI4OkRr0LZeXif+TLIc/Lnl1bpFqdpnL82FGpde7F0qLt7bJ43hQZPbyPPPfWrzYNdRjw1LXSufsgKVe5jnW7+uO7oTLl15Fy6MAeq7zcdP/LUr7KOTZ+74db2/zY+XBAF8mWLafkL1RcuvUeacP5WroyTnbsipOmDeKvswuIpD3TJrCCYXXBIkI779Chg8si5C/3yZtvvmkVH6x9WDm9gkvZmDFj5Ouvv7ZtAusnykqVKlV80YK1mcqVK9s41Ik2z4c6cn8cO3bMcMgmodrMwIEDZcGCBbJmzRr57LPP5KeffrL5DRo0SAoVKmS3jx49au8HFLeGDRvK3XffnaBuvkomc+P3CcvkocdGGzfcw3JX5yby2MMXi7sXJ0xZIX36/y6zZq+TGtWKSY/HWkmHq+rakjZv3Sddnxgj02asNs+ko9KoYTnp1eNyaX5BJRvOsad6jpMx4/6VMqXyS8MGZRPUcP/+o/JSv99k3M8LZe/+I3JF65rSv3c7KVzodHumXjWqFZeVq3fIDz8ttOk/HXqLNGtaMUFe3p2cOUWqxF8W2bgxPqRCBZGyZbyxROaZxzqKz7NPx8jrb8bJP7NFrr7KtN+hMTJ4iMimjXHS56X4tjrDGPOfeT5O/vwtft8YZeWVfnHyo7lc+8z25eZWf6V3jKl7wjJaNI6RUWNVuUlIRfeUgBJQAmcHgahRbry48eVfsmyFVK0c/EXqjZ+S2++8847ggkXHfd68ebbDTQcfyZUrl7zyyiu2I/bYY49Jjx49jJtFkZCuOK5uJ0/GyQNPvux2E/wWKpBP+j7XNcGxQDtuVJqOGR1AlASvrF69WqZNmybPPPOM7YjSuaPjeOedd9po1PXll1+2nbc5c+bY7RIlSkizZs1sOHNVVqxYYUfAb7rpJtvRRMHxF6xWnD+j9o6Nf5xA+9R33Lhx0qZNG3nxxRct58yZM9uoKFB0NMkT1yauA5YxFBwkVN2XLVsmgwcPlq5du1pLGiP4SZHdOzbL8oV/S+MWHeTKmx+RHz7rLyPeeUqefn2czSaTqeN1dz4npcpVN8rLCvns7SeN0ptNbrq/j6+Y7VvWyKK5k6Ra3Qvk9q4D5OiRQ5I5c/zt99HrXaVoCaNM/u85mfrrCKvslCpfw6Y9fHCf7Nm52ZdPrGn7e3dtlWMmPTL+uyHy2+j3pP2tT0j5qvXM/lD5aGBX6fXeRBt+79NDjNK1U97rc5dcc3sPq5BlyZLVhrmvpavjrRylisd3EN3xcO0ZhfPhhx+2yidM//nnH3tflDRD8U2bNnXZBP3lWtMen3vuOat00h698u233wrKBO2VgQTa6gsvvCAjRozwRQvVZnyRzAZKLcoK9wUWJSRUm+ncubOgvNC+WrVqJe3atbNpvG6MDBLcddddVkF7++23bb2oX0rJl6PnysC+V8u69bvl4ce/lauuqC3VqxaTeQs2ytU3fmiVnTf7d5BJRtHpfN9Iadq4h5Qsns8os7HSolll6f3cFaaNxcjwz2bKlR0/kJULnpWiRfLIZ6P+kV/GL5H337hejh0/YRUhb53v7fqVLF2+Td7od43ky5dDnuv9s/Qb9KdRcIyGcUpWrNohn37xj9zUsYEMH3yTHD583LT5TPLyG8Nk3YYtLlqC39deeETy5T2tICUI9OyYZiULF4n0MErLA/fGyKvmsYiCg2zZHGcUqvhtvo3Hoyz49/T+g13jxNzuMrB/jOTNJ9LrpTgZOCjOKjinY4lUKh8jK9fFyeEjIjlzeEN0WwkoASWgBKKdQFQqN5+MHG2sI4el883XpSl/OjtMIma0mFFkPt4J0JkyZZLSpUvbkWEqRicv0vknmTLFSI9u8UqG/0llO9UZ8z8ebJ+OHApAgwYNEkVhjsCVV15pj1999dXWEuKUGzpqu3fvtlYpRrbp3K5atcqn3LjM/ve//1lrFPs1asR3wl3YDz/8IL/99ptVTugUJlUKGt8UOrtuhJr0W7dutdyZL4GCxadOnToyduxYuf/++yVHjhy2kxms7ih9WKKc9eyWW26Rl156KUlVQ4HpaKwxXGMUnGH9H5SD+/dI7rwFpGW7/1llZZWxwOzbs0MKFS0lG9csTpR/lqzZ5Z6n3kt4bhtXypFDB4xi86xVPMpVri0977soUdpgByb9+IkUKV7OWom2rF8ulWo0tC5oKGNVazeR4qUrSc7ceW3ywsXK2H3/vNZtipPyZr5N5kwJQ8K1ZxbKwPpy3333WaWhdu3aVjnFlSsS5YaFOLCitWjRwhbM4hxe9zWUGOa75DRD/ri2ufz//fdfqVu3rq+ygdoM86oQFGDa5N9//23bM0qya1uh2juKD8J9UKBAAXtf2wOeL8q944474tuEuaewQqWkdHvwImnZvIrN8qVXf5O/Zq61ys1Hn88093d2qVO7pFVCSpTIZ5WWUd/MlUe6tJByZQvKQ/ddKKvW7JQF/22WiuXjzRbso9z8Mn6p3HBtfWnftrbNe+LkFfLt2HgNYcPGPfLjr4vkjk6N5ICZ+8OnsbH8fDJylrX+5MqVzXeK5DXkzet9PAkoX66DHDHPyUCSJ7cx3SRBHn8kRm4+ZfCuXy98wg0bRX7+ReS2TsaKbhQkPo0ainxmjJTP9WDw6XQeJYvGK/Kbt8dJpbIJlfrTsXRLCSgBJaAEopFA1Ck3X3zzg8xdsFAe73qv6XSYobk0lJUrV9rScJ1y4u9K444n5zdH9tMdB2/6rMb1LRLBNea2226zHXc6nXQwcUvz1pcRcCeVKlWSDz74wCoLuNd169bNTpJGaXOTrlHo/CXU/AMmWqMU0QFNjnKDpcd1Pl25KDcIE9NZpcoJE8axHmDdCVV3LGxeJcy5LLl8IvlFMaCzj5Q+ZVVZteQfqduolXw5tKfMnjpWipeqZNzCKlhlJVv2xB252g1PuxW5Mpf/93eCPHPlKSA5cgWfdO/S8XvSLDuFBSh33lhZumCqL+icxq0EC0+kgmKz1rj6nDArWWWJN5RFlHTHjh02nrd9cT+46xUqE1zOUGZat27ti8ZiFE65iTXnhntk0aJFBSuiE1zeSOuVQG3GhdOWUYpQgrHauGvIAECoNuPSh/qtWbOmLz8UHeeOGipNUsLq1Czhi168aB7Zs/ew3UdJyZ83h0z767QJ4+or6/jcxlab8Fbt35fcubPJBU0qmGsa324PGetKbOxJmTB5uVzf4bS2cE6dUj7lZr1RbhBc4bz533RdA+PmddTc26efUbjB+d+r2bJhFYuzeST+SpoS0TJe502cTZAjKDfIHnMK0/86XYfrzRgYuq5Xudm0NT68VLGk1Sm+BP1WAkpACSiBjEwgsl5zBjmDUaPHGj/yf+TRh+6WCuX8HLXToI6M/iMbjcM481kQFJ6qVava7TP5osP2/KuDA2aRP18eGdDr0YBh3oN08unEMSeGldpeffVVGTJkiP118XDtcsL8Ic6DkfGff/7ZLlnNKDeKDdaR0aNHu6gJfkOteNWrVy+r3KBUYV3xdl5xafv1119tXg888ICvY+jNPF++xAqrm+PAPJsrrrjCG91uh6s7He6//vrLl87fXY8AOqaM8iNYtJij4ZWd2zYIc3fozG3bvNoGlaloOvLG8jJr0nfSqUs/aXBBfN36PX5VQOUiV+783ixP5VHT/u7Yuk6Klaoox44etsqRi8gcHgQlhm3Kc4I1CWsQ6W7v9ro7nOg3Jia+cxsbezxRGAeqV4rv4NHhK1cq8s4eFg2E+6FcuXJ2m2vsVSQ5iPUDwZ3TCUoGVhnvtcA644S2jMJQvnx5YV5YKAnUZlz8c889Vy6++GK36/sdP358RO0dpR9FKzlCe3HtrlGjRj53uEjz8lccXLoypQvIoiVb5XXjshZI+r85QUqVzCeTf3nIttcp01dZFzLiZjaKDquwrVgZr5hyjKWgnbjV2dpeVlNuvv5cdzjgb8ECORMdf+uDkbJx87ZExzkw4MVHjVIWmeJO/EALGeY2Xm379hIaLytO3w5SvGj8sTaXx8iN17sYgX9xSatcLkZyZA8crkeVgBJQAkogeglEjXLz1ZhxMnna33JDh3aCJWP9hk2WepnSJRONHqbW5cAiQScFVzSsHvjw0zlLCeWGzt4Hr/c8o6oziZ8OFZ1LlBY6h4xQewVXIKwfhKFoXHRRvAtU8eLFbTRG4+nQeec1eNOH24YR7nAoWb2MooOVBFYIyhQT+xEUMDeKbg+E+CpVqpTtCDO5nE40I+YsiIBFhrkQ4eqOpWn48OGCVYn6fP/994lKQ5lzdWNZb3/lBivJhLEfyrnN2skf339oJ+UXLFLKTOKP72mh/KCAzJ4yVrZvXmtc00onKiPQAebJoKAwV4Z5M5N++jRBtIrV4zuY038fZZWn8WOGJAg/r/lVMnPSGJk7/Wepc15LqxjNnjZOmrS8TnLmindHy5u/sGARmjlxjFWEWOjAKU1kVr2iWYK3UIxMn5005QblFRk1apR1C6RdoTzffvvt9rj7wj2Ta4jijEsgynRu00uFM8ewvNBO/f835qqrrrKLQKCccN9xjVgs49JLL7UKtMs/Ob/h2ozLE8sP7aZly5b2nmGBkGBKh0vjfhmwYI4Y4gYNXNiZ/F5/TT0Z8eVsGTJ8unUvy5E9q1kmf6VpswUEa09545b296y1smPnQWvtef2dSQmKa9O6hnw8YpZ0aF/XKNMn5MdfzASXU1KhXCGr/Awz/3tTpVIRObd+GVlr5vywOMFtN53nogX97fXE/UHDUiLgvPNi5LXX4+Tf/1CaRUZ8cdpCY/RgadLIuCJ+YhQXo7CzOptZrVumzxDpdHPC0v+YdlIuuyhTwoO6pwSUgBJQAmcFgahRbmbNWWCBo+R4ZVBfViSLHxn2Hk+t7XvuucdOMsY9ho681zXFlRlp58fFT6lfOvzeCc24qT3yyCMJskcRw6qCoAC5la1QSLCKuPk3LJ/rXZUqQSYR7HTq1MkqH0899ZRdbYp5MV4u3m2XXTBlh+MsMMBiDShFTlh4AOUmXN2x3LBiHXVB3HwQbx282y5/7y/KwW/fDpGfvnxLsJjc3nWgDc6VJ79cft2DJmyw/PL129alDIVkv5l74xWsJzFmXpW/cLx9p8fl249fljnTfrRKiFfxIP/zL71Bfhz1hv3UOe/S+CxOZYVCxJydEe/GnxuB+QoUNYsfXJOgqHY3d5fvzUIIlIHbW58PpvvC6SQ+fk9mefvjWLnhykxG6fQF2Y1gbLCoMf+MeSxOYbzuuusCuiOyUh8KJlYxrhmLbXBNmJ/DHC4EBca7QMUdZj4LFjXSOqFNomg4CdZmgtXZpQvXZlw85nlhAe3YsaM9xMAGrnLk7y3Du+3SstqcE54VkYrJ2or7ZSezmax/6rBc0qKqsJDAsy/9JE88N9bGZf7LyOG32u3OZr7MRLPIQOVzXrb7zL/5Y6KZZX9KOt3QUMaYOTbNL3vbHml5UVWz8qTRAoww92/4ezdLl0dHy6VXvWeP8cXCAV7lBgtQoHP2JTiDDe95+2fTtLHIlcZA2rJ1vFLDnJylp06Ndjv0/Ri70lqbdqeVnhvMpet0s6MnMn9xnMycHydD+/o1dP/CdF8JKAEloASikkCMGek//RYIcgq4kwTrRARJclYfdvMBWCzAreaVUU6YEXCsL7jqMDruleuvv15Y5YwRcSbfU3//DgodMs7PuyqUN4/03maODXVnwjcKk1fC1Z05OzT3pJ7bp28+ZhcK6NLzI9mxZb0UKlbaXPeE4wKxJ47L3t3bIrbYeOvNNlYfVmUrXrqi9H3kSqndsKVcfdvpTj3LPMdkyuyzxvinP3H8qGA9yp23kOTJV9A/OOz+ETO16rz2x+WtXuYPDs9PWqfP3Q9YA/2vSdiCTQTm1tBeg6WlTTOPh+vGH+KmpIRrM2dSFhYfFGoGDFi8IKWF+TObNu8zlr9MxiUrr1VMvGVs3bbfrE6Ww1jKmAeTWDZu3iuFCuQKGs6S0Nt3HrArsAXLI3GuaXPENBljSRPj6he4PObYMCXMLPZozi9hnId6npDCBWP0P24SYtE9JaAElMBZQyBhD+2sOa3UPREUGlxtMqKwzG24ujEHwrnl+J9DqPk0/nHTYx+FzV9pc/UIV/dQczNcHqF+sbIULWl8XwJIZrO8cqSuaAGSWzexEmUqBwqyx7AchRJc24qXDp4+VFrCmHsw87usRmkLFzNx+JneD+FWFKRN+7sJJq5F8o6EazPJyzU+FQshYLG54YYbziSboGmxnpQ1rmjBxM2fCRZeumTiOWDeuHnzZjfKZMaclGLGZUIKOnAwPbjvU1l0rk1IehqoBJSAEohuAqrcRPf1S1LtmePAUtUqSSNQ1vxZpptbk7SUyYtdqca5AZdsTl5ukafK5TfCHXlKjRmIAG51zD9KaWtToLL0WOQEIvirncgz05hKQAkoASWQ4QioW1qGuyRaISWgBJSAElACSkAJKAEloASSQyBpzvXJKUHTKAEloASUgBJQAkpACSgBJaAE0oCAKjdpAFmLUAJKQAkoASWgBJSAElACSiD1Cahyk/qMtQQloASUgBJQAkpACSgBJaAE0oCAKjdpAFmLUAJKQAkoASWgBJSAElACSiD1Cahyk/qMtQQloASUgBJQAkpACSgBJaAE0oCAKjdpADkai1i2Ok74Y0evmP8MlCUr4+RErPeobisBJaAElIASUAJKQAkogYxBIKqUmyNHj8qGTVtk1+499p/mMwLCWbNmyfTp0xNV5eTJkzJ37lz58ssvZf78+YnCk3Ng8bwpMnvquOQkTVKa2f/GyUU3HJdjxxMn6/zYCRk73mg5KkpACSgBJaAElIASUAJKIIMRiJo/8fz8yzEy/e/ZPnyFChaQLvfeLiWLh/mral+K1NmYOHGi7Nu3T/iDTK888cQTsnTpUqlVq5b9E7969ep5g5O1Pe+vX2TrxpXS8MJ2yUofaaJBw2Pl/k6ZJV+ehCnMH6LLA7dmlgFDY6V960zCvooSUAJKQAkoASWgBJSAEsgoBKJGuTm3Xh1pfkFjKVqkkGzdtkMGD/tMhgwfKb16dM8oLH312LVrl8yYMUM++ugjqVatmu94NGwsXB4n46eelD6PZQ1Y3Y5tM8nT/U7I71NOSpsWqt0EhKQHlYASUAJKQAkoASWgBNKFQNQoN7VqVPUBqli+rPBZvXa971habWzYsEH69+8vixcvlurVq0uWLFmsZYbyDxw4IF26dJFDhw7Z6vTs2VOyZ88ubdu2lRtvvDGiKuJ2NuWXz2XD6kWSJWt2aXrJdXLN7U/70p44flSGD3hYliyYKmUq1pKrb3tKylc5x4afOH5MxnzSV+b99bMcN/EIv+XBvlKoSGl55ZG20vGu56VGvQt9ebEx6adPZdGcifLAc8Pt8Wn/nJSSxWKkQpmYBPHcTp5cIi2aZJLJM+OMcuOO6q8SUAJKQAkoASWgBJSAEkh/AlE19L595y75/c8pMuSjEfLfoqVy+SUXpTnBd955R44cOSIDBgyQRo0aCXNunOTKlUteeeUVeeyxx+yhHj162P02bdq4KCF/9+/ZIV+894xUqtFQnnnjZ6NwfCglylRJkGbLhpVSsGgpua/HUDm0f6/88tXbvvBfRw+WvyeMltbX3i+du70ue3dtk/dfvkdiMmWSrNmyCXN2/GXBzN8lb4EivsOLV8RJzSqBFRsXqWrFGPlvqc67cTz0VwkoASWgBJSAElACSiBjEIgq5Wbfvv0yZ8F/8u/CpZI3T26pUrlCmlI8ahY0mDJlitx6663CHJrOnTtLsWKn5/xkMkpE6dKlpXjx4rZeJUuWtPv58+ePqJ4xmTLbeLEnjhurTTZrkWl6SccEabHmXHP7U1K5ZiM5v9UNsnLJP77wOdN+lArVGsjFV94htRu2lNYd7pM9OzfL9s1rpPo5zWTlopk27tu9bpPRw/vYRRnWr/pPqtc9PV9o1fo4KVvSl2XAjVLm9FalvdEsYF30oBJQAkpACSgBJaAElIAScASiSrmpXLG8PNX9AXmz3wtSqmQJefv9j915pMnvypUrbTkVK1b0lceCASklefIVlA6de8jsaePkpS6XSq8HLpa5039OkCp/YCIAAEAASURBVH2JMpUlJib+suUrUFROxp5el3n/3h1GIarri1+2Uh27jYJTre75gtWH7bXL58scU8aW9cttesKcVC4XI+s3u73AvxtMeOXygcP0qBJQAkpACSgBJaAElIASSC8CUaXcOEiZM2eWenVqymHjHrZt+w53ONV/K1SoYMvYuHGjryyn8PgORLAxcuRIeffdd2XmzHhLijdJs8tulj4fTJcnX/teSparJl+8/4wwlyYSyZU7v2xev8IXdbNRXpC8RgnC0oOM+2KQnNO4leTOW1D+HDtccuUpIPkLxVuaCK9dNUZwTQsl/AdOnWpR2XRCnZaGKQEloASUgBJQAkpACUQ5gajpoX7/4++ydv1GOXDwkPy3eJn8+sckKVyooFk9rXCaXQLm1DDP5rvvvpNt27bJ+PHjZf36pPtn/fDDD4KCs3DhwgR1371jk7Go/ChHjxySQmZeTZHi5Wx4bOyJBPGC7dQ692JZsehvWTh7gmzbtFomm8UCcuTKI8VKVZTsOXLZ/FhOul7TNlL//CuMVegnqVqnSYLsLmiYSTZvi5OVawMrOHv3iUydddIsKhB6Xk6CTHVHCSgBJaAElIASUAJKQAmkAYGoWS3tn7kLrELjmFSvWlmuaXeZcdFK2072PffcI927d5cOHToIyk7NmjWFuTZeSW6djhw6IKOGPOdzNcPt7MZ7e1vFhPw5VeeSFr+f8Nzb3fyIbF63TD56vZutDgrN3U8OlsyZ4y9z9XrNZMdv66Rm/eZStEQ5+fOHYWa+zWmXNBKxmMBVrTLJh1+dlFeeiJ8DZDM79TVqXKzUMtadVs0SnrM3jm4rASWgBJSAElACSkAJKIH0IBATZyRcwawO5t+BD5cmNcIPHT4se82iAkUKF5KsZgnm9JJYM88Fyw2LCeAil5ISF3fSzIvZYpWYAoVLJCvrA/t2y9HDB6RQsTLJUv4Wmf+6ueSW47J4fDYp6FkL4YSZ3lO/7XEZ8Exm/Y+bZF0ZTaQElIASUAJKQAkoASWQmgSiSrlJTRCad0ICe/eL5Db/aZPFo7uhBhvdUvLljbciJUyhe0pACSgBJaAElIASUAJKIH0JqHKTvvy1dCWgBJSAElACSkAJKAEloARSiIBOnEghkJqNElACSkAJKAEloASUgBJQAulLQJWb9OWvpSsBJaAElIASUAJKQAkoASWQQgQiUm6Su/pXCtVRs1ECSkAJKAEloASUgBJQAkpACYQlENGSY1nMymQnTpyQCBZWC1ugRlACSkAJKAEloASUgBJQAkpACaQGgYgWFEiNgjVPJaAElIASUAJKQAkoASWgBJRAShKIyC0tJQvUvJSAElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBQJWb1KCqeSoBJaAElIASUAJKQAkoASWQ5gRUuUlz5FqgElACSkAJKAEloASUgBJQAqlBIGqUm23btsnAgQPl5MmTlsPRo0dl5syZMnr0aJk9e7bv+IkTJ+S1116TXbt2heW1ePFiGTt2rPzyyy+ydu3asPGTG2Hjxo3y8ssv++qYlHwWLFggO3bsiChJ3759U/U8IqqERlICSkAJKAEloASUgBJQAulEIF2Um5UrVyb5dD/55BMpU6aMZMqUSQ4dOiQ9e/aUYcOGycKFC+Wdd96RV199VeLi4iRLlixSokQJ+fTTT0OWQZr+/fvL1KlT5bfffpNevXrJ999/HzJNcgMPHDggK1assPVLah6DBw+WefPmRZRs2bJlsnfv3ojiaiQloASUgBJQAkpACSgBJXC2EUgX5aZPnz4yZsyYiFlitVm0aJG0aNHCpvnrr79k9+7dMmDAAKvkPPHEE7J8+XJZvXq1DSfe/PnzZc+ePQHL2LBhg7X2PPzww9KvXz95/fXX5eqrr5bvvvtODh8+HDCNHlQCSkAJKAEloASUgBJQAkogYxPIkl7V++GHH2zRHTp0CFuFOXPmSJ48eaxFhsj58+eXW265RfLly2fTVq9e3f5u375dKlWqJOXKlZOsWbMK6S655BIb5v3asmWL3a1SpYrv8JVXXimVK1eWmJgYweXtkUcekXbt2snvv/8u+/btE+Lef//9UrBgQZsG5YwwlCEsRYSVL1/elxYFa9KkSVKxYkVp3769rxw2cIWbMGGCPPnkk75zShAhyE5sbKx8/PHHVjHD/a5mzZpyzz33WDYuCdYbrFY7d+60LAinfli1vvrqK1vu8ePHpUKFCrbORYsWdUn1VwkoASWgBJSAElACSkAJRDWBdLHcOGIoOJFYcLDKoCQ4Oe+88+Tiiy92uzJx4kS77ZQcdohPukBSo0YNq/w8++yzVtFYtWqVdWerW7eu5MiRwyZBacGSgxL1+OOPWysQrm8IVqRx48ZJp06dhDxQvN58800bxhdpp0+fLnfffbfcdtttvuNs4PqGctO1a9ckKTakxQ1v1qxZVqFB+UJJYy6PV37++We57rrr5Omnn5Zjx44J83BQiubOnWvnFlHuSy+9ZJWdESNGeJPqthJQAkpACSgBJaAElIASiGoC6arcQI7J/AcPHgwJEfeywoULB4zDogCff/65VTQKFCjgi1OkSJGg809QRnCNq1evnlU0evfuLQ888IBMnjzZl56N66+/Xho1amQtJA8++KDgHsfk/lq1asmHH34o559/vlVQiIObHNYRJ507d5Zzzz03gQKDIodC98ILL1jLiYsbyS95s4ACClWDBg1snR566CGr4GClcYK1iXqh6KHIYHXCDY95SghzcmDDnKXu3bu7ZPqrBJSAElACSkAJKAEloASinkC6uaVBLlu2bNKtWzfJnTt3SJBYQpxFxRtxzZo1dt5NmzZtpFWrVt4gyZ49e8j5M8WKFbOWFawrrJSGy9ZHH31kLT6EIWXLlvXlWbp0abu9adMmyZw5szDRn0UCggmuc/7y448/2kPBFDX/+N59FDxWivPWqVSpUjYKyovLE5c8J87ljDpfcMEFwkIOWH/IB/e922+/3brSufj6qwSUgBJQAkpACSgBJaAEoplAullunGKDFSScMLeGFce8wvLKr7zyirRs2VJuvPFGb5Ddxhrk5uT4B7LYAPNlnDBXBssNgiLgxM3NYR+rDYLi8+2339p9XL5QiLp06WLDwn0999xzkjNnThk0aFACK49Lh3WGldGwtiAoIcyPYf4QVilWitu6dauLLswxQooXL+475q2zW1CBcNJiTUK5wZUOl7U33njDl043lIASUAJKQAkoASWgBJRAtBNIF+UGtzAsNpEoNgDGKoEy44ROPYoCygtzb7Bc8HFKAfFQUgoVKuSSJPodOXKkjB8/3rrEkY7/y0GYpO9k1KhRwnwcFBuUAuqNosAcFgSlA2Xi66+/dklC/jKJn7kwTPonb39hMYOhQ4cKy16jzOGy56wshNWuXVuoN5Ym6kRclB4WDHDCnB7yx33ugw8+sBYsrDlYjZ566imrEFEP0lB/FSWgBJSAElACSkAJKAElcLYQSBe3NCbfY0mIVJgbM2PGDNvRJx2T5hHmmjz//PO+bFq3bm0XAGAlMZQdJtYHEvLr2LGjfPHFF+Im1dPRZw4LChOrpSG4crk/30TBQjFByWD1M+b6sNAA9WnSpInPsuPKI14gQdG47777ZMiQIXZ1tsaNGyeIdtddd1mXN5apRnC3c65oWIhgx3/yICVLlrRWGLtz6qtZs2bWVQ+LD4oPK7Lx3z/Nmze3q6yh4CCEcb4qSkAJKAEloASUgBJQAkrgbCEQY1yhTs+Cz6BnhbLBhH4mwLOiWTiZPXu2VRBQIOjYBxNOHTcvFBs3Z4W4lMfSzliHWHWNOT+B5gVhXcHNjDk4KSmUj2UGFzjmDvkLyhvWo0BhxMXawwICWJr8BXc00lJvFSWgBJSAElACSkAJKAElcDYRiNx8ko5nTSf+2muvjWjZaKrJEs7Mwwml2BAP6wruWV7FhuNewTITSLEhDspDSis25Mv5Yq0JprxwXsHCSE+dAyk2hDHXSRUbSKgoASWgBJSAElACSkAJnG0EosJyA3SsDf/995+13NB5DyZYNRYuXBg2XrD0HMeis2DBAqlWrZoqAqFAaZgSUAJKQAkoASWgBJSAEshABKJGuclAzLQqSkAJKAEloASUgBJQAkpACWRAAsFNIBmwslolJaAElIASUAJKQAkoASWgBJRAMAKq3AQjo8eVgBJQAkpACSgBJaAElIASiCoCqtxE1eXSyioBJaAElIASUAJKQAkoASUQjIAqN8HI6HEloASUgBJQAkpACSgBJaAEooqAKjdRdbm0skpACSgBJaAElIASUAJKQAkEI6DKTTAyelwJKAEloASUgBJQAkpACSiBqCKgyk1UXS6trBJQAkpACSgBJaAElIASUALBCKhyE4yMHlcCSkAJKAEloASUgBJQAkogqgiochNVl0srqwSUgBJQAkpACSgBJaAElEAwAqrcBCOjx5WAElACSkAJKAEloASUgBKIKgKq3ETV5dLKKgEloASUgBJQAkpACSgBJRCMgCo3wcjocSWgBJSAElACSkAJKAEloASiioAqN1F1ubSySkAJKAEloASUgBJQAkpACQQjkCVYQEY8vnPnTtm/f39EVcubN68ULlw4orgaSQkoASWgBJSAElACSkAJKIHoJxA1ys2CBQtk8ODBEhcXFxH1mJgYefDBB+Wcc86JKL5/pNjYWPnggw/kuuuuk6JFi9rgadOmydy5c6VRo0bSpEkT/yRRv79t2zb59ttv5d5775VMmVLPqDd06FBp166dlCpVKiyzWbNmyY4dO+SKK64IGzepEZYvXy4TJ06UAgUKyPXXX5/U5KkWf8+ePbJx40Zf/rQ/PrTp1JBjx44JLPylSJEiUrx4cf/DUbM/efJkWbRoka3vVVddJUePHpUffvhB7r//fsmRI0ei89iwYYP88ssvcvfddycK8z/w008/WTYNGzb0Dzrr96P13Pft2ycrV6607aB8+fJSsmTJqLhW3vcOz4FQbdh7QuGu03fffSeVKlUK+Y6cMWOGzJs3z2bbpk0bqVChgrcI3VYCSkAJ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BQsOuq9QoUIgUxhWGxJZRENw6yKNO8/xrbfeGiiS+KBw4tvilzzXZFrz9SHTGjE3wcK53mU1eH/wOi57KDekhEaRYTCGJAfE7nlXN87v2LGju4z3DIMl3bt3NzK5oeAgWIlJfCARAREQAREQARGITOCIw1mLshU6w0lM4Hng8NeeQ2m2Y3+abdp3yOqm7baqlSpEvMOLL77oJvHkH3Y0hZnGycpEZ6h48eJhiyY4GaVnxowZbgLOsCflYiejqAQr06khJXSkzg0ucn7CwFzcJqEvSeW2JTT4JK0cVlbiaFBkvPJAU6688krXqadjj1Uj9Lhvbl7fI6SExtqKu5d3JfVlZ7VkAk6ui4fyj0WHiUBRBokhCmZHvWP1jsuKiY6LgAiIgAiIQKISSErLDTDxY88qxWusoDP6HK97x6pNKlcEYkmAeWsym7uG5zlayUDCtQP3tNxO8BvLeoWra/A+Bk7ief/gumhdBERABERABJKBQFLG3CQDWNVRBEQgawKNGjXSQEHWmHSGCIiACIiACIhANgnE3C3NB8wGp07NZt3yfBoed7ijZJXNKM83ilAA96bd8XBniVClqO1O5bZFDZIKihqBeL5HotaIGBQU73dcDJqkIkVABERABEQgTwRi7pZGUC+feAj+6fFSbGhvbt1g4sEqp/dM5bbllIXOjz2BeL5HYt+63N8h3u+43NdcV4qACIiACIhAbAjILS02XFWqCIiACIiACIiACIiACIhAPhOQcpPPwHU7ERABERABERABERABERCB2BCQchMbripVBERABERABERABERABEQgnwlIucln4LqdCIiACIiACIiACIiACIhAbAjEXLn54osv7I033ohN7f9XKhPdhZuLlEk+J0yY4GYFz20FKDdc2ZTH7OKHDh2KWPRTTz1lmzdvjng8mQ+kctvi+bv8+uuvtn79emOSWi+bNm0yePNhMst4CRNGfvDBB1G9/SeffBJo20cffRSx7Px4j4TenOeed0usJTtcmQB12rRp9ssvv6SrTjTecekK1IYIiIAIiIAIJDmBmCs3q1evtnfeeSdmmKZPn26XXHKJTZ48OcM9+Mf/9ttvZ6qAZLgoaMdvv/1ml112mbVv3z6dgvTtt9/a5Zdfbj169LAOHTrYK6+8EnTVH6sodVu3bv1jRwqtpXLb4vEz/fDDD9azZ0/r1q2b3X777e7vjo4/cvDgQTdL/ccff2yvvvpqPKrn7rl48WLXwY5mBUgp/uOPP9qsWbNs/vz5EYuO9Xsk3I157nm3XHrppXbDDTfYzJkzIw50hLs+u/uyw3X37t1Osd25c2e6YvP6jktXmDZEQAREQAREIAUIxDwVdCwZrVu3zl5++eWY3eKJJ55Ip9RwI0ZyBwwYYLVq1bK+ffvas88+a1OmTLF69epZ3bp1Y1YXFZy6BJjD5c4777SyZcs6S2Pp0qXt008/dXMk0eqaNWva/fffb6+99po9//zzcQOBIt+qVauo3v+8884zPrQvEaVNmzauzV9++aU9/fTTbrDilltuiWpVY8E1qhVUYSIgAiIgAiKQRASSVrnBHWzIkCF27bXXGtabaMu8efOM0eKuXbumG63+/PPP3cSg119/vZUpU8a2bNnibv3Pf/4z6ZUbOtj79+83rAhnnnmmffXVV06Z69evn1Peos1Y5f2XwOzZs93fFMp05cqV3c6zzjor23iWLVtmEydOtO3bt7trULzvuuuuQFlYIMePH+8UJiwlKFGDBw+2qlWruvO/++47p6DTgUeqVatmo0ePdut8ffbZZ4FtruHaYMGqgPvn0qVL3d9PxYoVnbJCOVnVLbicRFw//vjj7c9//rP74BqG5QzrWokSJdzAyptvvulcxZist2nTpnbHHXdY4cKFXbvHjh1rY8aMsWLFirmm4X72yCOP2GOPPWbly5fPlCsucQycYPVmQIXnUSICIiACIiACIpA1gZi7pWVdhdydwT/+Y445xjp16pS7AjK56ueff7Ynn3zS7r77bjvuuOPSnemVmerVq9tbb71l27ZtM9ZRCJJdiA+iLV26dLEFCxZY586drUqVKhHd7pK9vYlS/++//95Zabxik9N6oejzHIwbN86GDRtm+/bts/79+weKmTp1qlM8HnroIee+icJ+5JF/PPrDhw93SgkdcTrkZ5xxRuBaVmrXru2slVgnN2zYkO4YnXCsLliaunfv7pSciy++2Pbs2ePOy6pu6QpL8I2GDRu6Gvo4uj/96U9266232qRJk5wVd8mSJa79nFS/fn3btWuXzZkzJ9AqXGS5BsUGyYwrAwszZsxwbq/8lsQcSURABERABERABLIm8EcPJ+tzE+YMRkCJ+eCfPjN0R1tGjBhhp512mhuJDS2bUXAEBYgA7wceeMBwIyIQPBWkcePGxgdp0aKFnXLKKRbq558K7UykNsA3VInOSf2aN29uF154ofsb3Lhxo51wwgnu79MHw/uEGLi/8bfKuSitXjjv999/d88S16LcBgt1q1Gjhrs2eD/rJD/gc/XVV1u7du1cubhZ0blHsqqbOylJvrwFhmcfIR6vUaNGLmkIiky5cuVszZo17hiWHKwt7777rtuGPQMG//d//+e2+cqMK3E4WI3g2qRJE7viiisC12lFBERABERABEQgMoGkVG4YaSa+hWxluL3QMcOigtKTV6EDsmrVKsMtiLKJ60GWL19uKDbFixd32yg1dFQYzWaU2u93B5P466ijjrKjjz7atYBloUKFXEB7Ejcp4auOe6O3dOSmslgHsNzg7sTfLNZEhEQEyJVXXml16tQx3AtRPLDuBCvjuLBxf2JJKOeZZ55x12Xny1ssGQwIJ1nVLdw1ibrPM0NBREaNGuXYEnOH6x5ua8FZ7rBg8V4i292iRYvce6p169bZah6WGqyoXrDySERABERABERABLImkJQxN7ijkYWMzgWCcoNbDCPUgwYNcvty+0XMCSOmBA8jdFgQ3NTuvfdeq1SpkttmJJYMSggj16noE49VLBaWMQdNXwECdFzff/995/J14oknBvaHrqBs8ncXKrijnXvuudanTx93iPgbb0FgBzE2Q4cOdcoOFgGUIO5D7AiCdQ7XKmJnsIiS/Q+LC7EmWQmKGcLAQrA1yF+XVd38eTzTuNMlsvjsdVi3sJCRFvuee+6xc845x1WbbHfBqeGxXmHtIRMcrocNGjRw75bstBH2ZMfzEuoO6PdrKQIiIAIiIAIikJ5AUlpu6Lwx54P/0OkjbWteFRvQMLLqy2VJHAHC6CydlVNPPdXFR5QsWdJ1xggoRiFq27atO09fIpBTAmQgK1KkiAs2p9NMJ5+0yCtWrEhXFO5JKPK4OuEa5a0EKC9scx2WGxSlYJl3ODkG5WKVI/MacR/BShKxY7hVYX3E/QwJ7qSzzvncGxc21v31nF+qVCmX1IP6cg5WTq9cZVU3X89mzZo5i+nKlSvTudT54/FawpVEC8T4wYnU0CgsPP8IVjKefwL/fTxecF2x7hJrgzUYt71gyYwryiWWaX47yiUNtUQEREAEREAERCBrAklpucm6WbE7g0BsArMJoiYwG2GZCmmg6fRK8p8ASgdWSJRzAtS9DBw40K+6JYHoxGDQ0cYi0qtXL9dhvvHGG41MaySAQHCpXLhwoVvnC4vD448/HthGQcdVzctLL73ksq2xzUABHXisOV5uuukm19H22x07dnSrWHvIjIZV6OGHH3ZJBzjA3xGuo0hWdXMnHf5q2bKlUwB4rlCQGMDIbYIFX2Zel7QDRXHu3LkungbLjFdQUHCuuuoql5r7ueeec8opLqo+Hsffm0EP+MIVBS5YMuMKf2Lf/O+GUioRAREQAREQARHImsARh125/pP1aWaclHb468Dhrz2H0mzH/jTbtO+Q1U3bbVUrVYhYBDOq43dPRyi/BVcZ5qIh6xBuL9EUsDFqi/89HZdwQkeIDiopYlNNUrlt8fytSNXsg9Mj/V1Fqh/xLwS1h1NSca9kwkfcKomjChVmvifuBoUit66IxKTh2lahQoUM98isbqF1Cbcdz/dIuPr4fVhfSAjhM6D5/dFa8rvwrvGWotByY/mOC72XtkVABERABEQgGQhk7OUkQ60ToI50ABm1lohANAngnsYnN5LZ3yOZufy8NuHKJs6MT14EawafcJJZ3cKdnyz7UBRjpdjAIK+/SbJwVD1FQAREQAREIFoEkjLmJlqNVzkiIAIiIAIiIAIiIAIiIAKpQyDmbmk+EJl5H/JbcOfAzado0aL5fWt3P+5Nu8O5CcWlQlG8aSq3LYqYVFSUCMTzPRKlJsSkmHi/42LSKBUqAiIgAiIgAnkgEHO3NIKl+cRDcB2Ll2JDe3PrXhQPVjm9Zyq3LacsdH7sCcTzPRL71uX+DvF+x+W+5rpSBERABERABGJDQG5pseGqUkVABERABERABERABERABPKZgJSbfAau24mACIiACIiACIiACIiACMSGgJSb2HBVqSIgAiIgAiIgAiIgAiIgAvlMQMpNPgPX7URABERABERABERABERABGJDIObKzRdffGFvvPFG1GuflpZmwR+yBoUKkxZOmDDBzXgeeiwa20xMyCR+keSpp56yzZs3Rzqc0Pv379/vZmefNm1a2DYkc9sSGnwSVs4/h+GewWg1J1bvkWjVL1w58PBs/DLajGL9jgvXLu0TAREQAREQgUQmEPNsaatXr7Y5c+ZYhw4dosZhxYoVNmDAgHTlNWjQwB555JF0+/jH//bbb1uPHj1ylI6ZNMdvvvmmzZgxw+jkv/rqqy6lsy989uzZ9txzzxmzh5PmuWXLlnb33XdnmNkdpY56ValSxV+aFMt9+/ZZly5djIkfmdG+YcOGGdqQrG1Lih8giSq5YMECGzFiRKDG/K1fcMEF7nmPZpbEWLxHApWO0QrvHd5BwcL7YubMmcG78rSe23dcnm6qi0VABERABEQggQnEXLmJZdsfe+wxK1y4sLtFNFMT33fffbZ9+3arWbOmrVq1yoJHW3fu3Gljxoyx1q1b28033+yODxo0yJo3b24tWrSIZXPzrexFixa5e2G1ScU5evINZAG4kX82hg0b5gYAFi9ebFOmTDGek169ehUAApk38dRTT7WbbropcNKRR8bcWB64l1ZEQAREQAREoCASSGrlhlFilJpodxjuuusuq1q1qr333ntOeQn+w9izZ4/bbNKkiVOssGqgAKxZsybplZulS5c6xY02/v77787iRWN79+5tp59+ejAGrYtAOgIVK1a0MmXK2EknnWRz5841rKsIk2/iGjp//ny3XqtWLevbt69xPtKnTx+rXLmy4Xa2e/duq1evnvXr189KlCjhjif7V/Hixa1atWoZmsHAwcqVK2348OGBY1hDsXIzeMLgCpbodevWuWexfPnyTlnkvSMRAREQAREQARGITCCplZuuXbu6ltE5opN08sknR25pDo6ceOKJEc/mWOPGje0f//iHbdq0yXVQUG7atm0b8ZpkOXDKKafY0KFD7Z///Kfhesc6UrZs2WRpguoZZwK4SfE5//zzXU2mT5/u/pauv/565+KIooNl9Omnn3ZunFu3brXvvvvObrzxRitdurSNHj3aXnjhhZSx+nz22WeGZdcLik737t0Ni86LL75oGzZsMP++wf3VKy8ohQwo3HHHHW7whGODBw+2qVOnWqlSpXxxWoqACIiACIiACIQQSErlpkKFCm70t0aNGvbVV18ZHSg6TMTBRNM9LYRVYBMlatmyZfbaa68Z8Tl05IoWLRo4nqwrxx57rJ1wwgmu80S8BOsSEcgOgYEDBzoLw5YtW6xYsWJ21VVXucvmzZtndevWtU6dOrlt4tTGjh1rnOdj0erUqROIyfv6669t4cKFKaPc8Ex55QUAvLsQBhLgNGvWLOvZs6fRbti0a9fOHWfA5pprrrGNGzfaN99846xbHGBbyo1DpC8REAEREAERCEsgKZUbXFq8WwvuY8TdPProo0bQsR/5DNvaKOzE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ERABERABEShIBJJSudmwYYNVqFDB7r77bhcXQ4erY8eOdu6550btt6PzxmfJkiXG7OiXXHJJ2LI//vhjt/+0004LezyZdhK71KRJE9dpnT59ut1yyy22cOFCe+WVV6TcJNMPGaO6ony8//77rvTTTz/dLYmFIa4NVzUsmlgxcRd99tlnrUyZMq5j36dPHzvhhBOsf//+7rl95513XBxcsHKzb98+dxwF6fHHH08YxYZGDh8+3A2msI7F6sEHH2TVyZYtW+yTTz4xnn+sybSDc5A//elPduuttzrlh3fWo48+6hQ6ePz+++/OtfXdd9+13r1729atW+3pp592DGvUqOGu918okyNGjLDrrrtOio2HoqUIiIAIiIAIRCCQlMrNrl273Egpo55YG+gs0SFq1KiRFS9ePEJTc7abZAEfffSRuw9WC2J6QoUOy/jx4619+/bONS70eDJuM+LOSDXKTYsWLezXX3+1RYsWJWNTVOcoErjiiiucSyZFXnnllc4KwTpxKXTi//KXvziLQ7ly5Zz1YfHixe654DgdeTr+PvYMy06w8Dd2++23u/PGjh2bUIoN9cQyc9xxx7kqYykOFazIWHBCLS6XXXaZs4RideGdBRuSlARL586drXnz5m4XCQRWrFhhwcoNsW2ff/6544NlRyICIiACIiACIpA5gaRUbrwC06tXL+cyduONNzrXMJSRdu3aZd7ibB5FYeHz73//242Y/v3vf7f7778/cDVWDkZgUQZuvvnmwP5kX2E0nc4awpJRaOKMJAWbAJ13OugTJ040rJW4YyIk3sBlzXfsGQRA2dm+fbs7jkUClyyv2LidIV+4aCG4ZpGFsGjRoiFnxHcTZS6SWxo1a9asWaD9wTUdNWqUffjhh85qBSPad8wxxwSfks7FlXaj6AUL1mN4ouBIuQkmo3UREAEREAERCE8g4zBk+PMSai8uaQj/9BHfscJ9LNpSpEgRI0MUI6peUGywGDVs2NApPP7+/niqLGlXqrYtVX6j/GrHySefbC1btnSxMMSXEfeG0Onftm1boBooJ1hqSpcu7fYRg0PmL+JoIgnua1gtsBg+8MADgQyIkc5PtP3hlDFicIilueuuuwxrFC55xNoQw5YT4XoyNeKahgubRAREQAREQAREIHMCSanc4N+P0CHCR5/AXSQaMTc//vijizHBl56OGm41zMXhg6cJtkexIXtSly5d3Fw3uJrs3LnT1UFfIpDKBIhvO+uss1xMDUoLLlVY9ojL4nkhqyDiY3LOPvtst00Hnw4/80KhGAXPD4U1g4EKkgiQkY0Yl2QXb+lB8YMTrrO8U3IquMNhHSamkKQM3333XU6L0PkiIAIiIAIiUKAIJKVbGj7wzEXzzDPP2IwZM9wPhn+771Dk5Reko0Z6Z99JwzWLDlr37t1dsatWrXKdFTosjKp6ufjii10Avt9OxqW3hCVj3VXn/CPAs0CiCeJBUPCZ84XnxT8zpEwngQBSsWJFZ40hJo7geqRYsWIuAYHbOPzlrYOlSpVyVgosFZQd7bmx/P2iuaTu4eJwaCNzXz3//PP23HPPGRZgYvdQAIPFt519lBO8zT6/ff311xvJG7BskawBK5BEBERABERABEQgI4EjDs+2/Z+MuzPu4aS0w18HDn/tOZRmO/an2aZ9h6xu2m6rWum/bmIZrzKXIpZJPCdNmhTucJ72kb2JkVHcWvDrD5Wvv/7a+vbt6xSgUF/30HNDt+mE4CMfHE8Qek5W28T/MOFnNNNUZ3XP/Dqeym3LL4apdB/veobLqM8WFto+XNNwWSOw3nfaQ8+JtE2q6Vi9RyLdMxr7eUdh1Q2XkCQa5eflHReN+6sMERABERABEUg0AklpufEQ6URlFqjsz8vNklFkPhIREIGsCWSVNIASGIQoaMI7KlaKTUFjqfaKgAiIgAiIQHYIJGXMTXYapnNEQAREQAREQAREQAREQAQKFoGYu6WRwQxXlHBuY7FGjccdqZzDZTOK9b0pn3vT7lSMZUnltuXH34bukTMC8XyP5Kym+Xt2vN9x+dta3U0EREAEREAEsiYQc7c05k0Jnok86ypF7wz8+uOl2NAKgohTVVK5ban6myVzu+L5HklkbvF+xyUyG9VNBERABESgYBKQW1rB/N3VahEQAREQAREQAREQARFIOQJSblLuJ1WDREAEREAEREAEREAERKBgEpByUzB/d7VaBERABERABERABERABFKOgJSblPtJ1SAREAEREAEREAEREAERKJgEYq7cMKs2s41HU8gQlJaWluETOh8pkwZOmDDBZWvL6f3JBrZ27Vr77bffIl76ww8/GJP0RZKnnnrKNm/eHOlwQu9nUsb333/fpk2bFrYNydy2hAafhJXzz2Lo8xfNpsTiPZLd+tG+jRs32q5du7J7Sb6dl5d3XL5VUjcSAREQAREQgXwkEPNsaatXr3Yzi3fo0CFqzerfv7+tXLkyQ3k9e/a09u3bB/bzj//tt9+2Hj16ZDsdM2mr77rrLluzZk2gnMaNGxv3POaYY9y+2bNn23PPPWe//PKLK7dly5Z29913Z5h1HaWuQYMGMZtoNFDBKK/s27fPunTpYscdd5xVqlTJGjZsmKENydq2KKMq8MUtWLDARowYEeDApLoXXHCB8bxHM0tiLN4jgUpnsvLKK6/YlClTAmfUrFnTRo0aleFZD5yQzyu5ecflcxV1OxEQAREQARHIVwIxV25i0RoUCSwrXj788EObMWOGnXHGGX5XrpeMPp9wwgmGokTHftmyZa4zQwfn5ptvtp07d9qYMWOsdevWbnvVqlU2aNAga968ubVo0SLX902kCxctWuSqg9UmFefoSSTWyV4Xb60ZNmyYm9Np8eLFThngOenVq1dSN4+BEZ572nH++ec7y80LL7yQ1G1S5UVABERABEQg1QkkpXJTtmxZ4+Pl448/tvr161uZMmX8rlwvCxUqZH379g1c36pVK5s6daqtX7/e7duzZ49bNmnSxAoXLuysGigAWHqSXblZunSpU9xoIxYsLF5I79697fTTT3fr+hKBcAQqVqzonr+TTjrJ5s6daytWrHCnMfkmrqHz58831mvVquWeL85H+vTpY5UrVzbcznbv3m316tWzfv36WYkSJdzxeH5hncVq265dO1cNLJnB7wZ2DhkyxKpXr+7c1pYvX+7Ou++++9x1L7/8sr355pvOwstkvk2bNrU77rjDvTc4EZfWF1980WbNmuXOKVasmBtUOffcc105S5YssUmTJtmPP/5oxx9/vF1zzTXWpk0bd0xfIiACIiACIiAC4QkkpXIT3JTvvvvOxYTccMMNwbujtk7MzM8//+zcbCj0xBNPdB2Xf/zjH7Zp0ybnHody07Zt26jdM14FnXLKKTZ06FD75z//abjesY4EK5LxqpvumxwEcJPig6UDmT59uvtbuv76650lFEWHzv/TTz/tXLu2bt1qPMM33nijlS5d2kaPHm1YR+Jt9cEyzAeXzMxky5Yt9sknn9hpp51m9957r+HSyQAJwnvh1ltvdcrPhg0b7NFHH3Wueih0yLPPPuviES+77DLHi7J41yC44T388MNOmUGh4R5YjBs1aqTn0RHSlwiIgAiIgAiEJ5D0ys2rr75qjHgywhptoaMyYMAAq1q1akC54R4nn3yyc1d77bXXXAeIjlzRokWjfft8L4/RZVzySpUq5TphrEtEIDsEBg4c6Kx9dNB5Hq+66ip32bx586xu3brWqVMnt02c2tixY43ziM9B6tSpE3i+vv76a1u4cGHclRuvZBQvXtzVEVdNLDEIAykMBHg5+uijnQXniCOO8LvcEqWFxBxffvmlc2krV65culi+t956y7AAewspAydeeLegHNWuXdvWrVvnFBru42MI/XlaioAIiIAIiIAIpCeQ1MrNr7/+6jpCdKRCOxbpm5nzLTol99xzjxFTQMD0kUf+N7Ec7mfEojD6SuA0nbXrrrvO6AQx+iwRgYJIgKQaKMW4h+Jm5oUMY8HumritITt27AgoN3TgvRCwP3PmTNu7d69LaOH35/fSu7jyjkFo0znnnGOTJ092cXfB9WnWrFnY9w+JB4gHZJCA62mTT0rCOq6fkdw9sWiRkOHTTz8N3ApFCPc0iQiIgAiIgAiIQGQCSa3cvPPOO65lF110UeQW5uKIV2yIPaGDwki0F+9Xj/88QmejWrVqRryKlBtPScuCRoAEG14hCG47zw4uWV78esmSJf2udMdx9eQa4lviKcTTFSlSxHjeyfyGVaV8+fJOuQmtVzirLamjP/jgAzdAglKEkKTEp46nfVhmSEjiY3qCy8XKs23bNpelMXi/1kVABERABERABDInEPN5bjK/fe6PYlEhHTFKRjRHM+l8EDRM5+T22293o7RYa/x8NSgyCHEBzIFD4HQqJBNwjdKXCESZAM8nyQIIjucZev31153S4F3SuB0dfAYHmFdqzpw5hiUkEYQAfp5v3MdwUcWVLrvilTcUFAZLGIgJvf6ss84y3N2YT+rAgQPunYNLHnLhhRfawYMH7fnnn3fWYcogKcO3336b3SroPBEQAREQAREokASS1nJDhjQCfjt27BjVHw43M58ZjRTPXsjuROYiOmvdunVzGY7IhMToK52Uyy+/3J+a9Mtou/glPRA1ICKBrP5WiCchZoTgeIS4rsGDBweC7tlXoUIFt491rDadO3dmNe6CRYV3DBPWTpw40dWHbG+43nmh/d5l1e9jSTtwl0U5IesaViAywflYHs5h8ASlhiQKfBCfGOXMM8+07t27u2spAyHm5sEH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bvF+xyUyG9VNBERABESgYBJIPzNlwWSgVouACIiACIiACIiACIiACKQAASk3KfAjqgkiIAIiIAIiIAIiIAIiIAJmUm70VyACIiACIiACIiACIiACIpASBKTcpMTPqEaIgAiIgAiIgAiIgAiIgAjEXLn54osv7I033ogJabKw/fjjjxYp4dtPP/1kEyZMcNnacloBZhQnFSuTD0aSH374wQ4dOhTpsD311FPGJHypKKnctnj+Xr/++qsxx8mBAwcC1di0aZP7W4L5iy++GNif3ytff/21ffDBB1G97SeffBJo20cffRSx7Fi+RyLeNBsHePekpaUFPtm4JFunHDx40KZNm2a8YzKTvLzjMitXx0RABERABEQgWQnEPFva6tWrbc6cOdahQ4ccMeKfOh25efPmuVnLJ06cmO76d99918aNG+f2HX300fbggw/aqaeemu4c/vEzCV6PHj1ylI6Z83fs2BEoi3IHDBgQSGc9e/Zse+655wwFiDTPzNB+9913Z5h5HaWuQYMGVqVKlUBZqbKSym2Lx2/E3/ugQYNsy5YtgdsPHDjQmjZtanR0UeJRenbt2mVdunQJnJOfK4sXL7b58+dbq1atonZbUorTthUrVriO/Nlnnx227Ny+R8IWFsWd/fr1M+rmhfdU5cqV/Waul/v373fvvzp16mQ6uWlu33G5rpguFAEREAEREIEEJxBzy01u2s9o6E033WRr1661MmXKZLCOYA1BsaGTh2WmQoUKRkcweLQ7N/f111x77bWu3BdeeMHuu+8++/zzz23KlCnu8M6dO23MmDHWpEkTe+WVV5zSgwK2cOFCf7mWIpAjAszhcuedd7qU6fw983fVv3//gDJds2ZNu//+++2iiy7KUbnRPpkBioceeiiqxZ533nmubXTik1HuueceGzt2rHtfJWP9VWcREAEREAERSDUCMbfc5AYYczfQYahWrZoNGzbMvv/++3TFzJo1y1lMmLl77969tm3bNud6tmjRIqOzlFcJLuOMM85wnUysNMiePXvcEuWmcOHC1rBhQ1cXXNhatGjhjiXrFx1sRoyxIpx55pn21VdfOXcbRqfr1auXrM1K+HpjCcSC8cQTTwRG/c8666xs13vZsmWGxYBZ7ZFatWrZXXfdFSjrt99+s/Hjx9unn37q7lO2bFkbPHiwVa1a1Z3/3XffOeX9yy+/dNs8d6NHj3brfH322WeBba7h2mDBdROlbOnSpe7vp2LFik5hoZys6hZcTjKuw5IP76BQefnll+3NN990Fl4m88UKd8cdd7j3Bufi0op1mvcZ75dixYpZz5497dxzzw0tyvht/va3v1m3bt3swgsvzHBcO0RABERABERABP5LICGVG6pGxyiSbN261VlrcAmjQ4iCge8++6MlK1euND5LliwxRtYvueQSV/SJJ55ojRs3tn/84x9GLATnUI+2bdtG69ZxKweLGErbOeecY9OnT7dbbrnFWaSwJEi5id3PgvJO5ze37kx0kjt16mSnnHKKEbPDwACWn6lTp7pKs0TxeOSRR6xEiRLOEnnkkX8YbYcPH24lS5Z0FkkGFkKtkLVr13YWytdee839vQeTwMqKVQk3zu7du7tnEYXGDwJkVbfgslJtnffCrbfeatWrV7cNGzbYo48+6qxzffr0cU199tlnXTziZZddZueff75zSfz5558zYFiwYIGNGDHCrrvuOik2GehohwiIgAiIgAikJ5Cwyk36aqbfogOH1YQAZEY0n3nmGfePnxHqaMm6detc+Rs3bnQd+/LlyweKPvnkk92INJ09RtzpmBQtWjRwPJlXUNwYnUe5wRIFayxiktgRwNXxuOOOy/UNmjdv7iyX33zzjfH3esIJJzgFhUB3lBifcAMlvXTp0hk6yJxHcg4UG64NjemhbjVq1HDXhlaSOCA+WBzatWvnDgfHmGVVt9DyUmkbpQVLKO8oYqXKlSvnkpT4Nr711ltuMIEYP4SBk1Ahtg232Ntvvz0lBlBC26dtERABERABEYg2gaRUbhh9xmIyatQou/fee507B0HXxYsXjxqf9u3bGx+UF0ZM//73v7sRatzPyGLE6OsFF1zg3Ek4zr1vvPHGqN0/XgUdddRRRoIGhGWhQoVcQHu86lMQ7ktc2apVq3LdVBJ2PPnkk1aqVCkjPscnw+CZwCJ05ZVXOldD3AsRXN5uu+22wPOCCxvXY6njN+fv3ne4s6qUz+Z12mmnhT01q7qFvShFdvJ++vDDD53CiFUOF9pjjjnGtY51FMrTTz8909Z6yzAKTipYhzNtrA6KgAiIgAiIQBQI/OGbEoXC8quISpUqOaWDuBD82H0Hi/3RliJFilj9+vVdNifKXr58ubsF90WOP/5450KH20+qCSP5fCSxJYDbF4oIrkuZCYoH1pdQIbkGcRpYMB944AGrW7duulOICRk6dKhhaSQAHrczsgh6wZ1t0qRJzlp36aWX2owZM1y8lT+e2RLFDCFNdDjJqm7+Gjr9+/bt85tJt/QxN94ChwWNtNkojt5NEGszVjKE83Bby0qp5XoyNeKaRoZIiQiIgAiIgAiIQOYEEla5IcWpn2eGLGiseyXGB9SiWDAC+vTTT7uOAsH/eRXS0hJjQkpe/N/nzp3rXNCIQ0Gq/S8WiExquMGRwjYVkgnklZuuzz0BUiujRBMTQ6eYTj4pl/nbChbioRjtp5PL36bPDojywjbXEe/y/vvvB19m8+bNc+VilcOyQ6c6WEnCPQq3KayPuJ8hwfM3sc753JvOOev+es7HYoQbI/XlHAYAeCaQrOrmTjr81axZM9fRx1JBW7wS4I8n2hKLDMokSRx4L7GN8sk7CSGGCUHpwTXtnXfeSZfmm2NY0HD55Pfit+S3D413QgnCVbRjx44uQyTJHyQiIAIiIAIiIAKRCSSsW9rkyZPdaKWveu/evV0sCFmfiAu4+eabXVA/Pul01kgF7V0+/DW5WTKC/tJLLwVSP9NhYe6N7oeDpREsNmQsIsMRmZC4N52Uyy+/3B1P5i/aIsl/AigduDAxzw0B6F74mw4W4r6uvvpqe/ZwIDoWkV69erk4F9whSazRuXNndzp/j8GdZJJtPP7444GimLcJVzUv/L37eaT4eyd5BtYcL6Rl965u7KOjjWDtITMaVqGHH37YWRjYz98RSQqQrOrmTjr8xVxRWDFIToCCFK35Ynz50V76BAxYuRDajJXFWzrJfHbVVVfZ888/7+bEQnklKQeKmxfiaFBqyEzns9PdcMMN/rBb+vKuv/56YyJTLHP8/liBJCIgAiIgAiIgAhkJHHE42Pg/GXdn3MNJaYe/Dhz+2nMozXbsT7NN+w5Z3bTdVrVShYwX/G8PqU7xu6cjFG1hRBlLC+5ovhMQfA9cZfr27evcbHKq+NAJwSqEr3y4srkPo7a45QRnngq+PwHWfiLG4P2psJ7KbYvn70OMlw8+R9HIiWBBIGg9nJLK3zLWUJ4V4qhChVTEZDjL7O899JrQbSyZpIVm3qnQe2RWt9Bywm3H8j0S7n7Z2cerE6YMiKB4hraZMnhHkTAiOCFJaNkoOLzHsHLlVGnJyzsutB7aFgEREAEREIFUIJCxl5NEraIzkdv0uVk1E1cbPpkJHUmJCESTACP8fHIjWFEiCe5Nfl6bcOfgTuVdqsIdz84+rBV8wklmdQt3fjLsY9ADhSQz4R2VmWLDtQy8ZPbbZFa+jomACIiACIiACKQnkLAxN+mrqS0REAEREAEREAEREAEREAERyJxAzN3SfCAyKWnzW3Abwc0nXnPQcG/aHc5NKL9ZRPt+qdy2aLNSeXknEM/3SN5rH7sS4v2Oi13LVLIIiIAIiIAI5I5AzN3SCJbmEw/BbSReig3tza17UTxY5fSeqdy2nLLQ+bEnEM/3SOxbl/s7xPsdl/ua60oREAEREAERiA0BuaXFhqtKFQEREAEREAEREAEREAERyGcCUm7yGbhuJwIiIAIiIAIiIAIiIAIiEBsCUm5iw1WlioAIiIAIiIAIiIAIiIAI5DMBKTf5DFy3EwEREAEREAEREAEREAERiA2BmCs3zKr9xhtvxKb2WZTKBHsTJkxwM55ncWqGw2QDW7t2rTExYbCQnSgtLS3Dh/2h8tRTT9nmzZtDdyfF9v79++3999+3adOmhW1DMrctKX6AJKqkfx7CPQPRakY83iO0J7RN4fZFq425KScv77jc3E/XiIAIiIAIiECiE4i5crN69Wp75513csyBGc1Hjhxpl156qfXs2TPD9StXrrR7773X2rVr5xSYDCcc3sE//rffftvNEh7ueLh9v//+u/Xu3duuvPJK+8tf/mJdu3a1QYMGGbOII6+++qpdcsklGT6DBw/OUBxK3datWzPsT/Qd+/btc+1/+umnbcWKFcbs9aGSrG0LbYe280ZgwYIFgWehffv21qtXL3vllVeM1M3RlNy+R/JSB9qDcu/lyy+/tA4dOtijjz7qd8V9mZt3XNwrrQqIgAiIgAiIQAwJxDwVdG7qzujoTTfdZNWrV7cyZcpkUE4Yxb3vvvusadOmbg4ZFJJoCfc+4YQTnEJVqVIlW7ZsmY0aNcqmTJliN998s7Vt29aaNGkSuN327dttyJAhdvbZZwf2JfvKokWLXBPo2KXiHD3J/vskUv29ZWPYsGFuTqfFixe7Z2Xnzp1O0UmkuualLp999pk98MADdu6559rdd9+dl6J0rQiIgAiIgAiIQAwJJKRyw9wNY8eOtWrVqhmdpu+//z4dAvZPnTrVSpUq5SwM6Q7mcaNQoULWt2/fQCmtWrVy91q/fr3bV6xYMePj5b333rOjjz46JZSbpUuX2pgxY2zPnj3Ola9Hjx6umViyTj/9dN9kLUUgA4GKFSu6gYiTTjrJ5s6d6yx+nIQFB9fQ+fPnu/VatWq554vzkT59+ljlypWNAYvdu3dbvXr1rF+/flaiRAl3PBG+GODAetumTRu74447AlV6+eWX7c0333SWTSbrZbCF44ULFw6cw8AHgzQbN2605cuXu/0MzDRu3NjtGz16tHu/MY8P75obb7zReAfxLI4bN84uuOACmzlzppuv65prrnHbgcK1IgIiIAIiIAIikIFAzN3SMtwxmztQYCJJ8eLFnWIT6Xg09xMz8/PPP7vOSGi5dNxmzZrlOj10SJJdTjnlFBs6dKhrDwob63zocEpEIDsEcJPiU6dOHXf69OnTbfbs2datWzfr37+/YdGhc+8tPrhtzps3zzp16uSUnm+//dZeeOGF7NwqX875+OOPnWLTvHnzdIoNN8eqeeutt9qkSZNc3ZcsWZLBRXbLli320ksvGTFsuNEyUMC7gpi+O++807Xh4YcftltuucXeffddpwSyk+NwxP32wQcfdDyffPLJADd3ob5EQAREQAREQAQyEEj+HnmGJkVvB7EnAwYMsKpVqzpf+9CSGaE+ePCgizkIPZaM24w+45KHRYyRZNYlIpAdAgMHDnTWPjrzWDavuuoqdxmKS926dZ3ywg7it7DKcl6VKlXcOShCxLIgX3/9tS1cuDBhXNqw2BYpUsRwS/v111+NgRUvl112mVNaiMXZtWuXlStXztasWeMPB5YMFGDBwSLtBUWGdwcWUR+Xx3vm9ddfT2edIYYJyw9M4bJu3TqrUaOGL0ZLERABERABERCBEAJSbkKA+E1GWu+55x43UjpixAg78siMRi6SC5x88snmXWz8tVqKQEEj0LJlS6cU169f37mZ+fbT6W/RooXfNNzWkB07dgSUm9q1aweO16xZ07lh7d2714477rjA/nitEEtH/N8NN9xgjzzyiA0fPjxQFWLxPvzwQzcIgGsddT7mmGMCx/1Ks2bN0ik27Ee5QzZs2OA+rBPjxwBDsKDYICVLlnTL0OyNbqe+REAEREAEREAEAgSk3ARQ/LHiFRtiT+jABMfY+LMYYSajm49L8fu1FIGCSKB169Yu5ia07Tw7dOC9+HXfWWe/38f6pk2b3POWCIoN9WHggroSG8QgB/EvZHAkhuaDDz5wAyDnnHMOp7okJIcOHXLrwV9FixYN3nTrWHmQq6++WhZSR0JfIiACIiACIhAdAhnNEdEpN8+l4G+OiwdBxqRhZh1lwgudIPaRKY2YGNYZJc6r0DkhoQCdl9tvv93FCFB26Hw1WG0YZcUXXyICIhCeAEH2JAsgHoVnCLcr3Ly8SxpXrVq1ygXQM6/UnDlzDEtHogmWKZ514mtQxrxytm3bNueaRrp7b43JTt3PPPNMF7PzzDPPuHcN7x3ia0itLREBERABERABEcg9gYS13EyePDndP3oCcfFJHz9+vGvtX//618AEmwT98sFvn2xDeRFiAnxmtEGDBgWKYgSXjg2C7z2dtc6dO4d1VwtclKQrwbEBSdoEVTufCGT1t4JlkzgRguYRBgSYEyo4AUeFChXcPo5j6eG5SgQJTYOO9ea6665zAf68n4grev755+25555zChuJNxhoCRb4hHNpJcU97xfc3EhK4IWMaOHEc/bLcOdonwiIgAiIgAiIgNkRh7MW/Sc7IDgp7fDXgcNfew6l2Y79abZp3yGrm7bbqlaqELGIF1980Y3GesUg4okxOIDrGFaYGTNmhPWFj8Et0xXJBKMEWjN6nWqSym1Ltd8qEdqDBZaYFBSZ4A46k+V27NjRfVAMQo/7usfzPeLrEG6JxYUMcOXLlw93OFv7uB5XWMoIVvqyc3G833HZqaPOEQEREAEREIH8JFAoP2+me4mACBRMAsxbk9ncNQTiJ2NiDpSRvCg2/DWULl26YP5RqNUiIAIiIAIiEAMCCRtzE4O2qkgREIEEI9CoUaN02dUSrHqqjgiIgAiIgAiIQJIRiLlbGhNdEvQfmuI0PzjhccdkeOGyFeXH/bk37Q713c+Pe8f6HqnctlizU/k5JxDP90jOa5t/V8T7HZd/LdWdREAEREAERCB7BGLulsZkkHziIfj2x0uxob1khUpVSeW2pepvlsztiud7JJG5xfsdl8hsVDcREAEREIGCSUBuaQXzd1erRUAEREAEREAEREAERCDlCEi5SbmfVA0SAREQAREQAREQAREQgYJJQMpNwfzd1WoREAEREAEREAEREAERSDkCUm5S7idVg0RABERABERABERABESgYBKIuXLzxRdf2BtvvBF1umlpafbDDz/Y5s2bXTa2cDf46aefbMKECRGPh7smu/uYdG/9+vV28ODBiJc89dRTrn4RT0jiA6nctiT+WeJSdZ5FPtmcDzhXdYzVeyRXlfnfRbQ3O21mks5XX33VyPgWbYnlOy7adVV5IiACIiACIpAfBGKu3KxevdreeeedHLcFxWXkyJF26aWXWs+ePdNdP3fuXLv88svtpptusl69elnnzp3tk08+SXcOG/zjf/vtt41ZxHMipDl+4YUX3D3atWvnZg8Pvt4fu/32261Tp072/PPPBx8OrKPUbd26NbCdSiup3LZU+p1i3ZYFCxbYJZdc4j7t27d3z+Mrr7wS9Y58bt8jsWz/PffcY3fddVeWt2AA5tlnn83wHsnywmyckNt3XDaK1ikiIAIiIAIikJQEYp4KOjdUGA1FcalevbqVKVMmg3LCCOj1119vTZs2tX379jklaMiQIfbiiy9GJfXzfffdZ9u3b7eaNWvaqlWr0o3O/vbbbzZ9+nSn+HTs2NFmz55tU6dOtYYNG1rdunVz01xdIwJJS8BbLoYNG+bmdFq8eLFNmTLFsFYw8CAxq1Onjo0ePToq7ybxFAEREAEREAERyJxAQio3zN0wduxYq1atmtFp+v7779O1ok2bNum2O3ToYI8//rj9+OOPUelAMBpbtWpVe++995xyE3yzefPmuc0uXbq4zhwWJJSd999/P+mVmzvvvNONLmM1O/PMM+2rr75y7kb9+vWzevXqBWPQugikI1CxYkU3EHHSSScZltUVK1a44wxE4Bo6f/58Z82pVauW9e3b1zgf6dOnj1WuXNlwO9u9e7f7O+PvrUSJEu54Mn8x8HLrrbcGmjBu3Dg77rjjAtsPPfSQff755+6ZO/744w0r8ZVXXmm8//QsBjBpRQREQARESLInfgAAQABJREFUQARyRCDmbmk5qk3QySg22RVGi48++minDGX3mszOO/HEE10HI9w5xYsXd7vpuCDE3Pz+++9OsXI7kvgL9xmsZShuuBvh7lelShXDzUgiAtkhgJsUH6wVCIo/1s1u3bpZ//79nUUHy6i3+OC2yYAB7p0oPd9++61zCc3OvRL9nGOPPdYGDhxoV1xxhe3YsSND7F/ZsmVt0KBBNmnSJHfOtGnT7KOPPnLN0rOY6L+u6icCIiACIpCoBBJWuckuMCwmCxcutHvvvdf+9Kc/ZfeyXJ/XrFkzd+2YMWPss88+c+4m7MBdLRWkcePGxgdp0aKFnXLKKa5DmgptUxtiR4BOPLFx3bt3t2LFitlVV13lbobigrsmykvz5s2d4kxHf8uWLYHKoAhhfW3ZsqVhlV2yZEngWDKvYIFhsKBSpUphm4HbHse+++47O+qoo9z7a82aNYFz9SwGUGhFBERABERABLJNICHd0rJbe6wL+LLTqSL+Jj+E0dihQ4fazJkzjTifk08+2XDFSQU3GvjRycIKhrAsVKhQphnh3In6KvAEUExKlSpl9evXd25mHsiuXbuckuy3eVYQFBysgkjt2rXdki/i3Hi29u7dm86FK3BCiqzgrkdCEjjgqle6dGnXsgMHDgRaqGcxgEIrIiACIiACIpBtAkmr3KDYjBgxwiUeIEtTfsqpp55qfBAyseHG1aBBg/ysQr7ci5FnPhIRyIpA69atXcxN6HlYcTZs2BDY7ddLliyZYR87Nm3a5Cw/wbEpgRNTaGXWrFnOekUWNZKmoMzxTiOldjjRsxiOivaJgAiIgAiIQEYCCavc4LdPgDEfRjNx16DDQyDyokWLnGJz7rnnupFi78qBi0fhwoUztjKHe/bs2eNiaEhQgKxdu9aVW6NGDbeN2wyjzYy+Mt8Lc96QsloiAiKQngAW1Tlz5jhXMyw1r7/+uhUpUiRgteFsMhIuXbrUWS8417t+pi8pMbdQSvz7x9eQdxTvKhQV4vF4TyAs+WANLV++vNtHVkbcackwJxEBERABERABEcg7gYRVbiZPnuxGMn0Te/fu7TKYjR8/PrAff34+Xh544AHn1++3c7tEeRk1alTgcrI3IbjL0BEh9fPGjRvdPu+mhktOskt+xCwlOyPVPz2BrCx7PXr0sHXr1tnDDz/sLuR5GTx4sOvg+5IqVKjg9rGNpYdEFskixA7xbgoWEiaQbZDsaCRT8HLttde61dtuu83atm1rp59+uv31r391+4jN4R1y5JH/DYPUs+ipaSkCIiACIiACOSNwxOGsRf/JziWclHb468Dhrz2H0mzH/jTbtO+Q1U3bbVUrVYhYBHPPMBpLRqD8lq+//tplYJoxY4Ydc8wxUbs9yLZt2+Y6aGQ8iiSkdiXQOr/igSLVIxb7U7ltseBV0MvEAouVA0UmWCEi9THzRfH5+eefMxz33OL5HvF1iMWSRCRYd0gFnRuJ1TsuN3XRNSIgAiIgAiKQCAQS1nKTCHAi1YHOmZ+nI9I52i8CIvAHARJuZJZ0g8GHgvhMYamSiIAIiIAIiIAIRI/Af30goleeShIBERCBbBNo1KhRuuxq2b5QJ4qACIiACIiACIhAGAIxd0sjgBa3C3zt81twH/v3v/9tRYsWze9bu/txb9qdiv7zqdy2uPyx6KaZEojneyTTisX5YLzfcXFuvm4vAiIgAiIgAhkIxNwtjbka+MRDcB+Ll2JDe8kKlaqSym1L1d8smdsVz/dIInOL9zsukdmobiIgAiIgAgWTgNzSCubvrlaLgAiIgAiIgAiIgAiIQMoRkHKTcj+pGiQCIiACIiACIiACIiACBZOAlJuC+bur1SIgAiIgAiIgAiIgAiKQcgSk3KTcT6oGiYAIiIAIiIAIiIAIiEDBJBBz5eaLL76wN954I+p0Dx06ZJs2bXIf1sPJTz/9ZBMmTHDZ2sIdz2wf2cDWrl1rTLIXLGQnSktLy/Bhf6g89dRTtnnz5tDdSbG9f/9+e//9923atGlh25DMbUuKHyBBKhn89x7ubzyv1Vy2bJm99957WRYTq/dIljfOhxOYiPODDz7I1Z3y8o7L1Q11kQiIgAiIgAgkOIGYZ0tbvXq1zZkzxzp06JAjFD/88IMxK/m8efPcrOUTJ04MXP/hhx/a3/72t8D20UcfbXfddZe1aNEisI8V/vG//fbb1qNHj2ynYyZtNWWtWbMmUFbjxo2tf//+xkSDr776qk2ZMiVwzK9wzqBBg/ymW6LUNWjQwKpUqZJuf6Jv7Nu3z7p06WLHHXecVapUyRo2bJihDcnatkRnn2j1mzlzpqHIeqlfv761bt3aLrjgAr8rT8t//etf9tVXX9mFF16YaTm5fY9kWmgMD3bv3t29f0aOHGknnXSS7d2717p27eoGWnh2ChX649W7ePFimz9/vrVq1SrHNcrNOy7HN9EFIiACIiACIpBEBP74D5tAlWaE+KabbrLq1atbmTJlLNQyc+KJJ9pDDz1kNWrUcJaV8ePH2/Dhw+2ll17Kc/pl7n3CCSdYz549XceekeVRo0Y5hebmm2+2tm3bWpMmTQK0tm/fbkOGDLGzzz47sC/ZVxYtWuSagNUmFefoSfbfJx71HzdunO3Zs8cNFtBhp3N+zjnnxKMqSXFP/86aNWuWU27mzp0b0YLMwE9uFJukAKFKioAIiIAIiEA+E0hI5Ya5G8aOHWvVqlWzYcOG2ffff58OC0qNlxIlStgZZ5xhuK0wOprX+VfotPXt29cX7zodU6dOtfXr17t9xYoVMz5ecKnBcpQKys3SpUttzJgxrhOLBQuLF9K7d287/fTTfZO1LIAEKleu7BSamjVr2oIFC2zlypUB5QbrKFbWX375xcqWLWu33XabYcn0gnsnypF/juvUqWNDhw7NMP8VCsFjjz3mLB6DBw+O6xxVvu55WZ566qmGlfnWW281lBy2P//880CRn332mY0ePdptV61a1WizFwZNHnnkEVu3bp1TisqXL2+9evVKN7Diz9VSBERABERABETgDwIxj7n541Y5W0OxyUzoCOHeQefgmWeesZYtW7qOVWbX5OYYMTM///xzus6aL4dZ0+m0tGnTJp2biT+ebMtTTjnFdTppDwobHVA+9erVS7amqL4xIMAzRxwW4pVdBhWIa8OayUBExYoVbdCgQU5B4TwUnj59+tiBAwecayfPK5ZXlOdgwRWSQYVvvvnGnRfPyXeD65WXdZS44sWLu/cU8YHnnXdeuuJq165tAwYMcM/Xhg0b0h3j3QLjJ554wg30/PnPf3bKD+8iiQiIgAiIgAiIQGQCCWm5iVzdP47Q0cJfH4sKHaXgkeI/zsrbGh0uOh+MqoaLGcLV5ODBg3bJJZfk7UYJcvWxxx7rXPJKlSrlRtVxz5OIAASuuOIK97fO+pVXXmlNmzZl1XgGcF38y1/+Ylhcy5UrZzfccIMRR9K+fXt3nOfz3nvvDcRtYdkJll9//dVuv/129xxjsU0Fxca3DzdWBl+wLhcuXNjvdkti2rBCly5dOt1+NrCUXXPNNbZx40an8LGNsM3zKREBERABERABEQhPIGmVGzrijz/+uGvVyy+/bMQB1K1b140ch29qzvaSLeyee+4xYnBGjBhhRx6Z0chFcoGTTz45avfMWQ11tgjkHwHiynbt2mUk9vj444/t6quvdjffsWOH64ij2CC4T6Hs4FaFbN261XhWM0uq4TMS4laKZSKVlBsSJcyePdsNgKDEZVew9OAOetRRR7l3jI99470kEQEREAEREAERiEwgY4898rkJe4RRUWT58uVRqaNXbAigJplAcIyNvwHpW8no1qlTJ79LSxFIWQIo8bh+EheCtfStt95ybS1ZsqRt27Yt0G6UEyw13hpBDA7PE1m9IglJQ0hegYX0gQcecOdHOjfZ9mNlwXKDy2dOZPLkyc6ljVgmmF900UU5uVznioAIiIAIiECBJZCwyg2dIdIx79692/nrs44ygRDAvGLFCnfs22+/daPJ7PdKDuu5Fdzd8P3H/QNXmZ07d7p6hM5Xg9WGEenmzZvn9la6TgSSjgAJBc466yx79tlnnRLC3z+uma+88oqzuvg06T4mxyfawN2MZ4rYGxQjll5IsY5lgk48AwpkPiwIwruG2BqUQebOYp0PQuwSjLCWoUyS1EQiAiIgAiIgAiKQNYGEdUtj5JKsTF5w0WBkl7TPKDoEMXsh+QAKiR8t9vtzsyQAms4EQmC0FzobkyZNcpu4lyxZssQ6d+4c1l3NX5OsS+9ilKz1V71jS4A5XBYuXOgC5ZkPCasCSo1XbEij7uO1eG6wxuBCStYwBEsoc+V48X9vWDmIceNDspBwcW7+mmRY+nZFqivp7nHr89KxY0e3ynuG9U8//dSuvfZat+/88893mdP8uVqKgAiIgAiIgAiEJ3DE4ZiS/4Q/lH4vJ6Ud/jpw+GvPoTTbsT/NNu07ZHXTdlvVShXSnxy0hVsFk3h6xSDoUJ5WGdXEukNHiYxE4QTXMZSeGTNmuAk4w50Ty33t2rWzgQMHBoKvY3mv/C47lduW3yxT4X7e9axChQoRMwfyvGKlIOlAVh3/UCaxeo+E3ifRtmFGDBJW4nAS73dcuDppnwiIgAiIgAjEk0DCWm6ygoIri88glNW5Oi4CIhBbAlklDeDuxNZIckZAzHLGS2eLgAiIgAiIQMLG3OinEQEREAEREAEREAEREAEREIGcEIi5W5oPmI3kVpGTyub0XDzu/v3vf8cttSz3pt0+jWtO65/I56dy2xKZe0GtWzzfI4nMPN7vuERmo7qJgAiIgAgUTAIxd0tjngY+8RD8+uM5Z0aRIkXi0ex8uWcqty1fAOomOSIQz/dIjiqazyfH+x2Xz83V7f4/e2cCb+W0/vFHUkRpIM1KEw2KBqTMyZAhQyWkkJIhQ/5JShnK9HdFpW66FF2XRCnTJbcBRVGSMlQ0T5dGTXL8z3f5r22f09777HPO3mcP5/d8Pnvvd7/vetfwfd93vetZz7PWEgEREAEREIEcCcgtLUdECiACIiACIiACIiACIiACIpAKBKTcpMJVUh5FQAREQAREQAREQAREQARyJCDlJkdECiACIiACIiACIiACIiACIpAKBKTcpMJVUh5FQAREQAREQAREQAREQARyJBB35WbhwoVutfEcc5KPABkZGRZqLVIWwBs5cqRbODC30W/ZssWWLVtmW7duze2pgfDPP/+8rV69OvA/lTZYlPGDDz6wl19+OWQZUrlsqXQdEp1Xniuer3DPWH7zN2/ePPv3v/+dYzQFUY/kmIkkDJCfOi4Ji6MsiYAIiIAIiEC+CcRduVm8eLG9/fbbuc7ounXr7G9/+5tdcskl1r1797Dnjx8/3i6++GIbM2bMfmF48U+dOtX27du337FIO7p27WrXXHON9erVy66++mrr16+f0dj3Em3eJk2aZGvXrvWnpczvrl27rEOHDvaPf/zD5s+fbyh62SVVy5a9HPofmcDkyZPd88UzdtFFF9m9995r06ZNi3xSLo5+/PHHNnHixBzPyGs9kmPEeQxAvdS2bVv74YcfAjG89NJLbt/vv/8e2BfvjbzWcfHOl+IXAREQAREQgUQRiPtU0HkpGL3F3bp1sxo1arhVzcMpJz/++KO99tpreUki4jmdO3e22rVr2+GHH25ff/21DR482MaOHeuUrGjzFjGBJD/46aefuhxitUnHNXqSHH9SZm/48OG2Y8cO11lAp0PRokXt9NNPT8q8FkSmvAIzevRoe/zxx12Sfl8oK3JB5ElpiIAIiIAIiIAImCWlcsPaDcOGDbPq1avbkCFDbOnSpftdKxSeBx980FBEsN7EUs4888xAdKeccopbiNNbL6LJW+DkFNuYO3euPfvss64RS0MNCxaCBatJkyYpVhplN5YEKleu7BSamjVr2qxZs2zRokUB5Qbr6L/+9S9n4TvyyCPtlltusaZNmwaSX758uaEc+ee4bt269sgjj+y3/hXP9BNPPGFYIwYNGpTQNaoCmY+wQecLFqUlS5bYcccdt19IyvHkk0+643QStGjRwm699VZXnxCY8l5//fXWqVMne++994zOGjpUnn76aXeMThX28SweddRR1qNHD2vWrNl+6WiHCIiACIiACIjAXwTi7pb2V1K520KxiSQvvviiFS9e3C677LJIwfJ8jMYbDbY777zTWB0dtxwvOeXNh0u134YNG7pGZ5s2baxYsWJum0Zo/fr1U60oym8cCNAYZxwW4pVdxsIwro1GNx0RFStWtIEDBzoFhXB0CvAM7dmzx/r27WtDhw61o48+er9xcLhC9u7d27777jsX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kG4E4q7c5AUYPcDdunWzGjVquFXN9+3bFzKaJ554wg455BB3LFZTE5N21apVrXv37lapUiWbN2+ePf3000Yj6KabbnKWHBSbK664wtq1a2fvv/++jRs3zho3bmz16tULmU/tFIF0JeCtNUOGDHFrOs2ePds9K1gzevTokdTFppMExebCCy+0888/38aMGWP/+7//6zokypUrZzVr1rR+/frZG2+8Yf/85z/DlqVu3bo2dOjQhE47HzZzOiACIiACIiAChYxAUio3rN0wbNgwq169utFoWrp0acjLQi8xSk2RIrHzritatKj17t07kN4555zjlBdc0BAsSQi9uCzQiZKDsvPBBx+kvHJzxx13GO52WM1atGhhS5Ysca5/ffr0sfr167ty60sEQhGoWLGi64ioXbu2ffTRR4bigOCqhWvojBkz3HatWrXc80V45M4777TKlSsbbmdbt2519xn32+GHH+6Ox/Prvffec/XHzTff7JK59957rUOHDvbhhx+635zS3rVrl/Xs2TMQbPjw4VaiRAn3n04R6rBnn33WSpYs6fZ9++23zrpMp8xRRx1lK1eudEoR9RtWLuqaG2+80aiDkG+++cZZxW644QZXB2FF4jkMtpS5gPoSAREQAREQAREIEIidVhCIMjYbKDY5yVVXXWUXX3yxs7LQcIiH4HLyyy+/GK5pSKlSpdwvDRsE1xVc2Wh4pLpQVqxlKG64G1155ZWGAhnstpPqZVT+40sANyk+WDMQFH+sm7ht4tqJRee+++4zb/FZu3at6zC47LLLnNLz/fffG26fBSHr16931lmfFh0ldFiwPxoh7IABA6x9+/a2adOmLGN2GjRoYLiy4ZLrBRfZAw880Ck2jOmjMwF5+OGHDQXr3XffdUqgD79z505X94wYMcIpPig1WIglIiACIiACIiAC4QkkrXITPsvmxuBgXeGlf9tttxmKBg0mGgyxFOJlbE+1atUCY4ZOOukklwQ9sgsWLHA9r+wIN/FALPNTEHGhxHlFrmXLltawYUPXIC2ItJVG6hKgkY8rZ5cuXZyl4uqrr3aFwdKJuybKy8knn+wUZxSBNWvWBAqLIsSYvFatWrlxK3PmzAkci+fGtm3bApYWnw4WlGifZSzMdAbgvppdUHywfqKwIFiw6DC44IIL3P+ZM2e6jpEmTZoYCh6ut9Qzb775pjse/AVLOnKw2vArEQEREAEREAERCE8gKd3Swmf3zyO4tHi3FhoEjLt5/PHHjUHHzZo1y+n0qI7jnnXPPfe4HmZ6TL3rG42WRx55xCZPnmwPPvigHXvssYYrTkG40USV8XwGonFXrFgxFwu/uMhEmhEun8np9DQhgGJStmxZw2KBm5kXrBcoyV54VhAUHD/RRp06dfxhN86FZwurhXfxChyM8QZWWNIJFmZO89bZ4P152WYsD65uzLrGzItYeFu3bu2i8sods7TxQVCSqF+yyymnnJJ9l/6LgAiIgAiIgAiEIZCSyk32svgGAY2HWIhXbHbs2OEmE/A+8z7uRo0aGR+EHlfcuJitLd2Enmk+EhHIiQCN9iOOOGK/YDw7vvHOQb9dpkyZQFi/jx0oApwTb8WGtFAm5s6dy6YTLDko8r7jxO9Hyc/LNM8oepSFsT2Mq6GOKF26tIu2fPny7veaa65xE5j4tEL9Zq9/QoXRPhEQAREQAREQgT8JJK1bGn77TMfMIGN6U9lmoDuCH/uiRYuMxggDd5nlCF/2WMxWhrKCyxuDfW+99VbnkkXawevV4DbDOBzG2WDVQRm65JJL/iSqbxEQgQCB5s2bu8kCeGZ4hnC7YmyLt9oQkIHzKBlYN3i2vetnIJI4bTB1M88u05rTkfHCCy+4lJjKOliwBtNxgosZzz31EcL6Pig9XvHx2348EWFwQ2OsDWVs27Ytu5zgskadRZrUNdQ71Gm4rklEQAREQAREQATyTiBpLTcoLMEv+l69ejmfdMbZMLNS8EBdejZxEYuFO8mWLVvcuhYgHThwYIAsvbmjR492/5n6mQYJ4t3UcMlJdaGxJRGB3BDIybLHGlM//vijGzRPvDwvgwYNCswIxj7WsWIfwrPMRBYFIQzOZ7ZDFunkw/1Px0b2Z5mZzbCwvJi5lg0zojHFNYoK20yW4KVz585u85ZbbnFTS/PnvPPOs1dffdW5egYrbVi5qF8effTRLDOuXXvttT46WU0DJLQhAiIgAiIgAtETOCCzl/GPaIITKCPza0/m1459GbZpd4at2rXP6mVstWqVKoSNgpW9UUS8YhA2YC4PMOiXmZdoDLEmRShhBjUaKxMnTgwswBkqXG73gYwZlRiPcuSRR4Y9nQYQA63pvU43Seeypdu1SobyYIFlfAuKTLBCxNTLrBfFB6tI9uM+7/GqR4gfi8vGjRudO5ofW+fTLYhf6jEsSChRfhroaNONVx0XbfoKJwIiIAIiIALJRiBpLTc5gUKp4ZMIoXGW3S8/EflQmiKQKgSYcCPSpBvFixdP2DPFJBrBkyAUNNNwnTMFnQ+lJwIiIAIiIALpQCBpx9ykA1yVQQREIDKBE088MaGKReTc6agIiIAIiIAIiECqEYi7WxouHwzG9TOaFSQg3MdY++awww4ryGQDaZE25U7HsSzpXLbABdRG0hBIZD2SNBBCZCTRdVyILGmXCIiACIiACCSUQNzd0nD54JMIwX0sUYoN5WVWqHSVdC5bul6zVC5XIuuRZOaW6DoumdkobyIgAiIgAoWTgNzSCud1V6lFQAREQAREQAREQAREIO0ISLlJu0uqAomACIiACIiACIiACIhA4SQg5aZwXneVWgREQAREQAREQAREQATSjoCUm7S7pCqQCIiACIiACIiACIiACBROAnFXbhYuXGiTJk2KG91169bZ6tWrLdRapP/9739t5MiRbra23GZgy5YttmzZMmPxwXBC2vv27Qt32K16Tt7SUVjRPV3Llo7XK55lysjIMD6hnsFYpRvveiRW+QyOBx6eTfD+WG7np46LZT4UlwiIgAiIgAgkC4G4z5a2ePFimzZtml166aW5KjOKA6uST58+3a1aPmrUqCznL1q0yAYOHOhW9uYAq3uPGTMmSxhe/FOnTrWuXbvmajpmwm/atCkQV6NGjax///6B6azff/99e+mllwwFiGmeW7VqZXfffXeWldc5GaXu+OOPtypVqgTiSpeNdC5bulyjgijHrFmz7LHHHgskxb1+9tlnu+c9lrMk5rUeCWSsgDfo9Aiu85gS/tRTT7XOnTtbLBftzGsdV8A4lJwIiIAIiIAIFBiBuCs3eSkJPZ7dunWzGjVq2BFHHLGfdQRryr333mu1a9e2a665xmrWrGnff/99XpIKeQ4NEOJmRfWvv/7aBg8ebGPHjrXu3bvbzz//bM8++6y1bt3abrrpJvvmm2+cknXyySdby5YtQ8annSKQrgS8tWbIkCFO+Z89e7Z7VnhOevToka7Fjrpcl112mZ177rnOyjl06FDbu3ev9enTJ+rzFVAEREAEREAERCB3BJJSuWHthmHDhln16tWNRtPSpUuzlGrKlClWrFgxe+KJJ6xIkSLu07x58yxh8vPnzDPPDJx+yimnuEYb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65H+97//tZEjR7rZ2nKbPrOBLV++3LZv3x721E2bNhkLiYaT559/3lavXh3ucFLvZ1HBDz74wF5++eWQZUjlsiU1+BTMnH8Wsz9/sSxKPOoRnz9fn/j//nfVqlXGfc6HRUTDCYtwvv7668aMbnkRFuL88MMP83Kq5aeOy1OCOkkEREAEREAEkpxA3GdLW7x4sU2bNs0uvfTSXKFYt26da1BMnz7drVo+atSowPl9+/a1RYsWBf77je7du9tFF13k/7oX/9SpU61r165RT8fMtNV33XWXLVu2LBBP06ZNjTRZaBD5/vvv7b777nOrivP/uuuusyuvvJLNLDJp0iQ7/vjj47bQaJbEYvhn165d1rFjRytRooRVqlTJGjduvF8ZUrVsMcSkqDIJzJo1yx577LEACxbVPfvss93zHstZEvNajwQyFmHj8ccfd+Xo0qWLXXHFFYGQe/futQ0bNthPP/1kmzdvds9E4GDQBh0YL774orVp0yZPM0POnj3bZsyYYeecc05QrNFtotzkto6LLmaFEgEREAEREIHUJBB35SYvWOhJ7datm9WoUcOOOOKI/awjd999t1u/xsf9n//8xyZOnGinnHKK35XnX9KuWrWqoSjRsJ83b549/fTTNnbsWLvpppuctah///5Wq1Yt6927t2vUcKx+/fpWr169PKebTCd++umnLjtYbdJxjZ5kYp3qefHWmiFDhrg1nWio8zxgzejRo0fSFw+r02effebu848++iiLclOzZk3r16+fvfHGG/bPf/4zbFnq1q1rQ4cOzfO083T85EWxCZshHRABERABERCBQkwgKZUb1m4YNmyYVa9e3Wg0LV26NMslOvLII42PFxonDRo0cIqQ35fX36JFizqlxZ9Po2PcuHGu95Z9X331lVOsrr/+epfemjVrXNB33nkn5ZWbuXPn2rPPPms7duxwrnxYvJBevXpZkyZN3La+RCAUgYoVK7rnoXbt2oaSMH/+fBcMVy1cQ7FMsO07BQiP3HnnnVa5cmXD7Wzr1q2uk6BPnz52+OGHu+Px/uJ5xkJz6623ujrnl19+sbJly0aVLBbOnj17BsIOHz7cWTsDOzI3sGxh1cECVKxYMTv//PNdxw1hFixY4JQitqtVq2aDBg1i08nGjRtt8ODB9uOPP7pn8aijjnLKYrNmzXwQ/YqACIiACIiACIQgEPcx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pZdemiswrOjNquTTp093q5aPGjUqy/nDhw938e7du9fNStapUye75JJLsoThxT916lTr2rVrrqZjJjyKi5dGjRpZ//79A6uEf//993bfffcZDRTkuuuusyuvvNIHD/yi1B1//PFWpUqVwL502UjnsqXLNYpFOSZPnuyUdB9XgwYNrHXr1nb22Wf7Xfn6/fjjj23JkiV27rnnRownr/VIxEhzOHjzzTcHOieYzv2EE06w9u3bW7169XI488/Dr776ql1wwQUhw+/cudPVb02aNLGyZctGFV+oQHmt40LFpX0iIAIiIAIikA4E4m65yQskeky7detmy5cvN1bozm4doUH07rvv2i233GKvv/66nXfeeTZ69Oh894L6vHbu3NlZfF555RWnxHz11Vc2duxYd5gebBSdWrVq2YsvvmhnnHGGOxauh9bHqV8RSGUCdCY89thjVqZMGfvb3/5mM2bMSOXiRJ33unXrurrgwQcfNBSSwYMHOytW1BEooAiIgAiIgAiIQIESiLvlJi+lYe2GYcOGWfXq1W3IkCG2dOnSLNHQW4mccsopzppy0kkn2cSJE23NmjX56gX1iZx55pl+M5AGbmoIig4LWF5//fVO8SJN5J133gnZQ+sOpsjXHXfc4axRWM1atGjhetRR5vr06WP169dPkVIom/EgULlyZStatKjVrFnTZs2aZYsWLbLTTz/dJYV1FCsrz8iRRx7pOh2aNm0ayAadFChH/jlGYXjkkUf2W/+KTownnnjCeL4HDRqU0DWqfOZLlCjhLK9YX3/88UdnxSJ/5cuXd/l88skn3XOCZYdn5tZbbw1YeIkDTl26dLHNmzfbsccea/fee69TEH38WEAHDhxoLFJKvYO1CM7sq1ChgvXo0cMHdQx//vlnGzBgQGCfNkRABERABERABLISSErLDVlEsQknNAKw6PCSf+2111xPcsWKFQ2XmVgJjRIabHfeeadreFx88cUuaq/M1KhRw/CpX79+vbGNQpDqwvglytKxY0fXgMXVjkbdhAkTUr1oyn8MCKB8fPDBBy4m3KkQxsIwrq1Zs2auI4LnkIa574BA4eEZ2rNnj/Xt29eGDh1qRx999H7j4Hbt2mW9e/e27777zoVL5OK7rmD//4ULKorYbbfdZi+88IJzP0WxQR566CFbsWKF3XPPPa6zA6Uvu/ssfHCXJcxPP/1k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+ZBxfP755+4Z51mYOXNmyDDsZAFPFuFkxrdYS37quFjnRfGJgAiIgAiIQDIQiPtsaYsXL7Zp06bZpZdemqvyrlu3zliVfPr06W5l71GjRgXOZ2rpAQMG2FdffeX2MdXywIED7YQTTgiEYYMXP4vgde3aNerpmIn7rrvucmtM+MiaNm1qffv2teLFixuL65E2yo0X1qG4+uqr/d/A76RJk+z444+3KlWqBPalwsauXbusY8eOVqJECatUqZI1btx4vzKkatlSgX8q5XHWrFn22GOPBbLMvX722We75z2WsySGq0dQap544gn77LPPAnm4/PLL3TNP58T48ePjtk4MHSAbNmyw+fPnG/XVaaedFshD8AYdHC+++KK1adMm5jNH5qWOC86btkVABERABEQg3QjEXbnJCzB6gLt162Y1atRwq5rv27cvSzRz5851is39999vderUsWHDhjnl5rXXXnMKSJbAufxD2lWrVrXu3bu7hv28efPs6aeftrFjx9pNN91ke/futbPOOst9DjnkEHv11Vdd73DdunUNJSgd5NNPP3XFwGqTjmv0pMM1SpYyeGvNkCFD3JpOs2fPds8K1ooePXrEPZuPPvqoLVq0yB555BHjGaTzAYtNQciZZ55pfPr16xcxOfI1dOjQhE5LHzGDOigCIiACIiACaUQgKZUb1m5AYalevbrRaFq6dGkW5O+9955VrlzZTj75ZLcfqwkuInxatWqVJWxu/xQtWtR69+4dOO2cc86xcePGuUYTO1Gm+Hi55pprjPzQqEp15Qal8dlnn7UdO3Y4Vz4sXkivXr2sSZMmvsj6FYH9CFSsWNF1RNSuXds++ugjZ80gEK5YuIbOmDHDbdeqVcs9X4RH7rzzTvcs43a2detWq1+/vvXp08cOP/xwdzzSFxYROh9uvvlma9SokQt67LHHGp9geemll2zy5MlOubj22mudZYnjGzdutMGDBzt3Niy2Rx11lFPImjVrFjh9woQJTnlCQZkyZYrt3LnTrrzySuO5z0mwgPbs2TMQbPjw4c4a6neghKH0UL9h5aKuufHGG406iGeR8FjBQuXdx6FfERABERABERCBrATiPuYma3LR/0OxCSc0fGg4eKExjuAiEmuhAYULWjjFxbvDZHeJi3U+CiK+hg0buh5w3GeKFSvmtukRp8EpEYFoCOAmxQdlAMEt7P33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K0Q07jp37uw+t912m11++eU2fvz4LHG8++67dskll9gNN9zgjn/11VdZjvOHF//UqVMjKiD7nRS0Y/v27S7uiy66KIuCRAPkiiuusK5du9qll15qEyZMCDrrr02UurVr1/61I4220rlsibhM69ats+7du1unTp3s1ltvdfcdDX9k7969Ton/7LPPXCM5EfkjzdmzZ9vLL78c0+SZUpwOivfee89mzJgRNu681CNhI/v/A3369LGLL77YeL6pb4YPH267du3K6bRcH6eD48UXX7Tdu3dHPPef//ynharHIp2U3zouUtw6JgIiIAIiIAKpSCDuyk1eoNCYO+uss2zEiBH2wgsv2HnnnWevvPKKzZs3z0VHY4GGSMeOHZ1lpkKFCjZgwIAsvd15STf7OU899VQWpYbj9PT279/fatWq5RosZ5xxho0dO9ZofElEIC8E6NG/44473JTpWBpRlvv27RtYG6pmzZrWr18/O//88/MSfczOQZF/6KGHYhYfEZ155pmubHXr1o1pvNFGVqVKFRs6dKhdd9119vHHH9vtt98ec0sOZSONRE5LHy0PhRMBERABERCBVCcQ93Vu8gKoTp06xsfLNddc43p2seg0bdrUbbMw5lVXXWU7d+609evXOyXk008/dY0lf15+fqdPn+4UFtII7q2mZ5Xe5uuvv96OOOIIW7NmjUvmnXfesXr16uUnyYSfSwOb3mWsCC1atLAlS5Y4ZY4e7vr16yc8f+magffff9/dUyjTlStXdsU89dRToy4uSv+oUaNs48aN7hwU77vuuisQFxZIOgq+/PJLl86RRx5pgwYNsmrVqrnwP/zwg1PQv/76a/e/evXqrjHuM7BgwYLAf87h3GDZunWr62SYO3euu38qVqzoFBbiySlvwfEkYptFdlEe+cDlvvvucxYq7v9IeefYsGHD7Nlnn7WSJUu6rOO2N3jwYHviiSfsqKOOclagnj17BopFh0yJEiUC/z/55BN77rnnjOvTpEmT/dzW5syZY6NHj3aWrdKlS9u1115rbdq0CZyvDREQAREQAREQgf0JJKXlJns2ccdBTjjhBPeLqxfWGhQcGoSNGzcO7Hcb+fxirM8zzzxjd999d5bGCNF6ZaZGjRo2ZcoUp1ixjUKQ6oJFjLJgEZs1a5ZdeeWVRs92OLe7VC9vsuR/6dKlzkrjFZvc5otxX5dd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2GEFnbRLj7Qpdyg3oYRkKIaJpnPZYohJUcWIQCLrkRgVIS7RJLqOi0uhFKkIiIAIiIAI5INA3N3SGCzNJxGC61iiFBvKm1f3okSwym2a6Vy23LJQ+PgTSGQ9Ev/S5T2FRNdxec+5zhQBERABERCB+BCQW1p8uCpWERABERABERABERABERCBAiYg5aaAgSs5ERABERABERABERABERCB+BCQchMfropVBERABERABERABERABESggAlIuSlg4EpOBERABERABERABERABEQgPgSk3MSHq2IVAREQAREQAREQAREQAREoYAJSbgoYuJITAREQAREQAREQAREQARGID4G4KzebN2+2n3/+OT65zyHW3bt325o1a3IIFZ/DrD+xcuVK27dvX3wSSGCs6Vy2BGJV0hEIJLIeiZCthB9KZB2X8MIrAyIgAiIgAiIQgkDclZtx48bZ8OHDQyQd/11z5861Xr16xT+hECns2LHDevbsaevXrw9xNLV3pXPZUvvKpG/uE1mPJDPVRNZxycxFeRMBERABESi8BOKu3BRetCq5CIiACIiACIiACIiACIhAQRIoGo/Evv32W5s2bZqLesGCBfbbb78FrDennnqqbdu2zVasWBEy6QsvvNAWLVoU8Thx446RXVjF/IILLrCXXnrJHcItjHDecnT00Udby5YtbcqUKdlPdf+rVq1qlSpVss8++yzk8aZNm9qmTZsi5m3q1Km2fft227Nnj4tj/Pjxdthhh1nRokWte/fuNmHChLB5P++88/KVtwMPPDBfeY/EtWPHjkbvebiydejQIWnznhPXxo0b5yvvOd0T+bmf0znvOT1rBxxwQL7qkZzu51R9FnOq49q2bRuy/tJOERABERABESgMBOKi3DDOZNeuXY7f77//bnz8fxQdXLWWLl0aki9KQU7Hly9fbjt37tzv/GLFihnjQXxae/fudWGC/5N+uLRRQEqUKBH2eO3atXPMG2nx8coN2ygdfJBIec9v3ooUKZKvvEfKG3mPVLZkzntOeatfv35YbrG4J/JzP6dz3nN61ugU4J5D8lKP5HQ/RzqeE/ec8h7PZzGnOs4B05cIiIAIiIAIFFICB2S+KP+IpuwEysj82pP5tWNfhm3anWGrdu2zehlbrVqlCmGjGDp0qG3dutUGDBgQNky8DsyaNctI//XXX49XEmHjxcJx1VVX2ciRI61KlSphw6XigXQuWypej8KQ50TWI8nMN5F1XDJzUd5EQAREQAQKLwGNuSm8114lFwEREAEREAEREAEREIG0IhB3y826deucS0kirBdYGEi/Tp06BX7RMjIybMmSJYYrG+5y6STpXLZ0uk7pVJZE1iPJzDGRdVwyc1HeREAEREAECi+BuCs3hRetSi4CIiACIiACIiACIiACIlCQBOSWVpC0lZYIiIAIiIAIiIAIiIAIiEDcCEi5iRtaRSwCIiACIiACIiACIiACIlCQBKTcFCRtpSUCIiACIiACIiACIiACIhA3AlJu4oZWEYuACIiACIiACIiACIiACBQkASk3BUlbaYmACIiACIiACIiACIiACMSNgJSbuKFVxCIgAiIgAiIgAiIgAiIgAgVJQMpNQdJWWiIgAiIgAiIgAiIgAiIgAnEjIOUmbmgVsQiIgAiIgAiIgAiIgAiIQEESKFqQieUmrcmTJ9umTZvcKaeffrrVrl07N6fnK+zUqVPtmGOOsXr16uUrnpxOnjVrlpUqVcoaNWqUU9C0Of7rr7/ahg0b7Mgjj7SSJUuGLNeWLVvsoIMOskMPPTTkce0UAREQAREQAREQAREQgVAEkla5+eWXX1wjePbs2VaxYsUCVW5ee+01a926ddyVG9KpVatWgSs37777rm3evNk6deoU6p6Iy77ff//d7rrrLlu2bFkg/qZNm1rfvn2tePHibt+2bdvs3nvvtZUrV7r/zZs3t/vuu8+KFk3a2zRQFm2IgAiIgAiIgAiIgAgknkDSuqV17drV+vXrZwceeGDiKcUpBzTcr7766jjFHj7ab775xubOnRs+QByO/PHHH1a1alV7/PHH7eWXX7Y77rjD5s2bZ2PHjg2k9vTTTzula+TIkXbLLbfY559/bq+++mrguDZEQAREQAREQAREQAREIBKBuHWJ//e//7Unn3zSlixZ4hSUFi1a2K233moHH3ywbd++3TVezznnHPvwww9t586ddt5559kNN9xgBxxwQKT8umMDBw60ChUqWI8ePQJhhw8fbj///LMNGDAgsC/SxgsvvGAff/yxsw7hHtW9e3c744wzAqesXbvWevbsaWvWrLGTTz7ZpVWmTBl3HOXgmWeesfXr11uJEiWsXbt21r59e5s0aZLNmTPHHn300UA8bOzbt8+6devmyoy14l//+pe9//77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LNz0yDNWC5Qar9gwvia76xvWlS6ZkzEgWNC8pc7tCPOFAkhZESYp8MKkBczAhlA2XNaYHQ5B4Qhm5XZG+Armlj0YU4szUQGTNCAwg6NfQwfLGpYYriVjdbh2wco4kzww+58Xrmtu8ubP068IiIAIiIAIiIAIiED8CByQaT34c6R0DmkQKCPza0/m1459GbZpd4at2rXP6mVstWqVKoQ9m/Ea9HZ7t62wAfNwgBmsmPUMhYc0ciP0ujNTGQ3z7DOlRRMP1g4a+Sg7jAEqaMHqhMJFA5spjJn8IFaC+xhWKabb9o1/4sZt69lnn3VKAOyweMWj7Fh1UC5CuZflt4xMg82sapQtkjIUKh3Og0ulSpWycAkVVvtEQAREQAREQAREQAQKnkDcLDe+KExpHGvBAsAMafS0X3zxxblWbMgPypB3ScpL/nBLys/5eUmTc3D1w60K1ygsR1iCsLjEUrBq5FQ2rEbxkuxjfGKZDhMX+MkLchsvroZY+SQiIAIiIAIiIAIiIALJSSAuY27iXVSsQYzXYOFM3I0Kk9C4ZvpiBrZjfWLdlWjcwmLBCIUmeOxQLOJUHCIgAiIgAiIgAiIgAiIQKwJxd0uLVUYVjwiIgAiIgAiIgAiIgAiIgAhEIpCSlptIBdIxERABERABERABERABERCBwklAyk3hvO4qtQiIgAiIgAiIgAiIgAikHQEpN2l3SVUgERABERABERABERABESicBKTcFM7rrlKLgAiIgAiIgAiIgAiIQNoRkHKTdpdUBRIBERABERABERABERCBwklAyk3hvO4qtQiIgAiIgAiIgAiIgAikHQEpN2l3SVUgERABERABERABERABESicBKTcFM7rrlKLgAiIgAiIgAiIgAiIQNoRkHKTdpdUBRIBERABERABERABERCBwklAyk3hvO4qtQiIgAiIgAiIgAiIgAikHQEpN2l3SVUgERABERABERABERABESicBKTcFM7rrlKLgAiIgAiIgAiIgAiIQNoRkHKTdpdUBRIBERABERABERABERCBwklAyk3hvO4qtQiIgAiIgAiIgAiIgAikHQEpN2l3SVUgERABERABERABERABESicBPKl3BxQOJmp1CIgAiIgAiIgAiIgAiIgAklIIE/KjVNqpNkk4eVUlkRABERABERABERABESg8BLItXLjdRpOLOL/FF5+KrkI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" + } + }, + "cell_type": "markdown", + "id": "c303d698-2f44-4f6f-8ce5-6a4f9f13534a", + "metadata": {}, + "source": [ + "![image.png](attachment:f7ad0425-26fe-482c-b97c-c9493b05fbf2.png)" + ] + }, + { + "cell_type": "markdown", + "id": "abd854e5", + "metadata": {}, + "source": [ + "## Create a data processing function\n", + "\n", + "The following code demonstrates how to create a simple data processing function using MLRun.
\n", + "The function will process the data and show some statistics.
\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b4e759f9-7154-4397-8db3-93b808426bd1", + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile process_data.py\n", + "\n", + "\n", + "# Here is an example of Spark processing.\n", + "from pyspark.sql import SparkSession\n", + "from pyspark.sql.functions import avg, min, max\n", + "import pandas as pd\n", + "import json\n", + "import fsspec\n", + "\n", + "def process_data(data_path: str, data_output_path: str):\n", + " spark = SparkSession.builder.appName(\"MusicDemo\").getOrCreate()\n", + " spark_df = spark.read.parquet(data_path, header=True)\n", + " spark_df = spark_df.drop(\"name\", \"id\")\n", + " \n", + " music_stats = spark_df.groupBy(\"favorite_music_type\").agg(\n", + " avg(\"age\").alias(\"avg_age\"),\n", + " min(\"age\").alias(\"min_age\"),\n", + " max(\"age\").alias(\"max_age\")\n", + " )\n", + " music_stats.show()\n", + " pandas_df = spark_df.toPandas()\n", + " pandas_df.to_parquet(data_output_path)\n", + " # spark_df.write.mode(\"overwrite\").parquet(data_output_path)\n", + "\n", + " return {\"music_data\": data_output_path}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "13748b64-6a48-4500-a2a8-d9290dd082c5", + "metadata": {}, + "outputs": [], + "source": [ + "process_data_function = project.set_function(\n", + " func=\"./zeev-demos/mlflow-databricks/process_data.py\",\n", + " name=\"process-data\",\n", + " kind=\"databricks\",\n", + " image=\"mlrun/mlrun\",\n", + ")\n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "2dbadf07-a32a-40da-b9bc-609070e4392d", + "metadata": {}, + "source": [ + "Set all parameters necessary for the function and run it." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5642aa15-e8c0-4a72-a0a8-4cacd34fb63c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2024-03-27 15:34:45,422 [info] Storing function: {'name': 'process-data-process-data', 'uid': 'a9c770f8377046bda3061e61a5c015c2', 'db': 'http://mlrun-api:8080'}\n", + "> 2024-03-27 15:34:45,675 [info] Job is running in the background, pod: process-data-process-data-89bhh\n", + "> 2024-03-27 15:34:49,272 [info] Running with an existing cluster: {'cluster_id': '0327-134616-43m7kfxk'}\n", + "> 2024-03-27 15:34:49,492 [info] Starting to poll: 493449112310004\n", + "> 2024-03-27 15:34:49,539 [info] Workflow intermediate status: mlrun_task__15_34_48_703046: RunLifeCycleState.PENDING\n", + "> 2024-03-27 15:34:50,947 [info] Workflow intermediate status: mlrun_task__15_34_48_703046: RunLifeCycleState.PENDING\n", + "> 2024-03-27 15:34:53,063 [info] Workflow intermediate status: mlrun_task__15_34_48_703046: RunLifeCycleState.RUNNING\n", + "> 2024-03-27 15:34:56,737 [info] Workflow intermediate status: mlrun_task__15_34_48_703046: RunLifeCycleState.RUNNING\n", + "> 2024-03-27 15:35:00,947 [info] Artifacts found. Run name: mlrun_task__15_34_48_703046\n", + "> 2024-03-27 15:35:01,881 [info] Job finished: https://dbc-94c947ab-feb9.cloud.databricks.com/?o=4658245941722457#job/499259196347814/run/493449112310004\n", + "> 2024-03-27 15:35:01,881 [info] Logs:\n", + "+-------------------+------------------+-------+-------+\n", + "|favorite_music_type| avg_age|min_age|max_age|\n", + "+-------------------+------------------+-------+-------+\n", + "| Rock| 30.125| 27| 34|\n", + "| Classical|47.666666666666664| 38| 75|\n", + "| Pop| 24.0| 18| 38|\n", + "+-------------------+------------------+-------+-------+\n", + "\n", + "2024-03-27 15:34:54,980 - mlrun_logger - INFO - successfully wrote artifact details to the artifact JSON file in DBFS - music_data : /dbfs/demos/mlrun_databricks_demo/music_output_new.parquet\n", + "> 2024-03-27 15:35:02,182 [info] To track results use the CLI: {'info_cmd': 'mlrun get run a9c770f8377046bda3061e61a5c015c2 -p mlflow-tracking-example-guy', 'logs_cmd': 'mlrun logs a9c770f8377046bda3061e61a5c015c2 -p mlflow-tracking-example-guy'}\n", + "> 2024-03-27 15:35:02,182 [info] Or click for UI: {'ui_url': 'https://dashboard.default-tenant.app.llm-dev.iguazio-cd1.com/mlprojects/mlflow-tracking-example-guy/jobs/monitor/a9c770f8377046bda3061e61a5c015c2/overview'}\n", + "> 2024-03-27 15:35:02,182 [info] Run execution finished: {'status': 'completed', 'name': 'process-data-process-data'}\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
projectuiditerstartstatenamelabelsinputsparametersresultsartifacts
mlflow-tracking-example-guy0Mar 27 15:34:48completedprocess-data-process-data
v3io_user=zeevr
kind=databricks
owner=zeevr
mlrun/client_version=1.6.1
mlrun/client_python_version=3.9.16
host=process-data-process-data-89bhh
task_parameters={'timeout_minutes': 15, 'spark_app_code': 'IAoKaW1wb3J0IG9zCmltcG9ydCBsb2dnaW5nCm1scnVuX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdtbHJ1bl9sb2dnZXInKQptbHJ1bl9sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKCm1scnVuX2NvbnNvbGVfaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCm1scnVuX2NvbnNvbGVfaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQptbHJ1bl9mb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXMgLSAlKG5hbWUpcyAtICUobGV2ZWxuYW1lKXMgLSAlKG1lc3NhZ2UpcycpCm1scnVuX2NvbnNvbGVfaGFuZGxlci5zZXRGb3JtYXR0ZXIobWxydW5fZm9ybWF0dGVyKQptbHJ1bl9sb2dnZXIuYWRkSGFuZGxlcihtbHJ1bl9jb25zb2xlX2hhbmRsZXIpCgptbHJ1bl9kZWZhdWx0X2FydGlmYWN0X3RlbXBsYXRlID0gJ21scnVuX3JldHVybl92YWx1ZV8nCm1scnVuX2FydGlmYWN0X2luZGV4ID0gMAoKCmRlZiBtbHJ1bl9sb2dfYXJ0aWZhY3QobmFtZT0nJywgcGF0aD0nJyk6CiAgICBnbG9iYWwgbWxydW5fYXJ0aWZhY3RfaW5kZXgKICAgIG1scnVuX2FydGlmYWN0X2luZGV4Kz0xICAjICBieSBob3cgbWFueSBhcnRpZmFjdHMgd2UgdHJpZWQgdG8gbG9nLCBub3QgaG93IG1hbnkgc3VjY2VlZC4KICAgIGlmIG5hbWUgaXMgTm9uZSBvciBuYW1lID09ICcnOgogICAgICAgIG5hbWUgPSBmJ3ttbHJ1bl9kZWZhdWx0X2FydGlmYWN0X3RlbXBsYXRlfXttbHJ1bl9hcnRpZmFjdF9pbmRleH0nCiAgICBpZiBub3QgcGF0aDoKICAgICAgICBtbHJ1bl9sb2dnZXIuZXJyb3IoZidwYXRoIHJlcXVpcmVkIGZvciBsb2dnaW5nIGFuIG1scnVuIGFydGlmYWN0IC0ge25hbWV9IDoge3BhdGh9JykKICAgICAgICByZXR1cm4KICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cikgb3Igbm90IGlzaW5zdGFuY2UocGF0aCwgc3RyKToKICAgICAgICBtbHJ1bl9sb2dnZXIuZXJyb3IoZiduYW1lIGFuZCBwYXRoIG11c3QgYmUgaW4gc3RyaW5nIHR5cGUgZm9yIGxvZ2dpbmcgYW4gbWxydW4gYXJ0aWZhY3QgLSB7bmFtZX0gOiB7cGF0aH0nKQogICAgICAgIHJldHVybgogICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aCgnL2RiZnMnKSBhbmQgbm90IHBhdGguc3RhcnRzd2l0aCgnZGJmczovJyk6CiAgICAgICAgbWxydW5fbG9nZ2VyLmVycm9yKGYncGF0aCBmb3IgYW4gbWxydW4gYXJ0aWZhY3QgbXVzdCBzdGFydCB3aXRoIC9kYmZzIG9yIGRiZnM6LyAtIHtuYW1lfSA6IHtwYXRofScpCiAgICAgICAgcmV0dXJuCiAgICBtbHJ1bl9hcnRpZmFjdHNfcGF0aCA9ICcvZGJmcy9tbHJ1bl9kYXRhYnJpY2tzX3J1bnRpbWUvYXJ0aWZhY3RzX2RpY3Rpb25hcmllcy9tbHJ1bl9hcnRpZmFjdF9hOWM3NzBmODM3NzA0NmJkYTMwNjFlNjFhNWMwMTVjMi5qc29uJwogICAgdHJ5OgogICAgICAgIG5ld19kYXRhID0ge25hbWU6cGF0aH0KICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtbHJ1bl9hcnRpZmFjdHNfcGF0aCk6CiAgICAgICAgICAgIHdpdGggb3BlbihtbHJ1bl9hcnRpZmFjdHNfcGF0aCwgJ3IrJykgYXMganNvbl9maWxlOgogICAgICAgICAgICAgICAgZXhpc3RpbmdfZGF0YSA9IGpzb24ubG9hZChqc29uX2ZpbGUpCiAgICAgICAgICAgICAgICBleGlzdGluZ19kYXRhLnVwZGF0ZShuZXdfZGF0YSkKICAgICAgICAgICAgICAgIGpzb25fZmlsZS5zZWVrKDApCiAgICAgICAgICAgICAgICBqc29uLmR1bXAoZXhpc3RpbmdfZGF0YSwganNvbl9maWxlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcmVudF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUobWxydW5fYXJ0aWZhY3RzX3BhdGgpCiAgICAgICAgICAgIGlmIHBhcmVudF9kaXIgIT0gJy9kYmZzJzoKICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhcmVudF9kaXIsIGV4aXN0X29rPVRydWUpCiAgICAgICAgICAgIHdpdGggb3BlbihtbHJ1bl9hcnRpZmFjdHNfcGF0aCwgJ3cnKSBhcyBqc29uX2ZpbGU6CiAgICAgICAgICAgICAgICBqc29uLmR1bXAobmV3X2RhdGEsIGpzb25fZmlsZSkKICAgICAgICBzdWNjZXNzX2xvZyA9IGYnc3VjY2Vzc2Z1bGx5IHdyb3RlIGFydGlmYWN0IGRldGFpbHMgdG8gdGhlIGFydGlmYWN0IEpTT04gZmlsZSBpbiBEQkZTIC0ge25hbWV9IDoge3BhdGh9JwogICAgICAgIG1scnVuX2xvZ2dlci5pbmZvKHN1Y2Nlc3NfbG9nKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyB1bmtub3duX2V4Y2VwdGlvbjoKICAgICAgICBtbHJ1bl9sb2dnZXIuZXJyb3IoZidsb2cgbWxydW4gYXJ0aWZhY3QgZmFpbGVkIC0ge25hbWV9IDoge3BhdGh9LiBlcnJvcjoge3Vua25vd25fZXhjZXB0aW9ufScpCgoKCgppbXBvcnQgYXJncGFyc2UKaW1wb3J0IGpzb24KcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQpwYXJzZXIuYWRkX2FyZ3VtZW50KCdoYW5kbGVyX2FyZ3VtZW50cycpCmhhbmRsZXJfYXJndW1lbnRzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKS5oYW5kbGVyX2FyZ3VtZW50cwpoYW5kbGVyX2FyZ3VtZW50cyA9IGpzb24ubG9hZHMoaGFuZGxlcl9hcmd1bWVudHMpCgoKZnJvbSBweXNwYXJrLnNxbCBpbXBvcnQgU3BhcmtTZXNzaW9uCmZyb20gcHlzcGFyay5zcWwuZnVuY3Rpb25zIGltcG9ydCBhdmcsIG1pbiwgbWF4CmltcG9ydCBwYW5kYXMgYXMgcGQKaW1wb3J0IGpzb24KaW1wb3J0IGZzc3BlYwoKZGVmIHByb2Nlc3NfZGF0YShkYXRhX3BhdGg6IHN0ciwgZGF0YV9vdXRwdXRfcGF0aDogc3RyKToKICAgIHNwYXJrID0gU3BhcmtTZXNzaW9uLmJ1aWxkZXIuYXBwTmFtZSgnTXVzaWNEZW1vJykuZ2V0T3JDcmVhdGUoKQogICAgc3BhcmtfZGYgPSBzcGFyay5yZWFkLnBhcnF1ZXQoZGF0YV9wYXRoLCBoZWFkZXI9VHJ1ZSkKICAgIHNwYXJrX2RmID0gc3BhcmtfZGYuZHJvcCgnbmFtZScsICdpZCcpCiAgICBtdXNpY19zdGF0cyA9IHNwYXJrX2RmLmdyb3VwQnkoJ2Zhdm9yaXRlX211c2ljX3R5cGUnKS5hZ2coYXZnKCdhZ2UnKS5hbGlhcygnYXZnX2FnZScpLCBtaW4oJ2FnZScpLmFsaWFzKCdtaW5fYWdlJyksIG1heCgnYWdlJykuYWxpYXMoJ21heF9hZ2UnKSkKICAgIG11c2ljX3N0YXRzLnNob3coKQogICAgcGFuZGFzX2RmID0gc3BhcmtfZGYudG9QYW5kYXMoKQogICAgcGFuZGFzX2RmLnRvX3BhcnF1ZXQoZGF0YV9vdXRwdXRfcGF0aCkKICAgIHJldHVybiB7J211c2ljX2RhdGEnOiBkYXRhX291dHB1dF9wYXRofQpyZXN1bHQgPSBwcm9jZXNzX2RhdGEoKipoYW5kbGVyX2FyZ3VtZW50cykKCgppZiByZXN1bHQ6CiAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgZGljdCk6CiAgICAgICAgZm9yIGtleSwgcGF0aCBpbiByZXN1bHQuaXRlbXMoKToKICAgICAgICAgICAgbWxydW5fbG9nX2FydGlmYWN0KG5hbWU9a2V5LCBwYXRoPXBhdGgpCiAgICBlbGlmIGlzaW5zdGFuY2UocmVzdWx0LCAobGlzdCwgdHVwbGUsIHNldCkpOgogICAgICAgIGZvciBhcnRpZmFjdF9wYXRoIGluIHJlc3VsdDoKICAgICAgICAgICAgbWxydW5fbG9nX2FydGlmYWN0KHBhdGg9YXJ0aWZhY3RfcGF0aCkKICAgIGVsaWYgaXNpbnN0YW5jZShyZXN1bHQsIHN0cik6CiAgICAgICAgbWxydW5fbG9nX2FydGlmYWN0KHBhdGg9cmVzdWx0KQogICAgZWxzZToKICAgICAgICBtbHJ1bl9sb2dnZXIud2FybmluZyhmJ2NhbiBub3QgbG9nIGFydGlmYWN0cyB3aXRoIHRoZSByZXN1bHQgb2YgaGFuZGxlciBmdW5jdGlvbiAtIHJlc3VsdCBpbiB1bnN1cHBvcnRlZCB0eXBlLiB7dHlwZShyZXN1bHQpfScpCg==', 'original_handler': 'process_data', 'artifact_json_path': '/mlrun_databricks_runtime/artifacts_dictionaries/mlrun_artifact_a9c770f8377046bda3061e61a5c015c2.json'}
data_path=dbfs:///demos/mlrun_databricks_demo/1711553684480_33/music.parquet
data_output_path=/dbfs/demos/mlrun_databricks_demo/music_output_new.parquet
music_data
databricks_run_metadata
\n", + "
\n", + "
\n", + "
\n", + " Title\n", + " ×\n", + "
\n", + " \n", + "
\n", + "
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "text/html": [ + " > to track results use the .show() or .logs() methods or click here to open in UI" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2024-03-27 15:35:07,910 [info] Run execution finished: {'status': 'completed', 'name': 'process-data-process-data'}\n" + ] + } + ], + "source": [ + "for name, val in job_env.items():\n", + " process_data_function.spec.env.append({\"name\": name, \"value\": val})\n", + "params = {\n", + " \"task_parameters\": {\"timeout_minutes\": 15},\n", + " \"data_path\": dbfs_data_path,\n", + " \"data_output_path\": output_path.replace(\"dbfs://\", \"/dbfs\"),\n", + "}\n", + "run = process_data_function.run(\n", + " handler=\"process_data\",\n", + " params=params,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9a8db175-51f4-4218-afd1-752cc0e65216", + "metadata": { + "tags": [] + }, + "source": [ + "## Create an MLflow Xgboost function\n", + "\n", + "The following code demonstrates how to create a simple Xgboost model using MLflow and log the results.
\n", + "MLflow will log the model, parameters, metrics, and artifacts, and MLRun will track the run and collect the data." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "44a1e133-954d-47a3-9b0f-6e181fe12ea7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwriting training.py\n" + ] + } + ], + "source": [ + "%%writefile training.py\n", + "\n", + "import mlflow\n", + "import mlflow.xgboost\n", + "import xgboost as xgb\n", + "from mlflow import log_metric\n", + "from sklearn import datasets\n", + "from sklearn.metrics import accuracy_score, log_loss\n", + "from sklearn.model_selection import train_test_split\n", + "import pandas as pd\n", + "\n", + "def example_xgb_run(df: str):\n", + " df = pd.read_parquet(df)\n", + " \n", + " df = df.replace([\"f\", \"m\"], [0, 1])\n", + " df = df.replace([\"Pop\", \"Rock\", \"Classical\"], [0, 1, 2])\n", + " \n", + " # Prepare, train, and test data\n", + " y = df.pop('favorite_music_type')\n", + " X = df\n", + "\n", + " X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.2, random_state=42\n", + " )\n", + "\n", + " # Enable auto logging\n", + " mlflow.xgboost.autolog()\n", + "\n", + " dtrain = xgb.DMatrix(X_train, label=y_train)\n", + " dtest = xgb.DMatrix(X_test, label=y_test)\n", + "\n", + " with mlflow.start_run():\n", + " # Train model\n", + " params = {\n", + " \"objective\": \"multi:softprob\",\n", + " \"num_class\": 3,\n", + " \"learning_rate\": 0.3,\n", + " \"eval_metric\": \"mlogloss\",\n", + " \"colsample_bytree\": 1.0,\n", + " \"subsample\": 1.0,\n", + " \"seed\": 42,\n", + " }\n", + " model = xgb.train(params, dtrain, evals=[(dtrain, \"train\")])\n", + " \n", + " # Evaluate model\n", + " y_proba = model.predict(dtest)\n", + " y_pred = y_proba.argmax(axis=1)\n", + " loss = log_loss(y_test, y_proba)\n", + " acc = accuracy_score(y_test, y_pred)\n", + " \n", + " # Log metrics by hand\n", + " mlflow.log_metrics({\"log_loss\": loss, \"accuracy\": acc})" + ] + }, + { + "cell_type": "markdown", + "id": "1cf984c9-78a9-443f-9465-111263101dcd", + "metadata": {}, + "source": [ + "## Log the data from MLflow in MLRun " + ] + }, + { + "cell_type": "markdown", + "id": "365e4b39-9f39-40ae-aac4-7c4f42bce9bd", + "metadata": {}, + "source": [ + "### Change the MLRun configuration to use the tracker\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0b194d04-e08f-4161-a65b-4f18d10fdbf0", + "metadata": {}, + "outputs": [], + "source": [ + "import mlrun\n", + "\n", + "mlrun.mlconf.external_platform_tracking.enabled = True" + ] + }, + { + "cell_type": "markdown", + "id": "b16bb4db-8a2a-4453-a42e-0e8e74ab8f53", + "metadata": {}, + "source": [ + "These are the three options to run tracking:\n", + "- Set: `mlrun.mlconf.external_platform_tracking.mlflow.match_experiment_to_runtime` to True. This determines the run id and is the safest method\n", + "- Set the experiment name at: `mlflow.environment_variables.MLFLOW_EXPERIMENT_NAME.set`. This determines the experiment mlrun will track and find the run added to it.\n", + "- Just run it, mlrun will look across all experiments and search for added run, this is not recomended." + ] + }, + { + "cell_type": "markdown", + "id": "8b7bc72a-bd1b-408a-afa8-e474d91c4a20", + "metadata": {}, + "source": [ + "### Create the mlrun function" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3382b909-a8dc-41a3-afb1-b64df9bb7318", + "metadata": {}, + "outputs": [], + "source": [ + "# Use the first run option from above\n", + "mlrun.mlconf.external_platform_tracking.mlflow.match_experiment_to_runtime = True\n", + "\n", + "# Create a MLRun function using the example train file (all the functions must be located in it):\n", + "training_func = project.set_function(\n", + " func=\"training.py\",\n", + " name=\"example-xgb-run\",\n", + " kind=\"job\",\n", + " image=\"mlrun/mlrun\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "91597f57-364d-4d2a-b926-97b9d8afc81b", + "metadata": {}, + "source": [ + "### Run the function\n", + "\n", + "Run the function using MLRun. This will log the data from MLflow in MLRun.
\n", + "After running the function, you can look at the UI and see that all metrics and parameters are logged in MLRun." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5a726ca8-8057-41ed-be4e-35e5e0582de9", + "metadata": {}, + "outputs": [], + "source": [ + "import mlrun.feature_store as fstore\n", + "\n", + "feature_set = fstore.get_feature_set(\"music_fset\", \"mlflow-tracking-example\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "4de1229a-cc59-4846-8473-3178e682efa6", + "metadata": {}, + "outputs": [], + "source": [ + "df = feature_set.to_dataframe()\n", + "df = df.drop(['id'], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "8249a933-031c-4f2e-88c2-161dd4cfb7ed", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# df = project.list_().to_objects()[0].to_dataitem().as_df()\n", + "df_path = \"./music.parquet\"\n", + "df.to_parquet(df_path)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "8ba452dd-1756-4bfb-af64-d741e234dba3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2024-03-27 15:37:22,829 [info] Storing function: {'name': 'example-xgb-run-example-xgb-run', 'uid': '6ff324dd21d64b6290d45a001957dda2', 'db': 'http://mlrun-api:8080'}\n", + "> 2024-03-27 15:37:22,912 [warning] `mlconf.external_platform_tracking.mlflow.match_experiment_to_runtime` is set to True but the MLFlow experiment name environment variable ('MLFLOW_EXPERIMENT_NAME') is set for using the name: 'example-xgb-run-example-xgb-run'. This name will be overriden with MLRun's runtime name as set in the MLRun configuration: 'example-xgb-run-example-xgb-run'.\n", + "[0]\ttrain-mlogloss:0.82467\n", + "[1]\ttrain-mlogloss:0.64706\n", + "[2]\ttrain-mlogloss:0.52480\n", + "[3]\ttrain-mlogloss:0.43768\n", + "[4]\ttrain-mlogloss:0.37410\n", + "[5]\ttrain-mlogloss:0.32686\n", + "[6]\ttrain-mlogloss:0.29057\n", + "[7]\ttrain-mlogloss:0.26192\n", + "[8]\ttrain-mlogloss:0.23885\n", + "[9]\ttrain-mlogloss:0.22004\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024/03/27 15:37:23 WARNING mlflow.utils.autologging_utils: MLflow autologging encountered a warning: \"/User/.pythonlibs/mlrun-base/lib/python3.9/site-packages/mlflow/types/utils.py:393: UserWarning: Hint: Inferred schema contains integer column(s). Integer columns in Python cannot represent missing values. If your input data contains missing values at inference time, it will be encoded as floats and will cause a schema enforcement error. The best way to avoid this problem is to infer the model schema based on a realistic data sample (training dataset) that includes missing values. Alternatively, you can declare integer columns as doubles (float64) whenever these columns may have missing values. See `Handling Integers With Missing Values `_ for more details.\"\n", + "2024/03/27 15:37:23 WARNING mlflow.utils.autologging_utils: MLflow autologging encountered a warning: \"/User/.pythonlibs/mlrun-base/lib/python3.9/site-packages/xgboost/core.py:160: UserWarning: [15:37:23] WARNING: /workspace/src/c_api/c_api.cc:1240: Saving into deprecated binary model format, please consider using `json` or `ubj`. Model format will default to JSON in XGBoost 2.2 if not specified.\"\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
projectuiditerstartstatenamelabelsinputsparametersresultsartifacts
mlflow-tracking-example-guy0Mar 27 15:37:22completedexample-xgb-run-example-xgb-run
v3io_user=zeevr
kind=local
owner=zeevr
host=jupyter-zeevr-9f4ffb7bb-8c4mf
mlflow-user=iguazio
mlflow-run-name=stately-cow-437
mlflow-run-id=f66d6149d54c4958a2485c941d86a538
mlflow-experiment-id=608717337209571124
df
colsample_bytree=1.0
custom_metric=None
early_stopping_rounds=None
eval_metric=mlogloss
learning_rate=0.3
maximize=None
num_boost_round=10
num_class=3
objective=multi:softprob
seed=42
subsample=1.0
verbose_eval=True
accuracy=0.7142857142857143
log_loss=0.9622776094122579
train-mlogloss=0.2200447738170624
feature_importance_weight_json
feature_importance_weight_png
model
\n", + "
\n", + "
\n", + "
\n", + " Title\n", + " ×\n", + "
\n", + " \n", + "
\n", + "
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "text/html": [ + " > to track results use the .show() or .logs() methods or click here to open in UI" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2024-03-27 15:37:31,415 [info] Run execution finished: {'status': 'completed', 'name': 'example-xgb-run-example-xgb-run'}\n" + ] + } + ], + "source": [ + "# Run the example code using mlrun\n", + "train_run = training_func.run(\n", + " local=True,\n", + " handler=\"example_xgb_run\",\n", + " inputs={\"df\": df_path},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "655d5c46-2c0a-46f2-bbec-a58853260476", + "metadata": {}, + "source": [ + "### Examine the results\n", + "\n", + "You can examine the results using the UI or by looking at the outputs of the run.
\n", + "The outputs include the model, the metrics, and the artifacts, and are completely independent of MLflow." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "d23beb02-e455-48dc-9d9f-9e3d4549ec71", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'accuracy': 0.7142857142857143,\n", + " 'log_loss': 0.9622776094122579,\n", + " 'train-mlogloss': 0.2200447738170624,\n", + " 'feature_importance_weight_json': 'store://artifacts/mlflow-tracking-example-guy/example-xgb-run-example-xgb-run_feature_importance_weight_json@6ff324dd21d64b6290d45a001957dda2',\n", + " 'feature_importance_weight_png': 'store://artifacts/mlflow-tracking-example-guy/example-xgb-run-example-xgb-run_feature_importance_weight_png@6ff324dd21d64b6290d45a001957dda2',\n", + " 'model': 'store://artifacts/mlflow-tracking-example-guy/example-xgb-run-example-xgb-run_model@6ff324dd21d64b6290d45a001957dda2'}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_run.outputs" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "b05f4c2a-5f2d-4d7c-9c21-39c0a949cfc3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'accuracy': 0.7142857142857143,\n", + " 'log_loss': 0.9622776094122579,\n", + " 'train-mlogloss': 0.2200447738170624}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_run.status.results" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "925b3445-18b4-4497-9783-52b4cd069401", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "train_run.artifact(\"feature_importance_weight_png\").show()" + ] + }, + { + "cell_type": "markdown", + "id": "227c4358-4c34-4d1c-acb4-e37ca110b8bf", + "metadata": {}, + "source": [ + "### You can also examine the results using the UI" + ] + }, + { + "cell_type": "markdown", + "id": "dde00fd1-a1f0-4c56-80c2-c5d36a9062a1", + "metadata": {}, + "source": [ + "Look at collected artifacts: " + ] + }, + { + "attachments": { + "95b9b198-55c9-4a67-b0bf-103c9ae0272e.png": { + "image/png": "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/LapWpuGkpN9+/WySy4/1+rWreOXpbk2qU8994A94I71/bcjffhO4bX2HdrauRecZv136eu306+99tnd/hw30ac41WI1JSW/vepxJxxhTZo0smefftlmu6pzCtVpdOna0c44+2QbsOuWOfwKfiGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIAXOOb4wyqtRGpqqp125km+46Sea3Tr3tl3o1yxfGWh99WgYX07+7wRvgDYTj26+qJcKhQW7Fdo4xi+SLYkq5tSrVBVuKdWTLKv1y2IyVGWZW+0W5eMsfMb9rA9a23JdemYOnY8RpJr07l18b14nE2Uc+rDXrZ0uW87qgptRcdjrtXpyy+86Rffdtf1EROSa9dk2MaNG30Ft6L7h79W4E4htnr161p1F5AraWRlZflzUkW4lJTCfWw3b8701eAaupauNWpUL2kKliOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEApAh+9/7mtW7feb1G7dk078JB9S9l6+1r1xqvv2pTJ0wudVNdunezo4yom9Lc5L8dmbF7jzycjN8vOmPu1xTpIpvaoz7Tey9QyVaNDtToltkz1G2zDr/wjbMMEFbGrWqG2at3CV4QLP35GxjqbO2e+jfrp19BiBdMijfQ6tcsMwWm/5OQka96iaakhOG2nFGbzFs2KheC0rlq1qtbalTgkBCcNBgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACWyegYlbTp830P/VdS9HKNOo3qFfsdFURrqKGQmoNquQXBluYtT7mITi9L4XtZmdm+LeoY+mY8RrFy6nF60gJmPeu2x607775KXSk1q1bWtt2rUKveYIAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKVV2DQbgOse48uvrlmep30SvVGBg/ZxTp2al/onBs3aVTodaJfNKlSw9bnZsf1sJkuDJeWXMV0rHiOHSoIFw6lCmw33HR5sapx4dvwHAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBCqXQJ1KFoALdNPS0nxXyeD19vLYIrWmTdy0Mm6no7aoOka8R1KeG/E+SKLmX7lilS1cuNjq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QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEiJAEC4hzBwEAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgXgIE4eIly7wIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIJESAIlxBmDoIAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBAvAYJw8ZJlXgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgYQIEIRLCDMHQQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiJcAQbh4yTIvAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAQgSqJOQoHAQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ2A4EJm5aZY8uH28j1y+2TXk528EZ7finkJaUYoNqNrVzG/aw7mn14vKGkzIyMvLiMnMFTpqxdr01a96kAs+AQyOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggMD2JqAQ3ClzviAAV0EfjAJxz7cZFpcwHK1RK+hD5bAIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQWAFVgqMKXGLNw48me30G8RgE4eKhypwIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCw3QmoHSqjYgXi9RkQhKvYz5WjI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQIIEqAaXIOhSDhOvz4AgXCnorEIAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEENj+BQjCbf+fEWeIAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQigBBuFJwWIUAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIILD9CxCE2/4/I84QAQQQQAABBBBAAAEEEEAA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AggggAACCCCAAAIIIIAAAggggEB8BAjCxceVWRFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBIkQBAuQdAcBgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAID4CBOHi48qsCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCRIgCJcgaA6DAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQHwGCcPFxZVYEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEECRCESxA0h0EAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIiPQJX4TFvxsy5buqLiT4IzQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiLvADhuEa9S4QdzxOAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDFC9AateI/A84AAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEBgGwRiWhFu/uK1Ns/9lHcM6tOyvLuwPQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJeIGZBuJFj59so97M1o1XTdGvpfhgIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIlFcgZkG44MADXXU3BduiGaoep/CcHgnCRSPGNggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAkUFYh6EK6m6m9qmfvrDDB94239Ih9B5jAo94wkCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC5RdILv8uW7fHhOnLbO26zTbRPSoUx0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFgIJC8Ip/JZeq5o/55GuHSoDAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgVgIJCQI9/vExb4aXL/uzax7x0axOG/mQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMALVIm1w+c/zrTU1BSrVjXFjj2gu59+6cr11qh+Tevbval9+sMM3xr1hff+tKysnFgfnvkQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQT+YgIxrwhXJz3Nhd5q+LCbQm8ay1Zu8Mv0fP8hHXxVOG2jbRkIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIbItAzCvC7dKzubVsmu5boerE1BZ1masIt1NYS1SF4TTmL15rcxas9s/5hQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggMDWCMQ8CBd+EhOnL7P5tdZaeq1qvi1q+DqeI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBALgZi3Rg1OalCflv7p2nWbfYW4YDmPCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCMRSIG5BOLVH7e7aoaoaXHhb1FiePHMhgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEPPWqPMWrw2pKgAXhODmhy0PNgjfNljGIwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALlEYhZEK6VqwA3yh151Nj5/rE8J8G2CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCGytQMyCcGqFOrBPy3KfhwJ02peBAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAwNYIxCwIp4MP2oog3NacNPsggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEAgkB094RAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKAyChCE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QAABBBBAAAEEEEAAAQQQQAABBBBAAIFsIEBFuGzwELkFBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAnC4RFREScym4AEeGHpGKl8tnttpJ1PwcOipw4ke0ebbIM6IwAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQE4QyJ1bJFeuMMmfTyR/3pxwx3HvkalR45pkiy0agitdIixb3As3gQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgkLHDkqcvSY6WNqZ2kgLqc1pkbNaU+c+0UAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFsJ1CwgEg+UxbtWGS2u7Uk3RBBuCQx0QkBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQyNoCGoY7dcqUhMuBjSBcDnzo3DICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghkT4ETJ7PnfSV2VwThEhNiPwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQJYWIAiXpR8PF4cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJCYAEG4xITYjwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkKUFCMJl6cfDxSGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCQmQBAuMSH2I4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIZGkBgnBZ+vFwcQgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAokJEIRLTIj9CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACWVqAIFyWfjxcHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQGICeRLrkJz9cxZuDtm9Q4sqdvvm7eGyyfwFN7c/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AAEEAiFAEC4QyuwDAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAbwIE4fxGy4YRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQCIUAQLhDK7AMBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMBvAgTh/EbLhhFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBAIhQBAuEMrsAwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwG8CBOH8RsuGEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEAiFAEC4QyuwDAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAbwIE4fxGy4YRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQCIUAQLhDK7AMBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMBvAgTh/EbLhhFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBAIhQBAuEMrsAwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwG8CBOH8RsuGEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEAiFAEC4QyuwDAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAbwIE4fxGy4YRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQCIUAQLhDK7AMBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMBvAgTh/EbLhhFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBAIhQBAuEMrsAwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE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wYzp80XPU18TatepLnffe3OK7H7ZOYcrvS9XoYz7GnlNq6byynNvi1aG026BDx08bF5nCttNX+71ytm3PocmT5huw3TnTbez2r2xvgarvXZn6jxndHl9zdTnrzZ93um6GTJmkEf79bbTPG+c56ZWg9Om918MGCjOa552navPzy3mMXnKPL7y5csjterUkBatm6W7LlTVZ/3aDbLSdDus10yD46XN76LOXdtLvvx5dbbblv+7WubNXmBfwwoVKmCu1VVmfKGd365jS6lWo4oddq5bWn+tc2EYQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBVCPgsyCcc8ZNTHU3DbYlpGn1OA3P6T1BuISIsYwKnDdhmOPHTlgMDWU4ITidoOGKFq2vlt+GR3SlqOEl/fBeA3F2vqkk5wThNMTkTO/aPSK4pgGMhf8stcvqjVaW27tnv6xauVaeNl2tatemGvjR4IWzri4XagIeB/YftIGR3bv2ShcT6tFl163Z4C5XxVS70qZdDWo7f/68vdeblcvXyLDBEaEhZ6KGDFaacNWzL/aVvCbI4exv7Zr/bBBOK98521q1Yo1oQG7r5u3ucm3at3A2labuz549557jzqER19U5QQ2q6WOj39MPS5gJ7zhmzr0udyok1AYg9+3dL/c9eIdddbOx1KCPBmicFnLylLt+pcrlZYux9Zyvw874UhP6ch5zzvonjp+U/0wXvXf3vlVq1qrmTE719xPGT3fPodet3eS3X/6y4xp0e/KZh9x5B/Yfsl0U64S33/jMnX7k6DF3ujNRuzLWcFmhwgXdeTVrVZWM5jmk8zybjuvzXNtH738jE03gybMdOnRE5s9dLD8OHmCCVRFhuPff+VKmTJ7tLqbXbY95Xs804bbhv34VK9i3betO+/wNN6XhnnnyDVljgrFO0+Cerjt92lz5aehnUtSEJ9NqU+ccJuyrQThtmTNntvfxvV5pwEpDuZ9++I1d3rnZaex2Dh1lQqW7pLsJAesyznNTw8VO27J5mw0dOuMx77VanbOeM0/Hy1csa5/fH77zhX2NdubtM6/XGo7W437i2UfcULMzPy3fL5i/xA30OuepYeIVJnTdp9/9Uq58GTt5zsx/ZNyYSc4issNcK+f3i07UdbSlp9c6e8LcIIAAAggggAACCCCAAAIIIIAAAggggAACCCCA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CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB8AgTh4hNiPgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQIoWIAiXoi8PB4cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBCfAEG4+ISYjwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkKIFCMKl6MvDwSGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCMQnQBAuPiHmI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpGgBgnAp+vJwcAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAvEJEISLT4j5CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACKVqAIFyKvjwcHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQHwCBOHiE2I+AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAihYITtFHx8GlSoGTp1LlYXPQCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAulIoEDedHSy6eBUCcKlg4sc6FMsVzIo0LtkfwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJCOBegaNR1ffE4dAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEgLAgTh0sJV5BwQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgXQsQBAuHV98Th0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQSAsCBOHSwlXkHBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBdCxAEC4dX3xOHQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA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1TmSXSj2BHjeiT3TUClC6J6cAS+eFC9RLDmzCJn22c4/ZOG4kwRIgARIgARIgARIgARIIM0ToIAtzTchK5BIAjEXwq0Sq28IELhB+OYMdpsVv0Ew16HRLc4o/E4CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACqZYA3HGu+WetidbyGo5jIAESSD4CYhcltgHuTyF0g7U3/IcYzgrisA9uUrG9pMRBsPtiWwqmRgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKxJ1ClRkUTragN8XEcAwmQQPIRiLlFOGv1DUXeEGcRzlqAC7Uv+arIlEmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggNgQgaruoLa27xYYmUyGB2BFId+DAgTOxS85n4Q0uT214pPqVaiEOv2H9Da5TrRU4ax3Oxo3V54H9h0yxC4rEKrk0mc6uvWdMgbzp0mTZWWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHEEThfdUMxF8JZ/BC7WUtwdpv9DLXPxknKJ4VwxpyvHTop/YbHkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBaJ3C+6obSJ1fDBRPBIb9Q+5KrPEyXBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjg3CSQbEK4cxMXa0UCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJDaCFAIl9pahOUhARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKIigCFcFHhYmQSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHURoBCuNTWIiwPCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAVAQohIsKFyOTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmkNgIUwqW2FmF5SIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEoiJAIVxUuBiZBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggtRGgEC61tQjLQwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEBUBCuGiwsXIJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACqY0AhXCprUVYHhIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggagIZIwqNiOTQAQE1m48E0EsRiEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBs0egbIl0Zy9z5hxzAhTCxRwpE+QkwT5AAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQkgToGjUlaTMvEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBmBOgEC7mSJkgCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAShKgEC4laTMvEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBmBOgEC7mSJkgCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAShKgEC4laTMvEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBmBOgEC7mSJkgCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAShKgEC4laTMvEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBmBOgEC7mSJkgCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAShKgEC4laTMvEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBmBOgEC7mSJkgCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAShKgEC4laTMvEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBmBOgEC7mSJkgCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAShLI6JXZpu3pzS//pDfrt6Q3ew+mM6dPe8VKuW3pRa6XN+cZU6rYaXPVxadN8cJnuUApV3XmRAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEIZAAiHce19kND/8mSHMYSm7G0K83fvTyf8MWrbrLjtlqt12MmULwdxIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARSJYEA16ivv58p1YngvKhBqIeyMpAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZCA3yIcLMGt3RSgi0vVdFBWlJmW4VJ1M7FwJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJCmCaz5Z61ZvnSFwWc0YfiY/tFEZ1wSIIEkElAh3Kbt6dOEJTh3XWEZ7qqLT5vihcV3KgMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxJhAYkRwMS5CVMl1adcnqvjBIlPIF4wMt6dWAiqE++WftGMJzg0SZacQzk2Fv0mABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA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iIAIiMC/h4AEbP+etlBJKpZAuQjhKDKit3G/mJuVIssmbGN532HzMkKkZksb9qVPERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABEfg3ECAc5w/fj3Ol9bzGdjIREIElR6DchHAUUYK2JddQ2rMIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiMDSJ9CiVXPnnnJeDFdoaRDB+e0K3UDpREAESk2gXIVwheZ+0mHVMjzCEVY1VxjVQverdCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwJAkgatugq7y7LUnG2rcIlIVAhQvh9t6xqhfB4T1uvP1he+1QxYdVlUe5sjShthEBERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERCB5ZtAhQnh1ltrBYcnuGAvvbPAh1JlOUI4mQiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiUhUCFKNAQvWGI3viTiYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEB5ESh20VZee0zYDyFP+w6b59cQGhUPcOs1QYO3sOgzYSMtEgEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREIECCFSIEC5ajnG/LPRCOMRw0ZCoiOVkIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIlBaAhUvhDPB20vvLswoJ+I4mQiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiUhUCFC+Eo5IvvLChLWbWNCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACJQgUKXEEi0QAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgUpEQEK4StRYKqoIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBJAhLClWSiJSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgApWIgIRwlaixVFQREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREIGSBCSEK8lES0RABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABCoRAQnhKlFjqagiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIlCVQruUhLRGDxCIz7ZdHi7UBbi4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiMASJrBekxWWcA7afUUS8EK4KuYXbuHCisy2/PKi7LJ/FwENEv+u9lBpREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERGBZJ+BlZHVrV14PXpW57Mt651L9REAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERKAiCHghXNPGldQdnBGqzGWviAZWHiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwrBPwQrgtNqy8QrjKXPZlvXOpfiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQEQS8EG6t1Re6bTZZUBH5lWselJmyy0RABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABJZfAl4IR/X332W+W2+tyiMqo6yUWSYCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIrB8E0gL4cDQdr95lcIzHJ7gKKtMBERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABKrFEeBlbYsNF7rPv6/ifppQxf09fQW3cCk7iqticr26tRe5po0X+rIpHGq81fRbBERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABJZfAiWEcKBAaCax2fLbKVRzERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABEahMBDJCo1amgqusIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIgABCeHUD0RABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABCo1AQnhKnXzqfAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISwqkPiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIVGoCEsJV6uZT4UVABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABCSEUx8QAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQARGo1AQkhKvUzafCi4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIVBMCERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERCBZAI/fD/OPffUy47P0tjgoQNKk1xpRUAEFpOAhHCLCVCbi4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAILLsEyiKCW5o0zu3Wr1yyl5CvXDBqJxVIQEK4CoStrERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABCoXgeAJTsKwim23IOgT94rlXplzq1KZC6+yi8CyQODZ1/5xX343e6lU5avvZ7unX/lnqeS9LGa6NNvy9fenu/c/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stI9afz3eftv2q53+1emG7RNo+7L3115c3PECVeUfZl9/Yc2GLd9G4octSUIuuUWd2jO+fb1zdfP/0P5994PXzHq5MtlvFT1S9vv0N82537n+vL+/uLXFzWbb7JmqZK4eeuf13n28wmnX1W2/cAjlzSe675YLhtipgQI3GYC2//dduWEdFZg2073Cds89lEl0HHMkSeUCko50P2Nr53b7LrbLm2FrKUDxM953jPLNqSLs/PO+VYJkH30pDPKQfEaOEno66TjP1bGO7+9YjTBlu22f1x5nP8SjHvy3+9QugLM437j5PnachDuP756TlneAW96R3l6x/ag2WwtV5SmK9a3vfldpRuGU0/+RDn5ndBUv/bs5+5cnn7jPm8rV6LnxPUeL3td8463vac8///a6k5p6V72/PO+3XyqDRQmwFKvZN/oXlMnEBKm+3XbxWauYv1+24XsIQe+t1wNm0DUee1BybQcWMwVtDHe6Wnbl+cW+r9R9uHm9920BLWy72ro8NHpArdteS5dWczWcoAzJzJywv+n011F9o6b+WecvFa++Z/nlyoAh7/rA2W0BClyUDcBuO+0Ict0rZPwwvve88Hm05/4fOkCpM4v3dUmkPnWg99YXt+HvfP9ddCcbp+685PK+Pvu9ZZS9e4Tp322OePjn5l1Hlm/5z3/2eW9c9Bb3t2ku9l0Q/Kcp7+w+WxbKSyhybcfcFjpxjcBrVe0B37T7UdeW2mPabsMyQmf09rqB+d8/bwmr708vqp9bSxri0G8sryj3vuh4rztdJCtO+9UakgYNe/fYz9wYvPjH/203P/7v3tu84uLLi4HshPWikUOnuQ9eMS7jynzS5XJtN73cp3/fLevnozL+yMhmlHa1tPdv5784Y+XK9QTlsx7MUG+BF2ynQm6pEvPbOu3v/XdEkpNt7z3artITbtP28VOtj/htwRREthJZYq85vL+zbZn/9QTJWd//iulGkEqaHbb9k/arvjkhF9eqz/8wY+bg9tuUhPUzGsiy8zn5p77vrxJ1z4JQ2Z41nPYe6K7nLnez5X72fYffO/C8rkYm52nA67deQ17XXfHrfcHbVO6gcz7PNVAzvzMF8p+OewdS79H011O9lveH/ncvuRXv26esctT6yKG3qZrySyn7t8s65j3f3jodINGGPZ3YdB2D3tNDlrusGHLc18m/JzXeU5e77XvK8p+OPFDU3/LR/2MzN/rT57+ufK3dL993lo2Jye5Rm3j2JezfS49ue0y/eI2hJ0Konmvv6n9m573Qj7n0oZ9Fxl1GzLeZve9T/nbmc+d8vnahuDfc8jUa79Wu0k1zrxu8xmQE4T5nDnsnUfNLGau78dxrv/MSrhDgAABAiuVQL5v5bfHP+z6zCZVUfObof5LFdef/c9FJeh/zTXXlu3O75tU7E4ALiGXOm5u60Uz/YBSFTh/01+197+W30j5fdRt+T6cf/m+/NpXTwVn6m/U7njuExhFYNhvsDqPXDiX3xv5bvbJ0z5XfgvnQsneltf6sN/B+7/x4PKdt3faUR4P+056Vfs7OBfcpMv7HOtIN66fad8reb/k91yOReWYzLN6uj89+cTTy/GHeoFFXZdcoHhk+z5OpfO0zPMp7fGPkz50avmdn98Xhx78vjLscU/YttxmeH4X5PtrjnWcdMKp5cLB9BLQW/n88t9dWX6H5/dCLiLr/qu/Ob/+798s8+3+d7e2a+Z0uZrffvm9XgON3XHcJ0CAwPIU6A2R1eBbukGt97P8hM8mqdUuUHvXf5LW0bpMnsDS6Y3JW0drRGBkgX1fumGTbjUT/sq/BHv+cee7NPdtg1HHtd2eJhi0z79uWJ5/5pPWa/793EXN+066ojl6y02adMOZymEJc6UlTJVKXt1KZ70r0p4L7Nt6n0/FtBqAyjrt+9J7NHe8w6051Dp+qr7tv8c9m8OPv6I59XNTJwRTze41/3KPZq220l1ve/dxl5fg3IufM9XlULp03fvAXxeD/V+9UdnWg95/WQkJJSh0v+kuY+vy0k9nQnlZv8M+dHmZ/d03WKPZ68X36F1UeVyn612T//uYdZqftNXHPn7m1DonpFSrpk1NuPTs+mQMZkYa5jBsu5//rLs2x7RhwnR1m1ar5f36sptnltF7p27bsOdTIe3A6UDhhne7fbPXi5a0qvNJRbpUF8zr7qiPTHW1k0Dby9rAYr82bJvyuh24L9uZpvLZzy6+sTm3DTOmPezBd2p22WkqSFae6PxX17N3Xz77Kes3x59+deleNqMnGJd92x2vTtuZXbmboGGqF/Zr92hfV9nnbc9OA1udd11elv/yNrh6zEevbI5oQ3l5XT3ofms1e7buddzXte/7t7X75IvfWFT+Zbt/e/nNM8OH7Ys6nyU2cuBaGkiAwIokkINnOaD3iEc9tLnjHe8ws+q77vbscmVsKlflX9qOT9m+qSe964i5ojst3TAc1HZpmpDX6/Z+SzmJ+9jHP6acOK/BuRxcz8nmBM8SdMqByVolK8GoDDvg4DfUWS81zsyA6TsP2PJ+JZSWg31pe+7zsrYq2APL/Zwo7m3pljCVV3KA88tf+FoJm7zgJbuWbld6x83j2GR9EtDYb9+3lVESEEqAKS0V3HIFfAJGOUiYtkvbpeUL/2XXcj8nvEtXom0A4OdtpagD37lf8/ZD928OesuhTQ6QpmUZbzno9c1G99qwOa0NGyYA03uAMuOtfrvV28/tpf9IdLez3m9rq2aSWdvMeNNG9fEo+zDjPuGJf12COw/+qy3LMtKNaU6CXPab3810l9dv4QkIZt+nKl5Cbl8773NltPr6yIOEBffdb48SSHjDaw4or6McJM3B3d/8+rclZPTcf3pWk+pRCbfkQHXM0o1oQlgzVXOmt23Lre5fTrTk5M4jH711s+V01x5doe7ye9c7B15zoibTv/G1F5ZlZZ4JVM7WcgIpFXgSqkgoJoGGBD5yJfMJx360HNA9/KiD2+/bty+hnrM+96XmoP0PbT76iWObnZ66Q3ui6RczXcEmbJjA1q8uvmTJxXVe3zP7u7NRncEz06WLoT1e9vryOGbvbEvnd9/zMyO2d/bb/zUlaPiREz7e5F/Gf+0bXtnUrlT2eO3uJaR1YLveaQmqZX7rrnfnEnLsfS+Xkdr/hm1ffS3W8ettAnubbX6fNqByYNkf9Qr1+vlTx1ut8wU6r+fnv/gfSygvYZJM//jtti1h0yuvuLoNn96tVKHIyYS8JtMyztHHH9bUioypKpgTeq966b5tVcHDm79uP9Ne3V5Jn65aUs0v+zaV/168+z+X6n1ntiHDWhWxrlNuc1LhiGMOaYN2h5fPizyXZR3w9tc3qTD4nkOOKtW2tv+7J5Sw55777N78W3tCJq/7ZzzrqUPfE/P9fNikrf73hTa8V7c/25LPybTVpl9E9WU16HVdJuj89/urc3Jk8Da9ve1Ca/83HNyaTFXCy2drQrIzr+d2fnn/Xfijn5TQZWaf9dvlOTt3lnTr3X6fjwkuJlx4YvsZvPcr9yv7K59VOcGazbt1G+tWdp679albF9LeG/R3YZTtHvSaXHudqerN3QVWj7quGda9X8cdtC/rn4Q63Vz2ZU4K5v2Trq5rZcW8//K5kL8Fwz4j6zJz0vDE4z5WTpxlnRP4TNfa/VqdpjtsWfdlv+8Ydf7pxvpXL76k/Xw+pVS5yPOpylmrFfZ+X6nTlRfRzIOpO6Psr9e/ea8mAe/6+ZrP+IS2H7L1g8tM8nlx8Lv3L9VMExZNi1/+ntTP9lH2Yf18nHX9y5z9R4AAAQKrkkD9O9L7NadWBsnvl9523Efe11aK+99yMc3ObdXkfE9OleS0GlzrTpO/8fn+2m0zv7emVyDDUyk3IZu/euhWM99tchyhtlSVz2/tfKfXCPQTqN8Z6+u6d5xBv8FS0T/T5/dcKpnV4GUqhe/7xlf3zmrm8aDfwamsmB4HUtV7UKvr2/s+HPadNN2T5qK2hz/yoeXiiv0P3Ld5d3uhVfeiv91f+cImx8lq+3F70UUuLsoxlpn34fTAm2++ucnv13Qh+7gnbFOefW570WHa+w+fuhAmxwH2P/B15ZhEnk9ILcev8jv11bu/Lk81ucgpLr3tq1/6j/LUE9uLPHrblm0gNscQ8j11p6dOXQi6eoVpR/77p+9ULh5NN6m11f1dH7slQIDA8hRImCxdjqYb0XSPWr8r5flUjMvtJLZJC+dNopF1WlJgtUWLFi1e8qkV/9Gi664vJ9tW/C2Z/xZcdc3iZoP1e79uzn9+K9qUN/95cZPuPmuXlHNZ/3SrmF6F7jTdTeRcpu0d97++e30Jte2/x0ZtsG7N5tq2m9a7rj9a/vSPN9zSpGette+09Enh3uXM9jjdwq7TdieZbiUTpPvOD28oIbmXtMG5v9n2zktMlu2+6abFM93ILjFwxAcxTw9ad1hr/uvcu6hlcUgoK4HDUbsG7V129/GxbbDuq21w8pTDNytdb87FKgGxrEe/MGN3GYPuz2VfZrvXvP1qy7Qfss6pnrjG7Ub/HEmVvARQ+7VX7nb3Jbr77TfOsOd+f226CF69fY31X6e8v/LaG+Q8jn0xbD0NJ0BgxRLIwbzft908rrfeum1wZ7S/0blCNAG33u7O0sXg4sW3lIDdbv/QBj3ets9M12CpFnPhD3/avOOw/QtQupLsHafKJfj25CfuUgIxOYieSmrr32W9pZZXx++9zXpc065jb9cNf/7zn9tKoU9vXrL7bqXyXXe6VCO7453usNRVrnWcrEO6T+3d5gzvN22qQKXbyxycre01r3pTCRWkotht3Wbbh+NYr3Q9ktbbBUbvvLMO66233lIHbOt4eW3Gtnc/1uHjuq0WdVkvet4r2iDen5pTzjh24CLyOru2rZqwXnuyqPeg88AJ24EJbKYaWA7ML2tLtcJ99nhzCXIlyFa3Y5T5JtB3/fXXzwTDeqfJ6zjhw9p1cIb3vpd7p8nj+W5froJP97i16mK/efc+F8d8ntRwW+/wPM523NiaJ8jX2/K5kG5ichKg2xJ66u7bBIYSWjn+5CObhENna/n8ytX3w17//aYf9p7oN81sz6X76w3utkEJ6Kbyx5rtyaAEUYe1ZXldd+edbYlp9mk+vz941InNxz5yRnP6504sJ1i648Y/wdFR1q87Xfd+PqPz2hnnCZR+n+3dZc52f5TX5GzT9nt+EvZl/ubXz5ZBn5GD/lb227Z+z81nX47yuZT9cnX7vr7rXe8y85k96LtIv3Wby3M5+XjDH//U93OnzmeY17D34/Jc/7qObgkQIEBg1RDI3618H9MIrIgCw36D5fdpjs/UCzWHbWO/38Hf+db3mr1e+cbmwEPeVC6gGjaP2Yb3+05ax+33Psy65PdS9ztsHX/YbX7v9zvOl2Mt+Y2Y30+ztXzPzO+z3kpws43veQIEVi2B177638oGJ0yW1vu4PDnkv/lMM2SWsw5e1mUt6/SzrlhnwLiWMa75dFZtpbi7quaGRjvbt1LsYhuxKgkk+DSfEFyMxhni6ponvDNqCC7TjSOI96bDftus2wbhntFWv7vy939pPvGFa0pFra23Wvpq/Gz3COeGupu01P1lCe0tNbPpJ5bFIZXllkebq9V8X4vddZ/LvhzHds9nnXdtqy+m0mK/ducx7Iu7rDd4f67XVk8c1uazXcPmaTgBAiu2QIJduepzLq03MFKnnQoD3a4cXPzkWR+pT5fb3V703CUe5wBk7zhLjDD9IKGGDea4flmP3vBUTuD/9/kXlLn2dmuYJ7tBn+lFL3HTO7/uwH7T5grk/Ou2d733rd2Ht+n92fbhOFZq1ADQsHXIa3OQ+zjWNd1lppLUXm1VqVTwSlDnovZKwN7Xa79l5XU26MBxv2nqc8sS+Knz6Hc7V7McFB8UIOv3Oh7FZr7bN9f3egwSmhu0DRmn33bk+bR04dTvtdi7b1M96rTPnFCmGfTfsoQb+63HoGWNOqxfAHC2aZfldV3nmc/bZ+z0vOYf2+qOj338o5uvtN1rpVufVFvboK3I0Nu6geHeYaM+Xh6fFf0+20dZn1Fek6PMp984C70v5/oZOY79MJ95jPK5lP3S+31n1O8i/fbFsOcSJrj9eoMDBcO2ddj7cXmu/7DtM5wAAQIEVi4BIbiVa3+ualsz7DdYfp/O5Tdqv9+Pv7jo4nJh4zaPfeQy8fb7Tlpn2O99OLUucztmd+v8+p/+znGD3t+7dZp6O2posI7vlgCBVUugBuBWra1evlubKnQX/fyXM6HC5bs0c19VBPp/E1hVtt52EljJBdJt53tPuKJ51wenuj1NN6v77r5hMyxQtJKzrJCbtyLsy1S963b5u0JCW2kCBAispAKnnvLJ5pQTTytdbz7sEQ9ZSbfSZs1VIK+FdAl4/DEnz3Tpl+5vd91tl7nOyvgECEwLJECWSgkfOOJDM11vp8vSvdvA6TgrtgFf/gI+I5e/sSUQIECAAAECBAhMvsCznrNzs3PblWdCZBoBAgQIrJgCtVraJK59umRtzmpKGG5Z1q9277os8zDtyiOga9SVZ18usSWraonDJRAm4EG6WL3p5lvarhpXb0963HYrdGPb5elf/rJ4LFXmbrutuG2X/OfWr62aPbDbzYVYQ/tyIZQtgwABAre9QLquSLWqcR1kTHedf2i7k9jwnve47TfOGkykQLoGWaftyjYVeFaklq5Vbrrp5lL1TMhoRdpzy3dd061O06zWtyuc5bvkJed+/R+ub7tlXes2X48l12rFejQp+3JF/Yxcsfa2tSVAgAABAgQIECBAgAABAiuWQA2YzaVS3Hymma9KXdZ8p6/TzWX76jRuJ0NgVc0Njb0i3KWXXdec+91Ly17d+J7rNttuvfESe/i0sy+cddgSI3pAYCUQaHsfWW5drc6FZ601c0JzxTqpOZftW4hx12i7tl1jAi54si8XYm9bBgECBG57gbl0WzHK2qa7zlG77BxlfsZZ+QTm0uXgJG19ulYZ9/tlkrbPusxPoF+3OvOb07JNtfY6ay/bDEzdhggHd6+5UEQr6mfkQvlYDgECBAgQIECAAAECBAgQIDB5AgJsk7dPrNHCCIw9CFeDbln9hOI2acNwCcTVx3mu3j+vDcztsuNWM8PLAP8RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmFCBdMd50c9/2cy18lqm0wgQWH4CYw3C1Upws4XbEojb8/nblK1JIC6huUyT8TUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECky6ww07bNc1ZTQnDjbquCcGV6UadwHgECMxZYKxBuFrtrVaAG7Q2o4wzaHrDCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCy0QEJtW7xSdbeFdrc8AsMEVh82guEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCSBcYWhEs3p6kIt83WG4+8vakKl2lql6ojT2hEAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwLTCWIFzCbPmXYNu200G4BONqqyG5PE7orQbfdtlxqxKcO699LtNrBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgrgJjCcLVhSYIl9Ybasvzl8wSdOsdt87LLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGEVgtUWLFi0eZcRh46TKWyq7JfSWSm+jtPlMM8p8F113fbPRvTYcZdSVdpyrrlncbLD+aivt9tkwAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSWFlhVc0NjqwiXLlETgptLhbe5BueW3m2eIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFVXWBsQbhVHdL2EyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBtI7BcgnCjVIWr46SKnEaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOYrsMZ8J+w3XbpHPe3sC8u/OnyXHbcqXabmccJvGd5tmUYjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLzFRhrEC7V3fZ8/jbNud+9tITeslLdim+5v00bfKvV4ITg5rvbTEeAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVWCsQbg600EBt0HD6vRuCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAqAKrjzqi8QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwCQKCMJN4l6xTgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwssBy6Rp15KUbcaUU+OWli1fK7bJRBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECK4/A5huvtvJsjC1pBOG8CMYu4ENi7KRmSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAAFdow7AMYgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJl9AEG7y95E1JECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEBAoJwA3AMIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHJFxCEm/x9ZA0JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYICAINwAHIMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYPIFBOEmfx9ZQwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYICAINwDHIAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYfAFBuMnfR9aQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAYICMINwDGIAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCZfQBBu8veRNSRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBAQKCcANwDCJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACByRcQhJv8fWQNCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCAgCDcAByDCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGDyBQThJn8fWUMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGCAgCDcAxyACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmHwBQbjJ30fWkAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQGCAjCDcAxiAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQmX0AQbvL3kTUkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQECgnADcAwiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgckXEISb/H1kDQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBggIAg3AAcgwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBg8gUE4SZ/H1lDAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBggIAg3AMcgAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJh8AUG4yd9H1pAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBggIwg3AMYgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJl9AEG7y95E1JECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEBAoJwA3AMIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHJFxCEm/x9ZA0JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYICAINwAHIMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYPIFBOEmfx9ZQwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYICAINwDHIAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYfAFBuMnfR9aQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAYICMINwDGIAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCZfQBBu8veRNSRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBAQKCcANwDCJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACByRcQhJv8fWQNCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCAgCDcAByDCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGDyBRYkCHfpZdc1+acRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFxC6wx7hnW+Z373UtL+K03ALfxPddt8m/brTeuo7olQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLzFhh7RbgE3047+8LmvDYIl5bQ2zbTobd6m2EZpzckN++tMCEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIrLICqy1atGjxuLa+huAyv4TeatW3VIdL6z6uQblddtyqhOXKCGP6b9F11zcb3WvDMc1txZzNVdcsbjZYf7UVc+WtNQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC8xJYVXNDY60IVwNvCbfV0Fv2Ru73Ps44aXWa8sB/BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgjgJjC8Il0JaKcKkEl+5Qh7XaZWqmEYYbpmU4AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMwmMLYgXAJtCbd1K7/1W2jtPjW3GTfT5L5GgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTmIzD2INygleiG4LpV4wThBqkZRoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKDBMYShKtBtvPa7lFrN6f1ti68huDyeJcdtypPZ5waiKvzqOO7JUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECowiMJQhXF7RN29VpWkJtCcWddvaFM4/r/YTgavgtAzOeRoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE5iuwxnwn7E5Xg20JwNVqbwnF1TBcrfbWG4Lbdjo4l/HqPLrzdZ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAwTGEsQLgvpDbJ1Q24Z3huCy3NpCcn1Tjs1xP8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGC4wNi6Rk2YLaG2cztdnSYMl8pws4XgMq4g3PCdZAwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmF1gbEG4hN4Shks3p7Ur1Cy2Pt+7Chmndolaq8f1juMxAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYJjC2IFwWVANtp5194RKV4VL5rVspLvczTnea8sB/BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgjgKrLVq0aPEcpxk4eu0etXZ5WqvEpYvUWimuDputWtzABYwwcNF11zcb3WvDEcZceUe56prFzQbrr7bybqAtI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgKYFVNTc09iBclU3VtwTeavitPp9gXP7V6nH1+XHeCsI1zar6gh7n68i8CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKxoAqtqbmiN5bWjukG3GoZLAE4jQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLjFFhuQbjuSgrAdTXcJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFxCqw+zpmZFwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWGgBQbiFFrc8AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBirgCDcWDnNjAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQWWkAQbqHFLY8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIExiogCDdWTjMjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYUWEIRbaHHLI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGxCgjCjZXTzAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgoQUE4RZa3PIIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYKwCgnBj5TQzAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFhoAUG4hRa3PAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYq4Ag3Fg5zYwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEFlpAEG6hxS2PAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMYqIAg3Vk4zI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGFFhCEW2hxyyNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBsQoIwo2V08wIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYKEFBOEWWtzyCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCsAoJwY+U0MwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBYaAFBuIUWtzwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGKuAINxYOc2MAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBZaQBBuocUtjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTGKiAIN1ZOMyNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBhRYQhFtoccsjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbEKCMKNldPMCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGChBQThFlrc8ggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgrAKCcGPlNDMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWGgBQbiFFrc8AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBirgCDcWDnNjAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQWWkAQbqHFLY8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIExiogCDdWTjMjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYUWEIRbaHHLI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGxCgjCjZXTzAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgoQUE4RZa3PIIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYKwCgnBj5TQzAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFhoAUG4hRa3PAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYq4Ag3Fg5zYwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEFlpAEG6hxS2PAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMYqIAg3Vk4zI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGFFhCEW2hxyyNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBsQrcpkG4Sy+7bqwbY2YECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsOoJ3GZBuITgTjv7wubc71666qnbYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYm8Aa45hTrex2ySwV3ja557rNxu2/bsvj/DtvOgi37dYbdwe7T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIERhIYSxAuld0GtU123KoMroG5Om7Cb5lWGK6KuCVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBuQoscxCuhtu2aUNtqfzWr6XyW+0Ktd/wPJcwXL/KcbON73kCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBCBZQ7CdRl7uz/tHZawXG+r1eBqV6m9wz0mQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKDBMYahOsuqFaAS/gtXaCm1ds63rltFbi0hOB2me4+tQ5zS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIERhFYfZSR5jpODcFlutm6S804qQYnBDdXXeMTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFdg7BXhuiG42lVqnqutPlcDcPVxHe6WAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMRWDsQbja3WlWohuK667Uns/fpjwUguuquE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC8xEYexAu4bZaAS73hd3ms1tMQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKjCow9CLft1huXZZ/33UtLIC6PB4XhEpobNHzUDTEeAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKyaAqsvj81O+G2b6UDcJW3QbbZWu07tdqc627ieJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/QTGXhGuLiRhuE3arlE1AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwPAWWOQhXuzWtXaEuz5U1bwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CuwzEG4zDDdoKab027rfVyH1eBc93Gqx2kECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGA+AmMJwvUG2RKCO+3sC/uuT4JwveP3HdGTBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgBIGxBOF6l5OwW6rE9WtCcP1UPEeAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC8xVYLkG4rIzA23x3iekIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYC4Cq89lZOMSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFJExCEm7Q9Yn0IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYE4CgnBz4jIyAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEyagCDcpO0R60OAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECcxIQhJsTl5EJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYNIE/j9yNTMvnqDOLAAAAABJRU5ErkJggg==" + } + }, + "cell_type": "markdown", + "id": "8cda6c13-7fee-4284-aacf-81a506a426da", + "metadata": {}, + "source": [ + "![image.png](attachment:95b9b198-55c9-4a67-b0bf-103c9ae0272e.png)" + ] + }, + { + "cell_type": "markdown", + "id": "e1525230-e10c-4f48-b951-bc73642bb3e4", + "metadata": {}, + "source": [ + "And at results:" + ] + }, + { + "attachments": { + "66422f79-9b46-4e07-9796-c1b350c26c9c.png": { + "image/png": "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XMhths8cRdqiAnD5heDCl1deafiIweGTyvR9vAulbbeCA3FLXGvUP7atsYlb19j0HRsszYXiIo346Bjrl9DYdq+VZP3da0J0wXE07bu8R8FHUN57L8L29xjc3xq49qVKPn73zU/WpEkjGzFyqL379kc24beJfgs9e3X37Ujz29wBB+3jA3Gaf88dD9uJo4/2lebmuxKDTzzyX+vdZzcfXNP8fffby17476u+fepN191po089zla4dqpPPPqcKezWqXOHUBhOZQlV9U1Bu6+++M61VO1izVs08+1R16/b4N4n2RPP3G/16idapy7t/ZdNX1gF7RgIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQV0DBNhW/Ku7QOtFu3SOPOaS4q5bJ8soI7TFkgO8mWZoNahvaVnmN2tGxtsFVe4s0lqZusefWzbBJ29ZGmp1n2vaMdBu7ZaX/iY2KtlF1W9noBp0tLp/gm/Zd3qPKB+Jq16ltF1xypt32r3/bdtfG9MUX3vA/AUx8fJz9/fJzC0x26ib/wbUuVYBusSs9eM+dDwer+9cU13p13dr1prarJ59yrH3+6TcuBLfSr6P1gqH05Sljjg8+uvDcnqaqdRo333iPJTVraq+/86yNdtt45MGnbfmylXbkISdb06SmtnLFKl8dTpXoDjviwNA2eIMAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAI7BaZOmbHzQzHfad3KCsTpUIeN2MMmT5zqCmylWq/e3a1121a+CJiySZFGo0YNXXGwIT7TNGXyNKtZs6bfRqRly2pa3RgXSkvNubVUVwHu5fWz7dPkRa6dqpqiFn9oG59sWmTjt662sxv1sD4JjfJsxO87z9SynVDlA3E63f0OGOkrwz3w78dt4YJFlpGR6VuZ9urTwy6/6kJr1bpFgSoqg3jP/f+y119511575R1T9TYNJSn79e9tl15xntWvX89Pi3ftU59+/kF70O3rh+/G+hCeQmwdOraz8y483Qbu3s8vp1977zvC/pw0zac61Xo1Jiar7erxJx5pSUlN7LlnXrEFrgqdwnUaXbt1sjPPOcUG7bFzG34GvxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMALHHvC4dVW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ECi1AIG4UhOyAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgaogQCCuKlwFjgEBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKDUAgTiSk3IBhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBKqCAIG4qnAVOAYEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFSCxCIKzUhG0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEKgKAjVWr1pbFY6DY0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgVAI1EmrFlWoDVW3l5E1brHmLpKp2WBwPAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAOQvQMrWcgdk8AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAxQgQiKsYZ/aCAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQzgIE4soZmM0jgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghUjACBuIpxZi8IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALlLEAgrpyB2TwCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDFCBCIqxhn9oIAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFDOAgTiyhmYzSOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFSMAIG4inFmLwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAuUsQCCunIHZPAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQMUIEIirGGf2ggACCCCAAAII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EUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEylyAQFyZk7JBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqGoC8VExVe2Q/nLHUxHXgEDcX+624oQRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEPjrCQyp3eyvd9JV7Iwr4hoQiKtiF53DQQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgbIXOK9xT6uICmVlf+S7xhZlr2tQ3oNAXHkLs30EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCodIEe8Q3shbajbO86LQnGVeDVUBBO5rLXNSjvEZWcnJxZ3jupyO0nb9pizVskVeQu2RcCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAVEKBCXBW4CBwCAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBA6QUIxJXekC0ggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghUAQECcVXgInAICCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACpRcgEFd6Q7aAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQBQQIxFWBi8AhIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIlF6AQFzpDdkCAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAFRAgEFcFLgKHgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUHoBAnGlN2QLCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACVUCAQFwVuAgcAgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQOkFCMSV3pAtIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIVAEBAnFV4CJwCAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAqUXIBBXekO2gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUAUECMRVgYvAISCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCJReoEbpN1H1trB61dqqd1AcEQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQLkK7JKBuCZNG5UrGhtHAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCoegK0TK1614QjQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQKIFAmVWIW7Jiky12P8UdQ/q2Ku4qLI8AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAHoEyCcSNnbjExrmfkozWzRKtlfthIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFAagTIJxAUHMNhVe1PArShD1eQUotMrgbiiiLEMAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAQQJlGojLr9qb2ql+9uNcH3w7YHjH0PGMC73jDQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKlE4gu3epFW3vqnNW2afMOm+ZeFY5jIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFDWAhUSiFMILrFOnD/2sa5NKgMBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBshYo90DcH9NW+Opw/Xs0tx6dmpT18bM9BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBLxAjbJ0+OKneRYbG2NxNWPsuAN7+E2vWrfFmjSsbf16NLPPfpzrW6a+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CCCAAAISFhERcSozOUSEHxKtSkNLH4E9u/fJ4cNHpIIJ9WiAKC2bTjF63EyHqlXjgs91+NAR2bFzl5QvXzZOUC+l16RTmW7ftlM0DJc3KLASauykmugUnPv27ZeKFcrFuS//+Hr/Ou2gVsfLnSe3f1emXj5x4oSZlnGvnUYybzKm60wKjla52rVztw3waBjM306ZuXf1GWhQsUiR6OqA/v0ZYTk9rVJyv+EHIuxUpjqlpgs+pWS8UMeePHnSVvvTKV4LFiqQZucJde6UbNPv+KFDh8w7WCSgEluoMSMjI011tP1SomQx816mzjTVeh59j3RcDSnmSeC3Rn8bI8IP2mp+p3uOEREHzVSvR2xff7At1H0ltE2rZep/B3T62NOdM6Fx2IcAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkHkFCMRl3mfLnSGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACWUogdv6xLHXb3CwCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBmEyAQl9meKPeDAAIIIH/cUGUAAEAASURBVIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCGRRAQJxWfTBc9sIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQGYTIBCX2Z4o94MAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIZFEBAnFZ9MFz2wgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAZhMgEJfZnij3gwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghkUYEcWfS+M/Vt97tnfaa+P27u9AJfvFHl9J3ogQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAJhOgQlwme6DcDgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQVQXCIiIiTmWmm48IPyRly5XOTLeU5Hs5cFDkxIlM9ViTbMABCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghkBYHs2UWyZQuT3LlEcufMCnec8D0yZWrCPmflXg3DFS8SdlZeOxeNAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACSRM4clTk6DFzjKmhpcG4rNyYMjUrP33uHQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBM56gbx5RHKZ0mjHIs/6W0nxDRCISzEhAyCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACZ1ZAQ3GnTpkScVm8EYjL4i8At48AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKZQ+DEycxxHym5CwJxKdHjWAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgQwjQCAuwzwKLgQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAlAgTiUqLHsQgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAhlGgEBchnkUXAgCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBKBAjEpUSPYxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBDKMAIG4DPMouBAEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIGUCBCIS4kexyKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCGQYAQJxGeZRcCEIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIpEciRkoP9x85ZuNm/6i23aVLBLm/eHi6bzF9wc/uDt7OOAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFIEUiUQp2G4ufEE4iqWKWSv59vJS+O9LkJx8dKwAwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIJECqRKIc+dqbarBuQCchuS0Kpy/+fdrtbj4QnT+Y1hGAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIDEC2RLTKbF9NAxXwfcXfFxwQC54P+sIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIJFcgVSvEne4iNBCX0NSppzue/QgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgjEJ5AugTitGqfTpYZqbeLZHqov2xBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCITyBdAnF6coJv8T0CtiOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCKSGQKoG4uYs3BzvNcU3VaoG5bSCHA0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBlAhkS8nB7tiKJtAWKtSm2/Rv8/Zw++f6u0/dvsn80RBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIqUCqVIjT0NtVPeqd9lq0n5s6VcNw8VWNO+1AdEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgSCBVAnE6ZnzTpboAXNB5WUUAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgVQVSJRCnYbi55i9U0+lUaQgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgiktUCqBOLcRbZuUkFcAE5DcjotKg0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB9BDIllYnqRCiMpwG5NzfJsJyaUXPuAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAlhRI1QpxOm3q3AQYNQz37eSlCfRgFwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALJE0iVQFwbM1VqqKbTp7pKcTqdaqgW37Gh+rINAQTSR2Dvnn2yccNm72Q1a1eX/Pnzeetn68LJkydl8b/L5NSpU/YWSpUuKeXKlzlbb4frTgeBpYuXS2TkcXumgoUKSvUaVdLhrGl/ipXLV8vhw0fsifKZ73Yt8x2nIYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkBkEwiIiIqKTIZnhbsw9RIQfkrLlSmeSu0nebezZf0qKFwlL3sEchYARmDxhqjz/9OuexZvvvSgNG9fz1s/WhfADEdKre1/v8vv2v0Juu2OAt84CAsECl/W8Vvbt2283N2vRWF59a1hwl7Ny/aZr75Q1q9fba9cw3PufvHFW3gcXjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQKEBuSCRbIAlrCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCJydAgTizs7nlmmv+pfJM2Trlu2Z9v64MQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEg7AQJxaWfLyEkUmGLCcFMmzZCP3/+MUFwS7eiOAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACTJnKO5BBBDQM94sJw2nrfkFnKVe+TLpe2dEjR2Xzpq0SfiAizc578uRJ2bJ5m+zbu19OnTqVpPNERByUbVt3hDzu2LFIe+36mdh2/Phxe0xkZOKPiW/s8PAI2bRhsxw9eiy+LumyffeuPbJn995knSs1PYIvQK9p187dIZ9dcN+kru/csVt2J/OeQ50rKuqUHU/fU31f06qpx47tO5N8jqioKBOW3SZHzPc1VNNxk+qhzyepx4Q6d3r8hoQ6b/A2/a3QKpv6LJPa9Bg99mDEoaQeetr+J06csL856pTaTX+D9LrT8p1N7WtmPAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBtBPIkXZDMzICiRPwh+F697tMWrZqmrgDU6HXP38vMhXpPpfF/y71RitatIh0v7CzDLjlGsmdO5fdPvKDz+WTj770+vzfw3fJhb2623UN6Nzc/245fPiIXa9Vu7q8/8kbXt/xP/4skydMCziH7ryidy+5dkBv0fO5duetg71+l1x+gTRt3kjeHzHKhj20T758eeXKPpfIjbdeK8uXrpLhr74nSxcvd4dLqzYt5IGH7pSSpUrYbRqOubhrH2//vYMHyfx5i+S3GbO9bQ0a1ZPBQ++WSpUreNsSszDuh0ny1Wffedemx1SsVF769r9Sel7URcLCwhIzjO2TXF8NwHz03mcy6acpsm/ffjuWet5+943y9effy5rV6+22WwddL/2uu8ou+//Zt/eAPDH0eZk57Xdvs3ro861cpaK3LTELf875Wx689wmv6wuvPSHvvz3Ku4bvJ4wWvc+fxk62ffRZTpz+rddfr/+yntd66/r+XX9TX9m+bYf0uewmb/vTzw+VZUtXytgx4713Tse6+/7bpMeFXbx+SVnQkNKnH38lY7+b4I2px9drUEcG3XOTNGhY1w53YH+49L38Jq+PPu8PR7/pfU9ef+kdO4Y79zMvPCLndWhtV/9duERGj/palvy7zDted7Ru21Juuf16qV6jiu2n/wRbvvvxa/Z5zpg2y+tTp15Nefjx+6V8hbLWWQO17h1Qjzv+d4v5jnbz+ut7MnrkV3Zdz9V/QB954+V3vWP0vbnsqovk2huulmzZEv/uJvY3xLuQBBZS4jvl55nyqfmN2rRxi3eGq83vqQZl9blq098HfS+DW2TkcRn14Rf2z+3TZ3vbHQO85+e2J+bT/zumz6BU6ZL23ddjL7/qYvMb1kv6XXGLN9Q99w+09m7De2+PlC9Hf+dWZdKMMZI3bx7p3/s27/76md+ZquY5jgyqKKr3fNPA/pIrV/RvtzcICwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACWUaAKVOzzKPOmDd6JsNwC//5T+67c6gXQHNCGqrRoNfN/e8SrTykTYMyGrJx7e3XP/RCPe+P+MRb1v3X39zPdtMgioatXn7uzTjn0A7ffTNObr3+f3LoYGw1piOHD9tj9Z8fv59oj9fKR65p6E6DS08OfUEG3nhvQBhO+2iQ6P/uecyrDnUqqErUay+OCAjD6TEaBhw44F5ZsWyVriaqffHpt/LqC28HhOH0QA3jvDjsDXn6sZcSNY7rlBxfDcMNuf9J0WtxQSgdT5efffJVL4im2zTwE6pNnjA1IAynfdTj+j6329BZqGPi23biRGBFNQ3HuUCeHpM9e3YbTnLHuwClW486GeUW7aer+HcyaPujQ4bZe/Yfr8vPP/26ff4BgyRiRSt3PfHIC/LF6DEB77EeqmHLO2/5P/su6nrhIoXkqr6X6qJt+rxd2Erv1S3rTg2GntvuHNtPw013D3xQ5s39J8455s6eJzdde6esXLHG9tV/gi31XfeH4bSPBkLvv+sRG0L8+osfAt4B9Xjp2eHy28w/tKttx44edYv2ueh3M/i90eman33yFa/f6RaS8htyurF0f3J99Tdh2OMve2Exdy518T+TQ4dif19cH/1cv25jQBhOt+mzfeTBZ7xnr9sS2/y/YxPG/eKF4fT47Dmyy8mg78qxY4HVJYOrTWplQG3+ynX6vuo9+38ftY/e86gPY8PLuo2GAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJC1BAjEZa3nnaHu9kyG4TS88/ADTyXooYGQ0SO/tn2KFCksN99+nddfAzffmODFf4uWBgSqWrZuJm3btbL9NOjjrzymgTqthuVvOsWjhlmS2oLDQf7jNdzy91//+DfFWfaH+3Sn3s8H73wap1+oDRoi0xBgQm36lN9k9m9zE+oSsC85vtN++dUGrPwDBd+Xf19Cy6GOe++tkQkdkuR92bKn7s9tqGv++vMfknRdOnWvBhv1XU2oaZBSp6TV1ufaKwKqGn5iKotpZbN3hn8UMMTdDww0lday2elIteKXv+n3xFUxdNtfePo1t5joT/3+/P3Xgnj7a1gyqW2qqbS2+L9lpz0sqb8hpx0wpkNSfXV6Ww3ypVXT74E/iJbS82gwNK2bPvfgUF1an5PxEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQyjgBTpmacZ5GlrkSnH11spk7Ult7TpOo5vwyqhqXTTV5wcTfZs3uvvPDM66LTO2r79suxZqrNK20A6OJLe8oP3473qjDpFIO/TJpu+7l/7rjnZrcov/qmJdWNI78YIaXLlJTwAxHSq3tfr9+ihYu95eCFJ4YNkQ7nt5VdO/eYalhDvXNrvybNGsrTLwy1UwN+NuobbzpI3bd+3SY5p3VzXQxoGqJ68/2X7PSUWlnpntuHmLF32z4aLNKQj3/qyoCDY1aGv/Ket1nHe/K5h6VZi0a2wtwDdz/qVQDTkE7b9tHTZXoHJLCQVF/197fBQ++xU7VqNbg3zVSyOlVtYtqID1+2U4Pqs9eKYxoo1KbVv7RqmVY6S25r36mtNGhU1wbD8uTJndxhAo7TqT1ff+c5O6Xr2jXr5cZr7vT2LzdTqSalaehzoplu1jW91yGP3Wunvp0+ZZY899SrbpcNgA4y77dOXTnofzfb6ly6U8OU+h45N93WtUcnb5rVOb//pZu89tjTg+X8ru1NFcMoGXTz/bbSm+7Ud08rmOXPn8/r6xYaNakvw1561J577HcT5a3X3ne77KdOI6tTs2o47Nbr7/HeQa0ip6G/UNP3aqW7W0zINUeOnPL5J1/bqXfdoGO++tG7frct+DM5vyHBY4RaT6qvVrP0N52i9H//d7utSKhTNWvFxsS0Bx66y35/9Lm89Oyb3m+bPt/JE6fJlVf3SswwIfto+LFL9w5SpmzpJE9FHHLAmI06JW/b9q1kz5598sjgp713SXfv2L4zVc+V0HWwDwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBJIncNjMnrVt2zYza1e4/d+OkjcKRyGQPAEt7lGoUCEpW7asmS0u7v9GmbxROQoBBDKKAIG4jPIkstB1aMWh1avWeXesldb0L7HtpTcSruyWmHEWLYgNoVWpWkkuv+pie1j5CmXlyj6XeIE43bhpwxYbiMuZM4fcff9AMyXpo94p/NP1acBGx3LtHtN34J032lWtDlaiRDE7lWm+/HltmE0DV9o2rt9sP4P/0XBSx87n2c2lSpeQdh3a2GktXT8du2DBAna1W4+OAYE4F3Jzfd1nr8sv8AJv5cqXkZsHXhcQelq/doO33x3j/9y+bYcXNtLtF17SXVq2amq71GtQxwRqutqpYHWDBpx0Os7Dh45In8uiHWxH3z8a6nv25cfslqT47t9/IGCqRK04dsHFXe04uXPnkv4Drk5UIK63eWZ63dqKm+dz423XymNDnrXr+s8GE47T5/DBO5/YMKS3w7fwonkfGzSs69sSvXjN9VeZwNX1cbandIO+n5WrVLTDVKtexYYOXTU+DS9pZSwN3w26+QHR5xmq/TTlKxuYCp4m97ob+4qOqa37BefLZ6O+9kKY/u9s564drIdOqarNH4bT9VsHxd53524dpFWbFrrZtuIlitqQmgav2rQ9J06IyZ3f9dfPfv2v9N51vS5/IE6rLrbr2MZ2r1CxnPXQ6pOuaQBVpyINbtfd2MeGSXX7Ndf3lnE/TPbCoUv+i76v4GP868n5DUnMM9FzJMVXq1S6pgHVu+69VXLmzGk36Xdi5Aefe/fl+gV/agj2IvNd1qYV3G674wYvEKfb1pngpTatJPjUoy/a5eB/rr+pr1x9zeXBm+1U029/8LLob5hrmzaE/s1z+xPz2eKcpjYEqX31t7VL904B75JWNHTfk8SMRx8EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIXwENw61YsULKlCkj1asnv0BF+l41Z8tsAhrI1Pewdu3ahOIy28PlfrK8AIG4LP8KpD9AVNSp9D+p74xaCcwfGNMwj1aVcu3IkaNu0X5u3bJNtEKVNg1/nXveOfJHUNUrDaJowMbfNISj4SSd2lP/tBqX/7yur4aYEtNK+gIl2j9nrujQiy4XL1lcP7ymQbRQLSwscGv9htFhMLdVqyol1FYsWx2we4KpwrYoJtinO7SSnb/t2L5LNAAY3z0Gb0+s745tgdfZJmgqWv81JLScPUfg9I3B1eC2x3gcOxYZ7z2cPHEy5CkaNqoXcntKNwY/w7LlSgcMefJk9PUcNtXWgn1dR62apm3pkhVuk/388N1PzRS+X3rb9Lvi2ro1seG6bNnC5O77bpOBN97rdnufGrL0T4eq3408efLIvD/n25Di+rUbvZCdd1DMQsxlBW8OWHchULcxuPKeP3ilfY7H811wx+un/v/+aNq8kRcC0++pOsY3vWdyf0MS80yirydxvvoc/WHEpi0aSx5TwS+pLfg+NRyqz9D9Xm3busMOefy4CbjG83ul35FQTUOKwc8kVL+UbitdumTAEPH9BgZ0YgUBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTOmIAGkTQMp9W5aAicKQH3/un7SDDzTD0FzotA2ggQiEsbV0ZNQOD2u280VYu+EFddqs+1l0vzlk0SOCJ1d20MUZ1Ip8aMrx3YHx6wq0v3jnECcTo1ZnBQJzIyUgYOuDcgsBIwUAZYCQ7P7Nt3IMGr8odvtKOGYxKyCz8QLvkL5EtwzOCdifHVCnH+ljdvXv9qspeDS+Hu27PfjhVqys1knyQDHbjGV6lRLyv4+fovdd++aAu3rXbdGqJVBv1VEnWfVoQLbq++8FaiKvYFH5ee6xrc87eIiINSpEhh/yZvOaW/Id5ACSwkxlcDdv4WarpZ//6kLOtYu2IOcMG4hL4HwUHNpJyLvggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJD1BHSaVAJIWe+5Z8Q71lDcggULMuKlcU0IIJACAQJxKcDj0OQLDLiln/w8cbpM/XmmfPXZ93ag9ArFFSocOH2iBmHq1KsV782ULlPK26dVoz7/5Btv3S1MnjDVTtOpU666NurDLwMCRjqtY9t2raRS5QoyYvjHsvjf2KkO3THp/XkkKFBTOMgm+HoKFS4YsEmrSFWsVD5gm3+lQIH8NlQ0acYYO02mf58uB1emSqxv0aJFAobasH5TwHpyVyKPHw841E21eeugG2TALdcE7HMrWv0sI7Z3R75mpuiNinNp2UxyKUeO6J/+IkGODUxVu1y+yoP+g900nG7brJl/xAnD6T79fjzw0F2um/w55++AMJxW4et2QWc7Fe2v02d7U+x6B5yhheDKZ8EBV/9lJfc3JDHPxJ0nMb75TGjN39asWutfTdGyqzSogxQtFv19O7fdOTJx+rchx43vvQnZmY0IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQ5QVC/e9YWR4FgDMmwPt4xug5MQJpJkAgLs1oGfh0At0vON92Se9QnE7h52/5TWjrhdeelJw5A78OWhnOBaJc/wnjfpE1q9e71YDPEcM/kmEvPmK36XR9X3waGxypUrWSPDFsiBcACx43YKB0XFm2dGXA2UqXjQ3/BeyIWdH78LcmzRrK0Cfu92+yU01quMgfKMqbyGkcE+vrDynqyefNnS8D7xwQcB2JWYk6GRgYW7t6XcBhpctET8Oo70bw+xHQMZErOtWov4WHR0ihQoEhQ//+lCwHTyUaaqzqNarIbzNme7t6XtRFLuzVzVvXhUMmNJkrV66A+9epgN987YOAfm5lvJlGt9dlPaVWnRp209ef/+B22c+nnn9YypSNnuY1oeqCAQclsJIaUzDrGAvm/+udRYOewWFNb6dZSO5vSGKeiZ4nsb5asU2/k66yn/42hfrd8l97qGV/+E33H4w4FDCtbbny0UFfnVo2uJJeqPFOty1b9sCpivftDaw+eLrj2Y8AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBCAtkS2sk+BNJaQENxOkWmNq0UN3/eQruclv/kzp3LVISr6Z1CpwN87+2RsmN79ASBGkZ5f8QnckmPfrJqZexUqhpeevfNj73jNBiiFbVcm/3bXJn3Z3Qp1cjI426z/dTqSRom0abhlQV/L7LL6f3P5PHTZMvmbfa0OgXm6JFfB1xCtepVAtaDV6rXqBqwacrkGaIhtkMHD9nte3bvlSH3Pyl33TpYdMrJpLSk+GqgUKfrdE2DQLNmzrGrGu4Z8/U4tyvBz5/GTpb1azfaPnq9I974KKC/VvNLzRYc5NMwqIax9Jq/+jy6UmJqnu90Y9VrUCegy6gPv5C/TLhQA53aVi5fLbdcd7e89Oxwe52u87df/iBuGk3ddu5557hd9nP4q+97FQEPHz4csC93ntx2Xd+ZmdN+D9hnDgpcT8O1L0d/593Tj99PCLif+g0DXYIvI7m/IcHjxLeeFN+GjWN/g3Q8rdDnQoLq639O8Z1Pvz/Tp/xmdx8/fkLeeTPwe1ClasX4Dk3W9uIligUcN+vXOTbIpxvXrlkvM6cGvRcBvVlBAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgYYHAklgJ92UvAmkicCYqxd37f4PktgH3evcz5qsfRf80ZLV1y3Zv++B7HpePv3hLdIrOTz/+SvzTKg6880Zp2ryh9L96oNd/+Cvvysgv3rZVlPxjaSWsa668RYoVLxZyqlQNRCVUkco7QQoXNASn1+G/NjdkqzYtRCuGJdR0ytS7779Nhr/yntdNw1L6p1W1/OGbxx96Tl59a5jX73QLSfHVKT9vuLmfPPvkq96wjw4ZFucavJ3xLOjzvKHfoJDHaWgyODAWzzCJ3lw5qMKeOo7++GvR53ImWstWTaVt+9aiYU5t+vwG/+9xrwqYe9/1O1Gxcnnpf8PVsnPHbvnovc+8y9Xn/tgzD8rrL70jOnWwNp0OeMbUWXJ+1/ZSu05NWb50ldf/mitusVMULzfVCd34bmfwutueFp9awXHsmPGiFSL9762eq3ffS097yuT8hpx2UNMhqb59rr1CNNjp2jdfjrVT1ObOnTtJ79VTj74ob5ogY6h3sedFXd3wqfKplfL8v0H6fmkAWX9nQ50/VU7KIAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACWUYgumRVlrldbjSjCvgrxU0YN8WrYpZW11u7bk25895b4wzvD8PpzkuuuEAKFy4s69ZssIE5d0DFSuXlwku6mZBQhYDwzKaNW+SnH6LDKbfdETiFp46tQaFQTUMwSW4pqKYVfJ9a7e7m2/sn6hIuveJC6dS5XZy+waGiK67uFadPfBuS49u5Wwdp1qJxwJDB1xCwM4GVUMfdftdNCRyRvF3tO7YRfXf87UwHgO4dPMhOu+m/Jg2m+cNpGl7q0Kmt7fL+iFH+rnL7XTeKBpxuHhj4/mi46siRo9K732UB/XXcf0yFRP/4rsP2bTvcYqI/T50KnPY20QeajnoNwc++x4WdExWETOpvSGKvK6m+5SuUlQG3XBMwvN5Xct6rUMfo71haTPE84NZrA65ZV0KdP04nNiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIHAaAQJxpwFid/oJuFDcTbddKxrySOt2pQlsffTZW9LinKZxTqVBq2deeMRWIcuWLUw+fG90QJ+77rvVq+h27YCrvYpa2umDdz6xQaAO57eVJ4YNsVWP/Ae3M6Go2+8ODFv9u3CJv0vIZTflqtvpryiXLSzMbbafYRK47nZqkK1l62Zu1X5qJbR3R74mNWtV97aHhQX+NIQZA9f0Oh4f9qA8/fzQOEEqDdbp/Y36YoS0bdfKHXLaz+T46v2/+PqTNpCo53VNl6/oHRjG04py2vz3oeuPPvV/0rptS130WhVTxe39Ua9L46YNvG2JWYjzDHxm7ni9jhdffypOkE+rrL3w2hMB75G+d9rCgp9t8LMJ2h/8nrhzx/dZwkxf+cGnw+WW26+3lfL8/TQI1+vynvKe8dDpY3UKVZ3m1TWtoNcxJhxZomRx0e+uaxpu+sFUYNPv8gefvhEnZKbVCPUd8rf586KnEj6dpf9558geWOg0W7bs/iEleCy3U4N8/nF0WYNlg4f+z3WJ8xlsm5TfkDiDhdiQHF8d5vqb+sqQR/8X57cmuNKdTt0cqvW77irRSnP+ptXaHnrsPunbP3C7v09Kljt37SAaxgxu3XqeL7fecUPA5mB33Rn8XXbfF3dg8HvgtvOJAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJD5BcIiIiJOZabbjAg/JGXLlc5Mt5Tke9mz/5QULxIbYEryAFnwgKioKNm+baecMlXXypQt5YXdUoNCx9yzZ58c2B9uw0FaTSu9WviBCOnVva93Og23aMWnQ4cOy/atO6SM+a7kz5/P25+chePHj9uxcpkpGkuXKZmcIZJ9jFbC2r/vgHlmpWXLpi2S3QTO9PuvVba+HP2dN+4rbz4jzVs28daDF46aSmZbTAW/Mub6dQrN9GiHDh6y71yx4kWlaLEi6XHKRJ1Dr2vXzj1SrERRKVSoYKKOSWyniIiD5p53SKlSJdOk6lhC1zHijQ9FpxN17acpX5l3P7+5nu3mey92Cs/g8KHrm5jPtPwNScz5V61cY0Otu3fvlYPhB6VCpXLy958LZMj9T3qHX3djH7kxRGU210Gnbt60YYsUKFRANCiZHk3ddmzfJceOHrPX7MKr6XFuzoEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJnTmD+/PnSvHnzM3cBnBkBnwDvow+DxUwhQG5IJLC0TqZ4rNwEAkkX0ApEWg0rLZqGbDRckl4Bk8Tcg4bgqtesmpiup+2TM2dOO3XsaTumQYfXX3pHfpk03VbHatP2HIky02eO//Fn+fG7iQFnq28qmSXU8uTNI1qxLD2bBu9S6xmk5nXrdaVVKLBgwQKifxmlaVWxcuVTpxplWv6GnM5r4k9T5MVhb4hWerv40h426Drn93kyeuRXAYc2adYwYD14RasuVqlWKXhzmq6rW1YPsacpMIMjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIAVmDntd/vZsfN5SRJJ7nFJOgmdU12AQFyqkzIgAgikh4D+R0fDcNqef/r1eE/Z48IuooE3GgKZUWCrqWyoYThtX3z6rf0LdZ8VK5WPM21tqH5sQwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBlAusWb1O1qxaL2tXr7eD6XrXHp3scree0Z/uLL9MmiHB29y+9PrU65syaaY9XdeeHU1BmdQpsJNe13+682i+wAXbtG9iQ3HJPe5018P+tBcgEJf2xpwBAQTSQKBh43rSsnUzmTf3n3hHv6J3L7njfzfHu58dCJztAiVLFZc+114hX30WO0Vw8D01alJfnnnxEUnP6ZqDr4F1BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBLKKgAbcpkyeEed23Tb91HCchuBc3zMdiNMwnIbibJskUv2uzBWI8z8MF4w7XSguOAznH4PljC9AIC7jPyOuEIFkC2TPHjgVbOHChZI9VkY7sLiZhvaFV5+Uab/MlAXz/5X/Fi2VTRu3iIZ/6pkpUjUw17Zdq4x22VzPGRIoUrRwwLTIOj1oZmg6ZfHAOwdIm7YtZdavc2Tp4hXmb7mdArh+o7pSu04N6dK9k+TOnSsz3C73gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggECBw6dFiiTp70thUoWEDCwsK8dRZSR+DgwYOyc8cuqVqtSqr5psWYqXO3KRvFBdx0FK2yptXW3LLu06aBOP3T6nFeCM3u4Z+0EnDhNxeGc59ue/B5g8Nw2i++vsHHsp4xBAjEZYznwFUgkCYC+Qvkly+++zBNxs4Ig2bLFmaT8660bEa4Jq4hYwr0u+4q0b/M2ho3bSD6R0MAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEspLA+J8myvHI494taxiuWPFiUr9BXalUqaK3nYWUCcz6dbbs2bNXcubKKRUrVpC1a9fLsaNHpW69OskeOHjMZA+UgQ70h+EG3jUgzrSj/ipwGojLSGE4G9wzleG0uRBf9Frm+dcF2lwYzn267e5OCcM5ibP7k0Dc2f38uHoEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSytECNGtUlR87ssnXrdtmze4/8NvN36XXJhVIoE82gdSYfcJNmjWXD+o1Spkxpexl//zVfIiMjpU7d2smuGBc85pm8v9Q6t4bctGlBF60OdzY1vd7MPE2qexYu/ObCcO7Tv91t02N0u9vnxuDz7BAgEHd2PCeuEgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCCDRp1kjy5Mlj94wfN1H27z8gmzZvkfoxgbhVK1fLxg2bJOpUlJ32UwN0rm0zIbrVq9dI5LFIqVK1slSuUlly5Mhudx87dkxWLF8pW7dsk9y5c0utOjWlfPlydp9WSdtoQmINGtWXEiWKy0kzdeus32ZLoUKFpFnzJrJwwb+yf99+KV+hnKxatUaaN28qpcuUstXV1q1ZZ8fQ8bTimmvhB8JlxYpVsmvXbilsrl3HyZs3r9vtfbqxq5kQ08rlqyQqKspeW8mSJWXBPwvl0MFDUq26CTjVqCbZsmWzxyV0L+vMvWjgrUat6rLWXNuRw0ekZu2aUtV4aNW9A8bz6JGjcsT8zf59jhw/Hl2Vb+aMWdKwYT0pUbKENV+l124CiQXN1LVNmjSSgoUK2nO76/VbuDGPHj1mr1f7VKhUXvbt3S+7zf1XMC516tSyVel0kAPGZuGCRXLYTJNbvkJ5ew1ape7c89rYc5zpf9x0qBqG81eCC74ufxW54H2sp4+AC7i54Jv71LP7lwnDpc/zSKuzEIhLK1nGRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIF0FdAAl7bcuXLZz99n/SHr122wy/rPju07JSL8oDQ1Vc+WLFkmC+YvtKEvDY5t27ZdFi38Vy6/8lI5ceKEaLhOQ2Cubdmy1YbU6tWva0JyW2WzCd1piMsF4jZv2mICbHtsn/Xr1stBE0zTPtoiDkbIpnmbZPmylXZdr1PPV8GEuzqe317CwyNk/E+TbLhN9+01U5RqiO/K3pdJzpw57THuH//Y2vfUqVOyc+cuG37TZf3TUJ0GA1ue0/y097Jt6zZ7nXqtbjw9XoNvtU0wboO5jl1mfA3wqZ+Or23njp1yqHoVyW6CfxPHT7bb/dfe44JuUtxMYeu/Xj1OLdyYderVtmFEPbez0j46ReuuXbvk/M4d5fDhw/ZZ6Hl1fN2nTZczSiDOXpD5p3rNKm4xzmdGDsPp9K1TJs2016xTpp5tFe7iYJ9mQ0KhOD2UMNxpAM+C3QTizoKHxCUigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQGiBJYuXmapuOcyUqdtknwlnaVCqcuVKNjilYbhcJhx3yWUXmYDXCRn7/ThZaoJwGohbZj61XXhxTylSpLCM+3GCCcAdsX86pobhSprqZ+d36Sg7TPhr5vTfTAW2RVK3Xp3QFxJia+UqlaRx44ZmStccMvePv+y1XXBhd1s9Ta9FQ3Y6/agG97TSW5OmjaWBqbqm075u3LhJFv+31F5riKGlramOVrVaFZk+baatYpcnT25znxfbamoaUNPjNRCn1dcScy9a/a5T5w62Stwfs+eKVrLTQJxrGhq8uu+V8s1X39lr7t3nCns/P/040Ybh9LobmXud//cCW1nvj9/nysWXXOAON9X3oi3y5c8nGsAKblrl79LLL7ZBvO++HSvbt+2wXdRcw3DFTSW+Ll06SXhEhEya8HPw4Wd03U2XmlCQTCvHJVQ97kzegIbhvGcyyQT77jq7pnxNjl1wKM6NQRjOSZzdnwTizu7nx9UjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQpQWWLV3u3b+GtnqaymQ5c+UUrXymLVu2MBtGi17OZoNnh8zUmyVLlZRNGzfL5Ik/22k4W7RoJuXKl7XHaABOW70GdW2FNq3kljdfXjud6B4zLWhiWzMzVWp+EwDTqVm16TSiRYsVtctdunUWnSZVTME1nUJUm1Zm+9VMRXro0CG7rpXi4mulSpeyu/TadFrXsmXLSvbs2aWYGV9DgTrNqbbE3kuFiuWjx4v5dNdgNybwT3i4uQfTGjZqYKvUNWnayAbi3HZ3qLNw68GfWk1Og436p1PU6jSvOhXt3j37bNf6pjKfPlftp/eXkZoG4bxAWUa6MK4FgSwqQCAuiz54bhsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHMIKBVzXKaENWUX6bbsFs2EwrTFhFx0H4eOxYp27dHVxvTwJj+6ZSo7TucZ6qZ/SPr1m6QDes32j+tQqaBumNHo8NkBQsWtGPoPxrSOnL4iJwwIa2ktsjjkfaQvHnzeodqVTr906bBL206DalrOlWqBsBS2pJ6L2GS+LCZVrXT6m0aRFRXbXrdGlhzU6um9PpPRkXbFCxYIKVDpfnxGopLqEpcml9AMk+g06SKqQynzS5HL2bqf2dO+130L7i5ba6CXPB+1s8OAQJxZ8dz4ioRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIISAVgzT6TZr1qohK1eskjlmus8eJtRWpEgR21tDZzotqrbjkcdNoO2E7T93zl+iAbWrrr5c9psKbVopTqu/7TfTrhYwQbjDJvy2edMWL7TmqrjpNKqbNmyy4x0+dMR+njiRcEjOXYu/4tvi/5aYaV63S5s259iqaBrS0+lZdXxtek0uMGc3JPOf093L2tVrkzWyC8LlyKEBw5O22l2hwoWsoe7LZyrqpUbLly+fHDThRp1eVqvrpVbQLjWuzY1RrUYVWyFOpx5N7HSjv0yaITrVatceZ34qVQ3xJfa63T2fzZ/BYTgXfnNhOPfptp/N95pVr51AXFZ98tw3AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACmUigabPGsmrlatltQm07d+6ylboW/LNQ9pmA28Txk+0UqWvXrrN33PvqK2zYTaflPGymJy1YqJCp0hZlK5vlyp1LGjVuIFNNxblFC/81U3buNVOZ7rJBrBKmgpxWQqtStbKsMOG7pUuWyZEjR+zUqwlRFjZBsfz589upUH/6caIUKVpYNsaE6vIXyG/CfNVl2dIV9pw69uHDh+00qy1btZDatWsmNLS375TOvRqine5eQhyS4Ca93si9kTLrt9nSoGF9qVGzhixftkImTpgsFSpUkE2bNtvjNaCYGq1O3Vq2ct6ihf/Z6VP3Hzhgn0VGmja1es0qJtwmNhSXmCpx2kfDcNq69eyUGkyMkUiBUGE4f/DNheHcp39fIk9BtwwgkC0DXAOXgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpEhAp+qsW6+OHePPOfMkV65c0rV7Z1sNbu/efbJi+Uo5FXVK2rZtY4Nv3Xp0kbymitnatett8C1PntzSqnVLU9ksn5QpU1patGxmx9q4cZMcPXpMNAyn42krWaqklC9fzk51qiE8N12oGdjud59uVTd26Xa+qTxXQA6YQJdO0ZojZw7Ra9DpRps1byrVq1ezU76uMRXbtm/bIaXNNdSoUS16PP+/MYP6x9bd8QXETncv7lq9U8QzY6qbSrWeMdZzbdq4WXaYqWibNW8iVapUtlXi1q/fYMNqtUyIr2GjBtFDxnO99pp1etYQ5/PfW6VKFW31P60Mp88ih5keN6M1rbCmld60vfvmSNHqb/E1DcNpH23umPj6ptd2d016XbqcWdvpwnAafvMH4IL7Z1aXzHhfYREREacy041FhB+SsuVKZ6ZbSvK97Nl/SooXCfFfjCSPxAEIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgikrsD8+fOlefPmqTvoaUbTqVKjTkVJ7ty54/TUqUqjTHU4rQwXqmm1Np1aNVTgTKcKPWmmYA01bqixdNvx48dtNToN4IVqh0zFOg3lhTpfqP5J2ZbQvSRlHA2naWU8vU7XdJtOM5s/f+w2ty+ln2vXrJNKlStZ67179sm0qTPsdLIX9bogpUNLar6PbhpUvSgXdnMV4GxVODOlqgucZYSpUh2ePwin4b6Bdw1wuzLNZ3C4LTj85r/RpPT1H5dRlskNiWS82GxGeTu4DgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDIFAI5c+WM9z5sxbEE0hP+0FfwIDlyZDcVy7IHb05wXSvZmf8Xb9OpVdOqJXQvSTmnhvWCx9JtaRGG27F9p/wxe67MmzdfChQoIPvNFLjaGjVpmJRLTpe+Lvym06G6KVHdp/8CMlIYzn9dmXU5qQE3VyVOj9PmPt32zOqUme4rgZ/0zHSb3AsCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIDA2SZQukwpadmqhSxfukLCD4RLnrx5pHbtWqJTqWbEpqE4/XPTprpAnFZe09a1Z0dxyxnl+vWaZFL01djljHJhaXAdCVWG85/Ohd9cGM6/j+WML8CUqRn/GSX5Cil9mGQyDkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQSCeB1JyiMp0umdNkYgHex0z8cH235oJtLujm25XgYnKPS3DQNN5JbogpU9P4FWN4BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQOJMCSQ3CuWtN7nHueD7PjEC2M3NazooAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBA6goQiEtdT0ZDAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBA4QwIE4s4QPKdFAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIXYEcqTHc5u3h3jC79h62yyWL5bOfFcoU8vaxgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBaCaRKIO7byUvjvb7WTSpIG/NHQwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAtBVIciHPV4bQSnAbfXIW4o5EnZO7Czd61zzHLFU0fKsZ5JCyEEDh58qRMnjBN6tWvLVWrVw7Rg00IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQGiBFAfi3LAahtOwmz/wpoG48IPH5LVRc223pQVyS70aJakY59Ay6eejQ4bJ1s3b4txdwUIF5fURz8XZ7t9w7FikvPTscLn7/tuSHIjbumW7TJk8Q5YuXiGt27aQy668yD90gsurVq6RXybNkOzZs8vAOwcE9N23b7+8+er7suDvf+32Nue1lEF33ywFCuYP6OdWdKz3R3wiS/5dJjVqVZPO3TpI564dAvrPnT1Ppv7yq/wx609p36mtdOvRSZq1bOyGiPOp9/Xtl2Nl86atUqlKBel/w9XStn3rgH6nTp2SGVNnycIF/8nK5avlzfdelJw5cwb0CV5Zv26jPP3oi3J5715yYa9uAbv/mbdI3n7jA/McqsgjTz4QsM+tvPHKu/LvgsVy3Y19pcP5bd1mPhFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIF4BbJlyxbvPnYgkN4CvI/pLc75EEh7gTT/r8zS1bvsXejUqRqG05CcVoujZV6BTRu2yJEjR6WrCXn5/9IyMPXnnL/l5v53ydgxE6RsudJSo2a1RAFrMO2GvoPkluvusYGz3bv2xDnuofuflOlTfjP30lHadWojE3+aIs888XKcfrphx/adcs/AIbJrx265ZdD10rBxPXntxRHy3NOvef01MDfEjHnw4CG5zYTvNOR2311DRQNooZre27AnXhGtnnfDLdfIoYOHZejgZ2TZkhVe96NHj8ljDz0rT5lw205z7jZtz5HE/Ef7l4nTZc3q9fLVZ995Y7mFQ4cO231Tf54pGzfE/c7u2b1Xfvh2vO1z4EC4O4xPBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIEGBQoUKybZtcYusJHgQOxFIAwF9D/V9pCGAQOYSSLUKcfGxFApRFU5DcTrV6lU96sV3GNvPcoFKVSpKn2uvSPAutBqchsE0wJYvX944fTXktcXsL1m6hPkPUME4+90GDd89OfQFW43t+VefCDmW6xv8uXzZKhtau+/BO+R5X2jN9dNKa8uXrpLHnh4s53dtbzdXrVpZtDLatq077LXrfZw4flzyF8hvKr79JYcPH5GHH79PatWpYftHRByUcd9PEu2XO3cuG9rTHU8MGyJ58uQ2FeLOlct6Xiu//zbXVomLijolBw4ckKJFi9jjf/xuopQrX0Y++PRNE3ILM5XvLpRLuveT8T/+LHXN1LLafvx+osyaOUeGvfSotG3Xym473T8nTpyQsd9NkCpVK4lWitOAnRsv+NhJ46fIbXcEVs7Tino0BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIKkCZcuWlRUroguA6DINgTMhoGG47du3S+3a0f+7+5m4Bs6JAAJpI5DmgTidQlWnU3XNLbtKcW7d7eczawi89/ZI+XJ0bFWyW001tX7XXeXd/PQps2T4K+956/36X2krroWFhXnb3MLkCVNtCO2a66+SoyYcF3UyKmB6Utcv1OcNN/fzNut0qcFNA3vatNKba42a1LeLW7dss4G4of/3tKxZtU5+mPSZdOvZSc41gbTSZUq67nYaVl3RKU21nTTXpwFAd75cuXLZ7RqO0/bVZ2PslKujv35XKlauYMNqLVo1tWE43a/ToDY/p4msW7tRV+X48RPyyYdfSJ16NeWc1s1MlbpdUrJU8dNWiPtr7j/W7aHH7pUh9z0pkydMCxmIa9aisWgo74abr7GBPj1nVFSUfP/tT9LSnG+eGed0benRffLO7sUy59B227VN/jJye4kGUi9P0dMdyn4EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEMhkAvny5bMhJA0kLViwwP7vj5nsFrmdDC6gM65pZTgNw+n7SEMAgcwlkOaBOK0QF1/TKnG0zClwylQ5O26qpvlbjhw5RANt33w51obh7rjnZhvs0ipl74/4xITO6kv1mlXtIYv/XSrPvPCIFCteRD4b9Y18MXqMNGne0AS+mvuHtMsrlq22n2+99oFs2rjFLrfr2EaGPHqv5M+fsv9w7d2zz45X0FehrkDBAnab23fJ5RfIvr377TatEvf/7N0HmBXV/TfwA4KoINUCCoq9oRJ7b4i9xxo1xpLYS2wx+k815jXNEjUaNXaNscceewd7711QUQGRqoDwzu8sc70LS5PdZYFQThH1AABAAElEQVTPybN7p56Z+cy9S57xe38nfqIqXAxd+sxTz+dhRXfdc8dcDS42itBchPj+8se/pw03Xjfdc/cDed9NNt8wv6693ppp9OgxRWW8mlDdJx8PqFSLyxsUv9q3b5cr18X85599kYNtn336Req94c55kwjc/d/vT0jrbbBWnq/r1x233pOrwy23wjJpmx16p6svvz4detSBlfMs99l6+97puWdeTI8XFezKKnnPP/tS+uLzgenQIw+YaiAuwnA//vC+9PX4b8su04PDP87huCsW31worqJiggABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCc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HEK1nPdKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaQ6B5YxzEMQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQEMLCMQ1tLD+CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBRBATiGoXZQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgoQUE4hpaWP8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CgCAnGNwuwgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINDQAgJxDS2sfwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoFAGBuEZhdhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaGgBgbiGFtY/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDSKgEBcozA7CAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0tIBAXEML658AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGkVAIK5RmB2EAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBpaQCCuoYX1T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKNIiAQ1yjMDkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECDS0gENfQwvonQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUYREIhrFGYHIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGGFhCIa2hh/RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAowgIxDUKs4MQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQEMLCMQ1tLD+CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBRBATiGoXZQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgoQUE4hpaWP8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0CgCAnGNwuwgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINDQAgJxDS2sfwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoFAGBuEZhdhACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaGgBgbiGFtY/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDSKgEBcozA7CAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0tIBAXEML658AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGkVAIK5RmB2EAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBpaQCCuoYX1T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKNIiAQ1yjMDkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECDS0gENfQwvonQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUYREIhrFGYHIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGGFhCIa2hh/RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAowgIxDUKs4MQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQEMLCMQ1tLD+CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBRBATiGoXZQQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgoQUE4hpaWP8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg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gAABAgQIECBAgAABAgQIECBAgAABAgQIECBQPwJyQynVS4W4uB3r9uxaP3dFLwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4HsINP8e+9iFAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0OQGBuCZ3S5wQAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHwfAYG476NmHwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBocgItmtwZOSECBAgQIEAg/ejoDyjMYgLXnN19Fjtjp0uAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHZT0CFuNnvnroiAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzJECKsTNkbfdRRMgQIBAUxdQbayp3yHnR4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJNUUCFuKZ4V5wTAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEy3gEDcdJPZgQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSaooBAXFO8K86JAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKZbQCBuusnsQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJNUUAgrineFedEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtMtIBA33WR2IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGmKCAQ1xTvinMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgekWEIibbjI7ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBTFBCIa4p3xTkRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwHQLCMRNN5kdCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKApCgjENcW74pwIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYLoFBOKmm8wOBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAUBQTimuJdcU4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMN0CAnHTTWYHAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGiKAgJxTfGuOCcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmG4BgbjpJrMDAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDRFAYG4pnhXnBMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITLeAQNx0k9mBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJqigEBcU7wrzokAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEpltAIG66yexAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAk1RQCCuKd4V50SAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC0y0gEDfdZHYgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaYoIBDXFO+KcyJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB6RYQiJtuMjsQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFMUEIhrinfFOREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAdAsIxE03mR0IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCkKCMQ1xbvinAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgugUE4qabzA4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0BQFBOKa4l1xTgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAw3QItpnsPOxCYisDoMSl9M3p8GjM2pfHjp7Kx1QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaQaDV3Cm1mrtZaikx1QjaM+8QKsTNPPvZ8sgRhhv19fgUr8Jws+UtdlEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgVlS4JvRKY0YWZNrmSUvwElPk4BA3DQx2WhaBaIy3Nhvp3Vr2xEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoPIFvx6Wi0JMhDxtPvPGPJBDX+Oaz7RHHFX8wYphUjQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBTFRgr39JUb029nJdAXL0w6iQEmhfvJsOkei8QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0ZYGoEqfNvgIt6vvS+g8YOtkuu3ZuO9l1VhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRkRqLdAXAThrr/7tSmeyzo9u6Z1ix+NAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUt0C9BeL6vNA/n9tuW604yTn2K8JyfYv18RNNKG4SIgsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYAYF6i0QV57H5IZF7TthA6G4UsorAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECNSnQPP67Gxa+4pQXFlRblr3sR0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJiSwEwJxMUJCcVN6bZYR4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLTK1DvQ6bWdQIxjOpuW62Y+g0YWlldDp1aWWCCAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMgECDBOLe+mBQevuDwfm0luneMb9Wzy/bvVOuENe/KiA3A9dgVwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkBokEBeuEYqLVgbiJp7PK/0iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQL1JNBggbh6Oj/dEJgmgW+//TZ9NeSrvG2Hjh1Ss2bN8vS4cePSkC+HTLJ8mjq1EQECBAgQIECAAAECBAgQIEBgNhUYPGhwat68WWrfoUOtKxw6dGgaO2ZsatWqVWrdpnWtddUzLz77fHrkoYfTsssvl7bcduvqVaYJECBAgAABAgQIECBAgAABAgQIzFSBBgnExZCoy/6kU60Lm3i+1kozBGZQ4ON+/dPPDzki93L0icemjTbbNE8P/GJgOnS/A/P0VTf9J80733wzeCS7EyBAgAABAgQIECBAgAABAgRmfYGf7r1fvohL/3NVatuuXZ6OLxYett9BadSoUWnPffdOu+2952QvtH+/fumhe+9P474dJxA3WSUrCBAgQIAAAQIECBAgQIAAAQIEZoZAgwTiYnjUtz8YnK+nHDK1ej4CcxqBhhK48Jzz02prrZnatGnTUIfQLwECBAgQIECAAAECBAgQIEBgthB4oaj0ttFmm+Rreeett3MYLmbW3XD9vMwvAgQIECBAgAABAgQIECBAgAABArOaQIME4gIhQnHRykDcxPN5pV8EGkAgvsV87RVXp4MOO7jO3ocPH54euf/B9MF776dFu3VLa66zVlqk66J527tuuyMNHjgorbnu2unZJ59OXw4enFZbc430gzVWS3ffflf6uPj281rrrZvn55prrrzP5599np7p+2R67513U+dFuqTeW2+V2rWv+WZ1nSdgIQECBAgQIECAAAECBAgQIEBgJgtsuOnG6dEHH05PF880ykDcc089k89q8SW6p66LdUtRMe6xYljUt954K80zzzz5GcoyxRCpzZs3n+Tsb7vpljT0q6HFc5Et00KdF05vvvZ6eqZ4trL4kt3TBhtvlLf3DGUSNgsIECBAgAABAgQIECBAgAABAgQaQKDBAnENcK66JDDNAnfdenvadPPN0vwThvwod4ww3LGHHJkGDRxYLkpXXHxJOvrE4/LD3wf+d28Ott30n+sr6+8vlnVaYIHKPjH/44P2TzvuuksaE8+BkQAAQABJREFU8Mmn6fjDj658ezp2uuW6G9M/LruoMtxIpSMTBAgQIECAAAECBAgQIECAAIEmIhAhtQjEPfHIY+moE45NLVu2TH0eezyf3aa9e+XXv5z6x/RUnycrZ3zzdTfkwNshRx9RWVZOxJcMP/t0QPHFwtVzIC6+OBjPV+I48eMZSinllQABAgQIECBAgAABAgQIECBAoKEFJv06Zz0cMYZE/flP1sk/MT3xfD0cQhcEJiuw13775HUX/P28NO7bb2tt997b7+TqbWsXVd6u+e8Nade99sjrHy4qxlW3WP+Xc89Ky6+0Ql7comWLdMYF56Td9t4zzz874RvTl1xwUQ7Dbdxr03TG+eek1YuhWqNC3Z1FIE8jQIAAAQIECBAgQIAAAQIECDRVgVVX65nmnXfefHpvvPp6DrP1/6hfnl9ng/XSsKHD0sAvBqYll14qXXDFv9Ipp/42r7v3rv+lbyd63pJXTOWXZyhTAbKaAAECBAgQIECAAAECBAgQIECg3gTqrUJc185tU/8BQ/NPvZ2djgh8D4Htd94xPXzfg7nS2//uuKtWD6v8oGfxAPc36fVXXktX/uuy9P677+b1MTRqddu8GN4jHvj2XG21FA+FY9jUxbt3LwJ249L1V1+bIlg3fvz49NrLr+TdxowZkx4thhAZP35cnv+wGI5VI0CAAAECBAgQIECAAAECBAg0VYGWc8+d1ttogxSV8J996unUeZEu+VTjy4ELLrRQnj71L6cXw6W+ke67657Uv19NWC5WxJcBp6d5hjI9WrYlQIAAAQIECBAgQIAAAQIECBCYUYF6C8SVJ3L93a+Vk1N9Xbdn16luYwMC0yvQohji4+CjDku/+cUp6dYbb661ewzdcdj+P83LVlpl5dSqVata6yeead68poji+HE1QbdyPrb7unj4Wz4AjuFFym9Vx+vYsWMn7so8AQIECBAgQIAAAQIECBAgQKBJCWywyUY5EBfPNbouVvOcbuNem+VzHDVyZDru8KNz5biui3VLSyy15Pc+d89QvjedHQkQIECAAAECBAgQIECAAAECBL6HQL0F4iLc1q2oEjetLSrKaQQaSqDHqqukjTbbND3yQO2hUO+58+58yA023ij9/JcnpCef6JNefO6F73Ua8843Xx5+9ashX6VDjjo89d5mq9zPqy+9nCJspxEgQIAAAQIECBAgQIAAAQIEmrJAPL+IL/YNGjgw/8S5rr3euvmU33r9zRyGa9e+XTrj/HPS8GHD06MPPjzZy2ndunVeN+TLIfl18KDvqvF7hjJZNisIECBAgAABAgQIECBAgAABAgQaQKDeAnFxbkJuDXCHdPm9BX580E/S0336Vqq4RUfLLLds7i+GArng7HPTYw89kueHfPllfp3eXzvt9sN0+UWXpAv+fl56/JFH0zdff1MMJfJmOuznR6VeW/ae3u5sT4AAAQIECBAgQIAAAQIECBBoNIG55porbbbF5umO/96Wj7namqvnL//FTLfui+Vl8UXA8886J7395lt5Pn6NKMJxE7c111k7vffOu+mi885PN/3n+jxdvY1nKNUapgkQIECAAAECBAgQIECAAAECBBpSoGY8yIY8gr4JNIJAs2bNJjlKh44d094H7Pfd8mKbNdddO/XeesscknuqCMtt0rtXXh8Pd0cMH/HdtuXUhG6bTRg6NU10mG132iHtUxwjvk398gsv5TDcxr02TetttEHZg1cCBAgQIECAAAECBAgQIECAQJMVWH/jDSvntuGmG1emO3bqlA467OAckHvw3vvTSiv3yM8/YoP+/fqliZ/FbLL5ZmmNddZK8YwlgnE9V18t99Wsec3DFM9QKrQmCBAgQIAAAQIECBAgQIAAAQIEGlig2bBhw8Y38DEatfthQ0ekLoss3KjHbGoHGzRkfOrUfqLkViOdZBx7VmhjRo9OEXJr0aJ+iiSOHz8+DRs6NLVu0ybFt6s1AgQIECBAgAABAgQIECBAgMDsIBDPPEZ/801qNc8803Q5I0eMyNtO7vmIZyjTxGgjAgQIECBAgAABAgQIECBAoBEEZla2pqEvbWbmhhr62qa1//pJA03r0WxHoIkItJx77no9k/hWdNt27eq1T50RIECAAAECBAgQIECAAAECBGa2QDzzmNYwXJzrfK1bT/GUPUOZIo+VBAgQIECAAAECBAgQIECAAAEC9SBgyNR6QNQFAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMx8AYG4mX8PnAEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1IOAQFw9IOqCAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGa+gEDczL8HzoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE6kFAIK4eEHVBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjNfQCBu5t8DZ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC9SAgEFcPiLogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZkvIBA38++BMyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBehAQiKsHRF0QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwMwXEIib+ffAGRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAPQgIxNUDoi4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYOYLCMTN/HvgDAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgHgRa1EMfuiBQERg6vDJpggABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECTFOjUvkmelpOqBwGBuHpA1MV3Akt0bfbdjCkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0ooAhUxsR26EIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoOEEBOIazlbPBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCIAgJxjYjtUAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQcAICcQ1nq2cCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaEQBgbhGxHYoAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGg4AYG4hrPVMwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0ooBAXCNiOxQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINJyAQFzD2eqZAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBpRQCCuEbEdigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaTkAgruFs9UyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECjSggENeI2A5FgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAg0nIBDXcLZ6JkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFGFBCIa0RshyJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBhhMQiGs4Wz0TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQCMKCMQ1IrZDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDDCQjENZytngkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgEQUE4hoR26EIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoOEEBOIazlbPBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCIAi0a8VgORYAAAQIECBAgQIAAAQIECBAgQIBAExF464130gXnXpreeO2t1GmBjmnLbXqlH/1419S8+aTfof3LH/+et6vr1HttsXGx326VVW+/9W66564H01xzzZUOOWL/yvKJJx6479F09WX/Sfvuv2fapNcGefWYMWPSddfcku6+4740aODgtNGm66fNem+Y1lpn9cru7779frr7zvvTfXc/lJZdfum0+ZYbF/tvmFq2rHnUOWL4iHTUIb+obF9O9Npyk7THj3ZOP9vv6HLRJK+HHX1QWn3Nnnn5iBEj02MP90133X5vOvGUo9Iii3aZZPtYMHr06HTy8aemr7/+Jp174Z8r28R5XnTBFeml519JXbstksKp91abpo6dOuRtYvsH7n0k3fe/h1K/jz5OvYvz23LbXmnx7t0qffznmpvTPcW1TtzOOv/09ND9j6Vbbrh94lV5vvMindNpf/6/yroZuydj07VX3VA43JdGjfw6bbL5Bvlaeqy8QqV/EwQIECBAgAABAgQIECBAgACBpiQgENeU7oZzIUCA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ECBAgAABAgQIzEyBBq0Qd/3dr6UyELdOz65p3eJHI9AQAuPGfZv+73fHpy6LdM4P6eIY2+24VTrjz+floSWiGtxdRRhu7XXXSPvuv2c+hQMP2TfFsBYDiiFWP/1kQH6AecgR+6ettt08rz/y5z9LMZTpJx9/muen5VdUo4s+osWDzimdU3zrOb59PLljlkORPPzgE/lhad8naoa82HizDablVGxDgAABAgQIECBAgAABAgQIEJiswLffjisq0jertb6sojZu3LhayyeeGT16dLr2qpvStjtskauwTbx+SvPx5cRoPz10vzSuOIcptc+KZzan/eavqfdWm+YqbLFth47t08FH/KQYkvWsSpX/CJnFuZRt/rZtUrfFFs3PeCLMddstd+ehSrt06ZyDeOV28RrPhmKY0VN+e9wkobbq7SaejudF5519cTr0yAPSol27TLx6kvl//fPK/BwovshZtj323iXdfcd96ZILryoXpb+d84c0T/GFz2jx7CiGhe20QIe0SfE86L13P0g3X397OuWEU9OV1/2zVnW52P4/19ycq/6tu8FaMTvNbVrvyd67/rTS5wknHzVN113ZwQQBAgQIECBAgAABAgQIECBAoBEFGiwQ1+eF/jkMt9tWK6Z+RZW4vsV8t85tU9fiRyNQ3wItWrQovkHbKd1z1wPpmaeeTzHURdnGjv02D5UR1dZWX6tnuThXkPvTmb/N8+XwFz1X++6byfEw8x8X/zWvf/yRvpX9pjQR35Yt29TO6Z233subTu6YsXLTXhum++5+KD9cjSFLYhjXaXnIWp6DVwIECBAgQIAAAQIECBAgQIBAXQLNijBcOfxoub4MwjVvPuVBJR6495Fc1f6He+xQ7jpNry8+/0r67013plNPPyXNP3+bPJzp5HYcOnRYOv6oX+XA3c9PPKyyWfQRYbgddtk6RXW6d99+P/39b/9Mf/rD2enk3xybt4svO5ZfeIwFG2+2ftppq73Tffc8NEkg7vp/35Irzm3Sa9q/gBiV2/76/85Nyy63VNp1zx0r5za5iTKQd8LJR+ZKdOV2EWwbNfLrFEPHLtxloXTd1Ten4478v3TJ1eemJZfqnlq1mrvybCr26ZU2TlHF7/xzLklRDa66ol3/YtSDqJgXVlO7f+Xx43V67slNd1yZvzh61+33FUPF/j2HE9ebzvBd9bFNEyBAgAABAgQIECBAgAABAgQaSqDBAnFxwhF+K3+iUlwE4wTiGupWztn9fj3q63T4QSekNvO3Tj8+YM8U1d2efebF9I/im7rRmjWr+cbzuMkMjTFhdfEguO6hM76P7tTPqabXKR0zhkd98P5H01N9ns3fVj76+EO+z6nYhwABAgQIECBAgAABAgQIECBQS6BTpw7pow/61VoWIbRo7Tu0q7W8eiZCdFdffn1asxi6NEJb09PO/PM/8uYRioufqDQX7dqrb0zPP/tS+s1pv8jzX3/9TTr5+FPT8GEj0nnFlxXnm2/evDx+3X/vw3n+8KN/mgNjyyy7VPqwuI4Y9vTo4w7OQ3tWNp4wMffcc6eo6v/2hC8nlus/G/BFrtD2s8N/klq2bFkunurrYw/3Tc8Vz51iRIJf/Py3efsI5o0cOSqH+Hbba8c8SkGsiC9Z/u30c9OPfrxbUcVuy7xt/Pr8s4H5S52HHnVgKsN4x5xwaH4OFMG2ydmWIbiBXwyq9BUTN1z73+yyxdab1Vo+tZlpvSfRT8fiPRM/y62wTHrwvkfzj0Dc1IStJ0CAAAECBAgQIECAAAECBGaGwJS/7jkDZxTV4CIEF5XiqodOnYEu7UpgsgLvv/9R/mZyPFyMYTSWWmaJ4kHmd3nPGE4jHp4+1fe5Sh/fFuG4eOgXQ1Ms2m3RvPy5Z16qrI+Hon/83RnptVfeSO0mPAj+7LPPK+tHFQ85p9Smdk5TO2b0vcbaP8jnHd9yjrbhJuvlV78IECBAgAABAgQIECBAgAABAjMiEBXoP/l4QPpy8JBKN2+89lZ+DjHvhCE7KyuqJp584unU76OP0+577Vy1dNomt9q2VzrgZ/ukVXqulH96rLxC3rHbYl2LoUGXy9PxvObUX/8lvffO++lv5/4hDwFa3fuwr4bn2fLLjTHTrPhftFFFkC7aUYf8Iv3qpNPydPyKynevv/pW6rLIwpVlMXHzDbfn+e2qgmq1NpjMTATh4jqiQl15LQt3WTBvHfMRGvv/7N1nmFXV1QDgDWJv2Bui2EWMPWJvsX4aoxFjjyVq7DXYxUbEgiVij733HrsYjd3Ye0w0iqLGggyogMJ31h7O9c44Q5kZ5KLvfjL3nrLPOfu+h/hjP2uvFe2Vl15LR/Q8IffbdY8d8rHyY+iQoXmzXMQZO5G1L1pdXf1vfO6ZF9Oa3TdOb73xdj4eH2+9+e+8HWMo2+effZFuvemutPmWm6Qxvbuyf/X32N5JjCXGcF6/S6ouqx9n9dirTtokQIAAAQIECBAgQIAAAQIECEx0ge8jhlo5lAh8K9tKS3fKmeC6F99RKjValE4ts8M17lte55tASwW6LDBfnrC96/b70owdZ0gfDhiY+p1xYb7dl4MG5wnPrbb7bbr4givTmX3PS2ustUr6e//H8mrklVf7ZS5XESuFr778hlxKdZHFFswri6P86p777ZLLeERAXaw2jlKoHw38OF1wzmVjHO7YxhTlT8f0zLh5rE6OEh8333BHWnb5pdKss848xmc6SYAAAQIECBAgQIAAAQIECBAYF4F11lszz22cWmQv23aHLXK5zXvuejBtv9NWlcsvufCq1GneufPiw/LgVZffmObtPE9aboWly0Pj/B1zM9Ut5myuvuLGtMpqK1ZKmUb508iqttOu26bBX9alF557uXJJZCZbadUVcha1M045N8+ZvFsskoxgsAjsKudNIljvyENOyPdeotti6b67H8oLKXfabdvKvSLQ69orb0qb9dg4zTDj9JXj47IRczrxV93ifu+9OyBXLojjkbWu5/69cha5yAAXpUnLFs/rPF+nHOx3TeE5wwzTpTnmnD3PU0WfFbsvl7sus/wv8pzVGaeel36/y1Y5ePGyi67J91ys6yLl7dLtt9ydtzfdfKPKsXHdGJd30u0XXdPtRUa/CCiMzHUP3Ptwzoa3xXiWzB3XMelHgAABAgQIECBAgAABAgQIEGitQJsExEWAWwS+RcBbZIWLFkFx8VfuVwfDVfeN8xEspxFojcBUU02ZDjly/xQTtYcffFwOjotJwCi/8eEHA/Mk5dbbb5G+/vrrHNR2yw13pplm6pgOPWr/SgmLo4/vmU498ax0/tn1K17n79I5nX/J6aljx/oyIQccsle6vJh0PGifI/P9u6+yQnrysWeKcqzfj7z96JW8cWRcxjS2Z8Z91vrVajkgLjLfaQQIECBAgAABAgQIECBAgACBthCYY87ZUu+Tj0y9j+mbA9DinlFuc9vf98i3HzVqVBEEdXdaatlulYC414sMcpH1LOZgqudAmhvP2DKIVc5Xza3cf0//fLuY42ncLrqyXx5LlAuNhYp/u+P+3CXKt+6y+/aV7rH4cdc9fp/u+9tD6YKzL83Hd9h5q6Jk6XqVPuW1m2+xceVYUxvlvE/VEJvqNjpH3fenIpAvSqjGX8wlVbfVi4Wax514WDqxb690yp/PSn2OPyOfjsWYB/TcM8WcU7TwCevrr7m1Upp1wYXmT4f3OijPO0WfKC97/dW35HdXnTUuzjXVKuZNnSyOVc5X/eBjilK2p510dq60UF62xz47p0UWW6jc9U2AAAECBAgQIECAAAECBAgQqCmBdnV1daNaM6IIaIuSqJENLgLgYjtaGeTW1H4Ex5XBcnG+Ontca8YS19YNHvqD8getveekdv1ng0alWTpWzVpNaj+gleP94otBacYZZ2x2YjZKb8QK5LJ8RePHDRs2PA0rJhObWx0cZSiiBGtlgrDxDZrYH9uYxvTMKOkaE6O333dNsWJ4/FYsNzEUhwgQIECAAAECBAgQIECAAAECDQSibOp0009XZKpvuHb222+/zZn0x2cOpMGNJ+DOyJGj0ueff5Gmm27aSnBYU4+LeZyOM8U8UfumTtfEsa+//iZ9XQTOjWm+6ZuiT8xpTVv83onVYv4qMuHNPPNMzc67TayxeS4BAgQIECBAgAABAgQIECDwvcDPPW4oJBrOcn1vM85bZea38oLYjwxwp1/6ZA6Si4C5OBbfkUkuvsv2/ujtxvcoz/sm0BKByPw2pjbZZJM1GwwX10055RT5r7l7NBdI11z/OD62MTX1zJhgfO2VN9L5/S7NZUMEw41J2DkCBAgQIECAAAECBAgQIECgpQIRiNVU69Ch1VOHTd22TY5FhrqyROqYbtiSeZwx3W9CnJt66qlS/I2pTTWW82O6tq3O1c9fzdxWt3MfAgQIECBAgAABAgQIECBAgMAEE2h1hrgYWVkytRxlZIuLFoFx1S0C38qAufJ4mVmu3G/ttwxxKYn0bO2/otq4/sbrbk/9Tr8gLbLogqlvv95p+mKltkaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgOQFxQ22QIS5wo/xp2eYdHfRW7pdBcREIV5ZRjT6RHa5x3/Ia3wQIpLTRJuumVVZb8WdfAti/BQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLjKtBmdQ+qg+Li4VEaNYLhqrPFleVTy0xx4zpI/Qj8HAWmmWbqFH8aAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLjJtBmAXHl426457VyM5dHLQPlIhguzkUwXLQ4Xm5XLrBBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRaKNC+hdc1edkTRUa4aE0FupXH4jv+qgPnmryZgwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYDwE2jQgLkqkRrBbZH+Lv8gKF3/RyvKpcXze0VniynPjMV5dCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAkwJtGhAXwXBlkNv7owPh4li0MZ1rcmQOEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB8RBoV1dXN2o8+o+xawTDVZdC7bFB10r51DgXJVXLgLnuo7PIjfGGLThZN3hommvuOVpw5U/nks8GjUqzdGz30/lBfgkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmMVEDeUUpsGxJXiEfRWZoYrj5XfYzpX9mnNt4C4lPzDbs2/INcSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmDQFxA2l1KYlU8t/Bs0Fw8X5MZ0rr/dNgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTGV2CCBMSN7yD0J0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrRUQENdaQdcTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQE0ICIiriddgEAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQWgEBca0VdD0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1ISAgLiaeA0GQYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKtFRAQ11pB1xMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBATQgIiKuJ12AQBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBagQ6tvYHrCVQLvDNgVPWubQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI1J9ClU7uaG5MBtY2AgLi2cXSX0QL+Y+GfAgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECE0tAydSJJe+5BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCmAgLi2pTTzQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgYgkIiJtY8p5LgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAm0qICCuTTndjAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQmloCAuIkl77kECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0KYCAuLalNPNCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBiCQiIm1jynkuAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbSogIK5NOd2MAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCaWgIC4iSXvuQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQpgIC4tqU080IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYGIJCIibWPKeS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJtKiAgrk053YwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJpaAgLiJJe+5BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCmAgLi2pTTzQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgYgkIiJtY8p5LgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAm0q0KHx3T74pH165e326b2B7dOgIe3SyJGNe/y4++2LkL2O041KnecambotNDLNM/tEHtCP+/M9jQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTGUaBBQNy9j3dIL7w52The+uN0i4C8zwe3K/4my2NbetHv0vorf/vjPNxTCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCSEaiUTL3+vslrLhiuKcUI2IuxagQaC9x/T//02itvND48Qfbffee9dNft96URI0ZMkPu7KQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC4y+QM8RFZrh3PqjExo3/XX7kK2KsMWaZ4n5k+Bp/3Oknn5M2+c0GqWu3xSb4SF96/tV02slnp9XWXClNPrkAzQkO7gEECBAgQIAAAQIECBAgQIBAmwu89cbb6bx+l6Q3XnsrzTLrzGn9jdZJ2+ywRWrfvul5woEffpwuvuDK9OxTz6fppp82bbzp+mnLbTZL7dq1azC2Dz/4KNUvXHwzdV9l+bTZFhtXzv/7X++kC8+7PL30/Cup07xzp3XWWyOtu8FaaeZZZsp9YvHh9Vffmu6564H02aefp9XXWiWtve5q6Zfdl0vfffdd2u33+1Xu1Xhjz/3+kOLZt954Z+NTeX/OuedMvU8+snLu66+/SXfddm969eU30pRTTZkOPWr/yrkvvhiUzjrtgvT8sy/lYyutukLac98/5N9ddrr1prvSfXf3T+/+57/pF8t0S/scsFuap9Nc5ekG3w898Gi66tLr0vY7bZXWXGfVyrn4Tf985oXi9z6YVl1jpbT2r1arnIuNR/o/lq6+4sb03rsD8jPWWme1tNavVk1TTDFF7vfF54PSRedfkZ564p95f93110zrFH8LLjR/3o+PY484Kb333/cr+7ExdzHO4/sckU7581/y+29wcvROvJttduiR98bntzZ1L8cIECBAgAABAgQIECBAgAABAj+mQIcPPmk/SWSGa4wSmeK6LTQyzTN7UVNVI0CAAAECBAgQIECAAAECBAgQIEBgnAUi4Gu3HfdPM83UMW230+/Sc8+8mP5aBKpNPsXk6XdFkFvjNqRuaOq5/9E5SC2CpCIQ69yzLk7fjRyZttl+i0r3p554NgdgTTnllGmNtVdJCy28QOXcRwM/Trtsv0+ae5450w47b5UGf1mX7/HgfX9P511yRhGI1y6dd9Yl6abrb0/rbbh26vaL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AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGWCrQ6Q1xzD45yqdUlU6u3m7vGcQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0FKBNssQFyVSu3RKaf7R5U/fLQLiHnrqu7Tz5vWPiHKqUV419hv3bengXUeAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEqBVgfERea3/k/Xl0ktbxrHIhiuuVZdSjX6yh7XnJTjBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCuAq0OiIsHRfDbOwNGVp7ZXIBbHD/qrBE5U1zZubm+5XnfBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgXATaJCAuHiSwbVy49SFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBCSXQZgFx4zrAnTfv0CBDXJRbHVN51XG9r34ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8PMW+FED4tZecbIcDBfZ5N4t/qKt9cv2udyqDHM/73+Ifj0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRaK/CjBMR1maddisxwZev/1He5xGocj4A4jQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFZggkejRfBbtAh+iz+NAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMCIHv07ZNiLsX94xSqEedNSLfPUqmRka4Lp0iDm/k6O8J9GC3JUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGflcAED4ir1nxnwMgcEBdBcdWlUiNoTiNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAq0R+HED4orAt/5Pj2ww3giS0wgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQGsFftSAuBjsQ09919oxu54AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPxA4EcPiPvBCBz4SQm8M0D525/UC/VjCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI/QYEundr9BH+VnxQCAuL8O2hTAf+xaFNONyNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYDwE2o9HX10JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDNCgiIq9lXY2AECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMD4CAuLGR0tfAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKhZAQFxNftqDIwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIExkdAQNz4aOlLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjUr0L79JBwSNymPvWb/RRgYAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJlGB9h2nGzWJDj2lSXnskyy6gRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBGBdp3nmtkjQ5t7MOalMc+9l+nBwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiMj0D7bgtNugFxk/LYx+cl6UuAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECYxdoP8/sI9PSi3439p411iPGHGPXCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBACLSPj/VX/jZ1mWfSCS6LscaYNQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUArkgLjY2XK9EZNEprjIDBdj1QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLVAh+qdyLrWbaGR6ZW326f3BrZPg4a0SyMncuK49kXIXsfpRqXOc43MY1MmtfqN2SZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBUqBBQFwcjIAzQWclj28C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L5oIB4cNG54iY9qYxhnZ8uK3lkFqE2KYkfU/5pGqF0w2fk6UTY1seB06NHzPjfvZJ0CAAAECBAgQIECAAAECBCZtgZ973FC8PbMfk/a/YaNvQmCWRqtsm+iSg8xqPRguxt3cpPAVl1yb+j/waC55OvkUHXLGu+hflsOI7aZaBLnNPMtMTZ2qHJtp5o6V7cYbEZw3ponVxv3tEyBAgAABAgQIECBAgAABArUv0NxcwIQMnJpu+mnHCBNzEI0zqY3xgol0csopp0hTTtkw41vjoTRXkrVxv9bsTzHFFCn+xtTGNic0pmudI0CAAAECBAgQIECAAAECBAhMSgIC4ialt2WsBEYLbLn1ZumjgZ+kIw85IR+JMqs9j9gvLbfC0owIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI/GwFlEz9Cb56qQ9/gi+1mZ8U5UOGDBmaZphh+mZ6OEyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPBzERA3lFL7n8vL9jsJ/BQFonyIYLif4pv1mwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFoiICCuJWquIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGaExAQV3OvxIAIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCUCAuJaouYaAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKg5AQFxNfdKDIgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEWiIgIK4laq4hQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZoTEBBXc6/EgAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgJQIdWnJRc9cM+GhweuKFAfl0pzlnSCst3alB1xvuea3Zcw062iFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAuMp0KYBcWXAW4whguPmLYLiIjCu3I9j5faTReBcjw26Vs7nEz4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEALBdosIK7MDNdckFsExh2wY/c8zAiMi+C5uCb6awQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLUC7Vt7g/L6MvtbmRGuPN7U97j0aeo6xwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHMCbRYQ19wDHCdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAj+GQJsExEX508gQ133pTuM85sgSF9eUpVbH+UIdCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAEwKtDoiLoLb4iwC3lUYHxEWAXNnKYLnYj+C3MgCuxwZdcwDdk8WxuF4jQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKtEWh1QFz58AiIi9Y4uC2Ov99MwFvjvuW9fBMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfEVaFdXVzdqfC9q3D+yvkWmtwh+i8xv49Jacs243Ldu8NA019xzjEvXn2yfzwaNSrN0bDdRft87A1r9z2mijNtDCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEfj4CXTpNnNiaCS08MeOGJvRvG9f7dxjXjmPqF6VSI9vb+GR8G98AujE937naEfip/seidoSNhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB5gTarGRqcw9wnAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI/BgCbR4QNy5Z4so+UWJVI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbSHQJiVTYyBRNvWGe17Lf+XAemzQNZVBbxEEF+erW1yjESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBthBos4C4CHw7YMfu6YkXBqSmMsDF+e5FAFx5TjBcW7w+9yBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBUqDNAuLKG44p0G1M58rrfRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZYItG/JRa4hQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK1JiAgrtbeiPEQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsEBMS1iM1FBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBrAgLiau2NGA8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItEhAQFyL2FxEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABArUmICCu1t6I8RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAiwQExLWIzUUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUGsCAuJq7Y0YDwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0SEBAXIvYXESAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECtSYgIK7W3ojxECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECLBATEtYjNRQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQawIC4mrtjRgPAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRIQEBci9hcRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK1JiAgrtbeiPEQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsEBMS1iM1FBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBrAgLiau2NGA8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItEhAQFyL2FxEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABArUmICCu1t6I8RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAiwQExLWIzUUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUGsCAuJq7Y0YDwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0SEBAXIvYXESAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECtSYgIK7W3ojxECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECLBATEtYjNRQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQawIC4mrtjRgPAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRIQEBci9hcRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK1JiAgrtbeiPEQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsEBMS1iM1FBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBrAgLiau2NGA8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItEhAQFyL2FxEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABArUmICCu1t6I8RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAiwQExLWIzUUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUGsCAuJq7Y0YDwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0SEBAXIvYXESAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECtSYgIK7W3ojxECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECLBATEtYjNRQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQawIC4mrtjRgPAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRIQEBci9hcRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK1JiAgrtbeiPEQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsEBMS1iM1FBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBrAgLiau2NGA8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItEhAQFyL2FxEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABArUmMMED4gZ8NDjFn0aAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCakQIcJcfMnXhiQg+AaB8J1mnOGFH8rLd1pQjzWPQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgZyzQphniIgDuhnteS08WAXHRIvit++jgt/I7zkWfxsFyP+N34KcTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBsItKurqxvVBvfJAW4R6BYtgt/KLHCRLS5a9X4ZMNdjg645aC53aKOPusFD01xzz9FGd5s0b/PZoFFplo7tJs3BGzUBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAi0SEDeUUptliCsD3yLIrQx+i7cS2433o0+08pq844MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRCoE0C4iKwLUqgRma4KJM6tlaWUo1rBMWNTct5AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBgXgTYJiIvAtghyq84E19TDo1+UVY3v6BvXxLZGgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRaK9CmAXFjGkx1MFx1FjkBcWNSc44AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIExlWg1QFxZUDbk0XZ1LL8afldDqIMhov9Hht0zYejTxkYV96j7O+bAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiMr0CrA+LKB3YvSqBGi+C2CI6L0qjlfrkdwXBlEFyci34aAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoC4EOrb1JGeAWgXBl9rcIjiuD4srsb42D4VYaHUAX/cp7tHYsridAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBn69AqwPigq5xQFt1sFucbxwMF8eiRbBc42vrz/gkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLjJ9AmJVMjqC2C256oKoEaQXGRKa65YLjoKyBu/F6W3gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQvECbBMRF8FsExUX507JEajyyPN748dGnLJVaZpNr3Mc+AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYH4E2CYiLB5aBbTfc81qDTHGRCa46c1xsR5/qa/KODwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0AqBdnV1daNacX2DS8uyqWUp1DJrXJROLTPHleeayx7X4IYt2KkbPDTNNfccLbjyp3PJZ4NGpVk6tvvp/CC/hAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBsQqIG0qpTQPiSvHIAheBb2UQXHk8AuTir8wmVx5vy28BcSn5h92W/6LciwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCkISBuKKUOE+JVVQe8lUFxEQinESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBCSUwQQLiqgcrEK5awzYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITCiB9hPqxu5LgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR+TAEBcT+mtmcRIECAAAECBAgQIPD/7d2xbVxHFIVhgXDs2AHZgCOFVAduwLlbcF1qQB1IoSI1IAaOXYE5BAdYLJYSj9/O6AD6FhCo5V69d/VN+uMtAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLLBARxy2hdmAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR2Cgjidmq7FwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgsExDELaN1YQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYKSCI26ntXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwTEAQt4zWhQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgp4Agbqe2exEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAMgFB3DJaFyZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBnQKCuJ3a7kWAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECywQEcctoXZgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEdgoI4nZquxcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILBMQxC2jdWECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ2CkgiNup7V4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsExAELeM1oUJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYKeAIG6ntnsRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwDIBQdwyWhcmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZ0Cgrid2u5FgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAssEBHHLaF2YAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHYKCOJ2arsXAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCwTEMQto3VhAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENgpIIjbqe1eBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILBMQBC3jNaFCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCngCBup7Z7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMAyAUHcMloXJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGdAoK4ndruRYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLLBARxy2hdmAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR2Cgjidmq7FwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgsExDELaN1YQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYKSCI26ntXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwTEAQt4zWhQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgp4Agbqe2exEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAMgFB3DJaFyZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBnQKCuJ3a7kWAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECywQEcctoXZgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEdgoI4nZquxcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILBMQxC2jdWECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ2CkgiNup7V4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsEzghwVxD//8u+w/5cIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8PMJ/JAgbsRw7z98efPx88PPJ+5/TIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJLBH45etX5pLevLzzx7e63X9/cPv45fY3348+n5yDu3dvb04/9nQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIxAKHg7jxpLdvve7++P3p4xnOzdkRwY1/K4qbIn4SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwBGBQ0HcjNzuH+O28SS4S6/xJLj5FamXPh+/G1HcpSfJvTTv9wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4FzgUBB3erHzr0U9/2xEc+ev+XS4+RWq5597T4AAAQIECBAgQIAAAQIECBAgQIDmXgZvAAAaGklEQVQAAQIECBAgQIAAAQIECBAgQIAAAQIEXitwtSDu9IbziXAjghtfjTpe8+ec+/j4VLjxGjHcn89fqzo/85MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKQCN+k/+N78jOHG3EtfozpmxtPhxHDf0/Q5AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLxW4KpPiDuN4eZXqI7fzdf83Qzh5vv5uZ8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOD/Clw1iJtfgzqWOY3jTpf7+6/7p7diuFMVfydAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBowJXDeJG5DafCDf+Lno7ejz+PQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi8VuCqQdy7t7dP9/30+eEpjBvvvxXFjXjuW5+/9j9hjgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI3FybYERw989h3NfH4O2l1/xK1dOvWX1p1u8JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMD3BK76hLh5sxHF3T1+ZaoXAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYJXAoiJtfdzq/InXX0u5DgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTOBQ4FceNi4+tRx9efnr7O38/PZkB3+n48Tc6LAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgcFTgcxJ0HbSOGe//hy8W9RhB3Pn9x0C8JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAocDiIO7/fiN7GU+MuvcRwl1T8jgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSuIXD1IG4sJXy7xtG4BgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgkAjfJsFkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAkIIiLuAwTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKuAIK71ZOxFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApGAIC7iMkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrQKCuNaTsRcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIRAKCuIjLMAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0CgjiWk/GXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAQCQjiIi7DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAqIIhrPRl7ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAk8B+LnGlaFZbbmAAAAABJRU5ErkJggg==" + } + }, + "cell_type": "markdown", + "id": "217279f8-6af1-4209-b0ec-3d3d829ceed9", + "metadata": {}, + "source": [ + "![image.png](attachment:66422f79-9b46-4e07-9796-c1b350c26c9c.png)" + ] + }, + { + "cell_type": "markdown", + "id": "844edc05-0b6a-4e84-9213-1d3cbf6f833e", + "metadata": {}, + "source": [ + "## Use the function for model serving" + ] + }, + { + "cell_type": "markdown", + "id": "40182a6f-fc46-4a33-a7f5-7ee8ee171966", + "metadata": {}, + "source": [ + "### Create the server and serving function\n", + "\n", + "Create a serving function that uses the model from the previous run and serves it using MLRun.
\n", + "We will create a mock server to test the model in a local environment." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "f5fe910b-e177-4af7-84de-41a571d1774c", + "metadata": {}, + "outputs": [], + "source": [ + "serving_func = project.set_function(\n", + " func=\"function.yaml\",\n", + " name=\"example-xgb-server\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "ddbfd48f-a90e-4fe6-9caa-ddffeacf63d1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Add the model\n", + "serving_func.add_model(\n", + " \"mlflow_xgb_model\",\n", + " class_name=\"MLFlowModelServer\",\n", + " model_path=train_run.outputs[\"model\"],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "2298d111-2f53-4b84-be9e-e4e8a228dcc4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2024-03-27 15:37:31,627 [info] model mlflow_xgb_model was loaded\n", + "> 2024-03-27 15:37:31,628 [info] Loaded ['mlflow_xgb_model']\n" + ] + } + ], + "source": [ + "# Create a mock server\n", + "server = serving_func.to_mock_server()" + ] + }, + { + "cell_type": "markdown", + "id": "f54d7c06-4972-4881-9bc9-fba7db0adbe4", + "metadata": {}, + "source": [ + "### Test the model " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "4f256490-f225-4bd6-ac8a-5fc12a0f335d", + "metadata": {}, + "outputs": [], + "source": [ + "# An example taken randomly \n", + "result = server.test(\"/v2/models/mlflow_xgb_model/predict\", {\"inputs\":[{\"age\": 20, \"gender\": 0}]})" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "47839f4b-bb2d-4341-99c5-e34fa31270c9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'id': '43a61d06f2694fa695bdd6561b487131',\n", + " 'model_name': 'mlflow_xgb_model',\n", + " 'outputs': [[0.9242361187934875, 0.0418272465467453, 0.033936627209186554]]}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Look at the result, it shows the probability of the given example to be each of the \n", + "# irises featured in the dataset\n", + "result" + ] + }, + { + "cell_type": "markdown", + "id": "d4fc6c73-0963-4814-bd5f-2d27b464823e", + "metadata": {}, + "source": [ + "We predicted that a 20 year old female would like pop!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "mlrun-base", + "language": "python", + "name": "conda-env-mlrun-base-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/mlflow_utils/mlflow_utils.py b/mlflow_utils/mlflow_utils.py new file mode 100644 index 000000000..fb6124bef --- /dev/null +++ b/mlflow_utils/mlflow_utils.py @@ -0,0 +1,45 @@ +import zipfile +from typing import Any, Dict +import mlflow +from mlrun.serving.v2_serving import V2ModelServer +import pandas as pd + + +class MLFlowModelServer(V2ModelServer): + """ + MLFlow tracker Model serving class, inheriting the V2ModelServer class for being initialized automatically by the model + server and be able to run locally as part of a nuclio serverless function, or as part of a real-time pipeline. + """ + + def load(self): + """ + loads a model that was logged by the MLFlow tracker model + """ + # Unzip the model dir and then use mlflow's load function + model_file, _ = self.get_model(".zip") + model_path_unzip = model_file.replace(".zip", "") + + with zipfile.ZipFile(model_file, "r") as zip_ref: + zip_ref.extractall(model_path_unzip) + + self.model = mlflow.pyfunc.load_model(model_path_unzip) + + def predict(self, request: Dict[str, Any]) -> list: + """ + Infer the inputs through the model. The inferred data will + be read from the "inputs" key of the request. + + :param request: The request to the model using xgboost's predict. + The input to the model will be read from the "inputs" key. + + :return: The model's prediction on the given input. + """ + + # Get the inputs and set to accepted type: + inputs = pd.DataFrame(request["inputs"]) + + # Predict using the model's predict function: + predictions = self.model.predict(inputs) + + # Return as list: + return predictions.tolist() diff --git a/mlflow_utils/requirements.txt b/mlflow_utils/requirements.txt new file mode 100644 index 000000000..2ecc4ff91 --- /dev/null +++ b/mlflow_utils/requirements.txt @@ -0,0 +1,3 @@ +mlflow==2.12.2 +lightgbm +xgboost \ No newline at end of file diff --git a/mlflow_utils/test_mlflow_utils.py b/mlflow_utils/test_mlflow_utils.py new file mode 100644 index 000000000..70d6ce03f --- /dev/null +++ b/mlflow_utils/test_mlflow_utils.py @@ -0,0 +1,179 @@ +# Copyright 2018 Iguazio +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import tempfile + +import lightgbm as lgb +import mlflow +import mlflow.environment_variables +import mlflow.xgboost +import pytest +import xgboost as xgb +from sklearn import datasets +from sklearn.metrics import accuracy_score, log_loss +from sklearn.model_selection import train_test_split + +import os +# os.environ["MLRUN_IGNORE_ENV_FILE"] = "True" #TODO remove before push + +import mlrun +import mlrun.launcher.local +# Important: +# unlike mlconf which resets back to default after each test run, the mlflow configurations +# and env vars don't, so at the end of each test we need to redo anything we set in that test. +# what we cover in these tests: logging "regular" runs with, experiment name, run id and context +# name (last two using mlconf), failing run mid-way, and a run with no handler. +# we also test here importing of runs, artifacts and models from a previous run. + +# simple mlflow example of lgb logging +def lgb_run(): + # prepare train and test data + iris = datasets.load_iris() + X = iris.data + y = iris.target + X_train, X_test, y_train, y_test = train_test_split( + X, y, test_size=0.2, random_state=42 + ) + + # enable auto logging + mlflow.lightgbm.autolog() + + train_set = lgb.Dataset(X_train, label=y_train) + + with mlflow.start_run(): + # train model + params = { + "objective": "multiclass", + "num_class": 3, + "learning_rate": 0.1, + "metric": "multi_logloss", + "colsample_bytree": 1.0, + "subsample": 1.0, + "seed": 42, + } + # model and training data are being logged automatically + model = lgb.train( + params, + train_set, + num_boost_round=10, + valid_sets=[train_set], + valid_names=["train"], + ) + + # evaluate model + y_proba = model.predict(X_test) + y_pred = y_proba.argmax(axis=1) + loss = log_loss(y_test, y_proba) + acc = accuracy_score(y_test, y_pred) + + # log metrics + mlflow.log_metrics({"log_loss": loss, "accuracy": acc}) + + +# simple mlflow example of xgb logging +def xgb_run(): + # prepare train and test data + iris = datasets.load_iris() + x = iris.data + y = iris.target + x_train, x_test, y_train, y_test = train_test_split( + x, y, test_size=0.2, random_state=42 + ) + + # enable auto logging + mlflow.xgboost.autolog() + + dtrain = xgb.DMatrix(x_train, label=y_train) + dtest = xgb.DMatrix(x_test, label=y_test) + + with mlflow.start_run(): + # train model + params = { + "objective": "multi:softprob", + "num_class": 3, + "learning_rate": 0.3, + "eval_metric": "mlogloss", + "colsample_bytree": 1.0, + "subsample": 1.0, + "seed": 42, + } + # model and training data are being logged automatically + model = xgb.train(params, dtrain, evals=[(dtrain, "train")]) + # evaluate model + y_proba = model.predict(dtest) + y_pred = y_proba.argmax(axis=1) + loss = log_loss(y_test, y_proba) + acc = accuracy_score(y_test, y_pred) + # log metrics + mlflow.log_metrics({"log_loss": loss, "accuracy": acc}) + + +@pytest.mark.parametrize("handler", ["xgb_run", "lgb_run"]) +def test_track_run_with_experiment_name(handler): + """ + This test is for tracking a run logged by mlflow into mlrun while it's running using the experiment name. + first activate the tracking option in mlconf, then we name the mlflow experiment, + then we run some code that is being logged by mlflow using mlrun, + and finally compare the mlrun we tracked with the original mlflow run using the validate func + """ + # Enable general tracking + mlrun.mlconf.external_platform_tracking.enabled = True + # Set the mlflow experiment name + mlflow.environment_variables.MLFLOW_EXPERIMENT_NAME.set(f"{handler}_test_track") + with tempfile.TemporaryDirectory() as test_directory: + mlflow.set_tracking_uri(test_directory) # Tell mlflow where to save logged data + + # Create a project for this tester: + project = mlrun.get_or_create_project(name="default", context=test_directory) + + # Create a MLRun function using the tester source file (all the functions must be located in it): + func = project.set_function( + func=__file__, + name=f"{handler}-test", + kind="job", + image="mlrun/mlrun", + requirements=["mlflow"], + ) + # mlflow creates a dir to log the run, this makes it in the tmpdir we create + trainer_run = func.run( + local=True, + handler=handler, + artifact_path=test_directory, + ) + + serving_func = project.set_function( + func=os.path.abspath("function.yaml"), + name=f"{handler}-server", + ) + model_name = f"{handler}-model" + # Add the model + upper_handler = handler.replace("_", "-") + model_path = test_directory + f"/{upper_handler}-test-{upper_handler}/0/model/" + serving_func.add_model( + model_name, + class_name="MLFlowModelServer", + model_path=model_path, + ) + + # Create a mock server + server = serving_func.to_mock_server() + + # An example taken randomly + result = server.test(f"/v2/models/{model_name}/predict", {"inputs": [[5.1, 3.5, 1.4, 0.2]]}) + print(result) + assert result + # unset mlflow experiment name to default + mlflow.environment_variables.MLFLOW_EXPERIMENT_NAME.unset() + + diff --git a/model_server/function.yaml b/model_server/function.yaml index 1539a3810..cb082c184 100644 --- a/model_server/function.yaml +++ b/model_server/function.yaml @@ -44,7 +44,7 @@ spec: - name: MODEL_CLASS value: ClassifierModel handler: model_server:handler - runtime: python:3.6 + runtime: python:3.9 volumes: [] source: '' function_kind: serving diff --git a/pii_recognizer/function.yaml b/pii_recognizer/function.yaml index 54b448d9c..069fa1ffe 100644 --- a/pii_recognizer/function.yaml +++ b/pii_recognizer/function.yaml @@ -2,13 +2,14 @@ kind: job metadata: name: pii-recognizer tag: '' - hash: b09b7b9a4ffd55088d665a0191055411e9198a2f + hash: 818930645d33704e9cada919769ee9d93cbb9434 project: '' labels: author: pgw categories: - machine-learning - data-preparation + - NLP spec: command: '' args: [] diff --git a/pii_recognizer/item.yaml b/pii_recognizer/item.yaml index 2f618febc..41ead33b6 100644 --- a/pii_recognizer/item.yaml +++ b/pii_recognizer/item.yaml @@ -2,6 +2,7 @@ apiVersion: v1 categories: - machine-learning - data-preparation + - NLP description: This function is used to recognize PII in a directory of text files doc: '' example: pii_recognizer.ipynb @@ -30,5 +31,5 @@ spec: - st-annotated-text - https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl url: '' -version: 0.2.0 +version: 0.3.0 test_valid: False diff --git a/pyannote_audio/function.yaml b/pyannote_audio/function.yaml index 2e84fbd92..30870afa2 100644 --- a/pyannote_audio/function.yaml +++ b/pyannote_audio/function.yaml @@ -2,14 +2,14 @@ kind: job metadata: name: pyannote-audio tag: '' - hash: c45be8d7f51f0b2203155b08c307814a2cb0ac78 + hash: aed670a0534ebf30690dd2af7acad35595c7d5b1 project: '' labels: author: guyl categories: - deep-learning - - Huggingface - - Audio + - huggingface + - audio spec: command: '' args: [] diff --git a/pyannote_audio/item.yaml b/pyannote_audio/item.yaml index 7133ceb41..b69add9e6 100644 --- a/pyannote_audio/item.yaml +++ b/pyannote_audio/item.yaml @@ -1,8 +1,8 @@ apiVersion: v1 categories: - deep-learning -- Huggingface -- Audio +- huggingface +- audio description: pyannote's speech diarization of audio files doc: '' example: pyannote_audio.ipynb @@ -27,4 +27,4 @@ spec: - torchaudio - tqdm url: '' -version: 1.1.0 +version: 1.2.0 diff --git a/question_answering/function.yaml b/question_answering/function.yaml index a33614153..7491b17e9 100644 --- a/question_answering/function.yaml +++ b/question_answering/function.yaml @@ -2,11 +2,13 @@ kind: job metadata: name: question-answering tag: '' - hash: 90e67d116b256a98da7d5819724e43df01d8b4eb + hash: aed62db95f17576c69b457767e3595c2de1d5465 project: '' labels: author: yonish categories: + - genai + - huggingface - machine-learning spec: command: '' diff --git a/question_answering/item.yaml b/question_answering/item.yaml index 58ab5cc36..56fc5a5ec 100755 --- a/question_answering/item.yaml +++ b/question_answering/item.yaml @@ -1,5 +1,7 @@ apiVersion: v1 categories: +- genai +- huggingface - machine-learning description: GenAI approach of question answering on a given data doc: '' @@ -24,4 +26,4 @@ spec: - torch - tqdm url: '' -version: 0.3.1 +version: 0.4.0 diff --git a/silero_vad/function.yaml b/silero_vad/function.yaml index 0b4ad422b..8ec121a6b 100644 --- a/silero_vad/function.yaml +++ b/silero_vad/function.yaml @@ -2,14 +2,14 @@ kind: job metadata: name: silero-vad tag: '' - hash: 61b7a70c167b7819481fdabf9350fc6fa344d2f5 + hash: 59336f808643a74f3a2c5d506977387010427208 project: '' labels: author: guyl categories: - deep-learning - - PyTorch - - Audio + - pytorch + - audio spec: command: '' args: [] diff --git a/silero_vad/item.yaml b/silero_vad/item.yaml index 17c8eb62c..9ce9a5d2e 100644 --- a/silero_vad/item.yaml +++ b/silero_vad/item.yaml @@ -1,8 +1,8 @@ apiVersion: v1 categories: - deep-learning -- PyTorch -- Audio +- pytorch +- audio description: Silero VAD (Voice Activity Detection) functions. doc: '' example: silero_vad.ipynb @@ -27,4 +27,4 @@ spec: - tqdm - onnxruntime url: '' -version: 1.2.0 +version: 1.3.0 diff --git a/structured_data_generator/function.yaml b/structured_data_generator/function.yaml index 6f2039e4b..1093e178b 100644 --- a/structured_data_generator/function.yaml +++ b/structured_data_generator/function.yaml @@ -2,7 +2,7 @@ kind: job metadata: name: structured-data-generator tag: '' - hash: ac969f46aae91804024ea736856267c26578864b + hash: 44bb39f4bc55b38fc7ead1df24cb02bcf7f05bc9 project: '' labels: author: zeevr @@ -10,7 +10,7 @@ metadata: - machine-learning - data-preparation - data-generation - - GenAI + - genai spec: command: '' args: [] diff --git a/structured_data_generator/item.yaml b/structured_data_generator/item.yaml index 27e0e3fab..be2a2a948 100755 --- a/structured_data_generator/item.yaml +++ b/structured_data_generator/item.yaml @@ -3,7 +3,7 @@ categories: - machine-learning - data-preparation - data-generation -- GenAI +- genai description: GenAI approach of generating structured data according to a given schema doc: '' example: structured_data_generator.ipynb @@ -26,4 +26,4 @@ spec: - langchain - tqdm url: '' -version: 1.4.0 +version: 1.5.0 diff --git a/text_to_audio_generator/function.yaml b/text_to_audio_generator/function.yaml index df142d2ef..88ef9cb89 100644 --- a/text_to_audio_generator/function.yaml +++ b/text_to_audio_generator/function.yaml @@ -2,13 +2,14 @@ kind: job metadata: name: text-to-audio-generator tag: '' - hash: 534e34d316098dcb345860a786ea013102150e67 + hash: 89fcaf3fab53e7b7fbba448a5e65c253d7fa66ed project: '' labels: author: yonatans categories: - data-preparation - machine-learning + - pytorch spec: command: '' args: [] diff --git a/text_to_audio_generator/item.yaml b/text_to_audio_generator/item.yaml index 4784a80d2..efa8afc90 100644 --- a/text_to_audio_generator/item.yaml +++ b/text_to_audio_generator/item.yaml @@ -2,6 +2,7 @@ apiVersion: v1 categories: - data-preparation - machine-learning +- pytorch description: Generate audio file from text using different speakers doc: '' example: text_to_audio_generator.ipynb @@ -24,5 +25,5 @@ spec: - bark - torchaudio url: '' -version: 1.1.0 +version: 1.2.0 test_valid: True diff --git a/tf2_serving/function.yaml b/tf2_serving/function.yaml index a8fa7ce66..c755263ae 100644 --- a/tf2_serving/function.yaml +++ b/tf2_serving/function.yaml @@ -46,7 +46,7 @@ spec: - name: MODEL_CLASS value: TF2Model handler: tf2_serving:handler - runtime: python:3.6 + runtime: python:3.9 volumes: [] source: '' function_kind: serving \ No newline at end of file diff --git a/transcribe/function.yaml b/transcribe/function.yaml index 40dd2f0e6..d72751ad6 100644 --- a/transcribe/function.yaml +++ b/transcribe/function.yaml @@ -2,12 +2,14 @@ kind: job metadata: name: transcribe tag: '' - hash: 5cd620de67a936ee8a87cfc1f0b97e19730d0a69 + hash: 8810ac74045bd15cee15a2e4e89563e8e29908d3 project: '' labels: author: yonatans categories: - data-preparation + - genai + - huggingface - machine-learning spec: command: '' @@ -24,6 +26,7 @@ spec: - tqdm - torchaudio - torch + - accelerate entry_points: do_task: name: do_task diff --git a/transcribe/item.yaml b/transcribe/item.yaml index d53341ff2..7fddcf95e 100644 --- a/transcribe/item.yaml +++ b/transcribe/item.yaml @@ -1,6 +1,8 @@ apiVersion: v1 categories: - data-preparation +- genai +- huggingface - machine-learning description: Transcribe audio files into text files doc: '' @@ -27,4 +29,4 @@ spec: - torch - accelerate url: '' -version: 1.0.0 \ No newline at end of file +version: 1.1.0 \ No newline at end of file diff --git a/translate/function.yaml b/translate/function.yaml index 1a3fd7a88..bb1656103 100644 --- a/translate/function.yaml +++ b/translate/function.yaml @@ -2,13 +2,16 @@ kind: job metadata: name: translate tag: '' - hash: bc26313449cd13554a18106ed9893535fb79dd6e + hash: 7eedf684bcebfbfd964e5503afbb56335c8f4097 project: '' labels: author: guyl categories: - data-preparation + - huggingface - machine-learning + - deep-learning + - NLP spec: command: '' args: [] @@ -34,24 +37,27 @@ spec: - name: root_worker_inputs type: Dict[str, Any] default: null - outputs: - - default: '' + outputs: [] lineno: 56 + has_varargs: false + has_kwargs: false decorator: name: decorator doc: '' parameters: - name: handler - outputs: - - default: '' + outputs: [] lineno: 68 + has_varargs: false + has_kwargs: false wrapper: name: wrapper doc: '' parameters: [] - outputs: - - default: '' + outputs: [] lineno: 73 + has_varargs: false + has_kwargs: true translate: name: translate doc: 'Translate text files using a transformer model from Huggingface''s hub @@ -112,8 +118,10 @@ spec: default: false outputs: - doc: 'A tuple of:' - default: '' + type: Tuple[str, pd.DataFrame, dict] lineno: 135 + has_varargs: false + has_kwargs: false description: Translate text files from one language to another default_handler: translate disable_auto_mount: false diff --git a/translate/item.yaml b/translate/item.yaml index f85a55990..e63947349 100644 --- a/translate/item.yaml +++ b/translate/item.yaml @@ -1,6 +1,7 @@ apiVersion: v1 categories: - data-preparation +- huggingface - machine-learning - deep-learning - NLP @@ -28,5 +29,5 @@ spec: - torch - tqdm url: '' -version: 0.0.2 +version: 0.1.0 test_valid: True diff --git a/v2_model_server/function.yaml b/v2_model_server/function.yaml index 53fb00ea1..45d261b6a 100644 --- a/v2_model_server/function.yaml +++ b/v2_model_server/function.yaml @@ -70,14 +70,14 @@ spec: annotations: nuclio.io/generated_by: function generated from /home/michaell/projects/functions/v2_model_server/v2_model_server.py spec: - runtime: python:3.6 + runtime: python:3.9 handler: v2_model_server:handler env: [] volumes: [] build: commands: [] noBaseImagesPull: true - functionSourceCode: IyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKaW1wb3J0IG1scnVuCgpmcm9tIGNsb3VkcGlja2xlIGltcG9ydCBsb2FkCmZyb20gdHlwaW5nIGltcG9ydCBMaXN0CmZyb20gc2tsZWFybi5kYXRhc2V0cyBpbXBvcnQgbG9hZF9pcmlzCmltcG9ydCBudW1weSBhcyBucAoKaW1wb3J0IHdhcm5pbmdzCgp3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygiaWdub3JlIikKCgpjbGFzcyBDbGFzc2lmaWVyTW9kZWwobWxydW4uc2VydmluZy5WMk1vZGVsU2VydmVyKToKICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICIiImxvYWQgYW5kIGluaXRpYWxpemUgdGhlIG1vZGVsIGFuZC9vciBvdGhlciBlbGVtZW50cyIiIgogICAgICAgIG1vZGVsX2ZpbGUsIGV4dHJhX2RhdGEgPSBzZWxmLmdldF9tb2RlbCgiLnBrbCIpCiAgICAgICAgc2VsZi5tb2RlbCA9IGxvYWQob3Blbihtb2RlbF9maWxlLCAicmIiKSkKCiAgICBkZWYgcHJlZGljdChzZWxmLCBib2R5OiBkaWN0KSAtPiBMaXN0OgogICAgICAgICIiIkdlbmVyYXRlIG1vZGVsIHByZWRpY3Rpb25zIGZyb20gc2FtcGxlLiIiIgogICAgICAgIGZlYXRzID0gbnAuYXNhcnJheShib2R5WyJpbnB1dHMiXSkKICAgICAgICByZXN1bHQ6IG5wLm5kYXJyYXkgPSBzZWxmLm1vZGVsLnByZWRpY3QoZmVhdHMpCiAgICAgICAgcmV0dXJuIHJlc3VsdC50b2xpc3QoKQoKCmZyb20gbWxydW4ucnVudGltZXMgaW1wb3J0IG51Y2xpb19pbml0X2hvb2sKCgpkZWYgaW5pdF9jb250ZXh0KGNvbnRleHQpOgogICAgbnVjbGlvX2luaXRfaG9vayhjb250ZXh0LCBnbG9iYWxzKCksICJzZXJ2aW5nX3YyIikKCgpkZWYgaGFuZGxlcihjb250ZXh0LCBldmVudCk6CiAgICByZXR1cm4gY29udGV4dC5tbHJ1bl9oYW5kbGVyKGNvbnRleHQsIGV2ZW50KQoKZnJvbSBtbHJ1bi5ydW50aW1lcyBpbXBvcnQgbnVjbGlvX2luaXRfaG9vawpkZWYgaW5pdF9jb250ZXh0KGNvbnRleHQpOgogICAgbnVjbGlvX2luaXRfaG9vayhjb250ZXh0LCBnbG9iYWxzKCksICdzZXJ2aW5nX3YyJykKCmRlZiBoYW5kbGVyKGNvbnRleHQsIGV2ZW50KToKICAgIHJldHVybiBjb250ZXh0Lm1scnVuX2hhbmRsZXIoY29udGV4dCwgZXZlbnQpCg== + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKIyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKaW1wb3J0IG1scnVuCgpmcm9tIGNsb3VkcGlja2xlIGltcG9ydCBsb2FkCmZyb20gdHlwaW5nIGltcG9ydCBMaXN0CmZyb20gc2tsZWFybi5kYXRhc2V0cyBpbXBvcnQgbG9hZF9pcmlzCmltcG9ydCBudW1weSBhcyBucAoKaW1wb3J0IHdhcm5pbmdzCgp3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygiaWdub3JlIikKCgpjbGFzcyBDbGFzc2lmaWVyTW9kZWwobWxydW4uc2VydmluZy5WMk1vZGVsU2VydmVyKToKICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICIiImxvYWQgYW5kIGluaXRpYWxpemUgdGhlIG1vZGVsIGFuZC9vciBvdGhlciBlbGVtZW50cyIiIgogICAgICAgIG1vZGVsX2ZpbGUsIGV4dHJhX2RhdGEgPSBzZWxmLmdldF9tb2RlbCgiLnBrbCIpCiAgICAgICAgc2VsZi5tb2RlbCA9IGxvYWQob3Blbihtb2RlbF9maWxlLCAicmIiKSkKCiAgICBkZWYgcHJlZGljdChzZWxmLCBib2R5OiBkaWN0KSAtPiBMaXN0OgogICAgICAgICIiIkdlbmVyYXRlIG1vZGVsIHByZWRpY3Rpb25zIGZyb20gc2FtcGxlLiIiIgogICAgICAgIGZlYXRzID0gbnAuYXNhcnJheShib2R5WyJpbnB1dHMiXSkKICAgICAgICByZXN1bHQ6IG5wLm5kYXJyYXkgPSBzZWxmLm1vZGVsLnByZWRpY3QoZmVhdHMpCiAgICAgICAgcmV0dXJuIHJlc3VsdC50b2xpc3QoKQpmcm9tIG1scnVuLnJ1bnRpbWVzIGltcG9ydCBudWNsaW9faW5pdF9ob29rCmRlZiBpbml0X2NvbnRleHQoY29udGV4dCk6CiAgICBudWNsaW9faW5pdF9ob29rKGNvbnRleHQsIGdsb2JhbHMoKSwgJ3NlcnZpbmdfdjInKQoKZGVmIGhhbmRsZXIoY29udGV4dCwgZXZlbnQpOgogICAgcmV0dXJuIGNvbnRleHQubWxydW5faGFuZGxlcihjb250ZXh0LCBldmVudCkK source: '' function_kind: serving_v2 default_class: ClassifierModel diff --git a/v2_model_server/item.yaml b/v2_model_server/item.yaml index e0d6b0f96..7bde91a64 100644 --- a/v2_model_server/item.yaml +++ b/v2_model_server/item.yaml @@ -25,4 +25,4 @@ spec: kind: serving requirements: [] url: '' -version: 1.1.0 +version: 1.2.0 diff --git a/v2_model_server/v2_model_server.py b/v2_model_server/v2_model_server.py index dbaa72ef2..572f1680d 100644 --- a/v2_model_server/v2_model_server.py +++ b/v2_model_server/v2_model_server.py @@ -37,14 +37,3 @@ def predict(self, body: dict) -> List: feats = np.asarray(body["inputs"]) result: np.ndarray = self.model.predict(feats) return result.tolist() - - -from mlrun.runtimes import nuclio_init_hook - - -def init_context(context): - nuclio_init_hook(context, globals(), "serving_v2") - - -def handler(context, event): - return context.mlrun_handler(context, event)