Progress in this course (100%)
- Progress in the Specialization capstone (20%)
- Progress in life goals (40%)
-
-
-
-
More About Me
-
- My Childhood
-
I grew up in a small city in northern China. There is a small forest next to the house, and I often play there.
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Learning Profile · HTML Sample
+
+
+
+
+ Skip to main content
+
+
+
+
+
+
SEMANTIC HTML EXERCISE · 01
+
Learning the web, one meaningful element at a time.
+
+ A small profile for zhaowl94, built with native HTML
+ elements and progressive enhancement.
+
+
+
+
+
+
+
+
01 · Practice
+
Patterns worth repeating
+
+
+
+ A
+
Clear structure
+
+ Use headings, landmarks, and lists to make a page understandable
+ before adding visual polish.
+
+
+
+ B
+
Keyboard first
+
+ Every destination and disclosure should work without a mouse or
+ touch screen.
+
+
+
+ C
+
Resilient by default
+
+ Keep the core experience useful when scripts, networks, or
+ advanced browser features are unavailable.
+
+
+
+
+
+
+
+
02 · Progress
+
A learning snapshot
+
+
+
+
+ Semantic page structure
+ 100%
+
+
+
+
+
+ Responsive CSS systems
+ 72%
+
+
+
+
+
+ Automated accessibility testing
+ 58%
+
+
+
+
+
+
+
+
+
03 · Next
+
What comes after the markup?
+
+
+ Build for more ways of using the web
+
+
+ The next step is not another framework. It is learning how zoom,
+ high contrast, screen readers, slow networks, and different input
+ methods change the experience.
+
+
+ This repository uses those constraints as design inputs and
+ verifies them before publishing.
+
+
+
+
+
+
+
+
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..4977a98
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,24 @@
+MIT License
+
+Copyright (c) 2026 zhaowl94
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+Third-party and historical materials identified in THIRD_PARTY_NOTICES.md are
+not covered by this license unless their own terms expressly say otherwise.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index c48a3fe..70f9e2c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,99 @@
-# sample
\ No newline at end of file
+# HTML Sample
+
+一个无需前端框架或运行时构建即可使用的静态学习示例集。仓库包含三个独立练习,重点覆盖语义化 HTML、响应式 CSS、无障碍、表单交互与自动化浏览器测试。
+
+An accessible collection of framework-free HTML and CSS exercises. Every published page works when opened directly, served locally, or deployed below a GitHub Pages project path.
+
+在线入口:[https://zhaowl94.github.io/html_sample/](https://zhaowl94.github.io/html_sample/)
+
+## 示例
+
+| 入口 | 内容 | 重点 |
+| -------------------------------------------------------------- | ----------------------------- | --------------------------------- |
+| [`Html5-Final-Project.html`](Html5-Final-Project.html) | Learning Profile 单页练习 | 语义结构、列表、进度条、`details` |
+| [`assignment-1 2/index.html`](assignment-1%202/index.html) | Ultimate Field Notes 三页站点 | 响应式导航、布局、时间线、表格 |
+| [`styles-conference/index.html`](styles-conference/index.html) | Signal Conference 五页站点 | 编辑型布局、表单、浏览器端校验 |
+
+所有旧页面路径均继续有效。根目录新增 `index.html` 作为统一入口。
+
+## 运行方式
+
+页面没有构建依赖,可以直接双击任意 HTML 文件。若希望通过本地 HTTP 服务器查看:
+
+```powershell
+python -m http.server 8000
+```
+
+安装测试工具需要 Node.js 24 LTS:
+
+```powershell
+npm.cmd ci
+npm.cmd run serve
+```
+
+PowerShell 若允许执行 `npm.ps1`,也可将 `npm.cmd` 写成 `npm`。仓库不会修改 Windows 执行策略、环境变量或全局 Git 配置,也不要求全局安装任何 npm 工具。
+
+## 测试
+
+```powershell
+# 格式、HTML、CSS、JavaScript、本地链接和兼容路径
+npm.cmd run check
+
+# Node 单元测试
+npm.cmd run test:unit
+
+# Windows 浏览器矩阵
+npm.cmd run test:e2e:windows
+
+# 全部本地浏览器项目
+npm.cmd run test:e2e
+
+# Lighthouse 性能与质量门槛
+npm.cmd run test:lighthouse
+```
+
+`test/` 包含:
+
+- 10 个页面的加载与导航测试;
+- Chromium、Chrome、Edge、Firefox、WebKit 和移动端视口覆盖;
+- Axe WCAG 自动化扫描;
+- 键盘、表单、零网络提交和零浏览器存储验证;
+- 直接使用 `file://` 打开页面的兼容测试;
+- 桌面、移动、浅色和深色截图基线;
+- HTML/CSS 语法、本地链接、大小写和 500 KB 初始资源预算检查;
+- Windows Edge 的高对比度和 200% 缩放自动验证,以及 Narrator 手动复核限制记录。
+
+完整测试说明见 [`test/README.md`](test/README.md)。
+
+## 设计边界
+
+- 页面运行时不加载 CDN、远程字体、第三方脚本或统计服务。
+- Signal 报名表单不发送请求、不设置 Cookie,也不使用 `localStorage` 或 `sessionStorage`。
+- 关键页面初始本地资源不超过 500 KB。
+- 支持系统浅色、深色、减少动画和强制颜色偏好。
+- 正式兼容现代 Edge、Chrome、Firefox 与 Safari;不支持 Internet Explorer。
+- HTML 结构直接保留在每个页面中,不依赖 JavaScript 注入或模板构建。
+
+## 项目结构
+
+```text
+.
+├── index.html # 示例导航
+├── Html5-Final-Project.html # Learning Profile
+├── assets/ # 根页面样式和社交预览
+├── assignment-1 2/ # Ultimate Field Notes
+├── styles-conference/ # Signal Conference
+├── scripts/ # GitHub Pages 静态发布构建
+├── test/ # 全部自动化和人工测试材料
+└── .github/ # CI、Pages 和依赖维护
+```
+
+## 隐私与许可
+
+页面只展示 GitHub 用户名 `zhaowl94`,不收集个人信息。原课程练习中的文字、人物照片和远程素材已由原创内容替换。
+
+本次原创代码和内容采用 [MIT License](LICENSE)。学习来源、事实来源、生成图像及保留的历史练习文件边界见 [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md)。
+
+## Contributing
+
+修改说明、测试门禁和截图更新流程见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md
new file mode 100644
index 0000000..3288011
--- /dev/null
+++ b/THIRD_PARTY_NOTICES.md
@@ -0,0 +1,34 @@
+# Third-party notices and provenance
+
+## Learning references
+
+Earlier versions of this repository were created while following introductory web-design exercises:
+
+- Web Design for Everybody, Colleen van Lent:
+- Learn to Code HTML & CSS, Shay Howe:
+
+The active pages in this version use newly written copy, data, structure, and visual design. These links acknowledge the learning context; no license to the referenced course material is claimed or granted by this repository.
+
+## Ultimate references
+
+The historical and rules summaries link to primary sources:
+
+- USA Ultimate, Discover Ultimate:
+- USA Ultimate, Rules of Ultimate:
+- World Flying Disc Federation, History of Spirit of the Game:
+
+Organization names remain the property of their respective owners. The repository is not affiliated with or endorsed by those organizations.
+
+## Generated artwork
+
+`assets/og.png` was generated specifically for this repository on 2026-07-31 using OpenAI image generation without an input image. `assignment-1 2/images/flywheel.jpg` is a crop derived from the same generated artwork. The previous photograph containing identifiable players was replaced and is not included in this version.
+
+## Historical CSS snapshots
+
+The following unreferenced files are preserved only as learning-history snapshots and are excluded from the active site design:
+
+- `assignment-1 2/css/Mutual evaluation.css`
+- `assignment-1 2/css/hw1 - old.css`
+- `assignment-1 2/css/hw1 - old2.css`
+
+Their provenance predates the current refactor. They are retained for path compatibility and are not represented as newly authored or covered by the repository’s MIT grant.
diff --git a/assets/favicon.png b/assets/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..99941a9bf4ecda2a836d50af766ce02f721a0e74
GIT binary patch
literal 9614
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
Ef~XO|^8f$<
literal 0
HcmV?d00001
diff --git a/assets/og.png b/assets/og.png
new file mode 100644
index 0000000000000000000000000000000000000000..fea8a4c8ed5dcbe2c135a60df270c13c1ac6864f
GIT binary patch
literal 881319
zcmV)6K*+y|P)00009a7bBm00000
z000010EBrLa{vGk07*naRCwBKy~(a+%d#b8<}2>2G83`@vO!8T_!6Z2JNk6^6&gr%
z=^!LT17(j6$_7G$EY8_(tm$T>@EP~Kd+&=Av11i;`gAuNHj4c3|GWS8pa1iJmMd%T
z+Eo$x{lD+8;`^)2h_$|d`24fh=lehP{LrqS=chAPem>8iMdkD3QIY2_#`CW+KezJN
z_ch}DT>n$?yktG^w&Qu7%Km}xzkh%C=Vw2k=6s0nzdpbG{%D&$=KB2lOFq}RKi7Qg=Q2Il@_Su=zTa}6k9=NypD%cRe9eV;
zUikSC(SNbdwSNBa`A?j$az6R>Jj>Us6p=QsPa@1H-v|M%R%`NHdY<8yIm
zF+6wc`;mHq^y2Bu^?aRYZG8G?;@r>Yv*-5?uJ1M5`;W5#o`0?CuTdjqy^zlxTsaR`^p%)r;<>NB7@if|H@Sir=Pamm
z-GWbcollZN#o`&`}ZO)Sr+TKz;kfAhR+?~rje
zk@Ik^eoFhV&w4%Y{p>(kA#44bZ__vO>^{9T&JKL8bMFj+m*QgXZ&&?QBF=OAec1XN
z&ELZ=U+0oO>*3ikzVGpTi|@AgeVu-Z`S9N#>(6yo$mh8RpI^UzegBKo;w+K=lIN;^
zfAstB|KX4S@W&s2?0%u=zC3%~_rd!0>u$td7j17P@%-uBqCDr%d5HVgKI>pk+&b%}H-U3R{hZf2
zZ`e=4-W$8v_ZNK*KD+%oTj+B!dsjI7!j8>FaSqtt8KN&_AK8C?|M~7+IiKM<;w$$aaY_1x~~u=>kqikZFvt9PU48T;-|-xXeYe&*L&{oL$7&*gj8(pkmT
zTjlx6)n9p5z`5bcyYW2k=jhM#EzS=5R12#gntr}d#n4A>pH_X=_Tufrsj#T$@#yWp
z*Ie`taqjZ7SD#{IHUrj9(Kq$%b*bCxBGc6DGG*u{sLe2e1&IMKL_+#9?ysQ
zE~h!}y1eV}QfGtdgK+U|dOlU0N-$PTefV?M=viscS$h6f&f#^I+Sw}3WyG=k+=SJo
z%z0FM{q=w6X!u^4`RCJHcX4N!M`U$@)+fL&9+kCl+~II6?AF?B&)<5ErClFA%d?dS
z4wWuK=SI)BiT=K;cl%i_U8_#L5udJl`@^4)I17F%j43wGBil`SXwG=-sFOsn7E#T~Bs-|CE~N&h$#|J)sMf_^zz)j{p4RX)(?@G8=MlG|zK?
z&idYRK2uPv#36f5_gd%auldgBsq8YSraV8F>}R7=#tq%4mg$Xdw)`o}pF*Io^G{du
zImcnJpvh+=>SwD<*f~<4$29sgbV1&o6pynx1JB2%js(<|X$G`oz|JSd7_Rs#sfAg>Z_4gq^Yh`xt
z;%bgSc{!Ejtm@uQQDL&lDQ!7(X}YaCUvi_o4phl_e7eN#K63U5zT4cw-VtL;p_&J_
z_un}J^?=}e;02y*^xTZ^cl`OR_f=Xl0`HYXqMT-21P&sx|HIs;cZeFk4RVmAw79&C@5KNtjOXx-xtc@OW!E;qwXPQ4P(b
zDtY1Of}IVFUwN9G;y2MN@S7D@MEH%LPRdtl>N4@uKOgUh?KjWp-nj~2=lsCd`5oLS
ztGJ8Sz*1SfaedEpK?)B~000U;th1BM(wn-rFX%kX`oFMemR~LTRP-uhaf(eocoPN(
z=sUy3vgeNy`>wu3&Exa*qI_0>SzyUySKv7{H-!r+=910}PrI#-eKur#vQtEyLwwK&
zv~jj)R|5@L@^}XE1M}JYl){$99ddKeyq@&1O$xAE&YjG(ztJUNcewp@KDg6Q-^<;b
zQfPIg9z$FUJbK?(`13#h`+xJl{V)IOzxuEL;h+BJ--;`_{?}Z?ZY1y+a-nNyNNhrL
zcFf@wvlz~8*t44KEC#fPt2R3WZfhU@tE-k%<8WQiCRrhnE$q8q*DB_8KG$>iZNmBs
zKZAnZBff1V&h47Dge?V4=jpSxv`;aECpo8=FS|~CI|tL?7Ft#1CCYyKrRP^WN*fzD
zx#VGsKbYm-XA#bcgYflEgUVs4;=unt@3*EfXvlY-x%1+ychU3v-|})!5FBQBoTm&{
zk-{x6y#^o%l{==lw4F8MRZ>*%6X-l5vKM!#cP{5y_VX0Z
zbA1YuZf5$KuNU~j)rHsAw^=-zP<~83jB{>rPY63!^Xf$g?_m8!Kx`0E%rj0+;ycYu
z0tS&h_+{8>(wC@jMp-eCtVMNyrVPs2QMlTtHH&$ydA1hLrM&AnUNPd;z!$Smhk2}0
z@2J(RNBBH`=fh_=w$GRUbPKoAYv_SVi|equ_QMyQegbIfG&zoDPWz1~Z0<2Oned8C
zB{GU4zD4CAL4^n1s#74@I7hAP=*Mu-q{Lr5P*v*KtwD8@kLP(n=Sy3`UMvr1>s$P@
z9GLuB?b~ix>WRu!3CW39O~qDd1Hz8?!o|<>VTpsX)d7{ZFp2v7*d6Rm(f8IH<@6IJofBZCB$yL~K&aTK`@8Nce_mCmv6StT7w5?NE2qbvH^Ifixrt}3LVtoDZw{nNT`Zk<+-BEI
zaVk-+aybXj`?QTLv?Nd;>4`)WpLQSpvX>49Z;j@|+e+t!9%QCwIu>l0bq9-0O7XO=
zDn6e!D$;Yx+Clq+I)t+ap*+X8INvW{Z=URlbn0C@ntd)j>V@9m0pzp(<}aUr_{aY!
ze*TEEqprdqwEi9{!ntFAnUnN=u-LuN8!)J6CiU~j-+prc{onu1KlxApll|u(-NT$c
z=X7OOL8>YN-qgq5Dn5M%Oxa_XJ=WQ3d&&=?a?sEZLEmTjG~=Wz9)F36xZxqw-#1Nx
zc%nbm6&fYZF$Mh28&^Orti*CgW#rQh%b
zJE6>d><{ZYA5fb?f0T(0ZEDb@S6QiaHQZ0tA0GtenaxIqEaXC}W6l^lj+G;-5Szz7Upq0YOFq8pwH`B$g{+$5@
zc+=VH@Z+)@B$Sv|C(iMgXrGq81|AQuHgzLHtL!eNx}piZW^&-0Jd_0Lf{&&4Fa2wv
z6buX}Y5-({*KvWboE7)-S!pnM+4)y_&9Sf@S%qY>Xt)4;;?n9N>@n*wqfU!
zD)xo_zBpijS;sRjuciSuo^>tnJ>#%!7%yg>KHQAD+Du&kXYyWi4zamXQJ3MndVuJX
z4+YG6hKwP=X_XW7J9Wt}jTw3i0P<8pa$%_~C%)C^8JCPLu;Koa7s-O7S!VMK)*IwF
z7h&dxwyZYn^|8{Z8`IQ-Id}T);gijh<6QP3gv{pyYSwFY29%{8CyE$S;8ScgAm
zd0alO?GLer3iDk|fBb33J+S@7+Vh+-P4oIJUOwH^(0<7SwXP1yYlP&0W+2MtApJ{g99~Sl(alsY!H5v6e3{qlc#3gDgVQLQB{6=w17&
z%D6^<&x5uxML-FyvoKe2HIR@xaHBQQnVSfiwT1nQUAUEdKEp!VNq^fg5=6x7nP2;Tfr>rc{#|u9^U$3
z7Tq-4D#9JiIr@7~Xln9Tk296b)FFouTfmIwJ3QOrPmqVMsRgH?b5NdQt*`bTa*_JH
z9X$Rx+hgZbMeYMJy}^wKfA~HQf2cSqf;0nM7neQ8M|g*MB39U(A)1gibte16i)06K
z*x6EkgqR&ZZD`ojr`R=!F7|;U&9=#Hk==Wa6HSLHRZUTCXVI%L9G%a{7x
zC(0b#2@1v%W{O#JUBeXCvCDz?sku=?f2-s?r0Cu1luan+`?r2nm-O&EnuAR8`Oz5Y
zz{{cJN1r$Sy*}$G@AkJG_ub@h?pKN7p%dkMK%T*B7hV|GEpmd@4t1NSerUFirb-H@
zd~SSin|%$}JoZy`?n<(Raw?wM)(zqiP1RVW5o+H&cd%6bKc(~P&Pw>$oajBqEZ)`S4oeR5OR~rnj
zLKm7fgcCyC6@7`025Igk38H2E@7;~PVNXM^x@xzux8~_P0$9;M;yq0$Z5ENH08>b2fCarzE6#&9(ehX$
zkwzH0N;l~K@N`K3e&D%#@P{v$*mZ~OWG(!x!`^7~O0$y(=csqS53O
zD}ecUa~8aKK4~=cSfID{+K1FNuT|0A4#!#4zGQ}-8+Ppaasm>^IkL(@>`o605f2AR
z+IMM=et(bU`dN;)bi%P2h`0)oH4=xE5%E#7GA&gloO{L*?Z%%
zM50l}nZAXQ&)}Um4z>QCGlF}|_k16{JIUn!PLA%BnmhK)w-2U0PXz&*>kqG{QIk{?}{ku!e{{CXV^@&j*t<;?DKdYvF0qo)jPwQv*XP7
z2KQfmg7?_%k#|9jGBERuaeAo2S%O3*VO+$L+6CB0dt@|Cx8DdieTd(`L)hIPvVYJM
z2PiYRJMqKgDUL2F%XcYZwY$1qf)m1&{rhxS>sx^y$!#|4ZFZX(26WkQwv&ZH(jGN_
zp`Ds)s*9qovex)G%=%v`u~Of!dGURoQ)5B)n$A8+qZfmiCk^hL?X(j6#>(YAPhNP*
zMi~iF@u?dhsBAl%J%yAS2aRgGquqbj6@abhD}O#mQ2i5A$8$ee5X}y^%P^N+t)lI-UL8ctUXfa>
z&S;r)ZBDdxagn;t`~}Pt;|GWj(T~k+*QooTz=%GZsok7UJK^=b#C_Id5Shz90#i*O
zp3l*qSi7P>#?(hATJNGWp$ZLxGE@qS$7(C*NGWWL-aXaPJ$8?Nk@AKw-skRah)lGM
zLOr^t{V7nQ`%^bE#PRU&a}u#CcH2Yt+Xl{qHY}h8pre|5a!P$^|4NuIn-JkK7#ah^NuxdVZBKM5
zDd_>~tTa{WT*4YFPToHvj<^$MS?>BscphvAdy`V!Hu*@0ZrgV`$q
zTg)D`1P@{%HAvSZg#!9c{%t#aOq+oV`@IO%gn)QSZ>#8rYOcVH6T?*2`YO0OQ|!Lz
zbQ*nJT8g3v2u^}k9ET-8e@K!CH=(ZT42csRaY56?ehP!Zv;F?;wgDMylLcF}gB#4$
zE#W4x$QNAKs2sqkITXx+c<~Wa;scT!RUG%3xWQapaLky_u^mK;)yUCa4ydv1X*zB(
zbE?jCvd@D3LqM&-UTK_!)!(zqcb=~D!)KZ6^83mhuu#8H*BC6x4TZVGbXHyUagzqf
zh=UW{B@mu6odX|KY`be{#!E_#X+M5_duwR7#n!^a
zz=T@Lj1-<#v>QYj5~N!wOig9X!NOn+oxqG7b7(qiT@+|za#f0E#3I;n^~Liytfz7O
z-KlNpB(&$tA
z7M0HzI2`1-ru~jhybgAmAhNKWDSt=@h!SDgKrurY?L15zw;7ksi4iN@=ioLvB5xL7
zP#|3{lEKRuqw6>Q&}2NB@VHTwZyM~}n0rAZXMo9wMq;2}_maj^KaY36V>Mll7b
zqUXB(3!-RwyP4!=D9u%|IAJpc%DKMqcEazt+=g!YF&5TxFK)kWW3OnXVQ<0L++r7}
zP9@cxSC@$W?tP#NB{yChpwchw!ZFZGe_PUkn)crC=8)$;3XtFpb9yNd%vMo6mw8Kc2XXCw_lN01vg@jjYhXe
zg?Sw+LIWyX`ga3)w21e{&Bg`pa_Mb3QJvWCuP}f0SB=fCjSh3fyza^pHc)f=6DBUT
zteLE+mpcvN&L}-~g=Tf;?`yfZ*j-87z%uDmTG~UQ!At{0#~{ggq0R0s|GsD8F5M1L
zhJa>}!I)02>6SPys&UYSvw$dPke5iui@atpebY8=_HYCYoyH~)dHX=zx1cs9Pc69O
z8To1-E@;y<6y@$Isu=WF)@4j8Ca0Y3hG0A+KAinH&K+6Tc-V<{d7->esMPR&VWhP**Vn=-eG%l%C;8EROYxAw=vye)P3&>HbxuTY+YFVB%P?}nl4ot}P
zIp-ua82Tc(Zu_ojZ90uc!r*`|=;hH@BfTS&%_{P|K?HYM5hpgo`R#1`GLkSqC@AEm
zOEBZ_k|Irr2jcGEWJYK}VH^Z1aA+^#?Il;s<&!$EzvwPIT$D8DF2<>h6=9Yw5D6#u
z;3Z92U$GB6K>z>{07*naROT5dKC1cUa3W`%=rWU17s*IvWcEDXpywr5*3OgiIqYEt
z>23Xy_g*3^S6*ffr3{R$tDJqU-T}p=4XcY0Q@)C>y#mFKj*n|LC^pw54TMvX3$pZO
zFGcYxes8zezWAsm&jXKG+eojiwU2n{IQzog-f^9X%AT~Wm)wy
zb-M;)(R{GO@$0AN2R$TFwdJG|@xgXscS=7+W`Ev|Fo0BLOjXP%6=XSX!OS*slI3XVepNN$5L;!
z4PdRyaizD~<_eCV*-w#~R@Z(d&mB`t4e6aCLnmglmBN%UZL!*c4cai_o(&IEN}$`j
zAqD)boA3{OYrLx(CZOBIeQmoGO{#9)<|akL*@WinW&B;XMgny(69_
z{%d2RMJw4XslDMD5S%*M=7wMGo$*&(7H8D;;?PkoHhZHiEs{K-mlX&XxA=zh4ThGs
z=%B=e0c+e78D{4(I8T(B*->35qD#H<56X-=V#8N;9{O}AN`W)II<_M)gYVRp5E3`b
z?dmb0By=M)9oS=Pyky=~O*$@SFQnyB$kBAv4`+VnvbV5{&Ym1S}r3t*egA
z%OmeH%S(L^Aj;N{8)$AKaS81=IIoP|?q_@8lKO~lTmGm&u!I8FVx
zw3f|1+(ECBQylh&dD35vXkHendagl3{Mj?>YG(yGg+|%#kDXna1lLz!elVt%15K9&!liOs7BfRyU2EkuS$U+X7`hs(oPO
zqZWl0a#~Ka@DApwvc@{*fQGeJvAA}FA{_%{2g$dgEImoXJsaPRbT;C0<*O{uPOxMR
zvo=Yi;$wdd0_K|f=4I6hE`aEzV(Lr8`6V;;uot5pVfk?(BIfCnx7olsqZ#?550XM}
zA+3B`yBH08?&0jUwq9rqxe*hImvetQ^{kwmO4JOHC@MLOh>G7H%nf#*@!E8OMOlo4k5?Mt{ya^gx)
zzWFwa7HT6dN4nRSng5pgF*XGwCf~CI!^%ee-tbf@>EI3=vnP4WC}j0@fJ5(y#x-E7
zDDBRI|LCz^n@QUl^-{j26y|rm$4)BgO%GEW*x;FsO|nOlF#TCzg(GQMga?crl~*^G
zc>RoMCNbQ_oXJPAbsu`|7&vv%<841qD8RYI1o+6e*rumgv(*&U!YfVG8fC_{*YK!*
zg71oCJ&60M)4grEUa%P$yqA@%^2)s8
ztBgxf*z-Q;25F$Fq=ykPm|a3#ma6?kZd#w_c$`=c#k7dKpmryln58CB5inz1<4#>7
z&B$WBvuN^RA&?<^$+%728OFg5Fd3~g^Ms_aEHUqToB0=`SL)47vuHF^wzf&pRS8=L
znp;sDg%!Ph#wB?0VTypqRc5O$qgtojyvH~BZXwJml$OY-A@_@8R%vJ3mE1@?ZcF2p
zm-9AMPAfgS$QwcKF8wgiZd0+GS
zO{cIX_U58d0hDvdFPpJnZEBXx(nP>PY%#ZnP|!xFjpUeu(3j=K-9ewDVBu&Q$|cSP
zb#QA*D{~`7R~mBWo+EL&$MY)XjltVqd-M*@8DDv3Q(?>=wX2*n{7UTFz-j3}rp#6L
zmnBC&__|3X;oMHoCv1Ml$`9ND-s#h%;`6sHea#I7LK(TO25eIaRpC0GQo(D)_CLdO
zUKpDiFVVsYGHmLpkgvhYa;#rAl2^>B1Mz${oJ`F&XE12Ob@{)@Z=5-Sw~Z&_YA$Iq
zc?HeB)+|77^X60Vg`eU#yqc|BBe%yZRhIEe87vXZW+(`W65E*O0btb`%)6~7)T%P8
zYP#9Gwtd>(R1TROu6TLKxb~;fjWe@CPB6P*l&F4VyrxhQnfJsJV-^t!6ewC9V4z&3
zWDDs*E~dUKlGgH9T8v+1_=Frsr_+-%F2#li)|xH3x>fpF5qAQ>UtW}2EOA`k48HAF
zAk&;WG%KH5rU!S?N)lBsU(CIW
zYh+I#h+BDgm=1%On|xr>g=>H{>5+M_VL644a1u@|dXd>MS5j20wso$S%egMoXD6lL
z&{Vkx!cwVxAFGSSWM^1jrO|5BH~|WevKceE6PMM-mE)Sw<&PZv3YotIMd#%>xA0m*
zS3#Bqnm%0+h}k*VSYxWOwG4<^>r$h$#nZUD{VMuQ8D@orJ1a7+JoEA1ZS)xRsf@2v
z5@Aw}BieR2b}LhIS(#2mJH%t-MxYdyu2Gc=ePO%|Nfu4o>th;s`J+^MgaQpQM?bF&m~x!2K+FrJ77@}UDs^>&K0zH0hK0~A)$Tms_IQDib_?s5Cf1Ktf
z=_}n)0fn5}BM8d#kn?w&I
ztPTInM3T+$WR14qcDPV~kje$GIPXX5chn(0X9b9WJ4dF;H91%=^@LZZbALA1zNP_}
zux@boiAs5(-~rk6oQXS}Q^$8=RJbg4Dz}^BfQDVZR>uHrd~D2HB`kJK5|6OR7*ggW
z#`B=UKrp>krCC;|=AF|m*@&@mCR1K}f}u7nGM8)!*BvbFI+|{B)~I+nWu@VeRTs#e
zQg(IS?A*L_Pc~JQFL5zR)RrTFlf})$_kEU``PmJN=cV(?a4jD#j-##+=NvZay3#32
zq;yKFG|wQ#Bh3Jk8l`koYl;t#i6i|Qqe7BnYt@``QQkgbX_*g`eJWZZq!J38p;`uM
zT4sT$TkX4+cQ)fKr;p2Rt;{9FoyqRA#1+ix6d|c_(clO