The Bignum extensions add the following features to the Javascript +language while being 100% backward compatible: +
+n
suffix is necessary as in the TC39 BigInt proposal1).
+
+BigFloat
) in base 2 using the IEEE 754 semantics.
+
+math
mode which modifies the semantics of the division, modulo and power operator. The division and power operator return a fraction with integer operands and the modulo operator is defined as the Euclidian remainder.
+
+The extensions are independent from each other except the math
+mode which relies on the bigint mode and the operator overloading.
+
If the operands of an operator have at least one object type, a custom
+operator method is searched before doing the legacy Javascript
+ToNumber
conversion.
+
For unary operators, the custom function is looked up in the object +and has the following name: +
+unary +
Symbol.operatorPlus
+
unary -
Symbol.operatorNeg
+
++
Symbol.operatorInc
+
--
Symbol.operatorDec
+
~
Symbol.operatorNot
+
For binary operators: +
+Symbol.operatorOrder
is looked up in both
+constructors and converted to Int32
. The operator is then
+looked in the constructor with the larger Symbol.operatorOrder
+value. A TypeError
is raised if both constructors have the same
+Symbol.operatorOrder
value.
+
+The operator is looked up with the following name: +
++
Symbol.operatorAdd
+
-
Symbol.operatorSub
+
*
Symbol.operatorMul
+
/
Symbol.operatorDiv
+
%
Symbol.operatorMod
+
% (math mode)
Symbol.operatorMathMod
+
**
Symbol.operatorPow
+
|
Symbol.operatorOr
+
^
Symbol.operatorXor
+
&
Symbol.operatorAnd
+
<<
Symbol.operatorShl
+
>>
Symbol.operatorShr
+
<
Symbol.operatorCmpLT
+
>
Symbol.operatorCmpLT
, operands swapped
+
<=
Symbol.operatorCmpLE
+
>=
Symbol.operatorCmpLE
, operands swapped
+
==, !=
Symbol.operatorCmpEQ
+
The return value of Symbol.operatorCmpLT
, Symbol.operatorCmpLE
and
+Symbol.operatorCmpEQ
is converted to Boolean
.
+
Symbol
constructorThe following global symbols are added for the operator overloading: +
operatorOrder
operatorAdd
operatorSub
operatorMul
operatorDiv
operatorMod
operatorPow
operatorShl
operatorShr
operatorAnd
operatorOr
operatorXor
operatorCmpLT
operatorCmpLE
operatorCmpEQ
operatorPlus
operatorNeg
operatorNot
operatorInc
operatorDec
The bigint mode is enabled with the "use bigint"
directive. It
+propagates the same way as the strict mode. In bigint mode, all
+integers are considered as bigint
(arbitrarily large integer,
+similar to the TC39 BigInt
+proposal2)
+instead of number
(floating point number). In order to be able
+to exchange data between standard and bigint modes, numbers are
+internally represented as 3 different types:
+
In standard mode, the semantics of each operation is modified so that
+when it returns a number
, it is either of SmallInt or
+Float. But the difference between SmallInt and Float is not observable
+in standard mode.
+
In bigint mode, each operation behaves differently whether its +operands are integer or float. The difference between SmallInt and +BigInt is not observable (i.e. they are both integers). +
+The following table summarizes the observable types: +
+Internal type | Observable type (standard mode) | Observable type (bigint mode) |
---|---|---|
SmallInt | number | bigint |
BigInt | bigint | bigint |
Float | number | number |
There is no incompatibility with Javascript. +
+ +The following changes are visible: +
+typeof 1.0 === "number"
and typeof 1 === "bigint"
. Another consequence is that 1.0 === 1
is false.
+
+2**53 + 1 === 2**53
. This is no longer true with the bignum extensions.
+
+0x800000000 | 1 === 0x800000001
while it gives 1
in standard mode.
+
+0x1f
i.e. 1 << 32 === 4294967296
while it gives 1
in standard mode. However, the >>>
operator (unsigned right shift) which is useless with bignums keeps its standard mode behavior4.
+
+Object.is(0, -0) === true
. Use -0.0
to create a minus zero floating point value.
+
+ToPrimitive
abstract operation is called with the "integer"
preferred type when an integer is required (e.g. for bitwise binary or shift operations).
+
+Number.prototype
. InsteadObject.getPrototypeOf(1) === BigInt.prototype
. The prototype of floats remains Number.prototype.
+
+bigint
s.
+
+The operands are converted to number values as in normal +Javascript. Then the general case is that an Integer is returned if +both operands are Integer. Otherwise, a float is returned. +
+The +
operator also accepts strings as input and behaves like
+standard Javascript in this case.
+
The binary operator %
returns the truncated remainder of the
+division. When the result is an Integer type, a dividend of zero yields a
+RangeError exception.
+
The binary operator %
in math mode returns the Euclidian
+remainder of the division i.e. it is always positive.
+
The binary operator /
returns a float.
+
The binary operator /
in math mode returns a float if one of
+the operands is float. Otherwise, BigInt[Symbol.operatorDiv]
is
+invoked.
+
The returned type of a ** b
is Float if a or b
+are Float. If a and b are integers:
+
BigInt[Symbol.operatorPow]
is invoked.
+
+The unary -
and unary +
return the same type as their
+operand. They performs no floating point rounding when the result is a
+float.
+
The unary operators ++
and --
return the same type as
+their operand.
+
In standard mode: +
+If the operator returns an Integer and that the result fits a +SmallInt, it is converted to SmallInt. Otherwise, the Integer is +converted to a Float. +
+In bigint mode: +
+If the operator returns an Integer and that the result fits a +SmallInt, it is converted to SmallInt. Otherwise it is a BigInt. +
+ +In standard mode: +
+The operands have their standard behavior. If the result fits a +SmallInt it is converted to a SmallInt. Otherwise it is a Float. +
+In bigint mode: +
+The operands are converted to integer values. The floating point +values are converted to integer by rounding them to zero. +
+The logical operators are defined assuming the integers are +represented in two complement notation. +
+For <<
and <<
, the shift can be positive or negative. So
+a << b
is defined as \lfloor a/2^{-b} \rfloor and
+a >> b
is defined as \lfloor a/2^{b} \rfloor.
+
The operator >>>
is supported for backward compatibility and
+behaves the same way as Javascript i.e. implicit conversion to Uint32
.
+
If the result fits a SmallInt it is converted to a SmallInt. Otherwise +it is a BigInt. +
+ +The relational operators <, <=, >, >=, ==, != work as expected with
+integers and floating point numbers (e.g. 1.0 == 1
is true).
+
The strict equality operators === and !== have the usual Javascript
+semantics. In particular, different types never equal, so 1.0
+=== 1
is false.
+
Number literals in bigint mode have a slightly different behavior than +in standard Javascript: +
+p
letter assuming a base 2. The same convention is used by
+C99. Example: 0x1p3
is the same as 8.0
.
+
+BigInt
functionThe BigInt
function cannot be invoked as a constructor. When
+invoked as a function, it converts its first parameter to an
+integer. When a floating point number is given as parameter, it is
+truncated to an integer with infinite precision.
+
BigInt
properties:
+
asIntN(bits, a)
Set b=a \pmod{2^{bits}}. Return b if b < 2^{bits-1} +otherwise b-2^{bits}. +
+asUintN(bits, a)
Return a \pmod{2^{bits}}. +
+tdiv(a, b)
Return trunc(a/b). b = 0
raises a RangeError
+exception.
+
fdiv(a, b)
Return \lfloor a/b \rfloor. b = 0
raises a RangeError
+exception.
+
cdiv(a, b)
Return \lceil a/b \rceil. b = 0
raises a RangeError
+exception.
+
ediv(a, b)
Return sgn(b) \lfloor a/{|b|} \rfloor (Euclidian
+division). b = 0
raises a RangeError exception.
+
tdivrem(a, b)
fdivrem(a, b)
cdivrem(a, b)
edivrem(a, b)
Return an array of two elements. The first element is the quotient, +the second is the remainder. The same rounding is done as the +corresponding division operation. +
+sqrt(a)
Return \lfloor \sqrt(a) \rfloor. A RangeError exception is +raised if a < 0. +
+sqrtrem(a)
Return an array of two elements. The first element is \lfloor +\sqrt{a} \rfloor. The second element is a-\lfloor \sqrt{a} +\rfloor^2. A RangeError exception is raised if a < 0. +
+floorLog2(a)
Return -1 if a \leq 0 otherwise return \lfloor \log2(a) \rfloor. +
+ctz(a)
Return the number of trailing zeros in the two’s complement binary representation of a. Return -1 if a=0. +
+BigInt.prototype
It is a normal object. +
+ +Number
constructorThe number constructor returns its argument rounded to a Float using +the global floating point environment. In bigint mode, the Number +constructor returns a Float. In standard mode, it returns a SmallInt +if the value fits it, otherwise a Float. +
+ +Number.prototype
The following properties are modified: +
+toString(radix)
In bigint mode, integers are converted to the specified radix with +infinite precision. +
+toPrecision(p)
toFixed(p)
toExponential(p)
In bigint mode, integers are accepted and converted to string with +infinite precision. +
+parseInt(string, radix)
In bigint mode, an integer is returned and the conversion is done with +infinite precision. +
+Math
objectThe following properties are modified: +
+abs(x)
Absolute value. Return an integer if x
is an Integer. Otherwise
+return a Float. No rounding is performed.
+
min(a, b)
max(a, b)
No rounding is performed. The returned type is the same one as the +minimum (resp. maximum) value. +
+This extension adds the BigFloat
primitive type. The
+BigFloat
type represents floating point numbers are in base 2
+with the IEEE 754 semantics. A floating
+point number is represented as a sign, mantissa and exponent. The
+special values NaN
, +/-Infinity
, +0
and -0
+are supported. The mantissa and exponent can have any bit length with
+an implementation specific minimum and maximum.
+
Each floating point operation operates with infinite precision and
+then rounds the result according to the specified floating point
+environment (BigFloatEnv
object). The status flags of the
+environment are also set according to the result of the operation.
+
If no floating point environment is provided, the global floating +point environment is used. +
+The rounding mode of the global floating point environment is always
+RNDN
(“round to nearest with ties to even”)5. The status flags of the global environment cannot be
+read6. The precision of the global environment is
+BigFloatEnv.prec
. The number of exponent bits of the global
+environment is BigFloatEnv.expBits
. If BigFloatEnv.expBits
is
+strictly smaller than the maximum allowed number of exponent bits
+(BigFloatEnv.expBitsMax
), then the global environment subnormal
+flag is set to true
. Otherwise it is set to false
;
+
For example, prec = 53
and expBits = 11
give exactly
+the same precision as the IEEE 754 64 bit floating point. The
+default precision is prec = 113
and expBits = 15
(IEEE
+754 128 bit floating point).
+
The global floating point environment can only be modified temporarily
+when calling a function (see BigFloatEnv.setPrec
). Hence a
+function can change the global floating point environment for its
+callees but not for its caller.
+
The builtin operators are extended so that a BigFloat is returned if +at least one operand is a BigFloat. The computations are always done +with infinite precision and rounded according to the global floating +point environment. +
+typeof
applied on a BigFloat
returns bigfloat
.
+
BigFloat can be compared with all the other numeric types and the +result follows the expected mathematical relations. +
+However, since BigFloat and Number are different types they are never
+equal when using the strict comparison operators (e.g. 0.0 ===
+0.0l
is false).
+
BigFloat literals are floating point numbers with a trailing l
+suffix. BigFloat literals have an infinite precision. They are rounded
+according to the global floating point environment when they are
+evaluated.7
+
BigFloat
functionThe BigFloat
function cannot be invoked as a constructor. When
+invoked as a function: the parameter is converted to a primitive
+type. If the result is a numeric type, it is converted to BigFloat
+without rounding. If the result is a string, it is converted to
+BigFloat using the precision of the global floating point environment.
+
BigFloat
properties:
+
LN2
PI
Getter. Return the value of the corresponding mathematical constant +rounded to nearest, ties to even with the current global +precision. The constant values are cached for small precisions. +
+MIN_VALUE
MAX_VALUE
EPSILON
Getter. Return the minimum, maximum and epsilon BigFloat
values
+(same definition as the corresponding Number
constants).
+
fpRound(a[, e])
Round the floating point number a
according to the floating
+point environment e
or the global environment if e
is
+undefined.
+
parseFloat(a[, radix[, e]])
Parse the string a
as a floating point number in radix
+radix
. The radix is 0 (default) or from 2 to 36. The radix 0
+means radix 10 unless there is a hexadecimal or binary prefix. The
+result is rounded according to the floating point environment e
+or the global environment if e
is undefined.
+
isFinite(a)
Return true if a
is a finite bigfloat.
+
isNaN(a)
Return true if a
is a NaN bigfloat.
+
add(a, b[, e])
sub(a, b[, e])
mul(a, b[, e])
div(a, b[, e])
Perform the specified floating point operation and round the floating
+point number a
according to the floating point environment
+e
or the global environment if e
is undefined. If
+e
is specified, the floating point status flags are updated.
+
floor(x)
ceil(x)
round(x)
trunc(x)
Round to an integer. No additional rounding is performed. +
+fmod(x, y[, e])
remainder(x, y[, e])
Floating point remainder. The quotient is truncated to zero (fmod) or
+to the nearest integer with ties to even (remainder). e
is an
+optional floating point environment.
+
sqrt(x[, e])
Square root. Return a rounded floating point number. e
is an
+optional floating point environment.
+
sin(x[, e])
cos(x[, e])
tan(x[, e])
asin(x[, e])
acos(x[, e])
atan(x[, e])
atan2(x, y[, e])
exp(x[, e])
log(x[, e])
pow(x, y[, e])
Transcendental operations. Return a rounded floating point
+number. e
is an optional floating point environment.
+
BigFloat.prototype
The following properties are modified: +
+toString(radix)
For floating point numbers: +
+toPrecision(p[, rnd_mode])
toFixed(p[, rnd_mode])
toExponential(p[, rnd_mode])
Same semantics as the corresponding Number
functions with
+BigFloats. There is no limit on the accepted precision p
. The
+rounding mode can be optionally specified. It is set by default to
+BigFloatEnv.RNDNA
.
+
BigFloatEnv
constructorThe BigFloatEnv([p, [,rndMode]]
constructor cannot be invoked as a
+function. The floating point environment contains:
+
BigFloatEnv.prototype.clearStatus()
or with the various status flag setters.
+
+new BigFloatEnv([p, [,rndMode]]
creates a new floating point
+environment. The status flags are reset. If no parameter is given the
+precision, exponent bits and subnormal flags are copied from the
+global floating point environment. Otherwise, the precision is set to
+p
, the number of exponent bits is set to expBitsMax
and the
+subnormal flags is set to false
. If rndMode
is
+undefined
, the rounding mode is set to RNDN
.
+
BigFloatEnv
properties:
+
prec
Getter. Return the precision in bits of the global floating point
+environment. The initial value is 53
.
+
expBits
Getter. Return the exponent size in bits of the global floating point
+environment assuming an IEEE 754 representation. If expBits <
+expBitsMax
, then subnormal numbers are supported. The initial value
+is 11
.
+
setPrec(f, p[, e])
Set the precision of the global floating point environment to p
+and the exponent size to e
then call the function
+f
. Then the Float precision and exponent size are reset to
+their precious value and the return value of f
is returned (or
+an exception is raised if f
raised an exception). If e
+is undefined
it is set to BigFloatEnv.expBitsMax
. p
+must be >= 53 and e
must be >= 11 so that the global precision
+is at least equivalent to the IEEE 754 64 bit doubles.
+
precMin
Read-only integer. Return the minimum allowed precision. Must be at least 2. +
+precMax
Read-only integer. Return the maximum allowed precision. Must be at least 53. +
+expBitsMin
Read-only integer. Return the minimum allowed exponent size in +bits. Must be at least 3. +
+expBitsMax
Read-only integer. Return the maximum allowed exponent size in +bits. Must be at least 11. +
+RNDN
Read-only integer. Round to nearest, with ties to even rounding mode. +
+RNDZ
Read-only integer. Round to zero rounding mode. +
+RNDD
Read-only integer. Round to -Infinity rounding mode. +
+RNDU
Read-only integer. Round to +Infinity rounding mode. +
+RNDNA
Read-only integer. Round to nearest, with ties away from zero rounding mode. +
+RNDNU
Read-only integer. Round to nearest, with ties to +Infinity rounding mode. +
+RNDF8
Read-only integer. Faithful rounding mode. The result is +non-deterministically rounded to -Infinity or +Infinity. This rounding +mode usually gives a faster and deterministic running time for the +floating point operations. +
+BigFloatEnv.prototype
properties:
+
prec
Getter and setter (Integer). Return or set the precision in bits. +
+expBits
Getter and setter (Integer). Return or set the exponent size in bits +assuming an IEEE 754 representation. +
+rndMode
Getter and setter (Integer). Return or set the rounding mode. +
+subnormal
Getter and setter (Boolean). subnormal flag. It is false when
+expBits = expBitsMax
.
+
clearStatus()
Clear the status flags. +
+invalidOperation
divideByZero
overflow
underflow
inexact
Getter and setter (Boolean). Status flags. +
+Math
objectThe following properties are modified: +
+abs(x)
Absolute value. If x
is a BigFloat, its absolute value is
+returned as a BigFloat. No rounding is performed.
+
min(a, b)
max(a, b)
The returned type is the same one as the minimum (resp. maximum)
+value, so BigFloat
values are accepted. When a BigFloat
+is returned, no rounding is performed.
+
A new math mode is enabled with the "use math"
+directive. "use bigint"
is implied in math mode. With this
+mode, writing mathematical expressions is more intuitive, exact
+results (e.g. fractions) can be computed for all operators and floating
+point literals have the BigFloat
type by default.
+
It propagates the same way as the strict mode. In +this mode: +
+^
operator is a similar to the power operator (**
).
+
+^
and **
) grammar is modified so that -2^2
is allowed and yields -4
.
+
+^^
operator.
+
+BigInt[Symbol.operatorDiv]
in case both operands are integers.
+
+BigInt[Symbol.operatorPow]
in case both operands are integers and the exponent is strictly negative.
+
+BigFloat
by default (i.e. a l
suffix is implied).
+
+Symbol
constructorThe following global symbol is added for the operator overloading: +
operatorMathMod
Number
literals.
+
+https://tc39.github.io/proposal-bigint/
+https://tc39.github.io/proposal-bigint/
+Could be extended to 53 bits without changing the principle.
+The unsigned right right operator could be removed in bigint mode.
+The +rationale is that the rounding mode changes must always be +explicit.
+The rationale is to avoid side effects for the built-in +operators.
+Base 10 floating point literals cannot usually be +exactly represented as base 2 floating point number. In order to +ensure that the literal is represented accurately with the current +precision, it must be evaluated at runtime.
+Could be removed in case a deterministic behavior for floating point operations is required.
+VGlZ^l%(3tFE4$WPr}+`-gS1Jn9IfB!2@@+B7P z?Q09%4sC3CLy;nlfoRuf;K~rvz+QL8F25zp@PpG%(a7}{u3%Cv1;1lg=g47{=t^;j z5U`jSkholX(XV5`QQK5r?{^{@HM}`ZR8WMMYUZjQTt8fsY2ko}L{>d+dsQC3?K5Sv z?8X$~gdal5JnYO8>IhJ`RIi|#{Q?U}Vwjsa)wuwg+kRV#3oE8%UC?rjN5BC91%~j> zb_a$pF$~0kVe+?loIqd`_*PZbw8C?#lajGWpT-3YFam4nF_Jt+mDOx9Xy*5oHvY)# z-;wm!Vji3N9{rxdXs3Nhl0oVZy4 {2*-j{p= z@&T3V))pRMl5wGg`iEj64c5iN_WjgKK37G6i)V0L?DcMMFAyz>R`PVKUm5rDIGQIJ zbe&uStb$QsP+X#`-}s*4AS^EmsgPXv;*-w1{il}SGWU*jK3c+^BnKz1hP6Wt6fa_; zYN=I(YM7)Yyr*MHq2Yx}^vpO9rWGF+FB@JpsC5F;1@;uUcI={{daO)`ICWSC9RmR< zu~v&_O4i7;T;`cB_8gTLb<=GWa`nOoxKU!|cK-(Zb?J;`9;;VP7@ri2RR{ZuI$wIG zuAqfomu2cGA)i6}FIi-)LZ`IY<)JWp(u8n9eEH0h8Y`UeA(0%bzYV3 # zsL~U>poCPsK uiB#`nm}hhEL;zS34okL_dBATL7nvd zT4MsAqq?+4#Hx(hxOeqbR9?qfixkjR@PP`l&Xo0=F&kH4iLy5&Mn%|9(sm>@BxX=R z&^sXo{YHkD?`q2le(~3;_Kkr*1se32N`WsZ5(yr2dm>0f61tnTkiYso^E^g4A8Wt} zD~A6PrT!F;tPsMpksK4X>{-YY-#XIb!lmMDQ8LBqSdj7FoBU+NeSdy_{v(dr68!F{ z-PqANVh(FiWh&^}*82p9FHfEi^gY$w3tUkD=>AV3?tcsQ|7nymvHW}ca7feE{%?r; z$}!mUJtd?-r|Aiwj{~z &Qj)?Md07?Quo=BT$#;Bh~YS+?E@X|kXqu|ju1Qg{SXD?1syKTw03q6sT zg(#jF_yby|p(~Mt8nRdX=gY?FpRuJf)S?hG?J;w!tvp24OqV`*R9za?X#L+wWG~0f z!`#VpQ%;yN_-b-<>ky&h5^j`Y4~#C2&N@krZ}@Z%An1wI=#-3DgUrU3Igp-Fg`&uM zD{alTRj9f(BUh8l`hvM|NPW)3V#naR3ZeDV3uW2roIpH%tnvAluI=~MZu_Yb++8Gt zF3SgtO_&2EkRKYa=>?B7o@!O=gdGUhPYBU5Uzkp!01I3ox@&(Jh^}Alys {Sl4>q9-w{b+b}NQ%uW7g4m`!)q|@4%0HjY|qoR6$My@)0W_zRBA3Ke3`2y_o&4~ zf_;i!5e|&C*O7OL2H!}yknRynZRvCyf?gdm9RZFBKkqraN!}g1+bXfC`Kire8psGo zkOpH`&A^#Vr{gs#hnfOK4>QtfUjTM#W20oM^aZYZtQIEp@3hr%tE8~kKyi6LN+~YZ zDdJIq!8%Shxs{$2%$3e4RwjTdK9>o#-2!VE2RMPHj))eBp)TuCc_8-)ADN2yUrID< zR0Ygj>&toyIfqxxWF7Y$ah{3v&39AB {?tKa|r^sRIkP( z*(UN&ALg%|2jI(f>d?#*Y(wIC5hW&CRK7dth-;>IReOK$MkyfVh|&D+$PGfRx56p2 zpGHngGdzD&4Vg?CC^ooi4f%Za%kFE|n&o~D0byBxi3$} #|CM$;Xc=9eGTV^)0HF_>p*TvW#N#M!XQAXCb}3$WB!GW zh^d_J0JlfX{A(urcK-r_MF?^loO`7Jr5YWLWW0TmvAU7I_go!j91GZ2 z*$s`6bDVc>&f>fiA!26&rrJ0APw5O17@o(Cp(`YyOkaC{`~a@})aY2udFO5$Ksl{4 z4Ct1A{>Td~EQ!px5d*k_<6qE*>#M-1jf*y1NhnO5S6I?g>08IqyEzMI&|1MrPR+-f zdkn~Z|H|}X07q(b?*m>CW-KwfoaPjZ33$&`{|>~ jjs2S+zRjLlwy099I%NSd<) o`1SzwG57-3DH?pva z@J$=o=WtN{ *8l0+5dME3P>D{Ovddyb3wZ{h>950ft`0*q$jn ~K9p6|PMw%*%$05=hJ?RW{zDdp_Y(NBu29+9@8b?*c=a}=^ zSn2EC^xd8f`SWAY{7|mv^;QZ>kR(A23;gw 2@F+q@FP22<1KeL9E_EmH^l~i znlxPWGMHrm=|@6;X8Drw##$Qt#C1U3;cYCngufE8ypf7aGq$em&A61w$(}BWVJ4wv zN_PgzITtqB38BL8!})ubR(~%1D8C8DAHNz+j-(ghjRlhJqF8*|;j)+$q&B!+uVsuq z3qRQLqn81zxyU7TVrU)dou-THxG-1cdq=038?AiN_#d`&G_gO_iYu1vwE(NM1)eK8 zwJE3fyd8MBQ&6Vmh_>?ECMz0NcCHYd`9b<1D{8Jp1{LpTNYr2aXK^3(zA);Uv!(tS zCyIAHb4Klm9tQ4eWgZw=tM;f3J$yMmNBK^WHs7E&{vi;Br9`UVB1=MRQNREOJ*>?# z>XqCH1N2@s)PEv^<9}IZ|C5QC+1XkDZLv{}wGp#1{J3R6^b($_eb62+f?XfDZh?(M z8MVAoN{W~yDq};cL_}4~aXRv>Yc`sna=$KaYsiM1!}WZjNJsji0b7be&q2SI^HI z-?U+e(e<*jlS_%%3f5-|_WJfT2FRUv$uFWb$^X$xfKi?zd^{9z R?pG9)#H8N zx&f?Ip%SkRNLB@X0G+4Tp`>V%rb`f~av>+>CsK26lx0cWyspSBc4YU|v){qDkCOKC zkx%qzy{$};3)y61riq$jB~FYiW*ewjJV1e|KN~c*_*?^Y)Mk>9q)~$)l?hYoF@o$5 zNM~1_+xm9RA+-0MfEvzoISIwOhV_z{#~fK1*m?kJuHC!N-E%frBg4yeBZVyqr3Z6z zc#_sIOO^$)jc2KdTz|yaoVS2z@oxb!B)4gqQH`E!@itGDZ>IPjd0qt5>UoxVTp-LO zzntW7j3Zdmr*N|sFmh3Xs-7lGokWi(*4SULX^XTgAqsA0fS}7U>Kkxr!RJ7>ncr5K zDqlZ;42Y<0R9tzK+VEw&I$xg4Efw&`|6p-17uDm;PlClZTAH$)=8O;4 RVx14rfwFV+U|6MU_+{vSoqn!OSwkXw|h_9y~=;c|>-nJqFs( za@ILXfhyA|LOR=Eq*LNj;&=a%$`3TE6FuKjni?|=nSwF22LoM0O9ZA;6-Ilj*kq)c z8sTCqNgpkOU+2m}tgPrR7(#O+ru(8+TTk-!-DLhk)#@lWcC_^6-`zp)uF*D0$P$lV zKr*M(^sbObyy|A25X s=CZAU?Z8@i&rrABB zEXo?xU2_y>d@&~46k3BI{<#aa9Z&mQ^;qHEFFs*o(}au50X~>Mnhl?#VmI9*9cj~a z69x)d!K5UZw@YVV@CiN4!-4$>j=8ixXmN}se2F5&b8y*?3WUeg`NeIH;S9pi3^vM2 zk*<>N8##$oLGovsg;$aX!in^PH9laLC|-6b$9ze}Tz;$7;cbC`5D%pzif5Aqx+I1x zLU@D=j;f0gR8SshNok!31~YwmoRYIj%@{7=eS`Kn8N9zjWbE+5b)+uN_Eb%+=5A>E z#_1kV1NItw&eUC?39qbEmyVoGl&Hu3a#7Aw^0PN zVi}K!bs$mpQx0iP`&cD=)U?Q0{sVI-w6K^Uh3FaU>Sv^ZJ{=w_-L}UwGl21L@mpkj z+^CUlP)GtBA*9}+H7~f&ybmJKxKAJ?Yy2)!l7uI6eDuc{4~s*qtK>H9?(g}4<3M0J zMnc+s_Moc03sCKNtOs%#$VA7gl^|}`QMJ7AcUViUe7RolxcUwzzR5Kgq&wrr9S&OP zQPp58P8#6$_}FV7PQjQD7R^e;(vuIHmI|S(Tv%h!Kau!bHf4<>zAjPWs@J+HWH$tb zr()B tjMIh*1hKw&e6InEMek`OZt0b~)ge;T2~JI}N>~KArK7gT zG@zL00g-B1F{vTrHk&VlUFG?b2ro&KrrefEFcus&M8BmmaMjj-IA0~2|4f;98b2(B zRYD_|^~<2> r?aPLQ*&K-@=uTvr&KSxxR3Slihd{uR41Dh(0u6|8f zKC@knQZ~)0jPLQ}NbF!%U9t?lANqiwtnwW*+yYM-3xvm$Ow6^rucylc`iT0R1=gU@ zyt2F*(#0{JPrA>=DDM?eTl5ULPl~JRN@Xy3yT1;kQ2I#9%vp !`Q_5^cI{Tt|-D&lAfnwB2W4)!`C!J(us1|~DbtAhJR%xcl3Iy3ZXPEmwn=4@* z6d2=Kd*pcA5^~(U@Wnru-J2E^3n3=X2>c}BVc%2pay0dZMJA!iOfM;ON;mX;``Heu z-9+=UDr}VDpQaow>ffF&K?O(|SlnQCMe{Y0Bp=&rWAI!;x4ykwyz~erp70rnNTcfv zBRe}PJxI=_ahedWZBK`V9ce;w2uB_Dp3v<9A)!U}n7JB@VfzTpX3pf}O%4Z}L;@%C z-^O|$?%Rqao5>LUh0%}xt(78)>hIG|I$_gZq0O|Y(v?Il$ERqFa&YpFrWSpZKg7p8 z-;dfApWY`&qS-Ph`w!bH1qzHB_VXVNW2+#0ZTK`rmxC9&{pFT}4ea?mMCv>D9zjXN z8s4`^@@RxsBVIH)PWEEp1V^{bli-C&i|Pvr%3>Qs;T`IYYF|^vLlTXhOuRo{NHTNm z?TAwwI_kuZUE-%`@DnPrSP6WjET71V@$ZUNS4VWEEIAy>`s8YUB`0)AokeC^q<(Bh zC8BdKHHcCpkLj( zRy-e!byQO(&KC!}cSsi3U8qT?qQ^_uZdxHwqwm2U5&SWiD8&Guq-Fjy6W#kkj)AiZ zfex#37|8>|E$IB)YLkJV_m#pwA*y?WE8g5LKKQ1Bl4giN7!c)krVB&1M3O7Scj*L1 z9wEMWn_&6??-CJfasBqS*zNJvWsoUs(_cM9qr@?D*QvCS{7%-oFvGwVEKIDN?T=>- z{F2a$Wy>jPVMO_W0pLafqK++em?=hl=9uz~g&s!03Lz*n-cW>S%HRWYD}QZTUs2oa zm$W-ILu(1!i`yD_Q?P+@w=#OER(MxD`MI5%Q>|N6o_Sco0Pw?!%RK{VjjpnrTn6FZ z?Hx3s%r3u0V6Vf>(`SAB@&|FNuyt!A#=Dib*O=S<1`Ra2iv9=T%JmPW3^OYi`@a>g zN7#C?8^d>7y~0q60TI>k&%rYDb?~g^dXyGcB>Z`ZQuvhN6t*<+Fj8BOZx<|$jh&=q z=hwKT3PXGj0%qpsC*I;C=1d=VTGVEi FUvNmOS&dXVb18E ziZd9*(d>0}%;joHlm6|mUqkPig2KcoDU`3WUVIPWbK3CX(}razd3ueUN}?|_ObU1R z07$2P)~Z3U5C$SbJ}{IZDtZvb&vGWnh4fA*n8IaQ*rUKmwGFnRb!Jh~M`SMKWVyNY zjsmuYd3U|b=c7 t@MqUP~+|9fMgc03(YrJih1xA*;|Gmz1 tCP;C uNel_UlY1NJAQG~x&ZQ;v5=igW*=b8g&1ToY5S$V_S^m948UIVQhV9zs z6e>J|$qoHBW}fCiyw#O__3z@8-e*b4a5L*0JZj1Y7JNW`89BOygQ0@rRPtJoO8U=u zRk+ReFl)RSl|FDBY1jz>tLbi`U>w&0FNxw9>2K}GQxZxUFxvP{Z5KHc6oj##ZBULt zOS^-OyojY(r2zjSK=hegSObf7Un2DdQJ-n_ZS m3Y_oWrgCiREan zpgR|f3uX!7t@7!_E;<@Q_ZtgZ?N*!N{StS#&H=8u0%CxEj9x2l+x7LL>S0HJK99cy zLuKbyI}N!T(f)Azbn#Kj&?WAY#G Mgqjw|j|lu|$`uVg2I{YDx>cRG-K| zevIE(8@v)93>A(|xRkKsNAzD?uwFk^;z5ct@D?8BU~YK|_L*(zZm~VlP}Xf~?O<98 zb%ZYPa?1Z0O&p2>mnsAPD*sl6!3WLf#6IuS&U`bQ((HKOagr1)-g!9y@0LGqz~f`K z+yTuwWx{a6KRrqy&cXswh}a6+_vGd>L#3I1l-p1`$H%xCw!9555cby89U{%j6_14| zW{yOv;nbk$Ohhw^m<*())K|h=exkoxq#?P?d1u+0_?#0T-itp1T_hwar9@84b~yjb z-}FHEEtu*V2jh4vo&fgu{Y~a@Db10;lJl-m?D>r_d9V!y@(e19iLn9{)mfv^g~@J; zh>`7&YtF@|nCQ-))Stw7mB6Q;mfajUDysNpsl>8$GC&mod%>9Iq|t%NI+PGh5$O%j zJ5pNE`lv?n8>Xk{vgc)W{LKu++%(-85!T-65kM7F+g+tkRQhyq?u%JQZ1C)I +(keC-CF+cn5+EfqZU~bB<7cK0X=ZrY3FZPw_!gv-~5)Nly3&5>+9BA_COL zf S2P_q%c=mvb>y?e*8CO-a&*bo$-)2mWu6@(n_mBLfe@?(Wu0)$GhnRAl* z6Z_-q)Uiui pDlDtA`b=;&H9w0pJGyau(`| z(5Q=*aiH1ApGG$zdFUWV)lMF=N1T@o8LArSVQ8DyOPH{?UU~DCmemP-o e#;oR^Cjcr|V}hNYoXIb;mwZ-EB)^=mTu1AquUf@QwFk3?FJ#&9 z+orS!0Zm+am=7ohb6ugxq1vfxy{iC#VQb$tT0~iKFv&y ?K>8wwWB=W66`pT(S?*idcr&4LS5u)bsFj3gJP%Q0sxN zyCN)CDp1e_N)>JY3Pqtdkh3R_0{Lnr+_{vlZaAJJ`{E-7W6 kE=AE*ts>`z_=rEKcfK+}@;s(zm$nbA2!tR@%tM>5ELE)RiwZq>+O5~O#v3=~i5 zrIR6)>qmWrr@2`NM^)ARpk^Rp(@%mv?jlPh?iiu*3c#qv8O!3ZcNo(A!!MahYPw&R z(1SmYd!`EpHn$ad>^y9-%1)3fBdz0VU*14qqrG+FU*-ojpoEkstm$T;e_r-`C2@BI zc!{NVSB2ISNy7dNE(LsxS@f!yO~=dfB=wk&)UahGO`VARkuv-vCH`I3YG(UR*IT;q zK+Do~zN6|i=M-41H}_m@G1Li(i9oOHwVD=yTGCRTPTQh=fPiA?FjRL69(54ZA~2(e z4?-NchY}{F0zCO*FLT@7^uCRyud(2E2dRBtsQeAMoQ9Dcd(jnaGig-Cm8}C#jfa21 z`-};K?QzA#CP+gA5!!1IqHS@G@L<0zVJ{>lU4JIXm6}qs)cu%mY+$mY?g^&G3++)@ zLl{Q|=8Z1&tz*cJ&DM|sN&@^jF8N!9H^8rKJh|ju7&QW3ru_<_p$un}MtVwBx!d5g zTcc3}@^?yXVq{=1-W)blAtC*ibktlmc-Mj67-vjeig|#S^uJkVGC4FF!h0e;`Dmn+ zzrgSjJcP?{BQ~*_6iWBZIpE1{7A&fL-80ECqOrAGd>J_nk~a$M_h?Z@nFLl6i-w_t zZ7!>lAQA|uiqQ`&xv7iyj`Ni*HpFtvBw0DVa&nT>&Cxj~RCD`#y9c<5K*oXu+j1;N zsZ7lPUc0u;iL?q%29JaF!I6*-dFaBqiG{<5gY^L*EfUQ+^f8S+WcRey4mBF(Nv687 z)t_5DJCC{4UQ3FOK5r~0y{ap#h+3_0&TRw&!=IH|M+(kAsK(z7IJbHkJ|IFmwNw8| z5dPDZ1U62Ve=7*Lw6^Rw#8Lcb4Dx%F1e-@b$%CB(N+fSk@~G(V_VCyF6;W(i;w3|h zuupn>)3eFilQdcmI`hJUfg^Ph%ufIuEHXWkd$9~vnya!6vg<=;-?XlkSC2vT+n-lh z&n`5Cy5LC+47s026xA5Krk)vqp(C}?bEnQ1w%5B7&Ii*@T`4NmSD$ueX^K=1GP b~h2?l04R&eK7EdiU;IzX8q!Z3W+}CyRH&UK{PLJ8L@{rnLAC!rYWwSrY}I zlUE6fKmIXEq6Je?cuZ5HTUA4tr<#(OkkG&5R2(h2ZRC)|0~K9DPbluzw`7GesQf~B z{gYfSu-Q~RbdR9{_wp$H>U6s}m~W5uneeuL4fDc3`l=)yy)d^o)(jo>$q1ihNGu5& zb3)$ne*Y}tF!lsEp-MD|48z4J@rHiXDVIrssNM5E{s-a2roHC{k=a4P*qr(&yq+2w z+!0$*jDPi$C{j-c@X6weM=lw@^al<jbp*1(2GvRLV{i+3uh@a zU)h+JG_bd$Q0;x1X%fUiIMS1DP16X9+djV|Aj?$ut!payC2^iyZ$}*`m74Il)Ohc9 z8W^2FJJ4Ce8iQ0xJai!W#$t$^1XmbnL0aI_`7#D`|79D>fgG%j_H5i&sHK`6kG#2M z>>@*70FADyrfbeOhC4Hne?)K2Phs7j#vzM#gSpD5C~0Llvz(r96e)aR8*n;pNP$Sg z w@54 z&lbzsRFfFFyy9h)D!B746+faG?dYfxF5Bj~F0Pi)d}w(Th z5BV4lQ=iZE @=JHPV4V<@kpK>ep766j?sk0gKguINvt6|4rC ze)FH9Wx&O;kAZ^2(RfZ@gM=k;MCN5tYMTzy5@tvb;a3xA6pr*qA9303z{c&(k?r0T zkW_(5h9XP**&Ka@vpMLH3RGr?MenTZ?|ct`D<0j +<5^uQ z$Duii+_o4Cb1`EjMy4S_c+E|wgws_g-NDn!f+U;;0HEoNzSpDr^+$w;JfaV9pyAO& zkuxhATALJ<55>h5Q;Z89;36aLeU*{&bOv(XW}^H-awj;bm8mDD&{?d}a#cONi)d#P z(K|JAO}nBSg`-6RQIQ`eQP+O^b-36fj^@wF FEyknl6 z;)ol20KRA7!C)D{I=`(iFlpifW3il&O$XACNo>%SW|=2fnFy33^Cd{c1_Ou~O^<#| ziv8&ZS`Cw2+3qXzOycQ7ntTT)lS98o+Sgkn*x)8_9T#beq0VI*D_zK_EPFZ|1Xd=D zL@b|Oi-11 ^Pv}tWm{d3$p*UFnJrdP#E5k0HKw!U^5_6Tw0U}nGa9`4~ezDb6`KU&w%GmKw!FX zfDiQindPVR87PdtO?x3xIB8rx-zu-ycXf(Il|cdfw+5CnkL{ntn0o+snO4Dah|mc< z$fre|UxlAgMJh0&&EuFD!B_`rF!S?yLBJ`~u-$kGQrX^*0(v}*!qD}%Jh5x@3c~q0 zS3do2gvVi1(!dj%-I$KUem;biS+<^Hx)8XYYvgL1_k8GFY2VYm)cTEAnffiE&d|$s z=(1XxQN+)p3~k#3 _kSY7i0@azgA>JS{U`}#ZaZjSu=Xb@7vZsB2j?_C*#vi~m z0zBZnZB1>%it`nuwVnNyx2c4eH|HC5U+(a4s@{TGNqM&z%#Oj)Fc9kWgu6n!JCP)S zXQN4fC*jD#-Eezx3!9iir|U#DeKxJlhdip;d?!KW?PedyB_X ;qz3p)5r zhZC?p-Zl1S|7&rH7d%h9j261iJyjbobOlD=*?HmHvt1iFPe?H2MPIAGp0~Ge3V%5+ zz$d olR0!Y6WKA*#V2U?(Cr#0N)Ze-FxcY&HYVASWfZmLFy>Gm69AJhoM&dd zPnFtijw998@PRE5J T1k=xy*qvP{DM1YT`v{3I~mwuks4?$B{TA z2_PhX7x{}o%f+zx|1kDWQJOTs+GW}9LYHmZwr$(CZQJT{y b7ejmv112oGMRsG@$+Eu-WX_~DuY*4>sl%==GG5}GuG6Xy?XeU b}$Oivm-~M{y z9zfJ|S{ytr`G>7762BeaO(mEy!}!~%l{VDx7w;e0bafO~uh^J(-<_>sqdUO ;t7 zOl0HV-1`huR9H@#O-wmdnlgV-za2^9{AGCnKjGQCIgX~8NIpt_#JyR1_T!fa4DNfU z`7Az&YLUVF$WiN=NOJyozimu~o5~Z)J13ccN_8WDCAm0Ca?wIfG0S@`SlRlmY&<3& ztMu}RvCs)mNh?jF$NWlT=D$vE6mNJbq|HE-wEbKSiXUDsrm`kD8;%4T3rmPfam7TA zXPGMHU=VXk6GwfLw*DZQYB(=8H{bz8l3Iyb^zEN6ErMWH)Kd{@b>-4)455%us^}EB z3r0t`(wPvOGDc8aahs(jvPctKe33DtAQkC?lbePB_kaVSr2!0?U(e6g^XVV|=6G}U z t;?()A04VJy!Eso^!8iL5Fn=p<6 z_Sl{b^|1M&s_V8iNY7%AoxH#Dp!OfGO6cEuUh9MY5kG*B@a{{rcj$*EDT~zr6t;k0 zFbXZeH1g0#wZN3*tgw>(l5$Fj=8ZV}oDwr16}q;yhX##H&liGnj+!BauwgR^T`z)c zOP)W`wf5_mBG}C^ZgliX{)g*wOl5)hnT$O_cLR 3v|9^cPw;+}3f{fGHCN zRVgd;4MBx!lTuesTmDamoF&)S&YREZ`a;6VXOHIefwP0|#9042uHMgs>LsGyxZH `i(nX#Cl`FIM5N|cKqp*1lS6FGxn>J1`)LG;P}J{7e^BKK*DMuRSPl`m*8+JRb- zp|80VxqqtffO|y$gqya$3FoY0E7D3J)ju|nn8Opc1Y%{zhWmSYC1Q9(j@YSRch@_z zw#4_1n7NXFfxXqdj=_$kSGcS#k50xLB3myt499AygQ{WpTJOoOx_s7}r~S2t#ej?M zN{r>&zTb-A+OI0Y#fI4_j?$||^rgLn%iu&Ud*TgZ8ztr}m)GIam?6Cy+jf{I54`f0 zlW>8A{}{A_V~yyc_DoqFme5siNTKr8bY8G2kMByzu~-t<{)ri0z!FX|5vpC)txUcq zBdjs#!-4y#cU^^Y1@-ov3MCo_*px8w*%`{-rd5OWE2JaJX|Jx+n+X23)ODpx{KWaC z 3XS;v}!uDBwNP2-MKn(V+ IJ|S2H^*%jD@tKWng3I69}g&FZ`J+{N2vEwApuFaV?V z510P#ZZ_0RBDT(mS=29T>3++fUwbT~V29)H8<8Ds@XKxdHNRFrfxS_!jCo>#%)R0k zb7f}H d2r2xI)Wb6&Cn2L6lkX)?Ck2>*tp%t(Rh%ZoLDQZgmXA# z_w_bPAXx#m=FSYvL1mfp&G41i02b=;1XP`E`h zmi7lM(QU%u_Tz@ub0<_7AsC7`Mtk_Y5!}5zyL-JM&HUHvm-Rn@B~GUQwRxaKOEZ46 z71{5l#^O*i*rV}}1g=OeqV?c3SFcy{RA<$T;MUZ&VnLdjtB2XQ?>Paf)IjqH6r4=* z5TH`y^E_dQF3{gdy}08~iX&z8*4{lCp_Tu(<3WpmC$if%txV^WS$Bu`!$3IAMkL8{ zBzi~30-ba+2jx@e&X(hgx61aX D&CPLaJxeq*slI1r_SgO?(M}|hoM`E-MGDc> z0hqT(WqaF{6Xw_A%|%_!J2vvt)WcL2O?`RAd&A!GiHM0V>+)6R2jXqAnC{kg@60HR zMYKix?hdblh{-#!s1bq+jcOhd 1m+GRW& z0vDS3B=**h8b}lJ_{jx}bzpVH7B0N2UJv_Av9_K>pe`s%L*eyPUElB7fRsY!)Hu_^ z&B^fY?nUFTBQjcI fTEcc^|M^maa3FL?hBFaG>Nn!|vqeXC;2XGaZ$wB*}K9o|h_ zXnX1K$ji-+Ghh^z-61i84y{26A3`Z5%5Q%U?PS(HCs?sRDhLjK6qt|JJ#8yhZE|j0 zU|3@KU`(g54%qmq%{O|=XV32UrNPoZItbkRnA75VSE8?GKQCzb@U_X!iGn)3a`&c* zLG+YKSOR0Q)L`WJ7OsCKUnm?fd{d6>v8_cBkDBP2+2>REM*LNU-NhYeqi)`?*2T># z9W+zPJ_>~!f)ynRK1+1JY`gE2SeNqAW577gpXzY!n5v^RhPK-DQ=kBv>P bG2 zehi3=4lYfL122a4IN^lJGO5JV;qj3AtqPfA81C>w%3X@W5g=mAUD !AS|44ak@#QslQ8 z6`KHEP^O`k19iuv!|D6MmDC&!rgiz^Ttr+M4Q&9hp|5oaF+(Q^Wkypft|c6z{&}}G z{V@J(j)~-LsstuL#NN06<5~LlEr>hcSFvT}BJO(viR8}!R5+ACsSe4rWdV&r+(NB{ zLM|lUshpbEv#N!(WDa!~+i 3yfymn(P|LM@O^yXzZXfb#NnmqP|D2JV%z17VPb5*%opa z$o+NmF+eyPJ!0~M;V 350y(8z@lCi%L4JsU |*lbEl?*NzGqSVwI3xJ|D!=106C;Y`rKvpK^9Qk3C+8~4JD&AWyX5% zfy;so>?ut&4g@jm;UR%eyRS1H2r6b=(84{U#3A>X;g39X$H4IsNIol4Fu9w7PBp!! zTCLI$L07#=2B(wAIkr1*B4K85jmv}*m7c^zC%QKQFUUe*r~q(GJiFl)D6UI-fHlhi ziRXHLGAw>X3VxGbV!`nW&hDzwy5L8RC{~Y81(r1PqX-6r`*)u-gHRu9Ijp-|g08Cy zya(3692f{4>?Mx92bNXY0kye)qS!qu@`9ng$+tvigGntGw*6s59;Y-VO_0lC2=pw- zHIJnOjrJYi`yXlNmmM%ioq)#E*Zp?b-Ue{*5kDruOWC?M#sYo8pzk`ozv%#WIjdgt z&)9{~fJHaIesU<7Nwm|MqnwA&sY Eo0Z80}elV#6iNNhEKf?w(60$5NG89`^;pFYt( z2QWQ&_l}Rgv^u0!rCt!wRyFgKxm_}40qBEpI0dNa*t*f^p;eq(y>YN8CnOM&MQy9X z@0H^GS805I;I}(;g51>R0^u6^T}k_VX7O@i+kOxkFC@`S2wQ#dm#R6NbC=BAMX~ zn6=mX>O4Qg;Oi;m6A!263wUt&T6Z(huMlh)W*iqI5J!!w-p#PDj%a!TYBoflL hA^ >d dU3gYLaWmZ7~la5awfy- zV3foh1O;zqIgJ!MPhKeBdVtt9dnwi>78GRjW#h<`n`-&|zFa9stB%mSu)AkQYm9K6 zkC|yuAt^K!12oZk;!L=uG~d1zR*~+>0Qt4}r=di=W_%qkzkQe_8@!ZWn2H6M^ljTN z*ZIYV(+q)<7BX^T<;hb;U_An+aE0F!h#cmMS{c#Vj_eR<21POb%vc!?3 zQvFWcw2Ee!`IKB<`{ib~s}}Dpe)8ug$wv$6aIP!}?ViUded;L j-L$UNI29(FS@T zn_mkNZ!5yDx{pB~pD871(?VyRBM=W$M;0set@nL2q7{ 34!3){Rh&q}%G_J#5>TmV>FBO^tjmLIaNq`v@IvvIYz*ox)deLMdJYN|N+K(Z*1D ztSf7c+#@j{x#iS&R%O%51)Nn1iq+ecf5QZt^DG(*WVWaUFiqDRsdj(-lw8tyFXyqY zjwgnPtw)+c*&r6_4hWXkWbi`xw4mMrX9mb~?|SF*+_T Sgqi+7Nz2Lx6o+w?8M7x_4!_=kr)SJ zenRurKG2bGCm7m6JoflTFWlJs?FTAJl8TfdCzQB%Ag9+4E#?=TD4@o1SbMS&`ZegY zgz<~J^%Y+q6l(Fm68wKP>KK^+*YnL?|I?^rL-N1T-xJ3yXH_ijeqKhnnk}4&qWb_^ zH!>g@J~or2By~Oee&4#I&~!RoT^m5^O&VSB-MNW_(H6ZOQPb=kcfvd7(N2A87_H8_ zin81G|B2yjhextAOQEmH_kG}!RHK23E;j&NY;XcDteyy8?Z|JuOqa2zJqfyX?L#Dj zFpkAu#IU;b8+NI$BMs=M)R5OkB1o$)T^mYHI-ba;gVorrTOUR2Zo;wr?Jt{|w!8-J zN#ufzzRupm&1 w>SXR2@XzeROD|nFkhYjyvWeiqYd0B8uKu=fQ;KI#TOM%GeAcJ)h$5qZ z20A#1pr_PZuIF7dhG-U?0w3gn>oYW7>AwP~))R6&xFBp7p3EpdmP2+uZ?EjRmvB4| zA@SCb<6RCJE5RZ&Z#hoKv}9Z&cszo_X$*_Ma#`xt*wRI_z}g1@0<>g`20*Yf@%0V> z`$(1fgWS2M>nDjwZr*MGl20`Qk?DussVZ;plZcq}Fkks-5?7 |zweUe_qcT*C z3W@*|;aqliMUm6@);mnxY`>b2Dclqd-l!r{#xcf<-0D3A3&tPORr8E=N)jY|^zmxR zPrpno3!L8Ah_)^fJIWJalLq?QJ7e!d>h=9S zu3p_2P}F0848gp3c28i8x}E@5!6}L~F@C)B8%NcSpCl^S(x{B4PNvR5nAgC>tCH6I z)0*1^KY!BfN?Qjw+Ai55X?-x89}crbp2pwN`MSG^Zt3Z~kNmtFx+!DV@A`O~+Q_e_ zn}(oSq{RNyFUmb0ti|3gmJY`n62gq&*uBzpF`cHyhBjB(A$L=@-Ec_`9iE4+zpA9c zr#i|5MsaDJB7(ci!mA2nrODzYTs~dI5t7#>(hmL0#yZ2epD_7>G1(Ul57vOobrn$9 z9f-H5h{NTkD5L8 %k!8#? zjP-Pc8N3!Jo0RH~urG=_Y?Dc5+|_=F6dkr_2_aH!-}N0R6T#uF5=nG;#=>zHcSyjo z9-_7sX%oqDn4w_?3rCk*f7B@Po0!^H9&vV>kC)JQyD)SVbwA G^$u75c!2YL|0MXn-SMeiJI{Z^89H z(hnu~d9K_SMfF^*pM~Z9H&Lo!k@>!0+>j{NW>#})M+Th+vd2+H=>Do?XsROB<{y@f zXDia|>prsRQ!W GDR!_vd3$6G1Z3wWHsin17yzA|8UL0TDq-j)tN>=6Rxv=A zg|?j7fj?T5QYzmwItv&f2o%Fv xnWTO~8}seHAyD;W zlosr)sd(Vd;O8803#}Um(|~P9=Nqh79{%-9RONjllbz0ndc4;nCfJwaT zFC9xc*vu1MMWihtY!wu~mMyoq82im2R%~GvcrI} uF7Kf5_Y83PvP)1D z%nwJ12zjkM!|45G=i?iX2tkgpwAloW7SO&JRG>Z?kCLI-l<3_f=437;>QP~39{yD5 z2|pfCyxz00dqMgJGC>SzXP_Ry#2;mabC)Y%_THe@UOPC{qlaP tpQO7lP=qw`c-^@zGG`W?uxD3?Nl7ylv7Qp4Q^q__8MUUN`mT;JoeF|Z! zDE>U{(mC >wgBw}0z*w&(EbC4m*EzFFT%;Z;*s@_a_7B2V#` zf*HPc`*%@Hhj3M&)i?zJpxZ3Gbs6f1dc;@v%EJhYi7Ah-VdHXDmf@L$m~V6n&_bEQ zJ>$Qv&j}}z&*OtqR3e<5`E` SfO81HSqap-R z^(#ur+JZ?7^C(ENE{X3180=aau91ym!l8?~- UgxwX^1(X2Jy$s`G HKJ4WqG+5GjYNvx z8=q-smuC~&MjhWU!f}6l>nPLzAvr17D?K8TA;PW~iAz^4>g@XZUHg6nXnAZ2-vzwq z^3RL%SGGPlo8Mw=S}(64ztRJi!j2}G@zg?P+AGi4T^p*PU6z0ovMUCgfNg-}d#kOz znx&j=ljNTq&ap_6Bt;u@x%<9p;g2(h??_7>>4GfLHS~bwsrts}11^h)Gc^7ce6b{L z oq`Sd#UE#;Q0n|xR-5b-aBL&sH&A`p169MEVl%%S#V^X^Fs!^6? z5ozXTax{Tz$HYH3m)~E&uLia!5bU28MNDOe%HwzH5Y~RMil!$Bkl~xWLOBw%UL>fi ze;&+O3vT+Bd1cjfSKVFoj;p|R%e_97Cy65ZlOhZFUp!9*jG+dr*VoH73SaOFPujIz z>5-X^ncyH0oLPGS1|{ ATLCDcW|hXVK+t+6U;5+DRA_Nl4`Gjor`n(z*@s=mDCAqSax_BJ5one z62kvU#9FjoytOxI@^18v&4I<^I1!z+wCrnu?@|8U+qc_ajdi<($O5&$%hYEtrjg8r zg_Y|i1d0*^cZp~Re~kqjW^P){$vy_zSu+{YFh4OnyJA-O-sc<*7U$<3Z@$h`uMo!- z5MN|_$#~i)KbQ&viwEN{zI=T(D=y@F!yr`Xks2Rm8sy@4K3SZ38~AWx75vci>kSE^ z{L~!NeFC{?nR{A*MUbSunXJ7)m7nvBF=x}pc>UQ8q1Mefv7e9&v>sshc^-UlO-spb zfDN<@ecMqJ_jI^bEOxMDktYpR(YG5+7$H0gFL=sNyz)DIozc~8>bXa}#g{J_;kwJW zvW49a>t&O_X*YMu05Fh$ 8a&fSVF0~HjpsN zc9BOmoPwdTrULH^rjLNrqC$b=H~V|yW>>G5np9e>-#PZ31$NTsciLQ6&A=cQEnZfT zZ5Kc;-0;3K<2KXiM9ZRa)b}CR_x*Jyo_{1o5eot?zX=(j8bYTD%{r*sMx?J;4TMoQ z033?xV`|JiE8xRx3xN@8G)|~_#OJQB!isDP)mKbKY*V1@XBn*Q=Lu`~M(uU9VzIxF zfZM<`j9=W1vp37pCkKj^Tl$Asq+;yVs4P<^+#1Mwg z{YR`3>=iBi#egf_lepJZNHqhi^FRY9CxS{8$MbV&=`#&7h^7o8ZI;>b@(0?7YZ$qw z_dv@V!Mt3HwXzT+Dtdc*udgPjs1=18^O$rDaL-2jA=}lKefvo)v&jmIH1nO&-fquk zE7l<3?Naj2vS(bJJL@OZWMW7y&Lx1!4FSv+D|2Te^8hyHt0MhFvfvTNRviGr_c2ly z^??gRMq8i*C?Z}IY&R1vomSrAZFNm*`pWdfW7Xtn?fkX2zCpGtRx6*m>T&XOLY*cb z$vi&bA E8y%cmqgI@ z4(kT}=6{H-EIF9T*pl@8 {5u#Ma;y)c zI3t0thTTX)5d5qy?bcCZ>CWgpdl^vUf7+Bup2Y`EbY0rpi*`2Ng3JZ00GvErDC}2$ z!9Vs>wN~qIL8i#*z{U?V>_4ro?U< PO? zqNRo)&e(POs*oWe52F2|w}P&|%D}}u|Nb6C;WHwT)U5*GwyM6(z(fkJuv=PlESE02 zIIqXwn<*-I_n2R9Bdz=6Sv+QCb!|5*fxuGqYB@}j67NMfp0Tqi4g>?eOlVrW+uQ%- zslc3DEjBCCPObN?yMk-O7ntIKuUJpag~;Iz8KyXkCmSzl^zK+J*zR=f1L92}t~esM z!0aQa4F;{&o?BG6Yy!~0nj?VI12CcRyAE2YblNQh{6(*tceG%#<*I}lEs-}jwJ(-Z zuNw>TMDUN9prh*DjjJ#?8yi^Mqmtk7{xGj=WzMqC1eJMajDQfB7EWHKHC2A77p3`& zFlqJFAv~SMl0GuKG!&t8uf4}t3eV=)z+u-8NN?>gXXRT2Cp(%4ui|YGgio!u2&Q1# zAeD ZI!4ciSqZu%93ZK1;GRMwJO{EYHNVu=xo{uJ;<45!Kyw6 zZab}(aS`W+f kRLfkD`>tqN?D{|ZEh8UgV!#*9z_J@9- J^B07y zhgN0P8pFe{y4Drgt^RBiX&x9%ykcXjM)fV6xWdcgdd-Z6zKlyMgDTXle|aDzE{+We zKe`9*fDkNxp_E%|8h^5Ya;?BcziLrSJ>;vGPc#Do{V%uDZ_E*MfKB+$j0xB{!rraY z4kmSXC0;*sI9Se=XI_3x5#_6_8&h8I7)of)m8gWX-6QQet+RW;D>~BceZj}hO#5{_ zOJU4iCMN%_EY(O1&Ke&j#3}u}+snG5YXh(A-f!mfX4bFk>*(nwRCstuFqb%CL^w?5 z0J|5t3K%7{)DVHY63CnR<+Bm!i6CHP&z!4~bIZe8OjsAiVUSpn*;!gSn}$i%t(~;W zr~KyU2prs|h`rqEY106Fl{&3O)we?wh@!4`=3cC9d7s}y&4RWPT?!rW!v+${6z?gf zvA=kx+m6hdqAS7_xevG-);RXrvitvOci@bZd!TA}=JcQ)?o{n CVju<$}_-4zeteKZ)aXW&HUC;g~`c&@7H@!KM)M6-HzsBMV}XAQ|%}Xp_f{ z%0t87n1$@}8L@g7oEse6TXee}A_gXC 7p%D$77a)UETFw4=utBYL{IT X6VNb&0JUp?nN69SLrdW zc!&o20kxh-CGNnwfn(BC&Z)mlpQay7D>`vALN<}i8&V xFdeQed|R z87d*Z0?K4iWg|T|x4FdJbQ~)>^<1UFF?~y_C3m>vC;29U5wMp?w!e5;6478#Cr^ja zue<17mTWjYeWUGWvIE3RAZ-dW3J0fQISBNb#le2I($dvuJbc4~%S;=K_NXzi7Ab0& zQoDi)G>y3_KQD ^djTvbFj(gs_rhYebnO+)F;|;VZuxk>Gu-sE{JY!NcLt}{nfc%50F|_66HQ0 ztRH%sp43$o7?pg#Dra$b`1Kp7tVla6mOsTTo8(+nbKkiT%B&EoIXEcSk3zD!L$W|+ z3(j6CJTM4eJ}hFZ>On?|yIgr=t$f!`1q)`6!&~vK^JO=QQbsceW-I});Tn6!o8DEb z)df&LmuC<8d9H0>J#(b|{uJ#il$?*4H5e$A+%*ffppy*8LUC5VG!lxM(>i92fvE)@ z%Ej)vwg5W7=35b6qq5>Ns#^r5K$oPb-~6c97yoeWi;{83=_0sG$*;a;Cfg<0j)s#C z*z^J8KG!DM$0YUrutnI}=x}H;%hLVl#ml=|ZTF&(>Uuv}7E{ib{`(lLS20nx!)SdU zvw~Qunf`RZz?Ov{-+#7?5LLanVzky3rR@O+-B1}1%4}pVLZ%gR?R=2FhfQRom=s2Y z_Ih=@aAMIMWT(It^I-FA5yF;WWt^uw&8PR7-Ay0Yki`PeJQ`t&SI?4N%!)HnD@jx? zgi}I!%%W-HoRxpk&B7Ywm 1dpPw(Y_ zV*pc`h|6X`-8!Mxz@qeEXl9(WE48Xrv%)}A!pNn|*(Fg4AQoQF?74XY6)Alzlo*UZ z@Sfp(StpU&6DLX({Zr6dK*Z&ey;zl{d iCLY8yU*idg*03x&WLg?5nlOr^Z zlKl6U^T^Lb%JUr#zkWCwv`2D&z;E`-wQ)=%%x^G 41frtj57Tej|F8z7a_YM}zFCQ?4fo88Y{*8VF^8{dTg?Yo^W*GF&YtBSAM z|MxH0JvX*>IWK6JE2V3e)~d5Xf)0jx-`}GvzYDfq_SW0MrDx0cK+vOtw8s~^jV~A! zvNluAtbLCyX8o CM2H@NrPR5vc#|2v%~Ah&P+K$o zVSS4r55oU=jG6um!e;$vPX1qJ? 3*b8e zHHvQ7xc=tazwEhzLmYEDwLw7zu18_bImq5{K^x$2A5T(EV@_(YX#(6BIj`fYJ?~xF zyD!e!1~@nizI}dQpQH=@wUCKwEdYFcNh!!F4U_x59G&Zmti2C>-MG_Vlgkkyi#R;T z8u311)Hk?@GAAkYDY9iH7LyFKqf#$pC)S@f;ly3QPk5-b+_FbXg`Tf& W1kK>k zVJvQ1P$&p9QoDs&PeH|ea(A(R1BlsCtM0?bPOmcr9qgTY7N_&T2zumr;K>i`0dpFQ z1(ORFf=5~&)2Fm68~l{HCW%LdfH?>RK!Dji39<_-h@k)aF41l0Q(fOE!S=QY06_=9 zOM^>NhJcxdz??gP;Rl+LmP1q@%jw>o+_2_s79oxMnZ!Diol!{6z41m zfGlfrWiyYYq=GfKhtG|zR=OhXwF(T$q2oX)3#so%>A|AetFV^8CxBd<8P7)S`n$D& zX`75OY3gr#N|bDwg`5Xl 6FTWpW~j)qZ>_93->Um!xrclf62@ zZlbMZ=}qHL78I0MX4I>Yrv+C{*4~yr;!|^#gm*oh|583*$W_>$6W!rDWkYh8vXk5* zH7zz2r!xunN}a}}fyS>117}-RT$PpZLYLD|iX<9oAJ}~6l7^F&KydM2rEMdq$`mow z6B2qnAeZ@9ZxFT6l=F`$8mRVxLuIfA @dS2N5vmMT-0Mx6%la?&6Ue}x|}faT&yv=#^(lhQ+*2< z2i5Z>!xghAOG?30i|us{i>n4ErbL29_dFbQ2$6nRs=jUXK>L0Q^)Bm|HN^;9r#eXV zbvu&mp-eSV=Xj9+L|0{*1Y5P^AOln#SZcalerw8xk|vMZ;>wKh+<}P;Gjl}CB5jm% zVIln-I<=I6mEw>9KQNj3nF%CU>A9iT`b|SwwOSl2$0XryrJivzw^U!gbF11j@;~ee zuC=&7MVD4Ye{iqc#Mf|qEJe5B#wk%%I<`UVG{AV2R} $jF8kc8== zq)XX)f^{K{tiuKId(D!K;rj&HnE}1^>DL>U909W EDID1*WmhC#(vYKugq<2cwA&^W{}hj{G ?E zm4vWk #F#KQaIU@lh8!N~E*(Sq8 zz{$Y=Z_UjAC(``q@&7-k|F+NkTMhcZ{5ZungDd2$q0{1Q@^XX>2T31X<3U}ov%s^= zw+bf|2nKa iCz@lsh3wxNDT~BU){HWfjs{8sbKl@Ivmm%;rWszkUhX!+s zOamW}LztYPf=B=)fH{G4ayBn>a&%4~AGH+JxkvSlT)c228ekWJ$sXxJEzO}upCrjZ zoqX$+9Rq+ NDED2 z-R~4@E{%4tfE>aA@<3cvxWG0Z&(=N~g6V*=Lm*jE(|}51u;;S6`+SJM0X@$UKqipi zxYzVIJAnnY{5gUKwZUD)P{-h*n!q%LZb$)@IZPdZGHPldu!dJ#sCs8dk9)|r-~u;- z2l8NkDoEf%k|p4RGKe3m8SqOuR~J`9_rUcpyTk+cj56J{P)!N$)eT{TYP!>&i{wBq z;a>TT>!G`ovGsl&9s@pqU}=iU{(JXd=yq{9>kQ?|*dmI@^vUGN@BB>E5!3 zyx^))^R&~O`SM|{uDn*{I0tv2dBGGwLbrdKFFpJp0C1>)__eyAa!&0i2Ruz zw4d17K!E^o)JqtKa1BAj(;pFk6k(d5LHY0-xF@jRPJE7tP`jUBAKs>)BJ{A38M!O` z$No9=;hpt?X@4Om@^OEvl9QZn!Cq_c9D!F`Jve~{rpq2b {KPs2s7{I@Oun@?4{YSj6ZU?oX0`BmWupRH6g7W!#f6Oa?_U?a1Zg&*F z?MZ%if(|z?FTWL-zYBkU$_1YlxNCag@+2;f-&ugD5af-4KJ=A!NArcLj||N3dbmW@ zXBU1;^#8s5-WDm3###JjR0#2}c=t1w%73)pV?K!h6I{;OD&VhA1;j=`e)4mg2LWsI z;o{iJgM5#Oc4%q$&0RtRcWH3v-P`K%21H *65x aAEW2MSqq1uKv~^hB5RiTvJpHCfR)R zyr 0!C&U@`%W 5J;VOqCBjk %AHQP?fl1*i*@OD!ZxxHs o%? zuUnIuZSZ){GHiYSwk@sSnB%)9r`ws8kx8K3Y~C`5tuV8LkQ$^7xgj(g)D^#hQ;*im z!Rpz=$jl80W!r<^rpZn@W5Fc_eQTtu{KFY_d3yuDeAV 9Md9FFr zVOCjL7{`_sbR{zu683?QLCUqxV_){MG`l+Z &&}1<7eVXNK<~5)PSR6HZ zF0(IneU-j%VG7+*JXEVaAk`zkO2^!C5NG=v`AS&ovamW_tIyv-Y96~ffv4G!0q?Vj z_*hi>w%v3;7l{;Zh=QU=29)o7dAt-2OgU53bi9C )T=4t5s2E#-NNn zQx=eZGObzal@!z Tg1CxT`9ls|68oNk2f8wY7?2I&&cGUmsDt-XT0UxG z9~ww((x5HXI7&s2ZtV2TtgxSW?{^JgWB>CrNiQJHnK!(&r{2B%Y>Qk^HW>lEC1EuR zeU*0?=j3GK2La`ZmCWQ=6)l@Ws7Q6+!)IJa)wEpmUdXLmQjU~EJoZFp^iuM^h?oF` zB9qh5*o1ljO9YQGUDrnDyA*>uQ=zpjt82!uSG>hUC8HbuZLPnX!I-^OH|bMmp|PwN z^ix4jw9_5V2=q}RG}cxrMc>08y@CAGTFg81P$x1&` $Y4cs>Qs*wo(%b^fF^c7|oOG^9y>D>aWAbBVy*ow-MT!k##OU)&p(#f`U6d{=@p zr!B4Uv@Et=8E~pJb@HY 9o9YQ2Ng{2y+S#CtGrUL=3Zfxgw#j7@2i6!P%7K#x^@a-N#k8N6U53k zGPQn&pj~8@F{A!(pOnu|b=6%Fi%%NqYl6|j8V&6eQ08jo@74HqO90(MZo6?hp(FT2 zy?8&=GZCKKE*^;mu!Qn^Ds>adHIePX#ok~<^7hj!ylKZ1C;mvzm}GHj!Qb<4?mAcP zmqd)e0yZ)D=27tksakSq7fGP+%LPWPUWsl#u?o&CrU`)9@EB7em|d?SocaEmazgu(ZjBY= ?Q(y`E`Yo)&codIAxY-Y)Q6qzY33^58SwyHDvETm@q_3? z>I%o#AX)4$k|A%3yzeVWO&;6br|_dyOw2< pSh*4{5rD1-8E7`VdU zKqdb?sZq-(>~S^=jk{n5Vdf6IC1RLIaE1DwRf~xpOeiMO=Kn1OLOC{`$RduAI8oAW z%6|heVIY!*l%_zN2$D3f4Gjx@08EDEUEgrnHh-&Qpu8lpNXOG*YZ#6#KO=g}uEg<} zF?QA@GzURigt;{2T&NM3vABwI^o0c^c_eDdZ9j%=`zS?~Q+JGzUDKh&rd4I ~cQYv$QLdCLNeDOA@;qNzM=JtHFb<{&!*I^_snqe|cshSW0kY+0LZX~U_qhy6| z%@7;PJ$8LL-2Z5^9Wv K}x#q6q z$cwPl8O7+sSW(Qt-$HfQhLBF_@#m50l8DZEAG?D&yE zSirv zxEg9dUrd@pQN$Z%i4a1gO?~=956}PN%3@#y_)Anu(o`!N*O-@vIzdpmmU&ux_vYSo z$+DMJ2r x+l7{E>?Y8>1_O*MVJY;0#``aV zU)Fm{$0rp~ZNd3dt6I2NLgRs!aLv8^5(tesu2AWQlYR|}1L2_<0)caDIa%AuM%v7s z9YdVEH}t#i@1 J(3RJ=yS n#?$q`#*M*}>IK`tH~3B~M}?;+hh9{#Z09$=i$Pw1M%>JEooFKaIm- z=D J?@%H=$mD1GB=<)_u=E$f4fusyFi!if|2aNG6F< z;jQ~8HsOtCEMn0h4>vL#LRv~2ml2Ew^5zcsoiF7jfE*^KzRYBiz}{-vr`r0g&~Yeg zm=?XA_lC6mE;=$+Pm5Cvhk-AE+CM-${S$6d@E_JdW3`|D7Ysb;TWU&xqGQb|35QO_ z{RVZoGEP0)+Ko=UR!@C~S*y>&axw{vIkECN3#HkGj4_JZ0LB?5f_mpbN-C6=RAiq@ zCk}nLnW&&l56>ozqLISjz1;EVOs>9P9fE#0rPw~zO1`Ezc(+HCxM@v0eTdE?9UcFG z(10>7*cL0EJgdg&okbg%1-5QOodMq6$7qDsOdNzKX=VkUKA9Dl^`Q?3r$K$a$vWsD zHnf$fU$&jwr>8@+qihJVCsAt1U+F!c*|v*B6lKya1FX5r%fjP&<`CmP&F$qhc(>Gv zGV46x$wGK0)SI=fpgIzM1_ vO7xt^`IQ9{%F-TIm=;}&| zymG%T8`@%OiNOHdLq@H^x^FU}KV2?efa5aISmKc)7l}o{1eJrtsBtMJX5_t@nbYZ9 z>h8`KI(y9D=)Ko~gu_xsmpN9 } z7#Eo9-&H9FaU;83l8vzSf3xdLzNKv37K^t0_~h+bnT`3DDuK=eVFHYp zF4-!YlEhSgD$PZ#e^Hp~HZZ;brxW@ %8I1B%rR0c&|>4w4-0fmvRm@0e6*JzI7Rzxw~ya_o; cKal68a}`G)gs z6 W |j%)w1>ok=QSV?jmhOVb2Dl(w1K1$O*ZEPK}_|566!%(l|uK^Uk+ zv(Z2Ig_%!> C`cyP8o#8SwRa@layxo+nKQ9$VN4HdT^2S%}zV&qvV zi-b6)G}#vWmag(U?Mi0QX?MEC5JsAZOoeM^s#=E(w^eV{M|*9t{o|;L9;T$io9j5s zG5yuDx{i)qfQ6b~8KuG2^GVNabv`;;Hk5WDjo;OdO!xbO;(s(bU*WuTz6S?_$w0y9 zFQEMGkk4J95qL%rntBfKlmSOa^p7bYkk8J5e~EBQCZ=0Y`a{o_4j8TPK|)L#RWC!b z=OGfqU5qg4!)#)NZyin0aJD#~)ZNHl+~L#-=uOjDU`ePa7@@pe{I~8F9}86#qbT@V zGxL|FNY-LCffGfNHh#rR;ek1Nz(IR!2Gn22&YJ;T<1;sqF~u}NPd?Uh=!-IsRz;+S zSIz$Zo$64lEI+D$1PuS)d6FhXxQroCcRm4!>E0b(C_Nq}^^_;o7?nMXj-N`Zv2DjV z6ilF4j*&kD1s|gd$A=9q74Db!BA4j7M}JU|wc5}k%D=2_q~)*{MCz?}S6bduQ37n} z9@E`6xdJ)$uxh ;u8f_m>f`G~edPEF>#IN= z;83AfhqT{LZLPN}x|My5>NDwuQOGeO+XYnldnVC{1Hko6b*2IuWeyB$fcYG$g!B#5 zRL+*Xp1Wkz>gEU`TI2|PpJnJyOAg(G6ezfPTe&r;6&)ZIcgKMSNf->-K9rMHdR<~p zIqS{4C7d%yQb=&GR;Z`8;p~-IFKS$^>mf$uaQ$^mW>%ASfLI0Efs4?tZ`0K#uw&!1 zPeEgX+sOYrdo!5@O%`}bGe_|&c0{cO>OIhC`bnn8t=#BWbd*8XXF}uw$8!!^>Qi (^HCNX@ z0!9yJb))!dSx6}WZ9^tW=}f3Qg#-ycITlL$F(IN~&Up{w#^~uts;f3b;e8=uXj55K z^AsmOriC}rjf0sf)$8yIv0Q1N^o_s@Qen>xnFcqKBadWdhu+Wx^*h7t$Cg4KAA`hf zAA66QW@<+!m5Oxg!ERdcoUoYJ$hUI3EWJykBy&E#xjBw;RGYYp&}svB<6=J=mz|c& z3~+`7lnfs@hlP$D-gn2OC(3Og{@{iub~1ga_>F%VU#tt6O|s=k3`cX~iireucT6a` z4=zU8_kj?vluxs?&9f(FsPmZxmcx1bHQ&Bct+9+La3B$j! K7l>*OnkvBQK z@QLpb3f>=42z%v$e<*Sv2f3O$I2+{8$g 2(d3tN&a^Rzs32@tJGQt$fKzldM4-(ZxF|6puI)MRBw`zXa952XvQIIbAXASHMiCBwZ0&7ff{jZp zn##+WL=HB)0r$vpNiTV)3YTJH%x0DxFY5V**!;v2=8Sc;I13DJ#Q-{e5$9;qii+S@ zF^hPQn`3c!P96g&r(WV5q!N6?ROBtPlwjlq3TwJ#Al`sTOhnmFU){ix2AAw^Ut;YX z^bD*yc-_kSKm8*yK4577<)Q$bq(G`O?7N}U_jaZa<}_?ZWyyrNpG0X^bdi*Njf$y5 z)pS@oEy+_M4$lJ<>S<-pMyg=!6}2Iy`bb-mkJ9w5Ka5**{2N4*9dWuEasq;~T}=y) z>6!Db9S`+bMIHkj*pj=&<4IX_9%@RH4Tl-`16<4{txT!aP5uCjN#;IL`a#)s+If0n zHt=O&Cw`5-tXFu6v~Vg gN^m70`MbWhF8-w0)qLo`F Pt3qP_9kFZ9l#n6UFEw&u=QVP6<2}YT~ zgiDG!&LHy1tz6Mi-3Q-we=0&H%p;$A5S?ndQVbl%=7K9~4C+E8$KIvfq$)l}^!s+< zMKWc!@hTtU&kye3jAUmDSfSkj4WpT$tQPWkm)sup;yj}kR^J!?0}R2!-u}l)lVNR2 z)Vq!LvEtZto9V`$FEt}D9#4rg+OY#l!12x*2F|s*YHU#YJ=78GilSbGXF*?H1)KpI zK}@IxpUz24yr M(*w*p zw$w8L aRFT)UOMhuXd3FU+E?T# 8h?H&VsgQ6+;4OI zvq^UVGSSZ krYS8`63u|>sTskgnWYu-rzWZr2!8e lo&Y=*e=~2>_q}j(rdLCSSp(9V3 ;-R6zfLaU(3EweQROd)eQw~L|M$sf%0~m zDN6-CQQ?~xCQXIuKhdCYyLAoSYXgv-naMdrwsj;bx4dWL)}PoDC$v)o2D5zVHm%$| zKOX9s2~J7gy&-u59HogZRKg}oEX%dCa*NO~(a~a~$TfI;!H!}WO@4O6{Frtn6=N}P zPN?c1$_pGsbFXYBjXA_!4*Q7YswG$BTz(P*-3qv)%FPA>j=KIKi5M+ImRt;F2E%VU zni@H*Gh=sQmjhyf@@9)p5@dSeJE;&U`)m<@ 7(3> zxp64zO&;+?=bGFC@GlOIlmgJ~kyDhZepap7g2$N7Beo)mY-$0I^GNsu`@yG5wyyHv znR4IrCsB{C0(AyVG&8jQZ#aHB;KMo@FlKIz@f<1NK=(%T(1&!m$mH7%5zG~(HDUIJ zB!Y#j#UceBdj{Hb@_pU_E`%1Jnhd7>l0Wvox~N9bmhd8jqcp*;B<+&Az!^E5eY YB2p}o#!1~6SdwcKyFTclCm3q8#o9f-X%9j z+XY&bEc1`z@?tx=N}|puoh)a3>JWm8xjeQyUB>+;%@x8wAUznF4xeWB8=U(n%a+u{ z|ByTnk;A2|OJAk4#Y~~<2!i_VkfZXIs!1Hu%JbZAl>oP#i4Bew`sjFi3HLC_=Y^Lu zsh @p*5boOKMuM(gHT01*+Kcmj#dqr+d5;42Q3&CS!TZ9Is)6amxM)RpKd?Id$Z* zeC7$1ONs2D(Nm0OhdEok?~B{yJVt&`b9#}@kVI0{mki_LR%QGg0$+8~%2qREcaU4! z!q0Takn*0?_lI3PbS9Ldad&U&UI;|nf=(S w<)!R^5yf9tZv4nLNBUMZ!VAJ)I~_>{urQvKkJ o+eolGy2Wxb&W7%=c#Sa%Yzd9c zwS4$|g?TqvR5MRV@#aWBV2uYMor(oGt{o?)M{je|vgb^?n)CgOvi`XGvgky+s3N=m z1b-AeYW2!y8qR!>5c;ff<)Xh%yd7o^#(5|(>}iW(cnB467rVPtRehh#3yIF~K@D*C z%-3~C6S~&zUc>Z1^1z~sb)f0cvmhg~e1j$$I(j7&NRZ}Ar>%D18jX0bXu4g8AIC6_ zid!)Dw m}6cGZ$sOQwsf!N^1mKZutJnDGL27@#A1-SNa&& z7TwhHpf$EpV=5Km*oG79x78qrg@`qf8xhr;TMl(K+B?@fme$RQ+YEZ=R4u=hlAsy^ z jkOFmknMcbsU;&L>T>2K&aYWz^E~80RU<0Z&=cV(xW% z4%!gkYxEiSV1GN$jAqsyxiOB|aq(J3-hv%-6 +M3d1UK&lJKznTeS}G#Y(j+Yr a;j%l7{5yXeWR%y?J#uDj`>l2Tj77NZk17o>_W!X=?Wg(Vc!Rgw)) zf$tw2oE;t
w9Ey0){S%Ekje`SDo#LTY%05U=<09l29#*v9m?GO#k zAnTp(8=M{+>VeiZH9dZdpq%zWCDXmuHG$AFfSiaV@@aTWIL9XdBcqd>*L1V~KOmOV zR>0NW-CJ<}nV_Qh0rc!ArLjO_DjYWXLpq|)D&7Iy<697CC*KD2mSEM}TiI{v8GL+v z8M64g8G`ic!p(3%3b-6L0XXyMX9vK|KwnDCf)mTYZ|+vIcgaBTHvcItz%GbnI22Sc ziT1AhcSiBf&OXc!ZY+UafV;&Y%crP;l5+xL{i$faO8SA`y10PU$yfcizHPt5NpQym zV&rCKgb?IQV|UnN)q!Miy@>?1qyr~rrec5%FD&oF3oCkP&SrL&hn7comapXY=a%Jw zl?y9@mfB!`Yv)$BMn)%QQYKbLf8ua5ejOfH&7~w@9pi&R=ND$sf8xGK|LO*u*!#Yk z|9m=K;|b-)_Wlyf;7Y(w2~5^IxErs!G&{OMPD+2(Ji3AXeon)jLF}0t8SS4OfCJ?K z3o AyX5u&SP^*tKC+tOTG zLWA7>q}=G_{UkMx?Xn0yz6Q;M`~cEW&TO3mfiic4?fM5NjDKE6K7M&`{4>9P<=zSP zf9isN`mm)s0DxbrvUi#NUlI=2`i9pZokLrv?d_dbLFA`a*x28yO874u*Ac-Nj9;20 zR~BCYxRM0Tr~jtqA+^~dc(Y=IBTL(ljqVTk+Ly_~l`UT2e^hCf00AA4xH?AaZ$gi4 zTE{lvaOl~V{1**)H}$knM4CG@nD%F#nO&YfpdvcDf`fMoK-u8v1mdH$ySe~!_I!#4 znx26tWM@wv(01?zoJxfGCSaEwjoMH9F}7eZ3~q?=DYpe=e!n{mYnb{K-mV2St=t!h z-%tCQ#R)X+)OS8pHfZnlSn-zS0W>Y$cTN}dATT@xVW|EoXOFz>zoY{e;~()lQ+EE} zB&(OK9iPl!5r3ETjRS*m7( *;@cGeT S{Va#i^HW+Den=uJcsR-X& zux2MGFOXg@!!(gw5?&s^Nr+dWy 8d~P@1T0**cE}SRt?8FAjGYt=%7}w_BmRlFWk1Pb zbK4%mpq+dQRB^;^^>NycjVF1CTR8fA;ko-Hfd6U{nNa{6mr4^99x!O#UL`Fn2diB8 zP=25Fr=~XgRyE>n^s-dCY?lO2TQyRP^h0hURqh8ajp@OsE<*X;6-1Jr*l{%TIYp0$ zs*fhh%H^R_B^El%rq?M #EN4qbelLtuV-?I&(!)2H{gO-W#%fxQt+X%WZKAq% zqdWqYGTOx)63b~X<9eGo(;?pk-`t>&s_*`%tUXXCrDh<+UiyaKxfv$tX0^nziFhd( z Q#i?P&J4Kh8pdUT zP9f?ft8NgFc@A_8Lxg(fICUix-Y+Z@FtgxiJFChfTKPK-fGjCXlRDb7hy{g-u9k-) zfJtC;h)@KHhH{Yob!qmF^2iDvGY)wDTM>|c4${F0nX!dYz4eL%)YZ)GhLfhX5DJ1Y zfJh+DBHPm}fs(yxtA!u+G^}e`n}b80@bZma7Xr!a@|Ly<6ay?Rr8&hZPGGuw;9@a~ z8oI zd_NM4;~ezh9T zx iE0KAA#4|^?s!)bC)w-9}%rurM)8>oeuWAZl!ajDXP>tw2m>S!zpu_rVQCeWa zsJ}PP4d$=21kq?j4i&PV_zzETQawhbQB(BNAqH!yPYX-fiic=|ol001A3g;2DT9__ z2=|704zLIh3#TL+CPG!TdU8e5RVk+ig7>8hz(~ZT5aZ55UgG@cXH1U5opRkv_n)EN z{MLv!8hyHiyW{Do(?Ig}a&CcbKeC-EmkyoJAv_q&(g`v@Wb#>6e8RgHBPcG9z$2O$ ztcI-XpQ|NAH|n3{n fQSmY&t0z4@=lT^@qh?w?uV zSr3*^>d`K%K}`H7dj>!>$`I4Hch@vOgiZ-+W9M^59vdw_!1xoDgjc7rB{Y|~t?}&x zlJ8PGf!;hz_BXygf|;pRG6-mVVL@Sl$Mz;Ow~TDP54=i=;vng%`x&QL{SB$Hw;mm! z02VO;eYrT{er^e$8J3!yqk{wyF|@;^vKB3i{Atjxm|}lT$sT^`f}zMcy+)i>KJbM& z3Mk(RJOqP(cl;EDZ06VDBBtW)t9vLaCR*h^AEc0%#mxD~WUe|Y^S!;!<|a(EDy!L? z(L4p_JNOGyJZc*^%)w`9*%Tz$d=hjc+6D72&O(_)o@9!mx$>WSS*EHfxW)HKMY^A5 zw@~JyhwlmR8eSOprzNWiRM2cp_rAjV(q$!{Hu8Y`S|l;8nMD|(=*iGkVT}y|LBd*p zywhaUefL1RiTk{%1zgVlxFn>>eLkmsgxB?bqv07Yu*XCp8e$Mx($cPHz#K5-s%~y? zA>|23kWC7~Peu_Xwc$bNW&M)Nf?sXnV+BR(1L)HldUf#tI$>1OGCm>9M;qw402ofu zf*2NxZv{s^7sZHIJZ{rF?-g(22@zy`9k^!eY4>ZXia(IVOJ7W5!s@{Tt1Z~rMzKSA z 2^K3hrUg;r$lZK)lE+#819_-t@X*V_GD=onv8rptOC8*H+ zz_UYbUH6OITEoP`_Wz1sLZjbey@!w>!*gBVt5Z1J5p`Rd6@%)C}wIAlP|To1!HZB&(w;vkeo=F2_VrZrlV z;tG-n6n0P`qFgO6x|v~5D+xEvn{;XGN}^+O;W)WSk|x?P`RbpBTq!Or8(tcY-Irlw zpe{l1vX*Gj?p+D6J<1 tvja%HL>`&waw zkM$3>kZsb2XbZjd7m@v^Hy<(e$zl{Iii(gf9IVpnHh8D&Kt;pWDEopm1xG>8NpK}( zIV$|y1NC^$^SidEqAiUV3hpUm#-6+~xmN=Z6tgIsV=jztf`8YtO~%OcvWTyAZPVml z9hURo`# ZMC% zY!Wvdu(+%|drGGY6arN#MtEFdYz@gm^AMu5@I1ybVVY>I4wJMOhGn2JK-sM3WQ_aO zA3|0XFHC_P7Kxmp^bIiVW{l=PuDkmc<<$v_Wc$=1j?v%CA*C%a{;1OznCmHAVNC zHOjEJCMAiNA1+&mWYUI^C7Nf6u2;v*;QPEoCn<_A`lLVTXNvr;k+S4Ag)p8FWRUYu zDYm+BEuzl ; 1EldcI-EBoFjUnSv^&)PSGy+p#yzL)>d=g-0L{*qv~4qJ{ie2 zB4EKNlA)Dv9hwLA({^O+;k{VH1YxtvA8qj-CxCO7A;fXR6mLM=JXrdIMo#`!!<_A$ z^B|P6tLpk2cw@T5MZcRAnK;uYpGF*LP;g-*xhW(0uEs(Io(($9Fw=67@w0n_6`=I6 z79%K)BndX=w!N7L30JWFl_I+BIC|#Gs6kMzilrHDDun$ROfXg3mRhYIMBM;Bht46R z_a&!lFST4Ai`;jQfE&Cz(*x*lQDN#Hf#uYd7Hcd7-L_3YG7;n !`46F{nn_(GxIns#f&x9Xp&e^%@POhoxvq1mjxh4n))dmH&RU%tm9A zsYIhY!^d5EXN-bRf0{Yoo5V&hyK)nnpj4&T_MZb}L810UmcJ22GTWQTJbJffR9aI( z_No4*pzq#gZ`+< Q8p5JuR;EsirFdG1u z&Ga8-g8A)cI a;HW^&3 zNjr@qd#@vZr!Ud8M$1(kBR+MFV&(JdJ@%%)XS8%_unLDA=oABM{x(5!GSD=rxw4^9 zv?}6W`*e2b8Mx2~@$XWPr4O!rZO;@Ri7CA^#RCwaVIUjR+0Cl5swdrW$fs3+VUAfl zqIgX8!9be^*JvTL4zHc%!#M8d*oLItx7XKXg+a!6^M)M?j+n@tE6vf?r8Jox*+JpR zI`MhT6vrkrm736 R;73AUJs_{wSISRlqX-L%~~uncS MHPNyMA+{rlzw+f?WT$qs4<1v%LAw2~{whs$^O ~o5T7{* ziy7b1qVzE)M^UI#=l-cSKJ6~6&x5@K$D|4;e2G}n ?zo}yE%a9-dY^uM;2jVUYMZtxvPcaTyLx(65t6m4DU;%( zcxa_qc7W(bVjaeMl&3p7J+;}p3Tq-_Au_F`f-O (#`$VbT_2s$AMU0D#mAPHK3m)MF<`^iF&*^@K`F3gG$fS_WiLxIQ=zJL|qxH6{}W0?1p+~ea!4mqUB7E&V2RYy!hN=8c*G6aRq zs*qZ4Jc?WIh&ng-pLdBvcH-9>t>>~OKgduo2-9MtA0F905m)tDlkbJ6QmIZCy#a8_ zK(6Y(9*lWYx2?2uOXpsM+!(vEWas?#)IVK)S=n66M07GVcaxavBDhruQIyI&7sY-M zGLlMTcdfpxaK?`{uGB>@W-xxRJ1|&0*YwAzIzHW$%v_F1)5OQPK+&Yrw6P%N`yLQb zQZ7oB57T{p+H^xpz#P;$hgWYeF`-x8nq>N*1G0jrc&`e_*}#fx9CntnwiXe1GX#0M zE#bJ$oDbjX^nGMISl>)Ew)$k$c$Zl`xGaeOX8(0x6Q;GtX5BjL?rhvyP@zRD=2Qku zf5;tlpUKvg(3xV;M|DhSf$h!(ia?|z7C|T~4c>auh#@kVo#23h>Wz4L!Kzqf#rP7P zBg#5!Mf`Q;B`%qg#B87gA@#nEwzc8ZuH?REgf&yP93MM5Lu9(}b#imG Ng2ku)h4(INXVt*#8#H~ZF$mhFcgD~A qqE8h7Ac z19Q7#sSu~+%zgttSwqD`z1}b__$`xLb=Bmy0|g_Q=cUficG@zoNe!27e}^J~ F-SSxT!2sni_^fLKg(_FE@xlnht9hH)CU4<~NXY65Z z*yz)Txw4e{@Wb&2G>Bp$0yI4{)QEH?uGu$C(tZ=Dc^Y#S?XisQRW}Uqy?}2g{zVoL zl)$<_-6{lU_U1s DcrjPO^tnpOWk)1z6TihR95#>yKjNuq(o6EX2PK9J~iyThV7Eoxw2cnL}t~x(l zk^rIjsD~D)!Wb`~HZBkRZAn6bpf4r~ni5s#wKwBslZGT5wdxh4`mxtk-po7})<;|G z0ngq8`kem+OE}xU+-dmNwloSbt`g8?Q;Mi(`h8p0L_CKkL7WI!3Vq=vl^*{ztJeZP z!Ab@5hjnQ1i6rg0ckD8!zHImlQ%e8Kd+9|rejBTTwa;)}8r~yVQ13PQWF-so3Fx1U z(AZ4vYO6qb53S@vm@7U66^rV1RFYH>n~Js&O)m9oD;)VbZ?Km5n94NMLz_13q1e5k zeurXC*$*^^^(WUOSsTkLqazu~wYrtCiax;wA2g<4#E~|BXDf?|gTn^I%5Sd^!vJrh zJo(iQVQenyrm*c)GnyMP8M$!gAC b2mTgeUTcK3lTzkiNpXBOnz^+ch_I<`|ho z9eQ95HjPov<}TqnZqvzbY5AYu64j_6CT}awTT%}~zmJ^Y4_d-U1FNvBjHtrC@61;( z4u$slCb3*}dR2{3@CW7}D|((f`!<1E1CE%yTUp?Hn2~XXCtUw(etfZAJC+ikm?YCE zOT$^ J8K6I+o z4_4%pB>5EmwUfJ`y{9abJl_lGg1i)TTP;eMAv{&J_8T`v`r5AZ_ERCn9JwL&olQ4l z^g>4~lpYva;`g9O(S#mLUW=~t(*Eyjv@wi`lN6 r@J^TFRToofRJT#RtH=aUChlfz>zW!geT|Sracjer? zcHBd;eD0NL;S1D)!L>Fc#}ml(dcr0cuA00|0*!Tk?Eu!%KEe_eIxIVv!O3&PULTzm z0VtIB9Vs#T5tAl(i{Y#dqIfh|f)g%q(Be5W+E)9&m{Top+2?_d fGW}vtX1>KnH#xf!bFBVkF%Sri(%ea@zN^np$sLbj zKJYAyqJ1LY1`vys(vHZ}Gkk?!<%x;m^*W^>;qR;Hyl&)Lk}@s|#~|^s=`a3)1Bc%y zw%g&n!(F=uVB7fKzusu%e_CY2s%L~HTN=UWjiCPE%$LsGo3vWB?m40S2kKOL925xV z$u)mF-!eIVC9H*C+)4x`Y|+z%LTeif!hPeecP20!-F=PcZ ZynQ&%jZ!yP5QYx;$3OLLxpFhWf2Y!7~Z*gOo$Aifi^$aCG8J|f7Bw<17@_IyhEqIlN14~B40>@{ zY_JvXLj^R|wxNnQ9E3OCa_^N>zAsu7nd;ZBsq;njtW$MJTzuY*C>E+228tp;)+VcV zeBuUQUXdD-z;>duW0W)cqIJ87tr(iI9*~E7RNiqD-aA`q_lJ360He6rjpT_kfLQE& z!gk99tmY1#28yKze2Wfa@srz$3eyqnlhI3 +h=Jng`eJz0I>^X>eWU#GxR6zxWdHI$rr&Wv@L z7(Z3}=FVVv&+tgRqC;Rjx5^!^9kY~$lGeTE(G19GU3mAxEs5@5EA2)ed~GEODmQh< zE>Y9e5cpeMpPG1Qmv08Hg*KSk;O! RTMx+pS gD8C5z;}f0-9J%Fvc;H*v~79cKbYizUP^ zneIjrU%{v$s!y0YCf#%ap!Y(-lzc7KdwHjwjHrHaUPMBAvs@z3e8yhk(EvtST;mJ& zTiZ(UNQO`sy=C(@eSK_7JEAeexOR91%*w7J?O?WlYN!R{4D+MnAKa|EsAS1{E?-`~ zi)*eP&;aty^>oH~Ph6tg59cC~Yq9`lpGnhe2Ng@SFw) SVF30uwb`dbK0siusl!-Kqc!EDv%@%t*a9oyD&CYhPmGMZ>xjiRv z)htx$il49ALaeL+SOKH0}Jo%FtZZpbG z4^imE@vKXQHQ<|lJ`_b$rQk@{Q2P+rJ&(X)Gyx2OadDB;w8lD2#9s4zlU6 %TW!m76Ohjyqo{>r%kg0LR*UZaOI zk~~(hIlQdt9DHC=9Pf!du0z$Xs;0-+ClvY@wbz0vZALgx$ZrpZkTL(aB2-r4qpa*c zMg%gIz3E!TE$pqiMb<;;xyh|XVrbbyH4kS}P8okkE6kd8;>#zDnbpo33eRBStg`)2 z?nUJO0P4#Z``G{}#w#&_23**n{H@sDq{;0 iOFa3dGs zN!3b$_RgSr47@rjm{kD5sg +Fypl