From 1f2946bd2c6b0963f97b9e38f3546901c72ec679 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E7=9B=B8=E4=BC=AF?= <2263510185@qq.com>
Date: Sun, 12 Oct 2025 18:52:36 +0800
Subject: [PATCH 1/2] cxb
---
src/model/Login.java | 17 ++++
src/view/ExamFrame.java | 172 ++++++++++++++++++++++++++++++++++++
src/view/RegisterFrame.java | 42 +++++----
3 files changed, 216 insertions(+), 15 deletions(-)
create mode 100644 src/view/ExamFrame.java
diff --git a/src/model/Login.java b/src/model/Login.java
index 54192f2..10712a5 100644
--- a/src/model/Login.java
+++ b/src/model/Login.java
@@ -64,6 +64,19 @@ public class Login {
return null;
}
+ public static boolean isEmailExists(String email){
+ if(email == null || email.trim().isEmpty()){
+ return false;
+ }
+ for(Account acc:accounts.values()){
+ if(acc.email != null && acc.email.equalsIgnoreCase(email.trim())){
+ return true;
+ }
+ }
+ return false;
+ }
+
+
// 注册(GUI 调用),若用户名已存在返回 false
// 注册(GUI 调用),若用户名或邮箱已存在返回 false
public static synchronized boolean register(String username, String password, Level level,
@@ -73,6 +86,10 @@ public class Login {
return false;
}
+ if(isEmailExists(email)){
+ return false;
+ }
+
// 检查邮箱是否重复
for (Account existing : accounts.values()) {
if (existing.email != null && existing.email.equalsIgnoreCase(email)) {
diff --git a/src/view/ExamFrame.java b/src/view/ExamFrame.java
new file mode 100644
index 0000000..eda873e
--- /dev/null
+++ b/src/view/ExamFrame.java
@@ -0,0 +1,172 @@
+package view;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.ButtonGroup;
+import javax.swing.BorderFactory;
+import javax.swing.SwingConstants;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridLayout;
+
+import model.Paper;
+import model.Login;
+
+/**
+ * 答题界面(选择题,四选一)
+ */
+public class ExamFrame extends JFrame {
+
+ private Paper paper;
+ private Login.Account user;
+ private int index = 0;
+ private int score = 0;
+
+ private JLabel qLabel;
+ private JRadioButton[] radioBtns = new JRadioButton[4];
+ private ButtonGroup group;
+ private JButton submitBtn;
+ private JButton quitBtn;
+
+ private JPanel centerPanel;
+ private JPanel bottomPanel;
+
+ public ExamFrame(Paper paper, Login.Account user) {
+ this.paper = paper;
+ this.user = user;
+
+ setTitle("答题 - " + user.username);
+ setSize(700, 400);
+ setLocationRelativeTo(null);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ qLabel = new JLabel("", SwingConstants.LEFT);
+ qLabel.setFont(new Font("Serif", Font.PLAIN, 16));
+ JPanel top = new JPanel(new BorderLayout());
+ top.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ top.add(qLabel, BorderLayout.CENTER);
+
+ centerPanel = new JPanel(new GridLayout(4, 1, 6, 6));
+ group = new ButtonGroup();
+ for (int i = 0; i < 4; i++) {
+ radioBtns[i] = new JRadioButton();
+ group.add(radioBtns[i]);
+ centerPanel.add(radioBtns[i]);
+ }
+
+ bottomPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+ submitBtn = new JButton("提交当前题");
+ quitBtn = new JButton("结束并查看成绩");
+ bottomPanel.add(quitBtn);
+ bottomPanel.add(submitBtn);
+
+ add(top, BorderLayout.NORTH);
+ add(centerPanel, BorderLayout.CENTER);
+ add(bottomPanel, BorderLayout.SOUTH);
+
+ submitBtn.addActionListener(e -> submitAnswer());
+ quitBtn.addActionListener(e -> finishExam());
+
+ showQuestion();
+ setVisible(true);
+ }
+
+ /**
+ * 显示一道题
+ */
+ private void showQuestion() {
+ if (index >= paper.size()) {
+ showSubmitPage();
+ return;
+ }
+ String q = paper.questions.get(index);
+ qLabel.setText("第 " + (index + 1) + " 题: " + q + "");
+ String[] opts = paper.options.get(index);
+
+ for (int i = 0; i < 4; i++) {
+ radioBtns[i].setText(opts[i]);
+ }
+ // 清除上一次选择
+ group.clearSelection();
+ }
+
+ /**
+ * 提交当前题
+ */
+ private void submitAnswer() {
+ int selected = -1;
+ for (int i = 0; i < 4; i++) {
+ if (radioBtns[i].isSelected()) {
+ selected = i;
+ }
+ }
+ if (selected == -1) {
+ JOptionPane.showMessageDialog(this, "请选择一个选项后再提交");
+ return;
+ }
+ // 判断对错
+ if (selected == paper.correctIndex[index]) {
+ score++;
+ }
+
+ index++;
+ if (index < paper.size()) {
+ showQuestion();
+ } else {
+ // 做完所有题 → 显示提交确认页面
+ showSubmitPage();
+ }
+ }
+
+ /**
+ * 做完所有题目后显示确认提交界面
+ */
+ private void showSubmitPage() {
+ // 移除中间题目区域和按钮
+ getContentPane().remove(centerPanel);
+ getContentPane().remove(bottomPanel);
+
+ JLabel finishLabel = new JLabel("已完成所有题目,是否确认提交?", SwingConstants.CENTER);
+ finishLabel.setFont(new Font("Serif", Font.BOLD, 18));
+ add(finishLabel, BorderLayout.CENTER);
+
+ JPanel confirmPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ JButton confirmBtn = new JButton("确认提交");
+ JButton cancelBtn = new JButton("返回最后一题");
+ confirmPanel.add(cancelBtn);
+ confirmPanel.add(confirmBtn);
+ add(confirmPanel, BorderLayout.SOUTH);
+
+ confirmBtn.addActionListener(e -> finishExam());
+ cancelBtn.addActionListener(e -> {
+ // 返回最后一题继续查看/修改
+ getContentPane().remove(finishLabel);
+ getContentPane().remove(confirmPanel);
+ add(centerPanel, BorderLayout.CENTER);
+ add(bottomPanel, BorderLayout.SOUTH);
+ index = paper.size() - 1;
+ showQuestion();
+ revalidate();
+ repaint();
+ });
+
+ revalidate();
+ repaint();
+ }
+
+ /**
+ * 完成考试 → 进入成绩界面
+ */
+ private void finishExam() {
+ int total = paper.size();
+ double percent = total == 0 ? 0 : (100.0 * score / total);
+ dispose();
+ new ResultFrame(user, score, total, percent);
+ }
+}
diff --git a/src/view/RegisterFrame.java b/src/view/RegisterFrame.java
index a08c1a6..ffb3c13 100644
--- a/src/view/RegisterFrame.java
+++ b/src/view/RegisterFrame.java
@@ -1,6 +1,6 @@
package view;
-import java.awt.GridLayout;
+import java.awt.*;
import java.util.Properties;
import java.util.Random;
@@ -25,7 +25,6 @@ import jakarta.mail.internet.MimeMessage;
import model.Login;
import model.LanguageSwitch;
-
/**
* 注册界面(使用 QQ 邮箱发送验证码)
*/
@@ -33,19 +32,21 @@ public class RegisterFrame extends JDialog {
private JTextField usernameField;
private JTextField emailField;
- private JComboBox levelBox;
private JPasswordField pwdField;
private JPasswordField pwdField2;
private JTextField codeField;
private String lastCode;
+ private boolean isValidEmail(String email){
+ String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
+ return email.matches(emailRegex);
+ }
// QQ 邮箱配置
private static final String FROM_EMAIL = "songqifeng.sqf@qq.com";
private static final String AUTH_CODE = "gcyschltjgxedgjd"; // ⚠️ 在 QQ 邮箱里申请的授权码
-
public RegisterFrame(JFrame owner) {
super(owner, "注册新用户", true);
- setSize(420, 320);
+ setSize(420, 300);
setLocationRelativeTo(owner);
JPanel p = new JPanel(new GridLayout(7, 2, 6, 6));
@@ -58,11 +59,7 @@ public class RegisterFrame extends JDialog {
emailField = new JTextField();
p.add(emailField);
- p.add(new JLabel("年级:"));
- levelBox = new JComboBox<>(new String[]{"小学", "初中", "高中"});
- p.add(levelBox);
-
- p.add(new JLabel("密码 (6-10位,含大小写与数字):"));
+ p.add(new JLabel("密码 (6-10位,需含大小写与数字):"));
pwdField = new JPasswordField();
p.add(pwdField);
@@ -70,11 +67,15 @@ public class RegisterFrame extends JDialog {
pwdField2 = new JPasswordField();
p.add(pwdField2);
- JButton sendCodeBtn = new JButton("发送注册码");
- p.add(sendCodeBtn);
+ p.add(new JLabel("请输入注册码:"));
codeField = new JTextField();
p.add(codeField);
+ JButton sendCodeBtn = new JButton("发送注册码");
+ p.add(sendCodeBtn);
+
+ p.add(new JLabel());
+
JButton regBtn = new JButton("注册");
p.add(regBtn);
JButton cancelBtn = new JButton("取消");
@@ -84,10 +85,16 @@ public class RegisterFrame extends JDialog {
sendCodeBtn.addActionListener(e -> {
String email = emailField.getText().trim();
- if (email.isEmpty() || !email.contains("@")) {
+ if (email.isEmpty() || !isValidEmail(email)) {
JOptionPane.showMessageDialog(this, "请输入有效邮箱");
return;
}
+
+ if(Login.isEmailExists(email)){
+ JOptionPane.showMessageDialog(this,"该邮箱已经被注册,请使用其他邮箱");
+ return;
+ }
+
lastCode = String.format("%04d", new Random().nextInt(10000));
boolean sent = sendEmail(email, lastCode);
if (sent) {
@@ -108,6 +115,10 @@ public class RegisterFrame extends JDialog {
JOptionPane.showMessageDialog(this, "请填写完整信息并输入注册码");
return;
}
+ if(Login.isEmailExists(email)){
+ JOptionPane.showMessageDialog(this,"该邮箱已被注册,请使用其他邮箱");
+ return;
+ }
if (!code.equals(lastCode)) {
JOptionPane.showMessageDialog(this, "注册码错误,请重新输入");
return;
@@ -120,8 +131,9 @@ public class RegisterFrame extends JDialog {
JOptionPane.showMessageDialog(this, "密码不满足要求:6-10位且包含大写、小写和数字");
return;
}
- String levelStr = (String) levelBox.getSelectedItem();
- Login.Level lv = LanguageSwitch.chineseToLevel(levelStr);
+
+ Login.Level lv = Login.Level.PRIMARY;
+
boolean ok = Login.register(u, pwd, lv, email);
if (!ok) {
JOptionPane.showMessageDialog(this, "用户名或邮箱已存在,请换一个用户名");
From 65c60a43ab2e3f685e251a0f14b8e9c754ae0fe6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E5=A5=87=E5=B3=B0?=
Date: Sun, 12 Oct 2025 19:22:46 +0800
Subject: [PATCH 2/2] commit
---
data/cxb/2025-10-12-18-57-51.txt | 20 ++++++++++++++++++
data/users.cfg | 2 +-
doc/MyApp.jar | Bin 38636 -> 38719 bytes
doc/lib/jakarta.activation-2.0.1.jar | Bin 0 -> 62154 bytes
doc/lib/jakarta.mail-2.0.1.jar | Bin 0 -> 689294 bytes
out/production/mathStudyApp/model/Login.class | Bin 6877 -> 7111 bytes
.../mathStudyApp/view/RegisterFrame$1.class | Bin 827 -> 827 bytes
.../mathStudyApp/view/RegisterFrame.class | Bin 7556 -> 7513 bytes
8 files changed, 21 insertions(+), 1 deletion(-)
create mode 100644 data/cxb/2025-10-12-18-57-51.txt
create mode 100644 doc/lib/jakarta.activation-2.0.1.jar
create mode 100644 doc/lib/jakarta.mail-2.0.1.jar
diff --git a/data/cxb/2025-10-12-18-57-51.txt b/data/cxb/2025-10-12-18-57-51.txt
new file mode 100644
index 0000000..ab6e688
--- /dev/null
+++ b/data/cxb/2025-10-12-18-57-51.txt
@@ -0,0 +1,20 @@
+1. 12 * 50 + 88 + 87
+
+2. 63 - 2 + 91 - 42
+
+3. (19 + 66) * 78 * 38 * 12
+
+4. 82 - 9 + 72 - 56 / 6
+
+5. 77 / 11 * 10 + 60 - 64
+
+6. (56 * 67) / 12 / 72 - 95
+
+7. 76 * 70 * 48 * 71
+
+8. 8 * 50 - 30
+
+9. (60 * 44) + 27 * 95
+
+10. 11 + 13 * 55 * 53
+
diff --git a/data/users.cfg b/data/users.cfg
index a790fcf..efa0e16 100644
--- a/data/users.cfg
+++ b/data/users.cfg
@@ -2,7 +2,6 @@
王五2 123 HIGH wangwu2@example.com
123 Aa123456 PRIMARY 2571400460@qq.com
王五1 123 HIGH wangwu1@example.com
-scb Aa123456 PRIMARY 3110858122@qq.com
张三3 123 PRIMARY zhangsan3@example.com
张三1 123 PRIMARY zhangsan1@example.com
张三2 123 PRIMARY zhangsan2@example.com
@@ -10,3 +9,4 @@ scb Aa123456 PRIMARY 3110858122@qq.com
sqf Qq123456 PRIMARY sqf090815@hnu.edu.cn
李四1 123 MIDDLE lishi1@example.com
李四2 123 MIDDLE lishi2@example.com
+cxb Cxb123456 PRIMARY 2263510185@qq.com
diff --git a/doc/MyApp.jar b/doc/MyApp.jar
index 01c6564cbbca849b2833227d325514ed6ac7dcfb..46542eb65df0bd94dd4ba1f5b6bc00f1f57bd102 100644
GIT binary patch
delta 7808
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
DToQyY
delta 7744
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
Z1LFQHjQBsPf6fa8_bnTWZ}Q*Z{{YtvKa~Ig
diff --git a/doc/lib/jakarta.activation-2.0.1.jar b/doc/lib/jakarta.activation-2.0.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..521c7c49f7a87c7bd96b704286c508b345dfb4d0
GIT binary patch
literal 62154
zcmbTebChOHmN%NVE6qyVwr$(CZ9B8lwr$(CZB{z7(zy9{&&=1;Ur*n;_gU+#_586T
zPQ>PK@7QtVB!NMY0U#hC03HRT6afC=hYSD$AT6xKPc1GZLMzQLBQ7GWs6-*C*rFIbOE982sq%8=U!Si`owtw80
zQ1@qKQp{|WWE>XXP7cO-8gL2C_ul7Z;_B-aisr4NA1X{l{c6;`
zS}9Feg|4%g+SuB!xE_?Ja$SP2pCv=Gs^0XNZ2qFp+7PhM$wwE;V)|RxWl{tXy?->s
zpgGbXUUgrm){Ukmn$uxlZ50x=U@5Xli;RNGd$p0yv*{oL^`u7dVMV%6JbeM>B*7tc
zmq9?L0RaF|K>z^czI6f$0008u|I!J_Z~gc$o%lawfBs2zzDELB=v(SLIO)^=&s0DD
zflA-d$=pTX$=ufF-wgO(8i1j#^}nI`>&1UjI6D8kdH#Cwe^ULgUX1&%2RIm;nmal<
zm>WC(!;=2ljNre={uj%v^<9krab^EZOz?jbe=n5gdpk7$a-sh`p80<@{y#+X&r|;0
z4LtmlEdOHGf306iTu@j>QJBWss7YZW=70sEb4Hcvu@RVT`T&`TR3qOSsQ&cVqMP@k
z*aIA(IFpb&*!>gv{391C|1U|H)%>BW^YZg{LN5njkF3q7lC?bfj#qOCjIP#~a5_?+4|f^5!0XMqCTWnd(ln~93#L~0W}GaNuL}&?lox8c=
zT{1H^2njFN|^D(Z69*a8AfCQgLKa3h70*~NI6~HEDcNf>~0#0B0a;bz>mc)u%;0~(Ru=S
zr)lZwSAHt6t+5m%Owk-WM!aCrio@(B@H8N%H)^GED`whllfV3g(wV*Ulay)O#7R`M
zg|RkLw<`))2HjQ>2{*PT((%&g(1-jW)~-M2d*6_;uM(#~+R!Ek2!o7J7O{iPDDSL<
zmak$2f>559BX91{ogBRwkNOg%97C~g8)to-dTZ!DyfB1K%P
zUFD+S7=Z+xcOM^4O^d3hrO$K=u7fd;rIO4mmi!h$X(mRN!$ivt(O^7A`y;OvA>xEY
z!jt#N4vA|b>LKO?C^TrW#~#A){Fkt=U&V_qGn70Z=te!Wlg|e{s=lgw)icX{C~dor
z1)-ERTU8NN{7ZTTc%0)0X_5lzlf@LH6g^c3Brwc{Amn*U6Y7|lJVv!r7o&j6)9ME<
zjX$NJXB>8lay;xnAqM~(zp(7Q0>ip3+m+G-8~aE;F(%ycu_1;@zuY~)El~M$JF=zD
z5tqtnSR-2cj$tSe%nBk)%nsvZb;5fqM{Ni85OI8qk*WC@k;-5MI3lqY)-P!4YIX_K
zsII=ie|cGNJ!UrsU;qFUu)llRe{FK;|7dd7`sP-K`gSx%#wPmCR!&*J`k?yh
z5QJtPDN#KTf`;J{Xa(RsXtqz>6y
z+BpImhdQ^)++&%)ngk9f*O7p}mbswOh#h`)zWeCdZq@2|pTt_&g2RHd^wtLXyw@Id
z@i+K+X6kQ>Z9rDh%N|JoEY`pv}%qw{h1bQz~7?n5ddbfm0NBQ#v_}GfcQ5r-IRJ5DQ7v*)Uzb6yj#s
zga!==(w8!(mS6p`<$~@6`r+ms0pW4hd_ta_@2L>AU$(^67y@5$XD9i7{qkYGq#HGR
z=PS|79u1hU$Dq_hUB_qxk4{V8;knrG_(cX7q$X5o_&RMe9^h{8=|CI5N#TM_j0@49
zziHlv)>aDnH?xI-{vE@S{*mD_vP$3X{@d4E$M@N6d^7sm0}7}OwrR_N^JtkEr&b>w
z$|zJDC9OGite9_%{{684yJW);7bFZ-`twWlY8TwpAvM>~-}bR3$!c%SxP4uU3-f+K
z5opA4m_AUaz>bsMsxO8bCV9A0bm0DO`kMGHfM#Xb%Wq`^hYP+HJjYS$t$2+=A(}=`
zO0D6+77uGsHs#fT)6j*J%}y)GBPZG&ZckT!&Cnc0{tjrfs!lILE%E0nxo0wng}km9
zKq$H!zc{m(K0PorP;`V|>lo@qRU^~mlP>p=f~(~V0DZ2s+CEco=Oc6?Lo>-OQFUjd
zu)v{Enz4VcceyH>D6@rd_?Eku>Zf6UW1R|K*Q)-J=DEg+TbPSh1ol#>01MG95~leN
z&nDyx_McLQkrjfoh4^W(gA=e+*vh%H?ix5Y(t8>MiXYET9PbEAral^XT)izSJ}$JWm`sthQAjQ(62JaU)@E=!)0N+{zWQ&n
z{%4Rz^)2iF1Zn>OE(C3@t@Uk;#BEG$i3E)GZ5)Z{X$-CO9UY?;jBYZwOoUK1t
zY%p0@EvZ>oqJhHqwUp=P3GC(fCw1FiEjw*Y=(KHsyhVB~kq&|L3xWD3aZ7Q#RXZ@TSKC`LOmfL-q=~|y^mzB~y3`9XPz6a$
zm=5sE9>3+MASu8%s1}s21^pX*-re#bCiKkt&=9^ldC?9A_yZ2NSKp#}3wwMnec$
zEsCKho#iILf(ej%z8Wvrn^$>q7UsY+3l7*Sj*Eem&3^2<=yv)eXr-*6ZU=l$2LG+6&y-hzsCcowH3r6}@Sj!!-;FLbGz)Y2DOD
zYrJHr%TKVh0d3nb@>}=67Q7c7>2corM$|rfJam7gD!sX;SeC2(`j!E~%jhUlzn#%OdrI2t?M`25aSITZJJw!8o>GHDd%?B2q
zh}JCRM}KWr8z(?1Wk^5Zq`Btfj@8I=+{PjPp6vh8irT(r^
zNvh_qKa|mZNF+&v_}BR&$P3FP>41BBKCQ0El*ixbQ_nX<|f!~tEA(Kb=!
z5m8(>;Q}N}9qe8LPEO@xM|yT^Zrm16Wac><6?@^^COEHMa$MV3c|Sk?umV)~y~%^v
z|3+RktccpkZv}0cIE}BPj;pm0MUiLis(gk)Pa#fhD0VnM@8x&Y}FXXt=ptLu)%ne
zfT&qgW~AjGOD(o(IbQVAIcXlJyN|Kp2suB!Y+tZ7CSGj3R0v&il3{+EZ{E&WU?$am
zT_(sg2-e4(rhx1-8c>1EQ=zPoOx-p~^$^vs6>VuL652J!3U<
zqKAbkZ7wKQo}v#?9;uyls$ga-O<#*zvs`NHo?lgpbwyGk;f`q|HEUR`v}ti0&5E&3
z^`?f!oiEPT<^pUIUz|I1Y>r}=(hdHhsnj9sx_mkJfL~WMiR|q}h<_FL=T7T5&(wjv
zOLnSij)^&ac{g0K|GZi(uJw?)@tb_#PWL9Y}6zsMKexAIL|yQrX04hLXajS>WxTf
zBqk%po_D5JU?Ry;c>WoS3yoY=J@lxu1tb=-}=kH2#iK+r9mnC+?{Amuh9Y5+=S
z2oaLe%i$?g@MR=0oRLR%1vM(u@{zf7`a+#Yw{ly~4%rrJafbqUn~H&P=K@!t_4$$A
zpR7#b25viv?ivU%MnPQ#hL!)AR!q*_1M@aH!XPc5kXl{2^q0_Nv%nBKkcizE9A8oAF$xpr+
zNnwU?)=s|T_Qg4u6q>pgjbcO1N{0S?qpGQ9`bmcC1&nyhagSl5&$m_)$BsZ-ghQQ)
zD?6-f2|Uqe>3M7{FAfW4L)XCSBPGq5dD(oWS?tIdove%O-tAq-Ew`Z3>c>u)sN}Ni
z>DHFqFfZ>rgNAAW9L#xXpyk7a_8$W(H0R0o?>sAKZl7U>&dH3%CiAR#3OtzHiPRs>
zO`4koHat}AelK%$O78u18r2ovMzk~}hBFy$C)W(E0W+OHbG)sv_8s;p!u(n-#mtXs
zrquVbWwHXC;v)gX`GO_6`0V+}>31cxhSFr2yYYbq*nZ*bf|~dEhV-ga9g+pl{9Hwm
za&`&Ee0dKD_I?+7c~%aZKB
zwL8^T8W{+eLmc0bL&|e&4KokW43kE|_Af}?PJ{p*N|B66&3*+`E|FhzhEgUB^A5$p
z!V)Y)oJ1DrV+=!+pCVTqto$)CP!e~_5sk?(gUWI|Xc3v3kz33zJSiC@tN+K>>lXR&)arrPU=P#u9F~cv2goxhP>puLCjXVFmo=#1
z71H#KefbQuaZ8LhO;~$_0`-jfc0*0OcYTB0eKPg(gZe{CvPbS!^*!V}E?tZ;twZc;
zQ03V+y=#kR0j?u88gJ5K7c?y#9GT@^OUCsm8mJx3$0Xc)_&_eS7^+1xCvpl@
zSu}6aqJw$gR@mgxP5A*4)-xcpf)m77-t-*bR;As$)c{1E5llnqH2vFZJu5Ip
zDwPpz&Bj~wM3!(v(2>Oxh)gG96GIy3@U|FxvLUKqvJum=d-i$wxC8ge0qDUSgf=(>
zL>;59&Or|MwIQ#hj9q&t1dML0@CA~VkmI&gTN3L&bn7_Djojbd!Uhw<|f)Y_>KtkvLe3_
zwFPo|4q9I@+7{&oMQ_r#E4kM5yMJPfYcoT@bhP-Htl|$ffD>Ds4o^3^HPVvl_&9{p
zG7m}1R3#3@50`7EHu8B((X_(WP!;2J?V!lHDV;RTMNY7|cw7*k0}lQe)*#+tUBFOUC3P^roJ`#1Pfl0>B(
z&cWV_)kZ-vJKmjrrU&f%}Je8=p)hs8?I&~Mr;U}*dM&D2$)_7
zp`()EUnIx&=_l&;LLS5BusZrF``a;YO&N8`6VqWdl=!0Pep4!kOP
zn2)c=QQnCe~r1nBf?Gqp0
zj3eL@D*Qm^=F6G~nrR8j96`ipKAJQ{7?A=$vCFI%jw7)IisMDEpXCYCFAxZ7Pbjh<
zBufxPn-Z6pe1+v&oYDfc!M+i528}K{q^BqH1IvQ!db-gxTV~8-d+#no>-N
zOx>kBHg&%c$V?bdCfONJGOjb(8*+SopCRB!4uZi_1}p)to|=%T?{Xqd_5r$qtuo~utx5Sy@4
znY*A8VCEW}1d^G~k8%rDscN5JRgcHOQyCESpDoXFgkd)I7+KVUz`c1+*sU}!ysR|0
zrXhEokTG{FyzdruTFjRbMX@<66^V}VXgot7GQ=@NU%3$)0U=?QI!hJF;QQ!tpsJqi
zW>FeG7|$S224H{jH#fH)R%K~U+N&2jsZL>^7*8qv+-z$;T77f3eft9rvAM2vm9N~2
z<$o;JXy=TEsy6nE2`0%{6t=!3B=T_#V-oZjjV|O9FObU(dhoPe9{4Wng0r|{*~-6c
z)R-nE4%%GTVmX=8Q$2Ul5mqb718H<$?R>6RJ35nk7EXb6
z&?6S#zf@kDzUQb7OeN=}(ty!_v9U`V3mMeho@g9^Vh1n_Q$%OLxbQ<5UGZu;}@f9QGKA=gnH`kUk?W;1&wIk{J)oW9As
z+A+9hUL`1yF(>X@pP@-`X2_X>v*Efh(7V~X4RD(!aCfKRW_whFO}})h-$DPfldgau
z&BgCRKo#i!kNEWucJlZ5Rix&whrHtc<=sFT-57NRjB_gFM}xqcI-v%H;jf}c2n=Lk
zsvfPU-&Ao?ZDn>q(zH-$gM??TFe1I*EMr|1ZfGb)^usDJ3w6CwdY!{QoP~%gc`m68&oagW$l;@q%r|>`;FXCpI>mAysGC8O8NY@+WofYS+
z`heG~v=@v0S+?mbrTwdnp&1^d%BO4<8vicq%-dz0$#ec{NRM6`lVLr
z7vcVZ!QA5h?H>Q_>y7xBLdk`@o0wC5BDVARpK#gZGrF-*Jhq=9?bC`mFNvy9iwdR5
z1Wm{lMMBg?P=!)}DQ`yIO0z5qX9*N#k9)%ExsuT|P4_p-Ws0+ZEXo#&`a*Hd3!&=e
z%pZSfr+eKTm|DD)(L_3_XA(+!wMMJXQ&IDHNozQpFBEB~6tz?RKX;-)!nM0zSaNnHTWE4?*{=k6$Xf7`uLm&}3
zfC0wwjo7}DE1R7wlL)s4e4GAeJQqctwcb7|k%7OM*Ju>+Tx1ePdwv|q(JDW#J|l@5
zLjpSkp!h7SP?*`pVskYP(AEnARR)&74VKPacnEk0X`SQ2NPb{nyzp|{PbKOl74dLCjNeE
z^X#khGaF?Cw^JXJ1-tnVVK|FHDW^?)&l*@JOlU?024B5g9A-wK{Jb{fR0~MMrYU6+jRyf?0c1d`zkc7l_@G=P;U)OK
z2Uy^U*)_i9eUy;-)H%^<_G}n?t0z;OKOIs8L^*?g@hpt6Sn*_10S!(&m8qIFF9wrn
zVm-*xb$Bq6iLa8}TIS&RZpG$4rvrul@b&&vE}zG#CkmlX5(yXH`Cm^c_qPR+qr7nr78CSB+w}?n_
zF>xU?K7F*8A&$w7f$d9zEC!e)qp`}yXe5CIdYgauT|f@*o79t)j#qm;2ef8fjQKPg
z3@;ySPb;mOAB$^l8i}P|Jmw9SIURS0xy!~&%53_JEf2$R`Tj&=lb}4SS4nXmgarvS
z;o5HWdbvx>$L|Vl6A5&2aF3Xcz#>h&fMw4J&@YkoOs}eJc$07yYbxkxdN+pJ=KI4#oBt!l`a)N@R)*Q)Le-BRB-8{E1)IFc51r
zTOpeioG@qdx3^&zOgH9SHoLC3o?g!A_0Tg|^O2-5QQV>WS$_zg;OG1N}D8r-C6HHIg%oioTi3cMTyKtf9kXZrPqZ(TGU*-%1k+0y>9p<~c5*)=$Y>;`F6jY5E@ZEuam1!G*;|OG
zIlC-~3xkTn&~a101;KCtsjtvgxzC$M?MA7uBn2BG^Lctu^Xs!?vf*gBu8bW?%OQ@C
z5o#Osnlbx1xp#lF8G5#cJ8e_I-xIlEQotCB;SsILGzmE4gmwZ3nwcg0l=(dQ4W87$
zwD(N@h@fST#qV|=Ux;r+TqJ}?Nhqh?nv7=tc0`V8*MG@?Yo;&IXR~`rAWL|FR-DNi
zd+oHODLW&Ht9V4=5Ap0T5`|)!{^NY~TFv$h4RW6u{xo^(Oh+kd;=Thro4(+iKcBHs
z=GJfYMp=wi(vmj$^&;i&NXHd0GPxVxWzui1Vb<#d13;Hsc9umd4STaZ-L}2XeyGW5
z>T#uPQQ6WRnwd4w)f8H}RRZSuoAcsg0M&;$sK6`nH$+c&uV?hz<1(b1#!=)=Ik6;l
zx`q(-T9s+8FCzPSW(8`F#&Ow@nYALD>93K<6DpSLy>`GCt*3!V=FuSyA8R2sL;3Ruh>%!
z%Z`9diZ4`TJDl$cV--FPPYZ87&D@FvyQsAlLbF;!V~~G4#aGW#ST(ck~R}si&U;N
zwsn$vmo+)FYkul)U4_>k6Q^#Gqi%l-uY{{t)Z~MW$x2rA=$$;t?g^MzTqIBzuf^9;k7+T#j5GsF8fqAKH%A$0n(x4b$yB!o@M8KwF>8
z?iquaRc_!&N#587Hfjiyjj5s!S0U2{**CPE%-eF^?!CJ07oeCuM1~Pq{MV+#~
zCO@8J;g(ai^qKjvx5BU|Ms_^~0Vl@;i>HccATg&Hy7Bknrb9|*!jh6ZY=qI)9|xMD
zBL0t(fwAt;%6Z9+tU9(y&v@g-vI^6c0Lr7E%VT>?_?!ztlK~~ATsbQ}v8330xW#rlSFlnEOFlEn>5nNn
zeCnQ4TDVEC()(
zi6m4xCCU~uM+XqK0EKF{t9~NnI3mMyCWuuLWPBh$G*6ICow{1Btj!oNyS`AtykJ+{
zoyg)Us&`M4
znYU?3vzA~mG_%egzXU&g6vX^9#S};*f$4-OsnAPL_M&p*1~$XV?+}`xt6Uzo7U);(
zmc&@tk~uJiS4l}G@zJG0^wb$vU`x$MBZ}ctRH*gx_GsUHazWBPL!*J2279Lls6(T~xMHwE73Pu#
ztVI)O=|Q(#h2(K!${z>pA1X3M8ONZR1$LNO_r%SVoF%CJo+w2eU{0Am!>{Lc=lhYJ
za>DkSDKg?@(~@p$%aT_H6yzB_=~N0!(@H6sZw`velq)Qb)eQGQOAp>D@-lWyuWfaa
zPL^_J??*`DrP_!;$Bi3TZ{@2kwmC@IY>sLSr5t}-U~^jO2`D>UoMXs^oqGatQuk79
zFH3K0L|X!NV1tpH;u&G{YfgaG!U?Z?BwDi0wPMYdT8l(BgHAM7sTDaJR4jw`G~;||
zu)
zZQ5c4xz7
zZ2X3ESnim1d#2H@{y^NQN!QF9*L@~V0+f>v=aIdM~F*
zmwS}z8A17#Zs`SrqcPSX_>peeES4yT>rbZASE6~DRvoIZNf)=Ic_#0OE?YHOaLElO
zV-BXb^2kb}$Xf)IBOAbHQh{tJBe;=z5n)4{p0GyT=>DJ>C*ljU*A}Syv7eNx7jO;d
z=+rW8&`oC$@Js`k#-l!u29sB^O4dbjhudqh@S7%#<)28s@Zj*TzcmF!1wc17e>Wr6
zf0xAm=M!AQ|G8eKXzT1?X#DpwfOahZck2y;@K>UopkFbHSgk%hR;T_7F)}11bEJbm
zemz0xa(I7XKt2$QhdYckDYQ9G4aAA+
ziY!Xa+UxowrlJ6cC#@D?H=He)p+NCmXM)aSe#)h5afa*F`A?eBd(i_3Q{RhtLGz^h
zJf&$e){`Wlv;3>|e(vX@h>PrC)?sNWL>fw;Bb8MLe4nXXO&4&);f}o*$s;KIOq-|i
zmI@fiAi#Zbq<&nar8jwVoN`0En;CYY@&G&J3Xc&Fc)L63zv?FGs#nQ7-`vppKK1_p
z%&-4wqLBXX+xlDYM3%~$!w*qpZfeL_t|)7k4DUL@-gqly2u*@eVlYF#Wt&peRRGqFx~ieXSbz08kfb1<9BEijVMq7HH!V4n
zqHg{+EqKP6X!?Q1qTC(Sg+@G?-H59X^nrg-*R9n5`
zh_b%4bCW~sBy64KFcIeq+x$(j1r%u@DS!S#Mm>5(a$!6pae+p)`G~UF$yRb^?t0Il
zKgZDmh|?s=*W9|a>!Zv$Q2M#~66(TB5+HF18_EgU%Y0^m_$SLxag9i#%ip@8ilP_`
zne>0e^n8EV^RGG2+~Vo_7*&+J5O$ff>XTaL1@~@4^w6s(Hy~T|3=tj#@T-dWK&f8oT}B%4w!(qrtQ9XX4?*2|T7Hm@UC)gLA<9v)cO^;$xt5>~O_
zjk6#^Ix(z9R(Bv3j|JaI>k(;qTB0tiRS!#V&|fInYbB>9YB!e@)-=A^6DxuF;X%VEht6%`X$3QfW?kn=&3Ec`9^tB
zftB^H$R+*}!R5<$(YRcTRL`jms|T{`qi6aMIclwbky3pU9hnLaK1$2SK*pLX5G2KT
zWE;MQ>+9hlE8n{CT&mMK@YARiS9iJ?~yL;rHr#@X>slT;E&w`JK&bACY%nEL-9z5
zo7y3p+5_Q%b9js{g%iGGA8qKApPi`6#Vw;V>K>H(H}Yp9GoV8-e+t)t307WeId%_
zcS5q^A7GqNOw_%)^EC_-O^}AzQZ|u8t+32Uk?rM(_sfvDwG5y`{No~jE`C~XIS~%V
z+OW&2Sza2_Sdxj^VTQ)Ohb-86GY}&C_}V8>BD5Rx#CM!3Y+oxWo|6F~i=S{opvXU}
z%zRmtWvPTD_wO9ejDec?Qg%N)f^Cw;W*CW3fyTP{k1PVYVboWy#Q+?S{&rkrb((7N
z`Q5-j4*l=kDfPb&Km7l7JK(Q^w1}0yi><@o9c#4mmMyX}GB4vBy)mb?c?&f)bwpC~
zhgnA{1X&R(bP^P`Sf1Rw-^S%E+{H9iM+3;8r9sjkIZT}f1hmX^LXmw!d!R_VQ9Lhb
z=)C#2@ITM5H`{QMFOf5>u14BUGIy>&r@0$;z8v2)3D%|2ek{r)WQ-Q7y0eWB(Bl?k
znzj4Kke-5cnaqxXNHKC{GMqBaG+?_8=QcoEs%$TqVR6w!){{CAT(7AHn|8?9ND%uuz9}@3
zW&SX(FksJ4rBz$V4;vh-S5{z&L8lFq5H488WHT2Ccn-T<-7Xb*Q?Qg-sn@g=pRqv3
zaYX}IcbIgkJhQOhrpPg%@Zx2qg=)yRy4S%d*p7!~IIGRTfk_SxA|-*^FV_Sc^N+SO
zB;i!VI@)A92!B5!myfT6@sKPS7M{p}vRKHL2vsimAwxPaD9y9qLvfATiU&zOmptx4
zii4k`H*Wu1LKzu=Id#3(<;>Ad4!Wf#g|b(Hm|HPeYi%;u{H-K
zm;$EC((gC!{Xspc$)*Lnt@P?9^OpV*&M{en$62R1&Z7A|>N!JMhN@X62+>!
zZoZ}91-DY&Z1kj={-`ou8WA4M#??)sV!20ei_lyyGznz-ikatDMYc;9WXm}f2t|gI
zpG!t!F$|_%ApAn1{&?C0P*B*GPpt2tUD?tYk-|A
zjs8T~j#mMAxFs$w0eBBkAFF`Z1u}td9jZD!0`Of^XfvQm*P_?du1+--s`u2W^TZ=X
zoIG=0YZ_WhRTe7v^B@yCn<0G8=*Jehm08%b1rB*y1nglhE|F5`LZ;A?WYn=toMfz-
zam&oC=bDhe5P|jitB(kl2XV|k6_Z{EZcojx1b70)t>agX6npui-4=@77BT4J;rPjV
zEc3B1A}0MPlNkW-JPaxbb;$cCw?isBP4Y|p!wm4={`_+_2%|SRXt8}l2*}8J;0`qG
zbO?dy??7G%SlmK<6fP)RA6on5w&Gn#^A8Amya|}kiU@Flp&~9AE-Fa7>dx_{j4^>g
z6bY@8<_jq1yCNQ9!iaU@Wc#a>3Uvuz;7y*s`&RkDd92)rd>HT1ZQ8Zpnj>DlrpUYQ
zpsPt;k|ezhYn(>aatnW)dy@elF)-cRz$z&Le&?H>wT0?sL0Pd1U|7lc6E{4O^$B;&
z){Q!Vp-C+sc!j38g{Gg{z{)W6iqGFGwEKJkFO<&Vn(tIZG|MJK=o&gp=J|0F5LO;?
zTb%E?2dC3UJ#YotBv?NHYxxdtyhGCQuJpQ+x#2v1Fy-$8KKaFa$-Y~XwW1vENqIJr
z_X=GJF58wG$JlyBvJ^18rwloqlQ2s+U?4S8H(c*R5vRn7fUm+?C=b4t0v^!TenJ`a
z@Sp71f1+`H0)+G8-|qC8MsvC%=d_0{8YHKR*D)VlD$GBcKNM|KZ4XmsUo1s3XX>~I{4BQ*v#en#3?9;UzvXy>
zef;P01+*8R#kJM);uG!19?Q!LW?R^J=Xt)~=d3VIe;D
ziNX-J&T^&vEKwoh&!2-86XfNk7y^#QY~AtKE*t~f1bh$WNf%HvQfr;$2V
zthRbzIseL4hzes>kiPR2hJV}e&G5fvwa9lnxUGZxe{eje4yvCILCDllYH@siT!X)J
zn5GDc3MA62&x5^x$PRo2^JazW9e`Itimz7e0Cj@yqH}HK?G~hVfJr#rKtSzOPi@ja
z_-Q-b-oZ$fg#@8~sq8ped7xS$802@k)t0&{Tz^ETkkE0>_dzooW~{OOuG-MElK^M1my|PgGgQ;A1xnLTO*&@Zy^8TqPPsqbs$hM9)KK<0dSMlJVr0F
z8(%nHY>p
zDhKDNfiyT6lQ-a`Fvtz(8>f^sehxN_L?>DcMcHqpvsh84g~6yL6mxN=@~+wzSsN&o
zOeGo*KFP8*oq{-pKnyR
zXi+RE42P%cV>Na?9k#L)A3?M<58h${uzeDHw#T8uuMI!n0vbx(F5JZX#p*~)UKbyT
zco3wArIDUxmGTL%XFBOr#H2swaw<4mUltiCC(&@A-d)G4H{+UTpr6!)
z4puT*PDYgd(5innoaMHEK}DA^Q8+NkA*LirC9T!5n6Ja(46~M!9;&h*k~4MeOxVZA
z$v7&!RA~?yA+=A5;XYl^CoJA0)2wugOiE2&u1axw
zQ^T3OL-M3Oh~OI#6G+yH%(7xPAU2>Dkz8k={86*3jMLNmE3>Qkfa3A@C_%ZQNjrDlhVlhs)icB}1Mb70HwXJ(&*gBCZ@5#%e=fvl2rNn{dhT=JZp
zqH1jtyP~WM
z*=#yR?hq^2mzX^s#d<@tb+KUDbF{;$X)k-~jj*3~PMyYK_oJcc;q*}Kw
zOD&zDtE!7_4k{P&o&sAT55g~O6X_bmT4(D+Mu*sN5qq)fa)GjJf1Y6Y(|F9Z<5R%bqCRv)JRJrg_@JLzEH@
zq$9+O&<-~S%s^^^7L~$;>$3yO+@XQmr$>tCrv-_N_&LU2V2Lp|RPXm;%8T$;KleqR
z%{61^^JO^299&xJ^;l1Icmkog&vU=xAdn2{VsY6*)8(F(l}z#$GBH3-5U{JN(ueX}
z1aPK(M16Krc4}1KpsOCqVk}2tRzH#m3nRNL^&+)3D#Q}mZawaH@o
z6#cq5vbaT5ZF`0~V$dQ>F)Bb5s$P1BT}lb7wFC~MNwsz~@Q
zkt;0H=JG1Uch{tTw#7d@B^CQ>`<%_{JV!f5j3(}
zJ;1aspn=MU(q*87IOB5<=-39_Q5ZL&O{#D`8N0TI>6}-qloG1+-OE7^&lTo6(T=H;
zIdWr0KMSPtkAn~Hl$Q3{q~&3|mud;qHB4vrL~!MVw#oIqz&k5#-PaBL+1K5<*UnMX
zbifM7nzl#QBxR^+f@!E+r-978DW@OXkKTd@tBbAYs+gSp)=>QdFOm`1F8yOqW5(lz2K{R7vKNLqJk_EWtrI
zNFUfYQ#o$B&>OObWYuF1mSZg%u$P%5p1Mqn3^3umm9zLUgv!7(?dB!LFb8kwRyRZU1Ft`YTMmEuD9)W6nK$K
z)gTr^Q0B^^^@|h9j3&l+v_HTF?)yI#aaQ7g_yJ{bVZxbt_8_2-PT9c3J8WtGsk6S?DD)P%@;I8WKaqS#((1
zNOS}P$M^OEbo*0P)OQK*AdTI6>IdHNDS}JC{32RC6+k~0|Bl|#fKVDizd!dd^nE4t
zf5uca{~lAx={x9uU)nWxkox{k!hZrRb0?)GoUg4lMtAXHq92ny1Og1=5CH@xz~Ti$
z0sw&^ObR*-w1;t%8TQ*)d>WvY`zk5RMZx7io1&{4l_~v`7nWt4MjjjS+P&^GvuR4I
zsuEhadQ`ObkhvFxumL31>6
zwbpu)vaZ+C-oXD4Ywr}F`M#|Cb|)R%d1KqQZQHiZPRF)w+fF*RZJQl)XUs9z-utu8
z8uOfsbNAlA^{ao?Q}uicsE|DiVq)cU9suPKf;GW0ejOIPU(0Vba
z$*9GK5lN)=V?iYKoX%rvlOR|gOmaIhHCo{j1H*b2FrkP>Ssn;4oHfSX)tI|BUGADp
zbs`-sc!&;%fqcR~_-7knK0yD%e(=da;pS(4bcF5f+?>qXA-~{&WN(i7BhlO>_vt%q
zl_&J7PTJIvmzjt4NEa2H=La4zfG~Ac^bCLXqvGYNyW;*vgd)C*<LWAV>(CRwkA>o11_~P>2Fy{Xe}SrR30m2#aP@H@vGzV&ecb$nybOFWWF_;NDXvqwRI=0v~qbL3JI97@N7k7#fL{0
zF+eeq8entI>!}_6cFN#rE-o${NrZQ1`B!rYw5gmfda@K)qnqRt%vBj{65RHK&
z3E>SJjLQ#RORe~gt``KUUc>k)rz-#qReG{W^)=pjGo6W8RID_(sUJoP?hNaLYz=~g
zsNIzD>fj+@)~?Hf@N1$eZdF@@=AM#*Y$c_)dM$ynTn;wQ9NYy31w
zm)Z^=nie^)G}hP~)cRa+OyEtKr1T%T&{*NFjOj9L+|$EhDDYcHV!0RAh9Q*oOoOeP
z>nSljJpVkn7^$SDby@w?ll`Rj?gYj(DSFLNltAVv?V9%?oU0r&XXhR~yxnI;o}M%B
zGpKL$%IiH^Bm%L-xOL<4JU6ZbSsYhR11@{N%^VzS-Uo@NkB2(E8M;BkOv;=<-{1gC
zBrk3YNWWKLC|avy@Fa;KB8{p9o%=rIt<9!oI?wDYz_t#dIpO|1Q_R0Woi6Gqb1xH3
zF|f+LK?js(UaoFArXF7YWM31f`wiz~51vpt@T?XCh_z$`6*>NJe{Xd#^Zq&xh~TCk
z{^rm1ITzFw;7Lby{X#2zSVN
zxOPe^rOBX#9iyW=RFb{L5PeUDt*JUJL$hlQ^3^^yXTZeU?8XR`3tAAn8&Zw_w$Ay0
ze#9PGoEtPMN$gHTlRc<<#@^8rTn(=69^NMY5v?7rkH4T>GGg}t!W#tKE;maMw#J#bN5mds#E&4(e#fsQTYZ~
z&2hH|ga8h?o$e4Idjy}4fu|#cneY~lke6SB9{ABrv)AV%`Ic7(x0-lKW{_5Y>p}#PUnF#9417CB2qkaR
zhFfz<|F;F@*yXX3k}xceKrwU41>_{&=p0)_o~sjpsw2Ek3b1~og)kYRj~m5OE%1S8
zXZc31%ZaYFmJa@cgVtdALW@=6p2D!bI(NCQw$AT9)cZPb?-JAx_D1D!gdiy4k-NcCxvgmw@OW4ajn+$9Vug|U*^q}?q
z$L4u1r6`m=S-L;eu>%bGI_{owf|6XP@vfn~r_s=vd?|1`;$3qZhy1^v|P+HQaMC7ATMeI9EdN|}mHHBcBLNq=CO8QDlL>2nC
z?XGgvei0gwM}>ic%z^^R@s&6*+JadqS-g4a=013Jpf#19#^~`>q$xZM%5Q?^3sDY_
z@IaYBgWx)7LDrgOw*2e?3mF;lj3tM7Lt6z|v{L)vvX@WFq>#r+KzD69wze=SOLl8V
zHd-jIF~O)?-6NaoRhiEKwm_U&H6*j&>d=nAer-ec;5E-$qO!&sgkNHqpp++4L1;LW
zr%}mQS?>wb@<-VfX$WO;3U#>)fnBF)n;!bJ*6#tLfVR;Q6v
zh$)@`uCD7Lv7B`0b--~X`uc-|q+qRT59~JtmAqLD8|U<
zhFTWHR5DmIF#DoIyj)40H-(fYn_xYr+bDp=ndzD1UZzUp`aCG-48}2
zq2_n{{CWU%9ex6C>$isG(#}v1!=PbVfk4wH0Rj6<4fs2nU@!D8)JbHXe~JFUI
z+oBQDz!|3(levcOfhiQ>J^E+?E!I0!4A7<_c0<3l*A0)^N3C;7Hsa(^FAWEO
zQ@v1geQR8L$<|G=oBT~Ut_Y>2ZiLRGJ%&DsWsTg&X9O9bsHkwYOetZb7+FU)!Kt5B
zl)@n%lsh+X8MO}4P(s&`7^oxfqfFK**ikD2-^h_#&k|VU`YXue{>@AL8({U{?WYv~kdgj-p#PnW1~j1DlolF4mQuwhjU2=T@Oomt
z^%2InBEu8mp#ueoBF5l>BRi)^{q8X$ks-M)X;SG`O?>%nfvaK3+_b8B9UGw0NL$;~
z)TpefNn6s~_+Y+O`Ec9v$#XP5B83j`+5M{B9nJoF-nqDHS$$tU#B_7w1h8W=q*&Ywm_t_!$dCx9UNG=AgWP#|2>tQkC
zIzN_Jf*Xw!es)CY
z#~O%H0f&(5Ak&*bY2fBXfM%jr
zRl>qtVz@nZ*f3LyAzU#K?E-zLcUV^5(O9K>^Xr+-q3!j(x+gB)F6MIsjE;#6F&ST4u0ie}7N
zoj;%K{){koA7WTegJoV05LK|gj1(Qi<(uD#1w(8>tF=+^05_D7MpFfK8&oBcBH1gJ
zuICh{g_I>dPmHYUBmX8$K2|z}^uj<2zhSPR7-2PCC_ZG}#stN6$~79dUcktIg=*{o
z-uT!MUoyayuoOGF7ePK|Mmvy4?ih6rPOLH@c#-SIHE)t1F?VFNYGO$8bCqi>?}8o$
zqgMt*0R_fiq*?Cl1ll!d@%$XJ^y$<}F>9MhG%Qh5h70(H5LjC~*DPJ3CAYrPQ+hm(
zq10;FMv&V^V|devV**?0vbN%&iwk+ns$yqKgBvUW7{(SMe6098R)gfk_)LG^Ck$OVx$GrK71
zldfJv|5S-+?0o{%p&zLSEdp9oG3NdzQS5-P`3n=ng&
zUo_ncP!t12kuhO$)Q&06a2dQ4ZV)A*Zou<*eVPU*7A$iq7rcm#S;cFplVneCFAyo?
zUzuPDQ6{0F+)63s8dkAM#_J7<7+cANSgXtoGh+*E`Z1s7kDlUEcFZZBlAeX{Z;BJ2
zuN}Xtv~k;%b}}`Jl`lg9?y1D}x5uYIJdKGN-E
z%sBSPLQuoLTYK62Itx3)^hg4wgVi4!cdpGdwma!@UG%p0;5UOP%#>aAo$W$OLFe(a%F-wCzJ_0~K
zy@aS6c5Z$YBH)z15U}>q#O*EvclHr%g7#qV1cEAK42c*-EFx;N3?b`%g1+nJb4nZN
z?bIN)g8y8D4lT)+3B^D}deIXAl_B6Ql!>0?>qR_M)oUG(X^AoU=++1F_2gPCB`O6T
zfB6O`V~7=->sIePf@fo3L0zp3Yvd%wfs`YGF;3;z07gWe%h;GE1y47OiD7?6RUi
zEVE*)#|w*otG^=rnaT6#%pnk8byU>pxddNzWC*%dg9Ex%#D!5RXt2)D|EUb$b6-QH
z_HMV>q*{@E-$T$wPiQRC!OySQ9*^;tn&Mk%N@*89?w7(%i8LuAum5&Y%l3u*y1Ie|
z+3ltN5Qch>M=`T8KtpU0D{oe70M+UFBNYN`?TLrDG7h?IL;(8!R_*VG{(ETsiuIEb
z6HMUNWW{or)QGkjT|oi5RoF(FacOiyQ(eiabs}c%0QLdWRB6l&m#zM{5DEsUpq+f5
zLbo5<4WZxzdHyGIbz0meuA1WH;(?4H54kJCQt@CYL@xrsW3&NXy`C6n&1QovjKO7~
z!OVhiVr+IK6Lm~;g<+wsH6#YVvf5awzL6I}jY
zs~#q5rX@79VToKLDc-Vmp@Kd(3n5thg*cq
z8aTd2N?YSWV3K6LnrmeU3T&LRhf`*$G?_Cu`yl2b9MA9#Pdy0RGD=K*`+h?lc|I|d
z=qjNJ;6SOrg-F7~!9lfu{nN=-g%0uTP;=lUT@%dSq+ZvkX&|B)JCteqS%#<5QF2TY
zV}Rex!;j-xkL9d1y|LHQ0N+?$PcoM6naO(-&(fJ>JsVV0=l2&KMBY4%wBW53Rt+
z?tVeQ`8`|{BR#2+#<}ZPK}8%PD}rU1HQWFu&?u+km`u?KxQ?+g=cAgnod{uulP4DQ
za8v)}3hHYOlSI&d)AZybJX%n4p~TMoI+H>CAd-v1LNl_WhlF9W8B?FkN}D3
z0xTzfLYFLsWD$6#^U|v7vx$62;mlhAyz%A*L>fzGY*H-Mppv|OdBs8z-2`*^lsPzf
zhnd+c!=L=j7XfB!!^N?bJ0*FzfCbgqn?r}@%xR0W30Q@La5pN0#Mh?fGPfrOk|WrK
zp@|0TT{~!+MX-rA{UB_51V{Mq+rNt1JfjBlppyCFkJJQNx7?L?T4EeKB5qv4@MPl&
z!|Q2P?gX;}nl|U)RO6XcNBLWrD=5b?_*`;%zR617<7d1RIV?W*X>J6si|SuD+oAiu
z#Hb!sUAMl*ZfQA#w1DxS7y_Q
zgc`c*OBPX;cZW9wk~r
zPwXwv?;|=dDBJ<%I|-gH{%2LiPfIploEM0)?OA%!AqVY~F1aK1Nd{li_%K$!vE)@W
zvKhfF)`HeNI3x~h
zeuI*ih_=cXl{61t5%M6%V9(EL-lln(PU}uiQuuTFjGQdj5=NM#)^AW$#dO)L9@m
zg}Y7q1US*zJ_cc|LUy^_hZf7-0qi51kE$A8OM9GX-rdwEJR=_N8lOHuqTX~OOy#D&
zg0OG(K3iu*%R69g847jrrEVQ{(eA)jZ45L{*^f#eqR8^
zHFZ)mTZ_muOex(n0lFaTcq1N{IN&xLXv1K>-fGz|=>c4D`(YiE2w{#$@nE{xVT-B#~<*qLT13fqcxO7z(zEPa5cMk95luceZ
z;>KAZ31tcJ)N9w*h1Yps7W2~Pdtc_ApE$S8yU+5g2>yJ&+g_jI90B9dcXO5MP-MeS6WKwqyZCwuRb2O7zvnlH&qB!!Pu9Y4C>E{}
zZLs@0jdvFv=qtUfCl$idfp>|bca7E@?;g`-4-F8uF191*@J%MQGHm(S=Dfni|B{ub
zJZ)7|8MW9g@FQ%j8X;*#W<3At8NBmDK&dZXD!2P5TDQ@3r*O_^Sd9;+@e_>2wdU++
z6v*`>^eyyDBg>MBy$j9K0Qf3M0{%uAoXVGh2HO!vMuELtfZp0
z>4<`$l3T(Tg=AOo%kWpu`}5-!-MDgIKCl|>Ug7th6Cj>1a(=Z#-2owdRolzPB&;nx
zaDp06zD)wb2E}E>sb{8mVmDueg5K<|4@pWiyAX$hUMnrKxM-F%;NTLR?R-a8Md5
zOc=5=SMk$aiB_K|Gc8%QEvnaA^MK^eSF$9OdQb?`Diz8~Ak;0BqI{hQU|Sat>B|gA
ziJsy-a7AuFLOv#{F_7z4NTHs8FIdq>4Wx?t>9`^=Ayb`tRJ0(qkk?Yg8@zLfSL${4
zy|^Qy@DZ>6q>%ku0{e{t?SKKU9>CvDWj)UmHF;D=EYCqH4V6&jW0q7D_V9hOtyROq
z;x)&*YptY`!@YF2sfI?lGEb?Iq-nNj0&G}GtTY}wz797xOtN&>LBIh7vM|-6>bH@3
zFEZ$DPFi79TH$$;P2B=k?tF$-xqH3!M5tScb^Jn%jtOhQs}kdCbn8T7*^wvmpBFow
zc*_sA!u`2y(MFG`{KfI1fyI=dEL&qTT2FZvE-07wg2(>wt05;Jk|K)s)(YFwvZl4s
zKa#_c|Du3|$iXidY(}-5r`lHiFs6
zF(Npy*g5N|KzN+cA!sd-Lzq{8%i^t3E;!WG<%D
zWWXqf;s9MyOZD=1E>w0=`Z#?U}Fh^N#(yTI6_d;#N)N^iB6YZ*SpSrm{umbE@6
zhl_U%je}!iSz76RzSl^YVyQ3EP5<`k*lG&;z9f&%0s5gyUR7E>_VA3moBm4|W@;{uYgze#|UnqwEVd-ahj{5!8kBKrkM5aeZvo5}3
z-kzKj<7uw`oM!_6LrJH%KIk-2@D3f&2_Mjj@1PU;&}l>HOwo*HS$fmwrqj@LX0Qxq
zS#Q43X~psUgaclxXw`CG+I1!(lc2yrfSPs_?HWmDo(M~27Bmhwv762X_szB5+dRBr
zjO}c~mdP8}*b{qzg*$BhzIz7kmTw9j!$S?J6kXt*jykJF3eQWA>F
z<+MNvis@B4;N3ZN>
zyOwuD`VmQlcSC0t;kG#{oBdMHAes%jv+cIE=AM{nBh?5*+G?Bp0v{oi2eK^^9}(&M
zv@OaXgP_M(ExI3m@3%Br+aTv>1)Tj463;c^KDNfapG~RX&*(?2HtXCT)6M(1;V`XR
zu3V2V?T>97j+@w>?n3v@u9o$4MW)i!#oSxK*@GZHK}Oi*fZHD7Iq@moT@(u_-W8!}
z#ZD+8GrIC{%QY+2HFyfI=wF$r(bUuYxUA8`8od%MK*%Thl|)-hI}}JgagrfBL+5YZ
zU!lapQ|a*yXV+?&&8^ii9wsSkcMue(5TS6=XIE&6EX8pbVO{KrNoW?(YEKpd<;r
zgn@Juoi|kuS(ral3nXf`7SWc9f{LHAV?8mZ3IkYI3udW;*s6>%$fC|lU
zRx8yGU|#k3@w8rHEg-hWcVsIh^a@`!L*v53NS%v6zD6|aex|}IRXD-qh0B|RdU04>
zjGJcPJ`}pf{qQaU=)lTa-_1v#^xTAaV7lDDIK{z6E2r#@IDe!IbM4+{%exbP8-Dn?
zb?LC{k{plNNvZJLEQ_j+HW7xcNPWI@hAVjSXeWeQ-#nX5~n5G2k$NzUF5CJly;T!mNn7
z)xYcu|J!OFscfx^DU9qxLQ6#jCC**Ret67_%HE*R@gN<7F4EumNAI+@wzpNPk+Yl33@h`1?#b+UP4$!!c}5
z*@Desnt$9$yKhyXc2uaNx>5e=S!dCnl1fc7y-LZtNKk-s;itJuBxark>djM#kh33>
zQs!=tDI4K*aOpDgP*#Qf;t5U8CxO%_$WEY*OAzm+q|ZucA6O;TSTnkeJeZuYW~m{7
zPjIFyv^GmRlxnQUT-LS9=M<3cshQ{xI9WGVK?!aqX(Jp@O4@FcyVvcLoB64A3=X?^
z`JM;?_huZe7IJaxhGi!-DV>*#U3pN4!kmMM?3#j<5J0Md`2DFKhHpNo>XFOWG*{MM
zTWhbi9H|p1P&j%Q>Apy83+vH?>Z?#^_`~C(I>}gRz4~-AYo{p~w6m`nj1*2fc^MUB
zTI%-8iUKjU7V`e|guVDwLxCJh2-AuLg&){fPfl>L2k{cUC7fS@m)OW}XD-$3X}t$+
z7@(%o$6bMbJmd~j4%#Io)0gH~U1PJ&d^bxipyEzwdCZUpteOQ=(ib9q7>CQe1b5f)u`p7RlR8Yak6f0
zGPB?md`)6!JhKuz1ZzS)A`Mng^Cb|b8n%w!NI>O(f*`dGOEx5{+I?%YK$~=0kc4;J
zNQTXcbY!6$f=bXj)V;>V@r1k?Rt4Nf0%662>tpq00GNq8O7R3cJnU;fqUE!Cz&ERa
zKg7r2KOLvwhl$`~#V!e-kPKF`u6b6INML7JYvC^7H;@cp&5F-O1BQIPBce>F;idsS
zr^`s_(cnum%?Q6hyd|z2LDu(QP+jY^D(ze$