From 33eadfb8bd79fae054055681451a8acac17da697 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Wed, 3 May 2017 20:29:31 +0800 Subject: [PATCH 01/24] add filemanager doc --- doc/design/file_mananger/README.md | 72 ++++++++++++++++++ .../file_mananger/src/filemanager.graffle | Bin 0 -> 3656 bytes doc/design/file_mananger/src/filemanager.png | Bin 0 -> 50663 bytes 3 files changed, 72 insertions(+) create mode 100644 doc/design/file_mananger/README.md create mode 100644 doc/design/file_mananger/src/filemanager.graffle create mode 100644 doc/design/file_mananger/src/filemanager.png diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md new file mode 100644 index 0000000000..0dd7e05d24 --- /dev/null +++ b/doc/design/file_mananger/README.md @@ -0,0 +1,72 @@ +# Desgin doc: FileManager +## Objetive +在本文档中,我们设计说明了用户上传、下载、管理自己在PaddlePaddle Cloud上的文件所涉及到的模块和流程 + + +## Module +### Client +Client是用户操作的界面,支持的命令如下 + +- ls + +```bash +ls +``` + +- cp + +```bash +cp +``` + +- sync + +```bash +sync +``` + +- mv + +```bash +mv +``` + + +### Ingress +- 在kubernets中运行 +- 做Http转发 +- 注意配置session保持 + + +### FileServer +FileServer是gorpc写的HttpServer, 用来接收Client的REST API的请求,自身由kubernets来管理。 +REST API说明 + +- file + +``` +GET /file: Get attribue of files +POST /file: Touch a file +DELETE /file: Delete a File +``` + +- chunk + +``` +GET /file/chunk: Get a chunk info +POST /file/chunk: Update a chunk +``` + +- dir + +``` +GET /dir: List all files in a directory +POST /dir: Touch a directory +DELETE /dir: Delete a directory +``` + + +## 流程 +### cp +### 断点续传 +### sync diff --git a/doc/design/file_mananger/src/filemanager.graffle b/doc/design/file_mananger/src/filemanager.graffle new file mode 100644 index 0000000000000000000000000000000000000000..68fc8224d33cbc17dfa3634284901fdc5e2cb775 GIT binary patch literal 3656 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 aZY51p#(d0=(dTjAzWP4}9#6rwX8-^_ek|Jn literal 0 HcmV?d00001 diff --git a/doc/design/file_mananger/src/filemanager.png b/doc/design/file_mananger/src/filemanager.png new file mode 100644 index 0000000000000000000000000000000000000000..661d547e414f0119728e1bb5262d0cbb446b395a GIT binary patch literal 50663 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 literal 0 HcmV?d00001 From 0d7d8990db3f40f2bdc5853fd2d2aa97e8161774 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Thu, 4 May 2017 16:36:53 +0800 Subject: [PATCH 02/24] add cp... --- doc/design/file_mananger/README.md | 56 ++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index 0dd7e05d24..d7aa808d6c 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -5,7 +5,7 @@ ## Module ### Client -Client是用户操作的界面,支持的命令如下 +Client是用户操作的命令行程序,支持的命令如下 - ls @@ -39,8 +39,12 @@ mv ### FileServer -FileServer是gorpc写的HttpServer, 用来接收Client的REST API的请求,自身由kubernets来管理。 -REST API说明 +功能说明: +- gorpc写的HttpServer +- 响应外部的REST API的请求 +- 在kubernets中运行 + +REST API说明: - file @@ -56,6 +60,17 @@ DELETE /file: Delete a File GET /file/chunk: Get a chunk info POST /file/chunk: Update a chunk ``` +为什么有chunk的抽象: +用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念。chunk由所在的文件偏移、数据、数据长度及校验值组成。数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作的transaction的时间也比较短,不容易出错。 + +``` +type Chunk struct { + filePos int64 + checkSum uint32 + len uint32 + data []byte +} +``` - dir @@ -67,6 +82,35 @@ DELETE /dir: Delete a directory ## 流程 -### cp -### 断点续传 -### sync +### 关于文件权限 +- 每一个用户在Cloud注册后可以申请分配用户空间,系统默认会在CephFS上分配一个固定大小(比如初始10G)的、有所有权限的volume,对用户而言就是自己的`home`目录。用户彼此之间的数据是隔离的、无法访问的。用户的空间大小第一期也不允许扩大。 +- 公共数据集合放到一个单独的volume下,对所有外部用户只读。由于其被读取的可能比较频繁,需要提高其备份数,防止成为热点文件。 + +### 关于认证 +> 通信各方都需要有各自的身份证。一个公司可以自签名一个CA身份证,并 且用它来给每个雇员以及每个程序签署身份证。这样,只要每台电脑上都预先安 装好公司自己的CA身份证,就可以用这个身份证验证每个雇员和程序的身份了。 这是目前很多公司的常用做法 + +身份的认证来自于用户或者程序是否有crt标识身份,以及是否有可信的CA确认这个身份证是否有效。我们这里描述的crt涉及到两个部分,一个是Client端程序访问FileServer的crt,不妨称之为Client crt;另外一个是FileServer访问CephFS的crt,不妨称之为CephFS crt。 + +- Client和FileServer相互认证的办法 +`cloud.paddlepaddle.org`需要有自己的CA,FileServer和注册用户也要为其生成各自的私钥(key)、crt。这样用户把CA、自己的key和crt下载到本地后,Client程序可以用之和FileServer可以做相互的认证 + +- CephFS验证FileServer的身份的两种方法 + - 第一种:每一个用户都有自己单独的访问CephFS crt。 + 用户访问其空间时,由FileServer读取它然后才可以在CephFS上完成操作。 + - 第二种:CephFS crt只有一个,也就是admin crt,拥有所有volume的读写权限。 + FileServer从Client crt提取Client的身份(username),限制其可以操作的volume。 我们选择这种。 + +### 关于cp +cp的关键在于需要Client端对比src和dst的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post完成。藉由上述的方法完成断点的数据传输。 + +优化的方法: + +- dst文件不存在时,可以没有Get的过程,只有Post。 +- 文件的chunks信息可以做cache,不用每次启动传输都去读和计算。这个由于比较复杂,第一期暂时不做。 + +tricky: + +- 可以用[Fallocate](https://golang.org/pkg/syscall/#Fallocate)让dst和src文件保持相同的大小。这样,chunk就可以写固定的偏移上。 + +## 参考文档 +- [Do you see tls?](https://github.com/k8sp/tls/blob/master/README.md) From e61d97204c395d61cbce12fdbbfc23a5a39d7a82 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Thu, 4 May 2017 20:53:29 +0800 Subject: [PATCH 03/24] add cmds --- doc/design/file_mananger/README.md | 58 +++++++++--------- .../file_mananger/src/filemanager.graffle | Bin 3656 -> 3605 bytes doc/design/file_mananger/src/filemanager.png | Bin 50663 -> 49686 bytes 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index d7aa808d6c..322cd10473 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -1,41 +1,35 @@ # Desgin doc: FileManager ## Objetive 在本文档中,我们设计说明了用户上传、下载、管理自己在PaddlePaddle Cloud上的文件所涉及到的模块和流程 + ## Module ### Client -Client是用户操作的命令行程序,支持的命令如下 - -- ls - -```bash -ls -``` - -- cp +Client提供用户管理本地或者远程文件的命令行程序。 -```bash -cp -``` +- 路径参数: +当用户输入一个命令的时候,最起码需要指定一个路径参数。这里有两种路径参数:LocalPath 或者 PFSPath。 -- sync +LocalPath:代表本地的一个路径 +PFSPath:代表PaddlePaddle Cloud上的一个路径。它需要满足类似这样的格式:`pfs://dir1/dir2`。路径必须要以`pds://`开始。 -```bash -sync -``` +- 路径参数的顺序 +如果命令都有一个或者多个路径参数,那么一般第一个路径参数代表source,第二个路径参数代表destination。 -- mv - -```bash -mv -``` +- 支持的操作命令 + - [rm](cmd_rm.md) + - [mv](cmd_mv.md) + - [cp](cmd_cp.md) + - [ls](cmd_ls.md) + - [mkdir](cmd_mkdir.md) + - [sync](cmd_sync.md) ### Ingress - 在kubernets中运行 -- 做Http转发 -- 注意配置session保持 +- 做Http转发、负载均衡 + - 注意配置session保持,以便来自一个用户的访问可以定向到一个固定的机器上,减少冲突写的机会。 ### FileServer @@ -61,7 +55,7 @@ GET /file/chunk: Get a chunk info POST /file/chunk: Update a chunk ``` 为什么有chunk的抽象: -用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念。chunk由所在的文件偏移、数据、数据长度及校验值组成。数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作的transaction的时间也比较短,不容易出错。 +用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念,一个chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作的transaction的时间也比较短,不容易出错。 ``` type Chunk struct { @@ -101,16 +95,20 @@ DELETE /dir: Delete a directory FileServer从Client crt提取Client的身份(username),限制其可以操作的volume。 我们选择这种。 ### 关于cp -cp的关键在于需要Client端对比src和dst的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post完成。藉由上述的方法完成断点的数据传输。 +cp的关键在于需要Client端对比src和dst的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post完成。藉由上述的方法完成断点的数据传输。 upload文件时,由于一个文件可以是多个FileServer可写的,存在冲突的机会,需要Client端在Post最后一个chunk的时候检查dest文件的MD5值是否和src的一致。 + +- 优化的方法: -优化的方法: + - dst文件不存在时,可以没有Get的过程,只有Post。 + - 文件的chunks信息可以做cache,不用每次启动传输都去读和计算。这个由于比较复杂,第一期暂时不做。 -- dst文件不存在时,可以没有Get的过程,只有Post。 -- 文件的chunks信息可以做cache,不用每次启动传输都去读和计算。这个由于比较复杂,第一期暂时不做。 +- 小的技巧: -tricky: + - 可以用[Fallocate](https://golang.org/pkg/syscall/#Fallocate)生成sparse文件,让dst和src文件保持相同的大小。不同位置的chunk可以同时写入。 -- 可以用[Fallocate](https://golang.org/pkg/syscall/#Fallocate)让dst和src文件保持相同的大小。这样,chunk就可以写固定的偏移上。 +### 关于框架 +准备拿出一点时间测试一下用[swagger-api](https://github.com/swagger-api/swagger-codegen)生成Client和FileServer的框架部分。如果框架生成好用,我们的精力就可以更多的放到逻辑本身上。 ## 参考文档 - [Do you see tls?](https://github.com/k8sp/tls/blob/master/README.md) +- [s3](http://docs.aws.amazon.com/cli/latest/reference/s3/) diff --git a/doc/design/file_mananger/src/filemanager.graffle b/doc/design/file_mananger/src/filemanager.graffle index 68fc8224d33cbc17dfa3634284901fdc5e2cb775..d8ec4299f42eff52e7153b542e101cc28e2f9801 100644 GIT binary patch literal 3605 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 bz35aLl5+4d-^QPpdh_D{MYq+?^=beB1dRsQ literal 3656 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 aZY51p#(d0=(dTjAzWP4}9#6rwX8-^_ek|Jn diff --git a/doc/design/file_mananger/src/filemanager.png b/doc/design/file_mananger/src/filemanager.png index 661d547e414f0119728e1bb5262d0cbb446b395a..d8b14404bab846c42937b28296a63978c5cfdbb1 100644 GIT binary patch literal 49686 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 aA6)5_N0knSm8Ce~@2rM_da0`2)&Bz_Fijx< literal 50663 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 From 5cdef642fa2806b403b00d659fcdd2aa8d9e5ef0 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Thu, 4 May 2017 21:04:12 +0800 Subject: [PATCH 04/24] modify stly --- doc/design/file_mananger/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index 322cd10473..4a9d0214d9 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -8,13 +8,13 @@ ### Client Client提供用户管理本地或者远程文件的命令行程序。 -- 路径参数: -当用户输入一个命令的时候,最起码需要指定一个路径参数。这里有两种路径参数:LocalPath 或者 PFSPath。 +- 路径参数: +当用户输入一个命令的时候,一般需要指定路径参数。这里有两种路径参数:LocalPath 或者 PFSPath。 -LocalPath:代表本地的一个路径 -PFSPath:代表PaddlePaddle Cloud上的一个路径。它需要满足类似这样的格式:`pfs://dir1/dir2`。路径必须要以`pds://`开始。 + LocalPath:代表本地的一个路径 + PFSPath:代表PaddlePaddle Cloud上的一个路径。它需要满足类似这样的格式:`pfs://dir1/dir2`。路径必须要以`pds://`开始。 -- 路径参数的顺序 +- 路径参数的顺序 如果命令都有一个或者多个路径参数,那么一般第一个路径参数代表source,第二个路径参数代表destination。 - 支持的操作命令 @@ -94,8 +94,8 @@ DELETE /dir: Delete a directory - 第二种:CephFS crt只有一个,也就是admin crt,拥有所有volume的读写权限。 FileServer从Client crt提取Client的身份(username),限制其可以操作的volume。 我们选择这种。 -### 关于cp -cp的关键在于需要Client端对比src和dst的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post完成。藉由上述的方法完成断点的数据传输。 upload文件时,由于一个文件可以是多个FileServer可写的,存在冲突的机会,需要Client端在Post最后一个chunk的时候检查dest文件的MD5值是否和src的一致。 +### 关于文件传输 +文件传输的的关键在于需要Client端对比src和dst的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post chunk完成。藉由上述的方法完成断点的数据传输。 upload文件时,由于一个文件可以是多个FileServer可写的,存在冲突的机会,需要Client端在Post最后一个chunk的时候检查dest文件的MD5值是否和本地文件一致。 - 优化的方法: From ee454f938073eb675ed9d20891df33bdb863c3d4 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 5 May 2017 12:00:19 +0800 Subject: [PATCH 05/24] add commands --- doc/design/file_mananger/README.md | 55 +++++---------------------- doc/design/file_mananger/RESTAPI.md | 23 +++++++++++ doc/design/file_mananger/pfs/cp.md | 47 +++++++++++++++++++++++ doc/design/file_mananger/pfs/ls.md | 49 ++++++++++++++++++++++++ doc/design/file_mananger/pfs/mkdir.md | 33 ++++++++++++++++ doc/design/file_mananger/pfs/mv.md | 38 ++++++++++++++++++ doc/design/file_mananger/pfs/pfs.md | 36 ++++++++++++++++++ doc/design/file_mananger/pfs/rm.md | 50 ++++++++++++++++++++++++ doc/design/file_mananger/pfs/sync.md | 53 ++++++++++++++++++++++++++ 9 files changed, 339 insertions(+), 45 deletions(-) create mode 100644 doc/design/file_mananger/RESTAPI.md create mode 100644 doc/design/file_mananger/pfs/cp.md create mode 100644 doc/design/file_mananger/pfs/ls.md create mode 100644 doc/design/file_mananger/pfs/mkdir.md create mode 100644 doc/design/file_mananger/pfs/mv.md create mode 100644 doc/design/file_mananger/pfs/pfs.md create mode 100644 doc/design/file_mananger/pfs/rm.md create mode 100644 doc/design/file_mananger/pfs/sync.md diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index 4a9d0214d9..6078696e6e 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -5,25 +5,11 @@ ## Module -### Client -Client提供用户管理本地或者远程文件的命令行程序。 +### PFS Client +- 提供用户管理Cloud文件的命令 +- 用Golang写,可以跨平台执行 -- 路径参数: -当用户输入一个命令的时候,一般需要指定路径参数。这里有两种路径参数:LocalPath 或者 PFSPath。 - - LocalPath:代表本地的一个路径 - PFSPath:代表PaddlePaddle Cloud上的一个路径。它需要满足类似这样的格式:`pfs://dir1/dir2`。路径必须要以`pds://`开始。 - -- 路径参数的顺序 -如果命令都有一个或者多个路径参数,那么一般第一个路径参数代表source,第二个路径参数代表destination。 - -- 支持的操作命令 - - [rm](cmd_rm.md) - - [mv](cmd_mv.md) - - [cp](cmd_cp.md) - - [ls](cmd_ls.md) - - [mkdir](cmd_mkdir.md) - - [sync](cmd_sync.md) +命令的详细内容看[这里](./pfs/pfs.md) ### Ingress @@ -37,26 +23,14 @@ Client提供用户管理本地或者远程文件的命令行程序。 - gorpc写的HttpServer - 响应外部的REST API的请求 - 在kubernets中运行 +- [RESTAPI](./RESTAPI.md)接口 -REST API说明: - -- file - -``` -GET /file: Get attribue of files -POST /file: Touch a file -DELETE /file: Delete a File -``` - -- chunk - -``` -GET /file/chunk: Get a chunk info -POST /file/chunk: Update a chunk -``` -为什么有chunk的抽象: +## 流程 +### 为什么有chunk的抽象: 用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念,一个chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作的transaction的时间也比较短,不容易出错。 +一个典型的chunk如下所示: + ``` type Chunk struct { filePos int64 @@ -66,16 +40,6 @@ type Chunk struct { } ``` -- dir - -``` -GET /dir: List all files in a directory -POST /dir: Touch a directory -DELETE /dir: Delete a directory -``` - - -## 流程 ### 关于文件权限 - 每一个用户在Cloud注册后可以申请分配用户空间,系统默认会在CephFS上分配一个固定大小(比如初始10G)的、有所有权限的volume,对用户而言就是自己的`home`目录。用户彼此之间的数据是隔离的、无法访问的。用户的空间大小第一期也不允许扩大。 - 公共数据集合放到一个单独的volume下,对所有外部用户只读。由于其被读取的可能比较频繁,需要提高其备份数,防止成为热点文件。 @@ -112,3 +76,4 @@ DELETE /dir: Delete a directory ## 参考文档 - [Do you see tls?](https://github.com/k8sp/tls/blob/master/README.md) - [s3](http://docs.aws.amazon.com/cli/latest/reference/s3/) +- linux man document diff --git a/doc/design/file_mananger/RESTAPI.md b/doc/design/file_mananger/RESTAPI.md new file mode 100644 index 0000000000..4286195970 --- /dev/null +++ b/doc/design/file_mananger/RESTAPI.md @@ -0,0 +1,23 @@ +# REST API +- file + +``` +GET /file: Get attribue of files +POST /file: Touch a file +DELETE /file: Delete a File +``` + +- chunk + +``` +GET /file/chunk: Get a chunk info +POST /file/chunk: Update a chunk +``` + +- dir + +``` +GET /dir: List all files in a directory +POST /dir: Touch a directory +DELETE /dir: Delete a directory +``` diff --git a/doc/design/file_mananger/pfs/cp.md b/doc/design/file_mananger/pfs/cp.md new file mode 100644 index 0000000000..fcc57258a1 --- /dev/null +++ b/doc/design/file_mananger/pfs/cp.md @@ -0,0 +1,47 @@ +# Name +pfs_cp - copy files and directories + +# Synopsis +` pfs_cp + or or ` + +# Description + +``` + --only-show-errors (boolean) + Only errors and warnings are displayed. All other output is suppressed. + + --page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. + + --preserve--links + Reserve links when copy files + + -R, -r, --recursive + Copy directories recursively +``` + +# Examples +- The following command cp a single file to pfs + +``` +pfs_cp ./text1.txt pfs://mydir/text1.txt +``` + +Output + +``` +upload ./text1.txt to pfs://mydir/text1.txt +``` + +- The following command cp pfs file to a local file + +``` +pfs_cp pfs://mydir/text1.txt ./text1.txt +``` + +Output + +``` +download pfs://mydir/text1.txt to ./text1.txt +``` diff --git a/doc/design/file_mananger/pfs/ls.md b/doc/design/file_mananger/pfs/ls.md new file mode 100644 index 0000000000..41cf6fdf77 --- /dev/null +++ b/doc/design/file_mananger/pfs/ls.md @@ -0,0 +1,49 @@ +# Name +pfs_ls - list directory contents o + +# Synopsis +` pfs_ls [OPTION]... ` + +# Description + +``` + -h, --help + Display this help and exit + + --version + Output version information and exit + + --only-show-errors (boolean) + Only errors and warnings are displayed. All other output is suppressed. + + --page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. + + -R, -r, --recursive + Copy directories recursively +``` + +# Examples +- The following command cp a single file to pfs + +``` +pfs_cp ./text1.txt pfs://mydir/text1.txt +``` + +Output + +``` +upload ./text1.txt to pfs://mydir/text1.txt +``` + +- The following command cp pfs file to a local file + +``` +pfs_cp pfs://mydir/text1.txt ./text1.txt +``` + +Output + +``` +download pfs://mydir/text1.txt to ./text1.txt +``` diff --git a/doc/design/file_mananger/pfs/mkdir.md b/doc/design/file_mananger/pfs/mkdir.md new file mode 100644 index 0000000000..e3b0d0cae7 --- /dev/null +++ b/doc/design/file_mananger/pfs/mkdir.md @@ -0,0 +1,33 @@ +# Name +pdf_mkdir - mkdir directory(ies) + +# Synopsis +`pfs_mkdir [OPTION]... PFS_DIRECTORY...` + +# Description +Create the pfs directory(ies), if they do not already exist. + +``` + -h, --help + display this help and exit + + --version + output version information and exit + + --only-show-errors (boolean) + Only errors and warnings are displayed. All other output is suppressed. + + --page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. +``` + +# Examples +``` +pfs_mkdir pfs://mydir1 +``` + +Output + +``` +make directory pfs://mydir1 +``` diff --git a/doc/design/file_mananger/pfs/mv.md b/doc/design/file_mananger/pfs/mv.md new file mode 100644 index 0000000000..3f4c1ac076 --- /dev/null +++ b/doc/design/file_mananger/pfs/mv.md @@ -0,0 +1,38 @@ +# Name +mv - move (rename) files or directories + + +# Synopsis +If destination already exist, please rm it first. +``` +mv [OPTION]... + or or +``` + +# Description +``` + -h, --help + display this help and exit + + -v, --version + output version information and exit + + --only-show-errors (boolean) + Only errors and warnings are displayed. All other output is suppressed. + + --page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. +``` + +# Examples +- The following command move a single file to pfs + +``` +mv ./text1.txt pfs://mydirectory/test1.txt +``` + +Output + +``` +move text1.txt pfs://mydirectory/test1.txt +``` diff --git a/doc/design/file_mananger/pfs/pfs.md b/doc/design/file_mananger/pfs/pfs.md new file mode 100644 index 0000000000..a17de7d814 --- /dev/null +++ b/doc/design/file_mananger/pfs/pfs.md @@ -0,0 +1,36 @@ +# PFS Client + +## Description +The `pfs` command is a Command Line Interface to manage your files on Paddle Cloud + +## Synopsis +``` +paddle [options] pfs [parameters] +``` + +## Options +``` +--profile (string) + Use a specific profile from your credential file. +--help pfs + Display more information about pfs +--version + Output version information and exit +--debug + Show detailed debugging log +``` + +## Path Arguments +When using a commnd, we need to specify path arguments. There are two path argument type: `localpath` and `pfspath`. +A pfspath begin with `pfs://`, eg: `pfs://mydir/text1.txt`. + +## Path Arguments‘s order +Commonly, there maybe two path arguments. The first is source, and the second is destination. + +## Subcommonds +- [rm](rm.md) +- [mv](mv.md) +- [cp](cp.md) +- [ls](ls.md) +- [mkdir](mkdir.md) +- [sync](sync.md) diff --git a/doc/design/file_mananger/pfs/rm.md b/doc/design/file_mananger/pfs/rm.md new file mode 100644 index 0000000000..6056c401f9 --- /dev/null +++ b/doc/design/file_mananger/pfs/rm.md @@ -0,0 +1,50 @@ +# Name +rm - remove files or directories + +# Synopsis +`rm [OPTION]... PFS_DIRECTORY...` + +# Description +Create the directory, if it does not already exits + +``` + -r, -R, --recursive + remove directories and their contents recursively + + -v, --version + output version information and exit + + --only-show-errors (boolean) + Only errors and warnings are displayed. All other output is suppressed. + + --page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. +``` + +# Examples +- The following command delete a single file + +``` +pfs_rm pfs://mydirectory/test1.txt +``` + +Output + +``` +delete pfs://mydirectory/test1.txt +``` + + +- The following command delete a directory recursively. + +``` +pfs_rm -r pfs://mydirectory +``` + +Output + +``` +delete pfs://mydirectory/1.txt +delete pfs://mydirectory/2.txt +... +``` diff --git a/doc/design/file_mananger/pfs/sync.md b/doc/design/file_mananger/pfs/sync.md new file mode 100644 index 0000000000..9924808274 --- /dev/null +++ b/doc/design/file_mananger/pfs/sync.md @@ -0,0 +1,53 @@ +# Name +pfs_cp - copy files and directories + +# Synopsis +` pfs_cp + or or ` + +# Description + +``` + -h, --help + Display this help and exit + + --version + Output version information and exit + + --only-show-errors (boolean) + Only errors and warnings are displayed. All other output is suppressed. + + --page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. + + --preserve--links + Reserve links when copy files + + -R, -r, --recursive + Copy directories recursively +``` + +# Examples +- The following command cp a single file to pfs + +``` +pfs_cp ./text1.txt pfs://mydir/text1.txt +``` + +Output + +``` +upload ./text1.txt to pfs://mydir/text1.txt +``` + +- The following command cp pfs file to a local file + +``` +pfs_cp pfs://mydir/text1.txt ./text1.txt +``` + +Output + +``` +download pfs://mydir/text1.txt to ./text1.txt +``` From 177d35afa1edfb6906d49c4066adda7a7c94b1d2 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 5 May 2017 15:07:40 +0800 Subject: [PATCH 06/24] modify commands --- doc/design/file_mananger/README.md | 4 +-- doc/design/file_mananger/RESTAPI.md | 2 +- doc/design/file_mananger/pfs/cp.md | 20 +++++--------- doc/design/file_mananger/pfs/ls.md | 35 ++++++++++-------------- doc/design/file_mananger/pfs/mkdir.md | 22 +++------------ doc/design/file_mananger/pfs/mv.md | 18 +++---------- doc/design/file_mananger/pfs/pfs.md | 18 ++++++++----- doc/design/file_mananger/pfs/rm.md | 21 ++++++--------- doc/design/file_mananger/pfs/sync.md | 39 ++++++++++----------------- 9 files changed, 66 insertions(+), 113 deletions(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index 6078696e6e..bca8f48b8e 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -2,7 +2,7 @@ ## Objetive 在本文档中,我们设计说明了用户上传、下载、管理自己在PaddlePaddle Cloud上的文件所涉及到的模块和流程 - + ## Module ### PFS Client @@ -25,7 +25,7 @@ - 在kubernets中运行 - [RESTAPI](./RESTAPI.md)接口 -## 流程 +## 解释 ### 为什么有chunk的抽象: 用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念,一个chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作的transaction的时间也比较短,不容易出错。 diff --git a/doc/design/file_mananger/RESTAPI.md b/doc/design/file_mananger/RESTAPI.md index 4286195970..8d0f37be99 100644 --- a/doc/design/file_mananger/RESTAPI.md +++ b/doc/design/file_mananger/RESTAPI.md @@ -1,4 +1,4 @@ -# REST API +# REST API Interface - file ``` diff --git a/doc/design/file_mananger/pfs/cp.md b/doc/design/file_mananger/pfs/cp.md index fcc57258a1..af4204d717 100644 --- a/doc/design/file_mananger/pfs/cp.md +++ b/doc/design/file_mananger/pfs/cp.md @@ -1,19 +1,13 @@ # Name -pfs_cp - copy files and directories +cp - copy files and directories # Synopsis -` pfs_cp +` cp [OPTION]... or or ` # Description -``` - --only-show-errors (boolean) - Only errors and warnings are displayed. All other output is suppressed. - - --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. - +``` --preserve--links Reserve links when copy files @@ -22,10 +16,10 @@ pfs_cp - copy files and directories ``` # Examples -- The following command cp a single file to pfs +- The following command copies a single file to pfs ``` -pfs_cp ./text1.txt pfs://mydir/text1.txt +paddle pfs cp ./text1.txt pfs://mydir/text1.txt ``` Output @@ -34,10 +28,10 @@ Output upload ./text1.txt to pfs://mydir/text1.txt ``` -- The following command cp pfs file to a local file +- The following command copies pfs file to a local file ``` -pfs_cp pfs://mydir/text1.txt ./text1.txt +paddle pfs cp pfs://mydir/text1.txt ./text1.txt ``` Output diff --git a/doc/design/file_mananger/pfs/ls.md b/doc/design/file_mananger/pfs/ls.md index 41cf6fdf77..bec4c39b37 100644 --- a/doc/design/file_mananger/pfs/ls.md +++ b/doc/design/file_mananger/pfs/ls.md @@ -1,49 +1,42 @@ # Name -pfs_ls - list directory contents o +ls - list directory contents or a file attributes # Synopsis -` pfs_ls [OPTION]... ` +` ls [OPTION]... ` # Description -``` - -h, --help - Display this help and exit - - --version - Output version information and exit - - --only-show-errors (boolean) - Only errors and warnings are displayed. All other output is suppressed. - - --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. - +``` -R, -r, --recursive Copy directories recursively + + --page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if operation time out. ``` # Examples -- The following command cp a single file to pfs +- The following command lists a single file ``` -pfs_cp ./text1.txt pfs://mydir/text1.txt +paddle pfs ls pfs://mydir/text1.txt ``` Output ``` -upload ./text1.txt to pfs://mydir/text1.txt +2017-05-5 17:04:30 text1.txt ``` -- The following command cp pfs file to a local file +- The following command lists directory contents ``` -pfs_cp pfs://mydir/text1.txt ./text1.txt +paddle pfs ls pfs://mydir ``` Output ``` -download pfs://mydir/text1.txt to ./text1.txt +2017-05-5 17:04:30 text1.txt +2017-05-5 17:04:30 text2.txt +... ``` diff --git a/doc/design/file_mananger/pfs/mkdir.md b/doc/design/file_mananger/pfs/mkdir.md index e3b0d0cae7..45906dc208 100644 --- a/doc/design/file_mananger/pfs/mkdir.md +++ b/doc/design/file_mananger/pfs/mkdir.md @@ -1,29 +1,15 @@ # Name -pdf_mkdir - mkdir directory(ies) +mkdir - mkdir directory(ies) # Synopsis -`pfs_mkdir [OPTION]... PFS_DIRECTORY...` +`mkdir [OPTION]... ...` # Description -Create the pfs directory(ies), if they do not already exist. - -``` - -h, --help - display this help and exit - - --version - output version information and exit - - --only-show-errors (boolean) - Only errors and warnings are displayed. All other output is suppressed. - - --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. -``` +Create the pfs directory(ies), if they do not already exist. And create intermediate directories as required # Examples ``` -pfs_mkdir pfs://mydir1 +paddle pfs mkdir pfs://mydir1 ``` Output diff --git a/doc/design/file_mananger/pfs/mv.md b/doc/design/file_mananger/pfs/mv.md index 3f4c1ac076..7f7ef209c8 100644 --- a/doc/design/file_mananger/pfs/mv.md +++ b/doc/design/file_mananger/pfs/mv.md @@ -3,7 +3,8 @@ mv - move (rename) files or directories # Synopsis -If destination already exist, please rm it first. +If destination already exist, please [rm](rm.md) it first. + ``` mv [OPTION]... or or @@ -11,28 +12,17 @@ mv [OPTION]... # Description ``` - -h, --help - display this help and exit - - -v, --version - output version information and exit - - --only-show-errors (boolean) - Only errors and warnings are displayed. All other output is suppressed. - - --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. ``` # Examples - The following command move a single file to pfs ``` -mv ./text1.txt pfs://mydirectory/test1.txt +paddle pfs mv ./text1.txt pfs://mydirectory/test1.txt ``` Output ``` -move text1.txt pfs://mydirectory/test1.txt +move ./text1.txt pfs://mydirectory/test1.txt ``` diff --git a/doc/design/file_mananger/pfs/pfs.md b/doc/design/file_mananger/pfs/pfs.md index a17de7d814..76ee0a6917 100644 --- a/doc/design/file_mananger/pfs/pfs.md +++ b/doc/design/file_mananger/pfs/pfs.md @@ -12,20 +12,26 @@ paddle [options] pfs [parameters] ``` --profile (string) Use a specific profile from your credential file. ---help pfs - Display more information about pfs + +--help (string) + Display more information about command + --version Output version information and exit + --debug Show detailed debugging log + +--only-show-errors (boolean) + Only errors and warnings are displayed. All other output is suppressed. ``` ## Path Arguments -When using a commnd, we need to specify path arguments. There are two path argument type: `localpath` and `pfspath`. -A pfspath begin with `pfs://`, eg: `pfs://mydir/text1.txt`. +When using a command, we need to specify path arguments. There are two path argument type: `localpath` and `pfspath`. +A `pfspath` begin with `pfs://`, eg: `pfs://mydir/text1.txt`. -## Path Arguments‘s order -Commonly, there maybe two path arguments. The first is source, and the second is destination. +## order of Path Arguments +Commonly, if there are two path arguments. The first is the source, and the second is the destination. ## Subcommonds - [rm](rm.md) diff --git a/doc/design/file_mananger/pfs/rm.md b/doc/design/file_mananger/pfs/rm.md index 6056c401f9..fa881fe1e9 100644 --- a/doc/design/file_mananger/pfs/rm.md +++ b/doc/design/file_mananger/pfs/rm.md @@ -2,30 +2,25 @@ rm - remove files or directories # Synopsis -`rm [OPTION]... PFS_DIRECTORY...` +``` +rm [OPTION]... ... +``` # Description -Create the directory, if it does not already exits ``` -r, -R, --recursive remove directories and their contents recursively - - -v, --version - output version information and exit - - --only-show-errors (boolean) - Only errors and warnings are displayed. All other output is suppressed. --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out ``` # Examples -- The following command delete a single file +- The following command deletes a single files ``` -pfs_rm pfs://mydirectory/test1.txt +paddle pfs rm pfs://mydirectory/test1.txt ``` Output @@ -35,10 +30,10 @@ delete pfs://mydirectory/test1.txt ``` -- The following command delete a directory recursively. +- The following command deletes a directory recursively. ``` -pfs_rm -r pfs://mydirectory +paddle pfs rm -r pfs://mydirectory ``` Output diff --git a/doc/design/file_mananger/pfs/sync.md b/doc/design/file_mananger/pfs/sync.md index 9924808274..7a8e0b74cf 100644 --- a/doc/design/file_mananger/pfs/sync.md +++ b/doc/design/file_mananger/pfs/sync.md @@ -1,53 +1,42 @@ # Name -pfs_cp - copy files and directories +sync - sync directories. Recursively copies new and updated files from the source directory to the destination # Synopsis -` pfs_cp +` sync [OPTIONS]... or or ` # Description ``` - -h, --help - Display this help and exit - - --version - Output version information and exit - - --only-show-errors (boolean) - Only errors and warnings are displayed. All other output is suppressed. - - --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out. - - --preserve--links - Reserve links when copy files - - -R, -r, --recursive - Copy directories recursively + -l, --links + copy symlinks as symlinks ``` # Examples -- The following command cp a single file to pfs +- The following command sync locally directory to pfs ``` -pfs_cp ./text1.txt pfs://mydir/text1.txt +sync ./dir1 pfs://mydir1 ``` Output ``` -upload ./text1.txt to pfs://mydir/text1.txt +upload ./dir1/text1.txt to pfs://mydir1/text2.txt +upload ./dir1/text2.txt to pfs://mydir1/text2.txt +... ``` -- The following command cp pfs file to a local file +- The following command sync pfs directory to local ``` -pfs_cp pfs://mydir/text1.txt ./text1.txt +sync pfs://mydir1 . ``` Output ``` -download pfs://mydir/text1.txt to ./text1.txt +download pfs://mydir1/text1.txt to ./text1.txt +download pfs://mydir1/text2.txt to ./text2.txt +... ``` From 1297bbd1a2a24676d6091947c14c510a44c41a4f Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 5 May 2017 15:40:26 +0800 Subject: [PATCH 07/24] modify some bugs --- doc/design/file_mananger/pfs/cp.md | 10 +++++----- doc/design/file_mananger/pfs/ls.md | 10 +++++----- doc/design/file_mananger/pfs/rm.md | 8 ++++---- doc/design/file_mananger/pfs/sync.md | 8 ++++---- .../file_mananger/src/filemanager.graffle | Bin 3605 -> 3819 bytes doc/design/file_mananger/src/filemanager.png | Bin 49686 -> 57379 bytes 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/design/file_mananger/pfs/cp.md b/doc/design/file_mananger/pfs/cp.md index af4204d717..80eed5d079 100644 --- a/doc/design/file_mananger/pfs/cp.md +++ b/doc/design/file_mananger/pfs/cp.md @@ -8,11 +8,11 @@ cp - copy files and directories # Description ``` - --preserve--links - Reserve links when copy files - - -R, -r, --recursive - Copy directories recursively +--preserve--links + Reserve links when copy links + +-R, -r, --recursive + Copy directories recursively ``` # Examples diff --git a/doc/design/file_mananger/pfs/ls.md b/doc/design/file_mananger/pfs/ls.md index bec4c39b37..8dc81aeaba 100644 --- a/doc/design/file_mananger/pfs/ls.md +++ b/doc/design/file_mananger/pfs/ls.md @@ -7,11 +7,11 @@ ls - list directory contents or a file attributes # Description ``` - -R, -r, --recursive - Copy directories recursively - - --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if operation time out. +-R, -r, --recursive + Copy directories recursively + +--page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if operation time out. ``` # Examples diff --git a/doc/design/file_mananger/pfs/rm.md b/doc/design/file_mananger/pfs/rm.md index fa881fe1e9..0b3760f332 100644 --- a/doc/design/file_mananger/pfs/rm.md +++ b/doc/design/file_mananger/pfs/rm.md @@ -9,11 +9,11 @@ rm [OPTION]... ... # Description ``` - -r, -R, --recursive - remove directories and their contents recursively +-r, -R, --recursive + remove directories and their contents recursively - --page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out +--page-size (integer) + The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out ``` # Examples diff --git a/doc/design/file_mananger/pfs/sync.md b/doc/design/file_mananger/pfs/sync.md index 7a8e0b74cf..c317742e50 100644 --- a/doc/design/file_mananger/pfs/sync.md +++ b/doc/design/file_mananger/pfs/sync.md @@ -8,15 +8,15 @@ sync - sync directories. Recursively copies new and updated files from the sourc # Description ``` - -l, --links - copy symlinks as symlinks +--preserve--links + Reserve links when copy links ``` # Examples - The following command sync locally directory to pfs ``` -sync ./dir1 pfs://mydir1 +paddle pfs sync ./dir1 pfs://mydir1 ``` Output @@ -30,7 +30,7 @@ upload ./dir1/text2.txt to pfs://mydir1/text2.txt - The following command sync pfs directory to local ``` -sync pfs://mydir1 . +paddle pfs sync pfs://mydir1 . ``` Output diff --git a/doc/design/file_mananger/src/filemanager.graffle b/doc/design/file_mananger/src/filemanager.graffle index d8ec4299f42eff52e7153b542e101cc28e2f9801..4a4338488dc1157745023790ed576d42ea214f1d 100644 GIT binary patch literal 3819 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 literal 3605 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 bz35aLl5+4d-^QPpdh_D{MYq+?^=beB1dRsQ diff --git a/doc/design/file_mananger/src/filemanager.png b/doc/design/file_mananger/src/filemanager.png index d8b14404bab846c42937b28296a63978c5cfdbb1..e6b9bfa48ea6371569c2d8458de55758270e64c9 100644 GIT binary patch literal 57379 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 aA6)5_N0knSm8Ce~@2rM_da0`2)&Bz_Fijx< From 5f02c4248a3937c6a2b54f74226e9b65e4b4db03 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 5 May 2017 15:53:48 +0800 Subject: [PATCH 08/24] rm no ascii character --- doc/design/file_mananger/pfs/mv.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/design/file_mananger/pfs/mv.md b/doc/design/file_mananger/pfs/mv.md index 7f7ef209c8..8ea006bdaf 100644 --- a/doc/design/file_mananger/pfs/mv.md +++ b/doc/design/file_mananger/pfs/mv.md @@ -1,5 +1,5 @@ # Name -mv - move (rename) files or directories +mv - move (rename) files or directories # Synopsis From 0e0de915c8235824ca9043f04c0ef18ccd82e6ef Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 5 May 2017 17:17:45 +0800 Subject: [PATCH 09/24] rm chinese links --- doc/design/file_mananger/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index bca8f48b8e..ea267e64d4 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -9,7 +9,7 @@ - 提供用户管理Cloud文件的命令 - 用Golang写,可以跨平台执行 -命令的详细内容看[这里](./pfs/pfs.md) +命令的详细内容看[Here](./pfs/pfs.md) ### Ingress From 1cc60626a34241e3f6433120b1fade6eed794896 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Mon, 8 May 2017 10:09:06 +0800 Subject: [PATCH 10/24] modify by comments --- doc/design/file_mananger/README.md | 84 +++++++++--------- .../file_mananger/src/filemanager.graffle | Bin 3819 -> 3442 bytes doc/design/file_mananger/src/filemanager.png | Bin 57379 -> 54827 bytes 3 files changed, 44 insertions(+), 40 deletions(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index ea267e64d4..00ca6db172 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -1,11 +1,20 @@ -# Desgin doc: FileManager -## Objetive -在本文档中,我们设计说明了用户上传、下载、管理自己在PaddlePaddle Cloud上的文件所涉及到的模块和流程 +# FileManager设计文档 +## 名词解释 +- PFS:是Paddle cloud File System的简称。与之相对的是Local File System。 +- FileServer:接收用户管理文件命令的服务端 +- FileManger:用户管理自己自己在PFS文件上的系统称为FileManager +- CephFS:是个POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据. +- Chunk:逻辑划分文件的一个单位,用于文件分块上传或者下载。 +- Ingress:Layer 7 Load Balancer + +## 目标 +在本文档中,我们设计说明了用户上传、下载、管理自己在PaddlePaddle Cloud上的文件所涉及到的模块和流程。架构图如下所示: -## Module -### PFS Client + + +## PFS Client - 提供用户管理Cloud文件的命令 - 用Golang写,可以跨平台执行 @@ -14,66 +23,61 @@ ### Ingress - 在kubernets中运行 -- 做Http转发、负载均衡 +- 做HTTP转发、负载均衡 - 注意配置session保持,以便来自一个用户的访问可以定向到一个固定的机器上,减少冲突写的机会。 -### FileServer +## FileServer 功能说明: -- gorpc写的HttpServer +- goRPC写的HTTPServer - 响应外部的REST API的请求 -- 在kubernets中运行 +- 在kubernetes中运行 - [RESTAPI](./RESTAPI.md)接口 -## 解释 -### 为什么有chunk的抽象: -用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念,一个chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作的transaction的时间也比较短,不容易出错。 +## 文件传输 +### 文件权限 +- 每一个用户在Cloud注册后可以申请分配用户空间,系统默认会在CephFS上分配一个固定大小(比如初始10G)的、有所有权限的volume,对用户而言就是自己的`home`目录。用户彼此之间的数据是隔离的、无法访问的。用户的空间大小第一期也不允许扩大。 +- 公共数据集合放到一个单独的volume下,对所有外部用户只读。由于其被读取的可能比较频繁,需要提高其备份数,防止成为热点文件。 + +### 用户认证 +身份的认证来自于用户或者程序是否有crt标识身份,以及是否有可信的CA确认这个身份证是否有效。我们这里描述的crt涉及到两个部分,一个是Client端程序访问FileServer的crt,不妨称之为Client crt;另外一个是FileServer访问CephFS的crt,不妨称之为CephFS crt。 + +- Client和FileServer相互认证的办法 +`cloud.paddlepaddle.org`需要有自己的CA,FileServer和注册用户也要为其生成各自的私钥(key)、crt。这样用户把CA、自己的key和crt下载到本地后,Client程序可以用之和FileServer可以做相互的认证。 + +- CephFS验证FileServer的身份的方法 + CephFS crt只有一个,也就是admin crt,拥有所有volume的读写权限。 FileServer从Client crt提取Client的身份(username),限制其可以操作的volume。 + +### 分块文件上传 +用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念,一个chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。 一个典型的chunk如下所示: ``` type Chunk struct { - filePos int64 - checkSum uint32 + fileOffset int64 + checksum uint32 len uint32 data []byte } ``` -### 关于文件权限 -- 每一个用户在Cloud注册后可以申请分配用户空间,系统默认会在CephFS上分配一个固定大小(比如初始10G)的、有所有权限的volume,对用户而言就是自己的`home`目录。用户彼此之间的数据是隔离的、无法访问的。用户的空间大小第一期也不允许扩大。 -- 公共数据集合放到一个单独的volume下,对所有外部用户只读。由于其被读取的可能比较频繁,需要提高其备份数,防止成为热点文件。 - -### 关于认证 -> 通信各方都需要有各自的身份证。一个公司可以自签名一个CA身份证,并 且用它来给每个雇员以及每个程序签署身份证。这样,只要每台电脑上都预先安 装好公司自己的CA身份证,就可以用这个身份证验证每个雇员和程序的身份了。 这是目前很多公司的常用做法 - -身份的认证来自于用户或者程序是否有crt标识身份,以及是否有可信的CA确认这个身份证是否有效。我们这里描述的crt涉及到两个部分,一个是Client端程序访问FileServer的crt,不妨称之为Client crt;另外一个是FileServer访问CephFS的crt,不妨称之为CephFS crt。 - -- Client和FileServer相互认证的办法 -`cloud.paddlepaddle.org`需要有自己的CA,FileServer和注册用户也要为其生成各自的私钥(key)、crt。这样用户把CA、自己的key和crt下载到本地后,Client程序可以用之和FileServer可以做相互的认证 - -- CephFS验证FileServer的身份的两种方法 - - 第一种:每一个用户都有自己单独的访问CephFS crt。 - 用户访问其空间时,由FileServer读取它然后才可以在CephFS上完成操作。 - - 第二种:CephFS crt只有一个,也就是admin crt,拥有所有volume的读写权限。 - FileServer从Client crt提取Client的身份(username),限制其可以操作的volume。 我们选择这种。 - -### 关于文件传输 -文件传输的的关键在于需要Client端对比src和dst的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post chunk完成。藉由上述的方法完成断点的数据传输。 upload文件时,由于一个文件可以是多个FileServer可写的,存在冲突的机会,需要Client端在Post最后一个chunk的时候检查dest文件的MD5值是否和本地文件一致。 +### 文件传输的优化 +文件传输的的关键在于需要Client端对比source和destination的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post chunk完成。藉由上述的方法完成断点的数据传输。 upload文件时,由于一个文件可以是多个FileServer可写的,存在冲突的机会,需要Client端在Post最后一个chunk的时候检查dest文件的MD5值是否和本地文件一致。 - 优化的方法: - dst文件不存在时,可以没有Get的过程,只有Post。 - - 文件的chunks信息可以做cache,不用每次启动传输都去读和计算。这个由于比较复杂,第一期暂时不做。 - 小的技巧: - 可以用[Fallocate](https://golang.org/pkg/syscall/#Fallocate)生成sparse文件,让dst和src文件保持相同的大小。不同位置的chunk可以同时写入。 -### 关于框架 -准备拿出一点时间测试一下用[swagger-api](https://github.com/swagger-api/swagger-codegen)生成Client和FileServer的框架部分。如果框架生成好用,我们的精力就可以更多的放到逻辑本身上。 + +## 框架生成 +用[swagger-api](https://github.com/swagger-api/swagger-codegen)生成Client和FileServer的框架部分,以便我们可以把更多的精力放到逻辑本身上。 ## 参考文档 -- [Do you see tls?](https://github.com/k8sp/tls/blob/master/README.md) -- [s3](http://docs.aws.amazon.com/cli/latest/reference/s3/) -- linux man document +- [TLS complete guide](https://github.com/k8sp/tls/blob/master/README.md) +- [aws.s3](http://docs.aws.amazon.com/cli/latest/reference/s3/) +- [linux man document](https://linux.die.net/man/) diff --git a/doc/design/file_mananger/src/filemanager.graffle b/doc/design/file_mananger/src/filemanager.graffle index 4a4338488dc1157745023790ed576d42ea214f1d..069882a1e93a3471febd250f1b5b8acf894465d4 100644 GIT binary patch literal 3442 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 diff --git a/doc/design/file_mananger/src/filemanager.png b/doc/design/file_mananger/src/filemanager.png index e6b9bfa48ea6371569c2d8458de55758270e64c9..e1926fc6aa43afe0a66a86c9815e3ee20744c161 100644 GIT binary patch literal 54827 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 MN-9Z|i5Ug{KLk%^x&QzG literal 57379 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 Date: Wed, 10 May 2017 15:28:03 +0800 Subject: [PATCH 11/24] modify by comments --- doc/design/file_mananger/README.md | 95 ++++++++---------- doc/design/file_mananger/pfs/cp.md | 8 +- doc/design/file_mananger/pfs/ls.md | 4 +- doc/design/file_mananger/pfs/mkdir.md | 4 +- doc/design/file_mananger/pfs/mv.md | 4 +- doc/design/file_mananger/pfs/pfs.md | 2 +- doc/design/file_mananger/pfs/rm.md | 10 +- doc/design/file_mananger/pfs/sync.md | 12 +-- .../file_mananger/src/filemanager.graffle | Bin 3442 -> 3442 bytes doc/design/file_mananger/src/filemanager.png | Bin 54827 -> 62630 bytes 10 files changed, 64 insertions(+), 75 deletions(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index 00ca6db172..16074f8a01 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -1,57 +1,51 @@ # FileManager设计文档 -## 名词解释 -- PFS:是Paddle cloud File System的简称。与之相对的是Local File System。 -- FileServer:接收用户管理文件命令的服务端 -- FileManger:用户管理自己自己在PFS文件上的系统称为FileManager -- CephFS:是个POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据. -- Chunk:逻辑划分文件的一个单位,用于文件分块上传或者下载。 -- Ingress:Layer 7 Load Balancer - ## 目标 -在本文档中,我们设计说明了用户上传、下载、管理自己在PaddlePaddle Cloud上的文件所涉及到的模块和流程。架构图如下所示: - - - - - -## PFS Client -- 提供用户管理Cloud文件的命令 -- 用Golang写,可以跨平台执行 - -命令的详细内容看[Here](./pfs/pfs.md) +在本文档中,我们设计说明了名为FileManager系统,方便用户管理存放到PaddlePaddle Cloud上的文件。 +主要功能包括: +- 提供常用的命令行文件管理命令管理文件 + - 支持的命令在[Here] (./pfs/pfs.md) +- 支持大文件的断点上传、下载 +## 名词解释 +- PFS:是Paddlepaddle cloud File System的简称,是对用户文件存储空间的抽象,与之相对的是Local File System。目前我们用CephFS来搭建。 +- [CephFS](http://docs.ceph.com/docs/master/cephfs/):一个POSIX兼容的文件系统。 +- Chunk:逻辑划上文件分块的单位。 +- [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/):提供七层协议的反向代理、基于粘性会话的负载均衡。 +- CA:certificate authority[tls](#tls) +- CRT:CA signed certificate[tls](#tls) +- Key:用户私钥[tls](#tls) + +## 模块 + +### 架构图 + + +### PFSClient +- 功能: 详细的内容看[Here](./pfs/pfs.md) + - 提供用户管理文件的命令 + - 用Golang写,可以跨平台执行 + +- 双向验证 + PFSClient需要和Ingress之间做双向验证[tls](#tls),所有用户需要首先在`cloud.paddlepaddle.org`上注册一下,申请用户空间,并且把系统生成的Key、CRT、CA下载到本地,然后才能使用PFSClient。 + ### Ingress -- 在kubernets中运行 -- 做HTTP转发、负载均衡 - - 注意配置session保持,以便来自一个用户的访问可以定向到一个固定的机器上,减少冲突写的机会。 - - -## FileServer -功能说明: -- goRPC写的HTTPServer -- 响应外部的REST API的请求 -- 在kubernetes中运行 -- [RESTAPI](./RESTAPI.md)接口 - -## 文件传输 -### 文件权限 -- 每一个用户在Cloud注册后可以申请分配用户空间,系统默认会在CephFS上分配一个固定大小(比如初始10G)的、有所有权限的volume,对用户而言就是自己的`home`目录。用户彼此之间的数据是隔离的、无法访问的。用户的空间大小第一期也不允许扩大。 -- 公共数据集合放到一个单独的volume下,对所有外部用户只读。由于其被读取的可能比较频繁,需要提高其备份数,防止成为热点文件。 +- 功能: + 提供七层协议的反向代理、基于粘性会话的负载均衡功能。 + +- 透传用户身份的办法 + Ingress需要把PFSClient的身份头传给FileServer,配置的方法参考[Here](http://www.integralist.co.uk/posts/clientcertauth.html#3) -### 用户认证 -身份的认证来自于用户或者程序是否有crt标识身份,以及是否有可信的CA确认这个身份证是否有效。我们这里描述的crt涉及到两个部分,一个是Client端程序访问FileServer的crt,不妨称之为Client crt;另外一个是FileServer访问CephFS的crt,不妨称之为CephFS crt。 -- Client和FileServer相互认证的办法 -`cloud.paddlepaddle.org`需要有自己的CA,FileServer和注册用户也要为其生成各自的私钥(key)、crt。这样用户把CA、自己的key和crt下载到本地后,Client程序可以用之和FileServer可以做相互的认证。 +### FileServer +FileServer是一个用GoRPC写的HTTPServer,提供[RESTful API](./RESTAPI.md)接口,接收处理PFSClient端的文件管理请求,并且把结果返回PFSClient端。 -- CephFS验证FileServer的身份的方法 - CephFS crt只有一个,也就是admin crt,拥有所有volume的读写权限。 FileServer从Client crt提取Client的身份(username),限制其可以操作的volume。 +## 大文件传输优化 ### 分块文件上传 -用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了chunk的概念,一个chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过chunk的操作来实现的。由于chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。 +用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient在传输完毕最后一个Chunk的时候检查desttination文件的MD5值是否和source文件一致。 -一个典型的chunk如下所示: +一个典型的Chunk如下所示: ``` type Chunk struct { @@ -62,22 +56,17 @@ type Chunk struct { } ``` -### 文件传输的优化 -文件传输的的关键在于需要Client端对比source和destination的文件chunks的checkSum是否保持一致,不一致的由Client Get或者Post chunk完成。藉由上述的方法完成断点的数据传输。 upload文件时,由于一个文件可以是多个FileServer可写的,存在冲突的机会,需要Client端在Post最后一个chunk的时候检查dest文件的MD5值是否和本地文件一致。 - -- 优化的方法: - - - dst文件不存在时,可以没有Get的过程,只有Post。 - -- 小的技巧: +### 生成sparse文件 +当destination文件不存在或者大小和source文件不一致时,可以用[Fallocate](https://golang.org/pkg/syscall/#Fallocate)生成sparse文件,然后就可以并发写入多个Chunk。 - - 可以用[Fallocate](https://golang.org/pkg/syscall/#Fallocate)生成sparse文件,让dst和src文件保持相同的大小。不同位置的chunk可以同时写入。 +### 覆盖不一致的部分 +文件传输的的关键在于需要PFSClient端对比source和destination的文件Chunks的checksum是否保持一致,不一致的由PFSClient下载或者传输Chunk完成。这样已经传输成功的部分就不用重新传输了。 ## 框架生成 用[swagger-api](https://github.com/swagger-api/swagger-codegen)生成Client和FileServer的框架部分,以便我们可以把更多的精力放到逻辑本身上。 ## 参考文档 -- [TLS complete guide](https://github.com/k8sp/tls/blob/master/README.md) +- [TLS complete guide](https://github.com/k8sp/tls/blob/master/tls.md) - [aws.s3](http://docs.aws.amazon.com/cli/latest/reference/s3/) - [linux man document](https://linux.die.net/man/) diff --git a/doc/design/file_mananger/pfs/cp.md b/doc/design/file_mananger/pfs/cp.md index 80eed5d079..605c0b7c8b 100644 --- a/doc/design/file_mananger/pfs/cp.md +++ b/doc/design/file_mananger/pfs/cp.md @@ -19,23 +19,23 @@ cp - copy files and directories - The following command copies a single file to pfs ``` -paddle pfs cp ./text1.txt pfs://mydir/text1.txt +paddle pfs cp ./text1.txt /pfs/mydir/text1.txt ``` Output ``` -upload ./text1.txt to pfs://mydir/text1.txt +upload ./text1.txt to /pfs/mydir/text1.txt ``` - The following command copies pfs file to a local file ``` -paddle pfs cp pfs://mydir/text1.txt ./text1.txt +paddle pfs cp /pfs/mydir/text1.txt ./text1.txt ``` Output ``` -download pfs://mydir/text1.txt to ./text1.txt +download /pfs/mydir/text1.txt to ./text1.txt ``` diff --git a/doc/design/file_mananger/pfs/ls.md b/doc/design/file_mananger/pfs/ls.md index 8dc81aeaba..ab254cfc5d 100644 --- a/doc/design/file_mananger/pfs/ls.md +++ b/doc/design/file_mananger/pfs/ls.md @@ -18,7 +18,7 @@ ls - list directory contents or a file attributes - The following command lists a single file ``` -paddle pfs ls pfs://mydir/text1.txt +paddle pfs ls /pfs/mydir/text1.txt ``` Output @@ -30,7 +30,7 @@ Output - The following command lists directory contents ``` -paddle pfs ls pfs://mydir +paddle pfs ls /pfs/mydir ``` Output diff --git a/doc/design/file_mananger/pfs/mkdir.md b/doc/design/file_mananger/pfs/mkdir.md index 45906dc208..c11dadd61f 100644 --- a/doc/design/file_mananger/pfs/mkdir.md +++ b/doc/design/file_mananger/pfs/mkdir.md @@ -9,11 +9,11 @@ Create the pfs directory(ies), if they do not already exist. And create intermed # Examples ``` -paddle pfs mkdir pfs://mydir1 +paddle pfs mkdir /pfs/mydir1 ``` Output ``` -make directory pfs://mydir1 +make directory /pfs/mydir1 ``` diff --git a/doc/design/file_mananger/pfs/mv.md b/doc/design/file_mananger/pfs/mv.md index 8ea006bdaf..3929d43394 100644 --- a/doc/design/file_mananger/pfs/mv.md +++ b/doc/design/file_mananger/pfs/mv.md @@ -18,11 +18,11 @@ mv [OPTION]... - The following command move a single file to pfs ``` -paddle pfs mv ./text1.txt pfs://mydirectory/test1.txt +paddle pfs mv ./text1.txt /pfs/mydirectory/test1.txt ``` Output ``` -move ./text1.txt pfs://mydirectory/test1.txt +move ./text1.txt /pfs/mydirectory/test1.txt ``` diff --git a/doc/design/file_mananger/pfs/pfs.md b/doc/design/file_mananger/pfs/pfs.md index 76ee0a6917..c23ffc7479 100644 --- a/doc/design/file_mananger/pfs/pfs.md +++ b/doc/design/file_mananger/pfs/pfs.md @@ -28,7 +28,7 @@ paddle [options] pfs [parameters] ## Path Arguments When using a command, we need to specify path arguments. There are two path argument type: `localpath` and `pfspath`. -A `pfspath` begin with `pfs://`, eg: `pfs://mydir/text1.txt`. +A `pfspath` begin with `/pfs`, eg: `/pfs/mydir/text1.txt`. ## order of Path Arguments Commonly, if there are two path arguments. The first is the source, and the second is the destination. diff --git a/doc/design/file_mananger/pfs/rm.md b/doc/design/file_mananger/pfs/rm.md index 0b3760f332..64774c7ad9 100644 --- a/doc/design/file_mananger/pfs/rm.md +++ b/doc/design/file_mananger/pfs/rm.md @@ -20,26 +20,26 @@ rm [OPTION]... ... - The following command deletes a single files ``` -paddle pfs rm pfs://mydirectory/test1.txt +paddle pfs rm /pfs/mydirectory/test1.txt ``` Output ``` -delete pfs://mydirectory/test1.txt +delete /pfs/mydirectory/test1.txt ``` - The following command deletes a directory recursively. ``` -paddle pfs rm -r pfs://mydirectory +paddle pfs rm -r /pfs/mydirectory ``` Output ``` -delete pfs://mydirectory/1.txt -delete pfs://mydirectory/2.txt +delete /pfs/mydirectory/1.txt +delete /pfs/mydirectory/2.txt ... ``` diff --git a/doc/design/file_mananger/pfs/sync.md b/doc/design/file_mananger/pfs/sync.md index c317742e50..c921e8ac81 100644 --- a/doc/design/file_mananger/pfs/sync.md +++ b/doc/design/file_mananger/pfs/sync.md @@ -16,27 +16,27 @@ sync - sync directories. Recursively copies new and updated files from the sourc - The following command sync locally directory to pfs ``` -paddle pfs sync ./dir1 pfs://mydir1 +paddle pfs sync ./dir1 /pfs/mydir1 ``` Output ``` -upload ./dir1/text1.txt to pfs://mydir1/text2.txt -upload ./dir1/text2.txt to pfs://mydir1/text2.txt +upload ./dir1/text1.txt to /pfs/mydir1/text2.txt +upload ./dir1/text2.txt to /pfs/mydir1/text2.txt ... ``` - The following command sync pfs directory to local ``` -paddle pfs sync pfs://mydir1 . +paddle pfs sync /pfs/mydir1 . ``` Output ``` -download pfs://mydir1/text1.txt to ./text1.txt -download pfs://mydir1/text2.txt to ./text2.txt +download /pfs/mydir1/text1.txt to ./text1.txt +download /pfs/mydir1/text2.txt to ./text2.txt ... ``` diff --git a/doc/design/file_mananger/src/filemanager.graffle b/doc/design/file_mananger/src/filemanager.graffle index 069882a1e93a3471febd250f1b5b8acf894465d4..beb57cdd786e24a57e63c06ef4d6cfa0df3d8c5a 100644 GIT binary patch literal 3442 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 UX4~j9A8%j%AKeFi?|ozd08lvlWB>pF literal 3442 zcmV-&4UO_2iwFP!000030PS7fQsc@IzCQaD3OBh3$n!6054)#i0|u6V8+@RsO3CtI zYmp_dB=fUddy}i=8B)2)8{`G@Hm6c~i_A#amMjSjhy5d>3hQUOXIeAeUw4njp)4)vm9vRZCK-wm+1FVeKIBM?8pb zcSL0?f&h&L(g=bzL!^qyihT9 zYh>A?iYa}-E%z;EtF`!KLMkq#j;~o!P96lHwgTu1zzQ&4BlH>@%AbJv%Sk6I@q>B( zzVG#~yYs|rPB?O{+m>y)xfX@#Dx*kwqr@jS^Q;?=%iFi39GfL9Wu7+H!!_R?54ji3 zTky2&aIWv}^f#0sQ(*B~g`BgdlsPd7RH#8+BLpKru_gu9nZLZ=yV(=#)qxoLj)+`qz2-BOb;|J5Qam>{-t; zJ!9Jm<&NXsW4-BmW))$attg>A@Ixm`ji|gIt2I!GhN(`8=u)O3gHdg&@Dt`EKZI# zd7%@3*rUFI*}3i8z9mZtAjw5I?uu(nz^hN^7rqxoUHAL~oL_j3INAd%2zdlCQ4U0{ z8XrbZSlta_E(HIxBzbsd~qw?b5k5o=`GcX zs?lYI5D}J90s+;5P7TKB=eaJJa485kwa$&K}LXS{lXKw zd{Ufl=#JMPN$t#v76oHoo1>b8;FM>O-KbE1KPAluLtbblzkyaV>0|w2WV$k5} z&K=$BsvqzCb&@~?#43ge0-)<6mSmN&|DeWRYMAA@y@54V!wg|)08N9)(1kuQpduYH z4eJIZ5TPWuhf-DWS4ieh*IQpCkEhR-$5ZW*c|0W=qnKdE7|_H=mBv?T{5MPEhXM>D zb!N5F_EFKK#21`6WHVC5xLtQs?hRZxX1V~eX zrVCBO8WB-}Obm!BDnJNP;rKOCPbqT@{m3xp6NwiT8Gs)x9w-fEo+~ndh6p#I&ZO@* z;Icx&^SSsy^%qLo)uZiY2A!I_BOZO(+&ju*SdSQwdtGWuztAJ zS|8N6_m9B_5apv&?*zmQXPu+AywM%n=3wh^tL^R`oDN6sDLym@XYbbU?!`1QgCMNC zTZi>`*FvbFfo*hhJMa%1*70S%PGg2$!LV+1_L3H?jxj#{b(@;ot#z|=xpwKdI&Qxw zMA^IQHjUfCC}!FeOlwIC=;q4qH;xD9#(N=q<7{|pnx|H4ux)kL*J=B>xp8~i>D`|G zTK8jyV|+xr%}!I)EFMzU3}LUi;dGlPhoa@d8Qvb)&4G9ZH%uP-uptQR`^T_8u!kF- z_`kL`_5knPxKhme`rg{%#%{yhIyPelDWf|&Z3-EiU4dSAGEc8JN3FB%t;3DZ$6XXN zoI=nv#owm)pW!7D@d2ROk;<$NeT8H)bW^>(ai|d%d+&ng=SZ3$+aCqJ5nrERY zj?IC8`evdm(^39vAqY^WZf=i{`GT>BEC9)E5Z?sfQ#gW@u0XJm2akS}a8FJ{fND?# zH6fp_89Ko6+kcfn!$6GbIv^S#FC?cS&y~|W_T3~E*`jU`1R&CMrZZY4HC0kmB{fx2 zL!bQmaxqG;YMO@SRh7uR*hJ>(?=#A0>z|Sw0ZpXPC|O^qiA0If zFP$9~y*G#}%GckxbsewAgM8ILKsxpPM$+Gv!)x%-V59YnQ8UIsWpa%fL>TKtr$m4% z(p08Xz;sMB1_+hvuEQTZW+wQVVrHa2c0C_rKm$T4Aci`i1XVF}6*GS`2sv7BwH5PV z>kG!qcPb|-dNN*+B`Jg!K*~_H&Z=5xRpv>E0c5y?zn<@amG5}L zzGKT1@`YjLIG(zQ`5x0j`coYT!deXUn5hgc!(hT4QA0Nnql7@Cns%nVL6 zDRvN@|IvctABjGkoZ40u+&+K<ao;tF6J(r75m#cozf5ylbX;@{3VTd4$0IKVTL_wfx zkji)cL}P{scBM8m?FU~vfu3#Y1bSo)3z3GHK^W91F!U;htzy`3n;nY)*5gsN)Ohj0 z^T|7zU?5=AKxI)U2D(ZaBY?>_b`%knVp#q%PLd}t_b9?DBJqB8)pFn${{AigHY0{` zeqR1-eYp`=0p?3yjO#kwi#|WRGizp3+-BhP(rBIC-By;)ZF@Sw-Wl}9l)Kh@Kak`N z*=uDR&RTgz7Ex7ReY*v8d8+G5#Kw=a2beh1c!@ua9voY3j!_j%2R+6i(VSp6Bg7GppH6+=PTkY8Qm!2)~XzT6~}C*N+Cd1`tU8kf8&Fk({{5G#K+g zLcr+SA2|!rXAMY*cv)r~(D`XX3<485EnZVfn(=9GD=>AQZ5*e3$&N#scA8%)EBD1NI|%k3HwZn9owgd!GI{dwz_!^n5VxR zfg|3}VAyN{7ZH7dlWj?+znziqiS%!Il;newOPYL_$KsmU;J96$$A<4H6Q{qetk7 zUwpEA$B>XPzt~7fD9cDlP$|1QS=!iJAR)brOip>IuBJoUd*I93Hij=AkMDCpUIM9KqV-2+>`zpqZ%>?v|V3JOt<*(i2VRS}Nrp^Xtu!$Ar`AJfic zN&Bgqv?E?Cnxr)3{Ox(ei1Y6A<;-jX(%qQj*GLaAGnwU)f^Lw9IXHMRN^!$tYUpzZ z*9vxnYY6D#hb8%lExu1pfjRszEf!}2k7X{RtSV;`hZXTo7Fvcru5`%}6n=r+=MElq zBxk(L2n^>ZO?sQB#K!+-jH^P?aF5P1U^k)Dd(*{gYt%KrkIp`a&t`x8WXQtzVi@$A zZ^$EO_FI^*_fF-QH&GQ1(e;U1%0<-enzm_-+zD3tmRAn3T@D9<1ob9gC~>=a&SZkb z4bf&})QPytm&Q%6ywnSFwMin|wJ*du$vMxUAZ3ZdMheHQh!WmWT!K;J!j?!OGpoI+>BEayhnC3#uys2Lqghdfmy;iosF2a zS=VW4ia89%)d+gckNA4R<=xac$dD{YRuS3KcGN{C0|v~+v>?Nifp%gqop8Y+x!QRGr2?9Y!sjSW-=qdJQ*!qI}Mp1uuE z4noBjW55fkGe(_3ITl5p!GMRnaek&AV(W~bg|4uI(uh(OI{%sMG+5dg?^BSL@pJhQ z`bQy$c!c?4m~jk+Xe6SWam?!vyv6U7*`A_xi(=qW;){`e1}Y<~VfHW_!YgNfD*E>4(MC&nQuFTqHdXJ?T!njebe`|8ey zpTb^v0cc88NH3_d-eR+h+duK7!Hbkyee$9PqhDG!4zrNLMvOnMrH|^E^zu`eiS@Hr zJ&)Fcj=J8P@TPI4DWr+ZlN6Iqez56X=*BYXVPF2LUWq@AWEX2;Lj4tErfx>i9-|)9 z7snTSK7zbUan+d@UGbq+=t-C4&je?kM)3tPebg#KNGMs4!pe~sS}XF>6Uq-(Ym-Ob z7q=G#7lRjuH;?WJg5{NI(+FB0jXw~65uq$zN~{0!6yFf9_=D-vHlK|mNvdVPFCiu(5|qz@Z9{3PPV`TC5PpbCrPj)+oO$zjnV+ zzuX&QwBnEw@tSWeVXwmIK0cH5?=JdiM~F*rsOH!9p}o)KiIvJ-{$vydLznE8Y?rK# zY_e>&EWrT7z|sK9#_fPsvQY(_y1sgXI=ob0l|-$mjKAzy{k+sr)4xB-qWO(lTG0?- zvoRwfBR1pRUa4;CTvBt4Pnu7RPv{i^c0xE%sL1P$c7(2rw1GnyjZoO`# z?sYAHt*|Z3TH4xa(s6G4`C(P#z_GTHh)EDwZd#xe0>p*s?a)C} zVax16*p=8`=nt`du)c-^!u`Huen+PM7+;|hu97_-$Nqh0nYXvG{~|iFSf;k0B@rj_ zpjfk*zPMMOGQB_TGGimHF0G9N!n2i@nz;=6tm~y?UvFLSWoKhdV&&a;+)g;m&}o~g zkqPFpBeTo%Xgf=bE>`$7jGT$A*X$7Ikhg~|P??>%XxZ`@kh=%mo7_{Hzuz%lkK0v- zu{CR3xh$-jMMaQ<$!BAv$scB?DY7d{XQ5|;Asb5$D0nTyQ@3#`xGSJP99^=&NW(HxeK`r6fr7BXU~;Hs_f5P zVjV2q%-FiR?Wf*fbPmH;V(@hP%H!tZ`js2T^2el2noaV*)I0YdZv5o>Nl7jE@*_1m zwZcmtsihdzPpgt#(rX3Z3o7#IQoLE_TkOr7z{jl{w~X$Zm3l62MXLiz$;4VRRi@Sa z1fkK9AIhRH2XM@_zR;QKe0^xz%eSB9pQWWwyic*Oon@x)vJmCfd$D>k{-F2$B8FMy zNF;4!wfBDOo27Z0+`{iNl!>T`v2;o$ZwomK@m0-KM^7v+`fuQ1h6)I9|H-pQ#}7j7 zb|Je494w~xaSpdZ6~DbJtH+X)o!0$}{0P?K}e& z)yRsWQojJE8|~iFdJ%{^y(Xc$zrcuyur|5=qM@0Znp%arp87*bB(z77No3rAV$IyG zP33kRT}q;h-dWZiy1~lcaheMkSOoOIpob&lBO5&8(J->!O#Dpr%z_Nxk?R~M zI~Qxd^NOSDUe;2B*B!5Yzi#92sO}f-45p{j>7oIvt7-H}9QDBPZQFIQ@1ERzOVy=8 zi_0SH3XB7Z8RU8Hq~B;0cyhx$ucy!ebm9T%dgNRWLmS)-rVXM!?e{r7=RF!unf9Be zU<brN>Yp{3wZqSni;&N77sbOi>Pu|fU9r|$B_2d=s z6s)yF=6~(6-u)8fCg|$74m{jDZTWVNc@P`;Dpb6~+x+4y?e+0$bFA5h-sL>7rmQz8eOyFzgrEh*CQ48k7OuEt(m<*uqfXK>_xypMQ<)`Rzqc3;goQbz*_tQjKXq)3aP z#ba+@(#UIl85_E99uZ`tdi@%g!%BGTjC6A-9d_hTUU1`T0Es+Fmw5h&DhT0M|MBs* zv6Jh`l5j@EzniFnf~ZBQqR5buA0Ry6-#@4r9y~Ia>}DH(_wP0&WE7nR)ITTsHLuDG zQ7T4;@JOkb|3ebIzEz4pr};JO2Ta6xD(v!{_`i$rmqbCLMCboYa#8h1czqu~n&ij- zFF796G(P;-k`UwNiwB8ns$&sEzx`vmzrIq%bqoCuv8nI~Q6ALfo2FUQ{A+U&YYt}G z{~ux_1(zbmBP9I(mio#6So0%u7u-M2>94PE!;pe2OP{?Wjr<>LMjVyz{}5aB|K~^b zJf^cCR=9k1b@iwD3+8_v!P{WOmc4#Plff$(+}Ox_>DT_#;w9I=yR{;^eV}|v%Bzn+ z+jl~0p+CEf|H3YRPo(Dmz%Dy0qHWU&`5c*zdeGlYHug_&eL+B^5m%p1lxomJLN?;h zW@m&lxllJM28pJ?!jo`b`~kBS1eRB&oU;*Nf?(5=i~n)Tolg+Zj9%eK2wp{|%K!ck zZ2U)wyF3sg=<^i1Kl&4n(g+>m34tL*XmWhFgZJmUV-T}CKKLJ6{ttvBs5?JZ{cmLS~Y35wAt5>^>;dNc)xa+^G8;6$F!&g+uetRJ{hwR&K?<>~abDZn z%LK#%So*)G{;AM!fxnc3oS#%U4e`)r-Wc=828g;N#{Rf}RB(oh*ho^OFu6a6XcR^4 z{A2WZmQzBiI4~qs>0ccr5gqiT5(55*Ru648N~T1G@1F`xL;tUs5!!te`Vq>B7zXb7}Y{;OFL(Y*g$ z%O~uQ?MHn58`9K_%+M#`uPJgsF z{A#~`)N6c?XkYm}Y4Lk|aM~|ZOYr@ejZwlSJ5VAQ=O+)lAjsUN&4aFcycXgr229ygpfCaI&LV z!KtMg)cnxC;Wi0)oh8uUC?8oED zyGPpMzYeoF*hBI@w(re<{XUhgVSUBk4%)x+h>QKl#!xe_to=uoS1{3rmSs>k1%15| zM+2;kX3-?uLv~L)x9p7+BKjx1r&4X&yKK0e5R1G|VO(F{Z-o;HR z`=gYVb%A^iT#8NghDw0o>eAN&>M?DafLi7>(5SDpzqfX?yOEemJnQ_LQ^y3)Wk&YY zaQj3jmy%@_eM@I5g|(ZdcUwp6i|J**&z$PH%e@3wl|!z%w3zkuGn@4VZ4N`suMaKI z=dC8@4bdjA7azhxN43-}$sLw&Y+NTpZ%-k1vd4S<*!pV4)upwi4J?VQlO!MOnK_Qf z8ieobSnZ!@u~(6JeR4R1`{MkqV!_))D@N|)LIJfD2vvBd6&#F;+7%Sr+pyJ$-G32# zB^#(r?>pKbg`(57BD+~!;=dStx@d)aU4x38S~7a&cPFY@d|>SqPn_)Ll_-*yK>jFT zHorMD7YD5&L@ZB~Ft0%wuTO1VV2Px4VRJqihFklT+#2qYyRdD<@hXo?uNcg_KW@TwEO>Ut$8l7yR;kd4A~@!AJ%4l_!nWRCqIF_MaTU zsLR!Gvj5sJ>nFxGd6!zu4}U3p=OaunBd`j{s;R^}YCkjeDT7y+(M>4SF2;7U*Xn)M zrPAElYCD5lMn%WHYWOPZa*vWhc?XA@Q=x6!X(qfAEZ0^C+Xw}}602&zx@W?o{iHOk zER&vo&-K2*eeiomDxQ2=zJ}2}6$j`YS9R+vh3itqT*v9z5Zrbcud0R>n{ zFCOf?y_htyTdh_`$3z%(z&!OzZ&p-#jPsnu;Mx`#^PDfAy6&vm5za(+2C6F&Z(^B! zShU>*8n$(0ndWq=$RH(iw>|*u&65mN5r_z__`SaMiBXkERXY_u3Lh)Eqob?XyO04{ zcBqv=Z}uvL7J->rn+_0;-aYOk|Jb!)!J=3~IM;m(bIfI)nSvrZofVwLLBCF0W^>b8 z*fNz!HuKI_!RZ=*bLXe@Zriuuzi+n{K=8`JW5)x!+rPY;XVl0CkqDBWG@YXu4rDhe zCt||Uf4uBD@V+WbVMK^>>@*;danVaIqvO+yJ&q;4ks)Qafn5LTRV=qv-1<`o^<^ao zsFsTA$HdQ9V<%93-wMO)b0-F#lDDrEA?Ink|5A(&hKqYYW7uiufBMIr` zMVrbWmlF3o6R|3$t#C?jrZ1z;ff>$wG-^T8o+EIw2wAxd=z|)7W=A2sdSOF=v&UlusVh+mm4O_xk3F6zXT!ix9<5^)-4&iM zuz(s;1pU|8Hf3Y^(I1(nvnFv4=F+vD290EpXaFqJ{JD5?r;o0D_C|NGSM|$rWel)= zoa3=giz+J1rAjjA%{5^=*105hcPd_MekH)>b2g4fdnDGT^8raKNsY5RIM;lAI%FrY zyjrB{;p7!sh5X3L5@dMPr|np`!>4)l`XID69W#7_pXGscN5jB!`#8_?PV<&e$2!*E z_jP9-;+obMsCEDK(=)nY8;-gk>IQ9h?BFoTV%>nNw3KRn;QaxQKPsMTzGY!Lm&X~c zkNti67pdHFGb6nNKgBj-6_D_Du7-whdBa$W)j1zW&`lSi+6b`txdXT%7n8B1MCKmu zH8aPTm|xK*X*H6i;+vapGSSQ|0ws{Ixb6a2!KY3=mB3AtcN@MNWFM2hI@cE$)0E!+ zIJvt@+}q86F`b*hKn5shy%gb}a8yKzXvmX=?K05^T7{(E9?0AYf@wvj`4R(ru4@`&ODX6r1zgZ!G?fO;ID6qM7r3W^DD|1^+ zLG@>fQNLU4<`_o-W?jc`jOYx1)l|r~olD6mS3mJNyT%<@^L|&&E3s5WWEN1|y}Z-Z z<->55eh@HZV+PM|IL-XJS#7_ceFq2Lk077iba#%M<-BUL2`aPgI`EeM+ktbA6|J@3 zloa^O<$I~rdE>xqTo97kFqjBqT&^3`($QQ2+3X?gn^4`CmP^qCwSCz^{}zTp|GbhN zLUlf}PEU&J)6}2+@Z`O@wRsJqndgg1nItm{Z7od<>WW>(2JNUCEq-WSCCBORchQ{! zejCAdfJArS_uR5PHiEN~?KQ`)M&34u{gHPHW3dmpE3|xqowPKP%S2}A=2`E1_9QBn zw*=Z5mFsr~i)-E(d3)QGE`|!#u?Z?&=AgEh4=4neyz=n_aNOjbc0o3mvzCOveyMeh zt+rM2wx;$I5H8YyV}x4yTOd;^0m__4gBgsxRSsn$+LV~xu_Tn3cZU;mTKcs-R)UTm z3$njCd@5xm9o^BEQ_~rK*yf$2vp#PoKPY}?e$8`saIY?FRqJ!YXQrVE9mFA9I~L24 zw*lb*I{3SfQU8W7f=)oc!=_=#Q2Y;d(W7U4*eM!uuv249)ramgH29#d9C{l}or|Gt zo@v*Gl(Z*3f5c$qxYF;Y=yT!^*vVNcS-Ip_NDp55z&zUOI>_KJ`RYTwA%OF(3w%3A zxQm2-UW@dR>}BY4^7aAwz(X5|%sn+`sMzPz1r#HI7ukfH|3gJ|io_ZJIjtO6AcN@_ zf3)DM?9oiyEN=bwfXvEC&qhH(Jj<)N>^)pdG!&68?mbMQ%dhiVYO`dmZqQTnD+ara zY@g5_*4c*y_=3$9P9)sg8bn@Kd9&h+2a7HXS}BVS)lHIUiq|!aFa`h3$VkZ^wx@kH z2K+mWur0Gt-7|+^X(IFDE4k9|VT>y;=7rpj&hGwE)GU5?YY2=^Hz4EO2>9fQT^5rk0>z}eh^H2ge$p)RG} zwgdpJSLg0*^q8(}UiS84jm2F*Wq!tqrvP@cA11o=(%DKsY z(41FA=z`wxwfuMsr7 zRN%3mU%4m*j7TC(EnbXn%jCo@du#x-G+Qy*BvI|s$}E*;RIU4LQa1k~b$%VEx)S;xS%o_-KKS<;a|m6s$&`j2N? zN@#3jGKFK{&b6S|pwJ&R-M?#)U-vkIU+!DQ$4}-PC6K=JzSR#<=kGC0-mZ#e#cOFq zMyDKMKEP_NV^V8)^)5BK|ydn`l{?Wl4jTZC01Bfklx#>$sC zO0<`8?ZK;9_;Ph zh7nmcecdc?3!C{asS=5ib8n+5&x#^wFQtl!NzP>z{n#u8cyF;13)EkG+W}K-zr}9D zGfWqe9LzV7@$+M_XKjDTc@}?tU4Po{2(<=s`9=lPdogVl$;<3-|8NnMDrY*0vDU7yh%aqtOt2pwxLw07} zCc~|oDD|caRmmJR-P9eG>3ZG3)%}Lk-4Wn`e(k#o9!(ofKymSm6ADBt1I9QEV6aHu zU>HcMuQn>PG2*k9<&MBmCww)cGSZVhu&7>Tketa`VOx+gDuc6kaJE?n0sD=h*X(9h zp75U?Gx8Hh&U^7Oum9zd|Ls^J=%f87#<5K2pDf;<(_Cm@tWfB5^%ibvQfPFeKE8Eu zs@9lZr-ja_7f2Y@`I>szNK56n`v$h*Y%n`dxO44muHJwLSgOYfyxXoV!H$Cy2_EG9 z3xIcW1hCpyF7W^cwTFrUO6L!9jlmivOm1xqAo=0zY4nr=cN?dlroaV$IcWiSS<9R6 zNp6ZQG57ivn`qn}P@9QxNjLR36{_Ud6wXA1-22)Emwbj`&x1)6qHU?uHt97ftstQY zDM;#sv}Vw?hq(~_-xlE+F0!S0bOgT#DY8IVf5Ei~$s<#p#3a3B3(I#Jlzu9Ea8UDx zp!BYI!%6=g@6ix$)=A5LtIQsd+17@=dK$3kevRqYrpuajtQ1`%GC3&g6RNGqav!@p z8o*?)l>A^ZWz(g7o4c;vt8WBZFCR_KXUcYvyIRw!W~fO7XDYjqP4Xp1F`Fx9p5Jp7r!VMQ-C{Hj}uJ7KtVn*_9zAwKBzep~`i|L>6VK z^Gh5L_Z~Y-0q1IcQ-&=oFAPbQRH+qI0aq_ zFIP~4A%?yR*XIWi>R7>iLdM+$!+(OxUpC)(7eP5jXLE5G_v1HpEQhjy7&U#!d}sA|yW=H^bAl9P*e zCQD$blovsFm$~;kfXUsCo57AxyEtR~f16~4mv|mV<(K*@DUo&{t!Bp&T+N!P-Oc7aKH6LaTdbdu&_GR+MLvs zo!)Ikor=HO@(zC`Ai8k;GxPt`l+I)f1UvtR$Mpr?8p_^WiwO{L2UkqKozxwEW~$yh z?<2MJen(b;)HM8&8l2l+t!8V!e22HVTdVz}$Fnx5ikuoK!E$sgSrf9j2uwBfq30YN zKnIeNk!90{0P2&mwP(-g9a|I*ym|$~$GHP1?5di=MW?@j``8RoxZ}>?^G>l^XH!vs zTSzvPU$!18{w3ZAzThf;3mO*HIzfK>5PrD`d<%?qnQEI!>Zs5t(E_=Vd1Vt6on^>) zjD#+4lCY7*IVr%rKhX{P5!FgAg-ONVzisKf{hSZE!gy?8q_r77XIEY0Vg645@ykc+ zF{I)zk^Iy~!1Xdnv{Ce%_+F(*WzR`jvs)>0_63F|-5Z;^!fpSlf>|jCd0fyJ@Dz`n zmMnbODL^fXhQ9b-`@qelArxYY5=I6{h1Cqwi(K6spnubS?T-?vq4W%+B zhFmjR7qRb%Jh*J6k4UW!s9T0!F;{3uWL!D4E_+C|e4j9XFuw!L zXI)(i?+IlvOnkz?!{`)B->^8f1HKy$8@OJzJjs%#4_xFY+$6LOH2XXNJ1M^=*cAq>HDxYuBAqnPGB$Mag+P0nA{Dz3cTh2BM zyvM{8b1r92)_=|C zq(){kIemY;&~Di8B>@$^d{#AZ({{hu)!%$h?@DaMhq-#L)Sy?O);1>{d1|t7^#@;# z4k(Iyr;21^l+p-zsi-qi`K^Oz+3Rd~4OVxgpWdF(pf1DwkjwiH(@jXNXd^iT@RLxe zz3S~?10~nsDjb^4Ukx#G;$D`^SwG?TSoK)65y8q63WaxXc5H7?EU_w1%AR!gpDw6s zROJG-axXg=`i=6U5fsYxxbIWLoJ7lR|0~CU$Z24ys@AZMzsHff8kEFAn^TSURZNnB zdhtfXyKC1JyG`*HrnePx|!_=aIMk5XIJrW<#h#ZdHeS*p=EAHlU8ITVYRj!xts z=l9oBD#lC+kt@QEv^;B*Eo8n zZqKW0*V1+>aLFX@d2W8s)0?UV6@{@pmY*Ph@C^-cyGNWvn&CNHMU1PFS)FR#l|)fj zUt8MUs@v8tdtHbD`sEiav4AzxcjOts-_J*I7;VET0_@dhw%SVwssdBp^33~59cI27 zc_>&uS!mT5ncSUb!Lr|7ng!xymbY-kdB5Jnpy6`zzn<`I8`YT*CqKSCO^k5lQo6QN zmypOl@!`@gN}OS_Io-ZfV%Z(eaIL73PXb=8L|I~(rsf1rjOf6u;@Fgo_>`wItv+)c zRMh;~v5?fYr30YF(3pMgxAZ_NBpAKvyxgo3a8mWH2z;)qJMS^M2hh~3GvwVc0?hiq zI9x(l0deo&6RW1mRHuxNSnzBX>J?LDGNk^g)}5b$Kh{tM1RYYXGO#tzM2gcMFCNbk z2Bjak)RW*U#q)aTUi1oYVSu!DcE>%T;}g>A35h#KQdS|7Xd8O!38^pWl03#0cO-0L zftH`!Ps`dzBf{Ir)^&6ywleM|E)qI*nqQa%(QK-=vh#X=%PLfA=`%i-2lXg(p<2~y zq52C#JX{je8`7?Fu?)|vafggJ)h@f_Ob$A(hIOL*&7ORRu0Q=dg8aqbd_WIATy`zU zYpX@%+rp{G9PlI1>{)od#T+j&5pUDX=?zv$S>)N=d1pv)&Cc;2J18}T@A{0^ zi|?kb!lr@X$MMr7JF6}$PEVhY_^WH+MggT0tqzKu(}XR8lFaH%*0k)(D+-4aBX;6l z5b;Akd$M76+M$KOB5773tNP|#Q!9PGpW<8okRy<;$!bI%f)<1=G$|^ilL?cJ$PD2A zw^M>pPwLJIaYs}L#tkI!HdXlMCvHoXk=Ak^Muuwv^9EsCa$0^_nHrZzxj*gS{@K3F zSneHb3%X+k0|0WSIcr!_UH!~DB~e7?7OwQ#MLY#MBwu(@_;gq=Ew4`RF4lDzLQWpM zt@yb%k^mpoO2S5oY6ow*d31hOZz8;U-KOhPnIfK?Em$dlZ49fn3sYetVPn=ZY?+_j z8Z%cHTx4{|%UNW*G9=@6EB6%QfF-mz{>q;37r#D|(+@q`U)RLiBo@ihxxn$Nd#u6$N#=udr!d+!p*jOn@NW4k!c>L0U;i)^U zSJ-I)s5;W@z&~L;2%Ov>&de6;rXPxzTtB%hwjUla7V5j z8x^%hF~VYnN&d->pU+R;xD9hWECRdTi3`MVZV#oS@4dcz|E6Kus5p(rB2^<@GFf9F zE3vZjn<-(H%;c#B?0Q`e;ouITUo+?kE06&wRT5`MVPi3-!$X|DZbhj(pvO0EKZ_Rx z2iGemJSmp*LhBU#2Uh+e%m2FcqEMKaKXt2kdgo%8&mz|c|iVWpH~@Ns8$CsY9Knedng1CwK_XyFSCZI5VF`$)m~P7k9rKOkxM%#E}uR7m{Mt2 zV$s&ku*h`8cr9+MV=}?a@OoI&vfoF;NkL1Y_XRTmKHaSEi@q14#PkepP}9O9-qqERq7*t- zcR_Lv)$VoKo6*hlmo}QF2Q}U0tcidfJd7r86uQjIeAc&mxsLL#>jKVdI&(~4g(vG3 z_jc4xca)^b@SE+B5*9jvr#<-Qp!90lxGapm|8`@%&KzCP5OXcX`4$xH}Y)2=4IO?odCTB4WmB39t;zOJ{eNkC?}? zu^FJ+fO~;`rtJoj@e_;bX>Cfs9(T=iyi-VRT>vkYbDt#r_)*wjjBS$LXkHcEj#WSS z9=)Updc3$Z(S?m`tFy61yDAzy|8$&D@1vkcN254Bl~iG4_l0HY z_p*X>%+tG^jV0j;&@%#KscB_&!LHr-WPams@7F!c%Y7=!r-#*UA;J|+iEH4Sn+}** z%kD5p<^=t*>FmU6qI?seXVN(qA>=}W{nh)VGTAnDfe8I==lNu+7NzSEaJtVZbA-ml zmS;wji{WkMu~XJYX8ML_n57j8anytdy-nE0F9ia@b9HtW z%Y0RDKTFpU8cikKeBlaFWS{l9I_-FEh7Jm6DVv)t96lc&zbbDp+r{tAb@UchyEfb; z_&eS6mpj|Z_N&|kHL7s@#bK1ujX18z&6iz)-sH!pwGG?rPDYb@Tf;RCGCVueXdFZE z-RBa7)QiT%(QSYHz0H&>On5Rkm{G;%}5oM5^PV|tcfnoLYqaQT1NWyPQlS2O5#{c_Z zXG9cIrIGub1F}S?Ma^K~ypN_u-LwpRe6y|iTrXG@!ZOdxiz;~98eAIQ44r-YgjG~j zbk_c+Mt*M5*8ac+KX=xsk~fhht*7|B!>78tXrt^!S}#9Ml$#=X4P6*i%5bk3h6UO3=Zv+uC%QfsE~AgUdr&p*kbdx zS(cG;QK-5v zhmaqjIO3O9S8D+P^}7NQ?$#0+DXCMLUP{q-JHg%lDFpS;XNz|Rr~B2eYGZ^FULXp1 z5`-=pst?q22xg&#_CVlRE$!t1Q#GW$6|K!E4b($!$0^cVakcNS%l7T(QTRtJZ;B2h z^4{a5^{Kf6iOhq^<1>xpr@P~$4GYALOC>UE@GduR;1 z>ymTjDA~J9`Li!7G#wN(i_Zqsef*Ql-OfuvtHNPc*hF0dzo8Xx@YfBqG45%zoE}fe z{RJp}>iOyeEy1%L${#gls;Qf{TJ`A>@!IXTq_@RFBun2wF*j#<`;E~tws_tZ*r?QU2% zu|YxMHbt<0dVef~tDAp<^qp5xw0dfQzDbDoD=LrE$N(`WJ<9=c{|(W2zS(l(3||=3 z)=w2S%$6(+Z=`5It+{m(nz!X}{->U#A=`qZM*G#PupHZPYeck`dct)i0}HR4ZmBzhFHez-qk(_n5o2m(%{< z=HqG>1K9V|;GqdCei!C1@@cXvRl`E_sgEqgHZSmMMlxOPfL_DOs$oBKTn_?TUNoJs zfF*hs+b%6K4tv)zGA{2gwfAK)HE>e8)-{yvR@b*aRI%t3pkU?J-h zGKw3s&k&Qp`qiuKyMC>WSOVZgc`~KSu^*@dqLvFuQL20sbtS7_vq#6!=hfLk^YyHw zwrIf8ccw#WMg!h6qL9h87cQ4%+WH-Wtr5dcPkTh+D?g;m3}XJSLXsHiG%wrBCI!))~Ch_VP|>@ zc!NVf82Y%tQ+Bfk-L_DJ^ey$pN!9AM&7s77m6`?(W@hG1aCr{>WA%0RsLLEbLxUsG zS%*VXpS}CNQSe!Kw9>w7eM8{(oh0>iSj=MyR;c_hW}kEK>RT?_8`>REpoZ;;+-U*- zeZp{Fs+8<+zIW#$0!Ir%?d-DxmWW;VZ4lxaeIY31C0bZfr&3oJZRuIERB*auc{voW zm7RU3rRUZ*;3`x;a&8^y{Jm^x-ON=}*F#mwzHF>t2<=r$or>H3eDR?}A-|DtH^w_~ zYUS8^|0JjXmHSCXasQ-X4MC3kY8F#($mn_|pTQZ!{kY3XnTD?`AcGk=aCY>iC_roB zMeqD3PBxaZdJ8mWs=S*d0ifZ)#j!Z_b;qfr^joXo#s(p@x z*E|)X%$D(WSBu?)1^m7%1Vy?n=zTQ5dqQq8TIc#@Ev#6;cY^tIQb90nb{Vyg4X|rG)fnSKP>9lq>}pVHk%a9!pyOs%?CR}RBcW|r)fmYdiiay8fPZmMPWm>GD?>9Dch|} zyn%*WqaArCZf?momhoVx+n5|X%0eoZ->+=;UyHUMt8UuN7)upK=<84#=9)-R=+pWzqjkB2}Pg@`o3?w9$=xi3b9zOe9YRzZo2=Ox{C9VO)` z1Us|sy6I#%e4rHkO(yr8@o2J$(^3?qC+4uR+(y8-fI%WGDcAUBMw}Hb=(s~TJ z%H0G?+mS03`Qpp-I*#oX6CV9Qm^BI5tI;pPffuWfdn{LB9&IdJ$xxzpp zU%2({)!9H_-xxN}!e>H8&24Fst9TI2KH2g`xS{VJ7da0{Wc&5vfgxJ5H^WbnDPH6p zk3ma@ibnAWTbR1<`saE=OPh?v=Zk*Vz^pKd^6!qZ8Yh{Dba$5^v{3o3^SdxE%|Pi( zMq+w1kjVDb{q@g4#j!TMfO1z3Pg5(XvBoN_j=o?d8M zV5&MTT@fa@zc%|8}v+VJ;(Sh&x3>%&=ivOnZ z55x1FuViR1nd2-_fAR5txsV@`1Rh)2p3oS9ediDzxWBA1$;yY={;6)C{I$Y;hD*i` zry(tH&k|{koafE~rlyUQG3q%6!42I(M$$~?Yp)bGEk^kj>#Zxw@*O!jE`i++3dpkH zV4;shBKoXGz|NdMe~xbHC1WbA{r&g327t|%sTZwua(9FYw-bsQh8r>FW1!EET^$*%W=@H zxVFU2D(4Zh`foNiDCin(bqI?l_qv6zmO@Gw$=n(kGooH#ruiE{od$R+3bQit_F_N=0N&d>D&MFKB(BDY zOyuIS_|$cqy+QYzhqFQ&92MB%rU2P~SBd$_GLC6s3U-!3Yv!Ri#_+7w*1-XsFKG#g z!_WsBw(08C+mBc30P0oEpJT{a9+Yp5{XyxSiY?UmCp{l1 zZ#t8XgowQFIp+rp|ElJ;Bbj3If_cc%Gim7Wv}2E45Q&b-u^Ax}M#URTCF#lLl9Jw8 zBk1Bm!1;$u!$xN@*49Ju+|S^24y&Y;6e8W1)}dMlf%n(h5f46TcR%ICL@}7lPA&y& zq?aEoc#hv`7bw4w{O=SHB0TsMhj<-;t#2Hw>b=JIvL_$R?Z_V4SzB)t)Y{tHPXQa2 z=IE?F<{cV#$Pc_8u91YHEWtI;(q>iZ&D!eUU;?e*{I+X&GKj11n-q0ID5J@+d$&!Y zcE>GzzDBHkWkR%t-uM5qB4-%7v*}uZP{8l`zF$|(GZ92hya_xWUmwFR!A_}nu(_

%e@$P&L)4Z01!{VAsyYoYJIl|1 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�aY3b z6;(cRqV5dqFq;P1|x-O^h38(ViUoI#aGd$$bup()N7G@7Q?I2s_M^ci7ozyfq~ za?%0rp%UcKH$*zG-)ww-dgNhop^vJP#Pk$ruWE1UtG$2T568`YSEf<9>!O5&>8Cfw z0uM;sb(fkPP`}4zWMp7g1754)tuRu7rbW<6j1ri(c{Bw2x^*wOW(aWm3H0z)q(I4N2 zBX*Z{H4Axm3Q4;w%%OFK;s0FGx17t%$uR*As39WMtN+?)+73i25H;tUDi$cfipvT0 zWGCD3>TT|LpdC5!d>@o3sLL|C_@6$7DZdH{9z#T<67Sw$X!mMA$HtH+0%!?&P&&Ry zPfzdVt8Bu9>~PYBc`G02++F_xd}Fa;A|NkNnT>QC0*AZ`kQY3$FUC3)HgfX61FeH} zvav&O;>J@D;KzVvaD0H0l-d{=9_|K8Dt}T|?s~~8UJ~))o^6jMq!S1}T)zP;k6|3<7t3!~}~iSN-8A%f&3*kVG#{JMjqfR)S|kX;Y-aQJh^P~?N+1|JBZ z#HR!wJAh;qk51D$9zn+p@G|v!|2aB3is$=s#EVfu1KrcpqkQssxP;{VWwZ78PX<2b zI0*>}46ST8MyY@3wa`)=M6i#9* z-pv(si>L_^$wDKVqHSLmqCx^};+beLqjpWp*qkD5q(k4*xk$4w6uKbD0AAuS7yTz86k}y5 zR;^e(U8APNzV7Y@{z}j5AH*EylmZfmAoa6-?rhcaCy;kGUgg!Fx?h%dUQLdNd)djd zUtsR2t%1A~KcGysM4_8Bo9NYU5>yM6d*kgb4V^a`rL;wE6hW7AM7JkLBP3KE>q`aX zRD}Ex65BnJxXXu6gsbt_T3pV~M|qFme)Cg)F)O8OwYA0^(@o4}-Eo)}7ZbD51QXE; z#M)Wxf-6bAg?=C=rYjjbTZLiMpM&LkjBZn9O*zOTNWiwBceB9iMwCn#u7yYg*#>h{ z={-O|u8FE#XPzV{FF##lBJYI0nQ`}5&mnugho#e5qHtqz?UhLO4>#LGRh`h`(yA5@TaOZ+n&H(I72_HTQ!lMNK@X74 zcs$c|fAF7LO*2dhlD>-xrAM{IeaJi>T$FzzVl52!4^fC3Q<-t^*VNp0)?^=?Yz z7!X6>W?;&&@m!LUb)KuxIdU`pRcFCM8&UNn^&l4E?O><>PG<7+q#XjNf*ZZkSR>8h z=g5VkINVF|c4vx}${n988=jtmS}E?52~i7aE-fbMtrvjHSjrB;AdN_vf%t3hW}38Y zS*liFN06Dk@b2$z8Gd}!!DV(Wf~~;)`Q(wIlG84%%OB5#P3N9!+I z6ga39(!M#}{0qb-4$4RjgdGZ?p>v@<@76!7I%n{QeAx$sXijefSCpj3ikEmSV!gif zHPDdiSke!m4?ss+g6b>h*c*eesVfb=n(~zr&=ay-0!SSm&$|YI{UpbhGyd8f$cH9G z@(s4-+|5tmAljWuRo#iPb%4$=&lH|SJGw*g@#a%cUmq?*v`?nUUys&$3A^KR@Q{P>yiQc&r3Om5hFLn{EQel$LP}QrTI%G5$V@LI+D71~FjP2Urzl;_lz}<0<_s4C)yt_7!T*G#X++@ zf7xaGHH5Jo;vXd=A#6?$rQ{TmxITdL@PpuWCyG9F4Hybj1Y1Wu9DgZEwC0TRX%K=-{168=iptE0mg6}^$f{bSSL4;0{Q z0Et=J%5ce!A>~)Ezq|QM)xfcUaM#p_&8S(DEgq?8!`_T)tPV99vn;hG;CgP{3U133 z#ujS*BykHI;>8RcS{+glHIAyVWO>=29l!fO@qE=qnsm0!P!(htH;mE}9t+t>ykF zfS1q_3^`QWJzJYajOb%l?IGF|Ad)zPL;xIa9b>_&6Q5^3bi{1v@5G+@M8O{{H7gk| z)3P#GseE64NyT}$m83}d$i~z3O@g9mX-1AM8!N%+NX<{T{Dd78) zNo#}L*%eHf7G0uw>~}IXnjITsn#93B_^=nH!X3k5j{Bwcrhrw8Mf4MRgT-d$tuq?r zn*i+0$bSh@eTza5LMuq=0Qu(Ti$zE`c?hN&^r-W|gtCdESK-OF(5S%c9s){|WJi|Y zyPp1+4i1;~syC76wT_eRu_R;b7tjJq2D=5Sb>?`NRZ&@juw_kqG!#@+W*2+YEI(R^ zTz5#5dZ317#U@322_bvIkd(wrF-p!&LK|>|v4mkJj!5k+gKgVSagkk5nkLR#9Zf>< z2~Eu|?Kg+?r2JI}7HXzI*NOr<2>JB{7!-X6{KW5pwwaCF4Bx{w&c%ou6B6XZ32+bsm-F&j!4&)_(Jp&^R+X0H` z5aCkD0V76qrk>FS&m461{2em*#wDnk-^iiiokcoIxUPUcstkBvwTMVawR(NX_n={A zuatWx21V_!0L|}uJ`UOy7l1EL-tF?hW_yZ76m4UDeNmI$M-Pl)rNb{YYfTlxx2=8C zpbZm?RNPlV^UDDTm#LGE<4N4a3juP#pj954oZebQfl%%1zs?3ME4%}AYYQRlmWH@< ze>VDRJ#HN#LUD(`>aV0QSm7VQDSaYKfIp#b=@`7md|$bG8Z>)tHsW_*}Qo|O@s03z4u{Te#! zy7jXX-oC5;G?wrF0s6^A$}oe9soyi`EOaJ*1rRish?EI9E$yHGG33G)E|Cq1v21`D zww^1Z^y6$rhGY%RKlIx{25pTM* zZtcU+dM@X*ehfM|>R`fl`A*}lz5x_QPAYH?5OGC*V5q7U+CJa2vuQK>iJrbK4E_g_ zBA4@L z5grtPkK^LR9yvn{&BON~UkfJ~r_u5Q98;%^E=L$Xp9Jr}0ODn*=Sq3oX-Txk*`Gl}@W8YcvDr32y_daAu#amMSWV|OSZUCrC@d@l08V2BA5EKpWniu7JTd|dC%>7UeElS{@F9?@Q-4` zUyKizTh%~s*#OsGTAT1mTinJRw-3N)Zo!$E4{EJPwGs0G0TEH&OqjZJ_I z%{B82CKTkolB7Z#>hPC$tCj3WV~qxqGadtlwNuMqvMexU!rEZg0Ld>5Jl9ebTBOEc zeU+ofPp8nJZei-o=hr>cJ-|ZXLX!inFx_o(B0eO=5(b{|JjH>(%GVT1rV8kL#a~EE z!J?hybb#%*3xKv8JlA9z`bkAe=~|VFi3kN_N+lbWkk7ZBFDs3?R95=^&8pY9p=LX1 z%>hJv`UD{SECo4Ov!n6Tqkvi~7zW&`!NcE?e{zXJT(E$C+F+{%U(mCK_l}Z^Du_gp zi@>{uOeWL#*!IF&ae&pUp=giF<_NpcIDwM44}&#zdo;eD{s%v&o}}iuCT#PJu}C|S z>CE?l1@165`-3?d`sCDnW;-S7>o2~eqpVa%^VNNaE)e0hz5A;bs^HC}_$-pAnEJj0 zENdhkS!&|d575szLjw!obF;ln=qTHaaZnIR-a6*Wa?{JcS8zs&y#xxpLA-D?5SX45 z?%H^ksKdj}%zb$O^9f8SpHS!d8~}g-$WWTgnTa7Ij)*3nuCv01gRhj;3#r= zO1#6;RJvWC00WEg&`Z)E*C08cc#en09Jza2IfT?)p9toa|hW2t<~PRInA(e!_f*RJzx z=?m+dX6bM2jF#bnAT)mwXbpg4B4Dee*b4f-_*t0xArSG*RRt(U2i*0sUd>j?w@R%b zvQ39YhQ0aFk#tDmYpV8GWVzg;QorPw!aLmS&dljk0t%}H62*IykDa+Y=jM?_Yz#gY2u1-)w(oS-5&$(($`(Iji5nFD3AO-gx2U)Ymm@-;zbJ z9zvBadwY2}-Q-{ffIcRmg2xwdZ}7Y*)}jVs#B8SIGkBKmPg^>+hTqDyOFR)|#KQO#kW^eTEN91T)WW#wb$RyEtAo4WR=^H@Fa7_@fPcG&fZu~Uer zytt`sOBK|3bg^S}*vHJy8+B{HN_>eGi9oJury3wGAb;7#rcujeJpy0bW}i{@*dR+w z`E}+8zgi<)=wy}qTK1pmflUuhND2;%BXqtCjB89>lixY;by&Zn$tes7n0wk}Ri ztD?r^sB_@@N%#IaD8#Z=FPX*iLIQ8VVt3Z0G>9-45C}%hsMYi!j1SW z(#IRX@3y$P1?u85uz?@}2{APwr%RfhhBX_6^MoENMtlYv0UIO3RnF;>G&Tmj?~Q_kg=-g{Cd03)X?UK>j+qB4KbH+GQE3@WqL&A7 zDLKEgS$wB_WRfxYVPw{&ffsss@2x2FD^Iu(DUO3i*u;q8lQr~-Q~2Lc_bpmZRCB+F zsfoo@4Y;Y^(ryC=%H^4)FwepxCuozga_2Dw{WzE?TcvXAPibtw^LX;r;+3q&kO{d~ zJm zz26sVmBwV|hGMsg-$5)>Wn;>(T-WKbKAGh&8J3^**jAtQOx*btFw#E6BCW= zt;{w?29ZQv0EYdh&ELc@Ep*zRD{1!_=HnGbXHu#PhbWFK^RtX9Rbqf>`3tPbncLrQ zk_ccr>L9!!rZq@#Lf<(XU&HA2dU!6Z@W3X^7XwO3P--lL&^$G zl!puEjO}-}7BbuFko?dG9_s{5#$c+*&M9kJ7eMdQN@owp)F(;i*}!3zHjC+!9DQmK z#+FMbl!fDajNaT~0gP@I-fTAOgY3{^vM7bi+`~i;dRDDLbbF2B9}5kZ?WyJAqt@St zQlk>jT5U!jjknLWlDl(;*YH!jUSyws&Dfaig%->O zb;dh(=j@=??&+~hoFH{Fcz)Ro8nEn+2g*)w)jS55H;+P+KOgEJPlsWq({RVL4 zAh#0A@h@?Yzn2PH+kXNH0vqfMKAPDVG&H9VseDJ1K?yh*{_<*fMLg|StzvbCK!HMY z>Ur{vb&I-9c~*oXQ54{YX9x4F2r& zyR9)=5jbQObhC|%sTR$46Wi?}cKWg%@yXaL!2bJG-Tp}O<$=4C)$&?Qu6Xe$+7p+B zcZc6;A6_+@J)(_Lm7PmmQXZ;b365^-qz0liI=sot|BQK?uFS^Cm(@?Z3+7&2 z>SIN*=5G9E2P?!PpkVODIwUKxK^N-Pgb4Y%8;J02Rw6X33OjTovOEi?2)KntFKek!>f=%b!bQZIs+$O%}$S^;F7^X<_7>5vi2wsiiAaQ*N7d zooblw{hmDA@<~qoQ?-?Jgvk9kap|xv@KCr5(+lEKIwq4a8KZ@?o|WBp{-DfZxu>3? z$xV^MV4{GW2PL=OE&9<+ZD}%%jqO0@5AGiuQ+mJk4d|3JVZ(5Yo2q^H*?**E#$e2N z{oWq+KW5K!C`;y?F8#>5gpvCBmjoVxRuhl;{RF>KI^jPN`pipc&7_^B*cRQ#t%cbD zTGSKJZKV6effR7+)4`2h#YpY(rG#?$liXH;)P+e}fywTD>|-ZOt^tqM!?5G$0a1m= z%T~tuG;y_{`fsOO=-Xb?>rQg9&mALdzQjApJ zC#NtcUy0qw6(w7Z{7#)y3=L!359T&UEviM~z^N#mYDD z?oG;4W{XQot+~{vdS~8*v55wl?V*fY8ck}}TjQP_HiwT+qb?2kj`V4n#eoN9i4k^3 zl@^j0C&8qu#!W=2^WU~xOHE`@;9@is`ZmO+s>#nQNF*z;}C<8htBBVNjB{H|6nSEJ(nJ(NDNrl_H$S0n2~ zJ#&d!$y=(YrXLBaKgfnkNcM)Q(MT#liwgjazHCLmf=YqGe+(0kb}VyIP?K?*t?*e| zn(q7lJ(bbkEn%-^R21_VrfP=ErzE+qMXxUvuRQfQ{O2f67fl-q_U}#V6_t6qA{F~M zEnG7mP5FmTLM!)uZHWPH_&JJ>TL$;T5QpoM0R-SkD}*~F(*oi3=dHy*2T4GK#KZ@J z7)cW6fH6lmzGEbE8Ql3PqL)UbFmSe_c>0Vg(LuX4Z#jyDbmEe;R|d)v`a39l*F>BPJml5 zZUUW*GwN(xc24m~f2CJ+8*Im&@?bgRb6z%{kIo%uro`vw?fxQvR~~RE0DEhYy>UjW z41mTv`FT%ou^VY;e`;j{Nk>u;=^MY8?ruuM?0h`GBS9(F2yp|ws=!^ zm6ZIK&6JKVh8YL;#~&maHIWt&hc7D*n@AFmcVx^$%)O#IpR$>fPtd=_1%HihV6#Y1 zJ3P;}D->Zmbb;5gMLq4FyZvYs^;7TE#%WQyZZ%$i(4)}B+SAmpDAA8&7-b?`C> z;9{&b(A1__7Qt+WI<( z){|JUttwM$+Emvi-)6cPU>v==Na5}G&_F^+L0mMk-jzRg>J5@i386w zix!8pn(|*d0`zhsiDcJFlIbj!OjU4W0>IEN31RYt$Cf~THcU2)*roR287H65bT%df zuMDU|SexX-Efvy*FFJ193}3;3|4QhvpeeRL+GZ0Ab5)37o`7}G4zU@ZKQ$MwzWg{{6JIvOe z*pJDnwRb>~=LUX-6q7VbUk|hsn5A>ob+TE3R)zNLqJCIrjDH;X>UpQo97G8%KN6~^ zrr9=c+waF_Wo0~IRUa`hAEoZSr(<}yR;X+PqI3!2Wg*wjdiXiV# zhZ5qw?!jHT3X8RbL{1~>hq;vgB+Q4WdxgX-*xA?!U}TsS;#*^t6uOpyq>!GrV?&*@ z*a5+QVIA?J)@kJ?D_Pmy7omR?ViM8b)p20EXxwPhw24lF7%v(ThBYK*Nd(7U>WAq; z$(4k7(4+)K4=XiHE-N!81x_Omxx#KsB^_p9JMPGOsKOfzqo z(w!*Kv2(jfq#FUb4O(~YrT#Lh=x(&FT}n6N<~)^DUvP{!=uu z?zv_}kiTR_n$@=0kSvwJX8syfg+Dg6nH67t0j4ptkWS^iVmmTVQm-0I&s1BOb2$!5`Tg-TZh~2_)K<5*5NzfqkcS1L+bX<>36@*cu&&0Nw(PnMk9 z`$WIvikab^6I!}LIYx~X&TpH?eN`J&`MgHU3Kf3()$*1Yd+bx0g7QZvs9Z%{p|7c{;|UtZS&v<7OFhJEKN4rEc+}_I=i+PQ#%q;U zt`{vE5~N;8D^^|WPfeJ0qqm)}YcV??nHSY{XC!(kI{ju_x7N~#Y~20hc-wkkzUr_0 z>uOHaVO)oTyDJi=p?EeUG|cqO`74^5=qqap3oK)!(FdMq4crl59qN3p3= zRd#b?Uv!%cP1}whB35V@*;c3L@}r}NREop`Te_O(+wDpw@?Nbbg`Zn8&h6zq^~lKY z(8tEm7?-e}OO>f-)VQi7i9Yfo<2TK*^2*|3v6B<;6K1QvtK(8ao82Q;^P>xG0=p_D zkm8p_^k*Y&Y@JK{dwsN3pY)$Yg)X4qBOJ|QQ@{|GL(|<7^bM1?tVjhr*hsfl_ZO<`A5An`?xO_}<4lV#zJjMG(@Q}VIpJ$U5jtJ|i@N{~fia7Ib!m^oW7+3b^F%?^e2Y9I%90B0xfUa0-ggPsN`Yaap zl%;llNk@H>I^ShJ_80H*et!?e=Pi=NLqH4PvNimt5j(PYhH%~ZjqXk_a}9o2QZ(Yb zakGn3$f0V3)g+~^=4yqHrmXoXpGDj7K@F^uAu_3O-8Go?xIqlMym82zU|oJkJEaJ3 zWf>e4+J))H>$PPXB!rrolR4 z?0jbN;M8i{;(&wUWQ+uVWwZoL>Xh;)fia8Z8lLI?AeRzA73S0i(3sZfv?tEIl)p_-mhzn7CYqGvX=zs zG40Qez7r?I2F2!0_7jrFy%X znvnK4tZDkQXjFB_6qv;Wtvc$i=BGMpV-%LErgKp2tBF)&>@Nbsf2nDzHkMA# z6_q&lfD4Y4UsKC#iyDealGdOP*lB-x>P!uPlR@*^ssXc_KzXt?XZv6Em(K-pNjLk% z{>L@50^fNkTdOgnxxj9Zx1<&ij!xh3y)i%Wh-TAt>f*}eY*2uSeS1m!OyMXFq0=LR zV$OKCzq(uQ;pKXK+6Q`i4h7%P$o6q)P0y%GorKLwV9=C=G3Rn+u8pn5SkPr1&7`!O z(N~+a#l}rj8nDsf;#g_k48RoVEmO zr*>{CaY8r1CMnKCTUGU3kQ3|7-qV6;^Kt2Xq;!4&5pppY)uqX+3T-V=UO{ycVsT+D(d-VkzGZX$`+3sOS!`S32tSBo4jVYc&w177SbGBO z*fOu?YZ)>Nt^DZ&#z*d4L=$j^O)K7C7{N#ym{(yGS)7_tEB_fNo6k)C0eMq=ZT|Qk zU1)+IG~E39{86FnR`FIGWxbJcUN$CRfSB27P;EQ7Nm<3t4s*jguy`(*N5;2MFRpYh zCr|YGKC>JhlgbYJJ4%L*h)~z=K#K`<;dSWS2m^G z(iLM~?+53$8kM;aSDpyyZ;jx)6PDmKR(}bc6U{Lhe=x599tu)%*ko*{XvCR-gI}d( z(Y05uLzZuQj{L~{$7KBb^VNXmUDb+^Wt#h8*A-&d!=$RYzJ6!=dUStp;V(5(tC`-cDX$ z=@?;-JJw?Xc~v$?%GJ7&f073 zm7INF@53GAzI6BK`m5%w`A@H}!W88t&{2s{VPIg;r6k3aVPN2~VPIhUkrAQ)?B#Vm z!N8zaS%``%N{Nb+D>~YlT3DOFz(|J0Cm^Y+Xc6_Fcrmw6;D~&~@jM~P11ZAq8B$Tl zDSmtokH;ALJhCe^htePKRo9roB>+v3~r0#$%_#auiMeuH{2sG8S_0s zULJd86CN)sFkaqYs3hEmKW=D#jFh=}p1k9pfp3+;hAT?7%^iT>@hM|EM)cw3c2oF; zh*DM4wtIHsEs4tXOUsQa{EYYvg8f=W(Yz*7+q96v_v4tj+9!tZ7uw~M@0TJcrp9_WwGwS4|=$Xz+*IobrJcC z_b@TvVAxHa#CpCqzcStSN1!H0*%g8>SFqKdU`~s=uW@P8y=z8e9`xMZjVf@g+dQ5bNt_4Z~Nm{&dLxr&xG7 z!l=>oc?g6;+tEy$@E#&hiYzY>eh8spk>LmvXO%0$sy>ewmdGaB#oy&~Mrc8~62i=) zFn{iesNAQNT4Xo^H{3+m$<%^&| z4nslpTnzo4h&8qwHCCATIyOZO%AkaFG-@8Hg)mQa>j3#V(cRZ>BXfe+eaIW1&$oS+k0j%9+Z7QWMl)X*6+k!$xtoa3XNpaqOtWVzgr_ zVi;)HXk@6zC0D+AGku7gN^ng4C}R^tpUA_^LC!%T7t0xo5hox2Hm)MRgN~m*AaOF` zEbiyf=8)=;ZaiTD1v`2QZ-nTgG_QE8IC1vIE|2p|{xE$ZL8+6RsNtaj?V;e|idd$^ z_BXr(LIexXUs44reSbf?Yv%n;CBZ2^Ja+M|1~Z7^M#=YETex?ccZYX?cjf~=LVP0Tj^WN`vF&H7xPg z2E?lo9Y?+|I6nD<>=hHhOOG};&Lviu=8d4P>D|v7OBEmw8 zBkqPUK510Ze$=W)`qao4O z#8uB1wqTe_ncg$6ou-?@dn6|svLAXgep|=seU$7nb#QyY13IW&?Rff7ps_u!mBc8o zzKB?luEY7<#(CM@8MltkRb|mMVzfC`qNcsJv@yDY+U}02pS|$?PVa1JIaBjc^L%r! zpgTk{k@g$y2=Ux@)zN8G5}Ajft4-rvhu{5;x9w9o+_Zm;e`QcwkB(sSqbhj%GV+#0 z@5Ahe5Z86rbGPdg#}zd_M!hsGzBXP%w++(mj0b+Q>xu=h+V3@+rvg&~lO5g4kg4s* zlzX>hh<1YJtj4kWioMWY*Yz_pOh?RXQb%r8Kg~P)?w`yO?h?mjR{{%~*?LOKVWlHQ z-oA_vn*HMqf*@5obv#uc-Z4P|O%mN@ePb0Bl~Pq5RU}Z@exE#};H1yg#wVwCrN>D` zanWu%duiwWE#`NfmzmeR%dUObvX5HjwMb)=V_RGz5eLNmsW_>Ksktd$WA_<$Ru1Oe zH>GEl{meyrZ#v(2Rqx{LDIe$W4JRkkY9o|aR#NK{+UfwWcP%%8UPm&Etrd5Atq#iv zU?2u4a+vFtood5 z-Dtw|bUnIXai=!gEGn40xAIBye&ay$*lGVF2ET;aQhZc``Kw2SOQ-I&<7WICaOR+` zQwnm_MZC;q264Wtb>egM-Yh>ox@_&aK|P7`t9qE=#AZKpW_5AgH-4fGQUGS!2)cQP z-JXB6JkodoP1$*_YIofG`0=Il@G}{r&DWMgv#wWUm|eVe3R&W?LI;SSso#O9#!*ua z4$M#nvs)d<+zD=ygEvr{v##)LIbPdgYjqYk=;NYsq99X;@B44MS^O|HVakRXU` z-8o^vzzD%ei3zK^!yYc9>8kCdpFk=JLq8(o)TOA#=8DIf6LCeb11)lx-XDF}uSt%) z&Y8m0@U7bx=FDeXj2HRxNnpupZ<&>*OKWDm7~-c;N9`%M_Ow4w?Kj%pV{2 z2!MkM`;6)T8TkB}N(c+U4EM*=zb1=O3t>@EzQ&>WzgGGTBMjg1?0?q5`UWE$7@8y* z_$OWHWO(dbjQ^XR&q89*|0zFGV*d|aEU`7-{~-y7je;c>8X6|{KXjqYpZpKW|DXB4 z@2#`K~LB>yFw}@dJMim^Og@=}Du>bu4 z6ycMHVqNLI@WZ1H#q#r!4*z|a{2e?pCAGNVwDf-`{5`co>oa)|2X0KaBmzMgi}JfE zsy}pZk^*W3JYb4!OJOXE?3UC%%HM{CUj0(a+_A6m1<>#KjGT-=v{R@FY7zFB0ucew zZwH|QC4X@y7GC$qbfHV=+|Y~;$)pr4G0CKgg6!XivCN?6yj~`1oXri7{V_YSi0Y3w zXx|JK!LZzW);{QCeFRB|*nhmccR1vsEaFw4ct-D5S>YVI4TYP@(ii24WT1QJk=H$vr<1fbvExWDT;3}6n*Ay(?6 zc=;a^hR!E&`!!2m9`N;l{Ok7usDS4V8_*)mv)7>-C(?HL>3Mws zxyW;umuesWP)HG|9tIj#@e2G>n*L#tI+5&!$u!sC*MMjMilqL0#qVxhMSkzh6Xf4<3C zVV7!Q_Na`ucUCY^Ufnf)-?J3V+$mvZMa(?xaBKBeMxX%ca83LsKbo>d^m_ikTNM|E zn%x`nm>&bb%x)xn23a;#==?T;XY7aGY}3Gy!t7?<@Y{%tXHwtlDLv_B<^C1}`AY<3 z%I_a5f4HX$Lhi;7P9RSw#%*}2WPmw*^Ge>VhcxS*cm7g@^V$Y=qAo}6qFf`>IsB;? z@kYTTi``vc53lG2mvCfP9SuusoLq}I*wHRDzpJbCZ9jY51CMc-OZY}s>c)lUQK`xU)eA*gSM}pcoc>dpJsh{h_&@K!iTsjHC%%$BVAj+xT+oKN)~)e z@VmYx-7-t<$3MJI@pe7D*J$?)GPrI{!6SzDqyNzPy{`HZfe3o^rg8UN( z3FblSTauM}?zyqAX`>|q+g_KScHf5#-h3Y9GLOyG19n)6xFa576onr(Z+wQciP>8n zEifq2S#a?lH{EId);{c;mLnrE+L1FBQ)L#9*tf~}L3Li-lyPL1?|59o$n+vDkSXsG@R+6B0h z`6Azf(J9qftK;BVKE_C4?d%}vEht{c91nj7@uE5^e%1}K;$3S?LGPs)^3q&OBUyFZ)8$H}v3do>^hPqoy{UB0@)+gSaUK1IH&^qIkOjt*V(HaUx4~*5IHyjZ5ftiM z+cGAGn)7kZAM&j|KJsdK_vbgONl5#frA}S!ARbdj@6=`#<}(ENhE(DmAy4#a#Nj~V z23`|}?)ob2$z&614|VFyvgn*XXFDCmeG8s8kXY_+H04eyoqM_ZI)-&5oxW(Gm7GnnE~e#$N=b`W;#HKkSC7@4)R0ElJzxw5k?w4^O)G z_@)UjJZT)it)mn)t{MjfQ270pP##F|jvm+;=gDI?^|3gg-T8le2%w zJobz15V9COGZPU8-Lrdjb#mBtu=OTNh&h3;cG$QGkWcjl>?|7Q&z5(CHRvBy3K3t# zr5sZiafAImN!xYo9xet*oM-%pRkaOtVZV zF~jc>Z)dK&R@pysj<@#Y%uk~y@*MW>VER$+^Ec$`S>u^s;j>8`Fr%~mo(r&y|2BAM z24w4dwNluNe)O|{v`}U&;sOEvp}l2CSAxZ6jdPyZRglPc`ebRCGeccMlW32NxgBf7 ztSQ}t3&B?Hu~=4Mden9{cC2DCGOFCHh z3|Wi5yabrsAfHSNuS&+L+zUdp(>tsVKVBUfK;U(cnf2SOX@qdOWe4dykARU zk_lvkIK^Ig%tp|q-1x4V`?pL#CN~JWP26oQx*1!YH!p7Hrh{iOMbG!FfUAPUtoo~Y zyGNFw`C2m|9w(*9!tLcvFB~B{q;8RrgXMmfkjJm@W%*GLZ*PsHIv^)0wi}s&$PeOBc-Hnl9Xi4N_MU4gdgZ8H=01U*VgPi_G;Bi+b!Z{ zv+lxO?b8`-Z+*AZId@^l@su(@ctUwJIlh9r7Ov-pb7A9^a=i6NRwu!_Av&jx>5v}A zNDc3!b8Lbq?Ul2i@niZ&VNNOUdS`5A8An+wK~HDc&AJ9NrSge4CCf>fHa8sLNFna6 zXCpWK8#C{2I(U)3&Ya@8_WN{zZNS$QwPS&P2W+LL)?}YT#n<>w{!aL@c;O~lxu0GA zmBJJFz+Twp3bUch#=X(VP*c~kP>Xx1?W*l{-qEdYcG^I)pE=r@H&Rmerq;g{@r62f zEYmf+#_hTNmUe#peff|wL@e;NL8Bk#2Rj`#mdu``_}T0d=~9*|@Mo!=ROiY?`U|pJ zTI#ySwY9Q%enR@v&62iP39)P;$Z01^n8-PQ&y~@tmF75i^=R zkHw9GRD64kNQm10jl))g<~^pGmdOtQ9tl{(%>H>mDchw%Y<%N#36Jx@?VU#7X(gwT z3kbY_K!2ssG3OVt^kdf7SeuBE7Q_YE?gDb9t?YM>?Uhd9FmUBX4F_uidOMtpPD*2$ z{Qgl}dU!-g<#16EQT$)RY*Ghg+YPmpQ{@9v?eAYNw#f=*mrQm(WHfV+aP-4*L0tKH zQcKI)x@v-4Juils=2rz5JAuaM&kbtcRo3;;b8lIiAFt45@oFb$gJtBuPc+%eixXHNky4zn!?0BA^$UZ>YcBi+uy2KC89rk+0u zV8TmTBb4?hy}U+xbI92Y-EjlcL(0TSm{Yn|Vm7PuojmRw-35}1W_ma6cZ2_w&>z(d zWAq#@$Pj)7TNpTpH!K!Y)V!K}&ck3&;8t~i4J{o9zstnWy=TnFSI))#BOjvUVk%}} zRbI?l+mR$P9_LQz8aj~dRO~gOueG8Sl6NgE}rA&jh~V7>4LM$4nW86 z4ggN(%s5bz_G|%{;u_t-X6C)f$DEx51TAJh13foilw80Xp~}-$Nc0#n{Ja+r{&>27 z2kv)P{BDDqBqbn7Q~MbD0rZH61ud;K^$ zFhpM`_`7EQTH2)uap9_n&tmztUjPb@WJ-=Rn_HJ;1D)xIz@HV8DKRAsW)?`8Z!7Q$DmTh);AsJF7ym3|LQOl+|5#bRWHl%KKmDKr03P;G=H&3D>frfCO2x8owm z*Cyr$GLS%XY_;s0wB$gmK#*A6S^evM6|aN&DyjYo4v7j0D8DaGE0vNsIf9K>&nAK; zJK*-_Eh`pmmDMelzkEpHc4|l{U;J2*KQR4`Ey_xr+9MkA?=Y96{<)tpr@^YP@nc4? zp7ik2n~Sm%Qazl#$^g=Mv%+HXQuWzbnf}HejW^{M3X!_R@}&*;feHEo3wNj*PDFrP z?9kMoKgX!xh|Y?_iuMQH&3h$yGC2;BU-BL_-E~BM5Bs~v z@jXfCIV2C)cxqCAd2>)hsrSXahRJAMqI`G-)4W!@cSb>hm_~aMIvlcY{^yI(E;W5( zro5<4UwHMy;qp(J%kmg#NEhbcDYy@Gl4Q#&vpRrldq#I>`sWHj!nme09XL zw5~e9oe81wY3wWGfE>os(+_d&Xg|gusq_L!hB$Fs<~!-RL26uATzQRZytDYlE!o2N zoI7uN^9Bc2X`>*wuuczMvsWEfqf{^NcrkX#@K^-Sw2J){-yyc};igKK4F2Du_>%_ruMnrZilA zm3e;XK`y4}6p(1&41ClPE@WYaj%iKJ-`e=C%6JlIrrD)Vx^Umb_k{H|jSt6EGBj zPLDbSX!I_o zpCx+L(V7)-s^aa(-B^rrt?qX{dpXE>Mj*7#9|@n~_vG<-+b=jfnJeMai_SGr!}xgJ z*a`Gnxge!Ys;G#v9*%+9_fS+3P`l7s1%_0Jk->;PxO>B~*hW)`t)d&M`i8zAj# z&nzexo>MlWkV`hl-^s&tZ>K%!-z$aD``pj-^XTGhdQJ)S1`8dcd0*y|xrmcIJl%9^ zxVbg*kw&ff+~~PDI}c#6JS?w1ra!G=K9OG&OQZes(qQ3pbC)P~B31tiLqoIY)_Jd|iB=$=UV`bfD_T-i zG*RBTLgX5W`LB?XzXrp|@I?kwdOW9J+vA~Ch|(COn`Wo-2_+;#YG;iJXg75UmcN)2 zsZlN*Ropi>Ba_0D#N~kV@oC@RlVM#AxD5@zzP{eiPt>16V{Th(JM8L))(BTn85)q? zb|KZdpM8AXGI+`dgS{_8WRqDx(9zL>XB#{61s|sc(GTzwM$k6aMB~s-eIm{=ay=#Xf=h#s)f%RK;LFWuI59P~E}P`O>T@&bI}Zr(I&P*t#12}t zZI$c18?{SY>uzy5xE!_fRVgk`1nsmOR5)$R5?sh#_XXXD2Qz4b zci$|DcppHQB|p2~Zhg8vPh+PO{Q!;Z)|K4Li#a48?!aI-;!z~FciVpja;jRM!di5L z%%6+v(y5j~)s`1E9&;Bc7IA$*ulp<(&984VF>GW?5vcj=xfg$|!BQ z&aE9ksnzmtmKi?EANuS-KfhHzRgagMp3fOaS=^m(Y2XP}rJ5s=9uDHo|LYO32ozwS z(46_|=@_~Z+B`Ra%L{cs8cPC)(@Q-p<90q~w(Jja*k}RH9IU*4yk5Rt7+0+_iMS?x zGnovg<>-G91WwmUSX7|DmP?QxqG!M8LBVU%>%e2F8M^GuWG`&PcQ#*?cUi5`j}mxO zPdZmL!qK|rhz~6^Me*fd%@oL4)zw;bdOlr~w)=qP>eCwokgqiZ!+9QuN_pIJw^ zm3@M3!(->W1TzqQY_C~yOQKO56Zblj6PNso%kNWkp1B>X1xnCR|EWaS%h5wU9@9Xlig@U1NTc*2Zn)bVG zsbm8G+IAOko-z+JSnw?P-!l#&IAl#|*~20ax2ztdlW^DnMXjmxUET<1>GxMEv#tkU z8zJ^?PWj9>KtiXgUi#6RN*A4eo}THZL#t&I^+unj!WGBVajpETZPBbYk>N3lDxmE+ z>)oby1b+wBC|mx?7eozODa&O;#z#6P;9aUF0>JE!-Ne`2pU>F{hOVID4Fs<+Wi zKq0u?S?4#2Z?fJ%h1Bz_2knKI)l3K+DvXi-mS&tWc5OUI!FrPuru2Gkp<=WYABh17 zS}A(A9m_DB&pysw-`EIESFYp?%04>nv|b=F7lAHPB4?9US7pNMy~R(J^WW;09{t#M za)VSqwX2$JZ>B`?UMb3dyC$iao_8W;@>wrRE{AxHG2gptpU|u-`q)LC42AA*$XL>o ztR!^(1e~COe8=PVIC8Q1EG;aRRYU_)QWiLvWGu@(wDbUIH3FrA$*Z0EJ7pvHCdl5Y zJ9!u>0C=s%&R3?<9iPgFWCa3Z@z8CFr=0J}i0_<^>KsdGb z&sNtghw0@OStXeYGZVS)Tz9^Ec)bmPU0mWFwK>H^e0Axk`*2#z4{uv6Ahk|Q?$jlKN(gT&H~GoiZ|Y77P_OPSv!9qcaM%f=`r6_EL?ui>qrEU0S`qdVLTzE0CR=kUtj5R>H5E-L~g7stfN_U+EGZ8aT+7 z1O6IaWl_oeSy9(R)+T-V+_T;ElSs%26;W>_c~v+HMh)`QDcRB)s3&)OX9U@w;(3~w zzSp5pg#LTBtkDdJGaRzTQ(77}BK>6X*q9;N+~b7nc3es-LmYOlj3GF+|93PE2znU$ zGX-T3dXNM?Zi7_ZpLF`=CH}Ah)1f5{`0g6o4W~-WWoB!!nVR=8UPxO`1%C*?900_c zUIBRHj1gbWST7Y=LZo3iCGXGdhDK7~ARPN21$39ojK7sra`dftqW0-~#pH8po5`I$J$Ha z(Mx`91FRK9t|0%ZYf0)U&+e#)*5x#^~c0%y9Or@ zHGJhMA0NY;A7AOfjS*;d=9BXE2$k_;m>T3ezq#{J6=*Wzuuwg@#OSrh$2KX+uHi7U zzkQ$YC3G!?rlx913D3I>)>LXH($)q#KYX6``;_0@?NV%C&(9!K;wV!(Qb^y7pGQ|{ zUi)R%%>4R`+|OhLO1QB}XC^%}+jO^9HC10tx$@VmExilPi#La&3#tY)hG4Iq(!IL*YvchW;<0xpNBHIlI_KA5MH~J`pBY zAR{KBKK(x}lV6oYC@&xyLLJ%KFq!oRPjZPInlv8$JncTadnBpbob;Qh9{i!Lq?jcO znL*fYP`f|qEDkZfd$LPm-=Rp~wVlmK-{R4Pe34H@fw|#=h~2RB6?|BH^q`>~etP$~ zt;NNIlpp|Zr1yHn#(Pobn85TrPE%K_aw(|8jB1q&Ywwc28B;n88E@3nez0tKXyae!1_O8YhGkIS zlaiEJJT*sS?QSO%WE{o+`aYdWH>x~n^|7S(uLtUF6gGuUUdV$)$3Ossy(#V(6Rr&Xd&$P=ryg9I1esF|Oud zpIyv}TL!uiuzRUgx-JfGa!m7q9e$K~>eO91K{8(pg3B@nFq(g!@RWSDVBn}M(?_~U z4158!Qa9U;163TbtAK{LbC9Kmey@sAsO^71uI0(mQh4Oy!gz6h4s}VXOmSGv8fJf{ zYccL1H18ZMUp(e3$PsKE=UZEwRA6`tVVhaeyZ(&WO0T&7!mA?aCk{LghC5k{z%v~2 z%Xdt0E8x3^#_>`-!gzvw7 zo3Qzkj7vd1hvoUj=eL3yM-y6>p)B3u0xw%yc=*A)xizcv;^Y&c5|UDUa}~8)j*1@C z$IZPE4yp&1OhjaNZH$3-bGg&Wpsu}`$5Bs5mo=rJE~S;<(Ikc}u;P@@3wo;G;Tcl* zsGYwa1>qtw*}PvY;TkiT_)sgm9?`f|9OP8-F|=Dvog#r*Mz2X*qJ5diYyaz*L6bSD zT2jg4v3{Nw=u-CsW4NN*Z~ThCg(6-yO?4e2pqP&ebo;)vJJwQ;8odZ1<&teiUB=rA z#3-xZoKm#r`Zv4oCMX>0{~bJ&1;%e_$zKu8mHCUZo$-f{IaiY#^PO zYG$Z2Iq`^(Q!D!Dm0jX$J5|$cOVW7K+m3&^w36;+}r-vu16;o|#(%<6R6@|Q=6vX~EMD)EWZInHO3weaDwj5Mj3&%0>;QBqWYnMh8FJLnfr{p*34A zKg^>ZgST`;vtKtHKr3KR_% zRl4SPAYxY*9N)sL)pwNI_``4+u{=$nB~LqM_3N@HNa^cQNFEWU+TPNkj_iTHle)nG z{c;Y{jsl8R`Av-7E&!B)FquJWRM$`vKtBknXgIQEKMNEm@pgA$*@+drr!|8B?roJo z&8}DOqy3vNmK{&%YgMugGOl;StvcV>Xyq=4XxDikiCiW3bD&zv6676Tq~MP1S-OEQ z*P|Me!^72@JdGq@*IsUI8*5+IXz=?K4+&b*byh0q9hF=1_$j$^T)C#`QfO3#{~nDJ z(Joh$b$uhLkiUk(M6rntq#Vj5a{lPVZL|LJQt&n!YPD8l_W?3H2;-4^k+@%rSYhG) z=t%4^-;CjxzZpog54SQF+ETUB1QjFbu(uMV6M2?mrN7cuA( zpa}=EnT_ps0iG??S;W@V*1Al~aajOM)WFd8U?sFocyM3i zzn?#F+jW;I)!r{r+tjDbttO?mOjpR=i>h=+~kqxy9wFCd7C!OZfYW5d$MW^$50 zl>^j1Eqkn3GR}C-f1H&U1h&h!rNu8+^h-!SUcG6*a(N1w#Vea!iW@!er|lWTyfMn= z9WS14`9Q`s%)^dqv*DJM+Eo^)z8;_edB8!B*9v$gS44-q~52( zR^ZFM*)px#vJg_wfrS>AQkUCPqXTFYH>C>9dCcsfj$U>D{l-xTum9nIAPGn~Qr^U| z`vorjN_|ENfkTismXS zB(6AET_@mio+t2h7B%ckc2ZtjtHRuIo1^dkGic2#%H#D@$Ne#ySNl!-3CT$bx`Do3 z;sWpJ31nO2(qbDMP?ZhoHQ?TyFW|p(w3#cP>a*o1BA{UTwEr#h)Hyx2pK&}oja80q zin-E3<<7GimB^*2Tpu&IOaNP3*}$rv6~76X)M%i7w?CnReR#8{>lIRaE;3Y?yj>jx zdoghB`L(z|x*$b@S(#(a8vZW!H*_!H`!5`Sct2~X{r(JHvcZE%XVlj981G3@ zM~48Tq5bg^w@J#*=}}fUlE5kKj?W68*PI`vE$Ky3_YKF6lNE=d%RqJiu9cGSIpxt< zx$5}MEC%rl3&9Qr=9Nn&{yO(KQ~g)>vr50;PH|v>;*o7zuNR0o6NCeybj$<*I(F?> z3-pAJSNSrDm%|26tWet5hgv3|J_RB?KW;gAYbG)lEi<1E1E>Xl7~?~s>F2rJbo76Q zJAv>b>|gKSr3M9FH_)-$A?D z5fKqBkJpO>IV2Q+iL2fkhDur2(10jGFb8<% zB_E(;+f2h~SoLWTXW70N9oJN}``;`A`b#JWih-7#$>FnF5&#>}^*w}Z*?Ahza@gW`icqw{88k&?Asu?B*=LS~z2bRLUiBG3^8Q!YIr+~b z0b~zZrekS@0otmB|N4CBFUjXncEcvescg6E;jvpZ*3nkFe(YrmKA7Ue38>8N=c-gU-8%D8fRvE&| zFo?TEsc`?n@7mC>LcuyNnhp_-(!E_j{k;Pv0ZWwxQ5$%_RJ+aHL9@$nGUo$0K=3vo z&^dSVPciZRx<|3I(jMF}FC17I}SYB8J^G2s}p!>555Gwn1 z7a~4`XvcFw7@pVAQ1A;@((Q!4_B$FH6KDqD@COy>2_7X>WwkvihxXsiZ9LCa``{Jx zBc4H{q@%;Pu7;ZIj}5^99I%>fUkzm;!}q}dI(JJK@ZmWmAp0j1{#)WX22kky<&Dx3 z(4J9(`#Z@?^ncGVf5|mRlDyj=xxM6VN}kmG*14DxEw#29^bU-6)U^KZ^g{6g@KC{B zfy3PQTIOt!pces-crAZxKEl9-F-1cWvlfmimAzVV_Uj$D@Yt`%GGcx&31I+M*pf}; z{+Okr5Ld%QN7j*CbW^%sDMD`O!AM@m=TCOwoMt;kE%|!=H`eOGQnBr&-DyW^%N-;` zgJY)#iRC#YNHfQ}yOV&?gZOse5bXd$m%GR9A*o?i^5k^S`){?5kDDsm^`r88 z%0_3j&S0cPRTICFg^Gq;h246RdF_T`alFxGPj{n|=6k`4Lkk8~ zE4sHwqvfg!Ka}xknJ46V`|RHyV{;i z?_gav+2>2Dyc9lID4?w|;|A#-WmdOM`t78pLP-GdBw^&ujbyPm zhRqqCCAzdck#wNT`4xX0;C%11ky?yx*VTDc1}orE{pH+)!7Ute#Yc{tw25g2{`>%1 z9<}717)#E*%F=QAjcn%kpjUVEggfmAm(1xf{*OO*#_u9MMDZn64)})=0+R40N61BH&0G{b-B*_#R((32 zQLw#j`32`~BfkR|Z?{45zGU`B`_E}ZCp0f=k~a)H1oUD|g0WvsF=V{uAZ5p7EnCTY z;CNkU7@2-}G=+vF$I|nN(7rlmI`r|;X2W-DA@Oh}hl3%};&{YD`tCN-xd})$KFG84 z?MojNmYmQm%b;F1@x>%ryL!wQrU#zRvwf`fk+!a)J3y&L6pKQdH`wyGqzeir(7^h| z^XT|h>Y7-HK=zoyy)O{+YQJN~FV=VRqJSG%q_Mh-B1h@L3>Js`G~z-EaEH(eSdD4y z(Q-&QfB%m4<)l*sP0+s6scgGY!g=7;@UY&opKgvqak%<{mju(5b3^gd9EHs|TNM4w z;cSTlB*JrN*{Y8*$pMWfWM*=*fX&RivY~;^($-q_D)_6Rp2z_aA3;7ZJa$fi6fANm?jRPpjIZ<_lL*IzFAp<0+&`=oFiE^X(g=rD@NIhdWQuh;9|Q4!!ya znWDW`)5kWjiz_f0#?uxz^^K(+EPjZvZ5qzDj~QbSYm~pUsJ)!W9Cxd@X6Gx7+mxa& z;fxZ=8=s2V!rTu#_ft$J;Wqb{@0?|vH}X$m5}fjI`V)`KNt>y84;AgK=U4EbSIz_g z@aUA1i%V#6oyJiZWCB^E+_m+C`X&^1odVpn?^Q(R+^Aj73e_xEms0Q0rl7~GLN4{L zHe*Vr0DifT6<-AEClUoL08e#u88qE1>cd-%F)TVai{B8u*rJq|czYXDJ#U_k1xE6w zx5Sk$Y-)AfVdEuDq7G^2w@&XcbWU~H7rr#9(6|HimaNo@k{Q%>zjE4Bc`^)SZk)T5 z!J=>le@Xe1<7~Kq)psEUq5Y3#BJuoh@T?cImY=Sh(HJfd4Jt9l0Bc_*l3p#`5_(>S zn6Wpz=c2mWP7|@!1KOLHek?p%hb6!xu~1tS-;c}1ea!WE{?nH&p=+gJw<9XW1KagP zb;ZDYPPTt{wSaN*EgP-BBgp)wz~4}>#!;s3DAn(n@4U+X2%>g$QeZV7Y(uYUjKnyy z?O6Kprgo?y0DHUo>+r#T-j@YIsAe=+75xK_{11SQrL2p3*t)kMG$%IK_hSA)Nkbts zMp-$YhvwW}I zSmw#2hQcF?RSJjxpIqyA49f5Ff)QSFD3o7$xe@*ppAvI)l@q0y&-ix-gnm{b?0#!@ z^ncv)U%5?^Jv1T0T|o%b_>~xecIpUzA6^%QhH&poW7&FtauHb<{P_P~3H!^<_(KyL z{}+c}6QKybvzUTczejB$Lucsaudfxf%^%1Ok+A3f@Jq1p9~Gc0{~xygGOCWX=^93Z z1ShyV1PJaHoM6G--Q9x*cZWc5cXxM(V8Pwp-Ssqk-}`x!Z=7FQBfaRptgB|ts#)vk zT6JlPJwOQ~9LFBp=l_9R;FCrua8L8`&4pt0wdjE2yiI|>Z{GEW$S}Fz|E-0EB1BYw zqbG~oH}dMj1cQ>xa)|x}I#GPURpf%|?7~7|%L>^FVE=lV5fg!j4y1^(ydgGWtk|Q! z1`VJd0Cs*DK(+m!RP^r=3pN9PY;u~(UP|!)PXkH=;H$D`Hdh=GL?YM6fTX`|-WLGX zV~PcA>I0fuT?v<8xPR^fA|?v3Ir?2Cdf&H@NGQd5t^HpwfUdb)BGSLhEwgD5<^PEToN5-OJx~CFy{^w1 z#eapP|E@;^1PH!y0|Xast1B=rW$XT*e~qg{5SUEDr+aX^ctQamPY@HHKL^#50}MIg zsBW$t5U9?beo=dy$N!BXm>gK9^9L?UH3>u_$|i5I|GVxiPK^?Py zT|x}v2Bug!Yiuj452O~y!zQ&CNvPxaFhPM zkjg;Zx^A}JaFPVPT^c9^7=K?z0b&GQfjNp;LeSN}2SxZlaZ9gII5csO5ZlCGLUK`h zU@Fiv>*Es|K&&`{G6nY6Uk7Obi@2qf^G8(r&mR0SSgc@r+nd<1KTpbkb-|lW=D?w_ zk^HXl_hpG7;G9A0=F0%(Y5!?({@q&dxwmYDn>#uN3t12%#d|(nZ`O^NO!e>gc=PRrNy(rfdz(`O z|NzZJDIt6b>ROBKxPw2J^z3 z4ONeQ`g1GxH zBVRI^wG68L`PkaG6OJ?Jybs5k9VGnqF7j1ITs&0E{aTUS*|s0giTzru#kn$$S~Uyd z`x=;3g}w$ArWhlKJRm( z{bp)nVj+UZnXg)ni7dU14zCrWxw?o*pi~+c;C-bEGc!9~faqP|t@5v`s;b6pnsS$0 z2|pY-PUfo}?1kme2tJ4^wQ8eqr814e)u$b{QPJ%{0uS~RFsQn4?kv6iiQG4C z*W=|fy|}V++(oe4gG>MVV7iJtC~PJiuwOS4DYK!30x3@PBma|(zP+b9nBHMwaH+hW zD~X>fGcx!*?*cv9B@XU*4Syf%K%yRTpugOwzp6%Z->6KnCJ_ouIZA$44g+ArEnVrK zxB28v@VqBdMUG#yD;oOKb-mZ1jkjN; z(!LLQIr{w~!NS6_4vl;kW2pm)aKu5R<#E4V0O<1(r$p$(dh5cI;d=J<~&d~)(P%U zcsb~`+CC0eXnR~f{r^BV?;d2#yX-7(kuKnvfjw`L^NwHs<~=P@IQypx_h}9C8xTf+ zE`O_cz4=yIqZ*extK}wH-u6&*`Or(}kr}V$`YTc9BJyP~@~YqSsecs84`=|vS)vN& z-X$e<1_^+U4tA0I!ZCUuT*+(UoDjjm>5_TLjhSn~_>sDVx>y zxzhBH!r9HzT9GBjr6KI#1_|t*_)6XX&r^ z>7$a(cqULw9qso!$rsLCQiMb_G?L!&cq*dO(oPq(%DxraH}K#0+B75ZTF!tl(|pZC zSvmf)z#EUbf`9|K=wW77WYu=RQ=t=pH>c9%P>8|~kolYrK&iVQE6L6+;JdzK^cjHx zLQSJ~S@S;*6PZ{?8&o~&F(c)=5ttK|3s80PaEiDG-3dFf|E*Co$ zK4NBeh9wi9U_0zXI{=f{(%&Pzp*k7#4}W6w4i>06w(H4!X(z4ODERmfBpnBE-D@^~ z_tAJm5)Xi*xl*rSi+JmZB4QEpH;E?v^$l9^{}}nd)(n3lCO+mj7BE0dwBs{CwsuJ6 z|N7G;AzlI|TCWXOzZwMiw|cdJ*&4V^Dwurcriqx^>)yAe~k+6t^Gx(RQBMXqj|%D5`MrlgJtq17?8c` zK>i#JA)?#cV9S4RWc2}UT(WRX!T-GcF#-5P@WV3`Q(6Fo??WGW|AiFJ1V(| zEZ}RhJs+w59&8FQ*f134UO#|qg}Pls`SZ?%h_IkvD`mbOV0r=r*eI7a{j(pGKGE1) zP0un$?pC2#D#w>X1_zAA!}9@sEiKZ1jpe`tai9W&wELU^s12acYccqPwd5Oybzo7X z;&uBWmp3wX)M(G*b|aBXDlPXCVU~J`bG&nX!1wY|a&VsHH@#~8(U6l;(ollIgx1aA znD>m^02j#^Pb&Q1c6$?nKMY@9w06H-aQFDzy5AkOyQ{lN!dBPK27n`i zN~YyruYUT*^R!cY>Fs;)FLC=y0)aKS+9ZAKP4vE%W+5pidt@83#<=*@7W~oUqua9) zo)y;FnZUyP=b9!B4y?9*G{&k~b8Stxij{d=O2@9O5)7F)SER& z0=2$JC~cRcoUVW;@+~hbDWmbLoA!4W+3Gw?IORTw?k@qD> zd4-HM{&L~6`i!YlYyay&x6rh*V&P!R(TJu>iHr5L+3t#E5kvWNzH5zZ8;9;~=Zd77 z;Sa-Y^dk1hn!4kq;%`F>4(hwIG}86uH`Y6a{%0c*DtA`pyEM;H^W_tHh6Lk_XzJJZ z+XQ2H_C}^+azEmB;)ezi+8Jkffc8(d_@OZm!2Dt&a{dn!@o_<4u?}!E$*b0;y4soU z;ca5FT>MD2PD-rj{aoK2h=70v4h0S?0QNqHTzW>5Z5j1@Zhn5?@hXt+Y1&P5Ga%q~ zK3hW!KbfHV%~1`#HxmTPaqMd3i^n%GT^Vuu>(-%L`|xaLTCFyh&r|&ti#vKf6k+bY z(v;J|I%!+m^F>mr+8RJya=s|8T=2^3^mT6l#bjo+rwo3)?d_tlGe=W&(oTtl0o;OtYQHxpdFsc$B7$+o#iY@K%j@_zbhoX(I+IO{}&N%h!IlEFHMLu}m!;|JpBHX{5T;bbuqJ1fpNu zP|XtXRY;F|7Vs@r*O^S7P_o1)5&Beb@56Gm0VKKYjpoh#*N4OekP7SC3~eC^QiNOh6a zx5rz_`|InOmmeCQsO{6eWvA3tA@I+xNc>w^jY~+7w527QB<|M~XfT*Mpf0W=#Vc+zyGFs>FsqZEP*c_C41QMDJ~)+ry(Ky0K5uWXo5iko z9kS$U9s+eo8K_}+YPt?p|~sq8ROn;$_N*v-318z+Cu z8;Ngw&6z!5|29lHdNIvZU)A_JMdEf|gb zSdtqUsW z)+{aUlx#sfYL30Sf+qP9n$-2te(CTHlyrp+0QHL$9QcPnf;dOScj)ZiyyrWS!8}4&y zh{ogR_-{Q}!t{4^12^Tr9bZQ22D~qpbCuL9O7P7+Gl#Y|37~ZdZdpIKtHgh}q^eFW zsh+t#bov$jvJ`>(cu~Z{t1qH->P>dr%!pitkk@HGB;a4Z^a zMV`mpNobDl)Z4EA!F}%3ZI|KI>5GzTDOM?RQ=%+X?~PN>m8DR2C+qPihc*#^CHn!y zIG{v?ToPcv&3dmq%VPR0=Y6$7lY!J2dHA#YAv4Tqfgh9zF}N@p_{D)I+iEeF_A`uc zw%o&SR%P_hhFUz7S-jz`Y$ejp6Sl8CqTrL97MpZH%er&6e8GR0ZR2ak?B;mmjbm+n zdJK6*m^v4WO;laW<4H5n!RL<9SZ`M*&8^W#esUz?^vUOlQZ<*OlT2dL@)DHbVd~DE z$%4=SLAy~L6mrC^$?kR5<8q|{!;@Rbr7cRq_jt!+M?VRTivdstCj@>RMo%$m?=QC6 z?HC)nozI_S;?*@HwJf|VOzDJbl`NVw!XKu4vL2Mcdv;wk46q`xKbjC1F(2OkM@9Vl z%69yD_p5v#xx{1fhl8Kd3;{}p7B`dehx5;M6$%v=d3GU=`(BA#=N)NygHoy=lhync zAC~m0Qv@cyZ!0GmqSVTVGR_u1b?7Q4JN%cyAgGJigtAanV_*_#zELc8UH#y0(TTk) z`0Mpf;q{g=>Z)ip|C6!(Py6f9Z?uL9h98G+kH*v7-D+5P)k9~FnRlzMl+(4oPm@Yq z`2(rzCP?I(?*L`CaL$bL76}tty?+>0qUtVbwtD6Cs8AlIWx8r9S4vHqHFf6r7J^u)NZtNJ#8tc(j zr`h4CrerT~EK2(4J{*Av{}We-8^8Ob(Xn9=lrhqg#-ZU}I=q+p;!F&Ux^#5A9@^Ko z-s&$A312T63Fy{z=AI3RMPEC5mXyl>Atf+O;drx{0bXzFXLNlJ6^tkon=HhBMo^ zt!2EsE%)n1m^*QqK+Vo*2G>vD&d#}gxT(@puGjll%nn!1iM)t{3FWE@nH=?81wYP= zvZ1vCHK>&P3?JMFSOdDVX;Zd*xL z_$=RmyjSS*==6u1b+oINd?|z`mC+{_fD~0vM$TC$XAIO0nOJ3 zXm0fip=P$SiLWt_<0A3Gv5M3mUC(?gI3 zno3{iI$G0K53V}&!3GJOT|cHXEo;ZJmdQ>_Cr^E|h-s`*u`=FyT`4ZB$Gh5lF6FMv zY_GLWvtmg9(oM9p>E#G_`svmF^*`Y{&zT6>f6Dde-o)W- zV|0mWwekMNPlA}5tMzLGEkmnKv{v>8Gvx)7st6GmnuDu9+KqqfrjG^xD~% z6Wx^R(FJpg1jR>W_DAqg7R}CpYMxH>jG)rSjUzO#ZJZn8x)xMY(k_|JIlNJB&GjP% z<>H->s#>krksTKaRl+oc9m0O-d>dpEUeNR)WF6oo!CohMg4`?+L%#0V<4a)asMbpH-8G3~5-`btAvPtL3XX9YVpJ=t*ZOgyX{^5Zv`i^9kVRz$bT0%!OI_U>{--WCiy^LGz}%BI!3!U>%8wU_PUg+()<~wr%#a3_vFQo z(@sDFZYOdUn{*U+mPfg*PkaSwpAH$p^7+g_4^d7zWbtd0NYpK&!iDn zK2c#ovQFI;Bv_kPN8YDA9!N1Ha^4xt5?5L0?CYb@*nABY(wch_%J}#JtM)7Xd-D#L z%T;=WrTT3r%V;(??Regs;d<;-DBCdCE%bgy^1PH>uI*>dvp?hZORY;of2}QHI6)yH zWmY5EPvazT<-pd_AP59Gy0}YjDxGqyx4kzdM(c&UgFlYA+Ok=i*raX~4T-H{G3^vi zzg2>*kAUp~ht+)PHgq?vrM!3pbuUM6C)Pbf!vi^bWeeJ zyv~GD;;eP@hcDxv_%-@tLIcX=*o+VgXuFiec-h_{wsInQRKol>y;G zY3mN^F7GyM*yPcMdRgJVjEfmTxSxE(`iPAyGQ^I)n`iosh2H0mbD<0~U}cL>Qv0j@ zv~8{!1r^dg2KGzW9y^QLxP1SGslQ&9smQ3tA+vc#Evc^spJp+Sq1DW0f21<2#hlJ` zn2HNvW)j|^=z!kvW#qO)UqOJFX`3=c&oR&z;VBM?Ex| zYX>`#Yegl`2+!us@?5|YEw(Vj)jc93ZZM6BG$kgScH^j!ej;g3KQ?;e9ZSfORs)7c zGf_#@Nb{V+-19J&`9;jZp=M)yn-m^Kv&kX4pXR5j__0_>Xlzy%ac)D-`Qi$rW-?il z1N)D-Jx%pOm|T^x>Vkr~v&1sZ)wFEvdBbph3u#E2wz|yUZlQE_z5#K={Y7z1P*EEH zOys{aM4jL@sO@Xp9pEe%X=c9VZ-(i&_95CbGri(>>g)FWxEI&-K$c0_4FhtTJ3_g^M z(mWQVPdwMld`X!2wpkJ#AE2+&o8F1zz?aOiM^S1z--ki5V5@<8+-R^+ibrlL2(dW> zMR_?vh4gk$4%BKdWKtL>Jr^9=h{<^VyF5u@?`fh)e_TKtD%|y#x`)Lc_}gCkY+>J8 zLh7x%AJewPz^@nLLoqU?SX66d(=Jp}wICUE^g0HuiU0HbV=}-~Ig%KFSP}sr>SQ*} z|66($5br!tsye=BQ6yQ0Cr36JR<^{m%py?Z!6KVuKFAif8U%q0V%Z#Op%HsE$g2zN z;Ju#|L3qqK+r+6Ko6I=PG~%c{p3@et0^L$IY_+mk&M>^6W(-gJQlEJ+#-9~~aF`0> zb}XaS#orP9>mw67a+OLri>-RW0rTD)(_h5&<~kF+rcn?(AE~Y2z)o>#z75X1sTts( zA+A8+Gah!(9q#buCI$MU5lb%9n<0nB&+g1lzMiGEF4$}00f`IO_}LVjR`|$JzSsH8 zYshhJtrzh#K1n2;}pwIj;}wzcb8BMS`1rS1^9xW^%-T3y*lVA&V;L{n{~WpJag ziCPf71`s{Fu^)H7S%_I>cdx_SE{pNku zz($}Hd?yIA;RK|F^m>Aj8h}#c^@D?jhtB;tWM;=qI9KKT5yjWz}<7X=mUtD^HI20zR>034Fi{ zFa!4TGlS$Lpcse5HaniDgq)lRw45)bVNfeGxh?O_)m2r40agUh-Uy_-@T7iQ!O=+|OLj zz=`?n%jZHg(+A$I>}+%Q5JIB^wE5fVW*^r!?KJX}KKp6Dw(sU@H0+AYW;K=)wsY_s zulMG6`xl|o^LSz^)6A*Rhn61Yy`PFIlUY@WLq-Am&uQE$1WfYz$#g#PrTwP*%VuR2 z3)~OU&xhshFxKG~_xg|f`RRSnx2p)&*49z^9SIEj6?(le```F>(_D72zTa=hvpb#O z-kh#R!sD>&%vTv^48x-0Rx*Hrf)MM27#d~}Tu$u*(bl||PHj4_QVO&RtM}8>_a&gf zKvYt)x6X3$Y$KFT3@p#kd}M(|$P0{$Rj5DWaM(TOb?gg*?$h0Qh7+wsM;uhbqji6r zO05(1a1#r-w7!rRr+^Rym!ttGXgOqED*?=45JsY^U#>p4OcNC}cc4F1rddy}1b?J< zUGS7EF;^QUwun7O=VT@aR>a7SY+5@gZ4vwc#ZZ?F7V#sZN z>c8Y@CG}{OK;whPo_2y`@CK1(nM6e~f|9e92wDJ*4Kd<^i?;Q3OMj29x}CPFrM=(M z9m^I$Xk6-Wh6bhKJ-fINm@WGzhb>CBa>+Dv+fj1;@opI%N~SL!L(3WDwC%Bs z8J7z<9}|cY`a^?*KeV8MV^vE7H@&4_P*n88)|}cgxI|{yEF=N1czk*RjfKrzmrG`1 zVxj~OHURu1E`q;e@JY#U-f<#Gfk+dNb3 zYKro{&U-Tt0-j^W<{{zm7v`X2{i{ z!x~cBp|R}eNg=8oi2MJ*&qKDHf>3?HHg}yhVSd9h7oCsK(4clI{88)bygg3{b zBj^Q6KH;>0BFzOdctMPh-L<^DT;T8Mv^SP{2Lzb(<}=hwfWF5LOSx6p(b4DSG(0pk zhQZ3J~v9ZN(J0v9>z;|`DAHn1P5Hy0vy{s6N8}h}tXT)`qam>P9lW?28PB}&X zv8#2|6&&(6PEXf+oy$7ki!8=-*JNpe#&Xa7O*Vm}xK3G5pVfb{Q^q7zkjRdxgoIyY zWTb|Nkg36G<8B(+btaCX*cTj3%%HO~o2%1RZEOOb$0MdEAV87SGKc+%x~Al8Alls- zghXPXw%pYvV6oh!Xf&8vvmU2*@KkSEXjY|FC+rmtRmYmmg%21h>Lk8zq=U`y9VNNu z^i-~B5d@2o)@>@02~kjY+wXYGo0W>nzYceXP|RiufKxlycAb?#x}ttxg)d(e*EgM;8G$ zNiIrB3{Tt}1*k|`(!)zlP0d~R;=&j>t1z7;>*?>;KbR_?q$&xK6fZL7m8deh2Em3 z#5V!~m!0sMZ1dgwU#;r_I63{DUXPK(Ml}tG*|ESk3fBmBExcCpM{sU;*gmA%FODJ?{Q<%yz+jlpiK@&KivTB0G?)L?7xxub*)(n}1;cf)! z#{+$P|G}?nd>y~s8iKgq35I*XXsLHIOjUD6oGu0^lT`K2vpe5j2s`^=7jC?^GHkro zDEpiSZ0?^{9R2z=5CDS}qhNDkV=fn9X2RqiWw4!Zli%+? z!I!3|r!R$V2W9wP1iy6pLY@Oh)F)fFjKti^=u&geKlGD)7DG zVrH9VA#k9)=eb(--!F;y4`SDfa^xa;=gIsC{8>#Bg-ZknyZSLp5ECAb;JsSO*W3-Z zt)O})W68&uoiRw1b@HiS6pO{;!K7~02Nfu)kjioz^O!@72;Q{fe&#Ei-v{<2+A|F0$rT7YI2)i)spN zJ%ZW5R^hTtOAww=;QyIJ)TV0!NUFY?DX<iGP*FdBZbS$BqNGTeq*17Fqxc%dla!l*eV6!DU+BWdW**WbcIdg63X4)f3cB;M zSV^jMj0an71>0#Bn?@_-?>xA%w-=_>deAJZq#T#kkRw37c?fZP)803Xc53^(Z6`T&V06_O!(Gcxs#?Q;$?*u^W%qsFjk0Xg~>SaSU3yD z<42uFA_7iRo(M}9Wo*Q!O}hh3L{TDy;qRpUW;cg)dhYzoa_(@y?DN*Qf5X7D9uvYC>R8#hD!*(zJEW5$;3aqgN#MP*{%Tm$Q1(=H8Nmc z75VZ6bc!~))&mpx;tT+9AZ`P^g3MYE=Sc%tVPPSo4S>bk1|a;TlHrH;8eYI4hQ^8~ zYwj9#%JBF^sKR0|xL=Z|WFE0M2O(U(4!mnfoF=!RqMQoepAdT$$;6G4AxPD_# zNrnGQmMJPly-f3i?6(h()$&Ni#3bG-FIZR1iad9U4e4pWVy5*{ zdyov=zrEY;{9-OrIisjPsV*SkquKPLGKpJR_V0Q7kFpW(nDRzBj?Xy`PvJ%~8!@H0 z@%+M{_prH8m!n%yi@U?Vk{}5I4qt}>dz-#JRHqr zt4!=1+hre#|34=OtU--$2T&teVZSTo;>*Vdjk@1bQ6Ymb&vR+NJE}WZp<5-%*|h#f zRa7v7rsA=W58BL^Hj%ZM*S!x|rU%kIU<2$v+C#+*IYidrA@cN=_#Ynpb*G8#uuK|a z2^L7RFoS;J`sn_;Uc@c@80t0it+Tf<4%Ro*w%Ztf+GzFu;jlcn|6Q)&xCl|}m7JrN zDe8B?(;F(#i?G{gBnmUw{u6J=qdP=2G?t|2sfQY`IWNqN~BD59!Td8Sf54>HkYp(F?l^rO4UApT5d*? z#hO1uaL)aj|8DoCo-YYAi>Z=Ukd*pCO*SGz@e`+ffK_W@`ZFM<|B_SZzuiKsQjwwb zL1C~_%v5?HBZG~a`DR4{=b>`~E4M|5X3BTN?=TQ&G=%{sY=4FTL_eRd&HRUaDFDoNKVbo~kqy<&5&)U#VSWE2!Tq z@l5xIl7S>KnLxa6Eage{|9Y~XV7FH6%4qhjAM$_3H3mG*%*QkM<%cgHiY^gXOG72f7mk1L~TlnP?^j$nAHMDtCMq3tt zfqnL(r!~mTA;5{XR!n!R&Ad(bd};i}x^hwML3jPbYv$M9RfX;T-2`uGZM6kTz4RY%j%!;GKS4eMv8c`Rx7m4i5PW>VG~%*H^MYBD z0z_ZamWGI)p(`eYWQ527y^}!zDc@z}p?8dn3J0gal3xgNoVO{@6?g;gE{;8k&6$9W z8sdg=kABpuwWtO&*z8kupfizg74MQ~zOz6$x1M>+m=7eS;_f~RSZEqlzh9y5#(o`n z>fV`vDc1fzxTX8Um8tzJ2A!701Qfq8%z{+v=jjXv0qY*Z*&(X(mMZ?=K|qHw<|6H^ z0XU>1eOwJaint>&pT`Qso-$1@_=#>li4rqPy?6+=ecK=L=Vi=<2KXbrD$>vClPVIP z28>;A6=(4i1Dy&y|*xA`J!=O;l z?y7(D_?FXgL#zWh-HQe#qazqFR6h%GC~UHto11A6;`@#CKp&d%Q9^62Y*%99HusdY z{Q`aq3x6+|GwVZ1tip?~7Cx||Ztjf1zulRd8hYedeonl-VvDx#gzq-$CpM^ZzK{?i zt)l)|F8I!cOd+K9a^v`*xJJ6RP)&W$!s%*^I{}}I7Cgy`F)9f+GA!jq<}{VAi%!it zvo;PW@v}4k{iz7Z6avj0*-T7K#7^!hFZk(MiQlz8ouIlfdu3fVeIx%2a;-iSO})DS zAKyH6FK>4-gB3l>&vV39R)#LF=9ds~RY1}@y3X(&k(ft>A4}8)e=jk!FEAZLZ|@_c z=rrxMzRgWn%^B*jR9d)C_O?l1WL_OTkKVsopJYNlVc)m(3$0=hs%b9o!yXCO#Q@12 z(1O@-VH<(x?p?NUcvW!a1tCCJnIyb}l(I;GO}E4Y*;G%S(KOvGGAdT=m zhb3Z9nmd;a=S&t@AFX1>o+>+hC-(YNwI zrzkBDVij%C4a?Wqp)ADH`kTLJ%oi3W)3UQkT(1vE>u186&A|=@C=pJ*8@NTH`W1z< zMrVhAj;n4iucXx&QKM&{Bn8Jd*o5Jf3D7ME_PDts$L{x)F4k)|k$<@Y7c{pDEFRe5 zFXa28&#Jqgb3axZXIkZ(MQ{`1>Uq_whFR!gSw*4D_;!x4Kgzg&hkW5URdh&3^v|sh zV4ll+`DKPnN9|J`pD&s7sf?Fri1%_cl2`A1qjz9%5VV(**qYltX?t(aq(r^`!~Xuh zOiVHk25>KnAHZ7G{4zbR;m0~L=9B~rJ(&Y3Yvo#aom%bu%Jr@Md22B%&~kI|_}2>? zD?uYD@qQjP>HGNvJfbDZCzA6m-Ye~0kZ3_D4as^RHe!uF?B_TF<{D~aw zKE0?Te)J(Z;MJxTXw_$TePY+}%MYNQMq{tobO#?Li%$}L3SUy03(7F;E`M|QA$+~R zQiFaY+Nv_1bnyBkWs+*y-WQYevpfa`aa7ljUKA^R8wp?J^O9q20~A05!^7b3<#H_G zP%k?g-gwZAWLR3@K6A7nA5u)3?H5%^^hpGaqjxeEX^oeGsa>rcIx>V5^E^oW6=D+O{hq-OtxB0|qICbyLTG-a zIN56yQj>d0RH*hoSyy%d81RDLgJv(@A#^H+iCF1YH{i=Stbx6K$aZV}RO?#!WMu~0 zAAtwvf@uKdD{W%(>5az4`aLl9T*385I3&OA^wE8#(J^hU(YC77At@pXif{djYq2~8 zVrwl_NKh!Bc1g`o)NLXnQGbi*5c^GA_c~A*8O$J0n0jfu=aPAJ-SLTg%n5Nfa&5}A zyL8%I^OUuHCgjOoIH&$L{M<|e*+}^KVQXtTe!P{U zw4DQ?V*G8Hu#5B3&B1`_k3`QlvqlExy2ghcDW1v|$GGnq?Cu6b?R5hf zqz0hk_H4};VPjl`Kqz5=o!{JC8_-|fJA}^6c)Z;2&NbTS!_8a+Z0w*jTHS?TaZXN- zi^-A?biz+QQr3QO{rMeGR0}N#7)SABYd&^XjM$lz#wx^OjL{NPCS9T`81vykf1G$C z=XEvIEo)&LFS_skDQmU&U0o_cwOI(CZ>~w_nWAeL2p+7372DtoC7mWCr)W2KPXoPPzQNcQu2;KR;^Nj%M9IDu@ zX(L}&nLX_)3#UTNz%lO__Mem8<*dD!`_MC763s;P9m^4~7>mm9#%+dyLzO=4MMfcC&R_l24SCr`f|$ewCL$d& zhbC-}Xu{98S-+gCf-(o0X+=>mkYqSD3WCq0f4Khw;{sKaZ?Za<8cyk6N?d>n6pWqoL*};)ZfNaSZ6QGR?%+Qc{YBMD zO;Fjvx70FpMBl{f)Rf*ULd-O_7p9Vf_X%YvJ;nA!kmrX!Nsn;$dEkP!|B2>cr9i2G z32R2M1Yd@zM9uND%)08&5dB0UmCrL@a$r9LJ*u5!uhW9>^}V~UGtZJ!sN-!(10FYy zR^Wqz62k7D9282LpxX&J{Ii%01m8Vu;zk_t1~EB!wsS&&35x`uQo$q3O{~eas8dsg zdTHAcT~Pj5+f?w6Xz z3A-Da)B52bT{b-sg5^6dJD*i7niIs2H>?pM!!TOnhij3*8{4Dq&SAR&9!IMgQd7fh zYLItYlE&?(_T1q7?#*DPy?ID(rnao>w?vMs(RY7ns4rlt zQ}S~M%OI;lADqT@R>h`F0>fQVtq7WaW=w0*^McmAJriAdjQWN$u2&Sn;MFz$eG1Ve z!2r-rJ2>Usn=eOIBX_%VI-4*tN0SSx3j;WrrT%iRKgRa}!e^pE$3kZ;J^L0YGb;SW zib1PEk4fx$wKuL~CjERL5QeBAg7bdM!ZPz)@5jp+X`W8c*GFwrnT#tF6f%i-hByqy z6iW?=U{jT%NNk?fJtG7dmxzSYD2&K^Y^~#75vC`vu+6j|?ZP^r2Fw zp=3xx6rG5bYW^5qwBQoxx7Xu~l}6*Ds=V%T*jDjDrwP9=5oyApKGeQ^AFL$#374Wf z*Pz>|LHT~TD|HrJM@10gLury)#!PAKz(#c;$d7rSzT%tMHFk`Hm@!dhQ;VgMHBp|?9>d;F?ym0;K zy|~zMBf2Wi%!GNYaN_9Tp^|!VOQ2`4;PQU^Jk&vBqGJc+G5s1N6jV2*pr!2-r)%|_ zE>;#tV1UUG1qqbYywak}iyOK)Kp~vbNZ?b4vRUhS%hoT5@x8V?sF&{^Ch#RgIg}w~ z>i*onq2498tI5TL*ob$%`COv1jCNhUlO{6n!d5_#=;wwJ@=pJkS-~R*F*Ol9N}y}z zP zhb8EQcNpw~SvEMdUR%so`}VE2b3n)9dx3fE7+tnW0eosUJA$kJ7yZ+3;fSw~tFJlZ zp>V{zqp4uqD)}`gQc_YG%%)q!dq);&I8W8&H{uqCjLIf%P#3jZXxVHZ_ExWj!7f^e zNW48rz@j}?HS8C6uw+SfB1XLk4cQ;p#s$y05vxFWfBx>dRqgu82d;Z5P9cb| z7_qFe#wk@&8M5s4yj?AbtZVsI{V8F_i!X4rmEUoEu0S?HH9BZM=A?(l7gDDXs;ORK zv1PQF>50swN6g`M($H8YpK4U_(Dwa_ zP5%L2d#QtcK-UiSABB8|jG?cCD2iE%M@lE{kv3N0nMLG@wIS z@blwsw$tf~(E)tMDbE`MQuzk~HQMVJCjogFCF7Z{{%I^>a1oJXgx+H8kdtj@MDLAy z8?&Bv**jEj@9a9PpaePc?)-B2PB((oV@Rbbw+=!MEix}p}1!R2^V5-=D%A>yOb(4>+4>3FwE zMm9eSk;@ePsTom@wCcy$(liV57=sJW7;dz!7Z>bXtGj(wzWyC&SMv{Rz^_>yP)>!* z&bd{j7Yv}U$bT4n(F`SpIN2hVso!fS-0RbVKjrDumPu1lvwJt&{zPolA3(^W$k!ijbC$Kn_8y+C0&z zVleqQsvKg7)Rc7@Vq;shjZZ|G+H+BMUM2g&ws884*zUnNSNbCN>_&6S^!ydp1L*y^ zdOk>1K9C>)2*BSjvtR8`_WQ6HO~2*j$=|T5R1zG1*fack;QC2+_rL(C_d8=G)Y zlj2dClu(C^JSXP#%Q`gl9c#7F*=*qu<*$ zGXa0gkUtGtGtBwKXs&?DhMgcJB&MD&E(-r)91lU@ zmPM2JrHH_Tz0G`#&xWjc1z*qaPb%#)1N-5Mwl8y60tG?P8$L@_@R*=TQFM+Bas7EP zY__(!Dk3jSdgnQ_;%-bz?w<)xskH-sHo5+6hlup2>1a9U*|<^kt1!=7NywzQA(u@0 znBFmAhsk&&^NvDVTDtqfH`%%kOFmB`x*w>%sC~$go8XgCpiN)G={Kj~R3x^Y@O3mb z;bZ;~&jlS1qx&?mtgoDkaxO-RJ0>l$O~n1ZiI1+J33+=NLT6@zB>}A!ra$typG~_& zBrK?LEglR=#CbJETulFrXmEc3H3%-fx?;c`9_ecyGSa^(P;lVT@ZJ~J0)L!#7{^C_ z{7E>YA{|r0TXEM$xTn|_M>NeiPJ1Au@%z19iAp6XAfWC6Jp9(~(glk#JV0*JV}QV< z096MXZ$$)*0F~h8zN%_}Jz|&mu5nLI5^2(qrAe(hYsaV+_+>4_Uq47^B7(2$Q9y~C zI8;qhkq88kRHF5EBllCtsO6yLisAYX{FWZB>+igf^J2Ekq2;@nUz!dT#EfKrW+~vY zP8Boriy0&+u^o`Ry2)N%Uz^mP`WX;DpbLWu^%TqWxY`Ig6W2%=2x)8P{r}o}%do1} zu5B1_Ns5AWcZW0xNOzZ%lypls(kV!{AWBOk-5@Cqg0!@xASKOvP4|B8t>5waYaK4; znpciI$2fBft;(*ueejudOTwQjuK1)n)qfC^eem9w{Vh(9-SJm7BFTPvjaNL@G<7BU ziroQRj!J{;Q!D8S#*gS;3nATncDq2}rU6fKHtr4x$&1iE#0b#9 zS&qonb6;@%oXql!Ulr@eY!*r?FJVS_BcB*$;CO5kEsA_fx#;Aw3j>$; zZU4rOnfyd+_-(u6@uuqUjC~pci+AO9d~~}IXXQ&R_}4f;IwRBE#Y-$7P8{ZH3#|uV z;^v~jiVlbfndh)^cg57|2|r2_De5`|$(MwuCH!*0?3T>UC%ML+GT*}-5JRmnF?nbV zr7tTF@@bx46x*6hpv)9=G_Pl$|O-|fA z`w!tQPC68wg}OGb#E2ga;#tv19&{7TuH$+2B9uypU{ChFq6_2TAyW>2;tO z_U>%B!wLPCBo?Ra-5CE~3>Ico)tm*)k8WXr4QM-LvjA8A(G?b3xAe~Q2^pkJ(C|9Z z@a4IgM}&d^2zh=2T?SZ!=pr*hl_nwt%t0c^8D;d=T~?OTJ31z2xhX*Hh4XWSOwo4I zmv*j*T0cG#AY@j)c}I{`pN_&M=O2X(RF+-NNv101uUy^v&MmnSCI&)8nltRj`%08r zCE_ZQti2vVObvH>LIshMWSq6?g3YLnnjbtaN-_S0=$OJV)&Fhng2-);?={*cWtDS% zzlfXX&$l_`8>)NjlqB2umAlUuzp&R2S#U9SagfsKwyLLnb7`qfHk^|eA&IW`H)Qvm zCJ)N3NF;6+)Za}k*gIs6t@3elUvJtQ0Y;TNVsVK(6gcQMc)9fFVsBl2 ze-gK0du}acrxORL7MTj>yqEgy_Ol^*hET9#v-r*?{|iP+^C*P%;OrH$ME|7n!SZvW z@vI-mT9GsHsj2jwtWkvAs53J&93$QZOg*R|*ECuLqqpR`tC~mNK38kEx*wvHiT*?H zVFfMky>}JdMK+U-=@}=^BTot>q@|y6Q)yzf&z_QD|a0*?2f4J;fKKZllg@t~c)_00|ws=|Jx;?idd)ky*{9@xh zwRdnA^?dE}X5CG#r}ifDsmjV6e-E#>Jsc3}(%<>mJ92_RInq;0Y zc3Qvc^I&I66J|rW8WGyl{L#WdL)>5DsDY+x48DZ zGs&l{?E5s1@`(Z8yhQSyttQqiL9N70(WIOV*0?~! zX<%3fcfRa0caqZZ!2#Qt69SzUMX}Z0HzBWw6?u!sN`p@6cLqSG5j0FHWX2>^%37q* zdj#X6EzZ1<&B_7)x#zG8OL+whX$bYPqqN)zD_u!xUL6v7xj^?=pP)WIOUlxZmEm1cnuaO$&BM>)iYIGmVqseQvG90>r0_XC0SvfHAvUq1RcXZ1P=-($jQEz)Cf zM@z`zln~eo@EAESQwcY{*k^!7#St6 z!m?v@zqZ%pkfJ3xVu@WzEoqDK**Bt|E$7UH$N%WzwPGqnIOhTCy-%tit!P=K!8coCk1)=PY27NO4UH` z2arsgz^ZpxM(Bz+9Cg3r$#A_&cFX2V#~g=}>JLYRsQ?!z34#g)n5+iP(-&yxsI*1} zu;X7h_E|x91Flc#`!1dJsrGeb`9>$uj=o@qzpuD94iGohqvnxBcJ}{4;pWb(J1r7Z zV-p$F>*14@^7=fzKO9H&;FyNlk?B31RnTcE#tFtrKPJU!*zVC+398eY-X-QhCLWz~ zyuN)q+NHJaNGZ*#Y8_g`X;0X+|ET9~g9WXT6%539fYEHW5z^c&Sl`f~lO9>}0E-Qy zKA2Jz|24Bu*joeld01LT4e|$MT{JlWDE4Rh4HyKx%Bry^n5TLN9mkbIhx-coPXud8 zQ;sv3t7g|JZC)PPlnuzsQ&5t(i!xL41}m~{H&-4oxjv`Cid2D&o+^`IQ&Ztqe`_(q!!XAFTd2RERmn|0x0H^!0+1 zuuSP>)LZh}Wc)e{1Qwd5s9ugb6XhlPt`X8`kDP(`ocE0ywbbiwq@q1j{+F=-Jv=Uv z_773W=$j)2C5d2HOI%j8?TX2lme?Q4dKVvz|D=4wuO8~`An`3=akKmMPI0QRX8a$& zkgNdExVneC(-ro%5*5q+>+f`s;gRaSJUZukk;HvKu#zI7(|Vdb0CW^W1y&FqpqKRm zk}5d}ac+tDDE6QEWb*(_ap6!<41YKn13xmC`)?4k5rR2IY(hd1zyL3UW2xQj!Olg9 z&f2ug@$tA@>>uzR5C#vy!xgzR6;%2FP$-=+B>uZ@Xc{A6eqL`LfKXF8%uoT*X{31A z{pC1m(&u*q(TCU{{0m%2hbkBH&mBtBAb7ljkq$Ff1t&rVk6q{a(f2*uFM{*KQDnlTfGt-Ta5Ve`St#**mA!i*^~w;$4XVM&lmJ-2OxWUL6TsKE_#t>)DYSFJ zfYpcS?(VLTB}iapWyR-xT4DwJh)tVK1?2-3(z#GfdS7>Mj^+HEP!@jvW4-~De3?r9 z-?7<^2g|YRH0wF~`+w%hE9~ZY&LvXk2cUGAp7&l2KBxIT(0(fdRPfC8kb7chiY)>0 z(uU!M$S@v0L_qa&2gD4^02wG?Y+~ZL)DF*S-TvM#0**!91He4ljk}P~ zE-vI&JHYs(?H3wn#@RfX!DwA51GYaqX=rM?zek+s#@2id>GhC1Y*?3DTzSbxd zwg6fbm;FT&$d3Ve#+a2AjbT3)JZIuvm8osMsY3Bx)!c@+y5NHf8WL0%Gui=bZf-sp(fu}gRuqx(*ApTq>?H<#9S*GKd!%0s6jUNhazhT1zJ~Ak zSWq$)S0Ix2XAwk2htx#3C4~@S62A#vrB%+>vy6#lS9}I%eKPHbHcM^t{FsIenU3`X zOllAfBZdY7D^=Lusnt6Y1mczTWa;m)Po&_3f&hxcko5Jt8JNV`Preh8d#t5wOAh=} zQzaAX(BeInXX7+)NmeY?^l69b%8Hbrt#`us-?ZD5x8w(hgt&UN%~N2p@xuSavHiiS z-TK=9u{N4AOw!a-C13e%SvcMJ=Zfc_66@>v)|Wbh1{Xe~TmgvB=fJyY*vqcj;ml~C z`xEF&eI!bRuqqG`%o-wfui9k3eLZ-f{!o3z`t`bJG+#;~?A&G!K+q@AKWNKp*o>Tq zbu(C5aocf4G|cjd)wacAraV(alh82;+*Hn6ON^N4xfai%4sWHLWGoeWo+g)cR>#dM zqgs5u{y0fDr|^1GZWg|=-o8j>oGUj$s=v6fh-pAE5yZ*JaOs|9*Qw=GNB+E^v+Rw_ z5b?dVIpGeUtPNlkeK)pFV{J;-rHYlAO)Z5)@Oq1wT~0P!LnFSZt*S+vsgPQ_m?&Fw zMQz-=OkI*my7*q^&-+-G-0(LwbJnIl0Sw5@hOK%i=;+)b^vNAC=1Bj?_O>k6{YnWqc$6bfcsLRu$o%*%nzRv zdZJ+_J8+rh>T*tfBJea`Hqq6kak@ID)s}IKu2IOI5!P+epH$Yxj7+rTU_9%c-kEu|4vR?&9<-nFiH< z0=*+fXm>irMZ(GgPI~v&%997Tmqh{Vh*B&&Kdkek0>YMavFs0VMs_9HgC|Q1#nJ>- zDMoltSGIYTEbmI>`9#QBYox^_YR8#T?5dtU&M?>~d}7&rqY`t>@usoy_QXjT;OCa# zOo#|ucB!7aw`E^=kWRhwO=?4BT`w@pf4|zR{JRLj`0Qtfn@z7#eY$(9$N&m}_^y}K z=b@lDD8R5fO;v%$NX>-vwYUa-C40y70-we7 zj29%YP8*Er?V-6N312$d6!DU<#3>+WOr_YtpqAgz%(k!Wp{@vG zLT7a zM*?MdpN`F8N#tLpM^8`RUZ|P_wQ2p_9tC7I*&+xlyb)qS2y@(GL%_ko@cK<&oQ7#E{BWCM&0@@{g$T4y zq7b*Cw5%}uNZ0SMGJVZBqm+;u6d!Ml9g$ttEoqFkFa3bHefi7Ql0@y$`!&R9pmfEk zjLxb(!B%%P`{?ikT}2|D4N?!3Rc>q?oSYO>bK*H;O8{0I%Rnt1g&&}0=!+8)B8Ay4 zpv2v@SyWZ^@aNB;n_tVx-1Zk)S|mVuk4Px#?~DZ%JX8blFlLl0R!oODO713E@o+Og z;0d}7CJ)-z>vXlqAppoAu5~IeHaTJ-B@vVkdV^_v=P7a&&V8(Z8V(e?lVn~j;F1rU zW@q>HS<-Qsg@p&3*J3F8R&k3LJ&nKY?XTAsqaNRO_2{4XeWMuXYmC8dz5gCL z43%mk(AL6(o&E)%30p}Y=lw-wWsC;)l}UW8tl%eiLv&}{<7{y{X(u=Br~};7L|y@F z`JH5HeOwW=zh5MDAYfp!R5plL;tRMj$H&JztaPD(GRGi$pZ>nlx)+AwTtNVr)Cp`J zGpi5Js)exo;n69wK%A9Q;tVQLnRNwPYPXDn*jKiSjYz-Tl#rtFv|GmXp8r+*Flz&PvR=qfvoRc>3+4m zw-=q7ichdR9vRyH0f53r5fSnVV#KMH{Y~n!HrGFJlYPNekC^C{mxvXSKF0oWfnHO% z&}#BJ{cBS#>EwDIJuBV}1#xEgc+iDZ&}`{5cMW|8)0Eg?^pC7xj+1=5!*Y^Mo(KRoj}3sQ zFb{%=B;~MQpib>~&AmSgmkgK(S9pkWdIsEG!W`uFNf$kexUa=Jrh%cC}F>Rfc@aY{QNz{5KJnm_KtT)w>#e|O~SZH z-|#siJZe5b04_RX3L6){NZEgJ6XsAj3yX@>qKZe7;9wda4dnpeK6@3pzP{dQJXcmm zR<;A!)<41MAVhsTFu8L@pC7LESN-@>q)t+hSXPiJ;JyNsXb)A4U?6ZF?;+hMZU^3R z7h>@Jw z*^?7ONrS8n!S-O9SbVZJ3=z>7bh{q6bojS-OZ{%ufG*!d`=0-u7VUq1?h4Z1-aKTd zC}eAu8;qkFEi}4vn5_W}Gi4B$5MU&BaCc8}CG$Owi&8a0ecF0^;|&ELARNqHd1@*| zPjcklAH%XFd2Yybo%S~XW8JIgdy;xn!z&}G>b z6&Ms06d*QXTf^M?JEk>?4KL>>|II9MeI3ML6G)X6YrgY?Da|T_D9D~g-@{oE@WIZ% zC*}7k8J6Im~IPkmu z<+nLoWApK=!yV{$h}fX04B~-nw6!NOV^G#|Iy)7)bPATSIsmS~!}bnWYwk5{(R=?% z+UlGCJJe|%UF=z87X3A#Sj=2 zWacncWAnAMx3^d0z0Q4bib4M+fTQ#8QdCfeuFps!&2KR7prp}gwy4KOnnmu$<9OR(67i}aLjk~+H8c(0f;_w;0Z!iyB2TvSy;~6gHXV}LZAYoT0p(9_V0aHjh z`zS%u{VKIV8Vz)Lf}y3tGy|Z+2*i4#7*s%Gb{C%~9ubPB4* zKW_hLO}DWMOG+e6O{vExCMwN`2w^bTmls_YkR^cu-9?JjhJ;2a29SbG_WQarzir=| zD6nCW{kC3B`k0Xs6}VpU>=^V!pFor;Wxth>LVKQ=5|GhtSSmdklEEd_?$cjnDWsRs0gs&eedH|wz6$7;Fm_Agb6Y14E@ZuZ`#`tJ2k07d z5Y_-0|0LIo<9HU_&roK(f(Rjz#2iFTI85&4WlvgixpBIY(qmP)KzHPrpi1?68mmK! zE;+0l+z~|pD}&b!Wdq<673^c61Dk;k0ypx-(HVV+sf-M=(D@oxY)U6+ko6Nph60m? zHz(xP78;zt&(0$mLRHLm7}-&1)x_4j)1ZNU=`l$M6l@#-tx;eDX=qL3!Ju&g_ky4{ zShU3L->qWv0fs)PL+0}QaRQnRea^VUp>TCPq0AAAK)}4Ry6Si`srB{4 z$A>N@wBU5ol8Yb?0`gB}&^{sV8yY4iX8o~Rt3ErtE^Y@*LC*h{Q86+hqy~!W>dHmV z{jNtCR9*s-EOFpIsNm%Xa7r0OSs&2sV`*#4>SkE-!Q$eg2gq7fy6$MIELDSOm=D0C z;0yWGzhh-$8i*CE5>H%Fg3gx;!kVMV7GeKtL{;m&&(RRctgt%}FTk;Li0n=NxROju z4JP}qW5*W2^RTe6u>ErqQ>E<;M;hxMh(RHA3vUjt?CwTIV9|Y!23M39mKU45{s745 zSokS=-!-6&`9e%Bl(2sd!4xF?1Ix$1{X!!1@dt3W0j^5gheO6-AZ%EW_QBG|o#O(* zHm)Jitpifc8`L7A54B3P;SU7?P?&C$LHOE#-}a8!0{g@*j(F%j2uBM7%T($zN~vt{ zhCV+-6ewi3Xii+;h*hyZ5i&5dkHl=?I;T$UxC1gEts9 z@^v=HBK(NiL7N|k)B)a@1f;l~6IOn9gelu}y(85oLn}9)9K~a&HJOI)o}Lw8v2<9x z^+k-_R$|BT@%3GgN76kN*(rfEK2R6*mOH>riTeCm4k8!W{MOcHM&F|g2_IufZWwFK z|DRs;cf~vdNBjVY*5^y@0orx;ne&@cbF=8k=tE+_^~5A5W=5wjP=4D3Y$LiLuJJ>p z4>`y2rh?1Z@#tf#&I;Kk$Ueto(i}!BAjVw@+70rMyWDg85rUHXrk$oUQ--}k1Gf*B zPI2(Fmu#Rw@_+UdFj!XZ#6G))EZ^m2iix~veD==jOzpU8fB;iPw4lC&+O3&g@?h%d&+`8gO3HX&zP`xg3-W+O+mI#iTjTdU1zYAlM}t4fiN_B z2it5A@$%xgZ``772L1iPwd(@QhT_dbKB}SGE~D$N2v4A#CCJe7@bK`E8qb%cJ3KoT z6N|bR)eX={va+&rxH1u8C=8_Ju?Gy3x3gpN2l4+x;h{VT`>iC6bPqz1|a^-!(lyvzB(@d z=&nFz`fCgI_|3X_ZVM8M9AaO(mfM?44{&8M@bRa=I5fNlf`y3^+%=|j=4Wb2pxFRd zh9Is9!quI*)KJe~rPoNcMVq#>)w21IbBUS&73>PA;^$1VY>IUT)QSE)9F*XEBBrIK zafqw}>uI#yP&i2RIRM~ix4rOwbo>|;MfCchZVC+Rq7kf_52nHcWL50f2WFbTE0^}5 z(E8qB-qUCx(lojCOKh2t4<77lwp&}M+uQ^!48I!~sI#4+j7GwyXXEFeJuqFsuG)JV znvp@oMHoF#Prp8#DUc@`5Xhk>aSl$$XFk-m^^UF0-4pfBRr^S|YqB%I!Lk&BXCR`d zM@;IyTbZBkOak^)Qw|sxn*5GaWjr8f<%_7}2V^P#D-pn+0WP7s^Tj*BA8gtnQS$M) za`GiZ2z7UScC?`2%j**@fGGA)O1vwUr$!LSIW7den|+wl8@>QQ0kaHH${hYHP{W#i z87O^Yj#6QmHKbH(_8=-6Ir)h&=r01iTnG|7xdehJ{8MV*{D{w>nBCEux^sm7av^mP^z1c7HDvKW4Y;w3lS z?Swo!uVRbpi`oyA?ZQ$Xq_zfBzrfO`2fk&ZsMI_Q=B{9U^r#oO2BM)s02w~-HfOg- z%8Lf9?Dj*H3cA4ckvK(bOY~dzS!xebY-n}Gjer0;luAry8ih>WEyh7a&~&U5Oq&$k z#xsx%LUY>6;(bB-@@yFi0%TkOz2472&GO=hc1|r8`6qambp@2M^b)#nmWHS1LN?od$Am9Y{O(TVbgd9fjJXv2gZh--+4)ZHO zJKo9r%_k^FIwsJ*x%KK$e%@t5k)tNJ^#>3}Qvxzm^Y+MBz&y@g=l|w+`{eY;!T^KW zp81AnwgSjw@=$)+=#VCXa)BhU^d{hfwXdLzdR+j+Oa4;_Xm;ng)`uA!8rs?4-@oE& zarc?D|F{^4ZHkwX6f8w0qQ;=I_-#%Wr<6PcIVm|gIbFKcXPg1|$t#@J05S$_M{p6FKuLE%I)mOmLQS*}Z%?v3VwAMxm0A%rkw^v7poX4{^<;%e1 z-!RkEMO{)PE_^<%H0E)n~&ogN|ik5 zVqRt8Khmqm0FG0Q0>xtxn`yWb%~R{I*}Z54onwo26nS4P&f5~%8)d*Otp-Wl=L24} zU27s9QH$e1HHWDpCSXlR@d<=pXo7dMF&W^3t_&h{7-t~7RS6nI#O|Df_R*qar@(5X zSS51_PhRjVHe#B&UH{#a;QXKw@bgr9F5fz?dKzA++A5&S;-$bcFcNV^orDZxYr|oH&iXy z^s_f$QA0tLS@s11zw$be=v6m>SRPjT>br3UjK^-4I*4w(3J*1Rb8pWsq(7kaoP&}+ zpw2t4h^Evtszg9UUV|RP!pw}O502mG%%SIZUn5H_FqLW)BEx^fey3tkvtkYr5|(Fu z!^4P@6~IX81u!|wN5~#;c$EAFG5Z8My1VZtij8-4z(bwypnDv&tM7X<**7#)vU1Nc$@-iP9{_#RM@m{^wh>ICx)g#Xw; z_|b}sJO(Q=`nP9DJ8A$n$?}nCYpWu(Y_zsMm|zh>CO&IcHL@8r862QL0kZoONHg%(x z7H^aGyelCdpk)lebar2IyxthJGS^b*fd@>f&*23s=Rq)S9rj?i+!Zu7oYHq+z**Ll zB?Ud_k<0yCc6xv@>H<*6zQ743zoEd?6+l=-ku<_yb1BaB^^w$(L;41q=t&0U-QYZD&#KxFp0V+~?>Eo9*Li$h*H zNk|32>RU`XX<x(xFgc7!xGi-OX)dbd6=^53~@t?XMa_v~}E3k$JOwvOk> z%}I&W{NmR)@P5S$<^x4!BfN7jl}?5h>n`#yIIrDCVM%Eu<9KDGIaUl8-M=o6bx+lB z9;KF)D{kkFMBAS@l-uz+EcqWjF~5VPm;yKy6*Kvt_QsF_q0o|UzXEZVVPJw&jrp8r z45A^ert5Np5yDrz&34d~@5-Z>|CSmIMR@Rq#RW#&_NW1bYi7;WCK6 zxl2(4hOx~9Kvf!tz4Sd*W;@=k7@RNNyytfihG2t}Eklb(`F4;RR7~TLJe@W2Rx=Gk z1}-!VKDc&fns622wALSFn}=`Hpu!N4XotkGhsH2Bnb|1w*o6sW7N>Zz5Z}1%Ngl83 z>_@vij!?s9YGaSksg}An$D^XvZ+zu1NIle7`M*o9kfgT>$;<7P9YxR7WlnY2z2bg( z%1`pR)o^FyHE+t(`SPbDBRo5r+cF>V?Q0eX`$u=p$UZE)+{jG~jpFE)j%k;JXxt16 z4i**`4jEawXb|ESkU5jU@hJt?jxS&|Xk1TzM)>RdU1*bJ;iV`g)KaRS0WP#rMsy+! zOZBCtTC;R5r&7%}hXS5Q_yuADueFMF>t9A6D)#bXIPsm%Wa!?EqvE8@z;|2eHl0YG z6iyeC^;~Bdq<%51{UlhPTW(+&mrrurD1sL0U3fL<7Cnk-$LOJBgIdcc9yh^pbi6X) zNhn-Fv3`+oS@V2IuEovK+gdk2%it_Kd`~7=v992d!;M70fyl8K=U$Acz-z$$jZP=pv;!6Cj=H>F$pfn}R z<>R`yBm(U3^Z_EV#(sf6FE_Vun9BH$6M%{6hgAuwfAzriJO5czpwXBoVIjpb89z`v zRqQhJg8O;VdAvM#iUhNQhSf4Ii_D|3w?lnFl$?h~?VEla(n<90gTgy6h*GvHE2+5a z{i+@g-d>M6zjAqQPd;`!!SA>IEXj^xG@B*Bgky3i|CFaXqNTg&^G~sh z@j1GjHEpj`$~4+g8irZZ0ND6CgM^XQu}n$xV%Evd&ptRkZ=#~$v)>t>-49NQkPTnm z4KehuLOAx7s*xIdC5&Hlg?baQg!^W)($n%7c(a}cY<-!dxt(BSY4}*Xw`Y=&>HFy< zrlvN5Ity^If@pQ#%Zn{K&LUl5i!Y)}UHsFsu0|QYr`v9q1ZcQR$gU*4?wN*5m)Tq2 z%W6gpDn?8yT$hDzfD^>;x}C_$+`4`{0*pn0PiqfI_;W!kJps{TkxbnmbH^>2)RofK zZWB*a3<^rWZjCp{eJECusuOVO@p+V#zMt35etK!Yh~9+lx5JfZ-tsQymHFq#A>}jW z-R^lGvN`0DhVd9^%B09xGYb0UiAJt61;-T+j>hQ7Cd606(y)B7<^^j@7pjL}Se}(} ze`G4mJ##W!yzn|J2&k z+fuZ1-{WX~8~&5^eDxQ%{%a%3?))=mhMA-Bej0OgpNJ(YBz0Q6YJ81F+b0n~vUHv5 zi@$QkwXJT)R9Iu#`cKeXa1x}`#s^1lGHbui&0#(n5j={rZ!GGjxifTXe;rLy%4IfK z&bnu`AyU|KZvOppb^P;yAqgv!qvm~lkCxV=>6}Nm`}-G?BRgNd4v%T;lqlaX(fnK? zp{QG>Q#13(W*^V{*l~uAk%?I|f4-4+H7WK~7Tc7Nm=(>rB*aUl^+$kTD<y{G38R7IrmT$dl<=2V1_CS5xrFNwicVO}`2?#t}?VUS^=QlWo zpD-Lf)TGn2)nB`62(_bWpdBSJts@&U{pdQ`dy+D1zx`HF#YAz*dG|}2Zq>%qOu@sD zsX>B*z^Xj2pP5!(6v5Sl=(LKgMU5{^+h~EupXjNhtDr+?e- zlz(j5CBw8s9#}=~K|pH>PFrFVz{8An+TC0xxDLq(#gT{DtXmg%TbT4y>O%+r4CzL@>d z-1_eK&O*b*{MS#dS^^6YWzb+WRP`8-niC3+5;Xh|sA> zg>$z!&<;A!tB;a6ke64B*+f288PT-YNuGAE*g8lbKz(`k?CAZZ#$zlRe#gKb7Da)< z6Ml;@j@*r+s%@mFB&8fNIiQo%`0|}3eg}^NDVixJ$3CiAJulIkf?|!EEv3>vxs(W6 z%R}+ovIO(^%Gx?!^FcHihC^IC=ySSsW%v!G0ZIL?ejeP#;8*SKa94JCz1Xs!>-9^C zCkH(~$(Hn6>l5jsq9d0=9s}N}$|h{f$qYPcQSSbIhwj!;_pd$0*VXC7(}!l`^iLA3 zS~mtIY9}U!qTXU0pu)kSJ(QIY)nMOxe4*$hp8ZaJt9CH#7oeo{4+EB!M`7iahDIRr zOKZjL6~=&EQ*@rYAM`G~_ljCIs>V;4GRZshxLFKotSZueK1;fLF%bcy$sia`xctSN zd3rRGw{cd?((itLBY^~l1($3()V#YCgoa) z!2JiVrI7i+f?1x65FnFZ%IV2v)Mp&+85$@2jG6NOO|%Xp&&RNst)zEXHLFiAzwa^9 z^N_q~(j%UlJIFt8Tg@`q1S~|pz54vMJko8gsuzcubVK_-=B(X=m5rX8F&x5uMQpyY z!)4m#3=F(GmkU5$Cn#l<#N|lUH2BhMadIJjCqbwrAMJ5}UD|q7Giv;nsA=wpReaXv zQbpRN!|R5-c4Z_7Ys^*~!7umrv+ViGZZ$F=H_OZ8t)~j~WB1MXtw~6CE(y;f;8`@${d#TV?oB@AAQ(2sPi#hs4!dH-h`x0{ zapnF{RLbkz<)*G?d|=bCZT-RZqPl^WskP~$Hx0v>(kY=S3QZ|_SWOe-!!4;#jSG=g zcYwKR1P<&0dw8UOOTlFn0p}a=?6n~eLHhLHs4c;34#aXc;&@Ks-@8C+>~a z-Oo$h4f1b;o%wxr-HUMjs*?bygZ0uxV#}73XxbN%T_pU4qexU&@nK?^g_CrTKMqE% zk1s|yRXe;#p?-5F_UIe?(Brc-261s&i3r(_{TmEEJ_>f#4!;Ms(>X1B0WKa=V2}PG zB|k_8`shVX$_qJpj1FE!SxG&**unz$mmebgS2fPoU^7MC2=Xuc;fIK)r;7ZHl(R7Z zM>>ju4ACFgquD_JHGZC*$?{7lKS~cdgsWCF~R0mrFA|c}xFCKRn4>NZ}5tUwig(Z+^Mq5qz(rx(Eph!N8OlaL6>RQO{xMBoCH zz@wYkWJpxd2>;+o#t;B%&A6ac|0(c)>pwiEzxVgo@nDp(snZPe;Lkc)^L*Io zf6c{G62vr^*h*fPfcN)Z#Pk0>DipBraVj)JZs7gZ@?H1;8kPSJw2fu5^ca6V1PMKC zAnJzQe)<;SM=V{^<_G@y+>$u>Q6XE6M;a02fq1$R9F%`8)ev|U*RLggJZK>)EvrQT z+!$CVSbK`7RBD_?Fy7J9X{^6y;{X`LVRh9KQAt7MVo}_DlahZvYzP+bK$6p|{2>gp z`Kx&%{$J0MhqqghGlG?T->H=U=Xm`^3cx&FB4dL7+G+4`I7vYLbP*%BYXTe<=KL4J z#DC6Mz$k3@+lx!1h-SFqI9^&L7{+EQ813r@M-4hKIhTjApY)kTkeYVVL+`u&zS-~r zkOO!SZvpLV06uiCbI{55tg$4*-OytFa$%cB(sIcz|Gj^ny!{Qby=4eK^BvJ(d|Q_f z!0rEU%vpF~`Oj&O&B5C|J}%JzMZVqzk*`nN-xf}0k&AuV?EiZeHY>ol_a_{UETB0{ z#hCo}PH1SG5b67Cfrh`g3~1EHU{AAbIQ+0v#=Q<842E1lYXzyz|NcUsN(AGb&71zb5HK=a^5(y`6edV6g3)m& zdaal8p~Qhnu^Qc(3l3PR9 zK}xwt6NgOw)y9Mf%T028idbp8JoJI#>TSrh>g**|y2k^+q9F7k^e z;1r7equl=Zb&UI9hRZ6{(f1)4fI)=x_lZyiYX?n{7TnlB?>Dfa|J7vWkS5a_k~RBt z!^siBes_sbsZ0JjlHaNVjD~_ZGIxvu#F1RWql5l@3@)G$Iv<2j2(ToUIR84D$R6@w z3F>ACwDQ2gF5bxH`0v<)y}koh&p117L02*m+1`%ebI4zN4Z}P0lO5e}`A&<600;ib MN-9Z|i5Ug{KLk%^x&QzG From 9910b5517059edf856ff5ba97aabdfdd70530db8 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Wed, 10 May 2017 15:32:36 +0800 Subject: [PATCH 12/24] modify by comments --- doc/design/file_mananger/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index 16074f8a01..27af3c51e6 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -40,9 +40,9 @@ ### FileServer FileServer是一个用GoRPC写的HTTPServer,提供[RESTful API](./RESTAPI.md)接口,接收处理PFSClient端的文件管理请求,并且把结果返回PFSClient端。 -## 大文件传输优化 +## 文件传输优化 -### 分块文件上传 +### 分块文件传输 用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient在传输完毕最后一个Chunk的时候检查desttination文件的MD5值是否和source文件一致。 一个典型的Chunk如下所示: @@ -62,7 +62,6 @@ type Chunk struct { ### 覆盖不一致的部分 文件传输的的关键在于需要PFSClient端对比source和destination的文件Chunks的checksum是否保持一致,不一致的由PFSClient下载或者传输Chunk完成。这样已经传输成功的部分就不用重新传输了。 - ## 框架生成 用[swagger-api](https://github.com/swagger-api/swagger-codegen)生成Client和FileServer的框架部分,以便我们可以把更多的精力放到逻辑本身上。 From ffd45b79672a2168925f06a13f03fc4cf9e30123 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Thu, 11 May 2017 11:52:28 +0800 Subject: [PATCH 13/24] modify by comments --- doc/design/file_mananger/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md index 27af3c51e6..9d75089257 100644 --- a/doc/design/file_mananger/README.md +++ b/doc/design/file_mananger/README.md @@ -4,7 +4,7 @@ 主要功能包括: - 提供常用的命令行文件管理命令管理文件 - - 支持的命令在[Here] (./pfs/pfs.md) + - 支持的命令在[Here](./pfs/pfs.md) - 支持大文件的断点上传、下载 ## 名词解释 From 327727d462ed087f74ffa6cff25c9f7d00074b2a Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 12 May 2017 15:13:27 +0800 Subject: [PATCH 14/24] fix name bugs --- .../{file_mananger => file_manager}/README.md | 0 .../{file_mananger => file_manager}/RESTAPI.md | 0 .../{file_mananger => file_manager}/pfs/cp.md | 0 .../{file_mananger => file_manager}/pfs/ls.md | 0 .../{file_mananger => file_manager}/pfs/mkdir.md | 0 .../{file_mananger => file_manager}/pfs/mv.md | 0 .../{file_mananger => file_manager}/pfs/pfs.md | 0 .../{file_mananger => file_manager}/pfs/rm.md | 0 .../{file_mananger => file_manager}/pfs/sync.md | 0 .../src/filemanager.graffle | Bin .../src/filemanager.png | Bin 11 files changed, 0 insertions(+), 0 deletions(-) rename doc/design/{file_mananger => file_manager}/README.md (100%) rename doc/design/{file_mananger => file_manager}/RESTAPI.md (100%) rename doc/design/{file_mananger => file_manager}/pfs/cp.md (100%) rename doc/design/{file_mananger => file_manager}/pfs/ls.md (100%) rename doc/design/{file_mananger => file_manager}/pfs/mkdir.md (100%) rename doc/design/{file_mananger => file_manager}/pfs/mv.md (100%) rename doc/design/{file_mananger => file_manager}/pfs/pfs.md (100%) rename doc/design/{file_mananger => file_manager}/pfs/rm.md (100%) rename doc/design/{file_mananger => file_manager}/pfs/sync.md (100%) rename doc/design/{file_mananger => file_manager}/src/filemanager.graffle (100%) rename doc/design/{file_mananger => file_manager}/src/filemanager.png (100%) diff --git a/doc/design/file_mananger/README.md b/doc/design/file_manager/README.md similarity index 100% rename from doc/design/file_mananger/README.md rename to doc/design/file_manager/README.md diff --git a/doc/design/file_mananger/RESTAPI.md b/doc/design/file_manager/RESTAPI.md similarity index 100% rename from doc/design/file_mananger/RESTAPI.md rename to doc/design/file_manager/RESTAPI.md diff --git a/doc/design/file_mananger/pfs/cp.md b/doc/design/file_manager/pfs/cp.md similarity index 100% rename from doc/design/file_mananger/pfs/cp.md rename to doc/design/file_manager/pfs/cp.md diff --git a/doc/design/file_mananger/pfs/ls.md b/doc/design/file_manager/pfs/ls.md similarity index 100% rename from doc/design/file_mananger/pfs/ls.md rename to doc/design/file_manager/pfs/ls.md diff --git a/doc/design/file_mananger/pfs/mkdir.md b/doc/design/file_manager/pfs/mkdir.md similarity index 100% rename from doc/design/file_mananger/pfs/mkdir.md rename to doc/design/file_manager/pfs/mkdir.md diff --git a/doc/design/file_mananger/pfs/mv.md b/doc/design/file_manager/pfs/mv.md similarity index 100% rename from doc/design/file_mananger/pfs/mv.md rename to doc/design/file_manager/pfs/mv.md diff --git a/doc/design/file_mananger/pfs/pfs.md b/doc/design/file_manager/pfs/pfs.md similarity index 100% rename from doc/design/file_mananger/pfs/pfs.md rename to doc/design/file_manager/pfs/pfs.md diff --git a/doc/design/file_mananger/pfs/rm.md b/doc/design/file_manager/pfs/rm.md similarity index 100% rename from doc/design/file_mananger/pfs/rm.md rename to doc/design/file_manager/pfs/rm.md diff --git a/doc/design/file_mananger/pfs/sync.md b/doc/design/file_manager/pfs/sync.md similarity index 100% rename from doc/design/file_mananger/pfs/sync.md rename to doc/design/file_manager/pfs/sync.md diff --git a/doc/design/file_mananger/src/filemanager.graffle b/doc/design/file_manager/src/filemanager.graffle similarity index 100% rename from doc/design/file_mananger/src/filemanager.graffle rename to doc/design/file_manager/src/filemanager.graffle diff --git a/doc/design/file_mananger/src/filemanager.png b/doc/design/file_manager/src/filemanager.png similarity index 100% rename from doc/design/file_mananger/src/filemanager.png rename to doc/design/file_manager/src/filemanager.png From 60f69c2b0e960d9f60649e1e83342933273768e1 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 12 May 2017 17:53:31 +0800 Subject: [PATCH 15/24] fix by comments --- doc/design/file_manager/README.md | 6 ++-- doc/design/file_manager/pfs/cp.md | 46 +++++++++++++++------------- doc/design/file_manager/pfs/ls.md | 33 ++++++-------------- doc/design/file_manager/pfs/mkdir.md | 12 ++------ doc/design/file_manager/pfs/mv.md | 30 ++++++++++-------- doc/design/file_manager/pfs/pfs.md | 6 ++-- doc/design/file_manager/pfs/rm.md | 35 +++++++-------------- doc/design/file_manager/pfs/sync.md | 40 ++++++++++-------------- 8 files changed, 88 insertions(+), 120 deletions(-) diff --git a/doc/design/file_manager/README.md b/doc/design/file_manager/README.md index 9d75089257..2fe874581e 100644 --- a/doc/design/file_manager/README.md +++ b/doc/design/file_manager/README.md @@ -3,7 +3,7 @@ 在本文档中,我们设计说明了名为FileManager系统,方便用户管理存放到PaddlePaddle Cloud上的文件。 主要功能包括: -- 提供常用的命令行文件管理命令管理文件 +- 提供常用的命令行管理命令管理文件和目录 - 支持的命令在[Here](./pfs/pfs.md) - 支持大文件的断点上传、下载 @@ -27,7 +27,7 @@ - 用Golang写,可以跨平台执行 - 双向验证 - PFSClient需要和Ingress之间做双向验证[tls](#tls),所有用户需要首先在`cloud.paddlepaddle.org`上注册一下,申请用户空间,并且把系统生成的Key、CRT、CA下载到本地,然后才能使用PFSClient。 + PFSClient需要和Ingress之间做双向验证[tls](#tls),所以用户需要首先在`cloud.paddlepaddle.org`上注册一下,申请用户空间,并且把系统生成的Key、CRT、CA下载到本地,然后才能使用PFSClient。 ### Ingress - 功能: @@ -43,7 +43,7 @@ FileServer是一个用GoRPC写的HTTPServer,提供[RESTful API](./RESTAPI.md) ## 文件传输优化 ### 分块文件传输 -用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient在传输完毕最后一个Chunk的时候检查desttination文件的MD5值是否和source文件一致。 +用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient在传输完毕最后一个Chunk的时候检查destination文件的MD5值是否和source文件一致。 一个典型的Chunk如下所示: diff --git a/doc/design/file_manager/pfs/cp.md b/doc/design/file_manager/pfs/cp.md index 605c0b7c8b..1f1670e882 100644 --- a/doc/design/file_manager/pfs/cp.md +++ b/doc/design/file_manager/pfs/cp.md @@ -1,41 +1,45 @@ # Name -cp - copy files and directories +cp - copy files # Synopsis -` cp [OPTION]... - or or ` +``` +cp [-r] [-f | -n] [-v] [--preserve--links] +cp [-r] [-f | -n] [-v] [--preserve--links] ... +cp [-r] [-f | -n] [-v] [--preserve--links] +cp [-r] [-f | -n] [-v] [--preserve--links] ... +cp [-r] [-f | -n] [-v] [--preserve--links] +cp [-r] [-f | -n] [-v] [--preserve--links] ... +``` # Description +``` +The following options are available: + +-r + Copy directories recursively + +-f + Do not prompt for confirmation before overwriting the destination path. (The -f option overrides previous -n options.) + +-n + Do not overwrite an existing file. (The -n option overrides previous -f options.) + +-v + Cause cp to be verbose, showing files after they are copied. -``` --preserve--links Reserve links when copy links - --R, -r, --recursive - Copy directories recursively ``` # Examples - The following command copies a single file to pfs ``` -paddle pfs cp ./text1.txt /pfs/mydir/text1.txt -``` - -Output - -``` -upload ./text1.txt to /pfs/mydir/text1.txt +paddle pfs cp ./text1.txt /pfs/$DATACENTER/home/$USER/text1.txt ``` - The following command copies pfs file to a local file ``` -paddle pfs cp /pfs/mydir/text1.txt ./text1.txt -``` - -Output - -``` -download /pfs/mydir/text1.txt to ./text1.txt +paddle pfs cp /pfs/$DATACENTER/home/$USER/text1.txt ./text1.txt ``` diff --git a/doc/design/file_manager/pfs/ls.md b/doc/design/file_manager/pfs/ls.md index ab254cfc5d..0db163e08b 100644 --- a/doc/design/file_manager/pfs/ls.md +++ b/doc/design/file_manager/pfs/ls.md @@ -1,42 +1,27 @@ # Name -ls - list directory contents or a file attributes +ls - list directory(ies)'s contents or file(s)'s attributes # Synopsis -` ls [OPTION]... ` +`ls [-r] ...` # Description -``` --R, -r, --recursive - Copy directories recursively - ---page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if operation time out. +``` +The following options are available: + +-r + List directory(ies) recursively ``` # Examples - The following command lists a single file ``` -paddle pfs ls /pfs/mydir/text1.txt -``` - -Output - -``` -2017-05-5 17:04:30 text1.txt +paddle pfs ls /pfs/$DATACENTER/home/$USER/text1.txt ``` - The following command lists directory contents ``` -paddle pfs ls /pfs/mydir -``` - -Output - -``` -2017-05-5 17:04:30 text1.txt -2017-05-5 17:04:30 text2.txt -... +paddle pfs ls / /pfs/$DATACENTER/home/$USER/folder ``` diff --git a/doc/design/file_manager/pfs/mkdir.md b/doc/design/file_manager/pfs/mkdir.md index c11dadd61f..3ca5170402 100644 --- a/doc/design/file_manager/pfs/mkdir.md +++ b/doc/design/file_manager/pfs/mkdir.md @@ -2,18 +2,12 @@ mkdir - mkdir directory(ies) # Synopsis -`mkdir [OPTION]... ...` +`mkdir ...` # Description -Create the pfs directory(ies), if they do not already exist. And create intermediate directories as required +Create the pfs directory(ies), if it(they) does(do) not already exist. And create intermediate directories as required. # Examples ``` -paddle pfs mkdir /pfs/mydir1 -``` - -Output - -``` -make directory /pfs/mydir1 +paddle pfs mkdir /pfs/$DATACENTER/home/$USER/folder ``` diff --git a/doc/design/file_manager/pfs/mv.md b/doc/design/file_manager/pfs/mv.md index 3929d43394..01b795be02 100644 --- a/doc/design/file_manager/pfs/mv.md +++ b/doc/design/file_manager/pfs/mv.md @@ -1,28 +1,34 @@ # Name -mv - move (rename) files or directories +mv - move (rename) files # Synopsis -If destination already exist, please [rm](rm.md) it first. - ``` -mv [OPTION]... - or or +mv [-f | -n] [-v] +mv [-f | -n] [-v] ... +mv [-f | -n] [-v] +mv [-f | -n] [-v] ... +mv [-f | -n] [-v] +mv [-f | -n] [-v] ... ``` # Description -``` ``` +The following options are available: -# Examples -- The following command move a single file to pfs +-f + Do not prompt for confirmation before overwriting the destination path. (The -f option overrides previous -n options.) -``` -paddle pfs mv ./text1.txt /pfs/mydirectory/test1.txt +-n + Do not overwrite an existing file. (The -n option overrides previous -f options.) + +-v + Cause mv to be verbose, showing files after they are moved. ``` -Output +# Examples +- The following command moves a single file to pfs ``` -move ./text1.txt /pfs/mydirectory/test1.txt +paddle pfs mv ./text1.txt /pfs/$DATACENTER/home/$USER/text1.txt ``` diff --git a/doc/design/file_manager/pfs/pfs.md b/doc/design/file_manager/pfs/pfs.md index c23ffc7479..e26fc1095d 100644 --- a/doc/design/file_manager/pfs/pfs.md +++ b/doc/design/file_manager/pfs/pfs.md @@ -1,7 +1,7 @@ # PFS Client ## Description -The `pfs` command is a Command Line Interface to manage your files on Paddle Cloud +The `pfs` command is a Command Line Interface to manage your files on PaddlePaddle Cloud ## Synopsis ``` @@ -28,10 +28,10 @@ paddle [options] pfs [parameters] ## Path Arguments When using a command, we need to specify path arguments. There are two path argument type: `localpath` and `pfspath`. -A `pfspath` begin with `/pfs`, eg: `/pfs/mydir/text1.txt`. +A `pfspath` begin with `/pfs`, eg: `/pfs/$DATACENTER/home/$USER/folder`. ## order of Path Arguments -Commonly, if there are two path arguments. The first is the source, and the second is the destination. +Commonly, if there are two path arguments, the first is the source, and the second is the destination. ## Subcommonds - [rm](rm.md) diff --git a/doc/design/file_manager/pfs/rm.md b/doc/design/file_manager/pfs/rm.md index 64774c7ad9..8bcbabdfb1 100644 --- a/doc/design/file_manager/pfs/rm.md +++ b/doc/design/file_manager/pfs/rm.md @@ -3,43 +3,30 @@ rm - remove files or directories # Synopsis ``` -rm [OPTION]... ... +rm [-r] [-v] ... ``` # Description ``` --r, -R, --recursive - remove directories and their contents recursively +The following options are available: ---page-size (integer) - The number of results to return in each response to a list operation. The default value is 1000 (the maximum allowed). Using a lower value may help if an operation times out +-r + remove directories and their contents recursively + +-v + Cause rm to be verbose, showing files after they are removed. ``` # Examples -- The following command deletes a single files - -``` -paddle pfs rm /pfs/mydirectory/test1.txt -``` - -Output - -``` -delete /pfs/mydirectory/test1.txt -``` - - -- The following command deletes a directory recursively. +- The following command deletes a single file: ``` -paddle pfs rm -r /pfs/mydirectory +paddle pfs rm /pfs/$DATACENTER/home/$USER/test1.txt ``` -Output +- The following command deletes a directory recursively: ``` -delete /pfs/mydirectory/1.txt -delete /pfs/mydirectory/2.txt -... +paddle pfs rm -r /pfs/$DATACENTER/home/$USER/folder ``` diff --git a/doc/design/file_manager/pfs/sync.md b/doc/design/file_manager/pfs/sync.md index c921e8ac81..4801ceedf9 100644 --- a/doc/design/file_manager/pfs/sync.md +++ b/doc/design/file_manager/pfs/sync.md @@ -1,42 +1,34 @@ # Name -sync - sync directories. Recursively copies new and updated files from the source directory to the destination +sync - sync directories. Recursively copies new and updated files from the source directory to the destination. # Synopsis -` sync [OPTIONS]... - or or ` +``` +sync [--preserve--links] [-v] +sync [--preserve--links] [-v] +sync [--preserve--links] [-v] ` +``` # Description ``` +The following options are available: + --preserve--links - Reserve links when copy links + Reserve links when copy links. + +-v + Cause sync to be verbose, showing files after their's synchronization is complete. ``` # Examples -- The following command sync locally directory to pfs - -``` -paddle pfs sync ./dir1 /pfs/mydir1 -``` - -Output - -``` -upload ./dir1/text1.txt to /pfs/mydir1/text2.txt -upload ./dir1/text2.txt to /pfs/mydir1/text2.txt -... -``` - -- The following command sync pfs directory to local +- The following command sync locally directory to pfs. ``` -paddle pfs sync /pfs/mydir1 . +paddle pfs sync ./dir1 /pfs/$DATACENTER/home/$USER/mydir1 ``` -Output +- The following command sync pfs directory to local. ``` -download /pfs/mydir1/text1.txt to ./text1.txt -download /pfs/mydir1/text2.txt to ./text2.txt -... +paddle pfs sync /pfs/$DATACENTER/home/$USER/mydir1 . ``` From bd69fa311ef70536c06b85416d3b8a6444eaa736 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Fri, 12 May 2017 18:02:01 +0800 Subject: [PATCH 16/24] fix by comments --- doc/design/file_manager/RESTAPI.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/design/file_manager/RESTAPI.md b/doc/design/file_manager/RESTAPI.md index 8d0f37be99..9c94804d6b 100644 --- a/doc/design/file_manager/RESTAPI.md +++ b/doc/design/file_manager/RESTAPI.md @@ -3,7 +3,7 @@ ``` GET /file: Get attribue of files -POST /file: Touch a file +POST /file: Create a file DELETE /file: Delete a File ``` @@ -18,6 +18,6 @@ POST /file/chunk: Update a chunk ``` GET /dir: List all files in a directory -POST /dir: Touch a directory +POST /dir: Create a directory DELETE /dir: Delete a directory ``` From b2ccc4778837f788d4014156e5586e4c547d588e Mon Sep 17 00:00:00 2001 From: gongweibao Date: Sun, 14 May 2017 11:32:50 +0800 Subject: [PATCH 17/24] fix by comments --- doc/design/file_manager/README.md | 44 ++++++--- doc/design/file_manager/RESTAPI.md | 23 ----- doc/design/file_manager/pfs/pfs.md | 92 ++++++++++++++++-- .../file_manager/src/filemanager.graffle | Bin 3442 -> 3438 bytes doc/design/file_manager/src/filemanager.png | Bin 62630 -> 145125 bytes 5 files changed, 119 insertions(+), 40 deletions(-) delete mode 100644 doc/design/file_manager/RESTAPI.md diff --git a/doc/design/file_manager/README.md b/doc/design/file_manager/README.md index 2fe874581e..8d9c7487c5 100644 --- a/doc/design/file_manager/README.md +++ b/doc/design/file_manager/README.md @@ -8,13 +8,10 @@ - 支持大文件的断点上传、下载 ## 名词解释 -- PFS:是Paddlepaddle cloud File System的简称,是对用户文件存储空间的抽象,与之相对的是Local File System。目前我们用CephFS来搭建。 +- PFS:是Paddlepaddle cloud File System的简称,是对用户文件存储空间的抽象,与之相对的是local filesystem。目前我们用CephFS来搭建。 - [CephFS](http://docs.ceph.com/docs/master/cephfs/):一个POSIX兼容的文件系统。 - Chunk:逻辑划上文件分块的单位。 - [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/):提供七层协议的反向代理、基于粘性会话的负载均衡。 -- CA:certificate authority[tls](#tls) -- CRT:CA signed certificate[tls](#tls) -- Key:用户私钥[tls](#tls) ## 模块 @@ -22,24 +19,49 @@ ### PFSClient -- 功能: 详细的内容看[Here](./pfs/pfs.md) +- 功能: 详细的内容看 - 提供用户管理文件的命令 - - 用Golang写,可以跨平台执行 + - 用Go写,可以跨平台执行 - 双向验证 - PFSClient需要和Ingress之间做双向验证[tls](#tls),所以用户需要首先在`cloud.paddlepaddle.org`上注册一下,申请用户空间,并且把系统生成的Key、CRT、CA下载到本地,然后才能使用PFSClient。 + PFSClient需要和Ingress之间做双向验证[tls](#tls),所以用户需要首先在`cloud.paddlepaddle.org`上注册一下,申请用户空间,并且把系统生成的CA(certificate authority)、Key、CRT(CA signed certificate)下载到本地,然后才能使用PFSClient。 + +- 命令格式 + +``` +paddle [options] pfs [parameters] + +options: + +``` ### Ingress - 功能: 提供七层协议的反向代理、基于粘性会话的负载均衡功能。 - 透传用户身份的办法 - Ingress需要把PFSClient的身份头传给FileServer,配置的方法参考[Here](http://www.integralist.co.uk/posts/clientcertauth.html#3) + Ingress需要把PFSClient的身份信息传给FileServer,配置的方法参考[Here](http://www.integralist.co.uk/posts/clientcertauth.html#3) -### FileServer -FileServer是一个用GoRPC写的HTTPServer,提供[RESTful API](./RESTAPI.md)接口,接收处理PFSClient端的文件管理请求,并且把结果返回PFSClient端。 +### PFSServer +PFSServer提供RESTful API接口,接收处理PFSClient端的文件管理请求,并且把结果返回PFSClient端。 +``` +RESTful API + +- /api/v1/files + - `GET /api/v1/files`: Get attributes of files or directories. + - `POST /api/v1/files`: Create files or directories. + - `DELETE /api/v1/files`: Delete files or directories. + +- /api/v1/storage/files + - `GET /api/v1/storage/files`: Download files or directories to local. + - `POST /api/v1/storage/files`: Upload files or directories to server. + +- /api/v1/storage/file/chunks + - `GET /api/v1/storage/file/chunks`: Get chunks's attributes in a file. + - `POST /api/v1/storage/file/chunks`: Upload chunks to a file. +``` ## 文件传输优化 ### 分块文件传输 @@ -57,7 +79,7 @@ type Chunk struct { ``` ### 生成sparse文件 -当destination文件不存在或者大小和source文件不一致时,可以用[Fallocate](https://golang.org/pkg/syscall/#Fallocate)生成sparse文件,然后就可以并发写入多个Chunk。 +当destination文件不存在或者大小和source文件不一致时,可以用[Fallocate](https://Go.org/pkg/syscall/#Fallocate)生成sparse文件,然后就可以并发写入多个Chunk。 ### 覆盖不一致的部分 文件传输的的关键在于需要PFSClient端对比source和destination的文件Chunks的checksum是否保持一致,不一致的由PFSClient下载或者传输Chunk完成。这样已经传输成功的部分就不用重新传输了。 diff --git a/doc/design/file_manager/RESTAPI.md b/doc/design/file_manager/RESTAPI.md deleted file mode 100644 index 9c94804d6b..0000000000 --- a/doc/design/file_manager/RESTAPI.md +++ /dev/null @@ -1,23 +0,0 @@ -# REST API Interface -- file - -``` -GET /file: Get attribue of files -POST /file: Create a file -DELETE /file: Delete a File -``` - -- chunk - -``` -GET /file/chunk: Get a chunk info -POST /file/chunk: Update a chunk -``` - -- dir - -``` -GET /dir: List all files in a directory -POST /dir: Create a directory -DELETE /dir: Delete a directory -``` diff --git a/doc/design/file_manager/pfs/pfs.md b/doc/design/file_manager/pfs/pfs.md index e26fc1095d..dd4578e369 100644 --- a/doc/design/file_manager/pfs/pfs.md +++ b/doc/design/file_manager/pfs/pfs.md @@ -34,9 +34,89 @@ A `pfspath` begin with `/pfs`, eg: `/pfs/$DATACENTER/home/$USER/folder`. Commonly, if there are two path arguments, the first is the source, and the second is the destination. ## Subcommonds -- [rm](rm.md) -- [mv](mv.md) -- [cp](cp.md) -- [ls](ls.md) -- [mkdir](mkdir.md) -- [sync](sync.md) +- rm - remove files or directories + +``` +Synopsis: + rm [-r] [-v] ... + +Options: + -r + remove directories and their contents recursively + -v + Cause rm to be verbose, showing files after they are removed. + +Examples: + paddle pfs rm /pfs/$DATACENTER/home/$USER/file + paddle pfs rm -r /pfs/$DATACENTER/home/$USER/folder +``` +- mv - move (rename) files + +``` +Synopsis: + mv [-f | -n] [-v] + mv [-f | -n] [-v] ... + mv [-f | -n] [-v] + mv [-f | -n] [-v] ... + mv [-f | -n] [-v] + mv [-f | -n] [-v] ... + +Options: + -f + Do not prompt for confirmation before overwriting the destination path. (The -f option overrides previous -n options.) + -n + Do not overwrite an existing file. (The -n option overrides previous -f options.) + -v + Cause mv to be verbose, showing files after they are moved. + +Examples: + paddle pfs mv ./text1.txt /pfs/$DATACENTER/home/$USER/text1.txt +``` +- cp - copy files or directories + +``` +Synopsis: + cp [-r] [-f | -n] [-v] [--preserve--links] + cp [-r] [-f | -n] [-v] [--preserve--links] ... + cp [-r] [-f | -n] [-v] [--preserve--links] + cp [-r] [-f | -n] [-v] [--preserve--links] ... + cp [-r] [-f | -n] [-v] [--preserve--links] + cp [-r] [-f | -n] [-v] [--preserve--links] ... + +Options: + -r + Copy directories recursively + -f + Do not prompt for confirmation before overwriting the destination path. (The -f option overrides previous -n options.) + -n + Do not overwrite an existing file. (The -n option overrides previous -f options.) + -v + Cause cp to be verbose, showing files after they are copied. + --preserve--links + Reserve links when copy links +``` +- ls- list files + +``` +Synopsis: + ls [-r] ... + +Options: + -r + List directory(ies) recursively + +Examples: + paddle pfs ls /pfs/$DATACENTER/home/$USER/file + paddle pfs ls /pfs/$DATACENTER/home/$USER/folder +``` + +- mkdir - mkdir directory(ies) +Create intermediate directory(ies) as required. + +``` +Synopsis: + mkdir ... + +Examples: + paddle pfs mkdir /pfs/$DATACENTER/home/$USER/folder +``` diff --git a/doc/design/file_manager/src/filemanager.graffle b/doc/design/file_manager/src/filemanager.graffle index beb57cdd786e24a57e63c06ef4d6cfa0df3d8c5a..7861a33072bc1908f69d12b37c20491dd8663103 100644 GIT binary patch delta 3348 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 esX%(sr6eBZuw!s1c)02S delta 3325 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

%e@$P&L)4Z01!{VAsyYoYJIl|1 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�aY3b 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 Date: Sun, 14 May 2017 11:33:40 +0800 Subject: [PATCH 18/24] rm not need files --- doc/design/file_manager/pfs/cp.md | 45 ---------------------------- doc/design/file_manager/pfs/ls.md | 27 ----------------- doc/design/file_manager/pfs/mkdir.md | 13 -------- doc/design/file_manager/pfs/mv.md | 34 --------------------- doc/design/file_manager/pfs/rm.md | 32 -------------------- doc/design/file_manager/pfs/sync.md | 34 --------------------- 6 files changed, 185 deletions(-) delete mode 100644 doc/design/file_manager/pfs/cp.md delete mode 100644 doc/design/file_manager/pfs/ls.md delete mode 100644 doc/design/file_manager/pfs/mkdir.md delete mode 100644 doc/design/file_manager/pfs/mv.md delete mode 100644 doc/design/file_manager/pfs/rm.md delete mode 100644 doc/design/file_manager/pfs/sync.md diff --git a/doc/design/file_manager/pfs/cp.md b/doc/design/file_manager/pfs/cp.md deleted file mode 100644 index 1f1670e882..0000000000 --- a/doc/design/file_manager/pfs/cp.md +++ /dev/null @@ -1,45 +0,0 @@ -# Name -cp - copy files - -# Synopsis -``` -cp [-r] [-f | -n] [-v] [--preserve--links] -cp [-r] [-f | -n] [-v] [--preserve--links] ... -cp [-r] [-f | -n] [-v] [--preserve--links] -cp [-r] [-f | -n] [-v] [--preserve--links] ... -cp [-r] [-f | -n] [-v] [--preserve--links] -cp [-r] [-f | -n] [-v] [--preserve--links] ... -``` - -# Description -``` -The following options are available: - --r - Copy directories recursively - --f - Do not prompt for confirmation before overwriting the destination path. (The -f option overrides previous -n options.) - --n - Do not overwrite an existing file. (The -n option overrides previous -f options.) - --v - Cause cp to be verbose, showing files after they are copied. - ---preserve--links - Reserve links when copy links -``` - -# Examples -- The following command copies a single file to pfs - -``` -paddle pfs cp ./text1.txt /pfs/$DATACENTER/home/$USER/text1.txt -``` - -- The following command copies pfs file to a local file - -``` -paddle pfs cp /pfs/$DATACENTER/home/$USER/text1.txt ./text1.txt -``` diff --git a/doc/design/file_manager/pfs/ls.md b/doc/design/file_manager/pfs/ls.md deleted file mode 100644 index 0db163e08b..0000000000 --- a/doc/design/file_manager/pfs/ls.md +++ /dev/null @@ -1,27 +0,0 @@ -# Name -ls - list directory(ies)'s contents or file(s)'s attributes - -# Synopsis -`ls [-r] ...` - -# Description - -``` -The following options are available: - --r - List directory(ies) recursively -``` - -# Examples -- The following command lists a single file - -``` -paddle pfs ls /pfs/$DATACENTER/home/$USER/text1.txt -``` - -- The following command lists directory contents - -``` -paddle pfs ls / /pfs/$DATACENTER/home/$USER/folder -``` diff --git a/doc/design/file_manager/pfs/mkdir.md b/doc/design/file_manager/pfs/mkdir.md deleted file mode 100644 index 3ca5170402..0000000000 --- a/doc/design/file_manager/pfs/mkdir.md +++ /dev/null @@ -1,13 +0,0 @@ -# Name -mkdir - mkdir directory(ies) - -# Synopsis -`mkdir ...` - -# Description -Create the pfs directory(ies), if it(they) does(do) not already exist. And create intermediate directories as required. - -# Examples -``` -paddle pfs mkdir /pfs/$DATACENTER/home/$USER/folder -``` diff --git a/doc/design/file_manager/pfs/mv.md b/doc/design/file_manager/pfs/mv.md deleted file mode 100644 index 01b795be02..0000000000 --- a/doc/design/file_manager/pfs/mv.md +++ /dev/null @@ -1,34 +0,0 @@ -# Name -mv - move (rename) files - - -# Synopsis -``` -mv [-f | -n] [-v] -mv [-f | -n] [-v] ... -mv [-f | -n] [-v] -mv [-f | -n] [-v] ... -mv [-f | -n] [-v] -mv [-f | -n] [-v] ... -``` - -# Description -``` -The following options are available: - --f - Do not prompt for confirmation before overwriting the destination path. (The -f option overrides previous -n options.) - --n - Do not overwrite an existing file. (The -n option overrides previous -f options.) - --v - Cause mv to be verbose, showing files after they are moved. -``` - -# Examples -- The following command moves a single file to pfs - -``` -paddle pfs mv ./text1.txt /pfs/$DATACENTER/home/$USER/text1.txt -``` diff --git a/doc/design/file_manager/pfs/rm.md b/doc/design/file_manager/pfs/rm.md deleted file mode 100644 index 8bcbabdfb1..0000000000 --- a/doc/design/file_manager/pfs/rm.md +++ /dev/null @@ -1,32 +0,0 @@ -# Name -rm - remove files or directories - -# Synopsis -``` -rm [-r] [-v] ... -``` - -# Description - -``` -The following options are available: - --r - remove directories and their contents recursively - --v - Cause rm to be verbose, showing files after they are removed. -``` - -# Examples -- The following command deletes a single file: - -``` -paddle pfs rm /pfs/$DATACENTER/home/$USER/test1.txt -``` - -- The following command deletes a directory recursively: - -``` -paddle pfs rm -r /pfs/$DATACENTER/home/$USER/folder -``` diff --git a/doc/design/file_manager/pfs/sync.md b/doc/design/file_manager/pfs/sync.md deleted file mode 100644 index 4801ceedf9..0000000000 --- a/doc/design/file_manager/pfs/sync.md +++ /dev/null @@ -1,34 +0,0 @@ -# Name -sync - sync directories. Recursively copies new and updated files from the source directory to the destination. - -# Synopsis -``` -sync [--preserve--links] [-v] -sync [--preserve--links] [-v] -sync [--preserve--links] [-v] ` -``` - -# Description - -``` -The following options are available: - ---preserve--links - Reserve links when copy links. - --v - Cause sync to be verbose, showing files after their's synchronization is complete. -``` - -# Examples -- The following command sync locally directory to pfs. - -``` -paddle pfs sync ./dir1 /pfs/$DATACENTER/home/$USER/mydir1 -``` - -- The following command sync pfs directory to local. - -``` -paddle pfs sync /pfs/$DATACENTER/home/$USER/mydir1 . -``` From 9221f895a8e855cbb64d5aebcdf2f870057fc246 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Sun, 14 May 2017 11:34:06 +0800 Subject: [PATCH 19/24] rename pfsclient.md --- doc/design/file_manager/pfs/{pfs.md => pfsclient.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/design/file_manager/pfs/{pfs.md => pfsclient.md} (100%) diff --git a/doc/design/file_manager/pfs/pfs.md b/doc/design/file_manager/pfs/pfsclient.md similarity index 100% rename from doc/design/file_manager/pfs/pfs.md rename to doc/design/file_manager/pfs/pfsclient.md From 5f0ac852888c86ed5d1d3aed1b0001e8f6f065a1 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Sun, 14 May 2017 11:59:17 +0800 Subject: [PATCH 20/24] fix bugs --- doc/design/file_manager/README.md | 34 +++++++++--------------- doc/design/file_manager/pfs/pfsclient.md | 13 ++++++--- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/doc/design/file_manager/README.md b/doc/design/file_manager/README.md index 8d9c7487c5..2fe8fc2818 100644 --- a/doc/design/file_manager/README.md +++ b/doc/design/file_manager/README.md @@ -1,47 +1,34 @@ # FileManager设计文档 ## 目标 -在本文档中,我们设计说明了名为FileManager系统,方便用户管理存放到PaddlePaddle Cloud上的文件。 +在本文档中,我们设计说明了名为FileManager系统,方便让用户上传自己的训练数据以进行分布式训练 主要功能包括: - 提供常用的命令行管理命令管理文件和目录 - - 支持的命令在[Here](./pfs/pfs.md) - 支持大文件的断点上传、下载 ## 名词解释 -- PFS:是Paddlepaddle cloud File System的简称,是对用户文件存储空间的抽象,与之相对的是local filesystem。目前我们用CephFS来搭建。 +- PFS:是`Paddlepaddle cloud File System`的缩写,是对用户文件存储空间的抽象,与之相对的是local filesystem。目前我们用CephFS来搭建。 - [CephFS](http://docs.ceph.com/docs/master/cephfs/):一个POSIX兼容的文件系统。 - Chunk:逻辑划上文件分块的单位。 -- [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/):提供七层协议的反向代理、基于粘性会话的负载均衡。 ## 模块 - ### 架构图 ### PFSClient -- 功能: 详细的内容看 +- 功能: 详细设计[link](./pfs/pfsclient.md) - 提供用户管理文件的命令 - - 用Go写,可以跨平台执行 + - 需要可以跨平台执行 - 双向验证 PFSClient需要和Ingress之间做双向验证[tls](#tls),所以用户需要首先在`cloud.paddlepaddle.org`上注册一下,申请用户空间,并且把系统生成的CA(certificate authority)、Key、CRT(CA signed certificate)下载到本地,然后才能使用PFSClient。 - -- 命令格式 - -``` -paddle [options] pfs [parameters] - -options: - -``` - -### Ingress + +### [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) - 功能: 提供七层协议的反向代理、基于粘性会话的负载均衡功能。 - 透传用户身份的办法 - Ingress需要把PFSClient的身份信息传给FileServer,配置的方法参考[Here](http://www.integralist.co.uk/posts/clientcertauth.html#3) - + Ingress需要把PFSClient的身份信息传给PFSServer,配置的方法参考[link](http://www.integralist.co.uk/posts/clientcertauth.html#3) ### PFSServer PFSServer提供RESTful API接口,接收处理PFSClient端的文件管理请求,并且把结果返回PFSClient端。 @@ -65,7 +52,7 @@ RESTful API ## 文件传输优化 ### 分块文件传输 -用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient在传输完毕最后一个Chunk的时候检查destination文件的MD5值是否和source文件一致。 +用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient需要在传输完毕最后一个Chunk的时候检查destination文件的MD5值是否和source文件一致。 一个典型的Chunk如下所示: @@ -84,8 +71,11 @@ type Chunk struct { ### 覆盖不一致的部分 文件传输的的关键在于需要PFSClient端对比source和destination的文件Chunks的checksum是否保持一致,不一致的由PFSClient下载或者传输Chunk完成。这样已经传输成功的部分就不用重新传输了。 +## 用户使用流程 +参考[link](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/cluster_train/data_dispatch.md) + ## 框架生成 -用[swagger-api](https://github.com/swagger-api/swagger-codegen)生成Client和FileServer的框架部分,以便我们可以把更多的精力放到逻辑本身上。 +用[swagger](https://github.com/swagger-api/swagger-codegen)生成PFSClient和PFSServer的框架部分,以便我们可以把更多的精力放到逻辑本身上。 ## 参考文档 - [TLS complete guide](https://github.com/k8sp/tls/blob/master/tls.md) diff --git a/doc/design/file_manager/pfs/pfsclient.md b/doc/design/file_manager/pfs/pfsclient.md index dd4578e369..307d6b448f 100644 --- a/doc/design/file_manager/pfs/pfsclient.md +++ b/doc/design/file_manager/pfs/pfsclient.md @@ -1,4 +1,4 @@ -# PFS Client +# PFSClient ## Description The `pfs` command is a Command Line Interface to manage your files on PaddlePaddle Cloud @@ -28,8 +28,11 @@ paddle [options] pfs [parameters] ## Path Arguments When using a command, we need to specify path arguments. There are two path argument type: `localpath` and `pfspath`. + A `pfspath` begin with `/pfs`, eg: `/pfs/$DATACENTER/home/$USER/folder`. +[Here](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/cluster_train/data_dispatch.md#上传训练文件) is how to config DataCenter + ## order of Path Arguments Commonly, if there are two path arguments, the first is the source, and the second is the destination. @@ -42,7 +45,7 @@ Synopsis: Options: -r - remove directories and their contents recursively + Remove directories and their contents recursively -v Cause rm to be verbose, showing files after they are removed. @@ -86,7 +89,7 @@ Synopsis: Options: -r Copy directories recursively - -f + -f Do not prompt for confirmation before overwriting the destination path. (The -f option overrides previous -n options.) -n Do not overwrite an existing file. (The -n option overrides previous -f options.) @@ -94,6 +97,10 @@ Options: Cause cp to be verbose, showing files after they are copied. --preserve--links Reserve links when copy links + +Examples: + paddle pfs cp ./file /pfs/$DATACENTER/home/$USER/file + paddle pfs cp /pfs/$DATACENTER/home/$USER/file ./file ``` - ls- list files From ebdd6bae1b44fd1277fb08394287d927d39d2e1b Mon Sep 17 00:00:00 2001 From: gongweibao Date: Sun, 14 May 2017 12:07:56 +0800 Subject: [PATCH 21/24] fix bugs --- doc/design/file_manager/README.md | 8 ++++++-- doc/design/file_manager/pfs/pfsclient.md | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/design/file_manager/README.md b/doc/design/file_manager/README.md index 2fe8fc2818..2bb0af98ae 100644 --- a/doc/design/file_manager/README.md +++ b/doc/design/file_manager/README.md @@ -1,6 +1,7 @@ # FileManager设计文档 ## 目标 在本文档中,我们设计说明了名为FileManager系统,方便让用户上传自己的训练数据以进行分布式训练 + 主要功能包括: - 提供常用的命令行管理命令管理文件和目录 @@ -41,13 +42,16 @@ RESTful API - `POST /api/v1/files`: Create files or directories. - `DELETE /api/v1/files`: Delete files or directories. +- /api/v1/file/chunks + - `GET /api/v1/storage/file/chunks`: Get chunks's attributes in a file. + - /api/v1/storage/files - `GET /api/v1/storage/files`: Download files or directories to local. - `POST /api/v1/storage/files`: Upload files or directories to server. - /api/v1/storage/file/chunks - - `GET /api/v1/storage/file/chunks`: Get chunks's attributes in a file. - - `POST /api/v1/storage/file/chunks`: Upload chunks to a file. + - `GET /api/v1/storage/file/chunks`: Upload chunks data. + - `POST /api/v1/storage/file/chunks`: Download chunks data. ``` ## 文件传输优化 diff --git a/doc/design/file_manager/pfs/pfsclient.md b/doc/design/file_manager/pfs/pfsclient.md index 307d6b448f..eb119689bf 100644 --- a/doc/design/file_manager/pfs/pfsclient.md +++ b/doc/design/file_manager/pfs/pfsclient.md @@ -31,7 +31,7 @@ When using a command, we need to specify path arguments. There are two path argu A `pfspath` begin with `/pfs`, eg: `/pfs/$DATACENTER/home/$USER/folder`. -[Here](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/cluster_train/data_dispatch.md#上传训练文件) is how to config DataCenter +[Here](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/cluster_train/data_dispatch.md#上传训练文件) is how to config datacenters. ## order of Path Arguments Commonly, if there are two path arguments, the first is the source, and the second is the destination. From d187cdfa8eb9d29a347892e066cbc6bb83bd55dc Mon Sep 17 00:00:00 2001 From: gongweibao Date: Sun, 14 May 2017 12:15:17 +0800 Subject: [PATCH 22/24] fix bugs --- doc/design/file_manager/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/design/file_manager/README.md b/doc/design/file_manager/README.md index 2bb0af98ae..f06dee1cf3 100644 --- a/doc/design/file_manager/README.md +++ b/doc/design/file_manager/README.md @@ -1,6 +1,6 @@ # FileManager设计文档 ## 目标 -在本文档中,我们设计说明了名为FileManager系统,方便让用户上传自己的训练数据以进行分布式训练 +在本文档中,我们设计说明了名为FileManager系统,方便用户上传自己的训练数据以进行分布式训练 主要功能包括: @@ -43,17 +43,17 @@ RESTful API - `DELETE /api/v1/files`: Delete files or directories. - /api/v1/file/chunks - - `GET /api/v1/storage/file/chunks`: Get chunks's attributes in a file. + - `GET /api/v1/storage/file/chunks`: Get chunks's attributes of a file. - /api/v1/storage/files - - `GET /api/v1/storage/files`: Download files or directories to local. - - `POST /api/v1/storage/files`: Upload files or directories to server. + - `GET /api/v1/storage/files`: Download files or directories. + - `POST /api/v1/storage/files`: Upload files or directories. - /api/v1/storage/file/chunks - - `GET /api/v1/storage/file/chunks`: Upload chunks data. - - `POST /api/v1/storage/file/chunks`: Download chunks data. + - `GET /api/v1/storage/file/chunks`: Download chunks's data. + - `POST /api/v1/storage/file/chunks`: Upload chunks's data. ``` -## 文件传输优化 +## 大文件传输优化 ### 分块文件传输 用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient需要在传输完毕最后一个Chunk的时候检查destination文件的MD5值是否和source文件一致。 From 3c702059650bcc83114e050013f56ed942c017ed Mon Sep 17 00:00:00 2001 From: gongweibao Date: Sun, 14 May 2017 12:23:39 +0800 Subject: [PATCH 23/24] fix bugs --- doc/design/file_manager/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/design/file_manager/README.md b/doc/design/file_manager/README.md index f06dee1cf3..2cfc459d2b 100644 --- a/doc/design/file_manager/README.md +++ b/doc/design/file_manager/README.md @@ -39,7 +39,7 @@ RESTful API - /api/v1/files - `GET /api/v1/files`: Get attributes of files or directories. - - `POST /api/v1/files`: Create files or directories. + - `POST /api/v1/files`: Update files or directories. - `DELETE /api/v1/files`: Delete files or directories. - /api/v1/file/chunks @@ -53,7 +53,7 @@ RESTful API - `GET /api/v1/storage/file/chunks`: Download chunks's data. - `POST /api/v1/storage/file/chunks`: Upload chunks's data. ``` -## 大文件传输优化 +## 文件传输优化 ### 分块文件传输 用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient需要在传输完毕最后一个Chunk的时候检查destination文件的MD5值是否和source文件一致。 From 0fb76c3fd68784088ac75cf5f9e9875396de15b3 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Tue, 16 May 2017 08:24:12 +0800 Subject: [PATCH 24/24] fix by yancey --- doc/design/file_manager/README.md | 12 ++++++------ doc/design/file_manager/pfs/pfsclient.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/design/file_manager/README.md b/doc/design/file_manager/README.md index 2cfc459d2b..3df10d801e 100644 --- a/doc/design/file_manager/README.md +++ b/doc/design/file_manager/README.md @@ -34,16 +34,16 @@ ### PFSServer PFSServer提供RESTful API接口,接收处理PFSClient端的文件管理请求,并且把结果返回PFSClient端。 -``` RESTful API - /api/v1/files - - `GET /api/v1/files`: Get attributes of files or directories. - - `POST /api/v1/files`: Update files or directories. + - `GET /api/v1/files`: Get metadata of files or directories. + - `POST /api/v1/files`: Create files or directories. + - `PATCH /api/v1/files`: Update files or directories. - `DELETE /api/v1/files`: Delete files or directories. - /api/v1/file/chunks - - `GET /api/v1/storage/file/chunks`: Get chunks's attributes of a file. + - `GET /api/v1/storage/file/chunks`: Get chunks's metadata of a file. - /api/v1/storage/files - `GET /api/v1/storage/files`: Download files or directories. @@ -52,11 +52,11 @@ RESTful API - /api/v1/storage/file/chunks - `GET /api/v1/storage/file/chunks`: Download chunks's data. - `POST /api/v1/storage/file/chunks`: Upload chunks's data. -``` + ## 文件传输优化 ### 分块文件传输 -用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件数据内容的上传和下载都是都过Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient需要在传输完毕最后一个Chunk的时候检查destination文件的MD5值是否和source文件一致。 +用户文件可能是比较大的,上传到Cloud或者下载到本地的时间可能比较长,而且在传输的过程中也可能出现网络不稳定的情况。为了应对以上的问题,我们提出了Chunk的概念,一个Chunk由所在的文件偏移、数据、数据长度及校验值组成。文件的上传和下载都是通过对Chunk的操作来实现的。由于Chunk比较小(默认256K),完成一个传输动作完成的时间也比较短,不容易出错。PFSClient需要在传输完毕最后一个Chunk的时候检查destination文件的MD5值是否和source文件一致。 一个典型的Chunk如下所示: diff --git a/doc/design/file_manager/pfs/pfsclient.md b/doc/design/file_manager/pfs/pfsclient.md index eb119689bf..56bc70c54b 100644 --- a/doc/design/file_manager/pfs/pfsclient.md +++ b/doc/design/file_manager/pfs/pfsclient.md @@ -109,7 +109,7 @@ Synopsis: ls [-r] ... Options: - -r + -R List directory(ies) recursively Examples: