{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceType":"competition","sourceId":50160,"databundleVersionId":7921029}],"dockerImageVersionId":31328,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2026-04-25T10:00:17.713545Z","iopub.execute_input":"2026-04-25T10:00:17.713803Z","iopub.status.idle":"2026-04-25T10:00:17.822824Z","shell.execute_reply.started":"2026-04-25T10:00:17.713777Z","shell.execute_reply":"2026-04-25T10:00:17.821796Z"}},"outputs":[{"name":"stdout","text":"/kaggle/input/competitions/home-credit-credit-risk-model-stability/sample_submission.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/feature_definitions.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_deposit_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_applprev_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_static_cb_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_static_0_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_1_3.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_1_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_tax_registry_b_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_static_0_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_3.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_9.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_debitcard_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_1_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_11.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_applprev_1_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_1_4.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_tax_registry_c_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_applprev_1_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_tax_registry_a_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_6.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_5.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_b_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_other_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_static_0_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_applprev_1_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_base.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_person_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_7.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_10.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_b_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_8.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_1_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_credit_bureau_a_2_4.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/test/test_person_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_tax_registry_c_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_static_0_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_1_3.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_b_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_applprev_1_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_static_cb_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_other_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_6.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_tax_registry_a_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_tax_registry_b_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_person_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_person_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_b_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_7.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_deposit_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_debitcard_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_5.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_4.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_base.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_9.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_3.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_applprev_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_10.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_2_8.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_1_2.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_static_0_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_1_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_credit_bureau_a_1_1.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/train_applprev_1_0.parquet\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_6.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_11.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_9.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_base.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_1_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_b_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_10.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_4.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_static_0_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_static_cb_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_b_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_tax_registry_b_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_person_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_person_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_8.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_applprev_1_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_applprev_1_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_1_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_applprev_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_7.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_other_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_tax_registry_c_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_1_3.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_static_0_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_5.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_1_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_debitcard_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_1_4.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_deposit_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_static_0_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_applprev_1_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_tax_registry_a_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/test/test_credit_bureau_a_2_3.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_1_3.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_static_cb_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_applprev_1_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_person_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_base.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_tax_registry_a_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_static_0_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_1_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_applprev_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_6.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_1_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_person_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_1_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_tax_registry_c_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_4.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_9.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_3.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_7.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_b_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_2.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_static_0_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_deposit_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_10.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_tax_registry_b_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_applprev_1_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_8.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_5.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_b_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_credit_bureau_a_2_0.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_other_1.csv\n/kaggle/input/competitions/home-credit-credit-risk-model-stability/csv_files/train/train_debitcard_1.csv\n","output_type":"stream"}],"execution_count":2},{"cell_type":"code","source":"# =========================\n# 1. IMPORTS\n# =========================\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import StandardScaler, LabelEncoder\nfrom sklearn.utils import class_weight\n\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras import layers, regularizers\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T10:06:19.149121Z","iopub.execute_input":"2026-04-25T10:06:19.149882Z","iopub.status.idle":"2026-04-25T10:06:19.154817Z","shell.execute_reply.started":"2026-04-25T10:06:19.14985Z","shell.execute_reply":"2026-04-25T10:06:19.15407Z"}},"outputs":[],"execution_count":10},{"cell_type":"code","source":"# =========================\n# 2. LOAD DATA\n# =========================\npath = '/kaggle/input/competitions/home-credit-credit-risk-model-stability/parquet_files/train/'\n\ndf_base = pd.read_parquet(path + 'train_base.parquet')\n\ndf_static = pd.concat([\n    pd.read_parquet(path + 'train_static_0_0.parquet'),\n    pd.read_parquet(path + 'train_static_0_1.parquet')\n], ignore_index=True)\n\ndf = df_base.merge(df_static, on='case_id', how='left')\n\nprint(\"Shape:\", df.shape)\nprint(\"Default rate:\", df['target'].mean())\n\n\n# =========================\n# 3. DROP HIGH MISSING\n# =========================\nmissing_pct = df.isnull().mean() * 100\ncols_to_drop = missing_pct[missing_pct > 40].index\ndf = df.drop(columns=cols_to_drop)\n\n\n# =========================\n# 4. SPLIT COLUMNS\n# =========================\ncols_to_skip = ['case_id', 'date_decision', 'WEEK_NUM', 'target']\n\nnum_cols = df.select_dtypes(include=['number']).columns.tolist()\nnum_cols = [c for c in num_cols if c not in cols_to_skip]\n\ncat_cols = df.select_dtypes(include=['object', 'bool']).columns.tolist()\n\n\n# =========================\n# 5. HANDLE MISSING\n# =========================\n\npd.set_option('future.no_silent_downcasting', True)\ndf[num_cols] = df[num_cols].fillna(df[num_cols].median())\n\nmode_values = df[cat_cols].mode(dropna=True).iloc[0]\ndf[cat_cols] = df[cat_cols].fillna(mode_values)\n\n# =========================\n# 6. ENCODE CATEGORICAL\n# =========================\nle = LabelEncoder()\nfor col in cat_cols:\n    df[col] = le.fit_transform(df[col].astype(str))\n\n\n# =========================\n# 7. FEATURE ENGINEERING (OPTIMIZED)\n# =========================\nnew_features = pd.DataFrame({\n    'annuity_to_debt': df['annuity_780A'] / (df['totaldebt_9A'] + 1),\n    'settled_to_debt': df['totalsettled_863A'] / (df['totaldebt_9A'] + 1),\n    'credit_to_income': df['credamount_770A'] / (df['maininc_215A'] + 1),\n    'debt_to_credit': df['currdebt_22A'] / (df['credamount_770A'] + 1),\n    'late_pay_ratio': df['numinstlswithdpd10_728L'] / (df['numinstls_657L'] + 1)\n})\n\ndf = pd.concat([df, new_features], axis=1)\n\n\n# =========================\n# 8. TRAIN / VAL SPLIT \n# =========================\ntrain_df = df[df['WEEK_NUM'] <= df['WEEK_NUM'].quantile(0.8)]\nval_df   = df[df['WEEK_NUM'] > df['WEEK_NUM'].quantile(0.8)]\n\ndrop_cols = ['case_id', 'date_decision', 'WEEK_NUM', 'target']\n\nX_train = train_df.drop(columns=drop_cols)\ny_train = train_df['target']\n\nX_val = val_df.drop(columns=drop_cols)\ny_val = val_df['target']\n\n\n# =========================\n# 9. SCALING\n# =========================\nscaler = StandardScaler()\n\nX_train_scaled = scaler.fit_transform(X_train)\nX_val_scaled = scaler.transform(X_val)\n\n\n# =========================\n# 10. CLASS WEIGHTS\n# =========================\nclass_weights_vals = class_weight.compute_class_weight(\n    class_weight='balanced',\n    classes=np.unique(y_train),\n    y=y_train\n)\n\nclass_weights = dict(zip(np.unique(y_train), class_weights_vals))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T10:06:21.511161Z","iopub.execute_input":"2026-04-25T10:06:21.511453Z","iopub.status.idle":"2026-04-25T10:06:47.350026Z","shell.execute_reply.started":"2026-04-25T10:06:21.511429Z","shell.execute_reply":"2026-04-25T10:06:47.349238Z"}},"outputs":[{"name":"stdout","text":"Shape: (1526659, 172)\nDefault rate: 0.03143727577671242\n","output_type":"stream"}],"execution_count":11},{"cell_type":"code","source":"# =========================\n# 12. BUILD MODEL FUNCTION\n# =========================\nimport os\nos.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'\n\ndef build_model(optimizer):\n\n    model = keras.Sequential([\n        keras.Input(shape=(X_train_scaled.shape[1],)),\n\n        layers.Dense(128, activation='relu',\n                     kernel_regularizer=regularizers.l2(0.001)),\n        layers.Dropout(0.3),\n\n        layers.Dense(64, activation='relu',\n                     kernel_regularizer=regularizers.l2(0.001)),\n        layers.Dropout(0.3),\n\n        layers.Dense(1, activation='sigmoid')\n    ])\n\n    model.compile(\n        optimizer=optimizer,\n        loss='binary_crossentropy',\n        metrics=[keras.metrics.AUC(name='auc')]\n    )\n\n    return model\n\n\n# =========================\n# 13. CALLBACK\n# =========================\nearly_stop = keras.callbacks.EarlyStopping(\n    monitor='val_auc',\n    patience=3,\n    mode='max',\n    restore_best_weights=True,\n    verbose=1\n)\n\n\n# =========================\n# 14. TRAIN BASE MODEL (ADAM)\n# =========================\nmodel = build_model(keras.optimizers.Adam())\n\nhistory = model.fit(\n    X_train_scaled, y_train,\n    validation_data=(X_val_scaled, y_val),\n    epochs=20,\n    batch_size=1024,\n    class_weight=class_weights,\n    callbacks=[early_stop],\n    verbose=2  \n)\n\nprint(\"Training done!\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T10:28:09.444456Z","iopub.execute_input":"2026-04-25T10:28:09.444811Z","iopub.status.idle":"2026-04-25T10:29:23.234775Z","shell.execute_reply.started":"2026-04-25T10:28:09.444786Z","shell.execute_reply":"2026-04-25T10:29:23.233826Z"}},"outputs":[{"name":"stdout","text":"Epoch 1/20\n1207/1207 - 11s - 9ms/step - auc: 0.7319 - loss: 0.6990 - val_auc: 0.7777 - val_loss: 0.7498\nEpoch 2/20\n1207/1207 - 9s - 7ms/step - auc: 0.7489 - loss: 0.6153 - val_auc: 0.7796 - val_loss: 0.7069\nEpoch 3/20\n1207/1207 - 9s - 8ms/step - auc: 0.7516 - loss: 0.6029 - val_auc: 0.7767 - val_loss: 0.6595\nEpoch 4/20\n1207/1207 - 9s - 7ms/step - auc: 0.7521 - loss: 0.6007 - val_auc: 0.7814 - val_loss: 0.7291\nEpoch 5/20\n1207/1207 - 9s - 8ms/step - auc: 0.7536 - loss: 0.5996 - val_auc: 0.7835 - val_loss: 0.7224\nEpoch 6/20\n1207/1207 - 9s - 7ms/step - auc: 0.7537 - loss: 0.5993 - val_auc: 0.7806 - val_loss: 0.7163\nEpoch 7/20\n1207/1207 - 9s - 7ms/step - auc: 0.7545 - loss: 0.5989 - val_auc: 0.7795 - val_loss: 0.7074\nEpoch 8/20\n1207/1207 - 8s - 7ms/step - auc: 0.7552 - loss: 0.5987 - val_auc: 0.7819 - val_loss: 0.6795\nEpoch 8: early stopping\nRestoring model weights from the end of the best epoch: 5.\nTraining done!\n","output_type":"stream"}],"execution_count":26},{"cell_type":"code","source":"from sklearn.metrics import roc_auc_score\n\ny_pred_prob = model.predict(X_val_scaled)\nauc = roc_auc_score(y_val, y_pred_prob)\n\nprint(\"AUC:\", auc)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T10:29:48.338791Z","iopub.execute_input":"2026-04-25T10:29:48.339117Z","iopub.status.idle":"2026-04-25T10:29:59.18905Z","shell.execute_reply.started":"2026-04-25T10:29:48.33909Z","shell.execute_reply":"2026-04-25T10:29:59.188254Z"}},"outputs":[{"name":"stdout","text":"\u001b[1m9114/9114\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 887us/step\nAUC: 0.7835314122701001\n","output_type":"stream"}],"execution_count":27},{"cell_type":"code","source":"# =========================\n# 15. PLOT AUC\n# =========================\nplt.figure(figsize=(8,4))\nplt.plot(history.history['auc'], label='Train AUC')\nplt.plot(history.history['val_auc'], label='Val AUC')\nplt.legend()\nplt.title('AUC over epochs')\nplt.grid()\nplt.show()\n\nprint(\"Best Val AUC:\", max(history.history['val_auc']))\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T10:30:14.274647Z","iopub.execute_input":"2026-04-25T10:30:14.274933Z","iopub.status.idle":"2026-04-25T10:30:14.400547Z","shell.execute_reply.started":"2026-04-25T10:30:14.274909Z","shell.execute_reply":"2026-04-25T10:30:14.399777Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 800x400 with 1 Axes>","image/png":"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gfPnzyMyMhI7duzAt99+ixdffNE4emgwfvx4vPLKK3jllVfg5+dnNpo5aNAgPPvss1i0aBFSU1MxfPhwuLi4ICMjAxs2bMD7779vsmZqfclkMnz22WcYOXIkevTogenTpyM0NBRXrlzBzz//DLVaje+++85kn3PnzuHBBx/EiBEjcODAAaxZswaTJk1CZGQkACAyMhJTp07FJ598gvz8fAwaNAgpKSlYvXo1xo4da7ypTa1W47333sNTTz2F/v37Y9KkSfD19cUff/yB0tJSrF692qrPMnz4cAQHB+Ouu+5CUFAQTp48iQ8//BCjR4+26YY3InISdl1DgIhue2PGjBFdXV3FkpKSWutMmzZNdHFxEXNzc41lJ0+eFGNjY8XAwEBRoVCIgYGB4oQJE8STJ0/Wepyvv/5aHD58uOjn5ycqFAqxdevWYmxsrLh79+5btrOoqEh86aWXxJCQENHFxUXs0qWLuHjxYpMllGq66667LC7PVNMnn3wi9uvXT3RzcxO9vLzEXr16ibNnzxYzMzONdcLCwsTRo0ffsn01/f777+Ijjzwi+vv7iyqVSgwLCxPHjx8vJicnG+sYlpn666+/xHHjxoleXl6ir6+vOGvWLLNlorRarbhgwQKxQ4cOoouLi9i2bVsxPj5eLC8vNzv3li1bxDvvvFN0c3MT1Wq1OGDAAPHLL780vj9o0CCLy0dNnTpVDAsLM77++OOPxXvvvdf4GTp16iS++uqrYkFBgVV9QUTOSRDFBlx7ISIipzZ//nwsWLAA165dM87XJSJyFJyDSkREREQOhQGViIiIiBwKAyoRERERORTOQSUiIiIih8IRVCIiIiJyKAyoRERERORQWsRC/Xq9HpmZmfDy8mrU50UTERERUeMQRRFFRUUICQmBTFb3GGmLCKiZmZlo27atvZtBRERERLdw6dIltGnTps46LSKgGh57d+nSJajV6mY5p1arxY4dO4yPKCTrsP9sxz60DfvPduxD27D/bMc+tE1z919hYSHatm1br8cVt4iAarisr1armzWguru7Q61W8y9FA7D/bMc+tA37z3bsQ9uw/2zHPrSNvfqvPtMxeZMUERERETkUBlQiIiIicigMqERERETkUBhQiYiIiMihMKASERERkUNhQCUiIiIih8KASkREREQOhQGViIiIiBwKAyoRERERORQGVCIiIiJy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znSkNbg34BVsv3nAer10Y1P61qpF89NM328dKc0ljRgtjQq3xPnKRETkFBhQGyKoB/Sdh+F8voiwyHsg9+9YHUAdfdSMGk4QpF86fNsD3R+qLi/KrgqrqdVTBIxP2boIpH1fXdcjsHrlAMMqAr4dmi4MVmqAc3ulUJr+o+mi+TKFtGh+uGHRfCsfY0hERNREGFAbIuxO6EL64/gPP6Dt3/j0itueVxDgNUxahN6gLF96qEDNtVpz04GSHGkh+9M/VddVqaunBRhGWgO6Nvyyelm+dPy074GMn4CKour3lJ5A56E1Fs33adg5iIiImhADKlFTcPMBOtwjbQYVpdLNWIaR1qxj0s1YmkLgwj5pM1C4SpfZa460BvaofcH7gsvSCGnaVumxsPrK6vc8g6sXze9wD+c5ExGRw2NAJWouSnegTZS0Gei0wLV088e5VhQBV45Im4Egr3qcqzRFQPDthK5ZmyFPfBfI+sP0XAHh0lzSiNFASF8uP0ZERE6FAZXInuQuQHBPaeszSSrT64Eb58wf51qaC+T8KW1/fAkFgG7GAwlA2+jqUOrfyT6fh4iIqBEwoBI5GplMCpj+nYCej0hloggUZpqs1SpeO4msSm+0umcqFN0eADxb2bfdREREjYQBlcgZCALgHSpt4SMBAJVaLVJ++AGj+owCeKMeERG1IJyYRkREREQOhQGViIiIiBwKAyoRERERORQGVCIiIiJyKAyoRERERORQGFCJiIiIyKEwoBIRERGRQ2FAJSIiIiKHwoBKRERERA6FAZWIiIiIHAoDKhERERE5FAZUIiIiInIoDKhERERE5FAYUImIiIjIoTCgEhEREZFDYUAlIiIiIofCgEpEREREDoUBlYiIiIgcCgMqERERETkUBlQiIiIicigMqERERETkUBhQiYiIiMihMKASERERkUNhQCUiIiIih8KASkREREQOhQGViIiIiBwKAyoRERERORQGVCIiIiJyKAyoRERERORQGFCJiIiIyKE0KKAuW7YM7du3h6urK6Kjo5GSklJr3cGDB0MQBLNt9OjRxjqW3hcEAYsXL25I84iIiIjIiVkdUNevX4+4uDjMmzcPR48eRWRkJGJiYpCTk2Ox/saNG3H16lXjduLECcjlcjz22GPGOjXfv3r1KlasWAFBEPDoo482/JMRERERkVOyOqAuWbIETz/9NKZP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D9Orn6+88gp27tyJd955B507d4abmxvGjRuHioqKOo9z8+ilIAjQ6/W11k9MTMT169eNjxwFpH46duwYFixYAJlMBrVajZKSErPj5OfnAwC8vaUHAXXt2hX79u2DVqtt9lFUBlQHceTCdby4PhUAMGVgGJ6827pheCIiopZAEIR6X2bX6/WoVMrhrlQ02rPkm8qvv/6KadOm4eGHHwYgjaieP3++Uc+Rl5eHb7/9FklJSejRo4exXKfT4e6778aOHTswYsQIhIeHo7KyEqmpqejcubOx3tGjRwFIwRQAJk2ahA8++AAfffQRXnjhBbPz5efnN9k8VAZUB3A+twRPf34EFZV6DO0WiHljevCxb0RERC1Ily5dsHHjRowZMwaCIOD//u//6hwJbYgvvvgC/v7+GD9+vFmOGDVqFBITEzFixAj06NEDw4cPx1NPPYUFCxagZ8+eyMjIwIsvvojY2FiEhoYCAKKjozF79my8/PLLuHLlCh5++GGEhITg9OnTWL58Oe6++26LwbUxOPavG7eB6yUVmLYyBddLKtAr1BsfTLwDcq51SkRE1KIsWbIEvr6+uPPOOzFmzBjExMSgb9++jXqOFStW4OGHH7Y4yPXoo49iy5YtyM3NBQCsX78e9957L1566SX06tULzz//PB566CF89tlnJvv95z//wbp163Dw4EHExMSgR48eiIuLQ+/evZt0mSmOoNpRuVaHZz4/jPN5pQj1cUPitKhGu3uQiIiImt60adMwbdo04+vBgwdbvLmoffv22LVrl0nZzU95uvmSv6XjGOaJWnLs2LFa3xs/fjzGjx9vfO3j44OEhAQsXLgQarW6zikSN+/bHDiCaid6vYiXv/oDhy/cgJerAqum90egl6u9m0VERERkdwyodvKf7WnYevwqXOQCPn6iH7oEedm7SUREREQOgQHVDtb8dgEf7zkLAPjPo71xZ6cAO7eIiIiIyHEwoDazn9NyMPfbEwCAl4Z2xSN929i5RURERESOhQG1GZ24UoCZ645CLwLj+rXB8/d3vvVORERERLcZBtRmciW/DDNWHUJphQ53dw7Aokd6ca1TIiIiIgsYUJtBYbkWM1YeQk6RBuFBXvhocl+4yNn1RERERJYwJTWxiko9/rHmCNKzixDopcKK6f2hdm3e59kSERERORMG1CYkiiJe33Qcv57Og7tSjhXT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\n"},"metadata":{}},{"name":"stdout","text":"Best Val AUC: 0.7834945321083069\n","output_type":"stream"}],"execution_count":28},{"cell_type":"code","source":"# =========================\n# 16. OPTIMIZER COMPARISON \n# =========================\noptimizers = {\n    \"Adam\": keras.optimizers.Adam(),\n    \"SGD\": keras.optimizers.SGD(momentum=0.9),\n    \"RMSprop\": keras.optimizers.RMSprop()\n}\n\nresults = {}\n\nfor name, opt in optimizers.items():\n    print(f\"\\n Training with {name}...\")\n\n    keras.backend.clear_session()\n\n    model = build_model(opt)\n\n    model.fit(\n        X_train_scaled, y_train,\n        validation_data=(X_val_scaled, y_val),\n        epochs=10,\n        batch_size=1024,\n        verbose=0,\n        callbacks=[\n            keras.callbacks.EarlyStopping(\n                monitor='val_auc',\n                mode='max',\n                patience=2,\n                restore_best_weights=True\n            )\n        ]\n    )\n\n   \n    val_auc = model.evaluate(X_val_scaled, y_val, verbose=0)[1]\n\n    results[name] = round(val_auc, 5)\n\n    print(f\" {name} Validation AUC: {val_auc:.5f}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T11:21:31.492408Z","iopub.execute_input":"2026-04-25T11:21:31.492754Z","iopub.status.idle":"2026-04-25T11:25:23.700644Z","shell.execute_reply.started":"2026-04-25T11:21:31.492732Z","shell.execute_reply":"2026-04-25T11:25:23.69959Z"}},"outputs":[{"name":"stdout","text":"\n Training with Adam...\n Adam Validation AUC: 0.77384\n\n Training with SGD...\n SGD Validation AUC: 0.76025\n\n Training with RMSprop...\n RMSprop Validation AUC: 0.76924\n","output_type":"stream"}],"execution_count":33},{"cell_type":"code","source":"# =========================\n# 17. FINAL SUMMARY\n# =========================\nimport pandas as pd\n\nresults_df = pd.DataFrame.from_dict(results, orient='index', columns=['AUC'])\nresults_df = results_df.sort_values(by='AUC', ascending=False)\n\nprint(\"\\n Optimizer Ranking:\")\nprint(results_df)\n\nbest_optimizer = results_df.index[0]\nprint(f\"\\n Best Optimizer: {best_optimizer}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T11:31:07.275234Z","iopub.execute_input":"2026-04-25T11:31:07.275613Z","iopub.status.idle":"2026-04-25T11:31:07.286505Z","shell.execute_reply.started":"2026-04-25T11:31:07.275585Z","shell.execute_reply":"2026-04-25T11:31:07.28542Z"}},"outputs":[{"name":"stdout","text":"\n Optimizer Ranking:\n             AUC\nAdam     0.77384\nRMSprop  0.76924\nSGD      0.76025\n\n Best Optimizer: Adam\n","output_type":"stream"}],"execution_count":34},{"cell_type":"code","source":"plt.figure(figsize=(7,5))\n\n\nvalues = results_df.iloc[:, 0]\n\nbars = plt.bar(results_df.index, values)\n\nplt.title(\"Optimizer Performance Comparison\")\nplt.xlabel(\"Optimizers\")\nplt.ylabel(\"Validation AUC\")\nplt.grid(axis='y', linestyle='--', alpha=0.7)\n\nfor bar in bars:\n    y = bar.get_height()\n    plt.text(bar.get_x() + bar.get_width()/2, y,\n             f'{y:.4f}', ha='center', va='bottom')\n\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-04-25T11:33:09.684752Z","iopub.execute_input":"2026-04-25T11:33:09.68509Z","iopub.status.idle":"2026-04-25T11:33:09.799671Z","shell.execute_reply.started":"2026-04-25T11:33:09.685061Z","shell.execute_reply":"2026-04-25T11:33:09.798386Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 700x500 with 1 Axes>","image/png":"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Z9x3333Q6/U4fPgw1qxZg61btyIsLKze+jht2jRs2LABgwcPxpgxYxAaGorS0lL8+eefWLduHY4fP35TM0oAMGPGDHzzzTcYOHAgJk2aBHd3d3z++efIycnBt99+e1tuDDt48GC89tpriI2NRc+ePfHnn39i5cqVN3UjYqCiEPjoo4/wyCOPICQkBLGxsWjZsiUOHz6MgwcPysXtkiVLcP/996Nz584YP3482rVrh8LCQqSnpyM3N9fkPmnX++KLL9C/f3889thjeOSRR9C3b184OTnh6NGjWLVqFfLz8+V7lb3zzjsYOHAgwsPDMW7cOPmWGK6urkb3w7MWd3d33H///YiNjUVhYSGSkpLg7++P8ePHA6j4+NXPzw9Tp07F6dOn4eLigm+//faWr9N65plncO7cOTz00EPw8fHBiRMnsHjxYoSEhMjXjClhzNGdi0UZNQojRoxAQEAAEhMT5UKsWbNm6NOnD15++eUaL6pevXo15syZgxkzZkCj0SAuLs5kRmrBggWYMGECZs2ahStXriAmJua2FWVFRUXQ6/WIj483WZaQkICgoCCoVCqsX78eCxcuxBdffIHvv/8ejo6OaNeuHSZPnmxyTZe1OTo6YseOHXjzzTexdu1afPHFF3BxcUGHDh0wd+5c+QsNN8PT0xNpaWl46aWXsHjxYly9ehVBQUHYuHEjHn74YStmUbOXX34ZpaWl+Prrr7F69Wp07doVmzZtwowZM256m5GRkfj5558xd+5cvPfeezAYDPDz85OLEqDiW7x79+7F3LlzsWLFCpw9exYeHh7o0qUL5syZc8N9tGjRAmlpafjwww+xevVqvPLKKygvL0ebNm0wZMgQ+b5cABAREYEtW7YgISEBc+bMgY2NDXr37o233nqrzl8MscTLL7+M/fv3IzExERcvXkTfvn3x4YcfyvcXs7GxwcaNGzFp0iQkJibC3t4ew4YNQ1xcnNEbprp66qmn8Mknn+DDDz9ESUkJvLy8EBUVhVdffVUutpQw5ujOxZ9ZIjLj1Vdfxdy5c1FUVHTTszhEVDepqano06cP1q5di8cff7yhu0N023GelYiIiEgBWJQRERERKQCLMiIiIiIF4DVlRERERArAmTIiIiIiBWBRRkRERKQAje4+ZQaDAXl5eWjSpEmD/zwOERER3fmEELh48SLuuuuuWm8w3OiKsry8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F3379hW5ubkiPz9f/iMSouGuiVy5cqWwtbU12V63bt3E9OnTze7rt99+ExqNRmzdurUuKTZKltYeDfYzS0RE9SUqKgpFRUWYM2cOCgoKEBISYjLTe/0MVeVM748//mh2m8OGDUNycjISExMxadIkdOzYEd9++y3uv/9+o23MnDkT586dg6+vL1555RW88MIL8vJt27YhOzsb2dnZ8PHxMdq+4LeHyQosuSYSAEJCQpCWlobk5GT07t27zvs5cOAAHn30USQkJKB///7W6Tw13G9f3ul8Z2xq6C7QP8zx+Q83dBfuKHFxcYiLizO7LDU11STWsWPHGxZGY8eOxdixY2tcPn/+fMyfP7/G5WPGjMGYMWNq3Qc1bs2bN4darUZhYaFRvLCwEF5eXrWuW1pailWrVuG1114z2aZGo0GnTp2M4oGBgfLtWry8vFBeXo6SkhK4ubnVut+//voLffv2xYQJEzBr1qy6pki14MUMRERECtFQ10SGhobCxsbGaL9ZWVk4efKk0X4PHjyIPn36ICYmBm+88cZN50nmcaaMiExwppfqijO91hMfH4+YmBiEhYWhe/fuSEpKQmlpKWJjYwEA0dHR8Pb2RmJiotF6S5cuxdChQ9GsWTOTbU6bNg1RUVHo1asX+vTpgy1btmDjxo3yrLGrqyvGjRuH+Ph4uLu7w8XFBf/+978RHh6Oe++9F0DFR5YPPfQQIiMjER8fj4KCAgAVtyVq0aJFPR6RxoNFGRERkYI01DWRCxcuhEqlwvDhw1FWVobIyEh8+OGH8vJ169ahqKgIX331Fb766is53qZNGxw/ftyKR6DxkkQju7r0woULcHV1hVarhYuLS73thzMNVFdKmmng+KW6UtL4JVIaS2sPXlNGREREpAD8+JKIiO4onOmlulLKTC9nyoiIiIgUgEUZERERkQKwKCMiIiJSABZlRERERArAooyIiIhIAViUERERESkAizIiIiIiBWBRRkRERKQALMqIiIiIFIBFGREREZECsCgjIiIiUgAWZUREREQKwKKMiIiISAFYlBEREREpAIsyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBWJQRERERKQCLMiIiIiIFYFFGREREpACKKMqWLFkCX19f2Nvbo0ePHtizZ0+NbR988EFIkmTy9/DDD9/GHhMRERFZV4MXZatXr0Z8fDwSEhLw+++/Izg4GJGRkThz5ozZ9t999x3y8/PlvwMHDkCtVmPEiBG3uedERERE1tPgRdmCBQswfvx4xMbGolOnTkhOToajoyOWLVtmtr27uzu8vLzkv23btsHR0ZFFGREREf2jaRpy5+Xl5di3bx9mzpwpx1QqFSIiIpCenm7RNpYuXYonnngCTk5OZpeXlZWhrKxMfnzhwgUAgE6ng06nk/epUqlgMBhgMBiM+qJSqaDX6yGEuGFcrVZDkiTodDrYqKriOgMgANhcVwJfMwASAI1JXIIEYRQXAtAJCSoIqM3FJQG1VBU3CEAvJKglAVW1uF4ABiFBIwlI1eMGwADTeEXfJaN8mFP95FQ5HoFbG3vVqdXqimOh11sU12g0EEIYHRueJ+ZkSU7WGnvV45IkQa1Wm7w21xSvfH7wPDGnuuZkrbFXWx1hiQYtyoqLi6HX6+Hp6WkU9/T0xOHDh2+4/p49e3DgwAEsXbq0xjaJiYmYO3euSTwjI0Mu5Fq0aAE/Pz/k5OSgqKhIbuPj4wMfHx8cOXIEWq1Wjrdr1w4eHh44cOAArly5IscDAgLg5uaGjIwMjGlfdVLW5ahwSQejGACsOKqCswZ4vG1V/JoBWHFUDW8nYKBPVbykHFibo0Z7V4FeXlUDMPcysPmUGl2aCXRtVhXP0krYWSDhPk+Bjq5V8d/PSthXLKGfjwE+jlV92VkgIUsrYZivAW62VfHNuSrklgKj/QxGA5w5WT+nvXv3yvFbGXvVn/xBQUGwtbU12jYAhIWFoby8HPv375djarUa3bp1g1arNToGPE/MyZKcrDX2qr/2Ozg4IDg4GMXFxTh27Jgcd3V1RWBgIPLy8pCbmyvHK1/LeZ6YU11zstbYq6mOyM7OhiUkUf3t9m2Wl5cHb29vpKWlITw8XI5Pnz4dO3bswO7du2td/9lnn0V6errRk/t65mbKWrVqhbNnz8LFxQVA/cyUBc7ZIsf5ToQ5WZJT1rwBcryhZ8o6vLLJKjndieeJOZnPKfv1SKM+NuRMmd/M//I8Mac65ZSTOKheZ8rOnz8Pd3d3aLVaufYwp0Fnypo3bw61Wo3CwkKjeGFhIby8vGpdt7S0FKtWrcJrr71Wazs7OzvY2dmZxDUaDTQa4/QrD971Kl9ELI1rNBpcM0gm8WsG07aixrhkNm6ABIO5uJBgMFNe64UEvZm4TkgVO7cwbi6firhpjDndXE7Xj0fg5sbercYlSTJ7bHiemFNtcWuNPXPxml6ba4rzPDGnirhprKacrDX26lpHmKxvUat6Ymtri9DQUKSkpMgxg8GAlJQUo5kzc9auXYuysjI89dRT9d1NIiIionrXoDNlABAfH4+YmBiEhYWhe/fuSEpKQmlpKWJjYwEA0dHR8Pb2RmJiotF6S5cuxdChQ9GsWbOG6DYRERGRVTV4URYVFYWioiLMmTMHBQUFCAkJwZYtW+SL/0+ePGkyFZiVlYVff/0VP/74Y0N0mYiIiMjqGrwoA4C4uDjExcWZXZaammoS69ixIxrw+wlEREREVtfgN48lIiIiIhZlRERERIrAooyIiIhIAViUERERESkAizIiIiIiBWBRRkRERKQALMqIiIiIFIBFGREREZECsCgjIiIiUgAWZUREREQKwKKMiIiISAFYlBEREREpAIsyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBWJQRERERKQCLMiIiIiIFYFFGREREpAAsyoiIiIgUgEUZERERkQKwKCMiIiJSABZlRERERArAooyIiIhIAViUERERESkAizIiIiIiBWBRRkRERKQALMqIiIiIFIBFGREREZECsCgjIiIiUgAWZUREREQKwKKMiIiISAFYlBEREREpAIsyIiIiIgVo8KJsyZIl8PX1hb29PXr06IE9e/bU2r6kpATPP/88WrZsCTs7O3To0AE//PDDbeotERERUf3QNOTOV69ejfj4eCQnJ6NHjx5ISkpCZGQksrKy4OHhYdK+vLwc/fr1g4eHB9atWwdvb2+cOHECbm5ut7/zRERERFbUoEXZggULMH78eMTGxgIAkpOTsWnTJixbtgwzZswwab9s2TKcO3cOaWlpsLGxAQD4+vrWuo+ysjKUlZXJjy9cuAAA0Ol00Ol0AACVSgWVSgWDwQCDwSC3rYzr9XoIIW4YV6vVkCQJOp0ONqqquM4ACAA2181LXjMAEgCNSVyCBGEUFwLQCQkqCKjNxSUBtVQVNwhALySoJQFVtbheAAYhQSMJSNXjBsAA03hF3yWjfJhT/eRUOR6BWxt71anV6opjoddbFNdoNBBCGB0bnifmZElO1hp71eOSJEGtVpu8NtcUr3x+8Dwxp7rmZK2xV1sdYYkGK8rKy8uxb98+zJw5U46pVCpEREQgPT3d7DobNmxAeHg4nn/+efznP/9BixYt8OSTT+Kll16Sn+jXS0xMxNy5c03iGRkZcHJyAgC0aNECfn5+yMnJQVFRkdzGx8cHPj4+OHLkCLRarRxv164dPDw8cODAAVy5ckWOBwQEwM3NDRkZGRjTvuqkrMtR4ZIORjEAWHFUBWcN8Hjbqvg1A7DiqBreTsBAn6p4STmwNkeN9q4CvbyqBmDuZWDzKTW6NBPo2qwqnqWVsLNAwn2eAh1dq+K/n5Wwr1hCPx8DfByr+rKzQEKWVsIwXwPcbKvim3NVyC0FRvsZjAY4c7J+Tnv37pXjtzL2qj/5g4KCYGtra7RtAAgLC0N5eTn2798vx9RqNbp16watVmt0DHiemJMlOVlr7B0+fFiOOzg4IDg4GMXFxTh27Jgcd3V1RWBgIPLy8pCbmyvHK1/LeZ6YU11zstbYq6mOyM7OhiUkUf3t9m2Ul5cHb29vpKWlITw8XI5Pnz4dO3bswO7du03WCQgIwPHjxzF69GhMnDgR2dnZmDhxIiZNmoSEhASz+zE3U9aqVSucPXsWLi4uAOpnpixwzhY5zncizMmSnLLmDZDjDT1T1uGVTVbJ6U48T8zJfE7Zr0ca9bEhZ8r8Zv6X54k51SmnnMRB9TpTdv78ebi7u0Or1cq1hzkN+vFlXRkMBnh4eOCTTz6BWq1GaGgoTp8+jXfeeafGoszOzg52dnYmcY1GA43GOP3Kg3e9mmbhaoprNBpcM0gm8WsG07aixrhkNm6ABIO5uJBgMFNe64UEvZm4TkgVO7cwbi6firhpjDndXE7Xj0fg5sbercYlSTJ7bHiemFNtcWuNPXPxml6ba4rzPDGnirhprKacrDX26lpHXK/BirLmzZtDrVajsLDQKF5YWAgvLy+z67Rs2RI2NjZGyQUGBqKgoADl5eWwtbU1ux4RERGR0jXYLTFsbW0RGhqKlJQUOWYwGJCSkmL0cWZ19913H7Kzs42mBo8cOYKWLVuyICMiIqJ/tAa9T1l8fDw+/fRTfP755zh06BCee+45lJaWyt/GjI6ONvoiwHPPPYdz585h8uTJOHLkCDZt2oQ333wTzz//fEOlQERERGQVDXpNWVRUFIqKijBnzhwUFBQgJCQEW7ZsgaenJwDg5MmTRp/NtmrVClu3bsULL7yAoKAgeHt7Y/LkyXjppZcaKgUiIiIiq2jwC/3j4uIQFxdndllqaqpJLDw8HLt27arnXhERERHdXg3+M0tERERExKKMiIiISBFYlBEREREpAIsyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBWJQRERERKQCLMiIiIiIFYFFGREREpAAsyoiIiIgUgEUZERERkQKwKCMiIiJSABZlRERERArAooyIiIhIAViUERERESkAizIiIiIiBWBRRkRERKQALMqIiIiIFIBFGREREZECsCgjIiIiUgAWZUREREQKwKKMiIiISAFYlBEREREpAIsyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBWJQRERERKYDFRdm+ffvQp08fXLhwwWSZVqtFnz598Mcff1i1c0RERESNhcVF2XvvvYeHHnoILi4uJstcXV3Rr18/vPPOOzfViSVLlsDX1xf29vbo0aMH9uzZU2PbFStWQJIkoz97e/ub2i8RERGRUlhclO3evRuPPvpojcsfeeQRpKWl1bkDq1evRnx8PBISEvD7778jODgYkZGROHPmTI3ruLi4ID8/X/47ceJEnfdLREREpCQWF2WnT59GkyZNalzu7OyM/Pz8OndgwYIFGD9+PGJjY9GpUyckJyfD0dERy5Ytq3EdSZLg5eUl/3l6etZ5v0RERERKorG0YYsWLZCVlYW2bduaXX748GE0b968TjsvLy/Hvn37MHPmTDmmUqkQERGB9PT0Gte7dOkS2rRpA4PBgK5du+LNN9/E3XffbbZtWVkZysrK5MeV18TpdDrodDp5nyqVCgaDAQaDwagvKpUKer0eQogbxtVqNSRJgk6ng42qKq4zAAKAzXUl8DUDIAHQmMQlSBBGcSEAnZCggoDaXFwSUEtVcYMA9EKCWhJQVYvrBWAQEjSSgFQ9bgAMMI1X9F0yyoc51U9OleMRuLWxV51ara44Fnq9RXGNRgMhhNGx4XliTpbkZK2xVz0uSRLUarXJa3NN8crnB88Tc6prTtYae7XVEZawuCiLiIjAG2+8gQEDBpgsE0LgjTfeQEREhKWbAwAUFxdDr9ebzHR5enri8OHDZtfp2LEjli1bhqCgIGi1Wrz77rvo2bMnDh48CB8fH5P2iYmJmDt3rkk8IyMDTk5OACoKTj8/P+Tk5KCoqEhu4+PjAx8fHxw5cgRarVaOt2vXDh4eHjhw4ACuXLkixwMCAuDm5oaMjAyMaV91UtblqHBJB6MYAKw4qoKzBni8bVX8mgFYcVQNbydgoE9VvKQcWJujRntXgV5eVQMw9zKw+ZQaXZoJdG1WFc/SSthZIOE+T4GOrlXx389K2FcsoZ+PAT6OVX3ZWSAhSythmK8BbrZV8c25KuSWAqP9DEYDnDlZP6e9e/fK8VsZe9Wf/EFBQbC1tTXaNgCEhYWhvLwc+/fvl2NqtRrdunWDVqs1OgY8T8zJkpysNfaqv/Y7ODggODgYxcXFOHbsmBx3dXVFYGAg8vLykJubK8crX8t5nphTXXOy1tirqY7Izs6GJSRR/e12Lf7++2+EhoaiY8eOePHFF9GxY0cAFTNk7733Ho4cOYK9e/fC39/foh0DQF5eHry9vZGWlobw8HA5Pn36dOzYsQO7d+++4TauXbuGwMBAjBo1CvPmzTNZbm6mrFWrVjh79qz8pYX6mCkLnLNFjvOdCHOyJKeseVVveBp6pqzDK5usktOdeJ6Yk/mcsl+PNOpjQ86U+c38L88Tc6pTTjmJg+p1puz8+fNwd3eHVqs1+4XJShbPlPn5+eGnn37CmDFj8MQTT0D6/yMjhECnTp2wbdu2OhVkANC8eXOo1WoUFhYaxQsLC+Hl5WXRNmxsbNClS5caq1A7OzvY2dmZxDUaDTQa4/QrD971Kl9ELI1rNBpcM0gm8WsG07aixrhkNm6ABIO5uJBgMFNe64UEvZm4TkgVO7cwbi6firhpjDndXE7Xj0fg5sbercYlSTJ7bHiemFNtcWuNPXPxml6ba4rzPDGnirhprKacrDX26lpHXM/iogyomHY+cOAAMjIykJ2dXfGOukMHhISE1GUzMltbW4SGhiIlJQVDhw4FABgMBqSkpCAuLs6ibej1evz5558YNGjQTfWBiIiISAnqVJRV6tKlC7p06WKVDsTHxyMmJgZhYWHo3r07kpKSUFpaitjYWABAdHQ0vL29kZiYCAB47bXXcO+998Lf3x8lJSV45513cOLECTzzzDNW6Q8RERFRQ7C4KHvsscfMxl1dXdGhQwc888wzaNGiRZ07EBUVhaKiIsyZMwcFBQUICQnBli1b5Iv/T548aTQVeP78eYwfPx4FBQVo2rQpQkNDkZaWhk6dOtV530RERERKYfGF/pUzV9crKSnBH3/8gZKSEuzcuRP33HOPVTtobRcuXICrq+sNL7a7Vb4zNt24EVE1x+c/3NBdkHH8Ul1x/NI/WX2PX0trD4tnypYvX17jMoPBgPHjx2PmzJnYuHFj3XpKRERERJbf0b/WjahUmDRpEvbt22eNzRERERE1OlYpygDAyckJly9fttbmiIiIiBoVqxVl27ZtQ4cOHay1OSIiIqJGxeJryjZs2GA2rtVqsW/fPnz22Wf47LPPrNYxIiIiosbE4qKs8uau12vSpAk6duyIzz77DE888YS1+kVERETUqFhclBnM/XYCEREREVmF1a4pKykpwQcffGCtzRERERE1KrdclKWkpODJJ59Ey5YtkZCQYI0+ERERETU6N1WUnTp1Cq+99hratm2L/v37Q5IkfP/99ygoKLB2/4iIiIgaBYuLsmvXrmHt2rWIjIxEx44dkZmZiXfeeQcqlQqvvPIKBgwYABsbm/rsKxEREdEdy+IL/b29vREQEICnnnoKq1atQtOmTQEAo0aNqrfOERERETUWFs+U6XQ6SJIESZKgVqvrs09EREREjY7FRVleXh4mTJiAb775Bl5eXhg+fDi+//57SJJUn/0jIiIiahQsLsrs7e0xevRobN++HX/++ScCAwMxadIk6HQ6vPHGG9i2bRv0en199pWIiIjojnVT37708/PD66+/jhMnTmDTpk0oKyvD4MGD4enpae3+ERERETUKFl/ob45KpcLAgQMxcOBAFBUV4csvv7RWv4iIiIgaFavd0b9FixaIj4+31uaIiIiIGhWrFWVEREREdPNYlBEREREpAIsyIiIiIgVgUUZERESkAHX+9qVer8eKFSuQkpKCM2fOwGAwGC3fvn271TpHRERE1FjUuSibPHkyVqxYgYcffhj33HMP7+hPREREZAV1LspWrVqFNWvWYNCgQfXRHyIiIqJGqc7XlNna2sLf378++kJERETUaNW5KHvxxRexaNEiCCHqoz9EREREjVKdP7789ddf8fPPP2Pz5s24++67YWNjY7T8u+++s1rniIiIiBqLOhdlbm5uGDZsWH30hYiIiKjRqnNRtnz58vroBxEREVGjVueirFJRURGysrIAAB07dkSLFi2s1ikiIiKixqbOF/qXlpZi7NixaNmyJXr16oVevXrhrrvuwrhx43D58uX66CMRERHRHa/ORVl8fDx27NiBjRs3oqSkBCUlJfjPf/6DHTt24MUXX6yPPhIRERHd8er88eW3336LdevW4cEHH5RjgwYNgoODA0aOHImPPvrImv0jIiIiahTqPFN2+fJleHp6msQ9PDz48SURERHRTapzURYeHo6EhARcvXpVjl25cgVz585FeHi4VTtHRERE1FjUuShbtGgRfvvtN/j4+KBv377o27cvWrVqhbS0NCxatOimOrFkyRL4+vrC3t4ePXr0wJ49eyxab9WqVZAkCUOHDr2p/RIREREpRZ2vKbvnnntw9OhRrFy5EocPHwYAjBo1CqNHj4aDg0OdO7B69WrEx8cjOTkZPXr0QFJSEiIjI5GVlQUPD48a1zt+/DimTp2KBx54oM77JCIiIlKam7pPmaOjI8aPH2+VDixYsADjx49HbGwsACA5ORmbNm3CsmXLMGPGDLPr6PV6jB49GnPnzsUvv/yCkpISq/SFiIiIqKFYVJRt2LABAwcOhI2NDTZs2FBr2yFDhli88/Lycuzbtw8zZ86UYyqVChEREUhPT69xvddeew0eHh4YN24cfvnll1r3UVZWhrKyMvnxhQsXAAA6nQ46nU7ep0qlgsFggMFgMOqLSqWCXq83+gH2muJqtRqSJEGn08FGVRXXGQABwOa6D4uvGQAJgMYkLkGCMIoLAeiEBBUE1ObikoBaqoobBKAXEtSSgKpaXC8Ag5CgkQSk6nEDYIBpvKLvklE+zKl+cqocj8Ctjb3q1Gp1xbHQ6y2KazQaCCGMjg3PE3OyJCdrjb3qcUmSoFarTV6ba4pXPj94nphTXXOy1tirrY6whEVF2dChQ1FQUAAPD49ar9+SJMniHQNAcXEx9Hq9ybc5PT095Y9Gr/frr79i6dKlyMzMtGgfiYmJmDt3rkk8IyMDTk5OAIAWLVrAz88POTk5KCoqktv4+PjAx8cHR44cgVarlePt2rWDh4cHDhw4gCtXrsjxgIAAuLm5ISMjA2PaV52UdTkqXNLBKAYAK46q4KwBHm9bFb9mAFYcVcPbCRjoUxUvKQfW5qjR3lWgl1fVAMy9DGw+pUaXZgJdm1XFs7QSdhZIuM9ToKNrVfz3sxL2FUvo52OAj2NVX3YWSMjSShjma4CbbVV8c64KuaXAaD+D0QBnTtbPae/evXL8VsZe9edgUFAQbG1tjbYNAGFhYSgvL8f+/fvlmFqtRrdu3aDVao2OAc8Tc7IkJ2uNveqv/Q4ODggODkZxcTGOHTsmx11dXREYGIi8vDzk5ubK8crXcp4n5lTXnKw19mqqI7Kzs2EJSVR/u32b5eXlwdvbG2lpaUbf3Jw+fTp27NiB3bt3G7W/ePEigoKC8OGHH2LgwIEAgDFjxqCkpATr1683uw9zM2WtWrXC2bNn4eLiAqB+ZsoC52yR43wnwpwsySlr3gA53tAzZR1e2WSVnO7E88SczOeU/XqkUR8bcqbMb+Z/eZ6YU51yykkcVK8zZefPn4e7uzu0Wq1ce5hT52vKvvjiC0RFRcHOzs4oXl5ejlWrViE6OtribTVv3hxqtRqFhYVG8cLCQnh5eZm0//vvv3H8+HE88sgjcqwyeY1Gg6ysLPj5+RmtY2dnZ9LXyvYajXH6lQfvepUvIpbGNRoNrhkkk/g1g2lbUWNcMhs3QILBXFxIMJgpr/VCgt5MXCekip1bGDeXT0XcNMacbi6n68cjcHNj71bjkiSZPTY8T8yptri1xp65eE2vzTXFeZ6YU0XcNFZTTtYae3WtI0zWt6hVNbGxsUYfp1S6ePGifLG+pWxtbREaGoqUlBQ5ZjAYkJKSYvaeZwEBAfjzzz+RmZkp/w0ZMgR9+vRBZmYmWrVqVdd0iIiIiBShzjNlQghIkmlVmpubC1dX1zp3ID4+HjExMQgLC0P37t2RlJSE0tJSucCLjo6Gt7c3EhMTYW9vj3vuucdofTc3NwAwiRMRERH9k1hclHXp0gWSJEGSJPTt29domk+v1yMnJwcDBgyoZQvmRUVFoaioCHPmzEFBQQFCQkKwZcsW+eL/kydPmp0KJCIiIrqTWFyUVX7rMjMzE5GRkXB2dpaX2drawtfXF8OHD7+pTsTFxSEuLs7sstTU1FrXXbFixU3tk4iIiEhJLC7KEhISAAC+vr6IioqCvb19vXWKiIiIqLGp8zVlMTEx9dEPIiIiokatzkWZXq/HwoULsWbNGpw8eRLl5eVGy8+dO2e1zhERERE1FnW+gn7u3LlYsGABoqKioNVqER8fj8ceewwqlQqvvvpqPXSRiIiI6M5X56Js5cqV+PTTT/Hiiy9Co9Fg1KhR+OyzzzBnzhzs2rWrPvpIREREdMerc1FWUFCAzp07AwCcnZ3lG8kOHjwYmzZtqm1VIiIiIqpBnYsyHx8f5OfnAwD8/Pzw448/AgD+97//mf05IyIiIiK6sToXZcOGDZN/Funf//43Zs+ejfbt2yM6Ohpjx461egeJiIiIGoM6f/ty/vz58r+joqLQunVrpKeno3379kY/FE5ERERElqtzUXa98PBwsz8eTkRERESWs6go27Bhg8UbHDJkyE13hoiIiKixsqgoq/zdy0qSJEEIYRIDKm4uS0RERER1Y9GF/gaDQf778ccfERISgs2bN6OkpAQlJSXYvHkzunbtii1bttR3f4mIiIjuSHW+pmzKlClITk7G/fffL8ciIyPh6OiICRMm4NChQ1btIBEREVFjUOdbYvz9999wc3Mzibu6uuL48eNW6BIRERFR41Pnoqxbt26Ij49HYWGhHCssLMS0adPQvXt3q3aOiIiIqLGoc1G2bNky5Ofno3Xr1vD394e/vz9at26N06dPY+nSpfXRRyIiIqI7Xp2vKfP398f+/fuxbds2HD58GAAQGBiIiIgI+RuYRERERFQ3N3XzWEmS0L9/f/Tv39/a/SEiIiJqlCwqyt5//31MmDAB9vb2eP/992ttO2nSJKt0jIiIiKgxsagoW7hwIUaPHg17e3ssXLiwxnaSJLEoIyIiIroJFhVlOTk5Zv9NRERERNZR529fEhEREZH1WTRTFh8fb/EGFyxYcNOdISIiImqsLCrKMjIyLNoYb4lBREREdHMsKsp+/vnn+u4HERERUaPGa8qIiIiIFOCmbh67d+9erFmzBidPnkR5ebnRsu+++84qHSMiIiJqTOo8U7Zq1Sr07NkThw4dwvfff49r167h4MGD2L59O1xdXeujj0RERER3vDoXZW+++SYWLlyIjRs3wtbWFosWLcLhw4cxcuRItG7duj76SERERHTHq3NR9vfff+Phhx8GANja2qK0tBSSJOGFF17AJ598YvUOEhERETUGdS7KmjZtiosXLwIAvL29ceDAAQBASUkJLl++bN3eERERETUSdb7Qv1evXti2bRs6d+6MESNGYPLkydi+fTu2bduGvn371kcfiYiIiO54FhdlBw4cwD333IMPPvgAV69eBQC88sorsLGxQVpaGoYPH45Zs2bVW0eJiIiI7mQWF2VBQUHo1q0bnnnmGTzxxBMAAJVKhRkzZtRb54iIiIgaC4uvKduxYwfuvvtuvPjii2jZsiViYmLwyy+/1GffiIiIiBoNi4uyBx54AMuWLUN+fj4WL16M48ePo3fv3ujQoQPeeustFBQU1Gc/iYiIiO5odf72pZOTE2JjY7Fjxw4cOXIEI0aMwJIlS9C6dWsMGTLkpjqxZMkS+Pr6wt7eHj169MCePXtqbPvdd98hLCwMbm5ucHJyQkhICL788sub2i8RERGRUtzSb1/6+/vj5ZdfxqxZs9CkSRNs2rSpzttYvXo14uPjkZCQgN9//x3BwcGIjIzEmTNnzLZ3d3fHK6+8gvT0dOzfvx+xsbGIjY3F1q1bbyUVIiIiogZ100XZzp07MWbMGHh5eWHatGl47LHH8Ntvv9V5OwsWLMD48eMRGxuLTp06ITk5GY6Ojli2bJnZ9g8++CCGDRuGwMBA+Pn5YfLkyQgKCsKvv/56s6kQERERNbg63acsLy8PK1aswIoVK5CdnY2ePXvi/fffx8iRI+Hk5FTnnZeXl2Pfvn2YOXOmHFOpVIiIiEB6evoN1xdCYPv27cjKysJbb71ltk1ZWRnKysrkxxcuXAAA6HQ66HQ6eZ8qlQoGgwEGg8GoLyqVCnq9HkKIG8bVajUkSYJOp4ONqiquMwACgM11JfA1AyAB0JjEJUgQRnEhAJ2QoIKA2lxcElBLVXGDAPRCgloSUFWL6wVgEBI0koBUPW4ADDCNV/RdMsqHOdVPTpXjEbi1sVedWq2uOBZ6vUVxjUYDIYTRseF5Yk6W5GStsVc9LkkS1Gq1yWtzTfHK5wfPE3Oqa07WGnu11RGWsLgoGzhwIH766Sc0b94c0dHRGDt2LDp27Gjp6mYVFxdDr9fD09PTKO7p6YnDhw/XuJ5Wq4W3tzfKysqgVqvx4Ycfol+/fmbbJiYmYu7cuSbxjIwMuZBs0aIF/Pz8kJOTg6KiIrmNj48PfHx8cOTIEWi1Wjnerl07eHh44MCBA7hy5YocDwgIgJubGzIyMjCmfdVJWZejwiUdjGIAsOKoCs4a4PG2VfFrBmDFUTW8nYCBPlXxknJgbY4a7V0FenlVDcDcy8DmU2p0aSbQtVlVPEsrYWeBhPs8BTq6VsV/PythX7GEfj4G+DhW9WVngYQsrYRhvga42VbFN+eqkFsKjPYzGA1w5mT9nPbu3SvHb2XsVX/yBwUFwdbW1mjbABAWFoby8nLs379fjqnVanTr1g1ardboGPA8MSdLcrLW2Kv+2u/g4IDg4GAUFxfj2LFjctzV1RWBgYHIy8tDbm6uHK98Led5Yk51zclaY6+mOiI7OxuWkET1t9u1GDJkCMaNG4fBgwfL73RuVV5eHry9vZGWlobw8HA5Pn36dOzYsQO7d+82u57BYMCxY8dw6dIlpKSkYN68eVi/fj0efPBBk7bmZspatWqFs2fPwsXFBUD9zJQFztkix/lOhDlZklPWvAFyvKFnyjq8UnV9KM8Tc7Ikp+zXI4362JAzZX4z/8vzxJzqlFNO4qB6nSk7f/483N3dodVq5drDHItnyjZs2GBpU4s1b94carUahYWFRvHCwkJ4eXnVuJ5KpYK/vz8AICQkBIcOHUJiYqLZoszOzg52dnYmcY1GA43GOP3Kg3e9morQmuIajQbXDJJJ/JrBtK2oMS6ZjRsgwWAuLiQYzJTXeiFBbyauE1LFzi2Mm8unIm4aY043l9P14xG4ubF3q3FJksweG54n5lRb3Fpjz1y8ptfmmuI8T8ypIm4aqykna429utYRJutb1Kqe2NraIjQ0FCkpKXLMYDAgJSXFaObsRgwGg9FsGBEREdE/TZ1/kNza4uPjERMTg7CwMHTv3h1JSUkoLS1FbGwsACA6Ohre3t5ITEwEUHGNWFhYGPz8/FBWVoYffvgBX375JT766KOGTIOIiIjoljR4URYVFYWioiLMmTMHBQUFCAkJwZYtW+SL/0+ePGk0FVhaWoqJEyciNzcXDg4OCAgIwFdffYWoqKiGSoGIiIjoljV4UQYAcXFxiIuLM7ssNTXV6PHrr7+O119//Tb0ioiIiOj2adBryoiIiIioAosyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBWJQRERERKQCLMiIiIiIFYFFGREREpAAsyoiIiIgUgEUZERERkQKwKCMiIiJSABZlRERERArAooyIiIhIAViUERERESkAizIiIiIiBWBRRkRERKQALMqIiIiIFIBFGREREZECsCgjIiIiUgAWZUREREQKwKKMiIiISAFYlBEREREpAIsyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBWJQRERERKQCLMiIiIiIFYFFGREREpAAsyoiIiIgUQBFF2ZIlS+Dr6wt7e3v06NEDe/bsqbHtp59+igceeABNmzZF06ZNERERUWt7IiIion+CBi/KVq9ejfj4eCQkJOD3339HcHAwIiMjcebMGbPtU1NTMWrUKPz8889IT09Hq1at0L9/f5w+ffo295yIiIjIehq8KFuwYAHGjx+P2NhYdOrUCcnJyXB0dMSyZcvMtl+5ciUmTpyIkJAQBAQE4LPPPoPBYEBKSspt7jkRERGR9Wgacufl5eXYt28fZs6cKcdUKhUiIiKQnp5u0TYuX76Ma9euwd3d3ezysrIylJWVyY8vXLgAANDpdNDpdPI+VSoVDAYDDAaDUV9UKhX0ej2EEDeMq9VqSJIEnU4HG1VVXGcABACb60rgawZAAqAxiUuQIIziQgA6IUEFAbW5uCSglqriBgHohQS1JKCqFtcLwCAkaCQBqXrcABhgGq/ou2SUD3Oqn5wqxyNwa2OvOrVaXXEs9HqL4hqNBkIIo2PD88ScLMnJWmOvelySJKjVapPX5prilc8PnifmVNecrDX2aqsjLNGgRVlxcTH0ej08PT2N4p6enjh8+LBF23jppZdw1113ISIiwuzyxMREzJ071ySekZEBJycnAECLFi3g5+eHnJwcFBUVyW18fHzg4+ODI0eOQKvVyvF27drBw8MDBw4cwJUrV+R4QEAA3NzckJGRgTHtq07KuhwVLulgFAOAFUdVcNYAj7etil8zACuOquHtBAz0qYqXlANrc9Ro7yrQy6tqAOZeBjafUqNLM4GuzariWVoJOwsk3Ocp0NG1Kv77WQn7iiX08zHAx7GqLzsLJGRpJQzzNcDNtiq+OVeF3FJgtJ/BaIAzJ+vntHfvXjl+K2Ov+pM/KCgItra2RtsGgLCwMJSXl2P//v1yTK1Wo1u3btBqtUbHgOeJOVmSk7XGXvXXfgcHBwQHB6O4uBjHjh2T466urggMDEReXh5yc3PleOVrOc8Tc6prTtYaezXVEdnZ2bCEJKq/3b7N8vLy4O3tjbS0NISHh8vx6dOnY8eOHdi9e3et68+fPx9vv/02UlNTERQUZLaNuZmyVq1a4ezZs3BxcQFQPzNlgXO2yHG+E2FOluSUNW+AHG/ombIOr2yySk534nliTuZzyn490qiPDTlT5jfzvzxPzKlOOeUkDqrXmbLz58/D3d0dWq1Wrj3MadCZsubNm0OtVqOwsNAoXlhYCC8vr1rXfffddzF//nz89NNPNRZkAGBnZwc7OzuTuEajgUZjnH7lwbte5YuIpXGNRoNrBskkfs1g2lbUGJfMxg2QYDAXFxIMZsprvZCgNxPXCali5xbGzeVTETeNMaeby+n68Qjc3Ni71bgkSWaPDc8Tc6otbq2xZy5e02tzTXGeJ+ZUETeN1ZSTtcZeXesIk/UtalVPbG1tERoaanSRfuVF+9Vnzq739ttvY968ediyZQvCwsJuR1eJiIiI6lWDzpQBQHx8PGJiYhAWFobu3bsjKSkJpaWliI2NBQBER0fD29sbiYmJAIC33noLc+bMwddffw1fX18UFBQAAJydneHs7NxgeRARERHdigYvyqKiolBUVIQ5c+agoKAAISEh2LJli3zx/8mTJ42mAj/66COUl5fj8ccfN9pOQkICXn311dvZdSIiIiKrafCiDADi4uIQFxdndllqaqrR4+PHj9d/h4iIiIhuswa/eSwRERERsSgjIiIiUgQWZUREREQKwKKMiIiISAFYlBEREREpAIsyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBWJQRERERKQCLMiIiIiIFYFFGREREpAAsyoiIiIgUgEUZERERkQKwKCMiIiJSABZlRERERArAooyIiIhIAViUERERESkAizIiIiIiBWBRRkRERKQALMqIiIiIFIBFGREREZECsCgjIiIiUgAWZUREREQKwKKMiIiISAFYlBEREREpAIsyIiIiIgVgUUZERESkACzKiIiIiBSARRkRERGRArAoIyIiIlIAFmVERERECsCijIiIiEgBGrwoW7JkCXx9fWFvb48ePXpgz549NbY9ePAghg8fDl9fX0iShKSkpNvXUSIiIqJ61KBF2erVqxEfH4+EhAT8/vvvCA4ORmRkJM6cOWO2/eXLl9GuXTvMnz8fXl5et7m3RERERPWnQYuyBQsWYPz48YiNjUWnTp2QnJwMR0dHLFu2zGz7bt264Z133sETTzwBOzu729xbIiIiovqjaagdl5eXY9++fZg5c6YcU6lUiIiIQHp6utX2U1ZWhrKyMvnxhQsXAAA6nQ46nU7er0qlgsFggMFgMOqPSqWCXq+HEOKGcbVaDUmSoNPpYKOqiusMgABgc10J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\n"},"metadata":{}}],"execution_count":36}]}