From 19cdd5e2fde57d53f05570cd50f5ffd223182566 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sat, 30 Jun 2018 11:26:37 +0200 Subject: Renommage pour diff entre appli_3_alpha_old et beta_old1 --- appli_3_alpha_old/README.lyx~ | 36 - appli_3_alpha_old/TODO_list.txt~ | 20 - appli_3_alpha_old/app/admin.php | 45 - appli_3_alpha_old/app/auth_dialog.php | 121 - appli_3_alpha_old/app/css/default.css | 240 -- appli_3_alpha_old/app/css/default_img/README.txt | 1 - appli_3_alpha_old/app/css/default_img/README.txt~ | 0 appli_3_alpha_old/app/css/default_img/titre.png | Bin 23658 -> 0 bytes appli_3_alpha_old/app/css/ice.css | 311 --- appli_3_alpha_old/app/css/ice_img/README.txt | 1 - appli_3_alpha_old/app/css/ice_img/logo.png | Bin 5040 -> 0 bytes appli_3_alpha_old/app/css/ice_img/masque.png | Bin 415 -> 0 bytes appli_3_alpha_old/app/css/ice_img/titleTable.png | Bin 1248 -> 0 bytes appli_3_alpha_old/app/css/ice_img/titre.png | Bin 23658 -> 0 bytes appli_3_alpha_old/app/css/ice_moche.css | 233 -- appli_3_alpha_old/app/css/ice_moche_img/README.txt | 1 - appli_3_alpha_old/app/css/ice_moche_img/logo.png | Bin 5040 -> 0 bytes appli_3_alpha_old/app/css/ice_moche_img/masque.png | Bin 415 -> 0 bytes .../app/css/ice_moche_img/titleTable.png | Bin 1248 -> 0 bytes appli_3_alpha_old/app/css/ice_moche_img/titre.png | Bin 23658 -> 0 bytes appli_3_alpha_old/app/css/ice_moche_nohelp.css | 252 --- appli_3_alpha_old/app/css/ice_nohelp.css | 311 --- appli_3_alpha_old/app/deco.php | 36 - appli_3_alpha_old/app/details_reunion.php | 121 - appli_3_alpha_old/app/help/admin.php.hlp | 23 - appli_3_alpha_old/app/help/auth_dialog.php.hlp | 2 - appli_3_alpha_old/app/help/details_reunion.php.hlp | 4 - .../app/help/details_reunion_admin.php.hlp | 17 - appli_3_alpha_old/app/help/groupe.hlp | 1 - appli_3_alpha_old/app/help/index.php.hlp | 7 - appli_3_alpha_old/app/help/listes.php.hlp | 1 - appli_3_alpha_old/app/help/modele_page.php.hlp | 17 - appli_3_alpha_old/app/help/organiser.php.hlp | 2 - appli_3_alpha_old/app/help/profil.php.hlp | 2 - appli_3_alpha_old/app/help/sendmail.php.hlp | 2 - appli_3_alpha_old/app/ical.php | 36 - appli_3_alpha_old/app/images/addP.gif | Bin 363 -> 0 bytes appli_3_alpha_old/app/images/button_del.png | Bin 1429 -> 0 bytes appli_3_alpha_old/app/images/button_ok.png | Bin 1679 -> 0 bytes appli_3_alpha_old/app/images/del.gif | Bin 882 -> 0 bytes appli_3_alpha_old/app/images/details.png | Bin 237 -> 0 bytes appli_3_alpha_old/app/images/editCreneau2.gif | Bin 865 -> 0 bytes appli_3_alpha_old/app/images/logo.png | Bin 5040 -> 0 bytes appli_3_alpha_old/app/images/masque.png | Bin 415 -> 0 bytes appli_3_alpha_old/app/images/ok.gif | Bin 340 -> 0 bytes appli_3_alpha_old/app/images/question.gif | Bin 640 -> 0 bytes appli_3_alpha_old/app/images/supprimer.png | Bin 244 -> 0 bytes appli_3_alpha_old/app/images/vcss.gif | Bin 1547 -> 0 bytes appli_3_alpha_old/app/images/vxhtml.gif | Bin 2344 -> 0 bytes appli_3_alpha_old/app/images/wai.gif | Bin 2370 -> 0 bytes appli_3_alpha_old/app/include/connect.inc.php | 14 - appli_3_alpha_old/app/include/ical.inc.php | 68 - appli_3_alpha_old/app/include/je.inc.php | 244 --- appli_3_alpha_old/app/include/ju.inc.php | 230 -- appli_3_alpha_old/app/include/ludo/TODO_list.txt | 24 - appli_3_alpha_old/app/include/ludo/auth.inc.php | 78 - appli_3_alpha_old/app/include/ludo/config.inc.php | 73 - .../app/include/ludo/div_create_or_modif.php | 79 - .../app/include/ludo/fonctions.inc.php | 515 ----- .../app/include/ludo/html_elements.inc.php | 183 -- .../app/include/ludo/mail_textarea.php | 44 - appli_3_alpha_old/app/include/ludo/majDispo.php | 41 - appli_3_alpha_old/app/include/ludo/redir.inc.php | 20 - .../app/include/ludo/session_verify.inc.php | 9 - appli_3_alpha_old/app/index.php | 123 -- appli_3_alpha_old/app/install/RAZbase.php | 130 -- appli_3_alpha_old/app/install/base.sql | 123 -- appli_3_alpha_old/app/install/jeu_essai.sql | 2 - appli_3_alpha_old/app/listes.php | 48 - appli_3_alpha_old/app/modele_page.php | 56 - appli_3_alpha_old/app/organiser.php | 24 - appli_3_alpha_old/app/popcommentaire.php | 23 - appli_3_alpha_old/app/popcreneau.php | 90 - appli_3_alpha_old/app/popdeletelist.php | 20 - appli_3_alpha_old/app/popfixer.php | 42 - appli_3_alpha_old/app/popnewlist.php | 3 - appli_3_alpha_old/app/poppersonne.php | 112 - appli_3_alpha_old/app/poppersonneliste.php | 27 - appli_3_alpha_old/app/profil.php | 59 - appli_3_alpha_old/app/script.js | 341 --- appli_3_alpha_old/app/sendmail.php | 196 -- appli_3_alpha_old/app/templates/mail_annul.php | 12 - appli_3_alpha_old/app/templates/mail_cree.php | 13 - appli_3_alpha_old/app/templates/mail_fixee.php | 14 - appli_3_alpha_old/app/templates/mail_modif.php | 13 - appli_3_alpha_old/app/test.php | 8 - appli_3_alpha_old/app/testGet.php | 18 - appli_3_alpha_old/doc/README | 13 - appli_3_alpha_old/doc/README.css | 109 - appli_3_alpha_old/doc/README.html | 422 ---- appli_3_alpha_old/doc/README.lyx | 521 ----- appli_3_alpha_old/doc/README.lyx~ | 521 ----- appli_3_alpha_old/doc/README.pdf | Bin 73334 -> 0 bytes appli_3_alpha_old/doc/README.ps | 2306 -------------------- appli_3_alpha_old/doc/README.txt | 232 -- beta_old1/README.lyx~ | 36 + beta_old1/TODO_list.txt~ | 20 + beta_old1/app/admin.php | 45 + 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 0 -> 23658 bytes beta_old1/app/css/ice.css | 311 +++ beta_old1/app/css/ice_img/README.txt | 1 + beta_old1/app/css/ice_img/logo.png | Bin 0 -> 5040 bytes beta_old1/app/css/ice_img/masque.png | Bin 0 -> 415 bytes beta_old1/app/css/ice_img/titleTable.png | Bin 0 -> 1248 bytes beta_old1/app/css/ice_img/titre.png | Bin 0 -> 23658 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 0 -> 5040 bytes beta_old1/app/css/ice_moche_img/masque.png | Bin 0 -> 415 bytes beta_old1/app/css/ice_moche_img/titleTable.png | Bin 0 -> 1248 bytes beta_old1/app/css/ice_moche_img/titre.png | Bin 0 -> 23658 bytes beta_old1/app/css/ice_moche_nohelp.css | 252 +++ beta_old1/app/css/ice_nohelp.css | 311 +++ 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 0 -> 363 bytes beta_old1/app/images/button_del.png | Bin 0 -> 1429 bytes beta_old1/app/images/button_ok.png | Bin 0 -> 1679 bytes beta_old1/app/images/del.gif | Bin 0 -> 882 bytes beta_old1/app/images/details.png | Bin 0 -> 237 bytes beta_old1/app/images/editCreneau2.gif | Bin 0 -> 865 bytes beta_old1/app/images/logo.png | Bin 0 -> 5040 bytes beta_old1/app/images/masque.png | Bin 0 -> 415 bytes beta_old1/app/images/ok.gif | Bin 0 -> 340 bytes beta_old1/app/images/question.gif | Bin 0 -> 640 bytes beta_old1/app/images/supprimer.png | Bin 0 -> 244 bytes beta_old1/app/images/vcss.gif | Bin 0 -> 1547 bytes beta_old1/app/images/vxhtml.gif | Bin 0 -> 2344 bytes beta_old1/app/images/wai.gif | Bin 0 -> 2370 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 | 230 ++ 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 | 73 + beta_old1/app/include/ludo/div_create_or_modif.php | 79 + beta_old1/app/include/ludo/fonctions.inc.php | 515 +++++ beta_old1/app/include/ludo/html_elements.inc.php | 183 ++ beta_old1/app/include/ludo/mail_textarea.php | 44 + beta_old1/app/include/ludo/majDispo.php | 41 + 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/install/RAZbase.php | 130 ++ beta_old1/app/install/base.sql | 123 ++ beta_old1/app/install/jeu_essai.sql | 2 + beta_old1/app/listes.php | 48 + beta_old1/app/modele_page.php | 56 + 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/README | 13 + beta_old1/doc/README.css | 109 + beta_old1/doc/README.html | 422 ++++ beta_old1/doc/README.lyx | 521 +++++ beta_old1/doc/README.lyx~ | 521 +++++ beta_old1/doc/README.pdf | Bin 0 -> 73334 bytes beta_old1/doc/README.ps | 2306 ++++++++++++++++++++ beta_old1/doc/README.txt | 232 ++ 190 files changed, 9086 insertions(+), 9086 deletions(-) delete mode 100644 appli_3_alpha_old/README.lyx~ delete mode 100644 appli_3_alpha_old/TODO_list.txt~ delete mode 100644 appli_3_alpha_old/app/admin.php delete mode 100644 appli_3_alpha_old/app/auth_dialog.php delete mode 100644 appli_3_alpha_old/app/css/default.css delete mode 100644 appli_3_alpha_old/app/css/default_img/README.txt delete mode 100644 appli_3_alpha_old/app/css/default_img/README.txt~ delete mode 100644 appli_3_alpha_old/app/css/default_img/titre.png delete mode 100644 appli_3_alpha_old/app/css/ice.css delete mode 100644 appli_3_alpha_old/app/css/ice_img/README.txt delete mode 100644 appli_3_alpha_old/app/css/ice_img/logo.png delete mode 100644 appli_3_alpha_old/app/css/ice_img/masque.png delete mode 100644 appli_3_alpha_old/app/css/ice_img/titleTable.png delete mode 100644 appli_3_alpha_old/app/css/ice_img/titre.png delete mode 100644 appli_3_alpha_old/app/css/ice_moche.css delete mode 100644 appli_3_alpha_old/app/css/ice_moche_img/README.txt delete mode 100644 appli_3_alpha_old/app/css/ice_moche_img/logo.png delete mode 100644 appli_3_alpha_old/app/css/ice_moche_img/masque.png delete mode 100644 appli_3_alpha_old/app/css/ice_moche_img/titleTable.png delete mode 100644 appli_3_alpha_old/app/css/ice_moche_img/titre.png delete mode 100644 appli_3_alpha_old/app/css/ice_moche_nohelp.css delete mode 100644 appli_3_alpha_old/app/css/ice_nohelp.css delete mode 100644 appli_3_alpha_old/app/deco.php delete mode 100644 appli_3_alpha_old/app/details_reunion.php delete mode 100644 appli_3_alpha_old/app/help/admin.php.hlp delete mode 100644 appli_3_alpha_old/app/help/auth_dialog.php.hlp delete mode 100644 appli_3_alpha_old/app/help/details_reunion.php.hlp delete mode 100644 appli_3_alpha_old/app/help/details_reunion_admin.php.hlp delete mode 100644 appli_3_alpha_old/app/help/groupe.hlp delete mode 100644 appli_3_alpha_old/app/help/index.php.hlp delete mode 100644 appli_3_alpha_old/app/help/listes.php.hlp delete mode 100644 appli_3_alpha_old/app/help/modele_page.php.hlp delete mode 100644 appli_3_alpha_old/app/help/organiser.php.hlp delete mode 100644 appli_3_alpha_old/app/help/profil.php.hlp delete mode 100644 appli_3_alpha_old/app/help/sendmail.php.hlp delete mode 100644 appli_3_alpha_old/app/ical.php delete mode 100644 appli_3_alpha_old/app/images/addP.gif delete mode 100644 appli_3_alpha_old/app/images/button_del.png delete mode 100644 appli_3_alpha_old/app/images/button_ok.png delete mode 100644 appli_3_alpha_old/app/images/del.gif delete mode 100644 appli_3_alpha_old/app/images/details.png delete mode 100644 appli_3_alpha_old/app/images/editCreneau2.gif delete mode 100644 appli_3_alpha_old/app/images/logo.png delete mode 100644 appli_3_alpha_old/app/images/masque.png delete mode 100644 appli_3_alpha_old/app/images/ok.gif delete mode 100644 appli_3_alpha_old/app/images/question.gif delete mode 100644 appli_3_alpha_old/app/images/supprimer.png delete mode 100644 appli_3_alpha_old/app/images/vcss.gif delete mode 100644 appli_3_alpha_old/app/images/vxhtml.gif delete mode 100644 appli_3_alpha_old/app/images/wai.gif delete mode 100644 appli_3_alpha_old/app/include/connect.inc.php delete mode 100644 appli_3_alpha_old/app/include/ical.inc.php delete mode 100644 appli_3_alpha_old/app/include/je.inc.php delete mode 100644 appli_3_alpha_old/app/include/ju.inc.php delete mode 100644 appli_3_alpha_old/app/include/ludo/TODO_list.txt delete mode 100644 appli_3_alpha_old/app/include/ludo/auth.inc.php delete mode 100644 appli_3_alpha_old/app/include/ludo/config.inc.php delete mode 100644 appli_3_alpha_old/app/include/ludo/div_create_or_modif.php delete mode 100644 appli_3_alpha_old/app/include/ludo/fonctions.inc.php delete mode 100644 appli_3_alpha_old/app/include/ludo/html_elements.inc.php delete mode 100644 appli_3_alpha_old/app/include/ludo/mail_textarea.php delete mode 100644 appli_3_alpha_old/app/include/ludo/majDispo.php delete mode 100644 appli_3_alpha_old/app/include/ludo/redir.inc.php delete mode 100644 appli_3_alpha_old/app/include/ludo/session_verify.inc.php delete mode 100644 appli_3_alpha_old/app/index.php delete mode 100644 appli_3_alpha_old/app/install/RAZbase.php delete mode 100644 appli_3_alpha_old/app/install/base.sql delete mode 100644 appli_3_alpha_old/app/install/jeu_essai.sql delete mode 100644 appli_3_alpha_old/app/listes.php delete mode 100644 appli_3_alpha_old/app/modele_page.php delete mode 100644 appli_3_alpha_old/app/organiser.php delete mode 100644 appli_3_alpha_old/app/popcommentaire.php delete mode 100644 appli_3_alpha_old/app/popcreneau.php delete mode 100644 appli_3_alpha_old/app/popdeletelist.php delete mode 100644 appli_3_alpha_old/app/popfixer.php delete mode 100644 appli_3_alpha_old/app/popnewlist.php delete mode 100644 appli_3_alpha_old/app/poppersonne.php delete mode 100644 appli_3_alpha_old/app/poppersonneliste.php delete mode 100644 appli_3_alpha_old/app/profil.php delete mode 100644 appli_3_alpha_old/app/script.js delete mode 100644 appli_3_alpha_old/app/sendmail.php delete mode 100644 appli_3_alpha_old/app/templates/mail_annul.php delete mode 100644 appli_3_alpha_old/app/templates/mail_cree.php delete mode 100644 appli_3_alpha_old/app/templates/mail_fixee.php delete mode 100644 appli_3_alpha_old/app/templates/mail_modif.php delete mode 100644 appli_3_alpha_old/app/test.php delete mode 100644 appli_3_alpha_old/app/testGet.php delete mode 100644 appli_3_alpha_old/doc/README delete mode 100644 appli_3_alpha_old/doc/README.css delete mode 100644 appli_3_alpha_old/doc/README.html delete mode 100644 appli_3_alpha_old/doc/README.lyx delete mode 100644 appli_3_alpha_old/doc/README.lyx~ delete mode 100644 appli_3_alpha_old/doc/README.pdf delete mode 100644 appli_3_alpha_old/doc/README.ps delete mode 100644 appli_3_alpha_old/doc/README.txt create mode 100644 beta_old1/README.lyx~ create mode 100644 beta_old1/TODO_list.txt~ create mode 100644 beta_old1/app/admin.php create mode 100644 beta_old1/app/auth_dialog.php create mode 100644 beta_old1/app/css/default.css create mode 100644 beta_old1/app/css/default_img/README.txt create mode 100644 beta_old1/app/css/default_img/README.txt~ create mode 100644 beta_old1/app/css/default_img/titre.png create mode 100644 beta_old1/app/css/ice.css create mode 100644 beta_old1/app/css/ice_img/README.txt create mode 100644 beta_old1/app/css/ice_img/logo.png create mode 100644 beta_old1/app/css/ice_img/masque.png create mode 100644 beta_old1/app/css/ice_img/titleTable.png create mode 100644 beta_old1/app/css/ice_img/titre.png create mode 100644 beta_old1/app/css/ice_moche.css create mode 100644 beta_old1/app/css/ice_moche_img/README.txt create mode 100644 beta_old1/app/css/ice_moche_img/logo.png create mode 100644 beta_old1/app/css/ice_moche_img/masque.png create mode 100644 beta_old1/app/css/ice_moche_img/titleTable.png create mode 100644 beta_old1/app/css/ice_moche_img/titre.png create mode 100644 beta_old1/app/css/ice_moche_nohelp.css create mode 100644 beta_old1/app/css/ice_nohelp.css create mode 100644 beta_old1/app/deco.php create mode 100644 beta_old1/app/details_reunion.php create mode 100644 beta_old1/app/help/admin.php.hlp create mode 100644 beta_old1/app/help/auth_dialog.php.hlp create mode 100644 beta_old1/app/help/details_reunion.php.hlp create mode 100644 beta_old1/app/help/details_reunion_admin.php.hlp create mode 100644 beta_old1/app/help/groupe.hlp create mode 100644 beta_old1/app/help/index.php.hlp create mode 100644 beta_old1/app/help/listes.php.hlp create mode 100644 beta_old1/app/help/modele_page.php.hlp create mode 100644 beta_old1/app/help/organiser.php.hlp create mode 100644 beta_old1/app/help/profil.php.hlp create mode 100644 beta_old1/app/help/sendmail.php.hlp create mode 100644 beta_old1/app/ical.php create mode 100644 beta_old1/app/images/addP.gif create mode 100644 beta_old1/app/images/button_del.png create mode 100644 beta_old1/app/images/button_ok.png create mode 100644 beta_old1/app/images/del.gif create mode 100644 beta_old1/app/images/details.png create mode 100644 beta_old1/app/images/editCreneau2.gif create mode 100644 beta_old1/app/images/logo.png create mode 100644 beta_old1/app/images/masque.png create mode 100644 beta_old1/app/images/ok.gif create mode 100644 beta_old1/app/images/question.gif create mode 100644 beta_old1/app/images/supprimer.png create mode 100644 beta_old1/app/images/vcss.gif create mode 100644 beta_old1/app/images/vxhtml.gif create mode 100644 beta_old1/app/images/wai.gif create mode 100644 beta_old1/app/include/connect.inc.php create mode 100644 beta_old1/app/include/ical.inc.php create mode 100644 beta_old1/app/include/je.inc.php create mode 100644 beta_old1/app/include/ju.inc.php create mode 100644 beta_old1/app/include/ludo/TODO_list.txt create mode 100644 beta_old1/app/include/ludo/auth.inc.php create mode 100644 beta_old1/app/include/ludo/config.inc.php create mode 100644 beta_old1/app/include/ludo/div_create_or_modif.php create mode 100644 beta_old1/app/include/ludo/fonctions.inc.php create mode 100644 beta_old1/app/include/ludo/html_elements.inc.php create mode 100644 beta_old1/app/include/ludo/mail_textarea.php create mode 100644 beta_old1/app/include/ludo/majDispo.php create mode 100644 beta_old1/app/include/ludo/redir.inc.php create mode 100644 beta_old1/app/include/ludo/session_verify.inc.php create mode 100644 beta_old1/app/index.php create mode 100644 beta_old1/app/install/RAZbase.php create mode 100644 beta_old1/app/install/base.sql create mode 100644 beta_old1/app/install/jeu_essai.sql create mode 100644 beta_old1/app/listes.php create mode 100644 beta_old1/app/modele_page.php create mode 100644 beta_old1/app/organiser.php create mode 100644 beta_old1/app/popcommentaire.php create mode 100644 beta_old1/app/popcreneau.php create mode 100644 beta_old1/app/popdeletelist.php create mode 100644 beta_old1/app/popfixer.php create mode 100644 beta_old1/app/popnewlist.php create mode 100644 beta_old1/app/poppersonne.php create mode 100644 beta_old1/app/poppersonneliste.php create mode 100644 beta_old1/app/profil.php create mode 100644 beta_old1/app/script.js create mode 100644 beta_old1/app/sendmail.php create mode 100644 beta_old1/app/templates/mail_annul.php create mode 100644 beta_old1/app/templates/mail_cree.php create mode 100644 beta_old1/app/templates/mail_fixee.php create mode 100644 beta_old1/app/templates/mail_modif.php create mode 100644 beta_old1/app/test.php create mode 100644 beta_old1/app/testGet.php create mode 100644 beta_old1/doc/README create mode 100644 beta_old1/doc/README.css create mode 100644 beta_old1/doc/README.html create mode 100644 beta_old1/doc/README.lyx create mode 100644 beta_old1/doc/README.lyx~ create mode 100644 beta_old1/doc/README.pdf create mode 100644 beta_old1/doc/README.ps create mode 100644 beta_old1/doc/README.txt diff --git a/appli_3_alpha_old/README.lyx~ b/appli_3_alpha_old/README.lyx~ deleted file mode 100644 index a6acb17..0000000 --- a/appli_3_alpha_old/README.lyx~ +++ /dev/null @@ -1,36 +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 english -\inputencoding auto -\fontscheme default -\graphics default -\paperfontsize default -\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 english -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\end_header - -\begin_body - -\begin_layout Title - -\end_layout - -\end_body -\end_document diff --git a/appli_3_alpha_old/TODO_list.txt~ b/appli_3_alpha_old/TODO_list.txt~ deleted file mode 100644 index 44ec9ff..0000000 --- a/appli_3_alpha_old/TODO_list.txt~ +++ /dev/null @@ -1,20 +0,0 @@ -Faire des tests en affichant tous les messages, même E_NOTICE. -Intégrer ça dans la fonction qui gère le paramètre debug des pages. -error_reporting ( E_ALL ) -php_manual_fr/html/function.set-error-handler.html - -TODO : dans detail_reunion, vérifier que le id réunion nous concerne bien !!! - -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 ! - -Fermture des liens SQL ???? - - -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/appli_3_alpha_old/app/admin.php b/appli_3_alpha_old/app/admin.php deleted file mode 100644 index fffdd13..0000000 --- a/appli_3_alpha_old/app/admin.php +++ /dev/null @@ -1,45 +0,0 @@ -\n"; - -generate_html_divs_menu(); -?> -
-

- > Accueil - > Administration -

-
-
-'; - 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) - //~ admin_display_listes(); // Permet de virer des liste - //~ admin_display_fichiers(); // Permet de virer des fichiers, doit purger physiquement sur le disque - //~ admin_display_reunions(); // Permet de virer des gens, doit purger les tables Creneau et Choisir, Repondre, Fichiers - //~ admin_display_personnes(); // Permet de virer des gens, doit purger les tables Appartenir, Reunion - -echo "
\n"; -generate_html_div_footer(); -?> - - diff --git a/appli_3_alpha_old/app/auth_dialog.php b/appli_3_alpha_old/app/auth_dialog.php deleted file mode 100644 index 9d1d391..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/css/default.css b/appli_3_alpha_old/app/css/default.css deleted file mode 100644 index b8ecc3d..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/css/default_img/README.txt b/appli_3_alpha_old/app/css/default_img/README.txt deleted file mode 100644 index fec6abf..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/css/default_img/README.txt~ b/appli_3_alpha_old/app/css/default_img/README.txt~ deleted file mode 100644 index e69de29..0000000 diff --git a/appli_3_alpha_old/app/css/default_img/titre.png b/appli_3_alpha_old/app/css/default_img/titre.png deleted file mode 100644 index d8d9ce6..0000000 Binary files a/appli_3_alpha_old/app/css/default_img/titre.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice.css b/appli_3_alpha_old/app/css/ice.css deleted file mode 100644 index acc0714..0000000 --- a/appli_3_alpha_old/app/css/ice.css +++ /dev/null @@ -1,311 +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) */ -} -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; -} - - -#footer -{ - display:inline; - position:absolute; - text-align:center; - left:0px; - width:100%; - background-color:#551A8B; - top:100%; - height:2em; - padding-top:-2em; - margin-top:-2em; - color:#FFF; - font-size:x-small; -} -#footer li.left -{ - align-text:left; -} diff --git a/appli_3_alpha_old/app/css/ice_img/README.txt b/appli_3_alpha_old/app/css/ice_img/README.txt deleted file mode 100644 index b81d613..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/css/ice_img/logo.png b/appli_3_alpha_old/app/css/ice_img/logo.png deleted file mode 100644 index a768d45..0000000 Binary files a/appli_3_alpha_old/app/css/ice_img/logo.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_img/masque.png b/appli_3_alpha_old/app/css/ice_img/masque.png deleted file mode 100644 index 45a6027..0000000 Binary files a/appli_3_alpha_old/app/css/ice_img/masque.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_img/titleTable.png b/appli_3_alpha_old/app/css/ice_img/titleTable.png deleted file mode 100644 index e6c02d9..0000000 Binary files a/appli_3_alpha_old/app/css/ice_img/titleTable.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_img/titre.png b/appli_3_alpha_old/app/css/ice_img/titre.png deleted file mode 100644 index d8d9ce6..0000000 Binary files a/appli_3_alpha_old/app/css/ice_img/titre.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_moche.css b/appli_3_alpha_old/app/css/ice_moche.css deleted file mode 100644 index 0004b1a..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/css/ice_moche_img/README.txt b/appli_3_alpha_old/app/css/ice_moche_img/README.txt deleted file mode 100644 index b81d613..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/css/ice_moche_img/logo.png b/appli_3_alpha_old/app/css/ice_moche_img/logo.png deleted file mode 100644 index a768d45..0000000 Binary files a/appli_3_alpha_old/app/css/ice_moche_img/logo.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_moche_img/masque.png b/appli_3_alpha_old/app/css/ice_moche_img/masque.png deleted file mode 100644 index 45a6027..0000000 Binary files a/appli_3_alpha_old/app/css/ice_moche_img/masque.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_moche_img/titleTable.png b/appli_3_alpha_old/app/css/ice_moche_img/titleTable.png deleted file mode 100644 index e6c02d9..0000000 Binary files a/appli_3_alpha_old/app/css/ice_moche_img/titleTable.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_moche_img/titre.png b/appli_3_alpha_old/app/css/ice_moche_img/titre.png deleted file mode 100644 index d8d9ce6..0000000 Binary files a/appli_3_alpha_old/app/css/ice_moche_img/titre.png and /dev/null differ diff --git a/appli_3_alpha_old/app/css/ice_moche_nohelp.css b/appli_3_alpha_old/app/css/ice_moche_nohelp.css deleted file mode 100644 index 9032594..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/css/ice_nohelp.css b/appli_3_alpha_old/app/css/ice_nohelp.css deleted file mode 100644 index 48a9fd8..0000000 --- a/appli_3_alpha_old/app/css/ice_nohelp.css +++ /dev/null @@ -1,311 +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) */ -} -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: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; -} - -#footer -{ - display:block; - position:absolute; - text-align:center; - left:0px; - width:100%; - background-color:#551A8B; - top:100%; - height:2em; - padding-top:-2em; - margin-top:-2em; - color:#FFF; - font-size:x-small; -} \ No newline at end of file diff --git a/appli_3_alpha_old/app/deco.php b/appli_3_alpha_old/app/deco.php deleted file mode 100644 index 57a56bc..0000000 --- a/appli_3_alpha_old/app/deco.php +++ /dev/null @@ -1,36 +0,0 @@ - - -

Deconnexion

-
- -
- - - \ No newline at end of file diff --git a/appli_3_alpha_old/app/details_reunion.php b/appli_3_alpha_old/app/details_reunion.php deleted file mode 100644 index dc82c72..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/admin.php.hlp b/appli_3_alpha_old/app/help/admin.php.hlp deleted file mode 100644 index 3d669ec..0000000 --- a/appli_3_alpha_old/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 : - -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/appli_3_alpha_old/app/help/auth_dialog.php.hlp b/appli_3_alpha_old/app/help/auth_dialog.php.hlp deleted file mode 100644 index b83937b..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/details_reunion.php.hlp b/appli_3_alpha_old/app/help/details_reunion.php.hlp deleted file mode 100644 index 5434937..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/details_reunion_admin.php.hlp b/appli_3_alpha_old/app/help/details_reunion_admin.php.hlp deleted file mode 100644 index 41047ab..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/groupe.hlp b/appli_3_alpha_old/app/help/groupe.hlp deleted file mode 100644 index 0869bd5..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/index.php.hlp b/appli_3_alpha_old/app/help/index.php.hlp deleted file mode 100644 index be1ef30..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/listes.php.hlp b/appli_3_alpha_old/app/help/listes.php.hlp deleted file mode 100644 index c619e70..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/modele_page.php.hlp b/appli_3_alpha_old/app/help/modele_page.php.hlp deleted file mode 100644 index 75a26d5..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/organiser.php.hlp b/appli_3_alpha_old/app/help/organiser.php.hlp deleted file mode 100644 index b24adaf..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/profil.php.hlp b/appli_3_alpha_old/app/help/profil.php.hlp deleted file mode 100644 index 9328ff5..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/help/sendmail.php.hlp b/appli_3_alpha_old/app/help/sendmail.php.hlp deleted file mode 100644 index 4a31a5b..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/ical.php b/appli_3_alpha_old/app/ical.php deleted file mode 100644 index f2aeb26..0000000 --- a/appli_3_alpha_old/app/ical.php +++ /dev/null @@ -1,36 +0,0 @@ -\n"; -generate_html_div_errmsg($errmsg); -?> - - - diff --git a/appli_3_alpha_old/app/images/addP.gif b/appli_3_alpha_old/app/images/addP.gif deleted file mode 100644 index aa77bef..0000000 Binary files a/appli_3_alpha_old/app/images/addP.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/images/button_del.png b/appli_3_alpha_old/app/images/button_del.png deleted file mode 100644 index 899b785..0000000 Binary files a/appli_3_alpha_old/app/images/button_del.png and /dev/null differ diff --git a/appli_3_alpha_old/app/images/button_ok.png b/appli_3_alpha_old/app/images/button_ok.png deleted file mode 100644 index 229550e..0000000 Binary files a/appli_3_alpha_old/app/images/button_ok.png and /dev/null differ diff --git a/appli_3_alpha_old/app/images/del.gif b/appli_3_alpha_old/app/images/del.gif deleted file mode 100644 index cc89b0b..0000000 Binary files a/appli_3_alpha_old/app/images/del.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/images/details.png b/appli_3_alpha_old/app/images/details.png deleted file mode 100644 index 11982cc..0000000 Binary files a/appli_3_alpha_old/app/images/details.png and /dev/null differ diff --git a/appli_3_alpha_old/app/images/editCreneau2.gif b/appli_3_alpha_old/app/images/editCreneau2.gif deleted file mode 100644 index ba90a82..0000000 Binary files a/appli_3_alpha_old/app/images/editCreneau2.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/images/logo.png b/appli_3_alpha_old/app/images/logo.png deleted file mode 100644 index a768d45..0000000 Binary files a/appli_3_alpha_old/app/images/logo.png and /dev/null differ diff --git a/appli_3_alpha_old/app/images/masque.png b/appli_3_alpha_old/app/images/masque.png deleted file mode 100644 index 45a6027..0000000 Binary files a/appli_3_alpha_old/app/images/masque.png and /dev/null differ diff --git a/appli_3_alpha_old/app/images/ok.gif b/appli_3_alpha_old/app/images/ok.gif deleted file mode 100644 index 1935a84..0000000 Binary files a/appli_3_alpha_old/app/images/ok.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/images/question.gif b/appli_3_alpha_old/app/images/question.gif deleted file mode 100644 index d57516b..0000000 Binary files a/appli_3_alpha_old/app/images/question.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/images/supprimer.png b/appli_3_alpha_old/app/images/supprimer.png deleted file mode 100644 index a87033a..0000000 Binary files a/appli_3_alpha_old/app/images/supprimer.png and /dev/null differ diff --git a/appli_3_alpha_old/app/images/vcss.gif b/appli_3_alpha_old/app/images/vcss.gif deleted file mode 100644 index 020c75a..0000000 Binary files a/appli_3_alpha_old/app/images/vcss.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/images/vxhtml.gif b/appli_3_alpha_old/app/images/vxhtml.gif deleted file mode 100644 index 739585d..0000000 Binary files a/appli_3_alpha_old/app/images/vxhtml.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/images/wai.gif b/appli_3_alpha_old/app/images/wai.gif deleted file mode 100644 index b82d6e7..0000000 Binary files a/appli_3_alpha_old/app/images/wai.gif and /dev/null differ diff --git a/appli_3_alpha_old/app/include/connect.inc.php b/appli_3_alpha_old/app/include/connect.inc.php deleted file mode 100644 index b985b10..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/include/ical.inc.php b/appli_3_alpha_old/app/include/ical.inc.php deleted file mode 100644 index e79570b..0000000 --- a/appli_3_alpha_old/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 Appartenir A,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/appli_3_alpha_old/app/include/je.inc.php b/appli_3_alpha_old/app/include/je.inc.php deleted file mode 100644 index 3c87753..0000000 --- a/appli_3_alpha_old/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 Appartenir A, 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 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 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 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 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 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 Repondre R,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/appli_3_alpha_old/app/include/ju.inc.php b/appli_3_alpha_old/app/include/ju.inc.php deleted file mode 100644 index 49f0322..0000000 --- a/appli_3_alpha_old/app/include/ju.inc.php +++ /dev/null @@ -1,230 +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 : return "Erreur : Le fichier a une taille trop importante."; break; - 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) -{ - $requete = "SELECT * FROM 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 Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau; - echo $requete; - if($resultat = mysql_query($requete)) - { - while($ligne = mysql_fetch_array($resultat)) - { - supprimerCreneau($ligne["idC"]); - } - } - } -} - -function traiter_formulaire_maj_profil() -{ - $requete = "UPDATE 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 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 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 Creneau WHERE idC='".$idC."'")) - { - if(mysql_query("DELETE FROM 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 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/appli_3_alpha_old/app/include/ludo/TODO_list.txt b/appli_3_alpha_old/app/include/ludo/TODO_list.txt deleted file mode 100644 index 724c46c..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/include/ludo/auth.inc.php b/appli_3_alpha_old/app/include/ludo/auth.inc.php deleted file mode 100644 index 18b339d..0000000 --- a/appli_3_alpha_old/app/include/ludo/auth.inc.php +++ /dev/null @@ -1,78 +0,0 @@ - \ No newline at end of file diff --git a/appli_3_alpha_old/app/include/ludo/config.inc.php b/appli_3_alpha_old/app/include/ludo/config.inc.php deleted file mode 100644 index 51d6d73..0000000 --- a/appli_3_alpha_old/app/include/ludo/config.inc.php +++ /dev/null @@ -1,73 +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' - ) - ) -); -?> diff --git a/appli_3_alpha_old/app/include/ludo/div_create_or_modif.php b/appli_3_alpha_old/app/include/ludo/div_create_or_modif.php deleted file mode 100644 index 5849180..0000000 --- a/appli_3_alpha_old/app/include/ludo/div_create_or_modif.php +++ /dev/null @@ -1,79 +0,0 @@ - -
- -' -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
Objet : - > -
Lieu : - > -
Ordre du jour : - -
Remarques : - -
Etat : - Annulée - -
- - Annuler"; - ?> -
-
\ No newline at end of file diff --git a/appli_3_alpha_old/app/include/ludo/fonctions.inc.php b/appli_3_alpha_old/app/include/ludo/fonctions.inc.php deleted file mode 100644 index 7411000..0000000 --- a/appli_3_alpha_old/app/include/ludo/fonctions.inc.php +++ /dev/null @@ -1,515 +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 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 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 Personne p, Appartenir a, 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 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 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 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 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'; - - $query="UPDATE Reunion SET objetR='$objetR', lieuR='$lieuR', ordreJourR='$ordreJourR', remarquesR='$remarquesR', estAnnulee='$estAnnulee' 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 Reunion r, 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 :
- diff --git a/appli_3_alpha_old/app/include/ludo/html_elements.inc.php b/appli_3_alpha_old/app/include/ludo/html_elements.inc.php deleted file mode 100644 index 41fd812..0000000 --- a/appli_3_alpha_old/app/include/ludo/html_elements.inc.php +++ /dev/null @@ -1,183 +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

Aide

\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['awor']['custom_css'] ) ) { $css_selected=$_COOKIE['awor']['custom_css']; }else{$css_selected='';}; - echo '
' . "\n"; - 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/appli_3_alpha_old/app/include/ludo/mail_textarea.php b/appli_3_alpha_old/app/include/ludo/mail_textarea.php deleted file mode 100644 index cf4b6d7..0000000 --- a/appli_3_alpha_old/app/include/ludo/mail_textarea.php +++ /dev/null @@ -1,44 +0,0 @@ - - - - diff --git a/appli_3_alpha_old/app/include/ludo/majDispo.php b/appli_3_alpha_old/app/include/ludo/majDispo.php deleted file mode 100644 index ab7c200..0000000 --- a/appli_3_alpha_old/app/include/ludo/majDispo.php +++ /dev/null @@ -1,41 +0,0 @@ - \ No newline at end of file diff --git a/appli_3_alpha_old/app/include/ludo/redir.inc.php b/appli_3_alpha_old/app/include/ludo/redir.inc.php deleted file mode 100644 index 6baf40d..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/include/ludo/session_verify.inc.php b/appli_3_alpha_old/app/include/ludo/session_verify.inc.php deleted file mode 100644 index f1cea8b..0000000 --- a/appli_3_alpha_old/app/include/ludo/session_verify.inc.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/appli_3_alpha_old/app/index.php b/appli_3_alpha_old/app/index.php deleted file mode 100644 index eefb768..0000000 --- a/appli_3_alpha_old/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 Liste L,Reunion R,Appartenir A,Creneau C,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 Liste L,Reunion R,Appartenir A,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/appli_3_alpha_old/app/install/RAZbase.php b/appli_3_alpha_old/app/install/RAZbase.php deleted file mode 100644 index 9b9fa25..0000000 --- a/appli_3_alpha_old/app/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/appli_3_alpha_old/app/install/base.sql b/appli_3_alpha_old/app/install/base.sql deleted file mode 100644 index 6d1ba97..0000000 --- a/appli_3_alpha_old/app/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/appli_3_alpha_old/app/install/jeu_essai.sql b/appli_3_alpha_old/app/install/jeu_essai.sql deleted file mode 100644 index 889d4f6..0000000 --- a/appli_3_alpha_old/app/install/jeu_essai.sql +++ /dev/null @@ -1,2 +0,0 @@ --- phpMyAdmin SQL Dump --- TODO !! diff --git a/appli_3_alpha_old/app/listes.php b/appli_3_alpha_old/app/listes.php deleted file mode 100644 index 8a6e40d..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/modele_page.php b/appli_3_alpha_old/app/modele_page.php deleted file mode 100644 index e7d555a..0000000 --- a/appli_3_alpha_old/app/modele_page.php +++ /dev/null @@ -1,56 +0,0 @@ -\n"; -generate_html_divs_menu(); -generate_html_div_help(); -?> -
-

Page modèle

-

Modele de formulaire

- ' . "\n"; ?> -
-
- premier champ : - -
-
- deuxieme champ : - -
-
- - -
-
-
- -' . "\n"; } ?> -
- -

Appel de la fonction qui génère le tableau personne / créneaux

- -

Quelques éléments à mettre dans toutes les pages ou au moins certaines

- -

Etat des tableaux globaux

-
-
-	
-
- - - diff --git a/appli_3_alpha_old/app/organiser.php b/appli_3_alpha_old/app/organiser.php deleted file mode 100644 index 2afcbea..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/popcommentaire.php b/appli_3_alpha_old/app/popcommentaire.php deleted file mode 100644 index b585067..0000000 --- a/appli_3_alpha_old/app/popcommentaire.php +++ /dev/null @@ -1,23 +0,0 @@ - -

Editer votre commentaire

- \ No newline at end of file diff --git a/appli_3_alpha_old/app/popcreneau.php b/appli_3_alpha_old/app/popcreneau.php deleted file mode 100644 index 484594b..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/popdeletelist.php b/appli_3_alpha_old/app/popdeletelist.php deleted file mode 100644 index 4ccadc9..0000000 --- a/appli_3_alpha_old/app/popdeletelist.php +++ /dev/null @@ -1,20 +0,0 @@ - -

Désirer vous supprimer cette liste ?

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

- diff --git a/appli_3_alpha_old/app/poppersonneliste.php b/appli_3_alpha_old/app/poppersonneliste.php deleted file mode 100644 index 6f684a7..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/profil.php b/appli_3_alpha_old/app/profil.php deleted file mode 100644 index 6277d50..0000000 --- a/appli_3_alpha_old/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 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/appli_3_alpha_old/app/script.js b/appli_3_alpha_old/app/script.js deleted file mode 100644 index 2c14563..0000000 --- a/appli_3_alpha_old/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, urldecode($_POST['msgObject']), wordwrap(urldecode($_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 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/appli_3_alpha_old/app/templates/mail_annul.php b/appli_3_alpha_old/app/templates/mail_annul.php deleted file mode 100644 index 74e0d3d..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/templates/mail_cree.php b/appli_3_alpha_old/app/templates/mail_cree.php deleted file mode 100644 index cd18c89..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/templates/mail_fixee.php b/appli_3_alpha_old/app/templates/mail_fixee.php deleted file mode 100644 index 6259f9a..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/templates/mail_modif.php b/appli_3_alpha_old/app/templates/mail_modif.php deleted file mode 100644 index 3cbb7b1..0000000 --- a/appli_3_alpha_old/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/appli_3_alpha_old/app/test.php b/appli_3_alpha_old/app/test.php deleted file mode 100644 index ea189ae..0000000 --- a/appli_3_alpha_old/app/test.php +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/appli_3_alpha_old/app/testGet.php b/appli_3_alpha_old/app/testGet.php deleted file mode 100644 index 03dc369..0000000 --- a/appli_3_alpha_old/app/testGet.php +++ /dev/null @@ -1,18 +0,0 @@ - - - -TestGEt - - - - - - -
-
- - diff --git a/appli_3_alpha_old/doc/README b/appli_3_alpha_old/doc/README deleted file mode 100644 index e2d1179..0000000 --- a/appli_3_alpha_old/doc/README +++ /dev/null @@ -1,13 +0,0 @@ -AWOR - Fichier Lisez-moi destiné à l'installateur. - -I- Compatibilité -Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, MySQL(>=4) et PHP (>=4). -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, -Les scripts php ne modifient pas structurellement la base de donéne 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 - -Les scripts php n'accèdent pas en écriture au système de fichier, sauf pour l'upload de fichiers. -TODO : voir pr la config des droits. - -II-Installation \ No newline at end of file diff --git a/appli_3_alpha_old/doc/README.css b/appli_3_alpha_old/doc/README.css deleted file mode 100644 index 2dfba7c..0000000 --- a/appli_3_alpha_old/doc/README.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/appli_3_alpha_old/doc/README.html b/appli_3_alpha_old/doc/README.html deleted file mode 100644 index 476a176..0000000 --- a/appli_3_alpha_old/doc/README.html +++ /dev/null @@ -1,422 +0,0 @@ - - -AWOR - Fichier Lisez-moi de l’administrateur - - - - - - - - -
- - - -

AWOR - Fichier Lisez-moi de l’administrateur

-

-
11 mars 2007
-
-

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.2. - -

-

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 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.2 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 ﹥﹥. -

-

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.1. -

-

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. -

-

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

** Vous pouvez 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/appli_3_alpha_old/doc/README.lyx b/appli_3_alpha_old/doc/README.lyx deleted file mode 100644 index e1efc97..0000000 --- a/appli_3_alpha_old/doc/README.lyx +++ /dev/null @@ -1,521 +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 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 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 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/appli_3_alpha_old/doc/README.lyx~ b/appli_3_alpha_old/doc/README.lyx~ deleted file mode 100644 index 16db7c9..0000000 --- a/appli_3_alpha_old/doc/README.lyx~ +++ /dev/null @@ -1,521 +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 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 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 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 -** Vous pouvez 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/appli_3_alpha_old/doc/README.pdf b/appli_3_alpha_old/doc/README.pdf deleted file mode 100644 index bb4e4db..0000000 Binary files a/appli_3_alpha_old/doc/README.pdf and /dev/null differ diff --git a/appli_3_alpha_old/doc/README.ps b/appli_3_alpha_old/doc/README.ps deleted file mode 100644 index f8ed24a..0000000 --- a/appli_3_alpha_old/doc/README.ps +++ /dev/null @@ -1,2306 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software -%%Title: README.dvi -%%Pages: 4 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMR17 CMR12 CMBX12 CMR10 CMMI10 CMBX10 LASY10 CMTT10 -%%+ CMSY10 -%%DocumentPaperSizes: Letter -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -t letter -o README.ps README.dvi -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2007.03.11:1556 -%%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 69 /E put -dup 79 /O 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 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 -dup 122 /z 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 -4C1C6C4D16A91AFAB0B84A485CDFC5EDEB03E8E93218694C542734139DE38E11 -766E84C54DE44775FE2122F4869B5EBDD7AB21E471DE8A24D986D02EC56B863E -CCEB528C545C0D9D3B138CBCEDB7CEC5A1D85F3A8EB65B7F96462F17DE646358 -3865CB5603A80ED1CB1FEF2BFDBBB5CB94E15B0903EC58CC9C8587B105E419E0 -486523D0CAEADCDAB2C4BC47AE55D14489BFE1AA36A5FCFE988D1D4398BD6303 -CADBF9FE64F5FEF8C0B4411289198ADCBCFDE42821865AA21049BA8E846CB7C5 -A60AE13DECEC0897A2F74E130F198AAA04993D5415463CAFEDCA47C6FC753A76 -B972140A3AF187A4BA658EEB077751EB20FE37BD952E7A3661F3F45E6FB25671 -554639A94C3F9F3B4E5C76785373A7CFEED3B6A3F44D98E9FFEF4BD8FA9B05CC -4ED72D6388EC669D1AB81195022FDFF1F562294FE6AAB80EEF711396337D9DFD -B24A97E88BC4B1F1D6E143E3820DE208E7DC16D757D36C7F7EE745DCB7E75D9B -40FF7BC1A92347253C702CB3B177AD3FC273844A6A53D69934C824EF382DAD7F -7627A918FE6E30505FE0C6641BB383D7C4D48DD560209E72BEA8502E0FA19BEF -97B7989CB133B933BAF41CA678D19D8E354036604FAC1DA79420D4B4E656D06B -7860AD8A60A11C29E85A3BED39C4D0C7FF116BD2186EFE54924FA8DF382CE00A -336D74EED682D5C471B2D4F70D371C35CDE1CAACB731A332C2BB23CFADE102BF -1EA484E64C7B2D59924E1D7E64A3A4BE9588B64300AAC5BBCB69E6ECB5E6ECC5 -CBD47621953AF08F2203D3069CA085B4EA8EF8223522F87289224C1AAE1176B9 -A8BEC8C453C2DCF385F88B0CA690DCCA7A8DA7DC92D16685E43478FC6CABCDBC -6607DFC80EDDC91D4D7E13606C80C4FF49C34970E6483993C5D5F60465CF333A -E1EDB4519FD099232BF13D0EBE839CE810AB85E580DBC0C2C19185790776EDEA -942DE2CCC1993702C871E9E0231DD1E1386BE725947AD15CBB335C1E30E1AEC1 -02C09DFEA295D50C624A37A81F0C6002FA1D6D817514AB764C8835D816E28268 -49A8DDA1BE92836CB30B06DD60D358EF02DC12B8BACF1186DBF42C061F8BEBDC -D4C08EE123C2A94B82FBF9896053B89A3B1AFF53F7AD2DBB8ADF42DCB51D9B6D -5A5532BCFD5C6BCAF1CE50DD65DFDED6357D7E6B1EF7773EF3C53F56ED34AD2C -0C2599B516127449786FDD74712FA8BD94D12295D434494127D0E26F5C352591 -796035484D0A6DA5211A83FD00D4B8735104482149878A8F1984682BE4B4E84F -6189A1BF48F41E1D36F6CF56088EE1EF71AE62FE7877487DC24D0E0E6A412FB0 -4E231137873E0908727FCC0FDE2951A44779A412E20D6AE62A6A3FF71587020B -786366886B6A9C4D266F7A471FD8CC263DCC36E8731BE1990CD9003F2A0FB459 -5CEC683722808363BAD930D2A2736AF1D1DC478F817921D596F2F8B77A845E1B -C70B5E6ED150640E06628562410088D836D817FCD012359F5B54760ED0CA6ACC -57F8D5FC28A13ECD31250859DC79884507AE7106A6ACB17694586ABDF5F2E881 -3DF040AA8FE65376FAADDD72B66B87E5DC173979B2029377D82BB3364EE53C0F -B851F8609DA4F08C51E99AD9D6FEC018883D5472100AA60D8FAA3BD874394080 -439A1170B2F56997ED742B115F2A00A084E13BCC437F33B383C3A957D0E94836 -80DA0E817A579FB2615D3A35D6C615C8FACD4E6A3C3F4A4B86877FF01F596B23 -97286C45A58744EA0920D772C7591966EFAF3150BDA27BDFED893FFBBE1E25BF -4F24B7CAF576CA719DC1BEA83276C42591D237D88EF92B0FB1E245308DCFBE65 -E525DC42018E19DE6B4099121D2D9F8A8054D277EE93E10F001BE74A5E665AF9 -E6D920A9EC6DFA1C24DCD95FE5883285EEAA44199AA9C7A61E21BB547E6A15C2 -6065CAB4132B201031531AAC77553B37D28E4F2FFA9AFD0F79693541EBAE608D -72E4189BC22C9ABBA1EAF9F7F74BFD4557A981C9A8661309F1DA5E27C7FA13F1 -7F612A93195933A7AA7209ABA79B2B0E20253385EB95800F3629CAD1DD9D45C3 -2B1A990975F73FBE899C3E9965C40063C03DB3680886B97FB4A152B4BF81F17A -E74277DC8CE3EF67A238EE399E7DFAB8A86AA4C9F087CDA4D55DF9F693043AD1 -68EEDE07DC51C7EFF41E5618F8CD6F0A8327394A8C1FC86D38BCEDB5EF130D6F -203E94581CBEFF9A91D0D909E8BA443E17DD8FD09169C82CE111D4BE4C5D8C11 -BEC3221D877C7EBA283815627EDFF83695AFAAB90762E6DEC818D5305BED69C2 -0B8998E7BFFE3B21B4A50243FEB9B950A7F6435BD668764A2DDCF069ED7D7571 -A2E1A37EAA99ACC35B8157E057020BE9F1496337B20BBF77A9B0ABC65FF66C61 -EE059251456730B5DABA6F3B2E5ECC341D41CD38B38C76E246F50A691D5143F9 -2B55EEE2A3DF6E7E34F6378EF9F55F299954E22488168C2F125B0BDE9AB0C9AB -E31CBB6732ED15844D8451E78BD81C3C8DE629DB6C7DD795AB1E48A36439EE58 -FA9793BC9802946BA90654B076E81F1C7ADB0F3DF78D9D4EACCA41F46AB1B655 -C65B85DEE426B8A97A93A2DE2D49C44705C14C8A4381F2A87055F6F31EA5074D -0113DAA650A070F765B13180059FFE8157B48C705FF4E03B0371153A13CC95A1 -0ED751849EAFA6101988FAA7E86C488E840B0C939F7DB6656A79E8C31ED95239 -5D989E9DFF213A75A7D9162CC52868D54E1FDFACA503F564145150A00AC1DAF7 -C59C9706130DB9BD59EF3B4519F4A84065B043BEA579FE4AF5CA047EDA3BEBF4 -D61962D24182DA19F3D6DDBFC27252E31D3378CC7267899A82DACC41CA69FF18 -AF631AC3E8BB7404D85D9A703768081C6F148CB1459AFBA0A92A69B0D5C4A09E -9321F8BD5CD235F1B2F0C98FC9EBDF6474AFB312070DC476011F4C8468E5D2FD -8AF8FC915D01DA12AB7EC42FF979AEFEAA0B4610F64006E6FB6CC8F822FE165C -5CD933EAC43457E2C7328FA4597C3BBB42398481DC182E01C84EA8738E192502 -AB36501A70D98F1876844D75EBAB5EA5EB2195EEDA3E10C5C8564E6F4733FC74 -C93047F5734DACA571AD76AFDE5512976EEDE1C895473FE418A0246407F3CFF2 -9EE0A86D106C8218AFA23D72945556702C9E9F107AE01148E80B9587AAC77065 -94ECFF8988BADF5814322DF6511133899687B4C4AE6ABC60F33C7CBA24796193 -EA996A190CBA728CF391EFC4789D502364484812DE5E88DF03DAEA997D6E16AD -BEE4ADE655A7AA393ECCDCC8B7A1AA282F3128FA5AC613513AD0E648F5400A4F -045DA5B9E469D0CE693259268E27C5505FD7EDC3CA266C010C04A240FB91C6F3 -EFA4D0AE5C2517976A2BBF9D0AA3A0D4590E582AD55E9768CA5C1DA4EF832E49 -31DC69440446B343B53EA25CA8240A630DE279AFD95499F089F0BBAD893D0DEC -671807705CAB3EB26E8F202AC371A77E674AA606F6CC4B0A5D6BA25B93CB06C6 -A483E16B1F4FDD6FCB2BDFEB82C360F662BBFEB9F155830026FCB3E5CE1ABA98 -6037E5B6A62DEEDCD4FA42876858FF04589D92DDC785552CC8259F92D9B44A38 -24AE40CDE5A8E037292E6788535E104B4D6A4FB7BD61448CBB24B0CEEBC68A41 -BB1C0846C4D5E80F40FD941F2CC458D1304597E1296C26B2A056911D71AED927 -7970193557FBC86B6C473283B1A3B9309DFF8CC9735763A592220DDC332FDF93 -EDF55510B1BA3DBB9DFE462EB66607AC663A23471BC34C9BB446BF63C8A2FD14 -1F745C75033E4B598E8767316D91F66ADC9EBB00D410D3821E829606BD447E79 -D9D4FC6ABFB72A159BBB9C51671685E92F2ED99041318F1F88C810DB692A589E -7395DF7E58739B67F45601EA052BED85A675D804FCAB33FC5444BC6587F8A456 -9A9B98EE91D41AC28C9178F4799E005B96C7BD483B16B0F7C21D0D38CF8DEF2A -BEB5878FE24D1A460ED3CFA752A3775089F7A3144C13769CE6C5D9802ED4E8C7 -79E8694DCADADDCE259521E69C8CE3C708A7EDF968AEEB8D603F724251E0486A -FE49852A38E46C506FBF8F484E0D3E33F5561E91967C9CA2B9243866A08275C9 -8382EAACCE5F8EA866768E091DFAEC42F3A4C7307D31CE34846A5ADCFE2C7358 -43BBB348165CFB17F821BF0768B2491E0C26FD78899BFC2708078C756920A128 -36E9602AB24BCB3BA61C3A0020CCAE3FF84943E86E85C89B0F8C24356ACA20FB -A936D2FCB2D922F98B554098C16622A88E02C8933939110830421F3D16D0AB55 -5AD2DB5B22E4C9120523EE24E3DD782B2B1832EB7E08D9161B96681EB6E0CABE -845421D578B04540B756B69011EC4BB358437D62FE7AE7038AF013655D016336 -E54F6052C923D0B3CFB58C5664A6C770E2611A4ACF3BB9682F565B9FEE5918E0 -02C14A79242CCB46E25C831FF080760B3F2485671F60A78F1500B2BA0685027A -429DCC57D9E39AFE76F60C0E3C8219F2BC802B003C2C1BD0E1BF9FE9DA811E00 -4EA8ED75D1D67C17AC9DC133559E91D5302AA6B843A7C68529CF25828FF4ED5D -50E86A01184487BA2F0365E7CC8204EF2ED735676E08282C49F0665786080AD8 -E837F9109F68D43057EA931BC75C1FDBEB26F0659535E405173118D6E81968DE -56B6C6A5AFC4DE6A7198A23DA05EC21C8DAD0CFABC401FD31091472FB5D3F241 -6F4E9322B01C04EA8DD3DE99B19B5511509B3F1B027A677DB6DD02623B0614C7 -8D7048ED354E6DF42A544FE1098FA7205CC846CDF624AF43236D522CE9765C7E -B471A5EA2C588768729E438AD0ECB16F1D4658187C97A15BE69631E2BBE68B8D -05B043ECBE4A1D256F49E196B0081F7BB4650B9D8CCB6ABB5B76C30249B61FB8 -66D6E7F13ED40A1EA95CC8EFE3E73CDA353B71E515A1F6831A97A16F158774CB -76E6B6C3BFA0D58EE768A9C3E8CEA3629B2895EE546C3D599EED9C7181BB58C8 -CF0560C4B873320526C719DC5E5CB0DA7D34B08D45A0B46689095361D0FDAD53 -503CD09FD15ADF51DEB30AAFD4E9D0E2D3E3A94B5C277215BEA08823041583E4 -6356BB4E9D1C03C1FC58C0EADBAC332531A72E07F2C015F376CFF8C36CC95788 -3122896B1334BEF9A6F535680D97565FC448E5566ACA5D48DAC4A11C7A28D548 -4C68BD482B8D208186D74198799CC6D640507B4B9112EA0767022C36707AB1A4 -4B9B2946E0924DDFB6FBF8A8B7F8EF5FF624C6A3297B1D3210D9F32BD28D9977 -FC83806674FF54EEF1705D03109DAF65ED5A3FF6ACFAB86CF8BABC61F051C383 -BF7ABCE2816A4A1A8C73C8D057F8A373376DAD761DED01FD82562779B5203D9F -EFCF73F5D66283B56A19F0CAAFB21ACF480AB8257B5910075DCAADF5580992D8 -AE1F3A170947FB00323A0A4D607C2048D0F083D9AA8BB86A695E637DCC9D8DAD -4E6A243ED811223304269DE54504D2D1B487155140C346CA7AB7C52E16AFE968 -EE576CAD9BB2C55DAD0A50DED6A6B654D5F4770DEDBAA52FBAE3839407A03F36 -E0526861B1AA35A1E88739545E6A2C6BC68DDB90C6918057FDF84D0E1BDBEBE1 -33AB2816CAEC9DE4042CED582E3650D639D1AA11B1FDC62B636E8E605974F5D5 -EA7E83E0BDF5DF6A44FE3BBB3E353FB3278A180A6364D5393F5F539338A3A138 -EE7967068BA1148D9F8B664E7B698913863817E72295990D6EC1090209FE7A3E -5AB84C05629408226D4D5DC776CCD5D004C37B5FFDBB4535E4108292C7561746 -1D4053122E22F7CF038CFD5D4159B6B1903A50BBB95FAD50BF28CBC08D394289 -2EF2FD65A6237788C168768978B80C3A171EFD28242A90600B0B3CD661424D7B -7A8013C2E758F437D5E216BAA8448B9BE20E495D295B7DE39BCC0A2D1BF14A8E -319DC4B2A38E35AF69B82EB0CF189FAB2D391DB39253E5B8412A3AAC20BCD113 -373C9C550B02A642733AD122EF587543E1001A81BD311A3EF0E7225FFBFED342 -B96626DF3A4C08A8D9858EA4A18EC20805FA9927594E81ECC652324674F1B2E8 -FAD79F2108408B111734C6A7414B9EC3A2450146D14B5582D1C67CC7CE7FA085 -AA8E704C1D95EDD45753E9A9E26A5DA8315EA3C453318D242D6EC94721F709F0 -6B8B416731FDEFA6B856CFAD54942440C155F66493F4E2E0B8CFE7212B962BF8 -A2C2FF32082BA82701690DC2F2D1366C55A781455AEE353301458CFB90A5ECB5 -6BAD8F4CBCF39482D7BD07AC030C857D907B0C2676C8EFE41231CC5D6E57E03F -77F71DC796BBBED55F0791B40FB81156067101D0102DCEF74C07EA6BDDACD90B -C0D8289ABD58CCB1E86CD0FAD6C640E403881B6A5D6CB6678543ADF8BB5D1836 -5C52348CB645C36ACD07961762809B30582B497C56B0F250D3B49B5D7166ACAF -7B01742408F8BA160DD9AE78B898EF24FBE6E124327875A853F23506B76E5BAF -4F10BF4547C8D080CC78317B0599244EDD5654F62F1AC9C7228DE4326B1D2096 -375545F4849975221F7C7E397E826DBB579C385A2E21C372846A1F888280B060 -6F075B355A71D885CAC87EC87A5B0C8CA07C385AA52BBFB9690FC90695411F7E -61665EC585010BEBA23C4F228BA46E6A063C4E6731CCBE862A7A5676DFA84FBD -D7D8BE627550BD2D3BFCED3A33A02237B023D3BB06213D5243DAD0EFD8817EBC -583F78E55A9EB6988B38C2C4A907CBB943DFF097195E25728A90B14A90951D0B -FEF286550CA025EBB08B7B4873B33A2BDE68BAD37172088440259DDCDF2F4F08 -D5E4C89BDF9DF4A1D526761A0E6BE96B9F047FFDAA6F613EDC6A71015E290152 -CBFF6D04A60E5D2C67124E9277C81491857F4E8A91A8625B2D7F65389884203A -A00807F0CB153218691E5242A2F1D426C71963CAAE3A8B66A98242CBC87A626B -4E03360FF12372BEE3A18AF99BBDC5F9E56B318F7A4755465127D2BF12FAF1DF -2524610CE3B661C7FD02F3F6F1D20A774663AA4202BB7557B3A588A015B8AAED -18D7F333036044633515FFB6C170774284C41FBB81F92378E28278BFA6A5D462 -54B0184DA71562BF503200AEE12307C094E7ABE4B2B65C326D19AC9D3236D1D8 -575AF37A0895405AC8B69924479A2A9CA875A2A1F2CD60CAFF96801C6920510D -E383DDE8B8978F439162E2831059FD24787A6FBD67643F518CBC03A4A19C587F -892A9D779AE3EB49C5F49132082496FE5C51EE023058831DB014F05505A06BDA -9FADFEF4728C77FB0EB4C53B092B814365B4EEFF64945717CA8F04C951570FDF -9FFE78705B7D04F95F8B809F47542C5C146102EC25A4F3FE9BEDCC2E6B0D9F0B -280922957C6FA08C5466426B21A463AC0A58ECF1FDCB614744958F587922D7C0 -FF6C9D064F0249F787B557C839209A1821FFC3C0148DC43A4007B3641CE7A81E -BD84A3E7F1D833CC34ACAB53947438E6227668009CCECC37851C87CF92CFEF6D -10538C2DA8332CCEB564A72DE4AC9556C96522BA72CA30E8F262D1FC3986BDF8 -A2271628EA21E84D65A5665481FD4794B87A33993C40CBFA59173640E89C7829 -99AEF9F0B5CEFE69848629192A5C4BFB2FCB328E575C4C523C649A4674F27EE8 -61AE251203A8A04A644F397CAF9D86E6D66C42847876FCDFF1136C5C9C032D13 -9F89B117E43970291073BCC5F53881A0F6584566D76FCEA6A3B11B29D62F2052 -E13F81005D2AFF12F6E4E51A5ADCFFE0ABA23EE2B5C9146EDE5AD5C1A12291BD -273DCD88A6A1357BC40724B2D0EC5F09430999CE73CA0791142543079AD4A93F -002F33012BBACAB4012E2A09C4851CD93613D02B3AE740153F8561170E48174C -7B0B2467A62D0EDB13FD25D3DC9982551898B6165C50C7E305B38A7E7317636A -DCBB266B44223632EBB9F3641A1CEAC90AEEC7D25B1689261C412D57063C4C0A -C0085C852F22D60F86B39451B273E6C061389D23B4AE9E33C42B8B054EEA3D43 -409E6B879357996DF95438819CF168ADECA129D4CE1C804865F8E01D7B96CB50 -A48F4831AFB1B732CF04965F2DC5C04C531BB91B94DD37CD95A7D6953E102860 -9C4CC88BB318F9F3C42DFBB44424079639ED3FBB49CEAAE3080E0ADE6D6EDB52 -D8FAB18AD9F9B0303974584AE4DA03B105A5014AA49A54C46C0275B4639AE3D2 -0DF5BD3E1887F53F9452CB57A88800914FEB86C796E45B39CFC734B753C9DBBC -5CE1FE38012784D2A12BB1427F9AC85954F76BA82D95C6994AE9916F4E27CCE0 -8014E12CD6429E5DD482679048EFFD5E4941BE451461C186FE241E7178F77977 -607237A951B62AB67D310CFC6996F6FF77D7599DC0148847B56CABAA543E452E -C7A2C7B567C3E9CB86D6E899E9648D9EE3DDDC5C464EF17D286A4BC0C2FC75DF - -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 73 /I put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 83 /S 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 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 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 -B4C38C1F2D24B8FDE686832FE96204552C820E45B6BAF0C3308742AE2915A09B -A12788A5A1902F494BFA6D3D8E7D3F247857FBDC4540F34844BC65D4B95BA35A -4F0AFA9C4CE96EE03CCFCF9CA4EBC6C562E1F3E255BC13F242304D2019088305 -B61DBF492E6D6136384D2A6E5DB9977CA255A5144EEDCC88DB8C4F8A962CEBCB -8820C4B2BA034431339586A00D582DE8E623C227E39AA7455861809AFB5B6725 -214F6A31E583060D29126B4BEB7F3E9DB88F3B7568BCC18761BA1995D31088E7 -6B633C76E872625E262C1B5EC1B86824596D3E7B73D46524F2C64F624B37672F -B98FE7BF6BA0771A5C45AE6C8B95156132401A6005F05C5AF331FB7FB21649BA -77D2A2B3D0AB4205C9BB313FD4F95323B347952D94CCF1455BB06C97E45C7A14 -4424312D5A29CFDBF5640BF975F750FD315CAFC2518F8D1B96D06085AEAE3AA5 -A0836EB2981DC185509E92259B803EAE354CEC33CF5EE258D0F22DEA8CFDF2A4 -41435BEC5495D7E9295DCEE136F8A69518F66E7E1220047737F4ECFE88A89D43 -1FD914A871426CE539F372F47A12DAA25B5C8ACB0B1CA9E3E47DB88EEA3AB3F9 -533244271F81F4E45908DE031CB50E876DEE5751471D88CD1117384D518F9A6A -67C2E9306984D25A0D808FA9E308BE3BE429AE3CF6BBC013C121C9EE4597E836 -9A62BBE57CEE474B996DB26A0A35D7CD339EE00273CF12C6666384DEA793707E -94DB72AF6A07AB8E0C047618C79180FBFF1A7C7C84EF3D56E8B7D521D2615AC0 -9A558E1746A8A1C375A87CA6F8F529B46CD515341310406DC41929FE41837A8E -22602E4B7BCF7421AC4D329121FBAB7F802E0D40270AD04120D48986BC2A8FA9 -15FBAC42FB99905C97867957692ED4E90822F6EF13756835F75B37125AFBDDC1 -A8ED6F1710462DCF7D87D6D1F84AD9FCF790BC0E47621CFECD1C91EF82CF4986 -034D260D2ACF63B68925EBE936A9BAB8F4DA734EBBF0ACAAA1B9EC036FF90A6D -807A3610D99985AD47F2BD5646F00A28351DFFD538228A168732413F4608A1A8 -931CB80EF0302C85F15608C6F40E53CABCEC3B8CA324C8E24765A6990A9BF834 -30D641CF15910972C77FE46E152B3E7B1C9485C7FC675AE7D1D90C49002E2DED -CB340E0BB0F0184DE82E5956F51A3FF7CA41874340C84D1225D96967AAEE443C -A34F5BD186ABB1394B72EED0F74366DFFAFFA5F19BE3F94031E9169B3371EF31 -DBE3200B562C3F12BC36E5E9DB16104C392F99BA4650A218F0CFCA1C90121937 -BD17ACDCC2B6C55F2F6F549B9B0DC360DFC3D5F794824B5F26B7F2F6CD718C34 -7F118DE9CAD13828CAB630D352FBB4BCE0C225E1A3D42CBE0DA8518324142F9B -B0CA9EFECBE9EA815FC28149955306A47042C0AA318519B1EED1C7B01454A6FE -CD773F7BAF3F51AF9F13B3782818CA3A5C2804DD50614C6EB270F5A5C0DDF367 -C41858958DF6CCCCB7CE8A81CFD93EFC0784BF65FB7D1E55B1526F38C1E9ED39 -CC17F6C201ACB98EC46671087268C47DC7772A439F8D5206E3B0E80935E67976 -5402CBC80E1A5DC8B6A421CE93586B43B5CC29715CD61978F1CF6FE34B0DFE9A -B51BB37D78EC728B1E3173F530B569D2847ADB7208DAD920A59FD8668E62054E -393A34FE7E2A06C0566773D831C87344D0A541BBDBDD53006A029C6A4815254E -F8111D5317278FFACF32C4712B1924241E2BDBBB8EE0F1995DE94D5C4A5856D2 -FF3C00D0DB758842D4A7581B17AC15BD99A7EF1C69E043FE4AED459DF1FC8A76 -EE42FED525A75C0C05C94B72056988BF0652931EBFDFF7538EACB751238BA690 -99D37517F55E7B51A8372AFBEEC7465B40847FC294BCDBACE9A84C9F64F3F304 -79128F04FE2F0C6B45C89322957F508732FECB82A71C5BA228235B321C1C26D2 -098EA9A9E80D69CB5320673B4C42E117904B6BCE2314E2013F0DA105952C4B55 -5E9A559D3B20B2BA8F10C648A921F12BD4D847F2C917980666523A7985BB4076 -1DD934E6D8592E778801CB4FA60633895B0FC107FC84DD7BC14D361EF3D685A3 -BFD5CC49728D51558998A83D8E44E4023F67F22C38AE900A240FA3AECFB61B25 -48F0F63829B80DCE6F2CD8CB511379A51B07D7B4C3DE6645D2AD0087BAAD264F -C5D813919F643CBA8BBF5B4C1D8E7383C1D8226FDD7470DB44B3DF510E150D50 -F17355FDB0EFED27C75CCCA0AE8D0A551DAE084DF67217BD5ABC1CE98F932C57 -83C9013D5DDAF5D68D1C38B486127790B6A8F2AF539680A96C7EF31656A149D6 -05842DE224F392B0E0E3B7841157BE75C1F35EF3D32F8B8324DDB7D77DFA33FA -C9F3142382E0049F932CE7C7C601906CE81FBF81973E95BE2B6E26C067661047 -74CF8CEADFBB3BBC1FAD686062A0EBC3676EBE907778F70F9CAC563DD0218CA4 -D26416F847843A394284F6C5810887881B438226E0E60F9A792CF2F8943DAB78 -132321ABE20FFB45DC1632BDF5CF396F3885D512A407F74C8010CDFB0F61FFFD -24F18110B1B3D99E76065AEE72E1D98A350E5F1C482F102F140FAE73BA1CA62F -5BAC010827EFF14EC650FC2D4DBCAECCB7E034A7F1015AFD84874A48330110E1 -57CEC833C6502AB566E33EEAB696E669F175EF05D7C405C2E2767B6017BB33AC -61AD4E0F520FF68B59DBB52201C26989667705F88189969D7903669FC291BFFA -8D84D0F466538B4F5CD9AF03D028A464C6914F6F7B5C1D4959A91681F7A6EF90 -D8A6AFE10597EF38BA4EB58D0E77DEBD51E823AD0FD477CDBAF3B6499B47391B -CA8AA2474E50DF4F2D5A5028467B39014A99B772651D8447A7AC2EF09E795C34 -1218701D8596E694B1F46CB61BF48FF611D80FA69F930ACEE5FA73595546EF83 -052FA26CAA646687EF28872EC6A2EAC7BF2359BDB3B6BAD945E4E370021EDACF -4E746D19650B669899E489798343584B16CF0C8477561B4F5F3B8D4743A88150 -0445F3282C196F965362E9F4E0EE4E7ADC0CF17369560B8E436AEEA7DD429EEC -ED5230B964B94EBEA505D6F6B7AA52F51CADF6CA6A8AFAD10B85C9D76C2CC4C4 -A844C84C10670C6E4A4D0B70A638936799FFBD9B5888A4E308A0F20027FEB3FB -7293B0CCE62B601FAB1B0922641F79F615B57F8721D1BAC5C50EB0AE4418DF37 -2AA06A808F0384859E6910113BA86FF93A40388DF2E705A466358E5B08C685F9 -2418A2FE3168219D257D481758181ACDEBF81F74536C2C154112755E38F5D401 -8ED8CF8FEBECEE22B1DD66C5DD28B455294D978BE941534146C470EE5FB45DA1 -64E33C317D0810287C37C72C3E317D2BA1C385EA76ACB98E37913E3D26E7BD54 -0A52424B9B595A9D093EF089BB9726A72DC6E1B8EED84A1BDF9DD0947B2AE2AB -37794E6CF24A69C0B77251163F3A21C77E9EA774E9E7CA702AE8187B7CFE6D30 -3947050FF3CCCFD25B8BF14748694B20B8536527D1596167F965200AB78F9C09 -1C944D90F2C470AF23AC6BC055FA1348E7AAC9F0B624E3FE53439F2061A367F4 -61029331EDD288320882A76BB5C661945010557C36DBFBF54C1048350C0EA4EE -B4B8D8EE4CC7B2D06ADEAF453BAAC7D7D2FA41ED42C83D1ADE2DA521BDAAA26F -2510B7B33804538A29476DAA100888B1638AD23AFABBDAC2BA37E6AF18005C55 -4AA3C6677DF16E98B5850DED745DA7E5E17761F70D82C781D56B218C1AD1510F -A9E184124A013FB245CAEFB3CA3D57196A0D908E74AC47DA641FE5A6331E4F3F -6720587E1F9C959E6C1B7A8AED923539A9CEA010CD4559C138373AB1E9C9CA3B -E5297FA4370B5094AA3CEA1107BAA8577E3591EE397452E4B14F42FF4FFF8A7B -9018095BDAF9BDD70E85F64C8AF18B03803D09B9FFD8CBE81E4EA0E002B50762 -E79EDD86B0A6F94F6BBE0743BE11ECE0B201DE5D6B8FA55DE07FBB31B6DC2BAD -35B10D25F3171FB55DEF60146F05ED67DC68E8D330A1813016B6B86356367152 -3ED8700B1850017301F455C98F35DF1B671E298EFF48C41F99ACE3B38610B5FF -3BF9E565F58E253677CE3548F44E4B172F09091031FDE1F15144DFA5B73D381D -593CA2F5EAF3865D0441A0834CE4876529E987431B97D8106A7E142539915A97 -E3C4B7FFD8E875412FDEFA2C5DF87992579065382C37979F7EA82E49436E2B67 -ADD4399B151745044E954C65ACD562C2B4B5BFE82346E12FBBD51433B5352C6B -5DFB7F60DEEBB2ABB4A0F83EA50D7521AEFDE06DBA97949EEFD82783437D8185 -F1BF6DD4B1A304309AEC183B3F489464078F5DCB7E2E10950D9569AD61E48431 -BDCBFA4F5C3E4BEC92B897FC608CF5D0CC9EB4DA20B3955B6515D0FCB5B9A14B -BBD0BA78933FF2F7CA45742D3E4A737129B07D07BB75E5935D590FC2305D0E24 -56E127D3698E7E5707CF3F889ED2F4FD8B0F4BEE722D5471EF33502933994B0C -38EF96AF355C867C1134971964287C35D6C6DEC091D41941897805A4BD640DA8 -5A1EE0EBCA306FA06F7DF297F56C5B762D65C64F3E09FFCC7AC6AC1FCC45ABE1 -5696161E1525386190A694FD8FF3A314F15F3EE1204444B405051DEC330F06DA -B6C430719F9089EDBF3B7B87C9A79ADE69387A210CD2F25DEC73B69E0E98D440 -177BF4C1F7D95C1DAA65C143A3B50F532960A711552B3B3A664E85ED5EE769BE -E27198F0866B6B97341C3569E9EFB810F3460B10D01CF84798A004F3B169C5FA -03C5A9AAD13BE27C78FA481A8539822E3B97E1EAFCB098C7C131CCB7E3B8DC7B -40D0600AFF86D35501AF857C5F2BFFEF9F8CC5E70B478635BA62CF41D7081522 -A1956B8E1AF4CF2CCCB1BADCA9C2B656791198D25C2249BAFEA85D3178F545F7 -5782FE14CE478EEBBEE829A1B73E157A57BAACDA1185E40569B9A5F82C29F998 -4B4FE9E1EDF618A714355CF947298BCD5F4162DDF08905E8A27863D324F7B598 -3DA6C24269C1B9F5E1B1049CC5B86E55C8F7E6A816EC019BFF3B6A4870E5C776 -B26ACE6D4DC00ED3B51486E69457320275E5155B689E951C23A544416546E11C -580D88B0B8F9CC0B712825CCAD512E24B590DC3A327FC4624637EF4DF869F53A -D7B781E7D3807966291528E3A447D43A4ACF73F2C475011EC8C43E99677EFABE -3A902171662C985E3D21175B7A01E0620C76285EA215ABD06DDFA202B4FB56C5 -7CD837A0FCC7BFDBF44435598E69135FAE21889D2351E1BE014BCBCC2A24E50E -21E1D6B5757A897E4DE82499F0B5073F4F0F0598107F153E50CA26D4445C63E5 -6CDD64EBCA3404CECC59039F2CD88898590ECF67D522000F1690A07A940DB07E -2EC618050E3B923BEDFFE2761D02B1A047E664D316875D687C0ABCAC419D5492 -6BF9EAE9B9EA86EA63C7C566FA4B34B534F57DF58C2D83E78A1BD15169B15F27 -7C58BE99675311AC1D8930027CC7DDE0D4301A40872C56F2ABD153CB90730190 -8655ADF7ECB69CD863DC5F1B27A9F54A24C478E574CD45C4443957215161CB05 -300F59ADB4760F996FC9C0A62E4E9E58C5AD2FB5622C53F2F9E8285F777F82CB -916D9CD0CED2A1169D16D06ACA8B1C55208E0204C79A0AE24F6B0CCFF61BFC1E -783EDFFD4F9DF7330A516FF2D29C05340C6A3379B0A2C649C30DDFA43FCFCCBC -44F53A5E50B6F4413263987D70008811E2BAECD443C2D05322F7EE9042E96FCD -F4CF95D4242CB77B053A6AE89C25B4B08C2F9C89A11E887A7019C0454F27E491 -0DA1DB2D069FD3D879D1E6421F3A25912B7690BB66BF72150467399B05AE12AA -B4828FF7632A49F67C079511711DCF4DCCC3EE292D5EDDDEBE2EC1C1502EF58A -BEE3A1D443722E5E86930EF72183C9C4B0CAF547FC31209DB9DCEFD48165E7CF -0E2816DA8D5B35F642805DBC1641BFD6A1E09DE581B6B76994BFB99F1EF25AEC -1C38E9C80F840503ED1FC4657A8BEDF3BEC6540494FC58B07CD67FD8F4BA8827 -6614F630937C98EAA03A91A98BF5EE4DD7724E6984BF91BA75E54D706134EA71 -398066671600EBAF3DCA89742D0B4C9689B796C0B9884067AF329E44AF3AED93 -3C7B9F59DB76BAC6B4850322D8C159E6AEB1DB9FD3EA7273C6850A33F4FD2782 -86D7EB96B6D3AAF6A9DB4E9DF8331A728AEA9D3B2AF914D2FA3DD6DAA70B741F -3420D88B36B94B92EA17DB0799A50025188B163FAE205713E738E1B50A33F3E8 -0F232F9E31308C032468024246ED7322E2E44E127479981B71A289E7A1B2110F -A13E49E97CE3EAF20ABD1797F23D4A6F236EEE5DDF150F9F8B01FA044B8F95B1 -3EA5A8670917D86885E8D4FE191703A715BAA4BDFB42E6FC96F76E11A5DC5103 -1F04FDF57376FB321C08363D23CD59A436159ECCB2D90238D534D94D0AB51538 -A114390A7B0B9219B0A25ACED84E6AF2DD2615E2A227A2AA0C1ADF3892B04FD6 -52A7398644884CD1A0470FE426D477321622AF78F9489A88FBB451F6750B5ADB -F730B99397666FBFBBB1551653A7DD2726213C063FB229149BEEC49504BBA968 -8FEE705C67AC73DDCA678946A63AF615BA989DCD2D1CEC0B73D93AF362CF3259 -69B6E3F7B77BA7143E529B5A4565A8490497B59286A7F3BD3349AEF709756891 -1F6BA1F9F1E106BB4006E0D6CD39B34C3363B2AE9FB73C47C34B5338770987A0 -55F7145AB5ADB4C4B3E4E73910CB6AD490077E0C4D2B9B9DFDC74949F73FCC33 -4E3FE1ADC9AEC94FA920EE6A879DABBE3550BFD30DE58DF1FA30DAC830056882 -B255051AF1C48F34CFFB643E8D6C1EC37008762C6A193B70EEA3E157F2301148 -D3AF66127B7149BF9B08F45FA0EA52A62CF727076DD48C6022ECBC3DF62B903D -2CDF07A03190E6A5F22D6775591679A3DF86AAD0D3C847C5B61BCF1DABF43D7F -F03588B7522B74003A5238D41B64BF814025AF0A23625054E9B3089D4E6154DD -41BF0C1D68B02302949B41FE36077CAA9B00893767FD86AA96ECFA637E43197D -FC8745EEED535D6FA2EF28B88183E7F2199ED48A6F61D922FAC699D3A2D7A5D4 -153ED07AF6AE9C8142CE930D8578128953FF64A171701C1CFB85A9407746CF1E -883752EEE13C4EBC089C9F1101EF883F83038E0E102CA5930DA73319CCE2278E -7AE0399D0CA7CD2E90DB774ED85CD90E6291E76FACE0348D29E04D9F4F3D010B -3605BDC8C24EDB205AC2E9B5EDBB05EDA1C1349CFDB709094995F159CE103D6D -D62440C81EC82860482CF929BF782C689C51EF2A4AB3A9A8F8C5D25B6500C45A -3F7FDB6A1F654F5E87620B3C5AA54FFB94FED800F40D228ABEB4EC38730E44C6 -E463FEAFD08917CC8DBD5B364B5147D54A2A16C1786CEAE1618FEF9574486DA5 -D2D56D77DA346D7CEB1C219BFA3AAF3BDF6443AA22D0E7C8D307753FDB189AB6 -FBC22A2B3DE149ED2C200BBC62EB7871FAD5D86CE4E82633E588CD6568E686FC -EDE89B1FD804D16B537BC4D282B0DF790A04047C1480C8E05DFA4BFC3B3859E8 -64910523F14519019999516DE6A9F872C8CA3A340357BE6E87F8889BB1303511 -74F0E0349DB0645E09DFE2AFB71E4C73479B3E7B8A9BE47E0D9F944E613FE840 -34D9D5EE3C64EAD2C233035917F914DD93C94DD4462ADD7D03671C573CB07A5D -45234780D20EDF94911951355AB2800B42E87C84712311FAEA48DB70202C8AD0 -2A7663903F9830C25009E48B6E558FE68ED56BA54F93570A14C1706A47AE798D -4613A9CDA2CC28C7631A1DF4F5276CE1B274C9860C6C076298C38C9798D5D35A -D1A7887B490FDEFA656CF8B6626346173050A75D207DDE3F51C7B8F95639D7EA -05DFF8 -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: 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 36 /dollar put -dup 46 /period 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 -E978B03C604B50A5F91C47346DE482B3A922A5D023699143C3BB3C7475E21AAF -22AD06FB556EA67882BF7E09FD39B4341967F54537ECCBC61816D57CA02D3721 -03FD8A2DEFB6371422CDD07263005CD5709ABE6361D35B0C05E68E1C0C205185 -33DA77B3495C34113FDD00FF97794144F0343368A9170BECE87FD515FED53CDA -1FAE1447375F693D07ED4187C7F90629FE600B76A496FE37B34D462E79BDFB28 -B4401DD4CF533DE72C290E08134D763B15BB6B2B3B7C1EA96FA423682A006518 -B19A9E449DCE9F35C080A6A41AA59ED6A73BFA521DBAADF012C68280A43BF6D0 -E1D56EA24BEFB30348BE3994AD63F818EC48457C142D79A8E0B2D8D6EC9CE363 -CD98AE70BBAB4919B9E3FD3AD2CF2505562E9266599011ACD271B08EF4CC245B -70A1C0236E87BF8813ED77E39EBAC800021211373CD1ACCDAF0ADF0456F8154C -88C8BB1CE471AA743211D39A473077CDD7AB4FFFC5D63A904286C91F41CD1B73 -300A2D57BD822D1438E9C13C2BDE2D7D3C230552B8AB14077C4B93E1596739F6 -484CAA91AE0BA8DB3BCB2AC045DDC37ED4A84360DCF4A788781D875889E8CC7F -020F5F419E8F5DD79DC04D6E6CB4E71366876EBCC64A3ABDC7D1A287726A74F7 -59F2F692B3FBCBC9354645E04B6ABA1D1823DE92973C7F961425A18051A0C0C2 -C77403BD905A86E2A312F1BF8EE0E06D03632FD5E0247818D5573F2EC7426BCC -8FB3ECA20BCA3573AEC93796E5100CDEFA0040F776E812B87AAAFC527E95F61E -7262234242D97A55876D9A11C215FD0D0C1948BA56753A28051AD4903EE13166 -34E9A38524F1A20EB8920CD7E56C7EA017699BE97BAC3B8BB13E562E510D407D -BAE644AC025A9B1EE04B9F0458912B40D54F7E84B46119AD70E23350C13A50F6 -D110323B8E2494088827CDF940B9A3340076DB808C7271EE371421D4030E63DA -D2D02E8631CF771F1419BF36A9CBBBDD5685B90E6962680A24293B20347AE197 -C8B0533F16D0CC5D6385CBA38074ADFAD3428690834D631572F7BFF77118548C -081DACC62F58E2CBE7AC0BE6E08EC0AF56994F988674395494B7CE670CFE23D7 -F4545734DFD39315573A9888A0522A1F918A31C5763521E97396B3FF1862AB6E -47DFB91F6E49A4F2308C1E7410318F78CF70D54A92B53C0EFB353FA8C5861B6A -C6DC1E4E4F88B19DF6D6A2C61A43F2299891CFDEFFCE88D878A409AD0AFD1B21 -6DB53F96806A1D2BEB11899420C5D6E99E439CE37E4DE9E2A599557B611D82A3 -45483ED82A0C6EA24E6F69E35B397A2E759F76F8F73527AA263D71FC3D00F0E4 -364DD00275DA95E570FAA8469439A383896CAB73A29DA7965D6810EF2F97B2BD -F29DD4D36A48E842E5D5150B43A29F4999A5EE9F3B4DEE1849CC23EECB3F91D5 -67DDED516610E42BFD8D227EF20CFAE80523F0BD658F5D3E4E2969B6D071989E -888E32C06DB2A8D3F92A9C00C7EBE83486CCF417EB1F5A416BECA83BE1F04321 -BABEF6F43CEE6C0068DDD2A2CD576E1693A1EE14BD77F2D383820AA15EA44881 -630870A2977C3C44775E9091C2F90BAA22E29A7270ADEFCE463FA8B935072124 -FFC64528F8BF616BFD50DF9413C593B31B7F5636910F7C70B4C48ED36C17C0B9 -A0B6AE128ACFBF7DC23781BCB90D599170F10BC045416C60D0DB534BFE209981 -BC922AB68E3591F0EFAD6EEB011414E7EBEBC1A6D71231E415E116F0CA1466CD -D040E31EF2C5FA38EFA99E597A6F542C22DBE0851791DE0B3EDA8D1348A17214 -87B8F1593183F57834BB8A18FB09CFDBCD0A898FD3A735F742B343112D319716 -0FF6EB60212791632F8BCA0858C7E3A55921B8EA31232604BEB6002A51BDF990 -1419D5C994BA50DB2A638F35D92CDA93CD7F9A405216A0EB54950551A2A9938E -B6EF5BB7AD1A9369C1784563A18FBBA11E6A6BF4626ABBF3A7B172A5DD1600B5 -A92EFF6873ACF25CE5531AC34E74EE5A1EEB4B4939A6F5C1C928A23489F1CD49 -ACF3EDE2939C342C7018F81C04796AF103510C91BD138CBFB37245593D359F10 -7D7A08CB4C4EF6D3364DCB5CBD4E67F922A1C1FECD5A5115F14A8A70F3A08D2D -99CAB51B532031BA07CC10BCAFF83F102FA24F92DC970A8AB83ABF01F90ADC2B -6C67F40E135A3AD0E0661518931B4473F3A5D393FD1698BFABA66B0EE81ECE9E -44267CF05891117ED4C091F63A46837BF99F3CECD196C1952E20928FABE90164 -7E4BEDCBF8CB2C7E6205DD29EDDD74531DD1ECD7EDF10D8A164FB3801526B3E1 -5C19E9A67E46C154CC58CD2EE92E06CB93ED6C42495BC36DB813D4AAEB30AF58 -D61197741E24358A775C6FDF636658E019B879FD9CF2C00963332DC9B2B6DDFC -CC4F97D5960B58F75492D9BF2FD2F3F7D177CF19D070607813CF6ED9FF33DB42 -96BCC24502B9E858C17BAB99D9C51203AA36C346A968DCA6C8E891206E447358 -ECE715A9BA4D63FEC6F13266F92C1A6E8F3B4E4914E02C67F09C334A2C39DFD4 -5E0EC2D074171EAA6FE216BE2ED18395DA9D3090F421F6E08355ADAC2B6DAAD3 -343FF6263E568BCF2EE6FAA8D0F773071DC3D7C9691972E98DEE3458FA233250 -6DE04405E13C04E6C962DB3552272F1547BFD1FBAFF5160309A53D89E24E4418 -2C3841B0584D28D6559CD44DC5AEBE1D73FAAEDA61910496FB38EF731BDF5841 -C60CBA2F9422B742AAF5DEA61C3EC6F8269DD30D5D4B455616BFA5FFF9B70EB0 -C1C92ECB229358509E236D002AEFA1C29557B79B89ED0368F3A3915BBDDFAA4C -673BDD8BCD1FC6D7D2F68FA00F48C52D8F49E72D64BF2C63B544A174AD99C542 -C94631A1095F8101878EB5598B120CD4A4ADA0B4FCCE73B65FA94BDE49C6D11A -10E89D9DA9DA26C4FAB2A66B74B9DDA9DCF1A4C8E58CF651A750F628ACAE3964 -774AFE1CC82686674A73CA529FBF88D463081B1D7DF308B4D0417382D69EFB5F -B89407992E234CB9633268F3C3AFD53D53AE3FE08DF5C859D276D9FDAEAC7395 -5D0B9371B6EF609AA5D71AAB79279CDC2DD9EE2F48801BCA6CBE3B1ABCF3C997 -3687DB032EF72C32F8E796908B43641B3B0AB18AD16555CB0736D8C755929CE1 -D55586C55F3CC8B2CB9A9938D37FAD90D90E8D59DC9A77DEBD7688F31EC31570 -ADD09AFAAE39FE25410233E77333CE74A2B4DC55C09CB9146EF1A43CEF309619 -60762205D62F44B68CA6CA2DBD8078881E2F50330F9F262C5DA9D0850148DF56 -F5668ED9D5379AE5BF02F1DBA996064B804366F0F7353600142F509477C0B95B -798C17AF05FB2FC28F00D2C8C616F1B98DCEB8FD44AACB9762BC8ED555447AB0 -3A29D755EA73E269DC600943750E1E75C83FC95F2015EE57FC7A229701E91F13 -BB5CFF46BD5570B3B935731CAB104E12532D6FE82C3F8E79C82D0623AB8BD2A2 -4BC8A76DC133A0646981139C393DFBF1FE8E5E775FFF63508CD6465DB2C30546 -982A36D5DE59BC827233754EB60D23FA34787DB3E2BF4C34E463824ED62137CA -B49A97DAE0E51537C8C481C063B1DE6147C8179BC5F57A41FDC4F254F2A4525C -D2CD7C30779054B37FE2FECDE27217EA1F8E652011E32455719187BC6D3F94BF -53E08A4470BFCD5E90A647412701DAF792A40496EEF7D6432854B1985F7A7A2F -1EA5DD74CF778374939A2962BF45AC733FC0D69C5EE1DD920BCCB1ACC3BA4C2D -5BE417F1386D95A1E878F7B905365F8016B86EC36C340899D24D4DBAE6A7B866 -EEB0BF2BD69C0317BD6CA70542E3DF6F1F4B1AD924A68AECD55B77E20FDC3100 -900733D5AED2F0AEB47382B1631E1F53DD4BDCC520FAE30F5DB7C470AAAF50D6 -EB7393EF82522917DD5925B3D0D6038EBDED758DC54C6FBD5C9CF8ECAF2EA45A -5C87434A564F16FA969C5AB409CAF09DBDAA324D8830CD9823B8D2AEC26AA0BA -F7D7AEEB9FB9FDCE0DC8B1462F703E54A18BD357A376BBFE57B5AEB78B6EB84E -EDBCB404144D9B750F8AED7FB59FA3EB1D0BF99713341A9AD822C22DC8981562 -8105155E9814C558B31BD2D3E11A6C4D74D630F8DAE7BDFAC860A561721EFA8B -8C99B2324DFCB40C24C26DF34070F308F24B4E67715382F1BD32B0B2BD845749 -6D67A5D4BAA65806A87D035E68318D3E81A5A95087C587057B41CED663A9BF0B -BC37B8708FDAA0AEE135A314CB0E41EFCEC9D6495213958CB8C9EB7C25B1CF64 -C95740AA8306B56D73C3CE2E802DEACA6899BAF436FBBB3FE3933E5290178F13 -0300C2081174570B47DD9E3E96A9D4D04849FAAB51EB2DCAEC70F6AB6E1403F4 -4286A04AD2CB3F588894419B9C377DCF9C80E65C7ABB70B95088A747B68D2FA5 -DCE8E16703C14ED1CFE479B061A3B5307B174A01EC460C9E6D0FF2A4BE291A53 -B08F79E41E70CC397DD35250B49C56C76288C6B71CF4468917A6922C13E2FE10 -3A4489BC2483B10DAC76053EFE6125031A762C89251EA10658A92C0C16847F94 -A3F6A7163BB5CF9C0546F079017245C749B9B8C8F810F4DB7296FD748B88811E -93FC2A5565FBB48F2C28A8C3DB4FDAF0B0B7A845CBF77092C382E0D0F37DB976 -CE6F4B985C27A2F2AE9F6A81C4FE89537EC000FAEA98BE85261E90E0CE7E292D -0D163ABF2941A28239E7DE6912BB928E8E31FC16BBFA5D31E8BE7C1E85017C01 -9704AAB90ECFDFDD73B56949C2CE080D6A1320415FCB548B9517C816AEF9396B -39D931AC3B5771E22DDA4F484814B65FC2956B74214BA806674A7F2CDDE8B7CF -CEA95B6D7B57DE0E5D0E0B720FE5FEBC04B26985AE0B0DF94ABE40069193895D -8F401ACE9CE936F4AC53BB5DDD29DF175FB4A20393C943E40F2F7692E92DEB2A -A1749A8C06E4CA1AAEC04CD64A20AA676C52DB7950DD736421D87B6E15C7F7F9 -CD2E6EF4121148AD105CAC70B1F0E4854DB563E015B01274197C14C910BAEEA5 -A09697E505F45E56726C2C503AAAC0EAE62C10689310E9B06E73A8D9BFE67C0D -E61559D75A6CBA951046852983C54D38684786BED94307D8386E31FDE2C7C95F -69449A6A77F90057BE6450F10E23538EA4997075157F1B7CC255E0B28E32E1E7 -D225DCE3CE3B996E7ED8AAACB3AE638F9B21A502F1230E5CC6AA0005FBD926BC -37634DD38E9F3A01ACC0FEF1A85225C2D9465998CC02C0399BCC4F49F32A0482 -081CF34309F27B7A14685205D8033B4E0E7010C9B861329150A2D743A4BE4583 -733E3D5CE76C82797D98620A5DA2DBAD5252C0B9AE16291D3C6B93F4C24ABD22 -4F57BDF81CAC04F4E20CC7B67A87292FBD821DD372E6DFD12B7EFDC9C1763D1D -7B98CAAA1BAB4BFFB68E2943A68B03D0CA4A187556E3EB89DFF5FAC9925CAA9E -2DF3F099B772EC1CFF33A032B9107247BF62EC8724327EFE75CC97F4C08C1EF9 -FD9C199148C520433F107485752FB07C1619C0BEF98AFD9EE3D29F2A1B3F5753 -B90FAD5A155473E7A7BF8FADEB7C80306529BB9D92526B6D878AA280454F6579 -30959BAB8C35EFC33F0E67C7E7C6828E2225F1717A62D16C18F0D3BA52D4D809 -A9F7B7D65F522735CB562DBD9111AEFDE0823503F01259EE4741D6D3AC51E0AE -F7723EAB411B9E48CFC510D1316247A28E116CF8181C691B9F066EBFFA7B162E -64D6151BFC74B9B9A0EE89D161B76E876903E58C7C57681ED07FE1835BFF15A6 -260C704239ACC0FAFB0F42FE11E97BE29E743E6DC8800559EDC9887440B25AA2 -399D4C38631B0D5521C5BD060C67A561CB84122BC4353D8E8F788F1CD3E431C2 -71E14C995F5BD51ADB63FEB1F1ED33CE3821DCCEC8E64948DB9AF9E7CB556E37 -AFDE3DF114CF431F75DF3A84FB9D817EA37060F051A4DF349BA10658D840BCE2 -09020B8324419F00303FED63901656AF761805C5632902F78D0CAED5989090AB -6665BBE4F4FDFBC17F1421D424B306A748C646A37A11B9C27A772B3A385B0174 -BCAFEBFBEB7C86ABBF4C49F09AA878A82DF51178131A0DB7C7ED82DD376CB796 -98DE4116CAC8C622490839FA9C783FC68D1A131B635073ED01C48229A954A6D7 -26B4571B9915DE5D3B04FA025FA591A3A59CF058718D20497C9DCA98E513EAF0 -E4D2AB2DD7146647EDBA8C0376B42513A0A3AA31691EA408B83EB26BE3EAC433 -12BCA857EB94BCE7EBD4853D789E15602FFBB710C72C957FBEB2F744F66AD54E -6A51BE63315C7B6E36B54DBD88CF60251D31C73EBB69DE180A61116052C4B12F -6B5E2F45155F46463DB324FE30BC02CEC38EA8207C64852DEF649347211FE3ED -09DB60C6C2E6F168B9F5C9F4420C6FEFBDC43FB2E479794D5553EA2D557B37AD -91909C0B86BEDCA02F321D6EADE046834C2EF251A794C429DD02C4777393E7C9 -D9516E1B6CA1694FF3C390AF6280C53D9B03BAA2BEF6B4BAA03DDBF73215A47F -371982F180409C3B96C4FEE85AF97BC78AC8D2049040D7E74B34DB182BC4BB3B -8CBAB49F43DF21A55C4CAFB7BC02C858DCDE59B8E081ED3A0232B914FB1B434F -7DB098CA425029E9169F8CCFD1FD65403BC68CA09C2171C494B65B95FF5DB88B -C4DC6CE1C39E7286FD2AEEB64427EDCE67628FD124B0322ED931CDC132A4217C -733A542A0EF05A7D9685AD7E0E0660A43C08EF58CB54143A668A0BC87B774C2A -D612D29E0C904A9707D6D692178E8064C9CE8868722AB9EA2EA6291F143F2767 -5FFA9347FF969C9266476B79F21FC21CDF91E833BA6514092B78DFA65947B8A0 -5A25BE84B7732136F912EC7329D6A4694450A9796493693B9E9CB85C72616427 -B5A095655418C333BDC00A8C0A0B9E8D9A76076C59139D3E75C6C6AA85280476 -A4D25792320AD2BBADF70A60A220F9F786B53757CF0451F69240B2CD299E66B2 -BA06C58597BD7973C4EDEC64870E8DF1599D0407EB1831C2569ECE659D7880F8 -A55E82383CA333BF0800810E5544E70914F58AEFA80926A6B777836211501B22 -480E5BE73E8D4C3FD8B86B106F9018E9C3C8246FD869D2DA613500CDB24FCF47 -3AA23A4440B4E6E5416A7294B8ADDD4CFA8E10551978FC369FEB60B2CD86D88F -B9AABB5C64E1149495C2ECDF609A830DF130546476FAD5E5E88374F46B92C9AF -CAB1115EBA8224F193D66B118DFCAA5F543E1CC7859EFC4DAA0684814ECD89EF -2C14ED98756A6E03E89E7DCF6D07A4DF1CDF4606ACAC07D9FACD5289E0EA925D -729D9BE998D4E708D33789A63268DE0B59768A00CE3EA14E5EC46DDD913C1A8E -A9E9BCE0205B8EF9A761CE3578C8A745BC114BD0EC87A07E882B9BBB27906544 -03214FEC51DF4ACC70F1DE54DE4CF537D00E3C4D7C3F98D397382EEBC3A40428 -DBF36AC39DBAAE6B7FF2B3964B60176F1D469EC7A7B470DC7569E6ABC3D3B844 -358F1389461470C43EF9A07C89A5DA3A51BE944D5C51C4D335417E8F1D335E43 -84F34695C912E5FF7D9465E1087223CDA7D837AC7FB65DA0B76160319F07911B -57EF0DD8F9E434B604645E18E42C6C4E3BB9CB5BD13E40BB210DE1759594F860 -592F26A1AB9271F9688A95C92D8834BF964EA3AB8339A2A217A334BC0503A63D -EE898C2BCC6D2E6A38CDA086BF574E95A4FCCA2A435E1BE85D2C915562B479F8 -BB8275A08399EF31C6A7F39745D263A100BB47950B4769D030C14B547FD5DC24 -493E2DC0151E675F6E94D5AF02C091E4586C19103087CE6DCE8FCB5B31BEECC4 -49A9D9855B9EEE2D27AEAA989137F3BDFB29EA61BD654D6C51914EE74A1CA5C5 -E5A9A1F233CBFE0957F4ACD55672D07DECEE7F52DCC0E1624D385519FF20EFE4 -CC2BDF40CBCFFD4A9482CBCD041283016AD3A95AD728DCD1D7B696A92050BDF6 -873CCA452DE82877DCBACF560887623806B838AFE8FE0D6ABF646D5637424126 -FCF9C2852EF6B4F30E3725CA234FC62D325E5889090F6E1C73C0731F955389B1 -9113533BE0819AAB39072DC6C20874232EFAC3CC73154F480CC6F734F499045B -7333DDA2C655169EA6D076473DC9354651C067D3F7F7CFE8AF1350281A85D0D4 -735BA48507C70818DD7E4358F7CDF64FD6763257900042E150A8396673524C7D -EB9B5A1763D3A6854C38AC16113BA40E3D449857981D81039A5A8AD7E386229B -26B94A5945A24B8A3DBACAE1DFB6673137EF9239AABFBA56C6209563C1476F0F -4A7BD6C225E19D7B302D21E5ED7120FFF4ADFB042504ACAEA618EDE8A6FDE8BC -2E92D8E792B2DCE59657E03E65A0F04746B73EFFEB2A7FDA06D8AD08E488855F -1C635F937EFCBE6A9904C9645A5E093EEB86ED4857E12D7F5E00FF2E7EE5DC8C -80D3F510BADF414E6FC7C27D076F8F9C441C1D0AD179D37D5329F27E898B5512 -D873EFED0C5D61C75C19496D8594E841D5D54104EA2F744A8B3E226951FE99B7 -1A53CE2BB351E6811684A94BDE0934AA259BF230B65A77EF50B90CE8E9845C89 -3BE5D9A6DC85203B3C76EAC4F4ED9F969EFF7DF9985D82BD584A8B20AFB0EC95 -7EA54C3C1EEEAEA845C2F849F81D9ED4651D33FCDBFDFC7C7A83157C7F3F7865 -47B381A2BB91977A08D1995522143D443AF9430A17B0D375BA63CA7CB38E7B17 -761CCC1D56EF50BA4507DD42E21C4E683BBF59A99BA135293FB4A506D55B56FD -EFE50D3106B07600FFFE53B95E0568279DE9EB6E4BF49D7887D292BB8A74CCA2 -F884E74F81B23255BA33CF5444AE3D00EF734ADD14F7AFD9F25CA2C35A5621CB -1121F4B1FC731056806A37D49D115D31043DBF96D262E2BE0755071C6834BC75 -086575A8AAB3355E35A49324CC907BC1A57F7C0802499695779447E3F4FD37A8 -C9A83AB61C36D50802548A5B0F1CE0CF99F6DF279DED96D79F1797793F52F265 -97A4BEEA564246DAAC13EEABD348DA6963ADBAB7B11AEAA66BF4C4A672E42C7C -46D104FCA17BDEF0A804B9CE1E76054228BBC2BD6A6E03E810ADCE686553C452 -74141366ADCED5D920BC6B86225D789AFE810938C5EBAEFD706C2923F16540BA -0D09CD92FA02DCF62223774692B41DACFD0FA2222A426B4BCD6AF33E7FACFE25 -F669775FA66484D12C964BE8B48711C21FCB5B59172082B025BE518908A4DD72 -AD1B3992CC3303A571FD85F1B13CE256B1A57C9A087B49B0ECD784E0591822A9 -5E4CC856D13B2F94071DB52494C41C43C15F8B16D99A3387F57EE69395A44407 -FEA7EFFE45FC1ECDB3BFDA88D21211769495C64A709EEBEE779D236CB8D6551E -5E7F438D4564482C1D5F9C36DF4349DFBE95E0082AA6EC100A8C3C189238B2F7 -DD5593A08C9C0CA806D242019023A72CF20318CF171092F27908C13BF8A5A2C6 -40D94284156C20B19F3CC326EACE632621D5DD881AF2D47CE92724D350F0AF8D -FB59E827633191DAC18BA809DEEB78A0C541C620045D7DE6D556C105B24A4D4F -165870BD0F3AAEAA78467E81640122592BE598FAA39A64E246357F347B6E2068 -2F29809FF9BD2765965439BF57CB040CC06FFF858E85A893EAF1D64DCD6399C2 -EA596568D197B009996CA4743F0CD9D46E3516966ADD8476BCEB2678AFB03DB2 -8905F1D769976A0A762044F3D95F1B26E2F8C2459CC85D1F1F0E7F0FE46EDE24 -6B176B60589345D8FC6D29AF6D7197938E08FEADCF6ACF287B44364E23CD2D12 -74C209C344ECC847FFEE64B40FB259926CC4F57340EE7F7C5FCEA60BB1E758CD -65DF473A0BB14B53E61743D3EB4EB8C4F37BA892999F8F56B8E33488057F438E -A4B585A46A147AE5A37F410EAABA7555D3E9BE148562FF765243FE76559C1D0B -5DE2CFC71B108B2DD9027D1E369CCB15D908DA552E90BA0639B8F87AD4B5EFE5 -0599493640AF291D4A779F124724530A7A3FF333393C4195B32B5CC3E2B9A8BE -4E6DDECE14103BBB3F1A8ACCCEA07FFCC30EBA556F9ADD56443DC2D460178A77 -1FFCE92F43A8792A64634ED6C6C726E29083AB5A919A4BCDAFD6CB40ED45B080 -0129F0EC679E1C0769A4D3925CCC1F3CD8CA38D578CB34CD636C0BC6B378BCB5 -8B47F2E20709D1B4A119D064B0477DB95664123C0C8AD271661936026431BC86 -EA7298EA8873FED181F00A4369E798FAEEEE2818B1A8A19665535E338FF2FF69 -268435C505C6A1A60F6F1C13976588499C9AE069FD9D785EFD89CC7E -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 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 -260ED46500FF41D25635F195218A804B2651A54079CF48019C52E1B551EEC3CE -13B1FE4864981041B247F3F1908DE3728E345F81A6863581C22A349B8AB7B3BD -BC554FA3598B2B5C7AC6112CF380D176DD6BC6658BB55A615171C47A257EBC1F -A6B40E10B77C81889061E668BA620C0868AFD6C9916FF4F83185A2B9793C0F5F -F3E17D3ED954973E9F56DDBF1DE17DD04305A12EA09DCCC0A60A0BCBEF431F94 -4137FD5767DDE33F5A1641C15D5756CC52CA9EDD64727BD3BE976D4963BC8914 -C448D479677BF9AA55FBA3A41F58110C9B8420352BA0B2436A376A27B6027974 -FE6FDBB94FB71BD2E1BBB9D55661B82D646CFEB57B912F0A57F6FB10DEFE768C -5A7AAAB7D150E334E0251B505F9F5A82ABADF6327A8658074080DEDF1E292A36 -27891B03A0969B23946281FE83B4F4609183F350B8C3E79631499FB05BB37006 -6E9E270B7563D383180E0A1D8485D23C1B0DB41D42CF465441B90C34D846428C -5D5CA1F39BCD7458C8AF0F1CC7E1EB1D322A72ADCD01ECEF84DEA2278EFDAC11 -A39100F9C88EB358DDA188EE1CA33F521F7AAFFD7E2B2507510DDA91CDCF7E1F -023C2EB7D3C25C6C9207D0D77244846CD0658DF5373AC68A0B8A89888B75E5E0 -0B01FAB9CC0D5FB3F26BEF1C0B6A40B2B3A7F5E3CA59A6CE6EB31F175724D2E0 -7D69EF2A0BEFE3E68ECCFC2BEFE3CDC2D36D065282D8F478F489C6690EAE6278 -B147AC6F902CD400D1F79C0E8D61ED58957B2F2CB019B0651BCF74F140C38188 -C9A741BD6B3659CA3A921EAE6A1500B64835A7EBFC4F8B1D7979A5013C0A3ED5 -821ABCFEE54487D57FBD698E6E623BB250CF43C301B4F4FD944C03723A5D49BF -75966554CF683AF12CB764C32F46F603E0C4F46F83F3AD5E1B2A9E8032747535 -3971119EF01BFD1B185C706737255D4E3719E1382E40E90378EB306059166A29 -39FAFB6C30A398C8F9A1FBCEACF4064D4062966C72B3C2A665BA410D7C6C5810 -6F07D90B96ED207BDDE151636732DB403FDE31DDF0D0626B2DB07FCD5BE25598 -22B2D448F0A4B680A50E700B9A05B72AB8207F86A25CF40DB3BB4FD5B2A6A963 -D285BFF60296D237712E51536AD6B5F54E2A68D914ED54E3897BFF6A8B91A96C -68167CDDE161FA909D6A1974CE568F9062C2F142BFFC9AC6DE1FE0EE7EE535EF -C38A2930AF1BD3A9AFC0839B59C344918F5C526E7638E08877181532449F8E9C -E2E3A607C522926CA62EF1CC898583D9781AF9FD951CCFA7410BDE4C7001D53A -4800D3A1D296CC7B5D8CEF51C870B89526A483638B9B43889800A62D474E10E1 -98EA6B74F316F10B553C2D65D2C8193B9ADC64848B5237A11EA8EEEABB005CDB -31BB0FA75E296F38EEC76E07A677A5CDF523E2C028B5956F7D682569959FEACF -2335A745C4C9DD37CEE54C6C609F27CEAA2D648B1A266196984A755D5E26E10A -BDCD2559A73B0C0CD7FB779889AE33F5A123EBC8A7FE95A3F2FF2237BD2993E7 -9BF498EF402B0AE48D9608C1480176C3454C8BDEB2470B5A0323DB0B84DDBF1F -B893C4A1A924DD55C69973C1EF3EBC03C9C51D2A2AE58C410BA387DCAAAE745B -5220C7060B30BD3229ACD296094DB265627B4F4AFEECDB930814BBE7CA1BE5C0 -17DF1057C731AAC5ACFDCAF6DEA1291DF3D44F06FA7A23C7A1254F6F695C52D7 -E0B5B811A9BAC206DAD4E028208486E71BD80A3E0AC6E5BC540977B6DCCB80A7 -984A3395C6ECFD5070DE23607EB6331BC8B675427BFF4D732E756A91809E8F21 -A911399DEE24327E42F298FDC68762CCFD879BFFA9BBB1DD932369A66C1F0198 -9B60DD9221F472CA460FEC66B6A473DB45DD1A6AA4BDBCEF9EBDBD360DD84A56 -31FBFA2BF803C059337F321D5919AF28841FF796105C25B453BDB3B9CF2EC269 -A588699159AE9ED7E29CD0458D7F1612E77F26B19240F365FA3CF830D4868274 -CAE404E49C944DAF661E64370F7D3F99742910D80D7B2975F9973241EC9CD74D -D0B9191E0A9838D3DD635B8C69EB4BAF18092D0553E9F45F1F91488B4E449737 -58F5DB3DFF20FF80E8D041A7FA1E634F0CCC946B5BFE52CB1A936402D803F13A -EA31DF116DEB2853AA8791943033104826661A7050683B66E72AFC0338A12D93 -0A0074BB567373234399D3C99311F4EC1236811F6EAFDBCF8FCEDEB70F7D315D -5B6C254B56D8B294209E1200A76F256148FEFDA0F5A988658DC6C9FD408319AF -C77B6CF5DA78AB85C34E902DE729B06DD8786F929BF083E5933ED344F2669CF7 -17ADA411F0217701A1BD93FDFDA5C69BB1CF687624168E01134E1851ED698E0A -467053C3C283E3241D7F0E707D90DD9D54E3C66FFB0E79C48999B1930966D603 -51561F40D29B6E5DDA09F75765DF2B0D953C0AC131D0109A33E31DF9A5B0B873 -4E8752DB4FB7FFC310F7844A2497E417E8D1F1909D6A361F19DDACD28BFF4180 -7D36980562CA659E88423B3734879FFDC728851299C95977199607A1AF16AC63 -D003D13C8D3B889D75D920CF8B8E04F21A1AC402A7936402F9B04B9CD14851A1 -3B9ED3958AF1A5D70D5E308C2E198D925161C9D2FEB0CBB3A0946AD0C1D87096 -438FC24D8C2C40C4977F36C9048B22300C0015B4995DA2ADC97C8E20C960E9D8 -5F388C2625B0211B4E171AD161E510D0231B5FAB5F8D188F8AB71430C946D7CA -C79211B83B0779594FCC762B026722DEF1A1B4311FA2C643CC1FC9871EDB794E -8E665FAD639DA045327E32B38235235A4FE93730E7B681E139D40B74AC18B80D -49DB6CA0A8E52F4181D519E77A178A07FF29BA92A5D0E9AE3BDB75581EF4D3F2 -9CD1B37AA9AFA600434C238C7DA7CB8A183254BC6A1AFC52CE880CFB2F1A1B29 -635DA29819A6FAFFDA3DE2AE553EB01E70AC15A8030B818D7D393E31AE420521 -AE30EDCB66C4BB5DDA715D319C12E26F665FC6F55E76E51E7CD64F1355A261EE -442A6006B938CE9898D305907240C3B59FE6FADDEDC5CBC2DE6C992BDCD568C3 -1CEF46370B9D17A8598285F88386302C062B0B47C352E9D04E0261ECA86A4D59 -452D3237C64C3D629961467437E9AB1A945F1A8B1B34986004897659D926766A -F8D2433321C082E4E0A6FC4EC0D7E33B85DD18BC3624FA19189E5846A6C4604D -CA4BF27338599771F469ADA89E61F28804D6DC4619C59254091BC374F3E078AD -26BA14C29BEFEBFBB9031D799875374DB8F74CF329476E6F415D73B94D732C3E -AAB918678EC02CA47DD11B9E1802FEB787D0B321CC006CD27D990C0DC889E3EB -62CD383471C7D5549B730310A7819BD176691797575D1B38418117459FD11DE6 -3892DDE104B7DA869CF882EE66C26CE74C3A31B221E81FEED91157D11EE9CF05 -97BEDE45592DC77355E0B2D44AF2E7E07B294695303A2502A4E0C81395976037 -B0DF04F5488DF33199303874F62F01EFC12C6360FE2FD26EB062F5D087B32E3E -877287AE8C5E2F25A53471F2CEE59F1593D73933C13C1EDF4E79369D6469D83A -6A792E581D20D06D8FEACDEE2782EB331ECCE6C5D643BA3528C1831BC39CCE04 -40924BD7F6F03C48F6A6B8CAC01906C2B020EBA3441F65D9248309A7EBF85DCF -6ABDFD5134A0B6C2BEC8E9851179DEFBCD1F1B96142BA9FE539C20FB1AAF46B7 -403E6B9928156D5802463B3E9AE55D6DCDFED232FC21A9B38CAF57E481F52CB5 -0284F7DC147313FE4C3F8B4D2C679D1B09F8E21E9CAA5BD118D6E70B7D2B3795 -8CAAF346A46B4532C3C1F7B4A8740A69193174570C138493E205C057E3AF7DCC -86A40E640E79A86D1E23AF82F55D6CDE762336373A4C269EA5104135430ADAED -842A1C2ED6307047B537BE46039DEF7CF0EA805B557E73DA6928F94D760A4D47 -E3891CE22DEE0036C651BD271561FE3FC7C3D715C14F3526459B9C54481254FF -E621291F9F142E3CE0D43A36A5464D6AB248B9E43BAB65E943D5C1E2F8F36D53 -612227D65CDD63AF4C60F01E39E3005A1723405B0E3E5852F24E5B2BE95AA85E -C92E355186F4196CF84F05592814741BE423F34CBDFB64A741E8F23F9E6AB6D4 -89E0CAF347179B3DC8CB655DDCBFE9546EC62E7009332F56BF5935AB27D4594E -85371E69437782901D4480CE2451A227DF5174ADB0BE36F3E209A02E32B9A008 -02C2D29553F6CA5783B4C26DBF98B32D59A62320A78169BD4D59B9E5164A933C -CEA5C6F90E68748C9FD9D8A3F361CD2940EC7AC579FA47153C577221330AA92C -A11CAE469C804352F61A481E9D310837CBE28ED52360C40C797332D4E8F3698B -6E0ABFC483ABB844FA9EB69EBA970A30135A852BC2C09A432F152732CC8D8979 -2F514804F9103970D096ED53752DBA15F0C8D49B27A259B6FEE0AF098A4BEDB9 -D5F2EA043F4A3C8B78A64F58EA0FA6CDBA92683DCC4BB0E492E21885F7EF5995 -409CC1F4D762114A078A015312A0D0B1118AD4D0294E78F70A51669CC4663802 -0DD0F83EB9F1439B7BD169AF910558149E179F4119281B6488AC3FDA295BEB04 -D9FE0E7918F39B11D51A0FAD137591B57E17289AD965EF40C6350D53246A2F56 -04740DCB5C609AA0D67693A1B8F5B1A33ADD9591D00810179740F78342C663FB -75D027DCF5EAD828DD867226E05B52EE436EB7063CD803EBAC7D83F84D4845E1 -284D2FB6BF594C6E4127ABBA5A2E7165A7E677B0E077DCE038CE862437799912 -FB7F5CFAAF0517DF5F48984443C3D568F2C2095A2046B7763CC16931F1C0E97E -E96BBC9F32EDD56CA92355941F4FF6380F03F382840DB606587F39C8A53643BE -1693D61D6783A0D7ACF2E96F03D9178263ADA8E0C32E01961A319E96C81451D6 -14762928E3B47B0259049E5A00C582B8E0F4EFAC2BA34494F1BD2EAFB5B0E1F8 -42F062BA35B374B6873481E3C9AE60DDA2A1675A40E783E594D0B2516270BFEE -D10912B52FAA4BBE90B077E6878A0F11ADAE5F246A847C460DBCDFD52683AB90 -4C3129F23DCE2E64CAB2BE2FBF28DB9E736568D4A809F6FDC4AF772965FF380D -9973F8B9FA0A6A759F4E2FC5CD06B2430A8E854D3B044178AC5A3F93D2D212CD -53C7FE0CA19D4A87420E0B4A7F5F99783C2A1404957915B044CAFA04A6AEBA2E -449A0200DE050029B73691001FA28C48888C0C7D5A4F00A2EE9370818144892B -A6EA1FE7B0294659784C6101F8A47EAE21B3BEA35EAC76ED117FD039006429F7 -A03AF3B240A50D215FD374FBBE77BA23080228772C2949C9F13F708741EF9F3C -AF7BC6680BDF553E0E15C223870D021B078BD0CB44E31329997AC8A473DFABC3 -66CBC0AC6DFC0D108F71B5846D16D76C91D2E56005C3CA3E6BF53CC29A5D1439 -30AA6E470E7B106A97BE43146F0A0634D638484CC89228A98A9C03B58116EB85 -C2D1C0B95761EFB4A594CC60BC184209A5F83A713CC2A0FA014341F457E53636 -52CED805B4ADE0A9258F0104115EEFF94D33B4480FE217106E90131AF1BA07F1 -AC80CD4F55D4267FEE393446DF4BF277BC37AABD16CFCC471BA00DB24B27E92B -1C9687480441D46C4BDC4DEEA8D678DBE0B573D490925818558578D3A831012B -1993CE36F1457FB418C623221AC45118277BCCFDF7FF0B3905BFE61819CE672B -C792D34AD29716B217E3F6BDED6EF77AC9DB96453D8DE7A7AE06ACBF3BD2752C -9A1DE0BF84BD44FB2757F8E00681F546E3FE2B32DF86E17052D3C7C76329284E -D56F4F8AE46EB1466F4EAF300540F8A013AEDABCB8BD822A2C0E0B95AB1BE8A0 -5A3E833F971763009A60B792E42B40E18A686BD080D939C8FC03990B72AD71F2 -EBC4E9D4D06FC3D49B5B9E74F2DD2A59C244DF087DFBD51C34244A22892D5F52 -5C472583621F8F75A0DE923F2E2260B70043E36AF68A8A847A0A1091AE6AB8F6 -39C743BDCD2BE890D64FD4E106E2D67D5F102AB381829804B03FF121CC6EF02A -A2B5AC9485D298889701D95ED06B05B91EC99A343B3DB94D10E927CC1F1628B0 -15EFCD5F926AAFFC8E9FE4398B765A4A453B1CB23583D705FEC30A5C6C591BF2 -405B5CA556F1CAAB0ABDA1585510FDDC8F4BFC256EE10AF26BFE8DB5FE6FA800 -171A5BF5CDB87DFF501AA965EAD557F7DE57E8F33B01A58D6DAC6111FAED279D -DE7E11D29A6CAEE07E60C3A8AB3EAAFAF873B92E69B33E4DE1F03804CE577957 -62B885BABF1D593564914C1AA53F689E5F287A320DBCC2150CE37834849514BE -E6B38CD33827EC438A2EEC0E977FF07A8CB421CC075F93F542684D448216C261 -F9EF8FE81E4BE0E56B77718EB055B7BDF776815ADCD582904556795B2FAF3FE6 -070004954190BF55D08BCC8466FF30C35C9FE1A612DED643538C22BF2D121F05 -FEDE386E5F554CEA94E6F04C6984A46030EED8198E1BD6655158F4A52B0B7CF6 -0AE52299350AB52268DA0EC274296F8039386DF6413FC06D06144457E6C433EC -49DF9C5F5A30CCE109718634F2E148450BE0A3535977F3009F6533E268F9084C -03071DF54E0BCED1A7D4AD5FA2695DC03982BE6064A52A75C17955725D1EDCDE -4184D8395CFA91FAAAA2458D1B6505C703DE4800128BF9EA91CC214E61867A23 -65202DA3C9A1782FED243AC6995AA76EA7229E27B3B38895BC27A339398244DB -14D1D69402444608FACF8FC6FE709F2EAF2769B04437A1E6EBDFC6783A44BA05 -F810E179AA3C1D54F208919214424F3F3171AEA189E8B973340E516489F45EBF -B91D03A510D5022DB0BA8726073C388483D68B466A909FEAEF5DE111F636328F -3B121A23C6AD7BE58C604970952F2DE35C5B4B8852556C59C8151A4C59029C43 -ECB30141D0748EC3CC3F9F33BAF904A86D20C771C4488149D6DA989C03D9ADE8 -CA5628A984BF2F7B9578A06B177A44D824DFF9DDBB977E6251BC4BBDF2951E21 -7AD34002703BB976C2DD8CDC95FA53D880207F26BCFC82789745DA803DD0242B -FA369232379C4AB733B2A6F70E3DA29EE22C7BCD56108BEFB0060C6DCB50A16B -E8694DE9A114BB04A3BB5C004F9BBB01CEA952A672C15C7AAD6E87CC3C454E9D -06F996DDECC3E125BBA32F39E01609E7CDFD278A27511D6EC225401A6DECF2BA -5A4DF0487B87A5E6B3A9163B847068679AF34FCC291F14F4245EFCF31DE9C0DC -7291308253816224FC938D3B5FA077F220616D4574425959CBB4E0A0F1D80EE0 -D2CB9D4841160614AD10A413B4976A4117169E04D32164B3D311D99395706888 -241F80FDBB463C5BB9FDBAB1CA938F98F1B65EFEE23E42504E3629D68F7A6F78 -211CE4A077550AA1254F7841B21790F14B47EC67380AC6E18F5FA87EA47E9C87 -5EEF447A5CBA979D0F1A23595E11AF7494827D028BE9CB68E931E3B02DB8FE21 -F23BC1F084DE604B43A9AAF0F12DA6B945EBEA75341D2393C67FC123CF662DE9 -68A11E61C62A18B947077D68D056833803ADD4BC765C2720060469197C58EED6 -C4DAF07D473376A2135A2A3D2978099297A519F4D2295F21E3CDAFF0117481E8 -1CB03E01D6C932A44A674EFB92707E4791D6A3296AC587737C068821CCF69209 -FACAC062319208BF7FA643966317E102B306947D8068FEF15591B227ACA560E1 -1DA2FB5869305CCCD940FC64D9781F35DF55D1DE305242DFE17E749F0B96FBA7 -A0BCC035B7BDB0991F94F715415B09B3DCB4025892DF625F9388D1F08B1C6920 -4F3F6F2D70DF9C4AE3CB0444667C853C5F120FFFA8A9A659974E92734A463705 -48A7E62BBF70CF0E45280174C1D32CE977EA7B40ECBFD780C063AE67FB6DC1FB -B0ADC9B29460225A39A7FD5FF12A3154C8EFE20375ED4106C8303303CB9BD9DB -62367963B5C2B5B21B6ACD9269A5257A398BA07BE63C5D8F0825C3D78A3CDD00 -EE7667D8978F819936E360432C5FC022E99CC2768BB27B6DF31CFE6502CD34F3 -5063946A08F1BA5C2CE8EA9AD55BF49D2D96F41C84DD116099C79EBB3AFF2CF6 -20029DE233BD50EDD5660007B67F45D4363527570EB08146E74256B51513ED0D -7E5F7C63577E8589956CA7962E7505479D4CC9A05A953F63EC9833D48158489F -1DED6FE3D107EBAC35490AE9F005EADE97FE49FB07F2DE996C055419454F0D51 -BA55DBA4B6F3EB5490D517AB69A6AA50F2AD90707B5EA4228B74ED72CA7D534F -B390BC960B0A7C1AF6555FA5BB45AE867464DC13CFB9817DF771BEFD34DA9E2B -C9D840B40A121AA85F88E2976E120847CC18F6C81F6EC0F0B836294963A26ED3 -E7873D0E643968C30FA6492B6FDFEBC685A0A5F2131920AF6EA2BA9C9B0B2223 -F7C1C61F0D03CB05FBB25B14B6680260A0B9A33FBF7AB00129B0CE4C1544DDC3 -BC14969A0A337839A0F964DE7B6EEF173F5B29EB29733F77466585941A1F5F1D -3522FECB8BA325F39E0A6538A9CE35E768FFEB7B86EED633328B2F718AE45999 -15DE6E114CBB05C7DEBF42D04A4A3EA5E881EAAB51C41F579821542C867D84C5 -04ACC29A2AE9D72D931B4CD007654CA7D9634ABBF44C0E91F6D1162A876B0AFC -37A269A209F2A79583B87657BA9273AF35897F0E4297FD568154680AC2280A17 -D3E303FDC5A2BB00EC5FDCBD438723C16E0315FA5AAD2EA9E2EEFA83AEBF4EFD -88B98616FC613A07B9A40770776A8A21076F95E22DA972178FD3C16F96B38F02 -55799901E67483F02C32895F4DF3523D770F373305B4622A3DA717496EA7E211 -707EABB98B076A465356C52970A113EACA114DA4F8ADE9B8BD6F1F836778A7D4 -CB1710A7B06183C4923ECAFF807F2F1A871F7701F260E1EA5AC5CE1045E53996 -5BC19C646393F1996B21F3674426988FA5BD65FE0984CC303664EF9BB133C186 -EEE4D3C35A938F81501422AE76414552A05E917CB15B7E4F531E33C0CC21234C -6D6E0038476FA8D50B8033A4816F5F0F0791A6D2392A133E7E58AFD3C054DDDE -081E1BB0C75B1329FCA4384D1D8C055D909DDFB8D608652A29FD0D7677A419EC -34D296EEFFF2EBBE660C719AC4DB51BFF57F891D5F8566CBB32C4D1FEF4A4815 -AE11953608B6A6E27F239CFE40F705A3EDF9995A19D211C19974232D5732CC92 -21D3B13A9D9A1B2EE8F1EF939CBD88FE1C89E0F6F74D1EEC5A5627B309149A86 -2847232869871FBAB1F13845694335792D4F297AAF10E4459FA0697057CA9244 -43C9E84B0E40AEC89E4B5391A637E0D83AAD93E44FD388725F5755F0757E1F76 -3F61684632E01A151EEFB5366948D1B540799DEB2A733F2C8B402A691810A071 -E045CEBAADCD48C9D73D87E07643E790DDE1FF3046645EBD2839147784540851 -4BE9DD7A8313920AA09262AE90E598572BC776794BFA3DD1CEF3F8D87D8523BF -55FB5DA33E2E33DF3828AD100485721AF814EBF0A353A4DEDF3D2C6F56052C1C -A6884DA940039F2ACEE9F2844D376C53A4BFAC8CABF05D2AD85A8FC3A68CF53C -B68BDEDA7A0DC381D6162F684D5EAF44C2F52F6813D4F7C1EC873BED0ED0DC5C -129CBCBE89561F84EF73AFBCBF37A38293332D7A444F34F68815B8E17ACC121B -38D268216987B994E4C97F79CB025BFFED741F274E9D5DBC4A4BF7B91BBC9505 -8FA085D64E720F752D79684FE7EDB105DAD9D6384497815E0370BDEA559D7395 -E1F3C0E81D488E026AAF841B57E7548F408B851741A3E37DBACC7D509987744C -E675FD8E781E7FDFC523E48A13C6DF88CC593B9ECC40FF138647E40F220687B3 -59F8E2E0D51A2F30AE2332C2593570A4821D99185B9D23688D94C5AB8396F346 -733B36D6398315CBF044E5005A82815D67B2ACE67419E994B97FBB9CF1C26B07 -EFE03E38B9F5F24AEFEF4A2008418892101FFADA6EF06A100664D8F388B72E8C -30EE94F9A769D962C76442935FDD6312D001582A21C2DFFF7B8B11D55B28D113 -B98727B1C485DC9959CC5CB0F07A4640D7024EAECF335B22F907FD1E969CEC0A -785CE260AA8B9D1104CFF3859D9255C00A77995AA8005065B6DA3DABACD56108 -452B517990C8FADDB70B20A136FF47FE428A7D67FF41CBC8425B45A8E30DEBF9 -E64AC7BF133CCE6FC1BC0F6D1FBB0C2515C1DF2D472ACB2A42017BB35FEEC968 -894F1B4166DC8A23E99108664D86D921B30AB994A70AC291F77DEC511B1FBD6B -45D9CECCDD32000D82FCF1FA75B9578C33F50ED94823C2FBFD33085F971791CA -40BF66EDDBA24554FE99B2F02249F00B8D6EC74A26CB8557FA663ED522A5A42C -65DC855C2BBA8BD7B7043E1C9965E04297E9970C76CC0707611FC6ECF103B8C9 -70372BDD73D9135DEAF52E80B5C73A39A6A52698E2359C00A6B600EC5CA1338E -A8BAF91B6ABF307EBA71A5662503D254D68411F1A96B5E762E6FE75692D21DED -08118F7F8E2867F818921FE2A10EE3BA25B707086C93C14A752961EFBB2B8C64 -65529E24CB3AAE449F63572A97160B6A942E277BAA82250C4018901FB86FFE98 -CA1BCAE75B306DBE2DE8FD396CF82CADFD2A8EDB9B686207A3FBF4E53BE1B823 -34C4D916ED2BD1073B25A562C705E0027A59D69EC8AC64E68649836BCBC8343E -DBEF37D4FC202E06A021E2C2550532AF82BCEAABB88A00C53C7F0F9DA6E9381C -D80F2D57B4B60B4685AD6C0C2A3A9DF2245B296F20730798C32AD4F2A2F7CBDE -5AC918F90C7EF9C186A34BEA17308DAE2DAF6BA716695AE4C85CC379D696D945 -FA48F2C681F444666A33BDCD48331292F86C8AC1239AC7C9DD282AEEBE502604 -AA5996885D68A4448BF6E926DD5A36C865B456A2226F6F120180C43A28A48F46 -71BEDFE3BC3AB3EDF325B265093996C4D7269A82AA923B1FE8DFB925BB3ED613 -6FDCE863EDAD90B171CEA83A87717143B6CA181EAFE46C4AE9F7BF4E0743E4A8 -0631FFAD194B78B24240A032F3CA5A5472A4E9C6A23E10A3A0565E9B7F8D1A2A -3148D05335533D156FC52950BD2BC6DA91F2D95E4C440847A6606651EAC4C7C1 -FF63F2D3EEA189085A032D9CF72B3120418DEAAF11F0ECAB64F7784B2AB0913B -E56383E7B9B70C41BB479BC36CFEC7ADA6CE67F4A28A50DFD0A69F615D5EF2AC -7D3F5CA3B43F1D4A19216917722E1E53BCA3D4169C390EE8FD55842EA2C639EF -280F97DDE120895CE226BB9AD12098CE9F70DD3AB52D62F1CB2360D2613E808E -032B2DD16D8D5A4A0571145BD5E8273A0A35CB32D7B3824A61528C76164BE944 -147073DA37FEBAB102D0F1F2A1669AD9626C6E6396F2574F9E3A2369BF327733 -2FC8D58C7DDD0A7DFC6D125389BE4FADC7886F3F9F01DB3DE5DCB7C07D4B95F6 -0E1E5381AE62A0873CADFF1871D34A79D6DA883D15C2519259AB444703635898 -0738E3EA96E47A0A3C9F18F33A5E6B143FDFD26248F7BE5230FCE42A1BF41B0A -EECD8FF8E98A4B527F4A2E20608DBA82C75F88E52A50BE6D44AADAD6F1A7C599 -F9E22AE54C45AC17D4A22E88E063268AC226A8C56C8853F5DD421F5705FE0A4D -38D3160AF85978C947CFE0B73FA8B565F2AE8EA9905F2E1CDB4B6D0E9C11F455 -AE02273309E462F812B56A7273471642408C61E384EBAA0B6F1E1A5EA99890BB -D96B77166DEA7FCA102D92BBF06306F20C230032E5898245F3FB140C8503CC52 -60F8F349EAF7D25A3DFB85BF940E63AC82702FE8CAE5B89114D2FCC0A4A04E80 -38F34203AC08D96D9C06B656DF48BA3ECAEC92DC77F7291DEA3BBC7A0DEB34A3 -0D950D80EECEBD97B9B03143A3E28FC1A8B0C90CC17680CF74A389CD4959F1C1 -BF4FD5413F53D7B138C998C2EC950C0706943B0D29450D06E0163047098C8A6A -D7099957C42B4AD136869E6733BF10F713DEA2FB82FB0D1C3EAC501DBA2FA1C1 -16898D977C31C9865EC7F84A32BA2B261E5235F879CBB5C89A003A084E649678 -9D96607335689D31A6A2C584EB4E254E4D1E68D14C2CF64D6EBCD60E00F2BFF8 -78B2BEB54D817225B2C4DEB38EA95C505215400FA3F3C504A5C0A06AA9B1D4DF -E3DB71D5DCD12F8DEEC8490A6660C8450563B8EB37692B5F2A0C23B0E0D83E93 -BF9AC290C4B5185A8A25AEE6117EF0E73926DFB4910DC288CCDE8C5AEBA9CE59 -9249FC3FADC7E65F0A7403B7D87EA2D1F716E28AB5FE50B309A251CD26D8AE9E -B88994B4BEE92BC0675D93E1DF95778EC16A7C2044878B7FD9AA12DAB04A36D4 -CA4BB44B3754580F62A6058532B20C71D79BD3E1F26CF72B5D59CF3E09E360B3 -8B734B073D7679ACA54DEB8B3AC4414EE6C4A89221D5CAE95A07933069CF3519 -32BDD4EAD871610DD53821723FF1FF111D8E7FE75BE43966541FD43F12FF6C39 -AE98DC831809DD6F31DF88B35A1771B9B9088E804020F6467C2754A3E107ABE8 -56B23F934D6553A9FACF2DF1842CEA8F2C332D90DF6A4E7BA24000615986547C -21CCBAFFE73A7A26CA02B6C739003CF2D5215156449BB3B21B220DA460749393 -7E3B1C06A75B065407098BF4A31116C581454D139970E8CD80EE3137CA4DDA9C -80FAF0408756CD533B6B98A588210D8BB18E65EEEEC24D439CFB70411F0FBCA8 -D2274A3E44E926597DD473AD960B8555F7812FEC429D13AC39BCE9C4971E1760 -3879026CE0EE2E247155CC83981829602F9675887E16AF1BD4E90798CC26B4BF -01563E938634B3E8E0B4BB573AA0DE6F88D043952B9AAD2D6142A29EC87CA60E -7D8EE5CBCBCE359CAEF888F4FB74F7D8CF8FB344E9B9AF2A2968B81C23C28343 -7C5CFF58150CE6E192DD86056766677CD72A500995C9D6ECB99A3E007F007D7D -2F747698989112DECD3E4E065FE363ABE8AC16407D41236D8BE271BF538832E0 -2DB056F0A43882675EAE6748EDCF075F7245B152307E2A545342D0757722482D -F70EBEBCDDD7B4A55556917E3CEE954FAEC5A1893377B62921F8FEC13FCC5977 -91DE2907BEADC05713BDE68C4FC17ABC5AF421D29CAA33770FB9CB1A41971DA7 -19D3E5CCFF60F2EEBC91F61D42EF19179EAA35CDD768E5B799A9CD35C4A44189 -905DDB9878E31EFBB4AD310B0CD1079FBBF0D1D43DF170EDEA5E7487E9079770 -6F6313314761201D5086B954A4D7C5EFB3C18202D7A2491E1EEED2969204E8CF -317A9DC45EBAE21444C664A83066D15C09AD161964631E387FDA3BFB75F82D9F -F83F32438A5E1AE1B93EB82A4AD67271933BD6D82565F46DC7F7E87199A9B777 -C869C3913A82550BBCA535B88E30D6C74392F2614F6B2AFB754E441AE235DD20 -E5C6CB20AA857F29E611DA9AA8F01DD449034750FD287F01E7898BCD8313DE08 -FBA363691CB3779B2FA3833A4290A2B05B11293E7AC6F148419BE63BF1964EE4 -CFAC7C3E782A1F6CFD9D540E6CF732B1423730745C5916742D23A4433B928C07 -3A1C7EB92154520387B59DFE36691F2066FD2114FBE8DA298BBAF1AAEA3671B3 -F018055DF8FB9DAC318EE729A009BE2065CCE3F6E89D3B0C54ABE5CE66E914B2 -01112CC7D23B7D32F42CA430B396B131FF952DB8EA8399974E659422A2B20F8F -A36FD62FB4A3EF7ED88D3196CD3BC2902E18BC23904DAD080812D22E0182A111 -7C451F2E699AFCFDB3FC5169B450DB272C15F07425BE15096BF2E5F84D5C6594 -A5AE02F2452142FA0E8B10A4D7BA40C7A17DB2E4DEA1E487FE13B3F11A240B08 -25BCFFBE935EECA88585F625B3EF5AC1633F5BCB914809054D2A91D9FF33ADDD -8C2C1E16A067E9E877BB55FC24A23A4F072994E05D7FABE0C96F540242CA11A8 -F9BF0BA5353711B9AC20E7FB1CC8257DB334E686872CDDBAB3621399D9D80D38 -C9CE4FA35C3DFBD7E35939F8D1E152A17628DAC7D8CE4F0C7FA5F6ED0209585A -486B55779BAF5D7DA969D64097B70C04E48E88A5B37D9744CAE562E7DB44C7D9 -C18382D2CEB3E18E8D13154687F3C48E264E86E552D8AD9B26E2BA59EAF53CE1 -9DEB35B38B1836A9777973F45940F7451B0140649FFDF7A139B97FE350FD8930 -573A3075C69AA77A3BD6CE95DE87A3E6D25BFD27E8D0E719EE6A1E4E0A2B3F03 -B49DC4B4B118BE0CC01B838F758EB7695C01134216A43A0061D1347D939128C7 -DEFC8E77E12F583082E52259D015B6C484DBF304275769565A4043F57741E8B8 -FB539C1FBE5DA3CBECF75573CA6B1B73FB55C59CA1D1862DA94E78545E7EC442 -3E71BBC472AA58622161266D014AA648FDCA0B2CC820797C972F8C49B9F0D60D -61011F5EAE816192D1B46525FFD4FEBFCA202A5F299704882D9465DDE13C111D -BCFB333E9C4342C6853564F5541AD5D032D2F4A6D6799D351EE94A03D59C862C -0C8F89115B433367BA0496E31763991C388070050195EE5CB8A48DD6A897927A -EF7DBBE723EC9DF21BE34558B9359D2A157548701DD41F85D50B807CCE212443 -2E1559A35D4F6354D09382342761B912CAB01973A01B27362CC88B0CF8068DB0 -9FB3CB57DE4F41E9FA491D86DB25D4ABFD43FE9257E7987F74EC25D7554C81AD -2C03240D43BD35485F190BEA535DAB2DFB4C46811C158C55899CD939BD8D86C3 -249793FDB058CB1A08FE4D7EA058E9EFC499C7B6B8200BFDAF348194FE31A7D6 -3A25E37CAA086ACB1274C501ABD2E8413C631F4A4E0E7A89C71F31AA8308316B -10E95153432034738B17B13628926A5D3EF2E3B0C4E66C907E8EE06FB6026CE1 -D5A6C06724E375C5A9AB0F8FDA51A5DEA40EECF446E96A23AD805C411392AE90 -07415F9CF5164B0D870DA8551BDDFE1C7ACF66DDFCF5CD5C885C608F9AE87ED3 -8376AEE904EEFCC0A11D78E8E0FC77C30AFB4C3F31A37333025F7F0E0A367BA1 -2D286CAFC428E84F63419F780C08264041161AC8709C4771C8C365BADD96BF62 -2AB25A322F48E04970546C6DDFCEDFB42673B6B88FAA60D19CF86F04ED4069DF -535232AEFB85703EB6AE984FF2F8F1113AE08EA4FFD2681B0F8564C411E6E3E6 -222AB81C89A145142125129CCE9A47CE8F2691E5FCD5C1B1EAC5B7C9F8826ADD -75A7BCA447BB38E9290426A79A7FB93CFCBC8B1D53A7281260DCF4C90E101D35 -ECA0E5B0DF00268D899419BD8FA490733F80858A7CA2BDFD40128A81B1A35217 -D80AD2D065C75DB7CC3819FA33D5F3FD0D27EAE7B23A1795552FC1162CF981A5 -6D53A285799070AE45EC14BDA455BD987165955451C07A19352631A1908373B4 -8A8BA52F80D4E5F13F93652791F7163C71C59CCA4B62D5224B38B003488513C6 -8C93AE7CE3B4636DDE0D008B3194A9C4AEC78C0800B08E46C1EF0DE9881E6BF1 -415FCECD02C22B1AA4D11B30AA66730E8FA833C4CCE8ED814E077EB71AD4B835 -F6CB797109700852450D7E9FBF3102AA56EF817267EE1AA7EC1A6A573BF08570 -380E2B3921FF9A6BC5AE23362BE1C6ABDF998AFB767AE1CAF9388B88A110C79E -034A92F696D49BB5EAA1E6B0BCF07EEDC09D8CFB378FEBD7B83232F4F0AAAB40 -89D834886CC59BDE5A205A325FEB86729317D1B50C856302625054DCB22083E2 -C09F24D2703D9B5832B073C3EEDBF800759917E4CB6F53F234C8E180212A1463 -9C64F47805EA79E0563BA9EF48E4B7C73BF0BF4983D8F9B6A71C8E977D57155D -3A48F9150A7BECEFDA07D7AEC66A5BE014237E91ABAE9DC0DE0C7A967B33AB83 -73223B33F7AF8B139B3AB187D4FBC8A7AD8FC07CD5DEE0A9E528D8B58FBDC618 -57D8076FFFAC60529EB33BD2AC9762834C4172D626325F8D419C0B19B8DE53BC -C8CE92A58053AFE26ECAA764978E7309727C518917E8321106385E70FF8903E0 -1F760625C26B174A192E2D83C7FEE0ED596E3DD50098A9EAE1C6CDF9522CB6F6 -3F27E9EF5854B2398821E0773F45812E8750DEB95C38A50023B7E9DE639760A6 -1DAB5D3F80AD1A965D3764FD17ADF258C928A2381951B60E1EA76FC8DF583963 -4B0B44E0A310F7D14ADF64A245BC3C2226F2A8C5AE02CBBABB28ADD50265CC61 -0852E653F072F69E0DF0905A8777480B3546C09A95B695BEF79565698E27EFA2 -17B00C30A1E50D8DC3A03077FC7F4B2B390910BC60BCE5C8D25EAF3C61AF2B70 -7EC02EAF0316C0E14D71B67B568D00CA92F6DBBD85ACF8D776B34B516D8A472A -F193FC6584CDF4466B3A77ECE231E2BBFB333A7F304F075D25B432103264E69F -83726C57559AD27B77433B4BC55855FD9753889533B79E633842690D020FE86B -A5929133FBF5A7B87BF1E3F6C4136B8023EDDB373DB2EF080182C8441A993E85 -78E764B96F40DE9A6F87F2FD0607548860F238384B160E4232332E07F52818D7 -43789E4CEBBF087C5ADC9A015B98042B2B2F8F69B5BBC78C95551C185B73C27F -EF4E6F40506C79E28CDF0C870911FB271CEF1D903D2538B3C29A8C3AAAB19CAA - -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 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 -FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671C636C0D2E2CE -D8649DBDBE8A697B6746DC731A91B8D0EB5A738C70E467C0CCE8051B8D0FAEDB -16A277575E9AF40B3F2CD2E528C6A8121E0BAB76D2AA4844EC6D435C068019EA -E1A61E204568F5F96B669B9720D2BEAC18810BCB07995F3AAC92FC49E6C8DCC0 -BBEDA5AFB0F58F7A0980130FCC5BF0ABCB5DB7D1CBC26DDD74A856D4E1679719 -5E80E567B56E43FA24494B908C6CFCDACBF7203DF96953E71E66F5EBADEA32D5 -0F35E49CD70429D5843A1158BF4C69057CF8BA43FC73A2A0D7B97F2BCEBA4281 -292DBC362571A6E3026C5D39C67C56F0A996E87929D62C165B0664C052113829 -B903754CC74A4E06A9A2F7E2FCC6F5B4BDE5CC9677B98362D731424E3905B8F1 -203212ED1EF2F5B9304B1C72674DFB75825CD777C265DD47BE521B46B9B08DEB -E68DA4D3BBD0D36D2558FC85FCCF89CE81E653BB8F1303D626F4DC76E85C1DD5 -C2767CB24E4A1BAAFF97186BCD08B8EB133DEE8EF02A1351DEDEE652E04BC6FC -25F9C78FDDF0D46D7B8511316619484D90C078BDDBAE75FB1E374AF96F8781C9 -6AB062C3B2F438E82AD90D455163EC1CDB961008DF06F8B7D188AAD13A8EF9A8 -FC4321B04A2EED0E036F81381304E2EBB5C9E5D10A28F73E906A3EED9FCC6634 -143CCA16428FD4CF2FB4A647659FF37B9092894F35239C0F282C9ACB2F1B58B3 -3CE9BCBA609B2738A68CCA19788C8DA40EE9327666BCCC8454148482BEC38ED5 -5F8F493D348FF96EAF8D7B815E24EEDE103D8F5A408D2A763EE6E5A4FCF6FCA3 -EC727794EE07356102A5F285201C085911A3C69164EBF2F9F85333A85BB3AF24 -4D1C505E4566728F218397B6C28C55ED9E89E273868E607A86FA3A1E474138B3 -1C3388B1386EB0C9ED48AF81D6F8C531CE2CFCFB140AACA9A454DF56B4761592 -ED64E92C716195AC083FE20E34D82D2B485A892019C8570574F73FD50E34201E -4ED48F3115D8A4549081B646F5D5EB199AB0A6DE9A726826DC6DF57E5BD25782 -6AE41F632ABD892A11BEBB2688F4AF13F69E265A9D19A0BB0CD1A551B830AE12 -43CBD3B63E8ECB56D2571377906D8E2FDDBA145F7DC03E1CC886611A004DB730 -9CB365C8094E0A933FD700B24A107097D8F406F69A74BB9350881102A0A8B1E7 -CF2C750F8EBE2B1D5EE1673026CA0AED34122460A745B702D212D659D3254465 -C785A5F7FBFA09D533C4BD330A8A6237133BC72F59FE37FB76990C81C25CD70D -DAF70C4D170B03DF71D35400338B727EF42D73980E3843809841F4C2FAE102A1 -8ED8E8A1C85638F350FBB1BA1100A102F957172D76C00650CCD42FC0B3750E49 -BE3E46C449043515647BB65C6D3FA952A6BA1721860355E0007283E6A9FDEB10 -F18BFF0F34C0F3941CC3839E598B2D8F2C75CC7784E9FB3C33BE312976CE2BFE -F30229BEED1571DA9B6C896A02E64BD376FD9CEC8195B6C43A3292F171E9EB99 -39D9208529761E0669C4ECFF19EB710AF73F117F0509AB594083CD61F27EC6DB -72B5D55F7CB0E389CF6D721649263F1B4160F1C1FCCA8119179518720F5BF614 -01E8A29E5B8131BC4BE6B84488F6A0E96BDFEDE3CF92D65BF31D29AD50132EC0 -5ECB43077F5956A05E78638F84A252DD37B188BC6146EB9EE605C97021E6EAAE -5243720E4CCBFBD8D5869315A833FF70153C0F037AEE5213EBD9E4FDD02676F8 -1DA373549D550994B47532ACD72CFE200B8849D0E0B645B6EF0F967ADB58D849 -893B39D218E8BA2C6B55351B251733F4E0FEB66FA5937424D1E96CCEBA118D4A -44D369AD3F534C118E86A203E7E9F78687551E346D290812B0992DBC24D189EE -2CAB0E1B88A5A4D245EFBA40735B73DF82344481EA20549434C2A560DAE8D06C -A72E6C05AE5D6791A7370151F9BD37DC2C10EBD1FCA765AB75207C66D0D9480D -F019351F63440D46F829E0690CC58574ABF7A5A2F05B449067DC15836A5D824D -DE6EA54E3AE1E8F817ADEC548F52EBFC8B4BB80CACF664B3D4369F76143EC455 -4F12FA19A399EB7175D02168EB8225A66A5A9421CF2C5557946FCFEF43D9E6A7 -B7503A014FC9968054AD95FCE95046C85228 -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 (README.dvi) -@start /Fa 152[42 42 102[{}2 83.022 /CMSY10 rf /Fb 133[44 -1[44 1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 -44 44 44 44 44 44 10[44 6[44 9[44 6[44 44 44 44 44 10[44 -1[44 2[44 44 44 44 2[44 2[44 13[44 44 18[{}42 83.022 -/CMTT10 rf /Fc 134[59 3[62 44 44 46 2[56 62 93 31 1[34 -31 62 56 1[51 62 50 62 54 10[85 5[77 1[88 4[42 20[56 -56 56 56 2[31 27[56 5[62 12[{}29 99.6264 /CMBX12 rf /Fd -214[28 28 40[{}2 83.022 /LASY10 rf /Fe 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 11[27 9[48 23[53 12[{}39 83.022 /CMBX10 rf /Ff 193[65 -1[65 60[{}2 83.022 /CMMI10 rf /Fg 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 5[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[{}68 83.022 /CMR10 rf /Fh 138[75 52 53 55 1[75 -67 75 112 37 2[37 75 2[61 75 60 75 65 13[75 2[92 2[128 -3[50 5[97 1[102 11[67 67 67 67 67 3[45 25[67 6[75 12[{}30 -119.552 /CMBX12 rf /Fi 140[38 38 4[81 11[49 41[49 4[49 -49 49 48[{}8 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(11)32 b(mars)h(2007)515 1647 y Fh(1)134 b(Compatibilit)m -(\023)-64 b(e)639 1829 y Fg(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 1929 y(MySQL\()p -Ff(>)p Fg(=4\))26 b(et)i(PHP)f(\()p Ff(>)p Fg(=4\).)515 -2144 y Fe(PHP)83 b Fg(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 2243 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 2243 25 4 v 28 w(globals,)515 -2343 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 2443 -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 2542 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 Fg(E)p 2441 2542 V 30 w(NOTICE)g Fd(\))-17 b(\))30 -b Fg(PHP)g(qui)g(sur-)515 2642 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 2742 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 2841 y(l'upload)e(de)h(\014c)n(hiers.)f(Le)g -(dossier)g Fd(\()-17 b(\()20 b Fg(\014c)n(hiers)g Fd(\))-17 -b(\))25 b Fg(doit)e(^)-39 b(etre)25 b(accessible)g(en)e(\023)-39 -b(ecriture)24 b(par)h(les)515 2941 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 3156 -y Fe(MySQL)83 b Fg(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 3255 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 -3355 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 3455 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.2.)515 3728 y Fh(2)134 b(S)m(\023)-64 -b(ecurit)m(\023)g(e)639 3910 y Fg(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 4010 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 4110 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 -4209 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 4309 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 -4408 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 4508 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 4608 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 4707 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 4807 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 -4907 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 -5006 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) -1926 5255 y(1)p eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 515 523 a Fg(serv)n(eur)24 b(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 623 -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 -897 y Fh(3)134 b(Installation)515 1096 y Fc(3.1)112 b(P)m(aram)n(\022) --54 b(etres)38 b(de)g(con\014guration)639 1249 y Fg(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 1349 -y(dossier)f Fd(\()-17 b(\()24 b Fg(include)f Fd(\))-17 -b(\))p Fg(.)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 -1448 y(but)c(de)g(servir)e(de)i(mo)r(d)n(\022)-39 b(ele.)515 -1591 y Fe(connect.inc.php)31 b(:)41 b Fg(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 1690 y(l'utilisateur)d(SQL)f(et)h(de)g(la)f(base)g -(que)g(l'application)g(utilisera.)515 1819 y Fe(con\014g.inc.php)k(:)41 -b Fg(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 1918 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 2018 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 2117 -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 2217 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 2374 y Fe($adminMail)k(:)41 -b Fg(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 2473 -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 2602 y Fe($automatedMail)k -(:)41 b Fg(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 2701 y(tomatiquemen)n(t)e(par)g(l'application.)722 -2830 y Fe(A)m(UTH)33 b(:)41 b Fg(P)n(aram)n(\022)-39 -b(etres)24 b(d'authen)n(ti\014cation)905 2986 y Fe(POP)32 -b(:)41 b Fg(P)n(aram)n(\022)-39 b(etres)24 b(p)r(our)j(les)h(serv)n -(eurs)d(mail)j(POP)1060 3143 y Fe(SER)-11 b(VERS)31 b(:)41 -b Fg(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 -3243 y(de)d(domaine)f(du)h(fournisseur)e(de)i(service)f(de)g(courriel)f -(\()i(partie)f(sui-)1201 3342 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 3442 y(asso)r(ciatif)g(de)h(la)f(forme)g -(suiv)-5 b(an)n(te)1201 3599 y Fe(sub)s(domain)31 b(:)41 -b Fg(adresse)23 b(complete)i(du)g(serv)n(eur)e(o\013ran)n(t)g(le)i -(service)1284 3699 y(POP)1201 3827 y Fe(p)s(ort)32 b(:)41 -b Fg(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 3926 -y(service)27 b(POP)1201 4055 y Fe(username)p 1604 4055 -29 4 v 34 w(is)p 1703 4055 V 34 w(full)p 1873 4055 V -33 w(mail)k(:)41 b Fg(Bo)r(ol)n(\023)-39 b(een)38 b(\(true)j(ou)e -(false\))h(indican)n(t)1284 4154 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 -4254 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 -4353 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 4453 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 4610 y Fe(b)m(ypass)p -1186 4610 V 35 w(if)p 1277 4610 V 34 w(lo)s(cal)k(:)41 -b Fg(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 4710 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 4866 y Fe(CSS)32 b(:)41 b Fg(P)n(aram)n(\022) --39 b(etres)24 b(des)k(st)n(yles)e(de)i(pages)1926 5255 -y(2)p eop end -%%Page: 3 3 -TeXDict begin 3 2 bop 905 523 a Fe(CHOOSER)p 1387 523 -29 4 v 33 w(LIST)33 b(:)41 b Fg(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 623 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 722 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 822 y(c)n(hemin,)d(ni)g(extension.) -722 972 y Fe(MAIL)33 b(:)905 1122 y(TEMPLA)-8 b(TES)33 -b(:)41 b Fg(Ce)28 b(tableau)h(con)n(tien)n(t)g(des)f(tableaux)h(asso)r -(ciatifs)e(don)n(t)1060 1221 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 1321 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 1471 y Fe(caption)32 b(:)41 b Fg(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 1595 y Fe(tpl)p 1183 1595 -V 34 w(\014le)k(:)41 b Fg(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 1695 -y(mo)r(d)n(\022)-39 b(ele.)722 1845 y Fe(SUPER)m(USERS)32 -b(:)41 b Fg(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 1945 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 2069 y Fe(UPLO)m(AD)34 b(:)41 b Fg(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 2219 y Fe(accepted)p -1272 2219 V 35 w(\014les)31 b(:)41 b Fg(T)-7 b(ableau)27 -b(des)h(extensions)e(qui)i(son)n(t)f(autoris)n(\023)-39 -b(ees.)515 2450 y Fc(3.2)112 b(Initialisation)39 b(de)e(la)h(base)639 -2603 y Fg(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 Fg(install)g Fd(\))-17 -b(\))p Fg(.)28 b(V)-7 b(ous)28 b(uti-)515 2703 y(liserez)d -(principalemen)n(t)h(le)g(\014c)n(hier)g Fd(\()-17 b(\()21 -b Fg(RAZBase.php)f Fd(\))-17 b(\))p Fg(.)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 2802 -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 2902 -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 3002 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 3101 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 3201 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 Fg(base.sql)f Fd(\))-17 b(\))25 b Fg(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 -3300 y(se)i(trouv)n(e)g(dans)g(le)g(\014c)n(hier)g Fd(\()-17 -b(\()22 b Fg(jeu)p 1573 3300 25 4 v 31 w(essai.sql)e -Fd(\))-17 b(\))p Fg(.)515 3573 y Fh(4)134 b(Main)l(tenance)515 -3772 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 3925 y Fg(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 -4025 y(par)31 b(un)i Fd(\()-17 b(\()23 b Fg(sup)r(er-utilisateur)g -Fd(\))-17 b(\))o Fg(,)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 -4124 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.1.)515 4355 y Fc(4.2)112 -b(Netto)m(y)m(age)37 b(de)h(la)g(base)650 4487 y Fg(\022)639 -4508 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 4608 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 4707 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 4807 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 4907 -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 5006 y(lation)h(ou)g(de)h(programmation)d -(est)j(toujours)f(p)r(ossible.)13 b(.)h(.)1926 5255 y(3)p -eop end -%%Page: 4 4 -TeXDict begin 4 3 bop 515 523 a 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 -705 y Fg(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 805 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 904 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 1004 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 1103 y Fd(\()-17 b(\()22 -b Fg(auth)p 747 1103 25 4 v 29 w(dialog.php)g Fd(\))-17 -b(\))o Fg(.)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 -1203 y(taire)f(ci-dessous.)722 1485 y Fb(/****************)o(**)o(***)o -(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o -(***)o(**)o(**)o(***)o(*)722 1585 y(**)43 b(Vous)f(pouvez)f(ajouter)g -(d'autres)f(mode)i(d'authentificati)o(on)37 b(ici)42 -b(!)i(**)722 1685 y(*****************)o(**)o(***)o(**)o(***)o(**)o(**)o -(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o -(/)515 1867 y Fg(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 1967 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 2066 y(suiv)-5 b(an)n(te)27 b(:)722 2209 y Fb(case)42 -b('')f(:)722 2309 y(/*)i -(Eventuellement)38 b(du)43 b(code)f(pr\023)-44 b(el\023)g(eminaire)38 -b(*/)722 2408 y($auth)p 947 2408 V 30 w(is)p 1065 2408 -V 30 w(ok=)o(;)722 -2508 y(if)43 b(\()g(!)g($auth)p 1252 2508 V 30 w(is)p -1370 2508 V 30 w(ok)g(\))722 2607 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 -2707 y($errmsg=;)722 2807 -y Fa(g)722 2906 y Fb(break;)515 3049 y Fg(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 -3148 y(de)k(le)g(coller)e(dans)i Fd(\()-17 b(\()p Fg(auth)p -1348 3148 25 4 v 29 w(dialog.inc.php)p Fd(\))g(\))29 -b Fg(p)r(our)h(p)r(ouv)n(oir)e(utiliser)i(un)g(nouv)n(eau)f(mo)r(de)515 -3248 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 3348 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 Ff(<)p Fg(nom)p 3049 -3348 V 29 w(auth)p Ff(>)g Fg(\022)-42 b(a)515 3447 y(l')n(\023)j(en)n -(um)n(\023)g(eration)20 b(du)j(c)n(hamp)f Fd(\()-17 b(\()p -Fg(metho)r(deAuth)p Fd(\))g(\))23 b Fg(de)g(la)f(table)h -Fd(\()-17 b(\()p Fg(P)n(ersonne)p Fd(\))g(\))n Fg(,)22 -b(et)h(d'autre)g(part)515 3547 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 -3647 y Fd(\()-17 b(\()o Fg(pro\014l.php)p Fd(\))g(\))p -Fg(.)1926 5255 y(4)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/appli_3_alpha_old/doc/README.txt b/appli_3_alpha_old/doc/README.txt deleted file mode 100644 index b82577d..0000000 --- a/appli_3_alpha_old/doc/README.txt +++ /dev/null @@ -1,232 +0,0 @@ - - -AWOR - Fichier Lisez-moi de l'administrateur - -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 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.2 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". - -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/README.lyx~ b/beta_old1/README.lyx~ new file mode 100644 index 0000000..a6acb17 --- /dev/null +++ b/beta_old1/README.lyx~ @@ -0,0 +1,36 @@ +#LyX 1.4.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 245 +\begin_document +\begin_header +\textclass article +\language english +\inputencoding auto +\fontscheme default +\graphics default +\paperfontsize default +\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 english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\end_header + +\begin_body + +\begin_layout Title + +\end_layout + +\end_body +\end_document diff --git a/beta_old1/TODO_list.txt~ b/beta_old1/TODO_list.txt~ new file mode 100644 index 0000000..44ec9ff --- /dev/null +++ b/beta_old1/TODO_list.txt~ @@ -0,0 +1,20 @@ +Faire des tests en affichant tous les messages, même E_NOTICE. +Intégrer ça dans la fonction qui gère le paramètre debug des pages. +error_reporting ( E_ALL ) +php_manual_fr/html/function.set-error-handler.html + +TODO : dans detail_reunion, vérifier que le id réunion nous concerne bien !!! + +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 ! + +Fermture des liens SQL ???? + + +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/admin.php b/beta_old1/app/admin.php new file mode 100644 index 0000000..fffdd13 --- /dev/null +++ b/beta_old1/app/admin.php @@ -0,0 +1,45 @@ +\n"; + +generate_html_divs_menu(); +?> +

+

+ > Accueil + > Administration +

+
+
+'; + 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) + //~ admin_display_listes(); // Permet de virer des liste + //~ admin_display_fichiers(); // Permet de virer des fichiers, doit purger physiquement sur le disque + //~ admin_display_reunions(); // Permet de virer des gens, doit purger les tables Creneau et Choisir, Repondre, Fichiers + //~ admin_display_personnes(); // 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 new file mode 100644 index 0000000..9d1d391 --- /dev/null +++ b/beta_old1/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_old1/app/css/default.css b/beta_old1/app/css/default.css new file mode 100644 index 0000000..b8ecc3d --- /dev/null +++ b/beta_old1/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_old1/app/css/default_img/README.txt b/beta_old1/app/css/default_img/README.txt new file mode 100644 index 0000000..fec6abf --- /dev/null +++ b/beta_old1/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_old1/app/css/default_img/README.txt~ b/beta_old1/app/css/default_img/README.txt~ new file mode 100644 index 0000000..e69de29 diff --git a/beta_old1/app/css/default_img/titre.png b/beta_old1/app/css/default_img/titre.png new file mode 100644 index 0000000..d8d9ce6 Binary files /dev/null and b/beta_old1/app/css/default_img/titre.png differ diff --git a/beta_old1/app/css/ice.css b/beta_old1/app/css/ice.css new file mode 100644 index 0000000..acc0714 --- /dev/null +++ b/beta_old1/app/css/ice.css @@ -0,0 +1,311 @@ +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) */ +} +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; +} + + +#footer +{ + display:inline; + position:absolute; + text-align:center; + left:0px; + width:100%; + background-color:#551A8B; + top:100%; + height:2em; + padding-top:-2em; + margin-top:-2em; + color:#FFF; + font-size:x-small; +} +#footer li.left +{ + align-text:left; +} diff --git a/beta_old1/app/css/ice_img/README.txt b/beta_old1/app/css/ice_img/README.txt new file mode 100644 index 0000000..b81d613 --- /dev/null +++ b/beta_old1/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_old1/app/css/ice_img/logo.png b/beta_old1/app/css/ice_img/logo.png new file mode 100644 index 0000000..a768d45 Binary files /dev/null and b/beta_old1/app/css/ice_img/logo.png differ diff --git a/beta_old1/app/css/ice_img/masque.png b/beta_old1/app/css/ice_img/masque.png new file mode 100644 index 0000000..45a6027 Binary files /dev/null and b/beta_old1/app/css/ice_img/masque.png differ diff --git a/beta_old1/app/css/ice_img/titleTable.png b/beta_old1/app/css/ice_img/titleTable.png new file mode 100644 index 0000000..e6c02d9 Binary files /dev/null and b/beta_old1/app/css/ice_img/titleTable.png differ diff --git a/beta_old1/app/css/ice_img/titre.png b/beta_old1/app/css/ice_img/titre.png new file mode 100644 index 0000000..d8d9ce6 Binary files /dev/null and b/beta_old1/app/css/ice_img/titre.png differ diff --git a/beta_old1/app/css/ice_moche.css b/beta_old1/app/css/ice_moche.css new file mode 100644 index 0000000..0004b1a --- /dev/null +++ b/beta_old1/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_old1/app/css/ice_moche_img/README.txt b/beta_old1/app/css/ice_moche_img/README.txt new file mode 100644 index 0000000..b81d613 --- /dev/null +++ b/beta_old1/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_old1/app/css/ice_moche_img/logo.png b/beta_old1/app/css/ice_moche_img/logo.png new file mode 100644 index 0000000..a768d45 Binary files /dev/null and b/beta_old1/app/css/ice_moche_img/logo.png differ diff --git a/beta_old1/app/css/ice_moche_img/masque.png b/beta_old1/app/css/ice_moche_img/masque.png new file mode 100644 index 0000000..45a6027 Binary files /dev/null and b/beta_old1/app/css/ice_moche_img/masque.png differ diff --git a/beta_old1/app/css/ice_moche_img/titleTable.png b/beta_old1/app/css/ice_moche_img/titleTable.png new file mode 100644 index 0000000..e6c02d9 Binary files /dev/null and b/beta_old1/app/css/ice_moche_img/titleTable.png differ diff --git a/beta_old1/app/css/ice_moche_img/titre.png b/beta_old1/app/css/ice_moche_img/titre.png new file mode 100644 index 0000000..d8d9ce6 Binary files /dev/null and b/beta_old1/app/css/ice_moche_img/titre.png differ diff --git a/beta_old1/app/css/ice_moche_nohelp.css b/beta_old1/app/css/ice_moche_nohelp.css new file mode 100644 index 0000000..9032594 --- /dev/null +++ b/beta_old1/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_old1/app/css/ice_nohelp.css b/beta_old1/app/css/ice_nohelp.css new file mode 100644 index 0000000..48a9fd8 --- /dev/null +++ b/beta_old1/app/css/ice_nohelp.css @@ -0,0 +1,311 @@ +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) */ +} +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: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; +} + +#footer +{ + display:block; + position:absolute; + text-align:center; + left:0px; + width:100%; + background-color:#551A8B; + top:100%; + height:2em; + padding-top:-2em; + margin-top:-2em; + color:#FFF; + font-size:x-small; +} \ No newline at end of file diff --git a/beta_old1/app/deco.php b/beta_old1/app/deco.php new file mode 100644 index 0000000..57a56bc --- /dev/null +++ b/beta_old1/app/deco.php @@ -0,0 +1,36 @@ + + +

Deconnexion

+
+ +
+ + + \ No newline at end of file diff --git a/beta_old1/app/details_reunion.php b/beta_old1/app/details_reunion.php new file mode 100644 index 0000000..dc82c72 --- /dev/null +++ b/beta_old1/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_old1/app/help/admin.php.hlp b/beta_old1/app/help/admin.php.hlp new file mode 100644 index 0000000..3d669ec --- /dev/null +++ b/beta_old1/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 : +
    +
  • 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 new file mode 100644 index 0000000..b83937b --- /dev/null +++ b/beta_old1/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_old1/app/help/details_reunion.php.hlp b/beta_old1/app/help/details_reunion.php.hlp new file mode 100644 index 0000000..5434937 --- /dev/null +++ b/beta_old1/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_old1/app/help/details_reunion_admin.php.hlp b/beta_old1/app/help/details_reunion_admin.php.hlp new file mode 100644 index 0000000..41047ab --- /dev/null +++ b/beta_old1/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_old1/app/help/groupe.hlp b/beta_old1/app/help/groupe.hlp new file mode 100644 index 0000000..0869bd5 --- /dev/null +++ b/beta_old1/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_old1/app/help/index.php.hlp b/beta_old1/app/help/index.php.hlp new file mode 100644 index 0000000..be1ef30 --- /dev/null +++ b/beta_old1/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_old1/app/help/listes.php.hlp b/beta_old1/app/help/listes.php.hlp new file mode 100644 index 0000000..c619e70 --- /dev/null +++ b/beta_old1/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_old1/app/help/modele_page.php.hlp b/beta_old1/app/help/modele_page.php.hlp new file mode 100644 index 0000000..75a26d5 --- /dev/null +++ b/beta_old1/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_old1/app/help/organiser.php.hlp b/beta_old1/app/help/organiser.php.hlp new file mode 100644 index 0000000..b24adaf --- /dev/null +++ b/beta_old1/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_old1/app/help/profil.php.hlp b/beta_old1/app/help/profil.php.hlp new file mode 100644 index 0000000..9328ff5 --- /dev/null +++ b/beta_old1/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_old1/app/help/sendmail.php.hlp b/beta_old1/app/help/sendmail.php.hlp new file mode 100644 index 0000000..4a31a5b --- /dev/null +++ b/beta_old1/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_old1/app/ical.php b/beta_old1/app/ical.php new file mode 100644 index 0000000..f2aeb26 --- /dev/null +++ b/beta_old1/app/ical.php @@ -0,0 +1,36 @@ +\n"; +generate_html_div_errmsg($errmsg); +?> + + + diff --git a/beta_old1/app/images/addP.gif b/beta_old1/app/images/addP.gif new file mode 100644 index 0000000..aa77bef Binary files /dev/null and b/beta_old1/app/images/addP.gif differ diff --git a/beta_old1/app/images/button_del.png b/beta_old1/app/images/button_del.png new file mode 100644 index 0000000..899b785 Binary files /dev/null and b/beta_old1/app/images/button_del.png differ diff --git a/beta_old1/app/images/button_ok.png b/beta_old1/app/images/button_ok.png new file mode 100644 index 0000000..229550e Binary files /dev/null and b/beta_old1/app/images/button_ok.png differ diff --git a/beta_old1/app/images/del.gif b/beta_old1/app/images/del.gif new file mode 100644 index 0000000..cc89b0b Binary files /dev/null and b/beta_old1/app/images/del.gif differ diff --git a/beta_old1/app/images/details.png b/beta_old1/app/images/details.png new file mode 100644 index 0000000..11982cc Binary files /dev/null and b/beta_old1/app/images/details.png differ diff --git a/beta_old1/app/images/editCreneau2.gif b/beta_old1/app/images/editCreneau2.gif new file mode 100644 index 0000000..ba90a82 Binary files /dev/null and b/beta_old1/app/images/editCreneau2.gif differ diff --git a/beta_old1/app/images/logo.png b/beta_old1/app/images/logo.png new file mode 100644 index 0000000..a768d45 Binary files /dev/null and b/beta_old1/app/images/logo.png differ diff --git a/beta_old1/app/images/masque.png b/beta_old1/app/images/masque.png new file mode 100644 index 0000000..45a6027 Binary files /dev/null and b/beta_old1/app/images/masque.png differ diff --git a/beta_old1/app/images/ok.gif b/beta_old1/app/images/ok.gif new file mode 100644 index 0000000..1935a84 Binary files /dev/null and b/beta_old1/app/images/ok.gif differ diff --git a/beta_old1/app/images/question.gif b/beta_old1/app/images/question.gif new file mode 100644 index 0000000..d57516b Binary files /dev/null and b/beta_old1/app/images/question.gif differ diff --git a/beta_old1/app/images/supprimer.png b/beta_old1/app/images/supprimer.png new file mode 100644 index 0000000..a87033a Binary files /dev/null and b/beta_old1/app/images/supprimer.png differ diff --git a/beta_old1/app/images/vcss.gif b/beta_old1/app/images/vcss.gif new file mode 100644 index 0000000..020c75a Binary files /dev/null and b/beta_old1/app/images/vcss.gif differ diff --git a/beta_old1/app/images/vxhtml.gif b/beta_old1/app/images/vxhtml.gif new file mode 100644 index 0000000..739585d Binary files /dev/null and b/beta_old1/app/images/vxhtml.gif differ diff --git a/beta_old1/app/images/wai.gif b/beta_old1/app/images/wai.gif new file mode 100644 index 0000000..b82d6e7 Binary files /dev/null and b/beta_old1/app/images/wai.gif differ diff --git a/beta_old1/app/include/connect.inc.php b/beta_old1/app/include/connect.inc.php new file mode 100644 index 0000000..b985b10 --- /dev/null +++ b/beta_old1/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_old1/app/include/ical.inc.php b/beta_old1/app/include/ical.inc.php new file mode 100644 index 0000000..e79570b --- /dev/null +++ b/beta_old1/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 Appartenir A,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 new file mode 100644 index 0000000..3c87753 --- /dev/null +++ b/beta_old1/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 Appartenir A, 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 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 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 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 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 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 Repondre R,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 new file mode 100644 index 0000000..49f0322 --- /dev/null +++ b/beta_old1/app/include/ju.inc.php @@ -0,0 +1,230 @@ +\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 : return "Erreur : Le fichier a une taille trop importante."; break; + 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) +{ + $requete = "SELECT * FROM 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 Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau; + echo $requete; + if($resultat = mysql_query($requete)) + { + while($ligne = mysql_fetch_array($resultat)) + { + supprimerCreneau($ligne["idC"]); + } + } + } +} + +function traiter_formulaire_maj_profil() +{ + $requete = "UPDATE 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 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 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 Creneau WHERE idC='".$idC."'")) + { + if(mysql_query("DELETE FROM 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 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 new file mode 100644 index 0000000..724c46c --- /dev/null +++ b/beta_old1/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_old1/app/include/ludo/auth.inc.php b/beta_old1/app/include/ludo/auth.inc.php new file mode 100644 index 0000000..18b339d --- /dev/null +++ b/beta_old1/app/include/ludo/auth.inc.php @@ -0,0 +1,78 @@ + \ 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 new file mode 100644 index 0000000..51d6d73 --- /dev/null +++ b/beta_old1/app/include/ludo/config.inc.php @@ -0,0 +1,73 @@ + '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' + ) + ) +); +?> diff --git a/beta_old1/app/include/ludo/div_create_or_modif.php b/beta_old1/app/include/ludo/div_create_or_modif.php new file mode 100644 index 0000000..5849180 --- /dev/null +++ b/beta_old1/app/include/ludo/div_create_or_modif.php @@ -0,0 +1,79 @@ + +
+ +' +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
Objet : + > +
Lieu : + > +
Ordre du jour : + +
Remarques : + +
Etat : + Annulée + +
+ + Annuler"; + ?> +
+
\ 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 new file mode 100644 index 0000000..7411000 --- /dev/null +++ b/beta_old1/app/include/ludo/fonctions.inc.php @@ -0,0 +1,515 @@ +\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 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 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 Personne p, Appartenir a, 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 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 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 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 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'; + + $query="UPDATE Reunion SET objetR='$objetR', lieuR='$lieuR', ordreJourR='$ordreJourR', remarquesR='$remarquesR', estAnnulee='$estAnnulee' 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 Reunion r, 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 :
+ diff --git a/beta_old1/app/include/ludo/html_elements.inc.php b/beta_old1/app/include/ludo/html_elements.inc.php new file mode 100644 index 0000000..41fd812 --- /dev/null +++ b/beta_old1/app/include/ludo/html_elements.inc.php @@ -0,0 +1,183 @@ +'."\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

Aide

\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['awor']['custom_css'] ) ) { $css_selected=$_COOKIE['awor']['custom_css']; }else{$css_selected='';}; + echo '
' . "\n"; + 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 new file mode 100644 index 0000000..cf4b6d7 --- /dev/null +++ b/beta_old1/app/include/ludo/mail_textarea.php @@ -0,0 +1,44 @@ + + + + diff --git a/beta_old1/app/include/ludo/majDispo.php b/beta_old1/app/include/ludo/majDispo.php new file mode 100644 index 0000000..ab7c200 --- /dev/null +++ b/beta_old1/app/include/ludo/majDispo.php @@ -0,0 +1,41 @@ + \ 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 new file mode 100644 index 0000000..6baf40d --- /dev/null +++ b/beta_old1/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_old1/app/include/ludo/session_verify.inc.php b/beta_old1/app/include/ludo/session_verify.inc.php new file mode 100644 index 0000000..f1cea8b --- /dev/null +++ b/beta_old1/app/include/ludo/session_verify.inc.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/beta_old1/app/index.php b/beta_old1/app/index.php new file mode 100644 index 0000000..eefb768 --- /dev/null +++ b/beta_old1/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 Liste L,Reunion R,Appartenir A,Creneau C,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 Liste L,Reunion R,Appartenir A,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/install/RAZbase.php b/beta_old1/app/install/RAZbase.php new file mode 100644 index 0000000..9b9fa25 --- /dev/null +++ b/beta_old1/app/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_old1/app/install/base.sql b/beta_old1/app/install/base.sql new file mode 100644 index 0000000..6d1ba97 --- /dev/null +++ b/beta_old1/app/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_old1/app/install/jeu_essai.sql b/beta_old1/app/install/jeu_essai.sql new file mode 100644 index 0000000..889d4f6 --- /dev/null +++ b/beta_old1/app/install/jeu_essai.sql @@ -0,0 +1,2 @@ +-- phpMyAdmin SQL Dump +-- TODO !! diff --git a/beta_old1/app/listes.php b/beta_old1/app/listes.php new file mode 100644 index 0000000..8a6e40d --- /dev/null +++ b/beta_old1/app/listes.php @@ -0,0 +1,48 @@ +\n"; + +generate_html_divs_menu(); +?> +
+

+ > Accueil + > Listes +

+
+ + + + + + +
+
+ + + \ No newline at end of file diff --git a/beta_old1/app/modele_page.php b/beta_old1/app/modele_page.php new file mode 100644 index 0000000..e7d555a --- /dev/null +++ b/beta_old1/app/modele_page.php @@ -0,0 +1,56 @@ +\n"; +generate_html_divs_menu(); +generate_html_div_help(); +?> +
+

Page modèle

+

Modele de formulaire

+ ' . "\n"; ?> +
+
+ premier champ : + +
+
+ deuxieme champ : + +
+
+ + +
+
+
+ +' . "\n"; } ?> +
+ +

Appel de la fonction qui génère le tableau personne / créneaux

+ +

Quelques éléments à mettre dans toutes les pages ou au moins certaines

+ +

Etat des tableaux globaux

+
+
+	
+
+ + + diff --git a/beta_old1/app/organiser.php b/beta_old1/app/organiser.php new file mode 100644 index 0000000..2afcbea --- /dev/null +++ b/beta_old1/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_old1/app/popcommentaire.php b/beta_old1/app/popcommentaire.php new file mode 100644 index 0000000..b585067 --- /dev/null +++ b/beta_old1/app/popcommentaire.php @@ -0,0 +1,23 @@ + +

Editer votre commentaire

+ \ No newline at end of file diff --git a/beta_old1/app/popcreneau.php b/beta_old1/app/popcreneau.php new file mode 100644 index 0000000..484594b --- /dev/null +++ b/beta_old1/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_old1/app/popdeletelist.php b/beta_old1/app/popdeletelist.php new file mode 100644 index 0000000..4ccadc9 --- /dev/null +++ b/beta_old1/app/popdeletelist.php @@ -0,0 +1,20 @@ + +

Désirer vous supprimer cette liste ?

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

+ diff --git a/beta_old1/app/poppersonneliste.php b/beta_old1/app/poppersonneliste.php new file mode 100644 index 0000000..6f684a7 --- /dev/null +++ b/beta_old1/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_old1/app/profil.php b/beta_old1/app/profil.php new file mode 100644 index 0000000..6277d50 --- /dev/null +++ b/beta_old1/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 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 new file mode 100644 index 0000000..2c14563 --- /dev/null +++ b/beta_old1/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, urldecode($_POST['msgObject']), wordwrap(urldecode($_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 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 new file mode 100644 index 0000000..74e0d3d --- /dev/null +++ b/beta_old1/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_old1/app/templates/mail_cree.php b/beta_old1/app/templates/mail_cree.php new file mode 100644 index 0000000..cd18c89 --- /dev/null +++ b/beta_old1/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_old1/app/templates/mail_fixee.php b/beta_old1/app/templates/mail_fixee.php new file mode 100644 index 0000000..6259f9a --- /dev/null +++ b/beta_old1/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_old1/app/templates/mail_modif.php b/beta_old1/app/templates/mail_modif.php new file mode 100644 index 0000000..3cbb7b1 --- /dev/null +++ b/beta_old1/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_old1/app/test.php b/beta_old1/app/test.php new file mode 100644 index 0000000..ea189ae --- /dev/null +++ b/beta_old1/app/test.php @@ -0,0 +1,8 @@ + + + + + diff --git a/beta_old1/app/testGet.php b/beta_old1/app/testGet.php new file mode 100644 index 0000000..03dc369 --- /dev/null +++ b/beta_old1/app/testGet.php @@ -0,0 +1,18 @@ + + + +TestGEt + + + + + + +
+
+ + diff --git a/beta_old1/doc/README b/beta_old1/doc/README new file mode 100644 index 0000000..e2d1179 --- /dev/null +++ b/beta_old1/doc/README @@ -0,0 +1,13 @@ +AWOR - Fichier Lisez-moi destiné à l'installateur. + +I- Compatibilité +Cette application peut-être utilisée sur un serveur fonctionnant avec Apache, MySQL(>=4) et PHP (>=4). +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, +Les scripts php ne modifient pas structurellement la base de donéne 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 + +Les scripts php n'accèdent pas en écriture au système de fichier, sauf pour l'upload de fichiers. +TODO : voir pr la config des droits. + +II-Installation \ No newline at end of file diff --git a/beta_old1/doc/README.css b/beta_old1/doc/README.css new file mode 100644 index 0000000..2dfba7c --- /dev/null +++ b/beta_old1/doc/README.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_old1/doc/README.html b/beta_old1/doc/README.html new file mode 100644 index 0000000..476a176 --- /dev/null +++ b/beta_old1/doc/README.html @@ -0,0 +1,422 @@ + + +AWOR - Fichier Lisez-moi de l’administrateur + + + + + + + + +
+ + + +

AWOR - Fichier Lisez-moi de l’administrateur

+

+
11 mars 2007
+
+

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.2. + +

+

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 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.2 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 ﹥﹥. +

+

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.1. +

+

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. +

+

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

** Vous pouvez 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/README.lyx b/beta_old1/doc/README.lyx new file mode 100644 index 0000000..e1efc97 --- /dev/null +++ b/beta_old1/doc/README.lyx @@ -0,0 +1,521 @@ +#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 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 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 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/README.lyx~ b/beta_old1/doc/README.lyx~ new file mode 100644 index 0000000..16db7c9 --- /dev/null +++ b/beta_old1/doc/README.lyx~ @@ -0,0 +1,521 @@ +#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 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 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 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 +** Vous pouvez 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/README.pdf b/beta_old1/doc/README.pdf new file mode 100644 index 0000000..bb4e4db Binary files /dev/null and b/beta_old1/doc/README.pdf differ diff --git a/beta_old1/doc/README.ps b/beta_old1/doc/README.ps new file mode 100644 index 0000000..f8ed24a --- /dev/null +++ b/beta_old1/doc/README.ps @@ -0,0 +1,2306 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software +%%Title: README.dvi +%%Pages: 4 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: CMR17 CMR12 CMBX12 CMR10 CMMI10 CMBX10 LASY10 CMTT10 +%%+ CMSY10 +%%DocumentPaperSizes: Letter +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -t letter -o README.ps README.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2007.03.11:1556 +%%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 69 /E put +dup 79 /O 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 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 +dup 122 /z 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 +4C1C6C4D16A91AFAB0B84A485CDFC5EDEB03E8E93218694C542734139DE38E11 +766E84C54DE44775FE2122F4869B5EBDD7AB21E471DE8A24D986D02EC56B863E +CCEB528C545C0D9D3B138CBCEDB7CEC5A1D85F3A8EB65B7F96462F17DE646358 +3865CB5603A80ED1CB1FEF2BFDBBB5CB94E15B0903EC58CC9C8587B105E419E0 +486523D0CAEADCDAB2C4BC47AE55D14489BFE1AA36A5FCFE988D1D4398BD6303 +CADBF9FE64F5FEF8C0B4411289198ADCBCFDE42821865AA21049BA8E846CB7C5 +A60AE13DECEC0897A2F74E130F198AAA04993D5415463CAFEDCA47C6FC753A76 +B972140A3AF187A4BA658EEB077751EB20FE37BD952E7A3661F3F45E6FB25671 +554639A94C3F9F3B4E5C76785373A7CFEED3B6A3F44D98E9FFEF4BD8FA9B05CC +4ED72D6388EC669D1AB81195022FDFF1F562294FE6AAB80EEF711396337D9DFD +B24A97E88BC4B1F1D6E143E3820DE208E7DC16D757D36C7F7EE745DCB7E75D9B +40FF7BC1A92347253C702CB3B177AD3FC273844A6A53D69934C824EF382DAD7F +7627A918FE6E30505FE0C6641BB383D7C4D48DD560209E72BEA8502E0FA19BEF +97B7989CB133B933BAF41CA678D19D8E354036604FAC1DA79420D4B4E656D06B +7860AD8A60A11C29E85A3BED39C4D0C7FF116BD2186EFE54924FA8DF382CE00A +336D74EED682D5C471B2D4F70D371C35CDE1CAACB731A332C2BB23CFADE102BF +1EA484E64C7B2D59924E1D7E64A3A4BE9588B64300AAC5BBCB69E6ECB5E6ECC5 +CBD47621953AF08F2203D3069CA085B4EA8EF8223522F87289224C1AAE1176B9 +A8BEC8C453C2DCF385F88B0CA690DCCA7A8DA7DC92D16685E43478FC6CABCDBC +6607DFC80EDDC91D4D7E13606C80C4FF49C34970E6483993C5D5F60465CF333A +E1EDB4519FD099232BF13D0EBE839CE810AB85E580DBC0C2C19185790776EDEA +942DE2CCC1993702C871E9E0231DD1E1386BE725947AD15CBB335C1E30E1AEC1 +02C09DFEA295D50C624A37A81F0C6002FA1D6D817514AB764C8835D816E28268 +49A8DDA1BE92836CB30B06DD60D358EF02DC12B8BACF1186DBF42C061F8BEBDC +D4C08EE123C2A94B82FBF9896053B89A3B1AFF53F7AD2DBB8ADF42DCB51D9B6D +5A5532BCFD5C6BCAF1CE50DD65DFDED6357D7E6B1EF7773EF3C53F56ED34AD2C +0C2599B516127449786FDD74712FA8BD94D12295D434494127D0E26F5C352591 +796035484D0A6DA5211A83FD00D4B8735104482149878A8F1984682BE4B4E84F +6189A1BF48F41E1D36F6CF56088EE1EF71AE62FE7877487DC24D0E0E6A412FB0 +4E231137873E0908727FCC0FDE2951A44779A412E20D6AE62A6A3FF71587020B +786366886B6A9C4D266F7A471FD8CC263DCC36E8731BE1990CD9003F2A0FB459 +5CEC683722808363BAD930D2A2736AF1D1DC478F817921D596F2F8B77A845E1B +C70B5E6ED150640E06628562410088D836D817FCD012359F5B54760ED0CA6ACC +57F8D5FC28A13ECD31250859DC79884507AE7106A6ACB17694586ABDF5F2E881 +3DF040AA8FE65376FAADDD72B66B87E5DC173979B2029377D82BB3364EE53C0F +B851F8609DA4F08C51E99AD9D6FEC018883D5472100AA60D8FAA3BD874394080 +439A1170B2F56997ED742B115F2A00A084E13BCC437F33B383C3A957D0E94836 +80DA0E817A579FB2615D3A35D6C615C8FACD4E6A3C3F4A4B86877FF01F596B23 +97286C45A58744EA0920D772C7591966EFAF3150BDA27BDFED893FFBBE1E25BF +4F24B7CAF576CA719DC1BEA83276C42591D237D88EF92B0FB1E245308DCFBE65 +E525DC42018E19DE6B4099121D2D9F8A8054D277EE93E10F001BE74A5E665AF9 +E6D920A9EC6DFA1C24DCD95FE5883285EEAA44199AA9C7A61E21BB547E6A15C2 +6065CAB4132B201031531AAC77553B37D28E4F2FFA9AFD0F79693541EBAE608D +72E4189BC22C9ABBA1EAF9F7F74BFD4557A981C9A8661309F1DA5E27C7FA13F1 +7F612A93195933A7AA7209ABA79B2B0E20253385EB95800F3629CAD1DD9D45C3 +2B1A990975F73FBE899C3E9965C40063C03DB3680886B97FB4A152B4BF81F17A +E74277DC8CE3EF67A238EE399E7DFAB8A86AA4C9F087CDA4D55DF9F693043AD1 +68EEDE07DC51C7EFF41E5618F8CD6F0A8327394A8C1FC86D38BCEDB5EF130D6F +203E94581CBEFF9A91D0D909E8BA443E17DD8FD09169C82CE111D4BE4C5D8C11 +BEC3221D877C7EBA283815627EDFF83695AFAAB90762E6DEC818D5305BED69C2 +0B8998E7BFFE3B21B4A50243FEB9B950A7F6435BD668764A2DDCF069ED7D7571 +A2E1A37EAA99ACC35B8157E057020BE9F1496337B20BBF77A9B0ABC65FF66C61 +EE059251456730B5DABA6F3B2E5ECC341D41CD38B38C76E246F50A691D5143F9 +2B55EEE2A3DF6E7E34F6378EF9F55F299954E22488168C2F125B0BDE9AB0C9AB +E31CBB6732ED15844D8451E78BD81C3C8DE629DB6C7DD795AB1E48A36439EE58 +FA9793BC9802946BA90654B076E81F1C7ADB0F3DF78D9D4EACCA41F46AB1B655 +C65B85DEE426B8A97A93A2DE2D49C44705C14C8A4381F2A87055F6F31EA5074D +0113DAA650A070F765B13180059FFE8157B48C705FF4E03B0371153A13CC95A1 +0ED751849EAFA6101988FAA7E86C488E840B0C939F7DB6656A79E8C31ED95239 +5D989E9DFF213A75A7D9162CC52868D54E1FDFACA503F564145150A00AC1DAF7 +C59C9706130DB9BD59EF3B4519F4A84065B043BEA579FE4AF5CA047EDA3BEBF4 +D61962D24182DA19F3D6DDBFC27252E31D3378CC7267899A82DACC41CA69FF18 +AF631AC3E8BB7404D85D9A703768081C6F148CB1459AFBA0A92A69B0D5C4A09E +9321F8BD5CD235F1B2F0C98FC9EBDF6474AFB312070DC476011F4C8468E5D2FD +8AF8FC915D01DA12AB7EC42FF979AEFEAA0B4610F64006E6FB6CC8F822FE165C +5CD933EAC43457E2C7328FA4597C3BBB42398481DC182E01C84EA8738E192502 +AB36501A70D98F1876844D75EBAB5EA5EB2195EEDA3E10C5C8564E6F4733FC74 +C93047F5734DACA571AD76AFDE5512976EEDE1C895473FE418A0246407F3CFF2 +9EE0A86D106C8218AFA23D72945556702C9E9F107AE01148E80B9587AAC77065 +94ECFF8988BADF5814322DF6511133899687B4C4AE6ABC60F33C7CBA24796193 +EA996A190CBA728CF391EFC4789D502364484812DE5E88DF03DAEA997D6E16AD +BEE4ADE655A7AA393ECCDCC8B7A1AA282F3128FA5AC613513AD0E648F5400A4F +045DA5B9E469D0CE693259268E27C5505FD7EDC3CA266C010C04A240FB91C6F3 +EFA4D0AE5C2517976A2BBF9D0AA3A0D4590E582AD55E9768CA5C1DA4EF832E49 +31DC69440446B343B53EA25CA8240A630DE279AFD95499F089F0BBAD893D0DEC +671807705CAB3EB26E8F202AC371A77E674AA606F6CC4B0A5D6BA25B93CB06C6 +A483E16B1F4FDD6FCB2BDFEB82C360F662BBFEB9F155830026FCB3E5CE1ABA98 +6037E5B6A62DEEDCD4FA42876858FF04589D92DDC785552CC8259F92D9B44A38 +24AE40CDE5A8E037292E6788535E104B4D6A4FB7BD61448CBB24B0CEEBC68A41 +BB1C0846C4D5E80F40FD941F2CC458D1304597E1296C26B2A056911D71AED927 +7970193557FBC86B6C473283B1A3B9309DFF8CC9735763A592220DDC332FDF93 +EDF55510B1BA3DBB9DFE462EB66607AC663A23471BC34C9BB446BF63C8A2FD14 +1F745C75033E4B598E8767316D91F66ADC9EBB00D410D3821E829606BD447E79 +D9D4FC6ABFB72A159BBB9C51671685E92F2ED99041318F1F88C810DB692A589E +7395DF7E58739B67F45601EA052BED85A675D804FCAB33FC5444BC6587F8A456 +9A9B98EE91D41AC28C9178F4799E005B96C7BD483B16B0F7C21D0D38CF8DEF2A +BEB5878FE24D1A460ED3CFA752A3775089F7A3144C13769CE6C5D9802ED4E8C7 +79E8694DCADADDCE259521E69C8CE3C708A7EDF968AEEB8D603F724251E0486A +FE49852A38E46C506FBF8F484E0D3E33F5561E91967C9CA2B9243866A08275C9 +8382EAACCE5F8EA866768E091DFAEC42F3A4C7307D31CE34846A5ADCFE2C7358 +43BBB348165CFB17F821BF0768B2491E0C26FD78899BFC2708078C756920A128 +36E9602AB24BCB3BA61C3A0020CCAE3FF84943E86E85C89B0F8C24356ACA20FB +A936D2FCB2D922F98B554098C16622A88E02C8933939110830421F3D16D0AB55 +5AD2DB5B22E4C9120523EE24E3DD782B2B1832EB7E08D9161B96681EB6E0CABE +845421D578B04540B756B69011EC4BB358437D62FE7AE7038AF013655D016336 +E54F6052C923D0B3CFB58C5664A6C770E2611A4ACF3BB9682F565B9FEE5918E0 +02C14A79242CCB46E25C831FF080760B3F2485671F60A78F1500B2BA0685027A +429DCC57D9E39AFE76F60C0E3C8219F2BC802B003C2C1BD0E1BF9FE9DA811E00 +4EA8ED75D1D67C17AC9DC133559E91D5302AA6B843A7C68529CF25828FF4ED5D +50E86A01184487BA2F0365E7CC8204EF2ED735676E08282C49F0665786080AD8 +E837F9109F68D43057EA931BC75C1FDBEB26F0659535E405173118D6E81968DE +56B6C6A5AFC4DE6A7198A23DA05EC21C8DAD0CFABC401FD31091472FB5D3F241 +6F4E9322B01C04EA8DD3DE99B19B5511509B3F1B027A677DB6DD02623B0614C7 +8D7048ED354E6DF42A544FE1098FA7205CC846CDF624AF43236D522CE9765C7E +B471A5EA2C588768729E438AD0ECB16F1D4658187C97A15BE69631E2BBE68B8D +05B043ECBE4A1D256F49E196B0081F7BB4650B9D8CCB6ABB5B76C30249B61FB8 +66D6E7F13ED40A1EA95CC8EFE3E73CDA353B71E515A1F6831A97A16F158774CB +76E6B6C3BFA0D58EE768A9C3E8CEA3629B2895EE546C3D599EED9C7181BB58C8 +CF0560C4B873320526C719DC5E5CB0DA7D34B08D45A0B46689095361D0FDAD53 +503CD09FD15ADF51DEB30AAFD4E9D0E2D3E3A94B5C277215BEA08823041583E4 +6356BB4E9D1C03C1FC58C0EADBAC332531A72E07F2C015F376CFF8C36CC95788 +3122896B1334BEF9A6F535680D97565FC448E5566ACA5D48DAC4A11C7A28D548 +4C68BD482B8D208186D74198799CC6D640507B4B9112EA0767022C36707AB1A4 +4B9B2946E0924DDFB6FBF8A8B7F8EF5FF624C6A3297B1D3210D9F32BD28D9977 +FC83806674FF54EEF1705D03109DAF65ED5A3FF6ACFAB86CF8BABC61F051C383 +BF7ABCE2816A4A1A8C73C8D057F8A373376DAD761DED01FD82562779B5203D9F +EFCF73F5D66283B56A19F0CAAFB21ACF480AB8257B5910075DCAADF5580992D8 +AE1F3A170947FB00323A0A4D607C2048D0F083D9AA8BB86A695E637DCC9D8DAD +4E6A243ED811223304269DE54504D2D1B487155140C346CA7AB7C52E16AFE968 +EE576CAD9BB2C55DAD0A50DED6A6B654D5F4770DEDBAA52FBAE3839407A03F36 +E0526861B1AA35A1E88739545E6A2C6BC68DDB90C6918057FDF84D0E1BDBEBE1 +33AB2816CAEC9DE4042CED582E3650D639D1AA11B1FDC62B636E8E605974F5D5 +EA7E83E0BDF5DF6A44FE3BBB3E353FB3278A180A6364D5393F5F539338A3A138 +EE7967068BA1148D9F8B664E7B698913863817E72295990D6EC1090209FE7A3E +5AB84C05629408226D4D5DC776CCD5D004C37B5FFDBB4535E4108292C7561746 +1D4053122E22F7CF038CFD5D4159B6B1903A50BBB95FAD50BF28CBC08D394289 +2EF2FD65A6237788C168768978B80C3A171EFD28242A90600B0B3CD661424D7B +7A8013C2E758F437D5E216BAA8448B9BE20E495D295B7DE39BCC0A2D1BF14A8E +319DC4B2A38E35AF69B82EB0CF189FAB2D391DB39253E5B8412A3AAC20BCD113 +373C9C550B02A642733AD122EF587543E1001A81BD311A3EF0E7225FFBFED342 +B96626DF3A4C08A8D9858EA4A18EC20805FA9927594E81ECC652324674F1B2E8 +FAD79F2108408B111734C6A7414B9EC3A2450146D14B5582D1C67CC7CE7FA085 +AA8E704C1D95EDD45753E9A9E26A5DA8315EA3C453318D242D6EC94721F709F0 +6B8B416731FDEFA6B856CFAD54942440C155F66493F4E2E0B8CFE7212B962BF8 +A2C2FF32082BA82701690DC2F2D1366C55A781455AEE353301458CFB90A5ECB5 +6BAD8F4CBCF39482D7BD07AC030C857D907B0C2676C8EFE41231CC5D6E57E03F +77F71DC796BBBED55F0791B40FB81156067101D0102DCEF74C07EA6BDDACD90B +C0D8289ABD58CCB1E86CD0FAD6C640E403881B6A5D6CB6678543ADF8BB5D1836 +5C52348CB645C36ACD07961762809B30582B497C56B0F250D3B49B5D7166ACAF +7B01742408F8BA160DD9AE78B898EF24FBE6E124327875A853F23506B76E5BAF +4F10BF4547C8D080CC78317B0599244EDD5654F62F1AC9C7228DE4326B1D2096 +375545F4849975221F7C7E397E826DBB579C385A2E21C372846A1F888280B060 +6F075B355A71D885CAC87EC87A5B0C8CA07C385AA52BBFB9690FC90695411F7E +61665EC585010BEBA23C4F228BA46E6A063C4E6731CCBE862A7A5676DFA84FBD +D7D8BE627550BD2D3BFCED3A33A02237B023D3BB06213D5243DAD0EFD8817EBC +583F78E55A9EB6988B38C2C4A907CBB943DFF097195E25728A90B14A90951D0B +FEF286550CA025EBB08B7B4873B33A2BDE68BAD37172088440259DDCDF2F4F08 +D5E4C89BDF9DF4A1D526761A0E6BE96B9F047FFDAA6F613EDC6A71015E290152 +CBFF6D04A60E5D2C67124E9277C81491857F4E8A91A8625B2D7F65389884203A +A00807F0CB153218691E5242A2F1D426C71963CAAE3A8B66A98242CBC87A626B +4E03360FF12372BEE3A18AF99BBDC5F9E56B318F7A4755465127D2BF12FAF1DF +2524610CE3B661C7FD02F3F6F1D20A774663AA4202BB7557B3A588A015B8AAED +18D7F333036044633515FFB6C170774284C41FBB81F92378E28278BFA6A5D462 +54B0184DA71562BF503200AEE12307C094E7ABE4B2B65C326D19AC9D3236D1D8 +575AF37A0895405AC8B69924479A2A9CA875A2A1F2CD60CAFF96801C6920510D +E383DDE8B8978F439162E2831059FD24787A6FBD67643F518CBC03A4A19C587F +892A9D779AE3EB49C5F49132082496FE5C51EE023058831DB014F05505A06BDA +9FADFEF4728C77FB0EB4C53B092B814365B4EEFF64945717CA8F04C951570FDF +9FFE78705B7D04F95F8B809F47542C5C146102EC25A4F3FE9BEDCC2E6B0D9F0B +280922957C6FA08C5466426B21A463AC0A58ECF1FDCB614744958F587922D7C0 +FF6C9D064F0249F787B557C839209A1821FFC3C0148DC43A4007B3641CE7A81E +BD84A3E7F1D833CC34ACAB53947438E6227668009CCECC37851C87CF92CFEF6D +10538C2DA8332CCEB564A72DE4AC9556C96522BA72CA30E8F262D1FC3986BDF8 +A2271628EA21E84D65A5665481FD4794B87A33993C40CBFA59173640E89C7829 +99AEF9F0B5CEFE69848629192A5C4BFB2FCB328E575C4C523C649A4674F27EE8 +61AE251203A8A04A644F397CAF9D86E6D66C42847876FCDFF1136C5C9C032D13 +9F89B117E43970291073BCC5F53881A0F6584566D76FCEA6A3B11B29D62F2052 +E13F81005D2AFF12F6E4E51A5ADCFFE0ABA23EE2B5C9146EDE5AD5C1A12291BD +273DCD88A6A1357BC40724B2D0EC5F09430999CE73CA0791142543079AD4A93F +002F33012BBACAB4012E2A09C4851CD93613D02B3AE740153F8561170E48174C +7B0B2467A62D0EDB13FD25D3DC9982551898B6165C50C7E305B38A7E7317636A +DCBB266B44223632EBB9F3641A1CEAC90AEEC7D25B1689261C412D57063C4C0A +C0085C852F22D60F86B39451B273E6C061389D23B4AE9E33C42B8B054EEA3D43 +409E6B879357996DF95438819CF168ADECA129D4CE1C804865F8E01D7B96CB50 +A48F4831AFB1B732CF04965F2DC5C04C531BB91B94DD37CD95A7D6953E102860 +9C4CC88BB318F9F3C42DFBB44424079639ED3FBB49CEAAE3080E0ADE6D6EDB52 +D8FAB18AD9F9B0303974584AE4DA03B105A5014AA49A54C46C0275B4639AE3D2 +0DF5BD3E1887F53F9452CB57A88800914FEB86C796E45B39CFC734B753C9DBBC +5CE1FE38012784D2A12BB1427F9AC85954F76BA82D95C6994AE9916F4E27CCE0 +8014E12CD6429E5DD482679048EFFD5E4941BE451461C186FE241E7178F77977 +607237A951B62AB67D310CFC6996F6FF77D7599DC0148847B56CABAA543E452E +C7A2C7B567C3E9CB86D6E899E9648D9EE3DDDC5C464EF17D286A4BC0C2FC75DF + +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 73 /I put +dup 77 /M put +dup 78 /N put +dup 80 /P put +dup 83 /S 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 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 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 +B4C38C1F2D24B8FDE686832FE96204552C820E45B6BAF0C3308742AE2915A09B +A12788A5A1902F494BFA6D3D8E7D3F247857FBDC4540F34844BC65D4B95BA35A +4F0AFA9C4CE96EE03CCFCF9CA4EBC6C562E1F3E255BC13F242304D2019088305 +B61DBF492E6D6136384D2A6E5DB9977CA255A5144EEDCC88DB8C4F8A962CEBCB +8820C4B2BA034431339586A00D582DE8E623C227E39AA7455861809AFB5B6725 +214F6A31E583060D29126B4BEB7F3E9DB88F3B7568BCC18761BA1995D31088E7 +6B633C76E872625E262C1B5EC1B86824596D3E7B73D46524F2C64F624B37672F +B98FE7BF6BA0771A5C45AE6C8B95156132401A6005F05C5AF331FB7FB21649BA +77D2A2B3D0AB4205C9BB313FD4F95323B347952D94CCF1455BB06C97E45C7A14 +4424312D5A29CFDBF5640BF975F750FD315CAFC2518F8D1B96D06085AEAE3AA5 +A0836EB2981DC185509E92259B803EAE354CEC33CF5EE258D0F22DEA8CFDF2A4 +41435BEC5495D7E9295DCEE136F8A69518F66E7E1220047737F4ECFE88A89D43 +1FD914A871426CE539F372F47A12DAA25B5C8ACB0B1CA9E3E47DB88EEA3AB3F9 +533244271F81F4E45908DE031CB50E876DEE5751471D88CD1117384D518F9A6A +67C2E9306984D25A0D808FA9E308BE3BE429AE3CF6BBC013C121C9EE4597E836 +9A62BBE57CEE474B996DB26A0A35D7CD339EE00273CF12C6666384DEA793707E +94DB72AF6A07AB8E0C047618C79180FBFF1A7C7C84EF3D56E8B7D521D2615AC0 +9A558E1746A8A1C375A87CA6F8F529B46CD515341310406DC41929FE41837A8E +22602E4B7BCF7421AC4D329121FBAB7F802E0D40270AD04120D48986BC2A8FA9 +15FBAC42FB99905C97867957692ED4E90822F6EF13756835F75B37125AFBDDC1 +A8ED6F1710462DCF7D87D6D1F84AD9FCF790BC0E47621CFECD1C91EF82CF4986 +034D260D2ACF63B68925EBE936A9BAB8F4DA734EBBF0ACAAA1B9EC036FF90A6D +807A3610D99985AD47F2BD5646F00A28351DFFD538228A168732413F4608A1A8 +931CB80EF0302C85F15608C6F40E53CABCEC3B8CA324C8E24765A6990A9BF834 +30D641CF15910972C77FE46E152B3E7B1C9485C7FC675AE7D1D90C49002E2DED +CB340E0BB0F0184DE82E5956F51A3FF7CA41874340C84D1225D96967AAEE443C +A34F5BD186ABB1394B72EED0F74366DFFAFFA5F19BE3F94031E9169B3371EF31 +DBE3200B562C3F12BC36E5E9DB16104C392F99BA4650A218F0CFCA1C90121937 +BD17ACDCC2B6C55F2F6F549B9B0DC360DFC3D5F794824B5F26B7F2F6CD718C34 +7F118DE9CAD13828CAB630D352FBB4BCE0C225E1A3D42CBE0DA8518324142F9B +B0CA9EFECBE9EA815FC28149955306A47042C0AA318519B1EED1C7B01454A6FE +CD773F7BAF3F51AF9F13B3782818CA3A5C2804DD50614C6EB270F5A5C0DDF367 +C41858958DF6CCCCB7CE8A81CFD93EFC0784BF65FB7D1E55B1526F38C1E9ED39 +CC17F6C201ACB98EC46671087268C47DC7772A439F8D5206E3B0E80935E67976 +5402CBC80E1A5DC8B6A421CE93586B43B5CC29715CD61978F1CF6FE34B0DFE9A +B51BB37D78EC728B1E3173F530B569D2847ADB7208DAD920A59FD8668E62054E +393A34FE7E2A06C0566773D831C87344D0A541BBDBDD53006A029C6A4815254E +F8111D5317278FFACF32C4712B1924241E2BDBBB8EE0F1995DE94D5C4A5856D2 +FF3C00D0DB758842D4A7581B17AC15BD99A7EF1C69E043FE4AED459DF1FC8A76 +EE42FED525A75C0C05C94B72056988BF0652931EBFDFF7538EACB751238BA690 +99D37517F55E7B51A8372AFBEEC7465B40847FC294BCDBACE9A84C9F64F3F304 +79128F04FE2F0C6B45C89322957F508732FECB82A71C5BA228235B321C1C26D2 +098EA9A9E80D69CB5320673B4C42E117904B6BCE2314E2013F0DA105952C4B55 +5E9A559D3B20B2BA8F10C648A921F12BD4D847F2C917980666523A7985BB4076 +1DD934E6D8592E778801CB4FA60633895B0FC107FC84DD7BC14D361EF3D685A3 +BFD5CC49728D51558998A83D8E44E4023F67F22C38AE900A240FA3AECFB61B25 +48F0F63829B80DCE6F2CD8CB511379A51B07D7B4C3DE6645D2AD0087BAAD264F +C5D813919F643CBA8BBF5B4C1D8E7383C1D8226FDD7470DB44B3DF510E150D50 +F17355FDB0EFED27C75CCCA0AE8D0A551DAE084DF67217BD5ABC1CE98F932C57 +83C9013D5DDAF5D68D1C38B486127790B6A8F2AF539680A96C7EF31656A149D6 +05842DE224F392B0E0E3B7841157BE75C1F35EF3D32F8B8324DDB7D77DFA33FA +C9F3142382E0049F932CE7C7C601906CE81FBF81973E95BE2B6E26C067661047 +74CF8CEADFBB3BBC1FAD686062A0EBC3676EBE907778F70F9CAC563DD0218CA4 +D26416F847843A394284F6C5810887881B438226E0E60F9A792CF2F8943DAB78 +132321ABE20FFB45DC1632BDF5CF396F3885D512A407F74C8010CDFB0F61FFFD +24F18110B1B3D99E76065AEE72E1D98A350E5F1C482F102F140FAE73BA1CA62F +5BAC010827EFF14EC650FC2D4DBCAECCB7E034A7F1015AFD84874A48330110E1 +57CEC833C6502AB566E33EEAB696E669F175EF05D7C405C2E2767B6017BB33AC +61AD4E0F520FF68B59DBB52201C26989667705F88189969D7903669FC291BFFA +8D84D0F466538B4F5CD9AF03D028A464C6914F6F7B5C1D4959A91681F7A6EF90 +D8A6AFE10597EF38BA4EB58D0E77DEBD51E823AD0FD477CDBAF3B6499B47391B +CA8AA2474E50DF4F2D5A5028467B39014A99B772651D8447A7AC2EF09E795C34 +1218701D8596E694B1F46CB61BF48FF611D80FA69F930ACEE5FA73595546EF83 +052FA26CAA646687EF28872EC6A2EAC7BF2359BDB3B6BAD945E4E370021EDACF +4E746D19650B669899E489798343584B16CF0C8477561B4F5F3B8D4743A88150 +0445F3282C196F965362E9F4E0EE4E7ADC0CF17369560B8E436AEEA7DD429EEC +ED5230B964B94EBEA505D6F6B7AA52F51CADF6CA6A8AFAD10B85C9D76C2CC4C4 +A844C84C10670C6E4A4D0B70A638936799FFBD9B5888A4E308A0F20027FEB3FB +7293B0CCE62B601FAB1B0922641F79F615B57F8721D1BAC5C50EB0AE4418DF37 +2AA06A808F0384859E6910113BA86FF93A40388DF2E705A466358E5B08C685F9 +2418A2FE3168219D257D481758181ACDEBF81F74536C2C154112755E38F5D401 +8ED8CF8FEBECEE22B1DD66C5DD28B455294D978BE941534146C470EE5FB45DA1 +64E33C317D0810287C37C72C3E317D2BA1C385EA76ACB98E37913E3D26E7BD54 +0A52424B9B595A9D093EF089BB9726A72DC6E1B8EED84A1BDF9DD0947B2AE2AB +37794E6CF24A69C0B77251163F3A21C77E9EA774E9E7CA702AE8187B7CFE6D30 +3947050FF3CCCFD25B8BF14748694B20B8536527D1596167F965200AB78F9C09 +1C944D90F2C470AF23AC6BC055FA1348E7AAC9F0B624E3FE53439F2061A367F4 +61029331EDD288320882A76BB5C661945010557C36DBFBF54C1048350C0EA4EE +B4B8D8EE4CC7B2D06ADEAF453BAAC7D7D2FA41ED42C83D1ADE2DA521BDAAA26F +2510B7B33804538A29476DAA100888B1638AD23AFABBDAC2BA37E6AF18005C55 +4AA3C6677DF16E98B5850DED745DA7E5E17761F70D82C781D56B218C1AD1510F +A9E184124A013FB245CAEFB3CA3D57196A0D908E74AC47DA641FE5A6331E4F3F +6720587E1F9C959E6C1B7A8AED923539A9CEA010CD4559C138373AB1E9C9CA3B +E5297FA4370B5094AA3CEA1107BAA8577E3591EE397452E4B14F42FF4FFF8A7B +9018095BDAF9BDD70E85F64C8AF18B03803D09B9FFD8CBE81E4EA0E002B50762 +E79EDD86B0A6F94F6BBE0743BE11ECE0B201DE5D6B8FA55DE07FBB31B6DC2BAD +35B10D25F3171FB55DEF60146F05ED67DC68E8D330A1813016B6B86356367152 +3ED8700B1850017301F455C98F35DF1B671E298EFF48C41F99ACE3B38610B5FF +3BF9E565F58E253677CE3548F44E4B172F09091031FDE1F15144DFA5B73D381D +593CA2F5EAF3865D0441A0834CE4876529E987431B97D8106A7E142539915A97 +E3C4B7FFD8E875412FDEFA2C5DF87992579065382C37979F7EA82E49436E2B67 +ADD4399B151745044E954C65ACD562C2B4B5BFE82346E12FBBD51433B5352C6B +5DFB7F60DEEBB2ABB4A0F83EA50D7521AEFDE06DBA97949EEFD82783437D8185 +F1BF6DD4B1A304309AEC183B3F489464078F5DCB7E2E10950D9569AD61E48431 +BDCBFA4F5C3E4BEC92B897FC608CF5D0CC9EB4DA20B3955B6515D0FCB5B9A14B +BBD0BA78933FF2F7CA45742D3E4A737129B07D07BB75E5935D590FC2305D0E24 +56E127D3698E7E5707CF3F889ED2F4FD8B0F4BEE722D5471EF33502933994B0C +38EF96AF355C867C1134971964287C35D6C6DEC091D41941897805A4BD640DA8 +5A1EE0EBCA306FA06F7DF297F56C5B762D65C64F3E09FFCC7AC6AC1FCC45ABE1 +5696161E1525386190A694FD8FF3A314F15F3EE1204444B405051DEC330F06DA +B6C430719F9089EDBF3B7B87C9A79ADE69387A210CD2F25DEC73B69E0E98D440 +177BF4C1F7D95C1DAA65C143A3B50F532960A711552B3B3A664E85ED5EE769BE +E27198F0866B6B97341C3569E9EFB810F3460B10D01CF84798A004F3B169C5FA +03C5A9AAD13BE27C78FA481A8539822E3B97E1EAFCB098C7C131CCB7E3B8DC7B +40D0600AFF86D35501AF857C5F2BFFEF9F8CC5E70B478635BA62CF41D7081522 +A1956B8E1AF4CF2CCCB1BADCA9C2B656791198D25C2249BAFEA85D3178F545F7 +5782FE14CE478EEBBEE829A1B73E157A57BAACDA1185E40569B9A5F82C29F998 +4B4FE9E1EDF618A714355CF947298BCD5F4162DDF08905E8A27863D324F7B598 +3DA6C24269C1B9F5E1B1049CC5B86E55C8F7E6A816EC019BFF3B6A4870E5C776 +B26ACE6D4DC00ED3B51486E69457320275E5155B689E951C23A544416546E11C +580D88B0B8F9CC0B712825CCAD512E24B590DC3A327FC4624637EF4DF869F53A +D7B781E7D3807966291528E3A447D43A4ACF73F2C475011EC8C43E99677EFABE +3A902171662C985E3D21175B7A01E0620C76285EA215ABD06DDFA202B4FB56C5 +7CD837A0FCC7BFDBF44435598E69135FAE21889D2351E1BE014BCBCC2A24E50E +21E1D6B5757A897E4DE82499F0B5073F4F0F0598107F153E50CA26D4445C63E5 +6CDD64EBCA3404CECC59039F2CD88898590ECF67D522000F1690A07A940DB07E +2EC618050E3B923BEDFFE2761D02B1A047E664D316875D687C0ABCAC419D5492 +6BF9EAE9B9EA86EA63C7C566FA4B34B534F57DF58C2D83E78A1BD15169B15F27 +7C58BE99675311AC1D8930027CC7DDE0D4301A40872C56F2ABD153CB90730190 +8655ADF7ECB69CD863DC5F1B27A9F54A24C478E574CD45C4443957215161CB05 +300F59ADB4760F996FC9C0A62E4E9E58C5AD2FB5622C53F2F9E8285F777F82CB +916D9CD0CED2A1169D16D06ACA8B1C55208E0204C79A0AE24F6B0CCFF61BFC1E +783EDFFD4F9DF7330A516FF2D29C05340C6A3379B0A2C649C30DDFA43FCFCCBC +44F53A5E50B6F4413263987D70008811E2BAECD443C2D05322F7EE9042E96FCD +F4CF95D4242CB77B053A6AE89C25B4B08C2F9C89A11E887A7019C0454F27E491 +0DA1DB2D069FD3D879D1E6421F3A25912B7690BB66BF72150467399B05AE12AA +B4828FF7632A49F67C079511711DCF4DCCC3EE292D5EDDDEBE2EC1C1502EF58A +BEE3A1D443722E5E86930EF72183C9C4B0CAF547FC31209DB9DCEFD48165E7CF +0E2816DA8D5B35F642805DBC1641BFD6A1E09DE581B6B76994BFB99F1EF25AEC +1C38E9C80F840503ED1FC4657A8BEDF3BEC6540494FC58B07CD67FD8F4BA8827 +6614F630937C98EAA03A91A98BF5EE4DD7724E6984BF91BA75E54D706134EA71 +398066671600EBAF3DCA89742D0B4C9689B796C0B9884067AF329E44AF3AED93 +3C7B9F59DB76BAC6B4850322D8C159E6AEB1DB9FD3EA7273C6850A33F4FD2782 +86D7EB96B6D3AAF6A9DB4E9DF8331A728AEA9D3B2AF914D2FA3DD6DAA70B741F +3420D88B36B94B92EA17DB0799A50025188B163FAE205713E738E1B50A33F3E8 +0F232F9E31308C032468024246ED7322E2E44E127479981B71A289E7A1B2110F +A13E49E97CE3EAF20ABD1797F23D4A6F236EEE5DDF150F9F8B01FA044B8F95B1 +3EA5A8670917D86885E8D4FE191703A715BAA4BDFB42E6FC96F76E11A5DC5103 +1F04FDF57376FB321C08363D23CD59A436159ECCB2D90238D534D94D0AB51538 +A114390A7B0B9219B0A25ACED84E6AF2DD2615E2A227A2AA0C1ADF3892B04FD6 +52A7398644884CD1A0470FE426D477321622AF78F9489A88FBB451F6750B5ADB +F730B99397666FBFBBB1551653A7DD2726213C063FB229149BEEC49504BBA968 +8FEE705C67AC73DDCA678946A63AF615BA989DCD2D1CEC0B73D93AF362CF3259 +69B6E3F7B77BA7143E529B5A4565A8490497B59286A7F3BD3349AEF709756891 +1F6BA1F9F1E106BB4006E0D6CD39B34C3363B2AE9FB73C47C34B5338770987A0 +55F7145AB5ADB4C4B3E4E73910CB6AD490077E0C4D2B9B9DFDC74949F73FCC33 +4E3FE1ADC9AEC94FA920EE6A879DABBE3550BFD30DE58DF1FA30DAC830056882 +B255051AF1C48F34CFFB643E8D6C1EC37008762C6A193B70EEA3E157F2301148 +D3AF66127B7149BF9B08F45FA0EA52A62CF727076DD48C6022ECBC3DF62B903D +2CDF07A03190E6A5F22D6775591679A3DF86AAD0D3C847C5B61BCF1DABF43D7F +F03588B7522B74003A5238D41B64BF814025AF0A23625054E9B3089D4E6154DD +41BF0C1D68B02302949B41FE36077CAA9B00893767FD86AA96ECFA637E43197D +FC8745EEED535D6FA2EF28B88183E7F2199ED48A6F61D922FAC699D3A2D7A5D4 +153ED07AF6AE9C8142CE930D8578128953FF64A171701C1CFB85A9407746CF1E +883752EEE13C4EBC089C9F1101EF883F83038E0E102CA5930DA73319CCE2278E +7AE0399D0CA7CD2E90DB774ED85CD90E6291E76FACE0348D29E04D9F4F3D010B +3605BDC8C24EDB205AC2E9B5EDBB05EDA1C1349CFDB709094995F159CE103D6D +D62440C81EC82860482CF929BF782C689C51EF2A4AB3A9A8F8C5D25B6500C45A +3F7FDB6A1F654F5E87620B3C5AA54FFB94FED800F40D228ABEB4EC38730E44C6 +E463FEAFD08917CC8DBD5B364B5147D54A2A16C1786CEAE1618FEF9574486DA5 +D2D56D77DA346D7CEB1C219BFA3AAF3BDF6443AA22D0E7C8D307753FDB189AB6 +FBC22A2B3DE149ED2C200BBC62EB7871FAD5D86CE4E82633E588CD6568E686FC +EDE89B1FD804D16B537BC4D282B0DF790A04047C1480C8E05DFA4BFC3B3859E8 +64910523F14519019999516DE6A9F872C8CA3A340357BE6E87F8889BB1303511 +74F0E0349DB0645E09DFE2AFB71E4C73479B3E7B8A9BE47E0D9F944E613FE840 +34D9D5EE3C64EAD2C233035917F914DD93C94DD4462ADD7D03671C573CB07A5D +45234780D20EDF94911951355AB2800B42E87C84712311FAEA48DB70202C8AD0 +2A7663903F9830C25009E48B6E558FE68ED56BA54F93570A14C1706A47AE798D +4613A9CDA2CC28C7631A1DF4F5276CE1B274C9860C6C076298C38C9798D5D35A +D1A7887B490FDEFA656CF8B6626346173050A75D207DDE3F51C7B8F95639D7EA +05DFF8 +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: 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 36 /dollar put +dup 46 /period 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 +E978B03C604B50A5F91C47346DE482B3A922A5D023699143C3BB3C7475E21AAF +22AD06FB556EA67882BF7E09FD39B4341967F54537ECCBC61816D57CA02D3721 +03FD8A2DEFB6371422CDD07263005CD5709ABE6361D35B0C05E68E1C0C205185 +33DA77B3495C34113FDD00FF97794144F0343368A9170BECE87FD515FED53CDA +1FAE1447375F693D07ED4187C7F90629FE600B76A496FE37B34D462E79BDFB28 +B4401DD4CF533DE72C290E08134D763B15BB6B2B3B7C1EA96FA423682A006518 +B19A9E449DCE9F35C080A6A41AA59ED6A73BFA521DBAADF012C68280A43BF6D0 +E1D56EA24BEFB30348BE3994AD63F818EC48457C142D79A8E0B2D8D6EC9CE363 +CD98AE70BBAB4919B9E3FD3AD2CF2505562E9266599011ACD271B08EF4CC245B +70A1C0236E87BF8813ED77E39EBAC800021211373CD1ACCDAF0ADF0456F8154C +88C8BB1CE471AA743211D39A473077CDD7AB4FFFC5D63A904286C91F41CD1B73 +300A2D57BD822D1438E9C13C2BDE2D7D3C230552B8AB14077C4B93E1596739F6 +484CAA91AE0BA8DB3BCB2AC045DDC37ED4A84360DCF4A788781D875889E8CC7F +020F5F419E8F5DD79DC04D6E6CB4E71366876EBCC64A3ABDC7D1A287726A74F7 +59F2F692B3FBCBC9354645E04B6ABA1D1823DE92973C7F961425A18051A0C0C2 +C77403BD905A86E2A312F1BF8EE0E06D03632FD5E0247818D5573F2EC7426BCC +8FB3ECA20BCA3573AEC93796E5100CDEFA0040F776E812B87AAAFC527E95F61E +7262234242D97A55876D9A11C215FD0D0C1948BA56753A28051AD4903EE13166 +34E9A38524F1A20EB8920CD7E56C7EA017699BE97BAC3B8BB13E562E510D407D +BAE644AC025A9B1EE04B9F0458912B40D54F7E84B46119AD70E23350C13A50F6 +D110323B8E2494088827CDF940B9A3340076DB808C7271EE371421D4030E63DA +D2D02E8631CF771F1419BF36A9CBBBDD5685B90E6962680A24293B20347AE197 +C8B0533F16D0CC5D6385CBA38074ADFAD3428690834D631572F7BFF77118548C +081DACC62F58E2CBE7AC0BE6E08EC0AF56994F988674395494B7CE670CFE23D7 +F4545734DFD39315573A9888A0522A1F918A31C5763521E97396B3FF1862AB6E +47DFB91F6E49A4F2308C1E7410318F78CF70D54A92B53C0EFB353FA8C5861B6A +C6DC1E4E4F88B19DF6D6A2C61A43F2299891CFDEFFCE88D878A409AD0AFD1B21 +6DB53F96806A1D2BEB11899420C5D6E99E439CE37E4DE9E2A599557B611D82A3 +45483ED82A0C6EA24E6F69E35B397A2E759F76F8F73527AA263D71FC3D00F0E4 +364DD00275DA95E570FAA8469439A383896CAB73A29DA7965D6810EF2F97B2BD +F29DD4D36A48E842E5D5150B43A29F4999A5EE9F3B4DEE1849CC23EECB3F91D5 +67DDED516610E42BFD8D227EF20CFAE80523F0BD658F5D3E4E2969B6D071989E +888E32C06DB2A8D3F92A9C00C7EBE83486CCF417EB1F5A416BECA83BE1F04321 +BABEF6F43CEE6C0068DDD2A2CD576E1693A1EE14BD77F2D383820AA15EA44881 +630870A2977C3C44775E9091C2F90BAA22E29A7270ADEFCE463FA8B935072124 +FFC64528F8BF616BFD50DF9413C593B31B7F5636910F7C70B4C48ED36C17C0B9 +A0B6AE128ACFBF7DC23781BCB90D599170F10BC045416C60D0DB534BFE209981 +BC922AB68E3591F0EFAD6EEB011414E7EBEBC1A6D71231E415E116F0CA1466CD +D040E31EF2C5FA38EFA99E597A6F542C22DBE0851791DE0B3EDA8D1348A17214 +87B8F1593183F57834BB8A18FB09CFDBCD0A898FD3A735F742B343112D319716 +0FF6EB60212791632F8BCA0858C7E3A55921B8EA31232604BEB6002A51BDF990 +1419D5C994BA50DB2A638F35D92CDA93CD7F9A405216A0EB54950551A2A9938E +B6EF5BB7AD1A9369C1784563A18FBBA11E6A6BF4626ABBF3A7B172A5DD1600B5 +A92EFF6873ACF25CE5531AC34E74EE5A1EEB4B4939A6F5C1C928A23489F1CD49 +ACF3EDE2939C342C7018F81C04796AF103510C91BD138CBFB37245593D359F10 +7D7A08CB4C4EF6D3364DCB5CBD4E67F922A1C1FECD5A5115F14A8A70F3A08D2D +99CAB51B532031BA07CC10BCAFF83F102FA24F92DC970A8AB83ABF01F90ADC2B +6C67F40E135A3AD0E0661518931B4473F3A5D393FD1698BFABA66B0EE81ECE9E +44267CF05891117ED4C091F63A46837BF99F3CECD196C1952E20928FABE90164 +7E4BEDCBF8CB2C7E6205DD29EDDD74531DD1ECD7EDF10D8A164FB3801526B3E1 +5C19E9A67E46C154CC58CD2EE92E06CB93ED6C42495BC36DB813D4AAEB30AF58 +D61197741E24358A775C6FDF636658E019B879FD9CF2C00963332DC9B2B6DDFC +CC4F97D5960B58F75492D9BF2FD2F3F7D177CF19D070607813CF6ED9FF33DB42 +96BCC24502B9E858C17BAB99D9C51203AA36C346A968DCA6C8E891206E447358 +ECE715A9BA4D63FEC6F13266F92C1A6E8F3B4E4914E02C67F09C334A2C39DFD4 +5E0EC2D074171EAA6FE216BE2ED18395DA9D3090F421F6E08355ADAC2B6DAAD3 +343FF6263E568BCF2EE6FAA8D0F773071DC3D7C9691972E98DEE3458FA233250 +6DE04405E13C04E6C962DB3552272F1547BFD1FBAFF5160309A53D89E24E4418 +2C3841B0584D28D6559CD44DC5AEBE1D73FAAEDA61910496FB38EF731BDF5841 +C60CBA2F9422B742AAF5DEA61C3EC6F8269DD30D5D4B455616BFA5FFF9B70EB0 +C1C92ECB229358509E236D002AEFA1C29557B79B89ED0368F3A3915BBDDFAA4C +673BDD8BCD1FC6D7D2F68FA00F48C52D8F49E72D64BF2C63B544A174AD99C542 +C94631A1095F8101878EB5598B120CD4A4ADA0B4FCCE73B65FA94BDE49C6D11A +10E89D9DA9DA26C4FAB2A66B74B9DDA9DCF1A4C8E58CF651A750F628ACAE3964 +774AFE1CC82686674A73CA529FBF88D463081B1D7DF308B4D0417382D69EFB5F +B89407992E234CB9633268F3C3AFD53D53AE3FE08DF5C859D276D9FDAEAC7395 +5D0B9371B6EF609AA5D71AAB79279CDC2DD9EE2F48801BCA6CBE3B1ABCF3C997 +3687DB032EF72C32F8E796908B43641B3B0AB18AD16555CB0736D8C755929CE1 +D55586C55F3CC8B2CB9A9938D37FAD90D90E8D59DC9A77DEBD7688F31EC31570 +ADD09AFAAE39FE25410233E77333CE74A2B4DC55C09CB9146EF1A43CEF309619 +60762205D62F44B68CA6CA2DBD8078881E2F50330F9F262C5DA9D0850148DF56 +F5668ED9D5379AE5BF02F1DBA996064B804366F0F7353600142F509477C0B95B +798C17AF05FB2FC28F00D2C8C616F1B98DCEB8FD44AACB9762BC8ED555447AB0 +3A29D755EA73E269DC600943750E1E75C83FC95F2015EE57FC7A229701E91F13 +BB5CFF46BD5570B3B935731CAB104E12532D6FE82C3F8E79C82D0623AB8BD2A2 +4BC8A76DC133A0646981139C393DFBF1FE8E5E775FFF63508CD6465DB2C30546 +982A36D5DE59BC827233754EB60D23FA34787DB3E2BF4C34E463824ED62137CA +B49A97DAE0E51537C8C481C063B1DE6147C8179BC5F57A41FDC4F254F2A4525C +D2CD7C30779054B37FE2FECDE27217EA1F8E652011E32455719187BC6D3F94BF +53E08A4470BFCD5E90A647412701DAF792A40496EEF7D6432854B1985F7A7A2F +1EA5DD74CF778374939A2962BF45AC733FC0D69C5EE1DD920BCCB1ACC3BA4C2D +5BE417F1386D95A1E878F7B905365F8016B86EC36C340899D24D4DBAE6A7B866 +EEB0BF2BD69C0317BD6CA70542E3DF6F1F4B1AD924A68AECD55B77E20FDC3100 +900733D5AED2F0AEB47382B1631E1F53DD4BDCC520FAE30F5DB7C470AAAF50D6 +EB7393EF82522917DD5925B3D0D6038EBDED758DC54C6FBD5C9CF8ECAF2EA45A +5C87434A564F16FA969C5AB409CAF09DBDAA324D8830CD9823B8D2AEC26AA0BA +F7D7AEEB9FB9FDCE0DC8B1462F703E54A18BD357A376BBFE57B5AEB78B6EB84E +EDBCB404144D9B750F8AED7FB59FA3EB1D0BF99713341A9AD822C22DC8981562 +8105155E9814C558B31BD2D3E11A6C4D74D630F8DAE7BDFAC860A561721EFA8B +8C99B2324DFCB40C24C26DF34070F308F24B4E67715382F1BD32B0B2BD845749 +6D67A5D4BAA65806A87D035E68318D3E81A5A95087C587057B41CED663A9BF0B +BC37B8708FDAA0AEE135A314CB0E41EFCEC9D6495213958CB8C9EB7C25B1CF64 +C95740AA8306B56D73C3CE2E802DEACA6899BAF436FBBB3FE3933E5290178F13 +0300C2081174570B47DD9E3E96A9D4D04849FAAB51EB2DCAEC70F6AB6E1403F4 +4286A04AD2CB3F588894419B9C377DCF9C80E65C7ABB70B95088A747B68D2FA5 +DCE8E16703C14ED1CFE479B061A3B5307B174A01EC460C9E6D0FF2A4BE291A53 +B08F79E41E70CC397DD35250B49C56C76288C6B71CF4468917A6922C13E2FE10 +3A4489BC2483B10DAC76053EFE6125031A762C89251EA10658A92C0C16847F94 +A3F6A7163BB5CF9C0546F079017245C749B9B8C8F810F4DB7296FD748B88811E +93FC2A5565FBB48F2C28A8C3DB4FDAF0B0B7A845CBF77092C382E0D0F37DB976 +CE6F4B985C27A2F2AE9F6A81C4FE89537EC000FAEA98BE85261E90E0CE7E292D +0D163ABF2941A28239E7DE6912BB928E8E31FC16BBFA5D31E8BE7C1E85017C01 +9704AAB90ECFDFDD73B56949C2CE080D6A1320415FCB548B9517C816AEF9396B +39D931AC3B5771E22DDA4F484814B65FC2956B74214BA806674A7F2CDDE8B7CF +CEA95B6D7B57DE0E5D0E0B720FE5FEBC04B26985AE0B0DF94ABE40069193895D +8F401ACE9CE936F4AC53BB5DDD29DF175FB4A20393C943E40F2F7692E92DEB2A +A1749A8C06E4CA1AAEC04CD64A20AA676C52DB7950DD736421D87B6E15C7F7F9 +CD2E6EF4121148AD105CAC70B1F0E4854DB563E015B01274197C14C910BAEEA5 +A09697E505F45E56726C2C503AAAC0EAE62C10689310E9B06E73A8D9BFE67C0D +E61559D75A6CBA951046852983C54D38684786BED94307D8386E31FDE2C7C95F +69449A6A77F90057BE6450F10E23538EA4997075157F1B7CC255E0B28E32E1E7 +D225DCE3CE3B996E7ED8AAACB3AE638F9B21A502F1230E5CC6AA0005FBD926BC +37634DD38E9F3A01ACC0FEF1A85225C2D9465998CC02C0399BCC4F49F32A0482 +081CF34309F27B7A14685205D8033B4E0E7010C9B861329150A2D743A4BE4583 +733E3D5CE76C82797D98620A5DA2DBAD5252C0B9AE16291D3C6B93F4C24ABD22 +4F57BDF81CAC04F4E20CC7B67A87292FBD821DD372E6DFD12B7EFDC9C1763D1D +7B98CAAA1BAB4BFFB68E2943A68B03D0CA4A187556E3EB89DFF5FAC9925CAA9E +2DF3F099B772EC1CFF33A032B9107247BF62EC8724327EFE75CC97F4C08C1EF9 +FD9C199148C520433F107485752FB07C1619C0BEF98AFD9EE3D29F2A1B3F5753 +B90FAD5A155473E7A7BF8FADEB7C80306529BB9D92526B6D878AA280454F6579 +30959BAB8C35EFC33F0E67C7E7C6828E2225F1717A62D16C18F0D3BA52D4D809 +A9F7B7D65F522735CB562DBD9111AEFDE0823503F01259EE4741D6D3AC51E0AE +F7723EAB411B9E48CFC510D1316247A28E116CF8181C691B9F066EBFFA7B162E +64D6151BFC74B9B9A0EE89D161B76E876903E58C7C57681ED07FE1835BFF15A6 +260C704239ACC0FAFB0F42FE11E97BE29E743E6DC8800559EDC9887440B25AA2 +399D4C38631B0D5521C5BD060C67A561CB84122BC4353D8E8F788F1CD3E431C2 +71E14C995F5BD51ADB63FEB1F1ED33CE3821DCCEC8E64948DB9AF9E7CB556E37 +AFDE3DF114CF431F75DF3A84FB9D817EA37060F051A4DF349BA10658D840BCE2 +09020B8324419F00303FED63901656AF761805C5632902F78D0CAED5989090AB +6665BBE4F4FDFBC17F1421D424B306A748C646A37A11B9C27A772B3A385B0174 +BCAFEBFBEB7C86ABBF4C49F09AA878A82DF51178131A0DB7C7ED82DD376CB796 +98DE4116CAC8C622490839FA9C783FC68D1A131B635073ED01C48229A954A6D7 +26B4571B9915DE5D3B04FA025FA591A3A59CF058718D20497C9DCA98E513EAF0 +E4D2AB2DD7146647EDBA8C0376B42513A0A3AA31691EA408B83EB26BE3EAC433 +12BCA857EB94BCE7EBD4853D789E15602FFBB710C72C957FBEB2F744F66AD54E +6A51BE63315C7B6E36B54DBD88CF60251D31C73EBB69DE180A61116052C4B12F +6B5E2F45155F46463DB324FE30BC02CEC38EA8207C64852DEF649347211FE3ED +09DB60C6C2E6F168B9F5C9F4420C6FEFBDC43FB2E479794D5553EA2D557B37AD +91909C0B86BEDCA02F321D6EADE046834C2EF251A794C429DD02C4777393E7C9 +D9516E1B6CA1694FF3C390AF6280C53D9B03BAA2BEF6B4BAA03DDBF73215A47F +371982F180409C3B96C4FEE85AF97BC78AC8D2049040D7E74B34DB182BC4BB3B +8CBAB49F43DF21A55C4CAFB7BC02C858DCDE59B8E081ED3A0232B914FB1B434F +7DB098CA425029E9169F8CCFD1FD65403BC68CA09C2171C494B65B95FF5DB88B +C4DC6CE1C39E7286FD2AEEB64427EDCE67628FD124B0322ED931CDC132A4217C +733A542A0EF05A7D9685AD7E0E0660A43C08EF58CB54143A668A0BC87B774C2A +D612D29E0C904A9707D6D692178E8064C9CE8868722AB9EA2EA6291F143F2767 +5FFA9347FF969C9266476B79F21FC21CDF91E833BA6514092B78DFA65947B8A0 +5A25BE84B7732136F912EC7329D6A4694450A9796493693B9E9CB85C72616427 +B5A095655418C333BDC00A8C0A0B9E8D9A76076C59139D3E75C6C6AA85280476 +A4D25792320AD2BBADF70A60A220F9F786B53757CF0451F69240B2CD299E66B2 +BA06C58597BD7973C4EDEC64870E8DF1599D0407EB1831C2569ECE659D7880F8 +A55E82383CA333BF0800810E5544E70914F58AEFA80926A6B777836211501B22 +480E5BE73E8D4C3FD8B86B106F9018E9C3C8246FD869D2DA613500CDB24FCF47 +3AA23A4440B4E6E5416A7294B8ADDD4CFA8E10551978FC369FEB60B2CD86D88F +B9AABB5C64E1149495C2ECDF609A830DF130546476FAD5E5E88374F46B92C9AF +CAB1115EBA8224F193D66B118DFCAA5F543E1CC7859EFC4DAA0684814ECD89EF +2C14ED98756A6E03E89E7DCF6D07A4DF1CDF4606ACAC07D9FACD5289E0EA925D +729D9BE998D4E708D33789A63268DE0B59768A00CE3EA14E5EC46DDD913C1A8E +A9E9BCE0205B8EF9A761CE3578C8A745BC114BD0EC87A07E882B9BBB27906544 +03214FEC51DF4ACC70F1DE54DE4CF537D00E3C4D7C3F98D397382EEBC3A40428 +DBF36AC39DBAAE6B7FF2B3964B60176F1D469EC7A7B470DC7569E6ABC3D3B844 +358F1389461470C43EF9A07C89A5DA3A51BE944D5C51C4D335417E8F1D335E43 +84F34695C912E5FF7D9465E1087223CDA7D837AC7FB65DA0B76160319F07911B +57EF0DD8F9E434B604645E18E42C6C4E3BB9CB5BD13E40BB210DE1759594F860 +592F26A1AB9271F9688A95C92D8834BF964EA3AB8339A2A217A334BC0503A63D +EE898C2BCC6D2E6A38CDA086BF574E95A4FCCA2A435E1BE85D2C915562B479F8 +BB8275A08399EF31C6A7F39745D263A100BB47950B4769D030C14B547FD5DC24 +493E2DC0151E675F6E94D5AF02C091E4586C19103087CE6DCE8FCB5B31BEECC4 +49A9D9855B9EEE2D27AEAA989137F3BDFB29EA61BD654D6C51914EE74A1CA5C5 +E5A9A1F233CBFE0957F4ACD55672D07DECEE7F52DCC0E1624D385519FF20EFE4 +CC2BDF40CBCFFD4A9482CBCD041283016AD3A95AD728DCD1D7B696A92050BDF6 +873CCA452DE82877DCBACF560887623806B838AFE8FE0D6ABF646D5637424126 +FCF9C2852EF6B4F30E3725CA234FC62D325E5889090F6E1C73C0731F955389B1 +9113533BE0819AAB39072DC6C20874232EFAC3CC73154F480CC6F734F499045B +7333DDA2C655169EA6D076473DC9354651C067D3F7F7CFE8AF1350281A85D0D4 +735BA48507C70818DD7E4358F7CDF64FD6763257900042E150A8396673524C7D +EB9B5A1763D3A6854C38AC16113BA40E3D449857981D81039A5A8AD7E386229B +26B94A5945A24B8A3DBACAE1DFB6673137EF9239AABFBA56C6209563C1476F0F +4A7BD6C225E19D7B302D21E5ED7120FFF4ADFB042504ACAEA618EDE8A6FDE8BC +2E92D8E792B2DCE59657E03E65A0F04746B73EFFEB2A7FDA06D8AD08E488855F +1C635F937EFCBE6A9904C9645A5E093EEB86ED4857E12D7F5E00FF2E7EE5DC8C +80D3F510BADF414E6FC7C27D076F8F9C441C1D0AD179D37D5329F27E898B5512 +D873EFED0C5D61C75C19496D8594E841D5D54104EA2F744A8B3E226951FE99B7 +1A53CE2BB351E6811684A94BDE0934AA259BF230B65A77EF50B90CE8E9845C89 +3BE5D9A6DC85203B3C76EAC4F4ED9F969EFF7DF9985D82BD584A8B20AFB0EC95 +7EA54C3C1EEEAEA845C2F849F81D9ED4651D33FCDBFDFC7C7A83157C7F3F7865 +47B381A2BB91977A08D1995522143D443AF9430A17B0D375BA63CA7CB38E7B17 +761CCC1D56EF50BA4507DD42E21C4E683BBF59A99BA135293FB4A506D55B56FD +EFE50D3106B07600FFFE53B95E0568279DE9EB6E4BF49D7887D292BB8A74CCA2 +F884E74F81B23255BA33CF5444AE3D00EF734ADD14F7AFD9F25CA2C35A5621CB +1121F4B1FC731056806A37D49D115D31043DBF96D262E2BE0755071C6834BC75 +086575A8AAB3355E35A49324CC907BC1A57F7C0802499695779447E3F4FD37A8 +C9A83AB61C36D50802548A5B0F1CE0CF99F6DF279DED96D79F1797793F52F265 +97A4BEEA564246DAAC13EEABD348DA6963ADBAB7B11AEAA66BF4C4A672E42C7C +46D104FCA17BDEF0A804B9CE1E76054228BBC2BD6A6E03E810ADCE686553C452 +74141366ADCED5D920BC6B86225D789AFE810938C5EBAEFD706C2923F16540BA +0D09CD92FA02DCF62223774692B41DACFD0FA2222A426B4BCD6AF33E7FACFE25 +F669775FA66484D12C964BE8B48711C21FCB5B59172082B025BE518908A4DD72 +AD1B3992CC3303A571FD85F1B13CE256B1A57C9A087B49B0ECD784E0591822A9 +5E4CC856D13B2F94071DB52494C41C43C15F8B16D99A3387F57EE69395A44407 +FEA7EFFE45FC1ECDB3BFDA88D21211769495C64A709EEBEE779D236CB8D6551E +5E7F438D4564482C1D5F9C36DF4349DFBE95E0082AA6EC100A8C3C189238B2F7 +DD5593A08C9C0CA806D242019023A72CF20318CF171092F27908C13BF8A5A2C6 +40D94284156C20B19F3CC326EACE632621D5DD881AF2D47CE92724D350F0AF8D +FB59E827633191DAC18BA809DEEB78A0C541C620045D7DE6D556C105B24A4D4F +165870BD0F3AAEAA78467E81640122592BE598FAA39A64E246357F347B6E2068 +2F29809FF9BD2765965439BF57CB040CC06FFF858E85A893EAF1D64DCD6399C2 +EA596568D197B009996CA4743F0CD9D46E3516966ADD8476BCEB2678AFB03DB2 +8905F1D769976A0A762044F3D95F1B26E2F8C2459CC85D1F1F0E7F0FE46EDE24 +6B176B60589345D8FC6D29AF6D7197938E08FEADCF6ACF287B44364E23CD2D12 +74C209C344ECC847FFEE64B40FB259926CC4F57340EE7F7C5FCEA60BB1E758CD +65DF473A0BB14B53E61743D3EB4EB8C4F37BA892999F8F56B8E33488057F438E +A4B585A46A147AE5A37F410EAABA7555D3E9BE148562FF765243FE76559C1D0B +5DE2CFC71B108B2DD9027D1E369CCB15D908DA552E90BA0639B8F87AD4B5EFE5 +0599493640AF291D4A779F124724530A7A3FF333393C4195B32B5CC3E2B9A8BE +4E6DDECE14103BBB3F1A8ACCCEA07FFCC30EBA556F9ADD56443DC2D460178A77 +1FFCE92F43A8792A64634ED6C6C726E29083AB5A919A4BCDAFD6CB40ED45B080 +0129F0EC679E1C0769A4D3925CCC1F3CD8CA38D578CB34CD636C0BC6B378BCB5 +8B47F2E20709D1B4A119D064B0477DB95664123C0C8AD271661936026431BC86 +EA7298EA8873FED181F00A4369E798FAEEEE2818B1A8A19665535E338FF2FF69 +268435C505C6A1A60F6F1C13976588499C9AE069FD9D785EFD89CC7E +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 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 +260ED46500FF41D25635F195218A804B2651A54079CF48019C52E1B551EEC3CE +13B1FE4864981041B247F3F1908DE3728E345F81A6863581C22A349B8AB7B3BD +BC554FA3598B2B5C7AC6112CF380D176DD6BC6658BB55A615171C47A257EBC1F +A6B40E10B77C81889061E668BA620C0868AFD6C9916FF4F83185A2B9793C0F5F +F3E17D3ED954973E9F56DDBF1DE17DD04305A12EA09DCCC0A60A0BCBEF431F94 +4137FD5767DDE33F5A1641C15D5756CC52CA9EDD64727BD3BE976D4963BC8914 +C448D479677BF9AA55FBA3A41F58110C9B8420352BA0B2436A376A27B6027974 +FE6FDBB94FB71BD2E1BBB9D55661B82D646CFEB57B912F0A57F6FB10DEFE768C +5A7AAAB7D150E334E0251B505F9F5A82ABADF6327A8658074080DEDF1E292A36 +27891B03A0969B23946281FE83B4F4609183F350B8C3E79631499FB05BB37006 +6E9E270B7563D383180E0A1D8485D23C1B0DB41D42CF465441B90C34D846428C +5D5CA1F39BCD7458C8AF0F1CC7E1EB1D322A72ADCD01ECEF84DEA2278EFDAC11 +A39100F9C88EB358DDA188EE1CA33F521F7AAFFD7E2B2507510DDA91CDCF7E1F +023C2EB7D3C25C6C9207D0D77244846CD0658DF5373AC68A0B8A89888B75E5E0 +0B01FAB9CC0D5FB3F26BEF1C0B6A40B2B3A7F5E3CA59A6CE6EB31F175724D2E0 +7D69EF2A0BEFE3E68ECCFC2BEFE3CDC2D36D065282D8F478F489C6690EAE6278 +B147AC6F902CD400D1F79C0E8D61ED58957B2F2CB019B0651BCF74F140C38188 +C9A741BD6B3659CA3A921EAE6A1500B64835A7EBFC4F8B1D7979A5013C0A3ED5 +821ABCFEE54487D57FBD698E6E623BB250CF43C301B4F4FD944C03723A5D49BF +75966554CF683AF12CB764C32F46F603E0C4F46F83F3AD5E1B2A9E8032747535 +3971119EF01BFD1B185C706737255D4E3719E1382E40E90378EB306059166A29 +39FAFB6C30A398C8F9A1FBCEACF4064D4062966C72B3C2A665BA410D7C6C5810 +6F07D90B96ED207BDDE151636732DB403FDE31DDF0D0626B2DB07FCD5BE25598 +22B2D448F0A4B680A50E700B9A05B72AB8207F86A25CF40DB3BB4FD5B2A6A963 +D285BFF60296D237712E51536AD6B5F54E2A68D914ED54E3897BFF6A8B91A96C +68167CDDE161FA909D6A1974CE568F9062C2F142BFFC9AC6DE1FE0EE7EE535EF +C38A2930AF1BD3A9AFC0839B59C344918F5C526E7638E08877181532449F8E9C +E2E3A607C522926CA62EF1CC898583D9781AF9FD951CCFA7410BDE4C7001D53A +4800D3A1D296CC7B5D8CEF51C870B89526A483638B9B43889800A62D474E10E1 +98EA6B74F316F10B553C2D65D2C8193B9ADC64848B5237A11EA8EEEABB005CDB +31BB0FA75E296F38EEC76E07A677A5CDF523E2C028B5956F7D682569959FEACF +2335A745C4C9DD37CEE54C6C609F27CEAA2D648B1A266196984A755D5E26E10A +BDCD2559A73B0C0CD7FB779889AE33F5A123EBC8A7FE95A3F2FF2237BD2993E7 +9BF498EF402B0AE48D9608C1480176C3454C8BDEB2470B5A0323DB0B84DDBF1F +B893C4A1A924DD55C69973C1EF3EBC03C9C51D2A2AE58C410BA387DCAAAE745B +5220C7060B30BD3229ACD296094DB265627B4F4AFEECDB930814BBE7CA1BE5C0 +17DF1057C731AAC5ACFDCAF6DEA1291DF3D44F06FA7A23C7A1254F6F695C52D7 +E0B5B811A9BAC206DAD4E028208486E71BD80A3E0AC6E5BC540977B6DCCB80A7 +984A3395C6ECFD5070DE23607EB6331BC8B675427BFF4D732E756A91809E8F21 +A911399DEE24327E42F298FDC68762CCFD879BFFA9BBB1DD932369A66C1F0198 +9B60DD9221F472CA460FEC66B6A473DB45DD1A6AA4BDBCEF9EBDBD360DD84A56 +31FBFA2BF803C059337F321D5919AF28841FF796105C25B453BDB3B9CF2EC269 +A588699159AE9ED7E29CD0458D7F1612E77F26B19240F365FA3CF830D4868274 +CAE404E49C944DAF661E64370F7D3F99742910D80D7B2975F9973241EC9CD74D +D0B9191E0A9838D3DD635B8C69EB4BAF18092D0553E9F45F1F91488B4E449737 +58F5DB3DFF20FF80E8D041A7FA1E634F0CCC946B5BFE52CB1A936402D803F13A +EA31DF116DEB2853AA8791943033104826661A7050683B66E72AFC0338A12D93 +0A0074BB567373234399D3C99311F4EC1236811F6EAFDBCF8FCEDEB70F7D315D +5B6C254B56D8B294209E1200A76F256148FEFDA0F5A988658DC6C9FD408319AF +C77B6CF5DA78AB85C34E902DE729B06DD8786F929BF083E5933ED344F2669CF7 +17ADA411F0217701A1BD93FDFDA5C69BB1CF687624168E01134E1851ED698E0A +467053C3C283E3241D7F0E707D90DD9D54E3C66FFB0E79C48999B1930966D603 +51561F40D29B6E5DDA09F75765DF2B0D953C0AC131D0109A33E31DF9A5B0B873 +4E8752DB4FB7FFC310F7844A2497E417E8D1F1909D6A361F19DDACD28BFF4180 +7D36980562CA659E88423B3734879FFDC728851299C95977199607A1AF16AC63 +D003D13C8D3B889D75D920CF8B8E04F21A1AC402A7936402F9B04B9CD14851A1 +3B9ED3958AF1A5D70D5E308C2E198D925161C9D2FEB0CBB3A0946AD0C1D87096 +438FC24D8C2C40C4977F36C9048B22300C0015B4995DA2ADC97C8E20C960E9D8 +5F388C2625B0211B4E171AD161E510D0231B5FAB5F8D188F8AB71430C946D7CA +C79211B83B0779594FCC762B026722DEF1A1B4311FA2C643CC1FC9871EDB794E +8E665FAD639DA045327E32B38235235A4FE93730E7B681E139D40B74AC18B80D +49DB6CA0A8E52F4181D519E77A178A07FF29BA92A5D0E9AE3BDB75581EF4D3F2 +9CD1B37AA9AFA600434C238C7DA7CB8A183254BC6A1AFC52CE880CFB2F1A1B29 +635DA29819A6FAFFDA3DE2AE553EB01E70AC15A8030B818D7D393E31AE420521 +AE30EDCB66C4BB5DDA715D319C12E26F665FC6F55E76E51E7CD64F1355A261EE +442A6006B938CE9898D305907240C3B59FE6FADDEDC5CBC2DE6C992BDCD568C3 +1CEF46370B9D17A8598285F88386302C062B0B47C352E9D04E0261ECA86A4D59 +452D3237C64C3D629961467437E9AB1A945F1A8B1B34986004897659D926766A +F8D2433321C082E4E0A6FC4EC0D7E33B85DD18BC3624FA19189E5846A6C4604D +CA4BF27338599771F469ADA89E61F28804D6DC4619C59254091BC374F3E078AD +26BA14C29BEFEBFBB9031D799875374DB8F74CF329476E6F415D73B94D732C3E +AAB918678EC02CA47DD11B9E1802FEB787D0B321CC006CD27D990C0DC889E3EB +62CD383471C7D5549B730310A7819BD176691797575D1B38418117459FD11DE6 +3892DDE104B7DA869CF882EE66C26CE74C3A31B221E81FEED91157D11EE9CF05 +97BEDE45592DC77355E0B2D44AF2E7E07B294695303A2502A4E0C81395976037 +B0DF04F5488DF33199303874F62F01EFC12C6360FE2FD26EB062F5D087B32E3E +877287AE8C5E2F25A53471F2CEE59F1593D73933C13C1EDF4E79369D6469D83A +6A792E581D20D06D8FEACDEE2782EB331ECCE6C5D643BA3528C1831BC39CCE04 +40924BD7F6F03C48F6A6B8CAC01906C2B020EBA3441F65D9248309A7EBF85DCF +6ABDFD5134A0B6C2BEC8E9851179DEFBCD1F1B96142BA9FE539C20FB1AAF46B7 +403E6B9928156D5802463B3E9AE55D6DCDFED232FC21A9B38CAF57E481F52CB5 +0284F7DC147313FE4C3F8B4D2C679D1B09F8E21E9CAA5BD118D6E70B7D2B3795 +8CAAF346A46B4532C3C1F7B4A8740A69193174570C138493E205C057E3AF7DCC +86A40E640E79A86D1E23AF82F55D6CDE762336373A4C269EA5104135430ADAED +842A1C2ED6307047B537BE46039DEF7CF0EA805B557E73DA6928F94D760A4D47 +E3891CE22DEE0036C651BD271561FE3FC7C3D715C14F3526459B9C54481254FF +E621291F9F142E3CE0D43A36A5464D6AB248B9E43BAB65E943D5C1E2F8F36D53 +612227D65CDD63AF4C60F01E39E3005A1723405B0E3E5852F24E5B2BE95AA85E +C92E355186F4196CF84F05592814741BE423F34CBDFB64A741E8F23F9E6AB6D4 +89E0CAF347179B3DC8CB655DDCBFE9546EC62E7009332F56BF5935AB27D4594E +85371E69437782901D4480CE2451A227DF5174ADB0BE36F3E209A02E32B9A008 +02C2D29553F6CA5783B4C26DBF98B32D59A62320A78169BD4D59B9E5164A933C +CEA5C6F90E68748C9FD9D8A3F361CD2940EC7AC579FA47153C577221330AA92C +A11CAE469C804352F61A481E9D310837CBE28ED52360C40C797332D4E8F3698B +6E0ABFC483ABB844FA9EB69EBA970A30135A852BC2C09A432F152732CC8D8979 +2F514804F9103970D096ED53752DBA15F0C8D49B27A259B6FEE0AF098A4BEDB9 +D5F2EA043F4A3C8B78A64F58EA0FA6CDBA92683DCC4BB0E492E21885F7EF5995 +409CC1F4D762114A078A015312A0D0B1118AD4D0294E78F70A51669CC4663802 +0DD0F83EB9F1439B7BD169AF910558149E179F4119281B6488AC3FDA295BEB04 +D9FE0E7918F39B11D51A0FAD137591B57E17289AD965EF40C6350D53246A2F56 +04740DCB5C609AA0D67693A1B8F5B1A33ADD9591D00810179740F78342C663FB +75D027DCF5EAD828DD867226E05B52EE436EB7063CD803EBAC7D83F84D4845E1 +284D2FB6BF594C6E4127ABBA5A2E7165A7E677B0E077DCE038CE862437799912 +FB7F5CFAAF0517DF5F48984443C3D568F2C2095A2046B7763CC16931F1C0E97E +E96BBC9F32EDD56CA92355941F4FF6380F03F382840DB606587F39C8A53643BE +1693D61D6783A0D7ACF2E96F03D9178263ADA8E0C32E01961A319E96C81451D6 +14762928E3B47B0259049E5A00C582B8E0F4EFAC2BA34494F1BD2EAFB5B0E1F8 +42F062BA35B374B6873481E3C9AE60DDA2A1675A40E783E594D0B2516270BFEE +D10912B52FAA4BBE90B077E6878A0F11ADAE5F246A847C460DBCDFD52683AB90 +4C3129F23DCE2E64CAB2BE2FBF28DB9E736568D4A809F6FDC4AF772965FF380D +9973F8B9FA0A6A759F4E2FC5CD06B2430A8E854D3B044178AC5A3F93D2D212CD +53C7FE0CA19D4A87420E0B4A7F5F99783C2A1404957915B044CAFA04A6AEBA2E +449A0200DE050029B73691001FA28C48888C0C7D5A4F00A2EE9370818144892B +A6EA1FE7B0294659784C6101F8A47EAE21B3BEA35EAC76ED117FD039006429F7 +A03AF3B240A50D215FD374FBBE77BA23080228772C2949C9F13F708741EF9F3C +AF7BC6680BDF553E0E15C223870D021B078BD0CB44E31329997AC8A473DFABC3 +66CBC0AC6DFC0D108F71B5846D16D76C91D2E56005C3CA3E6BF53CC29A5D1439 +30AA6E470E7B106A97BE43146F0A0634D638484CC89228A98A9C03B58116EB85 +C2D1C0B95761EFB4A594CC60BC184209A5F83A713CC2A0FA014341F457E53636 +52CED805B4ADE0A9258F0104115EEFF94D33B4480FE217106E90131AF1BA07F1 +AC80CD4F55D4267FEE393446DF4BF277BC37AABD16CFCC471BA00DB24B27E92B +1C9687480441D46C4BDC4DEEA8D678DBE0B573D490925818558578D3A831012B +1993CE36F1457FB418C623221AC45118277BCCFDF7FF0B3905BFE61819CE672B +C792D34AD29716B217E3F6BDED6EF77AC9DB96453D8DE7A7AE06ACBF3BD2752C +9A1DE0BF84BD44FB2757F8E00681F546E3FE2B32DF86E17052D3C7C76329284E +D56F4F8AE46EB1466F4EAF300540F8A013AEDABCB8BD822A2C0E0B95AB1BE8A0 +5A3E833F971763009A60B792E42B40E18A686BD080D939C8FC03990B72AD71F2 +EBC4E9D4D06FC3D49B5B9E74F2DD2A59C244DF087DFBD51C34244A22892D5F52 +5C472583621F8F75A0DE923F2E2260B70043E36AF68A8A847A0A1091AE6AB8F6 +39C743BDCD2BE890D64FD4E106E2D67D5F102AB381829804B03FF121CC6EF02A +A2B5AC9485D298889701D95ED06B05B91EC99A343B3DB94D10E927CC1F1628B0 +15EFCD5F926AAFFC8E9FE4398B765A4A453B1CB23583D705FEC30A5C6C591BF2 +405B5CA556F1CAAB0ABDA1585510FDDC8F4BFC256EE10AF26BFE8DB5FE6FA800 +171A5BF5CDB87DFF501AA965EAD557F7DE57E8F33B01A58D6DAC6111FAED279D +DE7E11D29A6CAEE07E60C3A8AB3EAAFAF873B92E69B33E4DE1F03804CE577957 +62B885BABF1D593564914C1AA53F689E5F287A320DBCC2150CE37834849514BE +E6B38CD33827EC438A2EEC0E977FF07A8CB421CC075F93F542684D448216C261 +F9EF8FE81E4BE0E56B77718EB055B7BDF776815ADCD582904556795B2FAF3FE6 +070004954190BF55D08BCC8466FF30C35C9FE1A612DED643538C22BF2D121F05 +FEDE386E5F554CEA94E6F04C6984A46030EED8198E1BD6655158F4A52B0B7CF6 +0AE52299350AB52268DA0EC274296F8039386DF6413FC06D06144457E6C433EC +49DF9C5F5A30CCE109718634F2E148450BE0A3535977F3009F6533E268F9084C +03071DF54E0BCED1A7D4AD5FA2695DC03982BE6064A52A75C17955725D1EDCDE +4184D8395CFA91FAAAA2458D1B6505C703DE4800128BF9EA91CC214E61867A23 +65202DA3C9A1782FED243AC6995AA76EA7229E27B3B38895BC27A339398244DB +14D1D69402444608FACF8FC6FE709F2EAF2769B04437A1E6EBDFC6783A44BA05 +F810E179AA3C1D54F208919214424F3F3171AEA189E8B973340E516489F45EBF +B91D03A510D5022DB0BA8726073C388483D68B466A909FEAEF5DE111F636328F +3B121A23C6AD7BE58C604970952F2DE35C5B4B8852556C59C8151A4C59029C43 +ECB30141D0748EC3CC3F9F33BAF904A86D20C771C4488149D6DA989C03D9ADE8 +CA5628A984BF2F7B9578A06B177A44D824DFF9DDBB977E6251BC4BBDF2951E21 +7AD34002703BB976C2DD8CDC95FA53D880207F26BCFC82789745DA803DD0242B +FA369232379C4AB733B2A6F70E3DA29EE22C7BCD56108BEFB0060C6DCB50A16B +E8694DE9A114BB04A3BB5C004F9BBB01CEA952A672C15C7AAD6E87CC3C454E9D +06F996DDECC3E125BBA32F39E01609E7CDFD278A27511D6EC225401A6DECF2BA +5A4DF0487B87A5E6B3A9163B847068679AF34FCC291F14F4245EFCF31DE9C0DC +7291308253816224FC938D3B5FA077F220616D4574425959CBB4E0A0F1D80EE0 +D2CB9D4841160614AD10A413B4976A4117169E04D32164B3D311D99395706888 +241F80FDBB463C5BB9FDBAB1CA938F98F1B65EFEE23E42504E3629D68F7A6F78 +211CE4A077550AA1254F7841B21790F14B47EC67380AC6E18F5FA87EA47E9C87 +5EEF447A5CBA979D0F1A23595E11AF7494827D028BE9CB68E931E3B02DB8FE21 +F23BC1F084DE604B43A9AAF0F12DA6B945EBEA75341D2393C67FC123CF662DE9 +68A11E61C62A18B947077D68D056833803ADD4BC765C2720060469197C58EED6 +C4DAF07D473376A2135A2A3D2978099297A519F4D2295F21E3CDAFF0117481E8 +1CB03E01D6C932A44A674EFB92707E4791D6A3296AC587737C068821CCF69209 +FACAC062319208BF7FA643966317E102B306947D8068FEF15591B227ACA560E1 +1DA2FB5869305CCCD940FC64D9781F35DF55D1DE305242DFE17E749F0B96FBA7 +A0BCC035B7BDB0991F94F715415B09B3DCB4025892DF625F9388D1F08B1C6920 +4F3F6F2D70DF9C4AE3CB0444667C853C5F120FFFA8A9A659974E92734A463705 +48A7E62BBF70CF0E45280174C1D32CE977EA7B40ECBFD780C063AE67FB6DC1FB +B0ADC9B29460225A39A7FD5FF12A3154C8EFE20375ED4106C8303303CB9BD9DB +62367963B5C2B5B21B6ACD9269A5257A398BA07BE63C5D8F0825C3D78A3CDD00 +EE7667D8978F819936E360432C5FC022E99CC2768BB27B6DF31CFE6502CD34F3 +5063946A08F1BA5C2CE8EA9AD55BF49D2D96F41C84DD116099C79EBB3AFF2CF6 +20029DE233BD50EDD5660007B67F45D4363527570EB08146E74256B51513ED0D +7E5F7C63577E8589956CA7962E7505479D4CC9A05A953F63EC9833D48158489F +1DED6FE3D107EBAC35490AE9F005EADE97FE49FB07F2DE996C055419454F0D51 +BA55DBA4B6F3EB5490D517AB69A6AA50F2AD90707B5EA4228B74ED72CA7D534F +B390BC960B0A7C1AF6555FA5BB45AE867464DC13CFB9817DF771BEFD34DA9E2B +C9D840B40A121AA85F88E2976E120847CC18F6C81F6EC0F0B836294963A26ED3 +E7873D0E643968C30FA6492B6FDFEBC685A0A5F2131920AF6EA2BA9C9B0B2223 +F7C1C61F0D03CB05FBB25B14B6680260A0B9A33FBF7AB00129B0CE4C1544DDC3 +BC14969A0A337839A0F964DE7B6EEF173F5B29EB29733F77466585941A1F5F1D +3522FECB8BA325F39E0A6538A9CE35E768FFEB7B86EED633328B2F718AE45999 +15DE6E114CBB05C7DEBF42D04A4A3EA5E881EAAB51C41F579821542C867D84C5 +04ACC29A2AE9D72D931B4CD007654CA7D9634ABBF44C0E91F6D1162A876B0AFC +37A269A209F2A79583B87657BA9273AF35897F0E4297FD568154680AC2280A17 +D3E303FDC5A2BB00EC5FDCBD438723C16E0315FA5AAD2EA9E2EEFA83AEBF4EFD +88B98616FC613A07B9A40770776A8A21076F95E22DA972178FD3C16F96B38F02 +55799901E67483F02C32895F4DF3523D770F373305B4622A3DA717496EA7E211 +707EABB98B076A465356C52970A113EACA114DA4F8ADE9B8BD6F1F836778A7D4 +CB1710A7B06183C4923ECAFF807F2F1A871F7701F260E1EA5AC5CE1045E53996 +5BC19C646393F1996B21F3674426988FA5BD65FE0984CC303664EF9BB133C186 +EEE4D3C35A938F81501422AE76414552A05E917CB15B7E4F531E33C0CC21234C +6D6E0038476FA8D50B8033A4816F5F0F0791A6D2392A133E7E58AFD3C054DDDE +081E1BB0C75B1329FCA4384D1D8C055D909DDFB8D608652A29FD0D7677A419EC +34D296EEFFF2EBBE660C719AC4DB51BFF57F891D5F8566CBB32C4D1FEF4A4815 +AE11953608B6A6E27F239CFE40F705A3EDF9995A19D211C19974232D5732CC92 +21D3B13A9D9A1B2EE8F1EF939CBD88FE1C89E0F6F74D1EEC5A5627B309149A86 +2847232869871FBAB1F13845694335792D4F297AAF10E4459FA0697057CA9244 +43C9E84B0E40AEC89E4B5391A637E0D83AAD93E44FD388725F5755F0757E1F76 +3F61684632E01A151EEFB5366948D1B540799DEB2A733F2C8B402A691810A071 +E045CEBAADCD48C9D73D87E07643E790DDE1FF3046645EBD2839147784540851 +4BE9DD7A8313920AA09262AE90E598572BC776794BFA3DD1CEF3F8D87D8523BF +55FB5DA33E2E33DF3828AD100485721AF814EBF0A353A4DEDF3D2C6F56052C1C +A6884DA940039F2ACEE9F2844D376C53A4BFAC8CABF05D2AD85A8FC3A68CF53C +B68BDEDA7A0DC381D6162F684D5EAF44C2F52F6813D4F7C1EC873BED0ED0DC5C +129CBCBE89561F84EF73AFBCBF37A38293332D7A444F34F68815B8E17ACC121B +38D268216987B994E4C97F79CB025BFFED741F274E9D5DBC4A4BF7B91BBC9505 +8FA085D64E720F752D79684FE7EDB105DAD9D6384497815E0370BDEA559D7395 +E1F3C0E81D488E026AAF841B57E7548F408B851741A3E37DBACC7D509987744C +E675FD8E781E7FDFC523E48A13C6DF88CC593B9ECC40FF138647E40F220687B3 +59F8E2E0D51A2F30AE2332C2593570A4821D99185B9D23688D94C5AB8396F346 +733B36D6398315CBF044E5005A82815D67B2ACE67419E994B97FBB9CF1C26B07 +EFE03E38B9F5F24AEFEF4A2008418892101FFADA6EF06A100664D8F388B72E8C +30EE94F9A769D962C76442935FDD6312D001582A21C2DFFF7B8B11D55B28D113 +B98727B1C485DC9959CC5CB0F07A4640D7024EAECF335B22F907FD1E969CEC0A +785CE260AA8B9D1104CFF3859D9255C00A77995AA8005065B6DA3DABACD56108 +452B517990C8FADDB70B20A136FF47FE428A7D67FF41CBC8425B45A8E30DEBF9 +E64AC7BF133CCE6FC1BC0F6D1FBB0C2515C1DF2D472ACB2A42017BB35FEEC968 +894F1B4166DC8A23E99108664D86D921B30AB994A70AC291F77DEC511B1FBD6B +45D9CECCDD32000D82FCF1FA75B9578C33F50ED94823C2FBFD33085F971791CA +40BF66EDDBA24554FE99B2F02249F00B8D6EC74A26CB8557FA663ED522A5A42C +65DC855C2BBA8BD7B7043E1C9965E04297E9970C76CC0707611FC6ECF103B8C9 +70372BDD73D9135DEAF52E80B5C73A39A6A52698E2359C00A6B600EC5CA1338E +A8BAF91B6ABF307EBA71A5662503D254D68411F1A96B5E762E6FE75692D21DED +08118F7F8E2867F818921FE2A10EE3BA25B707086C93C14A752961EFBB2B8C64 +65529E24CB3AAE449F63572A97160B6A942E277BAA82250C4018901FB86FFE98 +CA1BCAE75B306DBE2DE8FD396CF82CADFD2A8EDB9B686207A3FBF4E53BE1B823 +34C4D916ED2BD1073B25A562C705E0027A59D69EC8AC64E68649836BCBC8343E +DBEF37D4FC202E06A021E2C2550532AF82BCEAABB88A00C53C7F0F9DA6E9381C +D80F2D57B4B60B4685AD6C0C2A3A9DF2245B296F20730798C32AD4F2A2F7CBDE +5AC918F90C7EF9C186A34BEA17308DAE2DAF6BA716695AE4C85CC379D696D945 +FA48F2C681F444666A33BDCD48331292F86C8AC1239AC7C9DD282AEEBE502604 +AA5996885D68A4448BF6E926DD5A36C865B456A2226F6F120180C43A28A48F46 +71BEDFE3BC3AB3EDF325B265093996C4D7269A82AA923B1FE8DFB925BB3ED613 +6FDCE863EDAD90B171CEA83A87717143B6CA181EAFE46C4AE9F7BF4E0743E4A8 +0631FFAD194B78B24240A032F3CA5A5472A4E9C6A23E10A3A0565E9B7F8D1A2A +3148D05335533D156FC52950BD2BC6DA91F2D95E4C440847A6606651EAC4C7C1 +FF63F2D3EEA189085A032D9CF72B3120418DEAAF11F0ECAB64F7784B2AB0913B +E56383E7B9B70C41BB479BC36CFEC7ADA6CE67F4A28A50DFD0A69F615D5EF2AC +7D3F5CA3B43F1D4A19216917722E1E53BCA3D4169C390EE8FD55842EA2C639EF +280F97DDE120895CE226BB9AD12098CE9F70DD3AB52D62F1CB2360D2613E808E +032B2DD16D8D5A4A0571145BD5E8273A0A35CB32D7B3824A61528C76164BE944 +147073DA37FEBAB102D0F1F2A1669AD9626C6E6396F2574F9E3A2369BF327733 +2FC8D58C7DDD0A7DFC6D125389BE4FADC7886F3F9F01DB3DE5DCB7C07D4B95F6 +0E1E5381AE62A0873CADFF1871D34A79D6DA883D15C2519259AB444703635898 +0738E3EA96E47A0A3C9F18F33A5E6B143FDFD26248F7BE5230FCE42A1BF41B0A +EECD8FF8E98A4B527F4A2E20608DBA82C75F88E52A50BE6D44AADAD6F1A7C599 +F9E22AE54C45AC17D4A22E88E063268AC226A8C56C8853F5DD421F5705FE0A4D +38D3160AF85978C947CFE0B73FA8B565F2AE8EA9905F2E1CDB4B6D0E9C11F455 +AE02273309E462F812B56A7273471642408C61E384EBAA0B6F1E1A5EA99890BB +D96B77166DEA7FCA102D92BBF06306F20C230032E5898245F3FB140C8503CC52 +60F8F349EAF7D25A3DFB85BF940E63AC82702FE8CAE5B89114D2FCC0A4A04E80 +38F34203AC08D96D9C06B656DF48BA3ECAEC92DC77F7291DEA3BBC7A0DEB34A3 +0D950D80EECEBD97B9B03143A3E28FC1A8B0C90CC17680CF74A389CD4959F1C1 +BF4FD5413F53D7B138C998C2EC950C0706943B0D29450D06E0163047098C8A6A +D7099957C42B4AD136869E6733BF10F713DEA2FB82FB0D1C3EAC501DBA2FA1C1 +16898D977C31C9865EC7F84A32BA2B261E5235F879CBB5C89A003A084E649678 +9D96607335689D31A6A2C584EB4E254E4D1E68D14C2CF64D6EBCD60E00F2BFF8 +78B2BEB54D817225B2C4DEB38EA95C505215400FA3F3C504A5C0A06AA9B1D4DF +E3DB71D5DCD12F8DEEC8490A6660C8450563B8EB37692B5F2A0C23B0E0D83E93 +BF9AC290C4B5185A8A25AEE6117EF0E73926DFB4910DC288CCDE8C5AEBA9CE59 +9249FC3FADC7E65F0A7403B7D87EA2D1F716E28AB5FE50B309A251CD26D8AE9E +B88994B4BEE92BC0675D93E1DF95778EC16A7C2044878B7FD9AA12DAB04A36D4 +CA4BB44B3754580F62A6058532B20C71D79BD3E1F26CF72B5D59CF3E09E360B3 +8B734B073D7679ACA54DEB8B3AC4414EE6C4A89221D5CAE95A07933069CF3519 +32BDD4EAD871610DD53821723FF1FF111D8E7FE75BE43966541FD43F12FF6C39 +AE98DC831809DD6F31DF88B35A1771B9B9088E804020F6467C2754A3E107ABE8 +56B23F934D6553A9FACF2DF1842CEA8F2C332D90DF6A4E7BA24000615986547C +21CCBAFFE73A7A26CA02B6C739003CF2D5215156449BB3B21B220DA460749393 +7E3B1C06A75B065407098BF4A31116C581454D139970E8CD80EE3137CA4DDA9C +80FAF0408756CD533B6B98A588210D8BB18E65EEEEC24D439CFB70411F0FBCA8 +D2274A3E44E926597DD473AD960B8555F7812FEC429D13AC39BCE9C4971E1760 +3879026CE0EE2E247155CC83981829602F9675887E16AF1BD4E90798CC26B4BF +01563E938634B3E8E0B4BB573AA0DE6F88D043952B9AAD2D6142A29EC87CA60E +7D8EE5CBCBCE359CAEF888F4FB74F7D8CF8FB344E9B9AF2A2968B81C23C28343 +7C5CFF58150CE6E192DD86056766677CD72A500995C9D6ECB99A3E007F007D7D +2F747698989112DECD3E4E065FE363ABE8AC16407D41236D8BE271BF538832E0 +2DB056F0A43882675EAE6748EDCF075F7245B152307E2A545342D0757722482D +F70EBEBCDDD7B4A55556917E3CEE954FAEC5A1893377B62921F8FEC13FCC5977 +91DE2907BEADC05713BDE68C4FC17ABC5AF421D29CAA33770FB9CB1A41971DA7 +19D3E5CCFF60F2EEBC91F61D42EF19179EAA35CDD768E5B799A9CD35C4A44189 +905DDB9878E31EFBB4AD310B0CD1079FBBF0D1D43DF170EDEA5E7487E9079770 +6F6313314761201D5086B954A4D7C5EFB3C18202D7A2491E1EEED2969204E8CF +317A9DC45EBAE21444C664A83066D15C09AD161964631E387FDA3BFB75F82D9F +F83F32438A5E1AE1B93EB82A4AD67271933BD6D82565F46DC7F7E87199A9B777 +C869C3913A82550BBCA535B88E30D6C74392F2614F6B2AFB754E441AE235DD20 +E5C6CB20AA857F29E611DA9AA8F01DD449034750FD287F01E7898BCD8313DE08 +FBA363691CB3779B2FA3833A4290A2B05B11293E7AC6F148419BE63BF1964EE4 +CFAC7C3E782A1F6CFD9D540E6CF732B1423730745C5916742D23A4433B928C07 +3A1C7EB92154520387B59DFE36691F2066FD2114FBE8DA298BBAF1AAEA3671B3 +F018055DF8FB9DAC318EE729A009BE2065CCE3F6E89D3B0C54ABE5CE66E914B2 +01112CC7D23B7D32F42CA430B396B131FF952DB8EA8399974E659422A2B20F8F +A36FD62FB4A3EF7ED88D3196CD3BC2902E18BC23904DAD080812D22E0182A111 +7C451F2E699AFCFDB3FC5169B450DB272C15F07425BE15096BF2E5F84D5C6594 +A5AE02F2452142FA0E8B10A4D7BA40C7A17DB2E4DEA1E487FE13B3F11A240B08 +25BCFFBE935EECA88585F625B3EF5AC1633F5BCB914809054D2A91D9FF33ADDD +8C2C1E16A067E9E877BB55FC24A23A4F072994E05D7FABE0C96F540242CA11A8 +F9BF0BA5353711B9AC20E7FB1CC8257DB334E686872CDDBAB3621399D9D80D38 +C9CE4FA35C3DFBD7E35939F8D1E152A17628DAC7D8CE4F0C7FA5F6ED0209585A +486B55779BAF5D7DA969D64097B70C04E48E88A5B37D9744CAE562E7DB44C7D9 +C18382D2CEB3E18E8D13154687F3C48E264E86E552D8AD9B26E2BA59EAF53CE1 +9DEB35B38B1836A9777973F45940F7451B0140649FFDF7A139B97FE350FD8930 +573A3075C69AA77A3BD6CE95DE87A3E6D25BFD27E8D0E719EE6A1E4E0A2B3F03 +B49DC4B4B118BE0CC01B838F758EB7695C01134216A43A0061D1347D939128C7 +DEFC8E77E12F583082E52259D015B6C484DBF304275769565A4043F57741E8B8 +FB539C1FBE5DA3CBECF75573CA6B1B73FB55C59CA1D1862DA94E78545E7EC442 +3E71BBC472AA58622161266D014AA648FDCA0B2CC820797C972F8C49B9F0D60D +61011F5EAE816192D1B46525FFD4FEBFCA202A5F299704882D9465DDE13C111D +BCFB333E9C4342C6853564F5541AD5D032D2F4A6D6799D351EE94A03D59C862C +0C8F89115B433367BA0496E31763991C388070050195EE5CB8A48DD6A897927A +EF7DBBE723EC9DF21BE34558B9359D2A157548701DD41F85D50B807CCE212443 +2E1559A35D4F6354D09382342761B912CAB01973A01B27362CC88B0CF8068DB0 +9FB3CB57DE4F41E9FA491D86DB25D4ABFD43FE9257E7987F74EC25D7554C81AD +2C03240D43BD35485F190BEA535DAB2DFB4C46811C158C55899CD939BD8D86C3 +249793FDB058CB1A08FE4D7EA058E9EFC499C7B6B8200BFDAF348194FE31A7D6 +3A25E37CAA086ACB1274C501ABD2E8413C631F4A4E0E7A89C71F31AA8308316B +10E95153432034738B17B13628926A5D3EF2E3B0C4E66C907E8EE06FB6026CE1 +D5A6C06724E375C5A9AB0F8FDA51A5DEA40EECF446E96A23AD805C411392AE90 +07415F9CF5164B0D870DA8551BDDFE1C7ACF66DDFCF5CD5C885C608F9AE87ED3 +8376AEE904EEFCC0A11D78E8E0FC77C30AFB4C3F31A37333025F7F0E0A367BA1 +2D286CAFC428E84F63419F780C08264041161AC8709C4771C8C365BADD96BF62 +2AB25A322F48E04970546C6DDFCEDFB42673B6B88FAA60D19CF86F04ED4069DF +535232AEFB85703EB6AE984FF2F8F1113AE08EA4FFD2681B0F8564C411E6E3E6 +222AB81C89A145142125129CCE9A47CE8F2691E5FCD5C1B1EAC5B7C9F8826ADD +75A7BCA447BB38E9290426A79A7FB93CFCBC8B1D53A7281260DCF4C90E101D35 +ECA0E5B0DF00268D899419BD8FA490733F80858A7CA2BDFD40128A81B1A35217 +D80AD2D065C75DB7CC3819FA33D5F3FD0D27EAE7B23A1795552FC1162CF981A5 +6D53A285799070AE45EC14BDA455BD987165955451C07A19352631A1908373B4 +8A8BA52F80D4E5F13F93652791F7163C71C59CCA4B62D5224B38B003488513C6 +8C93AE7CE3B4636DDE0D008B3194A9C4AEC78C0800B08E46C1EF0DE9881E6BF1 +415FCECD02C22B1AA4D11B30AA66730E8FA833C4CCE8ED814E077EB71AD4B835 +F6CB797109700852450D7E9FBF3102AA56EF817267EE1AA7EC1A6A573BF08570 +380E2B3921FF9A6BC5AE23362BE1C6ABDF998AFB767AE1CAF9388B88A110C79E +034A92F696D49BB5EAA1E6B0BCF07EEDC09D8CFB378FEBD7B83232F4F0AAAB40 +89D834886CC59BDE5A205A325FEB86729317D1B50C856302625054DCB22083E2 +C09F24D2703D9B5832B073C3EEDBF800759917E4CB6F53F234C8E180212A1463 +9C64F47805EA79E0563BA9EF48E4B7C73BF0BF4983D8F9B6A71C8E977D57155D +3A48F9150A7BECEFDA07D7AEC66A5BE014237E91ABAE9DC0DE0C7A967B33AB83 +73223B33F7AF8B139B3AB187D4FBC8A7AD8FC07CD5DEE0A9E528D8B58FBDC618 +57D8076FFFAC60529EB33BD2AC9762834C4172D626325F8D419C0B19B8DE53BC +C8CE92A58053AFE26ECAA764978E7309727C518917E8321106385E70FF8903E0 +1F760625C26B174A192E2D83C7FEE0ED596E3DD50098A9EAE1C6CDF9522CB6F6 +3F27E9EF5854B2398821E0773F45812E8750DEB95C38A50023B7E9DE639760A6 +1DAB5D3F80AD1A965D3764FD17ADF258C928A2381951B60E1EA76FC8DF583963 +4B0B44E0A310F7D14ADF64A245BC3C2226F2A8C5AE02CBBABB28ADD50265CC61 +0852E653F072F69E0DF0905A8777480B3546C09A95B695BEF79565698E27EFA2 +17B00C30A1E50D8DC3A03077FC7F4B2B390910BC60BCE5C8D25EAF3C61AF2B70 +7EC02EAF0316C0E14D71B67B568D00CA92F6DBBD85ACF8D776B34B516D8A472A +F193FC6584CDF4466B3A77ECE231E2BBFB333A7F304F075D25B432103264E69F +83726C57559AD27B77433B4BC55855FD9753889533B79E633842690D020FE86B +A5929133FBF5A7B87BF1E3F6C4136B8023EDDB373DB2EF080182C8441A993E85 +78E764B96F40DE9A6F87F2FD0607548860F238384B160E4232332E07F52818D7 +43789E4CEBBF087C5ADC9A015B98042B2B2F8F69B5BBC78C95551C185B73C27F +EF4E6F40506C79E28CDF0C870911FB271CEF1D903D2538B3C29A8C3AAAB19CAA + +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 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 +FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671C636C0D2E2CE +D8649DBDBE8A697B6746DC731A91B8D0EB5A738C70E467C0CCE8051B8D0FAEDB +16A277575E9AF40B3F2CD2E528C6A8121E0BAB76D2AA4844EC6D435C068019EA +E1A61E204568F5F96B669B9720D2BEAC18810BCB07995F3AAC92FC49E6C8DCC0 +BBEDA5AFB0F58F7A0980130FCC5BF0ABCB5DB7D1CBC26DDD74A856D4E1679719 +5E80E567B56E43FA24494B908C6CFCDACBF7203DF96953E71E66F5EBADEA32D5 +0F35E49CD70429D5843A1158BF4C69057CF8BA43FC73A2A0D7B97F2BCEBA4281 +292DBC362571A6E3026C5D39C67C56F0A996E87929D62C165B0664C052113829 +B903754CC74A4E06A9A2F7E2FCC6F5B4BDE5CC9677B98362D731424E3905B8F1 +203212ED1EF2F5B9304B1C72674DFB75825CD777C265DD47BE521B46B9B08DEB +E68DA4D3BBD0D36D2558FC85FCCF89CE81E653BB8F1303D626F4DC76E85C1DD5 +C2767CB24E4A1BAAFF97186BCD08B8EB133DEE8EF02A1351DEDEE652E04BC6FC +25F9C78FDDF0D46D7B8511316619484D90C078BDDBAE75FB1E374AF96F8781C9 +6AB062C3B2F438E82AD90D455163EC1CDB961008DF06F8B7D188AAD13A8EF9A8 +FC4321B04A2EED0E036F81381304E2EBB5C9E5D10A28F73E906A3EED9FCC6634 +143CCA16428FD4CF2FB4A647659FF37B9092894F35239C0F282C9ACB2F1B58B3 +3CE9BCBA609B2738A68CCA19788C8DA40EE9327666BCCC8454148482BEC38ED5 +5F8F493D348FF96EAF8D7B815E24EEDE103D8F5A408D2A763EE6E5A4FCF6FCA3 +EC727794EE07356102A5F285201C085911A3C69164EBF2F9F85333A85BB3AF24 +4D1C505E4566728F218397B6C28C55ED9E89E273868E607A86FA3A1E474138B3 +1C3388B1386EB0C9ED48AF81D6F8C531CE2CFCFB140AACA9A454DF56B4761592 +ED64E92C716195AC083FE20E34D82D2B485A892019C8570574F73FD50E34201E +4ED48F3115D8A4549081B646F5D5EB199AB0A6DE9A726826DC6DF57E5BD25782 +6AE41F632ABD892A11BEBB2688F4AF13F69E265A9D19A0BB0CD1A551B830AE12 +43CBD3B63E8ECB56D2571377906D8E2FDDBA145F7DC03E1CC886611A004DB730 +9CB365C8094E0A933FD700B24A107097D8F406F69A74BB9350881102A0A8B1E7 +CF2C750F8EBE2B1D5EE1673026CA0AED34122460A745B702D212D659D3254465 +C785A5F7FBFA09D533C4BD330A8A6237133BC72F59FE37FB76990C81C25CD70D +DAF70C4D170B03DF71D35400338B727EF42D73980E3843809841F4C2FAE102A1 +8ED8E8A1C85638F350FBB1BA1100A102F957172D76C00650CCD42FC0B3750E49 +BE3E46C449043515647BB65C6D3FA952A6BA1721860355E0007283E6A9FDEB10 +F18BFF0F34C0F3941CC3839E598B2D8F2C75CC7784E9FB3C33BE312976CE2BFE +F30229BEED1571DA9B6C896A02E64BD376FD9CEC8195B6C43A3292F171E9EB99 +39D9208529761E0669C4ECFF19EB710AF73F117F0509AB594083CD61F27EC6DB +72B5D55F7CB0E389CF6D721649263F1B4160F1C1FCCA8119179518720F5BF614 +01E8A29E5B8131BC4BE6B84488F6A0E96BDFEDE3CF92D65BF31D29AD50132EC0 +5ECB43077F5956A05E78638F84A252DD37B188BC6146EB9EE605C97021E6EAAE +5243720E4CCBFBD8D5869315A833FF70153C0F037AEE5213EBD9E4FDD02676F8 +1DA373549D550994B47532ACD72CFE200B8849D0E0B645B6EF0F967ADB58D849 +893B39D218E8BA2C6B55351B251733F4E0FEB66FA5937424D1E96CCEBA118D4A +44D369AD3F534C118E86A203E7E9F78687551E346D290812B0992DBC24D189EE +2CAB0E1B88A5A4D245EFBA40735B73DF82344481EA20549434C2A560DAE8D06C +A72E6C05AE5D6791A7370151F9BD37DC2C10EBD1FCA765AB75207C66D0D9480D +F019351F63440D46F829E0690CC58574ABF7A5A2F05B449067DC15836A5D824D +DE6EA54E3AE1E8F817ADEC548F52EBFC8B4BB80CACF664B3D4369F76143EC455 +4F12FA19A399EB7175D02168EB8225A66A5A9421CF2C5557946FCFEF43D9E6A7 +B7503A014FC9968054AD95FCE95046C85228 +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 (README.dvi) +@start /Fa 152[42 42 102[{}2 83.022 /CMSY10 rf /Fb 133[44 +1[44 1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 +44 44 44 44 44 44 10[44 6[44 9[44 6[44 44 44 44 44 10[44 +1[44 2[44 44 44 44 2[44 2[44 13[44 44 18[{}42 83.022 +/CMTT10 rf /Fc 134[59 3[62 44 44 46 2[56 62 93 31 1[34 +31 62 56 1[51 62 50 62 54 10[85 5[77 1[88 4[42 20[56 +56 56 56 2[31 27[56 5[62 12[{}29 99.6264 /CMBX12 rf /Fd +214[28 28 40[{}2 83.022 /LASY10 rf /Fe 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 11[27 9[48 23[53 12[{}39 83.022 /CMBX10 rf /Ff 193[65 +1[65 60[{}2 83.022 /CMMI10 rf /Fg 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 5[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[{}68 83.022 /CMR10 rf /Fh 138[75 52 53 55 1[75 +67 75 112 37 2[37 75 2[61 75 60 75 65 13[75 2[92 2[128 +3[50 5[97 1[102 11[67 67 67 67 67 3[45 25[67 6[75 12[{}30 +119.552 /CMBX12 rf /Fi 140[38 38 4[81 11[49 41[49 4[49 +49 49 48[{}8 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(11)32 b(mars)h(2007)515 1647 y Fh(1)134 b(Compatibilit)m +(\023)-64 b(e)639 1829 y Fg(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 1929 y(MySQL\()p +Ff(>)p Fg(=4\))26 b(et)i(PHP)f(\()p Ff(>)p Fg(=4\).)515 +2144 y Fe(PHP)83 b Fg(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 2243 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 2243 25 4 v 28 w(globals,)515 +2343 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 2443 +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 2542 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 Fg(E)p 2441 2542 V 30 w(NOTICE)g Fd(\))-17 b(\))30 +b Fg(PHP)g(qui)g(sur-)515 2642 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 2742 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 2841 y(l'upload)e(de)h(\014c)n(hiers.)f(Le)g +(dossier)g Fd(\()-17 b(\()20 b Fg(\014c)n(hiers)g Fd(\))-17 +b(\))25 b Fg(doit)e(^)-39 b(etre)25 b(accessible)g(en)e(\023)-39 +b(ecriture)24 b(par)h(les)515 2941 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 3156 +y Fe(MySQL)83 b Fg(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 3255 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 +3355 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 3455 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.2.)515 3728 y Fh(2)134 b(S)m(\023)-64 +b(ecurit)m(\023)g(e)639 3910 y Fg(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 4010 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 4110 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 +4209 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 4309 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 +4408 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 4508 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 4608 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 4707 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 4807 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 +4907 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 +5006 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) +1926 5255 y(1)p eop end +%%Page: 2 2 +TeXDict begin 2 1 bop 515 523 a Fg(serv)n(eur)24 b(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 623 +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 +897 y Fh(3)134 b(Installation)515 1096 y Fc(3.1)112 b(P)m(aram)n(\022) +-54 b(etres)38 b(de)g(con\014guration)639 1249 y Fg(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 1349 +y(dossier)f Fd(\()-17 b(\()24 b Fg(include)f Fd(\))-17 +b(\))p Fg(.)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 +1448 y(but)c(de)g(servir)e(de)i(mo)r(d)n(\022)-39 b(ele.)515 +1591 y Fe(connect.inc.php)31 b(:)41 b Fg(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 1690 y(l'utilisateur)d(SQL)f(et)h(de)g(la)f(base)g +(que)g(l'application)g(utilisera.)515 1819 y Fe(con\014g.inc.php)k(:)41 +b Fg(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 1918 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 2018 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 2117 +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 2217 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 2374 y Fe($adminMail)k(:)41 +b Fg(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 2473 +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 2602 y Fe($automatedMail)k +(:)41 b Fg(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 2701 y(tomatiquemen)n(t)e(par)g(l'application.)722 +2830 y Fe(A)m(UTH)33 b(:)41 b Fg(P)n(aram)n(\022)-39 +b(etres)24 b(d'authen)n(ti\014cation)905 2986 y Fe(POP)32 +b(:)41 b Fg(P)n(aram)n(\022)-39 b(etres)24 b(p)r(our)j(les)h(serv)n +(eurs)d(mail)j(POP)1060 3143 y Fe(SER)-11 b(VERS)31 b(:)41 +b Fg(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 +3243 y(de)d(domaine)f(du)h(fournisseur)e(de)i(service)f(de)g(courriel)f +(\()i(partie)f(sui-)1201 3342 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 3442 y(asso)r(ciatif)g(de)h(la)f(forme)g +(suiv)-5 b(an)n(te)1201 3599 y Fe(sub)s(domain)31 b(:)41 +b Fg(adresse)23 b(complete)i(du)g(serv)n(eur)e(o\013ran)n(t)g(le)i +(service)1284 3699 y(POP)1201 3827 y Fe(p)s(ort)32 b(:)41 +b Fg(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 3926 +y(service)27 b(POP)1201 4055 y Fe(username)p 1604 4055 +29 4 v 34 w(is)p 1703 4055 V 34 w(full)p 1873 4055 V +33 w(mail)k(:)41 b Fg(Bo)r(ol)n(\023)-39 b(een)38 b(\(true)j(ou)e +(false\))h(indican)n(t)1284 4154 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 +4254 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 +4353 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 4453 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 4610 y Fe(b)m(ypass)p +1186 4610 V 35 w(if)p 1277 4610 V 34 w(lo)s(cal)k(:)41 +b Fg(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 4710 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 4866 y Fe(CSS)32 b(:)41 b Fg(P)n(aram)n(\022) +-39 b(etres)24 b(des)k(st)n(yles)e(de)i(pages)1926 5255 +y(2)p eop end +%%Page: 3 3 +TeXDict begin 3 2 bop 905 523 a Fe(CHOOSER)p 1387 523 +29 4 v 33 w(LIST)33 b(:)41 b Fg(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 623 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 722 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 822 y(c)n(hemin,)d(ni)g(extension.) +722 972 y Fe(MAIL)33 b(:)905 1122 y(TEMPLA)-8 b(TES)33 +b(:)41 b Fg(Ce)28 b(tableau)h(con)n(tien)n(t)g(des)f(tableaux)h(asso)r +(ciatifs)e(don)n(t)1060 1221 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 1321 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 1471 y Fe(caption)32 b(:)41 b Fg(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 1595 y Fe(tpl)p 1183 1595 +V 34 w(\014le)k(:)41 b Fg(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 1695 +y(mo)r(d)n(\022)-39 b(ele.)722 1845 y Fe(SUPER)m(USERS)32 +b(:)41 b Fg(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 1945 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 2069 y Fe(UPLO)m(AD)34 b(:)41 b Fg(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 2219 y Fe(accepted)p +1272 2219 V 35 w(\014les)31 b(:)41 b Fg(T)-7 b(ableau)27 +b(des)h(extensions)e(qui)i(son)n(t)f(autoris)n(\023)-39 +b(ees.)515 2450 y Fc(3.2)112 b(Initialisation)39 b(de)e(la)h(base)639 +2603 y Fg(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 Fg(install)g Fd(\))-17 +b(\))p Fg(.)28 b(V)-7 b(ous)28 b(uti-)515 2703 y(liserez)d +(principalemen)n(t)h(le)g(\014c)n(hier)g Fd(\()-17 b(\()21 +b Fg(RAZBase.php)f Fd(\))-17 b(\))p Fg(.)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 2802 +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 2902 +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 3002 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 3101 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 3201 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 Fg(base.sql)f Fd(\))-17 b(\))25 b Fg(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 +3300 y(se)i(trouv)n(e)g(dans)g(le)g(\014c)n(hier)g Fd(\()-17 +b(\()22 b Fg(jeu)p 1573 3300 25 4 v 31 w(essai.sql)e +Fd(\))-17 b(\))p Fg(.)515 3573 y Fh(4)134 b(Main)l(tenance)515 +3772 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 3925 y Fg(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 +4025 y(par)31 b(un)i Fd(\()-17 b(\()23 b Fg(sup)r(er-utilisateur)g +Fd(\))-17 b(\))o Fg(,)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 +4124 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.1.)515 4355 y Fc(4.2)112 +b(Netto)m(y)m(age)37 b(de)h(la)g(base)650 4487 y Fg(\022)639 +4508 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 4608 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 4707 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 4807 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 4907 +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 5006 y(lation)h(ou)g(de)h(programmation)d +(est)j(toujours)f(p)r(ossible.)13 b(.)h(.)1926 5255 y(3)p +eop end +%%Page: 4 4 +TeXDict begin 4 3 bop 515 523 a 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 +705 y Fg(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 805 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 904 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 1004 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 1103 y Fd(\()-17 b(\()22 +b Fg(auth)p 747 1103 25 4 v 29 w(dialog.php)g Fd(\))-17 +b(\))o Fg(.)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 +1203 y(taire)f(ci-dessous.)722 1485 y Fb(/****************)o(**)o(***)o +(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o +(***)o(**)o(**)o(***)o(*)722 1585 y(**)43 b(Vous)f(pouvez)f(ajouter)g +(d'autres)f(mode)i(d'authentificati)o(on)37 b(ici)42 +b(!)i(**)722 1685 y(*****************)o(**)o(***)o(**)o(***)o(**)o(**)o +(***)o(**)o(***)o(**)o(**)o(***)o(**)o(***)o(**)o(***)o(**)o(**)o(***)o +(/)515 1867 y Fg(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 1967 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 2066 y(suiv)-5 b(an)n(te)27 b(:)722 2209 y Fb(case)42 +b('')f(:)722 2309 y(/*)i +(Eventuellement)38 b(du)43 b(code)f(pr\023)-44 b(el\023)g(eminaire)38 +b(*/)722 2408 y($auth)p 947 2408 V 30 w(is)p 1065 2408 +V 30 w(ok=)o(;)722 +2508 y(if)43 b(\()g(!)g($auth)p 1252 2508 V 30 w(is)p +1370 2508 V 30 w(ok)g(\))722 2607 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 +2707 y($errmsg=;)722 2807 +y Fa(g)722 2906 y Fb(break;)515 3049 y Fg(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 +3148 y(de)k(le)g(coller)e(dans)i Fd(\()-17 b(\()p Fg(auth)p +1348 3148 25 4 v 29 w(dialog.inc.php)p Fd(\))g(\))29 +b Fg(p)r(our)h(p)r(ouv)n(oir)e(utiliser)i(un)g(nouv)n(eau)f(mo)r(de)515 +3248 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 3348 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 Ff(<)p Fg(nom)p 3049 +3348 V 29 w(auth)p Ff(>)g Fg(\022)-42 b(a)515 3447 y(l')n(\023)j(en)n +(um)n(\023)g(eration)20 b(du)j(c)n(hamp)f Fd(\()-17 b(\()p +Fg(metho)r(deAuth)p Fd(\))g(\))23 b Fg(de)g(la)f(table)h +Fd(\()-17 b(\()p Fg(P)n(ersonne)p Fd(\))g(\))n Fg(,)22 +b(et)h(d'autre)g(part)515 3547 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 +3647 y Fd(\()-17 b(\()o Fg(pro\014l.php)p Fd(\))g(\))p +Fg(.)1926 5255 y(4)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/beta_old1/doc/README.txt b/beta_old1/doc/README.txt new file mode 100644 index 0000000..b82577d --- /dev/null +++ b/beta_old1/doc/README.txt @@ -0,0 +1,232 @@ + + +AWOR - Fichier Lisez-moi de l'administrateur + +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 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.2 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". + +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". -- cgit v1.2.3