From 04f03056c05929f64c3ace73467aec4f0f70d015 Mon Sep 17 00:00:00 2001 From: Xinwei Xiong <86140903+cubxxw@users.noreply.github.com> Date: Thu, 6 Jul 2023 16:01:26 +0800 Subject: [PATCH] docs: design openkf docs (#68) --- .github/workflows/kubekf.yml | 18 ++++++---- Dockerfile | 2 +- Makefile | 17 ++++++---- docs/contribution/issue specification.md | 40 ----------------------- docs/contribution/issue_specification.md | 37 +++++++++++++++++++++ docs/images/openkf-log.png | Bin 0 -> 65416 bytes docs/test/e2e.md | 2 ++ docs/test/integration.md | 2 ++ docs/website/.gitignore | 0 docs/website/Makefile | 37 +++++++++++++++++++++ server/internal/router/router.go | 2 +- 11 files changed, 102 insertions(+), 55 deletions(-) delete mode 100644 docs/contribution/issue specification.md create mode 100644 docs/contribution/issue_specification.md create mode 100644 docs/images/openkf-log.png create mode 100644 docs/test/e2e.md create mode 100644 docs/test/integration.md create mode 100644 docs/website/.gitignore create mode 100644 docs/website/Makefile diff --git a/.github/workflows/kubekf.yml b/.github/workflows/kubekf.yml index 34e514f..5e7bc78 100644 --- a/.github/workflows/kubekf.yml +++ b/.github/workflows/kubekf.yml @@ -44,6 +44,10 @@ jobs: run: | make tidy + - name: Run go format + run: | + make format + - name: Generate all necessary files, such as error code files run: | make generate @@ -59,7 +63,7 @@ jobs: - name: Build source code for host platform run: | - # make build # skip build for now + make build # skip build for now - name: Collect Test Coverage File uses: actions/upload-artifact@v1.0.0 @@ -70,12 +74,12 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - # skip for now - # - name: Login to DockerHub - # uses: docker/login-action@v1 - # with: - # username: ${{ env.DOCKERHUB_USERNAME }} - # password: ${{ secrets.DOCKERHUB_TOKEN }} + # skip for now + # - name: Login to DockerHub + # uses: docker/login-action@v1 + # with: + # username: ${{ env.DOCKERHUB_USERNAME }} + # password: ${{ secrets.DOCKERHUB_TOKEN }} # skip for now # - name: Build docker images for host arch and push images to registry diff --git a/Dockerfile b/Dockerfile index d6b8dd7..8eece81 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.18 AS build \ No newline at end of file +FROM golang:alpine as builder \ No newline at end of file diff --git a/Makefile b/Makefile index ba3fc9d..0d72595 100644 --- a/Makefile +++ b/Makefile @@ -58,7 +58,8 @@ ifeq (, $(shell git status --porcelain 2>/dev/null)) endif GIT_COMMIT:=$(shell git rev-parse HEAD) -IMG ?= ghcr.io/OpenIMSDK/OpenKF:latest +# Image URL to use all building/pushing image targets +IMG ?= openim/openkf:test BUILDFILE = "./main.go" BUILDAPP = "$(OUTPUT_DIR)/" @@ -72,9 +73,7 @@ MAKEFLAGS += --no-print-directory endif # The OS must be linux when building docker images -PLATFORMS ?= linux_amd64 linux_arm64 -# The OS can be linux/windows/darwin when building binaries -# PLATFORMS ?= darwin_amd64 windows_amd64 linux_amd64 linux_arm64 +PLATFORMS ?= linux_s390x linux_mips64 linux_mips64le darwin_amd64 windows_amd64 linux_amd64 linux_arm64 linux_ppc64le # Set a specific PLATFORM ifeq ($(origin PLATFORM), undefined) @@ -211,6 +210,12 @@ test.junit-report: tools.verify.go-junit-report SERVER_DIR := server +## run: Run the server. +.PHONY: run +run: + @echo "===========> Run the server" + @cd $(SERVER_DIR) && $(GO) run main.go + ## tidy: tidy go.mod .PHONY: tidy tidy: @@ -269,7 +274,7 @@ cover: test.junit-report ## docker-build: Build docker image with the manager. .PHONY: docker-build docker-build: test - docker build -t ${IMG} . + docker build --pull --no-cache . -t ${IMG} ## docker-push: Push docker image with the manager. .PHONY: docker-push @@ -279,7 +284,7 @@ docker-push: ## docker-buildx-push: Push docker image with the manager using buildx. .PHONY: docker-buildx-push docker-buildx-push: - docker buildx build --platform linux/arm64,linux/amd64 -t ${IMG} . --push + docker buildx build -f --pull --no-cache --platform=$(PLATFORMS) --push . -t $(IMG) ## copyright-verify: Validate boilerplate headers for assign files. .PHONY: copyright-verify diff --git a/docs/contribution/issue specification.md b/docs/contribution/issue specification.md deleted file mode 100644 index 5cd618a..0000000 --- a/docs/contribution/issue specification.md +++ /dev/null @@ -1,40 +0,0 @@ -# issue specification - - we use [lot issues](https://github.com/openIMSDK/openKF/issues) before reporting bugs, Please make sure that has been - searching similar [question](https://github.com/OpenIMSDK/OpenKF/issues), because they may have already answered or - is being repaired. New questions should be directed - to [question assistant](https://github.com/OpenIMSDK/OpenKF/issues/new/choose) submitted. For bug reports, include - code that can - be used to reproduce the problem and how to reproduce - it. For new feature suggestions, indicate the changes you want and the expected behavior. - -## **for committer** - -##### **working for pr** - -- commiters should finish code unit test again and record test dirary and if nessary do somke test -- commiters should check for code - convenant [code convenant](https://github.com/OpenIMSDK/OpenKF/blob/main/CONTRIBUTING.md) - -##### **working for issue management** - -- add labels to each issue and check it out. -- format issue style when needed. -- keep in touch with each contributor. -- Keep up with the status of the issue. -- assign one or more who to solve it. - -## **for contributor** - -##### **raise issue** - -- developers should add full labels for issue you raised.(including **kind**(问题类型 such as,feat,bug),**Degree of - importance**(重要程度 emergency,important,normal),**strategy**(处置策略 such as self ,paticipant,coperation),* - *progress**(进度 such as running,later),**size**(问题规模 such as L,M,XXL)) - -##### **claim issue and make pr** - -- developers can claim it by comment (want to claim + issueId) -- when doing pr process, developer should make Incremental testing at first and then doing **/contributor.md 's** - process. - diff --git a/docs/contribution/issue_specification.md b/docs/contribution/issue_specification.md new file mode 100644 index 0000000..ae65d94 --- /dev/null +++ b/docs/contribution/issue_specification.md @@ -0,0 +1,37 @@ +# Issue Specification + +Before reporting bugs, we highly recommend utilizing the [GitHub Issues](https://github.com/openIMSDK/openKF/issues) page. Please ensure to search for similar questions on the [issue board](https://github.com/OpenIMSDK/OpenKF/issues) as your query might have already been addressed or is currently being resolved. For new questions, kindly submit them through the [question assistant](https://github.com/OpenIMSDK/OpenKF/issues/new/choose). + +When reporting bugs, include the necessary code to reproduce the problem and provide step-by-step instructions. For new feature suggestions, clearly describe the desired changes and expected behavior. + +## For Committers + +### Working on Pull Requests + +- Committers should re-run unit tests on their code and document the test results. If necessary, conduct smoke tests. +- It is essential for committers to adhere to the [code covenant](https://github.com/OpenIMSDK/OpenKF/blob/main/CONTRIBUTING.md) regarding code formatting. + +### Working on Issue Management + +- Assign appropriate labels to each issue and regularly review them. +- Format issue descriptions when required. +- Maintain effective communication with contributors. +- Stay updated on the status of each issue. +- Assign one or more individuals to work on resolving the issues. + +## For Contributors + +### Raising an Issue + +developers should add full labels for issue you raised.(including **kind**(问题类型 such as,feat,bug),**Degree of importance**(重要程度 emergency,important,normal),**strategy**(处置策略 such as self ,paticipant,coperation), **progress**(进度 such as running,later),**size**(问题规模 such as L,M,XXL)) + +### Claiming an Issue and Making Pull Requests + +- Developers can claim an issue by commenting "want to claim + issue ID." +- When creating a pull request, developers should conduct incremental testing before proceeding with the process outlined in `/contributor.md`. + +**Additional Details:** + +The labels used within the project are synced from the [openim-yaml.yaml](https://github.com/kubecub/github-label-syncer/blob/main/labels-templates/openim-yaml.yaml) file. The [github-label-syncer](https://github.com/kubecub/github-label-syncer) project automatically validates and syncs these labels with the OpenIM-Server repository. A script is employed to periodically retrieve or sync the labels from OpenIM-Server using the actions mechanism. This synchronization process is incremental and also takes into consideration modifications. When adding labels to OpenKF, existing labels are not removed. + +The labeling process is primarily automated through robots, with minimal manual intervention for label selection. In the future, the powerful Prow system will be leveraged to further enhance community management tasks and enable a high degree of automation. diff --git a/docs/images/openkf-log.png b/docs/images/openkf-log.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9ffe6db27904ca5f1bfc10c23edda40bc77b3d GIT binary patch literal 65416 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 z zUsrXEWhfVByqu_@89UX3wRFomun3f%Ws&LuoLkCdYe6s{(8-r6QNg`baC+(l*J9aC zFT8pD&?)Zcv^=z~d3E%Cv{C@?Pr|NaWC9cC9MH9*zW<#`j>`I6DAFJ%2UKx9`3?=L z5or+BT*vBf{yey!x>28jy_UW@JoVn3sbZkOZ-7Q2pDO_uk`9hV0BHSOFscr)McAgE z3wSWL#p1+Lb9YR=;JUFdFYY7<)@Sa&W%qg4kgP6wG`FS&9a@90MVW`K2WiLRE=3-S zaIEGKiLOzIj@MH;D09$B7+1LjgaL;lHX|BL@b&!B6l&H?1(2cT83n1YH4aXWI@FF@ zdj>Lw#6`od9V(InbWtXr#}yz&Xf0539p6wFBTck~POwfr-*;Jnpf5QuVr#qcMlT;J z``GDd*fRth1Vk5T1gbZp+M?uGP8f*5Mt1~Pb=*ei_JTHypoP5sQ_l(`AXIz5lc=zv zg56REt7fRPKXYa9qolqzh03M$MynOzioe|<=RjJQHEL-!z)w`mb>|Zukp6?mqw!JS z4Ac|=vVw}3&S=7tRS(mAqsiqnx$usBNF=~x<5Xhrfxwe?)XIQaPrPfVV$7iSxW418 z(9KMct|m;;wf`=(CRSw$VjtlsapyqQSc<-CwGld)_AMi*ycdV z(a&x=%@*a`Czg$ox2~TrU0DCrf&Kif03gFD1*R~ zZT~IF{hslzg2n1RurjR9t67DR{+f=>eGuKBe=yeP3tkvLE(jyU;)gGMcr&4>{eqkK zer&0q$K7Co-ry<~RyD<=(8Iwh3@}9@G+Z4Indn^1-iPwEr`c2r-R*pEDZw@ca3Z`v z4vOtF#fnX5X8n;gtS;|+PFLD*R~Ow+-K`GaX=x~5=oEicmCdw< zni~DkM%sl>UCL*yCT)SB86I|&OFJF0tK@D zHJ1SY)S0I=pu`lX?-YF9vlcwDQdVt;yuqw1QYqFJQhpIvT$0TL%FVG2dySSsD_gc_ zqdJ!@7lEz?#@6Rr76>oq!w)}Oc=a}M4bn$#+xkZu!>V}8AGt^8N+U$>TU}-B%Y94Q zgMb!eLA|7L!`NrqQxO$ajw>7iFjNZoJ8;14d)np@d4)mED&7G65ZG)~pfm0ZuCO5< z1q__Br|vIy8HVKH9d)`}A-@^Q5QX<3=h9u`9zzJZfrsCYYlW=O9Tg>+Xit+)=Bn1% zr6%-L*3B7Dw+(`+nX2PIT#cv_Bv~eYs@D07p7=f;PCe)POVq+DvGw`qE7%2&r~th| zF9usS%f5e={}{+I(!ZKTn1s$6@X6c?ll~T9h@t@((5wu4%$iD?7!A?BTs~9k^M2gj z8t|LMHa7SDd(a`PR*mqfSlCI4TzAgN4DQ%D-eGCR%EN-^-WWBHrsi)2wDghf-7$(@ zOYCJric=pVcvY%QEQ>cLo<}j(IRs-`VPbq-C_jXtgOCRSN72aK-Hzh2UIetj)JRGh z{7AJ&%Cl=bRT2-)prIMI84iMQcTS9)`Y8vuwS_c9wGZbp;nL80l2vASD8X(8^mA%X z46W_&1wY*N9}v^=d)>HDY%X<%8x>E^&hjZEc+s0Eh4F?(wDVoAc|WCCTu2&rWGSw+uvB^MK@X7R zC1hfFD%!evCe?Dj4v1OjWBji*M)~~(=5s|at7NYU?^s+CNMdB9e}v$Z$VZIcLvs%z z6fM}&{}-t+k?3B@QS<@h0Bi;SeA%$Br`4u8f>wgg0UW3waES=yYibwMw&6RU6f;-n zRP^ue9synvbFW%V!BBv7q00zSScfu z03ew0DQC;jV&OC+MznbrEaf?494*%Qv-mgv%UTlm5WPk3b0M_qn(hlOJlrpgamtW zJA#vaSs8h1bv^h$)i3a%jOKO)A=mi`7jBuBR;hqUYie4H;HMeknfK~C~PEZp%Wmm;&e z)Ygxtt<>L^65bTf>c@TlF?WYOv7;USNzkw)xeXDS2ie)EBP14BazkN+V3=xC)u0*fz;SKu3gJ6tQIUZJ!I4X zdN;6P)p##)c#}~dF1RBNq}$#?rZ9H`TpC>A?7{WV#!u!L9p<>=g<>jUl!TYMkW`nDx-r`s+~>EUIIaa zW0GvyjVNqmfA%rJ3ADG6XwRMrd+rN4fAdwobvm#74)#Z?)1S;h8%NK11E~4e;ZbAj zrb9DxUHjTg=fVWJ?NpOoa)Q+;JCiVfISA!pOZsugY_Ze;RABk*!~S@aJvroBL(0p$ z#iBp3g8Z|EiEWy4_ZrTXoH)+ecbYS-;)BF4XoFRs*&R!Hx6@#Mmt#enpYW-QWykon zok?CL)ihMtV2v-|!$cLsETL^#Sy%4&Ai(rgW7`~1_0m0(F&z|TOwTA8Aaw2T>`jnj zyR8fwAl6yL<2)T_UG@>X@8q)a=TEIvP{q9d!b7(YI=E{=`|35>_*fQpHo5V>gaSBX5C6BAcsq0&}}omt2&f)1PJ zl)-G$xprDGb5KPni*Fgt?k&-Sw0V|nD<3qOcHK~4-2t<&b?s$aM?AuG2*2J)>I;;( zv<%n=-tbXmj3Pg6rEDLCz z+iX5iz1Tq=8$g8&EQ`Pjl_=8-M#zrYUlq`UjL$<9Bd8pE74E1FH?^oHUwg%Aw@O;5 z-Oi@Y_6mTg2UT90`15`voA42uq+I{9>R@8U zn5URiFGm6Px*_M0aj%2p;B-x!M`)BCCZ^JbcVzV$S^_Nh`20b~(MH3kt);z2o;%EO z|JLH|!>iJHr~^!e#OV5M|l8e@6;uOfv~`$ ze3LNMHCt5MNm65^G=~y@h#>2BzStVEqXRmrg$V(chf+00;qz_)xv`X3Y{d*{hsB3p z2y*3gq`d+e*a->W#kL%{jsI#OPR^2x0R;+SsKDSblfAoASy>x~`39c6<-#U+e$zEh zU6(5i8Uw@8oxQGNXgl{hxM^*J>{4uCxaCM-;V>qzxM|nC+}dK)_x+EYK-cCIDFwI6Z`- zAzU|kLO$-M`!Rba{{540x56%L)gl45@!>yYUEq_6FhxF|0;}0nAXmgdhW7={rt+Vk=T)s|+TD-BNGq zK^Ey(t@)|d%9>m9pP*X5f!f8F27C^s%|lHZ2Yzw&6mKKNxSmRt70?5-=1Wh@5e=Xy0l5Q!DnSkFZi&buuv0_};y{G;UQ|}qpS%XXYMGt+#|WL`U|0S3yjtXhr_N9G$y|l>QAL`t6rGKaz=A zJ(2y>qa3+^YFTtLPxj;{CRbqlP^+>t=gA*&vV&pjDn)tmD!LUGga{wws$US=#C`RH z1rW=?Q8jz0Y4F$_H73Z!xe-3;XF4M^aOUJLrf{4ePdZvXk1 zV>^2-6~&e)P5tk4DJv}S-a|M}OviHl^?OwRK5Dw+=U8s)KL6nY zm?JrzPC!LRzW^r6c0JaxZv?{m{%vFd-$Q{$SX!)6*Aw%EPMtd-D;Rfw9j7Ywa-(-+ zCGKA9h5r`2LR<(GW^m@E$K6_f3@_0rm;F3zB!7N8ycyBX;a@%(Fza}0HMk%C!@Ba& z=2~p$?}m5vY>_@!z!qD_Wv}`LG-L?zXR;he2vt6>dFk zmMya4KYDS@)*y!)>1Fd0!q}En2gfQoiA={opMZmEF16~_DdTE*tLPZngt-kZ*xa{M zQ(ig%c0n(&Kw3W`*@R=;wwt+wg=ha}wuqW8oj4xwt~5lJv@^hkX&u<^3s)>&dhGk( zhxDtNEhtto7c0-f*lu2T*^!JO5ORW!j3LUUUD3lE>KVU|x=o6KdVQhn@~pcP<9*S? zeKfb2d55yGRT;n!h;44Hn#m)CF1a~b9WB}Wb1UjxW7pNo7fay0Unl^rS^~ z7(gmoi=vg72!afBFqbJ)7moWg0g5{Wcp;tN}WxhC8FWkx^TFqYPP) z=p)cmo)VD~wL&8eb+pOXI>S~I_r~^^6B`?NyR_m!f*wczMpqdWz;a=+MrY3|Pt|AH zwqC$ik)1-&J|fsX3+J)P1D%0uyLkskRGGHT#pBLC4v|Er-ZDgEEVM;u6A>uB;>V13 z--r%3rGP|uQzk3k)fRhP)DmJ}1J|IUggm4jL{-$&TYP+Abb1zTkjJcJvT5lc@aUp9 zbaDUPduF#mf4*CQrY5)7+^N*HGWNT5;YKC><35yHwGDX^=j0in_yxiXt%fxhBAx0$ z?j5U+GGt2TM~q;rzE$56yZg7`gF@R}_o{-nx*!&t`-z9I6yKjdNNu?(W;FEGYGAYD zUfmFuH*p~zF|TAMx_5;hR8eycWDMJvm2>v+O{VOV}`dpT-^7}We=UzYM z`1;#gpKE^04OxwRadde$eX{C|D~FN*(&1C0HP;NPa5ZJxgy8^TH}fn!4O_Q`$P2N2 z!ztxSjSomQFGn9{`q!O-95d&XWR|Qh=REmh#io#Hf!P?LuJAoKWA{W9t0Xv3G|m=l zsvxVwdPa1o_SMfGg-}~xL%X~;!CooqdX>XQC(o&Snvri(Z4dR$^YA=c%9Uytt8;@; zP3jDAlx@1+(7*@;@;fwq2yG|cnk*u_A1oFXe0YPi?Rhi&Lj$@R6wGv12^Y_jDN4Ry z%iWJVisj8@RFy}|>6;*mW#Mtb!x6yV?Z%Y3zmEl34UjF7XA=X;)5j$imC2&rB>A1)9p0riITcmT+aw*H zrIZHLI|`S#IR^+by8D}4#frR4bgWZF7 z30o%QAaT+oDfi*@X8FM_pq;SS*~l**eD`Ve1N?#zkBzFbCO=tTym*)RLVL1ZGNnLWPyU+zCQF8 zy#UgYKaPd(SCQ9{`Pf%jMG89hwlxz&N05i{LhFaz+6TEC9Nzc28932@YkI=*PH<|Z zLCok%n$%%@t7=~>^G$wK^XuVBq;@p=hwZq+h@@d?iC*x!Se?`6+$DX@J-6696zCf; zm%vv}7VwLRAzrRoI*V1qTKVX#=!x6&>Z_rvjEhP1Ug&CiZ1ECW`X}$%M|nQr@Tmrj z&8UxTb!Yn5o}r|0l3^}t93f~4aICBI2=ccp#eZ*sszdqhlO1(7FwUCgTv&NTRngOL zOB|7GNh)YM$Go8UClAfdCrAGv2{G5&Mm?m%`%@lO#rMZM3kp%KiG zCJ>s+U-h=Hf_Gmh(uW?G9TKo!T7Jwld3Zm6EpeO$EiFX#Glk%flWdXH5xG2+GMlY` zJJvWT75AKU=vh_<_Z$FZfb)pDG(U`Vnw4Gj%=*}*~H3js+qFq zyHZmWEmd!4y9{^xlqC!H{G)^Tn+7-d$;qdh%#fHldd@ZD3)6QyT^`+`B(Iu9x)Juh z)EzguX{>HM)0MBmUknOI9?6p*1oFsaun+1MeE!9-xqd{2&wBOTujN)wj#!JDM+)C) z_Abko^^bs?OByJ}QlQf>UT2cCwPSNq!k&{2N@L$N8%P^>S<C4kG_?Ux8-@?cJ0v z$Y)SUUfr9q&c$4-9=Hei;i0@MTgt~bj|{X0yO*=5IZ$&!25OE+A6 z$ZzdR=RI=@RHcNsx@`4Qt6#XD!Jk)NSDDxE-TzJBSqC|n0F`GE(>}~g*o~Yt099rB zbbqgADj7FdSC5?v$;bbF@wzbJd+-S2;{Gwr;6h+(N&aQTkjco2q*7v#ae{K^6~xI! zu_Zf3O^T@H4OEgPv6MRmLC%7-UT**NsXbX;?d(v&Z(-wk@3H-rHpwG6cRoL+tC8eJGZ5F&-9R=($Wwex}`&aqTk2{Jy{f*oheXn{l6PJ*0w?$T7JaBnu z?Q~rFyfI{qVqg;l=Xu*gDu5m@P{U&)|lSM4k1eomZ>dnQChp zm@FTC<97B!&&rn8Jt|LOxw(&Ifmb(!7>$qs>x}lK79&buHq0M^>N@x|q}X@r>C<5f z{n@ES=)Z>Vd{jJsnwY9_$~$`--n&SN{wpf>HYr_8=`!L(hznzQrFXm`+;>BrE4zmA z^M$3Dd|w@hjnMkXKY6PM_&(A~XVEnwCmHVx=;kv=Eq7^D3eB(~Kv7AioTf*AE)!(& zrRD6qaQ{QzGV_86DLTh<9~OUn;x4R^m=HeK^0YB=EKFIm(b@GANSif7WP@t*aGq3X zN(*i&^>*f!q%UXuHATKV2+fZ@&|shH+qaWRb4S~H4rHT6k?z~HD8omi8_>%lPvX8R zW=%ZHy?QmjGd)xPlyk_q;tLt%#ka*%%|3#GwpLWbjWGWz0xy?Xe>*1WX_^N0bPPkm zHEpXvvqnF$#;r;Jw6zVwfH2X{_^jgR_Wg(a7&GokZjlq2&4rT>1l!Ob=U{H020nPI zeD|?F@3Z8>XO(K7`^FN}Zk9TgN7ui0-SqQsN&!K*%zIuDmYmqK!1JcJY}F@|hoD1* zZ}kalvFB%|dWB_tLY!%qekg0Of1OguP$Mk6r1eXce9C}BXG$c(H?Uu~{W#p_=mOBQ z&90fqnMc(&Yad^pn#he*F7Z<>32gn%k?<53htrCr##4WGywZGl+M_Vb`SCATgdJ*o$n>mw99G6T@&@Azm(G zNQ{nlL>(4Di~GeBaJJ=b)LrN$?ayJh_bX%bTk4!zJWM`zj7@WP2;bP1uUnh&c~^Aw zsFLo?0eSaKZ`<@&u1Mf_N7sJh{*iP{$MLmqOIT|7qS5Pw4V&!qUS^byav+p%UhU9= z5O6Nd+$xqsX2R3f32rHZJI>FG6T)MSUDgufGE`mPX%V!mh2GTYlqHSdVb?wR#Vd)L zaeq;BK<%bDJT3G7pKMpRQRX_TZP)sK`)FTmzt5u2QRY`=XueP&k*X?)D=4#jC-3te zs>yTG#_4iD+M8{KW&2VDO1~@zRF2PYGs1^wW7&Yy^4{qoJk~G$X4&(~(1Mo14Fp`& z&ShLf43jh9ePBd0Y2aYxkv7!tRYd zCe$()Peiv=i;f^Xuj*Jig#NV**l&=(6j-)R+HvXD3W27 zBUxlzTF;N{Nyv8g3$8J@Uxg_WbE;VRs7)B0-EOSM1|5eJMgB>=>6*EdelC;Z_StWA z?;As%FD$9V*h!oR{6Efyfa7Qo+Tt{Jcw?q3%ckB^s2wBE%hgIsg_zBx5bv;t*)t$) z`v{xmlyYJ#L@0r##oRNSA#?dLr`D^$rozOal#%v5dboNetDJ#yb%=#>rJELUN>Xt% z#Z@z|nWB@AY>JF&6N5G$VB!wckHCjx0tA?)e%e+$Jc@LGw^<@k#!L+PlMbPzwVoa> z$sC>aPr_v;W_#(EjN)Bc-TaK?_Ivh;Y-pd`38RJRDl@Wcle}D8B>n6Q-^%hrt&!U? zBiM}nW0P!PE|2d%9WQ4xh>H@V=%kCFvA}`d0+sAHPY`%@>?J zQ@NG%ox1bUCZ=~V+7`3A8v(i@S{;n)<$z--i!D4wW=wd}My)`F|Ks@2pWoDTZWlcg zcQHiRNd!c?YKj_nP0?&+4I+;S_CGs%k@?9bPT`in2HwaEvHgv-Whh|pE6tg;R!lHf zY)1KU7Pj2D2mZEWK}W&eDb~UpHcHv9Y!(V|RSAiED_`rBRH) zL1=3YNpWRZ2v~2SI`kq{D@|C$pnl8e2jK0hWaFs2R0lTtsPBUi4~gy>6QGcC2A- znx$*1z&19O-HTt5Yu=MnOcE@b@#0)I(2md~yJn@M_>Od7?SVnDE&lDNS>p{7gJOz* zsooedw*O_d#WGmZde~lZ8q0bu#kGqIvk)ys5qd2|2po$gzs0u+n@q8mC9wvB@vn?l z7rH1W>h9>fsIhq!pr{Geixzy(7f`kJ3MLhksVq@K|s1F=I#)UXiQ%dG^r-^zbD__F};63pNHOhnDPa zPj*BD+AAvX)9)lBP;{{QdEfIOBb+e;Mf1&m^FDRi8b7JbRzZ!DQjsykfbB`ivVPC- zyT_tGwLm2+D_~zii+njprkwZfALY_P*||_#c^%a+6yikjX4H+MePs>re};F&t?Hl2 z1NZ2vlH1lby&tvfKTw2_Y=ozSam)AW6R`i(tS z_#*VzW11`8B_{6v3agPTzTGCXmRD$oyubD;ei3CD21XBZXikbzOZio((WPyse5561 zJ+Hn`VXO1u#o96@$;|MkM&?`-0zb*v}SI8S0K)XO|9Z9h2M(9NcXN7u6|R!Ut`(?W^7kE+Y&e0TkLRp z@Wso-+J?cd`i?Fj?){328Yi*Ns+;B%&8G74*KeIux5&+VTfWR_6Bx5^&GY!4mNcaj zCq_kM-ll2=z2$>9e?xg9M4h5IrUp`XHy@jnnUwp2>YnULQ}NMwdl!f*MD$uDP9RNJ z^?Ex7cnQF`0YL|G7D5>cc2El$v(`!p#sXBM7adK9{%2yg@z%Ko2ri77+vl?4ovSqQ z&f_OLSGMf!Qk`yxfFe>%k6U_o-KEdve-!M5mG~kFSF9>MOhKwi8fCP1N(49N8TZdg zO#$5}$8+TegLEXSRh6~!37h%yOE^=!`E2HN6^-C^j-u!tRFWQUS*O~=7i+S-{azBq z4&lT<&#(I2_&@Vou!mYpq8|^5QPpc_?R(ziMKUam7trR1))v(0>MMx(vB1|srb!fa zO)n;u%pSS2HOecf`69QA5f@(oS>1T#HA8}R3!7)`@gibI zYg%G#3}@Suq0I<3F2@!Xtvik^FMl|^I6iaYqLEmR^>cQI{|bqTOG=n07vH_xjPl_u zoSws2>Gy`jT&d!_(f?Pd4wQ~8_O#glIn3DC^(tBsXA|;{Kuy3!x~&B$j1R5l2UHBS zS2?%raZ|1iHQvynhuYODfV-BKVNU2o&%0HlQg)+?_O6g>#2}yMW`GS_;Ea)|x)4T# z6kZ)Dy97jY{E~!!qcIm9FRsmD4h?XG5}r9~Q5pilxIy>A|C>e((u$zBK-VpRI7&LLy^ zm9HKY=%(Y6MN*+vQdnCu$N{sA1|JPLjGi_^WY-ikW;4~zuJx4yxRuV)6c`b3vH$n? zTGR037EU+1?ir9_b@>?o;HQ~YWzA#1D)jYx^YER1&fcPyhQ=1uy>=5qigobJG<*o5 z7=I>~i@IA*>rZuy8VS4e9Fn3G27&CnnQ3jgS#vQelw9?S9H?6pymSV#?QsM6J^v0D zIAZ_57Xdtq7Ob`1|Mf8vbyY22fn?PPz#?6N&j;DZ;ikcY(cpj0%&Nrf6sCHeE;TVS zZA)@tqbx1Fdits^hOyA&IE`*MtfaW|f{hRsI@~p$G2&ozt1gZYy9ZeMfX#x6oxA=^ zj|?)QFgo=R%JBW||2f(~5Nl1+v?L$)Esf(!5`AC|3Y>nt^{?QD6*aIo@P*txCc6^4 zs2Uf)s`xbf;^lIX;lin5vC1io70QY>s9S5i$SgakawqH1e8rqxl`6uU{*DpWjUIQ@ z3Z`?82QK7QQIZV`N25%&027ftsE9f)Vz>l>Jngw0y94f-VPy@%9Ol1=$}`SoHaZIN z-7ju|vqQ=nL53jd5*CQwst1WPRCSm`>%B+x4&}dvK@q|i;ds{p6^-?oRi=NVzI3s* zMDh*H{v%~PahZMjhyMq&$S+T?a#YA&dexz45h(D0wbGj3E;7A&76Qr1>qAW|Ylu=k z%%GW5?u{M`{w1wU(#EK!alF&0zF*14YkC|`wX%k)&fKpGwaS@83wv@^*oOxbXOG+c zc>(PmVg!)12X|dqQ@X81u=7Hefg>EXSJU<4M*A@uT;pbl>o9=VDm+c}Z#)BeAO?i* zBuBESKOH#>`8;iMO=ujwq?!pPs;@~~?yWb^>!%h$uu-iX8c@N9UbU*6r-Lb|{DMo6 z*X1z5vN^l0H&LRR+1^@b>u5P`ck=;tjwtmR%qLYlh1(jr(vxGys>P{q`w5A~EP_|| z!SfLU`6eWcZ5?sjx!Sh@&OJDKidnP7B>bZA0f@YI6T6aFNp#z0HK@Al-B~Iz{WMq_ z=+L!HH|!S|nmSs2PRyAV=-zvk%0cI}70r+uVQN{?oU0{!)_5{~sm)PrXH{mJVN8+VEf$IDUtGqVzM1K(*S#J;-l2#h9}e zWtz<9R%MK{z}PaCE6L7@{n_NPC2YgL3Jl$)tbzWYn_CKAUBdSc_o6$g>Y6kv7e(Xp zlo;m(ctSF_Z?|`lpp(&f!h|be5pxTtw)nI35>~Yyi^oHc(jbQJ0{=)C#57ObK!p09P?6Y~+x^Xd}7kT_G>o9^2U=Puue>1*vZTvl`E(6Gl(wFt+hS zsQG^yr9+VNlRlMh=j@(o!_Kr_@1ErBog!wD=dV3=p{(id8+^A1tUSv{1q>Hew;bg9 z-gV^X!5JyUJgS~c>4HK&%+H!(OU4!cZZulz@BuT`&)%2!ATQ@Frx%JnOedc!Bs>%I zwE6XfhaQgWCZY;v@p?f;<=B~Km6-PNY>*K!na)$y-3P0}TQ^wNJoz$EMG?k84_A`# zJ?ywKsbg7<7C!e}WBHE)o2yGc77j<2_E;yvnOsF_me}1OkXi{3A0M593iiIfSFN)^ zg+gMSctM%aK>Zf!mXzyUy?!Ds7L@}G^a90g4eX*grPQ1C2J^H#>!kY;`06_I*U&vL zjmTg-&J3DPQm~=^oVV#5=c}*U+97rA>NEp-fxCEX9;b}Yk|6E4t zVNYwM2Jdvw$N_c(Z@UQZMtU5-pLrh&hoFB%zkH=R^y-^6ii^;pez*8^bC@GKu6kh; zRlTj9XhTgY#fb@8JDOn+1+|I(AKvkD^ ztHC`4jQzj2<759SUmexwYXDC1hMhnkGM;Ee0K-%X%-#YW?8|N+SZIku!6=%ca134* zL1JH@gDRJvsXO2yP*>m`{+(7a*w+F98#)f?!tZk+b%0M@1SFw#%uSxpCx?X5$h>*I z;rU`Z^Zz1JVCcTn)5MhP5h!(7_QdnZpd41UP6k-}IK2H(B}O-Eki0C%ChJ*s_j6s6 z<19qFbY|(E=2Dx1b*{Whc&rX!{oXuv9)jmDytZewN%_!9=Ai0(1#mV$#YR@?6ZPGY zo5~t#fVN0H$edD~B-Ojt>?%rwv7p?zO!~ljao?5RLB%jprCesu15m1F4X0j3gO@YK zL$oMPJJp7qQXP!-YEW?kI^8C^0$xzzwu|x$04KXu$z~`o3x>)9sqNCPy zYn%e|fTOOXUH=kDj_CSyk*ft*`k{DG9dH>J_IeN>`tFXOf=pb{O%Ua&3cS{Rr|Hga z$`&Aoq0+D0*NJKCMypjL5eb4oYi)O4pm|>!ormr4*}Gk(ht21M5P_dZ=Xl3^Jq~G< z4z%i?81@;NT4^CUWE+m*cw+KJS>~jG-%gO~8Bku9zCK>AwvCJb#B1u4#eNxf!o!7` zgP(w|2+0Wg5sKSsw5B>x#STdWi;8L%bJ)azb#C74B?k2Qf1^^Y?Ya*_tBSJYyyFJq zcMadC6Rk%e?WGK^?Y0~qxT26rDZtzhfk=lvaE?6~*Ik`f^+kaXgig?wzT2G zJo1SzeYLRl0|Ilq-G%cFH}%y4FIK`)4i!)rwVxBh?bg`s z6d=3cuM-+4{KpW;OU2Q)`kO^^bTGF>%k}8>ATFUq_A7uFfuhcpzOdnX(VtgyB!?Tg zS3wr90~}RK$?BS}ijqAeW+D9h#SSv+b0(b~n_Y5q^e!7YQXHX{W*l8rutSp9Y>VsA} zYL?P9`;2w>7XKm1z<+fFG02HwiXzYgWpB}zSdD|LVmWc30(BJ>d{>1o8$K# zZvsE{tW?BLKf)F3);INiPtU^KxSaiO@{-&btnC|#zzR6t$3b3^he|3M)b7)vd`7!_ z)BgM1zG?;ZzYpFQjzR|KW~iQm%y{Q8642T~3j>;fw+0|^D1SSKQ0TpHe17R{_l#5o+mx@Ee)*AI52Wo@dNDf5`g5nUDvTUKpj3TkVkJ&`8|I5xj%=ZT|Y^d)r&6M zdC%}rGRVu-8-_z;JlavFz=gkp8#im-7;&uoONXdIRj2@4LysfBjX`k~f;JH_Hh1Mp zk?($|l7Tgjnw7FkmgHlt^#)>-joRSMi(r3tEhjw(J)~-L_*mrr?ah5>zVXw{9F0@! zKB;ulYCGs)ZM#17%h@v$6IlPZ<`%Q7Jk)?@8>OybHqIA`;>H@jd3a6hF{o^g(faQD_qpCAIE%H8teP-RD~Ct#AGnw8mSvxGXIM9!&%B z{t0Qg2!QrT%hM*#oWIYkr`3fGsmN+QKU3HA5`H34 zZwbl+fijReu-f2NJn2rFRD~vWb}#O9n(>~2a9+JLsLYAE8!e@D%2D)aOi5=jp*wR> zrR`exdlTC4^PIgKnZJ@uD|%Q~IhW3N&z!Y?avT~eya)*?u z8%8{oa+`=5qk}*wuMUgTN1#SvfsNcre?duu5+iJfpF;Z(+!Ye5>17Sar7D#rMzjp( z;ECdRu-ioPWhzI!-u#8}r#3|6aZyYHovHOaSdJ!q9vZD1V(WfhwqJi^a<`i#LDIB3kjY!k)*36Cs?=#)zFGdHfMy@Tb8-jT4%(Kz{NTX< z--qJYinL%u?SRYc^h2mh3{kdA*C)(=P)9vh#v|S-wXGU|(SX zOuI~4E8rdBct57JOsd^_qxuA;p0>4U=Boux4@i6asG$hvcrKlU)ayuf`+*JCY>RJP zbgT=yCra`2Gbdnrl9-rp=b3Dclp0X^L|mAKcNIE?earGj7`?Y)CF%axs|Si zXC;DEKu;%1K@od)-fga%zy`;$Cbrm5HtXEPv2F;16EW@&(>t1VL84zl%$W&wz#KlZk6H;WVo@ZL^Bl2u}4Tx(3=C2HkWjJS+V;iHI9BXZadFM3=EpUPcj**sI(k(tgFjC%O; zZ*`;EJ)ud32mk~rZ~VBY_BoDnE1Vv-gRJ{I4aifKD?z=# z_@%$Xy@6#Zp^qtUv)8=W*U#oFdQlGOf85kcTyPyH13Dpx;6FY%`N**;)YHyV*YVXk zH`jeP<_lH+Zb}0WcHRFbs0smdQ@_}bp@-*oXL1}f!*U-VmNa3Bd@mwRrx0;0;iktX zmB++5qppqf)>E~67acx$a$@X_Zg(2QGXe0aA6!SXAv57p#13F|R*2V&fJy#zb_jNx z^u-p?h6sN(7+jR6o^>@jA}wmyzMpK#8$i`QQ+0wjw0VPNyvW1Jo~IDl&iPAf)FjL2 zx3=5#=kbrL_MN&)72Cz1!}LIjgxjx{ky}(@2Z~+Tt5AR>n}K)7*;&{PzX~DBPHEJC^d5)Z&Pa5#kmaS?JxPU zSYIzh`Q!FWo{b!I9ZNP#tDiKmnJOk|qIX8Q#4r^?J0RpbM#6*~AP%HCCv0z;5tD9A z$Rp+%y2Bs7#_Wyxh8cNIAOhQiN!2%ymrr}Sum?;yiAi7n*3L{hXNt{*(Bu8I=R3`ZZ|238ttJFkagN z8~^PcYkBwp;?PH$^rB3xY)|H|=Vm`{9JrpwfZXnQ3;fqg8Yg~WrRXjHWwY+yDss~AK$N)9g$ z4OxsG9F+gT+DSCb{Fgmo#Pd(uU)vgaNk(OGU6FO@32*wb^M*%s>t+`3yg}VxZ+)e; z3b3bn4zE`PKK3GzjZ;)B5Tr9I!_4UuzRqt2}ow65UvQ6vWxOeJT|nnzot6x(qp|xhb)9lqy~s&Tew7;? zME)K#jzY^sQWVk5`xUpkyG2f3#6U7B&}dh2N1qgTT#ah*s{3=@jvj66ox1N&?egGb z^G|~liNpzUL{uiZfpK7b!j{2EkKfZ9am7wiF5Yf?(LMA2wZ&lXoXDw2yZ1u_R|LXD zA#3TAp)7T4wwt+$9Hd^l3eI+Yh+p3oP*IJMjnNlts`}!sKTkk8R;e-!n8b&s6SoQt z%AE4!(vX?q#58)>v@O;vv}GOKMMNlCt$ZXsw?yL6`li?Pc{wY;#JE)Z0$r)miM#Vc zr|Ns}TNO2TmidrgdfSdpWocI#Pb|Lsm$Y;xty?d-<&S*9DtNwicAMRk9YM;=2vHOePhb; zOvn3O#F#FdUHiB$DTb&UI6tksli<3GG%q5iBy3%-H{}pO>*c1|=EtkMOF4htx7!<( zbS7o$&dUeJvbS9Gdd$ma@)O7;LsfYL9HN&aR}P}LBM5wUAvl2?bgO=R>Y+9$Jo?{G zZmXV7gy;7*#X=`H`_C zs)OGnaviT{C(}pRc18Uu4c=tnu42NaQR$(X2S83mzQ;+9Fh(8$;sqh!wXlsQ<*5Nv zcL5j+c4&%1y?n^8Y(6!p*2r`7vl*R^5`boE6I{}^LVGMW$+#v-(V^xj_phw#GMn>b zk2CSmYMI?w;DJ6$!0o(g9ob$IQdqUG(y5dswawg99Un{6sboV8HH4jeg;~`n>KMm^ zL>=^@ACH#MUGN-)?0!2Fr6Y!F!aJ0tTiX#IUe9}PLRzTvfY^KClix;K1b@}?MPqG3 zMffGJydO;M_6)i<_M)Z|9dDfza7#zekBm=m*UfQu6O%NmU!XndK}5lKY36HzLFF+S zD98;dzD+V6Lj=$_3;@gDGL+_0gZSGg;>PHfA?iqcsDBw7k|WN3Ygx4v{2|{yp|kl} z9*|)$s-BQKld5YGI4-!4QlD=ob-`sEU9uCPz?%B%+us5ZrPFaTNF%bU^j%@`w0a{- zkF)z-3-9H`gyg}3vOA!26_;?irZfZbq=g<7v$i-m7v7rIb|JTt>3m<1G59(3b zT1X4c=%pgY0KCaw{-)CR`|LF=1)9-emKA`WdWKk*0EUI!UsAvC!|7OeSQ=1Fa2duo$@G>nLLaO8;LRrfjC|+;|xVt)RzBz*Q zeC!bjwdAM~D&n9j3(`y4dQQyRKG!n69(av{&hkm}fU?iZOfJZR1-s$*G~Y7l90=XQ zWqz3Y`_-+Tt{Vo4-LSp{EWFMC26+x8=CkLOih|8?Z5X3Nrq2Xm;TZ$){V2eSf{ zllC9lX{JR;uV>g;?QJJW#*3}7tjyeR$Jj}1vY>Y}wUar{O`iX75SyLvIZhz5%ivhWJ-)2hJzCy8tr}br{xbnn92hsC-cvW{3kyG ztPsAQCQ2ej*4Of;Jh(9~Cu~qL0JE8%mV9v}(q#zXpL>V5As6ZzrFibihL^vtfgXMJ z1{~@MQ1Ry`I-B2U1Rkly{qPhlvMn5VIBd3wdbhPC1Z8|??pl_5{^6D;>U8_<{^=*l z4@%0F^FLg1DH`Q3UegDEj2^Bv6?#~ZN?=-Z7x9^;%Cfk4vif*GMFd*P<1xENEv%5vxe6sz!iIWTknYRSS8dHJ=$ z0?^V$Ae^ij$w)Jo^xXr!CK+R&Fm}f;r=@uLaX{HS^QPB-WhLSKsE`3)r8C)zCtj#1(-aU%dLl*zrGp@uoK3 zdml6L&FmG|i$}_eh#oo=kHJF-NqS{M-__#xLMRfnL@4#h&(?W8CeSLDh9JU>!eeTdQk;`jt3vPD`JIRW0v^(qztFEzIvRkJ{BM0evjLuRMEq zk9S|&R4`a={>W#G$XZ^)XXNLh0LYQP))h1OLA4aHHUKJvJAm?ij+b5 ztTa5{rOdCiJh@|rcs07}?gDYhTe{!iY(85WEc(WpuTUWkhp8K%xcwsWX1eZZG~2xc zq~$L|67$=EZ1l+5`%R-!M?9EZ$LwRI{tz^g#} zv7JQFDa+Gf^f!!sem*C8@%*`{Kpsp${Y4Q1^yqP%h0^Jib~PK{h?Q&Z`x`gpb1{2I z9=Ay2f1|;|d8CjWZNf(jx=KE2yv}8q5&bF<(mf+_0>9-nAyYfP$Z4EMU>d(% za8bK*Xr)D^5C4UD&h2zG7-wQhGjg%Mc2q>Wi4QS<^V49%FP$XLTVd^%hSABzLG_=G zXeNJ(O#WHV1n@p^VkT*Mzv_>h9{c`NrX8K@&a{X{{(DrHc|*Hnt;~CxxGjFT7fL>=3V> zZe$-YGOcZfKBn3_qisS_14ZJ0{h4L|lOiw@u zQqjM%3LIkBFRXHzGwj3WdBfzYWU`Z5lKIhm#urws{m;gV78OvFT_2+( z%uQ^8Yqoynw1M8W8Oeb#B*cztzo34}(sB6f39Ndh#o=r_*8CCz)?U}HePvmSaWR!U zNto2H?!dGf6myQw%%6GTLGmI0hJgM9nyb~oPbFjY)ls@m#^{aYxJkxnRV*89Z>c{d z1mC|;UOhFFQ@D`vI34sx_hyg##>2&nX^##CEhN>S*_CmFez3UqKCrii)GizC;GO%; z*DuX!Q`xHgAxS1`ipryvc(sgwH%~ZA`^17o=Yk$vGPB-li^KPG`ZXziBj*+v7y$M@ z5#E)`IG&+VXLp?mbYZJO40)UVb^?Otq@Nfu_?lmQ0aQ5G7vn?Mi_O!6-iqi}rv&}E zFHyfKp{|a%AA!(#xcBc}JUAQQ&hl3GsQ@;#A#vm7ELjsX4)myt+8Zu@Od{q=@zD}RA2G&y^d6`uI76HhtcEr$Y9>sTFfbXA+ z?m$vSZ4Z=yA|ojGj0AFStFNegf!n$zI>h_$D|k(7Np;qM)K+zSR~l>xep*78qRV$V z8ZaK*LJaZI-Hf5rXL0t+1|&j7LRFjgZ|;`_aR9`EQFsy*{A_^gB}SAjbF8$MJ>(Dd zDPoBFOGdwU3FV&;5>NOr(cf8J^en1>*$A%4)sntOE;2>OG#?WpsQr@E_SbNotq`zd zsgT2{jr^K->8}z3l zd46z^GRFt`_|TQF5qL|NyDc_%Ouyrsh^yXI_Te>mUs(#7s@7$lG zGmtzjEkX|_K)Z4h5vZ$0I9oI${XQ9oo^(C3Qr7?4lNn4tb_$ja8kHTd?Y|RuV*2;3IQD{n6&z=t2EcorNBu8@6cwq0eLHQfD zoqLP+6ZiX47!Ps^Rxn*q7^_mjWu%Ap3)x=~#bjc^@77L}x+v~hp< z?dYLHB-gpSL-1LrAEy%a)Oo;&n+fMp0Yr$`HV_pDe4Kr#LxduzjG}jGsC}+hO-6C} zmB>9FrOY816fbHXtW!6{S0tV9&MfcdP!f2jAOhu!s7hfh8;nXB&bVtF{08)R9yPr&zxuO#aoqpNV;t4ukTU9R>`J|Lkmr8+ zBj7BbxA-LW2T;0i7%Z#Enf_)uQTX{{d}Lj;t@FL@IjLz#m{_Qgr&l%7h_vmW4>1wP zmy2e0Yi(P%&sf*;el>`B+3ZL3&W80qzQcUz-j^CY3McQH+s7AU z{BsuigEbj8-z~rq^6xiexH0+M*twh(X)_5g#7MzVL(Ee#X^3me(d7L3sdRLecguvm z4v5bKXxm!z_I#-6n~T*0s$YLLseR~aarZNNr$<^hd~wC^ndg}4JH`Gvzh;xyZK?1t zO!Z{coY8q1oSCbiBgMw*>f;4azmmMRCqLiUe&2^0E57q6P;(P8Ig1~>F~XZgp{QDW z$ZX5d{i;$=W^)LQr0q1w$RPj37GU|#!^?bZb4`^LdFz<5SN&ykwe+g%`y}}LkWfIk zgEh}i?nJ6q2PWgz`WZpv=$j6@sR=m6Pcm>rXTrCf%|c|Zk$ff9j)RimWpjA7O*RmPNst&%WY++gxGtcGr9hSNw4UFEa}03Q0#mu@fb#L>9(k zOU(BrOZ$h8TsuyG8A$->2+63-_@dcuOQljDd5p_vwK$^};(uAz8~Kk#AFOUTZ>(-N z^B1qaT6_~%tg)~h-< ziJSL4>qzutyVmcLa?hwZ+)%vdfD`Y>TFV z)AuBM&Z5YLb7*1Q?l~*h6z1dM--fCyqzH^$V5xo(IVCgsI>SZx+FU-lAFY-pG${Gb zGS%v;WVldIrUV+=>5N{x{P=jOJfORaBCTnD;O=$RK)t)Yam&=`1G{Q;>+JtW*PF*f{l5RB^)9ItEtVog zA$wu$OPeJ^*_T0)b&O>+cBT@N>^mV9vWyP`suj_T~*Yo+cQBuB_a=VOjxzS`d*8Fpfv^(Yk9(%t#Q}^pFSV&nlx9qF8 z0unz})1OjL0b#(p>=sw(5zN1L`|w@B-_A9{#kx)6LmpAxGqoa`6Civ8R}3mjQRMu2 z?xiG-?vBcsgwNOPdTMK7gV2G?ZS${P;{}5L!~jJ@_Tj0VabL61(3Cm|u#!rND}2># zvz?=zI7m`IHL#K$F>yv2XCkHvw2(Q^{z!tm-v09IJSQe=&Uu-CUlBxrwrLpjnEC)>C%qp{7W#50QTz2#dW0+l<;i^QYbKhZHJq-hR>J$vVX7p8-Urq17 z1DsD7yHAm0XO>v)#7?O;QaM5&XWTEySBw*#!||ZzC!8BnbDclmf%xg}taT3F%e0W< zqAV65W0Y`~&$mT9oG<(}I{62&(>wva_74kfvF}FmgwN<8T+$ylh^=bOn@xO{1w~&v z_!uv{4Q!_TEIdyjfU~~)W{x$ci2!th^KE(@3N)7 znd%YumOEfLOVyhCJhHb}}oC0Y6nQmRM0&+xrN+9&0Rqnrg!GHG^gsuB~oo}IZr zNEBd2d0bQ1<)7odtyU0R`k>70mq&$MI>lOOMDgTUzy(%7Rb~8$THlC%@yfpqnaScH zShmLe;TXptZq80yL+^+)(v$rfr_w_z2Y;b#t@%ROjKii=Tj8b&E^EYRv)tj{6wAKj z=;)#l<7#Wy+CfFqvpC6lo}oej>1X%XYNt%40ndt04#3Corx#AK_(#&+Ame?HtxTgy ztuv~QTyNaE+Q9t{AUgHgzm9F~p{--Sx@J|$fDuy~mnq4RSaFn=WzY1Vka^_hY~&e) zSL}l)L*W3uUPl2NI5lEtsZhH`0 zdGQyu?c##kR;@grN{Ew?!98(wIdhWmIi4(v-Xb+ zdE5N4V@KBN@XFvUc3T4LyYIWSWZz>%QS@D!WkyX$gSQ91X4Q!x-r~R6BFjx%90NZH zV5i%J6h{yBFjojtUI=*vXd*xq4O|RLqsmNUC%XXz z+kRBn5Qm{#>Ta5}VbHe}rg#qwZwjugaj>|&9N^q8%vQ#^7?7SHg`XkV!Qcbk9d+kO zyTt-?xAUaY9eWpjuRoHh@8Ay&n_kM?LsEpW!I!J-7dO_35jGxLE1o*Obl~u$<@PEQ z>NS;~T4}(Kb(Ko)ick8KNwNHWh($XDmZBno)V~Q;gucd*uqkbN(a;*+1Xei5?_=GM zCd_39l@Q8G5<9FC$i`*o*S{Qex(k$#!V}mhGX5q2n@8^sXiaU~Z04l5mvYXNQkJus z;(u>Dh|gKMep!U_j|K%uXL*EOn#Mfaw)H88?{x?PPe0TGj2hM+I0I<`W3JIvFvVk6^y%v8VHQg&cPxPOq;0Y#h}FwFkUsIt+12MsF~uCf z>Y`hmQ}u~!TI_GlU1e?@y+~fCpF&M*z<8&yH;z&R>v__gHiLxrsK+zAqD}5zigOP#vP7xDm0!W87pF~0AfQYjT6Ar zieOW2JXIeI7}THuh1<5A&^S+DCkzwMgN0o<0M?qW-@2(2ilXC0KufE!e^O2sZ>7oy#n{dA#I2L}yD)iI_p{Ci0T2T*9 zY?|4`Xd$ys{I-T}k!N|r3(sxC{9uE!5etL|2sJNL2*$b*S^z*4;Hb#;#R_92gbFiX)7yrLW7IxGXc9Epn zw{O6avEX`r;!jMSU&)^}!@V5B(H+|8zI|MJ)zJfMeH+|QpYY4lynT*T9Ed;^(&|ZL zoFQk}QvaRv-Y^MvIx$>odqptWTWD;bDY;O57V?o!FZd`O5Ai{LZD_i zBs~AE-F>=W_WX>|L0z*@B;=XAO#_4A7 zRJ4>OKQbeXswI#|LD+NDJc*i_;+#xo3SWsL(yhPCx74$J2~s`co3d9aP0Y~sKll4j z@Q?vd3f`HqdM6M>78)IHLt~h}kTO-&Hc6u+T50<(I~C5AW}&CvfT?UKr^@-PgmM_~ zf-MAKXiN?Nw&g$ge;gl@Kj;Ol;k$U{y)7`uyN*R3uWfR4uly;h=7y5bijcNYxZ3nb zw-}w~^$IE9?Sk}Zh@syxAzhWoaC$8MCi{nBvGiotg+ z)Xtm+ObIGvB9*9Pz(P?9#6ZGR{|V{0q&5${ZaArqo5ky}E%T*R(Qx7Pq6^^9o*UY? z0HC$=KxVGIPYi_RPhHmyN+4&9aichxPRY9d!6|EA0Q_|t1dey*Mhi#=wN~7Dfm_+) z&JlPhd34~*pS&oRljr@6LP{jtHo2Km@@Wvi>hN*LHdgVYl_>LYfLBQzmVI0Cx(4@^ zO~}O~8fQ|-6c6ek@FTe`bZPam;#&5d#;sD1|Ht!}u|rr7trX;PDK1~+Q^;*7iAAtc zuAw#lbK?HU%&0nDWXjg4{KZE;WVHf{r?mI!xTnYxdQ4cVV%s;B zbHd24bd@#c1t;so4Q1eKEo8eRXJ*4|fqygZn=e%27lKl9bwbQ1@qR1hoIaZ8$N*QO zQDmWmsiAZcba<)G-MyPGU)n0~gU_z{#NHusBRV`*e(5!sxzYH!BSc3%*LN;6O`S~y zK)%lHJ2I;6+DN}F$**vkiR*fS_ts62=JltDsdIJ>wg!lcf2ZBL*Pimiw2@ z7E>~n3y(HsKmDTO2_(L>74mc+O+{1W95tVH7!Ji0)KV;`Qe!9o69S)9+1UGT(w2dBf^>`>|Il_{-mz6LZA*Y%v zP%nIFFMo{aYu&uG^DQo6OR-4vUdX`j?m=&WzV09%5?kJaJ>k-)1Uy_?Y>0v@ml zKD300ZKL%^6R!GAn0i-ekXgN>g9@hpIjuI}xesoW?x@);%5r8dt#vK`ETByNG~HLq zlmEQN+7D`+C_)Y%qPGOw6y}@?s@=LQ{)U|N4 zU$2SRN-X@x76EKstd(XgakE{Yd*CM7-n|=l4<)!=z-2%L7*Z>w+1f>Ur(FS{Y3y;@ zd{cVlNo>(Z>xNody?uZlRE=BpG-B21*G7Oh)ipucGBu9yz1nE-2G_w8A+5|(@Q(LO3vkJiNs6B>;G{)r7 znO1;RtiU3i0OsRmDDV1>*X@r>*~}igtx%=`MD2X%Y-+nvNZ#MnJZK5NwpAa3-!QP= z(n6BEWL*LvZJWyTkRAG>`xn?=>4JtkJzqMWg$J(R?K+o-`aw4Ny6;`Q9&m5fDY; zCk%?|Qp}S#*2!u(L<2~$M+-8Jqq6H?Ubio^%tUfLjRBRp z!^DR=2@uxTW0es7@cYhkEvb;uuzDG^{_crRx$M>bOs7gPJ`Xu&o*2=6^9aE8Q~%v7 z)t%1`Ku&tw{&sVj_=eUH<_E|Wi1+M6W%y&RUp+>$gJ&kT^1*LO4Vapzs1QD>;IRtn z6Cl=S8wbrBV57Of;39CST+Nzpsa-h)b7VOlAhZAbzl{yLcz?0>u*CdO5NCAG)b6(z zJIp9b0cmU^nOOE{G%Lc=31e0Jc~%QK_*Dd4pf$_$b>jN8^usen$QTeu>|H=1S@zrC zYFw$)&-LtRxlVIJ+wEKov3MEJ${C`=&k=HWxDYM&b^>f+LlhMl?}a+6HWgUj!uo!L z&{DRua0^V9rAojmWMAA#PT5K`!fg8^q?!zqaHEC3EMn1q88G99SeWZt&ey7 z6j}?(`tUMG@8im%;%>svE{Dn$I{6gHT z*WYlJX=!z>i;@W=yB#FfT#;bgRay*QsovECJ!zZtRw9=Zx-JrhBpCC0v@?aI`Jw;& zB2(hg+bg3RrZGn)o@`ZBVGVAJfetG~92-!vl*g+k+!wb+f>o+xYMxJ- zLAuQ{9Q$2XWM7!*SfpUsOT=Af|K+chWF1qO9mTF>yHzRo<)6r)!)D6y{YNuY(YoEY z)iyiUNVTHc9BXQ-C!dPKg~Ek~_#@bg10}iNcU0IEJvr@6dbR!#m612hta^vs@vXvd zGntdtg4To9$h)9m^)*yGDM}nQPiC)2e_WA$Svto{U&$stK8(2J(X>yz9S_T%@CY?v z4&;08S(IV@)j9lVp$LKudmXxeF1MsFBvhjpPV0e|&t;Zp7eGyF46764?+)0?qJKFk zrlr1d z9s^2YU-V216wV8&wwQF!K^MFJ#(=Y?Eba#wK&mq?E20e!bs8~ia48EIMYlM2;DX&L zYomO0J9U`aOYJNtVb}g6=q4bU0C|{WA*_uY%i5i3Bhh2I%c1(!Pmsgu5(XVG7g8YE znsMWPX_g$Uh4v?J-{sk_XxjEALNb*WPo5f)2_3A7!JN;%oh{HyIN{EJu-5t)Jfnns zz#G?*X?UFhm{ial?kqshTHR`3i1-_#x(M2}aEa?4I#O|!-r92GSf(43Cl)+W9^B~X zf$dLZ>P(7I-u_~M+IHnWKy@py|IM_iZhKEK41VBK#u5QWe}t57&)*U!tr6zY-H2{6 zAe-~~vh_gVSC`B=Au#tP9h7_tq;_K;!(Z<^Dm!yf-UIThVPf&AG+UwV86wHuE9tf@ zgFlEbV}0G+za+q^u3O?F7aWcO!L}U9i2AsAUuR(^!D71%dG*Nk31H27Xy3tglYOOt z*YS%D-|}C+cDdWTG8&Aqtao|MyI$SFwLpr}5_lqV0jAc3fdr2J>3p#hk=J33!eG%b zm9v_gl-%|(4qjOimvZ>)WHL}tI*0EJklA?ml6Ri6RtVGybMn$;ZPJumayIBISh?uA z#?OcETw7{w&;x2V6E{16>0|QSzkg^*GV^Sx$eQG?IvPO?d|A}HnfZ+^nr5H^s{2J6 z`C!+>m=Z<}Ss|ptmHDFJ^W(|?RjL%QLY!Tabq0Jv`W(97-%gno=$WY&mLJGAo5A$l zx+g<5ied}d#03}cwpj+=*}kHdKxbv#T7SkJAUDmde2BOj_dK>bKm;rDD`zLnDSs z7m3b&mW<;UMpNCfuj3&eXzv())N%{!S8!9N_PB?TK#Mp4wUPxonnG^7k4A@Pdv^qs z6Ut#WYL|*oe2r%hX9}T(IQh)!t;*+z^dNc*Fnl^l%dS2`!jqF*(Q+g9eCGMXY2W`eo897L{M;23MHxavPVWxU1azz zOn2@v#T4MT2_G7>EntDCEqv}F(pg^SAE-`wv@R!K@?Z{LPKmC6@EEDrog9}B+uupA zR9x-cdGZ$$0VRH8>a>HYRapp)0Xeu!p*yYwY*!SBUsbwaG=wv?p+)bKd|NQP)<_L0 z73erpy1VruKbAuWyL7i7Za})2hHhQ`pzs=CK9u(H6+a`Ip7}*Y=m-~bE#{B@#cu>V zL&sd$GuxN{mz z0P`i*thaXT%PSfe6DNc=sKGvGWq0;R%c)5qQ-*Xq>!#FMPpIcJRtbNjRq8L=&C#o( z;$ebIaf4MvNv6N>$@UcIxX)xYz6Zif3o;Rhv?KrRhFLTDT&jfSe3Ybaib_rNP|7+&i+C=2y zIep+3quKISIKST&af~TQ8G2~LBIAjZd8KWGA7K^B0p#d)M#unHWAR^h?CgN!-KR)l zrJb%i(zcnfP;snN%QZslMza(0&lAAHJD*P3Ee*KG%&6NKTm{I9{swZnpboxmet3>= zO<1jaX+wgbc!`-L$o4{}(`&Fu0|4&IAxruGYb%rv4SxW5_}Y`@3JF95bZ!p2eHofS zH3#OhDGH}S<>TWTcEyc3D>bH2l_}RRuUBe4vUHQ{2feeYtZT(5-s7!@f^ zHN3rT75N^FPAtlH$nX^Q?J_;{PUchptt+nqq)q6f2xySp3Vg9~7#q~oL(A{;JBRP} zsSXO(-*}4b-;2vkeY+FH_uOy?t{Kg)i5%@NAZq^;mtlbhVA!5Gh|XETHRgRwJgS$D z&i%UujLw2IAMTW31A|e&yvo=d0V1vRyffZ1N(N#*w4pPnQFUfW0GNUs-M@3U_RzHZ z`#dZJb?|xK$4i}yc8#}GyrvACW%D86_Lcf5pd>$<@5x<97-|qZu4Izy+%V1b02#oc z$=G73D(E&ckLx1`L%r9QGUva5v(D$7?@;}*vS4XhXxDc{SVweUbvk*6i|oJK%7)r{ zh|KD80Pqr%yWS4K8l6YS}X@X?N!Ju_s zk8d-}`1b!hsl#@jGv7fng0b-)08!slp98=ju^*-ju5v++t-?qlKBz`tw`m9^&hDuh z)xdT5#>E`Tn7xm~wzham> z@c%`7-K@>_t~;aB56|o!xbDjVsSbY@n&JHtOSS=$AV}lH-PUW{jW2Wm1cgn_DHjnd zoUE0Oa-pM1XkSpASH&rrdHtbL={{?~`d{V-+M0=Z1dXL2jX7K`IH+oK_s{*Pf^5!h z?w~Tp)4gH)GL5)-%me3QV>JK}9cFZ7;trA_IX9=p{Dqlm;jcVb=poec!#n|OIg#7> z{EqihVb!Z~L!<+bhK#$k^wlzt%f2a)YGv;gp=zE<$XCJ;z`Co=KgQwG@nei8bpeQv zg(fOu2)byADQN)B-*f&7>4hH{>)~>|Tn0%%E4X@vf?orKh1IPU0x7$o6x5D^hq!oJN-tzH90YMS%JV2Eg1GWyhlwlK` z!az;~dfa>vn~(h&J6y^v|j1_?Md2T z!s>SdCmkZdLTdUNe*R+fNy-n31l~5Ek^I~m@p0$#X2WbFry@`;)K0(r!4|?v25`~j z_%1viKvIGav4lMVEN*Y@$9!^;PFB9Bl;Nm>Cx%!&(!kEL2uc2avm(hV?1Xq30>0sp+C-u6Y6UbqLXN8)<~F8K>W+Wc&!<1a+{&~N zQ~b82sr+ZuCf~!;j-~^9YSF|-ALR!g@Ky(T*uIYGTPJkMc8kLy-WqvX+2L_enO*rn zbw1dxOcal>rr9avbi|Vqw(@FLfwSJpUP1x;Inv&-nJ^ z*Rd-A`9@Kv$>+flm8^2tl1VMXP>5+YK}ppgr;96;0g;|Wh8tXP0e&6YBPNtDqWv|P zYJ&udoYfPTrf;b_j#HP8Glr%y=M*tDmt=b2q2^Y{F~q^ zc&l(I1UdcR^QDk?hOV@e=;U+_9nu?Kq7}LfD1784Tmtks8ceRoOW8xW!V?f@5rqX7 zK7-ZKVDt+aNUuYFc3nKVA5PLo9G_|a$SBAnTm6~KG?zW^TMmi_@r!q!SQf_EaoLx_ zkM-25p!lp;~FUhb#RDTm%fH8buuch$|Njsy7ZNRc4FtO=VT3n!JJ)J4{*t;N= zoFv?WX}4bJ z4CW+PlQMAgH@KL!4*;+4+y~eTk51)#z#J`LGyuCpd$g(B%QVRJr~FGUXxWDrYEBL6 zKBzAQ+j%w@?1Ddb8?ow<01KO$_SVdkG#iD+o{nl%`-Xp50gyTmUQ>BjJJE1_r7X0h zpo0jK9*2cgOpcqO6OHc@L>JG#2j?PDS_H$}eXkQw+%Hx`BLhUR@Glo@YLph)uZCFE zsT9tf2V(J;xSz&7vOi9`fq(@x{(jc)m01=V2>}MgYo{oa9S ze@6lnOY#2r0Dy-mUKYbFC7lHVx~()YHm3+;Vw3B2_4)gc;d|f~!r0z)lmk&F+-yEa^N6K0hqre3go`Q zHR1ql><0ZKhUMa!)i-}-LTdjUwq84!Mb0F_)KDYO#eOfXUi;w$gr;NE0e`fk1?<@W zNasX!E#|~;(g~my+YWRNHIW-Z20UBn6wsk$5^JTeJ6kk76-W;Mnw8Ev0`q9VR3;GP z*<;$f)m-`x%&7k>i(GIPBbm|knH}E?Vl(^gStxkJP2g!gGd$~bDxm&Kp! z%i}BM0d2_;hA%>ROA=UtG`u@U|8`+dL{?qSJxp13ubURJ!7aKL3C@bDv9v&Db(cec z>Ksj_gluiImU983uKu3+q;ctB*Oh%?YTYQ)vKUr1cW+OKv;d?#n{Ede*Mz8&fk4hJ z`hQO}IJ=dP5F<`6DwlvEyx7pa9@_Aw+H7SrgQjl#vQ{pyLHM_-5{nW;u_Jx6JIcF6 z>y;t5vr<1m)W`O$TZYH>Y+9(idj#8m3rK&f8H%%SwA6t@JwMmgPAkd(Ts2?+q#j_2 zuDMsrlgmP7sHq!@cuQoi4k-4_POxvD9g!ZBc$ywM!xMon8J1lvH`X=(T9j-dilsUD zJr=^5I$;B|p-&UYcgsQxBRlELGvl}TzUK?H{a9w1m+g#YWm4${`TbdawoC2cG5@)F z6I{3R0+;pj+cJBnZ$~dSG^mHB&D52NDCtWCl7+f(0OEzC-af?ng@N+F5g3rGX7L*c zGL~LyJPw?yK#%RICeK-Ed}%YECBSn;d=toV?>~t9dh=9NgE#C?)1mWBk#E9Frrl`p z;UO5qX-%_z>(F$wf3x$AuO5+J_MV;Y*!6UjLzMQ{NGylrg|^N$C^i=c75=$0qI@ww z0a86i{pZfRHJeAJD%mio0?-L8GH$widyf7hNA=MU(gC_UTj7oUGl4w8 zs8**c^?Qrypc3yYi<05I3Qmanf2?kQt%iYM_3;mVt*mgsX6fT^Y@@!B@_o7tfWNtC zN48lI<979_-Q$$4Pd9(UvL|6Z6@$SK*f^aw%r=GzbaGBMkzV3dB|eA4=8#FzNehLG z-HZK|xCv))IQl~<81}HWZZW(A4QmNSbeep!aSW`T+I2Jpq){4LNa7X15Ymn~#ejcV zV!-S-BP1ZNh~=a%G7g*n({m)IYB5d~=<#nt9B&hG?jiq_g#IewHyr)=KmvCZPDtfg zrW)P?Fjogp!Jye-0Fz_z)a~_G#a{7{QDyRbG3#EMr%{bYc&O}30BOzqGgv1jx+w8k zFC0dGJ}B?=MhN3Xd^~AQS!#4PM;&}!ulwtBYuA199z9q~P%YDZ-VBMbjlZWc7*)Xk z0{pdHs2M`HMXu9;2{B&p)>YM2tE*=|f``lE($ChExSzggj{7QzrKX>=uL-27sO9>8 zc+~wcft+i8%JY#=H5mmvDmiJS`TVF*%Xy2w;2n@=8I>jy0NQT<)JOaBYuKeOQX`UM zfqDj@1zNw67YT$*7Sr)SUh=Q8ro?#`I%)8>T6tMjmp?E?8k$`tSsyq)Z&XBFBYohV zqnj&N&IgnN^TY@Ncun{pV2U8w=(VkuRolyy&JQdeaH!Ds>sPaXjSF z97|N)s}raZJ|Ge@u2Ec#rJNPh)zu0r2m(x3X%Y<}+0o&a<{^>XATbM5hD^ z?dgwc29pGf0mRHh>;{e~Z=?PU5m%1jBMg#zE=MC+JDpvs7mx`Y(B8P!r{Qg1o(;`hD zd62*Dek9`j>=2LsY~-TlDr+(syaqr=$t7xy>xTFf&l4iw6j_oP`o}-)TeVzC5ZcPcbR89lT*hT#=p}~OLUtnt{{0O1>>zTcI;?{egT6!=u-{wF98^zY3~=nQPwzKgi1 zXqr1WIlL6Y>jo=31OvH?Ah2H>PYx5(K8N=!S*w|!DN;YsWxx9LEnpcKA3UsNOO}{h zI!gwZlo|9AMiFe`%Q0UY;XYds>iz!fHJjP1P#iH9vtUf7?qf=l@Xt z*7^KXTuq(Yo;K1UD`um3PgxcKgI|JLOlPL@p9dm$&=-yW*f=0~2P(+^49!=bOMU7X zDj8V0W02?(7a-jzj$qV$4m)E@v>P0BRYTQib~=P|tK`o#Rd6#O!?9yvAG7dQZVB={#1c8uBrFuJO5QHn4Q6 zPn@vnO3nJ_WZ|02ijwC6lZQ>OL;|ob^)Hy8sD5$@v<#K2SkTy3NQ!ft{GJPA&{XC@ zW3R1_8@IVnGLcNiP_KI7&vPr!B?OT}p1bGcy$&WrDx@^H1A(wdquA?l_(>of6&ESd zm)RnN?&#C+4gPz}gri#mbf1gYSn9yq>B&W^xoes8>EhiXBtgDlloZcx z*3&dvL?zdNM-FGq;jJ)B(_Nk)yN|PFz7)OqV2(4VCv*I&;N;=VokJ z(1nZ@DvXeXvLX3>8-t3kR`(EwvkT7Of7Lldh;$Jk`rU`x>CFR#Tp-&gN{Kf$E@c98 z5NRwtN3ak8GMEw~E;l`-os?3wsQ_oRno&Lfn;V!Db{LXaXGr-K_0jqbST^aXQ*CDb zSuXu?i;Z1uXoO6or*d39Y=9z+?be;fxGRYKG^VVbw??0LQuB$2?DfDWyu|cN&(S4D zmP#kHlW-*?W@9kM%U9jUn=z`o2|yL02+#IbyleqEa*R#Ct@ziB(E7jD)2=YCoB;1bbFBd!A7Nw+^N zojc~nc3RF!uy-_iW#=`J#)Lu>{(7#1+6X5&)HF5HliD5qU&oUPRuY&%=__FO6#g^% zKozfe7w+0?iRhu_&8sijSS1~fux|6If5q$y(JLx1!&=yYjE7(_XjU<+456L3X^Erl zS+xMM+P^u1ZOH6)8h8WTLLcrReSxu_dVn+>)8wg(O8V_R7Er3>n?m*^huUw~S1jD& zVOu3OVEs^A_mE+t*eM_V0{dl1v9<>US89bkA&Kdo)!PJ39A{_yGjac)s0<4YfetG& zGp3JbjKZ*uR9~uoy*v5W{%GQ5!VeWHsjUJ@kj}mkZC!mzIvvcL%zysqHf^+^^+%3n zV8Y^dsX@sL`%^I9c>v&raGf7|`26UP$t&5e47DrSt`E#D*=`CXlz8qR#FMEaE~IJ( zc-eX+;Hm_Wu=BQFE~l&!y*z8_7A4Z-zKP_?71;viDSs{(Pxro{)!X{8_qi-JXVxfmUG=)na@}K)ImYMzZBqX_d zx~@@ zpHsd9v$?ax_#wUWL-w6X%tKck()Q@V2h87JWBt?vifcK0b6?1uk)d>WxHa8@elIw6 zcv#qM&g}Q_YGm##^4lzYcM0yqenIo(NfXX{?3OP~A3pi#^>R>8YkY;!>$^JF@4h;D z>9or8q_x&1tYP8a*TzQroWxW}@m}zBId-GbPv^0pxioEMsW4}TxVJkRDd4a{mNy2E?bXW4u%;;W5VeDUHpnWm50DSUu%XS_ed<|* z#Wq}v1G}u*o(`2|yIb@4kDh+5l-*c@B+3?BHQ_74#_2Jtf;Q=)1!=NC_a0Pw48vws z> zaYXix0A}u3GZ@{p_jc_vB0h??T0HxWNLjo0HwNU5Iw+8=z;u%e;_D5%XOL=81+5 z)+-R^gPS&>!+!f7J+!zWN`JVuKQ@(P)Z;ZW)pk86 zVGTR46<`d5sFs43G;y%-`(@NUMi?-#m})_2^&6dM5|QGU3FQXcUn1LZMUETSwrBfR z!KQxa`g>qT!n9`>o?XX&{!?@d8`_%Pw_dvI%c1hJHKwy}9-rmu(>k?VM^ZU>L8Na# zuuPr(>43ksqeh*)q zvkE~?!=0Rez(N)=$M7M-SYOHhxj@I+U_3l=88%XRm-Y6Le_cA?lRI96J4M^?w!70m z^wNC>#8C&@zhwHiZkarkFY+PgoKJvQFV{~clEXn8K%4PxHP&#V`OlB|KMCw$tc~)wqt;i@KlBa-g%MKt*RYQe%3=v z!KZy)mxzv5VBUPMvkzCx1Z&hgR1uZ)R&O}EE@&JUsvMKX>NTDEkQ*46uDAaX1F)9^ zx5HgG&*>V2?eT0<7H$VJIhpYM?PD6L~wshm7a@at$3fFYRDeA zOuGGf6l)xKZ`W6>zdFaPw$EksSubr{e=Eu(&^@c2PoiY)A@a}$l@T*oWAJfi)>OZE zLj|EQM3Gl}a~(Tl&&(crKR3OTa#;4v^x+l2uq8ke-(q}XN~uIAK;}r~x~n1byQQ95qlrBHwQToD?rAAMVXgLs{<-ZrD|U#+`uOF0!WaUm ztl9>+Lv|?`o$Fb4EM*~Ddv|TJC*%Phk1w?43li**z(lJs*YFgpxS|XqaIGu}S%A@I zMQvTS%%NrN+Id5jN09cBL-m#8nBbrd=uo{1VJo;h_X8MVVn6I7JKIKK8Bd>S{z?oq z3b~qP(eP2NZcr*WIM_&8J84Oh9>5#mZDfZmX~N=TJE;?ga-zDEkyvp(kmZ$&r+{>3 z&PrHl9wco`s_cQU=Yk|9q^F9)nOyoCImVR}h;xwpfF*R$s&cSS$w(obmsBkJn$JCLZ#g4wsk z0$`@p8oB-T55;7lI`ro3jXZsAoayq>YKzO&xM3k7Z0^lF_ANnw6205+BHIPACT`uHF9HDk zW90i9lFt9n`EOv8ebk=sb=Ns;2u}BA4Ta*+W-5_4NHXsLzB5#puX||W>mIF-2bpMP zL6&$3IYe|idY{2XQQ~4p9hAX^tZ}R7v%s4uO5>k)YPpzjwDPcaFNWhwzIgPhaEl?2se%kfs7CDMLL9Cv@@4}u>s-qx|17XBKP31^kAE^<;HK2AXX&Ieadr*^?T5< zv4$<~%JVv7H2e*Gd96tMH-9^Usy;;H+G+#CwT&kuZs2EBF8JS5P2k4zZODDV8i*Z#hkqQXOJMY=;h#Lt1^* zt$#K5DIz8&mCm(-3yWV~WrL5;s5hI9x+jIdOd@+`R*yH^Sl9ME+o(-%_Q|-YQ4v?` zFMFuB<+dUr>7?~$X(SqYwcyjs(;6b;%6D21zG@;x=<%$Ab)ClHJhT8o+a6kSfiQl{ zXjkU)d7zI$Xcirb1hhArjIM>sPLr#?HhrIAO6I&IJaY+RuN8zaf`uG7+2_XW3^BoY zfr@0x8@UTdw(;|nWnL2b?}lt}Z0N|ty~qO4a&&QLU~rw!YpE$u*E^^=J$dWB`U%tM z@x(47-Q{Dzbi^<(;^2n>7LQwIxx15n>VA)~ROaUk!l<05=&(We@wNi&!O($aol!K$ za?1>Ld_$?4=4Iu6`i{i!&41>%^>QzZH%hy)dQAd<%;a}Hcc@Xt9hozDC{TfE{8^{Q zVe9guN9=4FWbpka(Y6O<`sz~sRW@g2_B=iHZ)m>5&ppl9{hJ<@Qj2IL!6d2=P9k=A ze2=klzK#`0AUBS3bXn@3HweJAL$BJR_|&yA8!vLiWe0q^a_j&4a7m$Z1Txs?yU+Rx zZn-gUNPPa(2p)FF^{SWkKTm?xRc-537zp zqP%lO^rSQW@S)z0zKxG)csB-h_b7R3!5Un327wfbmT@&gb5^RJ?IfvdFdJ|8Fv`BM zW30*bmG1FLNBO5Z`Cvn&v?D)ezS6H>zM@{&tlHU!tK!Ur&-epYaZkY+7Va3~*9F%f zeZHt;DiljXY;ED@0{;xD%@(dWKKcg)l-hwoFzMFQ)_KMPV#yspVTb54t$7q+q-o;TZ1DHl0z6K zRjWsDO55A5M1T;-Dc)aS&6kc0rM31M5hy%7hg}|p- zTBN&u(Ckche&56rlN%BJwj*<=g694MFrq8(*UT@?uH+&FNy?vKA(R!+tV97P@W+ur z8k)F^Fg4iFkDFLXCPfx!TnnyzTq?3$`qR9KriUb~-z^p`>q>SsPIfivPku25i@0a+ zzJQWY{O-L4iBpiiI|JIXXe&>6a~e=NylLA-h_|=sB}kU-{Mb}sI0j$ zryLBEEaCcCY+$?v)3(=7{1XXA+gZ2q^}TBel?l&ybC0)JbnwFb=GVg^wX73QMAfCW z$~wsaXF_XekO0=xoC9B1SZoo!rvxXB=-9Py1JcWR2R^J`Wx;RR>z~N`wY2|5DB&RD zz~gVFAcN4Z^TS@h`RB_%Ux!XH?4C4O;XoJmWEue5xdK!3Cx7OhCpFV`YNo~s9gLfm2N`6@&VlA~|7-$zEC^8r70)?C;0@Eh z5fVE=c+v{Dc%)m}`4qCz^c0Mt>XUS!~?8Uh+xHH%q|<) zQzF3{8MG8AUXJ_x>r-pjW37z+@3=|Ymc+5UkEs1%L51e^NF|8fuaaI7k<5{sq&A3P zfvxaoaZpB2U75dDiBDYW5(2yIvp_WpkFQ8fwzxd=4WwBLvkAnt)PFCYzSmO=q&9Ti z)!D~IVWkZR<}vu|*a(xzM@VyVc`N;%4jlVQX(BzvXpcomQ?+{U`0b0@WulXOwVdUq zmms4zCR5300`#DGT&Mb842_)p<-eIW8gwLL(2<25w4X-n#$J6y!vOepyp&njLYzp?l_{3Re$&iAZ0L z37tJx6uI-=U-A&r!nl5<8Ar()$ufM%NEmaI*|v{Xoj5#M{Qksg*8V1G9Q|+@KNYkR zja?2yk>PQx_mQ2@{9?DCE{f4K9sXn>5wNf?-!{BBtmi*gBy4^7U>Ebeo1@Z~8+Zdv zBzhcy<3JV21Xlt6Gg}#jRB!25RB^j+)TSYKYxuXj#?d<{qi3Ckv`fxpSg^6Y0di!I zcJ)OUklVws7k|lC8^3%zvvu#xys>5TuzS|1M8ING!|N`cjuW@nUxk--0`|)Mnz9fDd>vbqKxV1`y;9={tM>Q2 zIH!CQ=!yGBQ1-iwgU0keb^u5Op(u&bx)%S`8>g;w2irho7a(;!?@nC5i77B_5XBbZ?oT;W_tc+Q%-t&|CZ>otPwTY z)@Mz%TpR%uYj~40jPYVi5WjWX>ip!xR8HL=*%F^EG%9Ga(S{8|ST<<2u24vu3CD!h zxum`{ZMsmUC%--t?YeJi#RwDRD-zy1f2~sS|7!0$!{P3NM@s; z%*>fH=gcY9|CJWL(fm7(h(_4M!@w~*lNx9USpv+YP2_S-bf;o^vTm&W*kpDg3#L~EN5z>MmD^yyNF~>F zCAWpA%iFBtp%@#KLWaNoy{|i8x0C`E@|*-OmO64*qom&-1@m=#6w@GMBpKX!i!P)3 zCA*SC+n$`;p&7LH?KzFn&4roeOuOgAJ>Zeg(P$X-35C&su(dmCNz-uTEJ~}lUryfq zErj>X;{o(rNR;HS(`Bcm-dsr*uFDu9#r!UjPl|#i4A|O}NJ@WR^Z9)*UBeg*>zE~4Ys=BmtUJ!!(cS}$k=8nZ6ihF%vxdI^`+3gZ1ucQ zu@kV+z9R#yxopWYo7(Ku{^@1s%HFi`$Bfg>rtXloH==n4gaUZ{92YhO`GCX^)*ZV; zjLWY`u#bz?5yIxWa>TcD2%3un+sq7%k8vB(O13+U(mS`Y!`it#xrT~5_ZSG~hRVWo zAiK~$vvrATK<;@k8uoTb*Se!xy&Dx!WPej(LlJ3o6`OlX>(tFcmZi?ffthX{?G_;W zSFzkIxXK{?o+3lqvvl5e2kr5x44$^gF1;`OEr_`D@D%!~o`qEUO^8#5X z`f58le&bTRH}~uI+LpGB6O~O5cNWt|j+v}G1k_c@5Tkd#TWiFSg zf~8^(WyqNl*@~SDrLH`6^7%77HV%|L+q}Mkj**KV34&OAZ3OOBbw2Jmos~cHjh?wz zNS=VM%hkF9wzK<|*{hO9*r!vIdP#It5P@;%Jr=mHNJ*2?(d(zQAXc-O^}90U<)6&W zy&PPlR4ACD0c(l>yF1L>l2>2(mh{swcV>&nukE@BQyw`>_B)_R!*I zI84FF^*BdYDHrnVl5g;wsyb`K-5w`dw%Uu;9qhY(zuImg0x$IZXuPa`y3b{I-OmS@{$`k^?<&CUU7#}*1a(QWU|=ecY=qmmXw!MfjvgfTc4zAx$y^t;d1fw^>qCAwK{>1 z4-DbQ0H!{z^|%J61sM}WuD1h+pCrj>0CSV?f}uNaCD;1|%Y=J0Uor@0aH}aMT&z2O zDOAnj>eR2gU1DDuuWOe)~~AE@W?wQRZzyDo_< zqZ$=}j&Ss1mi#GiSC8uDAkks(b>zKX@0bN&r7ydUTMyNyil_P04G2j~1$Pi~C}g-? zT1R&yx1GN4sWlH79Yk@GZ}Sg_wRb(0nA^B9xy(jCF%|?wF`cOEc{;V_?Wj~VWo&g3d+`6ySi%_Bj*GybL##EzoP6Az>ML0Zn2NdQH}0cX z&e-r+AK2k@gol+j06hNUW~p7GQ_Q6fpAVTOG)i5*s#pGcc;+0D4NVZ;-KRk;MSK;PHZ05NwjEDjdsGYMErHE zohqlyhi2Y(n{rQcPtfp8Y!(%pGZnR=e*>GLj$AgckV{P3wNJawr+0pTuxY%`l#lVF!%s>z>T;L5?w-_9(Nti$UTVWfJV(ensg zX1jSDv3JK2A1nD&=Aib4G|9)KaFNT~2&t_rQERoku0ieFa5rG@nK9<5&Npf8Rmktx zGSh5sFKvXnIicwyzJ9!7JX^u(=bhrdp4og|WzOXFaU_nfrLZ#yCL{)K39o$?f>4ln zZw~+X6o1bdAS7ZrFa-{~A*2QMS9OO^aCcT?!8ZFe8v)C^Qd(O$)ef33~* z&PMxr|7n-pFl$D1d6pBu_X zgKKj4^Wy$yO(Fk{ODh(wSygd0k??1++0YN(RhGx#U^m#&MY@LNpGY0(+ei@o`MFv8 zR*yPwezX0#~(BkWsW<(g+vl$OL5kz@B)ZyO;E)?|BEkY({%=$LX20tw1!QC+O_pPdzN zn;k6Zw=+kLW*Xf=)IE4o%n{08LDq-mG#{_2!!v&S zh7FA#7-t(L=**s0l0P3*m%UaQi=*$%abh!Qd($`ZvK2QO_ z3J0d_#HQ4^FY-nK_vC5XBs#2GQ=yfE56#$<4Q7BdHKShpv%U_3sb>%n zYt^ZUsvyo}JrvWeu4z3?o^kt3BR8{z%$i#DgXAgW0Vz)HX5=?E@iE31%%_s!TYFCO zq*>(kM;;~)^%*gf^&Lz8!`)8)U0j;~Di<5Q96Sh>8v{Ng+s*7u%{xmj05nGE`ns?8Yjk z4<>@{t=_lJtSEt9aIZdt;H^GQ99DXFIn!Kxu5+3WQ>tk=C$B$Jj?7@}ACQ9P#5$H> zo`o#r9*OlysFlq}4s}#nhl*lH^ZYl=*jx?X$(LV_$HrpS<_41`(_a~9_XrY_Dtp-c zR@_ftE&Z?u!Dh?8vDjUdulPrZ$vC8@u1wId+c1@YGui2jecYN;#{Pzu(LHgnb%(7a z^TF=d=B_&3ym9NG-BSk0@07C)8Yrp4{;Q*=ZecLG0pgu%(o}G4s9I&Pb8lysjIF}r zKG=7M?@L)WgHu|$Kt2R^Jc#=wh7)|*LI2z=ICc?pGEM!xtb=z(Jv^j_Qv1*a3 zKhFfr#>T|33KG>QYoYB4VYd;p)r)c&B_R+S5>vL{)SGoBA6_aZ&f(eCE?V8)I#9jz z^(>Pqx8igpHcYt+nnNWEa@7dwtft;OqG2+poV`p|qe?H6L#iFt&f?V>mj<4N{`of* z9y62gHvBGWiDv=u9ZA$Lzou&={jn|~{YeRA4FNrW!+@H5bN?(NfapA8=GNcAN^Rw{ zW^}O8{#mqaSF3&^Ik^YmY12 zpE9eCv`3tZ5tl4Pc2Zbroh>oX9>I%15fUEA+J0izP?2u{i$(tp5`@>gVe*`)H6&te#WO3HKq?`U!^O3!TCh znb)Lu?q|LG&!Ww@Mg~>AYr!%1_GRG>WAT<3Y}A`yR0JpUC*z{fAO>&Q?tk;5&OT+4 zQXRAR%>sANDgP35B0OQCc||9~IP6OdJgXL)>k=&*c+|p$z}Vn_b7a>Z+An)2u8S{k z3uKR}bYt^hS|A4rUt4KP8@6jzIsHYq#(6|mT0Y4jXUFG%1lnaxSxs;FSaXaO&CT!( zDBON$>YZn2%YF9|hHVbR{b*hGU1RRg(a$Q1E1Dc&5gM$nwVB~w?sx`+2ji$yTB6_32YeHq?YVVH>Uc z3#oay)U+=G)sf0&H`x|JX6i-%o)W_xo$ar0d)Y~saOnz9lL_3r?hic{h7$8VAUqR8 ziIftTE-j;xeW#2w2-4M@t4;G|#2k2mm793DvtJ@qc7)IZ3vBO5sb0U= zMLT?<)*c)2vh8$$as``R&-TMb!J>~uU8F+wQCFjN@(YT&aOA_RVnG|d^lwxgh}^d@ zw%pak{wJ+UDU1o$@&mt{v)u>sW&4QYG+R?0u}gi!H4MhuT%ALkg)O2jyR_MUKd<=R zXIe8JAbvVjpDLYqGB-Kq`S{K9-yrjZ(`nxeEk0Q3T01CkcD#FZxZz;FFm>ld{r#{$LIzpA* zzjavh8bsxTU^T8^yB-UoehpMqE?HP_JnUH?0 zmLatI7}3$o^Gs5ljpCfBHK%*pXw!!lo?JHcVEscG4Z`e>f2Q^?`xV?U;_ixo^@w5X zlHmJI^>@Tjhm=AV@1sq7SlEmDh&j{f)rpzR-=1C6afU_rgeWR#>@EfcO+8F9-^v9? zH4sy(_hEeBsGpo`WDV@wkB_@HWN%+dcOQu%SqWmjxShPvwK?-N+czo?qhfnId9h#D za6_}=mJj^I?ouxr@_ApNkPI@Xe0Q~y_Ev>&c6Gfs$S-t%&3pD&@-yn}xxy-e)$en# z9S3jO1JtUiyQ+-8R3alaplo` zzvMn`r2#xnmTIs?v4oCd91w{j5?192$*r2gHG^bRsjHJbCL93GcyBmu}r?AN4 z9TrbODi7jFcJD5d{egP22cP=fb$K;2R~9ESF&Lada3SK{T%l+DI=0n!5<T8p;edxE)C`tW`$!=Pz1zt%ihL>~Zl0Jz~&1ZQjsE%2` z4Q|uV8@53T+t-+Y8rI0NwKwA%{xMHM7Qs_(v-%~^rFy5jrP|0_f|>~eqXiOlzQMsd zl=Lr7AO^Xry=hOuxdfBlMdQeImS$abYxytX|D@c^luIId^LHy+8i+SJf#=(OBvW*uG-d!XkOSkVQOn_+!aRv=Ym;L;DL0q?X$Nm5*qaOL+2$(LgG z%nxr%fB1=IbNbdYPn!KW;67iaxcPN(6Mqj61!C|tqe%6`e zJJ5$xA7|L2Zd34>lF6dq)Bm(pA~Rb2{bCv{*0H%f1(Z($CEQPzL3|jrH?J}ljYV8U zfyz4+A#|PW6qhjObl65B$OaWRcf*O1OQlkTP?H;;e2>leo$*hs+A|UCM%t0{|J7*l z_^YVJ$Lii6xiGyq(++qkXcoCfkRni`ln)doom4T4UDMi_Jkxx4ycC!X6ro`SC|%HS zP{kY;xXO}pnBXAp=i`ZS#~ZJcD~?gTKLu8Quuj#nbxKVvnj5e-+w@;@&9wg}D{8rpZ;F`}R`wj9OpiDZPLSjEs3|H)9w>ceUP7=V{-&R1a zQVQN6)8hoEh=vGn=qZxJE@-}r9bOu0S|dY95poI;=AwmaVjwn+V7FEVk{OQb-4$*G zgF59DXU~vlcD~7K;9SOT2paXO2T*J3kIc}h4Dw+8%K$%iyNWgx-pSSOOEM$o$8M;d z?-xsZaWdcqx5&d)GIJB_N9f_li5#tPSgUCD|a$RN*~Geo2d#6dH~I2C}5U8{zEkr*1`3$4N%iedAmrYb{6Xp_k8`b+>eIDjp| zExTKOT*cSC3PiO4!_ceTV@l*6-ofUf4G|fpF=d{tE_Po^U&1;BEJV*toHPRc9oi6X zdYid~I57r|Ft5CdO@Vv5lV0IW+^>+SPGNi+0Kkg-aARZKxHeES)2=!K7E8L@_PF{9 zsB8oPI0pc*>O5Gvc{xS0LcSmtt%Z=g>W6exNOA(zJ}Ju20m?%f!yh78QFLA?Q*Gqm z->E3UIBkc$3GpD7PxP=hJ1+w*q)tk+S(Uq$S3LC0(sXHAVV=A&BvB9%&tm;YWdzz?q-G*SVw9{XXEe*dO(3{$gcR& zP4g4OlLuGjtgF7H5pskL-PN#*+C`<|tyYci8;4)LBeS_2XqjTp)O=B`6)W$!X7iS7 z*x2bynyQwpsZTkfNQF)+HPB1(Iayks0r67R=bn~|YlCZ`vk_lr6nN5{EnXE(>LTQ- zF{5?E%o3-V$RMmxpw76c9*+oQ7s%%}8MDDbRA*^gvO+~R+~QiNCX&1Vl>^R0=K+}= z<795dd_ua$<`}j%-xlYceBAHdYG>`U@1;@&+_Q$-(|mEQClufWP*lINX`19MWA>QX zu-}kqY!Sl>%`?N_&@;L-WJZUJxRFlOigyqY5@qJkLUrwvCDRw~EH-0~Ta62fx@HdD z;}M6ZIPu0qbw_$KYUD}X6Vq^h$c3jnrt??z7WQ|Ggo=M(fi!Z-a#@rZq!I$L3;3P< z^hacc5yTFpfBHs^OA1uy*q}w54e)t?Y|Y9r*e6Dgl9B<%y0|~D<`;1HdMN1qmlB~> zpJuZ!el%Q5gR$kWq|r7Q<#05=FGbiv`XxJ#nSqk{4-QBH%)vnGIIAP8t)j0X10iSc zAGS_&NKf2VCPQD$9wm8Ju5N-AoCJUFnij_l$p>g%AFcb@`XZC8vP_Udta!p-`*0CJ zv)yZI^`g{EU4^Wr&DE>L;T`IB5KzIRi{REnR>fprFm!~^%KeF*^?AQsCSVd|MB)wL zMpdeqfEq;Pnz{Y}*-q($rFK^Ge&9@F^iObl;$0#2Q4bT3R_+~EkJnt>KU_JD-&Cw3 zuXgf;`bIBa;{;#pv3WdXBB*zQ02ML@rL56cahnw-MeeQqfAt2R-%MM11g(-aBgPDUs`E4cP?_DW#qnul~ zE$`ecW20glq&*uMhWmec22}Wn!B@W#-aO{{m|H-_sv_+f;4u$Tjs22;kpVX1EN9&< zzj+aMUc2fLSpHj?{RPz+vNo6F#r|C}PymnDRR5~`;Y+#7Xo>La2!9`Ejq77}iRQ8Y zc~@jxq#O>G-$&^I+*d+#YBD@iWnj)0O5=t&Z~Xv~_KNFaycV(wB!5uOhom#GX`m|& zXh2~Iyt*)2s{n7XEAd(zjWVy~!Jr2us-i2#bL6Y3nLi`@=j1WR5*w3N0o!#1ecLA@@d}X#D32P;nn3>(cs7Z#B39R#(6in zz)#L(Y$%G!q@@00w(s^~@41p>s}YSH?RHwPr$(K8T?f#pe4{Pe1>g|CiEMjWf>;O{Q2>sv?$;qTPn z98>1rw-Q%JSJr{UbTG+8hT)QJGrPqRER_Hp3P_JMa5P3wl%0ko5SeGrzq!P-ndyFb zOm@knA*_95P!jZ(8r`tdxfz6~>^r!4rr3|<50H&!aAf~r^oKn~3#dw!kpMVkvrdWe zY$zCK09RlPkhV3VXig#4NHVd>3jK6Kin)TZ|Gg5#7k^@eab6KMgukd}TsVoaq!m!l zDdc)087K1!Wu3?b3*1uW$HyOhNdhCP7_NL$=-OTKWCfSVfI3K4ZPctrMR~tjkg-9D zDcmlo8UKd?POFRL?#pqMR(lh6f)&}ezT;ye+|1H3Dh6`K0Pn9ZEg9CV$^}X4-Or)f zFImax1knPPeTx>HtVkv7#G>?UW)M|+wiTnyKxl1|!u6c?z>WS(C;d}EZtfLDgAX@L zbR+z}nAH#r-6M36Ld=hAIqi4T&%k+W^0(O(gVL&ze-%pdc+MgB>P!yp@t*vyLGeAuN5 zIxETnVffX_H_05(@7-{Z(6%J5o~{5=iNsTv@bPqe6J(Tp$tW#zH#;y5leX??1J9yk z!ME@I=SznEU3CY~B`{nWEuVZ|^wyl1TuQKff`#+w9BNW&CAkCohe9+we!V{Ys}!P;-3$;ZarbHJfK5R zGr-)rV0!3vRCm@TyNK(ELxg*_`xq~En<8kYP$YjqqIXQmuHq7J1T8`i`Jiac94O0M z@yz7*>!*P!3rXK+4L5FV-E&UT!UT*yY{**iCfhkhYcSaOV8+IQY3!M2^`J%?Y(TBD zB8P`OavW?Qm8lnbwAHK6H)=0FZ}??}%&(ZX$3LY_og$AWZ-kU1C9syUBrSN!?|YVi zu3;0_UwPm?7EH48(}Bzp3=seURsGsOY@SnWhMugC3BrY?$DFpP{mG z8lkLTWR3KOdgbp>u*Q_N348X27A8<+kBLO>&C5n^r08?8U?6!vAF4l}>H#hM5T=&w z%IN>(YvO4#HK~Aee^w3z(zQ0bT4eabIS_|`be$^HSjep4c?KwHNpFIb#Iz{{-fror zyMKLDH|Zrz!LR|^E^ax}PM+eV*R-NEcI;f-BYvK#&3>Z&;>7BA&hra+>}f-?{-k09 zZoWvlWp8%ZkR3<#YT9ah@~sM;SOy>^Fw1_fne|p{#sCenl+e2Y0z(Q*hKu5DvcZKv zlJ?}&eU%>PG!+$0z}uA@97WN4AnTc&G1qt8$S}M(q^x@~?lc(ZUN{Q3oX{6+F|a3i z`H%61=gGY8qQoemZcZPUCPFp5VwSz(28U!)pFIcmj63|IQ<_w9hS*&$i5>7G1;s;oc#0+Xq3N=u>U{V{|lOFuy-E?7Nc;~wiNj%@fA%~T@|GA HgOL9P5UZl_ literal 0 HcmV?d00001 diff --git a/docs/test/e2e.md b/docs/test/e2e.md new file mode 100644 index 0000000..a4d0a51 --- /dev/null +++ b/docs/test/e2e.md @@ -0,0 +1,2 @@ +# Running End-to-end Tests on Remote Clusters + diff --git a/docs/test/integration.md b/docs/test/integration.md new file mode 100644 index 0000000..7fc6572 --- /dev/null +++ b/docs/test/integration.md @@ -0,0 +1,2 @@ +# Writing and Running Integration Tests + diff --git a/docs/website/.gitignore b/docs/website/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/docs/website/Makefile b/docs/website/Makefile new file mode 100644 index 0000000..28e0d44 --- /dev/null +++ b/docs/website/Makefile @@ -0,0 +1,37 @@ +REPO_ROOT:=${CURDIR}/.. +# setup go for managing hugo +PATH:=$(shell cd $(REPO_ROOT) && . hack/build/setup-go.sh && echo "$${PATH}") +# go1.9+ can autodetect GOROOT, but if some other tool sets it ... +GOROOT:= +# enable modules +GO111MODULE=on +# disable CGO by default for static binaries +CGO_ENABLED=0 +export PATH GOROOT GO111MODULE CGO_ENABLED +# work around broken PATH export +SPACE:=$(subst ,, ) +SHELL:=env PATH=$(subst $(SPACE),\$(SPACE),$(PATH)) $(SHELL) + +# from https://github.com/kubernetes/website/blob/master/Makefile +DOCKER = docker +HUGO_VERSION = 0.60.0 +DOCKER_IMAGE = jojomi/hugo:$(HUGO_VERSION) +DOCKER_RUN = $(DOCKER) run --rm --interactive --tty --volume $(realpath $(CURDIR)/..):/src -p 1313:1313 --workdir /src/site --entrypoint=hugo --platform linux/amd64 $(DOCKER_IMAGE) + +HUGO_BIN:=$(REPO_ROOT)/bin/hugo + +$(HUGO_BIN): + go build -o $(HUGO_BIN) github.com/gohugoio/hugo + +hugo: $(HUGO_BIN) + +serve: hugo + $(HUGO_BIN) server --bind="0.0.0.0" \ + --ignoreCache \ + --buildFuture \ + --disableFastRender + +build: hugo + $(HUGO_BIN) + +.PHONY: build serve hugo \ No newline at end of file diff --git a/server/internal/router/router.go b/server/internal/router/router.go index 20825eb..b25b40c 100644 --- a/server/internal/router/router.go +++ b/server/internal/router/router.go @@ -18,7 +18,7 @@ import ( swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" - _ "github.com/OpenIMSDK/OpenKF/server/docs" + // "github.com/OpenIMSDK/OpenKF/server/docs" "github.com/gin-gonic/gin"