texlive[74500] branches/branch2024.final/Master/texmf-dist: hduthesis
commits+karl at tug.org
commits+karl at tug.org
Fri Mar 7 23:38:56 CET 2025
Revision: 74500
https://tug.org/svn/texlive?view=revision&revision=74500
Author: karl
Date: 2025-03-07 23:38:56 +0100 (Fri, 07 Mar 2025)
Log Message:
-----------
hduthesis (branch) (7mar25)
Added Paths:
-----------
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/README.md
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/abstract.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha1.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha2.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha3.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha4.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha5.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha6.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha7.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/thanks.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0145.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0162.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0163.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0236.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0284.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0285.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0289.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0419.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0439.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0440.png
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.tex
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/reference.bib
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdubadge.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdulogo.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdumotto.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hduthesis.pdf
branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdutitle.pdf
branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/
branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hdu-graphics.dtx
branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.dtx
branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.ins
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/beamerthemehdu.sty
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-bc.config.code.tex
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-exam.code.tex
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-l3doc.code.tex
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-layout.code.tex
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-pg.config.code.tex
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-stationery.code.tex
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-typeset.code.tex
branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hduthesis.cls
Removed Paths:
-------------
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/License
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/README.md
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/cha/
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/figures/
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.pdf
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.tex
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.pdf
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.pdf
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.tex
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.pdf
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.pdf
branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex
branches/branch2024.final/Master/texmf-dist/tex/xelatex/hduthesis/
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/README.md
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/README.md (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/README.md 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,90 @@
+The `hduthesis` Class: LaTeX class for Hangzhou Dianzi University
+=================================================================
+
+LaTeX class for bachelor and mphil theses in Hangzhou Dianzi
+University is constructed by `LaTeX-expl3`. This class provides typesets
+for bachelors' and mphils' thesis in Hangzhou Dianzi University.
+
+Modules of `hduThesiS` provide the following supports:
+
+- `typeset`: Math and text Typeset
+
+- `layout`: Some central layout typeset interfaces
+
+- `bc.config`: Configuration for bachelor thesis' style
+
+- `pg.config`: Configuration for mphil thesis' style
+
+- `beamer`: HDU Beamer theme
+
+- `stationery`: Creation of HDU's stationery
+
+- `exam`: Typeset for HDU examinations' solution
+
+- `l3doc`: Configuration for class's `l3doc` manual
+
+Issues
+------
+
+The issue tracker for `hduthesis` is currently located
+[on GitHub](https://github.com/myhsia/hduthesis/issues).
+
+---
+
+杭州电子科技大学学位论文 LaTeX 模板
+==============================
+
+杭州电子科技大学学位论文 LaTeX 模板以 `LaTeX-expl3` 构建,提供杭州电子科技大学学士和硕士学位论文格式.
+
+`hduThesiS` 的模块提供以下支持:
+
+- `typeset`: 数学和文本排版
+
+- `layout`: 封面和浮动题布局
+
+- `bc.config`: 学士论文格式配置
+
+- `pg.config`: 硕士论文格式配置
+
+- `beamer`: HDU Beamer 主题
+
+- `stationery.config`: 学校信纸生成
+
+- `exam`: HDU 试卷解析模板
+
+- `hdu.l3doc`: 模板 `l3doc` 用户手册配置
+
+---
+
+References
+----------
+
+> \[1\]. The LaTeX3 Interfaces
+
+> \[2\]. CTeX 宏集
+
+> \[3\]. LaTeX for package and class authors current version
+
+> \[4\]. The LaTeX2e Sources
+
+> \[5\]. The LaTeX3 kernel: style guide for code authors
+
+> \[6\]. Package `etoolbox`, `geometry`, `tocloft`, `fancyhdr`, etc.
+
+> \[7\]. [毕业设计(论文)的写作规范及格式要求(含写作模板)](https://jwc.hdu.edu.cn/2022/0428/c4555a153813/page.htm)
+
+> \[8\]. [杭州电子科技大学研究生学位论文格式统一要求(杭电研〔2012〕311号)](https://grs.hdu.edu.cn/2013/0507/c1730a51754/page.htm)
+
+Copyright and License
+---------------------
+
+ Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com>
+
+ It may be distributed and/or modified under the conditions of the
+ LaTeX Project Public License (LPPL), either version 1.3c of this
+ license or (at your option) any later version. The latest version
+ of this license is in the file <http://www.latex-project.org/lppl.txt>
+
+ This work has the LPPL maintenance status `maintained`.
+
+ The Current Maintainer of this work is Mingyu Xia.
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/abstract.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/abstract.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/abstract.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,25 @@
+\begin{abstract}[cn]
+
+ 本毕业设计主要设计自主研发的激光打靶系统的信号处理过程,继而实现整个打靶系统。激光打靶系统主要包括半导体激光枪、光电探测器和信号处理电路,信号处理过程是整个系统的关键。激光打靶的打靶过程,由激光枪发射激光脉冲信号,光电靶接收激光脉冲信号,经过系列信号处理过程最终得到打靶的结果。光电靶由许多块的光电探测器组成,每块不同位置的光电探测器对应不同编号,从打靶的实际情况出发,确定了相应的编号规则。打靶的成绩由激光所击中的光电探测器的编号来判定。
+
+ 激光打靶系统的主要信号处理过程包括:信号的放大、编码和数据传输。信号由光电探测器检测后传送到相应的放大电路,放大电路采用集成运算放大器。按原先对光电探测器的编码规则采用多路优先编码器对信号进行编码。最后把编码值以串口的形式传送到计算机,利用计算机的强大功能对打靶结果进行各种处理。与计算机之间的串行数据传输由89C2051单片机实现。89C2051单片机的程序,使用keil编译器进行设计和调试完成,其主要功能是控制数据的串行传送,实现与计算机的串口通信。
+
+ 该信号处理系统实现了对信号的良好检测。与计算机之间的串口通信可以实现数据在计算机上的显示、统计、储存等功能,为打靶者提供非常直接、准确的打靶结果,有利于提高打靶效果。
+
+ \keywords{激光打靶, 信号处理, 信号编码, 串行传输}
+\end{abstract}
+
+\begin{abstract}[en]
+
+ The main aim of this thesis is to design and realize signal processing of a self-developed laser target shooting system and then realize the whole laser target shooting system. The laser target shooting system consists of semiconductor laser gun, photoelectric detector, and signal processing circuit, which is the key part of the whole system. Laser target shooting process go though following steps: laser gun emitted a pulse of laser, which would be received by the laser target and the results of shooting will be shown on screen of computer by series signal processing. The laser target consists of some silicon photoelectric units that were encoded with different numbers according to certain rule. The result of the shooting will be got when detecting the number of the photoelectric unit that receives the laser pulse.
+
+ The signal processing of the laser target shooting system mainly consists of signal amplification, signal encoding and data transmission. The inspected photoelectric signal was then amplified by operator amplifiers, coded by multiplex priority encoder according to the prearranged rule, and then transferred to computer by 89C2051 MCU through its serial port. And then computer can process the signal. The program of 89C2051 MCU is designed in keil and debugged using keil compiler. It is designed to control the data transmission with computer.
+
+ The designed signal processing system can detect signal effectively. Through the serial data transmission, computer can process the shooting result, such as display, statistics and storage etc. It provide direct and exact shooting result for trainer, so it can increase the efficiency of the shooting training.
+
+\keywords
+{
+ laser target shooting, signal amplification,
+ signal encode, serial data transmission
+}
+\end{abstract}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/abstract.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha1.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha1.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha1.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,9 @@
+\chapter{引言}
+
+目前的射击打靶训练,基本以实弹训练为主,国防开支大,危险系数高。传统的报靶方法是人工报靶,由报靶员根据经验确定靶数,带有很大的个人主观因素,可靠性、公正性差,效率低。因此有必要研制一种切合部队实际的,在非实弹射击条件下进行射击精度训练的打靶训练器,这样既能保证部队训练质量又能减少弹药消耗、节约国防费用,具有重大的国防意义。
+
+以光代弹,可以模拟多种武器的射击情况,并可检验射击效果。这种新型的部队训练模拟器材是部队训练器材的一次革命,是和平时期部队训练的有效手段之一。一些发达国家,如美国、英国、德国等都在积极进行激光射击模拟训练器材的研制,并已开发出多种系列产品,其中最突出的是美国的“米勒斯”系列,它可模拟 36 种武器,性能好、准确而且逼真,大大推动了部队的训练工作。
+
+八十年代以来,我国也有单位在进行激光模拟训练器的研究和探索,将激光射击模拟器用于部队训练,取得了很好的训练效果,提高了部队的战斗力。但在可靠性和数据处理等方面尚有许多技术问题有待改进,主要是以下几点:激光光斑太大,与实际步枪子弹口径$\qty{7.62}\mm$相差太多;探测器数量少会导致设计精度不高;探测器数量多会使得价格昂贵,无法推广;只能粗略指示命中与否,不能准确显示命中靶环环数和方位。因此,我们拟从这些方向作进一步的研究探索。
+
+本设计采用半导体激光器和半导体面阵列探测器来模拟子弹射击和射击靶标,具有模拟逼真,精度高等特点。主要从信号处理部分来设计实现激光打靶系统,每次射击能精确的显示 5 -- 10 环的结果及脱靶情况,每个环数又可分为八个偏移方向。该系统简单实用,既能保证训练的质量又能减少弹药的消耗,是理想的公安、军队等部门训练使用的模拟打靶系统。
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha1.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha2.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha2.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha2.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,60 @@
+\chapter{概述}
+
+\section{激光打靶系统概述}
+
+激光打靶系统\cite{cn1,cn2,cn3}的工作原理是采用激光脉冲来模拟枪弹的射击,该系统一般包括激光发射部分、激光信号检测模块、打靶成绩处理和显示部分。如图 2-1 所示,当射手瞄准完毕扣动扳机时,半导体激光器会发出激光脉冲,射向目标上的光电探测器,如果击中目标,则激光脉冲被光电探测器接收并转换为电信号,经电路处理能识别射击的弹着点,信号经处理编码后传输到计算机。
+
+\begin{figure}[htbp]
+ \centering
+ \begin{tikzpicture}
+ [
+ every node/.style = { font = \small, inner sep = 1ex }
+ ]
+ \node (a) [draw, rectangle] at (0,0) {光电探测器};
+ \node (b) [draw, rectangle] at (3.5,0) {信号处理电路};
+ \node (c) [draw, rectangle] at (7,0) {计算机处理};
+ \node (d) [draw, rectangle] at (0,-1.5) {半导体激光器};
+ \node (e) [draw, rectangle] at (4,-1.5) {激光枪扳机};
+ \draw [->, thick] (a.east) -- (b.west);
+ \draw [->, thick] (b.east) -- (c.west);
+ \draw [->, thick] (d.north) -- (a.south);
+ \draw [->, thick] (e.west) -- (d.east);
+ \end{tikzpicture}
+ \caption{激光打靶系统原理图}
+\end{figure}
+
+半导体激光器\cite{cn4,en5}一般平行地安装在武器装备的枪管、炮管或导弹发射架上,它可以发射一束与武器射击方向一致的激光脉冲。目前的激光器一般都采用半导体激光器,因为这种激光器的输出功率低,不会伤害眼睛,而且效率高、功耗小,不但可以摆脱大而重的电源设备,激光器本身也可以制作得很小、很轻。光电探测器\cite{en6}具有射击靶的形状,可以是点探测器和面探测器,通常数量较多,构成多个信号检测通路。根据光电探测器的响应位置来判断激光射击击中的靶位。
+
+激光打靶采用以光代弹的形式进行射击训练,是激光武器模拟器中最常见的一种。最初的激光打靶系统只能进行瞄准射击训练,随着计算机和微处理器技术的发展,其用途扩大到可进行多种武器的模拟训练。随着研究和探索的深入,激光打靶系统的功能将进一步完善,能够更接近于武器装备在实际使用中的表现,增强真实感。同时,通过与电子技术相结合,进一步提高激光模拟的自动化、智能化水平。
+
+激光武器模拟器有以下几个方面的发展趋势:
+
+\begin{enumerate}
+ \item 可以模拟的武器越来越多,激光武器模拟器正朝着系列化、组件化的方向发展,一个基本的激光射击模拟器只要稍加改动就可适用于其他武器系统。系列化、组件化的好处是便于使用、更换和维修,同时价格也便宜。
+ \item 从激光射击模拟器向激光交战模拟器发展,先进的激光交战模拟器能使坦克、战斗车辆、反坦克武器等有机的结合在一起进行训练,每部兵器既是攻击者,又是被攻击者,完全模仿实战中的作战环境,不仅能提高战士使用武器的技能,还可以教会他们如何在战争中保护自己。
+ \item 采用各种新技术增加模拟的逼真性,例如用计算机来记录、控制整个训练演习的进程,评定战士在演习中的表现等。
+\end{enumerate}
+
+\section{本设计方案思路}
+
+本设计以实现信号的良好检测和数据转换、传输为主要目的;以信号检测,信号编码和数据传输为主要设计内容。
+
+在信号检测方面设计单脉冲小信号的放大电路和信号整形电路;在信号编码方面,要解决多路信号的编码问题,还要考虑到编码的优先选择问题;在脱靶问题的处理方法上,对打靶和信号采集传送进行同步化处理(详见第二章的硬件设计部分),把脱靶的情况与中靶的情况归为一类处理;数据传输采用 UART 串口通信。
+
+\section{研发方向和技术关键}
+
+\begin{enumerate}
+ \item 合理划分激光靶的光电探测器,提高系统的精度;
+ \item 单脉冲小信号的放大和整形;
+ \item 多路优先编码器的扩展;
+ \item 与微机进行数据传输,方便成绩的统计、保存、显示和查询。
+\end{enumerate}
+
+\section{主要技术指标}
+
+\begin{enumerate}
+ \item \makebox[9\ccwd][l]{激光脉宽:}大于$\qty1\ms$
+ \item \makebox[9\ccwd][l]{激光脉冲响应幅度:}约$\qty{10}\mV$
+ \item \makebox[9\ccwd][l]{打靶距离:}$\qty{30}\m$
+ \item \makebox[9\ccwd][l]{串行输出帧格式:}射击次数\ensuremath+所击中的光电探测器的编号
+\end{enumerate}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha2.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha3.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha3.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha3.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,108 @@
+\chapter{总体设计}
+
+激光打靶系统是一种集光、电于一体的系统,其工作原理是激光枪发出的激光束,打到光电
+传感器上,经光电传感器将光信号转换为电信号,电信号经过信号处理后由单片机发送到计
+算机的串行口,然后在计算机上完成成绩显示、查询和保存等功能。
+
+激光打靶系统结构的组成框图如\cref{3-1}所示。该系统包括半导体激光枪、模块式
+探测器、数字信号处理和发送电路、计算机数据处理程序等四部分。
+
+\begin{figure}[htbp]
+ \centering
+ \begin{tikzpicture}
+ [
+ every node/.style = {font = \small, minimum height = 4.4em, minimum width = 3em}
+ ]
+ \linespread{1}
+ \node (a) [draw, rectangle, align = center] at (0,0) {激\\光\\枪};
+ \node (b) [draw, rectangle, align = center] at (2.5,0) {探测\\器\\模块};
+ \node (c) [draw, rectangle, align = center] at (5,0) {滤波\\电路};
+ \node (d) [draw, rectangle, align = center] at (7.5,0) {放大\\电路};
+ \node (e) [draw, rectangle, align = center] at (10,0) {整形\\电路};
+ \node (f) [draw, rectangle, align = center] at (12.5,0) {优先\\编码\\电路};
+ \node (g) [draw, rectangle, align = center] at (2.5,-2.3) {串行\\收发\\模块};
+ \node (h) [draw, rectangle, align = center] at (5,-2.3) {电平\\转换};
+ \node (i) [draw, rectangle, align = center, above right] at ([yshift = -2.3cm]e.south west) {计\\算\\机};
+ \draw [->, thick] (a.east) -- (b.west);
+ \draw [->, thick] (b.east) -- (c.west);
+ \draw [->, thick] (c.east) -- (d.west);
+ \draw [->, thick] (d.east) -- (e.west);
+ \draw [->, thick] (e.east) -- (f.west);
+ \draw [<-, thick] (g.west) --++ (-1.5,0);
+ \draw [->, thick] (g.east) -- (h.west);
+ \draw [->, thick] (h.east) -- node [above = -1.5em] {串口} (i.west);
+ \end{tikzpicture}
+ \caption{系统总体结构框图}
+ \label{3-1}
+\end{figure}
+
+\section[激光的检测]{激光的检测\cite{cn7,cn8}}
+
+每次打靶,激光枪发出一个激光脉冲。如果激光脉冲击中光电靶,利用光生伏特效应,光电
+靶上的探测器把光信号转换成电信号,因此激光的检测就是对探测器响应电信号的检测。光
+电探测器的响应是一个单脉冲小信号,整个检测过程包括:信号放大、波形整形,检测输出
+是标准的脉冲数字信号。
+
+\section{靶位的划分}
+
+把一个激光靶划分为 38 块探测器,中心 10 环为一块探测器;9.8.7.6 环分别有 8 块
+探测器;5 环有 5 块探测器。根据不同靶位上的探测器来判断所击中的位置,包括环数:
+10.9.8.7.6.5;偏离方向:上.下.左.右.左上.左下.右上.右下。
+
+若信号击中两块或四块探测器的交界,则只取其中一块为有效,记为有效的探测器满足以下
+条件:
+
+\begin{enumerate}
+ \item 环数高;
+ \item 偏离方向为斜向(例如:上和右上两方向,选择右上)。
+\end{enumerate}
+
+根据上述要求,以及硬件电路设计的需要,对不同的探测器进行编码,见\cref{3-2}(右)。
+
+\newpage
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .86\linewidth]{image-0145}
+ \caption{靶位划分与编号}
+ \label{3-2}
+\end{figure}
+
+\section{编码标准}
+
+对 38 路信号按以上原则编码,编码结果如表 3-1。若脱靶无信号则记为 0 号。编码后,
+每一个号码对应了每一个探测器的位置信息,包括环数和偏移方向。对信号击中两块或四块
+探测器的交界的情况,只需取码号大的探测器为有效。这样,打靶的结果在硬件电路上的实现
+便可由 40--6 线优先编码器完成。
+
+\begin{table}[htbp]
+ \centering
+ \renewcommand{\arraystretch}{1.3}
+ \caption{靶位编码}
+ \begin{tabular}{*{9}{@{}|@{}>{\small\centering\arraybackslash}p{.107\linewidth}}@{}|@{}}
+ \hline
+ & 上 & 右上 & 右 & 右下 & 下 & 左下 & 左 & 左上\\
+ \hline
+ 10环 & \multicolumn{8}{c|}{38}\\
+ \hline
+ 9环 & 33 & 37 & 32 & 36 & 31 & 35 & 30 & 34\\
+ \hline
+ 8环 & 25 & 29 & 24 & 28 & 23 & 27 & 22 & 26\\
+ \hline
+ 7环 & 17 & 21 & 16 & 20 & 15 & 19 & 14 & 18\\
+ \hline
+ 6环 & 9 & 13 & 8 & 12 & 7 & 11 & 6 & 10\\
+ \hline
+ 5环 & 3 & --- & 2 & 5 & --- & 4 & 1 & ---\\
+ \hline
+ \end{tabular}
+\end{table}
+
+\section{成绩的传送和处理}
+
+信号经编码后发送到计算机,由计算机进行译码,在计算机上模拟显示出射击位置,对一组
+结果进行统计(包括环数和方向偏移),并进行储存。
+
+\section{其他说明}
+
+系统分为硬件部分和软件部分。本论文主要设计制作硬件部分以及与微机的通讯的 2051 单
+片机程序。微机软件部分,包括数据的处理和显示等有另外一名毕业设计同学实现。
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha3.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha4.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha4.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha4.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,301 @@
+\chapter{硬件设计}
+
+\section{信号放大电路}
+
+在光电探测系统中,探测器输出的电信号非常微弱,一般为毫伏级。为记录每一次打靶的结果,信号放大与处理电路是打靶系统中不可或缺的。在探测器上直接进行信号处理十分困
+难,一种常用的解决办法是在探测器后接前置放大器,用来放大探测器的输出信号,然后成
+功地传输到信号处理系统的有关电路部分。前置放大器的设计要求是低噪声,高增益,低输
+出阻抗,大的动态范围,和较好的抗噪声能力。
+
+在激光打靶系统中,对光电池产生的脉冲信号的具体大小值要求不高,只需检测出有效的脉
+冲信号,因此可选用集成运放来组成运算放大电路。
+
+通过测试,得到光电探测器对的激光脉冲的响应幅度典型值约为$\qty5\mV$,若激光击中
+在两块或多块探测器边界处,则任何一块光电探测器的响应幅度会减少,因此所检测的脉冲
+幅度范围大约是$\num3\sim\qty5\mV$.为使每块光电探测器均能检测出信号,使之达到
+TTL 电平要求,实现信号检测,必须对信号放大约 1000 倍。单级运放难以达到这么高的
+放大倍数,因此采用二级运放进行放大,第一级为前置放大器。为减少前级放大器的偏移对
+后级放大器的影响,设计其放大倍数$A_1=100$;从而次级放大器的放大倍数$A_2=10$。
+
+\subsection{集成运算放大器(LM324)}
+
+集成运算放大器是实现高增益放大功能的一种集成器件\cite{cn9},早期主要用来实现对模拟量进行
+数学运算的功能,目前随着器件性能的改进,它已成为通用的增益器件,应用范围非常广泛。
+
+从电特性来看,集成运放接近理想的电压放大器件,它不仅有很大的输入电阻和很小的输出
+电阻,而且还有很高的电压增益,此外,静态工作时,它的输入和输出电位均为零,这样,
+在与其它集成运放连接时,就不需要考虑它们之间的电平配置问题。
+
+LM324 是四通道的低功耗运算放大器,它的内部包含四组形式完全相同的运算放大器,除电
+源共用外,四组运放相互独立,其性能参数有以下几个方面:
+
+\begin{enumerate}
+ \item 单电源工作方式,工作电平$\qty3\V\sim\qty{30}\V$
+ \item 低消耗电流:约$\qty{0.8}\mA$
+ \item 低输入偏移:输入电压偏移:$\qty3\mV$(Typ);输入电流偏移:$\qty2\nA$(Typ)
+ \item 开环增益:$\qty{100}\V/\unit\mV=\qty{100}\dB$(Typ)
+ \item 宽响应频带
+\end{enumerate}
+
+\newpage
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .595\linewidth]{image-0162}
+ \caption{LM324内部结构}
+ \label{4-1}
+\end{figure}
+
+\subsection{放大电路图}
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .93\linewidth]{image-0163}
+ \caption{运算放大器电路图}
+ \label{4-2}
+\end{figure}
+
+放大器电路如\cref{4-2} 所示。它由两级结构相同的同相放大器组成,集成放大器选用
+LM324(\cref{4-1})。信号经隔直流电容C1从第一级放大器的正端
+``\ensuremath+''输入,经过放大后输出,再经过级间耦合电容C2输入第二级放大器
+的正端。前级的放大倍数$A_1=R_2/R_1=100$,后级的放大倍数$A_2=R_6/R_5=10$,
+$R_3$和$R_7$为输入匹配电阻。
+
+\subsection{电路原理}
+
+\begin{enumerate}
+ \item 同相放大器\cite{cn10}(\cref{4-3})
+
+ 集成运放是一种十分理想的增益器件,性能好,使用方便。该电路采用 2 级放大器级
+ 联,每级的放大器均采用同相放大。
+
+ 由集成运放构成的同相放大器,其特点是输入信号加在同相输入端,而反馈信号加在反相端。根据理想化条件,由于$v_+=v_s$,因而$v_-\approx v_s$。更具$i\to0$(虚断),$v_-$又是$v_o$在$R_1$上的分压值,即:
+ \begin{equation}
+ v_-=v_o\frac{R_1}{R_1+R_f}
+ \end{equation}
+ 因而,放大器的增益:
+ \begin{equation}
+ A_{V_f}=\frac{v_o}{v_s}=\frac{R_1+R_f}{R_1}=1+\frac{R_f}{R_1}
+ \end{equation}
+ $\because A_{V_f}>0$,所以$v_o$与$v_s$同相。
+
+ \begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .54\linewidth]{image-0236}
+ \caption{同相放大器}
+ \label{4-3}
+ \end{figure}
+ \item 外围电路
+
+ 光电传感器对外部光线也有响应,因此必须滤除这种干扰。由于背景光线是持续信号,其
+ 响应主要是直流量,在第一级放大器输入端的前面设计接入一个$\qty1\uF$电容C1起到
+ 隔离直流作用,能起到很好的效果。第二级的$\qty1\uF$电容C2用于两级放大器的耦合。
+
+ 第一级放大器输入端和地之间接 R3;第二级放大器输入端和地之间接 R7。使得:
+ \begin{equation}
+ \begin{cases}
+ R_3\approx R_1//R_2\\
+ R_7\approx R_5//R_6
+ \end{cases}
+ \end{equation}
+ 这样,运放的正、负输入端对地的等效电阻相等,从而降低运放的电压偏移。
+\end{enumerate}
+
+\subsection{电路参数}
+
+\begin{enumerate}
+ \item \makebox[9em][l]{输入脉冲幅度:} $U_i\approx\num3\sim\qty5\mV$
+ \item \makebox[9em][l]{输入电阻:} $R_i\approx\qty{10}\kohm$
+ \item \makebox[9em][l]{输出电阻:} $R_o\approx\qty1\kohm$
+ \item \makebox[9em][l]{放大倍数:} $A=A_1\cdot A_2\approx10\times100=1000$
+ \item \makebox[9em][l]{放大器级数:} 两级,前级$A_1\approx100$;后级$A_2\approx10$
+ \item \makebox[9em][l]{耦合方法:} 电容耦合
+\end{enumerate}
+
+\clearpage
+\vspace*{-1.5em}
+\section[整形电路]{整形电路\cite{cn11}}
+
+光电池的输出脉冲并不是规则的矩形脉冲信号,而是类似升余弦信号。再经放大后也会产生
+失真,因此必须对信号进行整形。采用常用的 CD4093 施密特触发器便可实现整形功能,改
+善脉冲波形,确保后续编码器的正常编码。
+
+施密特触发器不仅可以进行波形整形,它的迟滞特性还可以有效地克服噪声和干扰的影响,只要噪声和干扰的大小处在迟滞宽度内,就不会有错误的输出。施密特触发器属于电平触
+发,对于缓慢变化的信号仍然适用,当输入信号达到阈值电压时,电路状态发生转换,通过
+电路内部的正反馈过程使得输出电压的波形的边沿变得很陡峭。利用施密特触发器可以实现
+有效脉冲的识别见\cref{4-5}。
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .65\linewidth]{image-0284}
+ \caption{施密特触发器的电压传输特性\quad (a) 同相输出;(b) 反相输出}
+ \label{4-4}
+\end{figure}
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .95\linewidth]{image-0285}
+ \caption{利用施密特触发器实现有效脉冲的识别}
+ \label{4-5}
+\end{figure}
+
+\section[编码电路]{编码电路\cite{cn11}}
+
+对于 38 路信号通道,必须对其进行编码以便于信号识别和传输。38 路信号按照设计方案
+编码为 1--38 号,脱靶无信号记为 0 号。对多个探测器同时接收到信号的情况,对应于
+探测器的码号就是取码号大的探测器为有效,采用优先编码器便可实现编码的优先选择。
+
+商用的单个优先编码器的编码输入最多只有 8 路,要构成更多路的优先编码
+器,可以采用 6 片 8-3 优先编码器进行扩展为 40-6 优先编码器。
+
+\subsection{编码电路图}
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .93\linewidth]{image-0289}
+ \caption{40-6 优先编码器电路图}
+ \label{4-6}
+\end{figure}
+
+\subsection{电路原理}
+
+\begin{enumerate}
+ \item 优先编码器(74HC148)
+
+ 8-3 线优先编码器的功能表如\cref{4-7}。待编码的 8 条输入线 采用 8 中取 1
+ 码,逻辑 0 有效,编码后的输出 用反码表示。可以看出,编码器是以输入为 0 的最高
+ 优先编码的,而低位若同时输入 0,则是无意义的。此外,电路还设有选通输入,即使能
+ 端 EI,它也是逻辑 0 有效;输出还设有允许输出端 Eo 及允许扩展端 Gs,利用它们
+ 可判断出 是否有效,以及是否允许扩展编码。根据真值表,写出编码器的逻辑表达式如下:
+ \begin{equation}
+ \begin{aligned}
+ \overline{A_2}&=\overline{EI}\cdot I_7+\overline{EI}\cdot I_7\cdot I_6\cdot\overline{I_5}+\overline{EI}\cdot I_7\cdot I_6\cdot I_5\cdot\overline{I_4}\\
+ &=\overline{EI}(\overline{I_7}+I_7\overline{I_6}+I_7I_6I_5\overline{I_4})=\overline{EI}(\overline{I_7}+\overline{I_6}+\overline{I_5}+\overline{I_4})
+ \end{aligned}
+ \end{equation}
+ 故:
+ \begin{equation}
+ A_2=\overline{\overline{EI}(\overline{I_7}+\overline{I_6}+\overline{I_5}+\overline{I_4})}
+ \end{equation}
+ 同理:
+ \begin{gather}
+ A_1=\overline{\overline{EI}(\overline{I_7}+\overline{I_6}+I_5I_4\overline{I_3}+I_5I_4I_2)}\\
+ A_0=\overline{\overline{EI}(\overline{I_7}+I_6\overline{I_5}+I_6I_4\overline{I_3}+I_6I_4I_2\overline{I_1})}
+ \end{gather}
+ 而允许输出为:
+ \begin{equation}
+ E_OE_0=\overline{\overline{EI}\cdot I_7I_6I_5I_4I_3I_2I_1I_0}
+ \end{equation}
+ 允许扩展端是:
+ \begin{equation}
+ Gs=EI+\overline{EI}\cdot I_7\;I_6\;I_5\;I_4\;I_3\;I_2\;I_1\;I_0=\overline{\overline{EI}\cdot E_O}
+ \end{equation}
+
+ \begin{table}[htbp]
+ \centering\scriptsize
+ \renewcommand\arraystretch{1.12}
+ \begin{tabular}{|>{\centering\arraybackslash\sffamily}p{.04\linewidth}|*{8}{>{\centering\arraybackslash\sffamily}p{.04\linewidth}}|*{3}{>{\centering\arraybackslash\sffamily}p{.04\linewidth}}|*{2}{>{\centering\arraybackslash\sffamily}p{.04\linewidth}}|}
+ \hline
+ \multicolumn{9}{|>{\sffamily\bfseries}c|}{INPUTS} & \multicolumn{5}{>{\sffamily\bfseries}c|}{OUTPUTS}\\
+ \hline
+ EI & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & A2 & A1 & A0 & GS & EO\\
+ \hline
+ H & X & X & X & X & X & X & X & X & H & H & H & H & H\\
+ L & H & H & H & H & H & H & H & H & H & H & H & H & L\\
+ L & X & X & X & X & X & X & X & L & L & L & L & L & H\\
+ L & X & X & X & X & X & X & L & H & L & L & H & L & H\\
+ L & X & X & X & X & X & L & H & H & L & H & L & L & H\\
+ L & X & X & X & X & L & H & H & H & L & H & H & L & H\\
+ L & X & X & X & L & H & H & H & H & X & L & L & L & H\\
+ L & X & X & L & H & H & H & H & H & X & L & H & L & H\\
+ L & X & L & H & H & H & H & H & H & X & H & L & L & H\\
+ L & L & H & H & H & H & H & H & H & X & H & H & L & H\\
+ \hline
+ \end{tabular}
+ \caption{8-3 线优先编码器真值表(74HC148)}
+ \label{4-7}
+ \end{table}
+ \item 8-3 线优先编码器扩展为 40-6 线优先编码器(\cref{4-6})
+
+ 5 片 74HC148 并排用作输入,其输入从低位片到高位片排列为
+ $I_0\sim I_{39}$ 。每一个高位片的输出允许端 Eo 接其相对低位片的使能端 EI。这样,当总使能$\text{EI}=0$时,允许电路进行编码工作,若高位片的诸输入中有一
+ 个为$0$时,该片的 $\text{Eo}=1$,$\text{Gs}=0$,这样就禁止了低位片的编
+ 码,以此类推,5 片 74HC148 的输入端编码便具有了优先性。
+
+ 5 片 74HC148 的允许扩展端 Gs 按低位片至高位片的顺序分别接到第六片74HC148
+ 的$I_0$、$I_1$、$I_2$、$I_3$、$I_4$输入端,而$I_5$、$I_6$、$I_7$端则接
+ 高电平(表示无输入)。这样第六片 74HC148 的三位输出便表示整个 40-6 线优先编
+ 码器的高三位$A_5$、$A_4$、$A_3$。而 40-6 线优先编码器的低三位输出$A_2$、$A_1$、$A_0$与前 5 片 74HC148 的输出端一致。
+
+ 由于 74HC148 的输出端不是三态门,不能直接连接在一起。而把 5 片 74HC148的同
+ 名输出端接到 74LS30(8 输入的与非门)取与非便可以解决这个问题。同时输出取反,
+ 输出为逻辑 1 有效。为使高三位输出与低三位输出一致,用 CD4049反相器对高三位取
+ 反。
+
+ 40-6 线优先编码器的六个输出均为逻辑 1 有效,可以接到后续的 2051 单片机进行串
+ 行传输。
+\end{enumerate}
+
+\section{串行传送}
+
+为实现将编码器输出的 6 位并行信号串行传送,同时实现数据发送和打靶射击的同步性。采
+用 89C2051 单片机便可实现要求。
+
+\subsection{单片机及外围电路图}
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .9\linewidth]{image-0419}
+ \caption{2051 单片机及其外围电路图}\label{4-8}
+\end{figure}
+
+\subsection{电路原理}
+
+\begin{enumerate}
+ \item 编码器的输出通过 2051 P1 口的低 6 位(高 2 位接地为逻辑 0)输入。
+ \item 选用 $\qty{11.0592}\MHz$ 的晶振构成单片机的时钟,这样在串口工作方式 1 下可得到准确的 $\qty{9600}{bps}$ 的串行波特率,方便计算机的接收。
+ \item 单片机接有复位开关按钮。
+ \item 实现打靶和信号采集传送的同步化。
+\end{enumerate}
+
+由于采用单片机的外部中断 0($\overline{INTO}$)作为数据串行传送的使能端,且
+$\overline{INTO}$设为下降的跳变沿有效。使能开关(激光枪的开关)一端接地,另一
+端接$\overline{INTO}$,又经上拉电阻接到电源,这样当开关按下时,便有下降沿的跳变信号输入$\overline{INTO}$,产生中断。
+
+同时,开关又要同步控制激光枪的发射。因此开关又接激光头的负端,从而控制激光头负端
+的接地,只有当开关按下时,激光头两端才有工作电压。
+
+这样,同一个开关既控制单片机的中断,又同时控制激光枪的发射,从而达到打靶和信号采
+集传送这两个“动作”的同步化。
+
+\subsection{AT89C2051 单片机\cite{cn12}}
+
+AT89C2051 单片机是 AT89C51 的简化型号,其指令系统和内部 RAM 均与 AT89C51相
+同。不同的是它的内部 ROM 为 2k,而 89C51 为 4k,而且 2051 比 89C51 少了 P0
+和 P2 输入/输出口以及外部 ROM、RAM 的扩展端,因此在引脚上 2051 只有 20 个脚。
+AT89C2051 单片机主要适用于较为简单的微控制系统。在本系统中,用到 AT89C2051的
+6 个外部 I/O 口,一个外部中断和串行输出口。
+
+\newpage
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .53\linewidth]{image-0439}
+ \caption{2051 信号引脚图}
+ \label{4-9}
+\end{figure}
+
+\section{电平转换}
+
+在不同的数字系统中,其电平标准是不同的。该系统中就包括了 TTL 电平标准和 RS-232
+电平标准,要实现两个标准的正常通信,必须进行电平转换。该系统采用使用简单的
+MAX232CPE 芯片。
+
+一片MAX232CPE芯片可完成2路TTL/CMOS~RS-23 的电平转换和2路RS-232~TTL/CMOS
+的电平转换。实际电路中只有一路单片机的 TXD 串口输出,不进行RXD串口输入。因此,选
+用引脚 11 接 2051 TXD 串口输出;而对应的 14 脚则接到计算机的串口输入端。
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width = .52\linewidth]{image-0440}
+ \caption{MAX232CPE 芯片内部结构}
+ \label{4-10}
+\end{figure}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha4.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha5.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha5.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha5.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,135 @@
+\chapter{软件设计}
+
+\section{总体方案}
+
+该系统的信号检测与数据传送部分,涉及的软件部分较少。主要是 2051 单片机数据串行通信及通信协议的程序设计。
+
+对于 2051 的程序设计\cite{cn12},由于所需实现的功能较简单,采用汇编的形式。编译器采用 Keil 7.02b。该编译器是 51 系列单片机程序设计的常用工具,既可用汇编,也支持 C 语言编译。同时具有完善的调试功能。
+
+\section{程序流图}
+
+\begin{figure}[!ht]
+ \centering
+ \begin{tikzpicture}
+ [ every node/.style = { font = \small, minimum height = 2.5em } ]
+ \node [draw, rectangle, minimum width = 11em, minimum height = 2em] (a) at (0,0) {初始参数设置};
+ \node [draw, rectangle, minimum width = 11em, rounded corners = 1.2em, below = of a] (b) {等待中断};
+ \node [draw, rectangle, minimum width = 11em, diamond, aspect=3, below = of b] (c) {中断服务程};
+ \node [draw, rectangle, minimum width = 11em, diamond, aspect=3, below = of c, yshift = 2ex] (d) {读取 P1 口值};
+ \node [draw, rectangle, minimum width = 11em, rectangle, below = of d, minimum height = 2em] (e) {发送数据帧};
+ \node [draw, rectangle, minimum width = 11em, diamond, aspect=3, below = of e] (f) {延时$\qty{200}\ms$};
+ \node [draw, rectangle, minimum width = 11em, rectangle, below = of f, minimum height = 2em, yshift = 2ex] (g) {清中断标志};
+ \node [draw, rectangle, minimum width = 10em, rounded corners = 1.2em, below = of g] (h) {中断返回};
+ \draw [->] (a.south) -- (b.north);
+ \draw [->] (b.south) -- (c.north);
+ \draw [->] (c.south) -- (d.north);
+ \draw [->] (d.south) -- (e.north);
+ \draw [->] (e.south) -- (f.north);
+ \draw [->] (f.south) -- (g.north);
+ \draw [->] (g.south) -- (h.north);
+ \draw [->] (h.east) --++ (1,0) |- (b.east);
+ \end{tikzpicture}
+ \caption{串行发送流程图}
+ \label{5-1}
+\end{figure}
+
+\section{模块说明}
+
+\begin{enumerate}
+ \item 主程序:
+ \begin{lstlisting}[basicstyle=\linespread{1.32}\small\ttfamily\selectfont, breaklines=true]
+ MAIN:
+ MOV SP,#0X60 ;堆栈初始化
+ CALL INIT ;各寄存器参数设置
+ MOV 40H,#0x01 ;打靶次数置 1
+ AJMP $ ;等待中断
+ \end{lstlisting}
+ \item 初始化程序:
+ \begin{lstlisting}[basicstyle=\linespread{1.32}\small\ttfamily\selectfont, breaklines=true]
+ INIT:
+ MOV TMOD,#0X21;波特率发生器
+ MOV TL1,#0XFD ;波特率 9600bps
+ MOV TH1,#0XFD
+ CLR ET1 ;禁止 timer1
+ SETB PT1 ;时钟 1 优先级:高
+ MOV SCON,#0x40;串口工作模式 1,SM2=0,REN=0
+ MOV PCON,#0 ;波特率 9600bps
+ SETB EA ;中断允许
+ CLR PS ;关闭串口中断
+ CLR ES ;串口优先级:低
+ SETB EX0 ;开外部中断 INT0 SETB IT0 ;下降沿有效
+ CLR PX0 ;INT0 优先级:低
+ SETB TR1 ;时钟 1 开始计数
+ RET
+ \end{lstlisting}
+ \item 中断服务程序:
+ \begin{lstlisting}[basicstyle=\linespread{1.32}\small\ttfamily\selectfont, breaklines=true]
+ _INT0: ;ISR 中断服务程序
+ NOP
+ CALL DELAY_2MS;同步延时
+ MOV P1,#0xff ;读 P1 口前先置 1
+ MOV A,P1 ;读 P1 口
+ CALL INT0_SEND
+ RET
+ \end{lstlisting}
+ \item 数据帧传送子程序:
+ \begin{figure}[htbp]
+ \centering\small
+ \setstretch{1.4}
+ \caption{数据帧格式}
+ \begin{tabular}{|*{4}{>{\centering\arraybackslash}p{.22\linewidth}|}}
+ \hline
+ 标志位SYNC & 打靶次数 & 打靶成绩 & 校验位CHECKSUM\\
+ \hline
+ \#0x30 & TIMES & RESULT & TIMES\ensuremath+RES\\
+ \hline
+ \end{tabular}
+ \end{figure}
+ \clearpage
+ 例:30 02 15 17(十六进制)
+
+ 表示第二次打靶,击中第 21 号(对应环数:7 环 偏移方向:右上)。
+ \begin{lstlisting}[basicstyle=\linespread{1.32}\small\ttfamily\selectfont, breaklines=true]
+ INT0_SEND: ;数据帧传送子程序
+ PUSH ACC ;保护 ACC
+ CLR A
+ ADD A,#0X30
+ CALL UART_SEND ;发送标志位
+ MOV A,40H
+ CALL UART_SEND ;发送打靶次数
+ POP ACC
+ CALL UART_SEND ;发送打靶成绩
+ ADD A,#0X30
+ ADD A,0040H
+ CALL UART_SEND ;发送校验位
+ INC 0040H ;打靶次数累加 1
+ CALL DELAY_200MS;延时 200ms
+ CLR EX0 ;关外部中断
+ CLR IE0 ;清INT0外部中断请求标志位—防止外部中断寄存
+ 而引起多次中断。
+ SETB EX0 ;开中断
+ RETI
+ \end{lstlisting}
+ \item 串行发送字节
+ \begin{lstlisting}[basicstyle=\linespread{1.32}\small\ttfamily\selectfont, breaklines=true]
+ UART_SEND: ;串行发送一个字节
+ MOV SBUF,A
+ JNB TI,$ ;等待发送完毕
+ CLR TI ;
+ RET
+ \end{lstlisting}
+ \item 定时程序:
+ \begin{lstlisting}[basicstyle=\linespread{1.32}\small\ttfamily\selectfont, breaklines=true]
+ DELAY_2MS: ;用定时器延时 2ms
+ MOV R7,#21;21
+ DLY1:MOV R6,#42
+ DLY2:DJNZ R6,DLY2
+ DJNZ R7,DLY1
+ RET
+ DELAY_10MS: ;调用 DELAY_2MS,实现延时 10ms
+ MOV R5,#5
+ DLY: CALL DELAY_2MS
+ DJNZ R5,DLY
+ RET
+\end{lstlisting}
+\end{enumerate}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha5.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha6.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha6.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha6.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,40 @@
+\chapter{制作与调试}
+
+\section{硬件电路的布线与焊接}
+
+\subsection{总体特点}
+
+该系统所涉及的各部分硬件电路,总体的特点是:
+
+\begin{enumerate}
+ \item 电路原理简单,所用的器件均为常用器件。
+ \item 由于路数较多(38 路),电路的规模较大,因此在制作中只做了 8 路。
+
+ 因此,应合理布线,以降低焊接难度,降低出错率,同时防止干扰。
+\end{enumerate}
+
+\subsection{电路划分}
+
+为方便焊接与调试,把电路划分为两大块:
+
+\begin{enumerate}
+ \item 探测器接收,放大电路和整形电路为一块电路板;
+ \item 编码器、2051 单片机和控制开关为一块电路板。
+\end{enumerate}
+
+\subsection{焊接}
+
+焊接前应熟悉各芯片的引脚,焊接时参照电路图,仔细地连接引脚。按照以下原则进行焊接:
+
+\begin{enumerate}
+ \item 先焊接各芯片的电源线和地线,这样确保各芯片有正确的工作电压;
+ \item 同类的芯片应顺序焊接,在一片焊接并检查好之后,其他的同类芯片便可以参照第一片进行焊接。这样便可大大节省时间,也可降低出错率。
+\end{enumerate}
+
+\section{调试}
+
+\begin{enumerate}
+ \item 在 40-6 线优先编码器,由于没有详细阅读优先编码器的真值表,我认为优先编码器为低位优先,因此所设计的编码标准(取小号有效)不符合标准。不过发现错误后,对硬件电路无需修改,只要修改编码标准为取大号有效,便可以解决问题。
+ \item 由于光电池的响应信号经放大、编码,到达单片机 P1 口时有一定的延时,为使单片机准确地通过外部中断进行有效数据的采集,应知道延时的大概范围。编写单片机程序时,编写了一个延时$\qty2\ms$的子程序,可以调用进行一定的延时,通过延时时间不同的程序进行多次烧录并进行调试,然后比较所得的不同结果,这样便可以大概知道要采集正确的数所需的延时时间(最后程序采用的延时时间为$\qty2\ms$)。
+ \item 电路中同时控制激光发射和单片机外部中断的开关为普通的按钮开关,因此在按下和弹起都有颤动,这样会引起单片机外部中断的多次响应,使一次``射击动作''引起多次响应,单片机输出多个值。通常的消颤方法有两种:硬消颤和软消颤。硬消颤指通过硬件上的消颤电路使开关的一次动作只能产生一个脉冲跳变;而软消颤主要通过延时或对响应的屏蔽来实现。在该设计中采用较为简便的软消颤,具体的方案见第五章。
+\end{enumerate}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha6.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha7.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha7.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha7.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,11 @@
+\chapter{结论}
+
+本设计方案达到了任务书的要求,实现了激光信号的检测、编码和串行传输,实现了较为完整的激光打靶系统的信号处理:
+\begin{enumerate}
+ \item 前端放大器的放大倍数适中,放大后,有效电压脉冲的幅度达到施密特触发器的上门限电压,背景干扰信号没有引起电路的误响应;
+ \item 经过调试,实现 40-6 优先编码器的扩展,编码值输出符合真值表,编码有效脉冲下降沿的波形正常;
+ \item 由开关按钮(模拟激光枪的扳机)控制的编码采集和串行传送也调试实现(通过与计算机的串口相连,用``串口调试程序''调试);
+ \item 信号处理电路通过串口连接到计算机,应用张雪荣同学设计的``激光打靶成绩统计''软件进行总体调试,实现对打靶成绩的显示统计和储存。
+\end{enumerate}
+
+由于时间、水平和经验有限,在信号的放大、编码及抗干扰等方面仍有不足之处,有改进的余地,比如电路规模的精简,其他的光干扰处理。另外在系统的调试方面,由于时间和设备的原因,只进行了短距离的调试,有待进一步的调试。这次毕业设计对于我来说,既是一次机遇,又是一次挑战。通过这次的毕业设计,我学到了很多东西,通过自己的实践,增强了动手能力。通过实际工程的设计也使我了解到书本知识和实际应用的差别。在实际应用中遇到很多的问题,这都需要我对问题进行具体的分析,并一步一步地去解决它。
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/cha7.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/thanks.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/thanks.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/thanks.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,14 @@
+\chapter*{致谢}
+\addcontentsline{toc}{chapter}{致谢}
+
+在这几个月的时间里,从对课题的理解,方案的设计,到电路的制作,再到论文的写作,中间有着自己的努力,更有着老师和同学的关心和巨大的帮助。
+
+感谢秦会斌老师在很忙的情况下,为我讲解课题的要点,引领设计的思路。他对学生认真负责的态度让我由衷地敬佩。
+
+感谢唐大勇和章国平同学给予我无私的帮助,他们对我所遇到的难题的解答让我受益匪浅。
+
+感谢罗老师对我们的关心照顾。
+
+感谢母校和老师们在大学四年中对我的培养。
+
+......
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/cha/thanks.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0145.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0145.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0145.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0145.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0145.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0162.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0162.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0162.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0162.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0162.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0163.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0163.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0163.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0163.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0163.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0236.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0236.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0236.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0236.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0236.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0284.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0284.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0284.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0284.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0284.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0285.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0285.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0285.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0285.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0285.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0289.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0289.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0289.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0289.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0289.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0419.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0419.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0419.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0419.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0419.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0439.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0439.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0439.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0439.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0439.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0440.png
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0440.png
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0440.png 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0440.png 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/figures/image-0440.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,45 @@
+\documentclass
+ [
+ math-font = STIX Two Math, agreed,
+ CJKmain-font = { {Songti SC}[AutoFakeBold = 2.5, AutoFakeSlant] },
+ CJKsans-font = { {STHeiti}[AutoFakeBold = 2] }
+ ] {hduthesis}
+\tikzset{ > = stealth }
+\usetikzlibrary{positioning, shapes.geometric}
+
+\hduset
+ {
+ title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/本科毕业设计,
+ department = 理学院,
+ major = 物理学,
+ class = 英才班,
+ stdntid = C668668E,
+ author = 申智能,
+ supervisor = 教授:葉芷晴,
+ bibsource = reference
+ }
+
+\begin{document}
+
+\maketitle
+\commitment [ example-image-a/2024-05-31 ]
+
+\input{cha/abstract.tex}
+
+\tableofcontents
+
+\input{cha/cha1.tex}
+\input{cha/cha2.tex}
+\input{cha/cha3.tex}
+\input{cha/cha4.tex}
+\input{cha/cha5.tex}
+\input{cha/cha6.tex}
+\input{cha/cha7.tex}
+\input{cha/thanks.tex}
+\printbibliography
+
+\appendix
+\chapter*{附录}
+\addcontentsline{toc}{chapter}{附录}
+
+\end{document}
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-bachelor.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,88 @@
+\documentclass[ mode = beamer, handout ]{hduthesis}
+
+\usepackage[mono = false]{libertine}
+\hduset
+ {
+ title = Beamer Theme for Hangzhou Dianzi University
+ Based on \LaTeX3,
+ subtitle = hdu Undergraduate Thesis Proposal,
+ author = SAN Chi Nan (C668668E0),
+ date = {\today{} / Xiasha Campus},
+ supervisor = Prof. YIP Tsz Ching,
+ bibsource = reference.bib,
+ }
+
+\begin{document}
+
+\maketitle
+
+\section{Research Methods}
+
+\begin{frame}{Landau-Lifshitz-Gilbert Equation}
+ \pause
+ Landau-Lifshitz-Gilbert (LLG) equation describes the microkinetics of magnetization in ferromagnetic materials. It combines the Landau-Lifshitz (LL) equation and the Gilbert damping term $\alpha$, which is used to simulate and understand the micro-magnetic dynamics phenomena such as the motion of magnetic domain walls and magnetization reversal.
+ \pause
+ \begin{equation}
+ \odv{\mathbf m}{t} = -\gamma \mathbf m \times \mathbf H_\text{eff} -
+ \boxed{\alpha \mathbf m \times \odv{\mathbf m}{t}}
+ \end{equation}
+ \pause
+ To process the term $\alpha \mathbf m \times \odv{\mathbf m}/{t}$,
+ we left multiply the LLG equation by $\mathbf m$ and use the identity
+ $\mathbf m \cdot \odv{\mathbf m}/{t} = 0$ to generate LL equation.
+ \pause
+ \begin{equation}
+ \odv{\mathbf m}{t} = -\frac{\gamma}{1 + \alpha^2} \mathbf m \times \mathbf H - \frac{\gamma\alpha}{1 + \alpha^2} \mathbf m \times \mathbf m \times \mathbf H
+ \end{equation}
+ \pause
+ \alert{The LLG equation is more convenient for numerical calculation, while the LL equation can introduce the dissipation term more physically.}
+\end{frame}
+
+\begin{frame}{Applications}
+ \pause
+ \begin{block}{Magnetic Memory}
+ Magnetic memory is a type of non-volatile memory that uses magnetic fields to store data. It is a type of computer memory that does not require power to maintain the information stored in the memory.
+ \end{block}
+ \pause
+ \begin{exampleblock}{Magnetic Logic}
+ Magnetic logic is a type of logic gate that uses magnetic fields to perform logical operations. It is a promising technology for future computing systems.
+ \end{exampleblock}
+ \pause
+ \begin{alertblock}{Magnetic Sensor}
+ Magnetic sensors are devices that detect magnetic fields. They are used in a wide range of applications, including automotive, industrial, and consumer electronics.
+ \end{alertblock}
+ Lorem\cite{xu2023unified},
+ Ipsum\cite{wang2023electrical},
+ dummy\cite{haug2008quantum},
+ text\cite{wang2024switching,jhuria2020spin, gilbert2004phenomenological, foros2005magnetization,
+ chudnovskiy2008spin, foros2009noise, swiebodzinski2010spin,
+ brataas2008scattering, brataas2011magnetization}
+\end{frame}
+
+\begin{frame}{The NEGF Method}
+ \pause
+ The Nonequilibrium Green Function (NEGF) method can be used to study the quantum transport properties of nanoscale devices, such as quantum dots, nanowires, and molecular junctions. The four important Green's functions in the NEGF method are
+ \pause
+ \begin{equation}
+ \begin{cases*}
+ G^r = -i\theta(t - t') \ab\big<\{a_i(t), a_j^\dagger(t)\}> & Retarded Green's function\\
+ G^a = i\theta(t' - t) \ab\big<\{a_i(t), a_j^\dagger(t')\}> & Ahead Green's function\\
+ G^< = i\ab\big<\{a_j^\dagger(t'), a_i(t)\}> & Lesser Green's function\\
+ G^> = -i\ab\big<\{a_j^\dagger(t'), a_i(t)\}> & Greater Green's function
+ \end{cases*}
+ \end{equation}
+ \pause
+ And sometimes we need multiply anchors on the contour of time.
+ \begin{center}
+ \begin{tikzpicture}
+ \draw [->] (-3.6,0) -- (3,0) node [anchor=south] {$t$} node [anchor=north] {$+\infty$} node [at start,anchor=north] {$-\infty$};
+ \draw [densely dashed, red,thick] (-3,0.75) -- (1.5,0.75) node [at start,anchor=north] {$C_1$} arc (90:0:0.25);
+ \draw [densely dashed, green, thick] (1.75,0.5) arc (0:-90:0.25) node [at start] {$\times$} node [at start, anchor=west] {$t_1$} -- (-3.2,0.25) arc (90:270:0.25) -- (2.1,-0.25) arc (90:0:0.25);
+ \draw [densely dashed, ->, blue, thick] (2.35,-0.5) arc (0:-90:0.25) node [at start] {$\times$} node [at start,anchor=west] {$t_1'$} -- (-3,-0.75) node [anchor=south] {$C_2$};
+ \end{tikzpicture}
+ \end{center}
+\end{frame}
+
+\printbibliography
+
+\end{document}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-beamer.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,76 @@
+\documentclass
+ [
+ math-font = STIX Two Math, agreed,
+ CJKmain-font = { {Songti SC}[AutoFakeSlant] },
+ CJKsans-font = { {STHeiti}[AutoFakeBold = 2] }
+ ] {hduthesis}
+
+\tikzset{ > = stealth }
+\usetikzlibrary{positioning,shapes.geometric}
+
+\hduset
+ {
+ title = 基于 \hologo{LaTeX3} 开发的
+ 杭州电子科技大学硕士学位论文 \hologo{LaTeX} 模板/
+ \hologo{LaTeX} Template for Master's Thesis at Hangzhou Dianzi University that was Developed Based on \hologo{LaTeX3},
+ major = 凝聚态物理,
+ stdntid = C668668E0,
+ author = 申智能/SAN Chi Nan,
+ supervisor = 教授:葉芷晴/Prof.:YIP Tsz Ching,
+ bibsource = reference
+ }
+
+\begin{document}
+
+\maketitle
+\commitment
+ [
+ example-image-a/2025-05-31, example-image-a/2025-05-31,
+ example-image-b/2025-06-01
+ ]
+
+\begin{abstract}[cn]
+
+ 设计模式被广泛用于解决软件设计和开发过程中反复出现的设计问题。设计模式在软件源码中的使用信息(即设计模式实例)能够在较大程度上反映软件系统的设计思路。准确地从软件源码中识别和挖掘设计模式实例能够帮助软件开发和维护人员快速理解软件系统的原始设计和实现,从而对软件系统的维护、升级
+ 更新和二次开发等工作提供方便。
+
+ 近些年来软件工程领域提出了多种自动化或半自动化地挖掘设计模式实例的方法。其中部分方法将设计模式和软件源码转化为某种特定的图的形式,然后通过挖掘同构子图的方式挖掘设计模式实例。然而,由于同构子图挖掘问题是一个NP完全问题,这些方法的执行效率通常较低。
+
+ 为了有效解决基于子图同构的设计模式挖掘方法的效率低下问题,本文提出了一种高效的基于快速搜索序列和行为模板的结构型设计模式挖掘方法。该方法首先将设计模式和软件源码转化为一种带权有向图,即类关系图,然后从软件源码的类关系图中找出所有与设计模式的类关系图相同构的子图,每个子图的顶点所表示的类组成了一个候选设计模式实例。在挖掘过程中,本文方法为每种设计模式构建了一个快速搜索序列,该快速搜索序列描述了设计模式的结构信息并指定了一个高效的搜索设计模式角色的次序,从而大大减少了挖掘过程的搜索空间。此外,本文为每种设计模式制定了一个特定的行为模板,用于过滤候选实例集合中不满足行为特征的错误实例,进一步提高了本文方法的准确率。最后,本文选取4个常用的开源软件系统进行验证实验。实验结果表明,针对本文制定的结果基准,该方法不仅能够达到100\%的召回率和相对较高的准确率和F-measure值,而且显著提高了执行效率。
+
+ \keywords{设计模式, 设计模式挖掘, 快速搜索序列, 行为模板, 子图同构}
+\end{abstract}
+
+\begin{abstract}[en]
+
+ \setstretch{1.3}
+ Design patterns are widely used to address the recurring design problems during the process of software design and development. The information about design patterns used in software source code-design pattern instances reveal much about the high-level abstract design ideas. Accurately identifying and detecting design pattern instances in a software system can help developers and maintainers to understand its original design and implementation, facilitating maintenance, update and re-development.
+
+ In recent years, many approaches have been proposed to automatically or semi-automatically detecting design pattern instances from software source code. Among these approaches, some approaches transform software source code and design patterns into certain graphs, and then exploit subgraph isomorphism techniques to detect design pattern instances. However, as mining isomorphic subgraphs is an NP-complete problem, those approaches usually fail to achieve satisfactory efficiency.
+
+ In order to effectively solve the inefficiency of the approaches which are based on subgraph isomorphism, we propose an efficient approach to detect structural design pattern instances based on quick-search sequences and behavior templates. In the proposed approach, we transform software source code and design patterns into a certain form of weighted and directed graph namely Class Relationship Graph, and then detect all the subgraphs from the source code graph which are isomorphic to the Class Relationship Graph of a certain design pattern. The classes that each isomorphic subgraph's vertices represent then consist of a candidate instance. During the process of detecting design pattern instances, we construct a quick-search sequence for each design pattern, which describes the structural characteristics of design pattern and specify an order to efficiently search the roles of each design pattern. According to the quick-search sequence, we can greatly reduce the search space. Afterwards, we construct a specific behavior template, which is used to filter the false positives in the candidate instance set and further improve the processing efficiency. Finally, we exploit our approach on four well-known open-source software systems. The results demonstrate that our approach not only achieves nearly 100\% recall and relatively high precision and F-measure on the benchmark we construct, but also significantly.
+
+ \keywords
+ {
+ Design Pattern, Design Pattern Detection, Quick-Search Sequence,
+ Behavior Template, Sub-graph Isomorphism
+ }
+\end{abstract}
+
+\tableofcontents
+
+\chapter{绪论}
+
+\section{研究背景与意义}
+
+随着信息技术的飞速发展和广泛应用,各行各业都积累了大量的软件系统。
+
+\section{国内外研究现状}
+
+设计模式挖掘的相关研究工作伴随着设计模式在软件工程领域的提出而应运而生,并得到了广泛的关注和研究。正如 Apostolos Ampatzoglou 的描述,关于挖掘软件源码中设计模式实例的研究是设计模式相关的所有研究工作中最受关注的一项研究课题。
+
+\subsection{结构分析}
+
+结构分析方法是最常见的挖掘设计模式实例的方法。
+
+\end{document}
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-mphil.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,36 @@
+\documentclass[mode = stationery]{hduthesis}
+
+\usepackage{lipsum}
+\usepackage [ mono = false ] {libertine}
+
+\hduset
+ {
+ title = Recommendation Letter for SAN Chi Nan,
+ author = YIP Tsz Ching,
+ mail = email at server.domain,
+ date = \today,
+ watermark = true
+ }
+
+\begin{document}
+
+\maketitle
+
+Dear Prof. Wong,
+
+\lipsum[1-2]
+
+\vfill \raggedleft
+
+Sincerely yours,\\[4ex]
+\includegraphics[ height = 2em ]{hdutitle}\\[2ex]
+Professor of Department of Physics\\
+Hangzhou Dianzi University (Xiasha Campus)
+
+\vspace{\baselineskip}
+
+\clearpage
+
+\notelines[25]
+
+\end{document}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/hduthesis-stationery.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/reference.bib
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/reference.bib (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/reference.bib 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,232 @@
+ at article{cn1,
+ title={激光模拟射击训练器械及其射击精度的检定方法},
+ author={刘伯来 and 宋作本 and 徐忠瑞},
+ journal={山东体育科技},
+ volume={24},
+ number={4},
+ pages={17--19},
+ year={2002},
+}
+
+ at article{cn2,
+ title={一种新型激光射击训练模拟靶的设计},
+ author={任宏岩 and 戴炳明},
+ journal={大连理工大学学报},
+ number={增2},
+ pages={186--187},
+ year={1997},
+}
+
+ at article{cn3,
+ title={智能型光电打靶模拟训练系统},
+ author={戴炳明 and 任宏岩 and 张雏},
+ journal={半导体光电},
+ number={03},
+ pages={196--197},
+ year={1998},
+}
+
+ at book{cn4,
+ title={半导体激光器及其应用},
+ author={黄德修},
+ publisher={半导体激光器及其应用},
+ year={1999},
+ pages={1--27}
+}
+
+ at inproceedings{en5,
+ title={An optical photo-detector using a distributed amplifier and PIN photodiode combination},
+ author={Liang, Jia Yi and Aitchison, Colin S},
+ booktitle={1994 IEEE MTT-S International Microwave Symposium Digest (Cat. No. 94CH3389-4)},
+ pages={1101--1104},
+ year={1994},
+ organization={IEEE}
+}
+
+ at article{en6,
+ title={Photovoltaic materials, past, present, future},
+ author={Goetzberger, Adolf and Hebling, Christopher},
+ journal={Solar energy materials and solar cells},
+ volume={62},
+ number={1-2},
+ pages={1--19},
+ year={2000},
+ publisher={Elsevier}
+}
+
+ at book{cn7,
+ title={光电检测技术},
+ author={高稚允 and 高岳},
+ year={1995},
+ publisher={国防工业出版社},
+ pages={172--212}
+}
+
+ at book{cn8,
+ title={光电技术与实验},
+ author={江月松 and 阎平 and 刘振玉},
+ publisher={光电技术与实验},
+ year={2000},
+ pages={119--152}
+}
+
+ at book{cn9,
+ title={集成运算放大器应用手册},
+ author={W.G},
+ publisher={集成运算放大器应用手册},
+ year={1990},
+ pages={3--72}
+}
+
+ at book{cn10,
+ title={电子线路},
+ author={谢嘉奎},
+ publisher={北京:高等教育出版社},
+ year={1999},
+ pages={321--323}
+}
+
+ at book{cn11,
+ title={数字电路},
+ author={龚之春},
+ publisher={成都:电子科技大学出版},
+ year={1999},
+ pages={123--127}
+}
+
+ at book{cn12,
+ title={单片机基础},
+ author={李广弟},
+ publisher={北京:北京航空航天大学出版社},
+ year={1994},
+ pages={6--28}
+}
+
+ at article{xu2023unified,
+ title={Unified framework of the microscopic Landau-Lifshitz-Gilbert equation and its application to skyrmion dynamics},
+ author={Xu, Fuming and Li, Gaoyang and Chen, Jian and Yu, Zhizhou and Zhang, Lei and Wang, Baigeng and Wang, Jian},
+ journal={Physical Review B},
+ volume={108},
+ number={14},
+ pages={144409},
+ year={2023},
+ publisher={APS}
+}
+
+ at article{wang2023electrical,
+ title={Electrical switchable room-temperature magnetic skyrmions in multiferroic MXene},
+ author={Wang, Liming and Ga, Yonglong and Li, Peng and Yu, Dongxing and Jiang, Jiawei and Liang, Jinghua and Wang, Shouguo and Yang, Hongxin},
+ journal={Physical Review B},
+ volume={108},
+ number={5},
+ pages={054440},
+ year={2023},
+ publisher={APS}
+}
+
+ at book{haug2008quantum,
+ title={Quantum kinetics in transport and optics of semiconductors},
+ author={Haug, Hartmut and Jauho, Antti-Pekka and others},
+ volume={2},
+ year={2008},
+ publisher={Springer}
+}
+
+ at article{wang2024switching,
+ title={Switching intrinsic magnetic skyrmions with controllable magnetic anisotropy in van der Waals multiferroic heterostructures},
+ author={Wang, Ze-quan and Xue, Feng and Qiu, Liang and Wang, Zhe and Wu, Ruqian and Hou, Yusheng},
+ journal={Nano Letters},
+ volume={24},
+ number={14},
+ pages={4117--4123},
+ year={2024},
+ publisher={ACS Publications}
+}
+
+ at article{jhuria2020spin,
+ title={Spin--orbit torque switching of a ferromagnet with picosecond electrical pulses},
+ author={Jhuria, Kaushalya and Hohlfeld, Julius and Pattabi, Akshay and Martin, Elodie and Arriola C{\'o}rdova, Aldo Ygnacio and Shi, Xinping and Lo Conte, Roberto and Petit-Watelot, Sebastien and Rojas-Sanchez, Juan Carlos and Malinowski, Gregory and others},
+ journal={Nature Electronics},
+ volume={3},
+ number={11},
+ pages={680--686},
+ year={2020},
+ publisher={Nature Publishing Group UK London}
+}
+
+ at article{gilbert2004phenomenological,
+ title={A phenomenological theory of damping in ferromagnetic materials},
+ author={Gilbert, Thomas L},
+ journal={IEEE transactions on magnetics},
+ volume={40},
+ number={6},
+ pages={3443--3449},
+ year={2004},
+ publisher={IEEE}
+}
+
+ at article{foros2005magnetization,
+ title={Magnetization noise in magnetoelectronic nanostructures},
+ author={Foros, J{\o}rn and Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW},
+ journal={Physical review letters},
+ volume={95},
+ number={1},
+ pages={016601},
+ year={2005},
+ publisher={APS}
+}
+
+ at article{chudnovskiy2008spin,
+ title={Spin-torque shot noise in magnetic tunnel junctions},
+ author={Chudnovskiy, AL and Swiebodzinski, J and Kamenev, A},
+ journal={Physical review letters},
+ volume={101},
+ number={6},
+ pages={066601},
+ year={2008},
+ publisher={APS}
+}
+
+ at article{foros2009noise,
+ title={Noise and dissipation in magnetoelectronic nanostructures},
+ author={Foros, J{\o}rn and Brataas, Arne and Bauer, Gerrit EW and Tserkovnyak, Yaroslav},
+ journal={Physical Review B—Condensed Matter and Materials Physics},
+ volume={79},
+ number={21},
+ pages={214407},
+ year={2009},
+ publisher={APS}
+}
+
+ at article{swiebodzinski2010spin,
+ title={Spin torque dynamics with noise in magnetic nanosystems},
+ author={Swiebodzinski, J and Chudnovskiy, A and Dunn, T and Kamenev, A},
+ journal={Physical Review B—Condensed Matter and Materials Physics},
+ volume={82},
+ number={14},
+ pages={144404},
+ year={2010},
+ publisher={APS}
+}
+
+ at article{brataas2008scattering,
+ title={Scattering theory of Gilbert damping},
+ author={Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW},
+ journal={Physical review letters},
+ volume={101},
+ number={3},
+ pages={037207},
+ year={2008},
+ publisher={APS}
+}
+
+ at article{brataas2011magnetization,
+ title={Magnetization dissipation in ferromagnets from scattering theory},
+ author={Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW},
+ journal={Physical Review B—Condensed Matter and Materials Physics},
+ volume={84},
+ number={5},
+ pages={054416},
+ year={2011},
+ publisher={APS}
+}
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/example/reference.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdubadge.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdubadge.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdubadge.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdubadge.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdubadge.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdulogo.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdulogo.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdulogo.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdulogo.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdulogo.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdumotto.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdumotto.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdumotto.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdumotto.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdumotto.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hduthesis.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hduthesis.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hduthesis.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hduthesis.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hduthesis.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdutitle.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdutitle.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdutitle.pdf 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdutitle.pdf 2025-03-07 22:38:56 UTC (rev 74500)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hduthesis/hdutitle.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/License
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/License 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/License 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,415 +0,0 @@
-The LaTeX Project Public License
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-LPPL Version 1.3c 2008-05-04
-
-Copyright 1999 2002-2008 LaTeX3 Project
- Everyone is allowed to distribute verbatim copies of this
- license document, but modification of it is not allowed.
-
-
-PREAMBLE
-========
-
-The LaTeX Project Public License (LPPL) is the primary license under
-which the LaTeX kernel and the base LaTeX packages are distributed.
-
-You may use this license for any work of which you hold the copyright
-and which you wish to distribute. This license may be particularly
-suitable if your work is TeX-related (such as a LaTeX package), but
-it is written in such a way that you can use it even if your work is
-unrelated to TeX.
-
-The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
-below, gives instructions, examples, and recommendations for authors
-who are considering distributing their works under this license.
-
-This license gives conditions under which a work may be distributed
-and modified, as well as conditions under which modified versions of
-that work may be distributed.
-
-We, the LaTeX3 Project, believe that the conditions below give you
-the freedom to make and distribute modified versions of your work
-that conform with whatever technical specifications you wish while
-maintaining the availability, integrity, and reliability of
-that work. If you do not see how to achieve your goal while
-meeting these conditions, then read the document `cfgguide.tex'
-and `modguide.tex' in the base LaTeX distribution for suggestions.
-
-
-DEFINITIONS
-===========
-
-In this license document the following terms are used:
-
- `Work'
- Any work being distributed under this License.
-
- `Derived Work'
- Any work that under any applicable law is derived from the Work.
-
- `Modification'
- Any procedure that produces a Derived Work under any applicable
- law -- for example, the production of a file containing an
- original file associated with the Work or a significant portion of
- such a file, either verbatim or with modifications and/or
- translated into another language.
-
- `Modify'
- To apply any procedure that produces a Derived Work under any
- applicable law.
-
- `Distribution'
- Making copies of the Work available from one person to another, in
- whole or in part. Distribution includes (but is not limited to)
- making any electronic components of the Work accessible by
- file transfer protocols such as FTP or HTTP or by shared file
- systems such as Sun's Network File System (NFS).
-
- `Compiled Work'
- A version of the Work that has been processed into a form where it
- is directly usable on a computer system. This processing may
- include using installation facilities provided by the Work,
- transformations of the Work, copying of components of the Work, or
- other activities. Note that modification of any installation
- facilities provided by the Work constitutes modification of the Work.
-
- `Current Maintainer'
- A person or persons nominated as such within the Work. If there is
- no such explicit nomination then it is the `Copyright Holder' under
- any applicable law.
-
- `Base Interpreter'
- A program or process that is normally needed for running or
- interpreting a part or the whole of the Work.
-
- A Base Interpreter may depend on external components but these
- are not considered part of the Base Interpreter provided that each
- external component clearly identifies itself whenever it is used
- interactively. Unless explicitly specified when applying the
- license to the Work, the only applicable Base Interpreter is a
- `LaTeX-Format' or in the case of files belonging to the
- `LaTeX-format' a program implementing the `TeX language'.
-
-
-
-CONDITIONS ON DISTRIBUTION AND MODIFICATION
-===========================================
-
-1. Activities other than distribution and/or modification of the Work
-are not covered by this license; they are outside its scope. In
-particular, the act of running the Work is not restricted and no
-requirements are made concerning any offers of support for the Work.
-
-2. You may distribute a complete, unmodified copy of the Work as you
-received it. Distribution of only part of the Work is considered
-modification of the Work, and no right to distribute such a Derived
-Work may be assumed under the terms of this clause.
-
-3. You may distribute a Compiled Work that has been generated from a
-complete, unmodified copy of the Work as distributed under Clause 2
-above, as long as that Compiled Work is distributed in such a way that
-the recipients may install the Compiled Work on their system exactly
-as it would have been installed if they generated a Compiled Work
-directly from the Work.
-
-4. If you are the Current Maintainer of the Work, you may, without
-restriction, modify the Work, thus creating a Derived Work. You may
-also distribute the Derived Work without restriction, including
-Compiled Works generated from the Derived Work. Derived Works
-distributed in this manner by the Current Maintainer are considered to
-be updated versions of the Work.
-
-5. If you are not the Current Maintainer of the Work, you may modify
-your copy of the Work, thus creating a Derived Work based on the Work,
-and compile this Derived Work, thus creating a Compiled Work based on
-the Derived Work.
-
-6. If you are not the Current Maintainer of the Work, you may
-distribute a Derived Work provided the following conditions are met
-for every component of the Work unless that component clearly states
-in the copyright notice that it is exempt from that condition. Only
-the Current Maintainer is allowed to add such statements of exemption
-to a component of the Work.
-
- a. If a component of this Derived Work can be a direct replacement
- for a component of the Work when that component is used with the
- Base Interpreter, then, wherever this component of the Work
- identifies itself to the user when used interactively with that
- Base Interpreter, the replacement component of this Derived Work
- clearly and unambiguously identifies itself as a modified version
- of this component to the user when used interactively with that
- Base Interpreter.
-
- b. Every component of the Derived Work contains prominent notices
- detailing the nature of the changes to that component, or a
- prominent reference to another file that is distributed as part
- of the Derived Work and that contains a complete and accurate log
- of the changes.
-
- c. No information in the Derived Work implies that any persons,
- including (but not limited to) the authors of the original version
- of the Work, provide any support, including (but not limited to)
- the reporting and handling of errors, to recipients of the
- Derived Work unless those persons have stated explicitly that
- they do provide such support for the Derived Work.
-
- d. You distribute at least one of the following with the Derived Work:
-
- 1. A complete, unmodified copy of the Work;
- if your distribution of a modified component is made by
- offering access to copy the modified component from a
- designated place, then offering equivalent access to copy
- the Work from the same or some similar place meets this
- condition, even though third parties are not compelled to
- copy the Work along with the modified component;
-
- 2. Information that is sufficient to obtain a complete,
- unmodified copy of the Work.
-
-7. If you are not the Current Maintainer of the Work, you may
-distribute a Compiled Work generated from a Derived Work, as long as
-the Derived Work is distributed to all recipients of the Compiled
-Work, and as long as the conditions of Clause 6, above, are met with
-regard to the Derived Work.
-
-8. The conditions above are not intended to prohibit, and hence do not
-apply to, the modification, by any method, of any component so that it
-becomes identical to an updated version of that component of the Work as
-it is distributed by the Current Maintainer under Clause 4, above.
-
-9. Distribution of the Work or any Derived Work in an alternative
-format, where the Work or that Derived Work (in whole or in part) is
-then produced by applying some process to that format, does not relax or
-nullify any sections of this license as they pertain to the results of
-applying that process.
-
-10. a. A Derived Work may be distributed under a different license
- provided that license itself honors the conditions listed in
- Clause 6 above, in regard to the Work, though it does not have
- to honor the rest of the conditions in this license.
-
- b. If a Derived Work is distributed under a different license, that
- Derived Work must provide sufficient documentation as part of
- itself to allow each recipient of that Derived Work to honor the
- restrictions in Clause 6 above, concerning changes from the Work.
-
-11. This license places no restrictions on works that are unrelated to
-the Work, nor does this license place any restrictions on aggregating
-such works with the Work by any means.
-
-12. Nothing in this license is intended to, or may be used to, prevent
-complete compliance by all parties with all applicable laws.
-
-
-NO WARRANTY
-===========
-
-There is no warranty for the Work. Except when otherwise stated in
-writing, the Copyright Holder provides the Work `as is', without
-warranty of any kind, either expressed or implied, including, but not
-limited to, the implied warranties of merchantability and fitness for a
-particular purpose. The entire risk as to the quality and performance
-of the Work is with you. Should the Work prove defective, you assume
-the cost of all necessary servicing, repair, or correction.
-
-In no event unless required by applicable law or agreed to in writing
-will The Copyright Holder, or any author named in the components of the
-Work, or any other party who may distribute and/or modify the Work as
-permitted above, be liable to you for damages, including any general,
-special, incidental or consequential damages arising out of any use of
-the Work or out of inability to use the Work (including, but not limited
-to, loss of data, data being rendered inaccurate, or losses sustained by
-anyone as a result of any failure of the Work to operate with any other
-programs), even if the Copyright Holder or said author or said other
-party has been advised of the possibility of such damages.
-
-
-MAINTENANCE OF THE WORK
-=======================
-
-The Work has the status `author-maintained' if the Copyright Holder
-explicitly and prominently states near the primary copyright notice in
-the Work that the Work can only be maintained by the Copyright Holder
-or simply that it is `author-maintained'.
-
-The Work has the status `maintained' if there is a Current Maintainer
-who has indicated in the Work that they are willing to receive error
-reports for the Work (for example, by supplying a valid e-mail
-address). It is not required for the Current Maintainer to acknowledge
-or act upon these error reports.
-
-The Work changes from status `maintained' to `unmaintained' if there
-is no Current Maintainer, or the person stated to be Current
-Maintainer of the work cannot be reached through the indicated means
-of communication for a period of six months, and there are no other
-significant signs of active maintenance.
-
-You can become the Current Maintainer of the Work by agreement with
-any existing Current Maintainer to take over this role.
-
-If the Work is unmaintained, you can become the Current Maintainer of
-the Work through the following steps:
-
- 1. Make a reasonable attempt to trace the Current Maintainer (and
- the Copyright Holder, if the two differ) through the means of
- an Internet or similar search.
-
- 2. If this search is successful, then enquire whether the Work
- is still maintained.
-
- a. If it is being maintained, then ask the Current Maintainer
- to update their communication data within one month.
-
- b. If the search is unsuccessful or no action to resume active
- maintenance is taken by the Current Maintainer, then announce
- within the pertinent community your intention to take over
- maintenance. (If the Work is a LaTeX work, this could be
- done, for example, by posting to comp.text.tex.)
-
- 3a. If the Current Maintainer is reachable and agrees to pass
- maintenance of the Work to you, then this takes effect
- immediately upon announcement.
-
- b. If the Current Maintainer is not reachable and the Copyright
- Holder agrees that maintenance of the Work be passed to you,
- then this takes effect immediately upon announcement.
-
- 4. If you make an `intention announcement' as described in 2b. above
- and after three months your intention is challenged neither by
- the Current Maintainer nor by the Copyright Holder nor by other
- people, then you may arrange for the Work to be changed so as
- to name you as the (new) Current Maintainer.
-
- 5. If the previously unreachable Current Maintainer becomes
- reachable once more within three months of a change completed
- under the terms of 3b) or 4), then that Current Maintainer must
- become or remain the Current Maintainer upon request provided
- they then update their communication data within one month.
-
-A change in the Current Maintainer does not, of itself, alter the fact
-that the Work is distributed under the LPPL license.
-
-If you become the Current Maintainer of the Work, you should
-immediately provide, within the Work, a prominent and unambiguous
-statement of your status as Current Maintainer. You should also
-announce your new status to the same pertinent community as
-in 2b) above.
-
-
-WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
-======================================================
-
-This section contains important instructions, examples, and
-recommendations for authors who are considering distributing their
-works under this license. These authors are addressed as `you' in
-this section.
-
-Choosing This License or Another License
-----------------------------------------
-
-If for any part of your work you want or need to use *distribution*
-conditions that differ significantly from those in this license, then
-do not refer to this license anywhere in your work but, instead,
-distribute your work under a different license. You may use the text
-of this license as a model for your own license, but your license
-should not refer to the LPPL or otherwise give the impression that
-your work is distributed under the LPPL.
-
-The document `modguide.tex' in the base LaTeX distribution explains
-the motivation behind the conditions of this license. It explains,
-for example, why distributing LaTeX under the GNU General Public
-License (GPL) was considered inappropriate. Even if your work is
-unrelated to LaTeX, the discussion in `modguide.tex' may still be
-relevant, and authors intending to distribute their works under any
-license are encouraged to read it.
-
-A Recommendation on Modification Without Distribution
------------------------------------------------------
-
-It is wise never to modify a component of the Work, even for your own
-personal use, without also meeting the above conditions for
-distributing the modified component. While you might intend that such
-modifications will never be distributed, often this will happen by
-accident -- you may forget that you have modified that component; or
-it may not occur to you when allowing others to access the modified
-version that you are thus distributing it and violating the conditions
-of this license in ways that could have legal implications and, worse,
-cause problems for the community. It is therefore usually in your
-best interest to keep your copy of the Work identical with the public
-one. Many works provide ways to control the behavior of that work
-without altering any of its licensed components.
-
-How to Use This License
------------------------
-
-To use this license, place in each of the components of your work both
-an explicit copyright notice including your name and the year the work
-was authored and/or last substantially modified. Include also a
-statement that the distribution and/or modification of that
-component is constrained by the conditions in this license.
-
-Here is an example of such a notice and statement:
-
- %% pig.dtx
- %% Copyright 2008 M. Y. Name
- %
- % This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
- % of this license or (at your option) any later version.
- % The latest version of this license is in
- % https://www.latex-project.org/lppl.txt
- % and version 1.3c or later is part of all distributions of LaTeX
- % version 2008 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is M. Y. Name.
- %
- % This work consists of the files pig.dtx and pig.ins
- % and the derived file pig.sty.
-
-Given such a notice and statement in a file, the conditions
-given in this license document would apply, with the `Work' referring
-to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
-generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
-referring to any `LaTeX-Format', and both `Copyright Holder' and
-`Current Maintainer' referring to the person `M. Y. Name'.
-
-If you do not want the Maintenance section of LPPL to apply to your
-Work, change `maintained' above into `author-maintained'.
-However, we recommend that you use `maintained', as the Maintenance
-section was added in order to ensure that your Work remains useful to
-the community even when you can no longer maintain and support it
-yourself.
-
-Derived Works That Are Not Replacements
----------------------------------------
-
-Several clauses of the LPPL specify means to provide reliability and
-stability for the user community. They therefore concern themselves
-with the case that a Derived Work is intended to be used as a
-(compatible or incompatible) replacement of the original Work. If
-this is not the case (e.g., if a few lines of code are reused for a
-completely different task), then clauses 6b and 6d shall not apply.
-
-
-Important Recommendations
--------------------------
-
- Defining What Constitutes the Work
-
- The LPPL requires that distributions of the Work contain all the
- files of the Work. It is therefore important that you provide a
- way for the licensee to determine which files constitute the Work.
- This could, for example, be achieved by explicitly listing all the
- files of the Work near the copyright notice of each file or by
- using a line such as:
-
- % This work consists of all files listed in manifest.txt.
-
- in that place. In the absence of an unequivocal list it might be
- impossible for the licensee to determine what is considered by you
- to comprise the Work and, in such a case, the licensee would be
- entitled to make reasonable conjectures as to which files comprise
- the Work.
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/README.md
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/README.md 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/README.md 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,77 +0,0 @@
-## 杭州电子科技大学学位论文 LaTeX 模板
-
-杭州电子科技大学学位论文 LaTeX 模板以 `LaTeX-expl3` 构建,提供杭州电子科技大学学士和硕士学位论文格式.
-
-`hduThesiS` 的模块提供以下支持:
-
-- `typeset`: 数学和文本排版
-
-- `layout`: 封面和浮动题布局
-
-- `bc.config`: 学士论文格式配置
-
-- `pg.config`: 硕士论文格式配置
-
-- `beamer`: HDU Beamer 主题
-
-- `stationery.config`: 学校信纸生成
-
-
-
-- `hdu.l3doc`: 模板 `l3doc` 用户手册配置
-
----
-
-## The `hduThesiS` class: LaTeX class for Hangzhou Dianzi University.
-
-LaTeX class for bachelor and postgraduate theses in Hangzhou Dianzi University
-is constructed by `LaTeX-expl3` now. This class provides the bachelors' and
-postgraduates' thesis template for Hangzhou Dianzi University.
-
-Modules of `hduThesiS` provide the following supports:
-
-- `typeset`: Math and text Typeset
-
-- `layout`: Layout for cover and figures
-
-- `bc.config`: Configuration for bachelor thesis' format
-
-- `pg.config`: Configuration for postgraduate thesis' format
-
-- `beamer`: HDU Beamer theme
-
-- `stationery.config`: Creation of HDU's stationery
-
-
-
-- `hdu.l3doc`: Configuration for class's `l3doc` manual
-
-**Welcome to pull requests [here](https://github.com/myhsia/hduthesis).**
-
-## License
-
-This work may be distributed and/or modified under the conditions of the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), either version 1.3c of this license or (at your option) any later version.
-
-This work has the LPPL maintenance status `maintained`.
-
-The Current Maintainer of this work is [Mingyu Xia](https://www.ctan.org/author/xia-my).
-
----
-
-#### References
-
-> \[1\]. The LaTeX3 Interfaces
-
-> \[2\]. CTeX 宏集
-
-> \[3\]. LaTeX for package and class authors current version
-
-> \[4\]. The LaTeX2e Sources
-
-> \[5\]. The LaTeX3 kernel: style guide for code authors
-
-> \[6\]. Package `etoolbox`, `geometry`, `tocloft`, `fancyhdr`, etc.
-
-> \[7\]. [毕业设计(论文)的写作规范及格式要求(含写作模板)](https://jwc.hdu.edu.cn/2022/0428/c4555a153813/page.htm)
-
-> \[8\]. [杭州电子科技大学研究生学位论文格式统一要求(杭电研〔2012〕311号)](https://grs.hdu.edu.cn/2013/0507/c1730a51754/page.htm)
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,12 +0,0 @@
-\begin{abstract}
- \hologo{hduthesis} 是杭州电子科技大学学位论文 \hologo{LaTeX} 模板,支持学士、硕士学位论文排版,同时提供了学校信笺、Slides(幻灯片)模板.
-\end{abstract}
-
-\begin{center}
- \small\bfseries 用户协议
-\end{center}
-\begin{enumerate} [ itemsep = 0pt ] \small
- \item 本模板通过 LPPL 1.3c 协议开放源代码,您可以随意使用编译出的 PDF 文件.
- \item 本模板根据杭州电子科技大学教务处颁发的 \href{https://jwc.hdu.edu.cn/2022/0428/c4528a153813/page.htm}{杭电理工类毕业论文写作规范} 编写而成,作者不对使用本模板产生的格式审查问题负责. \emph{如果您所在的学院因论文查重、收录等原因要求提交 \file{.docx} 格式,不接收 \file{.pdf} 论文稿件,请勿执意使用本模板,避免因格式转换带来不必要的麻烦.} 使用本模板时,请按编译错误提示操作来勾选同意用户协议.
- \item 欢迎前往 GitHub 提交反馈意见,为推动学校认证与规范化 \hologo{hduthesis} 贡献力量.
-\end{enumerate}
\ No newline at end of file
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,379 +0,0 @@
-\section{\hologo{hduthesis} 模板介绍}
-
-\hologo{hduthesis}(\textbf Hangzhou \textbf Dianzi \textbf University \hologo{LaTeX} \textbf{Thesis} Template) 是杭州电子科技大学学位论文 \underline{非官方} \hologo{LaTeX} 模板,以 \hologo{LaTeX3} 构建,支持学士和硕士学位论文排版.
-
-本模板文档将尽量完整地介绍模板的使用方法,如有不清楚之处,或者想提出改进建议,可以在 \href{https://github.com/myhsia/hduthesis/issues}{GitHub Issues} 提交反馈意见及贡献代码.
-
-对于未接触过 \hologo{LaTeX} 的初学者,推荐阅读
-\href{https://tug.ctan.org/info/lshort/english/lshort.pdf}
- {\emph{The Not So Short Introduction to \hologo{LaTeX2e}}}
-(可在终端执行 \cmd{texdoc lshort} 获取)或者其中文版
-\href{http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf}
- {\emph{《一份(不太)简短的 \hologo{LaTeX2e} 介绍》}}
-(可在终端执行 \cmd{texdoc lshort-zh-cn} 获取).
-
-\subsection{模板组成}
-
-\hologo{hduthesis} 模板的 \file{./tex/} 文件夹中包含了模板的所有 Runtime 文件.
-其中,\file{hduthesis.cls} 是模板的核心文件,实质上并不提供主要功能,只用于对全局选项的控制加载模板的各个模块. 模板的功能模块如下
-
-\begin{tasks}(2)
- \task \file{typeset}:字体和公式设置.
- \task \file{hdu.l3doc}:用户手册模块.
- \addtocounter{task}{5}
- \task! \file{layout}:版面模块,用于提供封面所用到的盒子和对输入文档信息的处理.
- \addtocounter{task}{-6}
- \task \file{bc.config}:本科学位论文配置模块.
- \task \file{pg.config}:硕士学位论文配置模块.
- \task \file{beamerthemehdu}:Beamer 主题.
- \task \file{hdu.stationery}:信纸模块.
-\end{tasks}
-
-以上模块包含在 \file{hduthesis-}\meta{模块名}\file{-module.code.tex} 文件中.
-同时,\file{./tex/} 文件夹中还包含了 \file{hdulogo.pdf}、\file{hdutitle.pdf}、\file{hdumotto.pdf}、\file{hdubadge.pdf},分别提供杭州电子科技大学校徽、校名、校训和校牌的矢量图.
-\footnote
- {
- 这些矢量图均由 \href{https://www.hdu.edu.cn/666/list.htm}{校情纵览/校标规范} 所提供素材用 \href{https://inkscape.org}{Inkscape} 裁切制成. 如果你通过 \cmd{tlmgr} 安装了此模板,在其他文档类中也可以调用这些素材,并支持在 \hologo{XeLaTeX} 和 \hologo{pdfLaTeX} 编译器下使用 \cmd{Ti\textit k\/Z} 等方式设置透明度.
- }
-
-模板预制的宏包有
-
-\begin{table}[htbp]
- \centering \renewcommand* \arraystretch {.72}
- \begin{tabular*}{\linewidth}{*9{@{\hspace{1ex}}>{\footnotesize}l@{\hspace{1ex}}}}
- \toprule
- \pkg{amssymb} & \pkg{bm} & \pkg{booktabs} &
- \pkg{cancel} & \pkg{circuitikz} & \pkg{cleveref} &
- \pkg{derivative} & \pkg{extarrows} & \pkg{fixdif} \\
- \midrule
- \pkg{hyperref} & \pkg{listings} & \pkg{mathtools} &
- \pkg{multicol} & \pkg{pgfplots} & \pkg{physics2} &
- \pkg{siunitx} & \multicolumn{2}{@{}>{\footnotesize}l}{\pkg{unicode-math}}\\
- \bottomrule
- \end{tabular*}
-\end{table}
-
-\subsection{文件结构}
-
-\subsubsection{用户手册}
-
-\begin{center}
- \begin{minipage}{.36\linewidth}
- \dirtree
- {%
- .1 ./doc/.
- .2 hduthesis.tex.
- .2 hduthesis.pdf.
- }
- \end{minipage}
- \hfill
- \begin{minipage}{.6\linewidth}
- \dirtree
- {%
- .1 ./example/.
- .2 hduthesis-bc.tex, hduthesis-bc.pdf.
- .2 hduthesis-pg.tex, hduthesis-pg.pdf.
- }
- \end{minipage}
-\end{center}
-
-\subsubsection{Runtime 文件}
-
-\dirtree
- {%
- .1 ./tex/.
- .2 hduthesis.cls.
- .2 hduthesis-typeset-module.code.
- .2 hduthesis-layout-module.code.
- .2 hduthesis-bc.config-module.code.
- .2 hduthesis-pg.config-module.code.
- .2 beamerthemehdu.sty.
- .2 hduthesis-hdu.stationery-module.code.
- %
- .2 hduthesis-hdu.l3doc-module.code.
- .2 hdulogo.pdf, hdutitle.pdf, hdumotto.pdf, hdubadge.pdf.
- }
-
-\subsubsection{许可证、入门手册}
-
-\dirtree
- {%
- .1 ./License, README.md.
- }
-
-\subsection{模板的妥协与僵持}
-
-\begin{enumerate}
- \item 模板的章节(\cmd{chapter}、\cmd{section}、\cmd{subsection})字体、前后间距完全按照\emph{杭电理工类毕业论文写作规范}进行设置,虽然这样的设置可能与您的审美不符,但是这是为了保证论文的格式符合学校的要求.
- \item \emph{杭电理工类毕业论文写作规范} 中要求 \emph*{参考文献书写格式应符合GB7714-1987},但目前 \emph{GB7714-2015 为学术界通用格式,在已有新标准情况下旧标准理应废止使用}. 所以本模板默认使用 \pkg{gbt7714} 宏包.
- \item 根据 \hologo{TeX} 的设计特性:\emph{上一页末尾有足够的空间排版额外一行文本,但在该文本后出现的公式无法完整排版在该页时,上一页末尾的最后一行文本将联同该公式一起移至下一页}. 如果您觉得这样的排版方式不符合您的审美,可以更改数值 \cmd{penalty} 的大小来控制换页算法,但是并不推荐这么做.
-\end{enumerate}
-
-\section{模板安装}
-
-\subsection{系统要求}
-
-本模板支持在 \cmd{macOS}、\cmd{Windows}、\cmd{Linux}、\cmd{Overleaf}、\cmd{TeXPage} 等平台使用.
-\footnote
- {
- 所使用的测试平台为 \cmd{macOS Sequoia Version 15.3}、\cmd{Ubuntu 24.04.1 LTS}、\cmd{Overleaf} 上的 \hologo{TeX} Live 2024 发行版,本模板均可顺利编译.
- }
-本模板最低兼容发行版 \hologo{TeX} Live 2022,推荐使用 \hologo{TeX} Live 2023 或更新版本.
-\footnote
- {
- 发行版 \hologo{TeX} Live 2022 中:
- 1. 不包含 \pkg{physics2} 宏包.
- 2. 通过导言区设置中文字体伪粗体和伪斜体时可能遇到报错. 详情请见 3.2 节. \emph{本模板将于 2025 年 2 月 22 日前移除对 \hologo{TeX} Live 2022 的兼容.}
- }
-使用本模板生成学位论文,仅支持 \hologo{XeLaTeX} 编译;使用本模板生成信纸,支持 \hologo{pdfLaTeX} 编译.
-
-\subsection{标准安装}
-
-强烈建议您使用 \cmd{tlmgr} 进行安装与升级. 在终端(Terminal)执行以下命令即可安装最新版本的 \hologo{hduthesis} 模板.
-
-\begin{framed}
- \begin{verbatim}
- sudo tlmgr install hduthesis
- \end{verbatim}
-\end{framed}
-
-Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示符. 有些时候,您需要手动更新 \cmd{tlmgr} 才能正常使用 \cmd{tlmgr} 命令安装宏包.
-
-\begin{framed}
- \begin{verbatim}
- sudo tlmgr update --self
- \end{verbatim}
-\end{framed}
-
-升级该模板,在终端(Terminal)执行以下命令即可
-
-\begin{framed}
- \begin{verbatim}
- sudo tlmgr update hduthesis
- \end{verbatim}
-\end{framed}
-
-\subsection{手动安装}
-
-本模板已上传至 CTAN、GitHub 和 Gitee 平台,可直接下载最新版本的 \hologo{hduthesis} 模板. 下载后,将 \file{./hduthesis/tex/} 文件夹中的所有 (runtime) 文件复制到 \file{./hduthesis/example/} 目录下,即可编译 \file{./hduthesis/example/} 中的样例.
-
-\section{全局选项}
-
-\subsection{用户协议}
-
-使用本模板编译本科、硕士学位论文时遇到``编译受阻''报错,请认真阅读封面的用户协议.
-添加选项 \cmd{agreed} 后(即\verb|\documentclass [ agreed ] { hduthesis }|),方可顺利编译,\emph{并默认您已同意用户协议}.
-
-使用 \hologo{hduthesis} 编译信纸和本用户手册时,无需 \cmd{agreed} 选项.
-
-\subsection{字体设置}
-
-用户可通过全局选项设置文档的数学和中文字体. 设置的方式为键值对,键 \keys{\cmdmac~math-font} 用于设置数学字体,键 \keys{\cmdmac~CJKmain-font} 用于设置中文字体,键 \keys{\cmdmac~CJKsans-font} 用于设置中文无衬线字体. 以下是设置示例.
-
-\begin{framed}
- \begin{verbatim}
- \documentclass
- [
- math-font = STIX Two Math, agreed,
- CJKmain-font = {{Songti SC}[AutoFakeBold = 2.5, AutoFakeSlant]},
- CJKsans-font = {{STHeiti}[AutoFakeBold = 2]}
- ] {hduthesis}
- \end{verbatim}
-\end{framed}
-
-如果你使用的是 \hologo{TeX} Live 2022,设置中文字体的伪粗体和伪斜体时可能会遇到报错.
-在此发行版中,最多能对两个选项中的其一赋强度值,且被赋值选项需放在未被赋值选项前. 更加详细的字体设置请参考 \pkg{xeCJK} 宏包的文档.
-
-\section{文档信息设置}
-
-\begin{function}{\DocInfo}
- \begin{syntax}
- \cs{DocInfo}\marg{keyvals}
- \end{syntax}
-
- 此命令接收键值,用于设置文档信息,\emph{需在导言区中执行}. 键 \keys{\cmdmac~title} 用于设置论文标题,键 \keys{\cmdmac~department} 用于设置学院,键 \keys{\cmdmac~major} 用于设置专业,键 \keys{\cmdmac~class} 用于设置班级,键 \keys{\cmdmac~stdntid} 用于设置学号,键 \keys{\cmdmac~author} 用于设置作者,键 \keys{\cmdmac~supervisor} 用于设置导师,键 \keys{\cmdmac~bibsource} 用于设置插入参考文献文件源. 命令会根据输入的学号自动判断使用者为本科生/研究生.
-\end{function}
-
-本科生输入样例如下. 需要使用键 \keys{\cmdmac~title} 设置封面大标题,使用斜线 (/) 分隔.
-
-\begin{framed}
- \begin{verbatim}
- \DocInfo
- {
- title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/
- 本科毕业设计, department = 理学院, major = 物理学,
- bibsource = reference, class = 英才班, stdntid = C668668E,
- author = 申智能, supervisor = 教授:葉芷晴,
- }
- \end{verbatim}
-\end{framed}
-
-研究生输入样例如下. 硕士学位论文扉页需同时有英文版,因此需要在键 \keys{\cmdmac~title} \keys{\cmdmac~author} \keys{\cmdmac~supervisor} 中分别输入中文和英文信息,中英信息使用斜线 (\cmd/) 分隔,指导教师职称和姓名之间用半角冒号 (\cmd:) 分隔.
-
-\begin{framed}
- \begin{verbatim}
- \DocInfo
- {
- title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/
- \hologo{LaTeX} Template for Thesis at
- Hangzhou Dianzi University,
- major = 物理学, stdntid = 216686680,
- author = 申智能/SAN Chi Nan, bibsource = reference
- supervisor = 教授:葉芷晴/Prof.:YIP Tsz Ching,
- }
- \end{verbatim}
-\end{framed}
-
-\subsection{生成封面 \& 扉页}
-
-在正文区域,使用命令 \cmd{maketitle} 即可生成论文封面和扉页. 生成的封面和扉页会根据所设置的文档信息自动生成.
-
-\DescribeMacro{\l__hduthesis_grade_int}
-封面上的论文完成日期和学生毕业年份会根据当前系统时间自动生成.
-针对本科论文,如果当前月份在8月及以前,毕业年份会显示今年;如果当前月份在9月及以后,毕业年份会显示次年. 在 \cs{DocInfo} 后对整型 \cs{l__hduthesis_grade_int} 重新赋值可手动更改毕业年份.
-
-\begin{syntax}
- \cs{ExplSyntaxOn} \cs{int_set:Nn} \cs{l__hduthesis_grade_int} \marg{Year} \cs{ExplSyntaxOff}
-\end{syntax}
-
-\subsection{生成承诺书}
-
-\begin{function}{\commitment}
- \begin{syntax}
- \cs{commitment} \oarg{file1/yyyy-mm-dd, file2/yyyy-mm-dd, file3/yyyy-mm-dd}
- \end{syntax}
-
- 此命令用于生成承诺书. 命令的可选参数接收数组,用于指定签名文件和输入签名的日期. 签名文件和签名的日期之间用 \cmd{/} 分隔,多组签名之间用 \cmd{,} 分隔. 签名文件接收 \file{.pdf} / \file{.png} / \file{.jpg} 等格式. 日期的输入格式为 \texttt{yyyy-mm-dd}.
-\end{function}
-
-对于本科生,只需要签署 ``\emph*{诚信承诺}'' 一组签名;对于研生,则需要签署 ``\emph*{原创性声明}''、``\emph*{(作者同意)学位论文使用授权声明}'' 和 ``\emph*{(导师同意)学位论文使用授权声明}'' 三组签名. 使用用例如下
-
-\begin{framed}
- \begin{verbatim}
- \begin{document} ... \maketitle
- \commitment
- [ example-image-a/2025-05-31, example-image-a/2025-05-31,
- example-image-b/2025-06-01 ] ... \end{document}
- \end{verbatim}
-\end{framed}
-
-如果使用者暂未生成签名但是需要添加日期,则将签名文件留空即可,但分隔符 \cmd{/} 仍需保留. 例如
-\verb|\commitment [ /2024-05-31 ]|. 如果不需要添加日期,则直接留空即可.
-
-下两页分别为所生成的本科和硕士学位论文封面、扉页和承诺书缩略图. 可在终端执行 \cmd{texdoc hduthesis-bc} 和 \cmd{texdoc hduthesis-pg} 分别获取本科和硕士学位论文样例文件.
-
-\includepdfmerge
- [ nup = 2x3, frame, linktodoc, scale = 0.96, delta = 1in .25in ]
- { /Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-bc.pdf, 1-2,
- /Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-pg.pdf, 1-4 }
-
-\section{章节设置}
-
-\subsection{输入中 / 英摘要}
-
-\DescribeEnv{abstract}
-环境 \env{abstract} 用于生成摘要,其可选参数可设置语言格式.
-
-\DescribeMacro{\keywords}
-命令 \cs{keywords} 需在 \env{abstract} 环境内执行,其会根据 \env{abstract} 环境所选择的语言,自动生成英文 / 中文格式的关键词.
-
-\begin{framed}
- \begin{verbatim}
- \begin{abstract}[en]...\keywords{keyword1, keyword2} \end{abstract}
- \begin{abstract}[cn]...\keywords{关键词1, 关键词2} \end{abstract}
- \end{verbatim}
-\end{framed}
-
-通过命令 \cs{keywords} 以半角逗号 (,) 为分隔输入关键词列表,输出时会根据所处 \env{abstract} 环境选择的语言不同,自动以半 / 全角分号分隔.
-
-\subsection{输入目录 \& 正文}
-
-通过命令 \cs{tableofcontents} 可生成目录. \cs{chapter}、\cs{section}、\cs{subsection} 等章节级次均按照 \href{https://jwc.hdu.edu.cn/2022/0428/c4528a153813/page.htm}{杭电理工类毕业论文写作规范} 定制.
-
-\subsection{参考文献 \& 附录}
-
-通过命令 \cs{DocInfo} 指定 \file{.bib} 文件后使用命令 \cs{printbiblography} 即可输出参考文献列表. 参考文献格式已设置为 \cmd{gb7714-2015}. 若未指定参考文献 \file{.bib} 文件,为加速编译,\pkg{gbt7714} 宏包将不会加载.
-
-可以直接使用带有星号的章节命令生成附录章节,如 \verb|\chapter*{附录}|.
-
-\clearpage
-
-\section{附加模块}
-
-\subsection{用户手册}
-
-本手册为 \cls{hduthesis} 加载 \pkg{l3doc} 模块后生成,此模块无需 \pkg{agreed} 选项.
-
-\begin{framed}
- \begin{verbatim}
- \documentclass [ mode = l3doc ] { hduthesis }
- \end{verbatim}
-\end{framed}
-
-\subsection{杭州电子科技大学信笺}
-
-加载模块 \pkg{stationery},并进行文档信息设置,即可生成信纸. 可用于推荐信撰写或生成笔记纸.
-此模块无需 \pkg{agreed} 选项.
-
-\begin{framed}
- \begin{verbatim}
- \documentclass [ mode = stationery ] { hduthesis }
- \end{verbatim}
-\end{framed}
-
-与学士 / 硕士学位论文文档信息设置类似,使用 \cs{DocInfo} 命令,对信件主题、发件人、邮箱、日期和水印进行设置. 此时 \cs{DocInfo} 命令接受键
-\keys{\cmdmac~title} \keys{\cmdmac~author} \keys{\cmdmac~mail}
-\keys{\cmdmac~date} \keys{\cmdmac~watermark}. 下页为生成信纸的样例.
-
-\begin{framed}
- \begin{verbatim}
- \DocInfo
- {
- title = Recommendation Letter for SAN Chi Nan,
- author = YIP Tsz Ching, mail = email at server.domain,
- date = {23\textsuperscript{th} December, 2024},
- watermark = true
- }
- \begin{document} \maketitle ... \end{document}
- \end{verbatim}
-\end{framed}
-
-若要在信纸上添加笔记线,可使用命令 \cs{noteLine}\oarg{num},其可选参数接收笔记线的数量,默认值为20. 下两页分别为生成的信纸和笔记纸样例,可在终端执行 \cmd{texdoc hduthesis-stationery} 获取此样例文件.
-
-\includepdf[pages = -, nup = 1x2, angle = -90, frame, linktodoc, scale = 0.96, delta = 0in .25in]
- {/Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-stationery}
-
-\subsection{Beamer 主题}
-
-本模板中存在独立的 Beamer 主题 \pkg{hdu},用于生成杭州电子科技大学风格的 Beamer 幻灯片. 由于本主题为杭州电子科技大学专属,所以该主题暂不开放更改主题色杭电蓝和Logo.
-
-加载模块 \pkg{beamer},并进行文档信息设置,即以 \pkg{hdu} 为主题制作Beamer.
-此模块无需 \pkg{agreed} 选项.
-
-\begin{framed}
- \begin{verbatim}
- \documentclass [ mode = beamer ] { hduthesis }
- \end{verbatim}
-\end{framed}
-
-与学士 / 硕士学位论文文档信息设置类似,使用 \cs{DocInfo} 命令,对信件主题、发件人、邮箱、日期和水印进行设置. 此时 \cs{DocInfo} 命令接受键
-\keys{\cmdmac~title} \keys{\cmdmac~subtitle} \keys{\cmdmac~author} \keys{\cmdmac~date} \keys{\cmdmac~supervisor} \keys{\cmdmac~reference}. 下页为生成Beamer的样例.
-
-\begin{framed}
- \begin{verbatim}
- \DocInfo
- {
- title = Research and Application of Micromagnetic Simulation
- Based on Landau-Lifshitz-Gilbert Equation,
- subtitle = hdu Undergraduate Thesis Proposal,
- author = SAN Chi Nan (C668668E0),
- date = {\today{} / Building 6, Room 321},
- supervisor = Prof. YIP Tsz Ching,
- bibsource = reference.bib,
- }
- \end{verbatim}
-\end{framed}
-
-\begin{center}
- \includepdf[pages = -, nup = 2x4, frame, linktodoc, scale = 0.96, delta = .25in .2in]{/Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-beamer.pdf}
-\end{center}
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,20 +0,0 @@
-\ExplSyntaxOn
-\pagecolor{black!\fpeval{100-3200/255}}
-\appendix
-\colorlet{bg}{black!\fpeval{100-2400/255}}
-\hypersetup
- { filecolor = DarkGreen!40, urlcolor = MidnightBlue!40,
- linkcolor = FireBrick!40 }
-\cfoot{\color_select:n{black!10} \thepage}
-\lhead{} \rhead{} \let \headrule \relax
-\pagestyle{fancy}
-\color{black!10} \color_select:n{black!10}
-\ExplSyntaxOff
-\changefontsize[10.5pt]{8.5pt}
-\section{实现细节}
-
-恭喜你已经阅读到了这部分!如你所见,页面已经变成了程序员视力友好颜色. 下面这些内容面向 \hologo{LaTeX} 宏包开发者或者对 \hologo{hduthesis} 开发感兴趣的用户\footnote{\color{black!10}本部分由 GitHub Copilot 生成并由作者人工校验.},如果您有任何意见或建议或想法,都欢迎到 \href{https://github.com/myhsia/hduthesis/issues}{GitHub} 提交Issue. 您对模板开发或者本文档的撰写的任何贡献都会受到诚挚欢迎!
-
-\setlength {\parindent} {0em}
-
-\foreach \i in {1,...,7} { \input{cha/source/a\i.tex} }
\ No newline at end of file
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.pdf
===================================================================
(Binary files differ)
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,45 +0,0 @@
-\documentclass
- [
- math-font = STIX Two Math, agreed,
- CJKmain-font = { {Songti SC}[AutoFakeBold = 2.5, AutoFakeSlant] },
- CJKsans-font = { {STHeiti}[AutoFakeBold = 2] }
- ] {hduthesis}
-\tikzset{ > = stealth }
-\usetikzlibrary{positioning,shapes.geometric}
-
-\DocInfo
- {
- title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/本科毕业设计,
- department = 理学院,
- major = 物理学,
- class = 英才班,
- stdntid = C668668E,
- author = 申智能,
- supervisor = 教授:葉芷晴,
- bibsource = reference
- }
-
-\begin{document}
-
-\maketitle
-\commitment [ example-image-a/2024-05-31 ]
-
-\input{cha/abstract.tex}
-
-\tableofcontents
-
-\input{cha/cha1.tex}
-\input{cha/cha2.tex}
-\input{cha/cha3.tex}
-\input{cha/cha4.tex}
-\input{cha/cha5.tex}
-\input{cha/cha6.tex}
-\input{cha/cha7.tex}
-\input{cha/thanks.tex}
-\printbibliography
-
-\appendix
-\chapter*{附录}
-\addcontentsline{toc}{chapter}{附录}
-
-\end{document}
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.pdf
===================================================================
(Binary files differ)
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,93 +0,0 @@
-\documentclass[ mode = beamer, handout ]{hduthesis}
-
-\usepackage[mono = false]{libertine}
-\DocInfo
- {
- title = Research and Application of Micromagnetic Simulation Based on Landau-Lifshitz-Gilbert Equation,
- subtitle = hdu Undergraduate Thesis Proposal,
- author = SAN Chi Nan (C668668E0),
- date = {\today{} / Building 6, Room 321},
- supervisor = Prof. YIP Tsz Ching,
- bibsource = reference.bib,
- }
-
-\begin{document}
-
-\maketitle
-
-\section{Research Methods}
-
-\begin{frame}{Landau-Lifshitz-Gilbert Equation}
- \pause
- Landau-Lifshitz-Gilbert (LLG) equation describes the microkinetics of magnetization in ferromagnetic materials. It combines the Landau-Lifshitz (LL) equation and the Gilbert damping term $\alpha$, which is used to simulate and understand the micro-magnetic dynamics phenomena such as the motion of magnetic domain walls and magnetization reversal.
- \pause
- \begin{equation}
- \odv{\mathbf m}{t} = -\gamma \mathbf m \times \mathbf H_\text{eff} -
- \boxed{\alpha \mathbf m \times \odv{\mathbf m}{t}}
- \end{equation}
- \pause
- To process the term $\alpha \mathbf m \times \odv{\mathbf m}/{t}$,
- we left multiply the LLG equation by $\mathbf m$ and use the identity
- $\mathbf m \cdot \odv{\mathbf m}/{t} = 0$ to generate LL equation.
- \pause
- \begin{equation}
- \odv{\mathbf m}{t} = -\frac{\gamma}{1 + \alpha^2} \mathbf m \times \mathbf H - \frac{\gamma\alpha}{1 + \alpha^2} \mathbf m \times \mathbf m \times \mathbf H
- \end{equation}
- \pause
- \alert{The LLG equation is more convenient for numerical calculation, while the LL equation can introduce the dissipation term more physically.}
-\end{frame}
-
-\begin{frame}{Applications}
- \pause
- \begin{block}{Magnetic Memory}
- Magnetic memory is a type of non-volatile memory that uses magnetic fields to store data. It is a type of computer memory that does not require power to maintain the information stored in the memory.
- \end{block}
- \pause
- \begin{exampleblock}{Magnetic Logic}
- Magnetic logic is a type of logic gate that uses magnetic fields to perform logical operations. It is a promising technology for future computing systems.
- \end{exampleblock}
- \pause
- \begin{alertblock}{Magnetic Sensor}
- Magnetic sensors are devices that detect magnetic fields. They are used in a wide range of applications, including automotive, industrial, and consumer electronics.
- \end{alertblock}
- Lorem\cite{xu2023unified},
- Ipsum\cite{wang2023electrical},
- dummy\cite{haug2008quantum},
- text\cite{wang2024switching},
- \cite{jhuria2020spin},
- \cite{gilbert2004phenomenological},
- \cite{foros2005magnetization},
- \cite{chudnovskiy2008spin},
- \cite{foros2009noise},
- \cite{swiebodzinski2010spin},
- \cite{brataas2008scattering},
- \cite{brataas2011magnetization}
-\end{frame}
-
-\begin{frame}{The Nonequilibrium Green's Function Method}
- \pause
- The NEGF method can be used to study the quantum transport properties of nanoscale devices, such as quantum dots, nanowires, and molecular junctions. The four important Green's functions in the NEGF method are
- \pause
- \begin{equation}
- \begin{cases*}
- G^r = -i\theta(t - t') \ab<\{a_i(t), a_j^\dagger(t)\}> & Retarded Green's function\\
- G^a = i\theta(t' - t) \ab<\{a_i(t), a_j^\dagger(t')\}> & Ahead Green's function\\
- G^< = i\ab<\{a_j^\dagger(t'), a_i(t)\}> & Lesser Green's function\\
- G^> = -i\ab<\{a_j^\dagger(t'), a_i(t)\}> & Greater Green's function
- \end{cases*}
- \end{equation}
- \pause
- And sometimes we need multiply anchors on the contour of time.
- \begin{center}
- \begin{tikzpicture}
- \draw [->] (-3.6,0) -- (3,0) node [anchor=south] {$t$} node [anchor=north] {$+\infty$} node [at start,anchor=north] {$-\infty$};
- \draw [densely dashed, red,thick] (-3,0.75) -- (1.5,0.75) node [at start,anchor=north] {$C_1$} arc (90:0:0.25);
- \draw [densely dashed, green, thick] (1.75,0.5) arc (0:-90:0.25) node [at start] {$\times$} node [at start, anchor=west] {$t_1$} -- (-3.2,0.25) arc (90:270:0.25) -- (2.1,-0.25) arc (90:0:0.25);
- \draw [densely dashed, ->, blue, thick] (2.35,-0.5) arc (0:-90:0.25) node [at start] {$\times$} node [at start,anchor=west] {$t_1'$} -- (-3,-0.75) node [anchor=south] {$C_2$};
- \end{tikzpicture}
- \end{center}
-\end{frame}
-
-\printbibliography
-
-\end{document}
\ No newline at end of file
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.pdf
===================================================================
(Binary files differ)
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,76 +0,0 @@
-\documentclass
- [
- math-font = STIX Two Math, agreed,
- CJKmain-font = { {Songti SC}[AutoFakeSlant] },
- CJKsans-font = { {STHeiti}[AutoFakeBold = 2] }
- ] {hduthesis}
-
-\tikzset{ > = stealth }
-\usetikzlibrary{positioning,shapes.geometric}
-
-\DocInfo
- {
- title = 基于 \hologo{LaTeX3} 开发的
- 杭州电子科技大学硕士学位论文 \hologo{LaTeX} 模板/
- \hologo{LaTeX} Template for Master's Thesis at Hangzhou Dianzi University that was Developed Based on \hologo{LaTeX3},
- major = 凝聚态物理,
- stdntid = C668668E0,
- author = 申智能/SAN Chi Nan,
- supervisor = 教授:葉芷晴/Prof.:YIP Tsz Ching,
- % bibsource = reference
- }
-
-\begin{document}
-
-\maketitle
-\commitment
- [
- example-image-a/2025-05-31, example-image-a/2025-05-31,
- example-image-b/2025-06-01
- ]
-
-\begin{abstract}[cn]
-
- 设计模式被广泛用于解决软件设计和开发过程中反复出现的设计问题。设计模式在软件源码中的使用信息(即设计模式实例)能够在较大程度上反映软件系统的设计思路。准确地从软件源码中识别和挖掘设计模式实例能够帮助软件开发和维护人员快速理解软件系统的原始设计和实现,从而对软件系统的维护、升级
- 更新和二次开发等工作提供方便。
-
- 近些年来软件工程领域提出了多种自动化或半自动化地挖掘设计模式实例的方法。其中部分方法将设计模式和软件源码转化为某种特定的图的形式,然后通过挖掘同构子图的方式挖掘设计模式实例。然而,由于同构子图挖掘问题是一个NP完全问题,这些方法的执行效率通常较低。
-
- 为了有效解决基于子图同构的设计模式挖掘方法的效率低下问题,本文提出了一种高效的基于快速搜索序列和行为模板的结构型设计模式挖掘方法。该方法首先将设计模式和软件源码转化为一种带权有向图,即类关系图,然后从软件源码的类关系图中找出所有与设计模式的类关系图相同构的子图,每个子图的顶点所表示的类组成了一个候选设计模式实例。在挖掘过程中,本文方法为每种设计模式构建了一个快速搜索序列,该快速搜索序列描述了设计模式的结构信息并指定了一个高效的搜索设计模式角色的次序,从而大大减少了挖掘过程的搜索空间。此外,本文为每种设计模式制定了一个特定的行为模板,用于过滤候选实例集合中不满足行为特征的错误实例,进一步提高了本文方法的准确率。最后,本文选取4个常用的开源软件系统进行验证实验。实验结果表明,针对本文制定的结果基准,该方法不仅能够达到100\%的召回率和相对较高的准确率和F-measure值,而且显著提高了执行效率。
-
- \keywords{设计模式, 设计模式挖掘, 快速搜索序列, 行为模板, 子图同构}
-\end{abstract}
-
-\begin{abstract}[en]
-
- \setstretch{1.3}
- Design patterns are widely used to address the recurring design problems during the process of software design and development. The information about design patterns used in software source code-design pattern instances reveal much about the high-level abstract design ideas. Accurately identifying and detecting design pattern instances in a software system can help developers and maintainers to understand its original design and implementation, facilitating maintenance, update and re-development.
-
- In recent years, many approaches have been proposed to automatically or semi-automatically detecting design pattern instances from software source code. Among these approaches, some approaches transform software source code and design patterns into certain graphs, and then exploit subgraph isomorphism techniques to detect design pattern instances. However, as mining isomorphic subgraphs is an NP-complete problem, those approaches usually fail to achieve satisfactory efficiency.
-
- In order to effectively solve the inefficiency of the approaches which are based on subgraph isomorphism, we propose an efficient approach to detect structural design pattern instances based on quick-search sequences and behavior templates. In the proposed approach, we transform software source code and design patterns into a certain form of weighted and directed graph namely Class Relationship Graph, and then detect all the subgraphs from the source code graph which are isomorphic to the Class Relationship Graph of a certain design pattern. The classes that each isomorphic subgraph's vertices represent then consist of a candidate instance. During the process of detecting design pattern instances, we construct a quick-search sequence for each design pattern, which describes the structural characteristics of design pattern and specify an order to efficiently search the roles of each design pattern. According to the quick-search sequence, we can greatly reduce the search space. Afterwards, we construct a specific behavior template, which is used to filter the false positives in the candidate instance set and further improve the processing efficiency. Finally, we exploit our approach on four well-known open-source software systems. The results demonstrate that our approach not only achieves nearly 100\% recall and relatively high precision and F-measure on the benchmark we construct, but also significantly.
-
- \keywords
- {
- Design Pattern, Design Pattern Detection, Quick-Search Sequence,
- Behavior Template, Sub-graph Isomorphism
- }
-\end{abstract}
-
-\tableofcontents
-
-\chapter{绪论}
-
-\section{研究背景与意义}
-
-随着信息技术的飞速发展和广泛应用,各行各业都积累了大量的软件系统。
-
-\section{国内外研究现状}
-
-设计模式挖掘的相关研究工作伴随着设计模式在软件工程领域的提出而应运而生,并得到了广泛的关注和研究。正如 Apostolos Ampatzoglou 的描述,关于挖掘软件源码中设计模式实例的研究是设计模式相关的所有研究工作中最受关注的一项研究课题。
-
-\subsection{结构分析}
-
-结构分析方法是最常见的挖掘设计模式实例的方法。
-
-\end{document}
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.pdf
===================================================================
(Binary files differ)
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,36 +0,0 @@
-\documentclass[mode = stationery]{hduthesis}
-
-\usepackage{lipsum}
-\RequirePackage [ mono = false ] {libertine}
-
-\DocInfo
- {
- title = Recommendation Letter for SAN Chi Nan,
- author = YIP Tsz Ching,
- mail = email at server.domain,
- date = \today,
- watermark = true
- }
-
-\begin{document}
-
-\maketitle
-
-Dear Prof. Wong,
-
-\lipsum[1-2]
-
-\vfill \raggedleft
-
-Sincerely yours,\\[4ex]
-\includegraphics[ height = 2em ]{hdutitle}\\[2ex]
-Professor of Department of Physics\\
-Room \meta{int}, Building \meta{int}, Hangzhou Dianzi University
-
-\vspace{\baselineskip}
-
-\clearpage
-
-\notelines[25]
-
-\end{document}
\ No newline at end of file
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,232 +0,0 @@
- at article{cn1,
- title={激光模拟射击训练器械及其射击精度的检定方法},
- author={刘伯来 and 宋作本 and 徐忠瑞},
- journal={山东体育科技},
- volume={24},
- number={4},
- pages={17--19},
- year={2002},
-}
-
- at article{cn2,
- title={一种新型激光射击训练模拟靶的设计},
- author={任宏岩 and 戴炳明},
- journal={大连理工大学学报},
- number={增2},
- pages={186--187},
- year={1997},
-}
-
- at article{cn3,
- title={智能型光电打靶模拟训练系统},
- author={戴炳明 and 任宏岩 and 张雏},
- journal={半导体光电},
- number={03},
- pages={196--197},
- year={1998},
-}
-
- at book{cn4,
- title={半导体激光器及其应用},
- author={黄德修},
- publisher={半导体激光器及其应用},
- year={1999},
- pages={1--27}
-}
-
- at inproceedings{en5,
- title={An optical photo-detector using a distributed amplifier and PIN photodiode combination},
- author={Liang, Jia Yi and Aitchison, Colin S},
- booktitle={1994 IEEE MTT-S International Microwave Symposium Digest (Cat. No. 94CH3389-4)},
- pages={1101--1104},
- year={1994},
- organization={IEEE}
-}
-
- at article{en6,
- title={Photovoltaic materials, past, present, future},
- author={Goetzberger, Adolf and Hebling, Christopher},
- journal={Solar energy materials and solar cells},
- volume={62},
- number={1-2},
- pages={1--19},
- year={2000},
- publisher={Elsevier}
-}
-
- at book{cn7,
- title={光电检测技术},
- author={高稚允 and 高岳},
- year={1995},
- publisher={国防工业出版社},
- pages={172--212}
-}
-
- at book{cn8,
- title={光电技术与实验},
- author={江月松 and 阎平 and 刘振玉},
- publisher={光电技术与实验},
- year={2000},
- pages={119--152}
-}
-
- at book{cn9,
- title={集成运算放大器应用手册},
- author={W.G},
- publisher={集成运算放大器应用手册},
- year={1990},
- pages={3--72}
-}
-
- at book{cn10,
- title={电子线路},
- author={谢嘉奎},
- publisher={北京:高等教育出版社},
- year={1999},
- pages={321--323}
-}
-
- at book{cn11,
- title={数字电路},
- author={龚之春},
- publisher={成都:电子科技大学出版},
- year={1999},
- pages={123--127}
-}
-
- at book{cn12,
- title={单片机基础},
- author={李广弟},
- publisher={北京:北京航空航天大学出版社},
- year={1994},
- pages={6--28}
-}
-
- at article{xu2023unified,
- title={Unified framework of the microscopic Landau-Lifshitz-Gilbert equation and its application to skyrmion dynamics},
- author={Xu, Fuming and Li, Gaoyang and Chen, Jian and Yu, Zhizhou and Zhang, Lei and Wang, Baigeng and Wang, Jian},
- journal={Physical Review B},
- volume={108},
- number={14},
- pages={144409},
- year={2023},
- publisher={APS}
-}
-
- at article{wang2023electrical,
- title={Electrical switchable room-temperature magnetic skyrmions in multiferroic MXene},
- author={Wang, Liming and Ga, Yonglong and Li, Peng and Yu, Dongxing and Jiang, Jiawei and Liang, Jinghua and Wang, Shouguo and Yang, Hongxin},
- journal={Physical Review B},
- volume={108},
- number={5},
- pages={054440},
- year={2023},
- publisher={APS}
-}
-
- at book{haug2008quantum,
- title={Quantum kinetics in transport and optics of semiconductors},
- author={Haug, Hartmut and Jauho, Antti-Pekka and others},
- volume={2},
- year={2008},
- publisher={Springer}
-}
-
- at article{wang2024switching,
- title={Switching intrinsic magnetic skyrmions with controllable magnetic anisotropy in van der Waals multiferroic heterostructures},
- author={Wang, Ze-quan and Xue, Feng and Qiu, Liang and Wang, Zhe and Wu, Ruqian and Hou, Yusheng},
- journal={Nano Letters},
- volume={24},
- number={14},
- pages={4117--4123},
- year={2024},
- publisher={ACS Publications}
-}
-
- at article{jhuria2020spin,
- title={Spin--orbit torque switching of a ferromagnet with picosecond electrical pulses},
- author={Jhuria, Kaushalya and Hohlfeld, Julius and Pattabi, Akshay and Martin, Elodie and Arriola C{\'o}rdova, Aldo Ygnacio and Shi, Xinping and Lo Conte, Roberto and Petit-Watelot, Sebastien and Rojas-Sanchez, Juan Carlos and Malinowski, Gregory and others},
- journal={Nature Electronics},
- volume={3},
- number={11},
- pages={680--686},
- year={2020},
- publisher={Nature Publishing Group UK London}
-}
-
- at article{gilbert2004phenomenological,
- title={A phenomenological theory of damping in ferromagnetic materials},
- author={Gilbert, Thomas L},
- journal={IEEE transactions on magnetics},
- volume={40},
- number={6},
- pages={3443--3449},
- year={2004},
- publisher={IEEE}
-}
-
- at article{foros2005magnetization,
- title={Magnetization noise in magnetoelectronic nanostructures},
- author={Foros, J{\o}rn and Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW},
- journal={Physical review letters},
- volume={95},
- number={1},
- pages={016601},
- year={2005},
- publisher={APS}
-}
-
- at article{chudnovskiy2008spin,
- title={Spin-torque shot noise in magnetic tunnel junctions},
- author={Chudnovskiy, AL and Swiebodzinski, J and Kamenev, A},
- journal={Physical review letters},
- volume={101},
- number={6},
- pages={066601},
- year={2008},
- publisher={APS}
-}
-
- at article{foros2009noise,
- title={Noise and dissipation in magnetoelectronic nanostructures},
- author={Foros, J{\o}rn and Brataas, Arne and Bauer, Gerrit EW and Tserkovnyak, Yaroslav},
- journal={Physical Review B—Condensed Matter and Materials Physics},
- volume={79},
- number={21},
- pages={214407},
- year={2009},
- publisher={APS}
-}
-
- at article{swiebodzinski2010spin,
- title={Spin torque dynamics with noise in magnetic nanosystems},
- author={Swiebodzinski, J and Chudnovskiy, A and Dunn, T and Kamenev, A},
- journal={Physical Review B—Condensed Matter and Materials Physics},
- volume={82},
- number={14},
- pages={144404},
- year={2010},
- publisher={APS}
-}
-
- at article{brataas2008scattering,
- title={Scattering theory of Gilbert damping},
- author={Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW},
- journal={Physical review letters},
- volume={101},
- number={3},
- pages={037207},
- year={2008},
- publisher={APS}
-}
-
- at article{brataas2011magnetization,
- title={Magnetization dissipation in ferromagnets from scattering theory},
- author={Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW},
- journal={Physical Review B—Condensed Matter and Materials Physics},
- volume={84},
- number={5},
- pages={054416},
- year={2011},
- publisher={APS}
-}
\ No newline at end of file
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.pdf
===================================================================
(Binary files differ)
Deleted: branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex 2025-03-07 22:38:31 UTC (rev 74499)
+++ branches/branch2024.final/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -1,34 +0,0 @@
-\documentclass[ mode = l3doc ]{hduthesis}
-
-\usepackage[fontsize = 10.5pt]{fontsize}
-
-\DocInfo
- {
- title = \hologo{hduThesiS} 文档类\\
- 杭州电子科技大学学位论文 \hologo{LaTeX} 模板
- \footnote
- {
- 在 杭州电子科技大学非毕业生 / 教师 中寻找模板的继承维护者,
- 要求熟悉 \pkg{expl3}. 欢迎有意愿者邮件联系作者.
- },
- author = Mingyu Xia \mailto{myhsia at hdu.edu.cn}
- \footnote{Physics Department, Graduate in 06/2025},
- CJKmain-font = {[AutoFakeSlant]{Songti SC}},
- CJKsans-font = {[BoldFont = Hei, AutoFakeSlant]{Heiti SC}},
- CJKmono-font = {[AutoFakeSlant]{Kaiti SC}}
- }
-
-\begin{document}
-
-\maketitle
-
-\input{cha/abstract.tex}
-
-\setcounter{tocdepth}{2} \tableofcontents
-
-\input{cha/contents.tex}
-
-\clearpage
-\input{cha/source.tex}
-
-\end{document}
Added: branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hdu-graphics.dtx
===================================================================
--- branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hdu-graphics.dtx (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hdu-graphics.dtx 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,3737 @@
+% \iffalse meta-comment
+%
+% File: hdu-graphics.dtx
+% -----------------------------------------------------------------------
+% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+% *
+% It may be distributed and/or modified under the conditions of the *
+% LaTeX Project Public License (LPPL), either version 1.3c of this *
+% license or (at your option) any later version. The latest version *
+% of this license is in the file *
+% *
+% http://www.latex-project.org/lppl.txt *
+% *
+% This work has the LPPL maintenance status `maintained'. *
+% *
+% The Current Maintainer of this work is Mingyu Xia. *
+% *
+% This work consists of the files hduthesis.dtx, *
+% hdu-graphics.dtx, *
+% and hduthesis.ins, *
+% and the derived files hduthesis.cls, *
+% hdu-<module>.code.tex, *
+% beamerthemehdu.sty, *
+% hdulogo.pdf, *
+% hdutitle.pdf, *
+% hdubadge.pdf, *
+% hdumotto.pdf, *
+% hduthesis.pdf, *
+% and README.md. *
+% -----------------------------------------------------------------------
+%
+% Any modification of this file should ensure that the copyright and
+% license information is placed in the derived files.
+%
+% -----------------------------------------------------------------------
+% The source of this file is copyright and belongs to
+%
+% Hangzhou Dianzi University <https://www.hdu.edu.cn>
+%
+% The source can be found at
+%
+% https://www.hdu.edu.cn/_t30/666/list.htm
+%
+% [Inkscape](https://inkscape.org) and [MuPDF](https://www.mupdf.com)
+% were used to process the source for generating this file.
+% -----------------------------------------------------------------------
+%<*internal>
+\iffalse
+%</internal>
+%
+%<*hdulogo>
+%%PDF-1.7
+%%µ¶
+
+1 0 obj
+<</Type/Catalog/Pages 3 0 R/Metadata 6 0 R>>
+endobj
+
+2 0 obj
+<</Producer(GPL Ghostscript 10.04.0)/CreationDate(D:20250303000000+08'00')/ModDate(D:20250303000000+08'00')/Creator(Inkscape 1.4 \(https://inkscape.org\))>>
+endobj
+
+3 0 obj
+<</Type/Pages/Kids[4 0 R]/Count 1>>
+endobj
+
+4 0 obj
+<</Type/Page/MediaBox[0 0 75 75]/Parent 3 0 R/Resources<</ProcSet[/PDF]>>/Contents 5 0 R>>
+endobj
+
+5 0 obj
+<</Length 51344/Filter[/ASCIIHexDecode/FlateDecode]>>
+stream
+789c75bd3bb2dd4acca5e96b14b2db5010f922398c1e8322aa64484697f18fbf
+08ac6f25f7d155c735ae1287e426f3813716febfefc78ff87ee47ffcffe79f6f
+cf3fdbddeff9d0da6aabfe31af7e5fe3fbfff9dfdfd6bc7f9cfdfb78fed7c7f7
+3fdfd679fc58f7fd7dacf663b4f6fdf7b7b5ce1fabc5f771f61f7dde4999ebc7
+1a49791e793e845fdffed7fff3505bddd96ffd359f357eace379568c1ff1509e
+3beffe23f2e9b17e8c714379de45940bc26c5fc7437f5f47fb4ab80e3db4d527
+b4a6b7c9717dc243182bfea2ccf332253f2a29fd86921ffc41795e3fbfb2f195
+6b5c3f8e78aee8e15f1e675d3b7afb71f4af94e79a61c2f39349988da7d407b7
+f9637408a37e67fee8c7fd1765fff2d02dcdb7ccbbc6399bb946d78f33e2735e
+e7f37b79cdd17edccb94fc5b522ebdca0765e939cf1a3ebf904ba8b77fc6fdf9
+d42468353e08bd9992b35c97d44ffffac756a8fda199e8d7fdbc51ed8f8792bf
+763e1fae17ba47cd6ccf99bfb44ecf27b6ff3f4a5cdc94cfebcf1cac76ff4561
+c73e94757fa13cbf1dcf6cf775ff68e15d7daef6bd4feddaaf943e20e4377e10
+e2473fa308efbc1ff7bf0967677ce733eee3c7a1bdf841e9777c2ec34b389976
+efc59c4c0d3bc3dcceff24c46251fe9eff5a94e3f9ede7baa1e9781665dc3f9e
+73d6fbf1bcefc5667bf66b12e68caf84a19d95b73cb35a940ea1adf64198bdd6
+a6b7e7b7c5551eca79fd4dc9257a08d7797f10fae1c1d06fb0e79f199d3dffbe
+cfcd75feb89f69db47ed193fcbd4dbaa458290d3f850e26c7f51f633fa797f25
+d4b42541df7fb35ecff163466eadd7bf08b90a10ce225cdee9b9edfa68cfe7c4
+5f14732db1cd4f0a93f05066bddb5d5b35c71cf28752b7f4625522d407fe83d2
+d891d77370ce5cadd3dc7116e3e9237e886d3fe32b17782c663609b9071ec2c9
+e9792930c759df5a84c1b8b6e44b881f2db7c038dfd3743066071cb5d3fe4540
+f0fc7703e7aebed673d973dda18df9a756f178bee8b86a027358a7ff19e72eac
+71eeb54353f1b36ec8157c08cf17d748b727eff6c67a86ed8ababa2eebc7ccd3
+96a3e4c6fde1abcf8fe630ef6af7439e5c9d5ca8dd672d5b8ef339397e7e3387
+cf53da5d93ad57b98ebcbcce43bdebc8c789f7e4c7e6666ecf6db75e66d69424
+a1e7bbcf62c6edb92fff9fe3e75036a640d7e7ef5d4b9f3aeafc359e92e379d6
+b0f33aa30e777bfe7fe6d7694fe630ae1ae6a7e5ffa6de46ff4acad06eba4ac2
+2721a7458431e22f4a6f9ff79ceb391da15f81e2affc1705de9b94ab08ecc997
+00d33975aa9fcf6334a7be3d59db3acf92eb3517570df320e64c3d0bf07cdb59
+0c27a7322f5be7a5b7d639cae1195a879458797ded00137e17e13a7549ee801c
+6b32a501ac531b38c7c93ff311774e73126ae39e378bc1c67ec6bd56efb9ecd0
+7249a1cbed9233b8aea8239bbb291fb9ae967b3977dbc1823dc27bd566cc6d96
+c3541772f7b6ae717ef35d0aa32ecf4d9c84797eff1ce69ce74a26dfe9c723ee
+facd8630a59d5f2ea839ff18e77b73c3cce314b533df2bea4dfc82fde835977a
+a5ab4ef7a8d9cbf179d630e7aa86bd86c397334e66caf7e7f0d4f714d73aa453
+e8f25414f3b05f3c5dbc44ca8e27b81fa767a8d8688eaf3a60e272308f5c9ff3
+fac27a4ea9243d24fe73579656148776a154a11cced00d43322b98c21c7383c7
+7ee073f27543ee8ef717c68f2f43c44c8e75e6cf3ab24948e19bc3d2c1e278fe
+cde4961d9197329b8f68caed73329b925435ace9bc4b78ebfad49893929f95e3
+d2278f926435acd9f67e3b9b3879a929eb942e5eb397bbf90c31e2ab5e342f8f
+3cab455875e20ebdcfd25e3a4b3fcab5ccbdb86ebdfbb3935a1df087507ae343
+c9a3fc5b945abecdab965ebcbf9af6ba251e524a2f14cc1206c924964e66ee66
+cded0761f881a54e1d61bd6549e37a08328196d886cf0806c02c420aa055f681
+8fe41233c9a158c2b2bcb910e74bd39504cdd24328b6786f956089d5dd129439
+944cd2de2c23f1d658872a09126229e35f33b2284ca56ca5623db6341fee785b
+475a70e35be77f2d69fe4d4af05ab5d18a556aad64dc35a4ebc2822dde9a8c6b
+950af6c18d970e6e52f4fc80f9d6a7e6303f2d87172b75487ad4c1ced151bf27
+65232de95cc71ca7d5f05c3f4b222761e5df2d0ee013f39218d450977708b9b5
+a75eb4e4727ecf44d8582d788c11bd6e4db975b41c965a2083e3955553261004
+e9cf83fb51ea2cd837a1eff7af17b224f707c898af0f8e3a6c0fe5b8f70ca419
+53b2e062934c4409e39f3214a57a58e7cf335353ba0da1f3638a1bf2b8b4b9d4
+17bd42c147d6196a52d772144d0b9afc3175454d9136decfd21ef549e846b3ec
+272f79da31f78abd437e6ed37ccbdb6165ac6e5ca3ac8694b5f93d79fd26e883
+06ab74cb8e16a50e8a18630ec7d205a51b0e593779087a2dfb989cd56e87828f
+c5e6518fae9fa2641fce51f75ae00e6cb1a35ba7f8a024df7bc72516fc38cb4f
+dd2005575be8735c4c3fc7b38657f1eca13b61e2f5c9e91e885e026dc86c0b69
+c33fcb6792ffea71fdd80e9192f8b115a7218ef54199d2e9f231584bcf89c803
+5a9466b34577fd8bd2b7d9921221b4b0104ad869577fa5ac6d20a5769394396d
+9d96e408b1bb1c4b261777dbe6ec33ecd2da6729ce0fa1fe98fcb9872c5c9fa3
+1ca760d0b9a929134107a594a0908d302594434636c72c87acf814af4ccad0b9
+9a3528c63911b9d12d44392625ff6b93cacab4c6332cc1fa3e261661dbd7f441
+4164e16878087538df6132e53d0c6fa13d7e9fa7719befd5d290de111ae4fe71
+14a28f71e9337c404a4894bc0f4a2e638d91a1daf152c36f0977dd508ab76dba
+67fcac401d41588f8eb1cc64cd69ae7c5252ffcbb10e7ef183cd999e215ade43
+9100d596a9f1ad1b8ad9498fcce1b37f7f6eb752318abb365531aa67456e898b
+b4026fa9ca1227f5c122e470c2a88a15ce62b9664b3fe540bbc576f26c9633ef
+fc322cb3626f89a933b7a5f994b02f896177550e11ced31a88ce428eebf5d9b0
+5771aae27993cbcb90bab5e3537b90bd531358d2bdd5812e2ed86b78a1d9e9fb
+1787ecd00fe613b4ff938d61612ed9a3360644a98db43d3f4b4eab6333828517
+e7904c5ae8ea07fb6495795d7e06cdd307c1f72f34d83acb6b48472d953047d2
+7ff7465cf041f4e7355fe57bc1108fdbf2776977e5c14eaeb496ec00593056c0
+7a34cbcb55aa4c124a5c2e1ca4c12659daedc9390e6dda85272679c92a35b16c
+a5605597bc2ca179956a2a2e58979f87fe2c67f3b60562eb0f3627a27c4ab645
+c2cabdf9e6c2337276f1f685b12c86f7399e7a7cbeb32cb17231865d27321193
+ef96adf2979fe9a79c4fd212654bfc291b3ff5cfb6ba1d8827eaf6da16c307e5
+baf7357922be50ea44acd77faf23375f31844a27e62353e2999736fa6bfda49c
+2a021e08b1f4a448d69ea8b5af4ff13c6a741dd6e3f3855a2f051f42b2b6be05
+ef0705bf9dcd837e7e44954af94fa7638e9b9c5e73f896a603d25e4f7ae397e7
+8e0534e9056d3bd73b3a7feeebfb2f029ed85e1ae682eb768c86250f4fd77e6a
+6bc115ba767a1252ce74d91c0b1dbb6b56722c9dbca3e1ae1dadea5abfa4d499
+eae8c41c95d53bab2a1f523ea3b3f2985abd162f87a93b3d23eda69c375d5dbe
+c467fcbc590e4b3f95b996c37a9d6df374a9004949df6097e296c3a961b155c2
+49793daeca534b9a626d95867da030973ad34e7b166c859cdbf38f53ee3ceca5
+47d09c44268802e56f5a70684ee1dbf3644a374fb910846cdddffbc89d8e7e5c
+f07e0728f1b9bc77fc7a04767965f298e686fb53845cd426ebfd7711d2762d42
+a9d1a56be4b0dc48831f59af0e80bdb14a39c8e1c168e876adf476cd8db2e74d
+c85f9433bbe10110e5bab522f236f45b3b109bb55f6236585c5d26e49211a1f5
+136371e8b07364101cab7bba87b6d7c979d82e905e77b679397e30caabd0666c
+9b2d6ab3271fb2eb1f1fe37c95e8a8176c735b6665b94d5b66a5e6b5c9a69ee5
+e369e80084c372887a5a9ad6dcf388c29a945c0987249b82dad894f3c633b187
+d6ad8b0f4dfc5568c66dda9f35cd01d015a55ae7b0d4341ff880617c1070734c
+73006da7cff188afc3ebd5ed733cf95c868bcb19dac96076b135ffdcacc5c1a6
+b4c4d3fce2b4e2a90f3acd12677d4b93cba6344ffe8c493c6150cf77ebfe5254
+e1f235ee1a96a228a7211c48d797cc59c5e18b83dc62391d653d15c5b5dd9fe3
+e60b44d18ecb75355bdacab89c5ed6e66b78d9ea9e6df39c34474b393c310fbe
+9c7c096d66bb35b1e33fb230d7f7b8a56962843e7f4a0a67b3be30c7c49d474d
+5128cef38c83c3bb330882c5683bb01b9afa66761968f1ed40bab60aabb4317c
+da1a5e9a219353949c41fc0022e4091d16ac65068c9dd0d164bb8ced8268cce7
+6830895606548e0fbdb75c556dab040ded241cbaeb9a84d61721c3ae50477f05
+a156a72817845a95bed597ae9fedf63f0df9585bef30bf8107aa77bb53106708
+2e2e6945d80a40c95b6ce9dfb5398a4b1f3b0e596fd49a449708c59dde90efac
+6b9310cd97dc5ce17482e4586df2a64ba915b99f88602db8642b670c84abc6b2
+377efd63173e5b735e15a70802117f6af2530588b523e54d523aa4ee89903ffb
+95f0f72d3995715674bd97f61744d044c8dd7fee19e832868a727fbd8229f133
+4a537ac687fc95b1d3860e94c0d88eaa8380dac7356820dbfcc1f3de0efbaa0f
+9c5bc7e599fdb80497fc212bb01163c9cf2dab3a5fae9e32f1e8c5754a739c72
+fad6f8649c6cf90be1d405e29ab92e797ee242734e420aa4b8aca02705023f22
+5bb0d6f256aecc7f963797fce4c7d1bafe7c9b4b41de58f21f3ccf92c69a043d
+6aca788bade97edea3448d29d52696539c26b18bd8d95e4979784712ea604fe2
+1d5fafc889781f7276369b7382e62d46386c8ccf9ba919074c6bdee2c9d16f94
+864972435234e3bea9df24e4e4731f461a662139ce974a82aceda2ac28caf025
+b9f09beb1ce2fa31f6069322900471ed43333036e327325514c563f6436e2217
+87bc7c81cf4594da60d33cf4d07acd6695e8d061fb7245f2fecf87c81916783b
+7fd7cec8993d9d9d332f319a386d262525194d9cce632a4afed2299fe4d76bd8
+ddef63c420e6a9b3e33d284a32fd50d45b84fac6d3bae1e45ffb925fffd8cbf0
+b41462d106091a7967ee95889bb3724afc276169294fc998a2ec379af75f9724
+9b8bdb1f2a1d3c979fcfc20a8fc391ada424233bcebdc16562c571fa0cec2b24
+3027b6485294bd33f13fc581649a447be2d86760f2fa3b9638a5d07ebd245fff
+e86c800993ede652588b499057a028f92add8b021bee7b4db0189322fd600e99
+f8813815a5b83bf254944717087cff10cebfae4825a69ea2d510276b7e93a9f1
+cea79bf8c093a25d47c4290925a6a612eb6a7cfa963a7b737e4cd8345baf599e
+4510e79f380643332942bee4c7157566eb199c20deaabd27881f45d5fabd9974
+23e7f0d73f76706eeb432689bc98c9cc277eb9729b96cf2229f973e567bd1694
+fce1bb186a7c9fb8eb2a44745c357ea6ebaed8576ad44978a6ab824cda3787fc
+d6771a0551338ba7fe4ea3e298df73fcacde5d16ec541ec03338e24e7b2b09cf
+37dca57bf6fa7b72973b35ff7c01f4d84c47cc57ce1bea582985f179e3a8e75e
+cf6be524e7f0992d25a78dba5cfed24abb7966638698fe558cae7d9f285a95d8
+1169644c295695f971d4b491b2f79592e2262988c4a6f4ccaf94e47c170b92e3
+dc58394efe375ba96d579d909adaa6137d955256bbb8e9d47fa5a4e4bb4a6919
+f590e7742a7949c3d438337729a7fea74ed7faae2ca1677a879caef7d26a4d7c
+2c71d8a09d8fb672d6913d5049279984d10365a3e92145d0196ecad0ca9bf878
+0e68dbc7a571cc1b71fe22345d026f68f5ae49f06375eedb69a5c61ce7b0be9c
+943c8544ff66d76139a4d4e5301dd24102c4f379bd16f74eabe358df3d2c7138
+ea7a0e51cd675eaf335621d0e39940d90337ab36650df8d0fdacf7492670b357
+eafdaef7104ebc5e150a3916773c4a79a680e7c99b38edf2c89df583527e9e13
+b3cebbf66797f1949423565dd1ea48cd3c52394cc1ede3974baa437ed5ff72e7
+496fab48733ea0c9ab51a983e549984d0e96ab385aee5d9daa74f8e4896e3a94
+573298f25617a515a1b655d329ae74cf9c05999439ecb7af9ff5463d67a78651
+f78fa8b3515ce22ae5a773fdb313ae548f8efeb19d7cd0739c72e52ae95be3fc
+f7d9350321269594ac42482655bad9334971165790297177f32cb9a8142013e3
+9366f4f0088b3fc50763878193509a4d58fe8d7b41219b3e09e9e80b05194418
+1a4b391d4a778fb018faf50fd6fef0fbb14ad6a654ca7df6e7db387115c21a7e
+17a54205a5239b925939ff204c71b68f7b6a2f24e522f1ca42a3281921b15c19
+6867e91814f31ba867e52ae4c1f8683eee2ad3642d4df94320ba506a73e9b643
+8e9c3cadb9f793a05fbad96850eefbdf942e19f57117db67ac32aae3b0465184
+e353671af835b75a3514800a72fd444065e2962949c731112177e57d49d814a5
+4672ba0efc5337e7eccb1dabf150f986efb15f9eda897bec0ffca01c9a6e6a30
+be5272ab7fde5593a0b0f0f8f8e43574889282eb0fa1254a45a1d98ca22822b1
+571ff72222f5e3a6ad780c65504d0c9f5afa8fedfc85f2b13deefe41f8f5df43
+90076348fb4d3deed0c98832c0c7bda72264958e77cf900b31e06850b218089e
+f585327b49e38163475ae6f84a81d114e5dc6ff310ba1e931a0beb1072bd5f19
+cfd00aa3055db01f5192837e2534ddc4713765ed3387b27648ba4190e80876d7
+4b699cf7435511d2d7f4d8da911e8f4a83c80cf1b84da88d9586b016771467fc
+17c16b39246094a257bb683418f27f08a134ff22b42f2fdfc470e73b07032e93
+1604bf0427ca12b4db94e256a89450d67779d9db27817f27e357e24d98727d9f
+68949f848bad324af37f09bffeb12d73af1e927b83f3ffe75bbfe5d0189b4774
+b210be52aa922d7dcff501fd2c1e95d9f63aa549a84a2f242894797f9c820f0a
+dc3529f553fb1424e5b83f098af5bd27a7134cfd78ee921fe49f145858164349
+4761b55f025ba6e3a3ffa09c277ace102f4d02aad17f295d766e52e6e7efdc12
+b4738ba14e92c67d980d6ecade7a5d79a11f7bf1883209d28e81e71db0e0ff52
+8e7dac8fd2922abf47d21fc266ffbffeb1259e7dd2431adc84313ffba48985cd
+ee5b3b5addbf29cc46939b2733c0741029585a9b5f7585d832615507a8a74b28
+35d78cadd45b775221e73e2f9f1436e094163a0f9f9aae48da2741c6cacb613b
+86f1c7cec176fed86ff3dafb58ecb32b7755d1e15a3f9c65f716511f9452dba1
+484fef5a9ca4ac767fa1c8d2dc02b31323bd87d45451ca3cfd4a997fdf95939e
+45567c43288cfbb294a4a477f6e5184949c3a3d20bb41051b19397f0eb593df9
+0f167aedb32f86dcbce9526e3ad4147de6c1d512ffebbe679335c989ef0b43e2
+79185e2785526b6ad375f55df58b7bfc08870a4168d20e39a9bfdef330f20cb7
+f2694e277acfeda1f5296de3585f29279ce7bd0b4703794a952baddd7228436b
+2b2b991c54a6d2d87b8314cd7b9bd49560d3b45bd8cd513cee5f848f7bd22dd2
+2dcf321734858472d6c3942b093e5851ce9f1ba38b2ba208f761c2a30dddefd2
+919f98e6abbc7f95a29876f5818fdc398b5f08c759e3e667e4d18c03576f26a1
+d5067d39a0b8d0bd15fc24d48eada049f325fa9c4dd1e1a8c9d3abc90f7d1383
+c96c4425577a799a2a132b34505cb4dd2a525bd63d1ae58d6b3f638f11f94e6f
+ae08c4a16ba42baded924a4a858f3199a1acdad992251f3741f9f58ffdff1c8a
+a0c22de414faf310709dc34a7f17659567436223c7e51ea1a83a285fcbb13261
+92920ecee654be24c8178233322efd2909150251c15b0e6b43900c564ec1a147
+e2252c4520b687502ed47078a839d92d2347b7ae2f07ed25374ac3bfa24aba68
+4d71f7a0aa2950b8725cdbb0291e1f57c513d3f75d853261af7fdc6cdca44cfc
+e54a2f09bbfd03b7e91598c6f8aa2fe52ce4584e8320b52629edf2536b75b60d
+1ecab6b1955ec356c35a2225ebe470d603f770b00eda025f2917d7e4925d7554
+8234bda0802a765660517242c9c6ce71c68002bb9ffca1c0dff0dc702a2e76dc
+84e75859f29943c9fd37c2edb99ec26cdbb2712b47e246d30b36ff8d2b4577e4
+f146cce6304f3212356e250ed9c6ceeb15aac98057b2aeca29d0c1aee3d40ef4
+f0cb1ed3a49c65f796e1d1541c77e30d687c4a15f8d41b25a52cf44b1cb6e1ae
+bb2f31d81ca789714912e70d9adf1bef4e234e26a6f7ec0919f32e936b4d5ba6
+4e43719e56115c1f17083a3f52e13faed0866d8e6bb7f1835bea61d1ecdc4942
+c55db60333291548b28f3309f58c93e40502ff715cc46192202f83caa6486bcf
+61a6ba1d1533ce51af1ccf24d4a13948ec3ce488ce7125451cc53973a8d4e776
+c09c1cee3ec47a0e0a78546998c34a00aab1feac78443b70a83a718128f2a158
+7023669ee3b558da6282870cea464a738e2b19ecd81e5c364e46be0fb9691b29
+fb39ae3a60edab702d4723813ff4d6de88a197ce615a22e50bbef5f1dadbf6d0
+c44d34f550de52dc8a0b8613b1bf10ca051d379c639f47293c9fe30a03effa83
+a4743c49be4222fb1d9780debfd971c133539782442cbd0abe42967cf21785a1
+31d243a5e211f22305b5e4410846d747f9131553a3f23a87924d7a19aa2f7f96
+bcabb70c38be0ab202ff4850ac14729feaf9c568a9a0092737c0a383eae21cd7
+0e8e8b30a914a6a05e3d508983e226075af306cd8782b341717110c6a9319246
+654f7129ecf5c8a6faabe26b441d2f82e7788f75750956714dd86dcab93c46f0
+d21c8abdb743d66e906ef9bb28c9e049d814215f74b882f2e30a9fa9143f3956
+e240f3761c3885f72119b88d7d4e86e126ea6488e0a4d2ff682aa9bd2c694b01
+e0c7a3bea8f22fca9b98fb1b032b0915e60decab22f88a5ac1cf2b747a1c5cf5
+c75b4d78288d65ba0d7192af5a1c2328248d41f97b782ac3d951e1fcc5a0842d
+3cb9f9141ea2b90c9c422d9c3e140550d1825ca100c1a2c5da3f4312e7e72599
+e319245055b0bd66cd2b9494dc16f7fed98363757b953f2ee155319e2c601f8a
+7c787139e92cc8b80b573d866a2172ccef10fe0c574e4604c9434e6e2b01954c
+cda5ac997090fa756a16ac0f795e99baa15c8ea4289fc2483041de9792b26aa4
+a42e8115d40db728da160d0567b14793b09414842ad6780f4a3f44a943fbe59a
+3aeece110e2a5ff35c2aaf22288de5a426018be622c1acaeb874baf5b6bffeb1
+f39fe360a73a42edcfb7cc914a55bf298af8fb5b69c5477bd3fe2e3c25ad0fcd
+6ea5513de65a12a44b3848f6e61b5e971c2e6f7ae14500e08372fba7df85545a
+5c6a1ecafe09d99d6d1aed06b6db26199a81eddaa67372ace9364ab24451e982
+03baa9d6a7da343b6908499835ee8da19eead4b8a22cdda1873615234cf2cf82
+ef6a1b16aa7661e68abe464e27d7d10018a164cb24280d2b03caa59534277c15
+258aa0d28c0000eba53837a1f5032827477592cf0a1aab1480f9dd6aa408f9d3
+07a959b757e3b0fe7797b721a4f15c10aa64fb7066c6afff6ea867939dde314a
+d3fcf3ed2475bfbea40e54dc3b65f94c40b4aa1f3068c927a5f6e479c8c46e27
+81a88211a8320669af824dd338398112b47a8dcb7c3b49ae4882d6e2c427d94e
+9fc4d347e1b6cf81acf91b7900cb6d4250792467503d72c191426fd3ce4b1698
+7e2b7f73956ef9e810fb151def6cc045d43853dfcf6dd006a5c500427c8e95ac
+25e498d375a5a5a254a18594c65091e159d39ea3b4c97328a36813742a6a3c95
+a72d05e71dab06b228f74eecfe1866cec21e71e5a5429cd23e891b65f154e507
+466d962c2950d679125455709113f54981ed2bcffa735c933d9d891a875901f5
+eb4e2aabd288734ba421c2f890508d6a7e84d8a9da8963cbb95bc512caecb4e4
+2bca7dff451183feb8e93afe7a6e29897e916b67bf2d4d88ac9cb2775ad539a0
+eb2ac7bec97451d264568da8243c9460e4a28200298494fb20c5a9b65aa9d01f
+04a6ce6807957540c03761796e9c98edc2bcb9177cfc72ea6bc1cca53c80a200
+bf707b2a9189689cc7cf3326c7d3573c1b35fd7d1fe3681f4ff8f9edfafcd5f5
+fd243edef0a09c38d472e7a755f5399617e3c47f96945c994ca4168fa9d371fa
+1d4fb9779e471067ac6aa0f6fe02c567a75f48851ff593777a1fda527acb49be
+515b626b271ee3a6ec84bc033f28d52b27d1ad46eee245b82ef7a6001eee3271
+545923297bca11de96332e2fbc936da79a7f52c4f92e1cb2adf49c0b27683b9d
+1c5c35c7c558029c36a7f224456aa9030bed24267ae371ae9b4ad7b3f3984da8
+7d52de939d92e81cac36d9879f84f2e57ede63c2906cb10cca2cd45ac96945ee
+bc7ccd07a5b299daf4479e9772443eae59f2b33745699ef567fa15cffe4ba8a9
+6e8525a2aaf9cfb7495c2b3dc1b7120e376527ab9278d5a52e17a1428bd4286b
+01d20ddd7b235393cd9b28788d5c55bd4d51949ca9007011c86f7d292486135d
+4f8a92c9524065456d0f74324774bb11343f09a4d67efe5b4bdcbb73a62b01bc
+9e78a3bf3b95a528352537bbf62ba5e6b1dfec83d33360e3e9f6246d6444bbef
+9222c6fc49997fdf24b1727b395ef8443227f6eca7d82fe808aa7683f8820119
+a07009eae3d15c498d566f4253362ebe8e42a1421e00e274bc6245e5d1d8d7dc
+33e30bc5605b94eda2283dfb4fa39e6114e3288892d3f885b277ac0ec2afffee
+e2cca51dcc13f6f6b3b509a16630940df6412175b78b297e508602f47d1a5e89
+007d9faed5797ef8740e33f93319b2e6b0903448e4bb08152bfa2741ac5e2583
+cf4fecd290c66f5ed6e63f294a54f691db9877139ef7dee4648e6e03d0cce993
+50ecab2fd2e83f09aa7fba110b1df8a34f0aa7ca12f6935021d124f85096a73b
+5747cc2bb961edf461fdf65dc1b14dc293c87cc68b6b516ff4e4be26a7ea24eb
+b89ffcf83fee4a3bd2e73cd3a6f341f8b1fb6ddff02745c7461076bd28dd97e4
+567a09c4fdfa6da0d8f3540c791c36ddce5b3c2b818171771c3add235e4d504c
+6284f3ce833483af840ca287f5c90f8272ee8364c6e1bcf34f02b6d821c63976
+f67a0822653457c92721d9ef4b9998518fcab30b42146ffb42a9fcc4a450bc24
+0956975057f252386c88fad1760503cc372965497d12282460ce5fca49dcdeb9
+45bf7307d4361ec67f99538c651c7d136a29c7b18b1aa694957f53a80ea87f93
+1d4d9a5ebf5df245b240df28685f28dc52e7e2de477f2831eda5587fed37d1e0
+fbf44d2f619484bba9bffcdcdba573fcfacf7617d0c4f7d94b66fc112e64a661
+a9f009a4c949615402552a0bc5b806a77c05b397cd94b8989917d28579789240
+d7cb41b9e1ff72dc85b2316b5065f002d89bf2cd08c1a352b5043d6068b9e779
+608a68ff673eb4aa6f97b0072609e6054ed7afefce814fa088ca7f68c3985a4b
+89e7b3f10b527727c0dd8bd2e81c87603f5649e34ca02e14b125c77c5e50887c
+52662bdf7a8084930a761284a426d32cd39b6f61cfa8ca41bbfea730d4cf8700
+8281b4e9cc6eaec03aa93bb16bf2499804f4c4c03459355151f525c138f1c002
+cd33551892acb54ab29f1f9a087bca9de78ba232c8c40f41ff0c856c2616ad61
+069e57aa027f79ec2626728e93054c99d314f24e3966f3721903330c39c08f53
+6f4ea555fe1660615d1ea07c99829c60f57039e738f3dfc1aacceb4b15a7eaa5
+102cf8f6111b3e63929a92971f4a6902a0a38ca1798066a0aa897934c03296fe
+2ab3c2d8074358a6f9d7e293b79c75c23e48e95629e44207c995caa1b03ca4f7
+0de24f3f55499dcced2e41b59af3f29424d3ca3b9c3f173595add8d004b4b181
+c65ea9c9cf109902aefa733909f44341802cca2ecc77209142d33cee8d93119a
+e901fa7d8e5bafe1335131f42ecdb000a892c34074a11a085f5ebc6a086aff67
+554026e70773cea5bd83704496325692ddc6363cc4526a622a1354bcbee62231
+e65046e7816f68a1684ec3661e7abd79e854292a398f8d6a40b866a2dfaec37b
+1ebec30dc14e00ac33b769e17be1509cf8c05c9c3935677983b814a778299497
+434d2d6fab1345bf83fdf0102bcb71e282707226e86c3fabbebece18d859cd4f
+9342b070ceced8605dea0c300da3a4b273174c2c2cb089ff2caff7a195536951
+d434c9d9c86af07a81cb1ca497777b2a3dca383793c491253931c31bb9f33ae0
+6f74321cf75846e324be289e538975612c15f1ea7cbf824e06ee6082cc244c40
+bdb1d02e871f603034921f63c3f4ce97e92959a97f9923e002eb069d5d00ca66
+80a7663e057aa7d7e0c58ed4e44f72671666896baa0a246f48ec18154fd1c114
+3c17b8141675c2a928465015672588fa25b905564f052272b44ef15d3dde4025
+e413a6a45571801cf8134ca285099a921af42c821c93c041ee0adda1ff7b5b75
+038b5384363babc67b4f0ab457d6168e832bf3184deabd739c5f36981a221414
+c6e9fa3afed4a17ede9f6bd148181ef2fbea863a52e47e2eb24dea55921b6a56
+728896218b3c0979043b49eb6050e45ce575558a8798ebe82d1b48a9b49c5342
+a90e72295f9e7a294c0089f54a9698dd22525f4f944922b1447edf22760cad4c
+d5fd8cf2814efda6e036f32db70e352a01b42d01be04fb40d20b809b2e4a8939
+5a2d4c395d726397f640f050fa45be4d33ce2bf9a4300d806a67db6711e45b36
+ea5a2ef423e5cf55231d5e8bbe83e82edcde7317e12d210d946e897a87fe26e0
+2160323c55eb20e55aa753ca57b18a5ec2154cb4fcfb073e55dd1d86cb2939d1
+e786f3493137a908318ee3a4ab84205f53549902eccb7b038c492fa853eef74f
+4cbda175f1fb0d040b3c51ca5acd0720f27bb1919443c58fb973a58c03a63a09
+f8e713eb5c8f9ad7fcbddadac3519ca5860b49d0ee62f38ddaa439ac43ad3c07
+71da5355aac559a9e670d5aac15973bcdac6cacce7196d56f91e935638c6ff99
+c3d20220cb29e020b7819824bd0b0e61921bae15ebad1ea7151da4e11b851851
+318611c5a79987ec03559b4f95bf54d790b3f8c6a9d60dfb79dad47b6c2637a7
+18c7c6279a6bf38e54db54939e23a14cf3b57df78650c8640a9a6b1f0624a922
+f7e6a0024cf4cfcb1a50e2b6df6eb982c5c94289d777dde284b73012ebf00ff4
+2605582626c0cf6a81504c9b86206909d6050268c487557fa51d809f8f167921
+693bb066af158a471ae3a2efde1bd2e9f20533ffd78add288d7229b4fbf17bc7
+c7eaa5deb674b34e452a9a55d23024eca48996e18b276a11799a1cb454cd92bf
+8ccd1ea36946a548048ae0d0bc2f7cac39863ba2214cce4d8ecbb81a48490539
+bd1fa577571d3f27f1e3822165b0d8ef70f6e992a1952fac74682a469489b414
+c8aced7d5aabbf353fa576c49ea0433afeedf56e7e1b494ad482f8227bf7d7f4
+7dde62e04910779717dadc98d9ecbbd74260fe4bd958b2da72586b5d7b7ef6bd
+f9bc7cc2515c24288259b1481a74fdf6cf0ded639d65abed66be1404cf6ed8f9
+0325ac039e28afdbecb60abe6e4eedd856627c921cf5a708c58280686ce68052
+05d095c7d68ab0970727b6639d03f09bba46eea4392b50f5624a4ea06016e5e9
+73a2166275ceb97ba820bee664cd3bab3c6970a1cf9f73cb502b18f32bcadf9c
+5a452b1c93906a691c39af82b15a2a2f9c649d2d1dd539379c7739806617fa9a
+2cc859b07a35eafa5874175d6be0650ee38d2302d7c7d8e8b7e2d275d66e6126
+9ad9972a338e7d36d0bcca793a49275bca219a800a956f40ac1fcd45c0669b97
+59e1b568fcba137e1a8ba9be884c823f1be4660abc76d2b365da5175524624bf
+d6cf6f931e2d13c0b9494ed824ef2bc7796660e4baa138cec9ced963a6ebf28d
+8dce0449c90f25812587f57ff23626689d89d052b6c234533fd958e4d0cf13e9
+a38cf9fc7601eb4f72e627c57d9fe3bcf0bd7e3f3fcfe7140ed0fb733208136d
+28e732c7756ca75aa4ec995129c3a40e7eaa45cd3c51202601110302198ba596
+aa46b9854efb4d26dd7ca625df85397aa25929ffb666f3d6dbe02d3de12ee4d7
+e6b81c83b49098956932c9ae9dcb1fa72d29bcc43db23899b4f6996bbe0f5e52
+71aef261cd659fcc54dfa109f6560e6bd2974a91a61a374d29189a9762240adb
+18f669bacc5bfca87e6cefb3d485c0fa3404d35c9e4eef731b8c35c1b9f1967e
+f894ae2db0ddbf0f8a4e0fae4981a7fda9717ee2756d295b9ecdeb4287453e5c
+de1820ffcf1b9fed7cb40d324093c7e461be69a4326932978432d527eb7ee35c
+987ed65e68a5f24c20c90d1e34a9ed9d93937cef195b9c931b2551f1b0e982d6
+e53798689793bccb09e6c45455d5bcd7e619b9490816e4f57e05fd01e8d979b3
+8bfc42d80213a0d8a5c0e90410f3f04a4be524ae9497cb7c3d74da0a4278a926
+cddc6b29cb59d796a34d0ed52563931e49132d3505b8bcb6f561e509443401a8
+aca286091eb2e5bfae2f694986d434da3179bf9372e5756063ef8fc1bae2b4d5
+388a99d6bfe314cb8dfd36e243afbe5143e4e641725ef1c1a9ef2bdd8794bcad
+91d0086c1d66a030f924d45ebb801a3dc6e670b3597bcda3a92a3b921f2741de
+454ec6a479da71e1bb9dd4af2db9bda73b8c012f3069ed161b52e7121c3cc0ec
+f3960dbd0c85c09158dbdb355dd5a714be3a2343ca676d1dfa9394325a7ae474
+6300aaa8725ce57ce51ecb51ee2c72613f2f87576e27b402ab13a47f7bb17f16
+dc5fe99b92ddf3b6fe8ea74f3d49f317b43f2b0467aff7245e9baf930b8c0f3d
+6cf64ffb99fdb928204429264529a9ec72d26fb43992bfeb01f53a82d0baa50b
+5231c6eb9c5ac2e264f4f21308e6bcf104eddd7cd33cccc7a58a97b59d8646f9
+3a873b70ccdbc7abedefc5cb2dfe80c273ec28ca217f97fb571c92a86e5f4199
+4ef115146764aaa6157c9579c3043081ee6d448155386f8c96431a28a1094efd
+bd0352b4439864f32f6a9b92ad4b8fe7605ebb2d987ff292c34e019d79f9d423
+b2de367787f2ecf2209c5a1f1d14f903e76dc5c6ad0ff2cd9365d20dd56093f9
+465332a3747e6a54f384a1e6df0a1ecdcb2bc791bb7c479d74e934658adc0187
+429b91bcdad2f53e7c644e84c27d94f6524e064a6be6e909b21b62d283ed554e
+f4a6af4e219171e14c9ecbaadeda5a816648dea1c9e75df64b4db0b9e785237c
+9a77e1d012e83e3a8ac4afd684ad41d79a490ae5b48bfeb2eb2ead824b6f746c
+f3ca4ad0306724d92d55052b63b21960fc3477faaa6948f988f7d409e37dba93
+048c76ca785ef4de9bb2d4eb54d727ed6890b6e5148ecca2706bc753c3ce2447
+3d934bd426211294e35a4e45dd3ef876d88a77b4425e0f00717780479d92747d
+796d40b409a98a76313884fcf2bde0c0110a9aaafcd94e087708dcc1e9992dfd
+18cdc33c8fcdb7abfff7e3e1761613f3402eb1e4c765a7042bee1e888a264f95
+696d970699685faf9fdb05725808faf265267f8b07235df7d3f15fabc6681ef8
+5f70154cb4850ac7e5463a2c7016581bd260c28d19e6e1601f5bf3c025a21842
+0e4b0508daeccdc3b142ec3e378cdc6385ac771ec13c1071ec3694a5f77a4f8f
+99e49e3fe9f10e7d02873a257b1660a85a2d22cb5a4ec0cac0092c58c9f27794
+ac102c646dff068e8870235773ecd4b117aa28bdb9a86b9a1c82455513b090ab
+39409dbbb774be1def2442a04a97094ef4a28f7b9d47bdcc503ec52458aa9763
+b53faee673e571259768a93a7f524be59856c2db711495d03aa9425ecd713689
+3607e72a6877133aadb09f8e36153053f94e1568ba787a05f1080d3707e5f05e
+2bf9a4121400f303be4b4cd1a92878a11d53cc38aa201201fb739389bae0aee1
+52aa4a258e8c97ef10f8c27192b3a76082dc79f4df194e41d961536a2eff9b4a
+422bb72d2ed1a492224ee3fe7604ce51482b5c584c875cdca94e9d4b81ba496d
+f5daeef73c45a538829a390ffd3278b7f3f0c46e93ea20eda7cbcc3f9858042c
+2dc3baa5d861af1d11c98333002ae5b0a6d8ad9a395fa36b33e7b03ebc6b662a
+9b245fa8b15403dbcf18fae31e3b9a5aa043eed0d5e84f3bee77e726c64e412a
+d629cdc70c77af6c98c183fae324e4920e49d0d58039a2754d734dcdb8b07d9c
+5e72398b40526ed0e079092e326fa07330f5ba43f0a9353e0b24cb1f60875652
+9a5e3937cfc0fd93e33cb20363a9d9ef312e7f71591539d41b956d9ac35ad0e6
+6661432d7b9350193197f328e40f19c2d9588d6661036b4be321d48ef7667a18
+3667670c141afa2c0cda7f2a383edc6db4b9ebe7b8d0b19b2c82218d12d7e3b8
+9d7be450f6903eb800721db46beb060fe31cedf8e8b83727c94919d8617d0813
+cc8e50577c0d5b764ae61bb6fb9465b5f756a7306708a8c27c6a50ce49c47ba0
+8d774a4ef2eb79d93c9d7b2f7603a81122e934af1c978fb320cdae92cc95d495
+ebaac40ba05535f13aea1c2d5a93e7b8529dc0e9c8a9536a6052e410570eece5
+c9236df6b2879d54bf41306b09be75c8eff83e3fdcf4a98cb6215c13bfe0b80e
+f78caa6dc1c43572c1865d028a8524a8677178d2aa2ef315db48433e5c470386
+3b2c29b1729f99eebcbafdb2b215eb8c293521176ca8e70099393ab4e3daa939
+39513b3567d6d4579e4677106b4829af4042ad14ba97227de3a27b5d3f89ec0c
+3004cc87871b94d38068603eadee5654cf4edba3411bc0eef4395ef6fed8f3c5
+721012395620440ee31cdf1a963f67dc5b3c2927ed96e451329f666839f964b8
+03a3d22e865b3652b43ed474a092752ebdb818c060936f8ca54ec21e9e2b9aa2
+ea8654c4c8caac6cc08aec4f2444596a84e92550ca3944c071dc24690dfdd000
+0e630da7228ddbd2fb152915daaf08444dded976974bb19c5b91fada2bb7f34a
+6ef184838e948132320ce6342de30e776232872b4577ba3964522a365e7c625c
+ce5bb50cf50f4caeadb4da09a022aebb6934d070d64a75181bca89cef162e7a8
+69e9827db2b1e7f4cebc773e57653fd2e4c838a24edef239b92fbf4d93b2a0e4
+31db37889efdf4a9bcc2faf9fbfb1ee19552414db5304303ef34354369244f95
+665193d8f702f155da4e4dd532b89f8e251e7e4c9a4556e65429f5229c404de7
+cecf399c9f6cb95906c1504a4e2adc6e19892b856ebd8bb8e51ee3113bdc6d0b
+871d7f9eaf39e3965ac41552cb235b026c553a647f9802d39636a6004f4b7db3
+84aabb78ed6ce5897114cee7c1814ea9b2bb68a3c29eda29b6c5f548a50c96e9
+ad6c29344d1bdf24a0ec57b23983463b77142ea4e64ccc17a79713200d12509a
+636a3805aa7fdac0369f3a777ac1831f08bc6e138899cca0b9a52ad75e55f08d
+9ef76e35bbade70c99b051062b7148ee0a61f5639729b1cc762bf1ef096c508e
+b1068e59dcab8c72b944a8f1c9a1928c2ca62699b5c94ed392f11677eee38103
+71580e4e220249619bf103c12495feea7c88ed11195e46d969039f05eeea35e6
+b64c741a69cd5d59fbf363e86e7d4613332e7a254aadd7f4a213f8ae2218dbcc
+6e3001aa0ecca05865e0e0e82327cbb00ea1c35794e92c5a5f4ce54ebae9b42c
+cf725490db86814a1b2bf72ba0016f5e8e3851a57701d1d3ae5e89467cdea285
+636619963059f8b0bab4a015e4b135a7e561a9bad0c389747c9f139df08ad054
+25afc78db2c89fed8a177e8ec7e5fbf37a3939cc959414ebb4c09d17653b7b38
+0991e9c6205e609ae4b87c820b15d0596270d4a1dde31c44d28c96bb0156569d
+262fc89aba614b15f641e69bbfebf162220ae839ebaa3a1d3a076ada769832bf
+69913931ae73a19dec2a39eb2894b35ded6a65ea26295094f30ca75d3bb1660d
+aa8388c90cb98aa5153be14f3ba156669c4afa399cd0786944c77bfcc5fdd021
+2af7c3ed43a84a1df6dc20df24f7e4ad714ad9e6e6a23091f666814bff2b8a78
+003b1c85ebd610fd4cf6dace5b157875e5ad5e728de800724086632534f0a097
+e66cf4422513ae61f22c6f47abf5dae713f0de468e46c7c945469c4f0f057bf9
+b46a3b691f1a3fbd73c4a7107c16505a6eea514ec2789d523b513f994d392111
+6a721aec9cb5860fd399441333d5d51d7b2e25ba722817a7653e4e8a156fca6f
+09c183708116e6d8de199284d7e114e562be20ea55d31205bdd806f2a0ca91ba
+3fce31552cf075d8969d58fc4b502f53fe801d73c5f3e7a43139d1ee8f38daa4
+c466e720e2c17883de6092ed6a12e7f2fb01e1385b972f64e29bcd77503d02fa
+24f52e9372cfca6aecb7c50f212f158568fb7a8afe8a59542063385999ce7f7f
+92f29d9e7e9f7f4c778692cd733faa2bedc093454a7cddd9a547ec3f751f0503
+e32f6de31c9674ee2affe97449ee584eca3b2b9b332d25e5c32f610c0d358826
+432b2f76c34f1eedd20fd908f264ae61a889318e9d905d46c3b0ca885b6bb83a
+cfa9884991722e9b765877973e3106da9978d1cfc2b22f4543922f87b07e3fdf
+82427e35971a201b06c5085c303056abfaafaeefce7fc6afb653d22f7d30fd5a
+69ab3aba35606d8001df9992ee43a969ae457caef7d99a72f70d8e3a8dc846f3
+af592d19804059720f67ef6338594dd8bda2abac37bebb67f8b0a270e21db174
+38894d0d179ed42ec4cd7462a6c1254fa27939aeb73feb25068d8e96dadbbd3f
+75d9c94a89f152c6d83013960f64a85a695ddb21a81e48d9afbd9e8ea27df965
+70895ddb67e7da0492b3061d87d6e5b5d3715e58ca7907d604790c39ae17bce5
+2893b76ddd8e9425a17c5598eab91b32968233785809daa584b57d9eb170d55d
+4773cba21f7cd0bdd7ca198d789b07e9c037058828393b7e3f9cf178cb074a22
+e6ba1b67457ac88d4e98e3f25a124e1fe4725fdacaaedab9f6eb00beb12e7f9e
+36f355fc7fe0135af8eff4b1a59393c9376843bdf03d0f3ac9d70a2f6ea8d898
+f26a862b982eef4dededebe32c9686415ee210535ab8e886cb80ce7bbf90f71b
+3c96f491534edf7dbdb9fa666ea77cf41d1de354706a505aba0a360c3eab0d7f
+bc0c5c383f66e0cb050449a8c5f749f5745329fd322663370daba174441e2852
+4b3011392c29763abc33c83507ac680069b9dc8b6260119eaeb118ceae3f4be3
+1c03664413a21cd7721e784e9d2b7fc93d3dd429791149c8be1c5de7f3e20328
+7213b42aad3c165983432da3d7cee51874a55ff88e86d38dc9fc1b4a3458f7f6
+c84d78d78d135dfdc7f3b8d60fd03861ddc48a075db5f33cd57aca785b72ec0d
+5c063594189d78a100a318d3dc81259be61e7b91e570f2795762f67b39c5d53b
+5d6720079252ec5e9840eb56b2d498c81e79b3f27a7c3f0a560d7756e78183a6
+0f9f5fc08626af69285572ddf824f79fedb4143447ce60b1585c5e8b4ca631a5
+0cec8ca04191d9a25cb9c6b560fa35cefbed1afe4166ba9c85fbf385473970e9
+ac6b9f004ca675e10e5715cf02cf7cc8825aa74d9dbd40677d4f0e935f9d78cb
+e5c75c4e9fcef194e4ab180d05768b7cecfc314e9344fb049341810067d59f92
+146e5a7f3a356f2c5956a724f85844244fa9550b3de824112e096225722be7b8
+440179e9037f5d894ea90e0b9bf83aeaafb7ca78b4706e3b0f0afbcf6af994af
+e3a95b44982e440566fb0206fe673584aabd0128e100a0211f59a76b29347e1d
+7531ace9a411c932ac8432c6723ce293f32c968e60e392a422973e271756f8ee
+b33c574b7a064ee545f6e95eb9b5e53445174929d120e75f0e4b099a58206b6f
+05456d0431918c8822b3fc35f9df3ffcee6433a7415d626a1049e090c8b25e63
+8790862d595436d7bca14253d3e4a0bfd872013e1c629b547b28cf63c865e6c0
+b9c484a228041668f66a059e9aac425158281955fd2a4fbad56715bb6e158278
+949406ca5ba65498daa684cbac3de36d92c8ad00996532e782ea9b811ba86d95
+b0930e835184c244b3cbad31a8785a97979f8e4ae1d13fc2f0ebd5209a537007
+059b98c443b3f039fc34c964a791322471f5a7c6aa4e973c1ace209a525b71c3
+ce1d593aacd3a306d1ce63472b0ebbb02b7062cfaaea72866c52d72f8ec39ea6
+41a9d3002a680930b613c69a92f99d8c524ec8cf6f60229535551049f61b4a45
+57c6f99ab6ee0edc82b2a58e0dcd5227def3b05c543b480075b9e350626c1ed3
+92af82eb36584c5eafb703c52a8717fa541dcbc3fad93e0944234ee987ce3b3b
+e5051c87f533832d8e746983433a9c4302eee800de6981c4acb951e044efd389
+112e496337afca3febe47799058b7cfe4ebc73952fb33b3b7b110de9b7353ab9
+19fbe5cfd3d9e8647b538ff2dc70793eb4953a08d896505db81debb48fac4bef
+4fb69a2064b7fe7926b29176fd96468586d48d10d45130aa8ab490942c6cc89f
+a9b93b24482bb7e3905e23c36f3824753a4f7c38a79074d8116cd2b33e711052
+b96c88a8787329636400bb91c37c3a801a299a24789d8e29b3c1cd0317092b9f
+63f188605b90273000c05fca4c4838aa212b462f83ef8d5cfd4162dbba6c5123
+e7b6568b137001533ae81fb6edd2269bf0a22a6138c5ec520ac01ea2350392e0
+b7fdfc01363298e3b66b062d653fed6ad830ca853a04ac932f30a2d1e998d808
+7683625f433d987ccac0c6582070e6e5f85e316dc8dc5caa43710bc8b5bc79bc
+5e841e862192f0e838be1656649cefaa8666b5792410d5208f060d395470172e
+3296d9efd2c5e2399fcc5bfc1cc096db3dbe9320b3591b4228c28b64fe1cd6e1
+50d67cbe9f768058eb20a9771b05041c6fd7a20e927f6f985cc8b3759282e6d9
+c9315c3464409fee5747966f8eb53c7ab1f370ea16b9b2ef0d723b9c1bc04eec
+f8e30689c5f789a5a2d470d582a74c3de10279fd0d1c7668c5045d4b99c22025
+ed3cb6e1d9a46e9eea643568f2702a2b6f90db79ee0aa60150c8a2ae2177fc79
+6e3b2a8795eb717b4735b2b994edfffe7d702094915096a1b410759859b7cf18
+75e7b794188ef42e084b42aafab7fc4703d0f425fe3e48705bf796f0ced3e479
+c10e75c749a765de8e29e714173f1558dc502a741abaa51086bd4a8d1d1e24ca
+a8997ced21d98998595f7774edf2be614574ef1f51f0cd9ea0ad5e8ad1e6c3de
+f1b078ebcea9a9d9eb9d2801f19fee28dda063495730d8e7b68faf31526348ae
+e92e325d912302637dbcbecfe7b3bb6bf727e7bc08d70632f9181676a987f656
+f561b654592b5d71a352e913fc146085c591e8a8d349c823d18df202344957ca
+d55a4e85ed9dfc48e1c2757b23d5a0b737420a0a403e978321665cb84e132407
+403b0aac6156f20e71615a37bf17c894e9ca3ccca11ce5f593e50e2a3305b0da
+1c254ce17e3da45c27dd2d09697175c0a016759e5d30356b57b876c28e54f075
+10e1b672442a6fca04b1f1ee72ed5516404e7829f61e2acfed34e245a7e2dcc8
+171da408e1857622b436bebbf214ca55577b01a179ea6bc76b7e1eba1c6395a2
+ed4e56d7a2a7987fec720de9be817aa07cbb4067a8bd8f5973b94a611f0e65d8
+757b7ed11a765bc88b80e3272185e2e7b8cd2f43f9767bb71a244a57b8c6deee
+0e36c3759266b9579c22dc4ec852fdfaba3df56631ee564a8addde0e54a87507
+fc6f970177999349a8ed4f9c412daf6bb54b09db35b39d40eda2b6acd67bfbae
+bbe245f6a3ffac6e9be5bbd3741845838abb6e93f9a6f22e7bab2231041ddc70
+b397de3ca9d7b96dc47699f2c5305bfddd6ef3a9a1a48bd14b3ad8338b1ae53e
+914f28ee82194fb795d86fb7eb905632392e8d54fc348703bf7625732441be95
+624a9dee206cdf0e52b85d477a9f8eeb2a3969f67b2dfdad5c015dc0958c9eab
+97f2114e4995be7839da472446efa500107b5f0d83971a3a18627889eaa6c465
+f471b9fc1b4b166a5fce6dd3642e49dee5c4fabe1c81d30ecbb72d6167c63895
+56b91cbceca4dd5512597eddda095fb515a6f1ac1cf6e9f61b4efd665792a1cd
+f58e618e3aa9bda3d401a9bf7d38414233b2f7fe70894b27390657caa7a88df5
+fd6fc95be2b8e19424c1eacfb76ce6a1ac0dba37092f8284a56c9830d1698bbf
+b81788f5da76bd591c8b0e0b952f61576f53f743beb29d0ed36af9daa9d40bb2
+891a9010fbe9142d3a59eccbd837283f4a8d664e02372493b5d3481fc6dc68a7
+f3bfc4311bb66265705d1a7fcccf7383815680ec79666cc6cee9cab62f139f26
+af309541ba43cd8d8cbefd0d6462a1aeb4d96d186863367bef075d308cb2a230
+439bb3bc2ae2aecd1c8134c106fcdaa25cb24dfb84ece14c8ad263e9de021221
+19accdc1809d839a2d3dcaaa26eb28bb3390b899fd10c8845acb469c9ba0e441
+cc03956321b32ddd8019b3bc840b3fa3004f1af8bb8ba2feffa90be4cd99d59e
+42fa43c9e11cea10fb483457fe2ff9f6b365486d90458f1e72585d16bb7f9d38
+7a5bcedba455d31adb31c57c7c508eb32e28a7ac7e275f5f99a3063769cb4b42
+cf9485b2a98629fedce98aa266ac037aabb8c9cc520ca43ef0d072b061168782
+304bc3cde52b725c5ac8c71d5e52ffc4e9c4e25ca91c960a341d2e6ec035c852
+de73aab4e4b670f5b987e302ba4c2d1c89f82f09a76cd361b7624985b6b6533b
+a5404311338226dd35d6742cb41a9a5c3b87bac93980eade8888ae6924884fca
+acf643efb83e1dd49b351d2b4b4aa5cdd536af1632e4e045f18be93c0f3896d7
+4f0ecce4505abd776c98c3cd803aebd76f5d705faffdd0ce172791337e82aca8
+0b1bb18b9c007330cf801a829aa0467a66789e2103dda100264756c6a8ac9e76
+7a81d8ae2e259976aa35c1f138efbc5d2f70b53ad6f87bb5fdaf778267ca0b14
+3ac46d8e6baf2df7b34c8a2da0e2c8172bb6a42ae62f38adbc94ea4629bc9940
+3b2dc93bfda46c52d9ae6e27b2bdece8766ed5a05a939db21e177eb276faf7dc
+2f4ad1dc6511638b461d87732c7626d7a3db4f5538bcc6b863cfe61d24bf137a
+4fbe4d3160c5fadd0c6bed2e588d5896a1f66a06152aafe65d0ad59e18ab0db4
+a185a06c975dacecff0b4fb6b3af9350eced94fb2cc7f2ea31beedd333fcef6e
+c64d368e7b7ee3c4cd617083dc2ced4611d406c53b41b2cee7b0d4a224f045f5
+c22ece3961d82ed1609fea86b24864c035ca5194ccd3ecbbbe5cacda68b79c94
+52492ee13ee5f8ee352cfeb5fda08d123d766e53bfd6ba7c6901c6e5bbf36a47
+30d5600ff58a1ac47dfaf91a9d76e7228921229081e06f6035e0c2ce1b10a81c
+64b7352a9ff714c72defc9e9a8252d9f0ac53f77b002034b25640d949f8b5c92
+1c6b3a82c7515f446baab648768997fb2bfc4b8b3e7a37d90ddd4e87878d57eb
+96550bac857d022ee4195b7f5d0027b8e15cda3db9a39a22e769d11d9f2c7ea7
+47d1046bddef092eade17e5f699b84c80092cd6e3a989e18ad8b33cc99bedd54
+d952ed3e779fb25b7faf56864ba138199152099441824a841985d1da16669d3b
+2e63b454bba6e55c1131b306df746e55ea6b12a860ec34992b18d8a5bc1dba1c
+f564da2928b9da505cc8cefa1c72bc30707239e6590a63715f18cbd6382fef4f
+cc1e92df1a927c51e4d754679043c4cb74b615077e3abb8ac99c44c72ed08f1a
+80c11547e9354353366ee9730ee2b82d5953fdd212285c83eb3b88d17686c07e
+9f65b377ebafba60b0ff1dcedbd245c9ff8e62e4eba5b83c51dfed1d73b42f29
+0a4bdc34fca322c1ea36dadb4e3a6808fe7281b5f6ce28aa647b930a60d060a3
+00079b060b590ac99e270518effc1fdfdd66a3194a9143dbc665185878e17026
+5bdf1738fda476dfc086b7c7a3919b75caa869187a76a035921498dcbc5e0abb
+8066db70c71149c5269bab0293fde27292618a97db772b61db2827a8c0ac2eb7
+b12126d50c43bcd87b64ae2d1b832439806ed3404fc625504362da975e5e9ac5
+2c7afeb9f4e4da1e6d7c35f3f470b9b931fceca7de63d67980cfd6703e825ddc
+547761c8e8bf0dd71445fc409384f8f30ddd81627f1bfbc4f55254d5d7357cb5
+a92a528c5e4d9c4fe9f9420adf7a66db4683e4fb22f5b711e6cbf17c5b17161c
+6ab7e29d7a43ab25dc7a1238e34d9d60288ccfab75acf472c98085b1c93e22b6
+bf765f9746668fcaecb7914a42461ed25a7860ecc51755148c5689faed74f4c6
+2abb24598c4bc5f7988e93fcf55bcd40a598f52de86d578f83cbedfb2847fe3e
+f7c37b952437f7b6c61cb7f387a6896b503bd0a8c072994b7ea132de31cb74ec
+87ab1fda6a3b5b486c5155c2f5b8b65cdaf35af97045c55a1ac6fe020cb5ad17
+d103263d0dbc3131932f95c1d84a2f36d0ed662e35a21644e2a494946be31234
+721fdc96402278b03ed2228e5d45937b254550b74e76526a2f95d0fa02e02ab9
+51ebdb37544029e111bbfc3ec71740033a29387637b4f0565114ada04fafcbeb
+ab5169410d58c22b5baf3eff7c3be2ba3efefd7de2084d2d93c06f5157d04596
+b3ed937ed9c03308c3f583ae97c63ce9f3deaacd46682e8b7b685f72fd05168b
+7aaec65e59a5876c758a26ebe71bcf9339c6f4ee8a755bd860aabf17587f5308
+600079df88c4b8c1851bf8aee1d93a3e0a30731f544527d60766d81a2807061d
+9e4af56e82a91caf6b887ff206af97685caf93d05ea8814a8046348c10b93d24
+7e45e025871d2c0c37eba06d3b35f27bc9f034da429d816bd94d9d17a9c4edb4
+8fc81b5436c934347633e609f52ccd302ea412a7592437d86b16b9c058ca7103
+0944c5c1391a348bc26c37a6239f707bdbc0606f57d66e3fd7b5abf864e62b89
+7fbc56d7ad5d77e378c62925148634b366f32e6f17a543f6295e73e3ecc888a5
+63135ac9e5f3fa61a481e4214168fc0a39b7db06fe20e3bc5d1b8ea97a5c6f10
+1ba94bef781f2a7e806ac106ccdc523d5e138c6f8e9472de4038a0de2d8737e9
+83c5cf30a01be5ea8d0403deaf9165e5b7bf692be2bc996c97595fefbfa3e451
+47d96e57113a3f2e296ac12227bee12ea9756cee29b590546e48c5ca120c5b54
+1637002b1aa008ed76ee241a356699117872dc01f2c22330369498a6473162ca
+1cbd539b71f3ece3a0bcae195ea489c1fda515294c420964d5f255b66573a9b7
+daa7b66af5b46833dac2957c0e23b70371046666a39afee01dd5e16a1dfb4407
+da9a321d7398f2f140d174ead1e150600b1a1c709e0d17a0dac546aecfe12936
+522065812da1ce40cd6c1b86d035819f94d282a9f7cc42ccb6ef363669a3a311
+78038dbee58b7652cd5974b13db841c2239d289bd3279bb8553b7859d9ca07d2
+1845ef50ae61c354a6796d298d9af7705e6daa79a402b9555a18c9b491de1eb7
+f380d5d2febeb68e5a1deff7d67550af28b37e3f7585305a0ab9446178966654
+85b80d1b588724c03c25f329007265d2f272dcc3b5bf826671d510edd0e58580
+4ada71803742c269fe565d2d933c0892e7aa4ba98d0dfdaa290e50718572161c
+9cc33a556c405549ea30d48a908d033cd58d5b1c86e51121aed3cfcb1f8dcbc5
+a7fbf98660120c7418598be4e2b8bca9ad6a84bdc5ac6be0b3f3b17affee94ae
+90dbcd48b5f91302d095761f02eb32beae5e491794be10e0970a152b8c0eeaca
+b55005d104942be40a34087b183c74fb36e23270acecce309ceac584facfb6af
+43be46a3ab87e1552ff19d50eae8dcae3d7f0f71d400cc0ca4fca0eca29a0ae8
+7243f9cb0711145114547efe9e7c82340078ae17487e82cfe682847b0fe0a20f
+63bc3be535dc19f4d24e0cdac15cf2398571676f6c9c38590e69f9710280aea7
+c4f2f6734c3ec8fa317071903200cf8885cd76d80a8ce51dc789b1f746ddb1eb
+cf55a16d5083b06fee60891745e6f2ce0676cce162b158862cf60578b30e89d0
+581464bb70360c350efa4a9c4a7d47a28474fbf77dec0c25b33994635d48d0eb
+ae1935eb66439f40452fa6d4bd4ac48e687250d0df8b151e623fb97559f045a2
+5f9c0081db519a845a007235dfe7899186b30bc2eeae38ad3c48f405c8664d07
+331ced69364c3757900008c3eb9d3a9fd60d1c6eaf2372196733367ea1acf670
+2abbd1fac2107400ad84d1a6fc0137bee138375334f6b8d49900312fcc838da1
+6b908e203d9e290820a65a09aa5003cc06089c5930cd8ac38a1e6f6fadbbd9c3
+1464625a530c03a1b762bdfb713634e276594d703d6f8b5d1dc607bc883685c3
+2de32869814f402f67e49e575ea0b90de503595c0d5d58b2135b0c55e0b06957
+022387188625bc3113c9b56b871329e4bbce71f9bbca5c4cada14c320bdee672
+183c2e0d347c837d3657796c54d4e66e9e02c56b8670ea0422636de561a2c95c
+bb4366ea26a18a2cf2e49b71519b237d4d8e5701ea36806b0b543ef5b0860b45
+49b479b9580de0cdad01e8ab976c6da349aba838ef978e271f4aa39ee0f0db7c
+d5684bcd0d823993fcc33f4529382fc57fc20d9629e00ba23bee0193fc4bc0a7
+17fc6ab9c786c284a1d0c744b088414ac695f61d34fb207a17ee68b1a379a17a
+3edad8847b9914938cddaac439eb61609efdf3b4d4a0054de0052b0926fd6ca9
+b90de1ac1cea83a5fa84db395f165102eb9944a973a8362fb56a392c01b905ce
+b48814f79aa0275fd25f439ee37911480a038e81cc9e5f58d3a9986ace6e01fe
+fb65e86e0d930af93e0a44bebdf2f285990f2a9a2691b3a046dbf0f3812b675e
+86b190fc3132fe3b4ad67582fc76d914083a79fbe5f1f882b21f38eda7e37829
+bbd4cec24fa7c7e8853642a6a0d585bc43dd5dd22ccdbfde60f24b520ab49cb0
+911e5fba9344617c34e479c8711a50de893a49a9a5510651ec7e48620371d2f7
+c669e9b11bf8e8c1717aaf299e19f23ae6ceb1f2c1d651083a872853b553bf1e
+459d4f412e15aaf0c8dcb3e8064f2ff3a033815881813fd23068cf4ff617d9ef
+d931218fa7b1bca3ab25ecab5d7476bb30ea7358a711632ff077ccc39567d10c
+90c7f9259d7cd2272f24870c369737007c24b4efd8ad8275a01b0a76ece30f84
+d094c11cf4d03ab486befc00f823dab93f37952fa422b886d15eecf5f76d0ab5
+b9b64e60f5e5e496f6dc0cc5ee8292fdf6aa2009f53c4dd4e63477688c3c6edc
+32d1e8537de9e2290050ad73d075b6f03797aed6a0a60dcc1b4af46bdcf42865
+290570c1320003656a60afe6b81e67989e68d46ca9b74f187df94627d920ed9b
+91824b37b1a4725c3080f0d1e68de202db304cbcdcc3012efc44dcc4868db7e2
+45f5dbc496dc432ca30d53efa505a3ead00c44186cb05c6739ac950e6057c38d
+5dd44130dc28066f44c4b93b74b3f5557b36a9510ab77e0956200cd42e019237
+2c23bf971e8b4e3c11ebe13e02adfb8dc0fc16447cc4db37b734b110f771b02d
+f0e818b02fe4f099d41405c569a054e5f53402a14828c75358ee79f0858e3f1b
+e198a0d10ccb18bba384d20302b048034ce50d070dabebc4bc43a9d972571916
+93cb9b7b92bf57eb9b3ec7688e6e84438166bd5f882fd47efb1877f60358f1b0
+aa607f62f8d26d601ece6b4a4a21b2eb15e3a0bb1b65ce39d6d937864488c74c
+5abf845b41a9d74d08656c1e46210f6ccc3a42b9c30ebae31d47fdbb4a426f80
+fee2a00411d6c010f4f850795bfeb26cb2037044f05ddfcbfdee2fc02b4a969f
+20ae7f682b1ce596add1dc13a78b050ea66fa9f1d176c3f838dc13619b648741
+4739ac258d26672a38f206bbccebf1ba34dc36077b1d23443cc15b5b73f901c5
+1787bb884a65c47955d090378f57536365c4055ed32954bdc07db4fbc816d3cb
+a514d863b9bff32402f79ceee9769fee79fb5c9f2b7fa90f642a63eab61635ce
+0f4d5751e6e6cc01ccb9ca9f27c19fb2c1dc82e6991fe95eea5359868d7af444
+f5b14c9150f5d82997a75ebc7090f201d31e6af989d405e7f9459ada50aea1c2
+9ca80e7562e6975f5839a0e58ca996a0e271797b29993bc7f993f27097f7fef2
+3b96b27acc1a2ebf4f776fc0dc5bfb0b96e449e61056037515a9e527d7df1e52
+f568e2520d9f57681e3e579607ab172177675ac43d7f5c693502c88aea30240f
+8cbae5e965f34457a94e9cf5f1c9a84b44d6b7b9083df743c99ea9086550af3a
+099fe506aaa34fa6bf0e400a0b81b0e6fe2b3d1790d638dc50de8a808a7f2750
+9981853629f8d8ac65bc074652c7ad4b03b6471ba2e2e6d5b8d42b9cd2432dee
+bbc41d7da843972f77855e8765b54e502928d1d4a4af1fd6532478b6d75286a8
+81336b3841674c8f5573cb7765c006a015d35e8b766f5155b297287a0a1fb901
+526f2de68facb592ab663a4192c00c037a05dda1ab4151be01e87dc9c1723d06
+2de20f7aa486c0f7aa7f50fd1dbcc543ded75021eadc019000c20a60e3506f65
+83090710a507767ab8e5b9701ef7d59213060e3ef6c70ef75ee06b0dbf72fbed
+acaa6d07120925ee0e1246bdb753fbab9520cb61d2165ad2ebb11ca61092c936
+0942cb340e0ff75d378f0c108a27f59521de065c6e7d43f3cd9ae082bce44d63
+bc70bae5a51c6f5b6f95a6052dd2a70a1803ac59da78871befee0367bcd481d9
+4d4f623870a82a760e3a474477576d194801c2de241926dc28879a636dc1e260
+5464860014a75a0a47a78f78a3ac20c8f430e06f748e181ca42f1a455b3beb6e
+bc8e5b81baccc27b65094b46b5cd02ba514d954f151402a7be7868989bb019c4
+f68370f0031be674d6704919459feb5b7b2d11dc8d8a5a5a66187e76374d898e
+3a59da6c80ab635d163bb2b928338f7ce2112b356c1b8980ed0430b5f3754b12
+7a9e8ebbb9ed51c72c941a3abbc3a5a178ddc4e00dc5f31e7e26232eb9d16e36
+b1afad307800b1931b0f13b2b8ddd80ead0f4a31470f093161d18e6df8346238
+140edba654364c00a4595b071b55d0cca945370b0a8c26c0bae778cd65ab32b8
+48d426670a4c781b39e3354adc733a6464b0ed48360c012ccce19cbb6de608ac
+fdbddd7680a66e6ee665c901c4dd36db54fc13b83c53d6e25eb31d0972be650d
+055869c65693601a7a87fb61e1f7da5b674904077d6ce6322644ec7ee766866a
+e74c5b8020896bee8aa09722ff7050405f0d7fb9e1d437cb6e534533c23c0052
+b532172a7f9e63cb0e69a513a110f4b29f4209091a3dcdb1c30928ad49a9ed83
+3b7ac280c3ada706c9e341ef2a929382f2f609aaa2c5c734847d80113ec5b383
+14d71c96cf68fcd5953c045192ef53ac953452ef8198ee77ecb6e741ede15467
+8298a01b4fb18ae9fef3060888e97ef3b844e9ec3cd91220274ca7b9863b3c0c
+1c7f40cd7b86dd78f9fd0232c627096631d5bc9109f82a19252d83382965927f
+be6d83536566a9802503a2e97318b07a7e9a97e5e79d75c2426e89c9b7855ae9
+cd6938af70a361f0f942605d7361e1b027d6763cb955b0cf0516922a98b6adb9
+06e63d06d65afe7371734a9662f7593e6d604e3778967de94ee0daf2b222e786
+48087751262b3cd4546d92b516322ce7193fb6a55e67968cdf70374a1ad00748
+34f9038475515f17590ff69c90cb17e186d85b430db42c6022729c7c8e606ca8
+6bc3db6a3c099a4ef4833ddeeab32668c7e1ddea78d93f51333dc1370c35a89b
+06f2df63d8b4a46eee0d7f709977066dc819a9ed213b37506ba7d001fede9cb5
+63b3cd5061cca810f1cfb77442c763840edab9ff4ea3ec598af17de0a7fffd2d
+a1811e25f8a154cce3f7b75f5215e543044831554571c400fb31307348588e41
+287b6e57c99067816280b09d33e0b0d84d315c7492b74aed280d3da699a58465
+b0efa3bb083954ba1029e01791f5ae6c4b470da26f67a7b21f83faf9a0352e4a
+6b50c8143b65d47926410d76d0d82bbfbb9c4fd48ed4073b245d9c8437a82cfa
+6253533916577d02bad0293a09d319a1afd996cd571197505e007b99da030704
+8233aec481bf162ba712ff20f5227f2aa295fc352840c99f6aa40a94eb900cde
+389d4c16d4a406e0db3945a5d52ae93a83ec0ace39bd994497fd4b4e78013835
+c0fa8869b485a081576d91ca05e223c7f42f5cec1016fcf20e110f02662068ac
+18851b10bb5d99a33941b33607ba02ecf99c835aaabe35196287a9612cc48854
+77228766f59d32530b3eabfe415946e9fa65e3703cba9167420d286c1c058046
+41514aa83a24779962ffb25e42800021e091928edf6d8dc586fd89c1aee2190e
+299156f6d7a6504ea3fc4d997f71de67011914dfae249ce7ffbfab922a1f9f1b
+252f69745da9c0d8317796bf70002b1593bd75e286a1925cf5382acb4805f5c4
+e9efc2b9aae6a15e3b951e558e2a91be00bef027bdf5d57eeba62ad18cce26b7
+6bd4305e75b8949a5bccaa8a382fe153a426aa22d4e16ae5ead226780622db99
+aa500576d45dc671d4d37120827e21a0c10086b051c554d2f8508d0abe610a0f
+29a3b076901cb7816c9a58c0f98d7f6ada6bcbc999febbd2fb4b372309e8f737
+035fa4a8adaab0d37a83369dbf22c0f85419f592b3f472caf355aa40a5635f53
+8a86ddd755b61adf157f6a2a237e7ecfaecd1c279baa30f4d1b9e1d9d40acd46
+3d305fa0d00ae3fc4e86f485f78ef7b96b214b4e193824abd983794fa5e27c57
+92123cd572a9f4beb642f00402bae7f15d3505022a7a7e30b7ea499269395554
+d65a894acf8af2c58b7c102f3cf0a1c97ef338b40d3dac2951619f4a1d7fcc4a
+3ea5e4e679f12ac59c46b37bd6f74e96f1afc54e817b48f1edda9a0fc73e646a
+e2245095699400ab492f4d5b4e1ac9cf4b463d100127fedc921c5547facccbb5
+be3b392b81629ed5ce0daa3e9e6a8736be77a74de6fe3ed6f77e3a0d2935b9d8
+84df1f843adf22e89697504eea02654c869d225458d7899673e805b2595f65e8
+6755d585172c75d36e17b3a22edd2efab75977294b63db1127cb32af57691d7d
+e76d25181e6e7cca234bb71acf1b8192ea7157d756468dc698be3b6e9c985fd7
+ece7375a84f9f7fe7c036164015d7beebc1755bbaa27d2743c2d219fca430bf0
+b9fbfbc8403877931afa779ca4134eb2cc4ef44f72b84fba8e8ddb99be273d2f
+06656c67bf00dd146622d53f2c5f5eaf37dbebf912d802ef2d1f8443086d2513
+c8ffbe6ba2cea09a1c2bfa8c5d6d9af3778224d8848677624f35fc729a9ff263
+3987d94acb8a5dd69681ecbd1ee7a1c024eb75bafe87f5f458ab7dd2bf2d47bf
+3f47b5585074f5272563fdabf46d7e6d1a7ee7eb6678b637bad5d9bc3df230d6
+d23627163a64e2d46e8df5821e3921d7772bad3c5f8caa3fc6cff970c92a9453
+d5187e00433e5f03ffb46ff5abfdfdf2f939f391d147629482039fa309cf3ddd
+fa511563bbf5a9e9fbbae79ecffbfb6e70c128e7791edf5d7deffb9d45cc83e3
+705b729e3b10327eb69e25a9a0271dfb19be9687ec676dba6027de973898b3f7
+d57da97f9e67eccff64ff9f5f7e7f091f9ff940defa4264c666632229cff7ceb
+eeee68710d0fcb3cee12f74e1ee8dbff40c5f330bf1a72230df0003d667b79c4
+eff86eff8e9fefffabe85ce9c9ba72dff9f15cff5b70e89fbfbadf8abbfddeef
+f3f797b9989d2fafdf39df61bdbe47fe19dfec9f99dbfdeee9d97ff1958649fc
+78aefffdbc8c94c486ebeacfb7290cbaa612caa924bfd608f352e614ae39c840
+5025ebd13d63100902c6ad666a83dc1dc45f407f194ad4e7d646f3b1f7d9a10e
+dafc36f9d8bc5708d7c3af4da50df66c3350490879be1315103eb97abc329eb6
+b976aee5c76488192c3938fe7c33fa89c6fce0542925e6e3b8df4daa1e78ea55
+caa74ce5b5fa5367df85459a8b89a2c84c65667b7ac0b46276ea32c726b002be
+d54bf43e9b25e4b7595ede6baaafcffbdacc075fc55cf1c51f93a199c1fdffcc
+8cc42363fef795c8612460102a2cd31574a3afc73bc5872b18f3bfaf44ce8706
+3c8a2b3e7e937f6e7cdeaaaa3d8c6fd78949357c949d704d532a567711e2e166
+6120c41621590180001f4395bc2d43d096ed91e3c44875b6f4fe35559c1f8687
+e9848d1ba0fe390e9e9f5a6f6f14a81e86346dd4351e60a6828adc88df764212
+6d97457d5212f1770fc1c96c54e81f46b25414c65bb62b37ae918692c33ca207
+dea23d1f6581fdaef74b9de511cd3942750b34452853b513433728e87aca8791
+0442c56739839280bd0fd495287237c9acea6497e738f5f12643e074d64412f2
+4c9277dd9b3c598f26d701c58ecb3ca8ab7233c863ed2ecc081670ee4a0e8538
+7efd6393fdaf42562d7708c8b37f36d86d28dfa4c0582bbaa7928e4e583f7d47
+a0e952a49219be059769e753a161123cb6eb49d0afaa1a2b1daed3d92a80b6e9
+34778ddb35c79d269e410b85ae1eee55d071d6a8bc5f1bdebb3bb80e00f8fbc4
+9aa1f7075d27de85f510f469ebeabc42555f776cf926ca6ef0dfa03f84a18a83
+bc802edccf2a723cf53e9ad0465aa7f1889b00d8fbe0203a96d60d8a297bb42b
+d1214742ca056060975ff5615d162c6585546ffa4a0c6bb66e09d3d5cea6be2f
+014e1df1319aae102ee3b6cdd7495228a5be006bb58d429060efd068cc9b50d2
+a03b48791b715525373b5fbde3d8a6282887e5e7bcca2bddb7af920cddfcdc72
+cb5c86fa2683e35294a73b84777d208553b5579c705093245f0aa8e321478a66
+5f457dc62276d525d8c77f1d18813dd7fe3ae55bf9b3e19fd3c73b8a0f101ab6
+9fb9f60c7a5cf50a19e61c1b1857103af616773bc5819beb74434b6e649c5bfb
+d9351d1d74d200d3ace3058ecb11c30242ae2f01f2dd810f7f2910a81f47d7ea
+275873cf78574381825c9b623fbe26ee9eac3b3f7733f174618afbf4be21d3f1
+f64668dec88b7d56a6edce8e66a7b6039ce4a32a8d1335986e4c39949f833dd2
+48a2ece3746d53b1a0f2bae54898391d0ca0a4684b75448faee8f893da619c86
+626ab37eb0209ee97c441d74e283574dffe1fa9b44c82e26ab2cf5de77e1f310
+b47e958d399addd57435003eebdd65665308c30a76dea4dd14587d7a25aba86d
+ff3584244e8ce736624427a727544eb2b7ee7519c95b15ba2f92b88b5425448c
+fb1f1b1bfd702c41ded74e12c4a5bd435b802c20143397ebfcfae802a0d1a1b3
+79f9af4347b7beec1a5ed7f2cbef473b72240562338ae98e04f73eca87185de8
+e40fb1c11331a7674fc408e5d12f5fea62dbe64bc64c57c4ded5bdef89ad6864
+27358138940ef8447ba8bf13a53b95e9d5051014e7465877a6c089146bb018cf
+a3ac9d93e4d74e37cfc089fd722001717755206cc8ae0ef24c72a47b69e103a6
+56c0dc7f31b99fa93b9c5d8c5b1ce54f11a43a0856fee484d395aec3dd720e10
+4574d3a33cb60b922680c1ec82a0c92fd60c53da1300f72418b9c24c5a91e57a
+e617bb9cf816d8861d8b08a4c1aef60771d208bb0bce388411d709bb043eecbe
+781baace0d5deee8cec3e59724bfb01bf36953f6e70d127aede545c277279448
+8b84be038d92d7dd1ea9f3f0d74b6e9ee801144605484235b96b070ff37abea6
+0c257b798235c97105e537265c3f9138da5f406286a8fda45ccbcd3d4e6f071a
+3ec861693f57d775b93314b24942093cf039fb49e1b03c8dfdc44d061e503f1d
+d3a51f02b0a7a574662f2e6ad2e272ae7457702baed75f2a2db50e65777cd745
+6fb9954ae9a1c4ae2f6307dcc0e29b95b8042f97abe4e9258e2d70a252628fd8
+38f771ed6e60d450fa0d40b4b630ed201ec605426f071737c0dbec007617230e
+6d47bdb1c5a5f7df6df3e3a41081f2a4df352905cd22b49487305f41b49af6ac
+b43dcdfcef6a0f7052d17ddc6cea433c75d22ea0dd3b54dcd55ec42ac3e76723
+1e16f5d9d4f3f58532769288d717a008653d7058ea2373139ae5ba876767f773
+3968bed822dddee96bb729b173108e0ff372bd7ab9582b72ee9a8a7edad8816d
+8a5dbedbf60bc72b26785b8dd15eff5394b22fd00540fb08b78bb8ad44b98ea0
+5ac9bd164fc730c9711dd5dbf2dc51f37ebf7bd1ade93e773b1be055996f9222
+9457d8410eda6b74cb627845f66d4159f6690ea5184ae1ff40f14087a0f40e5b
+f3bd20f6f3f5b86dbb027614d42bef372249a4bb82ce1019fb93ceb2c2685817
+b409e8b7710f94fbdee923120070f41b468f81475b9370a7f20e8c2b292b9d0e
+b516cdb7b3195cf6d7e941bcb9df0d37c1acbf512c76379bcb13a8fbba4b6d81
+59e846e270ebeb2edb2740c0ea5ac850f572bfecab30da42bfccadf8de4b9940
+d4dc764061d1e9f43e5a107a131ac744d7e5786a2847cbfd5a70a567b9d0d916
+1d1d7c7125e60d9c33e6a9df98c4d2ceff3a313a0082675a54d8e61295d17b9a
+4f0943c1ae8b7ebfdea40a1a89b1dbf9939f08d2fc21ef44bf000db6197d193a
+c83bec1ab6fa93955ca4977058bb94bed83dbbbab3916c0a5d300ac273976dab
+dd12e8923a6063ebb23f873373a908e4a2e0a6cb1e0d00713b5ee35336f12eb6
+dee24f38bf5b7bbcac196131dcd69c9c9dd9e9729f943cf47bc9a46c757aa385
+80f67fd68294c2a8e236afd8be9c9431e4b458d485f276c103549ead2bc761a0
+95ed3c3ed06fe8050b28170af338500dc9ed1b07724acb3940a5080160e750b3
+eb60c2a0f8cf1ac77b85dbaea2896ed93130fef21465037083db20e10755829b
+290f7656d0be3a2b0e99e48e2f26767f25579d8062b219ba0aa96a3e4bb0eda6
+725ddd08e376b34fcb7a6dc33a61b76ed011df67927807c87f862ae9eafc14b7
+6b293aa852fb9d2f58b4cf30ee99b8c1a849426fdb92ecc868b84647d6944892
+3f4099907e40bf8814d79474f481d8eddb3b0001d8b81726f1fab2ff6f37ed81
+e1d925876fa9b1c93a5de431c77f56f3d582310b04827dd55e0e81035330a9d9
+acc81cb59e9eee46b9698e15299a940058ea27e56a5be8b7c39d76bf72bcd224
+ba58c3880d0cacc28bec0f58e12875bf52967ed0d1a11fbb5e530e00f7826920
+87523a44a6506bd776b70bc21180be7e8287421f5260f53b98cb43d8580962ad
+320b633452f4885ede6edc04931a8626c320fb520bd8db2b0206e4dba0af8174
+0eac31f6a7814f1b3d9fab2fa100ef6e581d8109d4ab9c3d3949becea692ef6e
+823cc54dff944fbfaa100ed4f8e110a6d6f17fb6681aa47c8f6619288b75fba4
+1d94a071480fbb0b0164bfdf2846cab1cb59bbfd303aae1a11ddb1fb5fe444ff
+8f7013cfdb88b2f63b186dd21a79c5874e044ded517a80749a10b9f377432dc9
+aee6124dbffe332f1991122799e408fff936bac3bab47cc7cd3b803dfb9f6f43
+2d0c6aefd48a97e7920e5dc9708b73c5f68b5b7b7a386579ecaeda4e9ebd3ab0
+27e8b39db4cf0652529fc059c359ffa73ebb2698fae8214403371a1c2abdb7dd
+a72e9d4a4590823028df1e6e810846edb8d1c97efd774a9e699a4eabefa53efc
+f996054e9502401fe7a9b2cfa1b8dbb0bd49dbe90cfaa240747547252dbf53dc
+6d276c937a2241961af0a134b7ec515edd3805722118ff6ed7f750b7a7ea329b
+5b0077cb001f7ed0ed26b7bb4ee1afff7ed0f391ffefb7ff0bec98503a>
+endstream
+endobj
+
+6 0 obj
+<</Type/Metadata/Subtype/XML/Length 2438/Filter/ASCIIHexDecode>>
+stream
+3c3f787061636b657420626567696e3d27efbbbf272069643d2757354d304d70
+43656869487a7265537a4e54637a6b633964273f3e0a3c3f61646f62652d7861
+702d66696c74657273206573633d2243524c46223f3e0a3c783a786d706d6574
+6120786d6c6e733a783d2761646f62653a6e733a6d6574612f2720783a786d70
+746b3d27584d5020746f6f6c6b697420322e392e312d31332c206672616d6577
+6f726b20312e36273e0a3c7264663a52444620786d6c6e733a7264663d276874
+74703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73
+796e7461782d6e73232720786d6c6e733a69583d27687474703a2f2f6e732e61
+646f62652e636f6d2f69582f312e302f273e0a3c7264663a4465736372697074
+696f6e207264663a61626f75743d222220786d6c6e733a7064663d2768747470
+3a2f2f6e732e61646f62652e636f6d2f7064662f312e332f27207064663a5072
+6f64756365723d2747504c2047686f73747363726970742031302e30342e3027
+2f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d2222
+20786d6c6e733a786d703d27687474703a2f2f6e732e61646f62652e636f6d2f
+7861702f312e302f273e3c786d703a4d6f64696679446174653e323032352d30
+332d30335432323a35383a30362b30383a30303c2f786d703a4d6f6469667944
+6174653e0a3c786d703a437265617465446174653e323032352d30332d303354
+32323a35383a30362b30383a30303c2f786d703a437265617465446174653e0a
+3c786d703a43726561746f72546f6f6c3e496e6b736361706520312e34202868
+747470733a2f2f696e6b73636170652e6f7267293c2f786d703a43726561746f
+72546f6f6c3e3c2f7264663a4465736372697074696f6e3e0a3c7264663a4465
+736372697074696f6e207264663a61626f75743d222220786d6c6e733a786170
+4d4d3d27687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f
+6d6d2f27207861704d4d3a446f63756d656e7449443d27757569643a37363963
+626235612d333035632d313166622d303030302d636639623138363835373836
+272f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d22
+2220786d6c6e733a64633d27687474703a2f2f7075726c2e6f72672f64632f65
+6c656d656e74732f312e312f272064633a666f726d61743d276170706c696361
+74696f6e2f706466273e3c64633a7469746c653e3c7264663a416c743e3c7264
+663a6c6920786d6c3a6c616e673d27782d64656661756c74273e556e7469746c
+65643c2f7264663a6c693e3c2f7264663a416c743e3c2f64633a7469746c653e
+3c2f7264663a4465736372697074696f6e3e0a3c2f7264663a5244463e0a3c2f
+783a786d706d6574613e0a202020202020202020202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020200a202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020202020202020202020200a3c3f78
+7061636b657420656e643d2777273f3e>
+endstream
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000016 00000 n
+0000000077 00000 n
+0000000250 00000 n
+0000000302 00000 n
+0000000409 00000 n
+0000051841 00000 n
+
+trailer
+<</Size 7/Info 2 0 R/Root 1 0 R/ID[<2B0ACE0F7381BFFA9AF522EE9C3900D8><2B0ACE0F7381BFFA9AF522EE9C3900D8>]>>
+startxref
+54378
+%%%EOF
+%</hdulogo>
+%<*hdutitle>
+%%PDF-1.7
+%%µ¶
+
+1 0 obj
+<</Type/Catalog/Pages 3 0 R/Metadata 6 0 R>>
+endobj
+
+2 0 obj
+<</Producer(GPL Ghostscript 10.04.0)/CreationDate(D:20250303000000+08'00')/ModDate(D:20250303000000+08'00')/Creator(Inkscape 1.4 \(https://inkscape.org\))>>
+endobj
+
+3 0 obj
+<</Type/Pages/Kids[4 0 R]/Count 1>>
+endobj
+
+4 0 obj
+<</Type/Page/MediaBox[0 0 248 40]/Parent 3 0 R/Resources<</ProcSet[/PDF]>>/Contents 5 0 R>>
+endobj
+
+5 0 obj
+<</Length 30638/Filter[/ASCIIHexDecode/FlateDecode]>>
+stream
+789c657d498e25bb8ee53c5671c7057c87a99796916b08a06ae231c8dcffa078
+1aca3c22f106f12837bba696ed21f5df9fe7ab7c1efce77f7ffff945f2f33fff
+efd7acf3abacfa59e5ebecdd3e7f7ecd32bfda2a9fd5bf66dffd33cefa9ae77c
+d6f95aed19413fa4f712fdfbd7d8fb6bd7fdd9e76baf7d3e499ff6d5ead3e28d
+f685f6a47fff9a4ffdeab3dc96ef68d95fcffbc82c4ff4e773fa572d7b7fd0a7
+78e7d2f10b051f3bef13757cb58774c738665d5f1bf4fa7a5ae137ebf92a3dbe
+b9bfda38fd031abf509e27fa723eb355be519ef6551bbfd19faf3da2a5e85fd2
+d1ab52d8d7d92b27a2c40fcda0f1c2f89af353fafe5aa5c403fbabe081f5f05f
+bcd0fa27bafb75ba9e2fd1fbf229a77e8da60f940a3a16a5a24be76bac200f96
+022fb4fd151da9cf6407e2cfa756927583d6bff1939c2d3cdf6391a2a1714130
+4492e3ab374ec0835ff3f0304583dfafcf881ec6004afd2a989298b3323f3148
+be90dd8b953fea2056fe29b1d05d0fec12cbb863232c0e78c544c5cf62a7544e
+d0d4728e3563a2e2f931a25ff13c7661075de277f8c2dc5f33b667e95ace3163
+914ecc50d750c7e06a5e3adef0e4df273af6e90fb27d3d257e70c45a3cfc8467
+b18cc9c5186d68d56661e7468bdd3b82ac5f67f20badf0c89439302b234ed08c
+4d311786366a3c169f9b9c9878b8e857cb6a1cd288b51ae8f0d2b91bb1fbda88
+1f8ba1c761fbfdab9fc3fe061d2b00aa166d21ac518f95406782ac8d4f0f4e2d
+fa82ad493a267868417a2c08b666199d3f8317e2e461b4b117eb8a073c96c6f3
+ffe95b473576013e1fcf6f3f50c405fa8a0907193f386b90932b5d62cb694b74
+719238467112632de368c58b05c72cfebf61c6b04bca01e7e8431b6e631fe0f3
+b1f07128c05b3afadd7162e28cc6df9ff1e004f4d8d1314fbbc79ac5803a0e71
+07db887d5349c6bec2916e3c91bd7a373cdcf92463fa627fd7c6a7b1074af01e
+9df8def462c181091ed87160627f6311c707dfe650aa7a89e7bd3c8d6c87fdc5
+f37d91bd75ff5be683c9c67875d0cbd27af4d17ce0b5e1fbe0e870fe74223141
+3b4e784c377adac7c20fd5e8005834489ce79afca1c77188cd543bd868fcf9e1
+b1aafda0577d6a454cc6d353fcc90ddfd1b0b839d08069ef4bd351e3f060c07d
+7178b573e36373c4df63426af0ad81eec7b2c44c7f6ad369edc11748d73bc147
+53576b8bbe60833e6468c1cd49e97082413d4ddb75ab051ccfc707db112c0ec7
+68c442c5b6e70b0b1f1895e72864429c8bf87b7034fc7ed5ca8d264e5c9b1814
+0e7374247ea0f9f7a3e76361cac41e4670680809cc00392ad80b1eacb1533199
+d1090d71e85c8d606df8bec978c1e7e13eb0c5f3ebd018c7d608ba4e2c78e4e4
+ffd5aee51a5b8bdcd803feb573c9c55fb607f890fbace87e4cd622531005e9d1
+296e924ee69c7bafe3a7f0c315ef7aab0e4ba9aab302a9bf76a1b060b7e32df6
+b2903b4a146061834f804d42c2437460a1b110f311cbaf75591640e263ef587a
+ce428e839599163d5880aa1308d9d4bebc15e3add9b8c32bcecb82e09cdcf733
+05d31c9ee525893a83f3e0635b2762c6cec7864d3a5e8865c2cfe7034b5cab06
+7f8bed31b7c44e5dd99bdcd9c17747eccf19cbc0e9710fe6d634b0835cd669a5
+a80eab1b5b670c03424f41e31063d92908e2f33aae218f6245e69110ad216e30
+3f71542ad7c31b7342f3c16a52e4822ac184835b773e5db9adc1883a85187e1d
+6227b6f3d9fc38d879e9d417d0d738e0a5e990a2f316d485dc7fc61ede649c9e
+fead598eafc4ee62e7975405308475a2f7101bf1213483f5cf900a60980b7c8d
+8c7dc679e0bc4c299154b6e2539847ea777feba9bf7ffddffff3ab6158d16989
+d63f41178ae22e0daec59e851a033ac60a921bbe4bc6fdfed574784ae70cb72d
+1501647cb95957e9d230f074fe5c9cbd563e6d49d80c1ebdb6aca98cd4a65a88
+7cea2643da1769e91938096de92441562f0ca8c558a9db4ccd6e9beecf943606
+1a1ba24cae195ee0e684ae819d03929a849836489c24d07e7c499bb3f04107c0
+bdcbd6e668cb0af0eed667dbb2c0db9afc160c840273e7107884a1d0be13ca29
+0ab61d3dea8f460ea6822f05ffe39ec717432ba77c565f0a76d08c07c884ca92
+320f12035cd4a9f0748e800d20a980e31042fc54b1ac32db0f798e159862fb41
+72ba29aa9b0e50193c3078962c02cb83ae36715f901034d43b96e84ad5a5a96f
+43920764aab258d59736c7781bb40b7b938cc76ea22ad09a0ee4494dad8ac564
+cb3787ff2c364058168d3ab66bfc7fb3d2db25167e36504f8b935ab877c5fc7b
+b0e7da2e192b67419b2d2d154b0bc2bf8f1a4f5fb19540a3220cc13fd1c2c969
+5bda18c86065e4d8d4ca627fc710e338c4d730e5b1961cda2c7e2164c08ade6a
+e3974b2f88209a9a6879de86ef68a89893fda801bf08fd11a3a72d477d6f5f23
+107d06bfce96efb765602f55188c750687e2d686c9e9f6d8faa71ecc2d58eb13
+9b75795cd4a863148b0b1aca6851ef178f11c619e723b65a03f3e25fa27b835c
+300603ad3dbe5528034cfffe952d83b29b6c2f4c9d10f0142260e836ce4d433e
+8a9366cbf7db02558146f6e06c241da269600ed6a3115e3a257ad2533c7bc0b8
+8b3e2cfd4a4cdb1647674fa05e808d14ac05e701ca2966126b837f2fdd341b7c
+432df3ce47a894038e848e9985d0067dbc3f2057c0003a5685f3137d1f619ac0
+a8d70c37fd422c904de0b5b43ad88cd83962300ff5e41063da99457a67acd4d4
+97a1f1c7e9ded8b1908455acfc8033c794962a561d9bc1f2a9347d943ca3cbbb
+814f8a873cdc62daf030ee86b4056c5e9c088ae5c66ef0448bc46ecf06319912
+6ab2a53acf6afe79f9d46358fc831af280926c85fdc3d856958a772c8c616bc2
+9ca0594f81437be0e4219a5bea7ec8cf8e2300f31d5c602f6d1cf05b584bdbbe
+1708304ffe91995686c57f2e464c00c8a6bd7a99646ec598b1cfb4cd07714cc5
+c04b5eac17c3bb01ae2e5b166265161d96d22896c4f441ca1a8137c1030c664e
+fb666bdfc1837360af516eb41f1e9d6643142d31f3e0d1e3c7fa57a84db1fd40
+e3077fffaae0b30f768cd97dce80d4b6d2bdbfeab27d507252ab7c2c719a9e19
+5d6812135455f07b8dfadaef5fff215769dc71947e157c696ad791ede084e0ef
+dd920a1a3b775bb78602a68a4e0f9bf6dd9b7aa45e54cc21201b43ce563a040b
+5d20b044b67c746576f9085a2ee3e424759f774a7188d229952d955138457cee
+b65c89c32eb922b6fcb90bbb8f9d34c9ffca91685fb937e5ef8093829e2fedf0
+d8aa5496e1c93af4403db2bbad2da75ca1313279d0ec396b944df1800e5c6dda
+0897d658f8865bc6b0c7407a429d56322f2d4b43df60cb928ba66cf9da96c5bc
+4ce06a4d3b9e0f4b1606d9a1c90f0e843317428eaca2d26c6d655a7ea3013a6e
+985f4b4f87aad9aa9d4d954232493cad06ab3c95b64f4b6f64950ddc6cf5e371
+19a7ad936d964606d28674884666d3201eb8a1635fc2a38506a8a5387e58d496
+33d5a45037f180786148116e53dabb4d37fc3c6d1633cba4f142b66819a193e1
+df264d1cbb165cb5494f8ae7a7f85bebeec1a41c0e5aeae9a5e55dd50b6cf0b1
+2ed34a50911f033426e09936eed81027433630f8374f667adf26fb55f7ca01a0
+016bbf35e26937caa25b17ec94fb249da060ff322e979d7dda853036b9bc723d
+d6388fe062f1c2a2115f870e1cfdcf936e1b6a9cf24d626f6bc1a67c25f0d2d0
+5e99da82f0a114abd7f8b527651ea7836abccd81146794d72fd953aaa6529c2d
+df6f8b55da6153a9b88b835e1cb842271d85b4aa0e430cd449a8036f691fd007
+68c7c2884e45a1d8f73ea6995bd7a0e0c7a10fdf6677837b424caf4be395d1db
+afdc693099b7e410a438f644d3c6edd2c0abd53a7e1316a385820515455fa7be
+dbe5b512bf6c64e1f80455ebcac50f0bbafbe122292b6e5da92cc41e93aad418
+94c0c74afa5221ede12accee8a51c4411733fe4759a7065f3737fcb142fee717
+78133a7486e45c9de23ac72202ce0b2ead351dc83b393c1035a11b4b3bbac8dc
+806310bf07e6c6bd56d3d95e257b40631dc1b070b2b829c9b1867414ba1231b7
+2dbd210b3e067215ba4f6c86c5ce826cc30b6957d14aaecd5c68a46bd276dd7c
+74d6d920d9069d0d12800ef0e911b462235c74bce0b0c97d422e46fa78dba5c6
+cefed801962df0a75140543b5f1f0724eab0d277724ae48a827f8e5356a443c1
+7f37adb46a1b6e49884702a56c3acab020520ec5b30e3e2fc1622bfe38808750
+048e42a87f9b1f087511ea5faa0f934c5f313ce9a2606e67272d2711be472d11
+03a5155ee4c933f7c3961033942bbbd46ea7759aef9c11b237b315c724d081f6
+8628d4a32631c4adb0322624865932aad4afb8dbde86c3bfb8254487fca18fbd
+08c561b962575a6add322e1483a9d431e8fc5a3980fa5852f9f460499b633c52
+42ec8c4bd15e1ff9020b63aadc1272c4288882f773251b99d9b19fc5137372a5
+15a92dc77bd43406ac3d900f2c7b928ec76f1a7e190c1d7b224387af4f889105
+ea099822b2beaac3a7299a74ef3a887ae44084bbf6591c014498a8187079ee9f
+142003a3e0e1918882d7d393d9d2c16e577d67b0b5da86aac38ed53e14018307
+b631e621756929285b9bdc7075757da77aa416b2d5db11cf6348f063839cf4fe
+60816456c7a0e851979b0a5e7feaad56ff2d1292063bec7a40de220c064c7a6b
+6b81bb71232cabb5d42fbb760e95c16efe6ac75bb2d3a5b82a7e3f4d3ab9abfb
+9607503cc6811c9cc0cd7d80fe72e187dde5257d4cecddc883938a431dd28f15
+f2ace67038989473dedfc59ea9787ea782293d19ca2a3594661dee71f8cd74d8
+0a4561d4fb44d1b7a953b620a5af3747439b83f66880c3b192c942f6418c161b
+34cf901a0f7558a146d94e45dfa03332181df4b5f8f3c1697bf8bc8314c74ee5
+54d8d2a3f38f7c94d74bf1d96a36f6e76dd0193d5c828c3b14474556c6a7d040
+39b4cce575b4eb96267e24b476fa9cf9387ee078037a68357fe6911c6d8f360c
+788bce7828bad86b3e89add03cc8c03ecc844203b70a68d1cc8d1157a3a61f74
+eb8ccb15cefbb0150371165b03a604f9056c85264d9971b3a6cf8151f838d320
+c1f3085b75c5d441a2f7c24bb42a6725f69f5cd0d806f05864f8a4b95b97a606
+f352d6b7879588a323decd934ebda753ba413d56881d6edc6639cd411f8505dc
+7918bca90b48a5da8ee835b169c48c8a788bbc04752d713a2994e0380a7dd9ea
+5c9694985dea308b9bbb4aa30343a398d1cc62a3bd62061a868c0fec041905e5
+eebb775b72ab9e224bb372dbff09a3d89b52067d6c73c939afe5a9b2eeea92b7
+fd24cea1720f83a45c6f5262f3f166bb0f5f1b27e9efa0e515023391ef4cb1f1
+a63816c94692eef7a4f575bf5e77369c2297569531f9f7d0e068b23d31c489ff
+448bbc3e892dd9c604c0588467efb9de7e4eee7eb463f3cf4511ed22076cd006
+ae143fee3067714c66179dfe254371579bd24ba655bc500da5d95ceb5dad5b6c
+c1191ce8d84b7eb05d0d1cd85c5590fcda9150db555cf254f1bdddcca01f4ed2
+ee661a85a2765bb1810cd4ded83377a4e7c60662a34cde4bad55de81787c095c
+e286bdadd628741e8c5322bc5124c1db6d9c4195060a9aa1dc22218117b03112
+d480379a0d29f2f52dbd27614dfb875a44c7f45ee2920f25fe9e8e5d1eee852d
+75158e2259cf68a0827db401f03c2d80add31e5d9117c1347edf1899fb84f80a
+614e40a32cb90fcbb10db17fe857f8a96d2fb3fb10ef28c875124284164abda3
+15da52910f8fc0cee8eab9eb755be437e004d114b055bc292e118793d181191a
+8ae461b32d6b215aa8ed582cd410f923f6160f59e20b20391c19027bcb75b9ec
+eedbdb5a8c44d23eaf3e8c7fb7f00449c6f347bbd50d270fa2bdd8e79152b2ed
+033e8f74ce9d8fcbcbe4c822c86d5d78d3217a1e7bb719a13ab28a8a1c0541d2
+3592e46ff2c071debfdf63c9319d6a9ea521e3715b939b2ec91f0f70b31f2381
+cacaa81d5a6484a87f97e78ae9e37b3cd82903de06493e7c805cd67aec31ae11
+34a3c42735ee7ca135830ce94e3b4d8e657c5f21d693a0c2a568e9e90abe669f
+8ffd1c3fc6d00ddbf3034321411b1567380cbe5327400b316c89fb1c8f0d276a
+af2f993b021fe07e4f0ce735ac30f463a538cd2848223384942444dcd554efc4
+e680013a5a3405018189812d0392ca847ca6473118c86ab9ecd14018653384b4
+c87bd6a9b21c8125617f08b7724a423be453c68a0be043f67452ea8f6ec1d6cd
+4e151f0bbb5a26860d99b3655381a641738e8c557896e3c3e74830e1ef84ccc2
+4c5f3288b4838ebc9fe82ffe3dc7c2c01eaed086613a912e4b2187a7e608e5bb
+41dc68501f12584e61d32a20045fc0140a0585e7e546471770d61e05cb30214b
+41d6822eb001cbfc54c6b3aa9ca4fc6b976f49d6ed6d7074ff11a6086ad1e4cf
+dbb24b7fc7f3482d5b16d918605fd4c3b8c18f17683fb9418f18365ab0514153
+426df608334ead3b8f582a6c5b8e9021660d1d1decf56816ea8ff362bd335d2d
+5dfadc9ad29bc4094c4aaf822eec3f7bf04b8a04f8977eeb72acc7c741cee2dc
+9ddbbb53d4c908e36d90f3f03b1b6020c0de380a33b4924adc541c417f45e764
+0fc394e2d96cfa171a794c0e8e2ace54abf76cdacbd21c2300b70006c0b0191c
+664c1ebcf7d62a15491b825f1cab2ecd2019d0c4ee8c04a160feb0ac8c17703e
+27d9441316f2b4e11fc8e8d2b1cdd86c15e380720853eafe3176b5693f62ced4
+6569d298309c5790d82bda6c6d1a4503f155d81d2dcbb6cd880120a42c918bd0
+845c317b57779f1203b2b52b7481a3b78d9c6a66aa12ddfc398bfa295b1eb18b
+de52bb41e482bd8126a7d08698d0b637ae799da0fb316c643ade18dab6087660
+01f6d0296ac6a76cf9315b33fbc22f72bad5406d0aab2dc516aa52b4b69aded1
+6d27575a70db21bd56865515d3cfd6e9cf0658b4549db7e36247cb80bfd30eda
+c5de3cbeb1e8d9c13262c669e64d78f3b6e51e0c219d4ee877b41d0dabdad3c8
+c5313858f15afb1b301b7cbdbb3786655645be765740b4a79edeed95126e6e37
+3933e0f60123ddb656406bb9ac1dd81144a3e08835d3e8b020b23c8599215b70
+48a883a485285190e44a410cab64909580f1ef62afd096926931b973eb14b1a1
+2d79b51f7b1436a7f1a10a000e28cfd07e84b074c376746173f9f7d3e5f450ff
+f1b455fc259dfc91f761e904efc7c34e25681dfbc227ada17584821e3ae8eb88
+ffcbd7056c8cc32e8664ad6dcfbbd6777907c28056887d79a7001b8996b5c4c8
+ed38bfe4b22d88e7bbdda4d1f0fd0b3f09b798e1d16bdbab35a9b2fe6b7b4aa9
+a3475e41e83f346ed1a0e87ef0143a2fe163615e8cfd178c06910b6fc3feb14d
+0035da87a7ae576190f67164dd8823bc6058ae63fb30303037f09040d7870943
+04dc111e13c7824a57e7e9efb48a1ab15a045dec69b8ff103a417c00903ec7fa
+f790cfa43785eef7906dd3d3466bd236ba81fadbe2611a41b1e547c25aa1bfb6
+a81ba13f88e0d1e0a630f7004c33eaa1bd9e0d923f3be30b56b8f17b8c9b67d4
+6057db1de655386db403abf4a6ad2838bc1d661cd5911939ae7775d4c1609726
+576433fe76b7746cea1ced2625bad966ec62f8887e4b4cedee3069530c7fdb79
+2ba0c71e527e12f6b187ed023bdcb63cba889b615d932cd2c0f57c13d2819fb7
+782df61a61f9b08513dd86f5e5284f15c06a4f5905dbe08d4bf7847b6d8769b2
+65cb01ba1d90c48602a780af5ba89234b417dc4a456674bc378d98a1a08c854b
+a887dc026400465ded2d573f702540656dc7439681673a06743924d0cef4a210
+151d8bb6df5d7d649bec7cc0263f4cef45df834ceaa4d129b718a308f103cb31
+cf91e47b46c7f0bcad1063da7032b9ed1e2ac52f99e886b745921fb3c000e2a3
+13870fd2de2da982615e180a96244f895abce1f776fcaa269c3b4759e49525e9
+adcf6c1b8b5ce33cf4014137bc097697ef6e4ae5715a5ceb5659d3fd60cf1ffc
+478693737196cc82d6d237360d8151d821b75afede4b27c8ea6db10e33a7b398
+7cf6a650052d615cd89b74797449d6747115a9f23f49c63c770608ad849d8bdc
+a60bc20b30d2c91d2aa3828930074b570c46c200fa363d3d63cb3b460dfa3937
+487384ae407c1ab686b60ffa695b56dbab089a72760e54a2efe45eb8f92cc78e
+8ae2c0da59e2bb40fcb07b6b9a8f3cf21d9ee960625198f9cc4c831436f1c821
+4a88c11966ca18c29eb484d09dedf42bb816b08913e50fe59dfd5e06bc1ee758
+42d8347a2ba43fa55480e82417193e2d471ef561c9781c6600739418430bd253
+b8053bed19261e498c1d45e319a62b7a5cdcbb992bd1b8400442384f58723426
+6a0286cfc8008ba1a8c27f13528819705660bb4895b334a46e8cdb71021d010a
+f0a66c4221f2cfb2dfe16d4bd8dc510a2b70281a8392db00bb3338182d886240
+1583bfe22816e8393c766d51d5d49c1a2060f02548a4281ab97a1c7ae21190f9
+6b8043d307cf92e6bd09f88d3996b7785da4cad17153565fd888334e03226e7d
+71ba70b243a40a0a8ded1f270bbff0c4798a05202b69a4e51ffba13929e206d4
+2c32940c0efdf3b670d713274eafde80080332f1a5a780a805fb7fdd86024e16
+7333136fca149101fc102385c4f721244b183801c54cdbb892a340f7dbe3c3c4
+587f01c0884a1c04256d998acd3e89ef0b9ae9c6193cbd2d8a2d00cb3ee55f49
+1f2271b13cbac43914a7179b263e58bf709f40a2ddc7c8c162945fb18f93e8f9
+d885420f6ade1ee83e5489a8f03e06b055bb2aa221fe6f50ebe0071e70c279b9
+cb4b9f849e3d877a65b6dc279af2629f031be02270f98243be99492ae7148646
+b14714f510ba4383c00c76e25da500c27c3f8c621766a26a3ff7cc052b401fd5
+495071c14888c0361014fba093192f2d7b9316361dffc1c628426833d25fec1b
+9d17db5664d8132587ad37b8b38a139c8a412669ea14e05f1eb9bb95e230355f
+5b8a1a9f4707cf45ff41344c412c38a3cc276a0c8f50a34cfa264dde168f157d
+ae2231b1c4438f24393fe024d9f0fda381328b0d4afc544331f6ac5aa72fc5fe
+c3847b141c0266554a0e032eb60440d48ac9c50fff6013d48df50068a273e322
+f6b91552e78a429626c9c3cc6d7cff0eacc724c94dc95351482b2e5bb8373a5b
+74b0e080ae8cd2139a14f3d593e2fcc522bf7f85eb87401162f5b18073d0fd60
+f027f11c7450106cc374a871ade1028c32dc8b09972e8854c1be9d860dc12ee5
+70738f017044f4a691c34ecaac43611a8102e885a0ffb31cf943fb0530113336
+6f3265718e677594ffd21742960dce84264d7482c323dc7c95719144100b58c0
+e4310239e1b8dca4697655d92ffb8276d1190011e58d2804f609e3c42fd2dd6e
+68124f22cc7fe6466c67a48be326d8b7c0c14ef07fe2e6b09d8a6060e4615d1f
+c880889294a9c34a8cb2476d51ed944a041da9137a8f6d8503b5044d146f403c
+b508ccc8a38a00c419377dbc2820f1239d3c5b4e66a5e0cccefdd9c69b1421b9
+90c54283060ba1f96311034e3cbc1efdd37766aa54687c9ffea2f960001fe532
+a8388564e3fbc6dfd253227540e3899fc78e8dcffc414bc1fc4b82421d40603e
+b41068f08dc9015c502a629a8ea179a2da8b0c0526578788cc8c05d372a7b67c
+83d934b231bfdf96ccf5e06f229229546ed2d58919f9d5fe6999eb817e06eb48
+052c69688052f9b265a6b2c094ef0e9d944ff0ef8746e1db4fbe71e6fd862311
+0aeb2659f6c537bb25131007a59f765611d9847ee6928d2ac6d50d2fc7df5df6
+82221059ebcfbe34df8038f8f1040c7dc1a0856e5594aa74bbb0a2417bbbcba8
+0ed9b7be9aec081a1f449d520c4ff789482276991866821e05ec22be3698585f
+d7594280f5011f8421b19948bc5377a154ea5b2b593237b474b9d3c0cd896244
+3581f142be517c80b516eef944b9089e1263de3a70f23265586401692393c0d9
+7c413908a96b74b2712a124c7311d9df0ec926cb16fdfeb8b29df415ecee8ff3
+67d59d418662ff73d0d2de4edae56cc122dcdcca499694a0ad828a0ce4bad3e8
+387ea2930ddf1e3032ea4215e8f1114e42c1c8820211d167705f2e1b0a7d5486
+3e95d86c322df3db6230edf78f1605bdf88b70ed76476dfbb8582d4f03d2a814
+3df40b1c25f8adf290a029f7eb42f744cb8bad51301f0340a7f7ff97b0549c02
+b7644aba81d58981e80cf430002641d19da5e4f40ad253a82ed9fc8c9c069d01
+5ff690d95b16e97d702b236836b415c9e89dcec13e85ba1a36a09122a8714288
+9df599be286e9b7ce4dcea0c80b687ba9f6aa830e451958745c757bb20539da5
+f3e30900492adf87b21987ef03ac62ae39029c88f1c92109b228db84dc24e91f
+e3cd169b26fd6885b64478b73db9686bf3f9ca7dbaac2e75a653d19b4f0da713
+6a5197cb80902e0ad8faefc1f3bbf255383f5be1e369df6d342863452b47122b
+38728937b58fdaef7c1232a4300b4efea62a50c5502fe95c023eef16db356446
+042c11bcd137b5feda9edcd2025e55178de200a61460e1651bf5db9af1704c20
+3a588b378ce438ce25b9f0913efcdc2d7a34d073d7b793e11f2bfd586f825a12
+c5a929bc8594c85d9710e5a60f8da26b56b0c70a517813ccafa5b24212185021
+2f497e2f867e1f409aa04041475079016956d696a15432bf534d21e6300a4ab3
+441a866598015a30ab8f47894a49fb45bb9b2c090dce864db5e2fba533cb0889
+1793a7f64a4dd2779fbb05b16e3d21b1cc3cad9f744960d5db6287e250b9918c
+5e06cd9302dcb13cccd14216dcaa504ba81e358187954c1a523edff07841c1a9
+228cab5403d4f750c094c5233a992700b68acf468b7fd1921a28d6caf03a9f87
+0da068bba214d1d2f30148a5214762739c2068726b7c40c6cd50dc9c3d60b216
+640d07401cd2a59f94aad95272ddc080837c5e12f17fe7d1fb05f8d89ecc7c91
+754df6595e1a0ba73200b78121e6829a3a60173b876cb2de11a8415520c220a0
+6e54950577c9f1ce50b690fd6063cd2af6931850b1bbe6821997ceb8ea6db172
+f3fdb614170b1b9410b564753164e011e1f8781b2884c8e7a98fb104c6e74776
+d0481b5d189ac138036d6a7a5e4043eca5984edab9cf7e832df7138ae1f61c16
+23bb10cb723f8d64c2257f51215ed70ae3ef6155c67ba01d891d123c433c8740
+1ee6fd858e083b7c5c0fd738fec99d685a0d6a2890535034a8ea934a270b5b5b
+9c77d8f09c007d162a170fdd325d40a46b7c4f2a4f545794ac187453b924251f
+c977d0cafb828655ad5fa0aa5d63591d15757bc869abf269f9bcaceb6261487a
+7d641d167509d6783134984380747972de8fc2f48f94534ea200dbe6f5c3f11b
+c3450beb34753256fa61c73204d2b1c0829a52840b3f4e637a68a80a16ebbd07
+46dee7ddbd6ddf5226f1af18b779c8a59fd4f0dcb09cf5f7fdb6d4b4b2262765
+39105050f66acd8f3c303ad393226ebad65bd0cd8e7d460bd92915a138f79872
+debaab488ade9feeda70e23b1d9e73fbfec9cae03c3eae3b005e873a3650ba86
+d4d636d2934cce48e910429cc9edc2abd59e350a701090b0bf5b323e69d12e36
+223af8180c6bac17583b448169f26e2a42d98289eb3c233fded199f9828ddc24
+3fb049f8d19e0266d134578ee890c9a65eab81faecf3d3128fbdf8f90f8d0266
+c38e069be4c3d2024c06fdc7de9713c0e58f86f3f9ffa085e26b669582469f56
+2cf3fbbf2e8ff2fb57b6ece2f56984ac7d880e67b01030e9cfbe453fa3816ec0
+9dd55edae4d86f0e2f0a1405c3c2275ceda54d1ac22c67f1305f969f58b7d003
+1679b00a888515705370ec1b3811062ec4edcaf23026d7dd146ad8f23b02b4a6
+3aa61e3ee37f70df14b94e4a233e884e7ee5350d59eec521d7c66c343a02ecbd
+6d73675a847e73d9ceb6aae949798b5295a6fa1cb0ed158691755186bcf997bc
+8502b245c909fce2528091af4fd5a74c7c29c7c0ac79f3fda6dce962506e8346
+53e839902442958047c006324c24efcc9e79ffa529b797c15bcf69b173c1fc8c
+a9489c139e6be805f592f0921d01caf30140bf6ae680152761313ea0e4464096
+56a7c39f6a1e9e3f9c41baed8ed4d437fb5359691ae061071efb3814058769f5
+38da2b7f7163b9414e390dc456cc09ec4b045e92028f338217003e529d00cc4c
+7590c0b9c68d732357a6f675a716074f029f1f5af1250f08b1865d98f399c760
+d75b86aba072d7e9991dc20d43eb226b0e468b5c2dae1dd1fcc397dc12488909
+64cb5622aa769c73c7c84951080d88d472c3480d21c3a1048ec530bcca4e163a
+ba5ff22a0e8dc8abdb52508e6aaaf69f3c02d0c8e594901ac0e2564a3191055a
+e84168f93e71f797c60b08618d9f4f30aac474715a74edb9d53df078232baf76
+3f76e5aeb002025d06cdf6dfeb37a9274be7aae8964264f5f1d971d9c9e7da57
+bdc8423b6990019d51681ec964d416ba391e9c034af9746314018c32a09ff45a
+d70f902d76772995af38007de9790f4eb60c6b261daacc27eb6f24e99297785e
+0d45acebfb363cce0fe90fc7b85d722a6966228881bb659eacc210342b52a948
+0ef6016a628e977f1f7ab387c3ed0545fb42c7195962e11f996541267f0cc247
+0fe3c3b7c1938d03e3081137e894036535e7c9f284d1c3b17ce015a523c49c9f
+059678c909d5f582225c0e9eb7ac2f991f9c4390f41f7240490b5969115dc20e
+74b8347b2cf2950209832da81e586387392e48a68f0d7fb2d652b40c9c11bb12
+9af241aa371859824873f5ad119f64699b31b56ba4b5a3237a12875e50120e5e
+1d0375b5547a4272ead01f0bb7d45e774b8fce6f503a92d6205959b130b049dc
+7eee687933973bd5c1301a636df4fb2809b0aecba83bb1dcb1b08eb5f52247d1
+b46a0b5a713f418da2c1be472747f4479e1bd74fe68e3c2fcd2decec057ba1c1
+cb8a00c65362510b336fc0b66d5b352bd9e34ffb932b332e69bde8393ffeaead
+309c54f6f7ee56e10e047554138ba59dfea085c22535f28aa838aa4119d9c237
+a03addaaedb5c8344ac01ee9d02bb795ad5a2404f72d7c5751eff300beeaea20
+0cf30274a3dfac0ce3aa649ed4ab0a5611d6d871382be99219bb45b692ab8720
+c7958fb256207306014028caf866963fe004670833a19c5bb410fde61cc24795
+0a2d9b7e90991f2d6dc10dc1c03993c643f1af2cf055bedec799e12ed9113457
+83216896f3384210d49ba2cf31ed5be0a2aaf48ac21698d6a2dd5fb346754580
+03fa4cb1a1e9d06951d91dd616db1cb192072b2b61945b73bb52b7ecaa7dd849
+c34183cf3a2db928c18a45b0f18bf4107c8e4152158ad161bd37c7146b19d2d4
+576e9ec1634528235c6eac20b06fa540d2d183c55830333b15d714ee0734bd91
+f3bc9b8f81a9cfb46d5511b3415d43194618b5dea8591fb662fe26c3788c6b56
+625d178bbe99263761ed39a7570b753d6da070e60b7f737cfe3d41ceedef8205
+b9120a92fb99238e32b42a0488dc9ee01fd3f1d7fcfb5bc7365ac898575a2047
+b8f52b24812863228eb0e0784315524e96cd448618c1352e8d7096d4476744e3
+8da54d972e39d0875068518a9cbb600c9f3fdab4868c1ca87437d00d54a1646b
+c6338f1cf82513c28838ab9fbcd8a09c63144db7025c9183b512e5488abe15e3
+0f8ef4bf3794761c4e4c77f5f1b19ed2500169433f672679461fe9522f99dd6b
+80a6eae0733ce31682f1809bea6ad0497396ecb68c681c495378508c9901ca0d
+36e0b67c3d93468bf10b2431e21b75020aee51ce2d837e36eb8c0e0e9ad0adbd
+df2583fc2d29fecfa68d73f20208e448ef4bff5882fbc499721bb146b7ec0cd5
+39e0ec3b215c1ebfe7b1faafd432e4d395fa239fb222230fc2df10e3a0e71733
+ac55192cc97292a7654b96697a9a732eb23c7bc6e99dc41b0d0463d47e73b725
+ebb326c3d39c42081383cf4b3d9a8aa8d4a72b04b7046a0a5af5629c268737dc
+b2c547bf7fb474592f5d282504821e20853bf5312902d1b218b372a4e7690a6a
+fa3e04d2f897d00d3d4fafb7958187c995d49658cefe91715e8f6b394783dfcf
+2a4f92dea0992cff4cd56dbf5769448bd29a8eebd93c72211fd7b379961ccece
+416711216702ba44fdb3f44939338214aa28514d6cd8e346e582d661b522f3d2
+893dbe2d43b22d68f09b8ccb05299ba85b678d1ec98ccc7c5eecd52e3bc9355a
+581fc76252c1b2ea92c2e4df2c11221c728580840addd368ab88f4af0b73aa2c
+4b735423879f680a64f7bc9da11a1ef93ea142e00c14768ba5a330a1ebdf1431
+6707fe6a51122f8b9eb03ad2104eadecace0a1348d740653101258e539b568ad
+25cf455181209c3cee0b6809505c4f8276956769539dd364249652ac20b65c14
+8ce7a8c8219e9507a8b0c8b7b0251b6295041fdcae3ef218a8b8ae86c39295f7
+5296d8bafa49df7f12b498f17061fad8fcf2f874e7c58236128b65229eee9a6c
+45bc9227115eb126770afc98124732ce83bbc8815532805b9d615c92213d02c9
+abc61879a16e037a942942f1c0d40197303b1cfd2df31cd349cb8f7516642d81
+1fc375e812c49208305d891427bf87147fcb039ec979cc1ace803ac3249ce93e
+3e2a37394742d929f91fb62c7a7201979fac6b4b53e31f65c38a7d2270d95fe8
+f50e15ab4c5d553538ceb5eecd7015722329abb18425f3181966285c4c9e3278
+2896165ba2a3baa0a82b1491de2a59d519e1169a6e3b5657abdd14069db3c6c8
+a21f43179334499e4c35a9f0f9d833a21a3834521ff1980aa08a5d51e6393f5a
+58aa07f4e9d7595501d22b0e9f780454c529eda891234c7fecfc62093362a28f
+e39fb51a62e64ba92abc42d327a8901e1cae394295e4c0719247889e8492f743
+803db1d45baac20ab749936139c05b9394e50599135fe973216ab182b91208e3
+1b26aa007f25cba05565d495ebbbaa605f748ceab4700055f6065355abf862d2
+9c21aa7bf781225daaaa64633554aca60d568563b97f7fa42b5573a0bf76a876
+2d427e82fb2ec4116a955fbe3adda622d7161303df18470cb1319c5dc4066c06
+6770e3e92c74a429f12538f3dc128c83987066be62c986229946e0b23b4565b4
+a4d0b265aaf01357c59822dfbb451a5f3857105415a3a533839d9e346d9b342f
+92a731e82deba15661b958828cab32156daa66d475295675e16d15016d5640b3
+4e555574a499e741d22371fe491f67ad82e5a00f5bb5f7ece2b116578d4239b7
+5817f49331396cdee3c3907c63ceaf2afc3c642e751b08535922ed08a9c38275
+2ead6055aada15ec12bfe893e3da4ee6aa9565ba552a687ffede18b2b1b6a012
+55b0f93f6ac09cdafd5eb67da983ea0d49c2cb7c6bd1fffefbbfaffffc7d3eaf
+ce0f253afdf9b70bdf68906369182db9c542e09111c659f8a991ca67d955b1f6
+21bd7b3797ee721d1e656da66685e75b37a29c5d6e5a28dfa595e48bfeb92d76
+d4eea6b8f971907b3743be52ea17e4db8e1fe098dde4495389287e7f68c397fc
+04cde0e382868d0ef8ed6a7b18cf7aa1371cb03c71dbee41ce507f1da49bc985
+1ce176cdcd2ad0bfab09df6598778eff5a16bcd16925fec8f3d99ddd1ecebe0c
+1add1c36b6a39bc4fbb0b0b4f4004e4c410b539582a6e93cb24aff564a63a697
+f10d1ac1d328e5c244e5cff44d365ce8717e24a87126e62bd4b175261d04f492
+716fa14caf3ddeeffebb41cb2d337df9728382cce518c56a99df5536ef05f8a8
+0410dfa0d0b945d037edb67bf901de78a8c9ce8c846f39d4a633630b52eedb25
+e3858598db6df846c3b6a3436fa07e1adc2dcb13b1a491ce79c7b50082fbcc2c
+0ebf9473c050154d6d55514d9a2fa853ef1370cede3aff8b2e91bfbf40be349d
+ac5796ec8bb9f38d4b67887911e3920d412a43df8ae20f3aeb4a67cb34387cc1
+10ffb0809f7e80627fedcca5e31790c4ec3c75f641d7602866bc048ad15d413d
+47818c6a3bc3384e26a8cb51451a39a94e5ee31b74e86d5f8673180bdbbefa22
+e9f362e2b3256f48008dd2284777637aa5ca936525b49876c34ead2de6f771ac
+017be18cbc2f82db2b4bf708a0e9f20ff2f7566d48deab9708f72dbf7c71e55b
+6c79e694ba94318e44cd5b387844ece3ecfefd26674775fc75376570b5977d29
+8f90d91c558c810081ac9b67fada826f8b3d403bb1f93924a6a25e90cc6f0985
+2c03dcce1544d0ec9876c3fa1a8baa5ff7b1153e3dabc1edc7a04d459d3069c3
+0930f3dc695d742aa92cf1433796954f2e8b0196e6c24be19beb655a761bb9f2
+51595b7eb73746b8d21196d74ef26699abee97a50a1dd45f8bdf101ac9d59796
+b3b5a7a33e6bcad89baebc180d76ddf9f9a14e8fbcaa69c88018259f17972f2e
+5dbbac407703e9567ff266228753563330c195c09737471b59594deef376bfd0
+3402270b939ef35ea170ff5e6e546819cb90b72681663ea433659be24f4e897e
+5f38bee227143471e4cc4259ac02060e7e54d1235a180b634492aca8d0333052
+6eac423566fc38d52a633612afb494f778137d968068dd0c986fd0abda536e2c
+e5d9c1b4204a6b2aa9a3d78be1998772a33b232768aa0d3daf0899bc0486982b
+439c262f02fcc8b62fb8f76ebc7f278d1edc84ebdb72ef10d9b42f7bde0483ab
+e52ad39732f3760a8c8d83a94aec9bdc68b8f849e16576fd33fa95e1535eba2c
+7652a66ce691fc700a81376eb914cec4c4ad8636ded723d993d9be4ba0bebca0
+86734bc8f7ba77e63c72ebbba44bd2c72110bea196b4f797d3c79e3cbcbe0ca8
+549711e01bb3fdd886d4fdf504cfd2237451c9e252ec27734293013cd425ca93
+75a51fa7dd26f2642995b03cbeb4d69221afbc3d8c5d3850c47992b9fa288034
+25ca4ee6964db95de076b6c89ebc99f55ec34cbaf12a685daa306541a8008596
+62338beec647e67615d25c6ef1344cb4617fb85cb0f00e5889dca94a6a3bb3ec
+e662de50d27c43a969f789e9fa4b760f4df95ef74dfb8f16f829b2e11b0d9c93
+1faf505ea4d4beb4a3a7fc09b5488acfa9905aea2e93572b7cf6bd3e2b5ae809
+38a9e54df9688eaf5064271b93d272db6b14c751b5823b2c9ba432a165d37123
+a7a9701ee49cc87ca2b95d4fdb4270ba6efcbd4e95c79549c379f5c8769af376
+72a6c2b525bdd2dc228c871a1e1e1b8eae0af04f9c32823a12c88a863e3e6f25
+ff470654338c7a3d8a53ddc0d77ae4eb30349bfb5d854874cf890b8dacf74491
+cb32abbbdd43cadb435864d3f4c80b03df160ef3fb4783c1627946a74b86ac7b
+9212f4bc74d3982f6161177d09cbc83175328c445fcd23b459d60cc76d9c14b1
+72b3f20825e545146ffecaddaf0d263b6b4e797774dea7b1bd2bef899e64b725
+cb80cc69696f8f36f7795df72e02ee5b9a6b4e7599d31665e6e6702317e29674
+b5b76d66698473dafb7c6124e8d1e8591c944773d13d876d357d73d9b9e91073
+c9dd747ccbc6de2a05aa8d0bfe7418b172e6f93c2e746ed8cb529de7f7c68547
+1efde7268d2c573673892e3cb0e5d1dff50799a5cd6e8bd282f981a67b455405
+f7518ca4e5d5524bb08a7b158a3754de99fcd259b0ee6df11a2d6356ba2b222c
+835cfaabbfe85ed6f70957dccc782d940f5e049d9093c5da56cc1e50b5d884cf
+b918ccf2bdc94ae0e70b0a64346bf0abfa12a1a49d3edc2eea9c6adaf9f10921
+9dafc3149731a9f45dea797d27d45f1571bbd3dc1daf188fb21d6454a9625fde
+db1c34dcf7b5ba0cf77076c545d72d211a784f320738981166ecea5204a39657
+6fee54e82e6211340288992874e9e62ba36e43718ea843a8c6d661b88f323b4b
+7ee196e4df9e9ea38d4b4ed59c4d750b6b406b1d4745ec5441981e97ac097ee9
+5b18f96dc9ada982dd190922cd0b63f7d5fdb3c506c9a5b353e444eb06cdd127
+8aaa2c98d77c1f854da4e59cfb1fccd125645d3c9aebc6154ba5683aacde32f7
+66b9ae8aa174619028f32aaf345ecbc0cabb55096e607570956027f41d34d9b0
+c0c379a1389f67a887d9fc3c6e8200d54c4cb65fa2d69b6943336cddeb50e8c8
+28bafc842c8440dc7b55115fd0e9e8be80f1f838a6cd032d5bb7791812bd848f
+80035282506553eac8893d8ed55ebc00eadb6fb9dbba1d3e8cfe2a62b61f85df
+d7fd023c46602a79538cc23e59e396b62bb36c7d194061b9c8cd80b81e280af0
+9fbc22b8dca4546bccbb284dcbb50c693f17c5c8f7fae1a8bd6960f0b52d010a
+f593ad25a050e5cb9ddd7773f150540fd5509fcc9ee4989ba3845bd7d467e55b
+3c3f6e5aed6149f129d2c97e3bf3d6aedb83006f7680226dd07caa8255bce44c
+a74736a48f7428dd5bb74df07318ffce7beff6b0f7dda5328678b2332e5fbaa7
+e8c91623fa77f7a6c83b7b5c77386b30d26ddc247a7c9f90dcdc2dfd0dcdeefc
+d72391c0e7f37a45583a3b2f7e76cee5adf72a07e9c86b7de8c9390c042ab960
+0b0a9fb5b8ed3f25e2cb89a6f4df3362ae453079a1e06f03f591ad0a51bc2ce3
+fca09f9beec7aaaac47ce83c6f555380cad0f541c2e3ceebe869f56a24e96da7
+5f3e1d3dbdd94f7f175abe24d7332d5ba5ac5138002ac1ce4cc4768fc2a21edb
+f3faa979ef57e73d512c494b6f97cf9a920b59dab26aa34d198a5a84e14b6cb9
+0dde7d7d6cdfb23f85792b79ada64a19df8a6065eb12ca9df62faf2840293fdd
+7453b6ca9040d9b7a7606bdbeeebc5dedcf6cbe952977ef3b9dc3233bd47e51b
+2fe4afb072221cef4fee0ce5a3e7adc0058505d7be863e3b8962703501a905d5
+86e11a7872e08b53d2136ece9b2beabd81946fd03eed794deb96f7ae671213ca
+a286e6d49febb5c662f54fcfcb64b732dffafd2470c1748018cde7cdd033556e
+abaa44cfab63b792defbeb83de025cf42c37b21533ee6911ff131751c815f59a
+0b7f8686f41f5c64277f905bbed14259979faaadcb9be3276ad3f55249f332bc
+7f9ff8f717fefa06afdba345d67d59746dac93d65db0af362102dfbab3b52966
+36187e6aca591a8e32f08fb8f8f991e7868f93c94d83536bd3bd7e027136a1c4
+586b91b35f91bd845f770a42d0aa0f9838d326672142480ea723d17a710f1108
+7a2796c9b2ffcc32af10a2246d2e89f9472d88fcbae46ed0e413a055374329e1
+59be3e147d157b7061a3a0955f6db064d0541ddb7b856077a2a16f540d9a7674
+f3a598c1f095826d83016fd0a2be45bd2b6e9bc795ae55aa5efc02fd5bad3a9f
+419dd2c5504d83a0d605d9b8ffa27fdc44e60402e3b5baa153aa0dca51b0c673
+2a411a856e68d30362dccbd59d9bb4b09937ec720c8b41d729a9c621642dec78
+5f86d6c832cf5a88f6e309846319606408bfb322edfd41bcb01d8274b5eaaefb
+00aa2bf38625a254df96456ff81bbe178bf8ae6ec86142b17b25c60e6abb3f51
+a5761ec982da7dcd917dfa219a55ea67bb8a5545bac172f217efb13bc2a136dd
+d073045115aeaac9979a777d042da3c1ca75450ec792ebc05899e6b23eaedd1b
+5f63de9a0a9b5eaadc6da406d78feb9937278b37c95b65f5b6582423698b2581
+741540edb21993e6121b89924f74c20f00f4735975d125d14ad9e05ab8f10348
+48e28d170f0f02c1fae762b0e29b0cd21c177eac9d999a107c446757e7506d07
+8c3d45bab57ee8d2a34399322d2a6390542fc6cbd1ba74e7745807ad22a4be31
+936fa0a4fe4c19c1452558446e767e13537a14a7e4c201c072c56fb4d80891ec
+abcd7756e8f0b4ada8ce514550de5ca614c421b1559bbd2e8fc2d664ab4cbcc8
+54addac47660bffab22779a18a7ca641abdad9c8c0666dae2f488d9fe97bd072
+da65fd8f6f7ac8aae6b7c5b5920960a92c66c670ad002e2c626e3d4598988174
+afa9ebe6945a33ed13ad5521e5ccef35e4a5522f51160b203ad05bdceddaa454
+c144cba9aabea6c6578637ea8759af39c6add21eef95b7ad2b65f7b18f846c86
+dad932c99299598e912d6ddda460ca4426990d1ff1a1d277ed5e3a69a15a120b
+8beb22b612f578c9de70cde0b4612937371550b2bae652542eee529942d4e5e5
+3bde1f52597d1155453ad9966f8018b1b66c475e201f98cda38c45c287bbae95
+29c209542456612b3fdd08e85e95e0565248d5a33452b93d7a97955dabef29a2
+4080c95a8590ed06e726c4bc0b5f59db7bf57016a212780b2f8c79b14a9d575e
+fca80a54bbee3783938b3d50912c809934205bb817c38e84b74de896e409b264
+e1e2a9899e927ca9595a82cbb674d1996effec346d0d174e6da596f772c4ea07
+ccef7cfd652d4e2e62e59a4b1202a6e25cf9008b5c31db4bba030cfc235f8627
+a9b2c4fec738ce0a6b72b4ac5651218c9b8af038f5e7b628d6f98d163199bf5b
+30d3ce7aafba20913341bc9e2ed3c23c254acc05a4aaa1e735eb27e5ee537c09
+6b6b347cb397b5c9e6e14c40c02684b8f99e9b76731ac87df68b44438eb62e89
+d0312e3eadef45b3d555a0bcc15a73d9976dec5b17d8bb274e1187accacb4a30
+dd76dd33c32a29b9a95ea4341460725c512f47b09d65540558652b4de3da5571
+b2fa420a0a5038217d731795894708ff61ed42499aae9f0561b71b95368af3a2
+2485d2f2d4e303d0e28aefa842179e45ad4fb79e3c52248b9dd7d14057732b3e
+328a5db4bcb8b21d831ab3801dcf4c583b987caaaa904cf523d57b2b57f3163e
+219319aecc26a6a335dacedd9e1addcadee0c69ea6ba63e29bcc6aaa4efba928
+6ce03264decc6dd8ed25af46d385540092ea7caaa0076879f62aca4134552e23
+c4b2198837ef1e91a76ebd6cb12ac7c05e1bd2188baa16d4569d07329d18ce96
+f63aca489746b7967840d217f07b5b383bdf6f4371e8a152b16ebe30bea27613
+ef74bdd7aaeaa65cd68882eadd74135a5eae2b89b7b384d4ef6b5cb67a1919bc
+ebad19ce0b71c4e7879dd994484365b008a86daadd921b832b07bc6cb96789b8
+f9eb7b937eb2e99a43124c633d4016c4b32a0a8586bff0f8f297ed41277356f5
+a3561309df14f4bf6316e76c6de8a4a2ea7b6fafa24b57238ccb610daeeb922a
+267d7601eeb0c1b60f77e14680a025b3e82ac0d9d63d592adbb55f7b4940f676
+ef8e16bcbaf94e6e9a0e389be74e2a4c22f8057cd70ecc1b54193ca9fbfe6d89
+d22df05fbffe3f95e6866c>
+endstream
+endobj
+
+6 0 obj
+<</Type/Metadata/Subtype/XML/Length 2438/Filter/ASCIIHexDecode>>
+stream
+3c3f787061636b657420626567696e3d27efbbbf272069643d2757354d304d70
+43656869487a7265537a4e54637a6b633964273f3e0a3c3f61646f62652d7861
+702d66696c74657273206573633d2243524c46223f3e0a3c783a786d706d6574
+6120786d6c6e733a783d2761646f62653a6e733a6d6574612f2720783a786d70
+746b3d27584d5020746f6f6c6b697420322e392e312d31332c206672616d6577
+6f726b20312e36273e0a3c7264663a52444620786d6c6e733a7264663d276874
+74703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73
+796e7461782d6e73232720786d6c6e733a69583d27687474703a2f2f6e732e61
+646f62652e636f6d2f69582f312e302f273e0a3c7264663a4465736372697074
+696f6e207264663a61626f75743d222220786d6c6e733a7064663d2768747470
+3a2f2f6e732e61646f62652e636f6d2f7064662f312e332f27207064663a5072
+6f64756365723d2747504c2047686f73747363726970742031302e30342e3027
+2f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d2222
+20786d6c6e733a786d703d27687474703a2f2f6e732e61646f62652e636f6d2f
+7861702f312e302f273e3c786d703a4d6f64696679446174653e323032352d30
+332d30335432323a35373a35302b30383a30303c2f786d703a4d6f6469667944
+6174653e0a3c786d703a437265617465446174653e323032352d30332d303354
+32323a35373a35302b30383a30303c2f786d703a437265617465446174653e0a
+3c786d703a43726561746f72546f6f6c3e496e6b736361706520312e34202868
+747470733a2f2f696e6b73636170652e6f7267293c2f786d703a43726561746f
+72546f6f6c3e3c2f7264663a4465736372697074696f6e3e0a3c7264663a4465
+736372697074696f6e207264663a61626f75743d222220786d6c6e733a786170
+4d4d3d27687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f
+6d6d2f27207861704d4d3a446f63756d656e7449443d27757569643a36643133
+353335612d333035632d313166622d303030302d623034313865333362633137
+272f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d22
+2220786d6c6e733a64633d27687474703a2f2f7075726c2e6f72672f64632f65
+6c656d656e74732f312e312f272064633a666f726d61743d276170706c696361
+74696f6e2f706466273e3c64633a7469746c653e3c7264663a416c743e3c7264
+663a6c6920786d6c3a6c616e673d27782d64656661756c74273e556e7469746c
+65643c2f7264663a6c693e3c2f7264663a416c743e3c2f64633a7469746c653e
+3c2f7264663a4465736372697074696f6e3e0a3c2f7264663a5244463e0a3c2f
+783a786d706d6574613e0a202020202020202020202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020200a202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020202020202020202020200a3c3f78
+7061636b657420656e643d2777273f3e>
+endstream
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000016 00000 n
+0000000077 00000 n
+0000000250 00000 n
+0000000302 00000 n
+0000000410 00000 n
+0000031136 00000 n
+
+trailer
+<</Size 7/Info 2 0 R/Root 1 0 R/ID[<8B24557E03BAEE6073F397ACD8FBDB08><8B24557E03BAEE6073F397ACD8FBDB08>]>>
+startxref
+33673
+%%%EOF
+%</hdutitle>
+%<*hdubadge>
+%%PDF-1.7
+%%µ¶
+
+1 0 obj
+<</Type/Catalog/Pages 3 0 R/Metadata 6 0 R>>
+endobj
+
+2 0 obj
+<</Producer(GPL Ghostscript 10.04.0)/CreationDate(D:20250303000000+08'00')/ModDate(D:20250303000000+08'00')/Creator(Inkscape 1.4 \(https://inkscape.org\))>>
+endobj
+
+3 0 obj
+<</Type/Pages/Kids[4 0 R]/Count 1>>
+endobj
+
+4 0 obj
+<</Type/Page/MediaBox[0 0 357 90]/Parent 3 0 R/Resources<</ProcSet[/PDF]>>/Contents 5 0 R>>
+endobj
+
+5 0 obj
+<</Length 88240/Filter[/ASCIIHexDecode/FlateDecode]>>
+stream
+789c7c7d498e1d4990dd9ea7c87503227c1e4ea2031424d52229a0fbfe0bf91b
+cc233ec9166a5134cb88f8113e98dbf8ec3fbfd2cffc95f09fffffcfaf1fe79f
+65d7dd0faf8c32f88fbeea5eedebbffecf8f3c52fd59cb57cbed676d5fbf7ee4
+beebcf0ec6f8b9d7faca7db69fe7da56cacf54f3a1c7fcb9fa57abe7e9e7ead1
+cf65872a3f73c3d541f79f7de3e6f473b72071fddc3f470ec6f761acfeb3cce7
+86b5cefb1e72fc6c0df4799bd92f8d27ec795ee4b962a4f2b30dd233936e3f37
+e88defc51d238d9f657fb596f81323e901adfc1ce390399d7ff79fadf2dabc7e
+a6f37bbdfe4ce73d2e3dce306edc9c374763e69fa365de710606e3b1931e57fa
+cfbabf7af670e186f39abdf2cffe853a0ea3f1fd0e3d3100bd9e614dfc85f321
+e5abb77ce665e98efe73aec3993f67d50d6992dc24eb1988af7ede186fc8ebf3
+cf9d0f871f75bef7bcf2b9bd4fbf1186a31fbafcec1a9ec21738cfeb1353b830
+72e785f8a587d4e57e3fcee179435c90b1500e997941394386191b8d1f7c1654
+cc583f4ffaea691d0616d079d37566fccc2306acb77d166bdbe5cc9a2e3f93b1
+ce1238af3127fe9e7ea633e267619485dbb152f2a571c319f2355e5794860f26
+5df14125714ded33e2593f91b50436161bee38b375567f3f7b818b309f557b28
+2e7c5c7e5efdec919e624b9ceb563df4995ad1e715cf179e71d79a6867d5628e
+cf18ac791ed8d659c56746cecfe223739b67ac0f597f8ec925dace90628e0e87
+af0cba56aea2b17943ffe94535757dc1e0f4a42571c9b32a7977c604b53db0f7
+79fdd86772cf9078d1b581b13acbb8fd4c24f1c16d70e7e3f2ce0f6e98b874c6
+a761299ddbfb79ab499a6b0efff31c34cce2e1b4c17d91f10fec93b3c9f2269d
+b4cdb9987043e5aa6b65415e64fc1ffbbc6c7d90760db85582a36151e382b35b
+7001e662f3797916d1599bfa2c5cde90b48cda1107855768959c65de8aef386f
+da7af2d66f097ff9c2b7f28db46d381458147881c5319a599f9c3947982a483e
+bcf2d6b2e5009c4578045d4f1a005c7fbe6d601287c6bc26ed7b4edd21333e88
+bb30c6674f6ee2c5d739f2e23cb78fc25d0f120be6cc74f6123afbe2eca77ea6
+98cf3b03b5cef3f6d99c991370d6c62539634750e5cbf906a79dc13b9c74c40d
+6f9990ac10c9d8d898e2f3819007476468999c973ddb6659d6b581677d41c657
+2e9b21d131b893b90c39cbe790c01fcfda3dff4c1aed7350e4f35b7d845cc592
+07e7bc84b6c0e241453977c4463bef7d269c372ced39aea41e921a237f9652c7
+3b6000b057b0c727c47591143832f93c119bb172db37deb178e41c520f5c1885
+2b68cef55b4f3892489f7736fb2a1003adf206d31465dc15cf155db27f73e91d
+51a96f7826a59fe57556390e45ce3a8429a719ab427fd5a45b120fedfbf33f6c
+8adecf9a3b77371d7d0f9d430e04a71e59ddf9065e84e74bd6d62f34deb02dbb
+cff0252ccb214986d37f63d82569f02a58b56795560fead90e1d1379040ed585
+a9d3e4e8059a168ceee69ac89a682ca873c4722917ab001d74b570c68e02ddb8
+aa7862257c2f2ee4d63c4738c41386955f310a04eb170e7acfdc281c789c8c52
+1ace179edf1c254ba28fb319e62571433b02b2bd2ee814d0387b79060f1e4ae3
+ac9824f93406950c1cae3835c7e0f68d5738b456f31e31d5439a12269f238b07
+f4c2e5463de2908b9b0d9fc4eb170e271dbed01b064fd5612d60528ce1903fef
+cceb2737fc39c513c7e890f58c51e1d0f16eacf5c483cf8f9f996acc6e59bf7f
+46bd2dee2fbe6d3de4d9946df87d748c8f242da373b740669c23ea9067b77d59
+68e1eacebdd28a84e5380ba683949273861bfb9e4a67a85595ea19a4f05593ce
+80b633d55869bfe9adfffcf8dffff123d721e5f2ec9e7436f42f7016561b38f8
+6a90d0e6165488029aba17e85939ef153bea30a6afc7760005917ad61afe8f21
+2a1467b553324214e1a36ad71974e403e6e0d0d4db405b73aa9d0bb56dfd9e68
+e9217cc019bcbc758c4bc2d6b32e931413680a87e6fe4c7ea14361a79c3159be
+9c0a0c1591a5bf0f6911396888df5c2c8feb91f8e72c8c23a9f2f081fa7486f4
+501b8a742f3af4f9fa38023b4f167e9f8e241fd2fcfef318a8ba185d8e6695f4
+a070cf7551d8f7e6f3a26ee9c667bbcee543dbab5402e8d0fcde33f73999ecd2
+2da7cfec46e92206c9c5e1a954bb9224cb39f9b3364593c2c453590f3c4fce1c
+712936585e98d11daa228efd54384514e1a0c79db146355f8ae4d0e57c43a85e
+941ba0a9ec8e9f5483823c62d85a4170a8daf18158e63b5bafc9b41b82e62740
+845cceb706212f72b899ead6d6395b9783587792427d048c84d58b7336e59917
+6af03e6173c5f9dd82c4e5388acbebef3c59a14cf298ff6ddb692fa6050bea0b
+b79ecdf24b8c73377e0b2307f28c403dc29d739516f4b4af63a89ec3952f9996
+ccb6f375be6241eb6e4719e75e083acb6ee11dda8fe67c8323b5b4482de433cf
+af430c253e423a62d971b4a4a3cbf47539df2f8e75f734b93d20baa85724e9de
+4d82158fa04ef6057d90922b0de9b2479de0099806cf221ad83a64d3a02a86a5
+300aafa0a5cac58fa1ea503b4ce172d33e38525bba9a937848da8f267179d574
+8af1fdc1c01a2547e360cea1b9c8b32cbaa086b58ea0bded4142ec952c9d2259
+723f8769aad43a5a91ea06d21e051a9c970e27c1652cca85435323808a8cb328
+e9f0c6e192f5fca60d50a9e11d7272c69ae4d019afc4dbdb1533a9d3466d6de9
+85bace92731d55cde4b3ac5fb991860d9e1533c4d5da864c6c4c29cfc24d5b83
+8b80821bc68146742e7a55164526573fc85d4243c1ca5c328af90a4bca36ce67
+ecb1b4a5ab9ac60dc1f12e4f5bda68b6cd167fcf577c63b5d34cb515e72dfad0
+93db07c234277f85b4bfec893b2a59e1e932b87b66a25fe28828edfb330e3c40
+920f088c12cdd2ee8f3afa2e74c3d74aa61507fbb972a5795e763ce0cc086cb6
+475c626ea7e4a3beba5589265b75890627255bf30ddc9714564d4b0902e09c44
+54b053e549dfe6b6ad9f2abe91461d5ea0484f99b131ce2ec74e7ddc3f29eb95
+a7779f6c0aae04e87dc9bea7b1e37d126d245a4267316e1f14a0cf7b6da912bc
+9c7b672f8c28ada333507b490f80bd8f137de333b0f72714013c7f4fad287818
+06ef48fcf6f371fbfc0f2a37fc22f214e1e1990a4ca2c6725e842f05f745da7c
+196cc3ade93bd76fa967381eb5c6743c1f093d387d49beaf7495d6244f8aced0
+43c904c371cee93d9a461aa193e27279037ad147502e41ab9573407339e9784a
+ddb3bba8e1d4e6e13e0b66363aab38db67bf16ea1bfa00ca62d8e0dd5a6e923b
+126ab34491ce145a275aa1f6e44c7b72d2d9b119065a96680cf2c8c2ed1bc4d9
+d29b71ff79c1917cea05b9f938ff0038590a42da90eda358cbc5a63ef78d422d
+9f97d33333aa9d6967ccb1fea13fe37a9067bd42fb6e1244e41cbba45b7f017d
+e6688cf8e2cd133268fe8438cf27534a8e652d32274af3b166b85a72e2cb0fbb
+3ece1d18fdb16dc065080cd02da4633e5a4e3b6fbdad8767889c43da999333a7
+1db436652e54d366f2319e0bdd57f8058d42a50f3668dc111cebe2b9d26577a4
+0875a04353808f2dc9c33b30a4e723a4138184c568774a905366adaf076768ea
+0f7dbefabc53b7f323eb941d2da68e8c43cb0b9de14f3ddf5cbb9c2da08f5235
+7ce6f1fa499b540e1f509df62795a1a3f4e1901d39ecb7dcf4c1473ba260cc8d
+7b6b842c068de73f7b3337edc6d8cca069554f7f806cb27e648c4dbe0c2bb971
+772cbd846c79d9457c053cb0bdc648a67bb111ea59e972cd057914c798b24c35
+122a4950d88989d7ca5482c9c52503518143fd6a195824509d6b96819c0b3d11
+2d6c895c149ac8d7b10ece79d16a6dffd0fc9eba96a6a8c0bd7954d811ba772e
+b00ea1d372c6a1c0b443da9942fa5cff6801e09c578119c439283443612789e4
+7108abca4b3043b5fdaa6d789166fd40b3efe4c843ec44586d3eacf665d0ad01
+ade13cbff97b92ccd8daaf9f19caec997ddb65d26d0f153bfd4367971e5f063c
+23762e1e35be74a9c355266891690792265d91db11bad690cba96014e519a67b
+a764797abb9d3525d38908dfa19d54c5def9616778c99a4868c9698b86823da6
+d77ec90af94ce9cb20cbe0990ee15032ad649827768d9430b27c0a1c3d9e2af3
+965500926aca55ce8a0c6a1c7438564aa65a82738ed723b21114ae4e7cbfe7cf
+5834d7e40c3259d92de75f973e2b40facb949b262f852e86bdc2797a28ec823c
+eb5243655537db8bd34357cf43d64ae7c979c804eda6d9ff90bbbc3a4dda10ae
+3f1a585d8c9ef140cd74f193e62eec5209a445592474f9e1f97748a1cc5d2932
+3156d3ae7b30eb42440ea8da5bece18519bdcb8d0e00788e67de21d8a0515905
+a220ab4fe8022f008b5da4dfc80c6dea9e68b96a8bf62a7fd072a423cb850d8d
+875b72604340bfe1b13228a319eeb1c4985e0856baf3e400324e33402e46def2
+8d566628189d2a0fc77fc94d97438ac9f206edf739ab74373a4038bfdca03dce
+8085d983173a4dbf8e7c88c5b333e99f2e8e6a6131b44b7231c8c97e2fe8526e
+aa621a97861c9776129c6efd372b94376ca862803ae81541110c10a297336b04
+1dc7b27eca2f9897e4f7ca0113179cddc07802cfac92a87dcb41ec8d6837aa4d
+90628fbc457ca9b270d67523965614c3a0cbe2907cffa90f3cc28cc30c2fbb63
+c5a5d3c4e9d644703dbcaacd777391e180b3f656aaf4c726afc5791f86af3121
+d4888b0e80a0290e29ede1551b923d14b6f481e52ce15636cd381b61e020dc6a
+0d11d271298cd48bc529c81e5b180237694d62d1149930387329224a51a81162
+a7fa06392436df84649757937a41a949be240d6895c135adb79426dfd194fc8a
+e3613ed27c50c1a5c904e13c399690d512ee76c198c60d9bd1d4e70ab9c6b8a1
+71ae972dcff484e34c7e4945b45b1cc4654f093d4ffa961fb6dd0876d99cc826
+85e5bc83a2a1d2a90e5995c3707de905418c428f835e411f037a704ede87a4ce
+4dacfc232947d2a9f3ebe1e41064413f5be54ce878ec7570cead300624adb5db
+916190876e389f73362242bbafeb2b04209fc8e37f349f2553210d85d72d9ba0
+22c6d9c0bd39ba8db94c9949c341aecdbce83c472480b26ed1e7a1c00084cfd6
+af8feb65c4c9b6064d0b2a94253124ca4006a749be4dd0fa051cdc08b230c3e4
+59dba0ad5cd0d53646b87f4ba197640c2fbea3fae1fe1ef2c3748bd3f032ec3a
+3b4b1b0ae0a8d32b1f637fc8eb00c12f228c53ed1f2e856b1363ae8590e1b519
+250c157e41fb5212083f911a1c0252566512cdbb1ce743d1d21de14c93760035
+5fe7fbd6203fc91459abdf8a3fe527e6187e6c1a674b639cb8543cc930435288
+ec49f1019ac912bfad532ddeb5a5980f9ae3bfc0d08e1a363b77a249079aafbd
+132d832305f09b9b0a11763cb5d29de4849dcaaeb8d75ea98e9f8353c79c6f70
+28252165388e6b270a80816f5c6b4bdd6b714c5d4eba3753247df1df48850833
+e2f3cbcead7332768a237fd24f3da19c3a376532ee0aef3e4dbc29ab3f68dc2d
+b7d2eb0ac717bc5e8e8e83d18506e13c86b9758229a5e490e3fadc30b073d30a
+854b44590973f304d2ca3f5b54b93a4531f84333d289f345fea2c37184d783bf
+927eafda105e4961c6eab8d9d14064d435c7c957d191dd9b02b8ab2a863daeb8
+5d36fb143c3be40dace3bc39eb9611e2192955ab2b0824465e72a5c2a3420d73
+0d4a01dc6e69bb06171742c6d0734843e91a8e8980c601d7ef918767c013d915
+075f54876f86d452364b6fcf1b49416f7ee3c62dd5abccbec558300648420674
+e100a6a98bf17255527b359aa12679f5fe1c7f85f840f3bc5f5dc645bd8e5c8c
+0f3eafca7a59caade1efe3f73a3d91208754ee75545678986a6c872e85a0b6f8
+c5ad305c68c4972191c1012faf15d1790c206c57b7df480967c5673c68f8f58a
+ed50d05d3a8ad750d71ac9f2a763c09b1ccdb463d7701cf206bfd7a0a48dc0e3
+d276ec0eff1ea19643e5b11eb79c56f05ca10c2afb2ed6546249693e0b97d30e
+4abcc2b427421b7bc9ae7ae9656b4971ad361b16e36b9c37b883d656220648b9
+4f2012611c9873688e0686919e658848acd247fdde491b01cfbb7ff551b5b61c
+8f25c7a46dea24f842cdf2b6ef34b6cd76369168de7139bc033f81ec92ec8dbc
+13cfa2a0f94252beef1dd9d689531177962cc92bec9f1d1e5c67beedec6196bd
+b7e91f793e626b3e9e3f2bb3a3f09024c949988ea7ef2273a2ea380759b92f28
+5b831c363db7d2fc90ac82a3722b53b3dbf370681e6cd8f58e4ee0f3f0f3e69c
+01abca93b4317d0e19e5205dc7e65adaecc3f605682c92114f905a8c2cd79044
+61cf0c2f4cfaef7ba426ae2d7b602b02ce59b345230314938888bcb89c3338cc
+f64d50d8b205fbb69f6f23f645271e2d9a3d1493df2bfc2f5b7956f2a5e63d69
+3df708678356129895b63d9563b4b495f794287056ca9e3adfd6558df7540c7f
+d99fbc95cf8b0c26debf7a2451798e97ac198ecb9126740e613cf4fa5b8992bb
+4576d096f20e0e5d885b4733f4172a91fcfb17927e2d1e83119aca66ce01b264
+697123c6018f7aee8e39202cb28734302eb3a91f08b7e19edd2adb4afe62843f
+c1e011bc650b40c5e31e92360bd2d1dddde57a76cc795726798ce2bcc45d187c
+84966f37eb2ecc1241e6b0366e4614033a21a720d3c635c95d2c35de7f5ffafe
+ec402216357ce9257244b066a9a2faf0637a1bfdceb49d82861735ef58d2e450
+d3fc7e1872fd9c5fe02681d6cdf30462eecce1e811cec50bd233aee378cbd93f
+9c650891d217957acf7861960a329a968506266c59e5de59e3f764d9ed2cb5dd
+8b86233417695a67a0319efbe62e6d1b1adbbb94af04da8e919d69398e7d73c8
+77e26fcca4f82db6e919f369cf104f8b73bc800e9d56eb6c2a0b9163763e7e26
+9fc1ca769829db70c0795671b91d793801976226dc18d0798ae219a5c691cb4f
+08d1d4190923bdac15300873d72d4eed321502295264603e2e477f979cfb63dd
+28cd527ad10877cc6a541cc6729ec9aa3228d775a8af4a65654ccfd5aa943663
+7a695666d88ed923e8b21acfa8e048d7828517a75ea371ebec392b4b3b5f8b6f
+0d263021bb4ca360ba45b8f5329295cf2e832f3fd733ea7253b478c3a07ca07c
+a1f2a9b88a66baeb81a9870b8b2ae0a244a2f2d39412b9635c2b3f1e02def9f9
+1815ca78a71b40e3c61dcb3ed725031fb482902b5beada2bb5b2a38e4aab82ca
+8fe73d811a581145a11b9a319b1bb06b0d1e520ae456a084d72b13603be162ee
+22a35171d7207398b9935b8b42867fe64e8544cb4b24429225242c8ca0546425
+632d4f25f60c47756143618ecbd50ea732708373689e9a90a99c13d8615bd99b
+0eccd03293194d0d75ca979195c637a704d063454f1a968a86f117e447c700d0
+9e9d4366d8ba9ebe39944e3c3dad9321569a45ba430b13be416784ce9e65566c
+9b764a66e8ce780f32df3a86a9a4dae07cffe0430beb0ce84099a3bb2e819be3
+d374b506787eb12a9de597ec6232623f2e7a43eb88ed2267409d72475bcfc61d
+cba7db522ca82e1b6f5301ad75f3f297acc0ba436fee5480eab671d8196eaefb
+264c60bb24257e798b53b3af72c91f92a2b92ec52d7903e6b2424e49ea2888b6
+ec725d95bb007f0fe322d3695d232764b956003e110aefa4a2a4c7c54aa3bc28
+7498b7cdf645ff201d4f41f7ebb2b81c27a3cdadea0019a0d81f70518e9b1e8c
+3dd719d6d07ad399093704a5cadcaec778cc8bc448cd6cf65b2455bd4c27862f
+172bcc750f9cac489c331316d57c92dc742baba463856361c9b58527c0116121
+14992487564ad3e3aa5fcef31af66d63e011578bb0dca51f65d89c4e95920f80
+5fa6a9d48733b9e9668d9966841c5e559d79cd8964b17a830e5f34d60aab44e4
+19f789d6a450d12f71c41ca6390c79a575e5aa95d6e5574e6122769576e5abb9
+ade14c3e2b166bc8b97d75aba131ce574a6037c0bb1d92ead2d77541d509c984
+ce4801a772e5710c079df3eddaf64343f418ff6678b30c45cbaab57f2b017064
+efeb2b602a5c6ce7ae75d7aeed6fba850831a3671be64a14edc98e15054afbd5
+a4302474b5c71ce9bcc546b0dea2753b7ae404c7278ea5491b230aea34c44dae
+c09becbf14929b4ea4c72beccc65ab4954cae7bc5e67a839abbc5c875d6f38ad
+ad366ddc79a3c1583645be46bad96399c91fff9057a5306325bbbf286deebe6b
+0a3eaf9bc30d9d0601cc65d54ffeb1b642e17ee8d00f86229edbf9916b6a1b6d
+efd4e5eaae7bd2d0e8dc376c096574f7274b0bae03a695a730e1bbc23f54bf9b
+229e4a57da5e4056f9683e7262f0b534bf94113fb5e3f0c7a9c0bb8f83ad7200
+8483b042ce031dcb77546177a56a8e4841df4d21e8aeba81ed6abfb0d177a583
+b3c9f8a075a0f9ab1e1c580b8d228082150e8975eb0af8b90afe641f177002e0
+07b245fd5646781c0e56f593f2696931ab4eac464ee24e5ca1f565a2264afbba
+6b38c39537b2adcbc388c71deb9eb2f4fee0dcddb601658fd458b3b00027324b
+5ab8a7680531d544566fa5931009f50cbe60d8702c97b0b2552b5a977d8298d7
+c633926268ab30abae6b734dca443c004ec7ad286ef59ed9ca68ae336a58b76c
+33944f301f0b462f72bb87733cf0fc399866e2c493adaad08aba194e9b34fa3a
+6259f16c4141853debbb7357b28602bb7237c682902c4377db96d719b92e6197
+233180c9339a58d9d955b9c11cb1f386adfaecd832976bb3f367abbe10b9363a
+603f742986458a7274ab926e7ebd6968cd05e9362b7365c06e7fe848232e48ad
+73923b3805093e9599dd2265a4b7a8e728592e5be69ae31798c536eff151905f
+9114b894ebb630016333dbe6489fe28c2d88f333df05295dac6e766ef8c3681c
+c56f7024cec67d2795353a445eb2fc06ed86cccf4728a5e35e91542c3a3872fc
+66868e9cad5d9098bc9cceb3394c0ac63a705890743c6e462c6e98742840f1e0
+0f24c59a1972ce6f3a52c14a729d8f39cf15b26df9c43c22cb973f3190d23ea5
+d69624a716841e0e899296a4d0aa0a2472e62915e562286939bd5b1bec7ca374
+251524f0a355786073bd6457a96f9a645e0810cadc6087a6d8640a52295a19cc
+acbdb4ab4b9b358f827c38d628538ec6cae94e762b59e184c75d5c7273d9b674
+8b827cc6a4621c780e79c71e519fcac5c81d027f2b5479d274b83213ec92b782
+f37262def0d230889cfa5cb23c59417394a83f07e7fbc591d2f9ade593dae570
+97551545f24b91e55e9d51e2b9524eb03486822c777b241131e55cd72fe30c70
+29d08d8eaa781c305c9e8b51fbca9f936736687c26cc89e7829c388e48f19d55
+1f49ef40244516a4fdc15d95a4b47158585a184ba33ab5338a303915bdbeaf90
+8f515e2bce241fe0307741125757ea28976f1e4306b8b4d09227bdaef061cca5
+77a21b182e0cace62cc887e10a9382c403d6574662634114b9abb0b5f2810ae7
+2c45f67103cb689b17c264525b5474962ce75694e65e3a3c8697e1441b3d4065
+ab8bab794aa3d19ac70dcbb6b5d4c663892a0258648015c4d1f72d6d3b379424
+3f7bf1062e5e8b457a4729706628a225fbaa20f18589369c9dc2c447d58571bb
+94eac283e9a07441720212d596e217058938cc6bd93c930b137994a92f5dab20
+9190a9325c32e7a5556fe8b496435761514489d4f9ec2d3bd3720e742951d35e
+b27c90b7c4fd326af7f9b1aa8aea4374cb2dd27224cc17247c35d9ef5a3a8809
+928417e42c762a80fc73f116a60150b772f4ef19e91b3e8e509daa185118f44d
+7375ce55383ccec2aeb24a484e9decd860089d6ffcd569236440df9291523a6b
+6ea929607f5ff22ec7cbe1e3bf5f0ca5b1e98147b7183e762f7d073e38ca3ad4
+1bced0bf2eb9c321179c96aa7f21a7d04aa1bfc518a0e2492a22ef5834f4b8bc
+fcd1a858c2575c1a197d25c72b6db910f44a2a6db5c3a0206571a8468fb98364
+00be60f17826b99408894c95c24aa375e97303ed8ff15c417889ca230d964e69
+cee2582b061aff1c429da0a8d671c963152f511ad5571ec33e32700237596730
+868aad36278f15e35cb4e7c480d680153c64b0146915525ff880ce89a2534253
+d79c02dabd0d1b530223afbcd0f27868dc201f353958d1ca0ba3427306ac38eb
+0b29ba02302930e6090ca1b3b6d07c970905c911e48e043c3ea2f6cbd12f8c7b
+ba972679efb39daf247520538d2f4db9ff5d11a6d254245cef54331b7bd21389
+23099f985516b3382d3a3f70900b1981cf9f14bf540df8fb8555335c4b44f150
+e0b4e87d54f2d7b5a338004cab54c5c84387fbec7294b1fdfd62f0f0e403e9f1
+565cf2d0027f58467b20a3294ce949d127ba9c943404be7dec1ee46e1f77cefa
+288204c8a17be96c9be8328ad54ccc8a73b9fc930a9814e566932eaae0e021d5
+5c62e21c03d2c85eabcefc2603a184ea430ac3ba958dc669aa14bd2c18f1a811
+c363b458eb8d6212e96d50de4bd37ca0e2445a24fc3448c0538128f70222692d
+c668f0540d3a76d37e5f21cf7de38ddc7ec8270c55a9c9393caab2010a563cde
+b82a36f2d0cf1798e314e682b38d9e7cefa549552a929f482394a04493a2faca
+88749294da23af3e19ce8dd3df95b098b6b6c5b8996e454f1fd270b7dceb941d
+085def901d436acb72054f69f20776bb9a4b733ef5b2c177e9645fc2e5f8446f
+aa47b399cf1f60e6540462f80ad869233e98252dc82fa05682f140ba79543e70
+3cb312b2a95935255975b9364956a9e8563138651515f9f82bcbf96bd5ea18d6
+885ec3494f3d2c023ddc5820caf221c9241dad05038324d59e1427e4bb74b43c
+88473ab39b3c0df7cf56e2f396000122ca66de88df05c7d1da178ca04036ce7a
+b36f48a35eb65e1986846768744d2e135ea19c30b8f483ece5b99e2a70298a72
+5f5a5643971768d4fb34d12db00e1e8e3c9d711eb3fe6b3c27f8e8d52e8e8763
+c39785b42b629b056383bd311c232eca9ffa02b4082d136684e302fb1fba2a6b
+1049f77eeece24183e89906e947384534b374eca083318c3cb272a3242baa3ea
+2de1df4a249d2ed62cc6ff0283abd9197291de5b9cd086a74b6623b72a82b9d8
+5f38a1108c1d558a5a90592e9acbe85a91a491a09c3523959512a35de5a1abb6
+6484da5815e00e7179693bc72f23c4156808886a3dd264a9f77d9cb0ad5057e9
+ae00d4343e64c87733baf2eab1a4ceae33558c8981038f9bebd271c6074371c7
+ef87d10500536488f3d0e5f922e828185192fe3d6a3738fe05557ad86277f487
+d2c146601f942e33b1cf505287526f7c2607b92211f4e10ccdc850ba589cc904
+2fe2112c690ed8a7be958753984f5a391cb451a51c7c01dd4fc957a51bf0664b
+6be99285237976598b8ec10e157bfa8132520b22b5f89a1dc3e50cc2fd28f153
+d25580878535bd4546ac49d8a0cb8865a5ab661f7cfa3f4023abd1f65b219221
+474ff1dc72818de46a273d28bcf93d4bd2743c1ab9ebf3bb1506e65015e6a3f1
+34c62fc37fd2c30b859f66c1a502c60539b4ca6fc3f1c7f193bfa6c67ca918a6
+7a08bb731ae3fd58b849791f5f20a76b9750244917d1bd219230ed0a84863994
+202d2ba5399a23f763902daa932f27cb19f3fde2f4d8170252f099de99eef678
+48f175305b247c49a2ba3ee9fcebaac185ef3e24a22ac3ab321a442e06a3b345
+10fcee2b9002c9498d969d8e0dd406d0efce03b94b2f4500ddb6a81281e1a8af
+120af45685a7bc30fa7ffe3ea2b6b0084ee7189fb18c0af13561ed0ec9607e52
+d03c07e49a3607839679f83ef7082ca9b6d85cc2948441dd671c25695f9bbb74
+555cd77b58222041d29f95e97a80b73c7369aa44d217fc6ec2cbaeaf43a9f62e
+343a767dedb2079315d6a055cbf09091947b394566360a678d0bd2496615f846
+28af201a005772b184aec642293c520ade6f2822ac61a82a006a2aad2a55021e
+11601ea8b51a63aa5801ac85cba5a91cf490aa51ce3e902f7dfd64c1713cf8d0
+fd8564c2e7c15b5f9d997e7e51f5048e42e88d68ab22d6c4f7652c3285cc60bc
+429e6c38604aa5834078161c628fc845b822a70b414363ea2412c6e81f32f247
+8313250cc56e986ec95b185251b451f1307ec492eb80d35454aebb2cd66a5600
+7839c1fe30e406502d64a9f242d22b803744bd57ad373e0b3f9910b8c0a11551
+98c3c66159b861a9ea74869028d31563febb83f02e202ba8de5a8ff71f370ce6
+4335e79c1c7a29b7426a7c99aa728d2ad282a2367e920de632959de1ac97528c
+a8246026dc203024009b709aca12a86e9822ae79431d89329c0e4759fa299676
+72044065d46710757ae5d03e6aa65f3b3b22518b84bbd6fe99236588957697aa
+9054baa026b8904abb750c85de351e1d31cb5d60627579e108a9ac2a2f99342c
+9166c8526ede24804b9c252061c0b758da5d75133df0354b359aa4f0380bbd6f
+e56667bf69c527182dddc12848612274a2269df9460a0bd83b85330009fcd3d6
+1ba272f0722b59f1907219cf6b4dcbd7197f6f74a831aa007347eeb6c009e1e5
+9cd21eaeab2465d0e000fc33948f114efb265862bc3e45ac7c8574ba48740896
+03f68c1d53751b87578900058147687855b8b7fcc0349f42108e01f1d6645dd6
+15706f340e4c66e7395cba79385d8f60596d3245d642702039f4be5ccf764c93
+781447927d18785464931550951fee84984be6f0f45f867055f99690b0c99e22
+e38b61f6629858384a9f3395922a05ac2ae2f3fb31e5b34bc09d08024171f8f5
+e2f898a6fbb93c611f0862787fb2335529ab77a5ef82b6546db46991a2a8d768
+cc421b25b43930a6cb3b4bf60d99fe254e4053f163b9da5615de28ec154b6243
+8a58578957ae516c10b23fd25fb9a991e12b2c5e1ea87390f496ea45a9df5593
+2130001ac13c3a6821d7c897e250e2936b2c81a14f748cfdcc84cb2faf534ed8
+194acfe527cc9bae4b2131a9ca82540d0797306d34ad3bd18b5f445729020df0
+60951cfbd06878232b53af681d285aa67d95a30cd7d16370ba027074f328f8c1
+a9f64e54802eed88a5d6b5027054b26939bdd4b26e9528d294e95c27a15d2433
+f8d1cd359b5c190c6c73f1594daec606dd4b4bb6bf0d4bce1204d9366c879480
+e7cf01426bb9f6b9b4b9de2b82a8cc855396d52f70746a4befae496102aae567
+7cf9671cd22566a63aeeeaecbbcab0a990f63011152174869e9205464d4a8882
+ab176ee89a14c36bc672aa49985cedba746a529557c0553c3497dd2175aeb780
+bdae08eb13155abefe9aa6a040087d5e93205199fcd074b9f315151eab408b72
+da2792635ea4af378ab61815e8671844e5365581a13561f6faeaa45438ac753e
+ae9284dca9690ac77ebcde7e0607192d1c42a6664869a8017738629d54e3c134
+653256223931b50a7faf99e8980faa5d355053c078570035218ba12ba25373be
+85f35a2a15083545f9829c2343e018ddbb6681df439f550a6845fa48f6b4c38a
+414e0092ed8a228c35abf8eb820b56a2f608d795eb265b63ced2a06b5660b605
+147a456a040cc4a492a4f38a4c9c4dca4ae547e3fa141072350bad9db8921c46
+01e7f1bc85214604af4cda13b7a89a10663371690b33c4e199df378f4e905d34
+9df687fe0247d8a2aeff2fdb4038d991d2fbf7ebd0da45c66da14d7948e9a93e
+1a374f822f463a747955d68be19ecb6ef48860faa8516c010d11e0dc3fd08b20
+cf2db7b6d15e54304a129b7c5c2727d2f98a0270fa862e837fdaab83342fc414
+132f1eeae5b01c6ddef4eebb5142d90615dd81ae7438cb96c597fe2de8159c1c
+28535baf001860eee00e0e6f3332d4aabccf3c6cf1d30807a5ed592f48388376
+67fce0434b686a1df143e03fceedded0edde56615bd946bb55038843aa8af6d6
+85956d2c3ad7921c5a1aae720e0a12d6b2d072ad98eca61282e22736f96b5c87
+cb5f48ae86ec7e2579fb2b3d989c0c964b52fc1527639a7cc6fffe5d1931f062
+422145e11e3de8a13f6f1737863ab9a9af05786f41219daa2779f1d6fcf46461
+e642f42e83e5d223d9367f3821bd92829cea4c7048e52fddc4dfc391c5b2645d
+1faed459ad9f4332ca4980045d9f8d78e6d340960ef1340a6f6785ad11bc79bd
+18459ae3f78ba3f84c4d2e4d7372e9a1bbea50761c00b9853e254920a8a9a1e4
+2bfe3933bea7ec6d3e0095324d3f5953e1948c164760b9213ff9286ba2c1c510
+5be52f18a5aeca98aec0bb2440c5bcc3d61c74f3a1d518ad1e92123529496254
+638e1d8650e614e3a940e0ccaa0ec409898fb9794835b9824c013592882e586f
+79e872dfa53b71288e3c6b2a4b3111fe38f644e4ad9e335120a662e84c1426ba
+55045550afc826a7ec8595854c5664d0325f4c213a383d0fade2f815673c31d4
+cacd4eaa59285d5d4faec62aec91e957b3822ef7ef852a6d377e288f2386f05c
+95cc03afde881dcfbb29f87b881dfe79c9c7ab55c803523edef6c5d38f78fa5e
+713e50e1a98d13b8c809dc74c42301677cc9ede9cfcdfd5ae154094a20fcc32c
+52fe8d6227542194d3578dc82aa54418df99d7f722a955bd9a54bf9c1d02aea9
+2a9b7ce9e9559d6704d35d01e7494cf9e1f8e6e1286f72c786614d775b52f1b8
+1f70e0ac483ae116743d806e483af404d0794865a98ca85f2e7b1ba957f9dd47
+8ac9656608324a41fcbd060e6241b232f18bed89d8c380cef6c5ec2eef52890e
+353c178922ed3c1648ea2edc69da39dbcd4fb24158ca961724009ecf49ad4a98
+34fd13856ebe1481e66d3d2a29d28a1c77a4f668947f572da4c11bc7c5e93fbf
+c0c8e146a3ee8b1cba2a30fbce953935d63b12796b9e2a32809c40869d135021
+4c812293053cbfb56c97524eb2d57b6492c11f60a09b9a0da45aa30ca2e66560
+0ccb3aa4e86169577e1bc9cd8549f3f9d042766fa128ba72de952b87d6e1d702
+36e4cdd1072a5fc91ea88a6c3a6011b428b1aac500094d2ac1a19537a3bd530b
+217184253b7dc372620da44f052a60d217509414a19a763977717d269248b1fe
+5db27c268e6a574281754277e980afc580b8494770051457526107a57f5134a1
+6da37ed6129899de1e255a2159fc94a20aa60063a9253b2dcc2710008904b7a7
+fbd3885cec6579a3f0dbbd226f17f4c87ce644239deae6f6d4482a7caeb83f01
+81f5b14eb5768baa3bd82a84ba722df5c6da70133eb30934009615bf5ab14495
+1754023b3d58a6bc42b142ac6d3eae288957d1427296b4037d78ed2a5af5f22a
+5545ed25f6185f12d9320ef014a1b31a3aef90aa85aed77a2bc2cd3967f917ff
+4dc707e5462d4adf42e85a264961a121b1b63864005563e85cc5978580ef51e4
+8cebd95d85585d38358a5a7100c80b9a51911d8acc039fc365266506552f6d09
+c1f0ab1c9a6976a306eae2e12837a1ca9b5654dd044d480f58142e04b2d2525f
+d78741b3ab4c9fbbf280f38d97ce499dc3c5303753d62887a08bd6e6fa5c1332
+aa96d08e0117d161524d439e6c87a566a067c8e73a99ebf5eaaff3e7059ff77f
+3c9f973bcd59094ebf7e7b836fd03a4005285780c724cf0cfe2df0931db07365
+25011324f9bf0a8a387b148e1f4a585fb712e90cb28093b37d9b806a8263c83e
+fc204b58db0fc707d1a2932bd66c59a1ae8685b09c62e21420d4956b4d332e82
+9f5f72f7396365257bdbec7c050d28e86aa30a9fc05db4c2645932e0860f4f0d
+5091177469c0312239ba64714ab24acf69157b0a86acf1df6704bf505c8f1555
+39abf0b5e10d8759b532e7b8461e00c684d55ab603382a4c71a601c2af4ef207
+d7fb8d39cac1f849aaa48daa1dcc62967b80b322e8b5f69ac6748f6fcdb3caf3
+c273cc45a8286256c18b8b85b3b3dd514d5ce917a82255919723688882fb429a
+31e90947bcca58317e4bed42f24d740accb2cc0f2a289d4778cddecc32a7bd1d
+d7bb391d3e33e71b1c25ac3ef72848ef2287432bc53519c1808cac218003735a
+1771f4e0d0aa237ca20973faadee152ce268867529539989af5f10146953a2f5
+21edbe5426fc8bb4e779aab356700ead7cfeac44824bca77c21bccb11f790aa5
+ac295e724825e71bb99d37a8c111571d5ea0aa10986ae954364b2b37bd7aaa86
+ae49d326d955cccc697487897273bba6a0689bf71ac774a9831eb34582ae612b
+3d1cda1a2491c7dc241c3845edd5418f1c448ac37d3f953b18f5db5c17f8a656
+9f59536cb979b32ea3013b43692ae5a5b570546329cb61cba43ec050b4f538ac
+a634bad6a32c6a29ebaf09409be2ababcc9e31356ced71917fb9b59f120bcaf7
+ac928c28c1087a055af5e5ec244950d40d81f9502b295abf6f82fb724850f8f7
+f7bc7142d8dc57bf73a9d0148c12ab4a3c1e5040239f06e3851cca1291f1e9f6
+0425b68d0ed11a8b68aaa8ab5a97e22eb1cba86ad508d4ccfd140a402b1074bc
+31bed9e5f331fce4a1ed25935a74e8c6207268a887519cc7c915d1134bcce86e
+9c4d2150ed715cab88573754d3513a94dab3e55d9c6ef9b86f587096160db6b8
+69656bb7a8d49a72c70498336e80dc7511ed21b41ae6bdbcaa34fcc6a76666ad
+b3c16574811cf290cbf1d79b963fd5479559d41c9cacdc882e5f36e99c6fadf2
+eb0ee5911cad4bb2b7c8c708f09fadd426af07000c2d8945c6e3005184184af2
+790ad0239e5dd181a30c853f71da31e56ba8a1d12db719ca19ab2bdc62656813
+222445493a54c8ce1055224ddd0f394f7664a2f3836a87872e20e8bd5b871634
+924baa1d167a4619f233d6e5b499a1886a5c213abfea9fdf1c6a1a4801258687
+a7720830b0ee9b483d9418cd1077c305aa0edeb6ea87423338e41df6337c9471
+48f8d64b9960f4e60ea6cad51de02b1c061ed2725e1d7add6e017c45c5955bbe
+ee6a202595726bcd39f46c26450bfa92d5d00a0f437a06e6b66b352d920a22f4
+f07ff27a7721e2f21bee19d46322165bd575376de51b6e05b796168ff4842e0f
+f5a19535d39f419daa6469310d710438e1908376833d9c05e1ac3a0781335fd6
+137118ca6640e5828b1d31d3eefb4a91358c20a1a29932e4076b35727e477750
+43310e58446cffec988931c438c6dad3a3df8e5ed0e887b2529013c6529ad165
+00979b3c3498b4f85ca0ce29cd5e7a240f63d06ea1e0905d62c63718d203e286
+aacc1d1fcc0f6d43e76128690d9edbcc0fd2ee9329d8ea8d570fe14721aca3dd
+d4aec38a67d670125bbd195a438106b6c2c02c368380747d3e4342b70060088c
+05ab428f3300be423d6518bfa147a87a18f344137549fbf535e3ae40f4840ce5
+c811b6834baccadc5fb1adda0b55868cf9c0f5533c655580519b1d5647e74ddb
+1d4b2d96dcb695eb1c8ad8147600f7858e056986c381e9e55333f6a1d4e8878c
+c48dcbb839a9e6f4c831f1ceec0e39521238f72a76d67203681b966319d054d9
+33f828e5d27890a7da1c3a2d630853897d1dbb370d9cd2f916b10dedfae78aae
+d84eb232389afb128c2bd49b0bc0e58ce2b21aea4400d56218273f5fad7f18da
+de08a545591df4f0517c2197bdacd05eb98ed5e98583aae4961ea9295ed44653
+f5ebac75c13db968a12ba9048aeb168ee41a01bfe1685cb5381708798f253f89
+e3dd6f6512a5ff204323ea3e0b2e8ce592596a03b562be10ebea367d8732367a
+8fd1323decef7818718a2ea3183b1d6f2cc385ddacc8c13a723844fc465a53cb
+1952978ef4fdcbb06a36969d194e3d1e5be971fbe6c6407b20d2dcbd82eeb2be
+adaf0cb9f2f01361a224cddab291915810349da83993919caf353f936beb2d8b
+6632fea98d261755cff5685c5a654efd3ab4d13fc3562d2a1c5caea19b4529f3
+a1184cf58b75dddf2195f0bea293dfe1f8272d0ca620a7fa0c15d2450f2f1d93
+f196610f069450a439bae6662a1d01e1199b10b3b8d6515958534d0abbe06a1e
+b25f132838c57665d10874a782e28babf21ea51640cb5dea732d1d3d13e6b6f9
+3c818a1b900b5661312706953bb490af0de67ce9680af0305c6434953adf2323
+79ba974db931fee064c3345c5afe8de90859be271626598d0865c5654b4b5b41
+d1afe20a470c095c7fc20d395366200acb8aa99c7c94e287d9d4044f586cdb53
+5f118479ca32528cdf6dc3c3b9a451f903d39d456f4a639b4321c0361f6780b0
+822545699c37a5966a4a0c4f3d1e4b428589d1f884745363131a6aea788e8d20
+073539c468e4a9187f779f12daf2d93b352c69e774351be70aaf6c291173de48
+ab9ab61d8efccf4233a2a5c84ac9e68dba549b75d3b50a3116332b2fe90c582c
+a7713af021e5a92c577c4d410b0cb5e6248952cb1ab61135719582da8f3722d7
+8f1afa645ee8971a6fe7eb6a1d2d6cd7956e79d69233921e9fa1120eb9ed32af
+f71c00d16ec9a91db6fd56f51757c562087bb45b1cb0b8f387011acb6225077d
+e6f4e255b94adbf5c22d8700aa561dd0ea1848b7f57869231b3f0cafbaa55856
+f48e38b49203ca0c5fe7723b0a41ea94551516282eb30efac2a65f4e72b1fa2a
+5e16d6ae30244dd8cb7b8743783e65d44b20477d86f7d5cb347031e9dbc44e0b
+309515491aae695eaab3c1b1e7ad437767635a076b80978f88114e6d25658f9b
+5db91465ebf2618707bebb7ee1d281de7219450b7bbb61a3bff8d257359a6e2a
+2d74e2b292141bcfab7cf0ed2649dba9cdd251173878cc6cc6adc252f8d2c2fb
+2b0da72b8da4089c92cd75702bdca4fb197df50268ea2783bfca41e1f2dfe55e
+a5a3eb62e137bac5ac16a4cc3df9aaaafae8b40063f7826ec2ede1fd08cc55d7
+fc2c49c9566f35171b3174265c6a283add65829b29803f84cfb6dc02bc2504a7
+263c6692b4b4e276d3f96e806058a559eaa51e5ab2db38b4db56ad2ce507c3dd
+41eb6ea9d74c58f17c415419edabb02c47bc8c3b03320d5673412bc407da8d10
+c10180ff11f78c7276c9d8bebe8ca58ce91a9dae8b419091b0ab084debe1dad0
+da6882765bb70c22d049956bbb1815ac6e58451140f4d447466475bd8ec5252c
+d4ed2ae6cf588682a3551dc599e7be999a5bdd46d09c6f70086ea69f3994e0da
+fcf78a4a90dc2efdcf8f3faff8edfe8fe7e3fa2a3cbaa5e2e98a0a9f248455e6
+f154612bd41d916fd52dc15bc33451549b005c6d3b6b097f6644217ccd15a556
+2ae3e3df8bffaee3885f30ec17535a0e8b8814b341f64065de1edd3b88805695
+95d727f1a4aa271f560a9303eea86ebfe1e7289f3b9a007da640357e8971ce50
+e86bb8b249d39c2a59af4d78a9335ad3576ca40c4870e5b7c1e1d02601c0b1fa
+ab77157472b94aaad33ca3296a6d6a0a1708deb53998b76e3e744b82aa72afdf
+8a980f948061bc9ca2f0e1083047be13d4802e0f766d4aec1fb2832ed942825d
+4e75b9a06bc08bd387e8f558b7a6e1f51199167135f82ae27b1c7657da8de472
+8eda845a8b202957923f2190a86b2b4af4dc81f8a269a8af2b2a3d46c342a436
+6755de02900a67c670ba3c864539abddcd319b92da70263ae708f188a7dd0ce7
+81b6a1d2ba9959dc9935a223b0d66d7df4acf0ba552645ada6428e205a599e9d
+348900516263b828b9c4425712782fe1e2ae5542387a7054943db98977f20d59
+1d96758457d44ce0804b52dd6a552714a3873e64584497a31ad85aed1494447b
+c89bc8131c7596ac90ce5dc575ac20558eae49ce708f6a3cfebd181a598ed84b
+f775d75c7062425552434c1aa416b5a434e7485cad4d793cc25bc1276ec1025b
+f1aad8d4930e38a5165599abcd9e8d5ae74d29d717df806f7cb1ce073b9f49f6
+2ec469acc02ac4b81a1e278ed059a2d5b9ac9a12c07b3a1942ff6051b037267a
+c666024c31c9bd0a7ebcda6cadfa03ab86a5ef578357b16a9812d35895dcd6b5
+d2b9dd23aa45f93ec5e19ea95965cfbd798da84303ea4a94765a019242744e66
+399ecfe4af1927bc16f5457970c31f8e12ae2b4a242189b7425bcc4061ab5d7b
+ab2367a5a5ec9417c144041a73458b3dac827c3fb9b8dac3a53db52c39468b56
+4e2ddb6dfb6ea67f512e415490f0ab56b968c8b51a75ab3d0395e57d14a6e119
+486d0df7c2d23996b978b3cfa1ca3c3701d5649d8444e19270613d2fd3b1e2dc
+d2498aca527e447512bf1bc270eae010df916857aba36aae4951897600a7d4aa
+0695d76d5751d2359564c6a2914a0d28ccfd5ad58c245a3971e94946555a9a5c
+bb5b58514c39636953657bb06a7911a9df21d3d308f43e0e41cb6e0a6a15be36
+35cd83d1c083b328917ee8e4abcd0d29a7b35278e80c257e73fb3467c5590455
+e559be60762812208157fad2eba96e53ba8d2a975e89e5d5c6f470a21f3166a3
+9d59cc7900fb730a649d0fe7edd5c749c445925db96af7c399627a705cc85951
+bfbc383ccce55aca6bec8e8173a7acfefcdd981add899445d9a7047d7092a0ab
+007af566ecf2adf61a9954742e0770eda565477c83a1e2884f0e1c1cb63dce4b
+30ab78385d6db80bd24d57739879c84b560b03867d3a574cae883e5dec7c3ed9
+3047ca67e1c645e5b0fbf7d5e2a679b77696f266bd93c35491d71daa2c0242ec
+f326db555b79539abf76f6544b8caa29da4af2f614a908a2afb8de682402fba8
+c6738056d2bcada2844f297655fd5b86048a4efdc9442debbfea6b34729cf3aa
+6187a24475750b89ab947b84d93fe3431b62b14831a32e58b77bea3c8b785b75
+e387709577671072d78e68dea96aea5a95e6336477d73a6fe74c0e909a1c75db
+29542b967af848ea0c17625a3f5714ef55a780a304d83b355e58b666407fd5ea
+0cc7bc7e8649c1dd43f42ebcbf92520c694ab9c9e28d2876a660cc4f35020529
+eb6f9df95e654a8dfca865382858aca0332e2bc751356f15f5f26cbc19fa7a4d
+b7db2acfbc2a1863167bf0104faec490abba02a600c522f278916429479cf141
+47b7b587a350e8f7c3e916bd49c0b08fe08037670c0790294830e5337952d4c7
+62dcb347ae9871552f1b3563c6271515aece508cca12dcd3b38f2a3dad88bf6b
+da8c79d7a7351967aef64738b6a2e64ef2a34111412a18e2393c95ab72e3f177
+178a5675131c3d464a08f343e8745c6a9b6f10bfa03ca5e7b355fbe580bdf66a
+61df224b0fa0b3a0cae66e6e25240f67ba7373602becf0ce561ae0b0d554194e
+648063fab9152f77efd9644e4ff111d8bea61a2573b3a2f993401069201ce938
+6ba0ebcaea39cf6bce886e4a679e552ff09ba929b3df12210f85d67f5d0ed2d2
+5be5f219d9316f0eccb7ac8bde3f384a782d95fbea1b4fe10c23b39c359f54b8
+8067ab7260da9470f0e6286821fac9045cad365ea3e55ddcd690069f80474203
+817ad5c7fb2560803178fc70501af1fa14d1f1b1df3ffefdc1dd809604cf0098
+53bcf8706e0de200ff85f31a010257fcc978eea164e87fe17cbc8fdb62c78332
+55f3fcf53fb2f23effeb7ffd887a59942e9ccf450d869c02c899c706fc56b94f
+63ff47ae15603db34b86161af0ddd9d1e98abd2c6818b691c7eec8f2a4208b9e
+b301b876b623baab3f0bac11e51eaab390c6971d81af596a4bd0b84326e57385
+fc0778024d34548ab06f5364fcb03a64b1a5918b3354ba4d36ab9c94739497c1
+486a66f033db8eca8a2ee430a02e7d7d21c1d9f111cb2d23bb864d897279476f
+cdc3119c8dc0d7aabb1ca39bb2aa45d4dfa0a457b18bdc9ec9b57e590d0a8acc
+d79a55145ed2be85570278286e1cc199106eba6cb42c58d7923f6a9f0750f7e9
+c7612dd7e63ed2282b0a868a0da9492c2dc3ceb25e9c0d8658e30782be622b38
+91d68fda30e2c12edf415ce7af72a18fa3dcba44a141665bda2fe87b7c453568
+836de65a69f83b116ef744093f42003a5c4b43b75f3d29ab8ddf7385a1bf4614
+b44defcf807961b90873897861cd34d64bb77b40654145de7f970525e249ca76
+cf6a0f89ea81aaf2140515ab51dbb85426f16684ebc8954274cfec7a147d528b
+f2149efaa55f9882ac4ce4a28804370b4750ea7a56a24cb9ea3cb6dfaacfdf9b
+7e5e69495c344b8ff7a40b5facb4a85eaf1a0df5a9b8640d48ac8723cd13ab8e
+481efc194ea0d081c2e0cc2a3d2925064c1f8a6507c52f4b612ce5fa08b32a00
+d1e95c05f493359a58c5aae05f12f8372ac529abda0955a55ccaca482e514422
+3e379aab9c50a88573cc132e239dede3b9c682be4364c6b231e03a2f4c9c2b92
+e884ccf39e4059801df916612e9e71f92e426510e511558f59f9ead9b99f670c
+283e202ab5aaa426078d3b9845f7ba4221eae7093030f80bdd721c874e76df95
+ac0e7fd9d099dcb8684232a366a06645cdb3d16cd845006320bfc4e741f30fea
+2ae956286e190afc0e41bb0407d5cd9d7676708ebeab0280623f5b127476d1bb
+fc23c00a01d7bbfad65046e1ac349a4629e1884b828f2fd515daca0f2f358015
+829e0eb15e8e61e50ecd4607d88caa229f1c6558b0d5881bca5d0fdf43b20a14
+8eace434b61ef1993b32e6f0284f8923f1522dcc796909a93bcfe9e18ce29cc5
+071d04d2572d24f9ee90ff8fb7dd5d4420d9041bc19c3088b611102a45b24d7e
+8f64144201db5734ba4090ca590c977e0d9f3945fe7ee081144ca86b75e11fe3
+beb5f04fc6aaca466851d2012a0055fa3d947399aecd988676ae758da4128b22
+00657e3f720c53acf1a4433647115e52ee5f56661df15dd4592764599272faa8
+59ac479ee38333dcc45da3400e3d87788ee65cdddeb3dc7fac296783a0f9ae42
+87c84e365192461cca81abd0a9bdbc948324dc4b5580e28ea6fca31435f55aa6
+01471155f860a84a5f6612684117301c16e46b559af37d396f95b3a04d14bab4
+dd751a9c6755963d09d9fb17ce55678b5b06ff85e3dc65de65bbe00f8e8b515f
+77fdc1c917c77dabd5e69f8cf777b1c169797f177b80be2d0486f13f39e85038
+d9e0d880b84be66b5e2a036576c4645f4ca753b8196380ee2dd57ce6e9422f81
+7de6e5d2bd6a89bba32e8cc7c5c71ba85fc19bc38e851f1f87eca4d9ff7f7642
+418a48fbf87e735e4f16aef1c78824ea6ad9c52a0fe77d0d1d4e7fe13cafc8a4
+bf8f95c66c51a991ea3b6ac6c76775357d8e27e39de5ae78bfb33929008fcdc8
+0173c820dda0e22f446765286665a69f31478cae3ea64641660bdac60d27ed18
+c7218f9b63c11c2b4d8180c0059e15077341665fddafa3bb7479249e2b94e18d
+27a48081ae78e2cd8a21882bd6b072003b0147b5b088a4ac4e9aac9137426b71
+6fc0c002cf5aa93b90a3457ba0708319cf58b24e3eff8d93940df1704275221a
+ed9064ecd380da9d6fe1443ae6d3568eb7c06999ce9f1d3f26b86e1a54439c6f
+d17516e5c0f7a15bba7db93f0f31a5f30a12d70f6f7fff9d9d3d349d824cd611
+306fff8eaee4ec1c09165e66791b71d8ab2ec51bfdfb837d11e6fcd860fd2809
+ef0d56054dfeda60c151777b610efe240c2335ae6f21cbb14d80d18aaa00078a
+803608b6981ea9fa0f1ea9e3f091aac179e68cf069e56f9cd75d36d0979ca9e0
+340dc2d31d2333f2f827e3bd434b918ef87cb439af5f2f06f3797110157f0b15
+315e5754c34efcc179499022b48637a7caf1f40815733ede19d649925deede3f
+594587c141473a1503418dc4fe2487c1449a70ecf6d4e98e28c2ba2db94b70f7
+28a3cb02ba2ecd6973b9ebb86ed1c5c8ba72f50d78b14433ee3598b07dd3c7d0
+6541bbbd07f353b1c435aa017c73a69e6cd70638b201df1c86eb3e872a4d5768
+fcb7cb9e7d1afb5d37bf0e6357798b62dda444d7a819056a6f7989db44ecb41c
+68118500468dde26964e24e57ae568a5a6b49c58b9b841e91a394abf5271df68
+d72524f91f68c5c71d887ce71ddddc84705102d636e87c6b3a832313aa242570
+1b30e290ac8e29370f35096403db5afddbb254b966e4b094dd4ee0620400988a
+e8e652f71393e263bf7248fb7ec98118f56747fffb836d4fe77bf904e7592c7c
+d27cbb2af953af53a024578cbb401100583c826f2745eaf63239f86d5a366544
+afbae22f0958873378b26aba214201dfd3d8cb43aa3fdb88c2c3e414c3506c0d
+e352a0f9569918f5456643e55d4672025c622ba2bc63974b08ef3091ceefd345
+96978bf3f13e95562fd5ed6acb3e207893e028b07c9923c9c95fb4a3993a9e8a
+d58380634f4a47caeedca505acb3dd0b5e4d7947202224b502c3c469c5bb0bac
+27f27c09b3598286acc8500bd37aa946e700fe4d325c4ea846c108d5e8d06abd
+6ad5e8d0d25b42353abfc20057ecd543cbf36bd588bddcfb4b333a0c3a6a4233
+ca4b69efa1f764a683e69766c456c6a5bdae50067368463914eeab19b189f80c
+c5883dc6a91d14f7c756c8ed518c321026f82e528c32112eae5e64f2aa4541bf
+8651f2e42f9cab150527b42276362f3bb4a24332c1e1d18af22a5e84b64f6b91
+7f29ba7c2b56fc6845ea48bfae56c40ecf747f6bad2c24273f4a915a56efe7cf
+ec877995a2334f55a3144a11a79236af658e179895a2bbde5e4a511e6a575b04
+eaf0eb32b0f5d8981b8987ab7314a849247fb36134f3142c865b3fe6596436cc
+ec86f5956ac20c2979aea3dffab9a0b31af6de3f3c9801ec91515421dd1441b9
+8c9207368496172f683a272457832310cc8c9a89416874daf519351b538e5037
+f29e720ce058dffc09958114c1ecf00d335dafd56f24c0c5229fd121912903c7
+2d5ba34f455e82c6f52aed79aec8ccf02c6abb95a7daf794168ece33c8b2a02d
+4fef241559fdbf4ddab961482915d0e1af4b2be53c0f65451457dff27676ad28
+0698393fe82253b77777ae6a893ecd531641d09ac6d79fe5a5c6eea2e1ac84ed
+72311c39070c28d0c99e0908c1a3141b6b2a8f905a957a6f4fc57b8a9248f35c
+fa7525a35d324782fae524cb0f16a5347a7668844cdbfbcec5cf841951308c32
+d39819d901712ec229e1cf7d3bbbf6c0b02dd074bc84b89bcad67e09c4291cb6
+e78a2cafae7b87cf5012873c607926697b0a7ae421dd7a5a17b0577a19152e0f
+b56d87f48311e5c94e3a1c3fd7c2b9da3dc45e2a4574157b8461171af65f38ca
+34390cd6c7fc493f770cf628fb83f1e8a2bee50f4611d6caeb477f67bcf5d94c
+1886fdfe9ee0848d96596b3a5e465a5626ed35d2b27ad7849196bb3aeabd94b3
+a66cd84739bb9cd7182965ee2f9cd75dc2157f8cb44c58dbab4af326645dfe41
+7f7c73a2e30b739ca5a107475d07f1d826a771563dcdc389602b3945b2575e06
+17d347782337f68abfd18ddc94ed1fb189ccfe26cfc19f9d75ff5af7c8e95d2f
+55011913cd1b071b8c899f5236b49491bfca9de87ef4ce5a0ec32157210ae715
+5019b9ca3ac3dee619873c453a97f5694146eb95cb105c7edc8eb81745295257
+d9612fbba33ddea0b0af2965597554abab203a23cd91e5ffd96975d998edc515
+bd19d9bee3896472a6d23bd699999bba5e57a82f4f519027371f17238a5573b4
+7d19b23b7313282722027044e7267f0c438d7aa9a6e2ffa24e8fb9594f178e5c
+469a2a7b7544cb3e2e054660c256ce48a65cc4a0d73837d59c15c3fce4a6be20
+a5b9f7726eb1c5940b9851a8c090a5954076cfa93a75b6c78192ca134a5cabd7
+29192bfc3947ab61ece30a8199f00148dccd46d3bf41df5c57b4d9e5aa447e0f
+cd7fa5b0702e69c4b8823f579d0b571170563dc640ab57fefe1a882719f9d66c
+1ce3b538140db22ffcd2f9ce64709234613e0033b2556894ab4265c2b8ccf14e
+bb5ccb383bcb3c1b8a88cb6fcad4f602de9c28c813bd14738e42896c2ab37b94
+4c0295d4e7ef59674ba8a8aea3a0129b3ccf729ccee979122a5c76735e2e256a
+cfcea733236417e5190377ef0045705eb29409ac1f274ccdf20a5f9f5370ded7
+d88eff83f33a76aace9717a728b5ec713a05e7430ae7ae4c8eeb74ca794bde5f
+a7536674f9bd8fb2107ec3e794b35b3fcbe79489aeba1e9f53ced37e07f99c72
+1e0eee79efe7505fafcf29e7d2df4399a586bd860073f3e1bdcb14871f8352d4
+54e2c541fcedc3bd74064071a51747ad813f862995fa19a509ceebf711d8dafb
+6f9cab60a49da5f4fece787d9716f39f9cd757f8ae3f398f96113ffd3be3ffff
+55fffb3f7efce78ff4b5813a7f06efeb7fe05ffff5bf7efccfaffffb631a25b8
+ab2dd7af1f817155850bf1fd033a2492b1dbb2a630abd0d07ab3a5ff2f7e61ba
+6b4b7309c879921d4ecd61cc73e750bf8b9d9d963d9dbf40ce32038aed5f196a
+0537dd1aacb96a4c8f65efa9a9f779d16ddc0b8083b52318399dd8dddc8c519c
+54de0c958cb5e86d097b115905ddbdddc449c42451d1e09bc3141431200cbbe2
+aa6220b580cdc56a30d8e64a2ead4f8e7fb98bd0f54a12e9ae06c304f10d5fa3
+6a4cdda943170cfdab397bed93a30549acb2a546e47e75d9746dc654bc180aa0
+82e386ecfae57fffb20cb036dc53abb94beb2fae21fe5a4f766a4c3f84bae05a
+e640b5fa3b270703ab22ea5b3e395eae53dea117a7ea6ac03e951c1c88d3e64e
+d69f1ca222cdaa73e66138df088c18771d347fe7ccea114385b05b627e30eace
+310ffdcd70769c7b377f7334b1c8da70c2d733bc66fcfb9711e716152e945251
+7e7129410bc3490bb5598b0b5eabe654a64f4ef36252c3fac86c058d2ce08751
+55e6edd2563130c99f1c6030b9bfc88bd18318fa092f71816505a02876ab801b
+efb63270454b3a7ccc518d1b126d3e187e84314b2f6d00cfec0371bacd2f6a72
+fbe570077c72a6aec1447f7256c8ab659c4d4de89485058e56d28b61813565c8
+7c727c0987c8961068ef71b5b64529279629184ab5fae4acada7eefa1b6306a3
+cc5b92a68187b0336828186ac5d39443f5c998de4c2a006ee50a68758b682544
+8bebf31f4651911fd6e6dd5cc3c08275c6568260fe8d43daa7d0efeb1b4b7ed4
+80fe9322040633d29716cc749a6640fb4ddb327505f2367d6eac8867fc6546c5
+e2522e60acbcbac2c93387d3f8a4cb4c9b5b557d8f81995aa7ab74a6b727d477
+4c23215b915e33e9079d2a8c80aadd8b2f473ed06089095f1525934aad9e6eca
+1499ada09941264315240b1c86d45dd0acc71bc5957e84d244f5809c47f68da9
+c35926c98cb511f0aff03d61d956a55b8364458522e604934512580f6c25c1cb
+66729af5818753f73287098d0fa70b31f17597bd81b55fbd42ddaefe42e32832
+5d7587057377e677dfb1465f1c0b2985c7ce079370edd9906c9a4e969513188e
+57c2d9077a16017b5099e15106cdaf707d2b5048b928dcd61e77285d75681981
+e4680e65364f9b92a055c9090e1331bd62a75114ab17e45457c93a22a77daaf6
+a95a74ccae72e9212b1824d7f10c7fc1f4f8b100bbe19ddd636caa706f76a759
+4e23094e575e29befda230c2970cffc87413681666e9f22035c00f2df38c1cac
+c8a9cad2e70a8ab3e7f50218949ccc8a5d4cce8c4cd6a9ef22ad82de16977387
+181decf97ead6f2366b1ae6cc40d487bb4c76cba14ad1a111e340b505689f171
+71f1127ee58c3cc91573eee4ba47f674e5402f2903d3deba2a07ebb4c3a2de66
+31d659c1d0187a87bee869a45486bfc1d01bc40f3881f045b3d8ed02aa8103cd
+25c056677339f4eafcb7dedf161f1918d1a5fe40a039a2065e9dd2e3ea8a0a32
+32922ec0f6998632aac2de9f2ae2ac2b165c737991bc27d3264ab5d93dd5cc1b
+a402866fc6a0e6ac1db1546f3d5db756159104c97ced19c162723a19937d3d67
+a4f1ce2baea202ea51bedde9b8327a098a5330653338c84494048eef434be936
+ba1318566c1c7da9eafe2e0624c7f59ece16270edd45535ea3d89628a39fee97
+0adb0e09ec4a6b95adc703e70e50f316bb0a41b3609b0a7b4da3b85597d680d6
+a6b19b725ac9ae56c3af41591d573323e99e14afc1699fa143b590beaaea00ee
+326a42a5aeccea6516fee069ecb8ea12bba90ebe94ad105c8e56bd846fd4a90d
+79434077496b48167b16d54795e3c61249d0671dc28466d5b611a0a69cd5d5c7
+29ae0ed92dce37396c17a5e46e876548619957590741ff43759e7ac19075338d
+0050edae06ade3263405b53b72e121f52fdf4e55417874cf69555d623ac2d453
+ff353f4e3457ed9bc1d32ade277dbcf174beb6c348ffd02ce442f210808e17e6
+b231a67bd0ba83eb66e4b0118ac4ed60edc563b1de71374e3ccfdc49b26a0e95
+4c3edd97ae0ab0972ae6d6ace2a789bc38452b743885257335a632ac1f597c0b
+b931d6cc3fd770bf2770b1ae29bb6c46e795db7ae6cdf127c54429b55b1c16f9
+0f29c4b3e8634153638c62ab61bc9919b0086385c7c1a002e34aada887883dab
+867f7110172b6533e077c919570e5e92d3f13c2cbaf6be398dc340d7457581df
+8ba45f7796389428d5f1c18466e296c590f250dfd19a8a1c0261d79fd75dd20d
+bc914b7861dcfed80cb7f8c6536c4e5597e6ee126e2e43ceff9de3c95074038c
+dcd69bc1ffbd1fabffffc649f158e27fece8ca77b79fbbb86037f1d8de147f33
+2aceafabdd16f66170e370fe5d597837d6dace3fbb5b4b885cb3c499acdd73f7
+d97aa63b0e61ba2662db19a5751a981ab44f556f13572fcd804e0a35a8c409b6
+ee3e11c8c1cb1b7519e18c8a336e7a6f3e348c95871eb1881ec6f3483350f77c
+49694e2fd2ca65bc8235a587a49673bf212ab0de9cb1fd953a64b5e65d42733b
+35cc126a804dbd12da85950fc1695757b2e3060a0530b03d48f2e065e9510cfa
+0c50d319fdec5c71459cd74ad2c24eba6d5204c97ea7aa7c02caefba2f5e0f56
+644819255e4c8721833395f14012b2b0da1c9ab14ded630b8efc58548f87c470
+b800df340deb71d7891ba7c5a15fc3c8a216172eae3ad63dc5adad0c29de1370
+550a5b312d64eb6259ded5e69676c1378ff4e901b506c0b75547106814615c78
+3cbccfe67220662ac050e7b542d1176b464799a9bc64e896761db923785d570e
+b4d0c675404513e8e515630c7a813349b77a71f4044b92f066b8155c153ee374
+6886e8805a956ac375f56b8ba6ab9f5b78ddce09d3ade684dc0c8a8b624971be
+6ada8aec1b7008f2b2b4b54157e1f071d934e339ddc609b31997612de9aee1ae
+f194b670cf44cd5768b75bce9626e73c44297cd46131ecab56289a559fe0816d
+10f548bf26cc0e93c036ee367c3f183c5b84150092767dd0ee9c417ac91320e8
+0926dbd3ef1253a405f49b878ad008d3dd8a6b73993ddc0782e858e19cbc9cbb
+bf8c9755a7cbc8a622759f0c1ad0f50ade7ae1b2ee7925cd4f4010b267d84474
+85456065d7c5b2e6b01fa2cfe3a608717d5c93cd8857793a1a472b42f5dc1066
+62a8caf49ed02f8efd7d615ae4f20e4d2571e8154dfe401f79e2a813e1f5fca4
+c0e4b95185648de23ae9933a44b6e45df5d0f6f10af8b9368be66866d8e40c0a
+3c96e60eb4532d9c4017c125f2c0f566042d10a8d0dd8ddfd2aec6e0127d70b8
+cd928551f3224d17678a36a51e310467282b2dd975d264b1a4804f24d0cb7419
+b30ab967f29256cf79e6fc712d5e6329ca29b597670e143bf947eda3af2deadf
+67343ab7df0e27198d6643ef5ceba48557a20682640f777f0d24aeee65180bd7
+998210fd06f7b0f86e01ee1582a51b2dabf558b85181df228e2204f41a71cdeb
+9fb9b7fcfb63ca775ebd3a7f91414488e6f619d3abbc1aa679663f55ab17a41e
+7a657016a4a7cc62521c5d1d6f6c096459603f9e8302b5452c9f80ea53a3212f
+4496a3a2d99ccd36379badaf2cb3bf45b348637a82a191706e16208c642104ce
+1f9726c82cf4c7f08c046684a364df545f08f133aef9e6f2fa7a45af9b2bd47a
+f5e9c06ca936d18ce818169aedf0ea756b741aa7305c7b50bac85554eb1db817
+a7645fb148d2f0d0c9209438a9c1dcd5b55dcd3ae861bd38fb0679bb4293aea1
+347a63cb1f70f570218dea7aa103851fe4c5b0666ed226b5b0d90c5bf366d007
+f0a2c76f37d80f512c05aa2d01bb410c58eece00b5051e61a8906e40ab888bf6
+50091d345bcac840964eda8cf97555d6f66c7c01ec3c06340543730adc34843f
+65cd908a9c2d68acb52fffd9fed122ffa81952fb05a129e9136ab9da668456df
+22cb691a853424cd746f3bd05b7bf1b5d975361b8c7aeb24fe456b7310835f71
+22d99f6a2ff1bc5673dbc050d44ac0d6dfc07509ac7fbeeaf70fe4cea2d024f2
+0f86817bcb8ec830397c17475e87005f8b30647070188367c71e4c0156994208
+a600c04c1191be78958c7b24a368dc749064809aeba1881272159e88417b3573
+399cd7324872d957237027c91de13e01a022494a5a4856017ebe476036d84818
+da39406daee2e20e6e35878b2afb1cd3612db7079d543acebfaf5f23ad3b713e
+ebd28a933fdae805c684db7994754399567053a4cdce6af0811b4736ec3a384a
+d299d14ff9c69ec35a4ac9efea73abec1bf5aaee944d91281a3f5cf66380b893
+e45e0e9bfffbe76a3d2b188878e8c7d575d0fce26c20d3b4dd687c123490bcc3
+a2d934e18381197ddde27e27ad7bdcba406094d66c8d83299631b0dc34fd8e89
+551696a969fdbb3fc88ac4a3614cf2b2c29335dcd6e575094fb01206d1703ed9
+b2839bb49a21785c5f57c883ff7a84c735b9c551f7ca1aae0e42110215c631dc
+29cb0960a0d5c0eccdc8bfddc14f19215b312b5858dd6ab4710b4b9f7187349b
+00d7c0ecfe319398dd689e666debd70ff6f7628ab910ba8691848ae186cd81ec
+b1012a0ebbcd58450027aa8623410a1c969cdd54b1e15047a9ce6c309ae2fb1e
+291451427138ea9b5a7218e2c32e8de26eafe200dd22372b0ec349d8e0687cef
+3dcdf93bc3b2b784c41816cf2587b93d5c6e9aedf41e6ea3f8bec24574f721b2
+7b893fb24d6381bbe0030c813395380bde57ac99dfcf680a76a08f12bb07f874
+14873d994af4e7722fa6d725ae4f2dd55b7d18fd0529c29ed4ee16c92d4c9fe1
+2c6c703c4a46c92a8ee27d5ea3a135fe320b1066fc14fb83f448ae1c8e761be8
+c58ca61a52a983fffe65615a163137776f27680090338f00fef9269d8c043434
+185d3803e3fe3644d1fbef46526bf14dd1112c4728c1909648fd55586bd89d93
+57d896e0a898ce4bf975850e3ef76d89023030a4f8a1ceed32527d0adfc0f1db
+de10e230a6f7e7354cc07593a9c389632887f89089587240c60c1b91ae26f02d
+cee8d6493f8cf548b0b61e9ca6ad271d040c6eab65bd850c02eabc2f19ba473b
+c021e592e287aba44ab9a974e06881c792aaaad92a5ba7c9707f8e725798c34d
+a5a6d798951a1279384056ea15da1efa525d9b328486f6790565860f6c4bdcad
+023d6f10c9533034e7ce7089124371e6d27acdeb0ae1cf257cd6757420cb764e
+fe228705a1239c206e84965d9bd62517b2433f7db9186adaa6ef6a2d9c471854
+60c08e669e35df0e1ca6f38fdb53acad80e48a564c791883130c238de09340b2
+96c010eddd4d69f388847a705898e8ec45f53443ad2c908cd5f81794b08fa227
+7d76424ddfaec1910c1b6e439a7b58e8e4a016a787936bb895c42787d530f798
+8c4aba370349fe5d033fdcc33cabf1ca507376506a850046d3f3bcb68458fbc9
+984b1c2819235170676728816465afc05dff895d959df933a2b853a637d07821
+a6a24a429fad4af56e0d129832449773801f34bbc5a88a490c767b5123f633f1
+aeca005295de1a1c8a8ce4503e18dcfe2904c2fb128d2e38dd057ad2742c569e
+a2b091d385ea0c2462c20d61647254cac69a1d2e3e7721f0b02f2f4fe985232b
+56815d52b7062fdd7d530b2f60aabfa66bd8d594afcb7fd817951d2318f65665
+871df8bab709c1b08e995dcf34e498e31e9b6cd931b336c8d0da5035cd90cb73
+a8f4d4b5906cf0b1ef5ec3d53a79a3769cb388ba17878bd1ae83e5461718b21b
+dc333bc3b06f6f217a7140650e4e388afa8e1d1979cbe0104257472be64f5b58
+b624693d81f932a0b9e3a55977378f31a265170670769fab7f623964e5da3e0b
+26f6389754d11d3869411709043a444867fdfed40354873c24b8fa363401774e
+7783e7ec80d7b97fca900934856f7258527d57ac838af9c67abb3ba1f31aaa1e
+dd38b1793b9fdeb8ed7947063d182c155310c15750a627eba0fd56fcc721f5ef
+5f843c247f9517285705328ee4eff2bee51a560a382c010ce3ae3b97ef932310
+9438ad5f37497300babdaa1b430feb064fcfee5fffe6385ade05ad9fdb1d41c1
+9abf6e69d45e72b35adc953c639031fcddf55dd380cbdd9e4d30744a466bc7df
+38120472cc777b470d8603865e20cf5035badc428f6214dd0eaf7ed5fde5d929
+7fe2a82efcde5424f76ecd6db757295bdd1727b92a379b2614c6f5e8bceff1cb
+159d7ddb6fefec64428bce7b814ae0ad2f82c3edfd662cae9f7b538d410863ed
+7e730d0dbd2b5099ab2332a055201a111972486bca6d7de51a89e0cf2d5717a9
+1a41ac5a1a329cf5f62ce34f8e1786713982f1ef5f163f7644b13eeb54855f3f
+50aac2a259fbbcbec9c148945830ee5d4c0645dd8b41dd0c34e7d5ae3570847a
+76154f32ba7e5863f7e650917edd4309f5a2656af66c78957074a0af89c4ba73
+d3d8e824805179f6b66541fa17864ed17675b17012a1d69aaaa6b3f6cdd17123
+0fc98b217f71b36d69054f8fb58a48ba3b9690a73d17ddb10932248ae4e2fc2b
+43b3ec305ebef97b6c9bea73f2c5e9efdf7d6889aad72daac6f8e0e8f37cfad5
+1824d4c66bc1393e8385443c916a9768f7ea004381a2ee05946b948e74afb1c3
+21658bac8603941cec851279df6f0eed938e432d887fffb29ecf226f4a3cc936
+fccf1a1f2e7b2d962a6d18a7e4af8c6506647389b84eb3cd9de51b120362b444
+e9fc8be18de4945b70725c51bcd7bc935cd0f962c857f2da7d2ebf7e3d5676d4
+df391481a8a64ae5b52a5e8cde83c1f3fe327ab53e376c81b500a1fae0b4f65e
+6d4d69a2b9c689d5a6b1f00283fe3262b54573f637277429ebd46dbac6fd4f46
+f74657b25176499f191ceb98d1174307c7bf7f2e0cb43ed8aec0b7603aab25b9
+10bb842f1a1cdef7c1a06c8ac3aed90cc8c51eee6674d65c439c95503dec9b6f
+2e5a033cb3eaeec0c17e2fb161de0cae39a74de61251d0e648de8b53a5d85de1
+ac660cafd5e24ec6af25f6e2e8f06b0ecb81234f4e531642e85766d46b0f7c30
+6a31dd6b7e317288eb3863d9dda19121399b430b7e33f2efb70c1de57a794c20
+45c41523d108f2ca0930b877e3a8e13df5c5386b43ad01b3b2aecf2a28e9cb40
+5dfa9450e6e6fcebf5584a23f027b8cc7efd60723b310722a81ae505e4706947
+ed5256bfc74fc673531383331a2941b9c6c624879ac97008e6cd71ff97d75d72
+5138d3080c1db091377af519e60269f4b50a049ea03995710b8e6442443ad875
+adff779ce72e1960eba71face57593db6b40954d0f391982fb9241fcbac558cd
+bb091ac8b3e6be4a3081abbf2fce4ffbc499f6b8f3df193cd66a9830d3013424
+310ea9e09278642401b44a817b738ce6fddcf4300444153107649625632cf0e0
+76e27faea1fe44721eac0109cec8f8cb2dd2f7c1112c861f320c2bd62ec4f5d0
+d1de1cddaa32a1b908e636c3281372b4bf193a2b5ef7746310feb1f6cf7e2817
+d68e91a65f640808d2ca58091c5d177196000537a4a03b029694ec63282f9f9f
+72f98ace63227b35d3f4ed05c6a3e109e9489ca2b3ae774fddbeedb456975c57
+a165f7eb29ae74ca3bb2dc8a8b9bc061d4cfb54ad93d408b6bdff236527db1b7
+8a781da9dcb011a0120824e87498bced1bf86070eec9692bd09bc4480fb42518
+f6376cc756bafc0dde68178a6657bb7788d388cdbe2f66aa911b1f03be74ebc6
+b6fa41f3dcdb01463c0262b1fb9126953806465bbf33f203b86b7bd0197aa471
+f2de144170a0f1393f9b64d60d74a075bb5d7700240212831b2be2939e6efb26
+8a1408766050df75ebf801043b6c7e3a8862709de93c9432c28075907118dacb
+2146eff240cc3462d254bfe81956b66079c2a132a3fb4eb1eb8e1cbcabe24a24
+37a9614358689336abc9d8ba80a7ebd47c16e32012d245eda6cbf50430debb22
+44a2e486651debd6d4557b57b7551af6245b77eb88412d616fabaf6a5ba6fd69
+999b8c3ce913bd3cd8abb680c1e1605f6f68d1c5d75f5a76c0a786d0c5b7f065
+57b507c66dffb2a2cd6519bc50c8b34b4769401c6a2c9291a0b98717ddbcd907
+b6530ad819a9abf1b67542ff6e51d32f7677614e825da5cb553cc53d38c9687a
+e344ca7de729a597c5db7404cc3d488ad396c160eb76bb5408c8e299265063f2
+32e02a91c90492c7b1fb953c8bca251ec549d2599594cf325452c0b43ae9ceaa
+b8de42c1cbad4cab5bbe123932d528db82fd0e08a1198182e222d5bb09a7d5a2
+17cd83ed562594f978977485e04a5fe418af9f1cb1f4f56dc54e518cb7010af9
+b480f22b7603e7e55c8a613454e74d2833205ac0e87a391c8d91a39f37a6e7c5
+3f74a1e63f3cd6a8002cc76b550515f84cc5b56f94a29c7017166757d614e521
+87642ef649e7ed1ea7f8be24c9cdd5679773de218724bd2230ab1bfa8c402e87
+a73d68b0ee29927774f502438745e71fdd0b8b61bee110e9be98f8c39ed7eda4
+04c7b0b23cd02142f708911e7b2c87b7a1c426cc6156164339e628b47c5f12fb
+496231870e521cc62dc58e636f9352ec6a2e11a70fe08ae2d60c3701ebdf3f55
+16a831caa0288eb411de5d48887638966aacec6815517d040f9b7ea51ae9f275
+01b1dac23b566cf7941e4e408043294b2d3c03c407c399b71c8a72eb1cd08182
+6edce415be1e5e42717847b6646751dd81cc4e4bbad8f4f63295ed04a1223754
+d92f5471a533bcafe0dc6f6b95ec83a5e354b39323b3e23a1318f0e76e8b498e
+148072dd0b810756ae672a2f633d8f4836cb0ebd96a887ccfefc32f2fd29e37b
+474de56d093122a98d0a25e5a7eb5e11bdcfcd387182adda5e602dcc7370a8b6
+b68090092d51a957fcbb52b5e4ceca8e3b95e6280cd619359f168b34129c5a2c
+ca804003473f020ec4d0c725914554b4c064f2c44e17870757c47f220fc8fbfb
+f30abdedbf7f2efdb31d028a4c871680419d4b9b96dcd5396af523d92fbbb83f
+6d0d2d686634a75024b2f05e9e1cc308ab3d39851147fb8dd35e3795e49e3ce1
+f131946b2d81979355a8588b93322378554b64ea84ccad2522c054e32bfa06db
+cf91d52dbb16bb3542efaf25624ad9297eb584bdcbde81830c6f18d5ee5ce0a8
+586ee028ca050e1348afa5132b728777b4b83d6dd96123028f8de9353bf2c0d8
+25a89121070a21dbea8bc12c074ee005b59e82b7b49204863ba2acc8dac9d651
+c849bf5f23ff428482ca72ca96f5682c9dea7b9c8b374381bccd3be64deaf87d
+c1610d069841a5da463457652b57593d2a2388e4e61c65ff2df04fde1c2ddae6
+4ac9e6785656da710d976da3d4adc6bfcab7b9ea968d97ddabb8c56c81c15aa3
+1ebb34473d93c73bbb80b286c2a41c1082b408f85bb2a4f66140741792748192
+eec88fdeb66542bfb82fb955181e6ee8ed22b716a62f38cc0e6ed69f1c92e1a8
+ac4f5af5a8ec93c78a0905be54155b8d79bd9dbfdc9cd5927da6546727be6919
+c00fadcac9ac032472c05f641e2f8a57ba76ab0556be7be1598c3138cc251209
+ea6f8ec268ecbec426ec712ca816e74d73c46b64a846af542f3c9d50ac30a977
+67a8052419ed7586f1967bf2b1ad77f800e3280447dea0374738863e1bc158e9
+b7a7d0a7153feb9eae5af9b55e6c625b4ad5b0d3cbc558f2468726ac76f41a2d
+67eb3fca6ddf918c6f4dba46a7bc177d87a9abaac8ed64850991e4e023540f35
+5f0259ea4f01c638a3dc35125aa286de78c202b3089258f2aa7e8dbf073cc243
+0bdee1de20cc01bf03bbb3e0efdd5eaeae2acca6c6db2f521e0c329a76007d34
+5defe32dd05dd5e9d23c3dc01548cc5452ebd3c0e51498bb8b4070b187c38905
+a41b49fa4fbb3222abb31770834eb8ea7caee8395d7dbbcb016a603f6443d9a1
+50c6076d8dd75358368f28c38828eb9b63d966b08e2a2d47a0566cc55d7583bb
+71b788f044521138d24cedf8adcd61ca2c8884daaea267c437afb86f2e151c99
+37a40c863b977bd5bd18f4e6f21614e33d0cb5612d113cc842e3afe52a70ddc5
+6c9f9cec6bf47ddd85b0af6be287b49bd4f3abbab7ee6fa7154b5710148daaf7
+82b2d21c55724bebfffbc589a4d6ac7aa82ae786e9b5a248d9230fb8bf69a961
+b00544a7ac510b6ea4253b884163c0c9d0ccbc384a0bcf46fc4ba16057aa9900
+fcb32656a5c6b480da7c33765c51e6272d58c1c8a20ef7397a4d596bb75ba03d
+e0e4761cfc379c1c8c41fa512846da2f60c537a7c72578dc83ab88941c01cbc5
+c04ea3133930921d900ce40571547f7df5c417c71a80d18f5172cd080534a4a6
+f9b350978d5ad73d081e86b2f6b31d3c9f1cd575abf2164b6b0930c194c110bc
+79abe114fe60c4fafef7cfd58915eb9ab966fbf9173904b62c7757bf389ec442
+3dee9341fc41832a3910d16a588e4d8f6fcd59cdd96a75eb771b58150747fba0
+68d9ff85b6d00e88d5c84ccd0aacb67e55f687a1d72a52e1db85bacbd2f75fb7
+4c6ee716b65c489b0f464ec2369df53746af21b238a875862e7039b155a6001b
+df34765f8dbda67c99768bc6b2aba9019dee198ea9cbfb9a76d04f7104358147
+a0fd07cf90762b51b2b5b6d6fccb7fb989f6a0548d86dc693c674abd6a331cbc
+5995766dd6bb572ea3de0bca275d4d6ba8bb74287453b05566d03e4002bb5b83
+db19b77d95b5a9c3a4ed483c0787509d7fe5b4cbe8a495770f06e14c23cd9c0c
+8cef8e98f49b13b28b63d6f6be824a6ed417475ea49eeec9eb3aeadf383993a3
+05f462f810b47adbd3159b5608db8e92852cacf5b6c3d679e84044d7ccbc382e
+42690e5981c380530b5097acc28136d74343b320a3878ce714fd95a3c1f6b170
+813bb05281251b41dfec23b4ddb8f007c734a5f97c36bbf4fc17c739a558a225
+7626d7d39bc1d3673839e3cda8ca35fa7da1131cc2e9c899e7c42f8204e2c143
+854c84964482b2cb98a6534041abeed85937c895e6dfa99f20179a2887bc6aa8
+804f787fcaa357e5b701f940b29a5d887a436e16a171c0aa72aeb4f1e4460a7c
+10c9ff91a2a076da8b359c724e403abc6c9244983e14bb9b280981a415a553f3
+06ea05ddb0ddac8a44318393a705d596995e3c8cce260d82a9d355606b2c77d8
+012554e5b98f847943a9a16f2b4a825daed3777408c3032bb3b7038a80c16e24
+370385cc6a74dfb7d6beca76ee36b5037b8ee518a872379c5c5fd17e3eb077d0
+1a16c3c73a6b2091fb908f2ae6fe80a21485ebc1c114673914d0a48685f44610
+382fc5da7d9d93ddc63d68a5676b7da8f4b6cb10c6e5867fdf0126a0ef8efced
+e9fe56f8310382e5ea8a9225c0081e2edd3ee469e75a3748a5002660d3e37bb1
+249dd3df0d52e362a8be6ae07c7a79f525800d5715f469b002b9b0fa9475c5f7
+c3d3a73e73aad16857781557335b7f46f38fe97dd4154305f607e4559f01c6a1
+531437605dfea3fa6730785e4d0534bb8e1fd49276fe16a3b5c36eb52ea4c6b1
+9509d295893cbc44bba1d171bda74a5efde18048976133749ef4712b6a8c5cd6
+9d91318453d6294c86572429d6fba3fb16f3f88d3537d449cd97bbe8b62bdbe3
+1f963ab2738071e5a23ab73bc230a4c7f619208643dde7ba43cdffafad73499a
+1b4792f05ea7a8138c118117798c3983ccc67a216dfbfc9311fe399852b7d5a2
+04fecc4c3e80403c3cdc7358af9526cbb56564e72693b308e127ed246b7be1d4
+ca5acad6cddb74056b7b62c88c2e8ad11376a2f301cd83a5dcdee4a6f372d6a3
+55501689ca758e43f70b2d3fcf6d09d43bc94ed5c3babca696d6cef972610f72
+d8f49eeab5ddd6c33b2f121ea4a50eb4092878134acdfbd0715d5a7cd3bc4874
+4a4df24d9bb6a849362d3fe1652b7f70d3d634015e6c69de4f3c99fc800d674d
+46d3d44cd01fb92cb2abec612a1703c892612c728d16e77c8ff7d610ab60c36b
+6214ece00345b2842d27cc4a226b509b8c482d45e6301ff39d6168ef43cf1baf
+d5936155e6f13c2302d5fa449835f3c11216afa8a7002c9d4aa0d40576337864
+eb1bf097b4cbbbd74e7188f0b4f198f7ce2f050eb5f66877948752d26bd91575
+992fb8cdd3c3d665a8f241e5706dd9d18f4bb52ef38fb44a8ce6665b1474a239
+5817545b8854e4560d1596442817f63727c4a31eadb46335a322dd08f3895325
+5a5c464ec1daaae9b9ce7135854de6e7ac96300578a5e35e4e0bcfe6aa47ba1a
+82467ffcfdd1f9fe7cbe89f3ddb422d6c5d4d52aa7be5112707b5d6e09b979e6
+184fe352935713cbce25bf45daf535ccffaf66a492090a961e7291222d0dd992
+3e7bfc52b94493ff92cb552c604d3365356f91dc6d2341977b506e2276c19afd
+2238c19a7b246f73bd68921f474a90711a052de6b12eeb129aab66a17eb07182
+97d2295bb8cfc543fe79c42dd6f5f2cb56c3dec526d7eda69dc5d8dd140707ae
+d65836c189d3a90c584ebef9e5f3e4b8a8ec60ec75cbddeecc55ebb315e52efd
+7f22e075ff5fb11532959b5599b73872965e83c9a1dc9fe8755c1f6f66c299fb
+f413c2b4e3e64353352ea8acc43393fb3307ccdef27e400680eb93a94ab3bcb4
+2473e1dfb8e49786d57ed864d6e5af455d3174f1f0d0e47c14358fcc78ce5eb9
+e590a6ae66ae20bd51714ded904d5fcd55973ca2164d6618d4b44bd4af9bce8a
+1568f16e70da2b6c5db58e729c8fd02cac3996e699192f5798d1b7506f2b642c
+4dedb3c2fb05e4064b5ab65680586a27486b5e0b84277b6cedc286c25397bf26
+cae4a637f898491c46bbd51426742d8d25f0f726df98e643bd86febea6895e82
+23f1da3a70d1f93e601eea7ec4a22aeaf30c4531ed20eda842f48a84cbc2c43f
+67413476d3a120ac193db321365b90a79946fb5ce0c0781bffb3a916e49147cc
+e9e55535c29cc90dedc3a6dfb098d06f52935862fadb6a0bacbfa206e0ef87c9
+71f2861a3c657f86a595705e42f9f9267fd7015f64da4f3cbc25d1f574c1e6f3
+f59bebc6ec5714b36e2f1b8c353c98f9d2fba5f3e552acb00fc78e1af41be370
+adb0a14cafad1e939c8d1c0ef56cd7fab6fb1636940b10684ec39a10e053725c
+bb25bc919e97fa44cd5b36381149faf7706e72282c697a8a6a1b5700bce01a5e
+42189523b935cfb73d7cde6259a0e77d46b99ace9f37cbb4beef91e1a85b7cbc
+4e8840bc30bceed663d353867e519ec4329f277a59746129cfbc00052ca2d81c
+e71bbf4908781a9e977895efb428ed2ff6e79b6c8479e660ebb113531368bf86
+787d75a2ebe993fdceabafdb564e3d870a11fe98a022f8ba94efca279ebbc0ef
+3aa26965bec50a15f39d976b508ef38ae32729ae4c4ba6b395785881a602b716
+95f33bec900b7bb8d5f2bec23e228e501c1995d6f83ee8b871d8167bfe861464
+c5d94cb15a2bbed8fc3ed7af924a391ff9f94e7df4781ff21236cb7141bfb19b
+179109bc5b257f9684ab72a4155572070d4724cc5ad76ed96d7896bd96d95f1c
+04e4d3f4edf24a214287936d91e1d8c82aadb8ec8acd9aeefa364d5288832a4f
+501c0ccb5e0c5465c7a8d9076697fc6b2ac8a8a97cb786e5f58aec260f9433b8
+48129b5329c7f513a2c7fc598436352569925e929a5ece84012f3797527e407b
+fc026ff28ed941a922e7f8e627b07b604f9670f90bc84552fa94272f2edb9fc5
+f193730eb58f452bc0a2ecbc84fb5fd34cfa75208d14b5e1451fc09262cef79f
+f97e2270f1039d9f634b9b955f98e0dd4d38b400c12dd54fcc3194c3add39542
+91fa50be95da8e6063592501b420dbf59d7c4e5f32c7138758b0dae5b426a0d8
+7a94a28c58320df9f0ebd9817b5d5425729c1ec72a80c882096179b7a66d78a9
+87eb1d9efd4448b835aef79b717db9b27eb233529b58b06d2d540f16b0bb8514
+c412b8e267f1d2549a57459c05cf4afe3d0d2dbd19f56b4cb3721c169c9ef030
+2dc0199ee4ddd1632d839a75b2c8d4a7974873ff5a245a38f6820575fe5d07f2
+def2a9d795a27e9063d95b45636b796ad012b750d84aab525e1d00cfb439f988
+ac569e26aae2aae59b6577594c70317fae972004eaa5653a91ae8700b86021db
+b15ebe126a688b6edf0507df42d8b25eec21b4c8c751676dbc08802e39d6b3c4
+0da78af0b318d5f47d9a40a8c12c49702f67db3761411ea8385135d463533687
+87a2e345492b3fe05f540045ba7da9f36c21abb8a4b094a7b33ec4c0b050a15d
+28262df8187297562ad73c7295fbc348961721c74e0c0fe9d849826c41176e06
+348ca673717579a13f6b8e032159e0ff16da38356ecfbb4a6fed16f909ada745
+f7c4b29fecf124d2de80ecd27430aef304a659f42ae43caf29ba8f29e50a361e
+caac2ce1026c58f46a727394e354edf7b83d53410ee88be2fc7bcad125a18b18
+ca522a3c174afdfacdb410a83e5d30f87780de2ce8d797b01a0b3acb33af4f06
+ac6676fea4985016809845926d39d7fb38ec5b08a91ec778614995335b8b8c67
+fcc7f9c44f8be78a4a7a8eebd21eb3e4ac6d4f98b549b17a91885c747ae46f68
+9242ec715ce92d9ff3e1cd511e7b9c0cc823bec9bce7ad987051bfa8c5520ff9
+2cfacd067cf3177fc15d2edd5225c1f9f09f452358530cb3068948bee59c0b42
+8fbc731a78da593212415a6aa6593083ac6df98db56d44f6b9dd7a82b4a0aecd
+55b9bcf27d62cd61b5b42ca42b9680b86562b87cedb055fc5cd2c65a0246e5bc
+adb7bedf804a5e905fda6d9baf8205b7bc5ca8f2d45e80f6ebfc4716bede9217
+c6b244d8a22b6a09be9dd7536f0bf036ec9deba8ded954492cd1af62d910fae7
+2c70b028572c9419cd2c9917c4f4ac49b126c8bebcf2da2aa01658e82c2ed75c
+a63f512655fe8d763d3b45cc2278a560f5c95f60c9cc2e8760ca815af22bca6c
+4fecdc725e6281c35df41f959388a373b305e88192645e641ee86d5862fbb19b
+d47d73ce542dd000a6c65bce832c5e4b6f7c8272e1ea5812de13a4d80b68e402
+69e3efcb4d1bb77629631176a5aade508101de8f5c0256ff729c4c750955a7bf
+9c8e72445ca9f5b6f2fb876b0e9e8e93301b213e0a00b5a2458cc5cd225c371f
+6e8eeeac8979cc3154565f4523d756659829f6aae2f05aee09f3942d77152d86
+8c1085a55ae492494a6e3eecea5d9901979696e0d8f3261d609be74a92a3fb1c
+e7ef3f2e9130374fd5dad5e85335a4f16c5134fe8cfff87a4cae9e430ea786f9
+cea7949e72a8573e21c35baa314fa995acc765609c92aff3fbd986eea813b403
+bc1fa83909d45b1fb830f18f6a866986d44a34056a5e0f3983696f0396a279bf
+b99ef4b8a777e7c7720b539d9ccead4c1a30730f2bf0825a026bc30a4e5fdad0
+aabc84fbf33d9e3552c8f25e3cb34d8d6aefe938458f4de4bcbd010ecd05364a
+1852271bd38220f5671199e9814dbf4c193da8c65daa5f0fcc78269acc0a7515
+bf550b5d107c4f88c9d743b3e4995e022c1491e4e6efccbe7a032e5c1bc95005
+f1196fe154d00a4a7c0b8177b826a72e072ab972077d79f4387e7f8074575de0
+e46796daf12790aa7d1d2fe75242710bc29a43cab262fa43f7c326f57a2b6a35
+4d25e4bee97559b4db643a424ff3a9356bdd9049af73c97254f9119847b3a60c
+448114006b14025ec85a6d8427683d3d5097266b5e270cd51b559f2cd5b1f6da
+1e8a74a4515cf0dc62b674fdb5199ff2223f344d6cfeb27ef98ce6127a0eb567
+5659bc725d1373a32c10b4ef65ad245bf16579ac49316fa78ac677fd7f9fd4fc
+c42979812854790c54d96fa28cd98033b5d52135b71fa872b63956ea893d6d42
+b66125948943586ff0129c43e9243b6905f0a8baa7be6a22c679f184366580cb
+af4c4ee1a63d7dd2509033b21ed8f1b2d1ae2d54861658cf3feb6b73bd563ddb
+a98587c078228c990784e1e8da1faa66331129ce21f69c165533f94fedee0b1e
+a3898e737da06e17428b457fee94126f0e8b6a76faf29de39a66537d984213e7
+f501da338d60713a644eeeb8fe37a1ad5eea939bb0bd3ee609cd033292a05826
+0645dbe47b03c8834d54ae393009c4fc6971bff9d37a3eb2b82066248523bb30
+f15d8dd9c8d3a5080299ed84c0d75021c1ffca5cc87a0a7293f6a296af5a7c37
+04a4c6dbec533c9dc4509b2cf944b61e12fe89e6dbe51eae49d0076bff846ea9
+805602fcdcfefec1e55c7cbd003f00b994c89eebcd736b77594ebf02f0c055cf
+f1a8cf038d42c1b2a69fd3e413b1ce4bef55cdb43952c567e2989e7525321783
+1de6b242932537f348e859e6be32b1bc78611274de1750c09a468fbe2eedd2fc
+134a9163412548b94d25367d79130295ad76c8499674531ac9f3976f27b73525
+8273542030d190f82971b61e63cdd9b98efa535d3b56ff32eceebd5c85041358
+b9059e728c55ab82dd9cb6ca7a68530a0406fa904a355c4fefa9ccbadc976975
+5d1500e742ce28a8f44c929fc70caff9cfc1122e804ecd2253d32ae51c99b066
+5a7aa866fd432de3ccfa7bbcdbc4beeadf4554bbbd030c2575a655fedaac3fde
+e01c8bd57a377089605326dd61a5a2d40faecf184aa5e2b24c11b0d6a283c5ec
+06f807ebfadc06efdc660106ff96a59272cf94aed8d42ce711986cde1aac3f64
+5ce3d14dadcd5ad8c11d062915b9ed8104cc6db19fba4a3fb470b87c167f8073
+b522648823782da46d977d11f8c8ad0d34c9b56ef84fa7086a8c51d1074a9a2f
+e46c11375b4ee9fc42bfb035b58468ee99f4b16e90df4636a247aceb9f02bc2c
+a64d2e70a2d2da47bbfecabe2c83a252583ebbf2433a410ded29bb7b89580f54
+07a0233e3f6637e2ebeba562ab66a6330a609d8fc599957d9edbc03410f7b7c5
+ccb4160adf7a3f07c2ac504520662382652d95f29f74f4ec0e6473925d015d33
+096fad6f3d9185dcfd6c9bb714c481349366dcb4bb4ef567d6e54dced6f54ee2
+30413b48aa9fd3dfc08655ef26047b7aa2aa98b7670295d549066e7707420fd7
+3b0e805993817ac17c5e796c03f906df6824a121dedcb042c2428f10962f0042
+0ff0ca0d3a055fd3b2bb3cd1da027738aeb90f305095b9694d5d1e28e84daf15
+85e986c6bc617a2e3761a431f2f162c46bf92ed26ff3361e48d8c3fb4bbf761d
+0475bc8cfed6c57a274bf865043f05f7d3bc2db35d106632ec9b9a78c5bcb252
+040580b183105d40289a812660db02a66bb3ba0116a9bc3bc9f29559ad948191
+756737bc5f43ca9dd64e0fe4a950be15168094301c7dd3a1049edd48abf9f8f6
+ddb25bc8566ea96244e4fc3cc4cb09d386cdc7862f84ffdfe7f9d53ef0f85d9f
+a8fb41401b1c2b6e9c5f351c0c052addc4a0a5220eeec61d12745e65d03964ba
+a0c60722596ad202ea697128f9209983dd4fccca36a35e6e93d97b692d4ae7c8
+e6e6f96eb820ed59483ff742005c2c3b748b1cdfa64ddbc9024f893e95919106
+fa25b13fb38d868e034bfd1aefedcfe7f943d03f038cc6db4c21d89716baa9fd
+db9fdd208518183514a6d592c378828593bb9a2d6ba20ffcf70d4c4e96112c6e
+1ea880adff01acdb509c2e84c66ce9f5035390e32d7c4f5d4e6582701d4a8fbc
+168b617efd60ba429b5a6554e1f5d9e1921461f88189f2e8607c2d50e2d4c40c
+befe3a7d259933bf906257cdf1b28310461be0cf960722cca734bae92b2a4fdb
+08c73cdd268a4cb1642eca501464959917c05196f0355b4f30e7a9bda542ad40
+bc9263f981a5d7010e45f37cc56333b180f218c4a2d32f0ccf924088502e0663
+7737c1503d11e14bfaa5a87f141e18d895d4f2b65bad168185439f0263d314a2
+abdf0e04637fadaa459b5f3d8cbb9dc41ada23eb40ca513b59d06819bf5bc943
+259e54d9722d27ad10a94ca1778563befd30c3a0aec9d73b53ee65ebd2554d39
+9e05752f1991baecdb7061f20e10c3f26a9c56d7f7bbde3b65a242d5da05fab8
+72de6726a86a4c89c737e74a2b6935b789c8c0d6e5d0e901a39f6bb153b1fdda
+c713c744bbb65689b547e56f297880017139dc821855416b715ac6de2fa07c22
+563065d654ab5302643e2ed0d3fb428ad6bd31ec42d4a72b77fe5011a769eaaf
+5286ea1b0da1613ddcdf7580968f0c18de3f676a03d1967d1d999106b44a8d05
+d3f60185bff7cf5e1270e467d89c97d400005f150c4f439aaf1b3fa229bc671b
+6e5e6f6a4d6a2cde2eb8d8249aabd4639e3d695153ec702c9bb92626b0460734
+39be71982ad145d4b6c378c5d96e7b7ce9053503d4e9326c6a59eb4713c57862
+c582c02e777fbfbe42eeee44dbd73e53dd315f1b51ce28cc4a0e157eb56e1f59
+4fa79d8820eff7ec9a28acceeb066e4cf38d5a3a4e678b8d59376c7f5ede4629
+555c0e20285590a3ca0bc04bb9c0d4eb46f22b3b52f2e5e2229ebd8f3cf40453
+b7e1e69817fab4831885540dd2ecf9015c8979fd933724343221d5851b37a9f7
+4d6f366229992277c8516601fd5374b87e5d8ce04b79423d7ea132a6db29e609
+782ec3a595c803a7ba972f87e7bd4e2a4fd9970d706c8aa17b2fbf3f150a28f5
+e6fb5554bf09b3272d095b38891c961fb14f25cd3d0cc82f4cc99b6e1043531d
+28fb341f4e7a2db7dad92729f9ada4c434ce719fb7c546b869349eda3637ddcb
+392caff414f867704b4a8c363f90cd7ae15d2efcc42968f7a6e03eed9c2c4d68
+b72facf77a7861cb37a8dd5f09d8890e75be1e54c6b40f6faaec932a40be517d
+5cef65cf637d945817a471929dda2016dfd3bfd663cd2f0a63eabfd8603c277d
+3b7b1ed1339ada7206d6ed127f4d6582cff9c7bcdbbe0dc58f942c3655fb69af
+774c6d81d31d46631e3b2e969f63c7873b0eca50c7f32e553f6c4056c7360df3
+354d7bb908244f7bb16ae39ec060f738959fe012480884af812e6c70f3d98c40
+6932e2b423e4f3a113a6166c2e87c0199b938c2a38e07c4115c123a3e9ee83a9
+b4d43ee88129c980addc642a776cd08593469303f5c8031532926a9cb4a86cd0
+8113b5cdbd8e8320aa9d5cac95d0107fc726bb38a108d9db85e4205f0105c764
+d3d9228b9f866343ebfef90079a70d8dc514dfc106e134d5a3b2f779c3ea7af1
+5a07ddf89e4e0078903c53141a9b34d7a4eb6b537d9af03a6c4925e5f984c0ca
+294ea93af8fb265995efeba7d20173428db7ee7f6858937d3b956921f68d7915
+43543edf4ae19217da072e348997362dce13a9775a986b18e705eafc5a7f4be9
+10ee5f7c94f97cb2acb2cef4177ddab660210c561bbcf554209d7b0dc99cfe4d
+a030e9b1db2862e6b8623ca3aca702b25aea793108ce6c60dbb39fb5a4bd1d62
+b63c90f90425b5aaaf27ef04476818b93709bd6be7ccd9280f232f2e773a05b2
+7b82919b6ce7b9f02a2dedbfd300dbbd0d9e5c5d67d79e537f9515d45b7347d0
+34dc8284e2fbe4e434512f99525fdd20dd7f966c54cd1b5807735c57435734cd
+85f9db9f93075b2658a81c572666d2a73fc89abe466790e11f941f3bf55de0b1
+b3bba7ea7ba1c8cb9197d1b5e90e725de7cd9d5d1a21970d91508ecb0d1df4b8
+43fe956d5fcc05fb814afe841d59b91d08c87fa5e5f9d7c67ecea0eac04aa115
+a59dca5204ed23b86da1b98e1b4db792010132e4eb3e05f870f60d1d41c5e22e
+a86ba3a82780a0e35427f371e20130b4cbbb965b559466c787bed43d6d178232
+957c8672fa44223269d77019ad2d471b4a289c28e0f2ae4ccfb03d1a3204d771
+0a1b56e4f246c82683bb7cbc800b16fb3c40fc542bd75d99e28a9f52e5dd9751
+bab3b9c59e7e6fb7017f8dbfe2b38ad9c6c9ae76b18b8efb74b91769d9c9b796
+e73ac00ced70d96910016ea6da1010d3a58c01efbbca2a43284e7a2ac776ea51
+b336c7971248ea8a4a29a47cff6292354552e69372f31e2e605193c9f371d3ba
+fc81a450aa25abb86508910ab14a9eee28a676e841306c3d7b3f89e16edc4123
+e0064e3fc07fe56a2daa2ba78687bbb90700b30d09d61077a4439401fe690faf
+8701bc6dc34004042d4f289a1f41b0f6615c1c02746fd357c1426b3a9c62309a
+72a464aef311c9867045dbf7a05f42c26a0f5b80b11559a09b384080e4f95394
+41b90007a592e1aa1cf8feb1deb6d162432240d900e4f31354e9f1dda029f26e
+35e4efefe1bcd958ec663557f2eae83adda252aaede3ec4e797bb5e4a668fc5c
+589b2670722006c2a61e6028ee2b0a2b97be14070e692ce416208056bdd04b8e
+64f1f7095156fb59ae1626d8242ac9030a136a931cc61fa94f6a982062b2150f
+f820144458797023228c32610ecb5a0ca0ec9b46a6a40bcb6b59e29d7a2a51be
+a8570e9705909019140510061cb02c7f39b8974a9850954e3afa4f800a07d4e3
+0401d7268c0080b5e33d5f4408d3bc22fef6c93c169ec5f1cd809fe68daf8749
+92e4660cf257d56d5c972f876eb85e96cfa65cbaa12d78983a837526b5810d23
+a7ce2f53ab20673c0e7f64481eddedf0ac316f871c8b7c8f2af7897fd2b3005e
+c09c062e6e6bfd0f70895bbba5f5157358e9d96346b45b0e5876ab127f69927e
+d970d975b06fcbe2e096a0dc9be9a0070e0861c03eb385afcf9fd4ce2ad0c130
+8193692a85f6b503afd3eb056c1b3a5c271434f2fbcb49dd2e010e83f5b0d1c3
+35d33d7943ed7c837ec2efe07cc0618642df51c23c5fa75739ecfd3a88be762d
+8af110914c2ae6b958f2159a110fb3452fc300b9b81d800ef06079c413946fcf
+752f06f47dda9da6f9300055e474bfe34454d335b56da0dfe5ec8b1c17ff1dc8
+558e2bdb73706086762e2db001bfd3162a2187159cba93047ebf8d5af55076be
+a21bdd0c67b3c53f4e9ef06deaf4273acab5a6df72b1f92c2e99f2a14ef40c77
+451cc88bd75fbfe60e82f40398ad83adbfa6b2a6b7f3734d37fcbb8e083c591b
+c630fd4c5342e61d3fded8801b51a11976d7a8078df62ec27226879d492f5ac8
+cd5c381d01e786d56486b3102a978d0893fbe4438970a54d0fe11de77d0d5035
+05d298f13576c26a98ef42ad82e314eb580d269cf07268d37c11b51c9a211ab8
+79ced97463650798d22dbae5e1fca7184f923e365797ca927936fb3aac77e332
+a4035fed6b2c8b3f5c20eb7a31e332e5856e645caea43a633e4e6d58acaae61b
+52d05617b8e4ae698753e23fc7f99a07a5b03d4cf90bb1a05b628773a0435ede
+c0bdb663d4c8310c87a6f9486b918e72ea8650ca67444272982823dfd0902774
+3f622c55a8a6bd1fea8813868f68c735290b0a2e2b7d9bfc7ef59da727227b4d
+1d1756ecfa76e50ff3910d37964f779cfafca56f1dae3fac77f63b01add87a98
+b248ed31c375723b0c4e405381fc1ad796f80ed3bcbe232577c76513a023e33a
+de481a9e01ab232d4e3f7f9c974dc7ee70ed5700d771912fb385419f74a3ac79
+e6c2264e706969bb6d385fbeecbbe8a09dffa50b6e8041dfa7c5b6deb7c6f5bc
+494490be1ec4a9dbc5e87c7d27bdfe7920b074e4b06ed8ec359be6bc1454d56e
+297f769c149f7690e1a4cf72303bfa6b35a3fe5e710526bce30c2c539ec049bc
+e9681e40c9f28196dfee24d33a3b7e308174e5231e3b7cb9198cc081db82790c
+daafb69abd87f3129abea3e3fd19bf363a6eb7a9593bc6628832b57be501b219
+9db50e3f6a27b0442ee2b34d69033bedf568046fa9378c41394c6af5a810ef71
+e2ca01e8833875c0cbc6b364afed06dd0f27a6307679b91386ce328ec0c06c7c
+f313caa3286f39d03d70756d3823778018a30b5b49a00ac9d089d9033418ad67
+03c4c5868d653801dff4388653f8cd7d30e3326127ccd05fdb2d9cebdfbb6f6d
+c929d551d1796d83bf3f63189510ca808f021c539f46631ad69b47ee719cda6e
+9871e8e63b28e570d237bfb02ca66e337faeb15f979ac424b00d90467d02423c
+3f602f5a8ee61f637fa0f02a923120fd6aa459574a731f8a8e2e7902e367fb74
+b6028d863f1ecfe7f458c05fb401fdae2302d0944d287efdf7e781f6bd25e73c
+52a1adaf9f25277fa53b33180e993a5963948a7b37a356f55e742ff830c43d8f
+6c408292d76096c0ffd2a125dce17c671e19f7012de650fe4f59a2de5de2f52a
+47bfc360a454ebb8fa294af70e34ca315cef86b95aa9e4ddd12fc979542ac2af
+afbba8241d84e1dc40482ec7252273e3e5094dcbbe4e5622a95652c72528d457
+f3c9b502484fe7389d054152ebe3fb39de96cebff6a9af7791576cd4596a0861
+1c8f664040271d08a79641f0f661189899513aaab8aeaf5b7403fff2dc6d77eb
+511e11c8154d1772ccbba3915106a69fc933144d752d2a8b0df9842ec3f97d3e
+afd6dfdecdff57fa23c3f800978ffb784d1e0fb01e277a22fa7613fff401d45c
+8a36c38efb2371129315b33794e08e3ebd50e1e0cb4a04669001ea2e8d96dc8f
+1298f5e4be216f39d2659a39a20f232fd0acf93a4377becf935234950243e26b
+96a4d7f4bb97fdea4a45f1d7342b2f3562e95f4cbf388f3d37299e9564d2d481
+d221993c4b5472e6093458e7338cdd78f83e4d7ddbb1f7cdc855788f48a208bb
+c7139ae4b03b8e601702c224a61fabfd4ed2691cb6d3699d5613a0e97dfae548
+75052ab893c0edb8b300b74b4daaee7c201e8517d62d6e99472ea22419e51737
+a3ab7b77ee72abf30af4b4d13da3206fa87a6d42f07ff7f3f80d6ebf2440b580
+be3f25a583d1ea64ca7282c897b1fe147bebb0e61378de21dde1ae8c954be516
+dfa9daf8fda0e5938e8e66cfc0afc7f3b1da1575ff4ead6a1fd1ab3edf8469e7
+19d652b514d0327281c0b5af93122dd3e4742e93a44399939f57ea248f5452d3
+5a458a24cf50cb739a3fb814b9ef03ccb10cb833b8dd7d22d389ca8e4f4b4eb7
+43fc0170e77b58ce517743cfb9607cc789a95e14957037f40335272050b0ee38
+e09ebea852baadb5bb4f6d2a24eca215daa264c9e7a71cb023e30e286543d8d0
+d124daf41a765ad32668c04e57631ec89ddf8e16c4885effdc8fd6af4aaa4a9a
+a645d12b5396b18b8a9f1c76cea1e7e4b84b0a68807db25412a1c97415b30bb6
+b12d26349c9c45386b900c065bd22124731536c70a0e16ea532affcff59aff9a
+c36493f3029c990ec9512975fdeeeccc11b819ce2258decde4392d6816fa74b0
+84b80c7333a3bbebdbc61fb45457ad7cefaf357cd005b582f7f3152c5a4f6bd3
+14d521f9727c7816f54662f96c6a9bed1c23bbf5e6ba5c1c82c92f6f60b36be9
+856e4bd6bdb7a3172016dccfb87caada9c2c62d5cb3b34cc2acf0568b4363a4f
+5acd0ab53f23a12074d5c03048fc757620305adf431616dec996822f12520e39
+3ba093e569a91dc608b8de9d23c5c7a076becedec28e9747a46227c3b578867d
+9c14c4e53bbd55e128ef15e773dab965af9996274b7ff362d6b6f2463de96b2f
+fa78956fd9c8eedd3c9eab8a620f3a757cf7389b4a7736095125f6ab4a2645bd
+843faa7cbdbbcc86b428a27eb56b34c9025ecf17f0a0435b6b958bf334813064
+3871c5d9a432fa78b7ad7cf1f1ee5a69954326629c1b0e47ec027a584ecc95cf
+1e3cfd71ac60b8366a7dd1ee4a5fcd3bf508ece17c470fdf22ca87a1e88df459
+774685679c1f082b8b0c9d1efdd419bb591f871b437a383cc08a1346b2d5f620
+1f36e8f4e8710aa9ab9e0829261cdd4eb6789c7010879f17dc54e5d40aca919c
+08e78f3a4d9b5befe5f3e9ca4397de1bb1429896a3c79f819f7b46bec70f7fdf
+5c397d9ea5e508e97405d297deed77e09a1b96d0fc8fca5fbfcbcd12318aec9a
+83fd45d1317d4241b5c9d5e6816a3d6fe88842fdafc98483799d60615a0283a5
+8fd8e856cf449a77754f9b27e518ecebd53b841cbe6d79f5d59b7d79c363755d
+688a4eff59d6dfa4319686e94a39d384dfc9455d56cf2455784d2f9dcecde252
+12f41999debbdb7e8debb0dea6f54c2ca6b9250467254db3b9bf8135a0d06369
+9b745b59fccd3315dd4cd36e74105fe47eba7a8b76a397a0abe0e0c6970e5513
+a202254a5b0d73ee86a82d8513308c8daf2fabae34623b513ea651fd787dbc1a
+05729fdd400d50b61b63457abe225d01841c979bce56a9e68e09dccdeaae34a0
+d129d687e7a6d99dcffbe78607650892c89671842a40d3277763d1ac9c001016
+962e20dd4b25d087595fb4c7f60137006b6550493d5cc4c73d917252873dd50d
+f816e13d28a83e0c9ab25ea7fbed4984f9021ab584d2015e619e978e0d34c1ef
+8950844ed2f2528fbc043a8950406d1de7e6503b977b535360fa7c7ddf2499b0
+0fed8b3022f853ea37737c4eb2f23cdfd3d87e621e48d9cf19f1ba6fa1c4a426
+b42f276c0edccbe1e7c5de755a34bb48d0ad8ed0c1d26cd9f04a4fa890d89673
+21fafc9b19e2df7ccb9b24aa4dc7294367a102374e495f534a3a49722e737c27
+48cff058110a4f74d477ed5b3bbec49d7b0d9562ee0454d5145c81603bfdf635
+4d41bcec30a5769f7ca30a7619a6548254015786458d2663c7457f3619770aca
+f410e75009dc13bd2fda9475030b701876f67cff49712d679cad928b53d44ee0
+a57969f8685f368415bf38ced234ef50d1e42a5218b2ccd7f08aee9abea4f6c9
+e985fb15a741a752a66c5df56f6d78029e5ec0cffbb49c8ed20b3996914226f5
+8ccf9af2975b51188ef0a690d4cc276e1aeecbd8c5c6c5882d01899713435f74
+b477f80c74817dbbd58acbdf06321a3fd34d5870cef098ac153810431bf50959
+35a5f38d53bbf03a4c47a13bcaf3891a2fde2ec2a6b58be7f4d872102f28143a
+22770b92adbe61c22791b3b5ac8ad7a75ec13e4e8d1ed073a88c6abd2c338599
+6acf990ef38576981fc5f8f5978f541593384ca28a4f7f7f8e40ae2c49c5803e
+0fd45adcda794cabfbf34798400d92cdb8e1aedebaca1013420eb5aaf340916c
+96298d5becbbf04ee5d0bc9c535f0f3fd911b737cb706de5013bdacd238e1bb2
+4dd9c9386c8472146bbcbe5a06e34858e9d5043c7e0b5ce5fb0566340da8f84c
+5f1820e6167c0571f8db9ccd0d880f171a9771f7c3f096bf1d9b7593f0d40080
+2abf2fb67af02e85cdb1cdd54e9b45988d4bfc6b39b404566e5ff135a16bfdc7
+b6675106258781175befcae0d543d71430ac5c82d2c6219c95a50b0b9a3d6661
+08c9a72e2967e5087ec134af019533e4153abbde6e099305dd150b4463a8b963
+dd6091cfafc3cf107045e7db4dff36d0a55bb743c4205d5214c679018b6e5fd1
+91c47a27933ca12073e0aed458a6992e4727bcc0cc791c4b7c8e1a07d99c9a9c
+777e3f84a85fdfaf092866d6205bec26da80bb6bdbeb08baf316a8af8010de6b
+ebfcd928af98be23d9aa98700c43bc1bb2d16b5b392e849658427985a94357cd
+bb20d3badcd2960720734f0316e431cc1d1f0b8e5bc7dcf9406040cdeb0b73cc
+4f9e26e4e727ef18a66a9d9ab8396e8ccbfcc03e76f27cbe1ff8f983fc266cfb
+21922918d9f3ec653efd34a461f5d0e98705b1e79c5893394c189fef2388192d
+22100a1997d1af314dc8aa6d39a8932cf2ab813fb316614f90995f7455851ca2
+855c6a800978f98b630c5bcb7460e29094cbe644b967d5152eeb366cbd583034
+a7a04f587f7e44a92dfa833c22c2675eb0d276d5c49e8f77bce4afdac4f348b2
+429e13e00b651308c8ff6fb7d4c680a69bf7394c38ad751514a6beaf482b378d
+4066456298fd553e66cccb02394ce8c94fca3f086ae0f9f947af505f47e637c8
+492ff0af7ee5b712ec391427b713a7811a000ca821318663db4d61fc380f16d6
+7200c1184ca6dcf567ad6108401dac96517877003b55a1f5791d9f4925f88089
+4cec9c213eb905814a5927c8468bdb2fedd7802bb0ae7e4980c3576f7180278e
+bd3239a17e38c722a465461d9674b37904984d3f81a03a525e4bd407b463401c
+776c3062c8b14c48ea7b201d7c39f11487a44fcb2beca55fb5d9bc43871def57
+acf30138ff6a8aa801d9c27479bea127b9275d076312fb3a443b3c9e6dd88a16
+728085aac0ebd1064bac6567602f772fe586b1a7b9816afb761c09002fb77f31
+7868570acbba16743fdcbbd2cee6eb5601d2307123d967c783ac8ac954d3b9aa
+ddbd7c8e784cceaa45192828d99b48df87a498a6e663325d3dae1005e67a28fc
+c563468fcaeac503110828eb7ec1fbfc50f2806016d6e71c8aef5f05d81c4b3b
+d50dc72148b159d1039fc4c2487fbbb6f277070741257efc5d55f2974a41416a
+c64a3539968c8c536701eca24442423657aa2b0a270234c7a2834f36b2288425
+2b525677694bdb770dfd0baa41c497ee48ee925faa246902ba35620c638f6e31
+1cae004686bac77c8f5ddec19a679e507bb67c4e8eeb92d4aa13cae5a3dfa0d3
+bd4f6b1bc1288a4934285bac79f69d2e0e6c757a8405e2165eac151517a5a53c
+bd78d8359f820434b4f161e18d77d784c85e317b58e9831ae7d9350f4f7d0c08
+ecf51c62c05c84624d0ccbc898e9e26c4304addfe35c280323b84e50704474b8
+85f11c119c7c42aaee2d57f742bd42efd73f87e95f7e09bcf156790e4ad116bd
+08ab1551a60d2b95e38fe917ea916ab206a844a8ef836cb599e375c7e6becfb5
+335e067ff90128ef4c43d7c39a7b547e6378d2690bc967fe48a0c9be887459e8
+8b0dcb97c825fb7b5d6ab1d2f19f1cc379159fc5dacc0c59f1c265da48624324
+3593508da57499aeaf42f6b060b5a33de4aa5f6f830cf914dd7d5c2669e6b5c2
+fb62d2f6fcc04bf057ab196619c8e7427196d903f37c14d6151587320d390a8d
+c485774cc1a50b9d6ada0bed70c54fa7511155dc1084c45142ae8595c30e3f5d
+ce5a8a174540772e661617639a671872365b0d8444f3f49b9c4b5783495c7e39
+e53005c4df39d49290399f6aa88f4baeef244d93e37a921b8abd3c20e5f2ce93
+330f2581384ac1f330003499ffa910b33d669796016fcf3ad7a358b399f059fc
+d3edd14c9b64791a04d0a73b280f68aec96c34d22e139194fcbb684ddd8dfb39
+52a39c10ed31a5aa769f778c2b56074a03bc6ee30cef8b5f8384d42fb73d9e69
+7a00ed8103bc5e5b8e50cdaec7d9a0d04f52c4fab3385048a6e4b0ba798f4e7d
+1ec97e5e5822dbc35c79f4f41b9d501396fcfc80582cf06a73584412d0dad7f8
+86c05d17047db778e61b791b2651bb11c1a518d76eb34a29906eea692c7af8cf
+546ee2d49f0f69cd769bec5e66aa298b34c5d99fa37a720f059b769b67501b53
+8eab7d1e9ec31c8b54d399c1269aaf644afcec48675433bc41dd99ac8a4a129f
+23ba499f7e6b5bfb1aca896c5693e7b29a8531e075fc1e2be756171cb6523912
+e5a6ac79bb2b7c9db7e14e4d7e5f91c1d705883565ebe5b79bc9b04d35d168ee
+9b4896b61b6e781e67fb1f88de6f1e0e8cb09a1bed68d77f9e0d0e2c46e2732e
+ddc098851a860c7cabd1c2ba5770d6f48b7965b9d2ced95cb8bf0b927bce1fc7
+dcb70d176c054567c4265ce35bd6f6e65acaa031f7dade985747664de467930c
+6063695b62216fb65ae91ebb057944a2ea9a108d8dca6c6a6d7fc91e686aca18
+2f4cf7e7d11611de6709b56db24b8aa08dc76065e646126989f1acd1577c4469
+1b966d351e87025d78a2dbb66cf35405baed23abdceaefe4d600ec379045d035
+7eceb79a15b5a046d0b5280635a866564044dd444c92729869f81a39a5053d44
+b3aa51385ddd80d52075d7d62b0f9a117e8e93efb2bb57be99b95fb0d0267773
+0160ae8f470d553b3adfa74688f7d3957d6c60745637815f93ac4eea04cdf975
+fd5d8f396fcf1a845c0e1a18bdee3b870b61bd1aae23bba7e72f2afc05a17083
+e765c955cfa75b37e3444cbe8fca5d7565641bc43b0bc87ba34f7685fbd29bd5
+c000f1378b7d514dcbe95ddf003790a6b3b407a766d06395a255269d2b083c80
+66b92ad8359b95e9c266964b8cb35eee7ea4af6bc1630197802c4d94bf25ccad
+477a57aa64a9adad591b45e1313bd4ab2bdd50894199bc55377aae2ebc193172
+9ed4a5c8df163e590899b19c59a7c453e33adb0224642d4cc841576e5ce6519c
+4e045ccfd964cac16928f8a8a53e5a58ef8568d784eeb7cc52346f32f532e2b0
+05a3b59a078a41e656022c803798083be81d9d6f2d4434a3d019c76137a69402
+f626adaf8298b0875856f19c2f9b1d617feedc307ab7c7a383b1656e5fa0c253
+7b70bae5da69149705091ad3c2ff1d1e2866e86430613bfcc40c414106284a58
+8e5d72e40168ebd8c90874a6098520065beac50c4b003717254493b800c604f6
+31c795afaca6bc5765b95e9b0ea443dfac9daeec434383d72b2e047f288ade4b
+775c52e99b5748feb6213791076a09f26e3f6319e8bc0f295c2c9a91350125ab
+4e2252dda8d001576c753dc7feeb7c299693c8141ddf22e88a06b9323e59bd1d
+51dc564ec162ce1799fd66b5eb1343830559c429217ebfa57518482b3ce6bafd
+3a50f1a787e55efbbb72280fcebfefad37e0e379ca930cabd71c8d9520578803
+1bd025e2be1238aecbcd9a79a0acbdf0620e0b17443c416ff27a7392870697d2
+1bcf01cadfa0aa6ef26959181e77eed33994dcf7a5d0ada6b01bd97cb2e88e03
+299d25f1ebe027bd2074ba8fdcf17502652645b1ab39d009b1032dc88a1447c2
+c51cd40e57331359c8abcf0399cef1c87112b3ce11722382c88bcde9d9d4eabf
+447658714d7a41ed0d442821b672ef1ca9146bf556245312e506e239b4592277
+af8f5f5f9b1224b361b375768d507a29833cf4bfdbe31dddc82ec78c8bf64af6
+187ab03eb75eee80322e30fca2a27b664cd744cb0937d8ee9545542ff9829d34
+37944c21c11377867156abb48ee9740bb33087d22d9031e76d127ea3cc5e7b77
+a0588feb167239ad512c53707144c9024c834ca74d4d9c2a42b3e2219be9d16d
+a74803ebd40ad0e3b5d995a4a1bccc10af550e2bdfc556b1cc701f625c58b2c5
+41ffe362c709f523be52e681e47a2924e6c30c32a4bcf508eedf62e9218d83a5
+e3b5a348bf314d038dc4ebf0ea86ba925627fdc96aa27f3aba9d1cc0ae99fed4
+d323bbd7ad59cfd3154afcebf23bcb8f1a351eadeffeaf1db0b6c566d9393a25
+7fff7054b9d46496c32a4b752566d2f5aa2c6aff8e22eb9d882ab0599ab0cb23
+6a561eeca6f66a160f84eab0a17c2cf066430761f5757e0016ebee9043d3485d
+4c4db58f2588bb9cd1b290a3f9cf2525afcbadc069409bd1c878ad61b752ae9d
+8aa944b76bbcd13582d3b27ecddab5744434141d07bc13ce16ace168594b09c9
+fa662ddde1226e7baea345eab4c8a2a1a48913671dd47a7b2cd6acfdab898924
+b5c67725662e4b951307c0a253e2e54de76b2c1f397ffb106034939f77671ea4
+55d665c51a943bcbd4feef0119632b6dd265db204f5fdd8c0d7944118362e89c
+86e9cfa84ff8ef49a999ba49f409a2fc99a8f01123fefeab02af721c8702bfcf
+11d3720a14f9ebc7bfe40a921deff250e40aa677404124001e064d1f4147803d
+46198af22e00a0e7ffd30904af1e0009a3b9df24d4019a062db77d60d101ec35
+a4c160bf4df5f62ad1e42e3e541e8208820c7e34e72f296c07b4c6614804ab9e
+56ab380851c02441f77548f22a607e3dc3fb7f4ed5b96c65e7e76953cc87988f
+4c488abc011c1e6328e0af0c9aebb2d855fb9710ae7126729671f23a5983f952
+a6000279da5faf4a0fb202290a729f97a79eeca0ff247f489809b96e6027621c
+e418ddf201f976b87a256c6cd0abe5f21ae0938bf257a271d4e613dd65668a00
+61928570bd260850006fd6fe93432239a353c3d51481e663321b54308c694ff0
+f9c23e94bfb628ca10c05085884151e344587dcbdd038c81dd752c1a2ccbdcdd
+2f453adace80754702089af2b62156cdbad2e1e0b0a63c34efa1ad37a33edd12
+b716c047c361470869a5d8328a3482082b0ed14f20741c9d9317af16d8d85f73
+415c0fe2346ec25ffcae16829cc06dca60fefa917d0095cc16dcbd7af5d3811b
+b73a30489b8dfb744593191ae031d531dec09e1b959fe3ad16373604da77d4cf
+dadc253a74d16dda6b721b35975ce8e5cfef8b87af43379bd68e9e19cab56dc9
+5fe8e2ed6ecb6068398a6d39a1d3419634a1ec3a68a6f6b9d8fcadf247b7e5b3
+8a6a622987793d07c15f1949bacc95493ffd85344d348a656964bb04041ab8ec
+dff5c82faa01335f0175c706bee7d70f535c34748c3bf89b06b125edd70d2153
+f54bf74acfd21c01bd8bd39d9daa723bf9e80e68ac514aea4ad435b1cef59258
+6c9624ef40f41ac5d6ae45dbe024340aba4dcbf974a404f32d56a7aa16673e83
+a9e6eccab18ff735ca2834376d791688f7c59dad6d684a917b968dea1455db70
+1f03c9da71da1ee4c036e1acba68281ad4085dcba98d977f83bcb3983369ab69
+432c00d2436a03acdf7f79bde5485e0a1135397f571abd368c46e90815f9dca7
+343f31bbe15a73a3881c744336fabae3dc8cc2d4e9f27743eeb34bc433bd861a
+8282ccac60f1740e204555efb9ce815fef016da13a501f39076a510db12cb67f
+3208bc21aace5a21498bd2711cbea2388a86cd6ab92acc36ba485c28f89c8f17
+ed18a14da4dced9022aa7a72cb24ef9639951eddc08402d5e3311333ec5107cf
+e84f17da759daff73bfb7c400438febddf3f4c1394484328bd0c5141d14071ae
+eb6166ad5a7031ef37a556d02bab805f88756c97b8808d6d60d7135cf646ae7b
+1bb87b5f2fad791abf5bfd10906adee855f2fa3ea793477bdfa70f9c29e08fbc
+0764ce8722dfdbbd4ec8244a2e9846b37cc45a31a8cd6db824bb9493f6c1283d
+24b3aab1b90060162290af1afd6decb99eef57823df43bbb0f4590dea9c77ae3
+5fa37a43bfce91a9c5e3afab09b4ef7ffe7ae3c92755b6e1be3c0572b9a533ef
+23f546ae7e22158f75011e0528277f5a38f07ceef5f51efefcb1d441ef03f765
+248b3eef31b7c7c8bfcd877d697f5dfbe766a63c9bfbb3e9fcd6e8aec1af1f53
+78ce1c2cf35edc96bdfaa3072cdf01112e80a03bacc0ac65eab19f7abe8773a4
+de01d3c0dd5b46c59ad6a939ccc28cf88a9aa9ca75b1c91d0905cbfcbabbad1d
+d564f4ff186eec4f37a148ceb7371272265ff8dce4f5d55ac61813c2c8b7ca67
+fd24f8eaf3a4fcd37e94beaa7cccdf2f2377913f5f4e1267eade0c7aff7dcef0
+91cf5d7e757da8419504124c3341a0da9c9cb0db3f593e410b56f291570a8bb1
+eed6a3fc19e1a8dd677ad1e5427389c94dfdfbe14d9ceb0b5aae7d071efff44d
+fac0af923bb9de4f586ad7dfb84a1aeafdc585c7e64ba2dfa5ae787ba4bbb1c6
+17b7ea4ffa51e89bdf47e55ff6b3e4c2fca8ff7a3b79257497ebd27eff589049
+74f55a2e874b688a45a553e23ec4b394c50316cb2974ab0b257e50edf0e2f959
+72246703911747b2cfbe624760f57886ef4f26acb9e26daa0180b8b9e018ee3a
+f7c376874e08c96fb6937469ae785f6e839661c207ca810551259ffeeb79bd37
+5498f20a559695cb14eeb83f88788ecb9bfb4cee69d1d7aa7ffaee1698ef2da8
+5f7321251f4f2518278d6fb775d4de4d43d7e364b1df39077efde01df9805fa1
+bf9177fcfea4e70097e419c2052f2bd89c3bca4756eb7920d101a0520fe4af07
+f63525aefaddcf1394561a63d51fba9a2435609d0be02634109f59020d9ddf30
+86683a55a503d5a3d7fc5946ac370df83d7f8e6bf9eb520f53709999db3c7b49
+1c5bd992dbeca254c584f64ae2d9c907948036556dc0b33d041c7c87142b8d16
+1b54cdee26625ae0e8fc5ca70131c7f0d300ce0e3cb74e15c688f25e858c1c29
+ee7015eda6d3f1a1ca47b1b8d30f16a713ebfb4846611e6e38d020538f6dcab4
+a7e2c040b0b08677f5c3559406ba2fc7d251e079a838fd31190f30c6599be643
+126be22df5d3ae51feebaf7abe531d3bb9147ffd305b70c815ce0372f9aac3e3
+6a3e32df9e8fe18e0d31685e97bed1088d01a17600f41e22e00e11f30fe10b62
+da868dcb4d44729d07fd0f39d6945176691a46f6afff32cffeaf4876d546d160
+c68076370ff42d0e69b5c689d89d1ef64c86c1ea8bf9aeb87938fd83891c1419
+72acd4cca0cca7c6b841992f60d81994b663b9e379d0621f88a70faa8c215987
+f7cfc79ca27318b0649daf94e77e7e71bb49dd5ca38170dc902e1bbd89432e3c
+bd86badfeac5db9db36fcd3ce5f8f271e5c2da035cf340262e80570d325d2281
+1f28bdc6cbf22e6e4f3a3f4684fb408ab41705ea381d5f4355a2fabda45c5675
+78236d01a54d6cabd30cd052757319ff04ad2226f5a5bab81d998e704f8c5973
+797db728a1191d4668c6526271fa7b99f4552dc307169f0786f2a2e9910c75d5
+579352d4a83395caa91c4286551ab6feceaebf54601af136191ebef2cad72e8c
+a0eb6520b74c7e1e427a89f1f861aa17257268c12e5330ffb95444385d1957e0
+f0bf7f98a23de1eea38c00309c80c4b168979ffb34150c7030310e356f1c0c7e
+bbb8cd4ba07fcd1fb2bcf330edfa31e3740f12d06e5d2baedd4b2500768b7e29
+c10f8d727d9fef124ed5af15ebbc3088b4410131df7af9ccfd725fd5f97a3527
+ab5458bfb6fdccd9597678c6a8ceb03d05944c0d303c796ff3ac1dcd184d5048
+9a278dcf359146b93b70b09d0707627db8d0b1cbff1ae12661f3860d48180260
+a7e9cf7dc6b174dbf410e3f45d29d39b2f5bab4b9ccd8d5d7bbbd567b4b35a73
+790ab3506dcd62f79f5a991dcb4113b60c7bf27dd77496dacd409f9195f8f281
+e76b995f7f965a044c3d6e50d6b7570bafd4433c6f573799f87783f221e70f40
+90961e8843ce4e0d62391f3c70e397e293012e2a48980ef017315f2d02a61502
+96560fa8f1d0f2adfb9b8f5f303902ff845f386a32361770cc0c1504027278d7
+f694cf1dd28eca11dfed4d4488029ba679cb6af362a7d9db838e7474dede455b
+017b5e69cd9cd9551a180498c4dee6560f32a943a262e56d843791dc06265b18
+0599e1672984dd006a5b5b2c61ab74016c83c406def4200e6f58be6d373a95d6
+0668b48093ea6f33f733fd86e1ba9e8ccaef3aa26c8608eea13d0b0a1783465d
+37dc2ac5a42951109cc1f5b85238a897e74deb216342dd9d34c42c577795a371
+7aa44da02eaf8edcc3a0d41870e90cf887ab33a95eca003da2ef1ddd4f19b90a
+7422c2097073a8bbecf431f6ddb5c6fae5018b61c02837c481180384f920f11e
+c38f8855c7ad0c689c62ccf709d466cc1ff2915deaadaafdeaabd489819abea5
+42fb38961ee857cc761e288cfc136c1d136dba89ba9019637a1a5b6f649a3500
+018a79fce8227d3f7f76556928af1dd0840ed1a61509c15076b63612588972dc
+d8c04ba161caa55daac38de99dcb10ed310ecd8212fe0aef25a83b448019eb3c
+7dbb9a786ec39c02283a0dfb176efb1ba8c386d8510794dbe5ca5e9a50f538d7
+112653bde55c005b3d3beb902a482c6bbd4934c42411c35904b201435cfe502c
+30fd96ddd45f7ad7387bf9967ed5e3281babce869c9fef86b44247006bea99ff
+2a9902b57acbddd0a4c6aa4ee91688f802150e912bda7bf8ba67360a48bb83ce
+c141edc9cc0d7aaada7a2a801883f36519075de116161d0343ad93e5a92b1619
+9ae4fe651918bd2f99fce10e7294d5867bf8ddc031601533d861403b76e6eb5f
+46af0ce1f203d124ff5d47e427e215e00785852b364fc88d0b79a0cc3f41cfd8
+7654b13c5b41c072217ff08a73a65921af2c29136d833b389e333d780063068a
+57e71d6d7bda67f3de76326b410de60ba090b1df8416ce04f189a3cd2109aba0
+61d822875fd1ebf60e4a1d66d32d3d598c879fc4aa7d50cfd4f611bae3f98f31
+1c03d1af1c9729df3877f07e8c4d304c84b71d993b1d42477f88327a2c732f68
+12425110d3bd8503228463f878d58eedd78bc1419e63f9096a2b1ecb751155eb
+872a87612dee81d1c9179069866170895aa6c7f29a31cfc3a093988edd217eda
+a0bf772cf3a350181eebc5b0e40b5a2c336dfc39b469947809a0024fc1b1b0a5
+04764b50a235c5149a631911dfad730872d3ff5a325a0139e1c92efd2e49c7dc
+dbefb0a14236ccb98bbcc4325c37229e4bfee93e524cd44ecbdd4fc3a3b0f044
+d2c478b18f2c24d67993a72369bc712e275991a32036b1d60445f3f903e33370
+4ae3552762759dc04bcc3a67c9acf6ba90658ccac4991e64b02b8476d0b1ec60
+9ebd0feab8e343ba9b7d123e903f2992197e60dba92cb13abf34f95b83f44948
+96f267bd122d0aed337e679c2e5ea780875a36aaa628a436c7e84cf24a87a3e8
+6499cd5a7316b5220839155642c5a5fe593a98381bf54237407f71700f333acd
+231843aaf0781b87f38919e42ef177ffd867c7cd8c309c63dede0713ebdb2c7b
+3355704a23f422f2b7893b924fc74ce3661fab7e631335635f913b224193ae0c
+9332dd4c39d12d888250abb056258514358c8525ec4c8fb0dcc03196633a2e78
+795bf02a1e2757b76ca43a07ea828f55c20a3a3eeb4e0cc8fcf0056339269506
+9f76ab3892f2f5f938f12e30a790faeb5900db0a42583ca7e5b8a6d8b658e01a
+374dbe83dd3868eb3c260ec4d3e0ad04cda57a9ed0aa947e1934fd019d528ed3
+846390b460c47857b6ccdbfe6de1df3f4c5eb91210ce8cfbb0145f161b15dc6e
+586d497933a420fa3eac0b686b7500bb5d0d1b9d5e258399fad57d4f17fb121c
+8163ba58274d2e48777a83037a62ce924c5b6d4c80dfa49ab6e0e9cdecb8f206
+934c3a4a451398a085748662f57e340333739fea2a1d9a6524dd8ab036efe0e2
+f55ea0ab8b54a6ca924800b1338fdb69f13f9fa9b081d0ca25dc2476d55bf4fb
+d9fcabac5c177e47eff2dfdea026d0f3949bac15abc8d5a9684b7d4df49d687a
+cf6c80751a5ccc285103c388f30556554501509761b626c0bfc5dbb8fe81b5d7
+d9874eca7b889fb88a429b8d26af0a0060a6dcb694c5f522e49b5857bd805c7f
+3f8f2c4a2df770dc04f89372e6453bb9c49f265c6bfffe31878554330135a138
+1a30430f0ad4cf498c53f9e869dc4156770411fa63452d087087f4b5bbf53611
+a621cffdefbae7120ea0197bdc56b9434cf2265739dc4764c5500bdba6392f82
+088b31c24b3f172ed9bffecb23f93ca729ae8175d5edfdfeb1c8a4cde10ecfda
+18872a6fd3ee02ead7592cd64bbd34a36e59bfbe856f7236367186784a62f0be
+a1d368c4c25aa0537a04c329f009df5aa938d74555c574928f9ac2e9e734d7ea
+fbd77fdccee70efff7f3dfff035265a003>
+endstream
+endobj
+
+6 0 obj
+<</Type/Metadata/Subtype/XML/Length 2438/Filter/ASCIIHexDecode>>
+stream
+3c3f787061636b657420626567696e3d27efbbbf272069643d2757354d304d70
+43656869487a7265537a4e54637a6b633964273f3e0a3c3f61646f62652d7861
+702d66696c74657273206573633d2243524c46223f3e0a3c783a786d706d6574
+6120786d6c6e733a783d2761646f62653a6e733a6d6574612f2720783a786d70
+746b3d27584d5020746f6f6c6b697420322e392e312d31332c206672616d6577
+6f726b20312e36273e0a3c7264663a52444620786d6c6e733a7264663d276874
+74703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73
+796e7461782d6e73232720786d6c6e733a69583d27687474703a2f2f6e732e61
+646f62652e636f6d2f69582f312e302f273e0a3c7264663a4465736372697074
+696f6e207264663a61626f75743d222220786d6c6e733a7064663d2768747470
+3a2f2f6e732e61646f62652e636f6d2f7064662f312e332f27207064663a5072
+6f64756365723d2747504c2047686f73747363726970742031302e30342e3027
+2f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d2222
+20786d6c6e733a786d703d27687474703a2f2f6e732e61646f62652e636f6d2f
+7861702f312e302f273e3c786d703a4d6f64696679446174653e323032352d30
+332d30335432323a35383a31362b30383a30303c2f786d703a4d6f6469667944
+6174653e0a3c786d703a437265617465446174653e323032352d30332d303354
+32323a35383a31362b30383a30303c2f786d703a437265617465446174653e0a
+3c786d703a43726561746f72546f6f6c3e496e6b736361706520312e34202868
+747470733a2f2f696e6b73636170652e6f7267293c2f786d703a43726561746f
+72546f6f6c3e3c2f7264663a4465736372697074696f6e3e0a3c7264663a4465
+736372697074696f6e207264663a61626f75743d222220786d6c6e733a786170
+4d4d3d27687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f
+6d6d2f27207861704d4d3a446f63756d656e7449443d27757569643a37633932
+396335612d333035632d313166622d303030302d323336636635353535633830
+272f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d22
+2220786d6c6e733a64633d27687474703a2f2f7075726c2e6f72672f64632f65
+6c656d656e74732f312e312f272064633a666f726d61743d276170706c696361
+74696f6e2f706466273e3c64633a7469746c653e3c7264663a416c743e3c7264
+663a6c6920786d6c3a6c616e673d27782d64656661756c74273e556e7469746c
+65643c2f7264663a6c693e3c2f7264663a416c743e3c2f64633a7469746c653e
+3c2f7264663a4465736372697074696f6e3e0a3c2f7264663a5244463e0a3c2f
+783a786d706d6574613e0a202020202020202020202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020200a202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020202020202020202020200a3c3f78
+7061636b657420656e643d2777273f3e>
+endstream
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000016 00000 n
+0000000077 00000 n
+0000000250 00000 n
+0000000302 00000 n
+0000000410 00000 n
+0000088738 00000 n
+
+trailer
+<</Size 7/Info 2 0 R/Root 1 0 R/ID[<0D11522C2E71579F71B2D27CAD91A54B><0D11522C2E71579F71B2D27CAD91A54B>]>>
+startxref
+91275
+%%%EOF
+%</hdubadge>
+%<*hdumotto>
+%%PDF-1.7
+%%µ¶
+
+1 0 obj
+<</Type/Catalog/Pages 3 0 R/Metadata 19 0 R>>
+endobj
+
+2 0 obj
+<</Producer(GPL Ghostscript 10.04.0)/CreationDate(D:20250303000000+08'00')/ModDate(D:20250303000000+08'00')/Creator(Inkscape 1.4 \(https://inkscape.org\))>>
+endobj
+
+3 0 obj
+<</Type/Pages/Kids[4 0 R]/Count 1>>
+endobj
+
+4 0 obj
+<</Type/Page/MediaBox[0 0 113 244]/Parent 3 0 R/Group 5 0 R/Resources<</ProcSet[/PDF]/ExtGState 17 0 R/XObject 18 0 R>>/Contents 6 0 R>>
+endobj
+
+5 0 obj
+<</Type/Group/S/Transparency/I true/CS/DeviceRGB>>
+endobj
+
+6 0 obj
+<</Length 120/Filter[/ASCIIHexDecode/FlateDecode]>>
+stream
+789c2b5430d03354300041289d9ccba51f64a1905e0ca40c0d155cf241b41194
+3686d22650da144a9b416973286d01a50d40e6047201005ff81624>
+endstream
+endobj
+
+7 0 obj
+<</Type/ExtGState/AIS false/CA .8/ca .8>>
+endobj
+
+8 0 obj
+<</Type/ExtGState/AIS false/CA 1/ca 1>>
+endobj
+
+9 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 6876>>
+stream
+789c6d5947ae24b911ddf729ea0429063dafa12b0c2069d1b391ee0fe89960d6
+d740abaa60d2857b61f8b7bf47f9fcf33fbfca136dd5b23ef85363ecaa3fa3ef
+fdf9f73f7f9d539ed2cea7f6ba9fbe3f7ffe3a7b3db571a03e737eceaecf1e15
+748ccf59f33958587b19cf88cf1fbfce0aec86f5edcca7d4cf99fd192d48d7a7
+f5cf19eb6945747feae48a11cf8a5cd1b1671fcfac9ab19ed53ea79da70c7ddf
+f8c315ad3e7d86471acea8f3e18db8a060418da78e9f27c4b977680fae10eb39
+f398c48627e6d3567e0e2fe8cf5e398307047e7c057ce00e61b679e2ac5a01b1
+2d090247604659cf30bd1fec744a7f66278dade6e28a12cfd4c07eb0f5062bbb
+92ae8d0b36c50789823e94db1fbf36ee3234d2dab31b6614cba9370aecb3af9e
+5a7f164fd81bf3562e381b130ad90309f9e084359ed375c224535830cf53a909
+de091b4e28fc902ce799e3b307f4c3f9b879e880e10da95a5ea043c392dac6ce
+9f8d53437ac4b99b62dd3898326838b92e4cc072eedf56e1cd3738e5fe6d0e1a
+1ae6c304c5719b415bda35adad8d01618116a7b5f503856ac11de84f7c7e831e
+d01b2d03368485dc4027b45c0f43682461815e8f1be8007ce10539cee5d0092e
+be9bb45f1bc40379623e38d60641517e288f56c8102cac495e9a8ed525245f98
+d1d1f6308a8006cabd5e7f0eeeb3d2685a876d48838592103f30582a54f2ee53
+d7d9582537e8b27bce9fe94a7dd924ce13a57ac584c5449ab5e443abbd760cc6
+cb84c464f9724fcb86be51433476e83f7c05a22d5b7ba4f3559a27260c3b4203
+5c00647e1c511e5b65e409456a8696d64948a0ef400a001e690976362895f733
+7caca75828877a38f3f3ee58e18da34b2eedd2160bec977aa947f6b10fc5a909
+4d271c1b5e92f44dc8e7c7c82969171596be434c366f105c492940a38303bae3
+a979c32d10250001c940a6a771c05784ab542192145fa1e149a9276856806d35
+5a6006e982cb68acd6258d1038d62673abd28b0814c313a6f093b82164a9f067
+6036b9176f23219b502366467b6ab734c4ec803febb8e8498e9dd2a1977180c2
+28c69d5cfe95d5104cd9ca14121064e8a7445369c35efc15e69829fe571c435b
+bff8cd19d8fa02fccbc16168aae12b9da509a7eb88f2f4f5f98a1b7e71565aed
+9414106d34a31bfa808ee2e29a2db09067590362b3498707b65a373768b415d0
+1937ab602fc54af787e53ff0a07d124d810e1c275cd3b7f9b9d8317093a909f8
+d36cc64bf4a65190b614ba2207576450a9dd764d5a92ed82afd70f2c052f201c
+5070045c589b8c76181d77b3e355c5ec8c20389d23c287ef8e4b2adc3b595cd3
+6ef032059fed473c2a5043523431ce8f556de72bf24667a623f4f5f99eb80dd1
+707505a9ba6f545bf70ef61506adfee388296cbc3730e82a8854a02bcd7f5e6b
+4c1ec07c6c7b8bdd27c3dc15127eac5880fd3ea2c37a44d4d2fc61d4af345b7c
+5ff6756644474114220e3addd075ec3c01a0207fb8ee606611dbd83591e3c07c
+404397914119f11f0308465531430289c5e008bada57c2419502ca042d0c0814
+5878452164ef95101ef386b1a51404030b2b85a774afd05dbe4a0f4b9a961dc8
+8ab64f209ca696f30a440cb1b8842b749d2d87cf2bbfbe164b71fbba33390c01
+06628d078c86ed7e1756c2ff7cb8b20ccc863b989fed10d5d3b543d6878c5362
+002937c202b02989021871bf83633d1f484ad73fc38e5e1c84a394c4f622f842
+40a5eb9366788962f704b99dd945e982803b025a17131ddc00f94a746fa0b81d
+c8f472067902a9241264a551808643ca6820d1e105e3593dcd442b86024eea1c
+b433938075b7ed154c1731d285b2b8c422eed4680201d0f01f2aa5d2c0b42219
+0bdaf546a006e7f6950865745180ab877b82b126bad0a2f4bdf8547050b487ac
+f71c437f38049c7d4d932621e87f958111f8ef59e73b032260c1a158afefc2e5
+e570c601d8ca4a94bd27a01cb17f4526a11ca93b4700a7df198551463ba0d479
+99e28a668f0f87009e58bcc205cb62f6a61523cfd81933c1ff433633b72f87f8
+07296492554ed843304f70000b59d678b176ca568902c92a0385c56cda9e8c0c
+7c708f99a99bcc8ed22f5373647604db62b796d9b5fdd2697664ec9d311c1fb8
+e71cb62a44229cdaeea9cec471afed7b4d066f324a67091e6d696b232e588a76
+302ba12a682727d1046b418618fc635427fd107b58a1386a704f159c862f798f
+452234b19d62a0cdd7ffbf13e0c8a57b03e543a55d07455419c30e38b62f2187
+0de5dba0958f83ae5752cbd55a0da5bd66943b84c28de4d0976340f11983f658
+abab6608df2e5c6b6e4018d3f7eef20ece65944460a1db41a25b893577686912
+5334ab869f7659436afc2d641bed7f476e52e11196e355bb846a89336d33e4cb
+9bcecc09aa44a1efe16be33b973bc3b855290f70f46baaad6716eb374d82ba33
+eb398e6732f5427083f1410234dc32cc19226f259815e51f08c985f9dd81d748
+f693f5acdc6bbbb0cd984d7753c885850cfafcced46cdd05ebcd9165b62fca54
+879cb36f3668d3c18a93fadeb221928a314ce8153300bf3ae2645a4260128cb8
+e8f8fdeb45095629737d91a91e47bd95392bcb1cf90a47d8b660c24d2e9aefcc
+aae8b8d5a2039a51c758e9720ec885ac78339a70c39038ce5bedc570664341ba
+9e85952e06a64467d666bd7d4d8cb59cbd378a1c83d59e26847dd3f5b1c8c182
+b4bd786f9cc70879d1fade5ce0feb46116e02b038475dd9a3273d0824455ec93
+bacfd2adf5c2804726567619ba66124ca9fcc6eec3fe5cc525f9871a5a2eca33
+b34731280f70114c5b1a496dcd8718b7e72bc492f6fe4b6ad96a39a9e7103f0c
+a50d778a98e7b1f26823a17ee6e765783bb086e30987214f3a6036d286a01334
+95f4f6385209278fd08c70ac6f43d0aa28dcf45de62f2869c9d451865265f562
+41326e35599a99e1b4ec8b74654c8afcbc52dfb43c91bbf9c030b8350ad157ea
+bc02b4477768aec8402b3a8bed9e4784d08d6c3b894ab14ee909743713533829
+261c6a1a52e4fd85c336554b83562d58db6a0ed3928b8c6d8dcc4e0427a0d9cd
+fa8a6917578d38817d448e545973d5e5410af32436391cb3141babfb466a7035
+4554959ba005e6ccb1482cd67b0a014ad73422b9133d45ab36098655e9e564ff
+49d151071cc13268ede566ea312d8775aaaa152ede7b5136e3d0c5269f5d5b81
+8b7126fb920ae1334714ba15d2d5882ccaba716b02983e671e38d4bfd2884399
+a3652f5dd6d51d9fd9164c2e9ad3448e68c726dfd21d0fada512af2e2945f4e7
+7fbeab41291ef6f96a8e374c94c901dbc46f1b0bb9aeaaf15e63e9ad3ab1491c
+cb56a97047b7c5084d9d39bfbbde6d2a40fca50bce2ef5c9b69581e2cf5fec64
+1b6f87b28993c952732a7ec6f5d2ed9cfd8cdb549e6ea4dfba91064e2063dd29
+64582a06b862d80097208e1bc865dcf839c391baad95a178a45b2fd56d07d7da
+5e2eb43fddf905972fc59bde5c6b663f969595a077a9383fd452f775dcb4722a
+a3766dd96a5a6dcda741ad6f1fa7cd62e4face300c2028d60be743ee7ede1eb1
+90ead40bae0a813cb25902d05bb0d13f727a633391ef006ee4bb7d993296961a
+23180e84f4dd72758bf5e06eca875ab3107d579057cf331f0f106f28137e3fdf
+78f2573360d42e19d7a7e0e34fa7444a9aa66effcdb99c3cdffa93ddad1db945
+76c054f47f53052744df54626627f95f904c3e625436c7168fbdd2ce1c94cddc
+966db090e7f2914289b0abad53b29dfea6b96c6acd9ad9222b9b529c14b36d70
+1f24de3af76d27338d6667e46db3163dfd9076a7a634a3d5db8faea5b8db9374
+dcce6daef8b64b106ed50f8aa34c8db40ac8ad4b9054c1b9970d863ba8f7b0fd
+2672f24922d8d7c83ea7fa08cad95a66b3c196e7a0c45a566a5979f3edc9cdcc
+2200a68b38cb8b924f45ed1599fb80b44c35b0f406f05735fdac2697a0e64fe5
+716e60a463530abab43b56ca7824952529fde18cb90d8f28b26479c80e4c5f46
+d0bd5d3319eeaa048472455113909c95fa6cae159b9f167ef40b5a567623b76c
+76c560d6f18ddf2873097e19af75a6f32685df465574d5824a0de9bbd19b5d4d
+5ce8123d71bedc168590ed0565ee786e2eb735416c2b17d39dfc0074b2fbc85a
+527d9537258ea1104e9a52cb36f2bebd85596e829cb9624c6506a4851631c503
+57a80f334796212bc242d557ef9e70784b047dbdf97a36de94071caa57063995
+c2d0329a95922d615653f3e40d912f135934c149d4994e1d5fa511ede4f0e174
+f3c620325c19119c5185fbf08c00b79be258c288a05ea995fcedac099d69ece9
+4129fffb0ecb9e124b94ba0dcfa4db4afc963f5185eaf5e70b2367d4f17de8e0
+8ece8f8b312afcb6f85b28337d6b86f8bd1d847825f6ac57f6ac7940cdfe6a9e
+4050fdec916f3dd15468ec9e51386a3eddee96edc02a14e4aba4c266d4f2d103
+a256bf4f7e6c79cd1c61fb38d22daa6c7733895277a93a578178f3bca614649d
+04a8a620bb4bbe81066fe105f9ac0bd364b6bd4b4d4753c0f91e701d6f47717f
+339f6ff4c05cedb87c94e44b87e5379d56ecfb9c422b697c15adee1a84cd854c
+fb0623418e0fa5520aed45efb4913a456dcc57d2bcd16dd1b776fd5230be5bbe
+345f1e5aa2f6f5eb3d6e43d927be2fcfe4494f801733c774adcc7782e472fb09
+2ffb1cf405be496da372dcbaeb5fff0778fff1ebbf82515ada>
+endstream
+endobj
+
+10 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 7608>>
+stream
+789c5d5ac99125bb0dbcb7156d41891b48c00db93011920e7f2e92ff11426682
+f5facfe935585cb124b6fec73f7bfbfef7ffbedad3e719ed7ce71fa39b0ffe61
+cbfdfbbffffe8a3d9ebdbfbbeffe847dffce81f5f8098c9cc7ed3bf0133de9d3
+9ef31da73fdb45597cfffa8a63cfdaa1913573823f73687952de9e71b47d3f98
+7e076ce3bcf0f118a8f14c4f2a071dbb2f2cced9d19fb5b0f9ca09eb3bc29e58
+b8cc8c27f2daadb567f23bb7fdf59523ebd998b1d6d331c19fa50d17e6f7fe1c
+3cd772fee4fc6e4fc30c9b4f33ccf0c778258db7319e1eba700bae18fb3978a1
+9dc73063722fd2f86d7324c7b4c3ec5c310dcce219e04d9bfbbd05cf487ae1cc
+65f71533f70623a66e033ac0b6dc3b45a9efb8f5b0678fbba2e3dd3d9ec13392
+5520c9d92427f8ddbdd9d3b7160c1e71623fc605fd1939e3780a1c9c1bc9e21c
+3f871bf2e1fe9c8e11cafe65c449e136d2335527e97c96d78ac92f6749294063
+c1da0f8431564a39297ba71b54284796a43b0eb40324340c8cb6783ff30dfeec
+a32dc87a6d0c12f36d3d63eb385f9c0f2de70ef5c61dcf99a221e476c4d61f27
+78dd58dae4f90eee58ca12fa3d2bad82d3834693030dcbf282cf008f53389042
+7ea7a0cfe4782ee87dea4dc96da86d2f753cc98a8315eff7fed482c1a79e7e78
+756cd97144a760935e3ceaf4f5347135683b3932d398f08812346c01423912df
+495339d2f09d02c4335359f0db56688706f3fbe8ebc9b3eb8c99a8a18129653b
+f59d729cd2fbd3b96f291f6c0477f0524f0ab20b8ea0bdf8c59d75403234ea59
+5c20a5493ab5170b52e7261fe5782456a4f40fb61c1445b352e7b4e7c01db718
+7c0637e0ab5dea3bc887e44b2347cf1437a02c10d1c9bb97cd6dbe3f47d6b3a8
+4e428093b75fb0d2c4d2be441f17daa489ccf7d4bfbe884854a114f878f1eaa4
+a11cc2573d738c8b57ad7899cfda4308284ec56389cf51700dbaedc2d03e4223
+69067f256407af4bde8d447897fca5595130761a113a3748f31914568396c784
+35e6f29d609cd81b79b5097eed348e0ebec4a027c8810d6b0bdd2c495865e816
+49513c9a0d36efb4b49dc7a7a2f3b49dae01fe07900185064d708cc2db3b01c0
+c7fbe48eb973a46d86eb3a93d7011cc186f2d69c60ae0383d8197b53883b8216
+06874696e7fbe19266ee1ed2dd0987e51f7a8bbfb0e5ae115a47d32fb41fef86
+846731d4c6dfb4a049cbe18326192c006d29983ec5f0f2397d8b6b51409af45e
+ef1bb803346ee7657a9d0161912970a05024b0e0709fc86d80f95b2a2e256906
+266e82049e4d9e1a81357219c9c563c02400244706dc0e683aea9d8e397fdfa8
+60cb5161c5a6d2ed29ae6798c01d539be0d8539630d62de4c085d235c23e31ff
+e0c679f1c605f29dad09414087bcacd08847b6291ec1b26a87d73dedb4df9097
+5d4b5c05f81aad311d01f8899156c88743d311e17a20e151f6b00b644bb6b487
+18d6d2d3713de09a2885136501e5b0165ed59780925157920a63e05107766bb0
+62b9c4f4791c918a5cd5d9a92ad4b54d2cdfc98d56f82004dda93bc0686823ad
+45bf117217961a302897fca3a5cae4c8869abe00624148c67760b9a5402a9ac9
+9da13c76e89d71204213dbe52c9a7cbe199d7941569ed54d5ef5dd711289c393
+838074eba1a00f01080fe80c82fea2b6f5c61119e16ef977f2a8e7dfab34cd1a
+1e52f8c020d1e4d0a297ea58323d239968b011d083f1c1af2fc7d30f470eaee4
+214cb5c970c1bda24e9bd4e15ce085a906b7f4eda9ed801c937920129e64a195
+79f986d2e2011901e6d33c7935c5243e023437d865f058b039b0e0b57c4b6d4c
+2eca8f3cb89d210c752f0c32e73a0f010b649a17898628b24b6b8489a302ebdd
+a8fa0075d973a70606141d11d196bb048af632c0e45a9a465801236c21d115f4
+1e215ba105a7ff6d84dd2148c002286632d5b0bea4f43179f8995e103188e347
+246d12b41eb18a49189984fac5981faa30096b0ae73e8f48a3f459779a7c44be
+26150aae40cec5183505d314ec6064f42fa643543d00e370a6431d92db9b9010
+4050b2e19487c6c8e19e879000da79cbd492e6a4378dfc545480116a03d079e1
+8c288f2accc49934e95c60e4d496fc01df0e565a61a572ae7cb6182fe511a30a
+dd19f3c794766dc54481489fc29736423d92a1c4a9c2ffae381964fac6e8cc53
+7e7029edf2380f20a045da2602c6bd9934455328b60f3129e7b7f2d187917d00
+b3c412b9a7c60422c9a3482bf997ca428ed01060b02f9d18efb174bff31a68b2
+aa8ff748cf0f269e30f0f29bd5822304ce8c104a598cb13a72330945aae2eb7a
+c855eec367f9e4d4cf9513e63500a0464fba9767a05073fe10f4c237e0cea396
+c3f98304180d59a4f14663d41d1b15c7477125b905cc48740cbad8e4d601947b
+a50096188f176404c06c1a589f48ee8902133c283a17b43229e044a6e727176e
+c25210a9911a12f7124e18559c28a3c748eac571b95c0b28def12507dc2ad93f
+a7222d79a98320c15dee2ec7cf2920de7dcaa24f4aeb50089d411968c1d4a815
+438a37cab76080bea21cf6871674bf0b12dfbaffed04613972590587531b2023
+3c6f5c930b76052acc00491171ea454de862bafd8534621b0f37daa50d541ff0
+7e41286a0dbd18248c13fea40dc9116dcbfdf3fa088ba60c8d12038bfb2a4303
+83dce46a004f86054ae6a1e6530be46c014f79df0cf35ebb49891eca1df3d381
+4c7a2a1454b883cbd2da2eb50f16103c4535154c2b5cf68eab0d05ab4b7a4cc0
+44309b8f84d6330d535e0ab329943eca6d5ec33a8d150c5f65dbc847e53dad55
+769a5fade4776426a81cf5e58abe970cb9b88edc1217b2e269e5bf2e71ddec27
+172c656fc8b126f223bf9e0699202e381521216b8761a76a6ca6009369317648
+f98e2a13e463518d221c1e95991c1e8c2bac4a1d4eccc00a6325c26f12738c48
+0b1a751e9456f62ab0e1f7cd2ce9b37ed3fbaa4ec4eff2beb892f872984bf8aa
+6cd8e92ac164ca20984361be4cd55ba19d00df95c380878dd5242f9e5929920f
+7af35bd982f439bf3c92573080ea99aa8a93627ad11605adfc75c270174d68da
+f220a001aed7aeb11e6879eabd4051ba14f772ed80cdf4719ed04417863b8fd7
+43407ff582842c63e9b0d1bb7a05c6600023a852dbb83eb7953f00e6c129b70a
+158e33e5820f03d280df874e17f6400128e1695565a9a8a05511e6f41fd32940
+454bb91daf07c4415a5c2e149f87e6efda9e41323caee67b1de7c2564036dd4f
+b4c21ad7d1a0193d398b36d765c3ad28af6d850da82822446c72fa90f8904fb7
+59fc3ed7a777a900e2c356fe0c34820ce4baa3ab64a9075c01dc092eff091a91
+55137215a907dc03ea3bafaf4ad9873c751d65dff4ba1952081eaefe449770e8
+a4c99d2a3c41df0cd315a0b87245043c34e0ab9e51552457212f468160ed17b3
+5c376e53458b8a1b7d485d6695c9bbb2988ac8240b4cdf3238292748c9a2ed47
+2477a7886af7526665cbf3f2529e371290da0f654748780daa4b9cebbeb0b366
+15ebeea08440090043281a54bed15631987d01538c8ae7d1be32477b193e1858
+6f15eef950d00465bfd1545411d9956283e4f54cd9c5dfdb144c8cab2eaf6ce0
+b78acd28ce027d7d5479d9ab37f0cde2322a84681d74bf85fc7954641f4abec9
+d559c5e0a14218aedcec16c0673d1265dd7745175adf7237e85555186a1f47dc
+94be0f8252d5249aea3690425552ab7a0449212389ba44636c157151aeb11eaa
+ca8ddc1b1377a6d34456187ea08055d934708bd96e2036a6af28a8f00a5c195c
+6045c58d4705b54fd3e670e537ea87ac00a255c00dea732019c6f48af3104f9a
+327ce63378533abb884a36c1058bfb6ac1b964d81aac98e6a4a60c6b13b71d42
+c64a4890264bafbd1a24ab5a2a5dc55cd0eb5c51ec6a1551ba8df5dfd29f3ff5
+8977dad51021e37e7f7a4b18b1a952072aeae512de9a14822e7fab31acc63bcb
+2dac9df8cb38923a82452d48b32270781548afea7d0c0c559c91db3f55ab475d
+8c8605bf033b8e4aa2e167e0373e74d5de3f231b115c54fb077ee6749e40478c
+40e2a807772a9eda2c88060aec5d647adecf8d7739be0f1b102c9b949cae09e5
+0ad5aca83dc7abb6df54dd38aa00931e4b5c9a3f8a5c1f0dbed58a0a8f7e13ce
+5e773951588f75afad1400f5066684a792ec372c442d47c5811b32b93d5ac018
+06c2499405423679580618bf7e1c7ae4b353b36458258b59ad99736b28f3bc4e
+7c0bf4c54956cefe7c156e348bd7eaa8fd6601c3d9a092255a85898aee80b9ec
+582cbf205cc5f363aaedef2961631b622c2375db021f9443ea3c1612725cb176
+9176a3d8777e2534b59fc9691ea5377fde1e3eb96224b6cb7e33a6624c50fd34
+045d4cf75e5a1effb6d7403364517b0d219cb70ac43b49ee3eabb4892ac166f7
+cd38db548741ff26e7f945a1a3fa14e6cfca3cd4d804addedb84b181746a0c3d
+9ee62b7351afc5e386841dfc72afe2125a7376ab128a21bba278bf9945675b17
+6545755a6e73216366d5726efa7358a064ae347f50d4374cbf036c3dff58bd78
+a1bb7d9b9559c5350ae0d40ffe37e69d9f20f2266f6f2d1547a2b233dede50a0
+2f77e3183c5981c9ed4e3a4b7aed364f54789aea0581a1b16aba523196505e7b
+5166f63110d108c3a292cddb4f432426960e824a8c9b580dc5153971b7faae9a
+e050ff870bbe83c12849faf0b7fdc4862c39e09f37a0e196a23c92198d0e81a6
+60e2bde485afb16fe0ccc0f8c8b9dd5ad8995b56ff9f2ffc2701151b49787efb
+fd85ff5f38d543cbb5c851ad2a6e5e49a955174df912daa34cd3bde204667c1c
+39a10cb01805baffac779da8a2b2f17f33b6f01181d8ae03f20648e0f6edba51
+b7b77abe9be0094aa51da751fef92240536584e64c70f09f2755bed2c05f6f08
+89a2368a8a829d2415b6d82d6f398b88bf08f9c1f96c9ea2eac9b8c6d439bcba
+68de6e4c3ea41ba62a6240c490b555ca56ad4a3b55aeb959811d251137834159
+1e8077e1cc76fdaf08008b15b7cd721900496f5663d8a3aa37b6879c2d2085da
+640c90bf5f8849d1b1a6f7a137ec0d2baaf36689c1db7846d1dc93792dd96615
+6222d354336271cf57216d3186ba99a5ad3a0246af01ea120d0607a8b51789ae
+aa09deee48acbbe134b9de62db1446ec8a61dff6c85bf046cfc850325737d036
+718acdc52e39f001a76a52c67fce8873ab984e0bfe43b17e7dfdebebffd78123
+6f>
+endstream
+endobj
+
+11 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 2698>>
+stream
+789c5d56498e6c370cdbf729de091c499ea46be40a0de46f924d727f2024f5aa
+11a436557259832592f66fbfbb3dbffef9b2e1f386dd073fc277867eec95f9fc
+fdebab8e8dedf17065c479fec2ca1c791d2b678d7cead4d893e6f531e753f78e
+7564cf71eef3fd55b9c79a5c38c3e2a99a6333e0ddc3cfe3663e0e4d1b95d8ee
+e658c88ebfe167be870ab8238b668cb8b41d95cbc16acc8595b506f7db1d8e8d
+31cfa84d7b8f6480a8e1ab1dde1d71c75edc916331631c95c680cc4c3b76d764
+8339638fa2034aac6a9ba1cde798f163d361f930240f47d2e74f2c6c34520b53
+7f181a3b69a3ba85d086f36f84f4420d4721123991ccf38ec346e51a866fbfd9
+8dc3fff4f4239b1e6c69702586b11318093be07b8f9b6d1bff5f6a983c6c1873
+ac18450fc45ab4d13b63b3cf6193dd233174791c1f973170b0c31d3bd5337cb4
+d3b6ea77b7c95ae801e46c9eb03447dbe895ca7f9bbd635c35e0b2e8ef6e5572
+c779c78372e374aac3142b754cee8b2e6add3e30ba5eceefd3df13cd967d3b47
+087baf87574f2ee5b9d508828563622440a22a19880e13f0732c007ddc3f8d43
+21b6a74e116824f66336136314645075880f5bcdf7e4b9692b80eb7034e77d1d
+0e3b2b87463d0af98ffb1a9e3fb6504ce214da98468855dd2e0985eee6d97554
+9c29be5662603c12beef7c798952ab9ae195ef8983d8509917d66e6c15c8ebac
+ae0af08517a046169a05b2c15cad026667f47ef435543770cefd8483f739a802
+b759cc364824cedb96001091f77070ea6b8e4039bb8bd744a7120067213d9802
+6001564e4edaa23ec136a90ec1b3d8dfc20fc1702b33cdc57a804e7cd3144240
+15ed867b87dbd433840b8847b6cdb961df6e109e96a12a6f3c37f3390fe91d0a
+44a6adce4d81b16dcd6fde1f074d744a876cbd9478958b7016b7a05353397fa4
+cf5fb8a2fff1c2500285dcc1eaa3d7211a843b3da879498667337c76d90e3d3a
+aab6ab76a84d36ce7e56725c796c421d02f0321e2389d576750ec4e409bdde73
+407915a15e957965d41b6b3a87c8a118aadb7599206749f3cc962239302bb854
+6ba0272210b4de60f0ab4c95939709cc4d4a108ee8796a45d228383391037753
+e82457608a04744001c42fb5137d2908a3e47937cf0ffb4e87a5c208e0e87bcf
+5b736a8bc6c0fcb847683c843f74b1f105945e556c1d7052c1888e6cc0435fa6
+e683234c7960946b499375b116469ada01342074f90b78442a0112d4acf38200
+8c4f765b00745d3909ad8af4a6284531570b42f20ea0a2e482106b45529d0082
+0464a9973943672acca025098447656cbfc431915752d22f84e48d61253b0446
+94af48d5375a02fe274aee803d540d434c095a4c6d3789ad5e10687e5abcda68
+3a7a821e9a22ef77cee493512abfc9c99c2fa3c002df4f7e34616908090e6465
+6b445778f983218fce9210c99e8a7096d95add6cc3f68a9e222212b759ad9aba
+1dd93ab3564100772ccd68494e81138db950f9a1ec389abb3553e1787e341b71
+b6f62fe9206d6b1c528fe0df07722846b812dc0681f79558a6278d4c4eca74ac
+7617caec95835e40375ac689f30a1da86941fcba8e3c3f3b4000eef086a92fdd
+e2993d6d098e9e107975182c2cbec7f2f282f0b631c4f3211eceaca9efbe7159
+012780cbff88b9ade3b9853530f77d6f70a6bc1041756961821ea582c079cc18
+bc748ed01ba470382f2f2879685e9e4fcb305d234f58a7b7002a43c62b46fd7f
+7d989f7a9f94cd77262d7f9cda475ed03e4cb7e2f384061e2ec93fc51bd84825
+75887ed102d17c04ac97a9812702ae8adafef35e5d5bb79518ae272f198333ca
+ec7be3ff6ff8efaf3fbefe0572814bce>
+endstream
+endobj
+
+12 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 4309>>
+stream
+789c5558499224b90dbcd72bf20521ae20f00d7da1cc6674e8be48ff37932fcc
+ac9e5315182488c5e100f35fffeeedf5f7ffbedad3e719edbcf0cfe83b87fed9
+2bf3f5dfbfbff2b42777bdcea8a7e1ef6facace74c2de47ae5a967b60e319f1c
+f9ca5ccf5adcbf9fac7c7d7f65d6138d2bf3697dbcb206bee044cf071bb2d633
+17a4f5b4c1ed554f8df13a6d3e054585bf6bf557d47c7a40c4ede715d99fc0ea
+f757b57846c77718da4e62437b36ae89e80f6ecd3c4f0c7cde0b076ccf7e6671
+653e7bc8e0790a62d77d94839f17fc6b5d07d653c19543c7791e76c7da90f2e7
+82359fb3e5403eb828e6803daf5f5f74200f3620420786d260ea1febd9079294
+462f4a74271f8439100e6680e248ec6eb6e67db8c10778f72deddcb02be4ae2f
+df30aacdae58d3b87d0e5c283913cf89f1da9154c4f451efdea5f0c050c575ef
+c6687f33ffaf0dc719a20c7bb097039201ad1322122a63b8009ff76a0e4dd8f8
+3d65d447f75400a93b9e7e60cbecfeae186c004bdad309e1d739f2260250d988
+2c20f0f1c4ea08b34111975b7b09d0b236149afec04dc80199389c0ad572a878
+c0c0e0caa20185bf831a7d0180c9db9743cad00361bbeb465e44b990b33d7dbe
+da7806fc9906140f0c3898f2a8fc3d0a060d15c28ff8a99c725236c0307ac920
+6513399743a1782e2499f7d9036e58a90b585af47c1d97c4f5786da465be4344
+8fd74ad51843cafdcb159ad9a098b2f2f3add24796b0608f99e0bd795e8a339c
+e08552daaae57bd3da3ef70b2ba164c25eade4564a1714d1a33d04b475e6bd70
+5f038fd18accd0b0756b34915aa277c18fd485d8d0e901023150aaf00b35b9ca
+0c942c69a867fc4ed6d58f50ef2620a7ed46a844691f1138eb7feeee375a340e
+6a376a9722b4d3288a20461a9306f068c4c1db786d074c123894fa235060ff2c
+a57977e328a71970a3e615abd9480dbbd93c1c18f096e12813130856d9a8cb64
+dd06adcb5f38d0b7139a2e50e4a3394208b8d89b909d105d7207613cd97ff281
+a8295d67eba6032a846754d781dc9313f0a3fa73017952a5ba4aa44d89ebf420
+e2753fd2dda16cf0bc0aaadf16003806e23d5ce807f015fda07c28c31fd02014
+b160f127bb696a8729312fe122ba979917b80ca69026983cda1c1d49641b0001
+76b699210a2397dd0dc3bc42596d03596079f280fa04ac71bab73b24893fa5d1
+f441994549a89764f86b738c5e3606de943344509409ee290a8ee9ac32dd08ef
+a18274f50157fc120012f9ec2de2deeeea190a70c4303c963d04496f4932ff98
+15b95bc98c630e4944bd23999146efc55ae47e9b033fbce188fe736a2e887255
+e4544da96d8b2e132c42b68f32bfd17da412f20d30ca05fe1e931be3a9f23ba8
+4d57a331d43d8f30ba8cf2e99f5a0e27e6dc7acd70e030db506f86b1cc3144ec
+fa9faf2a771aee20f3fec64ab0944f17a0aa54701c4d587f95ee73a7bf0bb000
+abf3eecc67688e41b172fe295225c59fbdd2f9f6b6185686c72d90bac9023fe1
+aaf7d40123dae4ed3e8f9a2039d0369670a066dc5c50f5400107237fbfe23dfd
+de7edc92b9ffc2e5c8e54af79a38c6057488bae3b8267120f69f830e069bf028
+866e41cea5c830a10310df15a183576400da3daf059cbfa3639808ebb246dc26
+507503b035117d7ff5c6fe09fc2ab2bd75ead3dcc7bc42863ab9334fd77642b6
+cb651ad21b00da151172606f4bc06600c9123c0043d67688b91f00ec4c91d30e
+9980454abb32cc033075a7209a3aa13e2a4c72d2858cd06c21b27c036615342a
+02ce3673888682a1591122bae1078edcdfadf0aefce20a8614a81c5d532fe4a1
+23ae628408f01a92ddb3b012f4822b8a1acbcbe71751f2cf0ab83eb5f999977f
+738590c58a68a6b7201d43dc2ac4de8098e5017bdc2b536e33917b7207b04566
+b8ed176039ccd48a3bd77558056e15b2000488683fdc60c0e8336b058cf23612
+76937a054048b6e8122d6451c8876861002725136bd21ece431083319003c4d9
+f80142a86304a2528b0a63086addb58788b06a21bbd6143594214e34738fa2b8
+605273ab129676684aaf377680012ca8e10229880dc6f6f705005260b24e53ac
+b079b811152bb691cc69d46ca6f32d340930e41ffdece406ff6657d268e7186d
+e16875ddaffdfb6918cc9aeb471e8136577375eb06583eab2ea161050808aca8
+7c21aa5ca61f22823aca6b565efec00afaf292864e93a7f87d3533946aa142f2
+990eead0bb61dd82831c3ef12e4895cb6aea3baa169bdcdd81c41708012a86b0
+a94bad6bdc0742a55f966b188875ee86dbc02b34bf73d80d3e856adb953bedd6
+bed3f5c5716de71aa6de42a83b002ec49e1db99607b98550af09716b2c5f1c3d
+f4f6ade5b7e80a0d4814e9f88aebc1f25f4ecbbd7c83f1b42e09d6328b7fe4ed
+b7e71f27c2985d60514e2b6465ce3f2bd4ebc8c98d269dfba4bb6d0726bfd81c
+431fa75a03e22b00ac4bd8ca0069e9b30259b9e1093669c8c132583b3ef40486
+9ba118848ad10fe115ef13eede606c99ab13e4f975db97c48e42b87381645cb9
+67bb8d542a269f6946aee4c289f09409b9b3f6eed4ac035e586fd8e99704bdb0
+c7cf0515770a950f8307dcc0ece590acdaee84e97da08b91170b80a5bfa7fb1c
+71b45368af342a76aeeb711d8f14dbef6336564ec598d398d2daeadffb163a31
+31f5816330bb504d33b964ec9fedfe24f01ebbcb6545f5fac961f8b705da4344
+0cbf8f370a99d3a7f7d373929b6697615c045acbfc53dcfa41c607bc62b45225
+b82b5a5ed1733ae9b4fb06d8b8f8a38819b950909aa4bb3596793fd40abddf23
+2f5758377848e9279df78f28cbaefef0f5bbf4ded33f86917d75fa57a6b8a376
+f710cce14ee359d7fb8765d1459331fce1335f8db87db9e9491af64459177fb2
+6735e31425d6d5d40c9aa1d1e0ddf42e5fb20b2dbfcd344d504cd3ed3ffbf4f7
+d75f5fff073d06d3a1>
+endstream
+endobj
+
+13 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 4526>>
+stream
+789c5d584b926bbb0d9bf72ace0a4e44ea436a1bd94257e54d7227c9feab0280
+92bb5f4636657d28900421ffe39fd69ebffefbd55eebe12d1e7c719be9fa3247
+e6f39fbfbe6cfaebfdf136e6ebcf1fd9d93607d6dbe663b3bff39823618e7776
+2b7b8de71b0be63bcd6b24166660e2382b72c08e73804c2c08e3170cc41b8f65
+7f33ce8613cb37ced36e9de77d7f79ebaf6dedd7de818dccdfcdfd3aaeb11e77
+7f173e1a869773be0f38961869c111f7fe46723d37a2ad75d872bfa6030c07e3
+8a18996f9f3aa00f9a4026b08edb18ed2677dadb1b67e77e23e4ef0ad7cf00d0
+32e80e2c2bf72d0dee586dc7f931deed9a3f5ec0642bce69c0530bd6106c7be7
+8b8f2518706ad3f74e689a11294eed82803763a856b9027bbe8d6b47015d4070
+fe7c97a03446111370d3a00d4ce83582bb1763e1f3dd8a15623483e7777b1dde
+2aea9cd1eb9e7fcb1ea0930d585af98864f8f3e523df9d753f1e6d1bf059c107
+0f081351d8910c7bdd49c1002e89791dd114dc48ab8e050da871f9186f1306ed
+e25b2388eac621b4e912831c9b61c24d060f20ac49b4f6d82f2ebb03774e7a38
+8d2ec006460c1032df090246e0274332f9edd9ebeeb08cb8236d90207461113f
+ae18b8fcd68c44763f08bdb5cd1d90fb185792349e816c309e91045c676024fa
+93baf6b17b3ea892717e47ac37573076b96b4ff88f3c7313528118d88348b448
+79050cb0207ebbbd9ef0eb03a2bef6034fe76cc46130f1bebf962a9d311ace6b
+cf0de4b5a04f1622e1e9c9df3d9986df5ff3b3a5216d9233aceccac0c9abd183
+44109cc98ea03aed4492184f4038178b48b029df1b4e4838d7ac7c5a0a4516d4
+0beb132b61fb3bc783a4d9ce70e76a2f51c2dd41065c3055eeb8b52b32b29fb8
+b073fe08c2dace1d1228f55f81c8a574f8842e971212c16eb855cacbcd50b1ae
+8553325448b00b6c06d2672a67711820c7bd8df736d46f9fb2b127bc6f4bc3b9
+594d5c604d45914c2cfc6e1d6eefc29113c1605b295c14c705593b6e50013e50
+75c148b514893bf256616a6f6abaab8c3120423150a82f4d002362b9c75ba985
+b876d142913642bf997b0630ab4afb16a9c5dd601c908c1156a1336d48186a23
+c845b2a65f8710bfc14cf25e3c7292d7b9ed38b98eaee328e69caa1fc2e34c23
+156028af1c3c278a4730d9ab425953766afb5049734415ec58b77cd70cd25714
+aedc6feb8450f660402cf2333f66cdbffb85289a0b0e4f554e38fc2e73920d7d
+653988ac4da6a9af625ec00340f1bba848a4077e07edecfe8b9078df148982b2
+503fb4ab8381d2762d289285edbaf064017915f7e48a5d808f03985aeb35e9cf
+6452f304c527da3545ebce6b2b3c539da788dfa3c804273af8ac4c8908dfd55f
+36dca81b8033c14e8500b8c5c9d395018309d59babefc056457c7f75d4443b7d
+01058e168c0cdc1f80bb9148add84f39dd9dae69444aa57b353fc4588aa123e7
+1b5d44660663d05133a33a355b34b6aceea84e8ce076e46c53772d6aa1cf33aa
+d5193ef7d5414db176b4b65473bdedda71522919f62ca00e6ea10abbcdf2ff9b
+27a5c93881ec6ae57f24562af47db121b39f1627437c95b829d2ef0737eaa342
+b2aba75f79a419bc8eaf03645f4770a1f6440668f100c87b09424dd8acc5db91
+615bd78275aab32beab4abd67b49b57e42e7f2950be6a11bd2c9bf7fd9953c77
+be556ec00f092db3bbfcb24113fbf8b0437f45933ea8e3bce84cbdd291b6859a
+4e6435143b22e45cb07efc3153f5fa25bc53df40d3cf095056acffca2de442a9
+4e544492f3b740e106ad8bc24b442e6a63fe0ed923ddc212efa4d044a9e47a3e
+359da9aee1d4e1532b444958816b35b231fb08d8dcc7ed22e09a14478a7341cc
+4c05e24469b3ab7dae1090531ba09565ff009bf35efb029b1d9ad97402b55b5a
+653474c0a0748d2d14e812e6a199060ec0a78f4a68d07fd1dcc7f6eb12169027
+c3d4ae1939a3780e0804dafde01cd501e9d211881c6195795599561004936ec4
+8656f2d94dc21b036c51a8a5c3548148ea9d504c14ac23c9ed7d982eac3839ab
+55d2652338f7ce3eab7750b0eb3d10aee640d1ac828a2ee5c6dea8de10a34b13
+5bf7b3a0c893dd95251bab3eedf4b22085aa7797e6c600152c4db23f4127a55a
+56eb8dad62e3fc4385d96a865b89aa465dfab0b7974432dd880ed58b0a23ca0b
+43b4a42e5c99c766ae5e9470d4f460ab5e965e6592559e8973f590b969d90e1f
+80714f9e3571b1ed9387b1eb0db94bf5056a63cba17d28057af6adc2d6bac893
+a0e7c9746c7a743049f52b23e7ef3ceb4d0f21a5e5b6ea4e7c93aeac13b9e138
+31de52be8c989a23fd53d6d938341aa07ef473eba5076852bff67ab3c5be37ee
+55fddc906a12a600e6797c8b50301700edc4ac7faea418f77952047a8492fb56
+6ad445b9609f528a4f96551ab035f3955d0a31d62a926414c527b14a5bad7385
+5912306ed6954d857608e8ce60b0b45e07783b0c1625aef812dea5e178a65a91
+152946a91bda55cc74f1d6a6de6a117cce6846ed09f6e42bf3c75671d70a293b
+8672d50a73a59694306d299f4495b4bb42cd209d0fccfb98cfa16eef766a31e7
+2cbdff99a0f780cecb7ddf0fbca250bfcf09fd19b07ffd7ee246532f71c83f31
+2630ccd2bdbb7409c0e6bf1d6c13f2f7fc39b2f46f074c3daf19b673e1ece22b
+66421d88aedce7af6a76497396ffddd2eb51cf26c86cce622c3e26c2f6014491
+86b8aabed0ab1c5a7d24b2dc35bf201e7ae671fe51bb39ab1f7c209ec504b68a
+c52f4a0615d2eb5556cc024f4c30d5d3d4fafdbde433d35bff0961405a8d0c95
+9e6593634b9bc8ec71caa160adccc1f7ca35f6c2357f4afabcc17e3d59f84a83
+46b62b12d81ca149f94f07f1fe3c35491245ab4bc978feeab8136c561dd2ac48
+aff3463b775cd765743a368bcab218a7ed441e0e8ea86d47894db67b6991a2c0
+d4df638723ab3767617a9829f3fcbde6a514f994963f2cd8f1f388746b27065b
+92ddad977f55e62c845e7fd41cf94a2da6ff516a1fdaad3493dacb59204da52c
+b81b6e049f3af356da7625f24fa56d177bfe986aa33ff37babb43b7ff461c0ea
+9fa3b37f3fdcf17769fcfdf5afafff01775f05d0>
+endstream
+endobj
+
+14 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 3547>>
+stream
+789c6d574b92643708dcd729ea04b2000949d7f0153ac2e3c57863df3fc29989
+5ef538c2ab6e5402f14912de6fbf5b7ffff8e7d59bc5f2bedef8c76d6ed73f73
+ecfdfefbc7cbce69dddf36e66cf3bcff7a798fe6b179b25b9fef9f38196d581d
+1c7b7b9f6d7b897b415c2d5d3fafb6e7fb0bf74fa3759c64c35f3783212bd902
+b2b7f97911f72ddb19a74e76bedd7bcb2c7141dd83f72486ec7bb62907463bfe
+f6e82d8ecc474b988fc940295b8b4585382d060f3a2df908f807719cb6707f20
+80c3078602c27d28ca200e3a02a6a3c607473d88c0e510cca61c5226a8107811
+1611a76fdef0d9fa80dc9119c9bd29e231db08c8883c11210c75fd8eccc05187
+99957c10b93d7143b6a51369bae3e2a206abb59532a7c16e2d8772ba9b3187bd
+bff97fd07c1cf865babc4b66e664deda600562ab26346f4c516c233a28c30fe0
+4899a742a0345458b869aa914a18895a1ec9f5641a4b5e1af7044598ba918c08
+876d01463ee01b7f4732573935da46fa712260b9cb3788c91899122529501e57
+d96e5d03e976e2f6d62950e72120af5ec808949c955fb39013c389385fa3cda0
+1ca3d9a6c9f57889c7e164ee2b1a2a0605f85e7933789f82da055fa069826f3a
+9ce71b7e56abc24d0a5d48871905ed5b4061dd66d5c6d7a10b0ec3c6e673249a
+69fac8a92ea406da63ea44a8657709ce0a7faafba450dd440564a12e84e0dd2f
+fe1d7942e3b3ddeb89823b1bdadb70e709fe81db907be8066a490b510dae4693
+c228408348ea897c2eac7ae2dc274aa6534b79b9bffbed38ca8099c7e524daab
+16c5cbfbec7a120ae33188f3c58e835e574c6808decfcfc160e50806c06bf020
+886907d2974a315821dfb76768f0a83207255af745c029908419e7e37320ade2
+41077836630a64feec5d27810b054f06833a85cdfa3f97eea2b32a63b8851f37
+8065253a6452e2391f190a4c00330408218c9f38c8fb1ade416602e4b58c2690
+6c148fbf570d8a4268022da91c166b04930b3231ce046a04ab6d9441262e2f09
+73af1bc0bd9fcbdcde193cb2d6c56b3438c48c19cf0527fae1432cf910b4c8e6
+98ca6997cf5f9a3e85669860c0bb1712e8037d03a8e5b31daf69034229b2b5bd
+084eb3e22a69ce37eb08a390c954e4958d460a0c36b33cede47b414d4d68a9f9
+b6fc236b347ebd72fd7282a64cc13f3e16404863cbe252af7dbd90d92e781a18
+1327284f704430997b887b90e2b4c5406a6a21a1c6417c5343c02137f45c1d8d
+72b07f4db29a82c3a95a006051f238ff0ac34ea27b93496749e79d2a3601ef1a
+52088bbd491778b29088f8c81a43eb491db9da2b7323d544a0665c006945078d
+19b918f16f8c7b4d0577c0970afb793384d6cd042b48a40324ff29ce8707901c
+102a6f4c4d3474e5293955ef4d3bd200773ba3004fe6d01ba8ffdcf47a2a2d01
+4c625ff894f7f61f341687db20a9ab530994d20816f6bdd70508c7c0217b1cdc
+8bbaa1d41b6b447452661f9be6870c241590c63b409189a9366d4c5c2051ce92
+8c9625cf2a1dbcbf73838346be71a87d8bb7b9bf15463c0a6592edae898c9e62
+82e633919d49a6c61478710060e142b21feeb023b7423e796a182e66d60019f1
+41d4a26409afa5517b9c6104a95783a6d48b98fe218d1463509602b896bea091
+ea4994d596143e2735dc931b8a6412a09e14e1c43e8f53c0a6b682a3d5845195
+5390399ae7e3c2513119b7a9043c985cfb9ed29ca83532aa3467dc1742eda46d
+890f203d8b9538da42002b156614ba58398c4b6dd0602c11d323d6da8a815e8b
+98765b42c3ee72d8b71eee59db68ed7ed6396fb84b9aba17e0a33b8423b74760
+81647cd812c3c56890f36e9bc1a7a0c175927d39e89b4cd6420cf040af3fdb25
+902322a04b7219b1d1578420748ed0826064e9907c271b1050951fa105169b71
+156544ad5cf32267d482c0b23ddf00852e726dede0ca3a69521e6840f0febe4b
+7fade0c048817c561ffdf7a38511907ad4e4fc1ac1678cd9b3a1e28479b567a5
+b5022f62be1a1ac795058d60ceed1cbfdce000cdef26ef5c3c6f936b3e72b59b
+9a62b54ea21a1c7ff66cd5be5d6b1178f1ae08455e94cb406aa57d58c26bc3a5
+c21df208bb46bbc2ae312a91c9e78ad2f7b5afaf824bafe6b74ce4634e027c57
+c0d9e2ef5bc84b3bdcb854e267c9013610eb440fad6f3e1785147fd7f706fd2e
+599f01b6aa57b8f06872def1a70306bab4771bb764ee8feb9263e4a50390f90d
+00c43175a1d607f889b587fabeeed227fff3b3a695e57c569a29a8e793f0e452
+573014f63d491b0870a9a6beeabd79f7977dd779e34aac16d82a3a65c5bbef27
+20677415bcfc99d5417eaa92b360eb977ae6a55807d77871f2baa42bf2f8f932
+2deda433ac930c645e76c1bad8d420f79bc8c4a8d58a749930de9a8b05295ed8
+df90ba7df1f5faf37f7ae58fd7bf508816a7>
+endstream
+endobj
+
+15 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 4416>>
+stream
+789c5d584b922c370edbd729ea041a899248ea1a73858ef09bc5f3c6be7fc400
+a0b2baed559532f5214110a4f23fff1dfdfdebef576f6386f578e38f8d9da63f
+7b65befffaf51a9e2d2ddfc756ebfbbcff7c8ddddb9aefd357cb38efdfafb166
+8b31deb9578bf8c7036be38c37c7136b739de6fd606ccd0def97b7b3cefb0b2b
+463b7cb0da5cef310f37ca75974f87415c8e835dd3edb4858539b3ed8d1936db
+700cbd19ce1d23daecd86ee2dc935c30c65dd075f2e89b3e24f6a153e734f381
+132d5b244f38d1f6a44598e10beec38418df1b9cddbadecfd1f81c2b663bd937
+9e5883e300ecee002304606f797261bcb4e3d72b81ac6082d9bef01b749733a2
+e0d96d6389c680030b561b5d7e463bb07eb63e6835d6cb54a0d3cfcf0306e135
+99d0077e07e0d18c01d8f0db1116edd7dbc6fbaf5700d7cc02068188bc270017
+b8141be88ca961d77c3fed186131200fe07c36174c08c8824b1b2ef5039706f6
+0bc2b47914b71cbb119e05c44667f410dd72b7833d1b5309c381f97116a01c9c
+30bc639c2ef317de6b1cb482e6ecdd6c220611e0c391398b31092fbe0420a2b9
+0152bb9d1f1045f4f719f0ea70f510b3c10a673c2296e8041af51491232a6224
+dab2b200111a567c0e44a6b6275147e2019c058003409f1ae2678029048543b2
+18d3a75ce78341962292ebee37b5e019776dc705b571f87ef3bf058204a299e6
+9ae34d71a5f6b689c391c8448ba727c8000636db9fa183e9e1da1b13699e83a7
+b20611eb91188bc9c8a1457cde1e449d1980f934d35d2c42beb66034dcc15ba0
+f5d0c73740e9a2db65b06fe00a5b7b059c439982e44cd750de7a54f8f8009983
+8d69393820f6fabeab11f5a9e94291064e6d0720ece0b0ac948d75b74fc5085c
+e8c59e0782a4517dc2ac92ab938c02f8d03f107505324060770024610ce09420
+093587340a3391842a54b40ce40f011cf217215a258bfd0999920f80f21cc013
+eb23219500eb1aa8753068558494bf4561282d53e60198a4408c9c890397ef10
+09e324d4e7c8df3f1e6c69edbe9a14a0c780a830143ac03e098de4a3f5619595
+6ec5828004ecefa8a0c230c925195027ec381c848389e33a399652c56e0a8f3a
+103ed94df321a3635c1f7a4082c787254f9414f72202449a44f5512ac040234b
+1f171df099a47b8ffb244a16d6155ec7d15830af4ebb57d64399ec2162550793
+6063c6ae2452e6500e17cb06436fa3ea87cfca0deb979bb3ac3625a19b4ce77c
+c28f7978471429d0bbd3952a50f30612c0354a252ae5466e615c3a0c42f4721d
+20c1e5f90c8f28098c2a756078c97cf98ba0939fe0998a9b2feaa7784e08e1de
+684ede4e19c1c443401ed563da0fc133581f3613afbfa9802435fe3726c5ac1a
+8e2ad17a29d81097f980daf6d121cca747942dc6e4c7ee78722a1a4c1a8ea839
+424043a60a25c2c3ee74fe737427e41b0fb0902fec2d6e27e1eb4106ad8f5265
+15c1d95ab0d639730c398e648ea9c05e5759750955d5a8efb1b1f27de6cf6a34
+b8e0a2858373090f4807c32c671651f1a145b4bdea8bf79262b649046b83d953
+8d5485f7bb80546f86264e9d135ab1abb51b6565b8fa841d955923660d3fc58a
+c2be99f3458371abd68660b2d8657555fb0840ceaf073e4bd6701a0bdb2ae2a8
+2fbb3bf8169138a4b32e3dfefa9e1ef2f7334ca5dd33fb7c9ab8e741a5f5c86a
+0b1dbd9ac04981c1e1a92e316f19b94d22d29f04e058f5ec54f9fdae78066117
+6fcf50dadacd361aa424bd7d12b9cae4c58a75c9545bdbde952440dcbc1848aa
+b8a86ea83808b95f3537c0ad2665a907c1f8be1e720bf361b0c0ac6a6fa7fa3a
+7289823bfbb5e6c3add9d5b5e24912ee39aa9e7048b750cca42e0e56a50aeab4
+826cd6ba396f625fdacda556e219623e92e09445cccdb9d5aef82ad59abb6a06
+5550d565b27aac4a46cce3f4ea0fa6caf75c527cf7d230435c0bdd235dfe0dc0
+50c558b09db2635e29e66789d2565c0f68d334f2c3a08afc17e8d280875901c9
+7a2cfcee8525f03cd5ce19961218b6443807c1901a324321bd1cd6fc4779ac97
+78c5acf85baf24670167043e2754e72ad9efe25eac3a09f72b21c78a0e24cc94
+fdace7d259b38280055d9400e128c4b1ab95b0598d61ecdb72d92ab2a3820aa2
+ab71ec7785906e39114ffc6c57cab0c1a4199cc096f1887986b8d1ecec0534e7
+57a093c482bada6d34b24ab12d5df81272a5002ee9440ef67db055244c54249a
+32d52971649a5b9d2e6f018b73ad2e6ca3b4daeead2ac7ad127c8075d9d5827d
+70c9aeedcc8a313f0c470cb541152ee2cad635ae149855e90f502e66215f57d4
+80281050b3db1d572dd478ebe6416a70bec6b761401c756b60e9458881ffbad5
+c43adb23464c68a09d2c3eec222d5aa922c07c04fc8a52ac6a1a07cfa7e54f3d
+494596c36218558fc9cc2d2cbf553a5699f03dbe97c8717d88adb697ef99a3a4
+cc333fe68f3b1555941b4318eade501664efa5a25755490986842ed4dd8f3ce8
+f4e086627815f8ba56611c55e4ec366ebc2392295784b31ac607c0b4829734d3
+258a976022f25b4920de529626b3e07e4ca83a61bbc0e5d7886a592fed73df2c
+db226ce20ef52cad6685673933236f8da4dcb3e7ccb89232abf4705cbda7ddf6
+854f5222a4b621a340786896f174ec54297d99b8773ad052c6a0e63225475d38
+33eda32875d9cf728a6ce37ffaa934bc03c27a51c9b2cdba3e59605c92613759
+f29434718596e6a3afbdda803c6a12ad170f4eefff12b7e74b900d25dbe9d572
+7048953ca3f8500b189153a1a785b4e498849c3c2098c7eaeb0499e44d5f522a
+f4e868ea5e6ea5166426c1e1a7a995d52148c8cecdfea7a139f77bc508756d1c
+d293afd7ff5e37e0a75720ff7c992bf4744245bc84efdc92c2ef0abc0976af0e
+c6222f0453efb3eed60f64a73a2d42ae0bdd53c23fc17e52055268d79bfc6e2e
+f292c54bbf2dee7721af16d2a2da94f473330985952f320a10ca3d539dc781ef
+b760d29a51d6df4e248f3a41abaf6f4f80ff05cdd7eb8fd7ff019a0be598>
+endstream
+endobj
+
+16 0 obj
+<</Type/XObject/Subtype/Form/Filter[/ASCIIHexDecode/FlateDecode]/FormType 1/Matrix[1 0 0 1 0 0]/BBox[0 0 1130 2440]/Group 5 0 R/Resources<</ExtGState<</R10 8 0 R>>>>/Length 7112>>
+stream
+789c6d5949922d490ddcd729de0548428af918b0e1006dd02c7e6306dcdf0cb9
+bb94f5bb8d5555e48b4993cba5f8f35fad7d7efdefd7bfbfdac7c7689fb3f6e7
+4ffcef3f7ffffadbe75f5fedb1bebded4ffce3368ff39f39cef9fce7d72febe3
+59e37cfada4fdff7f35b7c99cf9c165fcee3fd7cacaf678ccbf1368bf17e96eb
+f7b3edf34bac885f667cb84ff3f8fd3e779986f37e6cd833be87317d9cd8e07e
+4f98f3d9c7748516072c7ff68e618fcf5c1013778f0fede9377edfeb893f7d8e
+e760fa198fe180a1e531ffdc07e2f5d19e734382185ff74f0fc9468fe194003d
+7ed68d8e3d1e02f87a1c12eeb85048debd3f2dee27b9ba1bf580fbf4f8cfde2f
+a1d41044e34981fcb99dc3b325f1a644ee4fd8c1863f060172fbd0af879cdd25
+0ff429c9bb4f5ed07a2c808d7c3fc3a161cb15f7e9830b1a04ebf91d43de3ff6
+e990bfd67709ae139a854c611b4a5c33c67af68a1362677a4548923a8db33963
+eed069acf0a33b2ecafa4737fae5cbb78ce6f29edfe2c3e16da0961bd6f130e3
+8c2bd8c11fdf8327755b5036d65359dda46b4f6feb16468be92bcf6b527dcc0f
+23f0c3e0057cca899a7cc6c302239cd2efa44bc4fcb4825fc33a0f2b6c8b7567
+71430f5d86163e100307c502d70d7c6f48ec9e0b204618c95d37f24d27c37c7f
+66bf926cc4ef61a385a17308b1714e38d7dc981e82af06c936e48e48d5c543d0
+50a3db605079a87b72f688cd316e11a4f17367ac7a5ac7434b175a9bda2516b4
+90a3412fe3894d3ede18b35453e7885a9ef21ccc3f8fadd05b08ddfd7b42e8b1
+e1dcd80ee6f2110734dadb18431e31d7614f734d8463f04626f15c1b69816d7c
+91efe1ce545028a2ef9f8e88793aa1c945ec4a753fe2cba49876687b0cd78af0
+3dc0076ff29c440face70d2d5436c3f7eddef07d44abee617787250ef16a4105
+762bfc18bd767b1c96f18a9809c78103607c7f869d02483b5a1778883f47fe62
+434189f9f371c0c10c4dc50f27f6c7f111688085e30ab421c309a5189c539e6b
+5b406bb33f0b026cf9b8a58963c51eef0c5e3d7c8f7b03a0d68b6cd040ef5cb0
+187d75a6ad0927c09570d1c580b51178cbfb67ac03fe63b52d5996d832a57704
+0490a20b66b7bcd202f860405c8f1b9822eb15289cdb08025002450d6f22f225
+d69b7c021a0c30b0f09cb826a687093f21212e0873d0be1842a82bb8c718a7c0
+c04306abdd2f2d69114c903adc2c7c846701af30ff0aef2bba025ce06f4d5008
+ff62426af30da2b46193bee1c1d820f6899808106872f570b47bdaccb00b5d5e
+8a3dde380e513a9c06611fe0116276f91082e57c7f00aac015221e0c3e1af2c3
+f74e9e0750524abcf079a017c0d870de5dc0e488c5153287628e72afa7ad2e3d
+6210e6e0cd115c887257eeb226f0c2fc4020784993f53d932c948a8ce35d8061
+803be140c40f90d65c71e93de3d0190f1ee103a443026a04ca9159b793d004e2
+f4d7efe0678424283df6651c03e3e8f5c0ce7097c08d880778a6dc1f20c9780d
+7784c32093c83d83001d5e713147c01b230e7cc96ae4111788ae3c2e1042e65a
+092885f849a4620c81b6708dac847ee84713b103269ca22d42028ca1c13394ed
+b11fe37dc9bbbce27ea4976d61b485a9945ab6ac032b1171f3820799eb2ca6ac
+3860013d33f732e92ce08a4940687611d2235b6ca30200a4994c97226322e4e0
+478105b0f604256b87492dd2d4c4b6f2f398103b46ba890c8e1bc8f683d97994
+4a81c48d919d570cd788a32645446eedc886d007d00d0c25bd5c1a03bf32db30
+f8298844aa89fd4f4274cef0cba46cedd5c015dd413442971db13d3e8b6181a1
+923ebdbfe1821dd92ab08ca6f6e02126f267549591c71082e9333822998eb7f8
+8dda61a4b5c32189c3d2524d0d57eee0cde05c261233e0404de3d0529863c4bd
+395fec6033f6c607e34044e60fdb35bc80b9a6ab747a9825af8c21f1d893a85b
+66a8cc547977449489c245cc63b845c1229039fdaee466e0785d191601f3e3eb
+15b125abf4dfd1189046722a9bc9d0233d11565c6cb177b226a0171c11b415ca
+063811533a329a1fe2134b854e4610ac368c88c28114314930a627bbcad4de93
+1575553ca82c304c6a83db285087bc0a8504b9dc1845f3c1f0f2579903190894
+935edb54f0b898017c0df3818cdc1ea44e4c8841f283dc164804b4a7a7cf45ae
+951e14b727b57bb505c4130d5426f2296e967e3684a8c805c9dd0689536175dd
+130203ef462b2a287ceb52c7a453167cfbca3d84efdf3438cb474429b3644f1a
+7de46c380ceb4e19c3472e3829d6a0d5fca4d24ab6402f9116a88bbf9ca2d462
+d047791f6885b48c98073c0a0fe14b6769e39436ce43398a7584a097f8477a66
+a229a67f7382d2406f3deb023a05a040054208880c57c85002a064a1316fb12e
+d42ca84ffd661dd9c438b033cd7db39e4d26832b2dcdb04c599709ad1ba9ae2b
+8fa07c943b24da4544a8b6c91a07f52368cc513c60a87c7168128cb7e440b6e8
+89067f28ec821665feac5aecb72f50ec3bf405b8225659d7070d6479dae48720
+86930edf939ad961918721337d52e7ef620fdc7b0886813b77682414bb4acb28
+fd66ce260a20ce9827af3c357476884a9695df37d1560704162303dc593ba545
+6d0b4ecae060be08907408e465f8df26452aed20c5312040c6e94e8b6e6433bd
+b7da2b0ab37462f40e14eb4bbd0b916f5f551c64113bdfbb0f32639fd94b19e2
+1c534479308b79c21d66bb2e378550b57dd50b0845fd9a869a59ddd5f6336366
+9261c618041c74491554fcc392568659e4239e4545b697c0a6dce405f656c02c
+e3946d3044872159cfb7628e6036d7831ea942ee286ccb677ed2ccfb25f9e1c9
+fdabfe3b524e56b8b80fbd1700a5ec96956c571f03ecf1641a415ca82042e077
+852f86961498e28bd7220b8d537e434e9c1552f15125ad0a13779689b8cfcaa4
+26be19d73b1cd2b12c5926405e1d18d483d93aa0adb218cc7afabd7edb2a8fb3
+bc43110d5759894922faa8041b2e1fd09421185f229954314e619b92fefa29c8
+116c88215c473bdd0a2a959a575ab59724d37c3097c2d7aeab7cee4f062b5b6c
+554d07a7ceed0fab7efca1f9d5f2038746e92a4cafc056adce634faf55b061fa
+c0bbfbae06dbb1944ad882cbb3d4dbbadc560bc392c6ca1558c42c817db50ca9
+47a877ea42099488acdc7164f130a57ff4fa54f493fd9ba9bc128cc0fcd68a58
+aa98ad52111bc69500552a2d0b88de1b8851ade488c01dc0d26275c51306555e
+acdf32712ff65cc6dbf2db2f8d4405163b9ea62351a0411b2a636281137769c1
+c372dd057de489edb0ee0f80104b54b902c9e2e7195e83054dc475a81645591d
+2e78eb828d8e7dd4b1c26cf150b57be318de3f8a699786ee56354218a78a6ed7
+0cb61e5b872e3963b1c070ec4486cd9e5d43d01cd3d5c3f02c4c36fa6f511084
+5236c26167651f8e7454b16f6269ec8d264d90f132d04972bff3fb05ea504db5
+e22edda256405e287ebbe4fb2ec2bfbf289fee2ce4d0e80036d4ad2c8b9258c1
+5e075a294c33af09b317078640a77aabf64336675c0023e3ba13b06ee27f6534
+ab7e2eacc1df33b4b21582de0f03a4727dfa442c4035861acd33eb1ab38a895d
+4314fdea1510261c46df80a166a26d18f30463e2c002fa92317b6377b623122f
+2c9b566a9c609292c7fb3de1cdc895e0b1359d433592be776f22a9969dffea07
+65f31c6353ef301f5d60d3a93714b4b05a82634fb4ca262ae6e797ec26fee017
+36d3b25957592ac93eba2164232d4b38846fe03e3ea812f66c2248f07c00c06e
+53f333cd645583ab00c046d67a2dd1a89a2eea9d8eb72b73f07461eadac4f558
+29c2c17cd31a3bfb513016410694f4c81d627ad08a8bc083faf5a4322d3730ed
+3f0097a6de1cfcb1974337e5151479a190a6761ddf3ebc608609b05310e370a8
+2db3f30e59a43a53a0d5026461b669be59794227bc82b933610442b05104798b
+35fb56cb8d4f2f8dad0c2207bac721311ed1284f75a34785a43e80c9c9be7498
+e1a9dec14a2fa667472f09e0c8de42d96b80b79d55bddb985f98da55448ed77e
+cc3b6327a2f44ccf8324a6f30312f0cc3e47d97b32e8f430c46ef1ca56104e0c
+35abc735e84f68400e358ee07ed9bb6edfdd6cf5ffd4835beab9e6a319f3eca9
+88a0ff27afc96747dbbf7b73b37c665276639b7a334f623895f1f56899bc805e
+aed9c919495e86383ce805c068243d38d5317ce3e2481e53cd5cec2453a7a902
+4570e5b1472f7f0803fe3daa110127d4ee7eb9a3f5fca29e0abc9afe406c17d2
+24694d791b6baafa706f3a77f6e02f970f8e75c2dddf337059564fdc521c08c4
+8ffebf49d763c14df73f72f79bd9134261fdfbf354d9141f429e5d8dd377fad5
+338db239f8a128588dd5d2c090f9e266b333a1945d7bbd7116d8de3481c883dd
+44ce565ddaab9e1133170970eabc1ef41a210d360339b7ec6b14f2a2e754cf48
+a895b21ac09b7075a7d505c217368de46f355267ec9d5d84330b2c9fead1bc55
+e454d3fb2d22c7a9ed87da31f9200707641f66e4a3795ebff762472e1473a50b
+773d6a8ade673e83b04e614d45165ff186de63d884c9a796269da296508b05da
+fd49778d154b75fbca133c3b23e10a496dd000c4f347ac82676403ac3cedbb12
+6af5549095564b5bf495e3ec93bd1dbba2176f3167b2d648969d6c02c6c9046b
+aaf1479625e51c33d5293251cd28257cc4231f13161588e2742ad7900ea84ccf
+c2dbb2ca37917793baf28582eac5694bb94168a89e70bd31a943b9d4bba8e8e5
+cfd2280a7a342544df5916b0fd96854831baeff2bb282afa1270bd7d446dd13f
+43c9c55755f6d3ba5edb76bd6225401c17cff7040874998ccd7a61f52f5ffffc
+3fbda27f7cfde5eb7f974fa9f9>
+endstream
+endobj
+
+17 0 obj
+<</R10 8 0 R/R8 7 0 R>>
+endobj
+
+18 0 obj
+<</R18 16 0 R/R17 15 0 R/R16 14 0 R/R15 13 0 R/R14 12 0 R/R13 11 0 R/R12 10 0 R/R11 9 0 R>>
+endobj
+
+19 0 obj
+<</Type/Metadata/Subtype/XML/Length 2438/Filter/ASCIIHexDecode>>
+stream
+3c3f787061636b657420626567696e3d27efbbbf272069643d2757354d304d70
+43656869487a7265537a4e54637a6b633964273f3e0a3c3f61646f62652d7861
+702d66696c74657273206573633d2243524c46223f3e0a3c783a786d706d6574
+6120786d6c6e733a783d2761646f62653a6e733a6d6574612f2720783a786d70
+746b3d27584d5020746f6f6c6b697420322e392e312d31332c206672616d6577
+6f726b20312e36273e0a3c7264663a52444620786d6c6e733a7264663d276874
+74703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73
+796e7461782d6e73232720786d6c6e733a69583d27687474703a2f2f6e732e61
+646f62652e636f6d2f69582f312e302f273e0a3c7264663a4465736372697074
+696f6e207264663a61626f75743d222220786d6c6e733a7064663d2768747470
+3a2f2f6e732e61646f62652e636f6d2f7064662f312e332f27207064663a5072
+6f64756365723d2747504c2047686f73747363726970742031302e30342e3027
+2f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d2222
+20786d6c6e733a786d703d27687474703a2f2f6e732e61646f62652e636f6d2f
+7861702f312e302f273e3c786d703a4d6f64696679446174653e323032352d30
+332d30335432323a35383a32392b30383a30303c2f786d703a4d6f6469667944
+6174653e0a3c786d703a437265617465446174653e323032352d30332d303354
+32323a35383a32392b30383a30303c2f786d703a437265617465446174653e0a
+3c786d703a43726561746f72546f6f6c3e496e6b736361706520312e34202868
+747470733a2f2f696e6b73636170652e6f7267293c2f786d703a43726561746f
+72546f6f6c3e3c2f7264663a4465736372697074696f6e3e0a3c7264663a4465
+736372697074696f6e207264663a61626f75743d222220786d6c6e733a786170
+4d4d3d27687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f
+6d6d2f27207861704d4d3a446f63756d656e7449443d27757569643a38343532
+343064622d333035632d313166622d303030302d663238303765623930383664
+272f3e0a3c7264663a4465736372697074696f6e207264663a61626f75743d22
+2220786d6c6e733a64633d27687474703a2f2f7075726c2e6f72672f64632f65
+6c656d656e74732f312e312f272064633a666f726d61743d276170706c696361
+74696f6e2f706466273e3c64633a7469746c653e3c7264663a416c743e3c7264
+663a6c6920786d6c3a6c616e673d27782d64656661756c74273e556e7469746c
+65643c2f7264663a6c693e3c2f7264663a416c743e3c2f64633a7469746c653e
+3c2f7264663a4465736372697074696f6e3e0a3c2f7264663a5244463e0a3c2f
+783a786d706d6574613e0a202020202020202020202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020200a202020202020202020202020
+2020202020202020202020202020202020202020202020202020202020202020
+202020202020202020202020202020202020202020202020202020200a3c3f78
+7061636b657420656e643d2777273f3e>
+endstream
+endobj
+
+xref
+0 20
+0000000000 65535 f
+0000000016 00000 n
+0000000078 00000 n
+0000000251 00000 n
+0000000303 00000 n
+0000000456 00000 n
+0000000523 00000 n
+0000000729 00000 n
+0000000787 00000 n
+0000000843 00000 n
+0000007933 00000 n
+0000015756 00000 n
+0000018669 00000 n
+0000023193 00000 n
+0000027934 00000 n
+0000031696 00000 n
+0000036327 00000 n
+0000043654 00000 n
+0000043695 00000 n
+0000043804 00000 n
+
+trailer
+<</Size 20/Info 2 0 R/Root 1 0 R/ID[<DB8E5772E45A27F6B6A429F6F6E4BF8D><DB8E5772E45A27F6B6A429F6F6E4BF8D>]>>
+startxref
+46342
+%%%EOF
+%</hdumotto>
+%<*internal>
+\fi
+%</internal>
+% \fi
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hdu-graphics.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.dtx
===================================================================
--- branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.dtx (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.dtx 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,2469 @@
+% \iffalse meta-comment
+%
+% File: hduthesis.dtx
+% -----------------------------------------------------------------------
+% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+% *
+% It may be distributed and/or modified under the conditions of the *
+% LaTeX Project Public License (LPPL), either version 1.3c of this *
+% license or (at your option) any later version. The latest version *
+% of this license is in the file *
+% *
+% http://www.latex-project.org/lppl.txt *
+% *
+% This work has the LPPL maintenance status `maintained'. *
+% *
+% The Current Maintainer of this work is Mingyu Xia. *
+% *
+% This work consists of the files hduthesis.dtx, *
+% hdu-graphics.dtx, *
+% and hduthesis.ins, *
+% and the derived files hduthesis.cls, *
+% hdu-<module>.code.tex, *
+% beamerthemehdu.sty, *
+% hdulogo.pdf, *
+% hdutitle.pdf, *
+% hdubadge.pdf, *
+% hdumotto.pdf, *
+% hduthesis.pdf, *
+% and README.md. *
+% -----------------------------------------------------------------------
+%
+% Any modification of this file should ensure that the copyright and
+% license information is placed in the derived files.
+%
+% -----------------------------------------------------------------------
+%
+%<*internal>
+\iffalse
+%</internal>
+%
+%<*readme>
+The `hduthesis` Class: LaTeX class for Hangzhou Dianzi University
+=================================================================
+
+LaTeX class for bachelor and mphil theses in Hangzhou Dianzi
+University is constructed by `LaTeX-expl3`. This class provides typesets
+for bachelors' and mphils' thesis in Hangzhou Dianzi University.
+
+Modules of `hduThesiS` provide the following supports:
+
+- `typeset`: Math and text Typeset
+
+- `layout`: Some central layout typeset interfaces
+
+- `bc.config`: Configuration for bachelor thesis' style
+
+- `pg.config`: Configuration for mphil thesis' style
+
+- `beamer`: HDU Beamer theme
+
+- `stationery`: Creation of HDU's stationery
+
+- `exam`: Typeset for HDU examinations' solution
+
+- `l3doc`: Configuration for class's `l3doc` manual
+
+Issues
+------
+
+The issue tracker for `hduthesis` is currently located
+[on GitHub](https://github.com/myhsia/hduthesis/issues).
+
+---
+
+杭州电子科技大学学位论文 LaTeX 模板
+==============================
+
+杭州电子科技大学学位论文 LaTeX 模板以 `LaTeX-expl3` 构建,提供杭州电子科技大学学士和硕士学位论文格式.
+
+`hduThesiS` 的模块提供以下支持:
+
+- `typeset`: 数学和文本排版
+
+- `layout`: 封面和浮动题布局
+
+- `bc.config`: 学士论文格式配置
+
+- `pg.config`: 硕士论文格式配置
+
+- `beamer`: HDU Beamer 主题
+
+- `stationery.config`: 学校信纸生成
+
+- `exam`: HDU 试卷解析模板
+
+- `hdu.l3doc`: 模板 `l3doc` 用户手册配置
+
+---
+
+References
+----------
+
+> \[1\]. The LaTeX3 Interfaces
+
+> \[2\]. CTeX 宏集
+
+> \[3\]. LaTeX for package and class authors current version
+
+> \[4\]. The LaTeX2e Sources
+
+> \[5\]. The LaTeX3 kernel: style guide for code authors
+
+> \[6\]. Package `etoolbox`, `geometry`, `tocloft`, `fancyhdr`, etc.
+
+> \[7\]. [毕业设计(论文)的写作规范及格式要求(含写作模板)](https://jwc.hdu.edu.cn/2022/0428/c4555a153813/page.htm)
+
+> \[8\]. [杭州电子科技大学研究生学位论文格式统一要求(杭电研〔2012〕311号)](https://grs.hdu.edu.cn/2013/0507/c1730a51754/page.htm)
+
+
+Copyright and License
+---------------------
+
+ Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com>
+
+ It may be distributed and/or modified under the conditions of the
+ LaTeX Project Public License (LPPL), either version 1.3c of this
+ license or (at your option) any later version. The latest version
+ of this license is in the file <http://www.latex-project.org/lppl.txt>
+
+ This work has the LPPL maintenance status `maintained`.
+
+ The Current Maintainer of this work is Mingyu Xia.
+%</readme>
+%
+%<*internal>
+\fi
+%</internal>
+%
+%<*driver|package>
+\RequirePackage{etoolbox, expl3, xparse}
+%</driver|package>
+%<*driver>
+\documentclass[mode = l3doc, full]{hduthesis}
+\usepackage[fontsize = 10.5pt]{fontsize}
+\usepackage[mono = false]{libertine}
+\setmonofont[Scale = .875]{Maple Mono-Light}
+\makeindex
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{\bfseries
+% \hologo{hduThesiS} 文档类\\^^A
+% 杭州电子科技大学学位论文 \hologo{LaTeX} 模板^^A
+% \thanks{^^A
+% 在 杭州电子科技大学非毕业生 / 教师 中寻找模板的接班人,
+% 要求熟悉 \pkg{expl3} 与文学编程. 欢迎有意愿者邮件联系.
+% }
+% }
+%
+% \author{^^A
+% Mingyu Xia \mailto{myhsia at outlook.com}^^A
+% \thanks{Physics Department, Graduate in 07/2025}
+% }
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \begin{abstract}
+% \hologo{hduthesis} 是杭州电子科技大学学位论文 \hologo{LaTeX} 模板,
+% 支持学士、硕士学位论文排版,同时提供了学校信笺、Beamer(幻灯片)与试卷解析模板.
+% \end{abstract}
+%
+% \begin{center}
+% \small\bfseries 用户协议
+% \end{center}
+% \begin{enumerate}[itemsep = 2em, itemsep = 0pt]\small
+% \item 本模板通过 LPPL 1.3c 协议开放源代码,您可以随意使用编译出的 PDF 文件.
+% \item 本模板根据杭州电子科技大学教务处颁发的
+% \href{https://jwc.hdu.edu.cn/2022/0428/c4528a153813/page.htm}
+% {杭电理工类毕业论文写作规范} 编写而成,作者不对使用本模板产生的格式审查问题负责.
+% \ulem{如果您所在的学院因论文查重、收录等原因要求提交 \file{.docx} 格式,
+% 不接收 \file{.pdf} 论文稿件,请勿执意使用本模板,避免因格式转换带来不必要的麻烦.}
+% 使用本模板时,请按编译错误提示操作来勾选同意用户协议.
+% \item 欢迎前往 \href{https://github.com/myhsia/hduthesis/issues}{GitHub}
+% 提交反馈意见,为推动学校认证与规范化 \hologo{hduthesis} 贡献力量.
+% \end{enumerate}
+%
+% \setcounter{tocdepth}{2} \tableofcontents
+%
+% \section{\hologo{hduthesis} 模板介绍}
+%
+% \hologo{hduthesis}(\textbf Hangzhou \textbf Dianzi \textbf University
+% \hologo{LaTeX} \textbf{Thesis} Template) 是杭州电子科技大学学位论文
+% \underline{非官方} \hologo{LaTeX} 模板,以 \hologo{LaTeX3} 构建,
+% 支持学士和硕士学位论文排版.
+%
+% 本模板文档将尽量完整地介绍模板的使用方法,如有不清楚之处,或者想提出改进建议,
+% 可以在 \href{https://github.com/myhsia/hduthesis/issues}{GitHub Issues}
+% 提交反馈意见及贡献代码.
+%
+% 对于未接触过 \hologo{LaTeX} 的初学者,推荐阅读
+% \href{https://tug.ctan.org/info/lshort/english/lshort.pdf}
+% {\ulem{The Not So Short Introduction to \hologo{LaTeX2e}}}
+% (可在终端执行 |texdoc lshort| 获取)或者其中文版
+% \href{http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf}
+% {\ulem{《一份(不太)简短的 \hologo{LaTeX2e} 介绍》}}
+% (可在终端执行 |texdoc lshort-zh-cn| 获取).
+%
+% \subsection{模板组成}
+%
+% \hologo{hduthesis} 模板的 \file{./tex/} 文件夹中包含了模板的所有 Runtime 文件.
+% 其中,\file{hduthesis.cls} 是模板的核心文件,实质上并不提供主要功能,
+% 只用于对全局选项的控制加载模板的各个模块. 模板的功能模块如下
+%
+% \begin{tasks}(2)
+% \task \file{typeset}:字体和公式设置.
+% \task \file{layout}:版面核心排版接口.
+% \task \file{pg.config}:硕士学位论文配置模块.
+% \task \file{bc.config}:本科学位论文配置模块.
+% \task \file{beamerthemehdu}:Beamer 主题.
+% \task \file{stationery}:信纸模块.
+% \task \file{exam}:HDU 试卷解析模板.
+% \task \file{l3doc}:用户手册模块.
+% \end{tasks}
+%
+% 以上模块包含在 \file{hdu-}\meta{module name}\file{.code.tex} 文件中.
+% 同时,\file{./tex/} 文件夹中还包含了 \file{hdulogo.pdf}、\file{hdutitle.pdf}、
+% \file{hdumotto.pdf}、\file{hdubadge.pdf},分别提供杭州电子科技大学校徽、校名、
+% 校训和校牌的矢量图.
+% \footnote{如果你通过 |tlmgr| 安装了此模板,在其他文档类中也可以调用这些素材.}
+%
+% 模板预加载的宏包有
+%
+% \begin{table}[htbp]
+% \centering \renewcommand* \arraystretch {.72}
+% \begin{tabular*}{\linewidth}
+% {*9{@{\hspace{1ex}}>{\footnotesize}l@{\hspace{1ex}}}}
+% \toprule
+% \pkg{amssymb} & \pkg{bm} & \pkg{booktabs} &
+% \pkg{cancel} & \pkg{circuitikz} & \pkg{cleveref} &
+% \pkg{derivative} & \pkg{extarrows} & \pkg{fixdif} \\
+% \midrule
+% \pkg{hyperref} & \pkg{listings} & \pkg{mathtools} &
+% \pkg{multicol} & \pkg{pgfplots} & \pkg{physics2} &
+% \pkg{siunitx} &
+% \multicolumn{2}{@{}>{\footnotesize}l}{\pkg{unicode-math}}\\
+% \bottomrule
+% \end{tabular*}
+% \end{table}
+%
+% \subsection{文件结构}
+%
+% \noindent \begin{minipage}[t]{.54\linewidth}
+% \subsubsection{源文件 \& 使用用例}
+% \dirtree
+% {^^A
+% .1 ./hduthesis.tar.gz/.
+% .2 hduthesis.dtx, *.pdf.
+% .2 hdu-graphics.dtx.
+% .2 hduthesis.ins.
+% .2 example/.
+% .3 hduthesis-bachelor.tex, *.pdf.
+% .3 hduthesis-m phil.tex, *.pdf.
+% .3 reference.bib.
+% .3 cha/.
+% .3 figures/.
+% .2 README.md.
+% }
+% \end{minipage} \hspace*{\fill}
+% \begin{minipage}[t]{.42\linewidth}
+% \subsubsection{Runtime 文件} \label{1.2.2}
+% \dirtree
+% {^^A
+% .1 ./hduthesis.tar.gz/.
+% .2 hduthesis.dtx/.
+% .3 hduthesis.cls.
+% .3 hdu-<module>.code.tex.
+% .3 beamerthemehdu.sty.
+% .3 README.md.
+% .2 hdu-graphics.dtx/.
+% .3 hdulogo.pdf.
+% .3 hdutitle.pdf.
+% .3 hdubadge.pdf.
+% .3 hdumotto.pdf.
+% }
+% \end{minipage}
+%
+% \subsection{模板的妥协与僵持}
+%
+% \begin{enumerate}
+% \item 模板的章节(\cs[no-index]{chapter}、\cs[no-index]{section}、
+% \cs[no-index]{subsection})字体、前后间距完全按照
+% \ulem{杭电理工类毕业论文写作规范}进行设置,虽然这样的设置可能与您的审美不符,
+% 但是这是为了保证论文的格式符合学校的要求.
+% \item \ulem{杭电理工类毕业论文写作规范} 中要求
+% \ulem*{参考文献书写格式应符合GB7714-1987},但目前
+% \ulem{GB7714-2015 为学术界通用格式,在已有新标准情况下旧标准理应废止使用}.
+% 所以本模板默认使用 \pkg{gbt7714} 宏包.
+% \end{enumerate}
+%
+% \section{模板安装}
+%
+% \subsection{系统要求}
+%
+% 本模板支持在 |macOS|、|Windows|、|Linux|、|Overleaf|、|LoongTeX|、|TeXPage|
+% 等平台使用,兼容发行版 \hologo{TeX} Live 2023 及更新版本^^A
+% \footnote{
+% 本模板均可在 |macOS Sequoia Version 15.4| /
+% |Ubuntu 24.04.1 LTS| / |Overleaf| /
+% |LoongTeX| / |TeXPage|
+% 上的 \hologo{TeX} Live 2024 中顺利编译.
+% \hologo{MiKTeX} 发行版以及 Windows 平台未作测试. 如在这些平台编译无法通过,
+% 建议转向在线平台,本模板在诸多在线平台编译性能良好.
+% }.
+% 本模板生成学位论文时支持 \hologo{XeLaTeX}、\hologo{ApTeX} 与 \hologo{LuaLaTeX}
+% 编译;使用本模板生成信纸、试题解析时支持所有编译方式.
+%
+% \subsection{标准安装}
+%
+% 强烈建议您使用 |tlmgr| 进行安装与升级. 在终端(Terminal)
+% 执行以下命令即可安装最新版本的 \hologo{hduthesis} 模板.
+% \begin{quote}
+% "sudo tlmgr install hduthesis"
+% \end{quote}
+%
+% Windows 系统用户无需 |sudo|,请以管理员身份运行命令提示符.
+% 有些时候,您需要手动更新 |tlmgr| 才能正常使用 |tlmgr| 命令安装宏包.
+% \begin{quote}
+% "sudo tlmgr update --self"
+% \end{quote}
+%
+% 升级该模板,在终端(Terminal)执行以下命令即可
+% \begin{quote}
+% "sudo tlmgr update hduthesis"
+% \end{quote}
+% 发行版 \hologo{TeX} Live 2025 以及更新版本已自带本模板,无需安装. 只需在必要时升级即可.
+%
+% \subsection{手动安装}
+%
+% 本模板已上传至 \href{https://ctan.org/pkg/hduthesis}{CTAN}、
+% \href{https://github.com/myhsia/hduthesis/}{GitHub} 和
+% \href{https://gitee.com/myhsia/hduthesis}{Gitee} 平台,
+% 可直接 Clone 项目. 解压后在当前目录运行
+% \begin{quote}
+% "latex hduthesis.ins"
+% \end{quote}
+% 会生成如 \ref{1.2.2} 所示的 Runtime 文件. 接下来获取安装路径,在命令行输入
+% \begin{quote}
+% "kpsewhich -var-value TEXMFLOCAL"
+% \end{quote}
+% 后会输出一个路径. 将上一步生成的文件复制到该路径下 |./tex/latex/hduthesis/|
+% 文件夹中,然后在命令行执行
+% \begin{quote}
+% "sudo mktexlsr"
+% \end{quote}
+% 刷新 \hologo{TeX} 发行版的文件名数据库后即完成安装.
+%
+% \section{全局选项}
+%
+% \subsection{用户协议}
+%
+% 使用本模板编译本科、硕士学位论文时遇到``编译受阻''报错,请认真阅读封面的用户协议.
+% 添加选项 |agreed| 后(即|\documentclass [ agreed ] { hduthesis }|),
+% 方可顺利编译,\ulem{并默认您已同意用户协议}.
+%
+% 使用 \hologo{hduthesis} 编译信纸、试题解析和本用户手册时,无需 |agreed| 选项.
+%
+% \subsection{字体设置}
+%
+% 用户可通过全局选项设置文档的数学和中文字体. 设置的方式为键值对.
+% \begin{keyval}
+% \item [\key{math-font}] \val{font family name} 用于设置数学字体.
+% \item [\key{CJKmain-font}] \val{xeCJK interface} 用于设置罗马族的 CJK 字体.
+% \item [\key{CJKsans-font}] \val{xeCJK interface} 用于设置无衬线族的 CJK 字体.
+% \item [\key{CJKmono-font}] \val{xeCJK interface} 用于设置等宽族的 CJK 字体.
+% \end{keyval}
+% \begin{verbatim}
+% \documentclass
+% [
+% math-font = STIX Two Math, agreed,
+% CJKmain-font = {{Songti SC}[AutoFakeBold = 2.5, AutoFakeSlant]},
+% CJKsans-font = {{STHeiti}[AutoFakeBold = 2]}
+% ] {hduthesis}
+% \end{verbatim}
+% 更加详细的字体设置请参考 \pkg{xeCJK} 宏包的文档.
+%
+% \section{文档信息设置}
+%
+% \begin{function}{\hduset}
+% \begin{syntax}
+% \cs{DocInfo}\marg{key values}
+% \end{syntax}
+% 此命令接收键值,用于设置文档信息,\ulem{需在导言区中执行}.
+% \begin{keyval}
+% \item [\key{title}] \val{list} 用于设置论文题目与封面大标题.
+% \item [\key{department}] \val{string} 用于设置学院.
+% \item [\key{major}] \val{string} 用于设置专业.
+% \item [\key{class}] \val{string} 用于设置班级.
+% \item [\key{stdntid}] \val{string} 用于设置学号,
+% 会根据输入的学号自动选择本科生/研究生格式.
+% \item [\key{author}] \val{string} 用于设置作者.
+% \item [\key{supervisor}] \val{list} 用于设置导师.
+% \item [\key{bibsource}] \val{string} 用于设置插入参考文献文件源.
+% \end{keyval}
+% \end{function}
+%
+% 本科生输入样例如下. 考虑到不同学院对封面样式的要求不同 |毕业论文|、|毕业设计|、
+% |毕业论文(设计)|,\key*{title} 提供了接口供设置封面大标题:
+% 论文题目和大标题之间用斜线 (|/|) 分隔. 指导教师职称和姓名之间用半角冒号 (|:|) 分隔.
+% \begin{verbatim}
+% \hduset
+% {
+% title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/
+% 本科毕业设计, department = 理学院,
+% major = 物理学, stdntid = C668668E,
+% author = 申智能, bibsource = reference,
+% class = 英才班, supervisor = 教授:葉芷晴,
+% }
+% \end{verbatim}
+%
+% 研究生输入样例如下. 硕士学位论文扉页需同时有英文版,因此需要在键
+% \key*{title} \key*{author} \key*{supervisor} 中分别输入中文和英文信息,
+% 中英信息使用斜线 (|/|) 分隔,指导教师职称和姓名之间用半角冒号 (|:|) 分隔.
+%
+% \begin{verbatim}
+% \hduset
+% {
+% title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/
+% \hologo{LaTeX} Template for Thesis at
+% Hangzhou Dianzi University,
+% major = 物理学, stdntid = 216686680,
+% author = 申智能/SAN Chi Nan, bibsource = reference
+% supervisor = 教授:葉芷晴/Prof.:YIP Tsz Ching,
+% }
+% \end{verbatim}
+%
+% \subsection{生成封面 \& 扉页}
+%
+% \begin{function}{\maketitle}
+% 在正文区域,使用命令 \cs{maketitle} 即可生成论文封面和扉页.
+% 生成的封面和扉页会根据所设置的文档信息自动生成.
+% \end{function}
+%
+% \DescribeMacro{\l__hduthesis_grade_int}
+% 封面上的论文完成日期和学生毕业年份会根据当前系统时间自动生成.
+% 针对本科论文,如果当前月份在8月及以前,毕业年份会显示今年;
+% 如果当前月份在9月及以后,毕业年份会显示次年.
+% 在 \cs{DocInfo} 后对整型 \cs{l__hduthesis_grade_int} 重新赋值可手动更改毕业年份.
+%
+% \begin{quote}
+% "\ExplSyntaxOn"\\
+% "\int_set:Nn \l__hduthesis_grade_int" \marg{Year}\\
+% "\ExplSyntaxOff"
+% \end{quote}
+%
+% \subsection{生成承诺书}
+%
+% \begin{function}{\commitment}
+% \begin{syntax}
+% \cs{commitment} \oarg{file-date combined comma list}
+% \end{syntax}
+%
+% 此命令用于生成承诺书. 命令的可选参数接收数组,用于指定签名文件和输入签名的日期.
+% 签名文件和签名的日期之间用 |/| 分隔,多组签名之间用 |,| 分隔.
+% 签名文件接收 \file{.pdf} / \file{.png} / \file{.jpg} 等格式.
+% 日期的输入格式为 |yyyy-mm-dd|.
+% \end{function}
+%
+% 对于本科生,只需要签署 ``\ulem*{诚信承诺}'' 一组签名;
+% 对于研究生,则需要签署 ``\ulem*{原创性声明}''、
+% ``\ulem*{(作者同意)学位论文使用授权声明}'' 和
+% ``\ulem*{(导师同意)学位论文使用授权声明}'' 三组签名. 使用用例如下
+%
+% \begin{verbatim}
+% \begin{document} ... \maketitle
+% \commitment
+% [ example-image-a/2025-05-31, example-image-a/2025-05-31,
+% example-image-b/2025-06-01 ]
+% ... \end{document}
+% \end{verbatim}
+%
+% 如果使用者暂未生成签名但是需要添加日期,则将签名文件留空即可,但分隔符 |/| 仍需保留. 例如
+% \verb|\commitment [ /2024-05-31 ]|. 如果不需要添加日期,则直接留空即可.
+%
+% 论文封面、扉页和承诺书如下图.
+% 可在终端执行 |texdoc hduthesis-bachelor| 和 |texdoc hduthesis-mphil|
+% 分别获取本科和硕士学位论文样例文件.
+%
+% \begin{center}
+% \begin{minipage}{.32\linewidth}
+% \centering
+% \fbox{^^A
+% \includegraphics[width = .94\linewidth, page = 1]
+% {hduthesis-bachelor.pdf}^^A
+% }
+% \end{minipage} \hspace*{\fill}
+% \begin{minipage}{.32\linewidth}
+% \centering
+% \fbox{^^A
+% \includegraphics[width = .94\linewidth, page = 2]
+% {hduthesis-bachelor.pdf}^^A
+% }
+% \end{minipage} \hspace*{\fill}
+% \begin{minipage}{.32\linewidth}
+% \centering
+% \fbox{^^A
+% \includegraphics[width = .94\linewidth, page = 1]
+% {hduthesis-mphil.pdf}^^A
+% }
+% \end{minipage}\\
+% \begin{minipage}{.32\linewidth}
+% \centering
+% \fbox{^^A
+% \includegraphics[width = .94\linewidth, page = 2]
+% {hduthesis-mphil.pdf}^^A
+% }
+% \end{minipage} \hspace*{\fill}
+% \begin{minipage}{.32\linewidth}
+% \centering
+% \fbox{^^A
+% \includegraphics[width = .94\linewidth, page = 3]
+% {hduthesis-mphil.pdf}^^A
+% }
+% \end{minipage} \hspace*{\fill}
+% \begin{minipage}{.32\linewidth}
+% \centering
+% \fbox{^^A
+% \includegraphics[width = .94\linewidth, page = 4]
+% {hduthesis-mphil.pdf}^^A
+% }
+% \end{minipage}
+% \end{center}
+%
+% \section{章节设置}
+%
+% \subsection{输入中 / 英摘要}
+%
+% \DescribeEnv{abstract}
+% 环境 \env{abstract} 用于生成摘要,其可选参数可设置语言格式.
+%
+% \begin{function}{\keywords}
+% 命令 \cs{keywords} 需在 \env{abstract} 环境内执行,
+% 其会根据 \env{abstract} 环境所选择的语言,自动生成英文 / 中文格式的关键词.
+% \begin{quote}
+% |\begin{abstract}|\oarg{language}\\
+% | ... |\\
+% | |\cs{keywords}\marg{keywords list}\\
+% |\end{abstract}|
+% \end{quote}
+% 通过命令 \cs{keywords} 以半角逗号 (,) 为分隔输入关键词列表,
+% 输出时会根据所处 \env{abstract} 环境选择的语言不同,自动以半 / 全角分号分隔.
+% \end{function}
+%
+% \subsection{输入目录 \& 正文}
+%
+% 通过命令 \cs{tableofcontents} 可生成目录. \cs{chapter}、\cs{section}、
+% \cs{subsection} 等章节级次均按照
+% \href{https://jwc.hdu.edu.cn/2022/0428/c4528a153813/page.htm}
+% {杭电理工类毕业论文写作规范} 定制.
+%
+% \subsection{参考文献 \& 附录}
+%
+% 通过命令 \cs{DocInfo} 指定 \file{.bib} 文件后使用命令 \cs{printbiblography}
+% 即可输出参考文献列表. 参考文献格式已设置为 |gb7714-2015|.
+% 若未指定参考文献 \file{.bib} 文件,为加速编译,\pkg{gbt7714} 宏包将不会加载.
+%
+% 可以直接使用带有星号的章节命令生成附录章节,如 \verb|\chapter*{附录}|.
+%
+% \clearpage
+%
+% \section{附加模块}
+%
+% \subsection{用户手册}
+%
+% 本手册为 \cls{hduthesis} 加载 \pkg{l3doc} 模块后生成,此模块无需 \pkg{agreed} 选项.
+% \begin{quote}
+% |\documentclass [ mode = l3doc ] { hduthesis }|
+% \end{quote}
+% \subsection{杭州电子科技大学信笺}
+%
+% 加载模块 \pkg{stationery},并进行文档信息设置,即可生成信纸.
+% 可用于推荐信撰写或生成笔记纸. 此模块无需 \pkg{agreed} 选项.
+% \begin{quote}
+% |\documentclass [ mode = stationery ] { hduthesis }|
+% \end{quote}
+% 与学士 / 硕士学位论文文档信息设置类似,使用 \cs{DocInfo} 命令,
+% 对信件主题、发件人、邮箱、日期和水印进行设置. 此时 \cs{DocInfo} 命令接受键
+% \key*{title} \key*{author} \key*{mail}
+% \key*{date} \key*{watermark}. 下页为生成信纸的样例.
+%
+% \begin{verbatim}
+% \hduset
+% {
+% title = Recommendation Letter for SAN Chi Nan,
+% author = YIP Tsz Ching, mail = email at server.domain,
+% date = {23\textsuperscript{th} December, 2024},
+% watermark = true
+% }
+% \begin{document} \maketitle ... \end{document}
+% \end{verbatim}
+%
+% \begin{function}{\notelines}
+% \begin{syntax}
+% \cs{notelines} \oarg{num}
+% \end{syntax}
+% 用于在信纸上添加笔记线,其可选参数接收笔记线的数量,默认值为20.
+% 下页为生成的信纸和笔记纸样例,可在终端执行 |texdoc hduthesis-stationery|
+% 获取此样例文件.
+% \end{function}
+%
+% \includepdf [ pages = -, nup = 1x2, angle = -90, frame,
+% linktodoc, scale = 0.96, delta = 0in .25in
+% ] {hduthesis-stationery}
+%
+% \subsection{Beamer 主题}
+%
+% 本模板中存在独立的 Beamer 主题 "hdu",用于生成杭州电子科技大学风格的 Beamer 幻灯片.
+% 由于本主题为杭州电子科技大学专属,所以该主题暂不开放更改主题色杭电蓝和Logo.
+%
+% 加载模块 \pkg{beamer},并进行文档信息设置,即以 "hdu" 为主题制作Beamer.
+% 此模块无需 \pkg{agreed} 选项.
+% \begin{quote}
+% |\documentclass [ mode = beamer ] { hduthesis }|
+% \end{quote}
+% 与学士 / 硕士学位论文文档信息设置类似,使用 \cs{DocInfo} 命令,
+% 对信件主题、发件人、邮箱、日期和水印进行设置. 此时 \cs{DocInfo} 命令接受键
+% \key*{title} \key*{subtitle} \key*{author} \key*{date} \key*{supervisor}
+% \key*{reference}. 下页为生成Beamer的样例.
+% \begin{verbatim}
+% \hduset
+% {
+% title = Beamer Theme for Hangzhou Dianzi University
+% Based on \LaTeX3,
+% subtitle = hdu Undergraduate Thesis Proposal,
+% author = SAN Chi Nan (C668668E0),
+% date = {\today{} / Building 6, Room 321},
+% supervisor = Prof. YIP Tsz Ching,
+% bibsource = reference.bib,
+% }
+% \end{verbatim}
+%
+% \subsection{HDU 试卷解析模板}
+%
+% \begin{quote}
+% 此模块开发中,敬请期待 |:-)|\quad [预计完成时间:14/03/2025].
+% \vspace{\baselineskip}
+% \begin{flushright}
+% |@myhsia|\\
+% Physics Department\\
+% Hangzhou Dianzi University
+% \end{flushright}
+% \end{quote}
+%
+% \includepdf [ pages = -, nup = 2x4, frame, linktodoc,
+% scale = 0.96, delta = .25in .2in
+% ] {hduthesis-beamer.pdf}
+%
+% \begin{thebibliography}{99}
+% \bibitem{interface3} The \hologo{LaTeX} Project.
+% The \hologo{LaTeX3} Interfaces. CTAN: Released 2025-01-18.
+% \bibitem{ctex} \url{CTEX.ORG}. C\hologo{TeX} 宏集. 2022/07/14 v2.5.10.
+% \bibitem{clsguide} \hologo{LaTeX} Project Team.
+% LaTeX for package and class authors current version
+% \copyright{} Copyright 2023 -- 2024. 2024-09-15.
+% \bibitem{source2e} B. Johannes, C. David, J. Alan, L. Leslie L, M. Frank,
+% R. Chris, and S. Rainer.
+% \hologo{LaTeX} for package and class authors current version.
+% 2024-11-01 Patch level 2.
+% \bibitem{l3styleguide} The \hologo{LaTeX} Project.
+% The \hologo{LaTeX3} kernel: style guide for code authors.
+% CTAN: Released 2025-01-18.
+% \bibitem{packages} Package \pkg{etoolbox}, \pkg{geometry}, \pkg{tocloft},
+% \pkg{fancyhdr}, etc.
+% \bibitem{hdubachelor} 杭州电子科技大学教务处.
+% \href{https://jwc.hdu.edu.cn/2022/0428/c4555a153813/page.htm}
+% {毕业设计(论文)的写作规范及格式要求}
+% \bibitem{hdumphil} 杭州电子科技大学研究生院.
+% \href{https://grs.hdu.edu.cn/2013/0507/c1730a51754/page.htm}
+% {杭州电子科技大学研究生学位论文格式统一要求(杭电研〔2012〕311号)}
+% \end{thebibliography}
+% \end{documentation}
+% \restoregeometry \appendix
+% \begin{implementation}
+%
+% \section{实现细节}
+%
+% \subsection{HDU 校徽 \& 校名 \& 校牌 \& 校训的实现}
+%
+% \subsubsection{原始素材预处理}
+%
+% 前往 \href{https://www.hdu.edu.cn/666/list.htm}{校情纵览/校标规范}
+% 资源后,使用 Inkscape(或 Adobe Illustrator,Affinity Design,Vectornator 等)
+% 分别将校徽、校名、校牌、校训导出 |.pdf| 格式. 校牌可能需要手动将校徽、校名手动拼接.
+%
+% \subsubsection{PDF 文件处理}
+%
+% 由于发行版 \hologo{TeX} Live 2024 及更早版本中的 |dvipdfmx| 程序在以指定透明度插入经
+% Inkscape 导出的 |.pdf| 文件时存在透明度失效问题\footnote
+% {感谢 \hologo{TeX} 专家 \href{https://www.zhihu.com/people/li-a-ling}
+% {|@李阿玲|} 修复了这一 Bug (Commit: |fdefe61|).},
+% 所以先使用 |Ghostscript| 程序修复 |.pdf| 文件
+% \begin{quote}
+% "gs -o" \meta{input file}".pdf -sDEVICE=pdfwrite" \meta{output file}".pdf"
+% \end{quote}
+% 此时若使用 Text Editor 查看导出的 |.pdf| 文件,会发现里面存在许多无法识别的字符.
+% 这时需要使用 mutool 工具对 |.pdf| 文件的内容流进行清理、消毒、压缩和数据转换. 命令如下
+% \begin{quote}
+% "mutool clean -a -z -gggg" \meta{input file}".pdf" \meta{output file}".pdf"
+% \end{quote}
+%
+% \subsubsection{素材打包}
+%
+% 由于每个 |.pdf| 文件均存在以 |%| 开头的代码
+% \begin{verbatim}
+% %PDF-1.7
+% %µ¶
+% %%EOF
+% \end{verbatim}
+% 需更改 Docstrip 处理 |%| 行为:|%| 改为 |%%|,|%%| 改为 |%%%|,
+% 并在 \file{hduthesis.ins} 添加
+% \begin{quote}
+% "\let \MetaPrefix \perCent"
+% \end{quote}
+% 现可将处理结束后得到 ASCII 编码的 |.pdf| 文件,打包至 \file{hdu-graphics.dtx}.
+%
+% \subsection{\file{hduthesis.cls} 的实现}
+%
+% \begin{macrocode}
+%<@@=hdu>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def \hduthesis at date {2025-03-07}
+\def \hduthesis at version {1.0.0}
+\def \hduthesis at maintainerid {myhsia}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ProvidesExplClass {hduthesis} {\hduthesis at date} {\hduthesis at version}
+ {LaTeX Template Bundle for Hangzhou Dianzi University}
+% \end{macrocode}
+% 兼容 \hologo{TeX} Live 2023 及之后的版本. 当对应命令不存在时,在已有命令基础上新增变体
+% \begin{macrocode}
+\cs_if_exist:NF \seq_set_split:Nne
+ { \cs_generate_variant:Nn \seq_set_split:Nnn { Nne } }
+\cs_if_exist:NF \seq_set_split:Nee
+ { \cs_generate_variant:Nn \seq_set_split:Nnn { Nee } }
+\cs_if_exist:NF \tl_set:Ne
+ { \cs_generate_variant:Nn \tl_set:Nn { Ne } }
+\cs_if_exist:NF \tl_gset:Ne
+ { \cs_generate_variant:Nn \tl_gset:Nn { Ne } }
+% \end{macrocode}
+% 警告信息设置
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_msg_new:nn #1#2
+ { \msg_new:nnn { hduthesis } {#1} {#2} }
+\cs_new_protected:Npn \@@_msg_error:nn #1#2
+ { \msg_error:nnn { hduthesis } {#1} {#2} }
+\cs_generate_variant:Nn \@@_msg_error:nn { nx }
+\cs_new_protected:Npn \@@_msg_warning:nn #1#2
+ { \msg_warning:nnn { hduthesis } {#1} {#2} }
+\cs_generate_variant:Nn \@@_msg_warning:nn { nx }
+\@@_msg_new:nn { not found module }
+ { The ~ hduthesis ~ module ~ `#1' ~ not ~ found. }
+\@@_msg_new:nn { unknown mode }
+ {
+ Unknown ~ hduthesis ~ mode ~ `#1',~
+ loading ~ mode ~ `thesis' ~ instead.
+ }
+\@@_msg_new:nn { Users Agreement }
+ {
+ \exp_not:n
+ {
+ 编译受阻!~ 使用模板前请阅读用户手册中的「用户协议」
+ \MessageBreak
+ !模板作者 (@myhsia) 不对使用本模板产生的格式审查问题负责!
+ \MessageBreak
+ 如果您同意协议,在全局选项中添加 `agreed' 即可解除本错误
+ \MessageBreak
+ 欢迎您通过邮件 (myhsia at hdu.edu.cn) 或 GitHub 反馈意见
+ }
+ }
+% \end{macrocode}
+% \begin{macro}{\@@_load_module:n, \@@_provide_module:n}
+% 加载 / 提供 \cls{hduthesis} 的模块
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_load_module:n #1
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \file_if_exist_input:nF { hdu-##1.code.tex }
+ { \@@_msg_error:nn { not found module } {##1} }
+ }
+ }
+\cs_new_protected_nopar:Npn \@@_provide_module:n #1
+ {
+ \ProvidesExplFile{hdu-#1.code.tex}
+ {\hduthesis at date}{\hduthesis at version}
+ {hduThesiS ~ \text_titlecase:n {#1} ~ Module}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{variable}
+% {
+% \g_@@_agreement_bool, \g_@@_mode_tl,
+% \g_@@_math_font, \g_@@_main_CJK_font,
+% \g_@@_sans_CJK_font, \g_@@_mono_CJK_font
+% }
+% 定义文档类全局选项的键.
+% \begin{macrocode}
+\keys_define:nn { hduthesis / classoption }
+ {
+ agreed .bool_set:N = \g_@@_agreement_bool,
+ agreed .initial:n = false,
+ agreed .default:n = true,
+ mode .tl_set:N = \g_@@_mode_tl,
+ math-font .tl_set:N = \g_@@_math_font,
+ CJKmain-font .tl_set:N = \g_@@_main_CJK_font,
+ CJKsans-font .tl_set:N = \g_@@_sans_CJK_font,
+ CJKmono-font .tl_set:N = \g_@@_mono_CJK_font,
+ unknown .code:n = \@@_unknown_option:n {#1},
+ }
+% \end{macrocode}
+% \end{variable}
+% \begin{macro}{\@@_unknown_option:n}
+% \begin{variable}{\g_@@_base_options_clist}
+% 用于接收其他对此文档类未知选项.
+% \begin{macrocode}
+\clist_new:N \g_@@_base_options_clist
+% \end{macrocode}
+% \end{variable}
+% 处理未知选项:移交基本文档类处理.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_unknown_option:n #1
+ {
+ \tl_if_empty:nTF { #1 }
+ {
+ \clist_gput_right:NV
+ \g_@@_base_options_clist \l_keys_key_str
+ }
+ {
+ \exp_args:NNx
+ \clist_gput_right:Nn \g_@@_base_options_clist
+ { \l_keys_key_str = \exp_not:n {#1} }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% 处理接收到的全局选项.
+% \begin{macrocode}
+\ProcessKeyOptions [ hduthesis / classoption ]
+% \end{macrocode}
+% 遇到未知模块时返回警告信息.
+% \begin{macrocode}
+\bool_lazy_all:nT
+ {
+ { !\str_if_empty_p:N \g_@@_mode_tl }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { thesis } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { beamer } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { stationery } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { exam } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { l3doc } }
+ }
+ { \@@_msg_warning:nx { unknown mode } { \g_@@_mode_tl } }
+% \end{macrocode}
+% 加载 \module{beamer} 模块.
+% \begin{macrocode}
+\str_if_eq:eeT { \g_@@_mode_tl } { beamer }
+ {
+ \PassOptionsToClass { aspectratio = 2013 } { beamer }
+ \exp_args:NNV
+ \LoadClass [ \g_@@_base_options_clist ] { beamer }
+ \usetheme{hdu}
+ \endinput
+ }
+% \end{macrocode}
+% 加载 \module{stationery} 模块.
+% \begin{macrocode}
+\str_if_eq:eeT { \g_@@_mode_tl } { stationery }
+ {
+ \PassOptionsToClass { 12pt } { letter }
+ \exp_args:NNV
+ \LoadClass [ \g_@@_base_options_clist ] { letter }
+ \@@_load_module:n { stationery }
+ \endinput
+ }
+% \end{macrocode}
+% 加载 \module{exam} 模块.
+% \begin{macrocode}
+\str_if_eq:eeT { \g_@@_mode_tl } { exam }
+ {
+ \exp_args:NNV
+ \LoadClass [ \g_@@_base_options_clist ] { article }
+ \@@_load_module:n { exam }
+ \endinput
+ }
+% \end{macrocode}
+% 加载 \module{l3doc} 模块.
+% \begin{macrocode}
+\str_if_eq:eeT { \g_@@_mode_tl } { l3doc }
+ {
+ \PassOptionsToClass { 11pt, letterpaper, kernel } { l3doc }
+ \RequirePackage{minted}
+ \exp_args:NNV
+ \LoadClass [ \g_@@_base_options_clist ] { l3doc }
+ \@@_load_module:n { l3doc }
+ \endinput
+ }
+% \end{macrocode}
+% 其余情况下,默认加载 \module{thesis} 模块,并根据所输入的学号位数加载不同配置.
+% 未确认用户协议时,返回错误信息.
+% \begin{macrocode}
+\bool_lazy_any:nT
+ {
+ { \str_if_eq_p:ee { \g_@@_mode_tl } { thesis } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { beamer } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { stationery } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { exam } }
+ { !\str_if_eq_p:ee { \g_@@_mode_tl } { l3doc } }
+ }
+ {
+ \PassOptionsToClass { a4paper, zihao = -4 } { ctexrep }
+ \PassOptionsToPackage { quiet, no-math } { xeCJK }
+ \exp_args:NNV
+ \LoadClass [ \g_@@_base_options_clist ] { ctexrep }
+ \bool_if:NTF \g_@@_agreement_bool
+ {
+ \RequirePackage{hyperref}
+ \pdfstringdefDisableCommands
+ {
+ \def \cite#1 {<#1>}
+ \def \hologoRobust#1 {<#1>}
+ }
+ \AtBeginDocument
+ {
+ \hypersetup
+ { hidelinks, pdfproducer = hduThesiS ~ by ~ Mingyu ~ Xia }
+ }
+ } { \@@_msg_error:nn { Users Agreement } { Unconfirmed } }
+ \@@_load_module:n { typeset }
+ \@@_load_module:n { layout }
+ \cs_new_protected:Nn \@@_docinfo_degree_if_aux:
+ {
+ \int_compare:nNnTF
+ { \tl_count:N \l_@@_set_stdntid_tl } = { 8 }
+ { \@@_load_module:n { bc.config } }
+ { \@@_load_module:n { pg.config } }
+ }
+ \endinput
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%
+% \subsection{\module{typeset} 模块的实现}
+%
+% \begin{macrocode}
+%<*typeset>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_provide_module:n {typeset}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage { circuitikz, pgfplots, listings, hologo,
+ lipsum, zhlipsum, booktabs, multicol }
+\pgfplotsset { compat = newest }
+\hologoFontSetup { general = \sffamily }
+% \end{macrocode}
+% 插图相对路径设置.
+% \begin{macrocode}
+\graphicspath
+ {
+ {./figure/}{./figures/}{./image/}{./images/}
+ {./graphics/}{./graphic/}{./pictures/}{./picture/}
+ }
+% \end{macrocode}
+% 设置行距倍数和缩进.
+% \begin{macrocode}
+\linespread{1.39}
+\dim_set:Nn \parindent { 2\ccwd }
+% \end{macrocode}
+% \begin{macro}{\@@_font_semilarge:, \@@_font_semiLarge:}
+% 两种新字体尺寸设置.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_font_semilarge:
+ { \@setfontsize \@@_font_semilarge:{14}{16.5} }
+\cs_new_protected:Nn \@@_font_semiLarge:
+ { \@setfontsize \@@_font_semiLarge:{16.5}{17.5} }
+% \end{macrocode}
+% \end{macro}
+% 设置西文字体
+% \begin{macrocode}
+\setmainfont{texgyretermes}
+ [
+ Extension = .otf, UprightFont = *-regular,
+ BoldFont = *-bold, ItalicFont = *-italic,
+ BoldItalicFont = *-bolditalic
+ ]
+\setsansfont{texgyreheros}
+ [
+ Extension = .otf, BoldItalicFont = *-bolditalic,
+ UprightFont = *-regular, BoldFont = *-bold,
+ ItalicFont = *-italic, Scale = .9
+ ]
+% \end{macrocode}
+% 公式排版必要宏包加载,行间公式前后间距设置.
+% \begin{macrocode}
+\RequirePackage { mathtools, amssymb, cancel, fixdif,
+ derivative, siunitx, physics2 }
+\usephysicsmodule { ab, braket, op.legacy, bm-um.legacy }
+\RequirePackage
+ [ warnings-off = { mathtools-colon, mathtools-overbracket }
+ ] {unicode-math}
+\AtBeginDocument
+ {
+ \dim_set:Nn \abovedisplayskip {3pt}
+ \dim_set:Nn \belowdisplayskip {3pt}
+ }
+% \end{macrocode}
+% 数学字体、中文字体设置.
+% \begin{macrocode}
+\tl_if_empty:NF \g_@@_math_font
+ { \setmathfont { \g_@@_math_font } }
+\tl_if_empty:NF \g_@@_main_CJK_font
+ { \exp_last_unbraced:No \setCJKmainfont \g_@@_main_CJK_font }
+\tl_if_empty:NF \g_@@_sans_CJK_font
+ { \exp_last_unbraced:No \setCJKsansfont \g_@@_sans_CJK_font }
+\tl_if_empty:NF \g_@@_mono_CJK_font
+ { \exp_last_unbraced:No \setCJKmonofont \g_@@_mono_CJK_font }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</typeset>
+% \end{macrocode}
+%
+% \subsection{\module{layout} 模块的实现}
+%
+% \begin{macrocode}
+%<*layout>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_provide_module:n {layout}
+% \end{macrocode}
+% 页面样式、编号、列表设置.
+% \begin{macrocode}
+\RequirePackage { geometry, array, setspace,
+ fancyhdr, enumitem, cleveref }
+\RequirePackage
+ [ skip = 1.75ex, labelsep = quad, font = small ]{caption}
+\fancyhf{}
+\pagestyle{fancy}
+\renewcommand*\headrulewidth {.8pt}
+\renewcommand*\thefigure {\arabic{chapter}-\arabic{figure}}
+\renewcommand*\thetable {\arabic{chapter}-\arabic{table}}
+\renewcommand*\theequation {\arabic{chapter}-\arabic{equation}}
+\AddToHook{env/figure/after}{\vspace*{-2.3ex}}
+\AddToHook{env/table/after}{\vskip-1.9ex}
+\setlist[enumerate,1]
+ {
+ label = (\,\arabic*\,), itemindent = 4em, leftmargin = 0em,
+ labelsep = 1ex, topsep = 0pt, itemsep = 0pt, partopsep = 0pt,
+ parsep = 0em, listparindent = 2\ccwd
+ }
+\crefformat{figure}{图#2#1#3}
+\crefformat{table}{表#2#1#3}
+% \end{macrocode}
+% \begin{macro}{\@@_cover_spread_box:nn, \@@_cover_center_box:nn}
+% 分散对齐盒子与\ulem{下划线居中对齐盒子}.
+% \footnote{由 \url{tex.stackexchange.com} 论坛上 |@egreg| 提供接口.}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_cover_spread_box:nn #1#2
+ {
+ \mode_leave_vertical:
+ \hbox_to_wd:nn {#1}
+ { \exp_args:Nee \tl_map_inline:nn {#2} { ##1 \hfil } \unskip }
+ }
+\cs_new_protected:Npn \@@_cover_center_box:nn #1#2
+ {
+ \mode_leave_vertical:
+ \dim_set:Nn \l_tmpa_dim {#1}
+ \global\setbox1 = \box\voidb at x
+ \group_begin:
+ \setbox0 = \vbox
+ {
+ \dim_set:Nn \hsize {#1}\relax
+ \dim_set:Nn \parindent {0pt}
+ \skip_set:Nn \leftskip {0pt plus 1fil}
+ \skip_set:Nn \rightskip {0pt plus -1fil}
+ \skip_set:Nn \parfillskip {0pt plus 2fil}
+ #2 \par
+ \loop
+ \setbox2 = \lastbox
+ \unless\ifvoid2
+ \global\setbox1 = \vtop
+ { \hbox to\hsize{\strut\unhbox2}
+ \vskip-4pt \hrule height .5pt
+ \vskip9.6pt \unvbox1
+ }
+ \unskip\unpenalty
+ \repeat
+ }
+ \group_end:
+ \box1
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_process_array:NnnN}
+% 拆分 \cs{hduset} 部分键值输入二维数组.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_process_array:NnnN #1#2#3#4
+ {
+ \seq_set_split:Nee \l_@@_process_array_seq { / } {#1}
+ \seq_set_split:Nee \l_@@_process_array_row_seq { \c_colon_str }
+ { \seq_item:Nn \l_@@_process_array_seq {#2} }
+ \tl_if_eq:nnTF {#3} {:}
+ {
+ \tl_gset:Ne #4
+ { \seq_use:Nn \l_@@_process_array_row_seq {} }
+ }
+ {
+ \tl_gset:Ne #4
+ { \seq_item:Nn \l_@@_process_array_row_seq {#3} }
+ }
+ \seq_clear:N \l_@@_process_array_seq
+ \seq_clear:N \l_@@_process_array_row_seq
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{variable}{\g_@@_month_clist}
+% 存储英文月份表达.
+% \begin{macrocode}
+\clist_set:Nn \g_@@_month_clist
+ {
+ January, February, March, April, May, June,
+ July, August, September, October, November, December
+ }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}
+% {
+% \l_@@_set_title_tl, \l_@@_set_department_tl,
+% \l_@@_set_major_tl, \l_@@_set_class_tl,
+% \l_@@_set_stdntid_tl, \l_@@_set_author_tl,
+% \l_@@_set_supervisor_tl, \l_@@_set_bibsource_tl
+% }
+% 模式 \module{thesis} 下 \cs{hduset} 接口键值的定义.
+% \begin{macrocode}
+\keys_define:nn { thesis / hduset }
+ {
+ title .clist_set:N = \l_@@_set_title_tl,
+ department .tl_set:N = \l_@@_set_department_tl,
+ major .tl_set:N = \l_@@_set_major_tl,
+ class .tl_set:N = \l_@@_set_class_tl,
+ stdntid .tl_set:N = \l_@@_set_stdntid_tl,
+ author .clist_set:N = \l_@@_set_author_tl,
+ supervisor .tl_set:N = \l_@@_set_supervisor_tl,
+ bibsource .tl_set:N = \l_@@_set_bibsource_tl,
+ }
+% \end{macrocode}
+% \end{variable}
+% \begin{macro}{\hduset}
+% 模式 \module{thesis} 下设置文档信息.
+% \begin{macrocode}
+\NewDocumentCommand \hduset { m }
+ {
+ \keys_set:nn { thesis / hduset } {#1}
+ \@@_docinfo_process_aux:
+ \@@_docinfo_degree_if_aux:
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_docinfo_process_aux:}
+% 模式 \module{thesis} 下 \cs{hduset} 的辅助命令:拆分数组 / 设置参考文献.
+% \begin{macrocode}
+\cs_set_protected_nopar:Nn \@@_docinfo_process_aux:
+ {
+ \@@_process_array:NnnN \l_@@_set_title_tl {1} {:} \@title
+ \@@_process_array:NnnN \l_@@_set_title_tl {2} {:}
+ \l_@@_set_entitle_tl
+ \@@_process_array:NnnN \l_@@_set_author_tl {1} {:} \@author
+ \@@_process_array:NnnN \l_@@_set_author_tl {2} {:}
+ \l_@@_set_enauthor_tl
+ \@@_process_array:NnnN \l_@@_set_supervisor_tl {1} {1}
+ \l_@@_set_cnrole_tl
+ \@@_process_array:NnnN \l_@@_set_supervisor_tl {1} {2}
+ \l_@@_set_cnsupervisor_tl
+ \@@_process_array:NnnN \l_@@_set_supervisor_tl {2} {1}
+ \l_@@_set_enrole_tl
+ \@@_process_array:NnnN \l_@@_set_supervisor_tl {2} {2}
+ \l_@@_set_ensupervisor_tl
+ \bool_if:NF \g_@@_agreement_bool
+ { \tl_clear:N \l_@@_set_bibsource_tl }
+ \tl_if_empty:NTF \l_@@_set_bibsource_tl
+ {
+ \newcommand*\printbibliography{\chapter*{参考文献}}
+ \newcounter {citecount}
+ \renewcommand*\cite[1]
+ {
+ \refstepcounter{citecount}
+ \textsuperscript{[\thecitecount]}
+ }
+ }
+ {
+ \RequirePackage[sort&compress]{gbt7714}
+ \bibliographystyle{gbt7714-numerical}
+ \dim_set:Nn \bibsep {.35ex}
+ \newcommand*\printbibliography
+ {
+ \bibliography { \l_@@_set_bibsource_tl }
+ \addcontentsline{toc}{chapter}{参考文献}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_commitment_sign:N}
+% 插入签名图片.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_commitment_sign:N #1
+ {
+ \leavevmode at ifvmode
+ \lower \dimexpr \f at size\p@ * 9/16
+ \hbox
+ {
+ \includegraphics
+ [ height = { \fp_eval:n { 2*\f at size }\p@ } ] {#1}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_sign_process_aux:nnn}
+% 处理承诺书签名数组的辅助命令. 签名文件名需要展开后存入
+% \cs{l_@@_sign_figure_tl} 中.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_sign_process_aux:nnn #1#2#3
+ {
+ \clist_set:Nn \l_@@_sign_process_clist {#1}
+ \seq_set_split:Nne \l_@@_sign_figure_seq {/}
+ { \clist_item:Nn \l_@@_sign_process_clist {#2} }
+ \int_compare:nNnTF {#3} = {0}
+ {
+ \tl_set:Ne \l_@@_sign_figure_tl
+ { \seq_item:Nn \l_@@_sign_figure_seq { #3 + 1 } }
+ \seq_clear:N \l_@@_sign_figure_seq
+ }
+ {
+ \seq_set_split:Nne \l_@@_sign_date_seq {-}
+ { \seq_item:Nn \l_@@_sign_figure_seq {2} }
+ \seq_item:Nn \l_@@_sign_date_seq {#3}
+ \seq_clear:N \l_@@_sign_date_seq
+ }
+ \clist_clear:N \l_@@_sign_process_clist
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</layout>
+% \end{macrocode}
+%
+% \subsection{\module{bc.config} 模块的实现}
+%
+% \begin{macrocode}
+%<*bc.config>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn \makeatletter
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_provide_module:n {bc.config}
+% \end{macrocode}
+% 设置页面布局、页眉、目录页码格式.
+% \begin{macrocode}
+\geometry { top = 3.25cm, bottom = 2.4cm,
+ left = 4cm, right = 2cm,
+ headsep = .72cm, headheight = 15pt }
+\fancyhead[C]
+ {
+ \raisebox { .12ex }
+ { \small 杭州电子科技大学 \l_@@_set_entitle_tl }
+ }
+\hook_gput_code:nnn {cmd/tableofcontents/before} { . }
+ {
+ \clearpage
+ \pagenumbering{Roman} \cfoot{\small \thepage}
+ }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ {
+ \thispagestyle{fancy} \clearpage
+ \pagenumbering{arabic} \cfoot{}
+ }
+% \end{macrocode}
+% \begin{macro}{\maketitle}
+% 重新定义封面布局.
+% \begin{macrocode}
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry { margin = 3cm }
+ \titlepage \@@_maketitle_bc_auxi: \endtitlepage
+ \restoregeometry
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{variable}{\l_@@_grade_int}
+% 存储毕业年份. 根据当前月份判断.
+% \begin{macrocode}
+\int_new:N \l_@@_grade_int
+\int_set:Nn \l_@@_grade_int
+ {
+ \int_compare:nNnTF { \c_sys_month_int } < 9
+ { \c_sys_year_int } { \int_eval:n { \c_sys_year_int + 1 } }
+ }
+% \end{macrocode}
+% \end{variable}
+% \begin{macro}{\@@_maketitle_bc_auxi:}
+% \cs{maketitle} 的辅助命令.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_maketitle_bc_auxi:
+ {
+ \begin{center}
+ \vspace*{14\p@}
+ \includegraphics[ width = .64\linewidth ]{hdutitle}
+ \par \vspace*{36\p@}
+ \scalebox{2.75}
+ {
+ \textbf
+ {
+ \@@_cover_spread_box:nn
+ { .205\paperwidth } { \l_@@_set_entitle_tl }
+ }
+ }
+ \par \vspace*{1.5\baselineskip}
+ { \LARGE (\int_use:N \l_@@_grade_int \bfseries 届) }
+ \par \vspace*{3.0\baselineskip}
+ \begin{tabular}
+ {
+ >{\large\bfseries}p{5.5\ccwd}@{}
+ >{\large\centering\arraybackslash\kaishu}p{.65\linewidth}@{}
+ }
+ \@@_cover_spread_box:nn { 4\ccwd } { 题目 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ { \@title }\\[5.2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 学院 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ { \l_@@_set_department_tl }\\[5.2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 专业 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ { \l_@@_set_major_tl }\\[5.2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 班级 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ { \l_@@_set_class_tl }\\[5.2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 学号 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ { \l_@@_set_stdntid_tl }\\[5.2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 学生姓名 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ { \@author }\\[5.2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 指导教师 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ {
+ \l_@@_set_cnsupervisor_tl \quad
+ \l_@@_set_cnrole_tl
+ }\\[5.2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 完成日期 } &
+ \@@_cover_center_box:nn { .95\linewidth }
+ {
+ \textsf{\int_use:N \c_sys_year_int} 年
+ \textsf{\int_use:N \c_sys_month_int} 月
+ }
+ \end{tabular}
+ \end{center}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\commitment}
+% 生成承诺书
+% \begin{macrocode}
+\NewDocumentCommand \commitment { O{} }
+ {
+ \newgeometry{ margin = 3cm }
+ \titlepage
+ \@@_commitment_bc_aux:n {#1}
+ \endtitlepage
+ \restoregeometry
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_commitment_bc_aux:n}
+% \cs{commitment} 的辅助命令.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_commitment_bc_aux:n #1
+ {
+ \vspace*{65\p@}
+ \begin{center}
+ \@beginparpenalty \@lowpenalty
+ \Large \textsf
+ { \bfseries \@@_cover_spread_box:nn { 6\ccwd }{ 诚信承诺 } }
+ \@endparpenalty \@M
+ \end{center}
+ \vspace*{.4\baselineskip} \par
+ \linespread{2.1}
+ {
+ \@@_font_semilarge:
+ 我谨在此承诺:本人所写的毕业论文《\@title 》均系本人独立完成,
+ 没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,
+ 后果由本人承担。
+ \par\vspace*{\baselineskip} \bfseries\sffamily
+ \hskip.48\linewidth 承诺人(签名):
+ \@@_sign_process_aux:nnn {#1} { 1 } { 0 }
+ \tl_if_empty:NF \l_@@_sign_figure_tl
+ {
+ \@@_commitment_sign:N
+ \l_@@_sign_figure_tl
+ \tl_clear:N \l_@@_sign_figure_tl
+ }
+ \par \vspace*{.5\baselineskip}
+ \hskip \dim_eval:n { .48\linewidth - 1em }
+ \makebox [ 3em ]
+ { \@@_sign_process_aux:nnn {#1} { 1 } { 1 } } 年
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 1 } { 2 } } 月
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 1 } { 3 } } 日
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \DescribeEnv{abstract}
+% 重新定义摘要环境,加入中英文判断.
+% \begin{macrocode}
+\RenewDocumentEnvironment {abstract} { O{en} }
+ {
+ \str_if_eq:nnT {#1} {en}
+ {
+ \tl_set:Nn \l_@@_keywords_name_tl {Keywords:~}
+ \tl_set:Nn \l_@@_keywords_sep_tl {;~}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{\normalfont\bfseries ABSTRACT}
+ }
+ \str_if_eq:nnT {#1} {cn}
+ {
+ \tl_set:Nn \l_@@_keywords_name_tl {\textsf{关键词:}}
+ \tl_set:Nn \l_@@_keywords_sep_tl {;}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{摘\qquad 要}
+ }
+ }
+ {
+ \tl_clear:N \l_@@_abstract_title_tl
+ \cfoot{} \clearpage
+ }
+% \end{macrocode}
+% \begin{variable}{\l_@@_keywords_clist}
+% 存储关键词列表.
+% \begin{macrocode}
+\clist_new:N \l_@@_keywords_clist
+% \end{macrocode}
+% \end{variable}
+% \begin{macro}{\keywords}
+% 重新定义 \cs{keywords} 命令,关键词样式会根据 \env{abstract} 所选语言自动变化.
+% \begin{macrocode}
+\NewDocumentCommand \keywords { m }
+ {
+ \par \vspace*{\baselineskip}
+ \noindent\textbf{\l_@@_keywords_name_tl}
+ \clist_set:Nn \l_@@_keywords_clist {#1}
+ \clist_use:Nn \l_@@_keywords_clist {\l_@@_keywords_sep_tl}
+ }
+% \end{macrocode}
+% \end{macro}
+% 设置目录样式.
+% \begin{macrocode}
+\RequirePackage{tocloft}
+\renewcommand \contentsname {\hfill 目 \qquad 录 \hfill}
+\renewcommand* \cfttoctitlefont {\sffamily\@@_font_semiLarge:}
+\dim_set:Nn \cftbeforetoctitleskip {3pt}
+\dim_set:Nn \cftaftertoctitleskip {24pt}
+\dim_set:Nn \cftbeforechapskip {1pt}
+\dim_set:Nn \cftbeforesecskip {-.2pt}
+\patchcmd { \@dottedtocline }
+ {
+ \leaders
+ \hbox { $\m at th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ }
+ }
+ {
+ \kern 4pt \leaders
+ \hbox { $\m at th\mkern .4 mu\hbox{-}\mkern .4 mu$ }
+ } {}{}
+\renewcommand* \l at chapter {\@dottedtocline{1}{0em}{1.6em}}
+\renewcommand* \l at section {\@dottedtocline{1}{2.3em}{2.1em}}
+\renewcommand* \@dotsep {1.7}
+\renewcommand* \@pnumwidth {2.5ex}
+\renewcommand* \cftchapfont {\normalfont}
+\setcounter{tocdepth}{1}
+% \end{macrocode}
+% 使用 \cs{ctexset} 提供的接口设置章节样式.
+% \begin{macrocode}
+\ctexset
+ {
+ chapter =
+ {
+ fixskip = true, name = {}, beforeskip = 21pt,
+ format+ = \sffamily \large, afterskip = 34pt,
+ number = \arabic{chapter}, pagestyle = fancy,
+ },
+ section =
+ {
+ beforeskip = 1.25ex, fixskip = true,
+ afterskip = 1.5ex, format = \sffamily \@@_font_semilarge:
+ },
+ subsection =
+ {
+ beforeskip = 1.25ex, fixskip = true,
+ afterskip = 1.5ex, format = \sffamily
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\makeatother \ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</bc.config>
+% \end{macrocode}
+%
+% \subsection{\module{pg.config} 模块的实现}
+%
+% \begin{macrocode}
+%<*pg.config>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn \makeatletter
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_provide_module:n {pg.config}
+% \end{macrocode}
+% 设置页面布局、页眉、目录页码格式.
+% \begin{macrocode}
+\geometry { top = 2.8cm, bottom = 3.2cm, left = 3.2cm, right = 3.2cm,
+ headheight = 15pt, headsep = .72cm, footskip = 1.5cm }
+\fancyhead[C]
+ { \raisebox { .12ex } { \small 杭州电子科技大学硕士学位论文 } }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ {
+ \clearpage
+ \pagenumbering{arabic}
+ \cfoot{\small \thepage}
+ }
+% \end{macrocode}
+% 重新定义封面布局.
+% \begin{macrocode}
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry{margin = 2.75cm}
+ \begin{titlepage}
+ \@@_maketitle_pg_auxi:
+ \end{titlepage}
+ \titlepage
+ \@@_maketitle_pg_auxii:
+ \endtitlepage
+ \titlepage
+ \@@_maketitle_pg_auxiii:
+ \endtitlepage
+ \restoregeometry
+ \pagenumbering{Roman}
+ \cfoot {\small \thepage}
+ }
+% \end{macrocode}
+% \begin{macro}
+% {\@@_maketitle_pg_auxi:, \@@_maketitle_pg_auxii:, \@@_maketitle_pg_auxiii:}
+% \cs{maketitle} 的辅助命令:封面设置、中文扉页设置、英文扉页设置.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_maketitle_pg_auxi:
+ {
+ \begin{center}
+ \null
+ \includegraphics[height = 2.35cm]{hdutitle}
+ \par \vspace*{40\p@}
+ {
+ \LARGE
+ \@@_cover_spread_box:nn {.575\linewidth} {硕士学位论文}
+ }
+ \par\vspace*{100\p@}
+ \@@_font_semiLarge: 题 \qquad 目:
+ \@@_cover_center_box:nn { .75\linewidth } { \kaishu \@title }
+ \vspace*{24\p@}\par
+ \begin{tabular}
+ {
+ >{ \@@_font_semiLarge: \centering \arraybackslash }
+ p{4\ccwd}@{}
+ >{ \@@_font_semiLarge: \centering \arraybackslash \kaishu }
+ p{.65\linewidth}@{}
+ }
+ \@@_cover_spread_box:nn { 4\ccwd } { 研究生 } &
+ \@@_cover_center_box:nn { .96\linewidth } { \@author }\\
+ \@@_cover_spread_box:nn { 4\ccwd } { 专业 } &
+ \@@_cover_center_box:nn { .96\linewidth }
+ { \l_@@_set_major_tl }\\
+ \@@_cover_spread_box:nn { 4\ccwd } { 指导教师 } &
+ \@@_cover_center_box:nn { .96\linewidth }
+ {
+ \l_@@_set_cnsupervisor_tl \qquad \l_@@_set_cnrole_tl
+ }\\[13.5ex]
+ \@@_font_semilarge: 完成日期 &
+ \@@_cover_center_box:nn { .96\linewidth }
+ {
+ \@@_font_semilarge:
+ \textsf { \int_use:N \c_sys_year_int } 年
+ \textsf { \int_use:N \c_sys_month_int } 月
+ }
+ \end{tabular}
+ \end{center}
+ }
+\cs_new_protected_nopar:Nn \@@_maketitle_pg_auxii:
+ {
+ \begin{center}
+ \vspace*{25\p@}
+ { \LARGE 杭州电子科技大学硕士学位论文 }
+ \vspace*{140\p@} \par
+ \begin{spacing}{1.15}
+ \huge\textsf{ \@title }
+ \end{spacing}
+ \vspace*{128\p@} \par
+ \begin{tabular}
+ {
+ >{ \@@_font_semiLarge: } p{6.25\ccwd}
+ >{ \@@_font_semiLarge: \kaishu } l
+ }
+ \@@_cover_spread_box:nn { 4\ccwd } { 研究生 }:&
+ \@@_cover_spread_box:nn { 4\ccwd } { \@author }\\[2ex]
+ \@@_cover_spread_box:nn { 4\ccwd } { 指导教师 }:&
+ \@@_cover_spread_box:nn { 4\ccwd }
+ { \l_@@_set_cnsupervisor_tl }
+ \hskip 1.5em \l_@@_set_cnrole_tl
+ \end{tabular}
+ \par \vspace{60\p@} \@@_font_semilarge:
+ \textsf { \int_use:N \c_sys_year_int } \kaishu 年
+ \textsf { \int_use:N \c_sys_month_int } \kaishu 月
+ \end{center}
+ }
+\cs_new_protected_nopar:Nn \@@_maketitle_pg_auxiii:
+ {
+ \begin{center}
+ \vspace*{16\p@}
+ {
+ \bfseries \@@_font_semilarge:
+ Dissertation ~ Submitted ~ to ~
+ Hangzhou ~ Dianzi ~ University\\[.8ex]
+ for ~ the ~ Degree ~ of ~ Master
+ }
+ \vspace*{120\p@} \par
+ \begin{spacing}{1.12}
+ \huge \bfseries \l_@@_set_entitle_tl
+ \end{spacing}
+ \vspace*{112\p@} \par
+ \begin{tabular}{*2{>{\bfseries\large}l}}
+ \@@_cover_spread_box:nn { 5em } {Candidate:~} &
+ \l_@@_set_enauthor_tl\\[3ex]
+ \@@_cover_spread_box:nn { 5em } {Supervisor:~} &
+ \l_@@_set_enrole_tl{} ~ \l_@@_set_ensupervisor_tl
+ \\[11ex]
+ \end{tabular}
+ \vspace*{8\p@}\par
+ \bfseries \large
+ \clist_item:Nn
+ \g_@@_month_clist { \int_use:N \c_sys_month_int },~
+ \int_use:N \c_sys_year_int
+ \end{center}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\commitment}
+% 生成承诺书
+% \begin{macrocode}
+\NewDocumentCommand \commitment { O{} }
+ {
+ \cfoot {}
+ \newgeometry{margin = 2.75cm}
+ \titlepage
+ \@@_commitment_pg_aux:n {#1}
+ \endtitlepage
+ \restoregeometry
+ \cfoot {\small \thepage}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_commitment_pg_aux:n}
+% \cs{commitment} 的辅助命令.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_commitment_pg_aux:n #1
+ {
+ \vspace*{-12\p@}
+ \begin{center}
+ \large
+ 杭州电子科技大学\\[1ex] 学位论文原创性声明和使用授权说明
+ \end{center}
+ \vspace*{20\p@}
+ \begin{center}
+ \@@_font_semilarge: 原创性声明
+ \end{center}
+ \par \vspace*{.4\baselineskip}
+ \begin{spacing}{1.65}
+ 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,
+ 独立进行研究工作所取得的成果。除文中已经注明引用的内容外,
+ 本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。
+ 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。\par
+ \noindent 申请学位论文与资料若有不实之处,本人承担一切相关责任。
+ \par \vspace*{1.25\baselineskip}
+ \noindent \makebox [ .45\linewidth ] [ l ]
+ {
+ 论文作者签名:
+ \@@_sign_process_aux:nnn {#1} { 1 } { 0 }
+ \tl_if_empty:NF \l_@@_sign_figure_tl
+ {
+ \@@_commitment_sign:N
+ \l_@@_sign_figure_tl
+ \tl_clear:N \l_@@_sign_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \@@_sign_process_aux:nnn {#1} { 1 } { 1 } } 年
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 1 } { 2 } } 月
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 1 } { 3 } } 日
+ \par\vspace*{20\p@}
+ \begin{center}
+ \@@_font_semilarge: 学位论文使用授权说明
+ \end{center}
+ \par \vspace*{.4\baselineskip}
+ 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定,
+ 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。
+ 本人保证毕业离校后,
+ 发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。
+ 学校有权保留送交论文的复印件,允许查阅和借阅论文;
+ 学校可以公布论文的全部或部分内容,
+ 可以允许采用影印、缩印或其它复制手段保存论文。
+ (保密论文在解密后遵守此规定)
+ \par \vspace*{1.25\baselineskip}
+ \noindent \makebox [.45\linewidth] [ l ]
+ {
+ 论文作者签名:
+ \@@_sign_process_aux:nnn {#1} { 2 } { 0 }
+ \tl_if_empty:NF \l_@@_sign_figure_tl
+ {
+ \@@_commitment_sign:N
+ \l_@@_sign_figure_tl
+ \tl_clear:N \l_@@_sign_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \@@_sign_process_aux:nnn {#1} { 2 } { 1 } } 年
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 2 } { 2 } } 月
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 2 } { 3 } } 日
+ \par \vspace*{\baselineskip}
+ \noindent \makebox [ .45\linewidth ] [ l ]
+ {
+ 指导教师签名:
+ \@@_sign_process_aux:nnn {#1} { 3 } { 0 }
+ \tl_if_empty:NF \l_@@_sign_figure_tl
+ {
+ \@@_commitment_sign:N
+ \l_@@_sign_figure_tl
+ \tl_clear:N \l_@@_sign_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \@@_sign_process_aux:nnn {#1} { 3 } { 1 } } 年
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 3 } { 2 } } 月
+ \makebox [ 2em ]
+ { \@@_sign_process_aux:nnn {#1} { 3 } { 3 } } 日
+ \end{spacing}
+ }
+% \end{macrocode}
+% \end{macro}
+% \DescribeEnv{abstract}
+% 重新定义摘要环境,加入中英文判断.
+% \begin{macrocode}
+\RenewDocumentEnvironment {abstract} { O{en} }
+ {
+ \str_if_eq:nnT {#1} {en}
+ {
+ \tl_set:Nn \l_@@_keywords_name_tl {Keywords:~}
+ \tl_set:Nn \l_@@_keywords_sep_tl {,~}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{\normalfont\bfseries Abstract}
+ \addcontentsline{toc}{chapter}{\bfseries Abstract}
+ }
+ \str_if_eq:nnT {#1} {cn}
+ {
+ \tl_set:Nn \l_@@_keywords_name_tl {\textsf{关键词:}}
+ \tl_set:Nn \l_@@_keywords_sep_tl {,}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{摘要}
+ \addcontentsline{toc}{chapter}{摘要}
+ }
+ }
+ {
+ \tl_clear:N \l_@@_abstract_title_tl
+ \clearpage
+ }
+% \end{macrocode}
+% \begin{variable}{\l_@@_keywords_clist}
+% 存储关键词列表.
+% \begin{macrocode}
+\clist_new:N \l_@@_keywords_clist
+% \end{macrocode}
+% \end{variable}
+% \begin{macro}{\keywords}
+% 重新定义 \cs{keywords} 命令,关键词样式会根据 \env{abstract} 所选语言自动变化.
+% \begin{macrocode}
+\NewDocumentCommand \keywords { m }
+ {
+ \par \vspace*{\baselineskip}
+ \noindent\textbf{\l_@@_keywords_name_tl}
+ \clist_set:Nn \l_@@_keywords_clist {#1}
+ \clist_use:Nn \l_@@_keywords_clist { \l_@@_keywords_sep_tl }
+ }
+% \end{macrocode}
+% \end{macro}
+% 设置目录样式.
+% \begin{macrocode}
+\RequirePackage{tocloft}
+\renewcommand \contentsname {\hfill 目录 \hfill}
+\renewcommand* \cfttoctitlefont{\sffamily\@@_font_semiLarge:}
+\dim_set:Nn \cftbeforetoctitleskip {12pt}
+\dim_set:Nn \cftaftertoctitleskip {24pt}
+\dim_set:Nn \cftbeforechapskip {1pt}
+\dim_set:Nn \cftbeforesecskip {-.2pt}
+\patchcmd { \@dottedtocline }
+ {
+ \leaders
+ \hbox { $\m at th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ }
+ }
+ {
+ \kern 4pt \leaders
+ \hbox { $\m at th\mkern .4 mu\hbox{.}\mkern .4 mu$ }
+ } {}{}
+\renewcommand* \l at chapter {\@dottedtocline{1}{0em}{1.6em}}
+\renewcommand* \l at section {\@dottedtocline{1}{2.3em}{2.1em}}
+\renewcommand* \@dotsep {1.7}
+\renewcommand* \@pnumwidth {2.5ex}
+\renewcommand* \cftchapfont {\normalfont}
+\setcounter{tocdepth}{1}
+% \end{macrocode}
+% 使用 \cs{ctexset} 提供的接口设置章节样式.
+% \begin{macrocode}
+\ctexset
+ {
+ chapter =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 32pt, afterskip = 32pt,
+ format+ = \sffamily \@@_font_semiLarge:,
+ pagestyle = fancy
+ },
+ section =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 2ex, afterskip = 2.75ex,
+ format = \sffamily \large
+ },
+ subsection =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 2ex, afterskip = 2.75ex,
+ format = \sffamily \@@_font_semilarge:
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\makeatother \ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</pg.config>
+% \end{macrocode}
+%
+% \subsection{\module{hdu} Beamer 主题的实现}
+%
+% \begin{macrocode}
+%<*beamer>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ProvidesExplPackage{beamerthemehdu}{\hduthesis at date}{\hduthesis at version}
+ {hduThesiS ~ \text_titlecase:n {beamer} ~ Module}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\mode<presentation>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{tikz}
+\usetikzlibrary{fadings}
+% \end{macrocode}
+% 插图相对路径设置.
+% \begin{macrocode}
+\graphicspath
+ {
+ {./figure/} {./image/} {./graphic/} {./picture/}
+ {./figures/} {./images/} {./graphics/} {./pictures/}
+ }
+% \end{macrocode}
+% 模式 \module{beamer} 下 \cs{hduset} 接口键值的定义.
+% \begin{variable}
+% {
+% \l_@@_set_title_tl, \l_@@_set_subtitle_tl,
+% \l_@@_set_author_tl, \l_@@_set_date_tl,
+% \l_@@_set_supervisor_tl, \l_@@_set_reference_tl,
+% }
+% \begin{macrocode}
+\keys_define:nn { beamer / hduset }
+ {
+ title .tl_set:N = \l_@@_set_title_tl,
+ subtitle .tl_set:N = \l_@@_set_subtitle_tl,
+ author .tl_set:N = \l_@@_set_author_tl,
+ date .tl_set:N = \l_@@_set_date_tl,
+ supervisor .tl_set:N = \l_@@_set_supervisor_tl,
+ bibsource .tl_set:N = \l_@@_set_reference_tl,
+ }
+% \end{macrocode}
+% \end{variable}
+% \begin{macro}{\hduset}
+% 模式 \module{beamer} 下设置文档信息.
+% \begin{macrocode}
+\NewDocumentCommand \hduset { m }
+ {
+ \keys_set:nn { beamer / hduset } { #1 }
+ \title { \large \l_@@_set_title_tl }
+ \tl_set:Nn \insertshorttitle { \textsc \l_@@_set_subtitle_tl }
+ \author [ \l_@@_set_author_tl ]
+ {
+ \l_@@_set_author_tl
+ \tl_if_empty:NF \l_@@_set_supervisor_tl
+ {
+ \texorpdfstring
+ { \\[2ex]
+ \small Supervised ~ by ~ \l_@@_set_supervisor_tl
+ } {}
+ }
+ }
+ \date { \l_@@_set_date_tl }
+ \tl_if_empty:NTF \l_@@_set_bibsource_tl
+ {
+ \newcommand* \printbibliography
+ {
+ \begin{frame}[t]
+ \frametitle{Bibliography}
+ \end{frame}
+ }
+ \newcounter {citecount}
+ \renewcommand*\cite[1]
+ {
+ \refstepcounter{citecount}
+ \textsuperscript{[\thecitecount]}
+ }
+ }
+ {
+ \RequirePackage [ natbib = true, sorting = none, backend = biber,
+ autocite = superscript, style = numeric-comp ]
+ { biblatex }
+ \addbibresource { \l_@@_set_reference_tl }
+ \let \@printbibliography \printbibliography
+ \renewcommand* \printbibliography
+ {
+ \begin{frame}[t, allowframebreaks]{Bibliography}
+ \small
+ \@printbibliography
+ \end{frame}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% |Beamer| 背景 \& 标头设置.
+% \begin{macrocode}
+\usebackgroundtemplate
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ inner~sep = 0pt, outer~sep = auto,
+ opacity = .1, xshift = -2em
+ ] at (current~page.east)
+ { \includegraphics [ height = .75\paperheight ] { hdulogo.pdf } };
+ }
+\titlegraphic
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ below~right, yshift = -1em ] at (current~page.north~west)
+ { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } };
+ }
+% \end{macrocode}
+% |Beamer| 原生主题调用.
+% \begin{macrocode}
+\useoutertheme{infolines}
+\useinnertheme[shadow = false]{rounded}
+\definecolor{hdu}{HTML}{214395}
+\definecolor{hduRed}{HTML}{BF6236}
+\usecolortheme[named = hdu]{structure}
+\setbeamercolor*{palette~primary}
+ {
+ use = structure, fg = black,
+ bg = structure.fg!30!white
+ }
+\setbeamercolor*{palette~secondary}
+ {
+ use = structure, fg = white,
+ bg = structure.fg!60!white
+ }
+\setbeamercolor*{palette~tertiary}
+ {
+ use = structure, fg = white,
+ bg = structure.fg!90!white
+ }
+\setbeamercolor{block~title}
+ {
+ use = structure, fg = structure.fg,
+ bg = structure.fg!20!bg
+ }
+\setbeamercolor{block~body}
+ {
+ use = block~title, parent = normal~text,
+ bg = block~title.bg!50!bg
+ }
+\addtobeamertemplate{block~begin}
+ {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+\setbeamercolor{block~title~alerted}
+ {
+ use = alerted~text, fg = alerted~text.fg,
+ bg = alerted~text.fg!20!bg
+ }
+\setbeamercolor{block~body~alerted}
+ {
+ use = block~title~alerted, parent = normal~text,
+ bg = block~title~alerted.bg!50!bg
+ }
+\addtobeamertemplate{block~alerted~begin}
+ {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+\setbeamercolor{block~title~example}
+ {
+ use = example~text,fg = example~text.fg,
+ bg = example~text.fg!20!bg
+ }
+\setbeamercolor{block~body~example}
+ {
+ use = block~title~example, parent=normal~text,
+ bg = block~title~example.bg!50!bg
+ }
+\addtobeamertemplate{block~example~begin}
+ {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+\setbeamercolor{title}{parent=author~in~head/foot}
+\setbeamertemplate{title~page}[default][colsep=-4bp,rounded=true]
+\usesubitemizeitemtemplate
+ {\tiny\raise1.5pt\hbox{\color{beamerstructure}$\blacktriangleright$}}
+\usesubsubitemizeitemtemplate
+ { \tiny\raise1.5pt\hbox{\color{beamerstructure}$\bigstar$} }
+% \end{macrocode}
+% |Beamer| 顶部进度条配置.
+% \begin{macrocode}
+\addtobeamertemplate{headline}{}
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \filldraw [hduRed, ultra~thick, line~cap = butt]
+ (0,0) --++
+ (\paperwidth * \fp_eval:n
+ {(\insertpagenumber-1)/(\insertdocumentendpage-1)},0);
+ \draw [white, very~thick, yshift = -.6pt] (0,0) --++
+ (\paperwidth,0);
+ }
+ }
+% \end{macrocode}
+% |Beamer| 章节封面设置.
+% \begin{macrocode}
+\AtBeginSection[]
+ {
+ \begin{frame}
+ \tikz [ remember~picture, overlay ]
+ \node [ below~right, yshift = -1em ] at (current~page.north~west)
+ { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } };
+ \vfill
+ \usebeamerfont{title} \insertsectionhead \par
+ \tikz
+ {
+ \draw [line~cap = round, hdu!20, ultra~thick]
+ (0,0) --++ (2\linewidth/3,0);
+ \filldraw
+ [ line~cap = round, hdu!60, ultra~thick, path~fading = west
+ ] (0,0) --++
+ (2\linewidth *
+ \fp_eval:n
+ {
+ (\insertframenumber - 1)/
+ (\inserttotalframenumber - 1)
+ }/3,0
+ );
+ }
+ \vfill
+ \end{frame}
+ }
+% \end{macrocode}
+% 公式排版必要宏包加载.
+% \begin{macrocode}
+% math settings
+\numberwithin{equation}{section}
+\RequirePackage { keytheorems, amssymb, mathtools, physics2,
+ fixdif, derivative, cancel, siunitx, nicematrix }
+\renewcommand* \qedsymbol {$\color{gray}\blacksquare$}
+\usephysicsmodule{ ab, braket, op.legacy }
+% \end{macrocode}
+% 浮动题设置.
+% \begin{macrocode}
+% Figure settings
+\RequirePackage [ labelsep = period, figurename = \textsc{Fig},
+ font = footnotesize ] {caption}
+\RequirePackage {subcaption, booktabs, anyfontsize, ragged2e}
+\captionsetup{belowskip=0pt}
+\captionsetup[sub]{font = scriptsize}
+\justifying
+\AtBeginEnvironment{columns}{\vspace*{-.5ex}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\mode<all>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</beamer>
+% \end{macrocode}
+%
+% \subsection{\module{stationery} 模块的实现}
+%
+% \begin{macrocode}
+%<*stationery>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_provide_module:n {stationery}
+% \end{macrocode}
+%
+% \begin{macro}
+% {
+% \g_@@_set_watermark_bool,
+% \l_@@_set_title_tl, \l_@@_set_author_tl,
+% \l_@@_set_mail_tl, \l_@@_set_date_tl
+% }
+% 模式 \module{stationery} 下 \cs{hduset} 接口键值的定义.
+% \begin{macrocode}
+\keys_define:nn { stationery / hduset }
+ {
+ watermark .bool_set:N = \g_@@_set_watermark_bool,
+ watermark .initial:n = false,
+ watermark .default:n = true,
+ title .tl_set:N = \l_@@_set_title_tl,
+ author .tl_set:N = \l_@@_set_author_tl,
+ mail .tl_set:N = \l_@@_set_mail_tl,
+ date .tl_set:N = \l_@@_set_date_tl
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\RequirePackage{ hyperref, geometry, tikz,
+ tikzpagenodes, twemojis, fancyhdr }
+\hypersetup{hidelinks}
+\urlstyle{same}
+% \end{macrocode}
+% \begin{macro}{\hduset}
+% 模式 \module{beamer} 下设置文档信息.
+% \begin{macrocode}
+\NewDocumentCommand \hduset { m }
+ {
+ \tl_clear:N \l_@@_set_author_tl
+ \tl_clear:N \l_@@_set_mail_tl
+ \keys_set:nn { stationery / hduset } {#1}
+ \hypersetup
+ {
+ pdftitle = Hangzhou Dianzi University,
+ pdfsubject = \l_@@_set_title_tl,
+ pdfauthor = \l_@@_set_author_tl
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% 设置页面布局、页眉页脚格式.
+% \begin{macrocode}
+\geometry
+ { hmargin = .8in, top = 1.95in, bottom = .75in,
+ headheight = 1.2in, headsep = .3in, footskip = .3in }
+\linespread{1.25}
+\RequirePackage [ skip = \baselineskip ] { parskip }
+\renewcommand* \familydefault { \sfdefault }
+\definecolor{hdu}{HTML}{214395}
+
+\renewcommand* \headrulewidth {2pt}
+\renewcommand* \footrulewidth {2pt}
+\hook_gput_code:nnn { cmd/headrule/before } { . } { \color{hdu!80} }
+\hook_gput_code:nnn { cmd/footrule/before } { . } { \color{hdu!80} }
+\lhead
+ { {}~
+ \minipage{.6\linewidth}
+ \medskip \leavevmode \lower -.111in
+ \hbox { \includegraphics [ height = .75in ] {hdubadge} }
+ \endminipage \medskip \hfill
+ \minipage{.36\linewidth}
+ \medskip \vbox
+ {
+ \linespread{1.2}
+ \raggedright \small \color{hdu}
+ \texttwemoji{1f4cd} ~ 1158 ~ No.2 ~ St., ~ Hangzhou, ~ 310018\\
+ \texttwemoji{1f4de} ~ (86) ~ 0571-86915072\\
+ \texttwemoji{1f310} ~ \url{www.hdu.edu.cn}
+ } \medskip
+ \endminipage
+ }
+\lfoot
+ {
+ \small{} ~ \texttwemoji{1f4cd} ~
+ 1158 ~ No.2~Street, ~ Qiantang ~District, ~
+ Hangzhou, ~ Zhejiang ~ Province, ~ 310018, ~ P.R.China
+ }
+\cfoot {}
+\rfoot { \small \texttwemoji{1f310} ~ \url{www.hdu.edu.cn} ~ }
+\pagestyle{fancy}
+% \end{macrocode}
+% \begin{macro}{\maketitle}
+% 重新定义标题布局,当未给定 \key*{author} 和 \key*{mail} 时,不输出 |From|.
+% \begin{macrocode}
+\renewcommand* \maketitle
+ {
+ \group_begin: \small
+ \bool_lazy_or:nnT
+ { !\tl_if_empty_p:N \l_@@_set_author_tl }
+ { !\tl_if_empty_p:N \l_@@_set_mail_tl }
+ { \makebox [ 4em ] [ l ] { \scshape From } }
+ \tl_if_empty:NTF \l_@@_set_author_tl
+ { \@latex at warning@no at line {No \noexpand \author given} }
+ { \l_@@_set_author_tl{} ~ }
+ \tl_if_empty:NF \l_@@_set_mail_tl
+ { \texttt { <\l_@@_set_mail_tl> } }
+ \bool_lazy_or:nnT
+ { !\tl_if_empty_p:N \l_@@_set_author_tl }
+ { !\tl_if_empty_p:N \l_@@_set_mail_tl } { \\ }
+ \makebox [ 4em ] [ l ] { \scshape Date }
+ \tl_if_empty:NTF \l_@@_set_date_tl \today \l_@@_set_date_tl \\
+ \tl_if_empty:NTF \l_@@_set_title_tl
+ { \@latex at error {No \noexpand \title given}\@ehc }
+ {
+ \makebox [ 4em ] [ l ] { \scshape Subject }
+ \l_@@_set_title_tl
+ }
+ \par \vspace{.5\baselineskip}
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+% 水印设置.
+% \begin{macrocode}
+\AtBeginDocument { \color_select:n {black!80} }
+\DeclareHookRule { shipout / background } { hduthesis / stationery }
+ { before } { pgfrcs }
+\AddToHook { shipout / background } [ hduthesis / stationery ]
+ {
+ \bool_if:NT \g_@@_set_watermark_bool
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ opacity = .2 ] at (current~page)
+ { \includegraphics [ width = .4\linewidth ] {hdulogo} };
+ }
+ }
+% \end{macrocode}
+% \begin{macro}{\notelines}
+% 用于添加笔记线.
+% \begin{macrocode}
+\NewDocumentCommand \notelines {O{20}}
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \int_step_inline:nn { #1 - 1 }
+ {
+ \draw [ hdu, very~thick, opacity = .6 ]
+ ([
+ yshift = -##1 * (\textheight + .6in - 15.87pt ) / #1
+ + .3in
+ ]current~page~text~area.north~west
+ ) --++ (\linewidth, 0);
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</stationery>
+% \end{macrocode}
+%
+% \subsection{\module{exam} 模块的实现}
+%
+% \begin{macrocode}
+%<*exam>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_provide_module:n {exam}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</exam>
+% \end{macrocode}
+%
+% \subsection{\module{l3doc} 模块的实现}
+%
+% \begin{macrocode}
+%<*l3doc>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_provide_module:n {l3doc}
+% \end{macrocode}
+% 定义常用强调命令.
+% \begin{macrocode}
+\providecommand \module \texttt
+\RenewDocumentCommand \pkg {m}
+ { \href{https://ctan.org/pkg/#1}{\textsf{#1}} }
+\RenewDocumentCommand \cls {m}
+ { \href{https://ctan.org/pkg/#1}{\textsf{#1}} }
+\NewDocumentCommand \mailto {m} { \texttt{<\href{mailto:#1}{#1}>} }
+\def \@ulem#1
+ { \CJKsout*[thickness = 2.5ex, format = \color{blue!15}]{#1} }
+\def \s at ulem#1 { \CJKunderwave*{#1} }
+\DeclareRobustCommand \ulem { \@ifstar \s at ulem \@ulem }
+\def \@key #1
+ { \textcolor{red}{\textbf{\texttt{#1}}} ~ \normalfont \texttt{=} ~ }
+\def \s at key #1{\textcolor{red}{\textbf{\texttt{#1}}}}
+\DeclareRobustCommand \key {\@ifstar\s at key\@key}
+% \end{macrocode}
+% 用于输入键值对.
+% \begin{macrocode}
+\def \val #1{\meta{\textup{#1}}}
+\def \TFF {true\textbar \textbf{false}}
+\def \TTF {\textbf{true}\textbar false}
+\newlist{keyval}{itemize}{10}
+\setlist[keyval]{leftmargin = 0pt, labelsep = 0pt}
+% \end{macrocode}
+% 配置 \pkg{hyperref},调用所需宏包.
+% \begin{macrocode}
+\RequirePackage{ hyperref }
+\RequirePackage [ svgnames ] { xcolor }
+\hypersetup
+ {
+ filecolor = DarkGreen, urlcolor = MidnightBlue,
+ linkcolor = FireBrick
+ }
+\ExplSyntaxOff
+\pdfstringdefDisableCommands
+ {
+ \def \file #1 { <#1> } \def \pkg #1 { <#1> }
+ \def \cls #1 { <#1> } \def \mailto #1 { <#1> }
+ }
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\ExplSyntaxOn
+\RequirePackage [ pass ] { geometry }
+\RequirePackage { enumitem, dirtree, tabularx, tasks,
+ xeCJKfntef, pdfpages, setspace, subcaption }
+\graphicspath { {./example/} }
+\RequirePackage[fontset = fandol]{ctex} \linespread{1.4}
+\dim_set:Nn \parindent {0pt}
+\hook_gput_code:nnn { env/function/before } { . }
+ { \vspace*{-.6\baselineskip} }
+\hook_gput_code:nnn { env/syntax/after } { . }
+ { \par\vspace*{.1\baselineskip} }
+% \end{macrocode}
+% 定义新的 \pkg{hologo} 标志.
+% \begin{macrocode}
+\def \HoLogo at ApTeX #1{\HOLOGO at mbox {Ap\kern -.1667em\TeX}}
+\def \HoLogo at hduThesiS #1
+ {
+ \raisebox{-.5pt}
+ {
+ \HOLOGO at mbox
+ {
+ \tikz [ baseline = (hduthesis.base) ]
+ {
+ \node [ inner~sep = 0pt ] (hduthesis)
+ {\sffamily\scshape hduThesi\scalebox{1.2}[1.2]{S}};
+ \draw let \p1 = (hduthesis.west),
+ \p2 = (hduthesis.east) in (\x1,\y1) (\x2,\y2)
+ [ line~width = {.028pt * (\x2 - \x1)} ]
+ ([yshift = -.5ex]hduthesis.north~west)
+ to [ bend~right = 5 ]
+ ([yshift = .25ex]hduthesis.north~east);
+ }
+ }
+ }
+ }
+\def \HoLogo at hduthesis #1
+ { \raisebox{-.5pt} { \HOLOGO at mbox { \scshape \cls{hduThesiS} } } }
+% \end{macrocode}
+% 重新定义封面布局.
+% \begin{macrocode}
+\let \old at maketitle \maketitle
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry { margin = 1.2in }
+ \titlepage
+ \old at maketitle
+ \begin{center}
+ \tikz
+ {
+ \node [ opacity = .8 ]
+ {
+ \includegraphics [ width = .14\paperwidth ]
+ { hdumotto.pdf }
+ };
+ \node [ opacity = .3 ]
+ {
+ \includegraphics [ width = .21\paperwidth ]
+ { hdulogo.pdf }
+ };
+ }
+ \end{center}
+ \thispagestyle{empty}
+ }
+\hook_gput_code:nnn { cmd/tableofcontents/before } { . }
+ { \clearpage \spacing{1.15} }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ { \endtitlepage \endspacing \restoregeometry }
+\date{
+ Released ~ \hduthesis at date \quad \texttt{v\hduthesis at version}
+ \footnote{
+ \url{https://github.com/\hduthesis@maintainerid/hduthesis}, ~
+ \url{https://gitee.com/\hduthesis@maintainerid/hduthesis}
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</l3doc>
+% \end{macrocode}
+%
+% \end{implementation}
+% \clearpage
+% \PrintIndex
\ No newline at end of file
Property changes on: branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.ins
===================================================================
--- branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.ins (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/source/latex/hduthesis/hduthesis.ins 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,101 @@
+\iffalse meta-comment
+
+File: hduthesis.ins
+-----------------------------------------------------------------------
+ Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+ *
+ It may be distributed and/or modified under the conditions of the *
+ LaTeX Project Public License (LPPL), either version 1.3c of this *
+ license or (at your option) any later version. The latest version *
+ of this license is in the file *
+ *
+ http://www.latex-project.org/lppl.txt *
+ *
+ This work has the LPPL maintenance status `maintained'. *
+ *
+ The Current Maintainer of this work is Mingyu Xia. *
+ *
+ This work consists of the files hduthesis.dtx, *
+ hdu-graphics.dtx, *
+ and hduthesis.ins, *
+ and the derived files hduthesis.cls, *
+ hdu-<module>.code.tex, *
+ beamerthemehdu.sty, *
+ hdulogo.pdf, *
+ hdutitle.pdf, *
+ hdubadge.pdf, *
+ hdumotto.pdf, *
+ hduthesis.pdf, *
+ and README.md. *
+-----------------------------------------------------------------------
+
+ Any modification of this file should ensure that the copyright and
+ license information is placed in the derived files.
+
+-----------------------------------------------------------------------
+
+\fi
+
+\input docstrip %
+\askforoverwritefalse
+
+\preamble
+-----------------------------------------------------------------------
+ Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+ *
+ It may be distributed and/or modified under the conditions of the *
+ LaTeX Project Public License (LPPL), either version 1.3c of this *
+ license or (at your option) any later version. The latest version *
+ of this license is in the file *
+ *
+ http://www.latex-project.org/lppl.txt *
+ *
+ This work has the LPPL maintenance status `maintained'. *
+ *
+ The Current Maintainer of this work is Mingyu Xia. *
+-----------------------------------------------------------------------
+\endpreamble
+
+\postamble
+-----------------------------------------------------------------------
+ This work consists of the files hduthesis.dtx, *
+ hdu-graphics.dtx, *
+ and hduthesis.ins, *
+ and the derived files hduthesis.cls, *
+ hdu-<module>.code.tex, *
+ beamerthemehdu.sty, *
+ hdulogo.pdf, *
+ hdutitle.pdf, *
+ hdubadge.pdf, *
+ hdumotto.pdf, *
+ hduthesis.pdf, *
+ and README.md. *
+-----------------------------------------------------------------------
+\endpostamble
+
+\keepsilent
+
+\generate{
+ \usedir{tex/latex/hduthesis}
+ \file{hduthesis.cls} {\from{hduthesis.dtx}{class}}
+ \file{hdu-typeset.code.tex} {\from{hduthesis.dtx}{typeset}}
+ \file{hdu-layout.code.tex} {\from{hduthesis.dtx}{layout}}
+ \file{hdu-bc.config.code.tex} {\from{hduthesis.dtx}{bc.config}}
+ \file{hdu-pg.config.code.tex} {\from{hduthesis.dtx}{pg.config}}
+ \file{hdu-stationery.code.tex} {\from{hduthesis.dtx}{stationery}}
+ \file{hdu-exam.code.tex} {\from{hduthesis.dtx}{exam}}
+ \file{hdu-l3doc.code.tex} {\from{hduthesis.dtx}{l3doc}}
+ \file{beamerthemehdu.sty} {\from{hduthesis.dtx}{beamer}}
+ \nopreamble \nopostamble \let \MetaPrefix \perCent
+ \file{hdulogo.pdf} {\from{hdu-graphics.dtx}{hdulogo}}
+ \file{hdutitle.pdf} {\from{hdu-graphics.dtx}{hdutitle}}
+ \file{hdubadge.pdf} {\from{hdu-graphics.dtx}{hdubadge}}
+ \file{hdumotto.pdf} {\from{hdu-graphics.dtx}{hdumotto}}
+ \usedir{doc/latex/hduthesis}
+ \file{README.md} {\from{hduthesis.dtx}{readme}}
+}
+
+\endbatchfile
+\endinput
+%%
+%% End of file `hduthesis.ins'
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/beamerthemehdu.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/beamerthemehdu.sty (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/beamerthemehdu.sty 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,230 @@
+%%
+%% This is file `beamerthemehdu.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `beamer')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\ProvidesExplPackage{beamerthemehdu}{\hduthesis at date}{\hduthesis at version}
+ {hduThesiS ~ \text_titlecase:n {beamer} ~ Module}
+\mode<presentation>
+\RequirePackage{tikz}
+\usetikzlibrary{fadings}
+\graphicspath
+ {
+ {./figure/} {./image/} {./graphic/} {./picture/}
+ {./figures/} {./images/} {./graphics/} {./pictures/}
+ }
+\keys_define:nn { beamer / hduset }
+ {
+ title .tl_set:N = \l__hdu_set_title_tl,
+ subtitle .tl_set:N = \l__hdu_set_subtitle_tl,
+ author .tl_set:N = \l__hdu_set_author_tl,
+ date .tl_set:N = \l__hdu_set_date_tl,
+ supervisor .tl_set:N = \l__hdu_set_supervisor_tl,
+ bibsource .tl_set:N = \l__hdu_set_reference_tl,
+ }
+\NewDocumentCommand \hduset { m }
+ {
+ \keys_set:nn { beamer / hduset } { #1 }
+ \title { \large \l__hdu_set_title_tl }
+ \tl_set:Nn \insertshorttitle { \textsc \l__hdu_set_subtitle_tl }
+ \author [ \l__hdu_set_author_tl ]
+ {
+ \l__hdu_set_author_tl
+ \tl_if_empty:NF \l__hdu_set_supervisor_tl
+ {
+ \texorpdfstring
+ { \\[2ex]
+ \small Supervised ~ by ~ \l__hdu_set_supervisor_tl
+ } {}
+ }
+ }
+ \date { \l__hdu_set_date_tl }
+ \tl_if_empty:NTF \l__hdu_set_bibsource_tl
+ {
+ \newcommand* \printbibliography
+ {
+ \begin{frame}[t]
+ \frametitle{Bibliography}
+ \end{frame}
+ }
+ \newcounter {citecount}
+ \renewcommand*\cite[1]
+ {
+ \refstepcounter{citecount}
+ \textsuperscript{[\thecitecount]}
+ }
+ }
+ {
+ \RequirePackage [ natbib = true, sorting = none, backend = biber,
+ autocite = superscript, style = numeric-comp ]
+ { biblatex }
+ \addbibresource { \l__hdu_set_reference_tl }
+ \let \@printbibliography \printbibliography
+ \renewcommand* \printbibliography
+ {
+ \begin{frame}[t, allowframebreaks]{Bibliography}
+ \small
+ \@printbibliography
+ \end{frame}
+ }
+ }
+ }
+\usebackgroundtemplate
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ inner~sep = 0pt, outer~sep = auto,
+ opacity = .1, xshift = -2em
+ ] at (current~page.east)
+ { \includegraphics [ height = .75\paperheight ] { hdulogo.pdf } };
+ }
+\titlegraphic
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ below~right, yshift = -1em ] at (current~page.north~west)
+ { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } };
+ }
+\useoutertheme{infolines}
+\useinnertheme[shadow = false]{rounded}
+\definecolor{hdu}{HTML}{214395}
+\definecolor{hduRed}{HTML}{BF6236}
+\usecolortheme[named = hdu]{structure}
+\setbeamercolor*{palette~primary}
+ {
+ use = structure, fg = black,
+ bg = structure.fg!30!white
+ }
+\setbeamercolor*{palette~secondary}
+ {
+ use = structure, fg = white,
+ bg = structure.fg!60!white
+ }
+\setbeamercolor*{palette~tertiary}
+ {
+ use = structure, fg = white,
+ bg = structure.fg!90!white
+ }
+\setbeamercolor{block~title}
+ {
+ use = structure, fg = structure.fg,
+ bg = structure.fg!20!bg
+ }
+\setbeamercolor{block~body}
+ {
+ use = block~title, parent = normal~text,
+ bg = block~title.bg!50!bg
+ }
+\addtobeamertemplate{block~begin}
+ {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+\setbeamercolor{block~title~alerted}
+ {
+ use = alerted~text, fg = alerted~text.fg,
+ bg = alerted~text.fg!20!bg
+ }
+\setbeamercolor{block~body~alerted}
+ {
+ use = block~title~alerted, parent = normal~text,
+ bg = block~title~alerted.bg!50!bg
+ }
+\addtobeamertemplate{block~alerted~begin}
+ {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+\setbeamercolor{block~title~example}
+ {
+ use = example~text,fg = example~text.fg,
+ bg = example~text.fg!20!bg
+ }
+\setbeamercolor{block~body~example}
+ {
+ use = block~title~example, parent=normal~text,
+ bg = block~title~example.bg!50!bg
+ }
+\addtobeamertemplate{block~example~begin}
+ {\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+\setbeamercolor{title}{parent=author~in~head/foot}
+\setbeamertemplate{title~page}[default][colsep=-4bp,rounded=true]
+\usesubitemizeitemtemplate
+ {\tiny\raise1.5pt\hbox{\color{beamerstructure}$\blacktriangleright$}}
+\usesubsubitemizeitemtemplate
+ { \tiny\raise1.5pt\hbox{\color{beamerstructure}$\bigstar$} }
+\addtobeamertemplate{headline}{}
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \filldraw [hduRed, ultra~thick, line~cap = butt]
+ (0,0) --++
+ (\paperwidth * \fp_eval:n
+ {(\insertpagenumber-1)/(\insertdocumentendpage-1)},0);
+ \draw [white, very~thick, yshift = -.6pt] (0,0) --++
+ (\paperwidth,0);
+ }
+ }
+\AtBeginSection[]
+ {
+ \begin{frame}
+ \tikz [ remember~picture, overlay ]
+ \node [ below~right, yshift = -1em ] at (current~page.north~west)
+ { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } };
+ \vfill
+ \usebeamerfont{title} \insertsectionhead \par
+ \tikz
+ {
+ \draw [line~cap = round, hdu!20, ultra~thick]
+ (0,0) --++ (2\linewidth/3,0);
+ \filldraw
+ [ line~cap = round, hdu!60, ultra~thick, path~fading = west
+ ] (0,0) --++
+ (2\linewidth *
+ \fp_eval:n
+ {
+ (\insertframenumber - 1)/
+ (\inserttotalframenumber - 1)
+ }/3,0
+ );
+ }
+ \vfill
+ \end{frame}
+ }
+\numberwithin{equation}{section}
+\RequirePackage { keytheorems, amssymb, mathtools, physics2,
+ fixdif, derivative, cancel, siunitx, nicematrix }
+\renewcommand* \qedsymbol {$\color{gray}\blacksquare$}
+\usephysicsmodule{ ab, braket, op.legacy }
+\RequirePackage [ labelsep = period, figurename = \textsc{Fig},
+ font = footnotesize ] {caption}
+\RequirePackage {subcaption, booktabs, anyfontsize, ragged2e}
+\captionsetup{belowskip=0pt}
+\captionsetup[sub]{font = scriptsize}
+\justifying
+\AtBeginEnvironment{columns}{\vspace*{-.5ex}}
+\mode<all>
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `beamerthemehdu.sty'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/beamerthemehdu.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-bc.config.code.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-bc.config.code.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-bc.config.code.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,238 @@
+%%
+%% This is file `hdu-bc.config.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `bc.config')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\ExplSyntaxOn \makeatletter
+\__hdu_provide_module:n {bc.config}
+\geometry { top = 3.25cm, bottom = 2.4cm,
+ left = 4cm, right = 2cm,
+ headsep = .72cm, headheight = 15pt }
+\fancyhead[C]
+ {
+ \raisebox { .12ex }
+ { \small 杭州电子科技大学 \l__hdu_set_entitle_tl }
+ }
+\hook_gput_code:nnn {cmd/tableofcontents/before} { . }
+ {
+ \clearpage
+ \pagenumbering{Roman} \cfoot{\small \thepage}
+ }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ {
+ \thispagestyle{fancy} \clearpage
+ \pagenumbering{arabic} \cfoot{}
+ }
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry { margin = 3cm }
+ \titlepage \__hdu_maketitle_bc_auxi: \endtitlepage
+ \restoregeometry
+ }
+\int_new:N \l__hdu_grade_int
+\int_set:Nn \l__hdu_grade_int
+ {
+ \int_compare:nNnTF { \c_sys_month_int } < 9
+ { \c_sys_year_int } { \int_eval:n { \c_sys_year_int + 1 } }
+ }
+\cs_new_protected_nopar:Nn \__hdu_maketitle_bc_auxi:
+ {
+ \begin{center}
+ \vspace*{14\p@}
+ \includegraphics[ width = .64\linewidth ]{hdutitle}
+ \par \vspace*{36\p@}
+ \scalebox{2.75}
+ {
+ \textbf
+ {
+ \__hdu_cover_spread_box:nn
+ { .205\paperwidth } { \l__hdu_set_entitle_tl }
+ }
+ }
+ \par \vspace*{1.5\baselineskip}
+ { \LARGE (\int_use:N \l__hdu_grade_int \bfseries 届) }
+ \par \vspace*{3.0\baselineskip}
+ \begin{tabular}
+ {
+ >{\large\bfseries}p{5.5\ccwd}@{}
+ >{\large\centering\arraybackslash\kaishu}p{.65\linewidth}@{}
+ }
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 题目 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ { \@title }\\[5.2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 学院 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ { \l__hdu_set_department_tl }\\[5.2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 专业 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ { \l__hdu_set_major_tl }\\[5.2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 班级 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ { \l__hdu_set_class_tl }\\[5.2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 学号 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ { \l__hdu_set_stdntid_tl }\\[5.2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 学生姓名 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ { \@author }\\[5.2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 指导教师 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ {
+ \l__hdu_set_cnsupervisor_tl \quad
+ \l__hdu_set_cnrole_tl
+ }\\[5.2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 完成日期 } &
+ \__hdu_cover_center_box:nn { .95\linewidth }
+ {
+ \textsf{\int_use:N \c_sys_year_int} 年
+ \textsf{\int_use:N \c_sys_month_int} 月
+ }
+ \end{tabular}
+ \end{center}
+ }
+\NewDocumentCommand \commitment { O{} }
+ {
+ \newgeometry{ margin = 3cm }
+ \titlepage
+ \__hdu_commitment_bc_aux:n {#1}
+ \endtitlepage
+ \restoregeometry
+ }
+\cs_new_protected_nopar:Npn \__hdu_commitment_bc_aux:n #1
+ {
+ \vspace*{65\p@}
+ \begin{center}
+ \@beginparpenalty \@lowpenalty
+ \Large \textsf
+ { \bfseries \__hdu_cover_spread_box:nn { 6\ccwd }{ 诚信承诺 } }
+ \@endparpenalty \@M
+ \end{center}
+ \vspace*{.4\baselineskip} \par
+ \linespread{2.1}
+ {
+ \__hdu_font_semilarge:
+ 我谨在此承诺:本人所写的毕业论文《\@title 》均系本人独立完成,
+ 没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,
+ 后果由本人承担。
+ \par\vspace*{\baselineskip} \bfseries\sffamily
+ \hskip.48\linewidth 承诺人(签名):
+ \__hdu_sign_process_aux:nnn {#1} { 1 } { 0 }
+ \tl_if_empty:NF \l__hdu_sign_figure_tl
+ {
+ \__hdu_commitment_sign:N
+ \l__hdu_sign_figure_tl
+ \tl_clear:N \l__hdu_sign_figure_tl
+ }
+ \par \vspace*{.5\baselineskip}
+ \hskip \dim_eval:n { .48\linewidth - 1em }
+ \makebox [ 3em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 1 } { 1 } } 年
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 1 } { 2 } } 月
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 1 } { 3 } } 日
+ }
+ }
+\RenewDocumentEnvironment {abstract} { O{en} }
+ {
+ \str_if_eq:nnT {#1} {en}
+ {
+ \tl_set:Nn \l__hdu_keywords_name_tl {Keywords:~}
+ \tl_set:Nn \l__hdu_keywords_sep_tl {;~}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{\normalfont\bfseries ABSTRACT}
+ }
+ \str_if_eq:nnT {#1} {cn}
+ {
+ \tl_set:Nn \l__hdu_keywords_name_tl {\textsf{关键词:}}
+ \tl_set:Nn \l__hdu_keywords_sep_tl {;}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{摘\qquad 要}
+ }
+ }
+ {
+ \tl_clear:N \l__hdu_abstract_title_tl
+ \cfoot{} \clearpage
+ }
+\clist_new:N \l__hdu_keywords_clist
+\NewDocumentCommand \keywords { m }
+ {
+ \par \vspace*{\baselineskip}
+ \noindent\textbf{\l__hdu_keywords_name_tl}
+ \clist_set:Nn \l__hdu_keywords_clist {#1}
+ \clist_use:Nn \l__hdu_keywords_clist {\l__hdu_keywords_sep_tl}
+ }
+\RequirePackage{tocloft}
+\renewcommand \contentsname {\hfill 目 \qquad 录 \hfill}
+\renewcommand* \cfttoctitlefont {\sffamily\__hdu_font_semiLarge:}
+\dim_set:Nn \cftbeforetoctitleskip {3pt}
+\dim_set:Nn \cftaftertoctitleskip {24pt}
+\dim_set:Nn \cftbeforechapskip {1pt}
+\dim_set:Nn \cftbeforesecskip {-.2pt}
+\patchcmd { \@dottedtocline }
+ {
+ \leaders
+ \hbox { $\m at th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ }
+ }
+ {
+ \kern 4pt \leaders
+ \hbox { $\m at th\mkern .4 mu\hbox{-}\mkern .4 mu$ }
+ } {}{}
+\renewcommand* \l at chapter {\@dottedtocline{1}{0em}{1.6em}}
+\renewcommand* \l at section {\@dottedtocline{1}{2.3em}{2.1em}}
+\renewcommand* \@dotsep {1.7}
+\renewcommand* \@pnumwidth {2.5ex}
+\renewcommand* \cftchapfont {\normalfont}
+\setcounter{tocdepth}{1}
+\ctexset
+ {
+ chapter =
+ {
+ fixskip = true, name = {}, beforeskip = 21pt,
+ format+ = \sffamily \large, afterskip = 34pt,
+ number = \arabic{chapter}, pagestyle = fancy,
+ },
+ section =
+ {
+ beforeskip = 1.25ex, fixskip = true,
+ afterskip = 1.5ex, format = \sffamily \__hdu_font_semilarge:
+ },
+ subsection =
+ {
+ beforeskip = 1.25ex, fixskip = true,
+ afterskip = 1.5ex, format = \sffamily
+ }
+ }
+\makeatother \ExplSyntaxOff
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hdu-bc.config.code.tex'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-bc.config.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-exam.code.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-exam.code.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-exam.code.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,38 @@
+%%
+%% This is file `hdu-exam.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `exam')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\__hdu_provide_module:n {exam}
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hdu-exam.code.tex'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-exam.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-l3doc.code.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-l3doc.code.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-l3doc.code.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,140 @@
+%%
+%% This is file `hdu-l3doc.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `l3doc')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\__hdu_provide_module:n {l3doc}
+\providecommand \module \texttt
+\RenewDocumentCommand \pkg {m}
+ { \href{https://ctan.org/pkg/#1}{\textsf{#1}} }
+\RenewDocumentCommand \cls {m}
+ { \href{https://ctan.org/pkg/#1}{\textsf{#1}} }
+\NewDocumentCommand \mailto {m} { \texttt{<\href{mailto:#1}{#1}>} }
+\def \@ulem#1
+ { \CJKsout*[thickness = 2.5ex, format = \color{blue!15}]{#1} }
+\def \s at ulem#1 { \CJKunderwave*{#1} }
+\DeclareRobustCommand \ulem { \@ifstar \s at ulem \@ulem }
+\def \@key #1
+ { \textcolor{red}{\textbf{\texttt{#1}}} ~ \normalfont \texttt{=} ~ }
+\def \s at key #1{\textcolor{red}{\textbf{\texttt{#1}}}}
+\DeclareRobustCommand \key {\@ifstar\s at key\@key}
+\def \val #1{\meta{\textup{#1}}}
+\def \TFF {true\textbar \textbf{false}}
+\def \TTF {\textbf{true}\textbar false}
+\newlist{keyval}{itemize}{10}
+\setlist[keyval]{leftmargin = 0pt, labelsep = 0pt}
+\RequirePackage{ hyperref }
+\RequirePackage [ svgnames ] { xcolor }
+\hypersetup
+ {
+ filecolor = DarkGreen, urlcolor = MidnightBlue,
+ linkcolor = FireBrick
+ }
+\ExplSyntaxOff
+\pdfstringdefDisableCommands
+ {
+ \def \file #1 { <#1> } \def \pkg #1 { <#1> }
+ \def \cls #1 { <#1> } \def \mailto #1 { <#1> }
+ }
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\ExplSyntaxOn
+\RequirePackage [ pass ] { geometry }
+\RequirePackage { enumitem, dirtree, tabularx, tasks,
+ xeCJKfntef, pdfpages, setspace, subcaption }
+\graphicspath { {./example/} }
+\RequirePackage[fontset = fandol]{ctex} \linespread{1.4}
+\dim_set:Nn \parindent {0pt}
+\hook_gput_code:nnn { env/function/before } { . }
+ { \vspace*{-.6\baselineskip} }
+\hook_gput_code:nnn { env/syntax/after } { . }
+ { \par\vspace*{.1\baselineskip} }
+\def \HoLogo at ApTeX #1{\HOLOGO at mbox {Ap\kern -.1667em\TeX}}
+\def \HoLogo at hduThesiS #1
+ {
+ \raisebox{-.5pt}
+ {
+ \HOLOGO at mbox
+ {
+ \tikz [ baseline = (hduthesis.base) ]
+ {
+ \node [ inner~sep = 0pt ] (hduthesis)
+ {\sffamily\scshape hduThesi\scalebox{1.2}[1.2]{S}};
+ \draw let \p1 = (hduthesis.west),
+ \p2 = (hduthesis.east) in (\x1,\y1) (\x2,\y2)
+ [ line~width = {.028pt * (\x2 - \x1)} ]
+ ([yshift = -.5ex]hduthesis.north~west)
+ to [ bend~right = 5 ]
+ ([yshift = .25ex]hduthesis.north~east);
+ }
+ }
+ }
+ }
+\def \HoLogo at hduthesis #1
+ { \raisebox{-.5pt} { \HOLOGO at mbox { \scshape \cls{hduThesiS} } } }
+\let \old at maketitle \maketitle
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry { margin = 1.2in }
+ \titlepage
+ \old at maketitle
+ \begin{center}
+ \tikz
+ {
+ \node [ opacity = .8 ]
+ {
+ \includegraphics [ width = .14\paperwidth ]
+ { hdumotto.pdf }
+ };
+ \node [ opacity = .3 ]
+ {
+ \includegraphics [ width = .21\paperwidth ]
+ { hdulogo.pdf }
+ };
+ }
+ \end{center}
+ \thispagestyle{empty}
+ }
+\hook_gput_code:nnn { cmd/tableofcontents/before } { . }
+ { \clearpage \spacing{1.15} }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ { \endtitlepage \endspacing \restoregeometry }
+\date{
+ Released ~ \hduthesis at date \quad \texttt{v\hduthesis at version}
+ \footnote{
+ \url{https://github.com/\hduthesis@maintainerid/hduthesis}, ~
+ \url{https://gitee.com/\hduthesis@maintainerid/hduthesis}
+ }
+}
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hdu-l3doc.code.tex'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-l3doc.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-layout.code.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-layout.code.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-layout.code.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,199 @@
+%%
+%% This is file `hdu-layout.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `layout')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\__hdu_provide_module:n {layout}
+\RequirePackage { geometry, array, setspace,
+ fancyhdr, enumitem, cleveref }
+\RequirePackage
+ [ skip = 1.75ex, labelsep = quad, font = small ]{caption}
+\fancyhf{}
+\pagestyle{fancy}
+\renewcommand*\headrulewidth {.8pt}
+\renewcommand*\thefigure {\arabic{chapter}-\arabic{figure}}
+\renewcommand*\thetable {\arabic{chapter}-\arabic{table}}
+\renewcommand*\theequation {\arabic{chapter}-\arabic{equation}}
+\AddToHook{env/figure/after}{\vspace*{-2.3ex}}
+\AddToHook{env/table/after}{\vskip-1.9ex}
+\setlist[enumerate,1]
+ {
+ label = (\,\arabic*\,), itemindent = 4em, leftmargin = 0em,
+ labelsep = 1ex, topsep = 0pt, itemsep = 0pt, partopsep = 0pt,
+ parsep = 0em, listparindent = 2\ccwd
+ }
+\crefformat{figure}{图#2#1#3}
+\crefformat{table}{表#2#1#3}
+\cs_new_protected:Npn \__hdu_cover_spread_box:nn #1#2
+ {
+ \mode_leave_vertical:
+ \hbox_to_wd:nn {#1}
+ { \exp_args:Nee \tl_map_inline:nn {#2} { ##1 \hfil } \unskip }
+ }
+\cs_new_protected:Npn \__hdu_cover_center_box:nn #1#2
+ {
+ \mode_leave_vertical:
+ \dim_set:Nn \l_tmpa_dim {#1}
+ \global\setbox1 = \box\voidb at x
+ \group_begin:
+ \setbox0 = \vbox
+ {
+ \dim_set:Nn \hsize {#1}\relax
+ \dim_set:Nn \parindent {0pt}
+ \skip_set:Nn \leftskip {0pt plus 1fil}
+ \skip_set:Nn \rightskip {0pt plus -1fil}
+ \skip_set:Nn \parfillskip {0pt plus 2fil}
+ #2 \par
+ \loop
+ \setbox2 = \lastbox
+ \unless\ifvoid2
+ \global\setbox1 = \vtop
+ { \hbox to\hsize{\strut\unhbox2}
+ \vskip-4pt \hrule height .5pt
+ \vskip9.6pt \unvbox1
+ }
+ \unskip\unpenalty
+ \repeat
+ }
+ \group_end:
+ \box1
+ }
+\cs_new_protected_nopar:Npn \__hdu_process_array:NnnN #1#2#3#4
+ {
+ \seq_set_split:Nee \l__hdu_process_array_seq { / } {#1}
+ \seq_set_split:Nee \l__hdu_process_array_row_seq { \c_colon_str }
+ { \seq_item:Nn \l__hdu_process_array_seq {#2} }
+ \tl_if_eq:nnTF {#3} {:}
+ {
+ \tl_gset:Ne #4
+ { \seq_use:Nn \l__hdu_process_array_row_seq {} }
+ }
+ {
+ \tl_gset:Ne #4
+ { \seq_item:Nn \l__hdu_process_array_row_seq {#3} }
+ }
+ \seq_clear:N \l__hdu_process_array_seq
+ \seq_clear:N \l__hdu_process_array_row_seq
+ }
+\clist_set:Nn \g__hdu_month_clist
+ {
+ January, February, March, April, May, June,
+ July, August, September, October, November, December
+ }
+\keys_define:nn { thesis / hduset }
+ {
+ title .clist_set:N = \l__hdu_set_title_tl,
+ department .tl_set:N = \l__hdu_set_department_tl,
+ major .tl_set:N = \l__hdu_set_major_tl,
+ class .tl_set:N = \l__hdu_set_class_tl,
+ stdntid .tl_set:N = \l__hdu_set_stdntid_tl,
+ author .clist_set:N = \l__hdu_set_author_tl,
+ supervisor .tl_set:N = \l__hdu_set_supervisor_tl,
+ bibsource .tl_set:N = \l__hdu_set_bibsource_tl,
+ }
+\NewDocumentCommand \hduset { m }
+ {
+ \keys_set:nn { thesis / hduset } {#1}
+ \__hdu_docinfo_process_aux:
+ \__hdu_docinfo_degree_if_aux:
+ }
+\cs_set_protected_nopar:Nn \__hdu_docinfo_process_aux:
+ {
+ \__hdu_process_array:NnnN \l__hdu_set_title_tl {1} {:} \@title
+ \__hdu_process_array:NnnN \l__hdu_set_title_tl {2} {:}
+ \l__hdu_set_entitle_tl
+ \__hdu_process_array:NnnN \l__hdu_set_author_tl {1} {:} \@author
+ \__hdu_process_array:NnnN \l__hdu_set_author_tl {2} {:}
+ \l__hdu_set_enauthor_tl
+ \__hdu_process_array:NnnN \l__hdu_set_supervisor_tl {1} {1}
+ \l__hdu_set_cnrole_tl
+ \__hdu_process_array:NnnN \l__hdu_set_supervisor_tl {1} {2}
+ \l__hdu_set_cnsupervisor_tl
+ \__hdu_process_array:NnnN \l__hdu_set_supervisor_tl {2} {1}
+ \l__hdu_set_enrole_tl
+ \__hdu_process_array:NnnN \l__hdu_set_supervisor_tl {2} {2}
+ \l__hdu_set_ensupervisor_tl
+ \bool_if:NF \g__hdu_agreement_bool
+ { \tl_clear:N \l__hdu_set_bibsource_tl }
+ \tl_if_empty:NTF \l__hdu_set_bibsource_tl
+ {
+ \newcommand*\printbibliography{\chapter*{参考文献}}
+ \newcounter {citecount}
+ \renewcommand*\cite[1]
+ {
+ \refstepcounter{citecount}
+ \textsuperscript{[\thecitecount]}
+ }
+ }
+ {
+ \RequirePackage[sort&compress]{gbt7714}
+ \bibliographystyle{gbt7714-numerical}
+ \dim_set:Nn \bibsep {.35ex}
+ \newcommand*\printbibliography
+ {
+ \bibliography { \l__hdu_set_bibsource_tl }
+ \addcontentsline{toc}{chapter}{参考文献}
+ }
+ }
+ }
+\cs_new_protected:Npn \__hdu_commitment_sign:N #1
+ {
+ \leavevmode at ifvmode
+ \lower \dimexpr \f at size\p@ * 9/16
+ \hbox
+ {
+ \includegraphics
+ [ height = { \fp_eval:n { 2*\f at size }\p@ } ] {#1}
+ }
+ }
+\cs_new_protected_nopar:Npn \__hdu_sign_process_aux:nnn #1#2#3
+ {
+ \clist_set:Nn \l__hdu_sign_process_clist {#1}
+ \seq_set_split:Nne \l__hdu_sign_figure_seq {/}
+ { \clist_item:Nn \l__hdu_sign_process_clist {#2} }
+ \int_compare:nNnTF {#3} = {0}
+ {
+ \tl_set:Ne \l__hdu_sign_figure_tl
+ { \seq_item:Nn \l__hdu_sign_figure_seq { #3 + 1 } }
+ \seq_clear:N \l__hdu_sign_figure_seq
+ }
+ {
+ \seq_set_split:Nne \l__hdu_sign_date_seq {-}
+ { \seq_item:Nn \l__hdu_sign_figure_seq {2} }
+ \seq_item:Nn \l__hdu_sign_date_seq {#3}
+ \seq_clear:N \l__hdu_sign_date_seq
+ }
+ \clist_clear:N \l__hdu_sign_process_clist
+ }
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hdu-layout.code.tex'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-layout.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-pg.config.code.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-pg.config.code.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-pg.config.code.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,338 @@
+%%
+%% This is file `hdu-pg.config.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `pg.config')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\ExplSyntaxOn \makeatletter
+\__hdu_provide_module:n {pg.config}
+\geometry { top = 2.8cm, bottom = 3.2cm, left = 3.2cm, right = 3.2cm,
+ headheight = 15pt, headsep = .72cm, footskip = 1.5cm }
+\fancyhead[C]
+ { \raisebox { .12ex } { \small 杭州电子科技大学硕士学位论文 } }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ {
+ \clearpage
+ \pagenumbering{arabic}
+ \cfoot{\small \thepage}
+ }
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry{margin = 2.75cm}
+ \begin{titlepage}
+ \__hdu_maketitle_pg_auxi:
+ \end{titlepage}
+ \titlepage
+ \__hdu_maketitle_pg_auxii:
+ \endtitlepage
+ \titlepage
+ \__hdu_maketitle_pg_auxiii:
+ \endtitlepage
+ \restoregeometry
+ \pagenumbering{Roman}
+ \cfoot {\small \thepage}
+ }
+\cs_new_protected_nopar:Nn \__hdu_maketitle_pg_auxi:
+ {
+ \begin{center}
+ \null
+ \includegraphics[height = 2.35cm]{hdutitle}
+ \par \vspace*{40\p@}
+ {
+ \LARGE
+ \__hdu_cover_spread_box:nn {.575\linewidth} {硕士学位论文}
+ }
+ \par\vspace*{100\p@}
+ \__hdu_font_semiLarge: 题 \qquad 目:
+ \__hdu_cover_center_box:nn { .75\linewidth } { \kaishu \@title }
+ \vspace*{24\p@}\par
+ \begin{tabular}
+ {
+ >{ \__hdu_font_semiLarge: \centering \arraybackslash }
+ p{4\ccwd}@{}
+ >{ \__hdu_font_semiLarge: \centering \arraybackslash \kaishu }
+ p{.65\linewidth}@{}
+ }
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 研究生 } &
+ \__hdu_cover_center_box:nn { .96\linewidth } { \@author }\\
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 专业 } &
+ \__hdu_cover_center_box:nn { .96\linewidth }
+ { \l__hdu_set_major_tl }\\
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 指导教师 } &
+ \__hdu_cover_center_box:nn { .96\linewidth }
+ {
+ \l__hdu_set_cnsupervisor_tl \qquad \l__hdu_set_cnrole_tl
+ }\\[13.5ex]
+ \__hdu_font_semilarge: 完成日期 &
+ \__hdu_cover_center_box:nn { .96\linewidth }
+ {
+ \__hdu_font_semilarge:
+ \textsf { \int_use:N \c_sys_year_int } 年
+ \textsf { \int_use:N \c_sys_month_int } 月
+ }
+ \end{tabular}
+ \end{center}
+ }
+\cs_new_protected_nopar:Nn \__hdu_maketitle_pg_auxii:
+ {
+ \begin{center}
+ \vspace*{25\p@}
+ { \LARGE 杭州电子科技大学硕士学位论文 }
+ \vspace*{140\p@} \par
+ \begin{spacing}{1.15}
+ \huge\textsf{ \@title }
+ \end{spacing}
+ \vspace*{128\p@} \par
+ \begin{tabular}
+ {
+ >{ \__hdu_font_semiLarge: } p{6.25\ccwd}
+ >{ \__hdu_font_semiLarge: \kaishu } l
+ }
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 研究生 }:&
+ \__hdu_cover_spread_box:nn { 4\ccwd } { \@author }\\[2ex]
+ \__hdu_cover_spread_box:nn { 4\ccwd } { 指导教师 }:&
+ \__hdu_cover_spread_box:nn { 4\ccwd }
+ { \l__hdu_set_cnsupervisor_tl }
+ \hskip 1.5em \l__hdu_set_cnrole_tl
+ \end{tabular}
+ \par \vspace{60\p@} \__hdu_font_semilarge:
+ \textsf { \int_use:N \c_sys_year_int } \kaishu 年
+ \textsf { \int_use:N \c_sys_month_int } \kaishu 月
+ \end{center}
+ }
+\cs_new_protected_nopar:Nn \__hdu_maketitle_pg_auxiii:
+ {
+ \begin{center}
+ \vspace*{16\p@}
+ {
+ \bfseries \__hdu_font_semilarge:
+ Dissertation ~ Submitted ~ to ~
+ Hangzhou ~ Dianzi ~ University\\[.8ex]
+ for ~ the ~ Degree ~ of ~ Master
+ }
+ \vspace*{120\p@} \par
+ \begin{spacing}{1.12}
+ \huge \bfseries \l__hdu_set_entitle_tl
+ \end{spacing}
+ \vspace*{112\p@} \par
+ \begin{tabular}{*2{>{\bfseries\large}l}}
+ \__hdu_cover_spread_box:nn { 5em } {Candidate:~} &
+ \l__hdu_set_enauthor_tl\\[3ex]
+ \__hdu_cover_spread_box:nn { 5em } {Supervisor:~} &
+ \l__hdu_set_enrole_tl{} ~ \l__hdu_set_ensupervisor_tl
+ \\[11ex]
+ \end{tabular}
+ \vspace*{8\p@}\par
+ \bfseries \large
+ \clist_item:Nn
+ \g__hdu_month_clist { \int_use:N \c_sys_month_int },~
+ \int_use:N \c_sys_year_int
+ \end{center}
+ }
+\NewDocumentCommand \commitment { O{} }
+ {
+ \cfoot {}
+ \newgeometry{margin = 2.75cm}
+ \titlepage
+ \__hdu_commitment_pg_aux:n {#1}
+ \endtitlepage
+ \restoregeometry
+ \cfoot {\small \thepage}
+ }
+\cs_new_protected_nopar:Npn \__hdu_commitment_pg_aux:n #1
+ {
+ \vspace*{-12\p@}
+ \begin{center}
+ \large
+ 杭州电子科技大学\\[1ex] 学位论文原创性声明和使用授权说明
+ \end{center}
+ \vspace*{20\p@}
+ \begin{center}
+ \__hdu_font_semilarge: 原创性声明
+ \end{center}
+ \par \vspace*{.4\baselineskip}
+ \begin{spacing}{1.65}
+ 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,
+ 独立进行研究工作所取得的成果。除文中已经注明引用的内容外,
+ 本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。
+ 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。\par
+ \noindent 申请学位论文与资料若有不实之处,本人承担一切相关责任。
+ \par \vspace*{1.25\baselineskip}
+ \noindent \makebox [ .45\linewidth ] [ l ]
+ {
+ 论文作者签名:
+ \__hdu_sign_process_aux:nnn {#1} { 1 } { 0 }
+ \tl_if_empty:NF \l__hdu_sign_figure_tl
+ {
+ \__hdu_commitment_sign:N
+ \l__hdu_sign_figure_tl
+ \tl_clear:N \l__hdu_sign_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \__hdu_sign_process_aux:nnn {#1} { 1 } { 1 } } 年
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 1 } { 2 } } 月
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 1 } { 3 } } 日
+ \par\vspace*{20\p@}
+ \begin{center}
+ \__hdu_font_semilarge: 学位论文使用授权说明
+ \end{center}
+ \par \vspace*{.4\baselineskip}
+ 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定,
+ 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。
+ 本人保证毕业离校后,
+ 发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。
+ 学校有权保留送交论文的复印件,允许查阅和借阅论文;
+ 学校可以公布论文的全部或部分内容,
+ 可以允许采用影印、缩印或其它复制手段保存论文。
+ (保密论文在解密后遵守此规定)
+ \par \vspace*{1.25\baselineskip}
+ \noindent \makebox [.45\linewidth] [ l ]
+ {
+ 论文作者签名:
+ \__hdu_sign_process_aux:nnn {#1} { 2 } { 0 }
+ \tl_if_empty:NF \l__hdu_sign_figure_tl
+ {
+ \__hdu_commitment_sign:N
+ \l__hdu_sign_figure_tl
+ \tl_clear:N \l__hdu_sign_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \__hdu_sign_process_aux:nnn {#1} { 2 } { 1 } } 年
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 2 } { 2 } } 月
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 2 } { 3 } } 日
+ \par \vspace*{\baselineskip}
+ \noindent \makebox [ .45\linewidth ] [ l ]
+ {
+ 指导教师签名:
+ \__hdu_sign_process_aux:nnn {#1} { 3 } { 0 }
+ \tl_if_empty:NF \l__hdu_sign_figure_tl
+ {
+ \__hdu_commitment_sign:N
+ \l__hdu_sign_figure_tl
+ \tl_clear:N \l__hdu_sign_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \__hdu_sign_process_aux:nnn {#1} { 3 } { 1 } } 年
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 3 } { 2 } } 月
+ \makebox [ 2em ]
+ { \__hdu_sign_process_aux:nnn {#1} { 3 } { 3 } } 日
+ \end{spacing}
+ }
+\RenewDocumentEnvironment {abstract} { O{en} }
+ {
+ \str_if_eq:nnT {#1} {en}
+ {
+ \tl_set:Nn \l__hdu_keywords_name_tl {Keywords:~}
+ \tl_set:Nn \l__hdu_keywords_sep_tl {,~}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{\normalfont\bfseries Abstract}
+ \addcontentsline{toc}{chapter}{\bfseries Abstract}
+ }
+ \str_if_eq:nnT {#1} {cn}
+ {
+ \tl_set:Nn \l__hdu_keywords_name_tl {\textsf{关键词:}}
+ \tl_set:Nn \l__hdu_keywords_sep_tl {,}
+ \@beginparpenalty \@lowpenalty
+ \chapter*{摘要}
+ \addcontentsline{toc}{chapter}{摘要}
+ }
+ }
+ {
+ \tl_clear:N \l__hdu_abstract_title_tl
+ \clearpage
+ }
+\clist_new:N \l__hdu_keywords_clist
+\NewDocumentCommand \keywords { m }
+ {
+ \par \vspace*{\baselineskip}
+ \noindent\textbf{\l__hdu_keywords_name_tl}
+ \clist_set:Nn \l__hdu_keywords_clist {#1}
+ \clist_use:Nn \l__hdu_keywords_clist { \l__hdu_keywords_sep_tl }
+ }
+\RequirePackage{tocloft}
+\renewcommand \contentsname {\hfill 目录 \hfill}
+\renewcommand* \cfttoctitlefont{\sffamily\__hdu_font_semiLarge:}
+\dim_set:Nn \cftbeforetoctitleskip {12pt}
+\dim_set:Nn \cftaftertoctitleskip {24pt}
+\dim_set:Nn \cftbeforechapskip {1pt}
+\dim_set:Nn \cftbeforesecskip {-.2pt}
+\patchcmd { \@dottedtocline }
+ {
+ \leaders
+ \hbox { $\m at th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ }
+ }
+ {
+ \kern 4pt \leaders
+ \hbox { $\m at th\mkern .4 mu\hbox{.}\mkern .4 mu$ }
+ } {}{}
+\renewcommand* \l at chapter {\@dottedtocline{1}{0em}{1.6em}}
+\renewcommand* \l at section {\@dottedtocline{1}{2.3em}{2.1em}}
+\renewcommand* \@dotsep {1.7}
+\renewcommand* \@pnumwidth {2.5ex}
+\renewcommand* \cftchapfont {\normalfont}
+\setcounter{tocdepth}{1}
+\ctexset
+ {
+ chapter =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 32pt, afterskip = 32pt,
+ format+ = \sffamily \__hdu_font_semiLarge:,
+ pagestyle = fancy
+ },
+ section =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 2ex, afterskip = 2.75ex,
+ format = \sffamily \large
+ },
+ subsection =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 2ex, afterskip = 2.75ex,
+ format = \sffamily \__hdu_font_semilarge:
+ }
+ }
+\makeatother \ExplSyntaxOff
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hdu-pg.config.code.tex'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-pg.config.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-stationery.code.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-stationery.code.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-stationery.code.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,155 @@
+%%
+%% This is file `hdu-stationery.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `stationery')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\__hdu_provide_module:n {stationery}
+\keys_define:nn { stationery / hduset }
+ {
+ watermark .bool_set:N = \g__hdu_set_watermark_bool,
+ watermark .initial:n = false,
+ watermark .default:n = true,
+ title .tl_set:N = \l__hdu_set_title_tl,
+ author .tl_set:N = \l__hdu_set_author_tl,
+ mail .tl_set:N = \l__hdu_set_mail_tl,
+ date .tl_set:N = \l__hdu_set_date_tl
+ }
+\RequirePackage{ hyperref, geometry, tikz,
+ tikzpagenodes, twemojis, fancyhdr }
+\hypersetup{hidelinks}
+\urlstyle{same}
+\NewDocumentCommand \hduset { m }
+ {
+ \tl_clear:N \l__hdu_set_author_tl
+ \tl_clear:N \l__hdu_set_mail_tl
+ \keys_set:nn { stationery / hduset } {#1}
+ \hypersetup
+ {
+ pdftitle = Hangzhou Dianzi University,
+ pdfsubject = \l__hdu_set_title_tl,
+ pdfauthor = \l__hdu_set_author_tl
+ }
+ }
+\geometry
+ { hmargin = .8in, top = 1.95in, bottom = .75in,
+ headheight = 1.2in, headsep = .3in, footskip = .3in }
+\linespread{1.25}
+\RequirePackage [ skip = \baselineskip ] { parskip }
+\renewcommand* \familydefault { \sfdefault }
+\definecolor{hdu}{HTML}{214395}
+
+\renewcommand* \headrulewidth {2pt}
+\renewcommand* \footrulewidth {2pt}
+\hook_gput_code:nnn { cmd/headrule/before } { . } { \color{hdu!80} }
+\hook_gput_code:nnn { cmd/footrule/before } { . } { \color{hdu!80} }
+\lhead
+ { {}~
+ \minipage{.6\linewidth}
+ \medskip \leavevmode \lower -.111in
+ \hbox { \includegraphics [ height = .75in ] {hdubadge} }
+ \endminipage \medskip \hfill
+ \minipage{.36\linewidth}
+ \medskip \vbox
+ {
+ \linespread{1.2}
+ \raggedright \small \color{hdu}
+ \texttwemoji{1f4cd} ~ 1158 ~ No.2 ~ St., ~ Hangzhou, ~ 310018\\
+ \texttwemoji{1f4de} ~ (86) ~ 0571-86915072\\
+ \texttwemoji{1f310} ~ \url{www.hdu.edu.cn}
+ } \medskip
+ \endminipage
+ }
+\lfoot
+ {
+ \small{} ~ \texttwemoji{1f4cd} ~
+ 1158 ~ No.2~Street, ~ Qiantang ~District, ~
+ Hangzhou, ~ Zhejiang ~ Province, ~ 310018, ~ P.R.China
+ }
+\cfoot {}
+\rfoot { \small \texttwemoji{1f310} ~ \url{www.hdu.edu.cn} ~ }
+\pagestyle{fancy}
+\renewcommand* \maketitle
+ {
+ \group_begin: \small
+ \bool_lazy_or:nnT
+ { !\tl_if_empty_p:N \l__hdu_set_author_tl }
+ { !\tl_if_empty_p:N \l__hdu_set_mail_tl }
+ { \makebox [ 4em ] [ l ] { \scshape From } }
+ \tl_if_empty:NTF \l__hdu_set_author_tl
+ { \@latex at warning@no at line {No \noexpand \author given} }
+ { \l__hdu_set_author_tl{} ~ }
+ \tl_if_empty:NF \l__hdu_set_mail_tl
+ { \texttt { <\l__hdu_set_mail_tl> } }
+ \bool_lazy_or:nnT
+ { !\tl_if_empty_p:N \l__hdu_set_author_tl }
+ { !\tl_if_empty_p:N \l__hdu_set_mail_tl } { \\ }
+ \makebox [ 4em ] [ l ] { \scshape Date }
+ \tl_if_empty:NTF \l__hdu_set_date_tl \today \l__hdu_set_date_tl \\
+ \tl_if_empty:NTF \l__hdu_set_title_tl
+ { \@latex at error {No \noexpand \title given}\@ehc }
+ {
+ \makebox [ 4em ] [ l ] { \scshape Subject }
+ \l__hdu_set_title_tl
+ }
+ \par \vspace{.5\baselineskip}
+ \group_end:
+ }
+\AtBeginDocument { \color_select:n {black!80} }
+\DeclareHookRule { shipout / background } { hduthesis / stationery }
+ { before } { pgfrcs }
+\AddToHook { shipout / background } [ hduthesis / stationery ]
+ {
+ \bool_if:NT \g__hdu_set_watermark_bool
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ opacity = .2 ] at (current~page)
+ { \includegraphics [ width = .4\linewidth ] {hdulogo} };
+ }
+ }
+\NewDocumentCommand \notelines {O{20}}
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \int_step_inline:nn { #1 - 1 }
+ {
+ \draw [ hdu, very~thick, opacity = .6 ]
+ ([
+ yshift = -##1 * (\textheight + .6in - 15.87pt ) / #1
+ + .3in
+ ]current~page~text~area.north~west
+ ) --++ (\linewidth, 0);
+ }
+ }
+ }
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hdu-stationery.code.tex'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-stationery.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-typeset.code.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-typeset.code.tex (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-typeset.code.tex 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,84 @@
+%%
+%% This is file `hdu-typeset.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `typeset')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\__hdu_provide_module:n {typeset}
+\RequirePackage { circuitikz, pgfplots, listings, hologo,
+ lipsum, zhlipsum, booktabs, multicol }
+\pgfplotsset { compat = newest }
+\hologoFontSetup { general = \sffamily }
+\graphicspath
+ {
+ {./figure/}{./figures/}{./image/}{./images/}
+ {./graphics/}{./graphic/}{./pictures/}{./picture/}
+ }
+\linespread{1.39}
+\dim_set:Nn \parindent { 2\ccwd }
+\cs_new_protected:Nn \__hdu_font_semilarge:
+ { \@setfontsize \__hdu_font_semilarge:{14}{16.5} }
+\cs_new_protected:Nn \__hdu_font_semiLarge:
+ { \@setfontsize \__hdu_font_semiLarge:{16.5}{17.5} }
+\setmainfont{texgyretermes}
+ [
+ Extension = .otf, UprightFont = *-regular,
+ BoldFont = *-bold, ItalicFont = *-italic,
+ BoldItalicFont = *-bolditalic
+ ]
+\setsansfont{texgyreheros}
+ [
+ Extension = .otf, BoldItalicFont = *-bolditalic,
+ UprightFont = *-regular, BoldFont = *-bold,
+ ItalicFont = *-italic, Scale = .9
+ ]
+\RequirePackage { mathtools, amssymb, cancel, fixdif,
+ derivative, siunitx, physics2 }
+\usephysicsmodule { ab, braket, op.legacy, bm-um.legacy }
+\RequirePackage
+ [ warnings-off = { mathtools-colon, mathtools-overbracket }
+ ] {unicode-math}
+\AtBeginDocument
+ {
+ \dim_set:Nn \abovedisplayskip {3pt}
+ \dim_set:Nn \belowdisplayskip {3pt}
+ }
+\tl_if_empty:NF \g__hdu_math_font
+ { \setmathfont { \g__hdu_math_font } }
+\tl_if_empty:NF \g__hdu_main_CJK_font
+ { \exp_last_unbraced:No \setCJKmainfont \g__hdu_main_CJK_font }
+\tl_if_empty:NF \g__hdu_sans_CJK_font
+ { \exp_last_unbraced:No \setCJKsansfont \g__hdu_sans_CJK_font }
+\tl_if_empty:NF \g__hdu_mono_CJK_font
+ { \exp_last_unbraced:No \setCJKmonofont \g__hdu_mono_CJK_font }
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hdu-typeset.code.tex'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hdu-typeset.code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hduthesis.cls
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hduthesis.cls (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hduthesis.cls 2025-03-07 22:38:56 UTC (rev 74500)
@@ -0,0 +1,199 @@
+%%
+%% This is file `hduthesis.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hduthesis.dtx (with options: `class')
+%% -----------------------------------------------------------------------
+%% Copyright (C) 2023-2025 by Mingyu Xia <myhsia at outlook.com> *
+%% *
+%% It may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License (LPPL), either version 1.3c of this *
+%% license or (at your option) any later version. The latest version *
+%% of this license is in the file *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainer of this work is Mingyu Xia. *
+%% -----------------------------------------------------------------------
+\def \hduthesis at date {2025-03-07}
+\def \hduthesis at version {1.0.0}
+\def \hduthesis at maintainerid {myhsia}
+\ProvidesExplClass {hduthesis} {\hduthesis at date} {\hduthesis at version}
+ {LaTeX Template Bundle for Hangzhou Dianzi University}
+\cs_if_exist:NF \seq_set_split:Nne
+ { \cs_generate_variant:Nn \seq_set_split:Nnn { Nne } }
+\cs_if_exist:NF \seq_set_split:Nee
+ { \cs_generate_variant:Nn \seq_set_split:Nnn { Nee } }
+\cs_if_exist:NF \tl_set:Ne
+ { \cs_generate_variant:Nn \tl_set:Nn { Ne } }
+\cs_if_exist:NF \tl_gset:Ne
+ { \cs_generate_variant:Nn \tl_gset:Nn { Ne } }
+\cs_new_protected:Npn \__hdu_msg_new:nn #1#2
+ { \msg_new:nnn { hduthesis } {#1} {#2} }
+\cs_new_protected:Npn \__hdu_msg_error:nn #1#2
+ { \msg_error:nnn { hduthesis } {#1} {#2} }
+\cs_generate_variant:Nn \__hdu_msg_error:nn { nx }
+\cs_new_protected:Npn \__hdu_msg_warning:nn #1#2
+ { \msg_warning:nnn { hduthesis } {#1} {#2} }
+\cs_generate_variant:Nn \__hdu_msg_warning:nn { nx }
+\__hdu_msg_new:nn { not found module }
+ { The ~ hduthesis ~ module ~ `#1' ~ not ~ found. }
+\__hdu_msg_new:nn { unknown mode }
+ {
+ Unknown ~ hduthesis ~ mode ~ `#1',~
+ loading ~ mode ~ `thesis' ~ instead.
+ }
+\__hdu_msg_new:nn { Users Agreement }
+ {
+ \exp_not:n
+ {
+ 编译受阻!~ 使用模板前请阅读用户手册中的「用户协议」
+ \MessageBreak
+ !模板作者 (@myhsia) 不对使用本模板产生的格式审查问题负责!
+ \MessageBreak
+ 如果您同意协议,在全局选项中添加 `agreed' 即可解除本错误
+ \MessageBreak
+ 欢迎您通过邮件 (myhsia at hdu.edu.cn) 或 GitHub 反馈意见
+ }
+ }
+\cs_new_protected_nopar:Npn \__hdu_load_module:n #1
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \file_if_exist_input:nF { hdu-##1.code.tex }
+ { \__hdu_msg_error:nn { not found module } {##1} }
+ }
+ }
+\cs_new_protected_nopar:Npn \__hdu_provide_module:n #1
+ {
+ \ProvidesExplFile{hdu-#1.code.tex}
+ {\hduthesis at date}{\hduthesis at version}
+ {hduThesiS ~ \text_titlecase:n {#1} ~ Module}
+ }
+\keys_define:nn { hduthesis / classoption }
+ {
+ agreed .bool_set:N = \g__hdu_agreement_bool,
+ agreed .initial:n = false,
+ agreed .default:n = true,
+ mode .tl_set:N = \g__hdu_mode_tl,
+ math-font .tl_set:N = \g__hdu_math_font,
+ CJKmain-font .tl_set:N = \g__hdu_main_CJK_font,
+ CJKsans-font .tl_set:N = \g__hdu_sans_CJK_font,
+ CJKmono-font .tl_set:N = \g__hdu_mono_CJK_font,
+ unknown .code:n = \__hdu_unknown_option:n {#1},
+ }
+\clist_new:N \g__hdu_base_options_clist
+\cs_new_protected_nopar:Npn \__hdu_unknown_option:n #1
+ {
+ \tl_if_empty:nTF { #1 }
+ {
+ \clist_gput_right:NV
+ \g__hdu_base_options_clist \l_keys_key_str
+ }
+ {
+ \exp_args:NNx
+ \clist_gput_right:Nn \g__hdu_base_options_clist
+ { \l_keys_key_str = \exp_not:n {#1} }
+ }
+ }
+\ProcessKeyOptions [ hduthesis / classoption ]
+\bool_lazy_all:nT
+ {
+ { !\str_if_empty_p:N \g__hdu_mode_tl }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { thesis } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { beamer } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { stationery } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { exam } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { l3doc } }
+ }
+ { \__hdu_msg_warning:nx { unknown mode } { \g__hdu_mode_tl } }
+\str_if_eq:eeT { \g__hdu_mode_tl } { beamer }
+ {
+ \PassOptionsToClass { aspectratio = 2013 } { beamer }
+ \exp_args:NNV
+ \LoadClass [ \g__hdu_base_options_clist ] { beamer }
+ \usetheme{hdu}
+ \endinput
+ }
+\str_if_eq:eeT { \g__hdu_mode_tl } { stationery }
+ {
+ \PassOptionsToClass { 12pt } { letter }
+ \exp_args:NNV
+ \LoadClass [ \g__hdu_base_options_clist ] { letter }
+ \__hdu_load_module:n { stationery }
+ \endinput
+ }
+\str_if_eq:eeT { \g__hdu_mode_tl } { exam }
+ {
+ \exp_args:NNV
+ \LoadClass [ \g__hdu_base_options_clist ] { article }
+ \__hdu_load_module:n { exam }
+ \endinput
+ }
+\str_if_eq:eeT { \g__hdu_mode_tl } { l3doc }
+ {
+ \PassOptionsToClass { 11pt, letterpaper, kernel } { l3doc }
+ \RequirePackage{minted}
+ \exp_args:NNV
+ \LoadClass [ \g__hdu_base_options_clist ] { l3doc }
+ \__hdu_load_module:n { l3doc }
+ \endinput
+ }
+\bool_lazy_any:nT
+ {
+ { \str_if_eq_p:ee { \g__hdu_mode_tl } { thesis } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { beamer } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { stationery } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { exam } }
+ { !\str_if_eq_p:ee { \g__hdu_mode_tl } { l3doc } }
+ }
+ {
+ \PassOptionsToClass { a4paper, zihao = -4 } { ctexrep }
+ \PassOptionsToPackage { quiet, no-math } { xeCJK }
+ \exp_args:NNV
+ \LoadClass [ \g__hdu_base_options_clist ] { ctexrep }
+ \bool_if:NTF \g__hdu_agreement_bool
+ {
+ \RequirePackage{hyperref}
+ \pdfstringdefDisableCommands
+ {
+ \def \cite#1 {<#1>}
+ \def \hologoRobust#1 {<#1>}
+ }
+ \AtBeginDocument
+ {
+ \hypersetup
+ { hidelinks, pdfproducer = hduThesiS ~ by ~ Mingyu ~ Xia }
+ }
+ } { \__hdu_msg_error:nn { Users Agreement } { Unconfirmed } }
+ \__hdu_load_module:n { typeset }
+ \__hdu_load_module:n { layout }
+ \cs_new_protected:Nn \__hdu_docinfo_degree_if_aux:
+ {
+ \int_compare:nNnTF
+ { \tl_count:N \l__hdu_set_stdntid_tl } = { 8 }
+ { \__hdu_load_module:n { bc.config } }
+ { \__hdu_load_module:n { pg.config } }
+ }
+ \endinput
+ }
+%% -----------------------------------------------------------------------
+%% This work consists of the files hduthesis.dtx, *
+%% hdu-graphics.dtx, *
+%% and hduthesis.ins, *
+%% and the derived files hduthesis.cls, *
+%% hdu-<module>.code.tex, *
+%% beamerthemehdu.sty, *
+%% hdulogo.pdf, *
+%% hdutitle.pdf, *
+%% hdubadge.pdf, *
+%% hdumotto.pdf, *
+%% hduthesis.pdf, *
+%% and README.md. *
+%% -----------------------------------------------------------------------
+%%
+%% End of file `hduthesis.cls'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hduthesis/hduthesis.cls
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
More information about the tex-live-commits
mailing list.