 

## 什么是Shell？

是一种程序设计语言。

Shell 是指一种应用程序，这个应用程序提供了一个界面，用户通过这个界面访问**操作系统内核**的服务。

Bash（GNU Bourne-Again Shell）是一个为 GNU 计划编写的 Unix shell，它是许多 Linux 平台默认使用的 shell。

shell 是一个命令解释器，是介于操作系统内核与用户之间的一个接口层。它也是一种能力很强的计算机语言，被称为解释性语言或脚本语言script。可以通过将系统调用、公共程序、工具和编译过的二进制程序“粘合”在一起来建立应用，这是大多数脚本语言的共同特征，所以脚本语言又被称为“胶水语言”。

Shell是系统的用户界面，提供了用户与内核进行交互操作的一种接口(命令解释器) 。它接收用户输入的命令并把它送入内核去执行。起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。 



![img](data:image/png;base64,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)

Python、PHP、Perl、javascript等都是脚本语言，解释执行，有相似的基本特征。

| 特征           | 说明                         |
| :------------- | :--------------------------- |
| **解释执行**   | 无需编译，由解释器逐行执行   |
| **灵活性高**   | 动态类型，代码结构简洁       |
| **开发效率高** | 适合快速原型开发和自动化任务 |
| **可移植性好** | 依赖解释器，跨平台相对容易   |



事实上，所有的 UNIX 命令、工具再加上公共程序，对于 shell 脚本来说，都是可调用的。Shell 脚本对于实现管理系统任务的自动化和执行其它重复性工作来说，非常适合，灵活强大，比编写编译型程序更加高效灵活。

| 类型           | 位置                                                    | 说明                                                | 示例                                              |
| :------------- | :------------------------------------------------------ | :-------------------------------------------------- | :------------------------------------------------ |
| **内置命令**   | Shell 内部                                              | 出于效率考虑，直接构造在 Shell 内部，无需创建子进程 | `cd`, `echo`, `exit`, `export`, `source`, `alias` |
| **外置命令**   | `/bin`, `/sbin`                                         | 基础系统命令，通常随系统安装                        | `ls`, `cp`, `mv`, `cat`, `mkdir`                  |
| **实用程序**   | `/usr/bin`, `/usr/sbin`, `/usr/share`, `/usr/local/bin` | 扩展工具和应用程序                                  | `grep`, `sed`, `awk`, `find`, `tar`               |
| **用户程序**   | 任意路径                                                | 用户编写的编译型程序（C/C++/Go 等）                 | `./myprogram`                                     |
| **Shell 脚本** | 任意路径                                                | 用 Shell 语言编写的批处理文件                       | `./myscript.sh`                                   |

验证命令类型

```bash

type cd       # cd is a shell builtin（内置）
type ls       # ls is /bin/ls（外置）
type grep     # grep is /usr/bin/grep（实用程序）
type myscript # myscript is ./myscript.sh（脚本）
```







命令的多种执行顺序控制

| 操作符 | 含义                           | 示例                       |
| :----- | :----------------------------- | :------------------------- |
| `;`    | 顺序执行，无论前一条成功与否   | `cmd1 ; cmd2`              |
| `&&`   | 逻辑与：前一条成功才执行后一条 | `make && make install`     |
| `||`   | 逻辑或：前一条失败才执行后一条 | `cd /tmp || echo "failed"` |
| `&`    | 后台执行                       | `long_cmd &`               |
| `|`    | 管道：前一条输出作为后一条输入 | `ls | grep txt`            |

| 特性           | 说明                    | 示例                                        |
| :------------- | :---------------------- | :------------------------------------------ |
| **通配符**     | 匹配文件名（路径扩展）  | `*` 任意字符串 `?` 单字符 `[abc]` 字符类    |
| **命令补全**   | Tab 键自动补全命令/路径 | `ls /usr/l` → 按 Tab → `ls /usr/local/`     |
| **别名机制**   | 为命令创建简短别名      | `alias ll='ls -la'`                         |
| **命令历史**   | 记录已执行命令          | `history`, `!!`, `Ctrl+R` 搜索              |
| **I/O 重定向** | 改变输入输出方向        | `>` 覆盖 `>>` 追加 `<` 输入 `2>` 错误重定向 |
| **管道**       | 连接命令，数据流传递    | `ps aux | grep nginx | wc -l`               |
| **命令替换**   | 命令输出作为参数        | `echo $(date)` 或 echo \`date`              |





**都有哪些shell？**





| Shell 名称                    | 描述                                                         |
| ----------------------------- | ------------------------------------------------------------ |
| **Bash (Bourne Again Shell)** | bash 是大多数 Linux 系统的默认 Shell。bash 与 bsh 完全向后兼容，并且在 bsh 的基础上增加和增强了很多特性。bash 也包含了很多 C Shell 和 Korn Shell 中的优点。bash 有很灵活和强大的编程接口，同时又有很友好的用户界面。 |
| **Ksh (Korn Shell)**          | Korn Shell (ksh) 由 Dave Korn 所写，它是 UNIX 系统上的标准 Shell。在 Linux 环境下有一个专门为 Linux 系统编写的 Korn Shell 的扩展版本，即 Public Domain Korn Shell (pdksh)。 |
| **tcsh (csh 的扩展)**         | tcsh 是 C Shell 的扩展。tcsh 与 csh 完全向后兼容，但它包含了更多的使用户感觉方便的新特性。其最大的提高是在命令行编辑和历史浏览方面。 |

（sh、bash、ksh、csh等）

登录login：stu01

password：student01

  注意：case sensitive(uppercase/lowercase)

提示符  #、$

注销 exit/logout/Ctrl+D

重启动 reboot

关闭系统 poweroff

 

###  shell脚本

查看系统中目前可以使用的shells

Cat /etc/shells

切换到sh模式

Sh

退出sh模式

exit

学习一门语言习惯与先写一个HelloWorld的程序，这里就写一个HelloWorld的脚本。下面启动 vim 编辑 hello.sh 脚本文件。后缀名“.sh”不是必须的，但是更容易表示这是一个脚本程序文件。 



```bash
vim hello.sh
#!/bin/bash

# This is a comment

echo Hello World
```

上述例子包含三行，以下逐行解释。

第一行以“#!”开头，说明脚本的解释器的路径位置信息。Linux 系统根据 #! 及该字符串后面的信息确定使用哪个解释器对该脚本进行解释执行。

上述例子中的 /bin/bash 就表明该文件是一个 BASH 程序，需要由 /bin 目录下的 bash 解析器来解释执行。BASH 一般是存放在 /bin 目录下，但是在有的发行版中，bash 也有可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或 /usr/local/sbin 这样的目录下，所以在“#!”之后要正确写出解释器路径位置；可以使用locate、find、which或whereis等命令找出确定bash的具体路径位置。也可以查看/etc/shells文件内容，确定bash路径。

另外要说明的是，该行要顶行顶格，前面不要有空行和空格。

第二行以“#”字符开头，表示其后的内容是注释，不需要解释执行。这些注释语句是在脚本中做一些注释或标记，让脚本更具可读性。

第三行的 echo 语句的功能是把 echo 后面的字符串打印到标准输出stdout。由于 echo 后跟的是 "Hello World" 字符串，因此执行echo命令的结果是在终端上输出了 "Hello World"这个字符串。Bash脚本每行一条命令，无需“;”结束。

**命令解释过程**

```mermaid
graph TD
	A["用户输入命令"] --> B["提交给Shell"]
	B-->C{"是否为内置命令"}
	C-->|是内置命令|D["内核中的系统功能调用"]
	C-->|是外部命令或使用程序|E["在系统中查找该命令的文件并调入内存执行"]
	E-->D
	
```



当命令不在命令行中执行，而是从一个文件中执行时，该文件就称为 Shell 脚本。

Shell 脚本是纯文本文件。

Shell 脚本通常以 .sh 作为后缀名，但不是必须。

Shell 脚本是以行为单位的，在执行脚本的时候会分解成一行一行依次执行。

Shell 是一种功能强大的解释型编程语言

通常用于完成特定的、较复杂的系统管理任务

Shell 脚本语言非常擅长处理文本类型的数据

shell脚本的成分

程序元素

保留字、运算符、表达式

变量、数组、输入输出

控制结构（顺序、分支、循环、子程序调用）

Shell功能 

执行命令（内置命令、外部命令、自编程序）

重定向、管道、命令替换、命令聚合

通配符、注释符、……

Shell 脚本的建立

使用文本编辑器编辑脚本文件

`$ vi script-file`

为脚本文件添加可执行权限

`$ chmod +x script-file`

Shell 脚本的执行



```bash
在子Shell中执行
$ bash script-file

$ ./script-file

在当前Shell中执行

$ source script-file

$ . (空格) script-file
```





PATH 环境变量的默认值不包含当前目录，

若脚本文件在当前目录，应使用 ./script-file

PATH 环境变量的默认值包含 ~/bin 目录，

用户可以将自己的脚本文件存放在 ~/bin 目录，

之后即可直接调用脚本文件名执行脚本了

**shell脚本的编码与规范**

以 #! 开头：通知系统用何解释器执行此脚本

\#!/bin/bash

\#!/bin/ksh

以注释形式说明如下的内容：

\# 脚本名称

\# 脚本功能

\# 作者及联系方式

\# 版本更新记录

\# 版权声明

\# 对算法做简要说明（如果是复杂脚本）

脚本调试

在 bash 调用脚本时使用参数

`$ bash [-x] [-n] [-v] scriptName`

在脚本中使用 bash 内置的 set 命令使整个或部分脚本处于调试模式

开启：set [-x] [-n] [-v]

结束：set [+x] [+n] [+v]

sh –x 脚本名

该选项可以使用户跟踪脚本的执行，此时 shell 对脚本中每条命令的处理过程为：先执行替换，然后显示，再执行它。

shell 显示脚本中的行时，会在行首添加一个加号 “ + ”。

sh –v 脚本名

在执行脚本之前，按输入的原样打印脚本中的各行

sh –n 脚本名

对脚本进行语法检查，但不执行脚本。如果存在语法错误，shell 会报错，如果没有错误，则不显示任何内容。

set命令

在脚本内使用set命令开启调试选项

set -x ：显示由shell执行的命令及其参数

set -v ：显示由shell读入的命令行

set -n ：读取命令但不执行他们，用于语法检查

在脚本内使用set命令关闭已开启的调试选项

set +x

set +v

set +n

**shell脚本的类型**

非交互式脚本

不需要读取用户的输入, 也不用向用户反馈某些信息

每次执行都是可预见的, 因为它不读取用户输入, 参数是固定的

可以在后台执行

交互式脚本

脚本可以读取用户的输入, 实时向用户反馈信息（输出某些信息）

这样的脚本更灵活, 每次执行时的参数可由用户动态设定

用户界面更友好，但不适用于自动化任务（如cron任务）



掌握一种文本编辑器的使用（Vi）

熟悉 Linux 文件系统的布局

学习 Shell 的各种功能

重定向、管道、命令替换、命令聚合

学习各种管理和监视命令的使用

用户管理、权限管理、进程管理、包管理……

系统监视、网络监视 ……

学习各种文本文件工具的使用

cat、grep、tr、sed、awk ……

正则表达式



**Shell环境**



```bash
运行脚本有多种方法：

\# 使用shell来执行

sh hello.sh

\# 使用bash来执行

bash hello.sh

\# 还可以赋予脚本所有者执行权限，允许该用户执行该脚本

chmod u+rx hello.sh

./hello.sh
```

- Shell 看到这是一个可执行文件路径
- 会执行标准程序加载流程：`fork()` + `exec()`
- 必然创建子进程



```bash
\# 使用.命令来执行，不创建子进程

. ./hello.sh

\# 使用source来执行，与.命令等价

source hello.sh
```



**1.` ./hello.sh 报错 zsh: 权限不够`**

当你直接运行 **./hello.sh** 时，系统会尝试把 **hello.sh** 当作一个**可执行程序**运行，但要求：

- **文件必须具有可执行权限**（**x** 权限）。
- 如果文件没有 **x** 权限，就会报 **权限不够**（Permission denied）。

**2.` . ./hello.sh 能正常运行`**

当你使用 **. ./hello.sh**（或等价的 **source ./hello.sh**）时，Shell 会**直接在当前 Shell 进程中执行脚本内容**，而不是启动一个新的子 Shell。
 这种方式的特点是：

- **不需要文件有可执行权限**（因为 Shell 直接读取文件内容并执行）。
- 脚本中的变量、函数等会影响当前 Shell 环境（而 **./hello.sh** 不会）。

**为什么它能工作？**

- **.**（或 **source**）是 Shell 的内置命令，不依赖文件权限。
- 它直接读取文件内容并逐行执行，因此即使没有 **x** 权限也能运行。

如果想要保存脚本的输出 hello world 为一个文本，那么该怎么办呢？

 \#!/bin/bash

 echo "hello world" > my.out

用cat命令查看my.out文件的内容。

cat my.out

**关键区别总结**

| **方式**           | **是否需要 x 权限** | **执行环境** | **典型用途**                 |
| ------------------ | ------------------- | ------------ | ---------------------------- |
| **./hello.sh**     | **需要**            | 新的子 Shell | 运行独立脚本                 |
| **. ./hello.sh**   | 不需要              | 当前 Shell   | 加载环境变量或函数到当前会话 |
| **bash  hello.sh** | 不需要              | 新的子 Shell | 直接指定解释器执行脚本       |

### 正则表达式

正则表达式是使用某种模式（pattern）去匹配（matching）一类字符串的一个公式。

通常使用正则表达式进行查找、替换等操作。

在适当的情况下使用正则表达式可以极大地提高工作效率。

有两种风格的正则表达式： 

| 风格            | 全称                                | 特点                                         | 典型命令/工具                                                |
| :-------------- | :---------------------------------- | :------------------------------------------- | :----------------------------------------------------------- |
| **POSIX**       | Portable Operating System Interface | 基于Unix/Linux标准，分为基本和扩展两种       | `grep`, `sed`, `awk`, `vi`/`vim`, `emacs`, `ed`              |
| **Perl (PCRE)** | Perl Compatible Regular Expressions | 功能更强大，支持更复杂的匹配（如回溯、断言） | `grep -P`, `pcregrep`, `perl`, `php`, `python(部分库)`, `js` |



POSIX 标准的两种模式

| 模式    | 全称                                        | 特点                                        | 对应命令                         |
| :------ | :------------------------------------------ | :------------------------------------------ | :------------------------------- |
| **BRE** | Basic Regular Expression                    | 元字符 `( ) { } ? + |` 需要转义才有特殊含义 | `grep` (默认), `sed`, `vi`/`vim` |
| **ERE** | Extended Regular Expression扩展的正则表达式 | 元字符 `( ) { } ? + |` 直接使用即有特殊含义 | `egrep` (或 `grep -E`), `awk`    |

| 元字符   | 在 BRE 中（需转义） | 在 ERE 中（直接使用） | 匹配示例   |
| :------- | :------------------ | :-------------------- | :--------- |
| 括号分组 | `\(abc\)`           | `(abc)`               | 匹配 "abc" |



常见文本处理工具与正则引擎

| 工具       | 常用风格                            | 用途说明                                       |
| :--------- | :---------------------------------- | :--------------------------------------------- |
| `grep`     | BRE (默认), ERE (`-E`), PCRE (`-P`) | 全局正则表达式打印，用于过滤/搜索文本          |
| `egrep`    | ERE                                 | `grep -E` 的旧式写法，支持扩展正则             |
| `sed`      | BRE (可启用 ERE 部分特性)           | 流编辑器，用于文本替换、插入、删除             |
| `awk`      | ERE                                 | 强大的文本处理语言，擅长结构化数据处理         |
| `vim`/`vi` | BRE (部分增强)                      | 屏幕文本编辑器，在命令模式下用 `/` 或 `?` 搜索 |
| `emacs`    | 类似 ERE 但有自己的语法             | 另一款强大的屏幕编辑器                         |
| `ed`       | BRE                                 | 行编辑器，`sed` 的前身                         |





在 Shell 中有一些具有特殊的意义字符，称为 Shell 元字符（shell metacharacters）。 

若不以特殊方式（使用转义字符）指明，Shell并不会把它们当做普通文字符使用。



一、引用类（控制字符解释方式）

| 字符 | 名称             | 含义                                         |
| :--- | :--------------- | :------------------------------------------- |
| `'`  | 单引号（强引用） | 内部所有字符失去特殊含义，保持字面量         |
| `"`  | 双引号（弱引用） | 除 `$`、```、`\` 外，其余字符失去特殊含义 \| |
| `\`  | 反斜杠（转义）   | 取消下一个字符的特殊含义                     |

------

二、命令控制类

| 字符         | 名称       | 含义                                 |
| :----------- | :--------- | :----------------------------------- |
| `;`          | 命令分隔符 | 顺序执行多条命令，不管前一条是否成功 |
| `&`          | 后台运行   | 将命令放入后台执行                   |
| `\n`（换行） | 命令结束   | 表示一条命令的结束                   |
| 空格 / Tab   | 空白分隔符 | 分隔命令、选项和参数                 |

------

三、逻辑运算符（条件执行）

| 字符 | 名称   | 含义                                     |
| :--- | :----- | :--------------------------------------- |
| `&&` | 逻辑与 | 前一条命令成功（退出码 0）才执行后一条   |
| `||` | 逻辑或 | 前一条命令失败（退出码非 0）才执行后一条 |

------

四、管道与重定向

| 字符 | 名称           | 含义                                         |
| :--- | :------------- | :------------------------------------------- |
| `|`  | 管道           | 将前一个命令的 stdout 作为后一个命令的 stdin |
| `>`  | 输出重定向     | 将命令输出写入文件（覆盖）                   |
| `>>` | 输出追加重定向 | 将命令输出追加到文件末尾                     |
| `<`  | 输入重定向     | 从文件读取输入作为命令的 stdin               |
| `2>` | 错误重定向     | 重定向标准错误输出                           |
| `&>` | 全部重定向     | 同时重定向 stdout 和 stderr                  |

------

五、变量与替换类

| 字符     | 名称             | 含义                               |
| :------- | :--------------- | :--------------------------------- |
| `$`      | 变量替换         | 获取变量的值，如 `$HOME`、`${VAR}` |
| ``cmd``  | 反引号命令替换   | 执行命令并用输出替换（旧语法）     |
| `$(cmd)` | 美元括号命令替换 | 同上，推荐语法，支持嵌套           |

------

六、通配符（路径展开）

| 字符            | 名称         | 含义                                 |
| :-------------- | :----------- | :----------------------------------- |
| `*`             | 星号通配符   | 匹配任意字符串（包括空字符串）       |
| `?`             | 问号通配符   | 匹配任意单个字符                     |
| `[ ]`           | 字符类通配符 | 匹配括号内的任意一个字符，如 `[abc]` |
| `[! ]` / `[^ ]` | 否定字符类   | 匹配不在括号内的任意一个字符         |

------

七、特殊路径与分组

| 字符  | 名称                | 含义                                                       |
| :---- | :------------------ | :--------------------------------------------------------- |
| `~`   | 波浪号展开          | 代表当前用户的主目录                                       |
| `( )` | 子 Shell            | 在子 Shell 中执行括号内的命令列表                          |
| `{ }` | 花括号展开 / 代码块 | 生成字符串组合（如 `a{b,c}` → `ab ac`）或当前 Shell 命令块 |

------

八、注释

| 字符 | 名称   | 含义                                          |
| :--- | :----- | :-------------------------------------------- |
| `#`  | 注释符 | 其后内容被 Shell 忽略（交互式命令行中需注意） |

- **默认不匹配以 `.` 开头的隐藏文件**（如 `.bashrc`），除非显式写 `.*`
- `*` 能匹配文件名中的 `.`（如 `a.b` 能被 `*` 匹配）
- 使用 `set -o dotglob` 可让 `*` 匹配隐藏文件



正则表达式元字符（用于文本匹配）

| 功能       | BRE（需转义） | ERE（直接写）              | 含义                       | 示例匹配                                 |
| :--------- | :------------ | :------------------------- | :------------------------- | :--------------------------------------- |
| 任意单字符 | `.`           | 匹配除换行外的任意单个字符 | `l..e` → love, live        |                                          |
| 行首       | `^`           | `^`                        | 匹配行开头                 | `^hello`                                 |
| 行尾       | `$`           | `$`                        | 匹配行结尾                 | `world$`                                 |
| 零次或多次 | `*`           | `*`                        | 匹配前一个元素 0 次或多次  | `go*` → g, go, goo                       |
| 一次或多次 | `\+`          | `+`                        | 匹配前一个元素 1 次或多次  | `go+` → go, goo（不匹配 g）              |
| 零次或一次 | `\?`          | `?`                        | 匹配前一个元素 0 次或 1 次 | `colou?r` → color, colour                |
| 精确 n 次  | `\{n\}`       | `{n}`                      | 匹配恰好 n 次              | `go{2}gle` → google                      |
| 至少 n 次  | `\{n,\}`      | `{n,}`                     | 匹配至少 n 次              | `go{2,}gle` → google, gooogle            |
| n 到 m 次  | `\{n,m\}`     | `{n,m}`                    | 匹配 n 到 m 次             | `go{2,4}gle` → google, gooogle, goooogle |
| 分组       | `\(\)`        | `()`                       | 将部分正则作为一个单元     | `(ab)+` → ab, abab                       |
| 或         | `|`           | `|`                        | 匹配左边或右边             | `cat|dog` → cat 或 dog                   |
| 字符类     | `[abc]`       | `[abc]`                    | 匹配任意一个列出的字符     | `[aeiou]` → 任意元音                     |
| 排除字符类 | `[^abc]`      | `[^abc]`                   | 匹配不在列表中的任意字符   | `[^0-9]` → 非数字                        |
| 范围       | `[a-z]`       | `[a-z]`                    | 匹配范围内的任意字符       | `[A-Za-z]` → 任意字母                    |
| 转义       | `\`           | `\`                        | 取消元字符的特殊含义       | `\.` → 匹配点号本身                      |



```
用户输入命令 (如 grep 'pattern' file)
        │
        ▼
[ 1. Shell 解析阶段 ]
处理: 变量替换($var)、命令替换(`cmd`)、通配符(*.txt)、管道(|)、重定向(>)、后台(&)...
保护: 单引号 > 双引号 > 反斜杠
        │
        ▼ (处理后的参数传递给命令)
[ 2. 命令执行阶段 (如 grep/sed/awk) ]
命令内部根据其风格 (BRE/ERE/PCRE) 解释正则表达式元字符
        │
        ▼
输出匹配结果
```



$ 代表变量值置换

```bash
# 定义变量
myname=bigdata

# 使用 $ 获取值
echo ${myname}    # 输出: bigdata
echo $myname      # 输出: bigdata（大括号可省略，但推荐保留以明确边界）
```





**`${var}` vs `$var`：**

- 大多数情况等价
- `${var}` 可以明确变量边界，避免歧义：`echo "${myname}_suffix"` 输出 `bigdata_suffix`
- `${var}` 支持更多高级操作（如 `${#var}` 获取长度、`${var/pattern/replace}` 替换等）





`$PATH` 是系统环境变量，定义了 Shell 查找可执行文件的目录顺序。

```bash
echo $PATH
# 输出示例: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
```

**作用：**

- 输入 `ls` 时，Shell 会依次在 `$PATH` 的每个目录中查找 `ls` 命令
- 避免每次都要输入完整路径（如 `/bin/ls`）



Shell的特点

| 特点                 | 说明                                                       |
| :------------------- | :--------------------------------------------------------- |
| **解释性**           | Shell 脚本逐行解释执行，无需编译                           |
| **速度慢**           | 相比编译型语言（C/Java），解释执行效率较低                 |
| **组合、灵活**       | 可将多个小命令通过管道、重定向组合成复杂任务               |
| **Tab 键与历史命令** | Tab 自动补全命令/文件名；`history` 查看历史，`Ctrl+R` 搜索 |





| 概念       | 说明                           | 执行方式                                                     |
| :--------- | :----------------------------- | :----------------------------------------------------------- |
| **脚本**   | 包含多条命令的文本文件         | 在子 Shell 中执行（`bash script.sh`）或在当前 Shell 中执行（`source script.sh`） |
| **函数**   | 脚本内定义的代码块，可复用     | 在当前 Shell 环境中执行（除非在子 Shell 中调用）             |
| **子程序** | 任何被调用的外部命令或子 Shell | 在子进程中执行，不影响父 Shell 环境                          |

```text
用户输入命令
      │
      ▼
1. 将命令行分成单个命令词
      │
      ▼
2. 展开别名（alias）
      │
      ▼
3. 展开大括号声明（{}）
   例: echo {a,b,c}.txt → a.txt b.txt c.txt
      │
      ▼
4. 展开颚化声明（~）→ 替换为用户主目录
   例: cd ~/Documents → cd /home/user/Documents
      │
      ▼
5. 命令替换（$() 或 ``）
   例: echo $(date) → echo "Sat Mar 29 10:00:00 CST 2026"
      │
      ▼
6. 再次把命令行分成命令词
      │
      ▼
7. 展开文件通配（*、?、[abc] 等）→ 路径扩展
   例: ls *.txt → ls a.txt b.txt c.txt
      │
      ▼
8. 准备 I/O 重定向（<、>、>>、|）
      │
      ▼
9. 运行命令！
```

 通配符（`*`、`?`）和花括号（`{}`）是由 **Shell** 展开的，而不是命令本身。

### export命令——管理全局变量

| 变量类型                 | 作用范围              | 子进程能否继承 |
| :----------------------- | :-------------------- | :------------- |
| **局部变量**             | 仅当前 Shell          | ❌ 不能         |
| **全局变量（环境变量）** | 当前 Shell 及其子进程 | ✅ 能           |

查看当前Shell可见所有全局变量

```bash
export -p      # 显示所有导出的环境变量
# 或
env            # 显示所有环境变量
```





| 用法                 | 命令格式           | 示例                                   |
| :------------------- | :----------------- | :------------------------------------- |
| **定义并导出**       | `export 变量名=值` | `export PATH="/opt/bin:$PATH"`         |
| **导出已有局部变量** | `export 变量名`    | `myname=bigdata` `export myname`       |
| **取消导出**         | `export -n 变量名` | `export -n myname`（变量变为局部变量） |



## 变量概念

Shell 变量就是计算机中用于记录一个值（不一定是数值，也可以是字符或字符串）的符号，而这些符号将用于不同的运算处理中。通常变量与值是一对一的关系，可以通过表达式读取它的值并赋值给其它变量，也可以直接指定数值赋值给任意变量。为了便于运算和处理，大部分的编程语言会区分变量的类型，用于分别记录数值、字符或者字符串等等数据类型。Shell 中的变量也基本如此，有不同类型（但不用专门指定类型名），可以参与运算，有作用域限定。

变量的作用域即变量的有效范围（比如一个函数中、一个源文件中或者全局范围），在该范围内只能有一个同名变量。一旦离开则该变量无效，如同不存在这个变量一般。

Shell 变量大致可以分为三类

内部变量：由系统提供，用户只能使用不能修改。

用户变量：由用户建立和修改，在 shell 脚本编写中会经常用到。

环境变量：这些变量决定了用户工作的环境，它们不需要用户去定义，可以直接在 shell 中使用，其中某些变量用户可以修改。

变量的操作

变量替换扩展

变量测试

变量的字符串操作

变量的间接引用

变量的数值计算

$[expression] 

$((expression))

expr

let

declare -i

输入

变量赋值

name=value

readonly

从标准输入读取

read

输出

echo

printf



变量替换扩展

 

| **Use Default Values**             | **${var:-word}** | **若var存在且非空,则值为$var;若var未定义或为空值,则值为word，但var的值不变。** |
| ---------------------------------- | ---------------- | ------------------------------------------------------------ |
| **Assign Default Values**          | **${var:=word}** | **若var存在且非空,则值为$var;若var未定义或为空值,则值为word，且var被赋值word。** |
| **Display Error if Null or Unset** | **${var:?word}** | **若var存在且非空,则值为$var;若var未定义或为空值,则输出信息word，并终止脚本。** |
| **Use Alternate Value**            | **${var:+word}** | **若var存在且非空,则值为word;否则返回空值，但var的值不变。** |

 

 

字符串计数、截取

| **${#var}**         | **返回字符串变量 var 的长度**                    |
| ------------------- | ------------------------------------------------ |
| **${var:m}**        | **返回${var}中从第m个字符到最后的部分**          |
| **${var:m:len}**    | **返回${var}中从第m个字符开始，长度为len的部分** |
| **${var#pattern}**  | **删除${var}中开头部分与pattern匹配的最小部分**  |
| **${var##pattern}** | **删除${var}中开头部分与pattern匹配的最大部分**  |
| **${var%pattern}**  | **删除${var}中结尾部分与pattern匹配的最小部分**  |
| **${var%%pattern}** | **删除${var}中结尾部分与pattern匹配的最大部分**  |

字符串替换

| **${var/old/new}**  | **用new替换${var}中第一次出现的old**         |
| ------------------- | -------------------------------------------- |
| **${var//old/new}** | **用new替换${var}中所有的old(全局替换)**     |
| **${var/#old/new}** | **用new替换${var}中开头部分与old匹配的部分** |
| **${var/%old/new}** | **用new替换${var}中结尾部分与old匹配的部分** |

old 中可以使用 通配符。

（2）var 可以是 @ 或 *，表示对每个位置参数进行替换

eval

eval arg1 [arg2] ... [argN]

listpage="ls -l | more"

eval $listpage



eval newstr=\$$str2

eval echo \$${x}_URL 



对参数进行两次扫描和替换

 将所有的参数连接成一个表达式，并计算或执行该表达式

 参数中的任何变量都将被展开

变量的间接引用

通过str2的值来引用str1的值

str1="Hello World"

str2=str1

echo $str2

eval newstr=\$$str2

echo $newstr

Hello World

或

eval echo \$$str2

Hello World 

＃ bash2.0以上才支持

newstr=${!str2}

echo $newstr

Hello World

或

echo ${!str2}

Hello World 

shell变量的分类

用户自定义变量

由用户自己定义、修改和使用

Shell 环境变量

由系统维护，用于设置用户的Shell工作环境

只有少数的变量用户可以修改其值

位置参数变量（Positional Parameters）

通过命令行给程序传递执行参数

可用 shift 命令实现位置参数的迁移

专用参数变量（Special Parameters）

Bash 预定义的特殊变量

用户不能修改其值

位置参数变量

是一组特殊的内置变量

跟在脚本名后面的用空格隔开的每个字符串

$1 表示第1个参数值，……，$9 表示第9个参数值

${10} 表示第10个参数值， ${11} 表示第11个参数值， ……

位置参数的用途

从 shell 命令/脚本 的命令行接受参数

在调用 shell 函数时为其传递参数

专用参数变量

$*    将所有位置参量看成一个字符串（以空格间隔） 。

$@   将每个位置参量看成单独的字符串（以空格间隔）。

 “$*”  将所有位置参量看成一个字符串（以$IFS间隔）。

 “$@” 将每个位置参量看成单独的字符串（以空格间隔） 。

$0    命令行上输入的Shell程序名。

$#    表示命令行上参数的个数。

进程状态相关

$? 表示上一条命令执行后的返回值

$$ 当前进程的进程号

$!  显示运行在后台的最后一个作业的 PID 

$_ 在此之前执行的命令或脚本的最后一个参数

shift命令

Shift[n]

将位置参量列表依次左移n次，缺省为左移一次

一旦位置参量列表被移动，最左端的那个参数就会从列表中删除

经常与循环结构语句一起使用，以便遍历每一个位置参数

$?：返回上一条语句或脚本执行的状态

0：成功

1－255：不成功

exit 命令

exit 命令用于退出脚本或当前Shell 

exit n

n 是一个从 0 到 255 的整数

0 表示成功退出，非零表示遇到某种失败

返回值 被保存在状态变量 $? 中



0：

执行正确

1：

通用错误

126：

命令或脚本没有执行权限

127：

命令没找到

read

从键盘输入内容为变量赋值

read [-p "信息"] [var1 var2 ...]

若省略变量名，则将输入的内容存入REPLY变量

结合不同的引号为变量赋值

双引号 ” ”：允许通过$符号引用其他变量值

单引号 ’ ’：禁止引用其他变量值，$视为普通字符

反撇号 ` ` ：将命令执行的结果输出给变量

只读变量

readonly variable

使用 echo

多行内容中不能出现双引号，否则 echo 提前结束

 若确实需要使用双引号，需使用转义字符： \"

使用 here file

 _END_可以是任意字符串，只要上下一致即可

  多行内容中不能出现内容为_END_开始的行，否则 cat 提前结束



### 2.2 变量声明

 

这里简单举例说明在 Shell 中如何创建一个变量：

使用 declare 命令创建一个变量名为 tmp 的变量：

declare tmp

其实也可以不用 declare 预声明一个变量，直接即用即创建，这里只是告诉你 declare 的作用，这在创建其它指定类型的变量（如数组）时会用到。

### 2.3 变量名

变量名的命名须遵循如下规则：

- 首个字符必须为字母（a-z，A-Z）。
- 中间不能有空格，可以使用下划线（_）。
- 不能使用标点符号。
- 不能使用 bash 里的关键字（可用 help 命令查看保留关键字）。

### 2.4 变量赋值

变量赋值（定义变量）

varName=Value

export varName=Value

引用变量 $varName

一般地，所有的Shell变量都是字符串。

当变量的值仅仅包含数字时才允许进行数值计算。

在较新的 bash 中，可是使用 declare 或 typeset 命令声明变量及其属性，但一般不需要声明。而且为了使脚本兼容于不同的 shell，在没有必要的情况下尽量不使用变量声明。



 

变量赋值时，变量名不加美元符号（$，PHP 语言中变量需要）。

使用 = 号赋值运算符，将变量 tmp 赋值为 shiyanlou。

\# 正确的赋值方法

tmp=shiyanlou

\# 错误的赋值方法

tmp = shiyanlou

**注意:变量名和等号之间不能有空格。**

除了直接赋值，还可以用语句给变量赋值，如 for 循环中：

for file in `ls /etc`

 

### 2.5 变量取值

**变量的名字**就是变量保存值的地方。引用变量的值就叫做**变量取值**。

如果 variable 是一个变量的名字，那么 $variable 就是引用这个变量的值，即这变量所包含的数据。

$variable 事实上只是 ${variable} 的简写形式。在某些上下文中 $variable 可能会引起错误，这时候就需要用 ${variable} 了。

读取变量的值，使用 echo 命令和 $ 符号（**$ 符号用于表示引用一个变量的值，初学者经常忘记输入**）：

echo $tmp

myname="shiyanlou"

echo $myname

echo ${myname}

echo ${myname}Good

echo $mynameGood

myname="miao"

echo ${myname}

 

使用 readonly 命令可以将变量定义为只读变量，只读变量的值不能被改变。 下面的例子尝试更改只读变量，结果报错：

\#!/bin/bash

myUrl="http://www.shiyanlou.com"

readonly myUrl

myUrl=http://www.shiyanlou.com

变量的查询、显示和取消

显示当前已经定义的所有变量

所有环境变量：env

所有变量和函数（包括环境变量） ：set

显示某（些）个变量的值

echo $NAME1 [$NAME2 ……]

取消变量的声明或赋值

unset <NAME>



**1. 子进程（Child Process）的本质**

- 当你在 Shell 中运行 **bash -c 'command'** 时，会启动一个 **全新的子 Shell 进程**。
- 子进程会继承父进程的 **环境变量**（**export** 导出的变量），但 **不会继承父进程的私有变量**。

引用

在 bash 中，有些字符具有特殊含义，如果需要忽略这些字符的特殊含义，就必须使用引用技术。

引用可以通过下面三种方式实现

 使用转义字符：\

 使用单引号：‘ ’

 使用双引号：“ ”

转义字符的引用方法就是直接在字符前加反斜杠。例：\$，\‘，\“，\\，\ ，\!

强引用

单引号对是强引用

单引号对中的字符都将作为普通字符，但不允许出现另外的单引号。

弱引用     

双引号对是弱引用       

双引号对中的部分字符仍保留特殊含义

$（美元符号）－　变量扩展 

`（反引号） 　－　命令替换 

\（反斜线）　 －　禁止单个字符扩展 

!（叹号）　   －　历史命令替换



## 4.1 环境变量

简单理解了变量的概念，就很容易理解环境变量了。环境变量的作用域比自定义变量的要大，如 Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中，每个进程都有其各自的环境变量设置，且默认情况下，当一个进程被创建时，除了创建过程中明确指定的话，它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上，而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。

通常我们会涉及到的变量类型有三种：

- 当前 Shell 进程私有用户自定义变量，如上面我们创建的 tmp 变量，只在当前 Shell 中有效。
- Shell 本身内建的变量。
- 从自定义变量导出的环境变量。

也有三个与上述三种环境变量相关的命令：set，env，export。这三个命令很相似，都是用于打印环境变量信息，区别在于涉及的变量范围不同。详见下表：

| **命 令** | **说 明**                                                    |
| --------- | ------------------------------------------------------------ |
| set       | 显示当前 Shell 所有变量，包括其内建环境变量（与 Shell 外观等相关），用户自定义变量及导出的环境变量。 |
| env       | 显示与当前用户相关的环境变量，还可以让命令在指定环境中运行。 |
| export    | 显示从 Shell 中导出成环境变量的变量，也能通过它将自定义变量导出为环境变量。 |

vimdiff env.txt export.txt set.txt

 

使用 vimdiff 工具比较导出的几个文件的内容，退出 vimdiff 需要按下 Esc 后输入 :q 即可退出。

关于哪些变量是环境变量，可以简单地理解成在当前进程的子进程有效则为环境变量，否则不是（有些人也将所有变量统称为环境变量，只是以全局环境变量和局部环境变量进行区分，我们只要理解它们的实质区别即可）。我们这里用 export 命令来体会一下，先在 Shell 中设置一个变量 temp=shiyanlou，然后再新创建一个子 Shell 查看 temp 变量的值：

 

环境变量

 

环境变量定义 Shell 的运行环境，保证 Shell 命令的正确执行。

Shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等。

所有环境变量都是全局变量（即可以传递给 Shell 的子进程），并可以由用户重新设置。 



| 变量名   | 含义                                    |
| -------- | --------------------------------------- |
| HOME     | 用户主目录                              |
| LOGNAME  | 登录名                                  |
| USER     | 用户名，与登录名相同                    |
| PWD      | 当前目录/工作目录名                     |
| MAIL     | 用户的邮箱路径名                        |
| HOSTNAME | 计算机的主机名                          |
| INPUTRC  | 默认的键盘映像                          |
| SHELL    | 用户所使用的 shell 的路径名             |
| LANG     | 默认语言                                |
| HISTSIZE | history 所能记住的命令的最多个数        |
| PATH     | shell 查找用户输入命令的路径 (目录列表) |
| PS1、PS2 | shell 一级、二级命令提示符              |

 

**注意：为了与普通变量区分，通常我们习惯将环境变量名设为大写。**

**4.2 变量时效**

当关机后，或者关闭当前的 shell 之后，环境变量就失效了。怎样才能让环境变量永久生效呢？

按变量的生存周期来划分，Linux 变量可分为两类：

1. 永久的：需要修改配置文件，变量永久生效；
2. 临时的：使用 export 命令行声明即可，变量在关闭 shell 时失效。

这里介绍两个重要文件 /etc/bashrc（有的 Linux 没有这个文件） 和 /etc/profile ，它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件：

这个 .profile 只对当前用户永久生效。因为它保存在当前用户的 Home 目录下，当切换用户时，工作目录可能一并被切换到对应的目录中，这个文件就无法生效。而写在 /etc/profile 里面的是对所有用户永久生效，所以如果想要添加一个永久生效的环境变量，只需要打开 /etc/profile，在最后加上要添加的环境变量。

### 4.3 PATH变量

你可能很早之前就有疑问，我们在 Shell 中输入一个命令，Shell 是怎么知道去哪找到这个命令然后执行的呢？这是通过环境变量 PATH 来进行搜索的，熟悉 Windows 的用户可能知道 Windows 中的也是有这么一个 PATH 环境变量。这个 PATH 里面就保存了 Shell 中执行的命令的搜索路径。

1. 查看PATH内容

查看 PATH 环境变量的内容：

echo $PATH

 

默认情况下你会看到如下输出：

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

 

如果你还记得 Linux 目录结构那一节的内容，你就应该知道上面这些目录下放的是哪一类文件了。通常这一类目录下放的都是可执行文件，当我们在 Shell 中执行一个命令时，系统就会按照 PATH 中设定的路径按照顺序依次到目录中去查找，如果存在同名的命令，则执行先找到的那个。

回到上一级目录，也就是 shiyanlou 家目录，当再想运行那两个程序时，会发现提示命令找不到，除非加上命令的完整路径，但那样很不方便，如何做到像使用系统命令一样执行自己创建的脚本文件或者程序呢？那就要将命令所在路径添加到 PATH 环境变量了。

1. 自定义PATH变量

现在，我们添加自定义路径到“ PATH ”环境变量。在前面我们应该注意到 PATH 里面的路径是以 : 作为分割符的，所以我们可以这样添加自定义路径：

PATH=$PATH:/home/shiyanlou/mybin

你可能会意识到这样还并没有很好的解决问题，因为我给 PATH 环境变量追加了一个路径，它也只是在当前 Shell 有效，我一旦退出终端，再打开就会发现又失效了。有没有方法让添加的环境变量全局有效？或者每次启动 Shell 时自动执行上面添加自定义路径到 PATH 的命令？下面我们就来说说后一种方式——让它自动执行。

在每个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本，以初始化环境，包括添加一些用户自定义环境变量等等。实验楼的环境使用的 Shell 是 zsh，它的配置文件是 .zshrc，相应的如果使用的 Shell 是 Bash，则配置文件为 .bashrc。它们在 etc 下还都有一个或多个全局的配置文件，不过我们一般只修改用户目录下的配置文件。Shell 的种类有很多，可以使用 cat /etc/shells 命令查看当前系统已安装的 Shell。

我们可以简单地使用下面命令直接添加内容到 .zshrc 中：

echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc

 

**上述命令中 >> 表示将标准输出以追加的方式重定向到一个文件中，注意前面用到的 > 是以覆盖的方式重定向到一个文件中，使用的时候一定要注意分辨。在指定文件不存在的情况下都会创建新的文件。**

1. 修改PATH变量

PATH变量的修改有以下几种方式：

| **变量设置方式**             | **说明**                                     |
| ---------------------------- | -------------------------------------------- |
| ${变量名#匹配字串}           | 从头向后开始匹配，删除符合匹配字串的最短数据 |
| ${变量名##匹配字串}          | 从头向后开始匹配，删除符合匹配字串的最长数据 |
| ${变量名%匹配字串}           | 从尾向前开始匹配，删除符合匹配字串的最短数据 |
| ${变量名%%匹配字串}          | 从尾向前开始匹配，删除符合匹配字串的最长数据 |
| ${变量名/旧的字串/新的字串}  | 将符合旧字串的第一个字串替换为新的字串       |
| ${变量名//旧的字串/新的字串} | 将符合旧字串的全部字串替换为新的字串         |

**4.4 环境变量删除**

可以使用 unset 命令删除一个环境变量：

unset mypath

**4.5 环境变量立即生效**

前面我们在 Shell 中修改了一个配置脚本文件之后（比如 zsh 的配置文件 home 目录下的 .zshrc），每次都要退出终端重新打开甚至重启主机之后其才能生效，很是麻烦，我们可以使用 source 命令来让其立即生效，如：

cd /home/shiyanlou

source .zshrc

 

source 命令还有一个别名就是 .，上面的命令如果替换成 . 的方式就该是：

. ./.zshrc

在使用.的时候，需要注意**与表示当前路径的那个点区分开**。

注意第一个点后面有一个空格，而且后面的文件必须指定完整的绝对或相对路径名，source 则不需要。

**总结**

- **加 ./**：显式执行当前目录下的脚本/程序。
- **不加 ./**：要求命令位于 **PATH** 包含的目录中。

位置变量用于接收从命令行传递到脚本的参数：$0，$1，$2，$3...

$0 就是脚本文件自身的名字，$1 是第一个参数，$2 是第二个参数，$3 是第三个参数，然后是第四个。$9 之后的位置参数就必须用大括号括起来了，比如，${10}，${11}，${12}。

**位置参数实例**

在运行脚本的时候，有时候是需要参数的，这里我们学习如何获取参数。

- $# ： 传递到脚本的参数个数
- $* ： 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9 个
- $$ ： 脚本运行的当前进程 ID 号
- $! ： 后台运行的最后一个进程的进程 ID 号
- $@ ： 与 $* 相同,但是使用时加引号，并在引号中返回每个参数
- $? ： 显示最后命令的退出状态。 0 表示没有错误，其他任何值（如1）表明有错误。

用户工作环境

用户登录系统时，Shell为用户自动定义唯一的工作环境并对该环境进行维护直至用户注销。

该环境将定义如身份、工作场所和正在运行的进程等特性。这些特性由指定的环境变量值定义。 

用户工作环境有登录环境和非登录环境之分。

登录环境是指用户登录系统时的工作环境，此时的Shell对登录用户而言是主Shell。

非登录环境是指用户再调用子Shell时所使用的用户环境。 

对所有用户进行设置

/etc/profile

/etc/bashrc



只对当前用户进行设置

~/.bash_profile

~/.bashrc 

通常，个人bash 环境设置都定义在 ~/.bashrc 文件里

登录shell和非登录shell的启动过程

Login shell

/etc/profile  /etc/profile.d/*.sh

   

$HOME/.bash_profile

   

$HOME/.bashrc  /etc/bashrc



Non-Login shell

$HOME/.bashrc  /etc/bashrc

命令补全

通常用户在 bash 下输入命令时不必把命令输全， shell 就能判断出你所要输入的命令。

该功能的核心思想是：bash 根据用户已输入的信息来查找以这些信息开头的命令，从而试图完成当前命令的输入工作。用来执行这项功能的键是 Tab 键，按下一次 Tab 键后，bash 就试图完成整个命令的输入，如果不成功，可以再按一次 Tab 键，这时 bash 将列出所有能够与当前输入字符相匹配的命令列表。

通常用户在 bash 下输入命令时不必把命令输全， shell 就能判断出你所要输入的命令。

该功能的核心思想是：bash 根据用户已输入的信息来查找以这些信息开头的命令，从而试图完成当前命令的输入工作。用来执行这项功能的键是 Tab 键，按下一次 Tab 键后，bash 就试图完成整个命令的输入，如果不成功，可以再按一次 Tab 键，这时 bash 将列出所有能够与当前输入字符相匹配的命令列表。

键盘快捷键

最简单的方法是用上下方向键、<PgUp>和<PgDn>键来查看历史命令

如果需要的话，可以使用键盘上的编辑功能键对显示在命令行上的命令进行编辑

感叹号的用法

用 !! 执行最近执行过的命令

用 ! <命令事件号> 执行已经运行过的命令

用 ! <已经使用过的命令前面的部分> 执行已经运行过的以该字符串开头的最近的命令

命令别名

允许用户按照自己喜欢的方式对命令进行自定义

格式 

alias [alias_name='original_command'] 

说明

alias_name是用户给命令取的别名。

original_command是原来的命令和参数。若命令中包含空格或其他的特殊字符串必须使用引号。

在定义别名时，等号两边不允许有空格。

不带任何参数的alias命令显示当前已定义的所有别名。

可以使用 unalias alias_name 命令取消某个别名的定义。

如果用户需要别名的定义在每次登录时均有效，应该将其写入用户自家目录下的.bashrc文件中。



定义别名举例

alias lh='ls -lh'

alias grep='grep --color=auto'

alias gitcam='git commit -a -m '

注意

若系统中有一个命令，同时又定义了一个与之同名的别名（例如，系统中有grep命令，且又定义了grep的别名），则别名将优先于系统中原有的命令的执行。

要想临时使用系统中的命令而非别名，应该在命令前添加“\”字符，例如，$ \grep命令将运行系统中原来的grep命令而不是grep别名，它不在输出中显示颜色。

### 运算

 

Bash 变量没有严格的类型定义

本质上 Bash 变量都是字符串

若一个字面常量或变量的值是纯数字的，不包含字母或其他字符， Bash可以将其视为长整型值，并可做算数运算和比较运算。

Bash 也允许显式地声明整型变量

declare -i 变量名

![img](data:image/png;base64,R0lGODdhPAI7AXcAACH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACwAAAAAPAI7AYf////e7/8AAADW5vfm9//W5v/m5v9KQkrOxc7W1tbm5u/37+/37946OjrF1u+MAAD//+/v7/+EjIzW7/97c3OlraVaWlq1lEoZGRlSSkrF5vfW1uaUlJT3//8QAAApKSnv//+t5vcAABCljEIAAMWcnJwQUoze9/8AADHFxb1rUt7etb0xEL29rXsQSmutUub35sVaKQi1hBmMECmcrd5zSrWtECmtUrVjShC1hEoxAABjUjGtGeatGbVjhGOcAAAxIQhCUmO1jK06WoxahIT31qXe1sXe//+Uxe+9ta1rGbVSEADWlJTm5t4ZCCHmzu/mvZQQjK06SuYxEOZzGeaM5nve1qUxjHOchN4AIUpr5uYZSkJanN4QjOZrvbW9hN6EveYIGYxr77UIEN7e1ta1jGMIMWNrWntrOnNrEHuMWhkQSrW1xdaMWjrepXOUrXtaKTG1hIQ6GWN7pd6l3q295nsQUhl7hN46GZRae621zu+tEACMOhDenFoxShlCUsW1MRAQOt7O1tbmxWvmQubmEObmc+aMvUKMvRAIGTHee0rmpeYQGcXmWhnm3jrm3hDmWrXmEBnmEIR7hK06e+Y6McW9UhCMhEq9rc46e60ZhDoZ72MZzjq9GWsZhBAZxWMZzhAQjGMIAACMhCljCDq9reZae97W7/e1UoS9WjrmpTqM70KM7xC9vUK9vRDmpRDmWkrmWnvmEErmELWUMUKUIWNapTo677UQ77U6xbUQxbVa72NazjpahBBaxWNazhDW5uZjvebmexm1UmPme7Xm5mvmMRnmMYSMjAh7nLWUUmMQWuZalLWUhHMIEGPme3uUGYQZpToZ74QZ7zq9GYwZpRAZxYQZ7xAQjIQ6lLWUUoyt5ta970I67+Y6nN697xAQ7+Y6xeYQxea1OjrmMUrmMbVaezFa74Ra7zpapRBaxYRa7xBjUkopKULF5q2crbXv/60IGRB7e4Slc0qUhKXm/zo6UkIACACEjGtzWlrm/++MEAhKUkqUe5TWvdZSWkoI/wABCBxIsKBBg/EaHFzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihwJsYQABCQjOlGYsqXLlzBjypxJs6bNmzdNosT54QPOn0CDtmxBIRmIjTCaJQtQsAgFGkeFSp1K9WcFASl+JqzKtWtFGDvmEFxAtqzZswuiAjCSIkkFt+/aslELQY0AE1EZlOEyEMKCCGUB/y0IIZUAMw70kQUBI4aATKcCC4SQI4gGr5gza25oks1PDCw3i+64IGSRGCjADHTTE4PrDxhgx3YdO16QCQDqCkDRs7UAFwEWRAZgScCQqFB0iGCWe56HeNCje0AhduAFAQJE9HQSb0gb7PFiw/92cURgCw9mkIxez16qyaw4QbefT9ENLUwfTycKAWFgHwGJnCEBBUD8lo8HIgzRjAQFmoEbA3a5sI0CTTRhGHmsDXGKDMaVJ5AbOiTCBQQtWGBBPiea6MMZnuVWhnJEOJYIBfjoACAFO2Q3BAUlMPUhepfRJ+SQKb33U09EhgTDChHcxAAgDwihlkYw4JBaQW4cFkJu33EBzxIobAmAIoddppsJgAl0nQkTqHKYAxweR1AfHyQTEQPzdAcAPDqYUV4OH2QDAFhDeFhQHx6YYGiSjDZqkU5aheaoRoo8gMmUMvXxAy1PeJTDYwa1oCUADOAgABdF6ICCegDMI8AWuJ3/2QQf7dBwHXmfmqFBcVcsCsAGE0FAhj4rJLFgMhWUIEEJbgnxzikHQSiAKZNWay1nWP3khE8LQeAGKj5eSxAETVryABYAlDYTA5b8cAOmGBUBRJgGZZnFZVUKAEaqq+ZmmK65jXKPCUaACcatAVynK4d4GQRDBRBXkMI7bkVcAVQDNSaCPRb8Y6KJB+yAgQjVGZScg+KmfK2R8Ula0JMPlKLyZKkMI0S7qJQxjpQyufHDDAV4hOgaB2VpxpZFgBkCFGCy6qqfIEhrgjtNr3kEmQsbdxQMHCxbQRvbhoedCGE7gUEm+gyUdIIVCFFC2+9U0IxyJb/MR78z551kZ0dy/2sQBAzsMYPMM7P7wAM/JP7DPtD4mhK7P2gDL0auCmrQIAJksaUbHjijAb/qUfaqmXaZkBwKbNx6hMIaGFYoAIhiZxwbRihwgXJcNEHG7kYAq7Zj7fAj/AH8HJBBA9lRuxAyAjAzud7Qb8byTVstBA8gP8isrkuldZ8uTDAwgT3i923/EhQ/O+ARBN/VvVqZEJiaCQhM4/1vrKUnoUMWeqhOpgsaiFN5FrC778xPILk6CgMmt7Y8pGBiKZBYCl5Enf78zVXMiZ4G1wMpnvhNIHoZxzBSkTha1GwY6kuJG0SYCmXUTISEawkEFJG4GQhhJhBoxA9Q0aSOQMBV3ihamf9AtCoIpEoEYGCAPv5lJoGZoAWqcoDVFAYnrRHkOnLSGF9ykCjHaewDxTuAGInXAA+ciiEcyuAG15iZ6dmkemr7weEQl7g5visllZqjHnnWEijsYwbD+FnQYuLHGbTII2TKhBDNwKBT9ec0AtgWbF71oNKJ6mj/u9pvdvWYRX3qdYgyw1HWxgVMkVIfDDgFA5oQmdPNwYJ2ow4bZ+mVzsCyJtt6mRuGUYZh7GFTcRhGHAQhkAWUIlwdod8wltlLXqLikE9wwPMo9QMhFMZSBSkFtEQywx/UooceSY4zHIe5RBTogLlJQtcoQAS7AOxMT1vdYeSZtddN5pOMmZdqmrP/m32qbQkCwMABGkDQgiLvjAaJAJ80R8uGUsWNNZHPQaIGiMEBYEoKUEElAqEHcHIEBEcJ6ZQg8IVKTMEUg/QIDHgGgyR0aiALwAIjKjGHaV6kCHuIWUhKJQK+YClzNEiBRwvyLw+xxR2Omd8CjCDNXHHSngh8TBMco52eNOADZkQZQRhABisANA8IQEALzkkGhpAJqg5NK046eBMkLeRJ2YsWFkhAAkog0yX+qARdkWBTkCzgC2MgQSBSyhEa1uKuHUnOvX4KsIbk4B6LHUhyRJCHZlTHWx9gU5ymhMW6fKAB9jgDB9hAhsZkgQaDSsLb4laBJbAtBWO9i1tKUIJD/wIAdGrN7VqzhRM4GgRmMSRIBCBwA7r6NCZP0OsYjtDXj0BgESyoa3MjAo+cBte5F0gUMkWlObKoEi0M+M4WmCuQxvzmPI9Bpm56lTFTAWyoAmmCAgQCBTgU9AAFEkA7BvoBGwm0oHeIinmPq9sCy4RvHmSIt1BBWIMoYQymmO5HFkGCMbAqJiAo7jIQexHD4mYkP9SBCVIIgCzFIxEG/ayKCWqjxhbBVIlAAgRedBg9EIRhR5mxY7CaiDxweDIhbe8mHxkDEUSBXEjOjRGSKmEDO5kjEKWJby2igFI0+CUQKEUpmuwRA5QiSBvB6bluGZIZO0GNWUpEMiomsQpQzP/NKTDVFi4DIqBKNganVXIFHHMc0S1nAWUoUDw+a9CrfqAdNk7XAloA0MgOyjGWGxcXlffkSrckyjPJ5Ua43Cj4XsRnM9hmS2Agata44MMM6UMDhoAbK8DBDIkeCFdzbJjsOG9QbbAnA+KwA0NbtTdsyg0UAzoEwsKjQJSIVlktzWySYFomEm12SqAwDPzQhKu+c4inG1KEfBCBBua7CAMWdGUYlMEC/pS2uot0kr6tOyXbdjKn303vjTw7JlOut773ze9aCsC2NXFrvwdO8ILb5D1knkm+Dc7whjvc3u3GiaYfTvGKW/wh94ZJtC/O8Y5X/CoAp0lP2GyxkptcCBD/ewfKIbZylUds5SaPucxnTvOa2/zmOM+5znfO8577/OdAD7rQh070ohv96EhPegoswNu2CuBjUI+61KdO9apb/epYz7rWt871rnv962APu9jHTvaym/3saE+72td+duTthHou87jc587vdzTdJp+lu973Tm+22iQ2fA+84J+c8ZdsfPAzg0AKsi1rNsSbm4ORNQKABQNMiJojRgg5BCbfFcX/uOC2TDDiXcIACQxSWIIwgiAQsPrWs/71qb98Ckg8ES6itVROsFNFFE/7iKgaqoj6Q6vO9ltrU2TJiUg37DAAQI+QJQKKKQsIwg0RN2CgHconDAKihiIkMGAuuyZC/+/LywEwr/Eq8IH76Ed9N1bBAA7iuaqh5a/iDzhBkQLpQzxcEDQIxIECABiAACgB5tcHLTYgAPgOzvEbHBCA7jMQTcAW/9cAOhAP+DcRHEIeMPAObOBO28AHdxFBLdIYIiIQTiGAAlg3MACCIiAgA7hnmSMPCEgEVyYRYNEbvtYTDsQGYYUAZCAIzwMFQGBGDbMQiuABQ2AFygEGiOIlAEVgkqUDznBhG+R3uPRB6wcS+lEyDLAPywEBkdEEZSGGYqgbeCBg7qRK+fBr9NcOrAIBQqgdNoJiVzUdDVAgKPYB6EQQa4MBZrQxZ/AOn7cQn0IeUNAA+BVJDYABitgAkf8GIiQDAm5AUCumYkSQF3aRCB+QHfUnAJ+FHSgWBFRIEUvlHCiQDJgARSgQIwIwaD0xHaMIQiA4BDmyhy+jBiLgA0CQCCWgKhpwOmISKvsTjBpUeC5xeAZBfYQxbxsReZZWJVdiQV+SIHGADwG4IgEoARJgF3vIUw84OeZlAgBgNaUiAILyH+ShYHGQDGwwClYEAFaAIhZAPBZwBqi1EBwSBIZCJuJoGPgHTpJ4F44DL6KzKl9yJVniOV2YfB0xCPtTHnwSY5ijOQxwHs4Qa7LmjlkwAeY1BONHQEYgAUKwi0SQD8xABq5CNAzBOVpVjP+WcNAWdwShCLQwfmqzM8z/KG5lAAi0EAc5mTeFYY4vIwTJwEWrqI1IKQEHQllJMBcEsYGO81Yp0CODohSnED704AALwABC4HgQcVYeQkQUIAE1IpSEUQZnICNncAbbQAZJIA/vIAhomQxkwHjpFHIMYQRNaR4SwAYLYAUc8A76oA9W8A42aREOCTAwsD9IUAQewFD2Qoyk4hwxVl450mNTAgWflQF+gB3t8A91eA+JwA8fYxmS9hg/SR/G2BLIKGtQcl0E4TO1kJoUQUPjUFFYAJNpdTKoVhDJoWYR5BYTo4qxCFMMsAELwErHmZynQAbDoTY9cQAW0ADCE0YFJZn4eBdROE5RU2SUljE7EAQy/wJaFBAb/GUPAxUPRfgyG3AKTYCc70lA7rkBdDEPnxUEAyWdYkSJeUCbP6JmFfAi+5Eqlak6T/kdWTCKOaADopkHfhk1VpACbWBGiUAED1QGzxEEFuAY+iWZMNA0VRhxbYWFucEEK4BTNrQCTEBiRsAE/qApykAGUCAEj8cRMAAI7wIB4zADg0hLnxJplzMviDiPGZABoDkd6dYErLcBeCI7TvqkckJf08EMCPBAVsoGI9BPDEEUY2kqWTCWFMAOAuA5pOIYUNgXEVIeWaIoBJEcJsAUEJB5grAAySE79/Ck2OFo5WgCD4QAcfFAScBn/gkADikClJg5SLCYlYlPIP8UqLtBBD0YVqlXATtgIwJpghwaD05AHv8BMP+hKJgiOmoEPauZEvlWBHK0D79kA3J0A5MhDIfzSzMgR0DTEkUACPeoCDYQlQ7FU9k3EA6ZfD8oCMRqBKqYbp/iiQ0QBDLYDDmyimO5IPJgW3W6XwOFiIgoI7/qIibyD3P4MTvQOZcBD94Jk6nSISXmAVsgg0jJDiJWHvICIARFBANSlu2gjQtCAfQQLuElr/mZnxR4D5nAq/WxP5dBoN63DxUEgsoDA3YhAFcAB5YqAHeKHWFwBPGYAVuSFKriAxW4iFvQIFuSkpPDOWwaPaF3ExPXFyskRzWECsu2FoqwD4qzKTT/KkOWYAOY4AaAIDm6U2DQiJG+CQRhQ2gFNS9UaAW0VWSRlkANAQUeUKEpFzEKCCDb2kMKVSBRKk6XwQBmOlGIEh61ArUBgiIoEq4N01Il4CrjJBDHhgLB0BC64QIm9w4tgAMDM6iD0DnloaghIC1OiAJeAEJlcAB2AgMl8A6BZhy05ZQA0EO/CQamBQZ1uhvq4Sq2GIUtqTelShKtSSrt8jNAaDI5tUODChFFYAM0OwOokArjgAoEu0bQGItcFYFt4Rh0mwTvUKUIgAm7swEexQcikGyPRjIA0AIf8KvJEQ/tQKQZQDz8gDyV6RCpYEbBIxYOSaYaYwoJZ17aEQ9m/3AJd3EK+jB9+mCymdknQYI1jLEDaAVCmcgPzzuPxHMAZpS5FxGszJAEL8JQHJIHVvCY5ocp5Ri3DMEAAcA+8eA87POHI2IqZ0pfOnBqLvl2eEeiJig4M/AAdzQuJEQLPyO0I7FUNKQ4teC4uQUhSEQY8yBJ+PUc+3U8zyFQHzBolAYBtAAq6Qo1ZHKRhFEEAEKlKVClPCgIXMSQ3JZf8ZAdlCuF+PK1BhE7AnAG+bAS4eFrBJUovXkyT9xTg+JamduvJsCDRDzESWAqUaoRhXqokGkcE7qeuRGpCCCEj7F6YbV4A2EFKDc3ApAHbhYHFXAg2bCCK1w0XeSS6fdGMv8JOUKAokKLPjNABpWCClNSoxcBBYCACnEAJTTLQwX2Q2bZF3qpB4CmHMxgBG5mBN9hBmzAAG1BYtLCvSS4T2fiK3ubIG8gDwIoAeFayG+lBijAZ2WQOTVCpl4rAtzrm8rBiJngDoLgym2Bxn+6DcoMMFwkjgIRrMpXjlkgAc2wy/gAUFEwqCwJr0vAUI0RD1E7imSCp+5sT24wUAw6mgUiAo0pYkmwBGR6EFl6ayj7kqJHGEygDEzxLXYJA4rwBYyhCFhAF1ggBaYgwhlxnCCAU/3wBH2ATQXGm9FyCRU4P/UFQA6rX0thECA4yDBGBB+ziX08JQxAWws4BNp4IMb/8Q69WS8iJr5DoA85gGJSWB5ei1BtCgQm4I4uEAEMIAhNArjF1ASjK8GIMWw7wg4WkAFZ1XtGUAIt4BhmQAQcEM6Z05cNqQMXOyj7E1RHEDsnm8e0lXKLOwTJEje1NRARUNGooRqdegSlggJiutZPedchmsg1sXC5QRBpk4xRAV9NUAMkwAim0KMV0QczsNQ4erqNIi1ACgEr0AZ+KK8b6pnTOTaDpkY6Oi1fElD21wBnkAzOwVAERAZloYTxAAYQoA+TNQf6oDv0SRinAwZuchwMIFb7IwGKCwTInHAMsACfoo+AUlA2Mmj8hQeGkhxhAAzuOGiDFgQSAIOWU7uR/3EK7rjTW5kjp5bUzglCqicIl/cQDhkGV/kiotkOGpCsaVwQldedAhC3aHnTuZGlmqNFHzLPDxhV75s3VkgTKxsSX0BXlGDZJTYDmACHe3CPQAvYIJQnLtAM80Kv4luh9HAJj5kMbeCGsobGALAChpkWfdEC1eEGmhoend2K4eEBZhQe2A2FMHBOPH2pADBZHzBQZhTBApGBE0BAz5ysQKUApKYWnLMfXOmXTSEPQQMW0EEbNa6pMc4dZkPBdebFELFUXBQPu9gA9xAPPuZViaAq/twXdDwH8ADB5nU0L8NrV7XEebYnBeJobcqYa9S5I/G5HnEDgWV+G/EkMzAO+/9QC3aZW795YfetWLhBoFsCjAVhBZUKIJDxEE1gpRTD1X/6IpTVFkkwe/Y9D2dQHpuVzU78aNOim4U43SGSDBFSAGoBA3GQX1tA4QyxAKL+QK4S6u/gavrFBhLTlEcxbF7+EAwAgq9yBvtyziFgXtmghMsRLjDgHCKQCREwYLdlKu2AnYMCguYUD1wQXhWIArYIhyEy4AYO0CPaEhlVSiCB0LQAs5amH8rnkIvlmFnwDpdQIFPYFwtqHI6aCBlABG+T8HJTj7QHAxOKxLdFNxJxhEUIImHQtcoQBIM7UcLwG0xhBB69HKQCYzXV4zCWDBiKAhxD3ArfgBZQN5Jo3Pb/tES/4ThQwA6MGEQQAQFJEIgpRKASYCoUXKhyDgWOgQK3Fq8+lS8+3Kbh6gK0wwHygLuM9hskpoQQH9iR0hKWnBHKaGAwIAHrHdK4sbdZQAdwEA/2UPIDUQYY8DoVOYQvjgE27gEDUx4kAgdZpet1yu4HIUDFdN654RfxloFGsANOcBiHhCdmNGfv5wShY+kVmAgzXPfxUB0Oz4gokAeGAgEg6CcHQchCfhBkRrYHMMEFALkxABzweM6qQRlmpC8Zww55sE3XXsNq1iQOb0ZDcBnDlh79gbgSTaoiesFZWBPkQl9w4AI2FgGeRmoFEQGb3qd9ynn0RVBsnzH2pesN/yGJGTAJIyURLfAP4F8ZKDwQqnxAEPDUAgECCsAWvNunjosnH5AHxDQuZdAAnP83LAnZDFEEANGgHRIYBQAcPLggAkIIGxC6adAgzwSEACBAqDivwZyFByHMC4KkIow2eUBURJlS5UqWLV2+hAmzhIAUMW3ePBivAU6ePX3+BBpU6FCEC8ic6khU6VKmFZPaXPgUIQOQFH9CaHKq6VauXYXOZIPRq0snH8aeRZtW7Vq2bd2+hRvX68yacTHslJtX716+ff3+BRy44kwEcj+YFZxY8WLGjR0/HktXrk7IlS1fxpxZ81uwYt/e3Rxa9GjSpUNXoCm3LBkjgsggENQagf9s2oJm2659W3dr3rF99wb+W3hv3baNw0Z+XHly5sudN4f+XHp06tOlG1cue/j24K/J+PaOILxv8OLBn29Nvrj29Oq/w2ZvPP53+oLIdzfvvXxw/q7Ntw4vwPvsww653A7c7jbyXvNvwNf66+87AM8zr0Lr4oNPPg0z5NC3DjH0MEQQR9zQQ/3I+E4eAQqL64N7DoDxAH5ijHFGGm2skUYZdeSxRx9/1HFGIXccskgijzQySSSXVLJJJp900skdj4QRRyB7tLLKKbPM8coub/TRRhzH/NLLIMs0E0wejQxTyyzfTNNMLuM8k0op6cQzTz1/tDKDD1JrES/TBiW0UEP/Dx0LtbDiigcxRB+FNFJJJZUs0EkvxTRTTSEjbDJHN8X0JJQgMCIAl0StCAJUXYJggVV7IuNVtGQFwAitWpJV1Zuk4qkJU0Hdq1K4nBAUWEJhKMGBkS45Q49Uy9AhE1oPKsKCSZQFgIE42DElJhjg4GeOmBhIopl8iDgCACjgCMJZnmB451ebIMjBAnErgkIHF+RNCYZ85GFD1CTyyYPflvy1IOCXIEiBAwrO0ACAbxsAQyUImLjX2LM6s6tYjUmDAQcUREIIhiVEqLiiQTwYmaUcBGjZolEESIRkl4rQQQBmWmLgkhkb8EAAEVxQVg0BsghhYdYqaMYCPz3gAicG//jQGaUiYhDAG5YGyTlqi/oI2uuX8hUgm2khKOPnnAXYouI+BIgn5VGNNuljr94BFC7K7AY5BhRoWPXqliFQYIENFlAjETAYOIUBV0vG2oSKpk4kj5VWXTlmlPQ5iIE2PLCnAQFMOMVVshOxAMYGgrAKJSg+cAKDoFEIIhk2AHgcBAh4ndxoLjBaoPFTcnAij+AZT7UNAcw4AtV5PBgi3ZdUOTpilqDdYoflkVAggqtpjnF1dyXGoWq+t+q0xU/PzwwGPlCQG/KW4wAinkZjjweD/M2wHgA3dBDBHIyQgnekIAXNCMI7KkDAFCisCOywBwUoIA/tiWAIEsQgBTJwgP+MHUQRozsIDLA2hBJIoBlAEIC0VAIDIRTQaDuzyLb+0QAYWaBdK2GA79S1BP1hwIc+jEdZ5FaEJaSQDElgYAuCwIECLhAT6RogAhDQQCvAgW00kGIDs6iwg4AgX2bQCgSUZ4YScEAC5ePfSN4nNvYRRVhv2dvCjDCtgzTBIV5pggJ4RgZjfSSFI6GABfKRsyBIYJBZkIAEysgBeShvC9ZjQPmyAIzyCcCSl8SkCyjywCBYwJMoRJ0nRenJHXQQAGUQwBqyZbQsvEMrOKsZq16IkJcl4gw+YAfMbNa5MtwShQ2ggAR0kAgi0GOREriEB0RAMj8u82WYhCbNQjC1aFb/E5NZ6J+6PMA/erGMGYLIVgxEwEZqDTNpbXSjABYFl8PApAip2McXaLUANwCiFgbhCgwAQQsh0AoCipgBKu6oKZxloXXZKgMRLgEEEfwjGfNIpcSacTsADKJ6ByGbQY1QQAZ2NAVJ4GJSGLAPEWRjJQsIYQlKUIEd3IOMJ0wEBYDgDDrwoaR07JzRuuVBD0gOADiDX0paIEFxbkECHNCBM47AgBYk4yQwYCjJvjcyeBmQoxz9KBuOAIEVVKACJRACS+GWh6+GdaUleAcmAsAAlZYgmYjkQAwwEIQYJOIdEDWB9FDyMhWi8yt5g6PH+gXPH8wAEymBQD0f8ABl8I4o/zCwxA8eQItSIFYR+3jADISAUkz50aQr9JtIyoCBTNBrdOmCAhDSmENLGnQlrXGsuoYZP5W4AXYYyNk9DjOHJujjeUEbgmMZUAYLEJVtEjyD9vCQLqDusosWMZq4oLAEE0xgZWm8WiwB8EzNoYQBbOCsxdTQ05uRAgMfWNt586CVFujgHgJox0ErgjNnZNOvPknfsNY3uTgAQrKo8MeojJAKyfIztkTRln9/oAx/vAoKkZ2sEA5MKNbSFiGC26UIUVbboAmgvgBoARyGICoRLk++HoEo816iEHhgLQqoagK0UJAHvabEcweIiCUTERF7RI65OgiqSlgLQ4/YNBMqwf+ZJYP6QDlYBQJG6y6+AEhOi61SAC7oH1MZWl2WMECcFr4vTt7oFtAgtp6SVcZhUTLgHxQ2Dk9QCwyGsYfMvjklimWsmiMVsijLDwlInCJEs8AGTEhRiqeAZQN0kIV0vQxpGC3iZ1PyPUm/xA1BywQMUkCBQQrgHolIRo23lrOMvQwPJ8lXFsBs5WRsVIotYFkyDC1FB4SMbUto2f9EEIwQUi2vQva1TZJsAgcYQQIUwJoAioctYI8zzEDhGFzKjK9xtNnA3i2Dfx+ACj625Z0FFoLBtLWHNqOC2Yji8/ic0mIBoDd/shNa/uQdjzxEcgv4SGrEcCaCnV46yCl5Zjv/erS6XVKTZh84ABDukQV8j85gFqOaCLZgAZF88NdAXTVrP6C//HV44/MeQhPm8QEJnEwkkRTAH06SZCofBGxH40fMd2QBfpzhoKY9eAOwhgIiYC0L5x6VTVv+7JiMuS3TzhZhHyAEfOJLwbVocFygQO7JVhYlMCDwA/bRz0dFcsOpakKIg7YFGthmBMtjAwLaK4JkkMEhC1AA2LAJXQFEz49mOPEOr5wPH4iObZ5sQBZoUJFLW3J2RNhGzyz5gQYcJnorKbwAgmaGEHxwubLtM7mMdrS2k8ENNJsDAqyAtTyI5yRksAKQSeboiH2+zyDOWaMOM3sMWDIMzUNIag0v/7QhsCHGQdtx483Q9M7V1blEt0l+P7O+M/+gFiwaCTwf8AMhDBQlj/MKDPqwj8Ki4lZFgYKCaYEJnJLmZZUmX7tZRjJqeu3SKq6I3K13geqx1gS5MloaKzpMZl492SmcBwwwBT9qJQRIAqzpK/9LBBTKA+VxgWS6OCCjLaqgmZyBIRBIhbpDNf5zHZM7CK4JqpfBu0lDoSuTLzFaHr3yHMNzgTfAgCHQh7X7phTIv5uDpXNCPjEDLDITLLTRNlQAJ6vJumuriAXAAhUwBXVTCgZ4Bu77ASAclQdbrPGbFK65PddJhtEbHBFMF/dxNpQAmw/DPCTwMgFouQ9KhIz5H//tujpWYgcPKC0jSAJJegfU4kDEysBM8J1ISgTlWrlFOz4YaIZtiK6DuLRYgoAMHLEOjJkSMymqWcSKSL17eC8XEDUUvMJsyQEg8wF9AYEBUp5EYAat0DAqe5n7y0GeiLa3aCeVaAJFkKyAIj6LWAHxI7+KaAIVIIExMAVRCwrF+oHxexWsazPNMoBLebKyQTJxEgkIWLuQeD/7AgD567UUypc+a68UQhUQBDOymQNUUqH2WiI4MIEmMJoErIgL8IAsIMSq+a4cWMdkEIJLkEAceiFUE6eNSD02vDBcG7yDsIQrMwKsYSNnRKEsyAcTHJUUk54Sy4Qk8ABN+qkYQKT/NmgHNqA/iZwvXDu+VHwJo2OLOFIJI4AwzZIKBnADJwTCpICALyABEqCE8osJKKi2CBtGWFysfoCzTCGif/OzqWgGHYgHZWq5MOyfEWgHL8jIGluAbHy8h/AAfmSIjTItVAQAX9G4iJRGzJsDCAhIIvug/PmAeNAlexSAncKdFqgf90JHjFI9hGiBD2CGS3u0kqGaLECCpRwV5ZED6YEAZDkFrtE/BgiAj/CALQBE7zIa9PNImVgR1divUVkBCOM677qszJrFG9jFrcSJItiDfQgoXknExRoGq9uUgoqfCGixvxkJiCJLshM1+TMCNjAgNliB8nEBQpuiUyCbtuQa/6lMCVSyytzLGbxcCRjYAZMYMloSgDDgnGvMuFkqimykGWaQLyJCmSjSIohSnBTAhBQQBBBggAq4HfozAwfYADLICjIgiXvIRHzZJhwMoZ0zJft7uMZ0CZBcC6TrsjgoTZYogmHoB6l4AhXggvuUGkVQButLFSYYhls0FisAAu1qlWsUiQVIAmRbnrsiJMBBCLAxA6SyJkwyKShIhlMQAg5oqxJQnnjIBBVVKSZiyVM8CVKJA3y7BxdQwpVIRiLLgQ+oGxhgh2ZBrAUosZ0hFXygQ/qBr1DLPVwrgf8bUUusiLA8r9k7jMnzxS+yHjlsBqzZgvo0mqfEz+RTJ89wi/9WhAk0dQuZZB8Y4ABsoYraSwQ2KAM/yBlQ+xUaPBocLIN1ZIMkWKl3CCuvMtSvwhbVXJsRvSRnkM95uIc10IcfrT22SQYEtTG6KQq3ExVXoZUyAAJlmoNBUDSYyQN3gYHn+bd8QRmzqgBCNVSw8iqKQgj6syUMKi4fwJr3fIjl0QCI+BOaOVWVYAInLdOb0E+1EMljdQxFsAcJ0AMQ6AOJEASDwVB60CtQNQNMxaEB+k7anKIp+k7vbKBUsYISuB0oiAEXQNcJwzYK+EecgIIDIILBq6I88L2UsAJ5aB0rWIIs2FGYuIB4iJ5V+Yh40MiRKAHAuZp2mAQ2OAU2Zdb/n1C+NI3MiU0MN10Jd4UUid2KBVgAfZAVkMU+jFWLZE2LZTXZlWXZlqXYM42LsnDZmaXZmm0JlEUL/rTZneVZk63YtlDTnhXaoW1MnD0LlSXapFVa9lEUj1WLw9idqHUVkAUBkI0AfVCIBdgdqrXarY2ArZ3akAVZrBXbq1UIrDXbtEVbtN0dffjaq31btj1bhWgVsw3bra1bsq1arY0ArZ3bu+3bvOVavvVbu91bvP3bww3cxAVZxDXcxu1buY3byZXaqm3bqcWdt0UpuuVczfVcvDXby71cyzXbqjXdqa1a3KlazV1dt8Xc1z1d0CVc2aXd0uXbte3bvdXd293c/9QNW9wJ29MV3qmF25ANXNuVWqxtFeUV2+F1XtSF3ueV3uil3um13urF3uvV3uzFXgAw2rH4AA/AsfGlofIl3/M13/RF3/Bh3/VV3/d13/hVX/KFX/pdX/ud3/KtX/29X/7NXxzbX/kVYPgl4AEu4AMe4ARG4Pf1X/81YAVW4AV+4Pod3/OFYAnG4AvW4Azm4A123z+BvuUj2eAZ4RIe4dIxYRQuYcYhWRU24ReG4RiWYRMmWxKm4RZ+4Rp2YZLV4RzG4RsG2R0e2x9O4RmGYSEm4iCe4Ro24iZ+YSSe4R3eYbKtYbKFYic24inGYhhmYhtWYi/e4jAW4zEm4zI24/8S/l6vAI1VOQlRcWOUaGMAQJU4npY4tok3luPnyuM8fmM6rog55mOV8OOUGGQ4DmRCPmRDtmNF3mM9HmRA/uNGjuRILuTnemRHtuRA9mNALuRKfpVFRghZ2eQ95mRNJuU9xohFHuVRZgk29ghKNuVVjuVZluVapuVbtuVcxuVdtuVVtNilBeZgtps07gqkFea2aBWN5Ynw2guqTYwI4Ni0gIDvWwuFUGbH+NmQFKxjRrAUoObhkgCgU8sj41EYkAdX8ogkuARTGpVS+ANTyDuvIBd8iFdqgQMqxaE4eAeKIpVE8kWEiIBS0INSoIFSIGiDLuiBBrqVWIRKqAQ9oAH/U+BWi3E7nOCqZnCqkbBI+UyJOOAALoKBOCACzoyJL2AEU2ADLACDV2GAFFjoxSBmriAWbm4KkvDJImCo+EGbxFyJDwoy1nLUltDMQCBprqCmKHAdoRw62TIfAPigAGKJFXjJMWAEqp6CqmaEKXhJXnsJMmCBMZiDGiABKaDmlMBaI6gAh2EH0rLos/s1yEkhxyoxq+xNoMACEgiEUmABEjCFwNGB8+QUmJW2i6VpnyAJD2CGpFBNv6GtJ3OCjMNNvXJIOnoBEliGf5Zn5WHMS6sbxHqZoPYIB8TsRdhFJMjaUwgAhWiCr2ZnlXiCrw4BCKjspSaJLG0tdrhUnBBO/wcDgoRFiZWJh4yR1nXk6JsgBssGgSeohDGQz8RatOJOjJjeCp3VC64qa7XgnMvIoS8cCb9xFoiIiMY7r/AOgv7hmnFiABRpggXopXdQTxShZggQa6pmhPq27/seg4AFimSkBHXZgfAey/AWCJspMRhEkaOAAgtIBtdAkQ1AFX/YxRCAZmhWiAh47TGQmwUQ6A13gA3XaxKYgw6/gzkQaCFrBnlwqyv7lSKQIB/wJAlCAqd9mTUAAX8R8LIQ8AHsHKrBuwM/BSv4Fz04cF9JCQVIaA4vBQe460DQgyf4gjugARrgl/eLZ8DI5rUI2hVqAjJg5rGAgKlThmsmCigYhv+XZoy3GYKRUFF6FAEieCiaefFAYgc/uKhsCUUH2LxLeq9Mah0GoAK8RkIVEPRBJ3To9okWkIA3sCIXSIa1s4fiogB2sIAdYBm5ARsUCIYPYlQUwEHSJoH7BvVdFBsGUAFGcOhKCIRTr4RdHAOH/oOr5urrGR1RgQJloqF/CBoi84gVUKSWyoJGB1MLOIOmsYB/yBlJS7JsIJsRhWqUaGhVR3WHZoRPN3UpcGiiThWLw+y/kO6mMGaJSYUZmAFA0IZtZwrPXKxwWwsGsISli+a+KCj5RBhjF4EGIAJl6CnxTAJsuS7rIRswSoJEEvgSKiEOaIY5yG4AeG0SkBtZJgr/tDkAdgClYV/HiAGpk2AAXEuZElOcIkgkM5IAelCkkaeH1oFwXrwDLEj5lccClVc3kA0AA4A7A+hbvQbrCCiAwlEIl3gbqyyCis8WqtF1Q8wACwCaRCik8hGJjapRm9qpHLoHEfAGQQT5kD+qq4fWIg2ACEjtAlgAmndJJo+Aw8l5qRAh4AwMXwbai4WsBxgGQNg2MTdsS9gHG8CsykyLdsf7xgCBDyLnfgktp551ba8o4paZ1uLMkmWIJyjttVgIFNSaQZhQDUi1pDEZFLiXl8P0k+Id0h6DKgeAF5CC+Mnavo0KJWB4mLACGM0lM1CkEkixpEE5LpiWnq9xZtSw/4qBAKohZyKyJMYsihUz/awFANLGdpf4oEhUjG5nCmNWhAfQBgDQhyeQ+55oe1o4BTcorL33Cq/8ASyojO1etdUkGaQoRYRY7w20JGegCChgB8sJIRxwAtZx9pdEApyn+QLA+f3fgHe3CWoCCG8AADTRB0CNABMDATBQMBBGDAECEoEBACPfGQ0DIcyL1w7JwoH+SJCYU+Dkk5MFUpZiUXLhF0aMplSSaSpCjTF3BmK5UyDkQgbzPnzAoENAPAxEGwjIEsIiHwHMgC6EkCMhCIanAPQRYGbCwAUKIjBEKEBENoZl+OlZ2MfJBy5UFy7IyajSFJlImrAY83TBnZ1zrf/ocKFxLuLEihczXlhCAILGkicDhTsXgqIHQihzRqzoxwwHADCDZtP59MBUP4RkRe36NQQGOFCAnFskBm0yghYsKOMhC5smCsgsOLUAoogGOpwCuMocQJElAjK13viF5BiZjEho704pwOvLbQRkY0DGOBQgIuYsIMNgAwPeCBt4EBEMAJT6FRlG/Qq0LiPZdSdTXjJJAd5A1wWCxBN3kEAJADlBuEAlJMg1lz4LQAARVqPlxxwMOEhVHVBl3LPGAkYYx2Emp8C3AW/6dEWUABDCoF4mC80jAApPIQYBFQ864E8lY7DnUkWL9OVjSBHAo4MzTIY35WKPpUDlaxg04Nn/D9AcgWVjELgxTClVKYJKAWSBmRgElvyAhZpryklViCi0NReH/ACRiFI63BMPUR80UBQzRQBhxiVQagSFDijMMZAb+lHlDxY09IRFpZf2FCQlJFIJAUJmAAHoBx5IhIFSgzphQhNqoCDBnhXBEBV10AExHVVkPVFKKQ70ymspNNDQK1CYPAgCBFiQsAwA1zH7BQuBIJhYVwK4IAEN+P321KwCXDiXc354oBQGpsIlaFFmOJCDB2fsQN5ollj7pWwJTUsVBEpYCMACQYIRgRJGRvggYjAs8dyccj7GBgQJT0YUYkUAopmnDi9UccUWQ6CaEA1bnLBsIuwHlBVtHJWF/wQVVDBKU8mU0MxRZ1RQJgyYtPCbRgxENcSXVzlzGGf6mpIxarHNg8FZRAhRAcwoEKHyrS6UYNoCKVgBBAoXjuAVWIPoYF9iC6hgClg8VfJtSAoiex2EziqQ06OKcSjRREgUsS1DIuYxFwMtMCXAEO9UEId6QagsYhbvvBMABGwgIGJa2qLwLzwRRY4YA1SMIVddAqswhilP9AU0UEUsR/rH4VmZOmPxbElnKg+AVgoMZaAiGgAGsY7YAh+3+ebucnLkLVAwqCHCPfdMvhAfIkwFQKRmoN6HBz8PdIFXGoDaIWcLBGxK2EbgHuY8HsRT3+VdmZAVPEvQVroOFA3E6P/yvlm/kAIFKGCAAdeRgEQEVlKhZQSwABtojYLmQIMaLAsAoguEsqTwJcVcpVwuuIRXbpYFjXSLCx7biBuc4AFTrW8gptsgf4gXknpFzmACAB/9ssUmfUmhFFhwyaOuYwoV7Asx6iNa8CbzmMgEcS4QA4o+PjMDG/ygFkrEBAAiAJg76EF3wYNAKUxBg/HJyU2sKSKWojfBhbTgDEnATW26gkIGICQbnqIeCvHTKCQwICJcIBGvkMArPewRWMESncAiFgP5SaYIFnjHeCJnBfftRxHzatKTwLYhy0FgPCUcCE5Iwp3tkEBALhkDd7BzHwh8QQqVOKUp5ZLJTlYEiIz/ygI+EsKAVAiAH155Sr2Y4amLJKMMHUJO5F4ppdiICEKjQcgQQNAV6SkGMJUwJTTboiRQBqJsc0HI88B4mtVpMySuo9PESgGPPTzgAaGhC7RIIIU7BW8RObEQEIvmJix8sJuoCRnaFlK593HEA4nIwykYdb+QUO9+LDIdCmS4EQZ2EjsOxc4c+lIbPInIBfdiDASaFzk36CAeQdDDjZYHP0KyMSEcEshCIlCKO2QqSIFgaU+mQAII9uQOh6knJhVASpIYMzG3EQEX1HcEGJQgDv70ghHOKJXEXKWEtxFAEOZQ0hwBpY7wGkhXnLENWppgjIiJ00IMUIC6dHKiVPFa/5Ts2ZmF4RSMlikeIGZQpkHsoUueekKFxmDW3fmPEl6d0sZWE0+1MuaE7FzIbRK6kRS0wZ/quRxBcbYRV3kBe8wMiQFKwUc9bFazmtWDA67jF8UwSgS1kkwlrwoAI8AsEUzhGVUQeh+sOmEISXCfQvFVIbQxsKdzWUApVKCCZ2Zyc3IT0fqEasL6xMMJR3kh0Xx5ySa0QD30uWxVWLgQRpkhBRHJ5mIg8AQaDLcSYHiCTEeLJzsSljPcVKuW8KXEYYzjBw+gBSoEARQlEayIELgBKEMA1vD8Dgu9a+9pxOQBM0jJImhc4Y4kMoTDYrV6GlhAE1LEBiMgxAUTaMIpmv8w4AFjEgCLmCnqqoqQROxVMSX1rYIlkgUaeMpQIiuOeVJABueEoAnCOTAmATwGa+JkDF2YFBZqop1AaDEnFapmXeZwUTb6R7oTzA9FjGCF7zJVAGsgERQiwqNkTBlyEchwE3TcgkaxhzgboApw78AC7UwhEHO4IQkqBKFFrLM1IZrOYBEckiG294hAgUAfxrEPWoxjHICgBRRDkqwpgCHQcnpCDQLxEzBtTDOCds2as3DYMItsIEZgwrsSwYEdmCoTgqgO9cxQgeeaz1QSuYcATAXZuURAVwwMxF+pwihAN0ZDkHtIEi7hAafBzFpsiJPpEpEMESHFfHSj2z3CcAT/KQaXJLPFJAOZJekXGEgFbRGvvihhgJyYQrQNLjEApNsaKGBgCxpZwCji8qMc3KOEDFhBM9QzhDLcygzv2MpA6pWH8eQ6HvG4tgBwndaUUijPUriDaBYALb0CEgm//lK3MnHRTyfmvfb85o8yDAJ9kMEh+Gpr8EgMWC/KnOSMsYIF7sSAHDAFBWxoATtulYgzPAUCLYhIHLnSlHc0gwL4kAcFKCAPqDsd6qZxcQ1UsB3QDZYBzSDC1cPbAlaLwBtQsMDfgrAfK4hIpNCJHzNaEHWpR53qUcfHHCBA1mVRuF/9DckG9DCtJ/CQ6w7sy3YoUfOBNHWCMEgBG1rTEJhD/4EdR4mCEShA7S0kA+SNXepDYmBaudM96hK4O9TzYMWNLEIP1SnFr2tzna3vh5c2lwxbCWvo29szsFjgfXhykAgLzOEUfcDAEEqwjao2Iw/WZJczgn2aCGhdClqUfng4OgQJBBQOW+BA5OvZgpxvBKEjY4xKVUCDkSdLCvmE90Dwus6QYHpZ1kRMCzLgxs4UAQ72IIIDwAMcoAwm3AsErEA+jEzlCABKAdYXgM6mRVFLGB7wCZEAXAlhoVwFdhMMrACQbSBn6F1IfOBitMcpWFqxGcDiUUkEVAcDrOAKNQEwwCBQrCAErF4zkVgA0WCv0SDvIEgE3OBkNAFxrAkJYv+SAYCgBRKRWr2VEmoTCj6hFE4hFVahFYKJyXVTfF0hF3ahF34hGIYh6+SeWu2eGJ4hGqahGq4hFWahNmkgG8ahHM4hHdbhmhCa7n2AHe4hH/ahH9qhG4IRHP4hIRaiIR5iBVaAADCM7sXDAfzDAfDDAUTiJFaiJV4iJmaiJm4iJ3aiJ34iKIaiKI6iKEriJJoiJaaiKa7iKbaiKraiJMaiK3piBnwiKt5iJeLiLOpiKr6iLP4iJQKjML5iL26iLrLiLuaiMh5ALfIiKV4iMkZjME6jLPYiL6JiJtbiMlrjNl5jN35jMoajL1IiU2BgE36AESCAOiKAIKQAO7JjCgj/AjzKYzvSYzzO4z3WYz7G4z7WIz7aoz8GZD/+I0HqI0D2I0IepEIWJD8upEEypEBGJEKuYzuqY0XC4zq+Y0bK40Z2ZEZSJEjS4zuKpEWO5ERapDtipEpeJEumJEdqJExe5EfOJE3WJEyOJE6SZEx6ZEn25E6CZElG5DwOpUi+5E1qpFHa5EuyJFDmZD76ZEy6pFSiJFWu5FRaZVW2ZFam5DpSAGS01xYqIcwhYhV6DE6NZRp+kFluhGvA3Fii5Y+wpVqd5Rkqojme3OuQpV7uJV/25R0uIlyyjhn6JWEWpmEeZiAW0SAeJmM2pmP6IR6e42NOJmVW5homZhCFpWVu/+ZkwMAwIEAUcqZoUgkZ2tNgjqYU6l1oghFmPIAyrKZaLQADwCZqfiFmBs9i1iYIYsYM+MMGFgE5fQFtsqYb7MGi+cNw6mYVRqZp6iHvMQAUMKFyDoQlPMDvAV8SNdHIAR9w0sIwAEItvNl0yuFt7k5uIhgUaKdyMoAboIIVAMJqtCdo2tw4PQAmJGcQYQYt/ER65tZ4qmFpdpMTbgSGvQcDZJh7KAAOWkx61sL96Z2BIuiBGkd7FSh8SKiCElZsTMwM7ANo2Jc2ZIVs+lh7HGh7LAB+csZn1EIEjmiEIiiKaqgi1AJZFMEPRFpQSCiGLuh/gmB5so5mAoAi7MMM7P9BhxrpPtjAPqCCeKZOg44RohEpkhopldYC9u1OH+yDkQICke5DXO1DLSBc70HBONTVD4AGKpCBRXBpkXZokRKpDXwR68DAxGzGQ1hChyppku7DntqpWg3CD/SDEVhCLfhDB27FkLYpn+qpDVhpj04hc3bT7oHAZ9jXmcqOfT0Ai1oMDDABEySBEgkBEwjBCkRAH1yqpZbTDxBpBCZMEYjqqHqqqOrXqZaTqloqaHCRWn2G7JSJCU0MrqYqxeyOG4BGBMIAOeEqppaTnKpVcZ6pd44DLfhmpWKqsobpo0rhj6bOIHaqp3pqEnwrE6ipxWSG7FjrueoBA4hruIrrE6T/qGK0pqraKsWsq7je6xMIGnDOQH0pw7QUwb2K6wps55zAAM2FBMAGrKeuQJrMpRGUgZnalxBMkL0q7Lhmq7YCZh5SBQh0bFZ8bMdeTIyuicS86ZkiaSdsmscOhMeGbBSN7Jq4wZ7uqZFeJwCAbMu24GQsgA+exmf0QxNMDI7ebMsWLcVZTLHOAIURbdF2bM++LLxWVSoMgxB8hofKVUg0bcti7BNu68cMoiLMAJdq6Zsa6TD8BKYZia6+BgjI5gIUay04AG9kRR+U7ZG2KS2AB17ZWZMCVmzwhtsCLlcgqZJSaZFuKkbdASOYQilEbUgMAprgxzDgDp3SrNiS7Qxs/0ayMAIlNK6cMICb3ACJGCzZbimfGqmfLgYZVEIg0ECrEtgLtkktBACdOmqW7mlcGe7scq2PfiVhDaiQpmqmZiri1h8JBIPjIlYTeRWvBiumzsCmPYG+jEGlYamyCu85oR8DvABPianFOAk5zautSqyI4hklrO1rpCfWhgSdiu+5rqroSsYiVAgjVC+YMMAefAFW7WfwCuv7YivvVqDXWkyQeqvF6ldK8RAJnB+VNOi9QKfFMgEXkRX17k7FKqyvolY6Kd7uQEEEM8G99BXBdgbo/gAqVIwHR/CV/lbA/M+agO7sGuzuXnDAInAAA1+AatNptoanDJj3HMua0CkqyP8cD98sYojO3wURvDLQGKRYe0EA9zIC+p4GFBhpBs8FvEbAE3TS+2XfD9ACEw0ty+bKDQvwBbbXeU5GcC3tlMAsanyBKbDxE4rNHCTv/apAHVMJA8CCa9rxj8CxHKevJdDCFZfxFUaqDjsnajytIV8hcD5AITeyJA/EADtMGk9yIVZxiGIyJwNADoPRaXZyIcIAI4vydFZywlyyKfOhH6+yYyKyWymyK88yLc8hKs9JkNayLu8yGH5yEYUyLwezMCvhLcuJKg8zMkvhETaTEbCBG2+EylUFEXrvpzABB+gqA5TAwfEOycHyL8tyMofzFIIAFGRAbRiBypSAOldA2I3/hlXFTVXFQDsoFAzAgRPoEr4kgTzgTgRkyAL4sz+ToKFMxxH8M4r2Qfw8SowcWBGwAz4jWDGvyTGLM0ULGqJ5gAvgjgzwiCQeBTMkAQVYQNQFnAcEwRn4Z6QkAjPEKP3shwkmHC0ZBnSwQyY2ABFMgJ9FhAjYgwVkQANkAAfcCgrwAyROYu3BAbG1ly8HEfBW9BdCQCs/JghEikUthCPliFWQRx80wAE0AFdjTdSMkc4IQDv8wwd0dQzgmqB49QfkgeR12ATAwNzNddTlAYL8mRk0m9Tgw1EEwRschQtwAAewU8g8tFpFNJjkslNzIQwoghCU8u5AgBGQKxvmhxl4/1UrAI4gGAHL7A374sY7sEMejNEg+NMcWIE2V0A++FMeqEwFTA374oBMZ+1luAEQtMNTDMWjQEED2INGbHUyrJejKLXvliE4J8ap5euPMEGpguC6rgDRSDYT9C0XLoAHiypyklwfmNN93p6NOigbzorbYRUKNIB1CUAepEAFJME7JEEzuM/TVADujDV2AQD2JMK7NUkpbwAMvEMcyEPKcIAQSIDLvMPUZMwrOXEQITaWHHPtkBM9VAwEkKk5ve7tpecDoMJ8VtXE0EKzWiEMqIat9gNkO0ytzo53G6mFi+EPAUUfiEAQ+AEKvAt9iICtnY8AiBBQNcwFmMplQ0AZHP+ABfiJAGxBBmTAGdxfVQgBPkiABAi2k0c5B0gAF+1IIvBDT1sAUWfAkGfPZRyPBx22xhp3vDIBfDbR2oa4fWVuiQcRA/DqDPQDdU/4mdfChlfhqSrDCjBBHCg3eoJGHKhG9lq0jULvGm7P+w0CCrTDbLzLEGwDGayZGZwRCrwDAmBC70SHRFw2A+yDtbyDOybBVeB3wiWBBJQAAlwNxK16qS0E9sxYCqQAqMd6CnSYgpd2VdsTg1PJedK5fUHagDW2h2a4eP7bChhBCqyAsif7ClB3NxWBaoDGY1cVxNoXk1ZFBzI7siv7CqSAyxFWCUcyAxjBspd7t5NBm4dJFWf/OAjMEpozBLkzu7yvALp38B7sZ5ykiLnLe70/IUT0CFV0RYyjgB84D79wFKvgBpMgxwcIgBxoQMjkgQI0wQZsQEr7CBsVRTwkwhwQoRGIiBmEWHuQAXWPOldjYtQouOnUNxh5M1Mf92qJ+AzEQRKukJnLjjL45kK4Cbqe6Znu7hNDwZnTQhIE+5CChpwzBLA675lqQ7pjSZvYJ1U0r89X/aAnzKkCfftC0alWfbAq7e7sa6sWq7V6/Qy0cwVOEsADhRuIwAHI+Lss3JUDQRh8vNuFiByYw4IdQUadRVIAysM9h96liPvUBnLIBQNM8VUYnGs3fkUpuMEgjDbt+pQU//DRz0DkShqZ/jomgFVrCm+qbrKgvS0TmfCdkwUURLuHu/v1WuqHd1NrOmpIyCyqvm8TOfsLr4D3diDq177Pyw70Pr1kVLGhLwRdva/tz8C7+rvCU4UqiIAcYM27XMEMJEIQLEEi+MHXwDNDsEGsHcFYD8FmqyP1JALqGMz7QM+C0S4OsBi+XEVyXCJXA7aCc5eC785SB8/uhTjwvz70JCtA1HIAgGBBABCMJFyRkKGRBQYhRpQ4kWJFg1YAPXgwo1REBql+/HggZIGRhQoZkolgkWXLlopCagMBgMxDCE8YnjTp0GVPnwRhNERpxMBPowWL7JlRACIDnUKZHpU6Ff8AAxwiwETMIQADEGejPFyBEy/IkiwSYgjgEnGQBzNHIPARYKZE3RKXPGQJYRACjCUossLAofZgjrwatM5lQ8aIIASCBDVRI8AFYolQdLiYQJVzCQEpOIeO14AvDJg/ZqA61RQKoH0/aJVaabAkzie2jeAs2nKBAwezQ0tk4CbjD1T+HhqEAhI2JgVNcttugnMRjN0sezuYGbwgBEUPRM4Q0mcfrYFBF03PvV7BygWlCujj7nIB9SbVb+du4t438PkEodiDlgKAW0A9+1aw7b8FIYJgq0wikkGACV24RAQiZkjkCh1M0GcyZiLqw60JGOBDBCc+SDFFARKxrCC/UED/AgDDTAhgATKsWEKAIY6AqIx4EmnggyAbKPIDD+JxoUeJHtyOwZY8Q+BJn1I0aCUQYGBOPAUaZAKQkIZBwElLQirTzB9qCYA3FUiQgobV/oMAinFEogWTJQsy4jRaUGGKgS/PNFMb/yiKoIY235wPhj1GAmkGG1KLoI9AzZzhiQgMJcEUGpycsiA3zgSvTI4AyJQSThlMaimDQKU0JFI9/a8IHZxxkaBBLABix7ro4CORf5YIA4QmIXLDA2fgkgvCgjDTCyIYkTBWgHYy+CAeFD0QwZROIWBggQsUa6KJeQTIAglCX/wrq1gt8gw0di0ajaI5Q6JFiE4BgKEMRlPb/+Cg01yVySUIsGChzc24WwGkjYQgVF9GH0BFkIIYINNMUTW616UICiaBkqhCGwS2IyqOiaBWRS0TvAEJiuAFEjxWE1439ggJ4zJpeaLllz0GmbsAZ7gOgABdRW0geIODgNxM8CQIgskS+WAOAPZJJAgO9SHXhKYBEPGtEkVox4KxLdiBRVvz/QsJzLYYWwIJ3iFjBA8yAQECJt7O2+xEiChBAhw84JsDCShIRuaDyOURaYo8YwOCxSdCsSIIiPthH4EiyjK8OEAoaaHPd1qBy54g+AJmSvA9yrR9wOvH32JtCEkZf/BdAPTb/RGapdJPT131moXQB6aRZoPh9tDb6//OdE19Z9D40EPXWfnTF1TVZ4Sg/1x0yIMTTAAQldMhC7wAM3ELHcLmRwcU9jKorbcAkMuFd4So4B28nO0OMxGYgaCJw7uDADVB4BJciccHMOABAVzrgApcIAYwEI92yAgAIHCD+NrHPYi4S4MRwQBpLMKAff1AYxGhVy18lrRDLSM4AYqY9JpiiQfYCV0MWkANxsBC7rghdvvwYb064pMFKGEMpuggdg5FiQUFKGdHXBwMTJSH7XgPQmX4ABAUiIEPBCEZVrhKHpqBqq65xQHu2IcAMmGgBSzggonYxm8Q0gYkYWBHDkhORCDApQWcYgERYEAO1seMNZJhHsfSAwP/FOCtmYiwXHpwokGi9EiCVKklRYgDDPHIBCbUkCqYusPROAOBZ2CieUNjgu5i9YRP/gcGcRgGKlbghmE0zCiqRJskDaJKUHLHerhkFwzakIisMIBczsggFDJABDFa0AMJVBJB+qADJzQgHhNaYDyw6cB4eIALDEiLXmCwAwVajQLlLGc+/tEAxQGgJJfQARqdVIbDZA4IZnCkLzkoSXn5knul5Oc/AdpBoKUwoNyBwMTy1YZ4TI0lhhHBWgiylUQwIw7JqAs9OGAXu3DAARBogQVo4DQm4IMdB0DgSVW0LmIqsB1zkE9BFCEA9uHRCAR1YuMe90hKFpSnPfXpT12S/yVUcBKoVIGAmFySgnc4CQZJcFxoFsAAPp5CqgsYHYAkwAYAEsQI8jBcUfP5yH0WlaxlNasviXpWta6VO5GUpOTYGle5zpWudbUrvMLqxA/ela999etfARtXnEpyp4E17GERm1jF/ievRxzrYiEbWclOFrFu1ekHKJtZzW6Ws2RtbAcf21nRjpa0pX1SBQTwVJ16IAP8OMABXPta2c6WtrW17W1xm1vd7pa3vfXtb4Eb3NgGl7jFNe5xkZtc5S6XubWN7XNfC13YRle2w23udYsLXdd+4DO4TBEZINMYyIyXvOU173nRm171rpe97XXve+Eb3vjOl771te998Ztf/f/ul7/wFa8g/htg+Trmv47p74ERTN7GkEECApCSJLW4uJxO2GkVPoiFKXxhDWeYwxj28FQ6vOEP57Q7IzaxiFFMYhUP7MQhdnGLYZziGL9Ywz+h8Y1nnGMZ13jFFuaxhHUc4skFmcg1Nghq36VTEJqWyU128pMnMlixYhbKVbYyXUlcESPAiS9JIOVEYJAChB4EAhBYo00mctA7FoEGdwRzCrjsNDH701Of1eA0r5xnPeMSCkQ4nBVKsFSD9CERWbilQeARAydA9FOBnMhWhjATYF7rpEBiKERmtYWsPO0eZji00wppgk5BAQiJuLRy8HHPJ1nWiYXd86th7alB6MD/DEdz0FxcBII+CMCYFRFR/gySgw9kw3cSinRVBtO3CnBgCQ/FI7lQgJhZ8a+Us/KACyqQbXrQIRUyTUa2JcCBZPSoBeJbF4PszL3Qxprd7abKBV0AQHJ5etC4Fk4ZzgAHFhHOB2SjgAUacIZ/W+AMLpLQHxaphhgRhAH7AIwJdbSWp82FawZhwGSc8M4FpiiLChQBAodwtGZlkLGpzXIHXe1ulbPLQJuVE60R5rStaKYgurY3UPLRUQYs4R4TckIERdCA1mbgH/9wrWuD4AB9rBHSpwDBxT/+2n+gj9GgLhdioKCjRJDNAv8AuBQdFDgvYAYFc7j4XLYx70M2wX1u//k0VdINuXWDmSeeYoARrurLu+e9g30xQlqrDANLpGarkIVBDGKEr61szSBloAxiFlCGd9btIOXu9RoXiYnV3P3LIIDCWBR4wCEAwAhsSEK2K8CGFGwVMwLY2tm3KQIiGSkPAGgLGgmSuCRQPV9pyYZElkZno7D6iCn3SGtGIvypTMpegIcXBFZAJmUof0oVi5gR2A2FV+0ysiISdYMW3zQ3zGUC4WTRELg883e8Q2YQ6DaEMBMPiMKgfoNpRzLglgL9C4IM+tf/OxDq7FzvCIwFBYhAbSRiBdghCCYAAlIgCdhhCN5gB4YgAMqsDBogDyoOWhYk7hZn7pRjYWIjVv9aQ3Yw4ZGy5DVmABOcz+6GZwb6ge+uLClQg0AmyypEgIL4QqJ84Ax8gALkoYCywALeaQi2wSAOTwQowAMejphYZGpgAGrmwElkQAQgpNusaQsoQOMmBKKkhTIqQFcyAUZIDiJWAt5AZiUgoAwO4NT4glzAZz6kzIngSiJSEDX6AZOq7xlewzjIQIMYQBH6EBX+kJ3E5RARcQNOjkGMQEtoqSAMBBERUQEW8T8YQBIPsSYMERPFhRKRpgi+JE1ogxMP8aXsqgi8ogwLw5qsCQUswJqGgA1CxC2sQAcSAQluTZgopg1YRAdjqvYmIxOgwAO2IB88wAQQYDLWogjSgrv/XCAJYmALHABG5uBGyOAxniUtTCDmnGYyvk8ijOUb26q7IGzJkHCEjEMPfykVWEc8XoddhqM4Zmc7SqZmXsMe92AfHtFTKOdLZggBVkLwfsAeB9JylGIflygfC/Ie90EpUoBMCJIg9bEFOQMGMqIW8KRi8NEgDfIGqK+oimAJkIVJKMMBGGAD9mjXzCV1/IIytjAR8mACnSAPyEDSEMAKLCAZgENCgoAdssUUrCBwttAEmsBs5gACRoEyeHEbF8BfQpIrUqQBMGCdqmIysoAD8mFwtLIZBmMLCCcZ8OWCGE8OHcy7qIxiSvAH5vGI6AU2SIIf52RlEJIBxkEjVCZl/wYFaSgndh5gGPzB+uxSJGwmYj7SJ+TkLlUGNZKATgIzZX5AG5CmZKbPaT7CLm9GJATmFL3ilm7tmQpi12guIooADoqkAQTg4zJAD1BRBIIBAGIK2BggCSbj46RSReyBA1QECDBgLZCJDUaAMg6HGh0DAVKADZwEkFyvBYpktjKAjhLBpDQQIoZxLMcxyZzosbIEPMSDIj1lUmTHpkIjEAUzM5+FCVbAPNHzPFcAPKdEIBnGCNIzPleg8OZDTuQTPWkHBu5TPdnTEsnEI5FwP83zHesq0WaqQX6TOgHA8eiNpk4hAmYlfw5PACjBKlxvO6DANCmEZIzgMaygDQ4gq//G644mbhuRAgELYjYgIJomxAQwpUGCsXPcLKLgqeRUq9XOkp2Wo16EgD4XwABM8Unuxh+HgQVLZUZDSU9eg0/oMwJAwEmhtHOAIwKQ9D8iQF9UkBBLJUqdtI8KJAIqkTOedEyh9EUriEs750khEUw9BSToQSK4NAL0wUn7agGUEY9mjhvHrzIsAh7ExxcFYAuSoNku7fOYYTL+QB8QgDhNcjJMQR+MIAWIs/3IJTTTZuESI2qOsUdggAJqryoSx3cmLg6rE5fWrR/rhHYg4glwaA64L2mggEweoBaSQEW/gBGkQKvqc0dnaB810ocU0ocasmFKB1dpgD45gwG80zj//MQSGvJZhdWHNOZWpQAJCJQqAuRZ8/E1GnIGEIBMoFVY85GWqFVXGQQKhmGXSgZa83Fb+6GvvC91Zm5JGAABtqJBJcJAmMAWz2AHtgAJZiUR+MEtmkY+YmoIrKA2j2RC7kFFUoSCIEBCTJQgZqXsOpTA1EQ5k0FrZmLXHg4CkAGNKg4AIvTtpIL4OqgOGyQO/BEVkKogWJUExoAL4syoGjE8EPIgbpUEAkEVOaME+/LLrC8xVUZgIKAUDCYQVC08vUQkhqEUpsgfBfNMABQAkJZnl3YqtM8yz2QGFhM8HHM8neYLktZnGaQypxZsQ2Ko+CouCGMHB7CV0oIfbu4g/2oyX/IBcCYkbJLJAiejC1PH2KADwNTgHu6hmgDjYrcDAnjRUluSFU+z6rSmR1bK0Bh3R1JHH96vMKGEHB9pryjCNDSiX6zkUEhAB6nCNF4FFa7VIBahEngWWaeCAVgWPCSG9IhBkzQpCXQXIV+XZ7lRKuSEMe0FX/RTd5HXPOPsCZLWZF2CAaAgeZmAd5mgI45Xes3TZ5g3duMEXU8wQLGXCXrUr2rxFiFi5uIgBu7BAPPh8ZjlA85AD/wiC4jAnYDN9hQIXw3C2Laj3EwABxLBGHmEWyQ25kLSADXqHbjscr+RmPKgo4KRa1aU/NDN5AgrRyfiZpOPNqjAYzhXIv/6ADyUYcwoYnnMtiKHhzxbAgIMAWZQVyqsTzxQySgWAWbODaCW54WT1TWg4YP7KuuyIKQYbjJ6zgBlcfwaVHNlSkZgwF9g4E8LogX07TRjUfF2BC7KLQu2wRJQ4B1+M4j9IykdF0UlQmkuVCIkllscLwuytlT1yRwpQk6eNiJKQQVCgDspogiKlD5egAt8uCVAQI+/1zDv4A7+mC/6gHUN6gVMYWRxCQL6+JAnQpYebLNILQuO5uKQxAgLYhBOMwjGZjBqFCnWZw6MABonZAiSQFemZRJWI8yUxfyE6WmwIuxK0mm6bWJJloyf7YwhMSEGY1mcxlj0t+QqGUdXLpn/lTmo3iEjy8ANI4+6DsAeCk46mTAZeDFspjBf5qEBsmVqHG9a5sAK4GCCqlIAjCiQ2YEZFncyzMCA10eHu4MXw6BpmHFv3ZAB3qE/O8NzrxOOlzmgBbp62KHgGKAZmrlBkgAs86Wi4AQGlsRBLAAXy7gFKGCbKRYO5OCEPSonuaUZLEACxAhy5vCIVHagUTqlxfSRnu5BjaqDPBBpQFelabqmbRplNcj4bHqnedrdYhpeQLCnhXqoraykUQ6DiTqplZrJfppdgnqpoTqqJQu1jrn44oEDtDLctDqruXqr32ZwvjpvxHqsybqszfqs0Tqt1XqtxxqstZqt2dqt3Rqu/8VarvPGrsM6r996r+larcH6r/MasN9asAWbr/v6sBE7sekasAt7rtvarBnbq7t6sgc7sC3bsMs6sh37rhUbscGaHl7ROosPA8yptE37tFE7tVV7tVm7tV37tWE7tmV7tmm7tm37tnE7t3V7t3m7t337t4Gbt+n2Ro9opqX6uJF7sZAMl4w7uZ37uftKCMryrZAauq37utWqqWOlubG7u73bp4w6p6v7u5/FOIGCHRpgaowAq796cEpAK0uA+8pgom1MBSoBo0PDzH5COXnEo+jhbd67vd/GvF+EHaJzPhbAvsHgC0zhlmCAwMk7OLTbU56avKEgBlwgKkpkRwDgAv+y5QPeCYJOk7vi4YaTkII6lessgALO4IWHaAyU6Cii6hpToALYIZ59QkTYBwZ0BYE+/MPfSRxdE3MPIg76jesogJ2FiIi4AAtkluSUhm4kOcILAqe5h7upfGi8YmnBxdBUgTI8BAWCQRU8YA3godla0xo93BmQALxEJBEEjgLw4Z2qDgCYdwymhkrZqXP2vEoJotxYUWD54YZZYkJNIdEEIBgwwwQEAwW2IUHhogkEwQpiQATyADIO79rMiR3mQnbhtBLGICtuVYcoJkazHO78ubgBmsovmfuaJVooYwIAQQTmwJP/wE9LvGu0SJsQqJo8M37iwRsgooZJYAoq4Q//KkEKjj3Zl50SaqgI8EECmoH3Km/Fx+bfJCB4GS6YJxQMZs0EyADxNOA3eUQwfm5CDiiCskUHZ0WXDaIUaKAUSkEP4l3eSwF2TWHea6CQoZZiTIQLwvTUWSK8ueekI+Ih/LxU9Jt7RGkY2LMIxmGQ/8oqPIDQq2IFjBNczGAb1OChwMUEapE18yUFWgAIRCAZlCoF5Il+tVJX6nwRGEFTCnnmab6Q8buMTaQ1DwJq+CFXZMpsjQATngAeXL7cwsAdEI8GknJrECIFGjflUXkIvrp93xmPXoYRsJ4RpiDrYWYMGGEMKmEKPBjREM/iBb5zRbuDsBwomGMfUGGrUBU1/4IoMmVo7iMCJlQYXqXc1w4IxIMEpbTo3DCj6s+b6/5hAV8YE3jWkSnSm8S8IIIPAIwlEU4YKPhgNI4kSLQoRTAgE15q4qquBQ5gbLzuHzJAyQ8+ADBl9TGFVWEcUwpA9dElHB357Blnui8LzDJiGOgk70GFFoZBQPwBcgTvAeweIiYl7++q0QkdBuziHSbAGlMAB+7PCBiDDMALOGaOAiQgAJoA+8Ef+zcA/A3iBhb/KBjALt5AV4bgvVvAbJalLSi/S+zCccCLDHLACYhgMcDL+lWCYgFCR6IzFNgsEEQmocKFAQA4fAhgQYEnCgps2BABgAoSlCB6fMggBgokH/9LmjyJMqXKlSxbunwJMybEEgJSyLz5MV4Dk31+aAPAwAgIjzAA/dADwMgTnDAZWPpR6qSiB6iOML2K9SMUHWYmeHQDx4MAFGAe9hlb1iQMkRQEZDkyz8mHufHkzsUwxCoACFQYSQEBIULgwAsioiwCZ64OAQLsfnAiIJNDNx4ShfDIQM0HxmsewoAjwMRQk4oEBNkhgAtiDHcxsL6b1uOiSoxqV5oiRR8WEssc+lOhZzREBvNSZz2OPLny5SZpsoHAnOXckhCmCjlZZM8MB9FROv1B42RPbcK7m9eqw0RDiAuaFNExEgCIIksE6LRwwIJ+ZkNBKPLgQhI6ZKGBEWX/CGDGOwgg0MJizLAx2gI1kOBXJVJUguGFFt42R0n6NNFEBDl4IAIX+iwAQxuRDUWZZR5BsAADKmYyFHGMbcFPBvzoFwR3ABQBhAheqMgFA0nEEFkKbCCgogvvePXiIiyMgUQpu5FwBCS8DTVhRyWNGMV5Yo5JZnI02VRmTjuVpMgP0Oj1UVFQZZQmDE9FRdoD5KUp5lYmwPkQCDAsER8UQAiwRRAHNHDAocYBAIVY8WAgwD2JNNAMV9sgIIgVQCSiAXullKIHDaaOWgoNo17Z4UmZCZAIESUcAcIokTnUh0CXeTRUKivaKEKOjDbAmAtevSrAB5J+4AM7AjBDhhGC/xTHzEn+TOmVlGMcUQoJ2z4xZXBsCtAZn+aei+5MAiCQLgBymZTdA0KU9xAEqfxQSwF8OvUAniWNR2+7WW1lbEn0ZaFHC/W1IwEbDjGAQ2hWQcAABRZQoGIiF3PgQTwfNNDAZi5+lBGdwkHwhLe7mkQZY4yJVhyNAAxS2coQ2UsuDGqMRcSTk3mAQqsAMHExBYfaYwE9qF0K8qEyl6StVYt4ewS4Y2hwA0cnFZeNwF5/zdyZ7WKwJlH3PjBDKTCUgcpSDkFhlE8LuDEMEwEvx4Ax/Url091gy1SESDZ7RigSLQAxhCAxiEDjiIkg9VERHmxhFcGhQgCkCCH4bdLUgf8MDtFa8VR2xT4C5DHjzyO/GLMRO7QzR2lm6AHkrSXZWhYEfJQIAQgMjGB7Sd2SYModG23LQCUkzDHF1SZBLEBsf09P/UvOQYfudC+2OYMNP9AyzA8PYOJQdt+LHwcgDyjTEARYSKHHeshR/FR4PPVdPVMQEGlw4QA0cQQIHEkADagMF+4muSyEwAiX4EoyUoCJBiWCJBHBwh30UAo2oApVNLgDEr5AgkCEykO+IoJIggEkJ/hBAF2bWc1ISK69kOF/86gMEAAEqHoRiQwtAE0mUgDEmN0NArNhxBQYQRspWOUGY2AECQ5oEigswRkjzJ8Vr/gRsaVLJ3Hawz7Utof/H+zDBnqgU0+UoYA2PeAHN5DfE5THiDlwTibf8ddH2rQnLMZkKwSKE3wo+LAyLCYR0nMIBJpghBE15mMdAxnIXvg/JTTxNpUIBBIrMQbamCJrgcihIc9iBjbsLhgAsMI7VGQCBKTAcSGg0818JZl6WQFJjJPfQxZghCREzGNbuOHHQLaYPKDElQCIgAI2AICp8YaYN5vRHPUITYHRhF3p0t5wADEDhw3Ci9AQDsAg8JS91WsBuxmDKZ75EjuJ81/4i6ZLIFCcvHiEPs4IgZE40IxDiWAIPoJIEfKxmHjAiggOsIIOXKAXeMQgHnPARAQicJENOGCiF5noExzwhAVs/+QvH4FAC0gEhpCUyJDFicekxKJAk8QMAEkoAQfYIZYtJINeECgDsTqGKBrISASkdMgFBDCEFPSzJBuw0h1YIEIQcsRvbhhQFd0J1a9pEV1c3N73htGm78XBbUV5wDBQYQm0DUMIxJRQCKGUlbyt845U8WRUXeVMiGxln0ZAkgDaQQQIGewfZ0hGpMwQwI+agQMSyAdMK4VQlkBAkl56UQ/z4LvF9XR/QBWEIFhZklc5gw3AG0sQkqGvjubgABI4pQA6tJbIxMFixIpHIrjwkd+o4A9OJIEU7kCDjYYLAFgwRRUlCMi3Chdd10vXuz4ytzA+gBZGGd9DjHCvH8xgHP9hrAUxIwCuZaAVK/yyHzvzONyU7HQIDQEBFBZXQAwAIQ/v8NECFnCiGJGhfeXzAIEUQSmTYsAFl+hYMoZqkpKB64knWQBgRArbveyshYMYEOhgUMNE6EAEH7BHMvQakQi8N0Yb6M9eiCS6jsWjHRaIWBDoELDhTeEOpSiAAiIwoWU4AITLKAULSJA7CRYyvDwe01TPRbYCv7eYC3jozTYcEfiWhJncvZNU9IROHtc0D5Vz2gJaQBcMLMZlXJ4gRAaBKA1AoSCCUEBhYPAp0HX0C7UhgcpUAo8ljPRh871lkTFTHAWmyGNa5rKfnwaUiM0BBs2gh0FO4ZAcsJDJEXH/QACEcyVTNMSsbg4ElKBgAcj1eNM+Xle7rAlVftnRI314wA2izOm3nQGtMFitfl59AH4c4ABE2K6hXBAqer0nPimJQPKkIAUVBNdVyrDAsCHiNxhQQGgLSEIzXq2ff8R61tLLDEOpI8SVMEAFlZDeE+7gF02netxi+rG5qvrWIhDDrQ9jAjLJfZ6gCILRRirBdlGyAOyNSd8xgYEg3v0iK5SADYwmGZ2ue2d4K7w7xc3eBxYO8TEVPOIUr/hwzc0ndFt84xzvuMc7Ps12HffjJC+5yU/uToynKcgob7nLXw5zMjUcyGWLuc1vjvOcq6QCNWmXxxYE9KALfehEL7rR/4+O9KQrfelMb7rTn450QQBd6lCfegqqjnWoU51TU8+6178O9rCLfexkLzvXud6MnqerLX5uu9vfDve4y33udK+73e+O97zrfe9877vf/w74wAt+8IQvvOEP77IPzLBdJZAAYR/v+MhDfvKSrzzlL2/5zGN+85rvPOc/7/nQg370oi896U9v+tSjfvWqbz3rX+/62MN+9rKvPe1vn/rF63z3vO+9738P/OALf/jEL77xj4/85Ct/+cxvvvOfD/3oS3/61K++9a+P/exrf/vc7773vw/+8It//OQvv/nPj/70q3/97G+/+98P//jLf/70r7/974///Ot///zvv///D/+AASiAA0iABWiAB4iACaiAC8iADeiADwiBESiBE0iBFSgTMcIAGaiBG8iBHeiBHwiCISiCI0iCJWiCJ4iCKaiCK8iCLeiCLwiDMSiDM0iDNWiDL5hvAjMCO8iDPeiDPwiEQSiEQ0iERWiER4iESaiES8iETeiETwiFUSiFU0iFVWiFV4iFUzgKUKCDghAAAVAABeAAYQiGARABXwiGYxiGBWCGXyiGG7CGYEiGahiHbOiGbLiGdniGZChRFmEAYQiHZhgBbPhQhdiGDxUAcBiHgmgReFiGeUiIkAiJcDiIZBiGYyiHbkiHZXiGX0iHYdiJETBRdWiJmJiHaPiIi2j/hnkoURvwh41IiH8oiIV4hoXYiK8oiIloiXh4infIhor4h2O4h6Voh8UohpbYhm6oiGTYiX1Iimz4iY54h3JIhm24hn3oioBIiIM4i4Zoi3CIi4yYjY7Yi9QoiWK4irtoineohm7YiZ4Iick4irsoh6aoiqlYjel4iRfxipRohrJIi4hYi+AYhw/ViJXIi6p4jmH4BGwIAnHQAu0CATkgCHi4Ae74hROghxugkfl4iWt4hssYAI5GUW6Ij/fIixeRi2FoAF+IiKgIkodoERhRAMOIkPE4jJA4iLjYiZeIig5wkZZ4kSAwjWfYjjAJlBbRiXR4kRPlaI9ojiiZiFO5/5IGEIpEiYaqWIuN6JJyeJOn+JXGaAAXiZQmeYwWoYxYqZFZ6Wh2yJaBaJRBiZajCJWQ+JRZ+YVweJGICIouGQFY6YuHCIYXUYuZuJA1GZUs+Yf+yI5seY2e2Ikd2YZtCZMz2Zdw2JZNCZRmaZduyYlNuZJ9aYYg8I4x+Y4qiZiGeY45mYd/GIxmeAQtEJHtkgNsEIYTgIomOVEmKZe6qIsbcApmOFGnUADEeQoOIAgTsIkkeZZFmZdfSJQQhZZo2JN6GYiC+YsuqYjLGIdHMJLXKI2F+ZTAWZy46QBrSZbeSY13SZbLeJfn+YWnIFFo6ADHeZ6KOJLfeYx4eZpdmf+I1/mOiZiUZNmVF3mdFQGLYJmGkliYZhiIoDmSEzCfuFmZ++mbcYiJZUiWY0ihxYmcjiaSzFmNokmV0cmVuSmglkmde0iVU5mg1WiUH1mGs/ic+cmRnnicKKqh7JmXj6mMAXAEfZiRI7mby6mfbumWwTmUbXgRhAiTrQigjEiVEDWYkgikogieTvqSAZAEgyCRI6Ckawmkx0mmF6mcaIiZ9VmMG6CewTmVTlmfHBmUbVmH9RmXU9lhgxmUVPqLm+miueibnEin+9mTi2igW0qZbvmUZ9qV9emoJommbzijjmaUePmhJPmm+YmhZGkR43kEg2igP6qNoYqYWxmUY8n/px9phyDgoyD5jnfpmW6an1c6kvLJqGgon5gZlDl6hvLpiUQ6nMUJmnTakewprIkYkqgpnXKoki1anXi4AIO5nnbonQUZqqXZlrJ6qzf6aLVaAIzqmWlahk95hhMQnBahnMMJorUql3gIlMlanEoprZwalHr5nHrYowSKpdrIjIGJpxGgnmBYBrOZLiMwX0R6CkvphrhJoSBAlOTZok7qlhdpn98aABQKj9+ZiMEZATl6r0qKltvYo4QYpXi6sZ16lsXoiROwh9e5rk0pq6eAlROFsQmLph5Ln7/qoDqao/eJsWiokUELhzZ7skqalwMKhoV4nCpLlqdJoN9pj1/4/6mZeLSh+pz1CbTveZeMSp4SmozZ6aR3iYrB+ajdWqE2arPzKYrQCZoGmYvzuY0i+59xiJkpy4mzWqU1Gohiq7Vj62hkm58sOp45i5d5WaaympHx+JQgMIbAOat6CaLbiKW9uZdMyodHu4YZaocZqrH2yqUEiy45QLbDGQC+mpca+ZRGMAc66olmSp9narS5+a1rKZkLoAd6EK0sGgH+MAfx07R5SZby6btZuQF6UJMk25GwuKCN+JSbOZ+oSKCn0FskWZ/BeQp3YAqY+pwB2q0gELCPNrOnYJzSeLHoaJYOAJiFSKDHKpj/mbQ+6pstm4gaiQD0QAOOlgT5MAeo2/+WGYqcgmC80hqfnvih8fmU3wud3OuSpluMw+mrKUABeaABWfmtxtitHPuFTZAEyaABBUAGHHAGrdSMYGizcQBaKCqQnNm4YAjAaaiJgjCGWFujuErA1TuSnDq4rIumXkuf8OmrYuqLGkmciYiVHfZQGGy1Dbq+EjGdJFyT9Lq8dNq/c0rFQCqbXTiSgiCfYcgA8rC6HuvBMcOyPfyIbmqfnDoBQKyfauwPjEAJ3hmgTMQFK3qyyFoKlRQ/gogFjGAK3smpZCihDgAcGqsHzUuIfuqGZNotgYAExwnDBbAANjYGhZyjZAiYRsAOi+JImzwsmZDHHjqkaJgEk/CzX4j/AJggtlv5iwXwsIMLnMsaoGVwBmVkkgY1BBoAAgeSCdA4hiDQrAFgBHCQBWBQrvVpnqV7CR+wugbKBs3MBpjgzGwgCLaJhnARBEiAo7haklb8R0dQBrcMhmIaAe6gDMzgkkS5AG0QNAGwFiPhsKEaiHUVD6aQtq34oRJFl6eYBB8wBIXcvGXwAZnAubU6hm7qqBXpsgJKuNy7m/lYwxaMimm8joULsFQKk1PZqy97uasIUSM8jfqZpmI4ng4Qkmx4Cl0qkRSpnCuNmwIiAsyAjkN8JIwDiH7qphjhicnZuqg7o7rpq/6wVIIJApIcAgrQhltMluQUQusayVPSyBZJ/40BQANIpQHE6QB3UAl/MFta/QdS8Ae+RcBHQAY3xsd/0NV/sLobwRFmzW2UILZcKmeJMBdzPdej4wJ2CJxBiYpGAAQowAXiW5xAKkgKhIhN27TNKLGkupcR0AQ4IALesIf4qwO3HJs6sMsinbr5MAkFsgQTxKqP+qkT0NglIrUCwhj3UCkCIAKMsc6STdqdyLGnAMOomARAkAVIgGaMg5vQ+IVM4AFmMMEuqQ/qjAQgcAp8gAKtdK9nuAC2As7AbFdulwn1GIanoGiZgLoXCT1cwKI4+p7ze54U+rdlm5vbicgtipwG/ahPqa3mS9FEmZq/a7LPWa/+qYurHJW4Of+n7o2iV9wuI1CR9Gm9DbJPwY2GnuIMYACYiz2jxxk/QWqfAwybuzmr/jAGlABRMgsC0eo+8HMKC/CpLxmSSkA8U/uFC3AHHJGwGIGJamgAMaYBGFUDU1BJGBIIGFJJGrCHxDkhweYtWS0FXLAbgfAHmOQXf0AJvkucEwAkXeGw/eG985EeuEyk36rB/wUC+lAGlTEH2ngEZ1FPf9mVYv6XDisfD0Waf/mXRh3YjyYgs1PNBpUJnyog2aCRpDlR5vXbGsAAfFBPAGC202yb6ZwaFGoEFOADAjEEFJAP9kUEZ4AEuAkDETMELDu1jkuk9OkpIxEBBiUApsCo53kKO+P/DdA5FOp8GSDg55uj5hgtWK10kQx0AEGwI7JmAfzQAJKGjqA4CigQDDk7KMBNmtD5q8YZoUdr0BHquCC65GZ6nfAdnIyrBwZtuiiKiUtLoL+72IBInXf7oHjIsausiMx5lC5MpB79hf6dLjlAvVRZAEcgIC4QAgjQzNDMBhyQDILezHlMwAJKoHcp5kvulFN5CovACN4A6BtwB13t1bPl1RbyB8U9o4vcSqWQlJEsbCo5UYVMqBshaQ5wu5s5nQVQChi7ATUwBoHw4cpDEuTEAozgFdeyDGmrnOhYV1mQDCWQDO/wDjpfAu9AAVMu4AHQBMh9QKWbZ9g8ht7sAWGg/wEBW5NGkA8EQRAUYPUU8OhWrx8hPIhGfYaTHjSnEAeTkAyXIAAukAwVAFAmkPPygAR2qCJmgA9BHw+LbjFU5ikmoAFNsAMi8MUXG1lOPx/xMN2+bK7FYQIMi6KMqp4GpUAO2wJnAAY1j6kN4vQtVQIVgAMowAw/39d5UAHJQA8YawSEsrp4aeZPTprmOo8nzgezw4sB0AJAhZzRrKg5SqYW694U/qZi6Ka8Hakkiek4S5RD7ABsoJygmZ2se6il+1CU65LyWrqeOYp+2sAxDJNizoYtwIXtcgFN8Kjm6ZCYMO1twBp14TGP8QEe4wTYPbYU+rOIW6tECoc0YAodxP8Iy0ADSPAEJO7VXQ0QKv5IUVFpjCkQETYUAHGDhJQjTyoxmsKIYqVKgShalDKhgIMCAQL4u4PklAMHAY5ECBkhocgAKQMYoKECyYQFWCqBEclGxRyVT+7MSQkCZIANDk4ZiSHASbx4TjxAfepBgAkNMGEywIEiWASRgnAIcKEBJYh5HqIEAMvyVAArOgTMpVu3LgowLJGGBBEnCBIjOKBajYqB8FQRpkTCACIgnl26JkKs0CF5QRsBXAJ8nBAAhh8zIY4UwWBiwtEyHsKEiBkyABl2DYIQoVCbtjwfOlAQkSePtoUPzAqcBGnEQp4jZXQ8FSFiajwPz1VrABtYACX/kRFYFgjZXWT3kCAXNGuAYW4iJx+GUFfj+ClUDHJYw1SK9OTw+jCJiwS5H2zMvfQL4C2ktDIQwJiOQumoAtliayGwXFMoABAKnNA7kRYqYAEDClDglPC4424z/lAqYIPNUGRrxBZaAOBFGGOUcUYaa7TxRQhGEIS+DTp7KYAJyKDHNgnYESAL3uShgIg5VDzwyQFhcq2zDV6wiAUSLAKjACUCmemJUjozIIAvGPlKpFP8mYIESkB4oiApBqpECinmlNOUIzojccThTtkgoVNcAqHCU/RxDc1TMImTzoH+UGFRR03R44gG67MihiySeaeEd9h451M28KmMUgObwEGE/zOBNGIJETLZDC0BMvkvwBTYOYAffg6w5wBeG8iV1wOCCIGlDWZlKQIyStC0GQ+G0FRUEzDRlI0JjpgnVhQFwRQJpVCCqzINmthBhDkmcJKx1QKAAoM1jihAkGZ0cAYJd1WMwAg4ovrACQww4BeDD+Yq7N94sjkxJgJFSkHTCrpi5p0k4EAhmRQ+pbSAa4c4oolmiEIKrDEL2G4zEQNooj0ntvjgA/PM0CCuRIDl1YMsQqiwvo9I9JPEDAEEAUSknMxQJq0OfZJAJ1P6aGet/jtYQgdlGvG7BURGUeQIPwYvZ5LDM5HK7AZEscUbyzb77Bdz2MbolFLQY0AHqoUpgv+4NK4QhKSyG45nrfIGUkWpJ5hAED0c+GIMSp4o4IkpAtEgpzGAcskfNsHaQJ8XSGCT0kET6tylF10i2UGREsLiDhVMMeUO1Fm/Y/U7aFCpxw1OwYKEQFTQvVGCCGKEBCT48w6EVbEC6/OErFjCNDRT2pgPr/YMoIUPTOnsMgG8eUkvFLXr3DVSBz3iR2MHBeA/l1rwACEAWtAhm65TMoICJAAAgYEYQrMfhDzjKkufNoiAC3pajB/CoIHRlIZSbhBAIrwAAn1g4m0qIQMbBMEGC27DAdvAoDvgkJkNYnAbEkQQhUAAAAqFDgfO0IP9oBeC841oA0aQBwzdh5cT5nD/fzmMwEqycwkc9nBVZrDWdcQXAH3wwRnDSkl+cIYw+vjpLSeBUkycZLQKDY0+39ETfnrWFrbMqlgLoZBCHKCQnY1pbmpckZRG952peU1qbQnJEciGNjzm8UUjIMOUHHAEKwAhC3PYz0dCor4/kKpn/AlUfkoktQN5JG4UJIE37KeA0x1hAzUgAVDYIpTghcQfWGLTj0CCPgek7m1TYwMN5kADGuhBCZqjZS1rSYmLpSQCtzPFNvRQOEGghA3bKIVBkGAUpqkkCTpIhD12JTN+BKEBV9ETG+pjKrxEQE+nYUOFJsCAHQgADIAakBolNLKWhI10YIGCBfhhgTMcEyZx//AAF45gx/eRDCQbqNimSiABICQiD5tKRgn0kILKhEABaiCXViZgBCC47FvtAkEKLJAX4sHBBXrQJviykxDunAIzXNCHdspIMnhlwAIWYEYZj8CVJQZgAUocVoFaoh2mCBAESVjpSt/Z03fyYwh6GNQ8UDAHUglCB0OogA5cViHuNCEGS9SmTE6jFaJ1K24p8duBTuJDBwDOoSh5y6GmxDWjiQ5EE9pMoBYpsjA6CH1zm8mKrialEYHkYF1L0SHdoEfAnk1HU2OLSK0yVCoCCArgyhBfUrRFCiVoikQjEEj0FAF/IM5+Mj0FCEoxhWWsRFDbW4AKxmAQ7MykBowIXv/pFsGCMYCBUiDBHAnGYFtTaKAUvywFbMHgAN4iYbdRtF2WpoCR4x43EJWoCGuFRzorwMFfTuBXPBLhr8Ks52aWBQYfEsEFpxnNM10Zp0IOthAyVghCDoIrHEWCTwGIIJswaQEK7BkB92FHQwUQV1T+RZh4YMC6czACuC4jwKTqgSlhKFwSSuOAHenlFGrwQGiMIjXXbDcAF/BAu2YFpJAkMTKkg8EODhgBfUjMZh8jnT6uhRUAlAEykEnEV6x1VFKtKghGAm93JtAEmjLSiontG0y6ekUVdY8/zVMKVIOJFJlosqw9I9BcN0DGvRTrww7qXkg0lCEwzsqQmzGXa7b/ZrUtJsFFgWVzjXKQkoTRV5BgQFHnQGCFZnHOhHCDyQXfQdQBvQUlKDoF0JomEn8wwhsRKEUB9FCKUtyBBKYAbuF2G6Zd4o4GbEJKaSddIBBgAnfUIdEG2PBKSeMJJqV4iGgHRdedFdcUIfhlrfXAhkf/YQzy5I8i3zu+LN4TBIIDtn4g3JVggMDMYXxLEpZAVQu1ZK1ZtPJ3rnyiE6GEDCsETAbOIIFTDUEeEviHB1wggZXmQQMbSAINMCiIFMQgEXMgwwWp5WwXhGAB40KqyZoyY7pkwiNkwExZlE3oZsxm3BJAtwXmoD4TUMojIIZJEybgvjXooxkHIEI+ApoH/wngAwi7kQc7gpCXMLpPBHlxQAUxaE0HtOAqKBFEmAZk1HHyDwaVYUMJ2ECPZDhIqs7QgLKlqLQ4RwlI3uKil70lk5tV9iRv0WQUVaQnmbjESW5lmtBeUiy5GrlA6B2OdubqmqT0Z2k5s9dmIvCWO7ZZ7jDSEdGatrC4kYEDDJdAPirMG4ZPoom9dp+5syJ2uBEaTWhawBMYUadl3C5Lmvsd5TUX2wWUaQ6sTq0+yhQIrtYWlwfaQOYRdwSUTOAGsTWdCqijeP4w4HaMMIWj/mD71Kngd62FSRIo4Bu+SyAZDB++BCYRfN+wAUBJFKCxmgcC9bmsLf/pntMypGQsj//9YPpQAwpCAIWASsUxUYlOgP0VGrbk8H58qJn9zvctyTAggJopdDNW6oFERHMHNHvnAMlwCQGwMARpgnnArrnwl0TIhCZYgiwwidpxIxIZhHhYg8tID/MQAfhwAqdgGQwwhbcgnsZIBCRApwIBACjwgEoYH5WAiXkQgSGYhHGjAB1wgQkAgSJwqmE5ggU7PNqJGywjENcgK6KpnSa6D7dSigiYJI/wKChKELpastpBowVwCe24KdJzEhXxsqAJq9IhHa0gjoMJK6JJCCWbnr+au7mDgBzYEQCxqs7gjCSwCoCbi2Q7mM5ogXsgi8PjM/QBo+45BRqoBM2RAj3wh83/owI2KQUaKAUVYBNXyooNKIUj+IJSCgkFMCYQ8bQ5gCqhSZRJyyJBYIFAoJQFqIEx0B6wWAD7KL3bkYLXecXVyT2DmA84u5Y5vEUPfAuuSAQwQCGNC7oVkT8BgB+zC5qwQZGrSau62qsCMZV5MTU2SAEcmLcLipdMeDnlG5Ak4JR3eIMlSARm4JQSIAp8exx+o5TjYYx2AQAY6DD+AQEECCcz4LWlGxwMcrYsAAMEsCYg48Uw8xPLmR4diIKlsCDlGAIMird5YwNMsKa3uBQUYKbgQUZiYQsoEACNeSwkaoYZWw+ZGqlBgYElCANSqR0iHJCnQUkitKrNkIlY0w8U/7E7Iisht/qPtwjIj5k+Y7Q2myqaCLkQsbPJsSOVQkuYZPqou4k7NGyzHDgFUtkbkACJFJAdMgAVNogXF6CBTnkHTDg8b7EjIIgHrHjCKaK6vbAdRoCtyqkQAFiAjKCOhDCt+hmZQeG8B4kAh9CMDXgCURxB/CAgEDgce0KiF2C98YkAUxynJ8yJSTORUqg0lJAI4Ck0uBGEhsSETnm5ZcoCd8PGl/sjkQAy+0Ix9cELmFiVIKLMRdIbLgs7D9HCCDkZFDgmIcqfogOBxcqGzoEJAJoKAZuLp5CKmrlBrICAkULJU5iAQDIN5QSCNTCXFmgMF6DHBKmW8ZEqC0uII/8YgVjxtRKCPh1YAxNqHw+AnxOiBe97xwfhg1hpA3+0kAw5ghOMuJMMAAAYARRgBjq4Rx04MUACAqLLKOkrH1MqkCbiKirqlrZiEJG4qrEymqIMtJK0OzBaTSXTC+qLqwA5GMu5yQlRUHXasgfpLDLcqTVbSjbLEQaALITZNpfxEZFQH405Hncpkb+xID0ogAkwy66TkrAqE1MoE0tqi9tBORAYJYiYPiqkROz4j8+jFMrpCCgjq9IRNYQIABpggWXwiN1KJdzpjJqUKSxghIzAkuSaiN8JhEDQgwR1HpWgHnsCAZEkIjsDEpW4G5OZxmCIMR0QAXXTpRebALA4BQX/6A6d9EIqRBOwSycUcUZ6iVGMpBR8wg4QuZqZEgFmSAIhCChmSAEOANAQKLCIA6CGckL3yQaPiMNM0IB4c8GsIJ4MmITTKKvOcIclQL8KOYJlkij6GLQ3HcgsWoDuG0EkUiJS+6gWCAINGAUPkCdGtUgBSMHTeDK0yKZBWRUXIBWuyJ57AQI8QKCwYYBPOZTO8BZBQxAu7BakKZHkFByPSKwsIjSwa0kuNJBBda8w+w7vCVFQa5APSzsgVLyYjDObxK9BQFG5ezM+I7S4cQMnCI3UE4llGksjmywys1P/0IosIrMFCQkyQJy7GaXIOYIXMa3ympuE4LxB6aEFgC0Y/2JSdCy0B6SQwzEFfegt3MEIWrIINnmLHlmA8Um73goEbgEuNoCtwqkPsNiqm4sVwWGM3VgSCjgDCxiq/CgU6AGD0hwgkICvLaDNfO0hk6rC9BsQs0uI4/kPYcUhtmAobygd98kE/HAN7vMKEACyeZTT/AmBIlieEBBGzeCPCVAOb9BRKBBLwUGASSiAlWgCI6mZ1DuNCUCA/Gktl8AmLsiicrUsgRRP7QgkC4sACEDPmtILkAKBVBDB7ZkV+fSAiLOPuKlWoFCK4jk8EHCDBtAMxoi4ojyFJsiHBviALeAJl6zXkzCXKOEqh2rQHdmqBZlVe52V04hKyQqbsF3dlv9QL5NCWy9cp0BDRh5RV/t4OymK0RNFWD3KkSZoSawSC9N8mlNwH7tp0O5QChBZkKhUTcQDsbULAFazJP7QiTGQAjD4Ai31IWb0xDaBiVIcgz01xTnQDkpJsgGx0oiArTmBnc3rrTHY0SSkASx4JVjK0siBpTnAAth6pROeAyQYDteA2tZaFRFIhJWh4Q9oh5twgCwyFQFoAB3Ix65JgsYImAbkRJ18Ce09qdHSULaAqWOCvgrLCsZVH/hREUJRg3gACqmqGeKxzWX6n3OEmyZog/c9XPHsDM7BlwAMnvqImwmIt9DoDDI4Iw5jnlNgAx2NWPVZiyPYNhRACLDAn0T/qKmFcKsBwWLqdDvcjFZ98LVTwLkcW57CSkIdxk126QwFiIAFmId2CAGCK4terdiUuKqE+ZmcOV4d5YwdJastA8KQipuURDwRXUVEreW4AsjVJJAp6p5BwZooZAulRN88akqlsywQSA2s4A4wDYCJ3aZC5iodbYHgXY/EUhHiiEodPQ1RQpwPewIUzpJdsxzYDMxSikIAwAJCdMsxsJk6RRNyxiU3YdOVeJGEoIm3CZRRsoiKGAO1ZIQx2IjbIoHm0tJ1q6McsIrpPAJBYMAQWBCz0AMHTQkRO5JyyeYkaIpM2AbMaECtMIJP+ehNAWmRxgROqYAmARquwKHFEqDv/wiA1BA4sR2UtU02GKjcCAC/1WAAEgKgzNCkzgikdJmAdWHO97oUc2MNQstmHcSUZKCA8sCTmsbUCdCHfGiHAdJRfDINWAmN/4ABiWlhEbEXfUiF2dwr8FWXq/AhmLAWAZo6bPWhCnk7dYmHIVA6AMCBbCDZFpCD1qod4ihX17iPoqms5slm8bWPygQJDdAASdJRvtnfP9S+ufnAsEK7aCudHtoi8OWclbhJn3VKJjhfYUabHCGD6pUfefMkA1Efgdsm/iCUApAxspgPPtwZh5YkwaEc7dFYxtScQKABy64zld2tR4M0PUDhdba1wCaJy6MEoqLnlR2UU1gAEFgApf+IxMJJ2kZ07kdzgKPdtV9ygFJoYRQ5AspIBB8Gx2aWVP7hHPWCi8YwAzCYAMYWhDeQC48UlwAclgJwsVu8RRNwDSPIB7nIlDhogEzoZQfQhzj4AFcpNpliqHFiiprhTj3snCM4MKDQUVhxFZGwAnaJkvHo0yF4Qx0OgJd7B1FxjJXZAqSC4kE6BRzwAIHTgAK46LkwgXeIDdqkFDLYARyePnsBAUT+iAgB34usBH0Im1Mgg2uBisHAyKwY1P9wn7VQERf71lMYhWQu3iezuu9IVz+RiW5xV7vTJdsuHBExC2UWL3VyYSxDxri2HF26mrZ7wrAiDhBpLwcJlLc7o2D/Hu2zuQAENRH/Np7rhrBTmNiGDqaX2yY72pchCIHaIRSoAxEN0AMb3/SR4GYVjDRBlAIauAMskQLahIl3dsvLs61VZ3XbsqcN0AncuQNOOoiheDTeerRRJwpVBB0AOIXMWVPVVOfb7KHyPgIYwIF70Jg4aAzoAEcMysxPkQAa0BP3mZelK4FwQoFsOLwIUIAZn0eRiINbOQALOIAMCAJcyQB+YHdzzxVcaYAhKAADSIKx2AILaIwsOINJeDf7tSAI8xSJhp5kw595hIIPOACkMnYHQICx4NpvycdcJU5KsQIjiQeuZTroC5i5MAN+yIOi2BmezgIJWILsCQBBkMFE/wiCf8DvM5gDa6qztGu5TpmJtxjrbDprlQCAQUhrh/pdEWgHdD93pyK1nbkfzMgGuXYJKwDyBnCCchk8nzaQ8o6iKdUK1OtasqIUeG0N4Nr0kgEQZU6Kn/x2612RMGWatNoyIjzJmfVr+3ArO4ICQc+jHNmAPLHfU0gNXgSB//uABgjeBmgMDwh8wAf8P6BMjxghDMrjwlJFV3aAxeaOmvidRcOCgvidyMGaYtIc8GoLz2KTc06dSIkU3TEFgbCJ6m5EiLCfQFx1ntVn314xZasJLCFa2x4Jl33sALCOOD6CFHBquoByqrCKTLgntqgAGvB7p7aKQVpephAA4XhAQf8ZLTu7/h8ZEMxYDwBoAg4YC8dAb6Ev9+CNhwM6gkVPhjNaFdXV4ffr/X8wD9Ps/Ri4B90cETxrl2UKQOL1k4v5FoBIdCaZhiMgTgWIEGBhABg7BEB0hiRAiiWJwBxZUIECEIhOPjSwd8DCgQYNMDjJBkJhBH1q4gVTmLBAgSbNLDQQ8OcUzwAIm6hBgQQE0SY6zGhYuKBFhgMfPGTRE2GqQhCCJEiY6ODUhgBdGTpgKHZrAAcOJoT1ufDsKbMT2p6KcGqB2oUFHGjQUEBvAYZ9y5q1SzdAgakJDxtmeapw1w0RCnz1KpbrhMNHZB6eW2DuwhYtAIAOLXo06dKmT4f/ziGo8gYHXZMsMZF0AYUg/IJYCII79wHbQQ7kOdL17pEjEyr7DBvhSNuueGnq6VuKBQkpSBaUIjGmEhjlC0EowDIFjN1TIL6QoARiAUKFjuVuRfid6JM5GoiCAPDEAY07plRUUskUjDASyBSm5LfSEzWQQAIX8aXlwBMkBBJCa32BEIA+Segg0REOYGhECiXkk8FHH32AgRlgxLVQTxGMIoAIeeghFmEFgJDEGXq4VphdC1FV2F8srXRYAEa881cAAJzCRgUS7PAURFNCNMQEckUAwHJGLJEFEqARxRADOECVB4gTCFLCGUhEYJYDC7zDxhFGXDKEVG0hB1YKSBwR/wBygV3WVgAMUKADCtkcF0ASc/Q5AVFkvCMBTk5QOeVFmAHQhgDBAADkBgUwoKkA8XAhXEL4leElUafoI0QyVy5khQ5VDoUfQ8ut1FZYaKUFGEIZJjdBV8L+GmFlaMUF13K+7gUdTYkmx9AGXH1KmGSYddViXEUqpOS1ahG1bAAG2QjCV49tBkASn6HWrrvvAjCCIIRtNcFdbLDhJkMg9HljAfau5VMBfT573FtkCYpQazYmpEeNSpWiF2FfQTZVWJA15s8dNBhk2HcJJStXucDeShXDGxgU7kKlzPGXWZQ5IMgdd2iQZ4Z3pcBGnmlVliFbPMHF07RclYWABCGMK/9TZWSRPNzEYkEGmb8RAOse1U8DWSTQRIflQJ99suQTGWGp7FMErblWVllLI7tvhmi5+FXXDry9EHIIKUz0YoKQxdBl9AaAn1x8e2VWYzR9mu08QXxpZOBGUEDDnQzL1y9PJEewQM5kC+4TQhe/7KubLQZOL2UAb8U0ngzBlRxPC9zVq1+AL3DEZlK75+1wjXlV5GHv+RWZWL67CGRCCtFlXguDwNu886n12vXngvbL0LFqr+WmQfp+SFabafv8q43dfjzVuQs7bqRyMilsAN4GlDWtVwozfOupRMo0tGSV9VltW32hr34BA8xdSgc3n3VFIWkLHIjKdqPihc0rPmr/Dbq8dbZzLaRa1nKPBAVmvMtUTzFYMpL8GiM+7L0sMAIsy18KwLet8Ct249IXYMYSuKoRRj7ycRzVMPiYW33KZBmkCZDcU0JBycVbCfnbQv7mHq7EZVpfoV9Y0LZD1hFmadlry3J4NQHmqLA50vIayQImMpbkLoOOaeGtQJS0DAJRWvOrIt6u+Ma6UM0zz9ujuyAwgibYSFcn9IuSILM0hClQUMhKS9CSJ0cjKYR+mOmL1Iz3o8TJcXfHk0xk5ta3PGUQio1pDVc4aKO7UA8z2LNbAQuwDafZzi2bEZTreBLJ+sXlMXRxDNQ+1ReTwQ9xv7TL4RIYMKKVRZCR2aEo/30ixWUKby1EE9fsbMir4gHmOKjU4VY2UMbF6NAwCvAKS4goNW8aqYUg6tY5JZNOrvQJiq4Bp/CE5rlReu5sUJMm3YAlH9lJjStp+yeepKewbJVuMpmJpD5lIiSnJUZaGzCmJtPCwV59jpRfqedEiaZHPoLUNPLCHmR6Eib0dfJY+lvbYgzGyPgIFFbOmZ/xznY20p0tapvM6UTd+UMAylGVTZzftOi4lUg2Z4d0wdYqu3Yq2ynShix02VqOFZi3DM01DsAMiDqKRhO2iDF9UYB58ocxmrqzkEBazLh+J9CADU0uzbxpEcHyp7XdMFpNhat8nGPVf9KRlGBpZ9gcM/8thnYwaT+caOLas9FfbqY8DNOqO2nqHtcg1GyqjB72gJUWJcmtL3fFK9z0qqutDrGxx5OLFAMAuyFG1jCJqxas/lKtnKbPSDxJW2Q3MxWFkS0JbggpcUeTg/hkSD6RlF0vsQay4ewqjKFUyz/lmKyOJo9ixnTmKu23O8P0KJp46679VkLKKAZSmqU7YTerSV4gkeUtyKoMW9053p7CMZITtWkp1VbY+I3PnRRtDQax2ROGUaUt88IMUqFrHrUsq6hYdBFzKWy346iwicg0W2vzS63XkRN72MIvJK01TIw1Rqjjrd9vpWjeTSLzqMwRnz2xaRdGStWlbekfHDmj3vz/eqUrC+AlY+pqT+ElMJqF413xasy62Lo2qSD4aHGLO1Lj5UqgV/SO336X4bYFsopq63BrL7vawjXRXH0RswLvqMEfUxR3Nl4pew5r2VzGFUgZgQsG5TfhhBTVl2urMC1bi1HlSHglMlngoiXzF2EF7oduTKS0unU4F933FGCbn1wPWxhz2fJ++uCzcuUcYLRVtW9q2UxYgKs2U52vv41O4GN2Za1oBQrNFhZL7uQnV7VMSx+Rlp38hik/fVDlIAL1NYB5vVbKDhqUajlLtLhi2x1OdGCLJhbIpObGhKTFs5VEq2Z1yrpkzQ9s1p4yu6ocUgioZiVgWxUGnVxZsKja/17IyRA7oVba+oGyUfbzd2UKyC8/3QVaCBYqHM+tymXRBF1w5FaYfBy3OPJSgQtkZVs7DlDyyoTHflNS9fxU8ICRS222ZrGz723HW0U8rdva1y0zs+F7bxEziQJht/JU8ApbT4lpKfmNkPMVYP3r3/t8ODEVyrCbzWSCRroM8f6GTFOOhdkI/1i//tV0oFvP2X8p+bFES7Z+rRyUw2QI/B6zTOVimQlQcLeVUyAIQZBBEAgQhBFOkXcj3B0Be9e74NkweLwTHu951/vdG+/4xrOB8Y9ffOMP33jKkwEYCMDX4zsvCMNHngzb+Dzi806Gxe/d9I0HvONPT4bBv/7umP9n/Ollz/jBF97ygb97E/Ieec8//ve6B/7kG9+Ez2OC+I7ffOV/73rF2/7vns977wWP+MunnvXPZ731Cb956+M+9Yv/vfINT3vlX972vNc754G/972Tn/Sydz3lSw/856f+8IuvfvRRf/jvm1/+id/dxd/1OR75DV/9dZ7qIV77Kd/mkZ/5zZ/rwZ7s7R3rNR4wNAGV0R0f9cEI5MAFiOAFgGAIkuAFmCAIiqAK5kALjiAKruAIkGAIyuAKmiANzuALjqAM0mAImqAO8iAKjoAK2uAJGmEL9uAOwuASnmAK/mAOsiAL6uAKGqEMEqEV+uASWiEMSiETBiEVpiAM0uD2FSphDc4gEVKhGU6hCgYhCJKhFOaAGtpgCT6hERZhHNohGjLhDmbhFcZhFr7gF4pgEsohFQ6iEOphIGqhEIZhCXqhGG7hHPYgFipiEVoiEz6hGfYhFKIhGQLiDP7hFAaiDyZiJIriG15iGeLgEFpBB7riK8JiLMriLNJiLdriLeJiLuriLvJiL/riLwJjMArjMBJjMRrjMSJjMirjMjJjMzrjM0JjNErjNFJjNVrjNWJjNmrjNnJjN3rjN4JjOIrjOJJjOZrjOaJjOqrjOrJjO7rjO8JjPMrjPNJjPdrjPeJjPurjPvJjP/rjPwJkQArkQBLkPwYEADs=)

Bash本身没有计算功能，需要借助其他命令完成表达式的运算，包括算术运算和逻辑运算。在表达式中使用了各种运算符，具体于使用的命令有关，参看相关命令的man帮助手册。expr命令可以进行一些算术运算，包括加、减、乘、除等。也可以进行一些逻辑运算。

- 计算结果赋值给变量时，要注意使用反撇号（与 ~ 在同一个键）
- 表达式和运算符之间要有**空格**， $a +     $b 写成 $a+$b 不行
- 乘号（*）前边必须加反斜杠（)才能实现乘法运算
- 除法是取整的除法

Echo中单引号的原则是不管里面的内容是什么都原样输出，不能识别通配符、变量、命令等。

双引号就比单引号人性化一点，可以识别变量和特殊转义符，进行一步翻译再输出，同时我这里再强调一下在shell脚本中使用双引号必须结合$ 、/和`这三个来申明变量、引入特色符号和加如命令，这样才可以直接被编译器识别的。

逻辑运算：

（但这里要注意逻辑运算的话，&和|与一般的逻辑运算||和&&不同吧！不要将这两个搞混）

在 **expr** 命令中，**|** **不是逻辑或**，而是一个 **模式匹配（Alternation）运算符**，其行为如下：

- **规则**：
  - 若 **ARG1** 非空且非零 → 返回 **ARG1**
  - 否则 → 返回 **ARG2**
- **返回值**：直接返回 **ARG1** 或 **ARG2** 的原始值，**不是布尔值 1/0**。

**. expr 中的 & 运算符**

在 **expr** 中，**&** 是 **“****匹配”运算符**（Match Operator），其行为如下：

- **规则**：
  - 若 **ARG1** **和** **ARG2** 都 **非空且非零** → 返回 **ARG1**
  - 否则 → 返回 **0**
- **返回值**：**ARG1** 或 **0**，**不是布尔值 1/0**。

**另外的大小比较为真时返回1否则返回0**

**Zsh 中的问题**

在 Zsh 中，当您运行 ret=`\expr length "hello"`，反引号将会被解析成一个命令并尝试执行 expr length "hello"。然而，Zsh 报告了 command not found: 5的错误。这表明，Zsh 在尝试解析输出结果时没有正确处理返回值。因为expr length "hello"` 输出的是一个数字（5），Zsh 错误地将这个数字当作一个命令来执行。

**Bash 中的行为**

Bash 在处理这个命令时表现得更宽容。Bash 会将反引号中的命令输出正确地捕获，并将结果（即 5）赋值给 ret 变量，而不会尝试将其解释为命令。

**2. 反引号与 $() 语法的替代**

虽然反引号 ` 在大多数情况下能正常工作，但它并不总是最清晰和最可靠的选择。尤其是当命令返回数值或字符串时，反引号可能会带来意料之外的结果。现代 Shell（包括 Zsh 和 Bash）更推荐使用 $() 代替反引号，因为它更容易嵌套和理解，并且更少出现解析错误。）

**1. 为什么建议加双引号？**

**(1) 防止变量值中的空格或特殊字符被解析**

- 如果 **$PATH** 中包含空格或特殊字符（如 *****、**?**、**$**），不加引号时 Shell 会对其进行分词或扩展：

**(2) 避免通配符扩展**

- 如果 **$PATH** 包含 ***** 或 **?** 等通配符，不加引号时 Shell 会尝试文件匹配：

**(3) 确保变量引用完整**

- 双引号能明确变量边界，避免与后续字符混淆：

\# 不加引号时，若变量名后紧跟字母或下划线，会被误认为变量名的一部分

**2. 什么情况下可以省略双引号？**

- **当变量值绝对不包含空格、通配符或特殊字符时**（如纯字母数字和 **:** 的 **PATH**），可以不加引号：

echo PATH=/usr/bin:/bin >> .zshrc *#* *安全*

 

| **命令执行结果** | **$?取值** | **逻辑表达式值** |
| ---------------- | ---------- | ---------------- |
| 成功             | 0          | 1（真）          |
| 失败             | 1          | 0（假）          |

expr命令除了进行算术和逻辑运算之外（不是我想到&&与||，另外也并没有提到取非、异或、按位运算），还可以进行字符串的操作。

 

Test命令

Bash对于逻辑表达式的求值需要借助test命令完成。。test命令中逻辑运算符有两套，分为数值型和字符型，另外还有对于文件进行判断的运算符，和表达式复合的运算符。

**主要区别**

| **特性**              | **test 10 -lt   20（或 [ 10 -lt 20 ]）** | **expr 10   \< 20**                                          |
| --------------------- | ---------------------------------------- | ------------------------------------------------------------ |
| **用途**              | Shell 条件测试                           | 通用表达式计算                                               |
| **是 Shell 内置吗？** | ✅ 是（高效）                             | ❌ 外部命令（较慢）                                           |
| **比较类型**          | 数值比较                                 | 字符串比较（但数字仍可正确比较）                             |
| **返回值（输出）**    | 返回 **0**（true）或 **1**（false）      | 输出 **1**（true）或 **0**（false），但 **$?** 仍然是 **0**/**1** |
| **符号**              | **-lt**（必须用 **-** 开头的运算符）     | **<**（必须转义为 **\\<**）                                  |
| **适用场景**          | **if** 条件判断                          | 需要计算表达式并获取结果                                     |

test -n \$f echo \$? test -z \$f echo $?

结果都为0！奇怪。

bc是一个独立的bc是一个较为完整的工具，为Bash提供了更强的计算能力，提供了完备的类似C的编程语法的计算器，可以在交互式界面、文本或管道的方式方便的进行一些运算。支持多进制转换，任意精度调整，打印控制，函数支持，逻辑控制等。

算术运算扩展

$[expression] 

$((expression))

用 $[···]，$((···)) 进行整数运算时，括号内变量前的美元符号 $ 可以省略。

注意 ${···}，$(···)，$[···]，$((···)) 的不同作用



### 双小括号

双小括号中可以使用类似C语言的表达式，((exp))的格式更符合一般使用习惯。

- 这种扩展计算是整数型的计算，不支持浮点型。
- 如果表达式的结果为0，那么返回的退出状态码为1，或者是"假"，而一个非零值的表达式所返回的退出状态码将为0，或者是"true"。若是逻辑判断，表达式exp为真则为1,假则为0。
- 只要括号中的运算符、表达式符合C语言运算规则，都可用在$((exp))中，甚至是三目运算符
- 作不同进位(如二进制、八进制、十六进制)运算时，输出结果全都自动转化成了十进制。

echo $((16#5f)) 

95  #16进制转10进制

 

- 用于算术运算比较，双括号中的变量可以不使用$符号前缀。
- 括号内支持多个表达式用逗号分开

### 中括号

中括号也可以进行整数运算。

b=$[1+3]

echo $b

4

Let

let 内置命令用于算术运算

赋值符号和运算符两边不能留空格！

 如果将字符串赋值给一个整型变量时，则变量的值为 0

 如果变量的值是字符串，则进行算术运算时设为 0

let num2=4 + 1

let "num2=4 + 1" # 用引号忽略空格的特殊含义

用 let 命令进行算术运算时，最好加双引号

expr

通用的表达式计算命令

表达式中参数与操作符必须以空格分开。

表达式中的运算可以是算术运算，比较运算，字符串运算和逻辑运算。

expr \( 2 + 5 \) \* 2 – 3 # 括号必须被转义

expr 5 \* 3    # 乘法符号必须被转义

bash 只支持整数运算

可以通过使用 bc 或 awk 工具来处理浮点数运算

m=`awk 'BEGIN{x=2.45;y=3.123; \ 

  printf "%.3f\n", x*y}'`

echo $m

n=$(echo "scale=3; 13/2" | bc )

echo $n



Printf命令

printf format 输出参数列表

printf "%-12.5f\n" 123.456



![img](data:image/png;base64,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)

数组变量

使用 declare 声明或直接给变量名加下标来赋值。

declare -a variable

variable=(item1 item2 item2 ... )

variable=(item1 item2 item2 ... )

variable[n]=value

${variable[n]}



Bash 2.x 以上支持一维数组，下标从 0 开始。

Declare

declare [选项] variable[=value]



| **选项** | **含义**                                             |
| -------- | ---------------------------------------------------- |
| **-r**   | **将变量设为只读 ( \*readonly\* )**                  |
| **-x**   | **将变量输出到子 shell 中（\*export\* 为全局变量）** |
| **-i**   | **将变量设为整型 ( \*integer\* )**                   |
| **-a**   | **将变量设置为一个数组 ( \*array\* )**               |
| **-f**   | **列出函数的名字和定义 ( \*function\* )**            |
| **-F**   | **只列出函数名**                                     |

条件测试可以判断某个特定条件是否满足

测试之后通常会根据不同的测试值选择执行不同任务

条件测试的种类

命令成功或失败

表达式为真或假

条件测试的值

Bash中没有布尔类型变量

退出状态为 0 表示命令成功或表达式为真

非0 则表示命令失败或表达式为假

状态变量 $? 中保存了退出状态的值

语句

格式1： test <测试表达式> 

格式2： [ <测试表达式> ] 

格式3： [[ <测试表达式> ]] （bash 2.x 版本以上）

说明

格式1 和 格式2 是等价的，格式3是扩展的 test 命令

在 [[ ]] 中可以使用通配符进行模式匹配

&&, ||, <, 和>能够正常存在于[[ ]]中，但不能在 [] 中出现

[和[[之后的字符必须为空格，]和]]之前的字符必须为空格

要对整数进行关系运算也可以使用 (()) 进行测试

条件测试表达式中可用的操作符

文件测试操作符

字符串测试操作符

整数二元比较操作符

使用逻辑运算符

文件测试

| [ -f fname ] | fname 存在且是普通文件时，返回真 ( 即返回 0 ) |
| ------------ | --------------------------------------------- |
| [ -L fname ] | fname 存在且是链接文件时，返回真              |
| [ -d fname ] | fname 存在且是一个目录时，返回真              |
| [ -e fname ] | fname（文件或目录）存在时，返回真             |
| [ -s fname ] | fname 存在且大小大于 0 时，返回真             |
| [ -r fname ] | fname（文件或目录）存在且可读时，返回真       |
| [ -w fname ] | fname（文件或目录）存在且可写时，返回真       |
| [ -x fname ] | fname（文件或目录）存在且可执行时，返回真     |

 

字符串测试

| **[ -z string ]**      | **如果字符串string长度为0，返回真**    |      |
| ---------------------- | -------------------------------------- | ---- |
| **[ -n string ]**      | **如果字符串string长度不为0，返回真**  |      |
| **[ str1 = str2 ]**    | **两字符串相等（也可使用 == ）返回真** |      |
| **[ str1 != str2 ]**   | **两字符串不等返回真**                 |      |
| **[[ str1 == str2 ]]** | **两字符串相同返回真**                 |      |
| **[[ str1 != str2 ]]** | **两字符串不相同返回真**               |      |
| **[[ str1 =~ str2 ]]** | **str2是str1的子串返回真**             |      |
| **[[ str1 > str2 ]]**  | **str1大于str2返回真**                 |      |
| **[[ str1 < str2 ]]**  | **str1小于str2返回真**                 |      |
|                        |                                        |      |

 

字符串按从左到右对应字符的ASCII码进行比较

整数测试

| **[ int1 -eq int2 ]**   | **int1 等于 int2 返回真**       |      |
| ----------------------- | ------------------------------- | ---- |
| **[ int1 -ne int2 ]**   | **int1 不等于 int2 返回真**     |      |
| **[ int1 -gt int2 ]**   | **int1 大于 int2 返回真**       |      |
| **[ int1 -ge int2 ]**   | **int1 大于或等于 int2 返回真** |      |
| **[ int1 -lt int2 ]**   | **int1 小于 int2 返回真**       |      |
| **[ int1 -le int2 ]**   | **int1 小于或等于 int2 返回真** |      |
| **[[ int1 -eq int2 ]]** | **int1 等于 int2 返回真**       |      |
| **[[ int1 -ne int2 ]]** | **int1 不等于 int2 返回真**     |      |
| **[[ int1 -gt int2 ]]** | **int1 大于 int2 返回真**       |      |
| **[[ int1 -ge int2 ]]** | **int1 大于或等于 int2 返回真** |      |
| **[[ int1 -lt int2 ]]** | **int1 小于 int2 返回真**       |      |
| **[[ int1 -le int2 ]]** | **int1 小于或等于 int2 返回真** |      |
|                         |                                 |      |

 

操作符两边必须留空格！



| **((int1 == int2))** | **int1 等于 int2 返回真**       |
| -------------------- | ------------------------------- |
| **((int1 != int2))** | **int1 不等于 int2 返回真**     |
| **((int1 > int2))**  | **int1 大于 int2 返回真**       |
| **((int1 >= int2))** | **int1 大于或等于 int2 返回真** |
| **((int1 < int2))**  | **int1 小于 int2 返回真**       |
| **((int1 <= int2))** | **int1 小于或等于 int2 返回真** |

操作符两边的空格可省略！



方括号前后要留空格

[]内不能使用通配符！

在 [[]] 中可以使用shell的通配符进行条件匹配

通配符与正则表达式

- **通配符**
  - 由 Shell 解析（如 **bash**, **zsh**）
  - 直接匹配文件名，无需外部工具
  - 例如 **rm \*.tmp** 是 Shell 自身展开文件列表
- **正则表达式**
  - 由文本处理工具解析（**grep**, **sed**, **awk** 等）
  - 匹配文本内容，支持更复杂的模式

逻辑测试

| **[ expr1 -a expr2 ]**           | 逻辑与，都为真时，结果为真     |      |      |      |
| -------------------------------- | ------------------------------ | ---- | ---- | ---- |
| **[ expr1 -o expr2 ]**           | 逻辑或，有一个为真时，结果为真 |      |      |      |
| **[ ! expr ]**                   | 逻辑非                         |      |      |      |
| **[[ pattern1 && pattern2 ]]**   | 逻辑与                         |      |      |      |
| **[[ pattern1 \|\| pattern2 ]]** | 逻辑或                         |      |      |      |
| **[[ ! pattern ]]**              | 逻辑非                         |      |      |      |
| **(( expr1 && expr2 ))**         | 逻辑与                         |      |      |      |
| **(( expr1 \|\| expr2 ))**       | 逻辑或                         |      |      |      |
| **(( ! expr ))**                 | 逻辑非                         |      |      |      |
|                                  |                                |      |      |      |

 

注：不能在 (()) 中做字符串比较

注：不能随便添加括号



(( \$x == 1 )) && [[ \$name = To? ]]; echo $?

此处的 && 并非逻辑运算符，而是命令聚合（Command Group）



### if 分支结构

一般是对逻辑表达式进行判断。根据逻辑表达式的真、假，分走不同的分支。这个表达式也称为条件表达式。

**1.1** **语法格式**

**这里才是真正所谓的逻辑判断需要&&和||**

下面是 if 分支结构的几种语法格式。

格式一：if

if cond_cmd

then

  command1

  command2

  ...

  commandN

fi

 

**格式二：if-else**

if cond_cmd

then

  command1

  command2

  ...

  commandN

else

  command

fi

 

**格式三：if-elif-else**

if cond_cmd

then

  command1

elif con_cmd2

then

  command2

else

  commandN

fi

if 其实是判断其后面的命令是否执行成功为分支条件的，因此 if 之后不一定必须是 test 命令，可以是任何其他的命令，只是这些命令一般不需要其输出，因为只需要知道执行成功与否，输出并不重要，一般就通过重定向到 /dev/null 解决。

if expr1   # 如果 expr1 为真(返回值为0)

then     # 那么

  commands1 # 执行语句块 commands1

elif expr2  # 若 expr1 不真，而 expr2 为真

then     # 那么

  commands2 # 执行语句块 commands2

 ... ...   # 可以有多个 elif 语句 

else     # else 最多只能有一个

  commands4 # 执行语句块 commands4

fi      # if 语句必须以单词 fi 终止

![img](data:image/png;base64,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)

 

 

case 结构适合取值确定的多种情况的判断，但是也支持带通配符的模糊判断。

### case语法格式

Shell case 语句为多选择语句。可以用 case 语句匹配一个值与一个模式，如果匹配成功，执行相匹配的命令。case 语句格式如下：

case 值 in

模式1)

  command1

  command2

  ...

  commandN

  ;;

模式2）

  command1

  command2

  ...

  commandN

  ;;

esac

 

- case 之后是取值，所以变量名之前不要忘记了$
- 取值后面必须为单词 in
- 每一模式必须以右小括号 ) 结束
- 取值可以为变量或常数
- 匹配发现取值符合某一模式后，其间所有命令开始执行直至双分 ;; 号结束，表示 break
- 执行完匹配模式相应命令后不再继续其他模式
- 如果无一匹配模式，使用星号 * 捕获该值，再执行后面的命令
- 需要一个 esac（就是 case 反过来）作为结束标记
- ![img](data:image/png;base64,R0lGODdh6wECAXcAACH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACwAAAAA6wECAYf////v9///9+YAAAC95vfe9///9/c6Ojo6EAgICAgACCEAAMW91u+Uxe8AEEIZEAhaWlqtY0rvzua9xcUhKUoZWpSUlJTv9+/exb335sWUpaWl1vc6jK2MY0Lv5u8ZUnNrUhCMWiEZECG1raVjhN61tbVCSkre5vfvzpy1WhmEhGMQjK3Wzt7mvYwIEN5rWpRzWkoxEObe5t5KlBCtWuZa7+atWpwZ7+ZzGe9a760Z760ZxeZaxa0Zxa0ZlFoZlBAQWhDv5tYxMSnW3t69jFo6jN7mGSGMtebFlHPmWns6KRAIKUqMjIStGZxrnM5SlHt7UjHma7XmlBDmELVKlDGElDqEtWsQlOaU3qXmzkLmGYS91qWElBAIEIRSGRA6Uns6a5z/3q21ezpjhJz3MQBSSkpjY2utWnPmUlKUIRC1re/erYQZlHsZlDEhKSnmnK0ZAABjOinmlELmzmu1jKVrpea1jNaMjObma+bmEObepWPmQhlahLU6OsVze3t7UsUhEMXmYxk6UhnmQrVaMRDmnOYQMWt7hISMrc6tjHM6Wpz3984ZEEoIEMVzY2ucWsUZQlIQOubexZwxOlKthFJzOhBrKcXmQuY6QubvGQAQWuZCEMVCY+ZCY3uMjK21rc5aWuZjlL29EEpSzlpSzhBzEHsZzloZzhAxMXNSxeZ7WuZzvd69tXtjnKXmjGPm3q29Ge+9GcW9GXsZMRCcGe+cGcWcGXtjUsU6ECG93s46EEoQOsVjEDFCY71aUjGcxc5jMUqU784QY8W1zjq9EBCEzjq1zhCEzhA6EHu15nsQY0qE5nu1pRDm3hDmKVK15lqE5lq1hBDmvRDmCFJShFK9WsVSpVK9MUq1jO9rEFJSzntSzjFzEJwZznsZzjFzCMWUEEpS71pS7xBzMXsZ71oZ7xC1nDpzEBDm1owQMZQ6MZTmhISM3u+17zq9MRCE7zq17xCE7xA6EJyMhM61vVrv962UMUJS73tS7zFzMZwZ73sZ7zHm92vm9yE6Y0r/9/8I/wABCASQC4jBg0CoWaHCsCGVGVYuDJxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsiVGAdaACEIIhIo1hwytCHDJs6fPn0CDCh1KtKjRnxgO/pgJxN+WKlSgUtF5tKrVq1izat3KtWvMg1RGLCLYMFnXs2jTql3Ltm1PDFSaWvEwMZeVLf/c6t3Lt6/fv0FzlQgCuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv35P8Wxf9x8nJCAIoYYPzqiOQLAwFD2gqgw4AikVAdd1bUb5HIFwInCYDBBAQWOMEJAxp4AkWSjFFASCiYsR5Gr/hRn0BhQECAAB2QpxElXxQAX18CqIDIeTxRMgaKFgmABH4DqQjAGhA8mNErwCACwBAsipSggSUgaOCBPa3xxkhhIOChRS3AwQdFKMBRR0cpJLBBCw9MuVYGXsA4kBgOADiRAJJ48qAAFkygggllQMCmCSY0gJEYCci5HwYljDBCCXzu2Scdh9SHAgIDFGqoAiUQYugAVo5ZCSMbeiDppEPweFEEAzyJEZYbACDJL0g8cAQGXoAxRAk9jhmHAgUQIYKdQwn/kMibZdBqAgQb8EdRBgiA0VOUYb4URwUABFHCBJVUcIIYImwgyYUWRcmBAISEOFEQe+rZp596MqEBANQuWmgCoXQAx6JestQCGZkcudEivrhxwLwHwCEvvUJ0gqIAISSwJACDHtEREQrkCoUD0J4lgABeeBhEpZIcgEillgJACSOVLiIEGBjsWckSGuR5YRgHCGGyECUnIO/Jk3QKABQiCOGGELOIMLPKMs+yikAYDNHBF0RMkguPQUwwhASsuOGyQGvYC6cJB0ANtRD/WYSOva9u6kYDAURgghBwUFAGHCKYMEnCFHXgQAFcGmKjUPwqYMbcEMxtRhwDaAlAAJJY/8BnCUjA0ckEf/NpAdoiCQDzA75iBAKxKAjhywMKmKCEAiWnu2uvLmY60Ro2z+zGAxTQbLMQjJ/3MBIHjCDEEUNI2jMLr+BCgkt6kKE7GW/klVGJhzARvApwfMGE8Ew44gmLDDcuEArNUgRfpQ8PEcSyCazigSStVIqWBwEs4kUdAnCZQOgPpJ81AESgIskDDMThZQi9VNTCAJ0Ufmzhe54JhSIDCcEXwocLTVWEEmBYAypSBTAlLC1KYDjBEHpGsUq9ggUWeQUCKhAEKCxBTPabRafOk6ENQeF2A6Eg9awHsw14YA2eyMUJdOUTfhGrIhlQws4EwiFI1KoMD0jAF/9+CKcyHEBgJREAnRrQJANKDwTCmAglWgEAPUzibQKYQPUetr1eXSAITPhF7Jj2QYG0QAQAigAk3jaRFkxiAoJAnAB4oTmUrGt3ulvHRgTAgiH0URIIGEOl+iiDilxvBGbwgx9gUDxFOsJB7DtZyVA2C5wdwBcbYyBWWsAme40hCEIYw5BYET32KQIdSvhFHIrwCiaoAAGQYIIfJgQwBcgpEcg7xCEsYAEmLE0A9gCgQDrQCQAsQgkolOIB3BAzzB1gaQBTmkBeQQhDnCpbetIWGweyCEIES3wKQOJA1lAGQSSAAhoagR8SyYS6MeFCETBZyUpmgiDeK3OxCsENKRL/BiXoDQB0ed4D/jWQCwSUJEjwHPsGAEmBhGdNs1BAGUIBRkcoUgUQOMTyABaHeaHsZJSj57xctoYyAqAFuuiUGNxGkTV87QEHIJ0QlrSwhrEkd3jcXe8yEgYi1ssNcIqaGUA4EVawCQJCSMCtylCGFzyoaEOaABIUMAYWFGhBZykaqUJxAujJqQP1A0CSkOifLQghfk7QQwI64YdDOEIJ+0RBAsgHgzbZDW/+mkgIhAmAEOhrEQWUHhTA0IEPUOIDiXgArBrYKX6tzRwi6IQvKGAGN5VBBP98nhcQlgELhcELVGXRKz5BCXINphIUkOVFMbuTIUR1AqV1goEOChR+/30gFz0zmtFY8YAdCjYBY7AAHTTAyxHQciQCoMQAfJUI8ohhAB94Dw/15IUPlGAIgRuDItsahw+cJ4tDYoEklPABA7EARSUVUwtwAaAOKGObYkjtASwgBE8oIaw8HN9K1pDTnOpRI/rhFUEH0gI3melzweLIIhDwTxpOxAN2IMERsPoPD8zjDndgAITvQAI1sODCE47wEVgkgXmQ4A4E2DDieHgOLU2gAMfUFJlshAT3CUGVTmgfuM4jhnQMBAUK0JsADlEAHE3iRAMBpjBtaExkSq8DoSACH9bwhS04UABFG4IeSomB9vpqDUKwk/jEWazELiFXKMibMaEwgCW0Av+rABBDwcBlDw54wHoeCEIcfButB0ATuYnrwADQN7rRZak/AxhdJdP3gAEYQpMc4Zui+HCeSnThPIETIgNQlKQVMO1sQbieB9qzzbQ92iLpZRqk4szSibRHEl94hQly4Qv8ZLl2TjQJTvuLxzfQlmd+sKhFD0G8STjSkTpaw8zCOZEUnLoiExiunoY7hHM47yWqWEAjNqFtLdmB2wuogwe43YgTA2IB6N72Anbhsk9sohEL6AMgGtEIF/xZIOIjn6SC4KpfSPAEJwho+8wavzqYYxIBQILbxBDXBIgzSedbUUX2ysNKjMGYgR0TDMYQARLoQR3oEAIBKCGCqAmhZRT/CcHtFPdNXDxQCQOoGsDmysNEEEpT4hPieqCATgi0qQxuQCKZNECHPIUMBW5IJkmCAAMIbPfpUN/4vkJgCMIdq0BImEVmAcAKOCRYrwME16ygTvZFDpVDA3CAjsAFhWejAG8mJUKbLVCAJg3R50gNe7GkXYLh5oIIq7Zf3IO10m36hxWxPkD8SIAOmH7tiCrhdU4zsYdfi9Wix7OAF/B3vOAdTwWh4LQIxHnMMTDBE0+W1wAUIIQl5ILqkHboPBaACQb8gwUxWAAST2CJBZCABdp2GQu4HQkGXAAbm3CBmAJAA23b+xPltkg3KWACJsgMDgpwgxtwUTMwnKd9r7gx/wiK4ArvmmMJBYhABVAE5FUIQFL/CH+wDKpXYWZAShjXVEA5NIY9ryG17BUBbiMpLNI3dKAEX2ABGpAIIhBcDBhcnwAuoMciYUBzA/EKFiAma7B6EKB4cTAtdOEBAuALHqI4pbN6QkABBFAJekcSSSIuMGgo6xdA+zQROURQemAvajckGAACH2AjIRCDMThnkmAhSdZ2zDMCEQguiuIPuBAKazAJGwJQAaAH1hJNMZVobsABWLJYBBZ4+sRjLCUAKOIfHaAIGeAGfiAEdYAODuBCASApKpEBkrc7ziABvrMpQsAHEWIjGHBcALM+cVYwzzVgxtQrAPAPVagARFUREv/AbVwTcHawAJGAIo/oAgvgAuJ0iSA0iZwwEI9AezbCAtsUBImAN9EVav0mQYSACmPEPjaGVnIACQEgBh8AAB2wTy2gAOxgD/PCJkqQAJMwNd5FZ40DJgACWFOiOIpwHlCQggSQAZiERpSAChZxBvPyACsjBG7yUhRwAIY4c1uHb17wNb8AAxoQASYHVPMiThcgABpEHnSRAuhXEv/wD7FzPUGQZ/y4j7FTMeDyOBbRT74VBIKWQAlwAJb1NAjwBRIBAAYlA/04kbETcJqkOKhQagIhBibTC6zQCayAMiZQcl/TgnSBjHvDK0WAamUUJR4SAsWoB5AAIERQMuSjjr3/hXSNOIeBIHl7IAEbETjolwEPcDtNMoMDEQaj9zxw4CuKY4Fj4gV8pUEriRGfoG3zBgjzlokgVAjo9okD8Yia8GCbEAk2Mnv39jkiQA24sHaKE1ZJwmfqF34T4AtFoAcUUAApQCy2OBB64AYM8ApGcwIdZE0e0CTOQ3FY0jjiswSLtFzg0gGmwmkiByIMtBMCsGfsI3Mks5MTUYHjyCGGMAIiJBABEAC2FXCW109VCQDowGxGwS9V51osMCAYwFt6A0EB0AIm1Ww/qBJImEFKAgU3dI//0AJB934MZA5dAEKVsEYVkV4C8DFiYg5y4wdKECx6gArmwUPjgQK92RJh/8Brd6gRGMBms/CbROAGFoAAnbBNZ9QpgNRq1OIAgCg++DWdz2YRXqmJanAHR4ANv6AG+3IL6GZvYQkIlZigCwoAzeeF0oOavOAhTdIKDyKAPaJPYXBjUBBlV0QIT9IBPiYQ9LhNuXgekqALIGQPL6BBxSgQRCAzbiCFAsFz66QCd4NGEbBAF5EBYQYAGUAIq8abnklgmHURknAESCcnlOAHvEQIHzACTGABZgBNSeIlDFODE5GHKSIEUhM1QfWjPGQpeqAAoZAnaFoCPhh7IKE4yKCRQeAJAgBFnmIGU6oCCdAKdHA8BzYQRLA2fmlLgscAKSCoz7NM2rd2RDALwf+WSBCQJTrpExnQk7vzk79DCQ+wBL+wUqgZBIrifRURBuGUJOGZJEiZX4ogACOwPPczJRmgAXDGQ733Tx4gJv/wBy5AAtCHoADwiOE2EH/wqwLxCC4AoRUhPiVIB76gkLOwWJnZCyjwAL/gCyTwCiXwClLyCnTwC98FAunQI6J5mYOFJkWaZB0wCbzESypAjVcYqmGWF2EQKALQAipoeUmZVxcxr27ADrKSSDCQAJSzXRiUlErgBKaICAJAMOwAABhABzZCI52wYishEWRYsRnRAkoFAW5iWQjwoijRdhrJQ74AORblBwggAg/wBeukAT3ypwSAAe8kAOdQjKxwIen/JQlrlxFIwJ7pygRu4ATgmZYrQYe6gwZA+Tsq4FRxdlvE+Qpx4AYUFQC+kwFxkAAg06cTgQEX8n5DwAoIgDmzECLT+UFRQgI0NHyUSAK3cG6V+Am9twAN8A/kdgcF4KuU+AfcxgnnYQegwG2YQAKgQAKQNkf/Mp2Mwgdvk0NtGAe5sEoCEQJLcAIwaSPSUhGFpUkUxxEcAgYeIAOECWYEEAHqgCKSMFQ/RpJRUyuWA1MSFy1BdrHNOhE/kwtdMiZ3llCVMwsvED5esEYbiESY8nVaoQdnVhEp4LEmgZEhy3Y1GDmIQAl5+WBD8ApsNjNLICd6MADkcQ4sRaQD44oy/yADQVA7qxCpxgQDZKYSixAIlvoRdJKpy8MhcJCQThAAKKAEmkpyZuAJ10WYhFk09REGiqIAEDAGSzhNCGAIbMZnA+EBJGAJfYAJoAAK9TEPEYwJDeABf4AJfcAJKVaW8wAKHSx0NNAHvcDBfdDBGukB8ThNTBAHS4AINucGFjojjYKaSsABCzUl0foBACJnvzQEMkAIp5pk9pBax5PESjyl34KLp6N9lLMB8WUjlDBnPFQ0tTkBVjUEkMsAEgswA5UR6LA+khAHKgjG7iEQgJRoZtA9LNI0X7AqLjMCMFyuLqixeJzHelzALSu8ebamKQFMrdYiAgmkxIMfLFe/4P9CCfM7CRJyUHFDDR17HmugAH6wxJicgeyjjTLqBnkzB29oRnDgBA6GEhlwtB7BL8DVIxigAriwM1EoJpLgC+ejfaIzC6MsgZ4gsePlaMvLQxSRF/zBH2JpmhRxmgPxD6UsEF77hmHwtA8wBlgVBCAwZ7a4L9claL2gH01CHqywUTESRHUUmcwkAuaMsjbzAOb8AM2oOJwbO4fpQGtAOtlIaRd7ACKAyJsClUwiQigQU6CqxkoQdOeLCBLbdcvFIt7LEq/QdHvcJnjnc60rEOYQygPBW+SiEpnJCLE3gsRCchTwSx3wAO85I53ArS3CZoaKnDZzzuY8OutcvEFDAPv/yMJCQAJJIi+WM8haEQQHnMqnQge8JNQa8MsTsQgl8MUhIQB2oKAMEKshEQbvJBCJgGQU0Z3XkyprMNEMC9UpdDhsahGalAiA+GKekq6oohEZAANWjREZICEZYSwbQh/7cTgdkQEjAEJh0KFngQINNU02AIgnkQihlxF/yLAsWxGfEtYphNIe4Ttlgh4LMgRCrYB2bBuPAG8LoKBGjRJcGiC1EQSJXRuMXVvF4QEexgCfQKDf0dqunRGf/dqyPdu0Xdu2fdu4nRZZNEMAGdcnUNonobVj0p08JNwYocXAvR9EYhH/EAQJ0zPKTNzl4dVEAT622xILI917FCQeMSDJ/6251j0RqIkS4f0wszNB3oMRD/PdthEGcFAE4hPQGUEE4TkSfbPE4AwuVPc28ek71NKCFCE+N4Qt+lMCYuIiF3fUUErdimMIekUsW3bZTTItHZC+LTIEkuBKJqAGA5HhS9xLmNwKzCOZLIICFGDh17InPYItoz1x9T3f2tsR4HTZIIECJnAE/LEIjoDj1L2lRZMIfgAB+U0yOqI4MfibFxGjNJ4b4TEL+BE4zvN+HmBQ4Y0ELx4SgobOItBmGzIEDwKTFKgL4jSdyDsRYOIySCCjnSxOrKC9PdICz3QRAkkyluMGSPUAUDPOGOIkmelwDBLkJjMzMqPOUIsioaLljf+WADWDzg9gCCBELfoSqILtKcAwL7PgNkiwrCdjUvABf930aKgZ6vvYZzO65M8lAvJ9EgTDrda9YHyQNNCUAUwAAyUj6IMeWY9eTaj5nBUkAx3A05/il25w4COg1LThOxtalS/yXZQgkiYDI/Td2Rvx629j5TB2X33lsbXzS5VQTKiWN/oh5ZOSZ8wTAg4wBECuSMlzbK2rOOs3H4kCCSXQAW7gCUqIEUnyJIsADOlbxXXTVhrwCcisEWGgdRoBWItVCR8QcPAcIwrQCiwQUFBAVXRwIHlIBJYENpgjSaizAp89KGCgZ4Zg7AnlBF13bSUBcfS0PIvAC3WwCNRJYMX/AwEWFfC9beZzhloakE0j4AseO6fOYw7DzkOEgPK1QbVSwyY/VSsdKHETIKWCMwJaNAT0LUZDEHCB5jZlUoUftAizUD9gDgBaDDqhYD1xgDoJmUkyb/QagS0nAOQvTAGHcMmKRHcCkCeCsATGBS4jAKtFSADsFwdB9TQHkGhLVSsgRAkOLhJIcMYXEQYwgDrz8h85VHInsySA1yO5eBF48jfeVOB88tMzMguMCQVu0NYUcfICkYPRdRJyhgh5gogCwIbgYgFwhgIu5xGdBSBBGEQJ8PtwcKpAL+xiAvM6nBtREgoEcixbwAuDcyzbaoO4IDBhoI32dH16Pu3oFwKM/1AAxEsAxwT2707vSUU1Q4BRCLAEZgBXUjRAkWOsewTItJVcj7oEEIAIXXcrcIJUGcmwMMAmAFFGoMAHbkyUMQHBTAEADSk50FBihESJIyyO+HWi4StgJg6YQKDAI0IhJsYEaIgiQacRGjoo2EBExK8JEyThIiGgIRFGEUcwABBBXUOiRYmGgcPH6FIAQTok+DJkyIQhkuI8oKABKFEBlOB0OkGHAIA1cBwgusBU7VJJSRM1WBTnBRMVSr4wYWKBwL+UIsZQnGixYomtRQVU+oKSKKUPigEIAEGCKBE3Yx8TUrpW82bOnT1/Bh36KIINRuMoajjEg9EwCOo8pkppyf+vqggyi+5gKECEJQWQLCGwSEkvACEaNz2BAteR1Q0rKUWS2KgAQg4YYMBrIa92vJ8WOYIA4ddkRmNRCHltmFCFhi0oEAggwMO/NZAYrgXBXi2RAQn6DwCwP/8GUOCIlOAYYwQoltCADhUSSDCOdBQLQ4QGGqqwBC844IqXUIhC4r8BwAjKEKmk+mk6Qgag4AAXXRTiC8syUAEBSBhAwg0hdnRjjAl8GcANA5uCYsQAWjNkrFdWpAARjUD7ZxEvGltDBCEg0cAPGMw6xBEztvqnNQAHFHFAEgVQrSEBQlDADIXcVMKQ+x4DAQwP5jPHjQ3uXIQQEjULwIMA4nMMgEH/BWXqn0BRKtTQQUWDNFLRUEAgwYkYECCCxKjTragwcLmjKDGOW8Q1SAXIrYAQGAlAj96EIy6EChwLg5HS1CSEODH0K4o/A9d40QQh4KBA2FAEsMcEOP5kBZfS1nTAMqLQgeMDoFpA4Ivw3IxRMfkcC8KDVNWKwBAGpDphiHTVPVGxFkQojYhOMHwPAEpQUQwFC9vTxY8DpKXuQ4cYYcCDOoN6YJIDCjrgTzVDGICPCUqguIQJOnjAMgziCAWlIKTyAN3HJPFjLCTgSEBgAFhZVk2vBlD5MwEmKiGAFlomawDg2ILjCHbXXVeqAP45eQA5i0tACBhd5JArEAZ4IIEE/+DoL2qqb1tKgDs2WWABTOaJBCUW/gCk60iOcEwAO/ow+xZOiPLgkUa6JqEwSe/GuyhKpQaQPXN6QypmAD51oqhojvt0SNx0iwDf34KbJdbjMLRxIUoO4aVwIr4wCoUHju4cgQsB4Ms5pfp0AIIyDkjgteYagngJ0c/z5KISRr1PkpI88igUJESQ1qjcGl2rBVwuzNEMM3xxoLR776vQiSBOWMPWADZnaJFzJCOdJ4ZCIBGKCjxYpJLxX0e1v1WW0qMyvRE6aAwAiBDIBBO4F2ANE24lKkWiXrHAnELzCgSA4SFjoQ4khOAworyLf5oJgoLkdJjGDOE+NHogBjTQkv8RYKwVG9xg8AzzB6/dYWsLaARQ7FDCO1hiAYpbISaOgI1bLCASDJEA1zhxB1V0bXR5A6KkCFgHDwQhDisgC3BS0BvW4CI9DUnDn/SluNCkKgTpAICrCgCr4hwHAyOIA4t+cQGMFSgovAIACpQABzk1CgVweOBjntMQizBgDQUEgBggYRlKPQAMHfjA78ZgAQ1YwAIwYMR9gmCxEDjgF5JggOfWlzVZXYASIpgFJkXghgcssCgOnF9WRiCbsURgQilBwBI8IoTy5MxAi8BF4Qb2vfCd6WBEcYoCDqEEBezIl0IoyANz9AsWQAGLaagABjAQAnxxJRF48UN2smNIu0H/ynOta4gYFECAm02SKHqI1hqAyUlyumESwUPC0RATBEIsYQPlY8R4GjK9orRPgEEgHgBWyAnFeGATLrCMYySwAE0QhYQkOEF85iEZAZDwiSsMWxAlOil4yZFEnzLDA544GsUJABeZ0dcPQYMqBwTAfPMDDhcPhxKIHaCi2TQaATZXlBAsgQlM7NxypjNHrlTiAwVASmYEEIdOwKACAqAKHeiyErwgolFi2NljlICarFUCiZVYwiGYoNVoKuGUfbnQ5lCCAj0FZXIVCkURq/SsSuhGSk+MQJsgoAQScUyOSJxnHBLghEUI4QN0KGRgoeC+b1KAIZoCgD3+pKlCJaIM/+EJz2PNIAQAFQFvJ8vMzc4EhQQ4dTK9+Z0fDjHaQ2ipeUX5TQEEkIYPACADnMXFT4uyxDm1T1roeAAV1dTDB7KgAYqRwEJBAQpAFLQhhXBB1xawQ5T40wWcAIUqSNDDBYg0nxPFbkOqhMDIPAZis1pKBnAxBlZ8oQAteMDo1uDOSLECDEFAQE5e4YngDAcAgESJJH7xCl3w75IP+AIlvgqAV9hxj0vBlkjpJNQRZIsAAoACKqB3AAZ0YFYCyMX0WuCGBtxJKkaB6pwiEK2lSOlDcSAOiCcHAOOVBgkJcNEsSEwJdeRrX2ls5cqAtwheeLMDDlCeCo7Qp/VBxmECUP9BqMIwi402pH0P1GJQsAi+hnRAOpvJACEgdN3OBAFiShFAiCYHYSPBzhAAQEIijQLKyRwNBF+4wAhYoIJqBS8a9pkMYVksuqx9wwUCJF1DVpjcTcwNE1xhASZiULblBqpsLgBEI2LQCExg4lZBSAQEPMHl7AKRCCQWTuEOM4ALCUAxidBSfybxgguEAHTgvJUAsKMBThuFCArIRQnu01cOGYdWOh1cfAuMhEkAer2ATiOwe5rWIXgFDPF5iQghw54W7KgMlE3atTshQNkwJFyBa8jrWpCAC1WCqkUZHlEksa/2jYEJPy6NGCSMIREMCQX9VZNGwiCkh6GxBa2cNlP/wqAEK/0SmCT+5izM4AcvsMceqEHWlY1CKy+w1ygApG9nMAABRBAlEWYI3iKErCYvkMh7RqkelCdYCR2Re88O6Fg28exkPeNWwQC4AA0W4M3HYIMAhbChZSRQXKJgQw1qYsA/H+zCB+pkMT6CQZM7PVFkekASHSB1HhPgx8GV4RdknoRWUMIyb/5tTkUCHWdaA4YhICBJj2HBamRFK0aUGqv3QQe8TA2i3rgRjjvtBC5C8YrxrGkAIni2YcQXH0G9wgudiEMFToBPwzTSDC7aALQeDIVOoGSJm6/AP0w9egvP6V0mm9fgDixgG4eiJjyJ475HJ6Wmwe44Rha4G8Aw/7GaTIwSswieHhTghBH4gnMh6EUGlJAygXvhCwwg4NuXQgQ4wMQzYfCEaiUxlgw4YixrOGcD4bC+NO8lPopag/U/W98BdKIwS3KYceqp54HfHAAsAIQLjkCAEyR6AewAOkwIgBOwg7KJhIQSgEg7ghPwADX4J4YYtAU8gU8ABUxAoA4ojUSQn6nrNDg4ljhwgDGQASgYvjUYACe4mdegvAZCAP0oortTE7RDNqZwPOtIIyVwJJpasU/JvJfoKD+Jg9vQA+nzFATQrT7ZsoZAAiXgMM8xL5rilSCAgp8auM5TkxFQgTIoiIX7BZTIALebALcLgLbYrF46AKVRmgRYsf+b6AQmiAM3aIV3G4BBioOzQoCCewD1I4r0u5Vx4583So/DwCvWEAFvKp05eKmGkIRDSAsBOAFkAYNFiICYyxoVyKQHkC2m0AMCiaO1aKQHmyoAkJJZGbij6ZOdcYUE0BE0FAIcLIw7GgAHYAJH6EQ0GYKGiAZdyg4QgBDuwBj7uz8XUi5AIAGFmpsFcAG26ZrM4xrlsiH+YYFm7JpG4ATLQAIzYIIyODoOzC4S+xhWSKVSw7oEQDjUGoDbg4JZ2KuiCAJKmDnNQK/TSgkIGB1JAAZMPDUhcCSIkaXJIBDFIQKcmicm4KzYiyVR7AAhQLz7oJSomrYxhAEA4yMEcIP/jiGzTuhCBEOZE1wZCniWODAEiqEDihkBQuiU9qg+N1DJB9gkN1BHOPgqfSGBcKmSegSGhZGtNTnJDJgSb8kPpkCHAdgoDNgSgWSKNTk3CPKKJfAEtQiCNOvErAmR9NCm0jBBA3kj4ggDL5AlmfCEiqEYeFPCcyyBRGCYMzS4B8iMHLlEleQklnQDAIlKomAANbBLAWIBu2SAf8hLNUCJE7BLvVyKfwjMgjEMOjgEeeJG7IqZRAg/NVGBAziJpbhGaUGCMagmVEm8zRAAJsg8tVAjSOi4nZBMNNtAxdvM+SnHx3hDGVmK5pCEA3A/o5CEyWyIROAQJDCB0SSKDIAB/yvcu7WQhN+8D6fLFJVRDPeakzCAAKAoHaLgC1Z4AcXIgEMAiviggwvyhQNYCDWZAMVkzsIQACIQHAwxASqKi/PkjA7Ams3AAELIsaVghUl4Es3oitQbHAh4FiaQJyI4TaJ4gyc0FL4Iz5QYg+LEDhiwn4+wHzPYRqdriEfRGyEAxsW00AvFUEXszrwRgBWUlCDISHasT7UQgOfM0LWQUAyFUCB6HdEIl5G6RaZYBHtgh8+otbW4gBWFTm7s0Bs90R8F0rtJ0SAl0iI10iNF0iRV0iVl0iZ10ieF0iiV0iml0iq10ivF0izV0i3l0i710i8F0zAV0zEl0zI10zNF0/80VdM1ZdM2ddM3hdM4ldM5pdM6tdM7xdM81dM95dM+9dM/BdRAFdRBJdRCNdRDRdREVdRFZdRGddRHhdRIldRJpdRKtdRLxdRM1dRN5dRO9dRPBdVQFdVRJdVSNdUqFYBE8CzOKKITGYKPOREPddLp0VHD0AxJ2DT7nABMGci9PJURyNXQKKJ0mZ7pUQ1jNVajCAIWeESimIp8EgAL4NXHUAG/RIJgJdER8D4AaNGpk4QvKR0BoAPFZLFOEKGikAS98Iw7aRRJ0ArObIla+xhvWdYZ7Aw0QQl8NVEllY9uFY0weIORWg8flQSW5JEEsBIdUYDyXNIqibkMYALlUZ7/jCPRtrJXNflJDPHADKDHosAOacIL/uQKKDjJIcAAqjjZqWABlJ2AFBGTBwiQw9OApwGQ6hOpL8QaMUhErsiAB7Csj3kFJTgWV0uXETUKShiADTgP3oSUDPADL5FYPwhRFjMjNakEBro1YISWZ3mmkG0qb+kAK0Qtl7NPY8pXo1WTEfMv4ImU6FAt7Jm6j5m8NFkLD5ABDCgBOrAAP/AFOKiAi+UMFCADMpCAWlWLgasDw0WwvRoCFgBHJ2hcSWCyKHWKEQEqBJgEFTCD6gieISgBFsiFISCgDzgRqlBZbzkpDMGJPpkJxbCKSRACGPuIA7gDpFIt8VGTDmhJtxQC/5fcJHU0kCCQhBKoQ9kogV/wgJalGBUoK6LQF/6hjqQsCuX7kERwgwOAAzfwhweYBWHRLdSCgwYQAC+wwUi5mcw1AxWAADiQDEmgA5vZWSr7ptUc2yHJgO18kTPczDDQqKWQAz0zCo5VAwgDr2rrR6IQji9gBTMwpDhQAHebRabdjDA4gNLgr3OVqDUQkmggwvfxiAPgJFXkTkLyUaYQ3MElg0JgVZsJ3whN1af1Az/whCcJkxtrjSERDqlrUutV2pdihficH6X5CCUIkg/+YE8iig44MgT4EAhLTSfDpmlxgAtZPNj5AmI1jiFQDjCYvISKUDTrhTWQuKMQglu5E/+oOhd9KyCKKIH67CvLcsQgAAEn8IAQuOI74VYPuABB2buTWR8UYIJcQJRJQQBvKpXCeYjzqjua+pMgkAEiSACfoduNwCPP0N1fqAjT/b0GABmugDAFqNGMTZ8DrSdySwQGZUn7WR2GPVwhcKowcGXAdcSsQdulyLs6qEqmGLe/KIEhkAEvxpsTRuEUVtw0OgheYtAG+MJJKK04iCoWIxaSiGYT0KvvTVI0YYGG4Iv1skYHuKe4K6KeFL1x7lCNmBkLUIIP0IBslhL8YVbDmJLzMoHvsz4oGIrHgIJecLoQmBePOuDHuEYmdCnlsRt0UIJbaZ8HKAg36Dz+gFn/sL7/V1DfB4AEFdiAIKADGcZCM3hXNGPQ2S0DIi6WhJDMEu6c8PXNd+IFyYiARHpeAPjWGqEAP8gFSghhlazg//EC3aCnzUCvhQkSCvCEDrhpIfBIonjPKcbnWXkFM/iFk7my8T3JhiBZk/aU6tsApFCAChUAVcCEAkgLoijAueQKGGiAMAA5pliDWSDrSBHmYSaDgHVKOtiCc7CWNUiAVeCx9OBm58WFVqgJJEAAwC4BSXADnmNSMVhH75occKKJakKzpOi93svmjYCChdGR15CSLxgBGMCk29DJsWgNLJqD05o72Dm3sBXFj1qKKfQFQ+iAJVCBrHPe5hUDN6CNIXA1/3biYg0rK4hVAQA7hFyIADeALOWhq40ArOXeoOBmieWe2s8Ik55BAaEslQ9p6QJAga1mMaXh3iU4giCYgIdAhJrU5kUomfHNRBI1jvMqY0P5GEqggF8oCxyOgxtJYkNQARGot5VZVf7QDyQQAi10A4SYBMheiygBSQIIgziol6wJgAuwhEZQLceAKMBtgZNAAko0CtwaJO4IWe3QDnINXLge5j0ohGLu2cRdsnfygiEZQtPj7mCbPSXQYa5gADvwS7j5BDX4BKBgAWw4AgaQgE84ggFmgTuwGw/o8QUUgLxE8MrlAxnQXf7BAAQAEAa6wQGgGi4PkGcWvRBAojVYHv+qcQMzOISOfoUwSpCtIuI62O7SwN2GsAfOaQgQ6DxYEhwIcwIk4AMxloSDzmOyYOtsMqxs+oBErm3+uZlUaAjGytGhiQAtD2AlsKy8kYTZyS0eY2kRKIC8eyDkqyfA+ZelUGzxBQ+JlVgIKBkM0IhqC74DOBJbQWpvYYXl+4ISMGEsB6+aIqaaYIUbwy47iIR5yD8S6ANQ8BYXsuYd9ensXUVf0pFp/2fNeGsTH9w32Nc9dJ/TG19ZepwGEoGPWB0WOYgDYDLDDQAWmPBGcPc6aK5m5AQPqCGvmYcYQKFJK5tdMONmxARQQKFGAEZK4INFiLrpEO8RzbKU6eJf9gD/qBIhKACDrjgAPyCEnKThgdMRlDlzQlBg0/6qEKCq1SIR4eAeruiAVogA8vqCV3AWAf9g2545c7iLMbCglJDHTBmAL/iE+TEICEgIE1CC2xDvmpiKCeDtvAkTckOHQr7uoEikfxMpfv7lhjAH+xCvOHqjkldf8ICAPHSTMSAAcTqA5VMaK0QCw+JBdtyCiOyPTiAkQspOXFkCGDiO2AYhpRL2iVohZJxGTpgToLuhu0GHSOaLoTGUQOPWbV8LbDfxPfDXpXYICXsr7TLKkJGKO5IekLkuoHOBOgBMrkkPdn+uE3AhElCtaERG0C9AgAq3vl8AElADorN2RygtR/AD/xWQ4UJZkgQYPvkIl3AJSBEiagoYHTFQp8n5B0RxNY85LwdgBwJWE8VqiC/UbNY2jA4YgzhYhTWgAAsQAgIQAwq4jsZVDHN4gFYwJELI85JriDlo3i8cgAPwSDFIDD32AM0kitselqSZCd4AiAAABhIsaPAgwRZwGqB4sGERLxIAIjAqgELEBoICQjxw8AvJgTgfLoQRwqBgGC8Jjgz8pzEEmIKS/ByCkcCPHwtDZIihQACJgiMeAKwpA2eACDNmcCpV4csBu4ECEv2ilG5gNAdKzaiAIaIBwrBiwwr4s2BBJAIGg2xakHHs2H9EZqkN4uFEkBMehngYCtdgGDKCB/8TFlzI5cFXCCQCCFEBAEQnA5EYUoshjonMZcwcgEMBQhkTZQ58UVtQwK0FjAFIWODCtIc+CwAt4CQQgIBNjVgOtFN7YIBCrnmzUEN2AgMBHQaMGaEhEQJDBaRKUrKkBC43Jg5wP2Bi1hLTAiZAebAE0W0kDgi0GCDZ4EZI0wfOcZARyuOBIRQNJKIg4yJChIJbB3wI1MEBGIURhxAiEEAJKrcVRAQcbgghxAMfCCSGfUS5YZoYbrgRSoGUUCBaZhAIwQdBMgyRASEVBDFEAXp0+FdcYcBxREMPITBgBA4U0MJX/2SgghBwQPJLAK/EMcAXAJT01j+LEOKACHUcJAD/CDEdhIJPADj53QAHNCggACiMMYE90gHgQQACwNmCG28RRImGjX1AgAd5ScIIWDgKWpAHlrjQSCN2EmRooIMaRMSHrFh4IaVCQGLaoIEVNtgehYiFghIjSoIASxl4wZseS0z3ihllQACBLwO4UaGSr0LwwnwEedBWJH1ssktbbhEkAa+57hpJrrm5MJ9vq40VBgIsLuIFBwOF8cAqBAWBAEYZIFBHXxf05QGkpq3xwHdeDoQCAq0goK6YDJrwQAIUcMeefQJAoY5AG/GnmJfTflACE3A8plwnDNyGDi4P8ntQT/OJ8cFAi7wLwBzhEaWABgc4IYC4Q2BAiUcYsHAC/3wxEqTjgI4ipNARSDhosUQUWfQfAAp9oQSLFSsxABiSAGPnGm6UwMt7p3Up4SIwbNACLgVAAcY/QYTg3kB9FRSBrA+44bXXcKxnkBjpbCirEBY+gJHLg/pWhxq/GWSWlm0TRFEARHjEwgR8syDGA5gKKoCmm0oAVxCJhDr2tO+tURnE1+HyCxRRhvXPrguAMg8JnN9xB6bYnOUCb7htEomEAOg2n3DOiqW3uQk0IEAaFUgoAAZqhSECH0HkMsTvMlCyxFvjAdABvFzC8UGuuDk3AghLaOBcAHPgjB9B9igShBca4xZBAgN49hYUH1jABBOedOBgBHkaZI4QILovRv9MehygliRjLKJEEQBIYkEJJtCBJfxiAiWgitLyg5tKGCJ1dhPACDwQggYCoARDmIgChgQoAPyDBY1RVwsQAAEKYKd0corMlkCgQAB4i0fxs0dM9pchBw6kAxT4hd/6NgFJKQoAeBLIBIcgxCG0gBFHQIzdxiKBOwjEDo1aFOmSiBvsmUNVBtFDnexWOMF0Cjd/WcMAEvCBXwiAEJPwgwri4CZtQUEBDYDWBhTzgZMgRACGqoNL8oiy3gAiEncARKKy1pa6AcA3thnIJxZASLFMq2cEWgIMLhUWaGmHO9sxgXUEpy94ZUAJCehhQSaIkkmoBXu4CUEvFuGIHgogAHD/kgoUKOAIPyjFKw+KEMTkM5CJEeQ2RKBArvbXv0SY4FUPOOYXXoWI0xBiBQDAQAkCAMZsCSCaA5mJHwQHl1fAwQms8ARBkIArdHylIJXohVRU5gErLRIyXmgnbrqEEi9sAB1CkBo6icCIEcABnhPZ5wgCKlAVZLEgZTtQAszwKjPEwQFPlGLblAXKTP0IAGLQZUGwqM3BFc4Ih8ORJB7QiQlUwgEkPaMZBAE5AASBEh1hCbRYAqoEfEEDNMwcJu4wD1D0wQUM8MA8zqIls7jgDgXIzVk4cQezpAUALLiDKtDyOaOGhUOCg9YAVggYETjBA/+QkwAAQATvESQEzrxm/6jgEBMUQEBR8flFIiAwhgD0Cz+3geGgoODINMWPCF+4jZqmY46EQsAMSmDeo1CRqwyMqCBF+0UcxmCQONVDCQoowyzkI4BKhAda1QKAHgbgxsGVtABEAFrziKSoEHRil6OdoowmQBArJe0lK+wkHyiRUASkkrcWxdlpgrSU4frBEb4gnkHwtEsClqC5iWAbRJMoHGRJ0T8ZIcKShjiEE1CioFokwx4kEFa4DGE5YOjXBF6BC1SNTTEJ6MR82MUbAVACDmQlFCh0EwNAYEIidtjEfsGlCkBGQg3KAgUg+kgCZiW4j7rZxUQlodaBBEGAIvgCE6zjiSE48CLZKsgFxP9w383GBAMwGADziCACRIjhk0QxAYbCqB0hSDadVzklKpqr4x3rmAVx6oDXLOSGWSiAABHApVhxRiE3mGmGA7kASwmBZBbyTyq6lUwLRGqaRUAhASIQghk88VOBoGB5icAaAEaAgCU8tI6SiMNKJmMwx752gXyg7wBIMF7QumGEW0ZaCuHFZe+YwA8Q8AQUrFhGjxgkBBXBi170UjRt4mkCI7COBkowggMmYAwa2GN0B2VHRUqRXXkiQgK80x1MFhmiYfDUX1KigNqy8FsDwYAn5oOE0qUJAR+m8CdoCGJQD+QExhYInLSmOk1kDYm4OYEr7+LKsCDhQ3wdAAWW+cz/5SSA1ihIwCIvs7xcraEz1VpfKOo6gAGY7R+sEAEE/JBpOkqlA0n6rL7oFb4EHGXd/kaxQCo3gYFPAAkL0UMC/PEqBNjOohi9qK4P4MlFZmAWoRCACtb8C4KASgQDQphNX/aAAYyNg1P6i74UsEhWoIdACLgRCuAcClYALXVlHIAjoUVrVhjlrFLxi1RAcCMqD30iCRCRkNXmUIN0wBBxpYZCF1pYhU401GJJJHWT+ApH8EbEG7BLn8jl3STueSxBKAG9CyIBYR8kCExIu9UNwoLTQRuiAqh7BpgwAQe6He5h+MLGZ9uBMTQPBQeYK26AjhsTFU/xBzFRrjUyhLzk/0UG4wo7X3CjgidW86iJmKUZLDAf40ml7v4zgZjhw4QNYNwTDhSAH7TtbIS8ggmBJ9BfcTQjsSiHAq63FjDQk4ERNG8gLTBDMHmh7XAKoRPEPogqWV+QDIRcKir4AgtygQGRAW8N/ujhCH4Pl9nHPSx2iEGbpcgKxBek9hstP/zjb37aNAIQu3i//POv//3zf1B5x3//BaAADuCWPB8BHiAC/sVTTdURsF0CPiAERqAETiAFVqAFXqDLkB8GbiAHdqAHfiAIhqAIjiAJlqAJniAKpqAKriALtqALvmAE5sWgzIjjwceWOKAUyQkM4ogAcNgO/mALtlINfiCP8dimaf8ak2hEB7TMNQ3NX3RSw+GIbvHaQaxfsnRAJ+Dg4NABHSGBCaiFADgCOBlEC0CAaQQB8eEGFxoEBmgAHUzP9DzP9NzeA0LLXiGEJEAAvYUh+wHhX6iJQLQA4aHgK3zCWpTAHglAELyhBYyABbjh9DwiHTxiGm4J8mihRmjapm3i3g3gv4nPJ/rbGuGGF8CLdcGFvogN3IWFQtScWIiY4IAAxfCgClChRgjddQGTRXXbQXRAq6VJP7mT5UjF1YTiv41iAioGrR2EitnJtGjVBmKcLYaaAMTBgCxCHCxj+UmCGTBAImShQaBAGYQGBKBIOZLjOS7fnYDbhDwAIa0BHIz/XAIkAL2sGz3O4wBIEkt1Im7EAX9Q2MlUjApMnVwFgSeJwNeIwABYkQDqRZ+cQAvMghM4ZF/IoFRkAC4oSiXkSViVHUFwSC50gBvQIUKEgRIYgppFITPqkrgAQDT8VZzAhR5QwCpqBAMFgP0EwEXAUxmhU4VNxHpAxB1eAOWdQEOAwV54gAwUHwJCiz9tzQqhw0IARytx4C8BYBK1wBfmjC7qH6qRVMkRxCsAQ2aUpVmaABykmscMBKtsXBnV2Wn9Gsh4gLgMBSt0E13mJdChwHrBkgIRSaA0DYYkgBB8wSsIQVfR1QVc5QP+kgMGgXG9lxkQHiWVJeAZBJeVk3I4/wATJkb3qAU8khJCmMMkCAQRZAYCKEBZauNAeIs/BYEK+AET+MIBHIIviMAYgIAbHEJxLR/MOFwBQAsYCIAXoJNYZIA7OgoLgMI0IhIoPGcDIk5s4oQfwAAcnBF1+gEdCQASGNYSOIIZsAT4EJoJ9KGgeIAqPCcJ1CQ1EsIdhtpFfMGQaBnvzQMVCgA2uA7t6UIDsIJiuUwIdEHhsSNkWMd8EEHg8F75OCAKMELx+GNCABdBQIFxZoAQZAvLgdb9DOArDGRhKYEDEGRhiZ/OoFEcFJneQGIiBCPHZccRiMuPmQciPB8KXEkcnUQIOYD4+c8IDJAG/AIGDFwIfEAuTP+AF6jDK97XysQBkxXTUSiAJY2GEBhnYwwAS5iDLlFCFqbBe2oEcurnWFTDAjDbltDAAtSfUMEFtKimdyRJJZkJzhGE0MmmdYKBxXSCI46AGjFlXHjALdAGqeWfjVRdEunIeqAAyQGgB/SRA1lCoIpFGGSTIArbeGiapXqQvggJSiTAaigEOgkARQDgaXXmQYQBLgSKvvylgxoEFJyVha7CZj2GHoimALZAQvmBElAAToCAAiyFEvwldK0BI0wAz8wWoAmAJNgEH0iCmaRNYY4AFCBFuuEGEngN652DJDlJPiahFzKpXElMlAjAOcBLQUwLuYbFGoiAIJQmFMAXYCD/QJwRwSQkSxx06co8AKnCxVMZx0G0Bpl6AOho4L0yoWvOFgLUGJfkRzVygN4UgC8ho6O8jf55i70mUeKgxyIkQsvBBzbcAQv0EQPMA786FVrgIAacxATgH7Qg5IVklX4IaEFcRNJA0EnoyxKwnYQNQB0IwOq9zKr24z/mjIROkZd0UrZUgmSBBFbCXxGpBRF4SRjoUgQEbQsA1xpMgg1hCgrZbOAFKcF1oolJhrbuifHBgZt4QH25IgCYA2IRRDTYTjUGLRkm51goxwM4wdUSQHV4nEZ0WbxiFG7wgiOV21YshU1AAi1xBQQcHg3ZQSPEQH81zz+cgCEZmwGWZJVZ/wsCJA3FSoUvKCwMdEIcfFZ/QCxw2EEfKBhT2oELwBMLDJgL9IIqkICEoO7jrifvMRCfQhQS/YMGEtWZJhVB/APdRFfjwEkQ2FWmNk8Y8OKWxIHZYK7EfYwXLB1gVAjS0Uv2AhfPMoEaxV4GHACsuqeGLm35EYla9AT6HJdadMDD5MwGAQASMAIByEAi/F5MtcRULJQfBECkOsKrHMJ8tMCKGET4tZ8j3N7EpA4W4sY5UGlyuVhYYECGEZBYWVsqloaU4MIT9CVpBtM7EYTQRF1h+UK92IqtjKFBfMJzukbzJNJZxLBqxNoDFMF46dxseUHPpKpUjG4QYIAj0BElIP8DUwaBo0aCKqRGJMCdmVJhIdQfCaiCbFBXoaBFEqMFe1pUyUGQBSRH/71uW7hATgmOb6COq3lBo2CPvsAsx2UJQnTSuYqJEqDCEBCCZJhKnbUmE8wSGuEC4lKnJyTiQCKAG5hBKFjoEQgAoCntABbRdS3BIRxCorVv7gEjBYyjEFiRGOAMRpaOxYBBCVCCg+iBCLTCCHSXnXhAGz5PQGlic8EddpnWJVlWZqyNCSxjqL5iAojfGmzlZMjns8mXWDGPDgYIa1YM3Q7O6TSPB7CA6GCCGkSz+ZokGAxB36zBu1gzBqjZDrdRZhzAA0iEt+SHGFDQaUTVavgGJqSOxBb/xCPMMAf9Qf8AwDtzAkGU8e4igexIxTkMAOny36iN6UHsSiOY71gsQl8OhD3kRwho6so4b+4kBBz8mgivWQHsT8uEwZXwmuNBgdwCgAN1gKsqwSoswgGAxUwatNWhr0V5CTpYkfsmhMcNHCXQL2RcjKmWTknIlIOsASQIBDqMHRIIwXasmncchVaJwV+9ggU0NQKg2Bs6ohcr4S8O9MlGmwfogRvJCV3axcqQilhNwgVMTc6UE6SGs6Psyi4wpXDMs6CY5NGJyCwMgNekzc+0jAD4wgcM3BbgwmedIiWo5EAQi2pMVVAVdEG08z27xgLsAgmoQb+0BQkcwR10LG1U/50+Fw8UuMExw1+zOOpD7YoLECqOmEonNLUFKAF/rHEBQNm6uDG7qEtDCw5sjhsLeUHSKIYCBB5Cz2wcrFD73I5Ht6YQ8MgDjAEB9PLuyp+wZkR3vUocaEwHKMJtqNZAPA6I0C9C6zQFZAsKxM8cWBsBu5Xv9lINmS1JYlcJrBJkxMEBAC5CBAn+SUJoWBKZqNoldYJpOKWGQgDbtBhpX0u+jsWxMCULyM1bKwEYzMgQjAofCNEJjApem5K+fJa3SEQHCDZr0IYLuMDoNMJoFwQNtO5BfMImeHhSYQ6Hy3AjLED6ye8+S4VXByANIIsAxMAi+e6Jk/YTEoKXHVNWAf+RQ1uLOyrGEtARu2iVwZ1XaypBZ9pT3SC0I8VtQTRdssCAl4xHALgUvt7daSTCC5Bk3LE0h3yoJNnDMDrydevCGcoWmDgjLpz2+hDATE5HRC6tALSYgRTENoOArHzBSVzUEFDLWGwy/v2wdo3KAxgCAwjR9uUCYggzJYhWVHQSwEEq3w4KsbgADbWOy7i25tZWeceTwsbBPI/HCSgHNIp2A/iuwPoGFTIAymAONrSFWpz4EYH0X1BCVR/gBTigBACSSk8SLuwsgaw2FLCxtdBUdMzHtIRRbS2CbBEEjNAa0GEkE/Lw3ZhzDQ2M6FHZGAgCqWJcTpihwEpR04qVl6D/AExTt/GJwBHYxfxq00U4IwJ8gQXYkh5cCiU0uyUCutHB09V8QCBbCxwMCDw2Z86waN1a1HUo+CT52m+xxEYsAXRoOLXXsKD4boGnTnDUBiZC6uaSxefqRRCMLnzAxEH8g2/41EC8LglgCssrUgAghkQJ0msUkmvw6xKBwvttBBuD6lpKoAAIhyaEPCM5IYX5YEMX3si5KwtdyS90gPO+sZMzEi44y3B/pJsEgSQ4Ary+V5xEwBIMwdVXJQuZ4USo45iLgCeQx8CUAIcgQgl49G1IGMt2hDalitZCAFiMR40A08QwAPnR1wNAqQhQtFj6WEIggLsrR5y98cUgThuB/4VJ3lCHgbXx5HlQEAXOvZ5OhrNHIgQMo/joZIRvjM7oKPynjHwddZmI/AwE4wYh/LNGzAOgnkUjUJdZxDCK2/M/BIvuR1FvtLgMx8D7WQzpimucTqCjPqXVBWhrE8RpuasAsMLLZcRGdP4be8GA+0wn7Ngc7xj0kpnXJIxf8HoD7I+WIAFiKYcpmwCP241C7Js83uO6/WUChMLAqYCDrAtA+HGkxFABAAcRJqRHgQCAfwkhAghC6YEDRBEhCkAC54PBgwI6JOjEAGOEJR4zDkkE4wGFDQgXwRgwyc8vhGEQ1EGYAUYCnQAERDDUMCGKMggGrMIY0cMdp0+dGmQB9f8p0aVLcYa6CsLQhAlbcIH5mEiFzCNXJUAleRDbHRJUGxxUQxXlwX9qAyxdk+DlwQCSCHG4OphwYYiFFkSqa9iwgBFMHpxMKMlPAQGsysxcC5SQgrgRMygRvHRRnASnByR4cJr1gI5AS6B8BUWEEwChwQQhJPm2CjMXGQcHgELXBhkehniQcUKGjCAdeiFE8YJoBhsF8rZA4ObL5qV6Ji2+KgnEgLNXXynpJJ6SiM8QUTxQGvGVFzcUfuVNKEBSnAckpOPlM5BEOO+jEyIqzY0xxMPoIeEgRAgDJWzDSAAVtDpoBOAEgEIBNyqMUEQIBahEEYiCiOOnEVlESABLFjD/sEX6vHgAxKUy8EKBEG+ywKqEMqiEx4iCOGGIIpMzEskODNEvoVfiWGLADtwwQQgZZ8xSgKucBECGLq8KYgIwB3OswYQ8IPMgD64So6CIBJjAO4yC8O5LFxHMUk8RBSiSTzb3DDShFkRgByIiOrlAUBHnWtTFLRhQU8IGH+SyxSBYUHMIMIPY1NFPQQ11KQFgwFLUU1FNFVWQAERRUlVhjVXWWWmt1dZbcc0VKF157dXXX4ENVthhiS3W2GORTVbZZZlt1tlnoY1W2mmprdbaa7HNVtttue3W22/BDVfccckt19xz0U1X3XXZbdfdd+GNV9556a3X3nvxzVffffnt/9fffwEOWOCBCS7Y4IMRTljhhRlu2OGHIY5Y4okprtjiizHOWOONOe7Y449BDlnkkUku2eSTUU5Z5ZVZbtnllyEiE4PklgLUxVdP7TPPgzBg4B8xcZZogp3VxWBMXf+JM2gXaW7so6eBWnowD+ak2mZQ9RNA6lEB8IDNfy64WlgBBKiUMQ96hghtTw+KKcOPCHkTozUgsIrUMbbOKK9XYCgDgr//NuOXDv42AQIz7I7jbQFA0CoCVIJGwrNFDpmTXMblFjSI2CrFlOiMOhDhx8EwIGTI/dQgSYB5MAGFk1tah/0nCUC5BZTaa+eEAVVueZ0TUOz+A5Mu7QBk9IyCoP/D8sIEYOKi5oEb8UITbENCiNN/FSAQNMQezw9fZnEjFMeYgEAIGzvR7x8U4OAxDDgcOB6AACKI/yYEossokcIBNxzwA9xzmziY4AEKeMAADjCJCXRACAc4gBIS8J5FCEIskoCAChBgCCb4QgR++M1V1mAenBhieeICQTrU9BzD+W2FEPCfGVyIN4iEEAxOegUCariUFsAhATm0kJNakBSmfMQSkWiIHebBu7fcYgGNeMnPLIGJJgLCBX3ABAOEZ8VNNMIqEljALpwyDxKc4A+NeAsJbEeAPjFBBWVwg41CkbeDrOEAJFnDJErImBINIDohGIBYhqU9MpCBe8zbzSH/PDG00CyBCUywwC+8IwbIJUQMDhACHywEhfwdBAn2ywgUGOEHUSqBAn5QARwg4Qcm+ME7lOBDCyqAERQIoS+cEQwKRjkJJsRBBGNggk10aB4ArEEI8guXAELwATUt4gwe9KBvnKkCXAygE47wRF4W4YjndWAAddgSAIJIgm/OEA5g2AICupMgGJgAhmYgRAK+ALjDQSCdAGDBAjjhFwHcggQesIQmjveIOtghnxGRgAuI8qJIzGOLbyne7RYAChKowiB0NEMcFICIIZxAACUYwQg0MIL8DKYDmERmq1jUUUJgUhK+AGSwBDlIQnbvkyeCiRDelhHFASARNskAAkLR/4IEyOgyEEClGcywAWQOwA1vdIMP7fHSFIhlEUJAqYQmAIUPmKQER5MOLl4SJ0moZwIeIcJZkPACJ0niEBZopFstwM1OWIAOh2jrmUaUtDuogUz/8MA88iiqv7j1rUpYQisI+0ipSe5HP1XHR0KggL7MIQHzgQgSRDImFChBAa3YWdIcaQELUMI1IxDtad26GTvcISF2cAEgFAMRFmBREzTYReq6JAEjAuACNHDBS1z7kiIG4EUFnSEFPLII+zQwMsY8iBgSgMmQjOEqfgUsYaCASQCIYZPZC4RMB5mJQl6lQ+lwzgn+UZqrJoQIkCjA+5yAzJMg0wHAlIgXIKECP/+whARheEAnVskEJcQSKFB4aQjEEpoifNINQmiwCITgmUHREgBhgMEBbHSAIxDTBGUwwYcPwIe8rMHDHu7wh+FQpRW+AK8j8qImlmKHBdRBjnvqkAKQCkPOttMMCHCviySBWguUIC9EkGxCFoHD+6XjIHqAw3t4BoXoAoBJAVhEB+CwhJqY7SAdWIJzI3IH290CEAvAhO2Ad5AibrEPVXRiQgqxi4Z4YBMFFcAmjsACQHzmE5g4nh4Y4ZEM4OInevjyYMQwgFhGQNGDkbFxMYKESTREEgcAs60WIQfwgne8mUzAARx8BAHEgQMy2GinEMQ+Q5RAqwHQQzc/AgIFhIL/TYsgxIKBIgQehKBJCIkAgQFgD5sCIARfAEBVR5MQKISCCGBAQgUkgQsohwGsfsGJYP5BCUMMYQgzk8GvB6PcZF/Fa2uiadcCoKj9IAYTYQsAoMomYxK8+916UzdC6A2oNH2k3ugeDBR6DZQQABsA0RiKi975ABEc0AEGocSRXeSFlwLAaAd5uFX49gBIfCYMZvBIfwYg4UHxUAglNzlO8X2CABC3zql7RAwYwIBPvBkAfxgoCQjKghjUUgASiAFRLmAQO0QiUgDADgBop4adOBMYIjCDKLfAi5+wwpNL2RxJMFACtmEEMbheCgbylDZgaS8Tm5apeM9d3lysIScC/yDEABb+gANqZQ0P8IcQhsoK+M0TqXEYgG1sPZqqHgIXlqUygTsESAGkIcFKyGmBQ0GJUKzhC5LQBQMkscpDQOEBtaThQ5DQy0Y2Mg4ThxMICA6nR0SiDyRgHSBIYKCm/KEPgADFEbKmCkA0ohG7wAQgOGEQfzbCBY34fev181dM1PkOHhHAI3bRB058gqG6EwAoNoEJNMJ+A1z+CBSQ4XyuOCkEP/5IJTCZF0oEGgBG/tEieDFsiISAEVbBADBakQhR+uEQomRC5QBgBK4pIcJACRxAIJzJEU5J8f5gAX7r+jjhBE5AFeTsBOzAz4ACFOqABgYKFHSOAKZiibgoIf8kABAwwaAWoJZ4QsdwzAw6YQK84DwMDczGyTDkLVq+y+zAC+0y6UTc7giqCgwmoO74YAIaQgAyRQyYTJJ+gRU0QLQQIQhGoCECz2vCQBCcgAUkAXEOYuAQQtg+AhcwaRGUwOu+bww6IBRYQR3AggAiQAH2z0fObwCEoCP0gAJCCqRY7aVY4QA+rMMOYHAyByPUgIkWYAH4qcx+AjEaQaI2Ycbs4hOYKAZc7y3yoimYaKFIIPYOggVgpPUecbcA4BNU4RBdAJ+oiACK5xC1b/dqCSIAjvwIzuBQgnE26QzYz8heUQCUDE7iAIUiYgJQSwMSAX4sJ73ezhAwAgReShX/N+ElbqERNmEXHnEXYmATEOog/kDMjuACWaAPCIAGFmCi3uJHymgC+wAUzux1zEz6nEQAvEBuFoHQOKnqsgQxIK1ZNE0HwSsJ/sH7Ru1ElGsVyDAuQgNLqC0utCbc3q6pVkMp2AdAEu/7AKkFHiAuyHDB+AOYOsAfwGqHTKD+KEEdyEQ7HmAMSo8IlkADSsCjNAAKgG0NVAkBHICNGEAPRIcwvMgFfoLOfgsoiq5rNiESnMSL8hEhZOwnHuQfYOQnng+fXOQRf5KgDKIBFxEq4QSUfmEEWnI3ttKj4qYWK+FtiID9Hs47ciR/giAXdgIBxu0qkIAClmez3AAGHIAa/xwBqXyjx7TrIzBBqSwB1+wgBvIiCH4OKFShF3bunn6vAB7hKA/iERZAEwRAFUDhD0jgdpjod+YNIYhgAAwBBr6gAJSr0A5tTz5hHKPlH/aRH/1xVDDKDMwiNOKiAFdEIrhCGAkgJkrsw2To2FCPK5HADX4iBOyHGb/QB7nCIDJACDhAAMiQyUBiEsaA0taPAChBmSCiNDqB1DDgEzDgEBzBFwbgC0QpehAimfLiH/xrvSDiH14MzrDSnp4CG1GiBGEMI5ISInbyLZxCFYgvobBxM77JErIR6fBJTaBgABg0NRrUQQfA/AQOEk4rDnIR4j7CC04kR14DADALykgjDv9MZZiyjACIwAHGQLQcqZGUYOLoDBoxwSlAoRGO4A5WjyiEZ97+YSpcwDFPUG3soBFMkEy86BVvQwlmwRAk4QHAAB5/AglOU08KwQXM8Flac9PWwftgghAcwIFMgABaoJgqDAEsCyRSQwgYAic+4BAayT6SywsyRACEYD7iQymgYDQSDySGqm3eTgTgANaQCQxMbVPWQHRGEkzWYAmGIDCAIk/WALkOZD9AQDs5g1KXAjGuKggm054eERD6oBESAyXwMcYgUT4XIAaocReoUROcbyjBhCkP1CjJJCi+4AS8JgiW0wNstQPAoBZDQAT8kIDeRBeRDAFIwNYK5CByhDf/9mMERMkRBOLpVMm+wCmd3AQjKmHcJOAvFSodtwgTOKEPDnOfxkgCPaAQAKEAaGB4ZAsQNhATDEICGmF2AGEXeS0RdKEAzEEEfkFAmixKs+QGNccPLCCwHEUAXMHsXvMqMkAQzFDbDMI2EwIDHknQvGBFzIE3Aq9tsPAjYoNxki2qfiqnKLaRRgoAPATEQK3hIsBSDwRk269KIEAJIhQCykAIflPgPiAh9EDk1MSLYusg5M0njwA7WGCL7hMQ8jMiXOs2hdKJtOYh+g0oXDUiYMQg4HM+1aZL1NNF7g0oQGCTytIgiDXiJkEJ3KAvlqqHyORX90+VTOkBmAwjHi6e/+SJJagrKl+iD37iAg9CAsARMY2vD6zoUwuAdSLCrwBg6PJCAP4gG70IyojAPR61AP5hApSrE0IKCgB2RkbVxkACDUczVgTgSrOUMNABAQzE7fIHJ0QNThRJCQwkGiD12AgBDIZgAiRBCJzW7SpkIvetTJbNA7RGANZAF7CTJD8iU/hUMARgZpa0ExBgDHIXTEBgCUYABtxgN71AmRYBGNDzIBADnwjAA7DBPu9JMTyABUoRofSjBI2HauwAFDwCMTRBV1lgHu4gACQToPBXf4XvaBHKAyx3TQx0A/LCfr92VFAPrzokegRA5QDgLJHMC0AzoUIgAZzgM00PJFIPKP/i4IMtzgFCSrQ0gA4soEXRxBIMJTAPohoIU8Z6VM3q4B9WLgAukAAeM/kIoFIeAV7/FhRIokgRYoeiQw/ytW3sw4EM69KEIzXds0UkwdgEIKlkBWEHaWERrf4QIvT6QmLHwhEgAAGGSrkgwQx8Iw7Mj3Ee9O8g4qdCBAwbowNSaf8gQHR+TT/0wAH6wtY2iVQmIQAwC4IfY4w1zg88wSD0jgMyAA7Shz+b6BDLbBf6QjJB9RQPcRfeQ8aE9BB7wSC2xJKJL0EFQBxP9RDNrAAME1SFdPck0hCdaAge0fhaTOACzjAqRXJecYcODgAAQwHmgxISgAO6xB62rduGgAX/hiA9RBgAquCWz2/iZCwSnKIvWOAs/uo9/iASVIEcAdRHEaIQRjAyidIu7MLnJEgD8iIuGyK96BEAqM6Jg2NKITOveAIRkKAT5NlRXOF0CSPJXop9AjontrQ8NYAkcgQSxNgMDCu5Bix3JQEOimBLHCMROkNtF7SpmmoWRGCjO/oBFIG4QmAJeAyjNkAMREADJqAEKkFjGRUDVOABvoAoEqE8GYBs3u4ANCojGG01nBYAMNV87yAoO7EtGOAE5qL5SBAbjkANeli27gAbnDohLPAOmpooPGC1atSqh9ohkvoIbHW19ipokKlD9WgCRqAzfiQMHEGNJEEmloDnuKlM/0PCgfxQCEzgAOBAhJFpECXhlLSrlGnUDrJP+ixzHiTKMuWsMneBdy7zFhCKBhqhAVhADYrI+X64S9a3jIyUk5L42JhgLTIgNgJFYAMFBQ7HYEVFS0HDD6xC0lAiJqgVA+oCJ1YEUZyPEs6jeYCpRBzABAi5//bPrkTJrvpPnTskp9iaAF4BGBxMCCYBgqEgvjqAAjwBIsI0h8TOQhJBCNYjIw4qiq9lOYVjj0RAxCzENBgkI0LbRaAgHQogTbzGA0qjmXmtLiiinmrOuEixdmDnFvoAwIPvH27hNj0AeCTgFqwx+qBs9eqiBF2gMyOC8jziHxHiIVhbRLquXWosTv9sRgDOjUiGYEY2ity8pksE4AIUZRHUZCEZQ0vtIBNvr8aUhdtqLHc/B0VU+yC4DSNKnE5GBwmDowbtgnn3wy5OHEyoJiJYIMcR4sRTxXz3GWZi5R/moXDd8V2IfEa2nMq9HJfLhsa/fMwZJsPJ/MzRPM3VfM3ZvM3d/M3hPM7lfM7pvM7t/M7xPM/1fM/5vM/9/M8BPdAFfdAJvdAN/dARPdEVfdEZvdEd/dEhPdIlfdIpvdIt/dIxPdM1fdM5vdNlpUgW2DAwJW+A5qwleFSUPMSjRm3mB1fEXDiKRNVnZNRFJWrDZW2Chk1kPUJoPVVG3cVDBcQhhBJqVziI4AH/sGcpoAtErwIFEMBlP0m5KeQqvpdHkMAElscDgkzI3IoOTpbcxMS0IIBagQQYfhpOEiEKTUu01l20EhkjxCBtQ4UIEiB80YS40gTEJXDfzfU9BeAO4oIpz90hAuATxJoq+IpW/uIT3nEISoBovoRsiAwo3M6HroIV3GBEW8TLVGelPb4lty5L0MEBGuCOdnxEFmF7JCA42EfLEBCaVAAC1ps+kKIvCUPvoivUT28AHEDjbdfmbfsq0EE+3BsSWnw3Vqm4VYkgUFwS8vJvPEwI/rQl7J1P42dLkAARShIOnpNwIIA8KQCGZF483A6aBeWGBuAtEeIbYUf6buEOLEEa/wFh7gEqIhDjJx7XmEowEm5hzPgJaV89e+Vp8AcfS5BpTxFi2RECSmqoAzypRGzeQRLNmwJlDdrnIJy9Qf/0jwSlBRSAAIJACb7g1QmD7HiQeWijDILVSx1ICEY3I1oaMpJ9UB6ADzAAAb6bpOo9JDTe1rRCADZqs5xAOcotISr3I0KjFzwg1j9cq0zrhNmdEFyWfj7tAMzgEFhyAjYK2CPifTrC7RRgTn6qArokDESgszGrwUoODhTg5BrsAcify2P/8plcrEkxBVevAWLuERrhcxQqawACEKcAAAoaBOBh04aDBe24KMAwokSDKByZuYgRIwQ4Csw4+lWwBYWFi/8IOVhYUIwClAWRPDAhAhFBAAJA8CkoYGZEIgOcRLzgYaLQghmUVJgpgAWGIUybDh0aZMIEDFKVsnLjZAgrMxMYPP0acVEgMmTJoJHwVEAHBQ3AHlTLFoCYBHUETBSAZNZNACgQfPh0dy4JmiEUhJIogJDPRbyEHIDjxsSBSSwlOVIiwo8ZTwDWDJjlRogbfwQMCogDyZGf1ay9TNJZsEM62G5bjgmAAk4v2EFMlj5IZMnvg5L8WGBiQYmDVhaaO2eCqPbdtW1V1h1aaEGBT5ggAqChibadBUcOjq8jUUKftgztAPIu3W3iDwzXJGAfBoEh7yGEv4XSEwAZwABBGQ//RAaBH8MxxBMFEJgAYRkQLuhWb0vAF19aHSTgxoEPHJjAAA+I4IYbA7SS4VACBJJJWWSdJZRaAxyBhBCSQWjjAUKwx5AYPQnAgAAA8oFhQUHA8MALJzDlwRZezPLFLx7oJCMfQZQQgIxRGhQEHYkg8IUFU00giRKh5IJEXAVFkABzyUESQCUfTFBCCYmIwNJpS6jgkRkqWKTEF0VGsERThg7BQi4sDBHUQSgw4VVBIThAoRgi8NiCY6LhKGhYXoCR4lcC+OiEACdcEMIAfIj3m0MBSNBIaQJYwglDCYXH0B8L1EGbB4BE0gcmwfbRByAPhWraCCNYoAEdGgxBEy+o/8C2xqUG6RGgACEYglQQHcwCx01hPMDBCF58MQEU/knEU5jIvesJhWChsKMAMByG7F1DnCDDCR6cwIIkIoQyxFITFJmvWC66CCNiHfgUwgd0wDBJCcoygUB5B70SRwKDEYGnjBSAVJAkKvjFQAcekshHjQNA8pskHQ+G7U14cTQGAxcsogIEDxxgRnQALOJFWyjgaZAYFMwUzResWFsQCm6wBMArddY5gsV1RnpQBwN8DXbYX6uJgVd63FdQGOFGdVAQLHQmxAZ6PHAEUxiwEDFtAlQygBs6CgH4AV9wneIrwHgMABEriUwyTZa4UNofmgAA60ICbIKeaY8jDICunP+ccJAH2MxzR+mkl34HbRm2AAcFEPoyQC9DE/IBbC2oSdMEoCf2BVJQuKEGJZAUEEa9lfikxwGcyzVA5vniRNBcdSWigXPOHlfC8k91OYIGygaQAS4aPx/Rii0uXFbDd0ExWAvkEpTBjgZloMIDCvjU2UotPdB3edV6kqUhlEAqdPIKXsZQAAFQAg4OwJ9aErCKksVhAA6I1N6cB4AwKKE8R+MRJSjgHTFMAga9Mwg64gaAFiSoOcg5jguZwAQYdGI4lFjC1W54w4NJ6kItQJu2hJMC3EXNLwXQwywIIAAVlIcIkygSTzpRgmZ1rwQqQ4kAJnCoLA4hKqALQv3uVxD/PegPAC7pH042EQkGWAI9AogBeiTgAh55QFd1UMMv1KCGT+RRDSxQxQIasYF/+IsgBPlHIWcSgBOcQHVuQYES2CMAL9iMEKjAULXGd5BFIABUBsFAaVpAqUUIYRU1uYkeJiGvgriieXdZihYNxUWDqA0MAiheAj7EPxE9wBCp/ApPSvSABGyAaINRy23IV5CxoM9FmUBDoxADAvwhQQSlCQMuhsMKOKDyWmPMIAxGYhBJHMAEEIDAEQRAhDI8yAQaU0sT32KBBbHCE95JDL6I4oXytABqcqEAATzggQ58YUmUwN8ajggADMDAFwpYDQQSYAbWrEYFCsIJFNLhlgwg/6ACAJjDA9riGZ9IAgHrqpp+IKIHNxBAozcRIWwoMYAEpCIic5gFSrAltpyC7TB6gMMHuPY0lrzim1yTwCZ24QLL0QoAjzhWQxpRB/cA4o8xaMQuFgA5O5AgAAlZACAaUdVGfLWqX53qQELlSCueQ3bzsZ0QKQIH/PVoJfFrSyVMCUIuSQUDufAaH4YwFUTNpAU6LSwn9zbGoBAkCJLESahSWhp6LaQSoFLbXpDpimUuLAnPNA0lTFCGWSyBnGawEQQO8LMy4A8DsJkm1RByEDHYsASbFAAvvmCxT7UNhrxtYQs1gKGSlAoGEvLFgU4rAgqYoTRISMABxvmA3gnJAf8QqdZw1jCyCSBhZCwgIAtAdxAQVCCJECpvefH1jzkEyD7syE/tCuKZTo0UZgUhgkrD4AWfMLGelICoEhxETghBABfULAgGmCDRBCeYZKw9iGsZAl6DSMBYrYrECW5Rq4OA7h8eYMGuFOmB8cDnHyxQAwPUcIs0mnjFJzYxI8FiTbWy1QvTOsglc8e15vLIIGvg3xEWoYQ6lIQPHiDCAYaTiAOFBpeh6dASUBIGBCtYwUwoj7YouOOCEO2yj32NgB4pF/oQSnspyqxmybAOocyTFQgYQ7o6QSc7ucETFiCcjbspkQ50Ikv26EViMtfng2QAGDca53PLoIQB4DkxIh3/oAo4EgqplOAXAfiHGBiRC6aEoIToiCsAkjccPYgAAmYoAwVK8N8CwQGDNfEzIUatzljDgaM0SYN/PIoI35gGCpRSCy8FQIdfQDY/5REhRPY2ABIA+QO8deHvXpsvJDAC2rbaxAIyPGFMLOC1/wBAtwuR1IL8gwZOZcjlsoxMvihhDCxEwCTfa5DbtSWbDiQEtxjiEk8Qog5FienXQnShpCngCG7bF1NY4C0F9NKXCTiEG9BdknuGCmStGEF/F4KEJUwgyOk+iJnRt45uD0WUGB9YSPIqFDFS2yDReC8UOCCAcxSzEmMAyysQ4IBQwEcAexuDClaVOAqYyS7iDnoI/0sIADl1xp8GQQIqGOABSaBSD53I4AGolp+6xEF2DAkBre3FSfc9wAFZzsAE8D2AIhiRACjQnxg+cGwVHGYRsxhMfWzacZU/xSF3WMBg/uG5FwPAIcORnOr+IYEFYAIUjG88KFYun/z47blwAFViKmljPK0BDgMNYwK4jpMF1gUEdRgXGEYQqKxNYCb/UFwvXR+qDPwiA27ApJbPweUUrUFCz12ugLzwAHh3XJUgF/lQrPkbJGyzBfsZirQhL5clHEIFuODDaQ5jW04OhXU/fUsJHi0CEwCQaE7Y52sjgHIxID0IXiHC0ng8ajP4ghEFeIUuCCAGRdSHLafRvkGgcP8U0EMTPrIEXHNFCMM6e7YGJlAAsoVSZlAkRcEhokGBIwJ98fFgQjFh6NFUGzAruxIjmzA5BiE5E8EC80AC86AK84CClrBtb0EnQyB4DOE+kMQ+PEc7tjNqlTcTfZEAChBBOCF3s1MqrAARx1MQU2IQEaBwE0EJCmd8GRIGSMMQW8YQV5I9UegWApQllYBnwwcAH4dmWjgR+xRRfsAEEcUEceAGECATE7EGX9gjDoCGtcULTvAKvpAAtlcyB3AYKBBdtNEXIjAGlEYTHeAf/bEg9vULiJI3DIJ5BcEKlRQE1dIJBVAjFJBl/ZFAW2duXkclLjNwB0FYdhdOJxVvlUf/BF+QSvEjMc5RPR0wNR0Xh5A3K5FwbHfAAOTWB3GEGDTwggZhCUUAFjMBbguyCOcwALQGYxWVhEFxedTyNRwwEyNlCLkQAgkgNIKGAEFIE3fFFw9nEIpDba0nh9IRBhTgjQYxZDQIBwkgV18xBImgAsAgWgTQY3FhKmBIfJkQBbUhCcBgaDcCAUqgAEKAIhORJtBHBDUHAEFwAiVRemXwhhGBAhPUIf53EJ5kGmsBZV5gCFxDBK0DOA/gZQcRArNBE0jQMZAAAUJgcvnhABWZQpVHEyDgXIEDOAnAjGX0Af2VFUuBAdk4PgKQCHCwLjdzFCNlGBERBrOAQSHxABco/x1pYmcG4QG3EG44oSsRREew8Q/zAII4kRCmKCp/UG5D4wUDsALkc3kYkgKqIoRwsB9ZAgJvBXsI0RtggAHZpH39JQIi4CErw0ALB2NU+Ba4546j+BUuUSKT0AqL0l+tsC1FNIv86Appli8YYAGEwIxweI4xcg4SJxSSADuTcJUMkYfaKGiY0QrRg2lbFALDA19+AAM2SRNp6AmrVzwbIAlCwAdroASQAEAAkAizaFvSx0LHYRTV6Iazk1OXyI5xgAqlgQEqIAQD0Hk0sUBgABvjQozzs4YFlm56JxEsgDkGgQ29CEl+FAmysp5+h5V/YCxUqQYo6EfhaRp0EAf6h/8sr8AEjxaA4fSaUaYECSCdWuYFlCKJtwkGQ9ABJuAGSmA/46QE6wJTY9BbxwFDcRCabjGFmCQArPBoubcIXxKVE/EKH1GNDOUT+eEPQkBd/JhumwcJF/g0qSkUixAHdUCGiNFcn8kujNA406kIBLEGxQkAkmCIZNQ3pOkowPALKsAZD8kECQlbNOELZhkbA2puObR65jYTJRETtOEsDKFB60g0IpCi+bIG0zYR/7BzlqAJRaJVM/EIkaAGoUMrOsoQ2YFVoCAvPBqPq4MAAwBOEnFzT2aRGjATMAUGCdQBfqABUiGDS/cbREB/jLRdhvkVt7OOD8SoDIEC/vSjKgL/BSFJEQjACOhGo6Gyj6LCAjMYEf8QBJ31FXeTFoJHqzTRq9JBdK9aEL+ahMIaOrPqFrg6EcR6FzOIBAiULwKwL08xBKdqEP8Qq0NhrRKxraJSAhGGEyxAhgIQAVAqH+WjrMaqruvKru3qru8Kr2B4AczKrt0ar/FBr/eqr/vKr/3qr/8KsAErsANLsAVrsAeLsAmrsAvLsA3rsA8LsRErsRObbvaasBZ7EPSarhTLsR3rsRHbAkf2Fh0AdM53mUIRFXQSZ3GGrF+BrRMwAn6aIpTAS7UBBZ1ic0pQqGEBKQcxT2QWEVExAhHmAUGwL0Z7AkirtPuSrx/rtE9rsK+A/5tEsUlpUQn3NhREkADkpE4F8pKImYRDIAnNwicFIgRwsIxNOxH5gTZg0VMf+hZ8A3dDgQKsZBCVUFJtA1h0YAFli2jT2HSiUSIU2GRNJgQfAK5Qq7iLu7BIgHQddRLlMyYBs1FMgUVYVDYOtgTeozVZowL8BF8ioCOD+wWUGljppi0OEAdM9xQokAB8IFtUqbVjQEQph3JfxqVNJwKAI7gQMAYDpDtcMgKSNgE9hi4qWycTsLGMy7zNy6/vYhxMAEApMFt1QgefxBEdwj8f0iEiMAv8s2dNh6BmUE6kZgZxAKcHIUaeikxz8WNKgLVw+LqEMZNZOwB/aJLyIgkWwP+GGgoSm/cFfGIG0JoSNbs6IgC0zqvACxyvD4C2syCY18iGS+YGTCcAfMUCr+AFH5Bpk9tdi6gArcC31cMs1MEQevBkVAJb86qE0TYAHDBEo2puG3JZCmSSTWoaPAEGStgXMwkbPjJ5PgUAIdCG5SQEU2kQNUQhWQJbzyQAI8C3IxAHS+AJ3jPCYcrAWazF7CoGzRdG/nEaK/APWogOe2gbL1YcFOUHqrEajkDABkEPkMG7mkLHQsCHtSEjoOK4AcCUr8klmagBPVNOFzEGEwSZYwogoCJbXvEKhKCdjYN+M5ECHyAJcOCNUkNDB/k3vLvJlBES2mQGSuAGnQABHeP/D6Gsklusyqs8fErjHURjxokBeuHkBQGoLfGLE8O7RYhStAXDFBIAs1xjHxpqAWhoHGh4CDAEEgCVJQShWDkBABeAEEr4xIm2FxHAoBkwQUsArZTwAMckCVCsAd4DETLTKUiAAAmALyPFoAqEtqwoF14cAZ1wUaSoUuOYGYegz8l8zDCUMyGBNI6bNoxKCZHIygeN0BnSX89lAn4AARslAEWxjnxRmAYRAuE7sgYyCWaAJMpFvuVLkQZhDnkrFETwM+ZlXuNkAqJxTjBVe0nMoDSRZBUEAIiyBS5ET098HIegAb+xqHsab/BcMmXwAgQRASd50VLBCjd1z7HRBcTa/wK4sBDupwFUdM8RgFEJrdVb/RQf5AnmAsPBUQB9kWUR0BOSwHsHqtLHpGU9GgA8GgoCABRBwMTAoVL760J5jSUFQQ9uQCIjgkuCKZgd8tIZEE8Hgc0Y8goGeLV9C4Rq0wl9KwLj40qHgnCLskgAMBOWImBKUHWaFIB6wLoA0AHcsr/vktdFKjBtYV/kNMULQQnvxNWzTdsAYA/+GQKHQWx6ENOHqGgbgAKxZpAFUgZKOjQIoNIDI4vjJASPCwDoJxcKYGgM/QDrwmFAodmmUawtLBGU0NvlUwmHUVdhcH8CIj6OQoG7WyJLhpTDYSkaygRK4J9nw9rKgxMg0JZQoP8AkvFcz/UAnxnVU11CUrMQWF3bB67VQsJR9kQTUPABADimHmoGoNty3EqoWxQHoYACVyck/icAaXAUXUwb5tDUyHQGM3oXlTAYonQEU0gS520aGEAVgEUVLLB5CUCNSYO1KfAFCspRov0b7difEVHaOrHaQTfO3l3gOGskdCCzCA7lHwtkbNSj8PWOcpVELQ66EbO2uPAFBOIGWscOJJdJSkCMEeNEQpDAtSEG321uldAJIzBNDRAGcGpNroqmSsAIQL2E7zfE2scKS1RjGbRqCk7kwhfgZHTSF1oaBQ0fKEBqvnBOUU7pilstXrEI0aRlOIcwR4NJk8xIp7EKQRD/BHHwU2swQkdKinBQbMJXEHJA0vlCBChePjXhAKXGFiigCwzACsBwjpYRWfArL13sHQJFG8ReX7025AwhG0Ye0D2eQbNY0DpBCYfRAt5Z6dn+sZUQgHc+NCrzPjTYquHl3EaSTZPwICS1p3wjcXsTcIh4CC/Ev26w5m6BzQunLXNXZ0dDAPYVCox0lHQYKJwjBpABwQ+A0UtYQkRTO0KyBMuJHLQDH1FdB0PwdkxxFXXT7AaRCC8wBJSQe9ou8hA7AA1glHFwEsK5BL/gPpPgqLIkAp5AIAVyoOT0IMc0TRH1LJVQBHjR0M1NTzUJwwAQDR2REX5ACLGOLJTACIZJ/9eOogtU6S1XPhEq4QfJDL/eQRVJRms8wUbqkhEcPQtemhuFBTZemkSk9uQjz/YGa3mIyPLRFTN6Phy3cwRjqyxY4z0aQDL/0pEtM4th0AEfUBpXUuyu/mn0lW73Lh3m5xYy88LdDe0AYA5+QBAKdEtCfSWXDwX+GVtenEK4sJsERPoTIFBFwt1tr/oLqzdnB4M6kQGHMBzMui/z+hYSIQlXabRqOxGSYNxgkQHxgsdMUKRgcSWJaxpdEbQLkq2I8TarD/0MjLELO/3Rb/3Xj/3Zr/3bz/3d7/3fD/7hL/7jT/7lb/7nj/7pr/7rz/7t7/7vD//xL//zT//1b//3j4H/+a//+8///e///w8QAAQOJFjQ4EGECRUuZNjQ4UOIESVOpFjR4kWMGTVu5NjR40eQIUWOJFnS5EmUKVWuZNnS5UuYMWXOpFnT5k2cOXXu5NnT50+gQYUOJVrU6FGkSZUuZdrU6VOoUaVOpVrV6lWsWbVu5drV61ewYcWOJVs2bEAAOw==)

### for 循环一般格式为：

for var in item1 item2 ... itemN

do

  command1

  command2

  ...

  commandN

done

 

上述 for 循环中，in 之后是取值列表，逐个赋值给var变量，每次赋值就进行一次循环。这种循环类似于一些高级语言中的 for each 循环结构。

列表 list 可以是命令替换、变量名替换、字符串和文件名列表 ( 可包含通配符 )，每个列表项以空格间隔

 for 循环执行的次数取决于列表 list 中单词的个数

 可以省略 in list ，省略时相当于 in "$@"



另外，在 for 循环结构中，可以使用双小括号形式。

for ((i=0;i<100;i++))

do

  ...

done

break [n]

用于强行退出当前循环。

 如果是嵌套循环，则 break 命令后面可以跟一数字 n，表示退出第 n 重循环（最里面的为第一重循环）。

continue [n]

用于忽略本次循环的剩余部分，回到循环的顶部，继续下一次循环。

 如果是嵌套循环，continue 命令后面也可跟一数字 n，表示回到第 n 重循环的顶部

**注意跟case的区别，for之后是变量名，所以不要加$。**

while 循环用于不断执行一系列命令，也用于从输入文件中读取数据；命令通常为测试条件。

### while循环结构的语法格式为：

while cond_cmd

do

  command

done

 

while循环需要弄清楚的是条件命令执行成功的时候做循环，直到条件命令执行不成功，则退出循环。

**2.3 无限循环**

while :

do

  command

done

 

或者

while true

do

  command

done

 

或者

for (( ; ; ))

until 循环执行一系列命令直至条件为真时停止。 until 循环与 while 循环在处理方式上刚好相反。 一般 while 循环优于 until 循环，但在某些时候—也只是极少数情况下，until 循环更加有用。

until 语法格式:

until cond_cmd

do

  command

done

 

条件可为任意测试条件，测试发生在循环末尾，因此循环至少执行一次，**请注意这一点**。

until false; do

  commands

  [ condition ] && break *#* *条件满足时退出循环*

done

一般地，使用 while 循环配合 case实现



后台执行循环（done &

Bash 提供了专门的 select 循环

select 循环主要用于创建菜单

select 是个无限循环

通常要配合 case 语句处理不同的选单及退出

select 循环的退出

按 ctrl+c 退出循环

在循环体内用 break 命令退出循环

或用 exit 命令终止脚本

```bash
\#!/bin/bash

\## filename: what-lang-do-you-like_while.sh

while :

do

 echo "===== Scripting Language====="

 echo "1) bash"

 echo "2) perl"

 echo "3) python"

 echo "4) ruby"

 echo "5) (Quit) "

 read -p "What is your preferred scripting language? " lang

 case $lang in

  1|bash)  echo "You selected bash" ;;

  2|perl)   echo "You selected perl" ;;

  3|python)    echo "You selected python";;

  4|ruby)  echo "You selected ruby" ;;

  5|quit)  break ;;

 esac

done
```



select语法

按数值顺序排列的菜单项（list item）会显示到标准错误

菜单项的间隔符由环境变量 IFS 决定

用于引导用户输入的提示信息存放在环境变量 PS3 中

用户输入的值会被存储在内置变量 RELAY 中

用户直接输入回车将重新显示菜单

与 for 循环类似，省略 in list 时等价于 in “$*”

select variable in list 

do     # 循环开始的标志

 commands # 循环变量每取一次值，循环体就执行一遍

done    # 循环结束的标志

参数处理

在脚本中经常使用流程控制处理位置参数

循环结构：while、for

多分支结构：case

在脚本中经常使用如下命令配合位置参数处理

shift

getopts



mybackup -z -c /etc/mybackup.conf -r -v ./foo.txt ./mydir

-z是个选项（option），以减号开始的单字符

-c也是个选项，/etc/mybackup.conf 是该选项的附加参数（additional argument ）

-r和-v也是选项，且不带附加参数

./foo.txt 和 ./mydir 是脚本的处理对象，他们是不与任何选项相关的参数，在POSIX®标准中称其为“操作 对象/数”（operands）

 

 

getopts OPTSTRING VARNAME [ARGS...]

OPTSTRING 

是由若干有效的选项标识符组成的选项字符串

若某选项标识符后有冒号，则表示此选项有附加参数

若整个字符串前有冒号，将使用“安静”的错误模式

VARNAME ：每次匹配成功的选项保存在变量中

ARGS ： 参数列表，省略时为 ”$@”

getopts c:zrv opt

getopts :c:zrv opt

通常需要以循环的方式执行多次 getopts 来解析位置参数中的选项以及可能存在的选项附加参数

每次调用 getopts，将会处理参数列表中的“下一个”选项

将选项存储在VARNAME变量中

将此选项对应的附加参数存储在环境变量OPTARG中

对环境变量OPTIND进行自增操作，使 $OPTIND 总是指向原始参数列表中“下一个”要处理的元素位置

若$VARNAME与$OPTSTRING的所有选项均不匹配，则做“invalid option”的错误设置

若某选项的参数不存在，则做“required argument not found”的错误设置

冗余(Verbose)模式（ OPTSTRING 不以:开头）

“invalid option”

VARNAME=“?” ; unset OPTARG

“required argument not found”

VARNAME=“?” ; unset OPTARG 并输出错误信息

安静(Silent)模式（ OPTSTRING 以:开头）

“invalid option”

VARNAME=“?” ; OPTARG=‘无效的选项字符’

“required argument not found”

VARNAME=“:” ; OPTARG=‘与参数对应的选项字符’



函数

为了避免大型脚本变得复杂、晦涩而使用函数

将大型脚本代码分割成小块，将这些被命名的代码块称为函数

一个函数就是一个子程序，用于完成特定的任务

如：添加一个用户、判断用户是否为管理员 等

函数定义之后可以被使用它的主程序调用

调用函数的方法与执行Shell命令无异

可以在Shell脚本中调用（函数需先定义而后调用）

在命令行上直接调用（定义函数的文件需先加载）

简化程序代码，实现代码重用

实现一次定义多次调用。如：is_root_user（）函数可以由不同的shell脚本重复使用。

实现结构化编程

使脚本内容更加简洁，增强程序的易读性

提高执行效率

将常用的功能定义为多个函数并将其保存在一个文件中

类似其他语言的“模块”文件

在 ~/bashrc 或命令行上使用 source 命令调用这个文件

此文件中定义的多个函数一次性地调入内存，从而加快运行速度

function 函数名 {

  commands 

}

函数的存储

函数和调用它的主程序保存在同一个文件中

函数的定义必须出现在调用之前

函数和调用它的主程序保存在不同的文件中

保存函数的文件必须先使用 source 命令执行，之后才能调用其中的函数

函数的显示

显示当前Shell可见的所有函数名

$ declare -F

显示当前Shell可见的所有（指定）的函数定义

$ declare -f

$ declare -f <functionName>

参数(Arguments)

调用函数时，使用位置参数的形式为函数传递参数

函数内的$1-${n} 、$* 和 $@ 表示其接收的参数

函数调用结束后位置参数 $1-${n} 、$* 和 $@ 将被重置为调用函数之前的值

在主程序和函数中，$0始终代表脚本名

变量(Variables)

函数内使用 local 声明的变量是局部（Local）变量

局部变量的作用域是当前函数以及其调用的所有函数

函数内未使用 local 声明的变量是全局（Global）变量

即主程序和函数中的同名变量是一个变量（地址一致）

当函数的最后一条命令执行结束函数即结束

函数的返回值就是最后一条命令的退出码

其返回值被保存在系统变量$?中

可以使用 return 或 exit 显式地结束函数

return [N]

return 将结束函数的执行

可以使用 N 指定函数返回值

exit [N]

exit 将中断当前函数及当前Shell的执行

可以使用 N 指定返回值

使用全局变量引用函数的值不利于结构化编程

使用 return 或 exit 只能返回整数值

使用标准输出实现函数的返回值

是一种通用的方法，既能返回整数又能返回字符串

函数结束前使用 echo 命令将结果显示到标准输出

调用函数时使用如下的格式将函数的输出结果存到变量 RES 中，之后便可使用变量 $RES 的值（或输出、或执行测试、或进一步处理等）

RES=$(functionName)

echo $RES



 

 

 

Ken Thompson 的 sh 是第一种 Unix Shell，Windows Explorer 是一个典型的图形界面 Shell。

 

当命令不在命令行中执行，而是从一个文件中执行时，该文件就称为shell脚本

Shell脚本是纯文本文件

.sh为文件后缀名

 

 

以行为单位，执行脚本的时候会分解成一行一行依次执行

Shell 是一种功能强大的解释型语言

通常用

变量、数组、输入输出

控制结构

Shell脚本的建立

Vim script

Chomod +x(exectue) script-file

以#！开头：通知系统用何解释器执行此脚本

\#!/bin/bash

\#脚本名称、脚本功能

在bash 调用脚本时使用参数

 $ bash [-x] [-n] [-v] name

在脚本中

Sh-x脚本名

Shell的功能

各种管理和监视命令的使用

Ebal对参数进行两次扫描和替换

将所有的参数链接诚意表达式，ving计算或执行限该白澳大使】参数中的任何变量的将被展开

各种文本文件工具的使用

变量和表达式

变量替换扩展

 

变量测试

变量的字符串操作

计数、截取

变量的间接引用

通过str2的值来引用str1的值

位置参数变量

Shit参数 【0】

$?

Exit

 

命令行参数相关

0 执行正确

1 通用错误

2 命令或脚本没有执行权限

127 命令没找到

Chmod +x +w+r 

Read从键盘输入内容为变量赋值

Read 

结合不同的引号为变量赋值

Readonly

 多行内容不能出现双引号，否则用转义字符\“

Head_file

进程参数相关

Printf

Let 不必架空客，否则加上反引号

Expr必须加空格

$[expression]/

Eval newstr=\$$

${var :-word}/${var:=word}/${var:?wor}

数组变量

小标从0开始

Declare variable=value用来声明变量

Unset variable 

Echo $variable echo ${variable}

 

变量的数值计算

Expr

输入

变量名

输出

Echo printf

for variable in list

每一次循环，依次把列表list中的一个值赋值给循环变量

使用字面字符串列表作为wordlist

若列表项中包含空格必须使用引号括起来

While 循环

For 循环

Until 循环

Done&后台执行循环

Tumx 可以在后台打开，不会因为terminal断开而断开连接

一般地使用while 循坏配合case实现

Base提供select循环

按数值顺序排列的菜单项（list item）会显示到标准错误

位置参数和控制参数

 

Shell的内置命令getopts可以识别所有常见的选项格式

Gtopts OPTSTRING VARNAME [ARGS]

Optstirng 

是哦有若干有效的选项标识符组成的选项字符串

若某选项标识符后又冒号，则表示此选项又附加参数

若整个字符串前又冒号，将使用安静的错误模式

Varnmae：每次匹配成功的选项保存在变量中

默认为$@

Getopts不能解析GNU -style长参数

Getopts 从不改变原始位置参数，若希望移动位置参数，需手工执行shift

Getopts 会自动对变量optnd

合理使用shell函数

1、 简化程序代码，实现代码重用

 

2、 实现结构化编程

3、 提高执行效率

 

Function commands 

参数 

调用函数时，使用位置参数的形式位函数传递参数

函数内的$1-${n}\$* $@都是位置参数

 

Return或者exir只能返回整数值

使用标准输出实现函数的返回值

函数结束前

Sysinfo.sh

Sysinfo_

标准输入/输出设备

Linux命令在执行时常常期望接收输入数据，命令执行后又期望将产生的数据结果输出。

Linux的大部分命令都具有标准的输入/输出设备端口。



| **名称** | **文件描述符** | **含义** | **设备** | **说明**                           |
| -------- | -------------- | -------- | -------- | ---------------------------------- |
| STDIN    | 0              | 标准输入 | 键盘     | 命令在执行时所要的输入通过它来取得 |
| STDOUT   | 1              | 标准输出 | 显示器   | 命令执行后的输出结果从该端口送出   |
| STDERR   | 2              | 标准错误 | 显示器   | 命令执行时的错误信息通过该端口送出 |

所谓重定向，就是不使用系统的标准输入端口、标准输出端口或标准错误端口，而进行重新的指定，所以重定向分为输出重定向、输入重定向和错误重定向。通常情况下重定向到一个文件。

在Shell中，要实现重定向主要依靠重定向符实现，即Shell是检查命令行中有无重定向符来决定是否需要实施重定向。



| **重定向符** | **说明**                                                     |
| ------------ | ------------------------------------------------------------ |
| <            | 输入重定向                                                   |
| <<!  ……  !   | 输入重定向的特例，即HERE文件，通常用于Shell脚本中。其中“!”可以使用任何字符或字符串替换，只要其没在……中出现过即可。 |
| >            | 覆盖式的输出重定向                                           |
| >>           | 追加式的输出重定向                                           |
| 2>           | 覆盖式的错误输出重定向                                       |
| 2>>          | 追加式的错误输出重定向                                       |
| &>           | 同时实现输出重定向和错误重定向（覆盖式）                     |

空设备（/dev/null）

空设备是个黑洞，发往它的任何内容都将不复存在

经常用于屏蔽命令的输出或错误输出，尤其用于Shell脚本中

空设备使用举例

屏蔽命令的输出和错误输出

$ myprogram &> /dev/null

$ myprogram >/dev/null 2>&1

清空文件内容

$ cp /dev/null myfile

$ > myfile

命令替换

使用命令的输出，常用于

在文本中嵌入命令的执行结果

命令参数是另一个命令执行的结果

使用方法

$(command)      或   `command` 

cmd1 $(cmd2)    或   cmd1 `cmd2`

使用举例

$ echo The present time is `date`

\$ rpm -qi \$(rpm -qf $(which date))    # 嵌套

命令组合

| **命令行形式** | **说明**                   | **举例**                                       |
| -------------- | -------------------------- | ---------------------------------------------- |
| CMD1 ; CMD2    | 顺序执行若干命令           | pwd;date;ls                                    |
| CMD1 && CMD2   | 当CMD1运行成功时才运行CMD2 | gzip mylargefile && echo “OK.”                 |
| CMD1 \|\| CMD2 | 当CMD1运行失败时才运行CMD2 | write osmond \|\| mail -s test osmond < my.log |
| (CMDLIST)      | 在子Shell中执行命令序列    | (date; who \| wc -l ) > ~/login-users.log      |
| {CMDLIST}      | 在当前Shell中执行命令序列  | { cd /home/jjh; chown jjh:bin s* ;}            |

 

