From 05019cb0ee85cae4731c19c654d470b07fcb774e Mon Sep 17 00:00:00 2001
From: Angus Gratton <gus@projectgus.com>
Date: Thu, 28 May 2015 18:09:39 +1000
Subject: [PATCH] Remove cJSON blob (can re-add later from source)

---
 common.mk            |   2 +-
 include/json/cJSON.h | 134 -------------------------------------------
 lib/libjson.a        | Bin 31274 -> 0 bytes
 3 files changed, 1 insertion(+), 135 deletions(-)
 delete mode 100644 include/json/cJSON.h
 delete mode 100644 lib/libjson.a

diff --git a/common.mk b/common.mk
index afeaa0e..1d17564 100644
--- a/common.mk
+++ b/common.mk
@@ -56,7 +56,7 @@ OBJCOPY = $(CROSS)objcopy
 COMPONENTS     ?= FreeRTOS lwip
 
 # libraries to link, mainly blobs provided by the esp-iot-rtos SDK
-LIBS		?= gcc json main net80211 phy pp ssl wpa hal
+LIBS		?= gcc main net80211 phy pp ssl wpa hal
 
 CFLAGS		= -Wall -Werror -Wl,-EL -nostdlib -mlongcalls -mtext-section-literals -std=gnu99
 LDFLAGS		= -nostdlib -Wl,--no-check-sections -Wl,-L$(ROOT)lib -u call_user_start -Wl,-static -Wl,-Map=build/${TARGET}.map
diff --git a/include/json/cJSON.h b/include/json/cJSON.h
deleted file mode 100644
index 992c48a..0000000
--- a/include/json/cJSON.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-  Copyright (c) 2009 Dave Gamble
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-*/
-
-#ifndef cJSON__h
-#define cJSON__h
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* cJSON Types: */
-#define cJSON_False 0
-#define cJSON_True 1
-#define cJSON_NULL 2
-#define cJSON_Number 3
-#define cJSON_String 4
-#define cJSON_Array 5
-#define cJSON_Object 6
-
-#define cJSON_IsReference 256
-
-/* The cJSON structure: */
-typedef struct cJSON {
-    struct cJSON *next, *prev;  /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
-    struct cJSON *child;        /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
-
-    int type;                   /* The type of the item, as above. */
-
-    char *valuestring;          /* The item's string, if type==cJSON_String */
-    int valueint;               /* The item's number, if type==cJSON_Number */
-    double valuedouble;         /* The item's number, if type==cJSON_Number */
-
-    char *string;               /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
-} cJSON;
-
-/* Supply a block of JSON, and this returns a cJSON object you can interrogate. Call cJSON_Delete when finished. */
-cJSON *cJSON_Parse(const char *value);
-/* Render a cJSON entity to text for transfer/storage. Free the char* when finished. */
-char  *cJSON_Print(cJSON *item);
-/* Render a cJSON entity to text for transfer/storage without any formatting. Free the char* when finished. */
-char  *cJSON_PrintUnformatted(cJSON *item);
-/* Delete a cJSON entity and all subentities. */
-void   cJSON_Delete(cJSON *c);
-
-/* Returns the number of items in an array (or object). */
-int    cJSON_GetArraySize(cJSON *array);
-/* Retrieve item number "item" from array "array". Returns NULL if unsuccessful. */
-cJSON *cJSON_GetArrayItem(cJSON *array, int item);
-/* Get item "string" from object. Case insensitive. */
-cJSON *cJSON_GetObjectItem(cJSON *object, const char *string);
-
-/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
-const char *cJSON_GetErrorPtr(void);
-
-/* These calls create a cJSON item of the appropriate type. */
-cJSON *cJSON_CreateNull(void);
-cJSON *cJSON_CreateTrue(void);
-cJSON *cJSON_CreateFalse(void);
-cJSON *cJSON_CreateBool(int b);
-cJSON *cJSON_CreateNumber(double num);
-cJSON *cJSON_CreateString(const char *string);
-cJSON *cJSON_CreateArray(void);
-cJSON *cJSON_CreateObject(void);
-
-/* These utilities create an Array of count items. */
-cJSON *cJSON_CreateIntArray(const int *numbers, int count);
-cJSON *cJSON_CreateFloatArray(const float *numbers, int count);
-cJSON *cJSON_CreateDoubleArray(const double *numbers, int count);
-cJSON *cJSON_CreateStringArray(const char **strings, int count);
-
-/* Append item to the specified array/object. */
-void cJSON_AddItemToArray(cJSON *array, cJSON *item);
-void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
-/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
-void cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
-void cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
-
-/* Remove/Detatch items from Arrays/Objects. */
-cJSON *cJSON_DetachItemFromArray(cJSON *array, int which);
-void   cJSON_DeleteItemFromArray(cJSON *array, int which);
-cJSON *cJSON_DetachItemFromObject(cJSON *object, const char *string);
-void   cJSON_DeleteItemFromObject(cJSON *object, const char *string);
-
-/* Update array items. */
-void cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
-void cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem);
-
-/* Duplicate a cJSON item */
-cJSON *cJSON_Duplicate(cJSON *item, int recurse);
-/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
-need to be released. With recurse!=0, it will duplicate any children connected to the item.
-The item->next and ->prev pointers are always zero on return from Duplicate. */
-
-/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
-cJSON *cJSON_ParseWithOpts(const char *value, const char **return_parse_end, int require_null_terminated);
-
-void cJSON_Minify(char *json);
-
-/* Macros for creating things quickly. */
-#define cJSON_AddNullToObject(object,name)      cJSON_AddItemToObject(object, name, cJSON_CreateNull())
-#define cJSON_AddTrueToObject(object,name)      cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
-#define cJSON_AddFalseToObject(object,name)     cJSON_AddItemToObject(object, name, cJSON_CreateFalse())
-#define cJSON_AddBoolToObject(object,name,b)    cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))
-#define cJSON_AddNumberToObject(object,name,n)  cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
-#define cJSON_AddStringToObject(object,name,s)  cJSON_AddItemToObject(object, name, cJSON_CreateString(s))
-
-/* When assigning an integer value, it needs to be propagated to valuedouble too. */
-#define cJSON_SetIntValue(object,val)           ((object)?(object)->valueint=(object)->valuedouble=(val):(val))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/libjson.a b/lib/libjson.a
deleted file mode 100644
index 179119ded5113ccfa0c7f2e984460730eb9684d0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31274
zcmeI4eOOgh`uF!fyd7j81SG~nr*lq*=Oh>hO`)Ix1cJmD5K$W&UIf%aMWnQ{3CXu9
zDm5)Dn;~=58f(;?v>7WjMJSxCY{b&C#wnc9hWu$^zU=4z?sG4__1Dbrxt{ssxt{BK
z*5zh>)_33Q-fOSD_C9OxwU(~bvf4>gZtZcS^YY*uoHTUk&_RQSBsral)-L(i=}h(|
zbB59$nx?rlE#Th&+uNku$BY_Ta$99xc5Us9+R=5jnqSGPtgfu9<izN*+F6z3rq)dv
zRZ}-hYKm*8POp<Zc6!x}+G%BVb(Iw?(-AUiYs>B%GxdJuRY`eumD4U+jViyZa#Eep
zGAb&NDw<*CXTyu4-~4j5u(GPMwsQKU${)=m_Fk4btFo?a(i9vjr*_6Pc`$!n{P-T3
z=L&bIK$YpTU4@l3)n${ceR<R6fiBx|S(ah7m1T96Bk!rM=2P_xMYZ>++Vl%KW!1AT
zS2AbJxIE9ud#06Fs>|%pHKvX(;N;6Z%VPPBexy8k)BP9qvYa{9Gs=EM&YE#gd3EJ~
zck4g4)U)oXsh&ECPM6(|m^yuG)qVcNz!?{BI(fI<lt{On)Bo3(m^fs}V5f6X;-Dn|
z{Z`uJq3rw|UDxTR^9Nn~g?1^WY3FVvJwVe2Tf044l-AQCmuY%zjxLMa8;s~gceAtK
zla8+T>x?KzSHTZvxlOy{-r5j-S&Oq~V_?W+TaKnZA6y%t-La^_uGcpOhD-@+*yAMi
zv5-a2*jH7>4vKXLe`~s1oJo6}O+z2v822zab#xi(FxIi~Cu&F6L0_9IG;*&^|G{k5
zv{<)S*SkT7ZS6^hBgdwt8M(TC8j?LS!O`mK@I~#2;PR3SExv)gv_*#M`dJw5wKX;v
z0rB(oGe{*EcD*(7@(h#*$90A3ZIQ=(du`iSfBAyuN$oI>*do4e2=l}@mIu+nQjcg6
z?e(7g#!UTNxbid-b@`p@|FjO}D4uq%HL}Ci>9gy6jDG3l{$GZu9s3Rz94k9B)2lZG
zXl)sxzP$nQ`$AR*#=g@Kpc_3?m&Bhk!VO1ifa`?mePJl=pi81HdM#*CqAka(#s6*G
z%KRilAG#%HXyPzy-$G4Wl$h*p-KT$vGL7gt{spfqg=#7-T>lKpodF|k$&ntHeh8@(
z0f%j=ORSvnrxp!<r@X0ha__+WakE!m?HAv8x_4mwC+pOax7ZeKJeA<srl*A;d*I;R
z`g?F<_jS+g)QvRnFAm<CV009;W^|TC?MQTVE!t?y`HP9d?1bI;7e@5-E=`$d73S@W
zg_-ABs&D_1!ZhdXF*VIJ&4)B?W2$L>o}p>Yq#W6yQ8;>RQa<)&{nyT;ft3EfW#g@n
zo%lmj<=(v+5tKGy^nVzlb{siV5E|L$I+k(Jcf!_D+gk1^)Q?*wc8oCee}D=;G4+F{
z5vUD{&^sY~6*Vl)kzf>jY-aq$)Q|e5L`(XJ?DQj0p88VnQ+Q1GUyBpAm=Eo_y06{L
zEz&>5?wo72d>gqXq@A`9a@S&h+hS(4m|f>1(t7G2Vb@=x^by9Lj)ZXE4pZM}<%`tP
zdXn*5X2#p5-VW)hB%38|$FW<Xd=(YR*|wSbZYT=_G*-5l`VJ`eNZe8h;oSwD8Bsf&
zj;>`*Rpm{k`FEv0U1-zdyT@&_j~g0PxO?BiAT2*&+-vr6H&d!D*rttpee}4L5rw;7
z+HBMF1Ga8+Y#rL8d2HkzKZkLMw)Hi~)|-{kmJ^_Decib=r7v4hCL1zEZXFtaF_T@x
zBjQIge!Vs2sLJTJ1@zzM=<h#PAss8&uH}dH-|Fb^KN?9mTL0HK_fPpfGLi67LeRx0
zhWRPAvCnBcKpV3ro|L#pXJ*pfSr%FlA0Hd=ptdJ^K*6_WN|0frIxs?NhiT=Swm4(Y
zQ+llSQgVW}Qhz45wX9>Ny}-H&Chj$Yy>x3Y)V0{z2bSouvuz>To`~Sa#Mr9h*Du7z
z>0hDZW4`>sxP5ceJ$7H3Ek%d1Rz6IN9YnsHbDCp{&cwu>Iq=l6*qU-pcZ3wS{5s~U
zD0j=VF-eh`Ez4qxA_`j`kGZF(yQMK^XZU@tlzCfYLaqF<+QM&4k1N)l{Z})2-m<28
z>nPJ~58CXmc{|METK{c9u4Z%g=8t3I&S$)3PTrC;IeA#2rXN`GPUzBF%{Dc1>(g&|
zmfqsd{#-b)FP*o=yqhxrI^#97|KOFmk<Oas>FLW$vm(=HJ2QT7-ah-guLF&koItH`
zojLoaKqHRM$r$qbPxNU$ZXOaBlN1-{iW?G9m6H-Ss3yIr=H84YS<cL18l^^Csj<#N
zE9JCOZl`;gmhqf<droE`Y%JTGhb-J<8czl9HjR(TxaA$wSW73}vcoj?&}C_P+cX*|
zTg#jD)QHwJtv78>+GL=6{aD7Cf;QJdUua}|t?N5;!P90-ie@<W+PwOghPLXP*u$${
zaeZsj6Z9mmRBU@=QtaViUHk6O`p*w9{LZ{3!T)TaUnpD704?^zTs_`t%hdJ;Qdzxa
zF@d4R0prPu@4vn)G9)_u`{=OD5nAl=z2UKkbHWKuj?gj<ZEtwo{F0&3W8#+I7Psb>
z+0i$KM8|y}eN}9N?;}(H3yvG_G@djL+>Ilj9H9?5oEfeaulZr2q1i_03(uOXn`&2&
z&~wh1o13aOkI;j^H{DIs-6QmtQ)XsUT_)L_Gz*)`3(2O-w2ja_WkzuM2pzY3XGV8{
zoqiVScE@j_Co@!E@Qr!#M@(z{5chsSW97I(fw68n*2TLAznw?gGV)yB$b$u;zQX}Q
zi%t6RK4Tg-uhyQr*VYoOc_Me8HPdVfMo<s!&@zhX;cT>MTBF13u>1T!7}l|qT`^By
z2s&eC+BB~obM(ArTK2U$UY`(5g{N!*Mj(|hRL2i8|HP6OZE4vNQe(TG7c~!G^hAo2
znN^fX?<TA02gCAn(A5@s*tR!d)oTd>MwaiS>F;eET4p#y(}u@WE7rd;+vw4RpL#Au
zg5mqSX%ulYsHKxn`*}QF0n-0w8d>_+xPI-0MnveH!QYrRLyNy|=#tPhBf$~$M>F_@
z8NdIwh=K8^L;et$`c%m4{U&amy~My?|1UwyQL~|WLGhGsOS0NR@DUS<-4B=x51X1g
zC!C{o4rqxBgEf1Srq!)l5*Oi&bH>Fb#>b`K7&kg8uJk6u#s#Nly<m#ja@KTpnL$&`
zg=b9HKg|V`&7AMe1y7hQr_G?x&74!_?r^Q;q#2Z^<$Oz*;bNG$#k%^`ZLzrnH0rY5
z7G=<#V{6T@Q?HC#Q|xud*a@jYhfIgf8%Z6<i3euKRPL@cy}CEv>xxM_?}-fhgxZEj
z&+arA9HgcbbMovmYHQ6Q&kV?(MA>3a{;=K^>hkt@DJnKT`v7cR3;t&A{tIlA&TO`9
zV?S~m+Qg5BMulX2Vzvdgd}ca~SSM;m)6y@N_J1Fub~GPbnz!l93vDwG&I>I&9AI}-
zKeEZ_Y1d-S;(C+%wnooGzc-TfW4N%iZ<+5a(-`c(&Iv}aTRU=Nq&LIg37{YH4}*+=
z+zkB-SR1`On~WlReC(YQTzjc=msjAt?n!TC%szXlUVI`b*_FE~L0j-w(`yWGUzMbP
zj68E9rxe^U`~G_eOrBbRgZH)Tc8zX{gmC@OmQPzwkVXmXhd;rX*s;=Q^jMvzH{@xp
zGdt#WF71B7PF=Ee>U0}MZ1blNZ#cj9+8y+W3qSTnr_nf_vc3gB!`ovIfB*dP&M#Uz
z&Ekafo&x<1$aEWjYqot5dx&azvpZk2<?9E1Yp;C_*$qcn$%GvqU$UY99=4qZIeQgk
z_f6T+!xrj05Oa;uBffRcriOI-QEMC*AG!>%I-P7osjH#Cc<IoucYe|OK})-AWST!@
zHa&pGRuG!uZ*1Kc8(V?h-&3K+R!NQR52~@%Ha$2y=9b;JnqC*RHeZaJT3hyO{ub0=
zF4%0w*v_qY8QQknLvMfM5o&d*FAlvrVh3tIL0fptYC|nwo3ZYojaH_hx6JI{quDL%
zPO_TalM{kcs42%R`##rqr)@&u1YaIC(x6vh?aQ8PF4$nke0X}LZrIo7{VMOJU(pSa
zx^8w%$foy9Z&=Gd@|^uLZ1wDI=I)oQ#(&aAp5GZ7@mu;u$lUdC%<}Kcc9?C!3wQrW
zjc~>M2T|0Hrh}V~?Kty6=+exxDDS+s7h2sZk&PP+N2?KgxVX`3=nmu8M$h6q12bJw
z9g)VM;R)&2J?wvZh*=#RyR*FMfkIbQd8W3ia=^|ohq10UQ(qeqW(0hhPraAe_MuBo
zpUl@AnjUP(*IL50BYPtg41c3NZ`(k>25mF_FA;lf$9E?5)Z5S&sMFAz;VIMiAVKCW
zi0QHNLdT}g9o-+;mqzU<b#x{4q?>A{-t0GOE3;B>B6TL?puX7^W!&F7Z)Id_{G-oo
zeD>jI3Sx|q?lMoLp(SS|mG!cfMZ|u1i`(n+H12-LOmld@_4cGwOfYu;&KzzQx_ae)
z>kS${wy><%hAkVG>FeRw>+^i8uLDgfSWW&z7yIV8ZdlxO-^2Ic`^aqEob=mlT)nI;
zqSYv#_yZC>R+mL=c15)RiSDImkn=F!mkq~GSA=oxzV{#A&~Deiim>IpV|L8!E^E#B
z<a19?da-;0rXGXnanSJg;pTzg9Bp~SjNNN%df=ohihjTwO9t#UR?{#1hh@=5V6vW>
zuYJ|awlH4v%p9+GL{2HQXV}Vmoez#Z95%LeY|{;K?y|@UUnIGr8b4awH_Xs*fv7VR
z^8D!pBe|!3k9EkNdL3e_iPW|4+G3l_)3wIIU#9B=nv-0;$Sy#ihW&0=FON;X8~E<d
z<S(cN481lueis#idPifa7Y3ldalYp1sh3~MQ3_0QMP|Bs4L65pWtR0CdaW(z6Z1n?
zG+pmIu-B8JPe4pQ8&BIKuV_mN4x?xA-E=qPx(!?7{9Njf6wkNXDZMIq+>H%udj*FL
z^4MC=Q77f%?|G~Ha6n^wnuD(O$qS81tp@$#*>&oAxGsJTNU?c)scsGBYjb(^(8!>(
z7xv=AgF)SxWSzbuSl=StFVN=zBOs+QrB90C)SRKI^j(48o2++!>zH=;szL3EDQ<f4
z@Mw)m4qI`#nV{`HBl=Vtg=seHNc6oUaMiA<x@Ufhud&?!r6Spv5D@gw3*N>w!-MWl
zs|y`8`p`i+P_l%81*ffN2f9N3J=Sl3N+j)dB?RvNFVlL@x4KIHl2NO5H?F1nnL;&0
z_0t}Q*Q?~1+~CH5yny83Iqt^m#>Y(PHTmg)#lgRFCj=Xz&jddc<L?t%eJ;`MLccFm
z_ZGB89&{b^oyj;6aNgG8HjKs-Y2lv7vJYKYRUX^k;mA2lJwg9Bk?suiIjB<*^X3KW
zyYwVyE#0QSze0SuZ|dVw9oDSv)yGb~eJZRcI?t9s9l(@`6k!@O+8iG-#ht9B1Wt&i
zv*;D_)W>=5;M3GTP`*fSS)PubJ$m@6gc}^5$I`;HKfKUb$R%t%kr1BUaUoYvGraSy
zf?d%mwytURCl?ys)CWvbJx}gy?e2gc@!$091JJcAbX>dLA75y!wd+PNE#OJot*)Ns
zug&Mbf(t&Pmbc1nBqm3u)P|;dbZ@o(J#Gu{L~3lVR-gKaWwju9&E7{j8kZUAp-J?M
z^4<k+zG#(P)}TM5Orx(T6ZQ7np_fV>?Grz^^bO=pK}s3kjt<-CBAvHU7ed?c8&6rN
z-hab&9*4hsOnXk)+EcwZQvcXPUx$L;Gaccv?ZXc*JZ1X7DV&*^&=W5j{?`n+|Bw9d
z{vZ7Ro3fYq%YJQgUytL;axZw>^84uFg{ObK-2cY!&-{LW#4Gjk{k0MN-H&;tYl!cU
z$9!#(CjzL0Q5(46wF`%B+fNq0YUZXUPfRHsofVOn<eBSz&|dAy51kgXIWXvz3*HgM
zNrChVK|h#5+NzPQ@kV&#@dU%@MarQ}Ylq>$2hRjYr?12R5NN;En?Ubg-tc2lt;Pvk
z@$qvl-<h7qm@m%;t-s)XthoHFm5;vHTGywm&_++G?b-4D<A0dgYCL0n8n@f|^i_Sg
zUUf~}il3}o5tnJx^YnGghp)OSZiNx+Ci8{osAEHM@lEHcjT%9PIhvzu_Ej+y$GT&y
z7IvG9R)mrTC9BBHk|~a@iuuF&*(<)xIc=_6@jg9l*WC7G>#D2bUmUt3hz_zYI>hh&
z2XlaX;nyf#^O3IZbK3P4ns)ub#45C>>nmxqh<>3a+KnELQ0<=U69><sebX_JK%vSS
zE}-`!j3ZF^`JI|}-T1o7>9fk5!)8pYnOa?0>nyIUoi%mFbZ7Fw#DPBN%}%E^LNsua
zbCTbp!a19UhG<8^s3d2?<Uty~Hm;=4>-10aJ1fbf0U<4ST*<IeBXja@%gahkOPn()
zDS1*wSyfpNq5DYpB_=1852+f`BXewCepboYk$DAUvrF=_XjfulqJLLLW?q`F$JjC1
zB^jAxM&*w!$}Y*zE6Og+$RCrI2#3Ylg=6wYjZAarj~|3`yCIIq8>x1bjL5isRAE}u
zphV03vORetX^+p!kTL#WWsrL~Lt%D)b_Nw`WX6c>G<V^!grr2Db!fHYVxg?6boWrY
zzbwggc9$gfIc!v+a#&3@GsNAaC@;HYSZ?;P;bX>*D4}}1T%ZcPTu8c77z80}c**FD
zqTDpM8zYev@YNXC4RIawc8cw^9q06Dx}Z+t<u<=f7a8}X^r2w?*Q9tdhW#P>1ASYl
z-=~L;0ewHkgDGyL14U50%AsjR6bDB7k6X?0++JLsXx2F<Q!50bVNpO?b&o#|A#R{8
zj5Y)uPn{2Ja6F`8(}y+$*np|{+G^U|v>`wT|AaQ^DYPL#2glF`eH3j7(81xfL8qI@
z3edrHT9!WDQvLQ|lpprBLa!r6IdzYw)l-amY@lroZ3yrQR%QDWL<-Q=^+MiVl<rF#
z@_s=Z>IKI-P8$O3!RlDu#8I@tz6aHBJjJjdLQI#*;$ec(77*Y^wF?}#hV-A320xDz
zUrjOmtRtr8VDUy`RfjFa2=D{Gjbhk4Y??I&2kt|x%HN;Z%QmBl5v(#0tLs=yoJ#s?
z+Lj3$)oxKvJB{`|Nc$UTTR@BeKVW<jgZ`$_!9z)d&r?DNJ6VqoB%oj?|KM0+__<N(
z%xEXj(}WJbmi3832c!MKewxt1{a9ZrbTE=A=L(^Nm7ldj2fNu%tI)x88(PQxROn#U
zPEH72Jqu8`(e#sh4d)$5O#iI%3<6L<J%cgEigIQW<5=La!Un9ad#TXDxZhzvnK+L5
zF<}E%ZD~I-cESFjumNAs`UT?g%*AL(6i`mEDnpsj!Pn7#_?%Cy?)_zgn~3q;fz3u@
z92)!wVg&dHEB%i`2V+0%cM2V>^mm00R{DoR2P^#(p{r-M?xFTfdT%;T18oK>mICsC
z)j8fMbg=R{ROnz_Q~1ddI#@jiN{Fwb{Wz~WVFSL2^S&f>u&UdwLI>k?;O9-DgVl4U
zMd)Cqzb|yK(mR9>R{9r02P^&WLI<mJ3_#^jKorP~dIqa|@G903^=5_*SlM`4M+CM}
zjPo5JboHByyn{)1)BXn9iiHgr*B5!G3muGG7<w(Sdd@#2Y`}Of!RFUOZ(_!A!RlG@
zny}d-Y{1H9kFaSKHehA*sjyM~2^<TR-=89!V}D!-3NQt$`zW4RolA<a0jqi_5IR`>
z9!(ZH7|%MK`+Y(OyI6l#=wS66dqwDAbhF@RtI$>d2<Nqnbo>_My!Htju$%Lq6gn75
z_&h6gu+js$Z-@E;E8QV<u)2?W2_3BTtA!3$`n5s_EB$(*tG*x35hF{eXPjdWv3jl+
z2zziE?Z<gNPOSPNe<W7V(szYD*v9tl#HtN^AZ%2>6J@Z|L2;j=3@&1r;aCGu7z(H>
zFn+tC=MXEO!-WkPeLL8!7dlwg^CqE#;T!gE5G$W=2^;YBZ1Y#4gH<~`O^kK|KRSV8
z2Y>>O0akU@SLk5$36b|^;z7*Qi18?cUPr9%g-3`H;8XS4b&r2^5dF^v+Fm0Y6cu^j
z687NHtcT-fqyRr)8^y4XAXfEom9PP$Uk)1|@vY1=gbi5PJW7mbChYM}fq-MF_Y0J{
zi*(f|=|Mjz>bghc$Atpy!6_8O&j?{Nju@u~eUh*TlWR+VROn!Jy`CplWqVcFfN$fx
zr-@ZvW#b2w0?Gr%=`_$*D0Hyu|4$V<Sk=h_Vs(yB2!2NJi^K>x7MNbMtaI5)oWOik
z*ndNOBkO&sfq9v8h*g^(MLdA@`-#<W$1}vL9$qF!z;QP)>r|0oJVS84n~7EVw+nl)
z`ps%qI^_kUdXe|fN@uoFyqdOsN+)|T?giMNP&%`!^B;tMjv3_yt8&_KQWWg8srOje
z*hxn}2mbpC8!&#qP@XKMlRX%RfPInDnN{81NxHgU%8AuIJ5|`LcW9KMhIDm~j}fDO
zaNOsJmCrRQFWH0DJ@S^)$-bExKEdk!?lWO?MA(4UwfIKZfNflcE@E{ZPYD~aoo&t$
zt2Pi!H<UVG2eHzBf*Xwj^7Lj#Il)MxK5q~<@xlg-HVm7w!Ul{Yp{}Zg4pwbrmeA{%
zaa=Hx@VQXfEEYCk)z5iO*nsI4vyS^Ru{z&P!Un9$wv$-Z)w{x`of+i;<9<YWz85xN
zB%y~=VbpPZqhJ*94hvS-F^*W3CqdbeT_Q7%1y=UA3j1tfpDXOa%D!0G-zn@%g*{l^
zQ}+mad@n*kU8rwIC{I1<airlK*AlDWsZGLu3p4D&>Ye?4VgHG+KP2qIs{DT^R`v6(
zus<d2!OGr74_jp)iU%(Rl;0r6eSz{s5aXKz%72@%0pnS*nznI52jg(i?-F`7vGQ3%
ztbDE$Hels*tI)y9=et60XGS@}gXowjrzvc}%4bhpI0`sNu=42^dOv3P1pCMqKF10h
zu<}_cbg=R{N9p7ToW*{&E1l9{lm&IQix}4h{2{T8c|WnbFaAo5fIMJz?fx!wu=3L_
zbTE=Q7Y9056yPU<8RrW|)xoA8aX*Sto?KxMR%ISdte$~)2pcdyPa*G}!e+9t0pmFa
zn>u1uZ;ONtSbdLLD|E2>4f>tX$(0qXZ?gku-8ZeStXvy7tFG1`Pf;|L)>b4Ate#p|
zSzA`E4Xh}uE7Jy+&zhwTtgWmr8|dF%S2?GSgc<(5{usV|0|#pZY1Cm_B`r4@IL8{N
z7&sL}3;x`5>frfOqNa96jVjpx7~{^z$4LCLBMkOO7ysf8LP)3W-`Qaw!VR>6aWxRG
z^r!3+X&<htv{T1IKE*c^UwK@01*F|gA`kRL%D9GJD{$A~%E2FcvpKZEpN%$zBXl*<
zs#QRl5Ju7lyCftibdudLKU#m`5Bu>pgjj_E)J2tcYF`x@$m2{WJA4sVLE#({6l32{
z>9uXWG7|e{5vw}F?)@dyL!%hyizmK1-vz|dUkm*4T}rzy?yD!3{`Qsn?cfi0jq-<I
zVRg+2wdvF~ejLC-9SgClW9(|Dii{v9$dBs)fAEbSne=yP2u-UOg7QaZ|1tzzR&w~m
z6~7b$E~|O$S6A6@L-Q6d850FuR&u08fvo)~^`#JCJ(FY_SKv|zpc=#xaL#B0QB*!W
zeN;d_;679VX}3yHj5K;|Dj=Px5)>niU$<`B#?uD>Srn^){dp=uG16nNNdMxB^yDkj
zGp|VBe?_|Ciu5B_q?cWhe)fv=>MPPOQ5s+N?xGmy^Crbjlt#TF-A1wcx`y<}lvZET
zkUman6>z?%RDxop&(elBFZ}wzKAbL4Go`T)X&0sOwuI*y(l=2WZ!7djvC_9w8gCkS
zzF~hUrPZ4R(!Zp1GwsJ)1Jch^`Us_Qosiy2Y1Lat`U6U%XMP*+KTc`YtH%Bix|z^}
z&gA`0N~4#X&*_^fjh-uRZP*W|G<v2gJ(1Grd8+huN|#a^Z_coPh|=|x_Hh~`Naz`&
zCyD*Pr8IheD*skWqi3hm?@}5)w>#MWb4sJvrPAL~S_RZ`Al*{vK@}6je;-Pt_fy2_
z!IVZXW(B9SD2?92bDZW?a&if0$)vjbYAQ=K`pK-WoUTnPtFE3gNt;$VZBosBh-Ou)
z)tbD_v#PeTQY$H`!qUB2Q!A>7r`=OsQ8kF5tfImXRa56wRLz=7(yV*R{Ze&hMO6|B
zldX7G4c37ob9Ei-R!qg1G)1jA{Eya>lBemDrq$rYa4HuUuUg9o|Nqj`ktLU{AeD<M
zFWd1WOF92vTUuIDLVd)_=@ql8(9--3!M{%RKVE1`_ti@JVOGmUmkVAZ7+*w{4Zbkz
z_)((}52j}p0=|ALZVtU<vt2Mo0aV^jdaf%zD)<PPePT33*(3@bBSFgMD0O0$%@M&E
z^;0^Qp6K)}LBQy(%G*xQCuP$rc$?t$f~gv45tik~`lI}yI-<!A!A%<&w$!b$_!f%u
znF}b!^AR?%eS!H^il3$PhK^YV?=ZJf`~+#x(RWOs^8l};Es=RSaW?ZR;#}q?;_=LD
zh-Wk7oEn$|sPM~~H<11`^G4!lnYR#cVn*Hkkr{b+FmES)7jrZ5e&$`ooy@4?Z<&$z
z2WDJ{cuM2Eawxu8@C4=uD85VZ<IGzqeo^pl=3^9h2=-DNfPY;7MCRKmzLOcF>yI!m
zr}!^|yO>W=-fre@Vx8I;e4ZmtV5Xln?Iz|x;yh+M@fhYQ6#qhS6EoWBW@e1!Z)JX;
z_-*D7iT4P8U+@9J0o3V4*>E3(GM}P2mKpa-Jo8|RvB5ry;$h6NpUM0x#VeR`&#e{u
z7G{hL|B-nE#qS7i7yPl{&jf!hIF9adln0~4xy-ol$1r0Q_in+<nem)>j(IA@z37=^
z)dO)q=7AJr6csw2H@7h3IW$t(jA6#Js)E@`@x8+4X~8cG-XeG}^FJuYXeN$}XJNO{
zF`5b8dS24A6byTeW`gld?IH9C!7+mS2*!*z<>yvrJg0Xu<N3XZ8KabcX3nM9L$5Q)
zn?Ug`%y{<aDyI0i%r8^?D)U^5|HQnX;vV!MgddCwUc>x1;zi6D3H%*1erE#d`3igd
z{)93AfjCO=WM=$cRWoCBZaFi4)1DD}Bz>xa&lrkJnSVp^VrGn7Wzy#_*xXL>DCTh#
zS25pBaT7B}z1C5O7WNo1dxQBcir-`2N%7yA4^w;%y$8TPh2jEcjBNaa`Adomsc#RP
zVHDRekE3`c^Ai;BVg3!pr<ngnaTfKfk#{7;Ma(x)yoUKzinlO7Lh(7~VCruhv?1?T
zq!ltxq_~{<R*K(X##h6ynZKd<G&8;+_MpBx{J<ug`4);Rm~W?eJ~O`9y~w<j;`Pk1
zq3W{y;5`K!e7Y$f#Eg;49Oh9J7ck?yOcC>RitA|8>G~i%N*nw@1BbD0eS4wnim-w<
z*gyk^vHm>kYbc&en~nlfSWg@5p@G9#-%hM^-o0!C4Xk{A%=#A;H`Aum^+))WHu!92
z4r4ut`vaJn7|HCUI7V=9Ftr5)?1P_piu(yZPWyCvheL>C9U3@{^?|HoMr0T5Q}&6h
zLjx=OQ^F>hZJ>dbO*-qCak-EgvnGGTj9HV|P-gUVUKaccGiEz(W~K#m+BU&|5{%iE
z@B^D7Vm+D)L!q5@Xy7o`$HRu&EW&4O0}UL;`b5}J+eE;7I{ZTehp}$5j^hW>e%N4k
zXAfq~=!Aw1Gd-_nc2SHCI&Ate!={vc>Ga(Y!N)o@a2V^D9g4iDpE1m+!wTf(bDY3B
zG_X4NDX`&lyqj&Hfz`QJ!-miCKDL1dR_ETxI?A$-Hg(*-+{c3kR>$2Bo8JEO>d!XN
zz+tR+z=pnEA|$g7G;kQ}x3Z4etcQgCaMq!Ll|8;QqOM?n1oqeX{olztG;kQ}lZ5?I
z*z<jT7wgc#>b|D`5XbV5{%t4hWBvZ;vJMR##`<yLa}nD>11q0TunwPHu<zsdxteuo
z;4s$Lv;HQ<r(n;=+QK?Cuqs2h@VSR=pn;Xoy(%xo=V0I0UxtIMLj#Ag{<*Nnr&Lvj
zf3OY>tjd6IL(1kn+du;=o9pQOaqTe6I8LyS88eFq3q~6Dm?@ktcsMg=9FG)?H0&|s
zxI{40%1@2pdS=WxepoQlu*Zz!m4cC0eqIv1l^HXU|0wufX3Rw1D;R0z=QF`^^lkth
zvx(D~G2<Bjkr8yf<J`quNAWblGnq>%j-XAo^Ltr`23BoyF6)@}{46tOIzKPCi5WAL
zUtz{9-Pf2gllKi~%=Ueo88d=+Gh^0pJ2Pf6A7;j^^V7_j(R`K}?@dVKe8GW~A3T!c
z5Wx;+*!)EBPnqFAN$AOf;R`-7V|oHJW=T(C#{1n}%uN(eV_rsa4Krp^&tk@mX`SDF
zFcUeLxt?yZtC%t4_-etO$b%2f6r8L>1BbEhVI8xWv7yX(&pVF1{2WVR9U53&-=DFb
zLvb-P-tRE08Gh<0E*D%W_?OI>K|GHcvyA66V<z$<X3SQ8gc&oMA7jR>=OxUT8Qq04
z^K)z^>(IdJ`LKy~lrfCn*-%bv#y2x&7GEpaC3qO~E~?K_%$Q9)o*D0<CCnJWDrd&5
z;VLlqyD-xj$Hn{UJZ5O~nc=5V=u5$z_a!ifqA9$|Hkd8@fnZwNX8Fg=-{Yj~*ZJ*Z
zSce7<W4#aSm=WA1?9*9?23GbttYfC|DPcdJb!cE^{|nYJgSeU*vxa9eN7McF05fI>
z*E27sc!AI#VaCkjZXB2D5Me3n(7<7&V|MNHtm8fYoUmWRIy5ls@qfH*V!ej?Ep5!0
zar`ke-pda#<6Zm{X1sqNX2uNSBg~jJ{8who6#j}Cvx84F*Hif~2o9lrXdBSs3yjq{
z@CC-KdHAw)dM}1AFlKaSFk{y6IA*k^Nz9lLT*ZtwJcAkU^>xg!e}Gw|a{W^14>QC5
zQD)3U#>`}t0Y0B(hD{SQe6C}L&zFV%duG^gWrn}EnK7feFP$g+V<z(T%$Ti=?+(y0
z`?!Pb)bq;6IyA6)UZt>(S<HuE&+lUCtV08<ceEqI=V-Qp239`DvyNHJM`6$JVkN9Y
z1FLs5eEUF|F)Mi<GiEeD!i;-)DKlnIcfu#Xhd#+VG_ZO<Jq{awFMEw`pn=u9RhO`7
zW*cZ=W%GB|F*Eu&Grq}u&x{$?r-YxgtV07UKS5-NbHwayoF^FP*p0mWn-ax3G_b1A
z1lIA*=N#<&QKO=8E9=m}VXSLpr|Kt{ZJ>cw{S>o~+1wS(nB^Uayj*YhvJMTb&ZVAp
z%n*N-8MC=}F{5pNz>FE(`<Zbs9A?IMr!Sdde~cN=z2idvCo}9ZhJbp*?C+m2Bkxa{
zaUZ#a9><Kl1DP=s95cq@2jv+eY_gf*GoKmd871^WVPC<FndUQv%^YTw=K-PDGow6<
znNgOd%$WHeOzj$F!%XvVX3R#vh8Z);F>775887S5z^cvM$U45!r7`21Tdv?DX3S)7
z5<aJ}4h^h)*02trYlQv1tV07U`(Lt-ne6Lf&+V##b!cGKt~LmpC)frWSlMh8Hczt+
zG_bPS0vmqjY+)N{VD-$|CTw=H4K%Q_`HXeUrvIK9{h}aBTkVIgZwxbL;`bK39sVf~
z!ZoZz1FL(mS=jVr8)#r<lg~O<0NlZhS^T?@mturpunrBZ>VFpNn7Kcj`9X^BXMU7?
zE@H+CfL8eAYxFDDp@CK1E@d671looDldMAnEBohJ$7+LDnX!6c2lF0^cQIo%z}L*(
z6dx0Oni(q$_TjkvtUJd#G_ZOG?uQN6e<1nA^@0XgbsNJvRw{G|pZ!>e239@~37<Ez
z4K%RwnaVm=JYd6dvEtzf@^al4vkncc>guSlDPtRGU}aOsI_he+vZ3?t6nP(F9U55W
zJuYk(u?;k^vRT6Vixe*x+{BDk8XK9h(&BYytj55%dz>#;SL_mu@A%NMisG-#6lq@x
zJ(BKM*x;EQ!;F;>fwZYUiHmh;VAUrX&N{{gMlfTAL@_f~Mcg6u5@xK@cz_uz9v)`K
zN(iiyP}ge#>(IceuAX4Mp31xu>>;4=3hP+mu|??b34K4<>$k@k2F@KT9*#0&B?LC;
zSn<%!j1><w3CPm1;sG0Mu;QUFINtBm38oDJ<07!Zs)ame)PFuRRxMytHq*fD=RWX2
z%Z)Y{OdA5mRA7%)2uqo<@?ag9HUy-V&0EY^k$??4Rx@A>28<O3|6oShzG22H1Z>LY
zEOR~C1XG^qL;?zZ!Q=<+$H|Np2{#EnnHeh&MhJa0GgcT(7W!SxSV{1x(3db{#Q;_l
zsPD|bW*r(>eP@1?b(C!<Ggc40%Un<T7sBQ!Ggb_o5&Ai1tPF6`7M)BPDPX(`=Z@L^
ziGmGc^*#9})}evb_vBlk5Apj+XB(^@7|x7)WFDB0g)uN33$y;02(Bj9Q~iEcunr9z
z#`<&6`B+VCgH;8;W5%%#gZWq(SHrQe8sNC#{{pk0Zq~7qAb{*(4?j17*$>9ypkoC<
zmf$=vCK*x~$vRdKOkjqeMa&qRdxRO+@d=^7#Ee<|8<^|KW|Pog2UFWcz{&!Y2V;Lb
z1-F8K=C^r|b*v<KAIy1?MqaEWILW+=;vbmd`#f_!xw6st1MH!PfZ0!P*0D+es|jF(
z)dT$n-yk?aa3V8S5+pNYH2}se;Rim`m`6~I4LXj4JYcLUm@N30%oyLC$Bg~(3wz{y
zTrkEyp<}hd3g%x^{G8BHlj?g2b?GlMUDk`-Td-3w9_1=;qF^*BrKbzd6+Bw-c)_KD
zrwFbQJV$W7;KhQM2wo|;Nid<N=2_9}#>F!C7Tiy;JV)HF>Kx^H6$!mmaJ67r{`o?e
zWnLxp^@6tuZWi1wxI^$!!CivS3ASSlj@k)Av|y*;c)=KZRrXneM+>&bG})&$4#-?5
zZ0ZF!3SKFAjbMyBs^e}K+$wm#;3I;M3+@&iNaa#KBLw#m>=8UzaJt}p!Q%y22(A%4
zSMXxN%LO+H-XM6J;9Y|E2|gs)8Y`qU!YQF!V`r=z^sP|ULvO+T1Y=I1vPl(;Ie|(q
z5?m^{TJRjf^93&vyh<>}9F>2JEh=sn+%C97@KM2Cg3k%I2VU}tu^HvxDHwAIm7Xj(
zOYmsH81GZ|Qv}xut{2=W7~^^>?;61y1#cIOu{~wKU+@vZ#|2yS3;DWZ9-+!>jm@#%
zN9Z2Gg9WDx&KEphaE0I+!5HIH$6YLVxnPX(DVq&~w+Y@Qc%R@yf;$DD60Bj|N40;!
zy#@CZoG3U|aIWAY!KH$$1<w(Tu{u?TC4yH8UN3ly;AX+?f;$8s6>N=j@%f$;x}C<f
zR2iZLW4ur4n9r#=S#Xx%(Sj!mo+21yd&*C};6}k1cT+ZN1aB0)U2v=5{eq7OJ}$Uh
zFvdmHu_6Tb5$q8>Sa7=Fe8J-dR|u{VJXi2y!I*2R%7gVuiZ=+}CU}?NeS!}O#vD`S
z#~OFzHh^!hN;d@e7Tiy8qTp1)xq^!XmkP%CojTSW!Se+#5xh$9dcm0cs{AwyZWr7k
z_^9A6!RG|qF<!uR5-r#%81q?`O|sxD!J`FF6g)*R#><qSdclo?R|;Muc%$I$f?Eae
z7i^6~@p)NeJ<Qg43bQqq!5o2c4dy<AF<)2dg9WDx&KHcaEoEOJxJEF>vy{zZ!OI0V
z3Em)ho8Vo7_X$2ExKr>c!B|M4%3uiYEx4cHM8T<oF=nLv6bUXBTrGHx;Q4~BbunE3
z7*|$4*9+bvxLI(!;10n@1$PNPC)kc}o_ySB!A`;Pf|CVj2_7wYqTnfl>jc*eZWO#y
z@EXAw!%*eKIDz6;!PYlzJ{RkIGPCtvm$_Tm2h#U%<tIXLAHg2Mg9WDx&KEphaD`xu
z4XI<z6}(vRa=}f4HwfM)c$eUPf)5Gq6nsiB{#yoB9z!t3Xq1j|7R8BzQw8S=E)rZS
zxLWWW!Se+#5xh$9dcj)+Hw$hT+#&d=;4Z-!2T|u`kGRCqf}Min1t$y65<FV)M8Q)8
zV{Aelw_b3g;FW^c2*#L#%DY`~tKj{Dj|e_4xLdF_cEI;V1bsJG{`&~_2p%jrU2wkO
z@q#M^V|}yoKUeT#!OI0V3Em)ho8Vo7_X$2ExKl932~-&{MxfXbjCIsX?<Y7>aH`;3
z!9{{g1y>86BY3{xC4yH8UN3ly;AX*CyRFLHA^51^F2Uyn+v%IR${Q^hV+2Z%7mP6i
zrDqAo7=h9!3Z5dkPB7MoEBi*lD+R9+yixFW!L5S#3qB(FxZrNVf%HvWl>zI`755SB
z5j<Eh#sZXmzTokKD+FWxy0V`uc(LH+g7N)d*>4cMP4F(k`ve~n+$s2!U@W#*{;^I+
mac{x>1Sbkk6`U)$NN}m(YQb2CuZ}fe@DjnR!1Rp<;eP=_2<A=z