From 5dac82f52f45ad27f16ec2ff63ee75e2f39ef942 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sat, 30 Jun 2018 11:37:30 +0200 Subject: Renommage pour diff de beta_old1 vers beta_accents --- beta_accents/app/admin.php | 63 + beta_accents/app/auth_dialog.php | 121 + beta_accents/app/css/default.css | 240 ++ beta_accents/app/css/default_img/README.txt | 1 + beta_accents/app/css/default_img/README.txt~ | 0 beta_accents/app/css/default_img/titre.png | Bin 0 -> 23658 bytes beta_accents/app/css/ice.css | 342 +++ beta_accents/app/css/ice_img/README.txt | 1 + beta_accents/app/css/ice_img/logo.png | Bin 0 -> 5040 bytes beta_accents/app/css/ice_img/masque.png | Bin 0 -> 415 bytes beta_accents/app/css/ice_img/titleTable.png | Bin 0 -> 1248 bytes beta_accents/app/css/ice_img/titre.png | Bin 0 -> 23658 bytes beta_accents/app/css/ice_moche.css | 233 ++ beta_accents/app/css/ice_moche_img/README.txt | 1 + beta_accents/app/css/ice_moche_img/logo.png | Bin 0 -> 5040 bytes beta_accents/app/css/ice_moche_img/masque.png | Bin 0 -> 415 bytes beta_accents/app/css/ice_moche_img/titleTable.png | Bin 0 -> 1248 bytes beta_accents/app/css/ice_moche_img/titre.png | Bin 0 -> 23658 bytes beta_accents/app/css/ice_moche_nohelp.css | 252 ++ beta_accents/app/css/ice_nohelp.css | 345 +++ beta_accents/app/deco.php | 36 + beta_accents/app/details_reunion.php | 121 + beta_accents/app/help/admin.php.hlp | 23 + beta_accents/app/help/auth_dialog.php.hlp | 2 + beta_accents/app/help/details_reunion.php.hlp | 4 + .../app/help/details_reunion_admin.php.hlp | 17 + beta_accents/app/help/groupe.hlp | 1 + beta_accents/app/help/index.php.hlp | 7 + beta_accents/app/help/listes.php.hlp | 1 + beta_accents/app/help/modele_page.php.hlp | 17 + beta_accents/app/help/organiser.php.hlp | 2 + beta_accents/app/help/profil.php.hlp | 2 + beta_accents/app/help/sendmail.php.hlp | 2 + beta_accents/app/ical.php | 36 + beta_accents/app/images/addP.gif | Bin 0 -> 363 bytes beta_accents/app/images/button_del.png | Bin 0 -> 1429 bytes beta_accents/app/images/button_ok.png | Bin 0 -> 1679 bytes beta_accents/app/images/del.gif | Bin 0 -> 882 bytes beta_accents/app/images/details.png | Bin 0 -> 237 bytes beta_accents/app/images/editCreneau2.gif | Bin 0 -> 865 bytes beta_accents/app/images/logo.png | Bin 0 -> 5040 bytes beta_accents/app/images/masque.png | Bin 0 -> 415 bytes beta_accents/app/images/ok.gif | Bin 0 -> 340 bytes beta_accents/app/images/question.gif | Bin 0 -> 640 bytes beta_accents/app/images/supprimer.png | Bin 0 -> 244 bytes beta_accents/app/images/vcss.gif | Bin 0 -> 1547 bytes beta_accents/app/images/vxhtml.gif | Bin 0 -> 2344 bytes beta_accents/app/images/wai.gif | Bin 0 -> 2370 bytes beta_accents/app/include/connect.inc.php | 14 + beta_accents/app/include/ical.inc.php | 68 + beta_accents/app/include/je.inc.php | 244 ++ beta_accents/app/include/ju.inc.php | 237 ++ beta_accents/app/include/ludo/TODO_list.txt | 24 + beta_accents/app/include/ludo/auth.inc.php | 78 + beta_accents/app/include/ludo/config.inc.php | 74 + .../app/include/ludo/div_create_or_modif.php | 72 + beta_accents/app/include/ludo/fonctions.inc.php | 550 +++++ .../app/include/ludo/html_elements.inc.php | 185 ++ beta_accents/app/include/ludo/mail_textarea.php | 44 + beta_accents/app/include/ludo/majDispo.php | 39 + beta_accents/app/include/ludo/redir.inc.php | 20 + .../app/include/ludo/session_verify.inc.php | 9 + beta_accents/app/index.php | 123 + beta_accents/app/listes.php | 48 + beta_accents/app/organiser.php | 24 + beta_accents/app/popcommentaire.php | 23 + beta_accents/app/popcreneau.php | 90 + beta_accents/app/popdeletelist.php | 20 + beta_accents/app/popfixer.php | 42 + beta_accents/app/popnewlist.php | 3 + beta_accents/app/poppersonne.php | 112 + beta_accents/app/poppersonneliste.php | 27 + beta_accents/app/profil.php | 59 + beta_accents/app/script.js | 341 +++ beta_accents/app/sendmail.php | 196 ++ beta_accents/app/templates/mail_annul.php | 12 + beta_accents/app/templates/mail_cree.php | 13 + beta_accents/app/templates/mail_fixee.php | 14 + beta_accents/app/templates/mail_modif.php | 13 + beta_accents/app/test.php | 8 + beta_accents/app/testGet.php | 18 + beta_accents/doc/READ_ME.css | 109 + beta_accents/doc/READ_ME.dvi | Bin 0 -> 16892 bytes beta_accents/doc/READ_ME.html | 469 ++++ beta_accents/doc/READ_ME.lyx | 582 +++++ beta_accents/doc/READ_ME.lyx~ | 582 +++++ beta_accents/doc/READ_ME.pdf | Bin 0 -> 77548 bytes beta_accents/doc/READ_ME.ps | 2436 ++++++++++++++++++++ beta_accents/doc/READ_ME.txt | 277 +++ beta_accents/fct_adm.inc.php | 33 + beta_accents/install/RAZbase.php | 130 ++ beta_accents/install/base.sql | 123 + beta_accents/install/jeu_essai.sql | 114 + beta_accents/install/jeu_essai.sql~ | 114 + beta_old1/app/admin.php | 63 - beta_old1/app/auth_dialog.php | 121 - beta_old1/app/css/default.css | 240 -- beta_old1/app/css/default_img/README.txt | 1 - beta_old1/app/css/default_img/README.txt~ | 0 beta_old1/app/css/default_img/titre.png | Bin 23658 -> 0 bytes beta_old1/app/css/ice.css | 342 --- beta_old1/app/css/ice_img/README.txt | 1 - beta_old1/app/css/ice_img/logo.png | Bin 5040 -> 0 bytes beta_old1/app/css/ice_img/masque.png | Bin 415 -> 0 bytes beta_old1/app/css/ice_img/titleTable.png | Bin 1248 -> 0 bytes beta_old1/app/css/ice_img/titre.png | Bin 23658 -> 0 bytes beta_old1/app/css/ice_moche.css | 233 -- beta_old1/app/css/ice_moche_img/README.txt | 1 - beta_old1/app/css/ice_moche_img/logo.png | Bin 5040 -> 0 bytes beta_old1/app/css/ice_moche_img/masque.png | Bin 415 -> 0 bytes beta_old1/app/css/ice_moche_img/titleTable.png | Bin 1248 -> 0 bytes beta_old1/app/css/ice_moche_img/titre.png | Bin 23658 -> 0 bytes beta_old1/app/css/ice_moche_nohelp.css | 252 -- beta_old1/app/css/ice_nohelp.css | 345 --- beta_old1/app/deco.php | 36 - beta_old1/app/details_reunion.php | 121 - beta_old1/app/help/admin.php.hlp | 23 - beta_old1/app/help/auth_dialog.php.hlp | 2 - beta_old1/app/help/details_reunion.php.hlp | 4 - beta_old1/app/help/details_reunion_admin.php.hlp | 17 - beta_old1/app/help/groupe.hlp | 1 - beta_old1/app/help/index.php.hlp | 7 - beta_old1/app/help/listes.php.hlp | 1 - beta_old1/app/help/modele_page.php.hlp | 17 - beta_old1/app/help/organiser.php.hlp | 2 - beta_old1/app/help/profil.php.hlp | 2 - beta_old1/app/help/sendmail.php.hlp | 2 - beta_old1/app/ical.php | 36 - beta_old1/app/images/addP.gif | Bin 363 -> 0 bytes beta_old1/app/images/button_del.png | Bin 1429 -> 0 bytes beta_old1/app/images/button_ok.png | Bin 1679 -> 0 bytes beta_old1/app/images/del.gif | Bin 882 -> 0 bytes beta_old1/app/images/details.png | Bin 237 -> 0 bytes beta_old1/app/images/editCreneau2.gif | Bin 865 -> 0 bytes beta_old1/app/images/logo.png | Bin 5040 -> 0 bytes beta_old1/app/images/masque.png | Bin 415 -> 0 bytes beta_old1/app/images/ok.gif | Bin 340 -> 0 bytes beta_old1/app/images/question.gif | Bin 640 -> 0 bytes beta_old1/app/images/supprimer.png | Bin 244 -> 0 bytes beta_old1/app/images/vcss.gif | Bin 1547 -> 0 bytes beta_old1/app/images/vxhtml.gif | Bin 2344 -> 0 bytes beta_old1/app/images/wai.gif | Bin 2370 -> 0 bytes beta_old1/app/include/connect.inc.php | 14 - beta_old1/app/include/ical.inc.php | 68 - beta_old1/app/include/je.inc.php | 244 -- beta_old1/app/include/ju.inc.php | 237 -- beta_old1/app/include/ludo/TODO_list.txt | 24 - beta_old1/app/include/ludo/auth.inc.php | 78 - beta_old1/app/include/ludo/config.inc.php | 74 - beta_old1/app/include/ludo/div_create_or_modif.php | 72 - beta_old1/app/include/ludo/fonctions.inc.php | 550 ----- beta_old1/app/include/ludo/html_elements.inc.php | 185 -- beta_old1/app/include/ludo/mail_textarea.php | 44 - beta_old1/app/include/ludo/majDispo.php | 39 - beta_old1/app/include/ludo/redir.inc.php | 20 - beta_old1/app/include/ludo/session_verify.inc.php | 9 - beta_old1/app/index.php | 123 - beta_old1/app/listes.php | 48 - beta_old1/app/organiser.php | 24 - beta_old1/app/popcommentaire.php | 23 - beta_old1/app/popcreneau.php | 90 - beta_old1/app/popdeletelist.php | 20 - beta_old1/app/popfixer.php | 42 - beta_old1/app/popnewlist.php | 3 - beta_old1/app/poppersonne.php | 112 - beta_old1/app/poppersonneliste.php | 27 - beta_old1/app/profil.php | 59 - beta_old1/app/script.js | 341 --- beta_old1/app/sendmail.php | 196 -- beta_old1/app/templates/mail_annul.php | 12 - beta_old1/app/templates/mail_cree.php | 13 - beta_old1/app/templates/mail_fixee.php | 14 - beta_old1/app/templates/mail_modif.php | 13 - beta_old1/app/test.php | 8 - beta_old1/app/testGet.php | 18 - beta_old1/doc/READ_ME.css | 109 - beta_old1/doc/READ_ME.dvi | Bin 16892 -> 0 bytes beta_old1/doc/READ_ME.html | 469 ---- beta_old1/doc/READ_ME.lyx | 582 ----- beta_old1/doc/READ_ME.lyx~ | 582 ----- beta_old1/doc/READ_ME.pdf | Bin 77548 -> 0 bytes beta_old1/doc/READ_ME.ps | 2436 -------------------- beta_old1/doc/READ_ME.txt | 277 --- beta_old1/fct_adm.inc.php | 33 - beta_old1/install/RAZbase.php | 130 -- beta_old1/install/base.sql | 123 - beta_old1/install/jeu_essai.sql | 114 - beta_old1/install/jeu_essai.sql~ | 114 - 188 files changed, 9683 insertions(+), 9683 deletions(-) create mode 100644 beta_accents/app/admin.php create mode 100644 beta_accents/app/auth_dialog.php create mode 100644 beta_accents/app/css/default.css create mode 100644 beta_accents/app/css/default_img/README.txt create mode 100644 beta_accents/app/css/default_img/README.txt~ create mode 100644 beta_accents/app/css/default_img/titre.png create mode 100644 beta_accents/app/css/ice.css create mode 100644 beta_accents/app/css/ice_img/README.txt create mode 100644 beta_accents/app/css/ice_img/logo.png create mode 100644 beta_accents/app/css/ice_img/masque.png create mode 100644 beta_accents/app/css/ice_img/titleTable.png create mode 100644 beta_accents/app/css/ice_img/titre.png create mode 100644 beta_accents/app/css/ice_moche.css create mode 100644 beta_accents/app/css/ice_moche_img/README.txt create mode 100644 beta_accents/app/css/ice_moche_img/logo.png create mode 100644 beta_accents/app/css/ice_moche_img/masque.png create mode 100644 beta_accents/app/css/ice_moche_img/titleTable.png create mode 100644 beta_accents/app/css/ice_moche_img/titre.png create mode 100644 beta_accents/app/css/ice_moche_nohelp.css create mode 100644 beta_accents/app/css/ice_nohelp.css create mode 100644 beta_accents/app/deco.php create mode 100644 beta_accents/app/details_reunion.php create mode 100644 beta_accents/app/help/admin.php.hlp create mode 100644 beta_accents/app/help/auth_dialog.php.hlp create mode 100644 beta_accents/app/help/details_reunion.php.hlp create mode 100644 beta_accents/app/help/details_reunion_admin.php.hlp create mode 100644 beta_accents/app/help/groupe.hlp create mode 100644 beta_accents/app/help/index.php.hlp create mode 100644 beta_accents/app/help/listes.php.hlp create mode 100644 beta_accents/app/help/modele_page.php.hlp create mode 100644 beta_accents/app/help/organiser.php.hlp create mode 100644 beta_accents/app/help/profil.php.hlp create mode 100644 beta_accents/app/help/sendmail.php.hlp create mode 100644 beta_accents/app/ical.php create mode 100644 beta_accents/app/images/addP.gif create mode 100644 beta_accents/app/images/button_del.png create mode 100644 beta_accents/app/images/button_ok.png create mode 100644 beta_accents/app/images/del.gif create mode 100644 beta_accents/app/images/details.png create mode 100644 beta_accents/app/images/editCreneau2.gif create mode 100644 beta_accents/app/images/logo.png create mode 100644 beta_accents/app/images/masque.png create mode 100644 beta_accents/app/images/ok.gif create mode 100644 beta_accents/app/images/question.gif create mode 100644 beta_accents/app/images/supprimer.png create mode 100644 beta_accents/app/images/vcss.gif create mode 100644 beta_accents/app/images/vxhtml.gif create mode 100644 beta_accents/app/images/wai.gif create mode 100644 beta_accents/app/include/connect.inc.php create mode 100644 beta_accents/app/include/ical.inc.php create mode 100644 beta_accents/app/include/je.inc.php create mode 100644 beta_accents/app/include/ju.inc.php create mode 100644 beta_accents/app/include/ludo/TODO_list.txt create mode 100644 beta_accents/app/include/ludo/auth.inc.php create mode 100644 beta_accents/app/include/ludo/config.inc.php create mode 100644 beta_accents/app/include/ludo/div_create_or_modif.php create mode 100644 beta_accents/app/include/ludo/fonctions.inc.php create mode 100644 beta_accents/app/include/ludo/html_elements.inc.php create mode 100644 beta_accents/app/include/ludo/mail_textarea.php create mode 100644 beta_accents/app/include/ludo/majDispo.php create mode 100644 beta_accents/app/include/ludo/redir.inc.php create mode 100644 beta_accents/app/include/ludo/session_verify.inc.php create mode 100644 beta_accents/app/index.php create mode 100644 beta_accents/app/listes.php create mode 100644 beta_accents/app/organiser.php create mode 100644 beta_accents/app/popcommentaire.php create mode 100644 beta_accents/app/popcreneau.php create mode 100644 beta_accents/app/popdeletelist.php create mode 100644 beta_accents/app/popfixer.php create mode 100644 beta_accents/app/popnewlist.php create mode 100644 beta_accents/app/poppersonne.php create mode 100644 beta_accents/app/poppersonneliste.php create mode 100644 beta_accents/app/profil.php create mode 100644 beta_accents/app/script.js create mode 100644 beta_accents/app/sendmail.php create mode 100644 beta_accents/app/templates/mail_annul.php create mode 100644 beta_accents/app/templates/mail_cree.php create mode 100644 beta_accents/app/templates/mail_fixee.php create mode 100644 beta_accents/app/templates/mail_modif.php create mode 100644 beta_accents/app/test.php create mode 100644 beta_accents/app/testGet.php create mode 100644 beta_accents/doc/READ_ME.css create mode 100644 beta_accents/doc/READ_ME.dvi create mode 100644 beta_accents/doc/READ_ME.html create mode 100644 beta_accents/doc/READ_ME.lyx create mode 100644 beta_accents/doc/READ_ME.lyx~ create mode 100644 beta_accents/doc/READ_ME.pdf create mode 100644 beta_accents/doc/READ_ME.ps create mode 100644 beta_accents/doc/READ_ME.txt create mode 100644 beta_accents/fct_adm.inc.php create mode 100644 beta_accents/install/RAZbase.php create mode 100644 beta_accents/install/base.sql create mode 100644 beta_accents/install/jeu_essai.sql create mode 100644 beta_accents/install/jeu_essai.sql~ delete mode 100644 beta_old1/app/admin.php delete mode 100644 beta_old1/app/auth_dialog.php delete mode 100644 beta_old1/app/css/default.css delete mode 100644 beta_old1/app/css/default_img/README.txt delete mode 100644 beta_old1/app/css/default_img/README.txt~ delete mode 100644 beta_old1/app/css/default_img/titre.png delete mode 100644 beta_old1/app/css/ice.css delete mode 100644 beta_old1/app/css/ice_img/README.txt delete mode 100644 beta_old1/app/css/ice_img/logo.png delete mode 100644 beta_old1/app/css/ice_img/masque.png delete mode 100644 beta_old1/app/css/ice_img/titleTable.png delete mode 100644 beta_old1/app/css/ice_img/titre.png delete mode 100644 beta_old1/app/css/ice_moche.css delete mode 100644 beta_old1/app/css/ice_moche_img/README.txt delete mode 100644 beta_old1/app/css/ice_moche_img/logo.png delete mode 100644 beta_old1/app/css/ice_moche_img/masque.png delete mode 100644 beta_old1/app/css/ice_moche_img/titleTable.png delete mode 100644 beta_old1/app/css/ice_moche_img/titre.png delete mode 100644 beta_old1/app/css/ice_moche_nohelp.css delete mode 100644 beta_old1/app/css/ice_nohelp.css delete mode 100644 beta_old1/app/deco.php delete mode 100644 beta_old1/app/details_reunion.php delete mode 100644 beta_old1/app/help/admin.php.hlp delete mode 100644 beta_old1/app/help/auth_dialog.php.hlp delete mode 100644 beta_old1/app/help/details_reunion.php.hlp delete mode 100644 beta_old1/app/help/details_reunion_admin.php.hlp delete mode 100644 beta_old1/app/help/groupe.hlp delete mode 100644 beta_old1/app/help/index.php.hlp delete mode 100644 beta_old1/app/help/listes.php.hlp delete mode 100644 beta_old1/app/help/modele_page.php.hlp delete mode 100644 beta_old1/app/help/organiser.php.hlp delete mode 100644 beta_old1/app/help/profil.php.hlp delete mode 100644 beta_old1/app/help/sendmail.php.hlp delete mode 100644 beta_old1/app/ical.php delete mode 100644 beta_old1/app/images/addP.gif delete mode 100644 beta_old1/app/images/button_del.png delete mode 100644 beta_old1/app/images/button_ok.png delete mode 100644 beta_old1/app/images/del.gif delete mode 100644 beta_old1/app/images/details.png delete mode 100644 beta_old1/app/images/editCreneau2.gif delete mode 100644 beta_old1/app/images/logo.png delete mode 100644 beta_old1/app/images/masque.png delete mode 100644 beta_old1/app/images/ok.gif delete mode 100644 beta_old1/app/images/question.gif delete mode 100644 beta_old1/app/images/supprimer.png delete mode 100644 beta_old1/app/images/vcss.gif delete mode 100644 beta_old1/app/images/vxhtml.gif delete mode 100644 beta_old1/app/images/wai.gif delete mode 100644 beta_old1/app/include/connect.inc.php delete mode 100644 beta_old1/app/include/ical.inc.php delete mode 100644 beta_old1/app/include/je.inc.php delete mode 100644 beta_old1/app/include/ju.inc.php delete mode 100644 beta_old1/app/include/ludo/TODO_list.txt delete mode 100644 beta_old1/app/include/ludo/auth.inc.php delete mode 100644 beta_old1/app/include/ludo/config.inc.php delete mode 100644 beta_old1/app/include/ludo/div_create_or_modif.php delete mode 100644 beta_old1/app/include/ludo/fonctions.inc.php delete mode 100644 beta_old1/app/include/ludo/html_elements.inc.php delete mode 100644 beta_old1/app/include/ludo/mail_textarea.php delete mode 100644 beta_old1/app/include/ludo/majDispo.php delete mode 100644 beta_old1/app/include/ludo/redir.inc.php delete mode 100644 beta_old1/app/include/ludo/session_verify.inc.php delete mode 100644 beta_old1/app/index.php delete mode 100644 beta_old1/app/listes.php delete mode 100644 beta_old1/app/organiser.php delete mode 100644 beta_old1/app/popcommentaire.php delete mode 100644 beta_old1/app/popcreneau.php delete mode 100644 beta_old1/app/popdeletelist.php delete mode 100644 beta_old1/app/popfixer.php delete mode 100644 beta_old1/app/popnewlist.php delete mode 100644 beta_old1/app/poppersonne.php delete mode 100644 beta_old1/app/poppersonneliste.php delete mode 100644 beta_old1/app/profil.php delete mode 100644 beta_old1/app/script.js delete mode 100644 beta_old1/app/sendmail.php delete mode 100644 beta_old1/app/templates/mail_annul.php delete mode 100644 beta_old1/app/templates/mail_cree.php delete mode 100644 beta_old1/app/templates/mail_fixee.php delete mode 100644 beta_old1/app/templates/mail_modif.php delete mode 100644 beta_old1/app/test.php delete mode 100644 beta_old1/app/testGet.php delete mode 100644 beta_old1/doc/READ_ME.css delete mode 100644 beta_old1/doc/READ_ME.dvi delete mode 100644 beta_old1/doc/READ_ME.html delete mode 100644 beta_old1/doc/READ_ME.lyx delete mode 100644 beta_old1/doc/READ_ME.lyx~ delete mode 100644 beta_old1/doc/READ_ME.pdf delete mode 100644 beta_old1/doc/READ_ME.ps delete mode 100644 beta_old1/doc/READ_ME.txt delete mode 100644 beta_old1/fct_adm.inc.php delete mode 100644 beta_old1/install/RAZbase.php delete mode 100644 beta_old1/install/base.sql delete mode 100644 beta_old1/install/jeu_essai.sql delete mode 100644 beta_old1/install/jeu_essai.sql~ diff --git a/beta_accents/app/admin.php b/beta_accents/app/admin.php new file mode 100644 index 0000000..4248d2a --- /dev/null +++ b/beta_accents/app/admin.php @@ -0,0 +1,63 @@ +\n"; + +generate_html_divs_menu(); +?> +
+

+ > Accueil + > Administration +

+
+' . "\n"; + + if ( isset($_REQUEST['action']) ) + { + switch ($_REQUEST['action']) + { + case 'delete_from_AWOR_Liste': + case 'delete_from_AWOR_Fichier': + case 'delete_from_AWOR_Reunion': + case 'delete_from_AWOR_Personne': + $_REQUEST['action'](); + break; + default: + $errmsg = 'Impossible de traiter la requete : paramètre erroné'."\n"; + } + } + + if ( !isset($_SESSION['session_loginP']) || ( !is_integer(array_search($_SESSION['session_loginP'],$CONFIG['SUPERUSERS'],true))) ) + { + $errmsg='Vous n\'avez pas le droit de consulter cette page : vous n\'êtes pas un administrateur !'; + generate_html_div_errmsg($errmsg); + echo ''; + exit(); + } + + + // TODO : fonctions qui purgent les tables filles selon un id donné, pour chaque cas mère-fille (indiqués plus bas) + + // Fonctions qui génèrent des tableaux listant tous les objets de la base, et permettant la sélection multiple et l'éffacement (en cascade) + html_generate_MySQLTableSuppr('AWOR_Liste','idL'); // Permet de virer des liste + echo "
\n"; + html_generate_MySQLTableSuppr('AWOR_Fichier','idFic'); // Permet de virer des fichiers, doit purger physiquement sur le disque + echo "
\n"; + html_generate_MySQLTableSuppr('AWOR_Reunion','idR', 'idR,objetR,estAnnulee,idP_Orga,idC_Fixe,idL'); // Permet de virer des gens, doit purger les tables Creneau et Choisir, Repondre, Fichiers + echo "
\n"; + html_generate_MySQLTableSuppr('AWOR_Personne','idP'); // Permet de virer des gens, doit purger les tables Appartenir, Reunion + +echo " \n"; +generate_html_div_footer(); +?> + + diff --git a/beta_accents/app/auth_dialog.php b/beta_accents/app/auth_dialog.php new file mode 100644 index 0000000..55e6c16 --- /dev/null +++ b/beta_accents/app/auth_dialog.php @@ -0,0 +1,121 @@ + + +

AWOR

+ + +
+

Application Web d'Organisation de Réunion

+

Veuillez vous identifier

+ ' . "\n"; ?> + + ' . "\n" ; ?> +
+
+ Votre identifiant : + +
+
+ Votre mot de passe : + +
+
+ + +
+
+' . "\n"; } ?> + +
+ + + diff --git a/beta_accents/app/css/default.css b/beta_accents/app/css/default.css new file mode 100644 index 0000000..b8ecc3d --- /dev/null +++ b/beta_accents/app/css/default.css @@ -0,0 +1,240 @@ + +img { border : none ; } +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color: #551A8B; +} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(default_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(../images/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:20px; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:120px; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + +/*******************/ +/***** Contenu *****/ +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + padding-right:22%;/*225px;*/ /*200 + 5*2 + 2*2 + (pour ie 5*2) */ +} +#help { + text-align:justify; + color:#000000; + float:right; + margin:5px; + padding:5px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:18%; +} +#help h2 +{ + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + margin-top:0; + margin-bottom:10px; +} + +#no_help h2 +{ + display:none; +} +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_new { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 25em; + margin-top: -12.5em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_new { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_new h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_new input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(../images/masque.png); + background-repeat:repeat; + z-index: 499; +} \ No newline at end of file diff --git a/beta_accents/app/css/default_img/README.txt b/beta_accents/app/css/default_img/README.txt new file mode 100644 index 0000000..fec6abf --- /dev/null +++ b/beta_accents/app/css/default_img/README.txt @@ -0,0 +1 @@ +C'est ici qu'on stockera les images propre au style default.css diff --git a/beta_accents/app/css/default_img/README.txt~ b/beta_accents/app/css/default_img/README.txt~ new file mode 100644 index 0000000..e69de29 diff --git a/beta_accents/app/css/default_img/titre.png b/beta_accents/app/css/default_img/titre.png new file mode 100644 index 0000000..d8d9ce6 Binary files /dev/null and b/beta_accents/app/css/default_img/titre.png differ diff --git a/beta_accents/app/css/ice.css b/beta_accents/app/css/ice.css new file mode 100644 index 0000000..9418fd9 --- /dev/null +++ b/beta_accents/app/css/ice.css @@ -0,0 +1,342 @@ +em {color:#F00;} +img { border : none ; } +img.spacing{ margin: 0 0.2em 0 0.2em;} +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color:#551A8B; +} +th.selected {color:#FFF;background-color:#8470FF} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} + +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +.reunion_fixee { + color:#bf7e00; +} +.reunion_en_cours { + color:#9fbf00; +} +.reunion_annulee { + color:#bf2000; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:1.5em; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; + height:1.5em; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; + height:1.5em; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:10em; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + +/*******************/ +/***** Contenu *****/ +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + float:left; + width:78%; +} +#help { + text-align:justify; + color:#000000; + float:right; + margin:5px; + padding:5px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:18%; +} + +#help h2 , #help a +{ + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + color:#FFFFFF; + margin-top:0; + margin-bottom:10px; +} +#no_help, #no_help h2 +{ + display:none; +} + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 10em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 14em; + margin-top: -7em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} +div.popup_contenu em +{ + font-size:x-small; + color:#FFF; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +} + +#page_accueil h1 +{ + background:#551A8B; + color:#FFF; + margin-top:0; +} + +#page_accueil +{ + text-align:center; +} + +#msg +{ + display:none; + position:absolute; + text-align:center; + left:50%; + margin-left:-20%; + width:40%; + background-color:#551A8B; + top:-10px; + padding-top:15px; + padding-bottom:10px; + color:#FFF; + -moz-border-radius:16px; +} +#msg em +{ + color:#FFF; +} + + +#footer +{ + display:block; + + position:fixed; + left:0px; + width:100%; + background-color:#551A8B; + top:100%; + height:2.3em; + padding-top:-2.3em; + margin-top:-2.3em; + color:#FFF; + font-size:x-small; +} +#footer ul +{ + display:inline; + list-style-type:none; + white-space:nowrap; +} +#footer li.right { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + padding-top:0.5em; + margin-top:0px; + padding-right:10px; +} +#footer li { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:-14px; + padding-right:30px; +} +#footer li.left { + list-style: none; + float:left; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:0px; + padding-left:30px; +} diff --git a/beta_accents/app/css/ice_img/README.txt b/beta_accents/app/css/ice_img/README.txt new file mode 100644 index 0000000..b81d613 --- /dev/null +++ b/beta_accents/app/css/ice_img/README.txt @@ -0,0 +1 @@ +C'est ici qu'on stockera les images propre au style Ice.css diff --git a/beta_accents/app/css/ice_img/logo.png b/beta_accents/app/css/ice_img/logo.png new file mode 100644 index 0000000..a768d45 Binary files /dev/null and b/beta_accents/app/css/ice_img/logo.png differ diff --git a/beta_accents/app/css/ice_img/masque.png b/beta_accents/app/css/ice_img/masque.png new file mode 100644 index 0000000..45a6027 Binary files /dev/null and b/beta_accents/app/css/ice_img/masque.png differ diff --git a/beta_accents/app/css/ice_img/titleTable.png b/beta_accents/app/css/ice_img/titleTable.png new file mode 100644 index 0000000..e6c02d9 Binary files /dev/null and b/beta_accents/app/css/ice_img/titleTable.png differ diff --git a/beta_accents/app/css/ice_img/titre.png b/beta_accents/app/css/ice_img/titre.png new file mode 100644 index 0000000..d8d9ce6 Binary files /dev/null and b/beta_accents/app/css/ice_img/titre.png differ diff --git a/beta_accents/app/css/ice_moche.css b/beta_accents/app/css/ice_moche.css new file mode 100644 index 0000000..0004b1a --- /dev/null +++ b/beta_accents/app/css/ice_moche.css @@ -0,0 +1,233 @@ +img { border : none ; } +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color:#551A8B; +} + +th.selected {color:#8470FF;} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} + +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + height:60px; + width:200px; + margin-left:60px; + padding-top:5px; +/* background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat;*/ + color:#FFFFFF; + font-size:40px; + +} +#titre { + height:60px; + padding-top:5px; + width:100%; + clear:left; + background-color:#551A8B; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + color:#551A8B; + width:15em; + background-color:#FFFFFF; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#551A8B; +} +#menu a:hover { + color:#FFFFFF; + background-color:#551A8B; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + padding:0px; + margin:0px; + vertical-align:middle; +} +#menu #deconnection { +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + display:none; +} + +/*******************/ +/***** Contenu *****/ +#contenu { + padding-top:10px; + padding-bottom:10px; + padding-right:3em; + padding_left:3em; + position:absolute; + top:60px; + left:15em; + +} +#help { + text-align:justify; + color:#000000; + float:left; + margin-top:20px; + margin-left:10px; + padding:5px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:15em; +} + +#help h2 , #help a +{ + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + color:#FFFFFF; + margin-top:0; + margin-bottom:10px; +} +#no_help, #no_help h2 +{ + display:none; +} + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +} diff --git a/beta_accents/app/css/ice_moche_img/README.txt b/beta_accents/app/css/ice_moche_img/README.txt new file mode 100644 index 0000000..b81d613 --- /dev/null +++ b/beta_accents/app/css/ice_moche_img/README.txt @@ -0,0 +1 @@ +C'est ici qu'on stockera les images propre au style Ice.css diff --git a/beta_accents/app/css/ice_moche_img/logo.png b/beta_accents/app/css/ice_moche_img/logo.png new file mode 100644 index 0000000..a768d45 Binary files /dev/null and b/beta_accents/app/css/ice_moche_img/logo.png differ diff --git a/beta_accents/app/css/ice_moche_img/masque.png b/beta_accents/app/css/ice_moche_img/masque.png new file mode 100644 index 0000000..45a6027 Binary files /dev/null and b/beta_accents/app/css/ice_moche_img/masque.png differ diff --git a/beta_accents/app/css/ice_moche_img/titleTable.png b/beta_accents/app/css/ice_moche_img/titleTable.png new file mode 100644 index 0000000..e6c02d9 Binary files /dev/null and b/beta_accents/app/css/ice_moche_img/titleTable.png differ diff --git a/beta_accents/app/css/ice_moche_img/titre.png b/beta_accents/app/css/ice_moche_img/titre.png new file mode 100644 index 0000000..d8d9ce6 Binary files /dev/null and b/beta_accents/app/css/ice_moche_img/titre.png differ diff --git a/beta_accents/app/css/ice_moche_nohelp.css b/beta_accents/app/css/ice_moche_nohelp.css new file mode 100644 index 0000000..9032594 --- /dev/null +++ b/beta_accents/app/css/ice_moche_nohelp.css @@ -0,0 +1,252 @@ + +img { border : none ; } +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color: #551A8B; +} +th.selected {color:#8470FF;} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:1.5em; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; + height:1.5em; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; + height:1.5em; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:10em; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + + +/*******************/ +/***** Contenu *****/ + +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + padding-right:5px; + float:left; + width:95%; +} +#no_help { + display:block; + text-align:justify; + color:#000000; + float:right; + margin:0px; + padding:1px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:3%; +} +#no_help h2 , #no_help a +{ + display:block; + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + margin:0px; + padding:0px; +} +#help,#help h2 +{ + display:none; +} + + + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +} \ No newline at end of file diff --git a/beta_accents/app/css/ice_nohelp.css b/beta_accents/app/css/ice_nohelp.css new file mode 100644 index 0000000..03c382f --- /dev/null +++ b/beta_accents/app/css/ice_nohelp.css @@ -0,0 +1,345 @@ +em {color:#F00;} +img { border : none ; } +img.spacing{ margin: 0 0.5em 0 0.5em;} +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ + height: 100%; +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color: #551A8B; +} +th.selected {color:#FFF;background-color:#8470FF} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +.reunion_fixee { + color:#bf7e00; +} +.reunion_en_cours { + color:#9fbf00; +} +.reunion_annulee { + color:#bf2000; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:1.5em; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; + height:1.5em; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; + height:1.5em; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:10em; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + + +/*******************/ +/***** Contenu *****/ + +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + padding-right:5px; + float:left; + width:95%; +} + +#no_help { + display:block; + text-align:justify; + color:#000000; + float:right; + margin:0px; + padding:1px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:3%; +} +#no_help h2 , #no_help a +{ + display:block; + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + margin:0px; + padding:0px; +} +#help,#help h2 +{ + display:none; +} + + + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 10em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 14em; + margin-top: -7em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} +div.popup_contenu em +{ + font-size:x-small; + color:#FFF; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +} + +#page_accueil h1 +{ + background:#551A8B; + color:#FFF; + margin-top:0; +} + +#page_accueil +{ + text-align:center; +} + +#msg +{ + display:none; + position:fixed; + text-align:center; + left:50%; + margin-left:-20%; + width:40%; + background-color:#551A8B; + top:-10px; + padding-top:15px; + padding-bottom:10px; + color:#FFF; + -moz-border-radius:16px; +} + +#footer +{ + display:block; + position:absolute; + text-align:center; + left:0px; + width:100%; + background-color:#551A8B; + bottom:0; + height:2.3em; + padding-top:-2.3em; + margin-top:-2.3em; + color:#FFF; + font-size:x-small; +} +#footer ul +{ + display:inline; + list-style-type:none; + white-space:nowrap; + +} +#footer li.right { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + padding-top:0.5em; + margin-top:0px; + padding-right:10px; +} +#footer li { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:-14px; + padding-right:30px; +} +#footer li.left { + list-style: none; + float:left; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:0px; + padding-left:30px; +} diff --git a/beta_accents/app/deco.php b/beta_accents/app/deco.php new file mode 100644 index 0000000..57a56bc --- /dev/null +++ b/beta_accents/app/deco.php @@ -0,0 +1,36 @@ + + +

Deconnexion

+
+ +
+ + + \ No newline at end of file diff --git a/beta_accents/app/details_reunion.php b/beta_accents/app/details_reunion.php new file mode 100644 index 0000000..845e688 --- /dev/null +++ b/beta_accents/app/details_reunion.php @@ -0,0 +1,121 @@ +\n"; + +// DEBUG +//~ echo '
';
+//~ print_r($_REQUEST);
+//~ echo '
'; + +generate_html_divs_menu(); +?> +
+

+ > Accueil + > Réunions + > Détails d'une réunion +

+
+'; + exit(); + } + generate_html_div_help('help/details_reunion_admin.php.hlp'); + echo '
' . "\n"; + echo '
' . "\n"; + generate_html_reunion_detail2($idR); + echo "
\n"; + echo "
\n"; + generate_html_array_personnes_crenaux($idR, $idP); + echo "
\n"; + generate_html_reunion_commentaires($idR); + echo "
\n"; + generate_html_reunion_fichiers($idR); +?> +
+ + + + + + + +
+
+ + diff --git a/beta_accents/app/help/admin.php.hlp b/beta_accents/app/help/admin.php.hlp new file mode 100644 index 0000000..3d669ec --- /dev/null +++ b/beta_accents/app/help/admin.php.hlp @@ -0,0 +1,23 @@ +Cette page vous permet de visualiser les objets principaux de la base de données.
+Vous pouvez depuis cette page purger la base, ainsi que les fichiers attachés qui sont stockés sur disque.
+Lorsque vous supprimez par exemple une personne inscrite, tout les enregistrements relatifs à cette personne seront effacés : + +Ces cascades peuvent s'avérer dangereuses, mais permettent de garder la base dans un état consitant.
+Il est vivement conseillé de sauvegarder la base de donnée et le répertoire des ficheirs attachés avant d'utiliser cet outil, +l'erreur de manipulation est facile, et les bugs de programmation ne peuvent être totalement exclus... \ No newline at end of file diff --git a/beta_accents/app/help/auth_dialog.php.hlp b/beta_accents/app/help/auth_dialog.php.hlp new file mode 100644 index 0000000..b83937b --- /dev/null +++ b/beta_accents/app/help/auth_dialog.php.hlp @@ -0,0 +1,2 @@ +Merci de vous identifier pour utiliser l'application.
+Par défaut, vous pouvez vous logguer avec votre adresse email et le mot de passe qui y est associé. \ No newline at end of file diff --git a/beta_accents/app/help/details_reunion.php.hlp b/beta_accents/app/help/details_reunion.php.hlp new file mode 100644 index 0000000..5434937 --- /dev/null +++ b/beta_accents/app/help/details_reunion.php.hlp @@ -0,0 +1,4 @@ +Cette page vous permet de visualiser les détails d'une réunion.
+Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.
+Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.
+Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_accents/app/help/details_reunion_admin.php.hlp b/beta_accents/app/help/details_reunion_admin.php.hlp new file mode 100644 index 0000000..41047ab --- /dev/null +++ b/beta_accents/app/help/details_reunion_admin.php.hlp @@ -0,0 +1,17 @@ +Cette page vous permet de visualiser les détails d'une réunion.
+
+Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.
+
+Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.
+
+Ajouter ou Supprimer un créneau
+en appuyant sur le bouton Ajouter une personne
+
+Fixer un Créneau, en cliquant dessus et confirmer l'action (aucune modification ne sera possible après)
+
+Ajouter ou Supprimer un +participant en appuyant sur le bouton Ajouter une personne
+
+Ajouter +
+Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_accents/app/help/groupe.hlp b/beta_accents/app/help/groupe.hlp new file mode 100644 index 0000000..0869bd5 --- /dev/null +++ b/beta_accents/app/help/groupe.hlp @@ -0,0 +1 @@ +Cette page vous permet de gérer les différentes listes de contacts \ No newline at end of file diff --git a/beta_accents/app/help/index.php.hlp b/beta_accents/app/help/index.php.hlp new file mode 100644 index 0000000..be1ef30 --- /dev/null +++ b/beta_accents/app/help/index.php.hlp @@ -0,0 +1,7 @@ +Cette page vous permet de visualiser les réunions qui vous concernent.
+Les éléments requièrant votre attention sont en rouge.
+Cliquer sur l'icone à droite pour afficher les détails d'une réunion.
+ +Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran. +
+Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_accents/app/help/listes.php.hlp b/beta_accents/app/help/listes.php.hlp new file mode 100644 index 0000000..c619e70 --- /dev/null +++ b/beta_accents/app/help/listes.php.hlp @@ -0,0 +1 @@ +Cette page vous permet de gérer les différentes listes de contacts. diff --git a/beta_accents/app/help/modele_page.php.hlp b/beta_accents/app/help/modele_page.php.hlp new file mode 100644 index 0000000..75a26d5 --- /dev/null +++ b/beta_accents/app/help/modele_page.php.hlp @@ -0,0 +1,17 @@ + Cette page vous permet de visualiser les détails d'une réunion.
+
+ Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.
+
+ Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.
+
+ Ajouter ou Supprimer un créneau
+ en appuyant sur le bouton Ajouter une personne
+
+ Fixer un Créneau, en cliquant dessus et confirmer l'action (aucune modification ne sera possible après)
+
+ Ajouter ou Supprimer un + participant en appuyant sur le bouton Ajouter une personne
+
+ Ajouter +
+ Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. \ No newline at end of file diff --git a/beta_accents/app/help/organiser.php.hlp b/beta_accents/app/help/organiser.php.hlp new file mode 100644 index 0000000..b24adaf --- /dev/null +++ b/beta_accents/app/help/organiser.php.hlp @@ -0,0 +1,2 @@ +Depuis cette page, vous pouvez créer une nouvelle réunion :
+renseignez les champs ci-contre puis validez. Vous pourrez ensuite associer une liste de personnes ainsi que des créneaux possibles. \ No newline at end of file diff --git a/beta_accents/app/help/profil.php.hlp b/beta_accents/app/help/profil.php.hlp new file mode 100644 index 0000000..9328ff5 --- /dev/null +++ b/beta_accents/app/help/profil.php.hlp @@ -0,0 +1,2 @@ +Vous pouvez renseigner votre nom et prénom.
+Vous avez la possibilité de changer votre méthode de d'identification.
diff --git a/beta_accents/app/help/sendmail.php.hlp b/beta_accents/app/help/sendmail.php.hlp new file mode 100644 index 0000000..4a31a5b --- /dev/null +++ b/beta_accents/app/help/sendmail.php.hlp @@ -0,0 +1,2 @@ +Ce formulaire vous permet d'envoyer un courriel de notification aux personnes sélectionnées.
+Vous pouvez charger un des modèles disponibles pour gagner du temps. diff --git a/beta_accents/app/ical.php b/beta_accents/app/ical.php new file mode 100644 index 0000000..f2aeb26 --- /dev/null +++ b/beta_accents/app/ical.php @@ -0,0 +1,36 @@ +\n"; +generate_html_div_errmsg($errmsg); +?> + + + diff --git a/beta_accents/app/images/addP.gif b/beta_accents/app/images/addP.gif new file mode 100644 index 0000000..aa77bef Binary files /dev/null and b/beta_accents/app/images/addP.gif differ diff --git a/beta_accents/app/images/button_del.png b/beta_accents/app/images/button_del.png new file mode 100644 index 0000000..899b785 Binary files /dev/null and b/beta_accents/app/images/button_del.png differ diff --git a/beta_accents/app/images/button_ok.png b/beta_accents/app/images/button_ok.png new file mode 100644 index 0000000..229550e Binary files /dev/null and b/beta_accents/app/images/button_ok.png differ diff --git a/beta_accents/app/images/del.gif b/beta_accents/app/images/del.gif new file mode 100644 index 0000000..cc89b0b Binary files /dev/null and b/beta_accents/app/images/del.gif differ diff --git a/beta_accents/app/images/details.png b/beta_accents/app/images/details.png new file mode 100644 index 0000000..11982cc Binary files /dev/null and b/beta_accents/app/images/details.png differ diff --git a/beta_accents/app/images/editCreneau2.gif b/beta_accents/app/images/editCreneau2.gif new file mode 100644 index 0000000..ba90a82 Binary files /dev/null and b/beta_accents/app/images/editCreneau2.gif differ diff --git a/beta_accents/app/images/logo.png b/beta_accents/app/images/logo.png new file mode 100644 index 0000000..a768d45 Binary files /dev/null and b/beta_accents/app/images/logo.png differ diff --git a/beta_accents/app/images/masque.png b/beta_accents/app/images/masque.png new file mode 100644 index 0000000..45a6027 Binary files /dev/null and b/beta_accents/app/images/masque.png differ diff --git a/beta_accents/app/images/ok.gif b/beta_accents/app/images/ok.gif new file mode 100644 index 0000000..1935a84 Binary files /dev/null and b/beta_accents/app/images/ok.gif differ diff --git a/beta_accents/app/images/question.gif b/beta_accents/app/images/question.gif new file mode 100644 index 0000000..d57516b Binary files /dev/null and b/beta_accents/app/images/question.gif differ diff --git a/beta_accents/app/images/supprimer.png b/beta_accents/app/images/supprimer.png new file mode 100644 index 0000000..a87033a Binary files /dev/null and b/beta_accents/app/images/supprimer.png differ diff --git a/beta_accents/app/images/vcss.gif b/beta_accents/app/images/vcss.gif new file mode 100644 index 0000000..020c75a Binary files /dev/null and b/beta_accents/app/images/vcss.gif differ diff --git a/beta_accents/app/images/vxhtml.gif b/beta_accents/app/images/vxhtml.gif new file mode 100644 index 0000000..739585d Binary files /dev/null and b/beta_accents/app/images/vxhtml.gif differ diff --git a/beta_accents/app/images/wai.gif b/beta_accents/app/images/wai.gif new file mode 100644 index 0000000..b82d6e7 Binary files /dev/null and b/beta_accents/app/images/wai.gif differ diff --git a/beta_accents/app/include/connect.inc.php b/beta_accents/app/include/connect.inc.php new file mode 100644 index 0000000..b985b10 --- /dev/null +++ b/beta_accents/app/include/connect.inc.php @@ -0,0 +1,14 @@ +, , ); +$link = @mysql_connect('localhost', 'lud_restricted', 'maille_ess_ku_elle'); + +@mysql_select_db($bd , $link); + +// NB : La gestion d'erreur est inhibée. Cet include ne génèrera jamais de code, même si la connexion n'a pas pu être établie +?> \ No newline at end of file diff --git a/beta_accents/app/include/ical.inc.php b/beta_accents/app/include/ical.inc.php new file mode 100644 index 0000000..0d858e3 --- /dev/null +++ b/beta_accents/app/include/ical.inc.php @@ -0,0 +1,68 @@ + NOW() '; + if ( ! $result = @mysql_query($query) ) + { + // Cas d'erreur + $errmsg =mysql_generate_errmsg(); + return ERR_ICAL_SQL_ERROR; + } + else + { + if (mysql_num_rows($result)<1) + { + return ERR_ICAL_NO_DATA; + } + else + { + $time = time(); + $iCal_name = "iCal_${idP}_${time}.ics"; + $iCal_content = "BEGIN:VCALENDAR\r\n" . "VERSION:2.0\r\n"; + while ( list($idR, $objetR, $courrielP, $dateDeb, $duree, $lieuR, $ordreJourR, $idL) = mysql_fetch_array($result) ) + { + // TODO : Il est probablement judicieux d'ajouter à l'UID un timestamp unix !!!!! + $iCal_content .= "BEGIN:VEVENT\r\n" . "UID:awor_${idP}.${idR}\r\n" . "SUMMARY:$objetR ($courrielP)\r\n"; + $iCal_content .= 'DTSTART:' . date('Ymd\THis', $dateDeb) . "\r\n"; + $iCal_content .= 'DTEND:' . date('Ymd\THis', $dateDeb+60*$duree) . "\r\n"; + $iCal_content .= "LOCATION:$lieuR\r\n"; + $iCal_content .= "DESCRIPTION:$ordreJourR\r\n"; + + $query = 'SELECT P.courrielP FROM AWOR_Appartenir A,AWOR_Personne P' . " WHERE A.idP=P.idP AND A.idL='$idL'"; + if ( ! $result = mysql_query($query) ) + { + // Cas d'erreur + $errmsg =mysql_generate_errmsg(); + $ret=ERR_ICAL_SQL_ERROR; + break; + } + else + { + while ( list($mail_autres) = mysql_fetch_array($result) ) + { + $iCal_content .= "ATTENDEE:mailto:$mail_autres\r\n"; + } + } + // TODO : vérifier la pertinance de la variable utilisée + $iCal_content .= 'URL:http://' . $_SERVER['HTTP_HOST'] . "\r\n"; + $iCal_content .= "END:VEVENT\r\n"; + } + $iCal_content .= "END:VCALENDAR\r\n"; + return 0; + } + } +} +?> \ No newline at end of file diff --git a/beta_accents/app/include/je.inc.php b/beta_accents/app/include/je.inc.php new file mode 100644 index 0000000..dcbb75e --- /dev/null +++ b/beta_accents/app/include/je.inc.php @@ -0,0 +1,244 @@ + 0) + { + return (mysql_insert_id()); + } + return (false); + } + + function list_modif($idL,$tabParticipant) + { + $result = mysql_query("SELECT P.idP,P.courrielP FROM AWOR_Appartenir A, AWOR_Personne P WHERE P.idP = A.idP AND A.idL=$idL") or die (mysql_error()); + if (mysql_num_rows($result)>=0) + { + //Fabrication des trois tableaux + $tabOldPers = array(); + $tabOldPersMail = array(); + $tabNewPers = array(); + if (!empty($tabParticipant)) $tabNewPers = $tabParticipant; + for($i=0;$i0) + { + $row = mysql_fetch_array($result); + return ($row['idP']); + } + else + { + $result = mysql_query("INSERT INTO AWOR_Personne (courrielP,loginP,nomP) VALUES ('$persMail','$persMail','$persMail')"); + return (mysql_insert_id()); + } + + return (false); + } + + + + //Fonction qui affiche toutes les liste public ainsi que les liste privée possédées par idP + function generate_html_array_list ($idP) + { + $result = mysql_query("SELECT idL,libelleL,estPrivee,idP_Createur FROM AWOR_Liste WHERE idP_Createur=$idP OR estPrivee='non' ORDER BY estPrivee,libelleL"); + echo "\n\n\n\n\n\n"; + if (mysql_num_rows($result)>0) + { + + for($i=0;$i\n\n" ; else echo "\n"; + if ($row['estPrivee'] == 'oui') echo "\n\n"; + echo "\n"; + } + + } + echo "
SupprimerTypeLibellé
"; + if ($row['estPrivee'] == 'oui' || $row['idP_Createur']==$idP) echo "\"SupprimerestPrivée" ; else echo "Public"; + echo ""; + echo ""; + echo $row['libelleL']; + echo "
\n"; + + } + + function traiter_formulaire_commentaire() + { + if ($_GET['txtCommentaire'] != "") + { + require_once ('include/connect.inc.php'); + if (isset($_GET['idR'])) + { + $query="UPDATE AWOR_Repondre SET commentaireReponse ='".$_GET['txtCommentaire']."' WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; + $result = @mysql_query($query); + if ( ! $result || ( mysql_affected_rows() !== 1 ) ) + { + $query="INSERT INTO AWOR_Repondre(idR,idP,commentaireReponse) VALUES (".$_GET['idR'].", ".$_SESSION['session_idP'].", '".$_GET['txtCommentaire']."')"; + + $result = mysql_query($query); + if ( ! $result || ( mysql_affected_rows() !== 1 )) + { + echo $query; + echo "Erreur BD\n"; + return; + } + } + } + } + else + { + $query="DELETE FROM AWOR_Repondre WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; + $result = mysql_query($query); + } + } + + // Modifiée par Ludo pour les problèmes de vriables de session et pour d'autres détails : + // S'il n'y a pas de commentaire, on affiche le tableau vide + function generate_html_reunion_commentaires($idR) + { + $idP = $_SESSION['session_idP']; + echo ''; + echo ''; + echo ''; + echo ""; + echo ''; + echo ''; + $requete = "SELECT P.nomP,P.prenomP,P.courrielP,R.commentaireReponse FROM AWOR_Repondre R,AWOR_Personne P WHERE P.idP = R.idP AND R.idR = '".$idR."'"; + //echo "DEBUG : requete : $requete\n"; + $resultat = mysql_query($requete); + if($resultat != false) + { + if(mysql_num_rows($resultat) > 0) + { + while($pers = mysql_fetch_array($resultat)) + { + echo '\n"; + + } + } + else + { + echo "\n"; + } + } + + echo '
Commentaires (Editer votre commentaire)
'; + if ($pers["nomP"] !== "" || $pers["prenomP"] !== "") echo $pers["nomP"] . " " . $pers["prenomP"]; else echo $row["courrielP"]; + echo " : ".$pers["commentaireReponse"]."
Aucun commentaire pour le moment.
'; + + } + + +?> \ No newline at end of file diff --git a/beta_accents/app/include/ju.inc.php b/beta_accents/app/include/ju.inc.php new file mode 100644 index 0000000..75fb4ee --- /dev/null +++ b/beta_accents/app/include/ju.inc.php @@ -0,0 +1,237 @@ +\n"; + if(isset($debug)) echo "DEBUG : ".$requete."
\n"; + return "Erreur : Une erreur MySQL est survenu."; + } + } + else + { + return "Erreur Uploader file"; + } + } + else + { + return "Erreur : Un fichier de meme nom existe deja"; + } + } + else + { + return "Erreur : Le fichier n'a pas ete uploader correctement."; + } + } + else + { + switch($_FILES[$file]["error"]) + { + case 1 : + case 2 : return "Erreur : Le fichier a une taille trop importante."; break; + case 3 : return "Erreur : Le fichier n'a pas ete envoye en entier."; break; + case 4 : return "Erreur : Aucun fichier recu."; break; + } + echo $erreur; + } + } + else + { + return "isset"; + } +} + + +function generate_html_reunion_fichiers($idR) +{ + require("include/ludo/config.inc.php"); + if ( isset($CONFIG['UPLOAD']['relative_path']) ) { $basepath='/'.$CONFIG['UPLOAD']['relative_path']; } else { $basepath='/fichiers/';} + + $requete = "SELECT * FROM AWOR_Fichier WHERE idR = '".$idR."'"; + $resultat = mysql_query($requete); + if($resultat != false) + { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''."\n"; + echo ''; + if(mysql_num_rows($resultat) > 0) + { + while($fichier = mysql_fetch_array($resultat)) + { + echo '\n"; + } + } + else + { + echo "\n"; + } + echo '
Fichiers attachés (Ajouter un fichier)
'.$fichier["nomFic"]."
Aucun fichier pour cette reunion.
'; + } +} + +function traiter_formulaire_valider_creneau() +{ + $tabCreneau = array(); + if(isset($_REQUEST["dataCreneaux"])) + { + //Pour chaque creneau poste, on verifie s'il existe, si non on le creer + foreach($_REQUEST['dataCreneaux'] as $creneau) + { + $tabCreneau = explode(".", $creneau); + $heureD = substr($tabCreneau[0], 0, 2); + $minD = substr($tabCreneau[0], 2, 2); + $heureA = substr($tabCreneau[1], 0, 2); + $minA = substr($tabCreneau[1], 2, 2); + $jourA = $tabCreneau[2]; + $moisA = $tabCreneau[3]; + $anneeA = $tabCreneau[4]; + //Si un creneau n'existe pas on le creer + $idCreneau = creneauExiste($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA); + if($idCreneau == false) + { + $newIdC = ajouterCreneau($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA); + if($newIdC != false) + { + $tabNewCreneau[] = $newIdC; + } + + } + else + { + $tabNewCreneau[] = $idCreneau; + } + } + // tabCreneau contient les tous les creneaux dont on a besoin pour la reunion, il faut maintenant supprimer de la base + // tous les creneaux de la reunion qui n'apparaissent pas dans cette liste + $listeCreneau = "("; + foreach($tabNewCreneau as $creneau) + { + $listeCreneau .= "'".$creneau."', "; + } + $listeCreneau .= "'XXX')"; + if(isset($debug)) echo $listeCreneau; + + //On recupere les creneaux ne faisant plus partie de la novuelle liste des creneaux + $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau; + //echo "DEBUG : $requete"; + if($resultat = mysql_query($requete)) + { + while($ligne = mysql_fetch_array($resultat)) + { + supprimerCreneau($ligne["idC"]); + } + } + } +} + +function traiter_formulaire_maj_profil() +{ + $requete = "UPDATE AWOR_Personne SET courrielP = '".$_POST["courrielP"]."', loginP = '".$_POST["loginP"]."', nomP = '".$_POST["nomP"]."', prenomP = '".$_POST["prenomP"]."', methodeAuth = '".$_POST["methodeAuth"]."' WHERE idP = '".$_SESSION['session_idP']."'"; + if(mysql_query($requete) == false) return "Une erreur MySQL est survenu : ".mysql_error(); + $_SESSION['session_prenomP'] = $_POST["prenomP"]; + $_SESSION['session_nomP'] = $_POST["nomP"]; + //print_r($_POST); +} + +function ajouterCreneau($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA) +{ + $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA); + $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA); + $duree = $dateA - $dateD; + $dateD = date("Y-m-d G:i:s", $dateD); + $duree = $duree / 60; + $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateD."', '".$duree."', '".$idR."')"; + if(isset($debug)) echo $requete."
"; + if(mysql_query($requete)) { return mysql_insert_id(); } else { return false; } +} + +function ajouterCreneau2($idR, $dateHeure, $duree) +{ + $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateHeure."', '".$duree."', '".$idR."')"; + if(mysql_query($requete)) + { + return mysql_insert_id(); + } + else + { + return false; + } +} + +function supprimerCreneau($idC) +{ + if(mysql_query("DELETE FROM AWOR_Creneau WHERE idC='".$idC."'")) + { + if(mysql_query("DELETE FROM AWOR_Choisir WHERE idC='".$idC."'")) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +} + +function creneauExiste($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA) +{ + $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA); + $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA); + $duree = $dateA - $dateD; + $dateD = date("Y-m-d G:i:s", $dateD); + $duree = $duree / 60; + $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$idR."' AND dateHeure='".$dateD."' AND duree=".$duree.""; + if($result = mysql_query($requete)) + { + if(mysql_num_rows($result) > 0) + { + $ligne = mysql_fetch_array($result); + return $ligne["idC"]; + } + else + { + return false; + } + } +} + +function addslashes_if_needed($texte) +{ + if(get_magic_quotes_gpc() == 0) + { + return addslashes($texte); + } + else + { + return $texte; + } +} +?> \ No newline at end of file diff --git a/beta_accents/app/include/ludo/TODO_list.txt b/beta_accents/app/include/ludo/TODO_list.txt new file mode 100644 index 0000000..724c46c --- /dev/null +++ b/beta_accents/app/include/ludo/TODO_list.txt @@ -0,0 +1,24 @@ +Accueil > _Listes_ (virer le lien) + +mysql_free_result après les requetes et mysql_close ? + +configuration de PHP dans un fichier INI : +array parse_ini_file ( string filename [, bool process_sections] ) + + +Vérifier que les redirections vers authentification et le retour fasse bien suivre les paramètres +--> bookmarque details_reunion?idR=1 + + +faire une fonction JS qui appelle une page php ou créer toute seule un cookie qui gère la préférence du css. + +Se préoccuper des accents et des encodages de pages ! + +Faire un pied de page avec nos noms, et les logos valide XHTML, CSS... + +TODO : un script php qui purge la base +-> export SQL ancienne base ? +-> suppression des réunions plus vielles que... +-> suppression des Personnes n'ayant jamais changé leur profil et n'ayant plus de réunion les concernant +-> suppression de tout les créneaux non référencés +-> suppression de toutes les listes privées obsoletes diff --git a/beta_accents/app/include/ludo/auth.inc.php b/beta_accents/app/include/ludo/auth.inc.php new file mode 100644 index 0000000..18b339d --- /dev/null +++ b/beta_accents/app/include/ludo/auth.inc.php @@ -0,0 +1,78 @@ + \ No newline at end of file diff --git a/beta_accents/app/include/ludo/config.inc.php b/beta_accents/app/include/ludo/config.inc.php new file mode 100644 index 0000000..6d6504b --- /dev/null +++ b/beta_accents/app/include/ludo/config.inc.php @@ -0,0 +1,74 @@ + 'jmi@iut-blagnac.fr', + 'automatedMail' => 'no_reply@iut-blagnac.fr', + 'AUTH' => array + ( + 'POP' => array + ( + 'SERVERS' => array + ( + 'wanadoo.fr' => array + ( + 'subdomain' => 'pop.orange.fr', + 'port' => 110, + 'username_is_full_mail' => false + ), + 'orange.fr' => array + ( + 'subdomain' => 'pop.orange.fr', + 'port' => 110, + 'username_is_full_mail' => false + ) + ) + ), + 'bypass_if_local' => false + ), + 'CSS' => array + ( + 'CHOOSER_LIST' => array + ( + // 'nom à afficher' => 'nom_fichier_sans_extension' + 'standard' => 'ice', + 'Glace (ancien)' => 'ice_moche', + 'bleu' => 'style1' + ) + ), + 'MAIL' => array + ( + 'TEMPLATES' => array + ( + 'cree' => array + ( + 'caption' => 'Nouvelle Réunion', + 'tpl_file' => 'mail_cree.php' + ), + 'modif' => array + ( + 'caption' => 'Réunion modifiée', + 'tpl_file' => 'mail_modif.php' + ), + 'annul' => array + ( + 'caption' => 'Réunion annulée', + 'tpl_file' => 'mail_annul.php' + ), + 'fixee' => array + ( + 'caption' => 'Réunion fixée', + 'tpl_file' => 'mail_fixee.php' + ) + ) + ), + 'SUPERUSERS' => array ('jeremie.denoyer', 'lpouzenc'), + 'UPLOAD' => array + ( + 'accepted_files' => array + ( + 'jpg', 'jpeg', 'gif', 'png', 'svg', 'pdf', 'ps', 'txt', 'rtf', 'csv', 'doc', 'docx', 'ppt', 'xls', 'sxw','sxp','sxd', 'odt', 'odg', 'odp', 'avi', 'mpg', 'mpeg', 'rm', 'flv', 'mp3', 'mp4', 'ogg','htm','html','zip', 'rar', 'tar', 'gz', 'bz2', 'ace' + ), + 'relative_path' => 'beta/upload_files/' + ) +); +?> diff --git a/beta_accents/app/include/ludo/div_create_or_modif.php b/beta_accents/app/include/ludo/div_create_or_modif.php new file mode 100644 index 0000000..c386060 --- /dev/null +++ b/beta_accents/app/include/ludo/div_create_or_modif.php @@ -0,0 +1,72 @@ + +
+ +' +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
Objet : + > +
Lieu : + > +
Ordre du jour : + +
Remarques : + +
Etat : + Annulée + Disponibilités masquées +
+ +
+
\ No newline at end of file diff --git a/beta_accents/app/include/ludo/fonctions.inc.php b/beta_accents/app/include/ludo/fonctions.inc.php new file mode 100644 index 0000000..74b7ca7 --- /dev/null +++ b/beta_accents/app/include/ludo/fonctions.inc.php @@ -0,0 +1,550 @@ +\n "; } + // Cas général, on n'est pas la personne concernée + if ( ! isset($estDispo) || $estDispo == '' ) + { // Dispo Inconnue (icone ?) + generate_html_dispo_inconnu($idP, $idC); + } + else + { + if ( $estDispo == 'oui' ) + { // Disponible + generate_html_dispo_oui($idP, $idC); + }else + { // Non Disponible + generate_html_dispo_non($idP, $idC); + } + } + } + else + { + if ( $withTD ) { echo " \n "; } + // On est la personne concernée, on peut donc choisir le créneau + if ( ! isset($estDispo) || $estDispo == '' ) + { // Dispo Inconnue + generate_html_dispo_dire_oui($idR, $idC); + //~ echo '   '; + generate_html_dispo_dire_non($idR, $idC); + } + else + { + if ( $estDispo == 'oui' ) + { // Disponible + generate_html_dispo_oui($idP, $idC); + //~ echo '   '."\n "; + generate_html_dispo_dire_non($idR, $idC); + }else + { + // Non Disponible + generate_html_dispo_dire_oui($idR, $idC); + //~ echo '   '."\n "; + generate_html_dispo_non($idP, $idC); + } + } + } + if ( $withTD ) { echo " \n"; } +} + +// Génération du tableau complet +// TODO : idée : class du tableau différnete quand annulée -> tableau grisé... + +function generate_html_array_personnes_crenaux($idR) +{ + if ( isset($_SESSION['session_idP']) ) + { + $idP_Self=$_SESSION['session_idP']; + } + else + { + // TODO : Erreur + } + + // Connexion à la base et sélection de la database + require_once 'include/connect.inc.php'; + + // Récupération des paramètres de la réunion... + $montrerDispoR=$estAnnulee=$is_admin=$estFixee=false; + $idP_orga=null; + $query="SELECT r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, r.idL FROM AWOR_Reunion r WHERE r.idR='$idR'"; + $result = @mysql_query($query); + if ( $result && ( mysql_num_rows($result) === 1 ) ) + { + list($montrerDispoR, $estAnnulee, $idP_orga, $idC_Fixe, $idL_interne) = mysql_fetch_row($result); + $is_admin = ( $idP_Self == $idP_orga ); + $montrerDispoR = ( ( $montrerDispoR === 'oui' ) || $is_admin ) ; + //echo "DEBUG : annulée $estAnnulee\n"; + $estAnnulee = ( $estAnnulee == 'oui' ); + $estFixee = ( $idC_Fixe != null); + } + else + { + // TODO : erreur + } + // DEBUG : tests en forçant les variables + //$estAnnulee=true; + + //~ echo "DEBUG : \nmontrerDispoR==$montrerDispoR\nestAnnulee==$estAnnulee\nestFixee==$estFixee\nis_admin==$is_admin\n"; +?> +
+ + + +Mail' . "\n"; + } + echo ' ' . "\n"; + + // Remplissage des entêtes de colonnes (créneaux) + $query="SELECT idC, UNIX_TIMESTAMP(dateHeure), duree FROM AWOR_Creneau WHERE idR='$idR' ORDER BY dateHeure ASC;"; + $creneaux=array(); + $dispos=array(); + if ( $result = @mysql_query($query) ) + { + while ( list($idC, $date_deb, $duree) = mysql_fetch_row($result) ) + { + // Calcul des dates + //echo $date_deb . "\n"; + $date_fin = $date_deb + 60 * $duree; + if ( $idC != $idC_Fixe ) { echo ' \n"; + + // Comptage des personnes disponibles et indisponibles + $creneaux[] = $idC; + $dispos[$idC]['nbDispo']=0; + $dispos[$idC]['nbNonDispo']=0; + $dispo_max_id=-1; + $dispo_max_val=0; + } + } + if ( $is_admin && ! $estFixee && ! $estAnnulee ) + { +?> + + + + + + $dispo_max_val ) + { + $dispo_max_id=$idC; + $dispo_max_val=$dispos[$idC]['nbDispo']; + } + } + } + } + //print_r($dispos); + + + $query='SELECT p.idP, p.prenomP, p.nomP FROM AWOR_Personne p, AWOR_Appartenir a, AWOR_Reunion r WHERE ' + . "r.idR='$idR' AND a.idL=r.idL AND p.idP=a.idP ORDER BY p.nomP, p.prenomP;"; + + if ( $result = @mysql_query($query) ) + { + // On écrit ligne à ligne les personnes et les disponibilités + while ( $p = mysql_fetch_array($result) ) // Boucle sur chaque personne + { + echo " \n"; + // Colonne de checkbox pour envoi email si $is_admin == true + if ( $is_admin ) { echo ' ' . "\n"; } + // Nom prénom + echo " \n"; + // Disponibilités + foreach ( $creneaux as $c_id ) // Pour chaque créneau + { + if (isset($dispos[$c_id][$p[0]])) + { + $estDispo=$dispos[$c_id][$p[0]]; + } + else + { + $estDispo=''; + } + //echo "DEBUG : generate_html_dispo_case($p[0], $c_id, ( $p[0]==$idP_Self ), $estDispo);\n"; + if ( $c_id != $idC_Fixe ) { $class=''; } else { $class='class="selected"'; } + + generate_html_dispo_case($idR, $p[0], $c_id, ( ! $estFixee && ! $estAnnulee && ( $p[0]==$idP_Self ) ),$estDispo, true, $class); + } + // Colonne vide pour l'ajout de personnes + if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " \n"; } + echo " \n"; + } + // Si $is_admin, on met une ligne avec bouton envoyer pour les mails et icône ajout de personnes + if ( $is_admin ) + { + echo " \n + + \n"; } + if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " \n"; } + echo " \n"; + } + + // On inscrit les lignes de totaux si les disponibilités sont révélées + if ( $is_admin && ! $estFixee && ! $estAnnulee) + { + echo " \n"; + echo " \n"; + echo " \n"; + foreach ( $creneaux as $c_id ) + { + if ( $c_id == $dispo_max_id ) + { + echo ' \n"; + } + else + { + echo ' \n"; + } + } + echo " \n"; + echo " \n"; + + echo " \n"; + echo " \n"; + echo " \n"; + foreach ( $creneaux as $c_id ) + { + echo ' \n"; + } + echo " \n"; + echo " \n"; + } + } + echo " \n"; + echo "
' ."\n"; + if ( $is_admin ) + { + echo ' ' . "\n"; + echo ' Ajouter une personne' . "\n"; + echo '  '; + } + echo 'Personnes' . "\n"; + echo ' '; } else { echo ' '; } + if ( $is_admin && ! $estFixee && ! $estAnnulee ) + { + echo ''; + } + echo date('d/m/y', $date_deb) . '
' . date('H:i', $date_deb) . ' - ' . date('H:i', $date_fin); + if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo '
'; } + echo "
+ + Editer les creneaux + +
$p[1] $p[2] 
\n"; + echo ' ' . "\n"; +?> + + + ' . "\n"; + ?> + Ajouter une personne + +  
 Personnes présentes' . $dispos[$c_id]['nbDispo'] . "' . $dispos[$c_id]['nbDispo'] . " 
 Personnes absentes' . $dispos[$c_id]['nbNonDispo'] . " 
\n
\n"; +} + +function traiter_formulaire_fixer_creneau() +{ + if ( ! isset($_GET['idR']) || !isset($_GET['idC']) ) + { + $errmsg="Impossible de fixer la réunion : paramètres manquants ou erroné"; + return $errmsg; + } + $idR=addslashes($_GET['idR']); + $idC=addslashes($_GET['idC']); + + $query="UPDATE AWOR_Reunion SET idC_Fixe=$idC WHERE idR=$idR;"; + if ( ! mysql_query($query) || mysql_affected_rows() != 1 ) + { + $errmsg='Impossible de fixer la réunion : ' . mysql_generate_errmsg(); + return $errmsg; + } + return; +} + +function traiter_formulaire_creer_reunion() +{ + include_once('include/je.inc.php'); + $idP=$_SESSION['session_idP']; + + // Recherche d'une réunion vierge déjà existante + $query='SELECT idR FROM AWOR_Reunion WHERE idP_Orga=' . "('$idP') AND objetR='Renseignez';"; + if ( ( $result = mysql_query($query) ) && (mysql_num_rows($result) > 0) ) + { + list($idR)=mysql_fetch_array($result); + } + else + { + // Création de la Réunion sauf si une réunion vierge existe déjà + $query='INSERT INTO AWOR_Reunion(idP_Orga, objetR) VALUES' . "('$idP', 'Renseignez');"; + if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) + { + // Cas d'erreur + $errmsg ='Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); + return $errmsg; + } + $idR=mysql_insert_id(); + + // Création de la Liste des participants + if ( ! $idL=list_new("interne_idR_$idR","NULL",true) ) + { + $errmsg ='Erreur lors de la création de la liste de participants : Erreur de base de données'; + return $errmsg; + } + + $query="UPDATE AWOR_Reunion SET idL='$idL' WHERE idR='$idR'"; + if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) + { + // Cas d'erreur + $errmsg = 'Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); + return $errmsg; + } + } + + return (int) $idR; +} + +function traiter_formulaire_modif_detail_reunion() +{ + if ( ! isset($_REQUEST['idR']) || !isset($_POST['objetR']) || !isset($_POST['lieuR']) || !isset($_POST['ordreJourR']) || !isset($_POST['remarquesR']) ) + { + $errmsg = 'Impossible de modifier de détail de la réunion : Paramètres manquants'; + // DEBUG : + //echo "DEBUG : $query\n$errmsg\n"; + return $errmsg; + } + + $idR=addslashes($_REQUEST['idR']); + $objetR=addslashes($_POST['objetR']); + $lieuR=addslashes($_POST['lieuR']); + $ordreJourR=addslashes($_POST['ordreJourR']); + $remarquesR=addslashes($_POST['remarquesR']); + $estAnnulee=( isset($_POST['isCancelled']) && ($_POST['isCancelled']==='on') )?'oui':'non'; + $montrerDispoR=( isset($_POST['isHidden']) && ($_POST['isHidden']==='on') )?'non':'oui'; + + $query="UPDATE AWOR_Reunion SET objetR='$objetR', lieuR='$lieuR', ordreJourR='$ordreJourR', " + ." remarquesR='$remarquesR', estAnnulee='$estAnnulee', montrerDispoR='$montrerDispoR' WHERE idR='$idR'"; + if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) + { + // Cas d'erreur + $errmsg = 'Erreur lors de la modification de la réunion : ' . mysql_generate_errmsg(); + // DEBUG : + //echo "DEBUG : $query\n$errmsg\n"; + return $errmsg; + } + // DEBUG : + //echo "DEBUG : $query\n$errmsg\n"; + return; +} + +function generate_html_reunion_detail2($idR) +{ + $query='SELECT r.objetR, r.ordreJourR, r.lieuR, r.remarquesR, r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, p.nomP, p.prenomP' + . " FROM AWOR_Reunion r, AWOR_Personne p WHERE r.idR='$idR' AND p.idP=r.idP_Orga"; + $result = @mysql_query($query); + if ( ! $result || ( mysql_num_rows($result) !== 1 ) ) + { + $errmsg="Impossible de récuprérer les informations de la réunion : Erreur de base de données\n"; + return $errmsg; + } + + list($objetR, $ordreJourR, $lieuR, $remarquesR, $montrerDispoR, $estAnnulee, $idP_Orga, $idC_Fixe, $nomP, $prenomP) = mysql_fetch_row($result); + if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; } + +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +' ."\n"; + switch($etat) + { + case 'reunion_fixee': + echo "Fixée\n"; + break; + case 'reunion_en_cours': + echo "En préparation\n"; + break; + case 'reunion_annulee': + echo "Annulée\n"; + break; + } + if ( $montrerDispoR === 'non' ) { echo ', disponibilités masquées'; } +?> + + + +
+ Détails de la réunion +(Editer)\n"; + } + +?> +
Objet : + +
Organisateur : + +
Lieu : + +
Ordre du jour : + +
Remarques : + +
Etat :
+' . "\n" . '' . "\n\n\n"; + echo '\n\n\n"; + echo "\n\n"; + echo "\n\n\n"; + echo ''; + for ( $i=0; $i < count($row); $i++ ) { echo ""; } + echo "\n\n\n"; + + $num=0; + do + { if ( isset($row[$key_name]) ) { $num=$row[$key_name]; } else { $num=''; } + echo "\n\n\n\n\n"; + } while ( $row = mysql_fetch_assoc($result) ); + echo "\n
$table
" . implode("",array_keys($row)) . "
" . implode("",$row) . "
\n\n"; + } +} + +?> diff --git a/beta_accents/app/include/ludo/html_elements.inc.php b/beta_accents/app/include/ludo/html_elements.inc.php new file mode 100644 index 0000000..b845f28 --- /dev/null +++ b/beta_accents/app/include/ludo/html_elements.inc.php @@ -0,0 +1,185 @@ +'."\n" +?> + + + + AWOR - $title\n"; ?> + + + + +' . "\n"; + echo ' ' . "\n"; + + if ( isset($CONFIG['CSS']['CHOOSER_LIST']) ) + { + foreach ( $CONFIG['CSS']['CHOOSER_LIST'] as $cssname => $cssfile ) + { + if ( $cssfile != $cssfilemain ) + { + echo ' ' . "\n"; + echo ' ' . "\n"; + } + } + } +?> + + + +

AWOR

+ +' . "\n

?

\n" . "\n"; + echo '
' . "\n"; + readfile($help_file); + echo "
\n"; + } +} + +function generate_html_div_errmsg($errmsg) +{ + echo '
' . "\n" . '' . $errmsg . "\n"; + require_once('config.inc.php'); + if ( isset( $CONFIG['adminMail'] ) && ( ! isset($_REQUEST['debug'] ) ) ) + { + echo 'Si le problème persiste, vous pouvez contacter l\'administrateur par email à l\'adresse suivante : '; + echo '' . $CONFIG['adminMail'] . "\n"; + } + echo "
\n"; +} + +function generate_html_div_css_chooser() +{ + @include 'include/ludo/config.inc.php'; + @include 'config.inc.php'; + + if ( ! is_array($CONFIG['CSS']['CHOOSER_LIST']) ) { return false; } + + if ( isset($_COOKIE['aworcustom_css'] ) ) { $css_selected=$_COOKIE['aworcustom_css']; }else{$css_selected='';}; + echo '
' . "\n"; + //print_r($_COOKIE); + echo ' '. "\n"; + echo '
'. "\n"; +} + +function generate_html_div_footer() +{ +?> + +Deconnexion'."\n"; +} +function generate_html_div_back() +{ + echo ''."\n"; +} + +function generate_html_dispo_inconnu($idP, $idC) +{ + echo 'Inconnu' . "\n"; +} + +function generate_html_dispo_oui($idP, $idC) +{ + echo 'Disponible' . "\n"; +} + +function generate_html_dispo_non($idP, $idC) +{ + echo 'Non disponible' . "\n"; +} + +function generate_html_dispo_dire_oui($idR, $idC) +{ + //~ echo 'Dire que je suis disponible' . "\n"; + echo ""; + echo 'Dire que je suis disponible' . "\n"; +} + +function generate_html_dispo_dire_non($idR, $idC) +{ + echo ""; + echo 'Dire que je suis pas disponible' . "\n"; +} + +function generate_html_reunion_detail_button($idR) +{ + echo 'Détails'; +} diff --git a/beta_accents/app/include/ludo/mail_textarea.php b/beta_accents/app/include/ludo/mail_textarea.php new file mode 100644 index 0000000..87f4965 --- /dev/null +++ b/beta_accents/app/include/ludo/mail_textarea.php @@ -0,0 +1,44 @@ + + + + diff --git a/beta_accents/app/include/ludo/majDispo.php b/beta_accents/app/include/ludo/majDispo.php new file mode 100644 index 0000000..3f79fec --- /dev/null +++ b/beta_accents/app/include/ludo/majDispo.php @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/beta_accents/app/include/ludo/redir.inc.php b/beta_accents/app/include/ludo/redir.inc.php new file mode 100644 index 0000000..6baf40d --- /dev/null +++ b/beta_accents/app/include/ludo/redir.inc.php @@ -0,0 +1,20 @@ + + +

Redirection

+

Si vous voyez cette page, merci de suivre le lien ci-dessous

+' . $dest . '

' . "\n"; +?> + + + \ No newline at end of file diff --git a/beta_accents/app/include/ludo/session_verify.inc.php b/beta_accents/app/include/ludo/session_verify.inc.php new file mode 100644 index 0000000..f1cea8b --- /dev/null +++ b/beta_accents/app/include/ludo/session_verify.inc.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/beta_accents/app/index.php b/beta_accents/app/index.php new file mode 100644 index 0000000..572c656 --- /dev/null +++ b/beta_accents/app/index.php @@ -0,0 +1,123 @@ +\n"; +generate_html_divs_menu(); +?> +
+

+ > Accueil + > Réunions + > Liste des réunions +

+
+ +
+DEBUG : SESSION :\n"; + //~ print_r($_SESSION); + //~ echo "\nDEBUG : REQUEST :\n"; + //~ print_r($_REQUEST); + //~ echo ""; +?> +

+ Organiser une réunion +

+ + + + + + + + +\n"; + echo ' \n"; + echo " \n"; + if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; } + + $dateStr=''; + switch($etat) + { + case 'reunion_fixee': + echo ' \n"; + echo " \n"; + break; + case 'reunion_en_cours': + echo " \n"; + echo " \n"; + break; + case 'reunion_annulee': + echo " \n"; + echo " \n"; + break; + } + + + echo ' \n"; + echo " \n"; + } + } + } + + + // Réunions fixées et passées + + $query = 'SELECT DISTINCT R.idR, R.objetR, P.nomP, P.prenomP, UNIX_TIMESTAMP(C.dateHeure), R.estAnnulee' + . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Creneau C,AWOR_Personne P' + . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)" + . ' AND R.idL = L.idL AND P.idP = R.idP_Orga AND R.idC_Fixe = C.idC' + . ' ORDER BY C.dateHeure DESC;'; + fill_array_liste_reunion($query); + + // Réunion en préparation + $query = 'SELECT DISTINCT R.idR, R.objetR, P.nomP, P.prenomP, NULL, R.estAnnulee' + . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Personne P' // Creneau C, + . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)" + . ' AND R.idL = L.idL AND P.idP = R.idP_Orga AND ISNULL(R.idC_Fixe);'; + //echo "DEBUG : $query\n"; + fill_array_liste_reunion($query); + + //$query = + //echo "DEBUG : $query\n"; +?> +
ObjetOrganisateurDateEtatDétails
' . "$objetR$prenomP $nomP' . date('d/m/Y \à H:i', $idC_Fixe) . "FixéeEn préparationAnnulée'; + generate_html_reunion_detail_button($idR); + echo "
+
+ Organiser une réunion +
+ +
+ + + diff --git a/beta_accents/app/listes.php b/beta_accents/app/listes.php new file mode 100644 index 0000000..3ec4d39 --- /dev/null +++ b/beta_accents/app/listes.php @@ -0,0 +1,48 @@ +\n"; + +generate_html_divs_menu(); +?> +
+

+ > Accueil + > Listes +

+
+ + + + + + +
+
+ + + \ No newline at end of file diff --git a/beta_accents/app/organiser.php b/beta_accents/app/organiser.php new file mode 100644 index 0000000..2afcbea --- /dev/null +++ b/beta_accents/app/organiser.php @@ -0,0 +1,24 @@ +\n"; +generate_html_divs_menu(); +?> +
+ > Accueil + > Réunions + > Organiser une réunion +
+\n"; + +include('include/ludo/div_create_or_modif.php'); +?> + + + + + diff --git a/beta_accents/app/popcommentaire.php b/beta_accents/app/popcommentaire.php new file mode 100644 index 0000000..cb6489f --- /dev/null +++ b/beta_accents/app/popcommentaire.php @@ -0,0 +1,23 @@ + +

Editer votre commentaire

+ \ No newline at end of file diff --git a/beta_accents/app/popcreneau.php b/beta_accents/app/popcreneau.php new file mode 100644 index 0000000..f4ba56f --- /dev/null +++ b/beta_accents/app/popcreneau.php @@ -0,0 +1,90 @@ + +

Créneaux de la réunion

+ +'; + echo 'Erreur - pas d\'identifiant de réunion !'; + echo '
'; + echo ''; + echo '
'; + echo ''; +} +?> diff --git a/beta_accents/app/popdeletelist.php b/beta_accents/app/popdeletelist.php new file mode 100644 index 0000000..3449714 --- /dev/null +++ b/beta_accents/app/popdeletelist.php @@ -0,0 +1,20 @@ + +

Désirer vous supprimer cette liste ?

+ + + diff --git a/beta_accents/app/popfixer.php b/beta_accents/app/popfixer.php new file mode 100644 index 0000000..7e1c85a --- /dev/null +++ b/beta_accents/app/popfixer.php @@ -0,0 +1,42 @@ +Désirez-vous fixer ce créneau ?'; + echo ''; + } + else + { + echo ''; + } +?> + diff --git a/beta_accents/app/popnewlist.php b/beta_accents/app/popnewlist.php new file mode 100644 index 0000000..d8d1010 --- /dev/null +++ b/beta_accents/app/popnewlist.php @@ -0,0 +1,3 @@ + + + diff --git a/beta_accents/app/poppersonne.php b/beta_accents/app/poppersonne.php new file mode 100644 index 0000000..e9225ba --- /dev/null +++ b/beta_accents/app/poppersonne.php @@ -0,0 +1,112 @@ + +

+ diff --git a/beta_accents/app/poppersonneliste.php b/beta_accents/app/poppersonneliste.php new file mode 100644 index 0000000..a0d60b5 --- /dev/null +++ b/beta_accents/app/poppersonneliste.php @@ -0,0 +1,27 @@ +'; + + if (mysql_num_rows($result)>0) + { + for($i=0;$i'; + if ($row[2] !== "" & $row[3] !== "") echo $row[2] . " " . $row[3]; else echo $row[1]; + echo ''; + } + } + echo ''; + } + else + { + echo " "; + } + +?> diff --git a/beta_accents/app/profil.php b/beta_accents/app/profil.php new file mode 100644 index 0000000..289b7f1 --- /dev/null +++ b/beta_accents/app/profil.php @@ -0,0 +1,59 @@ +\n"; +generate_html_divs_menu(); +?> +
+

+ > Accueil + > Administration du profil +

+
+\n"; +$idP = $_SESSION['session_idP']; +if ( isset( $_SESSION['session_prenomP'] ) && isset( $_SESSION['session_prenomP'] ) ) +{ + $nom=$_SESSION['session_prenomP'] . ' ' . $_SESSION['session_nomP']; +} +else +{ + $nom = $_SESSION['session_loginP']; +} +$resultat = mysql_query("SELECT * FROM AWOR_Personne WHERE idP = '".$_SESSION['session_idP']."'"); +if($resultat != false) +{ + $p = mysql_fetch_array($resultat); + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
Methode d'authentification : \n
Votre login :
Votre adresse mail :
Votre nom :
Votre prenom :
\n"; + echo "\n"; + echo "
\n"; + echo "\n"; +} +if ( isset ($errmsg) ) generate_html_div_errmsg($errmsg); +?> +
+ + + diff --git a/beta_accents/app/script.js b/beta_accents/app/script.js new file mode 100644 index 0000000..2c14563 --- /dev/null +++ b/beta_accents/app/script.js @@ -0,0 +1,341 @@ +function isNotEmpty (idInput) +{ + if (document.getElementById(idInput).value.length > 0) { return (true);} else {return (false);} +} + +function addPers(form) +{ + if(form.contactDispo) + { + if(form.contactDispo.options.selectedIndex>=0) + { + var oValue = form.contactDispo.options[form.contactDispo.options.selectedIndex].value; + + var exist = false; + var i = 0; + while (i=0) + { + alert ( "On passe au css :" + listCSS.options[listCSS.options.selectedIndex].value); + setActiveStyleSheet(listCSS.options[listCSS.options.selectedIndex].value); + } + } + +} + +function addAllPers(form) +{ + if(form.contactDispo) + { + for (var j=0;j=0)&&(mail.indexOf(".")>=0)) return true; else return false; +} + + +function removePers(form) +{ + if (form.participants.options.selectedIndex>=0) + { + var i = form.participants.options.selectedIndex; + form.participants.options[form.participants.options.selectedIndex]=null; + if (parseInt(i) > 0) {form.participants.options.selectedIndex=parseInt(i)-1;} else {form.participants.options.selectedIndex=0;} + } + else + { + alert("Suppression impossible : aucune ligne sélectionnée"); + } +} + +function loadid(url,id,isPop) { + if (isPop) + document.getElementById('msg').innerHTML = "Chargement en cours ...Fermer"; + else + document.getElementById('msg').innerHTML = "Chargement en cours ..."; + + document.getElementById(id).innerHTML = ""; + document.getElementById('msg').style.display='block'; + + var http_request = false; + + if (window.XMLHttpRequest) { // Mozilla, Safari,... + http_request = new XMLHttpRequest(); + if (http_request.overrideMimeType) { + http_request.overrideMimeType('text/xml'); + } + } else if (window.ActiveXObject) { // IE + try { + http_request = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + http_request = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) {} + } + } + + if (!http_request) { + alert('Abandon : Impossible de créer une instance XMLHTTP'); + return false; + } + + http_request.onreadystatechange = function(){ + + if (http_request.readyState == 4) { + if (http_request.status == 200) { + document.getElementById(id).innerHTML = http_request.responseText; + document.getElementById('msg').style.display='none'; + document.getElementById('msg').innerHTML = ""; + + } else { + if (isPop) + document.getElementById('msg').innerHTML = "Un problème est survenu ...Réessayer - Fermer"; + else + document.getElementById('msg').innerHTML = "Un problème est survenu ...Réessayer"; + } + } + }; + + http_request.open('GET', url, true); + http_request.send(null); +} + +function popon (id) +{ + var thisPopup = document.getElementById(id); + thisPopup.style.display='block'; + //var thisMasque = document.getElementById('masque'); + //thisMasque.style.display='block'; +} + +function popoff (id) +{ + var thisPopup = document.getElementById(id); + thisPopup.style.display='none'; + //var thisMasque = document.getElementById('masque'); + //thisMasque.style.display='none'; +} + +function addcreneau(form) +{ + if(form.day.options.selectedIndex>=0 && form.month.options.selectedIndex>=0 && form.year.options.selectedIndex>=0 && form.hourStart.options.selectedIndex>=0 && form.minuteStart.options.selectedIndex>=0 && form.hourEnd.options.selectedIndex>=0 && form.minuteEnd.options.selectedIndex>=0) + { + if (verifDate(form.day.options[form.day.options.selectedIndex].value,form.month.options[form.month.options.selectedIndex].value,form.year.options[form.year.options.selectedIndex].value)) + { + //Création de la valeur + var oValue = form.hourStart.options[form.hourStart.options.selectedIndex].value + form.minuteStart.options[form.minuteStart.options.selectedIndex].value + "." + form.hourEnd.options[form.hourEnd.options.selectedIndex].value + form.minuteEnd.options[form.minuteEnd.options.selectedIndex].value; + oValue = oValue + "." + form.day.options[form.day.options.selectedIndex].value + "." + form.month.options[form.month.options.selectedIndex].value + "." + form.year.options[form.year.options.selectedIndex].value; + + //Test si la valeur est déja dans la liste + var exist = false; + var i = 0; + while (i " + form.hourEnd.options[form.hourEnd.options.selectedIndex].value + ":" + form.minuteEnd.options[form.minuteEnd.options.selectedIndex].value; + oText = oText + " " + form.day.options[form.day.options.selectedIndex].value + "/" + form.month.options[form.month.options.selectedIndex].value + "/" + form.year.options[form.year.options.selectedIndex].value; + var o = new Option(oText,oValue); + form.creneaux.options[form.creneaux.options.length]=o; + } + } + } +} + +function removecreneau(form) +{ + if (form.creneaux.options.selectedIndex>=0) + { + var i = form.creneaux.options.selectedIndex; + form.creneaux.options[form.creneaux.options.selectedIndex]=null; + if (parseInt(i) > 0) {form.creneaux.options.selectedIndex=parseInt(i)-1;} else {form.creneaux.options.selectedIndex=0;} + } + else + { + alert("Suppression impossible : aucune ligne sélectionnée"); + } +} + +function dataListe(idSelect,idInput) +{ + var liste = document.getElementById(idSelect); + if (liste) + { + for (var i=0;i\n"; +generate_html_divs_menu(); +?> +
+

+ > Accueil + > Réunions + > Envoi de courriel +

+
+ +
+ Erreur lors de l'émission de l'email : Paramètre manquant ou érroné +
+"; + } + $to=implode(', ',$to); + + + if ( ! mail ( $to, $_POST['msgObject'], wordwrap($_POST['msgText'],70), 'From: ' . $CONFIG['automatedMail'] . "\r\n" ) ) + { + $errmsg = "Erreur lors de l'émission de l'email : Erreur inconnue"; + } + } + } + } + + if ( isset($errmsg) ) + { + echo '
' . $errmsg .'
'; + } + else + { + echo '
Le courriel à bien été envoyé
'; + echo 'Retour au détail de la réunion
'; + } + exit(); +} + + +$result = mysql_query("SELECT idL FROM AWOR_Reunion WHERE idR='$idR'"); +if (mysql_num_rows($result)===1) +{ + list($idL) = mysql_fetch_array($result); +} +else +{ + $errmsg=""; +} + + + if ( isset($errmsg) ) + { + echo '
' . $errmsg .'
'; + exit(); + } + +?> + +
+
+ + + + + + + + + + + + + +
Contacts disponibles Destinataires
+ + + +
+
+ +
+ +
+
+ Modèle :  +\n"; +?> + + + + + + +
+
+ Objet :  +
+
+ +
+
+ ' . "\n"; + ?> + + +
+
+
+ +
+ + + diff --git a/beta_accents/app/templates/mail_annul.php b/beta_accents/app/templates/mail_annul.php new file mode 100644 index 0000000..74e0d3d --- /dev/null +++ b/beta_accents/app/templates/mail_annul.php @@ -0,0 +1,12 @@ + +Bonjour, +Une réunion vient d'être annulée sur l'Application Web d'Organisation de Réunion et vous y étiez conviés. + \ No newline at end of file diff --git a/beta_accents/app/templates/mail_cree.php b/beta_accents/app/templates/mail_cree.php new file mode 100644 index 0000000..cd18c89 --- /dev/null +++ b/beta_accents/app/templates/mail_cree.php @@ -0,0 +1,13 @@ + +Bonjour, +Une réunion vient d'être ajoutée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. +Vous pouvez aller consulter le détail de la réunion sur le site, et merci de donner vos disponibilités au plus tôt. + \ No newline at end of file diff --git a/beta_accents/app/templates/mail_fixee.php b/beta_accents/app/templates/mail_fixee.php new file mode 100644 index 0000000..6259f9a --- /dev/null +++ b/beta_accents/app/templates/mail_fixee.php @@ -0,0 +1,14 @@ + +Bonjour, +Une réunion vient d'être fixée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. +Vous pouvez aller consulter le détail de la réunion sur le site, noter le créneau retenu, +et même télécharger le fichier iCal pour synchroniser votre logiciel de calendrier préféré. + \ No newline at end of file diff --git a/beta_accents/app/templates/mail_modif.php b/beta_accents/app/templates/mail_modif.php new file mode 100644 index 0000000..3cbb7b1 --- /dev/null +++ b/beta_accents/app/templates/mail_modif.php @@ -0,0 +1,13 @@ + +Bonjour, +Une réunion vient d'être modifiée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. +Vous pouvez aller consulter le détail de la réunion sur le site, et merci de donner vos disponibilités au plus tôt si ce n'et déjà fait. + \ No newline at end of file diff --git a/beta_accents/app/test.php b/beta_accents/app/test.php new file mode 100644 index 0000000..ea189ae --- /dev/null +++ b/beta_accents/app/test.php @@ -0,0 +1,8 @@ + + + + + diff --git a/beta_accents/app/testGet.php b/beta_accents/app/testGet.php new file mode 100644 index 0000000..03dc369 --- /dev/null +++ b/beta_accents/app/testGet.php @@ -0,0 +1,18 @@ + + + +TestGEt + + + + + + +
+
+ + diff --git a/beta_accents/doc/READ_ME.css b/beta_accents/doc/READ_ME.css new file mode 100644 index 0000000..2dfba7c --- /dev/null +++ b/beta_accents/doc/READ_ME.css @@ -0,0 +1,109 @@ + +/* start css.sty */ +.cmmi-10{font-style: italic;} +.cmr-17{font-size:170%;} +.cmr-12{font-size:120%;} +.cmtt-10{font-family: monospace;} +.cmbx-10{ font-weight: bold;} +p.noindent { text-indent: 0em } +p.nopar { text-indent: 0em; } +p.indent{ text-indent: 1.5em } +@media print {div.crosslinks {visibility:hidden;}} +a img { border-top: 0; border-left: 0; border-right: 0; } +center { margin-top:1em; margin-bottom:1em; } +td center { margin-top:0em; margin-bottom:0em; } +.Canvas { position:relative; } +img.math{vertical-align:middle;} +li p.indent { text-indent: 0em } +.enumerate1 {list-style-type:decimal;} +.enumerate2 {list-style-type:lower-alpha;} +.enumerate3 {list-style-type:lower-roman;} +.enumerate4 {list-style-type:upper-alpha;} +div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +.obeylines-h,.obeylines-v {white-space: nowrap; } +div.obeylines-v p { margin-top:0; margin-bottom:0; } +.overline{ text-decoration:overline; } +.overline img{ border-top: 1px solid black; } +td.displaylines {text-align:center; white-space:nowrap;} +.centerline {text-align:center;} +.rightline {text-align:right;} +div.verbatim {font-family: monospace; white-space: nowrap; } +table.verbatim {width:100%;} +.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +table.minipage{width:100%;} +div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} +div.center div {text-align: left;} +div.flushright, div.flushright div.flushright {text-align: right;} +div.flushright div {text-align: left;} +div.flushleft {text-align: left;} +.underline{ text-decoration:underline; } +.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } +.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +.framebox-c {text-align:center;} +.framebox-l {text-align:left;} +.framebox-r {text-align:right;} +span.thank-mark{ vertical-align: super } +span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 1px; margin:0px; } +.tabbing-right {text-align:right;} +span.TEX {letter-spacing: -0.125em; } +span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} +a span.TEX span.E {text-decoration: none; } +span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} +span.LATEX span.TEX{ position:relative; left: -0.4em; } +div.float img, div.float .caption {text-align:center;} +div.figure img, div.figure .caption {text-align:center;} +.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +table.equation {width:100%;} +.equation td{text-align:center; } +td.equation { margin-top:1em; margin-bottom:1em; } +td.equation-label { width:5%; text-align:center; } +td.eqnarray4 { width:5%; white-space: normal; } +td.eqnarray2 { width:5%; } +table.eqnarray-star, table.eqnarray {width:100%;} +div.eqnarray{text-align:center;} +div.array {text-align:center;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.pmatrix img{vertical-align:middle;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +img.cdots{vertical-align:middle;} +.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.caption td.id{font-weight: bold; white-space: nowrap; } +table.caption {text-align:center;} +h1.partHead{text-align: center} +p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} +.subparagraphHead, .likesubparagraphHead { font-weight: bold;} +.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} +.verse{white-space:nowrap; margin-left:2em} +div.maketitle {text-align:center;} +h2.titleHead{text-align:center;} +div.maketitle{ margin-bottom: 2em; } +div.author, div.date {text-align:center;} +div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } +div.author{white-space: nowrap;} +.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } +.abstract p {margin-left:5%; margin-right:5%;} +table.abstract {width:100%;} +.frenchb-nbsp{font-size:75%;} +.frenchb-thinspace{font-size:75%;} +/* end css.sty */ + diff --git a/beta_accents/doc/READ_ME.dvi b/beta_accents/doc/READ_ME.dvi new file mode 100644 index 0000000..836714e Binary files /dev/null and b/beta_accents/doc/READ_ME.dvi differ diff --git a/beta_accents/doc/READ_ME.html b/beta_accents/doc/READ_ME.html new file mode 100644 index 0000000..fd0333a --- /dev/null +++ b/beta_accents/doc/READ_ME.html @@ -0,0 +1,469 @@ + + +AWOR - Fichier Lisez-moi de l’administrateur + + + + + + + + +
+ + + +

AWOR - Fichier Lisez-moi de l’administrateur

+

+
13 mars 2007
+
+

Table des matières

+ +

+ +

1 Compatibilité

+

Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, +MySQL(>=4) et PHP (>=4). +

PHP + L’application ne nécessite pas de configuration de PHP particulière. Elle +fonctionne quelque soit la valeur du paramètre de configuration register_globals, +utilise les sessions via les fonctions introduites en PHP4. L’application fonctionne +quelque soit la verbosité des affichages d’erreur et de warning PHP, car nous avons +travaillé à éliminer tous les messages ﹤﹤ E_NOTICE ﹥﹥ PHP qui surviennent par +exemple lors d’une comparaison avec une variable non-initialisée. +

Les scripts PHP n’accèdent pas en écriture au système de fichier, sauf pour +l’upload de fichiers. Le dossier ﹤﹤ fichiers ﹥﹥ doit être accessible en écriture +par les scripts PHP sans quoi la fonctionnalité d’échange de fichier serait +inutilisable. +

MySQL + Les scripts PHP ne modifient pas structurellement la base de donnée +MySQL, il suffit donc d’un compte permettant les instructions SELECT, +INSERT, UPDATE, DELETE sur les tables de l’application. Pour indiquer à +l’application quel compte MySQL utiliser, veuillez vous reporter à la section +3.3. +

+

2 Sécurité

+

Cette application a été développée en gardant toujours à l’esprit les problèmes de +sécurités. Nous ne pouvons évidemment pas la garantir failles ni bugs, mais nous +sommes fixé des règles de programmation pour éviter les failles les plus courantes. +Toutes les données issue de l’utilisateur lors des traitements des pages web sont +traitées pour éviter des problèmes d’insertion de code dans les requetes SQL. +L’authentification des utilisateurs est systématique, vérifiée à chaque page et repose +sur le système des sessions PHP. En revanche, il faut noter que le formulaire +d’authentification n’est pas protégé contre l’usurpation de mots de passe car les +contraintes données dans le cahier des charges ne le permettent pas, dû +moins, il n’est pas possible d’utiliser un cryptage efficace (assymétrique) +sans modifier le système d’authentification déléguée et sans utiliser une +configuration de serveur Web spécifique. Considérez, pour résoudre ce problème, +l’emploi sur serveur web sécurisé (HTTPS) et l’utilisation d’une liaison entre +le serveur web et le serveur d’authentification au travers d’un réseau de +confiance. + +

+

3 Installation

+

+

3.1 Dépaquetage des pages PHP

+

L’application est livrée dans une archive de type tarball compressée qui contient +toute l’arborescence et les fichiers PHP nécessaires. Il suffit de décompresser cette +archive en conservant l’arborescence dans un dossier publié par votre serveur Web. +Les fichiers de configurations sont présent et contiennent des valeurs d’exemple que +vous pourrez adapter à votre situation. +

+

3.2 Paramètres de configuration

+

Cette application comporte deux fichiers de configuration qui sont dans le dossier +﹤﹤include ﹥﹥. Les fichiers existent dans la version distribuée et ont pour but de servir +de modèle. +

+

+connect.inc.php :
ce fichier contient les coordonnées du serveur MySQL, de + l’utilisateur SQL et de la base que l’application utilisera. +
+config.inc.php :
ce fichier contient tout le reste de la configuration de + l’application. Le fichier est un script PHP qui initialise un tableau + multi-dimentionnel. Ce choix à été fait par commodité, et pour permette + de bien hiérarchiser les information, en revanche, la syntaxe est fourbe... + N’oubliez pas de virgule ! Toutes les constantes sont décrites ci-dessous. +

+

+ $adminMail :
adresse e-mail de l’administrateur. Affichée à l’utilisateur + lorsque qu’une erreur interne à l’application s’est produite. +
+ $automatedMail :
adresse e-mail de réponse des courriels envoyés + automatiquement par l’application. +
+ AUTH :
Paramètres d’authentification +

+

+ POP :
Paramètres pour les serveurs mail POP +

+ +

+ SERVERS :
Chaque élément de ce tableau à pour clef le nom + de domaine du fournisseur de service de courriel ( partie + suivant le @ dans une adresse e-mail) à pour valeur un + tableau associatif de la forme suivante +

+

+ subdomain :
adresse complete du serveur offrant le service + POP +
+ port :
numéro de port TCP utilisé pour se connecter au + service POP +
+ username_is_full_mail :
Booléen (true ou false) indicant + si le nom d’utilisateur à utiliser pour l’authentification + est l’adresse e-mail complète. C’est utile pour les serveurs + POP gérant des adresses email sur plusieurs domaines + (comme wanadoo / orange au moment où j’écris ce + document)
+
+
+ bypass_if_local :
Booléen indiquant si l’authentification doit + être outrepassée si la connexion s’effectue depuis le serveur + lui-même.
+
+ CSS :
Paramètres des styles de pages +

+

+ CHOOSER_LIST :
Ce tableau associatif contient la liste des + styles CSS à utiliser. Les clefs sont les libellés des thèmes + à afficher et les valeurs sont les noms des fichiers CSS + correspondants, sans chemin, ni extension.
+
+ MAIL :
  +

+

+ TEMPLATES :
Ce tableau contient des tableaux associatifs dont + les clefs seront utilisées dans les passages de paramètres HTML, + et contiennent des sous-tableaux de la forme suivante : +

+

+ caption :
Intitulé qui sera affiché à l’utilisateur + +
+ tpl_file :
Nom du fichier (avec l’extension PHP) contenant le + modèle.
+
+
+ SUPERUSERS :
Ce tableau contient la liste des login des super-utilisateurs + (ceux qui ont le droit de supprimer des réunions) +
+ UPLOAD :
Paramètres concernant l’attachement de fichiers aux + réunions +

+

+ accepted_files :
Tableau des extensions qui sont autorisées.
+
+
+

+

3.3 Initialisation de la base

+

Tout les fichiers nécessaires sont rangés dans le dossier ﹤﹤ install ﹥﹥. Vous utiliserez +principalement le fichier ﹤﹤ RAZBase.php ﹥﹥. Appelé au travers du serveur web, il vous +permettra automatiquement de mettre en place la structure de la base de données, et +optionnellement, d’insérer un jeu d’essai pour tester l’application sur votre serveur. Si +vous ne souhaitez pas utiliser de compte SQL ayant le droit d’altérer la structure +des tables de votre base avec ce script php, vous pouvez exécuter le script +﹤﹤ base.sql ﹥﹥ avec votre client SQL favori. Le jeu d’essai se trouve dans le fichier +﹤﹤ jeu_essai.sql ﹥﹥. +

+

3.4 Configuration par défaut des comptes

+

Dans le fichier de configuration modèle, un super-utilisateur est configuré : +inglebert@iut-blagnac.fr et le jeu d’essai proposé au paragraphe précédent permet de +créer des utilisateurs, et en particulier inglebert@iut-blagnac.fr. +

Par défaut, vous pourrez donc vous connecter en tant qu’administrateur avec ce +compte. Le jeu d’essai met ce compte avec comme mode d’authentification ﹤﹤ bypass ﹥﹥, +ce qui signifie qu’aucun mot de passe est nécessaire. Pour utiliser un vrai système +d’authentification, connectez-vous avec ce compte et allez dans la page ﹤﹤ Mon Profil ﹥﹥ +pour choisir une autre mode d’authentification. +

+

4 Maintenance

+ +

+

4.1 Visualisation des objets et des fichiers

+

Une page d’administration est prévue à cet effet, et elle n’est accessible que par un +﹤﹤ super-utilisateur ﹥﹥, c’est à dire un utilisateur consigné dans le fichier de +configuration principal en tant que tel, confère 3.2. +

+

4.2 Nettoyage de la base

+

À partir de la page d’administration décrite dans le paragraphe précédent, vous +pouvez aussi purger les fichiers attachés et les objets de la base de données devenus +obsolètes. L’aide contextuelle de cette page vous expliquera comment faire. Il est +vivement conseillé de faire une sauvegarde de la base de données et des fichiers joints +aux réunions avant d’utiliser cet outil car l’erreur de manipulation ou de +programmation est toujours possible... +

+

5 Authentification dédiée - Personnalisation

+

AWOR utilise un système d’authentification dédiée de sorte qu’aucun mot de passe +ne soit stocké, et que l’utilisateur n’ait pas besoin d’en retenir un nouveau. +Le code d’authentification à été écrit de manière à être maléable et est +extensible. Le coeur du système d’authentification se trouve dans le fichier +﹤﹤auth_dialog.php ﹥﹥. Vous y trouverez une section commençant par le commentaire +ci-dessous. +

+

+
+ /*************************************************** +

** Ajouter d’autres mode d’authentification ici ! ** +

***************************************************/

+

Comme l’indique ce commentaire, vous pourrez ajouter à cet endroit une portion +de code pour utiliser un autre service d’authentification. La syntaxe est la +suivante : +

+

+
+ case ’<nom_auth>’ : +

/* Eventuellement du code préléminaire */ +

$auth_is_ok=<fonction_ou_variable_authentification>; +

if ( ! $auth_is_ok ) + +

{ // On exécute la ligne ci-dessous que si l’authentificaiton à échouée +

$errmsg=<fonction_ou_chaine_explicant_l_erreur_d_authentification>; +

} +

break;

+

Il vous suffit de remplacer les éléments entre chevrons dans le code ci-dessus et de le +coller dans ﹤﹤auth_dialog.inc.php﹥﹥ pour pouvoir utiliser un nouveau mode +d’authentification. Reste à donner à l’utilisateur la capacité de l’utiliser. Vous +devrez encore, d’une part, ajouter dans la base de données le <nom_auth> à +l’énumération du champ ﹤﹤methodeAuth﹥﹥ de la table ﹤﹤Personne﹥﹥, et d’autre part +proposer à l’utilisateur d’utiliser ce mode d’authentification en modifiant la page +﹤﹤profil.php﹥﹥. + + + + + diff --git a/beta_accents/doc/READ_ME.lyx b/beta_accents/doc/READ_ME.lyx new file mode 100644 index 0000000..9c5e090 --- /dev/null +++ b/beta_accents/doc/READ_ME.lyx @@ -0,0 +1,582 @@ +#LyX 1.4.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 245 +\begin_document +\begin_header +\textclass article +\language french +\inputencoding auto +\fontscheme default +\graphics default +\paperfontsize default +\spacing single +\papersize default +\use_geometry false +\use_amsmath 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language french +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\end_header + +\begin_body + +\begin_layout Title +AWOR - Fichier Lisez-moi de l'administrateur +\end_layout + +\begin_layout Standard +\begin_inset LatexCommand \tableofcontents{} + +\end_inset + + +\end_layout + +\begin_layout Standard + +\newpage + +\end_layout + +\begin_layout Section +Compatibilité +\end_layout + +\begin_layout Standard +Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, + MySQL(>=4) et PHP (>=4). + +\end_layout + +\begin_layout Paragraph +PHP +\end_layout + +\begin_layout Standard +L'application ne nécessite pas de configuration de PHP particulière. + Elle fonctionne quelque soit la valeur du paramètre de configuration register_g +lobals, utilise les sessions via les fonctions introduites en PHP4. + L'application fonctionne quelque soit la verbosité des affichages d'erreur + et de warning PHP, car nous avons travaillé à éliminer tous les messages + +\begin_inset Quotes fld +\end_inset + +E_NOTICE +\begin_inset Quotes frd +\end_inset + + PHP qui surviennent par exemple lors d'une comparaison avec une variable + non-initialisée. +\end_layout + +\begin_layout Standard +Les scripts PHP n'accèdent pas en écriture au système de fichier, sauf pour + l'upload de fichiers. + Le dossier +\begin_inset Quotes fld +\end_inset + +fichiers +\begin_inset Quotes frd +\end_inset + + doit être accessible en écriture par les scripts PHP sans quoi la fonctionnalit +é d'échange de fichier serait inutilisable. +\end_layout + +\begin_layout Paragraph +MySQL +\end_layout + +\begin_layout Standard +Les scripts PHP ne modifient pas structurellement la base de donnée MySQL, + il suffit donc d'un compte permettant les instructions SELECT, INSERT, + UPDATE, DELETE sur les tables de l'application. + Pour indiquer à l'application quel compte MySQL utiliser, veuillez vous + reporter à la section +\begin_inset LatexCommand \ref{sub:Initialisation-de-la-bd} + +\end_inset + +. +\end_layout + +\begin_layout Section +Sécurité +\end_layout + +\begin_layout Standard +Cette application a été développée en gardant toujours à l'esprit les problèmes + de sécurités. + Nous ne pouvons évidemment pas la garantir failles ni bugs, mais nous sommes + fixé des règles de programmation pour éviter les failles les plus courantes. + Toutes les données issue de l'utilisateur lors des traitements des pages + web sont traitées pour éviter des problèmes d'insertion de code dans les + requetes SQL. + L'authentification des utilisateurs est systématique, vérifiée à chaque + page et repose sur le système des sessions PHP. + En revanche, il faut noter que le formulaire d'authentification n'est pas + protégé contre l'usurpation de mots de passe car les contraintes données + dans le cahier des charges ne le permettent pas, dû moins, il n'est pas + possible d'utiliser un cryptage efficace (assymétrique) sans modifier le + système d'authentification déléguée et sans utiliser une configuration + de serveur Web spécifique. + Considérez, pour résoudre ce problème, l'emploi sur serveur web sécurisé + (HTTPS) et l'utilisation d'une liaison entre le serveur web et le serveur + d'authentification au travers d'un réseau de confiance. +\end_layout + +\begin_layout Section +Installation +\end_layout + +\begin_layout Subsection +Dépaquetage des pages PHP +\end_layout + +\begin_layout Standard +L'application est livrée dans une archive de type tarball compressée qui + contient toute l'arborescence et les fichiers PHP nécessaires. + Il suffit de décompresser cette archive en conservant l'arborescence dans + un dossier publié par votre serveur Web. + Les fichiers de configurations sont présent et contiennent des valeurs + d'exemple que vous pourrez adapter à votre situation. +\end_layout + +\begin_layout Standard + +\end_layout + +\begin_layout Subsection +\begin_inset LatexCommand \label{sub:Configuration} + +\end_inset + +Paramètres de configuration +\end_layout + +\begin_layout Standard +Cette application comporte deux fichiers de configuration qui sont dans + le dossier +\begin_inset Quotes fld +\end_inset + +include +\begin_inset Quotes frd +\end_inset + +. + Les fichiers existent dans la version distribuée et ont pour but de servir + de modèle. +\end_layout + +\begin_layout Description +connect.inc.php\InsetSpace ~ +: ce fichier contient les coordonnées du serveur MySQL, de + l'utilisateur SQL et de la base que l'application utilisera. +\end_layout + +\begin_layout Description +config.inc.php\InsetSpace ~ +: ce fichier contient tout le reste de la configuration de l'applica +tion. + Le fichier est un script PHP qui initialise un tableau multi-dimentionnel. + Ce choix à été fait par commodité, et pour permette de bien hiérarchiser + les information, en revanche, la syntaxe est fourbe\SpecialChar \ldots{} + N'oubliez pas de virgule + ! Toutes les constantes sont décrites ci-dessous. +\end_layout + +\begin_deeper +\begin_layout Description +$adminMail\InsetSpace ~ +: adresse e-mail de l'administrateur. + Affichée à l'utilisateur lorsque qu'une erreur interne à l'application + s'est produite. +\end_layout + +\begin_layout Description +$automatedMail\InsetSpace ~ +: adresse e-mail de réponse des courriels envoyés automatiquement + par l'application. +\end_layout + +\begin_layout Description +AUTH\InsetSpace ~ +: Paramètres d'authentification +\end_layout + +\begin_deeper +\begin_layout Description +POP\InsetSpace ~ +: Paramètres pour les serveurs mail POP +\end_layout + +\begin_deeper +\begin_layout Description +SERVERS\InsetSpace ~ +: Chaque élément de ce tableau à pour clef le nom de domaine du fournisse +ur de service de courriel ( partie suivant le @ dans une adresse e-mail) + à pour valeur un tableau associatif de la forme suivante +\end_layout + +\begin_deeper +\begin_layout Description +subdomain\InsetSpace ~ +: adresse complete du serveur offrant le service POP +\end_layout + +\begin_layout Description +port\InsetSpace ~ +: numéro de port TCP utilisé pour se connecter au service POP +\end_layout + +\begin_layout Description +username_is_full_mail\InsetSpace ~ +: Booléen (true ou false) indicant si le nom d'utilisateur + à utiliser pour l'authentification est l'adresse e-mail complète. + C'est utile pour les serveurs POP gérant des adresses email sur plusieurs + domaines (comme wanadoo / orange au moment où j'écris ce document) +\end_layout + +\end_deeper +\end_deeper +\begin_layout Description +bypass_if_local\InsetSpace ~ +: Booléen indiquant si l'authentification doit être outrepassée + si la connexion s'effectue depuis le serveur lui-même. +\end_layout + +\end_deeper +\begin_layout Description +CSS\InsetSpace ~ +: Paramètres des styles de pages +\end_layout + +\begin_deeper +\begin_layout Description +CHOOSER_LIST\InsetSpace ~ +: Ce tableau associatif contient la liste des styles CSS à utiliser. + Les clefs sont les libellés des thèmes à afficher et les valeurs sont les + noms des fichiers CSS correspondants, sans chemin, ni extension. +\end_layout + +\end_deeper +\begin_layout Description +MAIL\InsetSpace ~ +: +\end_layout + +\begin_deeper +\begin_layout Description +TEMPLATES\InsetSpace ~ +: Ce tableau contient des tableaux associatifs dont les clefs seront + utilisées dans les passages de paramètres HTML, et contiennent des sous-tableau +x de la forme suivante : +\end_layout + +\begin_deeper +\begin_layout Description +caption\InsetSpace ~ +: Intitulé qui sera affiché à l'utilisateur +\end_layout + +\begin_layout Description +tpl_file\InsetSpace ~ +: Nom du fichier (avec l'extension PHP) contenant le modèle. +\end_layout + +\end_deeper +\end_deeper +\begin_layout Description +SUPERUSERS\InsetSpace ~ +: Ce tableau contient la liste des login des super-utilisateurs + (ceux qui ont le droit de supprimer des réunions) +\end_layout + +\begin_layout Description +UPLOAD\InsetSpace ~ +: Paramètres concernant l'attachement de fichiers aux réunions +\end_layout + +\begin_deeper +\begin_layout Description +accepted_files\InsetSpace ~ +: Tableau des extensions qui sont autorisées. +\end_layout + +\end_deeper +\end_deeper +\begin_layout Subsection +\begin_inset LatexCommand \label{sub:Initialisation-de-la-bd} + +\end_inset + +Initialisation de la base +\end_layout + +\begin_layout Standard +Tout les fichiers nécessaires sont rangés dans le dossier +\begin_inset Quotes fld +\end_inset + +install +\begin_inset Quotes frd +\end_inset + +. + Vous utiliserez principalement le fichier +\begin_inset Quotes fld +\end_inset + +RAZBase.php +\begin_inset Quotes frd +\end_inset + +. + Appelé au travers du serveur web, il vous permettra automatiquement de + mettre en place la structure de la base de données, et optionnellement, + d'insérer un jeu d'essai pour tester l'application sur votre serveur. + Si vous ne souhaitez pas utiliser de compte SQL ayant le droit d'altérer + la structure des tables de votre base avec ce script php, vous pouvez exécuter + le script +\begin_inset Quotes fld +\end_inset + +base.sql +\begin_inset Quotes frd +\end_inset + + avec votre client SQL favori. + Le jeu d'essai se trouve dans le fichier +\begin_inset Quotes fld +\end_inset + +jeu_essai.sql +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Subsection +Configuration par défaut des comptes +\end_layout + +\begin_layout Standard +Dans le fichier de configuration modèle, un super-utilisateur est configuré + : inglebert@iut-blagnac.fr et le jeu d'essai proposé au paragraphe précédent + permet de créer des utilisateurs, et en particulier inglebert@iut-blagnac.fr. +\end_layout + +\begin_layout Standard +Par défaut, vous pourrez donc vous connecter en tant qu'administrateur avec + ce compte. + Le jeu d'essai met ce compte avec comme mode d'authentification +\begin_inset Quotes fld +\end_inset + +bypass +\begin_inset Quotes frd +\end_inset + +, ce qui signifie qu'aucun mot de passe est nécessaire. + Pour utiliser un vrai système d'authentification, connectez-vous avec ce + compte et allez dans la page +\begin_inset Quotes fld +\end_inset + +Mon Profil +\begin_inset Quotes frd +\end_inset + + pour choisir une autre mode d'authentification. +\end_layout + +\begin_layout Section +Maintenance +\end_layout + +\begin_layout Subsection +Visualisation des objets et des fichiers +\end_layout + +\begin_layout Standard +Une page d'administration est prévue à cet effet, et elle n'est accessible + que par un +\begin_inset Quotes fld +\end_inset + +super-utilisateur +\begin_inset Quotes frd +\end_inset + +, c'est à dire un utilisateur consigné dans le fichier de configuration + principal en tant que tel, confère +\begin_inset LatexCommand \ref{sub:Configuration} + +\end_inset + +. +\end_layout + +\begin_layout Subsection +Nettoyage de la base +\end_layout + +\begin_layout Standard +À partir de la page d'administration décrite dans le paragraphe précédent, + vous pouvez aussi purger les fichiers attachés et les objets de la base + de données devenus obsolètes. + L'aide contextuelle de cette page vous expliquera comment faire. + Il est vivement conseillé de faire une sauvegarde de la base de données + et des fichiers joints aux réunions avant d'utiliser cet outil car l'erreur + de manipulation ou de programmation est toujours possible\SpecialChar \ldots{} + +\end_layout + +\begin_layout Section +Authentification dédiée - Personnalisation +\end_layout + +\begin_layout Standard +AWOR utilise un système d'authentification dédiée de sorte qu'aucun mot + de passe ne soit stocké, et que l'utilisateur n'ait pas besoin d'en retenir + un nouveau. + Le code d'authentification à été écrit de manière à être maléable et est + extensible. + Le coeur du système d'authentification se trouve dans le fichier +\begin_inset Quotes fld +\end_inset + +auth_dialog.php +\begin_inset Quotes frd +\end_inset + +. + Vous y trouverez une section commençant par le commentaire ci-dessous. +\end_layout + +\begin_layout LyX-Code + +\lang english +/*************************************************** +\end_layout + +\begin_layout LyX-Code + +\lang english +** Ajouter d'autres mode d'authentification ici ! ** +\end_layout + +\begin_layout LyX-Code + +\lang english +***************************************************/ +\end_layout + +\begin_layout Standard +Comme l'indique ce commentaire, vous pourrez ajouter à cet endroit une portion + de code pour utiliser un autre service d'authentification. + La syntaxe est la suivante : +\end_layout + +\begin_layout LyX-Code +case '': +\end_layout + +\begin_layout LyX-Code +/* Eventuellement du code préléminaire */ +\end_layout + +\begin_layout LyX-Code + +\lang english +$auth_is_ok=; +\end_layout + +\begin_layout LyX-Code + +\lang english +if ( ! $auth_is_ok ) +\end_layout + +\begin_layout LyX-Code + +\lang english +{ // On exécute la ligne ci-dessous que si l'authentificaiton à échouée +\end_layout + +\begin_layout LyX-Code + +\lang english +$errmsg=; +\end_layout + +\begin_layout LyX-Code + +\lang english +} +\end_layout + +\begin_layout LyX-Code + +\lang english +break; +\end_layout + +\begin_layout Standard + +\lang english +Il vous suffit de remplacer les éléments entre chevrons dans le code ci-dessus + et de le coller dans +\begin_inset Quotes fld +\end_inset + +auth_dialog.inc.php +\begin_inset Quotes frd +\end_inset + + pour pouvoir utiliser un nouveau mode d'authentification. + Reste à donner à l'utilisateur la capacité de l'utiliser. + Vous devrez encore, d'une part, ajouter dans la base de données le + à l'énumération du champ +\begin_inset Quotes fld +\end_inset + +methodeAuth +\begin_inset Quotes frd +\end_inset + + de la table +\begin_inset Quotes fld +\end_inset + +Personne +\begin_inset Quotes frd +\end_inset + +, et d'autre part proposer à l'utilisateur d'utiliser ce mode d'authentification + en modifiant la page +\begin_inset Quotes fld +\end_inset + +profil.php +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\end_body +\end_document diff --git a/beta_accents/doc/READ_ME.lyx~ b/beta_accents/doc/READ_ME.lyx~ new file mode 100644 index 0000000..af8e3a7 --- /dev/null +++ b/beta_accents/doc/READ_ME.lyx~ @@ -0,0 +1,582 @@ +#LyX 1.4.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 245 +\begin_document +\begin_header +\textclass article +\language french +\inputencoding auto +\fontscheme default +\graphics default +\paperfontsize default +\spacing single +\papersize default +\use_geometry false +\use_amsmath 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language french +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\end_header + +\begin_body + +\begin_layout Title +AWOR - Fichier Lisez-moi de l'administrateur +\end_layout + +\begin_layout Standard +\begin_inset LatexCommand \tableofcontents{} + +\end_inset + + +\end_layout + +\begin_layout Standard + +\newpage + +\end_layout + +\begin_layout Section +Compatibilité +\end_layout + +\begin_layout Standard +Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, + MySQL(>=4) et PHP (>=4). + +\end_layout + +\begin_layout Paragraph +PHP +\end_layout + +\begin_layout Standard +L'application ne nécessite pas de configuration de PHP particulière. + Elle fonctionne quelque soit la valeur du paramètre de configuration register_g +lobals, utilise les sessions via les fonctions introduites en PHP4. + L'application fonctionne quelque soit la verbosité des affichages d'erreur + et de warning PHP, car nous avons travaillé à éliminer tous les messages + +\begin_inset Quotes fld +\end_inset + +E_NOTICE +\begin_inset Quotes frd +\end_inset + + PHP qui surviennent par exemple lors d'une comparaison avec une variable + non-initialisée. +\end_layout + +\begin_layout Standard +Les scripts PHP n'accèdent pas en écriture au système de fichier, sauf pour + l'upload de fichiers. + Le dossier +\begin_inset Quotes fld +\end_inset + +fichiers +\begin_inset Quotes frd +\end_inset + + doit être accessible en écriture par les scripts PHP sans quoi la fonctionnalit +é d'échange de fichier serait inutilisable. +\end_layout + +\begin_layout Paragraph +MySQL +\end_layout + +\begin_layout Standard +Les scripts PHP ne modifient pas structurellement la base de donnée MySQL, + il suffit donc d'un compte permettant les instructions SELECT, INSERT, + UPDATE, DELETE sur les tables de l'application. + Pour indiquer à l'application quel compte MySQL utiliser, veuillez vous + reporter à la section +\begin_inset LatexCommand \ref{sub:Initialisation-de-la-bd} + +\end_inset + +. +\end_layout + +\begin_layout Section +Sécurité +\end_layout + +\begin_layout Standard +Cette application a été développée en gardant toujours à l'esprit les problèmes + de sécurités. + Nous ne pouvons évidemment pas la garantir failles ni bugs, mais nous sommes + fixé des règles de programmation pour éviter les failles les plus courantes. + Toutes les données issue de l'utilisateur lors des traitements des pages + web sont traitées pour éviter des problèmes d'insertion de code dans les + requetes SQL. + L'authentification des utilisateurs est systématique, vérifiée à chaque + page et repose sur le système des sessions PHP. + En revanche, il faut noter que le formulaire d'authentification n'est pas + protégé contre l'usurpation de mots de passe car les contraintes données + dans le cahier des charges ne le permettent pas, dû moins, il n'est pas + possible d'utiliser un cryptage efficace (assymétrique) sans modifier le + système d'authentification déléguée et sans utiliser une configuration + de serveur Web spécifique. + Considérez, pour résoudre ce problème, l'emploi sur serveur web sécurisé + (HTTPS) et l'utilisation d'une liaison entre le serveur web et le serveur + d'authentification au travers d'un réseau de confiance. +\end_layout + +\begin_layout Section +Installation +\end_layout + +\begin_layout Subsection +Dépaquetage des pages PHP +\end_layout + +\begin_layout Standard +L'application est livrée dans une archive de type tarball compressée qui + contient toute l'arborescence et les fichiers PHP nécessaires. + Il suffit de décompresser cette archive en conservant l'arborescence dans + un dossier publié par votre serveur Web. + Les fichiers de configurations sont présent et contiennent des valeurs + d'exemple que vous pourrez adapter à votre situation. +\end_layout + +\begin_layout Standard + +\end_layout + +\begin_layout Subsection +\begin_inset LatexCommand \label{sub:Configuration} + +\end_inset + +Paramètres de configuration +\end_layout + +\begin_layout Standard +Cette application comporte deux fichiers de configuration qui sont dans + le dossier +\begin_inset Quotes fld +\end_inset + +include +\begin_inset Quotes frd +\end_inset + +. + Les fichiers existent dans la version distribuée et ont pour but de servir + de modèle. +\end_layout + +\begin_layout Description +connect.inc.php\InsetSpace ~ +: ce fichier contient les coordonnées du serveur MySQL, de + l'utilisateur SQL et de la base que l'application utilisera. +\end_layout + +\begin_layout Description +config.inc.php\InsetSpace ~ +: ce fichier contient tout le reste de la configuration de l'applica +tion. + Le fichier est un script PHP qui initialise un tableau multi-dimentionnel. + Ce choix à été fait par commodité, et pour permette de bien hiérarchiser + les information, en revanche, la syntaxe est fourbe\SpecialChar \ldots{} + N'oubliez pas de virgule + ! Toutes les constantes sont décrites ci-dessous. +\end_layout + +\begin_deeper +\begin_layout Description +$adminMail\InsetSpace ~ +: adresse e-mail de l'administrateur. + Affichée à l'utilisateur lorsque qu'une erreur interne à l'application + s'est produite. +\end_layout + +\begin_layout Description +$automatedMail\InsetSpace ~ +: adresse e-mail de réponse des courriels envoyés automatiquement + par l'application. +\end_layout + +\begin_layout Description +AUTH\InsetSpace ~ +: Paramètres d'authentification +\end_layout + +\begin_deeper +\begin_layout Description +POP\InsetSpace ~ +: Paramètres pour les serveurs mail POP +\end_layout + +\begin_deeper +\begin_layout Description +SERVERS\InsetSpace ~ +: Chaque élément de ce tableau à pour clef le nom de domaine du fournisse +ur de service de courriel ( partie suivant le @ dans une adresse e-mail) + à pour valeur un tableau associatif de la forme suivante +\end_layout + +\begin_deeper +\begin_layout Description +subdomain\InsetSpace ~ +: adresse complete du serveur offrant le service POP +\end_layout + +\begin_layout Description +port\InsetSpace ~ +: numéro de port TCP utilisé pour se connecter au service POP +\end_layout + +\begin_layout Description +username_is_full_mail\InsetSpace ~ +: Booléen (true ou false) indicant si le nom d'utilisateur + à utiliser pour l'authentification est l'adresse e-mail complète. + C'est utile pour les serveurs POP gérant des adresses email sur plusieurs + domaines (comme wanadoo / orange au moment où j'écris ce document) +\end_layout + +\end_deeper +\end_deeper +\begin_layout Description +bypass_if_local\InsetSpace ~ +: Booléen indiquant si l'authentification doit être outrepassée + si la connexion s'effectue depuis le serveur lui-même. +\end_layout + +\end_deeper +\begin_layout Description +CSS\InsetSpace ~ +: Paramètres des styles de pages +\end_layout + +\begin_deeper +\begin_layout Description +CHOOSER_LIST\InsetSpace ~ +: Ce tableau associatif contient la liste des styles CSS à utiliser. + Les clefs sont les libellés des thèmes à afficher et les valeurs sont les + noms des fichiers CSS correspondants, sans chemin, ni extension. +\end_layout + +\end_deeper +\begin_layout Description +MAIL\InsetSpace ~ +: +\end_layout + +\begin_deeper +\begin_layout Description +TEMPLATES\InsetSpace ~ +: Ce tableau contient des tableaux associatifs dont les clefs seront + utilisées dans les passages de paramètres HTML, et contiennent des sous-tableau +x de la forme suivante : +\end_layout + +\begin_deeper +\begin_layout Description +caption\InsetSpace ~ +: Intitulé qui sera affiché à l'utilisateur +\end_layout + +\begin_layout Description +tpl_file\InsetSpace ~ +: Nom du fichier (avec l'extension PHP) contenant le modèle. +\end_layout + +\end_deeper +\end_deeper +\begin_layout Description +SUPERUSERS\InsetSpace ~ +: Ce tableau contient la liste des login des super-utilisateurs + (ceux qui ont le droit de supprimer des réunions) +\end_layout + +\begin_layout Description +UPLOAD\InsetSpace ~ +: Paramètres concernant l'attachement de fichiers aux réunions +\end_layout + +\begin_deeper +\begin_layout Description +accepted_files\InsetSpace ~ +: Tableau des extensions qui sont autorisées. +\end_layout + +\end_deeper +\end_deeper +\begin_layout Subsection +\begin_inset LatexCommand \label{sub:Initialisation-de-la-bd} + +\end_inset + +Initialisation de la base +\end_layout + +\begin_layout Standard +Tout les fichiers nécessaires sont rangés dans le dossier +\begin_inset Quotes fld +\end_inset + +install +\begin_inset Quotes frd +\end_inset + +. + Vous utiliserez principalement le fichier +\begin_inset Quotes fld +\end_inset + +RAZBase.php +\begin_inset Quotes frd +\end_inset + +. + Appelé au travers du serveur web, il vous permettra automatiquement de + mettre en place la structure de la base de données, et optionnellement, + d'insérer un jeu d'essai pour tester l'application sur votre serveur. + Si vous ne souhaitez pas utiliser de compte SQL ayant le droit d'altérer + la structure des tables de votre base avec ce script php, vous pouvez exécuter + le script +\begin_inset Quotes fld +\end_inset + +base.sql +\begin_inset Quotes frd +\end_inset + + avec votre client SQL favori. + Le jeu d'essai se trouve dans le fichier +\begin_inset Quotes fld +\end_inset + +jeu_essai.sql +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Subsection +Configuration par défaut des comptes +\end_layout + +\begin_layout Standard +Dans le fichier de configuration modèle, un super-utilisateur est configuré + : inglebert@iut-blagnac.fr et le jeu d'essai proposé au paragraphe précédent + permet de créer des utilisateurs, et en particulier inglebert@iut-blagnac.fr. +\end_layout + +\begin_layout Standard +Par défaut, vous pourrez donc vous connecter en tant qu'administrateur avec + ce compte. + Le jeu d'essai met ce compte avec comme mode d'authentification +\begin_inset Quotes fld +\end_inset + +bypass +\begin_inset Quotes frd +\end_inset + +, ce qui signifie qu'aucun mot de passe est nécessaire. + Pour utiliser un vrai système d'authentification, connectez-vous avec ce + compte et allez dans la page +\begin_inset Quotes fld +\end_inset + +Mon Profil +\begin_inset Quotes frd +\end_inset + + pour choisir une autre système. +\end_layout + +\begin_layout Section +Maintenance +\end_layout + +\begin_layout Subsection +Visualisation des objets et des fichiers +\end_layout + +\begin_layout Standard +Une page d'administration est prévue à cet effet, et elle n'est accessible + que par un +\begin_inset Quotes fld +\end_inset + +super-utilisateur +\begin_inset Quotes frd +\end_inset + +, c'est à dire un utilisateur consigné dans le fichier de configuration + principal en tant que tel, confère +\begin_inset LatexCommand \ref{sub:Configuration} + +\end_inset + +. +\end_layout + +\begin_layout Subsection +Nettoyage de la base +\end_layout + +\begin_layout Standard +À partir de la page d'administration décrite dans le paragraphe précédent, + vous pouvez aussi purger les fichiers attachés et les objets de la base + de données devenus obsolètes. + L'aide contextuelle de cette page vous expliquera comment faire. + Il est vivement conseillé de faire une sauvegarde de la base de données + et des fichiers joints aux réunions avant d'utiliser cet outil car l'erreur + de manipulation ou de programmation est toujours possible\SpecialChar \ldots{} + +\end_layout + +\begin_layout Section +Authentification dédiée - Personnalisation +\end_layout + +\begin_layout Standard +AWOR utilise un système d'authentification dédiée de sorte qu'aucun mot + de passe ne soit stocké, et que l'utilisateur n'ait pas besoin d'en retenir + un nouveau. + Le code d'authentification à été écrit de manière à être maléable et est + extensible. + Le coeur du système d'authentification se trouve dans le fichier +\begin_inset Quotes fld +\end_inset + +auth_dialog.php +\begin_inset Quotes frd +\end_inset + +. + Vous y trouverez une section commençant par le commentaire ci-dessous. +\end_layout + +\begin_layout LyX-Code + +\lang english +/*************************************************** +\end_layout + +\begin_layout LyX-Code + +\lang english +** Ajouter d'autres mode d'authentification ici ! ** +\end_layout + +\begin_layout LyX-Code + +\lang english +***************************************************/ +\end_layout + +\begin_layout Standard +Comme l'indique ce commentaire, vous pourrez ajouter à cet endroit une portion + de code pour utiliser un autre service d'authentification. + La syntaxe est la suivante : +\end_layout + +\begin_layout LyX-Code +case '': +\end_layout + +\begin_layout LyX-Code +/* Eventuellement du code préléminaire */ +\end_layout + +\begin_layout LyX-Code + +\lang english +$auth_is_ok=; +\end_layout + +\begin_layout LyX-Code + +\lang english +if ( ! $auth_is_ok ) +\end_layout + +\begin_layout LyX-Code + +\lang english +{ // On exécute la ligne ci-dessous que si l'authentificaiton à échouée +\end_layout + +\begin_layout LyX-Code + +\lang english +$errmsg=; +\end_layout + +\begin_layout LyX-Code + +\lang english +} +\end_layout + +\begin_layout LyX-Code + +\lang english +break; +\end_layout + +\begin_layout Standard + +\lang english +Il vous suffit de remplacer les éléments entre chevrons dans le code ci-dessus + et de le coller dans +\begin_inset Quotes fld +\end_inset + +auth_dialog.inc.php +\begin_inset Quotes frd +\end_inset + + pour pouvoir utiliser un nouveau mode d'authentification. + Reste à donner à l'utilisateur la capacité de l'utiliser. + Vous devrez encore, d'une part, ajouter dans la base de données le + à l'énumération du champ +\begin_inset Quotes fld +\end_inset + +methodeAuth +\begin_inset Quotes frd +\end_inset + + de la table +\begin_inset Quotes fld +\end_inset + +Personne +\begin_inset Quotes frd +\end_inset + +, et d'autre part proposer à l'utilisateur d'utiliser ce mode d'authentification + en modifiant la page +\begin_inset Quotes fld +\end_inset + +profil.php +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\end_body +\end_document diff --git a/beta_accents/doc/READ_ME.pdf b/beta_accents/doc/READ_ME.pdf new file mode 100644 index 0000000..7948fe2 Binary files /dev/null and b/beta_accents/doc/READ_ME.pdf differ diff --git a/beta_accents/doc/READ_ME.ps b/beta_accents/doc/READ_ME.ps new file mode 100644 index 0000000..9c293fc --- /dev/null +++ b/beta_accents/doc/READ_ME.ps @@ -0,0 +1,2436 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software +%%Title: READ_ME.dvi +%%Pages: 5 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: CMR17 CMR12 CMBX12 CMBX10 CMR10 CMMI10 LASY10 CMTT10 +%%+ CMSY10 +%%DocumentPaperSizes: Letter +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -t letter -o READ_ME.ps READ_ME.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2007.03.13:1229 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 102 /braceleft put +dup 103 /braceright put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD +5F3D998C69E42AA96AA212AD55B676FA2B4F6B519575404233C09AF99014AB95 +767523D9E1F8806E766AC0DD6D81028C3AA9C7536D88D3C2DB6D9949F844935E +420963F40430452DEAAC1F500BFB1C2473C54B9987BE449F042633C7038D5AEB +7E1E11C50911EBCF0979F8192E056A2B2EE9785EB73B1AB874116AD5AA74F32C +BF57FC28FFED335DFD9261AC7A624EAA93BEBC2C0F8B3F898DDA1490D59C6C4B +A651746C8EAD41BDAA1AF4056AFE98D2D3AE3CCEB9C67FE3A63385470EA42968 +34268684A674675AB9EDBB5BFCA81224B22D4ECF40D1F31A39481AC68A87F252 +F4E7C1C340A26E0D514BACCAA51898758A7E7B63D2E7F34E91554151433F0FD2 +4901D3DE9A5FB9306552DC57EAB729AA07780927E1ECCB5D1F59A09A1E3FFF2D +922B6C9B58CB20D687A72B9C22D4EC926771541EDA3B75559510DB21BA4461EA +960B8E5AF4D31D08E8F235D677A9F6EFDB01926967743942C23955678E438F51 +E5E22E2FA2AA7894755053C32B39277B82C00B3D9BE9957CF3ED626852FFFC31 +6E5F0F7489198136A3284B31CC94299EED05B8FA66B8D33F7C47367790D23CD5 +303B0C8E58B0E51BEA9325282F19A3D361A3BEA6BB0CCD09BE735D810E7E0A79 +D1A9C580CFC8CF9FF685D63ECDCCC024C235448BA632F00C3C5BC0E86F44B90A +293817CC93035E5E18548A7E157C2887309BF84C167D8DBED024BB +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.1: CMTT10 1.00B +%%CreationDate: 1992 Apr 26 10:42:42 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 18 /grave put +dup 19 /acute put +dup 33 /exclam put +dup 36 /dollar put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 42 /asterisk put +dup 45 /hyphen put +dup 47 /slash put +dup 58 /colon put +dup 59 /semicolon put +dup 60 /less put +dup 61 /equal put +dup 62 /greater put +dup 65 /A put +dup 69 /E put +dup 79 /O put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 120 /x put +readonly def +/FontBBox{-4 -235 731 800}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 +38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF +D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 +EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 +A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 +F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 +4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA +6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E +A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B +E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F +1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 +452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF +8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 +5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA +DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 +BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 +741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 +E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 +E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 +D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE +C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA +726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 +CEBEF0C9440DC034DAD9C19FB27A350233112B0A339366B7373CE058456E0E1F +139E2DCAA12133B5B6017B0E08E776403F967AF719E0161CDFBF8BBE8490F57E +53C78E97517EF7FB7C00035D601CAC8F4EB2F16F8765614227C71C390C32E960 +FC7E9B9BF26D89F808B05C2E483B9171450E4CF3A86E62886E826B1E34FEC34A +90D3FAC2AF1FB275E094E8D7193F90BC0CB304DF4D689A954C9449169527C39D +9CB9096FC455C5D6142157E548E04DDDE0638C24641FF3EE31B1E35E1A76EA79 +F0DBFAC9967E6C649559B6CA9944962E09541FBB7A00956D1ACA7D8C2355A2C6 +12CA44A7392D8E791DDE1DE818BBF26CE3BCC2568666FCF40BD9C588E28745D4 +49186EDEF6D270E5D8C9BF95B4C1213841128AF3361EE4B989D3A784F916A2D7 +D31A9F2F0C3E4F367427BF3F0C4F36E9276D082BF8C250E469D647AB51DD7701 +4C29231FEB055C147F0A782389800E3ED38D7AE8C6555228CD148541D763D325 +21016A8A5234A8AC19BFD6E3346A94D8A7479DBC59B5796D3063FCC2CE8DBCC9 +1E4139036B4E883A4CBFC0DA2F3BCAAF8BF4DA641882E8CF028D9F9271257FD3 +0872AA684B19CF706474B4F86EE510BEF0164F8504578A9FAE4339270B8C5D81 +496424BE58438D5ECE95BD18973CC66F471E7CA58039ADB2FDEE9329CC788A19 +E852B137500A6F32DEF2742E6C2B182FE2777150BABCF8A2C21FC1FEEC3765EA +8E337F9BDEC3FBD5D4D7857FA703F282EDA0DC7A22E2E44E131DB5D9954B7603 +E2934111D6B57CFA826DB114947DFA87EDCC6CCB33146C2742E7DF664A3BCDA5 +3335EDF6A6C7290939BA0D9937F1D6FA47522D0DCA42AFC7E0EEFDE9B914D5B4 +8039D2C3F063EAAAE10516DDF3DBF97B5F87EE9EA959AC738AB6CDEA63DA8862 +7F7EA32222690E7EDC6F4B3391E834977D476B19D9C14D92420122A733E735A5 +EDED2F02D5A7F3347CB289CA2A440945544A7677C4BD7DA3000FDEA64A4A6E85 +4C1C6C4D16A91AFAB0B84A485CDFC5EDEB03E8E93218694C5426650444AC9972 +98634CB73BF34252A72F838CFABD9F667EB050C113EB222A745B878098AD2C48 +7C6F0817AD96EDA15FB9061832CD91B4270098246BA8D5ADDA339A49DF0292AB +6F7FE225D100F67F3DB412F4D95D464E27AEDB8B76FC8A0930E649E3EE380FC7 +6ECC654D9E901DD295F0A23A3CE88018A2ABA18977775D14695AC02F91E46549 +036939DCE6CFC8BB47CB297D9FF205F900A06DC9F65D2851C66443BE520954B9 +1C98471D8D7746AAFEB2A662A79DB89AC3B2DB327183ED0D4D52CEC819A49BB4 +7E7D4D8B871F85AD43A0441CA8EE86C209F3256BCBF4C4DDF209EFD7E70245FA +E072B99F1F20D4D504AEAB512F477C9B998C466E01238F9E87B3FCC90CE1A90D +4B1A422BA0C0293FD9F58DD4F18ACEA7029B88EB55A2FED83DEAE9F573E9FFCF +05102DC9BD02E9F6D150F3E9D1DFBB8962048508B859CD190DA15732F8D210B1 +7665EED21506DBABBD0E2745D84542555C9FF9ECC3A8043E7EABD1ED5AC7B499 +CEFEDC3164C2C92F5D88C67C6545E9482E70E1DC2C32117ABF99FA7726A43956 +6414DA5B78F70D7A26A8937CB80A705C8048DB26F0CEBD5CCCEA416F19699DF4 +6443C056290A555F50D9BA984B4DA2A19B2BA12E39CAA1EB432E4DD6D2AB907B +3F20B8A3D0FFDFF3258A7AF82A927CD4D54C2F56C1A2DE4C38F1ED186B7F0578 +33B918CB01EE5A839042AB0F740455F1E4DB53A21822CA65333855109335204B +32B6C05D5BE9D260F4AC010996C7CD7C0FD3E5EEA9A66493ABC66E74CD096FED +0175311C18C6F3B577E3C58BFB9A09FEF317B94AC7A1226DD67E2A3A3552CAFC +4314CC03CF0B48320EDF3906F21621B2D7BEE3698299B70EE202F944CE2A903F +6410E7C05A79809B5C875AAEC9A4205DDFC737B3241CD6FBA5327CBF30007B57 +4BFC1497DA3FDD05D8101438ED5BD186D5D8DABEFEA21EB2F25DCB60E2DA4BD3 +6E782FEECF9B0EBCB42E50FF504E8A40C0BE7C6A43DD5BFF2305518944270A32 +34C2D562F9B1A2ACF8C05E3FE0418FDDB10776C8F96B6DA2B554A966C76847D7 +194CF2085C9D9B729CF9DB043259B64A98F96ACDD926E7A27BD6C0A851B0FC76 +26B7C8BAB18706BBBBEEEEAD8B1475B1011A402EFACFA98B097B26A733529730 +FC03A63DB45273DF559D98450186FC0DE013CCAB58E0BF9B23858BC144AF4AAF +584657853F1893F49595536AE79FE8576BFE7320100B1B84E4448B0399C4726F +2783F9DAD23DFD164C8161702A2935C2588CF573F340DFD3DBE1E9B0D813AB8A +C3B13323271662029F9CCD1FB0C45EF425FD4D993A79874B70E579EC97967FC3 +702A9C2F35B4429B48209F97693806A4D959E7831950E43972E39B38FF86AC27 +10822BAC05F1AE05177DB365E1AB065E26FA661FD8207A8FFA1813532E7EC30B +D4E53E9A9ABD40680B88AFAF53FC0571E6AE27BC40A0F76388E5D0229E2E1595 +B503B126B7EEDCC999ECD51714D62F551A0B96EDAF1E79CC134782DB35684CAF +6B740C64F3BD1C89C5AAB48948F52B2FFBC9B1DA9CF690795AB1A3BD7833E4C6 +C0D4086BCD203525410C86C67092B374C9C470E7945A283A16C13CEE9082F647 +3E2DFFFBAB9838FAAAAF0587D48409EB39FC15E666249FFE4A7F800FAE1F4283 +BFB8D88E617E66DB9EB13EA2D41D0BF78158FEB44337804CCB239322ADC61B91 +9419AEC7F3F21374969D91EF2B1A4B13E8588B4987D5C7969C53D292E11C2570 +7B0F5B31E54EA40288EEB3DCA236D122C5D18E8805091C8B443E7DA62C87BD16 +CB4701563393DD13E0C0E7D18B1B37A39837FE150D1A7EDFD2143C33B0EC4428 +2B80952D456CE5183432181468099E9C0B3445AFB24DE79A664BDA3F16B1EE4D +D1DA546437D8569BD9EA0B561A0E7742A4055B8F921F02CE9A8DBB5442A9997D +85626AC2847CBCC69FEE0FE0C50CD0063856A60581C78A9C06347A0F2DC39496 +81AD75A6B5E26D74EE09EE581063774F1831C26DDAF910BCAEC550975C0A7AEA +F9954F1881DB9C496D2197ACAE6A8069ABC257C846BDEEB1D15943FC436B2DEB +11A1D0982DBE0CFCBAB99F52FE5089AAF2D8E16D43D6D1023D4ED077B8C95BCD +09C050584B5F1E65473083CD46C10294187FC277D8F655CE5586D6CBD8C2C145 +1F8DC42A4FBF99379C8FB8D8B5BF501BA6C77C4F7983C3F7F7AD4BB5CEB681D7 +A66EF51E3D222DD88437C16EA4CFD8B31C0644E36F0C968C76A7F2FF3C0462E9 +9497A8D6000A16BCD597E3000E9F85E10F0032708DA7B50FCC53D89BEDFDC56B +7923D6130CF9DB95EF5CB83D01C07EE9B4A5EC5FEC0174DCAA262951747B6669 +D56F651E980237B5C7C558DC0807C3946DC1AA63F0630D5EFB998EDBEAED3900 +5FE4DE1A2AF923B42114D546F936387326B04626B0CD44A0DBFB8B083ED63200 +63AAA6B24E828A62F0E8CC307D1EFB42E738357138AFB63E60752E1ABE891828 +B55B19DC32FFFDA3C41DF9F05DF9239AAAB9F196BA68A763082440804C7B3AB8 +FABCD82C9F552F1AF2CFBFFA1585389CE5A2A5E984CE02F92A91869A5ED0E039 +5B3F9D7E1FC7A070FCC41F92031F5107470AA90D7B535221A748597CC188DFA7 +DA68616806D95752FB176FA137E23517467EAFCAD8FDE4E3733D64E6D9758DAD +6217A2A3C08DA70DC64383B56260575183A08772A7B5657501ACDE1118C5BF44 +9CEEA3D86F0FD2B43EFA5B8F1F58F99168683B393A3F9E84EDAF1D4E92398812 +1A0D12AE549B3557D0150CD0ADC04DA4C5B2D40E7C64C36A26896D6B8401B48F +779C3FB593C2A9A983B533A7C99C9E43BAFA1FC9AF5E65516D2DA32924D352E3 +8371D19559A6FF8C311332C473BE41E55113C711C6AEEFAC9AE3A7CF0011F531 +61C693860994A44793336AA158634D9D756B0F98FC5D3E6826C71F2A1C4E1175 +EFD1047D682263F253E64B0E6119C09CD02016FFE5D7D950C26829B6F41B8798 +37A467DBC484991D9B523BA441E405C395E5187B6264D74FE2E3E82910BE26E1 +5EAC9874C77B5EE2D354270ED47A774CA5674E18F25F4BE6755B7430DD7F39DA +F96CB74DE9C91B00DCAB75876D4586721AAB696EE3290D9F05F39A01695B07E1 +7DBDBD379B9225C291549E5D3C4A3D95B1ED277AF176890E32B2DA66A4DEB9E3 +1DA246BC679C12E6E2ACA3404A185C10F21721E71D84601302776E36F444ECBD +BDE861941397E6ECCAC4EBE71CC0005266E40AF949FC001CE132B71789E0F037 +FF3B56690BA309F623DEA80351B1E5800D809790EE7C96DE82F264BBE9AEA406 +577009EB689F8F9EC15641629C107D8986323703567B547110A99DAF7F16C623 +4F3029BC7E504B4C37B646F9C49CDDCF2DAAADB748686BD9F6D0B2EDAB2051F4 +DA20EB487266D9C55F9F5767EA899C0BCED7720BAE6362A7AD81F5D45F6A709D +3A27E50491A46CE17E585FBF9EFC2A27FFB50F00E4B05138C7D4F45A40B39E7C +2ABB5DC0DDEE77E4BDA3901A67BB93C52241384FCE35EC11F67D6C8677C9F889 +F0FC365893A10E11CEE5CA0155064D8D2E98699961D9B26BE86D4B9A5E2786C1 +3CF260A03857687EA6FBC83DEEF840ABCE7ADBDC897CE6B06F6DE55BF3B8AB6D +777293FEFC61C6DAD78894C873E162A5510A036FFFD9A10977CD627AC3EA4715 +F25A263E6331EEB9BE68DF97C946840841EF83204D9D313202C4ACA7BAF94050 +3B420EBBE797566277CFD3A7FA1AC6CF81FC24E6F336913F4A183B93BEB308A8 +4AE0CEE98B45B2C2683CC06374113AC12F79F98BD19D67F78E2EA586B518FCC1 +4C8B5ED575DD4631BCEAADABE1E9742A364C0D149AF83FD9AEB49EE0E12B08E2 +C4FC73A08F572AA40B58B5B44151974DAFB1FAA29B4D74038519590ABC83B0A8 +A22BD5BD843FB4310EB1E6552B45A5C64F2046DC330559996E77FEF47B4F2062 +3DA41A9E030757F4957BE97725F1DB6FBD15F144F5EFE357FB74BF758AC56A58 +F0F76D03C776F4CB58D7F549F11374DB4E2DF6A8DCF76F0EB394EB110A0477BC +65CEDE077AE2D013A8E46CC2E4F0BBBDE546801E24FD5B9A6A4935F4799DD803 +13FAB011EDBD4431C31C86C4D26C0E729A067C2DEC602A5D884F43BD62EBF59C +F552152162E45D18414D77DB32069C5B3EA64F465D6516335F3D243235FA3524 +E88FA64170BAE32117A35A9C7629DB90066A13160727FCC45C0BC95145AD8913 +075D28ACA02AFBD18B1A659C1DC229D0A6196A308DF639A002EC3A2962B4DCF1 +E9766188B7FA2448F7E3851F896CCE35E5D8644BB33D6F7AA17B3D2E03E2BAC7 +98B122F7370B1322D0A0CA0213CD918EC84EA6FA5BD45EA3B0E1C8EC168D6AA9 +6F6D664531CC8960DB40327B224F12C487FDC6A1E7211D90612B36E02FB7BE85 +36480D2293549DCFD64BEA4DAF4E1281E4FBD4C006C5200BB489246A7EE375B2 +A10826BF9CB311EE708421044375DB5F2165E4E07601BF25A1BD569C31A44CE6 +7E92A0E99939283BD2205B28808FE42C97DDD2C5B6ECD0ABFC114A3244B06213 +21399570C91AD742C71818F58AEF56EC10F0ACC62A20B1F4B9EB01571548218A +CA7D6F9AD9B97D5D03883B8E1194C5BCAA032BBDA9E71572C157D65AEFE2EAF6 +492E40826F692D743DDC26120F0AA543E72E5BB697EE138CABC3295CB819C08B +91F4CC16F5D3FEB1E839682CE56588BFFD94869EF54E061340B5E72257C4901D +BF10C71313A1B9CBC7F7B01C746E9E26E670CC7EC077ECE404425EADC54BCC2A +5854CEDD7563502EC2FE222F66BA55070448D829E3ABBCD360036C0B615E36DA +25911D22FEB2BF2C7D948AD56BF70822D30E4A4B1DEDCD6B531D195D6C7BBE0B +201EC0D8B0D68CA66A79C6968BE0879183BC145413A31466957A467B898778AE +DB9D8A1DE94A5D3FD3DCDA47E121F82F84BEA873A053AA9FAC7D9433C14BBDAB +FDDF6B0A4C73259C8CD62527511025A0B09F14B9CBC0F61A2231A002F8A6B63F +4BB27CC0E6B9CEBDB49561C8BFC5CFEABD91C3BFBA8BF3C0850668A6C55414FD +E3C4D537DE8DEB01A71592FC464ED5C8F43161AFA5020345C1624580F54DFED8 +00F8BD0C0BD0D33D3EAAD0896415FB3F11B6B79FA68DAA3A7C4CED48F322292C +F56F1D21FB55A1ED75AC0CE49334CC8476E08E2A7C3A44F09CB8F78ECA27C5FC +8DE7AFDA8EA8CD255CB0A72130797AC2EF0F0EF4BB9EA369CD72C068EDD01480 +8D8D0B6292FEA04E936758B4852F58FCADD8F9577D77CDCC7DCD3C9F0FF70EAE +E676F83CFC7E5124D4A3DC3A081A5AA9AE33A2B13B416E5E032719A388955CFC +2A9BF6F6D8CAF1D17A86E0041ECF792C4AA3D7CC7A962632D7B4C922BD792BE8 +14C684F6ED9948D2E4291036E2C8A413968B23287A0420D9E141952401E4D1D4 +1CDFFBEB8A5FAEDF20F77FC0BCBFBC94AE4CE330E93EF85E70449F662A4C9C93 +415406EA2619735DDFD879E27F9F90A0950B5508F333C7137DB094F9C3E2A648 +AC37B7849B07DCA55D5FF6FB36481FC33D7568469542DECE246F3D48C812BD27 +4910E2B22CADC88C4137A9EE44CAC9ABE9BAD8C73B3C6FCE1D91C6D4AAC76057 +076A88787D0025778E825B17D74D11C8FFEDFFDABB17E2825EC0FB52BDC32F05 +78E1C412CAB1C4D808C5B49D121E5B63914EE3766C2DDB8093EF9DD5269642CD +E5EE962EE1636E905E62D4D538B595849D14E9EDC126029E2130FC68F1A9EBF2 +F48AC67C7125770DB92090A1E41BC52F6EE7AABD4750767E392C6BA0D751FE90 +AD495954AC54FC1FF8A10F1554DC479404264922F0364071118A9FD48B261653 +65B441634D4CACBC1BCCBD456F9C581EE3437C57039DD63E073E0D2167501081 +485856B43837F64A06A9FB01716D2A175F87E084957416CA9AF22F5B203BFC99 +AAE8C49988502160C91B026E2CD029A8F4B22328FAE0D7D31B11523FC275E7D6 +7DD48755D43734110A4EFFC4423545022E59FE75186D4A7164377C6454F8AA41 +23D5B97851E6FC0921AB5DA9B5F8B2C5835C2B6BCD8A0D02A020D7CCA97FE4C2 +E6DD5823BB7E113D31A8DD39E0BD931C56FB6DD818404B7B65B6056FF4D9754B +5F70C9A2C6FF8AF493C037DCFEF55E8952E50E2617D9A49C9E7AC63F944C9517 +62A46F6BB0964E04C361A567B8ACBF9CFC369A7080A009EE679C25613953BEDB +F96973E3A1DD1497C6E376E1029F3FE570E42F977C36C94F5FD338F243C66D22 +F2AF9FAFBB04047A789EC6043C2EB96C21450B11D25A59EDE8825F10AFB2ED99 +55FB7FC704D7B19B43329EE34919221EBB323A3F7AA7EFA10AB170F84BA486A5 +B14A49211F5D83510E318CA55344C80749364D0C523C8B65DE96C6CD673C3D79 +47F428C0C783810BB54CDDC6A4409CC57C9B627E4AF6B44EE83E516AF8FC51DA +370D4FB0A41B35E868862A183B20114A8D8B577A4E1C274E4CD44875403AB236 +9AA6BBAAC8165DE9EF789151A96E8EADF67AC76E073F9E6BFECCA0BF75A4EDD6 +17D553C3AABCB5C5764405AD3C94D8A54517313C35624CAF96E813947DD0B1E3 +6B76D7F2D089940304D378255DACF0F0CEE0446C7158BCBA554B3B105B3A80E4 +DFDD9A41DA6D6BC69A6BAE21C37C4B25FD255DAB45BA1D5512FAB359C6459E1C +665A7BF9E073977A0918339C1F8AC3C30D4D74EC97C66DADC47C9012C3781609 +F850CD086B04A1DDD9AA28AED8122A02C24823234FD31F396A192D221E3D378C +E44B2200B24CEBD1682E9C26D45A9323A37E48EFF65424B85846D64D563A2AD9 +E63292B1485F5ABAE4ADBF54EA065C5048441FF0A0CBB10D480936D364CC5654 +BFFECF0C2A38489557A84C5667C5DCAD5A4E3B85F3AC770D81103ABC1965F3F5 +C9C887FB3D7FEBECF64315D2EC133B7469263ED10BFB9B4950E3AED113DC74EB +9F381FAD3560B5BFA876AFB34E9BFEE12949063943EEA5F65A4AF4749B0E15E7 +010CAA9C7C6CA9EC2E33D2569D7F62B1FB528C5B5BE1CC6BCF217FA4E1006A0C +ABE037E82F10FA4734FCF14FB4E03FC40CB23CB5F0A0E9654B10A54A131ABD54 +F610C986E1D94AB28BED44BB9ECCE0AE22EE9380B07B01E785A5292EAF8FFD39 +622A7A8EAB9236422239A0BA57ED81D4E2072A299A8D7CB76848606C90B9C06C +4E5E54E967A77E2EC1E3694370311320FBBA2B2B9379F3021D5A99EF9A7C419C +2AADE194C437EDB906B2205F0A412103DC40FBF93579E699A67BDA18858C35A3 +72F73E90D030C6456B59C339069F144783EFCFAB14E7159A8ECB9B0C80999B5B +32E6F3D330DA167BA5DC3558012C0A32521904EA86E0503773D1DC35D512E77F +E96C604769A529E4F66CF17B3612A687BEFA09347A37A4B595FCBD63187138C5 +FAE7BA4EFD0F605652D6658D699049DD525D682721775FEE095C45F52E0193B2 +F5DFF39F9F1CED442CE7D351FE3DBEF0019F65343EEBCFC149CC82030D45DB3E +9FB5F426A5DCCCAF9AB592D7A5A793F99E259E3220A58F9C901E103D7CD721C7 +8333F4519F3926D9056ECDB3E84C6870447ABC0A2BF1A32A5CEEEB042C7553B7 +90A130CE5EE0289EDBBAC28B8F11D3481815AC6EAC746F45F7D72A262448DDFC +F1F4B5206D5C331AD195E7BA74036C74C5B84576603E380AEC07062FE1063C59 +3942E6D9F19C93F90B1DFA3EE57E4D5D527995EFA611D32EE1E483B81056D3B9 +30F1D2DF8AD13A88431539774BA5B148E4EFBB9F2113C54E2831ABD036663D0B +6B75B19BB681CEA9C64DF48805EB4AE8D8CF7D102BFABD9D99BA8574FB1000A2 +586F547090315593FC6F3B2775770DBB7882425AC88A106B9B04832A215FD0F8 +874F46559EE9834EEE8CF349C7A2720E27E52C56DFAA696EB697B5C0D105DCF2 +CCA41D62200CEAA609E9412A57E84C43AD67D30CC5AE207552B3A5173A90E50D +9C7B16886BF6C07B49451530665C8684A9684D17FC0D6434DB503BD770FCFBC8 +06B8AF060E05C9111375699E6D898C00BFC9AE0DE977F13A23763CC5814A1ECB +9CA65D863E26885FE22EBFC256918090E0D8EB3267B8DDD9F03F1469E97A0DE6 +9A6A296137DBE9E3BA094A4372AA30EE525BA638DB2DE2BC600175CD87B3421C +2B60FF41FB2D3CCBEB7C1D12D7A618C2781155DE1407F5F5 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX12 +%!PS-AdobeFont-1.1: CMBX12 1.0 +%%CreationDate: 1991 Aug 20 16:34:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 12 /fi put +dup 18 /grave put +dup 19 /acute put +dup 45 /hyphen put +dup 46 /period put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 72 /H put +dup 73 /I put +dup 77 /M put +dup 78 /N put +dup 80 /P put +dup 83 /S put +dup 84 /T put +dup 86 /V put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 121 /y put +readonly def +/FontBBox{-53 -251 1139 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 +B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 +AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 +7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF +20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 +B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D +68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 +D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E +26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D +F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 +77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 +BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E +C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 +30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 +148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C +E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7B00AD58FAF645 +1297991B5D01701E82228D0313FC7C66B263BC79ACDDF9AAC48A3CBF42B96E38 +583E1D059953076D68148DC8B6C9527B3A74CE7DEF788A11531F44120BDF0F61 +0B2F3ED94EEBCDE4ACD23834C242AA4314B9EF98E4BE72DB76EBDD0A028CEA9D +B4C38C1F2D24B8FDE686832FE96204552C820E45B6BAF0C3308742AE2E064C03 +13C2E5064E4FB036548B136509EAD0CE1430E8DEB4A519BA4D453CF1A9D08C0A +1370543107E6ACFD6B0EA546D6AE20957BBBD632AEA43F0D35195DD85E1FE38D +9232D3F01B25A601E60C7C08210899521C600251D5A7DE2EC34DEB235CF6D122 +C41907F1D0A9B6E6AA98A95BA8A978B7D3F0275FA21137935B1BA53E81AF302E +909F22939F91C57C2348E8E085DF39BFC1EA7921A5EFCE7C6ED845006548ABAC +3B1C34CEFF31F0CA695352CF3B5E0972F82341178F42A34B85D8F66DFE822759 +EC1CA1BF94BEC645BC4D21B32EB2ED15D19EE2856D554D227313294DB0B2D9A8 +C76A7C0D9591F95741D80B45E803788990332DC2353166D899AB085729208770 +74483B0FA3C2C60B3423B162044839B6FAB217AC35C6387DAECDFBF8A8A737FE +185F2FB4C1541B89B9FF8B93E6CEF5BB0F9B9952AACE0ED10928DE45435C4B4E +E447F1AD61592F900C77FB7C72E64A28403AAE2F4520310EEC70C446537DFDEA +DF4359CA2CE513D87589CC631973179DD6E1AE23E53921FD1A841A90D38F47DC +30F66556F7BF1E05CE14DED5C7089DA72C40B4C44FAB4605F96FD152371B93BB +49C5AC1285CECD661945459A5EB53015D07E10BA67911019F8C84A8823A7F4DC +A995D8B1E661483BF883F7463BD941D5FD7C350291CF305C9B2CC35131C324D8 +CAA9C155DFBC1150D23EA3AFFACA3FAC5D71CC3F076836DF36FA334FD94D06F5 +4AABC54D16F3AA97F6A164A3CEE5F8028F740300097018E3462AB81577E2497F +3BDDD1A974FE984B721DE8C6FB5D2831876A1C8E1AD143451765E99EAEE82DD9 +67B5489546BA5CEB4CEE8171F3964A746699FA3054F85511B71AFCFB8A6A143A +A9F126C167EB2C93D0CA1A648DAE70979CFF590AE1417400B66E1FEAF388613F +9451F520BBBFEEC6E50BBBA0177FD5430AB47BE66761F490537C03FF333C7821 +61AD6FCC384F6A5F4F07B2B1DA50B3EF8FEB9A0C73FBA743BE8695F0331F361F +F43A511C8FEB2274FF1AB3713A60DED4EB43A25435F5519000D68C78FB844EDF +952ED6152D650A91A64F870374834119B28233715E228D2E9EFDD1571DEEC597 +8795250D17E2796A3013E9E1BBB5ECFE2CE29F387C860B87DD499BCD15666004 +FD6008BC8D1A8D3F84B2D5F1AF0A1EA4D05385F36AF908DD66227BEF7BFF6BE3 +FAC8FC06C52CC3DDD060A4CEE689E2CB3E47D6C0575B6F3C73EBE28E98191F73 +8C8ADF27453B58DC94CD68437FF99F02A78B6A277304AC26AA9DC21511F7CBC1 +6A6DB6759FA5CFF28F7B1C3569C8284FF42C63C5CF0155AE7F42199E5A3715EA +BF65A939F173618C61AAEE1C35C4EC4BC15B29EB6A3799A2EC26E4B9D4A24C99 +0531D99928636146EEC0475A746D7079EEF6EA939ADC9AAC19C28116D2BC80ED +7E2F58792DA34AC8E65083ADA7D70F4D019C1769ED665A42305FD10CD718A27E +6679D78234729B44D86FBAAABB4F4E5A13189962B37D602AB9DBAC45621B3F6C +E6CFB15861F3BCA2F089D635C3040B582C0D5D25C361F7841DF3904B5BDFB23D +E0FEC3D7B55C5FF5CF4E90EE20744CA89D5A8B837F61DC175585F452BCC96A0D +FAD5B210F6C783C6F986B1B8273DCA5AA059251C37E68A3450DCE010B9348CCE +916F08B2FF702B996A7B965756A23EEBB57BF02F6D8784186A1009C6FAF71E59 +64F282E70158CD4C9AF483FAC971B3981B3C7CB27F6DD5444D7D451CF8617FC5 +2C3770567A2913E7362BC1B09B1CD05D47D31173195D01BCDB6D2FE2322F8A66 +E54B6C93DE29D1EE67341F40C0EBF6DAC95E0B626A0708B31FF688B35EAFCE3C +6FDF759FDEEC357DDF44028217547D0271C587B373462AD9069BF54117A17405 +A6B495B9C406B64F6652B7E0E40EB9526DFD4CF86DF6C294439A0F1F7EEFE9DF +352ED2FC1DBD2280A18BA536AE3091E02192801AF43EB47C1941C4B0609DE405 +163A8840C553CCBD5198EFC7843119AF94C14B24946DC1C0132B33A02D24CB61 +07FC4F69BB1EC6A1EF2C95FAF2BC3FFE6328F7DD5001257181D5692B7A342B60 +733C6AD92B7176EF777EDFBB0116DDB11D6314D92DF13611E2904DE148F8A1B2 +D85D274A7B0100BA1A2F1D18CA404F0268DED666AB2BBA006560209C1593E563 +1EBF2A9A26B2810804806AEDF9CA1C16E468DEA1AADC36BD103B004EB1BA1F8E +95DCACFAC47162CF34219106CC03D4D36ED72C85AD91971AA16B55F60CE62A37 +320CC49BE3D563BD479994EE19D79EEC05678D93181F4BCA9D5FAD21DDE1F9DB +AF0329CEED9E6C52DB5B43BBF32D54A8D517CBE7C531C3B7193D5C002B14E8D1 +9663E6ECD455F8F1F3A6EDD072ACA0B3AFD9EB7AD8BBBBDCB92BBBC9FA180941 +0C09795F34B71A0851B3063B5F1520D89EF0C4C8B19DD6B4C84D13AB03D65633 +28B6F1129D38D2F0751591ED06311D473B859DB02A515F431979E2FF958861E3 +22C40B1C707761E6C0DE45311C0EB08C39FD68D07F8D484FF6EEA6FCF937B713 +927AB4DF31A781184F1A05672452CAF150D26D6267369A4F704AA369D6ED09AA +B0D816A6B8DD82DF713EC1018029873D980DDD4908A943C8BFF6317E05B21DF1 +1967F084B0E38B58B03FF81FBB9918BEBC8BBD6090123216D9EC57FCC13D0848 +08F6F13155012058161FBE407900624CA6A52E4DABD28D10DA950A9F7BF9D3E1 +8DC09F3C2809B037154AAB286036D3496F3A0E09804ABDB0ECC63EB1E8C6CC47 +AB0750EAB7DD4FDB835C13754C5FE781FE2E80A0E59D439A0EB124AF87E12A60 +C761BE135F2AA7700EEC3ACA40CD473EF2C29CFD4FAC16BB8C33AD44821BE014 +0B3DAC12B8D652177DA038C0807D2FB91F7C200FCEAD90C54A6BAF411A3F0D03 +FDDE2CE9CF3FA21B738C217C159DFA68DA642FEE62F81BF4BD6669CD19C64E1C +A9762DBC3CE34CB63F927B1B97487D91A4734FE956A25FF52E890649681094EA +33B65342017CA48001BCFB6553E76BF33D486C2F1AC58385E34F5F9CD17CBBA9 +18DCF8A07CE105E3C8E2F68CAD80973CEB6DD6A3FF621A0C497DD4DF5196088E +733440AC2225592C85419F50B8D9EFBF003CAA40B351ABCC8FDA09C672EBC90D +5454021DE4E83F88117E12B84F944EE30AF7188428621B9271731346928DD626 +A270543570ECC7381DDB6F141272A319024773908C7ADD9A6A150A419EC46907 +6B9A698E94EC5FBFC60AF0C05F680C9B31A148136496DAE7E06A8D41AE456D48 +2C9A892F0A84D6F5181F097ACE07A931C95003A88774CF0C75E57F3CC7A734E3 +D1D8E68218BB49ECB1228F36C54240F77F68BE47651D92FB90854F7C2B0BC424 +301DCBDABB1C1FF1087A123C085291CFDBE744BB6B9E4F8A820777639487502F +CE9777BE51B8744B00BDD43C323848D0EDADFE493FA998B9C64B9A386FA56361 +D29C95CF34F98A7B5C5D5EE6677147E2A6065636D4614582EBE08B549C3E7011 +8302A5C55F198F793FEB51260A86FCAEBB4A6F12053A64E91FB8FE2127335043 +F56BC57BD9B7A218ECBC579694F22E154CB708806AC19D8A352F2032F924327C +E6E85466E9DDE0BA73A253F08CA279D247BE984CAD4F99AC5115E803A5F9A65D +C978FA3746431F7DE3E7603489A44A582AD05A715AABB7E2F510B7554E487E2F +039F4757BB77AD428C8541D11AE29287344C04B9382C41CE0E848BEE3557AC54 +05150D36FD87986612C5C7C563124004EA1AD708708FDE5DCAF3E196D6CF668B +6E97DD480EE5516C7537760D8D63DF777276E73F2703040CE8FCF7AC2946E929 +2F1F8FE8C6423C49CA41B0476ECA2FA84C7CE4B7CD68B4E232FE98DCC13A9749 +5CE172E850958BBEC4B9571950C359EA9BFF6D45E6158F8AC04829E87D485319 +02A6E7F7A25BE0A9C9FE1AD207AD692269B85343AE3A4356B5A3489683573FB2 +C3A09BE61A6922A8525C30B098F5C1A6A6828B7DF472A651DDC28F2CE8418BF5 +FC6EA6EEE84D345ABB8299A1621B19A457847BEE09FC71D9BE3013D8651F4CD7 +39486C39D7B050BAF21A3F7079190885EBF54CC0C60069458115BDF081E18C25 +D9B7267530E5F6D6EB77C81140B5A824BF1B5DFE96521106F3219205A6A446BE +D03B70C432FF3F25D6C8958989AD94F14FC06880D039EE0BFAB7EF746C48D448 +C7FDC91826DBA6A3756F12B9F7BE5AFAF2541CCC069402766D6D331014119053 +73E4FF09272389AAA61E9E99E2694B09BABB59E0D5A4F8F71B870A1AC9D8BA3B +170EB81339F3B3EC3C5133AB34B13695F42065E55DF4EDD8312F78A44D088342 +E31A30C6E4719931EBA51F917F60ED594F0F590D4BF6C99A74B0CDD3947C7176 +326FF92DE1351CBB50B88FE3194DB20ABC366AD79480259FB7F6AB11CDA44C5A +3FBD301396CE1A2C030843D69A9D32A1A008B3B66AE82941E620A9E7B962C7EF +59E5B3CEA2618E69D265CA5716C0770C081590CFFC044FCF02D37B592FB7F0CF +3A70884DA16D0DFA619908C729184959F84522BA144543350C44E5673CDC23DF +3D2704CE4ED07C1E5D810E0B18861A7ABA52634597EBB9492C9C9889F642B835 +9D4789E637CD54B9F91811CF3496B3457368EEE9A9A6DE2008576A1F935F63DC +2AF34F2859BA1239814B4687E454F4134833EA638EA5A20996991541EDEF8753 +A7EDA763C56C4FD440F3D54B9F57E2CDA2999646BCF2CE002E9DB075F5B45081 +E698CF67A55690310A70F49DDD8A0F0944A48F16AB60C990C346EF863C84441A +347DC73FBF7F46EB6D6C047B222033E2C47A5105203D702EBC91A344D0FC67A3 +E33EED60E68E8ACE6700F33167F971473B5302C529248F4F9A9AD263AAF1DF32 +38C21AAED0DF94B087128237BD41AB40F3662B541932A2E9E851B2262A6CF354 +4DB8993F250FE4533FC2C8D52CD66CEE480D2136F2F1D6E98E0A85597F84418A +3748365A6AF37CBC624166F801379AC1C8543E3E741239EA92D4539BC5B31F03 +0BA0887FE98E8116D143C6C17A83B834FBB55E881AAAE75EB3C3C2DDB2D5DB7E +7AB1C00F8FF392EB7E676B64B9EEFA774F6AF239FF876BE158906764A5AF6480 +B0DF4C5553F8FF1AE094E8C5CB48476EE34B1D3CD20D7F502BC49E03C4FAD6C2 +D4F79A61DA5340F401707AD0005CA2A0022D2AA21F651E9B9EABC388D553A23B +D7CC2E8F192668C93A134D3EB8686F297290C51C56F192AEB20CBA4B6A05E51B +74FE6DEF2E6308F2E8CFD0C38B01D362362205824535E826E154DC0D7B6F4ED5 +7FE86772AC3A8B6C69E2D7155F972EE2FD49580EB15337301E04694E34C2A63B +1C3E3F108B90C7728978E159D5B215E5C0F48EFF93A57BCCFA02737085CA2467 +849195BEC7831A4813EA85E69E6FE5B2D6955876560182899AB2131BBA579D0F +5A82372E80CADCB4760CA9806A6502DE1726EA06E8D2637499215BCA41A4CBE2 +6957947C43991A4F96026B3D3AC9D7DA0F62E8E7CFB78F3755CD7251E45FD8C2 +DC940C5567A0BBAA40720933E02096CFF49A78096EC19EC8A871C119039B5690 +8028E8DA9683BF7DE0CE57DD65DCDA5AA5F4CEEC77A41EB5E58B44A23B54035B +FD9CBCB225A01FA468FAC2BC73211D8BA007D4B503C4F9162656E8302396D3D0 +E4A8102DA684FB5987A8D757539ADC071989A25FB66401FA47034C44581DFF55 +4D3DB44CC54B1284491DBD523520ED0E9D0F6D21FAD634A588BDAB15E8B62C34 +36010545D8732BB30511CEA387ABD636516732CAD9B8F5AB971F489FA9501A04 +482E9A241E1F1922093C7001DDB2EFD42A5AA2826DFCE05830EDD3E7BD069885 +53E46E4F9F6EC01AB0A20BBFE033CC8105E6558D4996F13894E3999C25AEBF26 +0A47BCE971583673197E22F249BF7B3EADE4EDDECB5A8ECB86F50D47F78A8592 +9F2C43682A03170D47B91584D0800AADBE346C3D08CCE6FF70ABCE7D646FC56C +28B95711560A3F4B3803C18C315CBDA5BD44D69F8973F6D6A4F27C174DACAAC7 +BEFE1E513B08116AA34D0C167F2DBC897066A2113241DE5FE997548CE28B7216 +2C6B9896642EAE972A72829FBFF750B6DAF34547BA8A54412C7C53E50EFA2E78 +1C072AAF6B7FDFC2FD19BF07959962C8D09A463B762554843A34EACC39B6E021 +9F5B586B9395074DF8572FEFE494AF7933E125011B9D4265F521D0AA2D37F7A6 +AB040E4C00B86DAD62FA6929320A07D4ABA5691E094680A22E2156337C62E15E +121BFCAF14427AF48D8CB538436C833CCF2635393E5D2C8CD666D2F188231D93 +F75682D8FF364381AF8CEB55476FAD7D14A1B3A86921A5A850012BBA93218464 +B44A46E74D32EC3ED17B1BE5F41D74E614B41D50E6A8F08D4926823B0C889363 +2BE97270358E195A3E1AE699C7A797B850DACB10AC57BFB41D882298AAAAD47B +BC676BBF662C072E08C34A9A0344ACD6C36EF6367091DB6E4134201A0D0A7C0A +7117C901573DD3B4BC619D81CF149FDD408E98E5FA17AC582CE6495EFB58E929 +6B38BA324A22ADD8F039901126DA7C567DCE65530F29379FDE5DAB90B7AF8EAA +93D2CD1D6B93D8036305FA2A27B34EE19694190FB26C4F0466B705BB6CFDC04A +58649C536AA431B4D3BE8708C632362B41F8328F465C79EB988C2487FB850B23 +B6CB90FA4AC671378123F1310A3CB8A744F0C52ABB552C29C5EBC855147D6648 +11F7E33DD8D16A0297DD44AA096CB4AF525C159799FA63A6DFCA438217F4AF62 +4C0FAA45A57E4B64186419F0CE002BA8AC5C92920B78213B159BFC9E884D6C8F +C86A77F1E8041E90D196EA521B6BEAF9F5B24B407E08FAC327EC2BF29C6D553A +1909847CE6F3B5CE06CEE18D8D5C067DECE9539BB0F4E31429F2E022505DFB8A +54443690523A0D3501F699529EFC9C7E24BF7A4438D11CF94174EC0973BAC945 +32E3E36F6EE62078A54CD1D170BD414900BB960ABC4AEDD0F7F59F7BFB1685FE +A8ECCC7C37E078B8BC539B7E936325A14A0EFABFAA5EEF0D45C7FF71B05DC281 +09089CE64CC30754345B006924CA02A837BA1CDBFA960009787D42D1E41BCFB3 +CCEBA95672396D78EC51042E0C4625F6598633F600F261A80235BEB56C58A3EB +ED205E020B4EA27E94D2A9F8B285858640437FD59ECA9702356554B4AE732682 +5CC791971D3022D6603F1B74130D445B5F3E5506E4A43F32F53AD8CB8B804443 +87417A6AC7BB699DDE7A7A1DFA2718C9E15846F0B2F93E0167E6FAD982A27B7A +321775ECAC4F754CA1B31B301BC04B9B6ADBC8BEE1B6E9A6E9E8A757409D383B +16DE94701AA9FB5ABA8F4AAF2E837264C03C404A82C7325EBD039F84BC1D26B1 +B8CE48355D8CB477C3258967584B6F96874145650C67A02CDC9B8E6A650CF202 +BFEA60F42AB20CD4D5186E538496CB286A5B1214C6091D9F3578793B2E92C70E +5A8AEE69B0E231B4DB103B55A09E9EB23CDB972FC4523CC2E308D5414A41D7AA +D474204A26058BA8EE73EB67BC853B9054F281E6502C0C7974D2B2B62FCE2783 +AC2333F9F368978F6A176226B8DFC549E39408BCDA00546B8C722A872A055485 +B15A54C4B85DD07CB35B73A2C0E737B5B2A1FF3552E6343155EDBC8A99BE7E68 +F7F1D6D7C6ABAD3362058555D65C4297B5C3A413E2E0CBF52C7AD06D2D09F7EB +3F168C29D302A80C12733DE283EEC15C1627EDC01E27919E5AE0DD8F3B1BE62A +6F5D87B84E9FDD5E9FB8CBB4F11EEF7AF43D9FC2BAC32E036692586E597B27D4 +D185FBD9FEA7D046B74AFB4196CF5076780651A505A0B919104CDAE6A1EC9C85 +92BA6F1446FFABC3D296A9DB02827E29B4C92F334DB756EE76360EB21AF99FCB +A20A4BBDA16D64E16C5169936ADDB2FBADE60B77A2CAF1BEC80B1AABC9955128 +EA4BB285DD06F40ED0D0AA7E78C4939556395ACB463057BFCAEE217F45BEA317 +09568F6AB7745F4843FF77667960C9FB70C93ED996E32863C21AD727953749A8 +CFE1E148260E000C4BD9CFFC417C564DBFFFF052842D55FCA7D7583F26154F68 +608FE787F89AD663E9BC56B2D99F822DA2D7159D9D2EAEB104AD3632EB9372D5 +7B5B52EE3456C394D713CE8576CF00CBFD5CD6E36FCC2D4CAEF4FFA2327786EA +A52DEFF2282F0910D3DCB80564B33BE82A9CDCF7830F3FCD26DA16434E875B2D +EBBA68588F1FB3051DF91E2A472B22435F9485E47970F530C09D6F80834EC05F +919B2BC0AC81354A9714D4E0D86B98C788673E66CF8FDE6E71DB02E84992BBF0 +015B844D82089A445BE246CBC4F594DCCCD9A061F06DF82D6032B6766C3CA618 +737A4B2B77E02B6676EC1FAE5B581EC6041B203EB29E5C283714FAB41CAB5FB2 +F7EE493F5C340E3F9DD75D55206C380E29AEA710700220570409411E26AFEE04 +5AEAF8C66DE51744E4F0E68756813B1D83C784D8C75B66EDA5496C344DBD8458 +CE4C3A4BF330C67D3E07A40610917D7033A9D4A95EE0CBF09D9A7BF34B766886 +2A8AFEC912FB362355DCCC05FE08EB6C777C52714B5E762CAED332D44CBD2398 +CE9501E630E08692B0F80E10A7B9C6210C94DA7D37244823C08D954DEB16922A +076AB888FBBE54D762AF975A1ADC5BA78AB6403621C368A37E1C3607978BFD0B +C758ED01EBCB6B64CDC7044981DC7868C9B784A94A6CC8B046A79712773CCE41 +361785FCD1834E16D4FDBC7B2107C298C988C8540398740631EC15CDFA8BFB07 +1013096885A529 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: LASY10 +%!PS-AdobeFont-1.1: LASY10 1.001 +%%CreationDate: 1992 Oct 23 20:19:17 +%%RevisionDate: 2001 Jun 05 20:19:17 +% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.001) readonly def +/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def +/FullName (LASY10) readonly def +/FamilyName (LaTeX) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /LASY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 40 /a40 put +dup 41 /a41 put +readonly def +/FontBBox{-19 -192 944 683}readonly def +currentdict end +currentfile eexec +D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E +F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 +1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 +4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C +705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 +B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 +99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 +87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 +B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915AC9272AA4A7FC35A4 +93A7A0CA8BD1CFA4382085D949EE819A51062591606ECEB5B37419223CC0400E +158F1A0849868CFAE0F71DA6B4FA47A636EDE756530425A6BFE45B8080808B59 +6B886D033437677B151285B047C84C2E2FCB71CCDF34E20E925269E5F1A210F0 +391066823D8F21E03746BF79AAC6FF91517631686722226462D6A9EC5FFCC806 +B959AED95F492481324749E00CA117821C347F9B924BEC8C64C954570252E909 +5C33AC8B1320BB1992A88C619DEA7A8FDDE42390EC82A07BD8BB7F0014A41EC8 +04225B5063D3F04723F51128DE8ADB79F62903E1955A7D49220223CA34FDC3EB +8FB71700EB9CC40DF747C4CC60AD11D3FC038CB2051F7E97CF7C7F7D0F49CA1F +E0FEFCE664544CD1F7C23B05BA649D373539E7BCC761611C17489084912F77C3 +5FB3BC1E91E2B4A47C27BF4989C7703E83C5A505108037DE5006D4F510B8FE1A +570E42E4569FAEBF66058F9D9608A771BEACA2A8AB629DBE939CCBBC116E8BCD +BEC3A33CBF185A68DB60CAC5B21AF4D9B46B3FF4FDFBD6BC3C8101BE15E79245 +F0CF8F670CFA19ABC08C34D85B10C17190497EACEF6E401F322B1E281C1755F0 +BBF9838AF83A0A1601D78E78FD599819762347A77C71374AB428093048E3F1C9 +40CFD63B86C7F70BCD2AC3092DDD3BC91CA714BA28263EB863D5E6E2DBD4FA08 +6B22C1D18B16D7042219B9F0BDF5BF10AADB658CBED51C8B272E4DFA11C5A603 +8B4A437EABAA699B86819EAA072F7D90A9CE1B52287DD3D26C470BE0A8D8ACB0 +5CEF12390D0EDE45B1F5B2FE4ABCA8844F713CB5901221BBEF0144FB694EC8A5 +A5E80F582257A84E0FDB4150D9EA8A82A434C5FC1CB93C7F457B95A68E52F916 +2B90E294A0C787EDA95A4EB1F978ABC0A8E1FC9128E7605D591F601BE0B37F6E +E1786F2302F2783D5CDC07AA5F3A20101D527E22B8D689A3A60B5993894A7038 +E068BE74CA3F9CD7A33223131E6149FC75A1FFE4E1A12553A8B8DA3AA19DF672 +D355FC0E824840735280F6D4BE31FE762B5027E292F82AF13EF5CBB0633E66A0 +950CE5EA51EF5C6C7FD1599353416342E89607998DAD7D6A8FC650ED12369274 +4E9BF9AFEA1822896412672B1F9EFA94BB86BEB37F2926B7BC7E032C71572F05 +C203EB5E44E55504D98264D3CF7A77F62C183F65364525AE9E84511F4BB67ABC +164068BA9321842E23882000D27069B07181EADBDAF4374F7FE019BD6D9C88E2 +793462102092A647D903EDE28729B02369DF181C898DEDEBCACB047E79B284F8 +CABFDC5B460D9CD7C3D0A7422E6268DC3CB573DFF7304841C3557355B620DEA6 +74A36D5AA575719613 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 60 /less put +dup 62 /greater put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +95601766777978D01677B8D19E1B10A078432D2884BB4F7B8C3293B68BB78100 +16724E495064BA0168CC86D413CB48560D6D318357397832F7A858CD82030C7D +8A4A1919716E8B26AFF8789AAF489EE4E0A88DC477551A87C7DF2856189E4596 +FE015956AFE5CC019F5CA6323A12B763B7B08B92C1A2940D3C566C43729E5482 +63C6DC5E834AEB4DAFB5AE8F0B8931A4687C94D11587B9071C8D81DA14F12776 +53A1985A3EBE37827656BD4635E03F09C3231F906874645E7DB3E59045A59D67 +E745D8487CF73FC50F64060544F624F357BC998A87FBE468DEBB38A09449EBCA +D041D7C29225ACD16CB8A59E87924D15A9125F064710A6CCCA3AD3103D8FCC94 +CC3571C6F9192774FCFE5BB42A14B27960903144D28BF047BF4C77646EA7BF6F +440D4EDEB712C63F2E8080419E42D1D58EED685EB5CDD49F80DB6E5553B519FA +C6A39A093155802F3EC607721F390307E91ECB597ABA60A537E3F8C045BF5DD3 +D88CF6518D37FCD95D2F295D902D617440D23516D962F47750A682A319ACE1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 11 /ff put +dup 12 /fi put +dup 14 /ffi put +dup 18 /grave put +dup 19 /acute put +dup 24 /cedilla put +dup 33 /exclam put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 58 /colon put +dup 61 /equal put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 72 /H put +dup 73 /I put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 90 /Z put +dup 94 /circumflex put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 +0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 +B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D +AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 +97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 +FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 +20759B6A4C4466E2D80EF7C7866BAD06E2A1040FAF2DE1FD6AFD5FD97EAAB614 +956897A7BA8B194E613047BF469C7B4261CACC1DF1648E8A86E926F8702B5ACA +6CEB4E3E85EF23EF5C9C53097F3BF17243B8D4BF0E6B0C5982FD14E4E916D363 +E265322DF0823E9990F966A842ED69BADFAC2CD1754FC84C0FF6750D2373F997 +362DDA16A0D73B178FB7B67307204AF174AB871C254B8E7CD77058113B702B2C +13F341A972B67756D65C6A9F553C365E20F0BA59F8537C88E0C13F87CEC69C9E +0775F760C4EE10819388782A2CC2E9C000DCBA76E4EFC7B390E50611F3D4F6A9 +CE60FC3B742F046E84B4A302F5DB51092CD59F103DEE2910757696C3F131517C +416687E6DF671911BFEFE08D1C5D0B16F9302960E29760EE101C5BDFBA4176A0 +260ED46500F88BD388506DA361B0E9FD796196E66B332C82CFFEB7974F9E4428 +B82C64ACBDF865B4356C4E2C8E6ED840AD52C326F7D4869F5BFCDA189FE81641 +832D1FDAA78EEEA4F41976945501F32BB383455467D217777DB74219F49EE8C7 +89A9BC7F63500C8A735DF316A6823E6ABD3D815E7369EBCB3C06B404819E48BF +00F1A4AC2AA9ED69D6A974D6BA21C4923B7B93F52AEB5D7015E7FC8611A4E0F2 +A5242C167F9F3A9DE6EB0786EB41F72EC2051BE8C69BC1B1B47F21FA1BEBF913 +0D7EC2A3169AC17909A5BBAC615E64359C00C372BEFA892491D23712AF8C81CC +E4FA41958C4AC483487725FEFD17514840A8DAED5656D30F6676EE5B168F047E +593111CCAD76A790BE700F40845719C742C604416C9BEF74E50B7FB02CE92C8F +5E0304486FF092FDEBC48FE92F1F52FAE037C4B1732069467138960FC946CEC9 +B00FD964782929B9AD606B2AAEDF7500359B651D48580BD33330FCB2407ABE56 +D006C8BD1BDE90C70ABCC7D3B6186DA6BBED163DF48D7A8B32CA1902B754E7D9 +FC214E64D31D5AD5AE0B3173DF92DCAE433F2CDE165599A1C215236AC9534751 +86BB44083AEADAEA87780CADC3AEBF28597D3577B2DFCC3322B4A0C8FB994DDD +A42FC7D1E078FC6226E7E00E79197F001EEFE43DACE61835F9F2B68009B65D20 +582467F445293736BE2E3E2C0CF247224ECF9FFD37BCC76EDFD31368D2F26B8B +5EB0322B44FF635A73A6936F73859582F33AC1160F6616E30499ED3896F2C687 +4D6C2CC91C1BB8DB13F27E1CB8F68A2E38A842C7467137A3435F71A463998130 +CD5836CA448E139EF8FFD2E4F5F8D7C0250D45A42B2419EC7A7B3B0BC09305F7 +CF0967E85B2F51339FAD5776CBFAC932048FDB039C9EF6E90A79019FA9622A92 +3A5E8EF2336DD18F1B504E989A98F4F9501DCF69FCD920AE53740A9F9D70195E +C25A9858529B445A93E3A2E9C542485F86983F69F2D314B33AAFF216180EADEA +AADB62FDC1625F363D784CB1E372FE3BBACA8E9942D43400E1CD716E472C288E +DF4AB8FF861F2635E835B3EB01BA56E16A9A50BFBB44CA544C1F8E8B4937809E +EFC33FCDBF9B0380605BB91032980A58E8451B04C9C5771E2A2E80F0F0980DD9 +505F6C8B216B39CBA66474ACDA857B80BD701F6AA093E2330D2F7D6CA6A129AD +911EAD4E5FC1818F6A4EEDAAB5FCB6CFD6582C82A5328A129014399BE8217004 +EF372A4976AB13089DDC03C0061932C2954E3B3365E4FC98747CE4E05779D38D +BC544D15C2C0ABBAF5D0374F4751EC5A6CD6D7B0A67E51EC762805E5587BF103 +3F9B3443959F5A9C1CD11891DC55FA47FE954C1FEA592BEFC735A2318BEC285D +14F4C4EBACB91CA7C4C3E0F076C5E0310C357657628032E94584B384B19FE322 +5EDAC73733EC192187F028F3F6D9AB27140D799D45924A38683D5F92C8C6285C +9DE66A0A9ECBC9F59054D9D03CB913E899CDD5DDD755566EECD5180DB6BA4510 +FC244A395EDB3DC1AA44F88E7AD74983B06C93F19ACA5D48572EE12B23BBB1AD +6A6FEA136FB1294B0E12F6DF56A9A0276990E3E4E7027D41DE471FFAF8117FE5 +3DD9941E02B6750797BA878A153265967EB0B29244729949C39522311BA05F38 +A0AACC9E8978BAA786C7F85D3C869707364D7FEDC5737126406895456839A067 +CEF34760D0ADB87D95FD034D026683B786E131486360D8FA0E9573C21990A666 +CEA3085429F1D569FEBA7F02CA32B3A8A65885FC25ADFFA3165CB97DF5E00730 +8F32E045C7B2A5F96DC270F846FF246662864F0EC43AAABD94006F5355AB2C1F +68A8284D6CB8974514BE0DCB823A943D67D4ECA2C3DB223341C9CB09AD81DF89 +1D8158CD2563121708A43560AFA3396D61285D2BD9043CBFABDF2A75B91DAC3B +FA2276677EE444C08EF8F25EB68F625252C73B6E57B1823F0B7E3B0539DFDE67 +92D7A8B391B01B53497D4A5ADC5DC56D6CE71E37D93D1F246A7544A19B266593 +43898136491179CF62265CEE84A98984C40FE94BADC196EEE5C2988321E8AEB5 +5E6D5AF54AFD6B1147E4950F9D6BF4D732DDFA4EC5867EDE061E3CAF13DF2021 +96D14A9BB98A6EE506D001069DAE8F592CD7B85564B435F0B1084C1CE10D88EC +88A74BA11029B60A80FF7A0C3D56C1C17707DFC270837C6C6D85DE9D83994D17 +3976A7E98C34A11CEF234FE9EEF6DAD47997596841AC39AE5E18BAB55972A5B7 +0DDB5BCB504035380E2296270A47D69D7A31911CC590F71C776DD313684831F7 +7221CBC90AC921247C320A48A90B387924D9FD599049C421032EC95E9482B010 +944BDE291FE248231FAF0B13E5139646142216E116C57F5F3496D7718651E19C +57EB0BF3C8F0CE8B4E10D5EE6BF9B36B9DC87420973E17B3A05B82CABD297239 +80D7C6EC0C13AB1B1FA48BC6F119C99C90C725677AE4015900AF6B1F634E461D +C00C07AA2B22CDA45C159A79DA4168112FAC556353A31259F413649F77B45ED6 +4189237119A17374C20CA37F477EEA80922E6E22E2A575C481A8129AC41F4654 +0AAF818B4CAAE9DA11DCCF531C7C9ED757C33FB40363BDDD80057795E259DC14 +5FA1BB9A5090B21C92782C688D6628BAB06C516EFF0DC3FE6347146667868672 +415B8A6A89172FFF885E5C9A2F01D8BFFD5F057945D2C3D9A6AAD62735739AB6 +A340BBADD7C15833B367957AF8F44DDFD6FB691F0F1E4D85F84D80BF2EB42066 +0B67031382586543D505599808B1D46132BFA5B77FBFE9BC7B689ABB6E899B1A +00D56C8AA184A7C734911F19DB34E935E2087BBC0D15BB529036BD73C24AF691 +BD3242631C7541421DDF84AC7E9B7349DFFB2DD5AA11C917520DA78470C46542 +1E9E0011C970C7DC4E65861747B9C12B1631B157A0704B91A02DB671EBB5E386 +940A6F5939F20CBF99163DE8BA963BEB22161F612B314CDBB6334213489B96AA +621444217A5D1435C143479B47FC5FCE3AB0788D729A4A1F029DBC94AF166731 +B20673550A5C9489DE639CDFF1AFEC92CD5BCB00A0406230263BFF12FF2E0157 +C27B3C331D859E29EC39BFBE3076D9B159B269C71C110901CEAFE0B3BD833029 +2A4692ECC37ABC5F3805E7CA3653C677C95E59456724F6562A24624DAB7C57D5 +7A34BE46181B52DE1D01E2A2DA8222E2D31BB40AFB3924D79354973F7A67BF38 +BC4391960D23D0F317FCA92F0191E51ABE703BDF07DCD28E2FB77494F6EA15ED +38032FAF4E90CB4F75F7BD02E2A8E79530F76B4F0F02CA602F31D7E5031A8953 +C6F3C38D25AD19EE77A0F4D3CDC17BBA141E72DB6EB331A3B0B50A4FFF737D8B +455F934A56F51A5A4D19ABA0C3CEB3B574AB1A9ED80F40BEA61B2AEFF7EB98CD +4B6A7F2E414E89EFBA4CF541C1BD3C0697C39C7338B6873D4146013AD76D03B0 +6586C68D4FB8E60B7A4C3A40AA6FC93C39CD37577B72DC97A150674BD92349E3 +30EB87559E38082463B3ED0203AC8873F113BB08F681DEB4870075F46B620343 +6A1953AC9EC496BE435CE6DC593152EEEA6331CB9945AA4FE008937E16A9F570 +3E2A309C5171F683CFE26DF6836EE5FE3A4DD04C4BDB109D56832915B9B32F97 +F3B44A5D327125246A5BEB3FD21BE265ED7B5B1674922F26DE19C9F7F6495444 +9DC6F6D13F371C756A2B862AA499032BDD961BE5B4527B45C3C4D74E23260CC2 +944798F5AD2DA5DF397047D040940B8C916E7F272B21734BE30CB5E59FF211E3 +7EC389FFF7D3EA7358DECFC374280D67495C695C6EACD289C9E7B735D5DCCFF0 +36A614F61465ACD63DA0D2FFDFD4FC801E1C93EE257A04DC26AB406B149815F6 +21870221DF60CA8ADF2311C293B41CCD15E75A0433F057070C25F0D2EF94E4F4 +ECDF23A7D617EF72B213A03730ADBE66A54B1BF76049CBC3A3F035D31BAC2898 +63F269297D946552549A259B9C9601FA72E45AD8F5D0A7FD4DE2D32211C92A41 +7E764DB6EFF62D7CAC71DC4E92BAB291585199A4CD51431DA91429CE4127E30E +EE8FCF90605AEF343296596357A978DFC772DEC9439BABD866E794CBA07FD9B4 +F64283A6EE91E42266FDFF7CD69847A940FE7C0181F77D55A07A16ECD9AE83ED +91435DC75F6D7C5AFF4DD7A3C20EE0DA4BA99FE2036A7B7456AF936659D9FED4 +FD1939EE0AD25B550E8A655AFDA23EF4DA39777AC2A04890F29C0BC97DDBAE9D +D6347B5469A0EA8721773CC685F7066FBC2E8A1574559E8F2955397CE23839A5 +7E99457317916D57AA5B35FECB0706FCE9914535A0F487831925E4AC4335EF33 +66890184550188AE57854F3ADD15A0991E45EDA27974C06E74FE12FA49A5C2A3 +F276B5C2489FB288F49D072C468FCD9037E4D99E1C40F18D80D1E63FDFDC427B +660E4E36851A5D4A90F0E5F2D5FCBD2EC830242703F36BFFE66D61E50067A882 +A10E0CB20C81B0792A5B8EFE9302969644803E04D7DE8A7C24DDACB4563B604F +2FAE7D6F5112DF03C1F462E4154EF4BF0D8C09416E3805B036ACA990D432DC7C +7C8261DC2118E6E9921AADB908048076A12EA72E4A09C1C0916C88BB39677A04 +4563356556730E59164F949D62257E34B3036B22D454A3A61409F21CAC5544B6 +D3A94ED495AF043EED3EA880BFE5382B6C6D0B2A84B07F4DDBFF7B9A9F06A305 +A5227333C1A529E5C968E0E82E02622EED266332A6E033839A194FFB188B1947 +67AF109D37A85041C61A185E5A1023CCCF3D15BED794D8EA7666D35169031B0A +83A96D05B5E7D059BFB292452EAEE5EA78201B3A698086B3DFDDC56D59C0895C +7414F9CB0FFF74536B9E2EDDBD8D56357CC66EB7BF793C2CDFCD84B573378D4B +7D2F6E7E9E4890714FCC9FE519D33171DDC13689CCB9C6E08D6D4ED46EB6794B +D77251233A6FC717E811D800480690DAA62C8ACC2B5AD4958DDA02408288147C +19D919C3496BE7B150C321791081AB9EBEFF8FF49D2F51728FB366309CDFD835 +D0EE508C80D162DD9D64028FFBC05E8F98CE0253A8BB2A4C5D3EF860372B08C9 +10D9C2976E41B0DF1BE7A40B82078414AB72F44BE8D34347E10CC21A9A960FDE +9F8BA277A737A8B18F92D066911803886463A96BECABC509FBED1F053F58DF79 +27CF6A1BB379DF14784B2EC04A4E7D8DF6C3036697CD6285F02F23F61B3EB6C9 +2AEAAE6ECD0DC3FB6BF56ECA9678770446858BE8533EDAFE2D4CCB5FA1DD1B8A +7C4957E1FDC355445D79897FF7CC04DF352E6D87B8C72AE9635507B10B626EAE +FE63366EC0F60767E0FC4DD0C209C37E82D0FC40C3B36A2F5FF778176884A376 +5B8EC65A935F3326A9B2C27D8F27EF544D823E864AFE7CC3E399FA2F2E563097 +3D9BBF566FD818EA4305647A74A874712471D15108027C8881D9795177530DB8 +94D463FEAF96809727837C8CD9696E0D2BF53DE8D57A07F6D85A9E750B157CA4 +F4AA6426346ED5B82001E647B58614E1E76D57EAF6455617C43942D4B05DEBE7 +B6C682F9F567ED835EE288D289751F359AF7BE222268A6A3992699DF1C91C0DC +A04CB2840C4DA5AE2CD0A12EB0CE03735640EAF0AD9228EDD2215831550B6D33 +C4CDE9DC1A15CCFEDBFEF5CDF6114D99E3C558C01FF803B4C21805A4525E18CF +238164756D0F1BCCE87DD8077C8FA13C6AD8C761B5D76A8295806E530E5BB17C +8786E0C335371447342AAA37FF1B887958B720AECEF39D3DFB0FBADB7C9131F7 +A960B7BAAC9E37B76A85ADAE8B9261355A27DBAD91E00C301064C9883FD76985 +F58AE44E71A981FF35256D93B68260DCC27BED91A7C28C804784A04EFCC8A934 +A4B30BECBD9AE562F6EB682BE9F98BF17FE8BD62A64053EF0A0F211D4E7C9F8D +F31E5DF5FED9C2ED9F3B975C8B8026CC85B94EC649D76538B2757E08277600FA +0EB1607EDCEC8CA2634C58D4DB7F1A1233D3321E19097C8E93295876C0D5EE44 +5EC69BF603205FC7A32EC71382D6BB7D119D593EA158DF5BAD228CDB66C6F6B8 +2FB03F1DDC1B3FE3FC644E7C6072993BF25FD5DE26A114A1E9145D638C8A95C6 +AF48BBEF411D550085F04BAD83701B754C8B7FA377A00A59611D042732997CE2 +913727947DE68DA049D61363519AAE1F608EF8B06DD1E4E5EB9DF23219A98D56 +8D5C93AF071CE20E738255E965D39CC1821CF05928A21D66E662BDB1E6089A8E +D4F32DAB2AABCAF118C85FF17E8AB3B735E91E90FC07F84842C1467501B623C6 +4297CDC14D3D6F311C1B03C3E89CF6C02126BDEA141075AE10C7A6FE9164837B +ECDB43216E61AFE41F28D9A2FFF96412AA7DD7D621BB96A834676EE18BD6D6CC +1279613EDDF8191641AD1E5D65C77530A1C553C54C272FB12D34C6767FB8981F +C39A3588D4A3BB12CE53AA32B141493F49D23105F94365BEE1F5AE81B91504CE +5324CD2081E72CCB8FF5D9A0EE95A4A44EB358437D2CFFEDAA7E2022BE555810 +BCB2F1F321D87BF06F840C73FC6FAC2C8116ED530556C0CF5DA5595E10229A58 +C89DC8ED385A0A64FFDB5AECEB502354D9FF152C047371A96C4800CEEBEFF331 +BD0E4F7BFA507C6676B0FC809283DC4F2CD14C6490916D07FB2BD35C784C0AAB +A786064E65B87DF2F71FEB03ADC4750633F8493E16152BE1A3127F16AFACBA96 +32B71CE871E3C7AC466EE601B4119AF454B7819E06D400A017EBD36DDB4CFE93 +9CFA6D66C95F88AC649D468FF4528652949C049CC93C681D5F4D79501C664FED +4FF3CCF1033BFD65F94222F45235A0606524CCC728EF38906DDBF57FFAC469E4 +DD554A5407C8169C47E954FBA8EC7CCF65278F833AF690F191608E507417CBC0 +7E938578EAD15C2745526608B71829E327C9A841B9AF6CFC373E070BB6D45E6A +9CF939CA5B6704D3581DA8D0125B07CFCB1D3C3420242D77B98DD728A263F898 +C89FE77D8D6A60DD6A56486721EFB4C19A44829DF70DAB6EACE3CBE46EE6DA76 +2D6C5C6A8978AB1EDBE79B3654A1F45D1F5D28E7E28D631F1A1ACE0B065C1B6A +906F3335A11759333FBFB454DC2D4ED0E1E2DC6CD4F2400DC384A059FC3C9E05 +279154B5456FFE9AF248C5B9B3FF3B051DE80C0EF51F70D48A7518D5954F90A7 +18E633478D4AB1758BA882F9027A3AE05A61BFA2FCB1EC5108E416033E78166B +F5CEB7FA00B24FB99D6A8F4D1554F9B36D2E65B1C13FEDA184C21962C81C9AB8 +53312F75AC7DA7BCDA2749B5C4CC6BB13F259A8148E3DB5F54821C3FC7D201E7 +3C9FDC0D4D174B7BA121E3FA4FCD2F7BF0572C9C02CEC4567F13FC51E191EA2C +DCEA62F78EBAF4A6253ABE48B0FFACECD1EBD686556D37482A5264E10FC183D4 +318C62D02F83B6365968350625FE1AF810BEFD57A19CCFBFB98BEB52FF1D937C +821A47DEB8E32047A92D9B687E147BCF7574CA5C6986450213E09152818F5311 +451EFB7C35AE79B8796BB8044839FCB5CFBA818C685DFB969EC60CFEA7D89045 +78FBCB9FB388FCE88F6DDF752DED634A4695B7CFAE70BA244373E63F6BC966A2 +6CFE08A09400E99E5ADAC8E6E11AA2DC438A37CF2D6A76C264B0744734D9A333 +BC478007283D9E995C163066C9AB0AF0DF2E87E44D71FFFF528817E48D75B615 +DAF8B8077A2B89192FE3FE3562D2DB1BC90BF21817153D68F47FF99FC59E888D +E96F639852110E20E51AA0D38E6B6EF7E52709073A1543EF3F90DB8A3BCAFD25 +94253612B08220345B015060AEDDFA5C04723F2F404D2BC4FC05CB5B050CC48A +E0103205372BB9C2340EA48EE063E19F3FEDB608A88000CE31BAFE3B46C70E9F +D12E73A31F2F2C619791EA73EA25416E21832E3013B0D2E41EDB25BECDFD59F1 +C2B25AF3442F6A5932EDEC77444C98802C0CAEF592452EB8AE26CBC4287C4920 +2F2301F3325DC2436C820D00C3AC29A1D7C0E7C8AD36EF205E3E01A61E2EBA56 +9BD79E674AA28AEBE93512EC76BFC9050524FD0170EF7AD9AE841F23054D7D4E +C201CD6C410DE13B7E6FE62385D647EBF0E725C098215DB60E8B01C8A5199CEA +BC6BBD05B3438EEF8F078E49758AC7F89C56509ED0873F89A811BEAF4FD29391 +0CC11DE414B07372559A27496C5F6DC4E9C36BF610E62FA696015FA98E8FF19C +C9CDB89CAFADC73493EE09CA6C1A632D8FA74CCBE0665655592F74B3472A7FA7 +2F577472D31923EF5B522C0CD76B81FCDA5F29659381EB7CB7631643298D2DF2 +F0B4B52E16551CDB0A0C1568ACFD00AAA39AAF18A2ECCE85CD763A5A7D792ABC +96C3DC5E42103389D88A50B54B300AAC071CEF2D354BC2E0CC6311EAFB22D0A2 +B71D16408EE497CB67C78796D1E9C294B88632957ABADB2B0B2BFCDED25819A5 +93FCB13ACF15BBF42234B27AE9ABC68573CA90DFCBC40F6463BA4C68AEAC13F7 +76093C87BE8778E48C7226B1DAF7412972FA7B5DE9A4312EF26B6453850BD2C3 +F0323DC1C655CEDACCB4E87213F82BEDF619BA12AB5A40129BC9E179579937DB +DC0C8FAFE50906850AE32D086DCADE33248C3381345A6474EDADFDDE24E0DA67 +05F03E822CDAD8A958ADFA7FC1EFC7D03BD31582FE4EED7A768EF13550937C1C +3478C937ADB7FD2776D75797B8748C5DA78C097A114ACF556037F86C5382B33E +8307CFC43B5571B5CD5EA192263B287397EEB9C277B0FCC88E140F58569B3255 +60DE9D1916480549168EE6E23E2DC616602E8F0E14FE938408EAFF0C8DAC948A +666477512E5375B85B3AB5B5254B948CA04CD71562E5AD6493534C0A47C060D7 +4FC6632A43E59050751751B5FB9EFB71D259A7D4FE08CAB2DE97DF71FBB24156 +4CFF70E87AA9AAB3C5A00198E6B9D12E7BE079B1CBABBD4FBF5A297EE121A18F +7F154782F76055C3F9742F4C193E0F958D04D1CCC929DE24F56FF2AB17D05DF7 +418F0E0000E5521A9F3E03D6C1E8A1C6BA04AFC719C418C8BF41F2F489EBC2DF +7AC5C115938B085F94C4A5AAFEC2694F360BC2E509E8967426D8BB92C3B46E81 +5D23FBB6F8654BB103565967C9671B0D0CCC30406E729EAF5447AC65B9BD0AEC +E68BC9CCC4F58051A993BBBEF40145FC3E85D3AD817AE74C95C2F777F5DA2814 +6CEB79BFD601EBD0A1C72FBB67B73266D6A0ED656F93ED61C44EC7DE891D28A8 +4B25729F58DD478932367018AE6C63FA5C5FC7EB2EA175CDE388750897A798A8 +03A92331596419241961FE5DC38DCEA02AE7962D68C5D6667DA0BFAEF3E816EA +D3DC17F8B1708D1ED52C3F4A0244C63A3B639C393C735F0FB332AB0B7848D0A0 +C94FF616B38BE032BBD0A450E101E8592C804219F62A5A675365A56265B93881 +D66BFC01FA08FF58C502A7D3CA28BF0DAD846E836A1E520E60C2C1ABABDD2DF0 +6FB012B947E376BB0064CD07691A26CC0F5D1AC3F48FEF04BADC4DA29B4412F5 +5FAD7FE00E477B22FDDE54F922BFC45029EF69BACEE71A9DF13C0508095FE617 +9CCBD486080DD2650490CAD32D201A05E71F43FAC32C97C07A74DE38CC390040 +141F33F809E3407FE2880F0F6763247A3E245527113676B8DA900777A79B21C0 +C891D196420C52833150FC6EFC62387AFB1E402DA2E556AA19359D0BE0A75593 +7C66F47D6DAC7CA25957CDAFD550AD5E2A33F5021F4D81988A2A4D90FA11C9A9 +45E2B57705A81D89F0160705E0FB4CB4EF5793704A3EE8C6491CF3C6F44242EC +42836E7125E349053B034C181E9AD0C71C56E316133E58EBC1751862B9302994 +351FA8A4FBBD3E681A6D9BD40C0B415B1E6E17917D229ABCA18BB2B0825D8BDF +C69AB3D2CDF0C9E3FB6500C9D58A6ECD17E882DA0A0B150482D1EB95FD491D59 +7F82C6051BCEE0AC84C2A85AFE67B83D71D2769E8FE0C5ADACB7DB9AE25926E4 +8D80B9A1B949C4443F271983D0DD52EFD327AC4283B7FDB6957BC7EC2D335619 +9A78A6CCD89454970CE1DA66B35AE8573100B338DF0C8C5476A6B78418BF9E20 +8A33D3D7D725BA7A23C1273ED7F731BD7392D8AC0194D67C61B8C334CCFC38B7 +FF9F3118B5C2751EAFF59A191C2E0A8AE8364CC560BE42D88C6F4DDE4B61D02F +6C10C010B55F27AD5DBFEA393202663EAD9D3DF5825E5CC91C43DA4CF1AEC0C6 +DF07F1642005687C63BAEAB5EE6744CCD0E6FC73C1FC22E0B5888063E3120618 +F788F234AE16821CF04E5791335C82225921712DBE75C540AFC913A501F72E0E +7BE4ED1B412C91329B707D61F2650EBC2FDD72B3930ED5F1C886737C0D6956C8 +F1C2765A9533919FEBB984527C7821CB5B1297C5963EF29F19F8DDAB7BE15B76 +9FCA6313E60D34D8369880F9526242FC937FE3425324AA3A9714809B142CC61F +39831558321DE167C4DABD38F10E880FBB15623E8296350C84510473A6008DA4 +24CC989D0ABB7A8DD597ED36A171812D48849BAF64F6F441BAF818933D3F9986 +E8C4EB771A96921349DBE1E92CE009CC5C67D7BF9132D569F645D0ECD44BAEB1 +590FCBCD3706FA20D1872A1ED643503A3966676DD0A816056CFBAF9151B7D841 +335F94557872EC441BA4505C65A7F1477431805C7DFED9CEBDBEC7EE49E87D2E +1084BD0DA9B891BC23F3840FB44CDAE8E7DFE6C06A92A11FD13FA19C78F38B6D +605D03A4A6C62EED344B590BBF935F4D51BF641FE8D2D10529D7A7EFEFC2F0B7 +B8D42B6A17A6D3A87AC8AB15BADFD2BF2839AB869D3EA978DEA0044AD7BC0E9B +B6CC856AD362AEE4673D9C1DA8AEE8F084EBE1857A22EFFCFD8EA111D073C6E6 +CA63E3A78EFA85F24FE4BC1F382A48B8922D09D6231CC3AEB3412E8040ABBE80 +0BC85CEB792A99115DF49286848704B00BB1A8D25148FFDA511FDA7D9B3C527C +2277FBBB031CEC10E41E416875FCB893C94588B0FC2C2F2C734068F500C5BC78 +485A960F3C7ACF3DB22810D5257CD74EAC2AA6A30E870A38241084DA09FAA76D +2F00C09474A4B5070ACD2B027A0718F0B8E8BA85089C2D63EF04B6CBA6F22D3C +BD0701F7E05EDDC1C54220CB8AEECB99581B77062FD897731CD4481FF512C4C1 +23C2F7442A2A6E21EC05B2C9874627A1B4C552286F91D172BC5B47ACDAEDBAE8 +F001525DBD896E2C07E98DE32057A257590868DF95715577B69169DF9637B00E +A708AD09933515D26944A373FE442F64D488A91AED5C8F8EDD54A554EAD49218 +CB22C6196D32FF0EE679CD0259036452AA245BFF051359A8A2F3A9D06BE188E0 +7421CA5E3D070C565AE3A70AFF0ADC3A517330CFECD29FF5B3940FA54F187639 +D37091DF4BEE09D29F2E52A32AB5AB9AAC098E0BFAB4B7B706726038E1CFE2CD +D83B1FAEFE1F4234182DBD5BE8E9AC7B2B887E01CD374A825C3D764C3157CD92 +64DA53FB9A596AF2E9C3F3D86A5D73850EBFF025A4D2D1A4BC97407AE88ACEA7 +DE8ABA009D7359F2620B4DFEADA09CB8EB68104E65B22F054EE6FE649F72FAD1 +B2F00BC4435D55EBF44035F5934A35A2A0621A5FB4F93C9615C2421A5AFB510D +D1260BD366D5CED0073ABA8B7E3D0C59C63F5C48C2E3C77553B91AAFADE691D8 +D8ACE45C20166C35503CF73B48434A90A516B24C9F38700652A96F41E4AE95A0 +2E5D31470F2ECEBC3D75C6AD794F66494ABE216CC25A1E385D5B9398CF4ACF5F +3705DB2A8FAA799803538AB3F81E1F798EE3EC152DE1CEAE132555D3F55F7F90 +B94FBD0889CA3B0BA1AAC8DD6C3B0CDAD21B799F5478A789F9A74EC7127E4259 +FD98E4EBBE489F471E799ADEEB0613E92EBAE7E0F9E09AC03B342ED5141D5774 +5AC364916D8116EB103E6C9E1819E19832ABD66F6452753F7F6795F274D82D83 +7FE689CF8A181CB425833B97F2DA9764732AA0717F0CE55DE70F938A37689301 +6F1A1586AF803C0AE64645D97B1A9AA141A24A9B997040714330351792616442 +70C8BA50FA4DD5238E2D7D6A16C9B5DE3F8A7FAB2F4E5655DA00481EC4B15B48 +E047AC737F5C380DA17F57A835FFA2D01B8EB20C0F3CCE270E208514915B8058 +CE3C9C8888F53CD8952492A00674F53D94C4B8A68EA98E34D37CE574C3F312D5 +D302E1F5218CC62C9C8D75092D00AE3F603E568E95CE6DD81931B352C8D8BB15 +AC9F11BE312D2729F0BDDBA215A8A0CDFFAE68BDB49F696DA0C3EBBF349B5273 +3D4A7A36CCA0446F7D16A668D51B5165D70625E3E96758387E40A330BF5787DF +73C781B1F15EF16055DAB842029CE24A9677CC6E981A57A0209DE6EB62328DA5 +A05486E785AB73C5302172A5730586EEA3706801D39C02AF42B3C37F918AF5A1 +EDE8CBB0ACE44EC34B1BACFCFBE962549D05B30B572658B677C4B7D56E5FB7EB +D2F632888454FDDD3B8A4DD6C226284B56FBFDEEAF915D6BC129939729AA95F1 +B0AAEE02C119EEA3756BB7AB638DC15185D7D1BC5442E4E2037786DFC19E06F9 +5758344DCACFF12EA0D465A4F1AFCBCCA6B22B07A96E5433CC81475570A793E3 +6899A1F9BC3750C9EDA5A5010D7CBA24970D19555A6613E1C0A20B2CA1A2305C +6C59C11DE0E8DC0F51FE5F58EFF84F2DE7F18ED0EE7EC3C508951BAA11816F45 +53ECCE80B0D09AB23E189B890F3C9A4CEDCB7F0AC07E1B52B2CF8B6ECD6174BF +D5E66D5EF94326CA6BEBEB2D04A2F5C87A0DF0CDB072318F0329C49E799458DE +A2B772A5CE622C262F6294A8F691D83A188A377A8D78BAF59F08790BFAE3053B +85DC75CD7AD0E641F0C41202EA3CB49848C5269DFDDBE3EB5C9764FDCADF7E6A +2762909FA8C166070F69E0AEBCB03C8F97AE8DE40C7802FBD751A030425BD053 +161DEEB4A6FB85FFB9CE609F06D425C05EBAB2D4820FEBC450A3144341C0F597 +88B4917D4F9FE6D4CAF30D06E1129488AE8EE622325F21789B1CD274094CC311 +19819EAA3DE9703A5002BE9DE1BCA7D769A3069EACAB8261900A2A9E8A9444DA +D7A922A26CD7BB9CC9942DB574AFF1411F44208538967F4249A3BF4BBFE81B81 +92840607C3F4C8E804FD630403D6C6DE60A3F0D0BEB9635A28BF4BB3A789D090 +E754F4367E29F13DF28304F2178275A71938185F6E680782AFC6BC35C9FD842D +73EB566DEAF118649070090E43FA7E572036A606FD3FF47578B9594FBFE2C56D +35AC38CBE303AC04F36D889113D9CD423FDCAE23D8A63AA3C6CC2F6CEAC37032 +B1AA79C500AE5DF39CBC57BB4C8492B1EF276BC4D2864F67CB09C14E6E811F33 +46DD35E4899A072C788BD80D5476648416FE383B9FFA64BD69D5948A5E10C8DB +6774A701585216700E825306A23996B549A865255DE7A565840CF8F86EA30177 +E1CE3B1866D2F94AC553A0D4DB307A7D633D8CFB67D621294C32E8D4D5F48459 +994EC4BD53794F2FAB1B95431B0F40690CE80ACFBF249249FE6A070914080BB4 +8D56F73210F053B4DFA0403A2A30E4CB0DCD0E721E4143FC1EB918E6B7C2D977 +26D86B1B7F1D652166F169A3B058551A8BBA687A391FCBAEF337B3964CEFA7F1 +0A030C097F440A1D16FC14D9AC1243ABF8FE0C4572C14296FEF8B8EC6E859392 +96EB8291718357C6EC7422D8ADA872CB672AF4637086BBE35951C61789A335FF +5B904F17DFFE9F4E60523D427DF645C22377E1DE1407A41DA9748FABB258B3A0 +14E168C2A2373900246A6BD88F25D3FDCFD2A91A5197B63C1CF59AC4F26C42CA +B1958989A1B36641B51A0E91FE03E90BDAF96A7504EE3193728FA8F86B1F0665 +39A56B4283E9C789309ACD9445483EC16BCB5331571D67F2E6135234A855C65D +2702310B488CA8FDBEE958C382E40B96C543F58E2065D5385558D2DC2AF550A6 +DBC437EBC53BB1B3B8563195B5D1198FD906DAC9D906CBF59B7BBEB92BD29131 +B42F42B6B0B4656E0FD8D18BFE640FB479447BF606F361108FF3C9A9499038EB +87A370E44E8AA019689A900F20992619915ECE3FB679F5834F1B0EFE293595CA +0D37BDC0ECFC4D8528D52A14E40F8D3B0FB3AE69ED29FC7EF377F6C48A5E8ED5 +9EAD17923AA47F3A6FD58A19889C31DF0B8FEDEE49EBBE4749746C54362547BD +678CF0153BBE1A8BABAE7046182A542A9E91572F980E33B2D8AEAF2945E0693B +870787BF000663167C0084EDF0C35E055F3208A331F34CE8112D63EC8A71D129 +2EA41C7079AA2CE261F2C3E47E051635E5177AEA3626D7A4D7B5E42F66986E4A +BFB5FCF022A6DAB4DE877AC2DE05D1BAAE32B6D5CE1F24E570D1A123F8D27C53 +7E166783BC7A9437F9C3B6968C5386E9240DCF5EDA0BD2B2D91BCE2DADBE00B7 +20C262DDED733040979E62454C5303F01DF1CA7EDDF9E158E62251914918CD4C +88CB370FB1F68866CA2370CD9926A54BE41E1363236189AEF679E6560EA9765D +E5B44C035CF0378A4D684516387CDE0FADC607F86962DB50E2C82126391A8E87 +DB03285E829D39FAC94FFAF70123C3AD7F083D93A066B6E73186EFFF1CB951B7 +E746E52F54B0EB268EF21109CECBDBDCC99C59F5B545A8E93C6CEE6EA416D3D5 +5073DEEC1C4501BA4CCE7AF100C9F0ABFA5563B61F0DF4A1FDD5484B49D13032 +BBA269116BEEF5EC05650610408544C375DB8C4DA370941BF2AAA1ECA9BD4AF9 +783F2B651A22B51DE953BE94FB5A296E6EA54E9FDADC818BE4743EB53913172B +2C2411BF4D60D5ECFB84906F4ABFDBD4B70327EF53F465BDEC2506FC278CCEC6 +8A89151EE4616DBFAD66CF4422DC9F0E15D9639E54E1B47BE6648059084D58CA +110F38D77EF76775570E085F2F9496A4F2646EEEC6C269EE35DE9F756117850A +8E722DA4B8C26B836B428520A904EB109F4EA09F47FF99CA22F86C951D24B873 +83B9403DDB0720DC3FC4BA6C33478C13370509EF5C7CD49C10CD5FFD25043AD8 +1DD09529FF9C91157E9006A017B2DAEE542B39AB665EA760F6D24A9460FC0A6B +5C3964882F4471BF38E858EBA3BCE70230CEA3B511DADE4E892451711E4C41A9 +679CD4D9067575783774FCD8BF7F20B53D8B19AEFD81F44ACB4704352BF0D25F +F8B14D5D0477925D6792B93E3395089540C5BD082D7A718304B12AC0B99EF0D4 +4588EDE56AD2CDC1A23AF9D2B50FA87319D0A0610D04B69D9CE7DEEEAB2B7B88 +45097DDC86E8F91875F259B8D033C44D1C966262A5E9A2DF0C9C16858E97D4D9 +3DBC278F765AE2DFF9191DFAD87577F7AE031045AB54BC67FB0C54199738DC50 +D761374A1F6CD36067A595D5D052EE1048CD4F6C3C1A093B04FBA24FBA7144E5 +BCB6438235EFC35F222EDCEFF7940C1F91FBD93525F8B9D3CBC3BA58DCB29043 +E720B4C7300FD78BA24C70BFBDE3398AA91F00BAE8A4C04A04C9ADB9EDAE27EF +6C6CB5DB6FF0E4FB3127901F0CC575A8D8A492EE03AE4E8ECEA6E55D60563015 +4A157433C362D46B61908BE9445CBC25E50EB1F664072ACC5FD11B24449E6C29 +296E9AE446A63956BEE6A25607E2EBBE7F4F4D4FD4C98FA3A22AC043441F3140 +5ED2C4F32A54F05F1C3CC03B638FE8744F2C053FDDF6F0F87861298971C972D0 +EF6429BD3C44D3606D6A10AEE77E32B88B0648519D6F2FB2380290F7C873451A +C378B78290346C03047129A7F529018AF6B56057FB08B40B13AF74C7257C15CE +38810F7D912FBC3AB457B7018C985F31EEB76FDA63B95BBEB1F8950E5BA5926E +876F0FE954AC8D5A7E5778B3598D4661783645DEE64AD6CE7B7D027D2DC61298 +27C56100FCDBF2ABA512AFA2DB1EAEEC0DC39551C5EF23334FA516B9C10A6FBB +34A23712A73876EF7C71AF2A581B68F618C32DFF596CE1069B3EC5DA24451225 +A8522AC59A84EDB613A4B00D2AE058FDC9E1AF8DDA2F29C9D4954DD815FB4372 +D7C07781E7AAAEB3DA9FA9CC3721C870076F01787F31B455E68082BCD1F1C3E3 +84126C4B5668492DFCA2531A2DE135C588F328470497CE27EEE7FCC2B74C1BA0 +30EF399E8BA5C616A4D45BEBF2DA0BE55E96936CA2B9BDFA632A9725B3147B59 +C74FDB36D91C92B60DF2F7111CD4C7F59A47E43C0DB5A440C727BFCD133EA099 +7B8A5B801ECD69A1201134DE7C6B6EB80FAE9C8DABFC970F6DC03AED9A383C73 +A463FD3CF42EF5873F9639D55050FEB92D5C74BCB69536D645D763BA62BA4771 +9830AABE85B84CD6ECC2B2CFB4501480B5DF833C836804A0B463F57CE5AC08E2 +15480D47EC254D02391279E72A146A0834988FB0F8EF95573A359A4FD262E44E +79FA3F29C27CF9934B03881A8561C3943B2928967097613921B68E014BC60C93 +012446D334D3C539383A01371CF0CB6D3FE6E15955ACDA7F74C8E0F1DF3A2FB8 +D741248FCFD64378DF4DC90DE0256840826A6E0892A17E7E90AB1851A26D3D05 +F4C4DDCCC2A0B758B90C236C0BA05FDA098BA199228AFE1DBBCAFA7DA390E07D +61250CDE484356AF8B6A29E4595A98D0FEC0770B2A4ED9E5566C7FEE4E9409CA +99DB69F7353F599AA573A251F8BAE3D6A6ECFACF07CADBE1B63A5E55568C903D +0EF6B59B3484B13321C3ADD862A135F4305F3F2F21D188D7F1CFEDAE964AC4D2 +0250A68B5F36419E41AC852BC8E3FEE7259BDFFE250AA71009240C138C546574 +340F7C6395E904AAB07C05032FCA7BB333A9F95ED35B115E8449C26E8C6D8CA2 +99C1C38D652A5E14BD7E8F4B4F89D0EDEB082BBF8A0058E95934FBFEAF63A99E +076DF6A6259389002B0F4D44BC0D54FCAF8874606138F4DB1C39DE366938F12B +0018E1586F0284619962950D8A17343E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX10 +%!PS-AdobeFont-1.1: CMBX10 1.00B +%%CreationDate: 1992 Feb 19 19:54:06 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 12 /fi put +dup 19 /acute put +dup 36 /dollar put +dup 45 /hyphen put +dup 46 /period put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 58 /colon put +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 72 /H put +dup 73 /I put +dup 76 /L put +dup 77 /M put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 121 /y put +readonly def +/FontBBox{-301 -250 1164 946}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 +7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 +77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 +2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 +FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F +DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 +7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 +9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 +CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D +6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 +E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E +8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E +3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 +EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 +0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 +4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF +1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 +757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E +0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 +6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED +E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B +61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 +92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C +EEAF70E3B20C64D4C2B34A084B5770BAB2A8B7069E84EE1039A2E43E0DECBBEF +93189055A49EE66B5906996FBA7A2F052D44A9EAAB6DED6ACACBD4742887E4A8 +FA3D14EC60A2413277027F80FC9B4384EE6F9A1528F7E58A9CB23E3EDE43B06F +E978B03C604B50A5F91C47346DE482B3A922A5D0236FBC7C8B46BB2355A1E805 +C6E30E5B2156F4C26F2C5BEE2DB03051D5824E81313B77E67A9C745F9F696E81 +3BE9158CE6330EFB07FC15E8618153D1E4D5E46141140D9ED2D64A1706E81687 +7BFF07DA3877D7DAEFFD70643D1A32AEE36CC2C0B376F888AF34291450DCA410 +6A49A4D5E8C2D1CF884B6A975FCC00E143C634C2CAAD10F354EA13055C6C7F35 +65B4A26C6C28C08567BF5860D0930D7CCE02B8A16F7DB74AF6D8B7A401DF26D9 +B605F7DA453F60E8E89DF07C2A11C0E1F89B02D061B7C9EE6274B3669D367C6F +F13C336537B67F235795800CA8EF1EA8591DB59BDAECC087BD360B3B50F5CAEA +8BD4F3EE074773D8C969DDB7B64C6A7BE3956ADBECF9836714BC6E754FC09E57 +DFDD95F1A01A3106AC80DB85CE663658EE74C714E6297496EC70890CD6EA37F6 +148CE94413F1D6CE5A3592EF3F99297874E13A7829B3C18BA66F9D093C3DAAEA +AFEB3F714A5449DEB7DE2F19851B4E65DE0679B74D83F1ECA1FEE76D0AA42B5F +5DF085720F44508D5782551D7A7978F3681929E6EC093D73DDE8DE8A938C149E +7E436F574115EB02F9CBA61AB32B9F27625CBFF17E3AEDB5195B493A149B1449 +5EEE848F16BB2EA1457FB44A45453D9990FA4F9FB258AB55FBAA37CE0AF7AB18 +8C46E921805055944A406128C21CC380EDD623BC1FC5523E9FE0F860F4D5E543 +1E9615777533FF7F92D1F1233151D7EACC678C1448D79712A58F2ED9C68137DF +777A3403B563AA12F66BFFC69A9213D8E0990F3D44409A0F041E1F33662D0E2A +7ED134E654ACEF0B5F8C6FB271BBC84A300794A6EA89E6058A07F4A84C33DAE7 +967153F4C4E65357C34143980E9EF1C04FFDB7A683287B101AC4D7EF91B7D648 +141E4DB0E49806215706B1F4A5174C9EC19AE3C55E3191A9D7EAD3294E77818C +EC06549E92C90D62BF85EAEAE51E4D7B7D66B4481823B60F897D0DF74FA1B72C +6FC4C10EEEE3A3B686AEAF763059525C69BDE039B398A8115F5C53217FFA8280 +DD9A35A85E0DF9D40780E0E6D62E9AC1BF6BA810B780AD3D79CFE274CEFE48B0 +40F7B2369A722FFC2D5292C5B5CC8D29CB56B98AB182463EE08956A36219A079 +7E92BC33856ED2F4DD53ED0809CA4F368E41C1210E655BDB2E58BC91D520289A +07B72F3DA93330C41876A4F13ABD480EDCD34370F71F9BFE330C32D011AD62C7 +16DC3E93BF9AE378B09A0C3AA2A43A1C61B02ACBC9061C116C0AB42EB60BE12F +F80FC95C5C51CE79794C620B420C9DD83667150F6EAA923D0CB79A60CEC8B9F8 +3E7C0F58421A0C349525E14A369FC591BA86A3748B4618EA8BE788D5227FDA5F +AB37F8302DFCE43E3800BC945E9A96108301AA65DB2DFE6E371F1D24AA406458 +C3838FBFCF37E7F1B589D820F6D54818D2A0224D8A76A420DA12C56C7856BBC8 +3A3AE827418D1F3561CE924B03E75EC9E1318767385C09EEDD5152CD0932818E +5B5D087D070E53435F5A3A63FC5C25CF064F69AD37837C7808597FF974708DC1 +7ED44F6CED31A17EE951B7D86A1728BDD8B0D862601489A7140F932EFB90BD98 +4FC42505AE9F6CE40DCD06ACEC02DF178935876CB42DA115A08F9BD7DA700CCE +3B11AA257116B2E1FCCDCD7D6D692D3912D23DD521AA0CAD0A040ADDF0E27259 +40F6A9FB2F302732594F8ACF5369209B553ED9DDEA20CA52E42FF30569D80212 +01A544C966EF2F1EA5559CF516784B964A5C4668FBDD158DE9FC0E8C8F5A66EA +1CD364F124CE3569AD8CB4BAC0A9B9758AC7A9ADE015CCF6BEF9ACEF00F0DB2F +A9A7C2E5FD498FC0033CE4B5764D0B2B6BBA47D9927FB015152AE37802E598F3 +5CA408DBDBEAD7A02FB943460B80F02AF30FE483134DE7A89A70569E590BC20D +493B2EDDADE1CB532D51C268CAA0F98CAD9DCF4CD3F5FBBBDB16A2D65B415CC0 +59EDF3602478BCC8F7D2313203FBE416AFFB93D61871F5A9F10A6549DCAC851A +4FFDD7F922D1EE32F6F67E53967D7C12178F5AD3B8B483AF98E6A8959607562F +22CB9FB8EA545F007C34F3A1C7D3D560545E145A8E57FF58BFB486B844037C09 +1C219D212F4C13A1736AD7D55100BEB709D110C4B95D589B1471CF7E074CB3A4 +72C0E75E5CB831D092D7D872A34E373415A1D7DF6C0B52D9F1535A852874B282 +9BB014AFA74EA7A091E2FB1F3B3EF01D6F86C3F46AA79FA519489CEBB95AB5D8 +BDE011394DDAD57A318199FFF087A8C495D3D93025285FD85947D5297DB85333 +575E25F03FD37F8F85AC0A082B8E62CD160D93840EF8AA09F90D0BAE848C08D6 +DE2FB5F5DE2D6C4462B82C19868CE9E969EA4DFB9EDD2AE3F83EC0F238FBC1F8 +89192A00EA10936B77EC8A9E64109FA7EE534C395D415A106F65E09F512D7A56 +F4FBF94178527775519FC4B96E8EFE5F4F3AF95502B02DE37A065B438653FD0D +E4EA28180CF2C3C166070F69FFFAE746DD8E57B302DA740B4340222F597ADD7A +E49E33AD526598C818E5886EE0EA7263871585DCE480770E3D8B4B8B13EEDD0F +962C92E58088CAAC81A6A9BF7912485EF079D2DAED54A01635A4C16EAFC60FD2 +DE6F2EEB2DA95829A7028DB2F58983F4AFE39B58BE62A2A73B300B6732A981B1 +DEF8B09C43F22767946F11BCF1FCD38E32320B412D0BAF7E679ADAA54B28DE94 +9D78C58B0D4BC1CE211E395CD560A49D0F9A7A4329C9FCAAC6B6B84C46510657 +1ACB0238DFC93E208D389647E379A2636A640C00DD91CF5B4751817DE2958735 +F9E0EE7EF7115008A55EB83DC993CBA141888F4A2C9C51E888EE2F9D605DE520 +0CC0CAC86ED519F766C6A74EBA418A22647CD8D933F3BF23B75C96D445E57402 +BBF9E0302C546C094DD18372E64D85C42E6AC4D4AD13290BE6161314A56144AE +02DE38A0019173F1AAD039B9B3E7F1E7D123A10677A7B3E38465CC6EC3D64BBC +145275796055097F7176178F8872C20BB4CA7FF78D90090DBEC1FA708FAB9C8A +94376FAEEE7FAD0CC8B47D82AC78BFE2C2E2CAAF47D7CBF1912708D4FFBCD602 +09779152E0A031921640B5E13A02857653E84718155DF220E0B92385FEC5B006 +D22F936A6B604B241769E52A7028089163507B81D5B6AF5E55B991789F2FCD0E +60AA72063105ADCA6746EE997E9417A457EC9C9AFF9D1F82AF16F26051289374 +29340F530E3FEE1A93663D60BE0F64E58A669ADFD3259BC9C4CCE5825EA5C335 +133CC9CB740B6980FE711F77FEAF776CF5ABAFBAE54853F94E8F2356574555F0 +AB8DE9FB57768BB67C13D58DD33E2F176161164A48F628427EFC3B5F0A8F2427 +D58A7E8BFE8C7031EA69317676012924C3AFA986C3062BA67BE5A71359851EC1 +23D529291F51D4B9616C906D9E5EB72406D037B35AB82F5FA32068CE1B0DDB5E +FA5DED13B4AC002FCAFEBA0DE4F6B9CDD9CA7BDED2B894DF5F381CCDEF003B16 +55B99D680DC6C885B2B33FC8F3BA106B0902EEBBD3237D18FABDE44FF2EB163B +131578EBC15CE149894C5EE6578DF9D6708839A032490BCECD052E20A7C94367 +DB0F920AE0DD15372FD44423C4600A289060B39BB34FB0EA116788F9EE088D46 +172424C79482F2DD7F66FA5B01C9F5D0BE92456BFB89156BD93AED6EF1D7D891 +949962B3CB8D7D6273BE685CA811CC28B230782EAD939009D7DFC00E9285B108 +CCC7D9D6A43DCE13FF2059CBD423FBF87A40E694AED1CF6E0D9A12972C904EEC +C425AE9234F026393CF082E3BA95FB9FCEB37C35DA6FE24EF295CCE723C55FC7 +F6F9EC01A8D464A390E891C572293A15D6DCDDB56EE751524F7F19975E9FEC92 +43313C65E41D8561551EDAAC6D5AE5EBFB7DF225A6646B9A185DD7955B87F880 +F919BEC708EE9B5D386D8BD82745AA3F03DACBA1F58A70E4C30096FA18ACB48D +557FBD3763536FD5C19E75E150DAFBA4BBC3690D677FF20886F8836D53EC801E +AAE0AABFE8903DFA95AE1E27962CD337BB39A91CC69BCA07C1B0C0A7F93244A0 +63C454846DE0FCD53DF32ECACAAA5589B06D218597CF2076D59B7CA9EB78A67D +28B42DF3C1E286700D4AFD82A63D9BCEB2CAB1F1602DABAF1684328249F7B787 +1DB3A707CAA7C9EC158CA3574DA91F049A888053D64D393F20C52C30C15B3EFE +6E87A1351D0839826E0195AD8A334607649AA0A9847EF013757971E9461EB47B +289F74DFD982DF89019E0265FDD4A10AD14CD3EDD5D6555A9A6338C1CC83EA08 +CE3FDF7393CF854A9788CC31C30FF76918B9D694D00E746276EDA71AA2AF30CB +82CC3931F250AEE451E196ABA1FAD6F21D2628F7B1D80CC88FAAD65B515C3FEC +7C55048257F947F1D0F1FAE362D23BC9FA2FEEF3722744FABB62FC4AFBEEAD5A +CB2E2CE2A38529E30CE60A3A5872C24CCE96A5D55E5094ABA181B7A0F847D72A +BA111318B5DEF40B30BE6195CE55EF9DA4EF2823A58540951EF7F707DEE0E6C2 +993E63470DC417F365EA6BE16611E03CD04BDFFADEF0BD7F91BE48AD0E0E8B7A +2A0A6EF99328287344684F5AFC534E01730826B6B80C511ED31F3D3B8D17841B +468452FBB53F059624C5746659552EA69A4EDAFA627AC8EF574D996A421E4D39 +C62690AEEDF4775F150447EBC3FF6FBFFD853CA384864F2B73302B3CB72F3E2E +7B7855C7A9B106238946B75C3A5807A597C4FAB43E624093C6AD508D3F105C77 +25D7C76F35DDCB1C01E4212D90A7AEDC5F1F2DE963113967B512D4DF995312F4 +9981987A4CC089BE75D34EE2DEE750C346D8D8ECAB28CC25D871B62AF82D2C1F +0040F9D102F166E25C649E69F9D7CD31F2FD018956E6038692C57D849887F52A +F06D991D0A889A07D3793A055A887E8E12C61AC168C80591F6789D8D1D68B395 +27219CC88670B013DCAD7EF948A7C1F7085621A397D35C3AED7C8C3B0D3AE829 +253310A9DDF1ED9F0A724091BA58E7B287BCBBB0542896EE6984BD224F413057 +1CDFF59B22C30E04E8C2F1521C01E3922819AB0D2812545688EFA078F31DD367 +C1F4E7730B4D1B6DD06E13AA4EF98FCC3FE27B38151DFAAB1D0246A90F19A551 +D098EBDBA701C465052C13AAF120CD03A3207383EF6CBF2475FB4DEBB47CE59E +68E915611C92CB85904EDA1E5B9F221025C6C5156FEABC2D361DDAE74424C730 +9E5BD34D77784928BFB53D163BD1C7DDE31F5A1E391DA1218D99287B95A1732B +316BF5FD63B237A3B1B7AC39522C41BCC109020DE6A8F683D856EF2E6D2F3158 +8A978267A0DCCDB9E6C4E4A793FBF2FC49647DBD6601FB7F59D77FF18DCEEBC9 +456A9F46AF2C3B5A4FE0ADFE49BD1CC6434B59415E6B783B079C94DB69005148 +1BC9897FE8E1196F41DA53F2261ED3CAB21D0EA3B3E85EE4BDB280F8740D2AC9 +85B0799AB4586E3B8B8D693B5975943D9D217B8B331E9DDEDB482BAA1121174E +C0F93158A672DA9AFC520CFB4BBF7A8ACA2FAAB5714C7D182D09367304A6E0D7 +BEA0D00E7204FA4AD608B12E0A2C3708DA6E3BE762BF189FDD8781B6E647F8CA +2E745B58CD65B2DEA153A707697216B6C1E3E44AC6FD29E71901D8E45E92AED3 +259A0434957ADAF00C28C3F1F7E31B25C5E248BE9659F0DC71FBB71057871848 +8872954943AECD35C954CD5C45A3E8AADCD16F28CCC7F06EBE7C54348A2D57A0 +1FEF1F7C6FF89001BFD7E90C17695BFD89EF9E1E4EF27DDCAA3DB1405CAD5D3F +D93E8C76596EA4B5F3AE567D9EFA1F8A166D0EB66010FE8298DF313D55786E77 +7E249978C56096C200D53A255B0EC5C4BF9B9C1BBF40D114E8742BC16041A5F1 +CAEA142873E106E3972E6DB3044A5A0BD5C5F729991EB7F0CD2615F7526144A0 +CAF82F826610D30824A5A20A9020ECF95742E79F4EAB6DC0DA8B8C0CB0823A46 +14C71EFA8722F7E1B8983DA273F676080C3B37E9EBDCCF0FCCC552C0BC7DAB1C +CACED3ED8A6E4F579B0CC2D6E83CF63BDF068E3750DCB74EB1B1D09A2D0AC2CE +E5DE1E51A328687B1D40B7C011A0DF846C330CE4F038727C3BF4DE1CD061B5A7 +E5DE34583149FA8AE50EF5D016F5EF062B32CA4DDB1A33CAA9E8DF666E2475F1 +512A72EE0DF61AD226368A33F85E419E50A8E032293EB3925BAF909A2AE0E647 +81C9A413D670CFFF4F93E3F6F4775CE58E982B945329C30481ADB922C6E17274 +F7636E1789B101662F5689519334046F48BBC27479522BDE80BD9C5EE6D1BE08 +1995B10936BD8AC9D7EA990F51D9A96A1A5D7718B2A64117C88CAEFF73F60112 +993CB70B0FEE7DAAE9F6CFBA9F991DA740C041DCCCC4AE132DED46A45A4552C1 +808CC0FFB9A3AC893EF4EA85DDDA4E7651B617BC79088376B1D15F3F1B9154D2 +3AB2AE51D7E654F95E87070909087AE6B716D37A4ED3D8D359EA9BC211736C08 +6EE76436477578E23BC81CBE87D326D57EE33A172BCA70856877970E80114F30 +8E5F85A908352425B2CCDB5697CFE2EF90465642FF498CCF0FD7A6A77068172D +9AEFBF70F58A3FB26C0CDB83C83255B6506F3012EA903F8E89B75CBE99BC3713 +E1FD46ABF2850ACA11561F9BBEFD0B851F953DBE273D2736D1F370768C89825B +2994D3DE37E086813FC462F696902455A1A1A947DFB91629FB1C62531F01A4CC +2A74FCD447F3EA20EF0418941C251190EBECBC87DDEB852EE693CEEE2B89E2DC +237416451ECB9291D7F2C0E68F3447B72392438B7C42A1B921A742BCF5DA0B58 +836BED4BF5B234325AA1EB97ED9A8E6CD13ADD33DE2C9283CF46DACEDE73A35A +1675EEAAC0D8F8FC0CF023581ACB1D0241B477390395DBADAC3C3815CC55B6D1 +DB62D7AD5AE09BA334CCAC1323802CA544A75CE8E324CDA9787255CB60566D6B +6DC410F02C1357DDF54910FA24E6B8B53E4DDEC2028D357B0A51C0CE6A073EE4 +638C2C756E43D59269E67879CC7848C63ADD63412AB0EB9246DF01C8F85ADB37 +FEF0C7D637D6F40FCD92C4CE62B6F0D62292F84CDE1A70F596142B16F7E76407 +7A6ECA2F8A49CC56ED141963EFC7EFB72C02D04DD52CB6E865E94AA41238C971 +3F76D94EE30ACEED4321E70110E7F3A1595244FE7A9669C948A048D598AC0E65 +F6C7B52A5D7742C1B105F9C86C68E592F65D541CFAD7FA0085DA65F7F9B566B7 +9298CADC6B3921FC9029C5213F8834866A752E938D2DB8FFBB071A3F24CBB7CC +99F5E3CD857A74D8974A443071B4E4C86CD7E700B6219C2ECF568CEA17A9DF39 +3B4FF618889CD94B59239C3F4F7C7658DE5421DF18CDA1F5854B73782651023A +5F474AA8D6181E37C60C95F19A6990C4E4432D2336CB8EB361F9E5AAD3B7E2D5 +350959A1F309BF66A1A1569247407D9979F99BC85AFD41D44D8B8982F7071B27 +B31A8FDFA4D4484F6E3EDC218904D7B11D4EF38204AE27DC669F35F7CBCCB01E +4B79845D084998E34B830F5600AF514E58D154557F13737AF20D5432BDDF5936 +D07F72C83FB5AE846BD8B083E0AAA5FDC73F4EF305ADD1C03CCA924CBB35C252 +352A845DF3D2159EED08E9EAB16647515E5930DAEBEDE91EF946787ACBA4BFA2 +BA898C60FFC0696A9764A51D01E31B6B39F22D289B4DD78D02D85D7FFFB3C3C4 +52CA50C8874F3C5557C22D7EC19236B0C25D89A6A9C64B2ED30932DF1D7D16FB +278EE0F2F86B4F0130B5FA464C8257465F18F72FF723F67A438014D1823EB70F +008077C1E6BC7D4E64D257E57A9891E052A5C2E0E8F03AEAE1FDCEE4D340F104 +583391A709680C96EA751B85951C99CBDD2D7CDEEFF6E4D747CE5D0D18599327 +AC37FE3AB145C19B76A511C0B440C98323B4F5941CE43979523DCC9640B346C2 +9C17C7C0D83D8ECE3D08E45267D3B4E2AFD78535ECD8CD65931D8E402A024C76 +6B5FADC434AD3D70E3538008BB3088EA45D7973E559581740258CC81E56F96E4 +E396A070BCD36CCF68623F05A817634D7C20BBD4313E36ADAFA35B412DD114A3 +87D0D92B6FA2EEB56779CF5A8038BBAF6C22A516C5D4CD09BBE9CD6F292C4F30 +0D078EE1EBD47EC7AF11EAEF72555F940B59942CE640BB461D529B3DD7DC59DE +83B869FD97A69A92D01166B47DAEC3BA68DC8E314D8988F0A313FB0E971E20D1 +5C30A9225E2F537B23FFF0D9CE204B87A96E5B4E502BFBC67DBCA89E8C938F4C +0F1712B956A6CE28D508359914E634DF70994A9430D90E9358BDE2800A05AD21 +3DA296BEA7E9C501908BD0DEA98436FE603B787FCB265AF2F69D0AF42A3F8D98 +AF22321E0CEEDDFAC5223B86E5E7E04FD4EED7ECE93255C2D546F8B423FF8DE6 +C7A6915AC6357A5FCD42D4262C9B06FAC29BC958CB7000F61B03C3C373295DE1 +92DB914B0FCC9D774E357A8B3AA97594D86484E056BCCE7C875ABDC6E04BFA6C +F23CD3C39F7A5E652F9E7B1825258B791E840911685C5DB9EE0317229CAB1FAC +BD966C2C1C947E84B9721A9C098AFE5C67EC3C0CD18E249D172E8F353896D153 +ECC2085BF67478C1A62C186283ECDD8F8ED860D88C72B3D84F116DB67AA63274 +302BBEAF09C4F5D04F2407BF9A43403B97FFB4672569B5E4A018CA9F412A7456 +728F70A0CC6A14E0EF7DA545D530BDB37CE47E65D836E211DFD18A0099356A35 +B68245F0ABB1D3653FCEB198083485B91F33C5C3D2AA2C5B3F07DBE2901FF1B3 +CEB2BEF981FE56D8554758720B4B984A509F8AEF743949ECB64310F87DA5B522 +A5BA72E3A5E1DB9EE74F912F1E70398D7D6699F670B0E1DC4C2F76D7B9D5CFFE +E70B75564D3E930077DD78FCC47C55FB783B1E48901324CB5CF178B8583CB540 +BF03FC20E649F1C4BE64F1EE83B9722EF6E1447AD95F821378DEBBC0D846BDFB +4D6F42800C967E6CBF3ACFE43A0A634F2F74DF741419344E838721FE98FF6C04 +79C8D8B5929D6D3F73E856F2085AE5C5CB4B028B091B211BFE3E9629B1C37772 +749960BFC86C941A4B3FFC4552D15B4CF9F2C9D44767CD34D134469FD2BADCC6 +77E651AD7C0E31DBAAA712A08080FE248AC5E592F8049A07FA1114A75C481DE4 +CD775562068C95B2B1D4B3242E5C43C5E5B7D6F5F57E1FF4134F8DB69F825F47 +0548185608CFE84477ABA83256F6B8BBBE668E8C525387D8D2448976E28BA5B1 +342148FFAF5903756F07F8F71DC9F323CB7448ED6C1FBF7CB916BACE2BCF1C71 +2C5DCDF9E344BF509AFAC07A0A48E819708927B36AB4EDA1D85782DF76D20280 +ECFCFC7003E60DE083654CB094F0216D7D8028DEB3C1F622EF341272FAFD9449 +3424D8428F4C8A51353F494C1E14534174F3F901C36E7743FBB03A665732D738 +4F78FB4AEB235F68CFD835818268C099317D49B8F794399CF8265ADF1120CD66 +75B2F9A5BAF86F4087CD1D18B168F3C555FC5C2FF0DC84CC14E6E4D92A366B66 +83C4E672E166ED8CEC9754EFC094AFDD263355A5FC1A81AD06ACA951CFF941C1 +93B4B036933CA8CE859C8073AD96CA9D2B706A0B17368F350F0BB90303766D59 +1D7551ADB6C952F499864B2B48790665243350A1294CA9FAE96DE3B4E160DDFF +86E47810B8F00E46BA2008532C238525273C1EE87D706901EE95B73A6EF33DAF +1DB033BAEC49324F2F4A26F510FDDF44F3F1884CD4D56751C144A2106EF7C63A +C6D5CB11307FAB4C66D83D3E347DB503E3C98A49763B748B8EC5DA1C42167F5F +D215865D84D7E2B01F94F62400F1FD81EB194CB80A4B33C1A5C5808164D8AAAE +D261DDBFE916BE95BCE0D1B9936A36CC6E75DB412D4291EEFEB509053453FF14 +8D5F081E5FE7225C94D9627878D66BA4B4965DB12C1EB17ABB0A2D87A948292D +D051934F33CCC97CC09548282BD24F04E37B724719138C0269DE4EC3E056FA2F +CBCE254B977F1EA5B6CF56D590F5066911300AE3632E97B4807BD7947530D2D5 +1DE251686C5FEF4A851FE9AEA61BE752E37E5F5501B878BDBE054CA1516D0DB7 +54CEF32EAD3D936315C8702E5048B9109A6036FF5159FA3A0675A469CAA1959B +A33B6322D0CC76A5B30546D41C3CF17B67B8E7FAD383D16F14620698749EC178 +80048C97D029E229BDF6227E4FC6666606FBF3673FB8205D5DCF3F5A83313227 +D1295134EE8C71E00DEC1487994483E9B81A642C53A8198EF57DDA9274FBCE4C +6628EEC75C302F7ED41D10CB5F1B2AA4B12A5415E4510D25B1F576CC16C8F9A6 +5ADEE2248A1B46DDB499D779F8A63E09F674E27F74D53AB4642FBE6615094FF7 +B8040EBA84D850675C55AED0C9E1C4153428E1FC7AA8D9335B42BBB41C1C779B +8717A00E96D2B9B4138DA60D818A8A303367CEEFB73A9DC01E24A7F160CD9AD9 +D375A71CAE6115FF29A61796418CC67255735BA3471D6542ACE20572B5E2C9A7 +494AB3EF0C728D7EFB42FE593A7F39821061B599A0772181D74438C5C7766CBB +18D035AAA6A54F9922972E44D7AEF4AEC40CB0301FCEE83E1FE18196114EA8A0 +F7C91BC4339F87CD35A68ACDA8FC9F10E1386A040D910BAD5767C8DB06F5CC53 +35FA824C791B0870312C89048EA85093F0BE8FB4FD778BA03C048209D29BB315 +D601635271F36B8D38F83E8069482FDAE6C74249BF1CA70058C2BC8CDFB7C7D0 +9D19E903961561A4DE07D412030BB1748DD16F9DF7EE1CD8673B5DDC9CBB4DDA +81716505A58E2C6E7EAEB44F7BC67FFA1A8C0583A92AB1710B618FE04312C778 +878DE8282AF5EE543222716741000EFD5267AD23DBB8D17B354AD4255D1625D8 +FE10341752CA2896F2E8A045B179A083595332706A62C34035AAF0D54F529A87 +AC9D67975E894EB72C5F15CAF1EA10B500CA39AFB32E3CF8A3332DBE41B41EBE +3E0C9D2D68EADEC7F175885AFAF975DF62225114CCC3030D6D93F0C7FBBB2D43 +B4137595D7337DB70A5C763B9CBF597668A5BF3181473785A20D959750642B32 +04709F214C67F2E84943B39CBE069E84EE7514EEA255F5919750DB4A2D497AD5 +BCE3E4836DBF351BCC9AE7B05F8562B3411D3B29B807882AFDD951AB1987C040 +B21B661F8F9F37B724648CCE293CEBC503E812D03B366E18BD8E20F91AD432CC +3A569F63867572311E492AD3A72B67B9DCE970CC21DF69492F2B60BF59AE176B +24118C7A1350A243143600FF6E83C7762581746ED1D1FD64BA1A1E8DDB4888AC +F2A2A33A81730F2E26DFE89631EE000C0D99EE8E8BB0E3A37614A4F8631ED982 +002CCC4DB0A2AAC85688A56D48D701C99321CFC5CE97BD3193A8925F3A4E19E9 +A34E7F53D9535359FCC9599BD30466D5EF6A64DD80F981BE451A3E34EDC1C278 +BB9305EFB756371853152D313CBE01808F60CAF2D894BF5D5905A54DA745D2D4 +29E3876D1E7A187BAE9D6207AA1F70222B7272A863F05EC0D29EA4562B7DEDCF +66B369DA7FE7C7CF8D433A75D45486F864CC7BD0FBE940FEE9068C9F7B41ABF5 +97BE7ED06EBBE935C5135967A89EB2182457374C83C0D795D50A6ADC0384DB46 +BBADE8D2CE0A37FEB55F28425C25F26049590EECE560D135C8C7F5A4BFFA0AC2 +3ED2FF71A36867C426D8B9C9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR12 +%!PS-AdobeFont-1.1: CMR12 1.0 +%%CreationDate: 1991 Aug 20 16:38:05 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 55 /seven put +dup 97 /a put +dup 109 /m put +dup 114 /r put +dup 115 /s put +readonly def +/FontBBox{-34 -251 988 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C +68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 +3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E +59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 +51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 +DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A +AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F +45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 +821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE +96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D +9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 +26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 +140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 +1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 +1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB +377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A +0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03 +5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4 +ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15 +FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CEB939AD2EEB +4370BA2C96960CE9E6882316268ABAF1023ED9D2D13969EF9E53F52BC143383C +AFC14F27A7530C1EF399707711B3AD971D9F57DE244315EED5A16F9CB6AC1524 +65C8C8458FB03FB8619B8A925DCA3AB2518F044DA696A4D6F8DAD182E1C15D7B +C108C9538896A23A043EE66E18808902D215E82AEBA183D813D46B89A3FC847B +A7F6E0082DE9AD8C0A83F521219955FE964A660826FE921E1EA12D7B34D65EAB +B5E40E74A9666CBEBBFCB9A26A0526B72AF9F31F6A04305FA0284816DDEA6D1A +5786756F613EF9040290DD2D2B27B88ECC0A1FE0DCC2035211919CBCD2DD7A8F +35EF236D4E0749256874CDF5BA703F0C7B49EC0C9EB5C65AE1E7F7288452C619 +E013FCD5D5D5F8A517DA7305F04B4EE61B12A1A2A26C08A46982A7D1EEA07D01 +809552DB4B07FB6EE5A798324C57FC6C2A7D31D102E1BD5F296E9051464CA3CD +F37695EB0EB77BB83F258039FCA21B8252F70CE5D3D9D74E452617B055E19B5B +600B421C921B026BC7356AF63F2690C62B1CD9E479D62EF8F964D9BC29AE1447 +F096FA9ECF5E52F1F7E2FB34B02BDDE6C210D3A43AAADC40636AE8271DF2174A +A63236C4BEA8FD7A6E841B4AEC2CADAA7FC481A16322BEBF01A31E4CD5A577C7 +EEA43211AC7C2C40A6EEEEE7BEEFA146BC3322E6A9E157641A67823CB2661C97 +07C1DE919CF5D1EB4550B08A8452972330B08C87A6AC91BB519667CF32F2885E +71D69B398E7C59F815FA730BAFDD7F54260EEE5BBF6219A7A39D65B0624C9555 +CD34EAE5E7E9AA681B06C1EA575A6C41DD490E0FA258A93766707B6C8A35638A +653E9244B25045CC2381F4998278F9844FF704AC420696AA6E18C8EA78D98163 +52ED5CDADE35979C4CEFDCA0B7C1A26211F04907D036016EE8A1F40BC4143093 +19D3F937DD6D6328882E40141CA000D42EDCD4D47A5516E5FD5205CB31F88D21 +8E855C79000D919BBFDBB843C29FE353B33833A36A6C76581DA65B8037DB5DD5 +1BA21BF81BFABEE02759C35002E9A0DDC78D460989B8948527120ECBCF5881F9 +F035B80F9269B0A846780272A15B14204B8C03A1A135092E31F162EE4BAF20BE +D3C1EDC193FFDA52128313E51CD76189A911E82207A822DDF92F6E821A75BC5F +762E99FD94B1148E71E873C01B46C0158170047A0E6BF5962863113893C71AF0 +FA1BB71520E364053B404B3D912E011D226A95C7ACFB4A1E7166F4B9BA67B4F7 +908FFA34D2C2199F7E5309E6DC0C76FC502D88752F6BEA537262DEC294E3CB05 +E511CA14CDF663D8745BF6703AC16FD61B43F7C3C6A903AE586FA783EA4515FD +B3CC71B68757A66338CD91E4A09DAFEF053737D76A1A9B32BAC308021E7720A7 +8E0A341A4BA2DCAD4E0112DE60DE99539FA7B0EE73CE05BB245A1F5CFE242333 +8BFA62C67C95F0843B7369BD117C489DE934BB69D927069C072920398CC2DAB8 +62101720901D3DA6465303ABB9C19525DBBA151D0F1D8BAF70121CD368934EFB +A68A210B8FD29391D25ACF6D77969768CF3C008DDDE81E2869083F86463FBE15 +E43370010EF7B374F3CBE74E86E80985B498014ABB6D28188DC087973B2AF56B +71C3D7A500949D5950E745C3718317BD7E22F54D169EE7C702EA4C37AAFC853B +2B6575BF17C3B0A910E47AB0F85C0F296B161F77E2D7E7967BE4951510732D40 +96F8C2B6D322DC5709576DC8F2E270822AE3A0C38DC54AE36A1D612D356C1347 +6E4A9C592787048C21E2D833263B65C8E4427B64AADD32C311361B018994ACC2 +ED31DE81A87D2944190F1EC792E28663DBDA732BBB7C1B39E0C9B652BC2519A9 +78AE3F205990732DB91653B03D317CEBACAB797FDFF3F01BB33C5B78B86D8783 +7AFF1ED5B3163983678D361A2B3CBD4CA1EEFDFC587E6FE91F62506F235109B6 +8E51CB8295F64F6C7E69CAE94466DE4B186B50D5551D51316DF9AB44EE853071 +B6FB652DB8B5C09EC2F4FFF2E231955CB58224DD864AB8D71468EEB44D967276 +7F048872912A3B92B0F54D5ABD5AD013B4BF2706D53FE5ADE3882F71C296F3E1 +35F4AF44A0B84D7840BFD29D466FC2D2F4E8C81B2B69C8EE5C2DAD4C1678F026 +144B7FE3A72CFAB5E1950EE2F8EAD198EED539DDCAB4840FB8ADB9ECCF6B31B7 +39B70FEE5F3BA9E758DFD9ECE3A627FB99495BCCEF3475FB360F235ED73DC910 +A787A5C59AE1AB0777ED3D08E5202A63E090D88B13C4752DC4D95113A259787E +4C42D6C564AC849D5F9780D8EF59CE68268D052563C19581B06F7789AB1DEC3F +EAC624CF6DDD2A821ED46B01F14A668F7ABE74A5529C94F086DB03C71EF817CA +AD815C4D3588F99AB3A90B53EC855DDA69D299CA7C6EFCD2 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR17 +%!PS-AdobeFont-1.1: CMR17 1.0 +%%CreationDate: 1991 Aug 20 16:38:24 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR17) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR17 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 39 /quoteright put +dup 45 /hyphen put +dup 65 /A put +dup 70 /F put +dup 76 /L put +dup 79 /O put +dup 82 /R put +dup 87 /W put +dup 97 /a put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 104 /h put +dup 105 /i put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 122 /z put +readonly def +/FontBBox{-33 -250 945 749}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 +A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 +BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 +96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC +9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 +E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A +497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 +4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD +3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF +B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 +C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 +9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F +83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 +A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B +246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A +7736A960F72AC01F733A11023832CD68FB6288A5977743F6F3F23E0C1657CF5D +E8374835BDBD2DED3690C84A1EBB8E2383A5E49E610B6F5F0F5F5EC43CFD16FF +24FEEFB92425CCB577E17FDE4EA6C50E1448DC5726A21888E25B6D6B52DA3D3C +E4C4C6A73C176DFEB60B6B6191B336AC4F5BAA123E1B3B6FAE4B3FA9DC8F7E39 +335277EF2294315BE95F64EBDB1F393B293FD0FDB9DEE6C89082232013130D28 +9234FF12DF47D454558A1EE8603B2832772E5CA07D18B34A4763D5B890F7173F +B8FD38B08F847FE570367C2500AA592E8561878A86491A611865254BA6BE10DD +700C01A3F0D254A5AA0ADBC4DA708CC9909EE3B1692657B5A07BF14258EEE82A +137F69C604328C9E5B0F08F0C2F9A9E805CB3B78BD67578F2468DA55B04C5602 +47A6191304EA7CD9C8E48C02D0DBD1FE8CAF94EB5A41EE79C5989E3DCF332E0C +C15A728C039FE5FB62F6E38B496E9EB7FC4DC700408E90DDB5585FF577079F94 +B4E90C8CE6DC50C1AA95F6122C334614199AD3C4E665C978E487DD75504449BC +51586C840BC8896F38A17B41614817AF7855558578F7C3E185C523E10156BE88 +85BF39E5762F3485EB514EA2ECC3636EC62B4B6A8264F2833247FF346CB2F9E7 +A60B614898EFBCF22DC8ABFBE9124AC221ADC674209C3E008F48CFF08950DB97 +A467AAFF342F299F24EE591282FE7A0683CAC644AD052C6AE6FEE2093286820A +1B300A7B807CE97A8AE52914D5B59529AF3549D5D7E66A82D7D3FF2447922C1D +CD5686E54BADBDBA8A6C7BB3CF398616A993058E89F4C1BE85696A780B0B9BF8 +4A4D713CCD7DE2B305407FF0B453507B3358443FA4218550A893CAB19E69B85F +AA7E14C6CCAE0BAC75A8848420F36B2A81903CB97527CAB8958D5B168CFBB1E3 +3FFCE29907DE48683ED44B0682FD00C9C4E9160B324596E092DE8DA82D985B84 +7EBEC02E90C23EB9DDBC078E37ED09A882ED52EDF3DE1778D9DC0C6E23202F54 +FF45BB75860360C4A4A191014DF0D8F72DE57B79A7EDB8C52306217C11545A50 +28C9CFA7694C8523544E15E364E3909089872528B191CE387B3EBD9E5C92609A +71C221C41EB2E4DEE5AB10D44746C8E8D57D5710F5E51D4C5ADADE0462CA1C6E +798812EC34CD814C0792DEAC9822367468020311E7791FE7DAB1732EDE77F295 +72BB1C054A8997E3756C6DC7A2BFB7B0A703EA991872FFABD8F03DBD72017FF5 +6216FD51066BE58C345D713218D73A9D32E54931FC794F5F464F17D0F76769DE +0A9BEF54CD93899972807164A286B6DDCF966646B26E93483B504C57B5106300 +DDB17C126CBF0C324F7B9B2F7E296AE4FEACFC248A55C607B075E5C265F00DAC +BE7D3FE89941F270BC33DC1462A42A97FD5201A4AD94EC4C93B283E374C238A0 +D0832624C868FB36749A117030A6BA50F0F201D0F0C46FCFC1808B9B8D0E84B8 +20377A74E1AD9DE13FD281D9450467C5FC28EEBD9DC47F5180FDD007DC16ACEB +42A2B2B8520ABFE8F89D2C54EB9AC77284FA19B6812999E14C4512A43A3166E2 +F6B46E8D9E021691B0C02969558B00714B0DB60BFA58D64D86707E7BECA25A89 +2BFD8ECDC6F009D2DB760E57CDF17579EAB32D86CC5657CEDE8D8753F2D5055A +26C4F19519023FE8AA01BF84D0829D9C316F2061487CC5F4309FB8707D8F8FCA +7340D30EAACEFFC78E7FC94E6D3BC634294B3DE805DA5C44BAA53056754ADA43 +1737E9EA0FE90D2AD000A6BCCFAAF21266AF7D81D878AB96C1367FF462022559 +6266E00EDCE370F06FC755C4D4F0B5EE3C2779D922EE3750EA75199BAB8D50F6 +F6D0AECD37440413249E41C339290C346EC53E530428592BFF99A43EFC69C784 +3F0B877A34BB0690DEB5104413E1B59C89070235212216DBF040FD1205486C69 +C673AAA2376AA7047124AA3508BB89784DE93A2E934533D5153235A6C5D23173 +B6B385566DCF0B313B59ABCD3428BAA592165389CE18E40E959DFDC17F88F998 +FA4D9AA18E98FAB3F92448B4A5D28B4102A4359770DC554BA58DE980F60D2305 +15C612737EAC879401BA470508AEC08397019C14E1C34244B0FE994843FCE823 +719EC52F6E00B75675FC3D3FC0B1F2EDB0B37BAAA2A0EC1389F395D3F4AD6EB2 +7CD220661BAC0E5438E80D8D64CD68230B07085DC27306B956F542D479EE7CF3 +FDFB6FC9DFA01C25792ADA79575324AF12F4447DA2947957FBE640092DDEB879 +5BE484280D01DD910B6D69282E772C9140F49B2742651DCA95B7EAAC55CE08B5 +13FD71F51B11F7FF7021AF93FEE2A6FF5A6223B155A4D1F92E99C576088EB402 +519C9189B7D5D345CFA9347845D916F2ECA2C6B4142EE4B33C13F86D18ACE6E1 +9CE6DAB6B6F336197E4EC25ED0B38D7DC087A45C32B520454E42E248D18A4F11 +DEDF9778A9BB1FDC30768B3DC7E5A39FD51434223B46716387F7A379182B21C7 +CAB5A86AC0AD2900E20EB2566190931E7E86C548F88DC1B55C8B80879E84E7E3 +0B5739D30B7FE204E59D281670EC90E986AC08BD38230E9A341A460149702565 +214704BDDC9176033F68721B3D0C6118484BC8D06B15CB3D8531E19AAC3B3A3E +4F44BF226AA4770612D4B3537988141D895CBD36718996ECA4138F10EFBA52A4 +1F89FDB0450D353E0B5F2BA4BC42372B12DD4ACA8521EF5E9C1DF0A575C4AD65 +379F55A3725DFB5C6D8C14B7B8BC22AEDF86886F95E2CB00134C55DB9CB49981 +CF944A6F2B744806FEED501FFCCBEE919F6B1E2973881A0941D9AF8E6781491A +0C32555340FD74545C59D6886619F873207E9961516E26AD9241C2BAFED73CF4 +9DB9995BBEFC11174B83DB92E3E329A7817DB69DF9DF73CC18B369F0C060EFEA +B8D36C848A571210EE2A2AEC9B341F0E8AD42D99702FE7442E2DA2111DB02444 +E0C0C2BD78E6E6268EE7922FBE5202F186C0FF0FF59071ED4BD5E8E3606EEF7C +302A5B8A4686CC8EE8D5D6EC6716103D156FFC7B8DA9D7180918EA1464543DFA +96B98E10C561E05C6BC273B5C3B55D4A58357E1C6DF714F5345B8225F582D978 +793B743C53485EDDBFEAB2E2E8827FF86F1891AE4683EABBFEF7265B23254B57 +98FDEAD48C78800991815269E9F029A7A095DDCAA3BBF39D8186CE1A4F83463B +A176DA3E3CB4AEA081BE712543BBD541A73671E44D7A6141AB3E629DE47EA084 +BB7D9EE21C8A895960FAA8B4EAA51BEAB75E8E08D4BACD3C0BD48956BE5DD244 +94E1C304AEDB176FF7D74D0E42F3475C9E500D4F6D2C49AEF88C3969A08DFA04 +C985CAFED0983FF889341CFFA5BAB503A33F21252B56D3AC1E688871A645BA49 +76DAA7AA27E605D1B6B3D7E3908A55D1579E700512C5E85FD4FF22F977063AF9 +B4906B791A6C5052B70B4CABAB353C68F6273D47708C871FB6D9B7AE2EFE1867 +830FE235F724072DA524A2B3CB4B64B40DE23C7700EE771F0E603E7C2321BE21 +F86601E481AA131BE8ED78F0099B56587F301B59DAD2AC84175B806E3B2FF14D +6D3F7545B656173C68D813B22D6C07F9457FACEEB2B4524C034F9663E8DBFADF +556CBF171715929F315E271F1E8F0828523D8CE00E875260FE7BF156EA661B37 +1C1ACB041A7145A2E7C9085477D60BBA7176892BA16A65F5C769586281F93629 +269BBA849FD795648D8A78E6F0B49758B70C52DE747071076D994972B2B4AA0D +8308D55B2B70E64CBA7576D90C07D4D026255E70E7C1ED3F1D4B5E1FA63B1270 +136D2FA2AFED86EC1A2B33126B2650077DF2545AB0E93A578E846E9BE957350B +AB6B4545EDAE7114C2043DA611FDC14EE57341E0A186E89A87BEB9AC325B68D4 +12C366E1F55F865C4DC08D6F495324505F54EF25FE095878929A1A12D1E9D65B +B4FCE8F49CDE56B57DB3DB98239C05E4E3212F0E49DE66C60690021C4FD89E0F +76936ABC611CE8BCD007093F0FD9BB44D3A96CEE2FF315F61757FD230D70FA59 +6E97772DCD8C97CA2A41B7EC8155089CA0ABE2BBE4FE34E23A817198FA9B9950 +E7FF865182FFAD297584F5B124674B7245B11F0262A605B7B113C4E64B5C90FA +1FCFB30FE868A71B558DFE3C39BCB53FC058EABA5F257A467521096772B103DA +320FC5C1F8C68A85537DE55B26BDE4B0AEFFB406EDACE2FFA3F47D47968BF947 +4B369F88DF79C6317AF228E8CA78E9372CBB935C7469C25B59B67653B188A06C +49FAFE69BD5D933E2C4DE9B1207A7314931FD59C06C3A0EFF498140FF5E5A761 +F2E2ABB6CB4A9F8F25737551D2F5828649C64BD8C138528263793C663B9F550D +CB4F7AF7E007F677A50E29891452D56F654F30AD5FB93C46A86E03CDB4CB379A +4378C69E1C48CD65BC06918D149E529EE07A9DB2B9D6C5E951CD90CAF69C2744 +85064E6D9565F9F4C337E492C28AAB023D78B2A72AEC70392F89F15D69616FEC +E74774C9E8995EB344A88B6B86ECB9ABABFCFAC17041554C30F1612B072E261A +12326F2768BA7301FDF714039B7FCAE28D8D826573B48B9FD1A2F48A570C3443 +05D1AD4D1290773FDA57D3348D8D2EE3B13D587E7F2A5EDEC4D089F88633BF15 +1DE1907A9104FB30E8A06DB14FF31C6211D14AE824A8AC9D46ABEFA42CACD26C +D9F4BE702C46FF3F3B916EA275E6B4BA5C868ECBE76728C3EEDCE84CB9BBFB63 +1CE927FE28AAE0925BE97C450FB410E63B0A76350559DDBFA5E61216B289750C +DCBCEBCEEBAE0B9788760F581B4DE35184968D85F716BF65EEE3896DE814713D +B0958CA9D120ABF2776830D3535DCB1866428EC9D01702F8372E27E5A2E57446 +0572381313C196FD1E86AEBB69E917D331E63C9DBB30E2D5F28360B2D3C002F4 +08F945B48D5F5B740071C39779ED7FF1AEFB8D2DE646EE0A5BADC9634CBD3812 +64615760C5BCEAC7F714A14682358B116855E098B007925A3E52D59DB0D18CC2 +FABFA3B8824E65C765A858EFA69AB3EA2AF6116937256D131D565CAE163E832C +CC3C91102FF3487087EFCE11B21778F7CBF8F71D04C66B6314A6857D1FB7F127 +C83A5C9C2CAF3BC8A3663F7EEEFF0432AEDB16C77034088071026D5AD497D517 +40297AC8E77B69FD44FB1E2ECC96B5ACE9504C7C92633535E8AC8E186EEE1183 +A2ACC6E3F8ED98C0BF04E227F1E5EB273C28DAB32246F163BFCA0E1455831E25 +39D7AEAB974C4E1218973954E1A6E46551A9FE1334FA483E9DD671C2445EBDA2 +B9503AD86BFE89B4FF5B6F49618C835B82C0380F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258431 52099146 1000 600 600 (READ_ME.dvi) +@start /Fa 152[42 42 102[{}2 83.022 /CMSY10 rf /Fb 135[44 +1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 +44 44 44 44 44 17[44 9[44 3[44 2[44 44 44 44 44 10[44 +1[44 2[44 44 44 44 2[44 2[44 13[44 44 18[{}41 83.022 +/CMTT10 rf /Fc 134[59 3[62 44 44 46 59 62 56 62 93 31 +1[34 31 62 56 34 51 62 50 62 54 10[85 5[77 1[88 4[42 +88 3[86 81 14[56 56 56 56 2[31 26[56 56 5[62 12[{}36 +99.6264 /CMBX12 rf /Fd 214[28 28 40[{}2 83.022 /LASY10 +rf /Fe 193[65 1[65 60[{}2 83.022 /CMMI10 rf /Ff 133[37 +44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 46 +42 25 37 46 37 46 42 2[42 3[51 2[85 62 62 60 46 61 65 +57 65 62 76 52 2[30 62 2[57 63 60 59 62 65 2[65 2[23 +4[42 42 42 42 42 1[42 23 28 23 2[32 32 23 5[23 8[37 4[42 +42 3[69 1[46 48 11[{}69 83.022 /CMR10 rf /Fg 134[50 3[53 +37 38 39 1[53 48 53 80 27 2[27 53 48 29 44 53 42 53 46 +10[72 73 66 53 72 72 65 72 1[91 57 2[36 75 2[63 73 69 +1[72 6[27 4[48 48 48 48 48 2[27 32 8[48 16[48 6[53 12[{}46 +83.022 /CMBX10 rf /Fh 138[75 52 53 55 1[75 67 75 112 +37 2[37 75 2[61 75 60 75 65 12[94 75 2[92 2[128 3[50 +5[97 1[102 11[67 67 67 67 67 3[45 25[67 67 5[75 12[{}32 +119.552 /CMBX12 rf /Fi 140[38 38 4[81 11[49 41[49 3[49 +49 49 49 48[{}9 99.6264 /CMR12 rf /Fj 133[58 4[73 51 +52 51 2[66 73 111 36 2[36 73 2[58 73 58 1[66 9[137 4[98 +2[103 2[83 5[86 4[99 19[43 5[36 39[{}23 143.462 /CMR17 +rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: Letter +letter +%%EndPaperSize + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 614 872 a Fj(A)-15 b(W)l(OR)44 +b(-)f(Fic)l(hier)i(Lisez-moi)d(de)i(l'administrateur)1665 +1295 y Fi(13)32 b(mars)h(2007)515 1653 y Fh(T)-11 b(able)45 +b(des)g(mati)m(\022)-64 b(eres)515 1835 y Fg(1)76 b(Compatibilit)n +(\023)-46 b(e)2117 b(2)515 2018 y(2)76 b(S)n(\023)-46 +b(ecurit)n(\023)g(e)2353 b(2)515 2201 y(3)76 b(Installation)2217 +b(2)639 2300 y Ff(3.1)84 b(D)n(\023)-39 b(epaquetage)26 +b(des)h(pages)g(PHP)20 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(2)639 2400 +y(3.2)84 b(P)n(aram)n(\022)-39 b(etres)24 b(de)k(con\014guration)35 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)131 b(3)639 2500 y(3.3)84 b(Initialisation)27 +b(de)h(la)f(base)84 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(4)639 +2599 y(3.4)84 b(Con\014guration)26 b(par)h(d)n(\023)-39 +b(efaut)27 b(des)h(comptes)79 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)131 b(4)515 2782 y Fg(4)76 b(Main)m(tenance)2159 +b(4)639 2881 y Ff(4.1)84 b(Visualisation)27 b(des)g(ob)5 +b(jets)28 b(et)f(des)h(\014c)n(hiers)68 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(4)639 2981 y(4.2)84 +b(Netto)n(y)n(age)26 b(de)i(la)f(base)50 b(.)42 b(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)131 b(5)515 3164 y Fg(5)76 b(Authen)m(ti\014cation)33 +b(d)n(\023)-46 b(edi)n(\023)g(ee)30 b(-)i(P)m(ersonnalisation)935 +b(5)1926 5255 y Ff(1)p eop end +%%Page: 2 2 +TeXDict begin 2 1 bop 515 523 a Fh(1)134 b(Compatibilit)m(\023)-64 +b(e)639 705 y Ff(Cette)22 b(application)e(p)r(eut-)n(^)-39 +b(etre)21 b(utilis)n(\023)-39 b(ee)20 b(sur)h(un)g(serv)n(eur)f +(fonctionnan)n(t)h(a)n(v)n(ec)e(Apac)n(he,)515 805 y(MySQL\()p +Fe(>)p Ff(=4\))26 b(et)i(PHP)f(\()p Fe(>)p Ff(=4\).)515 +1020 y Fg(PHP)83 b Ff(L'application)21 b(ne)g(n)n(\023)-39 +b(ecessite)20 b(pas)g(de)i(con\014guration)d(de)j(PHP)e(particuli)n +(\022)-39 b(ere.)19 b(Elle)515 1120 y(fonctionne)k(quelque)f(soit)h(la) +g(v)-5 b(aleur)22 b(du)h(param)n(\022)-39 b(etre)21 b(de)i +(con\014guration)e(register)p 3083 1120 25 4 v 28 w(globals,)515 +1220 y(utilise)38 b(les)g(sessions)e(via)h(les)h(fonctions)g(in)n(tro)r +(duites)f(en)h(PHP4.)f(L'application)g(fonc-)515 1319 +y(tionne)29 b(quelque)g(soit)g(la)g(v)n(erb)r(osit)n(\023)-39 +b(e)27 b(des)i(a\016c)n(hages)f(d'erreur)g(et)h(de)h(w)n(arning)d(PHP) +-7 b(,)29 b(car)515 1419 y(nous)h(a)n(v)n(ons)e(tra)n(v)-5 +b(aill)n(\023)-39 b(e)28 b(\022)-42 b(a)28 b(\023)-39 +b(eliminer)29 b(tous)h(les)g(messages)f Fd(\()-17 b(\()22 +b Ff(E)p 2441 1419 V 30 w(NOTICE)g Fd(\))-17 b(\))30 +b Ff(PHP)g(qui)g(sur-)515 1518 y(viennen)n(t)d(par)g(exemple)h(lors)e +(d'une)i(comparaison)e(a)n(v)n(ec)g(une)i(v)-5 b(ariable)26 +b(non-initialis)n(\023)-39 b(ee.)639 1618 y(Les)28 b(scripts)f(PHP)g +(n'acc)n(\022)-39 b(eden)n(t)26 b(pas)h(en)f(\023)-39 +b(ecriture)26 b(au)i(syst)n(\022)-39 b(eme)26 b(de)i(\014c)n(hier,)f +(sauf)g(p)r(our)515 1718 y(l'upload)e(de)h(\014c)n(hiers.)f(Le)g +(dossier)g Fd(\()-17 b(\()20 b Ff(\014c)n(hiers)g Fd(\))-17 +b(\))25 b Ff(doit)e(^)-39 b(etre)25 b(accessible)g(en)e(\023)-39 +b(ecriture)24 b(par)h(les)515 1817 y(scripts)i(PHP)g(sans)g(quoi)g(la)g +(fonctionnalit)n(\023)-39 b(e)26 b(d')n(\023)-39 b(ec)n(hange)26 +b(de)i(\014c)n(hier)f(serait)f(in)n(utilisable.)515 2033 +y Fg(MySQL)83 b Ff(Les)22 b(scripts)g(PHP)h(ne)f(mo)r(di\014en)n(t)h +(pas)g(structurellemen)n(t)f(la)g(base)g(de)h(donn)n(\023)-39 +b(ee)515 2133 y(MySQL,)33 b(il)h(su\016t)g(donc)g(d'un)g(compte)g(p)r +(ermettan)n(t)g(les)g(instructions)f(SELECT,)g(IN-)515 +2232 y(SER)-7 b(T,)23 b(UPD)n(A)-7 b(TE,)24 b(DELETE)e(sur)h(les)g +(tables)g(de)h(l'application.)f(P)n(our)f(indiquer)h(\022)-42 +b(a)24 b(l'ap-)515 2332 y(plication)j(quel)h(compte)f(MySQL)g +(utiliser,)h(v)n(euillez)f(v)n(ous)g(rep)r(orter)f(\022)-42 +b(a)27 b(la)g(section)h(3.3.)515 2607 y Fh(2)134 b(S)m(\023)-64 +b(ecurit)m(\023)g(e)639 2788 y Ff(Cette)19 b(application)f(a)d(\023)-39 +b(et)n(\023)g(e)17 b(d)n(\023)-39 b(ev)n(elopp)n(\023)g(ee)16 +b(en)i(gardan)n(t)f(toujours)h(\022)-42 b(a)18 b(l'esprit)g(les)g +(probl)n(\022)-39 b(emes)515 2888 y(de)28 b(s)n(\023)-39 +b(ecurit)n(\023)g(es.)26 b(Nous)i(ne)h(p)r(ouv)n(ons)c(\023)-39 +b(evidemmen)n(t)28 b(pas)f(la)h(garan)n(tir)f(failles)h(ni)g(bugs,)g +(mais)515 2988 y(nous)34 b(sommes)g(\014x)n(\023)-39 +b(e)33 b(des)h(r)n(\022)-39 b(egles)32 b(de)j(programmation)d(p)r(our)g +(\023)-39 b(eviter)33 b(les)h(failles)h(les)f(plus)515 +3087 y(couran)n(tes.)19 b(T)-7 b(outes)21 b(les)f(donn)n(\023)-39 +b(ees)20 b(issue)g(de)h(l'utilisateur)g(lors)f(des)h(traitemen)n(ts)f +(des)h(pages)515 3187 y(w)n(eb)g(son)n(t)h(trait)n(\023)-39 +b(ees)20 b(p)r(our)f(\023)-39 b(eviter)20 b(des)i(probl)n(\022)-39 +b(emes)20 b(d'insertion)h(de)h(co)r(de)g(dans)f(les)h(requetes)515 +3287 y(SQL.)g(L'authen)n(ti\014cation)h(des)g(utilisateurs)f(est)h +(syst)n(\023)-39 b(ematique,)21 b(v)n(\023)-39 b(eri\014)n(\023)g(ee)20 +b(\022)-42 b(a)23 b(c)n(haque)f(page)515 3386 y(et)k(rep)r(ose)f(sur)g +(le)h(syst)n(\022)-39 b(eme)25 b(des)h(sessions)e(PHP)-7 +b(.)26 b(En)f(rev)-5 b(anc)n(he,)25 b(il)h(faut)h(noter)e(que)h(le)g +(for-)515 3486 y(m)n(ulaire)19 b(d'authen)n(ti\014cation)i(n'est)g(pas) +f(prot)n(\023)-39 b(eg)n(\023)g(e)17 b(con)n(tre)i(l'usurpation)h(de)h +(mots)f(de)h(passe)515 3585 y(car)27 b(les)i(con)n(train)n(tes)d(donn)n +(\023)-39 b(ees)27 b(dans)i(le)f(cahier)g(des)g(c)n(harges)f(ne)h(le)h +(p)r(ermetten)n(t)g(pas,)f(d)r(^)-44 b(u)515 3685 y(moins,)33 +b(il)h(n'est)f(pas)g(p)r(ossible)h(d'utiliser)f(un)h(cryptage)e +(e\016cace)h(\(assym)n(\023)-39 b(etrique\))32 b(sans)515 +3785 y(mo)r(di\014er)22 b(le)g(syst)n(\022)-39 b(eme)21 +b(d'authen)n(ti\014cation)i(d)n(\023)-39 b(el)n(\023)g(egu)n(\023)g(ee) +19 b(et)j(sans)g(utiliser)g(une)h(con\014guration)515 +3884 y(de)k(serv)n(eur)e(W)-7 b(eb)28 b(sp)n(\023)-39 +b(eci\014que.)26 b(Consid)n(\023)-39 b(erez,)25 b(p)r(our)i(r)n(\023) +-39 b(esoudre)25 b(ce)i(probl)n(\022)-39 b(eme,)25 b(l'emploi)j(sur)515 +3984 y(serv)n(eur)c(w)n(eb)h(s)n(\023)-39 b(ecuris)n(\023)g(e)23 +b(\(HTTPS\))k(et)f(l'utilisation)g(d'une)g(liaison)f(en)n(tre)g(le)h +(serv)n(eur)e(w)n(eb)515 4084 y(et)k(le)f(serv)n(eur)f(d'authen)n +(ti\014cation)i(au)f(tra)n(v)n(ers)e(d'un)j(r)n(\023)-39 +b(eseau)26 b(de)h(con\014ance.)515 4358 y Fh(3)134 b(Installation)515 +4557 y Fc(3.1)112 b(D)n(\023)-54 b(epaquetage)39 b(des)f(pages)g(PHP) +639 4710 y Ff(L'application)j(est)h(livr)n(\023)-39 b(ee)39 +b(dans)j(une)f(arc)n(hiv)n(e)f(de)i(t)n(yp)r(e)f(tarball)g(compress)n +(\023)-39 b(ee)39 b(qui)515 4809 y(con)n(tien)n(t)18 +b(toute)g(l'arb)r(orescence)f(et)h(les)h(\014c)n(hiers)e(PHP)h(n)n +(\023)-39 b(ecessaires.)15 b(Il)k(su\016t)g(de)f(d)n(\023)-39 +b(ecompresser)1926 5255 y(2)p eop end +%%Page: 3 3 +TeXDict begin 3 2 bop 515 523 a Ff(cette)27 b(arc)n(hiv)n(e)f(en)h +(conserv)-5 b(an)n(t)26 b(l'arb)r(orescence)f(dans)i(un)g(dossier)f +(publi)n(\023)-39 b(e)27 b(par)f(v)n(otre)g(ser-)515 +623 y(v)n(eur)f(W)-7 b(eb.)27 b(Les)f(\014c)n(hiers)f(de)i +(con\014gurations)d(son)n(t)i(pr)n(\023)-39 b(esen)n(t)24 +b(et)j(con)n(tiennen)n(t)f(des)g(v)-5 b(aleurs)515 722 +y(d'exemple)27 b(que)h(v)n(ous)f(p)r(ourrez)f(adapter)h(\022)-42 +b(a)27 b(v)n(otre)f(situation.)515 951 y Fc(3.2)112 b(P)m(aram)n(\022) +-54 b(etres)38 b(de)g(con\014guration)639 1104 y Ff(Cette)33 +b(application)f(comp)r(orte)g(deux)h(\014c)n(hiers)f(de)h +(con\014guration)e(qui)i(son)n(t)f(dans)g(le)515 1203 +y(dossier)f Fd(\()-17 b(\()24 b Ff(include)f Fd(\))-17 +b(\))p Ff(.)33 b(Les)f(\014c)n(hiers)g(existen)n(t)h(dans)f(la)g(v)n +(ersion)f(distribu)n(\023)-39 b(ee)32 b(et)h(on)n(t)f(p)r(our)515 +1303 y(but)c(de)g(servir)e(de)i(mo)r(d)n(\022)-39 b(ele.)515 +1433 y Fg(connect.inc.php)31 b(:)41 b Ff(ce)32 b(\014c)n(hier)f(con)n +(tien)n(t)g(les)g(co)r(ordonn)n(\023)-39 b(ees)29 b(du)j(serv)n(eur)e +(MySQL,)h(de)722 1533 y(l'utilisateur)d(SQL)f(et)h(de)g(la)f(base)g +(que)g(l'application)g(utilisera.)515 1653 y Fg(con\014g.inc.php)k(:)41 +b Ff(ce)35 b(\014c)n(hier)f(con)n(tien)n(t)h(tout)g(le)g(reste)g(de)g +(la)g(con\014guration)e(de)j(l'ap-)722 1752 y(plication.)k(Le)g(\014c)n +(hier)g(est)g(un)g(script)g(PHP)g(qui)g(initialise)g(un)g(tableau)g(m)n +(ulti-)722 1852 y(dimen)n(tionnel.)f(Ce)f(c)n(hoix)f(\022)-42 +b(a)36 b(\023)-39 b(et)n(\023)g(e)37 b(fait)h(par)g(commo)r(dit)n(\023) +-39 b(e,)37 b(et)h(p)r(our)g(p)r(ermette)h(de)722 1951 +y(bien)h(hi)n(\023)-39 b(erarc)n(hiser)37 b(les)i(information,)h(en)f +(rev)-5 b(anc)n(he,)39 b(la)h(syn)n(taxe)e(est)i(fourb)r(e.)14 +b(.)g(.)722 2051 y(N'oubliez)28 b(pas)f(de)h(virgule)13 +b(!)27 b(T)-7 b(outes)28 b(les)f(constan)n(tes)f(son)n(t)h(d)n(\023)-39 +b(ecrites)27 b(ci-dessous.)722 2191 y Fg($adminMail)k(:)41 +b Ff(adresse)23 b(e-mail)h(de)g(l'administrateur.)g(A\016c)n(h)n(\023) +-39 b(ee)24 b(\022)-42 b(a)24 b(l'utilisateur)905 2291 +y(lorsque)i(qu'une)i(erreur)e(in)n(terne)i(\022)-42 b(a)27 +b(l'application)g(s'est)g(pro)r(duite.)722 2411 y Fg($automatedMail)k +(:)41 b Ff(adresse)31 b(e-mail)g(de)h(r)n(\023)-39 b(ep)r(onse)30 +b(des)i(courriels)f(en)n(v)n(o)n(y)n(\023)-39 b(es)29 +b(au-)905 2510 y(tomatiquemen)n(t)e(par)g(l'application.)722 +2630 y Fg(A)m(UTH)33 b(:)41 b Ff(P)n(aram)n(\022)-39 +b(etres)24 b(d'authen)n(ti\014cation)905 2770 y Fg(POP)32 +b(:)41 b Ff(P)n(aram)n(\022)-39 b(etres)24 b(p)r(our)j(les)h(serv)n +(eurs)d(mail)j(POP)1060 2911 y Fg(SER)-11 b(VERS)31 b(:)41 +b Ff(Chaque)26 b(\023)-39 b(el)n(\023)g(emen)n(t)27 b(de)h(ce)g +(tableau)g(\022)-42 b(a)28 b(p)r(our)g(clef)h(le)f(nom)1201 +3010 y(de)d(domaine)f(du)h(fournisseur)e(de)i(service)f(de)g(courriel)f +(\()i(partie)f(sui-)1201 3110 y(v)-5 b(an)n(t)27 b(le)g(@)g(dans)g(une) +g(adresse)f(e-mail\))g(\022)-42 b(a)27 b(p)r(our)g(v)-5 +b(aleur)26 b(un)h(tableau)1201 3210 y(asso)r(ciatif)g(de)h(la)f(forme)g +(suiv)-5 b(an)n(te)1201 3350 y Fg(sub)s(domain)31 b(:)41 +b Ff(adresse)23 b(complete)i(du)g(serv)n(eur)e(o\013ran)n(t)g(le)i +(service)1284 3449 y(POP)1201 3569 y Fg(p)s(ort)32 b(:)41 +b Ff(n)n(um)n(\023)-39 b(ero)39 b(de)h(p)r(ort)h(TCP)f(utilis)n(\023) +-39 b(e)39 b(p)r(our)h(se)h(connecter)e(au)1284 3669 +y(service)27 b(POP)1201 3789 y Fg(username)p 1604 3789 +29 4 v 34 w(is)p 1703 3789 V 34 w(full)p 1873 3789 V +33 w(mail)k(:)41 b Ff(Bo)r(ol)n(\023)-39 b(een)38 b(\(true)j(ou)e +(false\))h(indican)n(t)1284 3888 y(si)k(le)g(nom)g(d'utilisateur)g +(\022)-42 b(a)43 b(utiliser)h(p)r(our)f(l'authen)n(ti\014cation)1284 +3988 y(est)28 b(l'adresse)e(e-mail)h(compl)n(\022)-39 +b(ete.)26 b(C'est)i(utile)g(p)r(our)f(les)g(serv)n(eurs)1284 +4088 y(POP)17 b(g)n(\023)-39 b(eran)n(t)16 b(des)j(adresses)d(email)i +(sur)g(plusieurs)g(domaines)g(\(comme)1284 4187 y(w)n(anado)r(o)26 +b(/)h(orange)f(au)i(momen)n(t)f(o)r(\022)-44 b(u)27 b(j')n(\023)-39 +b(ecris)27 b(ce)g(do)r(cumen)n(t\))905 4327 y Fg(b)m(ypass)p +1186 4327 V 35 w(if)p 1277 4327 V 34 w(lo)s(cal)k(:)41 +b Ff(Bo)r(ol)n(\023)-39 b(een)37 b(indiquan)n(t)i(si)g(l'authen)n +(ti\014cation)g(doit)e(^)-39 b(etre)1060 4427 y(outrepass)n(\023)g(ee) +21 b(si)h(la)h(connexion)f(s'e\013ectue)h(depuis)h(le)f(serv)n(eur)e +(lui-m)n(^)-39 b(eme.)722 4567 y Fg(CSS)32 b(:)41 b Ff(P)n(aram)n(\022) +-39 b(etres)24 b(des)k(st)n(yles)e(de)i(pages)905 4707 +y Fg(CHOOSER)p 1387 4707 V 33 w(LIST)33 b(:)41 b Ff(Ce)19 +b(tableau)g(asso)r(ciatif)g(con)n(tien)n(t)g(la)g(liste)g(des)h(st)n +(yles)1060 4807 y(CSS)29 b(\022)-42 b(a)28 b(utiliser.)h(Les)f(clefs)h +(son)n(t)f(les)g(lib)r(ell)n(\023)-39 b(es)28 b(des)g(th)n(\022)-39 +b(emes)28 b(\022)-42 b(a)28 b(a\016c)n(her)g(et)1060 +4907 y(les)33 b(v)-5 b(aleurs)33 b(son)n(t)f(les)h(noms)g(des)g(\014c)n +(hiers)f(CSS)i(corresp)r(ondan)n(ts,)d(sans)1060 5006 +y(c)n(hemin,)d(ni)g(extension.)1926 5255 y(3)p eop end +%%Page: 4 4 +TeXDict begin 4 3 bop 722 523 a Fg(MAIL)33 b(:)905 680 +y(TEMPLA)-8 b(TES)33 b(:)41 b Ff(Ce)28 b(tableau)h(con)n(tien)n(t)g +(des)f(tableaux)h(asso)r(ciatifs)e(don)n(t)1060 779 y(les)g(clefs)f +(seron)n(t)g(utilis)n(\023)-39 b(ees)26 b(dans)g(les)g(passages)f(de)i +(param)n(\022)-39 b(etres)24 b(HTML,)1060 879 y(et)k(con)n(tiennen)n(t) +f(des)h(sous-tableaux)e(de)h(la)h(forme)f(suiv)-5 b(an)n(te)27 +b(:)1060 1036 y Fg(caption)32 b(:)41 b Ff(In)n(titul)n(\023)-39 +b(e)28 b(qui)f(sera)g(a\016c)n(h)n(\023)-39 b(e)26 b(\022)-42 +b(a)27 b(l'utilisateur)1060 1164 y Fg(tpl)p 1183 1164 +29 4 v 34 w(\014le)k(:)41 b Ff(Nom)d(du)g(\014c)n(hier)g(\(a)n(v)n(ec)e +(l'extension)i(PHP\))f(con)n(tenan)n(t)g(le)1201 1264 +y(mo)r(d)n(\022)-39 b(ele.)722 1421 y Fg(SUPER)m(USERS)32 +b(:)41 b Ff(Ce)19 b(tableau)f(con)n(tien)n(t)g(la)g(liste)g(des)h +(login)e(des)h(sup)r(er-utilisateurs)905 1520 y(\(ceux)28 +b(qui)f(on)n(t)h(le)f(droit)g(de)h(supprimer)f(des)h(r)n(\023)-39 +b(eunions\))722 1648 y Fg(UPLO)m(AD)34 b(:)41 b Ff(P)n(aram)n(\022)-39 +b(etres)14 b(concernan)n(t)k(l'attac)n(hemen)n(t)f(de)i(\014c)n(hiers)e +(aux)h(r)n(\023)-39 b(eunions)905 1805 y Fg(accepted)p +1272 1805 V 35 w(\014les)31 b(:)41 b Ff(T)-7 b(ableau)27 +b(des)h(extensions)e(qui)i(son)n(t)f(autoris)n(\023)-39 +b(ees.)515 2038 y Fc(3.3)112 b(Initialisation)39 b(de)e(la)h(base)639 +2191 y Ff(T)-7 b(out)28 b(les)g(\014c)n(hiers)f(n)n(\023)-39 +b(ecessaires)25 b(son)n(t)i(rang)n(\023)-39 b(es)25 b(dans)j(le)g +(dossier)e Fd(\()-17 b(\()22 b Ff(install)g Fd(\))-17 +b(\))p Ff(.)28 b(V)-7 b(ous)28 b(uti-)515 2291 y(liserez)d +(principalemen)n(t)h(le)g(\014c)n(hier)g Fd(\()-17 b(\()21 +b Ff(RAZBase.php)f Fd(\))-17 b(\))p Ff(.)26 b(App)r(el)n(\023)-39 +b(e)26 b(au)g(tra)n(v)n(ers)e(du)j(serv)n(eur)515 2390 +y(w)n(eb,)j(il)g(v)n(ous)f(p)r(ermettra)h(automatiquemen)n(t)f(de)i +(mettre)f(en)g(place)g(la)g(structure)f(de)h(la)515 2490 +y(base)24 b(de)g(donn)n(\023)-39 b(ees,)23 b(et)i(optionnellemen)n(t,)g +(d'ins)n(\023)-39 b(erer)22 b(un)j(jeu)g(d'essai)f(p)r(our)g(tester)g +(l'appli-)515 2589 y(cation)h(sur)g(v)n(otre)g(serv)n(eur.)f(Si)i(v)n +(ous)f(ne)h(souhaitez)f(pas)g(utiliser)h(de)f(compte)h(SQL)g(a)n(y)n +(an)n(t)515 2689 y(le)k(droit)g(d'alt)n(\023)-39 b(erer)28 +b(la)h(structure)h(des)g(tables)g(de)g(v)n(otre)f(base)g(a)n(v)n(ec)g +(ce)h(script)g(php,)g(v)n(ous)515 2789 y(p)r(ouv)n(ez)24 +b(ex)n(\023)-39 b(ecuter)22 b(le)j(script)f Fd(\()-17 +b(\()19 b Ff(base.sql)f Fd(\))-17 b(\))25 b Ff(a)n(v)n(ec)e(v)n(otre)g +(clien)n(t)h(SQL)g(fa)n(v)n(ori.)f(Le)h(jeu)h(d'essai)515 +2888 y(se)i(trouv)n(e)g(dans)g(le)g(\014c)n(hier)g Fd(\()-17 +b(\()22 b Ff(jeu)p 1573 2888 25 4 v 31 w(essai.sql)e +Fd(\))-17 b(\))p Ff(.)515 3121 y Fc(3.4)112 b(Con\014guration)39 +b(par)e(d)n(\023)-54 b(efaut)39 b(des)f(comptes)639 3274 +y Ff(Dans)30 b(le)g(\014c)n(hier)f(de)h(con\014guration)f(mo)r(d)n +(\022)-39 b(ele,)29 b(un)h(sup)r(er-utilisateur)f(est)h(con\014gur)n +(\023)-39 b(e)28 b(:)515 3374 y(ingleb)r(ert@iut-blagnac.fr)e(et)i(le)g +(jeu)g(d'essai)f(prop)r(os)n(\023)-39 b(e)25 b(au)j(paragraphe)d(pr)n +(\023)-39 b(ec)n(\023)g(eden)n(t)25 b(p)r(er-)515 3473 +y(met)j(de)f(cr)n(\023)-39 b(eer)26 b(des)h(utilisateurs,)g(et)h(en)g +(particulier)f(ingleb)r(ert@iut-blagnac.fr.)639 3573 +y(P)n(ar)19 b(d)n(\023)-39 b(efaut,)21 b(v)n(ous)e(p)r(ourrez)h(donc)g +(v)n(ous)g(connecter)g(en)h(tan)n(t)g(qu'administrateur)e(a)n(v)n(ec) +515 3672 y(ce)32 b(compte.)g(Le)g(jeu)g(d'essai)f(met)i(ce)f(compte)g +(a)n(v)n(ec)e(comme)i(mo)r(de)g(d'authen)n(ti\014cation)515 +3772 y Fd(\()-17 b(\()20 b Ff(b)n(ypass)f Fd(\))-17 b(\))o +Ff(,)26 b(ce)f(qui)g(signi\014e)g(qu'aucun)g(mot)g(de)g(passe)f(est)i +(n)n(\023)-39 b(ecessaire.)22 b(P)n(our)i(utiliser)h(un)515 +3872 y(vrai)i(syst)n(\022)-39 b(eme)27 b(d'authen)n(ti\014cation,)h +(connectez-v)n(ous)f(a)n(v)n(ec)g(ce)h(compte)g(et)h(allez)f(dans)f(la) +515 3971 y(page)f Fd(\()-17 b(\()22 b Ff(Mon)28 b(Pro\014l)21 +b Fd(\))-17 b(\))27 b Ff(p)r(our)g(c)n(hoisir)g(une)g(autre)g(mo)r(de)h +(d'authen)n(ti\014cation.)515 4246 y Fh(4)134 b(Main)l(tenance)515 +4444 y Fc(4.1)112 b(Visualisation)39 b(des)f(ob)6 b(jets)38 +b(et)f(des)h(\014c)m(hiers)639 4598 y Ff(Une)28 b(page)e +(d'administration)g(est)h(pr)n(\023)-39 b(evue)26 b(\022)-42 +b(a)26 b(cet)h(e\013et,)h(et)f(elle)g(n'est)g(accessible)f(que)515 +4697 y(par)31 b(un)i Fd(\()-17 b(\()23 b Ff(sup)r(er-utilisateur)g +Fd(\))-17 b(\))o Ff(,)33 b(c'est)f(\022)-42 b(a)32 b(dire)g(un)g +(utilisateur)g(consign)n(\023)-39 b(e)31 b(dans)g(le)i(\014c)n(hier)515 +4797 y(de)27 b(con\014guration)f(principal)i(en)f(tan)n(t)h(que)f(tel,) +h(conf)n(\022)-39 b(ere)26 b(3.2.)1926 5255 y(4)p eop +end +%%Page: 5 5 +TeXDict begin 5 4 bop 515 523 a Fc(4.2)112 b(Netto)m(y)m(age)37 +b(de)h(la)g(base)650 655 y Ff(\022)639 676 y(A)31 b(partir)f(de)h(la)f +(page)f(d'administration)h(d)n(\023)-39 b(ecrite)30 b(dans)g(le)g +(paragraphe)e(pr)n(\023)-39 b(ec)n(\023)g(eden)n(t,)515 +776 y(v)n(ous)23 b(p)r(ouv)n(ez)h(aussi)f(purger)g(les)h(\014c)n(hiers) +g(attac)n(h)n(\023)-39 b(es)22 b(et)i(les)g(ob)5 b(jets)24 +b(de)h(la)f(base)f(de)i(donn)n(\023)-39 b(ees)515 876 +y(dev)n(en)n(us)31 b(obsol)n(\022)-39 b(etes.)30 b(L'aide)h(con)n +(textuelle)h(de)f(cette)i(page)e(v)n(ous)f(expliquera)h(commen)n(t)515 +975 y(faire.)c(Il)g(est)h(viv)n(emen)n(t)f(conseill)n(\023)-39 +b(e)26 b(de)i(faire)f(une)g(sauv)n(egarde)e(de)j(la)f(base)g(de)h(donn) +n(\023)-39 b(ees)26 b(et)515 1075 y(des)g(\014c)n(hiers)f(join)n(ts)i +(aux)e(r)n(\023)-39 b(eunions)25 b(a)n(v)-5 b(an)n(t)25 +b(d'utiliser)i(cet)f(outil)g(car)g(l'erreur)f(de)h(manipu-)515 +1174 y(lation)h(ou)g(de)h(programmation)d(est)j(toujours)f(p)r +(ossible.)13 b(.)h(.)515 1449 y Fh(5)134 b(Authen)l(ti\014cation)46 +b(d)m(\023)-64 b(edi)m(\023)g(ee)46 b(-)f(P)l(ersonnalisation)639 +1631 y Ff(A)-9 b(W)n(OR)32 b(utilise)g(un)g(syst)n(\022)-39 +b(eme)31 b(d'authen)n(ti\014cation)h(d)n(\023)-39 b(edi)n(\023)g(ee)29 +b(de)j(sorte)f(qu'aucun)h(mot)515 1730 y(de)40 b(passe)f(ne)h(soit)f +(sto)r(c)n(k)n(\023)-39 b(e,)38 b(et)j(que)e(l'utilisateur)h(n'ait)g +(pas)g(b)r(esoin)f(d'en)h(retenir)g(un)515 1830 y(nouv)n(eau.)32 +b(Le)i(co)r(de)f(d'authen)n(ti\014cation)h(\022)-42 b(a)30 +b(\023)-39 b(et)n(\023)g(e)30 b(\023)-39 b(ecrit)33 b(de)h(mani)n(\022) +-39 b(ere)31 b(\022)-42 b(a)31 b(^)-39 b(etre)33 b(mal)n(\023)-39 +b(eable)32 b(et)515 1930 y(est)e(extensible.)g(Le)h(co)r(eur)e(du)i +(syst)n(\022)-39 b(eme)29 b(d'authen)n(ti\014cation)h(se)g(trouv)n(e)f +(dans)h(le)h(\014c)n(hier)515 2029 y Fd(\()-17 b(\()22 +b Ff(auth)p 747 2029 25 4 v 29 w(dialog.php)g Fd(\))-17 +b(\))o Ff(.)28 b(V)-7 b(ous)27 b(y)h(trouv)n(erez)e(une)h(section)g +(commen\030)-37 b(can)n(t)27 b(par)g(le)h(commen-)515 +2129 y(taire)f(ci-dessous.)722 2312 y Fb(/****************)o(**)o(***)o +(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(*)722 +2411 y(**)43 b(Ajouter)e(d'autres)f(mode)i(d'authentificati)o(on)37 +b(ici)42 b(!)i(**)722 2511 y(*****************)o(**)o(***)o(**)o(***)o +(**)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(/)515 +2693 y Ff(Comme)30 b(l'indique)g(ce)g(commen)n(taire,)f(v)n(ous)g(p)r +(ourrez)h(a)5 b(jouter)29 b(\022)-42 b(a)29 b(cet)i(endroit)e(une)i(p)r +(or-)515 2793 y(tion)d(de)g(co)r(de)f(p)r(our)h(utiliser)f(un)i(autre)e +(service)g(d'authen)n(ti\014cation.)g(La)h(syn)n(taxe)f(est)g(la)515 +2893 y(suiv)-5 b(an)n(te)27 b(:)722 3035 y Fb(case)42 +b('')f(:)722 3135 y(/*)i +(Eventuellement)38 b(du)43 b(code)f(pr\023)-44 b(el\023)g(eminaire)38 +b(*/)722 3235 y($auth)p 947 3235 V 30 w(is)p 1065 3235 +V 30 w(ok=)o(;)722 +3334 y(if)43 b(\()g(!)g($auth)p 1252 3334 V 30 w(is)p +1370 3334 V 30 w(ok)g(\))722 3434 y Fa(f)g Fb(//)g(On)g(ex\023)-44 +b(ecute)41 b(la)h(ligne)g(ci-dessous)d(que)k(si)f(l'authentificaito)o +(n)c(\022)-44 b(a)43 b(\023)-44 b(echou\023)g(ee)722 +3533 y($errmsg=;)722 3633 +y Fa(g)722 3733 y Fb(break;)515 3875 y Ff(Il)27 b(v)n(ous)f(su\016t)i +(de)f(remplacer)f(les)f(\023)-39 b(el)n(\023)g(emen)n(ts)25 +b(en)n(tre)i(c)n(hevrons)e(dans)i(le)g(co)r(de)h(ci-dessus)e(et)515 +3975 y(de)k(le)g(coller)e(dans)i Fd(\()-17 b(\()p Ff(auth)p +1348 3975 25 4 v 29 w(dialog.inc.php)p Fd(\))g(\))29 +b Ff(p)r(our)h(p)r(ouv)n(oir)e(utiliser)i(un)g(nouv)n(eau)f(mo)r(de)515 +4074 y(d'authen)n(ti\014cation.)i(Reste)h(\022)-42 b(a)31 +b(donner)g(\022)-42 b(a)31 b(l'utilisateur)h(la)f(capacit)n(\023)-39 +b(e)30 b(de)i(l'utiliser.)f(V)-7 b(ous)515 4174 y(devrez)32 +b(encore,)h(d'une)g(part,)g(a)5 b(jouter)33 b(dans)g(la)g(base)f(de)i +(donn)n(\023)-39 b(ees)32 b(le)h Fe(<)p Ff(nom)p 3049 +4174 V 29 w(auth)p Fe(>)g Ff(\022)-42 b(a)515 4274 y(l')n(\023)j(en)n +(um)n(\023)g(eration)20 b(du)j(c)n(hamp)f Fd(\()-17 b(\()p +Ff(metho)r(deAuth)p Fd(\))g(\))23 b Ff(de)g(la)f(table)h +Fd(\()-17 b(\()p Ff(P)n(ersonne)p Fd(\))g(\))n Ff(,)22 +b(et)h(d'autre)g(part)515 4373 y(prop)r(oser)c(\022)-42 +b(a)20 b(l'utilisateur)h(d'utiliser)f(ce)h(mo)r(de)g(d'authen)n +(ti\014cation)f(en)h(mo)r(di\014an)n(t)g(la)f(page)515 +4473 y Fd(\()-17 b(\()o Ff(pro\014l.php)p Fd(\))g(\))p +Ff(.)1926 5255 y(5)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/beta_accents/doc/READ_ME.txt b/beta_accents/doc/READ_ME.txt new file mode 100644 index 0000000..ce42282 --- /dev/null +++ b/beta_accents/doc/READ_ME.txt @@ -0,0 +1,277 @@ + + +AWOR - Fichier Lisez-moi de l'administrateur + +Table des Matières + + 1 Compatibilité + 2 Sécurité + 3 Installation + 3.1 Dépaquetage des pages PHP + 3.2 Paramètres de configuration + 3.3 Initialisation de la base + 3.4 Configuration par défaut des comptes + 4 Maintenance + 4.1 Visualisation des objets et des fichiers + 4.2 Nettoyage de la base + 5 Authentification dédiée - Personnalisation + + + + + + +1 Compatibilité + +Cette application peut-être utilisée sur un serveur +fonctionnant avec Apache, MySQL(>=4) et PHP (>=4). + + PHP + +L'application ne nécessite pas de configuration de PHP +particulière. Elle fonctionne quelque soit la valeur du +paramètre de configuration register_globals, utilise +les sessions via les fonctions introduites en PHP4. +L'application fonctionne quelque soit la verbosité des +affichages d'erreur et de warning PHP, car nous avons +travaillé à éliminer tous les messages "E_NOTICE" PHP qui +surviennent par exemple lors d'une comparaison avec une +variable non-initialisée. + +Les scripts PHP n'accèdent pas en écriture au système +de fichier, sauf pour l'upload de fichiers. Le dossier "fichiers" + doit être accessible en écriture par les scripts PHP +sans quoi la fonctionnalité d'échange de fichier serait +inutilisable. + + MySQL + +Les scripts PHP ne modifient pas structurellement la +base de donnée MySQL, il suffit donc d'un compte +permettant les instructions SELECT, INSERT, UPDATE, +DELETE sur les tables de l'application. Pour indiquer à +l'application quel compte MySQL utiliser, veuillez vous +reporter à la section [sub:Initialisation-de-la-bd]. + +2 Sécurité + +Cette application a été développée en gardant toujours +à l'esprit les problèmes de sécurités. Nous ne pouvons +évidemment pas la garantir failles ni bugs, mais nous +sommes fixé des règles de programmation pour éviter les +failles les plus courantes. Toutes les données issue de +l'utilisateur lors des traitements des pages web sont +traitées pour éviter des problèmes d'insertion de code +dans les requetes SQL. L'authentification des +utilisateurs est systématique, vérifiée à chaque page +et repose sur le système des sessions PHP. En revanche, +il faut noter que le formulaire d'authentification +n'est pas protégé contre l'usurpation de mots de passe +car les contraintes données dans le cahier des charges +ne le permettent pas, dû moins, il n'est pas possible +d'utiliser un cryptage efficace (assymétrique) sans +modifier le système d'authentification déléguée et sans +utiliser une configuration de serveur Web spécifique. +Considérez, pour résoudre ce problème, l'emploi sur +serveur web sécurisé (HTTPS) et l'utilisation d'une +liaison entre le serveur web et le serveur +d'authentification au travers d'un réseau de confiance. + +3 Installation + +3.1 Dépaquetage des pages PHP + +L'application est livrée dans une archive de type +tarball compressée qui contient toute l'arborescence et +les fichiers PHP nécessaires. Il suffit de décompresser +cette archive en conservant l'arborescence dans un +dossier publié par votre serveur Web. Les fichiers de +configurations sont présent et contiennent des valeurs +d'exemple que vous pourrez adapter à votre situation. + + + +3.2 Paramètres de configuration + +Cette application comporte deux fichiers de +configuration qui sont dans le dossier "include". Les +fichiers existent dans la version distribuée et ont +pour but de servir de modèle. + + connect.inc.php : ce fichier contient les coordonnées + du serveur MySQL, de l'utilisateur SQL et de la base + que l'application utilisera. + + config.inc.php : ce fichier contient tout le reste de + la configuration de l'application. Le fichier est un + script PHP qui initialise un tableau + multi-dimentionnel. Ce choix à été fait par + commodité, et pour permette de bien hiérarchiser les + information, en revanche, la syntaxe est fourbe... + N'oubliez pas de virgule ! Toutes les constantes sont + décrites ci-dessous. + + $adminMail : adresse e-mail de l'administrateur. + Affichée à l'utilisateur lorsque qu'une erreur + interne à l'application s'est produite. + + $automatedMail : adresse e-mail de réponse des + courriels envoyés automatiquement par l'application. + + AUTH : Paramètres d'authentification + + POP : Paramètres pour les serveurs mail POP + + SERVERS : Chaque élément de ce tableau à pour clef + le nom de domaine du fournisseur de service de + courriel ( partie suivant le @ dans une adresse + e-mail) à pour valeur un tableau associatif de + la forme suivante + + subdomain : adresse complete du serveur offrant + le service POP + + port : numéro de port TCP utilisé pour se + connecter au service POP + + username_is_full_mail : Booléen (true ou false) + indicant si le nom d'utilisateur à utiliser + pour l'authentification est l'adresse e-mail + complète. C'est utile pour les serveurs POP + gérant des adresses email sur plusieurs + domaines (comme wanadoo / orange au moment où + j'écris ce document) + + bypass_if_local : Booléen indiquant si + l'authentification doit être outrepassée si la + connexion s'effectue depuis le serveur lui-même. + + CSS : Paramètres des styles de pages + + CHOOSER_LIST : Ce tableau associatif contient la + liste des styles CSS à utiliser. Les clefs sont + les libellés des thèmes à afficher et les valeurs + sont les noms des fichiers CSS correspondants, + sans chemin, ni extension. + + MAIL : + + TEMPLATES : Ce tableau contient des tableaux + associatifs dont les clefs seront utilisées dans + les passages de paramètres HTML, et contiennent + des sous-tableaux de la forme suivante : + + caption : Intitulé qui sera affiché à l'utilisateur + + tpl_file : Nom du fichier (avec l'extension PHP) + contenant le modèle. + + SUPERUSERS : Ce tableau contient la liste des login + des super-utilisateurs (ceux qui ont le droit de + supprimer des réunions) + + UPLOAD : Paramètres concernant l'attachement de + fichiers aux réunions + + accepted_files : Tableau des extensions qui sont autorisées. + +3.3 Initialisation de la base + +Tout les fichiers nécessaires sont rangés dans le +dossier "install". Vous utiliserez principalement le +fichier "RAZBase.php". Appelé au travers du serveur web, +il vous permettra automatiquement de mettre en place la +structure de la base de données, et optionnellement, +d'insérer un jeu d'essai pour tester l'application sur +votre serveur. Si vous ne souhaitez pas utiliser de +compte SQL ayant le droit d'altérer la structure des +tables de votre base avec ce script php, vous pouvez +exécuter le script "base.sql" avec votre client SQL +favori. Le jeu d'essai se trouve dans le fichier "jeu_essai.sql". + +3.4 Configuration par défaut des comptes + +Dans le fichier de configuration modèle, un +super-utilisateur est configuré : +inglebert@iut-blagnac.fr et le jeu d'essai proposé au +paragraphe précédent permet de créer des utilisateurs, +et en particulier inglebert@iut-blagnac.fr. + +Par défaut, vous pourrez donc vous connecter en tant +qu'administrateur avec ce compte. Le jeu d'essai met ce +compte avec comme mode d'authentification "bypass", ce +qui signifie qu'aucun mot de passe est nécessaire. Pour +utiliser un vrai système d'authentification, +connectez-vous avec ce compte et allez dans la page "Mon Profil" + pour choisir une autre mode d'authentification. + +4 Maintenance + +4.1 Visualisation des objets et des fichiers + +Une page d'administration est prévue à cet effet, et +elle n'est accessible que par un "super-utilisateur", +c'est à dire un utilisateur consigné dans le fichier de +configuration principal en tant que tel, confère [sub:Configuration]. + +4.2 Nettoyage de la base + +À partir de la page d'administration décrite dans le +paragraphe précédent, vous pouvez aussi purger les +fichiers attachés et les objets de la base de données +devenus obsolètes. L'aide contextuelle de cette page +vous expliquera comment faire. Il est vivement +conseillé de faire une sauvegarde de la base de données +et des fichiers joints aux réunions avant d'utiliser +cet outil car l'erreur de manipulation ou de +programmation est toujours possible... + +5 Authentification dédiée - Personnalisation + +AWOR utilise un système d'authentification dédiée de +sorte qu'aucun mot de passe ne soit stocké, et que +l'utilisateur n'ait pas besoin d'en retenir un nouveau. +Le code d'authentification à été écrit de manière à +être maléable et est extensible. Le coeur du système +d'authentification se trouve dans le fichier "auth_dialog.php" +. Vous y trouverez une section commençant par le +commentaire ci-dessous. + +/*************************************************** + +** Ajouter d'autres mode d'authentification ici ! ** + +***************************************************/ + +Comme l'indique ce commentaire, vous pourrez ajouter à +cet endroit une portion de code pour utiliser un autre +service d'authentification. La syntaxe est la suivante : + +case '': + +/* Eventuellement du code préléminaire */ + +$auth_is_ok=; + +if ( ! $auth_is_ok ) + +{ // On exécute la ligne ci-dessous que si +l'authentificaiton à échouée + + + +$errmsg=; + +} + +break; + +Il vous suffit de remplacer les éléments entre chevrons +dans le code ci-dessus et de le coller dans "auth_dialog.inc.php" + pour pouvoir utiliser un nouveau mode +d'authentification. Reste à donner à l'utilisateur la +capacité de l'utiliser. Vous devrez encore, d'une part, +ajouter dans la base de données le à +l'énumération du champ "methodeAuth" de la table "Personne" +, et d'autre part proposer à l'utilisateur d'utiliser +ce mode d'authentification en modifiant la page "profil.php". diff --git a/beta_accents/fct_adm.inc.php b/beta_accents/fct_adm.inc.php new file mode 100644 index 0000000..1b68b06 --- /dev/null +++ b/beta_accents/fct_adm.inc.php @@ -0,0 +1,33 @@ +\n\n\n"; + echo "$row_begin" . implode("\n",array_keys($row)) . "$row_end\n"; + echo "\n\n\n"; + do + { + echo "\n\t" . implode("\n",$row) . "\n\n"; + } while ( $row = mysql_fetch_assoc($result) ); + echo "\n\n"; + } +} + + + +html_generate_MySQLTableSuppr('AWOR_Reunion','idR'); + +?> \ No newline at end of file diff --git a/beta_accents/install/RAZbase.php b/beta_accents/install/RAZbase.php new file mode 100644 index 0000000..9b9fa25 --- /dev/null +++ b/beta_accents/install/RAZbase.php @@ -0,0 +1,130 @@ +Impossible d\'ouvrir le fichier ' . $filepath . "\n"; + } + else + { + if ( ! feof( $fd ) ) { $script = fgets($fd,4096); } + $request = ''; + while ( ! feof( $fd ) ) + { + $request .= fgets($fd,4096); + } + + // Explosion dans un tableau, requete par requete + $tabReq = explode(";", $request); + + // Pour chaque requete + foreach ( $tabReq as $req ) + { + $req=trim($req); + if ( $req !== "" ) + { + // affichage de verification + echo '

' . str_replace("\n", '
', htmlspecialchars( $req) ) ."
\n"; + + // execution de la requete et affichage de l'erreur s'il y a lieu + if ( ! mysql_query($req) ) + { + echo '
' . 'Erreur No ' . mysql_errno() . ' : ' . htmlspecialchars( mysql_error() ) . "
\n"; + } + } + } + } +} +echo '' +?> + + + + AWOR - RAZBase + + + +

Remise à zéro de la base de données

+
+ +

+ Ce script va détruire toutes les tables d'une précédente installation (si elles existent) et va les recréer, dépourvues de données.
+ Vous devrez utiliser un compte SQL qui ait les droits nécessaires (DROP, CREATE TABLE...). Notez que ces droits sont superflus pour le fonctionnement normal de l'application.
+ Etes-vous sûr de vouloir réinitialiser la base de données ?
+
+
+
+
+ + +

+
+ + +'; + $errmsg = SQLConnect( addslashes($_POST['SQLhost']),addslashes($_POST['SQLuser']),addslashes($_POST['SQLpwd']),addslashes($_POST['SQLdb']) ); + if ( $_POST['confirm'] === '1' ) + { + if ( is_string($errmsg) ) { echo $errmsg; } else + { + SQLFileExec('base.sql'); +?> +

+
+

+ Si vous le souhaitez, vous pouvez insérer un jeu d'essai pour tester l'application.
+ Vous pouvez effectuer l'insertion de ce jeu d'essai avec le compte MySQL qui sera utilisé au fonctionnement de l'application, pour tester si les droits sont suffisants. +
+
+
+
+ + +

+
+ +

Retour à l'index

+ + diff --git a/beta_accents/install/base.sql b/beta_accents/install/base.sql new file mode 100644 index 0000000..6d1ba97 --- /dev/null +++ b/beta_accents/install/base.sql @@ -0,0 +1,123 @@ +-- +-- Structure de la table `AWOR_Appartenir` +-- + +DROP TABLE IF EXISTS `AWOR_Appartenir`; +CREATE TABLE IF NOT EXISTS `AWOR_Appartenir` ( + `idL` int(11) NOT NULL, + `idP` int(11) NOT NULL, + PRIMARY KEY (`idL`,`idP`) +); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `Choisir` +-- + +DROP TABLE IF EXISTS `AWOR_Choisir`; +CREATE TABLE IF NOT EXISTS `AWOR_Choisir` ( + `idC` int(11) NOT NULL, + `idP` int(11) NOT NULL, + `estDispo` set('oui','non') NOT NULL, + PRIMARY KEY (`idC`,`idP`) +); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `AWOR_Creneau` +-- + +DROP TABLE IF EXISTS `AWOR_Creneau`; +CREATE TABLE IF NOT EXISTS `AWOR_Creneau` ( + `idC` int(11) NOT NULL auto_increment, + `dateHeure` datetime NOT NULL, + `duree` int(11) NOT NULL, + `idR` int(11) NOT NULL, + PRIMARY KEY (`idC`) +); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `AWOR_Fichier` +-- + +DROP TABLE IF EXISTS `AWOR_Fichier`; +CREATE TABLE IF NOT EXISTS `AWOR_Fichier` ( + `idFic` int(11) NOT NULL auto_increment, + `nomFic` varchar(256) NOT NULL, + `idR` int(11) NOT NULL, + PRIMARY KEY (`idFic`) +); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `AWOR_Liste` +-- + +DROP TABLE IF EXISTS `AWOR_Liste`; +CREATE TABLE IF NOT EXISTS `AWOR_Liste` ( + `idL` int(11) NOT NULL auto_increment, + `libelleL` varchar(50) NOT NULL, + `estPrivee` set('oui','non') NOT NULL default 'oui', + `idP_Createur` int(11) default NULL, + PRIMARY KEY (`idL`) +); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `AWOR_Personne` +-- + +DROP TABLE IF EXISTS `AWOR_Personne`; +CREATE TABLE IF NOT EXISTS `AWOR_Personne` ( + `idP` int(11) NOT NULL auto_increment, + `courrielP` varchar(50) NOT NULL, + `loginP` varchar(50) default NULL, + `nomP` varchar(50) NOT NULL, + `prenomP` varchar(50) NOT NULL, + `estAdmin` set('oui','non') NOT NULL default 'non', + `methodeAuth` set('pop','webetud','bypass') NOT NULL default 'pop', + PRIMARY KEY (`idP`), + UNIQUE KEY `loginP` (`loginP`), + UNIQUE KEY `courrielP` (`courrielP`) +); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `AWOR_Repondre` +-- + +DROP TABLE IF EXISTS `AWOR_Repondre`; +CREATE TABLE IF NOT EXISTS `AWOR_Repondre` ( + `idR` int(11) NOT NULL, + `idP` int(11) NOT NULL, + `commentaireReponse` varchar(500) default NULL, + PRIMARY KEY (`idR`,`idP`) +); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `Reunion` +-- + +DROP TABLE IF EXISTS `AWOR_Reunion`; +CREATE TABLE IF NOT EXISTS `AWOR_Reunion` ( + `idR` int(11) NOT NULL auto_increment, + `objetR` varchar(80) NOT NULL, + `ordreJourR` varchar(250), + `lieuR` varchar(50), + `remarquesR` varchar(500), + `montrerDispoR` set('oui','non') NOT NULL default 'non', + `estAnnulee` set('oui','non') NOT NULL default 'non', + `idP_Orga` int(11) NOT NULL, + `idC_Fixe` int(11) default NULL, + `idL` int(11) default NULL, + PRIMARY KEY (`idR`) +); diff --git a/beta_accents/install/jeu_essai.sql b/beta_accents/install/jeu_essai.sql new file mode 100644 index 0000000..7723733 --- /dev/null +++ b/beta_accents/install/jeu_essai.sql @@ -0,0 +1,114 @@ +-- +-- Base de données: `awor` +-- + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Appartenir` +-- +DELETE FROM `AWOR_Appartenir`; +INSERT INTO `AWOR_Appartenir` (`idL`, `idP`) VALUES (1, 2), +(1, 3), +(1, 4), +(1, 5), +(2, 1), +(2, 2), +(2, 4), +(2, 5), +(3, 1), +(3, 2), +(3, 3), +(4, 1), +(4, 4), +(4, 5), +(5, 1), +(5, 4), +(5, 5), +(6, 1), +(6, 2), +(6, 3), +(8, 1), +(8, 2), +(8, 3), +(8, 4); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Choisir` +-- +DELETE FROM `AWOR_Choisir`; +INSERT INTO `AWOR_Choisir` (`idC`, `idP`, `estDispo`) VALUES (1, 3, 'oui'), +(6, 1, 'oui'), +(7, 1, 'non'), +(1, 2, 'oui'), +(2, 2, 'non'), +(3, 2, 'oui'), +(4, 2, 'non'), +(5, 2, 'oui'); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Creneau` +-- +DELETE FROM `AWOR_Creneau`; +INSERT INTO `AWOR_Creneau` (`idC`, `dateHeure`, `duree`, `idR`) VALUES (1, '2007-04-01 07:45:00', 645, 1), +(2, '2007-04-03 09:15:00', 75, 1), +(3, '2007-04-10 09:15:00', 75, 1), +(4, '2007-04-17 09:15:00', 75, 1), +(5, '2007-04-24 09:15:00', 75, 1), +(6, '2007-06-20 10:10:00', 80, 2), +(7, '2007-06-25 12:00:00', 30, 2), +(8, '2007-04-25 00:00:00', 0, 4); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Fichier` +-- +DELETE FROM `AWOR_Fichier`; +INSERT INTO `AWOR_Fichier` (`idFic`, `nomFic`, `idR`) VALUES (1, 'r1_READ_ME.pdf', 1), +(2, 'r2_IUP MER.txt', 2); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Liste` +-- +DELETE FROM `AWOR_Liste`; +INSERT INTO `AWOR_Liste` (`idL`, `libelleL`, `estPrivee`, `idP_Createur`) VALUES (1, 'interne_idR_1', 'oui', NULL), +(2, 'interne_idR_2', 'oui', NULL), +(3, 'Amis', 'oui', 3), +(4, 'interne_idR_3', 'oui', NULL), +(5, 'interne_idR_4', 'oui', NULL), +(6, 'Créateurs d''AWOR', 'oui', 1), +(7, 'interne_idR_5', 'oui', NULL), +(8, 'MaListePerso', 'oui', 2); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Personne` +-- +DELETE FROM `AWOR_Personne`; +INSERT INTO `AWOR_Personne` (`idP`, `courrielP`, `loginP`, `nomP`, `prenomP`, `estAdmin`, `methodeAuth`) VALUES (1, 'lpouzenc@wanadoo.fr', 'lpouzenc', 'Pouzenc', 'Ludovic', 'oui', 'pop'), +(2, 'jeremie.denoyer@etu.iut-blagnac.fr', 'jeremie.denoyer', 'jeremie', 'denoyer', 'non', 'pop'), +(3, 'julien.sere@free.fr', 'julien.sere', 'Julien', 'Sere', 'non', 'pop'), +(4, 'soule@iut-blagnac.fr', 'soule@iut-blagnac.fr', 'Soulé', 'Geneviève', 'non', 'pop'), +(5, 'inglebert@iut-blagnac.fr', 'inglebert@iut-blagnac.fr', 'Inglebert', 'Jean-Michel', 'non', 'bypass'); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Repondre` +-- +DELETE FROM `AWOR_Repondre`; +INSERT INTO `AWOR_Repondre` (`idR`, `idP`, `commentaireReponse`) VALUES (1, 1, 'Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...'), +(1, 3, 'Un commentaire à [ | ) @ {[| @#~{[#`|['), +(3, 1, 'Réunion juste pour le test...'); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Reunion` +-- +DELETE FROM `AWOR_Reunion`; +INSERT INTO `AWOR_Reunion` (`idR`, `objetR`, `ordreJourR`, `lieuR`, `remarquesR`, `montrerDispoR`, `estAnnulee`, `idP_Orga`, `idC_Fixe`, `idL`) VALUES (1, 'Recette du projet tuteuré', 'Recette de cette magnifique application :-)', 'Salle 219', 'Aucune', 'non', 'non', 1, NULL, 1), +(2, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 3, NULL, 2), +(3, 'Réunion annulée - essais', '', 'Nullepart', '', 'oui', 'oui', 1, NULL, 4), +(4, 'Réunion fixée pour tester', '', '', '', 'non', 'non', 1, 8, 5), +(5, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 2, NULL, 7); diff --git a/beta_accents/install/jeu_essai.sql~ b/beta_accents/install/jeu_essai.sql~ new file mode 100644 index 0000000..f2d25b3 --- /dev/null +++ b/beta_accents/install/jeu_essai.sql~ @@ -0,0 +1,114 @@ +-- +-- Base de données: `awor` +-- + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Appartenir` +-- +DELETE FROM `AWOR_Appartenir`; +INSERT INTO `AWOR_Appartenir` (`idL`, `idP`) VALUES (1, 2), +(1, 3), +(1, 4), +(1, 5), +(2, 1), +(2, 2), +(2, 4), +(2, 5), +(3, 1), +(3, 2), +(3, 3), +(4, 1), +(4, 4), +(4, 5), +(5, 1), +(5, 4), +(5, 5), +(6, 1), +(6, 2), +(6, 3), +(8, 1), +(8, 2), +(8, 3), +(8, 4); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Choisir` +-- +DELETE FROM `AWOR_Choisir`; +INSERT INTO `AWOR_Choisir` (`idC`, `idP`, `estDispo`) VALUES (1, 3, 'oui'), +(6, 1, 'oui'), +(7, 1, 'non'), +(1, 2, 'oui'), +(2, 2, 'non'), +(3, 2, 'oui'), +(4, 2, 'non'), +(5, 2, 'oui'); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Creneau` +-- +DELETE FROM `AWOR_Creneau`; +INSERT INTO `AWOR_Creneau` (`idC`, `dateHeure`, `duree`, `idR`) VALUES (1, '2007-04-01 07:45:00', 645, 1), +(2, '2007-04-03 09:15:00', 75, 1), +(3, '2007-04-10 09:15:00', 75, 1), +(4, '2007-04-17 09:15:00', 75, 1), +(5, '2007-04-24 09:15:00', 75, 1), +(6, '2007-06-20 10:10:00', 80, 2), +(7, '2007-06-25 12:00:00', 30, 2), +(8, '2007-04-25 00:00:00', 0, 4); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Fichier` +-- +DELETE FROM `AWOR_Fichier`; +INSERT INTO `AWOR_Fichier` (`idFic`, `nomFic`, `idR`) VALUES (1, 'r1_READ_ME.pdf', 1), +(2, 'r2_IUP MER.txt', 2); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Liste` +-- +DELETE FROM `AWOR_Liste`; +INSERT INTO `AWOR_Liste` (`idL`, `libelleL`, `estPrivee`, `idP_Createur`) VALUES (1, 'interne_idR_1', 'oui', NULL), +(2, 'interne_idR_2', 'oui', NULL), +(3, 'Amis', 'oui', 3), +(4, 'interne_idR_3', 'oui', NULL), +(5, 'interne_idR_4', 'oui', NULL), +(6, 'Créateurs d''AWOR', 'oui', 1), +(7, 'interne_idR_5', 'oui', NULL), +(8, 'MaListePerso', 'oui', 2); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Personne` +-- +DELETE FROM `AWOR_Personne`; +INSERT INTO `AWOR_Personne` (`idP`, `courrielP`, `loginP`, `nomP`, `prenomP`, `estAdmin`, `methodeAuth`) VALUES (1, 'lpouzenc@wanadoo.fr', 'lpouzenc', 'Pouzenc', 'Ludovic', 'oui', 'bypass'), +(2, 'jeremie.denoyer@etu.iut-blagnac.fr', 'jeremie.denoyer', 'jeremie', 'denoyer', 'non', 'bypass'), +(3, 'julien.sere@free.fr', 'julien.sere', 'Julien', 'Sere', 'non', 'bypass'), +(4, 'soule@iut-blagnac.fr', 'soule@iut-blagnac.fr', 'Soulé', 'Geneviève', 'non', 'bypass'), +(5, 'inglebert@iut-blagnac.fr', 'inglebert@iut-blagnac.fr', 'Inglebert', 'Jean-Michel', 'non', 'bypass'); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Repondre` +-- +DELETE FROM `AWOR_Repondre`; +INSERT INTO `AWOR_Repondre` (`idR`, `idP`, `commentaireReponse`) VALUES (1, 1, 'Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...'), +(1, 3, 'Un commentaire à [ | ) @ {[| @#~{[#`|['), +(3, 1, 'Réunion juste pour le test...'); + +-- -------------------------------------------------------- +-- +-- Contenu de la table `AWOR_Reunion` +-- +DELETE FROM `AWOR_Reunion`; +INSERT INTO `AWOR_Reunion` (`idR`, `objetR`, `ordreJourR`, `lieuR`, `remarquesR`, `montrerDispoR`, `estAnnulee`, `idP_Orga`, `idC_Fixe`, `idL`) VALUES (1, 'Recette du projet tuteuré', 'Recette de cette magnifique application :-)', 'Salle 219', 'Aucune', 'non', 'non', 1, NULL, 1), +(2, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 3, NULL, 2), +(3, 'Réunion annulée - essais', '', 'Nullepart', '', 'oui', 'oui', 1, NULL, 4), +(4, 'Réunion fixée pour tester', '', '', '', 'non', 'non', 1, 8, 5), +(5, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 2, NULL, 7); diff --git a/beta_old1/app/admin.php b/beta_old1/app/admin.php deleted file mode 100644 index 4248d2a..0000000 --- a/beta_old1/app/admin.php +++ /dev/null @@ -1,63 +0,0 @@ -\n"; - -generate_html_divs_menu(); -?> -
-

- > Accueil - > Administration -

-
-' . "\n"; - - if ( isset($_REQUEST['action']) ) - { - switch ($_REQUEST['action']) - { - case 'delete_from_AWOR_Liste': - case 'delete_from_AWOR_Fichier': - case 'delete_from_AWOR_Reunion': - case 'delete_from_AWOR_Personne': - $_REQUEST['action'](); - break; - default: - $errmsg = 'Impossible de traiter la requete : paramètre erroné'."\n"; - } - } - - if ( !isset($_SESSION['session_loginP']) || ( !is_integer(array_search($_SESSION['session_loginP'],$CONFIG['SUPERUSERS'],true))) ) - { - $errmsg='Vous n\'avez pas le droit de consulter cette page : vous n\'êtes pas un administrateur !'; - generate_html_div_errmsg($errmsg); - echo ''; - exit(); - } - - - // TODO : fonctions qui purgent les tables filles selon un id donné, pour chaque cas mère-fille (indiqués plus bas) - - // Fonctions qui génèrent des tableaux listant tous les objets de la base, et permettant la sélection multiple et l'éffacement (en cascade) - html_generate_MySQLTableSuppr('AWOR_Liste','idL'); // Permet de virer des liste - echo "
\n"; - html_generate_MySQLTableSuppr('AWOR_Fichier','idFic'); // Permet de virer des fichiers, doit purger physiquement sur le disque - echo "
\n"; - html_generate_MySQLTableSuppr('AWOR_Reunion','idR', 'idR,objetR,estAnnulee,idP_Orga,idC_Fixe,idL'); // Permet de virer des gens, doit purger les tables Creneau et Choisir, Repondre, Fichiers - echo "
\n"; - html_generate_MySQLTableSuppr('AWOR_Personne','idP'); // Permet de virer des gens, doit purger les tables Appartenir, Reunion - -echo " \n"; -generate_html_div_footer(); -?> - - diff --git a/beta_old1/app/auth_dialog.php b/beta_old1/app/auth_dialog.php deleted file mode 100644 index 55e6c16..0000000 --- a/beta_old1/app/auth_dialog.php +++ /dev/null @@ -1,121 +0,0 @@ - - -

AWOR

- - -
-

Application Web d'Organisation de Réunion

-

Veuillez vous identifier

- ' . "\n"; ?> - - ' . "\n" ; ?> -
-
- Votre identifiant : - -
-
- Votre mot de passe : - -
-
- - -
-
-' . "\n"; } ?> - -
- - - diff --git a/beta_old1/app/css/default.css b/beta_old1/app/css/default.css deleted file mode 100644 index b8ecc3d..0000000 --- a/beta_old1/app/css/default.css +++ /dev/null @@ -1,240 +0,0 @@ - -img { border : none ; } -body { - color: #000000; - background-color:#F5F5DC; - font-family: Verdana, Arial, Helvetica, sans-serif; - padding:0px; - margin:0px; - min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ -} -table { - border-spacing:0px; - margin: auto; - padding: 0px; - width:98%; - text-align:center; - border: thin solid #E0E0E0; - border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ - background-color:#F7F7F7; -} -th { - border-right:none; - font-weight: bold; - color: #FFFFFF; - background-color: #551A8B; -} -td { - border-bottom-width: thin; - border-bottom-style: solid; - border-bottom-color: #E0E0E0; -} -th a:link, th a:visited { - font-size: x-small; - color: #FFFFFF; -} -h1 { - font-weight: bold; - color: #9999FF; - text-align: center; -} -h2 { - color: #5C5CFF; - margin: 0px; -} -select { width:auto; } -/***** Titre *****/ -#titre h2 { - color: #551A8B; - margin-left:50px; - height:50px; - width:200px; - background-image:url(default_img/titre.png); - background-position:left; - background-repeat:no-repeat; - color:#FFFFFF; - font-size:0px; -} -#titre { - height:50px; - clear:left; - background-color:#FFFFFF; - background-image:url(../images/logo.png); - background-position:left; - background-repeat:no-repeat; -} - -/*****************/ -/***** Menu *****/ -#menu { - padding:0px; - margin:0px; - width:100%; - height:20px; - background-color:#551A8B; -} -#menu a { - text-decoration:none; - display:block; - font-weight:bold; - text-align:center; - color:#FFFFFF; -} -#menu a:hover { - color:#000000; - background-color:#FFFFFF; -} -/* Pour IE5/MAC \*/#menu a{float:none;}/**/ -#menu li { - list-style: none; - float:left; - padding:0; - margin:0; - width:120px; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; -} -#menu #deconnection { - float:right; -} - -#main_menu { - -} -/*********************/ -/***** Sous Menu *****/ -#sous_menu { - clear:left; - padding-top:5px; - padding-bottom:3px; - padding-left:15px; - border-bottom:1px solid #000000; - background-color:#8470FF; -} -/* -------------- Arbre -------------------*/ -p.arbre { - font-size: small; - color: #FFFFFF; - text-align: left; - margin-top: 0px; - margin-right: 0px; - margin-bottom: 0px; - margin-left: 0px; -} -p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } - -/*******************/ -/***** Contenu *****/ -#contenu { - padding-top:10px; - padding-bottom:20px; - padding-left:5px; - padding-right:22%;/*225px;*/ /*200 + 5*2 + 2*2 + (pour ie 5*2) */ -} -#help { - text-align:justify; - color:#000000; - float:right; - margin:5px; - padding:5px; - border:thin solid #000000; - background-color:#F7F7F7; - font-size:small; - width:18%; -} -#help h2 -{ - text-align:center; - font-size:medium; - color:#FFFFFF; - background-color:#551A8B; - margin-top:0; - margin-bottom:10px; -} - -#no_help h2 -{ - display:none; -} -.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_new { - display: none; - position: absolute; - left:50%; - top:50%; - border: 3px solid #000000; - background-color: #8470FF; - z-index: 500; - font-size: 80%; - text-align:center; -} -.popup { - width: 20em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -10em ;/*moitié de width */ -} - -.popup_creneau { - width: 45em; - height: 22em; - margin-top: -11em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_personne { - width: 45em; - height: 25em; - margin-top: -12.5em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_commentaire { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_fichier { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_new { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_new h2 -{ - background:#551A8B; - color:#FFFFFF; - font-size:small; - border-bottom:inherit; -} - -div.popup_contenu -{ - margin-top:1em; - vertical-align:middle; -} - -.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_new input -{ - cursor:pointer; -} - -#masque -{ - width:100%; - height:100%; - display: none; - position: absolute; - left:0px; - top:0px; - background-image:url(../images/masque.png); - background-repeat:repeat; - z-index: 499; -} \ No newline at end of file diff --git a/beta_old1/app/css/default_img/README.txt b/beta_old1/app/css/default_img/README.txt deleted file mode 100644 index fec6abf..0000000 --- a/beta_old1/app/css/default_img/README.txt +++ /dev/null @@ -1 +0,0 @@ -C'est ici qu'on stockera les images propre au style default.css diff --git a/beta_old1/app/css/default_img/README.txt~ b/beta_old1/app/css/default_img/README.txt~ deleted file mode 100644 index e69de29..0000000 diff --git a/beta_old1/app/css/default_img/titre.png b/beta_old1/app/css/default_img/titre.png deleted file mode 100644 index d8d9ce6..0000000 Binary files a/beta_old1/app/css/default_img/titre.png and /dev/null differ diff --git a/beta_old1/app/css/ice.css b/beta_old1/app/css/ice.css deleted file mode 100644 index 9418fd9..0000000 --- a/beta_old1/app/css/ice.css +++ /dev/null @@ -1,342 +0,0 @@ -em {color:#F00;} -img { border : none ; } -img.spacing{ margin: 0 0.2em 0 0.2em;} -body { - color: #000000; - background-color:#F5F5DC; - font-family: Verdana, Arial, Helvetica, sans-serif; - padding:0px; - margin:0px; - min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ -} -table { - border-spacing:0px; - margin: auto; - padding: 0px; - width:98%; - text-align:center; - border: thin solid #E0E0E0; - border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ - background-color:#F7F7F7; -} -th { - border-right:none; - font-weight: bold; - color: #FFFFFF; - background-color:#551A8B; -} -th.selected {color:#FFF;background-color:#8470FF} -td { - border-bottom-width: thin; - border-bottom-style: solid; - border-bottom-color: #E0E0E0; -} -th a:link, th a:visited { - font-size: x-small; - color: #FFFFFF; -} - -h1 { - font-weight: bold; - color: #9999FF; - text-align: center; -} -h2 { - color: #5C5CFF; - margin: 0px; -} -.reunion_fixee { - color:#bf7e00; -} -.reunion_en_cours { - color:#9fbf00; -} -.reunion_annulee { - color:#bf2000; -} -select { width:auto; } -/***** Titre *****/ -#titre h2 { - color: #551A8B; - margin-left:50px; - height:50px; - width:200px; - background-image:url(ice_img/titre.png); - background-position:left; - background-repeat:no-repeat; - color:#FFFFFF; - font-size:0px; -} -#titre { - height:50px; - clear:left; - background-color:#FFFFFF; - background-image:url(ice_img/logo.png); - background-position:left; - background-repeat:no-repeat; -} - -/*****************/ -/***** Menu *****/ -#menu { - padding:0px; - margin:0px; - width:100%; - height:1.5em; - background-color:#551A8B; -} -#menu a { - text-decoration:none; - display:block; - font-weight:bold; - text-align:center; - color:#FFFFFF; - height:1.5em; -} -#menu a:hover { - color:#000000; - background-color:#FFFFFF; - height:1.5em; -} -/* Pour IE5/MAC \*/#menu a{float:none;}/**/ -#menu li { - list-style: none; - float:left; - padding:0; - margin:0; - width:10em; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; -} -#menu #deconnection { - float:right; -} - -#main_menu { - -} -/*********************/ -/***** Sous Menu *****/ -#sous_menu { - clear:left; - padding-top:5px; - padding-bottom:3px; - padding-left:15px; - border-bottom:1px solid #000000; - background-color:#8470FF; -} -/* -------------- Arbre -------------------*/ -p.arbre { - font-size: small; - color: #FFFFFF; - text-align: left; - margin-top: 0px; - margin-right: 0px; - margin-bottom: 0px; - margin-left: 0px; -} -p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } - -/*******************/ -/***** Contenu *****/ -#contenu { - padding-top:10px; - padding-bottom:20px; - padding-left:5px; - float:left; - width:78%; -} -#help { - text-align:justify; - color:#000000; - float:right; - margin:5px; - padding:5px; - border:thin solid #000000; - background-color:#F7F7F7; - font-size:small; - width:18%; -} - -#help h2 , #help a -{ - text-align:center; - font-size:medium; - color:#FFFFFF; - background-color:#551A8B; - color:#FFFFFF; - margin-top:0; - margin-bottom:10px; -} -#no_help, #no_help h2 -{ - display:none; -} - - -.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { - display: none; - position: absolute; - left:50%; - top:50%; - border: 3px solid #000000; - background-color: #8470FF; - z-index: 500; - font-size: 80%; - text-align:center; -} -.popup { - width: 20em; - height: 10em; - margin-top: -4em ;/*moitié de height */ - margin-left: -10em ;/*moitié de width */ -} - -.popup_creneau { - width: 45em; - height: 22em; - margin-top: -11em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_personne { - width: 45em; - height: 30em; - margin-top: -15em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_commentaire { - width: 30em; - height: 14em; - margin-top: -7em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_fichier { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} -.popup_deletelist { - width: 26em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -13em ;/*moitié de width */ -} - -.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 -{ - background:#551A8B; - color:#FFFFFF; - font-size:small; - border-bottom:inherit; -} - -div.popup_contenu -{ - margin-top:1em; - vertical-align:middle; -} -div.popup_contenu em -{ - font-size:x-small; - color:#FFF; -} - -.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input -{ - cursor:pointer; -} - -#masque -{ - width:100%; - height:100%; - display: none; - position: absolute; - left:0px; - top:0px; - background-image:url(ice_img/masque.png); - background-repeat:repeat; - z-index: 499; -} - -#page_accueil h1 -{ - background:#551A8B; - color:#FFF; - margin-top:0; -} - -#page_accueil -{ - text-align:center; -} - -#msg -{ - display:none; - position:absolute; - text-align:center; - left:50%; - margin-left:-20%; - width:40%; - background-color:#551A8B; - top:-10px; - padding-top:15px; - padding-bottom:10px; - color:#FFF; - -moz-border-radius:16px; -} -#msg em -{ - color:#FFF; -} - - -#footer -{ - display:block; - - position:fixed; - left:0px; - width:100%; - background-color:#551A8B; - top:100%; - height:2.3em; - padding-top:-2.3em; - margin-top:-2.3em; - color:#FFF; - font-size:x-small; -} -#footer ul -{ - display:inline; - list-style-type:none; - white-space:nowrap; -} -#footer li.right { - list-style: none; - float:right; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; - padding-top:0.5em; - margin-top:0px; - padding-right:10px; -} -#footer li { - list-style: none; - float:right; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; - margin-top:-14px; - padding-right:30px; -} -#footer li.left { - list-style: none; - float:left; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; - margin-top:0px; - padding-left:30px; -} diff --git a/beta_old1/app/css/ice_img/README.txt b/beta_old1/app/css/ice_img/README.txt deleted file mode 100644 index b81d613..0000000 --- a/beta_old1/app/css/ice_img/README.txt +++ /dev/null @@ -1 +0,0 @@ -C'est ici qu'on stockera les images propre au style Ice.css diff --git a/beta_old1/app/css/ice_img/logo.png b/beta_old1/app/css/ice_img/logo.png deleted file mode 100644 index a768d45..0000000 Binary files a/beta_old1/app/css/ice_img/logo.png and /dev/null differ diff --git a/beta_old1/app/css/ice_img/masque.png b/beta_old1/app/css/ice_img/masque.png deleted file mode 100644 index 45a6027..0000000 Binary files a/beta_old1/app/css/ice_img/masque.png and /dev/null differ diff --git a/beta_old1/app/css/ice_img/titleTable.png b/beta_old1/app/css/ice_img/titleTable.png deleted file mode 100644 index e6c02d9..0000000 Binary files a/beta_old1/app/css/ice_img/titleTable.png and /dev/null differ diff --git a/beta_old1/app/css/ice_img/titre.png b/beta_old1/app/css/ice_img/titre.png deleted file mode 100644 index d8d9ce6..0000000 Binary files a/beta_old1/app/css/ice_img/titre.png and /dev/null differ diff --git a/beta_old1/app/css/ice_moche.css b/beta_old1/app/css/ice_moche.css deleted file mode 100644 index 0004b1a..0000000 --- a/beta_old1/app/css/ice_moche.css +++ /dev/null @@ -1,233 +0,0 @@ -img { border : none ; } -body { - color: #000000; - background-color:#F5F5DC; - font-family: Verdana, Arial, Helvetica, sans-serif; - padding:0px; - margin:0px; - min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ -} -table { - border-spacing:0px; - margin: auto; - padding: 0px; - width:98%; - text-align:center; - border: thin solid #E0E0E0; - border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ - background-color:#F7F7F7; -} -th { - border-right:none; - font-weight: bold; - color: #FFFFFF; - background-color:#551A8B; -} - -th.selected {color:#8470FF;} -td { - border-bottom-width: thin; - border-bottom-style: solid; - border-bottom-color: #E0E0E0; -} -th a:link, th a:visited { - font-size: x-small; - color: #FFFFFF; -} - -h1 { - font-weight: bold; - color: #9999FF; - text-align: center; -} -h2 { - color: #5C5CFF; - margin: 0px; -} -select { width:auto; } -/***** Titre *****/ -#titre h2 { - color: #551A8B; - height:60px; - width:200px; - margin-left:60px; - padding-top:5px; -/* background-image:url(ice_img/titre.png); - background-position:left; - background-repeat:no-repeat;*/ - color:#FFFFFF; - font-size:40px; - -} -#titre { - height:60px; - padding-top:5px; - width:100%; - clear:left; - background-color:#551A8B; - background-image:url(ice_img/logo.png); - background-position:left; - background-repeat:no-repeat; -} - -/*****************/ -/***** Menu *****/ -#menu { - padding:0px; - margin:0px; - color:#551A8B; - width:15em; - background-color:#FFFFFF; -} -#menu a { - text-decoration:none; - display:block; - font-weight:bold; - text-align:center; - color:#551A8B; -} -#menu a:hover { - color:#FFFFFF; - background-color:#551A8B; -} -/* Pour IE5/MAC \*/#menu a{float:none;}/**/ -#menu li { - list-style: none; - padding:0px; - margin:0px; - vertical-align:middle; -} -#menu #deconnection { -} - -#main_menu { - -} -/*********************/ -/***** Sous Menu *****/ -#sous_menu { - display:none; -} - -/*******************/ -/***** Contenu *****/ -#contenu { - padding-top:10px; - padding-bottom:10px; - padding-right:3em; - padding_left:3em; - position:absolute; - top:60px; - left:15em; - -} -#help { - text-align:justify; - color:#000000; - float:left; - margin-top:20px; - margin-left:10px; - padding:5px; - border:thin solid #000000; - background-color:#F7F7F7; - font-size:small; - width:15em; -} - -#help h2 , #help a -{ - text-align:center; - font-size:medium; - color:#FFFFFF; - background-color:#551A8B; - color:#FFFFFF; - margin-top:0; - margin-bottom:10px; -} -#no_help, #no_help h2 -{ - display:none; -} - - -.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { - display: none; - position: absolute; - left:50%; - top:50%; - border: 3px solid #000000; - background-color: #8470FF; - z-index: 500; - font-size: 80%; - text-align:center; -} -.popup { - width: 20em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -10em ;/*moitié de width */ -} - -.popup_creneau { - width: 45em; - height: 22em; - margin-top: -11em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_personne { - width: 45em; - height: 30em; - margin-top: -15em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_commentaire { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_fichier { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} -.popup_deletelist { - width: 26em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -13em ;/*moitié de width */ -} - -.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 -{ - background:#551A8B; - color:#FFFFFF; - font-size:small; - border-bottom:inherit; -} - -div.popup_contenu -{ - margin-top:1em; - vertical-align:middle; -} - -.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input -{ - cursor:pointer; -} - -#masque -{ - width:100%; - height:100%; - display: none; - position: absolute; - left:0px; - top:0px; - background-image:url(ice_img/masque.png); - background-repeat:repeat; - z-index: 499; -} diff --git a/beta_old1/app/css/ice_moche_img/README.txt b/beta_old1/app/css/ice_moche_img/README.txt deleted file mode 100644 index b81d613..0000000 --- a/beta_old1/app/css/ice_moche_img/README.txt +++ /dev/null @@ -1 +0,0 @@ -C'est ici qu'on stockera les images propre au style Ice.css diff --git a/beta_old1/app/css/ice_moche_img/logo.png b/beta_old1/app/css/ice_moche_img/logo.png deleted file mode 100644 index a768d45..0000000 Binary files a/beta_old1/app/css/ice_moche_img/logo.png and /dev/null differ diff --git a/beta_old1/app/css/ice_moche_img/masque.png b/beta_old1/app/css/ice_moche_img/masque.png deleted file mode 100644 index 45a6027..0000000 Binary files a/beta_old1/app/css/ice_moche_img/masque.png and /dev/null differ diff --git a/beta_old1/app/css/ice_moche_img/titleTable.png b/beta_old1/app/css/ice_moche_img/titleTable.png deleted file mode 100644 index e6c02d9..0000000 Binary files a/beta_old1/app/css/ice_moche_img/titleTable.png and /dev/null differ diff --git a/beta_old1/app/css/ice_moche_img/titre.png b/beta_old1/app/css/ice_moche_img/titre.png deleted file mode 100644 index d8d9ce6..0000000 Binary files a/beta_old1/app/css/ice_moche_img/titre.png and /dev/null differ diff --git a/beta_old1/app/css/ice_moche_nohelp.css b/beta_old1/app/css/ice_moche_nohelp.css deleted file mode 100644 index 9032594..0000000 --- a/beta_old1/app/css/ice_moche_nohelp.css +++ /dev/null @@ -1,252 +0,0 @@ - -img { border : none ; } -body { - color: #000000; - background-color:#F5F5DC; - font-family: Verdana, Arial, Helvetica, sans-serif; - padding:0px; - margin:0px; - min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ -} -table { - border-spacing:0px; - margin: auto; - padding: 0px; - width:98%; - text-align:center; - border: thin solid #E0E0E0; - border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ - background-color:#F7F7F7; -} -th { - border-right:none; - font-weight: bold; - color: #FFFFFF; - background-color: #551A8B; -} -th.selected {color:#8470FF;} -td { - border-bottom-width: thin; - border-bottom-style: solid; - border-bottom-color: #E0E0E0; -} -th a:link, th a:visited { - font-size: x-small; - color: #FFFFFF; -} -h1 { - font-weight: bold; - color: #9999FF; - text-align: center; -} -h2 { - color: #5C5CFF; - margin: 0px; -} -select { width:auto; } -/***** Titre *****/ -#titre h2 { - color: #551A8B; - margin-left:50px; - height:50px; - width:200px; - background-image:url(ice_img/titre.png); - background-position:left; - background-repeat:no-repeat; - color:#FFFFFF; - font-size:0px; -} -#titre { - height:50px; - clear:left; - background-color:#FFFFFF; - background-image:url(ice_img/logo.png); - background-position:left; - background-repeat:no-repeat; -} - -/*****************/ -/***** Menu *****/ -#menu { - padding:0px; - margin:0px; - width:100%; - height:1.5em; - background-color:#551A8B; -} -#menu a { - text-decoration:none; - display:block; - font-weight:bold; - text-align:center; - color:#FFFFFF; - height:1.5em; -} -#menu a:hover { - color:#000000; - background-color:#FFFFFF; - height:1.5em; -} -/* Pour IE5/MAC \*/#menu a{float:none;}/**/ -#menu li { - list-style: none; - float:left; - padding:0; - margin:0; - width:10em; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; -} -#menu #deconnection { - float:right; -} - -#main_menu { - -} -/*********************/ -/***** Sous Menu *****/ -#sous_menu { - clear:left; - padding-top:5px; - padding-bottom:3px; - padding-left:15px; - border-bottom:1px solid #000000; - background-color:#8470FF; -} -/* -------------- Arbre -------------------*/ -p.arbre { - font-size: small; - color: #FFFFFF; - text-align: left; - margin-top: 0px; - margin-right: 0px; - margin-bottom: 0px; - margin-left: 0px; -} -p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } - - -/*******************/ -/***** Contenu *****/ - -#contenu { - padding-top:10px; - padding-bottom:20px; - padding-left:5px; - padding-right:5px; - float:left; - width:95%; -} -#no_help { - display:block; - text-align:justify; - color:#000000; - float:right; - margin:0px; - padding:1px; - border:thin solid #000000; - background-color:#F7F7F7; - font-size:small; - width:3%; -} -#no_help h2 , #no_help a -{ - display:block; - text-align:center; - font-size:medium; - color:#FFFFFF; - background-color:#551A8B; - margin:0px; - padding:0px; -} -#help,#help h2 -{ - display:none; -} - - - - -.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { - display: none; - position: absolute; - left:50%; - top:50%; - border: 3px solid #000000; - background-color: #8470FF; - z-index: 500; - font-size: 80%; - text-align:center; -} -.popup { - width: 20em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -10em ;/*moitié de width */ -} - -.popup_creneau { - width: 45em; - height: 22em; - margin-top: -11em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_personne { - width: 45em; - height: 30em; - margin-top: -15em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_commentaire { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_fichier { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_deletelist { - width: 26em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -13em ;/*moitié de width */ -} - -.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 -{ - background:#551A8B; - color:#FFFFFF; - font-size:small; - border-bottom:inherit; -} - -div.popup_contenu -{ - margin-top:1em; - vertical-align:middle; -} - -.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input -{ - cursor:pointer; -} - -#masque -{ - width:100%; - height:100%; - display: none; - position: absolute; - left:0px; - top:0px; - background-image:url(ice_img/masque.png); - background-repeat:repeat; - z-index: 499; -} \ No newline at end of file diff --git a/beta_old1/app/css/ice_nohelp.css b/beta_old1/app/css/ice_nohelp.css deleted file mode 100644 index 03c382f..0000000 --- a/beta_old1/app/css/ice_nohelp.css +++ /dev/null @@ -1,345 +0,0 @@ -em {color:#F00;} -img { border : none ; } -img.spacing{ margin: 0 0.5em 0 0.5em;} -body { - color: #000000; - background-color:#F5F5DC; - font-family: Verdana, Arial, Helvetica, sans-serif; - padding:0px; - margin:0px; - min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ - height: 100%; -} -table { - border-spacing:0px; - margin: auto; - padding: 0px; - width:98%; - text-align:center; - border: thin solid #E0E0E0; - border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ - background-color:#F7F7F7; -} -th { - border-right:none; - font-weight: bold; - color: #FFFFFF; - background-color: #551A8B; -} -th.selected {color:#FFF;background-color:#8470FF} -td { - border-bottom-width: thin; - border-bottom-style: solid; - border-bottom-color: #E0E0E0; -} -th a:link, th a:visited { - font-size: x-small; - color: #FFFFFF; -} -h1 { - font-weight: bold; - color: #9999FF; - text-align: center; -} -h2 { - color: #5C5CFF; - margin: 0px; -} -.reunion_fixee { - color:#bf7e00; -} -.reunion_en_cours { - color:#9fbf00; -} -.reunion_annulee { - color:#bf2000; -} -select { width:auto; } -/***** Titre *****/ -#titre h2 { - color: #551A8B; - margin-left:50px; - height:50px; - width:200px; - background-image:url(ice_img/titre.png); - background-position:left; - background-repeat:no-repeat; - color:#FFFFFF; - font-size:0px; -} -#titre { - height:50px; - clear:left; - background-color:#FFFFFF; - background-image:url(ice_img/logo.png); - background-position:left; - background-repeat:no-repeat; -} - -/*****************/ -/***** Menu *****/ -#menu { - padding:0px; - margin:0px; - width:100%; - height:1.5em; - background-color:#551A8B; -} -#menu a { - text-decoration:none; - display:block; - font-weight:bold; - text-align:center; - color:#FFFFFF; - height:1.5em; -} -#menu a:hover { - color:#000000; - background-color:#FFFFFF; - height:1.5em; -} -/* Pour IE5/MAC \*/#menu a{float:none;}/**/ -#menu li { - list-style: none; - float:left; - padding:0; - margin:0; - width:10em; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; -} -#menu #deconnection { - float:right; -} - -#main_menu { - -} -/*********************/ -/***** Sous Menu *****/ -#sous_menu { - clear:left; - padding-top:5px; - padding-bottom:3px; - padding-left:15px; - border-bottom:1px solid #000000; - background-color:#8470FF; -} -/* -------------- Arbre -------------------*/ -p.arbre { - font-size: small; - color: #FFFFFF; - text-align: left; - margin-top: 0px; - margin-right: 0px; - margin-bottom: 0px; - margin-left: 0px; -} -p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } - - -/*******************/ -/***** Contenu *****/ - -#contenu { - padding-top:10px; - padding-bottom:20px; - padding-left:5px; - padding-right:5px; - float:left; - width:95%; -} - -#no_help { - display:block; - text-align:justify; - color:#000000; - float:right; - margin:0px; - padding:1px; - border:thin solid #000000; - background-color:#F7F7F7; - font-size:small; - width:3%; -} -#no_help h2 , #no_help a -{ - display:block; - text-align:center; - font-size:medium; - color:#FFFFFF; - background-color:#551A8B; - margin:0px; - padding:0px; -} -#help,#help h2 -{ - display:none; -} - - - - -.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { - display: none; - position: absolute; - left:50%; - top:50%; - border: 3px solid #000000; - background-color: #8470FF; - z-index: 500; - font-size: 80%; - text-align:center; -} -.popup { - width: 20em; - height: 10em; - margin-top: -4em ;/*moitié de height */ - margin-left: -10em ;/*moitié de width */ -} - -.popup_creneau { - width: 45em; - height: 22em; - margin-top: -11em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_personne { - width: 45em; - height: 30em; - margin-top: -15em ;/*moitié de height */ - margin-left: -22.5em ;/*moitié de width */ -} -.popup_commentaire { - width: 30em; - height: 14em; - margin-top: -7em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_fichier { - width: 30em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -15em ;/*moitié de width */ -} - -.popup_deletelist { - width: 26em; - height: 8em; - margin-top: -4em ;/*moitié de height */ - margin-left: -13em ;/*moitié de width */ -} - -.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 -{ - background:#551A8B; - color:#FFFFFF; - font-size:small; - border-bottom:inherit; -} - -div.popup_contenu -{ - margin-top:1em; - vertical-align:middle; -} -div.popup_contenu em -{ - font-size:x-small; - color:#FFF; -} - -.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input -{ - cursor:pointer; -} - -#masque -{ - width:100%; - height:100%; - display: none; - position: absolute; - left:0px; - top:0px; - background-image:url(ice_img/masque.png); - background-repeat:repeat; - z-index: 499; -} - -#page_accueil h1 -{ - background:#551A8B; - color:#FFF; - margin-top:0; -} - -#page_accueil -{ - text-align:center; -} - -#msg -{ - display:none; - position:fixed; - text-align:center; - left:50%; - margin-left:-20%; - width:40%; - background-color:#551A8B; - top:-10px; - padding-top:15px; - padding-bottom:10px; - color:#FFF; - -moz-border-radius:16px; -} - -#footer -{ - display:block; - position:absolute; - text-align:center; - left:0px; - width:100%; - background-color:#551A8B; - bottom:0; - height:2.3em; - padding-top:-2.3em; - margin-top:-2.3em; - color:#FFF; - font-size:x-small; -} -#footer ul -{ - display:inline; - list-style-type:none; - white-space:nowrap; - -} -#footer li.right { - list-style: none; - float:right; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; - padding-top:0.5em; - margin-top:0px; - padding-right:10px; -} -#footer li { - list-style: none; - float:right; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; - margin-top:-14px; - padding-right:30px; -} -#footer li.left { - list-style: none; - float:left; - white-space:nowrap;/*Evite l'étalement sur deux ligne*/ - vertical-align:middle; - margin-top:0px; - padding-left:30px; -} diff --git a/beta_old1/app/deco.php b/beta_old1/app/deco.php deleted file mode 100644 index 57a56bc..0000000 --- a/beta_old1/app/deco.php +++ /dev/null @@ -1,36 +0,0 @@ - - -

Deconnexion

-
- -
- - - \ No newline at end of file diff --git a/beta_old1/app/details_reunion.php b/beta_old1/app/details_reunion.php deleted file mode 100644 index 845e688..0000000 --- a/beta_old1/app/details_reunion.php +++ /dev/null @@ -1,121 +0,0 @@ -\n"; - -// DEBUG -//~ echo '
';
-//~ print_r($_REQUEST);
-//~ echo '
'; - -generate_html_divs_menu(); -?> -
-

- > Accueil - > Réunions - > Détails d'une réunion -

-
-'; - exit(); - } - generate_html_div_help('help/details_reunion_admin.php.hlp'); - echo '
' . "\n"; - echo '
' . "\n"; - generate_html_reunion_detail2($idR); - echo "
\n"; - echo "
\n"; - generate_html_array_personnes_crenaux($idR, $idP); - echo "
\n"; - generate_html_reunion_commentaires($idR); - echo "
\n"; - generate_html_reunion_fichiers($idR); -?> -
- - - - - - - -
-
- - diff --git a/beta_old1/app/help/admin.php.hlp b/beta_old1/app/help/admin.php.hlp deleted file mode 100644 index 3d669ec..0000000 --- a/beta_old1/app/help/admin.php.hlp +++ /dev/null @@ -1,23 +0,0 @@ -Cette page vous permet de visualiser les objets principaux de la base de données.
-Vous pouvez depuis cette page purger la base, ainsi que les fichiers attachés qui sont stockés sur disque.
-Lorsque vous supprimez par exemple une personne inscrite, tout les enregistrements relatifs à cette personne seront effacés : -
    -
  • Les liens indicant que cette personne participe à des réunions
  • -
  • - Les réunions qu'elle à créée -
      -
    • Les réponses des participants à ses réunions pour chaque créneau
    • -
    • Les commentaires des réponses des participants
    • -
    • Les créneaux de ses réunions
    • -
    • - Les liens vers les fichiers attachés -
        -
      • Les fichiers physiquement écrits sur le disque
      • -
      -
    • -
    -
  • -
-Ces cascades peuvent s'avérer dangereuses, mais permettent de garder la base dans un état consitant.
-Il est vivement conseillé de sauvegarder la base de donnée et le répertoire des ficheirs attachés avant d'utiliser cet outil, -l'erreur de manipulation est facile, et les bugs de programmation ne peuvent être totalement exclus... \ No newline at end of file diff --git a/beta_old1/app/help/auth_dialog.php.hlp b/beta_old1/app/help/auth_dialog.php.hlp deleted file mode 100644 index b83937b..0000000 --- a/beta_old1/app/help/auth_dialog.php.hlp +++ /dev/null @@ -1,2 +0,0 @@ -Merci de vous identifier pour utiliser l'application.
-Par défaut, vous pouvez vous logguer avec votre adresse email et le mot de passe qui y est associé. \ No newline at end of file diff --git a/beta_old1/app/help/details_reunion.php.hlp b/beta_old1/app/help/details_reunion.php.hlp deleted file mode 100644 index 5434937..0000000 --- a/beta_old1/app/help/details_reunion.php.hlp +++ /dev/null @@ -1,4 +0,0 @@ -Cette page vous permet de visualiser les détails d'une réunion.
-Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.
-Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.
-Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_old1/app/help/details_reunion_admin.php.hlp b/beta_old1/app/help/details_reunion_admin.php.hlp deleted file mode 100644 index 41047ab..0000000 --- a/beta_old1/app/help/details_reunion_admin.php.hlp +++ /dev/null @@ -1,17 +0,0 @@ -Cette page vous permet de visualiser les détails d'une réunion.
-
-Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.
-
-Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.
-
-Ajouter ou Supprimer un créneau
-en appuyant sur le bouton Ajouter une personne
-
-Fixer un Créneau, en cliquant dessus et confirmer l'action (aucune modification ne sera possible après)
-
-Ajouter ou Supprimer un -participant en appuyant sur le bouton Ajouter une personne
-
-Ajouter -
-Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_old1/app/help/groupe.hlp b/beta_old1/app/help/groupe.hlp deleted file mode 100644 index 0869bd5..0000000 --- a/beta_old1/app/help/groupe.hlp +++ /dev/null @@ -1 +0,0 @@ -Cette page vous permet de gérer les différentes listes de contacts \ No newline at end of file diff --git a/beta_old1/app/help/index.php.hlp b/beta_old1/app/help/index.php.hlp deleted file mode 100644 index be1ef30..0000000 --- a/beta_old1/app/help/index.php.hlp +++ /dev/null @@ -1,7 +0,0 @@ -Cette page vous permet de visualiser les réunions qui vous concernent.
-Les éléments requièrant votre attention sont en rouge.
-Cliquer sur l'icone à droite pour afficher les détails d'une réunion.
- -Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran. -
-Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_old1/app/help/listes.php.hlp b/beta_old1/app/help/listes.php.hlp deleted file mode 100644 index c619e70..0000000 --- a/beta_old1/app/help/listes.php.hlp +++ /dev/null @@ -1 +0,0 @@ -Cette page vous permet de gérer les différentes listes de contacts. diff --git a/beta_old1/app/help/modele_page.php.hlp b/beta_old1/app/help/modele_page.php.hlp deleted file mode 100644 index 75a26d5..0000000 --- a/beta_old1/app/help/modele_page.php.hlp +++ /dev/null @@ -1,17 +0,0 @@ - Cette page vous permet de visualiser les détails d'une réunion.
-
- Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.
-
- Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.
-
- Ajouter ou Supprimer un créneau
- en appuyant sur le bouton Ajouter une personne
-
- Fixer un Créneau, en cliquant dessus et confirmer l'action (aucune modification ne sera possible après)
-
- Ajouter ou Supprimer un - participant en appuyant sur le bouton Ajouter une personne
-
- Ajouter -
- Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. \ No newline at end of file diff --git a/beta_old1/app/help/organiser.php.hlp b/beta_old1/app/help/organiser.php.hlp deleted file mode 100644 index b24adaf..0000000 --- a/beta_old1/app/help/organiser.php.hlp +++ /dev/null @@ -1,2 +0,0 @@ -Depuis cette page, vous pouvez créer une nouvelle réunion :
-renseignez les champs ci-contre puis validez. Vous pourrez ensuite associer une liste de personnes ainsi que des créneaux possibles. \ No newline at end of file diff --git a/beta_old1/app/help/profil.php.hlp b/beta_old1/app/help/profil.php.hlp deleted file mode 100644 index 9328ff5..0000000 --- a/beta_old1/app/help/profil.php.hlp +++ /dev/null @@ -1,2 +0,0 @@ -Vous pouvez renseigner votre nom et prénom.
-Vous avez la possibilité de changer votre méthode de d'identification.
diff --git a/beta_old1/app/help/sendmail.php.hlp b/beta_old1/app/help/sendmail.php.hlp deleted file mode 100644 index 4a31a5b..0000000 --- a/beta_old1/app/help/sendmail.php.hlp +++ /dev/null @@ -1,2 +0,0 @@ -Ce formulaire vous permet d'envoyer un courriel de notification aux personnes sélectionnées.
-Vous pouvez charger un des modèles disponibles pour gagner du temps. diff --git a/beta_old1/app/ical.php b/beta_old1/app/ical.php deleted file mode 100644 index f2aeb26..0000000 --- a/beta_old1/app/ical.php +++ /dev/null @@ -1,36 +0,0 @@ -\n"; -generate_html_div_errmsg($errmsg); -?> - - - diff --git a/beta_old1/app/images/addP.gif b/beta_old1/app/images/addP.gif deleted file mode 100644 index aa77bef..0000000 Binary files a/beta_old1/app/images/addP.gif and /dev/null differ diff --git a/beta_old1/app/images/button_del.png b/beta_old1/app/images/button_del.png deleted file mode 100644 index 899b785..0000000 Binary files a/beta_old1/app/images/button_del.png and /dev/null differ diff --git a/beta_old1/app/images/button_ok.png b/beta_old1/app/images/button_ok.png deleted file mode 100644 index 229550e..0000000 Binary files a/beta_old1/app/images/button_ok.png and /dev/null differ diff --git a/beta_old1/app/images/del.gif b/beta_old1/app/images/del.gif deleted file mode 100644 index cc89b0b..0000000 Binary files a/beta_old1/app/images/del.gif and /dev/null differ diff --git a/beta_old1/app/images/details.png b/beta_old1/app/images/details.png deleted file mode 100644 index 11982cc..0000000 Binary files a/beta_old1/app/images/details.png and /dev/null differ diff --git a/beta_old1/app/images/editCreneau2.gif b/beta_old1/app/images/editCreneau2.gif deleted file mode 100644 index ba90a82..0000000 Binary files a/beta_old1/app/images/editCreneau2.gif and /dev/null differ diff --git a/beta_old1/app/images/logo.png b/beta_old1/app/images/logo.png deleted file mode 100644 index a768d45..0000000 Binary files a/beta_old1/app/images/logo.png and /dev/null differ diff --git a/beta_old1/app/images/masque.png b/beta_old1/app/images/masque.png deleted file mode 100644 index 45a6027..0000000 Binary files a/beta_old1/app/images/masque.png and /dev/null differ diff --git a/beta_old1/app/images/ok.gif b/beta_old1/app/images/ok.gif deleted file mode 100644 index 1935a84..0000000 Binary files a/beta_old1/app/images/ok.gif and /dev/null differ diff --git a/beta_old1/app/images/question.gif b/beta_old1/app/images/question.gif deleted file mode 100644 index d57516b..0000000 Binary files a/beta_old1/app/images/question.gif and /dev/null differ diff --git a/beta_old1/app/images/supprimer.png b/beta_old1/app/images/supprimer.png deleted file mode 100644 index a87033a..0000000 Binary files a/beta_old1/app/images/supprimer.png and /dev/null differ diff --git a/beta_old1/app/images/vcss.gif b/beta_old1/app/images/vcss.gif deleted file mode 100644 index 020c75a..0000000 Binary files a/beta_old1/app/images/vcss.gif and /dev/null differ diff --git a/beta_old1/app/images/vxhtml.gif b/beta_old1/app/images/vxhtml.gif deleted file mode 100644 index 739585d..0000000 Binary files a/beta_old1/app/images/vxhtml.gif and /dev/null differ diff --git a/beta_old1/app/images/wai.gif b/beta_old1/app/images/wai.gif deleted file mode 100644 index b82d6e7..0000000 Binary files a/beta_old1/app/images/wai.gif and /dev/null differ diff --git a/beta_old1/app/include/connect.inc.php b/beta_old1/app/include/connect.inc.php deleted file mode 100644 index b985b10..0000000 --- a/beta_old1/app/include/connect.inc.php +++ /dev/null @@ -1,14 +0,0 @@ -, , ); -$link = @mysql_connect('localhost', 'lud_restricted', 'maille_ess_ku_elle'); - -@mysql_select_db($bd , $link); - -// NB : La gestion d'erreur est inhibée. Cet include ne génèrera jamais de code, même si la connexion n'a pas pu être établie -?> \ No newline at end of file diff --git a/beta_old1/app/include/ical.inc.php b/beta_old1/app/include/ical.inc.php deleted file mode 100644 index 0d858e3..0000000 --- a/beta_old1/app/include/ical.inc.php +++ /dev/null @@ -1,68 +0,0 @@ - NOW() '; - if ( ! $result = @mysql_query($query) ) - { - // Cas d'erreur - $errmsg =mysql_generate_errmsg(); - return ERR_ICAL_SQL_ERROR; - } - else - { - if (mysql_num_rows($result)<1) - { - return ERR_ICAL_NO_DATA; - } - else - { - $time = time(); - $iCal_name = "iCal_${idP}_${time}.ics"; - $iCal_content = "BEGIN:VCALENDAR\r\n" . "VERSION:2.0\r\n"; - while ( list($idR, $objetR, $courrielP, $dateDeb, $duree, $lieuR, $ordreJourR, $idL) = mysql_fetch_array($result) ) - { - // TODO : Il est probablement judicieux d'ajouter à l'UID un timestamp unix !!!!! - $iCal_content .= "BEGIN:VEVENT\r\n" . "UID:awor_${idP}.${idR}\r\n" . "SUMMARY:$objetR ($courrielP)\r\n"; - $iCal_content .= 'DTSTART:' . date('Ymd\THis', $dateDeb) . "\r\n"; - $iCal_content .= 'DTEND:' . date('Ymd\THis', $dateDeb+60*$duree) . "\r\n"; - $iCal_content .= "LOCATION:$lieuR\r\n"; - $iCal_content .= "DESCRIPTION:$ordreJourR\r\n"; - - $query = 'SELECT P.courrielP FROM AWOR_Appartenir A,AWOR_Personne P' . " WHERE A.idP=P.idP AND A.idL='$idL'"; - if ( ! $result = mysql_query($query) ) - { - // Cas d'erreur - $errmsg =mysql_generate_errmsg(); - $ret=ERR_ICAL_SQL_ERROR; - break; - } - else - { - while ( list($mail_autres) = mysql_fetch_array($result) ) - { - $iCal_content .= "ATTENDEE:mailto:$mail_autres\r\n"; - } - } - // TODO : vérifier la pertinance de la variable utilisée - $iCal_content .= 'URL:http://' . $_SERVER['HTTP_HOST'] . "\r\n"; - $iCal_content .= "END:VEVENT\r\n"; - } - $iCal_content .= "END:VCALENDAR\r\n"; - return 0; - } - } -} -?> \ No newline at end of file diff --git a/beta_old1/app/include/je.inc.php b/beta_old1/app/include/je.inc.php deleted file mode 100644 index dcbb75e..0000000 --- a/beta_old1/app/include/je.inc.php +++ /dev/null @@ -1,244 +0,0 @@ - 0) - { - return (mysql_insert_id()); - } - return (false); - } - - function list_modif($idL,$tabParticipant) - { - $result = mysql_query("SELECT P.idP,P.courrielP FROM AWOR_Appartenir A, AWOR_Personne P WHERE P.idP = A.idP AND A.idL=$idL") or die (mysql_error()); - if (mysql_num_rows($result)>=0) - { - //Fabrication des trois tableaux - $tabOldPers = array(); - $tabOldPersMail = array(); - $tabNewPers = array(); - if (!empty($tabParticipant)) $tabNewPers = $tabParticipant; - for($i=0;$i0) - { - $row = mysql_fetch_array($result); - return ($row['idP']); - } - else - { - $result = mysql_query("INSERT INTO AWOR_Personne (courrielP,loginP,nomP) VALUES ('$persMail','$persMail','$persMail')"); - return (mysql_insert_id()); - } - - return (false); - } - - - - //Fonction qui affiche toutes les liste public ainsi que les liste privée possédées par idP - function generate_html_array_list ($idP) - { - $result = mysql_query("SELECT idL,libelleL,estPrivee,idP_Createur FROM AWOR_Liste WHERE idP_Createur=$idP OR estPrivee='non' ORDER BY estPrivee,libelleL"); - echo "\n\n\n\n\n\n"; - if (mysql_num_rows($result)>0) - { - - for($i=0;$i\n\n" ; else echo "\n"; - if ($row['estPrivee'] == 'oui') echo "\n\n"; - echo "\n"; - } - - } - echo "
SupprimerTypeLibellé
"; - if ($row['estPrivee'] == 'oui' || $row['idP_Createur']==$idP) echo "\"SupprimerestPrivée" ; else echo "Public"; - echo ""; - echo ""; - echo $row['libelleL']; - echo "
\n"; - - } - - function traiter_formulaire_commentaire() - { - if ($_GET['txtCommentaire'] != "") - { - require_once ('include/connect.inc.php'); - if (isset($_GET['idR'])) - { - $query="UPDATE AWOR_Repondre SET commentaireReponse ='".$_GET['txtCommentaire']."' WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; - $result = @mysql_query($query); - if ( ! $result || ( mysql_affected_rows() !== 1 ) ) - { - $query="INSERT INTO AWOR_Repondre(idR,idP,commentaireReponse) VALUES (".$_GET['idR'].", ".$_SESSION['session_idP'].", '".$_GET['txtCommentaire']."')"; - - $result = mysql_query($query); - if ( ! $result || ( mysql_affected_rows() !== 1 )) - { - echo $query; - echo "Erreur BD\n"; - return; - } - } - } - } - else - { - $query="DELETE FROM AWOR_Repondre WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; - $result = mysql_query($query); - } - } - - // Modifiée par Ludo pour les problèmes de vriables de session et pour d'autres détails : - // S'il n'y a pas de commentaire, on affiche le tableau vide - function generate_html_reunion_commentaires($idR) - { - $idP = $_SESSION['session_idP']; - echo ''; - echo ''; - echo ''; - echo ""; - echo ''; - echo ''; - $requete = "SELECT P.nomP,P.prenomP,P.courrielP,R.commentaireReponse FROM AWOR_Repondre R,AWOR_Personne P WHERE P.idP = R.idP AND R.idR = '".$idR."'"; - //echo "DEBUG : requete : $requete\n"; - $resultat = mysql_query($requete); - if($resultat != false) - { - if(mysql_num_rows($resultat) > 0) - { - while($pers = mysql_fetch_array($resultat)) - { - echo '\n"; - - } - } - else - { - echo "\n"; - } - } - - echo '
Commentaires (Editer votre commentaire)
'; - if ($pers["nomP"] !== "" || $pers["prenomP"] !== "") echo $pers["nomP"] . " " . $pers["prenomP"]; else echo $row["courrielP"]; - echo " : ".$pers["commentaireReponse"]."
Aucun commentaire pour le moment.
'; - - } - - -?> \ No newline at end of file diff --git a/beta_old1/app/include/ju.inc.php b/beta_old1/app/include/ju.inc.php deleted file mode 100644 index 75fb4ee..0000000 --- a/beta_old1/app/include/ju.inc.php +++ /dev/null @@ -1,237 +0,0 @@ -\n"; - if(isset($debug)) echo "DEBUG : ".$requete."
\n"; - return "Erreur : Une erreur MySQL est survenu."; - } - } - else - { - return "Erreur Uploader file"; - } - } - else - { - return "Erreur : Un fichier de meme nom existe deja"; - } - } - else - { - return "Erreur : Le fichier n'a pas ete uploader correctement."; - } - } - else - { - switch($_FILES[$file]["error"]) - { - case 1 : - case 2 : return "Erreur : Le fichier a une taille trop importante."; break; - case 3 : return "Erreur : Le fichier n'a pas ete envoye en entier."; break; - case 4 : return "Erreur : Aucun fichier recu."; break; - } - echo $erreur; - } - } - else - { - return "isset"; - } -} - - -function generate_html_reunion_fichiers($idR) -{ - require("include/ludo/config.inc.php"); - if ( isset($CONFIG['UPLOAD']['relative_path']) ) { $basepath='/'.$CONFIG['UPLOAD']['relative_path']; } else { $basepath='/fichiers/';} - - $requete = "SELECT * FROM AWOR_Fichier WHERE idR = '".$idR."'"; - $resultat = mysql_query($requete); - if($resultat != false) - { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''."\n"; - echo ''; - if(mysql_num_rows($resultat) > 0) - { - while($fichier = mysql_fetch_array($resultat)) - { - echo '\n"; - } - } - else - { - echo "\n"; - } - echo '
Fichiers attachés (Ajouter un fichier)
'.$fichier["nomFic"]."
Aucun fichier pour cette reunion.
'; - } -} - -function traiter_formulaire_valider_creneau() -{ - $tabCreneau = array(); - if(isset($_REQUEST["dataCreneaux"])) - { - //Pour chaque creneau poste, on verifie s'il existe, si non on le creer - foreach($_REQUEST['dataCreneaux'] as $creneau) - { - $tabCreneau = explode(".", $creneau); - $heureD = substr($tabCreneau[0], 0, 2); - $minD = substr($tabCreneau[0], 2, 2); - $heureA = substr($tabCreneau[1], 0, 2); - $minA = substr($tabCreneau[1], 2, 2); - $jourA = $tabCreneau[2]; - $moisA = $tabCreneau[3]; - $anneeA = $tabCreneau[4]; - //Si un creneau n'existe pas on le creer - $idCreneau = creneauExiste($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA); - if($idCreneau == false) - { - $newIdC = ajouterCreneau($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA); - if($newIdC != false) - { - $tabNewCreneau[] = $newIdC; - } - - } - else - { - $tabNewCreneau[] = $idCreneau; - } - } - // tabCreneau contient les tous les creneaux dont on a besoin pour la reunion, il faut maintenant supprimer de la base - // tous les creneaux de la reunion qui n'apparaissent pas dans cette liste - $listeCreneau = "("; - foreach($tabNewCreneau as $creneau) - { - $listeCreneau .= "'".$creneau."', "; - } - $listeCreneau .= "'XXX')"; - if(isset($debug)) echo $listeCreneau; - - //On recupere les creneaux ne faisant plus partie de la novuelle liste des creneaux - $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau; - //echo "DEBUG : $requete"; - if($resultat = mysql_query($requete)) - { - while($ligne = mysql_fetch_array($resultat)) - { - supprimerCreneau($ligne["idC"]); - } - } - } -} - -function traiter_formulaire_maj_profil() -{ - $requete = "UPDATE AWOR_Personne SET courrielP = '".$_POST["courrielP"]."', loginP = '".$_POST["loginP"]."', nomP = '".$_POST["nomP"]."', prenomP = '".$_POST["prenomP"]."', methodeAuth = '".$_POST["methodeAuth"]."' WHERE idP = '".$_SESSION['session_idP']."'"; - if(mysql_query($requete) == false) return "Une erreur MySQL est survenu : ".mysql_error(); - $_SESSION['session_prenomP'] = $_POST["prenomP"]; - $_SESSION['session_nomP'] = $_POST["nomP"]; - //print_r($_POST); -} - -function ajouterCreneau($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA) -{ - $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA); - $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA); - $duree = $dateA - $dateD; - $dateD = date("Y-m-d G:i:s", $dateD); - $duree = $duree / 60; - $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateD."', '".$duree."', '".$idR."')"; - if(isset($debug)) echo $requete."
"; - if(mysql_query($requete)) { return mysql_insert_id(); } else { return false; } -} - -function ajouterCreneau2($idR, $dateHeure, $duree) -{ - $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateHeure."', '".$duree."', '".$idR."')"; - if(mysql_query($requete)) - { - return mysql_insert_id(); - } - else - { - return false; - } -} - -function supprimerCreneau($idC) -{ - if(mysql_query("DELETE FROM AWOR_Creneau WHERE idC='".$idC."'")) - { - if(mysql_query("DELETE FROM AWOR_Choisir WHERE idC='".$idC."'")) - { - return true; - } - else - { - return false; - } - } - else - { - return false; - } -} - -function creneauExiste($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA) -{ - $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA); - $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA); - $duree = $dateA - $dateD; - $dateD = date("Y-m-d G:i:s", $dateD); - $duree = $duree / 60; - $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$idR."' AND dateHeure='".$dateD."' AND duree=".$duree.""; - if($result = mysql_query($requete)) - { - if(mysql_num_rows($result) > 0) - { - $ligne = mysql_fetch_array($result); - return $ligne["idC"]; - } - else - { - return false; - } - } -} - -function addslashes_if_needed($texte) -{ - if(get_magic_quotes_gpc() == 0) - { - return addslashes($texte); - } - else - { - return $texte; - } -} -?> \ No newline at end of file diff --git a/beta_old1/app/include/ludo/TODO_list.txt b/beta_old1/app/include/ludo/TODO_list.txt deleted file mode 100644 index 724c46c..0000000 --- a/beta_old1/app/include/ludo/TODO_list.txt +++ /dev/null @@ -1,24 +0,0 @@ -Accueil > _Listes_ (virer le lien) - -mysql_free_result après les requetes et mysql_close ? - -configuration de PHP dans un fichier INI : -array parse_ini_file ( string filename [, bool process_sections] ) - - -Vérifier que les redirections vers authentification et le retour fasse bien suivre les paramètres ---> bookmarque details_reunion?idR=1 - - -faire une fonction JS qui appelle une page php ou créer toute seule un cookie qui gère la préférence du css. - -Se préoccuper des accents et des encodages de pages ! - -Faire un pied de page avec nos noms, et les logos valide XHTML, CSS... - -TODO : un script php qui purge la base --> export SQL ancienne base ? --> suppression des réunions plus vielles que... --> suppression des Personnes n'ayant jamais changé leur profil et n'ayant plus de réunion les concernant --> suppression de tout les créneaux non référencés --> suppression de toutes les listes privées obsoletes diff --git a/beta_old1/app/include/ludo/auth.inc.php b/beta_old1/app/include/ludo/auth.inc.php deleted file mode 100644 index 18b339d..0000000 --- a/beta_old1/app/include/ludo/auth.inc.php +++ /dev/null @@ -1,78 +0,0 @@ - \ No newline at end of file diff --git a/beta_old1/app/include/ludo/config.inc.php b/beta_old1/app/include/ludo/config.inc.php deleted file mode 100644 index 6d6504b..0000000 --- a/beta_old1/app/include/ludo/config.inc.php +++ /dev/null @@ -1,74 +0,0 @@ - 'jmi@iut-blagnac.fr', - 'automatedMail' => 'no_reply@iut-blagnac.fr', - 'AUTH' => array - ( - 'POP' => array - ( - 'SERVERS' => array - ( - 'wanadoo.fr' => array - ( - 'subdomain' => 'pop.orange.fr', - 'port' => 110, - 'username_is_full_mail' => false - ), - 'orange.fr' => array - ( - 'subdomain' => 'pop.orange.fr', - 'port' => 110, - 'username_is_full_mail' => false - ) - ) - ), - 'bypass_if_local' => false - ), - 'CSS' => array - ( - 'CHOOSER_LIST' => array - ( - // 'nom à afficher' => 'nom_fichier_sans_extension' - 'standard' => 'ice', - 'Glace (ancien)' => 'ice_moche', - 'bleu' => 'style1' - ) - ), - 'MAIL' => array - ( - 'TEMPLATES' => array - ( - 'cree' => array - ( - 'caption' => 'Nouvelle Réunion', - 'tpl_file' => 'mail_cree.php' - ), - 'modif' => array - ( - 'caption' => 'Réunion modifiée', - 'tpl_file' => 'mail_modif.php' - ), - 'annul' => array - ( - 'caption' => 'Réunion annulée', - 'tpl_file' => 'mail_annul.php' - ), - 'fixee' => array - ( - 'caption' => 'Réunion fixée', - 'tpl_file' => 'mail_fixee.php' - ) - ) - ), - 'SUPERUSERS' => array ('jeremie.denoyer', 'lpouzenc'), - 'UPLOAD' => array - ( - 'accepted_files' => array - ( - 'jpg', 'jpeg', 'gif', 'png', 'svg', 'pdf', 'ps', 'txt', 'rtf', 'csv', 'doc', 'docx', 'ppt', 'xls', 'sxw','sxp','sxd', 'odt', 'odg', 'odp', 'avi', 'mpg', 'mpeg', 'rm', 'flv', 'mp3', 'mp4', 'ogg','htm','html','zip', 'rar', 'tar', 'gz', 'bz2', 'ace' - ), - 'relative_path' => 'beta/upload_files/' - ) -); -?> diff --git a/beta_old1/app/include/ludo/div_create_or_modif.php b/beta_old1/app/include/ludo/div_create_or_modif.php deleted file mode 100644 index c386060..0000000 --- a/beta_old1/app/include/ludo/div_create_or_modif.php +++ /dev/null @@ -1,72 +0,0 @@ - -
- -' -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
Objet : - > -
Lieu : - > -
Ordre du jour : - -
Remarques : - -
Etat : - Annulée - Disponibilités masquées -
- -
-
\ No newline at end of file diff --git a/beta_old1/app/include/ludo/fonctions.inc.php b/beta_old1/app/include/ludo/fonctions.inc.php deleted file mode 100644 index 74b7ca7..0000000 --- a/beta_old1/app/include/ludo/fonctions.inc.php +++ /dev/null @@ -1,550 +0,0 @@ -\n "; } - // Cas général, on n'est pas la personne concernée - if ( ! isset($estDispo) || $estDispo == '' ) - { // Dispo Inconnue (icone ?) - generate_html_dispo_inconnu($idP, $idC); - } - else - { - if ( $estDispo == 'oui' ) - { // Disponible - generate_html_dispo_oui($idP, $idC); - }else - { // Non Disponible - generate_html_dispo_non($idP, $idC); - } - } - } - else - { - if ( $withTD ) { echo " \n "; } - // On est la personne concernée, on peut donc choisir le créneau - if ( ! isset($estDispo) || $estDispo == '' ) - { // Dispo Inconnue - generate_html_dispo_dire_oui($idR, $idC); - //~ echo '   '; - generate_html_dispo_dire_non($idR, $idC); - } - else - { - if ( $estDispo == 'oui' ) - { // Disponible - generate_html_dispo_oui($idP, $idC); - //~ echo '   '."\n "; - generate_html_dispo_dire_non($idR, $idC); - }else - { - // Non Disponible - generate_html_dispo_dire_oui($idR, $idC); - //~ echo '   '."\n "; - generate_html_dispo_non($idP, $idC); - } - } - } - if ( $withTD ) { echo " \n"; } -} - -// Génération du tableau complet -// TODO : idée : class du tableau différnete quand annulée -> tableau grisé... - -function generate_html_array_personnes_crenaux($idR) -{ - if ( isset($_SESSION['session_idP']) ) - { - $idP_Self=$_SESSION['session_idP']; - } - else - { - // TODO : Erreur - } - - // Connexion à la base et sélection de la database - require_once 'include/connect.inc.php'; - - // Récupération des paramètres de la réunion... - $montrerDispoR=$estAnnulee=$is_admin=$estFixee=false; - $idP_orga=null; - $query="SELECT r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, r.idL FROM AWOR_Reunion r WHERE r.idR='$idR'"; - $result = @mysql_query($query); - if ( $result && ( mysql_num_rows($result) === 1 ) ) - { - list($montrerDispoR, $estAnnulee, $idP_orga, $idC_Fixe, $idL_interne) = mysql_fetch_row($result); - $is_admin = ( $idP_Self == $idP_orga ); - $montrerDispoR = ( ( $montrerDispoR === 'oui' ) || $is_admin ) ; - //echo "DEBUG : annulée $estAnnulee\n"; - $estAnnulee = ( $estAnnulee == 'oui' ); - $estFixee = ( $idC_Fixe != null); - } - else - { - // TODO : erreur - } - // DEBUG : tests en forçant les variables - //$estAnnulee=true; - - //~ echo "DEBUG : \nmontrerDispoR==$montrerDispoR\nestAnnulee==$estAnnulee\nestFixee==$estFixee\nis_admin==$is_admin\n"; -?> -
- - - -Mail' . "\n"; - } - echo ' ' . "\n"; - - // Remplissage des entêtes de colonnes (créneaux) - $query="SELECT idC, UNIX_TIMESTAMP(dateHeure), duree FROM AWOR_Creneau WHERE idR='$idR' ORDER BY dateHeure ASC;"; - $creneaux=array(); - $dispos=array(); - if ( $result = @mysql_query($query) ) - { - while ( list($idC, $date_deb, $duree) = mysql_fetch_row($result) ) - { - // Calcul des dates - //echo $date_deb . "\n"; - $date_fin = $date_deb + 60 * $duree; - if ( $idC != $idC_Fixe ) { echo ' \n"; - - // Comptage des personnes disponibles et indisponibles - $creneaux[] = $idC; - $dispos[$idC]['nbDispo']=0; - $dispos[$idC]['nbNonDispo']=0; - $dispo_max_id=-1; - $dispo_max_val=0; - } - } - if ( $is_admin && ! $estFixee && ! $estAnnulee ) - { -?> - - - - - - $dispo_max_val ) - { - $dispo_max_id=$idC; - $dispo_max_val=$dispos[$idC]['nbDispo']; - } - } - } - } - //print_r($dispos); - - - $query='SELECT p.idP, p.prenomP, p.nomP FROM AWOR_Personne p, AWOR_Appartenir a, AWOR_Reunion r WHERE ' - . "r.idR='$idR' AND a.idL=r.idL AND p.idP=a.idP ORDER BY p.nomP, p.prenomP;"; - - if ( $result = @mysql_query($query) ) - { - // On écrit ligne à ligne les personnes et les disponibilités - while ( $p = mysql_fetch_array($result) ) // Boucle sur chaque personne - { - echo " \n"; - // Colonne de checkbox pour envoi email si $is_admin == true - if ( $is_admin ) { echo ' ' . "\n"; } - // Nom prénom - echo " \n"; - // Disponibilités - foreach ( $creneaux as $c_id ) // Pour chaque créneau - { - if (isset($dispos[$c_id][$p[0]])) - { - $estDispo=$dispos[$c_id][$p[0]]; - } - else - { - $estDispo=''; - } - //echo "DEBUG : generate_html_dispo_case($p[0], $c_id, ( $p[0]==$idP_Self ), $estDispo);\n"; - if ( $c_id != $idC_Fixe ) { $class=''; } else { $class='class="selected"'; } - - generate_html_dispo_case($idR, $p[0], $c_id, ( ! $estFixee && ! $estAnnulee && ( $p[0]==$idP_Self ) ),$estDispo, true, $class); - } - // Colonne vide pour l'ajout de personnes - if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " \n"; } - echo " \n"; - } - // Si $is_admin, on met une ligne avec bouton envoyer pour les mails et icône ajout de personnes - if ( $is_admin ) - { - echo " \n - - \n"; } - if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " \n"; } - echo " \n"; - } - - // On inscrit les lignes de totaux si les disponibilités sont révélées - if ( $is_admin && ! $estFixee && ! $estAnnulee) - { - echo " \n"; - echo " \n"; - echo " \n"; - foreach ( $creneaux as $c_id ) - { - if ( $c_id == $dispo_max_id ) - { - echo ' \n"; - } - else - { - echo ' \n"; - } - } - echo " \n"; - echo " \n"; - - echo " \n"; - echo " \n"; - echo " \n"; - foreach ( $creneaux as $c_id ) - { - echo ' \n"; - } - echo " \n"; - echo " \n"; - } - } - echo " \n"; - echo "
' ."\n"; - if ( $is_admin ) - { - echo ' ' . "\n"; - echo ' Ajouter une personne' . "\n"; - echo '  '; - } - echo 'Personnes' . "\n"; - echo ' '; } else { echo ' '; } - if ( $is_admin && ! $estFixee && ! $estAnnulee ) - { - echo ''; - } - echo date('d/m/y', $date_deb) . '
' . date('H:i', $date_deb) . ' - ' . date('H:i', $date_fin); - if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo '
'; } - echo "
- - Editer les creneaux - -
$p[1] $p[2] 
\n"; - echo ' ' . "\n"; -?> - - - ' . "\n"; - ?> - Ajouter une personne - -  
 Personnes présentes' . $dispos[$c_id]['nbDispo'] . "' . $dispos[$c_id]['nbDispo'] . " 
 Personnes absentes' . $dispos[$c_id]['nbNonDispo'] . " 
\n
\n"; -} - -function traiter_formulaire_fixer_creneau() -{ - if ( ! isset($_GET['idR']) || !isset($_GET['idC']) ) - { - $errmsg="Impossible de fixer la réunion : paramètres manquants ou erroné"; - return $errmsg; - } - $idR=addslashes($_GET['idR']); - $idC=addslashes($_GET['idC']); - - $query="UPDATE AWOR_Reunion SET idC_Fixe=$idC WHERE idR=$idR;"; - if ( ! mysql_query($query) || mysql_affected_rows() != 1 ) - { - $errmsg='Impossible de fixer la réunion : ' . mysql_generate_errmsg(); - return $errmsg; - } - return; -} - -function traiter_formulaire_creer_reunion() -{ - include_once('include/je.inc.php'); - $idP=$_SESSION['session_idP']; - - // Recherche d'une réunion vierge déjà existante - $query='SELECT idR FROM AWOR_Reunion WHERE idP_Orga=' . "('$idP') AND objetR='Renseignez';"; - if ( ( $result = mysql_query($query) ) && (mysql_num_rows($result) > 0) ) - { - list($idR)=mysql_fetch_array($result); - } - else - { - // Création de la Réunion sauf si une réunion vierge existe déjà - $query='INSERT INTO AWOR_Reunion(idP_Orga, objetR) VALUES' . "('$idP', 'Renseignez');"; - if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) - { - // Cas d'erreur - $errmsg ='Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); - return $errmsg; - } - $idR=mysql_insert_id(); - - // Création de la Liste des participants - if ( ! $idL=list_new("interne_idR_$idR","NULL",true) ) - { - $errmsg ='Erreur lors de la création de la liste de participants : Erreur de base de données'; - return $errmsg; - } - - $query="UPDATE AWOR_Reunion SET idL='$idL' WHERE idR='$idR'"; - if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) - { - // Cas d'erreur - $errmsg = 'Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); - return $errmsg; - } - } - - return (int) $idR; -} - -function traiter_formulaire_modif_detail_reunion() -{ - if ( ! isset($_REQUEST['idR']) || !isset($_POST['objetR']) || !isset($_POST['lieuR']) || !isset($_POST['ordreJourR']) || !isset($_POST['remarquesR']) ) - { - $errmsg = 'Impossible de modifier de détail de la réunion : Paramètres manquants'; - // DEBUG : - //echo "DEBUG : $query\n$errmsg\n"; - return $errmsg; - } - - $idR=addslashes($_REQUEST['idR']); - $objetR=addslashes($_POST['objetR']); - $lieuR=addslashes($_POST['lieuR']); - $ordreJourR=addslashes($_POST['ordreJourR']); - $remarquesR=addslashes($_POST['remarquesR']); - $estAnnulee=( isset($_POST['isCancelled']) && ($_POST['isCancelled']==='on') )?'oui':'non'; - $montrerDispoR=( isset($_POST['isHidden']) && ($_POST['isHidden']==='on') )?'non':'oui'; - - $query="UPDATE AWOR_Reunion SET objetR='$objetR', lieuR='$lieuR', ordreJourR='$ordreJourR', " - ." remarquesR='$remarquesR', estAnnulee='$estAnnulee', montrerDispoR='$montrerDispoR' WHERE idR='$idR'"; - if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) - { - // Cas d'erreur - $errmsg = 'Erreur lors de la modification de la réunion : ' . mysql_generate_errmsg(); - // DEBUG : - //echo "DEBUG : $query\n$errmsg\n"; - return $errmsg; - } - // DEBUG : - //echo "DEBUG : $query\n$errmsg\n"; - return; -} - -function generate_html_reunion_detail2($idR) -{ - $query='SELECT r.objetR, r.ordreJourR, r.lieuR, r.remarquesR, r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, p.nomP, p.prenomP' - . " FROM AWOR_Reunion r, AWOR_Personne p WHERE r.idR='$idR' AND p.idP=r.idP_Orga"; - $result = @mysql_query($query); - if ( ! $result || ( mysql_num_rows($result) !== 1 ) ) - { - $errmsg="Impossible de récuprérer les informations de la réunion : Erreur de base de données\n"; - return $errmsg; - } - - list($objetR, $ordreJourR, $lieuR, $remarquesR, $montrerDispoR, $estAnnulee, $idP_Orga, $idC_Fixe, $nomP, $prenomP) = mysql_fetch_row($result); - if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; } - -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' ."\n"; - switch($etat) - { - case 'reunion_fixee': - echo "Fixée\n"; - break; - case 'reunion_en_cours': - echo "En préparation\n"; - break; - case 'reunion_annulee': - echo "Annulée\n"; - break; - } - if ( $montrerDispoR === 'non' ) { echo ', disponibilités masquées'; } -?> - - - -
- Détails de la réunion -(Editer)\n"; - } - -?> -
Objet : - -
Organisateur : - -
Lieu : - -
Ordre du jour : - -
Remarques : - -
Etat :
-' . "\n" . '' . "\n\n\n"; - echo '\n\n\n"; - echo "\n\n"; - echo "\n\n\n"; - echo ''; - for ( $i=0; $i < count($row); $i++ ) { echo ""; } - echo "\n\n\n"; - - $num=0; - do - { if ( isset($row[$key_name]) ) { $num=$row[$key_name]; } else { $num=''; } - echo "\n\n\n\n\n"; - } while ( $row = mysql_fetch_assoc($result) ); - echo "\n
$table
" . implode("",array_keys($row)) . "
" . implode("",$row) . "
\n\n"; - } -} - -?> diff --git a/beta_old1/app/include/ludo/html_elements.inc.php b/beta_old1/app/include/ludo/html_elements.inc.php deleted file mode 100644 index b845f28..0000000 --- a/beta_old1/app/include/ludo/html_elements.inc.php +++ /dev/null @@ -1,185 +0,0 @@ -'."\n" -?> - - - - AWOR - $title\n"; ?> - - - - -' . "\n"; - echo ' ' . "\n"; - - if ( isset($CONFIG['CSS']['CHOOSER_LIST']) ) - { - foreach ( $CONFIG['CSS']['CHOOSER_LIST'] as $cssname => $cssfile ) - { - if ( $cssfile != $cssfilemain ) - { - echo ' ' . "\n"; - echo ' ' . "\n"; - } - } - } -?> - - - -

AWOR

- -' . "\n

?

\n" . "\n"; - echo '
' . "\n"; - readfile($help_file); - echo "
\n"; - } -} - -function generate_html_div_errmsg($errmsg) -{ - echo '
' . "\n" . '' . $errmsg . "\n"; - require_once('config.inc.php'); - if ( isset( $CONFIG['adminMail'] ) && ( ! isset($_REQUEST['debug'] ) ) ) - { - echo 'Si le problème persiste, vous pouvez contacter l\'administrateur par email à l\'adresse suivante : '; - echo '' . $CONFIG['adminMail'] . "\n"; - } - echo "
\n"; -} - -function generate_html_div_css_chooser() -{ - @include 'include/ludo/config.inc.php'; - @include 'config.inc.php'; - - if ( ! is_array($CONFIG['CSS']['CHOOSER_LIST']) ) { return false; } - - if ( isset($_COOKIE['aworcustom_css'] ) ) { $css_selected=$_COOKIE['aworcustom_css']; }else{$css_selected='';}; - echo '
' . "\n"; - //print_r($_COOKIE); - echo ' '. "\n"; - echo '
'. "\n"; -} - -function generate_html_div_footer() -{ -?> - -Deconnexion'."\n"; -} -function generate_html_div_back() -{ - echo ''."\n"; -} - -function generate_html_dispo_inconnu($idP, $idC) -{ - echo 'Inconnu' . "\n"; -} - -function generate_html_dispo_oui($idP, $idC) -{ - echo 'Disponible' . "\n"; -} - -function generate_html_dispo_non($idP, $idC) -{ - echo 'Non disponible' . "\n"; -} - -function generate_html_dispo_dire_oui($idR, $idC) -{ - //~ echo 'Dire que je suis disponible' . "\n"; - echo ""; - echo 'Dire que je suis disponible' . "\n"; -} - -function generate_html_dispo_dire_non($idR, $idC) -{ - echo ""; - echo 'Dire que je suis pas disponible' . "\n"; -} - -function generate_html_reunion_detail_button($idR) -{ - echo 'Détails'; -} diff --git a/beta_old1/app/include/ludo/mail_textarea.php b/beta_old1/app/include/ludo/mail_textarea.php deleted file mode 100644 index 87f4965..0000000 --- a/beta_old1/app/include/ludo/mail_textarea.php +++ /dev/null @@ -1,44 +0,0 @@ - - - - diff --git a/beta_old1/app/include/ludo/majDispo.php b/beta_old1/app/include/ludo/majDispo.php deleted file mode 100644 index 3f79fec..0000000 --- a/beta_old1/app/include/ludo/majDispo.php +++ /dev/null @@ -1,39 +0,0 @@ - \ No newline at end of file diff --git a/beta_old1/app/include/ludo/redir.inc.php b/beta_old1/app/include/ludo/redir.inc.php deleted file mode 100644 index 6baf40d..0000000 --- a/beta_old1/app/include/ludo/redir.inc.php +++ /dev/null @@ -1,20 +0,0 @@ - - -

Redirection

-

Si vous voyez cette page, merci de suivre le lien ci-dessous

-' . $dest . '

' . "\n"; -?> - - - \ No newline at end of file diff --git a/beta_old1/app/include/ludo/session_verify.inc.php b/beta_old1/app/include/ludo/session_verify.inc.php deleted file mode 100644 index f1cea8b..0000000 --- a/beta_old1/app/include/ludo/session_verify.inc.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/beta_old1/app/index.php b/beta_old1/app/index.php deleted file mode 100644 index 572c656..0000000 --- a/beta_old1/app/index.php +++ /dev/null @@ -1,123 +0,0 @@ -\n"; -generate_html_divs_menu(); -?> -
-

- > Accueil - > Réunions - > Liste des réunions -

-
- -
-DEBUG : SESSION :\n"; - //~ print_r($_SESSION); - //~ echo "\nDEBUG : REQUEST :\n"; - //~ print_r($_REQUEST); - //~ echo ""; -?> -

- Organiser une réunion -

- - - - - - - - -\n"; - echo ' \n"; - echo " \n"; - if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; } - - $dateStr=''; - switch($etat) - { - case 'reunion_fixee': - echo ' \n"; - echo " \n"; - break; - case 'reunion_en_cours': - echo " \n"; - echo " \n"; - break; - case 'reunion_annulee': - echo " \n"; - echo " \n"; - break; - } - - - echo ' \n"; - echo " \n"; - } - } - } - - - // Réunions fixées et passées - - $query = 'SELECT DISTINCT R.idR, R.objetR, P.nomP, P.prenomP, UNIX_TIMESTAMP(C.dateHeure), R.estAnnulee' - . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Creneau C,AWOR_Personne P' - . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)" - . ' AND R.idL = L.idL AND P.idP = R.idP_Orga AND R.idC_Fixe = C.idC' - . ' ORDER BY C.dateHeure DESC;'; - fill_array_liste_reunion($query); - - // Réunion en préparation - $query = 'SELECT DISTINCT R.idR, R.objetR, P.nomP, P.prenomP, NULL, R.estAnnulee' - . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Personne P' // Creneau C, - . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)" - . ' AND R.idL = L.idL AND P.idP = R.idP_Orga AND ISNULL(R.idC_Fixe);'; - //echo "DEBUG : $query\n"; - fill_array_liste_reunion($query); - - //$query = - //echo "DEBUG : $query\n"; -?> -
ObjetOrganisateurDateEtatDétails
' . "$objetR$prenomP $nomP' . date('d/m/Y \à H:i', $idC_Fixe) . "FixéeEn préparationAnnulée'; - generate_html_reunion_detail_button($idR); - echo "
-
- Organiser une réunion -
- -
- - - diff --git a/beta_old1/app/listes.php b/beta_old1/app/listes.php deleted file mode 100644 index 3ec4d39..0000000 --- a/beta_old1/app/listes.php +++ /dev/null @@ -1,48 +0,0 @@ -\n"; - -generate_html_divs_menu(); -?> -
-

- > Accueil - > Listes -

-
- - - - - - -
-
- - - \ No newline at end of file diff --git a/beta_old1/app/organiser.php b/beta_old1/app/organiser.php deleted file mode 100644 index 2afcbea..0000000 --- a/beta_old1/app/organiser.php +++ /dev/null @@ -1,24 +0,0 @@ -\n"; -generate_html_divs_menu(); -?> -
- > Accueil - > Réunions - > Organiser une réunion -
-\n"; - -include('include/ludo/div_create_or_modif.php'); -?> - - - - - diff --git a/beta_old1/app/popcommentaire.php b/beta_old1/app/popcommentaire.php deleted file mode 100644 index cb6489f..0000000 --- a/beta_old1/app/popcommentaire.php +++ /dev/null @@ -1,23 +0,0 @@ - -

Editer votre commentaire

- \ No newline at end of file diff --git a/beta_old1/app/popcreneau.php b/beta_old1/app/popcreneau.php deleted file mode 100644 index f4ba56f..0000000 --- a/beta_old1/app/popcreneau.php +++ /dev/null @@ -1,90 +0,0 @@ - -

Créneaux de la réunion

- -'; - echo 'Erreur - pas d\'identifiant de réunion !'; - echo '
'; - echo ''; - echo '
'; - echo ''; -} -?> diff --git a/beta_old1/app/popdeletelist.php b/beta_old1/app/popdeletelist.php deleted file mode 100644 index 3449714..0000000 --- a/beta_old1/app/popdeletelist.php +++ /dev/null @@ -1,20 +0,0 @@ - -

Désirer vous supprimer cette liste ?

- - - diff --git a/beta_old1/app/popfixer.php b/beta_old1/app/popfixer.php deleted file mode 100644 index 7e1c85a..0000000 --- a/beta_old1/app/popfixer.php +++ /dev/null @@ -1,42 +0,0 @@ -Désirez-vous fixer ce créneau ?'; - echo ''; - } - else - { - echo ''; - } -?> - diff --git a/beta_old1/app/popnewlist.php b/beta_old1/app/popnewlist.php deleted file mode 100644 index d8d1010..0000000 --- a/beta_old1/app/popnewlist.php +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/beta_old1/app/poppersonne.php b/beta_old1/app/poppersonne.php deleted file mode 100644 index e9225ba..0000000 --- a/beta_old1/app/poppersonne.php +++ /dev/null @@ -1,112 +0,0 @@ - -

- diff --git a/beta_old1/app/poppersonneliste.php b/beta_old1/app/poppersonneliste.php deleted file mode 100644 index a0d60b5..0000000 --- a/beta_old1/app/poppersonneliste.php +++ /dev/null @@ -1,27 +0,0 @@ -'; - - if (mysql_num_rows($result)>0) - { - for($i=0;$i'; - if ($row[2] !== "" & $row[3] !== "") echo $row[2] . " " . $row[3]; else echo $row[1]; - echo ''; - } - } - echo ''; - } - else - { - echo " "; - } - -?> diff --git a/beta_old1/app/profil.php b/beta_old1/app/profil.php deleted file mode 100644 index 289b7f1..0000000 --- a/beta_old1/app/profil.php +++ /dev/null @@ -1,59 +0,0 @@ -\n"; -generate_html_divs_menu(); -?> -
-

- > Accueil - > Administration du profil -

-
-\n"; -$idP = $_SESSION['session_idP']; -if ( isset( $_SESSION['session_prenomP'] ) && isset( $_SESSION['session_prenomP'] ) ) -{ - $nom=$_SESSION['session_prenomP'] . ' ' . $_SESSION['session_nomP']; -} -else -{ - $nom = $_SESSION['session_loginP']; -} -$resultat = mysql_query("SELECT * FROM AWOR_Personne WHERE idP = '".$_SESSION['session_idP']."'"); -if($resultat != false) -{ - $p = mysql_fetch_array($resultat); - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
Methode d'authentification : \n
Votre login :
Votre adresse mail :
Votre nom :
Votre prenom :
\n"; - echo "\n"; - echo "
\n"; - echo "\n"; -} -if ( isset ($errmsg) ) generate_html_div_errmsg($errmsg); -?> -
- - - diff --git a/beta_old1/app/script.js b/beta_old1/app/script.js deleted file mode 100644 index 2c14563..0000000 --- a/beta_old1/app/script.js +++ /dev/null @@ -1,341 +0,0 @@ -function isNotEmpty (idInput) -{ - if (document.getElementById(idInput).value.length > 0) { return (true);} else {return (false);} -} - -function addPers(form) -{ - if(form.contactDispo) - { - if(form.contactDispo.options.selectedIndex>=0) - { - var oValue = form.contactDispo.options[form.contactDispo.options.selectedIndex].value; - - var exist = false; - var i = 0; - while (i=0) - { - alert ( "On passe au css :" + listCSS.options[listCSS.options.selectedIndex].value); - setActiveStyleSheet(listCSS.options[listCSS.options.selectedIndex].value); - } - } - -} - -function addAllPers(form) -{ - if(form.contactDispo) - { - for (var j=0;j=0)&&(mail.indexOf(".")>=0)) return true; else return false; -} - - -function removePers(form) -{ - if (form.participants.options.selectedIndex>=0) - { - var i = form.participants.options.selectedIndex; - form.participants.options[form.participants.options.selectedIndex]=null; - if (parseInt(i) > 0) {form.participants.options.selectedIndex=parseInt(i)-1;} else {form.participants.options.selectedIndex=0;} - } - else - { - alert("Suppression impossible : aucune ligne sélectionnée"); - } -} - -function loadid(url,id,isPop) { - if (isPop) - document.getElementById('msg').innerHTML = "Chargement en cours ...Fermer"; - else - document.getElementById('msg').innerHTML = "Chargement en cours ..."; - - document.getElementById(id).innerHTML = ""; - document.getElementById('msg').style.display='block'; - - var http_request = false; - - if (window.XMLHttpRequest) { // Mozilla, Safari,... - http_request = new XMLHttpRequest(); - if (http_request.overrideMimeType) { - http_request.overrideMimeType('text/xml'); - } - } else if (window.ActiveXObject) { // IE - try { - http_request = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e) { - try { - http_request = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (e) {} - } - } - - if (!http_request) { - alert('Abandon : Impossible de créer une instance XMLHTTP'); - return false; - } - - http_request.onreadystatechange = function(){ - - if (http_request.readyState == 4) { - if (http_request.status == 200) { - document.getElementById(id).innerHTML = http_request.responseText; - document.getElementById('msg').style.display='none'; - document.getElementById('msg').innerHTML = ""; - - } else { - if (isPop) - document.getElementById('msg').innerHTML = "Un problème est survenu ...Réessayer - Fermer"; - else - document.getElementById('msg').innerHTML = "Un problème est survenu ...Réessayer"; - } - } - }; - - http_request.open('GET', url, true); - http_request.send(null); -} - -function popon (id) -{ - var thisPopup = document.getElementById(id); - thisPopup.style.display='block'; - //var thisMasque = document.getElementById('masque'); - //thisMasque.style.display='block'; -} - -function popoff (id) -{ - var thisPopup = document.getElementById(id); - thisPopup.style.display='none'; - //var thisMasque = document.getElementById('masque'); - //thisMasque.style.display='none'; -} - -function addcreneau(form) -{ - if(form.day.options.selectedIndex>=0 && form.month.options.selectedIndex>=0 && form.year.options.selectedIndex>=0 && form.hourStart.options.selectedIndex>=0 && form.minuteStart.options.selectedIndex>=0 && form.hourEnd.options.selectedIndex>=0 && form.minuteEnd.options.selectedIndex>=0) - { - if (verifDate(form.day.options[form.day.options.selectedIndex].value,form.month.options[form.month.options.selectedIndex].value,form.year.options[form.year.options.selectedIndex].value)) - { - //Création de la valeur - var oValue = form.hourStart.options[form.hourStart.options.selectedIndex].value + form.minuteStart.options[form.minuteStart.options.selectedIndex].value + "." + form.hourEnd.options[form.hourEnd.options.selectedIndex].value + form.minuteEnd.options[form.minuteEnd.options.selectedIndex].value; - oValue = oValue + "." + form.day.options[form.day.options.selectedIndex].value + "." + form.month.options[form.month.options.selectedIndex].value + "." + form.year.options[form.year.options.selectedIndex].value; - - //Test si la valeur est déja dans la liste - var exist = false; - var i = 0; - while (i " + form.hourEnd.options[form.hourEnd.options.selectedIndex].value + ":" + form.minuteEnd.options[form.minuteEnd.options.selectedIndex].value; - oText = oText + " " + form.day.options[form.day.options.selectedIndex].value + "/" + form.month.options[form.month.options.selectedIndex].value + "/" + form.year.options[form.year.options.selectedIndex].value; - var o = new Option(oText,oValue); - form.creneaux.options[form.creneaux.options.length]=o; - } - } - } -} - -function removecreneau(form) -{ - if (form.creneaux.options.selectedIndex>=0) - { - var i = form.creneaux.options.selectedIndex; - form.creneaux.options[form.creneaux.options.selectedIndex]=null; - if (parseInt(i) > 0) {form.creneaux.options.selectedIndex=parseInt(i)-1;} else {form.creneaux.options.selectedIndex=0;} - } - else - { - alert("Suppression impossible : aucune ligne sélectionnée"); - } -} - -function dataListe(idSelect,idInput) -{ - var liste = document.getElementById(idSelect); - if (liste) - { - for (var i=0;i\n"; -generate_html_divs_menu(); -?> -
-

- > Accueil - > Réunions - > Envoi de courriel -

-
- -
- Erreur lors de l'émission de l'email : Paramètre manquant ou érroné -
-"; - } - $to=implode(', ',$to); - - - if ( ! mail ( $to, $_POST['msgObject'], wordwrap($_POST['msgText'],70), 'From: ' . $CONFIG['automatedMail'] . "\r\n" ) ) - { - $errmsg = "Erreur lors de l'émission de l'email : Erreur inconnue"; - } - } - } - } - - if ( isset($errmsg) ) - { - echo '
' . $errmsg .'
'; - } - else - { - echo '
Le courriel à bien été envoyé
'; - echo 'Retour au détail de la réunion
'; - } - exit(); -} - - -$result = mysql_query("SELECT idL FROM AWOR_Reunion WHERE idR='$idR'"); -if (mysql_num_rows($result)===1) -{ - list($idL) = mysql_fetch_array($result); -} -else -{ - $errmsg=""; -} - - - if ( isset($errmsg) ) - { - echo '
' . $errmsg .'
'; - exit(); - } - -?> - -
-
- - - - - - - - - - - - - -
Contacts disponibles Destinataires
- - - -
-
- -
- -
-
- Modèle :  -\n"; -?> - - - - - - -
-
- Objet :  -
-
- -
-
- ' . "\n"; - ?> - - -
-
-
- -
- - - diff --git a/beta_old1/app/templates/mail_annul.php b/beta_old1/app/templates/mail_annul.php deleted file mode 100644 index 74e0d3d..0000000 --- a/beta_old1/app/templates/mail_annul.php +++ /dev/null @@ -1,12 +0,0 @@ - -Bonjour, -Une réunion vient d'être annulée sur l'Application Web d'Organisation de Réunion et vous y étiez conviés. - \ No newline at end of file diff --git a/beta_old1/app/templates/mail_cree.php b/beta_old1/app/templates/mail_cree.php deleted file mode 100644 index cd18c89..0000000 --- a/beta_old1/app/templates/mail_cree.php +++ /dev/null @@ -1,13 +0,0 @@ - -Bonjour, -Une réunion vient d'être ajoutée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. -Vous pouvez aller consulter le détail de la réunion sur le site, et merci de donner vos disponibilités au plus tôt. - \ No newline at end of file diff --git a/beta_old1/app/templates/mail_fixee.php b/beta_old1/app/templates/mail_fixee.php deleted file mode 100644 index 6259f9a..0000000 --- a/beta_old1/app/templates/mail_fixee.php +++ /dev/null @@ -1,14 +0,0 @@ - -Bonjour, -Une réunion vient d'être fixée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. -Vous pouvez aller consulter le détail de la réunion sur le site, noter le créneau retenu, -et même télécharger le fichier iCal pour synchroniser votre logiciel de calendrier préféré. - \ No newline at end of file diff --git a/beta_old1/app/templates/mail_modif.php b/beta_old1/app/templates/mail_modif.php deleted file mode 100644 index 3cbb7b1..0000000 --- a/beta_old1/app/templates/mail_modif.php +++ /dev/null @@ -1,13 +0,0 @@ - -Bonjour, -Une réunion vient d'être modifiée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. -Vous pouvez aller consulter le détail de la réunion sur le site, et merci de donner vos disponibilités au plus tôt si ce n'et déjà fait. - \ No newline at end of file diff --git a/beta_old1/app/test.php b/beta_old1/app/test.php deleted file mode 100644 index ea189ae..0000000 --- a/beta_old1/app/test.php +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/beta_old1/app/testGet.php b/beta_old1/app/testGet.php deleted file mode 100644 index 03dc369..0000000 --- a/beta_old1/app/testGet.php +++ /dev/null @@ -1,18 +0,0 @@ - - - -TestGEt - - - - - - -
-
- - diff --git a/beta_old1/doc/READ_ME.css b/beta_old1/doc/READ_ME.css deleted file mode 100644 index 2dfba7c..0000000 --- a/beta_old1/doc/READ_ME.css +++ /dev/null @@ -1,109 +0,0 @@ - -/* start css.sty */ -.cmmi-10{font-style: italic;} -.cmr-17{font-size:170%;} -.cmr-12{font-size:120%;} -.cmtt-10{font-family: monospace;} -.cmbx-10{ font-weight: bold;} -p.noindent { text-indent: 0em } -p.nopar { text-indent: 0em; } -p.indent{ text-indent: 1.5em } -@media print {div.crosslinks {visibility:hidden;}} -a img { border-top: 0; border-left: 0; border-right: 0; } -center { margin-top:1em; margin-bottom:1em; } -td center { margin-top:0em; margin-bottom:0em; } -.Canvas { position:relative; } -img.math{vertical-align:middle;} -li p.indent { text-indent: 0em } -.enumerate1 {list-style-type:decimal;} -.enumerate2 {list-style-type:lower-alpha;} -.enumerate3 {list-style-type:lower-roman;} -.enumerate4 {list-style-type:upper-alpha;} -div.newtheorem { margin-bottom: 2em; margin-top: 2em;} -.obeylines-h,.obeylines-v {white-space: nowrap; } -div.obeylines-v p { margin-top:0; margin-bottom:0; } -.overline{ text-decoration:overline; } -.overline img{ border-top: 1px solid black; } -td.displaylines {text-align:center; white-space:nowrap;} -.centerline {text-align:center;} -.rightline {text-align:right;} -div.verbatim {font-family: monospace; white-space: nowrap; } -table.verbatim {width:100%;} -.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } -div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } -table.minipage{width:100%;} -div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} -div.center div {text-align: left;} -div.flushright, div.flushright div.flushright {text-align: right;} -div.flushright div {text-align: left;} -div.flushleft {text-align: left;} -.underline{ text-decoration:underline; } -.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } -.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } -.framebox-c {text-align:center;} -.framebox-l {text-align:left;} -.framebox-r {text-align:right;} -span.thank-mark{ vertical-align: super } -span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } -div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } -table.tabular td p{margin-top:0em;} -table.tabular {margin-left: auto; margin-right: auto;} -div.td00{ margin-left:0pt; margin-right:0pt; } -div.td01{ margin-left:0pt; margin-right:5pt; } -div.td10{ margin-left:5pt; margin-right:0pt; } -div.td11{ margin-left:5pt; margin-right:5pt; } -table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } -td.td00{ padding-left:0pt; padding-right:0pt; } -td.td01{ padding-left:0pt; padding-right:5pt; } -td.td10{ padding-left:5pt; padding-right:0pt; } -td.td11{ padding-left:5pt; padding-right:5pt; } -table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } -.hline hr, .cline hr{ height : 1px; margin:0px; } -.tabbing-right {text-align:right;} -span.TEX {letter-spacing: -0.125em; } -span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} -a span.TEX span.E {text-decoration: none; } -span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} -span.LATEX span.TEX{ position:relative; left: -0.4em; } -div.float img, div.float .caption {text-align:center;} -div.figure img, div.figure .caption {text-align:center;} -.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} -.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} -table.equation {width:100%;} -.equation td{text-align:center; } -td.equation { margin-top:1em; margin-bottom:1em; } -td.equation-label { width:5%; text-align:center; } -td.eqnarray4 { width:5%; white-space: normal; } -td.eqnarray2 { width:5%; } -table.eqnarray-star, table.eqnarray {width:100%;} -div.eqnarray{text-align:center;} -div.array {text-align:center;} -div.pmatrix {text-align:center;} -table.pmatrix {width:100%;} -span.pmatrix img{vertical-align:middle;} -div.pmatrix {text-align:center;} -table.pmatrix {width:100%;} -img.cdots{vertical-align:middle;} -.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} -.caption td.id{font-weight: bold; white-space: nowrap; } -table.caption {text-align:center;} -h1.partHead{text-align: center} -p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } -p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } -.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} -.subparagraphHead, .likesubparagraphHead { font-weight: bold;} -.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} -.verse{white-space:nowrap; margin-left:2em} -div.maketitle {text-align:center;} -h2.titleHead{text-align:center;} -div.maketitle{ margin-bottom: 2em; } -div.author, div.date {text-align:center;} -div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } -div.author{white-space: nowrap;} -.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } -.abstract p {margin-left:5%; margin-right:5%;} -table.abstract {width:100%;} -.frenchb-nbsp{font-size:75%;} -.frenchb-thinspace{font-size:75%;} -/* end css.sty */ - diff --git a/beta_old1/doc/READ_ME.dvi b/beta_old1/doc/READ_ME.dvi deleted file mode 100644 index 836714e..0000000 Binary files a/beta_old1/doc/READ_ME.dvi and /dev/null differ diff --git a/beta_old1/doc/READ_ME.html b/beta_old1/doc/READ_ME.html deleted file mode 100644 index fd0333a..0000000 --- a/beta_old1/doc/READ_ME.html +++ /dev/null @@ -1,469 +0,0 @@ - - -AWOR - Fichier Lisez-moi de l’administrateur - - - - - - - - -
- - - -

AWOR - Fichier Lisez-moi de l’administrateur

-

-
13 mars 2007
-
-

Table des matières

- -

- -

1 Compatibilité

-

Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, -MySQL(>=4) et PHP (>=4). -

PHP - L’application ne nécessite pas de configuration de PHP particulière. Elle -fonctionne quelque soit la valeur du paramètre de configuration register_globals, -utilise les sessions via les fonctions introduites en PHP4. L’application fonctionne -quelque soit la verbosité des affichages d’erreur et de warning PHP, car nous avons -travaillé à éliminer tous les messages ﹤﹤ E_NOTICE ﹥﹥ PHP qui surviennent par -exemple lors d’une comparaison avec une variable non-initialisée. -

Les scripts PHP n’accèdent pas en écriture au système de fichier, sauf pour -l’upload de fichiers. Le dossier ﹤﹤ fichiers ﹥﹥ doit être accessible en écriture -par les scripts PHP sans quoi la fonctionnalité d’échange de fichier serait -inutilisable. -

MySQL - Les scripts PHP ne modifient pas structurellement la base de donnée -MySQL, il suffit donc d’un compte permettant les instructions SELECT, -INSERT, UPDATE, DELETE sur les tables de l’application. Pour indiquer à -l’application quel compte MySQL utiliser, veuillez vous reporter à la section -3.3. -

-

2 Sécurité

-

Cette application a été développée en gardant toujours à l’esprit les problèmes de -sécurités. Nous ne pouvons évidemment pas la garantir failles ni bugs, mais nous -sommes fixé des règles de programmation pour éviter les failles les plus courantes. -Toutes les données issue de l’utilisateur lors des traitements des pages web sont -traitées pour éviter des problèmes d’insertion de code dans les requetes SQL. -L’authentification des utilisateurs est systématique, vérifiée à chaque page et repose -sur le système des sessions PHP. En revanche, il faut noter que le formulaire -d’authentification n’est pas protégé contre l’usurpation de mots de passe car les -contraintes données dans le cahier des charges ne le permettent pas, dû -moins, il n’est pas possible d’utiliser un cryptage efficace (assymétrique) -sans modifier le système d’authentification déléguée et sans utiliser une -configuration de serveur Web spécifique. Considérez, pour résoudre ce problème, -l’emploi sur serveur web sécurisé (HTTPS) et l’utilisation d’une liaison entre -le serveur web et le serveur d’authentification au travers d’un réseau de -confiance. - -

-

3 Installation

-

-

3.1 Dépaquetage des pages PHP

-

L’application est livrée dans une archive de type tarball compressée qui contient -toute l’arborescence et les fichiers PHP nécessaires. Il suffit de décompresser cette -archive en conservant l’arborescence dans un dossier publié par votre serveur Web. -Les fichiers de configurations sont présent et contiennent des valeurs d’exemple que -vous pourrez adapter à votre situation. -

-

3.2 Paramètres de configuration

-

Cette application comporte deux fichiers de configuration qui sont dans le dossier -﹤﹤include ﹥﹥. Les fichiers existent dans la version distribuée et ont pour but de servir -de modèle. -

-

-connect.inc.php :
ce fichier contient les coordonnées du serveur MySQL, de - l’utilisateur SQL et de la base que l’application utilisera. -
-config.inc.php :
ce fichier contient tout le reste de la configuration de - l’application. Le fichier est un script PHP qui initialise un tableau - multi-dimentionnel. Ce choix à été fait par commodité, et pour permette - de bien hiérarchiser les information, en revanche, la syntaxe est fourbe... - N’oubliez pas de virgule ! Toutes les constantes sont décrites ci-dessous. -

-

- $adminMail :
adresse e-mail de l’administrateur. Affichée à l’utilisateur - lorsque qu’une erreur interne à l’application s’est produite. -
- $automatedMail :
adresse e-mail de réponse des courriels envoyés - automatiquement par l’application. -
- AUTH :
Paramètres d’authentification -

-

- POP :
Paramètres pour les serveurs mail POP -

- -

- SERVERS :
Chaque élément de ce tableau à pour clef le nom - de domaine du fournisseur de service de courriel ( partie - suivant le @ dans une adresse e-mail) à pour valeur un - tableau associatif de la forme suivante -

-

- subdomain :
adresse complete du serveur offrant le service - POP -
- port :
numéro de port TCP utilisé pour se connecter au - service POP -
- username_is_full_mail :
Booléen (true ou false) indicant - si le nom d’utilisateur à utiliser pour l’authentification - est l’adresse e-mail complète. C’est utile pour les serveurs - POP gérant des adresses email sur plusieurs domaines - (comme wanadoo / orange au moment où j’écris ce - document)
-
-
- bypass_if_local :
Booléen indiquant si l’authentification doit - être outrepassée si la connexion s’effectue depuis le serveur - lui-même.
-
- CSS :
Paramètres des styles de pages -

-

- CHOOSER_LIST :
Ce tableau associatif contient la liste des - styles CSS à utiliser. Les clefs sont les libellés des thèmes - à afficher et les valeurs sont les noms des fichiers CSS - correspondants, sans chemin, ni extension.
-
- MAIL :
  -

-

- TEMPLATES :
Ce tableau contient des tableaux associatifs dont - les clefs seront utilisées dans les passages de paramètres HTML, - et contiennent des sous-tableaux de la forme suivante : -

-

- caption :
Intitulé qui sera affiché à l’utilisateur - -
- tpl_file :
Nom du fichier (avec l’extension PHP) contenant le - modèle.
-
-
- SUPERUSERS :
Ce tableau contient la liste des login des super-utilisateurs - (ceux qui ont le droit de supprimer des réunions) -
- UPLOAD :
Paramètres concernant l’attachement de fichiers aux - réunions -

-

- accepted_files :
Tableau des extensions qui sont autorisées.
-
-
-

-

3.3 Initialisation de la base

-

Tout les fichiers nécessaires sont rangés dans le dossier ﹤﹤ install ﹥﹥. Vous utiliserez -principalement le fichier ﹤﹤ RAZBase.php ﹥﹥. Appelé au travers du serveur web, il vous -permettra automatiquement de mettre en place la structure de la base de données, et -optionnellement, d’insérer un jeu d’essai pour tester l’application sur votre serveur. Si -vous ne souhaitez pas utiliser de compte SQL ayant le droit d’altérer la structure -des tables de votre base avec ce script php, vous pouvez exécuter le script -﹤﹤ base.sql ﹥﹥ avec votre client SQL favori. Le jeu d’essai se trouve dans le fichier -﹤﹤ jeu_essai.sql ﹥﹥. -

-

3.4 Configuration par défaut des comptes

-

Dans le fichier de configuration modèle, un super-utilisateur est configuré : -inglebert@iut-blagnac.fr et le jeu d’essai proposé au paragraphe précédent permet de -créer des utilisateurs, et en particulier inglebert@iut-blagnac.fr. -

Par défaut, vous pourrez donc vous connecter en tant qu’administrateur avec ce -compte. Le jeu d’essai met ce compte avec comme mode d’authentification ﹤﹤ bypass ﹥﹥, -ce qui signifie qu’aucun mot de passe est nécessaire. Pour utiliser un vrai système -d’authentification, connectez-vous avec ce compte et allez dans la page ﹤﹤ Mon Profil ﹥﹥ -pour choisir une autre mode d’authentification. -

-

4 Maintenance

- -

-

4.1 Visualisation des objets et des fichiers

-

Une page d’administration est prévue à cet effet, et elle n’est accessible que par un -﹤﹤ super-utilisateur ﹥﹥, c’est à dire un utilisateur consigné dans le fichier de -configuration principal en tant que tel, confère 3.2. -

-

4.2 Nettoyage de la base

-

À partir de la page d’administration décrite dans le paragraphe précédent, vous -pouvez aussi purger les fichiers attachés et les objets de la base de données devenus -obsolètes. L’aide contextuelle de cette page vous expliquera comment faire. Il est -vivement conseillé de faire une sauvegarde de la base de données et des fichiers joints -aux réunions avant d’utiliser cet outil car l’erreur de manipulation ou de -programmation est toujours possible... -

-

5 Authentification dédiée - Personnalisation

-

AWOR utilise un système d’authentification dédiée de sorte qu’aucun mot de passe -ne soit stocké, et que l’utilisateur n’ait pas besoin d’en retenir un nouveau. -Le code d’authentification à été écrit de manière à être maléable et est -extensible. Le coeur du système d’authentification se trouve dans le fichier -﹤﹤auth_dialog.php ﹥﹥. Vous y trouverez une section commençant par le commentaire -ci-dessous. -

-

-
- /*************************************************** -

** Ajouter d’autres mode d’authentification ici ! ** -

***************************************************/

-

Comme l’indique ce commentaire, vous pourrez ajouter à cet endroit une portion -de code pour utiliser un autre service d’authentification. La syntaxe est la -suivante : -

-

-
- case ’<nom_auth>’ : -

/* Eventuellement du code préléminaire */ -

$auth_is_ok=<fonction_ou_variable_authentification>; -

if ( ! $auth_is_ok ) - -

{ // On exécute la ligne ci-dessous que si l’authentificaiton à échouée -

$errmsg=<fonction_ou_chaine_explicant_l_erreur_d_authentification>; -

} -

break;

-

Il vous suffit de remplacer les éléments entre chevrons dans le code ci-dessus et de le -coller dans ﹤﹤auth_dialog.inc.php﹥﹥ pour pouvoir utiliser un nouveau mode -d’authentification. Reste à donner à l’utilisateur la capacité de l’utiliser. Vous -devrez encore, d’une part, ajouter dans la base de données le <nom_auth> à -l’énumération du champ ﹤﹤methodeAuth﹥﹥ de la table ﹤﹤Personne﹥﹥, et d’autre part -proposer à l’utilisateur d’utiliser ce mode d’authentification en modifiant la page -﹤﹤profil.php﹥﹥. - - - - - diff --git a/beta_old1/doc/READ_ME.lyx b/beta_old1/doc/READ_ME.lyx deleted file mode 100644 index 9c5e090..0000000 --- a/beta_old1/doc/READ_ME.lyx +++ /dev/null @@ -1,582 +0,0 @@ -#LyX 1.4.3 created this file. For more info see http://www.lyx.org/ -\lyxformat 245 -\begin_document -\begin_header -\textclass article -\language french -\inputencoding auto -\fontscheme default -\graphics default -\paperfontsize default -\spacing single -\papersize default -\use_geometry false -\use_amsmath 1 -\cite_engine basic -\use_bibtopic false -\paperorientation portrait -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip medskip -\quotes_language french -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\end_header - -\begin_body - -\begin_layout Title -AWOR - Fichier Lisez-moi de l'administrateur -\end_layout - -\begin_layout Standard -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - - -\end_layout - -\begin_layout Standard - -\newpage - -\end_layout - -\begin_layout Section -Compatibilité -\end_layout - -\begin_layout Standard -Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, - MySQL(>=4) et PHP (>=4). - -\end_layout - -\begin_layout Paragraph -PHP -\end_layout - -\begin_layout Standard -L'application ne nécessite pas de configuration de PHP particulière. - Elle fonctionne quelque soit la valeur du paramètre de configuration register_g -lobals, utilise les sessions via les fonctions introduites en PHP4. - L'application fonctionne quelque soit la verbosité des affichages d'erreur - et de warning PHP, car nous avons travaillé à éliminer tous les messages - -\begin_inset Quotes fld -\end_inset - -E_NOTICE -\begin_inset Quotes frd -\end_inset - - PHP qui surviennent par exemple lors d'une comparaison avec une variable - non-initialisée. -\end_layout - -\begin_layout Standard -Les scripts PHP n'accèdent pas en écriture au système de fichier, sauf pour - l'upload de fichiers. - Le dossier -\begin_inset Quotes fld -\end_inset - -fichiers -\begin_inset Quotes frd -\end_inset - - doit être accessible en écriture par les scripts PHP sans quoi la fonctionnalit -é d'échange de fichier serait inutilisable. -\end_layout - -\begin_layout Paragraph -MySQL -\end_layout - -\begin_layout Standard -Les scripts PHP ne modifient pas structurellement la base de donnée MySQL, - il suffit donc d'un compte permettant les instructions SELECT, INSERT, - UPDATE, DELETE sur les tables de l'application. - Pour indiquer à l'application quel compte MySQL utiliser, veuillez vous - reporter à la section -\begin_inset LatexCommand \ref{sub:Initialisation-de-la-bd} - -\end_inset - -. -\end_layout - -\begin_layout Section -Sécurité -\end_layout - -\begin_layout Standard -Cette application a été développée en gardant toujours à l'esprit les problèmes - de sécurités. - Nous ne pouvons évidemment pas la garantir failles ni bugs, mais nous sommes - fixé des règles de programmation pour éviter les failles les plus courantes. - Toutes les données issue de l'utilisateur lors des traitements des pages - web sont traitées pour éviter des problèmes d'insertion de code dans les - requetes SQL. - L'authentification des utilisateurs est systématique, vérifiée à chaque - page et repose sur le système des sessions PHP. - En revanche, il faut noter que le formulaire d'authentification n'est pas - protégé contre l'usurpation de mots de passe car les contraintes données - dans le cahier des charges ne le permettent pas, dû moins, il n'est pas - possible d'utiliser un cryptage efficace (assymétrique) sans modifier le - système d'authentification déléguée et sans utiliser une configuration - de serveur Web spécifique. - Considérez, pour résoudre ce problème, l'emploi sur serveur web sécurisé - (HTTPS) et l'utilisation d'une liaison entre le serveur web et le serveur - d'authentification au travers d'un réseau de confiance. -\end_layout - -\begin_layout Section -Installation -\end_layout - -\begin_layout Subsection -Dépaquetage des pages PHP -\end_layout - -\begin_layout Standard -L'application est livrée dans une archive de type tarball compressée qui - contient toute l'arborescence et les fichiers PHP nécessaires. - Il suffit de décompresser cette archive en conservant l'arborescence dans - un dossier publié par votre serveur Web. - Les fichiers de configurations sont présent et contiennent des valeurs - d'exemple que vous pourrez adapter à votre situation. -\end_layout - -\begin_layout Standard - -\end_layout - -\begin_layout Subsection -\begin_inset LatexCommand \label{sub:Configuration} - -\end_inset - -Paramètres de configuration -\end_layout - -\begin_layout Standard -Cette application comporte deux fichiers de configuration qui sont dans - le dossier -\begin_inset Quotes fld -\end_inset - -include -\begin_inset Quotes frd -\end_inset - -. - Les fichiers existent dans la version distribuée et ont pour but de servir - de modèle. -\end_layout - -\begin_layout Description -connect.inc.php\InsetSpace ~ -: ce fichier contient les coordonnées du serveur MySQL, de - l'utilisateur SQL et de la base que l'application utilisera. -\end_layout - -\begin_layout Description -config.inc.php\InsetSpace ~ -: ce fichier contient tout le reste de la configuration de l'applica -tion. - Le fichier est un script PHP qui initialise un tableau multi-dimentionnel. - Ce choix à été fait par commodité, et pour permette de bien hiérarchiser - les information, en revanche, la syntaxe est fourbe\SpecialChar \ldots{} - N'oubliez pas de virgule - ! Toutes les constantes sont décrites ci-dessous. -\end_layout - -\begin_deeper -\begin_layout Description -$adminMail\InsetSpace ~ -: adresse e-mail de l'administrateur. - Affichée à l'utilisateur lorsque qu'une erreur interne à l'application - s'est produite. -\end_layout - -\begin_layout Description -$automatedMail\InsetSpace ~ -: adresse e-mail de réponse des courriels envoyés automatiquement - par l'application. -\end_layout - -\begin_layout Description -AUTH\InsetSpace ~ -: Paramètres d'authentification -\end_layout - -\begin_deeper -\begin_layout Description -POP\InsetSpace ~ -: Paramètres pour les serveurs mail POP -\end_layout - -\begin_deeper -\begin_layout Description -SERVERS\InsetSpace ~ -: Chaque élément de ce tableau à pour clef le nom de domaine du fournisse -ur de service de courriel ( partie suivant le @ dans une adresse e-mail) - à pour valeur un tableau associatif de la forme suivante -\end_layout - -\begin_deeper -\begin_layout Description -subdomain\InsetSpace ~ -: adresse complete du serveur offrant le service POP -\end_layout - -\begin_layout Description -port\InsetSpace ~ -: numéro de port TCP utilisé pour se connecter au service POP -\end_layout - -\begin_layout Description -username_is_full_mail\InsetSpace ~ -: Booléen (true ou false) indicant si le nom d'utilisateur - à utiliser pour l'authentification est l'adresse e-mail complète. - C'est utile pour les serveurs POP gérant des adresses email sur plusieurs - domaines (comme wanadoo / orange au moment où j'écris ce document) -\end_layout - -\end_deeper -\end_deeper -\begin_layout Description -bypass_if_local\InsetSpace ~ -: Booléen indiquant si l'authentification doit être outrepassée - si la connexion s'effectue depuis le serveur lui-même. -\end_layout - -\end_deeper -\begin_layout Description -CSS\InsetSpace ~ -: Paramètres des styles de pages -\end_layout - -\begin_deeper -\begin_layout Description -CHOOSER_LIST\InsetSpace ~ -: Ce tableau associatif contient la liste des styles CSS à utiliser. - Les clefs sont les libellés des thèmes à afficher et les valeurs sont les - noms des fichiers CSS correspondants, sans chemin, ni extension. -\end_layout - -\end_deeper -\begin_layout Description -MAIL\InsetSpace ~ -: -\end_layout - -\begin_deeper -\begin_layout Description -TEMPLATES\InsetSpace ~ -: Ce tableau contient des tableaux associatifs dont les clefs seront - utilisées dans les passages de paramètres HTML, et contiennent des sous-tableau -x de la forme suivante : -\end_layout - -\begin_deeper -\begin_layout Description -caption\InsetSpace ~ -: Intitulé qui sera affiché à l'utilisateur -\end_layout - -\begin_layout Description -tpl_file\InsetSpace ~ -: Nom du fichier (avec l'extension PHP) contenant le modèle. -\end_layout - -\end_deeper -\end_deeper -\begin_layout Description -SUPERUSERS\InsetSpace ~ -: Ce tableau contient la liste des login des super-utilisateurs - (ceux qui ont le droit de supprimer des réunions) -\end_layout - -\begin_layout Description -UPLOAD\InsetSpace ~ -: Paramètres concernant l'attachement de fichiers aux réunions -\end_layout - -\begin_deeper -\begin_layout Description -accepted_files\InsetSpace ~ -: Tableau des extensions qui sont autorisées. -\end_layout - -\end_deeper -\end_deeper -\begin_layout Subsection -\begin_inset LatexCommand \label{sub:Initialisation-de-la-bd} - -\end_inset - -Initialisation de la base -\end_layout - -\begin_layout Standard -Tout les fichiers nécessaires sont rangés dans le dossier -\begin_inset Quotes fld -\end_inset - -install -\begin_inset Quotes frd -\end_inset - -. - Vous utiliserez principalement le fichier -\begin_inset Quotes fld -\end_inset - -RAZBase.php -\begin_inset Quotes frd -\end_inset - -. - Appelé au travers du serveur web, il vous permettra automatiquement de - mettre en place la structure de la base de données, et optionnellement, - d'insérer un jeu d'essai pour tester l'application sur votre serveur. - Si vous ne souhaitez pas utiliser de compte SQL ayant le droit d'altérer - la structure des tables de votre base avec ce script php, vous pouvez exécuter - le script -\begin_inset Quotes fld -\end_inset - -base.sql -\begin_inset Quotes frd -\end_inset - - avec votre client SQL favori. - Le jeu d'essai se trouve dans le fichier -\begin_inset Quotes fld -\end_inset - -jeu_essai.sql -\begin_inset Quotes frd -\end_inset - -. -\end_layout - -\begin_layout Subsection -Configuration par défaut des comptes -\end_layout - -\begin_layout Standard -Dans le fichier de configuration modèle, un super-utilisateur est configuré - : inglebert@iut-blagnac.fr et le jeu d'essai proposé au paragraphe précédent - permet de créer des utilisateurs, et en particulier inglebert@iut-blagnac.fr. -\end_layout - -\begin_layout Standard -Par défaut, vous pourrez donc vous connecter en tant qu'administrateur avec - ce compte. - Le jeu d'essai met ce compte avec comme mode d'authentification -\begin_inset Quotes fld -\end_inset - -bypass -\begin_inset Quotes frd -\end_inset - -, ce qui signifie qu'aucun mot de passe est nécessaire. - Pour utiliser un vrai système d'authentification, connectez-vous avec ce - compte et allez dans la page -\begin_inset Quotes fld -\end_inset - -Mon Profil -\begin_inset Quotes frd -\end_inset - - pour choisir une autre mode d'authentification. -\end_layout - -\begin_layout Section -Maintenance -\end_layout - -\begin_layout Subsection -Visualisation des objets et des fichiers -\end_layout - -\begin_layout Standard -Une page d'administration est prévue à cet effet, et elle n'est accessible - que par un -\begin_inset Quotes fld -\end_inset - -super-utilisateur -\begin_inset Quotes frd -\end_inset - -, c'est à dire un utilisateur consigné dans le fichier de configuration - principal en tant que tel, confère -\begin_inset LatexCommand \ref{sub:Configuration} - -\end_inset - -. -\end_layout - -\begin_layout Subsection -Nettoyage de la base -\end_layout - -\begin_layout Standard -À partir de la page d'administration décrite dans le paragraphe précédent, - vous pouvez aussi purger les fichiers attachés et les objets de la base - de données devenus obsolètes. - L'aide contextuelle de cette page vous expliquera comment faire. - Il est vivement conseillé de faire une sauvegarde de la base de données - et des fichiers joints aux réunions avant d'utiliser cet outil car l'erreur - de manipulation ou de programmation est toujours possible\SpecialChar \ldots{} - -\end_layout - -\begin_layout Section -Authentification dédiée - Personnalisation -\end_layout - -\begin_layout Standard -AWOR utilise un système d'authentification dédiée de sorte qu'aucun mot - de passe ne soit stocké, et que l'utilisateur n'ait pas besoin d'en retenir - un nouveau. - Le code d'authentification à été écrit de manière à être maléable et est - extensible. - Le coeur du système d'authentification se trouve dans le fichier -\begin_inset Quotes fld -\end_inset - -auth_dialog.php -\begin_inset Quotes frd -\end_inset - -. - Vous y trouverez une section commençant par le commentaire ci-dessous. -\end_layout - -\begin_layout LyX-Code - -\lang english -/*************************************************** -\end_layout - -\begin_layout LyX-Code - -\lang english -** Ajouter d'autres mode d'authentification ici ! ** -\end_layout - -\begin_layout LyX-Code - -\lang english -***************************************************/ -\end_layout - -\begin_layout Standard -Comme l'indique ce commentaire, vous pourrez ajouter à cet endroit une portion - de code pour utiliser un autre service d'authentification. - La syntaxe est la suivante : -\end_layout - -\begin_layout LyX-Code -case '': -\end_layout - -\begin_layout LyX-Code -/* Eventuellement du code préléminaire */ -\end_layout - -\begin_layout LyX-Code - -\lang english -$auth_is_ok=; -\end_layout - -\begin_layout LyX-Code - -\lang english -if ( ! $auth_is_ok ) -\end_layout - -\begin_layout LyX-Code - -\lang english -{ // On exécute la ligne ci-dessous que si l'authentificaiton à échouée -\end_layout - -\begin_layout LyX-Code - -\lang english -$errmsg=; -\end_layout - -\begin_layout LyX-Code - -\lang english -} -\end_layout - -\begin_layout LyX-Code - -\lang english -break; -\end_layout - -\begin_layout Standard - -\lang english -Il vous suffit de remplacer les éléments entre chevrons dans le code ci-dessus - et de le coller dans -\begin_inset Quotes fld -\end_inset - -auth_dialog.inc.php -\begin_inset Quotes frd -\end_inset - - pour pouvoir utiliser un nouveau mode d'authentification. - Reste à donner à l'utilisateur la capacité de l'utiliser. - Vous devrez encore, d'une part, ajouter dans la base de données le - à l'énumération du champ -\begin_inset Quotes fld -\end_inset - -methodeAuth -\begin_inset Quotes frd -\end_inset - - de la table -\begin_inset Quotes fld -\end_inset - -Personne -\begin_inset Quotes frd -\end_inset - -, et d'autre part proposer à l'utilisateur d'utiliser ce mode d'authentification - en modifiant la page -\begin_inset Quotes fld -\end_inset - -profil.php -\begin_inset Quotes frd -\end_inset - -. -\end_layout - -\end_body -\end_document diff --git a/beta_old1/doc/READ_ME.lyx~ b/beta_old1/doc/READ_ME.lyx~ deleted file mode 100644 index af8e3a7..0000000 --- a/beta_old1/doc/READ_ME.lyx~ +++ /dev/null @@ -1,582 +0,0 @@ -#LyX 1.4.3 created this file. For more info see http://www.lyx.org/ -\lyxformat 245 -\begin_document -\begin_header -\textclass article -\language french -\inputencoding auto -\fontscheme default -\graphics default -\paperfontsize default -\spacing single -\papersize default -\use_geometry false -\use_amsmath 1 -\cite_engine basic -\use_bibtopic false -\paperorientation portrait -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip medskip -\quotes_language french -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\end_header - -\begin_body - -\begin_layout Title -AWOR - Fichier Lisez-moi de l'administrateur -\end_layout - -\begin_layout Standard -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - - -\end_layout - -\begin_layout Standard - -\newpage - -\end_layout - -\begin_layout Section -Compatibilité -\end_layout - -\begin_layout Standard -Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, - MySQL(>=4) et PHP (>=4). - -\end_layout - -\begin_layout Paragraph -PHP -\end_layout - -\begin_layout Standard -L'application ne nécessite pas de configuration de PHP particulière. - Elle fonctionne quelque soit la valeur du paramètre de configuration register_g -lobals, utilise les sessions via les fonctions introduites en PHP4. - L'application fonctionne quelque soit la verbosité des affichages d'erreur - et de warning PHP, car nous avons travaillé à éliminer tous les messages - -\begin_inset Quotes fld -\end_inset - -E_NOTICE -\begin_inset Quotes frd -\end_inset - - PHP qui surviennent par exemple lors d'une comparaison avec une variable - non-initialisée. -\end_layout - -\begin_layout Standard -Les scripts PHP n'accèdent pas en écriture au système de fichier, sauf pour - l'upload de fichiers. - Le dossier -\begin_inset Quotes fld -\end_inset - -fichiers -\begin_inset Quotes frd -\end_inset - - doit être accessible en écriture par les scripts PHP sans quoi la fonctionnalit -é d'échange de fichier serait inutilisable. -\end_layout - -\begin_layout Paragraph -MySQL -\end_layout - -\begin_layout Standard -Les scripts PHP ne modifient pas structurellement la base de donnée MySQL, - il suffit donc d'un compte permettant les instructions SELECT, INSERT, - UPDATE, DELETE sur les tables de l'application. - Pour indiquer à l'application quel compte MySQL utiliser, veuillez vous - reporter à la section -\begin_inset LatexCommand \ref{sub:Initialisation-de-la-bd} - -\end_inset - -. -\end_layout - -\begin_layout Section -Sécurité -\end_layout - -\begin_layout Standard -Cette application a été développée en gardant toujours à l'esprit les problèmes - de sécurités. - Nous ne pouvons évidemment pas la garantir failles ni bugs, mais nous sommes - fixé des règles de programmation pour éviter les failles les plus courantes. - Toutes les données issue de l'utilisateur lors des traitements des pages - web sont traitées pour éviter des problèmes d'insertion de code dans les - requetes SQL. - L'authentification des utilisateurs est systématique, vérifiée à chaque - page et repose sur le système des sessions PHP. - En revanche, il faut noter que le formulaire d'authentification n'est pas - protégé contre l'usurpation de mots de passe car les contraintes données - dans le cahier des charges ne le permettent pas, dû moins, il n'est pas - possible d'utiliser un cryptage efficace (assymétrique) sans modifier le - système d'authentification déléguée et sans utiliser une configuration - de serveur Web spécifique. - Considérez, pour résoudre ce problème, l'emploi sur serveur web sécurisé - (HTTPS) et l'utilisation d'une liaison entre le serveur web et le serveur - d'authentification au travers d'un réseau de confiance. -\end_layout - -\begin_layout Section -Installation -\end_layout - -\begin_layout Subsection -Dépaquetage des pages PHP -\end_layout - -\begin_layout Standard -L'application est livrée dans une archive de type tarball compressée qui - contient toute l'arborescence et les fichiers PHP nécessaires. - Il suffit de décompresser cette archive en conservant l'arborescence dans - un dossier publié par votre serveur Web. - Les fichiers de configurations sont présent et contiennent des valeurs - d'exemple que vous pourrez adapter à votre situation. -\end_layout - -\begin_layout Standard - -\end_layout - -\begin_layout Subsection -\begin_inset LatexCommand \label{sub:Configuration} - -\end_inset - -Paramètres de configuration -\end_layout - -\begin_layout Standard -Cette application comporte deux fichiers de configuration qui sont dans - le dossier -\begin_inset Quotes fld -\end_inset - -include -\begin_inset Quotes frd -\end_inset - -. - Les fichiers existent dans la version distribuée et ont pour but de servir - de modèle. -\end_layout - -\begin_layout Description -connect.inc.php\InsetSpace ~ -: ce fichier contient les coordonnées du serveur MySQL, de - l'utilisateur SQL et de la base que l'application utilisera. -\end_layout - -\begin_layout Description -config.inc.php\InsetSpace ~ -: ce fichier contient tout le reste de la configuration de l'applica -tion. - Le fichier est un script PHP qui initialise un tableau multi-dimentionnel. - Ce choix à été fait par commodité, et pour permette de bien hiérarchiser - les information, en revanche, la syntaxe est fourbe\SpecialChar \ldots{} - N'oubliez pas de virgule - ! Toutes les constantes sont décrites ci-dessous. -\end_layout - -\begin_deeper -\begin_layout Description -$adminMail\InsetSpace ~ -: adresse e-mail de l'administrateur. - Affichée à l'utilisateur lorsque qu'une erreur interne à l'application - s'est produite. -\end_layout - -\begin_layout Description -$automatedMail\InsetSpace ~ -: adresse e-mail de réponse des courriels envoyés automatiquement - par l'application. -\end_layout - -\begin_layout Description -AUTH\InsetSpace ~ -: Paramètres d'authentification -\end_layout - -\begin_deeper -\begin_layout Description -POP\InsetSpace ~ -: Paramètres pour les serveurs mail POP -\end_layout - -\begin_deeper -\begin_layout Description -SERVERS\InsetSpace ~ -: Chaque élément de ce tableau à pour clef le nom de domaine du fournisse -ur de service de courriel ( partie suivant le @ dans une adresse e-mail) - à pour valeur un tableau associatif de la forme suivante -\end_layout - -\begin_deeper -\begin_layout Description -subdomain\InsetSpace ~ -: adresse complete du serveur offrant le service POP -\end_layout - -\begin_layout Description -port\InsetSpace ~ -: numéro de port TCP utilisé pour se connecter au service POP -\end_layout - -\begin_layout Description -username_is_full_mail\InsetSpace ~ -: Booléen (true ou false) indicant si le nom d'utilisateur - à utiliser pour l'authentification est l'adresse e-mail complète. - C'est utile pour les serveurs POP gérant des adresses email sur plusieurs - domaines (comme wanadoo / orange au moment où j'écris ce document) -\end_layout - -\end_deeper -\end_deeper -\begin_layout Description -bypass_if_local\InsetSpace ~ -: Booléen indiquant si l'authentification doit être outrepassée - si la connexion s'effectue depuis le serveur lui-même. -\end_layout - -\end_deeper -\begin_layout Description -CSS\InsetSpace ~ -: Paramètres des styles de pages -\end_layout - -\begin_deeper -\begin_layout Description -CHOOSER_LIST\InsetSpace ~ -: Ce tableau associatif contient la liste des styles CSS à utiliser. - Les clefs sont les libellés des thèmes à afficher et les valeurs sont les - noms des fichiers CSS correspondants, sans chemin, ni extension. -\end_layout - -\end_deeper -\begin_layout Description -MAIL\InsetSpace ~ -: -\end_layout - -\begin_deeper -\begin_layout Description -TEMPLATES\InsetSpace ~ -: Ce tableau contient des tableaux associatifs dont les clefs seront - utilisées dans les passages de paramètres HTML, et contiennent des sous-tableau -x de la forme suivante : -\end_layout - -\begin_deeper -\begin_layout Description -caption\InsetSpace ~ -: Intitulé qui sera affiché à l'utilisateur -\end_layout - -\begin_layout Description -tpl_file\InsetSpace ~ -: Nom du fichier (avec l'extension PHP) contenant le modèle. -\end_layout - -\end_deeper -\end_deeper -\begin_layout Description -SUPERUSERS\InsetSpace ~ -: Ce tableau contient la liste des login des super-utilisateurs - (ceux qui ont le droit de supprimer des réunions) -\end_layout - -\begin_layout Description -UPLOAD\InsetSpace ~ -: Paramètres concernant l'attachement de fichiers aux réunions -\end_layout - -\begin_deeper -\begin_layout Description -accepted_files\InsetSpace ~ -: Tableau des extensions qui sont autorisées. -\end_layout - -\end_deeper -\end_deeper -\begin_layout Subsection -\begin_inset LatexCommand \label{sub:Initialisation-de-la-bd} - -\end_inset - -Initialisation de la base -\end_layout - -\begin_layout Standard -Tout les fichiers nécessaires sont rangés dans le dossier -\begin_inset Quotes fld -\end_inset - -install -\begin_inset Quotes frd -\end_inset - -. - Vous utiliserez principalement le fichier -\begin_inset Quotes fld -\end_inset - -RAZBase.php -\begin_inset Quotes frd -\end_inset - -. - Appelé au travers du serveur web, il vous permettra automatiquement de - mettre en place la structure de la base de données, et optionnellement, - d'insérer un jeu d'essai pour tester l'application sur votre serveur. - Si vous ne souhaitez pas utiliser de compte SQL ayant le droit d'altérer - la structure des tables de votre base avec ce script php, vous pouvez exécuter - le script -\begin_inset Quotes fld -\end_inset - -base.sql -\begin_inset Quotes frd -\end_inset - - avec votre client SQL favori. - Le jeu d'essai se trouve dans le fichier -\begin_inset Quotes fld -\end_inset - -jeu_essai.sql -\begin_inset Quotes frd -\end_inset - -. -\end_layout - -\begin_layout Subsection -Configuration par défaut des comptes -\end_layout - -\begin_layout Standard -Dans le fichier de configuration modèle, un super-utilisateur est configuré - : inglebert@iut-blagnac.fr et le jeu d'essai proposé au paragraphe précédent - permet de créer des utilisateurs, et en particulier inglebert@iut-blagnac.fr. -\end_layout - -\begin_layout Standard -Par défaut, vous pourrez donc vous connecter en tant qu'administrateur avec - ce compte. - Le jeu d'essai met ce compte avec comme mode d'authentification -\begin_inset Quotes fld -\end_inset - -bypass -\begin_inset Quotes frd -\end_inset - -, ce qui signifie qu'aucun mot de passe est nécessaire. - Pour utiliser un vrai système d'authentification, connectez-vous avec ce - compte et allez dans la page -\begin_inset Quotes fld -\end_inset - -Mon Profil -\begin_inset Quotes frd -\end_inset - - pour choisir une autre système. -\end_layout - -\begin_layout Section -Maintenance -\end_layout - -\begin_layout Subsection -Visualisation des objets et des fichiers -\end_layout - -\begin_layout Standard -Une page d'administration est prévue à cet effet, et elle n'est accessible - que par un -\begin_inset Quotes fld -\end_inset - -super-utilisateur -\begin_inset Quotes frd -\end_inset - -, c'est à dire un utilisateur consigné dans le fichier de configuration - principal en tant que tel, confère -\begin_inset LatexCommand \ref{sub:Configuration} - -\end_inset - -. -\end_layout - -\begin_layout Subsection -Nettoyage de la base -\end_layout - -\begin_layout Standard -À partir de la page d'administration décrite dans le paragraphe précédent, - vous pouvez aussi purger les fichiers attachés et les objets de la base - de données devenus obsolètes. - L'aide contextuelle de cette page vous expliquera comment faire. - Il est vivement conseillé de faire une sauvegarde de la base de données - et des fichiers joints aux réunions avant d'utiliser cet outil car l'erreur - de manipulation ou de programmation est toujours possible\SpecialChar \ldots{} - -\end_layout - -\begin_layout Section -Authentification dédiée - Personnalisation -\end_layout - -\begin_layout Standard -AWOR utilise un système d'authentification dédiée de sorte qu'aucun mot - de passe ne soit stocké, et que l'utilisateur n'ait pas besoin d'en retenir - un nouveau. - Le code d'authentification à été écrit de manière à être maléable et est - extensible. - Le coeur du système d'authentification se trouve dans le fichier -\begin_inset Quotes fld -\end_inset - -auth_dialog.php -\begin_inset Quotes frd -\end_inset - -. - Vous y trouverez une section commençant par le commentaire ci-dessous. -\end_layout - -\begin_layout LyX-Code - -\lang english -/*************************************************** -\end_layout - -\begin_layout LyX-Code - -\lang english -** Ajouter d'autres mode d'authentification ici ! ** -\end_layout - -\begin_layout LyX-Code - -\lang english -***************************************************/ -\end_layout - -\begin_layout Standard -Comme l'indique ce commentaire, vous pourrez ajouter à cet endroit une portion - de code pour utiliser un autre service d'authentification. - La syntaxe est la suivante : -\end_layout - -\begin_layout LyX-Code -case '': -\end_layout - -\begin_layout LyX-Code -/* Eventuellement du code préléminaire */ -\end_layout - -\begin_layout LyX-Code - -\lang english -$auth_is_ok=; -\end_layout - -\begin_layout LyX-Code - -\lang english -if ( ! $auth_is_ok ) -\end_layout - -\begin_layout LyX-Code - -\lang english -{ // On exécute la ligne ci-dessous que si l'authentificaiton à échouée -\end_layout - -\begin_layout LyX-Code - -\lang english -$errmsg=; -\end_layout - -\begin_layout LyX-Code - -\lang english -} -\end_layout - -\begin_layout LyX-Code - -\lang english -break; -\end_layout - -\begin_layout Standard - -\lang english -Il vous suffit de remplacer les éléments entre chevrons dans le code ci-dessus - et de le coller dans -\begin_inset Quotes fld -\end_inset - -auth_dialog.inc.php -\begin_inset Quotes frd -\end_inset - - pour pouvoir utiliser un nouveau mode d'authentification. - Reste à donner à l'utilisateur la capacité de l'utiliser. - Vous devrez encore, d'une part, ajouter dans la base de données le - à l'énumération du champ -\begin_inset Quotes fld -\end_inset - -methodeAuth -\begin_inset Quotes frd -\end_inset - - de la table -\begin_inset Quotes fld -\end_inset - -Personne -\begin_inset Quotes frd -\end_inset - -, et d'autre part proposer à l'utilisateur d'utiliser ce mode d'authentification - en modifiant la page -\begin_inset Quotes fld -\end_inset - -profil.php -\begin_inset Quotes frd -\end_inset - -. -\end_layout - -\end_body -\end_document diff --git a/beta_old1/doc/READ_ME.pdf b/beta_old1/doc/READ_ME.pdf deleted file mode 100644 index 7948fe2..0000000 Binary files a/beta_old1/doc/READ_ME.pdf and /dev/null differ diff --git a/beta_old1/doc/READ_ME.ps b/beta_old1/doc/READ_ME.ps deleted file mode 100644 index 9c293fc..0000000 --- a/beta_old1/doc/READ_ME.ps +++ /dev/null @@ -1,2436 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software -%%Title: READ_ME.dvi -%%Pages: 5 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMR17 CMR12 CMBX12 CMBX10 CMR10 CMMI10 LASY10 CMTT10 -%%+ CMSY10 -%%DocumentPaperSizes: Letter -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -t letter -o READ_ME.ps READ_ME.dvi -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2007.03.13:1229 -%%BeginProcSet: tex.pro 0 0 -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S -/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy -setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask -restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: texps.pro 0 0 -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 102 /braceleft put -dup 103 /braceright put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 -7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 -A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 -E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A -221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A -27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF -5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 -0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 -DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A -71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 -4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD -5F3D998C69E42AA96AA212AD55B676FA2B4F6B519575404233C09AF99014AB95 -767523D9E1F8806E766AC0DD6D81028C3AA9C7536D88D3C2DB6D9949F844935E -420963F40430452DEAAC1F500BFB1C2473C54B9987BE449F042633C7038D5AEB -7E1E11C50911EBCF0979F8192E056A2B2EE9785EB73B1AB874116AD5AA74F32C -BF57FC28FFED335DFD9261AC7A624EAA93BEBC2C0F8B3F898DDA1490D59C6C4B -A651746C8EAD41BDAA1AF4056AFE98D2D3AE3CCEB9C67FE3A63385470EA42968 -34268684A674675AB9EDBB5BFCA81224B22D4ECF40D1F31A39481AC68A87F252 -F4E7C1C340A26E0D514BACCAA51898758A7E7B63D2E7F34E91554151433F0FD2 -4901D3DE9A5FB9306552DC57EAB729AA07780927E1ECCB5D1F59A09A1E3FFF2D -922B6C9B58CB20D687A72B9C22D4EC926771541EDA3B75559510DB21BA4461EA -960B8E5AF4D31D08E8F235D677A9F6EFDB01926967743942C23955678E438F51 -E5E22E2FA2AA7894755053C32B39277B82C00B3D9BE9957CF3ED626852FFFC31 -6E5F0F7489198136A3284B31CC94299EED05B8FA66B8D33F7C47367790D23CD5 -303B0C8E58B0E51BEA9325282F19A3D361A3BEA6BB0CCD09BE735D810E7E0A79 -D1A9C580CFC8CF9FF685D63ECDCCC024C235448BA632F00C3C5BC0E86F44B90A -293817CC93035E5E18548A7E157C2887309BF84C167D8DBED024BB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 18 /grave put -dup 19 /acute put -dup 33 /exclam put -dup 36 /dollar put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 45 /hyphen put -dup 47 /slash put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 65 /A put -dup 69 /E put -dup 79 /O put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 120 /x put -readonly def -/FontBBox{-4 -235 731 800}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 -741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 -E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 -E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 -D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE -C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA -726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 -CEBEF0C9440DC034DAD9C19FB27A350233112B0A339366B7373CE058456E0E1F -139E2DCAA12133B5B6017B0E08E776403F967AF719E0161CDFBF8BBE8490F57E -53C78E97517EF7FB7C00035D601CAC8F4EB2F16F8765614227C71C390C32E960 -FC7E9B9BF26D89F808B05C2E483B9171450E4CF3A86E62886E826B1E34FEC34A -90D3FAC2AF1FB275E094E8D7193F90BC0CB304DF4D689A954C9449169527C39D -9CB9096FC455C5D6142157E548E04DDDE0638C24641FF3EE31B1E35E1A76EA79 -F0DBFAC9967E6C649559B6CA9944962E09541FBB7A00956D1ACA7D8C2355A2C6 -12CA44A7392D8E791DDE1DE818BBF26CE3BCC2568666FCF40BD9C588E28745D4 -49186EDEF6D270E5D8C9BF95B4C1213841128AF3361EE4B989D3A784F916A2D7 -D31A9F2F0C3E4F367427BF3F0C4F36E9276D082BF8C250E469D647AB51DD7701 -4C29231FEB055C147F0A782389800E3ED38D7AE8C6555228CD148541D763D325 -21016A8A5234A8AC19BFD6E3346A94D8A7479DBC59B5796D3063FCC2CE8DBCC9 -1E4139036B4E883A4CBFC0DA2F3BCAAF8BF4DA641882E8CF028D9F9271257FD3 -0872AA684B19CF706474B4F86EE510BEF0164F8504578A9FAE4339270B8C5D81 -496424BE58438D5ECE95BD18973CC66F471E7CA58039ADB2FDEE9329CC788A19 -E852B137500A6F32DEF2742E6C2B182FE2777150BABCF8A2C21FC1FEEC3765EA -8E337F9BDEC3FBD5D4D7857FA703F282EDA0DC7A22E2E44E131DB5D9954B7603 -E2934111D6B57CFA826DB114947DFA87EDCC6CCB33146C2742E7DF664A3BCDA5 -3335EDF6A6C7290939BA0D9937F1D6FA47522D0DCA42AFC7E0EEFDE9B914D5B4 -8039D2C3F063EAAAE10516DDF3DBF97B5F87EE9EA959AC738AB6CDEA63DA8862 -7F7EA32222690E7EDC6F4B3391E834977D476B19D9C14D92420122A733E735A5 -EDED2F02D5A7F3347CB289CA2A440945544A7677C4BD7DA3000FDEA64A4A6E85 -4C1C6C4D16A91AFAB0B84A485CDFC5EDEB03E8E93218694C5426650444AC9972 -98634CB73BF34252A72F838CFABD9F667EB050C113EB222A745B878098AD2C48 -7C6F0817AD96EDA15FB9061832CD91B4270098246BA8D5ADDA339A49DF0292AB -6F7FE225D100F67F3DB412F4D95D464E27AEDB8B76FC8A0930E649E3EE380FC7 -6ECC654D9E901DD295F0A23A3CE88018A2ABA18977775D14695AC02F91E46549 -036939DCE6CFC8BB47CB297D9FF205F900A06DC9F65D2851C66443BE520954B9 -1C98471D8D7746AAFEB2A662A79DB89AC3B2DB327183ED0D4D52CEC819A49BB4 -7E7D4D8B871F85AD43A0441CA8EE86C209F3256BCBF4C4DDF209EFD7E70245FA -E072B99F1F20D4D504AEAB512F477C9B998C466E01238F9E87B3FCC90CE1A90D -4B1A422BA0C0293FD9F58DD4F18ACEA7029B88EB55A2FED83DEAE9F573E9FFCF -05102DC9BD02E9F6D150F3E9D1DFBB8962048508B859CD190DA15732F8D210B1 -7665EED21506DBABBD0E2745D84542555C9FF9ECC3A8043E7EABD1ED5AC7B499 -CEFEDC3164C2C92F5D88C67C6545E9482E70E1DC2C32117ABF99FA7726A43956 -6414DA5B78F70D7A26A8937CB80A705C8048DB26F0CEBD5CCCEA416F19699DF4 -6443C056290A555F50D9BA984B4DA2A19B2BA12E39CAA1EB432E4DD6D2AB907B -3F20B8A3D0FFDFF3258A7AF82A927CD4D54C2F56C1A2DE4C38F1ED186B7F0578 -33B918CB01EE5A839042AB0F740455F1E4DB53A21822CA65333855109335204B -32B6C05D5BE9D260F4AC010996C7CD7C0FD3E5EEA9A66493ABC66E74CD096FED -0175311C18C6F3B577E3C58BFB9A09FEF317B94AC7A1226DD67E2A3A3552CAFC -4314CC03CF0B48320EDF3906F21621B2D7BEE3698299B70EE202F944CE2A903F -6410E7C05A79809B5C875AAEC9A4205DDFC737B3241CD6FBA5327CBF30007B57 -4BFC1497DA3FDD05D8101438ED5BD186D5D8DABEFEA21EB2F25DCB60E2DA4BD3 -6E782FEECF9B0EBCB42E50FF504E8A40C0BE7C6A43DD5BFF2305518944270A32 -34C2D562F9B1A2ACF8C05E3FE0418FDDB10776C8F96B6DA2B554A966C76847D7 -194CF2085C9D9B729CF9DB043259B64A98F96ACDD926E7A27BD6C0A851B0FC76 -26B7C8BAB18706BBBBEEEEAD8B1475B1011A402EFACFA98B097B26A733529730 -FC03A63DB45273DF559D98450186FC0DE013CCAB58E0BF9B23858BC144AF4AAF -584657853F1893F49595536AE79FE8576BFE7320100B1B84E4448B0399C4726F -2783F9DAD23DFD164C8161702A2935C2588CF573F340DFD3DBE1E9B0D813AB8A -C3B13323271662029F9CCD1FB0C45EF425FD4D993A79874B70E579EC97967FC3 -702A9C2F35B4429B48209F97693806A4D959E7831950E43972E39B38FF86AC27 -10822BAC05F1AE05177DB365E1AB065E26FA661FD8207A8FFA1813532E7EC30B -D4E53E9A9ABD40680B88AFAF53FC0571E6AE27BC40A0F76388E5D0229E2E1595 -B503B126B7EEDCC999ECD51714D62F551A0B96EDAF1E79CC134782DB35684CAF -6B740C64F3BD1C89C5AAB48948F52B2FFBC9B1DA9CF690795AB1A3BD7833E4C6 -C0D4086BCD203525410C86C67092B374C9C470E7945A283A16C13CEE9082F647 -3E2DFFFBAB9838FAAAAF0587D48409EB39FC15E666249FFE4A7F800FAE1F4283 -BFB8D88E617E66DB9EB13EA2D41D0BF78158FEB44337804CCB239322ADC61B91 -9419AEC7F3F21374969D91EF2B1A4B13E8588B4987D5C7969C53D292E11C2570 -7B0F5B31E54EA40288EEB3DCA236D122C5D18E8805091C8B443E7DA62C87BD16 -CB4701563393DD13E0C0E7D18B1B37A39837FE150D1A7EDFD2143C33B0EC4428 -2B80952D456CE5183432181468099E9C0B3445AFB24DE79A664BDA3F16B1EE4D -D1DA546437D8569BD9EA0B561A0E7742A4055B8F921F02CE9A8DBB5442A9997D -85626AC2847CBCC69FEE0FE0C50CD0063856A60581C78A9C06347A0F2DC39496 -81AD75A6B5E26D74EE09EE581063774F1831C26DDAF910BCAEC550975C0A7AEA -F9954F1881DB9C496D2197ACAE6A8069ABC257C846BDEEB1D15943FC436B2DEB -11A1D0982DBE0CFCBAB99F52FE5089AAF2D8E16D43D6D1023D4ED077B8C95BCD -09C050584B5F1E65473083CD46C10294187FC277D8F655CE5586D6CBD8C2C145 -1F8DC42A4FBF99379C8FB8D8B5BF501BA6C77C4F7983C3F7F7AD4BB5CEB681D7 -A66EF51E3D222DD88437C16EA4CFD8B31C0644E36F0C968C76A7F2FF3C0462E9 -9497A8D6000A16BCD597E3000E9F85E10F0032708DA7B50FCC53D89BEDFDC56B -7923D6130CF9DB95EF5CB83D01C07EE9B4A5EC5FEC0174DCAA262951747B6669 -D56F651E980237B5C7C558DC0807C3946DC1AA63F0630D5EFB998EDBEAED3900 -5FE4DE1A2AF923B42114D546F936387326B04626B0CD44A0DBFB8B083ED63200 -63AAA6B24E828A62F0E8CC307D1EFB42E738357138AFB63E60752E1ABE891828 -B55B19DC32FFFDA3C41DF9F05DF9239AAAB9F196BA68A763082440804C7B3AB8 -FABCD82C9F552F1AF2CFBFFA1585389CE5A2A5E984CE02F92A91869A5ED0E039 -5B3F9D7E1FC7A070FCC41F92031F5107470AA90D7B535221A748597CC188DFA7 -DA68616806D95752FB176FA137E23517467EAFCAD8FDE4E3733D64E6D9758DAD -6217A2A3C08DA70DC64383B56260575183A08772A7B5657501ACDE1118C5BF44 -9CEEA3D86F0FD2B43EFA5B8F1F58F99168683B393A3F9E84EDAF1D4E92398812 -1A0D12AE549B3557D0150CD0ADC04DA4C5B2D40E7C64C36A26896D6B8401B48F -779C3FB593C2A9A983B533A7C99C9E43BAFA1FC9AF5E65516D2DA32924D352E3 -8371D19559A6FF8C311332C473BE41E55113C711C6AEEFAC9AE3A7CF0011F531 -61C693860994A44793336AA158634D9D756B0F98FC5D3E6826C71F2A1C4E1175 -EFD1047D682263F253E64B0E6119C09CD02016FFE5D7D950C26829B6F41B8798 -37A467DBC484991D9B523BA441E405C395E5187B6264D74FE2E3E82910BE26E1 -5EAC9874C77B5EE2D354270ED47A774CA5674E18F25F4BE6755B7430DD7F39DA -F96CB74DE9C91B00DCAB75876D4586721AAB696EE3290D9F05F39A01695B07E1 -7DBDBD379B9225C291549E5D3C4A3D95B1ED277AF176890E32B2DA66A4DEB9E3 -1DA246BC679C12E6E2ACA3404A185C10F21721E71D84601302776E36F444ECBD -BDE861941397E6ECCAC4EBE71CC0005266E40AF949FC001CE132B71789E0F037 -FF3B56690BA309F623DEA80351B1E5800D809790EE7C96DE82F264BBE9AEA406 -577009EB689F8F9EC15641629C107D8986323703567B547110A99DAF7F16C623 -4F3029BC7E504B4C37B646F9C49CDDCF2DAAADB748686BD9F6D0B2EDAB2051F4 -DA20EB487266D9C55F9F5767EA899C0BCED7720BAE6362A7AD81F5D45F6A709D -3A27E50491A46CE17E585FBF9EFC2A27FFB50F00E4B05138C7D4F45A40B39E7C -2ABB5DC0DDEE77E4BDA3901A67BB93C52241384FCE35EC11F67D6C8677C9F889 -F0FC365893A10E11CEE5CA0155064D8D2E98699961D9B26BE86D4B9A5E2786C1 -3CF260A03857687EA6FBC83DEEF840ABCE7ADBDC897CE6B06F6DE55BF3B8AB6D -777293FEFC61C6DAD78894C873E162A5510A036FFFD9A10977CD627AC3EA4715 -F25A263E6331EEB9BE68DF97C946840841EF83204D9D313202C4ACA7BAF94050 -3B420EBBE797566277CFD3A7FA1AC6CF81FC24E6F336913F4A183B93BEB308A8 -4AE0CEE98B45B2C2683CC06374113AC12F79F98BD19D67F78E2EA586B518FCC1 -4C8B5ED575DD4631BCEAADABE1E9742A364C0D149AF83FD9AEB49EE0E12B08E2 -C4FC73A08F572AA40B58B5B44151974DAFB1FAA29B4D74038519590ABC83B0A8 -A22BD5BD843FB4310EB1E6552B45A5C64F2046DC330559996E77FEF47B4F2062 -3DA41A9E030757F4957BE97725F1DB6FBD15F144F5EFE357FB74BF758AC56A58 -F0F76D03C776F4CB58D7F549F11374DB4E2DF6A8DCF76F0EB394EB110A0477BC -65CEDE077AE2D013A8E46CC2E4F0BBBDE546801E24FD5B9A6A4935F4799DD803 -13FAB011EDBD4431C31C86C4D26C0E729A067C2DEC602A5D884F43BD62EBF59C -F552152162E45D18414D77DB32069C5B3EA64F465D6516335F3D243235FA3524 -E88FA64170BAE32117A35A9C7629DB90066A13160727FCC45C0BC95145AD8913 -075D28ACA02AFBD18B1A659C1DC229D0A6196A308DF639A002EC3A2962B4DCF1 -E9766188B7FA2448F7E3851F896CCE35E5D8644BB33D6F7AA17B3D2E03E2BAC7 -98B122F7370B1322D0A0CA0213CD918EC84EA6FA5BD45EA3B0E1C8EC168D6AA9 -6F6D664531CC8960DB40327B224F12C487FDC6A1E7211D90612B36E02FB7BE85 -36480D2293549DCFD64BEA4DAF4E1281E4FBD4C006C5200BB489246A7EE375B2 -A10826BF9CB311EE708421044375DB5F2165E4E07601BF25A1BD569C31A44CE6 -7E92A0E99939283BD2205B28808FE42C97DDD2C5B6ECD0ABFC114A3244B06213 -21399570C91AD742C71818F58AEF56EC10F0ACC62A20B1F4B9EB01571548218A -CA7D6F9AD9B97D5D03883B8E1194C5BCAA032BBDA9E71572C157D65AEFE2EAF6 -492E40826F692D743DDC26120F0AA543E72E5BB697EE138CABC3295CB819C08B -91F4CC16F5D3FEB1E839682CE56588BFFD94869EF54E061340B5E72257C4901D -BF10C71313A1B9CBC7F7B01C746E9E26E670CC7EC077ECE404425EADC54BCC2A -5854CEDD7563502EC2FE222F66BA55070448D829E3ABBCD360036C0B615E36DA -25911D22FEB2BF2C7D948AD56BF70822D30E4A4B1DEDCD6B531D195D6C7BBE0B -201EC0D8B0D68CA66A79C6968BE0879183BC145413A31466957A467B898778AE -DB9D8A1DE94A5D3FD3DCDA47E121F82F84BEA873A053AA9FAC7D9433C14BBDAB -FDDF6B0A4C73259C8CD62527511025A0B09F14B9CBC0F61A2231A002F8A6B63F -4BB27CC0E6B9CEBDB49561C8BFC5CFEABD91C3BFBA8BF3C0850668A6C55414FD -E3C4D537DE8DEB01A71592FC464ED5C8F43161AFA5020345C1624580F54DFED8 -00F8BD0C0BD0D33D3EAAD0896415FB3F11B6B79FA68DAA3A7C4CED48F322292C -F56F1D21FB55A1ED75AC0CE49334CC8476E08E2A7C3A44F09CB8F78ECA27C5FC -8DE7AFDA8EA8CD255CB0A72130797AC2EF0F0EF4BB9EA369CD72C068EDD01480 -8D8D0B6292FEA04E936758B4852F58FCADD8F9577D77CDCC7DCD3C9F0FF70EAE -E676F83CFC7E5124D4A3DC3A081A5AA9AE33A2B13B416E5E032719A388955CFC -2A9BF6F6D8CAF1D17A86E0041ECF792C4AA3D7CC7A962632D7B4C922BD792BE8 -14C684F6ED9948D2E4291036E2C8A413968B23287A0420D9E141952401E4D1D4 -1CDFFBEB8A5FAEDF20F77FC0BCBFBC94AE4CE330E93EF85E70449F662A4C9C93 -415406EA2619735DDFD879E27F9F90A0950B5508F333C7137DB094F9C3E2A648 -AC37B7849B07DCA55D5FF6FB36481FC33D7568469542DECE246F3D48C812BD27 -4910E2B22CADC88C4137A9EE44CAC9ABE9BAD8C73B3C6FCE1D91C6D4AAC76057 -076A88787D0025778E825B17D74D11C8FFEDFFDABB17E2825EC0FB52BDC32F05 -78E1C412CAB1C4D808C5B49D121E5B63914EE3766C2DDB8093EF9DD5269642CD -E5EE962EE1636E905E62D4D538B595849D14E9EDC126029E2130FC68F1A9EBF2 -F48AC67C7125770DB92090A1E41BC52F6EE7AABD4750767E392C6BA0D751FE90 -AD495954AC54FC1FF8A10F1554DC479404264922F0364071118A9FD48B261653 -65B441634D4CACBC1BCCBD456F9C581EE3437C57039DD63E073E0D2167501081 -485856B43837F64A06A9FB01716D2A175F87E084957416CA9AF22F5B203BFC99 -AAE8C49988502160C91B026E2CD029A8F4B22328FAE0D7D31B11523FC275E7D6 -7DD48755D43734110A4EFFC4423545022E59FE75186D4A7164377C6454F8AA41 -23D5B97851E6FC0921AB5DA9B5F8B2C5835C2B6BCD8A0D02A020D7CCA97FE4C2 -E6DD5823BB7E113D31A8DD39E0BD931C56FB6DD818404B7B65B6056FF4D9754B -5F70C9A2C6FF8AF493C037DCFEF55E8952E50E2617D9A49C9E7AC63F944C9517 -62A46F6BB0964E04C361A567B8ACBF9CFC369A7080A009EE679C25613953BEDB -F96973E3A1DD1497C6E376E1029F3FE570E42F977C36C94F5FD338F243C66D22 -F2AF9FAFBB04047A789EC6043C2EB96C21450B11D25A59EDE8825F10AFB2ED99 -55FB7FC704D7B19B43329EE34919221EBB323A3F7AA7EFA10AB170F84BA486A5 -B14A49211F5D83510E318CA55344C80749364D0C523C8B65DE96C6CD673C3D79 -47F428C0C783810BB54CDDC6A4409CC57C9B627E4AF6B44EE83E516AF8FC51DA -370D4FB0A41B35E868862A183B20114A8D8B577A4E1C274E4CD44875403AB236 -9AA6BBAAC8165DE9EF789151A96E8EADF67AC76E073F9E6BFECCA0BF75A4EDD6 -17D553C3AABCB5C5764405AD3C94D8A54517313C35624CAF96E813947DD0B1E3 -6B76D7F2D089940304D378255DACF0F0CEE0446C7158BCBA554B3B105B3A80E4 -DFDD9A41DA6D6BC69A6BAE21C37C4B25FD255DAB45BA1D5512FAB359C6459E1C -665A7BF9E073977A0918339C1F8AC3C30D4D74EC97C66DADC47C9012C3781609 -F850CD086B04A1DDD9AA28AED8122A02C24823234FD31F396A192D221E3D378C -E44B2200B24CEBD1682E9C26D45A9323A37E48EFF65424B85846D64D563A2AD9 -E63292B1485F5ABAE4ADBF54EA065C5048441FF0A0CBB10D480936D364CC5654 -BFFECF0C2A38489557A84C5667C5DCAD5A4E3B85F3AC770D81103ABC1965F3F5 -C9C887FB3D7FEBECF64315D2EC133B7469263ED10BFB9B4950E3AED113DC74EB -9F381FAD3560B5BFA876AFB34E9BFEE12949063943EEA5F65A4AF4749B0E15E7 -010CAA9C7C6CA9EC2E33D2569D7F62B1FB528C5B5BE1CC6BCF217FA4E1006A0C -ABE037E82F10FA4734FCF14FB4E03FC40CB23CB5F0A0E9654B10A54A131ABD54 -F610C986E1D94AB28BED44BB9ECCE0AE22EE9380B07B01E785A5292EAF8FFD39 -622A7A8EAB9236422239A0BA57ED81D4E2072A299A8D7CB76848606C90B9C06C -4E5E54E967A77E2EC1E3694370311320FBBA2B2B9379F3021D5A99EF9A7C419C -2AADE194C437EDB906B2205F0A412103DC40FBF93579E699A67BDA18858C35A3 -72F73E90D030C6456B59C339069F144783EFCFAB14E7159A8ECB9B0C80999B5B -32E6F3D330DA167BA5DC3558012C0A32521904EA86E0503773D1DC35D512E77F -E96C604769A529E4F66CF17B3612A687BEFA09347A37A4B595FCBD63187138C5 -FAE7BA4EFD0F605652D6658D699049DD525D682721775FEE095C45F52E0193B2 -F5DFF39F9F1CED442CE7D351FE3DBEF0019F65343EEBCFC149CC82030D45DB3E -9FB5F426A5DCCCAF9AB592D7A5A793F99E259E3220A58F9C901E103D7CD721C7 -8333F4519F3926D9056ECDB3E84C6870447ABC0A2BF1A32A5CEEEB042C7553B7 -90A130CE5EE0289EDBBAC28B8F11D3481815AC6EAC746F45F7D72A262448DDFC -F1F4B5206D5C331AD195E7BA74036C74C5B84576603E380AEC07062FE1063C59 -3942E6D9F19C93F90B1DFA3EE57E4D5D527995EFA611D32EE1E483B81056D3B9 -30F1D2DF8AD13A88431539774BA5B148E4EFBB9F2113C54E2831ABD036663D0B -6B75B19BB681CEA9C64DF48805EB4AE8D8CF7D102BFABD9D99BA8574FB1000A2 -586F547090315593FC6F3B2775770DBB7882425AC88A106B9B04832A215FD0F8 -874F46559EE9834EEE8CF349C7A2720E27E52C56DFAA696EB697B5C0D105DCF2 -CCA41D62200CEAA609E9412A57E84C43AD67D30CC5AE207552B3A5173A90E50D -9C7B16886BF6C07B49451530665C8684A9684D17FC0D6434DB503BD770FCFBC8 -06B8AF060E05C9111375699E6D898C00BFC9AE0DE977F13A23763CC5814A1ECB -9CA65D863E26885FE22EBFC256918090E0D8EB3267B8DDD9F03F1469E97A0DE6 -9A6A296137DBE9E3BA094A4372AA30EE525BA638DB2DE2BC600175CD87B3421C -2B60FF41FB2D3CCBEB7C1D12D7A618C2781155DE1407F5F5 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 18 /grave put -dup 19 /acute put -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 72 /H put -dup 73 /I put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 83 /S put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 121 /y put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 -B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 -AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 -7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF -20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 -B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D -68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 -D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E -26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D -F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 -77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 -BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E -C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 -30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 -148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C -E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7B00AD58FAF645 -1297991B5D01701E82228D0313FC7C66B263BC79ACDDF9AAC48A3CBF42B96E38 -583E1D059953076D68148DC8B6C9527B3A74CE7DEF788A11531F44120BDF0F61 -0B2F3ED94EEBCDE4ACD23834C242AA4314B9EF98E4BE72DB76EBDD0A028CEA9D -B4C38C1F2D24B8FDE686832FE96204552C820E45B6BAF0C3308742AE2E064C03 -13C2E5064E4FB036548B136509EAD0CE1430E8DEB4A519BA4D453CF1A9D08C0A -1370543107E6ACFD6B0EA546D6AE20957BBBD632AEA43F0D35195DD85E1FE38D -9232D3F01B25A601E60C7C08210899521C600251D5A7DE2EC34DEB235CF6D122 -C41907F1D0A9B6E6AA98A95BA8A978B7D3F0275FA21137935B1BA53E81AF302E -909F22939F91C57C2348E8E085DF39BFC1EA7921A5EFCE7C6ED845006548ABAC -3B1C34CEFF31F0CA695352CF3B5E0972F82341178F42A34B85D8F66DFE822759 -EC1CA1BF94BEC645BC4D21B32EB2ED15D19EE2856D554D227313294DB0B2D9A8 -C76A7C0D9591F95741D80B45E803788990332DC2353166D899AB085729208770 -74483B0FA3C2C60B3423B162044839B6FAB217AC35C6387DAECDFBF8A8A737FE -185F2FB4C1541B89B9FF8B93E6CEF5BB0F9B9952AACE0ED10928DE45435C4B4E -E447F1AD61592F900C77FB7C72E64A28403AAE2F4520310EEC70C446537DFDEA -DF4359CA2CE513D87589CC631973179DD6E1AE23E53921FD1A841A90D38F47DC -30F66556F7BF1E05CE14DED5C7089DA72C40B4C44FAB4605F96FD152371B93BB -49C5AC1285CECD661945459A5EB53015D07E10BA67911019F8C84A8823A7F4DC -A995D8B1E661483BF883F7463BD941D5FD7C350291CF305C9B2CC35131C324D8 -CAA9C155DFBC1150D23EA3AFFACA3FAC5D71CC3F076836DF36FA334FD94D06F5 -4AABC54D16F3AA97F6A164A3CEE5F8028F740300097018E3462AB81577E2497F -3BDDD1A974FE984B721DE8C6FB5D2831876A1C8E1AD143451765E99EAEE82DD9 -67B5489546BA5CEB4CEE8171F3964A746699FA3054F85511B71AFCFB8A6A143A -A9F126C167EB2C93D0CA1A648DAE70979CFF590AE1417400B66E1FEAF388613F -9451F520BBBFEEC6E50BBBA0177FD5430AB47BE66761F490537C03FF333C7821 -61AD6FCC384F6A5F4F07B2B1DA50B3EF8FEB9A0C73FBA743BE8695F0331F361F -F43A511C8FEB2274FF1AB3713A60DED4EB43A25435F5519000D68C78FB844EDF -952ED6152D650A91A64F870374834119B28233715E228D2E9EFDD1571DEEC597 -8795250D17E2796A3013E9E1BBB5ECFE2CE29F387C860B87DD499BCD15666004 -FD6008BC8D1A8D3F84B2D5F1AF0A1EA4D05385F36AF908DD66227BEF7BFF6BE3 -FAC8FC06C52CC3DDD060A4CEE689E2CB3E47D6C0575B6F3C73EBE28E98191F73 -8C8ADF27453B58DC94CD68437FF99F02A78B6A277304AC26AA9DC21511F7CBC1 -6A6DB6759FA5CFF28F7B1C3569C8284FF42C63C5CF0155AE7F42199E5A3715EA -BF65A939F173618C61AAEE1C35C4EC4BC15B29EB6A3799A2EC26E4B9D4A24C99 -0531D99928636146EEC0475A746D7079EEF6EA939ADC9AAC19C28116D2BC80ED -7E2F58792DA34AC8E65083ADA7D70F4D019C1769ED665A42305FD10CD718A27E -6679D78234729B44D86FBAAABB4F4E5A13189962B37D602AB9DBAC45621B3F6C -E6CFB15861F3BCA2F089D635C3040B582C0D5D25C361F7841DF3904B5BDFB23D -E0FEC3D7B55C5FF5CF4E90EE20744CA89D5A8B837F61DC175585F452BCC96A0D -FAD5B210F6C783C6F986B1B8273DCA5AA059251C37E68A3450DCE010B9348CCE -916F08B2FF702B996A7B965756A23EEBB57BF02F6D8784186A1009C6FAF71E59 -64F282E70158CD4C9AF483FAC971B3981B3C7CB27F6DD5444D7D451CF8617FC5 -2C3770567A2913E7362BC1B09B1CD05D47D31173195D01BCDB6D2FE2322F8A66 -E54B6C93DE29D1EE67341F40C0EBF6DAC95E0B626A0708B31FF688B35EAFCE3C -6FDF759FDEEC357DDF44028217547D0271C587B373462AD9069BF54117A17405 -A6B495B9C406B64F6652B7E0E40EB9526DFD4CF86DF6C294439A0F1F7EEFE9DF -352ED2FC1DBD2280A18BA536AE3091E02192801AF43EB47C1941C4B0609DE405 -163A8840C553CCBD5198EFC7843119AF94C14B24946DC1C0132B33A02D24CB61 -07FC4F69BB1EC6A1EF2C95FAF2BC3FFE6328F7DD5001257181D5692B7A342B60 -733C6AD92B7176EF777EDFBB0116DDB11D6314D92DF13611E2904DE148F8A1B2 -D85D274A7B0100BA1A2F1D18CA404F0268DED666AB2BBA006560209C1593E563 -1EBF2A9A26B2810804806AEDF9CA1C16E468DEA1AADC36BD103B004EB1BA1F8E -95DCACFAC47162CF34219106CC03D4D36ED72C85AD91971AA16B55F60CE62A37 -320CC49BE3D563BD479994EE19D79EEC05678D93181F4BCA9D5FAD21DDE1F9DB -AF0329CEED9E6C52DB5B43BBF32D54A8D517CBE7C531C3B7193D5C002B14E8D1 -9663E6ECD455F8F1F3A6EDD072ACA0B3AFD9EB7AD8BBBBDCB92BBBC9FA180941 -0C09795F34B71A0851B3063B5F1520D89EF0C4C8B19DD6B4C84D13AB03D65633 -28B6F1129D38D2F0751591ED06311D473B859DB02A515F431979E2FF958861E3 -22C40B1C707761E6C0DE45311C0EB08C39FD68D07F8D484FF6EEA6FCF937B713 -927AB4DF31A781184F1A05672452CAF150D26D6267369A4F704AA369D6ED09AA -B0D816A6B8DD82DF713EC1018029873D980DDD4908A943C8BFF6317E05B21DF1 -1967F084B0E38B58B03FF81FBB9918BEBC8BBD6090123216D9EC57FCC13D0848 -08F6F13155012058161FBE407900624CA6A52E4DABD28D10DA950A9F7BF9D3E1 -8DC09F3C2809B037154AAB286036D3496F3A0E09804ABDB0ECC63EB1E8C6CC47 -AB0750EAB7DD4FDB835C13754C5FE781FE2E80A0E59D439A0EB124AF87E12A60 -C761BE135F2AA7700EEC3ACA40CD473EF2C29CFD4FAC16BB8C33AD44821BE014 -0B3DAC12B8D652177DA038C0807D2FB91F7C200FCEAD90C54A6BAF411A3F0D03 -FDDE2CE9CF3FA21B738C217C159DFA68DA642FEE62F81BF4BD6669CD19C64E1C -A9762DBC3CE34CB63F927B1B97487D91A4734FE956A25FF52E890649681094EA -33B65342017CA48001BCFB6553E76BF33D486C2F1AC58385E34F5F9CD17CBBA9 -18DCF8A07CE105E3C8E2F68CAD80973CEB6DD6A3FF621A0C497DD4DF5196088E -733440AC2225592C85419F50B8D9EFBF003CAA40B351ABCC8FDA09C672EBC90D -5454021DE4E83F88117E12B84F944EE30AF7188428621B9271731346928DD626 -A270543570ECC7381DDB6F141272A319024773908C7ADD9A6A150A419EC46907 -6B9A698E94EC5FBFC60AF0C05F680C9B31A148136496DAE7E06A8D41AE456D48 -2C9A892F0A84D6F5181F097ACE07A931C95003A88774CF0C75E57F3CC7A734E3 -D1D8E68218BB49ECB1228F36C54240F77F68BE47651D92FB90854F7C2B0BC424 -301DCBDABB1C1FF1087A123C085291CFDBE744BB6B9E4F8A820777639487502F -CE9777BE51B8744B00BDD43C323848D0EDADFE493FA998B9C64B9A386FA56361 -D29C95CF34F98A7B5C5D5EE6677147E2A6065636D4614582EBE08B549C3E7011 -8302A5C55F198F793FEB51260A86FCAEBB4A6F12053A64E91FB8FE2127335043 -F56BC57BD9B7A218ECBC579694F22E154CB708806AC19D8A352F2032F924327C -E6E85466E9DDE0BA73A253F08CA279D247BE984CAD4F99AC5115E803A5F9A65D -C978FA3746431F7DE3E7603489A44A582AD05A715AABB7E2F510B7554E487E2F -039F4757BB77AD428C8541D11AE29287344C04B9382C41CE0E848BEE3557AC54 -05150D36FD87986612C5C7C563124004EA1AD708708FDE5DCAF3E196D6CF668B -6E97DD480EE5516C7537760D8D63DF777276E73F2703040CE8FCF7AC2946E929 -2F1F8FE8C6423C49CA41B0476ECA2FA84C7CE4B7CD68B4E232FE98DCC13A9749 -5CE172E850958BBEC4B9571950C359EA9BFF6D45E6158F8AC04829E87D485319 -02A6E7F7A25BE0A9C9FE1AD207AD692269B85343AE3A4356B5A3489683573FB2 -C3A09BE61A6922A8525C30B098F5C1A6A6828B7DF472A651DDC28F2CE8418BF5 -FC6EA6EEE84D345ABB8299A1621B19A457847BEE09FC71D9BE3013D8651F4CD7 -39486C39D7B050BAF21A3F7079190885EBF54CC0C60069458115BDF081E18C25 -D9B7267530E5F6D6EB77C81140B5A824BF1B5DFE96521106F3219205A6A446BE -D03B70C432FF3F25D6C8958989AD94F14FC06880D039EE0BFAB7EF746C48D448 -C7FDC91826DBA6A3756F12B9F7BE5AFAF2541CCC069402766D6D331014119053 -73E4FF09272389AAA61E9E99E2694B09BABB59E0D5A4F8F71B870A1AC9D8BA3B -170EB81339F3B3EC3C5133AB34B13695F42065E55DF4EDD8312F78A44D088342 -E31A30C6E4719931EBA51F917F60ED594F0F590D4BF6C99A74B0CDD3947C7176 -326FF92DE1351CBB50B88FE3194DB20ABC366AD79480259FB7F6AB11CDA44C5A -3FBD301396CE1A2C030843D69A9D32A1A008B3B66AE82941E620A9E7B962C7EF -59E5B3CEA2618E69D265CA5716C0770C081590CFFC044FCF02D37B592FB7F0CF -3A70884DA16D0DFA619908C729184959F84522BA144543350C44E5673CDC23DF -3D2704CE4ED07C1E5D810E0B18861A7ABA52634597EBB9492C9C9889F642B835 -9D4789E637CD54B9F91811CF3496B3457368EEE9A9A6DE2008576A1F935F63DC -2AF34F2859BA1239814B4687E454F4134833EA638EA5A20996991541EDEF8753 -A7EDA763C56C4FD440F3D54B9F57E2CDA2999646BCF2CE002E9DB075F5B45081 -E698CF67A55690310A70F49DDD8A0F0944A48F16AB60C990C346EF863C84441A -347DC73FBF7F46EB6D6C047B222033E2C47A5105203D702EBC91A344D0FC67A3 -E33EED60E68E8ACE6700F33167F971473B5302C529248F4F9A9AD263AAF1DF32 -38C21AAED0DF94B087128237BD41AB40F3662B541932A2E9E851B2262A6CF354 -4DB8993F250FE4533FC2C8D52CD66CEE480D2136F2F1D6E98E0A85597F84418A -3748365A6AF37CBC624166F801379AC1C8543E3E741239EA92D4539BC5B31F03 -0BA0887FE98E8116D143C6C17A83B834FBB55E881AAAE75EB3C3C2DDB2D5DB7E -7AB1C00F8FF392EB7E676B64B9EEFA774F6AF239FF876BE158906764A5AF6480 -B0DF4C5553F8FF1AE094E8C5CB48476EE34B1D3CD20D7F502BC49E03C4FAD6C2 -D4F79A61DA5340F401707AD0005CA2A0022D2AA21F651E9B9EABC388D553A23B -D7CC2E8F192668C93A134D3EB8686F297290C51C56F192AEB20CBA4B6A05E51B -74FE6DEF2E6308F2E8CFD0C38B01D362362205824535E826E154DC0D7B6F4ED5 -7FE86772AC3A8B6C69E2D7155F972EE2FD49580EB15337301E04694E34C2A63B -1C3E3F108B90C7728978E159D5B215E5C0F48EFF93A57BCCFA02737085CA2467 -849195BEC7831A4813EA85E69E6FE5B2D6955876560182899AB2131BBA579D0F -5A82372E80CADCB4760CA9806A6502DE1726EA06E8D2637499215BCA41A4CBE2 -6957947C43991A4F96026B3D3AC9D7DA0F62E8E7CFB78F3755CD7251E45FD8C2 -DC940C5567A0BBAA40720933E02096CFF49A78096EC19EC8A871C119039B5690 -8028E8DA9683BF7DE0CE57DD65DCDA5AA5F4CEEC77A41EB5E58B44A23B54035B -FD9CBCB225A01FA468FAC2BC73211D8BA007D4B503C4F9162656E8302396D3D0 -E4A8102DA684FB5987A8D757539ADC071989A25FB66401FA47034C44581DFF55 -4D3DB44CC54B1284491DBD523520ED0E9D0F6D21FAD634A588BDAB15E8B62C34 -36010545D8732BB30511CEA387ABD636516732CAD9B8F5AB971F489FA9501A04 -482E9A241E1F1922093C7001DDB2EFD42A5AA2826DFCE05830EDD3E7BD069885 -53E46E4F9F6EC01AB0A20BBFE033CC8105E6558D4996F13894E3999C25AEBF26 -0A47BCE971583673197E22F249BF7B3EADE4EDDECB5A8ECB86F50D47F78A8592 -9F2C43682A03170D47B91584D0800AADBE346C3D08CCE6FF70ABCE7D646FC56C -28B95711560A3F4B3803C18C315CBDA5BD44D69F8973F6D6A4F27C174DACAAC7 -BEFE1E513B08116AA34D0C167F2DBC897066A2113241DE5FE997548CE28B7216 -2C6B9896642EAE972A72829FBFF750B6DAF34547BA8A54412C7C53E50EFA2E78 -1C072AAF6B7FDFC2FD19BF07959962C8D09A463B762554843A34EACC39B6E021 -9F5B586B9395074DF8572FEFE494AF7933E125011B9D4265F521D0AA2D37F7A6 -AB040E4C00B86DAD62FA6929320A07D4ABA5691E094680A22E2156337C62E15E -121BFCAF14427AF48D8CB538436C833CCF2635393E5D2C8CD666D2F188231D93 -F75682D8FF364381AF8CEB55476FAD7D14A1B3A86921A5A850012BBA93218464 -B44A46E74D32EC3ED17B1BE5F41D74E614B41D50E6A8F08D4926823B0C889363 -2BE97270358E195A3E1AE699C7A797B850DACB10AC57BFB41D882298AAAAD47B -BC676BBF662C072E08C34A9A0344ACD6C36EF6367091DB6E4134201A0D0A7C0A -7117C901573DD3B4BC619D81CF149FDD408E98E5FA17AC582CE6495EFB58E929 -6B38BA324A22ADD8F039901126DA7C567DCE65530F29379FDE5DAB90B7AF8EAA -93D2CD1D6B93D8036305FA2A27B34EE19694190FB26C4F0466B705BB6CFDC04A -58649C536AA431B4D3BE8708C632362B41F8328F465C79EB988C2487FB850B23 -B6CB90FA4AC671378123F1310A3CB8A744F0C52ABB552C29C5EBC855147D6648 -11F7E33DD8D16A0297DD44AA096CB4AF525C159799FA63A6DFCA438217F4AF62 -4C0FAA45A57E4B64186419F0CE002BA8AC5C92920B78213B159BFC9E884D6C8F -C86A77F1E8041E90D196EA521B6BEAF9F5B24B407E08FAC327EC2BF29C6D553A -1909847CE6F3B5CE06CEE18D8D5C067DECE9539BB0F4E31429F2E022505DFB8A -54443690523A0D3501F699529EFC9C7E24BF7A4438D11CF94174EC0973BAC945 -32E3E36F6EE62078A54CD1D170BD414900BB960ABC4AEDD0F7F59F7BFB1685FE -A8ECCC7C37E078B8BC539B7E936325A14A0EFABFAA5EEF0D45C7FF71B05DC281 -09089CE64CC30754345B006924CA02A837BA1CDBFA960009787D42D1E41BCFB3 -CCEBA95672396D78EC51042E0C4625F6598633F600F261A80235BEB56C58A3EB -ED205E020B4EA27E94D2A9F8B285858640437FD59ECA9702356554B4AE732682 -5CC791971D3022D6603F1B74130D445B5F3E5506E4A43F32F53AD8CB8B804443 -87417A6AC7BB699DDE7A7A1DFA2718C9E15846F0B2F93E0167E6FAD982A27B7A -321775ECAC4F754CA1B31B301BC04B9B6ADBC8BEE1B6E9A6E9E8A757409D383B -16DE94701AA9FB5ABA8F4AAF2E837264C03C404A82C7325EBD039F84BC1D26B1 -B8CE48355D8CB477C3258967584B6F96874145650C67A02CDC9B8E6A650CF202 -BFEA60F42AB20CD4D5186E538496CB286A5B1214C6091D9F3578793B2E92C70E -5A8AEE69B0E231B4DB103B55A09E9EB23CDB972FC4523CC2E308D5414A41D7AA -D474204A26058BA8EE73EB67BC853B9054F281E6502C0C7974D2B2B62FCE2783 -AC2333F9F368978F6A176226B8DFC549E39408BCDA00546B8C722A872A055485 -B15A54C4B85DD07CB35B73A2C0E737B5B2A1FF3552E6343155EDBC8A99BE7E68 -F7F1D6D7C6ABAD3362058555D65C4297B5C3A413E2E0CBF52C7AD06D2D09F7EB -3F168C29D302A80C12733DE283EEC15C1627EDC01E27919E5AE0DD8F3B1BE62A -6F5D87B84E9FDD5E9FB8CBB4F11EEF7AF43D9FC2BAC32E036692586E597B27D4 -D185FBD9FEA7D046B74AFB4196CF5076780651A505A0B919104CDAE6A1EC9C85 -92BA6F1446FFABC3D296A9DB02827E29B4C92F334DB756EE76360EB21AF99FCB -A20A4BBDA16D64E16C5169936ADDB2FBADE60B77A2CAF1BEC80B1AABC9955128 -EA4BB285DD06F40ED0D0AA7E78C4939556395ACB463057BFCAEE217F45BEA317 -09568F6AB7745F4843FF77667960C9FB70C93ED996E32863C21AD727953749A8 -CFE1E148260E000C4BD9CFFC417C564DBFFFF052842D55FCA7D7583F26154F68 -608FE787F89AD663E9BC56B2D99F822DA2D7159D9D2EAEB104AD3632EB9372D5 -7B5B52EE3456C394D713CE8576CF00CBFD5CD6E36FCC2D4CAEF4FFA2327786EA -A52DEFF2282F0910D3DCB80564B33BE82A9CDCF7830F3FCD26DA16434E875B2D -EBBA68588F1FB3051DF91E2A472B22435F9485E47970F530C09D6F80834EC05F -919B2BC0AC81354A9714D4E0D86B98C788673E66CF8FDE6E71DB02E84992BBF0 -015B844D82089A445BE246CBC4F594DCCCD9A061F06DF82D6032B6766C3CA618 -737A4B2B77E02B6676EC1FAE5B581EC6041B203EB29E5C283714FAB41CAB5FB2 -F7EE493F5C340E3F9DD75D55206C380E29AEA710700220570409411E26AFEE04 -5AEAF8C66DE51744E4F0E68756813B1D83C784D8C75B66EDA5496C344DBD8458 -CE4C3A4BF330C67D3E07A40610917D7033A9D4A95EE0CBF09D9A7BF34B766886 -2A8AFEC912FB362355DCCC05FE08EB6C777C52714B5E762CAED332D44CBD2398 -CE9501E630E08692B0F80E10A7B9C6210C94DA7D37244823C08D954DEB16922A -076AB888FBBE54D762AF975A1ADC5BA78AB6403621C368A37E1C3607978BFD0B -C758ED01EBCB6B64CDC7044981DC7868C9B784A94A6CC8B046A79712773CCE41 -361785FCD1834E16D4FDBC7B2107C298C988C8540398740631EC15CDFA8BFB07 -1013096885A529 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: LASY10 -%!PS-AdobeFont-1.1: LASY10 1.001 -%%CreationDate: 1992 Oct 23 20:19:17 -%%RevisionDate: 2001 Jun 05 20:19:17 -% Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.001) readonly def -/Notice (Copyright (C) 1997, 2001 American Mathematical Society. All Rights Reserved) readonly def -/FullName (LASY10) readonly def -/FamilyName (LaTeX) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /LASY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 40 /a40 put -dup 41 /a41 put -readonly def -/FontBBox{-19 -192 944 683}readonly def -currentdict end -currentfile eexec -D9D66F637A9E5292A4933615152D29EEC26E1BED2E48CAB7AC058698EA30B07E -F8BDB66981B14445E1107420FDAF32EDBD5C26E35B334E3AF24373B2A13984D9 -1D56801ACCF98612DE2C19685E0F4D52369AD642D169AB57DAB10665C6C01538 -4E7DF30628B47D6551F93A50553E592B5E1540B411A313F39E4149341C981D3C -705F8AD7782F59531404B3C001D8B882E0C5468D00B26040A352ED823D7C8DF4 -B632A37A034C6304A39F28739AC3D634CDC707B53474E63135975E7F0FFF2458 -99878B3A6D8D7AC6F2A2728768B8C2226075299B8CB08B76AED9A00BF448A646 -87014E8B1C1723204BCBB97BF0F735E436F1805B4026CA792A2464E1FDFC4385 -B407DAC19BC7769BBEA6BDD0EE65133044D18530C5A3915AC9272AA4A7FC35A4 -93A7A0CA8BD1CFA4382085D949EE819A51062591606ECEB5B37419223CC0400E -158F1A0849868CFAE0F71DA6B4FA47A636EDE756530425A6BFE45B8080808B59 -6B886D033437677B151285B047C84C2E2FCB71CCDF34E20E925269E5F1A210F0 -391066823D8F21E03746BF79AAC6FF91517631686722226462D6A9EC5FFCC806 -B959AED95F492481324749E00CA117821C347F9B924BEC8C64C954570252E909 -5C33AC8B1320BB1992A88C619DEA7A8FDDE42390EC82A07BD8BB7F0014A41EC8 -04225B5063D3F04723F51128DE8ADB79F62903E1955A7D49220223CA34FDC3EB -8FB71700EB9CC40DF747C4CC60AD11D3FC038CB2051F7E97CF7C7F7D0F49CA1F -E0FEFCE664544CD1F7C23B05BA649D373539E7BCC761611C17489084912F77C3 -5FB3BC1E91E2B4A47C27BF4989C7703E83C5A505108037DE5006D4F510B8FE1A -570E42E4569FAEBF66058F9D9608A771BEACA2A8AB629DBE939CCBBC116E8BCD -BEC3A33CBF185A68DB60CAC5B21AF4D9B46B3FF4FDFBD6BC3C8101BE15E79245 -F0CF8F670CFA19ABC08C34D85B10C17190497EACEF6E401F322B1E281C1755F0 -BBF9838AF83A0A1601D78E78FD599819762347A77C71374AB428093048E3F1C9 -40CFD63B86C7F70BCD2AC3092DDD3BC91CA714BA28263EB863D5E6E2DBD4FA08 -6B22C1D18B16D7042219B9F0BDF5BF10AADB658CBED51C8B272E4DFA11C5A603 -8B4A437EABAA699B86819EAA072F7D90A9CE1B52287DD3D26C470BE0A8D8ACB0 -5CEF12390D0EDE45B1F5B2FE4ABCA8844F713CB5901221BBEF0144FB694EC8A5 -A5E80F582257A84E0FDB4150D9EA8A82A434C5FC1CB93C7F457B95A68E52F916 -2B90E294A0C787EDA95A4EB1F978ABC0A8E1FC9128E7605D591F601BE0B37F6E -E1786F2302F2783D5CDC07AA5F3A20101D527E22B8D689A3A60B5993894A7038 -E068BE74CA3F9CD7A33223131E6149FC75A1FFE4E1A12553A8B8DA3AA19DF672 -D355FC0E824840735280F6D4BE31FE762B5027E292F82AF13EF5CBB0633E66A0 -950CE5EA51EF5C6C7FD1599353416342E89607998DAD7D6A8FC650ED12369274 -4E9BF9AFEA1822896412672B1F9EFA94BB86BEB37F2926B7BC7E032C71572F05 -C203EB5E44E55504D98264D3CF7A77F62C183F65364525AE9E84511F4BB67ABC -164068BA9321842E23882000D27069B07181EADBDAF4374F7FE019BD6D9C88E2 -793462102092A647D903EDE28729B02369DF181C898DEDEBCACB047E79B284F8 -CABFDC5B460D9CD7C3D0A7422E6268DC3CB573DFF7304841C3557355B620DEA6 -74A36D5AA575719613 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMMI10 -%!PS-AdobeFont-1.1: CMMI10 1.100 -%%CreationDate: 1996 Jul 23 07:53:57 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMMI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 60 /less put -dup 62 /greater put -readonly def -/FontBBox{-32 -250 1048 750}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 -990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E -6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB -DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 -59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 -D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF -8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 -6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 -1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE -03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 -95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 -74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 -3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 -47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 -AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 -42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 -40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 -B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 -95601766777978D01677B8D19E1B10A078432D2884BB4F7B8C3293B68BB78100 -16724E495064BA0168CC86D413CB48560D6D318357397832F7A858CD82030C7D -8A4A1919716E8B26AFF8789AAF489EE4E0A88DC477551A87C7DF2856189E4596 -FE015956AFE5CC019F5CA6323A12B763B7B08B92C1A2940D3C566C43729E5482 -63C6DC5E834AEB4DAFB5AE8F0B8931A4687C94D11587B9071C8D81DA14F12776 -53A1985A3EBE37827656BD4635E03F09C3231F906874645E7DB3E59045A59D67 -E745D8487CF73FC50F64060544F624F357BC998A87FBE468DEBB38A09449EBCA -D041D7C29225ACD16CB8A59E87924D15A9125F064710A6CCCA3AD3103D8FCC94 -CC3571C6F9192774FCFE5BB42A14B27960903144D28BF047BF4C77646EA7BF6F -440D4EDEB712C63F2E8080419E42D1D58EED685EB5CDD49F80DB6E5553B519FA -C6A39A093155802F3EC607721F390307E91ECB597ABA60A537E3F8C045BF5DD3 -D88CF6518D37FCD95D2F295D902D617440D23516D962F47750A682A319ACE1 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 14 /ffi put -dup 18 /grave put -dup 19 /acute put -dup 24 /cedilla put -dup 33 /exclam put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 58 /colon put -dup 61 /equal put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 90 /Z put -dup 94 /circumflex put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 -87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F -D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 -92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C -295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 -409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C -4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF -2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E -0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E -B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 -24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B -43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF -D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 -5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC -96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 -7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 -0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 -B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D -AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 -97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 -FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 -20759B6A4C4466E2D80EF7C7866BAD06E2A1040FAF2DE1FD6AFD5FD97EAAB614 -956897A7BA8B194E613047BF469C7B4261CACC1DF1648E8A86E926F8702B5ACA -6CEB4E3E85EF23EF5C9C53097F3BF17243B8D4BF0E6B0C5982FD14E4E916D363 -E265322DF0823E9990F966A842ED69BADFAC2CD1754FC84C0FF6750D2373F997 -362DDA16A0D73B178FB7B67307204AF174AB871C254B8E7CD77058113B702B2C -13F341A972B67756D65C6A9F553C365E20F0BA59F8537C88E0C13F87CEC69C9E -0775F760C4EE10819388782A2CC2E9C000DCBA76E4EFC7B390E50611F3D4F6A9 -CE60FC3B742F046E84B4A302F5DB51092CD59F103DEE2910757696C3F131517C -416687E6DF671911BFEFE08D1C5D0B16F9302960E29760EE101C5BDFBA4176A0 -260ED46500F88BD388506DA361B0E9FD796196E66B332C82CFFEB7974F9E4428 -B82C64ACBDF865B4356C4E2C8E6ED840AD52C326F7D4869F5BFCDA189FE81641 -832D1FDAA78EEEA4F41976945501F32BB383455467D217777DB74219F49EE8C7 -89A9BC7F63500C8A735DF316A6823E6ABD3D815E7369EBCB3C06B404819E48BF -00F1A4AC2AA9ED69D6A974D6BA21C4923B7B93F52AEB5D7015E7FC8611A4E0F2 -A5242C167F9F3A9DE6EB0786EB41F72EC2051BE8C69BC1B1B47F21FA1BEBF913 -0D7EC2A3169AC17909A5BBAC615E64359C00C372BEFA892491D23712AF8C81CC -E4FA41958C4AC483487725FEFD17514840A8DAED5656D30F6676EE5B168F047E -593111CCAD76A790BE700F40845719C742C604416C9BEF74E50B7FB02CE92C8F -5E0304486FF092FDEBC48FE92F1F52FAE037C4B1732069467138960FC946CEC9 -B00FD964782929B9AD606B2AAEDF7500359B651D48580BD33330FCB2407ABE56 -D006C8BD1BDE90C70ABCC7D3B6186DA6BBED163DF48D7A8B32CA1902B754E7D9 -FC214E64D31D5AD5AE0B3173DF92DCAE433F2CDE165599A1C215236AC9534751 -86BB44083AEADAEA87780CADC3AEBF28597D3577B2DFCC3322B4A0C8FB994DDD -A42FC7D1E078FC6226E7E00E79197F001EEFE43DACE61835F9F2B68009B65D20 -582467F445293736BE2E3E2C0CF247224ECF9FFD37BCC76EDFD31368D2F26B8B -5EB0322B44FF635A73A6936F73859582F33AC1160F6616E30499ED3896F2C687 -4D6C2CC91C1BB8DB13F27E1CB8F68A2E38A842C7467137A3435F71A463998130 -CD5836CA448E139EF8FFD2E4F5F8D7C0250D45A42B2419EC7A7B3B0BC09305F7 -CF0967E85B2F51339FAD5776CBFAC932048FDB039C9EF6E90A79019FA9622A92 -3A5E8EF2336DD18F1B504E989A98F4F9501DCF69FCD920AE53740A9F9D70195E -C25A9858529B445A93E3A2E9C542485F86983F69F2D314B33AAFF216180EADEA -AADB62FDC1625F363D784CB1E372FE3BBACA8E9942D43400E1CD716E472C288E -DF4AB8FF861F2635E835B3EB01BA56E16A9A50BFBB44CA544C1F8E8B4937809E -EFC33FCDBF9B0380605BB91032980A58E8451B04C9C5771E2A2E80F0F0980DD9 -505F6C8B216B39CBA66474ACDA857B80BD701F6AA093E2330D2F7D6CA6A129AD -911EAD4E5FC1818F6A4EEDAAB5FCB6CFD6582C82A5328A129014399BE8217004 -EF372A4976AB13089DDC03C0061932C2954E3B3365E4FC98747CE4E05779D38D -BC544D15C2C0ABBAF5D0374F4751EC5A6CD6D7B0A67E51EC762805E5587BF103 -3F9B3443959F5A9C1CD11891DC55FA47FE954C1FEA592BEFC735A2318BEC285D -14F4C4EBACB91CA7C4C3E0F076C5E0310C357657628032E94584B384B19FE322 -5EDAC73733EC192187F028F3F6D9AB27140D799D45924A38683D5F92C8C6285C -9DE66A0A9ECBC9F59054D9D03CB913E899CDD5DDD755566EECD5180DB6BA4510 -FC244A395EDB3DC1AA44F88E7AD74983B06C93F19ACA5D48572EE12B23BBB1AD -6A6FEA136FB1294B0E12F6DF56A9A0276990E3E4E7027D41DE471FFAF8117FE5 -3DD9941E02B6750797BA878A153265967EB0B29244729949C39522311BA05F38 -A0AACC9E8978BAA786C7F85D3C869707364D7FEDC5737126406895456839A067 -CEF34760D0ADB87D95FD034D026683B786E131486360D8FA0E9573C21990A666 -CEA3085429F1D569FEBA7F02CA32B3A8A65885FC25ADFFA3165CB97DF5E00730 -8F32E045C7B2A5F96DC270F846FF246662864F0EC43AAABD94006F5355AB2C1F -68A8284D6CB8974514BE0DCB823A943D67D4ECA2C3DB223341C9CB09AD81DF89 -1D8158CD2563121708A43560AFA3396D61285D2BD9043CBFABDF2A75B91DAC3B -FA2276677EE444C08EF8F25EB68F625252C73B6E57B1823F0B7E3B0539DFDE67 -92D7A8B391B01B53497D4A5ADC5DC56D6CE71E37D93D1F246A7544A19B266593 -43898136491179CF62265CEE84A98984C40FE94BADC196EEE5C2988321E8AEB5 -5E6D5AF54AFD6B1147E4950F9D6BF4D732DDFA4EC5867EDE061E3CAF13DF2021 -96D14A9BB98A6EE506D001069DAE8F592CD7B85564B435F0B1084C1CE10D88EC -88A74BA11029B60A80FF7A0C3D56C1C17707DFC270837C6C6D85DE9D83994D17 -3976A7E98C34A11CEF234FE9EEF6DAD47997596841AC39AE5E18BAB55972A5B7 -0DDB5BCB504035380E2296270A47D69D7A31911CC590F71C776DD313684831F7 -7221CBC90AC921247C320A48A90B387924D9FD599049C421032EC95E9482B010 -944BDE291FE248231FAF0B13E5139646142216E116C57F5F3496D7718651E19C -57EB0BF3C8F0CE8B4E10D5EE6BF9B36B9DC87420973E17B3A05B82CABD297239 -80D7C6EC0C13AB1B1FA48BC6F119C99C90C725677AE4015900AF6B1F634E461D -C00C07AA2B22CDA45C159A79DA4168112FAC556353A31259F413649F77B45ED6 -4189237119A17374C20CA37F477EEA80922E6E22E2A575C481A8129AC41F4654 -0AAF818B4CAAE9DA11DCCF531C7C9ED757C33FB40363BDDD80057795E259DC14 -5FA1BB9A5090B21C92782C688D6628BAB06C516EFF0DC3FE6347146667868672 -415B8A6A89172FFF885E5C9A2F01D8BFFD5F057945D2C3D9A6AAD62735739AB6 -A340BBADD7C15833B367957AF8F44DDFD6FB691F0F1E4D85F84D80BF2EB42066 -0B67031382586543D505599808B1D46132BFA5B77FBFE9BC7B689ABB6E899B1A -00D56C8AA184A7C734911F19DB34E935E2087BBC0D15BB529036BD73C24AF691 -BD3242631C7541421DDF84AC7E9B7349DFFB2DD5AA11C917520DA78470C46542 -1E9E0011C970C7DC4E65861747B9C12B1631B157A0704B91A02DB671EBB5E386 -940A6F5939F20CBF99163DE8BA963BEB22161F612B314CDBB6334213489B96AA -621444217A5D1435C143479B47FC5FCE3AB0788D729A4A1F029DBC94AF166731 -B20673550A5C9489DE639CDFF1AFEC92CD5BCB00A0406230263BFF12FF2E0157 -C27B3C331D859E29EC39BFBE3076D9B159B269C71C110901CEAFE0B3BD833029 -2A4692ECC37ABC5F3805E7CA3653C677C95E59456724F6562A24624DAB7C57D5 -7A34BE46181B52DE1D01E2A2DA8222E2D31BB40AFB3924D79354973F7A67BF38 -BC4391960D23D0F317FCA92F0191E51ABE703BDF07DCD28E2FB77494F6EA15ED -38032FAF4E90CB4F75F7BD02E2A8E79530F76B4F0F02CA602F31D7E5031A8953 -C6F3C38D25AD19EE77A0F4D3CDC17BBA141E72DB6EB331A3B0B50A4FFF737D8B -455F934A56F51A5A4D19ABA0C3CEB3B574AB1A9ED80F40BEA61B2AEFF7EB98CD -4B6A7F2E414E89EFBA4CF541C1BD3C0697C39C7338B6873D4146013AD76D03B0 -6586C68D4FB8E60B7A4C3A40AA6FC93C39CD37577B72DC97A150674BD92349E3 -30EB87559E38082463B3ED0203AC8873F113BB08F681DEB4870075F46B620343 -6A1953AC9EC496BE435CE6DC593152EEEA6331CB9945AA4FE008937E16A9F570 -3E2A309C5171F683CFE26DF6836EE5FE3A4DD04C4BDB109D56832915B9B32F97 -F3B44A5D327125246A5BEB3FD21BE265ED7B5B1674922F26DE19C9F7F6495444 -9DC6F6D13F371C756A2B862AA499032BDD961BE5B4527B45C3C4D74E23260CC2 -944798F5AD2DA5DF397047D040940B8C916E7F272B21734BE30CB5E59FF211E3 -7EC389FFF7D3EA7358DECFC374280D67495C695C6EACD289C9E7B735D5DCCFF0 -36A614F61465ACD63DA0D2FFDFD4FC801E1C93EE257A04DC26AB406B149815F6 -21870221DF60CA8ADF2311C293B41CCD15E75A0433F057070C25F0D2EF94E4F4 -ECDF23A7D617EF72B213A03730ADBE66A54B1BF76049CBC3A3F035D31BAC2898 -63F269297D946552549A259B9C9601FA72E45AD8F5D0A7FD4DE2D32211C92A41 -7E764DB6EFF62D7CAC71DC4E92BAB291585199A4CD51431DA91429CE4127E30E -EE8FCF90605AEF343296596357A978DFC772DEC9439BABD866E794CBA07FD9B4 -F64283A6EE91E42266FDFF7CD69847A940FE7C0181F77D55A07A16ECD9AE83ED -91435DC75F6D7C5AFF4DD7A3C20EE0DA4BA99FE2036A7B7456AF936659D9FED4 -FD1939EE0AD25B550E8A655AFDA23EF4DA39777AC2A04890F29C0BC97DDBAE9D -D6347B5469A0EA8721773CC685F7066FBC2E8A1574559E8F2955397CE23839A5 -7E99457317916D57AA5B35FECB0706FCE9914535A0F487831925E4AC4335EF33 -66890184550188AE57854F3ADD15A0991E45EDA27974C06E74FE12FA49A5C2A3 -F276B5C2489FB288F49D072C468FCD9037E4D99E1C40F18D80D1E63FDFDC427B -660E4E36851A5D4A90F0E5F2D5FCBD2EC830242703F36BFFE66D61E50067A882 -A10E0CB20C81B0792A5B8EFE9302969644803E04D7DE8A7C24DDACB4563B604F -2FAE7D6F5112DF03C1F462E4154EF4BF0D8C09416E3805B036ACA990D432DC7C -7C8261DC2118E6E9921AADB908048076A12EA72E4A09C1C0916C88BB39677A04 -4563356556730E59164F949D62257E34B3036B22D454A3A61409F21CAC5544B6 -D3A94ED495AF043EED3EA880BFE5382B6C6D0B2A84B07F4DDBFF7B9A9F06A305 -A5227333C1A529E5C968E0E82E02622EED266332A6E033839A194FFB188B1947 -67AF109D37A85041C61A185E5A1023CCCF3D15BED794D8EA7666D35169031B0A -83A96D05B5E7D059BFB292452EAEE5EA78201B3A698086B3DFDDC56D59C0895C -7414F9CB0FFF74536B9E2EDDBD8D56357CC66EB7BF793C2CDFCD84B573378D4B -7D2F6E7E9E4890714FCC9FE519D33171DDC13689CCB9C6E08D6D4ED46EB6794B -D77251233A6FC717E811D800480690DAA62C8ACC2B5AD4958DDA02408288147C -19D919C3496BE7B150C321791081AB9EBEFF8FF49D2F51728FB366309CDFD835 -D0EE508C80D162DD9D64028FFBC05E8F98CE0253A8BB2A4C5D3EF860372B08C9 -10D9C2976E41B0DF1BE7A40B82078414AB72F44BE8D34347E10CC21A9A960FDE -9F8BA277A737A8B18F92D066911803886463A96BECABC509FBED1F053F58DF79 -27CF6A1BB379DF14784B2EC04A4E7D8DF6C3036697CD6285F02F23F61B3EB6C9 -2AEAAE6ECD0DC3FB6BF56ECA9678770446858BE8533EDAFE2D4CCB5FA1DD1B8A -7C4957E1FDC355445D79897FF7CC04DF352E6D87B8C72AE9635507B10B626EAE -FE63366EC0F60767E0FC4DD0C209C37E82D0FC40C3B36A2F5FF778176884A376 -5B8EC65A935F3326A9B2C27D8F27EF544D823E864AFE7CC3E399FA2F2E563097 -3D9BBF566FD818EA4305647A74A874712471D15108027C8881D9795177530DB8 -94D463FEAF96809727837C8CD9696E0D2BF53DE8D57A07F6D85A9E750B157CA4 -F4AA6426346ED5B82001E647B58614E1E76D57EAF6455617C43942D4B05DEBE7 -B6C682F9F567ED835EE288D289751F359AF7BE222268A6A3992699DF1C91C0DC -A04CB2840C4DA5AE2CD0A12EB0CE03735640EAF0AD9228EDD2215831550B6D33 -C4CDE9DC1A15CCFEDBFEF5CDF6114D99E3C558C01FF803B4C21805A4525E18CF -238164756D0F1BCCE87DD8077C8FA13C6AD8C761B5D76A8295806E530E5BB17C -8786E0C335371447342AAA37FF1B887958B720AECEF39D3DFB0FBADB7C9131F7 -A960B7BAAC9E37B76A85ADAE8B9261355A27DBAD91E00C301064C9883FD76985 -F58AE44E71A981FF35256D93B68260DCC27BED91A7C28C804784A04EFCC8A934 -A4B30BECBD9AE562F6EB682BE9F98BF17FE8BD62A64053EF0A0F211D4E7C9F8D -F31E5DF5FED9C2ED9F3B975C8B8026CC85B94EC649D76538B2757E08277600FA -0EB1607EDCEC8CA2634C58D4DB7F1A1233D3321E19097C8E93295876C0D5EE44 -5EC69BF603205FC7A32EC71382D6BB7D119D593EA158DF5BAD228CDB66C6F6B8 -2FB03F1DDC1B3FE3FC644E7C6072993BF25FD5DE26A114A1E9145D638C8A95C6 -AF48BBEF411D550085F04BAD83701B754C8B7FA377A00A59611D042732997CE2 -913727947DE68DA049D61363519AAE1F608EF8B06DD1E4E5EB9DF23219A98D56 -8D5C93AF071CE20E738255E965D39CC1821CF05928A21D66E662BDB1E6089A8E -D4F32DAB2AABCAF118C85FF17E8AB3B735E91E90FC07F84842C1467501B623C6 -4297CDC14D3D6F311C1B03C3E89CF6C02126BDEA141075AE10C7A6FE9164837B -ECDB43216E61AFE41F28D9A2FFF96412AA7DD7D621BB96A834676EE18BD6D6CC -1279613EDDF8191641AD1E5D65C77530A1C553C54C272FB12D34C6767FB8981F -C39A3588D4A3BB12CE53AA32B141493F49D23105F94365BEE1F5AE81B91504CE -5324CD2081E72CCB8FF5D9A0EE95A4A44EB358437D2CFFEDAA7E2022BE555810 -BCB2F1F321D87BF06F840C73FC6FAC2C8116ED530556C0CF5DA5595E10229A58 -C89DC8ED385A0A64FFDB5AECEB502354D9FF152C047371A96C4800CEEBEFF331 -BD0E4F7BFA507C6676B0FC809283DC4F2CD14C6490916D07FB2BD35C784C0AAB -A786064E65B87DF2F71FEB03ADC4750633F8493E16152BE1A3127F16AFACBA96 -32B71CE871E3C7AC466EE601B4119AF454B7819E06D400A017EBD36DDB4CFE93 -9CFA6D66C95F88AC649D468FF4528652949C049CC93C681D5F4D79501C664FED -4FF3CCF1033BFD65F94222F45235A0606524CCC728EF38906DDBF57FFAC469E4 -DD554A5407C8169C47E954FBA8EC7CCF65278F833AF690F191608E507417CBC0 -7E938578EAD15C2745526608B71829E327C9A841B9AF6CFC373E070BB6D45E6A -9CF939CA5B6704D3581DA8D0125B07CFCB1D3C3420242D77B98DD728A263F898 -C89FE77D8D6A60DD6A56486721EFB4C19A44829DF70DAB6EACE3CBE46EE6DA76 -2D6C5C6A8978AB1EDBE79B3654A1F45D1F5D28E7E28D631F1A1ACE0B065C1B6A -906F3335A11759333FBFB454DC2D4ED0E1E2DC6CD4F2400DC384A059FC3C9E05 -279154B5456FFE9AF248C5B9B3FF3B051DE80C0EF51F70D48A7518D5954F90A7 -18E633478D4AB1758BA882F9027A3AE05A61BFA2FCB1EC5108E416033E78166B -F5CEB7FA00B24FB99D6A8F4D1554F9B36D2E65B1C13FEDA184C21962C81C9AB8 -53312F75AC7DA7BCDA2749B5C4CC6BB13F259A8148E3DB5F54821C3FC7D201E7 -3C9FDC0D4D174B7BA121E3FA4FCD2F7BF0572C9C02CEC4567F13FC51E191EA2C -DCEA62F78EBAF4A6253ABE48B0FFACECD1EBD686556D37482A5264E10FC183D4 -318C62D02F83B6365968350625FE1AF810BEFD57A19CCFBFB98BEB52FF1D937C -821A47DEB8E32047A92D9B687E147BCF7574CA5C6986450213E09152818F5311 -451EFB7C35AE79B8796BB8044839FCB5CFBA818C685DFB969EC60CFEA7D89045 -78FBCB9FB388FCE88F6DDF752DED634A4695B7CFAE70BA244373E63F6BC966A2 -6CFE08A09400E99E5ADAC8E6E11AA2DC438A37CF2D6A76C264B0744734D9A333 -BC478007283D9E995C163066C9AB0AF0DF2E87E44D71FFFF528817E48D75B615 -DAF8B8077A2B89192FE3FE3562D2DB1BC90BF21817153D68F47FF99FC59E888D -E96F639852110E20E51AA0D38E6B6EF7E52709073A1543EF3F90DB8A3BCAFD25 -94253612B08220345B015060AEDDFA5C04723F2F404D2BC4FC05CB5B050CC48A -E0103205372BB9C2340EA48EE063E19F3FEDB608A88000CE31BAFE3B46C70E9F -D12E73A31F2F2C619791EA73EA25416E21832E3013B0D2E41EDB25BECDFD59F1 -C2B25AF3442F6A5932EDEC77444C98802C0CAEF592452EB8AE26CBC4287C4920 -2F2301F3325DC2436C820D00C3AC29A1D7C0E7C8AD36EF205E3E01A61E2EBA56 -9BD79E674AA28AEBE93512EC76BFC9050524FD0170EF7AD9AE841F23054D7D4E -C201CD6C410DE13B7E6FE62385D647EBF0E725C098215DB60E8B01C8A5199CEA -BC6BBD05B3438EEF8F078E49758AC7F89C56509ED0873F89A811BEAF4FD29391 -0CC11DE414B07372559A27496C5F6DC4E9C36BF610E62FA696015FA98E8FF19C -C9CDB89CAFADC73493EE09CA6C1A632D8FA74CCBE0665655592F74B3472A7FA7 -2F577472D31923EF5B522C0CD76B81FCDA5F29659381EB7CB7631643298D2DF2 -F0B4B52E16551CDB0A0C1568ACFD00AAA39AAF18A2ECCE85CD763A5A7D792ABC -96C3DC5E42103389D88A50B54B300AAC071CEF2D354BC2E0CC6311EAFB22D0A2 -B71D16408EE497CB67C78796D1E9C294B88632957ABADB2B0B2BFCDED25819A5 -93FCB13ACF15BBF42234B27AE9ABC68573CA90DFCBC40F6463BA4C68AEAC13F7 -76093C87BE8778E48C7226B1DAF7412972FA7B5DE9A4312EF26B6453850BD2C3 -F0323DC1C655CEDACCB4E87213F82BEDF619BA12AB5A40129BC9E179579937DB -DC0C8FAFE50906850AE32D086DCADE33248C3381345A6474EDADFDDE24E0DA67 -05F03E822CDAD8A958ADFA7FC1EFC7D03BD31582FE4EED7A768EF13550937C1C -3478C937ADB7FD2776D75797B8748C5DA78C097A114ACF556037F86C5382B33E -8307CFC43B5571B5CD5EA192263B287397EEB9C277B0FCC88E140F58569B3255 -60DE9D1916480549168EE6E23E2DC616602E8F0E14FE938408EAFF0C8DAC948A -666477512E5375B85B3AB5B5254B948CA04CD71562E5AD6493534C0A47C060D7 -4FC6632A43E59050751751B5FB9EFB71D259A7D4FE08CAB2DE97DF71FBB24156 -4CFF70E87AA9AAB3C5A00198E6B9D12E7BE079B1CBABBD4FBF5A297EE121A18F -7F154782F76055C3F9742F4C193E0F958D04D1CCC929DE24F56FF2AB17D05DF7 -418F0E0000E5521A9F3E03D6C1E8A1C6BA04AFC719C418C8BF41F2F489EBC2DF -7AC5C115938B085F94C4A5AAFEC2694F360BC2E509E8967426D8BB92C3B46E81 -5D23FBB6F8654BB103565967C9671B0D0CCC30406E729EAF5447AC65B9BD0AEC -E68BC9CCC4F58051A993BBBEF40145FC3E85D3AD817AE74C95C2F777F5DA2814 -6CEB79BFD601EBD0A1C72FBB67B73266D6A0ED656F93ED61C44EC7DE891D28A8 -4B25729F58DD478932367018AE6C63FA5C5FC7EB2EA175CDE388750897A798A8 -03A92331596419241961FE5DC38DCEA02AE7962D68C5D6667DA0BFAEF3E816EA -D3DC17F8B1708D1ED52C3F4A0244C63A3B639C393C735F0FB332AB0B7848D0A0 -C94FF616B38BE032BBD0A450E101E8592C804219F62A5A675365A56265B93881 -D66BFC01FA08FF58C502A7D3CA28BF0DAD846E836A1E520E60C2C1ABABDD2DF0 -6FB012B947E376BB0064CD07691A26CC0F5D1AC3F48FEF04BADC4DA29B4412F5 -5FAD7FE00E477B22FDDE54F922BFC45029EF69BACEE71A9DF13C0508095FE617 -9CCBD486080DD2650490CAD32D201A05E71F43FAC32C97C07A74DE38CC390040 -141F33F809E3407FE2880F0F6763247A3E245527113676B8DA900777A79B21C0 -C891D196420C52833150FC6EFC62387AFB1E402DA2E556AA19359D0BE0A75593 -7C66F47D6DAC7CA25957CDAFD550AD5E2A33F5021F4D81988A2A4D90FA11C9A9 -45E2B57705A81D89F0160705E0FB4CB4EF5793704A3EE8C6491CF3C6F44242EC -42836E7125E349053B034C181E9AD0C71C56E316133E58EBC1751862B9302994 -351FA8A4FBBD3E681A6D9BD40C0B415B1E6E17917D229ABCA18BB2B0825D8BDF -C69AB3D2CDF0C9E3FB6500C9D58A6ECD17E882DA0A0B150482D1EB95FD491D59 -7F82C6051BCEE0AC84C2A85AFE67B83D71D2769E8FE0C5ADACB7DB9AE25926E4 -8D80B9A1B949C4443F271983D0DD52EFD327AC4283B7FDB6957BC7EC2D335619 -9A78A6CCD89454970CE1DA66B35AE8573100B338DF0C8C5476A6B78418BF9E20 -8A33D3D7D725BA7A23C1273ED7F731BD7392D8AC0194D67C61B8C334CCFC38B7 -FF9F3118B5C2751EAFF59A191C2E0A8AE8364CC560BE42D88C6F4DDE4B61D02F -6C10C010B55F27AD5DBFEA393202663EAD9D3DF5825E5CC91C43DA4CF1AEC0C6 -DF07F1642005687C63BAEAB5EE6744CCD0E6FC73C1FC22E0B5888063E3120618 -F788F234AE16821CF04E5791335C82225921712DBE75C540AFC913A501F72E0E -7BE4ED1B412C91329B707D61F2650EBC2FDD72B3930ED5F1C886737C0D6956C8 -F1C2765A9533919FEBB984527C7821CB5B1297C5963EF29F19F8DDAB7BE15B76 -9FCA6313E60D34D8369880F9526242FC937FE3425324AA3A9714809B142CC61F -39831558321DE167C4DABD38F10E880FBB15623E8296350C84510473A6008DA4 -24CC989D0ABB7A8DD597ED36A171812D48849BAF64F6F441BAF818933D3F9986 -E8C4EB771A96921349DBE1E92CE009CC5C67D7BF9132D569F645D0ECD44BAEB1 -590FCBCD3706FA20D1872A1ED643503A3966676DD0A816056CFBAF9151B7D841 -335F94557872EC441BA4505C65A7F1477431805C7DFED9CEBDBEC7EE49E87D2E -1084BD0DA9B891BC23F3840FB44CDAE8E7DFE6C06A92A11FD13FA19C78F38B6D -605D03A4A6C62EED344B590BBF935F4D51BF641FE8D2D10529D7A7EFEFC2F0B7 -B8D42B6A17A6D3A87AC8AB15BADFD2BF2839AB869D3EA978DEA0044AD7BC0E9B -B6CC856AD362AEE4673D9C1DA8AEE8F084EBE1857A22EFFCFD8EA111D073C6E6 -CA63E3A78EFA85F24FE4BC1F382A48B8922D09D6231CC3AEB3412E8040ABBE80 -0BC85CEB792A99115DF49286848704B00BB1A8D25148FFDA511FDA7D9B3C527C -2277FBBB031CEC10E41E416875FCB893C94588B0FC2C2F2C734068F500C5BC78 -485A960F3C7ACF3DB22810D5257CD74EAC2AA6A30E870A38241084DA09FAA76D -2F00C09474A4B5070ACD2B027A0718F0B8E8BA85089C2D63EF04B6CBA6F22D3C -BD0701F7E05EDDC1C54220CB8AEECB99581B77062FD897731CD4481FF512C4C1 -23C2F7442A2A6E21EC05B2C9874627A1B4C552286F91D172BC5B47ACDAEDBAE8 -F001525DBD896E2C07E98DE32057A257590868DF95715577B69169DF9637B00E -A708AD09933515D26944A373FE442F64D488A91AED5C8F8EDD54A554EAD49218 -CB22C6196D32FF0EE679CD0259036452AA245BFF051359A8A2F3A9D06BE188E0 -7421CA5E3D070C565AE3A70AFF0ADC3A517330CFECD29FF5B3940FA54F187639 -D37091DF4BEE09D29F2E52A32AB5AB9AAC098E0BFAB4B7B706726038E1CFE2CD -D83B1FAEFE1F4234182DBD5BE8E9AC7B2B887E01CD374A825C3D764C3157CD92 -64DA53FB9A596AF2E9C3F3D86A5D73850EBFF025A4D2D1A4BC97407AE88ACEA7 -DE8ABA009D7359F2620B4DFEADA09CB8EB68104E65B22F054EE6FE649F72FAD1 -B2F00BC4435D55EBF44035F5934A35A2A0621A5FB4F93C9615C2421A5AFB510D -D1260BD366D5CED0073ABA8B7E3D0C59C63F5C48C2E3C77553B91AAFADE691D8 -D8ACE45C20166C35503CF73B48434A90A516B24C9F38700652A96F41E4AE95A0 -2E5D31470F2ECEBC3D75C6AD794F66494ABE216CC25A1E385D5B9398CF4ACF5F -3705DB2A8FAA799803538AB3F81E1F798EE3EC152DE1CEAE132555D3F55F7F90 -B94FBD0889CA3B0BA1AAC8DD6C3B0CDAD21B799F5478A789F9A74EC7127E4259 -FD98E4EBBE489F471E799ADEEB0613E92EBAE7E0F9E09AC03B342ED5141D5774 -5AC364916D8116EB103E6C9E1819E19832ABD66F6452753F7F6795F274D82D83 -7FE689CF8A181CB425833B97F2DA9764732AA0717F0CE55DE70F938A37689301 -6F1A1586AF803C0AE64645D97B1A9AA141A24A9B997040714330351792616442 -70C8BA50FA4DD5238E2D7D6A16C9B5DE3F8A7FAB2F4E5655DA00481EC4B15B48 -E047AC737F5C380DA17F57A835FFA2D01B8EB20C0F3CCE270E208514915B8058 -CE3C9C8888F53CD8952492A00674F53D94C4B8A68EA98E34D37CE574C3F312D5 -D302E1F5218CC62C9C8D75092D00AE3F603E568E95CE6DD81931B352C8D8BB15 -AC9F11BE312D2729F0BDDBA215A8A0CDFFAE68BDB49F696DA0C3EBBF349B5273 -3D4A7A36CCA0446F7D16A668D51B5165D70625E3E96758387E40A330BF5787DF -73C781B1F15EF16055DAB842029CE24A9677CC6E981A57A0209DE6EB62328DA5 -A05486E785AB73C5302172A5730586EEA3706801D39C02AF42B3C37F918AF5A1 -EDE8CBB0ACE44EC34B1BACFCFBE962549D05B30B572658B677C4B7D56E5FB7EB -D2F632888454FDDD3B8A4DD6C226284B56FBFDEEAF915D6BC129939729AA95F1 -B0AAEE02C119EEA3756BB7AB638DC15185D7D1BC5442E4E2037786DFC19E06F9 -5758344DCACFF12EA0D465A4F1AFCBCCA6B22B07A96E5433CC81475570A793E3 -6899A1F9BC3750C9EDA5A5010D7CBA24970D19555A6613E1C0A20B2CA1A2305C -6C59C11DE0E8DC0F51FE5F58EFF84F2DE7F18ED0EE7EC3C508951BAA11816F45 -53ECCE80B0D09AB23E189B890F3C9A4CEDCB7F0AC07E1B52B2CF8B6ECD6174BF -D5E66D5EF94326CA6BEBEB2D04A2F5C87A0DF0CDB072318F0329C49E799458DE -A2B772A5CE622C262F6294A8F691D83A188A377A8D78BAF59F08790BFAE3053B -85DC75CD7AD0E641F0C41202EA3CB49848C5269DFDDBE3EB5C9764FDCADF7E6A -2762909FA8C166070F69E0AEBCB03C8F97AE8DE40C7802FBD751A030425BD053 -161DEEB4A6FB85FFB9CE609F06D425C05EBAB2D4820FEBC450A3144341C0F597 -88B4917D4F9FE6D4CAF30D06E1129488AE8EE622325F21789B1CD274094CC311 -19819EAA3DE9703A5002BE9DE1BCA7D769A3069EACAB8261900A2A9E8A9444DA -D7A922A26CD7BB9CC9942DB574AFF1411F44208538967F4249A3BF4BBFE81B81 -92840607C3F4C8E804FD630403D6C6DE60A3F0D0BEB9635A28BF4BB3A789D090 -E754F4367E29F13DF28304F2178275A71938185F6E680782AFC6BC35C9FD842D -73EB566DEAF118649070090E43FA7E572036A606FD3FF47578B9594FBFE2C56D -35AC38CBE303AC04F36D889113D9CD423FDCAE23D8A63AA3C6CC2F6CEAC37032 -B1AA79C500AE5DF39CBC57BB4C8492B1EF276BC4D2864F67CB09C14E6E811F33 -46DD35E4899A072C788BD80D5476648416FE383B9FFA64BD69D5948A5E10C8DB -6774A701585216700E825306A23996B549A865255DE7A565840CF8F86EA30177 -E1CE3B1866D2F94AC553A0D4DB307A7D633D8CFB67D621294C32E8D4D5F48459 -994EC4BD53794F2FAB1B95431B0F40690CE80ACFBF249249FE6A070914080BB4 -8D56F73210F053B4DFA0403A2A30E4CB0DCD0E721E4143FC1EB918E6B7C2D977 -26D86B1B7F1D652166F169A3B058551A8BBA687A391FCBAEF337B3964CEFA7F1 -0A030C097F440A1D16FC14D9AC1243ABF8FE0C4572C14296FEF8B8EC6E859392 -96EB8291718357C6EC7422D8ADA872CB672AF4637086BBE35951C61789A335FF -5B904F17DFFE9F4E60523D427DF645C22377E1DE1407A41DA9748FABB258B3A0 -14E168C2A2373900246A6BD88F25D3FDCFD2A91A5197B63C1CF59AC4F26C42CA -B1958989A1B36641B51A0E91FE03E90BDAF96A7504EE3193728FA8F86B1F0665 -39A56B4283E9C789309ACD9445483EC16BCB5331571D67F2E6135234A855C65D -2702310B488CA8FDBEE958C382E40B96C543F58E2065D5385558D2DC2AF550A6 -DBC437EBC53BB1B3B8563195B5D1198FD906DAC9D906CBF59B7BBEB92BD29131 -B42F42B6B0B4656E0FD8D18BFE640FB479447BF606F361108FF3C9A9499038EB -87A370E44E8AA019689A900F20992619915ECE3FB679F5834F1B0EFE293595CA -0D37BDC0ECFC4D8528D52A14E40F8D3B0FB3AE69ED29FC7EF377F6C48A5E8ED5 -9EAD17923AA47F3A6FD58A19889C31DF0B8FEDEE49EBBE4749746C54362547BD -678CF0153BBE1A8BABAE7046182A542A9E91572F980E33B2D8AEAF2945E0693B -870787BF000663167C0084EDF0C35E055F3208A331F34CE8112D63EC8A71D129 -2EA41C7079AA2CE261F2C3E47E051635E5177AEA3626D7A4D7B5E42F66986E4A -BFB5FCF022A6DAB4DE877AC2DE05D1BAAE32B6D5CE1F24E570D1A123F8D27C53 -7E166783BC7A9437F9C3B6968C5386E9240DCF5EDA0BD2B2D91BCE2DADBE00B7 -20C262DDED733040979E62454C5303F01DF1CA7EDDF9E158E62251914918CD4C -88CB370FB1F68866CA2370CD9926A54BE41E1363236189AEF679E6560EA9765D -E5B44C035CF0378A4D684516387CDE0FADC607F86962DB50E2C82126391A8E87 -DB03285E829D39FAC94FFAF70123C3AD7F083D93A066B6E73186EFFF1CB951B7 -E746E52F54B0EB268EF21109CECBDBDCC99C59F5B545A8E93C6CEE6EA416D3D5 -5073DEEC1C4501BA4CCE7AF100C9F0ABFA5563B61F0DF4A1FDD5484B49D13032 -BBA269116BEEF5EC05650610408544C375DB8C4DA370941BF2AAA1ECA9BD4AF9 -783F2B651A22B51DE953BE94FB5A296E6EA54E9FDADC818BE4743EB53913172B -2C2411BF4D60D5ECFB84906F4ABFDBD4B70327EF53F465BDEC2506FC278CCEC6 -8A89151EE4616DBFAD66CF4422DC9F0E15D9639E54E1B47BE6648059084D58CA -110F38D77EF76775570E085F2F9496A4F2646EEEC6C269EE35DE9F756117850A -8E722DA4B8C26B836B428520A904EB109F4EA09F47FF99CA22F86C951D24B873 -83B9403DDB0720DC3FC4BA6C33478C13370509EF5C7CD49C10CD5FFD25043AD8 -1DD09529FF9C91157E9006A017B2DAEE542B39AB665EA760F6D24A9460FC0A6B -5C3964882F4471BF38E858EBA3BCE70230CEA3B511DADE4E892451711E4C41A9 -679CD4D9067575783774FCD8BF7F20B53D8B19AEFD81F44ACB4704352BF0D25F -F8B14D5D0477925D6792B93E3395089540C5BD082D7A718304B12AC0B99EF0D4 -4588EDE56AD2CDC1A23AF9D2B50FA87319D0A0610D04B69D9CE7DEEEAB2B7B88 -45097DDC86E8F91875F259B8D033C44D1C966262A5E9A2DF0C9C16858E97D4D9 -3DBC278F765AE2DFF9191DFAD87577F7AE031045AB54BC67FB0C54199738DC50 -D761374A1F6CD36067A595D5D052EE1048CD4F6C3C1A093B04FBA24FBA7144E5 -BCB6438235EFC35F222EDCEFF7940C1F91FBD93525F8B9D3CBC3BA58DCB29043 -E720B4C7300FD78BA24C70BFBDE3398AA91F00BAE8A4C04A04C9ADB9EDAE27EF -6C6CB5DB6FF0E4FB3127901F0CC575A8D8A492EE03AE4E8ECEA6E55D60563015 -4A157433C362D46B61908BE9445CBC25E50EB1F664072ACC5FD11B24449E6C29 -296E9AE446A63956BEE6A25607E2EBBE7F4F4D4FD4C98FA3A22AC043441F3140 -5ED2C4F32A54F05F1C3CC03B638FE8744F2C053FDDF6F0F87861298971C972D0 -EF6429BD3C44D3606D6A10AEE77E32B88B0648519D6F2FB2380290F7C873451A -C378B78290346C03047129A7F529018AF6B56057FB08B40B13AF74C7257C15CE -38810F7D912FBC3AB457B7018C985F31EEB76FDA63B95BBEB1F8950E5BA5926E -876F0FE954AC8D5A7E5778B3598D4661783645DEE64AD6CE7B7D027D2DC61298 -27C56100FCDBF2ABA512AFA2DB1EAEEC0DC39551C5EF23334FA516B9C10A6FBB -34A23712A73876EF7C71AF2A581B68F618C32DFF596CE1069B3EC5DA24451225 -A8522AC59A84EDB613A4B00D2AE058FDC9E1AF8DDA2F29C9D4954DD815FB4372 -D7C07781E7AAAEB3DA9FA9CC3721C870076F01787F31B455E68082BCD1F1C3E3 -84126C4B5668492DFCA2531A2DE135C588F328470497CE27EEE7FCC2B74C1BA0 -30EF399E8BA5C616A4D45BEBF2DA0BE55E96936CA2B9BDFA632A9725B3147B59 -C74FDB36D91C92B60DF2F7111CD4C7F59A47E43C0DB5A440C727BFCD133EA099 -7B8A5B801ECD69A1201134DE7C6B6EB80FAE9C8DABFC970F6DC03AED9A383C73 -A463FD3CF42EF5873F9639D55050FEB92D5C74BCB69536D645D763BA62BA4771 -9830AABE85B84CD6ECC2B2CFB4501480B5DF833C836804A0B463F57CE5AC08E2 -15480D47EC254D02391279E72A146A0834988FB0F8EF95573A359A4FD262E44E -79FA3F29C27CF9934B03881A8561C3943B2928967097613921B68E014BC60C93 -012446D334D3C539383A01371CF0CB6D3FE6E15955ACDA7F74C8E0F1DF3A2FB8 -D741248FCFD64378DF4DC90DE0256840826A6E0892A17E7E90AB1851A26D3D05 -F4C4DDCCC2A0B758B90C236C0BA05FDA098BA199228AFE1DBBCAFA7DA390E07D -61250CDE484356AF8B6A29E4595A98D0FEC0770B2A4ED9E5566C7FEE4E9409CA -99DB69F7353F599AA573A251F8BAE3D6A6ECFACF07CADBE1B63A5E55568C903D -0EF6B59B3484B13321C3ADD862A135F4305F3F2F21D188D7F1CFEDAE964AC4D2 -0250A68B5F36419E41AC852BC8E3FEE7259BDFFE250AA71009240C138C546574 -340F7C6395E904AAB07C05032FCA7BB333A9F95ED35B115E8449C26E8C6D8CA2 -99C1C38D652A5E14BD7E8F4B4F89D0EDEB082BBF8A0058E95934FBFEAF63A99E -076DF6A6259389002B0F4D44BC0D54FCAF8874606138F4DB1C39DE366938F12B -0018E1586F0284619962950D8A17343E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMBX10 -%!PS-AdobeFont-1.1: CMBX10 1.00B -%%CreationDate: 1992 Feb 19 19:54:06 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMBX10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 19 /acute put -dup 36 /dollar put -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 58 /colon put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 121 /y put -readonly def -/FontBBox{-301 -250 1164 946}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 -7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 -77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 -2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 -FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F -DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 -7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 -9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 -CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D -6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 -E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E -8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E -3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 -EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 -0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 -4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF -1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 -757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E -0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 -6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED -E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B -61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 -92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C -EEAF70E3B20C64D4C2B34A084B5770BAB2A8B7069E84EE1039A2E43E0DECBBEF -93189055A49EE66B5906996FBA7A2F052D44A9EAAB6DED6ACACBD4742887E4A8 -FA3D14EC60A2413277027F80FC9B4384EE6F9A1528F7E58A9CB23E3EDE43B06F -E978B03C604B50A5F91C47346DE482B3A922A5D0236FBC7C8B46BB2355A1E805 -C6E30E5B2156F4C26F2C5BEE2DB03051D5824E81313B77E67A9C745F9F696E81 -3BE9158CE6330EFB07FC15E8618153D1E4D5E46141140D9ED2D64A1706E81687 -7BFF07DA3877D7DAEFFD70643D1A32AEE36CC2C0B376F888AF34291450DCA410 -6A49A4D5E8C2D1CF884B6A975FCC00E143C634C2CAAD10F354EA13055C6C7F35 -65B4A26C6C28C08567BF5860D0930D7CCE02B8A16F7DB74AF6D8B7A401DF26D9 -B605F7DA453F60E8E89DF07C2A11C0E1F89B02D061B7C9EE6274B3669D367C6F -F13C336537B67F235795800CA8EF1EA8591DB59BDAECC087BD360B3B50F5CAEA -8BD4F3EE074773D8C969DDB7B64C6A7BE3956ADBECF9836714BC6E754FC09E57 -DFDD95F1A01A3106AC80DB85CE663658EE74C714E6297496EC70890CD6EA37F6 -148CE94413F1D6CE5A3592EF3F99297874E13A7829B3C18BA66F9D093C3DAAEA -AFEB3F714A5449DEB7DE2F19851B4E65DE0679B74D83F1ECA1FEE76D0AA42B5F -5DF085720F44508D5782551D7A7978F3681929E6EC093D73DDE8DE8A938C149E -7E436F574115EB02F9CBA61AB32B9F27625CBFF17E3AEDB5195B493A149B1449 -5EEE848F16BB2EA1457FB44A45453D9990FA4F9FB258AB55FBAA37CE0AF7AB18 -8C46E921805055944A406128C21CC380EDD623BC1FC5523E9FE0F860F4D5E543 -1E9615777533FF7F92D1F1233151D7EACC678C1448D79712A58F2ED9C68137DF -777A3403B563AA12F66BFFC69A9213D8E0990F3D44409A0F041E1F33662D0E2A -7ED134E654ACEF0B5F8C6FB271BBC84A300794A6EA89E6058A07F4A84C33DAE7 -967153F4C4E65357C34143980E9EF1C04FFDB7A683287B101AC4D7EF91B7D648 -141E4DB0E49806215706B1F4A5174C9EC19AE3C55E3191A9D7EAD3294E77818C -EC06549E92C90D62BF85EAEAE51E4D7B7D66B4481823B60F897D0DF74FA1B72C -6FC4C10EEEE3A3B686AEAF763059525C69BDE039B398A8115F5C53217FFA8280 -DD9A35A85E0DF9D40780E0E6D62E9AC1BF6BA810B780AD3D79CFE274CEFE48B0 -40F7B2369A722FFC2D5292C5B5CC8D29CB56B98AB182463EE08956A36219A079 -7E92BC33856ED2F4DD53ED0809CA4F368E41C1210E655BDB2E58BC91D520289A -07B72F3DA93330C41876A4F13ABD480EDCD34370F71F9BFE330C32D011AD62C7 -16DC3E93BF9AE378B09A0C3AA2A43A1C61B02ACBC9061C116C0AB42EB60BE12F -F80FC95C5C51CE79794C620B420C9DD83667150F6EAA923D0CB79A60CEC8B9F8 -3E7C0F58421A0C349525E14A369FC591BA86A3748B4618EA8BE788D5227FDA5F -AB37F8302DFCE43E3800BC945E9A96108301AA65DB2DFE6E371F1D24AA406458 -C3838FBFCF37E7F1B589D820F6D54818D2A0224D8A76A420DA12C56C7856BBC8 -3A3AE827418D1F3561CE924B03E75EC9E1318767385C09EEDD5152CD0932818E -5B5D087D070E53435F5A3A63FC5C25CF064F69AD37837C7808597FF974708DC1 -7ED44F6CED31A17EE951B7D86A1728BDD8B0D862601489A7140F932EFB90BD98 -4FC42505AE9F6CE40DCD06ACEC02DF178935876CB42DA115A08F9BD7DA700CCE -3B11AA257116B2E1FCCDCD7D6D692D3912D23DD521AA0CAD0A040ADDF0E27259 -40F6A9FB2F302732594F8ACF5369209B553ED9DDEA20CA52E42FF30569D80212 -01A544C966EF2F1EA5559CF516784B964A5C4668FBDD158DE9FC0E8C8F5A66EA -1CD364F124CE3569AD8CB4BAC0A9B9758AC7A9ADE015CCF6BEF9ACEF00F0DB2F -A9A7C2E5FD498FC0033CE4B5764D0B2B6BBA47D9927FB015152AE37802E598F3 -5CA408DBDBEAD7A02FB943460B80F02AF30FE483134DE7A89A70569E590BC20D -493B2EDDADE1CB532D51C268CAA0F98CAD9DCF4CD3F5FBBBDB16A2D65B415CC0 -59EDF3602478BCC8F7D2313203FBE416AFFB93D61871F5A9F10A6549DCAC851A -4FFDD7F922D1EE32F6F67E53967D7C12178F5AD3B8B483AF98E6A8959607562F -22CB9FB8EA545F007C34F3A1C7D3D560545E145A8E57FF58BFB486B844037C09 -1C219D212F4C13A1736AD7D55100BEB709D110C4B95D589B1471CF7E074CB3A4 -72C0E75E5CB831D092D7D872A34E373415A1D7DF6C0B52D9F1535A852874B282 -9BB014AFA74EA7A091E2FB1F3B3EF01D6F86C3F46AA79FA519489CEBB95AB5D8 -BDE011394DDAD57A318199FFF087A8C495D3D93025285FD85947D5297DB85333 -575E25F03FD37F8F85AC0A082B8E62CD160D93840EF8AA09F90D0BAE848C08D6 -DE2FB5F5DE2D6C4462B82C19868CE9E969EA4DFB9EDD2AE3F83EC0F238FBC1F8 -89192A00EA10936B77EC8A9E64109FA7EE534C395D415A106F65E09F512D7A56 -F4FBF94178527775519FC4B96E8EFE5F4F3AF95502B02DE37A065B438653FD0D -E4EA28180CF2C3C166070F69FFFAE746DD8E57B302DA740B4340222F597ADD7A -E49E33AD526598C818E5886EE0EA7263871585DCE480770E3D8B4B8B13EEDD0F -962C92E58088CAAC81A6A9BF7912485EF079D2DAED54A01635A4C16EAFC60FD2 -DE6F2EEB2DA95829A7028DB2F58983F4AFE39B58BE62A2A73B300B6732A981B1 -DEF8B09C43F22767946F11BCF1FCD38E32320B412D0BAF7E679ADAA54B28DE94 -9D78C58B0D4BC1CE211E395CD560A49D0F9A7A4329C9FCAAC6B6B84C46510657 -1ACB0238DFC93E208D389647E379A2636A640C00DD91CF5B4751817DE2958735 -F9E0EE7EF7115008A55EB83DC993CBA141888F4A2C9C51E888EE2F9D605DE520 -0CC0CAC86ED519F766C6A74EBA418A22647CD8D933F3BF23B75C96D445E57402 -BBF9E0302C546C094DD18372E64D85C42E6AC4D4AD13290BE6161314A56144AE -02DE38A0019173F1AAD039B9B3E7F1E7D123A10677A7B3E38465CC6EC3D64BBC -145275796055097F7176178F8872C20BB4CA7FF78D90090DBEC1FA708FAB9C8A -94376FAEEE7FAD0CC8B47D82AC78BFE2C2E2CAAF47D7CBF1912708D4FFBCD602 -09779152E0A031921640B5E13A02857653E84718155DF220E0B92385FEC5B006 -D22F936A6B604B241769E52A7028089163507B81D5B6AF5E55B991789F2FCD0E -60AA72063105ADCA6746EE997E9417A457EC9C9AFF9D1F82AF16F26051289374 -29340F530E3FEE1A93663D60BE0F64E58A669ADFD3259BC9C4CCE5825EA5C335 -133CC9CB740B6980FE711F77FEAF776CF5ABAFBAE54853F94E8F2356574555F0 -AB8DE9FB57768BB67C13D58DD33E2F176161164A48F628427EFC3B5F0A8F2427 -D58A7E8BFE8C7031EA69317676012924C3AFA986C3062BA67BE5A71359851EC1 -23D529291F51D4B9616C906D9E5EB72406D037B35AB82F5FA32068CE1B0DDB5E -FA5DED13B4AC002FCAFEBA0DE4F6B9CDD9CA7BDED2B894DF5F381CCDEF003B16 -55B99D680DC6C885B2B33FC8F3BA106B0902EEBBD3237D18FABDE44FF2EB163B -131578EBC15CE149894C5EE6578DF9D6708839A032490BCECD052E20A7C94367 -DB0F920AE0DD15372FD44423C4600A289060B39BB34FB0EA116788F9EE088D46 -172424C79482F2DD7F66FA5B01C9F5D0BE92456BFB89156BD93AED6EF1D7D891 -949962B3CB8D7D6273BE685CA811CC28B230782EAD939009D7DFC00E9285B108 -CCC7D9D6A43DCE13FF2059CBD423FBF87A40E694AED1CF6E0D9A12972C904EEC -C425AE9234F026393CF082E3BA95FB9FCEB37C35DA6FE24EF295CCE723C55FC7 -F6F9EC01A8D464A390E891C572293A15D6DCDDB56EE751524F7F19975E9FEC92 -43313C65E41D8561551EDAAC6D5AE5EBFB7DF225A6646B9A185DD7955B87F880 -F919BEC708EE9B5D386D8BD82745AA3F03DACBA1F58A70E4C30096FA18ACB48D -557FBD3763536FD5C19E75E150DAFBA4BBC3690D677FF20886F8836D53EC801E -AAE0AABFE8903DFA95AE1E27962CD337BB39A91CC69BCA07C1B0C0A7F93244A0 -63C454846DE0FCD53DF32ECACAAA5589B06D218597CF2076D59B7CA9EB78A67D -28B42DF3C1E286700D4AFD82A63D9BCEB2CAB1F1602DABAF1684328249F7B787 -1DB3A707CAA7C9EC158CA3574DA91F049A888053D64D393F20C52C30C15B3EFE -6E87A1351D0839826E0195AD8A334607649AA0A9847EF013757971E9461EB47B -289F74DFD982DF89019E0265FDD4A10AD14CD3EDD5D6555A9A6338C1CC83EA08 -CE3FDF7393CF854A9788CC31C30FF76918B9D694D00E746276EDA71AA2AF30CB -82CC3931F250AEE451E196ABA1FAD6F21D2628F7B1D80CC88FAAD65B515C3FEC -7C55048257F947F1D0F1FAE362D23BC9FA2FEEF3722744FABB62FC4AFBEEAD5A -CB2E2CE2A38529E30CE60A3A5872C24CCE96A5D55E5094ABA181B7A0F847D72A -BA111318B5DEF40B30BE6195CE55EF9DA4EF2823A58540951EF7F707DEE0E6C2 -993E63470DC417F365EA6BE16611E03CD04BDFFADEF0BD7F91BE48AD0E0E8B7A -2A0A6EF99328287344684F5AFC534E01730826B6B80C511ED31F3D3B8D17841B -468452FBB53F059624C5746659552EA69A4EDAFA627AC8EF574D996A421E4D39 -C62690AEEDF4775F150447EBC3FF6FBFFD853CA384864F2B73302B3CB72F3E2E -7B7855C7A9B106238946B75C3A5807A597C4FAB43E624093C6AD508D3F105C77 -25D7C76F35DDCB1C01E4212D90A7AEDC5F1F2DE963113967B512D4DF995312F4 -9981987A4CC089BE75D34EE2DEE750C346D8D8ECAB28CC25D871B62AF82D2C1F -0040F9D102F166E25C649E69F9D7CD31F2FD018956E6038692C57D849887F52A -F06D991D0A889A07D3793A055A887E8E12C61AC168C80591F6789D8D1D68B395 -27219CC88670B013DCAD7EF948A7C1F7085621A397D35C3AED7C8C3B0D3AE829 -253310A9DDF1ED9F0A724091BA58E7B287BCBBB0542896EE6984BD224F413057 -1CDFF59B22C30E04E8C2F1521C01E3922819AB0D2812545688EFA078F31DD367 -C1F4E7730B4D1B6DD06E13AA4EF98FCC3FE27B38151DFAAB1D0246A90F19A551 -D098EBDBA701C465052C13AAF120CD03A3207383EF6CBF2475FB4DEBB47CE59E -68E915611C92CB85904EDA1E5B9F221025C6C5156FEABC2D361DDAE74424C730 -9E5BD34D77784928BFB53D163BD1C7DDE31F5A1E391DA1218D99287B95A1732B -316BF5FD63B237A3B1B7AC39522C41BCC109020DE6A8F683D856EF2E6D2F3158 -8A978267A0DCCDB9E6C4E4A793FBF2FC49647DBD6601FB7F59D77FF18DCEEBC9 -456A9F46AF2C3B5A4FE0ADFE49BD1CC6434B59415E6B783B079C94DB69005148 -1BC9897FE8E1196F41DA53F2261ED3CAB21D0EA3B3E85EE4BDB280F8740D2AC9 -85B0799AB4586E3B8B8D693B5975943D9D217B8B331E9DDEDB482BAA1121174E -C0F93158A672DA9AFC520CFB4BBF7A8ACA2FAAB5714C7D182D09367304A6E0D7 -BEA0D00E7204FA4AD608B12E0A2C3708DA6E3BE762BF189FDD8781B6E647F8CA -2E745B58CD65B2DEA153A707697216B6C1E3E44AC6FD29E71901D8E45E92AED3 -259A0434957ADAF00C28C3F1F7E31B25C5E248BE9659F0DC71FBB71057871848 -8872954943AECD35C954CD5C45A3E8AADCD16F28CCC7F06EBE7C54348A2D57A0 -1FEF1F7C6FF89001BFD7E90C17695BFD89EF9E1E4EF27DDCAA3DB1405CAD5D3F -D93E8C76596EA4B5F3AE567D9EFA1F8A166D0EB66010FE8298DF313D55786E77 -7E249978C56096C200D53A255B0EC5C4BF9B9C1BBF40D114E8742BC16041A5F1 -CAEA142873E106E3972E6DB3044A5A0BD5C5F729991EB7F0CD2615F7526144A0 -CAF82F826610D30824A5A20A9020ECF95742E79F4EAB6DC0DA8B8C0CB0823A46 -14C71EFA8722F7E1B8983DA273F676080C3B37E9EBDCCF0FCCC552C0BC7DAB1C -CACED3ED8A6E4F579B0CC2D6E83CF63BDF068E3750DCB74EB1B1D09A2D0AC2CE -E5DE1E51A328687B1D40B7C011A0DF846C330CE4F038727C3BF4DE1CD061B5A7 -E5DE34583149FA8AE50EF5D016F5EF062B32CA4DDB1A33CAA9E8DF666E2475F1 -512A72EE0DF61AD226368A33F85E419E50A8E032293EB3925BAF909A2AE0E647 -81C9A413D670CFFF4F93E3F6F4775CE58E982B945329C30481ADB922C6E17274 -F7636E1789B101662F5689519334046F48BBC27479522BDE80BD9C5EE6D1BE08 -1995B10936BD8AC9D7EA990F51D9A96A1A5D7718B2A64117C88CAEFF73F60112 -993CB70B0FEE7DAAE9F6CFBA9F991DA740C041DCCCC4AE132DED46A45A4552C1 -808CC0FFB9A3AC893EF4EA85DDDA4E7651B617BC79088376B1D15F3F1B9154D2 -3AB2AE51D7E654F95E87070909087AE6B716D37A4ED3D8D359EA9BC211736C08 -6EE76436477578E23BC81CBE87D326D57EE33A172BCA70856877970E80114F30 -8E5F85A908352425B2CCDB5697CFE2EF90465642FF498CCF0FD7A6A77068172D -9AEFBF70F58A3FB26C0CDB83C83255B6506F3012EA903F8E89B75CBE99BC3713 -E1FD46ABF2850ACA11561F9BBEFD0B851F953DBE273D2736D1F370768C89825B -2994D3DE37E086813FC462F696902455A1A1A947DFB91629FB1C62531F01A4CC -2A74FCD447F3EA20EF0418941C251190EBECBC87DDEB852EE693CEEE2B89E2DC -237416451ECB9291D7F2C0E68F3447B72392438B7C42A1B921A742BCF5DA0B58 -836BED4BF5B234325AA1EB97ED9A8E6CD13ADD33DE2C9283CF46DACEDE73A35A -1675EEAAC0D8F8FC0CF023581ACB1D0241B477390395DBADAC3C3815CC55B6D1 -DB62D7AD5AE09BA334CCAC1323802CA544A75CE8E324CDA9787255CB60566D6B -6DC410F02C1357DDF54910FA24E6B8B53E4DDEC2028D357B0A51C0CE6A073EE4 -638C2C756E43D59269E67879CC7848C63ADD63412AB0EB9246DF01C8F85ADB37 -FEF0C7D637D6F40FCD92C4CE62B6F0D62292F84CDE1A70F596142B16F7E76407 -7A6ECA2F8A49CC56ED141963EFC7EFB72C02D04DD52CB6E865E94AA41238C971 -3F76D94EE30ACEED4321E70110E7F3A1595244FE7A9669C948A048D598AC0E65 -F6C7B52A5D7742C1B105F9C86C68E592F65D541CFAD7FA0085DA65F7F9B566B7 -9298CADC6B3921FC9029C5213F8834866A752E938D2DB8FFBB071A3F24CBB7CC -99F5E3CD857A74D8974A443071B4E4C86CD7E700B6219C2ECF568CEA17A9DF39 -3B4FF618889CD94B59239C3F4F7C7658DE5421DF18CDA1F5854B73782651023A -5F474AA8D6181E37C60C95F19A6990C4E4432D2336CB8EB361F9E5AAD3B7E2D5 -350959A1F309BF66A1A1569247407D9979F99BC85AFD41D44D8B8982F7071B27 -B31A8FDFA4D4484F6E3EDC218904D7B11D4EF38204AE27DC669F35F7CBCCB01E -4B79845D084998E34B830F5600AF514E58D154557F13737AF20D5432BDDF5936 -D07F72C83FB5AE846BD8B083E0AAA5FDC73F4EF305ADD1C03CCA924CBB35C252 -352A845DF3D2159EED08E9EAB16647515E5930DAEBEDE91EF946787ACBA4BFA2 -BA898C60FFC0696A9764A51D01E31B6B39F22D289B4DD78D02D85D7FFFB3C3C4 -52CA50C8874F3C5557C22D7EC19236B0C25D89A6A9C64B2ED30932DF1D7D16FB -278EE0F2F86B4F0130B5FA464C8257465F18F72FF723F67A438014D1823EB70F -008077C1E6BC7D4E64D257E57A9891E052A5C2E0E8F03AEAE1FDCEE4D340F104 -583391A709680C96EA751B85951C99CBDD2D7CDEEFF6E4D747CE5D0D18599327 -AC37FE3AB145C19B76A511C0B440C98323B4F5941CE43979523DCC9640B346C2 -9C17C7C0D83D8ECE3D08E45267D3B4E2AFD78535ECD8CD65931D8E402A024C76 -6B5FADC434AD3D70E3538008BB3088EA45D7973E559581740258CC81E56F96E4 -E396A070BCD36CCF68623F05A817634D7C20BBD4313E36ADAFA35B412DD114A3 -87D0D92B6FA2EEB56779CF5A8038BBAF6C22A516C5D4CD09BBE9CD6F292C4F30 -0D078EE1EBD47EC7AF11EAEF72555F940B59942CE640BB461D529B3DD7DC59DE -83B869FD97A69A92D01166B47DAEC3BA68DC8E314D8988F0A313FB0E971E20D1 -5C30A9225E2F537B23FFF0D9CE204B87A96E5B4E502BFBC67DBCA89E8C938F4C -0F1712B956A6CE28D508359914E634DF70994A9430D90E9358BDE2800A05AD21 -3DA296BEA7E9C501908BD0DEA98436FE603B787FCB265AF2F69D0AF42A3F8D98 -AF22321E0CEEDDFAC5223B86E5E7E04FD4EED7ECE93255C2D546F8B423FF8DE6 -C7A6915AC6357A5FCD42D4262C9B06FAC29BC958CB7000F61B03C3C373295DE1 -92DB914B0FCC9D774E357A8B3AA97594D86484E056BCCE7C875ABDC6E04BFA6C -F23CD3C39F7A5E652F9E7B1825258B791E840911685C5DB9EE0317229CAB1FAC -BD966C2C1C947E84B9721A9C098AFE5C67EC3C0CD18E249D172E8F353896D153 -ECC2085BF67478C1A62C186283ECDD8F8ED860D88C72B3D84F116DB67AA63274 -302BBEAF09C4F5D04F2407BF9A43403B97FFB4672569B5E4A018CA9F412A7456 -728F70A0CC6A14E0EF7DA545D530BDB37CE47E65D836E211DFD18A0099356A35 -B68245F0ABB1D3653FCEB198083485B91F33C5C3D2AA2C5B3F07DBE2901FF1B3 -CEB2BEF981FE56D8554758720B4B984A509F8AEF743949ECB64310F87DA5B522 -A5BA72E3A5E1DB9EE74F912F1E70398D7D6699F670B0E1DC4C2F76D7B9D5CFFE -E70B75564D3E930077DD78FCC47C55FB783B1E48901324CB5CF178B8583CB540 -BF03FC20E649F1C4BE64F1EE83B9722EF6E1447AD95F821378DEBBC0D846BDFB -4D6F42800C967E6CBF3ACFE43A0A634F2F74DF741419344E838721FE98FF6C04 -79C8D8B5929D6D3F73E856F2085AE5C5CB4B028B091B211BFE3E9629B1C37772 -749960BFC86C941A4B3FFC4552D15B4CF9F2C9D44767CD34D134469FD2BADCC6 -77E651AD7C0E31DBAAA712A08080FE248AC5E592F8049A07FA1114A75C481DE4 -CD775562068C95B2B1D4B3242E5C43C5E5B7D6F5F57E1FF4134F8DB69F825F47 -0548185608CFE84477ABA83256F6B8BBBE668E8C525387D8D2448976E28BA5B1 -342148FFAF5903756F07F8F71DC9F323CB7448ED6C1FBF7CB916BACE2BCF1C71 -2C5DCDF9E344BF509AFAC07A0A48E819708927B36AB4EDA1D85782DF76D20280 -ECFCFC7003E60DE083654CB094F0216D7D8028DEB3C1F622EF341272FAFD9449 -3424D8428F4C8A51353F494C1E14534174F3F901C36E7743FBB03A665732D738 -4F78FB4AEB235F68CFD835818268C099317D49B8F794399CF8265ADF1120CD66 -75B2F9A5BAF86F4087CD1D18B168F3C555FC5C2FF0DC84CC14E6E4D92A366B66 -83C4E672E166ED8CEC9754EFC094AFDD263355A5FC1A81AD06ACA951CFF941C1 -93B4B036933CA8CE859C8073AD96CA9D2B706A0B17368F350F0BB90303766D59 -1D7551ADB6C952F499864B2B48790665243350A1294CA9FAE96DE3B4E160DDFF -86E47810B8F00E46BA2008532C238525273C1EE87D706901EE95B73A6EF33DAF -1DB033BAEC49324F2F4A26F510FDDF44F3F1884CD4D56751C144A2106EF7C63A -C6D5CB11307FAB4C66D83D3E347DB503E3C98A49763B748B8EC5DA1C42167F5F -D215865D84D7E2B01F94F62400F1FD81EB194CB80A4B33C1A5C5808164D8AAAE -D261DDBFE916BE95BCE0D1B9936A36CC6E75DB412D4291EEFEB509053453FF14 -8D5F081E5FE7225C94D9627878D66BA4B4965DB12C1EB17ABB0A2D87A948292D -D051934F33CCC97CC09548282BD24F04E37B724719138C0269DE4EC3E056FA2F -CBCE254B977F1EA5B6CF56D590F5066911300AE3632E97B4807BD7947530D2D5 -1DE251686C5FEF4A851FE9AEA61BE752E37E5F5501B878BDBE054CA1516D0DB7 -54CEF32EAD3D936315C8702E5048B9109A6036FF5159FA3A0675A469CAA1959B -A33B6322D0CC76A5B30546D41C3CF17B67B8E7FAD383D16F14620698749EC178 -80048C97D029E229BDF6227E4FC6666606FBF3673FB8205D5DCF3F5A83313227 -D1295134EE8C71E00DEC1487994483E9B81A642C53A8198EF57DDA9274FBCE4C -6628EEC75C302F7ED41D10CB5F1B2AA4B12A5415E4510D25B1F576CC16C8F9A6 -5ADEE2248A1B46DDB499D779F8A63E09F674E27F74D53AB4642FBE6615094FF7 -B8040EBA84D850675C55AED0C9E1C4153428E1FC7AA8D9335B42BBB41C1C779B -8717A00E96D2B9B4138DA60D818A8A303367CEEFB73A9DC01E24A7F160CD9AD9 -D375A71CAE6115FF29A61796418CC67255735BA3471D6542ACE20572B5E2C9A7 -494AB3EF0C728D7EFB42FE593A7F39821061B599A0772181D74438C5C7766CBB -18D035AAA6A54F9922972E44D7AEF4AEC40CB0301FCEE83E1FE18196114EA8A0 -F7C91BC4339F87CD35A68ACDA8FC9F10E1386A040D910BAD5767C8DB06F5CC53 -35FA824C791B0870312C89048EA85093F0BE8FB4FD778BA03C048209D29BB315 -D601635271F36B8D38F83E8069482FDAE6C74249BF1CA70058C2BC8CDFB7C7D0 -9D19E903961561A4DE07D412030BB1748DD16F9DF7EE1CD8673B5DDC9CBB4DDA -81716505A58E2C6E7EAEB44F7BC67FFA1A8C0583A92AB1710B618FE04312C778 -878DE8282AF5EE543222716741000EFD5267AD23DBB8D17B354AD4255D1625D8 -FE10341752CA2896F2E8A045B179A083595332706A62C34035AAF0D54F529A87 -AC9D67975E894EB72C5F15CAF1EA10B500CA39AFB32E3CF8A3332DBE41B41EBE -3E0C9D2D68EADEC7F175885AFAF975DF62225114CCC3030D6D93F0C7FBBB2D43 -B4137595D7337DB70A5C763B9CBF597668A5BF3181473785A20D959750642B32 -04709F214C67F2E84943B39CBE069E84EE7514EEA255F5919750DB4A2D497AD5 -BCE3E4836DBF351BCC9AE7B05F8562B3411D3B29B807882AFDD951AB1987C040 -B21B661F8F9F37B724648CCE293CEBC503E812D03B366E18BD8E20F91AD432CC -3A569F63867572311E492AD3A72B67B9DCE970CC21DF69492F2B60BF59AE176B -24118C7A1350A243143600FF6E83C7762581746ED1D1FD64BA1A1E8DDB4888AC -F2A2A33A81730F2E26DFE89631EE000C0D99EE8E8BB0E3A37614A4F8631ED982 -002CCC4DB0A2AAC85688A56D48D701C99321CFC5CE97BD3193A8925F3A4E19E9 -A34E7F53D9535359FCC9599BD30466D5EF6A64DD80F981BE451A3E34EDC1C278 -BB9305EFB756371853152D313CBE01808F60CAF2D894BF5D5905A54DA745D2D4 -29E3876D1E7A187BAE9D6207AA1F70222B7272A863F05EC0D29EA4562B7DEDCF -66B369DA7FE7C7CF8D433A75D45486F864CC7BD0FBE940FEE9068C9F7B41ABF5 -97BE7ED06EBBE935C5135967A89EB2182457374C83C0D795D50A6ADC0384DB46 -BBADE8D2CE0A37FEB55F28425C25F26049590EECE560D135C8C7F5A4BFFA0AC2 -3ED2FF71A36867C426D8B9C9 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR12 -%!PS-AdobeFont-1.1: CMR12 1.0 -%%CreationDate: 1991 Aug 20 16:38:05 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 55 /seven put -dup 97 /a put -dup 109 /m put -dup 114 /r put -dup 115 /s put -readonly def -/FontBBox{-34 -251 988 750}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C -68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 -3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E -59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 -51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 -DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A -AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F -45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 -821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE -96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D -9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 -26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 -140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 -1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 -1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB -377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A -0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03 -5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4 -ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15 -FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CEB939AD2EEB -4370BA2C96960CE9E6882316268ABAF1023ED9D2D13969EF9E53F52BC143383C -AFC14F27A7530C1EF399707711B3AD971D9F57DE244315EED5A16F9CB6AC1524 -65C8C8458FB03FB8619B8A925DCA3AB2518F044DA696A4D6F8DAD182E1C15D7B -C108C9538896A23A043EE66E18808902D215E82AEBA183D813D46B89A3FC847B -A7F6E0082DE9AD8C0A83F521219955FE964A660826FE921E1EA12D7B34D65EAB -B5E40E74A9666CBEBBFCB9A26A0526B72AF9F31F6A04305FA0284816DDEA6D1A -5786756F613EF9040290DD2D2B27B88ECC0A1FE0DCC2035211919CBCD2DD7A8F -35EF236D4E0749256874CDF5BA703F0C7B49EC0C9EB5C65AE1E7F7288452C619 -E013FCD5D5D5F8A517DA7305F04B4EE61B12A1A2A26C08A46982A7D1EEA07D01 -809552DB4B07FB6EE5A798324C57FC6C2A7D31D102E1BD5F296E9051464CA3CD -F37695EB0EB77BB83F258039FCA21B8252F70CE5D3D9D74E452617B055E19B5B -600B421C921B026BC7356AF63F2690C62B1CD9E479D62EF8F964D9BC29AE1447 -F096FA9ECF5E52F1F7E2FB34B02BDDE6C210D3A43AAADC40636AE8271DF2174A -A63236C4BEA8FD7A6E841B4AEC2CADAA7FC481A16322BEBF01A31E4CD5A577C7 -EEA43211AC7C2C40A6EEEEE7BEEFA146BC3322E6A9E157641A67823CB2661C97 -07C1DE919CF5D1EB4550B08A8452972330B08C87A6AC91BB519667CF32F2885E -71D69B398E7C59F815FA730BAFDD7F54260EEE5BBF6219A7A39D65B0624C9555 -CD34EAE5E7E9AA681B06C1EA575A6C41DD490E0FA258A93766707B6C8A35638A -653E9244B25045CC2381F4998278F9844FF704AC420696AA6E18C8EA78D98163 -52ED5CDADE35979C4CEFDCA0B7C1A26211F04907D036016EE8A1F40BC4143093 -19D3F937DD6D6328882E40141CA000D42EDCD4D47A5516E5FD5205CB31F88D21 -8E855C79000D919BBFDBB843C29FE353B33833A36A6C76581DA65B8037DB5DD5 -1BA21BF81BFABEE02759C35002E9A0DDC78D460989B8948527120ECBCF5881F9 -F035B80F9269B0A846780272A15B14204B8C03A1A135092E31F162EE4BAF20BE -D3C1EDC193FFDA52128313E51CD76189A911E82207A822DDF92F6E821A75BC5F -762E99FD94B1148E71E873C01B46C0158170047A0E6BF5962863113893C71AF0 -FA1BB71520E364053B404B3D912E011D226A95C7ACFB4A1E7166F4B9BA67B4F7 -908FFA34D2C2199F7E5309E6DC0C76FC502D88752F6BEA537262DEC294E3CB05 -E511CA14CDF663D8745BF6703AC16FD61B43F7C3C6A903AE586FA783EA4515FD -B3CC71B68757A66338CD91E4A09DAFEF053737D76A1A9B32BAC308021E7720A7 -8E0A341A4BA2DCAD4E0112DE60DE99539FA7B0EE73CE05BB245A1F5CFE242333 -8BFA62C67C95F0843B7369BD117C489DE934BB69D927069C072920398CC2DAB8 -62101720901D3DA6465303ABB9C19525DBBA151D0F1D8BAF70121CD368934EFB -A68A210B8FD29391D25ACF6D77969768CF3C008DDDE81E2869083F86463FBE15 -E43370010EF7B374F3CBE74E86E80985B498014ABB6D28188DC087973B2AF56B -71C3D7A500949D5950E745C3718317BD7E22F54D169EE7C702EA4C37AAFC853B -2B6575BF17C3B0A910E47AB0F85C0F296B161F77E2D7E7967BE4951510732D40 -96F8C2B6D322DC5709576DC8F2E270822AE3A0C38DC54AE36A1D612D356C1347 -6E4A9C592787048C21E2D833263B65C8E4427B64AADD32C311361B018994ACC2 -ED31DE81A87D2944190F1EC792E28663DBDA732BBB7C1B39E0C9B652BC2519A9 -78AE3F205990732DB91653B03D317CEBACAB797FDFF3F01BB33C5B78B86D8783 -7AFF1ED5B3163983678D361A2B3CBD4CA1EEFDFC587E6FE91F62506F235109B6 -8E51CB8295F64F6C7E69CAE94466DE4B186B50D5551D51316DF9AB44EE853071 -B6FB652DB8B5C09EC2F4FFF2E231955CB58224DD864AB8D71468EEB44D967276 -7F048872912A3B92B0F54D5ABD5AD013B4BF2706D53FE5ADE3882F71C296F3E1 -35F4AF44A0B84D7840BFD29D466FC2D2F4E8C81B2B69C8EE5C2DAD4C1678F026 -144B7FE3A72CFAB5E1950EE2F8EAD198EED539DDCAB4840FB8ADB9ECCF6B31B7 -39B70FEE5F3BA9E758DFD9ECE3A627FB99495BCCEF3475FB360F235ED73DC910 -A787A5C59AE1AB0777ED3D08E5202A63E090D88B13C4752DC4D95113A259787E -4C42D6C564AC849D5F9780D8EF59CE68268D052563C19581B06F7789AB1DEC3F -EAC624CF6DDD2A821ED46B01F14A668F7ABE74A5529C94F086DB03C71EF817CA -AD815C4D3588F99AB3A90B53EC855DDA69D299CA7C6EFCD2 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMR17 -%!PS-AdobeFont-1.1: CMR17 1.0 -%%CreationDate: 1991 Aug 20 16:38:24 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR17) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMR17 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 39 /quoteright put -dup 45 /hyphen put -dup 65 /A put -dup 70 /F put -dup 76 /L put -dup 79 /O put -dup 82 /R put -dup 87 /W put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 122 /z put -readonly def -/FontBBox{-33 -250 945 749}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 -A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 -BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 -96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC -9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 -E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A -497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 -4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD -3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF -B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 -C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 -9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F -83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 -A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B -246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A -7736A960F72AC01F733A11023832CD68FB6288A5977743F6F3F23E0C1657CF5D -E8374835BDBD2DED3690C84A1EBB8E2383A5E49E610B6F5F0F5F5EC43CFD16FF -24FEEFB92425CCB577E17FDE4EA6C50E1448DC5726A21888E25B6D6B52DA3D3C -E4C4C6A73C176DFEB60B6B6191B336AC4F5BAA123E1B3B6FAE4B3FA9DC8F7E39 -335277EF2294315BE95F64EBDB1F393B293FD0FDB9DEE6C89082232013130D28 -9234FF12DF47D454558A1EE8603B2832772E5CA07D18B34A4763D5B890F7173F -B8FD38B08F847FE570367C2500AA592E8561878A86491A611865254BA6BE10DD -700C01A3F0D254A5AA0ADBC4DA708CC9909EE3B1692657B5A07BF14258EEE82A -137F69C604328C9E5B0F08F0C2F9A9E805CB3B78BD67578F2468DA55B04C5602 -47A6191304EA7CD9C8E48C02D0DBD1FE8CAF94EB5A41EE79C5989E3DCF332E0C -C15A728C039FE5FB62F6E38B496E9EB7FC4DC700408E90DDB5585FF577079F94 -B4E90C8CE6DC50C1AA95F6122C334614199AD3C4E665C978E487DD75504449BC -51586C840BC8896F38A17B41614817AF7855558578F7C3E185C523E10156BE88 -85BF39E5762F3485EB514EA2ECC3636EC62B4B6A8264F2833247FF346CB2F9E7 -A60B614898EFBCF22DC8ABFBE9124AC221ADC674209C3E008F48CFF08950DB97 -A467AAFF342F299F24EE591282FE7A0683CAC644AD052C6AE6FEE2093286820A -1B300A7B807CE97A8AE52914D5B59529AF3549D5D7E66A82D7D3FF2447922C1D -CD5686E54BADBDBA8A6C7BB3CF398616A993058E89F4C1BE85696A780B0B9BF8 -4A4D713CCD7DE2B305407FF0B453507B3358443FA4218550A893CAB19E69B85F -AA7E14C6CCAE0BAC75A8848420F36B2A81903CB97527CAB8958D5B168CFBB1E3 -3FFCE29907DE48683ED44B0682FD00C9C4E9160B324596E092DE8DA82D985B84 -7EBEC02E90C23EB9DDBC078E37ED09A882ED52EDF3DE1778D9DC0C6E23202F54 -FF45BB75860360C4A4A191014DF0D8F72DE57B79A7EDB8C52306217C11545A50 -28C9CFA7694C8523544E15E364E3909089872528B191CE387B3EBD9E5C92609A -71C221C41EB2E4DEE5AB10D44746C8E8D57D5710F5E51D4C5ADADE0462CA1C6E -798812EC34CD814C0792DEAC9822367468020311E7791FE7DAB1732EDE77F295 -72BB1C054A8997E3756C6DC7A2BFB7B0A703EA991872FFABD8F03DBD72017FF5 -6216FD51066BE58C345D713218D73A9D32E54931FC794F5F464F17D0F76769DE -0A9BEF54CD93899972807164A286B6DDCF966646B26E93483B504C57B5106300 -DDB17C126CBF0C324F7B9B2F7E296AE4FEACFC248A55C607B075E5C265F00DAC -BE7D3FE89941F270BC33DC1462A42A97FD5201A4AD94EC4C93B283E374C238A0 -D0832624C868FB36749A117030A6BA50F0F201D0F0C46FCFC1808B9B8D0E84B8 -20377A74E1AD9DE13FD281D9450467C5FC28EEBD9DC47F5180FDD007DC16ACEB -42A2B2B8520ABFE8F89D2C54EB9AC77284FA19B6812999E14C4512A43A3166E2 -F6B46E8D9E021691B0C02969558B00714B0DB60BFA58D64D86707E7BECA25A89 -2BFD8ECDC6F009D2DB760E57CDF17579EAB32D86CC5657CEDE8D8753F2D5055A -26C4F19519023FE8AA01BF84D0829D9C316F2061487CC5F4309FB8707D8F8FCA -7340D30EAACEFFC78E7FC94E6D3BC634294B3DE805DA5C44BAA53056754ADA43 -1737E9EA0FE90D2AD000A6BCCFAAF21266AF7D81D878AB96C1367FF462022559 -6266E00EDCE370F06FC755C4D4F0B5EE3C2779D922EE3750EA75199BAB8D50F6 -F6D0AECD37440413249E41C339290C346EC53E530428592BFF99A43EFC69C784 -3F0B877A34BB0690DEB5104413E1B59C89070235212216DBF040FD1205486C69 -C673AAA2376AA7047124AA3508BB89784DE93A2E934533D5153235A6C5D23173 -B6B385566DCF0B313B59ABCD3428BAA592165389CE18E40E959DFDC17F88F998 -FA4D9AA18E98FAB3F92448B4A5D28B4102A4359770DC554BA58DE980F60D2305 -15C612737EAC879401BA470508AEC08397019C14E1C34244B0FE994843FCE823 -719EC52F6E00B75675FC3D3FC0B1F2EDB0B37BAAA2A0EC1389F395D3F4AD6EB2 -7CD220661BAC0E5438E80D8D64CD68230B07085DC27306B956F542D479EE7CF3 -FDFB6FC9DFA01C25792ADA79575324AF12F4447DA2947957FBE640092DDEB879 -5BE484280D01DD910B6D69282E772C9140F49B2742651DCA95B7EAAC55CE08B5 -13FD71F51B11F7FF7021AF93FEE2A6FF5A6223B155A4D1F92E99C576088EB402 -519C9189B7D5D345CFA9347845D916F2ECA2C6B4142EE4B33C13F86D18ACE6E1 -9CE6DAB6B6F336197E4EC25ED0B38D7DC087A45C32B520454E42E248D18A4F11 -DEDF9778A9BB1FDC30768B3DC7E5A39FD51434223B46716387F7A379182B21C7 -CAB5A86AC0AD2900E20EB2566190931E7E86C548F88DC1B55C8B80879E84E7E3 -0B5739D30B7FE204E59D281670EC90E986AC08BD38230E9A341A460149702565 -214704BDDC9176033F68721B3D0C6118484BC8D06B15CB3D8531E19AAC3B3A3E -4F44BF226AA4770612D4B3537988141D895CBD36718996ECA4138F10EFBA52A4 -1F89FDB0450D353E0B5F2BA4BC42372B12DD4ACA8521EF5E9C1DF0A575C4AD65 -379F55A3725DFB5C6D8C14B7B8BC22AEDF86886F95E2CB00134C55DB9CB49981 -CF944A6F2B744806FEED501FFCCBEE919F6B1E2973881A0941D9AF8E6781491A -0C32555340FD74545C59D6886619F873207E9961516E26AD9241C2BAFED73CF4 -9DB9995BBEFC11174B83DB92E3E329A7817DB69DF9DF73CC18B369F0C060EFEA -B8D36C848A571210EE2A2AEC9B341F0E8AD42D99702FE7442E2DA2111DB02444 -E0C0C2BD78E6E6268EE7922FBE5202F186C0FF0FF59071ED4BD5E8E3606EEF7C -302A5B8A4686CC8EE8D5D6EC6716103D156FFC7B8DA9D7180918EA1464543DFA -96B98E10C561E05C6BC273B5C3B55D4A58357E1C6DF714F5345B8225F582D978 -793B743C53485EDDBFEAB2E2E8827FF86F1891AE4683EABBFEF7265B23254B57 -98FDEAD48C78800991815269E9F029A7A095DDCAA3BBF39D8186CE1A4F83463B -A176DA3E3CB4AEA081BE712543BBD541A73671E44D7A6141AB3E629DE47EA084 -BB7D9EE21C8A895960FAA8B4EAA51BEAB75E8E08D4BACD3C0BD48956BE5DD244 -94E1C304AEDB176FF7D74D0E42F3475C9E500D4F6D2C49AEF88C3969A08DFA04 -C985CAFED0983FF889341CFFA5BAB503A33F21252B56D3AC1E688871A645BA49 -76DAA7AA27E605D1B6B3D7E3908A55D1579E700512C5E85FD4FF22F977063AF9 -B4906B791A6C5052B70B4CABAB353C68F6273D47708C871FB6D9B7AE2EFE1867 -830FE235F724072DA524A2B3CB4B64B40DE23C7700EE771F0E603E7C2321BE21 -F86601E481AA131BE8ED78F0099B56587F301B59DAD2AC84175B806E3B2FF14D -6D3F7545B656173C68D813B22D6C07F9457FACEEB2B4524C034F9663E8DBFADF -556CBF171715929F315E271F1E8F0828523D8CE00E875260FE7BF156EA661B37 -1C1ACB041A7145A2E7C9085477D60BBA7176892BA16A65F5C769586281F93629 -269BBA849FD795648D8A78E6F0B49758B70C52DE747071076D994972B2B4AA0D -8308D55B2B70E64CBA7576D90C07D4D026255E70E7C1ED3F1D4B5E1FA63B1270 -136D2FA2AFED86EC1A2B33126B2650077DF2545AB0E93A578E846E9BE957350B -AB6B4545EDAE7114C2043DA611FDC14EE57341E0A186E89A87BEB9AC325B68D4 -12C366E1F55F865C4DC08D6F495324505F54EF25FE095878929A1A12D1E9D65B -B4FCE8F49CDE56B57DB3DB98239C05E4E3212F0E49DE66C60690021C4FD89E0F -76936ABC611CE8BCD007093F0FD9BB44D3A96CEE2FF315F61757FD230D70FA59 -6E97772DCD8C97CA2A41B7EC8155089CA0ABE2BBE4FE34E23A817198FA9B9950 -E7FF865182FFAD297584F5B124674B7245B11F0262A605B7B113C4E64B5C90FA -1FCFB30FE868A71B558DFE3C39BCB53FC058EABA5F257A467521096772B103DA -320FC5C1F8C68A85537DE55B26BDE4B0AEFFB406EDACE2FFA3F47D47968BF947 -4B369F88DF79C6317AF228E8CA78E9372CBB935C7469C25B59B67653B188A06C -49FAFE69BD5D933E2C4DE9B1207A7314931FD59C06C3A0EFF498140FF5E5A761 -F2E2ABB6CB4A9F8F25737551D2F5828649C64BD8C138528263793C663B9F550D -CB4F7AF7E007F677A50E29891452D56F654F30AD5FB93C46A86E03CDB4CB379A -4378C69E1C48CD65BC06918D149E529EE07A9DB2B9D6C5E951CD90CAF69C2744 -85064E6D9565F9F4C337E492C28AAB023D78B2A72AEC70392F89F15D69616FEC -E74774C9E8995EB344A88B6B86ECB9ABABFCFAC17041554C30F1612B072E261A -12326F2768BA7301FDF714039B7FCAE28D8D826573B48B9FD1A2F48A570C3443 -05D1AD4D1290773FDA57D3348D8D2EE3B13D587E7F2A5EDEC4D089F88633BF15 -1DE1907A9104FB30E8A06DB14FF31C6211D14AE824A8AC9D46ABEFA42CACD26C -D9F4BE702C46FF3F3B916EA275E6B4BA5C868ECBE76728C3EEDCE84CB9BBFB63 -1CE927FE28AAE0925BE97C450FB410E63B0A76350559DDBFA5E61216B289750C -DCBCEBCEEBAE0B9788760F581B4DE35184968D85F716BF65EEE3896DE814713D -B0958CA9D120ABF2776830D3535DCB1866428EC9D01702F8372E27E5A2E57446 -0572381313C196FD1E86AEBB69E917D331E63C9DBB30E2D5F28360B2D3C002F4 -08F945B48D5F5B740071C39779ED7FF1AEFB8D2DE646EE0A5BADC9634CBD3812 -64615760C5BCEAC7F714A14682358B116855E098B007925A3E52D59DB0D18CC2 -FABFA3B8824E65C765A858EFA69AB3EA2AF6116937256D131D565CAE163E832C -CC3C91102FF3487087EFCE11B21778F7CBF8F71D04C66B6314A6857D1FB7F127 -C83A5C9C2CAF3BC8A3663F7EEEFF0432AEDB16C77034088071026D5AD497D517 -40297AC8E77B69FD44FB1E2ECC96B5ACE9504C7C92633535E8AC8E186EEE1183 -A2ACC6E3F8ED98C0BF04E227F1E5EB273C28DAB32246F163BFCA0E1455831E25 -39D7AEAB974C4E1218973954E1A6E46551A9FE1334FA483E9DD671C2445EBDA2 -B9503AD86BFE89B4FF5B6F49618C835B82C0380F -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -TeXDict begin 40258431 52099146 1000 600 600 (READ_ME.dvi) -@start /Fa 152[42 42 102[{}2 83.022 /CMSY10 rf /Fb 135[44 -1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 -44 44 44 44 44 17[44 9[44 3[44 2[44 44 44 44 44 10[44 -1[44 2[44 44 44 44 2[44 2[44 13[44 44 18[{}41 83.022 -/CMTT10 rf /Fc 134[59 3[62 44 44 46 59 62 56 62 93 31 -1[34 31 62 56 34 51 62 50 62 54 10[85 5[77 1[88 4[42 -88 3[86 81 14[56 56 56 56 2[31 26[56 56 5[62 12[{}36 -99.6264 /CMBX12 rf /Fd 214[28 28 40[{}2 83.022 /LASY10 -rf /Fe 193[65 1[65 60[{}2 83.022 /CMMI10 rf /Ff 133[37 -44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 46 -42 25 37 46 37 46 42 2[42 3[51 2[85 62 62 60 46 61 65 -57 65 62 76 52 2[30 62 2[57 63 60 59 62 65 2[65 2[23 -4[42 42 42 42 42 1[42 23 28 23 2[32 32 23 5[23 8[37 4[42 -42 3[69 1[46 48 11[{}69 83.022 /CMR10 rf /Fg 134[50 3[53 -37 38 39 1[53 48 53 80 27 2[27 53 48 29 44 53 42 53 46 -10[72 73 66 53 72 72 65 72 1[91 57 2[36 75 2[63 73 69 -1[72 6[27 4[48 48 48 48 48 2[27 32 8[48 16[48 6[53 12[{}46 -83.022 /CMBX10 rf /Fh 138[75 52 53 55 1[75 67 75 112 -37 2[37 75 2[61 75 60 75 65 12[94 75 2[92 2[128 3[50 -5[97 1[102 11[67 67 67 67 67 3[45 25[67 67 5[75 12[{}32 -119.552 /CMBX12 rf /Fi 140[38 38 4[81 11[49 41[49 3[49 -49 49 49 48[{}9 99.6264 /CMR12 rf /Fj 133[58 4[73 51 -52 51 2[66 73 111 36 2[36 73 2[58 73 58 1[66 9[137 4[98 -2[103 2[83 5[86 4[99 19[43 5[36 39[{}23 143.462 /CMR17 -rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -letter -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 614 872 a Fj(A)-15 b(W)l(OR)44 -b(-)f(Fic)l(hier)i(Lisez-moi)d(de)i(l'administrateur)1665 -1295 y Fi(13)32 b(mars)h(2007)515 1653 y Fh(T)-11 b(able)45 -b(des)g(mati)m(\022)-64 b(eres)515 1835 y Fg(1)76 b(Compatibilit)n -(\023)-46 b(e)2117 b(2)515 2018 y(2)76 b(S)n(\023)-46 -b(ecurit)n(\023)g(e)2353 b(2)515 2201 y(3)76 b(Installation)2217 -b(2)639 2300 y Ff(3.1)84 b(D)n(\023)-39 b(epaquetage)26 -b(des)h(pages)g(PHP)20 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(2)639 2400 -y(3.2)84 b(P)n(aram)n(\022)-39 b(etres)24 b(de)k(con\014guration)35 -b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)f(.)h(.)131 b(3)639 2500 y(3.3)84 b(Initialisation)27 -b(de)h(la)f(base)84 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(4)639 -2599 y(3.4)84 b(Con\014guration)26 b(par)h(d)n(\023)-39 -b(efaut)27 b(des)h(comptes)79 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)131 b(4)515 2782 y Fg(4)76 b(Main)m(tenance)2159 -b(4)639 2881 y Ff(4.1)84 b(Visualisation)27 b(des)g(ob)5 -b(jets)28 b(et)f(des)h(\014c)n(hiers)68 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.) -h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(4)639 2981 y(4.2)84 -b(Netto)n(y)n(age)26 b(de)i(la)f(base)50 b(.)42 b(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)131 b(5)515 3164 y Fg(5)76 b(Authen)m(ti\014cation)33 -b(d)n(\023)-46 b(edi)n(\023)g(ee)30 b(-)i(P)m(ersonnalisation)935 -b(5)1926 5255 y Ff(1)p eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 515 523 a Fh(1)134 b(Compatibilit)m(\023)-64 -b(e)639 705 y Ff(Cette)22 b(application)e(p)r(eut-)n(^)-39 -b(etre)21 b(utilis)n(\023)-39 b(ee)20 b(sur)h(un)g(serv)n(eur)f -(fonctionnan)n(t)h(a)n(v)n(ec)e(Apac)n(he,)515 805 y(MySQL\()p -Fe(>)p Ff(=4\))26 b(et)i(PHP)f(\()p Fe(>)p Ff(=4\).)515 -1020 y Fg(PHP)83 b Ff(L'application)21 b(ne)g(n)n(\023)-39 -b(ecessite)20 b(pas)g(de)i(con\014guration)d(de)j(PHP)e(particuli)n -(\022)-39 b(ere.)19 b(Elle)515 1120 y(fonctionne)k(quelque)f(soit)h(la) -g(v)-5 b(aleur)22 b(du)h(param)n(\022)-39 b(etre)21 b(de)i -(con\014guration)e(register)p 3083 1120 25 4 v 28 w(globals,)515 -1220 y(utilise)38 b(les)g(sessions)e(via)h(les)h(fonctions)g(in)n(tro)r -(duites)f(en)h(PHP4.)f(L'application)g(fonc-)515 1319 -y(tionne)29 b(quelque)g(soit)g(la)g(v)n(erb)r(osit)n(\023)-39 -b(e)27 b(des)i(a\016c)n(hages)f(d'erreur)g(et)h(de)h(w)n(arning)d(PHP) --7 b(,)29 b(car)515 1419 y(nous)h(a)n(v)n(ons)e(tra)n(v)-5 -b(aill)n(\023)-39 b(e)28 b(\022)-42 b(a)28 b(\023)-39 -b(eliminer)29 b(tous)h(les)g(messages)f Fd(\()-17 b(\()22 -b Ff(E)p 2441 1419 V 30 w(NOTICE)g Fd(\))-17 b(\))30 -b Ff(PHP)g(qui)g(sur-)515 1518 y(viennen)n(t)d(par)g(exemple)h(lors)e -(d'une)i(comparaison)e(a)n(v)n(ec)g(une)i(v)-5 b(ariable)26 -b(non-initialis)n(\023)-39 b(ee.)639 1618 y(Les)28 b(scripts)f(PHP)g -(n'acc)n(\022)-39 b(eden)n(t)26 b(pas)h(en)f(\023)-39 -b(ecriture)26 b(au)i(syst)n(\022)-39 b(eme)26 b(de)i(\014c)n(hier,)f -(sauf)g(p)r(our)515 1718 y(l'upload)e(de)h(\014c)n(hiers.)f(Le)g -(dossier)g Fd(\()-17 b(\()20 b Ff(\014c)n(hiers)g Fd(\))-17 -b(\))25 b Ff(doit)e(^)-39 b(etre)25 b(accessible)g(en)e(\023)-39 -b(ecriture)24 b(par)h(les)515 1817 y(scripts)i(PHP)g(sans)g(quoi)g(la)g -(fonctionnalit)n(\023)-39 b(e)26 b(d')n(\023)-39 b(ec)n(hange)26 -b(de)i(\014c)n(hier)f(serait)f(in)n(utilisable.)515 2033 -y Fg(MySQL)83 b Ff(Les)22 b(scripts)g(PHP)h(ne)f(mo)r(di\014en)n(t)h -(pas)g(structurellemen)n(t)f(la)g(base)g(de)h(donn)n(\023)-39 -b(ee)515 2133 y(MySQL,)33 b(il)h(su\016t)g(donc)g(d'un)g(compte)g(p)r -(ermettan)n(t)g(les)g(instructions)f(SELECT,)g(IN-)515 -2232 y(SER)-7 b(T,)23 b(UPD)n(A)-7 b(TE,)24 b(DELETE)e(sur)h(les)g -(tables)g(de)h(l'application.)f(P)n(our)f(indiquer)h(\022)-42 -b(a)24 b(l'ap-)515 2332 y(plication)j(quel)h(compte)f(MySQL)g -(utiliser,)h(v)n(euillez)f(v)n(ous)g(rep)r(orter)f(\022)-42 -b(a)27 b(la)g(section)h(3.3.)515 2607 y Fh(2)134 b(S)m(\023)-64 -b(ecurit)m(\023)g(e)639 2788 y Ff(Cette)19 b(application)f(a)d(\023)-39 -b(et)n(\023)g(e)17 b(d)n(\023)-39 b(ev)n(elopp)n(\023)g(ee)16 -b(en)i(gardan)n(t)f(toujours)h(\022)-42 b(a)18 b(l'esprit)g(les)g -(probl)n(\022)-39 b(emes)515 2888 y(de)28 b(s)n(\023)-39 -b(ecurit)n(\023)g(es.)26 b(Nous)i(ne)h(p)r(ouv)n(ons)c(\023)-39 -b(evidemmen)n(t)28 b(pas)f(la)h(garan)n(tir)f(failles)h(ni)g(bugs,)g -(mais)515 2988 y(nous)34 b(sommes)g(\014x)n(\023)-39 -b(e)33 b(des)h(r)n(\022)-39 b(egles)32 b(de)j(programmation)d(p)r(our)g -(\023)-39 b(eviter)33 b(les)h(failles)h(les)f(plus)515 -3087 y(couran)n(tes.)19 b(T)-7 b(outes)21 b(les)f(donn)n(\023)-39 -b(ees)20 b(issue)g(de)h(l'utilisateur)g(lors)f(des)h(traitemen)n(ts)f -(des)h(pages)515 3187 y(w)n(eb)g(son)n(t)h(trait)n(\023)-39 -b(ees)20 b(p)r(our)f(\023)-39 b(eviter)20 b(des)i(probl)n(\022)-39 -b(emes)20 b(d'insertion)h(de)h(co)r(de)g(dans)f(les)h(requetes)515 -3287 y(SQL.)g(L'authen)n(ti\014cation)h(des)g(utilisateurs)f(est)h -(syst)n(\023)-39 b(ematique,)21 b(v)n(\023)-39 b(eri\014)n(\023)g(ee)20 -b(\022)-42 b(a)23 b(c)n(haque)f(page)515 3386 y(et)k(rep)r(ose)f(sur)g -(le)h(syst)n(\022)-39 b(eme)25 b(des)h(sessions)e(PHP)-7 -b(.)26 b(En)f(rev)-5 b(anc)n(he,)25 b(il)h(faut)h(noter)e(que)h(le)g -(for-)515 3486 y(m)n(ulaire)19 b(d'authen)n(ti\014cation)i(n'est)g(pas) -f(prot)n(\023)-39 b(eg)n(\023)g(e)17 b(con)n(tre)i(l'usurpation)h(de)h -(mots)f(de)h(passe)515 3585 y(car)27 b(les)i(con)n(train)n(tes)d(donn)n -(\023)-39 b(ees)27 b(dans)i(le)f(cahier)g(des)g(c)n(harges)f(ne)h(le)h -(p)r(ermetten)n(t)g(pas,)f(d)r(^)-44 b(u)515 3685 y(moins,)33 -b(il)h(n'est)f(pas)g(p)r(ossible)h(d'utiliser)f(un)h(cryptage)e -(e\016cace)h(\(assym)n(\023)-39 b(etrique\))32 b(sans)515 -3785 y(mo)r(di\014er)22 b(le)g(syst)n(\022)-39 b(eme)21 -b(d'authen)n(ti\014cation)i(d)n(\023)-39 b(el)n(\023)g(egu)n(\023)g(ee) -19 b(et)j(sans)g(utiliser)g(une)h(con\014guration)515 -3884 y(de)k(serv)n(eur)e(W)-7 b(eb)28 b(sp)n(\023)-39 -b(eci\014que.)26 b(Consid)n(\023)-39 b(erez,)25 b(p)r(our)i(r)n(\023) --39 b(esoudre)25 b(ce)i(probl)n(\022)-39 b(eme,)25 b(l'emploi)j(sur)515 -3984 y(serv)n(eur)c(w)n(eb)h(s)n(\023)-39 b(ecuris)n(\023)g(e)23 -b(\(HTTPS\))k(et)f(l'utilisation)g(d'une)g(liaison)f(en)n(tre)g(le)h -(serv)n(eur)e(w)n(eb)515 4084 y(et)k(le)f(serv)n(eur)f(d'authen)n -(ti\014cation)i(au)f(tra)n(v)n(ers)e(d'un)j(r)n(\023)-39 -b(eseau)26 b(de)h(con\014ance.)515 4358 y Fh(3)134 b(Installation)515 -4557 y Fc(3.1)112 b(D)n(\023)-54 b(epaquetage)39 b(des)f(pages)g(PHP) -639 4710 y Ff(L'application)j(est)h(livr)n(\023)-39 b(ee)39 -b(dans)j(une)f(arc)n(hiv)n(e)f(de)i(t)n(yp)r(e)f(tarball)g(compress)n -(\023)-39 b(ee)39 b(qui)515 4809 y(con)n(tien)n(t)18 -b(toute)g(l'arb)r(orescence)f(et)h(les)h(\014c)n(hiers)e(PHP)h(n)n -(\023)-39 b(ecessaires.)15 b(Il)k(su\016t)g(de)f(d)n(\023)-39 -b(ecompresser)1926 5255 y(2)p eop end -%%Page: 3 3 -TeXDict begin 3 2 bop 515 523 a Ff(cette)27 b(arc)n(hiv)n(e)f(en)h -(conserv)-5 b(an)n(t)26 b(l'arb)r(orescence)f(dans)i(un)g(dossier)f -(publi)n(\023)-39 b(e)27 b(par)f(v)n(otre)g(ser-)515 -623 y(v)n(eur)f(W)-7 b(eb.)27 b(Les)f(\014c)n(hiers)f(de)i -(con\014gurations)d(son)n(t)i(pr)n(\023)-39 b(esen)n(t)24 -b(et)j(con)n(tiennen)n(t)f(des)g(v)-5 b(aleurs)515 722 -y(d'exemple)27 b(que)h(v)n(ous)f(p)r(ourrez)f(adapter)h(\022)-42 -b(a)27 b(v)n(otre)f(situation.)515 951 y Fc(3.2)112 b(P)m(aram)n(\022) --54 b(etres)38 b(de)g(con\014guration)639 1104 y Ff(Cette)33 -b(application)f(comp)r(orte)g(deux)h(\014c)n(hiers)f(de)h -(con\014guration)e(qui)i(son)n(t)f(dans)g(le)515 1203 -y(dossier)f Fd(\()-17 b(\()24 b Ff(include)f Fd(\))-17 -b(\))p Ff(.)33 b(Les)f(\014c)n(hiers)g(existen)n(t)h(dans)f(la)g(v)n -(ersion)f(distribu)n(\023)-39 b(ee)32 b(et)h(on)n(t)f(p)r(our)515 -1303 y(but)c(de)g(servir)e(de)i(mo)r(d)n(\022)-39 b(ele.)515 -1433 y Fg(connect.inc.php)31 b(:)41 b Ff(ce)32 b(\014c)n(hier)f(con)n -(tien)n(t)g(les)g(co)r(ordonn)n(\023)-39 b(ees)29 b(du)j(serv)n(eur)e -(MySQL,)h(de)722 1533 y(l'utilisateur)d(SQL)f(et)h(de)g(la)f(base)g -(que)g(l'application)g(utilisera.)515 1653 y Fg(con\014g.inc.php)k(:)41 -b Ff(ce)35 b(\014c)n(hier)f(con)n(tien)n(t)h(tout)g(le)g(reste)g(de)g -(la)g(con\014guration)e(de)j(l'ap-)722 1752 y(plication.)k(Le)g(\014c)n -(hier)g(est)g(un)g(script)g(PHP)g(qui)g(initialise)g(un)g(tableau)g(m)n -(ulti-)722 1852 y(dimen)n(tionnel.)f(Ce)f(c)n(hoix)f(\022)-42 -b(a)36 b(\023)-39 b(et)n(\023)g(e)37 b(fait)h(par)g(commo)r(dit)n(\023) --39 b(e,)37 b(et)h(p)r(our)g(p)r(ermette)h(de)722 1951 -y(bien)h(hi)n(\023)-39 b(erarc)n(hiser)37 b(les)i(information,)h(en)f -(rev)-5 b(anc)n(he,)39 b(la)h(syn)n(taxe)e(est)i(fourb)r(e.)14 -b(.)g(.)722 2051 y(N'oubliez)28 b(pas)f(de)h(virgule)13 -b(!)27 b(T)-7 b(outes)28 b(les)f(constan)n(tes)f(son)n(t)h(d)n(\023)-39 -b(ecrites)27 b(ci-dessous.)722 2191 y Fg($adminMail)k(:)41 -b Ff(adresse)23 b(e-mail)h(de)g(l'administrateur.)g(A\016c)n(h)n(\023) --39 b(ee)24 b(\022)-42 b(a)24 b(l'utilisateur)905 2291 -y(lorsque)i(qu'une)i(erreur)e(in)n(terne)i(\022)-42 b(a)27 -b(l'application)g(s'est)g(pro)r(duite.)722 2411 y Fg($automatedMail)k -(:)41 b Ff(adresse)31 b(e-mail)g(de)h(r)n(\023)-39 b(ep)r(onse)30 -b(des)i(courriels)f(en)n(v)n(o)n(y)n(\023)-39 b(es)29 -b(au-)905 2510 y(tomatiquemen)n(t)e(par)g(l'application.)722 -2630 y Fg(A)m(UTH)33 b(:)41 b Ff(P)n(aram)n(\022)-39 -b(etres)24 b(d'authen)n(ti\014cation)905 2770 y Fg(POP)32 -b(:)41 b Ff(P)n(aram)n(\022)-39 b(etres)24 b(p)r(our)j(les)h(serv)n -(eurs)d(mail)j(POP)1060 2911 y Fg(SER)-11 b(VERS)31 b(:)41 -b Ff(Chaque)26 b(\023)-39 b(el)n(\023)g(emen)n(t)27 b(de)h(ce)g -(tableau)g(\022)-42 b(a)28 b(p)r(our)g(clef)h(le)f(nom)1201 -3010 y(de)d(domaine)f(du)h(fournisseur)e(de)i(service)f(de)g(courriel)f -(\()i(partie)f(sui-)1201 3110 y(v)-5 b(an)n(t)27 b(le)g(@)g(dans)g(une) -g(adresse)f(e-mail\))g(\022)-42 b(a)27 b(p)r(our)g(v)-5 -b(aleur)26 b(un)h(tableau)1201 3210 y(asso)r(ciatif)g(de)h(la)f(forme)g -(suiv)-5 b(an)n(te)1201 3350 y Fg(sub)s(domain)31 b(:)41 -b Ff(adresse)23 b(complete)i(du)g(serv)n(eur)e(o\013ran)n(t)g(le)i -(service)1284 3449 y(POP)1201 3569 y Fg(p)s(ort)32 b(:)41 -b Ff(n)n(um)n(\023)-39 b(ero)39 b(de)h(p)r(ort)h(TCP)f(utilis)n(\023) --39 b(e)39 b(p)r(our)h(se)h(connecter)e(au)1284 3669 -y(service)27 b(POP)1201 3789 y Fg(username)p 1604 3789 -29 4 v 34 w(is)p 1703 3789 V 34 w(full)p 1873 3789 V -33 w(mail)k(:)41 b Ff(Bo)r(ol)n(\023)-39 b(een)38 b(\(true)j(ou)e -(false\))h(indican)n(t)1284 3888 y(si)k(le)g(nom)g(d'utilisateur)g -(\022)-42 b(a)43 b(utiliser)h(p)r(our)f(l'authen)n(ti\014cation)1284 -3988 y(est)28 b(l'adresse)e(e-mail)h(compl)n(\022)-39 -b(ete.)26 b(C'est)i(utile)g(p)r(our)f(les)g(serv)n(eurs)1284 -4088 y(POP)17 b(g)n(\023)-39 b(eran)n(t)16 b(des)j(adresses)d(email)i -(sur)g(plusieurs)g(domaines)g(\(comme)1284 4187 y(w)n(anado)r(o)26 -b(/)h(orange)f(au)i(momen)n(t)f(o)r(\022)-44 b(u)27 b(j')n(\023)-39 -b(ecris)27 b(ce)g(do)r(cumen)n(t\))905 4327 y Fg(b)m(ypass)p -1186 4327 V 35 w(if)p 1277 4327 V 34 w(lo)s(cal)k(:)41 -b Ff(Bo)r(ol)n(\023)-39 b(een)37 b(indiquan)n(t)i(si)g(l'authen)n -(ti\014cation)g(doit)e(^)-39 b(etre)1060 4427 y(outrepass)n(\023)g(ee) -21 b(si)h(la)h(connexion)f(s'e\013ectue)h(depuis)h(le)f(serv)n(eur)e -(lui-m)n(^)-39 b(eme.)722 4567 y Fg(CSS)32 b(:)41 b Ff(P)n(aram)n(\022) --39 b(etres)24 b(des)k(st)n(yles)e(de)i(pages)905 4707 -y Fg(CHOOSER)p 1387 4707 V 33 w(LIST)33 b(:)41 b Ff(Ce)19 -b(tableau)g(asso)r(ciatif)g(con)n(tien)n(t)g(la)g(liste)g(des)h(st)n -(yles)1060 4807 y(CSS)29 b(\022)-42 b(a)28 b(utiliser.)h(Les)f(clefs)h -(son)n(t)f(les)g(lib)r(ell)n(\023)-39 b(es)28 b(des)g(th)n(\022)-39 -b(emes)28 b(\022)-42 b(a)28 b(a\016c)n(her)g(et)1060 -4907 y(les)33 b(v)-5 b(aleurs)33 b(son)n(t)f(les)h(noms)g(des)g(\014c)n -(hiers)f(CSS)i(corresp)r(ondan)n(ts,)d(sans)1060 5006 -y(c)n(hemin,)d(ni)g(extension.)1926 5255 y(3)p eop end -%%Page: 4 4 -TeXDict begin 4 3 bop 722 523 a Fg(MAIL)33 b(:)905 680 -y(TEMPLA)-8 b(TES)33 b(:)41 b Ff(Ce)28 b(tableau)h(con)n(tien)n(t)g -(des)f(tableaux)h(asso)r(ciatifs)e(don)n(t)1060 779 y(les)g(clefs)f -(seron)n(t)g(utilis)n(\023)-39 b(ees)26 b(dans)g(les)g(passages)f(de)i -(param)n(\022)-39 b(etres)24 b(HTML,)1060 879 y(et)k(con)n(tiennen)n(t) -f(des)h(sous-tableaux)e(de)h(la)h(forme)f(suiv)-5 b(an)n(te)27 -b(:)1060 1036 y Fg(caption)32 b(:)41 b Ff(In)n(titul)n(\023)-39 -b(e)28 b(qui)f(sera)g(a\016c)n(h)n(\023)-39 b(e)26 b(\022)-42 -b(a)27 b(l'utilisateur)1060 1164 y Fg(tpl)p 1183 1164 -29 4 v 34 w(\014le)k(:)41 b Ff(Nom)d(du)g(\014c)n(hier)g(\(a)n(v)n(ec)e -(l'extension)i(PHP\))f(con)n(tenan)n(t)g(le)1201 1264 -y(mo)r(d)n(\022)-39 b(ele.)722 1421 y Fg(SUPER)m(USERS)32 -b(:)41 b Ff(Ce)19 b(tableau)f(con)n(tien)n(t)g(la)g(liste)g(des)h -(login)e(des)h(sup)r(er-utilisateurs)905 1520 y(\(ceux)28 -b(qui)f(on)n(t)h(le)f(droit)g(de)h(supprimer)f(des)h(r)n(\023)-39 -b(eunions\))722 1648 y Fg(UPLO)m(AD)34 b(:)41 b Ff(P)n(aram)n(\022)-39 -b(etres)14 b(concernan)n(t)k(l'attac)n(hemen)n(t)f(de)i(\014c)n(hiers)e -(aux)h(r)n(\023)-39 b(eunions)905 1805 y Fg(accepted)p -1272 1805 V 35 w(\014les)31 b(:)41 b Ff(T)-7 b(ableau)27 -b(des)h(extensions)e(qui)i(son)n(t)f(autoris)n(\023)-39 -b(ees.)515 2038 y Fc(3.3)112 b(Initialisation)39 b(de)e(la)h(base)639 -2191 y Ff(T)-7 b(out)28 b(les)g(\014c)n(hiers)f(n)n(\023)-39 -b(ecessaires)25 b(son)n(t)i(rang)n(\023)-39 b(es)25 b(dans)j(le)g -(dossier)e Fd(\()-17 b(\()22 b Ff(install)g Fd(\))-17 -b(\))p Ff(.)28 b(V)-7 b(ous)28 b(uti-)515 2291 y(liserez)d -(principalemen)n(t)h(le)g(\014c)n(hier)g Fd(\()-17 b(\()21 -b Ff(RAZBase.php)f Fd(\))-17 b(\))p Ff(.)26 b(App)r(el)n(\023)-39 -b(e)26 b(au)g(tra)n(v)n(ers)e(du)j(serv)n(eur)515 2390 -y(w)n(eb,)j(il)g(v)n(ous)f(p)r(ermettra)h(automatiquemen)n(t)f(de)i -(mettre)f(en)g(place)g(la)g(structure)f(de)h(la)515 2490 -y(base)24 b(de)g(donn)n(\023)-39 b(ees,)23 b(et)i(optionnellemen)n(t,)g -(d'ins)n(\023)-39 b(erer)22 b(un)j(jeu)g(d'essai)f(p)r(our)g(tester)g -(l'appli-)515 2589 y(cation)h(sur)g(v)n(otre)g(serv)n(eur.)f(Si)i(v)n -(ous)f(ne)h(souhaitez)f(pas)g(utiliser)h(de)f(compte)h(SQL)g(a)n(y)n -(an)n(t)515 2689 y(le)k(droit)g(d'alt)n(\023)-39 b(erer)28 -b(la)h(structure)h(des)g(tables)g(de)g(v)n(otre)f(base)g(a)n(v)n(ec)g -(ce)h(script)g(php,)g(v)n(ous)515 2789 y(p)r(ouv)n(ez)24 -b(ex)n(\023)-39 b(ecuter)22 b(le)j(script)f Fd(\()-17 -b(\()19 b Ff(base.sql)f Fd(\))-17 b(\))25 b Ff(a)n(v)n(ec)e(v)n(otre)g -(clien)n(t)h(SQL)g(fa)n(v)n(ori.)f(Le)h(jeu)h(d'essai)515 -2888 y(se)i(trouv)n(e)g(dans)g(le)g(\014c)n(hier)g Fd(\()-17 -b(\()22 b Ff(jeu)p 1573 2888 25 4 v 31 w(essai.sql)e -Fd(\))-17 b(\))p Ff(.)515 3121 y Fc(3.4)112 b(Con\014guration)39 -b(par)e(d)n(\023)-54 b(efaut)39 b(des)f(comptes)639 3274 -y Ff(Dans)30 b(le)g(\014c)n(hier)f(de)h(con\014guration)f(mo)r(d)n -(\022)-39 b(ele,)29 b(un)h(sup)r(er-utilisateur)f(est)h(con\014gur)n -(\023)-39 b(e)28 b(:)515 3374 y(ingleb)r(ert@iut-blagnac.fr)e(et)i(le)g -(jeu)g(d'essai)f(prop)r(os)n(\023)-39 b(e)25 b(au)j(paragraphe)d(pr)n -(\023)-39 b(ec)n(\023)g(eden)n(t)25 b(p)r(er-)515 3473 -y(met)j(de)f(cr)n(\023)-39 b(eer)26 b(des)h(utilisateurs,)g(et)h(en)g -(particulier)f(ingleb)r(ert@iut-blagnac.fr.)639 3573 -y(P)n(ar)19 b(d)n(\023)-39 b(efaut,)21 b(v)n(ous)e(p)r(ourrez)h(donc)g -(v)n(ous)g(connecter)g(en)h(tan)n(t)g(qu'administrateur)e(a)n(v)n(ec) -515 3672 y(ce)32 b(compte.)g(Le)g(jeu)g(d'essai)f(met)i(ce)f(compte)g -(a)n(v)n(ec)e(comme)i(mo)r(de)g(d'authen)n(ti\014cation)515 -3772 y Fd(\()-17 b(\()20 b Ff(b)n(ypass)f Fd(\))-17 b(\))o -Ff(,)26 b(ce)f(qui)g(signi\014e)g(qu'aucun)g(mot)g(de)g(passe)f(est)i -(n)n(\023)-39 b(ecessaire.)22 b(P)n(our)i(utiliser)h(un)515 -3872 y(vrai)i(syst)n(\022)-39 b(eme)27 b(d'authen)n(ti\014cation,)h -(connectez-v)n(ous)f(a)n(v)n(ec)g(ce)h(compte)g(et)h(allez)f(dans)f(la) -515 3971 y(page)f Fd(\()-17 b(\()22 b Ff(Mon)28 b(Pro\014l)21 -b Fd(\))-17 b(\))27 b Ff(p)r(our)g(c)n(hoisir)g(une)g(autre)g(mo)r(de)h -(d'authen)n(ti\014cation.)515 4246 y Fh(4)134 b(Main)l(tenance)515 -4444 y Fc(4.1)112 b(Visualisation)39 b(des)f(ob)6 b(jets)38 -b(et)f(des)h(\014c)m(hiers)639 4598 y Ff(Une)28 b(page)e -(d'administration)g(est)h(pr)n(\023)-39 b(evue)26 b(\022)-42 -b(a)26 b(cet)h(e\013et,)h(et)f(elle)g(n'est)g(accessible)f(que)515 -4697 y(par)31 b(un)i Fd(\()-17 b(\()23 b Ff(sup)r(er-utilisateur)g -Fd(\))-17 b(\))o Ff(,)33 b(c'est)f(\022)-42 b(a)32 b(dire)g(un)g -(utilisateur)g(consign)n(\023)-39 b(e)31 b(dans)g(le)i(\014c)n(hier)515 -4797 y(de)27 b(con\014guration)f(principal)i(en)f(tan)n(t)h(que)f(tel,) -h(conf)n(\022)-39 b(ere)26 b(3.2.)1926 5255 y(4)p eop -end -%%Page: 5 5 -TeXDict begin 5 4 bop 515 523 a Fc(4.2)112 b(Netto)m(y)m(age)37 -b(de)h(la)g(base)650 655 y Ff(\022)639 676 y(A)31 b(partir)f(de)h(la)f -(page)f(d'administration)h(d)n(\023)-39 b(ecrite)30 b(dans)g(le)g -(paragraphe)e(pr)n(\023)-39 b(ec)n(\023)g(eden)n(t,)515 -776 y(v)n(ous)23 b(p)r(ouv)n(ez)h(aussi)f(purger)g(les)h(\014c)n(hiers) -g(attac)n(h)n(\023)-39 b(es)22 b(et)i(les)g(ob)5 b(jets)24 -b(de)h(la)f(base)f(de)i(donn)n(\023)-39 b(ees)515 876 -y(dev)n(en)n(us)31 b(obsol)n(\022)-39 b(etes.)30 b(L'aide)h(con)n -(textuelle)h(de)f(cette)i(page)e(v)n(ous)f(expliquera)h(commen)n(t)515 -975 y(faire.)c(Il)g(est)h(viv)n(emen)n(t)f(conseill)n(\023)-39 -b(e)26 b(de)i(faire)f(une)g(sauv)n(egarde)e(de)j(la)f(base)g(de)h(donn) -n(\023)-39 b(ees)26 b(et)515 1075 y(des)g(\014c)n(hiers)f(join)n(ts)i -(aux)e(r)n(\023)-39 b(eunions)25 b(a)n(v)-5 b(an)n(t)25 -b(d'utiliser)i(cet)f(outil)g(car)g(l'erreur)f(de)h(manipu-)515 -1174 y(lation)h(ou)g(de)h(programmation)d(est)j(toujours)f(p)r -(ossible.)13 b(.)h(.)515 1449 y Fh(5)134 b(Authen)l(ti\014cation)46 -b(d)m(\023)-64 b(edi)m(\023)g(ee)46 b(-)f(P)l(ersonnalisation)639 -1631 y Ff(A)-9 b(W)n(OR)32 b(utilise)g(un)g(syst)n(\022)-39 -b(eme)31 b(d'authen)n(ti\014cation)h(d)n(\023)-39 b(edi)n(\023)g(ee)29 -b(de)j(sorte)f(qu'aucun)h(mot)515 1730 y(de)40 b(passe)f(ne)h(soit)f -(sto)r(c)n(k)n(\023)-39 b(e,)38 b(et)j(que)e(l'utilisateur)h(n'ait)g -(pas)g(b)r(esoin)f(d'en)h(retenir)g(un)515 1830 y(nouv)n(eau.)32 -b(Le)i(co)r(de)f(d'authen)n(ti\014cation)h(\022)-42 b(a)30 -b(\023)-39 b(et)n(\023)g(e)30 b(\023)-39 b(ecrit)33 b(de)h(mani)n(\022) --39 b(ere)31 b(\022)-42 b(a)31 b(^)-39 b(etre)33 b(mal)n(\023)-39 -b(eable)32 b(et)515 1930 y(est)e(extensible.)g(Le)h(co)r(eur)e(du)i -(syst)n(\022)-39 b(eme)29 b(d'authen)n(ti\014cation)h(se)g(trouv)n(e)f -(dans)h(le)h(\014c)n(hier)515 2029 y Fd(\()-17 b(\()22 -b Ff(auth)p 747 2029 25 4 v 29 w(dialog.php)g Fd(\))-17 -b(\))o Ff(.)28 b(V)-7 b(ous)27 b(y)h(trouv)n(erez)e(une)h(section)g -(commen\030)-37 b(can)n(t)27 b(par)g(le)h(commen-)515 -2129 y(taire)f(ci-dessous.)722 2312 y Fb(/****************)o(**)o(***)o -(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(*)722 -2411 y(**)43 b(Ajouter)e(d'autres)f(mode)i(d'authentificati)o(on)37 -b(ici)42 b(!)i(**)722 2511 y(*****************)o(**)o(***)o(**)o(***)o -(**)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(/)515 -2693 y Ff(Comme)30 b(l'indique)g(ce)g(commen)n(taire,)f(v)n(ous)g(p)r -(ourrez)h(a)5 b(jouter)29 b(\022)-42 b(a)29 b(cet)i(endroit)e(une)i(p)r -(or-)515 2793 y(tion)d(de)g(co)r(de)f(p)r(our)h(utiliser)f(un)i(autre)e -(service)g(d'authen)n(ti\014cation.)g(La)h(syn)n(taxe)f(est)g(la)515 -2893 y(suiv)-5 b(an)n(te)27 b(:)722 3035 y Fb(case)42 -b('')f(:)722 3135 y(/*)i -(Eventuellement)38 b(du)43 b(code)f(pr\023)-44 b(el\023)g(eminaire)38 -b(*/)722 3235 y($auth)p 947 3235 V 30 w(is)p 1065 3235 -V 30 w(ok=)o(;)722 -3334 y(if)43 b(\()g(!)g($auth)p 1252 3334 V 30 w(is)p -1370 3334 V 30 w(ok)g(\))722 3434 y Fa(f)g Fb(//)g(On)g(ex\023)-44 -b(ecute)41 b(la)h(ligne)g(ci-dessous)d(que)k(si)f(l'authentificaito)o -(n)c(\022)-44 b(a)43 b(\023)-44 b(echou\023)g(ee)722 -3533 y($errmsg=;)722 3633 -y Fa(g)722 3733 y Fb(break;)515 3875 y Ff(Il)27 b(v)n(ous)f(su\016t)i -(de)f(remplacer)f(les)f(\023)-39 b(el)n(\023)g(emen)n(ts)25 -b(en)n(tre)i(c)n(hevrons)e(dans)i(le)g(co)r(de)h(ci-dessus)e(et)515 -3975 y(de)k(le)g(coller)e(dans)i Fd(\()-17 b(\()p Ff(auth)p -1348 3975 25 4 v 29 w(dialog.inc.php)p Fd(\))g(\))29 -b Ff(p)r(our)h(p)r(ouv)n(oir)e(utiliser)i(un)g(nouv)n(eau)f(mo)r(de)515 -4074 y(d'authen)n(ti\014cation.)i(Reste)h(\022)-42 b(a)31 -b(donner)g(\022)-42 b(a)31 b(l'utilisateur)h(la)f(capacit)n(\023)-39 -b(e)30 b(de)i(l'utiliser.)f(V)-7 b(ous)515 4174 y(devrez)32 -b(encore,)h(d'une)g(part,)g(a)5 b(jouter)33 b(dans)g(la)g(base)f(de)i -(donn)n(\023)-39 b(ees)32 b(le)h Fe(<)p Ff(nom)p 3049 -4174 V 29 w(auth)p Fe(>)g Ff(\022)-42 b(a)515 4274 y(l')n(\023)j(en)n -(um)n(\023)g(eration)20 b(du)j(c)n(hamp)f Fd(\()-17 b(\()p -Ff(metho)r(deAuth)p Fd(\))g(\))23 b Ff(de)g(la)f(table)h -Fd(\()-17 b(\()p Ff(P)n(ersonne)p Fd(\))g(\))n Ff(,)22 -b(et)h(d'autre)g(part)515 4373 y(prop)r(oser)c(\022)-42 -b(a)20 b(l'utilisateur)h(d'utiliser)f(ce)h(mo)r(de)g(d'authen)n -(ti\014cation)f(en)h(mo)r(di\014an)n(t)g(la)f(page)515 -4473 y Fd(\()-17 b(\()o Ff(pro\014l.php)p Fd(\))g(\))p -Ff(.)1926 5255 y(5)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/beta_old1/doc/READ_ME.txt b/beta_old1/doc/READ_ME.txt deleted file mode 100644 index ce42282..0000000 --- a/beta_old1/doc/READ_ME.txt +++ /dev/null @@ -1,277 +0,0 @@ - - -AWOR - Fichier Lisez-moi de l'administrateur - -Table des Matières - - 1 Compatibilité - 2 Sécurité - 3 Installation - 3.1 Dépaquetage des pages PHP - 3.2 Paramètres de configuration - 3.3 Initialisation de la base - 3.4 Configuration par défaut des comptes - 4 Maintenance - 4.1 Visualisation des objets et des fichiers - 4.2 Nettoyage de la base - 5 Authentification dédiée - Personnalisation - - - - - - -1 Compatibilité - -Cette application peut-être utilisée sur un serveur -fonctionnant avec Apache, MySQL(>=4) et PHP (>=4). - - PHP - -L'application ne nécessite pas de configuration de PHP -particulière. Elle fonctionne quelque soit la valeur du -paramètre de configuration register_globals, utilise -les sessions via les fonctions introduites en PHP4. -L'application fonctionne quelque soit la verbosité des -affichages d'erreur et de warning PHP, car nous avons -travaillé à éliminer tous les messages "E_NOTICE" PHP qui -surviennent par exemple lors d'une comparaison avec une -variable non-initialisée. - -Les scripts PHP n'accèdent pas en écriture au système -de fichier, sauf pour l'upload de fichiers. Le dossier "fichiers" - doit être accessible en écriture par les scripts PHP -sans quoi la fonctionnalité d'échange de fichier serait -inutilisable. - - MySQL - -Les scripts PHP ne modifient pas structurellement la -base de donnée MySQL, il suffit donc d'un compte -permettant les instructions SELECT, INSERT, UPDATE, -DELETE sur les tables de l'application. Pour indiquer à -l'application quel compte MySQL utiliser, veuillez vous -reporter à la section [sub:Initialisation-de-la-bd]. - -2 Sécurité - -Cette application a été développée en gardant toujours -à l'esprit les problèmes de sécurités. Nous ne pouvons -évidemment pas la garantir failles ni bugs, mais nous -sommes fixé des règles de programmation pour éviter les -failles les plus courantes. Toutes les données issue de -l'utilisateur lors des traitements des pages web sont -traitées pour éviter des problèmes d'insertion de code -dans les requetes SQL. L'authentification des -utilisateurs est systématique, vérifiée à chaque page -et repose sur le système des sessions PHP. En revanche, -il faut noter que le formulaire d'authentification -n'est pas protégé contre l'usurpation de mots de passe -car les contraintes données dans le cahier des charges -ne le permettent pas, dû moins, il n'est pas possible -d'utiliser un cryptage efficace (assymétrique) sans -modifier le système d'authentification déléguée et sans -utiliser une configuration de serveur Web spécifique. -Considérez, pour résoudre ce problème, l'emploi sur -serveur web sécurisé (HTTPS) et l'utilisation d'une -liaison entre le serveur web et le serveur -d'authentification au travers d'un réseau de confiance. - -3 Installation - -3.1 Dépaquetage des pages PHP - -L'application est livrée dans une archive de type -tarball compressée qui contient toute l'arborescence et -les fichiers PHP nécessaires. Il suffit de décompresser -cette archive en conservant l'arborescence dans un -dossier publié par votre serveur Web. Les fichiers de -configurations sont présent et contiennent des valeurs -d'exemple que vous pourrez adapter à votre situation. - - - -3.2 Paramètres de configuration - -Cette application comporte deux fichiers de -configuration qui sont dans le dossier "include". Les -fichiers existent dans la version distribuée et ont -pour but de servir de modèle. - - connect.inc.php : ce fichier contient les coordonnées - du serveur MySQL, de l'utilisateur SQL et de la base - que l'application utilisera. - - config.inc.php : ce fichier contient tout le reste de - la configuration de l'application. Le fichier est un - script PHP qui initialise un tableau - multi-dimentionnel. Ce choix à été fait par - commodité, et pour permette de bien hiérarchiser les - information, en revanche, la syntaxe est fourbe... - N'oubliez pas de virgule ! Toutes les constantes sont - décrites ci-dessous. - - $adminMail : adresse e-mail de l'administrateur. - Affichée à l'utilisateur lorsque qu'une erreur - interne à l'application s'est produite. - - $automatedMail : adresse e-mail de réponse des - courriels envoyés automatiquement par l'application. - - AUTH : Paramètres d'authentification - - POP : Paramètres pour les serveurs mail POP - - SERVERS : Chaque élément de ce tableau à pour clef - le nom de domaine du fournisseur de service de - courriel ( partie suivant le @ dans une adresse - e-mail) à pour valeur un tableau associatif de - la forme suivante - - subdomain : adresse complete du serveur offrant - le service POP - - port : numéro de port TCP utilisé pour se - connecter au service POP - - username_is_full_mail : Booléen (true ou false) - indicant si le nom d'utilisateur à utiliser - pour l'authentification est l'adresse e-mail - complète. C'est utile pour les serveurs POP - gérant des adresses email sur plusieurs - domaines (comme wanadoo / orange au moment où - j'écris ce document) - - bypass_if_local : Booléen indiquant si - l'authentification doit être outrepassée si la - connexion s'effectue depuis le serveur lui-même. - - CSS : Paramètres des styles de pages - - CHOOSER_LIST : Ce tableau associatif contient la - liste des styles CSS à utiliser. Les clefs sont - les libellés des thèmes à afficher et les valeurs - sont les noms des fichiers CSS correspondants, - sans chemin, ni extension. - - MAIL : - - TEMPLATES : Ce tableau contient des tableaux - associatifs dont les clefs seront utilisées dans - les passages de paramètres HTML, et contiennent - des sous-tableaux de la forme suivante : - - caption : Intitulé qui sera affiché à l'utilisateur - - tpl_file : Nom du fichier (avec l'extension PHP) - contenant le modèle. - - SUPERUSERS : Ce tableau contient la liste des login - des super-utilisateurs (ceux qui ont le droit de - supprimer des réunions) - - UPLOAD : Paramètres concernant l'attachement de - fichiers aux réunions - - accepted_files : Tableau des extensions qui sont autorisées. - -3.3 Initialisation de la base - -Tout les fichiers nécessaires sont rangés dans le -dossier "install". Vous utiliserez principalement le -fichier "RAZBase.php". Appelé au travers du serveur web, -il vous permettra automatiquement de mettre en place la -structure de la base de données, et optionnellement, -d'insérer un jeu d'essai pour tester l'application sur -votre serveur. Si vous ne souhaitez pas utiliser de -compte SQL ayant le droit d'altérer la structure des -tables de votre base avec ce script php, vous pouvez -exécuter le script "base.sql" avec votre client SQL -favori. Le jeu d'essai se trouve dans le fichier "jeu_essai.sql". - -3.4 Configuration par défaut des comptes - -Dans le fichier de configuration modèle, un -super-utilisateur est configuré : -inglebert@iut-blagnac.fr et le jeu d'essai proposé au -paragraphe précédent permet de créer des utilisateurs, -et en particulier inglebert@iut-blagnac.fr. - -Par défaut, vous pourrez donc vous connecter en tant -qu'administrateur avec ce compte. Le jeu d'essai met ce -compte avec comme mode d'authentification "bypass", ce -qui signifie qu'aucun mot de passe est nécessaire. Pour -utiliser un vrai système d'authentification, -connectez-vous avec ce compte et allez dans la page "Mon Profil" - pour choisir une autre mode d'authentification. - -4 Maintenance - -4.1 Visualisation des objets et des fichiers - -Une page d'administration est prévue à cet effet, et -elle n'est accessible que par un "super-utilisateur", -c'est à dire un utilisateur consigné dans le fichier de -configuration principal en tant que tel, confère [sub:Configuration]. - -4.2 Nettoyage de la base - -À partir de la page d'administration décrite dans le -paragraphe précédent, vous pouvez aussi purger les -fichiers attachés et les objets de la base de données -devenus obsolètes. L'aide contextuelle de cette page -vous expliquera comment faire. Il est vivement -conseillé de faire une sauvegarde de la base de données -et des fichiers joints aux réunions avant d'utiliser -cet outil car l'erreur de manipulation ou de -programmation est toujours possible... - -5 Authentification dédiée - Personnalisation - -AWOR utilise un système d'authentification dédiée de -sorte qu'aucun mot de passe ne soit stocké, et que -l'utilisateur n'ait pas besoin d'en retenir un nouveau. -Le code d'authentification à été écrit de manière à -être maléable et est extensible. Le coeur du système -d'authentification se trouve dans le fichier "auth_dialog.php" -. Vous y trouverez une section commençant par le -commentaire ci-dessous. - -/*************************************************** - -** Ajouter d'autres mode d'authentification ici ! ** - -***************************************************/ - -Comme l'indique ce commentaire, vous pourrez ajouter à -cet endroit une portion de code pour utiliser un autre -service d'authentification. La syntaxe est la suivante : - -case '': - -/* Eventuellement du code préléminaire */ - -$auth_is_ok=; - -if ( ! $auth_is_ok ) - -{ // On exécute la ligne ci-dessous que si -l'authentificaiton à échouée - - - -$errmsg=; - -} - -break; - -Il vous suffit de remplacer les éléments entre chevrons -dans le code ci-dessus et de le coller dans "auth_dialog.inc.php" - pour pouvoir utiliser un nouveau mode -d'authentification. Reste à donner à l'utilisateur la -capacité de l'utiliser. Vous devrez encore, d'une part, -ajouter dans la base de données le à -l'énumération du champ "methodeAuth" de la table "Personne" -, et d'autre part proposer à l'utilisateur d'utiliser -ce mode d'authentification en modifiant la page "profil.php". diff --git a/beta_old1/fct_adm.inc.php b/beta_old1/fct_adm.inc.php deleted file mode 100644 index 1b68b06..0000000 --- a/beta_old1/fct_adm.inc.php +++ /dev/null @@ -1,33 +0,0 @@ -\n\n\n"; - echo "$row_begin" . implode("\n",array_keys($row)) . "$row_end\n"; - echo "\n\n\n"; - do - { - echo "\n\t" . implode("\n",$row) . "\n\n"; - } while ( $row = mysql_fetch_assoc($result) ); - echo "\n\n"; - } -} - - - -html_generate_MySQLTableSuppr('AWOR_Reunion','idR'); - -?> \ No newline at end of file diff --git a/beta_old1/install/RAZbase.php b/beta_old1/install/RAZbase.php deleted file mode 100644 index 9b9fa25..0000000 --- a/beta_old1/install/RAZbase.php +++ /dev/null @@ -1,130 +0,0 @@ -Impossible d\'ouvrir le fichier ' . $filepath . "\n"; - } - else - { - if ( ! feof( $fd ) ) { $script = fgets($fd,4096); } - $request = ''; - while ( ! feof( $fd ) ) - { - $request .= fgets($fd,4096); - } - - // Explosion dans un tableau, requete par requete - $tabReq = explode(";", $request); - - // Pour chaque requete - foreach ( $tabReq as $req ) - { - $req=trim($req); - if ( $req !== "" ) - { - // affichage de verification - echo '

' . str_replace("\n", '
', htmlspecialchars( $req) ) ."
\n"; - - // execution de la requete et affichage de l'erreur s'il y a lieu - if ( ! mysql_query($req) ) - { - echo '
' . 'Erreur No ' . mysql_errno() . ' : ' . htmlspecialchars( mysql_error() ) . "
\n"; - } - } - } - } -} -echo '' -?> - - - - AWOR - RAZBase - - - -

Remise à zéro de la base de données

-
- -

- Ce script va détruire toutes les tables d'une précédente installation (si elles existent) et va les recréer, dépourvues de données.
- Vous devrez utiliser un compte SQL qui ait les droits nécessaires (DROP, CREATE TABLE...). Notez que ces droits sont superflus pour le fonctionnement normal de l'application.
- Etes-vous sûr de vouloir réinitialiser la base de données ?
-
-
-
-
- - -

-
- - -'; - $errmsg = SQLConnect( addslashes($_POST['SQLhost']),addslashes($_POST['SQLuser']),addslashes($_POST['SQLpwd']),addslashes($_POST['SQLdb']) ); - if ( $_POST['confirm'] === '1' ) - { - if ( is_string($errmsg) ) { echo $errmsg; } else - { - SQLFileExec('base.sql'); -?> -

-
-

- Si vous le souhaitez, vous pouvez insérer un jeu d'essai pour tester l'application.
- Vous pouvez effectuer l'insertion de ce jeu d'essai avec le compte MySQL qui sera utilisé au fonctionnement de l'application, pour tester si les droits sont suffisants. -
-
-
-
- - -

-
- -

Retour à l'index

- - diff --git a/beta_old1/install/base.sql b/beta_old1/install/base.sql deleted file mode 100644 index 6d1ba97..0000000 --- a/beta_old1/install/base.sql +++ /dev/null @@ -1,123 +0,0 @@ --- --- Structure de la table `AWOR_Appartenir` --- - -DROP TABLE IF EXISTS `AWOR_Appartenir`; -CREATE TABLE IF NOT EXISTS `AWOR_Appartenir` ( - `idL` int(11) NOT NULL, - `idP` int(11) NOT NULL, - PRIMARY KEY (`idL`,`idP`) -); - --- -------------------------------------------------------- - --- --- Structure de la table `Choisir` --- - -DROP TABLE IF EXISTS `AWOR_Choisir`; -CREATE TABLE IF NOT EXISTS `AWOR_Choisir` ( - `idC` int(11) NOT NULL, - `idP` int(11) NOT NULL, - `estDispo` set('oui','non') NOT NULL, - PRIMARY KEY (`idC`,`idP`) -); - --- -------------------------------------------------------- - --- --- Structure de la table `AWOR_Creneau` --- - -DROP TABLE IF EXISTS `AWOR_Creneau`; -CREATE TABLE IF NOT EXISTS `AWOR_Creneau` ( - `idC` int(11) NOT NULL auto_increment, - `dateHeure` datetime NOT NULL, - `duree` int(11) NOT NULL, - `idR` int(11) NOT NULL, - PRIMARY KEY (`idC`) -); - --- -------------------------------------------------------- - --- --- Structure de la table `AWOR_Fichier` --- - -DROP TABLE IF EXISTS `AWOR_Fichier`; -CREATE TABLE IF NOT EXISTS `AWOR_Fichier` ( - `idFic` int(11) NOT NULL auto_increment, - `nomFic` varchar(256) NOT NULL, - `idR` int(11) NOT NULL, - PRIMARY KEY (`idFic`) -); - --- -------------------------------------------------------- - --- --- Structure de la table `AWOR_Liste` --- - -DROP TABLE IF EXISTS `AWOR_Liste`; -CREATE TABLE IF NOT EXISTS `AWOR_Liste` ( - `idL` int(11) NOT NULL auto_increment, - `libelleL` varchar(50) NOT NULL, - `estPrivee` set('oui','non') NOT NULL default 'oui', - `idP_Createur` int(11) default NULL, - PRIMARY KEY (`idL`) -); - --- -------------------------------------------------------- - --- --- Structure de la table `AWOR_Personne` --- - -DROP TABLE IF EXISTS `AWOR_Personne`; -CREATE TABLE IF NOT EXISTS `AWOR_Personne` ( - `idP` int(11) NOT NULL auto_increment, - `courrielP` varchar(50) NOT NULL, - `loginP` varchar(50) default NULL, - `nomP` varchar(50) NOT NULL, - `prenomP` varchar(50) NOT NULL, - `estAdmin` set('oui','non') NOT NULL default 'non', - `methodeAuth` set('pop','webetud','bypass') NOT NULL default 'pop', - PRIMARY KEY (`idP`), - UNIQUE KEY `loginP` (`loginP`), - UNIQUE KEY `courrielP` (`courrielP`) -); - --- -------------------------------------------------------- - --- --- Structure de la table `AWOR_Repondre` --- - -DROP TABLE IF EXISTS `AWOR_Repondre`; -CREATE TABLE IF NOT EXISTS `AWOR_Repondre` ( - `idR` int(11) NOT NULL, - `idP` int(11) NOT NULL, - `commentaireReponse` varchar(500) default NULL, - PRIMARY KEY (`idR`,`idP`) -); - --- -------------------------------------------------------- - --- --- Structure de la table `Reunion` --- - -DROP TABLE IF EXISTS `AWOR_Reunion`; -CREATE TABLE IF NOT EXISTS `AWOR_Reunion` ( - `idR` int(11) NOT NULL auto_increment, - `objetR` varchar(80) NOT NULL, - `ordreJourR` varchar(250), - `lieuR` varchar(50), - `remarquesR` varchar(500), - `montrerDispoR` set('oui','non') NOT NULL default 'non', - `estAnnulee` set('oui','non') NOT NULL default 'non', - `idP_Orga` int(11) NOT NULL, - `idC_Fixe` int(11) default NULL, - `idL` int(11) default NULL, - PRIMARY KEY (`idR`) -); diff --git a/beta_old1/install/jeu_essai.sql b/beta_old1/install/jeu_essai.sql deleted file mode 100644 index 7723733..0000000 --- a/beta_old1/install/jeu_essai.sql +++ /dev/null @@ -1,114 +0,0 @@ --- --- Base de données: `awor` --- - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Appartenir` --- -DELETE FROM `AWOR_Appartenir`; -INSERT INTO `AWOR_Appartenir` (`idL`, `idP`) VALUES (1, 2), -(1, 3), -(1, 4), -(1, 5), -(2, 1), -(2, 2), -(2, 4), -(2, 5), -(3, 1), -(3, 2), -(3, 3), -(4, 1), -(4, 4), -(4, 5), -(5, 1), -(5, 4), -(5, 5), -(6, 1), -(6, 2), -(6, 3), -(8, 1), -(8, 2), -(8, 3), -(8, 4); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Choisir` --- -DELETE FROM `AWOR_Choisir`; -INSERT INTO `AWOR_Choisir` (`idC`, `idP`, `estDispo`) VALUES (1, 3, 'oui'), -(6, 1, 'oui'), -(7, 1, 'non'), -(1, 2, 'oui'), -(2, 2, 'non'), -(3, 2, 'oui'), -(4, 2, 'non'), -(5, 2, 'oui'); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Creneau` --- -DELETE FROM `AWOR_Creneau`; -INSERT INTO `AWOR_Creneau` (`idC`, `dateHeure`, `duree`, `idR`) VALUES (1, '2007-04-01 07:45:00', 645, 1), -(2, '2007-04-03 09:15:00', 75, 1), -(3, '2007-04-10 09:15:00', 75, 1), -(4, '2007-04-17 09:15:00', 75, 1), -(5, '2007-04-24 09:15:00', 75, 1), -(6, '2007-06-20 10:10:00', 80, 2), -(7, '2007-06-25 12:00:00', 30, 2), -(8, '2007-04-25 00:00:00', 0, 4); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Fichier` --- -DELETE FROM `AWOR_Fichier`; -INSERT INTO `AWOR_Fichier` (`idFic`, `nomFic`, `idR`) VALUES (1, 'r1_READ_ME.pdf', 1), -(2, 'r2_IUP MER.txt', 2); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Liste` --- -DELETE FROM `AWOR_Liste`; -INSERT INTO `AWOR_Liste` (`idL`, `libelleL`, `estPrivee`, `idP_Createur`) VALUES (1, 'interne_idR_1', 'oui', NULL), -(2, 'interne_idR_2', 'oui', NULL), -(3, 'Amis', 'oui', 3), -(4, 'interne_idR_3', 'oui', NULL), -(5, 'interne_idR_4', 'oui', NULL), -(6, 'Créateurs d''AWOR', 'oui', 1), -(7, 'interne_idR_5', 'oui', NULL), -(8, 'MaListePerso', 'oui', 2); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Personne` --- -DELETE FROM `AWOR_Personne`; -INSERT INTO `AWOR_Personne` (`idP`, `courrielP`, `loginP`, `nomP`, `prenomP`, `estAdmin`, `methodeAuth`) VALUES (1, 'lpouzenc@wanadoo.fr', 'lpouzenc', 'Pouzenc', 'Ludovic', 'oui', 'pop'), -(2, 'jeremie.denoyer@etu.iut-blagnac.fr', 'jeremie.denoyer', 'jeremie', 'denoyer', 'non', 'pop'), -(3, 'julien.sere@free.fr', 'julien.sere', 'Julien', 'Sere', 'non', 'pop'), -(4, 'soule@iut-blagnac.fr', 'soule@iut-blagnac.fr', 'Soulé', 'Geneviève', 'non', 'pop'), -(5, 'inglebert@iut-blagnac.fr', 'inglebert@iut-blagnac.fr', 'Inglebert', 'Jean-Michel', 'non', 'bypass'); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Repondre` --- -DELETE FROM `AWOR_Repondre`; -INSERT INTO `AWOR_Repondre` (`idR`, `idP`, `commentaireReponse`) VALUES (1, 1, 'Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...'), -(1, 3, 'Un commentaire à [ | ) @ {[| @#~{[#`|['), -(3, 1, 'Réunion juste pour le test...'); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Reunion` --- -DELETE FROM `AWOR_Reunion`; -INSERT INTO `AWOR_Reunion` (`idR`, `objetR`, `ordreJourR`, `lieuR`, `remarquesR`, `montrerDispoR`, `estAnnulee`, `idP_Orga`, `idC_Fixe`, `idL`) VALUES (1, 'Recette du projet tuteuré', 'Recette de cette magnifique application :-)', 'Salle 219', 'Aucune', 'non', 'non', 1, NULL, 1), -(2, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 3, NULL, 2), -(3, 'Réunion annulée - essais', '', 'Nullepart', '', 'oui', 'oui', 1, NULL, 4), -(4, 'Réunion fixée pour tester', '', '', '', 'non', 'non', 1, 8, 5), -(5, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 2, NULL, 7); diff --git a/beta_old1/install/jeu_essai.sql~ b/beta_old1/install/jeu_essai.sql~ deleted file mode 100644 index f2d25b3..0000000 --- a/beta_old1/install/jeu_essai.sql~ +++ /dev/null @@ -1,114 +0,0 @@ --- --- Base de données: `awor` --- - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Appartenir` --- -DELETE FROM `AWOR_Appartenir`; -INSERT INTO `AWOR_Appartenir` (`idL`, `idP`) VALUES (1, 2), -(1, 3), -(1, 4), -(1, 5), -(2, 1), -(2, 2), -(2, 4), -(2, 5), -(3, 1), -(3, 2), -(3, 3), -(4, 1), -(4, 4), -(4, 5), -(5, 1), -(5, 4), -(5, 5), -(6, 1), -(6, 2), -(6, 3), -(8, 1), -(8, 2), -(8, 3), -(8, 4); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Choisir` --- -DELETE FROM `AWOR_Choisir`; -INSERT INTO `AWOR_Choisir` (`idC`, `idP`, `estDispo`) VALUES (1, 3, 'oui'), -(6, 1, 'oui'), -(7, 1, 'non'), -(1, 2, 'oui'), -(2, 2, 'non'), -(3, 2, 'oui'), -(4, 2, 'non'), -(5, 2, 'oui'); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Creneau` --- -DELETE FROM `AWOR_Creneau`; -INSERT INTO `AWOR_Creneau` (`idC`, `dateHeure`, `duree`, `idR`) VALUES (1, '2007-04-01 07:45:00', 645, 1), -(2, '2007-04-03 09:15:00', 75, 1), -(3, '2007-04-10 09:15:00', 75, 1), -(4, '2007-04-17 09:15:00', 75, 1), -(5, '2007-04-24 09:15:00', 75, 1), -(6, '2007-06-20 10:10:00', 80, 2), -(7, '2007-06-25 12:00:00', 30, 2), -(8, '2007-04-25 00:00:00', 0, 4); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Fichier` --- -DELETE FROM `AWOR_Fichier`; -INSERT INTO `AWOR_Fichier` (`idFic`, `nomFic`, `idR`) VALUES (1, 'r1_READ_ME.pdf', 1), -(2, 'r2_IUP MER.txt', 2); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Liste` --- -DELETE FROM `AWOR_Liste`; -INSERT INTO `AWOR_Liste` (`idL`, `libelleL`, `estPrivee`, `idP_Createur`) VALUES (1, 'interne_idR_1', 'oui', NULL), -(2, 'interne_idR_2', 'oui', NULL), -(3, 'Amis', 'oui', 3), -(4, 'interne_idR_3', 'oui', NULL), -(5, 'interne_idR_4', 'oui', NULL), -(6, 'Créateurs d''AWOR', 'oui', 1), -(7, 'interne_idR_5', 'oui', NULL), -(8, 'MaListePerso', 'oui', 2); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Personne` --- -DELETE FROM `AWOR_Personne`; -INSERT INTO `AWOR_Personne` (`idP`, `courrielP`, `loginP`, `nomP`, `prenomP`, `estAdmin`, `methodeAuth`) VALUES (1, 'lpouzenc@wanadoo.fr', 'lpouzenc', 'Pouzenc', 'Ludovic', 'oui', 'bypass'), -(2, 'jeremie.denoyer@etu.iut-blagnac.fr', 'jeremie.denoyer', 'jeremie', 'denoyer', 'non', 'bypass'), -(3, 'julien.sere@free.fr', 'julien.sere', 'Julien', 'Sere', 'non', 'bypass'), -(4, 'soule@iut-blagnac.fr', 'soule@iut-blagnac.fr', 'Soulé', 'Geneviève', 'non', 'bypass'), -(5, 'inglebert@iut-blagnac.fr', 'inglebert@iut-blagnac.fr', 'Inglebert', 'Jean-Michel', 'non', 'bypass'); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Repondre` --- -DELETE FROM `AWOR_Repondre`; -INSERT INTO `AWOR_Repondre` (`idR`, `idP`, `commentaireReponse`) VALUES (1, 1, 'Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...Test de commentaire un peu long...'), -(1, 3, 'Un commentaire à [ | ) @ {[| @#~{[#`|['), -(3, 1, 'Réunion juste pour le test...'); - --- -------------------------------------------------------- --- --- Contenu de la table `AWOR_Reunion` --- -DELETE FROM `AWOR_Reunion`; -INSERT INTO `AWOR_Reunion` (`idR`, `objetR`, `ordreJourR`, `lieuR`, `remarquesR`, `montrerDispoR`, `estAnnulee`, `idP_Orga`, `idC_Fixe`, `idL`) VALUES (1, 'Recette du projet tuteuré', 'Recette de cette magnifique application :-)', 'Salle 219', 'Aucune', 'non', 'non', 1, NULL, 1), -(2, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 3, NULL, 2), -(3, 'Réunion annulée - essais', '', 'Nullepart', '', 'oui', 'oui', 1, NULL, 4), -(4, 'Réunion fixée pour tester', '', '', '', 'non', 'non', 1, 8, 5), -(5, 'Renseignez', NULL, NULL, NULL, 'non', 'non', 2, NULL, 7); -- cgit v1.2.3