From deda00c9556cff413ede9831f256d109dd1303ac Mon Sep 17 00:00:00 2001 From: yaso-meth Date: Wed, 19 Jun 2024 13:35:50 +0200 Subject: [PATCH] AppUser object created. Add patient page with API call added nd completed --- .../lib/components/mybutton.dart | 31 ++- Frontend/patient_manager/lib/main.dart | 2 +- .../patient_manager/lib/objects/AppUser.dart | 15 ++ Frontend/patient_manager/lib/pages/home.dart | 2 +- .../patient_manager/lib/pages/patientAdd.dart | 250 ++++++++++++++++++ .../lib/pages/patientManager.dart | 13 +- .../lib/pages/patientView.dart | 40 +-- .../patient_manager/lib/pages/signin.dart | 18 +- .../lib/router/routeGenerator.dart | 10 + database/#ib_16384_0.dblwr | Bin 196608 -> 196608 bytes database/#innodb_redo/#ib_redo10 | Bin 3276800 -> 3276800 bytes database/binlog.000014 | Bin 158 -> 3539 bytes database/ibdata1 | Bin 12582912 -> 12582912 bytes database/mysql.ibd | Bin 32505856 -> 32505856 bytes database/patient_manager/patients.ibd | Bin 131072 -> 131072 bytes database/undo_001 | Bin 16777216 -> 16777216 bytes database/undo_002 | Bin 16777216 -> 16777216 bytes 17 files changed, 324 insertions(+), 57 deletions(-) create mode 100644 Frontend/patient_manager/lib/objects/AppUser.dart create mode 100644 Frontend/patient_manager/lib/pages/patientAdd.dart diff --git a/Frontend/patient_manager/lib/components/mybutton.dart b/Frontend/patient_manager/lib/components/mybutton.dart index 5d20039f..e7753b24 100644 --- a/Frontend/patient_manager/lib/components/mybutton.dart +++ b/Frontend/patient_manager/lib/components/mybutton.dart @@ -8,23 +8,22 @@ class MyButton extends StatelessWidget { @override Widget build(BuildContext context) { - return GestureDetector( - onTap: onTap, - child: Container( - padding: const EdgeInsets.all(25), - margin: const EdgeInsets.symmetric(horizontal: 25), - decoration: BoxDecoration( - color: Colors.blueAccent, - borderRadius: BorderRadius.circular(10), + return Padding( + padding: const EdgeInsets.all(25.0), + child: ElevatedButton( + onPressed: onTap, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.blueAccent, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), ), - child: Center( - child: Text( - buttonText, - style: const TextStyle( - fontWeight: FontWeight.bold, - fontSize: 20, - color: Colors.white, - ), + child: Text( + buttonText, + style: const TextStyle( + //fontWeight: FontWeight.bold, + fontSize: 20, + color: Colors.white, ), ), ), diff --git a/Frontend/patient_manager/lib/main.dart b/Frontend/patient_manager/lib/main.dart index 655e95f5..fde87ca6 100644 --- a/Frontend/patient_manager/lib/main.dart +++ b/Frontend/patient_manager/lib/main.dart @@ -20,7 +20,7 @@ class MzanziInnovationHub extends StatelessWidget { @override Widget build(BuildContext context) { return const MaterialApp( - title: 'Mzanzi Innovation Hub', + title: 'Mzansi Innovation Hub', themeMode: ThemeMode.system, debugShowCheckedModeBanner: false, initialRoute: '/', diff --git a/Frontend/patient_manager/lib/objects/AppUser.dart b/Frontend/patient_manager/lib/objects/AppUser.dart new file mode 100644 index 00000000..e48058b0 --- /dev/null +++ b/Frontend/patient_manager/lib/objects/AppUser.dart @@ -0,0 +1,15 @@ +class AppUser { + final int idusers; + final String email; + final int docOffice_id; + + const AppUser( + this.idusers, + this.email, + this.docOffice_id, + ); + + factory AppUser.fromJson(dynamic json) { + return AppUser(json['idusers'], json['email'], json['docOffice_id']); + } +} diff --git a/Frontend/patient_manager/lib/pages/home.dart b/Frontend/patient_manager/lib/pages/home.dart index a5dcd873..a1b5f2cf 100644 --- a/Frontend/patient_manager/lib/pages/home.dart +++ b/Frontend/patient_manager/lib/pages/home.dart @@ -37,7 +37,7 @@ class _HomeState extends State { builder: (contexts, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return Scaffold( - appBar: const MyAppBar(barTitle: "Mzanzi Innovation Hub"), + appBar: const MyAppBar(barTitle: "Mzansi Innovation Hub"), drawer: MyAppDrawer( drawerTitle: useremail, ), diff --git a/Frontend/patient_manager/lib/pages/patientAdd.dart b/Frontend/patient_manager/lib/pages/patientAdd.dart new file mode 100644 index 00000000..2c4a78f3 --- /dev/null +++ b/Frontend/patient_manager/lib/pages/patientAdd.dart @@ -0,0 +1,250 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:patient_manager/components/myTextInput.dart'; +import 'package:patient_manager/components/mybutton.dart'; +import '../components/myAppBar.dart'; +import 'package:http/http.dart' as http; +import '../objects/AppUser.dart'; + +class AddPatient extends StatefulWidget { + final String userEmail; + + const AddPatient({ + super.key, + required this.userEmail, + }); + + @override + State createState() => _AddPatientState(); +} + +class _AddPatientState extends State { + final idController = TextEditingController(); + final fnameController = TextEditingController(); + final lnameController = TextEditingController(); + final cellController = TextEditingController(); + final emailController = TextEditingController(); + final medNoController = TextEditingController(); + final medNameController = TextEditingController(); + final medSchemeController = TextEditingController(); + final addressController = TextEditingController(); + final docOfficeIdApiUrl = "http://localhost:80/docOffices/user/"; + final apiUrl = "http://localhost:80/patients/insert/"; + late int futureDocOfficeId; + + Future getOfficeIdByUser(String endpoint) async { + print("here1.1"); + final response = await http.get(Uri.parse(endpoint)); + print("here1.2"); + if (response.statusCode == 200) { + print("here1.3"); + String body = response.body; + print(body); + print("here1.4"); + var decodedData = jsonDecode(body); + print("here1.5"); + AppUser u = AppUser.fromJson(decodedData as Map); + print("here1.6"); + setState(() { + futureDocOfficeId = u.docOffice_id; + //print(futureDocOfficeId); + }); + } else { + throw Exception('failed to load patients'); + } + } + + Future addPatientAPICall() async { + print("here1"); + await getOfficeIdByUser(docOfficeIdApiUrl + widget.userEmail); + print(futureDocOfficeId.toString()); + print("here2"); + var response = await http.post( + Uri.parse(apiUrl), + headers: { + "Content-Type": "application/json; charset=UTF-8" + }, + body: jsonEncode({ + "id_no": idController.text, + "first_name": fnameController.text, + "last_name": lnameController.text, + "email": emailController.text, + "cell_no": cellController.text, + "medical_aid_name": medNameController.text, + "medical_aid_no": medNoController.text, + "medical_aid_scheme": medSchemeController.text, + "address": addressController.text, + "doc_office_id": futureDocOfficeId, + }), + ); + print("here3"); + if (response.statusCode == 201) { + Navigator.of(context) + .pushNamed('/patient-manager', arguments: widget.userEmail); + messagePopUp(fnameController.text + + " " + + lnameController.text + + " Successfully added"); + } else { + messagePopUp("error"); + } + } + + void messagePopUp(error) { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(error), + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: const MyAppBar(barTitle: "Add Patient"), + body: Padding( + padding: const EdgeInsets.all(15.0), + child: SingleChildScrollView( + child: Column( + children: [ + const Text( + "Personal Details", + textAlign: TextAlign.center, + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 25.0, + //color: Colors.blueAccent, + ), + ), + Row( + children: [ + Expanded( + child: MyTextField( + controller: idController, + hintText: "13 digit ID Number or Passport"), + ), + ], + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: fnameController, + hintText: "First Name", + ), + ), + ], + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: lnameController, + hintText: "Last Name", + ), + ), + ], + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: cellController, + hintText: "Cell Number", + ), + ), + ], + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: emailController, + hintText: "Email", + ), + ), + ], + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: addressController, + hintText: "Address", + ), + ), + ], + ), + const SizedBox(height: 15.0), + const Text( + "Medical Aid Details", + textAlign: TextAlign.center, + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 25.0, + //color: Colors.blueAccent, + ), + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: medNoController, + hintText: "Medical Aid No.", + ), + ), + ], + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: medNameController, + hintText: "Medical Aid Name", + ), + ), + ], + ), + const SizedBox(height: 10.0), + Row( + children: [ + Expanded( + child: MyTextField( + controller: medSchemeController, + hintText: "Medical Aid Scheme", + ), + ), + ], + ), + //const SizedBox(height: 10.0), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + width: 500.0, + height: 100.0, + child: MyButton( + onTap: addPatientAPICall, + buttonText: "Add", + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/Frontend/patient_manager/lib/pages/patientManager.dart b/Frontend/patient_manager/lib/pages/patientManager.dart index 2dd7c99a..707c19d6 100644 --- a/Frontend/patient_manager/lib/pages/patientManager.dart +++ b/Frontend/patient_manager/lib/pages/patientManager.dart @@ -53,14 +53,21 @@ class _PatientManagerState extends State { //floatingActionButtonLocation: FloatingActionButtonLocation.endTop, floatingActionButton: FloatingActionButton.extended( label: const Text( - "Create", + "Add Patient", style: TextStyle( fontWeight: FontWeight.bold, + color: Colors.white, ), ), backgroundColor: Colors.blueAccent, - onPressed: () {}, - icon: const Icon(Icons.add), + onPressed: () { + Navigator.of(context) + .pushNamed('/patient-manager/add', arguments: widget.userEmail); + }, + icon: const Icon( + Icons.add, + color: Colors.white, + ), ), body: FutureBuilder( future: futurePatients, diff --git a/Frontend/patient_manager/lib/pages/patientView.dart b/Frontend/patient_manager/lib/pages/patientView.dart index 55d0f760..bff96338 100644 --- a/Frontend/patient_manager/lib/pages/patientView.dart +++ b/Frontend/patient_manager/lib/pages/patientView.dart @@ -17,25 +17,27 @@ class _PatientViewState extends State { Widget build(BuildContext context) { return Scaffold( appBar: const MyAppBar(barTitle: "Patient View"), - body: Padding( - padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 15.0), - child: Column( - children: [ - PatientDetails(selectedPatient: widget.selectedPatient), - const SizedBox( - height: 10.0, - ), - Row( - children: [ - PatientNotes( - patientIndex: widget.selectedPatient.idpatients, - ), - PatientNotes( - patientIndex: widget.selectedPatient.idpatients, - ) - ], - ) - ], + body: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 15.0), + child: Column( + children: [ + PatientDetails(selectedPatient: widget.selectedPatient), + const SizedBox( + height: 10.0, + ), + Row( + children: [ + PatientNotes( + patientIndex: widget.selectedPatient.idpatients, + ), + PatientNotes( + patientIndex: widget.selectedPatient.idpatients, + ) + ], + ) + ], + ), ), ), ); diff --git a/Frontend/patient_manager/lib/pages/signin.dart b/Frontend/patient_manager/lib/pages/signin.dart index 8b092011..289d7c51 100644 --- a/Frontend/patient_manager/lib/pages/signin.dart +++ b/Frontend/patient_manager/lib/pages/signin.dart @@ -96,26 +96,10 @@ class _SignInState extends State { ), //spacer const SizedBox(height: 10), - // forgot password - const Padding( - padding: EdgeInsets.symmetric(horizontal: 25.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text( - 'Forgot Password?', - style: TextStyle( - color: Colors.white, - ), - ), - ], - ), - ), - //spacer - const SizedBox(height: 50), // sign in button SizedBox( width: 500.0, + height: 100.0, child: MyButton( onTap: signUserIn, buttonText: "Sign In", diff --git a/Frontend/patient_manager/lib/router/routeGenerator.dart b/Frontend/patient_manager/lib/router/routeGenerator.dart index facb67e8..3cafda8e 100644 --- a/Frontend/patient_manager/lib/router/routeGenerator.dart +++ b/Frontend/patient_manager/lib/router/routeGenerator.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/Authentication/authCheck.dart'; import 'package:patient_manager/components/myAppBar.dart'; +import 'package:patient_manager/pages/patientAdd.dart'; import 'package:patient_manager/components/signInOrRegister.dart'; import 'package:patient_manager/objects/patients.dart'; import 'package:patient_manager/pages/home.dart'; @@ -26,6 +27,15 @@ class RouteGenerator { ); } return _errorRoute(); + case '/patient-manager/add': + if (args is String) { + return MaterialPageRoute( + builder: (_) => AddPatient( + userEmail: args, + ), + ); + } + return _errorRoute(); case '/patient-manager/patient': if (args is Patient) { return MaterialPageRoute( diff --git a/database/#ib_16384_0.dblwr b/database/#ib_16384_0.dblwr index b579d0583b3b5b71ad4455677abfca6e06152ec6..ea04f78098842c352e7824df35766a393719e063 100644 GIT binary patch literal 196608 zcmeI*3yd4bc?a;>D5@g&QUEGwj>JNX=27LPhfRD(8>AFZVNE*B}0r33{n0V@A`R@?4I0-*QNVU(K(JldH5}AP0M!s` zSg9+q-|WsThukHPq})hQ{tF+;UCz!o^P8F7A%&qw&wc4TjA{K$*>pX0lNo4(4M)2;+pMoXrN0sG@BFOAhWhH? z^{fgH^mukkf5UT6czJhc*X!$9<@uBFiZ0GJ>+8AaSJlZ82Lcd)00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|xT*w3Y280x=YQWX)7MeK48E$LZ@iGY9$dWZIiW*Add^EU#F zyJ_WrghiEit(Sj6PkgPuu9xL2?X*UThl;a>;>^Mf^RX~vm4#9{PkYyeg8tBThS$s} z#=crLe?fpTfBHdsb-fnbz9qS3B)w&H^R{Gq^TBLoE;W{)KTI!Zh5Zb@+A%egEl%Gy zIX9EsmQHU@(zf;X?CjC8d~PJQd34LxZRzcI%$4(recAi-<#b|ac|Kn*W~UQ-=d!uP zUD?Wfl_j_LMX4Ce43Alim8?p|Fn{R*~;N!em={i&x+U15^Nbwr&A+cmEg=sBy2W>k4j*$VRoEK5L8RBZF?#? zlH9&Gdpw_?E0*VE-RqIfa7p$D z6gk8r$8R`6T_8kVz>G{8|33uhf$S~KhN_JBP71!7_dg2GTgU4$4EoP7_&Yn;t}3Ih zPh0$xJke?`HlMG|H~%Sz@|B#~%lJ8bGmUq#TdK?&K=C-QY1qmqk>VlEbXHQvCd{OL z{8)S)PZ|+PH#?FZFq4`?G`^mfE-I3aI+7kTlg7+k2YIf8BIy=K(!*xb0W;}MJZYau zy48`i^uL2u`q2zC=`b%qzeu`GP0HWK1_1~_00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zNP&`PK_6g~eBD1^=l}F;ulzT?<+WD-+w1?o*S!8;yUkkvuWg_O@_xDgKRzt8Wl!*2 z=uh{Yw_m0B`v29g>;EZDjP>!Q!Btu-OnWO?TI}hxm*DT68KL+1a`<6;kFOO^)_yGB z^X10N@UU3-rn2u~Ln2Y*&m@S0OxGyh zF1A7J``vS@@={II?i8tl?x{}Pp&RS~`+Jcp;hsvTM29YYO(gn+d!i&2{jgp174C`l zQKC}q??g`5yC>2q(c-0#L?XM7nTf?grhl5MSCt6Huv<>L{>K+7tA}KVF*drTqOM1Y z9=Z4(D{CX=p2(m?kIL#9o7@vEqePF%>KRG5LBes+Fh z@9wdkdk@ZLa>YU+Qz|SbM<^N7FFZ((=d_y&o=ubdfU;@!$(dqqEzek^9}ZxJ78y_H zvy^dmDqrDw$c*!+CnjtSAZXh-;Ke@pxX% z{SV!9cV--j_(QZHo_?(0^Oa*2`Y$s%N57vi)q=%ykgBRJ*UnM?IUbNU`TGUh{n>Ic zd+&6fNJ1V;mt=YOJR3zsp8E4jo*jvpLDH9QbPFOuMCP7F_spFjv53E~pBZcin=WPN zi_}9hGuc^cy>f1Da(=FynJW~Elle*uApa*g(0YBG;{A)|Lw(ZPv|_F?4}$9Jr}Vqn zLT9lW;Y2LYAthEvaAwd6cDR$E5>f;+4!8$%LiR`e(SEA<0d}M*j@&I2r&~L&BQc6e%YE;fg64q)kj4(TZj4 zagXIh3`L?QVu>AX7e>6d`%bzbEjC}u{8mt}8r1HRGS_161`%qJ{k}ZtR-;y-QoLnE zC|^mbpWSLQ*JAEgM*~tVsR66(xJ=YRXxC=+pHxD3(u_PZ|EZ6ejw3fUX5ex6h|b28 zBjS;kBVu-LzU7EmaStC68}+*j%gX=Gv1v1`Cv`-aSy&^2|L#bu5z!c_ky1qRWRysq zP+Ft#v6dr3jVTdDEV``JYo)|;B8DP;=7>1uxIW7UG{eZ9VvdGHs(DC=s9v>(u0z6# z^+Wb$nO{@CY#+-U6C#%HVWoz4yUA=D#)O&aT3%1;nLlbd99?6(wxs`ACAOl=6T40} zcxZz?&t_%$macYFg9cu8581jwU+khm9oIO49Q;ouYMTaqxr+u>W2p@qzFvvdMT4I0 zqCqLPYlBAaQet=Bpl^54po>in8vUYsNVf*{2l$QuJ$A^w`?Q)n#fSJ6ZZLGAQ2xg+ zh$|cYgqOM1@A(zFxCQvgc%RKJm473i$Upp{l7A<7R=5l7-uB@nm;t6EE*Xg zFoUYp;wDs~X``5TW{MTJd%TDleNBmJ_kZ>5+)6VT(*kU{#bMwN~xTz%vHn<0LwxmDe_x7_vEkQq4 z*7)IJp^`7R>i5y*)bv`w<12WQU$(lt{Yd@ZJe4}Vw_i(W!?nL`n{%U>%$Yv@*g1D1 zX2nX@zS$<0M3OOn?jFO56o~{0iD_y56}RlE1DQ8%^}1_*B#*A=mxm4di-m!q#|03< znVUvueb)S7Mx%p1ERz+}cGUjdEr9ssW|v=Ndq~Z;{(;9+LSl71x#3_oqtSrCDz@h?Sc0vD()<3oFNgXhr`I+`~C9jIsew)lPO4 z$#I1j5d%*v5!*E24?Ao?HICYV!PnZyY1M!~>aYQwvv;fGgf1#^J8!_}J8Z!E%-sqX zS?wOq*?@Fi4)GEAqH6=DHjZqx?*PiR%)B|T*u?Jy!*pTxYTtkS?}-ipnp_dZ2Y9Hcz#zoIU%LoZD80|I3Bj*Gg94SnEc# z|7D};?qd}|zsJ1*EhZ6i2#P76zVf3dWMe5qP@P*kMu!!*VRYD}O;;B4-^#=Q(G! zKk2)E+581oJz%{XG=0Bp^&l&*=QB!N`-)ya)ujiSHJzw^RVGpfiTjPQsSAm~FDZeQ zt3--=B+R`$nK`Irho$DgxTkuzG?e@?9J=ZW~zh{53P)+2w9j_JYkwBN^% z(GhGAfB*y_009U<00Izz00bZa0SH{90@n8j@eS599w7h$2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|_&5akx_`dT z|EJ#^f0y#}s(I4!SD0TtV!e*b|GS^gXuZF=`L5CB45$_aAOHafKmY^Btxc*Po`e^xFWG z%dPT}pY2~~<>6n?G%aSm=8wUI%tho?f9s0B(hB2@d3Z7WpM3iS)h43F`b*jQVt#f$ zGn1XoPUXu{xnC$w=PPU-YfhjwrqE*A3u8?4BzUgte!_{C%2e|Pcp1!X>HG`&u5qRt zJhffwEzN~$ER%m?@9wdkdk;otGr3}+kSP@wlOt^VQdQCAd7g$7wHNd=W6WbDcnL%e zU+AF#n!jG{Udy8I^6VdHMx(}D$Ay{BXGw#axzeRZ{Y3qY=j<5ssv7#4UJB522|W9a zJ>$&RXz=~cieOZV$MbBY^PXUy;5lnNGsgUCojqr}3D|W+V~>~W7-+2H8|_2NF|hm2 zOfk3E(1qD&maK8(*^MK>c*gtA7z?WPH=gOaFzPtCymEQ>_)6m})S#rV?zLd4%Tr2u z-|+{=SXfo^zSDDIJ~pM4ujD^D&LWLUU+S`8^$S2xO7+wIfxzGxi>gZgK<|aQ+|ry3 zJU-6)8g0JaO>wL%%C>IDmw8%XFqjx){i;P^u>0Vw$LNpqdn#k`A@RI{X~Ea6*Wz)% zHHW$SW-_56Ig^Pe_?+WL-?C=6fSAZs*cxZ!*lz}351o+Hm-vu5eF?taGArFM3gzdX zv*#~?wt0t!LKo!JMHcgCE%TO>kH!o4Xq&RPn6HFRgsXDCBB~TR(Op>GXV%l6umo5y z<+u?3P|j6E_5JU5QjYq?qVurzbHdfgf}Eg;>W8b{h1IO;_Z0oZ$eVI}hy={&h{DiYn(HzlVcqTpL$eAp$4#R*xl0vCAn+s&A_QVL1a4 zICMyUpc5bP>`R}MTD|n7oY#QME8F?lDme=gOc7sqWvh?zUYP1<_dgtaN=`upQ~$%g z7UeSfP`yO4RRbI3G(_M;mv>Pj>-w>^%YkK{6?^2tWV=5P$##AOHafKmY;|fWWmWV0}9f$2xWSH3^;}009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0w03_ zU-!?~|No8l^}nX3Hqg3>9n#{Z-Z1MQ`VL(O;FN;f&Y*>TF$5MBNHWq@;uSsbMEuRvFWWC!+M>6(wZ@> zCo|TV8U0AY3|fe8j<^{IBI8X7GsZ{tt0%1)WX2IQW4tM01}#K4XWWbvk@@w68S{4Iqm$N*c{`cOj+rq%m@tDDqFY|v zOdcZ3mV}uMhv}_JYbL`%W}GoI=GPNu&_Z-8h?^-ugwIdnY1`Uh-acu~SR2SpUd)VT zOTtX#Svs;6#myAq?abht z2{Vp0wndZHjAIR%DUF%2FHD$03(?ITH{(W>b!oy3o<~18jf|umLu}2G{@_U;}J` z4X^<=zy{a=8(;%$fDNz#Hoykh02^Qf|F;ax!FB(Ub^dR!THlRFZjz5ay8hoxdvL+Y z7X0&#bX&X%K!o9bz3v`d&W*1apsR{3PvMOXumLu}2G{@_U;}J`4X^<=zy{a=8<~18jf|umLu}2G{@_U;}J`4X^<=zy{a=8(;%$fDNz# zHoykh02^QfY=8~00XDz}*Z><~18jf|umLu}2H3#fG7wq!A6e($chga4R~4|}YYE^R z--|aA*7>PQyjJWBO^%N`KfR5m$@0$mc;I?n4y}sNMKnY=Yg~;L)#yhOYV@mNVNA*- zRHI)_YAmM5BPWW^moS4CqMI#l#)f7Ls}g1m>vjG~YsRpi%vfV)^dku~Xd${e;$|FZ z#&}c0jPX(Z>Pc(H_$ZmN#mpF1CCs3O=$0KflZ|HZo$tjr8q-^b^^?|&=`Awjh?z0o zlrV!9qMI{r#))R|o$rMi^LFE-lh%xRJDJIjnK3<>FoPDNTVC8u9-6^-z87XP9HzG> zt(go5nQ_LwrJ9t zajYRTr7<)1g$XlgA-cKaX5457-}zpc!82(2q&1VZfy|W0%s5Um%~2G{@_ zU;}J`4X^<=zy{a=8(;%$fDNz#Hoykh02^QfY=8~00XDz}*Z><~18jf|umLu}2G{@_ zU;}J`4X^<=zy{a=8(;%$;Qy9^$h!Z?I{z;=ExH7cJig#0<{-NMAD5oQHe7JB75{uA z-4?F`5Mj7que%4Aa~DOHbVrt_@Wuw%02^QfY=8~00XDz}*Z><~18jf|Oilx_-ws4x zu!1)>zy{a=8(;%$fDNz#Hoykh02^QfY=8~00XDz}*Z><~18jf|umLu}2G{@_U;}J` z4X^<=zy{a=8(;%$fDNz#Hoykh02^QfY+!F0h^+gMtn<~18jf|umLu}2G{@_U;}J`4X^<=zy{a=8(;%$fDNz#Hoykh02^Qf zY=8~00XDz}*Z>>YHwN4}`{wJW^;gv!?{V*VWHI)*AO2Y>e}2-uGww*=-XrV&^|}`i zIr&aqIe^Y6cZ#nIFbW3RgRB3xMpghuZx2I#Y`;z~ab)5i@z4I}+om^8d=0;{A(%v53e2rGLx5av$q8as)c@iWA?V|BN)~U%b=hcj(`m2K|fI z_xKL|XQn~_8L=GDnIAif$i8I96aW5WON0KcDfDkogZ?v9=--hB{o7LLKPwITx2Mp5 zb{h2WNTL6nH0VDoh5nss(0_Ic{pY4Z|Kg{SNH6qVKXOdTZpXj>=cPga&J_ITr$PU@ zDfC~E2L0!y(0^eX^q-$X|3zugzdMEgU1`vNVG8}1q(T2hDfC~O2K~EI=)Wut`Y%qQ z|ME2Gza)kJE7G9<(iHl4r$PT^DfC~N2L0o29b;Rh7rJVT>`8Vze*IRJ2K`sW+fUl> zw~r^@fAzlapSn-(``i70Wh#4rU-lk5HzHl>s^|z}`w}GC?YRG%$bI(J7VBGAokIV$ z`>OZI*NyjIlS2P>Y0!Ud3jNooLH~6r^xu#M{m1_w>3{eAC!XKNH0Zw}1^-QH(0^kJ z{ZC1Q{+m+hzc~&1pOQlVo;2vcIfedP(x87&3jMdHLH{i&^xwAc`={>tZ#KXN*Z><~ z18jf|umLu}2G{@_U;}J`4X^<=zy{a=8(;%$fDNz#Hoykh02^QfY~Z^ah^+gMtn)wf zi$a{F)QM^INX6*-e|dfXR?xT3@7EqPQ90Ki~B!BBR%ms)p&NNxyIUjYnbSvX)m2;LrABfKl@y~Qi zjadgAHh2DlLuVbncxcwbSwp7C+I~w`oWqWauXpHty07MfPOUqSYW*0din>3R>RM*a zJ#g{R{JGJBMz!Du{rBdAUM*Nj1s6*N7s~}_&l#Gvc+P>*f;zR}SNa?0fc({G&%Mz!Q=RPtD<$77|EmO1km&t5PTvuIWe-e{OT z7ffowqp9FA&?|a8Mk?r-Kj(*d&~q2>|AQlD&5!nJQp;{NTr(HUYT5m$?2n{F|B+PI zI{%27haVySc??QP!)#;0T(Crkx}{VS490>JPdVk(V}HE(^d-lh zx_IQ&;};)y;>eOSOgf!8ciybSXCHR>p)=aTYgu8Bp_8jr6P<7>)E#MkmVEQ|$r62{kb0>#&2`*wUsr1*}IcHJp^5MNV{ z=>dwbs4L=oqI4#oDAi38U(*TZOp324SV^bcaZ@ zDws6B=1lY56kkzN#P?*W$CIU!N#bih(qf|cih@VeL7ybW_av#{ZsTjd+cHe?6=g+y zPmm7%1gUJ&_*zVs*D1cDq=@e+QhZOLl6x(_mf=`@ZSnZpFuoZtC*o^cYmBbHrRU&D z^1K`Wp4C9{weA$(by9rSk#^m(J&13{%hnYXUr|@Y_bTa3zDlZ_B)--L>vI%eQBcJ9 z3aQ`~a=~54*SaFJjN&T_iukUT&f&FE!KCrEK9{+a;wwsu`2I@j@mEsGB=OBG%Y2IB zD+-GEUMU{Zj$)g|L(Yi;wuV@_+BFwyhbj#>-ai)9DkV3zSl{Iew|b{X?(LT z$UdCnD@uy^E|=oFoJ#Js_-4Hkdm_q?$2S|}n{#L)zIjgD+DRMVob?o6$4>FRU5fAR zq+NIB9>h22(45aHzM`&(@2%3Ae5+J9NqlqGI}f7xih?4(H%SF=k_+xSzB!*euci2k zf+D^*OXu*-Qo*G0bspsWl;SH&iukUVdR#A+OcGz`wYmFKd__SK-`k}4-X;~?ZG4@d z=3Yhd6=g+yZ;=lD7O8B~_~!1P=cM?Gk|MrmO7T6DO76Az=3W(xuQMKBC&oA5o``SZ zE7^xn+W6)lOYzO#DZUR#@qK`_>wdZi@y)mA-%s%sbwzxCFP+K1m+B^oZ~n0bW{R&U zDB^psRPbK8;I8AFe}BObD88bgi0^&UIeec~Fll@X%msH)d__qS-;Gj_8>Ny-;#=^8 zLLJ3d6cq9OgB0ICNCkHr--0^|kD&O9vLe3sONV~HR5odR3w4FBP<%y65#OIm@%<^4 z+-vbIJR%m~ym)-`Fup}EB;s4LCNKKhYm@S4Usnyq*SS-CACuzy7-`p?wFmJndcn1f z;w$Qk_&y??$&W~Nlf>6m<9eFnD+-GEJ}4D@P%gOZ__~%AyC}Y*pos57(mDK)R4{3L zT~8OENbwaVMSLHXdVEwWnIyi&uHwfizM`Or@4rj&{dcM0ZsS{gVo4swSCkd;eONm5 zho!Pf<6Hb#$r_5UC@JE5mK5K!sN`OYZ%O<`*$U$EEx`DeUYdw+#oWSIChfCt>3bC4 zyq)6vj1=EzNW1RrJ&14VrDYuyUr|@Y_bKU2eoCsFB)+BZm0d{j6$M3nAD0R~E*IQ& ze9Jn@-lX`7f+D_8NayeqQo*G0ExWM1k>V>#iunFf>hX_K$t3YDd$aspimxar;`_7| z->0R5yNz#oWBIETUr|=X_etr{pOnfbjc@t66>}-RqNIrL*;0JZrjmOtzUBDZ?vbr1 z9^WF2uX|1+zSWMBHIp{J?wcvT1v|y}B`Llyk#^lVdk|mu9QQVguc#~H`+{^PzaZ63 z5?}Ytl?PCKML`kYXQhJA$^~~FU-!1kt0}&spos5t(mDK`R4{3LD-Wprkm4&!iuk@L z_4uMxGD&`n@ojK7JWlZy1x0*6 zkP3bv7u-}o@a zR}>WS{YZ-MM^eGv#ZY;muOPr15QD>8Yjo zijpF}pGiG_CY4MQ-{#jmXH$GdK@s1rQhc{c1$P@?Pp#)Aimxau;`tBzWfu4tb|@f8I{d_R}s`?*wbxAARz zzx^_buP7_x`%mf6|0$JC8sGM5UMs~{loatjUyASfRC2GyxBaqMeEB0AU;}J`4X^<= zzy{a=8(;%$fDN#LNo63i?mx25f4ud)AK`(CcQcP1WOV(%*n_{d+KPX^p~IJdixpv! z2k1}7h3<~18jf|umLu}2G{@_n7jsJza5B7z3|2c*Z><~18jf| zumLu}2G{@_U;}J`4X^<=zy{a=8(;%$fDNz#Hoykh02^QfY=8~00XDz}*Z><~18jf| zumLu}2G{@_U;}J`4eTugk#+x(b^dvccdf&kCb_O&_u>&?k@v(tckAN&^sp`dnR)WA zXy7Ab18jf|umLu}2EJ`z=c@zW!v@#@8(;%$fDNz#Hoykh02^QfY=8~00XDz}*Z><~ z18jf|umLu}2G{@_U;}J`4X^<=zy{a=8(;%$fDNz#Hoykh02^QfY=8~00XDz}*Z><~ z1N+8++qrMPZd!j;z40FRjz<<_kNe@DmGb8&%{$|c^zA*e?mx25-+9$z-viJY}Yt?_d7+*=4_x`~DC8TO#}R)fVqxoNqf965@}_8t1qOoRT#>yvzk{%vW{e@4vyck*vfgZ`~4^zTT6{>3}heuwiX zD-HU$rQkn14f?mI(0@)E^zTTae`gx>pOr%YxoOaUb_)IHr9uBWDfFM82K|el1|z-D zvsmPqlHHD9zZIlG|G6pnFHD2}D^uvdC=L40PoaNT8uVX~LjT2S(0^eH{gzegD*b^6TZuy&}ER$FEFf@9)drW4%PW($z#hMmD*>-QA8~|JUuyV~92l zy4u*^->LulH0Zw}h5j4Tp#R1c`fp5w{+m+hzbOs+pOQlVQ_`US<`nvGPJ{kEDfI72 zgZ^7m=)WZm`fp94|JHrqKXuQ4vjH~12G{@_U;}J`4X^<=zy{a=8(;%$fDNz#Hoykh z02^QfY=8~00XDz}*Z><~1OImoMArRB*7=V-yx^ZW%~vU#h_3&a*T-)G{gko6@yOIe z(4RREGJz*~xW*W}bz^UMe z2pC4EbHJ2qnx{dff=3A-1SYTPR1K;Wd?(>tFwHYvu0geepC|kSFr8|;OM@B( ze@r+JOqZL+HK>(wTL$3;V7klnsRnflZXjF;rg3wo2K5S_P566Y`qbQ{L4$&q5O#q% z(|oW7jS9Yy@Io**nUB|?Nx`=gE(Y_#=2aR@QScLlXM_28^Lh=M75pyY5-_haKc#_3 z#_d438qDj>?`zPaU^ih8n4hxfHE31v0O9??{Jy11gEj>pN%$DB=q>wc(5~Qf2$zAS z%CcAkuY#{5{C%+OXZg7XQx*Im;R>)Uw%njWhl1ZCJQplKw>+#tr-CO4SAyjR%bzvq zlCigl@P1%<*z%PI-3sm|Tm_atXB2DDqu>REhrsexMz03F3SLHdK4cVUd|!h;1+OLi z7-aNjoTZyXame_7##I_jS8#~%6OeIc#(f&}EBG_QPeR638Lw$DL&j6H2|ooH z_hoF;U_imGgrA0t*Q`zr1{HiL;XgvgHfy^E`zd&Y@H1d_S`X7;rh-=!eip3l)>Aat zU%__}eh#dMSufMz00los_<69NVja`qKm~t9_yw?DW_>|}Su*ah5FQ8XnDrA4W-GX! z@QYx5A=9eCK?@XPqroOzH2a}<05;a4EDG4nVL4pHzeghP;d zQ07G%d{4oT6MhvkkITGGgCPaKL-;kwyeRWY4GvZC4#KZP=53kpX)ssDofU-t12Uhq z=`=V@!7~WI0h#aFDm9p=V2$vbVAI(KHSj6;Y{GAYtUds*<7C`pCVT}r?sR;t!SM>NBfJ(I&u3+5aDsvlBzz?}KF(^; z;6w!2fvk74-5U56yohi; zWJC6V2B$0dEW*u@?an?@gEJI-4dDiSZ1y=CEK~4C!d;MkWcGC$ELZTGgc~9Ioa_fR zI8(u&6ZS#&b=hxe@DmyL6%fvc><6wq20vBse8N*8dm^V>gR>NT zI^n}0rzmHE24^ccKsXC>x^tFkaE^k1N4N-b7UZne;AaYcnebG|S(bB;20vHu7Q!8n zvo|CaE5ce$S+m+2=S$m>&*2bU#;*_;-^5aH`kAR zRN-U9Pla4xZUFgZ3Lhta8sz$OgUBye_-5jM$PMI%kgt(>zn%E$kQ>YmBmbqsJ;cv| z+)$nqc|hSq#Fs&CIM0jx3WbjlUk-WBJRkD43LhnYCggeZ{K&6V_!#k@K%Orzfcz?j zj}u=3dH%d0@~aiTnfOm3FOU~P{wtZ!uoFKE@`8C`oi--rAC4- z#LFQ+kRL++Yncz&iBE(4V15|+O$zrApAPw<0w?mD6+T3~AM(QmUgWnZe1!N6C~y|| zkl(8CQQ|j2fw#bq{5FM;5x*GlHpu{1zzi7X*>tuJFyoZ-s(DK?wP8WIkvo zej5}73&O~Mt8fqT^-vHhbRyrN@FC*2LqWLEi~J6Sj}ZS26gmri$nRA6DDmGyp|{YF zd`#hE#5X{puP}i8E{V56FY!B|&|ertez(GhiQfr@fx-~-e^dAh;$u)4EDR(6ox;}< zzY7XOMNZ^Fg>NK&Hx!18yvXlS_$K2221U*yAM$$@K0*9hCWvS`6CMNC4MBh{H`GK ze^>Z0@x|Z@xI)MuRrm_xM}sTq3L}3^;p>S12wb6JC-TP?zLEHk!4)p{B7Z{Rn}|<9 zv9s8R{7HpR5dRX2y~TdyPs!ZiBK{Q=`-%g|pH_G;@fIld7YC95QQ^bHTcJ2m976t# z!dDP~2a1EmVdT#$d>!$3p*U3HME;z@Hxhpjio+#ddnUiTI~b>MZpke@)>N#5Y5!x73gPb(x!7#Qy=M zzS02l|4?`@@hwp5FAXApL*c{3w?b*4G=%(3g|8s~8I%S~!^k%&d>!#Hl!nTj$lp@< zM&jF`G+gFI{wIZRBEB8UoMk@be^&Se@qa>@x6F_HFETf~i2n=9d}RUT|Ecg^;-5pA zzbuISuL>U~{soi;%0kHBR`?3yJD@CB7DoP#!q>$){s&}PsN9MCU4?HXu7k30xfl6+ z3g1Lr59Q8sAM*DVK0(|7<=%2X@(*NgaS=B{xvxBc{BH{HC2oRpe|Zr3-xWSg+zjP` z@(}V56~2PF1!!&C=XRQk$m5c%f{A13YscfcJ&{)NI<5HALI&>coTq40IYOTZnfbRz#!;TwsU zf;(L4MgEn-HxVy`N@t}H`PT}cAYKlY-bz36|0nZI7x49s|ChphiMyfFUl~OH zjlzeCS3+f=GK74G!dDQlg34fJScCIG;p>Q3LuIJSiCm}fjl^r9GF;_Fu2=Xb;yVRQsv}$Q=srCEfwm{^}s|EQJpf?}X|=bqIO3!dDRQg6d#(7QIdn zxl`dAiT6NtxWBnd6tX#{!r_y4InR9crWn-pw?d-L|zenb^q7^Od?Rr))Q0Q4$g35;iMR#ooOM3r zH42{~o&j~Vt1@+k`6L_8Pjo%KHC%?h6&o(J{bdOvcH%yV4C z3!&auA3)xs@Lu9BsQ1?gk+&**n0PVN2kJw}+Z4WncnQ=8>%+*~6~2ym8PtawoXEWj z-$=Xy>cb6QA%MI~;l0Fbp~2q} zMBc6NVd8br5NHS??@{;);`PuFYzQOoRrosM4bTv3bRzFl_(tN5&=79)BA=%4O~jj^ z(b?!jK3(Ax#5NE`BQDM+AMyhfK0$mjGB88U zCJk%G?msC$PQm$y*p*#*Y_wA6BQrX*Fa_ryVi$IVPa}K;OnIRh=O1F%b%fUtHo%lm znsNRic3DUGZo;#0HmMosA7WQ^gkL0VgyzO(oPUU2)DhlHcpfw#)Qs~Fv1__G*4qf1 zq4~IGoPUU2(h;6Q_+V(hs2S%UVpnv8=Mc6)^KH#I{}8*NBYXnkL!kLd56(ZtuIC6} zOxOg??|E?kA$B=O_;$h>;L&+-{vmcXNBC*N+2E=4;QT}EVvg_!gx%m7^x*tM>{>34 z4FpeLC5WA2gd^F*s!1Is?=O1F% zafHt$tOw7ZT5$d$b{R+bM#5I`eA$BY53#E_!jBLxfEHH^&OgL1;t2nRa4EF(wBY>7^n*Mtv+mW3@i{}8)`i(_L6;Y?^*-h%TFu`4*jeS{B(mMdFu{vmb&M_7D=utCec zEnyn1B>WS4^h{`ZwH4l2!Iu-xgVvARaQ>lI!FLf}0Bsp_dplx;=&ObEB*qlk&1#L^(aQ>lD!A*o0LfeIHIRDV3;DZSlL))!wIR7w3!N(Jx z4Q)@f#kPfwp(sasI)h;Pr&7p&ifGvF$kj z&?aMxp71fyeq=k&KeQ{jif|dUpVN->4_*cDNBH~DeqB4xKTK8dV!{>B{$M-KKXfSg z=Y;1%`&(X|f9O>34TLM9eZq_L4_yj=nDBn!E%M_0L$`weOt=cX-Cmr3=uz-jgonVp zz>D(_y)wpe%J>uXeDE&w;`~FOg2e^GW8huu4bf<2JYzUc8GrQS;JwHD8I4vFK9leh z;0;a9rqN2mR}p>^yq`^NrO`^l_Yr;yre;q)ltwEFzef0JnA$pZghnd~ZzKFin0n~c z)ihce$5todXJG2c)H`Ujl5jiWXJP8#eKL=CqnEDZoRuVpi@bfVBxeg1B zRuaC9@Cz{YqmFtStt2e|({da-EFH6Gw36@(^yn9%qrT%<8m%P!3E`KZV^+rnG+G(Q znO4FtL&vclx6o)M;YPx*K*t3gkJD%+;e!Z=pyQT~cWAVd@NtA+g^tHNcF<@g;fn~r z1|9EoR?uiA;oAtm4jnr>XV7RR;U@|I2Xt0+YBX9&_&vgJKtt5Oe;Y*=At9yt>D+#|!cr|plbe~M4m4w5DN1=PD`%)UMjAKU*;me@= zXYqE1~DWp7Uw6GLEw{2ww#~$MoDxqm_gk z2wx37=l48Dqm_hb6aE$S+}!gvjaCv~LipFv^H|R}G+IgcLc+Ds^LB4JjaCxAmGFVk z^G$C*jaCwVf^Z%5miI2A(MrPa5}pIS{k><=Xk{E{1L1n;UDSIGjaCwN6K;myvwAnu zXeHqR!VS=SP4AmDT1ogw!d=k2vG;Qttt5O7;YR3vv#)?gD+ymm*ay9z_jS@}CE*7N z=R;pX-+UUaB>WcPCg|(zJDo-=2~QB70)6xQ0yJ6~$2moW4}-qb`+i5Gm4v$qXF*?} z?`0aTB)oud5%m48Zwrl95?)4lD)hZP%|WA;gx3=8fW9r$JTzKK_#VQYFwHRy;~yWb zBpxE(4bwc+@aaE3T1i}d1L%QiL(@i)pD%xFbBYUqB`|Gd+8FW+6z-+^$HBDGY2(N* zRJf1$@i1*{+GgYzDcn!|1ei8H-Hv>f!UM!lglU_ndyrqO@F4M%V7h(!5b{eD9wL4+ zO!rJ5LH-Mchl!8C^r7ja$S;+7u9Nsum_9On4Ebt>dx@U{(?_R|BOg_`kNBxDeQf$> zmR3@qQQ>8W=@>i_8n0#Am?3$iNu#TNUml zeiICg4vZteP2oP`H^ac#z-Hv@749c~3k-}8+L7O`@Br~!VPNy12l;Ol9wdGn4B7{W zkpEWUA>!*{&@(uKe1pQn#BYbep}|q)cgVcZN&Gi3I5Ief{7!{?iT@S`M+e7|k15<~18jf|umLu}2G{@_U<3bu8i@UNATo}|8yjE)Y=8~00XDz} z*Z><~18jf|umLu}2G{@_U;}J`4X^<=zy{a=8(;%$fDNz#Hoykh02^QfY=8~00XDz} Z*Z><~18jf|umLu(w+uwq{YTdM|2F`wj`aWl diff --git a/database/#innodb_redo/#ib_redo10 b/database/#innodb_redo/#ib_redo10 index f253b739e5f0ebabb5200dcc3e853d51b3f5f424..59d1780fb2c13bd45c00477a1f313ab27e0dba30 100644 GIT binary patch delta 37402 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 diff --git a/database/binlog.000014 b/database/binlog.000014 index 6e051dd1a088919044725bda27425f34d3889318..4892af236e5a4434aa8ac9dfd30da2515a684de3 100644 GIT binary patch literal 3539 zcmb`Je@v8R9KgT#-f_Gf$RUVx>4f1gQbge3fCbFiKvUEu+MohGxjVWE@4?;GCN;CI ztSi#oa9}G}v^kef3#goK5c)?moeOccT(w$TuDP76f3z6a_xs%Qe(&X?t=;aqJ@50r z@ArK_-{<{&pO=@Jy*}+gLyy;P0)Q8>zl_}k7N{zA6qn%s|8IoJfq9_PEf)L%w1edl zI#g9v!NF#;tzHe;Gd?De>#!rOEuHhXjmxM#|T59)CQt2r2Q zTOvTejG62Rbh|=6j~3e9<qs7XxY4WhJF0 z)um+)E9`LfdOVs1wt7O(Es#fDxWB%m%jN4VZufWDN-C@H(((#tWh!iNY5TT%+-ard zm1PxG4rg^b>X|W*3a2C`;p%k{Z_Fhw zSI;ZvpUmnVyIMa(DMa;Zal#)NQgHRs<&zkOYJB|`*AErZ&20ISxOoY^T-Y`TZZy|m znBS54G7t^_YpdvX1qH)-HxGNsa#&dQpTD0^IJWFVoC+UHPQsS^FP!TkE?d4PrkPC3 zb$i1ON+B%o!3h_o(5&O$kqkU#33-Ac3&d~DctW0~keMz>p^ZC4g&4WBauxBp5L*O) zjr2Wsd-(Nn409pg6=9mfoK4XSpx5g_ph=@bbc#YW9(r(*a9oH#5U0Xf$x65ozu7`B z5SI(F%Sy;(7Gj^ja-33#LOhP}K|=~&?(;BUCC~X~G=W$n*OM2frU}8WzYvH9>8fhv zhrESf8eCgbWB1Ror|6FLl5EQD3&vb$-5*{{ICkBJI2AsXq=a49{5g4vxa@jDOf#9T z!}bMVQ3`f#5#QdpMW2aJ5_RpEZHHX9o*(^=5bS!HK(t6_KTV!)tHUs_>wpN)<`|9? z-La?`2KKyh@A;VP<&6^`5{_MejW`wXgC|msqC3`?zazKrP|S6a z_a%*R?AnR{A*gUgViI<}`_a#=#AVmV=|7L8y57Fx`hH5muD>^=VAolgHM*`V%Rr!u5`Ws+`6kLG0f|F^Bf;w169!->&ySv!`8QAu1_piy9mdwhY+X2 zbxBCrb=KwA4icALr_dKHsjio_^uA9i*!3nu3U)movqoJzR>= delta 6 NcmcaCJ&$q1JOBx}0=xhK diff --git a/database/ibdata1 b/database/ibdata1 index 04d37903c672cd5861d58962d024c9b7d2aebba2..20f9dadafcfc3371a96e8d78884c4a07b10b9b3e 100644 GIT binary patch delta 638 zcmX|-=UdGI07mcc<|f%))hmD3fHeOp&QFO{U8X$&@UK%S@Rivt^FVm3cB> z7RW+bB#UK`!-DW~MLoRPC~PKpINFBjyZT#^z|F3T0U zD%Ye`u1lGeONHE!n^Gya9{jXaQt@<<-b6L~7nR(nY#TH;G7h=^;I(m-LoC(pUOPe;FVHWsnS( zAu?3bWS9(>5i(NJWt5DTF)~)hNrq&~c$pv*Ws*#mDKb^2$#lt*Y>CPYnJKemw#<>a zGEe5q0$C`FWU(xfrLs(x%L-X3tEA=o8d)prBuCcE2H7Z^WV39MT*;Gs*(%#)yX=qx zDU>29mJ-=1yJWZQky67CO|Hugxhc1#LT<|)xhwaiQmW*>JdlU-NFK`*c`DDOTAs@bsgajbE3f3W qypgx^PTotM)JubWkdN|78s)Qmk+0Gu-=tZ-%MbY}zvOow!@YpY=~6|QoLa|NXgHexi}?Eg2wOm$(ZDS^-SvyTW!oKV6tV4#Gm53u z&G&xR*E}}-Y?(2?VH)&%AUqOxn&9oT{pyb zIKo`k+t*?b^huwT+;X(HqQf0$_(jik>~3)z?2zaXY`>IAmjKP68|V&tfS#Zim;uZP zW&*vz%%Em0U{=rv%m!u$bAUNPUoaP#8_Wad1^qyOFdvv7EC3b+3xS2fB4AOl7+4%E z0S162!BSvpunbrhEC-ecD}WWjN?>KM3Ro4a1_pxF!5Ux?SQD%T)&}cYz4Lk+kkDsc3^w31K1Jl1a=0yfL+0EV0SPW>;d)!L%?2O zZ?F&87wiZ22M2%y!9n0)a0nO*4h4sS!@&{YNN^N58XNHo!3p3*FboU_Bfv?Z z6`TwLoB~b-r-9SK8Q@HC7C0N61I`8Kf%Cxy;6iW_xEQp7OTeXIB)AM*4z2)Kf~&yQ z;2Ll(xDJd0*Ml3tjo>D5Gq?rZ3T^|pgFC>T;4W}CxCe{|_k#Pt{a_4u06YjD0uO^n zz@y+X@Hj~D1b7lW1)c`afM>y2@Emv^yZ~MVse@v$_n}(PqjW|kLaguc6Ea}BXT*WMI;w~QIDPEF6 zGD;@#mduhxERt1xB%5TH9FkLfC70xuJd#)Z#9#7BekmXYrH~YsB2rX}NpUG50a8** zNogq~Wu=^ymkLr*DoJIjB2}fD1WI+OAwg18YDsOWBXy;o)RzX*P#Q^NX(COfnKYLc z(o$MUYiT2GrJb~w4$@INNoVOIU8S3Jmtg53JtahXNpI;ReWjoDmjNsMAnIID-Ou{8XCW%!h3uKB+m1#0vX2?vLC9`FY%$0dEUlzzh zStN_aCQD?gM9MN*E-PfEtdiBTM%KzYiIVlQK{m=J*(_URt8A0)vO{*tF4--6BwF^$ zKG`oZazGBsAvr8Z50Aur{Xyp}ieR^G{bV+TJNf&TzJ+4@}o delta 2203 zcmZwD1yEIK7zSVtl6n#A>a|fZu^VGWvAYX9up7Goudj-V?Nv+^yG6XVuZabAV2jNOAjQw}cwWhL^j)p=^Z9sNi&EZrK=S1!-eoL_3Lc_(B*6-RNwZA};k<(V^l2I)!?)GndPrOmm7I(=gofda5m0BPD z#PGFcOE3b{;vPj)<9!m09_BBrdA4wbw1VTf*pd>A-f7k8$EH?mx}Pm1(eO`;XPEwV zy8U6Ik*l1C;}%AWCD`h0O=oqnx?0_=?p6=0r!~DbLyRfZ64&izvc{MH_LhDX^p{Lg zhS@7)n3I#?W@JiTLXY6gg#&HzVWzTXFYoaGNtwb;QD$>zrJNRi?Q#yz5^~OVINVg( zY!1>ur$t{=E{;@en9FS6*!eEKEMCK%lAL-wmNHWODu5=?3(N?5gPFk0U=}bdm<=?8 z*})v31h^ZLkg)2-XGbf%U-#U_-DG*cfaAHU*o3 z&A}F6ORyE#8f*i$1>1q`!46N6$}N#z;JLHXa%Q( z0B3+R!C7DgI2)V;&IKdEdEk6-0k{xc1TF@bfJ;FexC~qlMu989mEbCHHMj;`3r2(M z!1Z7ZxB=VoD2>t~A4E_Rs z0)GX61Ahnq0RII40{;e6z|RphB58=Tq!Sl$6*qAg5Al@rl0i)3B^kwAGD&91B3UJy zm?gX95R2rLT#{SzNM6Y&`Nc;HNI@wizEW6SL#W9X&?=yku;Vj(o~vBb7>(hrIoanHqutw zNqgxa9i@|WmLTaOU8S3JmmbnndP#5TBYh=U`bmEoAOmHP43;4>REEiL86hKOl!VA= z86#t5oQ#(VGEpYUWSJsUB~-#BT&9UtrVC_-%#>LYA+u$U%#}!)C-Y^2ER;pESeD3A zvB@%7E>W^VR>~?_Eo)@0M9Vr^FEO$~Hp(X1EL&u&Y?JM>Lw3q8*)4lyuf)neiIe?e zmjiN84#{CTB1h$z92d$7IVq>)w49N%5-;cEyj+lra!C>-Q7+3BxhmJ>y4;YPa!YQ@ u9Z8bAa!>Bd19>Qq diff --git a/database/patient_manager/patients.ibd b/database/patient_manager/patients.ibd index 4e1a61a0f01e97d5a7039d7a9bde0501ef1eded2..95e174c715da5a848f6962521ea880fb659957b1 100644 GIT binary patch delta 776 zcmZXSPfG$p7{=ds9X0=JNe6{C%4$i7Rr|9-(Ov?fAdemeiy}H08b}aMox8?f^8zj2ThCg_Fj1AwIB#_ zB2%oy0ca41#JzbDT z$FKKqIuaa{ELbQK3un!hLjaHr2)`d_apI POOGD7>)T`qkDc%zrC5;x delta 241 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 OBEs(of7C)l{r>^KrtIAS diff --git a/database/undo_002 b/database/undo_002 index 15f44b348ca282ee10db7a4fca8575996acb5191..6c421e2945c6ce57e966970fee863e61e8389e78 100644 GIT binary patch delta 4452 zcmb`K3wRV)9mQuR`ylit$mKhs8jtTB@{_M`>%YS`{r?L+c~X-PxVp&1b0r_xm=P zZ}y&Z{{K7o{`M{a9rC?h-K&Yv_FE23QxwHxzU`N$K3UWiQfKv43QZ4c;f#kH)%~+| zIaGes4O6#g^}@xbAk`L`7n=Iib6ug7**#T#n%mT6TRJ&ZezZ3Qp&ciNWKQB8Ork#g!Ccid>33ib)ic zDe@@_C<-a2P)wzmMlqe@DvB8tGbv_K%%+$_QAANp@m7kfDXyWIOEHh)T8jA;Z=<-5 zqJ-jlic*TVQwWN(Zc#2m%iUYAR}|Ho)U5jSZAPdsf4WhQ^6^@Df^kz{ez}(8*wv`E z8^Qj3r#{;O^I@pLo{631CrfqdqM54hzH)@_e58M$Y3Wb4yl^^dDJo3M$(H51(Uxgy z&}dAl%I_&FtLQ1!rIn^$INgm35xV-^>ibOJv?O26du!CUPx?-^d<&eTO3g5Rk7+fT zJ#*B_hf8&7rJ2(03$`!ZTZxjK7a!eYT8~e%HkXj1#qNxZjGR+6&yaVfc{QRa)?f3^ z^qvw_j=0SWg$0XtXL)DVD@umEKW_E& zo#ww?W`*~wlk&2>ZOt1SH@CI4Z|+dtj@FFLhdo2)k~?}$uB=in?DMbfD>AE{5ONjRt9jLTM6%XYJim5EAP zwBLsHjqQzVTQ;eBYyzBvuJ&3*O_7%2+yPmpb1W7|O}!zfE!L=k4Aakekp@D^=ajtgv`dTH$kt-!uwyWKi_|r94qyV>F zfbq&;b=GK;v+kif#gUksGSf1-L!IOwB`G_yAT-XsUT>;ZoQb*a^|mD7vSRnwEyP4x{Yxg_&9Nyen!IPhyFl zdC9JU;%KpB_8#z_sZ+d(6}zU!y>IrlH#E1kwl-{R-8!duER{F3HE&HxQhQgVZmU&N z6Wj2vh({T7wMl7BqgL5vCZ6%R>J(pMbMB?_#QA1<>slJk=FENAF_tK!XvyNttZlyC zwTeHnpVVz}cjM5}>hzW7rX7oMY}Vps`CR_YIwg?UgI*s`aYh!gk*?Kb&5P~m4lQ{R zMNA{(e7pT!wMtrI$-dojGhbwo8r^f!Gyly!{h21O*A(lLtnySrQPnLL^_4W;^Vq8< z!ty1AVlR1w7)@HwiS+%+r1j)>l~iBr@Z_2}m0uq{LACk{JrFLiY{G?#>N#PoQmeW% zy#+RCqtJ>V;7vg5IpOWJL0cd}n{OJ*Z5jn_uMJxLqM-E_crVzXjTUfL8s)tqXuX}O zut95Odpm7O479yAX!TL-i_qG8A$8aWt(EH@vP|9xw5jlIu|aF)roxs)LEAejEQ09N zVc#hmv{smYL@LJyTHh9bjSX6>0N)mA69sMWSU~GLAlRLXW~KsPXq_nrtP#5Z1oga8;^=3IAQ%= zR&&LH^TBKz!B%rVS3FTR7iZn2M8(xX`)wXuB?k}0%@TRs8)5waz~glJlWp0o3dvu|+w6)bOpvNkcv=XRKQu>k zSPN>+$sAUV>qPZ@hq^M#VIx>py(AD$k7C$7&uc-WXh&stmew3Q-}?jde6PC9^L=0E z%rtAR*y+(cZ?&cuRA@o7)Vr_OWr?yRqME27786T|TB43vN-QJZK`bY3 zAXX6XBvukP67M2b5$`5e6ZOP1S%|r{)N~|SrA=-%d61NiTi1kD} zv4Pk~+(v97I*8507UF%x`-!c@2Z-B=ZNvwO4-p?GK0<)#BtA-fjMz?moFMTDVh8a_ z;#0&O#HWcniJin}h|dzABkm%05qA?^#65&T>?S@>+)I3cxR3ZE@g?GZ;sN5z#2(@+ z#9m?_(M^1n*iU?o_&RZb_y+MH@lE1e#6!fliSG~(6W=8c65k_wi0>0WAbv>vhI zc$WAzae_EWoFYyW&k<*c=ZP1H7m42xL&RC)x5P`t?}*$X`hS delta 1566 zcmZXT3wT#!9LIP5EBmjk*48+!(zGI(R+%ALzg^mz+#`iXQ6UoMe*2d75xJH*q!MQ3 zewnr8_Aewv1XIrPPe{=4D62XgF0Z$8B7)rJDm-*L_SI6C+@agSpGwQ$k#EM;gIyKfOSX{8X zK8uQ1<>iEE7+pE1*9Hf5YNl|T?f;AO8d@d=SytlL7L|1I!UfHmA1O(VcMDqIFB)3H zEsB*?+n`w1h~>N1I%{|+np(IY_p&A@W;koUUs+VzJ1AG_?79@Mw0+cBSLEh|mXMmf zI%SEob#GF+PI&hAws}K?ER}W$23l!$P;Omk1?}=n2Rqxeyy+9XR?*NDlBg6NhX$kL z(Fy28bP_rloq|q9L(pmHbTky5frg>s=uC7LIvb5ZW#}AqE*gnOq4UuBXfzsw#-a<* zh3FzQ4qc2cLF3V-Xac$nU5>6m<>*Ru6}lQ-gRVu_q3h8N=tguCx)}*gM3c}hr~*w! zpj*)tbQ`)IO+|O0JJDU}Zgda27fnOc(S4{A-H!tF0D2J3Ko6mrXcn4{9!7J}Bj{1| z7^*^#qiQr4%|lP1C(%>rY4i+w7CncaM=zikQ4M+t)uQ>R4lO`0qlM@d^eTD{y^h{M zF|-IRMsK3G(A#JUdIv2<@1pn6`)C>Z0DXv-qmR(XXa)KNeTqIqpQC!T5`BTbM61wO z=xekZtwGV{QQZIl