From 7fbab3d8e6e745dc107ec0c362fe87f775ce1f41 Mon Sep 17 00:00:00 2001 From: dennis Date: Sun, 1 May 2011 22:33:56 +0000 Subject: [PATCH] Plug-in Evaluations: Work on user interface. See eval_help.html for current status and 'To Do' List. --- plugins/evaluations/docs/eval_help.html | 952 ++++++++++++------ plugins/evaluations/docs/images/AWS.jpg | Bin 0 -> 40841 bytes .../docs/images/AppersonScoreForm.jpg | Bin 0 -> 77544 bytes .../evaluations/docs/images/BenchMark3000.jpg | Bin 0 -> 48721 bytes plugins/evaluations/eval_calc_scores.php | 63 +- plugins/evaluations/eval_criteria.php | 9 +- plugins/evaluations/eval_export.php | 3 +- plugins/evaluations/eval_import.php | 3 +- plugins/evaluations/eval_levels.php | 14 +- plugins/evaluations/eval_link_sfiab.php | 18 +- plugins/evaluations/eval_menu_inc.php | 20 +- plugins/evaluations/eval_schemes.php | 9 +- plugins/evaluations/eval_uploader.php | 4 + plugins/evaluations/eval_webentry.php | 210 ++-- 14 files changed, 829 insertions(+), 476 deletions(-) create mode 100644 plugins/evaluations/docs/images/AWS.jpg create mode 100644 plugins/evaluations/docs/images/AppersonScoreForm.jpg create mode 100644 plugins/evaluations/docs/images/BenchMark3000.jpg diff --git a/plugins/evaluations/docs/eval_help.html b/plugins/evaluations/docs/eval_help.html index f54e570..c1b10eb 100644 --- a/plugins/evaluations/docs/eval_help.html +++ b/plugins/evaluations/docs/eval_help.html @@ -23,363 +23,681 @@ -Untitled Document - - - -

Welcome to Evaluations Help

-

Return to Evaluations

-

Introduction:   An overview of Evaluations plug-in for SFIAB

-

Installation:  How to Install Evaluations plug-in

-

Process:    The typical process used in Evaluations plug-in

-

Setup:   How to set up the evaluations schemes for your event.

-

- Step by Step:  Details about the administrative actions (steps) in the Evaluations process.

-

Examples:  Examples of setting up Evaluations for different types of project evaluations and scoring.

-

Tables:   Details about the database tables used in Evaluations.

-

Apperson Scanner:   How to setup SFIAB to use - the Apperson Education Products Benchmark 3000 Scanner.

-

 

+SFIAB Evaluations Help + + + + +

Welcome to Evaluations Help

+

+ Return to Evaluations

+

Introduction:   An overview of + Evaluations plug-in for SFIAB

+

Installation:  How to Install Evaluations plug-in

+

+ Process:    The typical process used in Evaluations plug-in

+

+ Setup:   How to set up the evaluations schemes for your event.

+

+ Step by Step:  Details about the administrative actions (steps) in the + Evaluations process.

+

+ Examples:  Examples of setting up Evaluations for different types of + project evaluations and scoring.

+

+ Tables:   Details about the database tables used in Evaluations.

+

Apperson Scanner:   How to setup SFIAB to use + the Apperson Education Products Benchmark 3000 Scanner.

+

 

NOTE:  The Evaluations plugin should be 'functional' at this time but not secured. Until security is incorporated, it should not be used on real data.  I will need James to help implement security.
To Do list:  (in order of importance - sort of):

 

-

Introductiong>

-

Evaluations is a plug-in to SFIAB.  That means you can add it to your current version of SFIAB with - minimal changes to your current SFIAB version.  No changes will be made to - your current SFIAB data. In other words, no matter where you are in the SFIAB process for your event, you can add and take advantage of Evaluations and not worry about it creating problems.  If you decide to not use it in the future you can 'unplug' it without any effect on your current setup or data.
-

-

There are two changes in the configuration of SFIAB that must be implemented - during the installing of Evaluations:
- SFIAB must be configured for judging as follows:
- - the table config must have an entry with var =  'score_entry_enable' and val = 'yes'
- - the table judges_teams_timeslots_projects_link must have a field 'score'  Float  length 5.2  null=yes
-Configuring SFIAB in this manner will also enable the necessary links in the admin menu and the judges menu for using Evaluations. This is the SFIAB configuration used my one or more fairs in the past. -

-

Evaluations provides a very configurable method of capturing 'scores' for your projects.  You can configure multiple schemes used for scoring!  For each scheme you design the evaluation criteria to use, the weighting for each criteria and the levels (choices) judges can select from for each criteria. With multiple schemes you can design a completely different method of evaluation for each different type of projects (i.e. senior divisions versus junior divisions, team projects, etc.)  When your organization changes the way they want you to evaluate projects, just change the Evaluations setup.

-

Evaluations provides several methods of collecting your judge teams (judges) evaluations.  Web pages are built for each scheme for entry on the web.  CSV files are created for use with scanners or for creating your own forms to be used by the judge teams (judges)

-

And, all the calculations are done for you. Evaluations uses the information in your setup to calculate scores from the entries made by the judges. The code works for all combinations of possible schemes - it all driven by the tables. So, once you can set up your scheme(s) Evaluations can do the math.   A unique averaging method is used when you collect more than one evaluation for each project so all the valid data is used, even if one judge team leaves out a mark or makes multiple marks on their evaluations forms (i.e. when using scanners).. 

-


-

-

Process

-

The process in a nutshell is:

-

1. Install Evaluations plug-in:

-

2. Set up your evaluation schemes, criteria and values:

-

3. After all your projects and judge teams are configured - Link - Evaluations to your SFIAB data.

-

4. If required, Export the necessary data for use by external - programs or scanners to collect the evaluations:
-      - CSV files are created for download for your use in programming scanners and pre slug of the scanner forms
-     -  CSF files can be use to create your own evaluation forms.

-

5. The judge teams (judges) do the evaluations and 'mark' the appropriate level for each of the criteria for the scheme that applies to the project.

- -

6. The data is collected into a table in Evaluations. 

- -

7. The data is processed (a button push). 

- -

8. If a caucus of the judge team requires some adjustments to the evaluations scores, that is accomplished by the team leader (chair person) - resulting in the final score for the project.

-

9. Reports and or CSV files are available for the final results.

-

10.  A tool is provided to facilitate assigning the winners of some of the category awards (1st, 2nd, 3rd prizes and honorable mentions) where those winners simply rely on the ranking results.

-

 

-

Setup

-

It is imperative you understand how to correctly setup Evaluations for your event.  With that in mind we will try our best to explain how the setup works and the various options that are available.

-

Definitions:

+

Introduction

+

Evaluations is a plug-in to SFIAB.  That means you can add it + to your current version of SFIAB with minimal changes to your current SFIAB + version.  No changes will be made to your current SFIAB data. In other + words, no matter where you are in the SFIAB process for your event, you can add + and take advantage of Evaluations and not worry about it creating problems.  + If you decide to not use it in the future you can 'unplug' it without any effect + on your current setup or data.
+

+

There are two changes in the configuration of SFIAB that must be + implemented during the installing of Evaluations:
+ SFIAB must be configured for judging as follows:
+  - the table config must have an entry with var =  'score_entry_enable' and + val = 'yes'
+  - the table judges_teams_timeslots_projects_link must have a field 'score'  + Float  length 5.2  null=yes
+ Configuring SFIAB in this manner will also enable the necessary links in the + admin menu and the judges menu for using Evaluations. This is the SFIAB + configuration used my one or more fairs in the past. +

+

Evaluations provides a very configurable method of capturing + 'scores' for your projects.  You can configure multiple schemes used for + scoring!  For each scheme you design the evaluation criteria to use, the + weighting for each criteria and the levels (choices) judges can select from for + each criteria. With multiple schemes you can design a completely different + method of evaluation for each different type of projects (i.e. senior divisions + versus junior divisions, team projects, etc.)  When your organization + changes the way they want you to evaluate projects, just change the Evaluations + setup.

+

Evaluations provides several methods of collecting your judge teams + (judges) evaluations.  Web pages are built for each scheme for entry on the + web.  CSV files are created for use with scanners or for creating your own + forms to be used by the judge teams (judges)

+

And, all the calculations are done for you. Evaluations uses the + information in your setup to calculate scores from the entries made by the + judges. The code works for all combinations of possible schemes - it all driven + by the tables. So, once you can set up your scheme(s) Evaluations can do the + math.   A unique averaging method is used when you collect more than + one evaluation for each project so all the valid data is used, even if one judge + team leaves out a mark or makes multiple marks on their evaluations forms (i.e. + when using scanners).. 

+


+

+

Process

+

The process in a nutshell is:

+

1. Install Evaluations plug-in:

+

2. Set up your evaluation schemes, criteria and values:

+

3. After all your projects and judge teams are configured - Link + Evaluations to your SFIAB data.

+

4. If required, Export the necessary data for use by external + programs or scanners to collect the evaluations:
+      - CSV files are created for download for your use in + programming scanners and pre slug of the scanner forms
+     -  CSF files can be use to create your own evaluation + forms.

+

5. The judge teams (judges) do the evaluations and 'mark' the + appropriate level for each of the criteria for the scheme that applies to the + project.

+ +

6. The data is collected into a table in Evaluations. 

+ +

7. The data is processed (a button push). 

+ +

8. If a caucus of the judge team or the official responsible for a + particular division requires some adjustments to the + evaluations scores, that is accomplished by the team leaders (chair persons or + other officials) - + resulting in the final scores for the projects in each division.

+

9. Reports and or CSV files are available for the final results.

+

10.  A tool is (TBD) provided to facilitate assigning the winners of + some of the category awards (1st, 2nd, 3rd prizes and honorable mentions) where + those winners simply rely on the divisional ranking results.

+

 

+

Setup

+

It is imperative you understand how to correctly setup Evaluations + for your event.  With that in mind we will try our best to explain how the + setup works and the various options that are available.

+

Definitions:

Scheme: A method of evaluating a set of projects - - perhaps differently than other projects.  For instance you might have a scheme for team projects and another scheme for non-team projects.  Or, you might have different schemes for each division in your event. Each scheme has a specific set of criteria, criteria weights and evaluation levels (choices) used to evaluate a project and then to calculate a score for that project. Each project is assigned a scheme. You can have as many schemes as you like. Each scheme has an id, a name and a selection statement. The selection statement is used to select which scheme is used for each project.  The selection statement has three parts. the - 'item', the 'condition' and the 'value' - like 'div > 1'.  Each project that matches the selection statement of one of the schemes is assigned that scheme. Here are a couple of examples of schemes:

-

scheme id     name                selection statement           result
-1               ISEF scoring            team = no            projects with one student are assigned scheme id 1
-2               ISEF (Team)            team = yes          projects with two or more students are assigned scheme id 2

-

scheme id    name                selection statement           result            assumes we have 2 categories setup - Junior = 1,   Senior =2
- 1              Junior Category         cat = 1              projects with category id = 1 (junior) are assigned scheme id - 1.
- 2              Senior Category         cat > 1             projects with category id = 2 or higher are assigned scheme id - 2. (could use cat = 2 also)

-

'item': The 'item' part can have and of the following values:  (more can be added it your request but it requires a code change.)
-   team:  If the project has one student then the value of team is 'no'.   If the project has more than one student then the value of team is 'yes' 
-   cat:    This represents the setting of the category_id assigned to the project. You set up categories in SFIAB and each project gets assigned one of those categories. 
-   div:    This represents the setting of the division_id assigned to the project.  You set up divisions in SFIAB and each project gets assigned one of those divisions.
-   grade: This represents the grade of the project's student. For teams, grade is the grade of the team member with the highest grade.
-   -cwdiv: This represents the Canada wide science fair division id (cwsfdivisionid field in projects).

-

'condition':   You are allowed to use any one of these - symbols as the 'condition' part of the scheme selection criteria:
-=        Equal
- !=      Not Equal
- <       Less Than
- >       Greater Than -

-

'value:'  The 'value' part represents the value of the Field for each project.  For instance team can have a value of 'yes' or 'no'. Cat can have values like 0,1,2... - whatever you used for the Category Ids when you set up Age Categories in SFIAB. cwsfdivisionid has values those in Canada should understand.

-

So, you can setup criteria like   'team = yes'   or 'div = 1' or 'div < 3' or 'team != no'   etc. Except for team (value = 'yes' or 'no) it is important to use a value that is set up for that field in SFIAB else the scheme_id will not be set correctly in Evaluations projects data.

-

Criteria:  Each evaluation scheme will have a set of criteria.  These are what the judge team considers when comparing a project with other projects and with a standard. Examples of criteria are:  'Scientific Thought',  'Skill',  'Thoroughness', 'Teamwork', 'Research Skill', Etc.  You create the criteria for each scheme used for your event. In fact you can have different criteria and a different number of criteria for each scheme For instance, elementary school projects may require only two criteria - 'Scientific Approach'  'Completeness'  where as a senior school projects will require criteria of more relevance to the project advancing to the next level.

-

Levels:  Each evaluation scheme will have a set of levels.  Levels are like grades.  You determine the number of levels your evaluations will have and the value assigned to each level for each scheme. For instance you might have levels of A, B, C, D, F with values of 4,3,2,1,0 for one scheme and levels of Exceptional, Excellent, Very Good , Good, Acceptable with values of 5,4,3,2,1 for another scheme. The values do not have to be a sequence of integers but that works best. There are also optional 'special use' levels you can create that allow you to do error checking on the judges entries and take the appropriate action if the entry has errors.  Special use levels are not used in calculating a score. An example is to assign a 'special use'  level of 'No Entry' with a value of 0.  Then when a scanner or any other process used to collect entries detects that there is no mark for a criteria it can assign the value 0 to the entry and Evaluations knows to 1.) not use that criteria entry in the calculations and 2.) indicate the error in the status for that entry. The short 4 character level_code is then added to the status for that entry.  Setting a 'special use' level "MultipleMarks" with a value of 7 would allow the collection process (i.e. a scanner) to set that value when multiple entries are made for a criteria. Evaluations knows to not use that criteria's entry in the calculations and can indicate the error in the status.

-

Weighting:  Each criteria will have a weighing assigned in such a way that the sum of the weights for all the criteria to be used is = 100. Lets do an example:  Say one of your evaluations schemes has 4 levels -L1, L2, L3 and L4 with values of 1,2,3,4  and the scheme as 3 criteria C1, C2 and C3. with weights of 20,30, 50.  Note the weights add up to 100. Define level_value as the entry made by the judge for a given criteria.  It will be 1,2,3 or 4 in this example.  Also define max_level_val as the maximum level value used in calculating a score (i.e. not a 'special use' level)  In this example max_level_val = 4. Given all that, a score in this example is calculated as follows:

-

score =   ( C1.level_value * C1.weight + C2.level_value * C2.weight + C3.level_value * C3.weight) / ( max_level_val) 

-

If all level_values are = 4 (the perfect project), then:

-

perfectscore = (4*20 + 4*30 + 4*50) / 4

-

perfectscore = 80 + 120 + 200) /4

-

perfectscore = 400 / 4 = 100 

-

the lowest score for this scheme will be:

-

lowest score = (1*20 + 1* 30 + 1* 50) / 4 = 25

-

Note:  You may enter a criteria with a weight of '0'   - This allows keeping the number of criteria the same for each scheme. This - special case is used to provide compatibility with the Exported CSV files used to - pre slug the Apperson Education Products Benchmark 3000 scanners.

-

Setup:  Now that you understand (hopefully) the definitions we can explain how you set up 'Evaluations'
-Note: For now all setup is done in the tables.  This will be updated as I create the web pages for setup

-

1.) Decide how many schemes you will need.  Most events will use only one scheme, some will want two or more. Enter the schemes in table eval_schemes. enter the item, condition and value in the scheme's selection statement.

-

2.) For each scheme enter a record in eval_criteria for each criteria to be used for that scheme.

-

3.) For each scheme enter a record in eval_levels for each level to be used for that scheme.

-

For an example for ISEF evaluations (2010) see evaluations/db/db.eval.setup.isef.sql.  - This setup is compatible with the Apperson Education Products Benchmark 3000 - scanners.

-

 

-

Step By Step Process

-

Installation

-

To install Evaluations plug-in follow these steps:

- -

What the installation does:

- -

Link Evaluations to Data base:  For Evaluations to function it must be linked to the SFIAB data. This step creates (or updates) all the linkages so that Evaluations has the necessary information from SFIAB (read only) to accomplish the tasks designed into Evaluations.

-

Assign judge teams (or judges) to the projects they are to evaluate. The default here is to use the judge_team_projects assignments of SFIAB so it is important that these are setup in SFIAB and that you run the 'Link Evaluations' after they are setup to update the Evaluations information. Optionally, you can go thru a completely different assignment of judges to projects.  This feature is NOT IMPLEMENTED for revision 100 of Evaluations and will be implemented only if enough requests are generated.

-

Create the evaluations documents or files required to enter the evaluations.  This step can do several options.
- 1.)   A web form for each evaluation scheme is created automatically for each judge teams' assigned projects.  The form will have the following:
-         - an entry for the team (or judge) number doing the evaluation.  (one of the judge team members must be logged in.)
-         -  an entry (selection) of one of the assigned project numbers.
-         - a web form table is presented with bubbles to mark for the project as follows
-                      criteria     criteria       criteria ....
-            -level      [ ]            [ ]              [ ]
-            level      [ ]            [ ]              [ ]
-            -level      [ ]            [ ]              [ ]
-        -  a button to submit the evaluation entries

-

  2.)   CSV download files to be used by your organization to create your own web pages, or score forms or to pre slug standard forms or to import to scanners.  The files should have enough data to accomplish your process.  If not, request additional data be added.  (coding changes)
-   - 3.)   specific CSV files to be used to:
-             - Load the 'student' data into the Apperson Education Products Benchmark 3000 scanner (requires a specific scheme setup).
-             - - Pre slug the Apperson Education Products Benchmark 3000 'Science Fair evaluation'   forms.

-

Evaluate the projects:  During this time the judge teams (or judges) either mark the forms for your event, enter the evaluations on the web page or some other process to capture the required information.  For each project, each evaluation they need the following:
-   -  project number  (this is automatic in web page and Apperson scanner)
-   -  Team or judge number  (this is required to verify that that team or judge has been assigned to the project.
-   - a list of  criteria_id, level_id  pairs representing the evaluation of the project.  (automatic with Apperson scanner and web page)
-  - other optional items not yet designed.

-

Enter the evaluations:   the data from the evaluations is entered into Evaluations tables.  This is done by the web page, or an upload from the Apperson Scanner or by an upload of a CSV file(s) created by you with the correct specifications.   Details TBD.
-

-

Calculate the scores:   This is simply a button push. It calculates the individual score for each evaluation and... calculated the project's eval_score which is an average all of the evaluations for that project.

-

Enter the final scores:  After a caucus of the judge team(s) some adjustment will sometimes be required to the projects scores. This can be accomplished using a Evaluations web page
-

-

 

-

Examples

-

examples:  TBD

-

 

-

Tables

-

Table description  TBD   for now see the db.eval.full.100.sql file or browse the tables with phpmyadmin.

-

eval_projects:  Caution:   contains all projects, - even those not assigned.  (may change this later - or not)

-

eval_projects-entries.  A copy of - judges_teams_timeslots_projects_links with additional fields    - ( a record for each project - judge team assignment with the scheme_id, and an entry for the selected value_id during judging.

-

Setup SFIAB to use Apperson Scanner

-

If you want to use the Apperson Scanner - to record evaluation the following SFIAB setup rules must apply:

-

The main requirement is that the scanner - (and forms) require project numbers form 1 to 9999 and Judge numbers from 1 to - 9999
- To accomplish this the following must be true.
-   If the Category digit(s) are removed from the SFIAB project number the - resulting numbers must be unique.
+ perhaps differently than other projects.  For instance you might have a + scheme for team projects and another scheme for non-team projects.  Or, you + might have different schemes for each division in your event. Each scheme has a + specific set of criteria, criteria weights and evaluation levels (choices) used + to evaluate a project and then to calculate a score for that project. Each + project is assigned a scheme. You can have as many schemes as you like. Each + scheme has an id, a name and a selection statement. The selection statement is + used to select which scheme is used for each project.  The selection + statement has three parts. the 'item', the 'condition' and the 'value'. + For example + 'div > 1'.  Each part must be separated by one space character. Each project that matches the selection statement of one of the + schemes is assigned that scheme. Here are a couple of examples of schemes:

+

scheme id     name           +      selection statement           + result
+ 1              +  ISEF scoring            + team = no            + projects with one student are assigned scheme id 1
+ 2               + ISEF (Team)            + team = yes          projects with two or + more students are assigned scheme id 2

+

scheme id    name                + selection statement           + result            assumes we + have 2 categories setup - Junior = 1,   Senior =2
+ 1              + Junior Category         cat = 1              + projects with category id = 1 (junior) are assigned scheme id 1.
+ 2              + Senior Category        cat > 1             + projects with category id = 2 or higher are assigned scheme id 2. (could use cat + = 2 also)

+

'item': The 'item' part can have and of + the following values:  (more can be added it your request but it requires a + code change.)
+   team:  If the project has one student then the value of team is + 'no'.   If the project has more than one student then the value of + team is 'yes' 
+   cat:    This represents the setting of the category_id + assigned to the project. You set up categories in SFIAB and each project gets + assigned one of those categories. 
+   div:    This represents the setting of the division_id + assigned to the project.  You set up divisions in SFIAB and each project + gets assigned one of those divisions.
+   grade: This represents the grade of the project's student. For teams, + grade is the grade of the team member with the highest grade.
+   cwdiv: This represents the Canada wide science fair division id + (cwsfdivisionid field in projects).

+

'condition':   You are allowed to use + any one of these symbols as the 'condition' part of the scheme selection + criteria:
+ =        Equal
+ !=      Not Equal
+ <       Less Than
+ >       Greater Than +

+

'value:'  The 'value' part represents + the value of the Field for each project.  For instance team can have a + value of 'yes' or 'no'. Cat can have values like 0,1,2... - whatever you used + for the Category Ids when you set up Age Categories in SFIAB. cwsfdivisionid has + values those in Canada should understand.

+

So, you can setup criteria like   'team = yes'   or 'div = + 1' or 'div < 3' or 'team != no'   etc. Except for team (value = 'yes' or + 'no) it is important to use a value that is set up for that field in SFIAB else + the scheme_id will not be set correctly in Evaluations projects data.

+

Criteria:  Each evaluation scheme will have a set + of criteria.  These are what the judge team considers when comparing a + project with other projects and with a standard. Examples of criteria are:  + 'Scientific Thought',  'Skill',  'Thoroughness', 'Teamwork', 'Research + Skill', Etc.  You create the criteria for each scheme used for your event. + In fact you can have different criteria and a different number of criteria for + each scheme For instance, elementary school projects may require only two + criteria - 'Scientific Approach'  'Completeness'  where as a senior + school projects will require criteria of more relevance to the project advancing + to the next level.

+

Levels:  Each evaluation scheme will have a set of + levels.  Levels are like grades.  You determine the number of levels + your evaluations will have and the value assigned to each level for each scheme. + For instance you might have levels of A, B, C, D, F with values of 4,3,2,1,0 for + one scheme and levels of Exceptional, Excellent, Very Good , Good, Acceptable + with values of 5,4,3,2,1 for another scheme. The values do not have to be a + sequence of integers but that works best. There are also optional 'special use' + levels you can create that allow you to do error checking on the judges entries + and take the appropriate action if the entry has errors.  Special use + levels are not used in calculating a score. An example is to assign a 'special + use'  level of 'No Entry' with a value of 0.  Then when a scanner or + any other process used to collect entries detects that there is no mark for a + criteria it can assign the value 0 to the entry and Evaluations knows to 1.) not + use that criteria entry in the calculations and 2.) indicate the error in the + status for that entry. The short 4 character level_code is then added to the + status for that entry.  Setting a 'special use' level "MultipleMarks" with + a value of 7 would allow the collection process (i.e. a scanner) to set that + value when multiple entries are made for a criteria. Evaluations knows to not + use that criteria's entry in the calculations and can indicate the error in the + status.

+

Weighting:  Each criteria will have a weight + assigned in such a way that the sum of the weights for all the criteria to be + used is = 100. Lets do an example:  Say one of your evaluations schemes has + 4 levels -L1, L2, L3 and L4 with values of 1,2,3,4  and the scheme has 3 + criteria C1, C2 and C3. with weights of 20,30, 50.  Note the weights add up + to 100. Define level_value as the entry made by the judge for a given criteria.  + It will be 1,2,3 or 4 in this example.  Also define max_level_val as the + maximum level value used in calculating a score (i.e. not a 'special use' level) +  In this example max_level_val = 4. Given all that, a score in this example is + calculated as follows:

+

score =   ( C1.level_value * C1.weight + C2.level_value * C2.weight + + C3.level_value * C3.weight) / ( max_level_val) 

+

If all level_values are = 4 (the perfect project), then:

+

perfectscore = (4*20 + 4*30 + 4*50) / 4

+

perfectscore = 80 + 120 + 200) /4

+

perfectscore = 400 / 4 = 100 

+

the lowest score for this scheme will be:

+

lowest score = (1*20 + 1* 30 + 1* 50) / 4 = 25

+

Note:  You may enter a criteria with a weight of '0'   + This allows keeping the number of criteria the same for each scheme. This + special case is used to provide compatibility with the Exported CSV files used + to pre slug the Apperson Education Products Benchmark 3000 scanners.

+

Setup:  Now that you understand (hopefully) the definitions we + can explain how you set up 'Evaluations'

+

1.) Decide how many schemes you will need.  Most events will + use only one scheme, some will want two or more. Enter the schemes in the + 'Create / Edit Schemes' page.

+

2.) For each scheme enter the evaluation criteria to be used for that scheme + using the 'Create / Edit Criteria' page.

+

3.) For each scheme enter the evaluatons levels to be used for that scheme + in the 'Create / Edit Levels' page.

+

When Evaluations is first installed, schemes, criteria and levels + are created for the ISEF evaluations (2010) and to use the Apperson Education + Products Benchmark 3000 scanners. You can use these, eliminate the 'teams' + scheme or create your own schemes, criteria and levels.

+

 

+

Step By Step Process

+

Installation

+

To install Evaluations plug-in follow these steps:

+ +

What the installation does:

+ +

Using Evaluations

+

Link Evaluations to Data base:  For Evaluations to function it must be + linked to the SFIAB data. This step creates (or updates) all the linkages so + that Evaluations has the necessary information from SFIAB (read only) to + accomplish the tasks designed into Evaluations.

+

Assign judge teams (or judges) to the projects they are to + evaluate. The default here is to use the judge_team_projects assignments of + SFIAB so it is important that these assignments are setup in SFIAB and that you run the + 'Link Evaluations' after they are setup (or if they are changed) to update the Evaluations + information. Optionally, you can go through a completely different assignment of + judges to projects.  This feature is NOT IMPLEMENTED for revision 100 of + Evaluations and will be implemented only if enough requests are generated.

+

Create the evaluations documents or files required to enter the + evaluations.  This step can do several options./> + &nbs 1.)   A web form 'Evaluations Web Entry' created automatically for + each judge teams' assigned projects using the Evaluations and SFIAB setup.  The form will have the following:
+         - an entry for the team (or judge) + number doing the evaluation.  (one of the judge team members must be logged + in.)
+         -  an entry (selection) of one + of the assigned project numbers.
+         - a web form table is presented with bubbles to + mark for the project as follows
+                      + criteria     criteria       criteria + ....
+            level      + [ ]            [ ]              + [ ]
+            level      + [ ]            [ ]              + [ ]
+            level      + [ ]            [ ]              + [ ]
+        -  a button to submit the evaluation + entries

+

  2.)   CSV download files to be used by your organization + to create your own web pages, or score forms or to pre slug standard forms or to + import to scanners.  The files should have enough data to accomplish your + process.  If not, request additional data be added.  (coding changes)
+   3.)   specific CSV files to be used to:
+             - Load the + 'student' data into the Apperson Education Products Benchmark 3000 scanner + (requires a specific scheme setup).
+             - Pre slug the + Apperson Education Products Benchmark 3000 'Science Fair evaluation'   + forms.

+

Evaluate the projects:  During this time the judge teams (or + judges) either mark the forms for your event, enter the evaluations on the web + page or some other process to capture the required information.  For each + project, each evaluation the following will be required:
+   -  project number  (this is automatic in web page and Apperson + scanner)
+   -  Team or judge number  (this is required to verify that that + team or judge has been assigned to the project.
+   - a list of  criteria_id, level_id  pairs representing the + evaluation of the project.  (automatic with Apperson scanner and web page)
+  - other optional items not yet designed.

+

Enter the evaluations:   The data from the evaluations is + entered into Evaluations tables.  This is done by the web page 'Import + Evaluations Data (Apperson Scanner)' or by an upload of a CSV file(s) created by you + with the correct specifications.   Details TBD.
+

+

Calculate the scores:   This is simply a button push using + page "Calculate Scores'. It + calculates the individual score for each evaluation and... calculates the + project's evaluation scorewhich is an average all of the evaluations for that + project.

+

Enter the final scores:  After a caucus of the judge team(s) or + divisional officials and judges, + some adjustment will sometimes be required to the projects scores. This can be + accomplished using a Evaluations web page (TBD)
+

+

 

+

Examplesrong>

+

examples:  TBD

+

 

+

Tables

+

TablTable descriptions  TBD   for now see the + db.eval.full.100.sql file or browse the tables with phpmyadmin.

+

eval_projects:  Caution:   contains all projects, + even those not assigned.  (may change this later - or not) +

eval_projects-entries.  A copy of + judges_teams_timeslots_projects_links with additional fields    ( + a record for each project - judge team assignment with the scheme_id, and an + entry for the selected value_id during judging.

+

 

+ +

Setup SFIAB + to use Apperson Scanner

+

+ About the Apperson Education Products Benchmark 3000 scanner:

+

+ + Apperson Education Products

+

+  

+

+ The Apperson Benchmark 3000 scanner

+

+ Apperson Education Products worked with a regional science fair in New Mexico to + develop a special 'Science Fair' Option on their Benchmark 3000 scanner.  + This option is very robust. You download and import your fair's data into the + scanners student database so that means only perfect forms will be scanned + without rejection. Forms with multiple marks or missing + marks are rejected but the good data is captured. Forms with a judge and exhibit combination not in the student database + are also rejected.  The scores collected from the forms are exported - then uploaded to + your fair's Judges Evaluations for processing on the website.  If you are + interested in using Apperson Benchmark scanner contact Apperson Education + Products. Be sure to ask for the 'Science Fair' add-on option. +
+ Here are the requirements to use the Apperson Scanners:
+ - You will require a PC running Microsoft Windows and must have a license for + MS Word. +
+ - You may have no more than 99 projects in a given project Division.
+ - You must setup Evaluations Schemes, Criteria and Levels as described below.

+

+ + Apperson Education Products - Benchmark 3000 

+

+  

+

+ Apperson Science Fair Score Form
+  +
+   Sample of Form A1308 - the 'science fair' score form from Apperson + Education Products
+   

+ + + + + +

Here is how the process works:

+
    +
  • +

    + Data from your fair is used to 'pre-slug' the score forms.  A bar code with + the project number and judge number (team number) is printed on the form along + with other information. The bar code is not shown in the image above - it is + printed to the right of the top text box marked 'SAMPLE'. A MS Word document is included in + the Evaluations package as well as + the file you can export to use with the MS Word document to accomplish this + task using a 'Mail Merge' type process. The boxes with the word 'SAMPLE' as well as the box below 'Marking + Instruction are available for your text.  The supplied MS Word document and + the Export file are designed to meet most needs but you can modify the document + to meet your fair's needs.

    +
  • +
  • +

    + Another exported file creates the 'student data' that is loaded into the + scanner. That file contains the project numbers and judge number as well as + other project and judge identification information.  The file is loaded + into the scanner program (DataLink) and is used to verify barcodes on the forms + with the data in the scanning program.

    +
  • +
  • +

    + Judges (teams) mark the forms for their assigned projects.  The criteria + and levels provided are those used by ISEF (as of this publish date).

    +
  • +
  • +

    + The forms are scanned and data gathered.  Forms not matching the student + data base are rejected and no data is created.  Forms matching the student + data base create a data record and are not rejected. Forms with multiple marks + in any criteria or missing marks for any criteria are rejected but the data is + capatured. +
    +  -  The marks on the forms create numbers corresponding to the 'value_id' as + described below.  0 meaning missing mark, 7 meaning multiple marks

    +
  • +
  • +

    + The captured data records are 'exported' from the scanner  at any + time in the scanning process -creating a text file.

    +
  • +
  • +

    + The text files are 'imported' to SFIAB Evaluations and the data placed in a + database table for processing.

    +
  • +
  • +

    + The 'Calculate Scores' selection in Evaluations processes the data and creates + judge (team( scores and a project score based on the imported data.  +

    +
  • +
+

If you want to use the Apperson Scanner + to record evaluations you must setup SFIAB to meet certain conditions - as + follows:  

+

The main requirement is that the scanner + (and forms) require project numbers from 1 to 9999 and Judge numbers from 1 to + 9999
+ To accomplish this the following must be true: If the Category digit(s) are + removed from the SFIAB project number the resulting numbers must be unique.
+
+ Here is one way to accomplish the above requirements:
+ * Set the Configuration variables in SFIAB as follows:
+    -Allows for the setup of different divisions for each category:  = + Yes  (not sure, perhaps No will also work???)
+    -Project Numbering Format = CDN                + (Category, Division, Number)
+ * Project Age Categories: The Categories' IDs must be an integer from 1 to 9   + (usually  1 = Junior,   2 = Senior)
+ * Divisions:   The Divisions' IDs must be integers from 1 to 99   + (Usually Junior = 1 to n,  Senior = n+1 to ..(99max)
+ * When creating the Divisions, Create a separate Division ID  for each + Category even if the Division name is the same.
+      ( Do not assign more than one category to a Division)
+    Example:
+    Category            + Division
+    1 - Junior            + 1 - Animal Science  (junior)    +
+    1 - Junior            + 2 - Chemistry          (junior)
+                + etc ...
+    2 - Senior            + 22- Animal Science (senior)
+    2 - Senior            + 23 - Chemistry
+            etc
+ Thus, project Numbers are never more than 5 digits   - i.e. CDDNN + where NN is the exhibit sub number in the specific Division. And, when the 'C' + is removed the remaining number is still a unique number. Project numbers used + in the score form barcode and in the 'student' data are then the SFIAB project + number stripped of the first digit (the category digit).  However...
+  VERY IMPORTANT - This means there can be no more than 99 projects in a given + category-division.
+
   If that becomes a problem for your fair,  a different + SFIAB numbering method could be invented.
+   +
+ Other methods may also work.  If you have a suggestion, let us know.on, let us know.

- Here is one way to accomplish the above requirements:
- Configuration variables:
- -Allows for the setup of different divisions for each category:  = Yes  - (not sure, perhaps No will also work???)
- -Project Numbering Format = CDN                - (Category, Division, Number)
- Project Age Categories: The Categories' IDs must be an integer from 1 to 9   - (usually  1 = Junior,   2 = Senior)
- Divisions:   The Divisions' IDs must be integers from 1 to 99   - (Usually Junior = 1 to n,  Senior = n+1 to ..(99max)
- When creating the Divisions, Create a separate Division ID  for each - Category even if the Division name is the same.
-      ( do Not assign more than one category to a Division)
-    Example:
-    Category            - Division
-    1 - Junior            - 1 - Animal Science  (junior)    -
-    1 - Junior            - 2 - Chemistry          (junior)
-                - etc ...
-    2 - Senior            - 22- Animal Science (senior)
-    2 - Senior            - 23 - Chemistry
-            etc
- Thus, project Numbers are never more than 5 digits   - i.e. CDDNN - where NN is the exhibit sub number in the specific Division. And, when the 'C' - is removed the remaining number is still a unique number. However...
- VERY IMPORTANT - This means there can be no more than 99 projects in a given - category-division.
-   If that becomes a problem for your fair,  a different SFIAB - numbering method must be invented.
-   -
- Other methods may also work.  If you have a suggestion, let us know.
-
- Evaluation Schemes You must have  2 - Non-Team and Team   (One - may work  not sure yet)
+ Evaluation Schemes You can have  2 - Non-Team and Team   (ISEF + eliminated special scoring for teams in 2011 so you may want just one evaluation + scheme for all projects.)
Evaluation Criteria   You must have 6 criteria for each scheme with Ids from 1 to 6 as follows *you can use ISEF weighting or your own)
id    name                     weight non team     weight team
1 -Creative Ability              - 30                       + 30                      25
2 -Scientific Thought           - 30                       + 30                      25
- 3 -Thoroughness                - 15                        - 12
- 4 -Skill                                + 3 -Thoroughness                 15                      12
- 5 -Clarity                           - 10                       + 4 -Skill                                 + 15                      + 12
+ 5 -Clarity                             + 10                      10
- 6 -Teamwork                      + 6 -Teamwork                       0                        16

- Note: Starting in 2011, ISEF no longer uses the Teamwork criteria - all projects - are evaluated using the non-team weights
-
-
- You must have 7 levels for each criteria with Ids from 0 to 6 as follows: (You - can use your own level_values but for ISEF the value = id
- id  value name        spec_use  - Spec_use_code
- 0   0    No mark      yes          - NoMk
- 1   1   Acceptable    no
- 2   2   Good            + You must have 7 levels for each criteria with Ids from 0 to 7  (6 not used) + as follows: (You could own 'level_values' but for ISEF the level-values are the + same as the level_id.  +

+

id  value name            + spec_use  Spec_use_code
+ 0     0      No mark         + yes          NoMk
+ 1     1      Acceptable      no
- 3   3   Very Good   no
- 4   4   Excellent       no
- 5   5   Exceptional   no
- 7   7  MultipleMark yes          + 2     2      Good               + no
+ 3     3      Very Good      + no
+ 4     4      Excellent         + no
+ 5     5      Exceptional     + no
+ 7     7     MultipleMark yes          MltM
- Note level_id of 6 is not used
+ Note: level_id of 6 is not used

IMPORT data from Apperson Scanner:
The file created by the scanner has the following format (the import code is designed to use this format)
"Apperson_proj_num","Judgeteam_num","CreativeAbility.level_id","ScientificThouth.level_id","Thoroughness.level_id","Skill.level_id","Clarity.level_id","Teamwork.level_id","seq#"
- where level_id are 0,1,2,3,4,5,7     0 = no mark     - 7 = double mark  and seq# is a 6 digit sequence number created by the - scanner.
-
-
-
-
+ wherwhere level_id are 0,1,2,3,4,5,7     0 = no mark     + 7 = double mark  and seq# is a 6 digit sequence identifier created by the + scanner.
+
+

+

+

-

-
-
-
-
-
-
-

-

- Imp

diff --git a/plugins/evaluations/docs/images/AWS.jpg b/plugins/evaluations/docs/images/AWS.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4da9d3a1330fec9a19a1b3379751972ea308c64f GIT binary patch literal 40841 zcmeFacUTn5(?2@9OAeBeoRJ(BmYg$7mK;QcWhLjRARr(?6c7Yda*&)Q2&fHq`^ z0W`rs;9#1pLM_ngJOJqG0=xhK-~qT0asUQW5bzIx&;i(oGyvE^=zr195bmEcP*4UA zfGNNUp573VLz)t#)1sXKte?8&;O7WH@I4FwxJdu{RI>N5L$eq-diZ+yIC^-psJWuu z(C)rIEC@ki7BeSzdyfDgKtvc0mllRg!-ZLd#ihmI(jwxZEm#iZsEs+$zv_Wx<-mT? z2v81l;6PwMWpRG*59HKQe;|Ut_Xou0XS*Td&|kJmJ${(OpoT%_$LGQCm|}PsOqT$n z!@k+5=mL;~W#GhN4zLfyXda9KkpK}M9v(g(5k5W<86g2785Ic;5eXFy1qBra1q~U| z;qmk1N9La?gqV)on>9j2co7ZI#9LgKHHOlN9RECf3L=oQMy(+kzNk%Kvt0*5a>b%;B zQ>w|v_G<0LI%+ybtnCLD|cM6km;$p8gl z7|D^QI9wT8D$yi=fu)L1V0{iT)XMa^HpZ;NFNYDW=HL&XKHF^CT zLkS8NS8^YJRDV{kwWTyT<4j!U0}JcrER_h~{kvINlb?#+W63u@U9uV2W1D!rgbo2{^Bb|)cb+xLmW`s;VpEamjq7DF?{gVfPTz-GQC>?fqwVQ(a znGuJzM`_KI-@nD$s62e`(Nw;6PDmlBL5v6e6x$0zR(R(C=(U7@EPN(LEKn zF2s@fTKLR|Cra`*8?@V>mQsh~C-v@qS+=Jrjwt?q0DL?EBKF;@HsZ8T7TNWUoD0e% zoto2mBVJQ6I&lCzJOFSC9g8JUmP7Gliconi{B^QZVY2LnuQCF!vFYyD+T2|?itroC zI315$EfWlxFdI1lCiu*_XkT$532tD?I1avp85VWGElH^BraWv;J?fLfmUOOJ81WtX z@LoK7*?@oaT)1pZLRa=P7agZC0;N)=QbiW6k{DMWpn$Fb>cmrY&@*i0CN8Tin&NH8CrINBFWzG^qoq5epS`!P#OZLVq3KZz7V}Ejh5gWdT~ouSBMn)aG@4IK zEIK;Jh^yx%1NM;wclev0ieBEx2qfrS*j2r)5bpYsxS*9uHhPe($a}m^oDHUg62=VZ7#SU;?K5fe?^l|?IaJF&(q;#D4YHo_`gEaZVX@iN) z(Wx&wfzC^B_U{dZym+4@U$lYR(W!YeFHzonVZ)_)ygVA%Y?@i=gs((8*js56BSr!| zH|yG%SNxU^fWoiD6&<#PMQNjeg~ zBTnaVbT5Z4TZnB71)}(C-UPsc9_^b%Bz+Gc(2W)dQ~UaM*>%fwPH&i7YALs}Fk1V~ z`f$9%9;2gJ-)41FzIu2Fd?SCSHRFz=bRt%0YFQY2KmE;}Vf{} zE>Xd&Xm+|~t1Ry_L6K&CgPmDbbIrp2KAIG(H*V9p4s|m2YNs(BUWp;- zV6%AnVvPPXwxk}|_$(6>-ghdpHZu?Z&VaD~_XaLcUic`vIe6HCBUWmbqllGk+CO`x zi-i#3@7HW96Y|C;F6zT7@7`903zr`CdE$oCRxZ_U0zCmY)=U>)jgN2|zNF2FjJVrS zGu%jK4a>gSHmqr~ao&t_JjLIT^gRzRvO=7e+C z>Cf(5V^ioBQq)$W^_{Fc0Lq_?KdBmH{#4(|a`iJXq8jGwVkrgQp!}}un@+P8-ABCM zmGq0=-?dp5JL8~v!F|%A1^-0#W5J--l#NT*zdz^GSs1_@KXU*GP zNqV#+5!P^7ka$P_%cPyYqi3`;3AW0YorYHNZm*U0%O#96(_+i6gdAcyZF7cb9c!D| z-IR=S!?*BU# zu(*`cV%U*N?k6qd>?$176}#YCJ9|l-eW>2I+Dq+9qij%S8RUCUpu%v#9(G8#^3bwU zVOxjhlw-M7D#OS}(@vh-=5Mpu5FY+l%AI;UTtcPBmmCL|4*-ez&~{!^iu;L#5D{9@ zI{))uUXNB;P8E-!KRp-cNfJjqrD*GwboRea8K&P*!;yY!h}h6IBF~dDOz~#q#>~== z=JM+T#4WGO91w9x?`2tEs1_v_7e)UtKc6`2SE&=a=qOf2bd`T}N$a6>1+$Av-clL}SH z(3|;=SHV6P{f2B_=JUB#xAv7{62=;bw}WHIK82=55XQiI zTwqJpDi$LolcCEs#q`f9M#o+7>s#N@ev{e8j`=EbX6I9IQmAF;vi`+V@LAeh>Sws? zaIXKd+#8wDHO)2xmQ0+@q1}qi1(gB+$_%;egZ_zz>alXi=_*g=i;6t0lc>qv*Mhs< zMG*J1;p5H&{m?#3)UE#a6?0*WMdpZ;^=Twab?)Fzl_{N`cK8u)uY0A!V~ZBz_syfr z&JKknF(-V+_TBeNrS#ZTto@ijgwB_btZEs^L0BU82K**j^yPYqN4-nylLe&ZniGWc zYbNS-g=6^()upvV_WG>?!f^_=Q&_DYu#%-Lt;_R_sycS?yz3(F72oLyZ816NejzHs z@w*XS`HFJOO+3m9pA%uR>-}r_!zzoyy_=;RWVxgj=g@a5i0+xnsNY{B*;f4C-IFIow;H-(=gn~562CGF4g3a_i^aw$u|&b}|*KFMRyZpboHcmWmj_H}1I%Xt~P zsHC-!?DKWk#|AUbI9r@9&2KJ=bN%8HEwHakd;mNqTf5?4E&c62b<9aK`Y?rb6iHvj ziPRlm=?6jPyQj=uUG8A*uPff0FS*v8gVUkkxOxAUs_OZWM}E5xcso1A$V?O!Sl?Ur z=UYy0H0*z-E1T{`S9+nw`Lg?Mo-76UH*Pb3WnPUL+$bYiPmPAp`F+9KNtJ0!nnY2@ zIlEZWVTt9@_2xjtE!go^It&ANuW?Fw>G$FEDo%BkQPsJT)nD_twbZg-(seymMUEFD z0CN(+3Rm!JT?yS-zBpXP%zUAyKEdLNlh;7ggGKsBR|D|LMEcvWN-4@v44++`q3gRm zx*2*fFdt?}Z0KU|RP|UByH-2NPJJpt`~cA8Ck~XB@!hB6YvN3o9TIcDS+v8LnQisT}m8c-6SsdvZe33wl;y3N6%c0#B=Y*%8h+o3C6>xP?^-gwRj zI>c#|!^@zDX3#NhzhnXAi^WzO8*|mBaB}lnh|Yfh`H`8e{OO@JYo9I8sO`_o z+=K6jp4U-_Phq`o-qe7o@rTF6pie4~L~WH0y?+=#p~+daj>|s%{fala4h746tfHoK zc=RZO-*YRx{0kYEJ{1+=H6z;5@bVI_kQ* zxQ8|>%Jyv0!QdzUl5UX+JVTd=F}W08JUKx*~!Oke+|teDeqO#hiJ z?lpU|p05_sR6CD4$g2F5%7g3?5cW)}DC+y#egqe8hLI$dU7Zj1m!{k$Paw7CKj%uX zRH`0#hJ(C!rl3ax-;!voT7!Ug23~57hfDUlIa)h5C@A8^7L{#7ny^$(YBtvPbdq8M z&6>(W|H6HLTs2mfCs*r{gbITfqH3OgXJ6$F90_9nG^%uOU2*Ed0l@QVfa8`oU2dMF z+S@@#y(DC;A^3CU=IvMG!xEd9nJ@Y#8O7d_?{sn+NEE;PPFb9Z>Uy=6=S1qX0Iq4@ zyElP*2f&6&*;_x6H+t=>y7k%Uc=9)=EDnH6%I)Z{(wk=_aDlaNiQ8-;@o)UU1k{(l zX$jouGtqeP;LZn{cwPU8GHM4yOSPHZ*JZkjbOS%W>+82wxOFZes{LdbN8NO=e0G@` zXRBIM6ICj`oCe7&5<%ZkqtGTR^ssAhe8OcLL_vNwF`+eK(R@Y=(|OB~k46mIPZK#l z^R*coKEE%=oxBl@mGOCG(ox7G=40?wQlv+Pp+>|8W0g?I*qzy-h0Pmf3^)y@!){;Y zTHo|c&Vel_D1VP*rrx6xM6Mc(KJQcbWcG%KlZjwB`rF+d`Sj}%;~l2cFFfIUX>3C2`d3KOv{w=|-3BIe$UB>(sDUX~ygGc~c_7~vS&$KtOJaFp+z^shPvg&h4+`-#} zrISNP0TWR{VL(zDsf&dPR{#Jm0~m&Zf`5lROgIJrNY#nfVo%*S9j(rQn2QT3tWP;~%DA0{Nju zaF_=JCKwqo_=7nJ4g)9{3VNvd6+?op5ITPzEO7->FjNB`ke{5~+jo9(L=O3uVEUJg z*da&Yh;wLj3(Nz6Cm4?T*8?_>DgM`@ga0>Wn7V%q2RINv5Wob-Faz@=Cw!QL{6q)S zYD`Zs0i{DMu<#B!7@R;JRPo38Q7H6x65{X-s@C${zT_0T}O zqrGi?(e@w%Fuvf4{wYlGLm0!slpx(4Siq0}?f%33yj_je%#FdSeu9eu|L+`K9|!c` zI5@VhzQ(o=f8(7%p+P-#pfA!#(^yx>&cnkMV-W8z_TPl@9X-4+D!Dp2{DljE>39YpyJ``;r$!9WIyaHYy2tzRRBE?cMR6} zz8;?Xe!f2F-yMg*6?CNk;1bz+_<|1gAACY^h#mhaet5ldV=4lOz!Rdda!CKUz929@Nq!+I3Ro+5IznF z9|wew1H#7v;p2etaX|PuAbcDUJ`M;U2ZaA81HwPz6s%w*0st<6Cm2@*z%YaoU=Mfz zb^sb+0So{~koE;npF_$M0SE$^aORI#CP@xR0>GA= zt-BM_P~8xu7co&2C3jU!1>NBJpW#Eyi-v%by3y}Z9YEb1>He?5zQ2Nwm`-A(4g-Dm z7lJ+<=8b&+Jw*7I)?p}8-REzyK(KD_pP@&L4bZBOy7ymoW5S4kS=Ui<|E-Ofei?ck z20(wrYe7v6k0kfd2!q>sZzqt#1V?}C^N;A=VI=8CycYM61CH6jv~;thudk=HkdV8N zpe^RbNI{f`n^2&wrx09FSO}0+2=uf?xuAVn?9gEBQjYCQODh|Tlf4|9nV7DyuBQsx z(Mj{7H`?f;o-yj83rfnKO+lVOHc&dy&C?C-Ys(Vo=IZVv9Vo|kXj~ekF>E0=mO~L= z7dbXjLAaoZ030sLCQrb^!XoQ!e_q;9RsE+Xn3H4s*~EZ=0KouJK@V>SA-I&3l#sB9 zkcfx?C?Vi;!QIz3P{7@X{fCji?5LuBP~J|SzD^$QEEv1CV8qy0j*Sgd(XZo26YWvI z>hT2Qo`<#AqlC~uUk(M~fD8RH4(iIeD``@&V zaFYF1gjNLu)bg13V+Dla0&rpDzuu1(5SEY@7XHo156OSn(Dkr)I)C9$Z2TtqPaB{M z+1vWs{*jg6W&an(L|6B}9u+q?p?`BXA74ZCk!Szwc=}*s)Ix@69}hoo6dDvia&C$7uC9hqRfEHoRp4SON=g#qD&kVYD#{YFLjR$6)R-f) z_W!_5L`_6pTvAFHuKHh_{Y~%4>@QG{I{E7=|DU@2eVxw#AN&PVa(K7?9Y9$OR~r29 z66hPYnERhRTvq5mc)xYwu*@7Y7OsAW@)9D#;2{LZq(4=EFaD>h#ec2(d+|S2k2Fo( zoqXj*e%AI6_CK}sz;5}YRh=BrKA?`6IKPOP1b9kLx}|MUY4 zSK7cS5bbKN>IB{?d@#O%fFopu{mAYhyP780>3?=F|K!L z>^IgwrT>PRsJNs!f*&C)B`$oJg5v~2{38`PR1%Z~Q%qf=ps!$3Of90I4`EVJ7fcUz zK@S391WPd~*jh0C!I3zmB{8WK*iJA#l#vnxX$cVwUjp=Q0ha=8Vp5E*lq5!1 zN)jU@C5e%dk~)-;f*;ZtYf^{Sq@*x4N*&si!n6c@9*gsXe#;N~I=?u-1ivJ|6h8@034YM&ML=2bQUI?6@FEcduNTnW!7BrFcp12`nxv94LRDQ- zSXD$7E~N_I2~;FRR1t9SsUoT_`g1VF>Xaqz}Cf{1Snd z2b=tF?B9Iws2HiDV&Ls@-pLg$?_;Q;%z{)?5r<2OiwlSdf^Ph;a{p>a)5!xGjKRcfl{sLchK>|D^*yuKpK~qh=ph@&^bU!}SLs9f=&nb%ezqP{(ln0Z2z8 z$8a5C@dwl~Tz>%4k;pMzM_Bv;bqv=ZfOI5s4A&7Be?T3>^#>pwi5$aqgvB3F$8h}t zNJk>aa2;Xs2h=fKe*n^v$T3_;So{HX4A&okbR=>N*AW(fKpn&N2Ou4Z9K&^l#UD_| zaQy*DM%4k;pMzM_Bv;_5VFw1V{5w(eB{n(*SUm>A`y< zbMR$-8v{dqb)=5k;S^*dO&uq94=6bI)y>`48}s_UxrHSQ?rU&HEIznaA-FK0Ey~AJ z*GL_+rX2vj+RuV{#~(xgJir;g--dq7m+cqOG+<%*tKbhm$xxo&;Hq>G15jSn9-Ms& z(vcwT8sO`R;je%+rJW0ghGOOgQ+k691Zf%!?eK%5Q{QWQs1;TVdI?CS(4Xz0X8vtnzS3fs!7BCF65+$V@+7_GzjfGi3j>8v?as+8% zkS6jrHdFy=S#T9TB8T5-yWePEaK%1Q7Etl!U|JjvR35y+{CPc=KC-s4@QX+f-yHG)fQy=&$3y z75F9jeuGrNjK;Ga(X|5)+2X8qO>P!#L~ls19@=^IJ_ zw$u$^Q4j*KGnn;8A-~2=2j3K2b^rj(nCE`@JxGJ)hw0xEXabmp`ZygfqY0=O8ndAM zy#0TOU|~M6!L?#Z07`%sU;@|yZa@GK0VDt!KoMNRKnu_Zi~$SaEPw(RHgE&H!POXp zfy+P?5C?EK|~;u5P66iL_A~qA}A%45qb(L1eJs;LA9aAP;00I)C+nM8VQYu-h$>q%b^X>$IzG1 zLFg3pGxRICGZ7(-8pa9}fJwqsVEQmi*m;;YEChBHmI}**Rl=HK9k71b6l@W;jfI0n zfyII)fF*;aiDiO?!t%lj!McWZ2dfyX0qZGNKh`wX3f4Y0F*XA>AGS0$65AZx0XqOY z3Og0M5W61x8TKIdN9=DnI5^ZeTsRUqnm86X&Nx9h*Kjg%s&LwHdT~DBe8t7ZrN!mL zmBZD?wZ-+tjl#W+TaMd`+lTuRcMFdYj~Pz{PaV$^&mAuuFBPv8?-5=f-W=X8J}EvY zzBIl*zCHd0`~>_0{AT<&_#g3i3CIYz2;>Ni37iQo6Wk)GBzQ(JPOwf$NXSMgMR=Of zi7<@t7GX8v3&Lr_Z6b0aULqBuGemww@kB*LZA5R0)`^LUPZ28;TN3*c#}k(jKOufc zymf-&gy0F}3HuYFC(=(eoaj5TOoC6sNuoq@mgFKyD#<;PHzbRs_@t*uRY+|~LrBv} zn@ERAzmidq!O8T=+{mtxm6COm&6DGjpCVTyw#(G1e;(6Z2~(Ynyyplzg`pu?i$r8`X*K$k`LjBb&h zl3s=$MSqpPmVT50%D~HD$PmPk&(O{Am63^2gVB@mHscen`I{~{S`+4@8 z?CtC;9LyZL9KjrA9HX50oRXZ5oN1gLoSUb(PMMvGKGk??o{NSH$#s#djBA{mm|KC{ zi#v~dfCq<1lE;N7lc$Fl$}7g}$eYglh7Zao&gaCJ$=Az|4bE$H=g;FG79bK(67Ux& z6POmH7Ss_87i<(<7UB@H6uKeQA+#?nChRI)AUp;qhik#Z;mz>?C^0yP zF;w)v=qiE_fktE@M#Lz@bj6~@+Qs(7CB(hOE5#QiI3&(VWJnB4Qc4;~UXy$wg$>U4 z4V8KzwJj|!?JHd?{Y6GV#zm%7W?q&{7A;#K`$3LP&Q>m0Zc3g-{+xV{{FDN#f~`WH z!h1z_MSI0U#W^J&C1<5_rDbJdWpCwrT2mG z>yGPj>bdJR>I3>n{bcHb>* zrUCZ?$pYO2yD#uwh`lg(QT^iGAgmx%P21AIg&9lEb_w@jVonQC!)NghNESovtzJgoMK+bipJiK-M?yo zwJT0IE;a7^HPp4P>+tKht{=pokAIyYo{*J@ljxo}bVK1raS~b5#iS3(y2%YUS#Dmv zxshU%(wT}#%}ygo^Gln$rE}~4ZI0WCx4++Uyfc`toL-f|kP(})nQ5Qdm!+6hna!9T zm%WqYlrxg6k=u}WDlau3C*MDRw!pNYMW$0BN|; zu+r$*ICbCRes7ajQ+u;abA5|oOVIQm@@+^^dId;mG{a!_xucgSRDWcbYR)QJ7a{9D(ztE2v-yJKPF z*yC3xNGDR?F}%y0x&scII{izTpa6GB*)EyBqS%#&%N{vllFNyCpg7lYT}FaR9I_YQH^IaQIPM#%VK%O+HNHFj<-_J zHgvvpYTo*NwAf1#WD|JfX9O7ms(zz92~xx<)sF?4zs*vd(FG zoP*@Ep(`!6^OA3LLe*hrU86Ms%t__`S z@DaVFQeULhb$1mhV>x$UEbojj!1bJsExhx!k$A{u0b(ywtfW9f<*N_b0QxVXy^f3N z^bGwC4cE6xrcOL2e|d$qyF3DQ0A$vAhbB%=*hO%3U)R_UofjCV2~-r>Zt*u-bmRAP zm8l3_ZwQ^F{eHzXsW;hT3dX7SW>IR{m`+oK>>4*SRa32MB2Ha^uXL1^bpnb;ij3=h zjdG1otW(yf=42u)c9j+@{_eXDwMj?;<7>`HSuO~t0DgY~lsY9jEDIW_JW$6Kxsqg> zqKurD#N)Zf17uOOQ{ORH4%DK^Ndc0OJx1V$dw<&l@m~fK9MY`#u(6d}7XQ9XxJcCpba-}hY4soKw3y;kG44-?&Y*x%p1hD@V;m6aLZ*^TG<)Zo(< zjwBarRD?NaM;PTRKb)o+u{`8rCGoBD(Fu=$zJTRziESh%_sU&b?j4hosn4U0H`%+b z8)*spo2~QU7G+vN-Rqo6f;zKaigK?nOWu0wthla-wTQo_I3%@9?3l(x zoh2?@j5ADauh43{y029q-81^>rM3HT_T9$pFz%zcAL<5FvBZ|##agGiyE*34>>yWdj}09M?^CL!`6vRPj%?8}j1J@ODiV|FoD z`MX(`SDU@`h%0tfNuH_p;BvZHn6s-Hjtn&ZdgPo7~gr%giF(Sj~?(r`CTl*am zTew za6!2B!i|%V)7bo36k(ZsMl^=k$@Q+>J?Q;!M;g3_?-s=lRsd%9lJWQ-&vT?ps@oL^ z_;PX6V~<}N2}tN0QfUqJ4*xF8M^9AqYAe=w{zWz_{^8ZyVcuCBI;h5AhK{}`Aw?fu zNR;AsT^Y@uL|^&UC8qqQU}xMlBhxKYngamQIn!zKEL8E430H4d=YX zOxE1$7v0@vMzcMaB1Zcv&7FOtH}FZqX2^hFubMJnMLClanTVDMa(s*haLZfbEVMj# z#XfcBUVB?u++AhO{ilxN!`xREiGAXtM)z+oQdu>pP}Mmi1Bky6n5(PqsMWj(6STw@2n{sl-Q|JTd~4a(yS&Ax z{@vBzeZz8+C+V~(yArt;D*jm#;1k259eK+10C1K)0KzI|V5K(of=kw+v-v)IZ?<1* zMt=!?<$UP?@V4X&tpj&~)36yYvN1x{HKe9))v=%z#&~A zk?l8G3R$?WQxs|S9RLS?KmCI9l<6+QaVx9qC498Ecsy9kwE%WXRwQfm#K%&a4{b)2 zGEG-J9FpvwPI}#AGKI}@>=Sz>C}eJN?eeuqQW_47MoQkD2$-nxS8&EX?IPx*6L{U= z<5{;z@63&U_X4F=5AJIz_jhTEy2#e(R|K$b2;_cc_ODo+5o2MABR0fCs8NB>4jyo0 zBdx>Tjml4l&bG{$_$IQDsj>9>j?S1`5DMI;zNct^q2$__#_SdRrxvK2xVEW$M76%= z3Uwm5ko=h&pQNJK+qST2KNbXuoH)oV5IqMUH9|+hOF4r@ZZkS^ zzIaoUFs3xBA*fQ(Xz$+0);Bs<_AYRXd+-{^qd6SoHwEk4^xq4dKksTs#PC0NST|uh z0A6})M6vhxgZnrM^|>zSFkG^{q!9$?-88caV19RR=OyQ|&;_rV3cV^v7uxsD8jpuNxtY@ zRWHh{X>y6vxaLd!?qtz&V>Q0qo2IeF{g*+&O-`DjA`4!h_dQNjVUa6Y2%YEB!)_kE zt7_+BPldm7S(35pxY}DqUb-M(<;Uw-#q{tsUFiiW{idf9>Q`uQ+%8@q8?0t$@M?0_ z5`Qr4{wcFe?~2O@d$TlS$)Ni|p)uxdc>T5VjE}OkNgRUoU-4IyU*Es!&mTC~?y{jb zovJ5V+~^@7U6-pKXD0t}}5@iB_LIph;eflGbU zZa_jzlemQa%rJ4~0F#pO8vK>ujWWi^>Q1AlqsC~=1HBb*r7sM|iL=7@Y-@ZB4TBgu zQe|%BUCn%R=%Yzz=Bc`bH%{C$48*TZj2ZNWcb(7wR&UwSG9SBcMDt}?(UK{elu}pP zGheDjJin`BBUT|oV{v(v;6&+jZ^W9Ju4g_6n+TP5>Sa1|I^?vKpIB>x%L5I9mOGY9 zMK@PjEc-jS8AFCxc!Yz(&ryzuX{O}+4(>_uKCvb!)1fqNQe$=PMT}x6Tz`)`y=rQ{ zkGGpb-NffZtHL>&Bv)~oh9YP1re4%Ty0@Fr_9JV)nfWuNCMHePL8{wZoYtlvEm2Ja z6;a|D1d770`@ByJ;7`@1Uzgs>Jt2Y?V1HOXD@vVv|7HH^cP1yLzO`Pull{sgJb8TA z=Hc8FxlT-lUM+8@ya3J(Laf$d<2AORQ=1wn8r9*YXKm?I2DHqDLpls$}h67UR{!o!EvqVd&Z>04eyyJBReS|6jH zI+{LHcXs%yF=L@mhT7*eeNse(L}6ScwZ z{x14iEepvChwzz{n@AfeC|Xav{vM}PVR>QhvpgMQJ8%fT=V3(pOh}g!t^-%Jf2AoW zM*iZX#m0a(D=VjwMYpmKRgoC+EBw`@JMqpG>Ad};;VXAzRZJdhHM$V!Gxpr~PV>C$ zAWS+YvqxUaHyl(m@v&;WxCEZ9>+k3TFOS}7A4o#BCE;ETBJ_bVg=$UjndFToqlW9R zdxSyGlr|ZA&(vz)jib4yxEtI<@E}>bLelJtCHJFxycaLqXWtr@p{P@?nF!crQPdZR zL9X!8@H?zUV~aj7)sg1$C}Vif!ClWvo*FG1xp~iJV|p~t79qXz&Yr95Y*H|tvY0%@ zyIXSUhAs~VGe$27_qTDLt{obZMNYB8o?;6oP9svgqx!@KvY-{#X6LQsc}fb$%M^Gl zr;IM^K!nr{X*S}U2y9^j=mO}iQBNmWI-c>nP0O{-wLm6(sn<1Qlbu7d6sMkx*?(ql zGM;;u)5nS=2a})ep#Zi02+aiU3=^j$;qW<{&I+7@#giT-$>&_KAXROFDR*_Z z28F}W;AWyW&V_SkD#XUOxfWVGc3L|PD)W}CJM1~IqM9}G=5^W@KHb=ExkNtZvt}*2 z_+>T&K+s`LDFU97dUVJzjx5q@Y+?X;O1(=0s_8h8)io$aph)&;bET)C>zN)g@nq0` zoO1Fa&2+bIdiLGa6HoT&6_WCA#`c7^9soHF)zekRjZ1GG9^PN_F%LL<0L-~EwobkM zo}$%G((z0tyE0>w+iB&BbEEueb=cYE-0rtV<`b-WTBY_$`dlXFNlW-^rix)u4k4`r@*#yoi_m)7 zEO5}m8`hr1>07uIlK1USh`gYNhb(0AEcb` z=qhokH?4^h8N7G1Y@a8~zQmOBvtGA1ZZD5*YyXRij@a;&Sxt}daL$7JfU?Ou6Ygi{f*kb->emmn0%sW#RaH0QauY;>mdV&r`8C(!YFi+0w^&3EQ)3o{)STAyx* za`G`-i|ruR_sRA;SC~6bmzHcwI*oAXe)5eO2{53_8Pd4mzd~qsW;e6L-V?F5n1RT` z`c7tXJ!s37gd)$rXuNN$qqa#M<1#x`h*j3BB z*ByG9`rFSG5pS76b>JX7OWb`J;h-L z?zFe#Whd+iM+F>ajHA>d9(*_GQ;tSkxS1s~*uLuv zibQ86s4IHZeD{~fPl`5pBsy3Hgwd%e+``-kl6pCP1;wdjJiTfhPuq

Kci~KKkX7anz#8nBJxuMe=-?!GI;=FXHw)8ml!1nEge(W zM{DI-fcXooBgK?l_oiwib+ZV3r2o=e^I`nv5_#^kQ54tenv&m|VI_p8TTh6FKQh!9 zOiqZK1@=zfD>QM+w&)!pO|a2JIZ+Lt?+Z!KH=4 zp{KbvbD37$9ZOU;!nCPD!eu|rE|*@va1Zw?P!L5xa?UeFM7;akN1_P>iu)Q#fsf+! z<4i{%P&qVEjR}>%?$LrpoUxy$T;VFVO~ke950X-0qe`=h6{g!HTf6BTg>Xj%OVApw zCW^(PXujAnY=m)L4uv}-`pVc_C#^4CO@J1{B#Vf zF7X1x72%bphPesr+2^#$Lb%Za{2@gN0d?8B2SD?eFDBmJ{V@-}r+dz_vYWLBTMJC9 zy-}XXi@k6f@1B)}WUf?a#*BoNJY30QS;^}o@^#ADG4r>{RbfWzd}tQzWF?3DB;l#z zk}VslB=);jA7&#or6i&lX~bAA2%JY~VjfwYf)HzM(zN@&+qmD~x9}y(kYFpQ(G~JR zDa)LhkLz=f!b>EmzE#5*lDCdG2yoMxfO>3H;+3n_`ug9JlL*GcOt z@V!ki2=rfOcv7&}Ax?3;gBUaE{et)j0{`2kRGv)j93 z;MYKk^!o5j^sQX`mq34k%?Vw*vn!K#ben5A3ze3u^L^@PQgVhF(=GkmdWv2GF?6G> zH(x9Q`XNCsGA{I)J+E*lXi`%rV6EVgn7Xt-0=Ooc`bcTai2cK=+V0E$OP@SA^15unJ2$iq%Os@xz}|LOYLRI<%n5? z{NQ|^-10V7#-_bOZ`pRu_YViamt3xB_Tu8IgYzL-3oG78jxtG)9w>y$6?s&P%tgioWS z;-W0&r_%BCfVXQN=crz~R?*#eg)tOO;ucDGS4_W`)%Zv+b`M@w4DGM-+UpYNt~2->-7~LlK&CABs{PZ)ARFCjt#%WFI`}S@QB)Shzpw^gy?g>3IOB{l||M zH(avTmjk$-Y_sYsNNr1;^ptd5A;=qjb}cUBYewtr0btVk>L#-)A~KYUBU6^=mf>K^ z4b$rv5+qAYO8sx( zB{aS=3z{iXMl`5hp2lud=8KQf;|;92sXq;wMAFXHLPWIg@OvBjb|Je(=}NfuaIXd` z_f*qyK`9EZlpvJ@ksPJu`0c)wwVvdW^PG-)iTe0FirkiVjg*R{Ylz~#PU3dW-U{*H3v8{aSDw^;;;2)YwO=Q z$D(&R56O2@RBTwLuWTOnVmZ~{r|Lpw>+CFUtm(y2J+jYdtZQolg5V|fF%)L$gU?MH-gwEa^%CkVNF*p~ES%oCGhKthB^bE~IuXRt7ZO1>^ zw7^m`z_=RC5CR?!fQ}X&qQZTC&N)=jdUujq6lHin-`19p{JdSUtW}~bVL$fC zVvPwRhp@QeQ05^Q9cH@R@WA;6!%D&SCHRm->FE1`1=6w#(Eo5v(oxx{yHg2(Nq2C- z=<1~pV=w7~a?rFdLZ8VnLe=NWQ_&n9)pDc-nH4^-hhpXNqM06_D_>huPI}f)OxN7s za?m>xA-z7qt=?62UZo>rZ~mOXiYsj5DO)UKD*m)Am)1b7?@AJN3Q%{EGu_+T#^Fj< zLihooFH)oz*`C1tzJqnDGjd2Xo0?Ya&X=0#)caTP%$lDCiDm?u!=hJ>`y%h>QjBBS zU)NKqaYsoz!yYqM?xx5(s3zR0X2{L(6UgwspHL&|ow^pzIF;>ndZpG$$Gl zwQMm{lu^-bqo=Dlv;>G-vIwNGOo~1i=detFrGJPCVWoKH^~}~3n}rd8#BvGuju+W; z$-AwJ#j!d)V3H<7&^-vWIov=-sWEYa#-=HNXIF@VD54>8LZ6TVU0CeyrGV9UTav(1D;d0Y1h?2~4bL|02aI2ZI)-JOqHs~pWm8F1qpa+NXe!wTir^hsjkwr$Lv5EYZHNvZ2-YN zaP@!xT9DnL~?wR7o?53YHtp^ZV8BWO_1@IO(V|l0&r2KV8-Nq_Ub>=Pb6H zrf}nvG#ysmR$%3w#^^?yi14oNry(+pjh3A~TNfzzt+?>vG8+xDE6s^xrSh4V8#jjW zAm+7`byoAH{=(if^gjHx)o=0{I($bA1SzJBW;oov$Aj~0vGRDyMwYF*QRY3*V<1`- z?Ko%Affak7NqRk24FG#bXKfxfw%1_-X=!Ig{WfLysLMy4?(ue5IYoJIGRY%NbZ?8( zyZMS=dMz7FCRj&PS~WYCuMumSPe!5>f?5ZiH~IGM_o<1@{Gk_IDkrG!X^rJLu6=)B zX?rf}vRgZNg#=SfO)Wt`tG2FN1_hfee`07-WFXy1bu~xI`s}DV@_1E+dn=Nc%rJb` z8^3rhWV?qupNaiG6K9qo*}Q%j(yc?i+C8Wa6>QA!|H{6a^D~-M@f)ZY zUnlP-&@C}HKTW@^D1z>IMJ7os*tWD|vqP}!{cdY3cl-0IRj7RjgRs`+yDe>_?Cq2h zvO(0e>gVlLuVNX59`w(zO@O~|m-}Hekyu5sqVKb)r+Of7pGzkN6=UVfaw!i~>m~Un z<>0fN(5mZJs*5N~2*u{7lOQqvPFF{-6(MMekQT4Dqk4LAvA@G*{#l63!|5IUa7ez3 z;w+Yc#_2rll&#_q$%aAc{NKekdS3<+YGtCUNSA|8S5#72n}0pW#1f8mh0&rZ@!Y(I zAGD7u9QIbOr%e%ACVbANNY#mL3Afhm+KNUjgJ$1cr1kX`!vtdT_evajZkHxD*&t9{ z0)s3Hq#8ezD&c!?hp$G9i$jNEIGtW`N0SZdGg->hmbc2;>`$)LPmA2Efma9$S5i0o zNtjJ2hLd4Y74j)(nm#JRMQjdS;O0o(p^BtQr;`aBZg`G+;(G$LqP88EFZ=0(zP*sR zCQG+^qnA+$5gycMxhKz7bi9=tv^sNZG<tWSLx-|EaqUKvy zftt>Aq|=RDLn$%Z($&U*_zIp}(a$cUmeaZ4DG)OIgt|j9iwkuY%elJ_mqkc#Ury0| zR}byn*w&(d$=5-7n0%d4~7e{Bd!dLc#4edzRZwWIKY^XD1=@Eew4$ zx0nd*KdXR2Q=@{L0*#DFuE;6y$!9=O5N_>yN==7JYlR@5qNCu+M`rH_L@UMUN9?on zA1cXaD3z;x08^yNvZrp;=Q#DL;&CyvO5WSVe&sIRVy}U0&H$#Dw0&RB7X(uxDPEZA z>n|kVeXYI7$nEogRchYRY`AM2S6j+Y5n4s5J!{meBDJEiS7_1Nq$#b{phh%}QF~K0 zYL}p9{ZLv|5u;*-)T}*XS0$Rdxqsbr&%Ni|bN_nJ`JU&$=X;*_eZSA=ap&;@LU0OC zuD*5s)>JAt#j{{782x?bM=d3}^v_x6InA!|PQFk?Xw0ynzgEQ`>2IFl%O_1O__G0u z(K$`9Orh7t+^qSqyk2pT-x>DW3KD_*ftkq;rqqCJ-_M(GL(djat($=$jw7kw2kazJ zi1BRluKA8#qx^gfVg2uTW`a9AHg-yCcF51~OzkMV2vVdzsAH>%kDV$^>xy##5*D}> zB%*lJwhZdZWx<3nu1ndRm9=X{T5&iyUv43;c2&{XvjzI4IHSE;CL1ZmhF%VzXH~y)OcpsF9>Y4^=p$ zsA(ZE(o#A{`$I>&qq2=pGu+T-^7Z@ANjrh7vBLi==sg$P{A z_OLPH+9E!AwsL^ke%ubwH% zRr?AMPbJ44&+@9lXq|lr*J_g7iRzbZ4Qp2LuYkBZ5BaVew}RmPsK8O7GZ9e8z@Gu9 z_{>BG^ur&7`F^S58!wQ(e~5vIppRJW&4AN6j!FWHo~+z z44|XyUyv}--S*u9(G+Hs2i(sG8*SaA-_#A1Gu91E(=oDCsXH8vFoKAd3s?2AvGmxh zvy2&GGpM*ug<56dxNdgE@o-)@M5byx?rGVb zxzMj43a)5oB67eUx$u${a?;TBp|uxJmep{{rhsvKTB7zIsusVWez^HWPjUU(`@)yb zmnFBrwko$N@u$7_k<{qWe(e{)rAG6LUH}*ET4tkNqs@;O8(ci8SPyYc_0Z-+GY6)@ zdehDwUd1b0Dy-JskWn{#u5OD0&Sp74aF3_w?TVPb`CLvWpG>Y9qSA}$q{RlXKmFsf z==%vw?`D~oz#?c9qDKC_bA-W_JAx+2cEJIwPAT?n!C{ygZD3lHRhl`A?!`zO33Pfl zOBwYVfTw!ucd-5#`UX4o@bW(}bk10W_5yg+tXYyp$eBL_w12X;qlo zanazcT^%*BjEQ?zd*bJh$Vy(U?X0b~*k_G&!@w8=IIjwra_W-cMtVq{Yrf8M@+5|7vR7LbpoY78sf%&$Wd_f$A z#@P0fmia@qrhg$U_ouDy+z(ZNdc$T-=VDphm zn%6$Jz^?!hO$PC%3^~PDspVHsjpAQo8>Df@<9Z3IB1s}8;IADcv+JCDT-fOKmbQ;u zs9N%ph7yC{#hXI=OGnH^ImBCRsXn(xwcO2L#cnf676N>amTunlO(`#tc?6>_hhgc= z_KWi1+r~{S0BDw-R%*Ba*Iz~+903bPbX%)%?RS9YYV&9V>jHdd36ZST=K;qM4$5P? z7^mo^XYcKo3*B|H;qalH(>!5Jf7|WiM{XO z;N`X0JY99;yGnx*FTK8C?oGSC4^MHLMgTt3Fw-(cTA^n=L@h=|@2~|?{Rxr8{|kBh z4+f4ZL=%GAY(1@29SsGh#zUg?swO->B>fd-8XZx@H4~$(CEA)rkhvNz{L+BO{XU%& zXX%iGce`h8!IC%hfx68ry64TBDB6j0aUDTjbdJxeNuqVXXFw%tvmN z#qwqRa`I|_bkf+;`w(hUDyFwCdjFiJ)jN{)=`qbH=zMhd;R5g?UsbE~q-~u)_bCtO zc>Sk&RG?Cm!}!6TbI8Yr5#r9<-S{-no6v{a(k@wadeTS0I;`HYcQ6q88lERf$<{7_ zi-y48J`G^iZc+Qexv(lk;`un-pT-*2?W|&0lN$zoF6+_OvIr%hlH3z{4=(hC&ooq8 zABUx4U|JwjZDI`|KXKJK$@p#n@u|CzGe(UK>V|FRDju6D+YgJY zqb={QRoI1ro+k_4`zSS~Vrk`qD!DCwy9It#SeM(3UKoWLL^$_$>sCJ2&-D39i}72% zeQiUI4^@8fSEm2?V&$hznZHl$7kUCWe{g5oF$-t|W+j!vdI2m;qUpeY2NnNY*Zx@{ z3G>iuZrDnELcZ~vOI+-8=&gNCv8k_H!aeCec0U|u4ROJXMRSjLBi1Q%S*@M%;_cDn zbG3f}9r>!+XYcCNND>y+eUcPKE6Q3^eZD?h@|?@qTuI-slTE#%l4PgjjLW6F(u2eR zf0h-;P!U*q1A@<*!GdAhmkIFGBCdQ z+(SH9wRr9CwmH^@Ffs0R^iL?0AK5Ud$?Xk&+1+@*T|(pygz)zLU<; zC=j?Maz$`daFJ}w@~vHBAwHm|{(D_S81v-SVs5)oXUax%2aBPp{5D3`GzQ!fYoOX6 zrITg&4CF9;$8W12;NVy}9bz4xhMA^%3&K1$WHTZ;Va*~;zhpAlala?Q zrzduBZw0yolm5W_lNl1p^qUhh*&g*+h4x`+0L$dZ)9d6?Sm0^dXVH&5%QZU~?X5R% z2A^~Di+p#&M(5xRS+vZW5_(rzoW$Sw2{!jVyD^1fY~Z#OTRyP!ZP+I4$i9EZKGsq= zET->z`?6H?!m;@%(zTpZv0gssq99&?nh<2s^{k%L=%4tw;+x;JXSjcieii>xKmCHO z_;Bq5G5eux!L={!oRRBDqNr4>V)#^~$@Hr7qC(pvL7>DLlmE<_+>W zjfUZiNrwvUmPcN7rzfWBrJ7+G1c;E%1e`taf4PZ20WrJ4lmsZ&+eYAN@pAey8$QD? zOJW!xteHhK$>Q2_hC|~X-vsk4JA#O0`>K)0)VhsO;Gs>qNca_WQpv+_=VQD18mH1z zMx<4-B1T#Y^Kj$uGL@rl$ZE91Px2>yX7ggwjOZjtUqkivzMdx$gf}=MKzdv|`7UpK z*dBV%% z&(lb)Vw_H;DYeHU$9aEb)hbU>5b5o|v%GNb|gB4lV^;6A+ceYk7 zXs05)h00wLLdbrk_;uxs`)Yi@aSPO>xUxnI*%m}yokS#l`Psop{$$*efRxf5KI<4< zw@F8uIXuN#lE7!rB4SO6PMV^5tz@?E7IT7Pi!2ho48K~sNbF$eh}1X+q~Dt6=wiHk^wgiWUz{U1mC@NowSIre*c)pF|c3(@kJBd@J4(7M|( H@_gnW6~ADb literal 0 HcmV?d00001 diff --git a/plugins/evaluations/docs/images/AppersonScoreForm.jpg b/plugins/evaluations/docs/images/AppersonScoreForm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..431705a034bec96808021081453b357477ed57b1 GIT binary patch literal 77544 zcmeEvc_36@`}iGWElX%Y7+Fj9ono?Nmr~NAq%k4;E@IlXk0_KRDMBS=Db*B}MD`^l zTlRft%-s2%J5>67KJWW|`+eWC~Exz4FjN2 zgg^*MfXf@DM2A-bI6BN3VqD1k2;9Fw!e>rEkkpDFcU=dM!+4SHP9DACf!JADS=m_G+1S{*moHn+y^4#Soof{zFYhW|UOsMi z`fuSjANgyD;#j_%gOg(gC+CWloSd91k$`jMd=~EigaPdh#LWr?LwC_AQHX&Xh2}=l znnAUf(cYo3KuRVQ{Rad_erRAYj7-cdtZd7c1GD%&5d|@zed)v10w?y3o|Pd znq3(ra-$j7@hCFs?y%<-^*X7pM7@YUCsB22ifmyJ12J^@jn-pl=Gpk zYf9b7#xWo)IytwfzI&P*VqgH$GSX#YVP;aLi?B|ShY?8NCCbaBbn@CtM1r?gl_SdH zhugeQMd%kw|0%-1mO$#42((6s9ZfHj8^S^p zg2(sozj*XhgMPEi?UszS{9@w)gflIYd?6c??N3O%4X*S+aw`20s+!bQ z@8Iqy*%v>!t^+?2OTsx9^&vT56L;&t@-W2bIy>m=}qI6 zC*wcfyuFD$M0p@N5-K4fl9S&YcLgW?xaKLgCZkR}-C3-mcl!se*y&J0np^NH*Rq?2 zP7Gha)@47D^GNW!?n8NLST)B#m;Y_@zUFK~-PFZ?XRWC7m{X=cqgrarax|z;S-u5R zO--Z=` zP|JlQa3P1n?H(!|tGJSd?ap21BZHWW&{p5UU5|TacH`?K zl*U~qT7%e&KdyYSoY?E!JlvfB?HP6Vn@yKB3VpS%X_GSV3mV_-T+4dzT)JMAD=zLC zPssaWEgB@(JiK$#g*yC(26^9(UwMD#elm7#Qmu_uuIBTbyLDRIrd;HLAG!{}j{NWk z*M@AMz!S8J~!g$Jk{?jst0A8)01o|IaDDU z^fGmC^?FZdAv4h&?w9)yWM5TRsUIq9n)uM-(S2X>ut4w)m@(XBQ&@gH@hjo^24R91 z-1#Q!UiP3)v~^h~b3#;&t!e=F2@R48$Tm$+oBFEn(s#3S#4<@XrR*dn%28~vod#*s zpevtO2WvNJXc;^&vb$)}N-<5Y^unC2-taDD_>-SRM}3Z2v%JrT!7@Tcb1zlZ>m}yG zjuj}8wTUnGavHsdb{DB7YYh5%8iwmq+OVG}6T3J0eEV|c3HpwMYDq+X-|+U3J5T%h zY0x9>VU9<8y0X0d@&)%tG(YkfH{W(<-6q~>mWmSi;-f42H3F%d9*hY?fumvpq*=LX z@y4TEU+rGADd6_9yOXBAO@1PL9=cz(f6nFM`8fYCy64H*$D#hihi@EM{xI`H^yKmB z(@7=#f$pzbvShD1PUcDp@)632qetSsL*;k&D!c4)dD z*2_P&7mrKnQm7JWpS~QmyS0@Dx%qF}geSU}R}Bz)NCgCqlT)teqKS>U(FzfJWHYx_ zXU}0j#os#d{=8cx>>7?2%l|^Y0gs1{M3HIGF;bwdWu`^p4(mS3&Bi@iORK)F8bvSzjo7O!;7YKT^8uw8K|uQ$CbWg4SeJ|P!Z<2Al@ zR>(|BI-*Fq;-vW$56HE9ln(eyFSm!x%-CkO8h;aVUG;b zoeO?fn7eFt2Grus$(v5DUhQ7N^%+-LYmTXW;WLm_UnO)z_3DeT@CG~)_O1&Kjjd^_ z_S&~+Ulm7i4tH)7Y4-E$@^Z`TUAqNbT-YYl9+T0iGF0KLT;unh`vs;}KT{dH0CA|1 z-fq;cIWh6o&Lmqsc%x&5i%_PH@SU2X2OZpNhX&zQEwP(|Y0!rKCL5)X<|b9tU(z-! zIdjy_D=yLLYsW30oO0>7oxV zX-Ox#Y8vDkg#-4eH}&lqEDPv`WdDPflJVxGi?w#2bGv7F?%%kfLNxxc zDJ;c_Q)!E*KNnO@IkF$c zl4^E6VkfO?Lh2jkNgQsVD4#EHP<7wNNfC|Ugj}u1U^uvH=@jjth2hGKHuFDPHz?)a zuU$F?NBX}v;}t$PA+_t%o;s}p{S9w(S8f|lp3|Am7Ym?ZD`*hw1w6alQ*!Wap*`Xq zd10)=gFfbQJcGub_|BAiLFYKHx6F4P8@r%s>sw}t|iv+<7O@s==$a6fvVV8b!{ z7zd3$p&?nH*uloE16PcLFS(qMcd84EED^3}ai4Z;$QoSVV2!(YM;nW~P_(6Lf?G}`yc z3Bk%ushP+3=li{GPOa0?5t6;OXSD`2t)Rg`hXrrMPygj+GpI#;(75(apK`tQs2+vt*`Vpb~yQ*eQd9)?nG8=o^bIY zDWV3W_xb1B-uh~pjNM{0Bus-6$k^`iOtj^}x8mxaPnz%7dwEt+m-kam)BC=|kyM`L zDMhjS{I4`{#8-YfRMeF}P4X}Aaxpu2stVe4%Po(m^+2DN(zJ=g8+6kw+(>AUP^( za8WL&;!TO5poz139b+Ulu8D+&XRel-+K#!q_(x*zh1|0x9E+$+KK6wya*nch?lTQi z0iCDn680FWE1q)e#KbY))JQd#+^$orvOC{Ae{-%FV$fVmIQC82L_8v%Ry~}dpw!n( z!24`mvnJY2y~RZgbiUp-a4wbDRr%=sC$DGcYC?=M3hWM5z8q={c>*U>z4iuj`Uv+)V z$LjQH0xz{U$aREbIsM?MPfB^tLzmc9c|$QDGa6@tvfar}9VslUbN3#1yY)?TG-{5J z^LW4`{u|+y?3HmaKW&*6clEd8jdVOg+3_x%>->(1hE_sZ0Bj;}aff9X+!>6vB$=$Q zPc$C!IT7c}m?Dz&_?hj{gRO(E)%$IMH9TwlC>~5G9>8TN(Vz~GteRwsfTQ)z=ie1{ zpQmGz0;kT`&thlnW|PxS$KP6I?)>W1v~!brRVLhC zq!AT6&}hUmu`T8EZvI+lA3q=TiRhDgCrAA2hRCKvZ`+5*<7iNXnbT;%Y#9wI7Q}2DhT}*D3Si(uf41?Xm)G#uq0z>q^Dk5+mN!Z2+uM%(F)0&ETJ1zN zrIXM|Icc&pz`ECnJ5GPFMx8w`pz2U6<6JzAl_NnigD?f+Kl7%y*-X z!j7;*#7*&&M=VrYwrMw5+k_ep>qQT`3^YoX8|GsD?!R)p`PJ%CMx@eX(8?oZk{Z2u(PAl)ma_cW}wbK)Sa#H-xnu%$` z855JEWGV764NCKl;Mlw8+;m%(Xl~~&^`TEq`;R8}%J@R^7mMV;H znn?4)KWUtT+xN_>;%)lczgvfR?|+>a><}V3^rT+BF(Oj@?zH9=pRZGjSD4CtPC}>@ zpSZsD>XOMgYD#X^fZGE&Px)YF3Ds_AHA0-Q|MMfa8+-Tn2Xf*Xm*3KD`|M+vUHs(v zvt9k^IjO0RRT*&Ih3c=*F9AeS*F@wM(rQMqEGef=pfwcn|}rmiI$P)ft0|_`Y!eqlfpO*Ks znnTAnh)2ZiBlqE+Jmqtgcr5ShJhAUhKlbw$AtP2E0U2jW%N|*QQnR>TLhS}W);W%G z?%bC}UE|p}o1Wm@ATO!jph}&V2U*Se@F~$3jd6_wcg>D62Hzcg{Kg&o$wiIeW^ozE zT&JS=vTzG}WUmInkt#f#EPH-3F=~*ENdQks_+`$rWqVHOG8${G2wZ1iy*<5(-6>U# z?5Xya(j33lMErWzK9K)}>f;r4pxM4aw?6e}pUdCVv@xIx_r}NECGEhVm5GEx<}J7M z>YSX0gLjHlG+%^ZTwcAdnX0vZqgJQ(hSie`^@e-mz!0TV9L%>GXoLJ$fBF8Dp+q0nKydpyLpao-mz~|Mxh0 zoE~SRhaf=B=UPUO13w><2ly zkSN`0ORp0*qzg3S3E?4c$OrO(+@YNi4&1!~#*lt@1LR1_fBh}OA)FAm_V2$%1V0lN zL`LH7ey*z-Yps0HOB%Ksf>;p2$^4a02j>buL{@i!bN4iEC-1AR?=jCWa> zANKHYMHsUFK>tR}=H%fWr0eSJ_(M}%^OZOLfd)BQ9Pmf%{ak$k$mWmt_WcL)-9OO3 zlP^E)sPEzG;k`(?-1GePjD9A7EYLO&cSP50z8;>Ie!f2V#fG!Y6&TXruTvD074>HTp%QV_%rE);fz4$t>JWUXf2gy;J$LILsa1_7eByWk22U@HW50T`@; z@PRdqrB#omRgbQzrB#omRga}rkEKkE+urIiL=#VGC zZG~Jxnj5&>K?>p@7X0HpB9ICs2O+Neg%yr@Pdf_@o|l8xruE9n*Vj`^Uf$hD&K~*O zY&o2Vn|z?Xr@W$^f;_Yt8|Z0|bHV$H9L59BvbN}OK1o!>*+E;>M%6;W!c!mb+In!g7CEm{(N6;QBkCzpT7kW?L93leirqQ z+HiA||EHWjzE=2OLjGe;AH*3fZ-w{q@bkvu0r@XEff$>Cx-BfU3_Ngt$lt=780h%< zIXh_SX{xCkYG^8|D=6x21%DB*sivu*tE;G~uc^A#P|rYrGtx}I=lfN!1)e7EKEC$u zIQ&nZy8ju^Mfv{5(*W=7?2mUa^!9M0E7jB9+Xs(SP+Rmz4S%-6yplK5Rix$oS7Fru zCt?1U@0T!$-sY1X{;IeCknN&;zu5j%>aR-D%@Qe29xk17xup`py!V*Ge710ZKU~`Odq#@ zlk{hj7Jc~%v@Tvpd9(aKp%*pNuViCqA72meWAZ=D9q9_cQcd*rw|jdWadyS)_*fa~ ziI{BFR|7+pnyiwX;^IOU(fzkoU$)kw=3L5cF@jMXI2u z?Lo#iS3f$vk^=oFuZY|h@-9yQYu>&8L*B*df6eRNqNJvxroJHfZ;~yD{a@?Fc(AMOpZf=r@^?!>uv*)l1M#kV44lEU*N1Km^hW*1 zq(y4}mA>~^R&_Ov&GP@4^4Fa7uDBD-t?-ET(X%W<{gwJRr75dvsHw=PC}^rF&_mEr z>WWJ9p%NW4A1VX9s^UD2iVTuVogRWl1q}u;AOsi{4OInt2pSZ?pgBPZ3_x8OmK(zgoGe32avqfUo4kWdrI2|_xJ zrYeBdl@Po-FgFkaqf}AU1U!)t$*ZY>@sRH>M|NKnleB&ii$FdN-~PdGKwlPz>oovqPh&QdL=*$`U2<* zpqHqE4g>5RbPZtfo0ODP!30dx&`{q%QA0yl)lflEbE}4dlA*4ip`N+PnDK&nv;5DA^P<6aeh&4268^HY{}cA}OqUAzBjqlsYe`*yq=7#oUb3zwb^VbB z{)l+Vx|Y=SM;iDe;w9@^Qr918;E#xxtZPYKf24swB3`ntC3XFg2L6b6$-0)*^+y`` zBjP3NT2j{^Y2c5Dm#k|^U4Nv3KO$bTt|fK-kp}*Vc*(k!)b&Ri_#@&a>snIRA8Fu^ zh?lHuNnL-Wfj=T%vaTg{{gDR#habWZk(q#_-r6*JD^u~02@#Nd^Kk0&}ru3EeP!3<_^Bt$biV~>EPyo!0!Nj-ro=Tk|Ww2 zz~}s(@c{s?0kF8MpPMs)kq?Wmbi><&-NTH?C;r5J@i->{BRhiGy?0sZ19&s|Od`AE zBKYtk*cW_K5zs>V9-hbO9~l%`kJ}&uwpM6}7~=z6@xH#Y+rj=|dv6C3eGfNJdv~zG zdA`m_E{NxETf*q*`QYCsE~5K)Akwz;>Ek=-ZH8K1`V03f=P#VcJ@7eF@DW#Z_%Gby zn-G+H7HrCH{Dl+03qf3GASkDNQGHe;_OfUJ};im4eDZJx9Go6{9Lq4X8F$FKP@$W{0h~W&wRfZUbdkl{lav0t+lrYpXv@-NFOoH>#mZMjr z*P&(68fbmAC3+wF2-+JRioS@BLf=C_LBBv3p{voY=mGRBBQql}qX?rc<0eL9Mr%eK zqZeZ+<7LKMj1L)e7~e5gGqy2~Fv3h6OoB`snY5TpnD#I^G6gW5V~S!*V#;QE&s59Q z$uz~x%)FXeidmi6n0YVrQRZOg%gk}i>CA7KE15f(Cs|ln_*pixXtP+d*t7VuoMXAk z@`#1RQpM8AGQ+x@6~n5;YRI~e)t&VeYZPlL>uc63)^650wiRp=Y+7uVYz}P4*obWR z*{P?8&nC%f2ofU%q^~=yJ{FJC-{yKe0S!`P1be zm$xmSW#?g+X4hx8W%pyh%AU;rhP{D(oP&cyl4A?UJ`P`ws~jmDg&f~FW;l5{de)3tI2DG*66Omueq@1 z$(pJ)(|l|Bw(#NkF7l=G)$)<~MfkV!yYOG*&*g6xU=)xR*dY)ga7W<1z`)v-Yd5XM zt-ZK5b8Vv_gP^pam0+-7qF|}uq>!+Xk&vg*O`$@e0pZocTZE4aUl)EY+>7DG=wO^N z*D)kapU5f^T@hE27?F1(BkKg$8L#tOm$0sE-JGbDsI}-R(R9&fv1MW!Vn@WTixr5C zh-1Vp#E*-oi8o5HNoYtoNkmH&NlZ&hN!mz;N#;uSNbyOTNCioyNqt?%bk+Tl^c>5m)|FUO}b%jT-Nxg$)u^L zNzi<$Ijg0n<*SvcHM~i7lgp;mO+A~XHsd$n-`t@ss%@{Gpxvq?qH{>+u1+g<9o8Ou z58J*)Y>UH|q%GaL8+4EAKGGf1Q_%C)%hsFL*U}Hse`A0)FfzDkP_~t4tM%4fTfZ5K z8af)L8IBmK8U-7@F=jG0GrneAZz5!ZGf6QSF;zDWF@0yoZno3xmRY;Gw7IwW3kwDd zQ;SH8uiGTHxo^w0ge*-gBQ2Y^OKtbsp1*^6$MzkuJG!hCt&Uq2?d08Qw=;F;)GobU z#9d9+>#hB)3wCquw%whwd)mgpCc>t5kNlpHJtcbu_B!v)+sCqR_r9ckll!;szp=m5 zR@L^LZQTK>1AzyM4+k!i+n?tFGDE5~2_v|MRn;gD`zPx99FW?k?`{JcK<0Jt{pndY=erV2rb_+R`VRYi*$z>;9PJTY6a4O=|#A%z;FU|;^IdP`rtkK!DbDZbA&(()*3X4C_c;5MZ z*#+ebH!r{!9WH*lq;M(f66G@P@~10`S7NTvt{%BsMpPr-31<#>53jq1z4kDIJ0d8e zBhn%==eo%Ci`OS^*xe|OQi+O>UKZ^a-5O&alXp}6X829YEvH+xv3jxTw*_xsxIG=` z5Lb0)%bh3jLh+a4$#TU6Bnc#4N}?vaC$~Pd zdiX9yJtZYoFqN3bkmi@x`^ffD#bblVc~4}YB&4rSzw{J(>i4uS<4{Ijrdeh|mPXc- zXA;kDXY*!X%t7TG%Nfaa%5BZtn^*bV^m)OHO)s+Zt(Ocyrz+Y zNRw|o-weEUeA`iASI|_rr?BSTj(276&E9|fVECc1NVkaeQTyY|Vy)umpEN$@mZ+8F zl&Y3ye^&jRU8Yu+Q?6c~SD{()qH=TP>nd#3+iHXA4>cw=CAHgXE9 z($nDDFxu$fIM;OIE7RAD%`2Ltz6pN2*Rr7{y;ZICRhvOuY5UIhrVd<3|97A7l+H6< z99>b}nC_GwrJk3)hP@Si`};ckJ^SYd&JA)8-X2;%^lW&`aOudNkIUiy*bM$ka|55+|EB{yS8{U; z@Ca<+CWP>RsT#u0Qw{cwfF!}aC#;h#95fpXl4e~!s(ejis1B2QC@p5aCl~h zUIJ6)+m$0$V&2M!+fI$@t3=$(TvfGG+@}D?d^)myEYV<>gM{kV)snty*7zUCcmC_M zGm!&3Atn?vIHwhbW?8{4~kNjy;|f_o2%SVo8+SD-*635%NcN3P6$^b4a$heO0^0d z+zq2;f%|oud(=O@8frX+KdygHB4(paW%TGYRyFh%*gJ*VzI0 zVaM)IbG;+2(1J^nCw1&;P>DyXmMyju9JqKAdw_cj7j&|nP^V3RBdB9`W?}&En(LmLO8Fjdp;(~%t!56!gR>alU+Te7I5uI|jJ}@(jfehf zQ{0<46JCO`?U;bSwOpE>#8^Wwn;m!P#Bvv3Wf4CqY<%3(^lo7MBxxr&1~ZaMgT|Ku z)e9NH5#MPLIM(S6#%=p%!FZxWfx2bVZKKOq%c&!sK!2c_pJNfxBYQ%Xt2+C&2$n0D z_b1A3tM4ZD31`h1QS$BvVaek~a1YQc4QjX02X#^oA3VoqJpMgum^wBaKgqS1A_m*q z8I5=pYF#BhoK$+pI(Xf~Gn(4S+%nl^N0lfBXR*+r$Mx__z~cUMY&T(qr8)Z!5yHBm@|PKg9#$m54Wlf+lE zR8TgJu7^d$alAtJxzt*+Y0#xmJNQ9A7oaVIn}$M}D!Y1_b#HBQE%KNN*M4uk#o8KW zy^G0u`zktkd?;(wReQCinMhP0&saS*w?g;4R`|&d8q{A@ML^n&dm>0D3$veC`##vU z=rg5?N(a+DE2Pb@bT-B_c$)HV1^HQ{J8IO#_zMYy(G>!vQo1+BrkA z!cOcafHTKt7+7p}&b;P~UiUuIzs-(4;P^HydBm3l3JaeR^3}SNrTDq0OpPVlp>qTr zS*IR5rIQHv5yr$%PGWx0kpOT995@zk7fmHTM07y8pghO511K6h%d>@?P7TzuIO9EEM*3Fb5062kG~HF#I@(xx4-i$jrpL^F{8&)v9X=d|CR`p=^anW^Flca z!r!^v_MXXoXB@y_H+E}_9Tv{*#SXJjhUd8Mj>Z=T?JQeQDBf~hQ;lNCi zOlVLbV&`h*ZE@>>!ZEY!vFCj63cMG_o@F5PhepC<*l{pE?Dr*1XM~FEUH#0G72^To z6CiF!Zb_s;uP%)ScKDnZ(_i00NggEil|_TGPLB~B^V=*%9Uu@UB(WELvqTk(c}(u| z(xBbG@zXoVyqLnEJ=fNEoEI6w^llkgWW4|^mvaqd9*E#(d3m+os1S7MNLUyHhQRPo zCxLeBgw&}6*v|LZ+=-THFsetdX?-M1Jj~Lg@#6O0E4bSZMouL@S!1MGcS0xuJQ5;9 zQx^3OG_8Ux*mB7?PtxmqoT(Ofj@^_X=oqgr!6SrXq*advk>0Ra-`e}iBLB)@0~q84 zv6Ejg(=FrJnN*gF4y1AVSetoaeznfiYZ9+&3{9N}J^8-Y@1wzwfq`jy%WtE^5Bxt< z{|yW6U;Y)VJws}1w%l106od0>;-l;!QoCm=bk0>#9I2Ld#HWN#prX@Qi|So z`gG|kyVpm2#356|oy6GBIeeYHxDUfU9WWm_y^j@L|DNJSgKn%OgD!RzJ9h8&RcsrP z5m5Xz@id;Cu=@cKAfd9>NN;9{DM}ZX&Uw2jQIdKa?swT@V?&(Ad1-_l;_tSevOW!K0w*S;4Tg|B&{Gz@mox~0 zNExm4s0KL3+5S!Fo4NWa8I}RASBE%n93$AjrJ#GGsn6i|r)NTE2~B&@54bdXo)WXB zOTeL?xIzl{IBD<^sv?XFDT9mBOK7tD34sz1dVB#L5#Yfgrv{;gr)MlF&jDzCLd$9l zE(`Y_}8PKfw!Ebp;|!HkXz#N-pPbH#)nEDW8jNXH_P5YP)|7|46E z!x9rX8q~@vv~2uWY-2AF>SZ+LHi5!%x5wsoTS=1)={rK_O6DgG6DgMo6gG6qK@TH& zDp3A4B6xr#R+iJCAi{TDfVU4*rw&s-N>zcgPlIWY(mZ$4Ft$rKM5bjreq0oh<3TJu z4m;Q^5Z!GDIQ0kd@H9~N`)x8bXqrUk#7b@u{SK9Ic`<*bli}UQUDMw^z=pw-~`9Mp8gmF6> zv}Q|>P5co;2a(RGw;^_>g9eF#+0R|~be&QfRD_wuQ1<#yV%~Gj@&Fa|fP&9=53eVD zjHW>>2VNPC>ca-487&sQygCm)LNUNHJGv9v!zdRBBfg-8(AZ;i3Z-lD&%n8Rl6Dk+ zw4YZ|grSkJ=~w1q`NH-2B6QngJng0+`wUE|u(T>~X<6mf z;q-YO6u_qYT>^QObr(`gU(XPRURvsxht1s#83mFA-pZY&K?=Uo{~KXa9|{)1;)M2c zc;Ix^IA-P=P(F4plgo5|k_&C1KQaik>iMC5yF#xHntBX7eZ(lCyEpU)xaev7=inMv zLQv=cVUF5d@KYV?^yvYr?OZv#$gX`yWEUDK(m>_(M?|#ch!zN`*tvAxit#qM%dU?I z_rI(7FX@7+{-7H>3hZz-q4yQ*{9Hda5vq0qAc0mxw~s(mE>=EY5(<79KbN(!VtnE! zcp{BA=EPUqjy{LA>24z%t_(QKNKq_myQ0ivJ~Cg4ztC$^EO65L*w~Q{%hsZTC1d)aKblL6|Em_X<4 z8G2Xk1xIdsEKY-JR_T}2mO$!|iSK*G zJfFIJy>b6)1`XmMeS8o&Qs#4~T2A=s2J4U6fvu}-;x(^}y%5jNvod(_wjy0;o#s2^ zk9{|BF#^U-Qf#Mfy)LNlR*b7;oKfp}^KXU-!4|R-cGMA${fF*%q^GL~%pX~3wRD@a zI(0J4Yy{H>9-#S3ueh)P?w^NQ`TTZB3izv)vA3S&chavI$M@>i2?PuKTj*G8)h6XN z!Co&r@^*SKDqFHO$!!*Hb=~9U8c#8Fv$2~oh`U$rcu7*pzE9YMG?DMe(=Lo%Gm*5{ zeqHXqX{CyhBWcnC8yTnH2vf9P9+1iT_-;CQztQ^7HG8^BIA+-ih2Usr#|QBWa-?BW zHGn=9M&q_9h+Kr_<6GHj%z1U zY>E|n-)(DmO^S=yYO%ZQL*bQ!IvPL`bPL(_C#a1g$d)Jc7d(^C5M3nD~1OBZ+~@_POX}sCjUdL z$?IT;9j0;MK=yL|a^hTr_80K59AnW#`~fGp*wq5<8SYgpI?s=SES@)zcl0&!T+>Q( z9pE*0RGUjj{zo@37UI-4U~fxyI}rZif$q*QDM{hGs2qY>&6XJNlIjmZSC*Gb=-jSs z>z2#gUu!uTXTM({$Ol^y#3~sjZp^SLulw5L#GBe{&q|3uczZJ}h0XGL4Z(b0ucKE} z>z9vP5*Ws}koWqnTwY=rPZ`gB_lPuc^IO|>+g7fb*U16=G{_s%N4^tP4Lg5&0S=WW z!Kib*y$%YSg@o%PQ^R;M>X!RPhXmv0$+v4qZ)N%0-YcQJS}jQ^Rf={x%}q7#)zF#N z=ZHB!wMHlM^swWsXnE3yIHRfZl71tzk>k}h1Xs%IT%9{>6N-hqNJKbc&0Fw-&er$w z>84j2Coe-f>_v=+1H1|E`f6_HEA9KV%4X*F0rhFFJgSGw`)Y#c9Iygd0VaY z(_KStwZ}2)yJz;^Iu5>fuB|xks|=l=meWww+s=4p{{)Vo&A{6Gy}}iZP7iX|O9|_S z(%;=9zYSiTJ~W62>2SA&!@xxD9g(sZJWRub<_9{ox*?Ma$6YYe(drh)`DM&P@^1*~ zQt-g12@PKo3ptZ8RQja%v|!a2#+S<PVLot6kTU^}HiK!auX5SH3nEbi2YI}yn?U$T# z_g!ORhQYKhsAHW7>rm;_f}oFfrH{M}H#?8ZSviv?zEo#A%a0{s=lj|=r=V+MBnPtM ztHzcq#ZNb6q&j%4te?3Zr(&MH*~mEG58H&5+QBV^=6TOg*+(hScprG9(e2~a=+@b+ zS_=AGzaUb2>7%C~>{gSM5=PrK7(kqBb;f_&8%y2rFuHE@(EmAFO&EZISy~gyE&04oVC#7_@nsDt`U?- zS%rneGGVf}uJ@(d-WQP>x$N*sEjVLN2g~*H#YnGtJO14v@Wi?HTTA_PZviZL;>3f; z3=InK44Y1#pELdQBmpwrbOz~+FJ}nPqgyc4`U^eBMre?a{G<`^cC>Bj@hX?S#xt_6 zfe~FIaD7+XDPG>yf?D^)84WXYaTk?p&R*3hJZbKn%^Yd+v0#%ZYCtgKqr=VUuqe6j zY))G<72h3&$Sa-UTi3J+wTHiLdm?%!e`GS#o;L-e+_?U5)p6TvVNxk8f~OtVp~bN^ zJ&NxoV^s0_Iw+M>`qp;e>>Iall241j!@a3VOx3ZBeR>A> z2E`(1DH6h#RBhKM>a0S8D)7~1q7aYJwmk-W*M+Pnu#(qQg^dssQdI7$@9wT)w^Ck9 z3>8|zEnd%+I6hfA%kJ^|$aN zWEz!UL{xa|S&aL^4{-;dH`5LL+ENEGX%^k#a z5Gi*_*&rwId0aflQQJ+;Vi_%hciBvR#Y}^#^o>>Q;Eg4;=`=is8EcPk@+5pSf^9*u z8_Va8fMO|m_x%Dbo520yp=Mj`QFHMm$cvD)G%7O>uD(QvH_jQ#BgMUOeS%%^ zvRouM6;XB|o)ix2@;W+rea-wGpjQ1v)rO54!P~b~+ERhz1XL*A3iD3q`tse{#=wta zQxi7I^?;$4XayV}c0W^Qh`>(*f`x=_JqUc~IAP&^CGPTxA)RP;9^T>zuR19Q1Jb1< zG{^?LDv9{gADYleq3fcF`#;YDKc5HQck$pj@P@gqG>|lXMCQDZ^s{FtQmd*M(#(wi z=mKU2u(#-)w?5XKugxovvAqJZJ?rh;m-SJ? z4%B`xkFpWl@=5VLma{$vA3hWsL0)Zk)FC3|Lt5Gh{D=ktK|e*1v)~PcPmv*EHNO%r z+Kt_R4G56?tFRiAX@Mu{h4X|9^bu1S@|k$gpV-R{ERE5W6nT3Z^w4B_x#c^-1}u`B zxL<0t1l|?>6wGJE=PvFG#ncs3yg}p2&pB(3#plY;S{*E;LE9q-d!1+E8-ep&kkn~H za4Mk_Neo~o*>vin;;$CzB+Cw5zgqd?AOTcdcH6f5IDYfw%zcLY!O}}k@P6+UhdF@* ziEn2}jpH`c5@5~5M3a1e$Mr6Cj*9Vk6`L%0(jeaPS)g2HE5(<5HBs=gl;)nnSEZAC zNy7-WSp%VuC*(nj?U|5iCDzOeLkzT`CU-bnfk#626W-haJVn0=oPzZc_ zJHzZG^&ZiIL5r*2p zf`xo>{5!1#cnY{R9|fh)HOL=sJ}QCPKPSmGmq++`5iULr4`IecDbZA1E$F}4$!Kd( z7m0!Wk4=DVNGho50Mjx-tN?+x547?$;Y&z)fmZLN-u6%KJMKv!W6YEl1)jKuwlm8vnZLh3|Bx0c*eiLSKI<)) z-0ml3(p;8P<_9t3$u!7~;PAec&}oS{b+u`b?c_nA!U!U{BW09G2}{ooy&u^_`bi=` z5c3i&y#mLZQ8%IgPTB|T*iIyq4w9+mDAgcde@;>!z2H&Q?HR>j5VzyTaj;5TzOw@} z3*IxHyod)6gJQ>Quk~cE2E{o-=Xc;!N}H3xzF)`}N`PPVA#XGiVxzAUDcCW>c=n*J zDG;wgaR#gqsv*+K4}_0K!>+}^i-}nd=l98_VvS(`cyd4Xj1CcA|0?Z*QBIJt@EBM# zx`~|;y?PZ59J1p_EMe9eBfzx)qYFyC1Xf$SVLmDk4axyIw1*pT9rBchNIL%v7)aX% z3K%gez+UM}KZhky!J1&Y4-H}`bQ7A88cY+8V8F^3K;_im#a<+geV@Th4iSJOeRvLd z3N%=M-Q~gb4mjzaO_F zPs;;Owl}u_D+#!+OQ#-52)E38Rj=MA=3-|p!@vR@9%dz!*^%cEQlAh|m6k1FYyykw zgl=}Y91LJmG-x9Y(l~Cpzz!^uJtv&Pjz@!9fF&?TU|gWuH^5Z9p6+QTZA>2LC{lgU-J%yutU$GRnQ34_%*X$>(5XeHW&IC`eRFV|6 z%Q6Y1izS5v(#T#S4MH9FnwbLpswJ>Qe1`*}bJd{T-Rr@aEX2hN7JQbGL5sYMr`WV>k`Yy*2DG6liEST9t7o?HGpR%kPsPDYyS z{ZSsMaAfU-1Q1<55d$=0T(}MlRfbrYVHQiLqCsF)?6y2Lh%iKhy1{>TAeN~%!PIU# zg1ioKkXHc}ygpADQU3^pCsMzFB{_PI+?$%Uz>R#Wpnx-#ZcQ`5&EFNj|MIOHtw9velPVA zL+TmGs$j7BV4;(MH1LYduRmF%+m#94gj#v>HjgY!!8w{nFQzL!&pQ2z~k>HyASjLoRAJrG+vW zd}Br6r#b8-P#YKpz?wr`I@Oo}yzxK-Zqw4noADv>WMG{bgqUSyXCo;6`3@E--P?zh zZ$1(0gt1-vwP12CZ$@bKe2`N~mQ=m=p~N4{L+pStl?5zOB&1=Ilr4Fy6QW( zrt8VTu@CALE4Zm4cC(}sE-xl1Foy%1Pl*RJ6lub@pvRyhR`iM(wR&T~YIa2Li2E^a zllw0&<0Lnq+OaC!nU}3V1CQw&w?qHj`%4 zs2wD#33l!+c=(!P8N=srJrNV~V|>?$Rqu0@uXBxiTk7{2Dn@C-#r=d%3@BeUQP>$R zTV2#AsC?nNKbTn{D=cyz1D(axa_USEfhpdZc+U*jKyO+_r3V~V=)cHx1j&Ey++<>?tRO$o0PNcz~~xLO(Nqu zdZahN_YUtCJI_|oE|xEUt4&@izJi*_Oz3tf0?W)T8J)+2Rmepn=3#@x1VW!}{0E&= zLpcu!A9XtwEM6B;O~OMmrZWkQ#mIB|_VCyA9V`*`f;t%#UMcV{;*ISyzcFeweDMDf z_9pO9uJ8Z2QkD)TRLC-lXi*a?6h?83A`?;^Wn_p-30cEKoKP5BhAdMF$thbQ+YlLR z2xW=MGPdk9mf43%g_Q65c^lG>Sv&yROrFa z5Wgj@0BjK7**`-l+Whe~sH5NqpVd`(FL#zy2i|-eG>P)8HWgWZv;xhTkv|~GymW}4 zXG7dS=P%|df=@8tQppd1eF}$q-c{k(Kt2|@Q>58Nojc*fq#*hK>KBsB9n7bFtBsCn)EgU=#G+ZyP*mlY%s`hG@Y z6}*6v%&trMJ#t&t5bs%}5g@zUk$pY~K%Ngj+~cHvlMFJOMg2hW0Y z9tZj$(HSU&tB&Db?g84BkQ8a zfm~L}blKQI^|~J8trhV3myi@4owD!{VI4`$RWfw)PSVo`a6v95b>{f3+#_7W=rD_y z;C{;hHQ_JpXdEW2*Hy6sHCoK--c4j8_K8R9BNnyAk|pW`(nFjUig7KPaHAa1q3;hv z!$0`+NQU_;s~_vAFqz%Us3?-;Q+-26&N%6nZ0I72NjUEo!Hd{r1M-9BP$VC+bP zE0^lOd@bO7yCz23aZ-kvC5%xkeN3&)1@NI#56gao$$9Ujd|F(4EI~af3weY#&C)sk zDw6;oj55qmFKf|MiPmOI!V^at8}n1a)!G>)p=)1H`Gf*KR?N#E?tvD#1Dt^JbD`JE9e3>6jKTr4Zl`7;#vGgNzi zf4G=J8XM2WF_uqgGpK_|Ff+OF{R12C8SJ;yDl>YOq^SbPcBM}RrEr;gh)wC_t=eYT_`mmr$%>rPUpr8@Cu zt~-2>mkh=%O1YQ)*y6K=qQ_qVlPzArT9w7)W`M%3OPxVyY~@poIu-C9H=irApc0&5 zt2L)A(`Z2=s`M|cKy~n#iaYHpyui*@oabhp9X#tdjD|(XZ!BKrtgrK~c2xwg>moO5 zqIwRm;}4DN=01OP=0ubPA-nwj-7(SO95gsc94r`(k^0n-d7U=@P^2!zkr&k4sjkRg z0vB*O^xX8=!6aegnifW7h`gYOrUj7NT#iXkr0+Q}D6YPDjzog801zXWags+xBdp3h zqj)jtMQ?e`I<^}C<*+J`>8g8@s;8V(rN^nlx7yRh%+SCk@%o;lr+Z&FJ~>x$y%gJu z#;&@v3qYi%s-Z~GwGF$K2%xhF0mo6rP67P-TJMNC|AA3U>SD+G;cp-U0%YKj#I#XJ z^hzYP{3eN>m3+JP2VXdZ;!=639+j4LgWtjb1Q7S%uC!0r7)OWJ4>Ug%r>O6fuQj&$ zIMs0{OJ|h9#nQl|bk^ z$JpZQhJh2^I>o|9kwDbU(mfL8G@=AL)}5xdqZ(LlS98@RIU4I3i{8?#$b}EP_72$u z<6d)4M0czQ5G?~)@-rc@kK|ddX{pc?=e^~#T8_zic0QkLhT`am` z4*`*v?q9HHZcwy{0xvMT0o4s#0SqyxP@$x})G^B>FZt=|>S5+&Ao?Nq(~xt0x_fk# z#LA&_M2cMT%JFoFSq6V+#$-N}nP{Ge9x|aKXRsP0+q(g0F3ZOlx)gBFpfhC8MPYv+ z`B9lzP7i%z#w$IwdY|#(dg;WP6J;GPb2|D|puUn}nI18FkNi#cfF zaP=lhIge!RFd(h?DHeHsf*&_(4dLMLRh;PrJ$Pne1m{*Q#-b zpBUikSvBUdGKVRfqFUSYqZw*Y~!fQf%F=x#qt~U(~t82vd=6zVVchXr)EgyB~ZdF;T(WACyL& zQSYDXa4Th{jBz@EkA(WcCj*=~#^m%!51!GyTT8~MmYJmn^*6_aG)%U4+s+(oQN~<* zuM1bvrs3u(ClVc6&UB|e3Em?+a7B;JMVe=kgF6O*s3J_efNwVQ{El=EBGWQ+s%>JZ zQq9v5I05M974!&KWuy}yCGk!MVbzX$;IB#f)ZXLtgRjj7Xl{5x3ZyoRb8vE5WVZ$% zIoOqRF1%Wf><+JZ1uH$z5{i#A-G-L~f`4WYC!Gu=uO&EN4>RIuGbUoh(JnOgSPyWs z;^v}rfd^GFq?hBau@QwhlppRvY9jT3@7a= zfr&Z^-rV=W`lJ*15L=`T5Rquduv2k$tiD;!HmLk#6&PY zZBVmk-50s|B$}jMn@1$L^xS}`zkV2yH3@i-O2x$DLXjJ^SeiHW0T4$S>TI6Lk#qS zIxzIqHT`FThSFo&v+;W|;$z<^Gc1T*ou0ADNyPEGa%#X`ysih8OEul$3Qd57LS(y5 zSfMQ6dI@5kz-ff0bLEa18F*|}0^ZrypLB8?2>AO5{_*l1;Ia8Kq}^hq4PLzYC$CLR ztW?LDxFPgKR0dei&^q$vT2+P-O|JaeZW9eH)VF1)03PPuJW{trgUQ^rZoLn@%^!S? z&_YeB;;olam;JAU)y>#o7g+NQ9R*ctf9ELJLUb!+gvh8Bw-oqsWT1`xXIR0+WoZ6u zDZFIA=~|bmVFO=2-)q1@9;+dMb(q={=FW>vVDdp` zr)f)&VfQ^PnM4H){TPe1fL;TVdheakL{z%U=@%5YF=SbpR{j*voGe3C{en+_M#FeH zoqk0DgR8XdTldI!Ar(wm_V;m|Y{D_Ll`7o!HoBuXZzG;VErE4$#X$r%$u>c(dT9xH zW`Ph1e9TE@XO!9PUDM|SOOk<~(#r*tk{_>A)MKJ7Y{0sw)c(L9o$(#t&z&bpHoPSdGDc zkEBG#eEGrmcrr{1zV44X{kTk0ejEdQl^s~C)%0Ov-VETDY&0O6mUdX7OQXp%q1{$P ztH;LrfoZjqad0j)xs^Y-T3X{jrD1kH_Q`mMj3+^DhE^;@1o(a(HE5|RkSAAG_cToJ%?-tD9Ji}S+9(Z(YIuQiPkp@$DXql|ypmr>0of7=4qXB4y_1QrB}UVdU!D$m0TmPI0QT1j@uZdMR&ZsVjME zj_~1Ny&HOo5RDe;P&6w2`c%Xd+-HAq_c~#9=?c7%%gN1BJ&8Uy9`1n2m&+v92|H3A zuG*7&U>y4|a)(D!kfltKmgep%WToYnb$uXxqk!N7SE$)xUgpYy zJbv7EQ{b;Qs(In##iK)&J7r0Sa1mI=^()cRW3?W&ptk0|iMPDH**iU5`y4EdWwRql zu5j2(n(65@V@`c|RT~QzOfUJP7oe)=3NKothfG|xcAlvEYpjE?H!AAYSRh`h^e(^= zNhAey#8vGO@n~l`%MTKWv?CQUq&MDrm_#N7?5j72I(foyaXNa!li!t;FFeoI9-C%d z*2?DD^My&4!sECA?TRYf-7YesPttwNsk&B)y6R`dGroRoy11l&n1k9Et+bb7B7G)X zzNlHJV>LF5EmMuVD45M9W6{f0tGsD*3n9ZuVW^YAa_1tZ^8|`!iqaE41iK2gKy{@z zQyWA-9~frlX0`s+Bw#6?d=hf+Y3^}i=(*D%Ri-}S#jrx`sj>$Dpn!E}F4M6!Y>m-V z=!;Qv7C+G$sux&eTZ-^)jrcuLL4Bjv#az9?teN?6J&|%W3DLhiR?p*d%9g8-w2i z$#Y;1k$yQa$KTxnlZ-^OtUPD3dQ$NW5hEjVM&+F0+6tPknzP_=CsklUj&c_`y3pWc__mssjvAPDs18z}>NeW}vg-@1HCY&%fCb=d>vU zEGb>HC$9F-DC;O@fs}Qba%iZmCjzsN9Hy{f2Xx{P_ry6pAt#xmQ5CdjH!Q!2xFktm z=NsIuk1U$H0;cxb%x20xgWXpA@B(*~pM3!}${O0GJuW4AW%+o*9<_v5<8#{CkfRb? zp&*a2YL-c+L(o~q(_Omv&-L8QLynTzWDb}cvb@2uBbzh%!7~B-i?Vp`h<&dt0zep` z%vm*wlatN+y!q9LlB2>leal$nWMqYlB7a9WXKKv7&ud7AL;Mx){ui*;9iREaK$ zh2m2vLD>}|FQ$-4rh0W=G$(hDBzX^2;suAR%&#l2xJx3V-w;g3?CB-;lv zS>2MHX3?$~XrU2nZA-iF_-wa|Dk$>Rwx;hK1&3$$_Whl<5RStjfT`ny;$UaLICOS}hp&LDQAof8rMd19Z&59Ji ze(V!vtB(=cR8Hg6@p9o7)wsKWwen*X3;SmGC@ zzlZx5b-gToWn3h@F*~}|1-1^?2yO)|!327Z%zOwh@u#T~)^3j`Yq#9~KvY&LJ5u2a z=yh%)2%x5NqHzm-ksnX>OIp=WzS8_hMAxb06RZ!2FH6Dx9bFUWs^YHKgXJ{{07Ewhox# zXH@3J+-W_GE#{Dwg=D5uvgC)E;RTMYf_bji8dTQ3BJYy*P(Zif4lCW0NOw5d=+ScA z9rkgbW$6>wJfVs^M7vn6%G>!p@9hFfV3OO>3(|<4mNPD4%Hy6U>33b^-=V7$Zo{8Z zSSGFn()vv4hP-~O3i2Rzhvz5>8{lKG?z5c)y608+BJeW-a%_3Wb#s3!ch6H@t`SJm zIX}Ts)m3+#EA?)W9+jEMCb9PcE3bHaM9&y)zEwq|L#}u?`7KceHvj<}HGJzK3jW^6 z(!1m$bIN8-##jfBSaR;?5C+goH6(W9n67yHKE5EsaZUB)eirU)U4$0!tA_v>hes&| zl!KUBe1%GO#og>_z(ukbEcosuYBagF*sRuHB1yf1*JdGb>_k<8uCaEb&2nw4dV0)F zdIyuVeheBYg>E2$W;y|I7KnYWQS!nkJRTMW#dfH!RqIj*VXIdaA^xPcdiifnUn>Y| z5YQ|_?O~t5+VqwE@y+d^tsDFS^0b3G)V;}C(bkQ+Tt=fN_S>*QNyE7vQ!Eu4b+1Tacn)~)71-zHk zsdq`f82CFXm)nMBp6$6-&-XIFP|Xkqet|lPb+hPiZ{b~^{PmaPfZ^h=7tQ?X82J62 zQK}P=Dz0mQ@$SGaGBxzf&TKTo;ji$@7WnHU##(>yMT5lDAkD9fBkSO~a4>tiQ|n^d zs~N26!=A00Js7u3tiKYamr`y;r9astJ+~6r)lBSy-Is?h0-EL+c?&h4qAhYBf*;m>p^!Z%N3%Yba3wqO!iyRnR78ax{3E$4AOPCq;V z6pS%+@vock<@oKzw%(+^1}F{iT%AOAO5;P*x5&q)XJMBt9ysV#oMJrXC{5wc zAm8gpgds-tZG=TX4LF2FS zXNd(P(OFZV?uL2RQPx8)B%@1p&e)E;907}R2$Rsn=SIF62Jqj6aE8dmh%2qjmvN*0 zdWHtq_Ma#VBCXkHa)Oi5T%p<^%u_IyrX$vWYhJthBpCb)lm;-dXUeB zlAa<)egpZ6BcK&mtj@$~DM_Lgs7RcLmdjw4x%ghk*vluCO>d_9YnU=^&~z-jL5yUq z@Y|GOJ)G!r(w&q{o2GbFr9F3XnWgk{NxAjh0*H_6irCU$SFFvxLNmG9#-dY87srh~l!s!p1ryY}6@KT-); ztD63LF_MDe!)*r1>Qy~Hvn%A~T-X{=FOO?I5e>OBjYnk+SdW=cxshOIPz8X3Swc4f zt%6&d#Vnasnj~Rfm}_GczQ(8TAp#p4SqHN}Q6iX73DlrhpEEsjFiY;1Bjhp~k+=$i z%bimd9tg8jCxQ=>*(>~NmoNR`yP6popC!r)Ji!GDybX4tD|p0xqljf4a&#`7Xnxo_ zO}pPQ$4G$~I6xJU?=}>j!skTtw^nF>Zw3qMW=Hlk%R|2JskqENF%l9!2QW3@tB#17 zks`0wSLi6o4|uScyh(as+}t)Q6~!RYiHpB;V@oh4fHSB2M`R#5xv+6qo>g=zwv z!*ZsdDHU48CE=x0TWs-QV)J+uMW?wZB~15*yfLP?&xg50BXMqFO#$d}eOMj-Rv^`^dG0MxfaUK$3qWKHRMJ`Pt1*HQ$eJ)QF0lX2XgGw3ol3PvQd3*69% zy4Vw&Hk$~wa_pe>T)Lj>Nsuloc4b2qw*VM4YASkRt8O|j%7sBmI^!wXb|kaOfjY%l zhZX~IfCU~0ZgnM0FZ@0!lH=7aKk{L3E4Qr}-}-q)2TeyT7gkborbTOw(aq}-Y0UuH zZ2@v#P6knxp}c7i@A&8^&?B7ydN&(r7hixVVJaO;4z=t^wz(3wLD<}{5kML5WQbkX zeFI^=Pdb4wx-E-87@{q}3$Rv~Z-=zgMj3$wCHEBylgg%vPZzzne~!2O0{gB7sX>F3 z8K~Nzz9a3B$%6XUf!({x<}jbRS*i=u(4H1~bA!`G+Vr?9I;T$t@a#s53T;tl+Y2pfGBF z@O8Oc53Z))3y$q$rIiNaS_h|L04#iGj*CSIjp~LeI4@$kUntzSGsi86Hl2^6Oj>>W z3EA+Zids2Dmk?CtI{EZboJ6}LhtOqdh}^JGAGjSHS=F^55%*{G`bCaMxP$k=v1NQ^ z`*%oF0X=_Z1wBLyD1E!pQpeTeGXDmktH}gVp$ByZ44+PGfB0*YN9(7O@%~{D1tQJ$`!pmc=Hv2NK@+)pIoD z#gwj+Fa|)+>hIT2)`N?Hi>csNw|b500vRFls_N%%@*a>f2N+BgED)b5N9FWGeRpqy z-C}N-dKmkIPZB#PO@S(~o_T_ZIc-kxG}L#pH6jBIGI1smL9c%9jey=k*FJD?UPCvo zpPWpu)`?3UEElcJ?Re&~(YZ1J)tBndw(*Pg5mK#6KOT zfEeE>d00IWflUxl$d+Gj*~8I)UVW(?TEfkfoGA&cgF;(-J<~9S`icHtP z6xF)dEK#nDFQz!W!4tTW>SJ6krWaiL3L&>~ld;X5Ld-_sJU%0XXk`2A;7sY(9vvmr z{4GLaPpcf6h5F7SGoP+qb5+|g&am~k(x9Xpuc?16qidbKPFjWNvLSWdp%}Gbgy}2? zH^?mju?Dd0cdfY|6lf8Q^cY4f>6j&gm8w=PgYD$}VpA`bX)kmDB zec?{R?AkS{2r&_V4dc?(PP3=i_NABoj1_7=crsl^?a|xh=e9C0{FrjeU6R+6B ztuHs-6yLVzU@?O{!o3771W5&32AE-HH*<+ni{Xz2G^fWBX65}0-bCK%jNr>;U>|*D zq!9W=V9LXF!@Lc>^a?^glB>k>U_3J)ZSWOp}SILb%g8c1foQm@^8viL>}W#kSwQ7YnB zZMeE0l4%7XcfSEjmu2Q9dvZE5JB54rvz2|$xhIISt*(m-2-q&o8aHPl*7%_TqRD~)kD067F>0MWE+%7m)Bp&L9aLsLz0Xt{0~6%XIRSJn51d!9m;z};Z?Ymvkp_?1Bp;54ewp>m)pqnac%p`%Kf~3Rl}(!U7b%qr2cZS* zoDRgqG4)U|zG)S1MS_9ff80cD4~lt%&%b!OIK4#C-xGWFEcEr}G?W48fQr{?pm1FQ z>Mt=?kFBrReYDJ-J8#BBrvfMg;u9@^r=$S>i2Y@Nn*wbEZ&ol{>j7NPRtMebJ0)@Y z8Sg!t6YKy#goGv8S}-smzTD>`I(jx{1{8L%RjJLA8@!fHQo!MmFpAk1ko)OB*QsC6 z1vMUgLq{mHzczXKw7@BI=;Gl^B0A`Ja z%%Jt1yrfw!KqlWz#L)|*K)M0xR~9+iPeMM%ut`#k>KDK286H zAJh*+eG%{eE|U3o;nTl*di?)x(#Ra}T;L%VD0yJPbroNKrz0CiiK=PmB47q-Y{5PbrcOwsf z0B$mRs+tFB{y75qtHSR5eo$bCT-`MvpkOo78hMklH|4uU3f<5bwx%4T6i{6__p3~)oI${{odNskAMV-flYx(FaRO5p!5Ocl$_!3ep5= zXQ9RAU=wQLp^cNt?jsSLJZMoFT-FErwY^=Ug98TP5enW2PL?FSxdKWZaGcG)F0eGz z3QpT#Fk~MDA|UsX%V1<{rF<=T#}iRM+d8PX6Qzd|lw8-N_kd8VBV$QVJT7k2?Q{Qn z+5hV%3I)eN6KL-GiY}RT6sSXxJv1t4`9H(->rCP2C5PG-!O;EI(TzBU7U- zd}7huS8{LDf&kK`Rph5fo)QNNn^y^oSojp&1q*}bM&Qw*0dyUjDH_~~zR&B#R9yb| z7GVIh*Z~{G9p665eGZ9$NW>-L>Jwh;1^Ok>lVFnj8d=Xnnecn)Iw2hFwa2oBWb-@N z=L7cucMr7dILdvgAORE}NT3!)z8wQV628$4hU@303Z&M5K~vJe z66i7j8v~RI23ss&W*!;`5HB=urbzVk(>b8QX7>urgt%M$>h1Agi}!yMj)_+8ERLB7 zKm0_e!K)|^xZ&^rA3^#7D$RniX!w%+1>KU6tuI<}}|d+(PH(SGk)T<2cQlQ|Q*ktQAK7)=ILxD%t8Ws4q#(m2#Lna82CF9n4` z)uMrQ>O9}vj=P9I#|U;hMrLChWlLq;!Mo267XV&s!H#d<`T~#sKZiSzJG0!O81*Ot zUm@$m3cf^o11-PCv8nS<0$P4z6Iy*1+<<jf?p-Y|EEo!sFQz+ zxWnG66P4p{C9nx^240e_?Lkn3zpLLRIDC&#P6=z$u?1VS)&S9UDjc1vXnr8 z4{4X%c0AgnRW?ubedkfok>XVM#EO8;vRi0sHF?1Y^6g>NP+-fu$8A$b!U@VZUN3Nk z`UIM-9k%T`x7{CsyQk%O+=~XxEq}l>qY$OAmmBkVCD5`LV}o47v&AKhd@qrgJSZeB z_+HCOm;-VfuZ~ONh1`(#)}$rMNOV=!x-aE(fPEl(sC5DKbZBJo7XAN2&-@gR&~_rb zk4#tPN@Y*}vl=@8ISVYZxo2SX5TFlKR`=-f6eH5~1JK9|7z+eb-1j`+qw{=BTM^@H z7-e6R)@II7CYDV$gqDFIj?I|NZJN1Jw_JSBcTB3-b4YXA+=>o)eQM>BIrccN)OEqX zwmr6ZZzHy=*QqDq>U>C25m33odIbq0yOJ%GiVIiwM?~uvj9ZychEU-FzSUu%gaJAjwrC`qM=XnUyq|_@o>tM zJNy6B>h7Ph{Ezbfk3Iv#H1!1r*(p?l6_C6vhzYcQu%h>WPnqPQ4pMJ0A}qhjv%_Z$ zCqn*{aX0*lAJFFq=ZPE$6hcIF*WK6C*Bt?>Vs2=>hMIX#JYfFFje4Ek!!^)oj$R36Z72`J>pk#)YBq+G6ag3n?dit7n(Av z)AmmS-b%N+5V>FS6Q$@u$Tf7^-NHG>Sm9UKo9K~1I7h`_1#dB+H1l zxfeU%pA0wqed7jkSYEd92$1`eHD9wg{UI2Wa%ueP22dLEL^I$LG)1AK=c`dxAaflM zCaahYOC|ndCj1GfvdiZw^26yKEb2UY9-_O`kymxMEZ*4gQ-O&6BNXo$y1e3MRu-Vl zm-Iv(tgS=-9|iBf6edqDAfP3q6(UHgYej%S$FdFwZ2gx$LH|=v!6)uW+G#U_u(ZA% z9ht1-)I0+~wmK`51S?6gscgzX;H3%szg{bOXbd7ueYnN-Y&5+Z&D~iy!%9Ve1y@!z zQD{qM zrcYIuE%d7mnoJ@a?VP1C?caktxNWxN`DI9xJJ{W2Bw~?d7VWelGLxzb-?-5!k0tbq z>sE$J#*!BBqNHJN77!0=KsojDa&b(mo_4Avm2I&;Mg$oNQUJvZ^LNz+ryIpQmO_o* z@v7UU>yhNWY2!?-zr=m>d^s;BCfW96l9C>2;rJ~QlguRcg17Wz`MJ#C!MsHpU&keiJRlnN!VmDP2mB+8mN+hq@n{@O5Asht>3keBv0g*<+>YJu+ zTu4F4q90quo+So!+`_67nZY%eaO{;;K}2Ft(|ogZ%PB#R%)a_r3Suspl*ggY0uBTW zhJNN=X(M4%-_p|K4qeulLaomO$@|*MwE&pQ28a)W@=Npz^+W?gf0_3GCp72(m%u3m zl7@lu0$BK;iuhmR`K#*`AT0FFt+-8nS&8f%sOBqZbH3evCK?b?((FzHrrXYgBwMS@i{{uUa8g+QUftGa`FDFb%`2It zIpktLl#$5JZD$Imbq;YV`YcvIVMnHF_BC z8c>3FISYW-)?_2+N#-il}k{lpnU45F$y6~RltJ)tmMwztMKxt z!P_{}^@9(OWPBJJuTOFa`H)aYNM3ERNQV|Yp7`)e^ih(az82z$@>&6amVUezpZ~NN zKru^zV?h|a&0|Y}W6){%?VJiAkb0(_lLmDw}3XK)F4-0=YVj~u}uCdf5Saq1AzCu76TWMW5V2AarPB{ zXAd5c_UBJFZTg((Bg#)cEgQQ2UjHjZJ0^YXB67e3l7ncQf`4@n*t-|B6u?-8FM*7L zmf!yF9`H2G*^`^~laRCcwd=(TfsX%ZlDWV4m5(YN@=D&>VB|Qo>U6I73r*?DvI(fAmnM9IJ0+uzbXX_;=s z$QBQ!mfNHVCQt?K{=8^-O^})6DL(Az(@NIkI(K3(pN5GE|32utU4tG91rowx_dG(+ z3eK$NLSUC{o6|8`HN|OiFHk0R8UfH+IeCe+AR(Cd+W^YykK|O)`2L$jt-t(*dbNa< z*maT$T8o}liu?+KALv!W93IBO>MQjV-YU0O4sjZn#)o%_Kx=4b0cuT8%^!U&NWC7+ z12Fge|58H;eMwtS%sX`=%LfmXOHJnepK9sUhVuuXZ2#l$W{I1vg*Kmi!TYhe;mVu0 z^NQPle<>h?t_HIKf)HVy^l^9SMGd3(mrSHdE4sOh>$30K=3foFKXh4z>q~80?|9U9J<6cg zOY2(9Xte6o*MuauW70-eAVyjznDTam6}jb6nI|5tQCrkT(xZ}8|H@j87>Fj9MwcW{ zjol9qQ$js-Q>=A7E|hROy*;JH{>lUZzHi~Vxxl80Hm^*QN71Cl@=XTxbsYY(76j1( zu(xDdF3NB$PB>u(x_fVI9*;^gb2K~6Hk^HjpWY=|aZv|R76+Ews12FEGK%7TpKoh0j2DKH^e2 zPaiGR$Bh%xPH)7cW*$0h*Y#*R)@HMKNSlQ_bNA`)4X>7nBp)h>BQo31SY@7#Q{>Y+ zgOmEet->A>%T=||d9U$`ydeo+rtFK&1y*T2$pP{ErNy@K*s-TQCeQ<9%blN&>E^Ky zJy%=Blhp;~V&ln^U^N2w0?o7oYOm5@?yWy`^TXT`pKCJyx$u#KF^rVvouqS8AP-_J=zcChVDnadWtq<=`KD%vYZ-UzP5vF>=`nI&&wo z(VzlhE@axy3*=iGPc2avna}8ke^J%q2cMrz)`5muP)i3O4d_pN1_mi&6*7v-`nwgc z+huWw0O|2)9QG0{7?f{-a?nz1kRvQm-zmRZI<8sUt8h95E{A|PdRG*R0#H->GUVz0 zknNy_t?Qn1n>P?p( zOUN}^#sXexl3SLGUf2c5ojZ&ZR+-6r$E6d6=lf8wZiUnX#SG` z_n2nHHuYA}_!$(SBG2|l`)f%`>^JDGWS%c5@35TZw5Q9793=wh932>R8Uc`> z^OH47uKbVZ?R8cvMZ&X;Wqoe|;|QQ>AERDn)X}(K%(3(QScQuI?o0$mD|gy0CNe4$XWR`pX(4VJG89Y+ z8Wtj#7!HET1>uJt+4CaM)rkK@3@$;yi6DYQrqw#58#S(5ZfZn-O8Ka{sbNS`l6%fo zQ~rn`h(z$Njh$Wmo29o|*-8|wFJj|+??i{!CY=qdv#cZi=Tlt&*slOX>Fi4zb#A6U zaBYZ3|Ng7xY*`mE+r^6=JVsw70Ax#d8vfI=u7iC9dH^wtZ?M&V{&hc<=TN`u3aW2; zM|A!Cba|YyKUoaw&*E5tD=Ncnye1B<6?qPnP9A6NESM`ehlOo@t<|K1Kk`27`n#1w zz;;tXG~l-30$& zbT&;T)>xCBz&u8+aE~od9R4=59Q({OH6kU>Co%XeK$h4~HdWv&4lKe;$U9Kxv;D_g zOo`&D5>a`WC}^Q9SteJ>C_{8>u&V8Zy5esddI=3NC({FzWLU{s^O{skwqZ8_urLL- z2q?lc>OMDX?L)p<5-U#)aPXg{07xJRR;Dh4=1n{LZr%iud29~Vnr!%^8{Pg75L z;2C3=5`0ZaZ&f@URqVc9w=T1&&>+C){U}ySFI1|@>{ru73nQVh-Nqnt@!Nx%vjvQ_ zw|_*yS();iikhUGHpuqreu~wjuKBH1mls8Q4ANCWn}Y|)$bbm9-!pu^bKA)*Y$Dq> zt+^+a&%ysDX}j8^{E~2YT`LVLzfnvMETdZQr?WrMlA{oS@&>thtm2@ zqp$-fvi3rtx*0}32iZ9+|KduSmLtA475nsTqOzPa1~%|QJ&k#OGS|0!xMx$8(h#at z0U8Vhk|9nLoluY8Ab&sF=;=O_mf+`}7$%ijqD3Dr(ahE!|DF|VC-f+DzXbgnn5u)H zk`2|noOYiW*L}7%7MMj}P+|xF$pv1!`V)r6vkg*zKo?*A;Io02RI`wl8ur7DG3;v0 z*@mv zhji|Rz)RZ9_LVIm*I(N|#hokMnNNIiv1ji;e_rl(`{TcC*1sV4U9#R6Sdf_Cq1KgT z@F>u(rtL}$OJOFI*O&TW)!1A;?8OK=BpD{6E^mehy^wv+Z*JAsOwh+gifdDsPWDc; zrbkIP{uyYAc8;mDOeDOhOFU+gc=g$d{m@mrY8;KFvshg|vJcx6_fkL|`K1J;s}7k9 zzI^3NWnC`1s#$D@+SE!BMuAHzxqpyQL4R8EmiC-zmJ5+i_nv+bT?H}$cp0sl+zI43 zfaMp<$6sN^4D&<3ac?#>pNq~-?2Q}X>zC#L=Xd5PNhY%&Ga5P!R4gb7rN;V|q$b|V z-SeBSj`{g#Z@TY$Ow_Br%Objk|Lz_W7)+#B;MPd<#nm=r`l@2K?_f!qfZ8Ew)0h1`P=7 zSAJH*rOBbMYdwvDr26lykcw|Jq%nv@T zRdPQ>ms%znjDLQ!sS2)YE4{{0AJ~$wipthAi0X5eKgKzMCjxh?h*gt=Thq^l&%-wa zH*wM73tMM)Ar}G390uSpDyt^2kF`U_xgyv4a$55=Kj9iBQS9cYaFl!6kv+hsIwMSx zSP+0kubbxn9{Jw*FO2IZX;v`AX-!0dipDZFrOXe#XLzR*UDL5$2dlla(c>Sh#af%*ct9Ef;+M zl-#`WQT*YHo|_MxApYl9!q2{*{}QQxHqk$N2O#Fn$)qUB`_D;liopBbIINgje+n@W zoOcdHHnhDOSL8GI8q}j+@F}-?b8Ga_Z0heTliCKC-uQW9MPiKW7W>h#04-m&g|sr| zZT`xG%r$+CZ*=?khm3qLSDi7C5*L^5-Pu6lpvkbC=ZCZ_Qh(X^w@5cm-yRq?8+c7# z1m<#r<*!8iqD$I`WP&mNy@t9Lbb%H=CQDGRbed6g5)z2usv4>%?=*@t{(hk)3@edV@1Cpgm}ZgN7}b~@ix)V5c`9Sb(}i+e>J(>^bI{ws zZIfSRTVUc3zT54GZ*b|-!gzYaEs03@70|R)tb&?EgYH^6z0!Tjshwvy_PYd`jNe!D z&^UTa-q^(HRmSUn7q|m`1ynPk^kUz;RkrIQR<#_u~8_WgL}us5P%R9NbVXp zw^yD2BKo56u|1OTi)yC{|G0=;p$3Xu$VL|)YVrpuiQr6~Sdz*U!cpfES}e$hcLL65 z26vXqOk<-U>kC5j3h`mcux726MejEr&oi%@r))LXUR1vo0-W;=2C44U8ESnjnaG2%%Y<1f zNC5L&NEWbF->PP82{2{5zlWZa(at6F+WuV=rnx6RoQE? z^}C*!Ls<6oM>IzYkg6wFk8SRgQuLR}+ShvLnGrfs#@HHZb**D&WF3?VLBN9vOxHHP zl#J&TsnuAm`UbZGiCy^eS$k}kZ*Od8Fo#$~fIDyT5DZMCW{i3Ugo(B|4wlr)Qe=^>_;=6`3*P8_nT!c_9ABh z#R5z}H9v9F()FVXht^dzT>XWwnq6p(X_@}*5l**67vxy$f^=ul!6@it^m0_gR|DBL zUT=}FV?6SCzNWO6&d0wVz2c&Qpmjyql(9)N6xtB&OC#=s zYSvL<15yZ5i)RM9AS;mc!it>P?8M)v(EeAB*oT_^xfyC%J;U0C=(X!4oCYn@YoOzKCO)#!(%34WN(Va4)yi|pPQMmWD0aW`em z_`$1|=`1sRlU{4x4Y|Ouud)LxSpJ7S%K;hp{gr)MLdwUNop`04MkPQSt(!g}rikZc zjotmIc=j<`m3V8m@sJm?9@N@bk-?j{ebl{dwraFR7XPr77VR=)tdI*|077R|jhL%! zvEB4%)A?*&Jof$x&v5|DQqjpPnaQf->3-K06&fmt$7TMMMq7*3PpE{1yT5{)o ze}s3Xp>9NyiNS^h-?CBo)+IE@>l5rtCs}Ia75G?NZyPOdczwiM#T?bJOU5CoX@}BN zc!vuDd+e+A7K+Xknj+YhtT(VN;4-`T8ZSPd~-(Nz_VQ(X^+g9^piy6M- zI#(o75z0lRk{Rg0DhaeKDd28dah%GEO!P4kA4R)>GCn};$Oj2!m`HW7l0teHDPoo9 zPd06Q{=WO|M(bDkfB&-DGDXYY1w1*2T+$}lG}#GgH&-}5 zQirb=UOW9>Fki=Q=NY>QPCC>MCXGa1Q%HYHP`>(mgRzC+I(X_29=t9du}z%a2|lgy zZl{4~-txi6Tx$K?a*;`FR&TRiU>6|;I)wYm&F6j5$p}zQXu8)FqkieY0b@POn+a*jDMjK{-ar>^hk~0TlQsOQ~7{8b_?3iDq81`bO56IzwlX$-u|Cfec~o{3?_!@iZ}cf75c2 znc)#Xak{%|>(c)!?Y#rB>i_@oOBBj(Amfs)WOmzJitMZwcjGD})m=n(IFyXY&WKzJ zX$wUuE@h7*Bb&_ZJ+E>4JulV$zQ^Z&|33Hk^9PP|opY{pUg!0C?&sqHZ;+QV4eMod z^hi`^2%C&$oQ+?d2AbT)qVK2~BFy-lv^hKLhOF#SahLvTe#>4pOc@h)q<0+b!U_$Z z9lPQUTk1dRO`^VFy&awNWx=inEYWUkzb!P;%u}wf!LB7 zf+bL#I#vn&HfN16=G)bRMc>P5jOv!?^74Awxam4X4e>1BNgn!2whYdS#4Y2NY*)1& zk8nl;l5{jb@?I-Qw8eMX8@gUj(6&~40X!cFzre55%O)mOtnmQ5#9O=t0$zA&K%ccOs1D^9}pM}kp2|0 zx4`|w9X{NPGmvub*&8J7B}w-+g?JVUl_?D*&)HI@2jg~Cv9pe`9^0y8>jX^kR$-4) z?&c0qiPT%5k41xb<4X5aw$v#HVo8#rp2#Xf* z)EpfpT?m$uv`bJ3KZ7)Lf9Hwfbi?SHH!!T5wX4;BKQ=6EPmxQ4JoCJ5$B?w#t*dnT zs%?!o>t!EtM)>*%2;|&y48j%Qs5=*Zk7j3O9}1bFbJvt+{){FVKxcX2LH_oKFb4Ny z&LK&J!%|Fi0@9yQLhq_ma&th~p3`o;7Z=6wZS#n%1iFlrBFf;xlXAD|boG&x>$aH1ylA-pC;)%(Grz+jK7mYszMMK7c{Phg>Hx2~R2e{>bink(Y& zND+~@>?>LD9P}`VK|&}-kN9#3?L~X78jZh<406XY!og|y49oLu2yJTF>}Rh>AFwiTG4R` z3_Kh?b)elXNIqh`IP>KJ$O=YFH-$j)Z2a6}3j392ctHumsJ*q)-Hk6&a&vq*mlaPfU@L%r99m3yzTnbjpRi)f!4Qrzqp;ZFHs+6|ixct< zYEK0doGXvLEw=J&fyBnK1ggXK90B*~C5?F7E>VKT7fOr*IYvf zH6gAjLd(@Fwa~#prt3x)k?;Mwig08goISI~^9W>a$ydKb#+?ZlY)t$o@>=x3ru zsK?w9u&?~I{5W~f#2q-Ns_!@gHJlVIc{*EzUg+WZujDN2HBRDxN8aBKUIxQKV#2{9}mk*k#{Hpp~ ziY2zQw-^smx3M=+(11)8G{w_tSy5xOB+x@~X?k2H2I3<%!uWEYJe)?|frgN%$l2Oe z0ui_q_NyhwRe41f;@;!g+ZCYA1uSoq!%(_&WY&ftIPig*9dgPk;8p zo)6s}v(W4+w_&mM&WVbhTlUaBy+6Y!9sDq=Lcf+%Knoj29WQUFbBMd=WHDy5ayOTo z)*^=v;7|u&!-Y@P^}ih9C)$J#-q|DQlm{U=uz)So7+LDRh{+(3MU@2|UH9x}xU1yZ zb)*Y%Oh>4{EHqygWH}gTPp>Fs=cm4?=JSU5G7@0k0hlFhB*nf$V2hBh|A1A+P%d`m z39hrEUAu3T^w7S1os&)wmolZ=STqNj$AOip?wTZ~XeqkNKx`Rv!;z<(yhT1~n?LFh zfdx7&<=uvxKdEov`l-TE_(dn0yofB1i_smS?qL!f+q<);ye)&{DUV=P$07e+$5^i% z(p|Qs^NkA%*WfsHD9z}F(3LEksC`-IW=>?iGg$XR_)ytHhHFL*p(lcxuNhEwWa#fT zbopD7>ZdAU^r#ub@s~E)#Y^ewS?oE>PIh|SJ%1V9)U?Pe7JsF{p#7oHWn{b(+yNH2 zRVahjZ!3?o4|HJ@Ww;KZ1h9@5dq;7w`e34}_#XGHkYv&i3E)KIHnGciCHiQ@=Hpr< z9+oO;lCE69j-F>E004xSru+^!Uaz-A{vxP6$t!YJ;A$7~b_`FE`1J8|kAq(RsiC6S7XD~-aCvU!etvFN}qw=io@o5O_6ya9W+2>QM2YNJ^)bAld zW-_J`USe;f-_%;pdughA_g2rti-ns*dKApncEB@orQh${u@oCCdYy@4xd(8wD>*|I zqF-ZI)sJ{Cx7x6c#M4K3&Fyo!z8X-;bCZaLplk`0sjNPo2-+v=T=V2S6WM|~`^tEO z;b6qU0@wZe{bbYG3LBFQM}0ILnd<1EkKM7A{=$^xkcJ9{g&|pK@Ss+WxgVlK z6V;$*8ZADH4G{KA2gYb~X=U8g!X88yAEvq6R_~I#y`uUbggwvISb&QYjmgFD4Qk%YmrNDf5d(T>98;y)vZ5B6jenx?t6hR>tcM$lkyaAI$lc zi|i&jb&ol|Muv&k$hfJVI?tt8DId$P%V70hyu>Qoan<10jb~r2V?IE(exYX0=Cycm zbDXenZf)CEia89wv}wOE z$0FI>w_jcVQ^Nj91P6R;Sg1#jzhZ1705sr6z^QXST`gI%&qG*b$*&i+bH%MXE(Ajq zVn_y8qISWBi*HKQxF6lZe)_PvTy4y;3YD`4-BLcsPICidXspb^uuEH|bnubY=sa1F zfL^~cXVas5@4OBX%-h5sPgj>p5tX{DhDm}>X0F7!$Op}=GlL4RYWqVwew#$z>KRtm z*#-p_7~xB|LGox-$uu`%*3cn5MuOgQJHma7J`8Jd+bd#II$zg$93y(e4*dN{>iSXp zD{_O1495MT?GmY)Y}KT+)hXRtJnkVnEjy2UNhRu|qhsY^ja%Kf4W z(+l^7OM0;f1tz;ehVBA`xTYE~rPIfX+FZP&b0x=l*=O}vy#zIUS#oL=!izDso94Zp z6R4n3wp?)@;OQ4u_xNpt-sO}!A#Kj5jZb^I$py*x$FiD@Y(!a!td->FZxg{1Z*Lm% zcDQjYJmtAarzIsgisG zm;DXn>R)}0Bqp7E zQED;c7=OIy89U%nPg5BtypMH1%S};)1qTk>(~f@azVW*;>Y2`WRac4EwiGEplDNd+ z(K4UA5Ex>!&8MjwEJx?q)z_p8gq7Atla2p7v*Hhv-f+)xiO&lwg8

D>U#(kPZ0k zN1yPpUgN#} zvG()xuB#HsEu3WepmyZy!P+rILe z!xU%nGj@jqcp||jNaEfDZHf{1#m84(EF`j+{YocP5pH6;+jiCt61Eq;!UXUy6 zy1(D?QRIs4TF&PdjB#V*VgD^JfJs!rO|HV^K&*g6uJ{$)?9)kgo)M6FXKzSPpug=M z<-+9Fx$JWnsk)~>GwsuLLZgbW-{*NPC$gNH^{^3{R~HO_UNRWHHFHX|utNAsLc1i^6gWp;D3?xx=5Oj+Pr+kd?LZ>7ZT%e)nygE-*C32s11$FnbXHn~yolF#_ zw`rCkEUEmSbNW&>dtaYiS#_U;fG1vml`ut|OK-m+E)-iAF{*YBQ@`h)d!;pJX`ot@ z{Pu13Z=90RacI-&mMB#03&_4aM$~XDU^=n8QUzN0(qaxY(gi_m*vfsw{@ z_!m*O;J_&@8LQKyCAuh?m`n>C^7^w4^uLL`vGo-uDM~$o$t}o5zH|-7x%-GoCOYkLTV)oR zc!oVjUCshc)E3bA(W=g#(=S!SmXuQ~@$4?gg5KWUdtZ=lpBPzPEwt|XD1USZC=_lD zBxjL8*$j4*BItwkqdc{>n^p>a{0hJspmL6R<4KNHQltDYpQa0*ju&=TGhmMF@018* zH}MEH5;?0X#sk1E8P7>PQ0q44Ev@(-lSr0>>9e7i3fC-Kv&e>Z*(NK?J+NDL(slV9 zb)MaqW*&W_viz2|dgP5MEy+WhdhYp2@AS7$hX1!>rnGi5KYzrb9C5F)&X1$X{|}=6 zPn!V>L-*}#=ZGP$RM*0kV2ZT9*Nd3wQ%2%C6jp6q{(t~Fs?6VSGw{GCHLb#{?gMB3x}{Rt zQg8uja&0HVe6?ypSFN3^C7o!t|cKW)AwiH7>re- zKGQoq&R%vy^-<*|?9`BrCHoQ8vhqsv*!b&rFkU&Is-^V%9#lX=#Thceza{H%{YWvm zAj29pblH=aW?3uc5?_sB6~*|!tYcG6v`-?+OkkLTNU70jl%K@Z`C4$jbqMA1w^emp;E~aGEfw z^$=T2)F&*v0RSsB?}8c{N4kn$u_h%_l!r(-!YIfNJawhj+|6<48J%@C{8y>_itnC2 z=FeQuS-t(ruf1jj0>AIsXb#i5+)g|{F={~YzKxRosS1cQy;d;gLFU;}2ekGy{pX%g z&fTJP%f)9jnyMuSy7qs(^xRhULWFDwat)p3_>fp)<`&Cr{|E}?Q*qSpYtWA_sl6Cv zwpCRF%d_ZZ5SRWewjN8->!q+`(Ti|R8@JSRWfOtR>tM*0Yh|bE8y9GehA$~yMs%a3 zo6}2LC;4L{Y}cI^cbP|e?84<~83ZY$7a4MReUn}%_MPtm{+1|KJu@59wRhEr=<(*B zqNZe($G>iP@6m2Do_C{@E`Qo)dP)AZ^m?Zy$vaD@Qfo`Ji+akgIcg*r2>tp$Hk@F8 zZ$>cx)hKP_roB*UdG7nquC^Dqw6|=#dKhC)E4bXdR)CpyOZ%hur5Uq_RXfHigi3C2 z^Xc&dGAohZ*x+keQ~RcH37yTH*&PcGECdp7a{*JXwi&k#iWb1O$Ib7G9yzn0OZLKSl2>sL4Rm<~H(6LB zAo94vwDWUGKi-K}flBRA3$NUg&OxW3z%7#37y0P5nyn@&px6qIzwHkFs$+7sqIV@H z)lHr$@}+-`%qZbm#L$ghWSDxI<)c(eCe)n~IH@SY_tf^qI65a+4c|;G{HhgieQJjY zkG~0kV{7%&dL(8Ma{c5UZ!Z&LXTB`y%T4fFyumOXK@VP9&z3KIc=vi<$H?TqR8s;3 zz{F1+x7|Viw6+P%J5c%OQ3sgVx4`ZnyqTCd&TFguhB|CgWcCnh9b(i}b+2*lNlYYu zSwP07DedSoI_f`Kd7IbibRjJQd@SjMDzCS5m$3Wz?&K`&lxpra&8gHSIV+xc}3oB zF&8n^&gU{E9cg+cq1tqg;kAKm*26)H!)lRqZ~FD5qiUFg z(&mQ%Aw`6Txi`T>{ROSI%#(_xqO*y1?GXwaf+Wi}#^pmerB1PO)E@1`iG7jMGq%L<rAd(?_%!kc{(rbz~tTZCh*cn{6PD-A1sbE z;)2Mh8w%mGj-T!9Qb9@!)(?SN>A7)ga$Q5rMK+9f{=N4z0lK-#pPMGNb&p*W>NG#K z`+qb%*ZL8l8^x;1y)3$oD?p(>g7HEohYw5AT5}9~$fC(6+`00#kdY;BOQ!5{1ljfr zhaxqd{W}azIE}#5;=+50=O=Pzm^jIL*Z~@g=Zn*8xHVyCI5n?^=(=O~Z9rZ?p7AZf z(_}5BtexXTL#Bx|1+2P2W@o z9y&N$`jd>6iT*nmC;lky6LYgn_CBC1q=Du!Fs|`%`qC&lE!NmuxoL2B_jZ>s!YS;l zdwsuick(XC6Y{XDI{>PV#yn`XF2X=SnLR_q9mlx3*$SbDoizvDY}soPb8M#qTHoAO;@`6tY9JEPfw? zS3utYaiI(rDA*F8(79o4ntdaX+`jKu`My8u`G#A6+J6JBT{}_i6zfi@2e18T|1HQ) zyh5(x_LXd(-1I^Pt^U5t6Gz*{cagTMl7^EbJK?!@)Q?@kD~t`q+|wxCf;3%z!yBE* ziA2O7xBwAj~VI!$vo|DHVGCQb7dVMV;IwD;_yIU$F*TZxLlP*0ZZfRRD^40 zXUhIK<}70)x9^JSyZ*{_9J$(;W9_thI87H$TTk+94mp@`_va^uJZEq{#v{Sd$FEH^ z@yyPewEaZ*&iS^7bP$#W4$j)X-rKKbf%=4W8C6`+LEi&5!ZiCQhK&o<$D?HHg)E8# zYQo(JV#gDRHvO~BI*JJ|uSH5wVOhm)U6@09u&bQffL#=I=q2~Lh4d?LT8?R@ngQdQ zO}gM-@Op;J*FmViy*&Y@^KiMlJ&Ie6)-Jl;{m@^ttvvyqM{Oo*DYodo_1?DScQ;;! zD}u=%O`}-L0!l0>q6B(b?WXhES-X?GdT@it?EcP#l}ZY5Gy(v|WGzJp)ra8Mi6kT( z0js0`0pE_=Gx!1Q9B$SkbgOpD@qBw485vwGOs1~4f_5D{c%6cVygVkX?;{8- z=@NE-2;;MVYo>9_TGh@NcgsF30L;;Zh1xM~sGD=t8ljp-cp?SZ(MT${?jO$i_nRku zu+WgI1LZ0U(>nFn$VtcpWUBZM{oTJxOo7G-8uu-Rn=QF7VR7&q<~}qWI|bnZ(j$3q z1C3Je|G(?_AKQ{o;fS&$kyPoAQ}pCHGz4kKaRxCM*;pQg?JCUkoV^8 z7eovHiJfHK6ZCxNBU;dN?Qwp<-5k#Y`wwZ7CCNOq216e=nn2w`AND1(5O*-0XKgT) z{_W%cX{a{UUmK{UBIM~TZ$TfdAbuPw-F(&EPmTPwQJJoLS2wNN9Hv9yH_Q<;YI}4W z4SbxLHXL(87yfkB|MK9!->qcPImwJayf;Rb?;}zeeD^DMmWwt&#!miaNY*&O|1cz) zW=jrKkX!cxU}8Y-)9-#;@O#a7FMdv`-^-MKhM@jiA;wPt6j&@j$Dx5XRS*EiE&2QV zW*g{=KOb35W3;8aH0noB^};Qm(ZBn3RO|cZA-3y(>4E*1cf;lkS%2A)V5-dB5w8L2 zDx!-Ubz|4D+WMas9Ka}9TQc6+6N6|H#HQSx$B22jQ37=f>yDYoOXm_t7++_sH$UJK zppwcYx#amG$Mt+#N8cHC_o8}Geu)7}XHcVU~L&6C?;y~XJZ(COLn&z%J@ zmd>RRpe0h51KLX&%VS~r%<-5j{~W)cV=d~^q=_D&E!DSFi4r7R7M-k_I_VeQqe%5a zmK_hV-TJ?c4~qzO6fwb#I(RroE@x8ZNTlF1f9$XSj!$vin=olcvWNQU_R_~_g&A!D zu?9118!_%CwVT+NT~RmQBD%9UI9W^8HsPV5fc)aVU(NQ-9WXw!67fOl*29@wSH;x> zW<9j&qq}8w@9wRB?c#9zm~EDX_CTYV&gS-}f$E7!szfSMUF#e6;jI@ES>pESfEq%e z?&uo2Eo`o&u9lPVCE-<(V6fQ3%B%YPBQqzL!}j13cq2+QRUF221*tu*rA^RmKknm; zEXo|p5SCu@6jmPMdz0)vw>k*A;zUPgU!9)*imBDNnIjeuw+b2s%_;}!OEl*ikb57%c{099uxLWw8+;n+J#f9IKs=ED4Qy$NUvdv%kyq|1i+&0v|^HJkJE`J#wEos7M zWaN~G7wNKt#3F&jW3IOKFNKB7WW0D1Kk&LgS~u^C?*wvUJhd}v)T>Z-5_t@hs4k%K z(SuF#7m5>`VoM)?Xwi-mRaebBr}B&Low#^;gRr=pWS-X*&Y?=|ZspCP=XSG)y^a{u z+Wy+SHKQr6zkKKGq139_-n>s=PD_)d9}PgcSj~} z*HLs`NWl#+hX}h9{>vJ9!4IXc5#x)md$q;=h6Ii>7+6guBxK&X8JyQ>5R%v4=#uf_ zF&mp>mi%?5`R*px#856nSuJy4&96y(-j^u!U46zmjnzB9*ftwkRo!!Q% z2^pvSNQ3?I5v5!a=U?+!ygp9G4!!*>Y|piqeGg^zZSjt=4>Q=yn=c-tHok~`3^3g* zNejc)ba5Fc6OuDl*o#Kp4seE1OxU5#cR)Dw-jc=%2a&GYk>kW0Y>}q;3ah9TCiN#) z1y@)?L%BA*G`+2RApX&_@PB+ow%Dn9(rL&Occ<7=+rMEG-FUjOE|iD+5rDmjv{$kzz8Z`VT+*}VHQ1=Wcm8boPU4E#i(h+JPFJ!-^WSu{ zeNd?=(3pOb-CX&R`2O>)hdK6pC^$6L`!I%ldP`&|Dj$6JhWE30WX@=kq;*tcl4`AoFE^-U)y~Z0&|`(Tp*0xrJgE%iob$lw>Z7ko4S6m@|B%} z{2r&gi%$&?Kr)KCc?ahM`jLy6jv_V(taa70W;VAa%b?P=teh?gFR~B^-!?5;joNje zzu@m=-WMw!@<6wJO6OS==C>?=H-*!m*-j>tgS-3+o`*HOwer|^MvwMHi^NjdRT;@f zt2;8up4^--==#!4IpT6ntAs_uJiH|&l+q3#zQ6yk7TnJ_#hrYAB^Mb0yIy}&!@TR; zA*f6`mQQRvD2@|m=t}=4f(p;S~8iH+A239S@V~h`X@Qj^w zw;0PVbIVL#=ma~yL@h}9ly*xbB5}dGx*MlEyj!rRgzjM6M z+Com&wlsOw+JpT{*r}GAt<87XzVZNR^C;<#?T#I`!TfgovEMMp1*pU?nMAm5eWIOU z#DUVQ({alQTx*n=?gRPhR980&Bd1Y3HMOyiBPJ5?03Pm#Hyu5bNGNW{hGi3*F zG5wUA%g6KUo8Boh7ubvYN|g9c8`m~|6c*jA*Zt8T!odF5{+lPXObWuD3|_f2Yt}4& zqL`zvg&-$bseIXT=)qe7!ElXr0~PXBts8DH3SS9QI1{cHRDWu^F-LLClW&(i1BQLK zn%qx2@UIIsAe?>vKCUzp)Pg{&C*p@R(Kb&8{=ww=5%D;Al8ExbsvPrz6yS;vq0#(r z$c}$F>3_4y9h>o07F9qNE*0qqC!}wu&8d2bSEl_9zKj2=7rUixLDi0o>5j#>soCh} zymKq;$rCP%G&dRSfu-PLC+1kLNwA;ELyZgS40rQx-&r9S}y#h(6(C{B8{|jd?kSufbYmY>E}%TlB~SnuX>2tZjF#Y zHjA#!m-SJg*o{XouKtr*%RfV_^~}OTePR*2296j@az+-7e+Q9+rwpKZcKb5{GIN?X z_#myH0`h1zRZ`%eUhVIu@qa%6^Y#uFaQ^eaQg^cM8y>~=AOjNLFj0Sp@Dp)L_Q*}% zJ0uB{h*2jBAAfuNLwpl|e5jw#N5A&a@Y*R0Z`)uV#CC@Pg|jAY#{HZHSQ?<_VeONCd1QrE zq|saO$HrC0eRpZcZOnKzaBDE?Pe#T+-o{^@47g9mV73I>n|J&QFZlZu_&&Ydotn3W?Dni*Wcpv`-3vr8;82@uDHVo0#u3l7=)+>w@A}aiuLM*|7G@cd1v>*2v zLh073B}0YGq{#F%ECw!f)|QgNT3{SqJL;E3MWj2D218ZWOz#Gl>0O2xq7pm0Axq{o zI)Mzo16AEj1EV^sOl?I2BdOOHFC*QMK{I#&fL7>zCo+-Bj3qPi!d`^7)95Yw42XSK zXZ4>Zpd(Oma>L*Cas9YGq>ONL{l)osGI4drob9?7^#XAjng2rDlMa#4jdTs!xF4rn zCAH(GAbu_hUr}7V_PH#U`XapDjCQCjh*}17wp(xo!m>Vk1fV#I^UcT)ks27bcZX;< zdrX4bMI3@B`SN(&44uM*>AJDRbyxj({f~bLzaq;nG~@Q2x$;p$D}mZfq|w!Gz@Nk~ zyFiizq43hKa}rrT2uWc$EMX}W>8_^*P}ggZKuGxa|L`5`)Gi1!LLn{q`Ci{JXK~Ay zNg{B{(WPsUrNrICQ8;PWq8*2Zz+s1}X`tomM?hPDzZUJVSQN0Jcd}dRliw2N;KtvX zs~sMuK7a$k2#bNLR%?K_(0UWQXM6rlD%g1OkTxOyrzd~ zb#%pmryh{|pN02*&ce*kBE+o8KN@zwUol>l2r<9&Ekp?tV*q{yo zzS-DN2#P{)GBMv~7B?pW6QPquVB@@C9>)*Z-K?dzCndgvn+2^s`i1fVm^{c5_fj3c zeAyU%|8qA5@0tMn%Cr_~SMX~OUb#v`M%%0N6BJD@x}^_y0l<6b(N;h(GdmpO`-&<} z!#H~@G6}G;=yzx`DSEd{)WjZT*qhF;_au z-tipb=m;?Hy!@W9xv`;U=m%<9cJ>-mz)l*V0&J#3A>uBeBann}`wc)|7`Oet3EZW$ zT};~_3qHg3L++>e`=5aGm5(E7XGzM!-{3}$-BvW(Qq&x8i7nHLf{!1v_hXGbD$9H& zw>+UygRb#=1{i%@S&7X2v3rWP+ZAX(VRv6Y_oZ1T9vhkn!I4x26A~B#=j>A4LOVH- zS!dL?`A;(C6HTW66qD=B!O-|0MB~rT|0d1<`>|#?u^-po@VUjD@7Q7Oix&^my?l9S z?ccR?*YBobDM2cqZ|}s-=o!|X3^XzZ4(BpRtey`LOo80%rnS6ON1FbB(pHdfrR}8L zqVYJP1{clO%&}E@yfJpB^85dl6o`1lK;8=cCddP{m@6#EBMh+R%YuIgDJ-``EJfe9 zXdF$IsL6@L^s?=-`qkg?70d_f{_P2&`d)sw-eu~=A$z~ zJM|VlXVU=o417w=`~G+00k7YWqa-!8L}-iy;xaY#>g564R3^+D zS+o5sgKBl3-pkjBAAKlK7HM`u(?)_h0j&QG#7F~OyOs7P@CfUKrDVYlaDrF7kl9ifj$9wDnN27lXJ6_E8ktl+G6PgDk=U0 zRJ*Kcrt*{DFr^3+6^g%!Zk6^IJ9|kDn)bBleClIvLr#sxPA>O$RKg>8Rwj6fq9Zu@ za`*DF1`+i22o(A;eggTv;M(oZ_9QyUMi0j=3o`#1D48GE#_P<~zbB5Z8ccV;V$Un+ z>j4;PT84%B>)$N5?-V&o#Z1iiKW;uf`{|#0x%#4FJRy}AjVR`tvYmxaEMMb!oibE5^!Iz<k zjAI!U`}Aeu{$BM=S=p5+^;;0yCL9do?NqIhcyGz+?t?8OGJW{$pn6&|z#{TCTEqC1 zOaqX-!oKS49yk!?7{K6JzUoBvP$ax$U+tx^LQ@9YXlA49Y^ehCO$v_vwzYzg``X}r zSH`bX+TNv0f}zae>W6a`<3Q$*fHn`E|@|2MzD*SGq8xgXN!0Br_FTJMue zfgH>d-MW^;7)2UI^=_O9uB7m_kzTrP4IVpdNIy=~C%bVwuqB1BqD*X$Xm#PUf7cEm z{WqNs&rtw6K4EQN_A31u(-#}ta6|9tC!Tm_uA0WqL}Uy4Tu#~0R-+Kz%Q)6RQx}zw z0&`ENh|C%(gd>lCo5L^4S_5MO%=(M;6ET!Z5Lee1Rn)@0B({eeb`N7qakE5IkP#T; z>Xjg=;n6wU3K`3ry0ig5xJW2LhAKhu2>Hekl~?e6-DYOZmEu;>9AZm>#r2E8Z?Q&f z`~Rq|{`+a7m*>t!*RQ2%{-qZD@7INk(Hwk0#k`bo_=dtloqv4lF;ratg#T6D0i8R? zSOj+V$vkHHC9Yrnyk8@7u3~>Es}f9)w@}#b2!?nX->%?EtNf|n?L`TQ6FP}|(f^vY zw03rU1{v5Qci|c5SdMY%HILpE+^gv3{)Ek;)3XY6e>3iWy4nBEV}bX?K+TRdfggka z;@JGb-uO400g%UK5Hr_!LS>jcqpEvP*goR$a5p8Jl0}0S915OUomj|}tP!dhsh>z9 z5y2~QT{gLx6dku8d+^|JWbBfjnr9`mgzL_it&mw-z|IR8Gs?)8&b`m%eQ(J?IeB(6 zUc*;{h8{Hc>o?3}QPwGL&yY^aD@3AckvQWtNrQ-b*S&#`DS#zE=c z+g@!}W#8MN4R2VfM)oOo9!np|-2P z^o^OzAasavY@eAOeHFfySI6~0b2bpdfwy6|uh8ac;L@9_X#1Cyq_KpGI#^?oUEj6vT57}IW*=ib)JM*9M_p<64A z8zr4mEN>c&FsQnLS)t%4Uab-bgb$o&DL8LWf&1J&-UW3%cS@Ew?tQ0~AewEFjU%xG z@lMWU?g$^(>^+ttwc>G2CpJ*)z_#4 zqi?$nQ_j9$Nt}x;fCSW}Dc#_gV2ii>R}mJ~URhigrG8>~fmZ778@4O4@-x#U-}LDy zC8Vb^3yP3&Y-SzUL-j(nn}<7py#bE!5I$#3Rfd7)a!(1COv%Cq9@bxZ;hLzTdzrWL z)8=qTq_x zv|HWgVF35pq4+tV4i}e`c#yQsAhbi>M^zb7hWYXa{Vi!Mck;R0bXI8=ih9JGTs`I9 zr56n|2?{%L-QGkf1FCVd-*igVWiaLZs}8f$C1NZr8~!1Jv<*}1&}>Z~8NO1Y$XssJ zK{~2i>tgr+f;8a2NK9G~j6sY^@Tf&Y%4@NxkHSk+49J_v^igEQ1hXfLR67b z8y0w!&;(QhsvLXX-Vx1=sykAYIRm$%tDhccD|uC;^x}_x{8^X*5{4zJVk^#~RW;kL zAag`=FBLp;u%2!=`)xPC)G%; zl_9|}U=0@s-+lDvt!2zA6rEmF#s*o~`C+4seN3bUW*bi;xTg^8r7kS^Rh(s&$=r;- z))8sB%E-@Pn&EdLo_#0ox~a&ic3nO3GYX6DQ2WzT3I(+=Wdou9mnAO!D5tDYcfraI z!hQIn)Mwo7&L1NEnkW*N#je%hf@+rOnUec)8$R@Ycn4lMabBHxa0Qv%oKog5aW({` z6_Gs6zI2CCf5&!pr`u#Kaj9F)G1V%=&OoX43>&W>choh$h=SpCUVUH~1!p9*cKjPg zHJkKCb_J7ACh}(Wiv74Pm9Shv-uPP1vvlS)hqN{)Z)FX8N079Y0y11@tpLM&v|(hX zc7tZj<6IvilpKF>GRny>dGr|b|EyrXhcP#%&l&wfj4|g9dm4W>(OW2rZFLd_hwK%s z$?V^1n^Ov~M&pye(0>e68z`{;&1Ifv6*o&OJ^kQ|LxZ#vtj^w~+-b#^2RA`AKV^D| zL0^j2%1!R22#mbbdSK*ST^MLDeWtiMat;C1nsIM~TAr$#WzZHT`5sq`vM&=Mw&Pi6 z>hjBTpLiwmX|h>5dC;y(#ku~mu-eBe?n~q=U_g%3=%$1Ek{^oldi$TNkbmRX6ANLk zgr!#E{dj9$@061S5*Tu!2*l?FGlgb#Nv~Nwu6<1?#RfMmlAJ(zA(UH--o>3$l#kgRFhpxD?s7`*->r^6**$Hqf% zN_&aO;>h7RMv4}m(s_NnJb6zRhtoNYNm^V&1nT(^c(Io3e63?PhVw@XD8wNAiW#gq z+0{hk%iJ$xZlcB?b_nSwG|f>wVUfuy!@`?>_9W_(tF@x(W!?+^J{gsEUe#104XhH( TUZ4!V(qdKef0-26Z|(md+ChLH literal 0 HcmV?d00001 diff --git a/plugins/evaluations/docs/images/BenchMark3000.jpg b/plugins/evaluations/docs/images/BenchMark3000.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a3227d495086341969c77d2d2e8fc74e3327289 GIT binary patch literal 48721 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 -SFIAB Evaluations Calculate scores +SFIAB Evaluations Calculate Scores Note: This updates the score field in 'judges_teams_timeslots_projects_link' for every team/project with a 'complete' evaluation entry
"; +echo "

Calculate Scores



"; +echo "
"; +echo "Click the button to Calculate and enter scores values"; +echo "
"; +echo ""; +echo "
"; +echo ""; +echo "
"; +if(!$_POST['action'] == "calc") +{ + echo ""; + echo ""; + exit; +} +echo "
All Scores calculated and saved!
"; +echo "
Development Note: This updates the score field in 'judges_teams_timeslots_projects_link' for every team/project with a 'complete' evaluation entry
"; echo " and updates the eval_score (current average) and eval_score_status fields in table eval_projects for every project for which an average score can be calculated.
"; echo "For test purposes (to be removed later) it lists just the project number for each project, then lists the scores details for the last project in the list.

"; // do all projects that qualify for judging (in the judges_teams_timeslots_projects_link table) $q = mysql_query("SELECT DISTINCT projects_id from judges_teams_timeslots_projects_link"); while($r=mysql_fetch_object($q)) { - if($r->projects_id == 2281){ - echo "test"; + $ret_array = calc_scores($r->projects_id); // cal_scores is in eval_common.inc.php + if($ret_array == 'error') { + echo " error"; + } + else{ + echo " ".$ret_array[project_num]; + // put scores in 'judges_teams_timeslots_projects_link' + for ($i=0;$i < $ret_array[num_teams]; $i++){ + $team_id = $ret_array[team_scores][$i][team_id]; + $score = $ret_array[team_scores][$i][team_score]; + if (is_null($score)) {$score = "NULL";} + $up = mysql_query("UPDATE judges_teams_timeslots_projects_link SET score = ".$score. + " WHERE judges_teams_id = '".$team_id."' AND projects_id = '".$r->projects_id."' "); + } + // update eval_judges table + $up = mysql_query("UPDATE eval_projects SET eval_score = '".$ret_array[eval_score]."', eval_score_status = '".$ret_array[eval_score_status]."' WHERE project_id = '".$r->projects_id."' "); } - - $ret_array = calc_scores($r->projects_id); // cal_scores is in eval_common.inc.php - if($ret_array == 'error') { - echo " error"; - } - else{ - echo " ".$ret_array[project_num]; - // put scores in 'judges_teams_timeslots_projects_link' - for ($i=0;$i < $ret_array[num_teams]; $i++){ - $team_id = $ret_array[team_scores][$i][team_id]; - $score = $ret_array[team_scores][$i][team_score]; - if (is_null($score)) {$score = "NULL";} - $up = mysql_query("UPDATE judges_teams_timeslots_projects_link SET score = ".$score. - " WHERE judges_teams_id = '".$team_id."' AND projects_id = '".$r->projects_id."' "); - } - // update eval_judges table - $up = mysql_query("UPDATE eval_projects SET eval_score = '".$ret_array[eval_score]."', eval_score_status = '".$ret_array[eval_score_status]."' WHERE project_id = '".$r->projects_id."' "); - } } echo "

"; -// this just prints out the values in the last project +// for debug - this just prints out the values in the last project if ($ret_array =="error"){ echo $ret_array; } @@ -70,9 +81,11 @@ else { $ret_array[team_scores][$i][proj_num] ." score =".$ret_array[team_scores][$i][team_score]. " status = ".$ret_array[team_scores][$i][team_status] ."
"; - } - echo "Project number ".$ret_array[project_num].": score= ".$ret_array[eval_score]." status = ".$ret_array[eval_score_status]."
"; } +echo "Project number ".$ret_array[project_num].": score= ".$ret_array[eval_score]." status = ".$ret_array[eval_score_status]."
"; +} +echo ""; +echo ""; exit; ?> diff --git a/plugins/evaluations/eval_criteria.php b/plugins/evaluations/eval_criteria.php index 7e62b11..a7a61f3 100644 --- a/plugins/evaluations/eval_criteria.php +++ b/plugins/evaluations/eval_criteria.php @@ -21,7 +21,9 @@ Boston, MA 02111-1307, USA. */ ?> - + + +SFIAB Evaluations Criteria Editor + + "; echo ""; echo"Scheme ID must exist in Schemes!"; - +echo ""; +echo ""; // send_footer(); ?> diff --git a/plugins/evaluations/eval_export.php b/plugins/evaluations/eval_export.php index 532998f..c8eae6d 100644 --- a/plugins/evaluations/eval_export.php +++ b/plugins/evaluations/eval_export.php @@ -26,7 +26,7 @@ -Export Evaluation Forms +SFIAB Evaluations Export @@ -36,6 +36,7 @@ include "sfiab_common.inc.php"; // check SFIAB install and get config etc. include "eval_common.inc.php"; // check Evaluations setup and get eval_config include "eval_menu_inc.php"; +echo "

Export Data



"; /* Options 1. Most information for preslugging scoring forms (one record per project - judgeteam assignment) (includes scheme_id and... diff --git a/plugins/evaluations/eval_import.php b/plugins/evaluations/eval_import.php index 777e968..1b66edb 100644 --- a/plugins/evaluations/eval_import.php +++ b/plugins/evaluations/eval_import.php @@ -25,7 +25,7 @@ -Export Evaluation Forms +SFIAB Evaluations Import @@ -33,6 +33,7 @@ include "sfiab_common.inc.php"; // check SFIAB install and get config etc. include "eval_common.inc.php"; // check Evaluations setup and get eval_config include "eval_menu_inc.php"; +echo "

Import Data



"; echo "This will upload the data from an Apperson Benchmark 3000 scanner and enter the good data into the Evaluations Entries table.
"; echo "Select a file to upload, then click the 'Upload' button.
"; echo "The file must conform to the Apperson scanner output format - see Documentation
"; diff --git a/plugins/evaluations/eval_levels.php b/plugins/evaluations/eval_levels.php index f91a4fc..48ba18b 100644 --- a/plugins/evaluations/eval_levels.php +++ b/plugins/evaluations/eval_levels.php @@ -21,7 +21,9 @@ Boston, MA 02111-1307, USA. */ ?> - + + +SFIAB Evaluations Levels Editor + + level_name\" />"; echo " spec_use\" />"; echo " spec_use_code\" />"; - echo ""; - - echo " "; echo ""; } @@ -182,8 +183,9 @@ else echo ""; echo ""; echo"Scheme ID Must exist in Schemes!"; - -// send_footer(); +echo ""; +echo ""; +exit; ?> diff --git a/plugins/evaluations/eval_link_sfiab.php b/plugins/evaluations/eval_link_sfiab.php index 44fb5e7..0887781 100644 --- a/plugins/evaluations/eval_link_sfiab.php +++ b/plugins/evaluations/eval_link_sfiab.php @@ -23,7 +23,7 @@ ?> -SFIAB Evaluations Linkup +SFIAB Evaluations Link @@ -32,20 +32,20 @@ include "sfiab_common.inc.php"; // check SFIAB install and get config etc. include "eval_common.inc.php"; // check Evaluations setup and get eval_config include "eval_menu_inc.php"; - +echo "

Link Evaluations and SFIAB Data



"; echo "

"; $errors = 0; +echo "Click the button to link SFIAB and Evaluations. (Be patient, may take a while)"; +echo "
"; +echo ""; +echo "
"; +echo ""; +echo "
"; if(!$_POST['action'] == "link") { - echo "Click the button to link SFIAB and Evaluations"; - echo "
"; - echo ""; - echo "
"; - echo ""; - echo "
"; exit; } -echo "Starting Link Process - status follows:

"; +echo "Linking Process complete - status follows:

"; // get the eval_scheme id and eval_schemes.assignto_project_when fields $q=mysql_query("SELECT * FROM eval_schemes"); if (!q){ diff --git a/plugins/evaluations/eval_menu_inc.php b/plugins/evaluations/eval_menu_inc.php index 3114122..0851a49 100644 --- a/plugins/evaluations/eval_menu_inc.php +++ b/plugins/evaluations/eval_menu_inc.php @@ -1,6 +1,4 @@ "; @@ -13,18 +11,18 @@ else */ echo "

SFIAB Evaluations Plug-in


"; echo "
Return to SFIAB Admin
"; -echo "
"; -echo "Evaluations Menu

"; +//echo "
"; +//echo "Evaluations Menu

"; echo "Process:
"; -echo " * Link Evaluations to SFIAB
"; -echo " * Export Evaluations Data (Apperson Scanners data, etc.)
"; -echo " * Evaluations Web Entry
"; -echo " * Import Evaluation Data (Apperson Scanners)
"; +echo " * Link Evaluations to SFIAB "; +echo " * Export Evaluations Data (Apperson Scanners data, etc.) "; +echo " * Evaluations Web Entry "; +echo " * Import Evaluation Data (Apperson Scanners) "; echo " * Calculate Scores
"; echo "Setup and Help:
"; -echo " * Create / Edit Schemes
"; -echo " * Create / Edit Criteria
"; -echo " * Create / Edit Levels
"; +echo " * Create / Edit Schemes "; +echo " * Create / Edit Criteria "; +echo " * Create / Edit Levels "; echo " * Documentation

"; ?> \ No newline at end of file diff --git a/plugins/evaluations/eval_schemes.php b/plugins/evaluations/eval_schemes.php index 9773a3a..2efa30f 100644 --- a/plugins/evaluations/eval_schemes.php +++ b/plugins/evaluations/eval_schemes.php @@ -21,7 +21,9 @@ Boston, MA 02111-1307, USA. */ ?> - + + +SFIAB Evaluations Schemes Editor + + Schemes Editor

"; echo ""; echo ""; echo"You should assign the 'Scheme ID's in numerical order, starting with 1."; - +echo ""; +echo ""; // send_footer(); ?> diff --git a/plugins/evaluations/eval_uploader.php b/plugins/evaluations/eval_uploader.php index 2079d3c..dc02e5c 100644 --- a/plugins/evaluations/eval_uploader.php +++ b/plugins/evaluations/eval_uploader.php @@ -43,6 +43,7 @@ if (($_FILES["file"]["type"] == "text/plain") if ($_FILES["file"]["error"] > 0) { echo "File Selection / upload Error: Return Code: " . $_FILES["file"]["error"] . "
"; + echo "

Return
"; exit; } else @@ -74,6 +75,7 @@ if (($_FILES["file"]["type"] == "text/plain") fclose($fh); // delete the file unlink($filename); + echo "

Return
"; exit; } $row++; @@ -98,6 +100,7 @@ if (($_FILES["file"]["type"] == "text/plain") fclose($fh); // delete the file unlink($filename); + echo "
Need to keep trying Ask Dennis to fix
Return
"; exit; } if (mysql_num_rows($q) == 6){ // 6 criteria for each judgeteam-project is required to upload Apperson data @@ -138,6 +141,7 @@ if (($_FILES["file"]["type"] == "text/plain") fclose($fh); // delete the file unlink($filename); + echo "

Return
"; exit; } } diff --git a/plugins/evaluations/eval_webentry.php b/plugins/evaluations/eval_webentry.php index 9b3d063..dd8ab8f 100644 --- a/plugins/evaluations/eval_webentry.php +++ b/plugins/evaluations/eval_webentry.php @@ -25,7 +25,7 @@ -Teams Evaluations Forms +SFIAB Evaluations Entry @@ -33,6 +33,7 @@ include "sfiab_common.inc.php"; // check SFIAB install and get config etc. include "eval_common.inc.php"; // check Evaluations setup and get eval_config include "eval_menu_inc.php"; +echo "

Judges' Project Evaluations



"; /* This is an evaluation form(s) for a team. Here the team can evaluate each project assigned to the team. @@ -46,81 +47,54 @@ This is an evaluation form(s) for a team. Here the team can evaluate each projec * continue untill... * Exit the page */ + $newteam = false; if($_POST['enter']=="evals") { // come here if have an evaluation entry for a given team and project // get the values saved in the form. + $oktoupdate = true; // RFU $project_id = $_POST['project_id']; // save in form $project_num = $_POST['project_num']; // saved in form $team_num = $_POST['team_num']; // saved in form $judges_team_name = $_POST['team_name']; $judges_teams_id = $_POST['team_id']; - /* - * for each possible critera for the project see if it was entered (will not be a POST entry if slection was made for the post) - * the posts have names CR_nnn where nnn is the criteria number. The values are the 'selected' level_id (stored in evals_projects_entries) - * if a selection, save it in the database if not set a flag not complete. - * return to the form - */ - $q = mysql_query("SELECT * FROM eval_projects WHERE project_id = '".$project_id."' "); - if (!$q OR mysql_num_rows($q) == 0){ - // what to do here? Should not happen - } - while($r=mysql_fetch_object($q)) { - $scheme_id = $r->scheme_id; - } - $q = mysql_query("SELECT * FROM eval_criteria WHERE scheme_id = '".$scheme_id."' "); - if (!$q OR mysql_num_rows($q) == 0){ - // what to do here? Should not happen - } - while($r=mysql_fetch_object($q)) { - // skip those that have criteria weight == 0 (compatibility with Apperson Scanner export/import) - if ($r->criteria_weight > 0){ - $criteria_id = $r->criteria_id; - $postname= "CR_".$criteria_id; - if ($_POST[$postname]){ - $value_id = $_POST[$postname]; - // now save this one in the database - $status = mysql_query("UPDATE eval_projects_entries SET level_id = '".$value_id."' WHERE judges_teams_id = '".$judges_teams_id."' AND project_id = '".$project_id."' AND criteria_id = '".$criteria_id."' " ); - // should work but need check if $status == false - } - } - } -} -if($_POST['selection']=="team_num") { - // Get some necessary information: Team_id, All projects (create dropdown list of projects) - $team_num = $_POST['team_num']; - $qstr_prjs = "SELECT judges_teams_timeslots_projects_link.`year`, judges_teams_timeslots_projects_link.judges_teams_id, judges_teams.num, ". - "judges_teams.name, projects.projectnumber, projects.floornumber, projects.title, projects.shorttitle, projects.`language` ". - "FROM judges_teams, judges_teams_timeslots_projects_link, projects ". - "WHERE judges_teams.id = judges_teams_timeslots_projects_link.judges_teams_id ". - "AND judges_teams_timeslots_projects_link.projects_id = projects.id ". - "AND judges_teams.num = '$team_num' "; - $qprjs=mysql_query($qstr_prjs); - if ($qprjs) { - $num_projects = mysql_num_rows($qprjs); - if ($num_projects > 0 ){ - $cnt = 0; - while($rprjs=mysql_fetch_object($qprjs)) { - if($cnt == 0 ){ - $judges_teams_id = $rprjs->judges_teams_id; - $judges_team_name = $rprjs->name; - $cnt = 1; - } - // create an array / fill in the dropdownbox - echo "
project number ".$rprjs->projectnumber." ".$rprjs->title."floor number=".$rprjs->floornumber; - } + if ($oktoupdate){ + /* + * for each possible critera for the project see if it was entered (will not be a POST entry if slection was made for the post) + * the posts have names CR_nnn where nnn is the criteria number. The values are the 'selected' level_id (stored in evals_projects_entries) + * if a selection, save it in the database if not set a flag not complete. + * return to the form + */ + $q = mysql_query("SELECT * FROM eval_projects WHERE project_id = '".$project_id."' "); + if (!$q OR mysql_num_rows($q) == 0){ + // what to do here? Should not happen + } + while($r=mysql_fetch_object($q)) { + $scheme_id = $r->scheme_id; } - else{ - // no projects assigned or incorrect team number. - } - } - $project_num = ""; - echo "
Enter one of the above listed project numbers
"; + $q = mysql_query("SELECT * FROM eval_criteria WHERE scheme_id = '".$scheme_id."' "); + if (!$q OR mysql_num_rows($q) == 0){ + // what to do here? Should not happen + } + while($r=mysql_fetch_object($q)) { + // skip those that have criteria weight == 0 (compatibility with Apperson Scanner export/import) + if ($r->criteria_weight > 0){ + $criteria_id = $r->criteria_id; + $postname= "CR_".$criteria_id; + if ($_POST[$postname]){ + $value_id = $_POST[$postname]; + // now save this one in the database + $status = mysql_query("UPDATE eval_projects_entries SET level_id = '".$value_id."' WHERE judges_teams_id = '".$judges_teams_id."' AND project_id = '".$project_id."' AND criteria_id = '".$criteria_id."' " ); + // should work but need check if $status == false + } + } + } + } } -if($_POST['selection']=="project_num") { - // Create the evaluation form for this project - team combination - $project_num = $_POST['project_num']; // just entered or changed - $team_num = $_POST['team_num']; // saved in form - $judges_team_name = $_POST['team_name']; - $judges_teams_id = $_POST['team_id']; +if($_POST['enter']=="project_team" || $_POST['selection'] == "team_num") { + // Changed the project number and or team number + $team_num = $_POST['team_num']; + if ($_POST['prev_team_num'] != $team_num){ + $newteam = true; + } } if ($team_num == 0) { @@ -133,18 +107,63 @@ if ($team_num == 0) echo ""; exit; } -// have a team number and a list if projects was presented. Get which project to work on. -if($project_num == 0){ - echo "
Have team number data: Number: ".$team_num." Id=",$judges_teams_id." name=".$judges_team_name."
"; - echo "
"; - echo ""; + +// have a team number if get here next gets the selected project from the drop down list +if($_POST['project']){ + $project_num = $_POST['project']; +} +if ($newteam) { + $project_num = 0; +} + //echo "
Have team number data: Number: ".$team_num." Id=",$judges_teams_id." name=".$judges_team_name."
"; + echo ""; + echo ""; echo ""; echo ""; + echo ""; + echo ""; echo ""; - echo ""; - echo ""; + echo ""; + //echo ""; echo "
Team Number Reload form for new team!
Project Number
Team Number
Project Number
"; - echo "
"; + $qstr_prjs = "SELECT judges_teams_timeslots_projects_link.`year`, judges_teams_timeslots_projects_link.judges_teams_id, judges_teams.num, ". + "judges_teams.name, projects.projectnumber, projects.floornumber, projects.title, projects.shorttitle, projects.`language` ". + "FROM judges_teams, judges_teams_timeslots_projects_link, projects ". + "WHERE judges_teams.id = judges_teams_timeslots_projects_link.judges_teams_id ". + "AND judges_teams_timeslots_projects_link.projects_id = projects.id ". + "AND judges_teams.num = '$team_num' "; + $qprjs=mysql_query($qstr_prjs); + if ($qprjs) { + $num_projects = mysql_num_rows($qprjs); + if ($num_projects > 0 ){ + $cnt = 0; + //echo "
"; + echo ""; + echo "
"; + echo "
"; + } + else{ + // no projects assigned or incorrect team number. + } + } + +if ($project_num == 0 ) { // if first selection of team number or if changed the team number. echo ""; exit; } @@ -178,23 +197,8 @@ if (!$q OR mysql_num_rows($q) == 0){ echo ""; exit; } -echo "
"; -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; -echo ""; -echo "
Team Number Reload form for new team!
Project Number"; -echo " (for now, enter -1 to select a different judge team)
"; -echo "
"; +// At this point we have all the data necessary to create the entry form // Get project information for display -//$qst = "SELECT projects.projectdivisions_id AS Expr1, projectdivisions.division, projectcategories.category, projects.title AS ptitle, ". -// "projects.shorttitle AS pshorttitle, projectcategories.category_shortform, projectdivisions.division_shortform, projects.language ". -// "FROM projects, projectcategories, projectdivisions ". -// "WHERE projects.projectcategories_id = projectcategories.id AND projects.projectdivisions_id = projectdivisions.id ". -// "AND projects.id = '".$project_id."'"; - $qst = "SELECT projects.projectdivisions_id, projectdivisions.division, projectdivisions.division_shortform, projectcategories.category, ". "projectcategories.category_shortform, projects.projectnumber, projects.floornumber, projects.title, projects.shorttitle, ". "projects.`language`, eval_projects.scheme_id, eval_projects.team ". @@ -215,22 +219,24 @@ if ($q) { $team = $r->team; } } -echo "
Project Title: ".$ptitle.""; -echo "
Project Category: ".$category; +echo "
Current Evaluation is for:
"; +echo " Team number: ".$team_num."
"; $IsTeam = ""; if ($team == "yes"){ $IsTeam = " (Team Project)";} -echo "
Project Division: ".$division.$IsTeam; -echo "
Language: ".$language; +echo " Project number: ".$project_num ." Title: ".$ptitle.$IsTeam."

"; +echo " Project Category: ".$category."
"; +echo " Project Division: ".$division."
"; +echo " Language: ".$language."
"; // this is for test only at this time. will be used in the Apperson Scanner export and import. // to create the file necessary to preslug the score forms. // Barcode = 1 or 2 for team, 4 digits exn, 4 digits team number, 2 digits checksum? -$tempprnum = substr($project_num , 1); -if ( strlen($tempprnum) < 4 ) - { - $tempprnum = "0".$tempprnum; - } -echo "
Scanner Project number: ".$tempprnum; -echo ""; +//$tempprnum = substr($project_num , 1); +//if ( strlen($tempprnum) < 4 ) +// { +// $tempprnum = "0".$tempprnum; +// } +//echo "
Scanner Project number: ".$tempprnum; +echo "
"; $errors = 0; $criteria_row = 0; // First find the longest string in criteria and level names so the table will look nice