From 40a3ca126c0854b1a800070868941b6926913fd0 Mon Sep 17 00:00:00 2001 From: sarina Date: Fri, 7 Mar 2025 18:13:17 -0500 Subject: [PATCH 1/4] Migrate installing, configuring, and running guide --- source/site_ops/index.rst | 1 + .../Images/Analytics_AWS_Deployment.png | Bin 0 -> 132089 bytes .../Images/Analytics_Pipeline.png | Bin 0 -> 37673 bytes .../Images/add_office365_provider_config.png | Bin 0 -> 96974 bytes ...rse_enable_anonymous_courseware_access.png | Bin 0 -> 32497 bytes .../enable_anonymous_courseware_access.png | Bin 0 -> 22521 bytes .../Images/lti_test_auth.png | Bin 0 -> 181442 bytes .../Images/tpa_inst_list.png | Bin 0 -> 8620 bytes .../Images/tpa_signin.png | Bin 0 -> 7880 bytes .../analytics/index.rst | 39 ++ .../drag_and_drop_problem_styling.rst | 88 +++ .../changing_appearance/index.rst | 16 + .../theming/compiling_theme.rst | 93 +++ .../theming/create_theme.rst | 113 +++ .../theming/enable_themes.rst | 169 +++++ .../changing_appearance/theming/index.rst | 37 + .../theming/overview_themes.rst | 21 + .../theming/theme_directories.rst | 60 ++ .../config_allowed_regis_emails.rst | 69 ++ .../configuration/configure_milestone_app.rst | 18 + .../customize_registration_page.rst | 67 ++ .../deprecated_add_course_talk_widget.rst | 58 ++ .../configuration/edx_search.rst | 193 ++++++ .../configuration/enable_ccx.rst | 32 + .../configuration/enable_certificates.rst | 404 +++++++++++ .../enable_custom_course_settings.rst | 25 + .../enable_discussion_notifications.rst | 63 ++ .../configuration/enable_entrance_exams.rst | 50 ++ .../configuration/enable_licensing.rst | 53 ++ .../configuration/enable_pacing.rst | 52 ++ .../configuration/enable_prerequisites.rst | 52 ++ .../configuration/enable_public_course.rst | 124 ++++ .../enable_socialsharing_icons.rst | 143 ++++ .../configuration/enable_timed_exams.rst | 54 ++ .../enable_weekly_learning_goals.rst | 44 ++ .../configuration/index.rst | 40 ++ .../configuration/install_xblock.rst | 46 ++ .../lti/authentication_options_lti.rst | 59 ++ .../configuration/lti/configure_lti.rst | 104 +++ .../configuration/lti/enable_lti.rst | 39 ++ .../configuration/lti/index.rst | 29 + .../configuration/lti/settings_lti.rst | 35 + .../configuration/lti/tpa_lti.rst | 135 ++++ .../configuration/ora2/index.rst | 23 + .../configuration/ora2/ora2_blacklist.rst | 46 ++ .../configuration/ora2/ora2_uploads.rst | 31 + .../configuration/password.rst | 107 +++ .../retrieve_extended_profile_metadata.rst | 78 +++ .../configuration/sites/configure_site.rst | 95 +++ .../configuration/sites/create_site.rst | 22 + .../configuration/sites/index.rst | 30 + .../configuration/static_replace/cdn.rst | 72 ++ .../configuration/tpa/index.rst | 31 + .../configuration/tpa/tpa_IDmap_api.rst | 116 ++++ .../configuration/tpa/tpa_SAML_SP.rst | 168 +++++ .../tpa/tpa_advanced_features.rst | 176 +++++ .../configuration/tpa/tpa_behavior.rst | 76 ++ .../configuration/tpa/tpa_eliminating_pii.rst | 232 +++++++ .../tpa/tpa_integrate_open/index.rst | 47 ++ .../tpa/tpa_integrate_open/tpa_SAML_IdP.rst | 180 +++++ .../tpa/tpa_integrate_open/tpa_oauth.rst | 474 +++++++++++++ .../configuration/tpa/tpa_providers.rst | 83 +++ .../configuration/transcripts.rst | 40 ++ .../configuration/updating_platform.rst | 18 + .../configuration/youtube_api.rst | 125 ++++ .../additional_features/apple_pay.rst | 47 ++ .../additional_features/change_processors.rst | 33 + .../additional_features/gate_ecommerce.rst | 71 ++ .../additional_features/index.rst | 29 + .../maintain_ecommerce.rst | 35 + .../send_notifications.rst | 61 ++ .../additional_features/track_data.rst | 12 + .../create_products/create_coupons.rst | 650 ++++++++++++++++++ .../create_products/create_course_seats.rst | 76 ++ .../create_enrollment_codes.rst | 64 ++ .../create_products_overview.rst | 57 ++ .../create_products/create_program_offers.rst | 50 ++ .../create_products/create_programs.rst | 90 +++ .../create_products/index.rst | 25 + .../enable_receipt_page.rst | 47 ++ .../ecommerce-deprecated/index.rst | 49 ++ .../install_ecommerce.rst | 356 ++++++++++ .../internationalization.rst | 82 +++ .../ecommerce-deprecated/manage_assets.rst | 48 ++ .../ecommerce-deprecated/manage_orders.rst | 83 +++ .../ecommerce-deprecated/test_ecommerce.rst | 389 +++++++++++ .../ecommerce-deprecated/theming.rst | 312 +++++++++ .../ecommerce-solutions.rst | 28 + .../feature_flags/feature_flag_index.rst | 10 + .../front_matter/browsers.rst | 1 + .../front_matter/getting_help.rst | 51 ++ .../front_matter/index.rst | 12 + .../front_matter/preface.rst | 1 + .../front_matter/read_me.rst | 15 + .../install_configure_run_guide/glossary.rst | 1 + .../install_configure_run_guide/index.rst | 46 ++ .../insights/elastic_mapreduce.rst | 402 +++++++++++ .../insights/index.rst | 28 + .../insights/install_insights.rst | 247 +++++++ .../installation/index.rst | 56 ++ .../installation/tutor.rst | 12 + .../mobile-deprecated.rst | 258 +++++++ .../install_configure_run_guide/mobile.rst | 28 + .../platform_releases/birch.rst | 94 +++ .../platform_releases/cypress.rst | 102 +++ .../platform_releases/dogwood.rst | 193 ++++++ .../platform_releases/eucalyptus.rst | 141 ++++ .../platform_releases/ficus.rst | 94 +++ .../platform_releases/ginkgo.rst | 196 ++++++ .../platform_releases/hawthorn.rst | 177 +++++ .../platform_releases/index.rst | 27 + .../platform_releases/ironwood.rst | 164 +++++ .../platform_releases/juniper.rst | 148 ++++ .../platform_releases/koa.rst | 158 +++++ .../platform_releases/latest.rst | 15 + .../platform_releases/lilac.rst | 161 +++++ .../platform_releases/maple.rst | 94 +++ .../platform_releases/nutmeg.rst | 89 +++ .../platform_releases/olive.rst | 88 +++ 119 files changed, 10698 insertions(+) create mode 100644 source/site_ops/install_configure_run_guide/Images/Analytics_AWS_Deployment.png create mode 100644 source/site_ops/install_configure_run_guide/Images/Analytics_Pipeline.png create mode 100755 source/site_ops/install_configure_run_guide/Images/add_office365_provider_config.png create mode 100644 source/site_ops/install_configure_run_guide/Images/course_enable_anonymous_courseware_access.png create mode 100644 source/site_ops/install_configure_run_guide/Images/enable_anonymous_courseware_access.png create mode 100644 source/site_ops/install_configure_run_guide/Images/lti_test_auth.png create mode 100644 source/site_ops/install_configure_run_guide/Images/tpa_inst_list.png create mode 100644 source/site_ops/install_configure_run_guide/Images/tpa_signin.png create mode 100644 source/site_ops/install_configure_run_guide/analytics/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/compiling_theme.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/create_theme.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/enable_themes.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/overview_themes.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/theme_directories.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/config_allowed_regis_emails.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/configure_milestone_app.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/edx_search.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/enable_weekly_learning_goals.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/install_xblock.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/lti/authentication_options_lti.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/lti/enable_lti.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/lti/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/lti/settings_lti.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/ora2/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/password.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/retrieve_extended_profile_metadata.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/sites/configure_site.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/sites/create_site.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/sites/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_IDmap_api.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_advanced_features.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/index.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/transcripts.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/updating_platform.rst create mode 100644 source/site_ops/install_configure_run_guide/configuration/youtube_api.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/apple_pay.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/change_processors.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/index.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/maintain_ecommerce.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/internationalization.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-deprecated/theming.rst create mode 100644 source/site_ops/install_configure_run_guide/ecommerce-solutions.rst create mode 100644 source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst create mode 100644 source/site_ops/install_configure_run_guide/front_matter/browsers.rst create mode 100644 source/site_ops/install_configure_run_guide/front_matter/getting_help.rst create mode 100644 source/site_ops/install_configure_run_guide/front_matter/index.rst create mode 100644 source/site_ops/install_configure_run_guide/front_matter/preface.rst create mode 100644 source/site_ops/install_configure_run_guide/front_matter/read_me.rst create mode 100644 source/site_ops/install_configure_run_guide/glossary.rst create mode 100755 source/site_ops/install_configure_run_guide/index.rst create mode 100644 source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst create mode 100644 source/site_ops/install_configure_run_guide/insights/index.rst create mode 100644 source/site_ops/install_configure_run_guide/insights/install_insights.rst create mode 100644 source/site_ops/install_configure_run_guide/installation/index.rst create mode 100644 source/site_ops/install_configure_run_guide/installation/tutor.rst create mode 100644 source/site_ops/install_configure_run_guide/mobile-deprecated.rst create mode 100644 source/site_ops/install_configure_run_guide/mobile.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/birch.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/cypress.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/ficus.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/index.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/juniper.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/koa.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/latest.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/lilac.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/maple.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst create mode 100644 source/site_ops/install_configure_run_guide/platform_releases/olive.rst diff --git a/source/site_ops/index.rst b/source/site_ops/index.rst index 27c5477d2..48a1ede89 100644 --- a/source/site_ops/index.rst +++ b/source/site_ops/index.rst @@ -12,6 +12,7 @@ Open edX Site Operators .. toctree:: :glob: + install_configure_run_guide/index quickstarts/index how-tos/index concepts/index diff --git a/source/site_ops/install_configure_run_guide/Images/Analytics_AWS_Deployment.png b/source/site_ops/install_configure_run_guide/Images/Analytics_AWS_Deployment.png new file mode 100644 index 0000000000000000000000000000000000000000..50bae250906421d86188fe6c57a730eff3a64d2c GIT binary patch literal 132089 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 j-=dLvpZ@4YA8F5wasj=n2 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 literal 0 HcmV?d00001 diff --git a/source/site_ops/install_configure_run_guide/Images/Analytics_Pipeline.png b/source/site_ops/install_configure_run_guide/Images/Analytics_Pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..436310f7f63e0caf73f93ca25781e6bfa95c6864 GIT binary patch literal 37673 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
xR(tzZf7!hW1 zhd*hF^;z#)M!r>%h49XL82@~<(^n0bRcj%ipxh5tAy2L!t{=DDa1lUf+DgW?ML)aK z=w2#eSO4biWS~IO_VKlL!aM~E+s3lf!9tklc^k|-Yw-1f*xb}fqPawZ3&{d1`>98x zzkFw#`>u5zY1U;3%u;(BZA4-B6=B@!b2#D;{E^qo*gD#{iDA0Ff@9zZ6ZVa0DPK&uNzi6NP4-r#^hVKBVz=3%-V=Ad8nrfiBPq^rKXGcT$s*Z=4jIf^WNg02}N1`z$VpLfl zY(z~^pyd>LagjvIb%B zx4-biAMnQ3#^!2>T*P$>(h~jmmr#Ds))xp~4}}MqXz1yP<~uNhq2A9fKPfyfpQQIz$jffaW(o8c=)W7sX=w3C@idJ zo;d8byW7)oyXjxX@_sIT>iH(H9}_iNT3Tl2=DL6VLXT5mJ;7BqG+++O&?f`}0sFHJ zZg||%t5(mzd!M`z;Od;JIR(j1OLOy8a65AYg%n=5aLM2}4Fx#Z<1Cz@Bri7U<006O zx}sySPefySy;bA5=e{FQ$ovNYqOx!qwOU>XSZyzR4u% zqSn>bMbE<02j!_!dN2$YULjX)@PxrK>(sTmfy+?Nl@2|4^@kc99b~$!r;cfTvbY(> ztAphTi7bsBn#VqT7~tgOgkTqNNInc6MDAz-I=dQsA4EltCP zpmZY+13>W0stoy}=}5(s^$}-Y?!HNM5XN8VbuYO$xHt$jiG{F15>PonTL#)!9>ritFa1TP6v=LPr0ra^l^(aP4E?n_d!27cB?ScBn4}3p!71o*W#_7A;iXB>+6nch7c7q zH_zunR9qdtzYsCvzPBS5TUMG!L~CV{Ag5D14~8NLQ-HjPPLPkYP6WL%$SiA<+SBy8 zlXx{9YxGjw+T~W)(}r5(r~WBdT_e7(I#q7Ys8*|YWwY#`B+YKvl2oMzCRm@$sZtxG zq@y!hK}2fY(t#dq3zdz+t~ zZK|TrNpRQDh@xh^k;hhlNP1kveYXMuk#@HoF-lyt8hInKsa;_Hke_Q>RQvWAah_i> zHYcxPJ^(A!AVNKejE(L6{{0`b;ZF%wRaJ?7r+wZ4Zu0!xTiCXtMQv(aAEEBVbV4Nx zfqH&7{5foOrW+R0R}`W@G)>^p5?gbHu>IO1EA~P-RkOyGTj5Y@7D=wu>+Tp)A)%6w z^)Ft&yblSOcGvph_D{RB?mM|N^YbBk=QjJ?cT_Xyf|6efaYAO`AfDqOUiHJR*-G#n zRgS}ZF}u0;{{C>gx&D0PdOZgRHN4$CQu!6Hqw@IFVd^Yiyn?iyh_M=AqN26i{%cuA zFasQm&h~VRLE&Jfb19mg-j9|L&i(5folY=Pw*Xr3QpjXohHDm_q6+#HyRp~Q$_93V z%<5ucVPU!JRtdy+K{2t+^mO(khe*6`U5t@*9aQIq@ff}QtotGA5z3@)mS}8aqrBvx z3B@j#)BNgm*Sq?0dU|>spjF)Wzw@@2EJNNM!&1yi4;t5b2HYMJNwcFy;k4Pd;Plp0{S*i+rp zHUQ~B&hmX~Wx6@yI_}wy#)36O9tgOzdtW?B$pMY!tTMk8*baZE-QH7jVrQ$JQdmg?GPNoloW_WV#DIP$+Kr)IZVLH0Ja1x152rx``di+ ze6!PKTHhzO7$e4r`*j>mEqV+TO*gD{Qi$mr1I=w_)Sn-vj|c{+>YX>~oyI|;>y;Qz z=SvBd0Z^bke{1&wo6btE#kFO(#?#qfxxy|iCKh#j=UTN6h8e$?bT%VlC5a<@X^C>C zX-_64psmQ_>4)X#CjtIw+}PQTPL3X3Y=Z@#{j2cc!IRl<<4e&)^R1Z1^KS#K@q{wz z3%aHn#xGxT!Fl=kK14-E7OYh>CM6|d8Q}~CBlzI+EB*ayt@Cyo*CLuIq%t?oAM%uL z<)bpGgzU3rNQWn^380&1G1|$h<~9LQQRDeO@wX{k>=M0RixQ%uk$4Dm9b4z$J~}hr z-roMIzEON6WH&czNvqmTBCN^viBME?zxUg>?|#B)R(4s!bI-c%nU&&yS2oR$iu0r_ zPTApo{bk17Xq}{13gg9r2v4CGb!*CTr)-LozM!bA9c4CJrKMcQ@K!H77soFJaW6-w zIu_1`jd-L^%R?0Bk9a=c-mciXxUNA=kef-J?aS2|B0EIFS@or$X*lfsO14JnyWZUAKrlYh? ze~0s&IQ3f6RRqgB(R8W#jfP%Mh|2qH3P7x+{FXsj}ny zgjKIyicdl3VpoMD0MNb8;lfY7j>)dP&EP8&ymsx{B3S{S4_!cgc2tg4eamoI*#o_o zDGkyq4&jT>*)T0T%5n~on9pARqqpEgwKEH)tIpTsXsD>v7WEej|JDIFN)W*hU=aGV z6wx%pe;HRg_qxn-BWo zpK07Ku#cWCjlL}7ueLa5Rrc)MTfh;Cn?HWU!%}Gr*by!Vh+kqK^~+#{6t0#}fS+Hf z`^X&Zbtqg0t6aBmQjZ1bLq-=%{S$x@sUtf7`Akj>$#uDFR;sb&;G!Ki7!eV{%2W;c z5l6&*^#E{S`+(+3n^g7hwKj?MXrd%=O8`@z@=?nT2ngUjar6w+ZGbhaN2Sc0zoy)9 z_!Cduk=*>9gj)_uklk2#)nTZ7`}Xa-i+w#ktffQQidT!W)($`2Grb9yJAHUN` zZ7ZfK#B`FgxG1iQ&@FGTv}Kl-s?zalD?=99Ib9_9cU$Sot!wp8P?wo>SXsZ6>H?6p zXJ{xBY8gO6<_UP!hvG|LarIB;78YVln*la}k{3#0Uo#!i50#EoEq@=U2O~+Q_ zU(d`bHfx!}l4J(i{Ivz-;4>8LXDFs&p0Jwt{~XR@MnbwrMnSvB7-Y$hA;;d^)Y&un z?D~nYP|$Sc$`wI={zT~u@jgDspwyTjt#)s)j1V>hn#&4!w#y-M7!Ikx?@uvlq~z3T zNlCX86lH;m=!lhYMi32N`ZmC}Suwm7e_o-X`kIbIpS{8nHp4Lbx9(Lg`RkidTY-!I z4UErYclT;_b#;h{4XpF-PoI8?#5ma5VG*eOMVxC%@*Q0fgk~YG_hhPa=9F4bDI7WE z`Mh{{xWshmRW7dp>BkMXYCw|~e_NBJ@lf{2cuMPP7tBNL;ncBmoIxm9~1EBk7H58+y6hcCie0vz0I=Z{}@eD|) z;J&e%48mrbc1>m|`Pzq}D0;1^^eGMAyG?bXoot+qbCG+2G@PjC?=WIj$C;joa`?egyIC;D#TZlq)?i+-^fr0>0~HFp51V6SBTxcp(_jHEb~birVKGy5eE>^XFiUky z1;)_SRK?!DRM0FAjS#MZXdu)%Xnl|K&GqU_0*qOk52?`3PgDc*bN!)LErUdi|cxv3x zeC&EGXUn`@6Cc%a8X8Vo-{}NzW+jf0PW=E016OZ@rv(Sl5X|ym!E;|HXJ_K(Y;LZh zH~?>+($WyMfdByOfqw^~fOg0_sczhX>>(4j16B)GKu-&z*5tH|_Ym>d=C zzRKV+Z^ZqK($YTT1nu8{m&SXYvwH(5z=s3f-`fy$CHq)R^JedMsq%{#spxd@BDJ-( z$aPFji`k^g07(fu`+9@4^`ZOb<4kQR|FAMLGLJO9X;?zhm8+fdnO0mL_W%b+U)dnK3k4#iW1~xceT=Se z(Pt>UAmgyLev}3jBX|U;k3^kT4F?>W?*J3A#ZgxQ`L4;Oz=_~*yp^js!CDJoE0ec% zmnV-a3eXp;p9s}&t<&InG|<(h-y%BP+l#f^%E{pY7d<~*_88DG7F{N8**d8jjm?7yFJ`c1OwuS%1ldtEL3sba1Wp*NKd?009uGIV-_9#j|N`a zji|B7+X@e1FMHQ=?4G-x=ikp~@M8rBd-)2c={yn7));0S*zhb^A+;FD{C7TA3g7eh z0ki=KC-6tTYdm3@Kl|+_*Kmz)R}5yozE$zAxC)yNCXepzu4AbtdfByN@3Yap&+oKD zY|iTzEIg&ZQE|UpbKmZ-hr7v7sUq&*tKK3kf*%bN5E@ge!h87_){ZG&IFVO(=zeO~ z=4M}Y)sL#?bg=kduFMW0Ct|q3x^&i#hsrC)&>I@t2FW2PB zGy|w_vr)CGKv&}Nr^+V*${e$DO$A@p+23b(T3NHix$l-$ZM2xvR<_-;H5j`;Z9uSw ziH0Rs88&0LwJ@rHBQ|g|g-U=ecV6>6s#puFSG6;5u93~M`;&L~7H$;*4q@Xff%XZ+ zOIb^@&1`?mG|dJUVKxuha)__jZ~(fmzDo9G+J=^(iBMCP)>nqY)Mp;(k8RQJY8k~$ zRLGRgQ)o!=5bM%Ax1w^nlhf0Uo(LPti>x(CklC-qrfliVZ7BUz|Lt%njaNRMlA`H# zXZiE=Aztjq;DuBrrV>R0*2vN5e55RT^;ghC+6SG%4bN;AhD8v8!7P@;IqWeF7nY7x zO$3lbdb_2ccR5e0^=oCo9t7k>3Cuqh^c#pu2A4d#Jt<7NV4e_4<7`sji+l`ulfB z(&lQ{Lt+xkjx553{q(s45G(C)2{>DbS zlp@pS<|Yt~FYM2uut&LJrVU!_STU8AmDtQmD1+2r(?wC#vn;`O8HFOc48ojH^JZ@UCS%h7`p!xkhXe*XTAi|d@H ze2`=bGCxG%!4~wy0`ZC_6`vt3c*bw!NAveHIg9czPgDz%h^M67g{q{ms!73 z=(b!s>gL>FSpk8o8NJVZNc$l}NNWD24MPSAjj#G1Xm|jrQwLBEQY%BO9=nu~?wBOd z6(3VmSuy!)_oa5GAF^TsW$)yxWzCf^2h5Rz)N1eIx{o#x8vi- zK_I-GN^ay^uhC7ejA|5lI3pHqkIkezIX=gcUy zC>$DQLRzC#=Hip{5k>FP*V9&Ins)WC&wfxy1r?&Xq{P+olQojgtTAEFzK&bk+S?B? zwPi4zKc5dXvG$HrXN|;((2lf z`D}Z_Z7)&^d8Ip@Bp4&S{$aUiD(=;WV#Eo*e5olE)brkOYZ*FfAH`jXN*FdnA`I^Xsr)67#k9@3@=q2zS(Mh*aVQ%!!N&X zkmweJb*Y^J%6}r6)oY6R=0woz09hxs&Yej46LRW&WgsMnl)Xs5p4zlO?i z&F-~-zafRnqJ?fK-;9>5Ly8QYIJPO~&ah**R#eO8t=mYw7$PwF-_&a%#+eS4JZWqB zrI!HIP1X!~h1G;yhxPTc7fyRS>zsb$rDp=m^lxNu-<6j`?|P^&H($!_P&wxJeucEg z7-R@}SAp6dlxveX)mVBVco}mmHTeOqD#Inw;x+nuQ0e36k(*KDrz1n#LrNl((OR)v zTknz?tm}VSWBR_{aF@=`?7rJ@N0n88zm*1+>9u^M1_#b6<2F{O)y@RldZj6Aiv6#1 zW-`&*osNy>0S{(Z#a}FABb(U#D;7-%wkiHm{Oc$Fup)U?=~vrN=WqU(HA0JBd*woGmrNZ=5`L68iJFH&ulx4{-6ICJsP2kJu(8%`beYf+gKaazBttlmrGwB`wyc= zIvG%TxLCCmTTiE&|5!_YMAE0rIkRI|x?)s~a~F@^}B|e@WZu|Mcnyy`(d877@8# zAWc-e4YP)-u|uL&jhvGVM?X7LHA{qE;$YV*m_v4; z`{=>up=ah4U1Z=|W#(|vWZK5s0n-3Fsnt+vm z7d!gNGRbfN(nMg{wap&ef1b)&-MHLXnh}YWJc;Yv#$wZWqgfo0VR;}sNAUZ9X)TTa z9%wBc^Z$FT<&z&v4wKxov$LFdv;WR%X8)2Ejll}ga}%B=pudyj+_FCWfTX*p7yuSIP>c70-o_TR@SzVFyHBTf8M)SdX;Y76#IObJmu*mt znm9SBgQO);Hu?9TkO9{_okuWXcb1dXE#0_0kktxC%t)GO$uSy||6<{q`7l3#dB71F zx5Y{Cc+b5}0L`Z+6xyAx>jasn`bPi*fEVbqIFI2# z-#F&YGSebF+FfQn)x6X<%n`dJh@Q?0Pq)o>__~oliA+kG6k@`8ajKn}xc6VYpcqAn zG-k(NCvglW&G$Y2x=0?UrsjxIK-3F8l)M#+H|hr4hcEL?V)HIH7r|}~z*jYcK!`$!I_={#%8lXvY6kA^DN&Uxg%=Y)ZxtG4lA5{cM(5a>D!rsgm2% z*8>AjpqfB{Jt)EL>b)rdMnja65fSHGT3b0z+YTTxo_$+(Jlc?X-`KpFu47 zf-gwvCR_eV*tQ=sv)43K1KIJE)Sk$AOwUPZ9*W!Bp4yD6-eACNMkHHep5VtbZbq}% zf}2ozGrJ`UqqCTT(Sh{kfg_H;D8M? zvS(D2*z-<)kodmrbTkVwV1?9f>7UuH^8HgmFOG7_!^XX*-@R__fE3c}I^#kiWcejP z?Ou&hfRr5z8%;<j($dTGAl!6{K z1VnI~{-cYzAMVlzP z4efS?klvx$0mR78egN<{(lvm{p~RIxG&~bHs5t<@g#%=9AfFg}pZ-Zcnxz=hXAh=N zRpf{Q6MXJQm(9ihy6LkhcpA-~ti z+^e)sSV6lD2fX%u<-Qw2AV6182iz5&qa;*p?S~4ab>9DGu-wq!lApkw?^mojg`2BLghvBr7(JYkXNSIAAUdbRs zyqQ%Q;%ET!!W5jkV4zwhm+jOXwfjwd3!Lx2X|?P@TK(eRwAxV*Nvjtf3_8E`>e*b( zmWpOU9Hg!u;%L)IA>hCZ`Z9oUQIb6Nw1fhI{z7EY?{H)xb-VoaI@h^F8PnM&)hs*1 zF!Z^7nYnJnOhH09rM>scW!R`FlXex z(+u2w<~uaG;(5ei)lB|hBDDNO34q!@CDy#4n6YrZXFQ+87_zx|GT4_QjQ)37?4ZvM zkwda@z#ZuJAkD#Ghlp&K6$8uw5cZ;u%g+Xg4`am~No{ki8*1VZcV?J`Yxya$}#L(ul`A3X@~3J97D{0z9< z{XR|*m_eCpyZv{Gb)Gk<0hB1RI4EYpYa#oUr4X8TY(O*!@^8!r`s0Q$U|IlA>b+=< zeiGvA0gwz-x6swtFm1zAo`VLu;4JqZ^t$PD^4Gs!mcDC!86w?`WdlbpSMI4f`b+m=d8VZuQuPXTL0N6j_enGl>w1 zl>s*gs?Q>TCV`8jGo9VXGC|0Z34l7%XAEtEpLN^isK{R51ng2{c18XI+(3pFkn}(o z7Q<=4?WO}>43~%&UVQ*)65lyxpgPnwG!THu&K-6MbSQ#10ZB_ddK#L7!Jh&auhko{ zi6E;m&pmy8SAb@v@S4;bjkE-lRjXOEnhE@{JQ%+?*ij?QVDfpzGp&g!2Z zm^;Np;nh7n%!NTDp>TWr5k)`2QQxgEFD&e$A2CGwWc4W`*Xg01v#|FV+3T}-EmAdR z04!s+mIBOLcW^-^6j>&z!t<$bsNxQ zaQIHptZehU{UUK~EtK#ACJK})AfN>iZafGgK#c=BM{bcE5Y7TL@*>vp9uC1<<#8Yg zP_x@X?4sdHT(>-LWioIa7$pc_A>z#kdQ}9k{`e8$5`jzwFlXo26)ARnn+%JqvQpIx zrS!+C3JrifoA0feg9h#*21KWwFiIiQK>_m}uvQQ`L0hOX$ofH>2&*;o`*$ABHT7W} z_Uf5VAR=tdFJWMl0EB3==6)zmwW#!nasTel7N?z-1JFVcL{`6^eu!`kv~mHL@mSR5uf?O&I|wHadL!I2-4U23*h7zWbmE{} z>8xt8|8u0!4R1c&_4Vr;Tff;Q2WSg+0&H-0dt(I{AW`SFEVL2y#*~-DLL>$YN$fBj zaE*hl0i6VhICmmu&=5vY7f8lE zM6@@=ah5$b2tj$0wV-(e)GHO%hDpN7MmvlEG%hf`hR>eefpmdT^)1T5nt!mnRB#r~Y__ya^Pot(J!x~fVNeB7)xZAnRHx5{6n z{}w$>?9(X?jc^aEn!44j|0KK{lI6w;D{Md_NSv^^)p>Jwjf2h>E72HOBNZ{vON#Q4 z&k4Q+DHPBOb4eD_RghX@HVZQI9P?L(t=llTkbk)%PN(p~&=8KDVhd1m*|9(^g8Jbf z&fNjYm~W03fVGV|I)gj5(0g)r-PHf|@BIfmgbK#4frXg9?C-8mV+x{uAx3a4ZMeXW02KzZsgRryXnjkU zd;1W&Ao`_^fB~~{1)b(Cqk!GzUYRS0k7<2!CI=-m< zXqXV6S~Ex{SurbbFG6k}4NTTPB?L)q5!;n(&JrY_tN|V-)APsc*~#(6NhR7 zQd&p{fpmlyBX!f5MOtCuivOs6zAqz;w#IC-co}L{U9D=iAf%xQ`r_5HJDQL2t}Tw5 zvmUM;`%{r%3&|mbe<-)Lo#zEj{$YZU%DT7)1&HqKC#ZB}age&IuGv~gSKaoe=AJE# zJXS-e?Qj!RSimNN4!=kn^nmW)KEZrn4*UmH6>zVOLiBv~N4V-MO0SB)1rQnFc4Pw~ zjpt^=X|1iTi8qj-fB`Yz-g33>em}Ng7KAHm@1&nef5HT<8H1pc3Z8MH^*tO`1D^h2 zZk`KYA-3P9K~zDw)xx-)mjn6WSD;+D^g?7j5wRo_V8V@TY`W=h;|mKP1Ml6N>^xb# zB3!-k03_y!2Vlg5WrAohaR+HHnDNtZ?Kc5nqWACxFU+S~2Ic_faI`kgLgUZ+7N-JQ z$!Fl|1$w_3L}CQ7zOKGLJJcQ&XHPY~hU8aHhrsg#z?i}9?&oA#FNYyY^_rYxH}aygME+?l%07w4zu@bwK5QA8Lno=!6w9 z*MfQ%>U!`}NS*?XQ=YNzyNTVI{r7a^rqGK3)W?Qvnn8) zo6W5@(^^>sK`h*NFA-m6R<`515;Yo}{LZHl6m;@oJeWwtn zKzNc=Pp=Etm5CQ~*{ddu#$mO3XWdP4@XROu{icJS_9YGM2JSu^ayBT8lE#`qeUpIP zj|-2h_VJ8jm-LI>)wWscZ2|NdQW;9enWP%S&Yqz5M)bY;`S}?$BzK^NkqLQ(z^Cgs zG1qaM=&}VX9m;a6iFd#zH&H88h1-Z~snE@Ea-TTbY!Xp%21xFl0C*x=zF?;NBd$PM zL+G9Xwi$95(B|5Czv-#pz@~yXM_Ei!VUln;obCw%R~wvFoi+8q%|!~QIZ7P!u7!t~ zXsp=*ZDgRu0uOq#R?*q(y}X~}0X_qHZj%DztMacKSnnIoKxdw>8`hUqlIvv0}%HHBl%Y;88D)6~qUycaev_?Cy;2X+ddQT1Uy@8i1&v z&8v4xkSDD)Os%wN>}Klh7>}%h+YmMzzWOc|isW7-P+&AlUOsyGu&pBM9pt*;+YxaV zl8y{S`CG*SmUmE}x)C{D#~DW3L0zjZV59_EVSwN`%*_2`I50qq<=HKcv>c~FDd!4i zyE6 z`bRSyS1$#p&N;Qu+H1`<=UfzU&mp?5ED|`Up?nU;z~&7pBhY^y!nJZ%tj9vE$oGVb zyJbQVP8B3FX~DLj{e!JxpFKbDk@wpSSqBseCcI{r!~Ok8`~+PngbG}T{1H90z$nNM zURzs3->WYIeg|0QXxjdvNZ_|h@xac{A9Ay^Q$Rr5)!y`DuG&zkMwTy?Q{0?^iI~A) zhsOy{5f2lVzZ~cM9qByO3MoM%JRXv5paYF}Pvy5CU(n((mdQcfU`VDBV=aVW3c1*s zGiOkZVDsa4t6QjKIgsPvT52`u-`-n6E(y?OLlP?>q`@6R{Hp1M5FIdG%Khbnymw}G zp8Pxv;SnBOb)qm(-ku0q<)4MrSmmibu-T(MR>Ou|Cg@UwM()DSz{WD{`V&|)=!mdS zLU>CL`)*$xk?;A_RsiLs7JHkSdnu4(OT@Ll&b@PxB&92*6HhYE;#{#IPRdJ?$WZa& z`0l*dsNM5--~!jlLopg+hqHs6K%j$RX=|*iy17n)5CTtNMEpQcPfyuiH7Fm3_AFsT z5I%Y6pn#;r^o186mbP}5hU$oG6Bs0^(OIU4ZQZbi!M^;or z%vjxN-qPuZ2=tklt($eCOxNG^!>{|f5E{FlzY_Pn8HQNwzoaW5b%0K1P`pd-p<$2; z`_Z2Snh9WOsOQPxvHU?~{Re5P#E-kXv%|YGxaBTQ>+1y6Lz|+8lK-!-kFTTh-Y-M- z*0&uqDA16(j`rl7K_qqSRTfj{Q~URMivI064loE6$nC!4^!QlU`ugF7Uuzn%e@l|G zofDtDI5c+J;W>AhbWJxfHd!Q>YHQi}9~Bi_eFjRn$^br$TBjux+K#8Xdm=_<>SOV?q6?x~X3(KYsr2KlFrgU5zyES) zaaN`8@sZmSV`NGNJ4T~EN9aSH1F~qPOf6L#BE&~Q<Opvb?HzDMm$Y!$12K157 z4|rYvkcIPv^538D`vz3ply5C}Hdk=*s9^xbzq32+naXjj)5AfF!0Xevwj;VR8jvG8 za85Q<8Sps7Sd$2N8amw#I$HC0$HdLZ&%7j2{s9a(#BHO8-5wYJ>C>m!vEze6nfajN zEPaR}apYiR!PLLclLyvAs6`o9gVB<;Wx=7B_u{&^msa58Wefm$gLQVW)AL42X^0>3 zoJ==aJgj-Dioi)jvJJmYz@JTb9%~3XJX~inNO|Ee=owz_tNou4!vU(95!)Z=avfdg1E}Rz$2S^Wz0SZJt!k*(QPv zI~`l(F}WMR-DD2|9quXH&}}A2Q-oaFrgGFuL}SQm`1YQfECiSbAy^R?54kxTu%-n=l;$?Q=lzn9-?eFgg)aSA!XdhbPl;b(i1VRxrwM%pK5HQa{ybY#% z0Hv7L7&SYP4}1oVd^^7=@$WG}@YTUNjDGv@dOCQ>_({1A zbbK_r4<2Vc?ZZty=bj2)xIWZNzx+6X0ImwGcx8Y*AT4e(%7+_?3eBma1>kL61%EbwCb_7z(3=oZ;Q|3~>4fLW?-%pif9UINK%+!fV!(Tbsz+lQQXfba z0UDZ265aWXOy?kff@GZCHSVO+ry}qYxrXageoiTlsN*2@2iXk3P-%v+3*h2`jJ>~G zalqcTFT$X1LA2`Y*FQnj!Gir9U=xqP)NYvA4b@8e%FvS$iqx^EdKZ9hhkzxUVZfY7 zNjKj$1q?x|GOt_Ag1CKfN$3%P`|qr4K1?@!HY4+S+A!@)6Di89w^-4jqIn zVE&`0wHm!|wfq9u?fEe7{Lb$~3=(9=a{Xz@#~vOp1D=3>FkJvJvaiTiU!JaXVCNuT z+SK%LCl2}%+}xJ|afC<+WK-Bd3=4I=0Gno%L@b&?hGU(XdM$;n;MkfhkEC1B#DeJ0 z!7@C>w6D^Y=HcPloXKtBy%Efi)V1CD2#4??kRJoEGg#s%1)Bse9^ro?9Yt|NA^tmrR|gQt z#a{PiEx%tpX7nb36xY(+tnsSQjz|a2fKZ~l5C=hX0X1uC1h^drBYb-{)8XiI0MOL> zweX(WaH-Hw?W$-j5~hEL_P{(3pbkPg2OcVLj_F|BY15k>`be9+8uZ+1t=0deCatM` zd3kwfJ6nTjp&Hn%vVhV9)x>mk%78th#*IogVUY7tTvys|`hKE_nJk`&3cx@!KM^~K>oY-MC8*g2K?9aIUy5k~_TDFN%(hI$Ibwal%?{^z;?)npmQO@J~|#gCC> z2~gms@SlY?(q(r!LdXZMPSI}I5wE&44w0vOut=SZv z0dxx$QYaGfQiG%g94a*(@Z%HO4I3dqK?6-@!tdPh{!*=soCzWC&XxA)T_qf%?}BKu z62QVg5Z!!P4)l#%XilyJsTG10pjV(kbn?QG+}P*RqVjrqV9ah31f0n31G#(Za+$o{ z0U(uejPplRhIc|g*|RDa{uYQQu*HM^Ky8t|7Irz4)+N|{HN1?usZt5rpArV%gEJHp zK!1?u{aSd^N?{90FvLVCoIAmZ5~2%uiDom0A)+Bj)g7n1)Cc_`6H3o!N^s|Q@U6a1 zG%9VgTjH~4CxABYHR#8PUVCoS#7y@wHi=AR^ay!AfK>oc9-rd}^=Wj%AB>ruy0nnX zXlWQQT=VnROHac3`2qdT%?+q`^yWM3R|9QIUS3|Mz-5FSYuR4@09Gjl1qHG9na`p) zv@+c-IYmnG+Th|NCb)i{6V2xC+VSK$c+ zC1em?s`Y2cYR%vF3-I#B_xAS22Jbxoi)mcrS?& zyTM~i_mX&7ObRX>0$x^V`cILaWySLKUw#mNVP#}#v~Bm}cf#Y{g^`+Ib zm?WG03hTytY2%jjGd*O$yu&rL5%Xi;VRCb|5Rd$QAQ-@UKK!hT&r-e}qAc7BR7b+f zK)$H}W06-U-;A^Q1gwOIIB>|Sh#ec=>?#E5>TbMyNcG)uaZ(^IT)U+MQ1|=zSSs9s zv=jEf-UEWdMth>gt!#UdfD0D=aMZgNcu)KN&KG)W+AqP15p74X|D;BO zx(x>)(VZDol?WKu{2mdM)Nc;J=V zEVF-sGXjXtwVl9)F)O-o#cjZ59=*Pu%5{@+j&aL{#?_tac*J2>c`{>qOs6e%Cv26oM8n^|U z%g{cSJ*CzV@n{r6ofQ4hk=rBCR_%BN;Iul=8raSP@((2?vXl)7#QzO?(U0Jz1|`^X zCF#jzSdySK0M&2%@82dhRu2(s(ueHlgcjd#*EC3M5Ko$fDA0GVc&bI?3Y_%Xs1{E!C zam7sUa$45&h`N!mHD=2@#sv*Dz-xe%2QztJbW^_d7PLcHT&=o7oXr7e0%pfj?SUKn z=rn4~C=b-_qsm>4l?m5FWN#Yz3z|TRM!2OzqS6JujARt-ex7I$fYu_M*$N009=4S+ z@SoSex_+PoNfXW?%g?$ImMuawNG!muitG-j!BARY!8~Xd3=2VOBSHEuq~boyQta@g zL$hX5+l>SQ2w5Qofodf^{Kyj71RxDLTi;13F8u++{%NK{ujy%(ZjAxyqf}TEKu>`V z9Ee>lukqI%bcb$Jdanz_Txdz7CMonY!7UaUVZ$X#yb{kfp9Sg!ha_+%0t1O=<{6-% zO3NtrW0{TBoN^o9ih_f|10qbM1qqId>LBz26MuO&84Lp>#7`tsfGjNRQQBAc9RNYQ zR>9Hf_mcx^!p8?`*z<<$0#?TJMZ7mbhFSR$wDe$(hI*Ump@p6+_zcn3Iulxqzgh~{He}VR1QF@VR!s566d;^zMHUT<#$l{R-;rDF6-XC zduj3FH^RpT#AS{iI=EC)^0Cp@n$+iZYg#ds)(9K|<{M&0A_N*jD@fe)yB2`+^T#L} z!xAa0IWly<;5(Gua=cKUARqz3QczZ&^qeOJ#NGqEX>suYZi9z~3Fy$foKR{GLVeKL z=;z;LH@30){*mkJOin3u^5AU{&Ltt{q0~o&)+5wlhC3u&ASZ>`PHAagYf@_g+4wEn zU*fH+;|oxzWDR10`=@r*ckn>W!uI@Itw(DnX*TK{N#9@`Ld;-x&^O5q8l#VdZU!XU z>;sQI|2ieHiTlbapGJ(OHh^1*Do=>fav~cBL*EYooCCNjR8PQHH*+-L9sx5XWb*Xk z%6$OIpeyb;`t5Jz=-X!u9dqbtz%oFPI&6*8fcAZ;8-dl5504=iR@&Um?8BEqu#08Kfwzo=C zQ*&b09;zBh1@=2=;?a<-L08ywdxQbmT;RZ8+xji`>e!h8@Jm2-E#yXy!23bO2T+At9&Nbjx&x?juKav?E6<@Iy00eynmf^^mySqCH zQU@SRKEQcywnuC9mv7CLq9h3{-EYzsl-vw<(v-!VRuKX_t*jE^@C9i(xqc6bzJRLS zMHU2PP+A(i74Cv$6816JN;Lxxvfp4!77&|Ut5_?K9W(kh4=gGP0<3xYZY(^@U=YA7 z3ub>{Z^!xY>MjUsgX3duf51)z-6X%&JrJ!(eH0Byp+c_ngTAzI6OvgGi^+rw77cip z10AjvvQl0?K0}$&TtK239n*J!zPIGE6{ytFsoGG;$__qNC?pEdo`644&or7ZID-;( z-|FFYuonpUVM8czurM{vUY!8gVBthluRfy9jHd4-_dyTS3=R+IKKy|v5QL2;?(PF0 zBjRvK|0i*6cX!@b^uZ=Ki&{NkJCNscN}>kSzDxs&?S$wHyUa~Z)w?Dj8%EuFfKwxi z&%yCYkb|(v1qh5sPSA$(XGBi|n-f2D27RFdI%{}`80vlAw$Gb4Z+`a= z@2-|*RDx3e;WEM9WC95l!W(2KLd5>UgZCJ0{SsTDu*4u$ ziE z0eV0v23P^aKn|k-y{nwlL06O71vsOQ&_B5in-Jm>MIVL}BmvBnUlIs;YAO!-(>8J53AQ4})qEJrZ&eq|EKg0eurNJX*{b3e|+r z!4^%BQFn?gL`o3hSz7kyNI=lVAr>o&qu|Prw~oTg+$q&I_z0%}?KCH^9v>f%?M79e z^AmXOcGEunF9jENinsJwCIBa;&csCJi|~>SWzk2Fx+(*EB!~`s3cgbrsn>WL{)Vsr zS#9Nan?KSK=RTJCaIJ;e1M*yVg<4>Zt`j^TGd@avYGd|c=)V(fbiTi*`CxS zsu&yI7Wr#CSrHh{2PJJiu#`Y0p7RGvp*L%xYMYDXy+0JpltZ@zgowI&|7aC!kD6&b*dXR; zZ<`%;duyJt0;6=GQUZZwDZmeZXQ0csbJ-zhAWtB zDc#g9#z`H0sbbZg}T^Q`-DjdE|CA@% z#i`i*hae`UDHWvu)S4P?qXS}_+y{OIk1AIjPmnq+c}lWNX76#j2Vk?X+oeqy*~Nc{ zY*1x|RHxW3;dgOZ85eRn3#w(&eEn_UdW4FnP)Xnei;gqRClN^*S?z-0#CLh%$|v{Z zEG*H7Y#;W)M$y1@_r?Qmo^ygha_`SxM?C6Jsk(fUk|jcGYv&~S$NlRka2c;`8>!Dt z+^0w6W+b_~9Z8rX^a`D^--}|;jY|4KOviP#>}ZG5UN1%__jAePh4;7vC~*#oZJkfM zael|B zm~Z}hjSs!n$&p0kVDXFC95Jqclg$?3|&i2ZBrQ zv6x+Lst$amJ4~E{ky(1j@5@p)u+yUfil%6G+4wH;WFSYTO@=N^353}MFgs451AqHE zoCDl}EQy2zihC{Arll~*%_(`=E4u1=2)eE;C77!Qcb6HB$%2QyU>yxqD~|Y;Kp=hq zz59*I6Jxu?3A@*O)oZkprTVFS|J~8wirwO|4ih_IL?;%vfo_Sfm`~f-So7cPXn@|o z&2AgmmD^D)9-E%~9KbAoWzO>Dyc4#i=CFhMR_ zBzmcrjv?!O6#PSgb}@vbW$dgAjQ%SStk3`tauT(pFp&<1Yr$wOng?WGRQ49U%)LO1 z{D8BUjwb6o>kc;4!Af@$q}?PzFbR%+3d?&7<_aE!x9Jp}vp2BAGAoq~{CvMqy;LlM zrsTDsY?;`kJwcT~u*WhlzuTgvDji96M3-*|^Vuj@IH_SRm>sUa-7|;ATuMD`a;y3z zUvef!N7zGTB0wz8Q0HM&jql43>hSR0S`6U0vu&XixACaMsUFMd4 z4TB)gzK`xo)@ge9M+SU@u~-TVT!6j#Lh3@nT32)kSUheWc$2fRcqCxj=Q%V(&S+23 zGiX}&VljRJaMM#@Rfl4$CWKT)HH9_W{i@mrKmc1_m&fq z)Wk;Qgiu{aoExJx8xY58_!Bt!_wezn_o(s?GSBO3Js%>rZq3{FI8=oUNGh9VEkE6qU-_4+e z!-%`_iNE= zD-}97ejTq|ZQIS@oaGFcb=M15<9VOIirurYn{5bk|70FskHK!P?g(x8ik90OcWxag zdU-08Pd<$5?XB0>?jMA!5!5fzKnMB0Yjpw+at}@eu4dK9@5G)<-+80RFzLmaol)n# zRj;wsxt^~Qo3GxK+c5Q7b+uHqFi$H35)K^MxzPO$8vw8Tmf33sg zZ4rfCpD`dd4F|lN)v9k#9isfrQyiUCv9h9t%D$*)q*xqJpoQt)imIoHIi7xU|Q z|84H~Z&!{-N6wUkePE+EAMKAXGFM$zHTMFU98cc}SU;E*mWL0Q*&^IJgYCHr?@@MA zh`-mX-Fa-{YJI?QY2u3nxSxx%i;abQj9!li-_OE5OB0=ZOrM4V${H@U+ai%D*6x zyWV`TxZ1mok{7NdOnD?W~fhg~gy@il|Bez;S|%L^x%nlXPgpl>OJjA~TekWY>3~;agu^o2JR~HiH6_LGC}pT<_kNh#^6XjKP3)vlV{j9o z)3;7@O$tta=#1Uus^01gPt2Ty_t6&Tp4auUTh(kZ%MG9WQDpgJAmpN!0mFgjl!nLk zm97@0T?(r@iOfqtb-nttV|=5SHsqb{i~%GM-F(0 z`8^;T(uj$mp$Z`{3u`AGoesOYG4<>#YkTu;#b5JNizhj6C$T0O$I&_o^~t(w(QK55 z$8b^|wNWV*aQRZS>#q6BEJ)8|QbsYl_48X2?+?v9RBHG}=b5y(F2-pQt=;hrk6)E@ z`xHHBJN<(_R3Nx?GGa_qqaOm!agGu;Nz>F z_94T$v4QHTM}JHA0oup>N!^TT!FEaqUVP4ZLe6^T>BRL58eLk=BZ*q;Po%5MMYp!^U=I5DsTwZ$7`t4K*P8bfZ7&k>n&Ef%+#TA^Ee+G5cIE+_ z_(p3rZiiF3{QbMkNt{)J4ZL%!L7gGwGbx(tYsIO#JFJ|A6+u6xBxX21SyfI2O)IwO z-!8WnTE2IADbyx##4&kdy0eoIUiZq}RL(QMW{x#!qVo^_}?J z@tK$EEUdx0x7^xbv#``s^$3YgGrHVh7(=WicX7y)CD$Rnr?%;~w~V~uf`M*vS7+cSjrHH)cKPO59A!Yi{N)h;q)H4QYn8swx6$ZO~raBh?;6g znNZ;jKG!vG9P_DAvrUbg;jW;I7oE#v^Tcb6=II*_k3-L%x4qF-I^ zRF_=X0OwwGK@+tF53gQcNV`W@BI92#nu}7Y3;Jh!6FWl4*^QU@noP<*w%0f3Tw@8a zvOJc>eYKEL-?y=AI@PUxFn&$5fNffp&!T(T`4N5QhGE;-aFtHA^J;#nuE>47Dsc0&Z)Ekc8CdCqChJ z7*}hq~8>Drfx^s1wRgxp1vioASz-hnPrF}C6qYl`;0N-WkwQVrI=eN z?+!IwSMacCcWSf95OH&$8WAAj@L7^3Yo_UN#br**;#Zn$SAw}q$<^fyJzaY8L+_nT z(+OIruN;hs((dNXnqn)ZJ+w0TsyyPA+KHQ6WQ7T?cG;%mP22%K9z1Rh2edwyg*}XR zb-Q7pB4lHmvfR=rCA*6!`k5M%Pipey(eHhHEIw?3S5RF{OSAsWMy1v)YhFTLJb9Cr z&qA|_eu-wy@iSB53$2IcCfr#O3q46?2Bj9xb=!1-TTVR-+8ld_btlnN*y*W5e8lHy z($HM%DHY~1etgznJ)-9_u`)$TfGQxP$@2z-?#%cT66FMeV?8%+vk@|0uhlh0z{9ZG)I1$d$DNoq>hLR%dYE8Afe4gR{+`+F| z+~H`Kz}mp($Vf`qNjonxHA1dlXG2wAnLVpg?DW`0Xj7Km(Zeh3>oq2U2S;=G*ym1$ z5O^d-gxz*+aFl*)3>m_E3b<~{?I?cSwku8!p?C%Qn?8MRGNgeiNo8KFI{0h#k&GR2^-{vb zkUDG5y4gn%<7gl8>k7|abtzfhbg?mv!{lUU!Uk#-dOSZenryLcy)X0^=$1`KGoU1 zcRfy!C(yc;J=wVnkAeZUu_(9OPCdC4S=+1z?%nwM*R~Y)k#Sk;$tTvWuPE%-aNE*} z0q4i*r5B6)rsWu6^g5GzrA7exzX)S*X5*o=%m{1cWZdwT*6+X?Z}5b*aND?Sovzp`4bh4=?413;<6fXs z8)=`$z}3iP-hw48Hw1BrYPjt_O3ZyqOe;A}W5(G&vNM!>J`Y1=)`{kGai-UiUhKj! zd=zd-jS%5>D+?aw=Zc9N zUo1Y8$~eLfHHDVQ%8IlnV_kjayDraN_l2+}9p*Jz*^Ih{C|c|)nN64yRmjV2(fkR+ zoav=21P%U`JEmdr+cPh^DL7K!MU}r4iZoRi&q=#po_2<6OCap%jOO^SBdXd9jA~AF zbB4D*{H(#?BTU10#Qj6`9wv^28FSCvQ_bR5RVgQ}d|nzd`R4WLx`JOhZOeIgfhNDA zwO+z<^INgGgI%Lu9Z{LCJEy%JRqzH@Gc!fXDfg_f(aQ2Vw^lv$|2o+9MaRE;S1NI* zHPYu@;dw*hp(SlGS%VP5WrwCw*NZz-{bgleM^tL@5^`;OY73kA1i??6)lz9<;es{O zm!y;f&wMPwCFoCcIbHo3Db2)HR=U1XqV<9z9YgxlE~RDL4U2Q`(%Bm?ip6301GeoG z>7qFevTMADmEA-}o3SMQ$;7$0ZUO?i(7L|8uJ(UT&}dUnT&g;8E=_~>1^F(61ZIp(Cp4w)<(h?$yHa-}ls#fr95#<^sv0{A z4tSST8P2oiPiXU-nJx9_Pb{TsmI(DNc?!F%eU7qZc<4;q+f>h{xx3DOB&Eu_Bg$FZ ztUP>ljYnp*yih-S_@fnrrY-|zIi`@lUzAsOYqMxF-WoJ9`{{Wt6l=#bLhW;V3WU_<69g;hjI_4R&6yhPrs|4kwy>5g zai(v+pRcxF>2P~6=-YKoK-kJ;v-~ZcYG+|)q5YVrV^Ds0yZ$AT-^$kinj0VO*uC^F zCyvKpUirkqe(DYbHQ3dkbPCG)=5kNHn-&-}ku?%MQuIK%i;3#yyEuLxy5w0yYHa4% za!l$qqv3CpH{H3|jICFMIjVh8uaKR86g}H1t}i(hP|< z=4mq%io)BEwa3vGN@;I7sIfUe7%ZJC2pMs#Ck*$`2Im9^kxN$-3q&&NXNW&y^hyn- z=SY5>W^OU?_fV2>5j%oikrmUt&rH?zlBu06o280>`Dcb^C99Hpw1IB_tDsN0M*>XQ z@d7b#3J&NGmN1e!+q-`6St$yy>B>GFY~0wGDWWW|;xVon)Pg;MSKEW--^2B*{u*?3SNWRc3cj)vjhF?rwz8KPpO`OqvQ_*8N z;j0AiiMn{t4V(63Dcn^~Jqjv(S#yrvZQ6yBo0*q2jJUIO>MF9E+@-Jl{q0^4DzGK} zIR`a5hM9_0-LxIcR13pLEpsOzKOUqGFOYh{*-;ukdfzTbalr z3*G1VL$p`*a4nrW-CIU(VMAP_vthN3_;2fn*8)swmULxnf2jtzUz@e{%19BmHe;G1 zhB(r=X;GS*H!JY}cpSJhAUL5kB=1l3-dciC+t;$pQD$8~e?eYO%fl;sSQ&TUs0AN2 znrUCKegk{@apUzAT$#Q~QsdOhTXJ)zsae86xAD6SqN}0PKm)NyZc$9YDpRN4wh_x) z&_W3Bo(;buBDl9@($}3aTUsktpO;?zanwiJYcJFIR)&k?Dlumhz=g{5G(0qiyq(01 zp1ify;i)~KGS`p-LsH?ZXum@NonOg6&4@}yuwjDVxZ$GPDM*slj0hSk6P?OLIEd@$ zj6}rzU~0yxO77VVSLmK_WLslgoH_*$WF6KqbE!ynwb+ePRz@4)}~9r%Vn z5S{!=?1g;E3wUov2MIL?13d@BTl#i}@D~X;*LA*YT-UE%zoEpd9useYt1$1+zHoISGqubjhc*%?1GB2 zf;Jf$r3LuhK1&Y%#Vv`|8GJeArmggdtfcq)3iyG-T3$__jI1n%=Hxjg`1#x`Wdk=d zGA2&a=P4EK+goI0M5Ky>ysnq&+T_Ydy%E1nIPtXqthM*Nk{}eD(7n)gTIxWbSABN% zg!g-oJ7;6Q?wR(oTl`ON-{9}O7UZC+@S*IEYQhg`v5KT*r&E)aN!H{SF1$!v(&9*G zxn{F^@cXsID*y19@7_wdtQy*k7PbFnKY4#_wWzAM4}m)m21Q0T!=_J~6B*gVt9+zk zl98pqizm&Aj7+l)a_a9l+!n~cU&-Riz`RKxUC(&_`Npz{;qNyAqW}M6{twosr~pch z#bVjE9VSuYQvILGEZVI`q<1>zV&wb}w|=j+n7bbBEFcKGxdsB#J7LxCx1|ypj1R}` zORK7?ESLHi3p%gfwUWl~{(KyIzO3u|J%?YrD?iL#KD&X&O>SaWS0{Vo zC8oSAG-dd)A1gj2N(a8)T=AJN>5U)#ny#iB7kU(6^?Y-C%?t-`$#^^fJbjn@GAe!C#kCaB%9Dtm+4-oe4aUsci3FPGSA*-9AlZppxw`#wK# z+vTWF)?JW3m~i7A45#PvKd7I!l$Sx-&9;OyJ!A0iNfsY{0HSjDgQ+Qxjf2CFP-iyQ zAL^c3!rsdV@#IRU4KBQ@=q?!gj?#X$J=^Lz<=qa~5xEDR4c4@>rp9_i`c?8_!^uv! zfzyV>StvEHcPy202u01|(Go%qPI&DhSnhk^8ndacpc)gVjW1e4C_D~;>-@DG$ zo*NTK%ULm22Hx}UNo(Jn(stVE#RPr4bjRtEMM~OSw^kkp63`AvqIQOK4>Wel9ny^=j+csHk)T!d5REoadiI;|#5PGVo zVeGzZWmqBw1cBWTHm>UZ{NT@^j)vs|7_9BjoCSY%(|e9%y1zvOuRd^n*-u5WF;Vx2 zfZMeGy^%X7nG&+fsaLMO1*W(0tL#?&qQCuck<03x@YZW!V_}b-OBjBnNMO!5illat zyDJh)7!IAk)zs8DPklZ5WS!R88^1fxb)~?-y@X+z>FeIGkwMyq_eR|k%#7ccm6g>R zlLlhXZ#J9@R^X#g&FdUUTlm%)*|fQu=7Y_@Yu)>jYr_+S#u5T9O9K@Jk#Y2A3BJ?G zMLJbZ(~S+Dn^T8Iyo#$A!7=bXUdgR^c<|FDwddR32dWC~^n5~+h{eV0_stP!Ykl^x znTnA?Rq+qp7JqRD4i6852)7J8wyFaQYu<;giYJfSdJ=v8(}hts@A+0{v)!d3NhFy; zUs!1CH6A-Q8+MhxUs}JR#fIXZ8^-k$E%fKrF4j1X?|1Q){_4<%R~4IYHXNjx+-xY< zHV?|EV0V*d*3Q^p8~t;E^kcf##R8m&Ym2C}j8EgMy|!m(EU@h{><81z@D*fY zi5WUAwZ0uuQyX&=D*Aim{qeC6WktB0QhDG|n z)a~bWrMa_ze>L5HD>EuIG_=HDlzVwKM?E!Jsw{EF(E(PPCr>C+ zXC;R7Yp$?7#|l)?gNR)IWNO57_Kxedn>ciT>LEq`9pB_syTLR{0j8&HV)J|O!GbWB zK@Z-fzP2nZM*zEkp+M|-B8iYRd zR&2!0(hjo*8T9@5bT`=7E@;Kf$I19Nr1{fb>ytX0_vwzgbLS(nnnuHy2TzXv=siPc z3%)|ZGROKVHaGlpe@_-`SewRt52B=@YiM!9$kg~AZ1BTWgjI%j>+|zFo!!-s;Y=+j z>=|JQC9aNur%A#$4%9Yh>d(_@;Ks+t@yJu+i!pM9U&Y?xy=|&&@@%uR#hxIGzJ4Of zsF3oE=d7&t`+8%5F#?>HQ{#hXOgMaBM5KJ ziddKn0tgyKln;*jWBeI@a0cCeF;Z$qium$APNxmSaB3Qs6AwdS6P2xL3Uy2rp8?N( zklMH2@7?sP)V@?>%6#8Ma&8*0{=MD^(eXN@;f+%n@m5yz?FYrGW-&Vz$+)ZRS$BS8 zi1dX>pMmx$mc$Ug@TIn9>&U^>>Y5t#(PGM|f3p-;o|9BUAN5mlx*j3YE{&YL0BPI% zVA8YV6%uhV%FGf(Pv3=x3hh@b1DtSPn@uN5M86&xWw&6h^`FHaLZ!m#zM(?sxReFR zSRc7Gde!3&KfX0L-TrYGW5eL|^D7^;)-&{rwXYYZwYx0TS7Ila?TEDEwd>?IZjHx82bKk(Unl0mlpT`9YR^wQJ^; zlh23Dyj%nsy%6q?sN227Jguw=T&2AF3xB%0peuCF^KC)jE?yO#52lr^b(ssL_T639 zA};-OFUZg5sW0NI;4rB7aP%+;pJsD4GVe1t9@j6)QAD@*6;bQS@Bc78Y5o2XZ1MWYkve zYFplh7vK^OzhYDQc#@?l?pj~4rUh9&_vwqnl)jZW!@09X1{HVeMY{?_U!5FoAAWCY zK1c}07#zwi2oPvtN8&4(kK!x`XrCE4`GYd;blXt5J)gZH=wy*89rN*B`ly*;c9sLx zC2P?zO`RO~)!~&pOloB>nzNBRzP$3!gK2FG&l0#qPbj0!nO>sPY)0(5av|O7aTM&k zTjP(NoFd1nU+l}NO(LsJ7;?}3d!kGI_xO5xfK3^sa`Uq8a>%Z z!$;Y?B!{PMK4bRq?3C>qEXhdB`)p`D-{<^kaugNRW!^!hvoO`~9s#WnBu! z+fttJAI<#SN%VG4;!?TKEo%AucJw%E1#jod3?Qpho!*4cW~*M)QI+-DO2=3JzKfB* z`=aHn942#o9i#m7>RrX>L8dQW?vCf#kCgQE#siGjtDipb@nx#tLOitGO=g+XwfjYo z;RVr4XUVBB9a9ay_)VEQ#Ye*@*YX&50FhZ~_1e80#hK!=s`T zS&-&9ikbDPgEGDn(;T-bDTtAHx~GS8E-(A%Gk#(w?u4SxHD6B;vsxqwT_mlCykpB% z)gPuom(eLmoSDqo#&g#h+IwVzMioCtfrU8n?3zr>Jj>?^(giVfzYF9<2K^wTtgDH{ z=dLcN1}Zr8k_!Z-Mts5Q=k^6FaQ0V6&We#109y|#ItbX4)_mjUcVej`It<`|&9>1O zY1EM&7p||_FmrXDleg#RfCMqEu(kvr6s)GWXFwC*OKTU?ST{ol_(! zIyxGuns|)3b4B*G*YVQ1>vHj3o3}t55BQ+8FJW2+P6GY6cFIfawbOmz|MC+s6ACeq+h$fEkNQiJpd~w~@ zg@DWu7IA(T!vM>7%w>6=d4J`DWOMQiy@qs|d2>)O6)pCOalJ>+CRLC%7ipucX8dzF zIs#yu=-Y$?IMH)!A(|p&m$IrZK(ojRC?# zI85AjsWe6FcJ4EOd<$Y;2qoMBKarwTqB5SIcV#|N9%B{k{Wui@g0txxB54Y1AN=kaq#5fFP$oVQV@<@5cjBWXDHYA2{Z=;_uNbkjO!N+fUS&@2+ z$8Rr=@_fvD1EY~xNzhR_zl1^1$_k44>@Lr!Bex?%!RGm8SEVd@KTCfF{oP23Nrg_1uUmlmBNhz-I^It-D#C7gCvf&F@am#ix#RvA2cy}m zs+!l~{%lWqY7iXdVZ2HO=Xh&Ukf6-Mo5`iAFnysn8bCP5k#f5W|>J#GYH>;Wn<2S3<-3r zdqwanNEAW|2lBC;E2cu1U!QIDYrT_bRou)>6?&0X5>7Y)oqEe8^W^N>gv`$zH8;#$ z9gfKSg!3fi%yuMC*ViiUsy}*#`bP-Mv%EKKe%BFc%egRNFMjsyoL=4+c=mX;$z|fYH6xFX7%=8-ey8P4mfE5=p^#STS?>Xc@M=Li*#PZ$Nx$!^?0@k%l4IXu!l*R1q; zcR4>syUIFO)o173k7V&~w5M%zmAdBs!~%(2gFPm#tEc_+>pyBeZsl%i=JL&OsOF!6 zF7)w+1{-J)HGgO4?L2rWoDr4FbS~UmJ^jO{;4^&y6xBVRnxJ)QF`I~OIWZOyGOXkV zB$4?GwA)fIb?#~j9o>T!UbSm{C)JS%NQmlrdM@?dY0O$De}^+|oq%w^xuKyU?`I>~ z?G}2a7`7h4$i+5Wf0qGH_n@o3kG9r6OS)sZ)N|>A|t7gfBkESG-iJl5JMrQxlw-6fq&_@tl zcl;lk)}=mhv-;9I^wA*pFD}h&&T}j^ZIJYoSI{~V;Bv}Tw7*$U#-T_G9LeM|Op?g0 z1HTzA#Ond#m&dUp@p+AnvIpNF`qT<4Lg4&JocS~1hM}Bp+N=jzHcO`2Gt6~;szC}* zq|p^?rI%(V_1K#^bQk=yn)~03ZtlY3aj{xj3#-a%YEfvWOVCGJZmu_cci!!GK>~?> z+~`3NGRqkor3}U>SSNzO=(pEIVfL^ugs`b@^3_YLLSG_BR~NK?Qtnt?pB;{5u|~ja z+{+zkI#|g?3_pGHCvc9FNX~(e{|8x470WntW@m0@GGA1y9!HLZMNtD6_vfMW@Gk zy3u5PcP?{H>XcQKT*$ePy3G~4XZ)9e!SRF~2)M!iS2F^)MdGb-t z!YjE5f$_%s9Zvz7_`szq7pC{g2kT~JuE|wrCL_GfeCZ@5uWK4)XTH*}FZOb%^d%mp z=Bm3Jo+}V@FTfh&rHLbO{K#m9wfntE*8xlz0+t(OA0>Hp$du{k=35i6J$;Tcc*VzL zwC@%_5;lz){HCe=1P;-m1m{b$f!lC$k6&M&`|huGs)PTU-VP}80#zfU@#POuEE1-5 zuB|!g>+9>uXOGP4`>yjG7;$+CpGcg1%8~VIcAhv{lt6dlZ(jy~iFzAPo{pkmPZ8QF zG{YCXHJg2?K>`D2wcdoIB|Q5r1%#cWBdd%LOn)y%S`^e7oG6L8_W^+Wq5BF9Y2Fcg z1AWxvJb<*s^&j)S9?~h}o|GbmC z%nHb4KxGO8#_eaW#-HLtyY%`?Cq{vQM-Ha-+2xU8^`SVCq$SjmBmf`E|3|7pISBU? zKu+RF@(EBJ{L1rvYrgzLq&I!PlY;V8)qql$v;Om2*8fka4i`G&gFuyU@IAOECN`-5 zu$kdm;!Ea(kHtncvO68Oj#Ji^1kD;xej*4kK>UvSkL*dG`8)nI^N{9^$$EQxduWOA zsPQREof&}iteBO?#>Py2*TvQ5EF?=R3~JM!|0A~ubDRe+6&iY`hbW}?G%zJOxjgdL zzk16I=~v+I78e&InT1SIFrI_WG#OvQ3WAWIk~14_M!L7*+W6F@mhmGQkt@C8IYJ7McBiA5$J5DC+pXkueD_ZPuV!DwB;EB-mT zzyc;KMiLyx*Z@KXZ8GjCcz=H%WSFQcA}>J1NlF2lR07nxmT-CxedF_>ilOw!slUEH za%Fxjje#;cj#sZQ$r0;jhBJPN|FQ zX#Bdf-lfR)T(a?MN8gj}cCaT7O8lV+;>l9I$2!UnS4}P^AwkP7`x>zC&{9*q0CS`{ zD1zTZFX(tNLIROUZk-j}ShlUcV`&N}5o&>+fqHK>`V5oUZuey+l)=PRdI?LyR+%p3_6G z3ES=LHCOEH?A9Ev2LobosjQt1Y*}n|a6EbHKqc{Td#>8v&fXsJdIyjK8irWj8ITsr z-A>d2L?o#b=MUq_)mn+ir9_{FuJ{xQ=iw*S%3Hbc09J_~eF@*|sk>vjdvX7H_DFaF8K{c5X_soc^ zXhNZ5w;6uOtd90t$LVK0UpC3V0x}J#4``sV0Nfnx?YjYK1_IIB^H&EZCW;*YRUU`T z$x0d4#;R6J3E0x|sz6+^aoxc1*&pB;eJ3ZNMmEA$KBUI0L#cI71JS0+ncha?tekc4 z=iD@(F8^Q-k3H-Vh)mSrh5racmR|^-XLYWYU!Q5}=vdHD^nynv2|xb^^sbR&BWtv* z7dYS`aL->Az5R?QuejLJ(Q#-4WP2t7!)(;TPwC}a)l-FDo z$o}I7;b^J!`v*WyAn6U)TE0C0J_Y(QKqI-sV9x?3>pf$xKhV}%8GLh&{vw<7l@`+Q z$sR&w&ht^0gZ2-@ zBxM{CvDDm2UI&@e?;RGQxQyImZ7UII^Mt8>9Pga=xa?ATQZ@Ljw{$8sIV`Rbd#xMVF0uF-R^7>T@vGeAdv!hgGWO;Nl z*OSV$157>lRrd9v z5OGI{I73UA@twv^Ep#VVWYsQhNS>;o{O`}*!$6wBp(BA&wd&K7c{&E^cC8Tku}ODw zE1IVCmI_+1xSW5-n%@14N4dUUJ$6Jmnq7{72abzBq#P}KPzOXwOQloN3MhOgX~I)r z!Uk}ET$7p5;a({`m9^NXh#`B@ge&Y?8|VpkCO7>(0k#Gwel){$FVgH}7JxM@pav`O zQyw5L<%oae*hOC|voElF-QV3(B<*Pf^6lvgEI7r^&Sq71Lox7^IT9I5osJ$e1yus% zHi0IfXPf#TEjYt*Gt7cGX=f^r?R=CqPLqaT%$qGh<3qx+NQ#OrAOJ5fFMm0!`0)q83hXB{R9(g2mP@Na(pwSD z`jzwa(@qTWFs3Uva{fE5T;-!W*dBD;LxmAluYO7VJZt|`|MqCsQGaK!$$4kCN$VKk z-w)O$zJ$TJ_Lcm{mr@HArCi)AfI1tyE}MSU!rs16aaNz2u&Y5FT%76!Wp*;+F@LJh zSM3?*+rqX3w-@eR&P~~8mxL|XPvf0D2IsV|_VH1I8oU1UlXQSx-*;vbl-*5WyZEEP z1)1K^;0G4j<7Aq!J{^7iL1ra`7w|=tHXaw;Q~!Mb`A4kWah4pYY1rlE`|j95G!cg$ z=LD-%=`{gqwl8hS2}j-Rf326e+(CLmnzZ*o5T&G=j3@G8E+}=S#&wyb%c?3TCgYtbEDLpeX=~k#-G%#_aGLz(7Yt9GtlM zfm79K>TA9Z`mj}q-;ic>cz7QO;HymBu6Vt>xPipR?D|rj{gnV_v)5V@x+2_ZrLPzG zK#vrEtE@0CV!c2C1RPZF4b;?o0q{uWH;)JhX!yyYixkayLz&lFU>zSiul#N*x(215 zh$Et1t zTqz4c7|2olUu;lPfB>M`BAv%%TC>_$H)K4E4LwKBWrkjc=a>WS9#9Y`^B*-Ti^K81 z$}IHuci&#*|DYJjly3!7QB&(79-9%n1-GHpu!FZ3Sqpro&~UV2zQ@v!Pk(&T2fhSI zGqiCh9smzGP}6}z-<=>pS^)qIU=mT}+mOKGi)#~gIwE-tF|xKQHGKBG`u{Rb zhGJHja|hJ~-NOw%Cvx^uhUMB`Y*kL9XExRl?T?ou%*k1CZ5)9%(00fRx4(`;p*CMHNsWg4!T@5t5?UusCb2Ow7Js0Sk}!VR;^T?;pG7|cNNSxL{+Wlt)7db9f0sZA zZEq4bHrG-(?lfrk4G-UY*%1q{1F%etdnDL}BakhSz?;N|Xs^0Lgq&o(BQc-5YNQ z@Khl?{G@CahLFz#^o|CX;GiM-p?KnQKus>?ks&Gze8gx=%IpJX8Yo?iB@lldQ-u+Q)_~CbU6g=<-D66zjPS#F?@@59g+pruU z*scX?P`N`+MaW{DPsPC!392s=^{H=@a%H+tN6)+3H^x@v5amury|7w3nWub|Aer~w zo<=~SJ5rR9OaeP_(Y{5ZN4ODB-#)1B>8Je1MvPJ^_?}IYfWlg<9 zwEPwj91g&FqycQSs%p0o{75ym93fD7UP4UlStw)iiz^RY=Sk@`VYW79Htg~(aFkxM zi^RUQMa}?fclxN;GnAIyiRee_cczJi1CakPxln2`Eh4CIR5;Jm$wM)$Qu{2^hoL1^ zI-q#~J~a3a7kpZj(mBjmpw83W98xMC$hNgB_CRLsl< zKiTF~P1yQGK67e@RHOezAE$gqC*6a1?XPrUBpSCbz+cd&3+axN3ZSsf9tobD^7&+_ zNWAy1y1E+pc}AgHgAk20>A#*TQgy;jQ3uF=iv)=Cf5JofG2yZCarmE<>DO~$y2hRC z#BFv!G|nydq>S2<`Gu0IUjQ#Cv461^$geh6{$~I~*02Wf&xO-h;=K03a0?V@sjP|^ z(h~tNAwe*@{|$nXohd9Lo#uyV?7z5d;N__%j(B$xMqY;gO-JB6GP0(}A^&fp;iiB} z;KDjbf9Lakmz(2CdZ2?}1Se{-H+6h$ESc3OZ?ewKdSw6!nh-Rg5IpjDSDO3hvfgr! zD{ZdCm#EP80w2=W@3-t$INITWWs|+4;%8+qCV<(g?VUl5lZi)V;;u9PAVfnB55o@T z2d}>$VIA}vocytmYfBI?+Wnfxst*rd$)ffqlWEJ>$=&@{0MWmzZ_yjA|FpD&w^nd- z@AZCbq^*XNj)r90#-4A3_G!Nn`3vdo6?Oo~+P!QDO8h%#s;Q~5?+L6NkI*Q%4{O}C@Iz^*NANbdPA#4K`pyG# zb#*muA5>bOC{ksvHk&-odvuIyx3RZRk@4M67Pps_lq`R2^8C9%Jbt*?Xf$IgOS^Eb z0rzrm{@z};#V$@}Rm4H67;4wFna-<$((&8&G8Ayfow=X@!f9;5<1uMs{qIn>-Jg#7 z$LJ-MsU`~M6Sd9m0_GR64^~R-g8FSeDH7JWq3oJ5jS|oiswIo%$K2dxti$M*`U>ao zme$_bgZ$i4a-cP>iM(X?>*Eb)Lq9)!xn*~GDjUttD0*+28TbyVoAWdhz6o78(W z2T}ToP_EPX>E37jQR!2BmG&1ftd*a+o6~4Boi30TtiiAWb5Szp9y?_x zSGQX(29z|@&uzOXQ*YbN!C)06y!AppG+F=Pi9-W&Tro^&E$dVGkcLpBJ?nf0d=)M9 zMY~Ta?#)Xnz0w%oY^Y=dMeFoOmt@gG(QP2cHdifQ%IE%OlBTRK~Wp%X&pmqS*8XN^gHOab>%U|db&d};`x3jISZGYdx zad2qJpmz`259G;TL8HDq8zK*0%>>;1>b0F&O;0K9Iv=((Cz{S%J_mt;3Y{QhQVR$P z90!6iHzVVD=LgORh;^0k?{Ab)Nkx+E7O9}CtrzJ><8-{c0zglf`h-R&&$E-s2tX3` zCX1_%@Sb6u@Iy=&I04j>Y`&_iHM9=MnXyV+k0WrP*K#O?&J5pU$f(9g3~-W2Jx;}% zd~W9mO_97ng8`HWs4SozDXY$HDnO+Nj`DVrS{gi#rv^1_^1&!C6UT`%rqufW#g%g- zh(b+qq~J^Q-6~))rr{XV{2^F8u^4Am$TX$JOYO`YQGZJ@Mz1LuDL1>#u9s>8oKIC6 zj1Y||djZC34W6!Wy=dyZd+A=;d8a!al^X`c4Yo}Rhu8bmK8e|WDACT}b13ls#bax0 zTXvT5AwIm2lPCx^yR|cvMykXDt3wuf$cfl4vmbgUadJ9 z7wBG(o~5;`s;=h!RiIZ`xo-V5j=t4FgqvvR%v8Zp^|;$Q7ys&^IMYZ$WmQ#Asuc8~ ze-8f6T=kay?Usho#D^UI|CDT z@!qoG{u-|cpS+@C?LNZ))e-}*)Ke_sw9i_0m!70Yjc22=*I_BVM~?ypbsgF^9?kMZ zj+#{S?$jufcChx6N5+^~Uzk7Dv zO-t;`m4~qDiee`~miq}VhraXJo5{z0S$Yj*b*#cfZnxM*|3};0U8qcC^soGY>G&(F zX=3GCxmI&rGQY5UgOoPQIXc5`JP$7D!?1vK!a`b(%~r3)E!CGX_ubY>?QQhKRXWO) zt`-l*aGRt&FF4ThH~v9r&x@e;+L(CIn&Vw0ddKH|A5CzyeLcwPry;&&{e@K#S(TNJ zt^In`MdsKUhNm)Ff?xgdsOV)&XTaKy>64o1g+7k; zF1$h1mWeGjJntp!9YBg6D*2%Qc?=NNIR#qv`dpGW+gDNtngQKui9677(p!Qkj@N}~ zvqfwqF1t1i@?^iz^zAG5bi8A}z5L{vI!s5u#5jL_=9Bh$luiW1yHE4Ud!spiJ9WjX zYiG6Jw^%T0lIgwgN?K23(>owP=~rUU?=iwbKig&MH+79$-{g|l8I(`u^{I+r`B0U> z=AowldZfU8Rd3&-J=)etLNV*f!Q(5uS=0Wym!PWtc+V=$l4g5ol)U1X_b$hcEmglI z+&^-wE?khxV^>jNnRst3FDpQRNFE8w&_py_!R$&tcLmVa>BXSJ)gAp!@OF$3|+ZVs2loKJsm!+&Ru`;pull zW1w>`4|d%OvrUBcg0MYRTSPOow@gfJ}e2GV%L48NRjdvqJ?1K07MPu3fUk-Woe zjsP@BkE0Q;_Tt96c`f*X>iP-wx_cJ&vX+mxTg;qQ2CGfO0q(Z?F{@-X=9V{7i&GqrmvBJ)-)43ET=*;&b_vbkzBB31G}u${ zJkPtuRwYwvVDQ@o33sJk(HkHN5F+AMXoar27hlfb9((>71EHv5)|ANe&8Yim`puz} zL&`<2C(M}B=DTC0*-<9*t)T!PF30w&T&t{#{ei4GK?}vy;8sBDSFb5BAF2GcO)N>r z`un>ZTf5;v98ON8W1!}Vj}whJi#=A+EqQHml`^6ts+oCd_|PS0`J&$jS0ha|B^TP+ z|Cm*{B8{rx-p0O9)?46g#i~F28ZI5!tj4|Q_G2y0=F%Nn$9#jocwJrKV8eF}BM3u5e1+TyK6~OEBt3TvYS` zRnx5TN|>a)dx-zgRY#oVh@K8)db=Xlz$a}Y8eXmEr-eIj}m0`iSiXN&kTV4>ITvk=GbKT z?`c%1@)H{;_CIx~I8}3w*O?iAZ@!G?kc?mGoRbh}FDX};J6R69792Xc&Er^q7GL4g zA;@S45SG4)zsozg*(^=`8#9c{Jy=Uu=KB3tTHmW3YEN>rqTCp1K3tq-R{UV}!%2?D zDfU{f9;^j*t3lgl;Kke~IJ3NT5{xcaBP}!^QQKban=ab+=D+JA%XfJYWU}Ku$RkW* zLyfK2{kL5TQ{F-OD#08|HHc zW~{|BMftD_o&LP5WJ%Gt7(DUmuZ84Qja_6eNUN-Y-+p9>V`EbrXE zkriYlj2L=yz0S9C?iZ}Zw0*7+*0OnS=-N_GN^Ur^&7UcqZrhR9r%SS-TV59&v5R9R zuB(#PeBHCHk@0Z2A@l9uc?H28txliyly979csn3(C6u3DI=aZoHF?^zCwYITn=lXGcp|OQNLXu3c9iOw!}ux z1s&Sesoz>}`M}MXXO%YZCGW`G!H(>2PM1z~ncf|s9OT6IuT?yc7?s5^EkTsl7`sa) zvmDWDs4i1F{_Mr`9@6U$yE#6_&K}vo{GgCUuXaZqIoP6Y!QflZarR?x3OO#S1?45j zC4c6&V53GLW8DXCUfo!k{>$}dV;+g)Jd|#wqk;F?=5l?3Ntn?ZG*uDCb6$M4_Ox|9 zD(!Ce;xoA~f<6OWWD&nUO%INzlHR&mOlXcZm>#iPZ;w`RD_22yH=N^FO5{Q%Z3@ivYDaOgJ&X4GhUz+n6Wz!M1s#g z{az%8M}={W)^5-TCI()7G9wN4fs1!+Y*x_fDU8Pkvx4A8f3(HV%f75Jr307IT)GQ+ z5n}o<#C)m3tCRr^gCA(=FbK=okUY@8O_m%iwHEd47Di>}m>zFD27f%PUi64=^ioI} zwrBrikb~#Sc3fs!v!cD_!DbeFZZ-alxuuHOAh?t`DoIL++gaSeng^cjSI8E}PbNz0Wiyv$y<4c z3BUiMMwjZ%smZV85KZ3?d6+JQaeWtE6ifJ>2vjllYSG%T))nN2U8j(;1~u|nw-|e> z-{ZKEf;r-Yrk9CjeR#Qz)Y&4hh-=kmav!4a_3H5}ONN;-sAMMPsA7V~3XoTFIm0)U z2c3p|#Ibr=d#a$t5;<(hbS*hCIzzWE+-uDlG)7}1SuhXWCF1dnzUz_n+P6#SP8_v_ zp+~ccoFy{xsx?!*^6e&VyldBYljD8eA`ewsKAm%AQF|^91SNLUaLV|r zNJpgsOOZ?ipu&NDrLV+P96!yyv+`jg?a{3YAcC$Sq0syk9b$?4guh6~058^Qu%GXx z7KRO;-wi}zS2am+*d{O!tx`e)9O#3-~7jvLYxKJdy?ocHb!ea`c_mOAuD4)%s+AubSQOzu;7anEgi44>}GOoCpAAr zLd3nwRcpPdW@p;WucHAR00ENMU+Wdno%Iig*Bwf5n{T(EG4mtUe(MH8?p*=1x@X!F z{cDwTBmP$DqAGj+{G@f|*|G>8+eye!wIK9D9)kxntoTLW<<@ka0!hV86BBK3+|&8n zP7%m)-)X%2Y-l!(@09qco}iXEoe8+mtL0c2Qpn2?BUp1*?-I^k!v5qhIMmKyZ~(+4 zuzOVAzUMTNr}TX?Cli;csrsvP=@Jk-Ad~<9jdY*dcYI~`&u?YSw z-)p8K!roav)dGnNl6!rlxwNyDxBFSIR*`BAFUGEOGy``x$0*BjL9KH|UK3ixe3`P3 zr`2Haq5y*FM_I69v0@O*lFojd8>7N_0eifmxK(@nDVa2g$sln#PW2IslhH{Rv!l(3 zsBIOHUZj2Jhn^RV|8Ud-fb#fzPEHQE$pU7ijgJ>Cs-V8*<7(2du=7zf)7{-Yd2V!} z`Og&{uZ7&@Beh+va2-i-gYb=-_bZLO?hJ%c)ssp6p|9l`u@IA}7DnlGRl2>RW0wmW zmi?(ik>#_x=JsAI%na*ek&69A12JZFr3Q6D`l+?Xt(|_YgIT$2b%?GJzA9>)$D)zO z0>%%ZZ%9(oMu^N9lTrVwSBOl;H$Gp11Hw>{wifb8ZP2==Q$}j#A2_;Tt)gq!>fqT@ zYKqMJntuf76}uXMNIf!xAuk^@w83*=%!BlcCB6{|$DxObY#0U1Os3xFaHab;HTnq( zkBbeR_WNZ34~jXOjQ!|OzPAf>T7#HE6kC7j6K6>qYd=(WUalrp#)v?q{CoRL4($TP z3K(Q%oP-JE!6HHQt48}!@G9lgaV9i+tbi~HF2*o!0o>uk*uNTa5la$&jY}Acal|Ls z+2Y{pIr$}|BWu6QxE^YQQ+{o_t@d{1`jpJsdBN}Y$^~hB%>AQ3dZJLdbDbbyhjdZ1xXdPG=n4W&v7Yobq zm|X93)Sfq4PhR6q%rmhR&o{Eo(w0Js6mH}jMyne<(pQySV9r(zDZg23r&}lH($mX0 z%`C+-7+RidP~y=#e1YCl%U|~m)hA?hlYV+J8)U1ci5v=(gE5DsUrVdk#hMHDY z!GqvyAL^O+8$Zi@0Ze9jK?M$(D4qD`-bD3byb!>MmIHPgiaK)Xc?@-^`b?(y@dtTw zgY?-n?tMPyloeZ<+RI*=HySz49l(B>R6sl)#BipWsq7|%>)7$~hC~~&?Ly{VugvR9 ze5;xQJ;|zphaR)?NCj3&iS7bMvMH09LCb#RvIP4@ifz??d;OAHJuX3L#w_$HD-^W2 zBkHj53%?lZ3e*q232MFZe^gMDIkMg5`zTdAVt+92V*EtG08u||)Nu!q+M>hsM~F6) zx;$IE@V)TF<4 z6$sWC(($QgX6OsZ+#1y{l`%6v4K;30^lv()U{b z)H{rd;;@<;yY4d1+<5r%j2~r-!}g@C{5kQY&4Vp z?`zK){2EtpWQ}YBBZ@kj$kO_7`hmwGpee3+`Rj`721l$G^Icc)5uf)U4GaI`u2sUc@l{<0HD&y2yd zB+lF%r7!XtSYLrQJ-|~KbxSFlySm;$2*38o&8^}Qse-Y<&3@_SKAX87-_)`=Ia1gNQ9aWOwoN0 zt0%>>3PYxITM*X#fEOcT9@tHhk+M=iUI5zh!TNZvBc}|&CZHAPJ!5IRIo0s-j@lTo zoT#rDs_g*-_GAcfKI=#uRXg*g=8#Z zsC5J)cbL_f(|#HgxaJ6UV?&6d1;*Q;tr;hRcdzj58DI>z|FbU(2bbNd-Cu!AO~8;) zu9Hk086Flis(w1|(hFEzDgTp0lII(DaA@1gM+uC;sUSi?59A1aUq49lh;cLl0So#9 z`H+5YcXx^zQv;-NeJC{d3gD-e9Kd^3Fih~`qe;HuRV?;oni+UG-TDWCQ>&@QW8Dx}bJ5>W{vr@S zJmWUN8xsJTxE@5(8aHVQ3eR{R?(J~>URl8ho~8oUj#XI<``N|uWUi6H!Ot?j`s08n zDkv^az3=kk#XWxjG(n%lZ`Nr1(b3Wzgg;Q+Ji#E^c1O&3ViOXW7Idh z3TYr@{eay`~8^kb>Hi3tn@nm)m zs0VQZ4ONzQl9^6B=t_M@+V-?4_0hUuLUUQQ7|q=(XP53U5)4T_9; z-qljZkyPf-4?e=9N&ZX@kT}kJfwTt9DgT4H_l}Bc>-Gf^MFhlvAPN!`L4tsRpac=6 zh>|IyL?tK5l0ifTR1`^q1Ph8(r)UoUlcaf0O*T_k{v-Z6e+NqiVc@n6vs@ zzUI>YZxgKmNnQIbFNxp(wj>z`|4TBK|FZd2Vp$rRJiLnkZsC`}qc2+0USmRakE^ds}MJY)xB7HpIm>X&~sRPO=D7NMgJ{k$b? zJ1D?pX=k_F>QAaMyvcmGwHL z+`hX%eQ!N%JVBqRm39^G0m8&Q!qq+QvlIZ_zqu80`JFhoVO1Y_-06Wk&pPl-E2|#2 z{JFJOkcS#QFbnj_JuONgH|@?NT%Dq2V80L8TruD(fj9z(LSS(dNO-oXh0BQE2i%qx z-W`E6w)?GmTOn?9c)iMPrkg8JD>}z_XO>O+WxI`f4edsHYW(IGiS4^geFLD<>kq^f zK>hsq&qNfjPoQe!l%`E9Ue6z#eM$A0gJ32lN5UY0x)jGL-2A+y%q8Du1uV`R_R@TX~)4@{8AAJKc;zD?5 z_TIC4smck*ZhhMO2^+7hbU^9roAY;R177cq(N{NS@6BB&veqq4@cZfdp*5zN|H_VNJ z3Gl$!j#!3$pT+cWlz`62OYDTs$}czHbvKmZ*>;<4gc$#fnz4{LZB997O=^cVf&|8J zZ?g{(W5H(9C`Y71NT#$3Li3%_y=4i6Rw*SaB0{?dthrZEnnh+Ss21D=VVK1B7m1P_ zRGK%4*H-{H-T_X1*7z;0&GQF~^ooNo?p~AWXgf!8ymAzg3*7cac+0w)l<-PrUNK;a zV4sF)gt&mX_q!5w03bT~Ww<+GIFv&t3xQ{d`~ZlK!wbDXe3UgQA}w_`4|sO+-r_;v zmG{gI4p%OMHO^o&WUN_hM&AzIYFR>*MysVi! zG|CzknWjsG)Qs*UMg)!(!tvf~8QE?D-VN`|qyjLd+6Ip8uR4C8w|m`wH5~hdymmw2 zCgLI^NSWZTg-$*|)@yIgey>-lRA&=R4XVIEY_JAiVUM(%ki{9W8bVS7p050W2yxK(!xly?AZ`vPsSztXeV)#-ONe7TXmoe>rZA1}Ob zHNs;R1+L}N_b-5k7To>BdSYK=F~tuQKXiwD4Y1gW^aozHbnYyYTKs@CnUW=k%Gn-! z8~gZYoZIDQ$h>%udfeH6s+IYJWa>s_x$3v{ykC&Lz0|LGV@+L0)n}Qbuc9 zSK=pdn*Y-$_yd#g^WL1F;^I#64y4zFjt+;dHCx5Y)vHkA(IzaufE8jB@L!;$qY^rlXJtBNW`*g+fx98k!m0yJ_r>*y{+U=qxNAf$PYAh zT(a4XunR!4`F=hezT#Nu?o_CO?~cp2en^x9UfK>8PQ#UAqOPtEuK`F=yI&KwgUZjH zx%eN#=!`Dc8@N5Um!3-$s@r+w{E6rI9kVsCeE#k;Am$20FS&VQKUtWixyNkX!UjUftb@1pi-!r*gR;b3hyLSut;r)<^7FX}sqA=<) ze|SofjRU0rL9}BGfrpnqLOIF{u2G2n!nC3J8SW5QfazRkxLpSqHt#3cxOWkT}iP4qvU-3SgU zlEdl$iJc4onS_Ly`#-3#_W$JnS8vvKYv@i00<9D255$SALYQoMeHu1;Eol0n-|%k! zxEFUmU@c0h%Cm={fg(hxHWd3f zah=Sv41SbyHME}ahKXSGsPTxXLhQBi9li0lQ{Xl~7%>k&(Wo6MPm!M(a|jF(eSo$L zdn`WyU9OfGWHP2eo=NNc6ApsB zNh0vCkAo#VJKWtY*Ug&2DD5=g{i)Nm0=BW&Oq<|l1-e2?LCj~{f&2;32lrGakY^K1VKpEq-zrGy zBTz1B8B6BV5L<)0ZVh}lztuVCuLZ? zlP~M6X`E|WhjWCcbYZD(9PAlV?z$73pf@v!R@Aj)SB)?(S^4aC1K9n`oJw8Q3*X(69EhL-Zq8^M0d#`!Gk>+j-pTf_WcVJN2Qe}#;NsGxy=jF@j5U&yCr*`T{bJ4E`S_m5a z#cGKU_(94GquV4nt3~A^{lvJ=-n5Te?n4Or_Aa z!TYvBkAyaL&uj~f4+LEb-AsN2VcJrjG(pN@e|jcA`RhYl+bpWlU`w4IuGlY^4xP9ACxM9nX)0njbVTh!gF4q%U9JT_MnkMcvVDE!gSYi%^LK z=2IjP8R!*@+lZUsa}h2lBo~C?RW6mr%=4$2Qn5S>F58aJE+cK2yg^&v4MIOTkr-?=Ut@=07B4 zM?*0I`ZM+A+1Xja>PqO&1ya?4(RXx>WOO=DqA(P;>gruJ0pzxwjOKT*66Qmc2Tm5>Nj8enXAyO^fwMbU z6jYr5)93xQ))}G=G2yCA&Gx2pDs!$neBr@XTarj&oOXlh?P=~iC{N++FlV0N>qykD z0o|?!zc2RFF8Rll7rV3;;1m+WkbYhtxOl&%g;CvHzIxkonWduNd0NJtA3>BXO`tel z`&*jH9Wq+XTzWL*INj{>%MXWrt3$8nn$%H-B!_kH}5SazfKqIBbuxiZHQv%Q{P`& z#ob+be+!1|?!U&NQW}u#cqVbmNxjzSUtdb!+7Q1kQKx@#x3(&!t8#Vzpo32S{Nt2M zF>{taQ_5U%tOwUh{a}Mxiz@<>NpLyE z1K<*S|4$cc`BGlJ;vZUN=*FhV{R`>eDiWibF7O?Aj3CuKbpYH@`gW**7$)UhS%QRY z+nplgI$Hg-3d_%Dw*`!Dt3t!s4)Si6#<6qaR@-C>_@HxKY41o)`2g-K3dY{8> zB`+=Y22@T$f%K8qg`R722+B=ruLrGspnkeg;k3`F_W8i5;^3gOtuZvktIX= z!<3qo524Et(^wi1BZIVT3)EZI!Gc}Les~CiT!+-R?8+_lVrM9=%|L!#!gbNpYEIl_ zu~R$dlB(k|cy>)n0hC57F9k~NyS%@ehS~jLxV|-4PCB5lP4D$LwE`*AEmOB1myZ3j zMjcZ64fB1J=c29>ij*&K9&Yg$G>rp)W1hD&ULdmIPHLSw40c!zyKQ$s-MGv+2@j`N z=A0g43pvGF&WRrwF0;K}mYa@JXk)GPw;QKiwu}Pzl&bJ9QVq7n3UJ&+O>Y*Wk21+6 zGpjtyx;ncC$&ikc^A#dVVOHT>Hxzg-5kx7|&T7Rt`~{-vy6?Wr066|Uf67r9lfn_n zeK-=1Tj?L6&2aAnsTO32DM0`LWuNYjo!8?kxxcx42dQa7s~lhxfRcBh?XKB#_&Zmo zUa<;Q)0vsBtaR~;~xrX734{PRrVe+#Fc{~OZ^bR=?U3y~O4;+Nq7 zT5lf%u8qI$5gM;R84kZ~bVdFv$!(Xv&>G4A-XRD=Dq56K8M%XD50Osg3Rx?kXUR(t zPo_%jOe6jX`we;$55x__!fvR&T}AII*)CXp6ogPA*<)7mFayYq*w~SFLHS};IV9=G z41n_)00$sn)6YN{%y8h)u7k7=oPIXc$Y}5RL+3VJ|3hkex+R!|;iXT2_`v#f+U7q- zO;avlw2=tPB#`n9$loTT-9V}WzSkcBQUKc(=Bp;P0A4{?!bQp*@yUmuJ_5xj^f{?C z1OM45D`f{t)xf=gRPjd}sG0z9k>BP12#FooBOL?(dr;%UpGy$<5tkN-Biu`D;C*G& zp9={-IGnSIYH@c!<_}VM#5xkZiKU!201Pf8iD^@gzEV>~yyCU71ZG7rK4E|>9fwmd z1jB_+hd6X}YJ!gknDzu;r-BYQV2rQ{z{(v>gSabzcyv667GM#na(UeYD~RDkQ)q}} zjWdM1Jg}VGFQG?+F2!qCdKBdg0D*?;0ko_PeRo#rp=S;Kq=ECus(wmDEQS!!3htdQ zI&~xcF#U5kJyy~tn`6EM)X6Iv{uA=(Hi^9oj_*~5AnUjLoTD+8bEQ9u-Z2NU`T}DG zeLa8y(>)*k`LRDF!k8*?CL<@O7)_E;t#$<-Xl_b8I2YWVTL@%Gj zva%miD=RC(1nXA+V#U&DDtOUqx9Dy=ZGq2^yt)NJ5NRK(tJPx@OL|f@czRE{o60oZWMG2+&n>eza>GBt2UI(6uTFP7CHBh3pk#{vIe4_G)GdH17< z(HkS|XaRVXK?llys6^Fi`t|E$Oo$0J(ASU!6aG_dC;-z-qB+KezH2pt(h~`~&>$WZ zhyDX-$pzjkZ$r;;8jO4I<LS*Cd%}zygr&OqTW# zdt2k)1oEQ1!AXL5ALITsS}R{;4v0t3#hZPM_7&f6Jx|z5IEH%X6^C|k+zT4I$Jq^X*_`nWvG^3~bv^;xuy5Yu2rM0x@INgSNI zm5BhP-~C7K9mn*YE&aR5Gkr<~>FWYG1M=>KpRYFE_mK)9g4dBYfMxijDhJ3QKDxSI z{RJmBVC35VCD-V8pGzB(4zpdj1llx7!ywl0+svKJ8?hcQKDrO{A_ok*_7L4F&eExm z0>ms~tu(TBC}tc-cMMY5!VG{wFR{~3VV7>E~zgx+2}jDkSgO2Q({ zXBa0eO5V&%B*U{kv8g840F#TO&dZ8kZ;DqxKCCp^KJCq3=3%Sc83ux0J}^wp8_JCC zd0-KinVye~n~}IDT)-!I2TTx|CoiQ~Kwl>P^TJ>eF3oc~DVZG7b&{jd2Tha*@+QcP zad~-H2{{ZxN~TyN66pR^ZE)ObBy6hW8#vs~q@DV_QY3<_2~v9x69l%VYDRUqqG2WB zgK3?hzmU~IzR5Z54;-WYz?PAev}6&RSTo+g8B^u3@5NUKd>Kdw#)S~qpzR)R2zVqzGW=<7 z&E>i{oYn8V2JusE9Ex9jfg`Y&;&h>7iC@g?=m(*+pl(l*d>PEukiI0OlAV(?lK0?w zMBQOqz?U>$=@?CDy7$(Au#+rEw@w#R)4u{Ft>6KZXow>KKM)_O+?7U|L?r!~Zr+HH zfWlVLx_A8bjZnObxnDb&??dZAB^Sq!XQYrcmt$PTNS=rg)m;9A*7fNKT?B%m*XNhdwugQA3=D|L) zL^O>E4T2IvvKS19YA4-_usQx@FkakmY%u;SZwY%UyAjXZDpw?S#X&L86H<#lqa8d8Cn4oH;erT1~!-{gv7M^ zF$E?L!PeNw_m`(CpJ*TDd(NHXp%J1Uk+VCnpds=z;s_15$2jUwVMDJHSKESF=@Wu$ zpmMOO!Pj(;EDN7WCp{b0wH3;=rzCSxkN4RVOHh>3_;@0_&cLyA22Adw87C$mp~zkDhE5Wm|V-3Y2Q`{ zGu5Gz?~9ge02Dj1rU|alLT`{FSAMdd!H^90%$6Bc%un2BJJ=$WRjr-I`P z@Gy(1ie{z7U`u!6InE6B&MEvL5$0Y0QOFkKZ}ISfKkBaeMAxr#xi!JhZV2Vy1UEoO zyDrbVl=ClW97n#LpwnTqeD%Xc>VUv)Ee_i}R$1qfDsM{5pt6stNHLn#DUc!tschJz zBzE)*nj)R2yWDq}I$S@T?db$`Ml(~}csWf8OqMGY;6`T=&zBrDY}wJU;$*{#@Q z<9=D+`yoax=MwZQ>5b-3p_M{3U6i}v%?KsIoO!8o#gQj|h9^*CO}I_1>~6>K-x$x2 zLYY!75fhRRtUYg=OlKTfcsrvaXms5j1<9ce0dMCAqxjayzN_TB2?_c1>y%;$b3s zw&guMSX`vN!c$4&%rA`AyOq226`S-$lq6|pcC|eS@BR2RmMA^%@kiJr&~=gGGLSrc zXWNFki>0yZ3q?bvjuXMpJnZ?aMoiiWaj1VNQvv;1psK9!7=?w= zc)hFS2NQKkMm=k>kE*B+&xqyQDr{zSDs_cNOEg|S+p>GXuc?irj-5GokK=brGOKgZqfb5wYEj8>THv8?=hU@Zo|*2 z+qvkuI2G({N$}6u$wOK@i3+}$y*FBqw6fh4QN6Aot|FvHE1YYS^w;b>t^~UqdhX@a z9G4D6$q@q~XW2ZZP-LK==D}G;AA`4~ogMz7Jf((Ci$`1O@toAhTF)~N;P<-I#J8^U zC^ThI$L&OePhK|7T$P@v9PLn8fswR(FBdu;|Kr1!49$ABx{nJP`llP0ACx)U{?yqnrMy;^4!Zt)E~|iCaxMKHWzfbv2*P!@-CNL+ zp!lEfdQj7SXU(Y1%r10Zg5mFbp6*jL{X{o35?T9>#@xWaM|MSv;6TQapIV;OCn=oQ zhfB6CroR9YKoSXiB=D zz&02t-Kr~f3D_v{L&-#5*1_2J#CsM?y*q>&J1lHxLDw)E`f{}|c#@~-Wms1>sl^Kb zwUVbTI{G+Hyr=x@nt8f7|C>)J}e3xV<(6 z9$cfFX-j_d`0MfEa(Paa7N@Tspae$u&g#LgFSP8sAGBTeYeGmDrKdqB!Z==A9kgaw zy-7aNk}cmIMmupm`;o04Ndn6!ihsS_132pHmMK|PEyIta#xH*-s%Osxi$s>l?=+9c zQ-?h|;P`Fob*<|3i>z9#lL3Xq`MOgYfJCvee8_j!$E~#;K2PV{@y_Herx)JP!^yxu zM4kyz&<=Fr4ai+WZOFWU>||&Bjo;{8>TJp7XhE9>ve)nUtmsHoT7bcM8`5+KPm1D` zUm(#aI2Hf+it%=oZxWmMeXjQVcL*`FR-f(pw<#}U{cb)Wb4WS`^0D72a2qC{BpGFQ9BXZpJF${JQuk?(&~TQw#^&b3=*-DXd(b{Sm14!)5$(G zt6gDG#v9g4yNdV0z#976K<`jJDBGuYApt+HRf6a7G77NX8JffovwGc&;{4ge%EIT??S$oqTWPD$&QY{sww(actRUOwyF=|e=}liQ^A z4rQ;u{nGh<*W6JLIftvd`??FiDh$2-RyHzOjE-(27gAnq;GO!@LXK zl;zFbQ<4{lkC5_GmwIrcCz{yH`Z9R&mfwu|n4Y>?=j@29o<5br_C-+|9(FWBGn%8^h8+X?H`M$QepOiQsftv!O zZMBs$E}xnmTh(opvit}42vzo?Pd+=*Qfn`ZI>FO?qh_1bs(h*^S>d?;C;Pvr=5|E> z+xO2HJl^)Iq$ef)fbI%Xlr?@e)48NjZHs`yi?Xw(p3sNHzksn{4srP`U7bY>^wf}P z=y&qoxpCDyEzMM3MdiNQ;w)?^?c}pfbn6O!@Uk| z$p;}PF}%Jp@Z90o0k7ky0p44)pE7YJhoR;N4i?ql=>Y3|y~4 z7Ep?gFSxsYJWE4i5TDSfSugMr&0$-Zd;_gorfKY~SzgA4s^&`}0MhFW0Y9*N0E9H- zkplWI%hAfF5CV$_T-fk-#2CW!H23~<%0b*_6FS0!#3OF%Qg@}}(2q@Ba@IqvDU%B4 zE)~%QnK;?kZJkw*;5Li(;ncEv&;2C9{FMp%r$`z{IFme{P|N$G^ofPuycB)LF|>g` z4xeRBcekTb#j(tLjn2gM%ij6y+sH1VfN?eIS=@dm>N{!4YgO-Ga~AJ5_EVSGYAu&s zY7N!#Et=PQl7A7euklEsmF!gAXv*C+;)6Y^B?leH#kjPu(~lQ2-v15F+oXr*qNFq^ z%N2c&pK2e#NFz}h`(b=oDlij=i@k3Cnyia`#$KPd&Lylh^;*g|LHZ(M6N@%#V&t-x zeNg;GSsqPyEyMGk;*RrI8VgDer>LXWIqe?%n2i-=T#fjwn@D7GlhJVPc{U>@7yfy8 zJvl8IG1>Ws1tOc8R-xGV^H*`(f9Sa`K9Ih(s`zRr{53FI$EAOl{w>OiDv*e=KvRA{q5Zhz;MW4rSA8 zv_wheOd&Ztm96XM@Lqf8#$9vBI>1=IP@RFgxoTZ`R6uhB`r+;>W=*p3`|M81BE5B9!@Y1++BAmoDVc)^!wBc`-S&%S0d&;VbXgbrrfP4A@CfBT zO1}|P$x}fZ`WvJMN#9d2oi{iL{1neL*IHvuRDuLHRgG;6FKW6lv`l4MeDS#{(faaP zE<-Z6E}1$w2H6DDC}`-5O`f7ohUBOph7G9D|8!Ns8&2u$s3AJSC2}vbM9g;)m_Ue$UviT zHkq$?i|rm6U+|R932KV3W<5jOF3z@$3%bZGBB71>kGtq`yTD+tcEj*I7tK-4C04S4 z3YZls8?b?4$vSt!1IK;%!;oj{*I2V#rRrT)LKgNHGM;-M`Mh_DlxXzMs_3T;3rRaN z!GxKUarV&SJp6J>rt(@r8Qj;PUJdpMGfF)3;axMv(+%8d5iq@Bn*4+&<{ifb{J#Fs!UBEZTAX(No{ph{#ZKF{A&b47vUO}lg68`xLDk)$2_Z}FYLgI`icrU8u1Vdjz*54h}S zD&&WhSuJ6*r0 zNm-V`vX7Pm(q@5mgn`?CwOEPQ{^FJR($brHhtvE>XT#>k8i6tv4;^e^nuAzB59S!l zgck$KV1eJRXSAQvr4o{@@^0_rAv<0V6K4%Qrm@g}F+)6^N&JG5kucCoglPp6Hg)^s zU}OaTfFEGPsRQ=_?}62V7W2-Oj6@808{-3X@(ALOMn8c#0inhN2N;=94HnbI-<$?6 z>z4wz>jwgq%>!yOQsJ(iig4yZ^)X1!f;=IlEor3l+|yv*z|LQ>1p4=Aw-Ijyn_TeT zdR*@V=JQ~y+ONgCvJOVfz}AhvpmElv)?ACu^j^_2%xrJ=Hobe++QK5Y=k(T`ACnuc z@`tlnKqfi9RdD_U9jOD>>HAI$7)$%UPy2eqQtw*Ym5;z{26p8z4btDs&jBD6^aE=+ za*(vZfDCLfLb25P35rWFr6@{67RBf`GOqzFTK!X+Vmi>W{w{KWE`lLE%ucC=0ZfjN zh|Z}n1EK%=Z|GB&nvyb6aD2k!NMfWTCo|3}UgifccHuHHAujKk^wc5r>5r4ecM4UpM54>n1ko?;e_HQ;)2-K^mtl3YY`-{)#CyW; z<3-9Qf{5O;2b9LXdS?x|)ySlawmU>1;oRIYCCzhBiLDyUzMxSCRYb>Iz*2WW6NKgl ziJ(sKwJBe7lohJi0X`1sUyaDi7 z{)UNo0{v_5h?EqLZ`;5<1#@O>X<=NE82Is2_o$QGh;XnqHReJ46nG83b>t zH8s#tqscI*(;;*FF8IY4xc$I{Pa5NKj9BKFNh7mMmFEV)@KrCxX&Z%Ums_KZHf2e=NDN-*eby7Xr}quMo?eE|6U zl!hI%9^Bjh9B8I5#(Z=$5bqNUf1iO(bY@aXw_Z=632%%Oym} z3L(Wpa~q~NA`u;ewX6L8XRF`rcvuAcj}SVpe~dcmSKVr<5Uxz-TK(84u8kCXjS{0Sf|6ThB9-uD9?|7JcJp&AaBc zi1GOrTB0t=y@bZ4$ocoAB0AI6Y47Yu(|R9^M*vpCOHtl#Po%PU{QV>3(r==I?ASj% zsHH~_u&l9^lOCW_7?SvU{8p6@XtV%7m4JP;7P=GQo-%Ki_n1TJ!?N`6q*-8ZlYRZ{4k@tB$gSMKpt-4?J?g8C+Mb?UFp<-==4EG5j#-Ir zjIh0dYqr$YL+@3ur;R7jmo25FVLm**Hd6WYq7t|OA#eYHkVCvfqJ8i2Shfh(-Z^1tQU|ISYTlDv`z7cbN#SavQ4+ zf}8@*$0fqL^OkF-Ua``?aoTxoj6QepC1O3EZm z3LQK)c-wGx_zLc)w?dA@XUWKI^HfLp5|$Pg(U1;6)>m*hAa*aNAD-48VieFFML-0B zA9)||OnQ8htlP1_FWouFw~Hm(N6z`vO(2{BdB#Q&K-sU5+#>xOSH5)59WP+jij2J6p`G+97nldu<^CIjB_0M55zlvLs+n_@wwCRNUMHRv z%iNakr2n#_^kXhWil>98EghvMAUBnRnE)!7A>Kv@-xW3X{OYY=Mj9JO+{zQ?h690# z5ev*egx~J{*kktXw44|eR52iDg+dPGDesu%<=sekE?B&e{KCBE0$%Mb_qq&;t$sjY zK8zj&>08zy|NW9H$VzmjKvMRV^rBcU<)ZPOI0I%0espK#;i-Tj1U1Sa`=PLUOg*I9 z`GiDS&+jYiOM$K=aw|WGRZMVFga6|*@9>aKd#z<}7{3e^J41KtGjZWkxtlRe739Ep zEwXCai(eCeX$~+WpzK^8o~%o(EZLM~yj_m{U#b>rX4e8NH*tisC6L%$x9m&?F~h?x z_P>5JnxHpMr7}OB`PnmCB{iy{O(CKXdtj5*4RKwu+TG|BfoYjfYLgC#7Y>xtkmWuv z{kNlf4e%j=dpP_Vm!tYLSd%d04o5fhWYA|A2yX|Ug}VC=nm;f*IWhe68PviPoweR< zecZ>?eIJLLT1uBIRBr_sq$DNX4Gl0j14iH)cEnM%aroJ|q6)>o#w)JeCu-A8xDytf ztU)cq<>4{_IUc|Yz`I$!Fn-#EMy|N1h%33ADFeNJpreF2lHbs-j>3@>CC5`yZYr-Y zH+u)ytiaAhH~$Mp!94~MhX~dN0-R>21|EbmkPaZFi{5mGbMVN_cWD00 z-#Jj2m05=QL-4^L)cn#E0RCsSMFLz_3a$~yVut916*QtOZeXrN25+T=8hQeSe*F}6 zS{aO1lAj)G`2reCea}|g$lwP1GfmO10Ak`Y@I;WDaH8}v-5`s&9DTpaYk*ra)eMHW zsr^))Z{k8;RlAf1z*NR)a zLLb?2J4mDlz#A&$xHQ<#TX6V&EPF`x=j=A-yJ!^N5c9aKZ(0Y}E*YoR$)lOsE}k#n zd(!2ZrnGwZqD#iq*}}oJ+_zKg_l`%AsUJoJTEp0t@;E8_a2`O-*HYN(87f|H30?v6 zQ|+BkkTlT6F393pxMmJzDs9)N+eZ0g$Xj&7_4NcCPuTMKO&DS|HG;2*{tSwBX206d zbEY7;C!`T72HG3NCOawE$Rxf-HI1K{VlM=l_oQcE807Fq>%RDve#VjIp6A%MQsUGB z)uRqFw1wF#x!fIwe=aMbGd*`4E3?s_FgXG0hRimt(G>+hUp5Wwng=gRaPIkfc^pu( zw2N6Y$SXOuHwuB%oo>>zQLy6~Zj6Fr5M_Hwga;>V{mwz7_xZSw&_~WeU8R(hJlw^Hfy}R>#kb}$+JJYN z)m+tC`wWu{T*SXa&RoJ+w=?%MC-Z^Y)0pG4ruEtRy9#d!As<|x%p@uF5&L}Q-k?`+ zQF_hwU$spDtAm`o48KcvWxYSR+-<^#X&x4+=hb&(kx-(Oe8BNa(?x~&&SMY8LN#I+ z5Dr#7byF7JCE}T4whxUQ?h9I0AKU1n`9*zQEj*1};(3^?u4Sn@gKwJ9_Mn3LHXlX$ zI9~!74Ct47T!c`Mf1%~Om{)cm z@I7m^K?Z$A`rVi71dj^x+FF~LM&VSa!=PC*$PRrIwDJ1lh<$4JjKGF^;UL<$2ozYMz3o4Gbt84+lMb#42GHs z%FC`M>E#@F#Ss51iH+fCdT=HUX|D#YIetXv2bagi05R(?t4CcgMm~Pp<^7tN%Id=!8ZQPf7G)0@qicr<*R zD?UqOVyi%RxAp$$gfHAD3juVy4`?K=QB3m*ypRcv*Nuxe?THwCW+hroB^az28ek;~ z@=VOBT#;qbL$Dx zjp8?7X0&C7aum5XWYauaP?INb3YfMgEw&Qk4dNK+_6V!&j(Xj{54qtvqfOL_o4hJ6xcL&}Lv!`%$pb#-il6P% zP_J$#o`K^Mbb7+PS;Axj&5;$`qp!}S*w!}P0L{L9x}Cz|L?zow{3 z|E6@|S-z*%{Uc5NTh;*yC6^a7K~O)Mr3O!-P+0uiV%6=Yds^>$yS4bQxN@r=_c?Y- zE+jZdzEMf4g;jA`k0vFoJX3V4`Vlv-Dc42C;T&f!Xej-2R2^S(Df?GZB{i*bRL}e z9Ab7qqi5*q8&J&z!z?bL_*%BJ;{$DvvTNCfu(vKHO7=hs<%sLhhrM`-!Inqg)2)@_ znu>esPkdc9Q9AA!$2h1Dr^iyc?sZ(ZDC($`&IhugDXWj-%UF{;6Z&b6II%6A`S1%` zEMfCQ{2dgvE|~eDFa|1n-lh?u-A2hj%d?u~E=}U<{)s3T1}9a)!{JVQl95tfVYLbw zILadBBDL8i-sn@|cgEQKSJFU@XezCU2{VouF|6CZQAeuhFlMD(edthe|3#~kG(v|{ z>Q}D?^D3ILArYUzL&cvKGoN_;t~SH^DC-ohzP+t#hyH|#Z&2nudD+gNqtX0wcJOFe zqFjlHoWSJm2{89RJ;Bn!&Yd%&k@*(KJw~+yn`gpRG6I;G-rs!1-;I`1C$s1$of*15 z-H@WBNyrD%ThTo|$(LN*5)v3Tp+iSE`IlvkY65-g$EaMSAg0;clGDR@*Ndxv95VX4 z>Z3c!JE4)Np~dX!P|}XxDymHb>(~Y_Mh|>L6t{2NEnRy=E z*RGb|DFFSa6(QzPZ(pA^>5tR30cx^dQrs+b8$pxO1_GI#Trg~qp1!NnCrD_U>PNIo ztpVxSr+U7;V3*5v7&{rd8^99odA9H7c7An5$A+RzGbbRzE9Fy;Flr&*;adhz+(L*! zh^otGX3p?&!Y9>a0I-Km!OSIz;=U%e*XSjEm`nixF#cZWH zKf)|jci(Q@VN#uialjg0AC+`?O}Bbv9`xDZ^gus1^2@O8qR+P1v`pVd+rtyFnDPI_inpo0JV+imqvW{QYUNPo#&&nq}D) zQO*^>4&w;ISf>4)NDa%!CEwspOi)p?EOQ@e1;;&|QoK2qUG5lv|d2Mr>Ijf`w%ZJB)k!nWu zoOyv$l?jf~ggxbc$h_xMw-BVQX#q1d^LiwbTo-S3VpaVUEbPWB^VLQTs-+lr109-0 zO!yBt7$uPeJuikJ#fCTprF3c?Tw%~!VJh}>%wAe>I{n)2l{C|W8|Ah~!Q6C??H0Cc zK3c-p2Z}O2jntpjeN2rlS!1frrQ)FpDi@-a$cpO^{d+4JUMhVxK;K|51G)qn-X;ke z!!))g5C!Xhkw3tF@~GQbLtB)O^Q*mkr|ZlT99DB2!&$1g@b+F4KKGQm`OBMmgsNE~ zW+~Sc6&98#*O1Y3)2*AFctJI5F%zMuMkiIb{BDgsOzA`C2*%??)EBAFV9A`o7$fs7 z)$6kA+iS~L2wCHNTL~>xwEA{5il{lX4*yO3)0_>#pE`)Xp=05Cn~&lqA;|d$LvJAF zm9w6F6zU0yPz9pPz_*20#l)U5z7aG>cE6zT*~hPbhxHgZdA_X02c=yuJ;KdbxZLxM12jYoBLylpwWy``h*wEFILC=C}kJ)X-T%0 z6OY)VNeU3blHeJS#3+hPN+EaI#E7y$M`3qkPbpnxay{Bu;G0@(Uei(e^Ks0oPj?T} zjQ1*Q$Zas$cxYoaF2eK)l@oibJlSh23b)&fW1CopA@1bZEf}PNZ|3FVi+k(-!RqdT zIA;-@E}B@zzm6>(;_zUW_~?A4$JUFx)tt4;VVT{Hv9^+A@JI}Hnb9fnSKqR8$gj}a z34QdY{?{RU7S0GtJ(Mr-9MCQM7uu_I77gW$)DG9KwqzCpNaozY!i)k`E^5Y4ZVjfL zLY&FeRApBgJT`im`bDs-hK%ynFEc1Y4Y<2I%8Ot34EAh+(y-Mv;AIxHc+EqZ#WUuS z)ZAnGbUa;s&H*guO{w5$L%QT6P|X8M7jcS-UpL{jsrJCI!KN)8ndS^brgo!LCwIv; z%bfI#Q`E5<+M?L%;C3Hr?UOzL;$>XG?FXmXJ1uEQ6u$FwACwD$Ish zhW=B?|BXwj=(*BjK0ZROr?iqh+gWR5EADg2S9HHdEhQ#1CD2n^`PFe2 zGn!v0-^@qx(Grvj*@^sg*O%$+>TZG<0n`@U6#zr3@^AN66yYAz7T7(vi*yxSXx_=X z;rS6w2BS8UfC{0#794}cLk`9+FZ-wP!W5Z-@#*0$cUNi$XW#jvFZJv|*`Q(4GQ3)~ z@>@xS?q5|z40D=0=TGiHy8A!uO>ZwxWkB`J>6dS{n0BbRjncyXH50!Tkb+x@QCd>hSJ$C*GAd>Z znkedbBs;dt6p=ufTR}(6ms-vm4!)MTglaPqK{?#)M#or!(7hg*Q=mu~=H7xS&uH4+CF{=mGR=`BV(odF!XJ-8G*_mQ~x*4(sEh zuIpP%m}UQ(SxeViPvA1##2Ri#pXxc2TSiHvC{_(7H3dIA(1F&>+1!P=yjQImOx)3S zZ>}Zj2U5tNuX%SNi2UNhi~E>C{4t@cnZH8Pop%O*b46GBaMAVn#k}|2QEQegQW#_Z z)T_Con*#||L?YwIA1J~5-Sbn!=_fO&XLX6{>r^iW(PsCl$MXxjqqD-GSC%N67Mve- zNA>6~uZqUnOMo#oDOX21X`ng(UN>7ZtCcPOUndWS4S3dT=6BMs&%rG4f9%-OO3bp5hw? z$nfud&IzOZ8Ow%{mlVYc5tOY(+672+W~1n+!{`^}M-jA&!kkS5P5pL~qEB?YBHKpP z^N8|bariAD-2I!FOxSzMoVhg87HO3ynsHn&dcjKFWz!wPZi+WmAh^$3ITg)-tE-S^nYN1aKW~pu=GPJ@Y6Z$7t)JVu ztRAb6_WmbhyqbMoov%Q8y@pGN!w~BQQLjR(n+CC0P`=xk2rS?Pv+v&U78k}Z=lmr%WZv$nT3j5RDd@nRRTkxIFZbn;aWlVJ? z=~g3pegzN7Nj|pH*`YZW?V>wK#`@8Bu_dTQk{cMwAQex=!W_=BzBk<1c9W;xWA*1v zqFs)`2uMVZ#5LNEy-Y-#yQQg@@BEAZyRvJjPtwWMv>P%R7!2@rHByH|%*i(Qrc-W4 zrIqPkz(@X@VC9`Iz0^xJ?RQolT$gzgd2fU zzj(lyl|KwdvX@s&ikU7)iNpl_q4Y{lJMF#F)?2VJ2faY@!VZ??(bv^o68uaXd8Phk zC5SyFr~kEb#~yZS^p$gc4QC5jL`FSSrVB5T%UDgD?e(Ahp8hfEApk1m&wmrpq(?>s zDQ|xI2d1J3>#-*_xE_38e@9^_> zyZ<#^GEv)l;JY8Zo4pV*4n$8eO3)D0 z%u7oeisl}Dd0I9e|3=$9k#fb+q~aPmt+637*rW;-s7iWEYc6j@81OIwf>BaWK%n>a zDK4f50bf9bJLZXh#ozOWM*bJmryBksHrgqI6kl2-6)g&)WE$A=`zB?Tv*%F1-cf`> zEES@#kzg}hZSU}zhk#T_040_Pm>c8)ZfbtyD_8gERTvM$geF#}=CiT9RKbpn=3hV# zbQySuesiNfhi!&r+6e0m9;VC1ac^jnA3zzP^r(kU&k?f~&!$Ny8-OJb2W8I`^va(G-gP_}?k*z}PA1sONL~ z%zDGfz&DDca2CgBWTfKuhuKxuG9X*#Sj(rb?rpE`eKWIb5{A(kQ?u`1;s>ekWV3j0 zX12H1gLatFXBnF%t^uc4rNcwgwlz4lhKP+9tpF8?E#dhop5oF~dzZHrrp<(rr+rs8 zt_PTGuv*FR%H;4`3oGhp-?AXCo?bdZ>-8Ng!6 zoadJlkhvunjnd;#O^hdh$fLq(v@Z0xGw*KR`nSgWJmY1H!Rbig;y==6x0^yp zRXx`!;fEv(b@)mi;&>w)p>~$60DNVJj>82K$aIH4+wK}i*|9|d&>_#F zCcDo&%r)v5n;D=S9Bq0_+>-aamwHhzod1N{NEl^MjhlEp!NC1o&g*eJI_LZw`%h9p zOJhrX)Rcp5#Ea!RPvt&o$&-?BFS%33X?2R|l*9g7myOt`m7A5f^A5S^5T~KIw1qeD z;I!|4d40K)N#Zf(FLN3yYV@Ho>kNt=e=vU6n1&Va4=ZRlMIDh%tBSik{xp%b)bli{ z5bs!y?|9E4Y1^mf0`eEyG*Vwd`lLy~y-B8Wo{W;>!{(+tkemg)$a zEdPUgCah5yG^}>gpK7_RFIvAJzpZ~CTNCi zd#;Lf=5Z>r2)mDXOr6NStT~~!m+65b*s2?evdv38>A2PcDZJNhe}q7{r;!peRHk?S zsrHaSNHtq!jg?^ANz3$ha0j3Y)}4stv1w?{R85Y%hOqB+1h0huul;{)80Rh*Ib z0wVcjaJN9T;b!_P%+hcAs(As*#&te>;vd!i;-Nu1OS>(>*i~Zc=7!rJCE$P4?Gk|_f+<h*iL6jOf(dzou!GqhW~d{-^OAZ{E&bln{>SGbQ*V@iUsF^UrE? z9l~&JjghWc065s{A?P|=j_XH`mMdD|vr38Q4s)t?7}1E`xzF|t{SzgpodY~HW6#G0 zhA*G?@FYd+cb@4Bd6fM5i+I|4*Y0-PC#pSqgK6x_tDCZUo4b2nmu~UO?^30S;B|PD zY?AY+eGvch39D&PQU7c zewE}}lv6|^zsCD2i_2(JiG=$&Uk2q&g;dOf_=&nf$In4Fr+-~<8TR8Mqd)5QeNi*# zFCtt6Wx!mC@4$F8yu-iKf@G|AKCJaI`?(T)E5t~L1EZrQFVAV}R}(JMqR=JkhECdH zV8T&$qdEvqS)q9dn0$Y`e|#*8&rJL)=sO={R(@Fr zL*x3$J*M5>WAExp8OGUtsI0UUuDcR(GsgOb&-s@rNw))BhZAxJRiY1eJ&VW^MVf=h zBUkmGNr8QFu@LK=NcIQUEdh&0gXf?evIk&YdKD5r9Y=KpF1c{C?LGktF7O7&08@t8 zdel4o2nQUec~6z!HwB8)=psGG?9bb11tr{A5&THvW%*(cz=! zF4y0|DQ|mrmV39k%EVA^ny)Wp~X%4S{%N8AaJ6Ofszu(l_gn2R zSWQ?rOZ@H)tABy%V}W|ciTZ9hwzajxH@;LRe?GbA>jOCfR@?@{tCNj3#?}oVjxBv1 zmb@c zi+~|DB=hZsrK#Y!!S6MDQl5!vKZXZmZPo{h82`3t?aHfJinrLsxx?rE6`c>C(BB`& z>>y%YE@iu0fd??6Ns$;pQi|gj$FjurYr&V;yOzDTX z1A_AO687of{e3KjlG29XAiGPuF?(+*U{v_Y%t`=Nd-G7CuXMN08u%`mTOex;&3)p| z{c8#DXO#I#J_N?0FdacEs7BcLr?Hw`2DDh=@PzV_a8oQdl92$|shn@wo}WFzSI*abxy?IJ{vet5_gH}c z9u zS;cSXw&{3s+?GeBvtQ!D6|Y(I;$&&#;^ZM3$Xx*@9uPp1EuP7)2zDEguGVwod*m~4 z&z_G;@nHMIhx#K)WdoQlYxP4IrxL*|+ZI$%gploqenGp(DNeiJ25?5U9G1*o#N}c4 zvJo_s4IS{%R7AH178q!|HTNI|mwKG+(Xf{w!-D9;YUqUkdeI=Y_i0bSZkdN%4_`T2shO6yQ;~dHb*8cKZr-Ib?HnTodEYoqAz#NA2Gb7K>sOJ6%0>WS>Y%4i@*Iij!}1iO)WY>RUF9nrHkT6uRE<8f zmQ^ec-$O;XX7IOr;|PV%Wb+zL@`kJ=I%nE`Rje@5QX{4)Q+F+LhFNpZ3Vri7%6pcP zTxWQr=ERSx`N}_yqu4Ui>^+n@^9&oSG*T@rUT#PJHo>miO_$-4l9a0(am&9pQienB>zSB< zk6O1CwPPV;(fZh&y9wt&_$SE|9mHF6cD27kD>(Bn@Kl5IT2EZKvZP%H)?}AqV*3Dq zT}lhm-=}(O9EvPh`O8CNN7QLPePhYncNWrsbRcNUXVT=e8`~I;-Gz!6HHzyuOGA~$ z-x+yrl72J8HMYwe(~)%JZeC$XTi|Wsqor;vx7l<;Xm&aO`1_8e6wYjF z^cTo{+ihN?)t>hxFnB#2LjumohF`u>sFsmY6(=?I6ttw)7BnAEZC3q-CpgmcpEo|j z#pPKr+elBm@o>UE3X�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
`bs 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 literal 0 HcmV?d00001 diff --git a/source/site_ops/install_configure_run_guide/Images/enable_anonymous_courseware_access.png b/source/site_ops/install_configure_run_guide/Images/enable_anonymous_courseware_access.png new file mode 100644 index 0000000000000000000000000000000000000000..95d633b5aca5b0595887980c5a34bf7fbe307ec5 GIT binary patch literal 22521 zcmd?R2T)Vd|1XFNh*VLK9z;bc(v%`yKv9bH&_fYHAkuq{f`B4LkkET?Aqa%f0tyP! zr6ly;YiOZ`vKN2<-S=j8cjnE!eKWhWcbG{y+;i_a-}Cu?zn^c>&srKUXee1JNk~X& zR9-&QAtAW}e82RBf*cqjGLn{&klZFwd8VM}ow|?A_3Rhmf>gtDI+5d=r68qxuIJOpeU0spDwP0T2iuS7gv>v z*3*AqQvTmN5MsA3ksvUH4TWiWjdc3@%q)4im_ywwW>p9{`K(~h(q!eaWR1y^wh&-v z%#$iqlvBRMn-HF}km8<(vbR>YdmtHN_G&n+toWwd>(MD)6?}2o2@4hyXvEoslIrr) zU(q`A7xQT>=m~|1pO%ewW`OlOcE+Uim-f+MgR?5tXiR{~*wNw+9d=|-0C*`Pj|w;b zo35D;E+&7+Y2a>$QLQVh160Zf31R{S|JwV30FS>FYGfI6T*=IeDbWjD;9PL<)tbz2 zdtDcsVz8Z9n~t$OSi?9KR<4*Vy3Wa_(VVky;jdx?j;t|{f3_aAC*u>xjsrA!H)t)Yc(T?`|pp1C7g8pw!v_uxnH;<2i zB%Vy9Rb>i)SH|-(LXIAkYzLkmn#>vZGO0!oKs1yWGO|L6onjhZ(G{cjA1Gk1PWk%5 zX;T9xN2j{on$ovij;poZmV;HwD*f6{x#hp2R}>)a$=)2T_c7!b7?LXp(5hMAHebOb z&Ogf;U3X;GE^l8-r(NdoepuLt-Z^~dW+ERwT>1Up8YBOkUs9j|>z`B#vNr>)o08|H z>b<&nj$`Pn_XD4(5ckLiUUIJ@ z1?CP8<|%y3ZzAmTapwgVM$3yfk4TSA>MEQ;rQBQ_d*++Uy6HnnL&oBJGXnNwXcq(@ zb?zody=_9EVK+~F3>z#%VkHEz?cuO*fZ#k*&2kq~;(2*JLd2RDR(j>W?{6c}26mb~ zY|0#OnxH9HDt&v$aA!U9=f*5-8%yph)p^GCE3&(lyI(sFFgd-t34D^| z5t%wX=F_grEhob=ha&z`-+lP`UXp=_`xH^6drkq+=LWW(ubEr2jOk*&myh|Do;y4f zklW#(3joU}wC!rr2RFm-;-5_%Eb3}_i2EBXh?sVt)e#{%=-Jh1LVFOlqx59*$v#Ra zL3WCkQmOI1uJ5}>L{H=QV4CFzcCfFB>58j1M;aXgvap1km^06&(*=+lgDE$ypj74<7agh%QcH3zn zN2>AM1Im-6eV}P1`@ClZziiynVu>CA6R8}IrYke0XbNC{F;Sg7Znw-%|N_fc##zoPhUhTW6%8 zrNl2_Y-v=al6Lw&Mn6a`3Q<<7sdtV6Y-7pD)wwR^jK|I3g1*ChHtanZr63dvT}%%+8t-yHo_MQ9R?_*Y)O{y{@*dxkzF=M1OF*wr2o)Prt4wo zI4KUB9gHLuGpp}N?HE6A)Y%u(u3a)O4S+bq9xYb;D>VYLDq1-4-%vmOG2Y{KrQ^-V zM_!As(`1jKP)>-oo5ww`m>v-1UC8^0>f3p74~MTNAbxBxzI3bic@a$U zZDj%vFF}bzh7bgXVNe>CW(F%-n|B!J8*LD}uthK<0C(^GdhKZbLw32`&;b|K$r|;Q zB;=ZXi@f2|zTQg?GTNeDaoPNSD<>W?f|7Mc8Wa;K-GaLgxDKZwmKzKpY!-J(oav#S zmXge1LF}!oretRi6s=^vr;GdZwN zgk8m9*cL~q`+^mnULDSuH3krHjo0((+1VK)+_pc7x%1Shb6)s_Rf^iqII$#2^_ne# zFYa&omi8q)5HnMHRZzR(g+@!upJP#j(Cc(oY@jn=*!rNZ4Kt-kk7Po`Q-{+in7LQrU88G9NEqC zzXW`>J`D!nG>l&!+tH-OBLaNKE#Ju~SY~@YtMKJ_yvuXw)IxkVxMY2J`CX((%FuUw z8NM!Z#6z6fldS7YOJ8xhQaL*>#^~ zvF{&U`c6((lG-VEEpdrs}V+)gZZt5p6xR`s&%ZY=gGt)nyXewAFVZb=J% zZj&^`){SD*3=nfq4UO&oNNpYNy01ab3$W)PsKfCAkH6c9s}C#a+HjkammJT>mF;T< zPM>ZmTmq!VC+KF_i-MPtzx@ONVeRJeqg>8!_{dCsUwz=7dcHwQHuVhZG;rW9*yVOj=Zhn3 zxzAgEpix@xXi4|_zpWli-wkd?Po534uUd`Mti0*YnX}(JYK=QEI~_^19yU1g9&E3W zJDnTk9B7ZrGj6o2#W@<^n%|-6EH%3hW5M^chuE<)#QX0T1@2lN7T7yUAE*z{ytzq3 zc_ytSTWm$|3vHJ7c6zPwb8HV&==ESHB>sn+<^|9EwXzvU8j^=*0hs8nL~dPidW196 zZDQS7fw(-w4*RA0#)8YySgqae$Ss27vwknI`&2{_NMay32=AE@0N-sL z?ioZY7dA)PhGxp{{y#CcaaTeCmPeW@5(KP7fRc&XkpOF;>Eg(p}I z1ubv6*?Dk%44dAW-wa!eeuPPO6lODUt-3IJwLi-lU1geAnw{~-i<7v#%XYHM-C9S~ zu;>j&(y!L%6{A}Y)>?sMJ!vC`vS`002Q`o)X_ z_6?c*`3%_sQNfK#F*qpTOl_}sAUl`};SeI1cl^Oa4e{2J^s34~x}yODxFV_9?~P(# zouT5hyAA0ugO<-ziED`PorfQPxGc{gNy5w}4zu212vY{9zkT>*B+Y;SmcK^HN#oP> z*;oDSs@3x*SsPm)lPlG0e(^!*cJB_?nI!Xe-3?eb6GMFHHOd)Zo6;FDy`N(+Pu(!M^>_LI-$bCd-dxif4waY zt-{CWDr4kwVyQI5d_Z)?L(aQ*{L!@paoOU!*(E)g&j%K>JFr`H496KaCcuQpkS_DW zST%W?Cop+hpUoG0y#((lIson4j?zA|l%4U(Eefsadt;F0Cg}*5x0zd-g@g${6mbV? zxxZo}adNngkfdrE4`>@2_ER?E?F+jv3rL!cGM$Ro$vr^nb6s$mAhPd6bAf~PG9p0L zsHmwAyBHRH-_9g*_iG70i@?75`PWavj?zZ;>TijUi{Hx)I;DF?IBzjE2)+H$*zB|h z5W&${iK+cA${eoKk3As)!lQg?rH7V({Q@lSv`~W<>hBQdOZ$srIm0G~+T*PCDXs-v zPd{~3iB2Lg9MxPHa~dCHsBHCqXA||~6W-&uyTBt=1w4iyCwYEQ0G7f zVsNQQ4IWpg$BAG)Kkk$e(A{aZKEB=B+p_bjv()N~2LvE`zgFf0I4`uCp1x1;pE;qY zclc+~fPwq}FB!-e;Q6(|_b<%+MKt{f`#X0=@A3SLQnO$EuNi38OV%!m=(pM6D;-#k zpb8%Y7m~eTi_;!0-E)KcZrGw`-Fh{BYxQsGnJgr&2ud2}qaCe$OqDkC5v@Yep2q^ z17)XqtuWn+`|=GJfxkxew;K#*(ryE`B!0nc8DBibmy_=m8L+Snptn)gflp&a2L~K6 zo_no@8>n&GIaJwwzuT0kAEr&atu$$64u7-L#O#?x6_wP~!lK|+B`boYWU#cb9CPVt z56!jAa-JMjzwTDzWKd_{6f8x-(m^{6SVbJf{do#yah#rOTIPGe$R0!ji?{>HGpnkc zDH9FFS5di1Vfj^pB^EkruKz8h2TMsH7Mr!95W6^g9R;u4J0 zTxQC!uckd8N5}CtW~y$JfsJ8h8ryB11p(2`L3g{Q7DZUMj`HX)zwebbh+{*w-9C0T z7aq39$^Qd7{y_mm%h148SK`IVP>pnbV|i;Q62bX5GZfp0b)xBG+1Xz<+@?7fPLHvK z8zfv^uUG0m&B5&-`_|2ef1hy>n-we7ebIXq9DMTAqA$uOz>+*HB4XFLD#r*Vi!Sw| ziKJe3wX0=$bg~eW8;{$}w2BY)*j7g%9C7+raoqwQrqItvrV)%!-!1Xw=qyQ-Uk-gX zp`)g2^<$qEyoRxc7gZLRE7j%2^J6d2XwYkB;P>>D&JQCc9(9{hWeObFqK}}F49(4k z;&vJ+A8V14e)t~G)@E8Z0slZ;`Fl37P@P$RuS7eH{{-KTu*EGAPZo@Pi;Zd*E3B{x zDXqyYD{QxMj0gdCco7I$NwzCw$u1NADzB9=b#bZIq3$H)1cP>wK@Y z9;&gfgWVGFk6=yvHmO6|X_5Av+hkE7G2poE4N?#hDhbkY<}PBd?{4ZPXvf!83>+6u z4r^u%9Xc84!Vw=Jt78d6{F({K@hf~!bn*v=j!Vg58AB!6$Y(iDWyEk1`Q&3_^Q63&c>uvXCXYFtMaMm#?Z6C1H z2H#+FSBXvUi~2`jl09lhQ`fWxvNiw18?K}dW?rYS?DH+=uc5EAeH)qFM>UM zi5?%_{6tSZ>vR3g=pxaL0`v{w=Zo=Z)@z4Rz_-b~LiCAuPW0B`LVkX)8L3 zXSNW_dJje!_aqdAO?gBSo#KZuPm`5E9G}8jVx^MpQCokQl$|LGdj(!8T_Q|V*`Mn3 z@NU%RWu2w$f2}~9C8e)PffmAvDP)M&)DK_a##IB%;_lh&;Vz~u;892bq)paART#M{ z)Ma0>csl|mGk!Ln(4FThO1p2MhHS+fj`yLJ59V~RsxIojk-CTqR5ueGV5 zi#%fLH4R5C<`n}s1E=?k*Y8w{n9joeTm1aj$i>SeGo96blPS*~4@r;iJ%4E>Da^xO zBhJp1^f5!mL6lTF&ZqHFmk9GW|1gYM&Nj4%yO2XPYE89QKn1O*?XB!mA3=VU7bQoa ziL$r-B`?~>#BjND#Sdm7OmXU!Cvg%(?X#iqQ+@^wS$Prs;N&b6nu!A<0r%N6 z9VUq#o5x1}q^F4-uefafLKh*XB3oYYhiMUzTBHw~eyvkc+ZtHg;V?a_1`=ZIdu)8j zf0Cb~7P(tlnQ7|cSJEANF2=oHpZOdRl(`it&6?xOOW)va#vn&nmQtkRIYzkBj3r?# z&IDUFUhG-YX7OA(OPo0Ax8=Vj$#vo3W~p6N!$3v`eci3)BBllAZC=N0+m^wKFXwzq zGlkbT2HQEUP!a>o3GE#DI zc|Tb3tpT!(RCG)B(k@wPMbrbHL|LYoUbuDvQvl6rjDnaK!FZPj*kDU&cxI+Wqvuw* zfdl{*iTMp`qU2Hciuhw5(`<HqpTaEjEj_l>8K_g%pMo>RO+wWK4as$;ix|ez|Cd zRRH=@P>4N5vydtdasS(kx|{JU8@abpUPuvSN81LUDBGWyU`4;UObapNlnt75EvBXF z2%iTW=12F=w+ak|_DI!B&lFwiFFRh9-U>l&{{Cul9jaA6X)e6~Y`VAW`(dM{P~WP| zXe}kX)co3qBN+?Z7_9C*fpcle;Btbw0de}1aWeFjNXx8x%T(|&#h_>yM+<(<;SXy)}KF5IP)Ek zgI5=uu|in3a?KKr$Hgf0aa|NcNCuR?ZsPC4PXMs$MGK=eU~&z8$1>XF((x&*HM|{w z_FB{Ssz+LNJaMgeDZJ7_YO^+9fZkEI4k6>s6W!~+OAxr)o6-^>6=&X;+g-qhxb~~@ zwlHo-D-~&7gNSyn}*VyzZR)$?>jeoBy4kFj-x$5zm?{zpVME z;l1197SGhl$C?OL$Z8#9d9NkPFH*4z7f*(mTjQcYd@1)BxM3>6%Aya!Jjl0Vu7AOG z_yH=Na@jGm*kpBGBv#>^X0AsYnZ7~UNYs0(^$Bo-X$HrN_bcd1${O!i*GXh}P1omW zO;<23jh?hbd*VnZaC^_NVsnz$@(7FHUzmgJ`xmC2U!O{^HQd_Rvvr!T<}-$at-F$5 zK6;>5f5q{){l9X?FP7O{(hx%k;2u_(SmRvF)}tIA=anlIyZ)c>1V)hu1# z`&=3tr!$-x=LY`fE7woC#*o2wq+kUkC!rp#A?0oivyb@TzPQ5kb{@R65%~BC|IXXD zr3>FTN_0B29r$ye;n(^1=mPHimzo=slch?QAy`EHSR3p&w`JR2`@8XO+CA<-)gRaG z@EfC$g}>JwK8^c*xQIt5?(s}J9IgCLsiWV@UCD}301vf_v#+L$<~%bAA9XJsl~^x? z7$vaz46_1f*28@5B8vU=$@benruFHQ`2Ugt2Zc*Oaf^iHedfOp5^;))@)rq-MR4Z7 z&;KtDSSgc-EH*Iuu3$;A5p$T9?l8uK=9CUQb`BzD5F0Rd!?~m%0or@x%BHAv2+Zfg%D^PLq!w)>vf8 zM>0(VbN1bYO&^KN>JW7BIg;!Su=`ebUrXcSS?`lNfaFJ?$r9sI>Rn)>*n>JNv!**o z&%4uZN|a^(H4tgcoTg&H=MR!KtYY`cdRIeyOco+*MHVqkb- z6)+o2SPd8dY*_;V=jHJUAo{VmKsOJkJ&%8@%m3O=N0}BT+Pg9s^vk!1`?*GeE+^<6 z)%oPUe}F{~TeRT7$0U+w8#yzfWVoBm)$hgE)8sWeq5QPu;f zc`AZw(E;`97Hz6&!(f0;qh&@?12+hs)h%D%R9UD8u*CW|Bl_P91e%bS9Xoaxf zoTKW$#bc6y!esFy=tNNWR<>FS}I4#i+@2#~g ziG(A&su$(D{1zB7uUFlrP!?(Q)XGkf{uH-GQkv)Cb&!k4zPJ08OBRy;m~#yOkYV;q zM*5>Ehe<`Tco3P1X2{PpT1rX$={U0-YCG5A^8S8829~NC6v8*c#d9(F$DU0r;Q9=* zr==OmW>Jgx;^oT* zspgs#T)q&5y6m^JH;bSDdY#slnKzYfx>Oa1)k_b00>644Okf`oJiVB$S1BI{kG6g- zOKJNn{pQ54v$K~>)|>WXx`mX;-JoVnDDq$y-rGDO#rSV2$aQhsQ*R1NuNZByKc}ri8@&ohbu~R#jEiGc*LcIIyv? zKurTgLrbec7-Ay%Q3I&yuRp*|;o;$flaoEsawHL7e*RQIRaF%h7JkChkR*x#VtoB; zZo3eJ2`K(@iRAIu`1o5sGU-Kv%m zUQEp`FLy5fLPGMGxlxJ4BLArt$tU{2`AgHD)6%3QHk71f@0n*_fJhv#{*V4S#&7#Y zpq|7aZj{62=&4D`sMLe+Pe~4h4`#h6NXAptk(tw&T!>0aTvg>$i7RG~7;mi%ST%$x zIjo@6mPBszH|NoZWX*Z!C+=DDaI!3uv=8~7F%&l{Q5zw(ZSDeJE< zjei^eGQ~yW?DPl|)Qn}|=kec#?t8+aLQfId_&ZFPidS!1mK)6HbRI*~3(Y?1{5iBVqD8je-ZvL^g1J)Wg#Z zoM(Etn!)b-dlQ3Eu(KwD1f5KNC4B|icvA%7E)3ya3G#XZNM;Y*_N}Av@R9AvmBosw zqi@`G%)*;ZPfiV76Fbiate|&IC(um?Lbu-h8CK7rl{@_^_fl;D3bTGlM7)r@HmYIO z*g1NRm$F%Nt`$jj%9K)}4O2SbS@$a4D3d-8sg0NA`8Wk*AeSB8>4JU79gRGA(FR%k zAw?{nQ{gBUK70QHoJ|Hh3&`6vc`I<<1HFp11NAydg0xg?&##S2Iz5>`>=Psu>rtJZ z5RDVgioogSbyV2v;;65MGN)eC2u8r3={;Bz8#jLGPs4}ME9H#Z9}I(2l+FE3FkxXWRU~iv{NB>RtJCU)=G*6{?*<MD9^J= z*qcWnv3 zc3H=4ap0TEq>FI-iUDU3EAzB)Gp0uCGY7V%^=OH~s~jzw2Ag_;j)aeL1?GQp$Z$U2 zdXU1bZM(FSU+<+Q;{W2$CmabX_T$@az&2bniuzE+cat}qm(LHECM-K&r13SuCm%!^}xkg}GS^$4>w1j}1o7v2jkDgSOyuMg;NUQNp05Pk8XFrd2(-R1hq;HylZ4W3fp58T9%xiiQTG^B57fn zyecQjfkPrDAQg$|UO0fT7{L&uUJBYqa(rPj>K7%WM0PrxxfTx<8$&YTa|>5n1H^uf z_3K~(KOAl!*{`ctaetbx{vPV>T4chF1(qDaJ7i@1;~OWsr!iJ&*o&J-srzaVCWV{d zBcs@DNSLuS0xnPX1`sw?8+bhvDB7hFi`<2>AKwk5zoXdM4|%<}UfNv(1|(I+i2n*K zXNl?V)neO!XKQDKsJjzb=7+s;B%@r^W(zn&i+o{$;O5||PW>kGs)HnX%2mj)>Bs{b zal2kN`6_}8DOt!lYAUf_c>eQ=(=H}!>}ag%I4PWh@_NYkz?>jYC?Qte{@8fXiI5GlHMCyda^OtLbYPv@C+dw(nrtaXY=_0IE z0kIAk+p%p9r(Cz2f;^<@=nt)_nOyuXY?{wl^07>d-Z=uhL%+R)6{kI|PE+FvY7^Xe zHd!Syw!QkO5h-v5*xW^?Yt^t|R#7;dD{9`ys4bDfLlqo^-XKz~g|+1J~RniC>@b(wBb zKchH2ytJ0tpvU1FYw^vfY0zzzU=T;AbV-lMs^Z27U@TO5cM-z{5EzJ?M}69jk434b zlw?}Q!5?&1&q8`;k>*iae>Tq9b+4$E@U|L6HdT?bBwr2`nAECzcMJgoGD72_d|Dsw z4aym`68(>lsaE*uh0aQrJqIx`G(7K&s3n#6RpT9#8@Mn4=i@-*=d?s<8yWeS^+(5JsBSR?CI#=@>NdKv=|3n7~NhycMPGJ^5mfMEJBs2 z4TVcYvoQE)#3bl+430nwIFM4MGrCsT-#2O9&J?{;uokC7FBL3wj$`M<>VG< ziaGD<9k2CDKa zCx4}>lb;$MbO~+O8Sc@D8+j@1I5=%jQmULvo$Q`B`;$?q?QtH-rM-el+8#ECUGjQa z)L{myTHk(Oe}2ds*q8-sw3vn#mKJS^y>sI6`z=rIur#2AqLi3y@@;!~uJvXA9n||b zKt`Yos|lqg8I97z4QJ~a#$*2Nbut{|&QVq8o1v~?eSLBxk0PD4SV~h(L;PvNb7+M0 zctf(ZXOhzDI+~r%cCKhmA0snEQPZN8m^oci-{gIu^B4MIZ6wSmB%XJtHs<)ksg+t! zo&6Sy;3qCtkMDJV+aAVAZo6lz&l?8Fa+|E; zf9X!-3?4AI;W!NoZ0OW%Wy!=E+n%7k7Iz=xs_*MBp(_I|WRHBc6lthg`p}#R!TZ&v z@*Pvk58G7#`SJ)FN)lZ%`JKnXtC&v0d#iQnN0-#a{liFpsDH>LxqkQLk0uOYBhqF* zdc6=$10$o|n|mF) zR+mWb2tRpJ7#kb=-y*b6ZFAacYMmEBnaynh0f8Ow)P~P z_eg$31ZDn8S*v>1Rs{^%?8>(D6|TVN!Dc!Qv_pw>cC5vNxQ_zG z%W&3RG@oUsxP#aM>U5bU?a9}B37vVr4kwD2>$p`|8;wdKo1|9t*Gv!_w{q{>yD2Lt zR;cFG6}uY*xw1v-JE9+Gwl_|Gi(`j~__45R;;Vi2Vm;HuR$mwDtXy-<%XNAb@9=V{ zy_4+BbrEN8*l%GKHNJ^ZeWhAnJtoEO9}zofkWlpOKqNpr!ES@UFF@T)rTY?5Q`)pF zkcBWi8C&)yK`q5Kil0L2_u~Vjg8z+A|-iG1O;9GLAvtgI)kZ6bWtr@GyUWZ zbXjBU^F8iXJPv-TsQ#gnpg~3P6}FEyIghvtR40FGq^U!Y&kkG&DJ^>Y`uj$BxB79u z75Hk!O?cwhvhcD%F-A6;MH)Y~`3tfc9PXb3QfOJWd8=tQV>o1x-2zI8r?nNI`)!sHOF&!61Ckyn3X zesb!%dxWx)KSAalVODfM%8)4E_at*BB>_OGdtu-+kCD&HfBBsBG_`WZo-F?Q70g#Z zT6ShaGrFkyx928;65m$O|M3+Jv_eXlT=w?0cDi-53;cQKjD=6JZ&2qY0CjENQXU_ST>+z}> zI{$^N4TVaCd|`eg2+lES5n$7Hq7Imt06M^S1bw8UR8Wfcro~mn=6j{BEX?dVx|(CWhUT5^Rk2S>xB~$;EDeYH%dgM@IYzjjUUJ5bh6&+I&nDGe zYsW7EAzUZC{FOoJ4lUH%a6i-e&J&)G@!an6SqeW5<#i>9YC*UI3CG~IhDGNF(`#ey zMYx>e9X>1$SB&s_vz}=Iax?D+SyAYyMB0}W>w!&5N*n+rbP0#PUSKT2>6QYh1{A7j z)4AcsH;tq=w(ATHt=N-S^;CNLCV3}S1k2zcshvn+9Mg4%J8@iJr{}i$+GIjsE>NGD zhO)c;ShDZ>Z+rez6C5;BsHxs1+L}REUA(8`vGsBMlY-^b2k6oS=$Mg@*u&n>2-n(J zu*hVlb7zi28EIas?NFg3kGuos2INIHc}S~if~iSQXk2$5X7O*bjGN(r#jd5*vfA8x z(ZS5%Yu85OCK$dy%p!_}{z+V;6XzY^a58-*5jOWuzK<``eKi+sGxfDFz#jCqv2^5a z0{;m6!4#68J7G}f`e-@rz4=7U?^b6Hw|9YF8`f~K12);a*H-LfMGk&g)2gcMnSaF*#E4%5&pAM?Z| zV-;v$W2{X%ZHr6I!4+C-10*klIrYKdySh%hj?c*Y!d%31!gS(;%_!(S=DqbZ6d%&0ndcMHq4{wM(X0-whNh z!t4D-TA|G0Es(Zw@Ti^lBo4I~t;aY89fvB>(05*c3Hb;L0Z>3gDM=rsINUq`66t#5 z4we&uztaW$V?KN^qoG!}@Ne6C@9XzKZou6;(_n5CfmXljd9+#lxaSeIdg;5ytQTe~ zS1_3Bw|A-O_UvzuhiuGzn3iH^*24dA=xP>==J!5tp^vu9l<OeKrf-zFwO; zXWg8kLPAor1f;`%#9eoP%MI|EM9+(e-JZFo2-`UR?jP1M2V7(?Qm6-|~xzfdvz&@R>zL zMIAjo`kI=(dKosr^NFk%d~nW;Woqf_=FHB%wzje1OIl`Xkmqc)7t;CB^?z~CA8%iVO^M};dST7MKSmun^dA{^spo@%@@(aP zjVVx7-K%#@!#T*6Wbq2Hyyx^~SpS;?OmW7GAb>cz2YOLqq>}qvVU1tK983=Q0eQj$ z15k{Yy&Aa%z1ke=4RI-4Q?{(}>rlxK+8*1=?lC!%{YniG4p8&>W(O#b6N|!6h)kaV zwH=S@P)m&;cWAcL3)b)kL>5oybo%XhP{@92M(2$4AIOu}7;!1R%&Y9Ql8YIQQ0vrp z|F!(Ycm>M<7h7Gwmy(_71LHNKuwF&KsM%Dvc|lODXzt^7JW${6SaDzdO@}Ud9y^bX zI#^su^H>9VB65}t%m59`>7M2;hl zkY(U-q674(ttjv8PL!zaF43*jx>GzMsm)!5v&+XU#i5P#G2D<9nNydAq74f?$9tM! zD7inI4*;>|n&SBc@09ypQJxx8K_JPSBADzG zLOq0%4$t_vhHQn_@txMCt-rY;I#X!G@w;OC{iQ z{}3}#eLKRKm?TZS!oh2YTUd`?0E*p@4yYod25nF4@vE6{omE#EHf6r|XfF#M=>f$G zUh95=w1GL=Fpx`vNhgxgN!*wDBIlj)uOh1t8I6Fp{hVIQ}u%}fk!C!A^Q_xU- z-~z%rV861!erLKR&q{XWCVnfif|DjwAHP6y4?*?PRJ~oQ7avOJX`}do9)V<{PEdHt z>bza?K-5C-a)@NgV3FBHe+#C3a*Aglp-psZWpIu66)QMcACP{}0c9>w@&?)$;1B8$ zXk32d9bo5t>teypzz5}Uk4%B?n$W&#nq=~lyZz5(f1l)4chp(-#ay94eZiW8PpECF zVm2Uq6~-<(-tg3hTr1X4x zYz@!1Lyx6lPrZ^}0%XpTOY|OKA%Rl))d4}CkDR`5v?|V)d@XzKi&d{D46F<;hX0wF z&8rdhS-{38WDIn!1+%RK%>t%EU1NNjzwh&ZI`pL;XF4T<${=s4C_^x36|Is>wx_?% zpc7hCugdD69%Q<0&o+JMsYq$RU|%SckT4Zq{J#KUO7atyrY67HM9B?b!3V) zE)IFlKHwM(#l+I|nz%8Hj+U)@uRd~n{ub}1N_CjCG|TD7k9se)4rrsWwM5-WW^c#DDj z%Mfvi$K9i7XZ#lCcvOQ>WDX=emp{}Dd+I_qLX2mfm%YyJ;(OSC-2)s6aDGYZC7I4+ z)IQiTY0qGPy|mGaEu-!LZh`g3bfLa}z^KgkJL9c&!jBVeqZJ8JMha*Zf;Jo@W4j#V z;gz#L=Q}5IzScze^8m*Ylh5|g$&UMtnoGgX?eHHLrPXFAU zzJ5F<6;(kU^W)IuWY#n(kB(JtW@J)QQb$Ke^6KmrfF_{^;AV z{+}Zp<6NQjo$wSNV?>LN7s17PVaV3|4jb!#C3?y?6tHb{C7Bgg<0;2Gs#&zTdCPx4 zm+Yi=Xe%rX%BNW9A*5<7D+Q-wviC|X)UsWRui}5Tw*E5D5Qq)+Sa7ZG*BNln7THs$ zEAj3n-w@bH`5VaU_6;68Al&2nW8zN#)OI;qwKnO2o|R&YW^zp#vEOg--L8~f&jMIVITXq+!)G_9e>OlBEi;a`&419b~ben(pfU`t!=C!`{Q~epLki#s^r__cH-a zZh)T|vhaNyTj>8BZ${YPD+ItMD~nkz83QsGvRUM7784rWt(>B)Y)aOyKt6@D7V|nP zirlg7@cT&ll$#$L=9TiOD-d8uaw1J=RK2)ub*ovZj=wAb8L+v2CJ{$0H75(BS6z() z=}>{FA^OGVwZ|I1*n;E=%bl}WDsD|!`@_5j zqJ2=4du)E z=nFEeG+_mw6Xb5g`?Dul=M!O{b|R7crFI zlFnnT7BB6QP+c2oHBv>)1)Fylc$s*lc-F|Mwuq0{ZbW;tXSI#XSe&!_v+UqUZ}Q?? zBC8S(*Cu7s%VBGlXXHTc{K#(6cM}2V;8<8^q&uIyRnED0mq*)8hUS1!#U_Ks!pFXo z{nZXz=Mz)Z=ROn$5u#=UthaM`n6>%ja+ zo_Qbr@hmM!Pi|%p{A9(e|E*B-4rc@C<9Mt_Q)BlU8l$BI zElN?NC@obp_N+Z>t6C*ytj4Cq&YSk_^Zxrj&+m`B@7;6zchBADj+3b>CG(7WDPr3{ z5)5vIG~Fn~pWY}aH229IxkKB2;LE69vyqaCYcnq#_gyv$vj~WQf-i8=^?tQUlTaNj z5EY=&=Eyg!gWnXay`xV&;Gj4^AW_&vlSZf{?liVy=?|0{r5MgDc7Er-{=Ld6p?Y}s zl5!`(cu4M|d7;>h$vdaOam`~0bujd-{n>ifEHb0fIfuU{F}|@I>sxo%QUnv@hH@|R z+~heGMqdJ1jXZkbeO;%YziKkbAotIOu8@YkP4yuCx-sdu*4=cuoZ|s=o1h`d(W1Xx z9e$LYiaIe&&*ULN$lVX37@JC#Ej`;)B`FeUoVwTjCEgcfz;7^~raYoqqS6`^yRTMC z*nKzrMr+FA;v};Kw6Ua8Po#W>H&3gjA--vCSSlJHE-~G?)(8_$L*_3+T#elE&#u*} za$H*;-QB3&=U`hO>8{w^j3!z9={xS3ICV2@6ON$U)Vw!7f%m$kF3w!+vUe>yk*_=LX*7v?<< ziR*Rs<6P;qF(8ismgr>l|j4z3Pd_VqeNs3&z4AjFp%5>;2NvPdZFVGy#?|bRz z_RZ-&Y6n5W&Bg_v;yT+j)9J9oq^c4zxWZ$pLW#YJ3ie=#n zTzTt}mQ^p^uDh?%$%$&lzP-iI0lX2g7mp>;#8LE?T;x;tHmFvx-GtrcGp?8CQwP2c z8#QvkXGT7LZ<)cZ#3CS(_QrDEBFWXus)8y_>{IrcP6?Bz#A@H-drntfxXy{nnOAS) z)QHNP3>5{?^#stAmvA9FQ$8yzS@~q{lW#{Q99i;GBX@jEoHQ2Fv`uA^SQ)> zfcnKZsHpvpZ|J)4l$UK`_7#ZQjJWft+ukAX?}JEO|J&EVBQDQ`V;2DH(I>sv{X?a; zG*7`v+$#Q6z-h|9&1+-e^G5T`+qWdbe--i)4lj&0-wmmDG1$sZPP<^I!-X&N`u0Wu z6n|_!GZ-*k(Pf)EoavfTW69fFf~unIG;BC~igp)fWfU3lTnr1lrH?rlM4d8detvz! zKrFp}k@)ed-sY?|oI&mVS5;2jie>RGdpH~Sk15*UYYj0*fXa6Pd-VY$K&7VeB}mfJ zFTQ;2?%4O8h^KID=oG^SgDLPT=`p36X$+zy>kt@}`eW#q<(vl3g-*luad}6sl8Fsi zT5lFKY)axWds}&vJD|e9wwzeJGD{~2q7)ZYHSPPvg1Mm_8#bb_E2UQUVXs3F*&{9A zR)0PIwapI)#nM(&g)FTFDPsS~JM~-Ui;n8f1oIc^Jqd zW3nL96|rkvCXUIO3$Zgx9Zk7${|mUfxj%E#Zm+s7Qg@lm^!QsTWq!GK&V9dlJ^I+9 ztVbDsoq0Li*Y->tUqz1q_nzASOc+J#^EAqcaC>_u;W*=d8G;1o!}j3KxMM^iv`p@# z>jkkqSiCwRDah^A!gskDa;~lDHCoMzJ&asg=}@pNF0oTQ!Oqac8h|yUVFb2)G}Ne! z_@eA7N39#yf;po_E))4ApoLk#+tex4V>P{00MXc?q~IlZg|Hlkt#1#>uCaIQh7z-u z-Y^yme8bZLiuQOLf@;I}qm6w;RPmWpEPa zNuSXXUhv<<`M&XhRP3aKOhVgnG76tIlAE(OjFSfbzM2GBE71yx+%a2{(~VW zVt3+~WqQKJ`(SF@`#dk9R0uj%z~%X9E8j*=LvRTBaQ#o|eHTY9fBX9Zyy>#L4>EG1 zRMF<;K@YJlrN*5;cm~o!TX<6JT(80_2Eo5SqQBuxIw|1!4@`QArQl zYF~FrsFb+d^T;vr)+!&MJT%-`MMM(V$(Ac&85?3khC8}V9HY++>p)iG-L_QHWXCYD zfg^Hbe9S7VXrgPMrNa84?b{J-pmY64Nt>t;$9vV;+XciApB-8f-PLQU#ufa=U<Va=y?Mb8j%Gqh$Hu5(GnO>rjoJnE9*f*XU1*UhOMN6CjpY9ZbkHMEPnr?*#& zUEM(qY( zjploENVZ?$M2nZ)Y^D2Jw=`PJ9NRCK=-ryavd8`86~c!VdO77W#a8PQ9smgPMJyN4qA~gmlV;vVMpkJ*6%;*cB}!F8&)I- zpKApi_q%1?rqOf_c{ZU_b6kJ{Zt+?Ly6u5r|wEYqDQQeC;ud!CpmtN`T zFQ~uRl`O8Qtms`I7vd|fw;IsU2iH{(*9s~3VOw$?4T4g%fUNxdd1wxuAcao?^zEOt z!C{RNCc^k;GZ7KQ&lmtEK5(wPW6q=TdnDZHJt1nC3JGUu8#$JJ4h0o7$sOGlo&++r z_5KR*jR=n@S_HZ}7*e^q(*d58o?s2en%SuU!VGr(bh-WW8=vJV5hw8o=S{v4Ag>xY z48}3>1oF(jsX?WUGS$P_V#y$m2@R3&`lV+=q$ge>EXJLs{}NIbkQsh3DdKmz=y4H6 zJOgvsP05wg?TjPob>o1tJP$vVs(^Bz!$TS;a~*$*E${EwA1jv06hY5TE2e=vJc<3&L_S^4AH@gB9ajBH1eQZpjC~-yK+80}>pJK_;eva9 z+5o|5MK9N(xOZ8lI_ia#UywlUbkjR)^@7q z*Lby}iTdEmj80e7#X0;2c`%|JxF)U1W|ur2wDPTjVXpvHYR65#5(x**FU_6NbDcm? zp=(Jn^fSLRph>Wte?hq(dz(S2Y_!}xte0i#Y|)7dBJ_CuP9E2k<@VU@@tybjP^tpO zqH;%9caKFZZbi9WK0XcO!mk=86zhic9Ya=rR=CINyH%RI`^P&YDfE*ZOLtI7bS4x6KsyjNMG5S5+x+hyVqsVUtm{??K<&sUac}7+^ zHM8v##Aqn$&L0u_+3TREFu}Ix?rebDh6v5tnWGFU=A|L?_*>eL&h0-H=0^eY^Hmq(r_&N{yTS8OJ&H z2F;*kTk_n);xe&n`?mK=BBsCO4I%ERcuUNNEu65I+$c#4 z(VV!+J}WmDcpip4H6IJit`#ai3}Q5zA)5Z#CAV~eF1p*A*(bW!I60l-j##jUNeV24 zlD78ER<-%%uUgd7C%KEA8J;!4m<@*y9%$PL`Y4a?57EwFJe!Vv@3-I4tNJX`xNPbY zS!%koQkCd)w7mkQqlB@|7{#$R zz&rKeV!y{QA0NlH4a@Vor8%5nMe{@a_ti#ajSVGZUCnB;qQd#(&+IG8P_?GcoZOoz zUyU@ZsEWs^XR(uv$FZo|m59ug%OX;=mG_j7fz%(>NHa=L`Paxu9i$HVYdiqbA@rY4 z`KLAi)gu6;4d9>7@ElC_-^?Lb$lqkE{L|F|q{GEOom%Dp7k&tfYTe(Lx~7{Tpr5TC y$w&$WWrOv=|BL+zbnAW+(EFGACocHroNj{wxqA(P=pgY#fR4sp^VyZez<-A~u5s#TH7ic% z7XdHI3W1J~gJtGWINLkA982ICN0q%khh)R=>yM+rlVvs+MFZwg+Y?%q!#~S(s69(BwiD+Uc3$X?V@c@w_ z#m>p;3wPYFx%9Gg@aKboI=S1!ENT3`^UrK=AH^;j!6!+nkOVA$?ss950trs{i6vq`q<$B5d_w#B=)taPyY~g?UE$|wXk&%kcVpQmNP%?!k>>;yruV&7Lz?d1 z3_{o<{~MT*4Bq!)mEDKV+d;7^kJtTHRLCCl&Qhb|arv@GIwFUDA7X(L5l}g`Y z-fMCq5_aC-bo_VFll8n^a|S`H8MLE%-so$-qXzz9si9TS3_=}@WFPu9G&DN=KmZFo ztZADWd~2a741AzYBwG&x+qI@4I&mT%_6Z64U@e?fEK9Ezo`iOifxfyTLO?Fw<}Re+ z^1FwvXchFw9Qp3enKcCI#Ct&^6@+DS$l&iYVNNo$)hjs&%lx7t$>F!e@O7^ONYpuK z^FBz=KvHzr?;^ys&?rBVY#dN+11KC}i36aZ4Bv`G1b84&gEaDYq+dW2is3iGY7i+r(k>a)5af;MKmrUUTDjPI0){EVns`kD z?g3h;X#E`I3499Vq1do8>5A+Yj?s)w1TR#g6_KK29*-M;@ z5Q}7s>3?>JxusiYSO;21X9a3!Xy>knt%vg^@ASz%eKu?=weaX6Nl5g5;`qTt!s&C3{T5ck0nzhon z@f1L)jrJHE{mpUn_0P*6jXx-SP`RABUvkm(*!2+fkhWO2q`a-Yjl2cD(Vi)vp`NLq zA)n1YS%1O|hJ?=CMHfdHWD0W%`zi@lL|BAkLc32l!Vsf`x5H+XDJ?H4FC;IO$;`TC zkwrm@5Cj7a73vt`n0TGQIvZnzW5i{GYCL1uGqO3`H83z#IJP&H)c1YBIovD@dtBD| zs|kwHw6UEjV5DPwWUyrPXwp5YI?gV`E;lz?FMTUrFtV^0W#*`hk!(yEknFx&){NFa#{TKww62 z!|mDar<_F`($$-JoM}U9mm;xu&2qr_s+Yl2Z1|&`3 zk3jE0I?@KVk9A*@|;qi=E8SI zWJ)JVSC7f5bd|+f{<17SDZ`VLS7X$ylDAbRB&(q$CeUOO~y<5CRZU7 zCZjGJCpRy9Dl;szEITdTD61n|D!Y^NPD??#Pn}G$$OM*Cm*M*MPDkv#+!Ks+JIDdkELS@2jBAQ-|UZ1|0 ze!pU>qNSqr2T5hY^4)UMvVA2$Lqk1Y#o@=tFS25cDkq8k+>(fr+9Qc+UM5JU2KCUD zCa&I=bocg$CRCO1D%En1N`|uYBAw#SpEM=7zdY2gih8R2Qv4d_+?9|~ITq-%#S*k;;2df;`AqY6KIk;3?$XgOyF8}&{bUHCRTOXVs;4V6e z;8F8XH3)ln&-l%G75O6hhWXrh7x_E+fjqUHcpV2F@>hv#E{?OR8j3&>pgMO|cB4+} z#=3q{_mj`@R_f;BX8tACT6*18BwVRf#3+%Hw^D;eGVc21@OcyvtpTMysq4t@Nbjs$ zjP2*=?`giSfLmW2K(nt40Qa@&)%k7v$>u5l#sGN^ffim9l@p#3^_9>R-&M#`aFx1^ z&y#X%Ro{Sw2SI-aVg<7%+u_I1d00eoacQ^cwC{n+bRDs6OGg(a=GfvXKNhwtiX zEOx9Q4nI~Ykp^Zf#uedCN?!(g+FUkmo+rB#**MSXg5Q$g#Cr|&5Og@&6yXxTrV~8h z0icXQi}lI!);CIK;&8BSus{6eyP2wsYA>-9?}B^EvE{^ky9xEE_2S7w;lfC~4WY0< zlpFc=w-1@nWDBKt*+-eH@q}sGu|G~x&K1W^o2P|~8<~EYZ(0*t#|><2Mr*UquFlNI z>_^mxGr9GAi%FyT>3NS|cQ`&|0*(8h#B_~pcU=?BRL->u8rLlRKf`^FPd!OrN_S4r zW7J~-(-8=j`qY2~W}jlf*@uCLSlHCqOsT&nf{-$hoN%}GU3*pmGWXvVur1UimuJuF z&Q2#E(n*%emX>sPdy>?m%VMkby3YLEuCsQVSNO_1qP$n0V?NEHZ(P530Pihgaboop zDiqwfLmX1Lu(B3)ex?njrDj8Nm+I*0gxhECoLMhg+SsSt*Y+rM={biVDz4~lZWVd7 zUQuo7oJX8!g6^(z&TlWWx_Xb_PoO*D-q4tch5SrkPyAZ-AG=4j;~j)m{GBVMnvaiE z4@;T4WxJ;VvViHgi8m%_dg$t4>tH+aEOC!;w=jMwWGUjlkRqZmuh+xbvDJ z{EYL_Vi@R9aFqMnxe+}Q9enlJlW!2Exvs7F()Xv}uIOZxAm3H^zUD$J^Mml->t(WB zEpGX&Hp-xL#TKX!KzeIw&gF4u^rBH-dFauXGlI!vfrp6o-zbJ zm$n-ZrRx@u{)d#8;ww48phWATP`Bk(G?Y}rf=bWK2|H*4ZP}|?|DFK9I7_N2sOi$J z$&Kp%&z%+u9&&lCvZQb?p_g?o2{Gm zu<6*nyVBG;|MuMD9q&CWS*z|`>cMi@KC81+>$d^P8CWF>)sIOgTfk>zzN?7QlX#<2 zT2yHa8de+vDE?GDQ2M^+00?kq-BtE>Hj;hXjamXrMa7vD$;oZ_3*3h6$h5kiBX_IH zmP&B6H)b?gIhVOu&9ENSA7dd=B4S53&ER9}r1GSKn2K_cgh*8Lz9;HwITbt^&lUsK z3|Lf`9Ssu8mwV4#r+b+T-oJ_W-%pIJmy{6LO+RWAZ~HE+d)SoORRQ)M4swAWJDWOZ zn&)EM7G9*!%HTvh?n9^7+|kiQD)xSZhJX*G}s1dj(=U^;W0>VVbYoeSttw8pvm^i_z`+JnZ69F zwEzb7TGcF8_imSc2Xr5>DNweJoq5JSwLu_pv;&Nop!23Pb0I&s``2!2K>X*yc+WU*$l~Qd&b#Ar= z9v5HYe13UT`%opTb}!Od_{st*-|$~`p!uLk;80-VL%WaxSS^G-7?F|2(P=UB@mpB9 zIR2CctT)yR-EV_%+l0DulD~eVE*38k_Y*$3-JRDDHPMC-v}XaTyJ~vg6~$-o>qmeJSN2t$4o$YL#`e1#85_I~;2pB9)UMLGf@Q1iLvP^& z(c3|e_=?UA;zz+u(9=TnnaL#$3N6YRnieX5Oj}GxY`ZWR?=k1v8+0EeAmb;KN8U@` zTOtoP^=*ncL(X4Sz~H3?Q1H05v={y;oMt8L=tl`i(ocM1g!1WoIGX~_G~YUeuWWHI z^)~u{wD2}8U+>?|{xlfb2>O_O{}6nCLEtf0NVDX57w*4N+NIwmJ{$&H-NIoZ!GaKH z5Z}nzqR=IVhlhqFC?k?`z9TOzv5T0ixr^G1z1NFH8>fEnxy4A8UItj>oYCV4Ww~Y% zXuGTj^AU9@c&Fb_qR1kHW7%Wlvwvk!XGmnc=y+=KX=iHLY|w5@tVXUS6NV7N=0wc+ zGH?3u=xS|cJS=pWJc_>fdHX)MB zVXs^n(zz;C(r>;pYIxenXcX7dt&{`LIq`J4Z8@#ky9#!yHVWNTyVVZU#Iof(hwK)J z0z11N+xXh}ygEZba)QcUWglY|8;A9e$q9LFrQ_W+&(6=$pJq_hk=0Ps<5S{r;tmBS z@r3!DuDxEPug3$@^;K(X3H3J=H>TUByk{kPWO8TyeY^_Z^mg{{URWl}(56U2g~n?w z0bH-fUDmJ5h6=~oBOSM4n;wx03pgKWarq$zf9$5>-aeLO-5+3(b5!+19uZ3SAvBL5 z92KDgu_?LBGVRM&-QeB<>kZaSiJjj zH;OlhJo?4z%Pi{+>oWQe_^m1CDI~_oD$c4yTYB5z3o=5UIBi9nnOfcAP3p}`fx|BK zu591sSH*9f^%A7g3ABI2Xbo2LzLCa8evbBzjEn%FJ0wY`EF}&|qe!QZ!HiW*%#U@a zIjD@OBdaw0NYmI=qbi#(=di4^!fZBea&skg4Ze#z)4+4ZpZQ{gV1vMS7m7>$4 zqo7&4;k;_K_QGe%+rrP(-($O?nz^(v%}W-{wpt9{EEIyl%NnwvH#;oDJ|5u`omr9Zt;qE7A zUj_5GL-Ql0!JYF_gO|p)mR@#Sf1S1gbVSr3d1chB-}nQRnt=?Tx)KmgkzmEG=3v_} zSz`mxgWyfRv6AD?$9YCmlHMoQk1>pK(~?KUbcAS2G887y1MrCDd5$2{2nfQ70$ol8 zDz29FmjrpRb+J+4rmeIo?JzGbd`bPn>{+&Wx;fr>2KB?VMhr*XN=#tX#ZVf#!0>XU zlUz1r*@QYIwgA33$r(Xi_!>TY4`P8?!EIV0qaK8J*Fv0|=sq*i2K4y3Uycal;@_lA zWty}YB{shYDHtm@DAKE}Yldl=>$j*et8QzEY9#77$yv!h33cVGm0?$=TmG_3siT5~?`O@7HHJ;bNU&p-}?_M1*(} zZPORht-XF-W!SA>BfKPwe_1K@W>;wJaG7#`0q5KrV1L53!^x+oN^8#dVERzg@|iD+ zs`hT8?p?XWueWdCRX2G?iN_gMf2|IE@bS0>J-O3w!=XJBrwXB7&R?3H>wGyOsvsIC zj3#*W2MK3#s=awzsb47^LfNyqTfG-;Ok7t?um27MAD!o4M`G!7y{~`tj($|`+^}5p zzYqG2eu(qD&%0~a>f}Bb`G}TWSRfghQAo_9>_MDVkl%3 zTW97dF&tTunHBpCaZfmd2$ZCdRsALh>(j@+jU_B=A@dlapWl-#n!k%tM758Hm3fM_ zi_Ssh!W%6xNulnsQfsSqk#x~bXp{ppjMlV`(JR;ON|1c#)su1!fw#b_>Ndf$1N#{F z9pGS1bJFt$JeX{xx?L-1@p_DTJj=+*q{tW?kI7(fpa{5pZn@VpV*njj6TL{i(2ZSP z5JMC$hfl`WwzO)g0Y?pAB>egi}0*mlAEq&QG|1B8DWgb-nlRD*E6=To>u zf8T#5@p01Gy{@lTfq)Q!kohM1!xQqN+uzY-&28uD@O3UA>X&G(*_Xx^)274vRVrQ> zrjOsAD`d0|x|Vh=LuuV)coqt-!^{OXMP%N|5ht=;!>j6FGs>b4Xw`n@tdp%2MR&UY&nEw~BQZoEu7U5oMnzoT zljBL`Ke7BZ?02r*?;c*qG&50s{Qurp_V)w4t9*fNdA+i(B85&3Mb;E48*$TYrAVE= z6m6O$pU_?eFhQYMMG{?JjIlf5k92|+&P2A2bS`gvWzF8aRTT>hDTW)k1L2`ljfp&S z2C9G-Ck+e!C3&|5PQ0*}W9b}{GMxiHH9c`A4I_@aJ^@ear|ME91_79MIXELqiEK&d zy5*pb2TxVpg2WsIL!~vZP_5 z@;Tjl!T+?itrsS2-5;)|`O}P;kWfq}ilH$8ZTMT8m%Tip-moaImGIC?bVN=@$Yr6j zpBvn;Da>Ir?a0hmJ#K^P5}-$d(l=ixXJfTnJfW|HMOGJtM;KNvWmU3irxyITUKDBW zs2G)$juTwO;ltmQ;A-?|_J=Z3xchH4<6CaKybnDcy_^C}G6Z(I-(A`T8M%pmKYS;y z2FnTwDeDM2(yPPX?5eKf)zu0(`Yc2I?^6>Pp4Vqr9f;&s`CyNsW+7?X{oS6=fgB%k z4ry=De#B|}Xr_YqhO7U7Y^8(Pz!{t9O$CbHOUlOZs5FI21jlQT0D z^vX7x+*+6EB!zHXry*@3Kq%%(86|H-(1L_yn^swZo+-w|=?g`plsizaN^>(6Y4mL| zyNsWD41W3gnl&tpJmUH-(;|qaFByUqA!%n%)oSbjFm=wbr7h8Nh z+-{IdR&=Gt)#{@4SdQg5#?pqIehy~f4^Gr@4hlG*%jF!5)^!HeACz4Bw$*j#Z1Qxv z<|niB?RI1mWbnG+Xh_jy#T^$nB7D}WQk!0UaB&AAwDcw)ZXU?ks&~U)?k!OH(4UUk zd0kc+I3q__k=R7EKk?#$HG7X2LIcl%7ml48<5nx?-(tU$5SV zssByDZ1xOdF0m+$rBq_YdgNJDtm>irzkK(<-D+T`!tWNsw$o_2jAAN+P{h)BHI>h! zWH{oCdqQ^{Z0IAmGv1TimFbS}7sz@0@X0X?ziw+>7BIblgo!f!4^S7Uzb>(p=cU07 z%8pWJ<}SLb8B%Gw56&*sqsuOn?^Y#Pm2HxlzBl-3giG0}S&44BYl-kul~bMJEgm$Kyi_ToX@>QC0D= zPPo`Br5)`Twk;g7m%;43B*uUNbya7cPTBMpw1i_^OgJ4m_Y@1+dWNE_|3zH7b9A2#jk+Gr9l`>Pz|>5(1BdU-aK8ipTxEyvS>V`oNp4I0Rw-kkgR0f@VMYnbKqx3v{}Oxd^6R)WUfZPNV&S zFF6Ny1Ie>y$~B*OnmLVW2=^U$Ol?rY2Ha~-BlMWh4~JOw33+^epb%I%1t~tw&2jKt zxkB!5ZnQsn;M*Xn!n@o}yJ2R_Kof=V+;c(B3>}WJu&27>B{M*qUC^gc+F)stun1I`Tb!PMup3o zS^ZQh%0&cSUf8%IzmjRj!!+yGwQjR>zgarQfYJBk0b-+FZHlW@$a#HlPb-Hn@#gC! zslKEX+gsLn23u6LoLt*j;+k6Ab9D`~5uG(Zk3K`Z0P1~GnbA`wTTXXfP-Q1pTU%am zBd(%F7-WZn)EgmFpa^dEsS&WfAo|?W1E-AbKR)X_#$TUxrVy8uz`1FFk=#g#*C#)Q zH`eiJlQ)Oo=M&QQX%cZf)q+QBB0K%&nzFl4iXQfs#>-JK69EXM607SP=Udx(KJN0{i`BVUfx+~)1JRPHhdg3Ny zw#sa-8&HASrF9NM%*dzVw`94sZQ{=2B+sINLppGoHUdus$-Li1Zyw9{{dH@|d*W!m`flXK}5R#!u|E^rz) zUk_opUB5iqZW<$<8vJh}hNN=*K-f%!rZN8{MLw;-#EQY8deQZs{fh1}<290Yn$!?% zoYD!8Dh$qPlo{eI1Q509s(Wo^x38pBdDU@cZC7ZmDbcfI05)xshuhf363 zz|r9q&vkm|d11}V=8bN&n0*F<*1ki(b_b|#j^BO(U7WN$jwiGI2sW~~+)}gm8$@yZ ze)|#xA{W=WB)#XK2*6kwb#h^ojB{E!u3FSRB^DO&Pf=9R_}{UuGL%Php9pG>#oQEK zHrfN^J7s_iS8kn@PL{Lz2~~jS1HLn^S$$53o}zzaJS$uLrOg_JKj%i`LpN-9u z^FbC3J3Ei^b-X()g?q_%C-w6oe>6M=fVS7?m^sWwX6$N@$h?r6oE3BQ{h?!@XAZ%I zFl=p^i7zp3@zDJ8duqbkGFyzii}jfrW1et)DoUVWEQ1dcJlN8dK3L6TPS)M%AdD1L zlUTE!pc?1HEc{|9h8sq1vXSTF-nALfI8T|@h9DbdGX&M2pvt0AR9yqEZB^M&Eh3zc zHuTy8Nf9vMIvP=h6jND*xR^{|kn&2u=}vD|vEc>p(}E88){Rr|BjY_?yyCLMr=eT% z0RQ=Va{J~cCS(UI??Z9*uk*HZO_)h5oQM)(GWBsel_ou;?gxJkzt3Bi3j;@-7NcvH zaV2w@=}q)orY?D5+}_)os(@$1T7EyXBVYY}o;$(z)mTUiR-KgdY5k)T+5{uC-*V)ZooxDC)eCs?%h_^3_stJU(T?mG6W zP-`>C4D9mP1o0@piS==ZtSQ~{Sh>o_(?0U7dygZI&SA_fZI$QWX>|Uih&nf`7-9G) zJ^F|l{-jHJ{AH?E@&A(IjFSIE-K=*kuluLV{F^uWF_hsz{q?}4|4wrL|5^W&K`KN2 zf97qRoc5_j+erUfkS^`)#Vj}bai(UvN0)M@{)n%s#z=!n`@`p#$E=xg<**qgy9A-I z1xYcQT2knqGt^}0nP9#4pOS`RpTf@01wO>8*||CN+tl!0wJWoarV0stAFZX1;H6a) z%rXr`>2KkzDPtr6;a$PXE5XYQv*70yOeaR%$}JaJZ~D+58i+xjdDE&#~Ef`oXV-@x~qumOL~XX1)tx7)SCl5ITty$Shn_K?&bM`?<$A)b3f;$ z(CaF)FOaN$#3%5t+&hLaC)+-^`KqhsERw&t_~hHsRixiu%*q=)`1OFnMogg*i}~SU zON5{SvCB9 z>id)o&CH5-0bg_K(z9(Kiel$gyaGobY+Q{8gz`15b@?}KwT6r^Wu$44_jW&tC}>O^Y`68-@Ci-5n4{40sB5}t@h7zCwIdmGyQ_) z3jj55mY33L>!x~e+{J5n?Bl{?2RUtza1OZM!gtID?dj>=;bGyb!r$_{7k zexyFIKAHIu7`d$Y^5DF9)B#zN{bppb6`7r3Q+4bddmr5xhm4>87{6nM`lz1iUpRlx zW%oE5Y5oK_-=J`^Py=ySqO{+|)7OS0#tJ3%iJC0mHP84hO?WTe&m|H58M_=TdN>~6 z)vsA2(crg#=-MvHJ&r_p1i$sQOM0P9F@1HuSj4p`?v2>gEz(GDsf`7_eYZ`pKzn%# zoyC;Iz0W-U!kceztH*EK1_Yj|aO)gvnKw;-T~A$fI_#vMm;RfxMWO?M8p->46pj?H zk}dPJMY>0oO>jaX0cd2jxKB(!+5;uoLecjrVW1y6&9troiP#Z8T~|enhcN1f4G(BH zSYjw;c^F4`r+KA&(iGRpAMRL6sQi`^=a-e%h*Azu9yahr_O8(nhono*B)19dfXf8? zf}jb}zBupGb>5gNZZO8^)}JPb+h;gRCUtS9U0}D=9Jg>3mW*Hb609bA z#JGP{`&-$ZZfIZnS0m46uk8U27Xtw4az!#QkrEXx+OkstNx6stz3vK&$Rk?x+#xlQ z#{(O;b?;*NVykkj)Xx`~vjKY~T^| zd!W~Ao_xu1OA^Zg@Z~ZYf7}Yds@G|qs(uj)b-j~2LW~(wvFE%vPIpFd#eafG-scE? zlV7wvz(A2vP!obi?G@j;21QmstEAzXtXr+`0b#q=r%W zdwm^hFXx$6Kp@7bhr1N%#)v|2GmBk=1zd7Ep~96k_K-uavL$cAW3S}ZaAx+47k1*r zqNjk&Pvkz6`Nxa}t+>t*aT-aag)->ji!wtN9YLh;u&N%?6Hh4>uh}HrOhXQV9wUF2 zy@HzY+xIFZ?^sn{d9M$`502S=t*dZ#BCT2>B^h62kxbOsN*!B;D(qY|YozRPqamV= zil@(iRSXzQ_v2pCOGR*0QeGAH!V5v1v`C>pU{r)wt8car(Wh+-2|lrvH?+$OR&&W8 z%L$U;#V{Szr9~2K*_gekcBi9OW{qB#e@S!3F4dH5SuoJQIMx4Dx>h%34hSzCORpfG z5z$AmYDFel(g9FyAJCDz>$E(p5PB(%o|yHj>^zJDg|&n;Z`SdP2%RL@eUSMG;}Fcn%$a1b{3Q<#={w09C}nFpuOV;7Ou zfaZVd-0m;vR{DE{4m<4iKaQSV+uhT-RZlj1sBbTT)2IG3U$JNBc&#RojjDm4zpa$E z3Y}uLbaxup`Y3R3G;{(0S5{no+m9h7pnkM0-~kBsbFR(cK}{-YPZrUI&4?fY$`jG6 z2v1n`z1I-beGSmA*QZRrn}Ar6vovuWy1A+JZkkNrr2G&$8k=76#6!u|OyG)2F?V~I zaBp7}YePRzYDq|-r^ygO|xm=474i`+dpfDhT_n9TQjOJ1TuQOpj{+%(qOFmUm z<`&z|qh%nyRvhZ%WjVFWxlXL$y0@9zN{V1F)mO06<@)5B6<)4`t)0WyG;^Iru{36f zuQdlp3i>`3X_GN6E)|uIZ4I1u3sUJ9r(c>p_^-;WvU4Tv{RYO?kzctcwH9$Q z(^^tERCS-vcs3mln4@OqN37%A1bGA+rtHmZr{#2h8hKvYePzxncd|T~+GJ76Jyu`S zXu+>UrSL&yDaGYg4NR}Os3XziQr+N5=~wR|`cxIqF$}zPaTi{**VT7kk7}8z(f^A= zv|3+cIfl#BT2Du?A5L=_*!aiil!vCd(b^y`{k)#W31a^KB3Sr@A>P(s!f*~Tky71pSvZ?st-t?VC$;Doy7TBC;1rW z%3>py;oQaDe>a80C+ZO6@tZ^aQHI&1o3~SE<{m@smvdr5jo$28FNgIjT^;+6+>JsJ zn~H7vE6A4@{?X3xHbD2eMaEzoFO%{`{W(Z6*g^jhdTTJghvw_O7ijSN*^0!iJLs!3 z2!#kJo~-eB9uC&a&cAuE*zD2B1zb!tZ6&8USDNGRe|Nzz9<+3i%s04QJCH9Ba0JOX z_vRSb>8_b?5Y{Pqq#Z=p*P^u=JSVLyb~MK_?XforQ>-^UDaL0YUM8m|?@xHp&cXjH z`;Hgs>&u{WsI42v5%;%bkWAbgIh|7FoojdKDKGFt*AD>v;QZ_)|MfSXSGt=oL zs11GtA#ax>N&7r)DxeoK66Ira4IR`JFxkXYzTV`T2VoJz%fo0WK%B(RwviP`S5E{} z8UoljWhaqUe3N3aZy)ASbN9#P$d|)g&OR> z9O6T9n?VqT5xj(sJ2&}CeF4_ssW-L*T9tb?&~P8bYgLa=@70B!h>;Hl*A9oR_@-ao z4J7s_{D$3^;)e|j2Lo;Hv0es!mcWNYGnhp7$AQBDOUv;_YDM7`o-62@%ccgRY;~{= zEQQUZ3NX;-^vvMl=kv-|+=z2`OZ1l#1FqU9o7j6^zE9IVeH|HJwVA>v8Lspl^u1b9 z!5R;1ZgwxFK%GZ~9YG1?>kx{2l@*;H8XNFjIw)7r?&tA#> zoZ)epsF8X3T}(75mda@4N46dWU%5buaVqvcUd%>7T`=hKin+F^M(WBUM=3KW zp`eLvwf8`EsXNcb$L9ezD~t&XwZ$&n-lo>cEAEz99ghFic!cn|#7rbb08Arv$40 zvCz$63{?J%WJQ{N)Kv8ygFwUVh;Psp*GMwl1R-WGDN_;)DO_brxA4NOQL$1xc^xt{ zloHY2z2-QfPOF0aaOz2EWJDq76+vo0qpvXY7F&tundfmkQ*bFIIaq{tsv$759?Ni= z)q^eY&kw>I3?s|P2%5RHNK>2KsAR&UAN1TXG@BI10KTv~8*Vx&%jR1zHBNQ8UBO zo&F^lPDcE0L^o;Jg#hCw1aj7mq+=~lfsx+yb?q&&>Iusc7Rt?Kd{IsJeMc$INvmwp zNn+idw#C-sJCX3q7}qme)$_eBA+AO%N?9u1^)`Afypr7Wbqv>?D*8ocV@gVPclZ#B zUyv!*E$G=8kxsYH;pT353QvL{tNS7lLZY+}By_IMMKi@brJ03t z1tTdT^VIQ?+t6mulxC+xP3GN3dGCow*2>Arb_B-=j0EV%tayzs~&Z|(KNa2EfLSg23%E9qbHZQ}GorbdvAgJcI>TrOxM5g4C4 z`|{=3n(tN+U6OO0!N(jW^^i6wN2q;rwtdwTFZHWG$dGbo!;{eF9=~E45x9k$z}p%z zoO%4`scF;VA)AS1G_{CDpB(-}d{^VU+fE=~y_J0Qa^rf(vPibEbV)olQiR?+ z<|m0jYQY_rec{A-L0kVrEcV=5lRU^yzxMo*MQc+4-aF^E3dMB8Z@kT^!D?aLf$gTPJ~g&x%h_MipKPo!-M|-rW!^@7`g`+I%8H=)73+=&xH z?4g_xnp2)fNAq(JrAxQ?yA=1kT?n93thVoCMNu<8!l~RXEFEj4u@_{)Yt)nTlB-ob z>e_^V0s4Tmd6XSiknhb`%*b0BC`@UT{DBGW$n&xI=R#nSGTOfickvK`FGqdj4hU43 zW~L{G#f7TUW^LopxB#V^F-hvkIJh`!A3u0=V_(hjqo)l`l^*soC#(nyMHc6MXnV|E z0^&V~QlIc@O_*^!H{JKIcnQCVehbO*;cBS~2) z?Z)9^MzLhFT%XHvnM2ABk0QkeVTJX|1mO>)FTbMqUmtRwOEJex4_lKIjT2{nEl&r6 zEw21=jBjPX+#hD_hd3=&x<)2~%@30Dt9$AQ@GV}xWjkTp!z4HVAzSy2vZ1~gI4Lda z7EoDG>LJh?=NOQ9jx;w}N>o}j$~fC4mHR{!B8EZCRQSF5q-;I40+)k_EpzmtxhwI^ zBEIq%)QziLZNal(Y*VEsd(>wevw~{lF(fd>Q@E)?IveW}U>S6O0$Y(^;31wLi;gYi zJ1%}RV^r^jlFm?5OiV%Oh1JMFK+sg<6G9()jp4lA;8`~)dSeC~XXSH5%eA%O8sQ6b z)2pAm1lyWw49!PN@x#9f5AvLy?pj{#T7J)j6T5R4@BOPFmHyo%Vws_tqvz^g^*lvb z5m_p_{Q>WI{#@^%l{ zz)_F}(?O%%{u!*F+?179&W!r8xQ>j_)*m~owzuF}o6n2Z8r+WF^mcyV7WZ1q4rNm@ zi+Zfs-EsT^;=z{bMQ(?PrN$|V3Mko3QCdIgfN9_llsKhKI$ez?yHi>zj7_+#M9m3# zr<|CHndH}=#tD*TBH>V^blKNBkew?lrpukvAG@0SpJyy;GuEq`Ip6q{q@oQp)Q8O@ zdu(>N^hFq_!`XzSKR?C3S@}Wo)#G!cg?^7gAY_wwp~1!Dmwip^2*dPf5%}r?Nmc1V zv~|&1yw5d(95XZ(+!s1d*9bPvrLcZ-O`#BEsC#Y-wXrZX-Hfr%A=pQoOkcyDfTg72 zg_^1zl@jv^4Ae==vcOX`?0>nXRWn%)SIR?Z6=Yd1>51v-q7^g$D94B%jLNNKFNp!IIpfB$-JqTMCLwB4_{?ms~Na3+| z7U>c}_N%q?lJ=vGFM*|wjUsDW2flV2+ZRQt@%$Lh^Sz82_GsZR8aaBWIqYrwYBO8d zb8CV1g7G;HnR=M~{_q+&8sMkFdX4RN{*Amw3Yqlh&WUPkZcI`U9;3K%qd zPW=GfJ;$Y%^M9%_a|C}{E1zvv**?zBrtmz!T3uQZYUrP?iXXQ%vDvwlc)N76IqmVe zJTD{INJU%gi6!W|1r2yP2%ensUxMtR=GL2xN7sy+=w|gUHbY-VnRG6M(}X5`?9%;C z^%-slr^2fk;9>>r*e6N$^qglhx0#gyFFFnLiQKcUl|<|7@)wt7Mc=%|3;>Kforxhd z*)FU4BtBTFD{jkLemg#5K9E)My|Z3tOpn|&-Oapc9+{kg&8?}BuBj2}>i4+>1^G=9 z@dw9??nne~(=!(|yW`H@!a$s&-)npMsPkoFN;H)5{nO@ zPt5P<5rog%gTs06kH6djTyPd(tl3Yp?p-gfVDA&3w?AiBXO=#tF`HL>Tx@F|pz2L| z>mLipHFfutgj_Xa)YLO2G?)~CD3HSjKooSf#m$>6;KRGNS;`SV*2Orm-cO;wzx>z9}?YSUEqY z1GX)|7@Y{#uhRE{*{H;Z3{56elW~Ud*zb%CTUvpr3 zuuwxXy2!yTt^*dHo2Rc#om+5p*-6)nPL+!TO<)Q4i%A0Hr!8#G%PokI9E%{Dyz$Gv_W^}l1}#fd%jT| zsOGSR4*&X&=kb@f*B6?R8I$v$^H~qV(!3s?Z^++==Gje0eLA;_+uyVDL#5nKi`*(g z{x0VI-V*&ijB9YGcF@D`*t4(`O4E>6s!6|hH{~^@zb)lX{|aG!%H#Nz&vCfT4_+t$ z=S1VzWnUnwZV#_sYkpS=U0`^w2o=F_d7~2(8}PGYnMN?_GchACk_xx;NI<&x`(E)sp5Xh2!Nn&_KKV=vnLd zxE`&T+W+0b`j>tG5+kqS(dRJQUgpNmy0+lPwEt!J|EQFnFbF4~C#34;nOVs}nD~S-bnUwS#N+*3JJZhR2is z4ZL3xNdI5fI{t0#t}S=7_J0DGO6bGtKGS9D2@9S6Bo+w5{E8%P5rlV|xGe}|GpXjT z%kd@HpY%uC@282+{BoieZs-X=f1--lTRK9ru^CP+-mEOu@dvLV6YXdBQ}x-o^#392 zE1=@amac;&KnNZnxVuBJMuWQscMky?cjykm-Q9v)aCdiicXxMae&&5|X5P%d)?Eu4 zy8E6wRp;zob*k#-SsT(`>WXxpx|&S~KGQ_I;Eh*9Jz{LnPFQCh6q7&l&4D+Rp+q|5 zn=23UX8vIxO^1J+yZqLKiC4w_L{N=$bh2=oh2c>O)7Va8+=Nnd3#$T?9FGg1Z9VSA z1Ao1qXY0|qy3U<#ZTS(`VXfiQ_vMZOF__4=22XN` zNFTpx*%*vLrUWBr+ujwikUXy-sNvMQKpqoXJzx?GTDQe+J!@%84eq8Gj_}h2MH;pB zRFnRZb3K+UC=UlDClnz&G2W68@wj7{nn@R7Id5TH0Jc>CSwZk#g13s;gKo*@&En$^ zInMm2EyEXMYU#6m9_v2V*<*#xVRLMpHlTZ1@=K^u>ZqwrEX>wkjNNhL=C_CrGSKpl zl4hDZ6NGqkjNzt_3Rlvgy5SCcY5a`dg2_;e?FwoX3D;C}2AW%mguoKe1u5C}sj7g1 zuvwDTr#(y5+6bd2p5Lc`&suNFEiJl+PwQ5@K@6$$_;qF}q6{8{1 zrY{=2mspvPr(fug%2%(@OiwauJBP@&_)PaQ{%KlklTU(Q2%j3^5?SLvxe;`BuI?Tp zeGomMR_QJ;^Og+9XFdk_`5~7zsfx$2VkQRl*nDkZ*oIUq^x-RvUgx%W>^}lG+D^U3 zn4=~?mey+ke^qGY=@#_jy+&R3pAH>nmd-r4Ch65CveRVr=vvk(lM0d|Npe$B-_4>) zHv1Ju*MGmNIiO3Vbv+1bF}>27KE+|Q(1>Gth(8XQ&Yatf;d}yQ?w_&`7pt}Sb6GLh zBvq-p%4Q|OaVm@iGa67n=!%o;ir0fWCF-`#;&gBtL89__s$3=$rkxxig!%@d8qLB< z!xis%^5eTf{?(IA7bcA>C4Bcmc__A5QV(JKY)`Bt-J34CCs#ZL(N*F_L=x#0*F2uA z3x(DJlqJRIhzPYF2bwokCbhUzA)AX*2tF&}Lo1t-0r-s)TL+R7YpoGtZp zrubV?rA{(2SqlWx9SU=SOT3C=SlWkI>6YW{AS;3_o&l5CKkBck%4%<68Rg!vjW#2k zcD67D+Z#5%0}dd4mDWb=cD2o7!8wkCJ38cY^qUmjCF~qoiS8SQ31;Ku0+{ib$37(| zXu!_Yrgia8s+oD&M_Xq|Q1#Ka`bEEHKJyGW;fK!G^ZG2uYH=mn;D5e6TRr3Q4kNfQ zW@=|SS(<-my6a!YeocNLMuo!-U}Az&!?q?RlY1`?mP=^}3>_z71*2=#ljKUeuG*{2 zyQQ|OZX<;Zb2(x>mX!6srUqIbkHy&xwA!?IO%KZJC*MdXqyRoYWP|eLCgTtmYMxKBCI+IYASYZ6#Q}%%m-w?QqFDn+{bFeC^d>B}>)0<_uA;vi0I9<_|kQ?rq=E zcW*-2gaLR;0T$K153%s97~lvdTsWFQp_gc01#YQ%Y_S?%A2>qsAA;e0Z9!O*!+ z_EV++2jJ`{bKeYm-ds9U%}d03L_NB5TWpiQMJ@IF%*FR2^E4=USD=r z9Cz#t3zMyd)3$3%nu!$ov!$qyJj1h)I3sf^BY!XM*FWDHNaZGm!tijl&1sOm=LDBJ zXbs$JJ@QlTiwxTV7Ax3N8HOXH2gbDeKCTFPWIs;H_Ve{9h64?#u0dj8qQU45dcLrW z3%C$<@=FeaoWq3vC4G$$yOb1oY$jiCdE&%p{-0#J-8e*z`HViLS$CEx@&DsQc zrofE4Ck~hILcLSmRD`S)(d!#C$`azMgITY+?PZQ9X6a%HIAk;cIr>X_S1>?7eCsH- z-Ydj7Tew<2m&y#7*(BEWCGg5;%_t$uKU&x6*d1{{kds-t?kydIozwjxS>q4hv{ zWf#XnOjT|2^&-=|+J%RfCr@ZASAcew* z$&`^~$J|RXC*97Ra;+X5=f^3N8*aAhNDn7fjdXiX#bI89Bs;(@`Qmii`=&Un?PFEd z(>f{^*5SyiBnGq((U%iOQ*@s1KS^r$UU6R(t>`zlpq#heGTTEaGiBnPimszMaj(Mv zxyS91+lV8l{1(R8HR-Zl*`h~{LyJtNwuOm=O-0eL-_{}f%*yBus=+XTbqtjCL_ee}3F zWJh}_3Qj@2WGP9rgvQU)Y^)u9ywd%>5!x;vd_QuoJbW-dsp6d%p4W0Z*_dn)3y{8l^qB)}u*xZT5CTnBW0P732Kszg!v z_VXBZ&5yeK%8^Zo{+T)v^Z_yBol=VCA|Jk5OCwgO%KuVbmn-Q_jC+oy(;K|IM zYV2Y1C(lR=ABCLBb_bkpyGgo~hFwJQoJXJi>=1i$+5`R|d$NG4w-y7sgEN#108H`T z;f*f8t<=f;B^sZ`jNV9zxye=Xf{svuikZ!nhaU5&L{5dBK2-qPRv#YRlksL`G-o7J zyQQC#IQ(coY&b0kcsPxQ7Zn*u z3)_eI8AOsrLhEtr3~#~m)g3W?oC8f=cVXqaxY-VMDE-) zP5kPO_KAqh*Qt%_%7J7HW|U%ZC`g!z>;RQ%`_TJJCaPcY@z6>ndSBj z+u}L3*PSwv0#I5WGdI=t z(K+Y$M4Z$WhLV9k^*?he=JxAZyPVqI~L?rH}$oZfWae7jJ?7eTFT-ktOT z3D=Gtq!cW;DVMfpdu!8G!MMZ0nVA%9=lU1|VVE#sW$Gq5_Z7iNWtwGv#f&_nHR{Z} z8nfut-53R$a562Wd#KkMs!>S@tMgb)b#xXsku{(Rrto`^mCdmM|4Y(yX7f4x<1)qg zJ?yNm-2u&`Ucy8penu=vm!UQ6qqxgk`%t}a3G?}3HA3qR`=#CkJo8tw|MXJkU{zIB zaaYu`w75K)SwdUQhjdz2A{$yM1VA^OEweL_WZ8P})LC4Nw5xkpEvM5lto`JZn8p?} z?v7H<9r0(A;ay$pxM@&X{AK*K6u2@nxq7k&WySQ$fNXbed&a~NQr+Vfy?(ZEi(8on z2pHPaZnhoHZk?agyjb+vcQaZoNZ)HYn&z_|tD`oNZ|(V*dour|P3RP9&0eGS3^0pt zG26lmt;OT1has{KA^iMwPtYm)(vmJdeKNpH^lpMS(baTVj}KCmq;Z01_JlrRJ}_ zfxEcO%6m2<4Se9TVL!b5*(0JRWIJ-JGNN*z^7!V|2E6j}hQkoCxCH>@kaAeWMe$Wk z8Je{M>&nunoh$f_adtR0s@?91>p=Nry)N_I0)1EX()Cy->o}F;Q9c!hadga^*%yN1 z=;W5EzI3;rVar(Jh>b7$&T7gs&)K2gUm$0$vrhYIrS9~L5j-xMDW>LEihXn5GbnMK zhm6~fY7+u+*F}SxB4J@~@3R(eDeA1yJtp=AZo>0wK}#*iaC_k~txT#GB>$L;Q~m!W zw2wBV1^*fIyp^-63=nJ*#DRJ^+#w3jq3F?jXc_E zLZ7ccg1v($x9Lv``;fjoO+JT7weqOuWBt>Mc*WYbMz1zLr!{;LZEy0!T(=Sv0PXX# zpyuJfVE8p|Qzs1le7o8zyq%=;&vo}7oIWA+dd-RD1TMAFl{OjbmbN_50+$Q4dL$`YZJb$3=Cs~eT!nCeKQz9#O#mJBf_`U}ymmH& zD=+QT5B=9SO8sK;N>irpc75Cv7YGXX*djYj;=9K{ElhFwL~ub^ACbAN%y)=l3&#i-uei`J(v(BL~~2u918Z0+FDWjdTw zYY6yd0sH*rc~wu4d`=@wr8JWep6v6FKp>u@{o08d-i^`fXv;{FMaVxXtpfBj{1v`e zw5&9F-&E7c?Ctm+Ppkjx4!)65QM=n&rOLWia)j@GKjbpPc$-G->niwoS6 zCgWbu!<<3&+@bCG7L&oI2U(9}iWWNy^~NW3-EG&Jf=wikOAEbDPCfKyi@ApxyrIsz z;?i{$quHXlg$K$Nmuri=ZL{?5)}fuViJ}*f% z<*-|n3Tti;J+%}VXVb^42s?`FH2<>~K)gn8^%183y{v}?oxcpFMJ3Q|^>?XN(cI?3 zdbMo$KYhC&=v@3>X~-!>Qew6MJx<%h7n;o+0Wd;*i+0b;LqYgPk8`Wv%em3w-PF8% z7W0F^dd?x|*@P6TfSQK@|MR^3y8o&(%&MpPTcXE2u(!POPAlZ0x9noVQTyeFgAxS% z_$UC8Y<=!58IVAA!7;V!a3KJIYmS z?H4RaKNF_SW+2K&-Z|o3SFb=A5oiOT3R<5%_fF>zCZc%~HrDVPg(TP79GVu%&FVFW zp@1$v^FN+j++D9Oa8wXH=laLS!y=PwnGM1rRAs%?Mp0nu7K3dGOxm(gRp{Kk+O7{B$|KK^VOPkycU zxa;pyDo;d+l&O?A)9rXaP_MY-n{9gUaAUsiW49{2s}y@`_o zzEtYHry#4htx9)aQl5|C&JV%yR$E3dT~_n6qfWBQ|4WTucZ6S}zji-LB}P$^QR&Rq zYY5l*dU{x0rW-(J1Uj9;AM;zEcJGX0&SO_0rFY8s`diz$Ew^CaaG`bVGhtTDGxIgP z_!k(^ZY_rkVO#0bNj%Fl+-h4X=mC)Sl4|wTobH0f6rS21pZ0?J)K$r}IYia+eE{@$ z&o=iU4#pP1Ejzp4ZS`q&8}8T~1)~aAq#99F<&zy3z$iF=sATqYy<^lUzAGKgR9#ZjKE6>f9-`$>J zK=sx<4C-5zog>mumJsSfP8gm>W=KJPyb#1=*U7oP7^CJutx!CMG~UvF?zE2N(kG}E zyKNrh2Q!yMi@l#O$Kjj3per($q@d!q&I=`} z^NOG2)5hvOE5zj@`flLVYTZ8l)fz8$DLjl`wC;|vU)Oxg`Dfi4h;A^S#pKq(+}tR? zJo~@v#i+fY{Y>S_)01&te_) z-WI5P4`7^xVqLF3ojY|vPVc}WZ#ffvN?v_ogbbT$jU+R){ob(UUf(|Y4A~=NOL$z` zJ!`_4RcTFbzkY3ku_;_91lJ?`Y3DMxU>zytiw4!{2-Z?)_r zvJMFX)&)^|m$>Q9S-nfjYrM>r(u&M#%IZ0Js|C;M?n-`St#S34&f`u`mh=&+Avre@ z<8A}{1!=Pto`Y?zB3_7Zo%)eC)9oLj%a!RMDs#Eq!K>FrbAcyCs@WO zZ??MuGZ0c~DpZRU+`0VA!w3HPjMd?zCcH)dpQ}rE9|toCMg@W=^&VJ_Er(7GT`$Y! z^qzV7U&1x|=)mth4iN8x>(j;7N>{rs_3l4_yx%oFnZ=v8of4lHjIQfNEKd5ypB-8A zhmSrjSdUROhm=m(J`Z+P+E|bwM^!~usnptVE}YGmzR*2Q3S`lkVD=Cq$+u{p^=B zlo!-dJEI5`@Li|2zoX|_D7EndaVmW&8ClkMsL?XDM_21h`rqQgG{XJDA5meII@mo71$q*1!h)#?uh zv$4?W{k`+cu|=)g=)Xa2PySaP%{zGbzL^jVxK)tDxoKum`BSwK$_ zDo*m96MCl@6Cr1vv^gh{XDQFu&fJrw*wrJR!XSB4#gU}o# zWwAEb2btVBsjEWV7*-T}|Ek`96=RKr(q)VJyY}DJZF%1>^Ub&5@4a!19#Z~xUM=R6euYg zW3E*1eV9SMxpgW7GzQy8Qz^!v2^NLS^-F4Z&|jVyS?{t^I;p)LefVttnh(<&^t9(u zoFvG?L!eLN@gF$iwbNoL)b8x>zihjrb-KB=aW!98rEqn)6VTYu`wFE=ye@kfwD z@H{b|U>sE`{r`t-2OE|mbbmhzhNvsFJZ&=(Nkf3}=>&K^^Nc~Nw^0!}w%yy3kkoEn zR~#}@Y)K;`%#@V=UrkuzV=j7VBBW?Oi6n{3;>=2GWvRa3&2iKcO%64&#v_c8v&!N- zUu&z3gK_A6C`!Pn*IC&0gyC5pSMcSDT)ns4M`p)Jx}*j4GnIH;jT&O_Mf={jEa~8CBmWL-jl5p86f z1oMxeL@8G^vL0794ODpXJ!EK#lQ>B*@K;2LB#u+Q+C4vBwK$yY*EfN7FbITd7p@r5 z8WNfMcot$%6n2$gMT6vWeVpBrKapMkE3W=p-XHr~-oK>7a85`qowpI-t7Gl|R;C;E zcUoJ$QnAXy9)0F`{*j2`26Q=ot_yXTMuf!zGKwL!C01GD@J7cxn+H@84_v@IYGzzk zGFJu@*033#se!kYtmznCK{KyqCSOaGC#n&_MB_lW>%=|XHaXrjt(&I*bqxWWW z7M`F>P%Cw91N%)3l1*5RWNmD1IbFsz3-Wo&TK)4N231!fCulCy=N$v5=vU4&I zb{c?RfjBOr_E>qN*$Cr%ZX4)(pCm_!l~Oy_&>-dMs#dV(YrJyMK4$@tCzt zXxDpJYHQXnNE|@SNqr6%oMpjYxeX@%B$UsW>Y9j&^#a?ODxd&l(aE)Y_w(3d@hQh; zG|BZ__+e4a1j7{929>~uCw^-2liPojZvN7JTc_OrrTVNBzP4B!a5YOAQ;cG_UWS<+ z_U$A{j{R)Xy^oPz+ROUc_B~H(ndwOh-18;uHw$^A#)CyKEpoy7^zwq@h_;40{%|GG!k*D!*GN1r``$s;@ZFEgs&c6`;HCzPqnwzo= z#XJ1}cWS6hf6aAiOs}e@|MwVU+6Yiz$AP?NuKNG~>-mqAmgnqZlYjP1`eU3YKiYI& zNUV!AMF7o#1v2l(%bqT-d8pM@jL`=JN=%r6px8(1Mf#8Nlhi)weO+Yy2DNGBz8?(9 zpb{>9WnqP^9FhH42t!FZ_@O0jFP9n9!MCRn0z!A0XP}1l2&Eev>H_Mo>E;a1 z2LmU$1QG?W$^rt+){bf#y;p4jDHQahmI}-03-P_zv{||hLCbEL78P8j=sufg&^8jg zH^2m|805P=O-8a$fy8@}@m#Pkc%N+$L$w6G!MLG*mr?e+3Fsp)ra)yfNMyq`h(!l7 zKaK61*#mNRVVPL@Dm5|EuWJF>e|yV~u9kSh|tVoKRR^djKIN^dwk z7OKo6npb}&81-v9kQ5YfJ){IiO`%v;a$+xC%A|Z`D|WbI zoCz}R01OY)`VcAc!D4>eYk*A%=82n!Po5vHB&72|cVhSKN)=PE>9yIQQf86S zjGK*-EXP8VsN#2(GL1FmIt+S1-&<#w$PUrpYfErT@|4jPu4m0jGO5u(#cF6u3g_jV ztF?q~wB8DZoP(?G5^6`yBPGyvbGSUKv%EcqY8#j5s6xh-_tqDf;sM<(zpyw|c*N1# zx)(P{YsONeUHOQZS|-(;JT-2sS{ygzNImoPF1Av+Z{{6s zPNjAz3#{fX)Z5qf^v4*nFe`wWsoBts0DtcsD$~+0GLpbn|4BS!}iL_uzh5$z>(>gd%1SF4Dq!cUC-9#bTjD@cN}ds~^y-T?Qop4@PpI8I*H z(AJQ!-WN7E)8K2csCot}tuOTV3|sOI#l`Y1Z!k$~ev8wVL1t}lXMu- zre-?H5^Jv=BaF_I5j5tf=FG-x)=lFbZ6Dm4rY*LH)N#&Sft@&$mem<^!pv?v(xe%D(9 zf5CVuje}lp6lNC0Y?i z8?e86oX+!UbH*DFX^zidIgwVZgIy*~DuXt;0@kb`23bGg1J?phkq%u8HJNmgq(-ZrJW>Y-E9*K+lyenI<+l|{zM|PUK=%+j7CS6!P^<wfBQN?oO1_pNj_=z5Cr^;~(-(#7j7@WnO6w-R&u z&`AS0m0`^F=QdOm53$mb;`Q(EkLoAqkda$pt)76U?3E)?Mk2N}v7t4;#ZYT31p%|a z-QKjmVLBwe#x9gan3C?3CttsZ_3&J;Z6?Q zl~QE!?Y5P+TWA)4L-<~}?S@bIxEyl%WmFRds5FL-e1UHsOvUU)3rE5o)lm&{z~ox! zu|=_cXNd7BRII)vkc?iAq{!VrfQ>P>`GYp?#9Mv+4PZftn|?}`paB_9SWaYGMYt^N zU|)$s{ONup<}ALWJwDfL2HWYzk3<*SC`-5jE@O1-T%Djwa=EnQz50=)6lwm}EDBqE z0=5UPj#1L4x5w7+*&IfF<`zRMj+X!g~NB+{{4nD*2Tlw zsj-wOBSk6)bZ}l8^{&z^j^FB z$Yu0Fo!+o==-T2-q8+E@P;CyDpGrF)8JT-H&E!WK{oeFo zT)yEHm8AE-&srwSH=d+?K_^Jy@AS~A?(ekxTrEYli%*#zNLJhY!xmte^8{_mX!A89 zEdMFM`K1jlq(BilBSvA+ou-AUjj zzFif0S6731*0-HETJs-z zdF+#mSC%}SqIrL+K12Dr+(I+R6qHO3_lf6TA*IgZkHAqT$qtR#lSATnqsw?S? zu7I8@OO08X!Yj8)L%EF^^J#~_JAv^wQKb2cv#;q0t)+3>;05n~!S2P*oi*yCEY&wW z|7_ZmGBr=J6*rK;4Tj3AVEN3YWa|n_Jggg8%XR@`*w=A2{zPnn6TU5&QW>@1)nLQd zYPZd240vvCN0t4snJ_5-pyB?3dVPv4bc{iP{t z`fOr=D~jdlp=+Fb;(4-e#N#$w90^;U9zS2e$%y(12m`M|Jpy)+{0H%mZNDyP7_0=* zAMLDjGu73@FU|*P?uRqQ4Hi1$HQ?Ts!otd@(E{sfzT2mR6hNMi-?eA$zedzh439b4W?va7&X#lsS{5~){V@%+=qyfwp9^Fm|w?>9K2ddz>h7dyqB z#Bk_*Agts??q;A>+&>_SQ1x6btGos_&u%sw@Xrp}t88MOy)jlua%;LR?U~VSoe^yu z$|ffWW&i1X;UwYxz8%-Rc#(nu&pkUYN0Wo2@j^Cc@Z@ec$!^$cs%wTxc1hm-E$7L% z$l~e1z9kYUbmBj+zG%TcXhzM&-=QZvAG-5n(*g}rW4wNKep3cnMta#uZ&fz zmfMu#%TrZ0Jtm)Gr5LnAGO18rTq@W;3=tnr)3e|8`K;BMW;HNYAd1W+QV`Y~Jo9-E zKjku;b%LqUpC>yvLsn$fHTcRrJZ%Kxe_JrakVbb{rL5q@5M|}Q7+WEyvRc>-vh{R( zxoOTF&1tm{8wx)Ds;E;M$#U-_acQH%OJ(`=w9#G|M2c|!7A+ToYI?qgaHWY;uzjZv zhNT)sf%hVgOarp(IF*q`l`~d%;s&yXG2Ogp^4X%k5J>vU4Vv+hFyykY>N>_ z(ren~h>}<*r~hOPh)(jW9${Bkp>i&+lXhC>lW)NFbF@oPowwcO4WuuPo-T4cI{jfp zdYn|?{IdbMd}?r;%QM|FYlWscP_Vag#>32EBeLYU;(Dpx_Pt|;iF4`HUTpEnJPnNO zrO8NP02!2lIQJm{9Nxy^X&>93jdvc5D^N<85RV&OdpixTqd8) zlOI)w7jIgiW+C$r2l*7_pJE{51f`_x)4V%H=-{Iw9c%;9;@ z+F)pQ(cMtAgB%H;M&QY>ULVk?lrL)W+IIX4nM?Bci5N(;y$EYBV*Ft0Gob*P_iy43 zuR=0UM_I}%6xg@}t~_s<+E2I$d5!0Uq{|CwtO1-yy`tJdF5az@``Kb{pLzv$TPtNn z0^?z7*3n(NE~UDZix3(Spx`D|+qhlVctaFq`g>w$I?2ri`gvk2Z)xW~_TSC)HWn9J zPp$`4>z-C^PCZ@8DiBO?JKw*fN<)6Tvb-D-M>$4z_N1hoy#kg~_gn-P%&PvAxQQ%0}P&S|~dAj*qp7Z=U`R>VJ?t**MNs~lw{{4M%bYxrPxX}a|Bc|x`Hy!N0a zJek!bNG6$Mn94`@k2~=|dE6?(jYa-B(ulTxiC@NiHr~(66CBooY?gM9Q06)j0Jvv; z`Q#z32Dt-OUi#GH>xtERr8uTm#djvP4jj`1q&c3>&ZSjToS#m-n{_HQZaJoB_g0~B z=5m5j58b*-ypkvhA#?1lE3RhgjP#-1+1K80a~+8+TqtTz*jtVsbdv}zJiDFX=K>By7O#5R@5!GkQc^IOq{*wz4D;QBzd@6&k@Xy7z7DK7P3Pq(vrR8LeInSjQ2UMrELUPZ^D(LYd z2sS55Y8XDAP%7?_b)P6BwOu7UJBspBFZx`?OJ1=~xQ{c&#r|BO*ti;J^<9QhJ7qnU zd(oxR5K7CL3Eyq)_m9dAq|D*Ka8^NM{X;u*!jiJC63$2@X1g9j@@}P$-g(JT6PQg7 zMgGm$B!6zH>x)1WD~j5arl@{LCfA6Nl)1`+sK_XHIdUp75lROtXw$u)Y{<|JLul3# zTTGG zwUZg1wOB-flEi!NJnRvCDv=bPC5hTP7iHh|C;7p#NOH!vQCOYl5O`Ig$q`Sa;>mvqZ2Rdy25r>xWW~}S78kFZxR?cg~dfZF4QGvU_e69 zeAYRhz_Exhjjj?)nw>SL(hmMSyN_rcOo)|^K#yU*%u{pzE>d4K1MV5K<3 z7Q_Qcu4H|e@rKJgpJxYB;`wc zP?tYSk~i!2E0z2s6}%1 z`SKA=jo52aCamZ8uwbdm5w7_u4r<|rL#%0%cop+Xsh*(*n~DaNgXJIv_cK7X7tz+y z84Vr$(s{@aK~1*Kb)UT|T(RG>`ZGuY??h$-xiKgvW!Pac==W;3fjfprW(6jNv5IHe;NEVnIvoUR)ETW;)E+tz^_hfjD zjBKQ#?@`Mf1^LZC#s9f6{eYE&h0Z{%^NZ1>*H#{+zGZO(6No*AvYVLINT2;)S0B z5Qme8Nd1>^`~i`$UaR##F7vVvTdL{f8n2gYO;GsgWJ?n1o;M#KHKEL4p&^1_Kj~yN z%k1IUeT^q;l;JY=0W_Y@ClQNp8*omWFS#6i1>0{0;H3ZHZI! zqy{S0QM^sH$3-@z@b{e|D_pp0T`vvp5p|e{0{n^m|3^r?$h{@ z8CNWEAM4ol=Wur$k^l3(Q0QD}@G?qJa1Oq~oFCHNUU`*?rR9-G-8*_Rgb2X^*nz>p zw?zMQ11=l{8AB*Ft`jZm=IXO98OgsV;QwqaIz})Mb}7QaTAR-5)^bc`Y3;zc`+-Aa zeu4gN%ZQWq`STi_z!(n3J!IO}cVtLHKML&=5mCIg=b={g@2~X8e=e@J0=ZwX&_D?Q z-cH{#kAqGv=Ap^t&+j;UEBS}54Dm=sZYHNTy{95w-48rDcDi{-_$QJ&QEj`(2>{1J zZSeCozTbAIpDwu#Eo$4@;chw@@|8;^?NzA%!+|ygF=7WO?88%z4Xf_B=85sIn`_^I zaXYyjiH#1amdAQ@bcaPs%-v8zpouo3%IY>+%D1gVCh_)dfbn;C>H+TWfj11UnNHKva z;N`V(f5FuK&SHZbLAj~no)RES zd^Y0;-|fTj;!@~@i-;!DYTqhpX^~Bs}hkv-kGrzQ-38`$XKzB&kYwd5AZ%*-}S$U7?ju znO$T_uRrjW$Y;VP)5a?TKxNb6sa9k22eumZU)9o&qY;`Vh{4b`gna@O%74Lsgy8-k zY(2a13-ZwtIh|JAAlc!`csN5-P_ZnYiPa@E!4MZQK`^`iJmvo3Hx9Ie#YWM0bSAFu z;mFM&_v_63`*gIj?MLu<)MBlK;p#Ypj{xII^rN%2oVs$>qupoFj@u70+;9*l`LUL zXAop_rA}N)4>B-zu*tZ>jRW)=rg)=RqTKsGNlHr!n2q|8E7f~ti`JA|E!>r3IyK0` zbA77v>^W0wGl*DXq9-R37HsU| z__R9Iz0-+rj&vA&=9#DcNW|v9npF!zNqzz>Q)kzqSBs=MmeA3=$h#xa?9PkPkkdT# zX_E(lvKw7Q;io>B%wYl$&2$m;(Xd{j@A;CJMlSRPoL!VDROH=$vZ)*9DCh{w<>+aY zSasQV+4$Ag${%uj^R^?0e$2 z$AUNCWQ6_{S;6iPu<#;$eO6>iT-Xg|L1AIsf}00!c72Yhs_IBI5}tdGvcF2l^zt-4 z5-yOEKv8A7u0YYVC|lEa6?xerq_EJw@y?iPK_#z6)t7<{c0pRK-<)aQ22p_!IKIB3 zcBnd&P|RnueQ>Q5xbfc6N!e2=e1epUcf(|Qum9sn+NuWmW}D!FVu$fSm{GTV!}%w| z_MPek=JYvRjj;F;%g;+9?O%9Hf;fB42~itStxBf)b?}(>JNeM5{RArrse9f}{^cA- z2-d+0VcV2@F%odp3nyt&WtaD;%;mqY2jElr&Xyd!otT)22$))(W=v(lbe~qKknwDE zs590QZpPrBB8%h>HhHdugJm5ZeY-G8pNd@f-T4MY8Io>Q_k~BFXoC2BJTMFuUJ@}SFu6yAwqBk){-y6S%~tlm>;nhI(nJ)N8dP6*-j}Vi~gl| z`$zlH?d?$er<1n}U-OrCgecU}tbyz~VCF-$Fbrq4rLxM*zUV&we&Vj|B&{9%*)xN4IRo)MJKMwd=C`}>q? zgmLmUml8dluJe~Oo}GBRF}!*hoFIbVVAf_`?yhR=2rYDYuOG#5Ld>EVe={spT(2?r zwM=$dQ}pPW`@!v#?n~wO4Q`W_6*UDtchjXuk+R;hraO{6qy3rFTE;~q5(u+nEoy{> zNp#Lk39aueeV0nS?gWzhi9$#!~2Ex=O26a?5RD!Ju_GAj}g16Eh#5n zTK;>G&kgH42IhtA();H+8JraTM_)cyt9(ZG^L@&>uqB}7YK-iEzF_s>B&jfDsa<}@ zWUf!cmzTQxH4B?~rKga4K0-w-oP)%Q1pNXbp*<(sS}ZQd}>HeUX;eldH+U{Hosy{sIHpcAZbY-yQFy z3kw!8$d}M1j1ScXjrjSJ4Zpr0CX=0tu#d~fHB8o~DJ^nbT=Se*dOzkgU*d#rC-r$B% zEwnN$?GB>dhrNIQt$$LrB>b!-{{0Ww=7X9y1k5Y(4A%{|U1y$exDu*Lx@xrW%jMU3 zOc5@BQG5#K;6P z=CeKNp}{d_5oSX}L*dLL;EnK30Z6vFr*rjBhGRr23bW=QW!>;glT_dRe_Z1~KGJT2 z@8GD|Km3UQq-9Hik>M+VS%lRm`*%z&?mk1}g~I(S$8RvYYtd%g+uzQ5>^9JL|15d`uUD2H zx$d5ABcm!{ET?NHn4_5H^0AyZZPo%lpFa zoF151-<77q1`y<%5q9#wJhN ztTsQS?-nWiqYPh0JmN=pi>`T}S`@~`(~Xnot}MFufcv(rzyGt|0u3Trfl-$Gl56f( zHPM#)3`j~z)Qh4+(&n3w&F3c>o{TWPi*m5F%+P)@fhH$o8m7J$?P8fBGd*D)Z{~C$ z`Kt8&_&AT8n#1xZfhHoQkY{(Ysw4_az3CT*dffd(rq;-eLp%ia^%TDmTY}*t*L9!_ zcX#cM-p_3(VJ{&)$CU%+I zfa=ubGGb;pYVAne=$(O$}MAMwu5&u*JWp6~BU+w3`&2 zccJu~iJ$vl2})$fCNsI*sLsDWZyJxM98*Lm1s&Ey$z|E3(tQL z&f_hS{#pI~)DlEP;Ac&KZVkK4syDQ+k+2K=Qmj3#pqQ_(&~_)x|C;z(l>Y}ScY{gT zg9naOhK1wY>o0rj66L!lUYHj}^>o&RDJmygj2rGrg-yujE0L7Be)Ig9H}_fXCd{#d zdE(TG-%>T;+e_O~1#)dCvroDe0^F0d#Q76R9CJ+#bNIcVciUQi9Usd!HSPw&H?Ofa zcAcWGyLG&-Ak*Uagj5|JeUq1PIzD|C`@!c<7bZ&<=IVI1a1bV`;LE${r=0(D0L5%z-wKfQMVf;7ZA7zSY^HSB-Eq*Z39dqWz z4)@O*q;=}9M*c7MOb>hQ+7)&e3 z&6Uw}TaDksL=I-pv}hE%K3zUI-z>(B=J$vJLBz8jWp9d$x0D6@82O<7cW5w|3>Hh;zIrv z=}CX3)r`?Dw1K)*goA@ZYSANL7xH<7dmK5BRBlzJIMbUk-ms40 zJ=2UvizP;@vxbRqY@x13qft*x#SX>1Z5!$jjQIXypDT+bVXs;c2JUlPOI?f9Ji0#K zo{4a6+X~N3b^egzbvz|C^YuZ2>rA<6RQ=hHWP3n5lcP{sox@0TNN-NN-jq>By(UKB z_c-2qH9#{uBlke$YqbGO{oWVytK+}V0uWDPHPymjzY?N$LIRbNsQQ;p1x(B3arI@D@hGRHytbmvB3L0S#*}JC!91QmBA0s-eD*8B z{iy;xYDe{L!_{ubQ>Lq6gy4+$ip)|?W^9kK={t@{%keiGBOH zKR4a`^=U@SgX`aKkP$7|3fnaNN-(E;OTI*ww|6viTu;pJNT-e&B==y6^gA{hYAc&m z3bu{edYd2QJ;e@B(^&+jO=tDBUvS%#W(i-m*)Y~dv-ac)?8;z&*O?lJ+$T0WsdKW?j_?JrzZ z^dy#$>;+i?UX5vu=kP=X@at}e{P&O~+QsS{E)V+j4u1rdXkiAGiR`yOlHRN4^c9i3 zAL##)r$`0Zr43r(TJCHqk*kHdhHW$9t#zyDWnQf=xX|vI6l}$^)7v-M4x(PFUmBQ3 zmv5hvdw>e5l4!#aM?_71<-Rnm)lu>kln=>5V5fSi(5;ffXP=%VPXG1OL5hAa6x%M(&~hlb!lEkA1N@^|-;yvxKF=lzct6)pLmQ3NoTjC6%C;LY za+(BCf)QG9RU(-JsegU}ia8iFSbMjm=l6}Nga2sN)s_XmZ=V_RJ}&=i5DQ)_b}e58 zy1I2FR}4AF9){Pxb>Yvv+hdrS1c0t+>xs~f(O2HxvtgYE@P;E(md#U}>-{b4> zVw{=dnb6~^p`c#UV>M5ne4Jz17?*q%d9r>c$+Ba-s z4-)64h7$IFGk#<^^{ zMuCRTI>@({V);z1wLFA}5T63gLgEJ}`{Rwrhz>TOwwhN}TK7TP7t`Llwh4Xc$t1$- zO)U=Yqk&qc(IM;@a>eXJor=($VA}~df^RiRRIHy8EDUagOY;o0m+-6(Qheb7WtMzR zPJz}$pEsjYWoqxbry2a0glb{Dhta!q_XMMVZMu~^Z{rX>6Io+i8m6&BPyTvbuWj2d z^r1Ld!hiE@E&b$!ynsm^1M1UO|7`}JeG`~c-Bng7Q+jNsuJIZT{flN8xyE?KqNM@Y zA({47255oR%y5rJyBL>&j*rUkW_PB^eQMA#HgaqKAz*;<48H|pZu4!osp}hJib^{gU@cR#hr*7+`6j7Sy+UTR8Kz4%e+Z*VScqV}dYaA&Y5Kx3b zWilw4ioFw%gUEGU&|?6atx1=TX<|58){3udS}Z;x93QpOnc~rLAx&1Po=8z`Qtk{ zr8EA?4iB*;Nu;fh&z=Q)?FC&aoNy9^mqZcce2a{DD{mG#Um?ajtBAd#on_;q! zy{L@O)1kx>3W;DGo$=2K$S1N4 zOsXXnyE-JooLqsyJ!$^}nHwW0VD`r0M?d>9=Uh65O6eW<9pO z7klgSrv8n4=M*bB6iN31e1mO7LY`^9C z1OBzlV;0;%4G*NV?G7UyI-i{R&f8~wQ7(o1GciA_80UkQtS?+UmccnJLz6`v5}N&= zv}Nn|LK%yqi@ks4!&=2&-LZwtm6#4 z{Rf0*!JcP*`p4LI9l<=>jS3V+c%TtL)Z_Z1CS1Bng^q1TRg&YaeoID|ffhbTLZfB7@9S-nZaJL(fTC8T2(T``w_<1$;-it@x!X0fcT@^Ea zaN!*f^OlyTg6@+ac%P#Uy(Ya|3J$eFBp_JXf^_+Mf2Bit<)dGqv^aTuctup;w9|K8 zQ*^b;^$y8hEgHW>5JSI*T47OC(@87YucF)36Yfcg;Cj1k7gzngH`?wNd;|I>?)*@3 zVw)`yMPxcqFG1m}BoYu@<85mC*Z-V{14+yEBfp3flsFwE9*hmzxDS(@xK!Mh<04ku{p4ql3mK~m-|1Bkk5a0+I%cA9`(3fUDYZ2j6 zLIO^Rb1A%}WBlMm;Av73Ermfa&m<{ndbHcLyxYYS+-$*ZDQbUGEw0uuJ33mZd`tCZ z816NKxkVwmVtuC0X-o#Y3It;6e!izpN{WbtVnx65^XrA@$Z#7j3Hm)1daVl#>Jojk z-H-vectirX(^4t_-svEbEnG@yG(s=JgOVuP*Av2*dvCKrb-T#xf2Mh4pH)_MJdzcf zDFQ4vS=Hc=!H{=U=%pU>9+hKW?g954n)3Nx^x{T-vC^b8$?0G~X*BZ=v8@=GyRJhBw+hq5iIdgRudLbf> z4;YLKdB-vYkV9>uc^;Puc!(19EyBGaq!#s@0UqPEZ0&@Wi!G0eGF|9g@Rm@INA9)7 zn(eCWfcsniaQCZS=y<$$!MRobx|=FI3(H=#XicVPD8GlbanzS@cN1oS=$Gj8q~p7% z)-}4fA|mzc82G;5+X!cy(KuCfIpG4)PXlmzLo4^Fp5U|*F#n^gC@6(K`Hj<`cNI+tjnrI23dY?~5%uD4}oFbK;#y)@jz)P2`iCr%u`{j7?VxW}dUhBxOW^;de=ZD?0pS?{hk(!Q@= z9u7v+?h5E`Tvw=m(Ho;Bqg-SXv|>!Ax4BkfIn9qU{`Q?UmUMG$S3FShJbqq#>a9l4 zWPN?SqSkGz?tQR}v(OjXOH&}%IentZoo96523(ql)9#Ffp14Tc(33v6cvJ$5$};+# znEmo7X|f{rw@5_pMZ<^q2@;ez=#RI?w1P?d&F~WlhZo0AF{>=pU%@yW?F6juNkmGc zL3^Zh{fx=TbXslmW?mvUJi%DcV`NK0YeYBTopcDRE@@9@PR6!#eHBW=7yR)R@M^6r z8z@+q_Dv2;D9})e!(p4-sN$O5KZBp(uGGWCO>ixD1Mcm?vOwUx+X+DeH~6{CJ=-we zV4m5VYMVCOyv=7f+L%E>{2j;jHGS}47F2+3XAr`Z98{+Z-&8^ps(o?FET+sQz30nE z!jE&nA6l^nZ6(>@o|L`{tcBf`|0s;w<|nX0a-pQ7wKR}0P?^7HOY}>molqLPM0XYA zRb4NX{(1)V7}VIdyzuJWt}$ol7B)Rce4JN9Ul8ZRiay6`_#B%a{0e~djLTl{G8qF- zq@)&w()+R_iDNIN=)l}ZsK*l4wfu-`*t9DF<==*7!t!HhGZTn zlr|SKz>SKrf}7(XED?p$E>}Fr&;6yo)e*yv_4-`O?V_B0>eno5*pAy_0;-6dSwW_l zw(Lpc_p}o{otK0W6>J^J16`rK<6;I!Ter@;G=h5(+w-S*LLOj}u+&59jx}-*MZW&| zjAr|yIWK`PFs#Kq@X2&$1*#_u_!*a8l9t=ya9WNQ>u9!TW`?9udnUFyVpvrBu)*F# zcW%Y9sSL-kb2WP#$lH!RNUIR!4%3R!w0)+a6=Q*45ZvbVq0ch5X1ZdZO#$zh2#H`I zJ+#2<=&`7R@3Yc2nnJ~siOPI3Yvfe}xi;XOmsYFmlS#yPj1oW?IruYrI4g&LdQTy!{E1YZIGfm8wHRf4aAa z=7jDV@N>9Gdp6A6Veg9a1 z^p_$eAcrJmg8z!8_JH8Ab(tQ1LfBn13W6L8in{(Q%=!Q80zuShp7T5$P}SGhk8y~Q zq_E%0zJa9qcz>ii?(6F_o^ZH{LQ&$&r#fcr?KE0`RK8k&IK&!qW#;%n-SQ%>{$i&k zW>RGP>zL7Ez;53yHO9IqHyuh4*sWKKR;HhQZkkH1sHlh)AuVs9H~4+?Ji^9P0xUFC z#kz1<8;qxxPe9xmQ>~t!esR_dX{0z!i*L=;6TMPlsCwA~TeDNUDQB!lKtQnaCBKLv z#Eb2wVg5qs78lChLgVj^$4_d&G1Ky|d;mQ>0M5VKm;8MBS50MQstGK*41mP%zBJA+d}$1^D){9>Q1`qH=*iXyPL!>J1r+T^Yf~F;{tg;a;tK4 zMdA%n=S|=x6z{6N3k{^8dF{)crIV`1Xxs2#35UJu0wg>Twn@JF$SqD5^(y?5w1LEL zCR!9;JVq{*Y&yzj?YTTVTwMxdO~{go>ITubb#CqPYp}TB@=)ZaT<|jXeSzDGca7P3 z_11h-6J7F7yRosc{l&I^e2dRHvfEMZjYL8U54nVd#15U*woGqsH?Bzo({@8*kI1D{ ztmi4z;{afIY~!(1UJm0Amo2IC#v`OxX@X}Em%d!n{#dZZrzY!hg$-j;O$DU4xycg( zWfq`S&opLC;v5njQ$Mn)-wzBA4}Yv-;_`|SI>@_>QnUUs%xEZ0h=ZH^N2KcbH9+9B zF0*z)&DS++X^h29*R=ro;(`>b0ju5}nt}J+^YikgZMD~|_j^Q8>T$Az+V{0o4FaL9 znzauzU&wlQ1|~Z}uSp|vS-tneq%(XkJkGC>#+dc$wTc?gUpv^4@YzcWU$WKL4un<> zdF?pZ|IAM81)GspVwHs-7M_}kdVwqi5lmxUR#sN# z6ap?6+q)rnT%DI&LC>oIwekx;pe!!gBw>WA6b~eE%BY+K{Un3#T}e&t3vjcsVdS_S z4zG6-+Hk?bZX?d#7}SnCe|u&H@xu7vHZF7<)G&tDyZwO5G+=nwZ8)nHXIg{bFan+= zn5FX&-y(5v4c69jqU-G?qg{YV%cJod1HPFe{)?@0RLaX85+QdkrbFq+A9sxEdP(Uw zmLFy7I<=wlypMI=saaE1qA4?I3ye#6Ne(-x$zk1hOJujEEBdxIhJ}0mb5C$}Y?IW# zt0SK)54&DX4SCamL$qIuanFUQ{9Jm7>0MvghQ6Teb3UfRa1k1cG*;~*LjH!=ZL73P z+}vzhuJh{cx`Y*($aSB7uL>fnn0Al4hQ@QjgME*y1G5v(Os;WTuVJvTQTUX z8=-palO0d!vad=A{Jd9#WFN{eeDsU*7~g(L8qv>odOFp0!dM{9)Eg-{i&ok8y4`(y zSs4DJWNR7P{=~VCtqcW+&y6f&#KFfz~yJxB^%sLwd7m1 zsPn8mn{1mTO$R~d^V%mFk%;-$%`Ujd@){@2J3SLcp&hTvjQbK)B#ZRxHik1L4#3&q zDrh83-jCzG=!6YB!`qdS+c~#__I*)5Vq_uBQhp#CZlOiNd=2L1GuFF}7e(egK_kw2 zAz?f&Gcf48AOwZeYqN|E(IMBr+JLBed${aEnVU{KSXDQ&+B<5HjD`)Nt+2{pHTLRMitO4`XptXc2Ja~`)^4|4n zmk76VT!TRk$xIqglR>Q6g3VlQMIIDZz!FPHL@y|J!Hn+lm>R&!m(mOww6K7;r~Q~o ztNJ;X>k-C!8;7FzVHXOiTtofdvN_y$zMd6@^DQ@5Z?Mb zb4yEwM;P6k72ow@Y13RkW&}nuZ-SFa>8qgb`9ca)jUZ4kIyM%&l(^dh-eKgKbBwhq z)4w_YJ~}hANtlpN3j%hZB4z538m8Cr5BV$e+mAqeI(fC-IbIg{YhtiPdE{}(xGZt3 zo{PxG)7e(3i*W%i7lxMHwI^3Z1fuIt+QyJB$$o5dgz!v?^VSX^Zy(E0`)AVPO)RYq zH@8MpavhNe9ynpxh{dB=lKV_{*;a_xUXcSH*-?Tc5)=sM{T6&OLiV*ogz zVMFR1Tz*Qk5#*^$v;ROFvC9P+7G8qk&#{M-1WG|w zPBK!w(bj^30s|(jev2?e;j%_1R!VvbW~-6{2XtR|dZ?f;NiS`q#DZ~_ZmkLD;Tg0) zqjwt;dQb4bxGL@IItDXD;}%#JZE8dIr644cva`rJ>7ki5ksCLQP8SO)B6o`eOgppY zg`cF}vK)K>6hqpL^NlRi0z#{A>97pn@a?TkKfedE(V*QRW7|!Ec0(#scG{Ym=}Xe5 zL;M!Coq5#M{;v;yJkJa6)9lf@s1`QcS^)ri(;rIe>BGUtxO4y}{;deGbjghB?EvX> z>vKtt%*6dB=mlQEyn>!RGVOkDw}3i~c?p|h3Bdd0pu!pO*>CD^H3#RHHWZzDs}-wy zyVz`owFGfo4>rT^7fmxM&{`ilY2WHN(xw#*u)B<)Yx}Rh6(pc>d-6az2n}$vDfv!$@0oNfU{3mp{DBSUl08SsjGDufq_u@x#AqK?M@emOgpOpmzG3u zC$)vvRD(+r*A>oX!ob(7l()3|c=iC`ZV(w0(Z>wZwSY zAiu9Ft>zLel!-R5j;2304s>K%_nE$WG)}#K*7BsUBa`Lrm5vlq<0b~J>%G{pawqK~ zp}~|pb?ng=qizv`IjbE*sHlm#fLlb+s{0TSc>c_(~^Urv-s|?vk-X`rDufz6uMX|6kf|uQ32zsNy|NeZ~uh7ak)lyW1}x zj8{~fOl_nAd|i>AAKd10Kla6fcVAbglFTyKjICV#Yd;9ffzv5-$CE+s6pq_$!W7v~ zNfLp!`N*Y2x5GL9O1P#fSGBHJIBtMpVOSRFLtx#oT&K7U`QDQAFxPBAFptFyx8oa0 zoy^-H4b2i#p;3Vsi2gxC{AF9me*R8bu|1RA?*U@FC^^~^7V2j*Oh_I8m>`sW<)7Q& z-A0cLj3G?mdRmJ5;#J0EMZz#*57iRDT$Ptof60}B;{cr12-Mb}GMQ)*{Q#f#-G5v@ zfdyi*gedq&4gsKIA~&>)Q531{n^;i_1&SktREvXLgFsN=hjYc*XCTGn!eC^AUftWP zxvYDa&=5v-P^Um{B~eHeeizhu!|63b2(O^1*j$R$|r>-2AUyPOz6XJ7}C z(Z&fr2gxs?W;yQ((YI&n4N@(Y2x8G-(~mE@!0*zR>&7cZZ+~&5u_mp|pXC}oQLb>- z(1Zy}th-`Je$|mI6(wE$7i9*_!|l7OI5lRccui$l%Z2C8Vq6DEz?-Z6l7^dJ6X*u= zqXkGkf(AEuU?C#gj{Unj9SwVI0G5AyE3eG2T6BoH$cG(721$d>PTFazb6d6Ocz(aT z#Rtp)60INwkQ-pbsM;>&_LipTG#+h}x&UGk%v+Lt>@TTP3JMP$Fm51{)QRdeBXN@X z_JaxU=wQZwD)LWh|9;3@nXgK#aZ9w=dzfc5p5l0WfU3ig@7ty&Z)5Bqz))Pb!!P0t zeooj^C{ zTSvgpZjs_|NCYByT6;%?*9N@B|M|A}0R<)nBLIEd9#XfcZ8|7eLK$v{l($Z$h!1fQ zU6QB~&RJ~s77%^_a>+rbIWA<48DxmE*(&}M&_jRO78S*CF2vuOAgEW;-cmy#j7Snw z8e8pk(LMEVmiH$_%r#?Aqb&xK`v_&b2vfY-l7iZGTC*PZVm+NLY|`(B*U4 z_1W}MD<*>rB4Yh64oIg%TmnJ)dXEbMRg}xU)e+R1Xd142ZMPH*n8;ZG1+@iT{ymz= zq}ik)9iz!IN`6eK@z;3N-l#NcE}~XP5N!XH1%m}78B4aIpNP=pik^+Ip^QDp45IJl zWX4u8O9L{!2&9LStB3%St6f@@p9BP~o)FSs(vxAI`3~jy6m9(bcLXWMZc?WxY`YR- zAS}So>%tcaeIgq29u3?K!NankeTB$~9?Ux_Gv_})JsT7g7VJJQb znbTZOv~q6@C)+gg(Y^>h!THf3FevfX79Sm0kI|0d9B) zNr)^JaV;`C&e+~{t?q2b4*l7>tJt>Y$Zqp4^Ij8aQ?FoZZWp_DL?PS-R-&-kwBV2w z^iM`ugOh=eV+H?SC;LAZMhEX#Fs8I9M10gba+hk|dq_kIE0#r8j#Rztwd>K9`?f#e zE@F};ql7`r><4$N9u|5NZU zmAhqqVOc0i9{dZJtpK{m<5mPO|KH7Pe{ZS42e8h#y-oD4sQ0&2jAp3f<C=dpjTc?b54i*BxJy0X&W^n=~GGq{AMHrNsGc;;jOe{DLqdrOPt`vV1{#qi2*Ew7 z;;X8jDhzl;nSKxyOIi4bGNPyV8Qv&FMn?8FdR_FdffI%k_V?{VBq_v3l<{vuLLSmH zGRATa@=AbZj^c-(^Y&Ws1gKEsDM!mZYQK&vF$$$mRtuIH=xA1ksmsVm>spF)@4k<& z)KQ?^F^QN-l3!VVOq+gS@$S41t-Jo11Aix(IlI{{W$?q)Kh;Pvy6+hmjg+h}{}T7D>H53FltiI~tW={TRmb(e=Dcb13j$4A#m55v}N zJ0i9bxCV2jeOp8;ZDT{OI2~pAKcLG>9*XIed>2><#wMg5GCRlpy-&rgoEIEequuxZ^lwY$tAA5IJ9(GD>PaH9;D;ydyX8nX19+*D)@wA$Y&{RW#aBy}_{v7G zTsJjYG&jscuXput@@Rb^I!$v0tB`jSToe}S2L8$tzur395XE~WM0Ue6>#JQne$Gl+ z_C?mh+zZSWP%c@11dc z{6XsOY_Z1sMxg9>dY4s zn$NFD@FBOG<5z)AUflV#{m&hheHu(R{f-x21Lmsp>eO`_D?LB#e&Q1)6z=cMrD~LA zc;|d|R7g~0V?*rgDtk+*G>Upm#JOZOwu3)9$|kXa+aHtGFo-d^LsVPxpf(lS#_VCb z-cHS#T?%hJFn_&aHTJ2{EvKi6Gwr5xr|qc(j0c={>Lri)wIZ^~`%4#LB8;gn0qrw8 z;@9BBH17+pw%i;|w<>=90KXRYkO{L!MK+>$G^>z!>PBVE^*`e`)Z`eGPQFj&7e)gS z2!<#*?D|eto35&E#7IujA$`nqHocIX&J|`<52x?XYL=s{-=U|S z50%?0)IBIx7NoY{XFdq3`WE6EX_Y%XT%=TU8R!#_aI??4g1%cV^^w%9wrlCUT4=fHDHkYgy1cLwix!)xrSx?E zG!67&+tdqrLLa_=R8rrfc8!OvzZXN{}=Odf1 zwK_Ya4#dGHjnuH7&M6;re&}0h@ts{zJ>Bos^nOQQmLav+z0d1O;ScaN2_^m z!Fg)A&d?$K52r;=s`;mL_e-JdHRh36ZklBTXzcu!k3{YD5$mcvB$a+w_=0pbuy(+{ zr6N61V#qRDWL;Q(r}0qXEVkIWCv!yN-~=*Dre(R(yqC*DhbF$yA z2tEm)_3W7MiFaX1WSqZHt8r_S|J-0@xXdA(pdjGBZip{%_~N+gPGc49){g|+b`AoJChE+R`A?cd3tfp$3@UA_p4ZLKs?eY^c;YOK zY0)He$M?ulzO_WTDU6KNkm7vD@Jbas;;B}iSCbCHh2WCH6Yo%mHra==BHeo4#IP^; z3M6#8jPv*@th5=71l%RybQ|~KP}%<+h(jqbCgFk%{ML0tlO{@NqqHPD^{?kwo37{b zX3y7Hd(w4zw2z(iXnY#3hE_f}d@Nh*(Q|X#O+J926U8O!r!jj3UW2phOP=HCU*sM{ z%``Dq4Mn;~>TbMrj@PNQEz)ru=eb+^hZ?@F)OtdX5w-!(^)OI#tSMb}xQhA-VPNM*vwKEk=4d3Z0Y zl-zAU9Y@aPWZ+{5ZW42u=}mRWp;W|SZOC%{;Tp}e&uy|}fy%X%>)z@a@0_}!Wm#p0 z%kSG?#PVB_vAlTwy4T27<%yb{tAacC>(NsI*HWg%G|Pd-H$SG%y)^|T=aDUJzMWJM z#5BD2HeZ0~`Zql?c@yuxr@}M2d$hqPGdM4LA;IsEU0VdDaZv8$5oV%{o_0=4ALc`b0#GtYXRQ(w^2(8bMMNlGHPK_oqtkgI<>JmupNWm)5yP`-P< zsi3jz+OD?~*P*OO#i;2ilc2MTn4M*oXmMTY#oCQC@&>;8d3kyQ?y*^mz2gF`aMFF9 zis_9Vd`{ybHGU??*X9%GWzR@ZARrjgC0_4yqp^!oD=I#Enfe4G6V z+An|1qz}|Yb}>bjrQ*YW6_fpf__1QTD|J?WO0D~d3AD1fbUkr{dIPX)UNvVC5~H~c zuQMRDTF*Z`wyl}guR6^e6m)A}X*$p`#p%<;c6^3y7si!eryZ4dML9a-B#UF%no#Yq zHb3K|)fQxQEyT@rF_8)_z8qm#tK8id$|ZDix)1h0drA!{Y< zu=1Rqbngp2H?fZC#w1eR~s6@9yM zMn-)bu9Bmj(-Ii?|)&Rs+XI$@*l&eKe0|RKKN|@fnI=zIOeSHiDyJ;subq)QZsRG6#i%B z0Rp86ZKiZPt{}+fxRrQWsxZGZF_xr z`C&{mr898?MfjbcojD$UF?xaGpgMY>+O_0V^Mimf zsRs6O?o!)ozRowBgAS1e`)bOme=gZk;Q~u>UCBBEZP1C_69-3JhM}&@sAFw!e+`ng z14=F5vq&Xyj}S2m(1-89<3FvLV=NBu{RZ**ae(xJUt~%kAv{HAc6#3dCw5Rs5TDa& zh_!eeuP4i>IB9uJNU2j{$GAM5UXX4}bkx(+rjbQ1ZO*N4Q|R~wV(&cR5J_(5e7R|Y zj&l;{)_CUvI6w3s!;PF+Go(2)=;x?B>yrlStE;PnR%BL{`kHl#l1v1&R-BajHoD^4 zFXC(!@MEL!Y^M~4 zy{@~gmj9#w%*BJ5Cyz^LDK+H(q~MXv<|XVg&xD<-rV39q;VV(RGX7aD7KVJQ1MCgP zOTZ0IxIokH#~~5Nq=|ZnVlYmghc}_6fh`C#utLvv2Tm+vb(pC0fC@x6Gdt^dEz52I2c0Qew#Q7-?# zv-ba7VDN)k^6Dp!h(>!hbzj2XlIH89D#E+Wue7Mg~Rq(*GN5f>!E}b@t*T?Oj7e zi#~m5i)j3Gf0Xy`qqj1^MuG`nCI6^1AUD)t{T4*Eo=fTOgGEeWqbO?TyOa&20c`Y` zHR3MW5p@MNYBhW+|1TSFK9gNdXK*s&Z*(GP_ZMxOCqmG!O4Iz^yFDauNYW#=kz zQm=k+w464#pEIXC7~eLP&vqx1fB$u7ue+LQ_BeBkfFQ9fgdKmVqeO9QN;4xbzTCJc zCF@|UIL+8HzUJUSa_!Dq!DcG5W|HcswwPM?{}{djQs zptCZzRLI?Cb>L^rbh+K9nt<*5p0EQJcG;NY!G6vLq8<5{aI!bzZ<@}MKfJ?yfuX;u zCdrV~^PUBntTw#aloBC)QrvQv16KBMs{8G8>z9^}lHcAZn6KnXc1k}opRIY%(H!Zm zfd94LP>nHygXr5Tn$a{0A6MBtRjJ+V&l=@FnnMjnbBwl&=Wf?QKcRn(q$v@)UouN! zLf7^3cQyVEdm%~yeoIr z!Qi7#6d#}1=eSMc;i*|8SSZe@nnQ{z?vn~a>bO=q9piJj@qIpx?g>&2e~Yo z$wh*ts*;Pss)ULxDm%XRDQ5Me2wjJzBCMuEi=q!kvZQ&%gP)t8jP!Bm@TCYTuILk( zbf1m&8L4-yp0-!_r`QLEM5gimn_j7{9qKOsqAt_^mT#6>ybZ_^MeZ9c935fxBJdN%sAERX*}aj~Mq@Q=FREx9mv zg}?#N$%Fv=(zPSt+jB#bo2LruH45u&61T!~6kJ(tD1tOOPO(6&!hVE&j9ii+A ztLW`X*k&bb*OQ;DMPhRwyu`~^G@bWyn0ez&fFIS(P7D*`G7_mIq}b>zmVL>Ue~Pu(<6{2vxE%_G&D#ST-{pjWt&P>do9Vp)~VqYr;(T8SEk~! z6)R!C)l80mWvL~NMv_oE^oqmVQnFVmnMTb-Q?8@nXKgBr+E5BTcCM7hO41F7Fu%#x zimFjCGh;sn>8>}iu&3lJ8AE$6XZ1*PZ<#1DLB;N`=3`U@5gX25)Hj?v!|_90=4ZtR zFh&{&(VqEBjA=*{T3tkLzL?&@)d&ENk*ZyKhmzs414(O zq2}-P+WC|xodtxj=^=%6yL)+;xrt~!9+cP|#)35bFUEo;3BTvCLNGlGEWgaU?7zKK zhV*l_vCJ7)>??oU4*s&6E6ht%Oo~~vopKNd9Z-vZIF$T9j|qv~*O@`r?!LXTtIqw| zw@5|7NIbz+hUuO(>DSKbL|ZeA2zs8n!rMMF6zM4PUkh3hQI06Z2n;3{a}C))*Pk*a zIjsh$I&H72Iw?lD^yPC9jYE zIJr9NG+y+I{Y>N4zUH%UN96s5r6clZTYevYUyfm+e^`PTg18@;R@q|3+AE{n$V9s1 z`rITDvSCC-X|G_a&y=jnLTSt&`?0d%5k)&xw;x%Vrrhs4ty~E5}p_ zY%M#mNd^&UXtG7i@s#ecA1iSeKK>`R?H4@JZkp3yTV7!Enw}wE3i`0 zVR^916-1B};xG@0yzb>PN4mX>8a$xW;l#&6P1hskr4Z2+R1R`HZq~fpjkbKjCsfeS z;$YGpEXZCX?O!#0VQ$H_mt5SkO-#oLpwF1zY-?s1+NXG1VjN(EQKC#N!eytHbF?ZY z%29Z1+z$CKWa)~%)N@z z6U}$}#cb;w_Ou;&Vi_qyg!vVh$5{U$^s;@El>ho@QE(_@9fy&mnC5aycmvLU8vx(} zTr0dhgwc)IxOACg9x!CQ;=wxm?}0$%93J7n;{#VryMOt?hiAJRT>Txd>KcXVs}~^r zm|d$SItRuP)@s7)9T2WtCb zXW^UTY&yzt;Aa60@qa#}a!_%??Q#GX7BA_?*=HLJ?`yjx2V-G}GD1PVk-lOGJ)xn+&FRT6- zOy0b58^&jHqCjhq%67_~9MJc@khg-jo2;~UVI{{^zzJ$BZ}RefU|r#8;FYf;Ld;FbjVqmF96Ga)6nXms#nB%EveOSI{GdRF%5`(<#-0ACjCO zel*yY+j*3-qYs)(I$R2#JRN09=+{DG1GO*7y5SQ_wsF_fLi8NYt>Ls0wW&O5em z>Rb+ifs*Kp&)ozVT}7$!i!3E&+;A(7b>nH))8~&_ju9Oglu&3zaISCmHN-uVksbfD zDl#vS5NMb$lsrW(v=J3DMZhdW?lVQ;_sP`NodIF|Fi!P`_8zZ5?OxYrv@+{F-;irxWP zS%lL>WA)0AbOIKl+Uopp>(aDdFpeOM`lRGJR|Vd{H3^oxw}CCUbNtKA7|nw%*ka$x z?gXkHtlW(4{8DZ@;bkgHIwi(g{|yGivaEbq86P!&0w8_Aes0=PxW2}egO!oTGk5z? z4%fp$6nFp+r+6B(RQj+q5}VHu-l*$>%6|V7PhsfTBwM$cuy2yT|-8M99D_6 zQ%ZVvnmTMzj7O#v{^;cKw{Zo( ze{2G$34qx=&bT!_HBoELrmts?gw%vclq+0GgG;6iXHVLk{^i!1=#TcnJT03BSW>4Ak>e!}nCx`S9J+NDPx z12Y2*`*>Zvi~5+$0NyA^T8>bb%gYe4Wd*fxm(bl4q1si+n0OO;syTb@X%n(siw;#U zc1$L1y5AU2kinsdLsY2ZNKrQ=8K8A)Y)c(dqQIYS;+UH9(cmPu;fTv0li=7-7+;S9 zz0dKE?N4b5i7J8liE|mxE3RZantD(%Lk1CPP4pF}>JbG42lh;9HrYCTi*$p^6 z)InnnL{>KBIBfURvba)6l8A@gUR#%^ND}-3>kb)bP{h_wT~A;OP(JZSSNf$Da6U%M zkHeMhKrSF&FCC$3z>`t0`10ZPNq@z7M9L%_V;1AoPN#rtw2|I_Qi&fczL;k;B)qpN z7Lwdmj?Q(e=9QQAw8F}p#C{7&XwW8cW&}kHhP~$xXLbRowb0~gf*!VCG?*z_5p_O^ z7XzNNrAGRBzIT18q(I*@Vuh={5eoJedcA-8XPrHTZ`z+%Cc1(Jb6ZT3g@*Q{8`Va- z{c}PrnS&dsGxkrphW1|{GH_~LpDu)`_p_r7A9tblf_(j@C$ia6-WwDG4AWM~=%hz}9G=#6 z(FtF!cB*3Pdtxy;!yLjz2)Wu(*oPTKnM5MIql7DjGZ4K2ueVwXWC1nn>7&NVh8CfxwPQ=23!oWaFls-yTdR(0UgUjWz=X<+GPMKDrlsJpDEInZ^#xsme z48d;5q}lEZvgG;jEudI`B>j2>hQ=oD&loAGNU8WsBWUIazO9wlkV|v)en`*U91=ZY zfkx|G{89p4UxpKkwJ@^_NgZ5a!&rSDmhJ!U3?vPA zjnYLbD!(b!&vrKt_X(3{tR}%2M}jyW5Tld-)|~2}ih1K>Otb~nUm6ydc*}Umnsr?a z@L$QXzDHlRzf>w9a63;JsgIG+;Hm)-vscSL0ZZu-JDZs5x9dIZY?&O8SM9fmw4OnG zVW;~e{X@KFF|Wru&SSwkiycabhdbLyS9Un45H<7I zQmZ8=lGHZRlvFCtjITN#h_5=VAeYe%G|mng^@HE6HJa1xC%6s|G}u+;P-a($Un_i* zTCXIbefIfdzd=^q_rb<^PfNAC(55Tl$;1m&Y%Zt=?MGgbc|tO!+pbBvu!0}t#SvsOX#BEJ5Y^7r<=g zODUwYOrk2w*Ku;cF1awsf7%rZS@xEjC8wwbMj4VCih~zXh-2f4!^_i$3`8#0#E)-Y z54W~X|4NGp<4!Z%;rd&wgSPi@C!&A2|49RyXf(lx%sIwL9EHYVRL9Jc+I7p4y>zXY z%-7+4ZAS6bb?;hMV>BZD9^qmFbG1NtrK`vz_fG+U@zF1*Ebh6_7hLz;GD>c=2k~lq zR5?t@GfcYIES(*nJGfC%4v=n$;zIi^0 z$4<99bPRVrIv93kql(+DX#WY{*@{_a0I^$n7nJv9H?&j9o3-5tGC_#@5N3^F3)|qd z{PiBx-NR^&(p?eM7A+$d-IB#e0s=se_7tQHf>`FaH8!;R!XQtb2LyeUyy#K{* zY&Ul~ev(&x(UVl;zLSPMV1H)>)pNScx&Lw}I|PL2z-DnR_!Gse9@9)92)*WL+fgiq z()B$*b$(V*|s8Xj0wT=a5j-!X20QGg1Ar#O310_9%i6&t7W8dEXpf1eftE z85PMxjn%IN>|tdEJLYPh8f_ig(GXV4WG9=CZvnn?Fa?Y$b69#UQHZfjA$xTwUd85ZvSt(;+8^)ra5zm_!7iyk2{+4(H=u~gAq%gx@ z@&>RMk#R?9h5(lO`>HzEWTUr!jJp4K( z27IpmT{>9!pgGjM6q$67Z<->sHH>*5*sUJumEmql-|Kma=HsI&#|Tke0}WLZB~)JNcGkZCz4;6MfCiQW#XOeet%wC zB?efpaPCiH`tG&li+jnV>>MTH*>*rMh=XSOKfE!x?klm=jYKfChm*re8NQW)M}6M9 zuA9+5Wp7P)I_4t=l{0U$qk^SB{YHSweEZo+&WRZ9giqrePH{2?3W)@+f9|P*@AVt? zlp+8pofhMuKIlU#Bs?1`m;)m}mBsG1cw3WpPmxBy7vwlPC(KGXYBHH%DANZvY*NJRydT{tL=}Tz%8vTXVT|4E{ zEL<`Uuz7r#@XJ1VoDQr+a{ZR~uhd+14^`Q)3lt~zVb52}XI#-YL~`2N=1ZGjPYql? z3L-LB2dw%s{(<*@veURU#l%d?H6&|_YT+dA%&QB^;UG%Sn&nzmUom$GqF`ukF{8J; zn-$R}FZYD0-!%QR?yXG5khLZhg@1*LdT>nzO^KgYCmo>Ov<6c5ogCISOe_oynzZqep~b? z&V4LS^&cvQOvgI3Y_UiwREY46y0lsP#Q79T+J#d-&6EU-hF@>zYj~?vA&0kJaRp;V zhk&;NJE2ox<2E&L$zfwlaA>{;5-g>Mt+vabzdpScOYT%%2I%+X{bg#TC_Fq~zk0~A z{SY<`$BMAq8$`b$b?*sbnbeC4)}SKa&xE-r>CBhds~=4%%Je0%>5MQREGeriR0tI0 z%T=gZ?YGnYIyyONKF;`4PJ0+&xsOT^EEvb{?l%{Kgm`wdJaRH@8%BSUnn3o)&T2C; z6E$q{?S+@Svmtdi7hJ=F0ymb!MG7|*1ihxem19YD^NO3!o)tC4^8ytnwC}xV5qiq{ zqB=X)S^ViDFWA*o0c?{`Ge`!?v}OEs41(G(k-{2zICP-eLmO>o<84rYonS5k`pxya z58)=4g=;_pH0P%<9oQTmtIGBR2(QN<0;PoYphNaU(z-KqRfx(e=F9yuKu5(71Eex~ znz?{7VPai*H_4(==Bw6r@A1=wjs<|dJIYoB=lRYnHL>kNQaj;c5NP7mL)vz{^)%RL z_Az3pAzEd=Kt!EAHNgNmC%s6=c@i4~|wzs?}rN%zcZ|GIevtsr``DjhVwQ9?)>uRXnPNVk`i zbRkG9WDD7|Db8`K#Kps@>>-3IZE7z8*cjnzukQ^AkQIW`7+fTos=f8UJ}@;t^!1&m z)no7XBX5_UGfM7|o_*}$4CXF(Pn<%VDJ4oRB~_bWsSN6W@Ixf-qwKj0>|Nj8yoVHl z@PGRH3o+2RvsF>{-9fyQ+cQ>Fg}c8mY=>j(64Q9xqz|o#*64_JrZumuXt*{28t}o} z#CK~fT{#Y)o^~t6MuLmL>X`^zK$PCsbD#HvYM14jT?W10E!0S?HQQms4p$WL&#rfw z@TL`r_on+#c2?`cNS_9U?${%CLkOt>r#v3al+b9f_B+#^`W7E*R4h*y?>}mwC9b>K zD?JN_`RXa~vKTj;L>|m)pKsWJASe3soW?x5o;SrOv*NvVFq@6(5~NiI!Lwf9b1ONd z?zlRtx8Z|qS9?*eH(5Ir_Y0eTHho&LJho6? zufFaMt9e3ZI%E&$z8K&G!5$4cHardxB3_X3H*-|uV+tVC#uy9s?(Z?1^XueOQf&zqa6t~x#*J!1J2JE-JwcC3$zT{D$8=>ow;{w;W_vMek1R5jC!@)8$zBOw_i9KG zr$3`^u++YL^yIXMslH)Pp?O=M@yqA*^v8=A_&nF`x z)CEY;Qjw3_O0?rwfD0fU%K^(RxN8**8+9AIHG1hJx8zr`q$1nq@s#Y6=~^rx_{@4yf=!tYO1`5a1$5iL4Cx#E`MAA;j`g= zsS@$sLIvLhmEr5XP+k(lKE;7>G4c(bv^HIYZ*nN&F%eu!?m-fg{6FxG9`tp$fJ=I) zI#j-Vv?|{=55lFAZLf3V`T$K2VXwZv_om5e(qFur#i1w}gW2V#YoNuwac9Yux6#!Qah25^HEzVB-j_c>3kY(|bprFm1x=e^@b1QB0Z$JzH+=N?8(mrU{LSPvR(Q;fc25va3(ohZQ zaMMPms2uduAm^tU3l?@?6tIiKa}MsN$clCd)wepo2s+pjNp`vL;xtVEMR<8GMwyPqCIyRxse9k8ZS?ZmC#Vi4$JXs*a zE>rx;T4Z2wG-h{`(5-PCV0-+YU}}&+qbBYkHyfo>6ZAGxtN&i8PZMTp|Ca*nfNEMB zK8*~zzAxucd*fBMnUr{r`ec}K*bAY#sO68KxNPS0S`b3d=u7HIznr^=MM614V*$t&J ztY7nK@5`x3+ajI@-h;zBV0A)`9R-f{^-MZw^WrcU6fePyCl3~t*$jFor;4Z1$Mb@7B6R7#`q zCWP(UJVZEK1;K8+x`dq~dUenBFw=mcpT@aW2?qFaQ5;&gYj}yhSHU?&Q^MTbEPb@I z?N`o7Ym6SD#U0@mAA*KD&GB96IH4k6GUCV0qzmJ$i7fuk(Q}CEtTyl8%}MiJ`bmX| zB2x-%2|3ap>!NfvIwoQyUL^Pwhu0zbW@BBTfNidXk!DvZ4%EzaaS_@?hs?@%9MP8{ z@oU*|CuV?VxJAyTDPlwsX#C&*zq5~x0{mvTLj%nLI15_=;yt{h3XA!a zX~F&b)H(D(@=2)aHFrlKEitHj;g@dDQH{4pJur`zq7!Dj!6UQXiu!auR`_1QRWV?N zF(m!wirq%LEnYVMmo+tSRMfYSv@71qjCYzlc2Mk7nvZ*!pOw0p1<@YPXPu2DeIS1 z{8nxIh$ok*C&&at)49nZ?_Km3kmjd(yH2XV#!|xGO-ae%Ku1O=S5)GW$aV~k62O^{ zCPo?$bxP7gsl7p|lE%%SzYCP?)76}Ea))`eA;J3H&3w2HSu^~#@avNRWONWW#gR%FcMKMLhG#`EX|WC(bSzb`AlMjQuI z)nEOXE#}B`f#Jk+j|=6Uf%lXhZQqVFY8Inf#j}*CG=PMP4cwb9fE=+aTx+W|nRygf zm0KQXSEq!UgV7O_s9ZeNL%pxc3WRDF*|lO$A%))zbb`hu4LPaM*SRZ*0BA)aAD%kM zm+$rC-0?u(F5n3A@+wJXo>O@J|VQ+9`cy_r|p2) zIg|ml;9w#%KM(VtXG>?Jvb&P~0cx<#R)6d@s?^*Ez_Y#rwE5nIRSdv76hl?So+&4g z6+`gfRz92sz*voRphaz(TV*+oB-&Fc2gDxL~4MQ}~@HkR>wj z;Oj9JNpH3lphB{sJhN!+g!&=Z09czE)$G>Z8Zk1{4+e3N6r!h9!?rBTm^6MZU)j04 z9y|O)RDVO>djPv%uR7EE*%s{K!D|QPb{|>Oy8Cn?cYPe)W^VZt73(d5VLx@(f(;gd}!$TEvl z6h8lM!I_9C4*v}>HX-?}_KQ>^2QKI|_GUEJhd(?p6~kuj%h0_XYnWJZvmQW`NUtkI zbg3+Ads(Ms+HP9RcB)st7>JYiK|B7rUl)ih8AdVG6f~IT?(Cf$Che8d7`>&2%vxLV zHw(4#>tj4M!16IE&tC11-GiJSj(qN!-B&y^(P^ZjV1P1RA5z2@7Xd6w{h{&*sa35t zyghp{U1pTDAHQ6m7Y6?63m7H#m^WQ!2R;7Y0OXe8~ zLMB*#`VrG;46gb7@}p5;NwF6zW?tCA(!FzBrM`b2MDG?H|3~inPEW^TpqCy11mkxH zoJ^fAcsxtKU>DY_?!2n@p!+n`y&O2zYd3ifPW2>OnVfhZtKw|aifwX?VCTMJ4bXT? zgkM@yQRN!B$%ti{2#VCIk+5>uwqxpeUb!cun~!c3H*J{t74i^Fu=4$B^(B6U(zzUJ zWNI2tXC~_+;TA8s&6iTd#W0Nm7^Cz2Hy#)Zs!`Cjr#FW^Z$d z|Khrey7}mRK|cH6XYR>YEJ2=?l!U)Y2L;4~2+~;W+AT;q;I; z7SzL0mG06n>xdR%O0PJFNxPSyWE0}H-NrBqE~lsB2E+!UbGMDv5?&f&vDRwNFYRdb z#kNYdL!zC8fkLHGi4bE#7qzn`dd6XyT;1gmkfLs3WLl2KH*X;1XXJuJ$+!@fA2>r)U#MYPyROeT+iHgtOU_u;)m+dhX^V9Lyr@J-_Rc!VsVW#s<-NxzHp33E zprfh;ecCNf>Nw;17hSI7)O3$@y2j0FYI>`P*IWt0R1KUq)b+|R9QCK8x(7N{`d@zw zD?977dXnvURP7YTb(dcEvJ`JWM&S{PrdL9Kj$OjQse2A!9gd8@oij zm-+ubBz78TEA{re8pR+Y@$K+&5h}JJ`|6Pe8PQ$69e>R%p?DBogvlSMnr}zybJsm7 zWHdAkIdYJ<>Fr>I{j)`1nWdbH_CVTy{Llmt z6;{Uz6sD{cYfB!p4cQX8cI~Fm`T)`q8^0k)BbY6$i<~>&>Y$z}h=tZ%M54Pe5Q^4J zT`jH`^fg?cB&#kWTg`C)l}u%UGsvcmfY8?1Hegt-M6hYf@TuCr;cr-an6&xJad1^! ztU=6R#K)+)=e4qmhJJ8MNHoKrFa=oX=={r6mzH=&@>QR-nk0leEYB4+1HG`Ov&V-uHw-)7-d*gg>wI*kwF$DZl7{{8))D`6si%=G^>=vxSGlF$3 zh-#c4Bpmgjn;3ot5d@WD$qGr7SW<4HKoG{1>OTo!vN0#Q>{lO%|7u42#4-RG9$rGfion1_#`G((8&Sq&M) zw;cQ}cFhbw2+JW0Gzygo%|Fr!NzOnmRms48TNzoTr!tFX@-OsL1h3;wo)bLIkR3bh zfL$D|NW+wr?RVMT8Dn$CZ+UHm{1qF=|G41Bv);xvVO&tSMc^dFw-mRh&2r;Zvtygz zjl7{?FGyOGJgO7&-)Ou!VR+_R>eqVrN?{kvCy8{QVQ9!t!gn1N(QFe1yWEr&LpbX8 zC4ii`jr*PnY@66cs1@&AuBruk`h6&3Wwg4ejho?0s{muvp?t*-UlcQ2*G0X%`xY-5 zW7Jf|^wNN`bcuz@YIcBpLam@u;r#kSPf^$=QEzTgRp(%vT7FGal%xo0zV_b_zH&{9;v4|d}mYZ55{JN;xyXAy)1DU#b zf3Hux$m!OoGsYp6$uupuCG@vsFdVYDBG)Dxa7)V4`8&nCraNhb*P3_$cBjYFKT7Jx zn4|zt=iPoBeVPpV5R1JfTZh_zyU-hZuBnuHc+V7H#b7isTA^W}4fY1()wD%goTN?uP1Ku3^UYVJ z!%nPEqC)a?v&fz%D0|X<&(bJ7@P<;RZRw#3(UN>C4rF3MEdIdhGI2v&S^aMvCa$@! zTO&@LSIW>cl)URMq_`F!7s)4-Vh)Ob#5wV82jcFC9O|i)EQ1uC#9V(Z5rHJIbeMbh z3?>AK&v(>~-7vPUYuTX_ug(jw=X>u@U%MwyG=`GrPoreE zwoDh=2M{$wZBb>x>Bu~ZECP|z>d)AIuYF5g(0HEjkcfy#^!m^AM6H(msM=%KT+W(m z4o&A>c(xZfPc!BM?I}0x8(;41=t(8!cUx5bIqIQJZg$}_#OwL_-OC#Q((=5ezN)9f zfpBRF;$T1svS88YUqTxRF^11}GH`|n7UPNd3W)P~LTOD+_@+8mAUiRY2<^kz0GSTe=C&IbN=XXR=bC?zs`>kda z2HCNwG%2O7(H2+ws=v#L5a3uTBT+e07|l7$kki~gB+yFMV^&hP6L3vqfjw4n7yhKI55OqaTNR316+ z6(a)YM|UQ6RO=Qau=8Y!w%dUu_j)u?obl{pH>{>%cP2SCMW9q`#5l8gr4nBEfJ6*@ zWR1c!KUqxAQ(B>to>djFu*jCEOOeAGR3DPN*c7@lxXbw3RR+eMR%qnV?xJ*}&A2x?NSRL91)7Fj~wTMDd>cor8? zd?x5@C7kdmK^HIIeDJDSFDpE^Mn-O%A(|V!rhz3;v)X-3KPO zpqj|m2H=lA^yi|-t$+81nOBkgKJR3NPG%#5DJt><0tuys%X55^V5uwKKWLuMxBuL~ zJ)R76dSb7qh~?CbcdJ_`15sC~A&M`acl#Xi_7ivs9xvSNiO|Srl%S*YfofDE$Y~~% zEV9kmrI5+^@TIIl05}GsEymipJ3IGju*bRl?F@v8$cos;YW(B(x8yC=;Ur3H61woq zcag`aZ9 z?Ta?~Z?;Q@_>T1$g{Y-*epm)H+m{S~M4mMZk0YdA4Q~F3pdH?{ga#jQN+THu$QpfF z?$xhG4Dgn^=u}q~&QyHefk{)-6|+cAxHVjwTjJw|*|3?EuKX*R;s3^GB0)$>cjKPq z(6h8PPVYTI_c1+9=vQT%-@>BG;&qZ&+}TgRdR8MZ<(o3!!ar&`tulSEfVQyv;n&>>j*;M2}WrToDy5Ik;V!MuKgQUo?s_flVz-h83 zx9PYjRB!UzX0>siTV%IQfFsy0dRZPl9W=t9iHBFe)fXqG6|{|0ZE9U4n3asdzu85v z5vNOtP?V%2mi>1IP8N7Wtb5|d_Uay4)#1FA$z-C8#HUhYn^*)v6d4$VHZ3GpsU`ST zm#bZ$J5SdF1JhK#0>Nh}%4Nd(T&Dy2A>^AEk@O)P2{UtbIIpcb#szES(e7$!|>+B8O#1)y9V8Cjn3{4bc^oXQ7kMkA{gILPe0BDmZ^ z63J1)B2>=E5Hpefg2azFf#M8E--nM*KfD}Ba90)0b{DvK&{0&Tc(&yy6h+#w-;NF5 zyoXDoTN3IUYOLkCYRVPeEjZQ`SzoMi{S)n`rt*SWDE13w#IIGL&{DwF&O!(7)@g&ICY2UKPEd@XK?;WAo zAE~gM)#>21zv_RuRFw^|eVe586B&&OA!pLXdV0MC4~5yt`WeO z8Na%Eg_l9A{rR51{&l#tJqiycr;QdNg{GF4>%z$-mHltbH%;`@ag1KmKRjGsOUw@4 z;mt_Z<-)*pJrzQSS)`v4zRKw5`kj!*ok8AM$F<6Qs*|QqIbiZ6+EGANDlB7vdU;h- zJ@KThN=Orut?OH7>)1ow857-c6o)ER27e_S&adRftH6__LS@6FaVq?zF7SCMO`?eO z0mS%gm^#4Cw_ck;T97M{6x=fV2+N7OwTLmT3xn=uOrX(7|tmvaTIi=Y5i z`5~7m#ub;+Ho}G*Z_}x*^0O{ztEq;qbE*d(qYorMeb0JX%1qSnt%@kH(uH?~b5oJu zD=XV`>hp|Agp2%<%Ly?bs+(I8K@}_0MV>53I6cvNQB{olD{CWOjV7TYbfig%SRVV6}^Y571N+KM0 zwkTp#gkFbSB>BiaX~G@-b!;{=V8MyFFCqX=j6B%TId<8__=?a#Njor zK<$iJw9xH1gI&OB&JKGy%Yp845`g_2W->MnoK}P^XRNWOT$d&qM{v>-333uXNltTLy-(u@Iq)-6)P4q(d*R^iBL1e1jy7dfa^^k3d!<7gQgZ_BOs2#58k@+@0>t& zB$VV<)HlP@p#<+MYH?1k#!FJN2;jh`qvOI@k-BxR6y%|TdHGzA9n}6%sD0asE%xh% zY{E6t_gbf|bi16qH^Q>41N%<&cAoivv3DJApGzcL%di#1zeJ1sGan2)F&5jq;9Cs! zEOL9Qd17WZ79jG4480+FN)q#6l@~Kr`4$NM=A$C+`P2~h+VJo3Zk9~!t|qVTsP$yt()a^IH}woh!vjY`!=lh;zVGD zADX8oPX?lmdPS`8W=CF?Ja3EM60#}L0eEnC+rD0!AZU1VmQ{QyUT+qcAZ*mFFcMVy zH+cyK_pu{*5XsuU8Cgy!FKeY)MlBjzs(w0^G(mI(AbfZiJ;{n22DFSEp1J@1KYR@Q zem6m}&lzIWFb=ZW|Kb!qss zjGH9Sg$>C_*JWzVj5n2E#a$oQE2d{?NByyG^aL97@RDJ93ba7fa>ke#&9_JLG1104 zB$(8>%r`n)O*k0DblbDLX*L%0MHnGO)d;kKiyX2dGLXf(=zX9XvxT2iw*O)cq42aB zWj10CaWQN1AYSGO4X}IU8gTp(_m@NL;CaU`WH6NC&hUaAQAcn`x02=kPK;vsI!Ry7 z2Man81*0k<=LO?tf-xWc&0w_QMSNu(K(chD^`b|?x?F0!TvyZbaZUQYNmn;2=*9={ zOp1*(Kd^Hy?{GPuHIi#Sdd1jT$}3}$&&AK=W{m3?zmFEK!_U~W9qY&)0AA-|U?M4pViDmBJDky@tSkDh56Sr1g?Fh=TvQhK;5F$0 ziyA>SlSB74D1hUBW_e5~#CXO#`GIEwLXU(Al3E)CDUZgJwh zh9jETF8P7k0?G;$VEOo98Gkve_0lGz4K=~u6Q69)Onl5^Yswr+*yBGocOLT`3Ero% zO@xll)TXpzNDe!;CnY8ZR!wyL(rC0C0C!90b|lYQL`aDhz6!f%RZ|&i2T81t&Nu!= zbD~9?gkW6@1h5ycU2)c(?Y|iw79ILF)|ha>pjW``m4Z*t1xbY;Nwa71a}bUO)C&Af ztI0Fvhl!vAxpRa2G+&QwLAyFn6D{ zMcq^2nUS1*hK$n$C%13d#SG7hNjh5xd?1IwClMUp8lNFi#I|#Fc z^61^$H2O&pkRhe=MVFpAauQVlaP=ngs{R&8`v^P?M7gE2`x45R$%(JEVn30Ns8Fa? zxHT(t8?H`pl$K8}CnhebCQ@77NljuS{9ahqs0GI6|1FG?`xu1%ej_@fZ4|){9d2cH z5k?e#H>C9dGa?6A;EeLFMT}+yO;~+WYR;Eu%YOai2!;G`O z^%rC@BVsTOq1P;Rb5EcrFQz2&Q=1T0e$Pq{#}JL1JY{w)_sQtVA%up8%E`%@2_~x^ z6K6tV%Px(6r_R{)bbrUtZtad*ddK5m`2~fkhA;np?OJc?; zjE!Ee1_zj4LaT_xsQ3MmKWWU&Bub-TZix&N(N@X~pPXnt=ui>>g0@Cg-L7DrlETr5Sa~m`PipQkWq5llIZ+j~ScQI*sPXUQz2qBrGI;R- z0Pvnd9c(=b*)+-4fOUAx72FgAXB>>oz$VYNd{+8mZ7+sFiA=fF8!bI;x8fDkg{ER; zF35Y*lxCh4^q@W!d&NQdA857?&vh)YmV;;>IDggU&kUw8RrtjhJSjVi=$mXL;bSV@V@Wl9}j*TO$E6xN**e$U;dnKq_K66dsrkBV@BO@n=tc zC7pI1{Od0tzJIuG5Ll!y>SW=VdDUNDj8HiSLL~;mJ9hPJm{FqtWiTx)Ug68gz{Tw8N>PY2E6tISRQe{2p zifo8dGmOJ1$Qq9&>2Z5KRec8GB6bEn5Aez32~Suxvy!?v3`hr85%Yc_;;8}qCG~2W zB)Gy3H^E%H%iFDYfQNV|7Kf4(gciui;8pD-O+ex#Kk^s|QW$+~;y7g9tetrx)<`|f zZOseN@6+smQ-1O7G5&1_1Y2+vh#2Ek!{5U~4t{0Jyk>`U2=TC92(sZLjKE9FVLks9?tp+vNpk$h>5eP;%^6k}tU_zR;XnZ9W8cVt$7Ic~yq z!$w1}>9jpMh`N>_gB?s1>57o!E4i3wB##965l1UKcgA7+s(Z`xPUe6qmiAN!Ix z6Bo9Su?RXF`Wa*cA>|~s46PJ$-&vGcaz}4CT(wS#h@0osJ5>RKlIv(UF)#h#gZE8w zDgB>@V?%4C1k)^~J&E}TMuyS&2?sv6KqkH*4xnU_A%9%dH{V^H8P^v)7v-Doa|($X z3bsJH&NBO|jU-qq&Iu(iv#ub1PBPOk95TEDL_v(NcG?&`|0FR(ChjCp9V;*cOj@H! zgC(lphCQK-YBS7s5cdz8Z>0oXK(PhfrGDB*c|7IhAq^@R7W7rzP(dN{F6z~P#oTRf zyJ}|OOJ#(-U0!SLT|#9F|CZB&g3v8TOhqRH7@i4}w$>Fhw^{Mqoarw*cWM?^s2d`& zHZD|G|0ILIw2zb8K3~t)sSBn6p8)CvGh6f-mYaL44-46R@TGwQIwuwrNzyc!3$iOH z(U^PtjpmQvE*RLx;wsWh=ItNsGFVS=5}Xw-DS}@#$gAWr$Kbu z8k}^=ktjEo$gkbIf30{|Q>CCXA!IQHrPGfN*=?@6wu5MRuzqE!3tau4_$QgV-Dc-(1U<(Vv|JW}=<~xG0H+EK0^*B%MO)2>s z6Xdd(%H8Cygh}{dp~Yguv7Ru zi3B3CEk@iMLm4nAkyFr9j*2;9TCXa>Tl<7qGg gEUW9u##$}QJq7o?4K_? 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 literal 0 HcmV?d00001 diff --git a/source/site_ops/install_configure_run_guide/Images/tpa_inst_list.png b/source/site_ops/install_configure_run_guide/Images/tpa_inst_list.png new file mode 100644 index 0000000000000000000000000000000000000000..a4411aae90942e441c009ed1299f28eb7d1faf72 GIT binary patch literal 8620 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 +is an optional implementation of analytics for the Open edX LMS. It is the combined solution +of Cairn by Overhang.io and the OARS project developed by Axim Collaborative with a huge amount +of help from the Open edX community. Primarily it is intended to be a "batteries included" set +of configurations and plugins to combine 3rd party tools into a powerful and flexible system for +learner analytics. + +Cairn +***** + +`Cairn `_ is a Tutor plugin that you install on top of an +Open edX instance and that gives you access to a powerful, full-blown analytics stack. + +Unsupported Analytics solutions +******************************* + +edX Insights +============ + +Insights is `deprecated `_ and no +longer supported by the Open edX community. The last supported release was Quince (2023). + +Figures +======= + +`Figures `_ is no longer under active development and +is not recommended for use. + diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst new file mode 100644 index 000000000..000332151 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst @@ -0,0 +1,88 @@ +.. _styling_drag_and_drop_problems: + +############################## +Styling Drag and Drop Problems +############################## + +You can customize the appearance of drag and drop problems in your Open edX +site using custom Cascading Style Sheet (CSS) files. The style that you +configure applies to all drag and drop problems in all courses. For more +information about drag and drop problems, see +:ref:`drag_and_drop_problem`. + +The following two methods apply CSS styling to drag and drop problems. + +* You can apply CSS styles to drag and drop problems by creating a theme for + your site and updating the Syntactically Awesome Style Sheet (Sass) files + that produce the CSS files. For more information, see :ref:`Creating a + Theme`. + +* You can apply CSS styles to drag and drop problems by adding a Python + programming language module that includes a CSS file to your Open edX site. + For more information, see the instructions in this section. + +.. note:: This section provides information about styling the drag and drop + problem type that was added to the edX platform in 2016. This drag and drop + problem type replaced an earlier drag and drop problem type. You should use + the latest drag and drop problem type for all new course problems. + +.. note:: + Course teams can also style the background and text colors of the draggable + items in an individual drag and drop problem, without adding CSS files or + configuring a Python module. For more information, see + :ref:`changing_visual_style_of_drag_and_drop_problem`. + +To customize the style of drag and drop problems by adding a CSS file in a +Python module, follow these steps. + +#. Create a custom CSS style sheet that applies styles to the drag and drop + problem user interface. You can base your style sheet on the `example CSS + file for drag and drop problems`_ that is included in the drag and drop + problem module. + +#. Create a Python module that includes your custom CSS style sheet. For + example, the following Python module files include a CSS style sheet. + + .. code-block:: shell + + ./my_drag_and_drop_style + ./my_drag_and_drop_style/css + ./my_drag_and_drop_style/css/my_drag_and_drop_style.css + ./my_drag_and_drop_style/__init__.py + ./setup.py + + For more information about creating and installing Python modules, see the + documentation for the Python programming language. + +#. Install your Python module on the LMS server as the ``edxapp`` user. + + .. code-block:: shell + + pip install /path/to/my/module + + +#. Edit the ``lms.yml`` file for your LMS server. Add the ``drag-and- + drop-v2`` object to the ``XBLOCK_SETTINGS`` object. Include the content + shown in the following example. + + .. code-block:: none + + "XBLOCK_SETTINGS":{ + "drag-and-drop-v2": { + "theme": { + "package": "my_drag_and_drop_style", + "locations": ["css/my_drag_and_drop_style.css"] + } + } + + Enter the name of your Python module in the value of the ``package`` object. The value in the example above is ``my_drag_and_drop_style``. + + Enter the path to your CSS style sheet file in the value of the + ``locations`` object. The value in the example above is + ``css/my_drag_and_drop_style.css``. The path must be relative to your Python + module installation directory. You can include more than one path in the + ``locations`` array, separated by commas. + +#. Restart the LMS. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/index.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/index.rst new file mode 100644 index 000000000..51a2c4f28 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/index.rst @@ -0,0 +1,16 @@ +.. _Changing the Way Open edX Looks: + +###################################################### +Changing the Appearance of Open edX Sites +###################################################### + +This section describes how you can customize your Open edX sites to change the +way they look. + +.. toctree:: + :maxdepth: 1 + + theming/index + drag_and_drop_problem_styling + +.. For more information about how you set up sites, see :ref:`Configuring Open edX Sites`. diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/compiling_theme.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/compiling_theme.rst new file mode 100644 index 000000000..511102f0f --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/compiling_theme.rst @@ -0,0 +1,93 @@ +.. _Compiling a Theme: + +####################### +Compiling a Theme +####################### + +To update a theme, you compile the Sass files to create the CSS files that +style your UI when you apply the theme. + +.. contents:: + :local: + :depth: 1 + +************************************* +Update a Theme for the LMS or Studio +************************************* + +To update a theme for Studio or the LMS, follow these steps. + +#. Log in to the Open edX machine as the ``edxapp`` user. + +#. Change to the ``/edx/app/edxapp/edx-platform`` directory. + +#. Execute the ``npm run compile-sass`` command to update all themes. + + If you want to update specific themes, use the arguments described in the + following table. + + .. list-table:: + :header-rows: 1 + :widths: 30 70 + + * - Argument + - Description + * - ``--theme-dirs`` + - Provide a space-separated list of the theme directories that you want + to update. Only files in the theme directories that you include + are updated. + * - ``--themes`` + - Provide a space-separated list of the themes that you want to update. + Only the themes that you include are updated. + +****************************************** +Update a Theme for the E-commerce Service +****************************************** + +For the E-commerce service, commands are available for you to update +all themes at once, or to update only the themes you specify. + +To update a theme for the E-commerce service, follow these steps. + +#. Log in to the server for the E-commerce service as the ``ecommerce`` user. + +#. Change to the ``/edx/app/ecommerce/ecommerce`` directory. + +#. To update all themes, execute one of these commands. + + * ``make migrate`` + + * ``python manage.py update_assets`` + +#. To specify a theme or set of themes to update, or to include optional + arguments, execute ``python manage.py update_assets`` with the options + described in the following table. + + .. list-table:: + :header-rows: 1 + :widths: 30 70 + + * - Argument + - Description + * - ``--settings`` + - Provide the name of a Django `settings module `_ + in Python package syntax. For example, + ``--settings=ecommerce.settings.production``. + * - ``--themes`` + - Provide a space-separated list of the themes that you want to update. + Only the themes that you include are updated. + * - ``--output-style`` + - Defines the coding style for the compiled CSS files. Possible values + are ``nested``, ``expanded``, ``compact``, and ``compressed``. The + default value is ``nested``. + * - ``--skip-system`` + - Disables Sass file compilation for the default Sass files provided in + the Open edX software. Use this option if you have only updated the + Sass files in your theme. + * - ``--skip-collect`` + - Only compile the Sass files and do not deploy the resulting CSS files. + * - ``--enable-source-comments`` + - Include the location of the source file as comments in the resulting + CSS files. Enabling this argument can be useful when you are testing a + theme. + diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/create_theme.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/create_theme.rst new file mode 100644 index 000000000..10529233c --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/create_theme.rst @@ -0,0 +1,113 @@ +.. _Creating a Theme: + +################ +Creating a Theme +################ + +To create a theme, you add a theme directory to the installation-wide themes +directory that you added when you enabled theming for your Open edX +installation. Then, you copy default UI files into your theme directory and +update them to change the appearance of the Open edX site or sites that will +use that theme. + +.. contents:: + :local: + :depth: 1 + +For more information about the themes directory, see +:ref:`enable_theming`. + +.. _understanding_themeable_ui_files: + +****************************************** +Understanding Which UI Files to Customize +****************************************** + +You can customize the default images, Sass files, and web application template +files for the Open edX components in your installation. + +* To replace an image, you can override any of the images in the + ``static/images`` directories for the components you are theming. + +* For the LMS and Studio, you can customize any of the Sass files in the + ``static/sass`` directories. + +* For the E-commerce service, you can customize any of the Sass files in the + ``static/sass/partials`` directory. + + .. note:: Do not customize Sass files in the ``static/sass/base`` directory. + +* You can override any of the HTML templates in the ``lms/templates`` or + ``cms/templates`` directories for the components that you want to apply a + theme to. + +UI files for the LMS are stored in the directories shown in the following +example theme directory. You can examine the default UI files in the source +repository of the component that you want to apply the theme to. + +.. code-block:: none + + /my-open-edx-themes/edx-platform/my-theme/lms/static/images + /my-open-edx-themes/edx-platform/my-theme/lms/static/sass + /my-open-edx-themes/edx-platform/my-theme/lms/templates + +*********************************** +Example File Path for a Theme File +*********************************** + +The default Open edX theme includes an image file named ``logo.png`` that +appears in the header of most LMS pages. The file path of that image in the +``edx-platform`` repository is ``lms/static/images/logo.png``. + +The following example shows an absolute file path of the LMS logo image in a +theme directory. The file path after +``/my-open-edx-themes/edx-platform/my-theme/`` matches +the relative file path of that image in the default directory for the LMS UI. + +.. code-block:: none + + /my-open-edx-themes/edx-platform/my-theme/lms/static/images/logo.png + +*************************** +Naming a Theme Directory +*************************** + +The name of the directory that you create to hold your versions of the image, +theme, and Sass styling files identifies the theme. As a result, if you want to +create a theme named ``my-theme``, the name of the directory within your +installation-wide themes directory must be ``my-theme``. + +.. note:: + + If you add more than one site-specific theme directory, make sure that each + of the directory names is unique. The Open edX installation looks for a + theme with a certain name, and selects the first one that matches. + +Because the UI files for the LMS and Studio are located together in the +edx-platform repository, you can create one theme that applies to both the LMS +and Studio. If you want to create a theme for the E-commerce service, you must +add a separate theme directory for its files. + +The theme directory holds the UI files that override the corresponding +default files. + +For example, if the themes directory for your site is ``/my-open-edx-themes``, +the files in the following example create a theme named ``my-theme``. + +.. code-block:: none + + /my-open-edx-themes/edx-platform/my-theme/lms/static/images/logo.png + /my-open-edx-themes/edx-platform/my-theme/lms/static/sass/partials/base/_variables.scss + /my-open-edx-themes/edx-platform/my-theme/lms/templates/navigation.html + /my-open-edx-themes/edx-platform/my-theme/cms/static/images/studio-logo.png + /my-open-edx-themes/edx-platform/my-theme/cms/static/images/logo.png + /my-open-edx-themes/edx-platform/my-theme/cms/templates/login.html + +Because the theme directory includes UI files in both the ``lms`` and ``cms`` +subdirectories, you can apply the theme to both the LMS and Studio. + +.. note:: + + After you create or make changes to a theme, you must update the theme. + Updating a theme compiles Sass files to create the CSS files that style + your UI. For more information, see :ref:`Compiling a Theme`. diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/enable_themes.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/enable_themes.rst new file mode 100644 index 000000000..14c9fe384 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/enable_themes.rst @@ -0,0 +1,169 @@ +.. _enable_theming: + +############################## +Enabling and Applying Themes +############################## + +You must enable the use of themes for your Open edX installation before you can +apply themes to your Open edX sites. If your installation has only one site, +you apply a theme to that default site. + +For more information about Open edX sites, see :ref:`Configuring Open edX +Sites`. + +.. contents:: + :local: + :depth: 1 + +*************** +Enable Themes +*************** + +To enable the use of themes for your Open edX installation, follow these steps. + +#. Create an installation-wide themes directory to hold the customized UI files + for all of the themes that you create. This directory will hold + subdirectories for each theme. Your Open edX installation will look in the + directory to find the themes you apply to sites. + + You can create this directory at any location on a file system that is + accessible to your Open edX installation. For example, you might place it at + the root of the file system in a directory named ``/my-open-edx-themes``. + +#. Set the file permissions on the themes directory, and all of its + subdirectories, to enable read+write permissions for the Ubuntu user. + + For example, to allow the devstack ``edxapp`` user for the LMS and Studio to + read and write files in the themes directory, you might use the following + commands. + + .. code-block:: bash + + sudo chown -R edxapp:edxapp /my-open-edx-themes + sudo chmod -R u+rw /my-open-edx-themes + + On fullstack and native installations the Ubuntu user is ``www-data``. + +#. For each Open edX component that you want to theme, set the + ``ENABLE_COMPREHENSIVE_THEMING`` configuration property to ``true``. + + The specific method that you use to configure Open edX components depends on + the type of environment you are using. For example, you can set the + configuration property in the following files. + + * For the LMS, you edit ``/edx/app/edxapp/lms.yml`` to set + ``"ENABLE_COMPREHENSIVE_THEMING": true``. + + * For Studio, you edit ``/edx/app/edxapp/studio.yml`` to set + ``"ENABLE_COMPREHENSIVE_THEMING": true``. + + * For the E-commerce service, you edit ``/edx/etc/ecommerce.yml`` to set + ``ENABLE_COMPREHENSIVE_THEMING: true``. + + If any of these files do not exist, you can add them to define this + configuration setting. + +#. For each Open edX component that you want to apply a theme to, add the + absolute path of the themes directory to the ``COMPREHENSIVE_THEME_DIRS`` + configuration property. + + The specific method that you use to configure Open edX components depends on + the type of environment you are using. For example, you can set the + configuration property in the following files. + + * For Studio, add the path to ``COMPREHENSIVE_THEME_DIRS`` in + ``/edx/app/edxapp/studio.yml``. + + .. code-block:: none + + "COMPREHENSIVE_THEME_DIRS": [ + "/my-open-edx-themes/edx-platform" + + ], + + * For the LMS, add the path to ``COMPREHENSIVE_THEME_DIRS`` in + ``/edx/app/edxapp/lms.yml``. + + .. code-block:: none + + "COMPREHENSIVE_THEME_DIRS": [ + "/my-open-edx-themes/edx-platform" + ], + + * For the E-commerce service, add the path to ``COMPREHENSIVE_THEME_DIRS`` + in ``/edx/etc/ecommerce.yml``. + + .. code-block:: none + + COMPREHENSIVE_THEME_DIRS: ["/my-open-edx-themes/ecommerce"] + +#. Restart all servers. + +.. note:: + + You can create more than one themes directory for your Open edX + installation. To use multiple themes directories, include the path to each + directory in the ``COMPREHENSIVE_THEME_DIRS`` configuration property. The + following example shows the configuration for multiple themes directories. + + .. code-block:: none + + "COMPREHENSIVE_THEME_DIRS": [ + "/my-open-edx-themes/edx-platform", + "/my-other-open-edx-themes/edx-platform" + ], + +**************************************** +Example Settings for Comprehensive Theme +**************************************** + +For the following file structure: + +.. code-block:: none + + edx + └── my-themes + └── my-theme-red + ├── cms + └── lms + └── static + └── templates + +set these in lms.yml and studio.yml: + +.. code:: json + + "COMPREHENSIVE_THEME_DIRS": [ + "/edx/my-themes", + ], + "THEME_NAME": "my-theme-red" + + +************************ +Apply a Theme to a Site +************************ + +To apply a theme to an Open edX site, follow these steps. + +#. Make sure that you have enabled theming for your Open edX installation and + that you have configured an installation-wide themes directory. For more + information, see :ref:`enable_theming`. + +#. Make sure that you have created a theme and that you know the identifier of + the theme. The identifier of a theme is the name of the directory for that + theme, within your installation-wide themes directory. For more information, + see :ref:`Creating a Theme`. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. Select **Site themes**. + +#. Select **Add site theme**. + +#. From the **Site** menu, select the site you want to apply a theme to. + +#. In the **Theme dir name** field, enter the identifier of the theme. + +#. Select **Save**. + diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/index.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/index.rst new file mode 100644 index 000000000..7c7e7849d --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/index.rst @@ -0,0 +1,37 @@ +.. _Theming Open edX: + +##################################### +Changing Themes for an Open edX Site +##################################### + +The theme for a website defines the appearance of its user interface (UI): the +logo, the color scheme, and the links in the page headers and footers are +examples of different aspects of an Open edX site that are defined by its +theme. + +Open edX provides a default theme that is defined by page templates, CSS +styling, and assets such as images that are provided in the Open edX code. You +can change the appearance of the following parts of an Open edX site. + +* The Studio UI, which is used by course teams. + +* The learning management system (LMS) UI, which is used by learners and course + teams. + +* The UI of the E-commerce service, which is used by course offering and order + managers. + +The topics in this section describe how you can change the way an Open edX +site looks, without changing how it works. + +.. toctree:: + :maxdepth: 2 + + overview_themes + theme_directories + create_theme + enable_themes + compiling_theme + +In addition, an `example theme `_ is +available for review. diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/overview_themes.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/overview_themes.rst new file mode 100644 index 000000000..d97d92638 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/overview_themes.rst @@ -0,0 +1,21 @@ +.. _Theming Overview: + +################### +Themes Overview +################### + +After you configure one or more sites for your Open edX installation, including +their domain and platform names, you can set up a theme to use for each site. + +To override the files that constitute the default Open edX theme, you create +replacements for one or more of those files, place them in file paths that are +constructed and named in parallel to the default file locations, +configure your Open edX instance to use the files in your theme's directories +instead of the default locations, and then compile the theme. + +EdX first looks for files in your theme directories, and uses any file that +matches the exact file path and file name of a default UI file. If matching +files are not found, then Open edX looks in the default location. + +For more information about Open edX sites, see :ref:`Configuring Open edX +Sites`. diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/theme_directories.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/theme_directories.rst new file mode 100644 index 000000000..3ef324871 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/theming/theme_directories.rst @@ -0,0 +1,60 @@ +.. _Themes Root Directories: + +################################# +Root Directories for Theme Files +################################# + +Themes are located outside of the Open edX source directories, in any location +you like. For example, you might make a directory called +``/my-open-edx-themes``. + +Within that directory, you create a separate directory for each Open edX +repository that you want to create a theme for, such as ``edx-platform`` +and ``ecommerce``. + +Within each of those directories, you create another directory and name it for +your theme, such as ``my-theme``. You can create a number of themes, each with +their own name. Within each theme directory, you create directories and files +to parallel the structure in the corresponding Open edX repository. + +After you create these directories, you might have a structure like this one. + +.. code:: + + my-open-edx-themes + ├── ecommerce + │   └── my-theme + └── edx-platform + └── my-theme + ├── cms + └── lms + +You must give the files that you create for a theme the same relative file +paths and file names as the default files that they override. Different root +directories for the relative paths apply to Studio, the LMS, and the E-commerce +service. + +* For Studio and the LMS, relative file paths are from the root directory of + the local clone of the ``edx/edx-platform`` repository in your installation + directory. + +* For the E-commerce service, relative file paths are from the ``ecommerce`` + directory of the local clone of the ``edx/ecommerce`` repository in your + installation directory. + +For example, the root directory for the relative file paths of your theme files +might be at one of the following file paths. + +* For the LMS UI or Studio UI, ``/edx/app/edxapp/edx-platform``. + +* For the UI of the E-commerce service, + ``/edx/app/ecommerce/ecommerce/ecommerce``. + +The following subdirectories hold the UI files that you can override. + +* ``static`` holds media files such as images and styling resources such as + Syntactically Awesome Style Sheet (Sass) files that produce Cascading Style + Sheet (CSS) files. + +* ``templates`` holds Python web application page templates that produce the + HTML for UI pages. diff --git a/source/site_ops/install_configure_run_guide/configuration/config_allowed_regis_emails.rst b/source/site_ops/install_configure_run_guide/configuration/config_allowed_regis_emails.rst new file mode 100644 index 000000000..246a1a04f --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/config_allowed_regis_emails.rst @@ -0,0 +1,69 @@ +.. _Configure Allowed Registration Email Patterns: + +################################################ +Specifying Allowed Registration Email Patterns +################################################ + +This topic describes how to restrict registration on your site by specifying +which email address patterns are allowed in registration emails. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +By default, all email addresses are accepted when learners register for an +account on your Open edX site. You have the option of restricting registrations +to learners who use an allowed email address pattern. Doing so can be useful in +cases where you want to allow only learners who are members of a school, +organization, or corporation to register and access your courses. + +.. note:: Configuring your site using the procedure below only restricts + registration to learners whose email addresses match the specified patterns. + It does not hide courses from any learners, or prevent access to pages on + your site that can be accessed without registration. + + +********************************* +Configure Allowed Email Patterns +********************************* + +To specify the email patterns that are allowed for registration, follow these steps. + +#. Locate the ``lms.yml`` and ``studio.yml`` files, which are located + one level above the ``edx-platform`` directory. You make the same changes + to both files. + +#. In the ``lms.yml`` and ``studio.yml`` files add the + ``REGISTRATION_EMAIL_PATTERNS_ALLOWED`` setting. + + .. code-block:: none + + "REGISTRATION_EMAIL_PATTERNS_ALLOWED": null + + + If the value for this setting is ``null``, there are no restrictions, and all + email addresses are accepted for registration. + +#. Use one or more Python regular expressions to specify the email domains that + allowed email addresses must match. + + The following example allows email addresses using the pattern + ``example.com`` or ``any.example.com`` to register. It also allows + ``school.tld`` addresses, but only if those addresses have a ``.`` before + the ``@`` symbol. + + .. code-block:: none + + "REGISTRATION_EMAIL_PATTERNS_ALLOWED" = [ + + "^.*@(.*\\.)?example\\.com$", + "(^\\w+\\.\\w+)@school\\.tld$" + ] + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +#. Restart your ``edxapp`` instances. diff --git a/source/site_ops/install_configure_run_guide/configuration/configure_milestone_app.rst b/source/site_ops/install_configure_run_guide/configuration/configure_milestone_app.rst new file mode 100644 index 000000000..3bb591a5b --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/configure_milestone_app.rst @@ -0,0 +1,18 @@ + +.. for reuse, not in TOC, excluded from build list + +************************************ +Configure the Milestones Application +************************************ + +#. Set the value of ``MILESTONES_APP`` in the ``lms.yml`` and + ``studio.yml`` files to ``True``. + + .. code-block:: none + + # Milestones application flag + 'MILESTONES_APP': True, + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +#. Run database migrations. diff --git a/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst b/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst new file mode 100644 index 000000000..27608470d --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst @@ -0,0 +1,67 @@ +.. _Customize Registration Page: + +############################################# +Adding Custom Fields to the Registration Page +############################################# + +This topic describes how to add custom fields to the registration page for your +instance of Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +By default, the registration page for each instance of Open edX has fields that +ask for information such as a user's name, country, and highest level of +education completed. You can add custom fields to the registration page for +your own Open edX instance. These fields can be different types, including +text entry fields and drop-down lists. + +********************************************* +Add Custom Fields to the Registration Page +********************************************* + +Before you add a custom field to the registration page, you must make sure that +the combined sign-in and registration form is enabled for your Open edX +instance. To do this, open the ``lms.yml`` and ``studio.yml`` files, and +set the ``ENABLE_COMBINED_LOGIN_REGISTRATION`` feature flag to True. These +files are located one level above the ``edx- platform`` directory. + +To add custom fields to the registration page, follow these steps. + +#. Start and sign in to your instance of Open edX. + +#. Use Python to create a Django form that contains the fields that you want to + add to the page, and then create a Django model to store the information + from the form. + + For more information about how to create Django forms, see `Django Forms`_ + on the `Django website`_. + +#. In the ``lms.yml`` file, add the app for your model to the + ``ADDL_INSTALLED_APPS`` array. + +#. In the ``lms.yml`` file, set the ``REGISTRATION_EXTENSION_FORM`` + setting to the path of the Django form that you just created, as a dot- + separated Python string. + + For example, if your form is named "ExampleExtensionForm" and is located at + "path/to/the_form.py", the value of the setting is + ``path.to.the_form.ExampleExtensionForm``. + +#. Run database migrations. + +#. Restart the LMS and verify that the new fields appear on your registration + form. + +.. note:: + + For an example app for custom forms, see the OpenCraft `custom_form_app`_ + page in `GitHub`_. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst b/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst new file mode 100644 index 000000000..5da2d9de6 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst @@ -0,0 +1,58 @@ +.. _Add CourseTalk (Deprecated): + +############################################# +Adding the CourseTalk Widget +############################################# + +This topic describes how to add `CourseTalk`_ widgets to your instance of Open +edX. When you add the CourseTalk widget, it is visible for all courses. + +.. Note:: + + This feature has been deprecated and is unavailable in Lilac and onwards. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +The CourseTalk widget allows learners to write reviews of your course and see +reviews that other learners have written. Learners can write reviews on the +course **Course** page, and the reviews are visible both in the course, and on +the course **About** page. Only learners who are enrolled in the course can +leave reviews of a course. + +.. image:: ../../../shared/images/course_reviews.png + :width: 250 + :alt: Examples of course reviews on a course's About page. + +********************************************* +Add the CourseTalk Widget +********************************************* + +To add the CourseTalk widget, follow these steps. + +#. Sign in to the Django administration console for your base URL. For example, + go to ``http://{your_URL}/admin``. +#. In the navigation pane, locate **Coursetalk**, and then select **Course talk + widget configurations**. +#. On the **Select course talk widget configuration to change** page, select + **Add course talk widget configuration**. +#. On the **Add course talk widget configuration** page, select the + **Enabled** check box, enter a value in the **Platform key** field, and then + select **Save**. + + .. note:: + You can use any text that you want as your platform key. EdX recommends + that you use your domain name, or part of your domain name. + +#. In the LMS, open the **Course** page for any of your Open edX courses. Verify that the **Reviews** link in the sidebar opens the CourseTalk widget. +#. Sign out of your instance of Open edX and view the About page for any + course. +#. In the right pane, verify that the CourseTalk widget appears below the + course information panel. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/edx_search.rst b/source/site_ops/install_configure_run_guide/configuration/edx_search.rst new file mode 100644 index 000000000..c288385a6 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/edx_search.rst @@ -0,0 +1,193 @@ +.. _Enable edX Search: + +######################### +Enabling Open edX Search +######################### + +You can add a search feature to your Open edX site so that prospective learners +can find courses more easily. When a learner searches for a key word or words, +the search feature returns a list of the courses that are currently open for +enrollment and that match the entered key words. + +This section describes how to enable search in your instance of Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +`EdX Search`_ is a Django application that provides access to search services +from within edX Platform applications. Searching is accomplished by creating an +index of documents, and then searching within that index for matching +information. + +When you install the Open edX devstack, edX search is enabled by +default. You must enable this feature to use it with Open edX fullstack. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +********************************** +Search Engines and edX Search +********************************** + +By default, edX Search uses MockSearchEngine for testing and ElasticSearch +Engine for production. You can configure edX Search to use a different search +engine. + +================= +MockSearchEngine +================= + +MockSearchEngine is a simple implementation using a JSON file for index +storage. It has no specific requirements, but it does not scale well and should +only be used for testing. + +==================== +ElasticSearchEngine +==================== + +ElasticSearchEngine is a ElasticSearch back-end implementation. It uses same +ElasticSearch version that is already part of Open edX Platform. The current +version is v1.5.2. The ElasticSearch Python client is the latest 1.x version. + +************************ +EdX Search Requirements +************************ + +EdX Search requires the following applications. + +* Django (edX Platform version) +* pyMongo (edX Platform version) +* pytz +* Django elasticsearch (0.4.5) + +************************* +Install edX Search +************************* + +EdX Search is included in Open edX Platform GitHub requirements and is +installed automatically when you install the Open edX Platform. + + +***************** +Enable Indexing +***************** + +You enable course indexing by setting the ``ENABLE_COURSEWARE_INDEX`` flag. + +You enable library indexing by setting the ``ENABLE_LIBRARY_INDEX`` flag. + +Indexing is done from Studio as a Celery task. Every publish event triggers the +reindex procedure. + +You can also reindex the course manually through the **Reindex** button in the +**Course Overview** page. + +.. note:: The search feature only returns results for courses that are + currently open for enrollment. Course teams can set the enrollment start and + end dates for their courses in Studio. For more information, see + :ref:`Guidelines for Start and End Dates` in the *Building + and Running an Open edX Course* guide. + +============================== +Which Data Gets Indexed +============================== + +Which data gets indexed is determined by the module ``index_dictionary()`` +function implementation. Modules supporting this method are ``Sequence``, +``Vertical``, ``Video``, and ``HTML Block``. You can add support to any module +type. + +Course metadata, including the name, description, and start and end dates are +also indexed. + +*************** +Supported Flags +*************** + +The following flags are supported in the CMS and LMS applications. + +=== +CMS +=== + +* ``ENABLE_COURSEWARE_INDEX``: Enables and disables courseware content and + course info indexing. + +* ``ENABLE_LIBRARY_INDEX``: Enables and disables library content indexing. + +* ``SEARCH_ENGINE``: Sets the search engine to use. There are two predefined + values. + + * ``"search.elastic.ElasticSearchEngine"`` + * ``"search.tests.mock_search_engine.MockSearchEngine"`` + +* ``ELASTIC_FIELD_MAPPINGS``: Sets any additional field mappings that elastic + search should be aware of. For example, the following code includes the + course start date. + + .. code-block:: none + + ELASTIC_FIELD_MAPPINGS = { + "start_date": { + "type": "date" + } + } + +=== +LMS +=== + +* ``ENABLE_COURSEWARE_SEARCH``: Enables and disables Courseware Search feature + (in course searching). + +* ``ENABLE_DASHBOARD_SEARCH``: Enables and disables Dashboard Search feature + (in enrolled courses searching). + +* ``ENABLE_COURSE_DISCOVERY``: Enables and disables Course Discovery feature + (over courses searching and facet filtering). + +* ``COURSE_DISCOVERY_FILTERS``: If provided, overrides the list of facets that + are used in the Course Discovery feature to filter the results. By default, + all facets will be displayed. The list of available facets includes: + + * Course organization: ``"org"`` + * Course type: ``"modes"`` + * Course language: ``"language"`` + +* ``SEARCH_ENGINE``: Sets the search engine to use. The following values are + predefined. + + * ``"search.elastic.ElasticSearchEngine"`` + * ``"search.tests.mock_search_engine.MockSearchEngine"`` + +* ``SEARCH_INITIALIZER``: Used to set custom SearchInitializer. + SearchInitializer provides an extension to achieve masquerade and other + presearch environmental settings. + + * default: ``SearchInitializer`` + * LMS implementation: + ``lms.lib.courseware_search.lms_search_initializer.LmsSearchInitializer`` + +* ``SEARCH_RESULT_PROCESSOR``: Used to set custom SearchResultProcessor. + SearchResultProcessor does post processing and data manipulation on a result + set returned by SearchEngine. + + * default: ``SearchResultProcessor`` + * LMS implementation: + ``lms.lib.courseware_search.lms_result_processor.LmsSearchResultProcessor`` + +* ``SEARCH_FILTER_GENERATOR``: Used to set custom SearchFilterGenerator. + SearchFilterGenerator sets filters defined by current active user. Basic + implementation sets only course start date filter. + + * default: ``SearchFilterGenerator`` + * LMS implementation: + ``lms.lib.courseware_search.lms_filter_generator.LmsSearchFilterGenerator`` + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst b/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst new file mode 100644 index 000000000..19317fb52 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst @@ -0,0 +1,32 @@ +.. _Enable CCX: + +#################################### +Enabling Custom Courses +#################################### + +To enable designated users to create custom courses (CCX) on your instance of +Open edX, you must configure the ``server-vars.yml`` file in the edX platform. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +#. Stop the LMS server. + +#. Create or update the file ``/edx/app/edx_ansible/server-vars.yml`` to + include the CCX feature flag. + + .. code-block:: yaml + + EDXAPP_FEATURES: + CUSTOM_COURSES_EDX: true + +#. Run the command ``/edx/bin/update``. + + .. code-block:: bash + + sudo /edx/bin/update edx-platform + +#. Restart the LMS server. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst b/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst new file mode 100644 index 000000000..915707155 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst @@ -0,0 +1,404 @@ +.. _Enable Certificates: + +############################ +Enabling Course Certificates +############################ + +This topic describes how to enable and configure course certificates in your +instance of Open edX. + +For information about configuring program certificates, refer to documentation +in the `edx/credentials`_ GitHub repository. + +.. contents:: + :local: + :depth: 1 + +**************************** +Course Certificates Overview +**************************** + +Organizations and course teams can choose to generate certificates for learners +who pass a course. Learners can view, print, or share their certificates. + +For additional information about certificates, see +:ref:`Setting Up Certificates` in the *Building and Running an +Open edX Course* guide or :ref:`openlearners:Print a Web Certificate` in the +*Open edX Learner's Guide*. + +To enable course certificates on your instance of Open edX, you must enable a +feature flag in both Studio and the Learning Management System and complete the +configuration tasks described in this topic. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +************************************************ +Enable Course Certificates in Studio and the LMS +************************************************ + +To enable certificates, modify the ``lms.yml`` and ``studio.yml`` +files, which are located one level above the ``edx-platform`` directory. + +#. In the ``lms.yml`` and ``studio.yml`` files, set the value of + ``CERTIFICATES_HTML_VIEW`` within the ``FEATURES`` object to ``true``. + + .. code-block:: none + + "FEATURES": { + ... + 'CERTIFICATES_HTML_VIEW': true, + ... + } + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +#. If it does not exist already, create the folder ``/tmp/certificates`` owned + by the user and group ``www-data``. Depending on your configuration, this + folder might not survive reboots, and so might need to be created by a + script. + +#. Run database migrations. + + +***************************************** +Configuring Course Certificates in Studio +***************************************** + +Within Studio, course team members with the Admin role can create and edit a +certificate configuration that is used to generate certificates for their +course, including adding signatories and images for organization logo and +signature images for signatories. For details, :ref:`Setting Up +Certificates` in *Building and Running an Open edX Course*. + + +******************************************************** +Configure Course Certificates for Your Open edX Instance +******************************************************** + +#. Access the LMS Django Administration website for your instance of Open edX. + To do this, go to ``https:///admin``. + For example, this might be ``https://courses.YourOrganization.com/admin``. + +#. Under **Site Administration** > **Certificates**, add an HTML View + Configuration, and select **Enabled**. + +#. Set the following certificates-related parameters for your Open edX + instance. + + * ``platform_name`` + * ``company_about_url`` + * ``company_privacy_url`` + * ``company_tos_url`` + * ``company_verified_certificate_url`` + * ``logo_src`` + * ``logo_url`` + + For each course mode for which you want to offer certificates (such as + "honor" or "verified"), define these parameters. + + * ``certificate_type`` + * ``certificate_title`` + * ``document_body_class_append``. + + Make sure the mode name matches your course mode name exactly. An example + follows. + + For more information about course modes, also called enrollment modes + or enrollment tracks, see :ref:`enrollment track`. + + .. code-block:: none + + { + "default": { + "accomplishment_class_append": "accomplishment-certificate", + "platform_name": "YourPlatformName", + "company_about_url":"https://www.YourOrganization.com/about-us", + "company_privacy_url": "https://www.YourOrganization.com/our-privacy-policy", + "company_tos_url": "https://www.YourOrganization.com/our-terms-service", + "company_verified_certificate_url": "https://www.YourOrganization.com/about_verified_certificates", + "logo_src": "/static/certificates/images/our_logo.svg", + "logo_url": "www.YourOrganization.com" + }, + "honor": { + "certificate_type": "honor", + "certificate_title": "Honor Certificate", + "document_body_class_append": "is-honorcode" + }, + "verified": { + "certificate_type": "verified", + "certificate_title": "Verified Certificate", + "document_body_class_append": "is-idverified" + }, + "base": { + "certificate_type": "base", + "certificate_title": "Certificate of Achievement", + "document_body_class_append": "is-base" + } + } + +#. Save the configuration parameters. + +#. Restart the Studio and LMS processes to load the updated environment + configurations. + + +.. _Discontinue Audit Certificates: + +==================================== +Discontinue Audit Track Certificates +==================================== + +Organizations that previously offered certificates to audit track learners will +no longer be able to grant certificates to these learners. Learners can +continue to audit courses, but they will not be able to earn a certificate. + +For more information about course tracks, also called enrollment modes or +enrollment tracks, see :ref:`enrollment track`. + + +***************************************************** +Customize Certificate Templates For Your Organization +***************************************************** + +Set up the templates for certificates that your organization will issue. Base +templates are included, but you must ensure that they are customized for your +organization. For example, you can change the images that appear on +certificates for each course mode that your organization supports, as well as +fonts and colors that are used on certificates. + +To issue certificates in more than one language, see :ref:`Certificates in +Additional Languages`. + +To display hours of effort on certificates, see :ref:`Display Hours of +Effort`. + +Assets for HTML certificates exist in the following locations. + +* ``lms/templates/certificates`` - this folder contains .html files for + certificates. The file ``valid.html`` is an example of a certificate file. + Files with names that start with an underscore, such as + ``_certificate_footer.html``, are partial files that can be referenced in the + main certificate .html files. + +* ``lms/static/certificates`` - subfolders of this folder contain assets used + in creating certificates, such as images, fonts, and sass/css files. + + .. note:: The organization logo on a certificate is uploaded in Studio. For + details, see :ref:`Setting Up Certificates` in *Building + and Running an Open edX Course*. + + + +.. _Certificates in Additional Languages: + +******************************************* +Enable Certificates in Additional Languages +******************************************* + +You can configure course certificates to render in a specific language. + +.. contents:: + :local: + :depth: 1 + +===================================================== +Configure Course Certificates in Additional Languages +===================================================== + +To enable generating course certificates in languages other than the +default language of your platform, follow these steps. + +.. note:: Base certificate templates already exist for English and + Spanish. If you want a course certificate that is different from the + default certificate for the organization or language, create a new + certificate template. + +#. Add the language in which you want to generate certificates to + ``EDXAPP_CERTIFICATE_TEMPLATE_LANGUAGES`` + (``edx/configuration/playbooks/roles/edxapp/defaults/main.yml``), where the + key is the language code and the value is the name of the language. + + For example, ``'fr':'français'``. + +#. In the LMS Django Administration site for your instance of Open edX, under + **Site Administration** > **Certificates** > **Certificate templates**, add + a certificate template for each additional language in which you want to + generate certificates. + +#. In each certificate template, modify the configuration parameters as + required to apply the template either to all course runs in an + organization, or to a single course run. + + + .. list-table:: + :widths: 10 35 35 + :header-rows: 1 + + * - Parameter + - To apply the template to all course runs + in the organization + - To apply the template to a specific course run + * - ``Language`` + - Select the language that you want the certificate to be generated + in. + - Select the language that you want the certificate to be generated + in. + * - ``Organization ID`` + - Enter the ID for the organization whose courses should use this + certificate template. + - Select ``None``. + * - ``Course Key`` + - Leave empty. + - Enter the course key for the course run which should use this + certificate template. + * - ``Mode`` + - (Optional) Specify the course mode for which certificates will be + generated using this template. If no mode is specified, this template + is used for all course modes. + - (Optional) Specify the course mode for which certificates will be + generated using this template. If no mode is specified, this template + is used for all course modes. + * - ``Is Active`` + - Select this checkbox to make this template active. + - Select this checkbox to make this template active. + + + .. note:: If more than one certificate template would apply to a course + run, the most specific (lowest level) template is used. For example, if + you define a certificate template for all courses in an organization and + another template for a specific course run, the template for the course + run is used. + +#. Save each certificate template. + +#. ONLY if you are enabling additional language certificates for a specific + course run, add a certificate generation course setting in LMS Django + Administration, under **Site Administration** > **Certificates**. + +#. In the **Course key** field of the certificate generation course setting, + specify the course run for which you are enabling language specific + certificate templates. + +#. Select **Language specific templates enabled**, and save the configuration. + + +.. _Display Hours of Effort: + +********************************************** +Display Hours of Effort on Course Certificates +********************************************** + + +To display hours of effort for a course run on a course certificate, follow +these steps. + +#. Log in to the Discovery service Django Administration site for your instance + of Open edX. To do this, go to ``https:///admin``. For example, this might be + ``https://discovery.YourOrganization.com/admin``. + +#. Under **Course Metadata** > **Course Runs**, locate the course run, and make + sure there are values for the following attributes. + + * Max effort + * Weeks to complete + +#. Log in to the LMS Django Administration site for your instance of Open edX. + To do this, go to ``https:///admin``. For example, this might be + ``https://courses.YourOrganization.com/admin``. + +#. Under **Site Administration** > **Certificates**, add or edit a + certificate generation course setting. + +#. Select ``Yes`` for **Include hours of effort** and save the configuration. + +#. Under **Site Administration** > **Certificates**, add or edit a certificate + template. + +#. In the certificate template, ensure that a ``div`` element exists that + includes the context variable ``hours_of_effort``. + +#. Save your edits to the certificate template. + + +.. _Enable Automatic Certificate Generation: + +*************************************** +Enable Automatic Certificate Generation +*************************************** + +It is suggested that automatic certificate generation +be enabled in order to provide the best experience for learners. +Particularly in self-paced courses (see :ref:`Enable Self Paced +Courses`), your learners might not want to wait until an instructor +initiates certificate generation; instead, they would typically expect +to be able to download their certificates as soon as they achieve a +passing grade. This can be achieved by enabling *auto_certificate_generation* +as described below. + +To globally enable this functionality, you must set a `Waffle switch +`_: + +#. In the LMS Django Administration site for your instance of Open + edX, under **Django-Waffle** > **Switches**, select **Add Switch**. + +#. Name the switch ``certificates.auto_certificate_generation``. + +#. Tick the **Active** checkbox. + +#. Optionally, add a **Note** describing that the switch enables + certificate auto-generation for self-paced courses, or any other + information you consider necessary. The **Note** contents are never + shown to learners. + +#. Click **Save** to activate the switch. + +Open edX caches the value of this Waffle switch, thus the changed +setting may take several minutes to propagate in a large installation. + +In addition to this Waffle switch, automatic certificate generation +requires certain settings to be defined for the course, by a member of +the course staff. For more details, see :ref:`Allow +Learners to Receive Early Certificates` and +:ref:`Allow Learners to Download Certificates` in +*Building and Running an Open edX Course*. + +.. _Manually Generate Certificates for a Course: + +******************************************* +Manually Generate Certificates For a Course +******************************************* + +To manually generate certificates for a course, run the ``manage.py`` script +with the following settings. When the script finishes running, course certificates +will have been generated for eligible learners. + +#. Obtain the course ID for the course for which you are generating + certificates. When you view course content in your browser, the course ID + appears as part of the URL. For example, in the URL + ``http://www.edx.org/course/course-v1:edX+demoX_Demo_2015``, the course ID + is ``course-v1:edX+demoX_Demo_2015``. For some courses, the course ID + contains slashes, however it will not contain beginning or trailing slashes. + For example, a course id look like ``edX/Demox/Demo_2014``. + +#. Obtain the user IDs for any learners for whom you'd like to generate course + certificates. These can be found in the ``auth_user`` database table. + +#. Run ``manage.py`` with the following settings, replacing {UserID} with a user id + and ``{CourseID}`` with the course ID. Do not include beginning or trailing slashes. + + ``./manage.py lms --settings=production cert_generation -u {UserID} {UserID} -c {CourseID}`` + + For example, + + ``./manage.py lms --settings=production cert_generation -u 123 456 -c course-v1:edX+DemoX+Demo_Course`` + +#. You can then view the certificates in the ``certificates_generatedcertificate`` database table. + + +.. include:: ../../../links/links.rst + +.. _edx/credentials: https://github.com/openedx/credentials diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst b/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst new file mode 100644 index 000000000..8a6d8b138 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst @@ -0,0 +1,25 @@ +.. _Enable Custom Course Settings: + +#################################### +Enabling Custom Course Settings +#################################### + +To enable course developers to add custom fields to a course on your instance +of Open edX, you must configure the ``studio.yml`` file in the edX platform. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +#. Stop the LMS server. + +#. Create or update the file ``studio.yml`` to include the custom course + settings feature flag. + + .. code-block:: yaml + + 'ENABLE_OTHER_COURSE_SETTINGS': true, + +#. Restart the LMS server. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst b/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst new file mode 100644 index 000000000..8e9f2ac6c --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst @@ -0,0 +1,63 @@ +.. _Enabling Discussion Notifications: + +########################################## +Enabling Discussion Notifications +########################################## + +You can set up notifications that learners receive the first time that anyone +adds a response to a discussion post that they have made. + +For more information, including the text of the discussion notification +message, see :ref:`Automatic Email` and +:ref:`openlearners:Receiving Discussion Notifications`. + +.. contents:: + :depth: 1 + :local: + +.. _Requirements for Discussion Notifications: + +***************************************** +Requirements for Discussion Notifications +***************************************** + +To create discussion notifications for your instance of the Open edX platform, +you need the following items. + +* edX Automated Communication Engine (ACE). For more information about how to + install and configure ACE, see `edX Automated Communication Engine`_. +* A third party email client, such as Sailthru. For information about how to + configure your email client, see the documentation for the client. + +.. _Enable Discussion Notifications: + +******************************* +Enable Discussion Notifications +******************************* + +After you have set up ACE and the third party email client, you enable +discussion notifications in the Django administration console for your instance +of Open edX. + +#. Sign in to the LMS Django administration console for your base URL. For + example, ``http://{your_URL}/admin``. + +#. On the **Site Administration** page, locate **Site_Configuration**. + +#. In the **Site_Configuration** section, next to **Site configurations**, + select **Change**. + +#. On the **Change site configuration** page, locate the **Values** field, and + then add the following value. + + :: + + { + "enable_forum_notifications":true + } + +#. Select **Save**. + + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst b/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst new file mode 100644 index 000000000..407724a07 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst @@ -0,0 +1,50 @@ +.. _Enable Entrance Exams: + +######################## +Enabling Entrance Exams +######################## + +This topic describes how to enable entrance exams in your instance of Open +edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +Course teams can create an entrance exam for the course. Learners must pass the +entrance exam before participating in the course. + +To enable this feature on your instance of Open edX, you must enable +entrance exams in Studio and the Learning Management System. + +For information about entrance exams, see the *Building and Running an +Open edX Course* and *Open edX Learner's* guides. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +.. include:: configure_milestone_app.rst + +************************************************************************* +Enable Entrance Exams in Studio and the Learning Management System +************************************************************************* + +To enable entrance exams, you modify the ``lms.yml`` and ``studio.yml`` +files, which are located one level above the ``edx-platform`` directory. + +#. Set the value of ``ENTRANCE_EXAMS`` in the ``lms.yml`` and + ``studio.yml`` files to ``True``. + + .. code-block:: none + + # Entrance exams feature flag + 'ENTRANCE_EXAMS': True, + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst b/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst new file mode 100644 index 000000000..a9f733cc7 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst @@ -0,0 +1,53 @@ +.. _Enable Licensing: + +#################################### +Enabling Course and Video Licensing +#################################### + +This topic describes how to enable licensing in your instance of Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +Course teams can specify licensing options for course content as well as for +each video in a course. + +Course teams can select one of the following license options. + +* All Rights Reserved +* Creative Commons + +By specifying the license, course teams communicate to learners whether and how +they can reuse course content. + +To enable this feature on your instance of Open edX, you must enable licensing +in both Studio and the Learning Management System. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +***************************** +Enable Licensing in Studio +***************************** + +To enable licensing, you modify the ``lms.yml`` and ``studio.yml`` +files, which are located one level above the ``edx-platform`` directory. + +#. In the ``lms.yml`` and ``studio.yml`` files, in the ``FEATURES`` + dictionary, add ``'LICENSING':True``: + + .. code-block:: none + + FEATURES = { + 'LICENSING': True, + . . . + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst b/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst new file mode 100644 index 000000000..41338918d --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst @@ -0,0 +1,52 @@ +.. _Enable Self Paced Courses: + +############################# +Enabling Self-Paced Courses +############################# + +This topic describes how to enable the self-paced courses feature in your +instance of Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +By default, courses are instructor-paced. These courses run on a schedule, +typically four to eight weeks, with new content released each week and set +assignment due dates. You can configure your instance of Open edX so that it +enables self-paced courses. A self-paced course releases content all at once +and is available to complete for three to twelve months after the start date. +In a self-paced course, there are no due dates other than the course end date. + +To enable self-paced courses on your instance of Open edX, you must enable the +self-paced course feature in the Learning Management System. Then, course +teams are able to set up a course as either instructor-paced or self-paced in +Studio. + +For information about how course teams set course pacing, see the +:ref:`Set Schedule and Pacing` topic in the +*Building and Running an Open edX Course* guide. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +************************************************************************* +Enable Self-Paced Courses in the Learning Management System +************************************************************************* + +To enable self-paced courses, follow these steps to edit the configurations, +using the Django administration console for your Open edX LMS. + + #. Log in to the Django administration console for the LMS. + #. In the **Self_Paced** section, locate **Self paced configurations**, and + then select **Add**. + #. Select the **Enabled** and **Enable course home page improvements** + checkboxes. + #. Select **Save**. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst b/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst new file mode 100644 index 000000000..50a2a2a86 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst @@ -0,0 +1,52 @@ +.. _Enable Course Prerequisites: + +############################# +Enabling Course Prerequisites +############################# + +This topic describes how to enable course prerequisites in your instance of +Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +Course teams can set prerequisites for a course. Learners must complete the +prerequisite courses before participating in the course. + +To use this feature on your instance of Open edX, you must configure the +Milestones application, then enable prerequisites in Studio and the Learning +Management System. + +For information about prerequisites, see the *Building and Running an +Open edX Course* and *Open edX Learner's* guides. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +.. include:: configure_milestone_app.rst + +************************************************************************* +Enable Prerequisite Courses in Studio and the Learning Management System +************************************************************************* + +To enable prerequisite courses, you modify the ``lms.yml`` and +``studio.yml`` files, which are located one level above the ``edx-platform`` +directory. + +#. Set the value of ``ENABLE_PREREQUISITE_COURSES`` in the + ``lms.yml`` and ``studio.yml`` files to ``true``. + + .. code-block:: none + + # Prerequisite courses feature flag + 'ENABLE_PREREQUISITE_COURSES': true, + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst b/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst new file mode 100644 index 000000000..1c900c593 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst @@ -0,0 +1,124 @@ +.. _Enable Public Course Content: + +#################################### +Enabling Public Course Content +#################################### + +By default, learners must create an Open edX account, be signed in to the LMS, +and enroll in a course before they can see the course content. The *Public +Course Content* feature gives you the option to make either a course outline +or course content available to anyone, regardless of whether they have registered +for an Open edX account or enrolled in the course. You can decide which courses, +and which parts of those courses, that you want to make public. For example, +you can: + + * **Make just the course outline public.** The LMS displays the course outline + without any links to internal course pages, giving potential learners an + overview of what they will see when they enroll. + + * **Make the entire course public.** Anyone visiting your course outline can + follow links to visit internal course pages, and freely navigate HTML and + Video course content and handouts. + + * **Show different content blocks to public learners vs. enrolled learners.** + You can create content tailored to the public view, while still supporting + the needs of your enrolled audit and paid learners. + +**************************************** +Public Course Content and Search Engines +**************************************** + +In addition to making your course content visible to people who already use your +site, the public course content feature also allows Google and other search +crawlers to index your public course contents. People who are searching for +information about the topics you teach can then find your course through their +normal search behaviors. This can increase the visibility of your organization's +courses and boost enrollments for genuinely interested learners. + +***************************************** +Enable Public Course Content in the Admin +***************************************** + +The public course content feature is enabled in the Django LMS Admin with the +**seo.enable_anonymous_courseware_access** waffle flag. You can use this flag +in two different ways: + +* Create a normal waffle flag to enable this flag for all courses. For more + information, see the `Waffle documentation`_. + + .. image:: ../Images/enable_anonymous_courseware_access.png + :alt: Setting a waffle flag in the Django LMS Admin. + +* Create a **Waffle flag course override** with the ID of a course to enable + this flag for just that course. + + .. image:: ../Images/course_enable_anonymous_courseware_access.png + :alt: Setting a waffle flag in the Django LMS Admin. + +************************************* +Set Visibility for a Course in Studio +************************************* + +After you set the waffle flag to enable public course content in the Django +LMS Admin, you set the visibility for the course content and its About page +in Studio Advanced Settings. + +================================= +Set Course Content Visibility +================================= + +#. View your course in Studio, and navigate to the **Advanced Settings** page. + +#. Locate the **Course Visibility For Unenrolled Learners** setting. + + By default, this is set to ``"private"``, which ensures that only enrolled + learners can access your course content. + + If you change this to ``"public_outline"``, then your course outline, but not + the other course content, will be visible to everyone. + + If you change this to ``"public"``, then all of your course content, including + the course outline, will be visible to everyone. + +================================= +Set Course About Page Visibility +================================= + +If you want your course to be crawled by Google and other search engines, you +should also ensure that your course's About page is visible, and that it is +shown in the course catalog. Without these settings, only people with a link +to your course outline or specific content blocks will be able to find your +course. + +#. View your course in Studio, and navigate to the **Advanced Settings** page. + +#. Locate the **Course Visibility in Catalog** setting and set it to ``"both"``. + + +******************** +Feature Limitations +******************** + +The public course content feature is currently subject to some limitations, +including the following. + +* Anonymous or unenrolled learners are not members of any cohort, and so they + only see course blocks that are not assigned to a content group. If you want + to restrict public access to selected course blocks, you need create content + groups for your private content, and ensure that your enrolled learners are + members of a cohort that can see this content group. + +* Only Text components, Video components, and course handouts have a "public" + view. Unenrolled learners will see a message requesting that they enroll to + see more complex content types, such as discussion forums, problem blocks, + randomized content blocks, exams, Open Response Assessment, and other XBlocks. + +* Unenrolled learners will not see course completion or progress updates as + they proceed through the course, and Open edX doesn't remember where they + left off if they leave the course and come back. + +* The edX mobile apps do not support public course content. + + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst b/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst new file mode 100644 index 000000000..fe106bd0e --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst @@ -0,0 +1,143 @@ +.. _Enabling Social Sharing of Courses and Certificates: + +####################################################### +Enabling Social Sharing of Courses and Certificates +####################################################### + +This section describes how to configure Open edX so that learners can share +their certificates, and so course teams can enable learners to share their +courses on social media. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +You can enable learners to share courses and certificates that they earn on +social media sites such as Facebook and Twitter. + +To use this feature on your instance of Open edX, you must configure social +sharing settings. + +Optionally, you can also enable course teams to set custom URLs for social +sharing. If a course team sets a custom course URL, posts to the social sharing +site can include a link back to that URL. If you do not enable custom course +URLS, a link to the course About page in the LMS is used. + +.. note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +******************************* +Configure Social Sharing +******************************* + +To enable social sharing icons for courses, you modify the ``lms.yml`` +file, which is located one level above the ``edx-platform`` directory. + +#. In the ``lms.yml`` file, modify the ``SOCIAL_SHARING_SETTINGS`` + dictionary as needed. + + .. code-block:: none + + SOCIAL_SHARING_SETTINGS = { + 'CUSTOM_COURSE_URLS': True, + 'DASHBOARD_FACEBOOK': True, + 'CERTIFICATE_FACEBOOK': True, + 'CERTIFICATE_FACEBOOK_TEXT': None, + 'CERTIFICATE_TWITTER': True, + 'CERTIFICATE_TWITTER_TEXT': None, + 'DASHBOARD_TWITTER': True, + 'DASHBOARD_TWITTER_TEXT': None + } + + a. For each social sharing icon that you want to enable, set the value of + the setting to ``True``. + + b. If you set ``DASHBOARD_TWITTER`` or ``CERTIFICATE_TWITTER`` to ``True``, + you can also specify default text that learners will see in the Twitter + sharing dialog and that can be included in their tweet. Set the default + text in the ``DASHBOARD_TWITTER_TEXT`` and ``CERTIFICATE_TWITTER_TEXT`` + values. Learners can edit this text before they select the **Share with + Twitter** button in the LMS. + + c. If you set ``CUSTOM_COURSE_URLS`` to ``True``, you must `Enable Custom + Course URLs`_. + +#. Configure the ``SOCIAL_MEDIA_FOOTER_NAMES`` array in the ``lms.yml`` + file to set the order of links you want learners to see in the footer. + + .. code-block:: none + + SOCIAL_MEDIA_FOOTER_NAMES = [ + "facebook", + "twitter", + "youtube", + "linkedin", + "google_plus", + "reddit", + ] + +#. Configure the ``SOCIAL_MEDIA_FOOTER_DISPLAY`` dictionary in the + ``lms.yml`` file to define how you want social media icons to be + displayed. For each social media icon you enable, you define a ``title``, + ``icon``, and ``action``. + + .. code-block:: none + + "facebook": { + "title": _("Facebook"), + "icon": "fa-facebook-square", + "action": _("Like {platform_name} on Facebook") + }, + "twitter": { + "title": _("Twitter"), + "icon": "fa-twitter", + "action": _("Follow {platform_name} on Twitter") + }, + "linkedin": { + "title": _("LinkedIn"), + "icon": "fa-linkedin-square", + "action": _("Follow {platform_name} on LinkedIn") + } + } + +#. Save the ``lms.yml`` file. + +***************************************** +Enable Custom Course URLs +***************************************** + +In addition to enabling the social sharing icons, you can allow course +teams to provide a custom URL for social sharing sites to link back to. + +You must set the ``CUSTOM_COURSE_URLS`` parameter to ``True`` in both the +``lms.yml`` and ``studio.yml`` files. In the ``studio.yml`` file, this +parameter is the only social sharing setting. + +.. code-block:: none + + SOCIAL_SHARING_SETTINGS = { + 'CUSTOM_COURSE_URLS': True + } + +When finished, save the ``lms.yml`` and ``studio.yml`` files. + +================================= +Set a Custom URL for a Course +================================= + +When you enable custom course URLs in your instance of Open edX, course teams +can then set custom URLs for their courses. + +In Studio **Advanced Settings**, the course team specifies the custom course +URL in the **Social Media Sharing URL** setting. + +This URL is provided to the social sharing site for linking back to a course +location. This URL is used only if you have enabled custom URLs in your +instance of Open edX. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst b/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst new file mode 100644 index 000000000..a5ffdda4e --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst @@ -0,0 +1,54 @@ +.. _Enable Timed Exams: + +############################# +Enabling Timed Exams +############################# + +This topic describes how to enable the timed exams feature in your instance of +Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +Course teams can configure course subsections to limit the amount of time that +learners have to complete problems in that subsection. + +To use this feature on your instance of Open edX, you must enable the timed +exams feature in Studio and the Learning Management System. + +For information about how course teams set up timed exams, see the +:ref:`Timed Exams` topic in *Building and Running an Open edX +Course*. For information about the learner experience, see +:ref:`openlearners:taking_timed_exams` in the *Open edX Learner's Guide*. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +************************************************************************* +Enable Timed Exams in Studio and the Learning Management System +************************************************************************* + +To enable timed exams, you modify the ``lms.yml`` and +``studio.yml`` files, which are located one level above the ``edx-platform`` +directory. + +#. Set the value of ``ENABLE_SPECIAL_EXAMS`` in the + ``lms.yml`` and ``studio.yml`` files to ``true``. + + .. code-block:: none + + # Timed exams feature flag + 'ENABLE_SPECIAL_EXAMS': true, + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +#. Restart the Studio (CMS) and Learning Management System (LMS) processes so + that your updates are loaded. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_weekly_learning_goals.rst b/source/site_ops/install_configure_run_guide/configuration/enable_weekly_learning_goals.rst new file mode 100644 index 000000000..e832f3f63 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/enable_weekly_learning_goals.rst @@ -0,0 +1,44 @@ +.. _Enabling the Weekly Learning Goals Feature: + +########################################## +Enabling the Weekly Learning Goals Feature +########################################## + +.. contents:: + :local: + :depth: 1 + +*************** +Overview +*************** + +The feature adds a new Weekly Learning Goal widget to the course home page. Goal setting and planning supports learner success.  It also supports learners’ time management efforts and accountability. By prompting learners to set their goals when beginning a course and subscribe to helpful reminder emails, we expect to increase engagement and completion rates. + +To use it, learners use the Weekly Learning Goal widget from the course home page to select a weekly learning goal and are automatically subscribed to goal reminder emails. The weekly reminders continue until the learner completes their course and/or their audit access ends. Learners can modify/cancel their goal and reminder settings at any time from the widget or via links in the email. + +The Weekly Learning Goals feature was discussed in this `Nutmeg blog post `_. + +.. note:: This feature is only available on the new learning micro frontend. If that is not already enabled for you, you can view `instructions here `_. + + +********************** +Enable the feature +********************** + +The following waffle flag needs to be enabled: + + ``course_experience.enable_course_goals`` + +To send goal reminder emails, you need to regularly run the following `management command `_. + +edx.org runs this command at the following cron schedule H \*/3 \* \* \* + +The script does a number of checks before sending emails. There are five main conditions that must be met in order for an email to be sent, otherwise an email will not be sent: + +1. The script will check the number of days left for a learner to successfully hit their goal compared to the learning goal selected by the learner (i.e. if the learner has chosen to learn once per week, three times per week, or five times per week) +2. If you're not actively enrolled in the course or your enrollment was this week +3. If an audit user's access expires this week, exclude them from the email since they may not be able to hit their goal anyway +4. If a user has a downloadable certificate, we will consider them as having completed the course and opt them out of receiving emails +5. We want to email users during the morning of their timezone + +.. note:: For the emails to work you will need to have at least one email channel configured within https://github.com/openedx/edx-ace diff --git a/source/site_ops/install_configure_run_guide/configuration/index.rst b/source/site_ops/install_configure_run_guide/configuration/index.rst new file mode 100644 index 000000000..6d4cab4c3 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/index.rst @@ -0,0 +1,40 @@ +.. _Configuring the Open edX Platform: + +###################################################### +Configuring the Open edX Platform +###################################################### + +The following sections provide information about Open edX Platform +configuration options. + +.. toctree:: + :maxdepth: 2 + + updating_platform + sites/index + changing_appearance/index + customize_registration_page + config_allowed_regis_emails + deprecated_add_course_talk_widget + edx_search + enable_certificates + enable_pacing + enable_public_course + enable_ccx + enable_custom_course_settings + enable_discussion_notifications + enable_entrance_exams + ora2/index + enable_prerequisites + enable_licensing + transcripts + lti/index + enable_socialsharing_icons + password + tpa/index + enable_timed_exams + youtube_api + install_xblock + static_replace/cdn + enable_weekly_learning_goals + retrieve_extended_profile_metadata diff --git a/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst b/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst new file mode 100644 index 000000000..fc8a327fe --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst @@ -0,0 +1,46 @@ +.. _Installing an XBlock: + +########################## +Installing an XBlock +########################## + +The XBlock framework allows developers to expand the Open edX platform by +building different learning experiences and deploying them as XBlocks. Before +course teams can use an XBlock in courses running on an instance of the +Open edX platform, both of the following tasks must be completed. + +* A system administrator installs the XBlock in the instance of the Open edX + platform. + +* Course teams enable the XBlock in the specific courses that will use it. + +.. Future: link to an XBlock reference that would let people explore what's available and get both the GitHub commit string and the key. - Alison 22 Oct 2015 + +To install an XBlock, follow these steps. + +#. Obtain the GitHub location and commit, or PyPi package name and version, + for the XBlock. + +#. Run ``pip`` along with either the GitHub link to the XBlock or the PyPi + package name. + + An example of the GitHub link that installs the Oppia XBlock follows. + + .. code-block:: bash + + pip install git+https://github.com/oppia/xblock.git@9f6b95b7eb7dbabb96b77198a3202604f96adf65#egg=oppia-xblock==0.0.0 + + + An example of the PyPi package name that installs the Peer Instruction + XBlock follows. + + .. code-block:: bash + + pip install ubcpi-xblock==0.4.4 + +The course teams that want to include components that use the XBlock can then +enable the XBlock for their courses. To do so, they add the name specified in +the XBlock’s ``setup.py`` file to each course's advanced module list. For more +information, see :ref:`Enable Additional Exercises and Tools`. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/authentication_options_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/authentication_options_lti.rst new file mode 100644 index 000000000..bc96e73fc --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/lti/authentication_options_lti.rst @@ -0,0 +1,59 @@ +.. _Options for LTI Authentication and User Provisioning: + +######################################################## +Options for LTI Authentication and User Provisioning +######################################################## + +When you use your Open edX system as an LTI tool provider, data is collected by +the Open edX system for all learner activity. Each learner has a user account +on the Open edX system that is linked to the user account on the tool consumer +system, so that activity, grades, and state can be passed from one system to +the other. + +The Open edX system supports these user authentication flows for LTI. + +.. contents:: + :local: + :depth: 1 + +.. _Anonymous User Authentication: + +****************************** +Anonymous User Authentication +****************************** + +The first time a learner encounters an Open edX resource in a course, the +Open edX content is immediately launched by a POST to the URL. Without +requiring any action from the learner, the Open edX system creates a user +account and provisions it with a system-generated username, and links it to +the tool consumer user account for that learner. Learners never interact with +the Open edX system directly. + +This authentication flow presents a virtually seamless experience that +significantly reduces user error. The Open edX system passes learner data to +the tool consumer with no subsequent reconciliation of data between the +systems. + +After you :ref:`configure your edX instance as an LTI tool provider`, no further configuration is needed +on your Open edX system for this user authentication flow. + +****************************** +Open edX User Authentication +****************************** + +The first time a learner encounters an Open edX resource in a course, he is +prompted to either sign in with existing credentials or create a user account. +The Open edX system creates a user account and provisions it with the supplied +values, and links it to the tool consumer user account for that learner. The +POST to the URL then delivers the Open edX resource in the tool consumer. After +the initial sign in or account creation step, learners do not interact with the +Open edX system directly. + +In this authentication flow, learners knowingly establish or use credentials on +the Open edX system. This flow provides a smooth learner experience that can +also satisfy legal requirements or privacy concerns. + +After you configure your edX instance as an LTI tool provider, you can +:ref:`configure Open edX user authentication` between your Open edX system and the tool consumer. diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst new file mode 100644 index 000000000..a4395e5cc --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst @@ -0,0 +1,104 @@ +.. _Configuring Credentials for a Tool Consumer: + +############################################################### +Configuring Credentials for a Tool Consumer +############################################################### + +For each external learning management system or application (external LMS) that +you want to allow access to your edX instances as an LTI tool consumer, you +create OAuth1 credentials, and then configure your edX instance to allow +access. Each external LMS that you :ref:`configure as a tool consumer +` must have separate credentials. + +.. Commenting out the following option until we understand it better, per Dave Ormsbee - Alison 8 Sep 15 + +.. While each external LMS that you configure as a tool consumer must have separate credentials, you can also choose to create and configure more than one set of credentials for each system. + +.. For example, you can configure a single set of credentials for your campus LMS, or you can configure unique credentials for every course that embeds edX content on that remote LMS. The first approach results in faster configuration time. However, the second approach can lessen the disruption and reconfiguration that might result if you have to revoke access for a single course at a later time. + +After you complete the configuration of a tool consumer on your edX system, you +can add the consumer credentials to your external LMS. For examples of how +course teams might set up a course on an external LMS as a consumer of edX +course content, see :ref:`Using Open edX as an LTI Tool +Provider` in the *Building and Running an edX Course* guide. + +.. _Configure the Tool Consumer: + +********************************* +Configure the Tool Consumer +********************************* + +To configure an LTI tool consumer to have access to your Open edX installation, +follow these steps. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. In the **LTI Provider** section, next to **LTI Consumers** select + **Add**. + +#. Enter the following information. + + - **Consumer Name**: An identifying name for the tool consumer. + + - **Consumer Key**: The console generates a unique key value for this + tool consumer. Alternatively, you can use an external application to + generate the key, and then enter it here. + + - **Consumer Secret**: The console generates a unique secret value for this + tool consumer. Alternatively, you can use an external application to + generate the secret, and then enter it here. + + .. important:: + Do not supply a value for the **Instance guid** field. The + tool consumer generates and supplies a globally unique identifier. + + - **Require User Account**: Checking this makes the content available only + for the learners who already have an account on the Open edX instance. This + is useful when learners need to be linked between different LMS systems. + + By default, :ref:`an anonymous Open edX system user` + is created and all the data is associated with that user. This flag + can be used when it is desirable to associate the data, generated + via LTI interactions, to actual learner accounts instead of an + anonymous account. When this is checked, instead of creating an + anonymous user automatically, a message requesting the learner to sign + into Open edX is displayed on the first LTI launch and the content + is presented after a successful sign in. + + .. important:: + The account linking happens only when the LTI Consumer sends the + learners' email to Open edX by setting the POST data attribute + ``lis_person_contact_email_primary`` in the LTI Launch request. + This feature has only been tested with **Canvas LMS**, with privacy + setting set to "Email Only" or "Public". + + With this flag checked, the LTI content embedded in iframes will require + the following Django configuration. + + .. code-block:: python + + # Needed for passing user session with the LTI Request + SESSION_COOKIE_SAMESITE = 'None' + SESSION_COOKIE_SECURE = True + SESSION_COOKIE_SAMESITE_FORCE_ALL = True + CSRF_COOKIE_SECURE = True + CSRF_COOKIE_SAMESITE = 'None' + + # Needed for showing pages in iframe + X_FRAME_OPTIONS = "ALLOW-FROM " + + + Caveats: + - Setting this flag only associates future interactions of the learner. + This flag cannot be used to migrate data from existing anonymous accounts + to corresponding user accounts. + - Unchecking the flag will not roll back the auto-linked users. In + situations requiring rollback of this feature, it is recommended + to create a new LTI Consumer with this flag turned off, and the + new credentials be used in the LTI consumer application. + + +#. Select **Save** at the bottom of the page. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/enable_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/enable_lti.rst new file mode 100644 index 000000000..ec9ef5c71 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/lti/enable_lti.rst @@ -0,0 +1,39 @@ +.. _Enable LTI Provider Functionality: + +################################################# +Enable LTI Provider Functionality +################################################# + +LTI provider functionality is provided in the ``lti_provider`` app, located in +``edx-platform/lms/djangoapps/lti_provider``. + +By default, the ``lti_provider`` app is not used by edX installations. To +enable this functionality throughout the platform, follow these steps. + +#. In the ``edx/app/edxapp/lms.yml`` file, edit the file so that it + includes the following line in the features section. + + .. code-block:: none + + "FEATURES" : { + ... + "ENABLE_LTI_PROVIDER": true + } + +#. Save the ``edx/app/edxapp/lms.yml`` file. + +#. Run database migrations. + +#. Restart the LMS server. + +To verify that the LTI provider functionality is enabled, you can check for the +presence of the following database tables. + +:: + + lti_provider_gradedassignment + lti_provider_lticonsumer + lti_provider_ltiuser + lti_provider_outcomeservice + +If these tables are not present, check that the migrations have run properly. diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/index.rst b/source/site_ops/install_configure_run_guide/configuration/lti/index.rst new file mode 100644 index 000000000..6e232a975 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/lti/index.rst @@ -0,0 +1,29 @@ +.. _Configuring an edX Instance as an LTI Tool Provider: + +######################################################## +Configuring an edX Instance as an LTI Tool Provider +######################################################## + +You can configure your edX instance to be a learning tool interoperability +(LTI) provider to other systems and applications. You can use this LTI +capability to present content from an edX course in any application that is +configured to be a consumer of that content. After you enable your edX instance +as an LTI tool provider and configure credentials for the tool consumers, +course teams can reuse course content from the edX instance in contexts other +than the edX LMS. + +.. toctree:: + :maxdepth: 1 + + enable_lti + configure_lti + settings_lti + authentication_options_lti + tpa_lti + +For more information and examples of how course teams might set up a course on +an external LMS as a consumer of edX course content, see +:ref:`Using Open edX as an LTI Tool Provider` in the *Building +and Running an edX Course* guide. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/settings_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/settings_lti.rst new file mode 100644 index 000000000..4d8794f03 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/lti/settings_lti.rst @@ -0,0 +1,35 @@ +.. _Define Interval for Grade Aggregation: + +#################################################### +Define an Interval for Grade Aggregation (Optional) +#################################################### + +When an external LMS links to problem components in a graded edX subsection, +the edX system grades the answers to those problems, and then transfers the +grades back to the external LMS. + +* If the link is to an individual problem component on the edX system, the edX + system returns the grade for each learner immediately. + +* If the link is to a unit or subsection, you can configure an interval of time + for the edX system to delay before returning the grades. The edX system + aggregates all of the problems in the unit or subsection that the learner + answers during that interval. Aggregating grades can reduce the number of + notification messages that learners receive. + +By default, the edX system aggregates grades for units and subsections every 15 +minutes. + +To change the interval for returning aggregated grades, follow these steps. + +#. In ``edx/app/edxapp/lms.yml``, change the value for the following + parameter. + + ``LTI_AGGREGATE_SCORE_PASSBACK_DELAY = 15 * 60`` + + You specify a time value in seconds. + +#. Save the ``/lms/envs/common.py`` file. + +#. Restart the Learning Management System processes so that the + updated environment configurations are loaded. diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst new file mode 100644 index 000000000..dabc3e8d6 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst @@ -0,0 +1,135 @@ +.. _Configuring Open edX for LTI Authentication: + +############################################################### +Configuring Open edX User Authentication for LTI +############################################################### + +Every learner who accesses content on an Open edX system must have a user +account. The Open edX system uses the accounts to collect data for learner +interactions with course content. + +After you :ref:`configure your edX instance as an LTI tool provider`, you can configure Open edX user +authentication between your Open edX installation and an LTI tool consumer. + +For more information about the authentication flows that are available, see +:ref:`Options for LTI Authentication and User Provisioning`. + +.. contents:: + :local: + :depth: 1 + +************************************************** +Configure Open edX User Authentication for LTI +************************************************** + +To configure Open edX user authentication between your Open edX installation +and an LTI tool consumer, follow these steps. + +.. note:: A consumer key and secret are required. The Django administration + console provides a hexadecimal string for the secret, but does not provide a + hexadecimal string for the key. You must use an external tool to generate the + key. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. In the **Third_Party_Auth** section, next to **Provider Configuration + (LTI)** select **Add**. + +#. Select **Enabled**. + +#. Enter the **Name** of your Open edX system, as you want it to appear on the + registration page that is presented to learners who access Open edX content + from this LTI tool consumer. + +#. To customize the registration process for learners, you can make selections + for these optional fields. + + - **Skip Registration Form**: If you select this option, users are not asked + to confirm any user account data that is supplied for them by the LTI tool + consumer (name, email address, and so on). + + By default, this option is cleared and learners review a registration form + with the account details supplied by the tool consumer. + + - **Skip Email Verification**: If you select this option, users are not + required to confirm their email addresses, and their accounts are activated + immediately upon registration. + + By default, this option is cleared and learners receive an email message + and must select a link in that message to activate their user accounts. + +6. Enter the following information. + + - **Lti consumer key**: Enter the hexadecimal string of the key. + + - **Lti consumer secret**: The system generates a hexadecimal string value + for this field. Alternatively, you can replace it with a secret generated + by an external tool. + +7. Optionally, change the default value for the **Lti max timestamp age**. + +#. Select **Save** at the bottom of the page. + +******************************************* +Test LTI Authentication +******************************************* + +To verify the sign in process for an LTI provider configuration, follow these +steps. + +#. Have the LTI consumer key and secret for the LTI provider configuration + available. For example, use the Django administration console to open the + **Change Provider Configuration (LTI)** page. + +#. Use a separate browser window or tab to open the `IMS LTI 1.1 Consumer + Launch`_ page. + +#. As the **Launch URL**, enter your base URL followed by ``/auth/login/lti/``. + For example, ``http://{your_URL}/auth/login/lti/``. + +#. Copy the **Lti consumer key** value, and then on the IMS LTI 1.1 Consumer + Launch page paste it in as the **Key**. + +#. Copy the **Lti consumer secret** value, and then on the IMS LTI 1.1 Consumer + Launch page paste it in as the **Secret**. + +#. Optionally, change the default values in the **Launch Data** section of the + **IMS LTI 1.1 Consumer Launch** page to match the set of values that the + tool consumer is configured to supply. + +#. To test the workflow for a learner who does not yet have a user account on + your Open edX system, follow these steps. + + - Use a separate browser window or tab to make sure that you are signed out + of your Open edX LMS. + + - On the **IMS LTI 1.1 Consumer Launch** page, select **Recompute Launch + Data** and then select **Press to Launch**. + + The page that is configured for delivery to an unauthenticated user loads at + the bottom of the page. In the example that follows, the registration page + appears (that is, it was not configured to be skipped) and the learner is + prompted to complete required fields. + + .. image:: ../../Images/lti_test_auth.png + :alt: Screen shot of the IMS LTI 1.1 Consumer Launch page with the + registration page for the edX Edge loaded at the bottom. + +#. To test the workflow for a learner who already has a user account on your + Open edX system, follow these steps. + + - Use a separate browser window or tab to sign in to your Open edX LMS. + + - On the **IMS LTI 1.1 Consumer Launch** page, select **Recompute Launch + Data** and then select **Press to Launch**. + + Your Open edX user account is linked to the LTI provider configuration, and + your learner dashboard on the Open edX site loads at the bottom of the page. + To unlink your user accounts, select the arrow next to your username, and + then select **Account**. In the **Connected Accounts** section, select + **Unlink** next to the LTI provider configuration name. + + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst new file mode 100644 index 000000000..e52be6799 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst @@ -0,0 +1,23 @@ +.. _Configuring Open Response Assessments: + +######################################################## +Configuring Open Response Assessments +######################################################## + +You can change the default configuration for the Open Response Assessment +(ORA2) application. You can change the default file storage system or change +the default set of files that learners are prohibited from submitting. + +.. toctree:: + :maxdepth: 1 + + ora2_uploads + ora2_blacklist + +For more information and examples of how course teams might set up an open +response assessment, see :ref:`Open Response Assessments Two` +in the *Building and Running an Open edX Course* guide. + + +.. include:: ../../../../links/links.rst + diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst new file mode 100644 index 000000000..7a45302ec --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst @@ -0,0 +1,46 @@ + +.. include:: ../../../../links/links.rst + +.. _Configuring ORA2 to Prohibit Submission of File Types: + +############################################################### +Prohibiting Submission of Specified File Types +############################################################### + +Course teams can configure open response assessments so that learners can +upload files along with their text responses. During the peer review stage of +the assessment, other learners download the submitted file and read the +response. + +To protect learners from exposure to files with malicious content, the ORA2 +application uses a "blacklist" to identify a set of file types that learners +are not permitted to upload. + +To add or remove file types from the blacklist, follow these steps. + +#. In the ORA-2 repository, use an editor to open the `submission_mixin.py`_ + file. + +#. Locate the ``FILE_EXT_BLACK_LIST`` parameter in the file. By default, this + parameter lists the following file types. + + :: + + FILE_EXT_BLACK_LIST = [ + 'exe', 'msi', 'app', 'dmg', 'com', 'pif', 'application', 'gadget', + 'msp', 'scr', 'hta', 'cpl', 'msc', 'jar', 'bat', 'cmd', 'vb', 'vbs', + 'jse', 'ws', 'wsf', 'wsc', 'wsh', 'scf', 'lnk', 'inf', 'reg', 'ps1', + 'ps1xml', 'ps2', 'ps2xml', 'psc1', 'psc2', 'msh', 'msh1', 'msh2', 'mshxml', + 'msh1xml', 'msh2xml', 'action', 'apk', 'app', 'bin', 'command', 'csh', + 'ins', 'inx', 'ipa', 'isu', 'job', 'mst', 'osx', 'out', 'paf', 'prg', + 'rgs', 'run', 'sct', 'shb', 'shs', 'u3p', 'vbscript', 'vbe', 'workflow', + 'htm', 'html', + ] + +#. Add or remove values from this list. + +#. Save your changes to ``submission_mixin.py``. + +#. Restart the Studio (CMS) and Learning Management System (LMS) processes so + that your updates are loaded. + diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst new file mode 100644 index 000000000..3bd0ec4c1 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst @@ -0,0 +1,31 @@ +.. include:: ../../../../links/links.rst + +.. _Configuring ORA2 to Upload Files to Alternative Storage Systems: + +############################################################### +Configuring ORA2 to Upload Files to Alternative Storage Systems +############################################################### + +By default, the Open Response Assessment (ORA2) application stores files that +learners upload in an Amazon S3 bucket. + +You can configure ORA2 to store files in an alternate system. To have learners' +files stored in a system other than Amazon S3, follow these steps. + +#. In the ORA-2 repository, implement the ``BaseBackend`` class defined in the + `base.py`_ file. + + For example, the `S3.py`_ file in the same directory is an implementation of + ``BaseBackend`` for Amazon S3. You must implement the equivalent class for + the storage system you intend to use. + +#. Configure ORA2 to use your alternative storage system by modifying the value + of ``backend_setting`` in `init file`_ to point to your implementation of + ``BaseBackend``. + +#. Add code to instantiate the new implementation to the ``get_backend()`` + function in the ``init.py`` file. + +#. Configure ORA2 to use the alternative storage system by modifying the value + of ``ORA2_FILEUPLOAD_BACKEND`` in the Django settings to point to your + implementation of ``BaseBackend``. diff --git a/source/site_ops/install_configure_run_guide/configuration/password.rst b/source/site_ops/install_configure_run_guide/configuration/password.rst new file mode 100644 index 000000000..f003b8a97 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/password.rst @@ -0,0 +1,107 @@ +.. _Configure Password Policy: + +############################# +Configuring a Password Policy +############################# + +This topic describes how to configure a password policy in your +instance of Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +By default, Open edX imposes a minimal password complexity policy for all +users who log in to the LMS or Studio. Under the default password complexity +policy, passwords must contain 2 to 75 characters and cannot be similar to the +user's username or email address. + +.. note:: Open edX does not store plain-text passwords, only + hashes. Since the length of a hash is independent of the length of + the original password, passwords can effectively be of unlimited + length. The 75-character default limit is rather arbitrary. Open + edX does impose an upper limit of 5,000 characters on a password, + but this should be well beyond the practical limit of password + length. + +This password policy is defined in the ``lms.yml`` configuration file, +under the ``AUTH_PASSWORD_VALIDATORS`` setting:: + + AUTH_PASSWORD_VALIDATORS: + - NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator + - NAME: common.djangoapps.util.password_policy_validators.MinimumLengthValidator + OPTIONS: + min_length: 8 + - NAME: common.djangoapps.util.password_policy_validators.MaximumLengthValidator + OPTIONS: + max_length: 75 + +You can override these settings by modifying one of the existing +``OPTIONS``. For example, if you want to enforce a minimum password +length of 16 characters, and a maximum length of 256, +you would set:: + + AUTH_PASSWORD_VALIDATORS: + - NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator + - NAME: common.djangoapps.util.password_policy_validators.MinimumLengthValidator + OPTIONS: + min_length: 16 + - NAME: common.djangoapps.util.password_policy_validators.MaximumLengthValidator + OPTIONS: + max_length: 256 + + +.. warning:: If your Open edX configuration :ref:`enables third-party + authentication `, the *maximum* + value you can specify for the ``MinimumLengthValidator``'s + ``min_length`` option is 25. + +You can also substitute your own password policy for the default +policy. To configure a password policy in replacement of the default +password policy, follow these steps. + +#. Create or import a new password validator. This is a Python class that defines how a + password is validated. For details about writing a password validator class, + see :ref:`Creating a Password Validator`. + +#. Add your password validator to the list in the ``AUTH_PASSWORD_VALIDATORS`` + configuration key in the ``lms.yml`` configuration file. For details, + see :ref:`Configuring a Password Validator`. + +.. _Creating a Password Validator: + +***************************** +Creating a Password Validator +***************************** + +An Open edX password validator is a Python class that specifies how user +passwords are validated. You can use whatever criteria you choose to establish +a password policy for your Open edX instance. You can create your own custom +password validator, or import one or more password validators from +`password_policy_validators`_ in the ``edx-platform`` repository on GitHub. +Those password validators include minimum length, maximum length, user +attribute similarity, minimum alphabetic, minimum numeric, minimum uppercase, +minimum lowercase, minimum punctuation, and minimum symbols. For more +information, see also the `Django password validation documentation`_. + +.. _Configuring a Password Validator: + +********************************* +Configuring a Password Validator +********************************* + +To configure your Open edX instance to use a particular password validator, +add your password validator to the list in the ``AUTH_PASSWORD_VALIDATORS`` +configuration key in the ``lms.yml`` configuration file. For example, to +add a password validator named ``MyPasswordValidator``, add a line like this +to the ``lms.yml`` configuration file. +:: + + AUTH_PASSWORD_VALIDATORS: + - NAME: path.to.module.MyPasswordValidatorClass + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/retrieve_extended_profile_metadata.rst b/source/site_ops/install_configure_run_guide/configuration/retrieve_extended_profile_metadata.rst new file mode 100644 index 000000000..8bf3827f5 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/retrieve_extended_profile_metadata.rst @@ -0,0 +1,78 @@ +.. _Retrieve_Extended_Profile_Metadata: + +##################################### +Retrieving Extended Profile Metadata +##################################### + +This topic describes how an Open edX Administrator can configure their system to +retrieve extended profile metadata stored as part of a user's profile. + +.. Note:: + Modifying the software to persist or display the extended profile metadata is + beyond the scope of this document. This section describes how to enable and + include the retrieval of extended profile metadata through the User API. + +.. contents:: + :local: + :depth: 2 + +********* +Overview +********* + +The User API has a mechanism to accept and persist extra user metadata as part +of a user's profile. This is called the *Extended Profile*. While there is no +special configuration required to enable the storage of this data, it won't be +*returned* by default. + +To enable retrieval of Extended Profile data, an Open edX Administrator must +update their instance's Site Configuration. + +Updating the Site Configuration +=============================== + +An Open edX instance's Site Configuration is managed via Django Admin. To update +the configuration properties for a site, follow these steps. + +#. Sign in to the Django administration console for your instance. For example, + ``http://{your_instance_url}/admin``. + +#. Select **Site Configurations**. + +#. From the **Site Configurations** menu, select the site you want to update. + +#. Enter a new configuration property in the **Site values** section named + ``extended_profile_fields``. Ensure that the new property is in valid + JavaScript Object Notion (JSON) format. + + Consider the following example where we want to retrieve an extended profile + field named ``occupation``. + + .. code-block:: none + + { + "PLATFORM_NAME": "Online University", + ...other_fields, + "extended_profile_fields": [ + "occupation" + ] + } + +#. Select **Save**. + +After the updated Site Configuration is saved, when making a GET request to the +User REST API, we should see the ``occupation`` field returned in our requests: + +.. code-block:: none + + { + ...other_fields, + "extended_profile": [ + { + "field_name": "occupation", + "field_value": { + "name": "Organic Farmer" + } + } + ] + } diff --git a/source/site_ops/install_configure_run_guide/configuration/sites/configure_site.rst b/source/site_ops/install_configure_run_guide/configuration/sites/configure_site.rst new file mode 100644 index 000000000..319814f46 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/sites/configure_site.rst @@ -0,0 +1,95 @@ +.. _Configuring Sites Independently: + +################################# +Configuring Sites Independently +################################# + +You can set configuration properties independently for individual sites. The +values that you define for individual sites override the default values that +are present in the ``studio.yml`` or ``lms.yml`` files. For example, you +can set the ``PLATFORM_NAME`` property to a different value for each of your +sites to indicate that the sites present courses for different organizations or +audiences. + +******************* +Configuring a Site +******************* + +To set configuration properties for a site, follow these steps. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. Select **Site Configurations** . + +#. Select **Add site configuration**. + +#. From the **Site** menu, select the site you want to configure. + +#. Enter configuration properties in the **Values** field. Structure all + properties in valid JavaScript Object Notation (JSON) format. + + The following example shows a set of configuration properties for a site. + + .. code-block:: none + + { + "course_email_from_addr":"courses@onlineu.edu", + "university":"Online University", + "PLATFORM_NAME":"Online University", + "email_from_address":"courses@onlineu.edu", + "payment_support_email":"payments@onlineu.edu", + "SITE_NAME":"onlineu.edu", + "site_domain":"onlineu.edu", + "SESSION_COOKIE_DOMAIN":"onlineu.edu" + } + + .. note:: To make courses site-specific, you set the ``course_org_filter`` + property to an organization identifier. Only that organization's courses + are available from the site. + +#. When you are ready for the configuration settings to take effect, + select **Enabled**. + + The configuration properties that you set do not affect the site + until you select **Enabled**. If needed, you can return to the **Site + configurations** screen for this site to enable the configuration properties + later. + +#. Select **Save**. + + +******************************* +Site Configuration Reference +******************************* + +An example of the properties that you define to configure a site follows. + +.. code-block:: none + + { + "ECOMMERCE_API_URL":"https://my-site.sandbox.edx.org/api/v2", + "ECOMMERCE_PUBLIC_URL_ROOT":"https://my-site.sandbox.edx.org", + "ECOMMERCE_API_SIGNING_KEY":"ecommerce-secret", + "COURSE_CATALOG_VISIBILITY_PERMISSION":"see_in_catalog", + "COURSE_ABOUT_VISIBILITY_PERMISSION":"see_about_page", + "ENABLE_COMBINED_LOGIN_REGISTRATION":true, + "ENABLE_PAID_COURSE_REGISTRATION":true, + "course_email_template_name":"my-site", + "course_email_from_addr":"my-site@example.com", + "ALLOW_AUTOMATED_SIGNUPS":true, + "domain_prefix":"my-site", + "university":"Education Programs", + "PLATFORM_NAME":"Education Programs", + "platform_name":"Education Programs", + "show_only_org_on_student_dashboard":true, + "email_from_address":"my-site@example.com", + "payment_support_email":"payments@example.com", + "SITE_NAME":"my-site.sandbox.edx.org", + "site_domain":"my-site.sandbox.edx.org", + "SESSION_COOKIE_DOMAIN":"my-site.sandbox.edx.org", + "course_org_filter":"MyOrgX", + "course_index_overlay_text":"", + "homepage_overlay_html":"", + "payment_email_signature":"Education Programs
The Digital Programs Team
my-site@example.com
101 Example Street
Example State" + } diff --git a/source/site_ops/install_configure_run_guide/configuration/sites/create_site.rst b/source/site_ops/install_configure_run_guide/configuration/sites/create_site.rst new file mode 100644 index 000000000..1c1023046 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/sites/create_site.rst @@ -0,0 +1,22 @@ +.. _Create a Site: + +############################# +Create an Open edX Site +############################# + +To create an Open edX site, follow these steps. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. Select **Sites** to open the ``http://{your_URL}/admin/sites/site`` page. + +#. Enter the domain name for the site. This is the domain name in the URL for + the site. For example, ``myuniversity.edu``. + + To make a site available on a non-default port that is entered as part of + the URL, the domain name must include the port number. For example, if an + LMS site is available at ``my-site.localhost:8000``, the domain name for + the site must be ``my-site.localhost:8000``. + +#. Select **Save**. diff --git a/source/site_ops/install_configure_run_guide/configuration/sites/index.rst b/source/site_ops/install_configure_run_guide/configuration/sites/index.rst new file mode 100644 index 000000000..902a65bc4 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/sites/index.rst @@ -0,0 +1,30 @@ +.. _Configuring Open edX Sites: + +############################# +Configuring Open edX Sites +############################# + +By default, an Open edX installation has one site for users to interact with. +You can configure multiple sites within your Open edX installation. A site +presents Open edX courses and content in an individual way. If you set up +multiple sites, you can configure them independently of each other. For +example, you can assign a different theme to each site and specify which +courses are available on each site. + +You host each site on a separate domain or subdomain from your Open edX +installation. You configure the domain name for a site in the Django admin site +when you create it. For example, you might configure one site +with the domain name ``university.edu`` and another site with the domain +name ``advancedplacement.edu``. Or you might configure one site with the domain +name ``arts.myuniversity.edu`` and another site with the domain name +``sciences.myuniversity.edu``. + + +.. toctree:: + :maxdepth: 1 + + create_site + configure_site + +For more information about themes, see :ref:`Theming Open edX`. + diff --git a/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst b/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst new file mode 100644 index 000000000..8412502d5 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst @@ -0,0 +1,72 @@ +.. _Enabling a CDN for Course Assets: + +###################################### +Enabling a CDN for Course Assets +###################################### + +By default, all course assets are served directly from your Open edX instance. +For courses with large enrollments, or courses with large assets, such as high- +quality images, PDFs, or video files, this can increase not only the load on +the instance but also the time it takes for learners to load the courses on +their computers and mobile devices. + +You can configure your Open edX instance to serve assets from a content +delivery network (CDN) instead. Using a CDN offloads the work required to +deliver assets from your Open edX instance. + +.. note:: Whether you need a CDN depends on the type, and amount, of content + in your courses. Not all installations need a CDN for their course assets. + + +.. contents:: + :local: + :depth: 1 + +*************** +Overview +*************** + +A CDN, or content delivery network, is a service that places servers all around +the world, and keeps copies of content on those servers. Instead of serving +files from one location, a CDN serves them from whichever server is closest to +the end user. This results in faster download speeds and, ultimately, faster +page loads. + +******************************** +Guidelines for CDN Configuration +******************************** + +When you configure a CDN for use with your Open edX instance, you should +identify your Open edX instance as the origin server. + +Choose the cache expiration carefully: you want content to be cached long +enough to keep the load on your Open edX instance low, but not so long that +changes made to course assets are not realized within a reasonable amount of +time. As a starting point, edX recommends a cache expiration period of one +hour. + +********************** +Enable the CDN +********************** + +After you configure your CDN, follow these steps. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. In the **Static_Replace** section, next to **Asset base url configs**, + select **Add**. + +#. Select **Enabled**. + +#. Enter the hostname for your CDN provider. + + For example, if you were using CloudFront, this would look something like + ``d37djvu3ytnwxt.cloudfront.net``. + + Be sure not to include the scheme (``http://`` or ``https://``) when you + specify the hostname. + +#. Select **Save**. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/index.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/index.rst new file mode 100644 index 000000000..2728eac85 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/index.rst @@ -0,0 +1,31 @@ +.. _Enabling Third Party Authentication: + +####################################### +Enabling Third Party Authentication +####################################### + +To enhance sign in options for your users, you can enable third party +authentication, sometimes also called "third party auth", "single sign on", or +"SSO", between organizational authentication systems and the sites you define +for your implementation of the edX platform. After you enable third party +authentication, users can register and sign in to your Open edX site with their +campus or organizational credentials. + +.. toctree:: + :maxdepth: 1 + + tpa_providers + tpa_behavior + tpa_integrate_open/index + tpa_SAML_SP + tpa_advanced_features + tpa_eliminating_pii + tpa_IDmap_api + +This section includes information for teams involved in identity management at +Open edX installations, including development operations (DevOps) and +information technology (IT). + + + + diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_IDmap_api.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_IDmap_api.rst new file mode 100644 index 000000000..feb3caeba --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_IDmap_api.rst @@ -0,0 +1,116 @@ +.. _Third Party Auth ID Mapping API: + +############################### +Third Party Auth ID Mapping API +############################### + +Open edX has an API that can be used to retrieve the association between Open +edX user IDs and the unique user identifiers sent by the external platform. + +When an Open edX course is used in an on-premise environment, and SAML, LTI, or +other SSO is enabled to allow learners to authenticate to edX using their on-premise credentials, normally an on-premise identity provider (IdP) sends an +identifier. This identifier is stored in edX and linked to the edX account. +Later, when learners return from an on-premise IdP, edX can authenticate the +learner using their edX account. + +Because learners may create Open edX accounts using an alternative identity, +instructors may have difficulty identifying Open edX learners in their courses. +Grade records obtained from Open edX will only contain Open edX learner IDs, +which would be unknown to the on-premise system. + +This API can be used for mapping between the edX user ID and the ID provided by +the IdP. This API provides information that allows instructors or course +support staff to figure out the identity of the on-premise learners who are +using the edX course. It also allows grade information coming from Open edX to +be appropriately associated to on-premise learners for uploading to an +on-premise learning management system (LMS) or learner information +system (SIS). + +This API is intended to be consumed by on-premise middleware, which combines +the information from an on-premise system. The middleware communicates with the +premise system to get information about the course and enrollment, then uses +that information to control instructor access. The instructor can then perform +tasks such as obtaining the edX learner's on-premise identity, uploading grades +back to their LMS or SIS, and making groups based on on-premise activities. + +This API also helps with the issue where learners enter incorrect email +addresses and cannot activate their accounts, and then cannot authenticate with +Open edX through SSO because of the inactive accounts. With this API, +on-premise course support staff or instructors can provide the Open edX +operator with the learner's real edX username instead of the ID that the +IdP passed over to Open edX, so that the Open edX operator does not have +to manually query the tables to figure out the mapping between the source +system ID and the Open edX username. + +***************************************** +Using the Third Party Auth ID Mapping API +***************************************** + +To use the Third Party Auth ID Mapping API, follow these steps. + +#. Have one or more third party auth providers enabled, and have learners who + have link their accounts to one or more of those providers. + +#. Set up an OAuth2 client. To do this, open the Django administration panel, + select **OAuth2**, select **Client**, select **Add Client**, and then enter + the following information. + + #. For **User**, create a dedicated user for this API. + #. For **URL, Redirect URL**, enter a dummy value such as + ``http://localhost/``. The URL is not used for this API. + #. For **Client Type**, specify **Confidential**. + #. Leave other fields with the default values. + +#. Give the new client permission to this API. To do this, go to + **Third_Party_Auth**, select **Provider API Permissions**, and then select + **Add Provider API Permission**. + +#. Select the OAuth2 client that you just created, and select an external + authentication provider. This will give the new client access to query that + provider mapping. + +The API is now available at ``{LMS base +URL}/api/third_party_auth/v0/providers/{provider_id}/users``. The API client +must use OAuth2 to authenticate before that endpoint will work. The +``{provider_id}`` value uses the same format as described in :ref:`Hinted Sign +In`. + +To test the API, follow these steps. + +#. Use client credentials (from the django admin) to get the access token, as + follows. + + :: + + curl --data "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=client_credentials" http://localhost:8000/oauth2/access_token + + Returns: {"access_token": "c1efde84445b2f256e1c80886b3f6d46339b84ee", "token_type": "Bearer", "expires_in": 31535999, "scope": ""} + +#. Use the access token to issue requests to the API, as in the following + examples. + + :: + + curl --header "Authorization: Bearer ACCESS_TOKEN" http://localhost:8000/api/third_party_auth/v0/providers/{provider_id}/users + + curl --header "Authorization: Bearer ACCESS_TOKEN" http://localhost:8000/api/third_party_auth/v0/providers/{provider_id}/users?username=USERNAME1,USERNAME2 + + curl --header "Authorization: Bearer ACCESS_TOKEN" http://localhost:8000/api/third_party_auth/v0/providers/{provider_id}/users?username=USERNAME1&username=USERNAME2 + + curl --header "Authorization: Bearer ACCESS_TOKEN" http://localhost:8000/api/third_party_auth/v0/providers/{provider_id}/users?remote_id=REMOTE_ID1,REMOTE_ID2 + + curl --header "Authorization: Bearer ACCESS_TOKEN" http://localhost:8000/api/third_party_auth/v0/providers/{provider_id}/users?remote_id=REMOTE_ID1&remote_id=REMOTE_ID2 + +The following example shows a return value from the API. + + .. code-block:: none + + { + "page": 1, + "page_size": 200, + "count": 8, + "results": [ + {"username": "USERNAME1", "remote_id": "REMOTE_ID1"}, + {"username": "USERNAME2", "remote_id": "REMOTE_ID2"}, + ] + } diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst new file mode 100644 index 000000000..627d25207 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst @@ -0,0 +1,168 @@ +.. _Configuring your Installation as a SAML Service Provider: + +############################################################### +Configuring your Open edX Site as a SAML Service Provider +############################################################### + +The first step in configuring your Open edX site to act as a SAML SP is +to create a credential key pair to ensure secure data transfers with identity +providers. To complete the configuration procedure, you configure your Open edX +site as a SAML SP, which creates your metadata XML file. + +.. contents:: + :local: + :depth: 1 + +After you complete this configuration, you can share your metadata file with +SAML identity providers, and configure them to assert identity and access +rights for users to your installation. For more information, see +:ref:`Integrating with a SAML Identity Provider`. + +********************************************** +Generate Public and Private Keys +********************************************** + +To generate the keys for your Open edX installation, follow these steps. + +#. On your local computer or on the server, open Terminal or a Command Prompt + and run the following command. + + ``openssl req -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.key`` + +#. Provide information at each prompt. + +Two files, ``saml.crt`` and ``saml.key``, are created in the directory where +you ran the command. + +.. _Add Keys to the LMS Configuration File: + +************************************************** +Add Keys to the LMS Configuration File +************************************************** + +.. note:: Configuration settings added to the ``lms.yml`` file are reset + to their default values when you use Ansible to update edx-platform. + +To configure an Open edX site with your public and private SAML keys, follow +these steps. + +#. Open the ``edx/app/edxapp/lms.yml`` file in your text editor. + +#. In the root of the JSON, add the ``SOCIAL_AUTH_SAML_SP_PUBLIC_CERT`` key + followed by a colon (:), a space, and an empty string where you'll paste the + escaped certificate. + + .. code:: json + + "SOCIAL_AUTH_SAML_SP_PUBLIC_CERT": "", + +#. Open the ``saml.crt`` file, copy its entire contents, and then paste them + inside the quotes after the ``SOCIAL_AUTH_SAML_SP_PUBLIC_CERT`` parameter. + Replace all newlines with `\n`. + + .. code:: json + + "SOCIAL_AUTH_SAML_SP_PUBLIC_CERT": "-----BEGIN CERTIFICATE-----\nSWP6P/C1ypaYkmS...j9+hjvbBf3szk=\n-----END CERTIFICATE-----\n" + +#. Add the ``SOCIAL_AUTH_SAML_SP_PRIVATE_KEY`` key followed by a colon + (:), a space, and an empty string where you'll paste the escaped key. + + .. code:: json + + "SOCIAL_AUTH_SAML_SP_PUBLIC_CERT": "-----BEGIN CERTIFICATE-----\nSWP6P/C1ypaYkmS...j9+hjvbBf3szk=\n-----END CERTIFICATE-----\n" + "SOCIAL_AUTH_SAML_SP_PRIVATE_KEY": "" + +#. Open the ``saml.key`` file, copy its entire contents, and then paste them + inside the quotes after the ``SOCIAL_AUTH_SAML_SP_PRIVATE_KEY`` key. + Replace all newlines with `\n`. + + .. code:: json + + "SOCIAL_AUTH_SAML_SP_PUBLIC_CERT": "-----BEGIN CERTIFICATE-----\nSWP6P/C1ypaYkmS...j9+hjvbBf3szk=\n-----END CERTIFICATE-----\n" + "SOCIAL_AUTH_SAML_SP_PRIVATE_KEY": "-----BEGIN RSA PRIVATE KEY-----\nW1icmlkZN+FtM5h...s/psgLDn38Q==\n-----END RSA PRIVATE KEY-----\n" + +#. Save and close the ``lms.yml`` file. + + +************************************************** +Configure your Open edX Site as a Service Provider +************************************************** + +To configure your Open edX site as a SAML service provider, follow +these steps. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. In the **Third_Party_Auth** section, next to **SAML Configuration** select + **Add**. + + .. note:: If you want to change the configuration of an existing service + provider, next to **SAML Configuration** select **Change**, and then + select **Update** for the provider that you want to configure. + +#. Select **Enabled**. + +#. Enter the following information. + + - **Entity ID**: Enter a URI for the server. To ensure that this value + uniquely identifies your site, the naming convention that edX recommends is + to include the server's domain name. For example, + ``http://saml.mydomain.com/``. + + - **Site**: Specify the site that you are configuring to be a SAML service + provider. There can only be one SAML Service Provider per site. For more + information about Sites in Open edX, see :ref:`Configuring Open edX sites`. + + - **Organization Info**: Use the format in the example that follows to + specify a language and locale code and identifying information for your + installation. + + .. code:: json + + { + "en-US": { + "url": "http://www.mydomain.com", + "displayname": "{Complete Name}", + "name": "{Short Name}" + } + } + + - **Other config str**: Define the security settings for the IdP metadata + files. For more information about the security settings, see the + `Python SAML Toolkit`_. An example follows. + + .. code:: json + + { + "SECURITY_CONFIG": { + "signMetadata": false, + "metadataCacheDuration": "" + } + } + +#. Optionally, you can save your public and private keys in the Django + administration console. Because this procedure saves your credentials in the + database, edX recommends that you use the ``lms.yml`` file instead. + For more information, see :ref:`Add Keys to the LMS Configuration File`. + +#. Select **Save**. You can direct identity providers to + ``{your LMS URL}/auth/saml/metadata.xml`` for your metadata file. + +******************************************************* +Ensure that the SAML Authentication Backend is Loaded +******************************************************* + +By default, SAML is included as an approved data format for identity providers. +The default configuration of the ``/edx/app/edxapp/lms.yml`` file does not +explicitly include the ``THIRD_PARTY_AUTH_BACKENDS`` setting. + +If you have customized this file and added the ``THIRD_PARTY_AUTH_BACKENDS`` +setting to it, you might need to verify that the +``common.djangoapps.third_party_auth.saml.SAMLAuthBackend`` python-social-auth backend class is +specified for it. That backend is required before you can add SAML IdPs. + +To verify that the SAML authentication backend is loaded on a devstack or +fullstack installation, review the ``/edx/app/edxapp/lms.yml`` file. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_advanced_features.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_advanced_features.rst new file mode 100644 index 000000000..63a7708b2 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_advanced_features.rst @@ -0,0 +1,176 @@ +.. _Advanced Third Party Authentication Features: + +############################################ +Advanced Third Party Authentication Features +############################################ + +The Open edX Third Party Authentication feature offers many advanced +configuration options and integration points that can be used to customize the +sign in experience for learners using specific third party providers. None of +the following features are required for a typical installation, but they may be useful. + +********************** +Skip Registration Form +********************** + +When you configure an OAuth2 or SAML provider in the Django admin, there is a +boolean **Skip registration form** option for that provider. Normally, when a +new user signs in with an external provider, the information sent to Open edX is +only used to pre-fill the registration form. When **Skip registration form** is +enabled for a provider, the information sent to Open edX is also used to pre- +fill the registration form, but then the form is automatically submitted before +the user has a chance to see it. If the registration succeeds, the user will +immediately be signed in to their newly created account and can start learning +right away. However, if there is any error, such as no email address was +provided automatically (since email addresses are required) or the email +address of the student conflicts with another existing Open edX user account, +then the pre-filled registration form will still be displayed to the student, +along with an error message. The student can then fix the error and submit the +form to complete the registration process. + + +*********************** +Skip Email Verification +*********************** + +When you configure an OAuth2 or SAML provider in the Django admin, there is a +boolean **Skip email verification** for that provider. Normally, all users are +required to verify their email address by clicking a link in the verification +email that gets automatically sent to the user upon registration. When this +option is selected, Open edX trusts that the email address provided by the +external authentication provider is correct. + +If a user registering with a provider that has this option enabled, and the +user's email address matches the email address that was sent to Open edX by the +external provider, the user's email address will be marked as verified, and no +verification email will be required. (However, the email address sent by the +external provider is only used to pre-fill the registration form, and the user +has a chance to edit the email address on the registration form before creating +their account. If they edit their email address so that it no longer matches +the email address sent by the external provider, the user will still be +required to verify their email address as usual.) + +.. _Hinted Sign In: + +************** +Hinted Sign In +************** + +When you link to Open edX, you can create "hinted links" that prompt the user +to sign in using a specific provider. For example, the following link +represents a typical link to an example course. + +:: + + https://courses.example.com/courses/course-v1:OrganizationX+Course101x+1T2016/courseware/3eddbb5919544c229d34b3175debc6d6/f9900289d2d0474096d20d23a1eeed81/ + +The following link represents a hinted link to the same course. At the end of +the URL, ``?tpa_hint=oa2-google-oauth2`` has been added. + +:: + + https://courses.example.com/courses/course-v1:OrganizationX+Course101x+1T2016/courseware/3eddbb5919544c229d34b3175debc6d6/f9900289d2d0474096d20d23a1eeed81/?tpa_hint=oa2-google-oauth2 + +When users select the typical link, they go to the sign in page. When they +select the hinted link, they receive a "Would you like to sign in using your +Google credentials?" prompt that includes a large button to use Google to sign +in, as well as a small button to use other sign in options. + +The intended use case of this feature is for organizations that wish to provide +a link from an on-premise system (or a course in another LMS like Canvas) to a +course in Open edX. In that case, the organizations will want students to sign +in using the organizations' SAML providers. By using hinted links, the sign in +and/or registration process will be simpler for students, as they won't have to +select a sign in provider or enter a password. + +To create a hinted link for an OAuth2 provider, append +``?tpa_hint=oa2-providername`` to any Open edX URL, where ``providername`` is +the "Backend Name" value from the "Provider Configuration (OAuth)" section of +the Open edX Django admin. + +To create a hinted link for a SAML provider, append ``?tpa_hint=saml-idpslug`` +to any Open edX URL, where ``idpslug`` is the "Idp slug" value from the +"Provider Configuration (SAML IdP)" section of the Open edX Django admin. + +*************** +Auto-enrollment +*************** + +Open edX has a feature that allows instructors, marketing teams, and others to +create links that automatically enroll students who click the link into a +specific course. + +If you send users to ``{LMS base URL}/account/finish_auth`` and include +``course_id``, ``enrollment_action``, and optional ``course_mode`` and +``email_opt_in`` parameters, the system auto-enrolls the user in the +specified course. + +For example, the following URL would auto-enroll the user who clicks this link +into the edX Demo course (that course's ID, +``course-v1:edX+DemoX+Demo_Course``, has been url-encoded as the value of the +``course_id`` parameter). If the user is not signed in, they are auto-enrolled +after they sign in or register. + +:: + + https://courses.example.com/account/finish_auth?course_id=course-v1%3AedX%2BDemoX%2BDemo_Course&enrollment_action=enroll&email_opt_in=false + +You can include the following parameters. + +* ``enrollment_action``: This is required so that the auto-enrollment behavior + is triggered. It must be set to either ``enroll`` (for free courses) or + ``add_to_cart`` (for paid courses). If ``add_to_cart`` is used, learners + are directed to the e-commerce basket page rather than being instantly + enrolled. + +* ``course_id``: This is required. The ID of the course to enroll the user in, + or add to cart, etc. The value must be URL-encoded. + +* ``course_mode``: One of ``audit``, ``honor``, ``verified``, etc. This + parameter applies only if ``enrollment_action`` is ``enroll``. If + ``course_mode`` is not specified, and the course has more than one mode, + learners are sent to the track selection page, where they can choose which + track of the course to enroll in. If ``honor`` or ``audit`` is specified, + learners are instantly enrolled. If any other mode is specified, learners + are sent to the payment/verification flow. + +* ``email_opt_in``: Can be ``true`` or ``false``. If true, this indicates that + the user has consented to receiving marketing emails from Open edX and the + course partner. + +The auto-enrollment feature can be combined with :ref:`hinted sign in`, if you create a URL such as the following example. + +:: + + https://courses.example.com/account/finish_auth?course_id=course-v1%3AedX%2BDemoX%2BDemo_Course&enrollment_action=enroll&email_opt_in=false&tpa_hint=oa2-facebook + +******************* +Secondary Providers +******************* + +When you configure an OAuth2 or SAML provider in the Django admin, there is a +boolean option to mark the provider as a **Secondary** provider. Normally, +third party sign in providers are displayed on the Open edX sign in and +register pages. However, secondary providers are not displayed directly on the +sign in or register pages. Instead, users see a button that says "Use my +institution/campus credentials". Clicking that will bring up a separate menu +that lists all the secondary providers. + +The intended use case of this feature is to keep the sign in/register page from +being cluttered with too many buttons. + +*************************** +SAML Attribute Requirements +*************************** + +When you integrate Open edX with a SAML provider, you can allow only some users +to sign in based on some criteria. For example, organizations may not want +alumni or guest users to be able to sign in to Open edX using their SAML +provider, even though those users have valid sign in credentials for the +organization. + +Users can be filtered based on ``eduPersonEntitlement`` attributes (supported +out of the box), or other attributes (requires custom code). For details on how +this can be set up, refer to `this edx-code mailing list post +`_. diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst new file mode 100644 index 000000000..679ef1637 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst @@ -0,0 +1,76 @@ +.. _SSO Behavior: + +############ +SSO Behavior +############ + +The following behavior applies to all three types of provider (OAuth, SAML, and LTI). + +************************ +New Learner Registration +************************ + +* When a user signs in by using single sign on (SSO) for the first time, their + account is not normally created automatically. Instead, the user information + sent by the provider is used to pre-fill the registration form. The user can + then edit any of the information before finalizing the creation of their + account. The user could also cancel the registration process at this point, + and no account would be created for them. + +* The user information that is passed from the external authentication provider + to Open edX varies depending on the provider. For example, Google, Facebook, + a university's SAML provider, and a corporate SAML provider may all provide + different user information. Some providers may pass the user's full name, + first name, last name, username, email address, external user ID, and more. + Other providers may pass only an opaque "user token" that can be used to + permanently and consistently identify that user, but which is not considered + personal information and does not correspond to any other public identifier. + +* After a user submits the registration form, their user account is created and + is automatically "linked" to the external provider. For more information, see + :ref:`Linking Accounts`. + +* When a user creates an account by using SSO, the password field on the + registration form is hidden. User accounts created by using SSO will have a + `random and highly secure password`_ assigned to their account. The user will + not know (or need to know) this password. However, the user can always use + the "reset password" feature to change their password, if they would also + like to be able to use a traditional password-based sign in method. + +.. important:: + No matter which type of sign in method is used, a full and independent Open + edX user account is always created for the new user, with a copy of the + user's information. As a result, if the external provider updates the user's + information (such as name or email address), that information will **not** be + automatically updated in the user's Open edX account. In other words, the use + of the external account as a reference that provides user details is a one- + time event, not an ongoing connection. + +.. _Linking Accounts: + +********************* +Linking Accounts +********************* + +* To be able to sign in by using an external provider such as Google, the + user's Open edX account must be "linked" to that provider. For example, if a + user's account is linked to Google, the user can click the **Login with + Google** button, and will be automatically signed in to their Open edX + account. + +* User accounts can be linked to zero, one, or many external providers. + +* Any provider can be linked or unlinked from an account at any time. + +* If an external provider is used to register a new account, the newly created + account will automatically be linked to that provider. + +* If a user tries to sign in by using an external provider that is not yet + linked to any Open edX account, the user will be given the following options. + + * Sign in to an existing account (using a password), which will then link + the new provider to that existing account. + + * Create a new account. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst new file mode 100644 index 000000000..5486b1c11 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst @@ -0,0 +1,232 @@ +.. _eliminating_pii_third_party_authentication: + +############################################### +Eliminating PII From Third-Party Authentication +############################################### + +Open edX sites and Open edX Edge do not require any personally identifiable +information (PII) about learners during third-party authentication. PII is +information that can be used to reveal an individual's identity, such as a +name. Your identity provider (IdP) service can send only non-personal +identifiers to create Open edX site accounts for learners. If you configure +third-party authentication in this way, the Open edX site never receives PII +from your organization. + +.. contents:: + :local: + :depth: 1 + +.. note:: + The types of information that constitute PII and requirements for handling it + depend on the laws and regulations that apply to your organization. The + information in this documentation is intended to explain how Open edX sites + can be configured to handle learner data. You cannot rely on this + documentation as a source of legal guidance. + +************************************************************ +Creating Open edX Learner Accounts Without Transmitting PII +************************************************************ + +After you have configured a third-party authentication profile for an Open edX +site, the site's sign-in page will display a button for users to access your +IdP service. Learners will access your IdP service and authenticate using their +organization credentials. Your IdP service will direct learners back to the +Open edX site's sign-in screen with an authentication token. + +The IdP authentication token includes an identifying string for a learner. This +identifier serves as a link between the identifying information that your +organization maintains for a learner and the Open edX account for that learner. +The identifying string does not need to include any PII for the learner. The +identifying string is sometimes referred to as an opaque identifier because it +does not make the identity of the learner visible. + +When a learner uses third-party authentication to sign in to an Open edX site +for the first time, the Open edX site creates a learner account. The new Open +edX learner account is permanently associated with the identifying string +included in the IdP authentication token. Learners will be prompted to create +profiles by entering Open edX usernames, email addresses, and other information +in their accounts. Learners can take steps to minimize the PII in their +profiles. For more information, see +:ref:`creating_learner_accounts_without_pii`. + +The following diagram shows how an IdP can direct a learner to an Open edX site to +create a learner account, without transmitting any PII. + +.. image:: ../../../../shared/images/tpa-idp-create-non-personal-account.png + :width: 900 + :alt: A diagram showing how an identity provider (IdP) service can create a + learner account on an Open edX site without transmitting any personally + identifying information (PII). + +You can download a report containing grades for all learners in the Open edX +courses that you run. The report includes the Open edX username for each +learner enrolled in the course, but the usernames may not correspond to learner +records that your organization maintains. If you need to match the scores for +Open edX site learners to the learner records that your organization maintains, +you can use the third- party authentication ID mapping REST API to retrieve the +user ID SAML attribute and matching Open edX username for a learner. For more +information about grade reports for Open edX courses that you run, see +:ref:`Access_grades`. + +.. Organizations may be able to access learner information in other ways. Make +.. the paragraph above more general when we know of those other methods. + +The following diagram shows how an organization that uses third-party +authentication can match non-personally identifying Open edX learner usernames +with the records that the organization holds for those learners. + +.. image:: ../../../../shared/images/tpa-institution-associate-edx-id-with-personal-id.png + :width: 900 + :alt: A diagram showing how an organization that uses third-party + authentication can match non-personally identifying Open edX learner + usernames with the records that the organization holds for those + learners. + +.. TODO: Add documentation for the third-party authentication ID mapping API. + +.. _creating_learner_accounts_without_pii: + +********************************** +Minimizing PII in Account Profiles +********************************** + +When your IdP directs a learner to an Open edX site for the first time, the +learner enters information to create an Open edX site account. The basic +information required for an Open edX site account is an email address, full +name, public username, password, and country. Learners may also provide +additional personal details such as gender, year of birth, and educational +background. While course teams have access to full registration information +for learners enrolled in their courses, only public usernames are used to +identify learners in course discussions and other public-facing course +interactions. + +To minimize PII stored on an Open edX site, learners can limit the information +in their Open edX account profiles to the basic information required for an +Open edX site account. Additionally, learners may use random or nondescript +public usernames and create non-identifying email addresses to receive course +updates. + +If you want to avoid transmitting PII for the Open edX learner accounts that +use third-party authentication, you should not include personally identifying +information in the authentication token. The only piece of information that is +required in the authentication token is the user ID, which should not be +personally identifying. + +For more information about configuring the information in a third-party +authentication token, see :ref:`Configuration Options for SAML Providers`. + +**************************** +PII Considerations with SAML +**************************** + +Organizations that use SAML to integrate their IdPs with Open edX need to +understand what personal information is provided to Open edX when users sign in +using SAML. + +When a user uses SAML or Shibboleth to sign in to Open edX, the IdP +authoritatively asserts pieces of information about the user. + +Each piece of information is called a SAML attribute. Each attribute has a +name and a formal identifier that is called an object identifier (`OID`_) +uniform resource name (`URN`_). + +The following table lists some common attributes. + +.. list-table:: + :widths: 25 30 45 + + * - Name + - OID URN + - Example Value + * - User ID + - ``urn:oid:0.9.2342.19200300.100.1.1`` + - 123456789 + * - Full Name + - ``urn:oid:2.5.4.3`` + - Donna Noble + * - First Name + - ``urn:oid:2.5.4.42`` + - Donna + * - Last Name + - ``urn:oid:2.5.4.4`` + - Noble + * - Email + - ``urn:oid:0.9.2342.19200300.100.1.3`` + - dnoble@school.edu + * - eduPersonPrincipalName + - ``urn:oid:1.3.6.1.4.1.5923.1.1.1.6`` + - dnoble@school.edu + * - eduPersonEntitlement + - ``urn:oid:1.3.6.1.4.1.5923.1.1.1.7`` + - urn:mace:school.edu:confocalMicroscope + +For more information about ``eduPersonPrincipalName`` and +``eduPersonEntitlement``, see `eduPersonPrincipalName`_ and +`eduPersonEntitlement`_ on the `eduPerson Object Class Specification`_ page. + +When a new user uses SAML to sign in to Open edX, the IdP sends information +about the user to Open edX in the form of these attributes. These attributes +can be used to pre-fill the registration form. + +For example, when a user signs in, their server may provide the following +information. + +.. code-block:: python + + "urn:oid:0.9.2342.19200300.100.1.1: 123, urn:oid:2.5.4.3: John Smith, + urn:oid:0.9.2342.19200300.100.1.3: jsmith@school.edu" + +Open edX saves the user ID because it is required to match future sign-in +attempts to the correct user account. The full name (``John Smith``) and email +(``jsmith@school.edu``) is pre-filled on the registration form, but if the user +edits those, Open edX saves only the new changed version. (For example, if the +user changes the email to ``jsmith@example.com``, Open edX would record the +user's email as ``jsmith@example.com`` and would not have any record of the +``jsmith@school.edu`` address.) + + +By default, Open edX expects the standard **User ID** field +(``urn:oid:0.9.2342.19200300.100.1.1``) and uses that as the unique external +ID. Open edX can accept any set of attributes that a SAML IdP sends, as long as +one of the attributes is a unique, permanent identifier for the user being +authenticated. The URN or OID of the unique identifier must be specified in the +Open edX "Provider Configuration (SAML IdPs)" profile for the organization +(part of the Django administration console) in the **User ID Attribute** +field. + +If you want to configure Open edX to always store all of the attributes that +the external IdP sends for each user, you can enable that with a +setting, as follows. + +#. Sign in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. Go to the **SAML Configuration** page, and then select **Add SAML + Configuration**. (Do not go to the **SAML Provider Configuration** page.) + +#. In the **Other Config Str** section, add the following code. + + .. code-block:: none + + "EXTRA_DATA": [ "attributes" ] + +This setting causes all the attributes to be saved in the +``social_auth_usersocialauth`` table's ``extra_data`` column for every new SAML +user. This data is only accessible by accessing the database directly or by +going to the **User social auths** page of the Open edX LMS Django +administration console. + +For organizations that want to avoid sending any personally identifiable +information to Open edX during the SAML sign in or registration process, we +recommend that the organization configure their SAML IdP to only send a single +attribute: **a unique, permanent, opaque user identifier**. This should be a +value that uniquely identifies any learner or staff member, but is different +from their organization ID or any other identifier they may have. + +For reporting and analytics purposes when using an opaque user identifier, the +organization can use the :ref:`Third Party Auth ID Mapping API` to convert Open +edX user IDs found in reports or analytics back to these opaque organization +user identifiers. Organization partners can then convert each opaque user +identifier back to the official learner ID. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/index.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/index.rst new file mode 100644 index 000000000..1635de489 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/index.rst @@ -0,0 +1,47 @@ +.. _Integrate TPA in Open edX: + +################################################## +Integrating Third Party Authentication in Open edX +################################################## + +For the Open edX platform, you complete two steps to integrate third party +authentication. + +#. Enable the third party authentication feature. +#. Set up a provider. + +.. _Enable the Third Party Authentication Feature: + +*********************************************** +Enable the Third Party Authentication Feature +*********************************************** + +By default, third party authentication is not enabled on Open edX +installations. To enable this feature, follow these steps. + +#. In the ``edx/app/edxapp/lms.yml`` file, edit the file so that it + includes the following line in the features section. + + .. code-block:: none + + "FEATURES" : { + ... + "ENABLE_COMBINED_LOGIN_REGISTRATION": true, + "ENABLE_THIRD_PARTY_AUTH": true + } + +#. Save the ``edx/app/edxapp/lms.yml`` file. + +*********************************************** +Set Up a Third Party Authentication Provider +*********************************************** + +You can set up an OAuth or SAML provider. For information about the differences +between the two providers, see :ref:`Supported Identity Providers`. + +.. toctree:: + :maxdepth: 1 + + tpa_oauth + tpa_SAML_IdP + diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst new file mode 100644 index 000000000..2a729ee54 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst @@ -0,0 +1,180 @@ +.. _Integrating with a SAML Identity Provider: + +########################################## +Integrating with a SAML Identity Provider +########################################## + +You can integrate your Open edX site with federated identity solutions +that use the Security Assertion Markup Language, version 2.0 (SAML 2.0) +standard. An example is Shibboleth, a single sign on system that is used by +many educational institutions. + +.. contents:: + :local: + :depth: 1 + +****************** +Exchange Metadata +****************** + +SAML metadata is an XML file that contains the information necessary for secure +interactions between identity providers and security providers. You send the +URL of your metadata file, created when you :ref:`configured your Open edX site +as a SAML service provider`, to each identity provider that you want to add. Similarly, you +obtain the metadata URLs from identity providers before you add and enable them +for your installation. + +******************************************* +Add and Enable a SAML Identity Provider +******************************************* + +To add and enable a SAML 2.0 identity provider, follow these steps. + +#. Log in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. In the **Third_Party_Auth** section, next to **Provider Configuration + (SAML IdPs)** select **Add**. + + .. note:: If you want to change the configuration of an existing provider, + next to **Provider Configuration (SAML IdPs)** select **Change**, and then + select **Update** for the provider that you want to configure. + +#. Enter the following information for the provider. + + - **Icon class**: Specifies a `Font Awesome`_ image for the button that + users will select to access the sign in page for this IdP. The **fa-sign- + in** icon is used by default. For university or institutional providers, a + suggested alternative is **fa-university**. + + - **Name**: The name of the IdP as you want it to appear on the sign in + page. + + - **Secondary**: Select this option to include the IdP in an intermediary + list of providers that users access from a **Use my institution/campus + credentials** button on the sign in page. + + - **Backend name**: The default, **tpa-saml**, is optimized for use with + Open edX and works with most SAML providers. Select a different option + only if you have added a custom backend that provides additional + functionality. + + - **Site**: Select the site that you are configuring to use this IdP. Each + IdP can only belong to one site at a time. For more information about + sites in Open edX, see :ref:`Configuring Open edX sites`. + + - **IdP slug**: A short, unique name to identify this IdP in the URL. The + slug becomes part of a URL, so the value that you enter cannot include + spaces. + + - **Entity ID**: The URI that identifies the IdP. This ID must match the + value specified in the metadata XML file. + + - **Metadata source**: The URL of the XML file that contains this provider's + metadata. + +#. Specify your selections for any of the other, optional configuration + options. For more information about these options, see :ref:`Configuration + Options for SAML Providers`. + +#. When you are ready to enable the provider, select **Enabled** at the top of + the page. Alternatively, save your configuration settings and enable the + provider at another time. + +#. Select **Save** or one of the other save options at the bottom of the page. + +Next, you can :ref:`test an enabled provider`. + +.. _Configuration Options for SAML Providers: + +************************************************* +Configure the SAML Identity Provider +************************************************* + +To customize the registration process for IdP, you make selections for these +optional fields on the **Add Provider Configuration (SAML IdP)** page. + +* **Skip Registration Form**: If you select this option, users are not asked to + confirm the user account data supplied for them by the IdP (name, email + address, and so on). Select this option only for providers that are known to + provide accurate user information. + + By default, users review a registration form with the supplied account + details. + +* **Skip Email Verification**: If you select this option, users are not + required to confirm their email addresses, and their accounts are activated + immediately upon registration. + + By default, users receive an email message and must select a link in that + message to activate their user accounts. + +* **User ID Attribute**: Required. This value is used to associate the user's + edX account with the campus account. It is not displayed to users. + + By default, uses ``userid``, ``urn:oid:0.9.2342.19200300.100.1.1``. + +* Optional user attributes: You can indicate specific URN values for the + following user attributes. + + By default, the registration form includes all of the following attributes if + they are sent by the IdP. + + * **Full Name Attribute**: ``commonName``, ``urn:oid:2.5.4.3`` + * **First Name Attribute**: ``givenName``, ``urn:oid:2.5.4.42`` + * **Last Name Attribute**: ``surname``, ``urn:oid:2.5.4.4`` + * **Username Hint Attribute**: ``userid``, + ``urn:oid:0.9.2342.19200300.100.1.1`` + * **Email Attribute**: ``mail``, ``urn:oid:0.9.2342.19200300.100.1.3`` + + If the identity provider sends a value that you do not want to be included on + the registration form, you can enter a value such as "DISABLED" or + "IGNORE" in that field. + +.. _Test an Enabled SAML Provider: + +******************************************* +Test an Enabled SAML Provider +******************************************* + +To verify the sign in process for an IdP that you have enabled, follow these +steps. + +#. On the Django administration console, in the **Third_Party_Auth** section, + select **Provider Configuration (SAML IdPs)**. + +#. Check the icon in the **Metadata ready** column for the IdP. After the + provider's metadata is fetched successfully from the URL that you provided + as the metadata source, a check mark in a green circle appears and the + provider is ready for use immediately. + + You might need to wait 30-60 seconds for the task to complete, and then + refresh this page. + + If the check mark does not appear, make sure that celery is configured + correctly and is running. You can also manually trigger an update by running + the management command ``./manage.py lms saml --pull --settings=production`` on + fullstack or ``./manage.py lms saml --pull --settings=devstack`` on + devstack. + +#. For additional information about the data fetched from the IdP, on the + Django administration console select **SAML Provider Data**, and then select + the provider. The page that opens reports data fetched from the metadata + source URL and the date and time it was fetched. + +#. To verify that users can use the IdP for sign in, go to the sign in page for + your LMS. The page should include the institutional sign in button. + + .. image:: ../../../Images/tpa_signin.png + :alt: Screen shot of an LMS sign in page with a button labeled "Use my + institutional/campus credentials" circled at the bottom. + +#. Select **Use my institutional/campus credentials**. The list of providers + that appears should include the IdP that you enabled. + + .. image:: ../../../Images/tpa_inst_list.png + :alt: Screen shot of the list of enabled IdPs. Each IdP name is linked to + the sign in page for the corresponding authentication system. + +.. include:: ../../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst new file mode 100644 index 000000000..8e0bb86fb --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst @@ -0,0 +1,474 @@ +.. _Integrating with an OAuth2 Identity Provider: + +############################################### +Integrating with an OAuth2 Identity Provider +############################################### + +Open edX has specific instructions for Google, Facebook, LinkedIn, and Azure +Active Directory. For more information about how to set up one or more of these +integrations, see :ref:`Common OAuth2 Providers`. + +The system also supports integrations with alternative OAuth2 providers. For +more information, see :ref:`Additional Providers`. + +.. _Common OAuth2 Providers: + +**************************** +Common OAuth2 Providers +**************************** + +Integrating with the most common OAuth2 IdPs has several steps. + +#. :ref:`Register the Open edX instance with the provider`. +#. :ref:`Configure Open edX`. +#. :ref:`Add the provider configuration`. + + +.. _Register the Open edX Instance: + +============================== +Register the Open edX Instance +============================== + +The most common OAuth2 providers are Google, Facebook, LinkedIn, and Azure +Active Directory. + +.. contents:: + :local: + :depth: 1 + +Register the Open edX Instance with Google +****************************************** + +The following instructions describe how to configure Google as a third party +authentication provider so that users can use Google accounts (which includes +Google Apps accounts) to sign in. These are based on the official Google +instructions. + +#. Obtain credentials to access the Google API. To do this, follow the + `official Google instructions`_ to go to the `Google Developers Console`_, + create a new project, and enable the Google+ API service. + +#. In the Google Developers Console, select **API Manager**, and then select + **OAuth Consent Screen**. + +#. For **Product name shown to users** enter the name of your Open edX instance + (for example, "Example Academy Online"). + +#. Select **Save**. + +#. Select the **Credentials** tab, select **Create credentials**, and then + select **OAuth client ID**. + + * For **Application type**, select **Web application**. + * Leave the **Authorized JavaScript origins** field blank. + * For **Authorized redirect URIs**, enter ``/auth/complete/google-oauth2/``. For example, for devstack, enter + ``http://localhost:8000/auth/complete/google-oauth2/``. + * Select **Create** to finish creating the credentials. + +#. After you obtain the credentials, note the client ID and the client secret. + +Register the Open edX Instance with Facebook +******************************************** + +To create the app in the Facebook developer portal, follow these steps. + +#. Sign in to Facebook, then go to the `Facebook for Developers`_ page. + +#. Select **Add a New App**, and then select **Website**. + +#. Enter a name for the app, and then select **Create New Facebook App ID**. + +#. Enter your information in the rest of the fields in the app creation + process. + +#. Under **Quick Start for Website**, select **Skip Quick Start**. + + You are now at the developer console page for the new Facebook app. + +#. Select **Settings**, and note the **App ID** and **App Secret**. + +#. On the **Settings** page, select **Add Platform**, and then select + **Website**. + +#. For **Site URL**, enter the URL of your Open edX instance (for example, + ```` for devstack). + +#. In the **App Domains** field, enter the domain name from this URL (for + example, ``localhost``). + +#. Select **Save Changes**. + +#. Under **Products** -> **Facebook Login** -> **Settings** -> + **Authorized redirect URIs**, enter ``/auth/complete/facebook/``. For example, for devstack, enter + ``http://localhost:8000/auth/complete/facebook/``. + +#. Select **Save Changes**. + +Register the Open edX Instance with LinkedIn +******************************************** + +To create the LinkedIn app, follow these steps. + +#. Go to the `LinkedIn Developers`_ page. + +#. Click **Create Application**, enter your information in the form, and then + submit the form. + +#. On the page that opens with information about the app, note the **Client + ID** and **Client Secret**. + +#. In the **OAuth 2.0** section, for **Authorized Redirect URL**, enter ``/auth/complete/linkedin-oauth2/``. For example, for + devstack, enter ``http://localhost:8000/auth/complete/linkedin-oauth2/``. + +#. Select **Update** to save your information. + +Register the Open edX Instance with Azure Active Directory +********************************************************** + +You can use Azure Active Directory to allow users with Microsoft Office 365 +Business accounts to sign in to Open edX. Note that this feature currently does +not work with other types of Microsoft accounts (such as "@live.com" or +"@hotmail.com" accounts). + +#. If you do not have a Microsoft account, create one on the `Microsoft sign in`_ page. + +#. If you do not have an Azure subscription, create one on the `Azure account + creation`_ page. + + .. note:: + You must enter a credit card on this page, but if you do not create any + virtual machines or other services besides Azure AD, you will not be + charged. + +#. Go to the `Azure sign in`_ page. + +#. Click **New**, locate **Active Directory**, and then select **Create**. + +#. Enter a name, domain name, and country. + +#. Create a new application. + + #. Find the new Active Directory in the portal, select **Applications**, + select **Add**, and then select **Add an application my organization is + developing**. + + #. Enter a name for the app, and then select **Web Application**. + + #. For **Sign-on URL**, enter ``/auth/complete/azuread-oauth2/``. + For example, you might enter + ``http://localhost:8000/auth/complete/azuread-oauth2/``. + + #. For **App ID URL**, enter ``/sign in``. For example, you might + enter ``http://localhost:8000/sign in``. + + #. Finish creating the new app. + +#. In the portal, locate your Azure AD application, click **Configure**, and + then locate and make a note of the client ID. For example, the client ID may + be ``fe3c3868-0faa-44ee-a1bf-1110aeab1a65``. + +#. In the **Keys** section, select a two-year duration, and then select + **Save** to create a secret key. Note the value of the key. For example, the + key-value may be ``abcdef12341yHlmOrR8D3vlV1cD2VtL7k9xk9DSB8vw=``. + +#. In the **Permissions to other applications** section, locate the **Delegated + Permissions** option for Windows Azure Active Directory, and then select + **Sign in and read user profile**. + +#. Verify the Azure AD domain name. To do this, follow these steps. + + #. In the portal, locate the new Active Directory. + + #. Select **Domains**, select **Add**, and then add the root domain you want + to use (for example, ``edx.org``). Make sure that you add the root domain + first, and then follow the TXT record verification process. + + #. (optional) After the domain has been verified, add subdomains (for + example, ``courses.edx.org``). Subdomains also request verification, but + do not need it. + +#. In the Active Directory, select **Applications**, and then select the + application that you created. + +#. Enable **multi-tenant** support. + + +.. _OAuth2 Configure Open edX: + +====================== +Configure Open edX +====================== + +Configuring Open edX is very similar for Google, Facebook, LinkedIn, and Azure. + +#. In the ``lms.yml`` file, change the value of ``FEATURES`` > + ``ENABLE_THIRD_PARTY_AUTH`` to ``true`` (it is ``false`` by default). + +#. If necessary, make sure that the correct backend is specified. + + * If you are using Google, Facebook, LinkedIn, or Active Directory, open the + ``lms.yml`` file and look for the ``THIRD_PARTY_AUTH_BACKENDS`` list. + By default, the file does not contain this list. + + If the ``lms.yml`` file does not contain the + ``THIRD_PARTY_AUTH_BACKENDS`` list, you do not have to complete any + additional steps. + + If the ``lms.yml`` file contains the ``THIRD_PARTY_AUTH_BACKENDS`` + list, add the backend for the applicable IdP to the list. + + * For Google, add ``"social_core.backends.google.GoogleOAuth2"``. + + * For Facebook, add ``"social_core.backends.facebook.FacebookOAuth2"``. + + * For LinkedIn, add ``"social_core.backends.linkedin.LinkedinOAuth2"``. + + * For Azure Active Directory, add + ``"social_core.backends.azuread.AzureADOAuth2"``. + + * If you are using a custom backend, add the applicable OAuth2 provider to + the ``THIRD_PARTY_AUTH_BACKENDS`` list in the ``lms.yml`` file. If + the file does not contain the ``THIRD_PARTY_AUTH_BACKENDS`` list, create + the list, and then add the OAuth2 provider. + + For more information, see the `AWS template file`_ file in GitHub. + +#. In the ``lms.yml`` file, add the client secret. To do this, create the + ``SOCIAL_AUTH_OAUTH_SECRETS`` key if the key does not already exist, and + then add the appropriate value for your IdP. + + .. note:: + If you are using Ansible, set the ``EDXAPP_SOCIAL_AUTH_OAUTH_SECRETS`` + variable. + + * For Google, add the following value. + + .. code-block:: none + + "SOCIAL_AUTH_OAUTH_SECRETS": { "google-oauth2": + "abcdef123456789101112131" } + + * For Facebook, add the following value. + + .. code-block:: none + + "SOCIAL_AUTH_OAUTH_SECRETS": { + "facebook": "98765432181bbe3a2596efa8ba7abcde" + } + + * For LinkedIn, add the following value. + + .. code-block:: none + + "SOCIAL_AUTH_OAUTH_SECRETS": { "linkedin-oauth2": "4D3Cb2aB1C0dEFGH" } + + * For Azure, add the following value. + + .. code-block:: none + + "SOCIAL_AUTH_OAUTH_SECRETS": { "azuread-oauth2": + "abcdef12341yHlmOrR8D3vlV1cD2VtL7k9xk9DSB8vw=" } + +#. Restart the LMS server so that it will use the new settings. + +.. _Add the Provider Configuration: + +============================== +Add the Provider Configuration +============================== + +#. Go to ``/admin/third_party_auth/oauth2providerconfig/``. For + example, on devstack, go to + ``http://localhost:8000/admin/third_party_auth/oauth2providerconfig/``. + +#. Select **Add Provider Configuration (OAuth)**. + +#. Make sure that **Enabled** is selected. + +#. Make sure that **Visible** is selected. + +#. For **Icon Class**, enter the appropriate value. + + * For Google, enter ``fa-google-plus``. + + * For Facebook, enter ``fa-facebook``. + + * For LinkedIn, enter ``fa-linkedin``. + + * For Azure, leave the field blank. + +#. For **Name**, enter the appropriate value. + + * For Google, enter ``Google``. + + * For Facebook, enter ``Facebook``. + + * For LinkedIn, enter ``LinkedIn``. + + * For Azure, enter ``Microsoft``. + +#. For **Backend Name**, select the appropriate value. + + * For Google, select **google-oauth2**. + + * For Facebook, select **facebook**. + + * For LinkedIn, select **linkedin-oauth2**. + + * For Azure, select **azuread-oauth2**. + + .. note:: + If the value does not appear in the list, either the + ``ENABLE_THIRD_PARTY_AUTH`` setting or the ``THIRD_PARTY_AUTH_BACKENDS`` + setting is not configured correctly. + +#. For **Client ID**, enter the client ID that you noted earlier. + +#. Leave **Client Secret** blank. Open edX sets the secret through + ``lms.yml``, which is more secure. + +#. (Optional) If you want Facebook or LinkedIn to provide the user's email + address during registration, enter the following code into **Other + settings**. + + For Facebook, use this code. + + .. code-block:: none + + { + "SCOPE": ["email"], + "PROFILE_EXTRA_PARAMS": { + "fields": "id, name, email" + } + } + + For LinkedIn, use this code. + + .. code-block:: none + + { "SCOPE": ["r_basicprofile", "r_emailaddress"], "FIELD_SELECTORS": + ["email-address"] } + + +#. Select **Save**. + +Users who have an account with the IdP that you have configured can now sign +in. + +.. note:: + + For Google only, if you see the following error message, the + ``SOCIAL_AUTH_OAUTH_SECRETS`` setting is not correct. + + ``'unicode' object has no attribute 'get'`` + + To resolve this problem, make sure that this setting does not appear multiple + times in the ``lms.yml`` file. + +.. _Additional Providers: + +************************************** +Additional OAuth2 Providers (Advanced) +************************************** + +You can add any other third party authentication provider that supports the +OAuth2 standard to the Open edX platform. To do this, follow these steps. + +.. note:: + OAuth1 providers are also supported and can be configured using these same + steps. However, OAuth2 is preferred over OAuth1 wherever possible. + +#. In ``lms.yml``, change the value of ``FEATURES`` > + ``ENABLE_THIRD_PARTY_AUTH`` to ``true`` (it is ``false`` by default). + +#. Install the python-social-auth authentication backend specific to + that provider, and determine the python module path of the backend. + + * If the provider is a `python-social-auth supported backend`_, the backend + is already installed. + + To determine the python module path of the backend, locate the backend in + the `list of python-social-auth backends`_, open the file for the backend, + and locate the name of the class. The python module path is of the format + ``social_core.backends..``. + + For example, for GitHub, the file is ``github.py`` and the class in that + file is ``GithubOAuth2``. The backend module path is therefore + ``social_core.backends.github.GithubOAuth2``. + + * If the provider is not a python-social-auth supported backend, you must + create a new Python package that includes the code required to implement + the backend. Your python package must contain a module with a class that + subclasses ``social_core.backends.oauth.BaseOAuth2``. For more information, see + the `python-social-auth documentation`_, or see the code of the fully + supported backends (such as Google or Facebook) for examples. + +#. Enable the python-social-auth authentication backend specific to that + provider: + + #. In the ``THIRD_PARTY_AUTH_BACKENDS`` setting in ``lms.yml``, add the + full path of the module to the list. + + #. (optional) Set the value of ``THIRD_PARTY_AUTH_BACKENDS`` to match `the + default value in the aws.py file`_, and then add any additional backends + you need. + +#. Obtain a client ID and client secret from the provider. + +#. Add the client secret to ``lms.yml``. To do this, create a new key + called ``SOCIAL_AUTH_OAUTH_SECRETS`` if it doesn't already exist, and then + add the backend name to that key as follows. + + .. code-block:: none + + "SOCIAL_AUTH_OAUTH_SECRETS": { "backend-name": "secret" } + + If you are using Ansible, the variable to set is called + ``EDXAPP_SOCIAL_AUTH_OAUTH_SECRETS``. + +#. Restart the LMS server so that it will use the new settings. + +#. Go to ``/admin/third_party_auth/oauth2providerconfig/``. For + example, on devstack, go to + ``http://localhost:8000/admin/third_party_auth/oauth2providerconfig/``. + +#. Select **Add Provider Configuration (OAuth)**. + +#. Make sure that **Enabled** is selected. + +#. Make sure that **Visible** is selected. + +#. For **Icon Class**, select one of the following options. + + * Use a generic icon by entering ``fa-sign-in``. + + * Use a relevant Font Awesome icon. + + * Upload an SVG icon using the **Icon Image** field. + +#. For **Name**, enter the name of the provider. + +#. For **Site**, choose the site which you want to apply the provider config to, + if there are multiple site configurations. + +#. For **Backend Name**, select the backend name from the list. (If it does not + appear in the list, either the ``ENABLE_THIRD_PARTY_AUTH`` setting or the + ``THIRD_PARTY_AUTH_BACKENDS`` setting is not configured correctly.) + +#. For **Client ID**, enter the client ID that you noted earlier. + +#. Leave **Client Secret** blank. Open edX sets the secret through + ``lms.yml``, which is more secure. + +#. Select **Save**. + +Users can now sign in using this OAuth2 provider. + + + +.. include:: ../../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst new file mode 100644 index 000000000..a9947b38e --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst @@ -0,0 +1,83 @@ +.. _Supported Identity Providers: + +####################################### +Supported Identity Providers +####################################### + +In an exchange of authentication and authorization data, an identity provider +securely asserts the identity and access rights of a set of users. Your Open +edX site is the service provider that allows the users access on the basis of credentials sent by an identity provider. + +For example, your Open edX site hosts the courses of three different +organizations. When you configure the Open edX site to be a service provider, +and configure each of the three organizations to be identity providers, you +permit learners who have valid user credentials at any of those organizations +to access the Open edX site. + +You can enable third party authentication between your Open edX site and many +types of identity providers. The Open edX platform provides support for +three types of identity providers. + +**************************** +Supported Identity Providers +**************************** + +The Open edX platform has integrated support for the following providers. + +* **OAuth** based providers (OAuth2 and the older OAuth v1). Google, Facebook, + LinkedIn, and Azure Active Directory are available by default. Any other + `OAuth backends supported by python-social-auth v0.2.12`_ can be enabled by + changing a configuration setting. People in the Open edX community sometimes + use “third party auth” to refer to Google or Facebook integration. Single + sign on, or “SSO”, and “third party auth” are largely interchangeable terms + for the purposes of this document. + +* **Security Assertion Markup Language (SAML) version 2.0**, or Shibboleth. + SAML is an SSO standard mostly used by universities and corporations. + Shibboleth is the name of a particular implementation of SAML, commonly used + by higher education institutions. People in the Open edX community sometimes + use “SSO” to refer to SAML or Shibboleth. “SSO” and “Third Party Auth” are + largely interchangeable terms for the purposes of this doc. For more + information, see :ref:`Integrating with a SAML Identity Provider`. + +* **LTI**. Users can use Learning Tools Interoperability® (LTI®) to + authenticate. + +****************************************** +Provisionally Supported Identity Providers +****************************************** + +The Open edX platform also includes limited support for the following SSO +providers. + +* OpenID +* Apache-hosted Shibboleth +* SSL client certificates +* Central Authentication Service (CAS) + +These providers are part of the external_auth app, tend to be older and less +robustly tested, and have a much more limited feature set. These providers are +included in the source code but are not officially supported. + +****************************** +Integrating Identity Providers +****************************** + +Regardless of the standard that the identity provider you want to integrate +with uses, you begin by :ref:`enabling the third party authentication +feature` for your site. + +For example, your Open edX site hosts the courses of three different +organizations. When you configure the Open edX site to be a service provider, +and configure each of the three organizations to be identity providers, you +permit learners who have valid user credentials at any of those organizations +to access the Open edX site. + +If you are using :ref:`edX as an LTI tool provider` to a external learning management system +or application, you can set up an authentication workflow between your Open +edX site and the system that is the LTI tool consumer. For more information, +see :ref:`Options for LTI Authentication and User Provisioning` and +:ref:`Configuring Open edX for LTI Authentication`. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/transcripts.rst b/source/site_ops/install_configure_run_guide/configuration/transcripts.rst new file mode 100644 index 000000000..aea42c241 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/transcripts.rst @@ -0,0 +1,40 @@ +.. _Configure Transcripts: + +#################################### +Configuring Transcript Behavior +#################################### + +As a best practice, transcripts should always be provided, so that course +videos meet accessibility requirements. Video transcripts are displayed in the +language selected by the learner in the video player if they are available in +that language. Otherwise, by default video transcripts fall back to an English +language transcript. In cases where no transcript is available, you can +configure Open edX so that the video player does not display the caption and +transcript buttons. + +You can configure the default transcript behavior using the +``FALLBACK_TO_ENGLISH_TRANSCRIPTS`` feature flag. By default, this feature +flag is set to ``TRUE``. If you set it to ``FALSE``, then the video transcript +will not fall back to an English language transcript and if no transcript is +available, the caption and transcript buttons are not displayed in the video +player. + +*************************************** +Configuring the Transcript Feature Flag +*************************************** + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +To set the ``FALLBACK_TO_ENGLISH_TRANSCRIPTS`` feature flag, you modify the +``lms.yml`` and ``studio.yml`` files, which are located one level above +the ``edx-platform`` directory. + +#. In the ``lms.yml`` and ``studio.yml`` files, in the ``FEATURES`` + dictionary, change the value of ``FALLBACK_TO_ENGLISH_TRANSCRIPTS`` to + ``FALSE``. + +#. Save the ``lms.yml`` and ``studio.yml`` files. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst b/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst new file mode 100644 index 000000000..dc9995ce7 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst @@ -0,0 +1,18 @@ +.. _Guidelines for Updating the Open edX Platform: + +###################################################### +Guidelines for Updating the Open edX Platform +###################################################### + +When you update the Open edX Platform, you should not change configuration +files on a running server. Doing so can result in unpredictable problems. + +If you need to change settings on a running server, take the following steps. + +#. Provision a new server that matches the running server. +#. Make configuration changes on the new server. +#. Start the new server. +#. Reroute traffic from the old server to the new server. +#. Decommission the old server. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst b/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst new file mode 100644 index 000000000..acd80b2da --- /dev/null +++ b/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst @@ -0,0 +1,125 @@ +.. _YouTube_API: + +############################### +Setting Up the YouTube API Key +############################### + +This topic describes how to set the YouTube API key for your instance of +Open edX. + +.. contents:: + :local: + :depth: 1 + +********* +Overview +********* + +If you intend for courses on your Open edX instance to include videos that are +hosted on YouTube, you must get a YouTube API key and set the key in the +Open edX Platform. + +The Open edX Platform uses the `YouTube Data API v3`_, which requires that +the application uses an API key. + +************************* +Get a YouTube API Key +************************* + +To get the YouTube API key, follow YouTube's `instructions for obtaining +authorization credentials`_. YouTube provides two different options for API +keys: server keys or browser keys. You should use a **browser key** for +Open edX. + +.. Note:: + Before proceeding, review :ref:`Guidelines for Updating the Open edX + Platform`. + +****************************************** +Install the YouTube API Key in Open edX +****************************************** + +After you obtain a YouTube API key, you must install that key into your +Open edX installation. There are two different ways you can do this. + +.. contents:: + :local: + :depth: 1 + +Option 1: Ansible (recommended) +=============================== + +`Ansible`_ is the automation system used for installing and updating Open edX. +If you set your YouTube API key in Ansible's configuration file, then Ansible +will make sure that the YouTube API key remains in place when you update Open +edX. + +To set your YouTube API key in Ansible's configuration file, follow these +steps. + +#. Find the `configuration`_ repository on your Open edX server. If you are + running devstack or fullstack, the directory is + ``/edx/app/edx_ansible/edx_ansible``. + +#. In that repository, open the ``playbooks/roles/edxapp/defaults/main.yml`` + file in a text editor. + +#. Find the line for the YouTube API key. + + ``EDXAPP_YOUTUBE_API_KEY: "PUT_YOUR_API_KEY_HERE"`` + + Replace ``PUT_YOUR_API_KEY_HERE`` with your YouTube API key. Ensure + that the YouTube API key is within by quotation marks. + +#. Save and close the file. + +#. Run Ansible so that it applies your YouTube API key to your Open edX + installation. + + For example, if you are running the Open edX Cypress release, run the + following command. + + .. code-block:: bash + + /edx/bin/update edx-platform named-release/cypress + + +Option 2: JSON files +==================== + +Ansible outputs information to several JSON files used by Open edX. If you +prefer not to edit the Ansible configuration, you can edit these files +directly. + +However, every time you update Open edX, your edits will be overwritten by +Ansible. As a result, we recommend setting your YouTube API key in Ansible's +configuration instead. + +To set your YouTube API key by editing JSON files, complete the following +steps. + +#. Find the `edx-platform`_ repository on your Open edX server. If you are + running devstack or fullstack, the directory is + ``/edx/app/edxapp/edx-platform``. + +#. In the directory *above* your repository, there should be several JSON + files, including ``lms.yml`` and ``studio.yml``. If you are running + devstack or fullstack, the directory is ``/edx/app/edxapp``. + +#. Open the ``lms.yml`` file in your text editor. + +#. Find the line for the YouTube API key. + + ``"YOUTUBE_API_KEY": "PUT_YOUR_API_KEY_HERE",`` + + Replace ``PUT_YOUR_API_KEY_HERE`` with your YouTube API key. Verify + that the YouTube API key is between the quotation marks. + +#. Save and close the file. + +#. Open the ``studio.yml`` file and make the same change. If that line does + not exist in this file, create it. + +#. Save and close the file. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/apple_pay.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/apple_pay.rst new file mode 100644 index 000000000..43fb79a85 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/apple_pay.rst @@ -0,0 +1,47 @@ +Apple Pay +######### + +Apple Pay support is available when you use the CyberSource processor. Apple Pay +allows learners to check out quickly without having to manually fill out the +payment form. If you are not familiar with Apple Pay, take a moment to read the +following documents to understand the user flow and necessary configuration. + +* `Apple Pay JS `_ +* `CyberSource Simple Order API `_ + +Apple Pay is available only to learners using Safari on the following platforms: + +* iOS 10+ on devices with a Secure Element +* macOS 10.12+. The user must have an iPhone, Apple Watch, or a MacBook Pro with + Touch ID that can authorize the payment. + +An exhaustive list of devices that support Apple Pay is available on +`Wikipedia `_. + +.. note:: + + The Apple Pay button is not displayed to users with incompatible hardware + and software. + +Settings +-------- +Apple Pay is configured via the ``PAYMENT_PROCESSOR_CONFIG`` dictionary in settings. The following keys are required. + +.. list-table:: + :header-rows: 1 + + * - Name + - Purpose + * - apple_pay_merchant_identifier + - Merchant identifier created at the `Apple Developer portal`_ + * - apple_pay_country_code + - Two-letter `ISO 3166 country code `_ for your + business/merchant account + * - apple_pay_merchant_id_domain_association + - Domain verification text obtained from the `Apple Developer portal`_ + * - apple_pay_merchant_id_certificate_path + - Filesystem path to the merchant identity certificate (used to authenticate with Apple to start sessions). This + file should be kept in a secure location that is only accessible by administrators and the application' + service user. + +.. _Apple Developer portal: https://developer.apple.com/account/ios/identifier/merchant diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/change_processors.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/change_processors.rst new file mode 100644 index 000000000..659af955a --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/change_processors.rst @@ -0,0 +1,33 @@ +.. _Changing Payment Processors: + +############################# +Changing Payment Processors +############################# + + +Payment processors sometimes experience temporary outages. When these outages +occur, you can use Waffle switches to disable the faulty payment processor or +processors, then re-enable them after the outage is over. + +The names of these switches use prefixes that are the value of the +``PAYMENT_PROCESSOR_SWITCH_PREFIX`` setting. By default, this value is +``payment_processor_active_``. The following table lists valid switches and the +payment processors they control. + +.. list-table:: + :widths: 15 45 10 + :header-rows: 1 + + * - Payment Processor + - Switch Name + - Default Value + * - PayPal + - payment_processor_active_paypal + - True + * - CyberSource + - payment_processor_active_cybersource + - True + +In the unlikely event that all payment processors are disabled, the LMS will +display an informative error message explaining why payment is not currently +possible. diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst new file mode 100644 index 000000000..483b88eec --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst @@ -0,0 +1,71 @@ +.. _Gating ECommerce Features: + +#################################### +Gating E-Commerce Service Features +#################################### + +You can release new E-Commerce service features and functionality behind a +feature gate. This project uses the `Waffle`_ library for feature gating. + +**************************** +Types of Feature Gates +**************************** + +Waffle supports the following types of feature gates. + +* Flag: This gate allows you to enable a feature for specific users, groups, + users who meet certain criteria (such as authenticated users or staff), or a + certain percentage of visitors. + +* Switch: This gate is a Boolean that turns a feature on or off for all + users. + +* Sample: This gate allows you to define the probability with which a given + feature will be on. + +For more information about creating or updating features and feature gates, see +the `Waffle documentation`_. + +*************** +Feature Gates +*************** + +Waffle offers the following feature gates. + +.. list-table:: + :widths: 35 10 60 + :header-rows: 1 + + * - Name + - Type + - Purpose + * - user_enrollments_on_dashboard + - Switch + - Display a user's current enrollments on the dashboard user detail page. + * - publish_course_modes_to_lms + - Switch + - Publish prices and SKUs to the LMS after every course modification. + * - async_order_fulfillment + - Sample + - Specify what percentage of orders are fulfilled asynchronously. + * - ENABLE_CREDIT_APP + - Switch + - Enable the credit checkout page, from which learners can purchase credit + in a course. + * - ENABLE_NOTIFICATIONS + - Switch + - Enable email notifications for a variety of user actions, such as when + an order is placed. + * - PAYPAL_RETRY_ATTEMPTS + - Switch + - Enable users to retry unsuccessful PayPal payments. + +********************************** +Enable a Feature Permanently +********************************** + +If you want to make a feature permanent, remove its feature gate from relevant +code and tests, and delete the gate from the database. + + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/index.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/index.rst new file mode 100644 index 000000000..187af647b --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/index.rst @@ -0,0 +1,29 @@ +.. _Additional Ecommerce Features: + +################################ +Additional E-Commerce Features +################################ + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + +After you install the basic features of the E-Commerce service on your instance +of the Open edX platform, you can enable or install additional features. You +can set up E-Commerce to send email, switch payment processors, or track event +data if one of your usual processors is unavailable. + +.. toctree:: + :maxdepth: 2 + + send_notifications + change_processors + apple_pay + track_data + gate_ecommerce + maintain_ecommerce + + + +.. Moved globalization.rst to desktop/Works In Progress folder, pending +.. possible move to ICRV. + diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/maintain_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/maintain_ecommerce.rst new file mode 100644 index 000000000..6198fb9e6 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/maintain_ecommerce.rst @@ -0,0 +1,35 @@ +.. _Maintaining ECommerce: + +#################################### +Maintaining the E-Commerce Service +#################################### + +Most of the time, you do not have to perform maintenance on the E-Commerce +service. However, E-Commerce creates **basket** objects to track products that +users want to purchase before users place an order. As more baskets and orders +are created, the baskets table can grow large. Depending on your database +backend, a large table can become difficult to manage and migrate. After an +order is placed, you can delete the corresponding basket from the baskets +table. + +To delete one or more baskets, follow these steps. + +.. note:: + Baskets that contain products but that are not used to create orders, such as + when a user adds a product to a basket but does not complete the order + process, are not deleted. These baskets provide records that users intended to + purchase a product. + +#. To display the number of baskets that you can delete, run the following + command. + + .. code-block:: bash + + $ ./manage.py delete_ordered_baskets + +#. To delete all the baskets that appear after you run the command in step 1, + use the --commit option. + + .. code-block:: bash + + $ ./manage.py delete_ordered_baskets --commit diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst new file mode 100644 index 000000000..6cfcd4fa0 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst @@ -0,0 +1,61 @@ +.. _Sending Notifications: + +####################### +Sending Notifications +####################### + +The edX E-Commerce service uses the `Communications API`_ that is part of +`Oscar`_ to create and send notifications in the form of email messages. To +send notifications, you must set up notifications, create one or more email +messages, and then send the email messages. + +************************* +Set Up Notifications +************************* + +#. Enable the E-Commerce service to send notifications. To do this, change the + value of the ``ENABLE_NOTIFICATIONS`` feature flag to True. +#. Define communication type codes to refer to particular types of + notification. For example, you might define a communication type code named + ``COURSE_SEAT_PURCHASED`` to correspond to the purchase of a course seat. + +************************* +Create an Email Message +************************* + +The E-Commerce service can send both HTML and plain text email messages. To +create an email message, create the following three files in the +``ecommerce/ecommerce/templates/customer/emails/`` folder. + + * An HTML template that extends ``email_base.html`` and includes the body of + the email. + * A plain text file that contains the email's subject line. + * A plain text file that contains the body of the email. + +Use the following convention to name these files. + +``commtype_{communication type code}_body.html`` + +For example, if the communication type code is ``course_seat_purchased``, the +three files would have the following names. + +* ``commtype_course_seat_purchased_body.html`` +* ``commtype_course_seat_purchased_body.txt`` +* ``commtype_course_seat_purchased_subject.txt`` + +.. note:: + To add a custom email body, override ``block body`` in the email_base.html + file. To add a custom footer, override ``block footer`` in the email_base.html + file. + +******************* +Send Email Messages +******************* + +To send email messages, use the ``send_notification(user, commtype_code, +context)`` method. This method is implemented in +``ecommerce/ecommerce/notifications/notifications.py``. + + + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst new file mode 100644 index 000000000..1cc0a23c8 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst @@ -0,0 +1,12 @@ +.. _Tracking Data: + +################### +Tracking Data +################### + +The E-Commerce service uses `Segment`_ to collect business intelligence data. + +To emit events to your Segment project, specify your Segment project's API key +as the value of the ``SEGMENT_KEY`` setting. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst new file mode 100644 index 000000000..969be998f --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst @@ -0,0 +1,650 @@ +.. _Create and Manage Coupons: + +################################## +Create and Manage Coupons +################################## + +This topic covers how to create and distribute coupons and their associated +coupon codes. You can use coupons to provide discounted or free course +enrollments, also called "course seats", to your learners. + +.. contents:: + :depth: 1 + :local: + +.. _Create a Coupon: + +*************** +Create a Coupon +*************** + +To create a coupon, you create one or more coupon codes that learners use to +receive their discounts. You then use your email system to distribute the +discount or enrollment codes for that coupon. + +Creating a coupon code has several steps. + +.. contents:: + :depth: 1 + :local: + +You create coupons and their associated discount or enrollment codes on the +**Create New Coupon** page in the E-Commerce Coupon Administration tool, which +is located at ``http://localhost:8002/coupons/``. In the tool, you enter basic +information and select the options for your coupon. + +.. _Enter Basic Coupon Information: + +=============================== +Enter Basic Information +=============================== + +Each coupon requires some basic information. To enter basic information for +your coupon, follow these steps. + +#. Start the E-Commerce Service on your site. For details, see :ref:`Start + ECommerce Service`. + +#. In a browser on your E-Commerce server, go to + ``http://localhost:8002/coupons/`` to access the E-Commerce Coupon + Administration tool. + +#. On the **Coupon Codes** page, select **Create Coupon**. + +#. On the **Create New Coupon** page, enter the following information. + + * **Coupon Name**: The name you want to give the coupon, such as "January + 15% Promotion". The name must have fewer than 30 characters. + * **Category**: A list of possible classifications for your coupon, + such as "Course Promotion" and "Financial Assistance". Categories + can help you keep track of your coupons. + * **Valid from** and **Valid until**: The dates and times when the discount + or enrollment code is valid for use. The time zone is set to Universal + Coordinated Time (UTC). + * **Email Domains**: Optional. A list of comma separated domains. If + specified, only users registered with an email address that matches can + use the coupon. If null, any user can use the coupon. + * **Discount Value**: The discount that you want to apply to the course fee, + specified as a percentage between 1% and 99% or a fixed amount in U.S. + dollars. + * **Client**: The name of the organization that you create the codes for. + Note that the current system cannot automatically send this organization + an invoice for the codes you create. For more information, see + :ref:`Specify Invoicing Options` and :ref:`View the Invoice for a Coupon`. + * **Note** (optional): Any additional information that you want to add to + your coupon, such as why the coupon was created. The note is visible on + the coupon page in the coupon administration tool and in the .csv file for + the coupon. It is not visible to learners. + * **Tax Deducted Source (TDS)**: This field is not yet active. + +After you specify basic information for your coupon, you must specify the +coupon code type. + +.. _Specify the Coupon Code Type: + +=============================== +Specify the Coupon Code Type +=============================== + +In addition to entering basic information, you must specify a coupon code type. +The coupon code type is either "enrollment code" or "discount code". + +* An enrollment code covers the entire fee for a course seat. +* A discount code offers between 1% and 99% or a fixed dollar amount off the + fee for a course seat. + +A "course seat" is a single course enrollment in a specific course track. + +To specify the coupon code type, follow these steps. + +#. For **Code Type**, select **Enrollment Code** if you want the coupon code to + cover the entire course fee, or select **Discount Code** if you want to + provide a discount for the course. + +#. If you selected **Enrollment Code**, locate the **Number of Codes** field, + and then enter the number of enrollment codes that you want to create. + + If you selected **Discount Code**, the following fields are visible. + + * **Discount per Code** (required): Enter the percent or U.S. dollar amount + of the discount that you want to offer, then select **Percent** or + **Fixed**. Do not add a percent sign or a dollar sign. + + * **Code** (optional): If you want to specify your own discount code, such + as ``SCHOLAR15``, enter the code that you want in this field. This code + can have 1 to 16 characters. + + If you want the system to generate a discount code for you, leave this + field empty, and then enter the number of discount codes that you want to + create in the **Number of Codes** field. + +After you complete this step, you must specify the courses that you want your +coupon to apply to. + +.. _Coupons Specify Courses: + +================== +Specify Courses +================== + +In addition to specifying your coupon's code type, you must specify the courses +for your coupon. Your coupon can apply to a single course or to multiple +courses. + +.. note:: + If you want your coupon to apply to multiple courses, you must use the edX + Course Catalog API. The Course Catalog API is in beta and is not documented + or fully supported. + +To specify the courses for your coupon, follow these steps. + +#. On the **Create New Coupon** page, select **Single Course** or **Multiple + Courses**. + +#. Specify the courses for your coupon. + + If you selected **Single Course**, follow these steps. + + #. For **Course ID**, enter the ID of the course that you want. To find the + course ID, open the course administration tool at + ``http://localhost:8002/courses``, select your course name in the list of + courses, and then locate the **Course ID** field on the page for the + course. + + #. For **Seat Type**, select the type of seat for the coupon. A "seat" is + a single course enrollment in a specific course track. For example, the + seat type might be "verified" or "professional". The options for this + field appear after you enter a valid value in the **Course ID** field. + + If you selected **Multiple Courses**, follow these steps. + + #. In the **Valid for** field, enter a query to retrieve the courses that + you want. For more information about creating a query, see :ref:`Create a + Query for Multiple Courses`. + + To see a preview of the results that your query will return, enter your + query in the **Valid for** field, and then select **Preview**. A dialog + box opens that lists the courses in your query results. + + #. For **Seat Types**, select **Non-credit** or **Credit**. + + If you select **Non-credit**, you must also select **Verified**, + **Professional**, or both. + +After you complete these steps, you must :ref:`specify usage limitations for +your coupon `. + +.. _Create a Query for Multiple Courses: + +Create a Query for Multiple Courses +************************************* + +.. note:: + To create a query, you must use the edX Course Catalog API. The Course + Catalog API is in beta and is not documented or fully supported. + +The coupon administration tool uses queries to return a catalog of courses. The +coupons that you create apply to each course in that catalog. + +These queries use the following syntax. + +``field_name:search_terms`` + +Your query can contain operators such as quotation marks ("), asterisks (*), +and hyphens (-). + +For example, your query might resemble one of the following queries. + +:: + + org:(Company OR University) + + org:(-Company OR -University) + + start:[2016-01-01 TO 2016-12-31] + + number:6.002x* + +For more information about queries, including syntax and operators, see `Query +string syntax`_. + +The following table lists the field names that you can use in your query, along +with a description for each field name. + +.. list-table:: + :widths: 25 60 + :header-rows: 1 + + * - Field Name + - Description + * - ``announcement`` + - The date the course is announced to the public, in YYYY-MM-DD format. + * - ``end`` + - The course run end date, in YYYY-MM-DD format. + * - ``enrollment_end`` + - The enrollment end date, in YYYY-MM-DD format. + * - ``enrollment_start`` + - The enrollment start date, in YYYY-MM-DD format. + * - ``key`` + - The course run key, sometimes also called the course ID. + * - ``language`` + - The language in which the course is administered. + * - ``max_effort`` + - The estimated maximum number of hours necessary to complete the course. + * - ``min_effort`` + - The estimated minimum number of hours necessary to complete the course. + * - ``number`` + - The course number (for example, 6.002x). + * - ``org`` + - The organization associated with the course (for example, MITx). + * - ``pacing_type`` + - The pacing for the course run. Options are ``instructor_paced`` or + ``self_paced``. + * - ``start`` + - The course run start date, in YYYY-MM-DD format. + * - ``title`` + - The course title. + +.. _Specify Coupon Usage Limitations: + +=========================== +Specify Usage Limitations +=========================== + +In addition to specifying courses for your coupon, you must specify usage +limitations. Usage limitations control whether one or more customers can use +the coupon, as well as the number of times each customer can use the coupon. + +To specify usage limitations, follow these steps. + +#. On the **Create New Coupon** page, locate **Usage Limitations**. + +#. Select one of the following options. + + * **Can be used once by one customer** + + If you select this option, the **Number of Codes** field is visible. In + this field, specify the number of individual discount or enrollment codes + you want to create. The value must be between 1 and 1000. Make sure that + you create enough discount or enrollment codes so that each person receives + one code. + + * **Can be used once by multiple customers** or + * **Can be used multiple times by multiple customers** + + If you select one of these options, the **Maximum Number of Uses** field is + visible. In this field, specify the number of times customers can use the + coupon code. + + For example, if you want to create a single coupon code that is available + for use by 10 different customers, and each customer can use the code + only one time, select **Can be used once by multiple customers** , ``1`` + for **Number of Codes**, and ``10`` for **Maximum Number of Uses**. + + If you want to create a coupon code that is available for 10 uses, + whether by one customer or multiple customers, select **Can be used + multiple times by multiple customers**, ``1`` for **Number of Codes**, + and ``10`` for **Maximum Number of Uses**. + +After you specify usage limitations, you must specify invoicing options for +your coupon. + +.. _Specify Invoicing Options: + +=========================== +Specify Invoicing Options +=========================== + +In addition to setting usage limitations for your coupon, you must specify +invoicing options. You can send an invoice when you create the coupon or after +one or more customers have redeemed the coupon. The invoice can be for the +total amount or for part of the total amount. + +To specify the way you want to invoice your client, follow these steps. + +#. On the **Create New Coupon** page, locate **Invoice Type**. + +#. Select one of the following options. + + * **Already invoiced**: Select this option if you have already sent an + invoice to your client. + + If you select this option, you must also enter information in the + following fields. + + * **Invoice Number**: Your internal invoice number. + + * **Invoice Amount**: The amount that you have already invoiced the + client. + + * **Payment Date**: The date when payment is due from the client. + + * **Invoice after redemption**: Select this option if you will send an + invoice to your client after one or more coupon codes have been redeemed. + + * **N/A**: Select this option if neither of the other options + applies to your situation. + + +=============================== +Finish and Review Coupon +=============================== + +* After you have :ref:`entered all the basic coupon information ` and specified the options that you want, select **Create + Coupon**. + +When you select **Create Coupon**, the system generates one or more discount or +enrollment codes as well as the URLs where users can redeem these codes. + +When the system has finished generating the coupon, a page for the coupon +opens. This page lists the information for your coupon, including all discount +or enrollment codes for the coupon, the coupon's status, URLs where users can +redeem the codes, dates the coupon is valid, and the course that the coupon +applies to. You can also :ref:`download a .csv file with the coupon information +` from this page. + +.. _Download Coupon Information: + +*********************************** +Download Coupon Information +*********************************** + +After you create a coupon, you can download a .csv file that lists the +information that you entered when you created the coupon. The .csv file also +includes additional information, such as the discount or enrollment codes that +are associated with your coupon and the system-generated URL where a user can +redeem each code. + +#. In your browser, go to ``http://localhost:8002/coupons/`` to open the coupon + administration tool. +#. On the **Coupon Codes** page, locate the coupon that you want in the table, + and then select the name of the coupon. The page for the coupon opens. +#. On the page for the coupon, select **Download**. Your .csv file begins + downloading automatically. + +The .csv file for your coupon lists the following information. + +.. list-table:: + :widths: 25 60 + :header-rows: 1 + + * - **Coupon Name** + - The name of the coupon. + * - **Code** + - The 16-digit alphanumeric discount or enrollment code. The .csv file + lists at least one entry for each code. The system creates an additional + entry for the code each time the status of the code changes (for + example, when the status changes from **Active** to **Redeemed**). + * - **Maximum Coupon Usage** + - The number of times that the discount code or enrollment code that is + associated with the coupon can be used. For single-use coupons, this + value is 1. For multi-use coupons, this is the value that you specified + in the **Maximum Number of Uses** field. + * - **Redemption Count** + - The number of times the coupon has been redeemed. The initial value is + 0, and the value is incremented each time that a discount code or + enrollment code for the coupon is redeemed. + * - **Coupon Type** + - The type of coupon code associated with this coupon. Possible values are + **Enrollment** and **Discount**. + * - **URL** + - The URL where the user redeems the coupon code. + * - **Catalog Query** (for multi-course coupons only) + - The query that was used to determine which courses the coupon applies + to. + * - **Course Seat Types** (for multi-course coupons only) + - The seat type that the coupon applies to. For example, the seat type + might be "verified" or "professional". For more information about seat + types, see :ref:`Coupons Specify Courses`. + * - (for single-course coupons only) **Course ID** + - The ID of the course that the coupon applies to. + * - (for single-course coupons only) **Organization** + - The organization that provides the course. + * - **Client** + - The organization that purchased the coupon codes. + * - **Category** + - The value that you selected for the **Category** field when you created + the coupon. + * - **Note** + - The text, if any, that you entered in the **Note** field when you + created the coupon. + * - **Price** + - The regular fee for the course. + * - **Email Domains** + - The email domains allowed to use this coupon. + * - **Invoiced Amount** + - The text, if any, that you entered in the **Total to Invoice to Client** + field when you created the coupon. + * - **Discount Percentage** + - The percent discount, if any, that you specified when you created the + coupon. + * - **Discount Amount** + - The dollar amount discount, if any, that you specified when you created + the coupon. + * - **Status** + - The status of the coupon. Possible values are **Active**, **Redeemed**, + or **Expired**. + * - **Order Number** + - The order number associated with the redemption of the enrollment or + discount code. + * - **Redeemed By Username** + - The username of the customer who redeemed the enrollment or discount + code. + * - (for multi-course coupons only) **Redeemed for Course ID** + - The course ID of the course for which the coupon was redeemed. + * - **Created By** + - The username of the user who created the coupon. + * - **Create Date** + - The date the coupon was created. + * - **Coupon Start Date** + - The first date the coupon can be used. + * - **Coupon Expiry Date** + - The last date the coupon can be used. + + +.. _Edit Coupons: + +************* +Edit a Coupon +************* + +You edit a coupon by using the coupon administration tool. + +.. note:: + You cannot edit the following fields. + + * **Code Type** + * **Course ID** + * **Single course** or **Multiple courses** + * **Seat Type** + * **Usage Limitations** + * **Number of Codes** or **Maximum Number of Uses** + +#. In your browser, go to ``http://localhost:8002/coupons/`` to open the coupon + administration tool. + +#. On the **Coupon Codes** page, locate the coupon that you want in the table, + and then select the name of the coupon. The page for the coupon opens. + +#. On the page for the coupon, select **Edit Coupon**. + +#. Make the changes that you want. + +#. Select **Save Changes**. + +.. _Deactivate Coupons: + +************************ +Deactivate a Coupon +************************ + +To deactivate a coupon, change the **Valid from** and **Valid until** date +fields so that both dates are in the past. For more information, see :ref:`Edit +Coupons`. + + +.. _Distribute Coupon Codes: + +*************************************** +Distribute Coupon Codes to Learners +*************************************** + +You can distribute both discount codes and enrollment codes to learners in two +ways. + +* You provide a coupon code that learners enter on the **Checkout** page for + the verified or professional certificate track. If you do this, edX + recommends that you also provide the URL for the course About page to make + signing up for the course easier. + +* You provide a URL for an offer landing page. This automatically generated + page presents information about the course, lets the learner know that the + coupon code has been applied, and provides the opportunity for the learner to + enroll. Learners can access this URL if they do not have an edX account or + they are not signed in. However, learners must sign in or create an edX + account to redeem the coupon and enroll in the course. + + A URL for an offer landing page has the following format. + + ``http://localhost:8002/coupons/offer/?code=################`` + +.. note:: + If the coupon code is a discount code, the learner must pay any balance due + before enrolling in the course for a verified or professional certificate. + +To distribute the coupon code or URL to learners, you determine the coupon code +or the URL for the learner to use, and then you create and send an email that +includes the coupon code or the URL. For suggestions for email message text, +see :ref:`Example Email Messages`. + +.. _Find a Coupon Code or URL: + +=========================== +Find a Coupon Code or URL +=========================== + +You can find coupon codes, whether discount codes or enrollment codes, and +their associated URLs in two places: on the page for the coupon in the coupon +administration tool, and in a downloadable .csv file. You can use either option +to find the coupon code or URL for your learners. + + +Find a Code or URL on the Coupon Page +************************************* + +To find a coupon code or URL on the page for the coupon in the coupon +administration tool, follow these steps. + +#. In your browser, go to ``http://localhost:8002/coupons/`` to open the coupon + administration tool. +#. On the **Coupon Codes** page, locate the coupon that you want in the table, + and then select the name of the coupon. The page for the coupon opens. +#. On the page for the coupon, locate the table under **Codes**. +#. In the table, locate the information that you want. + + * For a coupon code that the learner will enter on the **Checkout** page, + use the value in the **Code** column. + + * For an offer landing page, use the URL in the **Redemption URL** column. + +Find a Code or URL in a Downloaded File +*************************************** + +To find a coupon code or URL in the .csv file for a coupon, follow these steps. + +#. :ref:`Download a .csv file ` that lists + the information for your coupon, and then open the .csv file. +#. In the .csv file, locate the information that you want. + + * For a coupon code that the learner will enter on the **Checkout** page, + use the value in the **Code** column. + + * For an offer landing page, use the URL in the **URL** column. + +.. _Send an Email Message: + +=========================== +Send an Email Message +=========================== + +After you :ref:`locate the coupon code or URL ` that +you want to use, you use your email system to provide that information in a +message to potential learners. + +.. note:: + When you send a coupon code for a learner to use on the **Checkout** page, + edX recommends that you include the About page URL for the course as well + as the coupon code to help the learner enroll more easily. + + +.. _Example Email Messages: + +Example Email Messages +************************ + +You can use the following email messages as examples of the communication that +you send to your learners. + +If Learners Enter a Coupon Code on the Checkout Page +==================================================== + +.. code:: + + Dear learner, + + This message includes a discount code for edX101: Overview + of Creating an edX Course. For more information about the course, see + https://www.edx.org/course/overview-creating-edx-course-edx-edx101. + + To redeem this code, sign up for a verified certificate, and + then enter the following coupon code in the **Coupon Code** field on the + **Checkout** page: + + ZDPC3AQV3732RQT5 + + We look forward to learning with you! + + The edX101 course team + + +If Learners Visit an Offer Landing Page +======================================= + +.. code:: + + Dear learner, + + This message includes a discount code for edX101: Overview + of Creating an edX Course. To redeem this code and enroll in the course, visit + the following URL: + + http://localhost:8002/coupons/offer/?code=ZDPC3AQV3732RQT5 + + We look forward to learning with you! + + The edX101 course team + +.. _View the Invoice for a Coupon: + +******************************** +View the Invoice for a Coupon +******************************** + +When you create a coupon, the E-Commerce service generates and fulfills an +order. The Invoice Payment Processor module in the service then records the +fulfilled order. Because the Invoice Payment Processor module assumes that you +have sent or will send an invoice to the client who purchased the coupon, the +module also records the order in the Invoice table in the Django administration +panel so that you can view and reconcile the order. + +To view your coupon invoices in the Invoice table, go to +``http://localhost:8002/admin/invoice/invoice/``. The table lists all of the +invoices for your coupons, along with information such as the client name and +the invoice status. + +For more information about the way that the E-Commerce service manages orders, +see :ref:`Manage Orders`. + +.. include:: ../../../../links/links.rst + diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst new file mode 100644 index 000000000..cbe04c69d --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst @@ -0,0 +1,76 @@ +.. _Create Course Seats: + +#################### +Create Course Seats +#################### + +A course seat represents an enrollment track, sometimes called an enrollment +mode. For information about the enrollment tracks that edX offers, see +:ref:`enrollment track`. + +You create course seats by creating a course on the **Create New Course** page +in the E-Commerce Course Administration tool, which is located at +``http://localhost:8002/courses/``. After you create a course, the E-Commerce +service creates the course seats that are associated with that course. + +To create a course seat, follow these steps. + +#. Start the E-Commerce Service on your site. For details, see :ref:`Start + ECommerce Service`. + +#. In a browser on your E-Commerce server, go to + ``http://localhost:8002/courses/`` to access the E-Commerce Course + Administration tool. + +#. On the **Courses** page, select **Add New Course**. + +#. On the **Create New Course** page, enter the following information for your + course. + + * Course ID + * Course Name + * Course Type + * Course Seats + * Bulk :ref:`Enrollment Code` Yes/No + + For **Course Type**, select a course type and the options for that course + type. + + * If you select **Free (Audit)**, you must specify whether you want to + allow honor code learners to earn an honor code certificate. To do this, + select **Yes** under **Include Honor Seat**. + + * If you select **Verified**, you must add the following information. + + * **Price (in USD)** + * **Upgrade Deadline** + * **Verification Deadline** + * **Include Honor Seat**: This option grants honor code certificates to + learners who successfully complete the course. + + * If you select **Professional Education**, you must add the following + information. + + * **Price (in USD)** + * **ID Verification Required?** + * **Upgrade Deadline** + + * **Verification Deadline**: This option is required if you select + **Yes** for **ID Verification Required?** + + * If you select **Credit**, you must add the following information. + + * **Price (in USD)**: The price for a verified certificate. + * **Upgrade Deadline** + * **Credit Provider** + * **Price (USD)**: The price for course credit. + * **Credit Hours** + * **Upgrade Deadline** + * **Verification Deadline** + * **Include Honor Seat**: This option grants honor code certificates to + learners who successfully complete the course. + + +#. Select **Create Course**. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst new file mode 100644 index 000000000..d20942e4d --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst @@ -0,0 +1,64 @@ +.. _Enable and Create Enrollment Codes: + +##################################### +Enable and Create Enrollment Codes +##################################### + +Enrollment codes allow users to purchase bulk enrollments for a course. + +.. note:: + + Enrollment codes used for bulk enrollments, as described in this topic, are + not related to the "enrollment code" coupon code type that is referred to in + the :ref:`Create and Manage Coupons` topic. + + +************************ +Enable Enrollment Codes +************************ + +Before you create enrollment codes that can be used for bulk enrollments for a +course, you must enable enrollment codes in the E-Commerce service and in +individual courses. + +#. To enable enrollment codes in the E-Commerce service, run the site + configuration command together with the following option. + + :: + + ``--enable-enrollment-codes=True`` + + For more information, see :ref:`Add Another Site Partner and Site + Configuration`. + +#. To enable enrollment codes in individual courses, follow these steps. + + #. Follow step 1 through step 5 in :ref:`Create Course Seats` to access and + select options on the **Add New Course** page. Do not select **Create + Course** after you complete step 5. + #. Select **Include Enrollment Code**. + #. Select **Create Course**. + +After you select **Create Course**, enrollment codes are enabled for that +course. + +************************ +Create Enrollment Codes +************************ + +#. Go to the enrollment page for the course. +#. On the enrollment page, select **Buy enrollment**. Do not select **Enroll in + the course**. + + The basket page opens. + +#. For **Number of Enrollment Codes**, enter the number of enrollment codes + that you want. Each enrollment code is for one course seat. +#. Select **Purchase**. + +After you select **Purchase**, you receive an e-mail message that contains a +link to a .csv file. The .csv file lists the enrollment codes. + + + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst new file mode 100644 index 000000000..10f2c47a6 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst @@ -0,0 +1,57 @@ +.. _Create Products Overview: + +########################### +Creating Products Overview +########################### + +The edX platform offers several types of products. You create these products in +E-Commerce web pages. + +* Course seats represent an :ref:`enrollment track`. Each + course seat has an associated set of attributes, such as price and + certificate availability. The edX code uses course seats to determine how a + given enrollment should be handled. For more information, see :ref:`Create + Course Seats`. + +* Coupons allow you to offer learners a discount, either percentage or fixed + amount, on a course enrollment. For more information, see :ref:`Create and + Manage Coupons`. + +* Enrollment codes allow users to purchase bulk enrollments for a course. For + more information, see :ref:`Enable and Create Enrollment Codes`. + +* Programs are collections of related courses. Learners can enroll in and + purchase courses separately, or you can configure programs to allow one- + click purchasing of all courses in a program. For more information, see + :ref:`Programs`. + + +.. _Start ECommerce Service: + +****************************** +Start the E-Commerce Service +****************************** + +Before you can create a product, you must start the E-Commerce service on your +site. Follow these steps to start the E-Commerce service. + +#. In the ecommerce and LMS configuration files (``/edx/etc/ecommerce.yml`` and + ``/edx/app/edxapp/lms.yml``, respectively), verify the following + settings. + + .. note:: + If you are using `devstack`_, these values are set correctly for you. + However, edX recommends that you verify these values. + + * The ``EDX_API_KEY`` value in the LMS file must be the same as the + ``EDX_API_KEY`` value in the ecommerce file. If the values differ, change + the value in the LMS file to match the ecommerce file. + * The ``ECOMMERCE_API_SIGNING_KEY`` value in the LMS file must be the same + as the ``JWT_SECRET_KEY`` value in the ecommerce file. If the values + differ, change the value in the LMS file to match the ecommerce file. + +#. On devstack, start the E-Commerce server on port 8002, and start the LMS + on port 8000. + + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst new file mode 100644 index 000000000..4e990c582 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst @@ -0,0 +1,50 @@ +.. _Create Program Offers: + +##################### +Create Program Offers +##################### + +Program offers are discounts, either percentage or fixed amount discounts, that +apply to a specific program. When a program offer is active for a program, the +program's price appears discounted both on the program's purchase button and on +the e-commerce checkout page. + +You create program offers on the **Create Program Offer** page in the E-Commerce +Program Offers Administration tool, which is located at +``http://localhost:8002/programs/offers``. + +.. note:: Each program can be associated with only one program offer. + To offer a new discount, edit the existing program offer for your program. + +To create a program offer, follow these steps. + +#. Start the E-Commerce Service on your site. For details, see :ref:`Start + ECommerce Service`. + +#. Obtain the Program UUID for the program for which you are creating an offer. + Find your program's UUID in the Discovery Service Django administration site, + under **Course Metadata > Programs**. + +#. In a browser on your E-Commerce server, go to + ``http://localhost:8002/programs/offers/`` to access the E-Commerce Program + Offers Administration tool. + +#. On the **Program Offers** page, select **Create Program Offer**. + +#. On the **Create Program Offer** page, enter the following information for + your program offer. + + * Program UUID + * Start Date + * End Date + * Discount Type - either percentage or absolute. + * Discount Value - the value of the discount based on the discount type. + +.. note:: To ensure that your program discount is reflected even when only some, + not all, of a program's courses are in a learner's basket for checkout, you + must select the **Enable Partial Program Offer** setting in the E-Commerce + Service Django Administration site, under **Core > Site configurations**. + +#. Select **Create Program Offer**. + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst new file mode 100644 index 000000000..3372923be --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst @@ -0,0 +1,90 @@ +.. _Programs: + +################ +About Programs +################ + +Programs are collections of related courses that you make available on your +marketing site. Each program is of a particular type. + +The cost for a program is the sum of the cost for each of its courses. You can +change the cost for a program by creating a program offer, which is a discount +on the program price of either a percentage or fixed amount. For more details, +see :ref:`Create Program Offers`. + + +******************** +Create Program Types +******************** + +You add program types in the Discovery Service Django administration site for +your Open edX instance. + +To add a program, follow these steps. + +#. Sign into the Discovery Service Django Administration site for your Open + edX instance. For example, ``https:///admin/``, or + ``localhost:18381`` if you are testing locally. + +#. In the **Course Metadata** section, select **Program types**. + +#. Select **Add Program Type**. + +#. On the **Add program type** page, specify a name for the new program type, + and select the seat types that are applicable to programs of this type. + +#. Optionally, add a program logo image and a slug for this program type for + use on the marketing site. + +#. When you have finished entering information for the program type, select one of + the **Save** options: **Save**, **Save and add another**, or **Save and + continue editing**. + + You can now specify this program type when you create new programs. + + +*************** +Create Programs +*************** + +You add programs and specify the courses that are in each program in the +Discovery Service Django administration site for your Open edX instance. + +To add a program, follow these steps. + +#. Sign into the Discovery Service Django Administration site for your Open + edX instance. For example, ``https:///admin/``, or + ``localhost:18381`` if you are testing locally. + +#. In the **Course Metadata** section, select **Programs**. + +#. Select **Add Program**. + + On the **Add Program** page, a UUID is assigned to the new program. + +#. Enter information for the new program. Required fields, for example + **Title**, **Status** and **Type**, have boldface names. + + * In the **Courses** field, specify the courses that are part of the program. + Names of current courses are automatically matched as you continue to type. + To add a course that does not currently exist, click the plus sign (+) next + to the field to create a new course. + + * To allow learners to purchase upgrades to the verified track for all + the courses in the program with one click, select **One click purchase + enabled**. + +#. When you have finished entering information for the program, select one of + the **Save** options: **Save**, **Save and add another**, or **Save and + continue editing**. + +.. This procedure completes the course and program structure. To provide "site +.. functionality" for programs, the LMS and the marketing site also need to know +.. about the program and the program offer, if any, that is associated with the +.. program. + +.. Discovery service? + + + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst new file mode 100644 index 000000000..51fb5c67f --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst @@ -0,0 +1,25 @@ +.. _Create Ecommerce Products: + +############################ +Create E-Commerce Products +############################ + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + +After you :ref:`configure a partner and at least one site ` for the E-Commerce service to use, and you +have compiled and moved your static assests, you can create products. For more +information, see the following topics. + +.. toctree:: + :maxdepth: 2 + + create_products_overview + create_course_seats + create_coupons + create_enrollment_codes + create_programs + create_program_offers + +.. include:: ../../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst new file mode 100644 index 000000000..a03eca72f --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst @@ -0,0 +1,47 @@ +.. _Enable the ECommerce Receipt Page: + +########################################## +Enable the E-Commerce Service Receipt Page +########################################## + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + +The E-Commerce service includes a receipt page that you can display to users +after their orders are complete. + +.. contents:: + :depth: 1 + :local: + +.. _Enable the Receipt Page: + +*********************** +Enable the Receipt Page +*********************** + +To enable the default receipt page for the E-Commerce service, follow these +steps. + +#. Sign in to the LMS Django administration console for your base URL. For + example, ``http://{your_URL}/admin``. + +#. On the **Site Administration** page, locate **Site_Configuration**. + +#. In the **Site_Configuration** section, next to **Site configurations**, + select **Change**. + +#. On the **Change site configuration** page, locate the **Values** field, and + then add the following JSON format value. + + :: + + { + "ECOMMERCE_RECEIPT_PAGE_URL":"/checkout/receipt/?order_number=" + } + +#. Select **Save**. + + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst new file mode 100644 index 000000000..693e6c712 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst @@ -0,0 +1,49 @@ +.. _Adding ECommerce (Deprecated) to Open edX: + +######################################################### +Adding E-Commerce (Deprecated) to the Open edX Platform +######################################################### + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + +edX uses a Django application called ``ecommerce`` to provide the platform with +ecommerce functionality. This `E-Commerce service`_ extends `Oscar`_, an open +source Django ecommerce framework, to manage the edX product catalog and handle +orders for those products. The following sections describe how to install and +use the E-Commerce service with the Open edX platform. + +To complete the procedures that this section describes, you use both the +E-Commerce Service's Django administration site and the E-Commerce +Administration Tool (CAT). The CAT is a web app that is included with the +E-Commerce service and enables you to configure and manage products that are +associated with the courses and programs on your instance of the Open edX +learning management system (LMS). + +In addition to these required steps, you can add optional features to the +E-Commerce service for your instance of the Open edX platform. For more +information, see :ref:`Additional Ecommerce Features`. + + +.. toctree:: + :maxdepth: 2 + + install_ecommerce + theming + manage_assets + create_products/index + enable_receipt_page + manage_orders + test_ecommerce + additional_features/index + internationalization + + + +.. include:: ../../../links/links.rst + +.. TODO +.. - Oscar Dashboard +.. - Payment processors +.. - API +.. - Course Administration Tool diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst new file mode 100644 index 000000000..1fd91f5be --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst @@ -0,0 +1,356 @@ +.. _Install and Start ECommerce: + +######################################## +Install and Start the E-Commerce Service +######################################## + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + +To install and start the edX E-Commerce service, you must complete the +following steps. + +.. contents:: + :depth: 1 + :local: + +.. _Set Up a Virtual Environment: + +**************************** +Set Up a Virtual Environment +**************************** + +#. Create or activate a Python virtual environment. You execute all of the + commands described in this section within the virtualenv (unless otherwise + noted). + + For more information, see `Virtual Environments`_. + +#. Run the following command to install dependencies. + + .. code-block:: bash + + $ make requirements + +#. (Optional) Create settings overrides that you do not commit to the + repository. To do this, create a file named + ``ecommerce/settings/private.py``. The ``ecommerce/settings/local.py`` file + reads the values in this file, but Git ignores the file. + +.. _Run Migrations: + +************** +Run Migrations +************** + +To set up the ``ecommerce`` database, you must run migrations. + +.. note:: + Local installations use SQLite by default. If you use another database + backend, make sure you update your settings and create the database, if + necessary, before you run migrations. + +#. To run migrations, execute the following command. + + .. code-block:: bash + + $ make migrate + +When you run migrations, the E-Commerce service adds a default site to your installation. + +.. _Configure OIDC: + +*********************************** +Configure edX OpenID Connect (OIDC) +*********************************** + +The E-Commerce service relies on the edX `OpenID Connect`_ (OIDC) +authentication provider for login. OIDC is built on top of OAuth 2.0. +Currently, the LMS serves as the authentication provider. + +To configure the E-Commerce service to work with OIDC, complete the following +procedures. + +.. contents:: + :depth: 1 + :local: + +.. _Create Register Client: + +============================ +Create and Register a Client +============================ + +To create and register a new OIDC client, follow these steps. + +#. Install and start the Open edX `devstack`_. +#. In your browser, go to ``http://127.0.0.1:8000/admin/oauth2/client/``. +#. Select **Add client**. +#. Leave the **User** field blank. +#. For **Client Name**, enter ``E-Commerce Service``. +#. For **URL**, enter ``http://localhost:8002/``. +#. For **Redirect URL**, enter ``http://127.0.0.1:8002/complete/edx-oidc/``. + This is the OIDC client endpoint. + + The system automatically generates values in the **Client ID** and **Client + Secret** fields. + +#. For **Client Type**, select **Confidential (Web applications)**. +#. Select **Save**. + +=============================== +Designate the Client as Trusted +=============================== + +After you create your client, designate it as trusted. Trusted clients +bypass the user consent form that usually appears after the system validates +the user's credentials. + +To designate your client as trusted, follow these steps. + +#. In your browser, go to + ``http://127.0.0.1:8000/admin/oauth2_provider/trustedclient/add/``. +#. In the **OAuth 2.0 clients** list, select the redirect URL for the client + that you just created. +#. Select **Save**. + +.. _Configure a Site Partner and Site Configuration: + +************************************************* +Configure a Site, Partner, and Site Configuration +************************************************* + +To finish creating and configuring your OIDC client, you must configure a +partner, site, and site configuration for the E-Commerce service to use. The +site that you configure is the default site that the E-Commerce service adds +when you run migrations. You must update this default site to match the domain +that you will use to access the E-Commerce service. You must also set up a site +configuration that contains an ``oauth_settings`` JSON field that stores your +OIDC client's settings, as follows. + +.. list-table:: + :widths: 25 60 20 + :header-rows: 1 + + * - Setting + - Description + - Value + * - ``SOCIAL_AUTH_EDX_OIDC_KEY`` + - OAuth 2.0 client key + - The **Client ID** field in the :ref:`Create + Register Client` section. + * - ``SOCIAL_AUTH_EDX_OIDC_SECRET`` + - OAuth 2.0 client secret + - The value from the **Client Secret** field in the :ref:`Create + Register Client` section. + * - ``SOCIAL_AUTH_EDX_OIDC_URL_ROOT`` + - OAuth 2.0 authentication URL + - For example, ``http://127.0.0.1:8000/oauth2``. + * - ``SOCIAL_AUTH_EDX_OIDC_ID_TOKEN_DECRYPTION_KEY`` + - OIDC ID token decryption key, used to validate the ID + token + - The same value as ``SOCIAL_AUTH_EDX_OIDC_SECRET``. + * - ``SOCIAL_AUTH_EDX_OIDC_ISSUER`` + - OIDC ID token issuer + - For example, ``http://127.0.0.1:8000/oauth2``. + * - ``SOCIAL_AUTH_EDX_OIDC_LOGOUT_URL`` + - User logout URL + - For example, ``http://127.0.0.1:8000/logout``. + + +To configure your default site, partner, and site configuration, use the +appropriate settings module for your environment +(``ecommerce.settings.devstack`` for Devstack, +``ecommerce.settings.production`` for Fullstack) to run the following Django +management command. This command updates the default site and creates a new +partner and site configuration with the specified options. + + .. code-block:: bash + + $ sudo su ecommerce + $ python manage.py create_or_update_site --site-id=1 --site-domain=localhost:8002 --partner-code=edX --partner-name='Open edX' --lms-url-root=http://localhost:8000 --theme-scss-path=sass/themes/edx.scss --payment-processors=cybersource,paypal --client-id=[change to OIDC client ID] --client-secret=[change to OIDC client secret] + +.. note:: + The ``--lms-url-root`` option must start with the desired protocol (e.g. ``http://``). + +.. _Add Another Site Partner and Site Configuration: + +================================================= +Add Another Site, Partner, and Site Configuration +================================================= + +If you want to add more sites, partners, and site configurations, you can use +the ``create_or_update_site`` command. The following options are available for +this command. + +.. list-table:: + :widths: 25 20 60 20 + :header-rows: 1 + + * - Option + - Required + - Description + - Example + * - ``--site-id`` + - No + - Database ID of a site you want to update. + - ``--site-id=1`` + * - ``--site-domain`` + - Yes + - Domain by which you will access + the E-Commerce service. + - ``--site-domain=ecommerce.example.com`` + * - ``--site-name`` + - No + - Name of the E-Commerce site. + - ``--site-name='Example E-Commerce'`` + * - ``--partner-code`` + - Yes + - Short code of the partner. + - ``--partner-code=edX`` + * - ``--partner-name`` + - No + - Name of the partner. + - ``--partner-name='Open edX'`` + * - ``--lms-url-root`` + - Yes + - URL root of the Open edX LMS instance. + - ``--lms-url-root=https://example.com`` + * - ``--theme-scss-path`` + - No + - ``STATIC_ROOT`` relative path of the site's SCSS file. + - ``--theme-scss-path=sass/themes/edx.scss`` + * - ``--payment-processors`` + - No + - Comma-delimited list of payment processors used on the site. + - ``--payment-processors=cybersource,paypal`` + * - ``--client-id`` + - Yes + - OIDC client ID. + - ``--client-id=ecommerce-key`` + * - ``--client-secret`` + - Yes + - OIDC client secret. + - ``--client-secret=ecommerce-secret`` + * - ``--from-email`` + - Yes + - Address from which email messages are sent. + - ``--from-email=notifications@example.com`` + * - ``--enable-enrollment-codes`` + - No + - Indication that specifies whether enrollment codes for seats can be + created. + - ``--enable-enrollment-codes=True`` + * - ``--payment-support-email`` + - No + - Email address displayed to user for payment support. + - ``--payment-support-email=support@example.com`` + * - ``--payment-support-url`` + - No + - URL displayed to user for payment support. + - ``--payment-support-url=https://example.com/support`` + + +To add another site, use the appropriate settings module for your environment +(``ecommerce.settings.devstack`` for Devstack, +``ecommerce.settings.production`` for Fullstack) to run the following Django +management command. This command creates a new site, partner, and site +configuration with the options that you specify. + + .. code-block:: bash + + $ sudo su ecommerce + $ python manage.py create_or_update_site --site-domain=[change me] --partner-code=[change me] --partner-name=[change me] --lms-url-root=[change me] --client-id=[OIDC client ID] --client-secret=[OIDC client secret] --from-email=[from email] + +**************** +Start the Server +**************** + +To complete the installation and start the E-Commerce service, follow these +steps. + +.. note:: + Local installations use SQLite by default. If you use another database + backend, make sure you update your settings and create the database, if + necessary, before you run migrations. + +#. (Devstack only) If you are using devstack, switch to the ``ecommerce`` user + and use the ``ecommerce.settings.devstack`` settings module to run the + following commands. + + .. code-block:: bash + + $ sudo su ecommerce + $ make serve + +#. To run the server, execute the following command. + + .. code-block:: bash + + $ python manage.py runserver 8002 + + .. note:: + If you use a different port, make sure you update the OIDC client by using + the LMS Django Administration site. For more information about + configuring the OIDC client, see :ref:`Configure OIDC`. + + +***************************************** +Switch from ShoppingCart to E-Commerce +***************************************** + +.. note:: The ShoppingCart service was deprecated in the Dogwood release of + Open edX. Ecommerce-related tasks are now handled by the E-Commerce + service. + +If you are upgrading from an earlier version of Open edX, follow these steps +to use the E-Commerce service for ecommerce-related tasks instead of +ShoppingCart. + +#. Sign in to the LMS Administration Django site for your base URL. For example, + ``http://{your_URL}/admin``. + +#. In the **Commerce** section, next to **Commerce configuration**, select + **Add**. + +#. Select **Enabled**. + +#. Select **Checkout on ecommerce service**. + +#. (Optional) In the **Single course checkout page** field, override the + default path value of ``/basket/single-item/`` with your own path value. + + .. important:: If you override the default path value, you must also change + all of the code that relies on that path. + +#. Set the **Cache Time To Live** value in seconds. + +#. Select the site for which you want to enable the E-Commerce service. + +#. Select **Save**. + + +.. _Development Outside Devstack: + +**************************** +Development Outside Devstack +**************************** + +If you are running the LMS in `devstack`_ but would prefer to run the +E-Commerce service on your host, set up a reverse port-forward. This reverse +port-forward allows the LMS process inside your devstack to use +``127.0.0.1:8002`` to make calls to the E-Commerce service running on your +host. This simplifies LMS URL configuration. + +To set up a reverse port-forward, execute the following command when you SSH +into your devstack. Make sure that you run this command on the VM host, not the +guest. + +.. code-block:: bash + + $ vagrant ssh -- -R 8002:127.0.0.1:8002 + + + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/internationalization.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/internationalization.rst new file mode 100644 index 000000000..4a8f85e3d --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/internationalization.rst @@ -0,0 +1,82 @@ +Internationalization +==================== + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + + +Follow the `internationalization coding guidelines`_ in the edX Developer's Guide when developing new features. + +Languages are enabled in the settings file, for example in ``ecommerce/settings/base.py`` + +.. code-block:: python + + LANGUAGES = ( + ('en', _('English')), + ('es', _('Spanish')), + ('es-419', _('Spanish (Latin American)')), + ) + +More details can be found in the `Django documentation for Languages`_. + +.. _E-Commerce Language Negotiation: + +E-Commerce Language Negotiation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Language negotiation for E-Commerce is handled by `Django's Locale Middleware`_. Django's Language Negotiation rules, in +priority order, are as follows. + +#. Language prefix is not enabled by default for the E-Commerce application. +#. LANGUAGE_SESSION_KEY is not used. +#. LANGUAGE_COOKIE_NAME is used to negotiate language. A user's language is set in their account settings in edx-platform which sets the language cookie. The language cookie name that is set for the E-Commerce language should be the same as the language cookie name set in the edx-platform repo. This can be configured in ``ecommerce/settings/base.py``. + + .. code-block:: python + + LANGUAGE_COOKIE_NAME = 'openedx-language-preference' + +#. The Accept-Language HTTP header is used. +#. LANGUAGE_CODE is used as the last resort. This can be set in ``ecommerce/settings/base.py`` + +.. _PayPal Language Negotiation: + +PayPal Language Negotiation +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To enable localization for PayPal, follow these steps. + +#. Sign in to the LMS Django administration console for your base URL. For + example, ``http://{your_URL}/admin``. + +#. On the **Site Administration** page, locate **Waffle**. + +#. In the **Waffle** section, next to **Switches**, select **Add**. + +#. On the **Add switch** page, locate the **Name** field, and then add ``create_and_set_webprofile``. + +#. On the **Add switch** page, select the **Active** checkbox. + +#. Select **Save**. + +A language code for E-Commerce will be taken from a cookie as described in `E-Commerce Language Negotiation`_. When the +language code is fetched from the cookie, only the base language is used. For example, ``es-419`` resolves to ``es``. +PayPal requires a country code. To get the country code, we use the language code to map it to a country. For example, +the language code ``es`` will map to the country code ``MX`` when it is sent to PayPal. To add your language for PayPal, +look up `PayPal's country to language mapping`_ and add it to PAYPAL_LOCALES in ``ecommerce/extensions/payment/constants.py``. + +.. code-block:: python + + PAYPAL_LOCALES = { + 'zh': 'CN', + 'fr': 'FR', + 'en': 'US', + 'es': 'MX', + } + + +If a language fetched from the cookie cannot be found in PAYPAL_LOCALES, the LANGUAGE_CODE is used. If the LANGUAGE_CODE does not exist in PAYPAL_LOCALES, PayPal will use its own language negotiation. + +.. _internationalization coding guidelines: http://edx.readthedocs.io/projects/edx-developer-guide/en/latest/conventions/internationalization/i18n.html +.. _Django's Locale Middleware: https://docs.djangoproject.com/en/2.0/topics/i18n/translation/#how-django-discovers-language-preference +.. _PayPal's country to language mapping: https://developer.paypal.com/docs/classic/api/locale_codes/ +.. _Django documentation for Languages: https://docs.djangoproject.com/en/2.0/ref/settings/#languages + + diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst new file mode 100644 index 000000000..64884cc1b --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst @@ -0,0 +1,48 @@ +.. _Manage Static Assets: + +############################## +Manage Static Assets +############################## + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + + +After you :ref:`configure a partner and at least one site ` for the E-Commerce system to use, you must +compile all static assets and move them to the correct location to be served. +The edX E-Commerce service uses `django-compressor`_ and `RequireJS`_ to manage +static assets. + +* django-compressor compiles and minifies CSS and JavaScript files, + and names files to facilitate cache busting after new file deployment. + +* RequireJS manages JavaScript dependencies. + +.. note:: + + The static file directories are set up so that ``make static`` reads the + build output directory of ``r.js`` before it checks for assets in the + ``ecommerce/static/`` directory. EdX does not recommend that you run ``make + static`` locally. If you run ``make static`` or ``r.js`` locally, make sure + you delete the ``ecommerce/static/build`` folder or that you run ``make + static`` before you continue with development. If you do not run ``make + static`` again, django-compressor ignores all changes that you make to + static files. + +********************************** +Compile and Move Static Assets +********************************** + +To compile and move your static assets and deploy your E-Commerce service, +execute the following command locally or on another server. + +.. code-block:: bash + + $ make static + +If you create new pages that have RequireJS dependencies, remember to add your +new JavaScript modules to the RequireJS build file for the project. This is the +``build.js`` file. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst new file mode 100644 index 000000000..1d16f1212 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst @@ -0,0 +1,83 @@ +.. _Manage Orders: + +################## +Manage Orders +################## + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + + +EdX has created a framework that manages order placement and fulfillment for +digital products. Most of the products that edX supports involve modifications +to enrollments. + +The edX framework allows modules that fulfill enrollment-related products to +interact with the `edX Enrollment API`_, which is a part of the LMS. This +process can be either synchronous or asynchronous. + + +****************** +Place an Order +****************** + +To place an order, you need the following information. + +* Order number +* User +* Basket +* Shipping method +* Shipping charge +* Billing address +* Order total + +To place an order, use the ``handle_order_placement()`` method that +``EdxOrderPlacementMixin`` provides. If you modify this code, make sure that +the code collects payment before it creates order objects. + +****************** +Fulfill Orders +****************** + +To fulfill orders, emit a ``post_checkout`` signal. An internal fulfillment API +then delegates fulfillment of individual order items to the appropriate +fulfillment modules. + +*************************** +About Fulfillment Modules +*************************** + +The E-Commerce base fulfillment module has the following interface. + +.. code-block:: python + + fulfill_product(product) + + revoke_line(line) + +Every ``ProductType`` has a corresponding module that extends this interface +and fulfills order items of that particular ``ProductType``. To fulfill an +order, the system gives each fulfillment module configured in settings +(``_oscar.py``) an opportunity to fulfill order lines. + +* The ``fulfill_product`` method fulfills the order. For example, + ``fulfill_product`` might enroll a learner in a course or upgrade the learner + to a verified certificate). + +* The ``revoke_line`` method revokes a specific order line. For example, + ``revoke_line`` might unenroll learners from courses or downgrade a learner + from a verified seat. + + + +************************************* +Recover from a Fulfillment Error +************************************* + +If a fulfillment operation fails, the E-Commerce service assigns the order a +status indicating the reason for the failure. If you have enabled asynchronous +order fulfillment, the service tries again to fulfill the order. You can also +manually retry fulfillment of a failed order from the `Oscar`_ order dashboard. + +.. include:: ../../../links/links.rst + diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst new file mode 100644 index 000000000..b43ae24df --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst @@ -0,0 +1,389 @@ +.. _Test ECommerce: + +################################### +Test Your E-Commerce Application +################################### + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + + +To test new applications that you develop for the E-Commerce service, you +create and run tests for the Open edX platform first, and then you run a set of +tests that are specific to E-Commerce. + +******************** +Tests for E-Commerce +******************** + +When you develop E-Commerce applications, you must run a pre-packaged set of +unit tests, Python tests, and E-Commerce acceptance tests. + +============================= +Run E-Commerce Unit Tests +============================= + +The E-Commerce unit tests include migrations, the unit test suite, and quality +checks. You can run the full unit test, or save time for a local test by +disabling the migrations. (You can also run the quality checks independent of +the unit test suite.) + +* To run the full unit test, including migrations and quality checks, use the + following command. + + .. code-block:: bash + + $ make validate + + .. note:: + If numerous unit tests fail with an ``OfflineGenerationError`` message, run + the following command, then try to run unit tests again. + + .. code-block:: bash + + $ DJANGO_SETTINGS_MODULE=ecommerce.settings.test make static + +* To run unit tests with quality checks but without migrations, run the + following command. + + .. code-block:: bash + + $ DISABLE_MIGRATIONS=1 make validate + + .. note:: + We recommend that you only run tests without migrations when you run the + tests locally. + +* To validate code quality independently, run the following command. + + .. code-block:: bash + + $ make quality + + +Python Unit Tests +******************** + +When you create E-Commerce tests, use the ``TestCase`` class in +``ecommerce/tests/testcases.py`` to ensure every test has ``Site`` and +``Partner`` objects configured. This will help you test any code that relies on +these models, which are used for multi-tenancy. + +* To run all Python unit tests and quality checks, run the following command. + + .. code-block:: bash + + $ make validate_python + +* To run all Python unit tests and quality checks *in parallel*, run the + following command. + + .. code-block:: bash + + $ make fast_validate_python + +* To run the Python unit tests in a specific file, such as + ``ecommerce/courses/tests/test_utils.py``, run the following command and + substitute the desired file path. + + .. code-block:: bash + + $ DISABLE_ACCEPTANCE_TESTS=True ./manage.py test + ecommerce.courses.tests.test_utils --settings=ecommerce.settings.test + --with-ignore-docstrings --logging-level=DEBUG + + Setting the DISABLE_MIGRATIONS variable significantly decreases the time + needed to run tests by creating the test database directly from Django model + definitions as opposed to applying the defined migrations. + + .. code-block:: bash + + $ DISABLE_MIGRATIONS=1 DISABLE_ACCEPTANCE_TESTS=True ./manage.py test + ecommerce.courses.tests.test_utils --settings=ecommerce.settings.test + --with-ignore-docstrings --logging-level=DEBUG + + +JavaScript Unit Tests +********************** + +The E-Commerce project uses `Jasmine`_ for JavaScript unit testing. To create +these tests, place your tests in the ``ecommerce/static/js/test/specs`` +directory, and add a ``_spec`` suffix. For example, your test name may be +``ecommerce/static/js/test/specs/course_list_view_spec.js``. + +All JavaScript code must adhere to standards outlined in the `edX JavaScript Style Guide`_. These standards are enforced using `ESLint`_. + +* To run all JavaScript unit tests and linting checks, run the following + command. + + .. code-block:: bash + + $ make validate_js + + +=================================== +Run E-Commerce Acceptance Tests +=================================== + +To run specific acceptance tests for the E-Commerce service, you must complete +the following procedures. + +.. contents:: + :depth: 1 + :local: + +Configure the LMS +******************** + +To configure the LMS, follow these steps. + +#. Verify that the following settings in ``/edx/app/edxapp/lms.yml`` are + correct. :: + + "ECOMMERCE_API_URL": "http://localhost:8002/api/v2/" + "ECOMMERCE_PUBLIC_URL_ROOT": "http://localhost:8002" + "JWT_ISSUER": "http://127.0.0.1:8000/oauth2" // Must match the E-Commerce JWT_ISSUER setting + "OAUTH_ENFORCE_SECURE": false + "OAUTH_OIDC_ISSUER": "http://127.0.0.1:8000/oauth2" + +#. Verify that the following settings in ``/edx/app/edxapp/lms.yml`` are + correct. :: + + "ECOMMERCE_API_SIGNING_KEY": "insecure-secret-key" // Must match the E-Commerce JWT_SECRET_KEY setting + "EDX_API_KEY": "PUT_YOUR_API_KEY_HERE" // Must match the E-Commerce EDX_API_KEY setting + +#. Verify that an LMS account with staff and superuser permissions exists. + + By default, most devstack and fullstack LMS instances include a user + account that has staff permissions. This account has the username + ``staff``, the email address ``staff@example.com``, and the password + ``edx``. Run the following commands to grant the account superuser + permissions. + + .. code:: sh + + cd ~/edx-platform + ./manage.py lms set_superuser staff --settings=devstack + + + .. the ecomm version has these commands for granting superuser permissions + .. to the account: + + .. ./manage.py lms shell --settings=devstack + from django.contrib.aut.models import User + u = User.objects.get(username-'staff') + u. is_superuser = True + u.save() + +#. Navigate to the OAuth2 Clients section of the Django administration console + (e.g. http://localhost:8000/admin/oauth2/client/). Sign in using the + superuser account you created earlier. + + Verify that an OAuth2 client with the following attributes exists. If one + does not already exist, :ref:`create a new OAuth 2 client `. + + The client ID and secret must match the values of the E-Commerce + ``SOCIAL_AUTH_EDX_OIDC_KEY`` and ``SOCIAL_AUTH_EDX_OIDC_SECRET`` settings, + respectively. :: + + Name: ecommerce + URL: http://localhost:8002/ + Redirect URI: http://localhost:8002/complete/edx-oidc/ + Client ID: 'ecommerce-key' + Client Secret: 'ecommerce-secret' + Client Type: Confidential (Web applications) + Logout url: http://localhost:8002/logout/ + +#. Navigate to the Edx\_Oauth2\_Provider Trusted clients section of the Django + administration console (http://localhost:8000/admin/edx_oauth2_provider/trustedclient/). + + Verify that the OAuth2 client referred to above is designated as a + trusted client (look for the Redirect URI). If this isn't already + the case, add the client created above as a new trusted client. + +#. In the Django administration panel, create a new access token for + the superuser account. Set the client to the OAuth2 client referred + to above. Make note of this token; it is required to run the + acceptance tests. + +#. Make sure that the LMS instance that you will use for testing has at least + two courses that learners can enroll in. By default, most LMS instances + include the edX demonstration course. Use Studio to create a second course. + + +Configure E-Commerce +******************** + +You use the E-Commerce Course Administration Tool ("ECAT") to finish +configuring the two courses in your LMS instance. + +#. Become the ``ecommerce`` user. + + .. code:: sh + + sudo su ecommerce + +#. Verify that the following keys in ``/edx/etc/ecommerce.yml`` match your + settings in ``/edx/app/edxapp/lms.yml`` and + ``/edx/app/edxapp/lms.yml``. + + * One of the ``JWT_AUTH:JWT_ISSUERS`` entries should match + ``/edx/app/edxapp/lms.yml:JWT_ISSUER``. The default value is + ``http://127.0.0.1:8000/oauth2``. + * ``JWT_AUTH:JWT_SECRET_KEY`` should match + ``/edx/app/edxapp/lms.yml:ECOMMERCE_API_SIGNING_KEY``. The default + value is ``lms-secret``. + * ``EDX_API_KEY`` should match + ``/edx/app/edxapp/lms.yml:EDX_API_KEY``. The default value is + ``PUT_YOUR_API_KEY_HERE``. + +#. Set up the E-Commerce environment. + + .. code:: sh + + cd /edx/app/ecommerce/ecommerce + source ../ecommerce_env + source ../venvs/ecommerce/bin/activate + make requirements + make static + make migrate + +#. Create a new site linking to the LMS. + + .. code:: sh + + ./manage.py create_or_update_site \ + --site-id=1 \ + --site-domain=localhost:8002 \ + --partner-code=edX \ + --partner-name='Open edX' \ + --lms-url-root=http://localhost:8000 \ + --theme-scss-path=sass/themes/edx.scss \ + --payment-processors=cybersource,paypal \ + --client-id=ecommerce-key \ + --client-secret=ecommerce-secret \ + --from-email staff@example.com + +#. Start the E-Commerce Django development server. + + .. code:: sh + + ./manage.py runserver 0.0.0.0:8002 + +#. Get the course key from the LMS by navigating to a course and examining its + URL. The course key should look something like + ``course-v1:edX+DemoX+Demo_Course``. + +#. Navigate to the E-Commerce Courses page (http://localhost:8002/courses/) to + add the two test courses that are on your LMS instance to E-Commerce. Configure + one course as a "Free (Audit)" course, and the second as a "Verified" course. + +#. To configure the "Verified" course, click **Add New Course**. Leave the + default values in all fields, with the exception of the following fields. + + :: + + Course ID: The course key from the LMS + Course Name: Use any name + Course Type: Verified + Include Honor Seat: No + +#. Navigate to the learner dashboard (e.g. http://localhost:8000/dashboard) and + confirm that the course you added in E-Commerce now has a green "Upgrade to + Verified" badge, which you can select. + +#. In the ECAT, add the second course on your LMS instance to E-Commerce. + Specify its course type as ``Free (Audit)``. + +#. To test integration with external payment processors, update the contents + of the ``PAYMENT_PROCESSOR_CONFIG`` dictionary found in the settings with + valid credentials. To override the default values for development, create a + private settings module, ``private.py``, and set + ``PAYMENT_PROCESSOR_CONFIG`` inside the module. + + .. note:: + If you created a ``private.py`` file to create settings overrides when you + :ref:`set up your virtual environment `, you + can use that same ``private.py`` file. + +.. _Configure Acceptance Tests: + + +Configure Acceptance Tests +********************************* + +You configure acceptance tests by using the settings in the ``e2e/config.py`` +file. You can use the default values for most settings in this file. However, +for the following settings, you must specify values using environment +variables. + + .. ecomm version has this file path instead: + .. ecommerce/blobmaster/acceptance_tests/config.py + +.. list-table:: + :widths: 30 60 + :header-rows: 1 + + * - Variable + - Description + * - ACCESS_TOKEN + - The OAuth2 access token used to authenticate requests. + * - ECOMMERCE_URL_ROOT + - The URL root for the E-Commerce service. + * - LMS_URL_ROOT + - The URL root for the LMS. + * - LMS_USERNAME + - A username for any current LMS user, to use during testing. + * - LMS_EMAIL + - The email address used to sign in to the LMS. + * - LMS_PASSWORD + - The password used to sign in to the LMS. + +If you test PayPal integration, you must also specify values for the following +settings by using environment variables. + +.. list-table:: + :widths: 30 60 + :header-rows: 1 + + * - Variable + - Description + * - PAYPAL_EMAIL + - The email address used to sign in to PayPal during payment. + * - PAYPAL_PASSWORD + - The password used to sign in to PayPal during payment. + + + +Run Acceptance Tests +****************************** + +Run all acceptance tests by executing ``make e2e``. + + .. ecomm version has ``make accept``? + +To run a specific test, execute the following command. + +.. code-block:: bash + + $ nosetests -v + +The acceptance tests rely on the :ref:`environment variables that you have +configured `. For example, when you run the +acceptance tests against local instances of E-Commerce and the LMS, you might +run the following command, replacing values between angle brackets (<>) with +your own values. + +:: + + $ ECOMMERCE_URL_ROOT="http://localhost:8002" LMS_URL_ROOT="http://127.0.0.1:8000" LMS_USERNAME="" LMS_EMAIL="" LMS_PASSWORD="" ACCESS_TOKEN="" LMS_HTTPS="False" LMS_AUTO_AUTH="True" PAYPAL_EMAIL="" PAYPAL_PASSWORD="" ENABLE_CYBERSOURCE_TESTS="False" VERIFIED_COURSE_ID="" make e2e + +When you run the acceptance tests against a production-like staging +environment, you might run the following command. + +:: + + $ ECOMMERCE_URL_ROOT="https://ecommerce.stage.edx.org" LMS_URL_ROOT="https://courses.stage.edx.org" LMS_USERNAME="" LMS_EMAIL="" LMS_PASSWORD="" ACCESS_TOKEN="" LMS_HTTPS="True" LMS_AUTO_AUTH="False" PAYPAL_EMAIL="" PAYPAL_PASSWORD="" BASIC_AUTH_USERNAME="" BASIC_AUTH_PASSWORD="" HONOR_COURSE_ID="" VERIFIED_COURSE_ID="" make e2e + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/theming.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/theming.rst new file mode 100644 index 000000000..48743944a --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/theming.rst @@ -0,0 +1,312 @@ +.. _Comprehensive Theming: + +###################### +Comprehensive Theming +###################### + +.. warning:: + This service is deprecated and was last tagged for the Redwood release. We are not fixing bugs or developing new features for it. For updates, `follow along on the DEPR ticket `_ + + +Any application, including Otto, can be loosely divided into two parts: + +* the user interface ("how it looks"), and +* the application logic ("how it works"). + +Considerations of the Otto user interface include, for example, how the +products are laid out on the page, how the selectors look, how the checkout +button is labelled, what sort of fonts and colors are used to display the +text, and so on. Considerations of Otto's application logic includes how Otto +adjusts product price based on discount coupons, and how it records that +information to be displayed in the future. + +Theming consists of changing the user interface without changing the +application logic. When you set up an E-Commerce website for use with your +Open edX site, you probably want to use your organization's own logo, modify +the color scheme, change links in the header and footer for SEO (search engine +optimization) purposes, and so on. + +However, although the user interface might look different, the application +logic must remain the same so that Otto continues to work properly. A well- +designed theme preserves the general layout and structure of the user +interface, so that users of the website still find it familiar and easy to +use. Be careful about making sweeping changes to the user interface without +warning: your users will be very confused! + +The default Open edX theme is named "Comprehensive Theming". You can disable +Comprehensive Theming by setting ``ENABLE_COMPREHENSIVE_THEMING`` to +``False``, as shown in this example, then applying your custom theme. + + .. code-block:: python + + ENABLE_COMPREHENSIVE_THEMING = False + + +.. contents:: + :local: + :depth: 1 + +*************** +Theme Structure +*************** + +From a technical perspective, theming consists of overriding core templates, +static assets, and Sass with themed versions of those resources. + +Every theme must conform to a directory structure that mirrors the Otto directory structure. + +.. code-block:: text + + my-theme + ├── README.rst + ├── static + | └── images + | | └── logo.png + | | + | └── sass + | └── partials + | └── utilities + | └── _variables.scss + | + └── templates + └── oscar + | └── dashboard + | └── index.html + └── 404.html + + +========= +Templates +========= + +Any template included in ``ecommerce/templates`` directory can be "themed". +However, make sure not to override class names or ID values of HTML elements +within a template, as these are used by JavaScript or CSS. Overriding these +names and values can cause unwanted behavior. + +================== +Static Assets +================== + +Any static asset included in ``ecommerce/static`` can be overridden except for +the CSS files in the ``ecommerce/static/css`` directory. CSS styles can be +overridden via Sass overrides explained below. + +.. caution:: Theme names must be unique. The names of static assets or + directories must not be same as the theme's name, otherwise static assets + will not work correctly. + +===== +Sass +===== + +Sass overrides are a little different from static asset or template overrides. +There are two types of styles included in ``ecommerce/static/sass``: + +* base +* partials + +.. caution:: Styles present in ``ecommerce/static/sass/base`` should not be + overridden as overriding these could result in an unexpected behavior. + +Any styles included in ``ecommerce/static/sass/partials`` can be overridden. +Styles included in this directory contain variable definitions that are used +by main Sass files. Elements of the user interface such as header/footer, +background, fonts, and so on, can be updated in this directory. + + +***************** +Enabling a Theme +***************** + +To enable a theme, you must first install your theme onto the same server that +is running Otto. If you are using devstack or fullstack to run Otto, you must +be sure that the theme is present on the Vagrant virtual machine. It is up to +you where to install the theme on the server, but a good default location is +``/edx/app/ecommerce/ecommerce/themes``. + +.. note:: All themes must reside in the same physical directory. + +In order for Otto to use the installed themes, you must specify the location +of the theme directory in Django settings by defining +``COMPREHENSIVE_THEME_DIRS`` in your settings file, as shown in the example, +where ``/edx/app/ecommerce/ecommerce/themes`` is the path to where you have +installed the themes on your server. + +.. code-block:: python + + COMPREHENSIVE_THEME_DIRS = ["/edx/app/ecommerce/ecommerce/themes", ] + +You can list all theme directories using this setting. + +After you install a theme, you associate it with your site by adding appropriate +entries to the following tables. + +* ``Site`` +* ``Site Themes`` + +For local devstack, if the Otto server is running at ``localhost:8002`` you can +enable a ``my-theme`` by following these steps. + +#. Add a new site with the domain ``localhost:8002`` and the name "Otto My Theme". + +#. Add a site theme with the theme dir name ``my-theme``, selecting + ``localhost:8002`` from the ``site`` dropdown. + +The Otto server can now be started, and you should see that ``my-theme`` has +been applied. If you have overridden Sass styles and you are not seeing those +overrides, then you need to compile Sass files as described in `Compiling +Theme Sass`_. + +****************** +Disabling a Theme +****************** + +A theme can be disabled by removing its corresponding ``Site Theme`` entry +using django admin. + +======================================= +Creating or Updating Site and SiteTheme +======================================= + +If you have already set up ``COMPREHENSIVE_THEME_DIRS``, you can use the +management command for adding ``Site`` and ``SiteTheme`` directly from the +terminal. + +.. code-block:: Bash + + python manage.py create_or_update_site_theme --site-domain=localhost:8002 --site-name=localhost:8002 --site-theme=my-theme + +The ``create_or_update_site_theme`` command accepts the following optional +arguments, listed below with examples. + +* settings: The settings file to use. The default file is + ``ecommerce.settings.devstack``. + +.. code-block:: Bash + + python manage.py create_or_update_site_theme --settings=ecommerce.settings.production + +* site-id: The ID of the site that you want to update. + +.. code-block:: Bash + + # update domain of the site with id 1 and add a new theme + # ``my-theme`` for this site + python manage.py create_or_update_site_theme --site-id=1 --site-domain=my-theme.localhost:8002 --site-name=my-theme.localhost:8002 --site-theme=my-theme + +* site-domain: The domain of the site to be created. + +.. code-block:: Bash + + python manage.py create_or_update_site_theme --site-domain=localhost:8002 --site-theme=my-theme + +* site-name: The name of the site to be created. The default setting is ``''``. + +.. code-block:: Bash + + python manage.py create_or_update_site_theme --site-domain=localhost:8002 --site-name=localhost:8002 --site-theme=my-theme + +* site-theme: The theme dir for the new theme. + +.. code-block:: Bash + + python manage.py create_or_update_site_theme --site-domain=localhost:8002 --site-name=localhost:8002 --site-theme=my-theme + + +===================== +Compiling Theme Sass +===================== + +You use the management command ``update_assets`` to compile and collect themed +Sass. + +.. code-block:: yaml + + python manage.py update_assets + +The ``update_assets`` command accepts the following optional arguments, listed +below with examples. + +* settings: The settings file to use. The default file is + ``ecommerce.settings.devstack``. + +.. code-block:: Bash + + python manage.py update_assets --settings=ecommerce.settings.production + +* themes: The space-separated list of themes to compile Sass for. Possible + options are ``all`` for all themes, ``no`` to skip Sass compilation for + themes. The default option is ``all``. + +.. code-block:: Bash + + # compile Sass for all themes + python manage.py update_assets --theme=all + + # compile Sass for only given themes, useful for situations if you have + # installed a new theme and want to compile Sass for just this theme + + python manage.py update_assets --themes my-theme second-theme third-theme + + # skip Sass compilation for themes, useful for testing changes to system + # Sass, keeping theme styles unchanged + + python manage.py update_assets --theme=no + +* output-style: The coding style for compiled CSS files. Possible options are + ``nested``, ``expanded``, ``compact`` and ``compressed``. The default option + is ``nested``. + +.. code-block:: Bash + + python manage.py update_assets --output-style='compressed' + +* skip-system: This flag disables system Sass compilation. + +.. code-block:: Bash + + # useful in cases where you have updated theme Sass, and system Sass is + # unchanged. + + python manage.py update_assets --skip-system + +* enable-source-comments: This flag enables source comments in generated CSS + files. + +.. code-block:: Bash + + python manage.py update_assets --enable-source-comments + +* skip-collect: Use this flag to skip the ``collectstatic`` call after Sass + compilation. + +.. code-block:: Bash + + # useful if you just want to compile Sass, and call ``collectstatic`` later, + # possibly by a script + + python manage.py update_assets --skip-collect + + +****************** +Troubleshooting +****************** + +If you have gone through the preceding procedures and you are not seeing theme +overrides, check the following areas. + + +* ``COMPREHENSIVE_THEME_DIRS`` must contain the path for the directory + containing themes. For example, if your theme is + ``/edx/app/ecommerce/ecommerce/themes/my- theme`` then the correct value + for ``COMPREHENSIVE_THEME_DIRS`` is + ``['/edx/app/ecommerce/ecommerce/themes']``. + +* The ``domain`` name for site is the name that users will put in the browser + to access the site, and includes the port number. For example, if Otto is + running on ``localhost:8002`` then the value for ``domain`` should be + ``localhost:8002``. + +* The theme dir name is the name of the directory of your theme. For example, + for our ongoing example, ``my-theme`` is the correct theme dir name. diff --git a/source/site_ops/install_configure_run_guide/ecommerce-solutions.rst b/source/site_ops/install_configure_run_guide/ecommerce-solutions.rst new file mode 100644 index 000000000..c88d956a3 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/ecommerce-solutions.rst @@ -0,0 +1,28 @@ +.. _Adding ECommerce to Open edX: + +Adding ECommerce to Open edX +############################# + +This section is intended for those are who are building Open edX ecommerce +solutions and customizing an Open edX installation to support their use. + +.. contents:: + :local: + :depth: 1 + +Open edX Commerce (WordPress Plugin) +************************************ + +The Open edX WooCommerce Plugin is a free, open-source WordPress plugin that aims to integrate third-party e-commerce, WooCommerce, with your Open edX platform. See the following resources: + +* `Open edX Commerce (WordPress Plugin) Quickstart `_ +* `Open edX Commerce (WordPress Plugin) Source `_ + +Open edX Webhook Receiver +************************* + +The `Open edX Webhook Receiver `_ +extension is a small Django app that listens for incoming webhooks, and then +translates those into calls against the Open edX REST APIs. + +As of Sumac it supports WooCommerce and Shopify endpoints. \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst b/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst new file mode 100644 index 000000000..32169ad5b --- /dev/null +++ b/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst @@ -0,0 +1,10 @@ +.. _Feature Flag Index: + +############################### +Index of Open edX Feature Flags +############################### + +For more information abut feature flags, see `Open edX Feature Flags`_ +in the `edx-platform documentation`_. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/front_matter/browsers.rst b/source/site_ops/install_configure_run_guide/front_matter/browsers.rst new file mode 100644 index 000000000..7f2a1b17d --- /dev/null +++ b/source/site_ops/install_configure_run_guide/front_matter/browsers.rst @@ -0,0 +1 @@ +.. include:: ../../../shared/browsers.rst \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst b/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst new file mode 100644 index 000000000..7e0c62b56 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst @@ -0,0 +1,51 @@ +.. _Getting Help: + +############ +Getting Help +############ + +This section describes resources for getting help if you need technical +assistance during the installation process or after your site is running. + + +****************** +Where to Find Help +****************** + +There are a number of places to get help, including mailing lists and real-time +chat. Please choose an appropriate venue for your question. This helps ensure +that you get good prompt advice, and keeps discussion focused. For details of +your options, see the `Getting Help page`_. + + +******************************************* +Information to Provide When Asking for Help +******************************************* + +Keep in mind when asking for help that you have much more knowledge of your +situation than others do. You need to provide that context so that people can +understand your problem and provide good help. +To make it easier for others to help you, please provide the following types of +information. + +* **What you are trying to do?** What version of the code are you installing, + and why? What is your larger goal? + +* **What you have done?** What instructions were you following? What commands + did you run? Did you deviate from the instructions at any point, even a + little bit? Full output of those commands, even if it seems overwhelming, + can be very useful. + +* **What has gone wrong?** Are there errors in log files? Did you get specific + failures in the terminal? Provide full details about the undesired results + you saw. + +While working through your problem, helpers often need additional information. +Stay involved in the discussion, and try to give them what they need. They know +best what information they need to solve the problem. + + +.. _Getting Help page: https://open.edx.org/getting-help +.. _openedx-ops: http://groups.google.com/forum/#!forum/openedx-ops + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/front_matter/index.rst b/source/site_ops/install_configure_run_guide/front_matter/index.rst new file mode 100644 index 000000000..ab97ceaaa --- /dev/null +++ b/source/site_ops/install_configure_run_guide/front_matter/index.rst @@ -0,0 +1,12 @@ +############################# +General Information +############################# + +.. toctree:: + :maxdepth: 2 + + read_me + getting_help + preface + browsers + diff --git a/source/site_ops/install_configure_run_guide/front_matter/preface.rst b/source/site_ops/install_configure_run_guide/front_matter/preface.rst new file mode 100644 index 000000000..2185b5656 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/front_matter/preface.rst @@ -0,0 +1 @@ +.. include:: ../../../shared/preface.rst \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/front_matter/read_me.rst b/source/site_ops/install_configure_run_guide/front_matter/read_me.rst new file mode 100644 index 000000000..01e83939a --- /dev/null +++ b/source/site_ops/install_configure_run_guide/front_matter/read_me.rst @@ -0,0 +1,15 @@ +######### +Read Me +######### + +The *Installing and Configuring the Open edX Platform* documentation is created +using RST_ files and Sphinx_. As a member of the community, you can help update +and revise this documentation project on GitHub. + +https://github.com/openedx/edx-documentation/tree/master/en_us/install_operations/source + +The edX documentation team welcomes contributions from Open edX community +members. You can find guidelines for how to `contribute to edX Documentation`_ +in the GitHub edx/edx-documentation repository. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/glossary.rst b/source/site_ops/install_configure_run_guide/glossary.rst new file mode 100644 index 000000000..2cf48c018 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/glossary.rst @@ -0,0 +1 @@ +.. include:: ../../shared/glossary/glossary.rst \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/index.rst b/source/site_ops/install_configure_run_guide/index.rst new file mode 100755 index 000000000..917f483c1 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/index.rst @@ -0,0 +1,46 @@ +.. _Installing, Configuring, and Running the Open edX Platform: + +########################################################### +Installing, Configuring, and Running the Open edX Platform +########################################################### + +This guide provides instructions for using your own instance of the Open edX +platform and associated applications. + +The most recent Open edX release will be found on the `Open edX Named Releases page`_. +It is strongly recommended to use `Tutor`_ for both development and installation. +It is also recommended to stay up-to-date with the latest Open edX release, as +previous releases are unsupported by the community. See the `Open edX Release Schedule`_ +for information on release dates and end-of-life support. + +You *can* install any release of the Open edX platform, but note the community +will likely be unable to answer questions about issues you encounter. Please be +aware that older releases do not receive security fixes or any of the latest features, +and documentation on docs.openedx.org will always reflect the latest release. + +release. + +.. toctree:: + :numbered: + :maxdepth: 2 + + front_matter/index + platform_releases/index + installation/index + configuration/index + analytics/index + ecommerce-solutions + mobile + feature_flags/feature_flag_index + glossary + +.. hide outdated materials, but don't remove so links still work + +.. toctree:: + :hidden: + + ecommerce-deprecated/index + insights/index + mobile-deprecated + +.. include:: ../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst b/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst new file mode 100644 index 000000000..afbc03336 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst @@ -0,0 +1,402 @@ +.. _Using Elastic MapReduce on AWS: + +****************************************** +Using Elastic MapReduce on AWS +****************************************** + +.. note:: + + The edX Insights service is deprecated and no longer supported by the Open + edX community. Please see :ref:`Open edX Analytics Options` for other ways + of running analytics on your Open edX instance. + +This topic provides an overview of the components and services that you set up +and configure in a deployment that uses Amazon EMR. Work to prepare complete +installation procedures for edX Insights is in progress. + +.. contents:: + :local: + :depth: 1 + +For more information about AWS, including detailed procedures, see the `AWS +Documentation`_. + +.. important:: + The tasks described by this topic rely on the use of third-party services and + software. Because the services and software are subject to change by their + owners, the information provided here is intended as a guideline and not as + exact procedures. + +====================== +Virtual Private Cloud +====================== + +Create a Virtual Private Cloud (VPC) with at least one public subnet. A +limitation of EMR running in a VPC is that clusters must be deployed into +public subnets of VPCs. An existing VPC can be used if one is already available +for use. + +EdX recommends that you configure the VPC to have at least one private subnet +in addition to the required public subnet. A private subnet is not required. +For more information, see the `example configuration scenario`_ +in the *Amazon Virtual Private Cloud User Guide* published by AWS. + +An example configuration that includes only `a single public subnet`_ +can also be found in the *Amazon Virtual Private Cloud User Guide*. + +Other Considerations +********************* + +* To take advantage of price fluctuations in the `spot pricing market`_ , you + can also deploy several public subnets in different availability zones. + +* Consider that the clusters deployed using EMR will need network connectivity + to a read replica of the LMS database. EdX recommends that you use the same + VPC as the LMS if possible. + +* While it is possible to run all of these services outside of a VPC, edX does + not recommend doing so. + +=============================== +Identity and Access Management +=============================== + +For Amazon Identity and Access Management (IAM), create an IAM role for use +by the EMR cluster. Assign all of the Elastic Compute Cloud (EC2) nodes in +the cluster to this role. An option is to consider copying the contents of the +`default IAM roles for Amazon EMR`_ used by AWS. The command +``aws emr create-default-roles`` facilitates this task. For more information, +see `default IAM roles for Amazon EMR`_. + +Also, you need to create a role named ``emr`` with the policy +``AmazonElasticMapReduceforEC2Role`` for the EC2 instance profile. + +Make sure that an IAM user with administrative privileges is available for use. + +================= +SSH Credentials +================= + +Generate a secure SSH key that you use to access all AWS resources. For +example, run the following command. + + .. code-block:: bash + + ssh-keygen -t rsa -C "your_email@example.com" + +Upload the public key from the SSH key pair to AWS and assign a key pair +name to it. + +====================== +Elastic Compute Cloud +====================== + +Ensure that at least one Amazon Elastic Compute Cloud (EC2) instance is +available to host the various services. Depending on the scale of your +deployment, additional instances might be necessary. + +Make sure to use the secure key pair name to deploy all of the EC2 instances. + +============================== +Relational Database Service +============================== + +Deploy a MySQL 5.6 Relational Database Service (RDS) instance. This RDS +instance is the result store. + +Connectivity +*************** + +Ensure that there is connectivity between the EC2 instance that hosts +the edX Analytics API and your RDS instance. + +Also, ensure that instances deployed into the public subnet of the VPC +can connect to your RDS instance. + +Users +*********** + +Create at least the following two users on the RDS instance. + +* The "pipeline" user must have permission to create databases, tables, and + indexes, and issue arbitrary Data Manipulation Language (DML) commands. + +* The "api" user must have read-only access. + +Configure passwords for both of these users. + +Other Considerations +********************* + +Configure the RDS instance to use "utf8_bin" collation by default for +columns in all databases and tables. + +================================== +Scheduler Service +================================== + +Establish an SSH connection to the EC2 instance within the VPC that will +run the scheduler service. Then, issue the following commands from a shell +running on that instance. + +#. Check out the sources files from `edx-analytics-configuration`_. + + .. code-block:: bash + + git clone https://github.com/openedx/edx-analytics-configuration.git + +#. Configure the shell to use the AWS credentials of the administrative AWS + user. + + .. code-block:: bash + + export AWS_ACCESS_KEY_ID= + export AWS_SECRET_ACCESS_KEY= + +#. Install the `AWS Command Line Interface`_. + + .. code-block:: bash + + pip install awscli + +================================== +Simple Storage Solution Buckets +================================== + +Create a Simple Storage Solution (S3) bucket to hold all Hadoop logs from +the EMR cluster. + + .. code-block:: bash + + aws s3 mb s3:// + +Then, create an S3 bucket to hold secure configuration files and +initialization scripts. + + .. code-block:: bash + + aws s3 mb s3:// + +========================= +MySQL Connector Library +========================= + +Download the `MySQL connector library`_ from Oracle. After the download is +complete, you then upload it to S3. + + .. code-block:: bash + + aws s3 cp /tmp/mysql-connector-java-5.1.*.tar.gz s3:/// + +The ``edx-analytics-configuration/batch/bootstrap/install-sqoop`` script +references a specific version of the MySQL connector library. Update this +``install-sqoop`` script to point to the correct version of the library in the +S3 bucket. You must update the script before you continue. + +Then, upload the contents of the ``edx-analytics-configuration/batch/bootstrap/`` directory into your configuration bucket. + + .. code-block:: bash + + aws s3 sync edx-analytics-configuration/batch/bootstrap/ s3:/// + +========================== +Cluster Configuration File +========================== + +Create a cluster configuration file to specify the parameters for the EMR +cluster. Review the parameters that follow, and change them to specify your +desired configuration. For example, review the ``core`` and ``task`` mappings +and change the values for ``bidprice`` and ``type`` to meet your needs. + +Then, save this file to a temporary location such as ``/tmp/cluster.yml``. + + .. code-block:: yaml + + { + name: , + keypair_name: , + vpc_subnet_id: , + log_uri: "s3://", + instance_groups: { + master: { + num_instances: 1, + type: m3.xlarge, + market: ON_DEMAND, + }, + core: { + num_instances: 2, + type: m3.xlarge, + market: SPOT, + bidprice: 0.8 + }, + task: { + num_instances: 1, + type: m3.xlarge, + market: SPOT, + bidprice: 0.8 + } + }, + release_label: emr-4.7.2, + applications: [ {name: Hadoop}, {name: Hive}, {name: Sqoop-Sandbox}, {name: Ganglia} ], + steps: [ + { + type: script, + name: Install MySQL connector for Sqoop, + step_args: [ "s3:///install-sqoop", "s3://" ], + # You might want to set this to CANCEL_AND_WAIT while debugging step failures. + action_on_failure: TERMINATE_JOB_FLOW + } + ], + configurations: [ + { + classification: mapred-site, + properties: + { + mapreduce.framework.name: 'yarn', + mapreduce.jobtracker.retiredjobs.cache.size: '50', + mapreduce.reduce.shuffle.input.buffer.percent: '0.20', + } + }, + { + classification: yarn-site, + properties: + { + yarn.resourcemanager.max-completed-applications: '5' + } + } + ], + user_info: [] + } + + +You might find you need to update Hadoop instance types and container +sizes. In particular, if you encounter jobs that are running out of +physical memory, you might want to choose a larger instance. If your +instance is a good size but being underutilized, you might want to +explicitly define larger values in the "mapred-site" configuration +than would be provided by default in the instance size you are +using. Here is an example of settings we use with an m3.2xlarge +instance type. + + .. code-block:: yaml + + { + classification: mapred-site, + properties: + { + mapreduce.framework.name: 'yarn', + mapreduce.jobtracker.retiredjobs.cache.size: '50', + mapreduce.reduce.shuffle.input.buffer.percent: '0.20', + mapreduce.map.java.opts: '-Xmx2458m', + mapreduce.reduce.java.opts: '-Xmx4916m', + mapreduce.map.memory.mb: '3072', + mapreduce.reduce.memory.mb: '6144' + } + } + + +============ +EMR Cluster +============ + +Deploy the EMR cluster. + + .. code-block:: bash + + EXTRA_VARS="@/tmp/cluster.yml" make provision.emr + +Example Output +*************** + + :: + + pip install -q -r requirements.txt + + ansible-playbook --connection local -i 'localhost,' batch/provision.yml -e "$EXTRA_VARS" + + PLAY [Provision cluster] ****************************************************** + + TASK: [provision EMR cluster] ************************************************* + changed: [localhost] + + TASK: [add master to group] *************************************************** + ok: [localhost] + + TASK: [display master IP address] ********************************************* + ok: [localhost] => { + "msg": "10.0.1.236" + } + + TASK: [display job flow ID] *************************************************** + ok: [localhost] => { + "msg": "j-29UUJVM8P1NPY" + } + + PLAY [Configure SSH access to cluster] **************************************** + + TASK: [user | debug var=user_info] ******************************************** + ok: [10.0.1.236] => { + "item": "", + "user_info": [] + } + + TASK: [user | create the edxadmin group] ************************************** + changed: [10.0.1.236] + + TASK: [user | ensure sudoers.d is read] *************************************** + changed: [10.0.1.236] + + TASK: [user | grant full sudo access to the edxadmin group] ******************* + changed: [10.0.1.236] + + TASK: [user | create the users] *********************************************** + skipping: [10.0.1.236] + + TASK: [user | create .ssh directory] ****************************************** + skipping: [10.0.1.236] + + TASK: [user | assign admin role to admin users] ******************************* + skipping: [10.0.1.236] + + TASK: [user | copy github key[s] to .ssh/authorized_keys] ******************** + skipping: [10.0.1.236] + + TASK: [user | create bashrc file for normal users] **************************** + skipping: [10.0.1.236] + + TASK: [user | create .profile for all users] ********************************** + skipping: [10.0.1.236] + + TASK: [user | modify shell for restricted users] ****************************** + skipping: [10.0.1.236] + + TASK: [user | create bashrc file for restricted users] ************************ + skipping: [10.0.1.236] + + TASK: [user | create sudoers file from template] ****************************** + changed: [10.0.1.236] + + TASK: [user | change home directory ownership to root for restricted users] *** + skipping: [10.0.1.236] + + TASK: [user | create ~/bin directory] ***************************************** + skipping: [10.0.1.236] + + TASK: [user | create allowed command links] *********************************** + skipping: [10.0.1.236] + + PLAY RECAP ******************************************************************** + 10.0.1.236 : ok=0 changed=4 unreachable=0 failed=0 + localhost : ok=4 changed=1 unreachable=0 failed=0 + +Additional Tasks +================= + +To complete the EMR configuration, additional configuration and automation +procedures are required, including scheduling jobs and automating log +duplication. For more information, see the `edX Analytics Installation`_ wiki +page. + + +.. include:: ../../../links/links.rst + diff --git a/source/site_ops/install_configure_run_guide/insights/index.rst b/source/site_ops/install_configure_run_guide/insights/index.rst new file mode 100644 index 000000000..08b8d07d0 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/insights/index.rst @@ -0,0 +1,28 @@ +.. _Adding edX Insights: + +##################################### +Adding edX Insights (Deprecated) +##################################### + +.. note:: + + The edX Insights service is deprecated and no longer supported by the Open + edX community. Please see :ref:`Open edX Analytics Options` for other ways + of running analytics on your Open edX instance. + +The following topics provide information about installing, configuring, and +running `edX Insights`_ and its dependencies in a production environment. + +.. toctree:: + :maxdepth: 1 + + install_insights + elastic_mapreduce + +Work to prepare complete installation procedures for edX Insights is in +progress. This section presents the introductory, overview material that is +available now. + + +.. include:: ../../../links/links.rst + diff --git a/source/site_ops/install_configure_run_guide/insights/install_insights.rst b/source/site_ops/install_configure_run_guide/insights/install_insights.rst new file mode 100644 index 000000000..918ae20c0 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/insights/install_insights.rst @@ -0,0 +1,247 @@ +.. _Installing edX Insights: + +################################################# +Options for Installing edX Insights (Deprecated) +################################################# + +.. note:: + + The edX Insights service is deprecated and no longer supported by the Open + edX community. Please see :ref:`Open edX Analytics Options` for other ways + of running analytics on your Open edX instance. + +This topic is intended for those who are interested in running `edX Insights`_ +and its dependencies in a production environment. This topic does not provide +complete installation procedures for edX Insights. It presents the introductory +material that is available now. + +.. contents:: + :local: + :depth: 1 + +******** +Overview +******** + +Course teams use edX Insights to access data gathered from active courses. In +edX Insights, course teams can display charts, summary statistics, and data +tables. + +The Learning Management System (LMS) gathers data about learner activity. This +data is aggregated by the edX Analytics Pipeline. The aggregated data is +exposed by the edX Analytics Data API. EdX Insights reads the data from the edX +Analytics Data API and presents the data to course team members. + +======================== +Architecture Diagram +======================== + +.. image:: /Images/Analytics_Pipeline.png + :alt: Image showing the relationships between various components of the edX + analytics data pipeline. + :width: 800 + +========== +Components +========== + +.. contents:: + :local: + :depth: 1 + +LMS +*** + +The LMS records learner actions in tracking log files. The standard +``logrotate`` utility periodically compresses and copies these files into a +file system that can be read by the edX Analytics Pipeline. The LMS also +captures a lot of information in a MySQL database. The edX Analytics Pipeline +connects directly to this database to extract information about learners. + +edX Analytics Pipeline +********************** + +The edX Analytics Pipeline reads the MySQL database used by the LMS as well as +the tracking log files produced by the LMS. The data is processed and the +resulting summary data is published to the result store. The result store is a +MySQL database. + +Requirements +============ + +* `Hadoop `_ version 1.0.3 or higher +* `Hive `_ version 0.11.0.2 or higher +* `Sqoop `_ version 1.4.5 +* Python 2.7 +* Either Debian version 6.0 or higher, or Ubuntu version 12.04 or higher +* A MySQL server version 5.6 or higher + +Scheduler +********* + +The Scheduler schedules the execution of data computation tasks. Data +computation tasks are run by the edX Analytics Pipeline. Data computation tasks +are used to update parts of the result store. + +edX Analytics Data API +********************** + +The ref:`opendataapi:edX Analytics Data API` +provides an HTTP interface for accessing data in the result store. Typically, +the data in the result store is updated periodically by the edX Analytics +Pipeline. + +Requirements +============ + +Python 2.7 + +edX Insights +************ + +EdX Insights uses the edX Analytics Data API to present data to users. Users +access the data using a supported web browser. EdX Insights communicates +directly with the LMS to authenticate users, authorize users, and read course +structure information. + +Requirements +============ + +Python 2.7 + +************************************* +What You Should Know Before You Start +************************************* + +To install edX Insights and deploy the edX Analytics Pipeline, you must +understand the following concepts. + +* Basic terminal usage. +* How the LMS has been deployed and configured. +* Basic computer network terminology. +* YAML file format. + +If you plan to use Amazon Web Services, an understanding of AWS terminology is +also required. + +************************ +Planning Your Deployment +************************ + +All edX Analytics services are designed to be relocatable. This means that they +do not require a particular configuration of virtual servers. You are free to +choose how the services should be distributed among the resources you have +available. + +====== +Hadoop +====== + +Most of the computation performed by the edX Analytics Pipeline is implemented +as Map Reduce jobs that must be executed by a Hadoop cluster. You can scale +your Hadoop cluster based on your current and projected data sizes. Hadoop +clusters can be scaled vertically and horizontally as your data grows. For very +small installations of Open edX, a single virtual server should be sufficiently +powerful to process your data. + +Amazon's `Elastic MapReduce`_ (EMR) service offers preconfigured Hadoop +clusters. If you are able to use Amazon Web Services (AWS), use of this service +is recommended. Proper installation and configuration of Hadoop can be time +consuming. For more information, see :ref:`Using Elastic MapReduce on AWS`. + +Additionally, vendors such as Cloudera and MapR offer simplified Hadoop +administration experiences. + +Hadoop is a distributed system that consists of several different services. It +is worth noting that they are Java services and require a non-trivial amount of +memory to run. The high memory requirement might prevent you from running all +services on the same virtual server if it does not have enough memory +available. + +================ +edX Applications +================ + +The edX Analytics Data API responds to a small number of requests every time a +page is loaded in edX Insights. Small installations can probably host both +services on the same virtual server. Larger installations should consider +hosting the services on more than one virtual server. A load balancer is +recommended for each service that requires more than one virtual server. + +============ +Result Store +============ + +The results of computations performed by the edX Analytics Pipeline are stored +in a MySQL database. Even small installations should use a different MySQL +server than the one used by the LMS. The edX Analytics Pipeline's write +patterns to the result store are more I/O intensive than usual. Placing both +databases on the same server can degrade the performance of the LMS. + +========= +Scheduler +========= + +Scheduling executions of the edX Analytics Pipeline can be accomplished in many +different ways. Any tool that can periodically execute shell commands should +work. The simplest tool that can perform this task is `cron`_. `Jenkins`_ is +also a good candidate. + +.. _cron: http://en.wikipedia.org/wiki/Cron +.. _Jenkins: http://jenkins-ci.org/ + +******************* +Example Deployments +******************* + +.. contents:: + :local: + :depth: 1 + +=================================== +Small Scale Using Elastic MapReduce +=================================== + +A small deployment might consist of a single master node and a single core +node. The Scheduler is deployed to the master node and periodically executes +the edX Analytics Data Pipeline on this server. Additionally, the edX Analytics +API, edX Insights and result store are deployed to the master node. These +services run continuously. For more information, see :ref:`Using Elastic +MapReduce on AWS`. + +=================================== +Large Scale Using Elastic MapReduce +=================================== + +A large scale deployment consists of a single master node, several core nodes, +and many task nodes deployed into a public subnet of a Virtual Private Cloud. + +.. image:: /Images/Analytics_AWS_Deployment.png + :alt: Image showing all of the AWS components needed to run a large scale + deployment of the edX analytics data pipeline. + +The edX Analytics API and edX Insights are each deployed into an auto-scaling +group behind an Elastic Load Balancer which terminates SSL connections and +distributes the load among the application servers. The application servers are +deployed into a private subnet of the Virtual Private Cloud. A single virtual +server is deployed into a private subnet to host the Scheduler. The Relational +Database Service is used to deploy a MySQL server into a private subnet. The +MySQL database will be used as the result store. For more information, see +:ref:`Using Elastic MapReduce on AWS`. + +=========================================== +Large Scale Without Using Elastic MapReduce +=========================================== + +A large deployment that does not use Elastic MapReduce requires additional +configuration steps to establish a properly configured environment. A Hadoop +cluster is deployed. The master node is considered the node that is running the +Job Tracker service for Hadoop 1.X deployments or the Resource Manager service +for Hadoop 2.X deployments. Hive and Sqoop are deployed to the master node. +Several servers are deployed outside of the Hadoop cluster that host the +remainder of the infrastructure. The edX Analytics API and edX Insights +services are each deployed to at least one server. The Scheduler is deployed to +another server. A MySQL database is deployed to a server that is configured to +host a relational database. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/installation/index.rst b/source/site_ops/install_configure_run_guide/installation/index.rst new file mode 100644 index 000000000..50ae22832 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/installation/index.rst @@ -0,0 +1,56 @@ +.. _Installing and Starting the Open edX Platform: + +############################################# +Installing and Starting the Open edX Platform +############################################# + +This section provides information about options for installing and +starting the Open edX platform. + +We've tried to simplify the installation by providing a small number of +options, prepackaged to varying degrees. Before installing the Open edX platform, you have +two decisions to make: + +* **Version**: What version of the code do you want? +* **Method**: How do you want to install it? + +******************* +1. Choose a version +******************* + +There are two possibilities for the version to install: + +* **Master** is the latest version of the code. + +* A **Release** is a version of the code marked and tested for wide use. These + are named alphabetically for trees: Sumac, Teak, Ulmo, etc. Look for the most + recent release if you're beginning a new installation. + +You should choose master only if you will be modifying the code and +contributing it back, or if you need a feature or fix that is newer than the +latest Open edX release. If you aren't planning to contribute changes, and you +don't need the absolute latest code, use the latest official Open edX release. +Details of the releases are on the `Open edX Named Releases page`_. + +******************************** +2. Choose an installation method +******************************** + +**`Tutor`_**: is the community-supported Docker-based environment + suited for both production and development. + + +Note that Tutor requires some foundational skills: + +* Comfort with your chosen operating system. +* Using the command line to perform tasks. +* Some ability to diagnose and solve problems with system software. + +You can find more details on each of the methods below: + +.. toctree:: + :maxdepth: 2 + + tutor + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/installation/tutor.rst b/source/site_ops/install_configure_run_guide/installation/tutor.rst new file mode 100644 index 000000000..cc8ae7f06 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/installation/tutor.rst @@ -0,0 +1,12 @@ +.. _Open edX Tutor Installation: + +########################### +Open edX Tutor Installation +########################### + +Tutor is the community-supported installation method as of Lilac. + +In order to avoid unnecessary duplication of information, please refer to the +official `Tutor`_ documentation for details of how to use it. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/mobile-deprecated.rst b/source/site_ops/install_configure_run_guide/mobile-deprecated.rst new file mode 100644 index 000000000..a2a2bce8f --- /dev/null +++ b/source/site_ops/install_configure_run_guide/mobile-deprecated.rst @@ -0,0 +1,258 @@ +.. _Deprecated Mobile Applications: + +############################################ +Deprecated Open edX Mobile Applications +############################################ + +.. warning:: + The following instructions refer to the older, now unsupported, + mobile applications. They were last supported in the Quince release. + + Please see :ref:`Setting up the Mobile Applications` for more on the current apps. + +Deprecated Mobile Applications +****************************** + +Accessing the Source Code +========================= + +The deprecated mobile applications, one for iOS and one for +Android, are below. You can find the source code and additional documentation for each +application in the following repositories. + +* iOS (`iOS app deprecation ticket `_): http://github.com/openedx-unsupported/edx-app-ios + +* Android (`Android app deprecation ticket `_): http://github.com/openedx-unsupported/edx-app-android + + +Configuring Mobile Application Features +======================================= + +For the mobile API and authentication to work correctly with the edX mobile +applications, you enable them in the ``edx/app/edxapp/lms.yml`` file. You +then complete the setup for authentication by creating OAuth clients and +adding their IDs to the custom configuration file of each mobile application. + +Enable Mobile Application Features +---------------------------------- + +.. note:: Configuration settings added to the ``lms.yml`` file are reset + to their default values when you use Ansible to update edx-platform. + +To enable the mobile application features, follow these steps. + +#. In the ``edx/app/edxapp/lms.yml`` file, add the following lines to the + features section. + + .. code-block:: none + + "FEATURES" : { + ... + "ENABLE_MOBILE_REST_API": true, + "ENABLE_OAUTH2_PROVIDER": true, + "ENABLE_COMBINED_LOGIN_REGISTRATION": true +   } + + If you are running in a non-SSL environment, you can set + ``"OAUTH_ENFORCE_SECURE": false``. This configuration setting should never be + set to ``false`` in anything other than a development environment. + +#. Save the ``edx/app/edxapp/lms.yml`` file. + +#. Restart the server. + +.. future: add server- and client-side configuration for Google and Facebook sign in, incl. add ``"ENABLE_THIRD_PARTY_AUTH": true`` to the ``"FEATURES"`` list + +.. _Create the OAuth Clients: + + +Create the OAuth Clients +------------------------------ + +You create an OAuth client ID and secret that are specific to your +installation for use by the mobile applications. The procedure that follows +assumes that you create a different client for each of the edX mobile +applications. + +Before you can create OAuth clients, a superuser must exist on the server. For +more information, see `edX Managing the Full Stack`_. + +To create your OAuth clients, follow these steps. + +#. Log in to the Django administration console for your base URL. For example, + ``http://{your_URL}/admin``. + +#. In the **Oauth2** section, select **Clients**. + +#. Select **Add client**. A dialog box opens with the **Client id** and + **Client secret** populated for the new client. + +#. Enter a **Url** and **Redirect Url** for the first mobile application. For + example, ``https://{your_URL}/api/mobile/{version}/?app=ios``. While the + console requires values for these fields, they are not used by the edX + mobile applications. You can enter the same value in both fields. + +#. For the **Client type**, select **Public**. + +#. Optionally, enter a **User** and an identifying **Name**. + +#. Select **Save and add another**. + +#. Repeat steps 4-6 for the second mobile application, and then select + **Save**. + +Configure the Applications with OAuth Client IDs +------------------------------------------------ + +The procedure that follows assumes that you have a different OAuth client ID +for each edX mobile application. + +To configure each edX mobile application with its OAuth client ID, you add a +setting to its custom configuration .yaml file. For information about how to +set up custom configuration directories and files, see the GitHub repositories +for `iOS`_ and `Android`_. + +#. Obtain the OAuth client ID for the first mobile application from your + Django administration console. For more information, see :ref:`Create the + OAuth Clients`. + +#. In your custom GitHub configuration directory, edit the .yaml file for the + first mobile application. For example, for the edX mobile application for + iOS, edit your ``ios.yaml`` file. + +#. Add the following line to the .yaml file. + + :: + + OAUTH_CLIENT_ID: '{client_id_for_iOS_app}' + +#. Save the file. + +#. Repeat steps 1-4 for the second mobile application. + + + +.. _Configure OAuth Token Expiration Days: + +Configure OAuth Token Expiration +----------------------------------- + +When OAuth tokens expire, learners who use the mobile apps to access your site +must log in again. + +The ``lms/envs/common.py`` file includes the default configuration settings for +the number of days before OAuth tokens expire for confidential clients and +public clients. Instead of modifying the defaults in ``lms/envs/common.py``, add +the configuration settings to the ``lms.yml`` file and set values that will +override the default settings. + +To configure the number of days before OAuth tokens expire, follow these steps. + +#. In the ``edx/app/edxapp/lms.yml`` file, add the following lines to + specify the number of days that OAuth tokens remain valid for confidential + or public clients. + + .. note:: Make sure you add these lines at the top level of the JSON + dictionary, and not inside any other declarations. + + + .. code-block:: none + + "OAUTH_EXPIRE_CONFIDENTIAL_CLIENT_DAYS" : 365 + "OAUTH_EXPIRE_PUBLIC_CLIENT_DAYS" : 30 + +#. Save the ``lms.yml`` file, then restart the edxapp app. + + The values that you defined in ``lms.yml`` override the default + values defined in ``lms/envs/common.py``. + + +.. _Configuring Video Modules for Mobile: + +Configuring Video Modules for Mobile +===================================== + +Course videos must be specifically prepared to ensure that they are in +mobile accessible formats. Video modules in mobile-available courses should +have low resolution encodings that are readily accessible by mobile +devices. + +After you obtain a low resolution encoding for a video file and post it +online, your course team can add its location to the video module that +includes the video in the course structure. + +* To configure a video module in edX Studio, you edit the video component. On + the **Advanced** tab, in the **Video File URLs** field, enter the URL to the + mobile-targeted video as the first URL in the list. For more information, see + :ref:`Working with Video Components` in *Building and Running + an Open edX Course*. + +* To configure a video module by editing the course XML, enter the URL to the + mobile-targeted video as the first URL in the list of ``html5_sources``. For + more information, see :ref:`Video Components` in the *edX + Open Learning XML Guide*. + +Enabling Push Notifications +============================= + +You enable push notifications on the server and then configure each of the edX +mobile applications. Currently, you can use Parse for notification delivery. + +The procedures that follow assume that you have obtained an application ID, +REST API key, and client key from Parse. + +Enable Push Notification on the Server +----------------------------------------- + +To enable the push notification feature, follow these steps. + +#. In the ``edx/app/edxapp/studio.yml`` file, add the following lines. + + .. code-block:: none + + PARSE_KEYS = { + "APPLICATION_ID": "{app_id}", + "REST_API_KEY": "{API_key}" + } + +2. Save the ``edx/app/edxapp/studio.yml`` file. + +#. Restart the server. + +#. Log in to the Django administration console for your Studio URL. For + example, ``http://studio.{your_URL}/admin``. + +#. In the **Contentstore** section, select **Push notification configs**. + +#. Select **Add push notification config**. + +#. Verify that **Enabled** is selected, and then select **Save**. + +Configure Push Notification on the Clients +----------------------------------------------- + +The procedure that follows assumes that you use a single set of Parse +credentials for both of the edX mobile applications. + +You add push notification settings to the applicable custom configuration +.yaml file. For information about how to set up custom configuration +directories and files, see the GitHub repositories for `iOS`_ and `Android`_. + +#. In your custom GitHub configuration directory, edit the .yaml file that + stores configuration settings that are common to both of the edX mobile + applications. For example, edit your ``shared.yaml`` file. + +#. Add the following lines to the .yaml file. + + :: + + PARSE: + NOTIFICATIONS_ENABLED: true + APPLICATION_ID: {your application id} + CLIENT_KEY: {your client key} + + PUSH_NOTIFICATIONS: true + +#. Save the file. + +.. include:: ../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/mobile.rst b/source/site_ops/install_configure_run_guide/mobile.rst new file mode 100644 index 000000000..592536468 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/mobile.rst @@ -0,0 +1,28 @@ +.. _Setting up the Mobile Applications: + +############################################ +Setting Up the Open edX Mobile Applications +############################################ + +This section is intended for those are who are building Open edX mobile +applications and customizing an Open edX installation to support their use. + +Currently Supported Mobile Applications +*************************************** + +There are currently two supported mobile applications: + +* `Open edX Android App `_ + +* `Open edX iOS App `_ + +Mobile Documentation +******************** + +* `Implement Push Notification Channel `_ + +* `Manage Android Configuration `_ + +* `Manage iOS Configuration `_ + +.. include:: ../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/birch.rst b/source/site_ops/install_configure_run_guide/platform_releases/birch.rst new file mode 100644 index 000000000..9d71a42b9 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/birch.rst @@ -0,0 +1,94 @@ +.. _Open edX Birch Release: + +######################################## +Open edX Birch Release +######################################## + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Birch release. + +.. contents:: + :local: + :depth: 1 + +.. note:: + edX no longer supports the Birch release. + +****************************** +What's Included in Birch +****************************** + +The Open edX Birch release contains several new features for students, course +teams, and developers. See the Open edX Release Notes for more details. + +.. Note:: + There are several new features in the Birch release that are available, but + not configured in new installations. For details, see the following topics. + + * :ref:`Enable Course Prerequisites` + * :ref:`Enable Entrance Exams` + +****************************** +What is the Birch Git Tag? +****************************** + +The Git tag for the Birch release is **named-release/birch.2**. You use this tag +to identify the version of Open edX code that is the Birch release. + +The following Open edX Git repositories have the Git tag **named-release/birch.2**: + +* edx-platform +* configuration +* cs_comments_service +* notifier +* edx-certificates +* xqueue +* edx-documentation +* edx-ora2 +* XBlock + +****************************** +Upgrading from Aspen to Birch +****************************** + +You can upgrade your Open edX instance that is running the Aspen release to the +Birch release, using the ``migrate.sh`` script in the configuration repository, +`available here `_. + +.. note:: + The upgrade scripts provided are verified only for upgrading instances + running the Aspen release. If you are running any other version of the Open + edX Platform, the upgrade scripts might not work. + +.. caution:: + Before upgrading your Open edX instance, back up all data and configuration + files. Then verify that you can restore your Open edX instance from the + backup files. + +On the computer or virtual machine running the Aspen release of Open edX, run +the upgrade script for your type of installation: + +* For devstack, run ``./migrate.sh -t named-release/birch.2 -c devstack``. + +* For fullstack, run ``./migrate.sh -t named-release/birch.2 -c fullstack``. + +* You can also run ``./migrate.sh -h`` to see which other options the script accepts. + +The script creates a temporary directory in which it upgrades Open edX, then +cleans up extra files and directories when it finishes running. + +After upgrading Open edX to the Birch release, run the edX Platform and verify +that course content and data was migrated correctly. + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst b/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst new file mode 100644 index 000000000..60e4a5060 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst @@ -0,0 +1,102 @@ +.. _Open edX Cypress Release: + +######################################## +Open edX Cypress Release +######################################## + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes the Open edX Cypress release. Note that edX no longer +supports the Cypress release. + +.. contents:: + :local: + :depth: 1 + +****************************** +What's Included in Cypress +****************************** + +The Open edX Cypress release contains several new features for learners, course +teams, and developers. See the Open edX Release Notes for more details. + +.. Note:: + There are several new features in the Cypress release that are available, but + not enabled by default in new installations. For details, see the following + topics. + + + + * :ref:`Enable edX Search` + * :ref:`Enable CCX` + * :ref:`Enable Licensing` + * Badging - Support was dropped in Palm and so the documentation is no longer + available on the latest release. + +****************************** +What is the Cypress Git Tag? +****************************** + +The Git tag for the Cypress release is ``named-release/cypress``. You use this +tag to identify the version of Open edX code that is the Cypress release. + +The following Open edX Git repositories have the Git tag +``named-release/cypress``. + +* edx-platform +* configuration +* cs_comments_service +* notifier +* edx-certificates +* xqueue +* edx-documentation +* edx-ora2 +* XBlock + +******************************** +Upgrading from Birch to Cypress +******************************** + +You can upgrade an Open edX instance that is running the Birch release to the +Cypress release, by using the ``migrate.sh`` script in the configuration +repository, `available here +`_. + +.. note:: + The upgrade scripts provided are verified only for upgrading instances + running the Birch release. If you are running any other version of the Open + edX Platform, the upgrade scripts might not work. + +.. caution:: + Before upgrading your Open edX instance, back up all data and configuration + files. Then verify that you can restore your Open edX instance from the + backup files. + +On the computer or virtual machine that is running the Birch release of Open +edX, run the upgrade script for your type of installation: + +* For devstack, run ``./migrate.sh -c devstack``. + +* For fullstack, run ``./migrate.sh -c fullstack``. + +* You can also run ``./migrate.sh -h`` to see which other options the script + accepts. + +The script creates a temporary directory in which it upgrades Open edX, then +cleans up extra files and directories when it finishes running. + +After upgrading Open edX to the Cypress release, start the LMS and Studio and +verify that course content and data was migrated correctly. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst b/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst new file mode 100644 index 000000000..56336989a --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst @@ -0,0 +1,193 @@ +.. _Open edX Dogwood Release: + +######################################## +Open edX Dogwood Release +######################################## + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes the Open edX Dogwood release. Note that edX no longer +supports the Dogwood relesae. + +.. contents:: + :local: + :depth: 1 + +.. note:: + Now that the Open edX Eucalyptus release is available, edX no longer + supports the Dogwood release. + +****************************** +What's Included in Dogwood +****************************** + +The Open edX Dogwood release contains several new features for learners, course +teams, and developers. See the release notes for the +`Dogwood `_ for more details. + +****************************** +What Is the Dogwood Git Tag? +****************************** + +A Git tag identifies the version of Open edX code that is the Dogwood release. +You can find the most up-to-date Git tag for the current Open edX release on +the `Open edX Releases Wiki page`_. + +The following Open edX Git repositories have the Dogwood Git tag. + +* edx-platform +* configuration +* cs_comments_service +* xqueue +* XBlock +* notifier +* edx-ora2 +* edx-documentation +* edx-certificates +* edx-analytics-data-api-client +* edx-analytics-configuration +* edx-analytics-dashboard +* edx-analytics-data-api +* edx-analytics-pipeline + +********************************* +Upgrading from Cypress to Dogwood +********************************* + +You can upgrade an Open edX instance that is running the Cypress release to the +Dogwood release. EdX provides the ``migrate.sh`` script if you have a simple +Cypress installation and want to upgrade it automatically. If you have a more +complex or customized installation, you may need to upgrade manually. + +=================== +Automatic Upgrading +=================== + +`The migrate.sh script`_ is in the edX configuration repository on GitHub. + +.. note:: + The upgrade scripts provided are verified only for upgrading instances + running the Cypress release. If you are running any other version of the Open + edX Platform, the upgrade scripts might not work. + +.. caution:: + Before upgrading your Open edX instance, back up all data and configuration + files. Then verify that you can restore your Open edX instance from the + backup files. + +On the computer or virtual machine that is running the Cypress release of Open +edX, run the upgrade script for your type of installation. + +* For devstack, run ``./migrate.sh -c devstack -t named-release/dogwood``. + +* For fullstack, run + ``./migrate.sh -c fullstack -t named-release/dogwood``. + +You can find the most up-to-date Git tag for the current Open edX release on +the `Open edX Releases Wiki page`_. + +You can also run ``./migrate.sh -h`` to see which other options the script +accepts. + +The script creates a temporary directory in which it upgrades Open edX, then +cleans up extra files and directories when it finishes running. + +After upgrading Open edX to the Dogwood release, start the LMS and Studio and +verify that course content and data was migrated correctly. + +======================== +Upgrade Process Overview +======================== + +This is an overview of what happens during an upgrade from Cypress to Dogwood. +The ``migrate.sh`` script implements this process. You may need to understand +this process if your installation is customized in some way, or if you need to +diagnose problems during the upgrade. + +Upgrading Cypress to Dogwood is more involved than most Open edX release +upgrades. + +* Dogwood upgrades the Django framework from version 1.4 to 1.8, which changed + the database migration tool from South to Django. When you upgrade from + Cypress to Dogwood, it is important to take special care with the database + migrations. + +* Dogwood upgrades Python from 2.7.3 to 2.7.10. This means virtualenvs have to + be recreated. + +The upgrade from Cypress to Dogwood includes these steps. + +#. Applies a `forum migration described on the Open edX wiki`_ to support teams + discussion filtering. + +#. Updates edx-platform to the ``release-2015-11-09`` tag. This is the last + released version that used Django 1.4. + +#. Recreates the virtualenvs to use Python 2.7.10 instead of 2.7.3. + +#. Migrates the database. This makes the database current with the last 1.4 + code. + +#. Uninstalls South so that it does not interfere with the new Django + migrations. + +#. Updates edx-platform to the ``dogwood-first-18`` tag. This is the first + version of the code that used Django 1.8. + +#. Applies all the initial Django migrations. This gets your database ready to + use the new Django 1.8 migration mechanism. + +#. Updates edx-platform to Dogwood. + +#. Runs Django database migrations. + +#. Runs two management commands to update records in the database: + ``generate_course_overview`` and ``post_cohort_membership_fix``. + +#. Runs the forum migration again. This step processes any discussion topics + created during the running of the script. + +Similar steps are followed to upgrade other repositories such as xqueue. + + +************************************ +Upgrading to a Dogwood Point Release +************************************ + +Occasionally, we release updates to Dogwood. The first of these is named +Dogwood.1, then Dogwood.2, and so on. The steps differ based on your original +installation method. You will need to know the name of the Dogwood tag you +want to install, for example ``named-release/dogwood.2``. + +================================ +Upgrading a Vagrant Installation +================================ + +Devstack and Fullstack are installed using Vagrant. To upgrade to a Dogwood +point release, follow these steps in the host operating system. + +.. code-block:: bash + + $ export OPENEDX_RELEASE={desired-dogwood-tag} + $ vagrant provision + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the `Open edX Native 12.04 Installation`_, re-run +those steps using your desired Dogwood tag as the new value for +``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst b/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst new file mode 100644 index 000000000..d6a287fe7 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst @@ -0,0 +1,141 @@ +.. _Open edX Eucalyptus Release: + +######################################## +Open edX Eucalyptus Release +######################################## + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes the Open edX Eucalyptus release. Note that edX no longer +supports the Eucalyptus relesae. + +.. contents:: + :local: + :depth: 1 + +****************************** +What's Included in Eucalyptus +****************************** + +The Open edX Eucalyptus release contains several new features for learners, +course teams, and developers. For more information, see +`Open edX Eucalyptus Release `. + +******************************* +What Is the Eucalyptus Git Tag? +******************************* + +A Git tag identifies the version of Open edX code that is the Eucalyptus release. +You can find the most up-to-date Git tag for the current Open edX release on +the `Open edX Releases Wiki page`_. + +The following Open edX Git repositories have the Eucalyptus Git tag. + +* edx-platform +* configuration +* cs_comments_service +* xqueue +* XBlock +* notifier +* edx-ora2 +* edx-documentation +* edx-certificates +* edx-analytics-data-api-client +* edx-analytics-configuration +* edx-analytics-dashboard +* edx-analytics-data-api +* edx-analytics-pipeline + + +************************************ +Upgrading from Dogwood to Eucalyptus +************************************ + +You can upgrade an Open edX instance that is running the Dogwood release to the +Eucalyptus release. EdX provides the ``upgrade.sh`` script if you have a simple +Dogwood installation and want to upgrade it automatically. If you have a more +complex or customized installation, you may need to upgrade manually. + +`The upgrade.sh script`_ is in the edX configuration repository on GitHub. + +.. note:: + The upgrade script is only for upgrading instances running the Dogwood + release. If your instance is running a release prior to the Dogwood release, + follow the instructions to upgrade it to each intervening release, and then + upgrade from Dogwood to Eucalyptus. + +.. caution:: + Before upgrading your Open edX instance, back up all data and configuration + files. Then verify that you can restore your Open edX instance from the + backup files. + +On the computer or virtual machine that is running the Dogwood release of Open +edX, run the upgrade script for your type of installation. + +#. Download the script. + + .. code-block:: bash + + $ export OPENEDX_RELEASE=open-release/eucalyptus.1 + $ curl -OL https://raw.github.com/openedx/configuration/$OPENEDX_RELEASE/util/vagrant/upgrade.sh + +#. Run the script. + + * For devstack, run ``bash upgrade.sh -c devstack``. + + * For fullstack, run ``bash upgrade.sh -c fullstack``. + +You can find the most up-to-date Git tag for the current Open edX release on +the `Open edX Releases Wiki page`_. + +You can also run ``bash upgrade.sh -h`` to see which other options the script +accepts. + +The script creates a temporary directory in which it upgrades Open edX, then +cleans up extra files and directories when it finishes running. + +After upgrading Open edX to the Eucalyptus release, start the LMS and Studio and +verify that course content and data was migrated correctly. + + +******************************************** +Upgrading to a Subsequent Eucalyptus Release +******************************************** + +Occasionally, we release updates to Eucalyptus. For example, the second +release of Eucalyptus is ``open-release/eucalyptus.2``. +The steps to upgrade differ based on your original installation method. + +================================ +Upgrading a Vagrant Installation +================================ + +Devstack and Fullstack for Eucalyptus are installed using Vagrant. To upgrade +to a Eucalyptus point release, follow these steps in the host operating system. + +.. code-block:: bash + + $ export OPENEDX_RELEASE=open-release/eucalyptus.2 + $ vagrant provision + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the `Open edX Native 12.04 Installation`_, re-run +those steps using your desired Eucalyptus tag as the new value for +``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst + diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst b/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst new file mode 100644 index 000000000..4fa8f3749 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst @@ -0,0 +1,94 @@ +.. _Open edX Ficus Release: + +###################### +Open edX Ficus Release +###################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes the Open edX Ficus release. Note that edX no longer +supports the Ficus relesae. + +.. contents:: + :local: + :depth: 1 + +************************ +What's Included in Ficus +************************ + +The Open edX Ficus release contains several new features for learners, +course teams, and developers. For more information, see +`Ficus release notes `_. + +************************** +What Is the Ficus Git Tag? +************************** + +A git tag identifies the version of Open edX code that is the Ficus release. +You can find the most up-to-date git tag for the current Open edX release on +the `Open edX Releases Wiki page`_. + +The following Open edX git repositories have the Ficus git tag: + +* edx-platform +* configuration +* cs_comments_service +* xqueue +* ecommerce +* ecommerce-worker +* edx-analytics-configuration +* edx-analytics-dashboard +* edx-analytics-data-api +* edx-analytics-pipeline +* edx-certificates +* edx-custom-a11y-rules +* edx-demo-course +* edx-documentation +* edx-notes-api +* edx-ui-toolkit +* notifier +* programs +* ux-pattern-library + + +*************************************** +Upgrading to a Subsequent Ficus Release +*************************************** + +Occasionally, we release updates to Ficus. For example, the second +release of Ficus is ``open-release/ficus.2``. +The steps to upgrade differ based on your original installation method. + +================================ +Upgrading a Vagrant Installation +================================ + +Devstack and Fullstack are installed using Vagrant. To upgrade from one Ficus +release to another, run the following commands in the host operating system: + +.. code-block:: bash + + $ export OPENEDX_RELEASE=open-release/ficus.2 + $ vagrant provision + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the `Legacy Open edX Native Installation`_, you can +upgrade from one Ficus release to another by re-running those steps using your +desired Ficus tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst b/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst new file mode 100644 index 000000000..2b1ecc1d3 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst @@ -0,0 +1,196 @@ +.. _Open edX Ginkgo Release: + +######################## +Open edX Ginkgo Release +######################## + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes the Open edX Ginkgo release. + +.. contents:: + :local: + :depth: 1 + +************************** +What's Included in Ginkgo +************************** + +The Open edX Ginkgo release contains several new features for learners, +course teams, and developers. For more information, see +`Open edX Ginkgo Release Notes `_. + +**************************** +What Is the Ginkgo Git Tag? +**************************** + +A git tag identifies the version of Open edX code that is the Ginkgo release. +You can find the most up-to-date git tag for the current Open edX release on +the `Open edX Releases Wiki page`_. + +The following Open edX git repositories have the Ginkgo git tag: + +* edx-platform +* configuration +* course_discovery +* cs_comments_service +* xqueue +* ecommerce +* ecommerce-worker +* edx-analytics-configuration +* edx-analytics-dashboard +* edx-analytics-data-api +* edx-analytics-pipeline +* edx-certificates +* edx-custom-a11y-rules +* edx-demo-course +* edx-documentation +* edx-notes-api +* edx-ui-toolkit +* notifier +* ux-pattern-library + +********************************** +Upgrading from the Ficus Release +********************************** + +One approach to upgrading an existing installation of the Open edX Ficus +release to the Ginkgo release is to make a fresh installation of the Ginkgo +release on a new machine, and move your data and settings to it. + +To move and upgrade your Ficus data onto a Ginkgo installation, follow these +steps. + +#. Be sure that your Ficus installation is on Ficus.4. The Ficus.4 release + provided required database migrations beyond what was in Ficus.3. The only + version of Ficus that will upgrade to Ginkgo successfully is Ficus.4. + +#. Stop all services on the Ficus machine. + +#. Dump the data on the Ficus machine. Here's an example script that will dump + the MySQL and Mongo databases into a single ``.tgz`` file. The script will + prompt for the MySQL and Mongo passwords as needed. + + .. code-block:: bash + + #!/bin/bash + MYSQL_CONN="-uroot -p" + echo "Reading MySQL database names..." + mysql ${MYSQL_CONN} -ANe "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','information_schema','performance_schema', 'sys')" > /tmp/db.txt + DBS="--databases $(cat /tmp/db.txt)" + NOW="$(date +%Y%m%dT%H%M%S)" + SQL_FILE="mysql-data-${NOW}.sql" + echo "Dumping MySQL structures..." + mysqldump ${MYSQL_CONN} --add-drop-database --skip-add-drop-table --no-data ${DBS} > ${SQL_FILE} + echo "Dumping MySQL data..." + # If there is table data you don't need, add --ignore-table=tablename + mysqldump ${MYSQL_CONN} --no-create-info ${DBS} >> ${SQL_FILE} + + for db in edxapp cs_comments_service; do + echo "Dumping Mongo db ${db}..." + mongodump -u admin -p -h localhost --authenticationDatabase admin -d ${db} --out mongo-dump-${NOW} + done + + tar -czf openedx-data-${NOW}.tgz ${SQL_FILE} mongo-dump-${NOW} + +#. Copy the ``.tgz`` data file to the Ginkgo machine. + +#. Stop all services on the Ginkgo machine. + +#. Restore the Ficus data into the Ginkgo machine. As an example, you might use + the following commands. + + .. code-block:: bash + + $ tar -xvf openedx-data-20170811T154750.tgz + $ mysql -uroot -p < mysql-data-20170811T154750.sql + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d edxapp mongo-dump-20170811T154750/edxapp + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d cs_comment_service mongo-dump-20170811T154750/cs_comment_service_development + +#. To migrate data from Ficus to Ginkgo, you need to drop the database tables + used by djcelery. These tables should be empty in your Ficus data, so it is + safe to drop them. The edx-platform application has a management command to + check that they are empty and drop them: + + .. code-block:: bash + + $ sudo su - -s /bin/bash edxapp + edxapp@xyz:~$ . edxapp_env + edxapp@xyz:~$ cd edx-platform/ + edxapp@xyz:~/edx-platform$ python manage.py lms drop_djcelery_tables --settings=aws + +#. Run the Ginkgo migration script, which will update your Ficus data to be valid + for Ginkgo: + + .. code-block:: bash + + $ /edx/app/edx_ansible/edx_ansible/util/install/native.sh --tags migrate + +#. Copy your configuration files from the Ficus machine to the Ginkgo machine. + +#. Restart all services. + +.. _oscar_ginkgo: + +========================= +Upgrading Django Oscar +========================= + +The Ginkgo release of Open edX upgrades Django Oscar to version 1.4. If you have +an existing installation of Open edX with the E-Commerce service, and your +``orders`` table is larger than a million rows, there is an additional step to +upgrade your Django Oscar installation. + +The migration includes a change to the ``guest_email`` column in the ``orders`` +table. This change is applied automatically. If your ``orders`` table is larger +than a million rows, this migration may lock the table for an extended amount of +time. The E-Commerce service does not normally use the ``guest_email`` column. +If your installation does not use this column, you can avoid the table lock by +using the ``--fake`` argument in migrating the ``orders`` table, running the +``migrate`` command in the following form. + +.. code-block:: bash + + ./manage.py migrate orders 0013 --fake + + +**************************************** +Upgrading to a Subsequent Ginkgo Release +**************************************** + +Occasionally, we release updates to Ginkgo. For example, the second +release of Ginkgo will be ``open-release/ginkgo.2``. +The steps to upgrade differ based on your original installation method. + +================================ +Upgrading a Vagrant Installation +================================ + +Devstack and Fullstack are installed using Vagrant. To upgrade from one Ginkgo +release to another, run the following commands in the host operating system: + +.. code-block:: bash + + $ export OPENEDX_RELEASE=open-release/ginkgo.2 + $ vagrant provision + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the `Legacy Open edX Native Installation`_, you can +upgrade from one Ginkgo release to another by re-running those steps using your +desired Ginkgo tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst b/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst new file mode 100644 index 000000000..199acd12a --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst @@ -0,0 +1,177 @@ +.. _Open edX Hawthorn Release: + +######################### +Open edX Hawthorn Release +######################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Hawthorn release. + +.. contents:: + :local: + :depth: 1 + +**************************** +What's Included in Hawthorn +**************************** + +The Open edX Hawthorn release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/hawthorn.html + +======================= +User Retirement Feature +======================= + +The Hawthorn release also includes the new user retirement feature, which is a +set of APIs and tooling that enables Open edX instances to retire registered +users. There have been many changes to privacy laws (for example, GDPR or the +European Union General Data Protection Regulation) intended to change the way +that businesses think about and handle Personally Identifiable Information +(PII) data. The user retirement feature is a step toward enabling Open edX to +support some of the key updates in privacy laws. For more information, see +`retirement`_. + +****************************** +What Is the Hawthorn Git Tag? +****************************** + +A git tag identifies the version of Open edX code that is the Hawthorn release. +About two dozen repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Hawthorn on the +`Open edX Named Releases page`_. + +******************************* +Installing the Hawthorn Release +******************************* + +You can install the Open edX Hawthorn release using either +`devstack`_ or the `Legacy Open edX +Native Installation`_ instructions. + +Hawthorn releases have git tag names like ``open-release/hawthorn.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +.. _upgrade_ginkgo: + +********************************** +Upgrading from the Ginkgo Release +********************************** + +The recommended approach to upgrading an existing installation of the Open edX +Ginkgo release to the Hawthorn release is to make a fresh installation of the +Hawthorn release on a new machine, and move your data and settings to it. + +To move and upgrade your Ginkgo data onto a Hawthorn installation, follow these +steps. + +#. Be sure that your Ginkgo installation is on the latest + ``open-release/ginkgo.master``. This ensures that your database is fully + migrated and ready for upgrade to Hawthorn. + +#. Stop all services on the Ginkgo machine. + +#. Dump the data on the Ginkgo machine. Here's an example script that will dump + the MySQL and Mongo databases into a single ``.tgz`` file. The script will + prompt for the MySQL and Mongo passwords as needed. + + .. code-block:: bash + + #!/bin/bash + MYSQL_CONN="-uroot -p" + echo "Reading MySQL database names..." + mysql ${MYSQL_CONN} -ANe "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','information_schema','performance_schema', 'sys')" > /tmp/db.txt + DBS="--databases $(cat /tmp/db.txt)" + NOW="$(date +%Y%m%dT%H%M%S)" + SQL_FILE="mysql-data-${NOW}.sql" + echo "Dumping MySQL structures..." + mysqldump ${MYSQL_CONN} --add-drop-database --skip-add-drop-table --no-data ${DBS} > ${SQL_FILE} + echo "Dumping MySQL data..." + # If there is table data you don't need, add --ignore-table=tablename + mysqldump ${MYSQL_CONN} --no-create-info ${DBS} >> ${SQL_FILE} + + for db in edxapp cs_comments_service; do + echo "Dumping Mongo db ${db}..." + mongodump -u admin -p -h localhost --authenticationDatabase admin -d ${db} --out mongo-dump-${NOW} + done + + tar -czf openedx-data-${NOW}.tgz ${SQL_FILE} mongo-dump-${NOW} + +#. Copy the ``.tgz`` data file to the Hawthorn machine. + +#. Stop all services on the Hawthorn machine. + +#. Restore the Ginkgo data into the Hawthorn machine. As an example, you might + use the following commands. + + .. code-block:: bash + + $ tar -xvf openedx-data-20170811T154750.tgz + $ mysql -uroot -p < mysql-data-20170811T154750.sql + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d edxapp mongo-dump-20170811T154750/edxapp + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d cs_comment_service mongo-dump-20170811T154750/cs_comment_service_development + +#. To migrate data from Ginkgo to Hawthorn, you need to drop the database + tables used by djcelery. These tables should be empty in your Ginkgo data, + so it is safe to drop them. The edx-platform application has a management + command to check that they are empty and drop them: + + .. code-block:: bash + + $ sudo su - -s /bin/bash edxapp + edxapp@xyz:~$ . edxapp_env + edxapp@xyz:~$ cd edx-platform/ + edxapp@xyz:~/edx-platform$ python manage.py lms drop_djcelery_tables --settings=aws + +#. Run the Hawthorn migrations, which will update your Ginkgo data to be + valid for Hawthorn: + + .. code-block:: bash + + $ /edx/app/edx_ansible/edx_ansible/util/install/native.sh --tags migrate + +#. Copy your configuration files from the Ginkgo machine to the Hawthorn + machine. + +#. Restart all services. + + +****************************************** +Upgrading to a Subsequent Hawthorn Release +****************************************** + +Occasionally, we release updates to Hawthorn. For example, the second +release of Hawthorn will be ``open-release/hawthorn.2``. +The steps to upgrade differ based on your original installation method. + +================================ +Upgrading a Docker Installation +================================ + +Devstack is installed using Docker. To upgrade from one Hawthorn +release to another, follow the instructions in `devstack`_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the `Legacy Open edX Native Installation`_, you can +upgrade from one Hawthorn release to another by re-running those steps using +your desired Hawthorn tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/index.rst b/source/site_ops/install_configure_run_guide/platform_releases/index.rst new file mode 100644 index 000000000..3f5827ede --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/index.rst @@ -0,0 +1,27 @@ +.. _Open edX Platform Releases: + +########################## +Open edX Platform Releases +########################## + +The following sections provide information about releases of the Open edX +platform: + +.. toctree:: + :maxdepth: 2 + + latest + olive + nutmeg + maple + lilac + koa + juniper + ironwood + hawthorn + ginkgo + ficus + eucalyptus + dogwood + cypress + birch diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst b/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst new file mode 100644 index 000000000..66d34d09a --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst @@ -0,0 +1,164 @@ +.. _Open edX Ironwood Release: + +######################### +Open edX Ironwood Release +######################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Ironwood release. + +.. contents:: + :local: + :depth: 1 + +**************************** +What's Included in Ironwood +**************************** + +The Open edX Ironwood release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/ironwood.html + + +****************************** +What Is the Ironwood Git Tag? +****************************** + +A git tag identifies the version of Open edX code that is the Ironwood release. +About two dozen repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Ironwood on the +`Open edX Named Releases page`_. + +******************************* +Installing the Ironwood Release +******************************* + +You can install the Open edX Ironwood release using either +`devstack`_ or the `Legacy Open edX +Native Installation`_ instructions. + +Ironwood releases have git tag names like ``open-release/ironwood.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +.. _upgrade_hawthorn: + +*********************************** +Upgrading from the Hawthorn Release +*********************************** + +The recommended approach to upgrading an existing installation of the Open edX +Hawthorn release to the Ironwood release is to make a fresh installation of the +Ironwood release on a new machine, and move your data and settings to it. + +To move and upgrade your Hawthorn data onto a Ironwood installation, follow these +steps. + +#. Be sure that your Hawthorn installation is on the latest + ``open-release/hawthorn.master``. This ensures that your database is fully + migrated and ready for upgrade to Ironwood. + +#. Stop all services on the Hawthorn machine. + +#. Dump the data on the Hawthorn machine. Here's an example script that will dump + the MySQL and Mongo databases into a single ``.tgz`` file. The script will + prompt for the MySQL and Mongo passwords as needed. + + .. code-block:: bash + + #!/bin/bash + MYSQL_CONN="-uroot -p" + echo "Reading MySQL database names..." + mysql ${MYSQL_CONN} -ANe "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','information_schema','performance_schema', 'sys')" > /tmp/db.txt + DBS="--databases $(cat /tmp/db.txt)" + NOW="$(date +%Y%m%dT%H%M%S)" + SQL_FILE="mysql-data-${NOW}.sql" + echo "Dumping MySQL structures..." + mysqldump ${MYSQL_CONN} --add-drop-database --skip-add-drop-table --no-data ${DBS} > ${SQL_FILE} + echo "Dumping MySQL data..." + # If there is table data you don't need, add --ignore-table=tablename + mysqldump ${MYSQL_CONN} --no-create-info ${DBS} >> ${SQL_FILE} + + for db in edxapp cs_comments_service; do + echo "Dumping Mongo db ${db}..." + mongodump -u admin -p -h localhost --authenticationDatabase admin -d ${db} --out mongo-dump-${NOW} + done + + tar -czf openedx-data-${NOW}.tgz ${SQL_FILE} mongo-dump-${NOW} + +#. Copy the ``.tgz`` data file to the Ironwood machine. + +#. Stop all services on the Ironwood machine. + +#. Restore the Hawthorn data into the Ironwood machine. As an example, you might + use the following commands. + + .. code-block:: bash + + $ tar -xvf openedx-data-20170811T154750.tgz + $ mysql -uroot -p < mysql-data-20170811T154750.sql + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d edxapp mongo-dump-20170811T154750/edxapp + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d cs_comment_service mongo-dump-20170811T154750/cs_comment_service_development + +#. To migrate data from Hawthorn to Ironwood, you need to drop the database + tables used by djcelery. These tables should be empty in your Hawthorn data, + so it is safe to drop them. The edx-platform application has a management + command to check that they are empty and drop them: + + .. code-block:: bash + + $ sudo su - -s /bin/bash edxapp + edxapp@xyz:~$ . edxapp_env + edxapp@xyz:~$ cd edx-platform/ + edxapp@xyz:~/edx-platform$ python manage.py lms drop_djcelery_tables --settings=aws + +#. Run the Ironwood migrations, which will update your Hawthorn data to be + valid for Ironwood: + + .. code-block:: bash + + $ /edx/app/edx_ansible/edx_ansible/util/install/native.sh --tags migrate + +#. Copy your configuration files from the Hawthorn machine to the Ironwood + machine. + +#. Restart all services. + +****************************************** +Upgrading to a Subsequent Ironwood Release +****************************************** + +Occasionally, we release updates to Ironwood. For example, the second +release of Ironwood will be ``open-release/ironwood.2``. +The steps to upgrade differ based on your original installation method. + +================================ +Upgrading a Docker Installation +================================ + +Devstack is installed using Docker. To upgrade from one Ironwood +release to another, follow the instructions in `devstack`_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the `Legacy Open edX Native Installation`_, you can +upgrade from one Ironwood release to another by re-running those steps using +your desired Ironwood tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst b/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst new file mode 100644 index 000000000..dd4f11478 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst @@ -0,0 +1,148 @@ +.. _Open edX Juniper Release: + +######################### +Open edX Juniper Release +######################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Juniper release. + +.. contents:: + :local: + :depth: 1 + +**************************** +What's Included in Juniper +**************************** + +The Open edX Juniper release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/juniper.html + + +****************************** +What Is the Juniper Git Tag? +****************************** + +A git tag identifies the version of Open edX code that is the Juniper release. +About three dozen repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Juniper on the +`Open edX Named Releases page`_. + +******************************* +Installing the Juniper Release +******************************* + +You can install the Open edX Juniper release using either +`devstack`_ or the `Legacy Open edX Native Installation`_ instructions. + +Juniper releases have git tag names like ``open-release/juniper.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +*********************************** +Upgrading from the Ironwood Release +*********************************** + +The recommended approach to upgrading an existing installation of the Open edX +Ironwood release to the Juniper release is to make a fresh installation of the +Juniper release on a new machine, and move your data and settings to it. + +To move and upgrade your Ironwood data onto a Juniper installation, follow these +steps. + +#. Be sure that your Ironwood installation is on the latest commit from + ``open-release/ironwood.master``. This ensures that your database is fully + migrated and ready for upgrade to Juniper. + +#. Stop all services on the Ironwood machine. + +#. Dump the data on the Ironwood machine. Here's an example script that will dump + the MySQL and Mongo databases into a single ``.tgz`` file. The script will + prompt for the MySQL and Mongo passwords as needed. + + .. code-block:: bash + + #!/bin/bash + MYSQL_CONN="-uroot -p" + echo "Reading MySQL database names..." + mysql ${MYSQL_CONN} -ANe "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','information_schema','performance_schema', 'sys')" > /tmp/db.txt + DBS="--databases $(cat /tmp/db.txt)" + NOW="$(date +%Y%m%dT%H%M%S)" + SQL_FILE="mysql-data-${NOW}.sql" + echo "Dumping MySQL structures..." + mysqldump ${MYSQL_CONN} --add-drop-database --skip-add-drop-table --no-data ${DBS} > ${SQL_FILE} + echo "Dumping MySQL data..." + # If there is table data you don't need, add --ignore-table=tablename + mysqldump ${MYSQL_CONN} --no-create-info ${DBS} >> ${SQL_FILE} + + for db in edxapp cs_comments_service; do + echo "Dumping Mongo db ${db}..." + mongodump -u admin -p -h localhost --authenticationDatabase admin -d ${db} --out mongo-dump-${NOW} + done + + tar -czf openedx-data-${NOW}.tgz ${SQL_FILE} mongo-dump-${NOW} + +#. Copy the ``.tgz`` data file to the Juniper machine. + +#. Stop all services on the Juniper machine. + +#. Restore the Ironwood data into the Juniper machine. As an example, you might + use the following commands. + + .. code-block:: bash + + $ tar -xvf openedx-data-20200411T154750.tgz + $ mysql -uroot -p < mysql-data-20200411T154750.sql + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d edxapp mongo-dump-20200411T154750/edxapp + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d cs_comment_service mongo-dump-20200411T154750/cs_comment_service_development + +#. Run the Juniper migrations, which will update your Ironwood data to be + valid for Juniper: + + .. code-block:: bash + + $ /edx/app/edx_ansible/edx_ansible/util/install/native.sh --tags migrate + +#. Copy your configuration files from the Ironwood machine to the Juniper machine. + +#. Restart all services. + +****************************************** +Upgrading to a Subsequent Juniper Release +****************************************** + +Occasionally, we release updates to Juniper. For example, the second +release of Juniper will be ``open-release/juniper.2``. +The steps to upgrade differ based on your original installation method. + +================================ +Upgrading a Docker Installation +================================ + +Devstack is installed using Docker. To upgrade from one Juniper +release to another, follow the instructions in `devstack`_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the `Legacy Open edX Native Installation`_, you can +upgrade from one Juniper release to another by re-running those steps using +your desired Juniper tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/koa.rst b/source/site_ops/install_configure_run_guide/platform_releases/koa.rst new file mode 100644 index 000000000..a9fbf7844 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/koa.rst @@ -0,0 +1,158 @@ +.. _Open edX Koa Release: + +#################### +Open edX Koa Release +#################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Koa release. + +.. contents:: + :local: + :depth: 1 + +********************** +What's Included in Koa +********************** + +The Open edX Koa release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Platform Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/koa.html + + +************************ +What Is the Koa Git Tag? +************************ + +A git tag identifies the version of Open edX code that is the Koa release. +About three dozen repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Koa on the +`Open edX Named Releases page`_. + +************************** +Installing the Koa Release +************************** + +.. warning:: + + This release is unsupported. + +See `Tutor installation instructions `_. + +You can install the Open edX Koa release using either +`devstack`_ or the Open edX Native Installation. + +Koa releases have git tag names like ``open-release/koa.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +********************************** +Upgrading from the Juniper Release +********************************** + +The recommended approach to upgrading an existing installation of the Open edX +Juniper release to the Koa release is to make a fresh installation of the +Koa release on a new machine, and move your data and settings to it. + +To move and upgrade your Juniper data onto a Koa installation, follow these +steps. + +#. Be sure that your Juniper installation is on the latest commit from + ``open-release/juniper.master``. This ensures that your database is fully + migrated and ready for upgrade to Koa. + +#. Stop all services on the Juniper machine. + +#. Dump the data on the Juniper machine. Here's an example script that will dump + the MySQL and Mongo databases into a single ``.tgz`` file. The script will + prompt for the MySQL and Mongo passwords as needed. + + .. code-block:: bash + + #!/bin/bash + MYSQL_CONN="-uroot -p" + echo "Reading MySQL database names..." + mysql ${MYSQL_CONN} -ANe "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','information_schema','performance_schema', 'sys')" > /tmp/db.txt + DBS="--databases $(cat /tmp/db.txt)" + NOW="$(date +%Y%m%dT%H%M%S)" + SQL_FILE="mysql-data-${NOW}.sql" + echo "Dumping MySQL structures..." + mysqldump ${MYSQL_CONN} --add-drop-database --skip-add-drop-table --no-data ${DBS} > ${SQL_FILE} + echo "Dumping MySQL data..." + # If there is table data you don't need, add --ignore-table=tablename + mysqldump ${MYSQL_CONN} --no-create-info ${DBS} >> ${SQL_FILE} + + for db in edxapp cs_comments_service; do + echo "Dumping Mongo db ${db}..." + mongodump -u admin -p -h localhost --authenticationDatabase admin -d ${db} --out mongo-dump-${NOW} + done + + tar -czf openedx-data-${NOW}.tgz ${SQL_FILE} mongo-dump-${NOW} + +#. Copy the ``.tgz`` data file to the Koa machine. + +#. Stop all services on the Koa machine. + +#. Restore the Juniper data into the Koa machine. As an example, you might + use the following commands. + + .. code-block:: bash + + $ tar -xvf openedx-data-20200411T154750.tgz + $ mysql -uroot -p < mysql-data-20200411T154750.sql + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d edxapp mongo-dump-20200411T154750/edxapp + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d cs_comment_service mongo-dump-20200411T154750/cs_comment_service_development + +#. Run the Koa migrations, which will update your Juniper data to be + valid for Koa: + + .. code-block:: bash + + $ /edx/app/edx_ansible/edx_ansible/util/install/native.sh --tags migrate + +#. Copy your configuration files from the Juniper machine to the Koa machine. + +#. Restart all services. + +************************************* +Upgrading to a Subsequent Koa Release +************************************* + +Occasionally, we release updates to Koa. For example, the second +release of Koa will be ``open-release/koa.2``. +The steps to upgrade differ based on your original installation method. + +=============================== +Upgrading a Docker Installation +=============================== + +Devstack is installed using Docker. To upgrade from one Koa +release to another, follow the instructions in `devstack`_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the Open edX Native Installation, please +migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful, +as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. + +If you installed Open edX using the Open edX Native Installation, you can +upgrade from one Koa release to another by re-running those steps using +your desired Koa tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/latest.rst b/source/site_ops/install_configure_run_guide/platform_releases/latest.rst new file mode 100644 index 000000000..fcdc22612 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/latest.rst @@ -0,0 +1,15 @@ +.. _Open edX Latest Platform Release: + +################################ +Open edX Latest Platform Release +################################ + +The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the +authoratative sources of information on all Open edX releases. It is *strongly* +recommended to operate off the latest Open edX release at all points in time, as +only the most recent release is community-supported. + +See the `Open edX Release Schedule`_ for information on release dates and end-of-life +support. + +.. include:: ../../../links/links.rst \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst b/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst new file mode 100644 index 000000000..1bb3a74bd --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst @@ -0,0 +1,161 @@ +.. _Open edX Lilac Release: + +###################### +Open edX Lilac Release +###################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Lilac release. + +.. contents:: + :local: + :depth: 1 + +************************ +What's Included in Lilac +************************ + +The Open edX Lilac release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Platform Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/lilac.html + + +************************** +What Is the Lilac Git Tag? +************************** + +A git tag identifies the version of Open edX code that is the Lilac release. +About three dozen repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Lilac on the +`Open edX Named Releases page`_. + +**************************** +Installing the Lilac Release +**************************** + +.. warning:: + + This release is unsupported. + +See `Tutor installation instructions `_. + +You can install the Open edX Lilac release using the `Open edX Installation`_ +instructions. + +Lilac releases have git tag names like ``open-release/lilac.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +****************************** +Upgrading from the Koa Release +****************************** + +The recommended approach to upgrading an existing installation of the Open edX +Koa release to the Lilac release is to make a fresh installation of the +Lilac release on a new machine, and move your data and settings to it. + +To move and upgrade your Koa data onto a Lilac installation, follow these +steps. + +#. Be sure that your Koa installation is on the latest commit from + ``open-release/koa.master``. This ensures that your database is fully + migrated and ready for upgrade to Lilac. + +#. Stop all services on the Koa machine. + +#. Dump the data on the Koa machine. Here's an example script that will dump + the MySQL and Mongo databases into a single ``.tgz`` file. The script will + prompt for the MySQL and Mongo passwords as needed. + + .. code-block:: bash + + #!/bin/bash + MYSQL_CONN="-uroot -p" + echo "Reading MySQL database names..." + mysql ${MYSQL_CONN} -ANe "SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','information_schema','performance_schema', 'sys')" > /tmp/db.txt + DBS="--databases $(cat /tmp/db.txt)" + NOW="$(date +%Y%m%dT%H%M%S)" + SQL_FILE="mysql-data-${NOW}.sql" + echo "Dumping MySQL structures..." + mysqldump ${MYSQL_CONN} --add-drop-database --skip-add-drop-table --no-data ${DBS} > ${SQL_FILE} + echo "Dumping MySQL data..." + # If there is table data you don't need, add --ignore-table=tablename + mysqldump ${MYSQL_CONN} --no-create-info ${DBS} >> ${SQL_FILE} + + for db in edxapp cs_comments_service; do + echo "Dumping Mongo db ${db}..." + mongodump -u admin -p -h localhost --authenticationDatabase admin -d ${db} --out mongo-dump-${NOW} + done + + tar -czf openedx-data-${NOW}.tgz ${SQL_FILE} mongo-dump-${NOW} + +#. Copy the ``.tgz`` data file to the Lilac machine. + +#. Stop all services on the Lilac machine. + +#. Restore the Koa data into the Lilac machine. As an example, you might + use the following commands. + + .. code-block:: bash + + $ tar -xvf openedx-data-20200411T154750.tgz + $ mysql -uroot -p < mysql-data-20200411T154750.sql + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d edxapp mongo-dump-20200411T154750/edxapp + $ mongorestore -u admin -p -h localhost --authenticationDatabase admin --drop -d cs_comment_service mongo-dump-20200411T154750/cs_comment_service_development + +#. Run the Lilac migrations, which will update your Koa data to be + valid for Lilac: + + .. code-block:: bash + + $ /edx/app/edx_ansible/edx_ansible/util/install/native.sh --tags migrate + +#. Copy your configuration files from the Koa machine to the Lilac machine. + +#. Restart all services. + +*************************************** +Upgrading to a Subsequent Lilac Release +*************************************** + +Occasionally, we release updates to Lilac. For example, the second +release of Lilac will be ``open-release/lilac.2``. +The steps to upgrade differ based on your original installation method. + +=============================== +Upgrading a Docker Installation +=============================== + +Devstack is installed using Docker. To upgrade from one Lilac +release to another, follow the instructions in `devstack`_. + +The `devstack`_ installation method is deprecated. It is recommended +to migrate to Tutor. See `Tutor installation instructions `_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the Open edX Native Installation, please +migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful, +as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. + +If you installed Open edX using the Open edX Native Installation, you can +upgrade from one Lilac release to another by re-running those steps using +your desired Lilac tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/maple.rst b/source/site_ops/install_configure_run_guide/platform_releases/maple.rst new file mode 100644 index 000000000..4fe6e6291 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/maple.rst @@ -0,0 +1,94 @@ +.. _Open edX Maple Release: + +###################### +Open edX Maple Release +###################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Maple release. + +.. contents:: + :local: + :depth: 1 + +************************ +What's Included in Maple +************************ + +The Open edX Maple release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Platform Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/maple.html + + +************************** +What Is the Maple Git Tag? +************************** + +A git tag identifies the version of Open edX code that is the Maple release. +About three dozen repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Maple on the +`Open edX Named Releases page`_. + +**************************** +Installing the Maple Release +**************************** + +.. warning:: + + This release is unsupported. + +See `Tutor installation instructions `_. + +Maple releases have git tag names like ``open-release/maple.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +********************************* +Upgrading from the Lilac Release +********************************* + +See `Tutor upgrade instructions `_. + + +*************************************** +Upgrading to a Subsequent Maple Release +*************************************** + +Occasionally, we release updates to Maple. For example, the second +release of Maple will be ``open-release/maple.2``. +The steps to upgrade differ based on your original installation method. + +=============================== +Upgrading a Docker Installation +=============================== + +The `devstack`_ installation method is deprecated. It is recommended +to migrate to Tutor. See `Tutor installation instructions `_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the Open edX Native Installation, please +migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful, +as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. + +If you installed Open edX using the Open edX Native Installation, you can +upgrade from one Maple release to another by re-running those steps using +your desired Maple tag as the new value for ``OPENEDX_RELEASE``. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst b/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst new file mode 100644 index 000000000..85d494f37 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst @@ -0,0 +1,89 @@ +.. _Open edX Nutmeg Release: + +####################### +Open edX Nutmeg Release +####################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Nutmeg release. + +.. contents:: + :local: + :depth: 1 + +************************* +What's Included in Nutmeg +************************* + +The Open edX Nutmeg release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Platform Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/nutmeg.html + + +*************************** +What Is the Nutmeg Git Tag? +*************************** + +A git tag identifies the version of Open edX code that is the Nutmeg release. +About three dozen repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Nutmeg on the +`Open edX Named Releases page`_. + +***************************** +Installing the Nutmeg Release +***************************** + +.. warning:: + + This release is unsupported. + +See `Tutor installation instructions `_. + +Nutmeg releases have git tag names like ``open-release/nutmeg.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +******************************** +Upgrading from the Maple Release +******************************** + +See `Tutor upgrade instructions `_. + +**************************************** +Upgrading to a Subsequent Nutmeg Release +**************************************** + +Occasionally, we release updates to Nutmeg. For example, the second +release of Nutmeg will be ``open-release/nutmeg.2``. +The steps to upgrade differ based on your original installation method. + +=============================== +Upgrading a Docker Installation +=============================== + +The `devstack`_ installation method is deprecated. It is recommended +to migrate to Tutor. See `Tutor installation instructions `_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the Open edX Native Installation, please +migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful, +as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. + + +.. include:: ../../../links/links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/olive.rst b/source/site_ops/install_configure_run_guide/platform_releases/olive.rst new file mode 100644 index 000000000..6803e8c60 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/platform_releases/olive.rst @@ -0,0 +1,88 @@ +.. _Open edX Olive Release: + +###################### +Open edX Olive Release +###################### + +.. warning:: + + This release is unsupported. + + The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + authoratative sources of information on all Open edX releases. It is *strongly* + recommended to operate off the latest Open edX release at all points in time, as + only the most recent release is community-supported. + + See the `Open edX Release Schedule`_ for information on release dates and end-of-life + support. + +This section describes how to install the Open edX Olive release. + +.. contents:: + :local: + :depth: 1 + +************************* +What's Included in Olive +************************* + +The Open edX Olive release contains several new features for learners, +course teams, and developers. For more information, see the +`Open edX Platform Release Notes`__. + +__ https://docs.openedx.org/en/latest/community/release_notes/olive.html + +************************** +What Is the Olive Git Tag? +************************** + +A git tag identifies the version of Open edX code that is the Olive release. +Over fourty repositories are tagged as part of an Open edX release. Many +other repositories are installed as dependencies of those repositories. You can +find the most up-to-date git tag for Olive on the +`Open edX Named Releases page`_. + +**************************** +Installing the Olive Release +**************************** + +.. warning:: + + This release is unsupported. + +See `Tutor installation instructions `_. + +Olive releases have git tag names like ``open-release/olive.1``. +The available names are detailed on the `Open edX Named Releases page`_. + +********************************* +Upgrading from the Nutmeg Release +********************************* + +See `Tutor upgrade instructions `_. + +*************************************** +Upgrading to a Subsequent Olive Release +*************************************** + +Occasionally, we release updates to Olive. For example, the second +release of Olive will be ``open-release/olive.2``. +The steps to upgrade differ based on your original installation method. + +=============================== +Upgrading a Docker Installation +=============================== + +The `devstack`_ installation method is deprecated. It is recommended +to migrate to Tutor. See `Tutor installation instructions `_. + +=============================== +Upgrading a Native Installation +=============================== + +If you installed Open edX using the Open edX Native Installation, please +migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful, +as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. + + +.. include:: ../../../links/links.rst From 13392ae262c714eedf839eff87ae135d5dc7a852 Mon Sep 17 00:00:00 2001 From: sarina Date: Sat, 8 Mar 2025 09:22:41 -0500 Subject: [PATCH 2/4] Replace all relative refs to links.rst with absolute refs --- .../changing_appearance/drag_and_drop_problem_styling.rst | 2 +- .../configuration/customize_registration_page.rst | 2 +- .../configuration/deprecated_add_course_talk_widget.rst | 2 +- .../install_configure_run_guide/configuration/edx_search.rst | 2 +- .../install_configure_run_guide/configuration/enable_ccx.rst | 2 +- .../configuration/enable_certificates.rst | 2 +- .../configuration/enable_custom_course_settings.rst | 2 +- .../configuration/enable_discussion_notifications.rst | 2 +- .../configuration/enable_entrance_exams.rst | 2 +- .../configuration/enable_licensing.rst | 2 +- .../install_configure_run_guide/configuration/enable_pacing.rst | 2 +- .../configuration/enable_prerequisites.rst | 2 +- .../configuration/enable_public_course.rst | 2 +- .../configuration/enable_socialsharing_icons.rst | 2 +- .../configuration/enable_timed_exams.rst | 2 +- .../configuration/install_xblock.rst | 2 +- .../configuration/lti/configure_lti.rst | 2 +- .../install_configure_run_guide/configuration/lti/index.rst | 2 +- .../install_configure_run_guide/configuration/lti/tpa_lti.rst | 2 +- .../install_configure_run_guide/configuration/ora2/index.rst | 2 +- .../configuration/ora2/ora2_blacklist.rst | 2 +- .../configuration/ora2/ora2_uploads.rst | 2 +- .../install_configure_run_guide/configuration/password.rst | 2 +- .../configuration/static_replace/cdn.rst | 2 +- .../configuration/tpa/tpa_SAML_SP.rst | 2 +- .../configuration/tpa/tpa_behavior.rst | 2 +- .../configuration/tpa/tpa_eliminating_pii.rst | 2 +- .../configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst | 2 +- .../configuration/tpa/tpa_integrate_open/tpa_oauth.rst | 2 +- .../configuration/tpa/tpa_providers.rst | 2 +- .../install_configure_run_guide/configuration/transcripts.rst | 2 +- .../configuration/updating_platform.rst | 2 +- .../install_configure_run_guide/configuration/youtube_api.rst | 2 +- .../ecommerce-deprecated/additional_features/gate_ecommerce.rst | 2 +- .../additional_features/send_notifications.rst | 2 +- .../ecommerce-deprecated/additional_features/track_data.rst | 2 +- .../ecommerce-deprecated/create_products/create_coupons.rst | 2 +- .../create_products/create_course_seats.rst | 2 +- .../create_products/create_enrollment_codes.rst | 2 +- .../create_products/create_products_overview.rst | 2 +- .../create_products/create_program_offers.rst | 2 +- .../ecommerce-deprecated/create_products/create_programs.rst | 2 +- .../ecommerce-deprecated/create_products/index.rst | 2 +- .../ecommerce-deprecated/enable_receipt_page.rst | 2 +- .../install_configure_run_guide/ecommerce-deprecated/index.rst | 2 +- .../ecommerce-deprecated/install_ecommerce.rst | 2 +- .../ecommerce-deprecated/manage_assets.rst | 2 +- .../ecommerce-deprecated/manage_orders.rst | 2 +- .../ecommerce-deprecated/test_ecommerce.rst | 2 +- .../feature_flags/feature_flag_index.rst | 2 +- .../install_configure_run_guide/front_matter/getting_help.rst | 2 +- .../install_configure_run_guide/front_matter/read_me.rst | 2 +- source/site_ops/install_configure_run_guide/index.rst | 2 +- .../install_configure_run_guide/insights/elastic_mapreduce.rst | 2 +- source/site_ops/install_configure_run_guide/insights/index.rst | 2 +- .../install_configure_run_guide/insights/install_insights.rst | 2 +- .../site_ops/install_configure_run_guide/installation/index.rst | 2 +- .../site_ops/install_configure_run_guide/installation/tutor.rst | 2 +- .../site_ops/install_configure_run_guide/mobile-deprecated.rst | 2 +- source/site_ops/install_configure_run_guide/mobile.rst | 2 +- .../install_configure_run_guide/platform_releases/birch.rst | 2 +- .../install_configure_run_guide/platform_releases/cypress.rst | 2 +- .../install_configure_run_guide/platform_releases/dogwood.rst | 2 +- .../platform_releases/eucalyptus.rst | 2 +- .../install_configure_run_guide/platform_releases/ficus.rst | 2 +- .../install_configure_run_guide/platform_releases/ginkgo.rst | 2 +- .../install_configure_run_guide/platform_releases/hawthorn.rst | 2 +- .../install_configure_run_guide/platform_releases/ironwood.rst | 2 +- .../install_configure_run_guide/platform_releases/juniper.rst | 2 +- .../install_configure_run_guide/platform_releases/koa.rst | 2 +- .../install_configure_run_guide/platform_releases/latest.rst | 2 +- .../install_configure_run_guide/platform_releases/lilac.rst | 2 +- .../install_configure_run_guide/platform_releases/maple.rst | 2 +- .../install_configure_run_guide/platform_releases/nutmeg.rst | 2 +- .../install_configure_run_guide/platform_releases/olive.rst | 2 +- 75 files changed, 75 insertions(+), 75 deletions(-) diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst index 000332151..2102e9690 100644 --- a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst @@ -85,4 +85,4 @@ Python module, follow these steps. #. Restart the LMS. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst b/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst index 27608470d..0de1be8a9 100644 --- a/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst +++ b/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst @@ -64,4 +64,4 @@ To add custom fields to the registration page, follow these steps. page in `GitHub`_. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst b/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst index 5da2d9de6..97e4417ea 100644 --- a/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst +++ b/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst @@ -55,4 +55,4 @@ To add the CourseTalk widget, follow these steps. #. In the right pane, verify that the CourseTalk widget appears below the course information panel. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/edx_search.rst b/source/site_ops/install_configure_run_guide/configuration/edx_search.rst index c288385a6..b49c64e60 100644 --- a/source/site_ops/install_configure_run_guide/configuration/edx_search.rst +++ b/source/site_ops/install_configure_run_guide/configuration/edx_search.rst @@ -190,4 +190,4 @@ LMS * LMS implementation: ``lms.lib.courseware_search.lms_filter_generator.LmsSearchFilterGenerator`` -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst b/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst index 19317fb52..9ed21f794 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst @@ -29,4 +29,4 @@ Open edX, you must configure the ``server-vars.yml`` file in the edX platform. #. Restart the LMS server. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst b/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst index 915707155..8e0c04190 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst @@ -399,6 +399,6 @@ will have been generated for eligible learners. #. You can then view the certificates in the ``certificates_generatedcertificate`` database table. -.. include:: ../../../links/links.rst +.. include:: /links.rst .. _edx/credentials: https://github.com/openedx/credentials diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst b/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst index 8a6d8b138..2d48c155f 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst @@ -22,4 +22,4 @@ of Open edX, you must configure the ``studio.yml`` file in the edX platform. #. Restart the LMS server. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst b/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst index 8e9f2ac6c..52d5b6b52 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst @@ -60,4 +60,4 @@ of Open edX. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst b/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst index 407724a07..a2e8467fe 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst @@ -47,4 +47,4 @@ files, which are located one level above the ``edx-platform`` directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst b/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst index a9f733cc7..85eb2aada 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst @@ -50,4 +50,4 @@ files, which are located one level above the ``edx-platform`` directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst b/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst index 41338918d..4e84a2e09 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst @@ -49,4 +49,4 @@ using the Django administration console for your Open edX LMS. checkboxes. #. Select **Save**. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst b/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst index 50a2a2a86..83dc14432 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst @@ -49,4 +49,4 @@ directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst b/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst index 1c900c593..a2552926d 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst @@ -121,4 +121,4 @@ including the following. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst b/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst index fe106bd0e..11325b7d9 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst @@ -140,4 +140,4 @@ This URL is provided to the social sharing site for linking back to a course location. This URL is used only if you have enabled custom URLs in your instance of Open edX. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst b/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst index a5ffdda4e..a32a62244 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst @@ -51,4 +51,4 @@ directory. #. Restart the Studio (CMS) and Learning Management System (LMS) processes so that your updates are loaded. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst b/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst index fc8a327fe..24e858a94 100644 --- a/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst +++ b/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst @@ -43,4 +43,4 @@ enable the XBlock for their courses. To do so, they add the name specified in the XBlock’s ``setup.py`` file to each course's advanced module list. For more information, see :ref:`Enable Additional Exercises and Tools`. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst index a4395e5cc..dfc1b69bf 100644 --- a/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst +++ b/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst @@ -101,4 +101,4 @@ follow these steps. #. Select **Save** at the bottom of the page. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/index.rst b/source/site_ops/install_configure_run_guide/configuration/lti/index.rst index 6e232a975..f5b2c6cb0 100644 --- a/source/site_ops/install_configure_run_guide/configuration/lti/index.rst +++ b/source/site_ops/install_configure_run_guide/configuration/lti/index.rst @@ -26,4 +26,4 @@ an external LMS as a consumer of edX course content, see :ref:`Using Open edX as an LTI Tool Provider` in the *Building and Running an edX Course* guide. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst index dabc3e8d6..63e574810 100644 --- a/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst +++ b/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst @@ -132,4 +132,4 @@ steps. **Unlink** next to the LTI provider configuration name. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst index e52be6799..ce936d431 100644 --- a/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst @@ -19,5 +19,5 @@ response assessment, see :ref:`Open Response Assessments Two` in the *Building and Running an Open edX Course* guide. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst index 7a45302ec..f40e69f4f 100644 --- a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst @@ -1,5 +1,5 @@ -.. include:: ../../../../links/links.rst +.. include:: /links.rst .. _Configuring ORA2 to Prohibit Submission of File Types: diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst index 3bd0ec4c1..4db449b29 100644 --- a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst @@ -1,4 +1,4 @@ -.. include:: ../../../../links/links.rst +.. include:: /links.rst .. _Configuring ORA2 to Upload Files to Alternative Storage Systems: diff --git a/source/site_ops/install_configure_run_guide/configuration/password.rst b/source/site_ops/install_configure_run_guide/configuration/password.rst index f003b8a97..3561dc43f 100644 --- a/source/site_ops/install_configure_run_guide/configuration/password.rst +++ b/source/site_ops/install_configure_run_guide/configuration/password.rst @@ -104,4 +104,4 @@ to the ``lms.yml`` configuration file. AUTH_PASSWORD_VALIDATORS: - NAME: path.to.module.MyPasswordValidatorClass -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst b/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst index 8412502d5..b7f5214fa 100644 --- a/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst +++ b/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst @@ -69,4 +69,4 @@ After you configure your CDN, follow these steps. #. Select **Save**. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst index 627d25207..fd783c56a 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst @@ -165,4 +165,4 @@ specified for it. That backend is required before you can add SAML IdPs. To verify that the SAML authentication backend is loaded on a devstack or fullstack installation, review the ``/edx/app/edxapp/lms.yml`` file. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst index 679ef1637..f9be0cf82 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst @@ -73,4 +73,4 @@ Linking Accounts * Create a new account. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst index 5486b1c11..756462f30 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst @@ -229,4 +229,4 @@ edX user IDs found in reports or analytics back to these opaque organization user identifiers. Organization partners can then convert each opaque user identifier back to the official learner ID. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst index 2a729ee54..fc8f1599d 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst @@ -177,4 +177,4 @@ steps. :alt: Screen shot of the list of enabled IdPs. Each IdP name is linked to the sign in page for the corresponding authentication system. -.. include:: ../../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst index 8e0bb86fb..9fe4cd3ce 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst @@ -471,4 +471,4 @@ Users can now sign in using this OAuth2 provider. -.. include:: ../../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst index a9947b38e..652e948ef 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst @@ -80,4 +80,4 @@ edX site and the system that is the LTI tool consumer. For more information, see :ref:`Options for LTI Authentication and User Provisioning` and :ref:`Configuring Open edX for LTI Authentication`. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/transcripts.rst b/source/site_ops/install_configure_run_guide/configuration/transcripts.rst index aea42c241..b0612266c 100644 --- a/source/site_ops/install_configure_run_guide/configuration/transcripts.rst +++ b/source/site_ops/install_configure_run_guide/configuration/transcripts.rst @@ -37,4 +37,4 @@ the ``edx-platform`` directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst b/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst index dc9995ce7..411201e6c 100644 --- a/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst +++ b/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst @@ -15,4 +15,4 @@ If you need to change settings on a running server, take the following steps. #. Reroute traffic from the old server to the new server. #. Decommission the old server. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst b/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst index acd80b2da..b5fb6c598 100644 --- a/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst +++ b/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst @@ -122,4 +122,4 @@ steps. #. Save and close the file. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst index 483b88eec..02af247c2 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst @@ -68,4 +68,4 @@ If you want to make a feature permanent, remove its feature gate from relevant code and tests, and delete the gate from the database. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst index 6cfcd4fa0..5913ff181 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst @@ -58,4 +58,4 @@ context)`` method. This method is implemented in -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst index 1cc0a23c8..0f6fbb595 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst @@ -9,4 +9,4 @@ The E-Commerce service uses `Segment`_ to collect business intelligence data. To emit events to your Segment project, specify your Segment project's API key as the value of the ``SEGMENT_KEY`` setting. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst index 969be998f..da6234465 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst @@ -646,5 +646,5 @@ the invoice status. For more information about the way that the E-Commerce service manages orders, see :ref:`Manage Orders`. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst index cbe04c69d..1904c6914 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst @@ -73,4 +73,4 @@ To create a course seat, follow these steps. #. Select **Create Course**. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst index d20942e4d..8d3d70850 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst @@ -61,4 +61,4 @@ link to a .csv file. The .csv file lists the enrollment codes. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst index 10f2c47a6..d877ef710 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst @@ -54,4 +54,4 @@ site. Follow these steps to start the E-Commerce service. on port 8000. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst index 4e990c582..985960bc4 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst @@ -47,4 +47,4 @@ To create a program offer, follow these steps. #. Select **Create Program Offer**. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst index 3372923be..530b16b6b 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst @@ -87,4 +87,4 @@ To add a program, follow these steps. -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst index 51fb5c67f..dc382ab1c 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst @@ -22,4 +22,4 @@ information, see the following topics. create_programs create_program_offers -.. include:: ../../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst index a03eca72f..e9d28de4e 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst @@ -44,4 +44,4 @@ steps. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst index 693e6c712..e4c4f5404 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst @@ -40,7 +40,7 @@ information, see :ref:`Additional Ecommerce Features`. -.. include:: ../../../links/links.rst +.. include:: /links.rst .. TODO .. - Oscar Dashboard diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst index 1fd91f5be..18edc6bc1 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst @@ -353,4 +353,4 @@ guest. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst index 64884cc1b..fb1c2f78c 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst @@ -45,4 +45,4 @@ If you create new pages that have RequireJS dependencies, remember to add your new JavaScript modules to the RequireJS build file for the project. This is the ``build.js`` file. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst index 1d16f1212..985a52ae0 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst @@ -79,5 +79,5 @@ status indicating the reason for the failure. If you have enabled asynchronous order fulfillment, the service tries again to fulfill the order. You can also manually retry fulfillment of a failed order from the `Oscar`_ order dashboard. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst index b43ae24df..5113dec9e 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst @@ -386,4 +386,4 @@ environment, you might run the following command. $ ECOMMERCE_URL_ROOT="https://ecommerce.stage.edx.org" LMS_URL_ROOT="https://courses.stage.edx.org" LMS_USERNAME="" LMS_EMAIL="" LMS_PASSWORD="" ACCESS_TOKEN="" LMS_HTTPS="True" LMS_AUTO_AUTH="False" PAYPAL_EMAIL="" PAYPAL_PASSWORD="" BASIC_AUTH_USERNAME="" BASIC_AUTH_PASSWORD="" HONOR_COURSE_ID="" VERIFIED_COURSE_ID="" make e2e -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst b/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst index 32169ad5b..cd6d1a2dd 100644 --- a/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst +++ b/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst @@ -7,4 +7,4 @@ Index of Open edX Feature Flags For more information abut feature flags, see `Open edX Feature Flags`_ in the `edx-platform documentation`_. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst b/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst index 7e0c62b56..5327b5a0d 100644 --- a/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst +++ b/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst @@ -48,4 +48,4 @@ best what information they need to solve the problem. .. _Getting Help page: https://open.edx.org/getting-help .. _openedx-ops: http://groups.google.com/forum/#!forum/openedx-ops -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/front_matter/read_me.rst b/source/site_ops/install_configure_run_guide/front_matter/read_me.rst index 01e83939a..3604b6f0e 100644 --- a/source/site_ops/install_configure_run_guide/front_matter/read_me.rst +++ b/source/site_ops/install_configure_run_guide/front_matter/read_me.rst @@ -12,4 +12,4 @@ The edX documentation team welcomes contributions from Open edX community members. You can find guidelines for how to `contribute to edX Documentation`_ in the GitHub edx/edx-documentation repository. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/index.rst b/source/site_ops/install_configure_run_guide/index.rst index 917f483c1..e949332c4 100755 --- a/source/site_ops/install_configure_run_guide/index.rst +++ b/source/site_ops/install_configure_run_guide/index.rst @@ -43,4 +43,4 @@ release. insights/index mobile-deprecated -.. include:: ../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst b/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst index afbc03336..494113374 100644 --- a/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst +++ b/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst @@ -398,5 +398,5 @@ duplication. For more information, see the `edX Analytics Installation`_ wiki page. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/insights/index.rst b/source/site_ops/install_configure_run_guide/insights/index.rst index 08b8d07d0..e137e56f7 100644 --- a/source/site_ops/install_configure_run_guide/insights/index.rst +++ b/source/site_ops/install_configure_run_guide/insights/index.rst @@ -24,5 +24,5 @@ progress. This section presents the introductory, overview material that is available now. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/insights/install_insights.rst b/source/site_ops/install_configure_run_guide/insights/install_insights.rst index 918ae20c0..76f7cf05e 100644 --- a/source/site_ops/install_configure_run_guide/insights/install_insights.rst +++ b/source/site_ops/install_configure_run_guide/insights/install_insights.rst @@ -244,4 +244,4 @@ services are each deployed to at least one server. The Scheduler is deployed to another server. A MySQL database is deployed to a server that is configured to host a relational database. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/installation/index.rst b/source/site_ops/install_configure_run_guide/installation/index.rst index 50ae22832..bc0ae6770 100644 --- a/source/site_ops/install_configure_run_guide/installation/index.rst +++ b/source/site_ops/install_configure_run_guide/installation/index.rst @@ -53,4 +53,4 @@ You can find more details on each of the methods below: tutor -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/installation/tutor.rst b/source/site_ops/install_configure_run_guide/installation/tutor.rst index cc8ae7f06..d38f03a0e 100644 --- a/source/site_ops/install_configure_run_guide/installation/tutor.rst +++ b/source/site_ops/install_configure_run_guide/installation/tutor.rst @@ -9,4 +9,4 @@ Tutor is the community-supported installation method as of Lilac. In order to avoid unnecessary duplication of information, please refer to the official `Tutor`_ documentation for details of how to use it. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/mobile-deprecated.rst b/source/site_ops/install_configure_run_guide/mobile-deprecated.rst index a2a2bce8f..8fbca8a4c 100644 --- a/source/site_ops/install_configure_run_guide/mobile-deprecated.rst +++ b/source/site_ops/install_configure_run_guide/mobile-deprecated.rst @@ -255,4 +255,4 @@ directories and files, see the GitHub repositories for `iOS`_ and `Android`_. #. Save the file. -.. include:: ../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/mobile.rst b/source/site_ops/install_configure_run_guide/mobile.rst index 592536468..50db7a69a 100644 --- a/source/site_ops/install_configure_run_guide/mobile.rst +++ b/source/site_ops/install_configure_run_guide/mobile.rst @@ -25,4 +25,4 @@ Mobile Documentation * `Manage iOS Configuration `_ -.. include:: ../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/birch.rst b/source/site_ops/install_configure_run_guide/platform_releases/birch.rst index 9d71a42b9..b8d75bdaa 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/birch.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/birch.rst @@ -91,4 +91,4 @@ cleans up extra files and directories when it finishes running. After upgrading Open edX to the Birch release, run the edX Platform and verify that course content and data was migrated correctly. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst b/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst index 60e4a5060..c61cb611d 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst @@ -99,4 +99,4 @@ After upgrading Open edX to the Cypress release, start the LMS and Studio and verify that course content and data was migrated correctly. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst b/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst index 56336989a..3ae6e6bee 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst @@ -190,4 +190,4 @@ those steps using your desired Dogwood tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst b/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst index d6a287fe7..0286925c8 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst @@ -137,5 +137,5 @@ those steps using your desired Eucalyptus tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst b/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst index 4fa8f3749..24b0dad5b 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst @@ -91,4 +91,4 @@ upgrade from one Ficus release to another by re-running those steps using your desired Ficus tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst b/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst index 2b1ecc1d3..58c688fed 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst @@ -193,4 +193,4 @@ upgrade from one Ginkgo release to another by re-running those steps using your desired Ginkgo tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst b/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst index 199acd12a..79bb99d62 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst @@ -174,4 +174,4 @@ upgrade from one Hawthorn release to another by re-running those steps using your desired Hawthorn tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst b/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst index 66d34d09a..281b4325a 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst @@ -161,4 +161,4 @@ upgrade from one Ironwood release to another by re-running those steps using your desired Ironwood tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst b/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst index dd4f11478..350890d73 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst @@ -145,4 +145,4 @@ upgrade from one Juniper release to another by re-running those steps using your desired Juniper tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/koa.rst b/source/site_ops/install_configure_run_guide/platform_releases/koa.rst index a9fbf7844..dbe340f86 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/koa.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/koa.rst @@ -155,4 +155,4 @@ upgrade from one Koa release to another by re-running those steps using your desired Koa tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/latest.rst b/source/site_ops/install_configure_run_guide/platform_releases/latest.rst index fcdc22612..11b11c114 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/latest.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/latest.rst @@ -12,4 +12,4 @@ only the most recent release is community-supported. See the `Open edX Release Schedule`_ for information on release dates and end-of-life support. -.. include:: ../../../links/links.rst \ No newline at end of file +.. include:: /links.rst \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst b/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst index 1bb3a74bd..3e837e968 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst @@ -158,4 +158,4 @@ upgrade from one Lilac release to another by re-running those steps using your desired Lilac tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/maple.rst b/source/site_ops/install_configure_run_guide/platform_releases/maple.rst index 4fe6e6291..2fe50bdaa 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/maple.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/maple.rst @@ -91,4 +91,4 @@ upgrade from one Maple release to another by re-running those steps using your desired Maple tag as the new value for ``OPENEDX_RELEASE``. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst b/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst index 85d494f37..e918ed712 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst @@ -86,4 +86,4 @@ migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. -.. include:: ../../../links/links.rst +.. include:: /links.rst diff --git a/source/site_ops/install_configure_run_guide/platform_releases/olive.rst b/source/site_ops/install_configure_run_guide/platform_releases/olive.rst index 6803e8c60..cdd3da14b 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/olive.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/olive.rst @@ -85,4 +85,4 @@ migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. -.. include:: ../../../links/links.rst +.. include:: /links.rst From 0359c7523739a2ff9aec6a0050de86962b12e248 Mon Sep 17 00:00:00 2001 From: sarina Date: Sat, 8 Mar 2025 14:25:30 -0500 Subject: [PATCH 3/4] Remove site ops glossary --- source/site_ops/install_configure_run_guide/glossary.rst | 1 - source/site_ops/install_configure_run_guide/index.rst | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 source/site_ops/install_configure_run_guide/glossary.rst diff --git a/source/site_ops/install_configure_run_guide/glossary.rst b/source/site_ops/install_configure_run_guide/glossary.rst deleted file mode 100644 index 2cf48c018..000000000 --- a/source/site_ops/install_configure_run_guide/glossary.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../shared/glossary/glossary.rst \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/index.rst b/source/site_ops/install_configure_run_guide/index.rst index e949332c4..eb4b47914 100755 --- a/source/site_ops/install_configure_run_guide/index.rst +++ b/source/site_ops/install_configure_run_guide/index.rst @@ -21,7 +21,6 @@ and documentation on docs.openedx.org will always reflect the latest release. release. .. toctree:: - :numbered: :maxdepth: 2 front_matter/index @@ -32,7 +31,7 @@ release. ecommerce-solutions mobile feature_flags/feature_flag_index - glossary + /glossary .. hide outdated materials, but don't remove so links still work From b31799cd63660491317f2c8b65f04ab704ce05e5 Mon Sep 17 00:00:00 2001 From: sarina Date: Sat, 8 Mar 2025 18:10:30 -0500 Subject: [PATCH 4/4] Migrate installing, configuring, and running guide --- source/community/release_notes/dogwood.rst | 2 +- .../references/developer_guide/links.rst | 0 .../process/code-considerations.rst | 2 +- .../developer_guide/process/contributor.rst | 2 +- .../developer_guide/process/overview.rst | 2 +- .../testing/github-actions.rst | 2 +- .../references/running_pr_tests.rst | 3 +- source/documentors/index.rst | 2 + .../about_OpenResponseAssessments.rst | 2 +- .../how-tos/configure_certificate_timing.rst | 6 +- .../learner_engagement_communication.rst | 2 + source/links.txt | 134 +++- source/other/getting_help.rst | 5 +- source/site_ops/index.rst | 3 +- .../Images/course_reviews.png | Bin 0 -> 133728 bytes .../tpa-idp-create-non-personal-account.png | Bin 0 -> 93698 bytes .../tpa-idp-create-non-personal-account.svg | 460 +++++++++++ ...tion-associate-edx-id-with-personal-id.png | Bin 0 -> 122163 bytes ...tion-associate-edx-id-with-personal-id.svg | 725 ++++++++++++++++++ .../drag_and_drop_problem_styling.rst | 15 +- .../customize_registration_page.rst | 2 +- .../deprecated_add_course_talk_widget.rst | 4 +- .../configuration/edx_search.rst | 2 +- .../configuration/enable_ccx.rst | 2 +- .../configuration/enable_certificates.rst | 15 +- .../enable_custom_course_settings.rst | 2 +- .../enable_discussion_notifications.rst | 6 +- .../configuration/enable_entrance_exams.rst | 2 +- .../configuration/enable_licensing.rst | 2 +- .../configuration/enable_pacing.rst | 4 +- .../configuration/enable_prerequisites.rst | 2 +- .../configuration/enable_public_course.rst | 4 +- .../enable_socialsharing_icons.rst | 2 +- .../configuration/enable_timed_exams.rst | 6 +- .../configuration/install_xblock.rst | 2 +- .../configuration/lti/configure_lti.rst | 2 +- .../configuration/lti/index.rst | 2 +- .../configuration/lti/tpa_lti.rst | 2 +- .../configuration/ora2/index.rst | 4 +- .../configuration/ora2/ora2_blacklist.rst | 2 +- .../configuration/ora2/ora2_uploads.rst | 2 +- .../configuration/password.rst | 2 +- .../configuration/static_replace/cdn.rst | 2 +- .../configuration/tpa/tpa_SAML_SP.rst | 2 +- .../configuration/tpa/tpa_behavior.rst | 2 +- .../configuration/tpa/tpa_eliminating_pii.rst | 6 +- .../tpa/tpa_integrate_open/tpa_SAML_IdP.rst | 2 +- .../tpa/tpa_integrate_open/tpa_oauth.rst | 2 +- .../configuration/tpa/tpa_providers.rst | 2 +- .../configuration/transcripts.rst | 2 +- .../configuration/updating_platform.rst | 2 +- .../configuration/youtube_api.rst | 2 +- .../additional_features/gate_ecommerce.rst | 2 +- .../send_notifications.rst | 2 +- .../additional_features/track_data.rst | 2 +- .../create_products/create_coupons.rst | 2 +- .../create_products/create_course_seats.rst | 4 +- .../create_enrollment_codes.rst | 2 +- .../create_products_overview.rst | 4 +- .../create_products/create_program_offers.rst | 2 +- .../create_products/create_programs.rst | 2 +- .../create_products/index.rst | 2 +- .../enable_receipt_page.rst | 2 +- .../ecommerce-deprecated/index.rst | 2 +- .../install_ecommerce.rst | 2 +- .../ecommerce-deprecated/manage_assets.rst | 2 +- .../ecommerce-deprecated/manage_orders.rst | 2 +- .../ecommerce-deprecated/test_ecommerce.rst | 5 +- .../feature_flags/feature_flag_index.rst | 5 +- .../front_matter/browsers.rst | 6 +- .../front_matter/getting_help.rst | 2 +- .../front_matter/index.rst | 1 - .../front_matter/preface.rst | 1 - .../front_matter/read_me.rst | 8 +- .../install_configure_run_guide/index.rst | 4 +- .../insights/elastic_mapreduce.rst | 2 +- .../insights/index.rst | 4 +- .../insights/install_insights.rst | 6 +- .../installation/index.rst | 8 +- .../installation/tutor.rst | 2 +- .../mobile-deprecated.rst | 2 +- .../install_configure_run_guide/mobile.rst | 2 +- .../platform_releases/birch.rst | 6 +- .../platform_releases/cypress.rst | 6 +- .../platform_releases/dogwood.rst | 10 +- .../platform_releases/eucalyptus.rst | 10 +- .../platform_releases/ficus.rst | 8 +- .../platform_releases/ginkgo.rst | 8 +- .../platform_releases/hawthorn.rst | 10 +- .../platform_releases/ironwood.rst | 10 +- .../platform_releases/juniper.rst | 10 +- .../platform_releases/koa.rst | 10 +- .../platform_releases/latest.rst | 4 +- .../platform_releases/lilac.rst | 14 +- .../platform_releases/maple.rst | 10 +- .../platform_releases/nutmeg.rst | 10 +- .../platform_releases/olive.rst | 10 +- 97 files changed, 1481 insertions(+), 211 deletions(-) delete mode 100644 source/developers/references/developer_guide/links.rst create mode 100644 source/site_ops/install_configure_run_guide/Images/course_reviews.png create mode 100644 source/site_ops/install_configure_run_guide/Images/tpa-idp-create-non-personal-account.png create mode 100644 source/site_ops/install_configure_run_guide/Images/tpa-idp-create-non-personal-account.svg create mode 100644 source/site_ops/install_configure_run_guide/Images/tpa-institution-associate-edx-id-with-personal-id.png create mode 100644 source/site_ops/install_configure_run_guide/Images/tpa-institution-associate-edx-id-with-personal-id.svg delete mode 100644 source/site_ops/install_configure_run_guide/front_matter/preface.rst diff --git a/source/community/release_notes/dogwood.rst b/source/community/release_notes/dogwood.rst index f23b68ba4..7742ee562 100644 --- a/source/community/release_notes/dogwood.rst +++ b/source/community/release_notes/dogwood.rst @@ -117,7 +117,7 @@ enhancement also gives system administrators the ability to configure a list of file types that learners cannot upload. For more information, see -Configuring ORA2 to Prohibit Submission of File Types. +:ref:`Configuring ORA2 to Prohibit Submission of File Types`. Certificates ============ diff --git a/source/developers/references/developer_guide/links.rst b/source/developers/references/developer_guide/links.rst deleted file mode 100644 index e69de29bb..000000000 diff --git a/source/developers/references/developer_guide/process/code-considerations.rst b/source/developers/references/developer_guide/process/code-considerations.rst index 01a2baa1f..51dd0b695 100644 --- a/source/developers/references/developer_guide/process/code-considerations.rst +++ b/source/developers/references/developer_guide/process/code-considerations.rst @@ -101,4 +101,4 @@ back to you with questions. .. _Open edX Release Planning: https://openedx.atlassian.net/wiki/spaces/COMM/pages/13205845/Open+edX+Release+Planning -.. include:: ../links.rst +.. include:: /links.txt diff --git a/source/developers/references/developer_guide/process/contributor.rst b/source/developers/references/developer_guide/process/contributor.rst index 4543cf0b3..3245d3a61 100644 --- a/source/developers/references/developer_guide/process/contributor.rst +++ b/source/developers/references/developer_guide/process/contributor.rst @@ -62,4 +62,4 @@ link to a WIP pull request in any discussion threads you start. .. _Open edX Product Working Group: https://openedx.atlassian.net/wiki/spaces/COMM/pages/3449028609/Product+Working+Group .. _Product Roadmap: https://github.com/orgs/openedx/projects/4 -.. include:: ../links.rst \ No newline at end of file +.. include:: /links.txt \ No newline at end of file diff --git a/source/developers/references/developer_guide/process/overview.rst b/source/developers/references/developer_guide/process/overview.rst index 401d089fa..1ae8256e1 100644 --- a/source/developers/references/developer_guide/process/overview.rst +++ b/source/developers/references/developer_guide/process/overview.rst @@ -35,4 +35,4 @@ questions or concerns. * :ref:`Accessibility Guidelines` * :ref:`analytics` -.. include:: ../links.rst +.. include:: /links.txt diff --git a/source/developers/references/developer_guide/testing/github-actions.rst b/source/developers/references/developer_guide/testing/github-actions.rst index f711a6c2d..9bf6f3b1e 100644 --- a/source/developers/references/developer_guide/testing/github-actions.rst +++ b/source/developers/references/developer_guide/testing/github-actions.rst @@ -98,4 +98,4 @@ changes. .. _.github repo: https://github.com/openedx/.github/tree/master/.github/workflows .. _fix Transifex resource names: https://github.com/openedx/openedx-translations/blob/main/.github/workflows/fix-transifex-resource-names.yml .. _workflow dispatch: https://github.com/openedx/openedx-translations/blob/cf313a06ebf8c3a792e67174dfcba7607da2d61f/.github/workflows/fix-transifex-resource-names.yml#L5-L13 -.. include:: ../links.rst \ No newline at end of file +.. include:: /links.txt \ No newline at end of file diff --git a/source/developers/references/running_pr_tests.rst b/source/developers/references/running_pr_tests.rst index b58061669..4aedbc2d2 100644 --- a/source/developers/references/running_pr_tests.rst +++ b/source/developers/references/running_pr_tests.rst @@ -97,5 +97,6 @@ PRs, and follow them to be notified of when the fix has been applied (and then do the rebase). You could even try submitting a PR yourself to fix the failing tests! -.. _Open edX Forums: https://discuss.openedx.org/ .. _openedx.org/cla: http://openedx.org/cla + +.. include:: /links.txt \ No newline at end of file diff --git a/source/documentors/index.rst b/source/documentors/index.rst index 082072499..b57a39464 100644 --- a/source/documentors/index.rst +++ b/source/documentors/index.rst @@ -1,3 +1,5 @@ +.. _Documentor's Home: + Open edX Documentors #################### diff --git a/source/educators/concepts/exercise_tools/about_OpenResponseAssessments.rst b/source/educators/concepts/exercise_tools/about_OpenResponseAssessments.rst index 1bc13fbbc..cb56b67be 100644 --- a/source/educators/concepts/exercise_tools/about_OpenResponseAssessments.rst +++ b/source/educators/concepts/exercise_tools/about_OpenResponseAssessments.rst @@ -693,7 +693,7 @@ you cannot specify these file types. This set of file name extensions is provided as the default for Open edX installations. Open edX system administrators can update this list. For more -information, see `Configuring ora2 to prohibit submission of file types`_. +information, see :ref:`Configuring ora2 to prohibit submission of file types`. .. list-table:: :widths: 15 75 diff --git a/source/educators/how-tos/configure_certificate_timing.rst b/source/educators/how-tos/configure_certificate_timing.rst index 8a80137b6..328469037 100644 --- a/source/educators/how-tos/configure_certificate_timing.rst +++ b/source/educators/how-tos/configure_certificate_timing.rst @@ -10,8 +10,8 @@ Configure Certificate Availability and Timing Before you can issue certificates, the administrator for your instance of Open edX must configure the platform to allow course teams to generate and issue certificates. For more information, see - `Enable Automatic Certificate Generation`_ and - `Enable Certificates`_ in *Installing, Configuring, and + :ref:`Enable Automatic Certificate Generation` and + :ref:`Enable Certificates` in *Installing, Configuring, and Running the Open edX Platform*. The platform can automatically generate certificates for both self-paced courses and @@ -64,7 +64,7 @@ Allow Learners to Receive Early Certificates ******************************************** If the administrator has configured the site correctly (see -`Enable Automatic Certificate Generation`_ in +:ref:`Enable Automatic Certificate Generation` in *Installing, Configuring, and Running the Open edX Platform*), self-paced courses issue certificates to learners as soon as learners have completed enough of the course, with a high enough grade, to earn diff --git a/source/educators/navigation/learner_engagement_communication.rst b/source/educators/navigation/learner_engagement_communication.rst index 4fba23702..a15a2de8d 100644 --- a/source/educators/navigation/learner_engagement_communication.rst +++ b/source/educators/navigation/learner_engagement_communication.rst @@ -44,6 +44,8 @@ Bulk Emails ../references/communication/compose_email_message.rst ../how-tos/communication/email_task_history_report.rst +.. _Automatic Emails: + Automatic Emails ******************************************************* diff --git a/source/links.txt b/source/links.txt index 97db0c27a..d9bf7a4ef 100644 --- a/source/links.txt +++ b/source/links.txt @@ -6,8 +6,6 @@ .. _VirtualEnvWrapper: http://virtualenvwrapper.readthedocs.io/en/latest -.. _Configuring ORA2 to Prohibit Submission of File Types: https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/ora2/ora2_blacklist.html - .. _edx-platform: https://github.com/openedx/edx-platform .. _init file: https://github.com/openedx/edx-ora2/blob/a4ce7bb00190d7baff60fc90fb613229565ca7ef/openassessment/fileupload/backends/__init__.py @@ -174,10 +172,6 @@ .. _app_label: https://docs.djangoproject.com/en/1.8/ref/models/options/#app-label -.. _Enable Certificates: https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/enable_certificates.html - -.. _Enable Automatic Certificate Generation: https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/enable_certificates.html#enable-automatic-certificate-generation - .. _Media formats supported by the HTML audio and video elements: https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats#MP4_H.264_(AAC_or_MP3) .. _editing object metadata: http://docs.aws.amazon.com/AmazonS3/latest/UG/EditingtheMetadataofanObject.html @@ -212,10 +206,134 @@ .. _Time and Date Time Zone Converter: http://www.timeanddate.com/worldclock/converter.html -.. _Installing, Configuring, and Running the Open edX Platform: https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/index.html - .. _Tree of Math: http://www.onemathematicalcat.org/MathJaxDocumentation/TeXSyntax.htm .. _MathJax Documentation: http://docs.mathjax.org/en/latest/index.html .. _Mathematics meta: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference + +.. _Open edX Release Schedule: https://openedx.atlassian.net/wiki/spaces/COMM/pages/3613392957/Open+edX+Release+Schedule + +.. _Open edX Releases Wiki page: https://openedx.atlassian.net/wiki/spaces/OEPM/pages/4191191044/Open+edX+Releases+Homepage + +.. _The migrate.sh script: https://github.com/openedx/configuration/blob/named-release/dogwood.rc/util/vagrant/migrate.sh + +.. _The upgrade.sh script: https://github.com/openedx/configuration/blob/master/util/vagrant/upgrade.sh + +.. _forum migration described on the Open edX wiki: https://openedx.atlassian.net/wiki/display/TNL/Migrating+the+Discussion+Forums+to+Support+Teams+Discussion+Filtering + +.. _Native Installation to Tutor forum post: https://discuss.openedx.org/t/upgrade-from-native-to-tutor/9252 + +.. _this second Native to Tutor post: https://discuss.overhang.io/t/migrating-from-native-install-to-tutor-juniper-tutor-10-x/1533 + +.. _Open edX Installation options: https://openedx.atlassian.net/wiki/x/wwCXAw + +.. _Open edX Native 12.04 Installation: https://openedx.atlassian.net/wiki/x/bgCXAw + +.. _Legacy Open edX Native Installation: https://openedx.atlassian.net/wiki/x/g4G6C + +.. _Koa Open edX Native Installation: https://openedx.atlassian.net/wiki/x/lIJjdQ + +.. _Django Forms: https://docs.djangoproject.com/en/1.8/ref/forms/ + +.. _example CSS file for drag and drop problems: https://github.com/openedx/xblock-drag-and-drop-v2/blob/master/drag_and_drop_v2/public/themes/apros.css + +.. _custom_form_app: https://github.com/open-craft/custom-form-app + +.. _GitHub: http://github.com + +.. _EdX Search: https://github.com/openedx/edx-search/ + +.. _edX Automated Communication Engine: http://edx-ace.readthedocs.io/en/latest + +.. _IMS LTI 1.1 Consumer Launch: http://www.imsglobal.org/developers/LTI/test/v1p1/lms.php + +.. _password_policy_validators: https://github.com/openedx/edx-platform/blob/master/common/djangoapps/util/password_policy_validators.py + +.. _Python SAML Toolkit: https://github.com/onelogin/python-saml + +.. _random and highly secure password: https://github.com/openedx/edx-platform/blob/46d69eba/common/djangoapps/third_party_auth/pipeline.py#L392-L410 + +.. _OID: https://en.wikipedia.org/wiki/Object_identifier + +.. _URN: https://en.wikipedia.org/wiki/Uniform_Resource_Name + +.. _eduPersonPrincipalName: https://www.internet2.edu/media/medialibrary/2013/09/04/internet2-mace-dir-eduperson-201203.html#eduPersonPrincipalName + +.. _eduPersonEntitlement: https://www.internet2.edu/media/medialibrary/2013/09/04/internet2-mace-dir-eduperson-201203.html#eduPersonEntitlement + +.. _eduPerson Object Class Specification: https://www.internet2.edu/media/medialibrary/2013/09/04/internet2-mace-dir-eduperson-201203.html + +.. _Google Developers Console: https://console.developers.google.com/project/_/apiui/apis/library + +.. _Facebook for Developers: https://developers.facebook.com/apps/?action=create + +.. _LinkedIn Developers: https://www.linkedin.com/secure/developer + +.. _Microsoft Sign In: https://account.live.com + +.. _Azure account creation: https://azure.microsoft.com/en-us/pricing/free-trial + +.. _Azure sign in: https://portal.azure.com + +.. _AWS template file: https://github.com/openedx/edx-platform/blob/b3462e5b1c3cc45ad8673f3f12e84fa17ffa6b64/lms/envs/aws.py#L586-L596 + +.. _Font Awesome: http://fortawesome.github.io/Font-Awesome/icons/ + +.. _Elastic MapReduce: http://aws.amazon.com/elasticmapreduce/ + +.. _default EC2 role for Amazon EMR: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-iam-roles-defaultroles.html#emr-iam-roles-defaultec2 + +.. _Default IAM Roles for Amazon EMR: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html + +.. _a single public subnet: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario1.html + +.. _example configuration scenario: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html + +.. _Open edX Forums: https://discuss.openedx.org/ + +.. _submission_mixin.py: https://github.com/openedx/edx-ora2/blob/a4ce7bb00190d7baff60fc90fb613229565ca7ef/openassessment/xblock/submission_mixin.py + +.. _official Google instructions: https://developers.google.com/identity/protocols/oauth2 + +.. _python-social-auth supported backend: http://python-social-auth.readthedocs.io/en/latest/backends/index.html#social-backends + +.. _list of python-social-auth backends: https://github.com/omab/python-social-auth/tree/master/social/backends + +.. _python-social-auth documentation: http://python-social-auth.readthedocs.io/en/latest/index.html + +.. _OAuth backends supported by python-social-auth v0.2.12: http://python-social-auth.readthedocs.io/en/latest/backends/index.html#social-backends + +.. _the default value in the aws.py file: https://github.com/openedx/edx-platform/blob/b3462e5b1c3cc45ad8673f3f12e84fa17ffa6b64/lms/envs/aws.py#L586-L596 + +.. _YouTube Data API v3: https://developers.google.com/youtube/v3/ + +.. _instructions for obtaining authorization credentials: https://developers.google.com/youtube/registering_an_application + +.. _Query string syntax: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax + +.. _Ansible: https://docs.ansible.com/ + +.. _configuration: https://github.com/openedx/configuration + +.. _Virtual Environments: http://docs.python-guide.org/en/latest/dev/virtualenvs/ + +.. _VirtualEnv Installation: https://virtualenv.pypa.io/en/latest/installation.html + +.. _VirtualEnvWrapper: http://virtualenvwrapper.readthedocs.io/en/latest + +.. _spot pricing market: http://aws.amazon.com/ec2/purchasing-options/spot-instances/ + +.. _edX Managing the Full Stack: https://github.com/openedx/configuration/wiki/edX-Managing-the-Full-Stack + +.. _edX Enrollment API: https://docs.openedx.org/projects/edx-platform/en/latest/references/lms_apis.html#get--enrollment-v1-course-course_id + +.. _edx-analytics-configuration: https://github.com/openedx/edx-analytics-configuration + +.. _AWS Command Line Interface: http://aws.amazon.com/cli/ + +.. _edX Analytics Installation: https://openedx.atlassian.net/wiki/display/OpenOPS/edX+Analytics+Installation + +.. _retirement: https://user-retirement-guide.readthedocs.io/en/latest/index.html + +.. _AWS Documentation: http://aws.amazon.com/documentation/ \ No newline at end of file diff --git a/source/other/getting_help.rst b/source/other/getting_help.rst index 941981078..dfe8d68c1 100644 --- a/source/other/getting_help.rst +++ b/source/other/getting_help.rst @@ -6,8 +6,7 @@ Getting Help If you are unable to find what you need here or need more help than the documentation provides, we'd love to hear about it via the :doc:`feedback`. -To get more help we recommend checking out the `Open edX Forums -`_. Make sure to search the forums before posting a +To get more help we recommend checking out the `Open edX Forums`_. Make sure to search the forums before posting a new question in case others have had the same question as you. The community also has a `slack workspace @@ -20,3 +19,5 @@ responses. The Open edX community has agreed upon a shared `code of conduct `_, please be sure to review it. + +.. include:: /links.txt \ No newline at end of file diff --git a/source/site_ops/index.rst b/source/site_ops/index.rst index 48a1ede89..51ac879e9 100644 --- a/source/site_ops/index.rst +++ b/source/site_ops/index.rst @@ -3,8 +3,7 @@ Open edX Site Operators .. note:: - This area is still under active development. You can find the old - documentation here: `Installing, Configuring, and Running the Open edX Platform`_ + This area is still under active development. For information about the latest release of the Open edX Platform, you can check out the :doc:`/community/release_notes/index` diff --git a/source/site_ops/install_configure_run_guide/Images/course_reviews.png b/source/site_ops/install_configure_run_guide/Images/course_reviews.png new file mode 100644 index 0000000000000000000000000000000000000000..37b528f0426b14d196f6a2864220c840bd5eb2a4 GIT binary patch literal 133728 zcmc%x^;aFs^T!M0?(VWTPH=aJjk^SQ3lJQF+s5799YS!2;O=h0-GWBm-9fsj z$%sSLOp%;GK!`%fN{VTCLZ17=8{;glJv1an!+P|C8h+&t<$ z$j0n?So|Icb-eCf@(oJr`qpU;&%|mEf;q&)=Z>9x%LY1|B2dg8z*+gAJ9P z?j;^ZzW1-kSu6x?=@}Z|*ZBWAIKp^|2Vko!A77dM>*4qdb9=z`7v&M^zgHJkMsPGe zMI`l${@0^M;BU+tf&EUg|24P=^B56QNkOQfKhEj@+S}tM6M#MM7M9I3@^7L-lsyp@ zw60HV|9Z4u{*Bpw8Gj4M_kRiI)BbJveF&P!(7ztbq<>>BlR9rw{F~Zc$lr$N&g=~T z|4Y&n@wXUL|L+y!qY1&9==#@TFmJM+zf_q{yer)A-@M*Z77LS_E4A;e%o>e`VtlA* zB;kWgA%NqWd<_>fp)rQD{GUPW+DR$c^NabzQ6x#5+T_QOaW&z1`< zg*62U!jt9pbFN8M9{#C@if)sO)FX^FL26ataE5vhSFk^bARG6C$;V36SCen7@{}@F z4x%cGB@sl?;uccYf`49oe(ue3qWdLYT?MjB5{~>srFGS4(c-i#_B!*O1ED-+gz1Yo zcnpE?SJ+$7hVfTmXnh4HSd(aEqJ^dd*$oazl5??hVF`a$rc!1nZ7a*j8TzoEe&CTT zkBNJXRQJTP*$+qREO$!L;vpH3wJQ=F*QS|M5BC{-kAR2@Cf%9WoMSwT&ozt<7!h`K zOK!57tx`=kLi#@P8lP00w$=umS(b{ozaZ?`;;_}j@CV@X0SM(-%y-OBL={k-FS`RA z2Lht8GkEnEqP?03M93AT6^=bY9hZLI2AN3J5lo?~%tH@FC+UmRE4{pFq3ReQ>khz+S<-KP;Jnank|!8c0anz{Opqk;*>5)ZFkW_8& zaVIWE03$6OmCJ3#nzLtU3blx4D?E&>6_qlVS%~}fV^GWtIrice(dZou*&BWx%>ZxI zZu|T)>bQ50&3{wz%BgEWakjv9+Q?ST!|Zyl$vPR{cxRk^dnzGU2!C7V!y8kD;d=Pe z)2H(X4m%hJ^*g^pG-1d`R|EN&8rJnT`ko+OncI1p#ls6-b&xDPMNfjAQ0v~QcDg~6EKv*LRx8To51aks>f$>@bIfBa5K zO=KA*4Dt1@k!V?D`)NAt*uQJ)f<)YD?jFs&NpXx(>aZ@?Kf(p!ulp$xW1A6 z`F`)GwyHtt=TT4w7z;+*3H@tAdX!cJ)Dab5<8rKJVWm!4PG+Q%}0NS}cq93kiyvsKFqZE<2ezl05muMLGa#;ai~pzVxXT;xO?i#v02K@Kxk~7SVdzoWT9U7e9AsB zd?d(*vgz*p=i4oLI>~;dG0&X1ul3mxOqVXW{)Q-7ixb#UNf^csD!$92&#xrjPH@0YT~!_<`&bP0XmnX zXlv>Q2{UyLPIC{$L9jGlDmL4U6TdW1vO-OOP!63ue@xQ&-czBnd zUS)5>E6B-EpR~j+S_MQ^ zHbKYdS&CCqu4`Mi1F~oF+L8KP?e6km9@5cN&J`8Vk&cTP1^TEmvSTHw@_a?YOggb# zZd4;)z<00V<^;I8+(Njad*#4QPJV}KTjl2$Q^H?LMp^i6>6MQHHTx$vCrVpCRD!WN z*ofT2g^b~cW?@Y?q+AJ{S_V`0FMSi4QUZcw$^tJ`Y0M@otCyIChf?Xvq+C@!Z|@O{ zuO1aLF-_S^W{3qps#6b&9#;mnxRU zzH^C6@Pjw(_DtE=KtIU~ACwY(668zbXO;qCS`$Ii64UKkRbhz=Kcwr5FTCow=aI$} zK5Ib2Vp22i?b3l$N5o{!3rgHqZmV!3MmMbZ^e{7JYwQKrC3W#fEh;5Hr51`rbZb!G z$F0p`jFzKFf;93&0M@^4bgUjFAI!Tx(R@1hKMEmU0$9)~J9}w{68a`UnqRLJ zo1X5>fo1(|{Z&`f%FR8@rfBb7=kz0tHm;99{C71PM5Iw1d!KJJRGMsAKNbg%fi->8 zRa%r~y7bZMROYs~C=o+IWx>dF$eq5y@=2lK6p^?N9AYmHX5GmN6@odVOX=Dx=yWSRfWC&+KrnJp|5`$tt54leSjF%3V>kg$$Z}j?Q zzr^EIXw5Osrk@-AjjP&(&kb}ZYsXKOEQa57hM#YkoU5YKosT#??d*WvPv%@i_CD7= z$nvaKU8|3e=bAbZ{BoFECx0T<801N5~H}j!RDx7MAqT)OxDU ztMfl}sR-2KvxY@A6Jl6C?)hWmh5qC&iwxW4$@%>BA&o6LL^h`{&HB~L0pWt* z72QE2DemWbPqj7HX`(dp zsl3)TNGRT-w&Lj)8ForBl}Cou^_MQDQy!r}44ij?m7ku3j) z=>9R2npuB^tM&Q0W0XRaI!;BZVQD{I8Im37yQo$alna9!fu(wE(-9*k*+Ec_z;0c` z6dHPrtAv{gYWE8hVa=vPt68}6@GYA^hjr#vKTnnFZ+_e#o2Z?C)Sc6wSK<`8EI`b4 z!<|<%O5b$j4d$W~J0%65N4|kl6dh3r+y#}l+8eXyA+wvtcYdkH3fPr*UxvE10t38|9VcVz=`7~ni z6LR`6u?t6v<(G)?T1^x|OF4EQIiM8&F`rDe!{hV8h38jh)h5Wv{c!t|Dc<;Li`|7l z(wje_sQtv_aP#F`yBZ5SyQ|Po$K&KGRWNpT=i7(Y!R>4O0}cieL32c({GKskRtRVM zLRt-xgT?6eaolb0_T$YN>O!UO6uu|V9Vggm0t{dir&L;j8S@(T6s?ucwLWiJ$voj0 z7;G>FoB#zNQz_L2LH7$3!s{^;jNJIuWZAgmxv5aG5*fmylc=gYq>`N;Y(^5gVcS=L z4X%OUOdnySb@5z4YyUL@g?D!-Sx@Sk>A5mPnRhRQ0J+D?>S}(IF#4ANH9eYDsu;6} zgd}fkEVvb;1D2e-viAH!>iEba?7R?41B0!Z zptOL7Hbdb%|H!eHP?A=(w-u3!x*w#hq#PguK8RF9=W!B0d{Tpw&KW}7*FZHhCo*cV z?a5)a3<1p(eXmc5U*G8cKqN|3Q<{78?SfiFQ;pN?Q+2IO5A4@&0xg{P~H;&-(YzW6pyux1})`|BeZ4mtmM`ud# zD$hfI|2B*h9pwuANWd9FJ#x$*k=`%UnMygMqDWf* zqQ-60fRhg0NeZJaife!pb5|2oO4q^`&~0p+vOuNMCf$$qyiC3JbQC9mM>TW;b8BJ zh<5RWnt}s)a=MAH+@Fz#zZpA8=2^OETu8z^=f{?T7?(97vV1$jQG}-(CCky`eQS?xa%jySdbo_bt}vG~&dkLbl$_ICOj30`Bp|X5-{W#5 z63>az(Uv?EAR=vhejMER;{fiehmbK--#$KrW=V^sQDNkLx^$Bf4Kw#L#QQofSrx^j zB`km!IF)Lp93>HFZqGK=clevy$tMr0+UC+PC1bLWv(#4CdQ+m2D102Smwj;%1A zg2^=~M|VvBVz)1FbWEi*<++DZW% zHCEcH6s8njxpF6}-GqonY2g{q$_1^k5j6agi&qFPGrRZVZEM}5F=L!_xp4y3&@e^` z6!vFt3sS=n`zs9h72Ac(-xAQ!oIE|=#9ZY%lMlo!^7?Wkx0mWt(dJ5! zPn(!?H{gAR)91~FVEH|IRWE8KCVw6XR{klewuDW_>1av6CLi3gL?R;{6B}OP0_h@F z!DN}VD8nES;<0z5Qo`{ZF(CtvNiF_!70%k}WQ79vl!3rzdIj=PfO&pLcUsXb!*0|* zV=wh3G|c6JMjnFCXaow73;x+gd2)#A|Kmihk|_&A@B1Vb9$q|#PhUd8J(2`Hp%FwUP;8vONF|h=1QxN-3 z2dDFM%2@-Ad*667v*TV&D}(#$0%J4NN`My(MF;rvOCa?AeecV@r-Xz)bWKxdHFj6m zNsvG@;zw3{o{vf_0joP!C<-x*2Q3>~(zBAZxbBu3xH<&dddyAQ{xjKglw^D(UVbJ( zIiMyYf(uaU;^EQ~mhjwVEu5uq8K5UhK=w9l8XcEE%V@(}fQ?XA&Bol5>TSesGevjRg}}HVOj8$82sALR)Qu9_-b2WGT`U!!_)o zZ>A2!m3J~Zhos!RKDo<|<$oEKU|g+`Iwe|IS~h;2sc=jnmqe_1g(b9dDlG=vEms57 zcJ$^(LXrZb)xnZlfM`N|M0E16o^z9W3N)b;Azhvy;)2ib=i6IWbeEkbBz>bM+)TWJX<1dnn{KO5#Li#1_RS$E9R@w`GomHMj3Ra|rEZ1nB5gkWl zl9j0wJb(dDYl}%s)_V8zn7bPVrFR$D`*K(_I5A{#rgg|WXD)K|46V-kW zA6*?x$o_M8-e`5^rED6ES&-`}kP?Q(p5dkykiNwWn8<_6S(;7?hYRi{*mjPbNVQ{D zEyFJQLXEXo?cRGX=V_Lk~7x8lQq`jnD{uJuAU9_!1G{%;yc5)BDy4IbXYby4snbeX{hXsTBI zWs6c+>M$UW(cUrIeZDL1PwhoG>wAc=ojy1R%NVMw`Ngc*GO;AXyDf&`*a^IIH8~Vp zsvKcibb7GJ+#ot4D)lfR1Gl}^I<@&TU1uLXjC`6u(r{tY)An0jg4V3~EPWGisw1S? z%Ye$Ha6B5# z;l{tQgNTPi^)egRh+u~qI)u_!Yv~@LY)7@tsXCgCj9EGF9J#S>WiNoN^c#r8^R~6# z!*H1;2Fl{0g?4n6w2T*k2fM9M+fxpl-eYnc>0YXC&)tLJI@31?oTG#M>JU&ANoh%= zA}?0l@Roj%o($aQ`{3V({xB$XlM}u0e{3+0b|Zd#jSZeb)8(qH z)JXSpQHg_us{Vb>w-6812buDfDiMdm5{A{;-ST18#D)`WqrHu))jNi>G7Jzh;Wj-T zE>n3b5CnGjIvfkok@N~E?M7iiU#7D~zmD7~)b-L+)0A(J2(fMc3fRyUI;Yzn`dmG< zBy@Bw3%L4{PTuzd*Xy)rlRYEnXhg0ZGSZp9r3L0>=l!`7x8_hi_$TU7oZFYqFfu~a zH2^)?ElhQ-=XGcSL~CPJvv^$=9P#=Dq96s&|3Vi%kDADQPBVf6@Yv zl{cborrwA`OO(U5H|F+)vD)6<&i56UV_uE0*nCN%kTQ5S6-8QYKVjt1*#&a>;)eu?M<<mmC(Wn&gQvSfQI$~ z@Wcm=D5^eQQ8#KqOsNz$(pDA5WHSghh+OX1TtHut+KM-fiAG3ENqbF8HQ#Ba-af&n z*5BNnx0BMGwzf__%eDj2u|qKRP3tQA6hOAF5ma=+2Na*<(m4kDPmR@)fbvdOYaEyD zHRGixzi@#xvG+30Q^o|I)o6*Ktp&VN+h35}NSeGVl5yz(Cr}Zw(7o^m|7_Z+y_6XD z&fa!l0q`YpZ;lL_7IpY#L1JWb1W09*yk^CJnSmS5GB=;#O&Q$CkJ<@%!^Ba5DrgF% zS^c&>wAw&_-b6HrYmQdQEa7$fO@k+GZ@VI@^_!#$k0sn0+0EOR&;V5_%Qd@!Wem(F zt-X@CN2J(O%eh?qO&&t!DFn(}LPb3a$Ri11>4uGydI4!H-M&t0MiZcmd%wL)VeNB6 z!;`r;Tz5MQR@`IN;L(>j%Ge3p7@WCmdgmb?i7r_C!J$!Nb-1y*i}c89@>CVu%yn^> zGES;!`y2x&o=FQY%Sk@LycA?|VkV_So2!*BGYm;=KYLwzsvNSw5C(V{eunMJD+&K^ z>OVp7LFi8#tem#5s4zUJ>} z&o~F`#eiVc&pa!&u7cp3DtfO61*XY&O3N{Tk(WV3WcX-zmxeEOq6XE9Y;2QCqd_q( z7`%SwR8x!ShJ{p`e=ADU4(M=XgZ#|d1bA$%H?~?$3;d3mUh>_%gjJ%Z}5JlJQTTMox1oe;ePpvh?-aB zsSyYcM;pp4!l&e3*!59@e1VhRxvRP0&D2HGTYh&n3>FppWw5mM4(w0?+-0$$Bg?y7 zAC%6sa^si|{`8l*6F|n~Hb=2*DHdm(-&2rdKAa>88E6HrWH@3vY`$L+bEElbNL)Rw zh8vPcVN=;ja@x+G`Z^9zKtkEHvS~$L?GFi5Y_Y(Wf{feD}dj4n#uX$ zb0**~3lb0>+{INEJVVAGi^56T00|@xs(Y--)j6An59JjUYDZ7}CAn_)%;zIBG>E!s}iQ@ZLQxwpJWZPp&54LI$p`4?M1(1k=*0s{heWoJD z!S%*BsCDLNd*GJbtcac|v^S+UCzSK3I5I>j@~>a~V_+!F`Tx9gu_QN!n;e}-z$z>B z=0`Im$EO0Cnu;_j=~PD6?LrgB*}hy-*^&Gho-w}t%1$fjy`?ciYK?}2I3~6yZIWX| zp(alZwjq6-b{Ry#$~DI=3a6LZ=&;hRg?T0V z9QewgsU?ONBlGr)E&T9KU+IR_6)n?)V^}pFf{s&5KGWGx z(MaTGgMAE>qU0Y~>s-|2d&oliX1@NTB;o!_MdVYuG|d=-hqd*~aKil2m5Uu(!WYs? zO$NyX^o_*K@H_cM&V}M{`7F~J0Vg=;J72ztdbv~jy#f*888tw~<&qQ&Y9Sj4oMGkB zrHk>RolYR~4FMa9&_8^IL2!rgyNTDn;`FesjdL1Mq_9mooJ_#6QSz0Q%CNW&0kS+k zf(AI)o>Zt-tU2cGBMHJ4?agSU$WPp|JnAmCT+e6`@#!?@=a+J-jgujgy0k-e=+e) z9|leUyS0K#EP<$(rFd~Y5o*PR7SVkCDE79qAnrZ2=9Ag4wD7G15E1NTQ9k4GVj5s7 z2qf>=jo5+~*Y6%#EYSQ$TTG@l(^&@Bjz~?wVb9u`-EPe<2$x+aeNu zYd*A|RU~0E=Kk9H6(=`OIPjH&_WE{{lVrUKt->h_Y+-iiN_JT^MA^6M(*Wvp8m|rv zH|i$0&6Fh-bm9keRrjf#2(C&k&pqiV6Xh$;Xl(H9Ao#6iMRsy{Uu_QVx$f~G-4X_c zp-PGdj0*0^?(=x1`SIZ-;a@ElW?#ch-a5KHzRQn} zgz*XXz2M&pKN}SF`N~>nVoUj=kxP<~KceZeq3Ud~_GZ$KJg)I9vOdo?Mx87trrtc^BGL&8EAO0aG#gIV5!NhceKl=5oSj^lT<0Nqt2>>&@Na(Oke z_jg&Sp<(blMI!~_ggBDp_vzV}4`^tuZ>1FkJgyM2RJifeH9+dM_CMSHH0#DA$M1LN zE!a!(I}V;A>@X3sHrDkQ1h`*{jjK%h0as_|bSS8|A;EoA%HrkUWnN#|eC^Pt%$sK_ zQM70z`c~pfV zt9@$F8E7JXE+n?T5d40v2K}uH>4&2>7B+T6NJ<8`{h9^7=FDK8pastPh))?O!?t1( zH;Y<@L|>5&^ZaeAubM~$A_zv{kpiXYo1|{$IlYH-P*oMY)EKPEgRk=Tb%)sm$HEC5 zDG2-Vw5p&8zCVU0HWW287XEj!qe7{n&9V;^|>0rTDY^=G>#rk>XAg z;_xO@=LB<&Ck(R+_Nd?n>4&(X7@o<1FeX@^83@xW9i*5P6%aorZwDf&_1ss{JTcF^ z=QP$>EvW5?zqC&)4ipv)417H7P>z%gS% zQc?BER3g|+?lU|LINdmRra4qNJ%`7}vRwhde-J{1lgb#FefbG%`Ut4SKJO zrezq3-MJF^4_#s$N?P7g9g?3Z1`SnX(ffO|@kukGfMxz%J8uWzq{ZAkNOi0;)So&b zw4WxbZlve3@9m!Ga0U1^E{KNcJ%yXOC|axxFigdyEPjZ7!}4GVK+$AiqG}wI^f>Z3 zh)K`_nREf#cg(v4RWHZ>^vVCjYkg>AdcNH+gVldaUi(9$0TRYjEC9N~;c(DGG~5iW zl}fX8QhpJGbkvRds>9dPaRx8)@PlenX=v*|H8R{N`&4FAXjk~BaevFx3Et@fodAHWdDz{(*1`9V+!gN{Ewkx_=g6=RWc;}j~8S52j#*OGtB*u2E+Y}U3DSR z{`mjFUU+{E+EElN)Bl25U6Fq|EJJXT_J5?7cGO=(l~jD%(Z7h9q10cZ>_^`yB4A|P<^T9F(I0@nIGFa%e#(Eq*y3Nqi7n>-!GAcI_TTImsvK{|{-eGAKP!ig zM-whCZm%>=up|Rm5)cZaDy#+Gw)tm{6kpJAv9r^Yn*4QWU}eZTPbzC`oZU|O`U zOuA@z0sk)b-6^j)K^qKVSwQ)caG%gbeW$s?bKgHlp1M3bdNO_R%<{j^%*V%IW%zPE z)n0VWV+nOhwEZoEizoq)IP3t{)aRiG29&ICNu_h~aXEgM#kb8I6@ZSl;(F z3q5~`9w}}jJm9=ujxfRLoVR~m{Sb)&)pv938Kz;;-+ry?<($;%EP98JYU4wFB-V{ z{S*j0=qCJk|JTP|K>?VseBXFIn+XsnN7ENQh_Z|A6YJLTP?)52JlNr77$sM@{~{vr z?QU5uZvmJYh(}kSotBLs9h@IFr+;PMC=B!{UO1ogwD6OPE=)w?3uHB`ma*ibYG;3bR#CO=~awk({1U8;%FK3XMy zGMZ76t+9*S0>!Y!+$d-Rlh7;f*8KFWzj?`LocSNF;vt|gu!jX)$uq7&|?bWt1lky zl?79)tcLf(e2|wV#;blqOtq=(e<>EkN&l0UXb^6eCe$f>zz?ROnX<0u>XH!k0D_vYyrv7g8v)*?J6`0ljv9}1LUv3aBl zD;PW`9~ekxS8dm<#;3ii#{^3e$RD4w*X)`7{sCT}M1lguB7$DAa8ed1e>CEKOJM?4 zln*{z`evaIfz)W{rg8TKb1)81P>lSwJ$Y9P>$=enO72H~*yXdwfXeMcLvPsYX9xpC zwY{V73fRe%5N_Ng!hd4B+H#GJRjTMOg(!^q*SDgj=#EX8Q;b?x48Rrn=3ri&1hD$^ zz&v^OC8gICwj=R@o9HSW#BJS#no0s^t7BQ~E`FazNBB)4TsH>)jDznKvYTC-3Aw5F z!qKRG=i1S*P#=D8(|MeR6{GY+xW5m`HpQ&r?s|VY6UP;LNsl%kD*9lZYvZ_xz{Hx* zT#=c{hY4cGgoh5pOb)=V%EW~FV?~38%;vT-cl|IBKBAE(D_`V`45^!tDr$TvUhU`3 zMM%$fV-iATVlD~cMnM-$?-|^b>ikLi|?lywdLkvMZnA;Z({A*rUG0YpMZJ;$<`Y)G1|rqmXp* zRHU6_WXVj7?WNV^ZmJu*3D=K-SSbnBTs`xjp_=BxElG>`ZHG7Th+VT1!}alq25_}@ zJXLWet#0#YqgdC(Le!ZSL@JX~Onf;}=a@0T;jWSZGxiT4EgJw zWtnLHe&|B!x$0G&;ZCKzH>G}g_>E4hhux^CDK)~pY|;~;!kJ=D@n*`Vi^~24CuM9L zVw7fIMZ_4Nn;Up4jcU&QaLi+l;G;kBwpisTOpj^d#?blmRJw1>rD3F;f?>iOP*KGh<*a{S>&vCPMhP(|DBGrXF#z`k)bHcA__+^iF0IJ>ZIhX zvyZCJ|7I$d9YnbZ8-}OLe+9x?o!!-z^dPusPkc}3#&b5a|JL57{vjUkLxa0Mrm-NR zu1AVAgD?M){+b4|zrLA(48J=UQZv19lUJb8wbU>J5C>wwppHpWL`zm94wy!sd16He ztgzUPj|AHj+N5_Q8|#YMMLc||N|Q!bh+>B|RzW9FohxIiLpEnkNCZo+kJd4z%>*6v zr6dMB-;PDs7$Vix#y z5ND8=$5#c03Ss&qK|b#%AgeRdSKkzmq%QV(CdBx`OgFXm>+|2KkJH1i)BfCevxU)HVmR}v@`b<^6=DyIv#c9(xAG;Dq=fO#Ys@DtY|!E9$GTUMPC1Z{#{WJjKQSw^rB? z(+wSE62S~awc2o!NXJ(YKTY&y*ibfyb@I!0%HvjVSe`$4G!V(0x-8*hiJve*5p5v^ z1;6v*Jxu3iGtBexzRZ|TD6D>s2FEI|cWi6QY_s9V-d>z=FR}6jWaXFqQid@Wl0I~J z=EAMX>FvEZkpZi`Zlu9Mvz4YZ9!Kb6t|6a1;EWzZ_^ihSs8gVdJji}zk`iG!*6j;O zJrh)Xx0FMpW-61@)ps2?TxyaV7qqWF{A#}?$?bXDo25`Z;D@traymiqsf!HiAKMPJ80mAm74eSOlp zyxd#_=t0X&!sLEBdRK1&2|k9G-9R(+an4dTA7~4%-D}CQ`8PLuq{ksKM|j;g;dtupjRnd!y@N;VRBe0K{q%aWN*YS zZyACcGI)Tlc3aKd3>> zN2f^Bcq~M=+QB0T@;*`wtb%r1wV=Ap;(-&%{w{@FmnShCT1|ZL=kF}L$4FW<+8AAC zB`KYC#%1XiSv*KLqU2Z}F9}VyP!tr8J&KiI z*AF?5PqP!Wp+C|$uex>h=oXTfLx2zZa+-Zdl`UkDgCQ!0y(GJH94Pwd^0=VOKgZj_ zV0iJ|W0`$%6cn7p&~~-L{Dw_p9z-7tBa{;_DjKbT0KZEl_NUHOdYfj*TBBy1iZ#2! zP#!OJegRFB4$wj|4)hsd#i*#`j$R-{wnyx0;6|>0cmKn-DCDy1*-EE?&rD^DKqJMF zuZ6jzLoI|EAL0PzfsZV>FH?xjh@~0;qo^QIZ^qR9nLMs1-0{h)qi;z|y4hG%9?4x& z!yiV#zNc=%ZiPf3a%Kb*p)?_(Xbb4syolyB+QwVwLcQd-6>{<@6mxXAh4QDl6&Wb! zqF!q^8djdr1`y)L_P}(NwDv_pzTFGVIjmMH8f8#xsnWOs9n`MP+6*$W&A=zLq%XP2EUO}5L<3f4&}4GXe*(xp%Zk=L7%Mka*3 z3mOM|uCZhf&06?*td7_BC0SLNVaj-!7_-Z&oj-{HNTV8y=4Q)*K!T6$s;8^q$LmAl zA12o6=&o|@SFUEOuxLH;!f$m}gZL{6mIK?W^V^{4_K#srIu-CvjDL4b3HhgfYz|;N z-cR@pH;s`*6h&TNbL2>a;oZr{)Sa%D&4HxHEm0s9wK~tvF;PI|o!vgJ1~RoS1F|DO zHyDblxYnal=CcL85>?ibD1mMQQJ&~BIH9Qovisog+nyIbBp372LQyOZIcY*vHqEjy z8zsqO*h(*GYt>k|s+fpt@(x9hTG4_JYb78(0XgH)v=92~283h^;7AJfGxNK@%SNig zYOE^QF5S>=oHNdDliNoU5R```*wY`}w=}-?mFDE+Db%v3RzF@2+Lh+SVq*sYSr86m z5&HMuHYiLSuuqNbeWB%a(+`(&8&hyWtmB;2_g{U|MGOfKf-xe2=5Ixr<^Bg3uwLJ$ zBl`pv6-euM1ukbPBCyb~R#!B9}?ISIC(oF7~l9Dsh zL)>-XdjbgCJ zAJ0YWwHu>kMg2G{oiA3$z>#+%TpG@=&wFbgf}!nifzV%sgIX=&bk&r1VGKh2c5u9G zzQ9{q39#=C0)wmlSIhQlFLd}_A8eCbjxl#Bh8IR>dE-6N<^mGJ3CSs4m&l}6YA+FP zs^r=D#$sPVO^(+DQ2ti85w$~7?7VHB5}H0_M|1P4Ifl_WS~uDJJFOuB4+AkNs8zxb8^~L~v5guV_QN z9-i7AH-nwQSmokA+oo?x*F-6|FMU6u4u5#;zikLJQz*taH^*(K7Qhy{P#jDRvRr7I z>&fJ|PLTfY_FV=08Md8w2fRLHq91~uUE$xN^5IwbenDsbs{TW^zR zbi&MU8q~0a*a-6wA92GMhZ-5%*>vmiM(*+9xxcULpI8=6PWB+k`KGe@V~|(BIUb&LP_vNT`+scW2)O4U7IHT*Zmkr1E{cHLmMr*dYAgKl$dn{4subcOT|jYh-+XJm zqPS5rB+cK%5l0T>F$kFq!ezJ6vQ`atQVXCK9ruhph zBBP16^rX&-p;SJ>8(H$zAIuiV zJS4>FRZj&CE{i-_yZ*mb!SDX!+lh=KjfgI5CTr2u5ui$>0r8*2#~#ukQzUisKY!IZ zJ?sQlBsSHE2uU4-Xx2~r<}~Qi@(SHq4b2JhxMH(4D){To7R5qK_^Ap+32hF&jaD^T zvB)sg<{SqW&n#idI^CC`2+}i<+`f<9r{2rO@vHt=1<9>foYD{v8tMY+Q^xg&Z2lyy z@rz4Rg;PKJ)Xok_gJrSE&F2D#%gJ^wl8|l`+0~s>a`=L@ zk3TOU$^RMhhs94$9N}DT6{YcjbRw>~0d7(~h1qj{<(}Qp}P<@v_AIhdr0HMjCEW zZQ-WrefQX5ba}x`w_z9MR4<&iu+&h?2!FZ_=hQOY>Z1 zvANZTa@$MZip5HN|1*P}dNlAeY~#>D-g5I<_a2-EK5l;T=})uKLq-}J3n%tX@3%Y< zz5Ov6&^^SV2YHxh`{2m1klIsN$}ZK0FeexJ{!$g#wF@wL{Lwfjj(LWm^!pi&<>v>J ztpIb(az~7N<@cuvVZq0{VY*SKjpP6R1yHS7RPh2>dhaHMb>ke@H3&ZV`i3lGCx4-_ zJ8g77hV)wZY(|^)pU) zg?pqi_xCQ$oiVEX7^FvZJFT@Dr1kV(#I&xtnsfa{O}gaUg~Q_C5~qcC%pZ254ZOkf zFk6p>&e3Z9T`{ppY6j);`y~c6Wh#F`S9g>5V|!1Nwx&kyY_2iV_GTyVx-aU-T;)gJ zp5!~Vd9vH;&sjhF7l+QLTdEbkL{MFzzqJI&`^O?cP((rOFz|b<;~|}Xm~vm0vIvSl`VWT&!zyTiCiN7_Cd~9YygD`jCF2HSlY}AY-V}Mc z(q6tx7@B71`ylj*+bB0(nALYzg8|_zo3asr&EI-b=J?Vq-cS)9P=lm$qnZ zZF_5`qSu=k(TC`FWj1tvQf+Qs5!^F*=cZ4eON`|Ft2gq?3R9+*ELgF{_mtV_r8Ur)f(U59lm0Mx!~YEcWu-}W#j2GgkEr*+6{vc=@N58=L${cayy$djNWH?Uk--&}4HE>(|J(a4KMNc8z%_QEE zcCW?ZTt__d^c*Pj&SK?{zaWp^b?@jEiU%Kmf>v5!D|NT0-1y(|TcR2dEV>{5G>s^E z&syxs6ybqK9}vEu-LnSAtNbx{q8AcUvgs|jVr*Nt4aSycEdS(7Jn{H!;l*9$d5QSo z-5tm)tVYP7shB_i4g@$`T^3qEcFn5osII8RZ{L0d{T&bDrjhI@x+6-(kdPjFw^RZ%|Bt&`4gztyI}g9 z2XOn;fe<%e#P>fQgjcvHQjQ)#akCAEO}-Ng?w$Yzji-}iPrzf0D?&UR&|IE@761Mb zS@d$m;Qpf#=`MzA#Ar;2mSfHG-w=K4LW~Qe70m)6vgK!N zIYif0;(+lt&%?Y~BVj{pFxD1dz;El;BbgSbl`33u(>)6?ovxq699_v!Pu#u+tB;n! zVBdnxJI~NL-2ip|S*%^N9vP&)E4=#P-uoZK$S5ML#w@I$l{Y**4A`?h0h1nj2J@y5 zra^!u8Bt%Dj-dcW%V#<^U|XYZ4sj7Kf?|KYjfp++*&- z&7*>m7P|vK{k{*hEF!{(&cZ|Y-9#^NlOkcuPq<)kKz;HdWZMiysJI3${U>ALoH0V9 z`j!HG|J`p0nNH`{M}yy2t;CVEa`^ZKqoJxAvQQ~4Q$y=?(%XxF|9KVS(~E@Z5q{C5 z@$iH9!=pI`pR78Bm^&XuOr&WQ==_8oSRYr5h0i<$ueP@;h)|qz3VF5zFv#B)hjwj7 zxzPpXsR_7PUJLKOWANmn`4DIC#fFo0Xwbytiwy&@VD3a(7cvdMtX_wtygJA|Lg*!v z4`F1a58WTx`2OcuxOo_{Z~IA%f8Z(19TSLs8&)AUIS*>13_cOVu;9Ua=(P)SGM1=t z_TUz*-x-GnwFrI3&c;J`#USDLpOLFqqV~s6={i3NTuem0$9P22eP__rv zYLOj=O}`Zn+&U3ES!HU0$kfpnn+!XgX@39?}?4{ z`j>cY+T(#K!N+mBl-AeJi>H;mgRtbiXW(3)i68#G8krSMuyG2+?eibNq=7-uRiDT5 zHAmnT?1Hm#$53bR#Joih!KFG8KdwIry`4Yqef%lJM0;Beh;&Ge-HiQt4tV&U*>I($ z%Fg`p3y#+KU72-2Mx4#r<)|?4iht+l*hf97UZ{PjYfPUDsRTPfM7^ZvGX; zIw^{h;!tka2X~M15LOu%-ey3W(7yF+a5$}nuJe49pW2R$dJ!7)E+V(00U^Vu;<5R+ z(`$TaX*bq0^JuNHJQEv#S&wtH5Ui2jln^#_2K8|!+-)V$tLt!h+ZJp;nn*9*kYUUX z^Kkc#V_{Fr7**w*#EO;cQA8FVr@;Pr=%M+vG?KHWTFV1;&9_&`$?g4N6J!mlR+Ob4 z#_C@-qs7S|5rHm9*}E3o;!+@DZ+@lqpTsn`hpq2ak#P{OzqSm?H6-*#42Gd12}|Eu zfL3VN|Qy;dC9wqhw>eS0OeP9gAg)L`e@ z&xN-#mL>1SdrQAXxy~Eo#*cuvydEo-eMM?;gD?`cp<##2-cDFMs*+x~7oU|0k-a@G zrk%o;BN?U>(wAe)rX#3mv4OrS74I+o6uAvzj2JfxF6vyo_2$P&Dd}hyu(j3UR6;xw zGV7?0X6)Z`0LK$gATfu%W}+55w;n@9vjm#TBE;=af|4Fkg|Ldb7`6@$B#>!zBWlEj zv{*DrJkXCGh@?FmuzKx|c97W~;jExnU9k23Y!uG0rx(A(|MnS{{rCqQ{QF@vz0y5p z=L)>_?G9QIU5i8_*w2650hwQ44D0WU)7$@z3^)Db64I32%P!3miiSV$_fbWF6ax z_dodot+cXp;e{k@{dp}?s%Qx-qXIUxp5gI*TaaybAr>d@MO=CwZ0$8z^VO%=csvK; z0|&#wP>lTiB1mYot8c2rhOZan_t*?X4I7Q2{Q{6lf^XyASZEx)P`*$5NoeK>> zj&5I%lKN_T&f0NeFJH+>PsP!cQfM`5R9=Xs!Qe)e!WB{B-pD+S(#KzOE{J&4u69;Ww>5rG;?@XcFqVa=gz z1PmI9!Qnp0J-!PctvE^@(bN6;HJ1JRH|U*0F>G)s4TiqOyDN`CC$pu2q=;6+ccfRh z7zxi4NJ}rH>!ZS^FW$x1n-bt2(jWbUopEIC7kK;oz2sL_AvZq(D}PvrVznD0qXKaL z@EUxx{X|F8CkbSQE!`vZI&dki17{}}q2?kjHo9p&F4Akv9qCQajU{L4eQ0kISW_y3+`vb?9tbv+&b5Kf?ND z0H)X35n1nuBOhTC46XGzwR;nG?mLB&>SlUFPA!gX-2pAV$|7ag4|wCIBOc^}#ukx63ykpnH(63*#k{E4tSvFWyH;Z5K{Chd z)!6j!&+yGJ`{5We5JUTVV9R%JVbyMWw_IT&-ud58P$KffsPV&riWGdj^gU!$bzFJe z`fj^c`&L8qztV(}mRr|i*o}|iokcSsrgwO(`}9rZkPw?c?`|TaSe%tl!E+DI!XKYM z3zbJCUVQZpj107e^5(I4{+V}iV&73rxSvM3GC9WH{tRBeb0mRRi1?p3B7EHK_}43U zL0*3fk39D!{6^k`CC}anZQ*`A^WFw}$4M)kXmm9==3zYc!kuuU#R?1i`XTqDHE7n@ zVC-Fe$cq@UV~ z)O=@ryz&iNq|gzqCByONn~Sma#6=9cb3_|RuA!q4sM}5imkE6z1u|QkP)D!E$fMU% zXnmVdM5D%ArVfX^@u)Bowsi@@&3Dbg@uD~^cw!;K9IBzF<>|wR%_72n1okv`@p$tQ zBsWwNi2%0dkq^YqxcmN_5u5q{*t-tEsEW0F(tGbcgd`+^1VZmcdItf!pxAqR7OdDo z^v8-KiXZ}lN|7pEdJiF_lHPkZZFiGx|CzhlkRT}79{TP;w%omU?#wrH=PNUFPBEt3 z_b7&X7vqI5Qef6;5}tc@Dq;355Ncn8FSmV%(^)Y{JMt64#@vZF9~e*M2{kD>ys)c+ zhQC?`Gg}XgyW>>ZboL8FM*2x8L&p;6 z*A{C&`4K^}1M%o1_rr;y(Vk&T@aUpMoS~;@Lyy$Orwg82@CG6rIVh$%;oxhVIoK5- z{5n7E-gOo(0rBW$S&VgOQZW3kxA71`KhaQvrWc<-Q78b!*<2vDa|nUkjb=Fu#RN$SRT5hgb7g{(wjxkZL&@~LilXt(2eLwEO zh=)QbPjkevU%he9b!4gIAYD>~o2QJ&je`Qwq^yFjcrKC@3Kl?t{b$o*6FUWOygCzh zJQB>1+R;o6`b?jOqx;We&@B&RXcuRs(BWwiR5HcKuqQPi-6sEstgXFyg%**E-^4e^ zen8sPIQBhy7(K`1)z|NUBaNIzs^@T|koOeUMr${*VpQd3k+IZn)?H@<)IR`Q^Q zJnPB-~u?z|V#E7%d5y5X4rU!%P=0(ZzN13k z{oM*2-Ejz`?tcz5$M%MeTEX$Q8Jz}9#+=7)fg3SbWBo1h!pdV9GpMW7Mr?RARn?(O zY)@Q2_FnW0v4^rc1r;R=Np{@`LtQ?SQWDW+@?&`I&g*CSCA$^s2F2mgd)~pRlPQQA8~?X@O@B}^k=#mei5@XQ#{R+1YwP073J8Uzl?Gld zm4z4<%1WCN6xvHtO8g2tk4TK}<&FfcimTLwwPS<$9-YNc(l}ynW6MFHJ0xe_(VvX1 z&hUtcl77|`g;xxGTD=v*X|Z)lU5$lvUqFLOiJGc%l&P#?#lcihrP<8YgH7ZW5y|-c z5}|_EjlaG>Hh*@UbQaa9-JeK{v^z$GS!4T=0%*<4@cFwh8}alQdMK#TqQ0a-s)uO| zuyqQ+i2fefM=LD(kPa615g6aM5tW6Zq&?TwLv;;GjX&dRnu_tHf(llS-nf*RoS;%gfQkfxNc-C%o|VA<42* zRu@s38E`(o0=b#Z=rcOF1rEs;y~f-Ps(O?pts!NyE8@CGNEvIbXHd{zUm%T3OPQG6CC~T1}j(K`x2i8k8!m zSU4BovgcYrjbesveX|Q;>pKl`(VaOc9Kz&CYaHEv9HXW_4khO3}c`fFNz`Dk&v#7mtYR(8p~hQcmnbO>{I)lZ>s$?D4RyJIgRp3Q^4l-5QK3X*odQJ!Q|@-7h&)g^kDQ8Tl2oRjFM}d$ zJM=Cd7)|5g@`;LxA)>BPK`msIdf1Z2z)Z+F_IO06VM(L>K?RB)iK!bU2DU1C%q zQDlt!uZWfDp9HqR3G1FL6PDnF*Od4xyFCycQ>W{UFoF-5k z0i$F4#7as|Xd*`&J6JbMTjr%aOfLqGIn6ZonyKJL602VWeEs21r6dNGs)}+%M1<30 zH{RRI*&hQ(^u$($78`;XgL1shEcwpLJf_q2CaAe0_v87Am-K zOz@2Dg8*kXGLw;zv>NNa+W;$%D0B+$z>qoW?GQU2=m2Njbj9%p$ts7i^wT`x_(wH*kIKk1ru z&@kLXd!ohQ&_dbBCFI6%xpb01@@`H1DA2o&iD-Kqc(ojyL=p(+1`*;iQ*j9m zJNk{AfJuGg;n`P(zm2&8XLA*2djV{ zxOwJ8I9an^tV&};1FSfQ(XLh;h&uKhh#!_8#CL@x8;qTb@!cyi|4W7g()I9&zZq`q zXZ5Bkhyt(}V&25cR32u?nzR;8&*k6(SMb7-)}N#g<`$L`PnD2E=V23ZI|<3O9H`A0 zsuE0=E{y495S6^SO$H5B1;{8+!%b*^R$OprNd=+j$O}2(@MLj5|8%@oO8m`eP8h$M zUPTy2$p=Zv7&+`&IkvTm1Y?%MU1A0#Bw^i*UCM%r&D4B4TEGS#?=$gcOo(=4$dTos zL88`MBhtkd_9Je@$34cPFe4d1?IDq`Rk)VN7gu%G*E)m8ybNd^qPVl={SA%!o0F4DrO79SrfX?L3gnm>g$}pLy-CCYFHn zU#*GHh`PB^dOnO12`Vufv!;89JWX|!#u)Y=p$LQ_b=j^&%)IMvnhk2He9F3d_;ieEy$Y3bH#Q8)$}%!C)=P0(Bap0?E^Gz&UA2#sTF_D*H!cK6cYTL*#U8Y_gPErj0)rx8 zUdl2u2Hz8Ukn5gh`My=N_!tk{Ucf^&HFnftLhi5A_EQF!pN`^o=eg)GYO7e$i_ZyaPh zMtPu^1LT$y+3ZhhVPl0vCvSe4{$#9@4Pt}6VPhykBdwzFm}vOhHR9_p7vuYb znbIlYeTTryQG*pCJF_&^KPG?a6(1g&7oU6pqd?|i%rS(Q}I!q{k6 zU^7lQk3mpnGS+N62%muy;m0NVtG#uypl?uQwId&I8D0C|F67%kRGY0Q25kk6L;^28O5p8y)K`~c^V)4tHQT_IUUfUMURl-JoYmUn5fIT4`Dq#W`B)a~twLeSN$l8u z8g7j8SQ~At);hMy!1(d9g)rlMRWuw`$vB$Th|u_6h>!JyP3<|Hr#Ibg2kiS z(2?~UkyW99n#6ubwyi}uS#3RB9VG9y-B?Gj(qQI_o`Z+s`k8m4_SkBC|I-ngcNSa} z0h~IWh?F7)8tcnw$ZbJA#{mylTKFuZxupR`nT6aRW{KGk&gOJNU)ZZkQAV$}wzir5 z&lmo|R@nXX5foEV)+-9IxzIgXT9F?}){6Zps z>4B^Em;|MTij8XYW*E-UsHF$TR7xFPNwu_rj)o9Bp_-O~=o-DJ-ic003$XN!XOYMd zOA=SUxb_%>(IbY!s`&^SY3*L{kmy*7dq~#3$XU;DoCx_DJDITYR7y^`TRNj-bPuS% z{~8~DqJ}4`kd~UwRXq(jmR5rPgWTZk;)o@myhm!`C(zec$A`~IfetfkM8pn-FSfv@ z-yj5%)mE5J(eVQ@y4!xtfBq#L9~6n))N`n}>3|1^Mv8*8OHSS#pr{Og%vPX_pBvm5 z?2n9cz=^bIvPHT}=W4m3Rz){nN0Zdf-WB%s$yoUMT$s;&SW?hdCNG6&>*)D3bHZ8- z0&SCpH5Wao>+t0pFM^Xlm^@|zK3@7Yo_rx0alQr|Ig^8!0W;A%A{3sZZ^pJ)-oqOe z+3>Zh#o3fH-1GV!aJNiCBg0&hGGgWi%2KUtf=VN76UwEvO^tUJ7OS9&7BW#Y=)V%v!_Mk|EQ?X9}7oC>PfD4vcgD~*UEv5PZ+w~^!*1=WksSetB~`C48Jw2Vdl~s zGlulR=bJyl)0qbmY(ZM-Y&FJQKLc@*p*Y(m3M)Q*g9~Z;L0^)M+GmKW+MRL&T zo7jG|G+C*5GIzq{dv3zncUIt~=jI|Z$Py=h zPDGDMx1&>t2UjvSQbxv*vFV;JUJU1s?2IETb1gd8C$F;kuh2LX5XH)^KdFBE7dUnbA`go6XzH+W4FBaMUduc-gBt(J%Uo>ADWR zr(?p7WPG*oRh*2CL}}7t)VK}8tiIjZ#)qXkN=^kY5TR=^&b1nkG0Q2A9Mpo z$N6H_79|&|T&NFgAw7>OPBzEJ_Qli@o$=-3&k+;;0z>Y$$lt#K3#d>69T+i6EXE@* z&q9cgBX%@0{L656$G9#C@!Y}bh)<9j?S#a15{Fh(&ZiGS`QQ_{ZuCSfUc3UYmz;;I zwhZTswYcx4{^%Rf7yA<5z9RzDmn(;sD^1R&<{-Fp zSGZX=Av+@tHa-yu^b`+?2F1DOQETCiPGn^)&15{?;DMM(V?48o7U8Lc6jX7d&Dq@> zkm(k(?LO zp(Hn*52q`-M+P#i#rcQo5~OhXZB%R&>=}B@O;1J+H_mm8jYAX52G0&0i7dQ@R4lBjPYB|>$F$5N07V(+kdm1v zE#vhM3rDx;FwP&8ASt_oiaeIfTIp?a`S#g_^PE$UM5MPKXU=88FFY1LT)xWL2c&R< z-kO7GxQ`W5l9FNT6OJ$+wy{QuvnNlYu%-!4Hd^fYaWx_)JcV0EcBRKuN><-gwyz3a z9U|b(l~7GK{)h?_Xy{sGi8>UN^OF@k13S{P43p}qr5BQvlFm4IEgdf#bcpGOX!1?9 zOAOzXQ9c#TY>%i=X^uouHB{$4gHDAAxxTqHxa4CB;h<3-MKc};i)kB#s83nPXd33=>e z3Ud#1>EMpS%yTgCSqSwLhLZ5Q&!b%Hf~XFD>=TrGLMj?8z0s>j6dcVIoajzuzpsat zog2bBbwPN5D>sAFz)8)7XJ{7$xY|fnP*4tuskx}5q36|s9+sVkR(T`at~=Zraw^YD zLvmUU8mSZgI&?1^BLuSwu}^1!xga+0n$n|sX*d|8*B^CpM#bm*$)05sK`q~ zNuz@_$O_v+B%P`Xr%s%akW6fxybvB0gHRtQXc{VT_Ix2i+1?)X(lm{wNXjTd2>XQx zR~0KObCF)yi0C*nQJXR|X31B2DO?Fzsxn6`=gF-(4xUd+K^<2@_J|E`J*$#i6q3^O zrM~0p9fWT2;+ZwD%p4Q-uIR%0h-h#VdEHVuj~K$f<;KZoRYgA1vU6eW5sb5|-$ai0 z5De}Tf;!T(`|~-AC8fJqAd*AG3#CIaI){0nh;m5H&XWw!kf=^vWk`B=MlEA{#&HLk zma9mUnP(w1jD&=7ERSLoLG<$GdK!%R{dF3fs4}B7|#xP_dr&bAw{a*WiK7jS#?!bWi=Wvx+cVRgHfn-3|se{a{0lc5;SP~#s{N^}M|pL%@jMjWLVcf%d`b3$8IO6?{7 z@Be1tsuDLJU#=h)n>QF;{uftS_L%;~jr-SEjSCStX(d)-wZ=jJ`kVek?w~_8C%Wyp z(yjdl*xz4#5mKvGGKAW2^q{b>ic3@d|~%y$sjt z4K3jAbV8y9#Or+EHgPV(jdSP9Sw{CBFP_AT;n_6FP6RQ@JQK$d_k0a*h7 z2nooF=^xQdav^02$P$nx@V_I0-?jLmu9oQF1R|9-75;%= z<4-u>z&%kJiHXp|G2X5)p{#UqXNy=u5i$EnRZe-e8RgS zuw^-R>q&pp2eC{zA*~P{yL9Jf(BH0zl4F3SlQS$eTuOd6jmY#};P3wTEi3+;#B#;A zsVvAqa#lV!o~vO^$Ryv;7{o>RUGequiR~ru+dZ)T`6wau{M)ZBN4bC!_%9|wd^hjI z#YiV4%&(=A)T3Ci;2SdNUU_*>{ICr37i?fG*FaF$EqHa=E}{Vc`h9+_3}TPQjwK)C z^A(4s(<%rVvT(tBC{bN%yWX$o^v8ZRAe|`Db6YR;RA;7#4iA z2+1|PJ<*^)Tl9Z8ltZY1|5BZDhTCL25I0;iLEFA+Mf@6g9c{a^br; zo>_kR3;xx=Xs~C)GR%4QIlT4$QXD*T6kmL@5HGy&B0l)`8xw2PqEP zIwt};rHKdowCfOZt5D+&R3tt-vACDHxU!2oSQ~;hN04Hs1j2kO0358=X=n^h2 zjP#wDQQSo?5DqMOo(&=AMH)EkDa5FF4f8B1&PP#^19y|_B-8{QAyh2rT^IpQxkp>< zsweiB$$QiixuKco2)-&SD=X=^p1bV}(o<0E5FqVJ_v>>z-U^=%KZll5QLarahd{ot zu(W15jLo7aDue(p5S&wjj@pcf*+!B^shHC4^d`{`RG}Bk(|E?EUI}d3e+Hg=_JL zYs!_|>dQ(B2t#DfwjzEW7g3AfG(^VGuno+KuV+gz*-IsH4=vF%EQl#4`hpp;_pI5* zt?kMU%Hp_?p}-Ur?Jo=qv7_FcZEMl$AsUaFS-RqZc?)15T#P9Rng|Ws&XRphEXdUp z1JHzPc%gr?3`D}WX5STFS9w7WiuArLKl=giE0Tt27ozT$tqJ<#pX>7`<^*JYsE7r+C%hH)>oh!u)4-)qUBif zKBo|BA}ffp+VYvVv17XsEkr60zgxD-TNG8GO$Y=SF+SL|`^{LQ3$La&xX^~i-$Wkb z`4(e`7-LLBhj_O5v~eskF31=CPSj0+_!1bBeTD*(WMF9N#~0*g$@&XIzScz938b2f z@6r1EB|em;Ct@YJ+id#Zfn%KVt8cEx_ zN$n%XA9mzsKFb0t(}v?;8}VJ@uK)f+SEZO5in6hO-8$|dZX}n|JUsE*YX~vq;`0v$ zo>G}4@Yumq@$j9KNm|!_fKk^L;rr!_vExVv0Y`zbo}+QkJvWo6&lXkr$yoW-68xN0 z40Aq^{m0ybnKzKs%9gm#%1UhbVlmbqJj?KtIT6Q)67u~HpzsX7`X&K0xeGqjtQcEK zLiWSX1T?det?Yd;?auo#VNi_paGD0jw#}*MLv`-wjreNKR+Q8#NoW|1n`hsRk-ejk zd3Y1H6nNwIk#6LK+J-vr9-qHJg@^CxkBwih$B?_8AgLU8#5a~<4WU9D`rU-d{lbxb zWCxb7`5u|&jqHSG5`o`+cU+IEJxj4GyM%akD=~iwa9e*DEZdld`{z6gZ*3!vY+8<` zYknqnn*f`RCS&X)=)v$(Drq5B@66#&?NXdg&w<9uU)sZR{cxf%b7%SwD?Z1z11V5Z zo+0tWanHTCA<~l%!LKH&16x;whWfQ49k)H*KxBvGyS~NpwR@moLuqvu7%}5s+&Xn2 zY=~HJeA^l<`EEDckZ9NeoiY2q`w*o+hc}n(#Fz(OAPJrkCg=3VFR?a3kN>=MKfGGH zLRIcjtXsVa4Gs2~_qGx*zy1)K&h5hgeY6rKN(~X({V!~|HjF^8L=f1y@ms9fdYpr$P%NI9JnMc;?(c{7OWs3O&~)5A zxd-{LfLdbnz4`WPOnUHcl0(dVl!2#AsrumyaBZ(m00w~TdK(C4j8{g7{*l{XbQg)HOC*z3+ro!Fc)|6$-yP$gCgU^?(C7v7w;2410 z?qFXS)P=@y7S^x$0$Yf2CzOBJq0=z?7Ge)No8idjuW(Y?5%=7}axkat6Wj3h;ac3! zu|=2t6Bhq)2HLt@oXu#&qi?^8=7df7j(kbY1Wfjh=#RTeN*YJ9(k4YAwtV{)*8Fsq z>;l&4I&3oTA^~53OZ#!GU7-z4$V~njMb3S&;MVKWG0@oeog5=@_rtfLdf8s+2vn^j zeA>aE*3vsaK=58+WVm9?O|x<1_})%R^Gw_@rYAD?EW<}@4x)(- z-!>)h{sQZdmSWfqcVZUd--`~f#|K1kZf>f;XYaj(pK~oS@uu5wd=%S6BNH{$l`*O4J~JwE#W00A(|kXu`ZMp{MtzIh*?eVc$DBc|i7*|#9Z zQ;BaEFGIEDZL}@Lh0n_B^9*CHg?Wd8xbME%h;pqVnBfOVsplL>Q898e$_R7ghp_M< z*trLxdyg)#rgd9LE4N;tqBH4<^Q9=sAcj^m8p;yz%G?i;XB~yx@45?9hsPs%*H%&k zWbgs#%((+60w_kKdzX&T5b?V_Kb6)TN!lBcCK+|A)*n1wDWg zh6WCxOz)2=Gj2q*M>^k;8E3-Lo*JZz#4dUrLb98kA+7 z#D|NwA#TJCe4uZIOMN0fS@b!YJOW@)lwjMoleGAlw3XPl;{@kV+zAAEp%}IV&JBwQ zA@xE4diIP(efoa9L6S#ZKrhUkH4}Y;&G6N`^RPcTU)b^Ol8SSMX$kvquF3{eZ@v+6 zUQO7t`U~U`>HOf@Pw){@-a8MT!uG!nT?4c<7`{Zg!I~_#j@Z8SAdL@dZ%QZQ+%cq9 zSi#-N62*kIDlb=}S&@PdJ|x+sbr^1)c{>911=w>q0lDWZ2w_u-58s`SW99a^{`T3p z^~Q;4$l8k~TTe^&R}hNEC_zDapW6dDwDl(z*D)@umgRe?d{ZeY8I;lPeH*h+BSw#kf?DA64Q zhy~|>*j`=PukE;xtqCUy&fIy#1k4!M4_SM@#q_1H_pWEGe)8M z+>iKZ^&ax2wI3fEidnY#i%@3Yk<7Wbp?|OrUwpIx`!kBL`jdCD?xX_OO}PcPatuh` zwG3~6x}L_7sBZy^IN!y+-cqV3Kx%41Eyo{vrEI$+M~|Sv$_FDx#G^5D7s)D5V(9dl zxM${cYO%dov}h&081hstc^9h=S77wCTO~H=%H!YR-Oo4jnP^-4i$3%DFGxFwxB>A9 z^fM|Y(;1GTL-5+%xfn$7>cblrVNY6BD?h0Wne?(;JyR;V^cyRX526Z^+{W?^JF9Lp8qCB z#rg5#anj`ZYikama#BA8xLvS{)bvV7?hQ48L_1w~1Lnr`g_^{5#VMzdk>7|rX?;x~ zprJ@^>MATF{Xx;VV5FToiV?TZ!DCbV@D~Gd-=dLRPr7HKLyJvj^u7^1;6}U{?}Wa6 zI-sty3XNH(kVcq&sk2_nT@pEwXGzUH0nH3cS-Ez=Lr=blOmZ&yQdQT|v}Pm&UVfd( zirWVXN9{0U>R@PcPcZz^ejkCfxs>@?*?8ivmtI4M$S&}@sQ+az_xUd|)3q1;pavId8F@W5~!^M_}9r>^q#rfm4L$h4|$7fpOgf@eK#aOx1PpOx=ZCRUM{I9V21knaboy>W~40`r?Gn9Mh&;hZD;mN3CCX zGS)r@vVa34y2JXF|KM<9Dh7}*rVT`$6fX1#h@>o@Mifz1tD`B4&-O#nphsYz>+xKq zE&BHlM?-Zrn)4HJHm`tKfzHGuyAED!7x4Qu_%T#?a`$%hpZ17^9cOLL{=@c6-nj$i zN>4mZ@4KrfL%^frQ1QeYP%!)=NHu2M{s0`qdXa1ns4B~5o9#tKZ4-RM`(x06js!^^ zfE$Swcxvq%NN5Vgi_<5eCpmw*k`ALN^%)#Fn}ohyd@t0;&JSb9_r;b}1tw6@h3bzn zWNVI*vmeKU}vQ77=$^mMGE-fCL{3_l8Rn>m=rV;0_@nDVN>4rGKrz{`0;ouU?Tbtj3S<-0*2BQoTNe% z+)*@diB}hl+wXl6W8(uUzFs6BeVGetu6$1XGB^H5AHKB2f2B%-K~aDusu`zNlRn$b zCk!F}rZ~MBsUL#jZbqQai!6<<<8MLN7wp!0 z*Qf|zIG?IVb!8p$bF>(6g9(1cjNq{Y=~Vy)r;cz?6%+^-2q5b6mQTLGs;^1V$HAmt zQAHZ(PMlUS=ZWk71pM<@g6QX;M#(i-NlZnw<`p@`0Em^IWAw^c3 zeY$<3_A)Vr3NHY8o3UWkQV9h?qi#S6%Mwk%RFMQKyIyNtTp+R$NA*(N9OxAnV&oL! zFV&4`x5fpdK&G$kK z4ZoIjv@+e|#^L$LW?AiKSB z)7T?e&9FrJi5;YTcSY|JQwYWyh2Eow;}eG44xh+{$GJ2pE#lEX^1{GlER#{5IxW%R zX%Hw?8iWM}!N(MRv~?k%B$3Hk_lrd>%4uik0v`$Lo3fKuGm7@NV*A@++xN?{W)(qT zd16CdH7#8q&V3r--Z27UBy#(SbmejO*4UTni2G*|P?ua=Y!Wtvm``hlg+m8~5l~o4 zb_4+SbHO1I`zM&GwYmaJ-=2dydL0IB6ROH9;op(2AP0LfC!ysrB@HBD6gg;0@$IMc zv4JC%7`W=191%lhE(H*b%_!YMDdy=IcI3E5t47Q_m?I?A+jxH(a8|5`QiQbF#{@S} zXsEyRo0!MZYVFWBKB(nf4%Ct1aB_2Fc*@w@+Y;J|&!*d|>s1K!3ToY?>*(%}9`wM( ze3+20t-TEbTL>C;EW0J=H5)5ghKrIw=oh?RD)J`@Iu<>HXraC>ZO#5=U|nh|h&J9N z_)&?rzhfOE1KT8WMNM-(+|9!%JK@2a5+eW^wVYFPf}c=IBH4$Kc_0K8$$PNeq66YW zeT>KX8Xm@H#66kiHue%$u{E`=yPnUVGb0tQgzyn5nEifYTq-tm3_8Uz$c~2guqg!B zb!Huj!d{-R4libI;+X_-RkAz|t`e%gbnzu#%sD^hNbu)+8fub*+Ge_nw1{LnD1=vF z2>iVru=~dq_#EQ|f=qKhU*;^MnT;Pj9Yr9L{xM~4A?7OER_YS>{InFzbnVc+j>9M+ro^ zdGj``U->yE4eA98&Jk2_kP2>DDqB@aSDZ_5tvJ!(U{8WA4hW`Hk)Oo*tR_T|tH#XS z3Rb!*eEi8`oGh@#%sXZg%{LmAN0&0xk!QN(lJ6RpGh)!q_=xn|rD?~>%d!c(Hf?}& zU=+HxiS3GxWKBz(^Q6+?B1jP}S|&`zM6n<(Gv_3E#(}SS&%@|8XewrqHa^g;5euGt zn;lI^OmubrF`w2X4)eJ(*ON=AtX>+3r89|mu5PGf2R1%*VxW}$pv zn0khA1=FXEp$4BX`5b%Gw77lt?da33GwKpn;r~{irNG#4tUNJ@Xzicx*ojRHA2~!s zB07SD9Lf4b62rFedUcJ(C}-Tp$&o_QS0Iz9<7PB?s`5@?$&zKzMvcd;sUr{_;))gT zzl~H5Af_Z1&WQCY26IxQ6OsKfQl*DFa?t|k;Y!IDrgIMm0my%m#30J`BTU9VVx$=n z--V$-ldDBfiX+k_zW5;OZ>UFJDQ6^GtdJ%}HA6x)%Ea${F{Ag@I;qcl(Akxe1xb%8 z$!JO^6K*VzMycRJCbHBHG!{!3 zP85>KU`fNy8sl$x0F%g1CKhif8GcX8ZK8r~>)o5dk#gr6KM7UcsGI6=fMLd(k_uST zFsN(^pNni2)#P~+-^H!P;szRQ0?A(_v0zCgqeNK*R*LHlq{Ouc7<<<hwRJj6L!ygdkRx=#?ZiOUov^Wgxkk6-jxeC@oCJ>MuUV$^&T((=en)i$l)`vYt$vZsC0~hy$r@QyF&cPa<`; zl5uQP2mNJ3SDoL7haPzvYxbWGDz1n#C!KT=ES%g(Yd!>Fezr(F_%lumI(AK+BwevOtga#x z*~Qfybi|4-L38bfkjN+;*t7-v6LU!YT!h^lH$d=mg^)(XSc;1qhgKF_?cf)0;6JZ? zh)jhAIe#XT*))K2Qex$x0c9CyagZ`9U&`8a(%0cXyfY5hw$eFoVD#b{KN z!OFJ_2K4U_FS{n3ICuypmGz9-Ymjkt9qxbhd7Q{oBf7_Mj2+b%mL!K0l9(%uEgCtUg3vWtAGC$g07(9Fk;v)i4k(q$xoIEJF zC(XnNTAGuI%%W;^i0cDgQ9jO`&Eg^qQh8^c!KZJ%iR~wRy<>D`&GtRqNyoNr+qP}n zw$ZWebZpzU?T&e3qvO1}_qoq+{6D>4&!{zOpQ^p)n!9SPxtRR^py3Fp#>7a-bIHTu z*0kAZ>#NB|%LX!6+9K`PY)U==PD65g^y8S1qZBn$74uLG8U-$#*jqD|jod8Dwc9_knNsSpj#Mf|v5 zme54xzy-*~T4QcevkokEN=5ZMjKt`Va$PoYQhj5Bd-6aR}y18n)efVo|52CL9Gm`hz{MF)dlqC0vvGnT#=AK zt?W=^xdlX%Lq|m*W#)1rI9#rPhR~>^yHV>oHE$h7JG;+-y2i2ou2#Taej4ClJPogZ zv6g1Uxzs-})+R-(l%eZk#3eLh-OM)R_V4V#pH{v>X`O5QeY@BJDCsGmL$FXJBLmN` zEsf`GB%a(lbb!vVF#tDC9IqEUM~)7|^I%ZI!;nrdHwlEhW7G;-zl+76CrjEL!!n^g z(Rv`9Pv^1)c$UZahu6qvS65rthC*y%c?w29xeNn8)b3!*IQJ{pCff-~k3I{!AB8%tZ4Ld2$k0zavs3) z@glRf=RRGpLS$K-@P=Y`IOOs_;Yd*T+8L1U>+ksl^dX-x9LWruDfH!$rlb@Jm}nz)N5L*P;kL^f_{g& zSi{<8)~skVq0tM;(Si>V!C6{1<7R}5!}MuKtvFpBaZGX09}CKnIiE}605(Os;L$Ok zANvhb>yz=;f6f0a#t}hKm}HwfNp^t64=Kg79}vg)2{muw8i+G2H|wB|_2av_#EA9d zeXn=w*XBSu5ekwJx1R-_NdBOhj};>j{v)dI8?-8Ab=&{N`)jn8eh)Zdwcb6O9jiiW z4}%r7HTEKijrzX$jl0eD7d-iKug|?}8!wyMnROytqF?cC{|jPF0IWco?qqlXM0P~S z?>}A#E8cj4uR)+5kHsu@p|(QJ>$r<}K5$#(Y0CyH;N3jzdxfp~hiXvbT*#>~{$9*e z;3BTQc(puvBk%M(!#(!2n4ga(94jH)k(RdPN|X4Q77img1Z7et_tCX1saj@W~tqgj9H0^DzHKbn?#F zZylNJ>XaM7J)pjQJhoR1crI+nLlU;@Kz85qz`f%JfSP6K59%1(u;gG2N<{4=^Y z3)`dS8#;J2s(uTIN(L2nOI?|9c*=91wZeEv)p;<)VkwUv*^0n3N86n?&rKQVB?Vnh zclnDPz6UU%7t`j`X@YPD;DolS{)}YROLyH#I=L{5SO|K%x$WfNPl!v)Z}t6M1|D@K zrB^PlpB03f>leGK$McKePCexaeV}ntfrsf$&MEulTUD)}<7HgyyH7ahlQpf5uC3wm zQuN?46e8Z(ZA4U_h(Ah13mPmiT|k=9&xQQ2GilpTP8uI~Ry^-(S`W@YMzfJ2WtU#? zIS{wT>Fk)-J&iDN2}djB1>HKI7WuV!x>-UrM|ve#9mLz8xO@GQFL#MN$tlZoO7$VF z@;`h?7y6>2%y#>fC79Z*w32KT;PpX3UT*>rB*PjCgpwmX*k}ptzYLx`u#Ic>S34q= zP*76llIjD}dil9isGG8M=&LP*OXKiuU|}i7=mkh48mn-5i%^*!o6<#L{tWBHES!;f zym>K^m}BjW*5E{EhzlB0R$J>G@4|fb31}I@C?>vY&f7>zPX|Q`ge({>I4n{^z!2AG zmjJbAY1EpR%?G)1P6M z#Ns=zt)gCflo1^s@abu&($r$wy+Mh> zNxVvK#BEJ6Cq_~`vUw;!l1%{)5_`MxWd$yW;GbLFzG4JqUk;ymeThab|m`_etw z%cr*_qwMGb*Bo&=1Mjq1JZ zd&8e-Kkn$IB>Tff87KeP)cvX?pTyiH9apKWIC5U?Yj{h5St2n#U@ch%<8wYTMOAQ+ z8kp%v#7i!0)rLj_L)S`i@S#4+YA1cuCfJbLTKnM)4)3v^$df=Q%x+IV<9)}u!0Jd- zy}Ncae7u_`7I5n4zuFm#SiS%yR@Bv9?3Z7*%WQlA<&F+6S5H+Ajq)A??LBn(H#c79 zWM92D{WJLYq~`kuN#0OS%OpjJn9O zj`FuLWc^rlnyIE8nB=cvgAs>1!NDE?G{L`q9$4L-g8~5jtb@8~LH@6gQAhfwkngTY z@w_FyaxGuKIh|LY@T-$WDjfr&X;T(@`7*Q{a=u=*CQ#qOrFUmD>R-X31?W2dlaST` zVgjk7jTDc%*u0GAWNGqGQW`%!kS62DtUHkAkN*r9LuzXwaagXr12GEdJ4D*(kJcWD zMn$@zVjBW|X_hpuH`bYi4FcZRUuPM!2C0?p9D=myHz&E|vVRfm8wsbCSRva?a6{L5 zK|lRGjH?Ie1?y8EryNt{QvRD4=idTSqs54tB|DlliJTxxAO{|BJA?%3Lym4v?(=x( z@vLj7w4B%fneAQAGKd(37d=`M_jf-&3ZE|ncc(_~Yyg<&{RNR^H3QjDsEm*KYI`NA zr0=^5d&JO(e}U{BxVA(WE$yX%aQ!cxkJAj0J`Wd$?XOvS=N=!8e-iT=Kt8dN+N_3) zN?VH#YfgK30}-z+AnkV3+&;85H~K}!yxJon;zUJ7BmQF0BdtlSm2vyNLli)B#as z9yK)B0baUVGteC`!ppxiNbA8=l?5~JQv@J;&5}g^%PYtsu$iit9z13}`L@I>t zj`FB$M^?F&zpJui?lm(i&L+9saNw&s#7V`LZU&Higd#6i{bfQr));Y~_Rl1keEA@?UiPYC?Dwla|ZW$oW30|K|>3!0MNb5k6C#tq&J(hvnp0 zC3E~*p*wgPuDEs=Be?e@kj&wN8yvhMb4qkB2t2Ur2{hphFAD>gHvrRM2~k?r%*;$X zhd6~z#;TuEv3R4Q7hIbx`Q&Dgf61k75OchaS@`}W2Msd=Bc5ag$f|_$lDYQ1Y&sRG zYwzdt`6* zCo5oasL2cXkzkco!p`c_f(~L=p7oC#6MXx6THm#j4ABx>mpX!1Mp24#bIc?DM(XP{1Z-wKIhnJ)5oS#60({a{IN&jyR|p3jc* zWOC#bjvKc9b&bVR$dSs)QHq?5J4Z*Ck$D30cdr%_*t-$WdVuiD1)z#dD;&P8xLml* zL1s3DM%^ZlHx)RxRBOZqMuhnysnn!@U!QkYq_z$W?cYoks+X7)#koUmv%OslU^CFC z<1Up#a(c8&4@xypVpMk@65|VS?3+uNzS%Guo!p>d(8=KtO+gBN3An(Hi(_3z9d0Uwc4K#dL)ADIvXhhbR!N>;i~?(F{xNusxA^XTs`nK0 zeCtB#ROVyk)y9}hM#EoCgdW4);p&Ewh#;{M0C9!>1Cbm!`Ze2cS<#-Gx0@#A|Y$q z)y6pwow<^RpPxm*Z3mvn2%E`n=WZir2|3DN^YC;tgR}SQ1|@s~p7%XSxm=;dRu#xK z{=621=~6jiP0dSE6d)u5FI-kOwF-Zo_(Sv0(v#5R$Nv|F`dA5pq6CA$rcp^T`Fx&H zQ6)xIJ({(kAFjn(R`siX)P1-3W9}wng~EEMdvX|+-FhG6I1jDC-71e>VrX<0&6R*J z8~3x6CmYQ%w7a~ro=e0{k}2FW3S6IW?DX&?O23FjMN5qD@q|h|6u#=!{+gIz+Vad9N z;G3U>>0tb86OWp-3I2bOlbQIdD!ry05D!iK?;H(AiEsZ+fB!GrQ2r0wU|q&>GW^#@ zKuyN!e_QyACg48|$f%XSO^E)#Rr?+`O!D`Cbm*Jy{QoXO0KXzI zS2td0<@Bt6P=|2z9rUCpq0>$(3 zX+^`U7)`w@$CdSLNq(i#1ufeV<=plDcO=rL>v={CXF^fuvna}cp7M5?oqu;4R&q|K zK8G={qXC99VO<+BE38s(oEyKUtv^p7 zdns9i1mSsg`S)_pT(}N$)u3(9bHT7;QvI=5tTT(9Jh@M{CFk677kr9>k^Tce<% z?uLEK*EmF(U2LaC5)V_cuvON7Dgaw8_xfhk@ce|1Q|}vJ0p`Erjw&2(?)6P5fdq%k z9cUMGUb8s6*hYiK#5UcJ+)jrpI1;1BfCWH)KZWCDwcndjgzDw=GCO=z!sB_ zxRu01o{*aTx&IM(Y;u=AG%cf-box;M3_&k>mn@T$HV>UNgT#(>N+e%ijc&q||CpRw zOH=fqzj=S>Ut(Pw;*NNYO4L&KEQ`ITMNy*z_8;F`m;7~rj&Hzda#WHtI59xBcB_dt z`v}jU+ds4&a04jxCEQ-t(`3|m}9byM9{v5HLArioL{uk?@8_WfV4Mr223SP+^lHZ z>oRrTH87<{kQyOHiYQ4KF`)Wqc`QofrAW3*Xf_`jD@m06O&z4QS6YjGk@URNh3GFU zE5gQ{wJJ<6LTaMGzBSekXv!js#o7?gBLA%41SAR!o8Pa5KHc9l1HSbAS$Bt?P&ND( zkZSo{nRzavojz;PrRn~QEWK1fK`nTYgx!!)snj9;rw2x1 zd^vIu_f8?Xz0{l8mkRoo0-BDnPLt>HDu2S8Ud=Fy7^Nu?`leUD6H6`-0jJRf{P4jb z9D=J$!3&8{D5)$2-CaNt%T!DEI*Z|kBaUPZxOjfpcZ=zQkDZ4ac@ev3G(I+iEqLsFS>szbfLh)7vX>ZVyABRSz4H z5uhlji9Fcj(o8eV5ieNXEXOW_j1kW3WRjag1hf;w&)BnwUm?I9Q@I@Sha}?)RxFgr zOrL$%`!dGF8QU?vQN}7#O2iAwNKjH9G6nA=Q6AY~=J4;qKT8+q%NWD-709DA zSitn$Y=bw7`Vx4(^We{7K6QZ&6{sB?R^>E8pM?2Oy}v)Kw!l~Af)LRG5r;v)>+dC? zSW@XuxSe>wZgG^UxZDx2-El;_SCF#b;s%}r7)M?su)@zG@D{6v=Ck<;bn#;?3ttE3 z#VQP>(X>c#jXdQ`@&%2-cKRez-D$cmW8#DyCkSoU95G}KsvO9 zRWm}WwcQ9Ro8aJba2bwD${`%;m{4W?(!N1`mx|Qj3L|jU{wz*?6>lWKi}{`3dj|-^ zw7&VnCQ4Nl+({2#pfcS0i>p#}ms3-m%;qyZrP~VCNvRkc9XO{_awlP~c0uF3n+^tFnpF`L zzY+(^;abZhNX5E$jfrBDnrVA-Z!laIj2T>4eMy`X6x7?6MD{}-vZ5PRs-x6H-3IT0 z$TV8sVBAJh1|=l=#R5GlCc9KnY^r^IZXTJl4XU+c-xsLLVPZteJxQKhV{7m(zAIDn zzJ3=Jk!=_1oPdFY`;+qd>_?Deee}ft)=efzj8!5Ir=ScGC}^r;3@xM18)}YkF>)nU z6Bfd_QD2YRZ}uQBCRWp1IIFC8p?DZ_Ux2D+v#Z8ZY+OLPW*x!I+|d#&Mf7nM?LlxU zz}v^Rwx-tk!-x&NlKVq_w~Q)sG~`}AKCv=tMpr8@bVzl$&BFvab_gpUJ;PUVUzg^~ z3=S{-xj_8QY%H!b0<^JZuv8n~Bu6_W1Urr}>im2^nL?+{2^H#Gpy{q|=p!EX*>71s zT%!C}4ih}OA7?BHF1?HGUU1PEc3Y}ZFp%ztgXJ3!&GRV}aOZ>2Z!g z^xh|og{U=4X{4e%GSl-s?bXz=t`>A>f1R*S$ITzAW_uSAixA!J@Hzd$yIP1r*XUFI z^U!;9>`TH^&B`2}tmxHTO~K6(eucK%4|Ng1vMA5AP-6zCyT4jmoHiq6gs^B=h6c*( z2|Tuc$=TkX*2y`vGzy*nupU!lLP%8xLJbizo*&AIPst$d@ij!~U~LR4{LQR|k+SC` z0vDMfY3w*Qu28emFCBzG2>tp>Qr*o;dHFZ+m%TGxwq&Ckp4c~|t%!5E-RpJQ-Xu$%ZRAy^c* zp9qqq+MvAI2N}3hN%c4<)ge(e>q*^f)We8#?0nsyh}Q77RFiC_B)`6F5kja$^&{rF z8Z}m{QgGV78le(3blqIxc-Kb*5*QylteAhMKl&PN?*(s0LONQ|a%+9EdhY-~IQYCZ zL0=_wY6(1ix8X5B!xS}zi1vvqQio^PFgf&b)UKb=gD91zq))r&M?V}XN4GsSQ`G&< zeT4Iv(@7k@`qbdJC3;Wg;1!Ef zwm<8a^};*}nXfv(EG4om-$L4ckCz#N8S3MwWom}1Di&*w4A}&Q6Y|#(B!kwl3bcxz zfH;KOt(eX|I#)~j-FRo4BQXv++@+|N5>icQNq^t4a#uC7%kKF(d|HKZ_>7FO<+H3t zy9bb`dwk#933cn<mg^;SV{s7vE|pTRtL(TEiKCCB8@(bj^1bzG zl(B3c1*EDpFn&b z@ma(Y!W}E+c8jLSpqUgmosN2ts42|!*E=HmGG%z~*<`4v#p2vMTgy_l zAF*GN^koP@ebVNf4;4q_RmG%aY6u=0V7Rhr+9tLrL(Q(=bnm?T76xsycM4BVXD=L^ z)pv>w_2Biy+H{*{{MFOlhCnIan3uz#q!=>tu*HjGXlgqAv#aEU$ApNin*mLaY?GiU zB2lhdQ<+Yj;YE(sG=sZaAwh)0_jRn0{p(XfZET$Om>30ce)SXLH=tRHNOc@e<= zzknevLnum`e=|rS?T?M2)+H-Y?WF4WUUY$GXNfOTrddr;&=Ui{8R&i?7f8 zh;^+O=0+BiC6hJpq<`CZu;b$rG%wuA6V#7H+GDCPVx~@4Qc%r! zGk&f^T<9c-a@uV3K+`mpGSXEYm}uqA!Q(|7SL#VDJf!p>ms!f~H`Xs+xW# z`3NdCpUt^F07!P=v3R`hsl1`UFS}{>D|+Ykd{Rt_gx(zCE(+UFhywx`qQ8I8V4XBB zbuTJ1ir@p)A1gcgJ_O)Tc;~6MpQr+W0gQrTsR(-wmcxJAn_{SQR_>md7$b~ z45BQYPqIHbt-EWIA9vIE<~UW4;CLLnE9L=ARecyPp<3|USvQImlgrI6fHjQ1e{Knp z*5rlg09KRNMt<#e0uF$JrI5l|C{Hniq!}-SPNi1&VvhHcj z$R{2<7OqB>!|Q>?1t;fMX)&RlB6ziey3pzvlzglwYW}rN<=4l4! zV8+fizxxlu8Pf1x2b9%oC;y1E<2oA75t!4EU{mhfE9>k2*<}<&_kl7lmJqlQwcl(_ z7(6V7pWshpeW@Snb>v*& zk}MxJ*h@M`$!Y2X!|O=1u8*T@IRPlaULL8Qp?V!5qUJ^l1E?yF8Ik7cP1bNw)a$X> z<1q*qmjUiz&BA$|DJJ>vDoQMDIIx3HV>-#nl_WjYrhihFCmDF#`KoL=UyeM<4Wmqj zC-F}yWy=8yiYr#xK~4Nf6Ly z31D!S0^E{#ELNuQ?NY&9E1`@ljvMZ%_oT^o{_J3upjdIDI)OZTAytPff@S~#TS8IM zPwo-6xg4fU&b`+QdORKxG8AW&xOcMEv6k&_D^M}DIXPP3MUUIZ1O?S+9V0{Kl_ZFE zqUqH&HHRTrKNr}Q64v<=&{RJ5F!@@iu1ZkZCsNefT94jw^TeC%VHiu`XFbn?kQmb&KqhbH zP}_Jy*Z7%0joVd?CnimWP$V9!D^p;B*pc=#DMu22seP62 zxK@Kxbre12*1;Wp{6jhrxYEoo#GBO3<9d*Nk7jmw1mEmHp$v!LCLI=C_;Tu0Uumnv zise6{>q`rYhv_azgH|#+_f7<(SCUAG8ljDz*d-r}w|ve~Dv}d+z5-Om7{!FCIbSf# z>-sr`jURE3ACl~rP@3v67Nzp4bwA&OCgQ^Il>wcwWy-vQWgQ-fue62r3 z7+LgqMGk4xHi`%$`LNIXp2)PQ>d|g_fJ!! zHN%qn{c6wZ?h2|B)L;QB#cMcd&+>QwKr4V`f--_IRXLncR_D_DvOE0V9+Kd=UG7;eWk@=NHA4qDlpBSly=v$EqPjz@O_$|J|QFQ=lztYW=FwKZ~NZ zneS@8?5)(2ZT{yiB&WRj9Vl5K^)r-SW@uUE;M4(>wEWg0pIq~Bd8{ZCx;om3Nl0cn zJmPhz2FcH6Zv<_ic!obA{3$!xK=zIm{n6QEvt;f+q3NG}*+O}i?KhEMi}-(j z{QkV^q?j{lcyw3npv?W>$ZvK|0`+d!Uqm%Mm_4UGwwQwg*qd8uh!pFG7?wO-*iW=d zj}fPu6~-^0$k?gg7^AKB7r4xa{~7>qFQ0GoIt8A|?G5f!9FGC0NYW=7=DWuyey#Sq zuw>r)duV8?1vh*N=Nwk5m`Zp!U`uAi?UH47SHzoN`1zL!Nm^nK{Si?0BqUmEWrD`D zV{UFp|KNccZ};CiecI7~>SY%bb%e7E*%k$YxB0}(Ploupe9ZP0eTXMjSiquAW$#CP zG#%X?#vOeB+I$%phGcz{*O1%<0WECzg3qH;K{wdFVJI<0XB~g1?@~!8xE3=B!HE`l zG9+HziuLEv_3weQU={?)7W9GZmA*>fSJuTfnv7}ro(79G+m$IoSZ77B9pQ@6JtYw= z%T#Ft%yG-~@QCi{XD^7d=Q=M<4lnjz-2P&ZA?9cAbtQuH8x3FXD<6PPHxAYs-T2HK z-{9bsL51Zc*YqVJo%h^3IQWYh_D@|!J0yCY!Ku{dq_x6aDE=qmd6@Bezw*x-?)ncj zKtBCfH@s7#y}`&-arl^rhQrskR_XRy45_pl;osQ=#~8ERG>k~hMn4gc*TJL+WovXp zzNf{|$`3@) z2BiE_HlvsAMhc>w?EqBhIjJ60J{95q%Hh!&n56;a1zB>V^zYJWeq zowj@_)qvy^1`><~_ihHeGBzHBvcmz@S}@3h9>&0x*2L$Q71>%kn21G^yG1adWjcok ztaT;{Fbp4xT>%iO6o)VBz~>&n%*^Db8XglQK7HHQ%vPbRl7s#HM~d6CFwCT!fEYtg zxl66680)`<>hbuSRV;qj!+!@L2K&}9z=AOm4I%@vfISQJDvE+QvZiWZ#?zV4RRfvjA+$^4 zaG_t+wr}C?nSRtGIVZgj$(dg8@JPYTjPrnI-(E6YKGY9EsR+}u{NH80d9YtnFAVis z+j$Yyw7=mLA);Yni~ZDp*8nPJEAjJ#79;}qkifL}eMapDtD|cl(@xA!0evAp4b^0iU$=JWajexRuN_^;s6Y=l>Vu* z(e)iW5r^j?Vkh(qaoxz^#=l#hEdXyKsdaP7opvJS^j01cTlMAQ>Zh+x1)L1_!arkS zFXyVT|Jt{GZUstGA#VuFm-Kx!iq{|C@TzE-7{IA|=k{#2jx^tVEOyp^co7oP#2S6N z@ppa5n3L#n$GU3&B_J#Xd2R9YxGhebYfiy_7{^#3t~K6ThlP+PsfsQC8Or}g1oqcz zx?}+aGh0be6koiv)nN3+Mds543K;S+AGY`pe4Wj_+X18d}YgKh`k`W7TYd?$~I2aDOsU{6Vw|339Mui;w<#qD?jqr+VjzuMCc(CZ7Q z=o0ApI>XS}zapaJ7bO~E7O*Bv=;QML0Jwg4Ie7Vdb8t6EAvt*zX+S1Z`rYejQRhOd z8A`l%bb&L2k&FKYMh{~iTx}W8!P-hmH6s1@XuZ{?n~|$(-`oJ~!OqK%{?DhfvBLA% zYHP=5Cl>Gmxb-LeF!a#B!MKKxvvx1vt+5{sHPE7{^KWk~xFHTgoBHTCR`v&icv#Na zaIU*wXl$hR>l~KdPLjyrYr+Zz$i%M=4;bAfZiK^+hjnP}bz6Z-uSt+eR*~fSzL-Lv ztfGPs&K-HELMn5zpP$4@x4pe-pa$rTk0P7HrznH!o7qRYZjij(Z>moD3;fz4)la+* z5u~7_8O+r{$$Bwhh;cz{ayBD<&xsO5+bH~VAidw35$lwW_fKMNZ}9mr<@{3Ge2mCj zu3klzjx^dq4c{w~A+D^Ih1pIEq(YXwkLxYQ$w&ZcLUw1d$9le?@=bpQP4$SL>~x}n z(1{hxjf34jLX8K?0_sTjr}mnm5zV(DYhx}5+c$d98z8x_PK?*z3gdl9K}PLIh?rl| z3ZNbs-R@LQLaqm5lUgHWYD1L;)Vm&ELG~Ll3maIF-&$>lX36an9nbP)cj`SHP4L$c zeePF-u*wzL>pi!`HYF#5WL7~way&5$Ut3es3p%=fko#qZJu)f=A0_6W@78;my5OfH zB$g1o(6v-+#x)|Upd!vx&Yn1Wl-R4MtBM)yH4rnjs_dP7TAwUb;u;Yde^-dSU#?2u zzy&0A+gfSLYwA%6x!I3=I=hoBSqsOG9+UM1=2T}Pdh>#K&xj9pG5tih7Z)lw9vnPS zW++R7w=5oN7T&1$T2)L|(d?UDg%V9Bi1CDo?D9fEhx)h;Xk}#kYy%4!K^ueV4F|Ur zb-23@S=Gme_9tg9OD5%LHzsbu?UX6?9?H7+j~19kHl%xo56U{Ap)w(6+scb;q%<}# zEs7c_bJl44M9T5~vh_GSGDiL=$nHdz7o-aFKMqKLUtm}pi*hhJcJqM!9S)KDl1Ad~ z^RR7^4(X4XVyW>ph@=7*`+fD<)7IpV%7)h^BftEs+umHp)0!wG%CWnLW5$g z=PI4Ukw&W>Gs?s|(5yq<`K?v&eXlEIh`rG*I4TKr3b%Xjm~c~U35=QByv<3}Q0%?c zjBZ7u*BK?(zZ3Y+$R`G)69rEUGlM-~mBWqtCu)1^n&B}~*AUuA7@YX38Q5B#1(+Wf zvUKPWk&_v98Y;2LA{5QG!w=jr9#H-_t$Y$ERNS+fn94SfTR1KEbJ^K?CmYQh)Kr_! zNIQ9$z}z6DF!x$v6xR4*#a@Gv&0+fN z_^zKY1H~GCS_|!P)}y#$e}=RZR<|Y@O1NYsO2a-fBC=rrpqz3tb_A|VoXz1y2m!vY z4p#?i>3#|ZlNn8@%iqBx-ATvY&F;)LBA|>-96r6+c6|EZbxns(eS*zhL>ZwGxJ zX!#J>&HvfkG<{PX(R5UkA*soR7HrwX{psZ{B6Z^D^EB*E(PSAC(0_^G?uy@{lZPez zOF&Fdc&yl?36}*}9#O;XYu$6ri7PX(rGxuUy?CtO=qYXy(ka!LCCB1CSlAk1yjag& z=Xf6&)XrGnvpK)H15G-Q&R{$PPjNWm3$npH){Zj?nChcfd|a+@BF5(EB2R5g+Pn^_71(y@uf5J{Kt!<5@aY3AJA&a2AKW8b1!e)=}EWBio!gRdWHAvLLGRj z9+*OX^C0MeDnG@9h?yiOUMxz@j*qrr!gl*{6?U{Y7t1@Qpp6{AitpGeXL$M9c{1lt zA{OHT%xU;mZ!{~3Qkkq0^ey)cKW9DW0CTy6%2?WBusz{xliN{j<4`>_82V_9pk@*} zKN}~w^R0KoV$U|SDIE&uIPc<=%G&60B*kH|0w>2rMDoW*-&iIqCzAs5+ z>3VSn6I^|2bb&YRL@mHOWPY`t{*VuNz4h1cFzoF4d1fldU7w#_6ia8{3*&U5!-OvV zv@KexCwy};Mp#D^KJ+*0Z=-$W$2oA;b|-r4!jgwk-w&2nMT64@+weU#p}XmiXS*Z3 zHkXsIQVI#@g6lgB=>rzphzmv1!tl<>tn%9(~ghHNnOiYP|c~um{F-aQ^ zH*$Ed4YPcUwY&pyHhne5>}$DH2zc4yZ8mabGBAk#mi%_b)=x@{HMyh3=ZbYrR12*!Je-(Eed zi{A`!m{&o?xvAwUJZo3#xN1azXs5jzb-4m?e6XyCZ-wbJ_Hb~%NUuj2*~Y!OExjI` zlnF)j?bw}kFC}~!;MADQ(Ce9ky7qg80@v-JbRj}etU4tMa!b)@@aS~FwWWWre$HIxkkj}a%fq}!Xm@U7F=I;3N0NSw z(&wCt{ed%Tp@MFirWRhe$p2*+nxRzrsJpT^f0r=kL1y0fB+6og5`zlcT#~^utaEAz zRyfRU_|$|oCxZcr48G+6$+v;$e#M1nXIgV&XQK&+nnHr;E~mg<+ExbjYO6a&B?wOA zVVqoqKP|sYTpT2)3&`}$6emi>@MaR1MQvh&OkME*zM*nJf|n81lSrl@f&|A?~cEmKYNOY`#T5A zv55qli7;6mjQ5ky5Hdbo>H>=Y)P?V@$Muy7o+^g)mwIT%9))tI(HgY9vCmGbfGCZ%fa zWKaJZHWJ)$H*wa(q0z~?^UcBmo|5Ogt%`I%+>_9A3*hXwP;gr%j=O+?ANh~FJrP}jfYX-(DCq-l$L_RcZXxM;{GSzE#9VwK zNl75PYhH*>wf^VbX>it^{*oj&@Fx$Z^QP_aOtRC z2e=+1V({Nl+Tp77PYT7#_iRSo5Ps~g%qUX@Jtz5mAlRXv7`}Vw8hU73^C=E$ekt2@ zdjYe}`j0}6XdVu;j|Q8EEe|EoRXohukKKDrG$Ly)1ljSO;~{!Q`1}&HO5|(!JpNkR z!bg^&p|zx$=9@r;Lh1xI@@~SbBonSK%ZqZ+HQWJmBf-4L0w&ETDVT`9m?P_ha<53H zpd$sz~m{hkYs#b{8tNLaRAPJ5HpvG7<0nm?Me5}2%QO@$u>bChyWxgzZ~>J zhb3CQ+Fo)tdSs5AsSN@u-_&$=&QN@ovf9Kmvfgb*ec>}LnvFt~RHp@<-Hx$vx8mr{ zGsa1=UxplTQciNu#}-6Gul=EOa80YDOiQf@)SAaXCv&Y~^G@j5vAd4PZMC zQL9%Xr7)#*7S{3C$bWcnL-bBdGR^-)Wa+N3mu4u`)R9B%P~W;WHT~HsuS~aFK}(PB zw0u&tSjnq_wFo-e>!lSs_(Ca`MY_UH_URG{#p%iXVkM9YOqLSHmY2b!3B1AX3&z-6 zy2;{PJ1MSFpBm$uJ65VVQ$`0~43L8&wcm_G2Y8iOaILyRPC@z^|1>vrQq(c`XTFIG z*Vlu4y^o|m*_PHT5`qcE#AF~I4x<)dBR2hjXKq?OB!em)dNi!uB5cNMe@1QWHa7{sJ8`< z3lBlPt$?4Q8Z=q5pWv!&hpt|5?tI{BfQ zkM;U+Y-&vl0zVoLtaGWt(5;m0Afu(tmDf#@Jf!VqV7G(RnYdWwhVn+cEz-3b>eL~L z@J2QuwNya2I?ou|S&S%WryuHz9a;WTCZLDLeqQY@DoBlE-6Jh;-N~Pf&Gf=oc`6C(?#~QRaO^Q zKM86}Ke=yn3N2d;I-evEF0<7dl9jywA)4^TvvU90z;0nJi4Rd9Q*&Xm8fzofKWbU@ zNTwG?^VG8LYCRoT1^fK^t9nE9)8VQ^i1d!Sz8U-Q3<`>>0~x()K;l&`ViTugMrSS0 zWG1C)jB0mcttWFZ(%mWr%&0VSz;b_SR>9L1`RQUSQtv?&$-w?uAr|Hp*I8@nqD+HE^FcWiWQ+v?c1ZM$RJwyn;NZQHhuj{4@@ zbKW!VZ@6FA8qca4wH}SCS#uT%J!&!cOPLbSH>TXWEitAi`c#ToSTPhQzRJlvnN~+s z{Ddq(Q+J*KQOv=Bs)&f;=+#>N^xgi=(oEBv2+V3r%=XcX^x7|PkPcw-H(B@ zJ|+*BK1vje8%|tMU$r_hFLJIn2fF3b7Wzs^(R=TJ>3JaHVS>oj0 zvL=IzDVl-4AWs_V#;}s8S+YVI@XEoKllZ+KSfWL`!XpX=H9F%viR zY174e)*1Dn2sP(XHk#Nd0D`vpX=3K=A64Kp^7}ut)a(6kKrS`^;&=M46jpVVazw%6 z&Wg1JPVW@wI1Z~T+j?FpQ6{gg*~}Ofn^Mj8>nwZ?{q?-uF~LR6304fsmfK{_P-~1Y z?1}7Mk%@(bRKn(BNz>jfkv};=hb`PtpE)>9AWiS^VJMArG$ApwSh^vTA=rd3Nv=l6 zQ7uQQ2`FFs34 z0#6pYV0Sg9aHAfaUL!(NNn8yLlsKSWIbN18LMr!vR_io@ugvQ*Ubi(^>~GN;afPA;QKx?TONuVGk!w>xGmqx5Y;O} z-&FFH*lG}l)*67KbP+wWAtswdxlvXy0aWl1qVcMAxr>iArRMv=^2hXh&!QN$x|{(b z5^_dE^y)reM(;Ru;aEC+kdK4g8$1mm-7EVKyi8o9VV-GBwq)zP{8$W#X9&8msZwGv z?@k!JzN`Q}Dv`S|bX65JBED8wdN-x3f`T5iNj7#*%(=)m2B6hg9IM7f=t=HXT)tT> zXD{D04eh(Xa`_RWf3eDCaAA?j;0Q5O)z??_DP7>*@o_ORS!+0pE#|cNwBe1Wod+hy z?s3Kdr%w}BDLXwhw3CG89R4M*M+9!QSa^psERP&n|Lii1c)QClRa3;CULtspYxHlu z&*9Xq5k<8$=M^e%+qB9Dg?5t@W6z;sX9<6bQ8dT!@QH%o%wm%Bwv%}rnD4dZOHsx9 zRwuK6*fw2aMgRjN{WC!1mz$j--D|#NXSXel*<%L35Zhb@+|_q*!MJS#_bbldgOj`_ zKZA`&o&ksPZuKM_iF5HJWFI(23ylf6$e{p3N6Mq_O!n~RU{g6&O-MIdFT$pkFu|EI zTzNhg*scvulB`Gc)YzxMZ+NUKmahOvX>K<n4Y2rc=}W# zolsHGr@CYvcYfO__0#~QXA}q(q12tg-dHxr6^e9U07<@_4vN`Bl{{JOe_?1oStzB3j6|C;TBm3b8*h zpin(qf|Mhbz0ryXmug=c`g{6-+1TOJj53DfTph?PfYHRC6J6q6*FRrICLT=yBVZ0@ zB3X%#Ft9v~+*2qIcfnP5OqXtt;damY%S;c1&Y{lmHx;6k`r-! z;vNM%YtmEe3fI&U#i_AzuG3xrvBWT{fEg3>ntb-a+HnfD{rVSxX{d`HA$;A{LBix! zGkcHRPfm_oF7E>(q&O)z9i0stwWD_GPoK7|rtD>C z$oyiWm2gejWwR*)k$k2Y5x46=-xs^b6%&NE0tl^^m!Y6{#d*(P#@r`SZGLF_Q(6J< zmVckdFHd*yDg#09lLtnLJ{R`w9Ct3^UsA3N`wbsyE+c&YKwF-robr_udd;0=QOEf( z5`%b#pxYD;Locp2d5Qg%w!@j!_v1k#4yUHpfMG_OMIBsQMtEth9p*Um)L^`!)3A64 zpYp@^^+9Q~A}p=Ay#4e}Vq&#s`ZM!|eA2m>HAirO3KZ)3u-@cd zk7jAr;A|$0Rv$qK(fo@53j#3?l(yfg#^3g^Wi6f7iOAFX(>qAO-vUAYsS>EDvY-e} z91_T)6c9d5WaCQxswaf5U1m75clLo=oy(69_PH64jvr;#H^69Vva$Z?k&=fa9aYmL zGyl6Ovh7uKk{ak)$#@fy615YQrdxv^g=I}WFP7Dl&Q%HYLapRx8Hx2s^5zq$)eEX{ z7dFt5>NESkC8*~OVdpZv)S)l0lhcDkC)F;A&V|k(`As*3KAvo4fEca>D5jeHkg}VO2_fj z8Sj}a#3%3ii{k^_QRjI5;|&T3-5IV7VR0Cr!&}q*d&+Bu^X76EnA*;j-f9KKpYDb| zJT7xM{&}~Yb+GE^#i^=>2$4}h9*$0OR;&wJPv9ktq(TP~jC~)}qY6F1RkPX!nYXL5Tl$W2+dSm$r^N&o%-3+X)|F+5#j`n&|W__>=;Mn#= ze899HPJXHDTQ0}DYZFg@y#C4BRAPP{q|NB<4Zoe)1<7~zO9}UoU2iiEFF1rI)nNT8 zXqIX+V4V8L4Z;<8kdf9)1ivmmFgA%5G>~b-<9V28X2@twUcg{|%2&a3L}cU&rt=Au zj^T(&<%Nn9yb_A^K-&{MpZDsUHP3_I%!dVE*N3h|<;iyQ&ZE^$quZL8zr7_55*(IU zjVl_>-7yZs*(_U9g-Y|^InhC)nhk#WYS}uxCzvm(nc<$f^4_jRc=94^`P8RXXg+)F zYmEsW#FBp?0J@v#EuFkxO-6rQWCuPj#siSX|B1Te`vF2L`y222KqiL^LQmXKCBhkE zK+;6vhTp>T3vD67S8H8fwSeD9uo_Xx#}e!;j*2z;)$*Hab$ha4ot z(nY2l8dug_f;q<}JVR+DAM|n}=qOs(NLN&rzF&Z5UMCV1|K#N8@GeKUphVtVCXVyX zwuiS5Y^tqMhoW!Prbjv6*>9KqsCpv-HK%-U=M?Wfjle4@I znovGXA`3?0#uN$zs;Vh5VH~Mk9&BTdK^D)PAnu8%5j_`eGc`BnwMN2@$Cn<2RjCRI z2J1=D=8{(fmzDV)4#odSDMk+#!>_h`^hVnSFQJqD`jy|3n}W%E)%=cz2HQLyB|jQm zQbc1TbJWQot|N?5jdunb2#F}A#X)9*)<3rd=7YdCfjY()u=&AUn@PKSy$1h>)w>oq z`Do~utc);~s5CE0gKrzQ3J?-$!(XpJ>j4vm+HmG#4 zAsfb2A*9G2Ucwy7gVPeSY!yU0QZnCFja>G~cJIt0+6Wd;-krI1QYHC3y>D$gQ6w_p zjGSVSh>a$VMT+Y(Tel+j0JgpzZ#|E?HeTtVFk!5Vg@b``IflU7n2<>GP~J5M?BT^_ z`M55ogq9st&u=rGsc<|C-!!a<)npqvO-(2cBw&+We?Bn<6@geg zhK%xJ%FCEa$C-xONnhjO!r?|g%re=_?H#5-{snMl&%9JRNr$WR6U@N8FQGz-h?ES5 z`#829pd&O(MvX&-7R#Kfd3ds?(PciW{51z7$x6r`qR&EzRRLS_JULAl0P^xCnsaq_ z)nurk%$A6iC+NPgX@2V>A*lvQfp~2qtm2;VN7E8U0cW+pZyY+}vZEBSww`4{LQ;-; zKPgdh^pn=u8Q0_QTVE%Nzq)D)S$I2Ugw3@*w)Wb9QcD-uf z;yM9HcP`tBtdnvfN>1|FQaV9MJuWX_PBD{awj*3qw_X%~-lPOWT6z!M%u`B@Rusp@oW<(TgwWFbHuvjKwaP(JgJ{-{95Cl_Q zzA}ZAoC{;WZNu9RKQp$Ng( zP>7$_GQvs_-APN2Oh?ln?744z9`p@&A}lBij>3_Zk!o_d3u=*ZR(O88?_0H=L!Bcv zZ5Yv2#E)7X!V2KgrbSG~6p+Nr!>O4i>B~XG7D1x|0P<}7swxbOM$2_Q0IHw$Z!e+q z8~La@$P^#mZ%eQHPZ@f_ROq-?9oiV1U(2UB`)?qS-%}Tp4Lf9?vsp5%?!}L3!&AS1Qm$DNFUmpqNj)N6r6gK_KqehSdd% z_mx)p6}QZGH!ohzr58R%*aH*x=5$6#r>=Y~i&icTQe#l5yRhQB;j$$f&=U^IOzI3i zPcqlO*SFn6*;8u5hURd=i;?G6I2YD@ZdEAtjqB{7n*Evn)vD#P%E1?BQ01X!)PqFa-tg9{ zdf~%Y!ex{FRez)DL_E!J=*1AA(;nw_@yA``;7(Uy5iv)8xwD{>N_BRaq5KuXo@RFc zPPsYubM;05pp2m)JS@=@Y-BGI0gi{!ze^TovbXo7MUxTFND=wU2y;Vi03r9Zu5bdn(B z`Yw>I1{dRJS$*=RL=yHDnlehzCyO6VU69Sd2e`v~Ku74(!iFn7W@jU7Iie4H=3_i@ zc+=u3O?l^PXgCh3?BFW!_J3O`GWnh(Qvrj+KG8(u8Jp_O{MJQ?tPTNSHNoj7rK0B; zPf5~Y3Ktx;Qkrte>ST9oi^aN34X5x1=Jpd{?)$u!TyxJ<)r7f&gV(ALEzYXR1&7+zd8=L zia7-=d$?u z*y4wa3;rSqyurDRw*(@c+Yk~i0dLXY76cSs2OMVY9fI1ZAaS>ZQlH>|a_%zJj~Z{E&ogdvDFT7kY8 zmnTDGd#F7Oi62KP$??~h?vX}DU{a=J?0F%am+z-SGo=XKuRiRbKG@$L%$PLav^VmH zirzgQF~mwqsfaSq<)F_Hu8=R>Pd`z91(Vmu+K$@bhsTUxS!!1QWcpWUt9OxxG2Mv@do($yhaeYgr zSffJI&hhclLwtFrN7N+;d+;Q2jLTWtulywFa9R*Qt6wLcRwNK738|%%+Vpyi<({ML zd59sCbaX!nl`|W0h+iw*XXRwwIc2JnEw-)j!6+wS$!rAnFb38OpJ#ngHp;`#U|(=k z+5h0}M2kG${SO8&kv3mNIZZ(+2oq6&WUV-?zsCZq%NzGdYi?dAEw9*3axcw94hKyy$Z1khE6x`7 zvIO2Tl^9%1;F+jn2kyysvo!m-^S3oqj8E$*Qn{$!WZI|M_XrLi_Wmb8`JnFzEWLvV zVaJCJBm=Voblv$!g^Q5FIN%<{#falEu`sN1xiKGsoaF3KK*oLMIe? z104*!5Z?ex+E+6+m#Z3NfE&P)OA7qi6QfSM+8Z<@mJX1DH zhWJ3d-#=80TK--{?SS`)@7ad)7wwD$7hEOW?UJb3bB+fjg?2ElVSNrs!Mn>1WpfFT zP=_fnic&E?*o3_Zqz5kBEmO*Lhp0}d@B4UAg9tA{<1oVug5U~?gHJ61!@Q?A!~HQ21O zH!|Q5KyQ!=r$x;RSNIIYno5pKhn)&A#D>4}Eqli9Ly=ZB*YQ zS+e5=EmS*b>$P}-tCqpyAZ9_QKh`?~FVVrDK50Vv5d-c>WdM)E%<$5xH%T&|VvJHC zIs(Bv_3#V($o$d!DM#6l3A3rtgR&%th)3Y+sOIa&u$%AdX+qnj2!Vep4KJVOLRA5lxMD^LH*ocPO3_ z!nQPx=r9tTBI{q8=$k!aU%L3b7lyyE38{Ur`!NZ#1==Yg!XA*1ePQ;|p?a3E7=G_y zc<-HoU%6`Na<7yG8M#qXH)4t-KT=k(=EghSor`Quu1y%Q}C zT|?be3E1gA2r?j@Hu>Ft9Q&3UO!J5!6EuS1wkF7le$2H#4+W>`3kiUJt5@f_S7?xUZf&`RX(I+NkDMM~QVvFC zA+~ciF?mk>;ob{wcGq%isF+WA=swW8bsWKz`TcNfr9cbm^~0i2um>}eiZ*UfPHXoi zfwM=FTlu5%qNCk4t4_N(pUiU!VdLS(rl5K_3%Eyv!#efn=5p-Rj-;%hrnKrOLUnTy zrvCdH=OmY}YLmqOC<_Fe-Cc{kG28cNr(-V6?is!h>H2ocvmQT72qEtJn~vpl;4fkduCBt*RDK)vZ_1>zqSOBx zDkX%e2g-#3l>l5kB=^ib4ys(A?x}$l*AGaZtgo|ogleH8q~n{CeXDeb zq+qvb$W9K zx{1QyHhENs@DN;ThPzTQ-z|IVlk}<~6`VX94Sex=R1ZjC@ikJQx@{BP-f(&#pBt#l z5kJD1X<_+8J(y1iXs*nqe=Qp;m~ZwK9!)SR8%ElTLkK3|hs=tqcRtQ{+%k@j)aTIR{50aH9S%=A# znj2fdn_EFN`nwMizvhFmRM9e6D?MmU=pQU7_tsA(vTQ9_>;9AJ*6X&7u-TiXXw8cD>I&>A$*#n?*XtA0QH&l z*=Ymwe9a$BP&2YyhQO0xxq{nN>LQ`HDCxzg7t}SyQz#!dg5tzRAS5E;G|5f!rGq1< zCp8GXW5_Q_V;g@+Le9~n?qiFifkfyt&|3h zz3h0yb!mm|yR`ER$D9Uj!nsVQi>mVmhrvSE_q`>l-*JM->%vbsJUsHBwm}W(3BWb= z`~`tP>|!)lW2A-y)JJH9OG{JV4e`hWuq1I8q1U=0qufLfj*!X<=_mj%@>jjbx>E;uVaZ$eHmt7mK`)H5Zf1Ha^r97nOTSW2GlJh1{4gy6 zxHO-$!h>}{GK~>MOZorC4l_Wlt?@j-$dw?IW{4NtQT$1WIfw(EY6tFblfMNL++3G6T9K0 z)Z&;JhFrWa+IEku*)lnp>M>54aDas{USqQo->FlOxMoRIW9QG!DJJn9_0#!|77pn( z)Vv11WH-P13B-c-5m4I=$o}p~yB}C#<$+kSVE|T+_l-82Cq$-96Wu{wp^j4sbvI4(j2JlzHhvm=hp?mLh{EM|K#)YLWN{_ zI%e9Zf7?GRlbCgFgRoJl;PjwI8VHLKrAcj}ej$(}D3d2!ZZNIGWU6b*#xnmS3NK&A z9cxSemXeFE1?klrza6CQY5@WFEfI9r#^2|dWK0@Q4L3N+WIVebLftOt58v(x;Hldb zK64c^irWDP|8$aF{ayuOQQY<&6 z3^1f=#g?i5{m10TwIkLVPk#oDxX_Fl-7k5g12Jc$Cb1ViEG{o_PL94DmaH-PVm+b~ zs%$W+$9<1cDIi>k$d6oKzhH2^&G8v9wd*~LwFb7@Z4L@xEtJ+@&x2vtz9Jwb|=0IR~v9_X>|e3NK0$% zw8I+DtVJEgc|M_*Dm>+v*Ex(=qRXMrAz3#TzYkh_vlA$%UMvB(?5#P(er--zZWQ5g z>?M-A)q}5%i^Er1o6TF;-)Qz$|B0I$R2d_OcZfgv<_lY#zBB|iO*2G0Q-ohG(4}Q* zLFLLk4Y%UFlT#HvwUzk>d%KJFHmpqt7K8vxEhnOp<|90Zh60J(fx>sjpT-NOIA((b4n;LN@$y!UH(Q;$2lc>>3^Yv&D^fsd>xJn7d|!9&@Ox3k-RAe)vKPV?t|DIL>m!Dj@l z29a7Y@>%~mFBNHpxC0M9`Vw*VEdFzfM|+f>s3E5c%6FQ|gc2Y{KW~%+#{vL3f3?=3 zxyZ~{eaTIX?;-Stpi#dRPUuE?*?BAmF+Mz`8S-rwP@O%|3o1zoT~kv?m#$K)(A6YZ zmhJnLXlVVZMUh_<_cK{^-HRPuoJ_fz#94K0$))rd+Bi@@k{c!slbIB%7Ei+y5{x|* z21GdIH>S`lUo&UM-g(d>vOiXM z>=d6I;3gG(e(`!kQE+v>!X#M%G7=`907SgyCfrCCl7tlOuWg`gk#4t!&gu ze0g=z?exT_q&C)%kMJT_)zs~M^ z38(=+o|rCA4dtKZ2{icEN7z;`pOmJqoNLGjVq-9;!IDLaKo1&(T({lF?y2~V*8}{* zjtw{t&f+rRLW+%OTN`tG1iCB~05oxQ^M@F;@EjT03onyn{qA;r!LxB2S0LdH^|q6k z7%Bd}=jkt9|JRCU;#|6yb6ygyn5-n;SAY;=vW$*b?xj@(R%$9}451sFPh964xM!PP9P@b? zt}tls)EXEH!4{CC@LI*?QwPt`^GqMe^D4w}0?D7-9*eKfa)4R|S~Cl{W5rK33LPCf zFLWqQIP;9kP$W}@GD!!m0?rZDiH10Y(FIlp;|_VwIs>}ZJSPH5o=TE29ATs}u7oBM z0Jo351lcG!1~-i}4rzfay_>mT>1dno2jVoW)CD{ge~9H;u`?%t*i+oN(0awX$4Lbj z3j-yQr4v$?l@lMD)6x=t;$#JHD|KrK-*QkMS8aWd7?&acMz&RdsJWV4F?c$1>+)rxAe&6J6(~y?otFcD)>t&Hg}t z-Z?@%+-f8J7P`vto}R?!(k}f1G`);1B`A08ODyvVl?s0pm4Y(&>G8gAAZ0X6)li>D8GWJu{z&d_U324Hi$!EF@c~?vbWO z^oMQsXtje#kJ)$^U+j8QC_+9e4w`9oLVo#9G398tMU}sBWH)yliz-+K5s+S=@U1bp z4j*LikTRlOz5VHn_S|u}+l~yozCpnJXCjlu0flZ_i}e(?JX)lX`Mks%{CxB_R1-8u zJx!R`^+b~RIu+hkbBQO=c}pIm=E%+d4~Xh~GCfq-qMhKe(sIjQS%Z1LYHIlcJ^}_E za~-)d{DJMq`o1enH^N=JCpKIBwn%l*KuYmLe!f_;)vYGJ)t7ra9XN*lwCZ%iX4UFZ?Q)xMx1a73exNz>j9>zr^u^?BTGg7GIJF|KRAmG9`-E~iEd?4fX~4#R*l|-!QWqc_fxm}rg7-Kq z`>^88#;s%Ej1}jjna9hrleK{l7W!7Hy_!vtsCX6^8XD=d!nq3JunD_q1$Fr?N&}lj z82?7o%p=(kMUdG2aZ=M)qMUkl!dW`j!}>ftI34pQflD&mYq_gZ)m)EzWa*k2b1#19 z^91uY^MiC6qqii9;!9g@l{U$L@42CmLb5!(?R{Et6@`fTx}ri9I{{gtHd7l4@mhNV z;9w%Q-mAzE@L=;;3{Gif_StAL2|K9c^f)=v^u6f&#dU3}FkU=VaC&iP@#u{90z(ZC zTHX!!SQGl_TARw%x0ADjbgq+8t7`S|#%xbyES6HYSXp1$$YpdR#3N)akiv_QV+*S{ zk&)Mc=u4`5ysgYB=N-nJKx?+)&QI!Ly4{b>U5-kU%U;$L!@D~nw7Px#dY-Z$aunxKWPMm z$&&g;NSGFwGwH!}XrTjMY>K4h65L)Uj}+4O1&WP4bw}{puekc&E zI-^6&Tkj37Yc`z|Pr+AVl01GvrX?Ba9R3JAP8mutV|IhD>r3oK$viv;nVF<0%k`vUw^yQ#k6 zbbF4)az{`m*YY_D+feRF6O3}!Xbk2AQXb|B9+7bDJ8gr{8S2lnm9=AO>FyX@_ka{@ z*N|lm7aP2g@L)AcUcbc9Gwl6CQ8P{>*<4tV0)fU0;O{QFrW|#``wkdhs^aEgy?0X!=KhV zo9Q&#u85?7LK0jdc{Gp+m(lrwTdT=RA+bSr3TC24JV@erP+m00J`r^9v4;PShdfT6 zTA4n15ToHu7L&9P@$QRU)`kR(T}=V|7o~RQD-kAP6L_wZ+9NMqfdN?;ADG6}?`qzaunaa3Z# zW%Dx>u^U6k)SS_6dd1`F5ywvKNx15Hs^Q&(IJP(?A7tf1r(%BYIA&V4usfGEzd`NZ zcdcKZErfKvzXdka*hCLIJp65Gfh4aS_u?H3mPVj|5_`&`{rEz(d3Rvn_P8SRa4^AHtcNhN z9Ak;W(B)~dj3Fn`cXIB9uN{lo$IwLrj#abQ;^*S{GHesP)A9SbL$%6dk`}z*+#c%k z?Hwgf^r3Gkru-C8sf?dnaNGSG+i{L)qc^an6ytc|N_Rdu;bxWTQ)b{+^qI3d3Qc<~ zv$Vf}R>!|yrMA90DE{l$p#gm<7%1m>t0ZAH1>TNinS^nvMdS`p|fD3N`C8P;Xo)8}26ZSt-aA0HpS8wptTrp2dgbKX&X z!`u)Nt%Y}ZEZyUFMtZcohmdQ%4ox40tGFvhDA_r^nvCA8E9N?r*7HdSVX4#Lz3;v9 zu%AqOecdv~D?aWmGGyTGV|PNLEVZqqoYZF`)b|=G^e^X7?O@v~QSA685q6^b-rA-5 z69Rb~F2RU8K)Kt7O<8Yf&dYO-;lmnr-g@=LI-wWd_re!+EenLJ=i}(E&Wg#{ROO}2 z+}ItG%icx-&3qA^SS_I(LmcR}OMunq!1?KOpONsI-oJnFg4Ej;8FYI~@cMB2ZuNkz zevO9jhJYBGGo{=8PpL!jz*4aEVV`UdgSJ?~3z3&34FL<@+?=SpSHSKFA| zhonEvkA8fQ2O|*#(zl4D+(YN6XM@bO5I^Qj<(4UkR5(7CL){H)=lpD3R)g$3ap-C~ zqyx8KPM$mr>08Y50H7+1tjaVe@p*C?=^3s}_Vke{VLJx&Kxu!9A5s`<-bJghj@HrUqIWG$zJ@e%I~+E;4{_bB9gpiN-ELJ{rAV~*-bBGXg}=LPCC0&l*RxnC9T~ z62XRJZHQb0#|P59SovLWF{8g+)q{pK!6vi_#{Ka}fsV4T*VUE@cn9Z51rG*SWONpRmw0tb4b=y1aDdn^Y$!NKo)m2q#V!x8_1 zI`E90l6bJKXY;K?D8{%BJ|b-O8s z;GR%Q)&<(kR|UI1Bt5u*Slv>E^1*S@R2PqL&4^@WND?OVQ`HtWiwaPvW`U$7`X3%U zBXK}627Ks!G7Ord@p(?y|MvY2R*76Yp*2*?qCFs5GzY zyZVApM>fKdmp+jr8UOZ&IA1hMQ|Pw+vvtvSQ}U}Ps=yhpFcivuRA5bG2iqB@IEz!L~@>c zwAGu;)B{0Ps(uvtBeAGs6FR+52rA@J}5LcsYgS^rB9Gbvx=wasrrkx>5E(p2__vF3d2G8MnwP zk35OR(>R{eCs)#Z~50fR6*J^8`Q zX-1y}N)GW~W4_W+IjjYqO>UEV7%8E~-tkxdm~K5R)aEL|8y(PZ((4&IQ`_RUc!*zn zQ?+K?ix=pA6~XioFeF=s5H}t#r*A=3E6(X_GUnJ7L}|?*|En-wAVo0vveHxTQNw zHYzfeT?~uC;U27aSRR|I4lpqi?i1@7Y{G!~8GW1A(F(VIt3}cVUlsW5|L2PLHxkB8 zPz*+s}q&h(do7x? z`<2AFW*amMB)c9WkNuY+tz^@ECX)N6yDiP51x7IGJCfmAw-qmIXN=u&JDN1+wOF@2 zR(nXw-lHWPH%H8Gs5;)YnF)h3`!NafrBGijvHd;6DaZR+6k55;-qF1)PY5YC#2c>g zlJ}~++nd9jV^%l(-c%R+O;20pOsiKemR2~mHF(zlaT1UmP=TnX@u}&tvU>;eGAzr^ z3azim3cDoh__$oTfoGNNfD(-SO2x zB5bO#D_A0ql!Uy8l=4$mX|wr7aojSzCcnPiGw5O z)y6B%;TkR>zy+VF;LgC`D)0K26=MR z=&P)9JXV0$iSGJpasrczcX8>JB;7>(=byyrEM&3=GR~+dgntB0@CCGGiI}VyV=Y^q z#g2o&kAXe@ph_#YgXfdX(VcC$*H_aUel#=t^7hyL$z&9FL!+WU#qo!ca2IByj>nO5 zCVTHlp7@_t_rv_%~G7mNy;;v_7ouA!COINyx|1wG-jy z8XNGT;^sB*s_IWnK#Yp0>n}9e?C{Wp!Q9dmP*@`VD+&BpwCS)z_@x>&I^v(ky*R{B ztt!Ki%W+!}vxh55HU02h(^woMx|P^o$F2c}rex*DMpP+V6jLJ4?99cM{;*jUi>g6C zVxKHoci1ZZMDxq;J5nY7Sq`4kOwPl~1fDmyZ}NqZu-ZrgG3DJXcp%77?3@&OibTV5 z?~vG3Dm;Ch`_}=T!(mmi54Um#-D4Nt9o8)lcJO{`WOiXA@SqdnBh|t{cbctZ2SM4 zQonyinnXZeO?+aG6Q;}ISD5_K0zbSh!knGLe1cB0Bj2$T9Ch6;s|?;$=niKg0;B}c zsPBzb!?78;26y2Y86u+0ov8L~5qhN=p*Pi)>eXri+s^Vwp!QG!9G#wD=OdQfJiqM7 z>W@(B22m=rFmn}T9LF7T%Mg5g?ZJI+yF+N&$zF;HWrtfG2rU;FG9MbV%PLV$gqRjv zLcxi~lyv{~*x|cADITiwjQ^=0(WY*RFnufV;&0TfmH^^?K3y4;T>lZKpb@xgzKEsCVm z>Kkly?ccusR{1y!L)*NQVuuv(FgorQ)>){b^5Q@UuF68-^KApGUqr6~P=*^-BFh?w zda}kYm!Us-m9qRNvUj3EQ@efNyMN9?A>g=3h5)_2W*40}*C|5v3_6-|am3jLJ3_l} z?;gYtj$u431dUznQ01KG{B9o}M3j$hQPBmh@-cvI#xb+d5s0D(z+do}Xi?=q z6ua7H*DDz^$ruS8BdqX3{9-^+@Pw`7v(dL!JFp3`7PHmNN@VQq@}UL8mRYwpsRNf~ zd}oB!$#IhMKlL7X|82IAQr4zf z_@A`2DDwU7B@sN9@&E2u$RTQZzs+2ZEbUS){+}tK$^8E^r7I(`{eq56tmbS->vC)j>R?TH$VPOFB(v{-gB`FXdSn2V-vm*%ksJj%MY>YqSuxJ{( z$d}GsI|&G;L+B1K&w(4J$*Ov4h#H%FM}}>jMqaSmrexH+u=a6Lk}wsYb0E z22D$hT!vPt#rr8*U~olf$CkXV{FVLi zausE)9yT?cV>Q`yve!K_+xoOvoC9V(NSiCP5H8NR(q999F4<#ux<>YIy} z=%YbC@W8t|4?|U>$AfEI;5x7_w;SdE0B}H$zy6mfn~KgRo3BH ztt!F9Y2V|dUn{(MPbYX@(zjcM9~Z91$$$jhb4`oO61YaOm;1b^V6xe4nvfu;5~ipL zDq)Z!u;i)z83j8FCf7R5%n@fK=2P)m0W5yUQ@uKVG};Lx)R?vg$7pkn8S61BQ2C{7 zfnelO(6m%is!^`0lf3EmaD=P$8eUpr6>u3p2IDrKlGWLN8K9WdppC*^M@w+7<&3)4 zc^YX97)G0EPl?s(L7zcKp|Ru7)dgBxy4Hj-VXgKs3NfE11+G>K*sF2m@Nw)pSBj(S z_u}{6ViDna@mWblRtmn}pNZo+z^olWUTkH? zj_kBltU6YRy|#n6e_%_rkM_A}Sru6)@y+2hB({x0Zb2!cLVPcp=a(k9B*A2N(HNke zf=C2awXIq`m0;q#&6z>!49y{wTwQghrZGAZ6oz;Z3M4e zlZw#dB!eTJ#x%7&Mqd4?06PmNDO>+zoMPVcu7s6JtmiQNM6`}PsFi>?Xin-YzPe96 z`l1iXT&Ey~mt@p%s1vIoDq*4#g6~GzIwYf>wVoP025C;Gp@L%wB%=+Dr;8z=Sb|nb zJ+t{RDRA{tpsF|<^H&~1mYX{~)6Zhg#*=tvVB?DrqykHSJcO<3cZ9QcHvMtRdSYMyt8OGzIwD*{drJ{ zFl;51s;iY?s^-&HEwd&~FeyeZ zjF5O}OidR^4rV4yQv0imsuBzms2FD5Se^ORCzNz%DuoLMidl+ZFHb$S$Qs~^x9bAQ z!Ke)trH;#a!b#`e1`}7woL&@kp@5XFet+Vrl3f0e;Hh%)SNmTJhE`+^jTIf7QaA*# zqrOJ{C6Q4N$#2k(ZAjtdB5i2=Q7EY}C)zp{@gMb8TPsjRox88UKin@v=l&l>+ARFP zm;&S%)@oGouhMEm@~%CYoneI!zZn^{|FCfnuImzoI5$^#xLM%NKaSGDNLZ`1d_|cV zn13K0`7Ra;3*c~SI+pHB!Od+V*@v|}7Uq}l(^h3=SvHnch2<-b;#8TH->L;xYZ+#* zJc#zUbw&Vzc(_~O=0?^oA96MGNLl37S?3O7*6u>Mx^rMj9&qHuaV$U30=*jg5Iq z;UM{ixe62qET$L6t}|#`tu-@4I7tG9k$MUWN-Q|xC;1KM>SZ9#(Cma5$TXQ|bK6Dn)WpC9I0qQ2y|lo|A?9Ui}K4 z!u-)NED(`VK?ov4FDcAN=DB>F&MLxzyfU1r0=(Q5(}0JI6(7u5f%!{4(J(Xsago7@ zjq-<;0wF6S8)@mqIGR<0Bc&8J6iSjy1m3oTRLz|@ie@2xXc!%Yn21nBayE4~HwP(a z@^Ch%7|8_{NVB^@F@5rg(y~&#Fy&jcXP$&GA4G+RA}quUVpDC@FP1vr0(m$}Im20d zHXp0g@?hU>N8y{`Gs#F?V2Z}mh?J)ROUoxLP+({v>O57r5zj`@ z1(KnH((-BXS_x8~{$~gz^<+Jy&PJTnO8k=P0{BWg4`v;-h zb+_Z%PKkv=r| z7#S|(Y3bXy?@N+?(4avV%$A=|Nlyf1gl#j_cS@bd*^Ew85hGGaBKW3z2rCYD!;rlzwWR5H1a5h%QOma!Ce?Ho%6evM#sw; zo~SDwn>)1f47i4H*6J&9+9nXeU!_rbrT%sE$-7foq)`n_-LKC)jXD|e3RXSojdTvW zv#t`R)vsZ71dFbW^l5=%-Op6Jjb}yjtIQ?Ugr?j|NDH@<8(L z%~-!R6+MUafuAwGXU9+7w-}R_9!8Ho{So4pjnDr57B**Bp?fdByPUxXuS`Z&bXTS!47mJr{L11EQ zG>!>2#sEe!=JS7=0xs|i4MW#Be;hrU%Jm*Q2Wsb6SU8UenL7q_$8$G!KyZK`+P02B zAXRL8GfH?iNFPYn$x3#C_=rfn^Uw`w%YGgb8I7)?)!2173prN1J~*$PNxsEu7Y{sl z#{fLmy9xaL{L!Ov1Ei&<;&2{y3B=<9C^DA|x-@Qv_wMVBgot3YX%&vZ{9NowuZ>@q zCb4J|>do|;v$%U8EFy|$uiP#Ow>EZ{_O@!(DwXi!VosQn6O&R5Pk$HYr5K|jkR+U7 zRrN^(n-D^sfwEnYD5`>b9!G5zTFfUDRD=}2@h6d*U-=Z3ozgO$jN}C;c?z!lum7>* zFwB_ANPdaX7`iZUXTKrT^rxOyU@2BCaGk;w^OhJDC=r^|Iznyy9G%0thX{@;OC10z zOiQR&RflXmjPxwS2vRiT3!l!e7VdnJ`fBvipE?E#60^EckQnhs#f;J2mEj(6cNf4c*o)m7N}!&r>_;RuTOu|_)1WLOZ}q6hrGn2ghDIfxBDf`g?M$T^jU zjB|NRw;LH$2Miz31oLLUgHt&%7&G}LMEkqp%*I)G`SS%>ytxk|POiotm(KX~?a^q& zkL2|3rFik*pJ2o6r`|KmQNJ zdfAY5&L)Q97o)`2xQEaXY%SO+*9l+BA2jzv=(qq(B%M`oD+e;)(B*aGbl{^ra$4Wh*PK zxTS9w{OS7k@b%F8hnr^u{QmyI$b0_>j6G9+!5NT?s~28*a2Ps88#8?ins(}nH>)b} z$n*oq<>6TFm8j*aY_1sGqYby4H+F=(heqR#JGvm_i%rzh+K5?{9G;(|%BJO@is1vr0x$}c~{ ztRz;RWNQ4cy=wss({kxa8Ck>JRW_Abc$}V&PvuwdvMW$~*BGYw1q6RoS@KQ*T-TzA zaS}?xTt&D@eo3ztqLrY(3my`u@D#uJ^k>~T9Z@Zf)K$_MaC8`wMmcRKqeD0u!IDSn zrlF!jr99oE`{Z4xgM>(3B}D2g&ZvO)##bGJgzKQR4BEQ^-w-slpE~{q3>~Jbjm*3V z)5ag!#p9yhwE+jGg;ed4-t3nWcSD~L%%3?OIUETd+_MWM*5LEh0HKkMID)IdsmxPo zaC$pOoDI>ywG3%IC*hj98-f0DXcs}9d;xXjRW^J-Z30}lGpRZ+1$o7l*n8j%I^~{% zrPK%CP5&IeUhXK*JBQ+`Qk>2%M#ngJRGmGDuV(H?U}z)UcyoUkpS7b}^t8G0PI$y` zqpEKvmgeN*#G!r2r4HYvx&qmmr_uD<{z!}pR9O<+wL_C;5!9tup^$MtRCly%lc?g{ z{3Fnz{{SpsS%8Wv65bR{&Sbu7{O+>$%I`#YLEUdtzCCwO5Ar1WIGvrWF-h13GBHe| zd@itM+>N{L>Ix(SszCGM8c|*6L4oM=6Z$`e9|v@@nW?rj@T(nayb0EppMYtk`6bWu zYf%T9q8+KNcD50DwYDJZ3;dIXa61>q1xe+kWsDb9Pv(;dN1aIqJ>HqQOA-l|)Dmt8 zCoQ97W{fa%1EvF>6KE;KDO_MGr{^ArrsqB!!#sR zuvVUyP8wLlUoTc3s%#0RR}0p|RHPold;*`YMxbl&>R11%@z;i>1E~ey2vbjH6!->y zH3^MWMm>#pCwx_1wRa;{dm4H8R9+Xn{N^}x7&L@4hYpDIE5r9|(-l3P^SK9xqh+t2 z_;&q|6eK6mWbpmy7q}f?FaH648D|mG?`Z^jaAy;@#d^oLMq3I6JJr1|mNw|n*Mfl1 zVC?(41kqHTwd>HHLWhcb*OutiYXB13!~;2LDD#NM-S-W|p4H1S>65SU;@|H_fHM;G zZ=U@HCd~OBL9MSrpRVmNG(HH~->p)^Aj;-_#Szp@68G3dhk1>SQ43q2?8Q7UGTXi&^ zXLL8os(6*H9EVa0(XOM@?ow_xIFXu(bNnu)&xyv$a0181ZzYujEnYYTr(8I9su1Y~ zmHZxS<0qWNjXZq+nJkLLsCC6GyQY?%J?$ue^FvN?Z8nCQlX4I7uT5S^S0lv}49qYkW-qy8#P-nB5P zuf$26wR-Dm1-21qlvDR9Y8XZ+zN$Zie>W}`gp7-ESPd$no2ls)62l*<>%eju_=*POp1I-$> zLe+sEvGZ&Jy7X#`*s#XPPuhkf+=0}$UsJ*hModr$?A(>qv~v#(9y|zb!%MJu9ydy4 z*$~sHA@Yme(6W6`3>-8N?V^3LY|fY1!;eeW<2-}I(PQxMF?vL29ND@Y)8_A0va<%0 zO6)s)2nAkU@wexm!tFN?Mx+~sVRo5uCLoT^Y_9%-CASpux98@b()3R2sy8G@N{NP z2Jux`aqeUR$|xn|j8o(2NW3?^Gwx~}h#*d*WR1U|uo$@|wLiSH%wiN2SMmF>Bh=py ze;C#gZ}e-3ct7%N;#XKygp5+|s&I1Uf?s*11HTbnTjHiR4anPAOXlH!b*9NF%dhIa z_>4)Il1NHcTs;IS2MPwmmo*w=T}F#_q|y_sclzt9kp!wFkw%qYhu{*XXb37{%#Jvf zP^DElR7S}sJd#g?nNr9o0inMup`_qxX{AspSsF{~CrzpHb4|?7Ei|IO(i%X+PqhTo zNQ0=HPEVsw5~IP@>m%h!n4?_1Y*ibH(41a^19oi~lE%oVdmp7x(6|I>255Z z^BMYgd5Z$fU&q4(t(!E$imeMVZrWE!v}9vj(jH{ym18TfgL&naLAYhhcD(tQ=g_ic zEHYD0p~%G(zMh_lYuXDB^j(69AH9wv+qVkk znKj5vqVCg4NN9O9=2nwmU^xF#qRR}-DNNF;k-fm?pUNxo5^kh(_B(}XGm08Ut1(uo zR&6Hh*y>Iuso)z=XZ($_Raufw!_)CpWBc$kN#H%tTpOm51 zQKNwdTj3|+`k(P`JdN3s%nXe%d1~+sxV7<8ZK#)}wIkydeB)Ugmh^)_uX5yPWTDzG z9=F_j9bzIQ5Ea`Ljr5Pe=((<5z7+ZvL^bV-J{=mu%g2*DiQLho$3S#%94=i90i3n8 z_>Jr}6Y(-p?4!HZF$Iv{?8~)*OXp-0fwz3kQK(9hrVkbQG_`PTz8K6$abNYhz z?OO2!ybl_+PC$NEB@!DqLS(2Rn7G@iSwnR)zJv!Li>$sFeDh6c6(5a|2GKm6$Q@A8 z4G|XR3-7=Pbne^=Sv(=%K>-yX8!gW1bnyNgbfv>u! z1!2BE7}m2rhIC?o_AmqjWkYBUI7{jj7l(U?c0?Et-5So- z!yBzzH^DWW1+|NhLP(&u5hVl z#%xLL^ird5ZA7kS0y0Qv-unKu;%W;AVV+7rsFAs@N+Q!@Dh(ee97V8*a|jsbRkJO5 zI{6)fNR1109M$Fs4L_qEHD`SUs;Y&WY3M&{WMTYhGY_qflDf8&I!TC8H^W~$l_Ht; z!(Y`LbrKkGv^r`~_^a2uPGap@$(*CQTNo!`}{mGl~$n(#kN0R`opEns}zD&kHK7JiNn{ZZUI+Fq>1%5LM{Qd8L zSFkTZm8UUPNv+m?IP!LJt%e-Dl+kpxMb5^M?Kv@cVR(uW3Ud^{dTMFT+omiDlrxyO zFhEVP)D}*PQwodM(;IwQe^=4YFvM>ND9tZ?T;(@FD7^H=NBU(gM?1g6QICp~qEt;B zW$OH0y=!&UqEs!6sz{J3OY;~4QI&3#t!2}Gg+@AHjU49#GO`&$Sck02aR#OEb`Fqw zIK7__UyD>}90|pvm#FIDL{|||8X+~IrLr5?ITiF@>TTJ+2b#ug#N-cN#n(KaQOIjt zhCezQ9TP8dLFRvHeND7Y3jBYhz(oaJozV2XTiksjExGC(wQ;KJG01thsOa!XP^q6lfNdtl0BM0 zQ21)=N-lz*;A1d!#jMqjD#a*GUQ{|gRI+GJL&(61Mbk;W^k`?l6jPH?illP@GBRjS zse@C53SeyrMm?PJ*5}o5kQB~%=(VX;7rto!`PAa;gZtkS=M~Zj|9Ne-{u; zQdi-D!sLYcsy}0vgosOKd=%O zg1aQsBJ~_j4<|TUs21S(rAPS{9!z08oj@qBD!-->p;>LG0n*^=F&BhId~0Q``(7Jr zU0OKDYH*DF8qivxnYad@8lN+a|7t(iyuzYlVa}2Mt6R}T{=b+4mn4`B<}O^?E;AeB45xXGcS6?w z8_|5$32@{kY(Ye5u2TQRyK@|2sXR3m5&!~1e`}iwY*ivxMO(eyB4=G9o$kFDy`IO|HD2#vyEURT$?|bue?9kqGmYKl$gB%vmsL zetpIyGX%kbNN7)I&?-Weruig}Kt)(;l7-pi{ro&epn;3_E(x{7f?sVXA;dv~^}-x@ zNkWAu;|)CJ-3XVb?j+2pw_^Hwr8K`JGHSx7?lnSm5H$~#*NKjj&>3w52R(<-Re;Jv z`Bl8U=m}I_fmid#Jum8A01Mvym4I5s=(){@Ndc1rCIx;m1uiO>!onK-;zCRSCIw6i zm=rK6U{c^xDNwWN{t|Ooi!!lk?K)%@Ra|0@izl;|WMad{^*BqD30J~p9Nviy+YaG^ zrSX!)f}&D2L&!L_AM3a80nfsn=Sp%;V(q4_$SylC>VGJ}j?B}Cv26W*6w~I4;nI_L zWA(}vNapRshO4f~$J*8Fc?oJN_Uzb*Lo`lyzN5XEBfGFO`3z6CS7JZgeD~4p^OMyV zVk^O}t!r`cOzwH9O7haMcI{T=(umsC?#gqIVa1XkFz4H)IC-}4ij$+F;4Ic{+=R@s znttOz!d{M?{9FpJ{*s^IIPGr}gu3jK@A`5s2h z@F{lF?){Z;Nz1>+_({uAsnk|ZCEAOzcHsm}U9|^Rs<@K3&&8)R=b`Wdd@d(t9X^>f z4aW-V0&#-(Kj1xgXe&N=nI^Qv|gnETmh`1q5FSif^Ga*D3ZcjZj-lJp%I|M?^wqM^Flt{MwwPQ>f8Hl6?d z)lPWcTY3IjOndudY^N#m`kcM!7^Y781RIW@KX|DxUwv`sc6^J8pG`*YWyzFE>{>My z6BcZOh{%%cLl`r5Dvo6RdV~7 zczPqi&s!~D*l1X=oMG;~7rvx~BW+iA`1txO16E!!z3}Gitq>GpoN}%vjAGu{Oc?H- zymi`F6;e@J!dn8|;NxvvHfZOaY-QY#;h_vw**OX?EM^*xYP<>Co2QcvXRRnhQArtG z-FTC(ix=ZO9Lp+>G`ywy+?iBl`Zh%gO)|JKtuL>2x0V<4el}h_LIYgBJoQY2m56G6 z6Fzup5N`<3=up9%2ujP?;ka4DHz1HFuYZa@)jS(hL_1bCc<>ekKi+&`xbl)Bl=1#7 z7mGXm#8j~YVM8e|OLX({B&~Qa6kR3Ds%D+NdAz%Vw_eM}gz|D)c5(B9zptl?FCi{= znqKzx^MfZ1k{Pb5teEB~q%Q98ca&ko)_uAlzELwY4xNKzyr{ARO*Y$$(vX&&%R2g^ z;P_@_+xj4k^hinCjj+ft^x*0DGi%+|iSUx5e0A%#r?(&J=uX=B;krBjg1+$OZO2vc z@$yEclbwLdvLcj}QK;05n=8D$d>piJ##nA5_u(}vE>_NZ^UHY66yIq|!@2%K<5Hn9 z&)|7^^L7XJk#f?cntj68%jhqpC-2F#v%MwW&RfTeIE&`ZF7WhWU3jbcg`G|7w={L& z=E1(ge(Rt-FM};&pO!n&+&z6&I|+m5(G}J)sKU09%UJu~KQG*d07Q!__D~efu<$2}voiJ|AedhGuM{oTlMkrU-+=N#r5|Ma5-s_vMZ7yspQE7nGKfZl2!!Zh0Gac`2>Dmb0DsJ$cctkT-$)G-!ku z#=Z~VutZ)>HG32UfQdCl|c#6Nj|9R#s zY`nfFBP|u@3Vq2>%4tl{mHp9&>+|GOyi~QCwDo3x@~XL}0p-M{l$K~+Y3nF}wwo?{ z=3o%|zx-)@iN8uU>};^(JD1_@F<&8EoBGficDVtMJ$yG>L;cT0 zG8yx?o-J9pxBkT zJTMA(4eg4;lUp%%%1%7;uYVvob2}z~J_S3DWm8DHqSL_Pc&!kE%7u&WaA*$VQ{Oy?m`0Cwvk#stjTlp<$*5fAp z>51FbwI`W}H(<)-8Q8{4NqKc7hTQiEMhxl8D^-3M7HVP4EP53KohpF2*mxXzQv1Q?n82J1)`hx#naC|j!Uk+a1*|m{5iJrMr9X|0M`E={C@Z#1ULyUXIfs!FT%!FnuWQO zUdHK^)5xLO>mIj^#M2{hL?8zk$?F&6i`n1cIQ6gPWz}ff^Ljk{*qzuh>wRp>ZG>0; zc^`bp3GAiE@yQz>BV_QixUXv%7ESvAGgs}S@Nz|HqptYNb5EdYctEZGW4H5i*j3+S z(yWC@FQk6gy8&(+`4Day+zlQj*;v2)8%&wC6vb8-__N*bdhlW1t(HI|h)Xba;U0L| zvasjyNmzm!BnzF@|th(`HUqfq!9FrY>T@dcnHI~CF01o zW%yz3K3==D7e@=daPMQIk-2#>ipeaKckMXwGeP>&kAhbu^&11RJ=c~3=iJg1`B9O zxF|aXn-1h+$o+rE?JaXLe%y4N$mfmNRb^<*K0Nx-dl2Q4gEM*|ml0y>c|`eG8r#eIJ^8p2oDXQ_$^^7tq-)1!KNgL}5e=$=eSQe;fMT@&q2e zdk}32S&(sf9o~HBbDYX6gJGXxorq0=hGM{~Tt;kLTe&jjj`B*gdbxb~e z3h7x@=rr_h{Na(`A(Xu0#E#{dGIcr*q*H);gyQ!59>nk=J!`JLGXP%&&l)QJ;>y}_ z?#KqbH)a~bI}F2}BEcWVkSm+?5Z-bCi~G`Yb8}ThegW1L)q+f*}3%hbd@%U5E;Nd&2!H)S8@cot(wZYTS+`)A-`H?I`+rhVE)MFzNUAYe*e>M## zj%~-74?o3O?^YQ3$YU5Wun87@IR?`g?k1C`j=KB|vUq2l=B%Vu0nJ8mMnH26#i_fn zc7HB<4!9nJ+6H3B%CE7fBm@sV{WKoFtv^n#nT5rh4x_T<492`a28XK>@Yv`l@%!sL zV$+=Q_-gSs3aNUWR|IcNj>MUyWK>fqo;rO3C6TSsrAL4G@h0PaJCAY*c?L&#g@0tb zu5g!y15tzSJ&uNbZ^J_m+=j|Cn=pO(esX-y7R%C+&e>?S7;>U>;SAVTd>o&?KMtuL zt?}UFqjAp-ov?Av1WaGFw|?B}pzX?gypWrQ%o1C2@G>?x!`o0y|LyMx~j&tqn!0`e!jP=8=iXcm}-cV2!UxdH9*z=QW7+Vv!s zZrXuz&T4kdn}ErScVh5e4`cLW_ama}0Kd0M#Kl>4>5ld^EfUor7?Djoqj&dC*h>@k zAAY_JP5a)2QKKG1Ywt4{|KvhtoA>8oAO{Dx z4QPYa(>}zc)oHlp_xIt(?(wv{wGb&8ML4{ADn6RI4n1xji6@`r_ue)bOBT(=ksN9R zequlo6wwIru@MM}Zh_uC+rq8790%7gMM_l|Zn)tF#8#)`qqjdqQE+oS%6|ILT{qzD zw(qfYXEL<|mB=`D7NsRZ`zoXyKaL$+52F{&+uwi3V4U5t3bPlmpV3%kR!KSs$97cl zmix22X7YD>vd?3EQR4 zM^T=ePJ3J@St?MRSAbJHmm{S-0{1`kAo?VFQP_Nele`h%+4*sX*Rf3uLK51bZ}(Q5 z^|62Erz0cZ71s^F2e%LHjHDGyvE^V6s`B^p`<#Tr@E#cTM&QD%y6y9!S1BZK&u<^r$1@4A`Iw+lYjmT7Hm$%>(}?kHIYlO`Cu|S zCUnHU9~U6FQwKB;F2-M1AEilz!5B8EAGH=#N#rHt!_^0{WX(1lI&}uu-upTp7}kOf zYeV^olUQ(?c6MqtvkO1u4(Qf74!eE&;f8)~uyw&Agf(rCXI^+3@jU$BxuFMkyt0%F zw?**d%!pWX>v$C^$zw&`m&SFs{ylEQd+qx2CQ?y1)Hplob8yp-i0OU}o*#9GvZvCm zO%v>(S@8WU<{{4>ia)>bXS8o1O>zx9^8SL=>sF!UhI^?Zkh=nFU}+{q7{D#tRs2{7 z-F7!#xU(M<6l4CBH&M-***RWyKcLU8c(ZdKT9SyzsV#G`BhMehuD=eQ+eM+OWgJc> zt;WHmACWh_J3@c5C%B_$+gNP=HVJ2PhT+tq9cbU>E<{B&M&HI&*h8V3l^j9UMj86| zY)m1=*%^pUY~?r%a)+v=Jp77s(TF;&iC1?D^VGkhFqPv?=-sXziWSQ?!rplp zuIn3xxBmJW{JY+PKRtbyvePr5b1ch$4~tp;Eg@D|;`(6Jvwua4a5q$E9KcfEPCfko zM=^46OH`ya#%|)@`=L>|vs)u%9}LCDJ&QT8vmvgQ(#wBD#~5BzdQErQ^g4!9v0~ zuorj6u?>GD56r;sr3;Zs_5AQ_hoC)~jZ4!A>{`K%LaSEdE)G;{u2($|v;WC}pJYdu zU0dpiOY-vJT~UA;WzP1*zV?UI+=+Zh4k5j~g3XJ6EHZ#xzw` zm1y3n8Te`Bsk&wLmi^lq8D>nl}x@dam8ddYQPI@7$SY{5b7ih-;u-na}%- z(Qoh_*s^O3mVG-DYpFJL3u%nefBXa7^0_W#D?rkc$vD1>dURI5yu=@&34UtrL@VXO zzl}PyhS!oLY~OtVhYy#bWA6m&;w@;=qbruLNyVDAoK@OeqLtWDCtx}26dM<&1FKZJ z_llf6Mx9S{`N%VAi>ZpXUpCD76uY=SA&0m{<w7`|8Uv~1 z!h;uWEeR8H@eW1dfjO8sVLaEr+&Oup{-1reksBB1JrXgfMKI63sc|T= zc~Rwd81KFIvg#OiGVaLW5O~NewU!fGSS*$6IiSF_GQL*%q49{|&C;@#WaDC0U`#ap zh2hglKAVd_qQkUnm|VG5>P34~f%-a#7;zMvJhJxV7wCp9Uwn>nw5{bu?LtLy9%o8% zRO7KOwaMdzo!B6vBAbH<`NpLFE1*9m*&x!mr;nba(n#2|xN;P6Hlny4M}uu!cR=X8 zukpk8=THtvqx}{D^(UW*rh>3Y4%Yp+jI)W)G2e-9GT=J2^vqu*|a=ba`j+Z zre?XEM(DX{V^tQ59o(99H)u*mRLV7gXI~$~b&VY2vJ#6HEXAaG>v3lUKc3)7-2Ut< zxW1{6Qe~ze-HD9q0Fb}b>pUqyW4Q@n>9_Mx=@Nxo8d93lMK|dH|JmcX?gxYo7=>Vg zBO?wv+1w%Zl#Lnk&+-#PJ~4am#RY2*Paiz+{2S;Q?ZF+9>;nh(BG2jv|Jr;;!LIK| z1|`;-2Gek0gQaYpiHVE0qVu5NBu0{BIJruW^!=&EduP%;Tz^c$k1H4B zhjkQEp`mc6AUt*C957Ty_HdaX|tMen>hsB&qJ_}HNt6X^=ideosuNM<%Reju15<}R> z6h2zllkR7{s|?I08i4s@-@=+x0eIlyQRv>b1u9clSdX4}j>OH^_CZ{b74N}!reqo+jmFx$z*Kg z)IYzlkPE9T@ZoE3WBtK19R1W^lo~mC1|y+iGh}R8jCreeA}i}0b}su4`zWZIBu1#h zBb&EELQFO0&fkKF_zvjE#dep_7U&Q`=CgAxw(L2H@`7_%JbOGo`1ms#k&8pa1`V+M z+qpQ9l8TducVhM4Q&hikgj2UVdWTItv>%5~(;{k}c!^emRsR-TD5czO`Iz$ItN7PP zGmu*ygs#15=9>%Su3S5CmVFlPz-!m14G!<#h*i6eA^q%0%$+t76Te@DnD(vtp`XC4 zZ(sX0 zOu~+JKk|%9E_X&A-;N3Izk|=`ZC3LC{Ct-dA|;CXGZ{pevF@(kzG%~{6QY8FP0JQz z+nGYxD)Uu42Q=)Cw%(;!vup(#5A4MmgE#Flg`;hkR@k*^6OwrLsvs`|KhB$qmp`0= z)H>@4rRS3H!gJ4K@`A0jC&iiY;9l_KoWSB8gl5sv?SpV4c^fxLa4?uz z%8&D~Xv+ar{_?NC!ilqas(gb<*U9>muR>EzW?7MwQN~$q9J)~`S&GkK+0y06qQETU z?l(2U{0S(sev^B8KlUC=hn2HqXIH^v1SJSY`;P6|POjLyeg%%EWK!Lw8K%2nH_`!I zNCT(vbuPf+cSU$&SHxDF#y2x&WB-9eSpCEISh3|ScO=Si>ZhH2*B5OzBRdnOA5F$S z)>Y0jIXih(g9587IavoxOj>KJDuPHion9NBtKdhi~tE4N{1{Py5M}7(q4sNa?LqRj7YbzW+TZV2!hibO%EkStr+0m%{ zcsySH*Ncb=uN%MysfeP8EkLUJucyj^t-aELnXChww`wsYUBS(2a zQ#|q1P53|dJSjn*002M$NklZkuxEyL0EvoH=uj z7$sE&jU74<8;b`LzrwuF##05?p6-tA@#33rVPKEu6hi z``|>i-FpZ3#N^qlF#hr$svx_=lUjSWbUi`{=?+|U6mrwmxCBu7<9QtXi21yK1Wp_Q zR%p3)_2~dId{4anY%;!CvH%|(-vCb6C~q5pcbJO)e?+wF0R5!`M29G%JBr@~<5s3|L{GSHHfx3Wg4hXyIT{q> zMA0dVl|Hxde$=|k#q61L@!`RZoYE%4Ir0v?`s(AT&#t#n`lzP?@*Z8Wu-xjtj<|5} zAZBHeeMX|=wtry37w=;`RXWQYLeMhImIH+I)DRs8PdjhibzdK>i~kk9+P8r#$)t)L z?tbPCT>kW9O#Ng$yhu!e4j4V|pJ*3abC%)}(Fe~DKZ!+)C*$f~uDRr^-7&(;Q zZ7YIMS~?xGCw__z-VSV=oV+~p8b)*s#o6s_NrGk;CxRGJi`lSPiz5N7iv#iGJ#JmN z_tm$NG5s6-Yy1av7-vf+qsOSRZ=!Q#&Donsr{T9|s}WtO9Y#F<0>x)vVeX_)v5{gc zQU2hEU&qKUjS#bwYg|&9qI3p=C+51<42#!PN)qB#`LTG$89N;^-t**xI5O!+y!T!b z91Zz!3~7qM(z8fTOG4{r;$71{j#4oxwfJL;R?Wk(bN^b*_@)@69v;B;WtK?e$s#nR z+mY_gH{qKvKgMcL7fG$(-9HEyk8qQB_g;*_Itfu15z-PD8|hr6WUX0Wd1hxP4TOXk zPqY)^ky?V2aWq0C$TXr4a}R8ZPba*Ak3OG;4-WkTPj5QkbGAbu-H!|H%o>5BR*^;u zJev9aDS6uPnIr*{t6-JP9-+ZeDExjtCUGD#{;fVW-nArV6r(1l3u-+WV;|4Nf<;qt zdS@sq@>1a2={~&l>|6CdSLpFX8l+*I5Vf(uBph|Lw0ZxEVd1ay=$HI}-)P zm2jdgJ|HLn4wkngn8EgW6R_f>7GKW&1YEDJ3Khk<$mAXy9c4k@UOwDo8Kq>1QL&XSsP?V>7TL@bdGAzh`}2DnBcZ2vbwi=Gax53 z3;Bgbuygi+kB{&uX{j97LvnI6iB|<2J$&FrHP=e5qvXQ5q^J;DM>p=RQDkK%F1BVN zhnho1lN~%+hQFucy_IxkWg(l-Z0ua%LseT($$KXEcogJw7U@X&cl~sWHJPkjo%BB3 z>8D5u72E@quQRcud9l+fC@6ppX_7r+GVj6yl$q?|Lrltq#uHTl-1!blIB+pj zuJ0i&;&DAEJDV!rd`I@KlDi3Sdfu!Pr2O-lzk3ajnKC`TwC<=l=hLCx$C|# zuK;##p3>eUF>4ZSppuKs-ZZu4#0B$mGD=TRPw5>PnLfLqoNb5ct+dL@OA3*hods^I zfeXbg!2w=XjKrEglc5Y*nRy&=lycvhEByU^Nuw+j7RoW%S(zxLB7-~MpLX|&^BKJI^EVU=Y?NK4P;o*xa|eZ1kvpIFbW z8AKZ>;I;#<4OtdQ4O~yj&a9_=(p6l>wNy*_Vjxz)_Tfm(oVYeDFf7O~lGg6TwTW9o z@(cM5@SCu=rD97)I+cNREQ;%u-d?CIDT2L7YiHuSpbEC=Cu*$^8M&sC&w-zwOv=;C zU7BIZ`NFAy{js-Dr@Chu6J?o==DzJyqK+G zCu54DIc0$r=s4v|nzHl{W?%Pjlm3=gAq5q$Zzss79OejKpyUN%&SORJd-f}t7|aFY z(cSs=ofx9UU~Y9WVBLvCbXe|lnUxsonH0E`yJ&!FbLfi+FyYSKn^`#3ed~R(z}DHM zIe}@(_R$R#vDO-kg7-2s(f1gLZ0ddY%L=$J;(2r$n3G> z!N92#QW*&|Y-<%tyQ@G z0a5uin=n7xf)1E?pX9}qrb2gO)=yT1SNNGU5D0CY9?%jM(A4pye|ZY>|9KY+3^19J z6($BYc|y;RkyYi-qSt>O|Hr zEWy3$(5AEfv+Fi7e>wsISLk&Mjt;r7A$?q9nvgTvkXgPwXqcQGFxxvtw53X7dmz(En*do3HjjhTS`N|wHLbvjs(0A2rCf$reC^iQ>*R#c zVyhB`c*_0!+uIpPn;hcsJ|{6;Xd~`)VMrq2{AOZm{W*LInJkoMu)KDqXiigq>w4Ry z(V0%Bef8Rwm#Er3MxF(FG-lGwIJ2$ooeFb@WR#GUj(@JG%w@!tULImmfBwN|o;T4R zX!%K-1O#wxazM75oGWZ~V!ddtNWjC7Bo?Qef1LTjGWyqB!;PkYr`vw{YQ0sEx&L>Z zH@404g}6&S(6n#U?{8g|>w-wnox&w7m-8zHlf$dePeDEfIVSjwb|GYGyES>_vhuWU zt7rQ3lh1Ps}__MKa3A*u;XxihUIWI16WY9OyxtMggl^XJSD5fgDj}QVL z^=6p76Vpy0u5X~|jpJF&7^Yw=7#*Vp_$g!3-KbF zLPDPvY*4B7msT!t`GVc^A(KimVGWToozICi(2jlHwGakxWIA|AN=)WYtE16%*N>u0 zt>YZkbo9t$XBsTxgVB-x(Fo&HzDi*5mtHh(}LxFh|O=|qs0cZNkMLhq9U_t)x_gb#S&3HqCYh&f`iaf2HkF8N zu%;wrkB85YG}&r{Z6SJSZN#ed-wy|^4i{)8y`*A{vkS+mz^Zr;9S3UscT5=B8?aAb zXzJtf8L7nkQ3ZPt>9!j$5zzo(H?EH!%<@l6Px)T>{5?H`7v53Xm*=%54Y-O48jJ9! zU-aqd2cKS1Y(kDgbh=l>0HLZI)8ey3R5CW0=76O13(0OBT@Q~{xR#1^q?9!Pxuv+) zi-t69pYaKmJmUaqjXY!JWm0j1-b2~yytps5R$W--Vkjo{-)#IL4qo!S1{|cCrw&OB zm1IgiH>0L)nFeQ)W1~j**-eB)y-nUQH%auyU>`nph0ROHk(}BvC8Wre_e{5du)Ld2 zhWDv9lO%Z7XR$)N>`WBN74jpW>YLWpwd3Mt_)T#}9gKVrO5!gUl9nYBMaNd+2V}=h z4G#|R!}OoY_dO{_3owb-AE?KU=lakAtsI6txL5z6Nj=pcknPnD8#uLF5c*lupLy^= znWK%5ZNVe%3I6#CVK~mj$py#&4XROwguPo=Y}3fkmjnGiU_TdrA`_XzpBXAl<9ov< zxiCixrKc^LB8c+5uy9M#8&2~53iCJOAFO5D-o(w09@6uH4AnKd9S`(LSQ%c>>K5J% zq3M2P3UbAaVx*4|3-tq<{CSra;eAD$ItSldU*r8nDACmqO$LS3t#3b(=z9O<@G`gI zdAR4B%xOR{L$)}GLMzmQ!3!J#XX%s2mUm?5ktLK(kNj2ffd|$a#Z4%aI4&+s``q%# z_$(K>Try_DVc+~X6`s{ujp#B{UR(3nO}9s8s268GB*z>1{q z{p!jj4lH>(sos(d4OFvZ5ey8~dk3-QTP>j*MmfUGD?4nIHG_dGl5K8PVQOniYZ8gP zyWxR$g+7SlZ-QP((H$Dm>y8x5A;Z~u<~6mQGa657K^(u(W1k+b4sdb1%3ofswZm)1 z4?hZ(lpbo7@qXDk9lXl#Fp%Mj8G=SLmByJg+d2`ONA<@HUHSCGU$#E#Kmw!My6r`t+3oZEFnoz^sN-*8B>TP) z9fPPKyaC#oQZwhd7v@2-4mD{YGyDoS_PNF4n4R9syy=lkCFb$k&cwsf1nYW)eo|yObV+~ra7U6Ne*m#PbvOKBo2Q&8pv~Kg)8M-r z)QAL}o`r}T!V|?P&j-@-sjS}L>6#^($i=@B$L4l?lsZ@1b~;)S*xiWmq3R`{D+z8s zyPAThH-WfyGZpDiaU z`6-Dr1J}D~TSBDbinim;j(@^5=4`>3zkxe&ds!xqxId^d_uQo3>V~T$x!NZ&fdyy{ zw)?cA>nGd~SowVfL$yVBu%RR_gZo3FO@l@|X|;oWB0HS!;Hk~u4F6s>r_Oa|%hBxt zcszev6Q2EVZW~{IfnPOumq#YE#os4xveAbZJD)Cg_IU@cXddY&xNBqAXJzBn&#Ig5lzJqfhy~Yk1dA^(FO39ic8RzQ_an*-Pk6+%S)DV}8-bh={n2HoOIT2HWIlh5t&NgmNk%`ZJyt}oz5hhcB3 zgVTXlfD&6nbzeg!y%vD>tjc*4*IH3ZIQI9#WN?2MA?o^M#!Rn}A&>f-^~oTu-jMO= zz_t!des}M~W3QtL{qFIia88v&t{%#x9cLywR`4*;*6@CnB5Sn{>fyvE@i)xSB}spz-nQ2J!gO=)i#5vQUQXuw4d|Qg7_{+a zbg)tKVRtThy8HS%qDs1_SZxkP6D%j{*q<(Jtsl;FS_MR0Mw~!LekAuDRaU$^0MjVb zUIfEbG<%8C+T)Cqi>8HEWKo!SHuXEq@T&dbZ6sv*wg_`vBi8$lDNAxpn4owAJysDV z!Cb&fmG9HM^k&eX+5Bx(0q4h_%q54ucOq9#h=hA6(lb?mF9!CM`OyaD<`p!wn&SXp zFM%)9(2M&_@73qX$I0jC8|(S&bPUWswK|^~cftEz3EWtBHImYi?cg&HFpTY{kA1?m z@TAbzKx9S1Smz5>xn!!iEf)ahYza%t)TTfGmxIi%2wl!*E&Kvg?p3RZ__-=4z`IS* z?dO4gc62N3>jKSap1)_Hh+fY>p8?Ze@)rpD$&WZTSCvSJD#@&xhs}%oQaI3r3f7)o zA{}y~_wDBs8ByzWE`kNOB|H2GqdJ`t%&V4tyIo`faUAqGd)}7D?MMbhCP%<*@Nsa8 zgZj4GV+!_c{Bh7VqbF9O{&DB3_yr%4q#g zmeut@2jW_88fVDTX*OqN^~Q=Q@5_KXw~gf@lvo#j3=K`8dzY_K`N}*pdvwQs>x5#) zpImzPH2G$C{*F7<3C=tP=w=gj zRny)2lVikT5H@ViHSbti@TZX**d+% zoS9rc^g{gLRQjCItIiHTB-#gdOLODkF@r{1c44<|=9s869^Qo}Bk~Ge)-4haVnDlz zquB=#ZSozB5Sf2CTsG6Lq@I;8_nu*EpTzKdFkHR40$djx10-%c4M`T`;f!Xz5IUqZ zxi2jsvQgptD;5I(ooX9*H6sV?G}C(BRlSQJ4i_KtScVszoStj<>*Xh$O!p}5XNiSo z-6H{*+4WM33zi%<`tJJV05Qm^GK(Gdq>^u8gLBD2>`#h2tfQ$+AoR}GA)@ygFE^l` z><1b$TE_wYOR(YmpouwSKzDUWV<`$bU}Sejj4(MpAy*~&y#+IKJl~?&mk|}v7O;Xt z(zJ+0%=z40&2EzfJdPH7;?)m24Bk4ps1~|ooErkM-dobst;l%W)N2B;2rQ{`7qqLL zel3(vt{3(|JB#q-H7f@dj3qSKGdgU`NSZo4IXimMb#bW#y1v2=p4(Z2#Vs6!f5|C~ zs3Z$t`C_s-_jHwsuQU$qESuH@cWy!OVG0t;49_z7f~&5m(zk$|yG3O}j=pkDwxCrv zTGv@kQJf(&GOYUh+@HaCM@Wo0ZF2WE9KKKcMsp-67K^Bv?!O>~u12f6nsNUV)s%`Lg__1QAL=mV-~` zn=pORpZ2%vNL*`~cF$0vnukNBhRg`4$&m~0{ur}ml$uTM(28xMD0`fQ)U@e_6zesG z6@UgmD#AuhraCZa^qMgpVDP=Cu6+KH+!v*t+|uEuOn*Y-&@i|@bwz^bZxS6T3sQch zgbPtQ8cx(Ova|O@JB-^JZ%mqB{E$VPR*Yf_=RO{T+MU>GopVWz&Sl^`)C_ifD6rD+ z&u;H%cr^JyXouL{wfSA29uFq<>6ILU*#96GXo?^ z8y7UMA!n%cv^-lYEX3>Uo>{p+vO|-^c8~cbjX(VoMm#R+Tl=FGFWKRUYZ0q3;?;zL z?9Ra<#f-@F0?1clpw9ATC!}ds%Ef;yy#gSR-YL{2oPx0#ZTP#-&+wZ{} zw)fS}WI@v{KfY^*Bs$P{g!Fwq*waXXHd1XmknN;~#~Fd2%5A_BW%^MvwV7rFhV~F^E_`duTopMNk*pcUl+D-*-@7yuUG;^z^erGA z=rw$`-l<@ADbgi$r0?q{w$CcB*WplR85R6j1^q$Lj@#~ZNCGYoIqUvBAS?_<)EoSL z8Uib#bPa~}T(v}3tn`iLYZJ?8(PjT~YZjNphM#J92KU)ZPq7d279IN&KHYdqn-&*s z0$gbaX}~LhOstwX1YA_+fv{DS$-1VB<{8bRuQ3_h7e)NhvO8JR|H$)D$i846p)u}& zq#!9=TzzSNlqab0km3ZHUn~?LSl?T@((nc`k)|qGzk6}2bF?Ckq2aVEPD_)iEH!yg zJtlLdk$|{z#%6T=FPdQvGL3u%)X7P~R2YvUAO~(f2piA_!7NXn)SxY`L1>(Y5|4$! znQfWwN3#C0D*q?@Qpz2?k!T1f@-uRdfN4o`NBcANt zJ~w{e&w^3h49`ne_y|`_UW2*JOEvlS;O`YJ5wjXVp>1A)Q>ET5Z47BD5yxyKjM$7I z;+o)+`BVU{HxH&nZiTNM>M9=Lo*g=!Tv*Xz*mUx6EM)>p;W|%sAjT;*(eH^2vB5)|4AvKnA2jSIQ+u(*w7Z6xKe0Di|5!UDlcho3W}m1oIMV_L z6KOaDn(17_4b*%uNTrtBic9124Mm$AB8MteE^5HseL8ydT7*7LNuR#vGaYfEMq4A+ z4;rnOz4atCajp+g@KJyE8|P$hGjtoOjaxv&xM!g{dNnHdohOPQ4XkaZ_vAFr zNCG|`HMm+)*~ZV5=uSf2!tjfI6H|IDUbwjZaDKSy>!=Z*f9KOzS+zZRJ5-6$+|&5$ zfkDUxwDpnoPol2N10le>!dj_DU%KsykTAOfNjqZ2wG{Lr2>m+HUrBAMD~eu5F4`|j zy2RdQ%y{60D6vpg($zNlCmFfwh-m#jt(YGp$AEaV#rC*WlG4?4uN?s@>646>6AHE4ny>J#~-M+9#P^r_p} zoJh(-L`xmPoqt}j6M+01PbLQ;e0e^WOU?1ghCw_Av%gT)CIa{Nrem{gR-GH^V8WUZ zm}9Cx;KH+Dn@;wd^~2y|q{s=6%%4J?G<3onS*zEmoG&R(lw+>f-5GQ-9|*Wz^>E(r zglXDEh7HG5iOrL?$*}{?NpQ}3m(!mIt@pN1;UWt0_H=y8L?u^;nzH>6)G(Bf68y=t;g2CvI@72i`Um!+GT$H{VRn3anZxRqw9kv*i4Tl3nEVj4k z1zg%)?bdVMoe43zi^`6V4fYD(3swFV%kKM;k>=x0{PS@E?$NiW=26qqJNnN}5*DWU zk}t}(Z)aDMneM#BW$cpTr9>+8rC0KO6%}!|?rz3LNEbTe?HT(m03+l*MQ@NR`Rtm$ zvy4ftl6RE0M(R2C9q;BhxN}9j(=ML8iLf~ZFX7bJ1Ufn^fHUUNs zCb}H%a59bfq0Uxdu-4Fh??h{Blv>$ei_w1n8pve?GD;D&cyEN zFNfk+)r{TgUn)_w>cz$d$Hp@t@%F!VlrsI_Q_^;?D_>5JY`|vFrx&8{Hk=Rn%jHZQyxvNT7Zq(BUY8^;)jDDD{22m@Qdof3 zQU3X&tF=~mF5ez7+^W;Vi@}+QsU@YJhDxe~yomhP0!&*@THteNLt&#_64CShR+Gjh z{nE`C29aYa!>Uo=XACw=GBlfZK%^>e6a~xJ!B!M`5>{XHPm3zlCounDO4+~sfKQ|t zYb_mBbl*UgkLNM>+6rHvE6QKrH`*wQ-rF%A$B)K9bvf&R@nzM6VCbS&Ad8d=(ZDT{$-GAn73@AjGn&DrImYbI=&*H z6pc9I8qmdL@r5=$kRL>*L)YE>^+(y@ZKQq=0ThSF6Gx9Y2BM5`yoVHQ5d^L^I|8D4 zcc+)bS&QaO<;-Q3 z^T8=9kZ8|U4so5usOCU+b&2cODtvKQd}1Wbj$q10Mx{%b zX{n;;fXkFZhbGmEr&I{~mxs~8&CEDUH&l}O*dc`-KGC%5U@~r13Q?3Bf!yIA8}R!; z;Qe~8sqDz|z{#u5WO2YON+nl(fAfqW<_`N39OZFG0BJ*sy{XU(o`sX&=vo3stBNoCglSH5(JT&=>;rgLuT2EX9c{}({hYcm4+Xt={pGS6}c>9Zfm)Ga1Od>PJ zTuxc`L1VT(s{_?2k4yX4f+`Dgfoc z=&^HL^K8b)>*rbYoFR5S`r&lwkvijH6)#pxxapI% zJYW82#IPgo^w2``7{fKG=ft%koXSP3o~NZkf;%8GUmox}6^_6*7|#^Bp_0J*hyH}g z$TS{zw&|4?*s|_Pn}coZsWcWje~jnb2M%@%HuRSs(uQ(BX?^id)=G4*Gv4cTvk=4U z@vgL77r1G`c#PHU6k;bvpi+L!cO8eBg@e(I;MFN-zg`>oy=X<(d2d#1Xg&XU!(Uka zvfJ5I>TOL;%5Dee$r*My7Edzcm>9!X(>I0h5+-93otBJq_;mmHExaUAu zFRp5!v;zu}VF%K|rBKHoJ@|cuEvwaFPWqDpRRFkbpFOYh_c>>GW8E{9^Cwto$}f=vDK!dzVsxUz}<6{9h&tgpXV z2BLnr8hIK+N9b)D*rhroaAA<+>%As%JE;7P>}aFVGfxYC%1k|Ys`tg1%#ggrOm3u3(wAPc`p-4-e$7H@vB4t3r3 zhzD+VR~J*vFDZcV*}5LtS<@A6dOO{*#7DI|-pxxy?)+?%Tc~DjF(Jv9*?>kw#NE^B z#?V@}65H9HgQ&jWDBip%8oL#6vdeBhsat7_9-6&|C&z|Pi6YC(b4T|!>a%b)y$PjgW z?NVl@%>&l;G{9(aKI{$rP7BhqM`XFA&U%v@dNCJgJrh5}sLKM*MU_5rBpY!4D+TcV z{Z5VYp+qzGq#GTn)GZTy&+ak$OO=}0t8s;sWjEVf>Q3!sk$;ksKy5|bwI_5}ysR4! zqhPYN7Oe#4#8il&IN$Oib6T7;VsxX}zymHWpE7{S(vc9i9lQI-LpQC(3)@te!>@jyDQcJ7y+|Cv zTj_0g$Sji4drpi>Fzdjh3VAcl)p|#f^`CwlgB|U&hXc?KIXJ&I+n7{mjA5$Hyt0uA z;(qm@y@EyseFc5tM(0b%Cu2J0!s40K*c4~M;iq1dT#|x@BA^ata_HJ=u^^gWCXWQ- zR#klcwvvjdGO5uCF@h8S| zII;N|hs#w#OHNcKC7tC#I7tfkFs~;QuG2@HtG3qJ@QnTk%aqjITKIz!oW2eG&L~qs zt4>uxOmE6Y%rYX&!^*y#0*neQ4W-3NHB3+{3sI6i4tepDsFN9NnFd}GhC43p2gawc1GDlAISM~Jlz#a?FxuH8P0D+ z)nf!L)^+mJ$wZBR$IlvTibVP+(*F+LbE8xK1>@vhDrgHG3%0~IjBYUfK)##esC~sA zTx}jSdV%*V?efpDIysp5b8`DaZ(8UH(AC3~q9k7o!pOad$lmv;lZ8{sB~9#vGLtr% zr;~kjBdTi}SI%B5N7ih>C{bB0@7+2|nw)xZN|4wc9~xEu`K#QB z$g7g%z>j3o!}Kk6LQm=!^U>J)cl7yq@E0O2H9qo>cgbB1CH_2&dku4FL|d=UF6@1x zrbNUGp6i;BMTvtdEmT0|6WMaBX z`qs4~uqTPy-Y$RQem&oXuc>CJgaW;#{iaZ^vmMjX&LUgR3!mxV?>Kj(opL|u{HT^? zR&$AFn-$Dd*64)4FBK@eyEZ+PdDEU&ez~vJ1K(F}KuQK#P}bSCgcN0LW@atX6tclK z)z~J?S@XW@M4dHDwMrTj{yalQ4nOeX3I3e^l}*bedGr022t17ee*5s%g-!nC5Ay@_ z&hdiOrTq;GaDUvXc^O?cL(Mnxnaco5!BG8w+(EtzqsGV?kYaf;-}rx!Q~n*@ZGuEK#RgKlml%L#!5AL zQBoog)dtO%_-&E_)N9F2fOnCiRiY)cR74!J? z_z{q91EKCyjwTCi(Jy8))&nobn*6^#%8lx^W-e)rT)7?3QVu&9mS49{o;tEiOy+h) zs!4O>7qTh39{0u;hr=11jI>d|S4Dq^T953?$$z~&qGSD6CNDqoTJwBRAA@~vo-ANj z3}xfiw0B$@3f?rF=(^Be_h6kkj1_H4I9<(}T>%zSFB5NcJQoD)2wHyA#@L z{c<}mrs~P<^{686^yJcr@p^deWApt`*p`wBiaq`Bvh7IgQnk6M^hmp6s$%IZ$Xr+U+(davX@ysG;_qC2Wt(6+>na{?p+_v!iw8hIbw%XgnP|7nyxx5SbA>~1V_#Z^s z|Jdgm#3q|j{bhE^RXIXq_0{L7N(8Q!9MM8CBHr0X8W|L<6QLbmW{vsX{^&7lB^ZRH z=9SKblu0n>OzkbfyY#B_@l6;Cvc(OleiUUeyezmSWHlvyjHV-58%% zH!84-n6tb0h3vhv!Si(K+KA~5s8fil7ClHf?FLatF17~dS);5sN9j6smok(Zo~>k?rf3ewLm1Uuw%x1Jj=qJpAmvcGJ%M)W;Z1BE6EWRSDu4Y&v?}Ex%aC3dUaW3X3Pce@IRdr2eKF%O~ zV#Wf%trfpK-nr!Lab<$;4|yuNb3&lj5hn5qtGmWTA7zbt_h`ZIu2W=QgFFn~nBg^* zV@50^XZqDGVu{U=?aR}i=8_+Lm{PK3gn2H^=;(@ttKCp$4->KtFQutOzY70vVazH( zY(7UxqR_yk$?3M@^JxPkK_Q?z&AtpjxE_R0_cK%sH79iPh$yS=Yv!13QO)&VTn@H* z?#hCx8!YFgJr`YW>fCTc%8>)WZymTJlg4UQ6=TW&-xSZ|1MxvOVv5)B zdK9vCdUnZMGBg;<@bM3@&`z*P#wH5;)bp-qUuXL1d}Ntibpl0o>R~v}L38@B67p)# zN$HeTZzcxIbZHQwIwwWPLfF-bf%1sN#oGH#c9P9bdNahtCpw)jfkkiO#*>uT8z&^M ziAospftG7vJRHfrTN2q8roU|}c^Y%97Lw~QSmjmh=cv?6lpI}+m?u6EJXmN-re5e~ z<(g4Z$ znxMUPwIBzsCc6hmCyaM{%Lzk&J;Al2+FNi7cuq3{U`n$L*_gL%xZ|XsuC7DhQmgk% zWzp@vGcbv-9}6R0_Hv^9qf~^4$$hG{g7&WZqE8dj47u7>M~gddO=BsucsmoVe z^&)#mhusEikPcjm4OzdASS)e;?PkuKYWPo@%G&;SEqvY(*>&&;pKpqS)3Y3%!)C>2 zwI#@o{2dyVobJtWjxU2QUES zb3!s7o_9vSyQ&7+V}`bw>Yv>h0(*ESBU+e2zY-pV5jT|1TAD+&kE7RIfc4b0!Q4`5 z%_BAQq)e?o7-&khr)z?l;`*2mPYItK3j=6p2(u9ecm8Z)mX;nqv_1ka)dgA1qyqY1 z^9AtV$YI1hqmdu+7B#dkm&>!wNkIfmYd%5RPEQ7PZNN)C^&PFLQ;e`>z)&E=z%rvv zMg>b+z;(+O5cew1>ca?bp&?y;HGKSRLEKx0&XyjL_oX_)E|R3CM~*8ZyDo*nAt*&X;IVZTS#=6;}!^fQk!6? z_hkWVBtR|{PTIC%3!`5skVW=DfvprlZl9zpaUAHL6NLJ6uJ~V1E-$d#%)6R`ineEE z$fzj>I-jr0tBOH^#O+B7x>Alxj-$_d!llUA#oTOu=^v1VLz1#u;2i`$Ut>ZX3%9$@ z+U)Re7%D?bx?Ddlmdwfd>dH8~2Xjnq!LI3-2xSUr*FY_TxvouOk~%1bsMAzX*Bnzd zJ2k%(qDPljP$7>z;|-ELi0sh#h#-Fy?5Y*aq?DDAni7~?8Cp@b+&?##oJ;h5&Ztz| zRL%jdIu&s4S8S?@osg9d8q*13yE>hIX?N*=s~z%)W@jNN@T_bz8Ch8feR=p98`^oR zdiZrqG6MfElnV$G=P{IQ=)7B)b72wi{}xgJg#AVPzwyKb`G&?=&;yfBMnDDpAM*zj z_>J?h00kMr|7~D^@OLi|GN3di`Cl&q_*-NlQ-1t-l){{N%y z=zBI)*4NkTo0)-QV`G~)X-ddVvVK~!4NL}^;)#~=NvX|udHgVxi%l1w*NGjH1I0>x z?^EoY@V=ECQ4CeaShiK#E8LgcKd92Hr%}lNOVMt@E>5cOdEjuK-}Ynk^!(sbT*Cg} z5&QYw!6h+5h8VG>>mzLnJ`OUa#$m)i%J8ImnpYJ1)vJb9F{ElzP|K7LE1q|ngg6-; zlQ1JtYE|$gd;PQ7@LMtP|NNp-(BuermdY+scRR!1#3y_!+-C@otPVn~u z6#LFQU#%fCr{-v(8hTqh>xL?7kjBefDwAC=n=naz6|s2H%%C6P*u2!R$}XR@WX59Y z{m#POnot2zAFyHX21MHTt?)bGOd&_<&jO$hwyVKKODq~+BM`5w^NZB;I!N8<}>iL3!IP_#dsJnw)*x zw`E&qGA6t^RA@1SsVES~gtUY-#XpQxiZ)v@T@hH+C4?fTP!EVRs3j^N>QhBU5=0uZ z!^X*_^K(0=6bai>ac`Byc&brl!``MUAMd8_)GU%sDb$4jO2B?6xBm|sh)gnv^Er>) z36`D33?$EdA!0`R>X+#i)B)Yz$b*Ii#p3S9R_fgyFRc$VtU}1uhGA_@5e{4^eW7?6 zx!0yo1r2h-evQ7CHswAmy8Y{4=}p9=w@ee%VV&VvMofuGa&K<>y@fqmU*;+NXgkMY zlC+pp-YEz8e+7 zfOJ;;dM^np_9r=(GzLkYGlIkc!D(?upvp{q-2JLhLQ_YYbVgG{Rjr9CKqj;-QwjX7 zlPbWY;6J5UKWKp7_GoOl5+ZHcv{6HE>UHdJ2RCn3a-Be0F**Z7Jb@(1Tu6?fm|q15 zr<(HMhQTuKUNmUh)FB;#v~byNLBL(a_IfIQf1*6(o=jF7et;6D*s>_k7#&A2VWQ4$ zm#9|~!BAISKCui(t){YcaCv<}&%U$>Mz4+^mr@t5HajSdkfJ1nhmBBJYMIewMkPv& zSt9V$6F8Rj!{ zR0xS z2=2p53vC%QwBN1jZ)b{SM()YMz{{<5Izg?VY9k;i3d&|1DQub^ULZt^y6~vpe1%hh zvoSC;ghxj+GByWTo1YYE?`)DxVWd%hR;TV$htk}98M^vJN=9z@7LNiGW*5x7G9ZG* z?K!WeVIitVb~aI2Ku^buZ5g9G=xrTP#KoD&22P&xXRCvK^kOLrn_ccayXSR3k_(fJ zoLrDPsOU0rl1#(NjOE@0!}!=Z4g>$dkP-PP ziy+dnTfKNeHHLLRf`h1ObTC0ToIEDL^um%dM>}Iw%&@*-kP1!8q1bUku{u;cbp3=$ zxPGzbT%QxsHxvW$zgz(6%gF!6Q_Y*IGiA)o%_X8$j@lr92_^tjY`I26RcOZ>zuk84 z>f8=D_G4>AV=+k=8*YhksAhzY)>juPp%gaa*0F2wiC{A7HG_ zB#fRlU&!elEo`uNI|Ww^+g2^ey<>pC7x$VjhJuz-$cAj;C}r2dfU}-6unzCVVl9`g zz)*;oUJc~KlZav#br^~l756?ar)uCyJ7WLw(h)`0B8B{2Ur&pch(~9ZViwrnXB)zP zmZ+EjKimRzbkwZf5cnR1xS}9dBQ4teY%f9qpB&`Xqic`A+ONMk$BX*c(u8d-KEhZMQBw{B|rsEpVxLA=7WXm@E*3s*w9WRxT))uaHG zP=SaYA?2c}7}SDdTD(JJcTJWSQ?0SH(J)Ce#c9ep)u`DQ$+|>?ImtY8I^J6iU}g$k z?|62)+fgF@EK@I{85?bXY@{hc!57UVjD2&=XK9XQnMzSpL(AfwJgwA}w&?B;CJ7l=hM3O_xq~x@)D`DOtJ5Rg{oq=VmGQ=Ue~yJ!({Bn& z!pyh_p|oN!d7mdqcS@}1_?lvza^#H&*vh(5NuycD5_ixg2ZuOL($pbNW+rcJkT}|^ z_R)h9r@XEd^-+V7G+x!%;8+|_Sv`Uolq;?Jh+uvQ5>%9Qlt72QxF+c_`B2c66`0pq z4r95vjg`~)_47C?TnEWLaWOu#2s063Ypj8^FpX6MBZ*|0*a*o!X*%ad7;0XS0i0Ut zsC(5xo+pu5GO9FUPXd<{Ut;EnW1RUd$BpEAg5T1Vx$}p zb}ylK-PYNjVzzddPGx;Lm>U-C*<_5ejiRDTGOs z5{FB5CT#Eq?cZV)#o8H8fBck6Q6hdW_Mc<7)4GwlHg}z=yoi3M%6EIj7+pDo4*;Q! z$KJ9Ld@%y_ztoWnb@p#aR{WUYsd>$(+x?jCTzWiwe>t>eP&v9CK~=5!BKDz}Gn~7? z<#}D$KXGi=jZqVp3L|=RBm9O50dAt&vDZnt>v;aq7n!oYa}?XnfrgnqqfA6&E+Q9t zhU$Nm@TR$N;I@5MC#^*y>EVcCX+2w_e(H0v$Mz1+dGEzJqS}7iA(f71iTFH$_L;9L z_6^UW{?@XD86eV`*PC*eWQ~WyI(8{)5b@8cJzH!*k9eA>Nzdyc}x_OP@x-N$QQCA>vJybfOok=TlCY_EOjFL2z z6N2n#GD;BfxI8U_+ip*6;j1}+9UC2N(>GrhKhsu~WDoBw`ZO+4BV{tq_{a43gtiVw zuvQy4JU`5HQmvE4K4}73Jig|Le0dUN;g1g*V{v1Ssljl4e`w_^;r!TzCZV-N8Be#(1y!$!)h1wg~~hm zr})JK;JIGGK%oMUWDk?wZU`4_IfAjCVEu_qe@QW<=j$FTV(%Wxt(?x5pb2fjvQ~S5 zgKeT`>6joaOJfESzA#UhyMSdl?SIL|&?B<7=R5`EvozR1m3=nBe@tl+MHPqBy)*51 zwJALwE#S#xWPT4!x4B}yb6dbV8Sg~2e3RhW5zI;{s0AMStkN;xzzfES;JIh$-f1%LidK z_BIosbEWefK;_!$?-9c8DEg+9-zb1J4zxQFE^^Z_f0@2HGsd>6hCxzV$VzI-kcZ3y zz{+9Lu@qDCIwCA;NhP8bI5l%7oROU(U+?2fmCCA3pVEufIRjp)$CKcowu+RDMLcX# z8rjAz8Huk)XVTifG5Xv2LTwDP&@_Vcc1uuTQTG3ek#U8f?%g&)r9B|Ur(_2+{Yc@= zJoINkLg81}c`Z4&2;{z^N2bH1QkeLu;)4qb^Sc+yW||L_R$;>2y1Bl5kQ zbH(UlN5HYU)YeRnY%eX`UBtU>@*m&0J?GGs$*ciqcOzMIJ&DceUNN*9Ia=|0L54ud zg;z>c?iN%O8gXpr-m;k`QJxdBnA+5@Zcz>tyskesj<)04{TodIdIPWXVc zo@QRveOh4iHuz{n5uRBPgKQ1}m0m)ry@CDUpw6u@vW?Z6wVOBIzpp*6jUUaC5TcNcslf*AJ0>Ti`Yl%rYWi1CjPM5IqOeaf?jIM%LP zJ$YJpwH8JpZVBcf{_(t;QPfH-$kW-=|IIikdt&uT=J z;!ANXaV5?nI(_luJ?WpM>MpLCR^}``$V^E(DvZc-6tf=XzH}71NJNNyWh#`vRm545 zC8AngTIytd5c!jlTG3$rwCdbU)y}0~WA2*6XxaZ6y!PU7)ZW+T=og08y<21Bg?My! zDuF2=0(Z2x$GNMiXsWvc`#?YRZ0Ciaw&$Z%mx4(jzC&EukjnFrt1~0^N;>R0n$lz^ zW6CGv*l2BFC@V$*8*4^k88m(rw`E+x&l@hmjkB$Go!dy{+4!}^UG1A-!JN-=^p^-U zYuW@+o$o@pceVIWM0ECRgn=XP#!su}V;yDKC58D&O-e%Nr)*JLkP7=CA9U>7Rj#sw z9|n!+j@bQNzocxvf?si;;r%71BqBuh9srLO=TTJ5?dNJx5%>!sP+2KUMQ-%nSF%&6 zG@9XL%@ioDsSpot5X9;fzXU$Do{cb#bpHl@4Eq#QB^R1%1v9_r8wU1^LS$H8C*5z+ zM|}g*@@IvcGbSP}`f~w;SZB~u5kfwSbIXq!8*;}jqKTecumd^BFG^%0{kPn$d645+ z-IEKHZV1LFpI8{6bZyCx@dQH@1WNHN=i*xVNlz@7RwY!QO0-%rDRC`+WKva(!@`Y} zI#~#+?@*mD%d`%Hq^eNkf_M2$$Ai^GgR7sV*vwA<`(1HdYZ`_3UbzpB)e^F*te|y4 z()QLWrxW>Y{N3U9C$Rk4^2F6Vc>`37TFJ@M)!fqP{|_Al6tF) zt20h4FGX1UJMiSa-QmcOg^Nkh(fmkA%Mh4Tuc6$jF`gSU499+1jm0w;p~=TD!pF`N z!=Cs%x($62@fS{E!-ik5@?0z&11IC5j)7J5RxpN32!@O`}>-R|1 z8zeEMzM>MvMXWtVb)wv&oJ_VWUsA^pjG|RtK`HOcvm*oJlBIK$XbomnQR<0`z<&q< zGZHf?@+xDir4+=-zQa+dgtPsY^K-JHvciSU(IV7vH%CbqHSku;6=wq2;Ov~*n zA|J9diN5as)+H%~{_*2Y=V4VdAt5f~PtqbI&{}G2*odFdMj@cK;zunLTZ*7;#L@DT z&&6}=`yy`jPs&5&BmEdp$(u*5D2qQyn?x`|aV}lUMrEs*qrxPuj|5MmS%4_c$q>Y^ zs!jqsaV-wDaa3;dD8;Z&XURv&uL>9IvTL79veqdkqI-vJlpxE1EVAgopkz&ZiZlegAI6%##hy z2l~`xXgmYaD!K)niZ9^1*CSGJ8$EH&K*66K7jGBJqjO(a>S<>S=9q5DM-VGOfBwv z;4$1w8GE3!f%5ny=-Iek16skoC=1({uSQljKa9)A@XMz2d`D(Dcm~7E#)N(A)>93) zi0Z3(IJ9LY3i#1_dsKhiH40NNR0RGb2$WGYUBo>_MmVsa>l7Y}uc-|1MgIsydvgyG zXDjhpImj>L8jn>dP0PXgGCho(sf77@;^jL!V!;D#ac?6}xN3~3;I|%=m}QlMrxiw| zB^IKDN@s3dtLok|0<#|NiLo7m(8Sq>c~Kp_s2F+0HT#KFY6Rv{amsAcAd*s)k4ARK z*F##M6E&usIqNCpKr~aQuThpnU#XshS|dV9-`Ig2@%@ACFv3Egm|?{vX4Xj4kQX8axLFcZc2|WvE*~PaBJFS`eepx18?iMP??Rjhc6&CPlw_?%ka+erJQOr zAF~5qm^d4EMY>xul@E?V;Rq(cP*Xt@52q{WbX2H{%rB8+=& z9Qt<+#^J-~5Y(az2KQ-6710rh-Z_EmN{Q&!!Vj0uo`G%naP)2#h_Y+vP*$p=$e|L^ zeICb%%_p#G#a#6NXfz^2JusW1!I%LZkbL|IYD+OomuR7*nr-=r0eEZdJ(xIe6PesWXt__Lgj#_i9H7{F1ml_e`eWjvU-0e+Noeas z71#^8=r`ms+}T!LU#bDJdhs7ez?L2uIz)!C{YT-UUeTN}k)%#-(5GV@tv_7ChU-+t z=0EFDY1E>nw7xELWs9aU%Sq&(SO%TtT~rN`mD>bru2`W-*kg*N=mXc z$``~6B>_n*jUxa_BacT(D^GOpmY=*PQ%#gyN&c1pS3kJnnZ!A&o+{NAj790`YcM9k zq!gy4Fer&J2}UF{EGfQ{SmZ32tEh`OTG1}4!%G@~@-r!(;AB#;)I>T+)Cew9{lxmd zxGO)Bo-2RkD1t7_Poh&WC@q>bYpO)!yuK6{E?z`_QMpuvc=sC8s4AjRp|a5^>)1>Aq&=HZX%_8k%6Cg+u( z7KfON*HFl3PJGs`b4TtV7wbS7xDc0(sMeg_a9esA)w_=zyN;;#?cl8~z$uz1$>$yj zJ7+gUw(f`~{&g)6=Vip>*jAE%do zj%yzM@#(lRl4L#O+F4wqXn>br&4H%!Twh!O9S5Uc?$zQoGqr<@sVVL1=_AI^ z^@MUtSIXhS8IBOUDWSBe5PFjxJU#0dyXkUrVRmtYE3Hf@!A$z{NuT!(=&K}sB_`76 zQB9wc_KzHu4YoIBOsT0UGGk(ADs|?fBd0u6Hc4brt>$&j*^*Uf&Q7GN9}yk$Z&J*( zmgGtj?#EOD3g@=dNjr?DJM_&|+H(vMz|Hs~SfJa$$-ILyX zuOyH{8iZa%I*5XxAP6X+0xAlqC{|QZP&x=w6_gIrr7BH&2@ps^dhflLO*Yy6&%B!r z2~Dtkzn|X@582(fOu19;%$+;uShnelS6_OTZtF*|V8sFW_k0nbOnLet+RDFNK$_xd zB=A2d0kvYfd-~l-7-G0p@6SkHa*c-zF(z}lr=`UKoddZT(8VgFNf3ju`aTC6% z4bSlR9WmVTB-3O(B8bo1{~Q12N~z(V`gwHuQ3%>In~LiUcBdDDgWYq@vnZhch3j^HiIdn_fL#04C67!xI z=!KVu81$u3KR~O-b1?)nsN+yQA;$9h0jU0A_4SANlm>TIl;SU=R{s~tsJ^Sx6W>LI zx6=@L6&aP3sd$!3NxUN+SQFRj86!O-UTX-dcpBoC(p04-9^u`_Ni@8r7D$6wRGE>| zlim{P*I&E+(*MXeo+|IqZwxy09FE+AV(8NxXvxEUnxK(@MgkfMJWw%-;am*5sapu{u6geN{l8S4Kx$%Yh<>RomDrCf+~dGEgA4w;DO zq^HF@jpDrT`~M3!^bBF|c-zJNf1${lGHN8Ck-&o`@Ib}n5V)63|FMBLR&B zG!poWCD6!s<1da`6P-o^8VP75ppk$^0)IdP8pZSngr<2#BLR&BG!oEA;O~>b15J5% zCR>q{io-u`LR`5(XsF-E;m(Z&;iG4Q4!sA#q9_EZ1_1;v3}}M#M4TN&T|Pn@hB}OX zehAENyY%0gjOO>lNI+48D@V5=Uha)iL%QM8&L0qO)DB|?wR)Jh@A-^4TalZS4O7SF z_={2O8`7&SPQtbwhY|eLXao_Ws39ojxc2K7L{&D&sAszqrvCv!mWeGJcOyDA2R^Mk zVD#`I4}SguQT^dtH6@5iDTOZ&Ru(6m#m?gic#6~?E~NALyFztQ8usou0^j~4(5AWN zpH8MAEf%#_UL<(?@1LLMMjXfHqt_t7QKWrfN=Mq8=GmWGzLXsGCH3K6V`EFJDJYd;(&5D73Jw6e%&65Snxc zl!lb?Iuv9?;96uHNUx&_e^vsDT0#V!#nrGFDW;ff7jgM&!k>s$fvAhyiL>`JDj(p_ z@h1|HUR72U;?n6e$l}4=CV>M;R^)j^#zfz7M!v~Y(vSGl2XN%@VHC=ZU}$V{_XGcd zD@Rr>$B)}Wq?D?2V{zlkS(H5hl=H91Qgvl9E}r}i8M)aJ{9HVH83!-gsYP+ zz0vg1ruTSwbW*}fO0^DoSy{wss)DY8F&vy-$g|V9tJtZBmJ)8?~)1y938A7uPi|}F{xx691O_mBH9E5tgP+ zQLxpi)>f4wE4KhLPP+_EOkwNbNF)V+hsf+Iw4TE$4ahnvNLjEU{3mCQW=X-Rh)}Lf@Rw|*h?}i%*i6+Lpij_sUjRt z)bglhd>QKaY#5)F%B@;gmsni&;P=J`1_Wokou8@_^0wp^)7wxF_AYKjZeT&E%!&!} zsHJDXv0z{#~5VAfDPPWM*cgs#Y5Y)s@gUWUjg5ZW441(0$AoXrnOV zN?U>AynJXGnLu7joUzJUm|EDuiKo!3D@%!tkqV{04_=Y=>&fQG!SYY2}@bw40QcS%7$YV|E)W3K97 zm8EPKH9Dm1HY55$0Z^Yl1q5e1OH|gEv5xdAR<=&CF}vL_%L=lQTgbX&eLB0bKJUn$ zIxp%^mrld6y8STeXUO(tShY74(-tj3ppB3X54qGNLXUN*S0`gTPbTi966UN=d+Xb1 zB{da9zt1ipYPK$H9GvTAr%s{KCs+6R+1V&6moa;!O?Pu5v7hRGb$J0Ya*Ei3b%^TV zd|MX9c|=MuVtT5+FDHtBK7m#39c@rW=KntY$ls}MwJ7R8>Ef(Q0g9j}(Mhm22wbQ~tSBk)kg5); zxZ^Gy!kin@Bmn6RWrELlz0PYPIyyd+_sk zdDIYCG+08Eh`sVN7VJ#I7jr%%8I=MTw=cx^H;wV-toPB}iXfjG7T`>=58j>F6$dtb zkDt%RF@FlwD9!Nn3$NoPf)(b(UdNIJOOa3{gOW-@-~aF}1Ulbts7*4!9~n_suaMdL#*t%{Vj+_gV&a=t1jPc~i2^c%HH=>Vj!p19ku+Yv%NO(GQjBPM*#AJ*g z(FJ-`0H^k^!^({(plx9Rb0cHIswgCi=qCB5;=Z_NHO^HA;>))OVDr-X$kI1QdEyO3 zrU9OQ?CI}RZwKNsfi-7#nOGq(gbK-{|UcDrl71U2}^!7z^i?1*_J~vZqjfZ`DQ*` zN4}5eNk>9dNhDqW6|;Vf#;3EUz%1uHR)4n@HweU8M!%rN8_2UD8q(l@`F?_#p9vo(TicY?b%v+T? zII?dmHtslvYEEp7?7T7TwYTwX8%Ly(SaQ+QwMZ$cgOU>)|Gs1K&P#*XH)`?IqOVcp zHyZDc?Z|v95VCg_4rjPy-p50+{o5r-C(dU0iNi4OHx2I(_QcU`8*wg%ijpYT?!mqA z+8Yz#?_hv9S^|Dpy#^7v)shU`_k9tsk9!I>ruQF!wHUV^|4V`MGbP6-9p+seQPpONP_3ywhvyP@*3JVvqVYiO>Eov0}h@`ln&iD@6ZPmCcc6o*V{^8 zikph<>ZzSr^W9I#r_xm_^)c}E85rHW6>77tV?F!GneYtCMh2%ggD`&V2(8H11`){$5!ZURV z!q_(^p=V1+D)ol9u~04BNhdMT-~Vqj6nv_UDZ_ z6;sqGI&IFzJYkd_hq$zC$g2x*?(}tJB*Y^%D;IKEHjbT5hJABS{JP~k>^fbAw?3bP z`3vS_Y)==Q*s}`-m1VeeayN=xyJ60vMfmE2@z9Doh$9#8G#Az4*vf@C5}J*PGrnXT z3oyQ4bNqIAH{xkEQ3#Hr>?o93w82a^ig!nLB8~Y@T+O_L8>qSnCwDHzsT?~@pEVx~ z=gr3BE;7uSxenRYmKZu}7?iO`u#Sk@-!CEgUb-B^UK|Sjl;c>uVm)*M2IA}a^YQ7p z&N#FG2W&kRj&pmK<0RvIZ`M4<_a%C`Rb$Sqb;QQ2lpvTI2@G1Cc`CX8^25rdNHp$@ zujVhr{5c;1@xNi-qJ1b~9n=;k;Z|lHUVM87=6~@4{B`4T@H~NA9ot~UkoK@>7Jv!k z2EoRpVTQmY>Tqh!5*)aajPV}}`OL@b16$(k(OpO&Yef}Td0AA3=BM@O9c zX*2SOb{u!(1io2+9#2h}j@h4ojBbH0C?-AhUB|y@-mNaqL3M>{FwQF|KwNY#22A<{ z3m1L@yRtZJ-h2km-kmU{YipR>w8k5g#>2Hb77M>x48!23F?a5K%;KaY_QX1TwdowH ziNc&7bpu7FzIgBR*%;f`7cyBsu0`bI@#m&sF3azyyoH4uucGhE?-PMyI$W#5a49Si z71@_CXXQ@lwi=DO^X6mjtaqS{48iWh5%BCf2;F^L;p{&U(3`5=i~-_zvX8V95fEKIJ##a zZq)dbb$Aix&76#~h=Wwd5s;H&Myoa-C58@oefp>PYQ_{8r~ZcXH{yvbosVxQhp<9t zeE#)3%$+j>wi(B;coplRsupEj%5|&sqWVz`^)h$a?w&R9yTK-|jt&(i&~f_{&ID zQg3GD8NTWg_EYX#3MEx6(htkRiytq>)Dhiq^S}<=%y-3?3m0SFmy=NycLo~{g^_JF z9xE3wfR^6?%w0e^eL4vlSGMD;EoZoY^l*CsdbH0-=PVnGRjg>L%4u2A#>>+_!-Bc* zK|ARt_8h!LEk*^s>RX)7bHyz7?}hU|flFx!mMvX{e8K$CD5OW7$AZN>;obLT%4PxH ze6A~YFPwvmVOOzY;W8>18_f7>F6Pah1-GIzSn}<9GR~5sLRKYV>ZzeztGTk3vweuu zpE7wluARMs$H%>o&)<6$g&{|<@3&&SF=H+k&YuleWfE5Y_zSV?im~t8FOaC`g^#|T zkNI;yL!e14X06_nMi$*e3MEd4P`V5 z2>2frMjTB+M&tpxc>+hc5_+=RK+K;%2-Z%wm(?OE2UkyY3eqFRZ!X$cRU@oS4<^bS zB<1A6Pd5|k#w3?((;6MDNEzO*4o*%cD9FhrP$?JVTqy{i6Ja*Wi@JovznGzKw@!F_ z?qXUJT%=jc?c(U*v9a&Kw@LvUJ1Z1qrlGV%#>JpM;}C~p6)-Wg$GDe=BglrcB-;|~ zI~OalQ{Ik)WhLQW_~o0hZ9N8-dc+h|>cZK@9VJIjBQ3uSom)MDF(VVOWb+m%XjU9N z`7`wJb42`+?T{N-;N@|{5M;|L@v+A&&z_t~R^sOi*I^SR;uHKUBEDuQIm~^Ag6Ac) z3byO|AXc+l$WMtyYDO++%Wg1KR0H}ntI@O+6LA4~6`eU#2c8@<5dFIdCkYvnsW>i? zjaJXt8qG-)ZIB{Et3Y?D?$j}hB~r)HQ{gd04qH2Gnzu4k@?jaMduWy;37U0Rj2-?I z?1=+uQx=5NvDYB4C__Tr4H&n50z(G&fDP|C>zCtlNE~WOeQ{Udj8}^^&mt&kZfwbw z&y$_oNxwTa--ioStcI+I<}OyyPc=i^KwsQAb_JPwZSmHK=iu*1KuMqG7Ov)cEU$C*z&9p~x<(gbwMw-MT)5Vg0*H@~kvXCfbGx0ebz>)Oa96bYccfTMx$2 z0bL;=I-TG70Nt_(1WIL{ZtRIyM~#G^Gb_`FE2+FVEDcGfS*s)T$*L+Qrs^QUebvuE z6r{#+?J^9{J<&tDovveu%KT{T-G2-N2lm4IbLPX?%noUBCy|_9i9y4iXilu5S=bs5 z4rVxa<~qv8^oEV`9~`o%DCLG0@E8ODOrpzMV_L$HV22v zb5=W`FUGz*lO}3&D9Vy?`cgW4pX&!9hPpZVX%q^vb!$uwbfBokltmXTc zTX^W%*r*i@fnEuYTF04`qOMM=1a7vF!NCzz-g*(s*X%>+>HYX^?~gEYX^Zzhejiqi zjLF*Uyq>MvV9Sk2+~f+$tz}nMx*@LKh=DaJ8EoxbxJCF(V`{qX!XdAOyDA=g`4jhZ?t9K|s!a%uLzWW8 z0p?TH&4_G4Qa&>xY>U7(pG1jq=d54GfwQ!V$|2$$en`2_C;1*9@@>;xwU@yCg4Ufn z!G6yXWYn6WeS1GC{^WQLdU9j#ebrY7sf_~z%}|gSN+rwqZk@xAsZHZEV?)2w#YE(% zTqdW&)I##bLs)ZNSJGP|4=n>-rF|@6>@qj5H;E{#35icgCjJxpt(po-AQ;z(DLluW z#zB^!h7D`KLpo8*g?yAUu5PuhrIio$60~W)GbSC1P~*a6Dn7}U##x~ZEn2#f&`cGZ zp@|_(x$hxR(;pPXpk_k)4pm^TDSFO>RX;gf&{A>*&Iv;;i4RRZeYroOHuGq~*~T2E z^aBx~yjoPu7KZhx$`Vj7+b7}t1)~XCUOtA7#HMX9B^sJX8n{9HHU@N8frMy;?4&?B zib_)l4#L)r(trAm$;ef%z_sWrSaSIn)}sG9LDJZx@!}_eNtKz<23A9<4<+LoUT78~n5yjAgr?=1TeNyof z`%7s-It*-GVW`W8L@+QzK-<(v91YZ5oKT zCq0j#mYzuYbvYJuZ>o+2Sm_yA81>E!xGTHD|*t7L@>(F_~D|mBoC#l_)C2g+S5-)AXPAa9I&%A~a1KPro=B(KhKI8;K{S@0Z zO{a~6qK=Bf+8x2ZzSwh&rc-4KyuAj(gJWSLoePx4ws?Bd7Z?(t8XS{DPa%n`9QAxe zii@k{g!FRsnK%QlnpWV()r;7^c{_d}D{-gy*rr53QVUwV!2FAeg&@%^E2%e+#p(G&$N6&`RR4GS6RuP>! zs^L<<#4E{5az+_33=%9{D*keMGF^B|Azg$ zcH-wvJ27r#04)Wk81vSrc$}64VFrw(2XK52Jun;5MyL{bgunH2yQ@u6F#2pa3X+?) z9rhO98{i|!s+eZJ(4;)Lnl{?A5c_TB_Nb;KiCjIi;skd8uH7(pFhW^{97)mX=*7v1 z2o;onxsX4lP)m*^rM$X9`Bcg{3A)|9Nxd$Z4a8fdt%*;CUHj2kG0qw>H$$xIY}4)1%LjqV&Y_&G`(zZV#3uVNYZV% zB7|Q@4;WPk;wKxdR!t$+%>5F&Tmru`Vj!I9RVSR7EbGar8eZlX7e8MLotxLGbr|qi zYq&Ua25VZ5=t5)kp!tPy|CY zsAu{j=gL9+aOg5dPoItUy&uC`#%IR`L4d6s#~I(@R2Qu7(B_VrHVMJVD(T=E0B4$) zex~z-Y0W6uE7P%Y)oP^MKZ$i@y1Zu)12_dB#-VJw+a5R^g6I0RYdQ<#5<`cTWM)kn zpWlnEn+~B=W`pdkaymV*J2f6GMIvHFLFa|QR-K`@XC;=dx5dy7j+_Z^M=}?qdK^f9 zFNiu(hZ@GO{>^nA)8lH1vr(^>{%EGR3(FR-!no1BQId2GJ8AX_9Qp~(9m4(K5rb3? zArLAV&iIXOxZ2|6Y5fm7a6YvF9sM(<2<2R9z2-W=)5ZW% zoa_~4T;x7lOL%CfVArnmwBEFAP~44k8*zLWRvn7Lh}XqLoSvj6v@p;V>*U~#fxR8E zfBOcu?cwk=tHAE>zDJZvC$#F)7DA2xTf!e!OxpAivM@I0V6HZy2$2YibW_PKRwW?L z;OV7jYGEnu9cXhIYDgkG16v}{){08uA)e0psX^1JH$IOU{xHM}y z)-G8rxr*vq`QW`FkJIebC@GqxM!qx{vse9uC10gNOI8P;wryZ?B@M|u1JTaG7zSjH zlm;KZrb{Jgpl_%$`80|~OV1qrhfhR8;%sSv_(hK<7TT-d|M(3!Ar%XL3Pr$U&!TrL z4;aD*qeHG@-!Dhe_wf(#?&O!Sbjc4`of^(fT#HJfdS~<7W;yzv|J< z#`vaxI0?-i%n_w$Oz%jsN}w3%MyzkF&(*0N-k36p8_3JBY4sB5D=MJp)ES?=&3!7P zV(6N%&S)l+0#_UQbWPXe%vlu9$*na!a0Yuf??U^w-rTdPKg7v2M~oYSFPCqld}dKT z3d$!KW+ADRPX^i>&>Y4Sxef9$GTTAo10T1u%DTjVrZ+#xL(B`SJ7|#{x_lLG3`XmV=^&Ii~ zw71a8&k5G=zlk}^HsRZ)H>f2mxu5zh#t-dAQ?(v?k9iRn=dZ)MHQ%xZtr65Y2<4(} zQQC$aSiwCgRWQN}uf2}!rOU8+?NYk%*Pz0%IVMdRP8VwnyiSF@cN3~{ zKZU8UJV|q^g09{Xh$!d&Z14K0?(t#738o>vKbty0aMH;m6^%_^CLF&+`&V-RX6)2A zQMqC{wy$5w{8XcohjOQU@HX7<(0(?a?J;TMAS~Z<98055)BLT(^KVY$o}WKD+P@7M zy+GHmTm}>ED%4rG#nj0YVZ);u?VcS8|A+-RxOol5U`4iR?sMg-`mR3Ppg9$@%7~zi zel+D}7A(Qh9cyuc164__1x7O-53R`W7Vl3V2~X0v|C_=C zi2@&3P|jFuxTm7c&aB%o`{f2bH;&0}#Ezh9gbMDqb0SZ-WtuW*eyinrRhYblaiOZR z3KbRXK>A$mn2J@5dH`vfvV!&#u~)9o#xFuG9V`@_EsM=oRZu`yQHs)Xxpam}>|qFY zUE!rB;*`rPQC?Qg8MZ#m%&8oim%D?=PZ^)%My074j5(myG2>cPz`_@!V#~Qi>8=0ANZ;JWm60=Ii0fJ>v%S%bqkBm!veJXDuLRn=c z%IM*y&-6`Aj2dj}!bDVBdPjUrvraDdL?~;PNBYhIRxS718rs8|hdNPavS+HyAYxTT zQwvR1>O9mjuMPFZ*>?@ShpIU>H#WLc@!nrPIvmJrc~n4;D=Hx$QO`nNx-6G8SaU{S z#lzQSH3}G!DN|INkVDgfgXQ7uRn)5}kDPlTlI-i-mMC8xhdaRns%j6n(-X_Rn(7KV zWN?$86D2dsT-x4XJ;_;5+U)oOsYHY(<>h-#+iO$#)Cn2#98?{hJj_f@=(;P&F-5v; zzl^(zXR_o99S(R@k~AMQl$Yt$*4K?__l-kMRVC|%XVtj*Z_ZVQUgLe3Mh}YjOV}3b zxEd2})<_8LuJWkzt87&7b@D1Qqw>t2mWZE|4yhk<6OsKPswvk78Yg=`BvATF3WZA(SnP0jyb})Mwk6n zJz0?22xTDJg8B@ds*Y4`N~9}(mzS1G-j8NxP4lD9m+F)4jpI#mMK!6;&6szihP)`` zGS*uu>&<}uj+698rWqmcQr^?%cxT2*nAlqqW1(ozbz(eg^sKm6&bB9GIZVWOL_4^; zymfSYFJm3oC@42ewhhMdZwYFmz(1~-{wI31}44|91UrO0SWCMgkfM{Np5`QB421D$!&}BLR&BG!ppVmVibv z{cqR5rt}&KXe6MKz&}m`8pZUFtCIiX3`ysB{)_Xk$@*U^0qG!c;{!T>Y3!QF{>>8j zM<}N9ym(xR%KUS3rh98naxB6~iEvj?;7%{xhK#7j}HZGdZu~&6&#(m7{{{`Ol;+QX%l@ z+J#uS{@m{-DWImVM#K|#hi4f6mQag*>%PJKO=svz{%8p((JQ{~qus}oIg>G!z7|4!IIW+87>pC`rOn#&_c8J;u2|m_lA+7%pFllw8yQU=)A(YySYn zB*(hdYq9mhpHmuj#BTe3)&iUe$+=rdN`jRpCnKZyE|`kDpZ!Bul*nTIsVVu7{B~J! zKB7~Ip00*CdE^-Gexa^356OuskUbMYeGyq%kV6*J~{G}N zPNt5WzZ16b5n}xPM`h%kZo;EYH?$54mJmgL_oaX9 z14Ka4Q}WCg&qDsu5V~(0mVa}AJYqb8NUMY{4^Ioqi@z!;1oo6TZ2Avc-8Mb__mCy6 zD$YV=bOIr16tHq=hG2qJszNPNqauj@O@sj>D*}fGkUoJ)5al{KE(v;;Rw&O(MixN{ z?OePN(1QFTMC2~WD30UmLQ}GqJ6@CkOBz`lpa6p^3{!-_ZlgKZPWP8TM zwn|AR(sG>+;di{@{IP=y+##Ks^svw*;wda!XJ>OpgR)%(Q$ijTa(cPgYZdHH(7fjD({216cR)MENc z@exQ#FCcV}GXjIWQ4ddtN`gOzMJA%EP8%*>{_t^CAp!`nQXO$Xkt@FZj1*E75VDD6 zV>!hay!|~$45-WFx9VJz?t;)tNsLd)!^GCkUhrpI6RV}fxMXM*lNablG`e(bDWNW; z#D*ayvyiA6X7COOghM^iol0i6|H`<6xfPp49ws?V%q`*BlJd9%89+R(B@Tbe%ZTWH z9a*dk8)t6>`8YS^uCgc%x1y3zPTVtlH}-?(go+|UM|^ZVvIXKLu-D|Jxkw~GgNas>OPe&mXRYAyS9Z+*Bf5 z*Al`I5NM&PaPdTyQH3`ZZMBlt2^#^@ZTlfd~!=fH4 zqbQAIMp7nf*v8zvTA~Hpk{Dfck`qv(Frd5&kdj>tYZo5`dOIQ|;wn+!t6=Be5`N7c zh~Y~{?xbYs@PKh%7Flj#1`*$h z$YNpxe}V2USS=Z{lcJH7oA7|8g{?QX{x zd*cQ&8{+eW6`{xLWW|V2%!h@I5mMvhNkB*$wFrc#)9rRqpCMSg5{ZUl*C#uHIOHx4 z`-(%;+G>Ot^@IPx&qr2F#VO%fy=)=QMpu$aR-b^5wHPt|b3E744X4&Gz~!;`vDBpiJsivZ&H*VC97uCclfInu`Qm=v5DL`$wY&$V#g63Qfb*9vq4WRB^vClYux(J1o(hw|r||i-3GlF2Av~+=N{3KOX}1pG%ejXk zBSv2_2hjdQ3BLMLe`H@ifVG=<;wJI_?98=EzF>kUU!IP!y_>6E7g!`jHxAjq8sD8x zhlw%Kv2`nvR;Y#HV_w3TXL_TiAPV#6tw4A}7Ei((5gJDueV!VQS6_Y_m9f8J`Ra`b zi7h1)u!STurLkwDQ}6Y;R94{fiOtyfOAH5bqBYc%qe{yb9RutU9+6Jnn2R!aVb(kn z$9db~+?GXHyZ;)=9?elnMp?TyJuv2_3FzWwrY<(>Dsr%C+hK{hw(8Ip7|REdHM9ad zw(dj@!9C4&Do|(WjInP|#}foE4LP|5TYtTUf{YB3^7-P)0gvOK36`sKCk;nEd&dc)GJcF7IB3-zr++>yO8?ZWV~Tv>Pi`Qy_ zbtI>_M0hACeR-D`-o|^+wq+9z#R|6J>&3covQTh<(#E)H?_*FKYaHK03XWnqb`rEz zx3?`0U1j@LW?|FOc6fJaOF|T_z|~vHWL`BzL5Tug`#y`wuMb06)G2aaogh*}4#MIp z@ZQ`77~SVKyjR3=l5+09!mLnv6KTDyxERfXM`7kiL)kM_8cCZ7DaF}g_@PiIg0MWDzbyUO^e$0v^MpX>X&Q%WdV9ml8^6q`ho;i3d{}u0 z!kv}9r~$SQ<$w;}lCy~%JWxrW8x?8VDpE+!2IL0_vfCDqFb1G%b{%j|*|Y#tLmGKYh1M*4C^%b$X4t8yWC#luT3v%GlYXT-c*9Y>9Fn029 z5tCAYzQZTr+|}7I=zwSqPkTzE}c1x zpkdQ6VL)q6gmST9&Q~~lBNamlVSn?&1$2Jy6}j zC0B&ix;B_RbvlCG^>K2?BCOj*RO!y$kaJ)IB6H+;^UH70iY%Y87q;QcEr;M19DthB zzuHHY{3<%gLlQXp%$mLja-5kW*!gSu>}?+o*`lrnB*DqB~~JoQq~U z=~zSZvv{tM0!`BK?fy{s_MLz!L)%l?#$)Ns**JK>0d3zIO+-Rf&@pqxw6|WuXG^xD z7ZI_0T4s`j?Q3WUj>PiueThq#kELJF#rkhHqw}|~Nh^c2Qfqwj)pYoAKuaJ`R4!Kr z<35>z9sy=JzGE5I{v1!D#m~^OxdHZkKM&W5d-z00e<+B~ti_e3s$7H<;=m&()rQ&% zD)1X?ijr~h)Jb>^nv6+jg4*Fwr$(Cv#~aIHnwf&&VKfNf1ki_{_B}~&8a$Fr~6!2RaZe9)VdEM zI^ti$W&6~_?mde?>HYDv{4s-d+5H3{p0@$5KI8K}qaya~v}NmMc0%y6hED##iB_V5 zNFmd8(Z?FVS;W%4Tg@r3VrG8pbjO3UdWCD@@|3x#x)-ZE3FXA^{^sIP&xF4$hBIsh zp~{BaPyQ>kbid^K_o_`k^O*M7n&t+Q3|?3ln+KP=su|(QEMIdS!{kt#;1W?0bQy*^LW}iEsy2lzUkrQ-ZV#&r1vWJq z`ldC;D*%E`XJ!yQrxPe^O?7;u6W+Ujqc6};EAJ)eyuP*MUM#H7WZoFSQ#sD@nGAq^?@j1C(_t{F-C*GoDCEPUAK=eTk*itW-2 zZV4lB*ClD?}qY3_3 zCcjSvRh@8RrbHb@)b1elUE(1a3t%=T^JznQRY>iTClNAPv4pgNU5yvUTuY(LqL2pZP992LN!l`qw2(hAY?tAvKMYo?yu@vuLh)&LLaXRQT_{MY z1KFk-A-bW|syGGyLAp}^%-N1ZNr=Z#`-3@p#Nmpv0?LvwZXq-*C3Kl*55P}{wt&Zv z#9L1}+Vst`a*6c5AZZ>v%#X(~;~LtdJ^q1H#jB~N4X%Kev5jUz|B@Mnjg7%SJf6%f zZ>1>{2Eg3jA8SBDP)P1YmEt=uPin=;7B|$=7d&n&(0SZ2J=lXNDudbBP(~rSF08C1 zy;3!But3Ve+#sD(zqxU}#|v}Tw(b;_Fr9R#Ltpb>E2ig5Z;Hj9Bx#Ch4?AmgMX_Bp z5JC<~ZstQAt*X--c26`a%s<@4z2-}!%xGi(DM7>tn({u0$IDQdkir5EOY}L@23-_d zJj$F=0c*ufIuW|m%Cjg+ik(!+fjGmN#8APW7b+qzq)FqG{sZ4;E;7O`*JM+VE8*sD`0%zC*&=sQO|)j_2jCBkz;csrbQ%{Q3W4P^OcoDv6tv2F+8}q zm}Wysa%127%6_ezBZ^KY_hh&aJl8wh62SSe*h7DHA0P3ybwGIg;p}RpYcjs>4lSG% z_+UbQFce)&YDnjSqFWX<}MDKXH2G;j`OBgxS!UNaQ8Xd%ASHiV@m00KwePt1J zFzBfU&Ofo5aUd#2m8!gbJ!}`c24ob>HDDYOiv|yxzg~SStpVK0n>^}q@(qpK@nQd8_aJLB|QIIhM zF1N!}MJ@R&9;WhDI?$#~-lIMB5Uj^v5%XrkMq06;`;GC$exZhIdXe7z{)5)4FlwA} zTTmnrUsAvucXKa3M#S%2wWV7X0IQcqL#+~v$=I4W*;}AA#3twebb2l4oR1l7Jfhd{ zQ4mBR*-4CX!|T;BiLp|_8}{I+dpmB6!-XC-U25rgFVD*F*Rpi|9K%o|1OY%~xPxJ%YMD&6FcF~rJN2Zg#8VVbf7g$kM4Z$RiIHDl|7s)_2 zmhO#F$|oN_^Na(yg?L6Uq*+y#Dz$tiS@W1nA?*%O>k=VS7g~ceqG+Hu(+BVM;uJr9 zf9}o`BP}4C$Mb;TjIO*5s?hAg0iDpwtBv(ZLZqC@Z;VMEilbS@4Z|PPObf9{6OxfY zEg-|4YY ziZQe0$u$zfU@z>UU(t_@^+q0)UjpjqRC9L7XYFNxSZp2+%Ng;)1{3feC67x%0%nHS zx%=vR=3GhEF&ttL;36wtjT`V5Hx6kdB1pnynlGiBvCw3KH2}pzj+YlLgL?LdF7h`N zCSlN+V?v+M*3o$gp=@)=7J5_Dd6@iEc3;>T5K_aex}I5BNw!Zi3h9|@vnFIZ4q>$J z+)Mloc~ZqMU789%!rsKo9@j*u8~nFhvGB6y{P?kVp48@6SgcanIp4PCDg-7%tglmtiWo{fx&D+Z8f}9sAA`2DJY`>YWD9t>GY-6D z-(ChJfbY&Qx(v-Bm*gq=kne<FK85^3IkJht%RsN0V)6H8@HFnw9_5JjTn1l2W$A!6~z6x-zHzJdaI}?>71*-MB+&69J zj|6sEaMG8-QGxU?a=>B?uOSp0UH))m1o22v>eC4rc0Pltrne`$;v~*O^$0g;%tf+= zAFGe^Q=!cYvB{$zY#>ur-4cpvqymx^0AxbSQsPJ1`QG{2pZdG|8hu!AzvI6o#c%6Y`EEThI&0ze)ZFxu~6)=KwSA5hb3 ztO4!b$*C0!N0kBE2Qg;Id2`nep2+@{#q@9Epd9bFWR)9Upw-&hwmToK1cmd+4On1F zJZUy?R`+TN)zHP{ivC2K8xN$p48xj6)s7iXlN|Fbo7mZ3BO@H7p58IiK#Y##%^P2Rxp%b=GpA#5=3TIx&VQTM` z{FaOvs4@qJVRZ`R#Ww#XDcSjW%)RvnP9fRjf7wcJJgAoV3sW#UB)2%`w>U}AhF=m< z{Og{qlGd)H&0+2bwvmx|MpGtC53h(!|Fklde#cmc@)ntjlYVT6$rdaxumQ#*U|U@R z&l6WzCaJJgMo6zN^0!h_9@+72yeT@oDOPzQhv~c>esyuQhjOQ&Q+QvYV>4!R(@UISQ~*<>O0MRDplzm2x-nl#9w0s;cnMOrBD1F&AsQQ$F(aY{CVeghBS)^AM;O>E z!FgS@4j8YaJ@C3BTeF&obMvC!Q0+@1A#U$TJXyYcq$ENcSr>^F{s^BxJDeV$jb1Vg z-O?5#l>Urz+*pshDrP2!cveY}m(mwBQRgU^P^dF}0IR+cXUx|L+N3KYa*eIIvz|{v zkdYWslA{;NbHraBx|ES`x8HOzt*spr^=<^SAgn15As{KNL!Fq3Y%NvwF%SX6KPQAe;3~-FfK3NTcqlgUj(| zx^HHEHTLj^M*aQ_@~~gW;Iv#gHUXdV@PzQJyC?{cxINAyu=cfbV93y(soaN=7{$*i zy4B#cZhZj)H-Njx;8S7z%@I-r);#FRqFe8=&cfB}!eRDxp)Y%N+MOd;yn$&3Vzf?C zBaph=s@JCKe1>;K`sC>(AHw{RdyX8L&E&LDioIOOl4QNh46E~Q^}A-cM2MOe)UG2y z;Hz5xQ@!tish3}-D@mNtzPNzp@-)8^B@10lE0J-({Y4lCmwR47341e+dKl?%sm2mg zhtFtSL%RFHT9y0Qsk9CT;qc@_+0>8uT1C}++()}LKimu-e^EJ?r$*b5^PXmorW25Z zNoK)r>uiqhh=(0bt42JQ^kPK(Kx>{zPU@(uR14ULOWvqitQZeCGJhEjS{KS3mp8Ox zOvX7U$cq^MLB=!fey>`S7ojw7)C`xb0G%AhM*>sDs^q;wfx3t5fRb)%XWCCF^=JB? zMi#hLF`lC}1E9=fS`?~TMOmZMeUeg=d4Z9tQJZTX3&HV^vo&1AhIgW7OL8MuVWJ28 zHb|kI;UfF+qV z7*gbrR_V1yZ8OXD&b(4&QCpR2*z)KyyTb)lGgkZ_nd%OKa1fh2quRe5zv_`Tj3!}h z`oJ_&iw*ZatWVQo?F)ONT8yh_)2j3NFlHa4`$mMg5EiVV+Bn&YYI)}0Rm!crsb^=z1&h)SMk!tO1}+FRpH0=X#Qs{S`o&Hj<%z~ z?OAWOrKT@-qYA<6gS*C%mhLV2tjx`3_PXUR&{UqAuw;Kc8<-*G}0hg(aIY0XmsCow|?q*X+ZW%Ruq z-rZq(0&h+kmTyrM`=Gm=AN6TntL=W%$5{;?VInQ@deRwJ&R zOqqdJJfbL0%y^R@=ZJfB2Of7K;nDm}N$~BB*MVt7_@k7RjSc}C18Y!!ll*{qh8O3sz1 z_RRxQA=dot=v5ko8ewy z#H0PlKy1QsSrC0BhwZs@%+4n%7bHA3tkzU}Vt+A(iq4|=wSyl+e({sZS#i4y?hI_whrfFL_6{_)tEE(5__k~+g<3@NpCS9Fo zU0Y{ZOwJKOToR}PZBeQAw1=GLN+E6Xd@MxMIggX+r-VnEEJCHn2}L7OEparjRi~;M zZ1M%f8OrgN4{q($8qp)`eSGaeE|hrUBBvL9TMMao0$HZtCJHwy)WYU#QM`q8FRJHaze~nEPphc z1rmFaFao@8uB{#Z>>cLC`A$f}5JD@HI5t)p;!;M4ALXt88<{YqpQ0I`{4cd={Kz< zsF=v`ZEDb+_YWi>t*H)4QaYpgh5&iBRuJc{I3NwK5CEay@4U^}!|BDJ(1hqUghWhm z!mREX55JXoCembnigW4DQqL4yu&ZLP^Dd3Iy5SLCgVwUv2oF?YB$~EuH&H5153Of< zWVMCL)Ch)LWX*)XMvLbWwo17iU}RT8A1#8jp|;sV6n1nsWdlO+*6Oe+&zj7#s{w`p zBp!9Az?_E0;FOiFC&fuF32OFUgLU<}?GdypjdsGYdk5k~QSn)cX}2rMRE9G0O)1ZqSd=x8kV1hW0hO6%wVLeC!;^W|Tn`T^7bpfq~u*S|9;BGl}SM*{lo8 zp^PBsZ30Y7v)1;pE)*wkC^FK`bh!gL$Mm1kiNZuHE-1UY(c1e*Hxmo z8@1>p#u3UTks6cX-Dht@1@})GPBm;d)9t=4b1z=9|hssHZh0#Z->uo>uVSu=uf)d(l zVc(u@cLpFS<9|#J52XF#K%rvmx`grHlNOD2TzA`z^LF?QVYaOcH|2uiQy_tVuk}An zI!W|bz1paOki|Ivaa@*<0%EL*yC!K&khXmxd`YC#4Q?!pEk1>P5fplh{y-g-C4 zOfG}nhFS)cwn{C}&!7h)7iI5o05!ICQQgJs^Tm(}>pTf`ZCr6A; z{J8V}!3jOH!)^QgiSKs;NiQZz@gqUHhFv-1 zftUi?T7q+ej7yAt!@J&XgmXo7Muklwm4HMopz#mL2Ko)8j{vr+YKMmq{Gp-v}{s zK1~s%Y966heB@@9%1i}0BoLAq9!X7UvCmxzQl#36v zQ-mzA{GW=S_(-mXgNYN0Q}{LQ(MtYS?blcN zzBZ^B0>;J%%M2zEvM`$^7$8d>-kcy~HfegN9=LXn!@_UI+u>D;+-zYi)h-jQDil|12J5h9gdLDg3?!WAv`nQUdEdSg5uj4~@15P!R4Bssb@a;Y2%{Bbq8VdG_Yr zi%s-F~!&&Q*1O^Z}=zqF;peF0XZHaK2|)BA2{e6=x>@tFO4Is z1pBXJ?I~nMD5ms9=;{>Ql!0-zNF&+N$lQ~*osZ2%W66f+_deQgWQ=wIi>4lj_>tMy z?8nGU?3~S4p2HbVL7!l+3+hmvv~S3|KvG*d!UU#zC-}2w+_y(PFKQ+%14|Jx?1yX>@xUtec&aejn^xNvoU@Z!0rwQ_Bj1eNN5z1i>Icn2YEFUqLW3e+s#h- zT@lXRq{qjVHGMi8w8dSbJdGz&FfCe)sO&Tn#a7?LuTHeNvt4b!TX{%Z|ER&N`Q;3e zTxv)YcHVoygo)SXK&M0p-RzkjvveETXh6&0ppS&tVaG+&IJ7FcD&1&sK{PQk8e>U<**a0Bj2#0}*R>;TKsESL$GHsv7@&rGsuoYk9iD+CC9*(_T!1@B( zKX&0no zK1+&G75mQEoJeJ-H&gq>1jh`r3|c%icMDFR&Fy*PtpV6j!iN>7LX7ApkKboHe$ek1 z`@}TO(7gA&=p6ImlqBypqhc+dGF)(I4Z`eX3CZaO3a@?GJ>)N|82o&EdzO&M5Un(> zUPMJ>MQ+9WqC1^C@E zS#JvRo@d2}P*zZM>DA0%)X(GGcPBeND!O0OWdmtEL@_-#8|ZY2UJ#Ldmc}SAdphzw zZJqzFZ5nhA+wr^B2)@ZTaY}3_70{v2Wfa#+BOS6iqdY&6bxgrG6DbUBEKma_l%_i* zAHdT{%X*$BVuXD?hkgU}%Hn3`Ct33Y25sf}CLRO!!#f|2l#5cTk#bF|5!6{;9GFb8 zG$cwhlJmtO6$a}rt%0<+csd*d1WZV@5e z^8pxZK|b2yq1@z<0eo#;(I_ps^?A^+`>;=~)8Ei1hCwuD1hbz9Om_vSnhI%wgf>~t(QI&-fq?vGOZm5tc+olNd9PGzlF{Lh&-6Ah{&$DYsG_c z>WBPMR~$I5zmxTVq<%wwk^mCWkn$(s(EJsr<)}c4CNt5q35V0qJJlj2T8C(_=S>mZ zJXTERI&yeeOaal`b!a#D%5VCtW<~6hQ7b?o{R$(gzUJHygQL}rPH#im7oVdOsG}{T z-}nsifCClMz4ZO3C(Po9Emoi{41ZJw+VECTy|&cIEV0aTZyXUw(0Pm&-HNjsRz!#o z3+j3ee*gK@*#Jls#2|0aR82-u5;6#4!tTwoKFiF;=`GpOD37Ba+PUAJa;fRCs&=s& z!FU)X!*?b5>m4~9J5ui72&3AWmnU)MncUpfpTTI4q5*~Rnkf{ zXc#!i*?WlpUKY;*D?UDI4)wh z;NMq0ARmlCzRsdXm)PS)46t&0LgBUSKiXYQXAg8J7mZ-1hR@qhE#Ljj_i zD)N1xuN5*#0>gM$k9tISSt=mVd&5$={$AP2C)<{xcrxJ6f^)w`;S1!Vt86xh=}*>4$6? za!NLWA)_LziIRxun0{q{>>yI^&p)tM=sXq8Z}S`KkV$dbFwSKt5+w{tO^I zIOUbC0TBf@s~&crR(CTG4}9+8(Q`!Hd_cg%;2NiP1;y3C@kgeGfEU~RwZNk%ioz3= z0JSIBzp4?a0trAT6cj*D{py0pmQ`cmH?5Cg;1>4_2ZOGRi)+0EpR+sdyYrz1=|;?8JL@;0ZA{@Qiy0*LU%d>Fq4Qrq z=sm$7A2e8!5?uZ>g}bP2>Fz;3KbEpRc`U>8Y)`1H>A{GnnR!=p4!<-BlG?+b&L7*i zC*+`o+?>Ky`|y#Z8kgrke=7WOLB!M6jfIaV*(-Z6`1t+$b^HGN-85|3UL|7Gq+8&y zUFak)J4{K=4Wx>DP-P;?d(4^k_O~pIr!|-6%VTW{Whpp`y3%f$m$Q-|!21xxz$HLd zxzxvjcQ}f=xdXp){1?8~M!_;iPAypo5z8rl$_dbYS8os8c}_Fe({xRe(g6mnsHZV( zH`nXAxm0%T7|SlE*mYS{(00*%xQCdP6_xJkh+iao$N&HbQ)WUa7Kx+Dfc;AiZ^@5* zj5Uu&w`Fbq8A-s?c+uc!1pLx509;W@5W+J^3l%~2x=0Vj*m^gb%@=a$Yzn1(SZ zz3QEt4HioaKY6s_@+pK-qf7T>Q4bRf(gm-t`LS>Cg~NX}x%G3J8K>cKUq=a)oXWhY zcV5~FQW+x*i{EjLf`pZUwAP3VyS~wW+ny6?liFT#v%|7!13g7DeWfq9Nc zz$+61Zk-;LHj34l{L`S{PrY?q+0y!E`=X*`r#+15?Kw(u+31QO@}%qhx7yRTzmix` zowMqVyA_As6^i$#8!-j7{yo>*S;!nCw_-^3?*!M22Is;7v8zFG;z%M)YxTr{Rl1CC zMV6{MZ)~30(@>JBSU#;@cuWgkBMb88YjrE32k_k6wu;+VxhJlSA2;H((HWhwqNP{U z<(R5mta!}5_E%J>=T1G;&uqHS`^&wP^aumc|qlo5m9|pH93B2yN=Td&@%LQ>-!<$ zQp71lIBJyb-=Z#xsd!%1DIc0zw+b~flW+n=ZGJ&unzUI1KOKDnuhChqdd6OK!?tMh zVvm&!f&Sh`|KDT=Az-liYl}H^GAYC}2pspUpEhr|VBgen)?f`|8@Zm9jM<)Ng1GOn zZ4Y+i4Q^Tpx0(xpU1%bNRCUN~$E=obIjh!Qcky^m6Aj)+FkkO-y5mq#3_9q{_weeX z-LvpzSkp<9TXF&><$hACz&2O?T$S3Kka{2eljB8 z{uN{vo8f*njSrvuRe5!IdtkCp`RqK&08Nc7T$?!C^ByDo4YAe246J%Is_*s^uP?a3 z$^_`j&5o(&E8?#RKG6#D<|xmkdpaVzNT?<;PY^3Chel@bNsJuNhZkN$ z#<|bLDX+XACL~u!(4NCK{@^i^g&eRYr)|*_Y)^h5EyW+-fIQ``3})d;+C z^R}Zm@4PDKa6|HO8>J2~CfnUM!km7lb-l59E!d~c?V0QnJkJg|U7bqvQtR3~P!*{MjQK8Ka4XGLN zZ~KMtJhiBIA8yv_V@8!8gWJQK^JhE%WrOxuP+bPh+h<90`j(3>r+gqro33AUc*V9s z#x*)+cd11uGRO=Ic*;_9yB~*e+onSB$rV_g|@Rv}kZbkl{Ji{OFMTm|<(4M6>Ws zM3qzbUpaPu@YXm_`G`bbDA^r8giI{ zWh6v=Yjx&uc$$eIvRb@wSv=pI@=?sQ(BRiH1B+N(3gcSqj5KI*?96!_&7eRl#TXeE zgTS>*`?go`_6F|SkigYZo-h$8P_2Jig6+)h#uk9KYjD?oI#R1mUiiAg?xAaX=<%`h z2I7b+iqc;YP@nq=V*-~vlmFfLw)`Q#)>3T_cj-_`*`A5Cy1o2{g7pLb>uvqYO|2Le z$2eEpd=zV}3>TcL!8+uoy%S&>H26N^J%+f!d1y+$6`delLo-O=ii!Q8z8Z*eQCJ(+ zs3y7K5JEx`RE{&1vfKjBNQj>~u5P9TC}2X}!@$_mH=0b$Mz&kZMW?Y?bO8ZxGJ?4J zZ9wAcdRtC;!&X7a`kilPjM^m$ecv{Xt_9Ep94HbE2%P&b9eQ^X^))-`2qXlFiJE3o zQDv)Hkg(~cb4};<#A22pO1AQj2Cn!sfbc`K#b%WDR!&J|OvqdM!<&O;1{6H1=n(JZ zS9~czZ-P!4ey9a!3F3p!8L8$AnULV$le0%D1;n#ZVpW(7>%M18B&IA7b5Q}MNJ$Rf z(SWwo65Yj8JD+QS#!hF(F@T#A`SDh?_SOfPlR9o9>Gnh09QJS7#(|!QB#cIlLOL3R z6!B*q4doEIB zj)gX9L@>jg7Mo=hFmZg`E2xBzL@+Q5y%(J)#Z7%k9QaN-j^+iSys3aRQ(JgVQKM&) ztEVCsQ6~6ZRzsbzPE(u9;8FDNgP6pPU(ps`%M}UxiB0`oS!<}g7;u5iQx$|CC zya3?`)&t&eZ3`)dz5yjcyc4tL?mdh$IBZ*b*3SmC$BS4_*z{{?$Px+v_+d-Wq;RL| zGpAJE51ljYS8NQu!wlw*LZN>pjBuWPg7!95tiZ9eYj^ULr{8KOLDh) zma>f%J`%y~vOSdn#Xw1nHD^W_kNm&)It(BazK3Y%BBf~8EG$qIqlc4diNskKRdp;_ z4%aJ^=Gjh3f4<;@T%tVX2su@~Vn1~-QdnQ?mPFl&Vu=Cs`&9f>VZE*>5D_ffchC9) zkQkfl;6DrOwQx3qx^KANTa}M}x-{XTJtX$uFZdLq16aXSqt>5p8n6-{T4R%Qp+eQR z>V3sV8Ti<+!u04+=2sEP5`+NCV-1&CJq_GgLEjpCN#ZEuvWSPbca(7`PJP=dpfzqK z>bidVKS5xs;RL9GZ{CR?Yz=>~ORUurK+YJJy}#Im$Scjj8EBx(WLFMIVpCD(3r2`T zGN#7TivCn2XFID1XzRcphK{H!`yHX$1jGbIRTtY-UsDT82DS8QtHRv|;}w9mbA=VP z-_&{t2+~r4|;fjC~TN4F!nH%PR(r=~4>xFV@T7&{^i! zsYI&}pWxH%wkJy7BkS9+9=c|uj$~WH>;&n&VW6D-I%_!)VN-v`enp%6R}Gi~51hLN_g~Zf@koe|t}abUiVq|G1LJw0_Y-CKDc$ zlNHRC51^I6Xug0Ea;N}qIGiTvCPBVdAf}75>0!1x8xmz< zM?s~8_*I$%YiBFp^`2bFM~&DrxwPX_gV!?|XzS>_8ke0AHfA!7p6g(;t8T#O{a%tK zMj&$z25wB7?OUWaBQ!zU>!k4GO%MSDH)?EtclOMd=k~_iGoBzMi-@7GOMjlVv0yz3 zl71f+q*|`qi;g`L#gYg=B}zwYCRpQBJLYp8Eo#_@L9f))d-yL}#0c^=ok(Z(i}P7; zcPcQ%0FE-(4ITxDqkn%paasnbD3y8%LOG+wA1jFqlQyJUb?3)a^yb?@cVFzxh8C!nuG<2O{m>r}% z%ELN)3hVsXFBcj0{T&WaQ3wZqc}A=~hN0Qown6g@tI)!SV>9i8 zwLJlo3`kbqu3CjgT@0@_HeNQQu=c!M;O;K;!KihH)U42H^H^b{Q&T)iu|>KQod`r@ zq@c_Jitv#KLF|GcEeDMSRzJqH2=mOodFG3)S*Pz<(-|zkeUl<>RX7cwx ze!xKX3*(<*I>7!%J%D_{b^={H<$tgp!{dvIFqlfU_o0WAM!VZSB-jR)+QJszTD{G9j_UhZx3m)T9di@1sQHgpaD!xn-A*a<7gEh&~LXi?8OKoWnnih*p(|t9O?!3{Wj}8NT2u#)Qlg*OyB?)`-Xu@jYVQ-2!O6f6{uMAz3hJ zzW4;7P_wfbh?MO|e4Jrk6{#UyYO>tII&5~$bl5V-JrfdPO%VHd;@YB0P~%G!Q%arw zFl$GRwc3O_r9Y-5rxeHv-SAH2t6R}C1R6EME?Tg^C>r!+%sHI1*zy&thYC_kfbBU^ ze%pq=!=ao}4MkJ2XCB~LE-UzADh})Q4w#-qVn>lzT-()QiZB&2?GV|)Hpx>aMXt$r z!|sDREo)l^#Z~r+r0LBIJ3&^sp+CpuHqAmf$l&1VBKtRRhi4M`a2uEmIqY-6xYfO4!!=zEVnDmf zDUiru;m#?(Dw@k1-}K4qQzeYmmJCH6UZx8Hzy3*10@nCJ*(1rFF}-soAkZz3pU~CZ z^*a*%A`80duJVlzn~z)5uWN!oaUft0j2vl*G?pRk>bK5qU0y5ny37v{(cR=evNii4 z>_=LdVZS#CC5b3i25wAsf&MNw&$@jSJ|_#i{dy^sbJ}5zs-AkudIZTs$w!o}QTlS= zaS#JJx`e#k-pJ3kQzDKpuw`e$+Ba0R)owP!@RN1t-fHk_m~0mbsn~W}bM1nubBV0) zF-4Z^HTuegjNt%8#9IpY*1XOC637qkYe&O{+9sDr3OrVlM(^1h_xSb=vRxb?pfo}K z4CDt{_5v|J86BYQfhP~ek7S@84W_r3$ECUg=}N<~rYEQ%gH^4Q?VBEqr_}TaLI{CN85 zYAVd7NsH^60Cqlk1n|5Yhvm5Iqk4PUp-9ZE92_QxIox0i!4x z8l~2{I7p$atgb0M*`=f{zgrFdAWB8S zH665T)D@chFo}mQ473r3RDhE}Rw^fYYqLPxm1-xB)Q2l`Mr#g}sOr^-+O-WulffGO zB6RB@*nO0Dw2%AojVKo67QV`f#|U$Qo?vqwZ!Fu^t_L0s zh?U}6r#CS7%;^fGEJW=yE4-*iErauofDA={>$n+;K6h!}YlmZAw4nhod+CS+h>bF4 zz~EuSwd>RA@_TQNxetjCJTE#LM$3?DspP|?wQxD)js+4#gO1J20p{OVKO_ACe{=7hhQm%ZGE;_qXI4&Fke#{y66H1}PkY(>f5*a3tO&Bhq z6vjIpp*4yS4L;dIdg8H@w8N~WIbmUEh&xt-d8(QV6w*PZNG~dc8SaB1srlbE%$)`I z@An^a%j9z9{LXiyZxQn!u|=}5$4A1X$*LS`_T-ir5mujDi&$0B0XobUJhL(#5U;>j z&VY#kzP0iqy`@HmApLslkemI8o^OiiOYS#BdV7pH+=0i>;`izR)ki8-Q>$~mS&Z;U zF8apIX)OJ7HwK?=_jrm%EHgG7@DoG&r_TbT}ckzR&E_LcKB|jpmend-`jRgPLnxT9W5i38cc#sP_VBGV;-h4_sa(Lz3OKrsrZ9ptnmW%wjvUt}go zy`sOQ|F`8V8OM87U}X_YM--%j0S-BSI_4y(FvCB0^NYLaKD?o{q+Yk&{T8*WYqs3N zBVzM;wQyMe6N!#gdkO82uBQ*#th&g3`!5~aI2W@YNR3!5FI9B(rdqq5* zUWHS*n0P6HK}`5;=q?0|gZH0&{x9CHGyed-;hr3+S=n0@oQfAbxqnV>SSX zwzy3YApf!I+HzpD4Cpozv9vHOp6h}L3I;#Vua-NMM96g%~mzR06`u z!63p;-kMxirnwJpytVQCP<_maZ?x*id!=TA7!lN#H(y=jOIn*b)KCcTccLi9|mdiq1UcF3J zdu%EEfXu~aiz6TuqI5Y1(fn!M$9;+4`zxR%&xuRU5J;IeD{wFM*H<|$7W46(f?f-o zmK~3=VfY3(VOx*VZa79yrAiJ$V0fLiu+Nq%u!_Y-eLwB+09v?6$(a6paj$BbI1;D^ z`@Sp3Hc;k-F~O`H?2i zQ^-U%$AZo>ZiFKOsdbvH>_Ci{{Ieg4rMboB?l`A$x`mJhGl zVf{VhKn|osMf0uq_*7T8ZEI(JWuVYgLPT}F6)>o{voLb90!d(> z_k+oEkVB3odzHhmB*}&{&3^vzusw1GFCUq`lQa~ITG0I%;HcLGJLCT$HDn!LeA-vI z_SL%Z5i&WqUK(|RqDVDDm^uD+-NSl587Y7*o!P-Hk8I5BPU6xd6?eHrep z19B|cUDQBhUUg7Dp0KJoQ4Om8CMTmG0+MQnvsEq|S}}s)VfjB?wN(KL12N|-x>widweC>{c%bKYF;U$?bl;)VRJ@y%|h9xc`tC;nxtM@8G|y>pK1oT{G|C{1ZkH{2CGlPW=2Ybba(U zbZs)g`5y!f{2RK4$f)=)tzzacG@T4}_z%TF{0&_ru&E6G7rOq7F0&91|HGaLe?!-V zmet|^Y!LYi5V?pad;balzZv{L-s1ydari&Izaewbe{W8mj0lna2X*;NA>VxZWcg>I Tu=Vu6eSO4*WdPNJy8izk)eJ6- literal 0 HcmV?d00001 diff --git a/source/site_ops/install_configure_run_guide/Images/tpa-idp-create-non-personal-account.png b/source/site_ops/install_configure_run_guide/Images/tpa-idp-create-non-personal-account.png new file mode 100644 index 0000000000000000000000000000000000000000..5a58d99deb44a55bed829e96227410e8c6d33b65 GIT binary patch literal 93698 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%0A^v$@f^#_c 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�JslzFRAPVolB0#5@4mDsvFUxiVb) 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 F{tr39g_HmQ literal 0 HcmV?d00001 diff --git a/source/site_ops/install_configure_run_guide/Images/tpa-idp-create-non-personal-account.svg b/source/site_ops/install_configure_run_guide/Images/tpa-idp-create-non-personal-account.svg new file mode 100644 index 000000000..7e9355e98 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/Images/tpa-idp-create-non-personal-account.svg @@ -0,0 +1,460 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Learners can enter non-identifying information in their edX profiles, after the IdP directs them to the edX site. The opaque identifier sent by the IdP remains associated with the edX learner profile. + + + + + + Non-personal identifieruri://1234@some.edu + + No personally identifying information transmitted to edX site + + username: MyEdxAliasEmail: myedxalias@othermail.comuri://1234@some.edu + + EdX site + + + EdX site third-party authentication service + + Learner Institution + + + Identity Provider (IdP) service + + + + Personally identifying information held by institution only + + Name: Jean SmithEmail: jsmith@institution.eduIdentifier: 5391395224 + + + + + + diff --git a/source/site_ops/install_configure_run_guide/Images/tpa-institution-associate-edx-id-with-personal-id.png b/source/site_ops/install_configure_run_guide/Images/tpa-institution-associate-edx-id-with-personal-id.png new file mode 100644 index 0000000000000000000000000000000000000000..91f296f73e2f29544a57e207f262c2e7714475c8 GIT binary patch literal 122163 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 literal 0 HcmV?d00001 diff --git a/source/site_ops/install_configure_run_guide/Images/tpa-institution-associate-edx-id-with-personal-id.svg b/source/site_ops/install_configure_run_guide/Images/tpa-institution-associate-edx-id-with-personal-id.svg new file mode 100644 index 000000000..5dce8a156 --- /dev/null +++ b/source/site_ops/install_configure_run_guide/Images/tpa-institution-associate-edx-id-with-personal-id.svg @@ -0,0 +1,725 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + EdX site Learner Institution + + + + + + + + + GET edX username:MyEdxAlias + + + + Return non-personal identifieruri://1234@some.edu + + + + + REST API client + + + Third-party authentication ID mapping REST API + + + + Course score foredX username:MyEdxAlias + + + + + Course grade report + The third-party authentication ID mapping API returns the opaque, non-personal identifier that matches an edX username. Edx usernames are not known by the institution that maintains personal learner data, such as university grades. + + Match the edX username to a non-personal identifier, then use the IdP service to match the non-personal identifier to institution records for a learner. + + + IdP service + + Name: Jean SmithNon-personal identifier:uri://1234@some.eduIdentifier: 5391395224 + + + + Institution grade records + + Name: Jean Smithjsmith@institution.eduIdentifier: 5391395224 + + + + diff --git a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst index 2102e9690..b592f4aec 100644 --- a/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst +++ b/source/site_ops/install_configure_run_guide/configuration/changing_appearance/drag_and_drop_problem_styling.rst @@ -1,14 +1,12 @@ .. _styling_drag_and_drop_problems: -############################## -Styling Drag and Drop Problems -############################## +############################################ +Styling Drag and Drop Problems (deprecated) +############################################ You can customize the appearance of drag and drop problems in your Open edX site using custom Cascading Style Sheet (CSS) files. The style that you -configure applies to all drag and drop problems in all courses. For more -information about drag and drop problems, see -:ref:`drag_and_drop_problem`. +configure applies to all drag and drop problems in all courses. The following two methods apply CSS styling to drag and drop problems. @@ -29,8 +27,7 @@ The following two methods apply CSS styling to drag and drop problems. .. note:: Course teams can also style the background and text colors of the draggable items in an individual drag and drop problem, without adding CSS files or - configuring a Python module. For more information, see - :ref:`changing_visual_style_of_drag_and_drop_problem`. + configuring a Python module. To customize the style of drag and drop problems by adding a CSS file in a Python module, follow these steps. @@ -85,4 +82,4 @@ Python module, follow these steps. #. Restart the LMS. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst b/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst index 0de1be8a9..517444fa1 100644 --- a/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst +++ b/source/site_ops/install_configure_run_guide/configuration/customize_registration_page.rst @@ -64,4 +64,4 @@ To add custom fields to the registration page, follow these steps. page in `GitHub`_. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst b/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst index 97e4417ea..e577f378e 100644 --- a/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst +++ b/source/site_ops/install_configure_run_guide/configuration/deprecated_add_course_talk_widget.rst @@ -25,7 +25,7 @@ course **Course** page, and the reviews are visible both in the course, and on the course **About** page. Only learners who are enrolled in the course can leave reviews of a course. -.. image:: ../../../shared/images/course_reviews.png +.. image:: ../Images/course_reviews.png :width: 250 :alt: Examples of course reviews on a course's About page. @@ -55,4 +55,4 @@ To add the CourseTalk widget, follow these steps. #. In the right pane, verify that the CourseTalk widget appears below the course information panel. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/edx_search.rst b/source/site_ops/install_configure_run_guide/configuration/edx_search.rst index b49c64e60..1eee479d9 100644 --- a/source/site_ops/install_configure_run_guide/configuration/edx_search.rst +++ b/source/site_ops/install_configure_run_guide/configuration/edx_search.rst @@ -190,4 +190,4 @@ LMS * LMS implementation: ``lms.lib.courseware_search.lms_filter_generator.LmsSearchFilterGenerator`` -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst b/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst index 9ed21f794..2fd191445 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_ccx.rst @@ -29,4 +29,4 @@ Open edX, you must configure the ``server-vars.yml`` file in the edX platform. #. Restart the LMS server. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst b/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst index 8e0c04190..ec17997b0 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_certificates.rst @@ -22,8 +22,8 @@ Organizations and course teams can choose to generate certificates for learners who pass a course. Learners can view, print, or share their certificates. For additional information about certificates, see -:ref:`Setting Up Certificates` in the *Building and Running an -Open edX Course* guide or :ref:`openlearners:Print a Web Certificate` in the +:ref:`Manage Course Certificates` in the *Building and Running an +Open edX Course* guide or :ref:`Print a Web Certificate` in the *Open edX Learner's Guide*. To enable course certificates on your instance of Open edX, you must enable a @@ -69,7 +69,7 @@ Configuring Course Certificates in Studio Within Studio, course team members with the Admin role can create and edit a certificate configuration that is used to generate certificates for their course, including adding signatories and images for organization logo and -signature images for signatories. For details, :ref:`Setting Up +signature images for signatories. For details, :ref:`Manage Course Certificates` in *Building and Running an Open edX Course*. @@ -106,7 +106,7 @@ Configure Course Certificates for Your Open edX Instance follows. For more information about course modes, also called enrollment modes - or enrollment tracks, see :ref:`enrollment track`. + or enrollment tracks, see :term:`Enrollment track`. .. code-block:: none @@ -155,7 +155,7 @@ no longer be able to grant certificates to these learners. Learners can continue to audit courses, but they will not be able to earn a certificate. For more information about course tracks, also called enrollment modes or -enrollment tracks, see :ref:`enrollment track`. +enrollment tracks, see :term:`Enrollment track`. ***************************************************** @@ -186,7 +186,7 @@ Assets for HTML certificates exist in the following locations. in creating certificates, such as images, fonts, and sass/css files. .. note:: The organization logo on a certificate is uploaded in Studio. For - details, see :ref:`Setting Up Certificates` in *Building + details, see :ref:`Manage Course Certificates` in *Building and Running an Open edX Course*. @@ -323,7 +323,6 @@ these steps. #. Save your edits to the certificate template. - .. _Enable Automatic Certificate Generation: *************************************** @@ -399,6 +398,6 @@ will have been generated for eligible learners. #. You can then view the certificates in the ``certificates_generatedcertificate`` database table. -.. include:: /links.rst +.. include:: /links.txt .. _edx/credentials: https://github.com/openedx/credentials diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst b/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst index 2d48c155f..fe7d17d28 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_custom_course_settings.rst @@ -22,4 +22,4 @@ of Open edX, you must configure the ``studio.yml`` file in the edX platform. #. Restart the LMS server. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst b/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst index 52d5b6b52..5984ac2b6 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_discussion_notifications.rst @@ -8,8 +8,8 @@ You can set up notifications that learners receive the first time that anyone adds a response to a discussion post that they have made. For more information, including the text of the discussion notification -message, see :ref:`Automatic Email` and -:ref:`openlearners:Receiving Discussion Notifications`. +message, see :ref:`Automatic Emails` and +:ref:`Receiving Discussion Notifications`. .. contents:: :depth: 1 @@ -60,4 +60,4 @@ of Open edX. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst b/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst index a2e8467fe..6960f6475 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_entrance_exams.rst @@ -47,4 +47,4 @@ files, which are located one level above the ``edx-platform`` directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst b/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst index 85eb2aada..9a1bbd102 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_licensing.rst @@ -50,4 +50,4 @@ files, which are located one level above the ``edx-platform`` directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst b/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst index 4e84a2e09..be0e498b1 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_pacing.rst @@ -28,7 +28,7 @@ teams are able to set up a course as either instructor-paced or self-paced in Studio. For information about how course teams set course pacing, see the -:ref:`Set Schedule and Pacing` topic in the +:ref:`Set Course Schedule` topic in the *Building and Running an Open edX Course* guide. .. Note:: @@ -49,4 +49,4 @@ using the Django administration console for your Open edX LMS. checkboxes. #. Select **Save**. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst b/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst index 83dc14432..843d12369 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_prerequisites.rst @@ -49,4 +49,4 @@ directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst b/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst index a2552926d..be7a12d04 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_public_course.rst @@ -1,5 +1,3 @@ -.. _Enable Public Course Content: - #################################### Enabling Public Course Content #################################### @@ -121,4 +119,4 @@ including the following. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst b/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst index 11325b7d9..340232516 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_socialsharing_icons.rst @@ -140,4 +140,4 @@ This URL is provided to the social sharing site for linking back to a course location. This URL is used only if you have enabled custom URLs in your instance of Open edX. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst b/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst index a32a62244..31337a695 100644 --- a/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst +++ b/source/site_ops/install_configure_run_guide/configuration/enable_timed_exams.rst @@ -1,5 +1,3 @@ -.. _Enable Timed Exams: - ############################# Enabling Timed Exams ############################# @@ -24,7 +22,7 @@ exams feature in Studio and the Learning Management System. For information about how course teams set up timed exams, see the :ref:`Timed Exams` topic in *Building and Running an Open edX Course*. For information about the learner experience, see -:ref:`openlearners:taking_timed_exams` in the *Open edX Learner's Guide*. +:ref:`taking_timed_exams` in the *Open edX Learner's Guide*. .. Note:: Before proceeding, review :ref:`Guidelines for Updating the Open edX @@ -51,4 +49,4 @@ directory. #. Restart the Studio (CMS) and Learning Management System (LMS) processes so that your updates are loaded. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst b/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst index 24e858a94..f28448f7e 100644 --- a/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst +++ b/source/site_ops/install_configure_run_guide/configuration/install_xblock.rst @@ -43,4 +43,4 @@ enable the XBlock for their courses. To do so, they add the name specified in the XBlock’s ``setup.py`` file to each course's advanced module list. For more information, see :ref:`Enable Additional Exercises and Tools`. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst index dfc1b69bf..c14002411 100644 --- a/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst +++ b/source/site_ops/install_configure_run_guide/configuration/lti/configure_lti.rst @@ -101,4 +101,4 @@ follow these steps. #. Select **Save** at the bottom of the page. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/index.rst b/source/site_ops/install_configure_run_guide/configuration/lti/index.rst index f5b2c6cb0..7098fccab 100644 --- a/source/site_ops/install_configure_run_guide/configuration/lti/index.rst +++ b/source/site_ops/install_configure_run_guide/configuration/lti/index.rst @@ -26,4 +26,4 @@ an external LMS as a consumer of edX course content, see :ref:`Using Open edX as an LTI Tool Provider` in the *Building and Running an edX Course* guide. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst b/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst index 63e574810..85aadbcc7 100644 --- a/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst +++ b/source/site_ops/install_configure_run_guide/configuration/lti/tpa_lti.rst @@ -132,4 +132,4 @@ steps. **Unlink** next to the LTI provider configuration name. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst index ce936d431..09f5fb900 100644 --- a/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/index.rst @@ -15,9 +15,9 @@ the default set of files that learners are prohibited from submitting. ora2_blacklist For more information and examples of how course teams might set up an open -response assessment, see :ref:`Open Response Assessments Two` +response assessment, see :ref:`Open Response Assessments` in the *Building and Running an Open edX Course* guide. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst index f40e69f4f..b75c123f6 100644 --- a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_blacklist.rst @@ -1,5 +1,5 @@ -.. include:: /links.rst +.. include:: /links.txt .. _Configuring ORA2 to Prohibit Submission of File Types: diff --git a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst index 4db449b29..35c4826c1 100644 --- a/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst +++ b/source/site_ops/install_configure_run_guide/configuration/ora2/ora2_uploads.rst @@ -1,4 +1,4 @@ -.. include:: /links.rst +.. include:: /links.txt .. _Configuring ORA2 to Upload Files to Alternative Storage Systems: diff --git a/source/site_ops/install_configure_run_guide/configuration/password.rst b/source/site_ops/install_configure_run_guide/configuration/password.rst index 3561dc43f..d8877038d 100644 --- a/source/site_ops/install_configure_run_guide/configuration/password.rst +++ b/source/site_ops/install_configure_run_guide/configuration/password.rst @@ -104,4 +104,4 @@ to the ``lms.yml`` configuration file. AUTH_PASSWORD_VALIDATORS: - NAME: path.to.module.MyPasswordValidatorClass -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst b/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst index b7f5214fa..481d251f3 100644 --- a/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst +++ b/source/site_ops/install_configure_run_guide/configuration/static_replace/cdn.rst @@ -69,4 +69,4 @@ After you configure your CDN, follow these steps. #. Select **Save**. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst index fd783c56a..8ba249a33 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_SAML_SP.rst @@ -165,4 +165,4 @@ specified for it. That backend is required before you can add SAML IdPs. To verify that the SAML authentication backend is loaded on a devstack or fullstack installation, review the ``/edx/app/edxapp/lms.yml`` file. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst index f9be0cf82..e76ce8511 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_behavior.rst @@ -73,4 +73,4 @@ Linking Accounts * Create a new account. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst index 756462f30..908358990 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_eliminating_pii.rst @@ -52,7 +52,7 @@ profiles. For more information, see The following diagram shows how an IdP can direct a learner to an Open edX site to create a learner account, without transmitting any PII. -.. image:: ../../../../shared/images/tpa-idp-create-non-personal-account.png +.. image:: ../../Images/tpa-idp-create-non-personal-account.png :width: 900 :alt: A diagram showing how an identity provider (IdP) service can create a learner account on an Open edX site without transmitting any personally @@ -75,7 +75,7 @@ The following diagram shows how an organization that uses third-party authentication can match non-personally identifying Open edX learner usernames with the records that the organization holds for those learners. -.. image:: ../../../../shared/images/tpa-institution-associate-edx-id-with-personal-id.png +.. image:: ../../Images/tpa-institution-associate-edx-id-with-personal-id.png :width: 900 :alt: A diagram showing how an organization that uses third-party authentication can match non-personally identifying Open edX learner @@ -229,4 +229,4 @@ edX user IDs found in reports or analytics back to these opaque organization user identifiers. Organization partners can then convert each opaque user identifier back to the official learner ID. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst index fc8f1599d..8796cc573 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_SAML_IdP.rst @@ -177,4 +177,4 @@ steps. :alt: Screen shot of the list of enabled IdPs. Each IdP name is linked to the sign in page for the corresponding authentication system. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst index 9fe4cd3ce..9e8a1778d 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_integrate_open/tpa_oauth.rst @@ -471,4 +471,4 @@ Users can now sign in using this OAuth2 provider. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst index 652e948ef..47c8fbad4 100644 --- a/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst +++ b/source/site_ops/install_configure_run_guide/configuration/tpa/tpa_providers.rst @@ -80,4 +80,4 @@ edX site and the system that is the LTI tool consumer. For more information, see :ref:`Options for LTI Authentication and User Provisioning` and :ref:`Configuring Open edX for LTI Authentication`. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/transcripts.rst b/source/site_ops/install_configure_run_guide/configuration/transcripts.rst index b0612266c..47a84efc6 100644 --- a/source/site_ops/install_configure_run_guide/configuration/transcripts.rst +++ b/source/site_ops/install_configure_run_guide/configuration/transcripts.rst @@ -37,4 +37,4 @@ the ``edx-platform`` directory. #. Save the ``lms.yml`` and ``studio.yml`` files. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst b/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst index 411201e6c..3374a21d2 100644 --- a/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst +++ b/source/site_ops/install_configure_run_guide/configuration/updating_platform.rst @@ -15,4 +15,4 @@ If you need to change settings on a running server, take the following steps. #. Reroute traffic from the old server to the new server. #. Decommission the old server. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst b/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst index b5fb6c598..7b5f52663 100644 --- a/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst +++ b/source/site_ops/install_configure_run_guide/configuration/youtube_api.rst @@ -122,4 +122,4 @@ steps. #. Save and close the file. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst index 02af247c2..b39e9791b 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/gate_ecommerce.rst @@ -68,4 +68,4 @@ If you want to make a feature permanent, remove its feature gate from relevant code and tests, and delete the gate from the database. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst index 5913ff181..03b63453c 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/send_notifications.rst @@ -58,4 +58,4 @@ context)`` method. This method is implemented in -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst index 0f6fbb595..a26a8671f 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/additional_features/track_data.rst @@ -9,4 +9,4 @@ The E-Commerce service uses `Segment`_ to collect business intelligence data. To emit events to your Segment project, specify your Segment project's API key as the value of the ``SEGMENT_KEY`` setting. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst index da6234465..f9f58b4e4 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_coupons.rst @@ -646,5 +646,5 @@ the invoice status. For more information about the way that the E-Commerce service manages orders, see :ref:`Manage Orders`. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst index 1904c6914..27c121d3b 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_course_seats.rst @@ -6,7 +6,7 @@ Create Course Seats A course seat represents an enrollment track, sometimes called an enrollment mode. For information about the enrollment tracks that edX offers, see -:ref:`enrollment track`. +:term:`Enrollment track`. You create course seats by creating a course on the **Create New Course** page in the E-Commerce Course Administration tool, which is located at @@ -73,4 +73,4 @@ To create a course seat, follow these steps. #. Select **Create Course**. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst index 8d3d70850..54cf1b10d 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_enrollment_codes.rst @@ -61,4 +61,4 @@ link to a .csv file. The .csv file lists the enrollment codes. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst index d877ef710..91406bca5 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_products_overview.rst @@ -7,7 +7,7 @@ Creating Products Overview The edX platform offers several types of products. You create these products in E-Commerce web pages. -* Course seats represent an :ref:`enrollment track`. Each +* Course seats represent an :term:`Enrollment track`. Each course seat has an associated set of attributes, such as price and certificate availability. The edX code uses course seats to determine how a given enrollment should be handled. For more information, see :ref:`Create @@ -54,4 +54,4 @@ site. Follow these steps to start the E-Commerce service. on port 8000. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst index 985960bc4..0380c86e9 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_program_offers.rst @@ -47,4 +47,4 @@ To create a program offer, follow these steps. #. Select **Create Program Offer**. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst index 530b16b6b..2ac20aaf2 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/create_programs.rst @@ -87,4 +87,4 @@ To add a program, follow these steps. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst index dc382ab1c..8ece65366 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/create_products/index.rst @@ -22,4 +22,4 @@ information, see the following topics. create_programs create_program_offers -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst index e9d28de4e..71d01dfc7 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/enable_receipt_page.rst @@ -44,4 +44,4 @@ steps. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst index e4c4f5404..9802512d0 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/index.rst @@ -40,7 +40,7 @@ information, see :ref:`Additional Ecommerce Features`. -.. include:: /links.rst +.. include:: /links.txt .. TODO .. - Oscar Dashboard diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst index 18edc6bc1..bec08ba2b 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/install_ecommerce.rst @@ -353,4 +353,4 @@ guest. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst index fb1c2f78c..675825604 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_assets.rst @@ -45,4 +45,4 @@ If you create new pages that have RequireJS dependencies, remember to add your new JavaScript modules to the RequireJS build file for the project. This is the ``build.js`` file. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst index 985a52ae0..c23b5afd4 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/manage_orders.rst @@ -79,5 +79,5 @@ status indicating the reason for the failure. If you have enabled asynchronous order fulfillment, the service tries again to fulfill the order. You can also manually retry fulfillment of a failed order from the `Oscar`_ order dashboard. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst index 5113dec9e..7549d8444 100644 --- a/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst +++ b/source/site_ops/install_configure_run_guide/ecommerce-deprecated/test_ecommerce.rst @@ -111,7 +111,8 @@ these tests, place your tests in the ``ecommerce/static/js/test/specs`` directory, and add a ``_spec`` suffix. For example, your test name may be ``ecommerce/static/js/test/specs/course_list_view_spec.js``. -All JavaScript code must adhere to standards outlined in the `edX JavaScript Style Guide`_. These standards are enforced using `ESLint`_. +All JavaScript code must adhere to standards outlined in the `edX JavaScript Style Guide`_. +These standards are enforced using :ref:`ESLint`. * To run all JavaScript unit tests and linting checks, run the following command. @@ -386,4 +387,4 @@ environment, you might run the following command. $ ECOMMERCE_URL_ROOT="https://ecommerce.stage.edx.org" LMS_URL_ROOT="https://courses.stage.edx.org" LMS_USERNAME="" LMS_EMAIL="" LMS_PASSWORD="" ACCESS_TOKEN="" LMS_HTTPS="True" LMS_AUTO_AUTH="False" PAYPAL_EMAIL="" PAYPAL_PASSWORD="" BASIC_AUTH_USERNAME="" BASIC_AUTH_PASSWORD="" HONOR_COURSE_ID="" VERIFIED_COURSE_ID="" make e2e -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst b/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst index cd6d1a2dd..eec43e11c 100644 --- a/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst +++ b/source/site_ops/install_configure_run_guide/feature_flags/feature_flag_index.rst @@ -4,7 +4,6 @@ Index of Open edX Feature Flags ############################### -For more information abut feature flags, see `Open edX Feature Flags`_ -in the `edx-platform documentation`_. +For more information abut feature flags, see :doc:`edx-platform:references/featuretoggles`. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/front_matter/browsers.rst b/source/site_ops/install_configure_run_guide/front_matter/browsers.rst index 7f2a1b17d..60cf6fcb7 100644 --- a/source/site_ops/install_configure_run_guide/front_matter/browsers.rst +++ b/source/site_ops/install_configure_run_guide/front_matter/browsers.rst @@ -1 +1,5 @@ -.. include:: ../../../shared/browsers.rst \ No newline at end of file +######################## +Open edX Browser Support +######################## + +See :ref:`Browsers` \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst b/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst index 5327b5a0d..f687c2163 100644 --- a/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst +++ b/source/site_ops/install_configure_run_guide/front_matter/getting_help.rst @@ -48,4 +48,4 @@ best what information they need to solve the problem. .. _Getting Help page: https://open.edx.org/getting-help .. _openedx-ops: http://groups.google.com/forum/#!forum/openedx-ops -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/front_matter/index.rst b/source/site_ops/install_configure_run_guide/front_matter/index.rst index ab97ceaaa..bbc7dda3d 100644 --- a/source/site_ops/install_configure_run_guide/front_matter/index.rst +++ b/source/site_ops/install_configure_run_guide/front_matter/index.rst @@ -7,6 +7,5 @@ General Information read_me getting_help - preface browsers diff --git a/source/site_ops/install_configure_run_guide/front_matter/preface.rst b/source/site_ops/install_configure_run_guide/front_matter/preface.rst deleted file mode 100644 index 2185b5656..000000000 --- a/source/site_ops/install_configure_run_guide/front_matter/preface.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../../shared/preface.rst \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/front_matter/read_me.rst b/source/site_ops/install_configure_run_guide/front_matter/read_me.rst index 3604b6f0e..26ac91ddf 100644 --- a/source/site_ops/install_configure_run_guide/front_matter/read_me.rst +++ b/source/site_ops/install_configure_run_guide/front_matter/read_me.rst @@ -6,10 +6,6 @@ The *Installing and Configuring the Open edX Platform* documentation is created using RST_ files and Sphinx_. As a member of the community, you can help update and revise this documentation project on GitHub. -https://github.com/openedx/edx-documentation/tree/master/en_us/install_operations/source +See the :ref:`Documentor's Home` for more information on how to contribute to the docs! -The edX documentation team welcomes contributions from Open edX community -members. You can find guidelines for how to `contribute to edX Documentation`_ -in the GitHub edx/edx-documentation repository. - -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/index.rst b/source/site_ops/install_configure_run_guide/index.rst index eb4b47914..7fd7623de 100755 --- a/source/site_ops/install_configure_run_guide/index.rst +++ b/source/site_ops/install_configure_run_guide/index.rst @@ -7,7 +7,7 @@ Installing, Configuring, and Running the Open edX Platform This guide provides instructions for using your own instance of the Open edX platform and associated applications. -The most recent Open edX release will be found on the `Open edX Named Releases page`_. +The most recent Open edX release will be found on the :ref:`Open edX Release Notes`. It is strongly recommended to use `Tutor`_ for both development and installation. It is also recommended to stay up-to-date with the latest Open edX release, as previous releases are unsupported by the community. See the `Open edX Release Schedule`_ @@ -42,4 +42,4 @@ release. insights/index mobile-deprecated -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst b/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst index 494113374..41fa2d982 100644 --- a/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst +++ b/source/site_ops/install_configure_run_guide/insights/elastic_mapreduce.rst @@ -398,5 +398,5 @@ duplication. For more information, see the `edX Analytics Installation`_ wiki page. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/insights/index.rst b/source/site_ops/install_configure_run_guide/insights/index.rst index e137e56f7..a2f994b4f 100644 --- a/source/site_ops/install_configure_run_guide/insights/index.rst +++ b/source/site_ops/install_configure_run_guide/insights/index.rst @@ -11,7 +11,7 @@ Adding edX Insights (Deprecated) of running analytics on your Open edX instance. The following topics provide information about installing, configuring, and -running `edX Insights`_ and its dependencies in a production environment. +running edX Insights and its dependencies in a production environment. .. toctree:: :maxdepth: 1 @@ -24,5 +24,5 @@ progress. This section presents the introductory, overview material that is available now. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/insights/install_insights.rst b/source/site_ops/install_configure_run_guide/insights/install_insights.rst index 76f7cf05e..a5601f63e 100644 --- a/source/site_ops/install_configure_run_guide/insights/install_insights.rst +++ b/source/site_ops/install_configure_run_guide/insights/install_insights.rst @@ -36,7 +36,7 @@ Analytics Data API and presents the data to course team members. Architecture Diagram ======================== -.. image:: /Images/Analytics_Pipeline.png +.. image:: ../Images/Analytics_Pipeline.png :alt: Image showing the relationships between various components of the edX analytics data pipeline. :width: 800 @@ -216,7 +216,7 @@ Large Scale Using Elastic MapReduce A large scale deployment consists of a single master node, several core nodes, and many task nodes deployed into a public subnet of a Virtual Private Cloud. -.. image:: /Images/Analytics_AWS_Deployment.png +.. image:: ../Images/Analytics_AWS_Deployment.png :alt: Image showing all of the AWS components needed to run a large scale deployment of the edX analytics data pipeline. @@ -244,4 +244,4 @@ services are each deployed to at least one server. The Scheduler is deployed to another server. A MySQL database is deployed to a server that is configured to host a relational database. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/installation/index.rst b/source/site_ops/install_configure_run_guide/installation/index.rst index bc0ae6770..0d34978c3 100644 --- a/source/site_ops/install_configure_run_guide/installation/index.rst +++ b/source/site_ops/install_configure_run_guide/installation/index.rst @@ -15,7 +15,7 @@ two decisions to make: * **Method**: How do you want to install it? ******************* -1. Choose a version +Choose a version ******************* There are two possibilities for the version to install: @@ -30,10 +30,10 @@ You should choose master only if you will be modifying the code and contributing it back, or if you need a feature or fix that is newer than the latest Open edX release. If you aren't planning to contribute changes, and you don't need the absolute latest code, use the latest official Open edX release. -Details of the releases are on the `Open edX Named Releases page`_. +Details of the releases are on the :ref:`Open edX Release Notes`. ******************************** -2. Choose an installation method +Choose an installation method ******************************** **`Tutor`_**: is the community-supported Docker-based environment @@ -53,4 +53,4 @@ You can find more details on each of the methods below: tutor -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/installation/tutor.rst b/source/site_ops/install_configure_run_guide/installation/tutor.rst index d38f03a0e..4a5f39d84 100644 --- a/source/site_ops/install_configure_run_guide/installation/tutor.rst +++ b/source/site_ops/install_configure_run_guide/installation/tutor.rst @@ -9,4 +9,4 @@ Tutor is the community-supported installation method as of Lilac. In order to avoid unnecessary duplication of information, please refer to the official `Tutor`_ documentation for details of how to use it. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/mobile-deprecated.rst b/source/site_ops/install_configure_run_guide/mobile-deprecated.rst index 8fbca8a4c..f357ef3bc 100644 --- a/source/site_ops/install_configure_run_guide/mobile-deprecated.rst +++ b/source/site_ops/install_configure_run_guide/mobile-deprecated.rst @@ -255,4 +255,4 @@ directories and files, see the GitHub repositories for `iOS`_ and `Android`_. #. Save the file. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/mobile.rst b/source/site_ops/install_configure_run_guide/mobile.rst index 50db7a69a..e9baed70b 100644 --- a/source/site_ops/install_configure_run_guide/mobile.rst +++ b/source/site_ops/install_configure_run_guide/mobile.rst @@ -25,4 +25,4 @@ Mobile Documentation * `Manage iOS Configuration `_ -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/birch.rst b/source/site_ops/install_configure_run_guide/platform_releases/birch.rst index b8d75bdaa..62ab95c02 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/birch.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/birch.rst @@ -1,5 +1,3 @@ -.. _Open edX Birch Release: - ######################################## Open edX Birch Release ######################################## @@ -8,7 +6,7 @@ Open edX Birch Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -91,4 +89,4 @@ cleans up extra files and directories when it finishes running. After upgrading Open edX to the Birch release, run the edX Platform and verify that course content and data was migrated correctly. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst b/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst index c61cb611d..5bb55871b 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/cypress.rst @@ -1,5 +1,3 @@ -.. _Open edX Cypress Release: - ######################################## Open edX Cypress Release ######################################## @@ -8,7 +6,7 @@ Open edX Cypress Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -99,4 +97,4 @@ After upgrading Open edX to the Cypress release, start the LMS and Studio and verify that course content and data was migrated correctly. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst b/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst index 3ae6e6bee..052188ef0 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/dogwood.rst @@ -1,5 +1,3 @@ -.. _Open edX Dogwood Release: - ######################################## Open edX Dogwood Release ######################################## @@ -8,7 +6,7 @@ Open edX Dogwood Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -41,7 +39,7 @@ What Is the Dogwood Git Tag? A Git tag identifies the version of Open edX code that is the Dogwood release. You can find the most up-to-date Git tag for the current Open edX release on -the `Open edX Releases Wiki page`_. +:ref:`Open edX Release Notes`. The following Open edX Git repositories have the Dogwood Git tag. @@ -94,7 +92,7 @@ edX, run the upgrade script for your type of installation. ``./migrate.sh -c fullstack -t named-release/dogwood``. You can find the most up-to-date Git tag for the current Open edX release on -the `Open edX Releases Wiki page`_. +:ref:`Open edX Release Notes`. You can also run ``./migrate.sh -h`` to see which other options the script accepts. @@ -190,4 +188,4 @@ those steps using your desired Dogwood tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst b/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst index 0286925c8..632d27a6f 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/eucalyptus.rst @@ -1,5 +1,3 @@ -.. _Open edX Eucalyptus Release: - ######################################## Open edX Eucalyptus Release ######################################## @@ -8,7 +6,7 @@ Open edX Eucalyptus Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -37,7 +35,7 @@ What Is the Eucalyptus Git Tag? A Git tag identifies the version of Open edX code that is the Eucalyptus release. You can find the most up-to-date Git tag for the current Open edX release on -the `Open edX Releases Wiki page`_. +:ref:`Open edX Release Notes`. The following Open edX Git repositories have the Eucalyptus Git tag. @@ -96,7 +94,7 @@ edX, run the upgrade script for your type of installation. * For fullstack, run ``bash upgrade.sh -c fullstack``. You can find the most up-to-date Git tag for the current Open edX release on -the `Open edX Releases Wiki page`_. +:ref:`Open edX Release Notes`. You can also run ``bash upgrade.sh -h`` to see which other options the script accepts. @@ -137,5 +135,5 @@ those steps using your desired Eucalyptus tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst b/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst index 24b0dad5b..c2276b750 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/ficus.rst @@ -1,5 +1,3 @@ -.. _Open edX Ficus Release: - ###################### Open edX Ficus Release ###################### @@ -8,7 +6,7 @@ Open edX Ficus Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -37,7 +35,7 @@ What Is the Ficus Git Tag? A git tag identifies the version of Open edX code that is the Ficus release. You can find the most up-to-date git tag for the current Open edX release on -the `Open edX Releases Wiki page`_. +:ref:`Open edX Release Notes`. The following Open edX git repositories have the Ficus git tag: @@ -91,4 +89,4 @@ upgrade from one Ficus release to another by re-running those steps using your desired Ficus tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst b/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst index 58c688fed..fe0ab288f 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/ginkgo.rst @@ -1,5 +1,3 @@ -.. _Open edX Ginkgo Release: - ######################## Open edX Ginkgo Release ######################## @@ -8,7 +6,7 @@ Open edX Ginkgo Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -36,7 +34,7 @@ What Is the Ginkgo Git Tag? A git tag identifies the version of Open edX code that is the Ginkgo release. You can find the most up-to-date git tag for the current Open edX release on -the `Open edX Releases Wiki page`_. +:ref:`Open edX Release Notes`. The following Open edX git repositories have the Ginkgo git tag: @@ -193,4 +191,4 @@ upgrade from one Ginkgo release to another by re-running those steps using your desired Ginkgo tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst b/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst index 79bb99d62..a2c360340 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/hawthorn.rst @@ -1,5 +1,3 @@ -.. _Open edX Hawthorn Release: - ######################### Open edX Hawthorn Release ######################### @@ -8,7 +6,7 @@ Open edX Hawthorn Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -53,7 +51,7 @@ A git tag identifies the version of Open edX code that is the Hawthorn release. About two dozen repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Hawthorn on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. ******************************* Installing the Hawthorn Release @@ -64,7 +62,7 @@ You can install the Open edX Hawthorn release using either Native Installation`_ instructions. Hawthorn releases have git tag names like ``open-release/hawthorn.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. .. _upgrade_ginkgo: @@ -174,4 +172,4 @@ upgrade from one Hawthorn release to another by re-running those steps using your desired Hawthorn tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst b/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst index 281b4325a..a12f8052c 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/ironwood.rst @@ -1,5 +1,3 @@ -.. _Open edX Ironwood Release: - ######################### Open edX Ironwood Release ######################### @@ -8,7 +6,7 @@ Open edX Ironwood Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -41,7 +39,7 @@ A git tag identifies the version of Open edX code that is the Ironwood release. About two dozen repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Ironwood on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. ******************************* Installing the Ironwood Release @@ -52,7 +50,7 @@ You can install the Open edX Ironwood release using either Native Installation`_ instructions. Ironwood releases have git tag names like ``open-release/ironwood.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. .. _upgrade_hawthorn: @@ -161,4 +159,4 @@ upgrade from one Ironwood release to another by re-running those steps using your desired Ironwood tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst b/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst index 350890d73..6edb742e3 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/juniper.rst @@ -1,5 +1,3 @@ -.. _Open edX Juniper Release: - ######################### Open edX Juniper Release ######################### @@ -8,7 +6,7 @@ Open edX Juniper Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -41,7 +39,7 @@ A git tag identifies the version of Open edX code that is the Juniper release. About three dozen repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Juniper on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. ******************************* Installing the Juniper Release @@ -51,7 +49,7 @@ You can install the Open edX Juniper release using either `devstack`_ or the `Legacy Open edX Native Installation`_ instructions. Juniper releases have git tag names like ``open-release/juniper.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. *********************************** Upgrading from the Ironwood Release @@ -145,4 +143,4 @@ upgrade from one Juniper release to another by re-running those steps using your desired Juniper tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/koa.rst b/source/site_ops/install_configure_run_guide/platform_releases/koa.rst index dbe340f86..89d4857c8 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/koa.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/koa.rst @@ -1,5 +1,3 @@ -.. _Open edX Koa Release: - #################### Open edX Koa Release #################### @@ -8,7 +6,7 @@ Open edX Koa Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -41,7 +39,7 @@ A git tag identifies the version of Open edX code that is the Koa release. About three dozen repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Koa on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. ************************** Installing the Koa Release @@ -57,7 +55,7 @@ You can install the Open edX Koa release using either `devstack`_ or the Open edX Native Installation. Koa releases have git tag names like ``open-release/koa.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. ********************************** Upgrading from the Juniper Release @@ -155,4 +153,4 @@ upgrade from one Koa release to another by re-running those steps using your desired Koa tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/latest.rst b/source/site_ops/install_configure_run_guide/platform_releases/latest.rst index 11b11c114..612e68f44 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/latest.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/latest.rst @@ -4,7 +4,7 @@ Open edX Latest Platform Release ################################ -The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the +The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -12,4 +12,4 @@ only the most recent release is community-supported. See the `Open edX Release Schedule`_ for information on release dates and end-of-life support. -.. include:: /links.rst \ No newline at end of file +.. include:: /links.txt \ No newline at end of file diff --git a/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst b/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst index 3e837e968..d2cb2a4a3 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/lilac.rst @@ -1,5 +1,3 @@ -.. _Open edX Lilac Release: - ###################### Open edX Lilac Release ###################### @@ -8,7 +6,7 @@ Open edX Lilac Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -41,7 +39,7 @@ A git tag identifies the version of Open edX code that is the Lilac release. About three dozen repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Lilac on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. **************************** Installing the Lilac Release @@ -53,11 +51,11 @@ Installing the Lilac Release See `Tutor installation instructions `_. -You can install the Open edX Lilac release using the `Open edX Installation`_ -instructions. +You can install the Open edX Lilac release using the Open edX Installation +instructions (`Tutor`_). Lilac releases have git tag names like ``open-release/lilac.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. ****************************** Upgrading from the Koa Release @@ -158,4 +156,4 @@ upgrade from one Lilac release to another by re-running those steps using your desired Lilac tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/maple.rst b/source/site_ops/install_configure_run_guide/platform_releases/maple.rst index 2fe50bdaa..2d47ff56f 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/maple.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/maple.rst @@ -1,5 +1,3 @@ -.. _Open edX Maple Release: - ###################### Open edX Maple Release ###################### @@ -8,7 +6,7 @@ Open edX Maple Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -41,7 +39,7 @@ A git tag identifies the version of Open edX code that is the Maple release. About three dozen repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Maple on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. **************************** Installing the Maple Release @@ -54,7 +52,7 @@ Installing the Maple Release See `Tutor installation instructions `_. Maple releases have git tag names like ``open-release/maple.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. ********************************* Upgrading from the Lilac Release @@ -91,4 +89,4 @@ upgrade from one Maple release to another by re-running those steps using your desired Maple tag as the new value for ``OPENEDX_RELEASE``. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst b/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst index e918ed712..b3b4f62e4 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/nutmeg.rst @@ -1,5 +1,3 @@ -.. _Open edX Nutmeg Release: - ####################### Open edX Nutmeg Release ####################### @@ -8,7 +6,7 @@ Open edX Nutmeg Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -41,7 +39,7 @@ A git tag identifies the version of Open edX code that is the Nutmeg release. About three dozen repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Nutmeg on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. ***************************** Installing the Nutmeg Release @@ -54,7 +52,7 @@ Installing the Nutmeg Release See `Tutor installation instructions `_. Nutmeg releases have git tag names like ``open-release/nutmeg.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. ******************************** Upgrading from the Maple Release @@ -86,4 +84,4 @@ migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. -.. include:: /links.rst +.. include:: /links.txt diff --git a/source/site_ops/install_configure_run_guide/platform_releases/olive.rst b/source/site_ops/install_configure_run_guide/platform_releases/olive.rst index cdd3da14b..25599fcee 100644 --- a/source/site_ops/install_configure_run_guide/platform_releases/olive.rst +++ b/source/site_ops/install_configure_run_guide/platform_releases/olive.rst @@ -1,5 +1,3 @@ -.. _Open edX Olive Release: - ###################### Open edX Olive Release ###################### @@ -8,7 +6,7 @@ Open edX Olive Release This release is unsupported. - The `Open edX Named Releases page`_ and the `Open edX Releases Homepage`_ are the + The :ref:`Open edX Release Notes` and the :ref:`Open edX Release Notes` are the authoratative sources of information on all Open edX releases. It is *strongly* recommended to operate off the latest Open edX release at all points in time, as only the most recent release is community-supported. @@ -40,7 +38,7 @@ A git tag identifies the version of Open edX code that is the Olive release. Over fourty repositories are tagged as part of an Open edX release. Many other repositories are installed as dependencies of those repositories. You can find the most up-to-date git tag for Olive on the -`Open edX Named Releases page`_. +:ref:`Open edX Release Notes`. **************************** Installing the Olive Release @@ -53,7 +51,7 @@ Installing the Olive Release See `Tutor installation instructions `_. Olive releases have git tag names like ``open-release/olive.1``. -The available names are detailed on the `Open edX Named Releases page`_. +The available names are detailed on the :ref:`Open edX Release Notes`. ********************************* Upgrading from the Nutmeg Release @@ -85,4 +83,4 @@ migrate to Tutor. This `Native Installation to Tutor forum post`_ may be helpful as may be `this second Native to Tutor post`_. If not, post on the `Open edX Forums`_. -.. include:: /links.rst +.. include:: /links.txt