diff --git a/api/next/76133.txt b/api/next/76133.txt new file mode 100644 index 00000000000000..8551950c6998d9 --- /dev/null +++ b/api/next/76133.txt @@ -0,0 +1,3 @@ +pkg crypto/x509, type Certificate struct, RawSignatureAlgorithm []uint8 #76133 +pkg crypto/x509, type CertificateRequest struct, RawSignatureAlgorithm []uint8 #76133 +pkg crypto/x509, type RevocationList struct, RawSignatureAlgorithm []uint8 #76133 diff --git a/api/next/76608.txt b/api/next/76608.txt new file mode 100644 index 00000000000000..71226f23a2b987 --- /dev/null +++ b/api/next/76608.txt @@ -0,0 +1 @@ +pkg net/http/httptest, func NewTestServer(testing.TB, http.Handler) *Server #76608 diff --git a/doc/next/6-stdlib/99-minor/crypto/x509/76133.md b/doc/next/6-stdlib/99-minor/crypto/x509/76133.md new file mode 100644 index 00000000000000..af7dd6b31ffe40 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/crypto/x509/76133.md @@ -0,0 +1,4 @@ +The new [Certificate.RawSignatureAlgorithm], [CertificateRequest.RawSignatureAlgorithm], +and [RevocationList.RawSignatureAlgorithm] fields expose the DER-encoded +AlgorithmIdentifier of the signature algorithm, including when the +SignatureAlgorithm field is [UnknownSignatureAlgorithm]. diff --git a/doc/next/6-stdlib/99-minor/net/http/httptest/76608.md b/doc/next/6-stdlib/99-minor/net/http/httptest/76608.md new file mode 100644 index 00000000000000..c67f30d6a69de5 --- /dev/null +++ b/doc/next/6-stdlib/99-minor/net/http/httptest/76608.md @@ -0,0 +1,2 @@ +[NewTestServer] creates a [Server] configured to use an in-memory +fake network suitable for use with the [testing/synctest] package. diff --git a/src/cmd/compile/internal/importer/genmeth_test.go b/src/cmd/compile/internal/importer/genmeth_test.go index fa827a7adf204c..ffcc099cc49f0b 100644 --- a/src/cmd/compile/internal/importer/genmeth_test.go +++ b/src/cmd/compile/internal/importer/genmeth_test.go @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build goexperiment.genericmethods - package importer import ( diff --git a/src/cmd/compile/internal/noder/unified.go b/src/cmd/compile/internal/noder/unified.go index ca601ef9cc1a55..c942819a802878 100644 --- a/src/cmd/compile/internal/noder/unified.go +++ b/src/cmd/compile/internal/noder/unified.go @@ -26,12 +26,12 @@ import ( ) // uirVersion is the unified IR version to use for encoding/decoding. -// Use V4 for generic methods if the GOEXPERIMENT is enabled. +// Use V4 for generic methods. Revert to V3 if the GOEXPERIMENT is enabled. var uirVersion = func() pkgbits.Version { if buildcfg.Experiment.GenericMethods { - return pkgbits.V4 + return pkgbits.V3 } - return pkgbits.V3 + return pkgbits.V4 }() // localPkgReader holds the package reader used for reading the local diff --git a/src/crypto/cipher/gcm.go b/src/crypto/cipher/gcm.go index 88892e155551b3..f2cf6248dc8c9b 100644 --- a/src/crypto/cipher/gcm.go +++ b/src/crypto/cipher/gcm.go @@ -23,10 +23,6 @@ const ( // NewGCM returns the given 128-bit, block cipher wrapped in Galois Counter Mode // with the standard nonce length. -// -// In general, the GHASH operation performed by this implementation of GCM is not constant-time. -// An exception is when the underlying [Block] was created by aes.NewCipher -// on systems with hardware support for AES. See the [crypto/aes] package documentation for details. func NewGCM(cipher Block) (AEAD, error) { if fips140only.Enforced() { return nil, errors.New("crypto/cipher: use of GCM with arbitrary IVs is not allowed in FIPS 140-only mode, use NewGCMWithRandomNonce") diff --git a/src/crypto/crypto.go b/src/crypto/crypto.go index 51275942a64fbe..cfc731960a9643 100644 --- a/src/crypto/crypto.go +++ b/src/crypto/crypto.go @@ -131,7 +131,7 @@ func (h Hash) New() hash.Hash { return f() } } - panic("crypto: requested hash function #" + strconv.Itoa(int(h)) + " is unavailable") + panic("crypto: requested hash function unavailable: " + h.String()) } // Available reports whether the given hash function is linked into the binary. @@ -246,14 +246,23 @@ func SignMessage(signer Signer, rand io.Reader, msg []byte, opts SignerOpts) (si if ms, ok := signer.(MessageSigner); ok { return ms.SignMessage(rand, msg, opts) } - if opts.HashFunc() != 0 { - h := opts.HashFunc().New() + if hash := opts.HashFunc(); hash != 0 { + if !hash.Available() { + return nil, hashUnavailableError(hash) + } + h := hash.New() h.Write(msg) msg = h.Sum(nil) } return signer.Sign(rand, msg, opts) } +type hashUnavailableError Hash + +func (h hashUnavailableError) Error() string { + return "crypto: requested hash function unavailable: " + Hash(h).String() +} + // Decapsulator is an interface for an opaque private KEM key that can be used for // decapsulation operations. For example, an ML-KEM key kept in a hardware module. // diff --git a/src/crypto/ecdsa/ecdsa.go b/src/crypto/ecdsa/ecdsa.go index b336f32eb69ef5..b2319ba0ecf9bd 100644 --- a/src/crypto/ecdsa/ecdsa.go +++ b/src/crypto/ecdsa/ecdsa.go @@ -450,6 +450,9 @@ func signFIPSDeterministic[P ecdsa.Point[P]](c *ecdsa.Curve[P], hashFunc crypto. if err != nil { return nil, err } + if !hashFunc.Available() { + return nil, errors.New("ecdsa: requested hash function unavailable: " + hashFunc.String()) + } h := fips140hash.UnwrapNew(hashFunc.New) if fips140only.Enforced() && !fips140only.ApprovedHash(h()) { return nil, errors.New("crypto/ecdsa: use of hash functions other than SHA-2 or SHA-3 is not allowed in FIPS 140-only mode") diff --git a/src/crypto/internal/fips140/aes/gcm/ghash.go b/src/crypto/internal/fips140/aes/gcm/ghash.go index fb60352246ea86..347b38a92b63de 100644 --- a/src/crypto/internal/fips140/aes/gcm/ghash.go +++ b/src/crypto/internal/fips140/aes/gcm/ghash.go @@ -9,18 +9,6 @@ import ( "crypto/internal/fips140deps/byteorder" ) -// gcmFieldElement represents a value in GF(2¹²⁸). In order to reflect the GCM -// standard and make binary.BigEndian suitable for marshaling these values, the -// bits are stored in big endian order. For example: -// -// the coefficient of x⁰ can be obtained by v.low >> 63. -// the coefficient of x⁶³ can be obtained by v.low & 1. -// the coefficient of x⁶⁴ can be obtained by v.high >> 63. -// the coefficient of x¹²⁷ can be obtained by v.high & 1. -type gcmFieldElement struct { - low, high uint64 -} - // GHASH is exposed to allow crypto/cipher to implement non-AES GCM modes. // It is not allowed as a stand-alone operation in FIPS mode because it // is not ACVP tested. @@ -31,133 +19,161 @@ func GHASH(key *[16]byte, inputs ...[]byte) []byte { return out[:] } -// ghash is a variable-time generic implementation of GHASH, which shouldn't -// be used on any architecture with hardware support for AES-GCM. -// -// Each input is zero-padded to 128-bit before being absorbed. -func ghash(out, H *[gcmBlockSize]byte, inputs ...[]byte) { - // productTable contains the first sixteen powers of the key, H. - // However, they are in bit reversed order. - var productTable [16]gcmFieldElement - - // We precompute 16 multiples of H. However, when we do lookups - // into this table we'll be using bits from a field element and - // therefore the bits will be in the reverse order. So normally one - // would expect, say, 4*H to be in index 4 of the table but due to - // this bit ordering it will actually be in index 0010 (base 2) = 2. - x := gcmFieldElement{ - byteorder.BEUint64(H[:8]), - byteorder.BEUint64(H[8:]), - } - productTable[reverseBits(1)] = x - - for i := 2; i < 16; i += 2 { - productTable[reverseBits(i)] = ghashDouble(&productTable[reverseBits(i/2)]) - productTable[reverseBits(i+1)] = ghashAdd(&productTable[reverseBits(i)], &x) +// ghashMul does constant-time carry-less multiplication of two 32-bit integers, +// returning the 64-bit product. +func ghashMul(x, y uint32) uint64 { + // This function implements carryless multiplication using a technique first + // described by Thomas Pornin in the BearSSL documentation [0]. This + // technique uses generic integer multiplication, but ignores the carrys by + // masking all but 8 bits of the inputs, creating three bit holes between + // each unmasked bit. If the multiplications of any of the unmasked bits + // then cause a carry, the resulting carry bit spills into one of the three + // bit holes. + // + // Each 32-bit input is split into four 32-bit masked values, each + // containing 8 unmasked bits. The mask is shifted by one bit for each of + // the four values, such that the four values cover the full 32 bits of the + // input. + // + // In order to compute the bits at position z_k, z_k+4, z_k+8, ..., z_k+60 + // for k = 0, 1, 2, 3, we compute the sum of the products x_i*y_j for all i, + // j such that i+j = k mod 4. + // + // We then mask the sum of each of the four products with the same mask used + // for the input values, which zeros out any spilled carry bits, and OR the + // masked values to get the final product. + // + // [0] https://www.bearssl.org/constanttime.html#ghash-for-gcm + + var xm, ym [4]uint32 + var z [4]uint64 + + for i := range 4 { + // Mask off the three bit holes in each input, creating four masked + // values for each input. + xm[i] = x & (0x11111111 << i) + ym[i] = y & (0x11111111 << i) } - var y gcmFieldElement - for _, input := range inputs { - ghashUpdate(&productTable, &y, input) + for i := range 4 { + // Compute the multiplication of x by the circulant matrix of y, using + // XOR to get carryless addition of the products: + // + // | z[0] | | ym[0] ym[3] ym[2] ym[1] | | xm[0] | + // | z[1] | = | ym[1] ym[0] ym[3] ym[2] | x | xm[1] | + // | z[2] | | ym[2] ym[1] ym[0] ym[3] | | xm[2] | + // | z[3] | | ym[3] ym[2] ym[1] ym[0] | | xm[3] | + z[i] = (uint64(xm[0]) * uint64(ym[i])) ^ (uint64(xm[1]) * uint64(ym[(i+3)%4])) ^ (uint64(xm[2]) * uint64(ym[(i+2)%4])) ^ (uint64(xm[3]) * uint64(ym[(i+1)%4])) + z[i] &= 0x1111111111111111 << i } - byteorder.BEPutUint64(out[:], y.low) - byteorder.BEPutUint64(out[8:], y.high) + return z[0] | z[1] | z[2] | z[3] } -// reverseBits reverses the order of the bits of 4-bit number in i. -func reverseBits(i int) int { - i = ((i << 2) & 0xc) | ((i >> 2) & 0x3) - i = ((i << 1) & 0xa) | ((i >> 1) & 0x5) - return i -} - -// ghashAdd adds two elements of GF(2¹²⁸) and returns the sum. -func ghashAdd(x, y *gcmFieldElement) gcmFieldElement { - // Addition in a characteristic 2 field is just XOR. - return gcmFieldElement{x.low ^ y.low, x.high ^ y.high} -} - -// ghashDouble returns the result of doubling an element of GF(2¹²⁸). -func ghashDouble(x *gcmFieldElement) (double gcmFieldElement) { - msbSet := x.high&1 == 1 - - // Because of the bit-ordering, doubling is actually a right shift. - double.high = x.high >> 1 - double.high |= x.low << 63 - double.low = x.low >> 1 - - // If the most-significant bit was set before shifting then it, - // conceptually, becomes a term of x^128. This is greater than the - // irreducible polynomial so the result has to be reduced. The - // irreducible polynomial is 1+x+x^2+x^7+x^128. We can subtract that to - // eliminate the term at x^128 which also means subtracting the other - // four terms. In characteristic 2 fields, subtraction == addition == - // XOR. - if msbSet { - double.low ^= 0xe100000000000000 +func ghash(out, H *[gcmBlockSize]byte, inputs ...[]byte) { + // The GHASH algorithm computes the sum of the products of two 128 bit + // integers Y and H (the input block and the key, respectively) in the field + // GF(2^128), modulo the field polynomial. + // + // We use the Karatsuba algorithm to decompose the 128-bit multiplication + // into three 64-bit multiplications, which we further decompose into 9 + // 32-bit multiplications with 64-bit products. + + // Make sure out is zeroed before we use it. + clear(out[:]) + + var y, h [4]uint32 + for i := range 4 { + h[3-i] = byteorder.BEUint32(H[i*4 : (i*4)+4]) } - return -} - -var ghashReductionTable = []uint16{ - 0x0000, 0x1c20, 0x3840, 0x2460, 0x7080, 0x6ca0, 0x48c0, 0x54e0, - 0xe100, 0xfd20, 0xd940, 0xc560, 0x9180, 0x8da0, 0xa9c0, 0xb5e0, -} - -// ghashMul sets y to y*H, where H is the GCM key, fixed during New. -func ghashMul(productTable *[16]gcmFieldElement, y *gcmFieldElement) { - var z gcmFieldElement + blockIterator := func(yield func([]byte) bool) { + for _, input := range inputs { + for len(input) >= 16 { + if !yield(input[:16]) { + return + } + input = input[16:] + } + if len(input) > 0 { + var partialBlock [gcmBlockSize]byte + copy(partialBlock[:], input) + if !yield(partialBlock[:]) { + return + } + } + } + } - for i := 0; i < 2; i++ { - word := y.high - if i == 1 { - word = y.low + // Compute the GHASH of the inputs by iterating over 16-byte blocks of the + // inputs, XORing each block into the current state, and multiplying the + // result by the key. + for block := range blockIterator { + for i := range 4 { + y[3-i] ^= byteorder.BEUint32(block[i*4 : (i*4)+4]) } - // Multiplication works by multiplying z by 16 and adding in - // one of the precomputed multiples of H. - for j := 0; j < 64; j += 4 { - msw := z.high & 0xf - z.high >>= 4 - z.high |= z.low << 60 - z.low >>= 4 - z.low ^= uint64(ghashReductionTable[msw]) << 48 - - // the values in |table| are ordered for little-endian bit - // positions. See the comment in New. - t := productTable[word&0xf] - - z.low ^= t.low - z.high ^= t.high - word >>= 4 + // Split y*h into nine products: + // + // zLo = y0*h0, y2*h2, (y0^y2) * (h0^h2) + // zHi = y1*h1, y3*h3, (y1^y3) * (h1^h3) + // zSum = (y0^y1) * (h0^h1), (y2^y3) * (h2^h3), ((y0^y2) ^ (y1^y3)) * ((h0^h2) ^ (h1^h3)) + var zLo, zHi, zSum [3]uint64 + + zLo[0] = ghashMul(y[0], h[0]) + zHi[0] = ghashMul(y[1], h[1]) + zSum[0] = ghashMul(y[0]^y[1], h[0]^h[1]) + + zLo[1] = ghashMul(y[2], h[2]) + zHi[1] = ghashMul(y[3], h[3]) + zSum[1] = ghashMul(y[2]^y[3], h[2]^h[3]) + + zLo[2] = ghashMul(y[0]^y[2], h[0]^h[2]) + zHi[2] = ghashMul(y[1]^y[3], h[1]^h[3]) + zSum[2] = ghashMul((y[0]^y[2])^(y[1]^y[3]), (h[0]^h[2])^(h[1]^h[3])) + + // Reconstruct the 128-bit terms zLo, zHi, and zSum from their constituent 64-bit products + var result [3][2]uint64 + for i := range 3 { + mid := zSum[i] ^ zLo[i] ^ zHi[i] + // Add the lower 32 bits of the middle term to the low term + result[i][0] = zLo[i] ^ (mid << 32) + // Add the upper 32 bits of the middle term to the high term + result[i][1] = zHi[i] ^ (mid >> 32) } - } - *y = z -} + // Compute the middle term by adding the high and low terms to the sum term + result[2][0] ^= result[0][0] ^ result[1][0] + result[2][1] ^= result[0][1] ^ result[1][1] + + // Add the lower bits of the middle term to the higher bits of the low term + result[0][1] ^= result[2][0] + // Add the higher bits of the middle term to the lower bits of the high term + result[1][0] ^= result[2][1] + + // Reconstruct the 256-bit product from the low and high terms, shifted + // by one bit to satisfy the GHASH construction. + var z [4]uint64 + z[0] = result[0][0] << 1 + z[1] = (result[0][1] << 1) | (result[0][0] >> 63) + z[2] = (result[1][0] << 1) | (result[0][1] >> 63) + z[3] = (result[1][1] << 1) | (result[1][0] >> 63) + + // Reduce the 256-bit product modulo the field polynomial. z0 and z1 contain + // the high-degree terms (255 to 128), and z2 and z3 contain the low-degree terms (127 to 0). + for i := range 2 { + lw := z[i] + // Add the remainders of the high-degree terms to the low-degree terms + z[i+2] ^= lw ^ (lw >> 1) ^ (lw >> 2) ^ (lw >> 7) + // Add the carrys from the reduction + z[i+1] ^= (lw << 63) ^ (lw << 62) ^ (lw << 57) + } -// updateBlocks extends y with more polynomial terms from blocks, based on -// Horner's rule. There must be a multiple of gcmBlockSize bytes in blocks. -func updateBlocks(productTable *[16]gcmFieldElement, y *gcmFieldElement, blocks []byte) { - for len(blocks) > 0 { - y.low ^= byteorder.BEUint64(blocks) - y.high ^= byteorder.BEUint64(blocks[8:]) - ghashMul(productTable, y) - blocks = blocks[gcmBlockSize:] + // Write the reduced 128-bit product back into y + y[0], y[1], y[2], y[3] = uint32(z[2]), uint32(z[2]>>32), uint32(z[3]), uint32(z[3]>>32) } -} - -// ghashUpdate extends y with more polynomial terms from data. If data is not a -// multiple of gcmBlockSize bytes long then the remainder is zero padded. -func ghashUpdate(productTable *[16]gcmFieldElement, y *gcmFieldElement, data []byte) { - fullBlocks := (len(data) >> 4) << 4 - updateBlocks(productTable, y, data[:fullBlocks]) - if len(data) != fullBlocks { - var partialBlock [gcmBlockSize]byte - copy(partialBlock[:], data[fullBlocks:]) - updateBlocks(productTable, y, partialBlock[:]) + for i := range 4 { + byteorder.BEPutUint32(out[i*4:(i*4)+4], y[3-i]) } } diff --git a/src/crypto/internal/fips140/bigmod/nat.go b/src/crypto/internal/fips140/bigmod/nat.go index 2d5921dbbc514d..53f77502afa017 100644 --- a/src/crypto/internal/fips140/bigmod/nat.go +++ b/src/crypto/internal/fips140/bigmod/nat.go @@ -1211,6 +1211,16 @@ func rshift1(a *Nat, carry uint) { } } +// ShiftRightByOne sets x = x >> 1. +// +// The announced length of x is unchanged. +// +//go:norace +func (x *Nat) ShiftRightByOne() *Nat { + rshift1(x, 0) + return x +} + // DivShortVarTime calculates x = x / y and returns the remainder. // // It panics if y is zero. diff --git a/src/crypto/internal/fips140/rsa/keygen.go b/src/crypto/internal/fips140/rsa/keygen.go index 00b325d24b2211..d841378f84e4c2 100644 --- a/src/crypto/internal/fips140/rsa/keygen.go +++ b/src/crypto/internal/fips140/rsa/keygen.go @@ -14,6 +14,13 @@ import ( // GenerateKey generates a new RSA key pair of the given bit size. // bits must be at least 32. +// +// It follows the process described at c2sp.org/det-keygen, which is compliant +// with FIPS 186-5, Appendix A.1, IFC Key Pair Generation and FIPS 186-5, +// Appendix A.1.3, Generation of Random Primes that are Probably Prime. +// The prime candidates are drawn from rand, which in production will be the +// global DRBG, while in tests can be an HMAC_DRBG as specified in +// c2sp.org/det-keygen, to allow using its tests vectors. func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) { if bits < 32 { return nil, errors.New("rsa: key too small") @@ -61,11 +68,11 @@ func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) { // However, FIPS 186-5, A.1.1(3) requires computing it as e⁻¹ mod λ(N) // where λ(N) = lcm(p-1, q-1). // - // This makes d smaller by 1.5 bits on average, which is irrelevant both + // This makes d smaller by 1.82 bits on average, which is irrelevant both // because we exclusively use the CRT for private operations and because // we use constant time windowed exponentiation. On the other hand, it - // requires computing a GCD of two values that are not coprime, and then - // a division, both complex variable-time operations. + // requires computing a GCD of two even numbers, and then a division, + // both complex variable-time operations. λ, err := totient(P, Q) if err == errDivisorTooLarge { // The divisor is too large, try again with different primes. @@ -84,7 +91,7 @@ func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) { // // We waste a prime by retrying the whole process, since 65537 is // probably only a factor of one of p-1 or q-1, but the probability - // of this check failing is only 1/65537, so it doesn't matter. + // of this check failing is ≈ 2⁻¹⁵, so it doesn't matter. continue } @@ -97,9 +104,9 @@ func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) { // The probability of this check failing when d is derived from // (e, p, q) is roughly // - // 2^(nlen/2) / 2^nlen = 2^(-nlen/2) + // 2^(nlen/2) / λ(N) ≈ 2^(-nlen/2 + 1.82) // - // so less than 2⁻¹²⁸ for keys larger than 256 bits. + // so less than 2⁻¹²⁶ for keys larger than 256 bits. // // We still need to check to comply with FIPS 186-5, but knowing it has // negligible chance of failure we can defer the check to the end of key @@ -134,20 +141,27 @@ func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) { var errDivisorTooLarge = errors.New("divisor too large") // totient computes the Carmichael totient function λ(N) = lcm(p-1, q-1). +// +// p and q must be primes congruent to 7 mod 8, so that p-1 and q-1 are both +// even but not divisible by 4. +// +// totient returns errDivisorTooLarge if GCD(p-1, q-1) is larger than 2³²-1. func totient(p, q *bigmod.Modulus) (*bigmod.Modulus, error) { a, b := p.Nat().SubOne(p), q.Nat().SubOne(q) + if a.IsOdd() == 1 || b.IsOdd() == 1 { + return nil, errors.New("rsa: internal error: p and q must be 7 mod 8") + } // lcm(a, b) = a×b / gcd(a, b) = a × (b / gcd(a, b)) - // Our GCD requires at least one of the numbers to be odd. For LCM we only - // need to preserve the larger prime power of each prime factor, so we can - // right-shift the number with the fewest trailing zeros until it's odd. - // For odd a, b and m >= n, lcm(a×2ᵐ, b×2ⁿ) = lcm(a×2ᵐ, b). - az, bz := a.TrailingZeroBitsVarTime(), b.TrailingZeroBitsVarTime() - if az < bz { - a = a.ShiftRightVarTime(az) - } else { - b = b.ShiftRightVarTime(bz) + // Our GCD requires at least one of the numbers to be odd. + // We know that a / 2 and b / 2 are odd because p and q are 7 mod 8. + // For LCM we only need to preserve the larger prime power of each + // prime factor, so we can shift out 2 from either of them. + // For odd x, y and m >= n, lcm(x×2, y×2) = lcm(x×2, y). + b = b.ShiftRightByOne() + if b.IsOdd() == 0 { + return nil, errors.New("rsa: internal error: p and q must be 7 mod 8") } gcd, err := bigmod.NewNat().GCDVarTime(a, b) @@ -160,10 +174,11 @@ func totient(p, q *bigmod.Modulus) (*bigmod.Modulus, error) { // To avoid implementing multiple-precision division, we just try again if // the divisor doesn't fit in a single word. This would have a chance of - // 2⁻⁶⁴ on 64-bit platforms, and 2⁻³² on 32-bit platforms, but testing 2⁻⁶⁴ - // edge cases is impractical, and we'd rather not behave differently on - // different platforms, so we reject divisors above 2³²-1. - if gcd.BitLenVarTime() > 32 { + // ~2⁻⁶⁴ on 64-bit platforms, and ~2⁻³² on 32-bit platforms, but testing + // 2⁻⁶⁴ edge cases is impractical, and we'd rather not behave differently on + // different platforms, so we reject divisors above 2³²-1. Note that we also + // add back the factor of 2 we shifted out above. + if gcd.BitLenVarTime()+1 > 32 { return nil, errDivisorTooLarge } if gcd.IsZero() == 1 || gcd.Bits()[0] == 0 { @@ -205,8 +220,10 @@ func randomPrime(rand io.Reader, bits int) ([]byte, error) { b[1] |= 0b1000_0000 } - // Make the value odd since an even number certainly isn't prime. - b[len(b)-1] |= 1 + // Set the three least significant bits, which makes the value 7 mod 8 + // (steps 4.3 and 5.3). Even numbers are not prime, and an odd + // (p - 1) / 2 simplifies [millerRabinIteration] and the GCD in [totient]. + b[len(b)-1] |= 0b0000_0111 // We don't need to check for p >= √2 × 2^(bits-1) (steps 4.4 and 5.4) // because we set the top two bits above, so @@ -233,7 +250,7 @@ func randomPrime(rand io.Reader, bits int) ([]byte, error) { // isPrime runs the Miller-Rabin Probabilistic Primality Test from // FIPS 186-5, Appendix B.3.1. // -// w must be a random odd integer greater than three in big-endian order. +// w must be a random integer equal to 3 mod 4 in big-endian order. // isPrime might return false positives for adversarially chosen values. // // isPrime is not constant-time. @@ -339,35 +356,32 @@ var primes = []uint{ type millerRabin struct { w *bigmod.Modulus - a uint m []byte } // millerRabinSetup prepares state that's reused across multiple iterations of // the Miller-Rabin test. +// +// w must be a random integer equal to 3 mod 4 in big-endian order. func millerRabinSetup(w []byte) (*millerRabin, error) { mr := &millerRabin{} - // Check that w is odd, and precompute Montgomery parameters. + // Check that w is 3 mod 4, and precompute Montgomery parameters. + if len(w) == 0 || w[len(w)-1]&0b11 != 0b11 { + return nil, errors.New("candidate is not 3 mod 4") + } wm, err := bigmod.NewModulus(w) if err != nil { return nil, err } - if wm.Nat().IsOdd() == 0 { - return nil, errors.New("candidate is even") - } mr.w = wm // Compute m = (w-1)/2^a, where m is odd. - wMinus1 := mr.w.Nat().SubOne(mr.w) - if wMinus1.IsZero() == 1 { - return nil, errors.New("candidate is one") - } - mr.a = wMinus1.TrailingZeroBitsVarTime() + // Since w is 3 mod 4, a is always 1, so m = (w-1)/2. + m := mr.w.Nat().SubOne(mr.w).ShiftRightByOne() // Store mr.m as a big-endian byte slice with leading zero bytes removed, // for use with [bigmod.Nat.Exp]. - m := wMinus1.ShiftRightVarTime(mr.a) mr.m = m.Bytes(mr.w) for mr.m[0] == 0 { mr.m = mr.m[1:] @@ -397,23 +411,11 @@ func millerRabinIteration(mr *millerRabin, bb []byte) (bool, error) { // If b^(m*2^i) mod w = -1 for some 0 <= i < a, b is a possible prime. // Otherwise b is composite. - // Start by computing and checking b^m mod w (also the i = 0 case). + // Since a = 1 for our w, we only need to check b^m mod w = +/-1. z := bigmod.NewNat().Exp(b, mr.m, mr.w) if z.IsOne() == 1 || z.IsMinusOne(mr.w) == 1 { return millerRabinPOSSIBLYPRIME, nil } - // Check b^(m*2^i) mod w = -1 for 0 < i < a. - for range mr.a - 1 { - z.Mul(z, mr.w) - if z.IsMinusOne(mr.w) == 1 { - return millerRabinPOSSIBLYPRIME, nil - } - if z.IsOne() == 1 { - // Future squaring will not turn z == 1 into -1. - break - } - } - return millerRabinCOMPOSITE, nil } diff --git a/src/crypto/internal/fips140/rsa/keygen_test.go b/src/crypto/internal/fips140/rsa/keygen_test.go index 9104a9dfd85fc8..8da103782e3ea4 100644 --- a/src/crypto/internal/fips140/rsa/keygen_test.go +++ b/src/crypto/internal/fips140/rsa/keygen_test.go @@ -56,7 +56,13 @@ func TestMillerRabin(t *testing.T) { B = "0" + B } - mr, err := millerRabinSetup(decodeHex(t, W)) + // Our Miller-Rabin assumes candidates are 3 mod 4. + w := decodeHex(t, W) + if len(w) == 0 || w[len(w)-1]%4 != 3 { + t.Skip("skipping test with W not congruent to 3 mod 4") + } + + mr, err := millerRabinSetup(w) if err != nil { t.Logf("W = %s", W) t.Logf("B = %s", B) @@ -133,8 +139,13 @@ func TestTotient(t *testing.T) { } } + // a and b must be even and a/2 and b/2 must be odd for totient to work. + if a.Bits()[0]%4 != 2 || b.Bits()[0]%4 != 2 { + t.Skip("skipping test with invalid input for totient") + } + lcm, err := totient(p, q) - if oddDivisorLargerThan32Bits(decodeHex(t, GCD)) { + if new(big.Int).SetBytes(decodeHex(t, GCD)).BitLen() > 32 { if err != errDivisorTooLarge { t.Fatalf("expected divisor too large error, got %v", err) } @@ -156,12 +167,6 @@ func TestTotient(t *testing.T) { } } -func oddDivisorLargerThan32Bits(b []byte) bool { - x := new(big.Int).SetBytes(b) - x.Rsh(x, x.TrailingZeroBits()) - return x.BitLen() > 32 -} - func addOne(b []byte) []byte { x := new(big.Int).SetBytes(b) x.Add(x, big.NewInt(1)) diff --git a/src/crypto/internal/fips140/rsa/largeexponent.go b/src/crypto/internal/fips140/rsa/largeexponent.go new file mode 100644 index 00000000000000..e09052509518b5 --- /dev/null +++ b/src/crypto/internal/fips140/rsa/largeexponent.go @@ -0,0 +1,115 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package rsa + +import ( + "bytes" + "crypto/internal/fips140" + "crypto/internal/fips140/bigmod" + "errors" + "hash" +) + +// TestingOnlyLargeExponentPublicKey is a variant of [PublicKey] that supports +// large public exponents. It is only meant for supporting the full ACVP test +// suite, which unfortunately forces us to choose between a fixed exponent and +// the full (2¹⁶, 2²⁵⁶) range. This type must not be used in production code, +// nor for e values < 2³¹, which instead must use [PublicKey]. +type TestingOnlyLargeExponentPublicKey struct { + N *bigmod.Modulus + // E is the public exponent, represented as a big-endian byte slice. + E []byte +} + +func (pub *TestingOnlyLargeExponentPublicKey) Size() int { + return (pub.N.BitLen() + 7) / 8 +} + +func checkLargeExponentPublicKey(pub *TestingOnlyLargeExponentPublicKey) error { + if pub.N == nil { + return errors.New("crypto/rsa: missing public modulus") + } + if pub.N.Nat().IsOdd() == 0 { + return errors.New("crypto/rsa: public modulus is even") + } + if pub.N.BitLen() < 2048 { + return errors.New("crypto/rsa: public modulus too small") + } + if pub.N.BitLen()%2 == 1 { + return errors.New("crypto/rsa: public modulus bit length not even") + } + E := pub.E + for len(E) > 0 && E[0] == 0 { + E = E[1:] + } + if len(E) < 32/8 || (len(E) == 32/8 && E[0] < 0x80) { + // Exponents less than 2^31 must use [PublicKey]. + return errors.New("crypto/rsa: public exponent too small") + } + if len(E) > 256/8 { + return errors.New("crypto/rsa: public exponent too large") + } + if E[len(E)-1]&1 == 0 { + return errors.New("crypto/rsa: public exponent is even") + } + return nil +} + +func encryptLargeExponent(pub *TestingOnlyLargeExponentPublicKey, plaintext []byte) ([]byte, error) { + m, err := bigmod.NewNat().SetBytes(plaintext, pub.N) + if err != nil { + return nil, err + } + return bigmod.NewNat().Exp(m, pub.E, pub.N).Bytes(pub.N), nil +} + +func TestingOnlyLargeExponentVerifyPKCS1v15(pub *TestingOnlyLargeExponentPublicKey, hash string, hashed []byte, sig []byte) error { + fipsSelfTest() + fips140.RecordApproved() + checkApprovedHashName(hash) + if err := checkLargeExponentPublicKey(pub); err != nil { + return err + } + if pub.Size() != len(sig) { + return ErrVerification + } + em, err := encryptLargeExponent(pub, sig) + if err != nil { + return ErrVerification + } + expected, err := pkcs1v15ConstructEM(&PublicKey{N: pub.N}, hash, hashed) + if err != nil { + return ErrVerification + } + if !bytes.Equal(em, expected) { + return ErrVerification + } + return nil +} + +func TestingOnlyLargeExponentVerifyPSS(pub *TestingOnlyLargeExponentPublicKey, hash hash.Hash, digest []byte, sig []byte) error { + fipsSelfTest() + fips140.RecordApproved() + checkApprovedHash(hash) + if err := checkLargeExponentPublicKey(pub); err != nil { + return err + } + if len(sig) != pub.Size() { + return ErrVerification + } + emBits := pub.N.BitLen() - 1 + emLen := (emBits + 7) / 8 + em, err := encryptLargeExponent(pub, sig) + if err != nil { + return ErrVerification + } + for len(em) > emLen && len(em) > 0 { + if em[0] != 0 { + return ErrVerification + } + em = em[1:] + } + return emsaPSSVerify(digest, em, emBits, pssSaltLengthAutodetect, hash) +} diff --git a/src/crypto/internal/fips140only/fips140only_test.go b/src/crypto/internal/fips140only/fips140only_test.go index 462e279ce2e97c..5594fe84af542f 100644 --- a/src/crypto/internal/fips140only/fips140only_test.go +++ b/src/crypto/internal/fips140only/fips140only_test.go @@ -247,10 +247,12 @@ bXVL8iKLrG91IYQByUHZIn3WVAd2bfi4MfKagRt0ggd4 expectErr(t, errRet2(rsa.SignPKCS1v15(rand.Reader, rsaKey, crypto.SHA1, make([]byte, 20)))) // rand is always ignored for PKCS1v15 signing expectNoErr(t, errRet2(rsa.SignPKCS1v15(readerWrap{rand.Reader}, rsaKey, crypto.SHA256, make([]byte, 32)))) + expectErr(t, errRet2(rsa.SignPKCS1v15(rand.Reader, rsaKey, crypto.Hash(0), make([]byte, 32)))) expectNoErr(t, rsa.VerifyPKCS1v15(&rsaKey.PublicKey, crypto.SHA256, make([]byte, 32), sigPKCS1v15)) expectErr(t, rsa.VerifyPKCS1v15(&smallKey.PublicKey, crypto.SHA256, make([]byte, 32), sigPKCS1v15)) expectErr(t, rsa.VerifyPKCS1v15(&rsaKey.PublicKey, crypto.SHA1, make([]byte, 20), sigPKCS1v15)) + expectErr(t, rsa.VerifyPKCS1v15(&rsaKey.PublicKey, crypto.Hash(0), make([]byte, 32), sigPKCS1v15)) sigPSS, err := rsa.SignPSS(rand.Reader, rsaKey, crypto.SHA256, make([]byte, 32), nil) expectNoErr(t, err) diff --git a/src/crypto/rsa/fips.go b/src/crypto/rsa/fips.go index fb2395886b053b..d0d22e2779dc2c 100644 --- a/src/crypto/rsa/fips.go +++ b/src/crypto/rsa/fips.go @@ -80,6 +80,9 @@ func SignPSS(random io.Reader, priv *PrivateKey, hash crypto.Hash, digest []byte } boring.UnreachableExceptTests() + if !hash.Available() { + return nil, errors.New("crypto/rsa: requested hash function unavailable: " + hash.String()) + } h := fips140hash.Unwrap(hash.New()) if err := checkFIPS140OnlyPrivateKey(priv); err != nil { @@ -145,6 +148,9 @@ func VerifyPSS(pub *PublicKey, hash crypto.Hash, digest []byte, sig []byte, opts return nil } + if !hash.Available() { + return errors.New("crypto/rsa: requested hash function unavailable: " + hash.String()) + } h := fips140hash.Unwrap(hash.New()) if err := checkFIPS140OnlyPublicKey(pub); err != nil { @@ -203,6 +209,12 @@ func EncryptOAEP(hash hash.Hash, random io.Reader, pub *PublicKey, msg []byte, l // // See [EncryptOAEP] for additional details. func EncryptOAEPWithOptions(random io.Reader, pub *PublicKey, msg []byte, opts *OAEPOptions) ([]byte, error) { + if !opts.Hash.Available() { + return nil, errors.New("crypto/rsa: requested hash function unavailable: " + opts.Hash.String()) + } + if opts.MGFHash != 0 && !opts.MGFHash.Available() { + return nil, errors.New("crypto/rsa: requested hash function unavailable: " + opts.MGFHash.String()) + } if opts.MGFHash == 0 { return encryptOAEP(opts.Hash.New(), opts.Hash.New(), random, pub, msg, opts.Label) } @@ -342,8 +354,10 @@ func SignPKCS1v15(random io.Reader, priv *PrivateKey, hash crypto.Hash, hashed [ if err := checkFIPS140OnlyPrivateKey(priv); err != nil { return nil, err } - if fips140only.Enforced() && !fips140only.ApprovedHash(fips140hash.Unwrap(hash.New())) { - return nil, errors.New("crypto/rsa: use of hash functions other than SHA-2 or SHA-3 is not allowed in FIPS 140-only mode") + if fips140only.Enforced() { + if !hash.Available() || !fips140only.ApprovedHash(fips140hash.Unwrap(hash.New())) { + return nil, errors.New("crypto/rsa: use of hash functions other than SHA-2 or SHA-3 is not allowed in FIPS 140-only mode") + } } k, err := fipsPrivateKey(priv) @@ -388,8 +402,10 @@ func VerifyPKCS1v15(pub *PublicKey, hash crypto.Hash, hashed []byte, sig []byte) if err := checkFIPS140OnlyPublicKey(pub); err != nil { return err } - if fips140only.Enforced() && !fips140only.ApprovedHash(fips140hash.Unwrap(hash.New())) { - return errors.New("crypto/rsa: use of hash functions other than SHA-2 or SHA-3 is not allowed in FIPS 140-only mode") + if fips140only.Enforced() { + if !hash.Available() || !fips140only.ApprovedHash(fips140hash.Unwrap(hash.New())) { + return errors.New("crypto/rsa: use of hash functions other than SHA-2 or SHA-3 is not allowed in FIPS 140-only mode") + } } k, err := fipsPublicKey(pub) diff --git a/src/crypto/rsa/rsa.go b/src/crypto/rsa/rsa.go index 3a744f3e3fb603..93e08ed6cd8f71 100644 --- a/src/crypto/rsa/rsa.go +++ b/src/crypto/rsa/rsa.go @@ -176,6 +176,12 @@ func (priv *PrivateKey) Decrypt(rand io.Reader, ciphertext []byte, opts crypto.D switch opts := opts.(type) { case *OAEPOptions: + if !opts.Hash.Available() { + return nil, errors.New("rsa: requested hash function unavailable: " + opts.Hash.String()) + } + if opts.MGFHash != 0 && !opts.MGFHash.Available() { + return nil, errors.New("rsa: requested hash function unavailable: " + opts.MGFHash.String()) + } if opts.MGFHash == 0 { return decryptOAEP(opts.Hash.New(), opts.Hash.New(), priv, ciphertext, opts.Label) } else { diff --git a/src/crypto/rsa/rsa_test.go b/src/crypto/rsa/rsa_test.go index 124fba1e8a4faa..dc8b625d85d5e0 100644 --- a/src/crypto/rsa/rsa_test.go +++ b/src/crypto/rsa/rsa_test.go @@ -11,13 +11,16 @@ import ( "crypto/internal/boring" "crypto/internal/cryptotest" "crypto/internal/fips140" + "crypto/internal/fips140/ecdsa" "crypto/rand" . "crypto/rsa" "crypto/sha1" "crypto/sha256" "crypto/sha512" "crypto/x509" + "encoding/binary" "encoding/hex" + "encoding/json" "encoding/pem" "flag" "fmt" @@ -131,6 +134,68 @@ func TestTinyKeyGeneration(t *testing.T) { } } +func TestKeyGenerationVectors(t *testing.T) { + var vectors []struct { + Bits int + Seed []byte + PKCS8 []byte `json:"private_key_pkcs8"` + } + f, err := os.Open("testdata/det-keygen.json") + if err != nil { + t.Fatalf("failed to open det-keygen.json: %v", err) + } + defer f.Close() + if err := json.NewDecoder(f).Decode(&vectors); err != nil { + t.Fatalf("failed to decode keygen.json: %v", err) + } + for i, v := range vectors { + t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { + t.Setenv("GODEBUG", "cryptocustomrand=1") + pers := []byte("det RSA key gen") + pers = binary.BigEndian.AppendUint16(pers, uint16(v.Bits)) + drbg := ecdsa.TestingOnlyNewDRBG(sha256.New, v.Seed, nil, pers) + rng := &keyGenTestReader{next: func(p []byte) error { + drbg.Generate(p) + return nil + }} + priv, err := GenerateKey(rng, v.Bits) + if err != nil { + t.Fatalf("GenerateKey: %v", err) + } + testKeyBasics(t, priv) + der, err := x509.MarshalPKCS8PrivateKey(priv) + if err != nil { + t.Fatalf("MarshalPKCS8PrivateKey: %v", err) + } + if !bytes.Equal(der, v.PKCS8) { + t.Errorf("PKCS8 mismatch:\n%s\nvs\n\n%s", hex.Dump(der), hex.Dump(v.PKCS8)) + } + }) + } +} + +type keyGenTestReader struct { + next func([]byte) error +} + +func (r *keyGenTestReader) Read(p []byte) (n int, err error) { + // Neutralize randutil.MaybeReadByte. + // + // DO NOT COPY this. We *will* break you. We can do this because we're + // in the standard library, and can update this along with the + // GenerateKey implementation if necessary. + // + // You have been warned. + if len(p) == 1 { + return 1, nil + } + + if err := r.next(p); err != nil { + return 0, err + } + return len(p), nil +} + func TestGnuTLSKey(t *testing.T) { t.Setenv("GODEBUG", "rsa1024min=0") // This is a key generated by `certtool --generate-privkey --bits 128`. @@ -826,54 +891,68 @@ func BenchmarkParsePKCS8PrivateKey(b *testing.B) { func BenchmarkGenerateKey(b *testing.B) { b.Run("2048", func(b *testing.B) { + b.Setenv("GODEBUG", "cryptocustomrand=1") primes, err := os.ReadFile("testdata/keygen2048.txt") if err != nil { b.Fatal(err) } for b.Loop() { - r := &testPrimeReader{primes: string(primes)} + r := benchmarkPrimeReader(string(primes)) if _, err := GenerateKey(r, 2048); err != nil { b.Fatal(err) } } }) + b.Run("3072", func(b *testing.B) { + b.Setenv("GODEBUG", "cryptocustomrand=1") + primes, err := os.ReadFile("testdata/keygen3072.txt") + if err != nil { + b.Fatal(err) + } + for b.Loop() { + r := benchmarkPrimeReader(string(primes)) + if _, err := GenerateKey(r, 3072); err != nil { + b.Fatal(err) + } + } + }) + b.Run("4096", func(b *testing.B) { + b.Setenv("GODEBUG", "cryptocustomrand=1") + primes, err := os.ReadFile("testdata/keygen4096.txt") + if err != nil { + b.Fatal(err) + } + for b.Loop() { + r := benchmarkPrimeReader(string(primes)) + if _, err := GenerateKey(r, 4096); err != nil { + b.Fatal(err) + } + } + }) } -// testPrimeReader feeds prime candidates from a text file, +// benchmarkPrimeReader feeds prime candidates from a text file, // one per line in hex, to GenerateKey. -type testPrimeReader struct { - primes string -} - -func (r *testPrimeReader) Read(p []byte) (n int, err error) { - // Neutralize randutil.MaybeReadByte. - // - // DO NOT COPY this. We *will* break you. We can do this because we're - // in the standard library, and can update this along with the - // GenerateKey implementation if necessary. - // - // You have been warned. - if len(p) == 1 { - return 1, nil - } - - var line string - for line == "" || line[0] == '#' { - var ok bool - line, r.primes, ok = strings.Cut(r.primes, "\n") - if !ok { - return 0, io.EOF +func benchmarkPrimeReader(primes string) io.Reader { + return &keyGenTestReader{next: func(p []byte) error { + var line string + for line == "" || line[0] == '#' { + var ok bool + line, primes, ok = strings.Cut(primes, "\n") + if !ok { + return io.EOF + } } - } - b, err := hex.DecodeString(line) - if err != nil { - return 0, err - } - if len(p) != len(b) { - return 0, fmt.Errorf("unexpected read length: %d", len(p)) - } - copy(p, b) - return len(p), nil + b, err := hex.DecodeString(line) + if err != nil { + return err + } + if len(p) != len(b) { + return fmt.Errorf("unexpected read length: %d", len(p)) + } + copy(p, b) + return nil + }} } type testEncryptOAEPMessage struct { diff --git a/src/crypto/rsa/testdata/det-keygen.json b/src/crypto/rsa/testdata/det-keygen.json new file mode 100644 index 00000000000000..63f2de25393865 --- /dev/null +++ b/src/crypto/rsa/testdata/det-keygen.json @@ -0,0 +1,107 @@ +[ + { + "bits": 2048, + "seed": "Xl2U+6mkaGMosq89epJzbg==", + "private_key_pkcs8": "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC4kqlldnRSK2vYz09vceT9Oz0tw+xMiwtGO2Kpw6lXiWio12EzvSBd8Adj0mLwDyqNTOSJnaw7tHBbhiFSZu/4MQj1C6y2YEfSyGGl4Z/+tcMZ/KiuneGWuN4Pdp+5ufktUfd2mfnWDmJFHlcJn74XE4MlHx63dmhYYdMRpF38Cj/9VXoldC44a1lgmdXT1+a0T/emPx14uLbE/2kHb0FYQlRRljKEYxSRx+jx4LTjJYnw03S9FZ+OUm7ZK9PB9iKV31MVsWj3XhSUfDqu43FlMY3wDp1wynYTEGG3haFV5KJ9ywl8+n6WJQRsoWa5fMalpMelLjwc7FCPWCOQFWBZAgMBAAECggEAB0ZIhOY5SW/KrV3mXJcZll16WM5rBs1IIXl/tv8uMnQI+vaaLybaGrm2INoO6jU+0RjhvQbI3gWLlB/iOlQySw7rsnTGVt3OluEs8BPHcYuKaADMSS2R0ZXxspxTSUeqKX4cicEh1qz0dJLwjUGNhW1QcusaE9MH48vfPMfEqIVRwT7RM+gxExUlpkbkbEhFqWCSeKOxew29saU776pkU11VCu3wJ2/RMa7wHPvgUQAiXMX+47qh+vP1afU7bgxr86kjlWnvjoukqQYCrg0x8gE3bMKcmIBsy3E1Hd0wTceRLQEBMrlzFn/B0qwgUi/NpGnsCyLah11xmSyryDXSrQKBgQDSC/yIzEZ3Xyq1WeG6dx6fMIlxauBJChPAJi9dKVp+1stijx24/Y/NhP7f6c21dulSRkiDMyz94QPO+VtEbFW/2y3W8g0ceoWLg4S+kdYxB1zA5/LUNN6EwMlaa52t79wn2P4iECgwqcR04mz5BPyHthCc4SUwYoOzuvwX5bru9wKBgQDg8/d5QUEK3coh2nZtTvpNACKDVjZ69hrtwuVMGbZoidLgr9cEV42KfnNsvlZ2KxNZLKNbnPwvWHmzaDl6fmAQQw8ehmcNTqQWCHnX4f6uwTjb5oG8CpAjSSi+pGFxRVb6cEEjteZxNiFMAPFuXioJl+j1oyQizIxlEZUjEStHLwKBgBHThpktjQVwhDVj7W5f0a989Q01HtfUDR0PoJFtgwqkvBofP0yF6IBuuxrRwu2Vq/OZl2nbHARn5mTYcNB7yUNBHMDTRh2WoGLYxJlP0zfSAiM1DDzKR+BIZE5SN82dP7f6CIdni6GlptCsrsbrj2sNHpfR29AhbEACrIZyrsy9AoGAUSu3QKmrLqCZL14FHaxB5UcHLR0Oy4/CZ8jLtIoSp+YTkb/hdk+hYzf9rl+AE2O3t5XD3GrpFKx4PaR+GRVA1J1d90XIKaUW0Fx+mseRfr16Jt8mMRQerpzXdvMZtiWvHO8kkh4w6Oj/Ws18ULbptEx8YyZbA7OLdWzCw8SOOUECgYAvAFPzWw/8Zfm4V62LjffErrZXKwM/3oN6bg0WqGno/tgBu2pHmesP8iwVwVgikEhWuw9deHjj3tre6/fo49ME3VL4z7sFTWhzpY8eDTraDVKcO6t9N5xrKjXDaTp6QmoodByPC1qaEgTSdB+Z/CKtB3gw2FdLcbdILAI7mb/Ysg==" + }, + { + "bits": 2064, + "seed": "ledDwdW8AG4W3By3Gbua8A==", + "private_key_pkcs8": "MIIExgIBADANBgkqhkiG9w0BAQEFAASCBLAwggSsAgEAAoIBAwCsIRFr0LQZZQgnsUYvRtRkoxA5XlCx5VI5Y8z579a9Y0seAGO2p4kFfJ4k72vmnK/bza7xqjC/ezsPGJyqWWDFLWlsJmz6A18Z+SeyRMhbib2TMshYeswEMOJbDt1Cu1ev3iHGbPdsoRNVXsJls1mXoo2O05pgUU7ffn/kGT49C9IpUSt1yjsciPquLLRTPp2qZxfnkiEWbRczt9fjS9C0e17uuOUbE72DokjXaNnljBg5M+73qEu6yRnrTlLBcNfhbIrrb++vofm+RDjntHIbiAlaKV2pMPke1t4k4j4xLgKtOpYZghyOKKdBRaiQhxvdqLpE56M8E0esznjjDykdZDECAwEAAQKCAQIFQGcHKpFsGuyCRYLWK2uMfHsgvPNqUgxNqvFUiNA86/wdOLbSGk9wZupuRw28NfiZlK9rOR2OogRdxAr3mY19xpJqVcvKXvL2WGcxJa8VN+EcThbVuD1kPVeSnqP6hru4pmbSZn2wB0QPPTpiHvQzT6bQ/jy+Bo0I/ZOKUojXFPayKhiWKR8gAPHzCFMmhwo1VmqcyxQGjMV0+KPz5c03lattvW/oHhV7IczGo7XxV9GJzWGnamcjmqMsuGXXRFnhLKMctUqOUGpnUvhPeG8bAUKjPjJJV9doU4hpEJgW6H2YxO3wlMy6RQi7skhdFM0/dZ8G07dOHtD2C0RJIDD0Ay8CgYIA4sYIDhDGus8KGVk3Dfe4ZETgjsdmPCa/Fadla+z3Iq2791VadhNE505an6P5/ahkNIQopJ9eMs3NFw4jOVLaRxf0GKQtgcUx2KKGpkFmXjBe4g0vpJ8hgXBu2h7OQPoCeJpJVnt+f1s299GZT4jh6cCBoQL/CyUJiUKZqW04PI2nAoGCAMJQJb2r2L4oDaXBWXDIj9QKiWN1Sq4hNsxNp/qSHKxBocL6FqP6ka1iWI5iaFEpj1JZKqnVUu5/+DfZsC7KTY46sKREx2o7sE70Qn3JAncR7yhub8HZQIP+UHzjK2B6GQKwuabUAVZ3h14AHnFumKm6tShwb3aAH/DxzqijqMUqZwKBgRAFWZBU0xVjhx0fVmpgM+CxlQPBRpG9UwaemuWzCgqjJ4Jjv05UMiv9Nx3MId8vxFSJea2XrLn+HB0i3I4yMkWPhakwAB8I5WqeoNCiEi9ZT3q8377LlzxjyxER2BRzFTWcAM5hTyCEOy/q2N/rlbpD5WSQp6AL786Iq/5yPuTYRQKBggCnmVekLGgLRCLZWFbb57He06PC7HUYkj9goo6DmqkujoGG2gzTLRmfshbt4MVXVABxp8UbrYsVeb1P9ux2vzl7tvWLCmPyJj+hKh97vPfqWcatWev9CHUUJDOqNIrCcS3HW0UWNwBcY0aX9oRLlHgK1abRlYEedc6XFQoJ/Pdh8HsCgYF4W80DhGZ6EveZwyxKWOSteYJePCpv1ygj2vnKQs4ySGPvBjTpD5IXzzzgeXqzAGG7xh5Z1fevAlL1qAkjN5WvhxlCjZhR/o26nQNzh1CvVcLMkDF0L1hWZkjk3Gqs5RMcXmJXEul+Eh9qrdy8cg85Q7u8yy/CECGlVTxQuVaKF4g=" + }, + { + "bits": 3072, + "seed": "SmQHFsh4l2qFOk76XnC/lg==", + "private_key_pkcs8": "MIIG/AIBADANBgkqhkiG9w0BAQEFAASCBuYwggbiAgEAAoIBgQCsN8TS0g60xL6AeE3tUsym5et+XfKJEGWQg/7XuzPQZSxwzFWNptW1IuVf/tWyhZIEz72pUbFNCoryIDPQA+/tg8KRp/MW+OcGkCgjLx416uIjVCSlglNl1ipyMtpr1X2DX6YR7zAme44pDMUU0vNTV+lMQbb/250kG+tzPGyTh5DX9upBsfCQXfrltYv6z4LFDcuiYkTkSCOEhYAtv16laly8JSNiNXpHNyrxCh2G5WETCcZihYeyvoB+rVy+gd+2V3JuwfLeUb2rHWah1hoXdjBwLVigDv5ng7S5ruSfr/DVo5TwxH7ZIEBysom6Wzco2Vc3McN3dwDCGZQf5HPj7mA/mFPwh7qHY5EoW9DjUju/o81iFuv1rfTT7znYMtq1x7TRrNKQOo7bB1qk55X+UI0wa8VBxD4XyCByyoWcTt1t0livGbqfzpnLRjDtUH+Obb3/m49Blrt3Pc1q81rbkErx6ULf7GPRUHs3HLhqtle4f3+y2Xa0fF9D3nwBuCECAwEAAQKCAYAMBQBprlt0Zl7dXIgjzimWZGmhMjFhO5G7GltI9znQi58kaD54WnKD5+GWZ5TGlufwCge0r4zuUZQM/g5fsEaojw+fVtdyfQCyxpDmk71KChCqYo8ENipX6zCfM8lmyUmvR5exnL4BkZIEb2253Fc7M+GGfvekt9Ep2gD+0/LIASgsyoDjAOZHTSfbrGYOpTj9Q884kB86x4YjE6Y0iyyx4tCCGR11F0JnggQvOoOBDLVPvNjpu2QTJ5SUQsk8SpgTL7SIUujPg95FfV48fbYsuRMcBwHVcCnE0PZ7zqlZ/UGRuCBenEEWxRRAc0f4DK34nUIVFPfP+kZ69i+phcYf+joEjGUZuzQJCvs2dmNE14MH+wQRLoK+QcqDxNCgQ7P2b2afY0ll0TKtUyPar50i8whiQnQQdmdpRhNTJxJKHdX/9dTLLFYowZ4uCtOOp9Qc8bjXM0O2OESKcnovv9tRsWdmmvWHEIL6Seu7HRzMixahiFIEJJcYa52cfi5eiHkCgcEAynbD7ex/Kfc8S1ERopR5dHRpeCyiu8XizS8aBLGjNKPoru5H3ocpgj8LMTqpJy7VyST8iauup6QX8pAJ4spnSm4seO1yzpACZGEE4f7w8ZAn5uNeilfREvqXKbMjS2mJcXocpdmoLQcTAc/XZLXynBfF0fSHILv+vv5SgqSXgRS1L4BsJHjng1wqCLi9vip7m0Gel7p3TiHUMZei6RzxhHSclCo3RhOrwydvHGmRUVk5s8aGPy2QJmB/QYZ1+4lXAoHBANnBlDJJBPmaxOh+U8YPN/OIHG1OZxAqQfFDvbM/Ankd92sBv8P17zILA+r3ku2VClOL5+xfowfmP7du+dswO4PglI7mVm+F5HM2P6EN3L3Gj+a9vms/RvIeOPlpZoZGj/GeBJgSs6wmlVdEp8CA5kpeppxumvxKaMgVGsUkZOrAXPoo6a/XCh97VtEo8/DVfVu7FAxru4UWf3dnciJaU1BZ+AUvFjvRN4G9stUjxCp/FJS7dlj/HMm7RYesJuTHRwKBwFEibPvwlTklCbWJBE8pvs5LRGTTRleHQo9FO+D7qtKSiNFpTcXAVoMKbprIzjaUjzmvJ8Cn2zL1EF+1FzEaOXBbXFkNlr9ueHbvZjyGpNm5EjR1k1JPRMqdP2yHjDJRVbHy5H4WDk4VEqncN431WAbzg+PSYUBd9gVl93zBJrGkscMabLvk86nxiiq6ldcaQTSDhGF7aQoXhmhlQvS2E5coAANkM4hSo7duGxnAuGpoHjaL7QpuYODwNK72iltFuwKBwEnGqCsRSjo3EZejlUZ5SX+dEeSGt6xmZMkVJmRgaLoYSQdcJFiELnJKAR3Om10bLdB4ii8vh9DZVaUUWFrG0KMxp6Nyrr5CItBWBODQDYXOjFqk1qsHWUYWrz7xUucTaRl3bB8J1w3wVJColh1Gjr+Lqe8+Ggx4OV/wpo08c2SFn/qxeds1hBx+cT+UHHHwIvS9QWGj7nh80trllWnGKIwEr18yQNorXB784mYMJB4xyAtMKCCm7l36sOfyj4rbaQKBwDFen8gHt0FFCw8aalPz2ROqniG2dFDh/KT4Q/IXmpPoI7xiD+Wi0i8wk6SKseZ+I7cbtQs3hGo+mUMZEjbaUzmnk7oSLYtmuNK/AiK7D2y4Xe/J7L8Gi7U7Gl06d38PLQBBxoZy9Y5CMhITZ4BiiLgKnHZM6Ur+oU6JHVLxS1t+fXMNhYzRDa/aP2NkSUU/PcqPTShqPkHWJpmmK6VJcu62BkblH6bpx+oHykf2U9u9t7VRnmcPLzI77ch1Gtsxdw==" + }, + { + "bits": 4096, + "seed": "iLDHfNBOfHQSkiIJidtDxA==", + "private_key_pkcs8": "MIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQC28e/0Z+m7W/+ER0WSyGSdgB20R2/V8JZAAtquH5r+1WsZoQ1+HCaHF9dTu8DWq6N0RpM9eh/oHQpm+hVwPgU094sG9lM2SSW73ALczKnmxeLLlTZC0gtICxUovlCusv7wceGn70DmV+H0LrD4RfjknUCX/qWUj5pZ3MkYwoZflHmsSvvhCCIgqI4ccmFcPMZWOKBB/lFcjD6um/7l47tu6Xv7W8Q5O4StL7S3eS+/NT+ci0/xwPmy5MLTS08GR7OIDh/mZm2zz1obKdQ5qg2p8kJpNotNQciJ1QkiJo6015CQ+eBsCr+ItoscIkbO27MBzCrr7gUq0r2GQm+FWn94Yxr5N4qimNHuw9tubkQbUf9r1vB0l37LtaHgR1lu99J4YAo1oQU/EJoIH+GOx3M7soPAm/JNtmdj+ma/yHodDLAQC0OfME4mZfPBrUOuSOOhUf95rmgDB0dBSSkGesWVYEDmbcBgOZU95dvdOLVI7wjVMJS9eYML2Pz/txAMOkSxnB7E7I0p2cDAETWzwj8LT1CIL9v6XPQTTPclnnljd+6/Oqw/Y5xxLdiqf3Cif6Uizw8hwtvn8ksGkyYSIayG7aEA3wlBZvay3NZjxF8Xkv8cxyNSIADSjKXNrNgMGTVp/L1oKkSbgf5OkGGQD41B8x3sxbMoWKk8wpkYZvbTmQIDAQABAoICAAqEUwaKWLnwGnrIvBupkHsra8m615eFaqXIZDjhUUA4FZ2WEBgBV0ep27ORFg9hM5bSHdHJbP8jeD8ePlBDCHqYhnIChBsZTmWDythVnajKFHUeoU1rFMHx/Sfn9OxuFtDMwyuryd/UCoXGj17eauX9kkKKnYsyTC3BTwAw4pepCeuZLeysUoXtGqpQ+v7Z8Y7wV2ojzBqVZ18TUa52joZcPsfe6SNfJAvus6Vefpuv3HXL3m8n6FLb6sVJzYOvaIc4RKYymjjdgTERkQU1nO55ok65F337+6LMz+caL1b/E2z6KGgdoBAkak/WOprWr245hfglKT/ieIm41P9mCfDRXhikS4djyvpyQB/G5DL9tT8D4/3en8vCyVriIrxLsQfMe5N4eMM3BWN/hwWSc6dd/VoB8qI1Mr4T/dbSxNgqUIw9cOKoOdA2jWnriPMCZlZgkm0z9PFqtCR2BmZi5UV6gtetD6FN4Ch5r+dKdoqlT9bsdI79ICCha6WLa+7JNwIiuNyZnNv/N7prQk5ascRZH9iJfL2Az3bW8HsFraXCLpKpFaAk3IkCk4IHlLmZk5Imn+QTB4PKbVCuy70Kax2HKQQYeErV6e/owcsWNFZRZDxcGoRkhihBpiJdbq+5uKSri6Gf4z29BANdiSUmce0jJTRhut/hayPh2BMGVtDHAoIBAQDPWPB0NQhQW8IR4Amy0JyEYqBJnDXN3er9XoUdl4Sw+jOaeqEljBLZj0DKi88Gfl/GXM2Y0a0sa+49+iH+Gg3W8/1AxjBWmVwirGXwcvOozCTpvBTD8jPx7/q5OBVGBVBx7jL/79MnsXQ7vSBhw0hN4pyzOP4Q7SV1WuQVEtgdPMSbrnh/GNBy83wSL5AANNeevVynI2KovxMdqy/lTzmoV+HdlB9EIX1AedbplYwWh/qamj4eUYO6q262bh5S6DXe5mzJC8QGj2fJ3dsW+snG3qGfucC0Rt8+RmuN+a+A9I97ZVfcfwbdIVUMAukvONmXAbEtp9TDE79sd4XEmlWnAoIBAQDh3y8YDk+eW9yili5FBEUWGTrGtkdgF2xz1HweiahWLeLA6jGle/rdRhA3BzFMnIl0t0Y654n1CknBut902Wv79opQpds48IWb4FlCyWvhzzPpR2JxkWewKPTxhrWGuLORT++sPVBBL2z96P204UeLeXFgne8y1Fy4WPZs/W1ihft+SAzuMA1twFiNQthMyN2SMDDHC8N1w3sT/kMbaILnhN5n+w+/fUWYVI8WDzFMU12IM5wy/aVrOVJXnFeMB5/TirDLqTYmw4NKB7syrhh5s02SGf/WB7MbYkUrZtyVgqLXe8sp8AGvg6ELHO6XR1sSH7r4RwM/fY0Iq+1RnTS/AoIBABTWQUPMWIuKzRPyyca4hCIhry32jsmjdYwExafVpDYMzsbFcBBP5U0Lwl0Yc7OZW5KZnOewmpCOQCDmVCgvAhkJ5/dsc0sgmku5u3zQcIAUE9mRVxzh6Cp2DWIzqp+gxRbN8z4ZIcUpZh7iwLBSaZ+6GDlCjvWwf0Ut3yHnBOTbSH7Ep8NOARSsN1m0geojZU/Eg90gBzgiC4+9tlB7B7ZNLpuP2RyFqQqjs99BchSJkbubqIZvdqd5tuSKaG24fEFsMp55mjd2jd2ReAT1KvXbRa7BggYb4S9m8EQSRXrWGN0zsAKumUf7o4pTeI+QTP2J4/5MkWsRPvltgXnicJ0CggEAHl3uK/LIm4bILAe64saHL0hnEY4yHGYpy4zWvxhMzIFQyhTyZcg8WwFvbqaF50HobQuy4np8nrgqYGRqZIBSt0ZXJC6YQZh8rg9EkOkZmvtLhGJ3hsNAyHtJKyusPheY9MFlfKeloY3pvl1TtrzO7J6AMrgpD5FjgdlcEB0mVqeiv0CalG9bbtT8UsmY4QHkYCIgfLJFLhEA/BgkF4w+hTfk2t/zJxCFicxcjF+whg1zNruRlX1qfvbu7h5z2ryvrTYpPMhcImwIu6w8a7ziR4JmvGzIa5MPbnAQ0pv6rhMpJ4VaNCIzZ9Bvl1nlbetHADHJ5lVNx3xuuKq8tktHawKCAQB9MBfK/dkHSYY0HQEarZb1h/4WEVCht/hwu3htW5bdhdKG31+OTGDsflaz4ZDWrgQR4neZH2u5HifJ1uKZ9+fn7e3yqoTDgvaerebOxWzAbSOfPS1YDBSw3v8FgXjZ5cy87aZfuUPw9zu6f0U3oBoSVCTHyvX6txOvJmCso5zZdkCTKVAPcCG/4yR6BzQ0TospzQVFpTacVlD+LwmUvuFgWc2sJj2/s59nGxCan4OH35/hb0P6F7TREDXanMYx7FUgmCl3D4HM27VCrpQ2j+pDexCa54ElV6g6I2ASy/MY2wjUpy6MNN09HW7aAUJ4km57GtPlO25Z7TCvrEPAZLK8" + }, + { + "bits": 8192, + "seed": "5e/+g6V364S+Rmp/FOC7Fg==", + "private_key_pkcs8": "MIISQgIBADANBgkqhkiG9w0BAQEFAASCEiwwghIoAgEAAoIEAQDH9w6XRET3hYmJkp+Vq4HUrNqm6uC/kSkgT4rBW1PhUHYtnhWsmanQmD1FXVZoS47xayBcHlD4SU6thxEgPEXxPR+4Y/qJpp0CQR5z+fGv7KqtjkZr45KgItIZ7J0pH3W0y7CnjHK87zTJFbVsaWuN+bVNdYfDjzRMR5Y4+nBl48s3UwKZQOIH1WifTAP/Jq8SZFk8v87E3QSHhFWgyP1VA/c2QpS8xQhVv6KWCoP+C2ZnPZSruTo0BOay6Lk/xbWLMR6Sj+psAlUorXsgrBV8ZQbcAHzH+2CCyVghde64Z4RCD5IT9aBRN9JXtdS+b27tsWD2eGZ3PeCYwrQreBYZgTZ6h2MteotKH2uflwQMODSRuM3fgRWK6McW78Fag4HytJZeuRy/YtBwDlbRi0ZIMUQuKNUJKDVkhuGVexiiohUXYqtjn0apHfo+ADetZA/pFY/J2UQ4uC4NBBQNEbZAQILwq00BruKa4q3asuOWVW6mm6r1H/VTEyY8mdnT1V7ae9Lk0k64jGbohfCutTL/wIGCVErjD0WyvyMBjxzfHZD2VceKZccbLC27kYW78hEaj4W35PDppT9msV6kvf46upYYR4ZVj+9XCgvz2IJ05OuHMEdFECehpBApun+Vt/W+BxfL1vmwcszGcZEerMyIoZF2PE7HVdUrWjJV75MtmDcUJk2jHbm2bfUCAHiGNanQ5y7fJQDDSIj4jLCGAClkgNPu1I0BnHZo9+3n/oZ+9ufsd5tNpQixvkafg8eva6i3smKxZiFkbVuj01Rx4vEHUGBAiK4mvFkK+Qu4o4jFBjGPKxOr/jq/uh2iaEi75U2IxIxrhaoAIP1SZ8a+JLv4DSHcckQPRna6jVhlsIMbR470OI8KlFiRNfIz+B+d2t/uqJaJI3ljz3CxLwhGszvEAFTU3nnsvTREUA2JQx1FGX4Xig/UmjcfJzZQoyC7rRuer/c8/VBoU3bCa8F1HwtO0DV6YttkyGut58zlAjMPeL97lR12//UEVd1TuvDhyJ7aYm0u78CDM5Ptwag9ma8GPZSTT9MfEVUwP61i1H6RsAPuwUSH10wMF20qQKwBKTNEEBd0hco316a3cFSMS91IVxIz88KwlxT2O1liCaNccwmjE8tsTyNCF6UA2JQEGv20W4pSKpu+lL3yph/NHzBblaj2+K9PAb5dUxBZWaViSV30nr2ZXnWwMw3jCJdadknmaE15clGf5/dLcQcb6xXRu52kHfqrxGR09NoB/z8t0JfO7gUIrv0Jce3OjR7/9qJRKpUndUaNADuNI1Jx0Q7MPAdftonymaiOFudmEZhAF38MYYl3ZklaRdaBqLoZMFLkYJtqBJZYe1NzvZRc5MM5AgMBAAECggQADe1WnlF6bjTmReco5z85PStG1U5RlfYRw7bWhq4KMwysFnRGtS1EpwsbZVvhW0U78PORnujboddVO//GwRSBmJI1xd1swy6QC+qmKNS1MRgOMSVSIUyJ105ljLmunoEa7RsstBaznRYZ+pFg/+p9u7czGfCAIq40KcXooBJNRsNtUW6eJTdgJsSF02Zzds9mbSUBFBqV158/JAMjBZ5KCqRKkQRlIJqmgHZm6AVWeRipKrKeyrENbTcULEzKLjdidA3ZP8L3REuLS9h9VWK24mGU7zi3eCQ5bhKA6V+x3zUSgJleBrbaUh3NsB8xcIwJUVPD2Za8KDzuiiUxcD+eZmtZ9IG+dhntXp2+nLBjb0hw3N9es1zlt7WLvDy5nki/gbxzJqjE6E2FD/DnuhN1syx/P6nHYKpkwZolVwhqSFV6m5TbNAaRYND+L1hLiG+KLiU6zQetWTf2uSBaFyjvJR15ITMFG4NnM/tquWsxL7TGjqMT7puptf4E8T6T7c2UHCp4n0hIhFD/D93YTArBwQ9S1dVyG8tiAteOJBsoGyAPiyChU7HQAsP6cXBqvJLY/x0U5qBy6QsB1fCvk1DKRqPdNVax8/6g4FKKT5L6TxLslo9Vv2knIXpwR7++CBr2aiRLU36nCFOOkJmzTkwhuLhsDayYngiL3sea7uJPQWMTZLXxwy1zE4hA5W+dndg/+zHRl9/HHrt/ZV6pKznYrCjqfXyLJYc/htWbXaCcAgJDT7dM+K4PsrQUaOzxZwqFpCXdBFIqM9zGZ5y1mSQNeDxUuny8E6QugLBSiKLGeZ9HfA2TTZBd9tFeaVXiLQsNNt15ZfAsY6SB88tG8G2P4GODj80HUD1qri2DscJP+G5KrSCqdNkbmmoWoZvpeLi84In9/jAnvWY5jDuGryxQ+5iWwIfRAq9y+/iskZkMOPQ3kKi6R8p50CV6fTPgWhqLS3FFmqdyL6eYnkm5gji79/4x1EBQBuy3/DWmc7oarIjJLML5El6Jjzl74Kfa3oC/fgf+J9qnD3CDD1b1FGw88FHR6yLMII3xmebMtP/S947rnseFxmiK2GlNrYx1I2gkd8tDl+kZ76MRwaKQuMLgSk1TkdbMyzqPQjPIRFUrEISra/ciif+Pq0HH+voMZXO/sLbneBtNZg+Bc/1v2wOUyjjcVjl+WbF/38IFu7raH47KaUFTZCrf2rSlPhQplI/fxr99rMTkz00XWa2aoA19y7RkIkNarrPXgEeQqlmn2nT1FvPuBNK2jOKZN9nTBLL21xr1wC1kVBhqIuzws9wqbxnId8skpxqNLppwoSkskp7ExlYhcL/QiJlMfN7NGhRBq4xNQB/gJmVeTjnrcsOzCwKCAgEA/f2K9oZnJv6rNxIbQ6DmP96GNKldkHf8/9e+txJIX80GwJ7fsoWCnyKxhGRuX/KFaW6Q1+rqB+VqRGtxxOrkUvFu4efu+D6vPTiuKPJw33Ez7t80R9RdMds/75/IeoHMa6gptPZTjj/nckH/TYN0+NYRVtRxnrPsJ0pWNfiH00aePH7BEHPwE6XcmxE2JLrfYVH7Kd8LH9ZOPEsVQ83OkYhBrjFeWf6Cm/mTcDPXkjcwiFPpm3ZMFpWmlUWROERPNuWGSQrUBV5VUfZWVK4IVkb0EIJPThPQOCy1XUYDyZ//80DybJMkzXy38+FmJhWwlTCdgr6XM6KUIrHb7vZtSiccKgGX4Or77j1lgebZSkdGd95joP06AOuNyD6dxKUB573xFCdJlWyyOYOSEntIZIxjxUqUd0wY6etoi/5FJYOaHBS0jc3bujPhwAwhwL+xZO85ymHuFIsVBXLufdT5Hl1WQ7UajAd2xjJFHJ7HgrJ1YFw4zZzy/MYuttPqdE/MNMuQECml9S89tNhezPE12+/lJrxzkVy8OHmENMf2bA+3WvEh632qQdJTw6qjpPkpWY+P+Fnf/6vcHiXX2sQtSyJN9TtcS/XguttdE7AJWrrQJeJCccn7s1/TO4gV8ViaqljcsLdhk6gLIeagADlxX1H5UXdZvWSOHIWlCQnmZxcCggIBAMmMFf/r0r3ZJA2t6SEvICTaaegjz6CcW/1JoZvomSSIf0huKAYH3uR6V6zUsQJBRjThpG6kbqZ1Wk/TIrvZXlOiOpOJfYZqTs2bO0/LEVgKf6jGOop5updypG4RUq3GK35Ru1Pu+d1BPc6WJqkBA5h7P9sS6PPWIA0ePMQUBQqu8Yx7TM2StyqKtdm4wfLDjO+btvuW2d/j5Huusg9nRQCtv9tLAJrV8ubOmTcQQASGW6CVHYASTenAhCSZMKDxn188F/hzTgbB11McRwuZReimIxhXLp74SwgwWP5Apb9w1JZTrdSSY7bRRiHnSJLe8o3BxmYtc9YQAqt0F7xwIaXPxDgGWM258s2Lre0cYJR/xWEiBh7RuD/Vgw7aGH+THmHddoGJObY7jkBAH30C52eNe/Q2L7Lz/UANb34clr3Cdcv3A2Js0kQWDfhWTVIZTt5oDK02yvbx7iq+LIbGVFAZ05ot+J4YQvutfAapOnDnUODCIXcfoMw7a7fl7H5rItZus52CNr+CwMyQbmpv5npvXEnqwbK0+RBomZo78d4L0GQW0QuPNkAhEbWD5jurCAPlZ+wOI9p5pbvHm8iCOvBDX0E3DBQ4zW/2RyY7IJwTpxMe+NnAECiod3sYdm/eTG92QFny2FvTKR40RSjCwgWrllPSsR0UtQ/q6hiXjJovAoICACMYxfsK13Yr+rzBY8MUmLx6o1DjlmpAKlWwGkpx3E5gpm43hfHFQSd8Q8tnlVjsykKnZJxxeaVdrjGGJ1Juot5TPl85DWyAPPbYvjgqSC6YFfUMIs1KKxaYlV0nVyyWgwjdU+YNo74kVncTZ5PudltsOTkmYgzsD9XeD8ulbB9lwrfZTBRZ8PLGGJXU6wZoTDXGfk5q476ifm0WcvnLlp/FlE3dxIvq/2FOO3FluIQb3Dj6X218C0eTplE6K7b6uXd8f/HX7TRQtLl+sK9C3SQO6ereFtdTJZKdmvIomp1h3pxefSFDs/IxKbopi1P3606ySRGoBHy+Gnow2ZNLug5lGR802SfbULS7ByvMGnqJHtOxh1LXqww1gIILJQHnSzwaoxWF2EUtn/MSmzyyjG5Yd/DrPVi+yzKHtQqjOCrW5JS8x7ZQm+w+/xLqmj9oPbsU04eDwMJV9bGrEAmTRFlNzH3OqLxwy5jXmXU6+5az0kReefrvlSQYvpvE7MDlxfIFrwKMvsICpSQ4QeFP84FQxPl1UQLlLZ0gLYSdnQ+RnGSUrXs9AinWRnzjN3m0dGJL1DkdMjbCKMiBsjIoqZmYQ+1/JmHYuBUZ+uKdkK1Y4ypY+ZV/s6g1tZqkU2PmOnkPjm9c577fmao1lCZzyZbCXRFEzMG/A2Qtk4CMPapBAoICAQC95RNFUbf50AE8MkOZVIGAt5lZc4RI24mAmEOAViMUXNcwMznalMfZlbvNx4gPi9jOMltvM9ZdV+yDkXcEbsWFHzD5mW1/m+Irrrqvb7EjtqCZMEwv9Ilt8EIkwoWX3UNVfUR2zI73fGTzpF1AlwgAPv/nNWXveCwyr+6pAAPQEQzdQ78VYcradl7oiD+Ur9K2X4yEd5lIbbv1HKAAC1jkTtCZmY00VajK9pU9YD4xBTaHknd9F8H5H75hjURYH8/9Nu2O1XUKwNBUKix2LS/FB+PBJ0Nx3Jc1W/g9dkO0oGZsTONXiaYRthPSFcw3NYBrN8vqsaCWa/dX+8XxceUCCUPjVXeOPkkaiSSSZ05IHCqoXhpOJ2LmIhGdiLfUW5UguDzTx6tsm6hnuQLyEi5dTt0fN36xqVlPZFlMBTuyBupeBppVvhpOtEjtVsL7O4Un3/kxqpKJIWE5PH1PbsY5wluwxOeebVWPM+HLlN7PSeLWIZLOXipuwv23AxdT9TWZvCvXl7xlrJhjJSIjftM1QH8/1cQy0HhqkWNIAnrcr1zlMOo9be27dmztDR170qV2pkrICnqVelBBIM0SmkFV5uR02Zyz4OEPQIfA6azL4Whlh6UH5QJUjIYmoOHWfSifTFdNaJWZztbK8ozG3tlX5ld5GuZtc/k0yi1OhlufWQKCAgBUAz7UfaRwf7txpqCFc8mabkyIgFSfO1Wy5NGA1cG0DWmd9pSoITkUzjq36KbKWEoh525nPPemvCYevDdkShLfqP2zzUgADjiciwkNZWR0MJ5hFHiDx77UazG7MghWeg76aFfo4TwkdRj1fSDjcbdwCO4ruTD6Z+w5hP8vkmYGNH3agu13h7rm+1f3QWtJouEdFJ9cbKbpS0gRdL1Ux8ikfv0/ELBL/dXdLKV6ZnO1zqtJrHRNAM0BPThYJ+HZp1NznYY51Te2ToF9vCqhgx5CVfxeAlb6UHIUNB78pMbr+AxXcZAae2QJW9v5I7y6SbtHMJ9KmuVts2t09hSyPdcQmZtjtI30n87oj0eJUp+nJnmEnGZHRPY8TAdSn7xpd3zQZ85FpQ+4EnpyOSMZHtHM24zHsgZrMbOVZlqEWr9LIULgIaQBFrnFWyGa5/l5EDltKD8ce0Kl+o01KUS0+KKUEhSAyHl0JsLu9+sqX7MDNX0HLHzXBvZX3T7f3vEmOH2jHCRR9rzyFzUCvQoX1iP1r8ltU0jYutNKUqtOZe/Q71jB2FFCp5nNnOakx2w9DIow/OK3/n0CRw2VuNzCfaTd5ShGNF94xOsjw+bEGWXnuknBrrqNz9bfAoJtMjcf3XHr9PhPZ4iSemUB0TTsfACx7GdTy/qxFxDzMIYCH2cl9Q==" + }, + { + "bits": 2048, + "seed": "TkjKwQxJCvzgbfpR3nTKBf0cHgST", + "private_key_pkcs8": "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC1GFFGc3Vs+9l4ZtBrv8o9TRF7l5gVv3U5SSVTZhVnBPrTuc6v9/H9bvoNwmqT5V3lGt4TPE1e6zaEn98osc0yDyAUm7tqXwFw/c3yrGrbGiqsLDhZJ1xH9OxZAYekvMST3ockaBECrAMjn01kvfJw0s8MZ5hToZnmxno9GutWz+v0Rzct9GHBkK7vA4IKeMDkEWVbEXj/O8uD1r1UjfW/s4RNaBySv+UOzTEkjZiloAqoax+P+buCghtNf9/O8PUysImdIGCFtJRf0/0bTpHSzAO3mdtQSb3nAHTxE0Gb6G/geb33tEskrNFDIX8fCqMUbCAXBxb7VTSPwfazPryhAgMBAAECggEAP3Cl5D7FR6kQnYezAtQcto3djoTkL9Yy7B8ONuGfpMfPUMWaPPXoraYnbhOJ/4aN9pkLbASnfBV9M0fIRvrGjf9TdzS5GoHuwNUAxT8WbewEP+17zeumfcS02VdaW+EPIlgF0sCsGNoGfX+sfpq2KEUJaGiQKdgGUJx+LRLVl8LHI49FRIGqKT308zkZRlhkkK78h8D9VwIM04/VChmMiOHkwVJqeeGX4ItqjtlO0pMq4I1ONISvxtGn+IfQRjAdna2JV6iRzQQdmj66uZOcCd/7x2NtCtxQ0aCvhGKyaJ2sIKnkhOUevqbURLLsBE5NHWWmwZLcw6BjFcgai/SI+wKBgQDWUZcwItCgEoNYLpoRN+x84VJBwIf9l97kxGZqlASLeHQbS8dRMqioXD6XG2fNx4ZThhTX+4+jK/EewE1R4wKJu8Kfjc5KxRpARvhYdRKlIVcf2j+PTQImyw/k1jSg5rNg/K1Vxb5fy6KJxET6YCuW2XUkcDiH2/KJIyuBtcV6NwKBgQDYUJkmBEQf8MLRTL22B2wGW8Q6F3ZJCtTMrqCmDCiqdi/PHA2SAg1CkoHPlVQMcf71zDxpvGEVBsBeGZ/X2BzJNab9sC9iiLvigJw1Pw9SMmVSfDOEHRbVHMgRbDdTv7GGBMPNZPYyT/8I6xeWEMB34CVoGXBWtNzMnhPNYq+z5wKBgEkcmlv0dIE275GkjDB1iHptj1cY7AtpxML78QhIqGg/1jP9nOgpRPnyRfPciIPdngheRDwN+Eks01uvNHFL5PDBmbo+cPJ23Oayj0P15D9q6ULXfDlRhvte6HQjUt7U9LqQWD1bcP9TA4bF6tYS+qvCUUD1+4L1WH7J/ayJKu3vAoGAMovS3ZFNofEOdP3rrqdZVLsIxVJKL5M6WoHLxEE/F2X6kfjKKv4TvySg9LK+KxJQM3t/+m0sek9TkCmIslUrlNDWrp0G1Y2B6dGHruGHYPuptXaUSyDI/w90qK2S2B0JDHn8jvgyl1seCyV0I3rSnrBfzU10dK5ake22Tt3qlK0CgYB8Dy7DucMS8aCGr7BOiD7z9+Aw7567RkqFxHnh/0zskYO2qDKPWgAoy3dRf0JpwMv9/gEysEvNpeL7qIMMYFJ/z5RHe2Mr9QRJM+0JCEaNIgeR9/gZbEolANs2a5M/YYcDeMfsYtCdct/55fIqCyeZQR80ilHt8CR7LLcMwnOFcA==" + }, + { + "bits": 2048, + "seed": "U7awSsozqZZvZD+uY5H8RnAd3DtLWuCW", + "private_key_pkcs8": "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlCAmVmFlk1sVuhyKoSFMXb6iHBybOlrIQKwgCzRVB2fn6HWkz5UxjKOqfkn1Hnv5bAyg2X7iJLbzLk4JZNqDfyPYxagj7hZfdLEvdFAFFw0/2klr7ObwH04x5XSTObJHqcKJo8ePO1yQ3Hll/uvSR47J8Zav4tWEhnyc4CfihVIQK8whcmP97iuzGzJlmC8WrMU4Sx2SCk0THE2S4ezO2LmFC0uvr1sNbIPkZIHdadFefA73w0SOzAUQQl5aszfi/pevEHHYrkdpYczs+gHHdA4pzeQWjpvNC97Zg4YUuR5RNn0WJsypbcOHz2iF8M3eID0c8TG2BYdJM+/wvXhMJAgMBAAECggEAJX6YWxYy5FBIyBx1bwlQGREdjOV90+pVwlHZIOREK6CszOaNt4I9bCphprgLrHL5/xpYNfabtlF3i/hdKY/I7Hnw3AwY5lxrjTjYPpwszSf5aktxe5lrD/jxEVlPUj/x72h7HiUjf1Q3SJK+YivQKCYXrUfTzIadHSz59bGkM3zcSciSDYpNNFHGSdb+QKZNeBgMILfB6GuK+X95Wdi0M05MOM+mzFQvbfRxJit6ndP5+wE+mTAtiV62c6L7/lfjljQ7fsaFs+CpGq5/eX0a7OXHF83w+rZWzRLO20iWcDCDkC9UVINCCIONghC6+/gjP2kUfR14QLeQQSDGc2AeNQKBgQD2VefzHqndlwMO9i1+IpNkyDOIflZXhtLlOvwmnLSaWO7fBLCKjAxjs89nUUsqkFTxEkmfsVwpGbMrWRp6k4Pj1k8KNBxSp21yzRKamh/jIMxb43QjLruheLA2s5PwSB/gkrNkK4yR6ieHV6z6RipuXlR0mQSxLzxzyklSyhDmtwKBgQDuBFXXj0pJLR11K/P58FnDNORtNLc7yykcl/BUYvlx3/HCKZ4C4wYmbr+Qbgfpzv/7FQl85HVFlFwnmO/Q+lhT/yDeMq5z3ng6IS7+ahiJV7jRCgRvuDLLIpi4xeqjdZUDYkgvQJ8H1D8FlILuQ1i5ky+G+KeAzuS1LfHIb0kUPwKBgHA4cpKvRXNNeHc4b0EnPz6Kde+Ynn0BTtJfLL/qY9xs52VyHXsAkiRZpgLLZhLd7dRlIGU/x1xx+M2mqgltaohA+YEMfFqrK5FBG1iTHjO6nV6/IAlnINNOx/gjlyG/ucX1DwRzUnam1ZsytfrOPEZLcu4rR5fwjPmzDfRJWanBAoGBAJ37qq7FoV0o4OChJ/PCIRJ8zRHfZ6/8jXE5OIAKod9/8Ywa65Km9bIU2HoZTo9WonoZ4I5RZbWlX/W4gZWIVZCLS1mw8jJefBa5Z+PesCKZY0b9CyzMaoqCkDQ0yiVtKldwqNEUZ3pe2uXtSWq0sPOcSnOgIC5TJWNM96s+kpcpAoGAGhMrM4FAzAX7oV61D1/fWCYRXDF9FGckj6WHy4tS4FnaVDTr7L085YA5WFAAK6/t9+eWE2NIjMw+a2co3UDm7ldQPm2V92isLiQrhS7jJwqvsHSpi0YpP173uTucUZ/o9RFPQEOoXA44Z19kDrpXxDlNudaCNQiWZ6OETwxMM9Q=" + }, + { + "bits": 2048, + "seed": "DG4jx5s6VbgejQrjlAjUpVc6QIAcVyBDPeoYIcZPa8DLsy6i", + "private_key_pkcs8": "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC3fBeybYQBUL2ARNFOFoN9P1M59W2y0ZBSrV22MKCgoK0ZTuMuY9a0ioM8cctTwMxEltol4L9G8+PM4sHswS6EHGgI47825HS/sYjVrlMRnMJxi4C06Dh/3p3gKxjKhGvgnAxik9yZBOVGTGOSpOn5N1MGX1FhevnmHK7C+ZJ6EQKMr938ayUWEw+sWnN3jXJH54yJ6D4MgydhI3zwd6RDdAqVYgialUzTVpairVDdt0eZr3TeqqGdafJ5rwzy4V2jlmZVoUNk4PYz7Wk30vDXhOJxSFqX+ibZJjXNN8SQCoWVD+mfN3JwcfZUlQLJql+6mCbKj9IiI7KlYPAeyGxBAgMBAAECggEAMLgc7K4imlzPbHMZZlQZBtUdKqsNvSji2ukYlGs2A2CWhb1KGkO9O0P6E78dX3g2ZNHvS5ZxA4x3xKvDFTO4P7DxOMcMOy2PCGVB8YbvnKIUiSSjAKYWdnFsVxzqYL+ni0S0Dyq2rNS9chyPZd0vGRLFE1CU4b7PAvhDuRaee5V8UNyuKdgBf1ZPdwtdin2Ow0Fro/ffK2Vu+1jw5RsjhoBGGtohaUApp+SyEgF3+3mqvSediTnb1Wt83Xz8tlN/cu3q9tm9MehnVZfVKhAF2ZkbwW3IYfrbbWsuBglAsPdU6fo9a5HWDhO2jI8wS+CJJ5S5WYfIZh4sAyZhwHvgpwKBgQDnghxgfFmW8vQURPWPG4rLUKZoMlK9kFWd5V1Z8NdjiPv5KcXJt3XwBHqcWNU+OCecyzooB3n1hzPyRsJmfyy9JlGohMNI5hP/6EcO9YEQ5/H4eIwInLI/epgvTnghbIJe7wOhMf5GuR0OqETeOGxvRdXIEzHrVpJbs4Ta+V6afwKBgQDK5V8BzJ/D26uzAuc4Bm7Od/gMzjlEU4lDpt1eqOqpOoUQYaANUafEjUVTjdqphwSoAa9zkDHPvFWcgBKyvv7MMMdX4Hcsu4U38A3o1f1nP9FUQN9OgX09wgJsMRGGWG0e3n5GiByohXiKmtyjez5Zya61kYjYV7yW0v1Lg5YZPwKBgHFxLlqRVI1FTBlKmVGg22g5gvF4B1dgjLOsmwvhmonprB8yOvtXbPFKIJLQbN3qQm7wnvTShQ6tS+Uii0wScWfWiRkcxVzJcW9q8LcB0lbocYeh+myV7Dpy5nP37aHjPBcs5AhvKPya5QQzrFuAJpJ4FAPQdBuv9lP9KdLrc1IdAoGAW/9s+M/jkVdFn0GtvcWM8KmNG6FWbhjCoJ5Eues1m84hD7B0dhWUUJcN3Djx8PR7tAIvn+K980eeOfwIfmwD9GoZuUraPro4SYjbhbuhzvMs41sW5e3o79vMZWpKW/Q0Zk7USv7kn7UFVzOo36e+OdAtG78FobMGnAzHNTpRENkCgYBld0gSB+qCfo8G4uA42+WYt9UstOt+9LeutsiI9Uf5jrPluEubOGtUhf00im1cFLfOz1pD/hncgxvY8eQLQptr2iolwi5H9IrvVxhpKhxXSiPaecYqwAhi0tybCc/Z8hPzqhUDMYPE3ihENAlf4S1Jyz/ZXcg/nFn72s3muVWAjQ==" + }, + { + "bits": 2048, + "seed": "U7htX0473FRAx6SiN6Zv+kbK5lgGZlM7aX7O5TWR7mztS/TVuiFU/HWfGTNNtXqP", + "private_key_pkcs8": "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCnZ0kPch1ksmn92rjwgUOnUfkOme2CE/B86xjBA1BMkXrbymzH7F0L6DHUUW+9mRb2qh3ZBfAzqY0+xHx1lhAd0CtH2mbYzqona4HKWhuovMNi8Ufbu3m0h/ZFIzG5oyqZpoZmvDJYNqTtLGFTzunqDccGR/PWBbSt3UAXQVsyH8Dg+Vz2j9q4qMAvA3ihLItoi6ka7OTuTH+CfQp5bfjTe+HI0uZTwtT5Jrh8wYlErxJOixthK1GgftpMbb/518p3DuVNYJUudXqya0sRAAaBF3V5N6aq5Ia1q5NjC+H0QqHTUsetkwDWHpD7AqVPcRYkFoR6AIBG1nG92+/ZiY9hAgMBAAECggEAFYgh7BQr9q9CFc5Dul+OAZ/4Dmo7E9+Xr6GXkf/onKibqliLjF15DFaFzj7ZRgRCYWC5LRhn8GUvDzM7pO4zzXngj0Hmt51BYoef7pSPeTEqWngZW4huG4vfX74qn6t+h7vVDrLHMPR6Wy05qYt0J9A02Lh5gv5B4pkSLMuRvM0Gg2ux0Gj23E3p7wC4nJa+wLZW/jemBuzlyGqY3pxHlYI208I1ZNOSVQnXHv85HLO9XWq7R0Wj6mD1eZWGFmIS18wkx54ydWY1ZHwdh68O00SKpFn5TPO9Xb8gpdQ/GVYg4IGrL/oCcxrTOxiP2aCDzHtD8YpG53vDV4y+ydWutwKBgQDPepLszZ645EHTdzPg73z4uq7MiOl+bCxUHYqaXhIz2ZtyMs3eZ4wB7fGoXlUYhlipL6WDH8q/HUkQbcBKGrhj1jQEE4EMOUj3QvOMuCkQCZ/7glWNr4mA231Z/LZhcVHSBJ7SmdSDqtrceBAaFEFU52SGTPr5XYRIfJm71Kd35wKBgQDOjXbYgah2/i6kiDt6Ewori6YNtN+KsPz3AzTRKV6WgH7snkOOpBKHKYLGFTYPeN8poOAjMiY97sxKCwwpobXnyzxwiC6GGZy8NJS7FqGmFXP8lkYw4orcQviIue3p6AyUBVn/M3GkHU0jzZY8wCYCKtIkLI8xnFQ/LBaguXI1dwKBgQCIn9qofS6L6iM+sTxEXvAYijYZEf9P9MOsEFf5FwE9i4pFRRcz4VPc4WdEy/mVUMKJhoqjMgg8mXhHjT4Wjknl1GQkWwObnQ1jZX8jpxHDMdNbt5PG3VTaua5t12/x8sFCXzCG1i2PFq9Qhu9zfOsYkdcsaPzLwL0fTo2dlodA+QKBgQCV8rrZeF8ta1+/ECtldtcGP84f2zQBgnVSeWBpi8fgKI58BnTy44eT2f3XAWUKnGwd022D/48lnOtvwU9mFcBx8ugApcxoi8VuGBn1K/vUD3TxZMK2EHBQcMnusFPYYB5pgu0PyG/yfVcX69LqbW/qWN3PZw3ZLS034zDWI2qXBwKBgQCgTBSlor0qfxN1BBBhULW5V+ZJ9mcPdzrHaQFA2yexLwdMAP5XmhUquZhvex3YWDeZgNMz3R9xAyX3tuqUemmqdtrW+HWIAvoux2LcS8/SpAy52GlZdHMX7rQXw4vexSIME2F86iPzIg2C1yu9NZ56wWX5aL+siNRMvnqvCCgb9A==" + }, + { + "bits": 2048, + "seed": "MVfjfJZ0zPDbnAD4g3wahA==", + "private_key_pkcs8": "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC+YK+mOqKQsx1tJmB/hKesH78cq9BDSpVmK1k+Tu3WtObVkSMBXtYhnEFfDudofDUrzxl0NnN+N6P30UArTtov7FPbRZpfHBEpXxd6lkVolExlJgYJpLuRs49pIiinUDfdCawjN2WpZr3Zqc0bnWhMYiDCXGPrS7iJ3AMG2JMxnutaJEIe3HtMOK9u+Gap4avra+71HqNy4+Cr9Z0HirihqN+bJ+ctjhoYMy27YpAqEXQZ/UUqCBmRl4r64HSRlra+L0n31dpZ/i8U635vpt3TC3ebTptHdrajPJfUZBvKuT4huoqh0LLfN97em2adPzykaFI0CPH0s4xKNO52Y7h5AgMBAAECggEAAogXnd7GvaTcHdD2VIvHjQbpDDEOtm5d+TtXVvhGumWyciGZdRG1SEIjLmfs1Ntd+6Sn4n883u9Pe2Kpd0n3pc5/OPm+eUhOxB2TGtq3tpHOSEQOrX8mzWO1YwEEyGDNNV/FDbzVWcDXgnb7FsRrmCRv6hW/cGgT3qVx1tv3bR/5gtE41I6ooXEmPnAgV1iLRj9HNwgQ9SnAMrfsbE7hhf4pQcvzt02LsspR0YTrNtg4XDcsEEOlX/bebXK9dA2QscOJxtbGE/Td5NTtRmRK59HJKRaZrOI9ybS/gkVB3y59HauCpqJSBQfbRGmZA4R/lHO/vPsOPi7fiKIfGYpFpwKBgQDYOGAaxyEv5miZkowKK67a2y+vci65f1wI2mrfJ9jR18DgoX7qM8K8h/vQ4j86IC10IVupm3A0Q53nfV6Y72tvuUaKdNo6zyIinqDUu+5d2ndvvaRMKyXioc99OgIGRU7YtsBv7DV6pvrnw2jOcyWIsYUqZH29WR/C02jSC3rbxwKBgQDhZys3H3t/EUdKta/XSYE2LGtnz4W6TAixDZPOZwXQy3e2I3UjYbQovLareQNlYgiodCRjw42S4FYNu7t2DtmLElpqghY7TqhkrK/5XE+xI/8bb9/XHrCvmLHsoFOmD/VANlv5eT/3WHCTva3XughX37J8DGjrGdqpvM9rroJJvwKBgQCBv3q0NvBMTShRl6YfaE06GbOIxa0SNUHmMiNVnBS4/45HfcGqCrt95OAQXePxHmQIPwhBQ/xV8Ilt40aD4ZAH8BdLeImIJsnmGmiKn+ePPEzVqehQqMfIMq9PByM13htNYoUh5I3G9zKzJwjacjCA0X4GjV0C5dtwTuqkuKzV+wKBgH4qLDNHiO2f80KrHcioWQ3EoT3TF6wmYPsReXkfi07KhLBLeoaaaqgesTSboL3/uI7pq3C4Bad/sEsxmIVFXJkOZdOWCvGZXoIzcrBl7ild16442Zbkk8tF8dlcCFY8Om99vc+PAbHmK+VWV1cXxxHAoXvzykpGB3HYwFUqsbyrAoGAAhaZL4eKVl4pELCIw8SITc2++VXQzTvChD6JAF3GlyLeYgAnubTUhskSFLtF0epG0+pXeHagEZ3stlqZHidrZFkI61lxo6OQ3mbQDd8ruBd2215LtmGMas54Q8+7XPxxQkaz7mmjTqXjHTgO5bMvuBAYtmLT2z/lXjGQVAhJ03E=" + }, + { + "bits": 2048, + "seed": "hUzKwQxJCvzgbfpR3nTKBf0cHgST", + "private_key_pkcs8": "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkgIZOnN/YUS4vq77xanryk2a0RK/JlQCMuhNhLRT220HannQaAO049mBEDOJ6Iy/mbDD39O/1ragVATI1QnShog+DJw5EdhY7YjiK49ow2CZ1SyWX49Q7SU9O4Zj8+nje0IMcIpTA/1cuUXdBKfaoAkaNFORKZUCXZxDeBDPneMbSDnwYamenzOklFxlQyaBM2YmYxlNM+az8fLUIgx3jVjiPhewXGnsf4qDEDQ/VVjlPsO5YS4LF5o5irIbn1vIiu/y08cBu9y0yfzuD3Xf/XvLtEsP3exXc4YNIC3ZcG5EI7DLjLdpZ858ryYhFTdjq7qnAh9v6rnSHQkKf9wPxAgMBAAECggEADiyFe1mN+gFeAD0v9HTZx3PxlKpvFmiQcGUKDW9JJU9VYxpluOXdNXFucFPx4ayNezEASSUhgI19dDiIVHQiQNkKCswUhnaW9M1CP562qqBn3pG32Viyl9x5s7tsJ1lc4nScj2c1YlRon8o6LcherdxAVaCis6b6GUbdT7E/WFF5kOexx7FCiBgyjEbh9T6hlrickgD6OPL4qiuj5R7y8+GrfsQAawYPrzVBHSjFU6Kxt9CkMTJ5orXhgZYdAUQ12z7Mdf2Gs5Ep0fsKol9I3tSPbCenfVgajkDWqZBe4rHcjjg27ttOFmTpkvdDyau50cZ0Ne+qb90yDeXny1reVwKBgQDPwvvQ0R7lS8vRTyduGo5v/fQpoY1ycVL9cLnp4DMI8adN/34AiqrRiB679rmB87gyBtXbl1j8hAbyEA+YppSNNT/qdYDLG6tj9+wgooOlXa7Rp8gV0dX2atR+af6wtWMHoOppmYw+Stzj3VVR9+Cui0kpG8uz1Mmw7kgPnC/DxwKBgQDKskKUdRbVsSX9TPltiQBndSCKBDGEKJVoao3gf5zagdftb9Aark1uvFDPno2k8ECGGBi8fP1tdUhkm3f+Vtgfg5b/odd9ekpXJsjYOAcc6HOmI2KWhwsX+rAvG+pu2Lq7UQwvC/MYMVEcEoFqcsY/4KZ+M0wEv1rIXl5OP9cKhwKBgQCfWOQ8h3fT0+uSMMyENRgUK0oOeBr9sI8/VSsyhsN906JHP3MLxU84f9dawOQNGLmonPd/gbg9jKGrHMhpgzIij7njAJZ0sVclyGwxp5OizJSdtrrOiW86nTs3beJq8+PtYO0JazxWNqLunb6nrJ+GH8xQHEKDPewnqMpaNqen1wKBgF6NNuefku5Nu2XkQTnqPYkFJw+akyqN79wMUHBXtuhqxznX/aBkjHRKXfvrfzFgbQjgNrG+ME2d9w4PQ7Md+aUBsi8+5JGAuSrcSbYqtI60lDX8raGADxm5c/QVto7MhJaaYO+VSGmRn79TlpD8RyRG/ANElIJmbMeo1Z70wrADAoGALI2G4Qn5adINT7gprX5ZGoskEJpMpKK6Hqp/pr1X+rSz3xMvFwoBeCA1QHDEUdmI4hhTbZPBIVkct/d81s1pphBL4Q9oYSCvhP44fPUmGClBoWmkNJ3PMLSBw1PfcqipqVi//ax+0cULqnDhsKieFWvfbsADTcgfs0ln3I1ZyCY=" + }, + { + "bits": 2048, + "seed": "BHiU+6mkaGMosq89epJzbg==", + "private_key_pkcs8": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDtZkj8ZNlA5Cg6ErY+7z0PntHnO2R6vmP0DpwrCV99HELSFQvanMgPcc0gBil7EsD3CSPnHD5iARX4SauucgNjz+IPks2Z8flsm7A/I9JpQ7eGTCTVMEeQU3MJsXcN2AA9ySTUIJX7hLrCU1OM3zoxMQJfb9P+at1oSCGoIAl4pxkC/nlVqbjA/OwH2Ersp/zd7JCtZeVonw98j9CrQwn3v1cLvxvnZo224JjYobPW10aPTS8WPM4ii7fYKGZwqe3f33wp6aQiZS6u5D/oW9Noy6ZK16BGXR0GKhg4LKRyxxEotZpixEM9n0iAqJWjcBl8ajpo2xjs2U7r7hbgfwyhAgMBAAECggEABGTZQvqm3sGaUQDZqK6K5cgdwHbj9DWj6fd/Qnio8MreHb9P+drfBRIpJseWavW85pWfuX5XVT8J5g+PAuqPT4CggYNJFOlaoXz8NR73nQUo125/XAbJvE0fGvXS60mtL3eSm+6CeCZLwp8CM+BJ1nE+xv9t4A6gTHbRUKhPJJGCD0B8kqJEdnoNvq96/imyxcITUV8jqShA8x9KYmxzUIbInLKDbGuVBkHmf+qTKXNyHk5HMxv54zPHRZJ6J1QSdrF4ZjCN8uBjL/XEWf+Q92C0ThaCZwHtaMY/KLxdAs+fqJxDCd7AnVZQabzdfm6nFheSk7Zr7+1oVIKWG04HdQKBgQDxPWcoCGJnaesjkc8lWYt7LnqzyzLzWy8s4wmG4QT3+jB5SXMY0XGctjLpeDpAPjF5XWXl6j7TtsoQ9naColjW1iNtTW9HpTlzbwJ1cMUgaq3WKYeG74+PT8zM86YxRwpBd34mmgHZzimoyIFp0y03HP74KynkxF/p+syFmoFB5wKBgQD77LsFgrUKsX/nHjFQSAs24Nyi9lzv4SKekDAS+mVhWVfA9H/nc98cFxC3pWaXQf16GEh4yWVkVDCQA7n3r3TNApKsX8JMkchQmPQWEk2vNKLW7W86/1wiJC50ovbHw460NO084lcZAfDtlbGRr7qmRzh3XVl7axegDW3WGQJ8NwKBgG5PtawIqXbAaFWLhz19BNr/FfzBHjtJpvjPmLukibEbJq9PduISY/FVH1LDN1/JELZ+junjg3csTpoTGX4C3rzejrSchBYu52ZxjJ5HQtzf6z3TH7YENZFC3FOb1pMR+Q6WpYjhQ5dlPod/qC3L8xEQoUa59h417eYAWSV+0TxhAoGBAIOE1SZNVIKeo+1en9QPqHsf7U/OWjqJSG+LSu29d0vZPqzneBa3MVUS3ZFiciqpMtGY98zHJ323ThsBNwcNvGaC31vKKj+bI/6fu14CdDfxvMmD7zvXsJvKU85kfX1QpKGDuA6/A0V08/i025z5JvJD4EDApUR/ZjgSirLpH5kFAoGBAOgADIorCafm6YT9+9wN/f0ufpLoQ3oMet8IDdY7y/LH7IYwCjeXdECzpkpVPs3RpV9iYNHrAzgjpC/vg8r4o7FA3iJxQhRnjRMkFBQrlsFf9P9p+Gd90p5aVjSV9ZYGgWEl8zjtovYMDLGyQ2Pj3qZY6+OhX8orw/nBmn0sgp0P" + }, + { + "bits": 2064, + "seed": "AAm0fR9haQJ4tFDSiAQncQ==", + "private_key_pkcs8": "MIIExAIBADANBgkqhkiG9w0BAQEFAASCBK4wggSqAgEAAoIBAwDPQevpYzKUGmKJVR2/i9YseDsqSiLHOYuWSOh6E6tyeEaGOnEdWVORZAP1JVXXt/P/VXcx4ahYpXI+71wrgpvH85SEhHbkNlnvXVt2WiUpuogUZl4xB6sT2IczNxicWw3fk48C70UWYh3LaykBFc10o0bF+oNKvXSeDE+Z6CBc9EpPR3VC3bjx5QgSrXuz1ujw9Tc+0CscqPp5uwnSPgrSlBdeI3UKMwXQHTQiV6EOcC1ohQbM7e495tWzSbnd/qHD/IJILiL612L6ZVKThGDN3/E60Wp7WTp91ZFwFoXEegEboiqldLWKq3xsRyoUQhhugdt09iC8G97hnjCXZGBhOfECAwEAAQKCAQAeSoA/+o5OSjo0LspB4c+iuBcorMi3Ocl7r3MXj8hjaLK2vDpKB+95nyR+x1yJZbu9nYzpvWvpImx8b5rhlb8HejuFcXBdNR42ukLymvdBx3OWHVgk5gXUBCgc7blgRC2ToxEEvz51QhjxS2Vv1tt7LKDkfdAsnjkaWmtfhVKAYuysODfWz569Qd6xyTAkE3av9Mvem9OwkfYNC9USjtJfBJLK6ZPGHPKcyRq2Na0jHv98zYgWdRfcI9k6YS6uusUh3pBUzA/MOlqkSvpK3/TEw/ZOUzT5W14sRAfywVgOvHt/FdBIwctrhvKzeg3YJWmJ48sTn2Uch1XdkcbnAIx3AoGCAOjmvXKcnQvKMX30hRd/SE6g4TD+2plEBparYKyvJirk+L2QG7uOdyO1szmJsOUkoOG39cEbNrOChA3XKVmGVTteKLZPUh6Lj8nm8atBI0w+d/hriqcEeHBU+JcFYcGZd4PEfFgCr12RmLIo4uXYNzCSwT7awc/he2n+MiD3/pyYXwKBggDj0BisyrQ9J4MfE99Sbh9pPwbTJsJ4rXJfv2gfuvwxabWbrC/E+OIhYyAjZIvJu+MZbUBtKV+vbXi08GNa95+VgbE/7WPyvEKAfPttsVQoD9ec2q5PNcl69OLAh3T56DYbPtKd9lOzovM319kW8DrEZLnqGnWwikdL9c8GJTDIj68CgYEUOlYh6jBJodoCkoYssEVbbuWgF8JspVfdJi1TUjMCbrib3jRKaek3FMToLmlKvY+riwqxJuftV1yYxyM0P1KPwXHPw7viI0TtyD0dHp8uNA6/aLe2IdFEEF024KTI58dVjm8uRa1tdwPIFXz/cXP5qAVYrC9BGthZMFayPlfCygkCgYFhl2TqqM97nzCZoJ67pjdIk9ptnB4VKmBjyhBl/2lIFbvZ23J/VAszOE6tOsZzfky0OMwvt1ipQyFBifVWI9w2ZN+0vhJiCuoGNwRSonOl0duQ81FW13jfdoao6Z5f7G05ULlTOBH1U2oT0yDJpdHXDjtioUEnhqUyUjQEsuvqDzsCgYIAr7vC0JVBaU5XBenCWMqOMMWRsuMti8VXqLb/oPTAbCRGsHDkoVIO+4WhEselnsR7jm/5B4XuasEwyz/V8AKnEgqWYORNz1FquGtlcK39mu8PDDBdUPkGTunUClZ1FEMtFcol0Z/Dcz+ZXU10fdSJdlnTNMjEYYbbWXVY/DUl6uai" + }, + { + "bits": 2048, + "seed": "KPTbaR2yf+lPhr8GfCy89w==", + "private_key_pkcs8": "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEj4GKoI1HhXO70rq8hrrSCSlMrIjm2Y8mxsYMr0czipmTBA3xVbnM0fRtylS2+6S58uaqSGoJtT122T+qFzISMP8gqpdLwr4OMuURx1u3ArbZ5Oh061WVDlsWqUEg8gXzW3vMG6iU9CFY9gFMoISvANxQw3/Cc7TX4DfOd0CcggInlfIy4+7G4QMDQJF4U6gssWNR8mVf0o9tuDtPPcOYdaTotCTMjz2u7HEkiC+mSy8Vpx52GpC5FkgddYoq6VuX8PBkIerzt5OP1xDa5kytjPmFgrtd2wSJ5ctT6DvgV5bjzlSAuBiGYbz9t1qytgbTZUZgimzYhv13HOjr6c8xAgMBAAECggEAESHYKHOrL/AWaoK8J5FJGH3kU9XrlM6i2iST8vUWeQwvXvYI6EXdjPGoovOL6lFveSZ0kaQzW3QPNTWx6931TX3OlVO16v+NWAJHOJzhhi3XyPdZUrkhKEqSok+cT2ycG8SXuyGW0jmfhatJ6U2wYurpr3LRLVF8ElJtUTMDUBPv/6wburHxLXgjMYwBWgpfZN6Om/XpymuP1ytRLClO4QT8KiqzK3yJmZrjS03S4tuAphMPIWMX1e0gKq6f2oRvFF41S2Ru6+cFQNK8/QQou++wTr5yNOWLhyeJfy1MDwtRcIXyg6u3DmUw+0mYAaogvA8ZH+ZeijrVqyqeBK7uFQKBgQDOhSwLXwli97yAaRVP8Ug+9vNKjqmSkPVTy+0R8QmAMvGv9/gtKmHWSxlZAj8SDIGLq2ay/pJsZOuNUxtyMs0cpYiYSh/XpZURuUSA6AQmCGQ+az3IMLieZnphAIE6eOQBLXX6w0JyJzX6/L9Lq9DfHukV9SMFr6bUZYqUYZ2IhwKBgQDzp3bTnn389gLb9ladqK/nRHr56jlx1mCmUy27ucmJKTLgMUs2Ur++SptiEoOQyLqTRfIQChts5QGTOejBhWKwOYJhMLlp/ezRtTrB8GBEM6WvlVZOFZlXKkzrhGw6vqpIrhl4tRYokTqKD3tLchuWziwhQ0MeK/ph7nxKTLawhwKBgHzOcl2044FR4jNgTibv1A9pQoKOUOBohjpMBUtQdcNqBjGoE+2HrXTKEdl+yArqT+fOf9QwkOC85LWVwgJzvQ1Q5InUUgYK5Vm+sy2MCeXKMHqgaMfw2cGwgMjaez6RDInBpYkUM7W1CKRT1m+uuB3/GjHQ4YdwLcwySVt+2qtFAoGAYywvdnUVTMgJY+SBXsyRRG2gLGbEmOwsDKbgf39gY36sYYpO1b6aouaVFjb47A53uogGvbaPcSRJHta8QUB8acQOqGZ/oX+kS7sbPmMLm9b1wmDjbwblkg/6nQYaU1LV1p1ear4yVbK/BADHK283gYtLdQJ+qCI4WHIMjuVomrMCgYEAkjgV3/umfE40ZOVFPdJuZDRTe9uK7cjSiS8LjApDCnYpSRjNoc58e61zwgYR/0H0ugioiHPeoet3dpYmFpyIdapO5dO/oR22q46fv85RDX0+X3VznTOGXbZZ41BQHNfi63xcdJVviOvUB4s/VQMnWLcClY8uGk5rx257q8sPMdM=" + }, + { + "bits": 2048, + "seed": "9NgcC/qrIN/zXi6KHIp+nA==", + "private_key_pkcs8": "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDHVablXrWQf3zsppGeMir1gQxYqoCWeou/9tzwyHSgJSeICeuCGgxZ8yilpiFbQgM9nU7Rx+PVyVa6/8cMPDboCToZ8HcxHqefZ13vdBwCAh0EJgVAredopgISB+UP7KaJE9buvZdcpNuq06ZEio2m+S3pvqzrZ/UD/wnWPZylgW+fbUIotJZqMCa9ekOWlosBiLP4GmfoqeU12RPKAq+I/VxB7EpRlorFELycDvc24GdQ5J9agbl+jTX7US9VIPhETf/4V2W4uvRoYA1eXEbbNCL/QBfbz7pO+vU8L4eGNowRTV6m34nUowwhuo3jjK/Qv4FPsu9p8xd2wjgIYgEpAgMBAAECggEAYduJLxKDRRhpTk5pr4WGdHbxhjfSH82yfL+m8KggJRyIXy8riHfcN255tnSr7H6oU5+9+ZvNnH8Wzn/SCo4nEFuzQ9e61AjuFoHq6iqQs2WxM/+sVXfqYoQZARwSFnLBwQrV2eeGfstKMf9soTp51w5+PUHH51tmPBuBC0W8+LyIAcwnTqWmVnLOUX5AEjX3wX6YfenJdBK/lKvF60f86uErBUAE/uPwyCjkssAaU9giDhxHnXK562xXOKhL2rN4PCsjn2gmiUt1zH72Q6xm8JLtBwZj/t3U0jeHeWvJbkT9JY3uFlvyn4G9RVBI3pFOmoQO8eBJrmYHE+ei8Y+x7wKBgQDY4X/Uv9vNfLH6GCMtVN7w+aVuQI4/E0ZnUGz4HFhxSJgI+o/ZJ+cshjxHS4fFJrXemGBkwgGcUxlTdBWow600abJilna5Lg5yUt3JPhaHfEdln4U8Yv+tRg41fqigGMiY9QVsntnKUvZU5zGvKF5jBcH2ge6CzPulDLKP2rQ1VwKBgQDrSfNzLAJO0CGDwE4wzx5D7AcsfVxaDkhVc71mDf/bffgiVjZWsvQK3FiyysZfVYjLuTnatbML/mEEnIlwapKJ6Ta0HV3tZgM9uyD4t8QHqsEz9p7WSjsLmSfvP0X+PkkmXDnI+scp3cGq/JH2mVS68O5vuR8Rf2e69ymT3vbtfwKBgFmV9BauVZ3w1xeGZulvuFNz26jKE7fsP1WnvAtUshfBM8PptAewWuZiYH3WrjN6xP84lACqvr2S+dAmEFhQ07flvSDKJCpj4uXIYwKgme/HHzrUBNYn0pMBcBcaxY60DhBYjbALgcz4LfZuNXCzzSE8HJ21mA8BmyTXNN8FKRErAoGAaiHveNIvMFHd7EpAeu/SXR0Il17s24p5wmH02yYRdXa7CPIOjMkoIAYI1I13MeWpUQv6NtejLhPOu3/I1zabZy4ViOV+SumrKJtSYh6yhCrX/5KNT2gofjDVvKuz7N03reAICMpmMFJhW7mWNcAwYirvwuGkTAZGSiXXUWZPyA0CgYAbTCGy7FIho2ezdPqY4Nl1A8P5EaIum7BYm85lRtGCinFc1I7lYB/yYDcOHpK75uA6d+DlEYa6OCLoqV7uk8eFZrHj7fsJp4ACwG5Z9dG2wjSNHwHDCsugpOablb7IZ3yhG2Yz0cJAD+iKQXz0biP4iuAmQbc4ORZZMzEBWOPumA==" + }, + { + "bits": 2048, + "seed": "ki1yipQOtjAyekPIOgJaIQ==", + "private_key_pkcs8": "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDf+mOEGAc0gAgoqaePtT6CtFsoU/Vbe3KwDlBe6+EMiUNgCKLlZesmKAEEMPakJ6kT4Vmyz1XowPlcQHB2QrmgGV28rq4ksv2RyWVKWsN+F4wj0tA3M4wknar3bXwTr1X1I57h2pdnFGUhnFJC7r0UWyCGWQ8fERNgz8Es5UCLLrpIlnUhvloolt56lvDb6duisGzCtPxrH1qX7amMAXLamLJzNn5jPExzKzEos3qht66/3JhFo8fRHn9mQhix1jR0HA6Hiw/SiA93+5bSYmPePm2cVlCyg2rBv59As6N8Qoh4O8RtnpQM+2GPg/j5A/5JdnCqCsQ/HiwPmgzqYVPBAgMBAAECggEAbHJcBPVtZ6omSSn8C8UCA184VApy3lyjZ0NG/u7PBLbhfHoyBUiX1t2/wDvE8C6T2yBdwgpJ2my1UEmTKm+cWTxu+pDJmNNhm1kcRig0R7U3EZFdZ5z52jDNOwgz74QR5qPcphalADAL135NBkN6IYUN9n7gp3YpH9L4Abjuy3RoUOii2/tbdS81TavSRR0Ntbd1H3yK8WnIjQ53lYpxtrTyF7+OoUBM98XhHnm9OmwbngVfsUoFlSRTUEk3k54zFPRRnmJQZfkq8wFoMkFdW5Ikq9LlcVaQ88MBBcjHgZZlmtzf62bP6r00+ByayizaEMr9d2QTbIQ0/5z9hvO50QKBgQDiBswSb/oCNW+bPwWfsuuYfibwfVj25EUtM/bCYIdY8jDhpVqzSY4wtZKDDi/yj/7NpDcF9PGl1HAwFugvd7CWgmH7c1uMomyKE4lvTEm9eV9bwDV0wt6y2Oi75U2s5o56W9GPWVtWvhQ2a8HpYjg+KXsbQoy12VVWBIQH2ZkVrwKBgQD9rgyz6eY7Wp9ifteR4wEk0Y+PxUwwhvm4xm3QUoo1x7G9iH8YDvFXeOb+Kcluab6jpfL5XW3C3G1xYeb/bB6HKxNxQQJw0uX6LVNPeiTJZlPamOmy83OFIS8DCkGd0oy5ZDI6bwyUQ5luiqe8upYly5Yl6l4/UIV50PvGXWn5jwKBgQCNUrSsXolScjjbN9d7V/LJAS+1tJo4nNfIALKsLJDUA3Ke07XXXgli2VTHTsqZ/oDR8XhZ6CJjjmWrG9eHPm4SXWmIQEOgtjnpR3fqOCfvKYF/K7oAzItUBh3WxfQARJQXW2u3FqbuoKCgulWfaENEUslfbQfv9/jMdLxc8CgwjwKBgQCwdyOk/79FaJvY821XsXa5OwHHvDJsy2fpjjcTpGc6VAijVNE8ViCyfYsKIN1bbjnMMwNbTg+tbpK/PaBn67ksw91JejSNcVfDeUYr0kbGxuTr+lUPQ+UHJfdDAR51/+IekMGT/m3csU2JJPDcC1upPP7crzUSjBvdim+qJI80pwKBgQDPEPuio5zzqyR0JEB7AIIQxdA/7wXlX1uFgTiI5imI+k/q/fzPJHdnDqdrWL05FMNdVx6vEibQlZrEtD5rGZNsScd6TehetQI0837AL+l58DX0fqn3Wn6vbiZb5ATMXdffh7bNWGn/z+TgGEm4OcF8cgE4FKSNlAlPbazhvddwag==" + }, + { + "bits": 2048, + "seed": "CnIKkKnWN8BOeq2ugM7RMg==", + "private_key_pkcs8": "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDAG+398YWxLVoUMedBHPlXOiMOLPttk+2JA/unCczWMoChJY9xCET5cMDjfNrz6Gtj7XWbhQSL1goRvqOINEYtpLjQB5g0PvXqHkDPkqPpQh9dNUPFHlxxGXhlxMtTK2qfMl62BQDMnpJFdyVFS8/VioRoKpG1V5+aMeLfoTG2Lvpn0mlxd1bPGjIog8Y8Q/jhAsjBm51YZK/muR7Pk82ImhAkTJicI/Dk3qqrN/Z3XX15B0FNeMfQ1qN9z7WAS0DXYjTeKepXpCUGPEVF97dtoKECQMq9wMiepW/k/2P129Z5Znm4YUKLjynD7LnBNo4feLnVkI3juTgwKVd7bjFJAgMBAAECggEAXvcvjeIv8ab2qZcFt2VoSNtfaumHnOKMgLfsVeV9UcGDXqXfo8OvvRMk9w/IeNxDAhHnmmqGFc5ICf+QfYtBydxs08F9Vw5sqEAuT64wwuVB9eSXzMC2d95cawp+bG3A9lODCD2u6HfW3OoKDZhtdCVWUNwCTX+0URgqC9x2Y5U4NgHTZR0KoCnBpZJxgotFkOrzSEWcaOGSNdTkGSxw1RLX/eJ9BuDGCg6Z6KPhqoKqlS47j8r3gzvl5/vonmidaJ9YcIruRSobd6Zuo113pySMLN3zW8qBSphsvLBTD4PJBFrRljtlNfvw9+b7CQ4YTeE0SamXnXbZ6sElO68xBQKBgQDjjH9fmgfnuYkL6KZqh1SlCaeWv+1yK5k9YI7sb6r6s6cynnZWXrGyOz84A85F9LodVBj2vDMjz8mmzqLaJr1RFNFEawQJVw9NdaywLxEeuxPP26E2VsxuM2zuR60lUSkVazSW8Il775v0vUQte1OxH8FTnDQ2O/TjFnEgqwSbZwKBgQDYIQ8WFQkbA3v5QMnbA/TNfZHsOv6Ap5FV6GrFrr49ZMhoVLTluI11tYKfK/ZLbuN3uZWFyuGPUK7562XHIE2Hcb0ofc4GvcZ0GL6AgaXIzsY45oF8utvRIx4WYEUrPsu0Tvf0/ohTcWOKt1a/TblR3oIhfmq80uJfaGIXNyqPzwKBgAxkTVd2evG6n+T/IXjxr8FhGjhScWrjRvAZvw7PMf9/Ix7VlFo1w/WR1mqFgok6v5vzRXzCWQKdQT0NSb8ZlvvAZ3kTXt/nVtUAEIxzs7n5tCWAr3HXHkDuGgOL8bjzh4o8EVwa81HFhbe5SuozKiaeNRgJjKpbb4WiZjzCM3kHAoGAYp4zFBBlJz5fw0wczyLvARTbEL+agXn0hw6WKb2icMEb8P81y9x6L8uy3o5gw+rFQEwePf5lDc/zB3ax6jqDJdpwRZmh+NF/TFo+EsUVsJspN612SEO7KaKsh+lFpoXwzUV7Pv8llW2XziP6ITCF7yVom3/jlGVlhcNLfuxdL2ECgYAuAApuEGmqrZjtR4aYF7zOUrjZAVUhUbl2Gv+Q6bwifx6p9hEBgzhy4p5D/C0sN9X4VgVwyY4plMTK88eeRl7s5yNPKqskm3sfL7EcYqVeF3eDpUM3gPqKtEyVBtYlP9cs9JLReuzPq+Enge9R4PcaWL5OPu6TtNhbDL5wMUGMoA==" + }, + { + "bits": 2048, + "seed": "TS4Nwf2XJB8kR3BxN9Tj1g==", + "private_key_pkcs8": "MIIEugIBADANBgkqhkiG9w0BAQEFAASCBKQwggSgAgEAAoIBAQDJuKqnPiLJuFZ9DspmJeIm6gVZ+TJ9xd2z0+mzrWECtQgJPoxLpDaKI9C/IYMAQsChjpydz6zMKhFrqxzKiz36h4GT2hbwAYX+eIt7KcfiNZDsAy+0f9/8xEMcQYk6LKy4k00alo/18DfxravM43cVrxv13BmEqR0AJE/p9mBxlknCQ39VK7xT9GQS/gTt5O2NiKXk6vXitliAomlx2kUv5Qio8BuHcpaYJ1VPTgUOJ31xI9q8G3vKhvifj5bhyGBL1uyTeogk2zpjHj1CrsiN6QtqZzFmoiBwnbhOyI1EtK2AZxHnGOT69Uj8XZtKvMmZ91btZbJCUF+wHW0A6HGpAgMBAAECgf0CKYXRnGS5rcpegxAprGnK8dijMm8CuVJWr0sRK4ykDzqPUX0SRGZxNFVN0kf/pCtZl/lGAMJMAziMTqtvcFTOyokcdRwALbfrn/yaCBl5o+ShSIK6lVFsZCR5hPPg/IVZmCu32wUJ4ieG2YD8B8SEfsL2kcAD+lRKL18qooSmQ485t/qQAFOYQ6q+TKWG2LN1KapOws6sE99kiDGin9cMUitJmqveo1QQ9LPn/p4Uvb9pkUE2VCtQMp/4IN6ah4GQy8XzsZMytOGW/SWxFsuXvBhwqJ+lW+E4eQtpA6oTLDdBwZfPDd6OdREX0l+wE4HGyQwBX/DRWADc39mtAoGBAO0OrbZ5SB8MfJcFunNC4+8b3Rg4Gsm4oIfaJzEQ0UYKY4oeR3Ksoj/zps33K1J3/6X3b6vA7PemFzV177KzjruyJDShVXtFqT53+uXmbh8PgskgNCIVZoPPwGTA59Z4nQ0RenK5/qxaQhkkGJJN9trjn3I+RJMkt1Sb95v+DJQXAoGBANnXJMzDamaOrREI3b86tfW46LrXioHYFteewzZO2bYbaUjaRRb6da0Quzwjn50Da3Dq1Xps6NaT+ehb9NAtWqVjpsHDYSZSnualUu8EQA9lsrlH9td0GUpEgwt4Va7vhI6lN3BTdqrPM2HSAVlsLeMYpmWEsPgNaZxrYYk0sAA/AoGBAJ3PI71Rx71Dpr0yxwhsAyjuN6Uj1FFtYxCNHYIAXBBwYgtUVOP2IJzKKsT6QhDIaZumuORxrk6+drzUIhmohuBUmt2eeTVzDlPTs2bQm4Z54OrbUVlPPcuJxd5MvQl9ia9lb0pony1FeLMb4G+lDyxwU3jOEwCRdKoSmidyXBVJAoGAGqQsNPqlNZu3YMDz1aJJhJ6zn74ii1SxHnelKiwkhhf+HVHMZ04EPEEylN1KdPppFmsx5oIRS8TXKGqumxMg5d81ErdhVz19f3myldawOvHWFMDPWHQzb5jHagyyde2HCab9C7i5Z5RllU4IqjYHuqFWIE5FEmEZjG65g/00lSMCgYEAp7kV0XsIjnONxYy+/OXGIJjAVj1LZHFaVsOgWu3IF2VkHBFPB0aHTo0VIr6R2AaEe9/NWGmwEXdZEN4hAt0wJsuW3CH9OEc06c31KpxV1oFrCt5JEjIHPOPM2j7hlXSth6VhQm5KgQxpNwKy1huFFREffTEcbYw0RPIYEU0qBIw=" + }, + { + "bits": 2048, + "seed": "zOBvzYmEyGTCLzY5fIFKgg==", + "private_key_pkcs8": "MIIEuQIBADANBgkqhkiG9w0BAQEFAASCBKMwggSfAgEAAoIBAQDwZfcgz15JrApQgx+AiYaUDjzLbOT/NrKJlPnpFsnJR7+7TYNzfQFFipGGReI8pQgRteUqP+YSatjfaDRdAJdEVZLTzBSrKYxijoJIPIXVgAQvJyoVsb0bV3SHZLNToe8uz2X/3Lv+gE85L8J1lG0a4Ex83HCfI3YTpqP9tZWWVD6s8u5fkErtw35dtVPg3CdotdUn7Gt0LzK+9742OJ4seeQ8JjubhQDX5p9vrpCR3Wy0650vwqzTtdXxAb86jv/NKEnWrNpwCXz0cav4wjV/OCe2E8qmLmdzvfsFRtoo/RHQGfVrL1xCS9F/b54MHnaKjmdd2RDwjcxrWeGh89pRAgMBAAECgf0AuUkT9OFgMBmmcbzndppAc7WztJ/a98+1enZM88nJ3AwOyZX9rrioYAmGW4bXb5B3tMjygoSYXegXuMD0BnKn/qnY1tRvxMAqS89huBzU+c2LSgVmAK0K8I+z/7Bf78pVfQR5zeTCo2foy4dKTQgyYI8aetOmLlrX3EHqjIqUh7+BAJTV/0MLFJWoWQsHRa6XJ3GRav5WwT0aD03XtwrOJpgVX/RSBtdq93JXCSjP/hL5Lb2l3qRu1064IAKuxb4BaLHWgGHHjCkylc0LkWvGGq3/SP4BCam6ecsk9+aExnwXamnbZVuv/0/YyFCUQK1gjn/HVWsiiCbwIFE7AoGBAPZQ1ZWxgIuxvH7m+oQLXWQoT7eq1YBsWgV7PEO+pacopCSG68jO/uWg6ZRiJN1q3cNoJkQ7a6HBRSMLwwSdebXxJZZQAfXZcwzm/WtgQQ2naVnnvgoEvEXWSwBTCis07v66KyllQzmHx+aI0PAcc5tLRFXg6wFPXULkRTuyiP4HAoGBAPnZkmb1FcmLwPwZ6Rwo4a2MWS5JGWntkxCe8+knr9Db7RyrsFsakusHsHgzUufuif2TomLqBQldrIuafsl2j1aGN8X5Lvi0/34jyIdrRKaM20pahEZ29HDiHhQ1gdkPWzDluMqekpovsb+AgqmP4VYYjg3H/x/M7ZZ7I1gpa87nAoGAQj4BAs4GzQrSr6o8qzBHQH1a2wE1g+Ef4KOA1JM8B5V1d2FVnd6VTHoW91Hhqi5oT3n9+JGmY40Po9ow61fSeKzOt/ryXATL3Sdt9eef9yUTvxsEz7rwSzPTXdX3QSFuONEmdG6IQruSdhxLXJe6O4Rlb1cavHJ0mV28hM6B6xcCgYEAp71Rk/vRD8na26YNodE0ik5ihTegb0SH6q28tXjmicNNMmV19gQmRNKZwGk8rOeyDuNyLxRMI1iXgfZMTrdhTka35RsBVQo3SZl+hKQYp/SDOS0CB0jPnYXBifHOZkrv/ykLYkUJyahhnl8J2gr1ztaXcFsoRlJP5CpxtTvB3FsCgYBymHj2mby8sIrJPVVZrtHb6TpeXmth+llH2/yyEl5FXdoUNSEbHM4GOeOgzJAfd38ApU1nfRGZ4YuGrShBKJ0IIXL6UrRaApXBuosnx5lvHQI2HI5F7WmJZ+UgC2YD0AoNmzuGgnhLs96m/TV29HYh9LzwgUtLfd7GOmwrzgQniQ==" + }, + { + "bits": 2048, + "seed": "yM2B/m4YUQlOlQCpMN+7yg==", + "private_key_pkcs8": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDIZsbrldGUXbAK1gzEOd+1HUjyuinQAtBHUSc3gjUT+CuyQygl6JfjXXr9W7NAikNGSMlJTFR7FTKLJOWfb5CXDUG5a61m/pLwU5qsCz5d5wXzEQXDAILBxWkjIyPGRRTyoX6l6if9rVGqRM4l65SFEKZ5RzlMpX5VVcTPNMdMB9lTB1V7DKNoBujZV4v/4Nhy/L0YURc7rhD+ZqVG9qFlEq9cyKuN5eKQpLn3vyNWIGLD8Q09ScLlvg6vU1Dtafdp39oN6rw/chFKMzRVCYg47WYg5iFkknptIJtCDV69BaS8h2ve7sM+OZjsc9liRvO8NTJL8FyjOR+wGIoUySzxAgMBAAECggEAAUO9lzOpDwpXl7fclsMuOBZXwrV9XlBwfMz6/kv82JRc7Rl9ZCnmllgTnvHUTFbp/wyMBfYbUq2rVcCUFcIfRJA9wAMnMfnHzCk3NT6Sj3zhjBbXSDx78qYp1DkC+x1l3tPW78IsSVrVIGdmzR1hpBAXyL2GCeONQhoWH3i30SP/jSD0kxgyvmgnn8Vy+hTFUdZedXB1BpqMWwcb9RVA8voxUbmbPQouc7vtJsyYYVqeefXnF0S2Q9fsIYucitWIWhIjALurtut28dzyX0YL5hLcDuf3u8Ta3AJvD8xRl5LOjqDef0MZfJijYoWrJAmGURm19jJP30IkuuXZSVmffQKBgQDos/IbFQp1RrX4TFpJLTYvtdTsWhf2JP+WeEKHZvbeYgrRG/+xkeUSQLMNnlswVC8u8jFaW3KFgDolrrzyJB2ViXVqrwTgTnP4uGtXl+XE6EQhrQ4DKpebIbjAwJheo8dPPXysOqDCkh1BZhLTaffGTEWgGlPA35+qowtOzQ9ULwKBgQDcdvZVlo8QsaPN4mYj/RcOGibq+KL+VrwjTL7tA1OYA6xPL5gU3lEHL8Jl0zTPLyFaH/Qn3T+yYPiRzCmn80wHdgZQ9gr+ENUB/K6329CtYoo0G0Mg0WJVf4XCjdb9qFY8WviHeAR22nF1nT/SRDXJCma3N5W1kW8mSMTeMdCo3wKBgQCBsXjoGyv+/PACeRuA2U/v+1m2eOgN6cUBafk6WeqROvdoYEB8CSIwsBqbJn0QTHsXoShcgccsHLFLuz3XfsV2SGxGj1Eaat876hz5btFCk2kVk8vRe/WPIpZD55OEe6djxJMtsmdSyfjAMFGhvte3j17mwoWXY4sroT92Jde7RQKBgQDCw5HBcN34yIZGd5D2kDtS6QWipX8RJDzXDpDJQBwUeoI5/njjTrfUmnupixnnQuK7BOmkYhBInORboTrXtddf7AOOeJ6jbulO9RTBNr82vYwMll0KXA/8KklX5AifVJzCezd+Lif7e+WqGv5r2niNn9O4XrGyksXX04egJ/AHjwKBgDdKoEMVJRPnIlBZCtMLvqyPeFp7v/RzHCVA/c2xoPlVvqK2oF3t1CMGcXhAzIwau59j2gHEUGCEO/orZeY4GhaJGrXWi1OajKhWwpOxZyRzA9+OqfvtaqxGEh4ANROOGlWel2NwCZqxli82QuyT/kXAEH0ZuDovD7LRbnBiUR1P" + }, + { + "bits": 2048, + "seed": "4MqCX1lRUSgQbvkxw5/I1Q==", + "private_key_pkcs8": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqsIpj6nxheYuJpmIoPW6v22BKG5UCpEE6yTILDE3sjElzDs8NcnBc+TEHxGgmtHBJzX3DORrldr6Fq+eY7Y7tcVWM7zMS6ufi0+PcskKKX7s5Uy78u5JspiKwuMpp5ULM27+ZzySsDkSWtPjtgtqO44gRRMUVDoQ9TAzuBpoFMYVe8Xvm+eOVFEriaM7HeTpf3zaA3E3VgS/kwhHYmMTaLt/pU0DLXK1Mxur2ir2XiMGZ5CfeS4TpfcQQBBxMtjRlr6bCaeNHEwaR1aXo9FUpdc3LzNyix4pXRIfiqIt7BfRuIgGFsIXy3hKU6HhzDxh0sPd+X7pVR81OfDXt748pAgMBAAECggEASYM+Hxky14JTDAYqOT14Ceo4FsK5UwluBIT5dhOnDe0/hvvGRfrXFNvH95np512IDOkhNG7IPDJ/jK+ET/NkPrQ0jb3JZ+je1OzAMuFdUh430tEWKAga4ItO3oC/wIraUcOEyhgSKb39YVDw8s4MFkU9aX6OSOrXHlU+LleOhxRf7l9p16+CMzOWw/qE5BKyfD5KqQ8oU1fp0tWRcEZfzXZ+vK44ypH5ZjYSXMXjdGrX5qrvnZemMQrx0nb5PsmzJj48tmlObWHu2sEHl6Ve/i/wDOM7Q6Wxe3+vbEKya36v+u+8sQHCDwHRhhbcQSi9Octw5YQqkADYGVSHV9p7fwKBgQDfmLnAsn7eCsg8EIj6sMLDuKQKigNktl0d2EriHOjV+OIi8dbKXtDTFQicejY0RziqsNoUABemDpTo3e6BTADKAI2waUrgozU4R57ds4e82/udhEqPBW1Sn7JgmBdQetDvs1h0FARXhbYlButCuELh9xgf7LCPS84gZy/Dlzo5FwKBgQDDbQD/Xke2+cDfcpRrL7n7Z3Mf0QvFSWwVUz9T2b8NQsnZkRoa8qChspEqW4Nrs9nxdyow9YqX778KhKmQYAdB9AmkWeRTV3IJQW5RY1TV1hU5zwqLQ2X9NLpwEWUIGWpppfhaAcUKhpIZUTxrN/4wReAIqOp/YVS0ty/HqNUhvwKBgQCaAcPPqiIgJiUM2ga/RQihbofuimkT8VfpupS5cVgeKTL5BsH+2ZfUC+TGgpbbI0MwrmdG51likyCV1Gb2v7a7a+4r2Bou57s8bHhME+AmgQ6py/je0coe4sgmKBvG3xESSOFf8nmbHwn6Lu3UIr5OjbccJhbmXDw5rVkEyyDbOQKBgGwQisyrxdxYn17wbUIYUi/DNNYTMv8Var8gGZS0hAFBPX0hz9227Tx9EejqUfHsskfkLWCFZu49lNasJVfAwkKmP+6yBqBPaq/Tjr1SwEa+613cL2hzDKLH1ZDDDas84qspK/wZnmwDniaB1Xc0r0riWNBxF7r4h26nHbS6l6DhAoGBALNnsYQlc6iFVYD64gVUBU5cJxCrpl5aN5YlKMeLBA4ooiLT8U0lSlgO+1UWfD4EKhbtBjhUFqjftnrg4qBRSJ7VLoLMvpiekXD/gTjUUym8rY6k6wE4/9bmW0OwCRPyGaarsQcSLJVAP1DLt5Xr5ylM11R6h1O95iAgsBHmV2km" + } +] diff --git a/src/crypto/rsa/testdata/keygen2048.txt b/src/crypto/rsa/testdata/keygen2048.txt index 31854020d75b01..84cea1c34eafec 100644 --- a/src/crypto/rsa/testdata/keygen2048.txt +++ b/src/crypto/rsa/testdata/keygen2048.txt @@ -1,719 +1,719 @@ # Prime candidates for RSA 2048 key generation, one per line, in big endian hex. # This file contains two primes, one of which is at the end of the file. -# The totients of the primes are coprime with 65537. +# The totients of the primes are coprime with 65537. Every candidate is 7 mod 8. # -# The number of composites, the distribution of their small divisors, and the -# number of trailing zeros are all chosen to be representative of the expected -# average key generation run, to provide a useful benchmark target. +# The number of composites and the distribution of their small divisors are +# chosen to be representative of the expected average key generation run, to +# provide a useful benchmark target. # # https://c2sp.org/CCTV/keygen#rsa-key-generation-benchmark # https://words.filippo.io/rsa-keygen-bench/ -c3280c027a24d6e2277d1227e4531c1ee765bda9d304bfe7a59519bf2686fd5435c5e5a1200b74cba47c49f444e89b0e0991d05824119ee9dee73e4bd6ce3e93a10604239677fd0b735438b2360d0da9e6e929e1c564df0f0287eb0804cb9dba824a53156098ce8c8efdb8197d12ac040baef4e90710670aa7a33d9a0cd0c62d -d658a5dea2c73517326aba6bddc24b677d47178dc77dd584160827702d203908c504bcb305309c6ced76c7bb2f891bd99119e95bd3d90b1c25c00808c10f94e5ee29aa84d066baf7a17250328286a74173cee433292afec2e3707790d1d590b0ae8d667614a8ec33ed8cd9344dae48dff98631c7e609b7c63c4bb1a5dcdcfdb5 -e5ce50dd929f658d7285fa47a175298c0657dfcc98620e92772c6ed6134ba24d7703ce31d6a2e20e82b95be2a72f3818f7f2bad597bed7a8b5c6c3cf408fb49aa70c003182583a95b9c615ffff31343060c98b1058423387f52e3a7992a29b5b494a49256a7dccb25874f9109d7124ddb2c3e6f4430243439b605ba67a1c2f8d -d01fc442afdb8bd631d93d4531bb16f4f9c3bc710f6546c248f809987cb7878e8ab9dec73b7d3d823563e4df53e41830b16d25eb96985f393c17906caa24d5a8a8123439ecea4d34d7b28bc4f16bcdcbf1f2d3a8d53b5c26cb2d217c04a12f3a436510031901bb1af9c5530402384ca801dff5ab6ea922be78857d0290ae11bd -c0047306b9a1a51226ae3d77981ef08f43783f5ae6534ef5783e0044518e53a7c778759f88378970c1ac71e3a57a6f0839e45036d3dd180a713d962f701b139af22c8fe07ae2105c1b56efe0cdb4ef36e94d9b398570db68efe873ccac75186357ffdb5f9e10470e62efd78b09ae76508ddef6c43faeff84cbf8ceef9138e035 -fdac5080d27a1a4213ee721dc344e16b5e8e6bb790e1bb8dc965a2e76b2311889fbaa9967b57d323aaf13e2960dedac6ac719a1a85a6817262703606b176bf3675922502040273ce256939000801cd1dd8888251c14b6223dd572d4c9efee5b522b2a06b0ccb34d302524eacf1f9183350c90adf8f5ccdaf708937f25677817d -c4876a812cbb5fdb31dd80e04656a0bd3e131a2d2eed4b29420f373e9e4ac61a0d0a023713c030bcef917c146647f97aa9937626f251f1fe2eb4106f3eeecb6b8c2346ddc9bd88740e2115b23b72d2d4a4ece93f96ec34b983c61cce8c33bb650107859190c2bfb24b326a534aa0f44fc2210601f39c82b344e184632d825315 -ecfd96ea0fdf3cd7072d6db2d9ae052f50a16b948838353f9d566c383309fcc1e43d3a0ed9cdb9c9d4b0d8552053a1c2561c7df175bae082128c3d380a60c8c578b51049928d0669bc2f20256b80b089f217f390c80252c49038bd1f2f89b265d49b935c5d621a7f9e6b41e8c7c5e454c5b539f90bfd2e5e09ff19ae280c92b5 -d934a84e3d322798b83c86259f93f06f9545a2d5cb911ce4ee19fa887e433baaf6cd3c66285626dc09669b4b2209926193af341683629bc8575f0d3cdff3b558566733aa3e256f4363f4eb4005caf7cef91d2653e20f7b2c35a74411dd73e8be0d1193f0bdfef5f39b680d069d64b3c49de3d31e91e19015b3e14e24884010d5 -dd1f0316593bb2e1df22f1fd618d56e7c4f28d6a85501ce14e262dd316acfdc67d17caaa3d7fbb730c885ef394050eb80ce597cde2510153e67d99ab8c463f6b8d3aa607e49d8303318f9c379df7f48454b9b1093ff29f0a6e78f586d00f26912b2f27db810b96c956586ebafcbee500a701f74cdc42201aabc2c5a1977671ed -e1eda3a00453828b2060ac037e3fdc546a019c30d7ef08c51ec722ef98313148b08583fc495746ab3e6a46efb4f4342013ef44da8821adcde73bfc873b7a521dee1e9cccf3f169e78fba89963a4561fc507c5333befa509cd910ed26e45c62a2a3e0df1d961042e6f38474a99c9c5b366d0a6d81c41774d1ffc4117cb9f000bd -f04402a78861bdb7100df31330193151688bd1c4ecbff887c1e484d67ec705cc62013d49f1b92fef400d5530202dcb4145828a9f657d2a1c454dafcb3b36a1664027ff703d78fbf4712fc6248308b56ca80bd10b19263df5194a74278269b61f5199390d4f77a9934cb88272681a77682dca4af9cdbcf376ab7660b9f3e6007d -faba6e112b7f349d92bba5f80de2437ad692922a33efed347579eb7be667b1df09a2dcdfac534fee0fbd4fef0838a74006dbcba62b8ce6cc0e6d1e1035effa096085716e4761083728f923525c9ac4339d15cbce8164d2abacaf1e134802e28733d1f7e7327f7430f4386102915f02b9c435b7a4f8a0433062973356490c999d -cd1d62358df14d823c9aaef80de713db2bff6dc3f15da163f981601b2096cbbc04ee12767937ff5f7218b758defc27912cbcfd8a7bdffa48e1c5d4accd21ded2cbb99f053103555cd78e9cbe0ce6e89db7fea4718b326f266c62ca997c1102ad9c04a3296405d2f9b8ed4a0e799e4818eba66247c25da68955f03f076dd7f735 -e4ce1badc198ea490b37dc7c04e6748904868129bb8cd4a7638f5cd9b7cc5e7f6f92639faa0bd755c6b84bb8c8361c5869b248ec443b24a81e5a9abf94309653f9777dca00aed9fcecc21dad79f9aa5b1a720d3800728a452d5a4fd4dcf156c20fcbba7e0a10c5c3cc63bd6e24fa63b248ed1a9b24205a801be3c1cb74be2bed -e6212b34639e14987d4820c32930bb2a72ec98670dd8269ffb85583f86be8152b6421798e6f11f64c410966f5fc85074b932944675c1d2e67ef1e831f15cec8dd2b8f7635e84c1624cc830fcf3ce1df011dcf133bb636e2a5c92789bf6e824a0a84c9311d0903af0ccc2ee417400538b745190546f97abb03461efcd924af65d -e64458a6209dfa4288e20607c5efa3ef0023005dd04286bd9d97e835e6316c8b76a6cd471d74d30fae6f84a0605135d85d5b626a9bda82ff24c1245428be2ab06ed0fe994f6bd4189e5620d88dfafb454dcee861b2cdf7362bbc4d2adafd606c17088f190e6bd14d57b51fcb1068b13cef8c454e138694f06138dc7b082dcdad -c0896f1090bcc0994a8888a71d7aa6a484d4a02312a2fffa805bce038a98064f054e097488c9e2e3f8daed458cca270761d07daeab428591d6bc30debf0548949ab2c89b2a4950241f78798100efe858b7667842410091764b6f62061c22e1b2f923de098547632f81525ed7696808097d20c7703b6ae01e11c094aee01a39cd -fe882662e021d8b4329b80e6caacc66174c483c453881389de36331a81b229c8404b4916a8103139fb125289a3746e3ef11370b6453b170635b727e88f3ba7ff760db3d69b87a6613f41a6a0d2af65326b109d6b4fb940b3dd20f1920bf40b88bd6027a11e9bd7e6e1508ca1c45d5011e084085aba7898c439aa9fff2466cf75 -e87cb70f7bba008257d76ae1b6629a6a21d12158eef819d8422a8b4f18830d426d784ee64d204fbbe3d21fc6bcfcb946a08b72e92132563de4f52c7e6682785408b0f612d7a461f413b68a186c637872a6207aaeb3774d302053375b1ea36bc63a968eccbb6034d408d4fd82c93810bd50990d28b5ca037fb541cc0402770a65 -c59ce336ad22514ff1bfcb64706d7812f8fb592fada9adac89b7b4bc74cc100bb7d41f6448a4fe8e8c54ad3eb9f643ff62240f1f24e4f7869c4de12cc7530f8856f5abbbc098a09a0b6f98dbf008ee586eed521b608302c49ff5450117babdcc89c1e1868503557696b7ea13ac4587d1535982cd0d88aac6161bbd3338877785 -d8f6e37189f694e33286bf6489fa969c0b82e21fa3a7fcdd142070bcc05a43b89b55163db9077a3576cb8917c30a3a66a04262e6d065cd5e74a6064de059c502c768edc7e33647f66ab6fd024d3c900b552dfb6c2d6aa21b6c1b569ae31bd75b2bc4d968ae9c49009c770f57d121a9c3ff0ed376f424891e734456bf605a943d -dd66fb98c6b659ed158375316e61785260961deda5c7cd3a620c21da10382f4aa97d02c1107bfa0589fe6362bb883f48dd5ece326f3c7cbc28d91ab7d1fa8ea1a0df6704bf3dfe9b1f053e4e307d5bed6bb7576254a8188f1d60d91963dcc2db5f7723ebfba4adcef5c5de4e56484306da72669305e167fd2224e678edb0c5a5 -c5a1245c78e99291db45c225773d2141b204c9c8627dd8120c4cc331a67c0b2c118e20dd7805436b4f05b36ad6b1d20b128286976e8f61772f2635ff88fb1c1f6ac2f390175eb9f4f556babe6aa1b2be9683ed442261a79789b10c5ab0f91eef7cc7d6b99d0fccf0d8a9780e540a3ece093ce6dcbfe8e62bce995c23ff201c65 -cb8ca7cd1d043349c6b244ea7f7766f717daf97fe5db079c9f94c0a30ee9b7fd6999728fa22802ac02c7e3228b53030956d3a7c6c148620461adc434388eb9b90ddc84bfd6032069a425521548c2cb78b4683c80d2c48c6df5e831fc23731957d490193f15607c396f62ad650c4266b8bd46b0127001b7d36b97e3b0f76ad735 -e89e37f2ae5007402036195b40ebd882f60756b616a827a3267a701cb12a7000723ba42eda4619989a8d080a444e5a8a8d4fd1a635279297f420e20d9e2587391613c9c35c0e4f6135f5c3abed32fe28783e05a2e0253e7bc351e20c4ddb399aa24ebd971fcf9db2263b0d01b628e87650d14cafe341f881b010089052bde375 -ecc17a8b65380f0203aad09dc6fb76d31fbf9d75a2e342a6b8bbd80585f649d1c1fb6ab5db10e2c15353c9baf32730ea797c9743a8e64e5ec31dfd776b0a25b2b80b68ecd612211b90233f2662381eba397fe5b2bd2cf330c1c7a3abaeca21a13ee088a8e24175022df26221de4cbe1357ae6cb0c93e973779c5b23c8707759d -cc377422aa2d5b267df8adeb9e774012bd8ab7e86855deb61466882d7ee02a749426d242d3329ed6a0b98ce56caff22b2a2ec5c1d7565bc7ac1062b3c9bb887184d690a4c39987e706c9b0360a9195bae763ecd9cb4863b7020972aea212df48374bac14101073af8169f8113debe9480af26dbe534ff7ebc078a84fea0452dd -f6b8e7c33db4bf1106731a54905cc34ebb8235ef9c8196ae9a43afc58f9fc478cf45924130526d2b3721cd9e5397665159d9e978676ac5663838bee9db236e389ff21786737b78abb5c34dd44f878a6a8f38b4f9017a8429e0ff7efc7e95783d532681bbb652222e604492e5e9cae70acff964a27274e30f3544758a60603c85 -f45323a64eb82a494ddf732502daf879938c2000b2f68690b013cb3a40d7459d850c41c829fb0d830a8a8ce53e43040c0e2de84e36c8adcf8b2935fc4d603d5065b7530baa21f3fc8566d13f6840dc0000e0531819c833ddb9db52257b1b18d815adf7f2cc1a74a8a2417db14f3578582987324ea66a85d6877e2803df34976d -c4b49ac4794fcad37ffeddf43b27b0f95d504ebd8faec1640fb3d1ec3ecf0d5f433e53f62b436a17436104fd1368903e38a10e173267b2105bfe5f64be5c275f3e1574cd2bc46435b004c158df4eb0ea47d3244a16e2d4eb49b68f06212c3753ba6acb74e59ad0154509ad46491b167f68c118f2ab8ea351f22cf23946b98545 -d9966e5ef2c98ed3ab7665493cb3b29e0b55e4f3593218417dc012d0cb6293a3ec9440f2959f3990afd04def8fd14e016d949c0ae116900fbd3e810addc5545db1285f73927c7828eac881a6bb5c25410ed7a9b28e9bc3a6e96f1a239dfbe2e9db90df2cc1bd832293f06e30b4cebf795945b717ec0d273364fd603a2db06b5d -e0fcd8c3c66391647f3cad90bc667361230cd0907a4f95d63b85dd7ce259952784a2facfd8a707dd58c5a66f1f3f238fd55f6c39a615547448d01ed27c046357edf1c7c8efb17e529a9a28b63e83aa0d203cc687cbfe19201388ca4edfc302fa04e11dca78907ee5401bca9b9ad1650ae8dcd63921aacd3afafe39cc9fc0e18d -c2e60320538adaf01aad0431695c391db850f09bdcd1d7711224ff6117e966c3ff1df74fe32210f805dfe5b9ede44b3f5b4398ba09f41712a0acfd17d3f29d901531870079a2106331127a4ee083b348ae34eb10be594f24f320315535cdaaf40ae6c0a3ed762e5f4f77aa6ccd01a1a8a471e2790210485bfb2179f1b214157d -cf2bea1f18b8b7c173139634d3a75be5b16cb92c08fd01189a75d214a0467380b64eaadc717871926d76a3dbf60c488cb1555eccdf749bb161c6f55bf68c6bce9e89ca4d4165cfeea41e5d7ca0bec8b5e32fe8a4f433a0b94e34949dd60f3a73e108ab3ed1cca9f1bca7a28f111ed8ca5b88253df61d7921d1e53de8839cd4d5 -d846b3f003220a8c32229f05a7cbca5fa373ac6d5b6dc3cc2bca8f0c1ed73092087cff694c43ef25b00e16b3327127259e48c51ac271faf2c6c8d4745f07a08b4df84aeaa95d0a73ede4eb50264198625f39917ca61787e8441f579e75a370a11b51db89851783daf44cc88142af0c558f346ee033317235085a2cd185e0e5cd -c82518eb29d04d44fc4d8ed9cdf5252652db5214be69172f58ebba11ecf8ccbdc76e45054484b270b559aed27f66c97f105b997e83f969d2b8045fc5c4795a0f14aa2f26d66a376245ecc3ba39dfa105044754ca7ed6b96722963168f565f192e40fa1f0bd4c875d325394eb72c13f53af85814aed81db2ccdc76feb4bdfcacd -cd174cce3c2a5a2aa08ed861ad64fb0c6a03407ee93ed2343676f1cafc25193af66589d891a1aac648b4d309b047ff6b116dc7bd974acde138cb95c4d7ee95737aad0742aa8d1a9e1781b7cf2a6f09495eb22d2767412a6743f2d80dbe8ec2b07ff4ea528c13e66a6f90385975f8d441aba9c0db2085b7714e07636914878655 -fdd7dbf9cec219fc1c59527f14b95b1094107a0173afd4435582319719f86d300c59fe8e676e29c4b90953208683694ac537b1bada7696767e0fb69893c102da2ad292318a8c06623844d2baf98ce5cbb8f5f4aac2b8adf1ba6cfb0b0238816d76f48671a0bd1aa42ebddcb5ca36bdc6b163f2fdf808ab06ce8129c88a34a29d -fa040fe20e7648d5452eb22d0449d909131d8aca9afb85d969c029525f06d97c719b5427f767b0c64374a0e85059287903827bf981af82b073909ecc277085e1bd489d8416f5e78584565fac47a39551991fcd6850d3705948630b4777eab04ec4d8211bc174b4f52a02aaf3176817c461aa64c0cc6f8caa83c2dae9785413f5 -eda819394c12ddfad1c5195f590389019ccebdceb5d22bdf8f0b8039f339cfa920726ae970d02788062f05e3f94601f6cc73caa1385d12e26842e8658c4feb352a77fe30cbe16475919ed604306151ff9519500547f02c5baf6d0ffc28c145eb09b64b6513bcc006cffa11b1ce9550eaaca8b52abab2731f0a87c2cb3838bbfd -e0a102fad6c51e75f45f919ff5c994fbedbc2decb9be980fb643c5dc4e8d7715642daa68e907ef73d50f48d9b22f9dd269b587edb7daf5086bf9d524de5b0ced07ec6ddcdbb6a7b80a2811a041b43d80ef92d80d26f626712921b2f454b16f9ce469979f9020058df410a8c0fa58f79a1ab8909258d136ea7565cce3db5583b5 -e29cac64588f2d390d569480051aa315a28651b17b5debe2f11937c590f7a6acf553bfd700d56ca0e9557e0002f8078e5c459dcd68621a7684938324207e686d5641210d9c25030892671e28dddbbfb8a5592162a9988e6201916cde8d4c19469edcbf2d539c9d13225ed75642edaf5a5a41f70498f6ad7bcce75521c56ec055 -c8f655d328cd97dddb6eb73dae1c513547e1f9eb924c9d3ab85c12e93f55e7585bd78605483a941d93c951ecb7703f70acfd134898f2d8c3b2eb852694feb12a536b68b1b31df677bcbc1818d00cec3ec77c69dfba074b773458fb688d166147942c76d2e90fe3bf6b1c63062bfa85591216a3a9a1fa89762c1c9d0941c1c5f5 -e4e8eb15317afd379b4739eef0e964d365f45e52838aae4c04671bc51ab06aa583fe7efa805f3beba9bd6c94d9cf1c4816d1d30a6cd0603d8e9e08d367125e6d70b3d1f4bac36d2d81442136d06bdb68618a895ecf5a45d27c9bab3f5302bf93c770680fb74d79fc3ebb0cb23c70a2c798b30e4341bfeb0ae224d9adee129aad -e9b15d8bc80ca4b280c5ff6ee0c92de7efe5d70c356855de5e23fbc6d7c3fbb9ebb2018cc8d3c82ec24ea057005aeb8504d68579c13aaa90adcb5719b8cc633e19ff70ed00f5ea38230eee0fb6c0185ad5a946798b8477e5e0a40961891ca48da0e92db23ee17549212cb337094a9074759544226d88b6a4ad0795f97adad15d -d7a679cb982749b84280e8e68593a578b1df3c3f3cea32c5f85cb8ad9e916a2e46804709b7d13ba3fedafcd5363eed258513077f8618c187a5ead4d80e365afd07ca9b94790e9ff312b7fbfa363571cbed16f7ecbc4958c56d8d2834a80841d55d200fbdd68d6f2edfd53ad9bd98b87467bb33f75fbf679805c691892180f6b5 -cc223cfc403e44f7b1b6b1b4923f5e601174288ebb449c591c7acd53629fd1d54e713a06f3f0c5bae6e0ec6c60f63a39628ad674607ebde06ded53451758cd3f46a2804625ccb5c6b4b8d3387863ff0f191f241ebc76ef2c002ae25415844b968887f5afc058a8a84a73c00708956bb108e22afc824481bc5f635ceb5b612df5 -c8cebb9900596d86f78b675e0b9b6e2efa078d5338e2e8c411b686eaf9fdf2009b0ddc390a54f9ed042363a55faaf61b1db8f81138701bec4ed242a96116111baa7a3a1a58f290ead2dfac414451ca6349b40a006cdaf8a7279413b774da1ec860e60d4cf8bd496c4daf6d67a071672b5813ed77e8cdc39463bbe9e833fc80b5 -ff877d7617c7692de75b95c6aa2b938e06917fe3964679d4d99909571a4aea438d5d9d749ea1cfe9edc3ea5ecaeb2cbf67df63e1d77f2e99841d52401fab7dc8dc8e7db0bb4bab56c2a738c0567fdd9e1d5cad05f143d9a208f1d3c261e2ea1fafb523e45b7ba00d3aa14f8d0ea6843f978289988325b778a74a503afc03dc75 -cdcbd7112b042912bd54805d11c334564f5b49da681c0300afbbf0657f50655b73775b8494160160c721758f848b8f5fdce80accbff0a819779a3ea8a081d2c8204e1ffe325bb2bb20646a3e99e0afb359fac49747724d30fb2861d4fa3576e157ea7ca9a5f8acf8d978a680cf20eac31c46ce888214306d279257c61372182d -cc8bfc877a0f189775fd8663bdda40e940dede0b46a834cb46e57e08ee7ee103275eda18677b67a7d15aefb25311e15bbb8320c72794426976af19f61709b596318d6a181afdbdce9f663e48da148de140c099b10cd8ad5c56befe57b612a3543ca80ae0b1828da26f30498d4b685d3a3bf0d9821aee4eeff19dcd095312861d -f57c84d6f79dabd40b86d9abb9b211355dee5a80404a0858450122d5c9b7f8850aa9399fbe271fd3d551b3fc5cb1f965e9f7ef04d725f8be2fa1473bd2925541b006934939bbb4cc6a061b12c9c4b2b6c3e72c05c9ec303ed089e71cc33b7954004cf5ea29c43dc207da28ce80feb805c804a371adde587970c4a6eb4c1b04c5 -d1be804b2c5442d6f2b8a6410d7b499e8a992a72fa4d532f9715f3c24abc6be301d5eeb7156d8b2010b0b61978ae0bc4205b3b9fff4d0bcc9842d43ee99b56d741d7c06b70b9928f9455802e6b714d01622ad14112f78ced761f10393fdba4e27626638c5b578da4db161f3e4d52edd897cf0dca2c83f1bca4422af1325fc82d -c3e6cc9373a12a14d3916be237b0b016fe7f240c9e7c631e50d2078d63552a898c781d5c1d23d4a4d4881ec211af661527fac39d5937e9f84bdb8182e69fce9a2a31618480bc538cc14e3d778cb0b7b3ba5ff2e4ca04282bda5df1333ed840e437b2ba8daa1679b4288f95ea19b5051ee77fc0dffbeed396df58796803b7eb95 -d36abf4625822935c2e14f94141ac1ab6a700f62010d9d5fb56ec9d582fe5e8ccbbace8496b16c215575df4692fdb5e5603cf0ca4680d9cc2e9440896221c86c0d3d7a96dba443d2eb651e95326d2663d8777c724c8b75be3e3b2319b23ee3561748560be33e8e4fafe01b40490732ff991a7c0f971672fa60f7adb59ecc3475 -ed3d82f546fb076502e0f5c4db6089fd203a6f8cfb7a3000e8c0d98ca15fdc784c4ffe0331bbf753663f7754c52886c6175465114a0d009829843629dea455d6ca5e940d88e1fbddab15ba018ae467a7bb2ac7fd9df12707611134a10e6b008f52bb0d2c3889a9b6dd8695fb7287bd2644d38094222df4b6e0a3799d95a32cd5 -e9faa255b3a1b7a6514cf14b7a62fa3ef57c1e7c62943aabc0ae690ed22c656d7477e17a42bd104e4243909576d03f93805c50873b8af7b6ad4a67350842c84ef4fff257d7c7b21dea8a907bf2be9bfa7261dcb50cb6d80ac1ee9e045027d0d6c4760541cbec65db502eac75e340555b2607779fbd4550218c0b8f8303692e5d -c3995bb359e84240b30d6927e9999a3c8c31577b42dbd527dea888466f209724156f57b3392566ea36066eb321924d8bdc5868c6a3fd546c413f31a3a85e8cde6977c4253af146c8acdafd179a5f0356d6219f3db83d565ce1c1286b5083b9226c982641ffbd5cf76738eac94b55ff7ff37817afc68761499762525ac97d8b05 -df98867af5ade57a001271bed2114f69b037ce084870e224d7b0b0e1af1f911bd91e50cfb6017706bf027c0031ebf403420690dd73ea6b862ad2340a1281063a52c647e793d852ee7d610de95d8eb418c9d091e8651f8a9f4c2becd70ee006abdd439e38a773373ed57210044143472bac3ab9d587b84ea9d166f61b9c91c1ad -d799dc56a7286200cfc1959e434161e67551f5b74a92e515466ab1332df4332b9e07af5803cfdd4aea7e6b76f24049cf402fabbdb4529c180d63b1fba3badb09b23eae4bc8784baf2487236b94684663e3bde39acd41c875ebdf1e5143a55fd15be61b2991bc24f9fed25d9779c75176f597755f6f0d2a95211f4756c1516fb5 -c6310962a28f5ef6bbae4ad219aaed7a5fd3021b64ef4f92b3c0ecd605cad3a9f97c8a8019724432318b1e65452a95b3e8a91d2fcd4a0a72fe084cee5c526b4ffb8ce02e2a394fc1dd4c4781aa06be5c2e55ed015c15c4f4b7c408af2ecabaa3b2909b427960571eb7cbbd9bb18a9751b6a92935d41e9f7176c97b64ed55354d -e5192872a3d1e009df8a07cfb29361e86c95183d9702d02d257bb5bbec7830e44f14ca100ba2a59fb3dec712ff6c274f592a45daac1e5c2b4e31b737ff1a57ac338e4e3fac6dac68671e3b7a6d5ee21cfd8604c04bed23a45c00ea0b7d0d1f122af3229ca667ee8808f86fe2e740c016729ca1082873f71ec822f145d9b76aa5 -e44d270ef565b5e7e27244463c6ff3bfaca373f5248970a917e3c76f80f274f328793273323bcc30f8779dfa3454787931c7f7a21ebf41b8532b8d7dc86c1f67edd627e7425aa3b86b3f865c848a8c5941ee098caa2f307436e886983552c6aef44c25d65186e1d0ca31d32a9f784a7e9d42d704c331cb4bf2815c084b356315 -e0edc4ddc48bfbd3d7509a7a9aac58c5538218b81f4c3eaab6fa616954c1d19458271a91925dd6a2da62cf33fc137687c3027fbd671d8c272d4d74e4afd343530e9a62a90de771d7340cb3acaf85444c3a861b7f73f0f1194d9f1bc72482b7926348d41ddc5d74286349cd7570fcff35521f0747ec8d3cee3d6ffafd61402c4d -cd5729475237d63b4dba8e30ebb93d68a0a867e2e4b7d624117adb20708c61102b0ddd4fc2c14001ec81fa9638f6bab94afd4ed51b3dc669ed3aa800b6b9c52a396f93a24b0715dbe17a1a8ed2d773c373570a415647794b28a9e4fd450a6a3f4e6af36dbf31201f194ccd6b09905982e01d5e56a743f4507645b84a28435b75 -f629fb24dc8ead8c4fd6b2a95c080d547d158c17f19ab53deb4eefe36857a5a1ade5fa87db6928a3b0b1cf9dad51819d93f4ae71d3881a26e54cbb10216a63687f2a6dee8ef58cf6d8602b8b394e6b9495874b8f92aa88e2edd842ca9174290c411f7e582ec2a691968ccec291d849d3f2d0834aae803b77839bcdf42f3bc97d -f8b09d6e5cee1df04800701b4583c8b963e34224d6c9566bfd83b11afe5d8b1b26255918ea42df2c389f5c355476ae841391282399de66a055d02bcf1cc71e1b22d1903e4dcbe0bdeb478a9949690cd694fb86ba6d7e83ed73e7a739486d5219cdb38a7781a5144476f01818db6abd1d73be57b0355231f24ea0154c20f5050d -f4163ed4e0ddf79fd97c43604c8e7b0ee09580b62166b6735c55ff4fd849c938716c0d129f5874dbe070724a0e4186a9a196677e1a7c52b9f34a117d51fb97281446ff7f3336b225ed287e4dd82b84c024e88047292d18e061dee2f7a9ec5a8f81a7717071a2f86bd53b80f68243bdf19e446232951265c065a60fdd487b7c3d -e1145d235521795fbcecf10eb4ca8a29cbeebad436d82540ab3eac21b46f46891772b08a7e69b1ea1c504047b0f584b47c600e18a6d7511715048c4e68a6c54e1af0ded19d84c83f84aadc1bf6ba030f2f80afe29adb094eb68a76e8cc9c8caa95e51c11fc590c90aa86945456b72324cf7035d13e4a1ea7f39cd265964e2ac5 -f0f245183e09ce283c77f3e17e0cb4ceebf99c23e4433a1241a68829f0709cd929068f8984b0bef578198ac06f3a3a753697695447d0a675d7a897ead5a99ddc0a444b4e6eb568932886ae1cc3a67647a248a3ac95e941517da3a20e9bb301102bf28d812434358035901eb99568b8982ef9a76cea58e874c686b9d1bb7e6cb5 -ea13168958667f214be4cf775d29789ca2851c20360aa05e76b5caa7d1ea4e6208ebaaef15dc9eb2b0cf54a9211bc0d615c72d251f361f861d0edfcdacc8c8a71cdcde40baa97d8febb5220fc253b53759b208a6905e00ee4970334270777dccfef096274fffe21699a37a187d4e771dc33d21c8a39e479b1ae4e820561aa5c5 -e666c27528aeebef0bcabad66873b3b44385315ec52177a68d6ad4fe86eb0307ec0aee39d7e671e8dfe432e31ae226cd99e3c3af73b9740de75674621abe63a510b264c2d6597e0963be2257130cdc4c510ac5001370b22d7edb060619dc525380b97787853a80f51492e7d75285a106d4b1f386593b4a8deb46baac39acb12d -dcb4379101c0d50c12a85f4efa5e8d5a3765de6f646060458db7469cd2fe0ebf620d38c64b0a6720080df8859ac74d3a5209e9a59e1c2437860b58a0ff8d88c279b164ff5f817612475cab07c966b275647cc3b765347c21b431a690765afa60f0158da8101214f28d034318a86bf9b592cef2abaae616017e2d5a046edb752d -ea5dab735eb313fae23a38a2aa217c62cd7d67a00a5a56fea73ad5ddd38c4668ad89a4cab1f94f3aeaa1ae7edb27518026e41111b513a74a4d88b3ee9df0bcd991e8adabe8ad233b0fc0bff82d0c87f010314e8a069af98b2d6aa922a8e7792e8a07fd61da0f8325fad04daedde33ad9558e193eeea4bf35a73ad21995f02c55 -c189d07afc0ff09ed9fa600f2b16bc6ade9a253420079dcdc5107946ab42e42a00b2728b4baa608f6ae6376b2c7eab0b15824efc1f9c5eb320f42c837524bc9979322fb29458d40dd65c5c1e629170827876dbf1f37e774d71225ac3a548f4e8126add70d76d6bc802f84484aa402a0dd379f7ea2c9a9d5488bf26c38b46267d -d74d8e36181e5ac15aa040c54bf8e64386aad135468efbcc1cb17c9db0da80a233ee78cbb83c8411c7632955e1e5c151b5631d1bc32683975c9db251e3c8eb3336e7bd888c9607795e040b1eeb85a59180371f7089f9f19e66073a32af1d9c23004cb656eb37955b4672ba85fd707934d0018202d02af9a292fdc537d9335add -eeedecf01b04430f99072f20643d57b88bc4b3d1ab69ae1db4b1867ba7ed56d50fd9ec9f06be6acc702b2ca193147343483c83f77894d98af2f36e6695505ac43c9cce9a6fecc94fcecaa89360bf407b28b6332db5dc5449ea9c68b227ff1abe73a612e4df4632a5d8dff54d721671ceb603ce0750e2ee8ffa2f7b82b3faa015 -db4ffa9ff038ad29458284e3137601bca912bc18344cba7385c3fc73d2d072fbd0942fcd9048321d37ad8c7c1cac6b431c87624639859685302dc830d671e7189a64d3fea5461dacc06ea617a037af08845f86b2907fa3bf7d2308806694c44ef29002a735b58802200391c3a2ab88ac9cf8ec437fb8068902160534788ad4d5 -f49318745e60ce9c01a772f6c051f1b9fd0c1218ef56a442ab235d6e7c6eddd21a564b22f1d587222bc4fd062e668d24b17802da698e2364720a7c1675fb7982972f7cb583eb4deac0baa2d74ebe3759517e9823bbe50bcc3bd94d7b175928f268d95e68e734c6a7e7c9e14b52afc3d2745b4af669f1bf436793cb08a1d5acad -d2fb4ef724dbf7fcddd0ba8686c697f5c64a869c70efc258cfcbecb68e0bd27c5269018b957604f4adc46124e28078a40b410d2b6fedae4f91892d172204327cb4e71f9c6f89b2d2b23f1c40b7389205471358e89db6851829f9b9fdf6f7736dad4ccec19830e38f4f5f4dc5ea9ddf3e26cce3cadc2cfb30752682e4a829ab75 -d5daa77d5cf5869c9c83f3048a11ad7cb39aa6ab44b353c9b7d5a4121aba52954fef42bbd60d475f361af181322f0919b9b1d82339dffb7eb74cd800e1ed8f71aacc66b6fa67613e82e40f522e662fc27604e129ca42c311e4994711e143459d21c89e07a7d14c02a85abbdbf2e32f9b559d9f24a27a98b2521d39acd6c690b5 -eafcb4e1299d16e398fa574e354d79cdb9625797688faefaac2d4a29b23ef552823c7e19d22fef28e2c1a24c6bfa374063ee99fb069b97f8bc472af6d69ced556f13efea086266bdff71c1b4da8e4b3f85e1a72fcf562a70f198c7608328c9277d85247311acc83a98866a521b7fb9aa0a7f4043109746274b624d8dbefd4745 -c7e8eb5f561d14193634b83e7944b8149e67f8bef30702c3a04acff906d4481134d4755317cfbdc39043dfa9d7b4c0f98e5b01a4f50ef49c7d17ad7c4164d1bd9a504de03bd419b33980cb0d0938f0e6aef5a7e69c1da4a31b4e8398eb00208f0175bd1c4f46e4496580dfc26bd9ed2715a9672e144e07e49f44e91f68a0b8bd -f08ec66071a5b495fa35b81ebc06eaf3fcfeacb3fd78b753e5de57cdeee8be92bb77db13d1b62490f29e6c1821e54cd30d83b54cd9e9eefc349c7cb4333b67e692fd459ed9f2591166693dda538bc39084ddf85014a38b4df0e88350ced2cceab85fc2be8b14888889f7c2d5e9683674f40610855d77ea09f89d705ca753702d -c2140c54f9dbf6e1f412a27fb4d6c11b58434a1ece009dd1dd820ef05f59dc0da64f05d96be8b9d2b27c6f9f5e49cbccba9b16fe1babf5eee02fe432ad86c04182371d3514a36f416197b9524203c2919b2c79ad55467ecaa56095e3048830b63ccec9efe120272b6ed318804cdad84a62f99bb63464981f552c655babf51435 -d4b69020109685911be78c377d4bd7fec5443a91ea13266a0c8286b0f1289b6df4b3d451ae92c5dfc1c60c9ef38a381ec9257b65f984e1e364e6c060198f3e0823405aa93abd8ddb7daddbd1e467df6b7b749fb31e4edf88fef8d222de401a42bc180fc5c5dda9d7a494c8c88359072381727a59a3ee715035441595e622edc5 -d2b5c8d40f92c7f7af2933c5e7a120977d26637932c98ab9b034c53074ea38ed1279e7e71b062b8d140e3d499f96a2cf696980043611ce272475099dff5002bde2c6f9c936b4764e0adaeb84ac9554f81b8de3e195a56d9314660d6ec76438d6ed9c8a84a2cd1d08c50ca5d12392df85ccf70467ea0407a3985dbbee5293ce7d -d2cccb950749662ae7599688015675cbbbcf7966a03d22dc8af81f4258a1b78e9b9d7bf8b5d6983256a98af801721a139df8cfdcd29e576af1634a7c682e016acdb7a510d058d4514be5b50e733cb9d30c7b0bb33ea184a00f8b3871c72ae3bbb37d9238e2988fbbbce08c2d4a065d0c63e80c7cf40f15535eb55e4f50d360b5 -e81853fbc8f1fd6896a47a6e80539439cd9645e8b0ded1f5c554cf853e617bc0b411d15ca04bb9b22fabd4aa2226df4c119d59ce36ab116166dcaf03129c94f7db155e8638c8d309bfcd64fab7c77e6a35b3d2668a40f02618820f51a5ff241c8887066a45ff2fd930e1d5a6a18e9e9351adfa05dd462dc7c9382fc7494b54b5 -de9f654dde79f9170defd2ad8386a4ab535889fcefc088eeb1addf4aa45a01a0a4d583e40109a9637aaa8c7fcd5314570bef2ff3b8958e80f2fc146c71b3fd79ccd4d06d0a7be94eac5ccb5fd44695df6d78ee4dc7a9a6c51852b95219b9b296a10d5ddffb8f38ac5034351565caadc01881d3575709a0e9e818151852816bed -f89cae294cee1cceaf47188aaacab9ef8e42b584dc85456f370aa6d729e28d018da252093e35c555f242c44c40e1e531dc1f1fb4fc955ef4dcbb13a340adf0c7101e1afd8d11cc65993fe209ea8886855c132b6fc257e4190356375cb8bc004598415f51cf5d952707e42ac26c85c184990906c26f9215b9353a22cb82e2acbd -fa89c077b8fd463079fbb1c9c89b2891e6afc11380297be421cb5a7ff390385686879041f70358f1db73ebc8df6a494393f0303e5c560a3fa2aba714395a20398aa953dca5fde0d901e1bb617790e1f0094203b5b1ab164d86783955e5826fc803cb72c3c6bc77ee9477d3eb7df476e6df97a4b20e59facf160c2ad0f35beb95 -ebfc6e1f84e61274faaf64e51d06e188c3efad1947ba41027041b56e3a1c80dd71281759d7a75ec704e22d9e205673ad6a38f0fa0d936cac6e3c2754b1f0f12946f4ac36f3248880e2d7f57635e80cc27c12b8016864d02a04e5236f537eba37f7d4fc5b46af2d042702110c9f1ece18d74879f776e3b21bf76adcc8617e8fed -de9ad428d3d9b64ed58c7b59ae9fce61cb2c5ec3f95b5955341f67ce61c0db17394fbe596b5ed306a293c2ec9591b5f5bcea5b396bddbbf56f435edc1b4484de6310975688210197160c945b7ee3ebf6b7c9848318be0e45899d364fc67d4ffea82479fd5f672f8df5f89ba157ff7ce6953e9ecc685b5f50f629de639f372a7d -c87d59cbe55203e3b5ea1bee1489173612a0e52d9c366a7e09a0575b0e79ff5d07f3adcc468018a2ca24b974025d2b26220c2a110537de158dcdaf860e8e7e1685e47f8327ce81ad8244385c88c477add2c8b997b3014ffa32a952e179acebd87fa545e91d5a56d4a16e41e50ed5e3d5dbbbd7be870944b2984afc2d57607db5 -d82c4ed9f5670b8b68d2ad054794f78a0b3fdb32e88db4f72f75033983bd1884fa8bf5b3a1427805b2f4d4787b6a1547876a01c8a9c2c74799d5f7c6e0f0482967c02db243be59c78e4fa4f5a34e4895a07ffcca0ec3bd5f24048d10ec4e1bec3945d7280d8144b5672a76746f6c15e42970eb55c840687a915a464cf4b4795d -d500a754e5fad4d58a926c0d18159eade6b51ec72a6445cb782a9954c54176bd7d70d3a60fe5279757a739e6062eb9cfa83e3520e1964f59def2d9808b32da1468af321ba7be5a3bc619b5c75c636efaa86d360e8fa0675f3dcdc4438c417bb51902c9d3565e37c799fab1b94f17854ca143533795ebbcc614bca54f36959c4d -d4d9363f9db9a5e0bc14649810f5c435a731f6a3fffe42b24d8df6a6eedd5ad0562f17be5db9950d46407bb9dbba9f9a3ae29fe3cd6f8d04595ea26849bd35d49ee0e8359c47cf5776b51567c82ac6cef6bec5fc4e1d5f5e712a1a9e8b449e6a577a4104b385bbefeab0fa580ad8b5fe8712779b5391635f8fec655c59d656f5 -cfbd0ea0320f61a647b842dee1bddc13ec5de423c1be6fc590c31e8069884a5f87c37d7e0a2a2ac6fb34188f91bcba00e2b87b65002e2ee25461c2e2ed35a09d7914fd0779d3bb46748a530ace5c5006e200301b9e26d3d7738668b0b1fe5602b7579b7b4a904117010957e55daaba9baed75af81537ddff4d20f16351786c1d -d8c02acc14cc767fa7b05c3a06207d5c861262b850ba868193d9f82b7aec7d9cb656175af823171ae4c0776319a067daf1c7ff913432f4d0133c2b75076e800d6de11debcaf71f6113679e4bc16ee76a3de6b191f6d3cad0f9d2ec82cf415c8412fb2213f0ef13a67d3898ae4ae1166d439c9cf4b9e20f2c2df83319e042c3e5 -e09ab5e7d7b2e37af36a0efa852cf2dd2d0c3356d28a81a8d860745806998293b9c337c88bdcc1c20b41d26f50ce1db86a67c5b08d5bc7caf5082b1f6b9732f8fd6e362d6fc9f3c7dea1babd701a97b41c901320e21cad45dfacfbffd70f2d7484c2df74903b13cceb7c16a3b694c1f3e598185fdcc2fc57e2c6e5a37eb84dbd -e5f48e4163389097f7f2557916abcd1f9312212df0707edef38698f90010aa7b700da25b6c8d3b514d6446b4e91db6f8c17eae2819104f969f30a07e9112ca1ec98ac4461dccaf667a48a552a51a5eb1acbd7a75f0538ff2eb6d8bd2c3b320fccec7a318731274edb1a09b6116eae22be0f3fdc914e462d2575cca09f0ae3365 -e402a052a7a9b2cfa8242c5d82973bae666edb84875b46fc25f708d2b102ec88ffc81e775dd01ff7f80f86974fc5c628e3857827466858b6a8cf5b1609beb4ac5a2c295ea1f07b678a4c5f4c9a9279b91cd314b6bba8ea68243beba2754d4be2159ccc1937d8a65d79934e78fb70c26ef9aeb114cec8aea0c82cb5ede771f8bd -c71fff2a5b3ff0e26dc3822532912b9853215321f7c64f7d9c185021164778ccd16d948dc71373d5ada2dee3e8dc0f9c4504d013d5222e2a04b3c566c31959ca85aadb18a843de651a1280f28c3b171495cd3748d24b21e1d5c05bfabf7a718c88a6af4d4eba69abb4eb558c15ec988708d0e10131e8c7d0d11ea6c64423eb3d -d7cbf7cc537909068a0722855a09cf12b51530e87916e6c89696ae56e23e6fae0788e2bf78c6547bd121e333c76ea86ab23d732b793a2c402799162c44ce27951c1ea985ffcffd7b0f94242b295bdbaf3b8b7082066757d7d9b8c38e4134fb6006fcd89a00e4ecb97da349e5f9f93950e973ce136e0c5b07c4bb1e79fbca0485 -d864ee108f8b62a1d71199d384358b2db77aa201c67689fb2c3034e3eb7fae2fab138756a59809d330e55bd15f41451b1d106a25db63d9df8ddbe26798c03062f0f7dd8e1f1ae43fbec8ac08f919f348090a6b74abed675d9f55028fd9ac991a32ef3b12678d3bf7f6e63705cfde4ca9f0fa864f693e635502ff578828bfb70d -df728818bc24b802d4928b3fed26c687bf8d4da2af081b0a5b7e8408d0e1e2de2afd236decc06e8b58d43e064765535741273691c905a083424bf82ab2ae83563a7c00d43814220569aa54615e7205551bb79fcf36af9ea8c30799bc37e9ecdecb90355a92e5d9d62328059eea240b67e36573b51d11c9df248190839afccfcd -d740d1962a65467ddaafb33dcec0247d6a0d3815d7a4b1f3da3e8ed0ca75e19dc02b16a71dba5fa28d09f38ac61352e0a870f8bfa094b459f5bea40cf42fbb17567211fb0af831b0c2112154762650da96d76b73b58c460f837ab8f8918a2a081f7a04716d85a87f4676404b03b467781ace02ec88ec890464c13688dee050ad -e1762495c9983ae9e73ed7458e667553ad221d6e6b675764f89331005ce0186c6d308d3ef1f911244bf4ce0d588505f7b5559bbee448d8373c51c8ea98ed1f3b3d112f4fed7d560db106c96c5fcb6687779ec1f6f472a6703a70cbfd2d31d607ed5e2149d19204ccae35988684b60c54292091c6510e23e36653d3925b14b525 -f311353a315073e78a275aaabf28914051637a5cb165eb300498365c72c6d1e67bd2510916b31ad0518c52e79e19915d9a361624d4aae90e852ae780c1d43edcea4c27304fbc9c120fff5566e361d9d696c99fd01a09580526292e5f626a8318a6af6f34665971dffba3f676d64b4a9e3cd8d6601de4f049c54e6a69f4fb0d35 -c610a2f93bb2952f6173ffc5cfbac1fcb866c4a61d2d7ce84932b63e5d1cd84ff22f00bc64bcc134e012d0e960c022c20fd406e8b1ed4c50f74a684e081a347e8dd8530f8e4c8bce1eac6532738d067e04d30b74f594ceeba4fdc49c3bc92e5c002b63798edc61b7cfc4a83c8d8e264c094f4d68b81d3be22db9d1d63049989d -dc83d0f2c3f7f9c7fe861259e876a071245fff737b963c686b45d421f094e61df3659c9de88d764072995971fbc688f03c5ba77170ed1786b9aa91b312cc008a9d46cbf48328dcf7a8a3ea5a172b88e16a6de0635770f3cbc47fae8904dec0f998fd814a7415e9f8601938cfd23f38aa9c0972c5712651834a23627676d6d98d -f8a26d32aa3c0a5a555fd3d63856e2dd04a1621e7caa100d3d775c67d864a6f7fca4f0564f5866cea4b6ae6597c9e81c7a67ebc8e7cfead05a511bbe1aa998630e763e4bae47d05c98b6242b32511260fa834b5912970b94ddd996bb712d361c2ed4117a6a7e53543b9b8911eacccfcb4d58d7d4b60d8f4b261b0a426125619d -da00566848c01f70b68f38c714ef36b49121604e951988e32e30b0649b15e5732918c5c7d830bc081a2b1bb3a16340e9fe8e6b4683734fff68c018e85f58f1ff30b54cb047e6abf634efcbdf080f6438e4817fdcc4c10f3003d8528502704c09e99b6a65ce88c100164e9931f4ba544c3deb5690357a0bf5f1cd9b5c6f5f9bed -fa5a96c584235b346dfa9355e3fef370e71edbc85826c3c202b460fe60c72a460c1d0aa5a4668ee910e8058c6ddc20e1f30f5b6a369cc5e2e262001388fecdfb030a01dfcc830f8095e808c439e32c1c22666b81f5c061ee279069c67efa9f905ecd04261da47539e10d1545d76f602acc4eed83275755523d8107dced594d8d -c9c78f76f133f80c60cb1ad3413b7c40afa5da7859ca268b899a75ed06f09d85dc62d054d50d9b2f060f1930bd150e6b0c7e71a2bf0fcf3d02c7425ed17a0b3673d3f4f9437c8375302c8c5f35d8409bccf4eec3438d7d0aab52c25be9706fd376d91cf1e2cd43ba19a07b76dabdeeb2650115499630fd7458aa2d42e128051d -f05036e195b7ff5750867782fe51d704d8717cb0c9ee23d598fa0d2d7db8f1105685495cb095a05a9557ca4dc8fd7948dcf362715637bfb171e5038217469bb646029155af6e83821d82d50a4c8064a2496778e8c073fca484d2d2367c52bf39cdd98f1f2bff5c2362f79ccf871a70db99a404d33b1fe6615d9dcf64b2b2286d -e6389326de9873443429aa1213f8f39322c4dec5f62d5b4fb938db5ef185adcdb29f5d4acaa7b784fbf9abadac995e43b5298c2a06f34c681e08e29d100f240676c8d798b141335afa8fa06e8e102edcd542318dfa190c981be80058855125b1e1bc4e860864a6b2daad46293d166e5ac6d33634e6157731aab64406aa198775 -e28708b6c2ef0e6eb7854970f88cf767a58ef73422bacbe3c74e208b22133ba36ba266c56ed44893fddc0ab3037933fd4d174d9de58fa00fc1a239cf44fd3f53775df9b04aff3c3daef9955480fb6b01374499d0b263952c3759f292455f720274fd892755a58d6cccfed87fe7dd9edc9c75a554cd1921b7eab0acd38836558d -cfe5a09a3363e7fcbb97280be6f5bcef49295b3a2b724d8f11e5eadc42e0f58370fcaee7ce6024972e66fa40afaa26c4762281dce1744664aceb4a80bd356a282d42dcb3e8f3ab25ff9c98d7a06e41db8b1ffa1ce4b878b18c9b06bfdb14a0170af5d2895a125314e2f36b8d3b75e5b6af12b1c7ae99e87ff942bf5723993ea5 -dba8a5680de66065714e55eec51efe354ea04fb3e796023739930227f513f003a03d8d0b70280da58867a8cbc25bec56be3ee98c251185d0182c656246380d6088ba4f37b6440eb8c1646d448e34909e17b4c51ec5696058b87ea9182b509a963e5b2f6b6c1ed0b70c99ad3635338b956951c47fedba1f39681e05cd7bd8d7b5 -cec8ffc8e7c03f70b83775d4a2d3eb6c2949fa9b9deef69c1a698d1ea5aa1e090e7a7a35ccc51b160a94a997409ebd82043b0a6ac7461556118b61305ba9006887d4c0b603ac1649e489380ffa7f4972e8fddaa959811aff55e70e34674a5281525b9ae0750aa69d531d73a8ef7e8aabfe373d66a752877a428fca260093cb3d -d90b40ff3961fdc0b9bd0890d9d6ce6f58f45720b6e46c97ebd876e248a054027c40fa9a1a6b123f1d119ffac30f60a836b558bae286b768926d82ba6bdc5c6c115e76975cd2e9f282e165e434229083fc57f2a025e8de756b01ce83f011e7ac82a0c4a995a6efe6878f2ec937b2b642cac433fadbe6bc05d4d94cf1621b9de5 -c51983be4bf08d37e6bbcfcaea856bb66581438a118537014b3812b01cd7b482b8192d03c21c3e15dc61dda8e729353ac22791ecf4d197ddc7d57b1063ff80e0c6dc6570a2088f670f2a401bad33baec2490941b68c72f2c99f3f9ffae478e3f253c4bc2a5d5df040155da0a484421a0aa061fcc12b5178ca4cbc5494383e0bd -eae065f0dd770e127b9747e3f5d89d33c7094ac37ba2ccbc63dfd7d4f2f208d6500ea8e38d6072e6716a4899dbcbccaf0b72b8812e34a699c6605ec008d8eb58a27ca1e1ab0500bce2dd236af669c53469d658cb7681355d172b65f496871b04d16b83c512858b70f4fbbf9557d51397278b13a922031160c1131b10c3c32b55 -d7543c8648c0a7230ec35252d0e9f4ab6d281cae438670a969728f53b5867fc7120110a1be83d4d4a7f95bae092b85bb37adb630db5524747db6bc3f350fda33ea8539e14b31425e3b099b241439efedc44f0c99a1975b6f545dafb4edaea8c395d00c9dd613a1cbf80d755df8a2d614ec5e5e83562d28a6e739b2bebe3c6c8d -ce98fe4c3e7791ddefcd1b9d35275bd2c1f98500ca0e533aa6fdd1752162852a212a60d1278677fc4b2bc2a32a7e67518c1e8f98fffd3e3bbdee1e4999b36f31cafb59ad586796fa40e5d5f96233dd3e8dd5380dbedba349d529d5ffc763f091fb1a1fdc5b012de244fe3517dee4bbb53a5e89717491a689caacee4a21ccf8a5 -e44142ef41cd39b3bec3bc40d7b8979cb700ee9ff6316feeba9c64ea173ea3af565bb7525929f247e13c5e8d7dee841be0f2752a20c1ccaa019dfc26feedd45fbc601cae0f2b6f170be95216ec176ad746df2b1cb3b49d8ceb9ffdb48de1aaa1ca1fc7cdd7cd6f1ad7392f3a1ed5536a82db646c4c029d10c2545d8655697a25 -d24c24ef31e65a1cbb3418e1a091398c92ad8fe1022a13e90d232aeec05e2021651a774d3bf5700139dfc523b4980e9f287d7f2dc5271db70dcf5e3ae6b12b15e057674a13e5c106975d0b98da8edc756c3a038c95d8bac78a0bd9d59b64a5d65ba3d2eba47a729570b9943a74f1d6838f97a461921854c45f0a55afce001865 -f53009a9c7023f570bb32b16c64df08b5e473ad7a4695479ff799aaadcfe15336c2c41d2d9b4436eab9c51a3f8b46f82f151d10d01e7c23f1d2413e166243a60c30aa686a9d79fd7a06694b56e62eab2e9a38334c95cba056a7e354c9efa052fc5abca6113608bea0654857f608366e3637a46ac63da1ac9bcec8575ba391f7d -effdf430fe6cf83e9ab57fa9af31038676bd7efb035fbd4929e305c88c2e86a9d7fc7d1984255b400a4e3ba69b9c039aea84c3bfc539954ea966b174c7e904968cc3594e62caa9d495b379c69f4be4dab289f9560bb82d86d093dc07c828adeeac564c3afc43a91799e74746b6034937f25a7ffd47a2e95f5efcf216fd6e30f5 -fd312c2d37a7f9bc5747c85cce2bb9b3f11faee8eb0cf9eabb5e2b985b6d79c0be0542b83f730f9b0a7d844c96641ca2c646ab162af73ece2b3dd2b5920746083e48e9bc2aeed08b73129d75aa20118a1ec0f4373403c5a82fc1be24a2d53ae8e127bff6fb842d9365746325e1ff6b825bca1b10bcc44fcb7753cd93b4e7da4d -e19bae43e71c102ec61906cfbe7a1c50ff4f517f9500a647a3d138517eaa32df011a944bcb30fb399844cb8b24c4af8e33d893e002efe6d9513e8279a08e2f0d6343387e181cd287459605999280c964b8e4d1eba55c5476dee6970c4405a9872451bdd013ed58cac1d619b88300e50f83922038a96dac937799bc86de1d8fdd -e45af63733bea0ce335617f63969fef91160902dd6ee6208183a5bb57d91d5ea2a1180b90c5b154f7aefcb4ad2b2229455bc2c4c6abf9bdefce1ab45d2692964779cb7461b85c2c81c6e09eab23eeb00a0aa6bff717d3dcdac23d7a1f8fb1dde321227538cb0a22439b81706dcde9aa697694e421d6ac4cec47f7d585eb1b5e5 -c02e43d1b9223510d290d7eb00a1e7836ae45a4930970651850804396627c634be76b272642b4f9eb9732f3f91635761b708cf52d797fabea83cd640f2e4cc85dcf358ad9f58573ce0a663e3a4dc4b35b3a9e4cba2af9eb34886bd67e09249cae43c1c99419fec69368e7be280d31df88022a062eca2915007d3eec666a19555 -d01d138ec72d3cc8be8a256213d130ddc88ac122f45ce1b8816a6bd828a4881daea455646f470dc5af804ca7e8bfe83944e59f3e625c1de06f86fe8867e50444ce019ed0bbf82a020139bd0bf8a4b0558182d5867c07b1081fd831326e7241908c9c83e459459721c5dfbcc85ab9a4bab4c729f30ccf9031ffc7204264c6468d -fd3915bebfdf090a857dba66cd39ad8c087cd94fbd3127cda816cff9764c6b402f3995f642d85bd820961960188619a4c1b3ba044bbd95ce38aa1c9c53a72d2da6cf8098b63e9e98f8f7293999cf7f061cd8d38b8062bba16dc9a8d1a499a02746478c5b670394e855fedb6e315ee1261fd8f18e40ff50d3821f6d9a5add7a2d -f5ac41e9861e7b80125fcc26557f0fa67cc1d1e2d1afff1bb0dd9e19287ff65b21a276021d0ab8958abe508879f38e91b46414c99fad0b6d301bef9dc68540cc0678adde95b7cbd238840ebfd274d4b0853323f19c625c2996bfc1740e88a5d098c7c9d4659321d5f6d04b5d4bc4eeec9e6aa598b4538cf876d5a475f90b142d -d58d247519881bc39adb7e9ccd1b8ab178c43b5858852d84b0f80f071559af43997a191d1f17ecd5ab37e78beb22d954dc469e7d6b457dffc05f0b908cc526c50e36c484bfdd037a8bd59afe13066cd2c93dbaeda276da3cc8a1404ecdeeef6624494decaca9bc2052ad9d5f1a699d739e2f5972e68002fdc38b850e77a56515 -c6877d5d0212ca82b394c8ab47464c59483bf1868ccb2cb1661545659a65eac46aee551b09f1e465b3169d2eb90ed643143e982d394e9dfdccab3a5917ea2b4e631a828aac0caa24bf3324b1de5484844f176975d93bc5a3b4d457dcd39d0aaa5d29ebb4207e03009ac30160faa29795e9f95338614bed64634c1572bb91ba2d -eb4a8bc143dd915e59c99a1469225be57b152e6fb804e948e7acfb6b36b10eabe0383aff8f9fccd65ea336b6c1427fe88bfb88d4b1265842375c8be6db4620eea2b45c9cbcad7db53470e1df13cbc19017951cfb693c4deaeb932450ade0b22fb5f8189ab090278ee1d28504a5483976d28955adbcc71fc18e6544433ff5c035 -d4a71ec4350f51d22b5546c6d7d6d07f1160b41866101ad847c412c39c84ff052d78cd5e2084c4e6e6f85889eb8e3084a6b0a60d9088b42ceeadb7a0bbb9366d5bbf89814c1b7a4045761d0b16778b0b1e9a8ba1b5a6d1139e52019978ff31ad93963f75ed98ba544ba7805437177876b37f2b7560314af5511c2cb43d8fabe5 -e5a5b5a02380762d273a3d808abf781b6409955e69ee510137bed632f18843deebd4d7f81f45913f57b7f1681cc9731eee76ba99f5fd0da8b2b2bacb15dd9ca9df53b5e758f0b8ce323ca7131d1cf675823ebceadf9f9a816eea392adb963557e28c29d966dc24c29147d59afb9db9561aa9cf200ea3a7ef284dbdb9c4b43d75 -e2399769327dd44829b3915999a66e29d023b82e52606001bf07cf1de15b2cb2685431a0167845fbcd06b8e7cfb6ba78dd8aed5edb44bc7c4935e5feb2ab44c1a35bf97dd24967b21b725a39260b32fede553f678c4cf07b0d4a1f23dcf34a75f49f0bc5b10ea517df13cc57aa11d89c00b23142d07ca274238c3dea132e0545 -d08343b82cda4e6743a5750db867698a28d55d3bf763b12b20b5096979be7a8d82dacb50c9cac513d3bf35adf608b1001723cadcec167ed6400014afea8aeac3f4f9e30e8ee46d740ff202c6236a8a85d75b618d291a081e5e145a07174bf2b3099f140cdd5c656670b5ad209b82a6d751a85a91da8c871ed3843647fa5962b5 -f19d08d244ae38b667a3eafc49ecc02c57ed3765a9b6f5e6df373dcaa34d184727e1e7e2d67f2463945ff05b4cdd28251e02fb979b08cf4110cdb4fa5349e74572bbbc661079a631e1fd4978942b7acc46888865b2fc5304d959f9c389eec03bca5a67b8eb9c85fdf381eccae9235e11aa4cb3bd670ef4d0a695a60c9f345bc5 -ea9733f219602bd2f8b57835c0260e5729c33d805e92768558b76ed0c434c1941ea514a0f636bbe6a62a954ff288d61a617958157231b0e51df8e585dac28cfb49260908c10a561c47cfeb6765a383f28e8a2640301e99ff6f22ad8b310938fe9bdfb1dbc1f977936d31ca524228e047b9771d73bf7f1274dd4c8d3c1d8d725d -ccdc84ffdee0c939b3428220f15ffc02333ba05373bf34461403d5087462ca6e33716806c61f68722dc19016bb168f10c0564a6838ba72e90db7a7e53561ef725a4b2d2fd46642b478c7431c0ef4f867ac42ad9adb88c4cb3c49556d4bcd48c553240099f27d91176bef4260e76b33ea684330384d997d8d863c199e5d2fa12d -fc8dbe56db6199481e0e7b536a7b11d1dfc6725f8c9904d20c26ad95f95c45558e2d4925215493052c3a1922d0746777fec9b10564a2a9352fe6367a089545f54cf1ac34204f683907c4c43faf300e42d21a07cbbd91dc6a2e7ec1182a4d43573b71b1a6e6889b24610e873fabaa71f25224eaeba4c431bcb20e196ec7ca2dfd -f8d0fbe2244f8917d1f3a0f276062d4f55386a924b2c43c027155a604e2b13d97c8c02cbf081b36a7014139626a553ba32b44aaab79b4b32206233256c8e7e4c8084bbff1e98e877a42d39b9ae2a27fbb89a374d1ed342864c4de01c15bf7832c1f1a7e367899e7cda988aaa46e8dd199de7bf596312febcb8ee78fb167cd6ad -f521cf6c8ee30acf897098cc12b22b02fb9413ba7b453b09ee30c1a9054ce49913b0be04caec5215668251b09db8beb273ef6cb98a7d832a8262c9fe0008652000dfa184f138b6087d79ddf3addb92a7b5af54f143eef7e3fa9e1e136add0c4259306dc3853b3cb9f55b341389609adc23ab0774ea48f0cd95ff9cd243e12b85 -e9f9e5446698aea25c754a3a109bf6a98d19b9d8b70254afa85c6c5bab62d1ab9db2a5901b8310fbdf00851bc1d57c6f5e5af582f4bfe3a67a961398f259a08f176c1062cac3b919cea6616b1f35319b844cf9a97a47eb166aa5f470b7a5bbeee6b051f69181f9c8d75ab71118f6459f1ba6c49b41f555f3c36ff562f8734fed -cf0da6581432e2b9bd38e4bb9d6497e3e09ddc23915531002cb1006271692ae28bbca7051ead4ebc16471028679b7454879400ba245cb4af1d7b4f5c41ba8278c6450a58f22dca5df7ebe945e67834012d064645dbfef5084f2567abb2a13944ea141e50fa4ed460295d90ef40d0bf5b0a1b2af8e8c4e9d52e34c2f707b2d675 -fc98b4b70d654a1aa86a64aa10a13db39bcb025a0c9dbf572dc1df22ebe96f155df7a1d624e85387e90cf6c763a32bd955dfa0ed99f37ad71aac4f8570d7a0ccf881b6cc4fcb91a62e1cd60488048294fe2dba071bca8689ca63e07771537c7e36deb5f0205a58d041fe6102e81918aeda2b9752b0d136efd49b71a98c7cdd7d -cbfc166895123f56dd9f5f4844b8a1f566082862f6a7cd0b425e1e90f92e129d64217e3f755923ce47572e2e8b1297aedcf3044c263feec5517caef9657698c3b75d6b257ac61dd60da87aca05da46a840c661963f423b5c76e5812741d54a1793f1e16f1d134d3196cfa670ee8d62a691214648cdef7d12db935da44787aa45 -d258d504c6f3d59ccd8dca3ce517279a027fe433d71e16f389852e341deba5eb2c94dcf8714687e7b6a6322ad390adf5e08942568c02a5e586d49011458f2c823d54a859a03e82410dd602ab3b5ad526e77f54b735065fdcdfe6c1657e31878e6d15689b23e1e079175ff683ac53a611a74032269477b5ea00e2a087cfcf2e4d -f611da44eccba932fc27d436d8ee762e3757744e1b2f0edaf8a7c63afe45675a19f695cb1fbb547ab2e3e5d00c804d8efaaea6f60ae35a5e338e5a648927bbf1fb7242898b376e0f66670ae2c0f16d75fe9279dc97015822725d617d09909d04bb4c48d097defeb5c9de928b0747715637dde13b23a37f97483bd87cee7a9f05 -f748f838957c169a4bcd35da0205727f4e036733a6ba5200cdf695c7a46124b6cb39b876354253d7394f9e3460ae9175e82da7771c9a0b2c812d442e66fc49f2c0ef5c4de0175bc32ecf2a072bdc852aac303923d40e0853e0774c7cc7d3eb6ac6bbc63bcefea3da62aee1d630acf23ca7eb4d0923451d19eb2638abb4dc26bd -eae5a4efe1e981d4ed08ae37b694f24b0e6c16c6991f3d88265accfc88803fd7a51498d9f6cfe2bfa5bd4948ef82ecb87da6b1221495cb117f0a5312284ff3678ed7d640ef2ed7b19e348e7a0bd694dc28196781d2475c45d6252ea2ccb443e1860df490867eb607127e2472c222d7bb36abf85aeaede667decae255dc43348d -e8a6152e7462c848d36f38e356c47d268b763542a5665465e4fc00c57a391bf5a735b808af29b9ba29144e93828a9f10df2aa2a198a767aab846614035963d7175d320e7aca496a8e57784857dcc10b571823526bbae7fa16102b1fe174ee3719b0e9f0b1578bfebbc7b77dd3658ade9d1bd6cad35bde306c01f9a43dd168425 -dce3db498d870b98be37fd5908c1a3f9b80372540bb627ab5f3860fdae340512b848d888d31943c45da506683ed373f9dfb078ad441c4a3445bc0b6c290ac4a53fdd53d758503684628ad1722d5d27d306cf22767c3ccb82d6be665622a6c1614e78e4079b3d537276b4ed16dcb2daf1ae2fd3b7301830ca7f18ee10d5578c65 -dc0262673ff106b22fd8f7b0e954504681bff6492f0d76c4813a8beff028377a21696e04a1875ba357e5a21ef720b22c6da618375d5dbb40677629e5d1f197ef880297cfc735eb7c16b1480e7fc437883118c2a17ff7a9adf24415c6fa80c2540756e73c3cb313a1b7fcb58f4ccdd2f481a528ef30c413594146d86e508c596d -c31f4efa0071274e62c6ad18672d29e8d0a34ddd87332c090b19c48140e531ae99fb16c0e66ef1e9258d417dec22be932eee3e8e2d2d1e32f83714f815903b348a52cc583c6376384b81520427f7ec1a93174885da96c8fe5b6f4d2023936fbd216b67f8e0314b6555c38d245acd5aeb83d7b05359f54171f356a9dab4b07715 -cfdcc840aaf8bdd98c4274ace9f46d8036df8ebbf027c22c22887f7804c93d6dc578659abd3d28a6a5f8ad889645c7e2b56057a3666467734183fa59e703fadd01cc2b08909f76a39d06eb3c06975e9b57f67c3517478af4a4457604962eb656920bb228633040bded473f06f055a46045ac54c2c63d109b515e360e5095613d -cd789dbf2f41a8cae05aadf109ead16729ca86da3a303d3b4ac05ccbf016a4f09e18226a6fbd0698c2f9d52fb37baa4b2427278fbe50d64c791a0ecdec22a1b97294f8a21807d82ec09ab91bd3fafc1a79b9e7da27cc7448813975a165ea18771367896046eb9924b358263c279fed1baf36be8bd82ce49de66a304a7807a505 -fb5fcf913fd6acb1fe6a6fa1cfe623631b3eacb0fb1af53b822a2ffb0bbee8cf544bea5ff17cfe897148470a928fa9290b35a487b8db43e2aedf67efe174b71409c8b15e769bff98888f2a69b3fe93d6e958cc0b185ea58ec5ebda005219446eb55d0736ad2ad32cf4cd580e60d25e26f1e792e637c3ac528fbdf1501cd3851d -d7216df66b03f51eaabd1e945db039ee72fbef1ea3f79846d46ab083ca02d74d7068054ac05d5ee5b90ba84c81f9cad3a969945f7d4ba547c8cdf42de47f95542f886d33f1a6ce7172db2fa72b5daac85462027c9d0aa1ed855b7dc1aad537935f30469beaccd3248dc1b8399f8cf627fa548b03a01c33e9d1238681574d937d -c28409f6abdb5ea38bc20f01eec110058cb90a07c1063f69ce8170cf8879ef8679b25965f2c985371fb7b40a2298e8cf61aefc062090ed32dd7477a99f775e39bbbeeb243b4c2b90d1c6bee88647e595e390e3a0a3d2a2890fc1e5fbc1299d63583170fd614ebaaefaf08e9ad323342c9acdf0dbfe2150f89eca4402499ca4f5 -f135258dfa7b82b185b48a111e343b46830ba562a63f53e1ef0a0cedce0d8b6e3e9323c3cceecd577d859f5659e6365085036ca7f15e75fb2fdb5f8d0819c8454f948309b2571237dfa5d08275182d55786efa8a274c5ac6641563bbf115ecf4f8cdf24b5bde89b90490c72a67fd5ff2f61d92015d4d53b5af3c48aee33838dd -dd23c15c71c7be2ed8d55fc98cb7b00269a3ca2f93ce801013fc77b7aab1917bfab2133dea01e0581ffc8481218eb7097f5ceb0167c1f223c387088f2c2d108b06d2bd1ff68e4255f4cf5508a067fa895fa27d9739bf7be72e661fa69163638a04766d8f9d07fabdcf010cf02f421ba893c7ced966627b5c6739bd2e70613fdd -f542781d273191506f5b5db33aae73a25facdde2967d84f1ea53e0fa98d43fbbec42401cbe771f71e1d1a0d8f48680739fbefc1f701546e856cb7bdd57c65f96aa4d686b9af695aac3b6ae92742d8ade5f6f4574aa60773b6c01f533dccc720d9ba285c04013a627fc0a7fb26f0ea48482e94d0f89437ad9a531cba372233145 -ee4e65895d9283d8717a958c088cf3bdb836ed38f4c6eaa9b9051739a1de986781e90ffd268674aceab08e95b2d0d7505619b9fad815876972f3391ce66b8645370c4050cbb8084f97c4eb7ee7dd85d5eeb8cc4eeb6917984a8bcf36f2539fbad5618b6a80e1409e48cdbab7bfef14d628d1028169fb6787b98a38920a558115 -f34ea6ca038a7aeed8f446b56b1ea9a175e082f8a03e0b764bef95a9e255a27454d4018f697c91f76a588e31dae7a9f9eb18925aeb19ddfcfb0b5cf6cfe253c643f3bf541015b3a0fede9629638c49c81650b8ee9cbe1026e04886a689e0033980a3c364069dc03dba3154da56807b325ddd96412960c64e915a5fba57e657f5 -faea3f46d8d6236c5257177d6f27bd2ff7a2312d54512c5cdedaa96effe4810c216e39075136577c91b2e0022f32ab111acb05f8a9b051c9d11fba8fb708b1e8b8154d8f3d6566a52efbfc0d8414b1162b435bd6b409382e1b34fb3d92615b887be1ad050578978012aaa5192a8cc4612d29bda58989bc50b837592ec327318d -c8094fb8e642491e29d3cfb5f0b214255838b38635f637dc8fff89ecfceed440300a2cd3553633d927d88145109973923a89b427cfa4634f77372938355217dbe7c19ef20121b4e213ec86a790ba4e867dd45fe83fa0a51cfb28fcbef983ff0c3c4a3e8dacbd3eb5a8e2b46a571e000435e7d871e8f932d4b56a808ed9a4dabd -c4f4ebe55a4f83579e37ba2779811b10775250d36bb5876ca8cfa896c53c8ff65be9689fd68a8a39281d053e740bebea27fd781f0b3ab5be3f40308d6998cc5a95f1d5cc095e7896825c6e0504139cc5f2438ae85a048daf28a1698538bcab8231a8bf449b1e1815b442be1eb1abd9019d0058b18e118256be7a70293e133b3d -f712ecdb5544ce9d3c146f317d4850dfe9bfa1b45a9d4d19dc9ab459c592274c282edcb33ad398aeb22e6e41b72670a0a4b0373c73c829570a0acb8caf1c7034d46e849a6be96db32e2f99bf0e0382920b6503a8bdc7acaa801c69ac6f0192b9c8293c7bb79f3c5ca82bb3452b3a314419e0b53f72867048710a7e02f4aea76d -fdabbf57b9d9a703eb7f9d698055cac6e6a541a1878222839a7813b84d7cfb75a25eca26df09d2cd42099ebc2269e7ddc60612f5e3fbcfb152036ed3cb83c56a552aff9ebb00a356705f3a4ce9100a805b9ea0527065b48ad0f6655f342fecc35aae1a715a3e00fd02bf177d352923117599d3ff30828a0c57fa650116df7075 -dce3548054466fabb408c58cab550ebfd604967bc785844da99e08a5e03fcc84a973288fcc3cfdcadf7e3d7f0a13d1146189713658c1c32a43eba7a84e7742c1c988acd1aea84acd4ba0dc7d87e3711933289c2effcdde2570684cf3adff3b54f15350ed40af0a1bf0aec47d77148e1937c9762abdf9c7820bb2626d4a6ba985 -f086ad1a65ac4b2afd897d1bb7895ec8ab5477b96d4fe6b06128515843c5584f5b8d3f4b5ae3deecd0719d3a772df47b37a8d938710edc57d5bfce58b7e415b4c57f623f5e50d456736667180b0a08cf0372f696d65f013cdd7a1a2e4dcbdeeb0bb1584ac7383da048cd518ecd9a3b5e7c896311abe96793041de812366fd6cd -c95ea65ce5be0a626740d2fbbd4df61913a5eb682419831b9709912d2d2176ae51f8d23b685eaa15eaa4fe76859ad148f6a2407b1d4461bda13a8ed337e9646259be2000010b2ccabc5b81151f7c59766898659d80144f36c4f4d2dddfb3b72d9c96b1e59e6767b64e046bd6ea612fe45434b68cc7b71bfe3b1936d2873aae2d -e50160abeb3931d7740cb48a3aa0681453c31eb3983a7cabf94cb581ed81ea7b1cca9c2157d562e63cd30e572e25f56aeb3102ebbf7e9e86e1c70da9d7119e7917536b375527fc6ecb2266c1264df2823355c8a7f3201ee8bfff6a1886b5bbd4b05dc78a7425d6236800732d0b7875b59417f0ef62641fb1a48f9b2f4ea92dfd -e4d5215833bed28784a0ad5dd2869b97ae32d0f6ca5f4333e5df45a4135ae61576a83161d03229ad935812fbee75d4f8b5e9e9444a25332855af2265c9107c24a048caee053ddd72b0d3adf16ee669f8f8cf1ae84a65fb947f0843ccf76ac641ff1ac98464cd36d80b243c2ec15cb8a6fad3e45435e503d4144892ebf74774ad -efe9f954c6f3a607b54fd893c9ca2fda5df4614d830053248900f58fd3ecdcc1ad994c55b1739b476ac8bb6d19aac6cfcf987f2fee4d0187461318e6a10fdf3b5936013bd11c582c49f2ad1d09d1ee9460183f45a22aa42c02bc940be4170fbf8e205c87e8c64943b840562ec7db4ae337b1f0f977fde638d8dcea9dbd9f5cb5 -cc4937af80e67e580d30ee54f7948481213053a49c27dc0dfdbdbc5afe79b50f103492daad1cad29667f5b45f3983311f4a3d769fa7e3493e5fd8f9584a3942191104198de7a77e978671a2af406ba6accf1e8ff883166e29ddb00823cd1d4d6689d287bf7d0d511735609668557beafec9d6546bdc3fb631c474eec3e2f26c5 -f935bebb45a3b09d044ee922c36f6a0066e8668b4717c5f21cbc18a36d311caef071995cebb139b39c5077ff3bd5a527f858c545349bf3f50dc0323bd71835e1685a913f98d314c85ec1312ed0ba310187148ae6988497e508e00c0ef1bc72023c91ec8ed528ddf1ec8edce3ead3e88a05a51bb7ebdc1fac29cf596cbaa49c55 -fc26c66972bc7b013f0b879557e341a1ab9b05fba4a5580e9607358674359856e13a1439756614bd6600202cd18f932f737e839fda6427945750345f7070a1e317d391816d58e1500d96188087174df8970cbf8c7c4359da09a143084871079cfe68f5b6470e9eb6b8508ee4b8baa271fd1993203b0f71d074c3bea1b31cd1dd -cee883ffeb32eae7594cfbc23d3cbd5b37c72da6dd7d3d5bfb286f7dbe460ac3b6043f78cadf14715b656dfa92d421958c8acfb43194078759c058565ca181b32c327b94a9086011b5952ebedc80d0e8ad8e66f84ea9d9677e19c2424e122f3c8d987072322f24c5de5ca61b5abc7f0aeffa26972a7a2d241defbaf7af8ede45 -d01046b4fe46abf9b099573273cf61303301689d00de860f94acaa64838d76f25365bed14039eb287e24ddc34a07c183f6a2a81392fba7d6e1d4e0602932ae13339de5a788900a96d58fa25042c7568fbf8939ab65a5e47320b03ddb72091895056d659677ad22ba1ce6088ad515247327ceb49fc5e223d3e828050c5ee8a155 -d1f9a4c8b9d2d6c6ae0d928fd5c2c6fbc78d056c6804223788fbf1f9990298a9fb0ac57d85dfe1d1590c617212d717b292e2dff15279b973f03eca220b76c5cb1b699b49221e91a88b0619384df979f21ef63a5b72ed20c533388ba23d96b6d852490c5837955aed263f56eb862bdb50cbda07c65417b25864bedb6cc6cc39cd -c477431e31e33ad6357203152d48df7537ee7d4343dde4580bfce608d0b07725edbf7e16d5a6ad8ddd79ebff06905225322e7ecf86cf2e9d6cc141caeccdbe4c24babad2da9eb6f696620f056a42579cb5218c1acaccce5a1b3a76dc4110acd74829a31d373825e31cfec03a58102044845d8997b9ed93bd1e5ea96e081d1015 -c29d8fc580e7ce4685181a7c43c82620a6eadff437952b73b655b0683283561f067583447debd62a16b7e55b8dd6d4d2f61a99165006d04576025129c027f2af7dd2d88d7f1faec453d96bb34ad50c4a1726406f2cd50cd45c6cb670cc97d6a0809b556cee10c08759b9b36344aa8627ffb9c67b159664678ebe6b131e124f75 -d64fc2f28b0bbbe44bd528770722849281433f156ca40cc2722d4bc18df19e48181cc7bb7265a68407c8048e95f0aa88706bba6d9b7bc9e78d54b4ac028a96b99813e514dfc032f436ee7d284ca3d4403ba94ca5a93707a20fbc72d0897d3fffbce43e252a7d3e53ab66993cb2e1fa02120c4897dbe444441a63e2f7bcde3a2d -ce6dc18edb75b0a352738d0292c22d924c813c1a9abddc00cdf4592879b566e30d9e98277f96410b2db488a96262e32fc1d104e776db8a10a931f98524fc7fda19b3867910614835fca01a02241ad34dd02719ff37e980df15c16ad99b1321ca7c375eee6569894fa9a07e9f4d7b0b49de1586d2b2243b2c50981d8d1e76ffc5 -c7a9dca1332f1c903d260c67444f62c9cf1d8b53e283199bb0c2eb84a72dc800557709e0d77cbb5ba76b01176406814073b633bd56af3bfc89b8d499480cef7e7355dc78cc58a8a9f11f8221ca79cbf32a25c75f393cf8dce9d45218b1280595f2f496539b6ba9e3972c08c7b9d0732fe9488754a6f4555cabc331dc634dc0b5 -d652d68072085772edc617f0114a69dfec0cf4bd7f7cd50160d9d8852e3672e013522075e2a0fea5f6c0418cb61941ef1ac6bfe3021d68f710a723fff5f423509f75a4b8094dc4f753c791120148ae4d0ae44bb09d09529cc6d29388a5e90cb5df5a3c23ca6f559c72255f8f1db04eb00fa36143a95b8e43bd71172d9363387d -d34134232eb029ceed44cce495cccd5bb84406f5dc027b2901cb3b57f201a619828bb4dd7331f393430a9e1a2c0ba039c4cd8895d5c1c554ec9b48ec5c1ba98d29fb53cbcea1a479afa55f1fc5f00c1d086441af41a833bef4758b7c65c9dd8c2b34cc1fc63c8d558f72d9736c858cf6e182fd4140036e9b590958f580787abd -d95d11a752f12c2d04e41d0bd2813dbea2272e49cd943c72993e38a88f32448105e1cb3816daae65d7486f69b6f7a6f28eef4a5cd5e4ad28b47246895f5b79ad4aa4a73b0328cbdd1999876ed8908d5192ba68bc0a446919081b64bb91b299c021cf2f9609503fa802d86545a831e39a8c4cc775362f73a3c6d1214ebf7c7bfd -e59903fd4b578592a5d6d706264846e17127732a16af4104235850e06e78f22d900d8d427d30b4d6c74dd4d1f90e0abf1ff0f17cc8cfcc9dbf910f90a0518364634fca337aab25faffabec1a7af9f4154e10434acdb0b5d1ee705c198d0f2bca3ae5b32b15b91883e87ece116d6b0bb1afa564d3846715a8b3eb0521ee3bea5d -e90a1f94595c3a7bd75b90b5b6cb021e32090affb36bc094470886dad266cca4c057e48480d92be364d02961b7c88992dd3010fa94f8189be92241beb96bc3a2b0b97e3b0a88060b0e2f17bf0458b64ba357f89a33c6e5c0f0b0905f9eaa1ea5e5d492e4c54c5c4fcbdcc41d546809acdc26e5bb46b53ed95e548ae261db0f15 -c0bf25c067104f867cc0f8e86553c2d46c9dec62a16c5472fc88261d0c557109575afd749dc3cf060b31fe5c25255db5c5b428b46d23c5972e0e3c1897b97876ce743da8ad0ea9ad00a10d0f6b211ef125cf861b17b9ca21bcfced9aef4392c9728cee93b61a02a6725b3fe92804742231a2589a93bb115299cbe571e8188485 -fce11de71e18c85d152046211cf5d57be81b26abf687d094816d5b1bc16e7f446f7f4bd6164db6c7d0f60ad9ee7fcef172517188f1221cff8231936541baad418aa310896ccb0e76986ac6975bf6b5884234e6bf8c719874f6ff1d7b98665396bea1a58d4e413768285d8d1db16dd496b051f3f9e8015ec280eefb911480cb85 -d71ea7196f642b90f8ea627a8f941655f6472d7fc02f4ec24c55cc79f95d661183121e7324628325bd52f33e2f1bc1a14310d7f49930462feee1ce1dcb787af70374a29a7152eca3bfef0138e11e85394335ef7f8b9ac51a0314fdc795791c9ca0b5958c381148b12af682ea6ff5f731d6b3b83cd0cdad9ca4f9d4829575d94d -d7fdca776293f33e09c416d2c1ba70f00f7b47dc1ca6a2c8ac6ccfc9f1fd1e88344f75316a99be099789591600ae779a4c78d4c12f4a0e97388fbd6ca63f437fe1def8f31671ec27f6f9bceec8405932c15da2fe3ffe66c6dc3bd0aeac146867790adc61bfab3da2a0d358594746debd018d2b7d58dbca16f4851269bc806cb5 -ce72cddb8418186abd586c8fa62dfaf121e804090937c323ddfeb139dfed9e570b26e2e28e69ca08ba5515556959b451092c83fa5648fa769122987313415e14bc664402854134518f131f58db527d163db3cd13062a9af658357801535ed5bdf24f97ff18cc824ec9af6dad9a2d3921faf7d84218d1f513ad262f64dd86cadd -d5066137aa3101b001a99b1ee411dc57a6c5ba33dee3279e85d2c62510306a69c924835e21e6541d5c2fa3f74ea4e908024bd299c5f8e6049720e1cacb935f8adab9b4a3e78f83555ea835574122c2cfc9b1c2d14d0e4e56e021e06614d5e76628982cec22995458e6482f7ced45f757716620d27a53935386ecec12b9bc73d5 -dd62d314161fb6c7fbd6942123a8e321835e19c5b3bd6f067dd713106c83a04903508862541e1687d6147954334f2315595e41d307cc17c47a85fb0016fd987c2b6273aef981780aabdb54e6f8eaf269f97af56b8190fa2ae67af1a3a60eb924f0e00e9f0e5345ee4ffa94d10a1058f5b364234e6838e2832c787b673be173cd -e2b1d31e084c148363d4a41c685f15ca460e1ccabfd25dc20b9c51844c17c281fe72c76d2b6d4a093108d5cc88f0d196d24baf65c90af95a905afa7794d9ba873c1fd79fda78b878ee970c8a7a3f434ca44cd35965415b35ebff7c635a5ac74a4500738c86f52db8a7f7c82c4544766bc726f4f2b2a4c02419430bba3cdaaecd -c227213c7f588e4bbcfd2dbf3ac650c6610f03e4c4313ddaf02791a75ae396a25c62089e11e47326e585ba8c5c8e6aa20ac1dc690f32d600c162ea086f5eccff3029d1bc2f590194b7980379680edcdc6f21505ee678057c36245c400277140541d12346f067bc77354fa2abe8dcc26a2df51f0e9b5d05f604e179529d2d226d -c90dde4f6f6f00220fbe1efa9accd0d33f47c2c7f25844d4a3d58964d1a01eb63cf695b4415864b11d25c69cc231cbe4c1b8e8c47bb49715fce7769b865db47c8242882c528765534521de678c800469937a2857ace52f3bfc74aeecdae1b82588c7a3ce44b656bc274ee80c0926985ef828e5d7083486b3df38359285cb8dfd -c3e5c636529c8c0c7a842c434708663d186b95f8cc1a69eb7d39c7e008cd1e192defd05ce9fac89e93e57e64b99ca4801e83e7fffb7f0d5a46505d4d5522ca84f00e05b2e895706ee703b63b897775f5950c8bc5d7e2557d617b55eba35ec36743a198b4cf239d95b9efe62f4c40a8b3930eeb82d07c186d1c3935d3a2229515 -c8b525c6c1d8ae599b7f7841cb55d4ea2af528a77ee21d840b45d644104eff3cf467ea7bf0f0e0bbdc5a81cc4606907712d1235fe3f33551ebd11f6dd54ec3a42d3b6569224d0579bf587cfdba19a2fdd8bc8e30229e0d11cd7536aac5dec9475fee801900f6462114c0b148bfb210c7a27f9b027f1886abe00674fce8ff761d -f59a9242b778b65b309b619dfd19a877bb25a168bf0c323c54b03e3635eb31d5345030dfa96130b157c10b8c8d78f4733c0610f4130e99279840966b0115b31066f6eab749fb930fb844b50265d36d04873a3ab0197893cc62b6703d61e397c8aa3660dd3cadff9e020621b8b90b441ac368f773f94d2d2d4d35afb9ec12a14d -c9d9ec80523510681280ca314ff905ea6256ca3ac6225e478705a662319ec8365c36282f1db47774d85f00cfb3d66aa68cb60a9af761924829e992f0e5058488bfae552fa0c8d847bb4546dd71502d63db7a2b713122455d47912ac37b89d071b272b99af36df64f66f803d3ef980784b0da7ecfa117f75ef52430896f15c3b5 -e979ad6a662fd41f6dbb5ee0d3a8f7a928ae0f0940dc3982ea5a1168a46f5910ccf0d5606193eafda19ae97c5aff2b903b0e3a89eb3c879ce0e13cdf43a2a177c8104d7fc121bb9406a826900da82ad4352f4899d04af3f57a225c86c20a175a96f941c2c5eab721db904330d6bceb8d6a7a913461e389158708c9b7b83d8ecd -ce2c29c73a1a121454c12d84784165325ab05dca980a0390a3cf0af78409cce3e67ab9df103543babc0e35149a0b8b9c677f9c71d37a59eb27811eeca31ff7d568430a434a1c03720541cb69a21947e378d14711f17efcab348fee297e53f169fd5ab195b4be24bcc8c68a9bc00b273aa10a01dad64117cb7615b5fd88d0df75 -c3ec5ee6e08a212829db60b82d68c90e4dce2c6c419dfd7402a1a4ead2c4d7d864d45e72a2b4f41a09a569e4863b2c78c60d071188d927f608f1b2c623aa23b63d8ecc23e253b3c995c85416dc4ee57ff0a63e2e8884f191feb8f16bbb578b5054182b3edd779a0163a873685b927b7d375495571fafb20f420f8ab95c0d0555 -f389ef5bdad020e5dd82a2e0f9dcd3b40fe30af45ac437a727047a934137920df2cde3dd6097bec3a2cf142955651661fbe04cabc3a19ce2d882d9e17a8c18046f598216e3b975f297819bbeab264676e4ca1acd202eed2eb7bea7812238b33988ad4c980dfb1eebc643b5a7b9312969f4adf746844e9d714b2180e6fb19a69d -cb8caf76e9203122c7f3cfccc7d2924ec29cd53ddc0709ee0902237d445c2cec1ca337b1e1ab7b6cb63cc7f5f11e50ae8ceeae9dfe11299c39390db51e8a4186e69a74d0775bdb38d1c2c5f8024ad1810e298285393293d3118edaac82a5d8914c5dff163610db4bc4c09486eaad877840c3ddd16c9098f107aa7614499ecb95 -ca106a4be4fb9b3c203254f44debc87417b64ab4c774f972f12cd1b3adb1c5c0c760e68cb145fbd02c7b682f451ce467f17a0f07b5394e7db5fe209d972e3fd2cb92b583b6446740fdf38e292d18b4818e824f645f86a20eabe722c0f693984b58be5e29a56a40ff2589ef5713b5ab2d7ac803b72936011dd436cd1db6e2d6ad -c69e4a726bdf444c038ae2f146b35ac11f03127abd71686cdf8da7219ec3cc89fcd1eb4a6c83bc6eca90373c8b998be6a05858e52a370b184b3d1a2f4a280f847eb5c252c351f52151e13a83dd7aaa2eceea9361071b13037cb9197d8f7c4055ce4955df497258815f59f2a436392a4c6f97166882189926575682fa328ac98d -f6a6bf9a76484194e7e94c0624ce91045be44e04c8c25bde647d421e6266694a4fcb384699cb98cab4d5e3498edba6c581e868258af1b628557561fb9c5e5e23cfc9effdf4f46a788587a1422a4817152b28d67c7888c9543673c2d8eb3a5a51ee01ff2021d7e9f9eaace73873bcd189f84704f2bd9ad5c38cae6e188a3e4ca5 -d4aeb7fa7499ce369691bf04ffeb312ee235060d0a7d96e2bf6398985cf0b55bed0b8b34a53346adb47826e71b7ba2490af72f9d92a33054e1ad8e203233e356f5de9874525de52e74960948dc6a2dc8c9d1671b463a167ac5c889d5cdc6fb6a087b9949f3a3a4c15e1828979e9bd566f502bf9d12e4735dd1b51ab9ef7dc97d -e1324d35af63b7c5475c19d4642a776c82b69d3dad74278afd80ae38969d6e010f0f78c7a17dbbc505afdb00f05c0371a8b100acbaf7b69b4cbd46cde9cb11ca43d36ecc1d109aac95a7d6abd11f088787d9d8ada4412fdc06c030339a10e1459939bced6b5b872dfbb08e33f0c427fb94e0245613f0b697f483674af9f46395 -e4e6640df3213f25799c6aa0c723c17cb67d707261f3ef74f95bdee8d2acc59af18233286136a9d86610421205424d27f21aaf838b7ee361176c0c89fea4e1b79ee48ea438944746d527b1adacdea3dfefe2dfc5de313876f211cd3f7e3543a5cfa7f07624e913f65c506af956011b854549b6b956c951a803eeaaf6f08e9bc5 -c3c8a60114d2f5d38e14c79b803d2d7af36e285daa5654da567e6feaabaf74d6165304d53bc465c0c72b3f9f7961a996e77e066f37eab45808ef5fc1bbb87cb252307b88eda73baa461b3ac1cc44c37af966ec17755fa66040bd340f2a77a8158c247638008673fd3cf4f98ed552ebdd52b61932b540db5ba90b939f2dd9a585 -e18fab58b61a8b6b28e6626cb74cbf9b1753e51ee3a8093b9283cefe7dd576f2043192fb59a472bb89454b2712ff6bbfd390dff0ae2ecddbdefb80aabe82500c6e4d35fb99b79c6f17adaaae7ef87443189916566d755e8f2f9726bc7f3b1d8253a98877bb5e20d2e8bffff9445cd8cc56af3425ae0901f98494678adfe82e45 -dee8564ce74a01b800b97ef020ae40870571f9d4a4488f9e11bd5ee1acb37310843f065d3b50a5e695104bd7f7fa7b5ece9c5a930c81bdea0c7a140e7e107b6a31597dac446b1a10a8030c9f2de9eb5552b796635e92ec9d98dbd311bb4d18e641d294fdb9dbe3816657cf9980b9fe4bcdd0c1015bcc2053dd1b267ee26b40e5 -e67803f44dfe83b81f73a9b99ef69b758f15a3d108f7eee2ab55e9222ddb611e65de2862bf867fafbf04af4e33e80c922296baf1039d4f76afe2537f988d17e16013cd22dc33e6f9ac8ba04f6f166c44666d572e2515db1de362dd2d45662f5c87b148faa1bef73aeb27fd75123faa6c0ba4aa27dac96c8c08207deec65d32b5 -cf02e0be2c3370c707986317d450090c72ae8e1d3b2f6601a0b2fd62eb7531bf9b883fca519362541d176388699f2ea0434920f11c08d418701bfd0fcac8cd6b23b123551d37d53333d361c5135761f4edf669939f5e9c932525314e623356c155570a6d253f78d6dc0ba1865d94383239921a3b2bedfde0181581dc5b822a7d -df15be4ca79a4659366701c3d33bb1b31a337733b1c5bf32944f501316101d9aa23b0c5426e90b9ce7abb5a489d24900e4004512e51ac7af4aef6a3a6845cc1d82bc4c905d1afede8a0d20f7f38bbd83e9d63eae6dd7d8d69c480661d802890fffc1dddc682fe03ed0241c130e8b2d00a6f8f5f2c99b27c852d6b652a2e8039d -c8c4b2c92bf417257ca6a493b1dfb3acf2d57e49f97a873ae34727d2977d4fc339d36017b08cfdfa4a6a544088ee3034d96eb9c050857eb914a2aebb5acfdf6632361e9604a52559a831db5013fca0eb9381b6c40e421064e45c534f7a0028a3333066491e7e1b35cf6aa82389e47306c7773b745221141744d723c85ea2cc75 -e2acbe5b77c2da5bf137081388a217e53e6212e847903fc2263f6c099a7ffabe54e8c200be0f8c35685088f32d6f4e7067d36913854c064773b4fd6dfd0aa7b56eae581a5c2ad01f25b155bbc88845c005fdcadda96dfc95b821e15889899d2c6a9c35bf5da5ad1c886dd62c25753853fb6c1453f558f40171c33d73ae410975 -f1e94067ccb4c0d8465a57da3e31f3d0a77070bb82f7253a2cc410b8b53b12df6fce41c457e3cf25a86fead441f3019b0220f9b62740dae8a20620843536b0643ded83f214ac93216c93e747b6a74762798038236778fb0e8fb2dfdc90002995a129ed27eaf8fbbee89bd0ddb60f56d30a5778078d4d61dd36ce12afec488bfd -e3e06839335402cc2a140f9b3da84df94187bfe716eb31e4523ae2cafeefffebf62af5e16a379c3184afba15da90895581eca9c4f87f4d671d72c384121a7999200c986b33cf89692d70d171eab1ae7bec2773f243339ece696183d76f6f7b4038e5bd5bb801f7c4c9feb25f3a492f5073efb161564193abe2be7f59f2e1950d -e6eead8428cce555091e3adf44d15d2e312fd5692cd4078930f4820d2cf47c5a040164967b629b0ba1b2d06e16935671f608e1b0d972d070b9006c0a8eb248094b9afbf778c89cfb1f80606ac5413e2e6597065eb0bb0869ee40fca0cabe995b4f6626e6b89eaaea90f5f48004233e845e291386f3d298b46dd5260f618f0f4d -f1985216060ba19e8e0b77afb6f04ec35a7c7cee04f9df6a306b4da8d76ca5c92cbcc7a728bb22ad5b24e6d1eb1f7305fb8a7b41b747747503d0198c38df69bad6c6aab06d55adc79537c6d8e606620b545864e3394dc5c0d1916346cc01988649d186c48dcd1937d21834eb194ed3ef03f2d114770632f4d37a14516cca2bed -f9c9f2bd2342e3c4dbc5894122166fa39625cf16ffcbc84a71ae8145fd6a66e1dcedeb7e6f264209f0c877393f21862d81d2c759546f0fdf8c41708d5362a4f8b6111a3a7f732af1d187ae1ad693117b0d5dabb08f64f9c256153b160d4a957433a7bd780e9956d7e175f15ecc79c03d3fb0698238426c07337202a32771ec4d -cb2d386ba2cde8f38438f2774b54f75a9be753407727da7eddb882beaa0fcb6225d1095a980ef842d06a3847fe772d745b2e615a9720f608fea86281a9e041c38628b4335ae93b446f19a495878d350f9664e3d4b80b153e67a7d1aaa73728477889de9cbb6de0bb7a9537d7327c49c5a99bea50c96c9d53eeeb576010979d0d -e1045e327e0b645b22b8703682d618317e0b96aaf79a8378e6e670c56c6c0075941a48d4301dbf66968588f76b064fcf34a323846b09ec18be65c744d4b3b86583991b8facf99a247fc84078c53a2a0889b573c247b354ddc50be0ed49291762334bb34f5cda0bcea7ce61087bbd967df9c2790f901e9c135847bdf766e3c0d5 -d17d7c04e0e73f0af70e8a681fe57336d20b1132167808e6799fcad00617671dfe513c63c38a1ac28b390a16649574cbe7090d09aea1e9cbb4542ee30532098c4e0f5243491def547f771a6da3d741aec52e6e346d8018ba95d2ed500f0ce37a723d3f99bd8d1f0abdb72af353569817a815f95054ed2bb94a30b96e2e83cc05 -f521ce6d6aa5622862e18019c1b08b71d313a12bbe15f27f6d68cb14e31dd1eae4f1b5b5c85655e685e1885edf7548bab4f9284804cca5a874ba1750a79765e6d74e6024239431045519a5a5a6f9326c5d2bf59711e52785d17cab0ac6c2bc8858fe335e2bd6e0a54a39fce1668c382a3d8f79a48d5bb0ce7bb448f0f46d265d -d27b0a46e492d31872b6d2670921afb3c11964a113bc425a2116008cda9bdee4f2e1f008a96942089755c1a90a80f62c18b3ddec2f22a38971b63f3d9e23af975a8c51357699f7b11598ea7b877e6f0901215d2e8df364ef1ab0106eb0706df83285bf3015f12ca98688c8d919aba4d630516b1211f8d6d8f71cd99d0c599cc5 -ef72eecba638aa1f75b33a9d91981f780b7f5e39371e020c8e468cf72069891f8bddce8eb86075dd459de98a0cd65af719afaee5553fc68b00f8dbf87e33a620bb767d8740b69f45406bc8c3992525c94b3feff1a7d3cd91be83d24d767ef4836d01c62c74ff946ab61c5e5d0964d63c5c42ea56411364d7fc4a4b3dfbc8e495 -dae2195ea4ffc79e7a0b70fbae8d74cf51cfaefa30d15c0e9a054276037a4504ad5efdb692ff97f0c456c3fc66f21f71563aed455a1555fed1d8f7fdfb14a126fd475e582e187e1a8875e25f7959111afe8f141b0bcf641367f672d024a286766d902d7b48de1e40f4943a07adc20866cf2034d32881ff1756ef2a7470886c45 -c393aa8773a783ff411304ad3000ab42d9dcf488f3c4d6098f49db82b339ac6942288861268dbc76afd12c5f9adf3f61ac685d5ddcd80c8a3b639fa59e6a11c425cb4f90b01070ecf9810e5468e8fb2131c807d72dc96528fe3379995c383c36efe88d7f1bf4706fc64f775c4fa9dbaa738ccad52004540d134b51f912436d35 -fe6c3ab23ca3b1624a56147831d8ce58edc77ae99d6db6f17f889bb19f8b87ec488ecc4d4370a26978a553b5769f5803bf3b14893ef6f779dcd4a2a0a6821ad61e63a4c8a41a58ad3c1c5c62e72f524cb63992cf6100b8e7e8a1f9666d932f4f29724a3645cd20727a615161a08af2689749bcc601f37912971778b7d738c62d -f87d31fbc3fe86c9f4e6f2d6e66044b0b3cb461ec9b00c52747b9b7cbd1bef105ab9cfca392e807db5ff40103aad29641f1d0408eb4df587c8c44ff78729db10fcd76f56a475b3f16bd28a7497a939ae2afb8ac23a1e89ac29836dd5bfef509f23796a4038c899bc0ae2428cc3fc34564f4a6841ae920a50f838000039751d8d -dcdeec99b18f7d837ff301714ac199acb2d8c3e73065562d6635f6644a72693bb098d56865fbcb921eaa8c417719c634b7606cc0628e740f051677c920fe386d546aacf0de236bacc0fe221275566ad92250387c10cffd555d554fedf9ad3f7c4b6cda017a7e0b8040505483cc64285305438da2d50442295e4d535a8f9be7e5 -e786b2c5dc7d1439be99339d198b15b98cfc3f718adcc65bef4fbb86be6dc7bae3dd12734960659f4ae9ad6a45c66e0eaa6efac0edf6c0ba72910e1910e9056031b3f6c58538c0b24d5c325d7c1d50a78479f7c7f3e9cef501171ccf45f455e71e91b6f49f4362d0fbf8d8855da8574d888fe26398160323a45668f8ae62e9e5 -d960b0d7131cc252542f29a686a2e1b9b61bc5ed2da6208a6a13b461b4cd6606505b4d5e640dea6e11afcfc5caaee218e78d2026a5b44bdbf3c8a77f789ea841f52dcf2fb86b0078bc643341856b1d2fe18441247e58d03065f96d10e85620a24adfaab437b5ce2044f900239d868abfd09ea56434986a2a3da0e34fa1f59f85 -e9f06ff9af989968099c7585ee539702a91b9966cc1c0f6fb7c7a20f32f37b12697f6afbf0b27e16187893bd40cc24f53aa4265c2195a0f08ddc17f755c4e3c76a79d1153e6a2d99bb9ced184b4f031e7dffff14ccea6b87a30dba589ea8f65970af537297e40c17a94a4aa4504f03efbdaf05b38e6015a1102235897b4bfcdd -d76a70ac8966f4c7f4c87b96879541d573b2806996fb6a8a2054d8b56fa5a19e318631afa4e83b18aeeba714eb1670d95dee8760b9ed0f5ff17b8bb75540b5011405ae8a2da96d87cfab2626983de17a890e424a25b41401b990127d0cc6b1bd786cb2786fbe8080eb18e98558894c3fe383c7bcfe897bf98dfe95521fc12e7d -f7bd785aafaf4f2bdafbf38235f1e4c730e9ab5dc4fa3cdc9b9ca90b06dd9bf8f382ed58c7b0e34cd51c2cfe7b59345aa10839f3345cdab897ab7f553673e0bbf69ef0577ffa2b758fd2a6decb7a24d9818227aade82801f62c453b95e3087d8992b435e50e01f83a4833967a8b75ce37a760fbb6cae3e99bf89130e1736755d -cf26ba352f678c227c25e5147ea8de4bfc4310d388530d9bd3d0dbe0e9254fea8483ae00f5f0ec81dec0e42f5d1bf948b8519ce593737e318925de8c00c0214247abfcdbbc77df57d750b3a9c160b39ad9260297f7fc67ea2043d190bf0765a4fab4c7e6edfc3f08a26311de00e47b879b338097574e4a377e2387ee9c525085 -c6064c4add843be7a9bcf2582ced8aeb459ba930241002cf0325da5a2d2e1b5921479e50b688b069fb82929469ffedfa5a1180f7a9a6168168a64ef917c909a7f4ede94357203f1113d0c6d2376a5e39d37482511a67ffb65832a4daaed93f86ee9739b42c62368eeec1434d6c42a1fe53c5068bbd3ff89549029410740cc23d -ed15402f355404533c4592b42d93de22ac89ea83acdd01bc6b742ce77761a4743fdf9a069965a7d19e86218f8976580be43e4a1d978e0722668b060f95c0365fd9c84f732ea445436040c8ded47a88ed05172d17b46e92d26ad56afc99d0ae216003413458b2718cc194e559c4f141e593996bd9888d57781b5aa33ff1b44e95 -e83a24b27cc273db2414f5adc3d70f5b9926dedf39b4118298c908a26fdc0817341485b2c847ee98ad34afd0a316d32c03c455474f73261bd3231e08c09de84c051d1efdcfac30ebe0da967755db47b13928966f6d0cf348e24f6831a30942c3b971e74fd33a1c6a0997a4db9eb486aff9da54af901149106b991566d025ed3d -c76da67e64ab8b60d859753dd47d501e96d45772eb72cfe226dfd6a52d026034f4ac2cd8f4113ca8cb31b830eec8037f94e62273653608152de1fb580f247e919aa25dd58540902ecb868f5e25ab6deac6caa4dcd48dc9f35cf1939f1f22369f98e50463fbe9e368dff83cf27847e2ae45433c747e848d995fd26d68c9fa541d -fcc228f8f74fcc29e4d70f6e437d258e34a9db8d1af38d951eca478a66e56a776423b54d636b7537f46e6b1ed1d8e19eb03c865dcdd1090db77c1da5a695569f4f0b85d554ab61c8f65d04627da559d43f5b44962d38bf3ee742b9bcfa2db3e9120223b31617a631b80b1bec2cd7d1837e452d6307c4c1c7340193075fb2b8f5 -e076473f86fbe36192153f0864ea831bf5d4dd8cde7ed5d7ac0dcedc4cd36e10edabaf12ac16e9978c12c60506de560c18e3cc85ef2f5563bcd434f7c16413470f9dadc62f92b5b01328bafd9d7a2e5e11db723a8002eabc1d116593ff975a3076c679e3b56734873d51ef99fff20a2f9bf4f06665e5e84852f7ccd830004785 -cf9e7ba49264fc3070173fce670ff6ff6f11935237a557b68fadce974bfdec70b65822bf865394873da79de16f4e506d244477ec4ccdd1851e2cd2713a0075835fa59acbbee79d2439e4d1656328f339be18605976317882fba6b83dd21fee67c38217132eb115801ef009558886804327c446ba577dc93a92ad71b2888b825d -e8ac898dec76b876eaca1dd3d5b73ecc8a0c06e04c15608b1cf9cd20917d3d72135dcb29e03c59dffce2c2e77d345c8232c32ed8f5ee58d08ce2396d4866b3b09611f9d7e71a3eccdf46e17d84c53edc861575242f6301802fd237359ee6961bc32ae74fe34cf64bc0513cf9635d4f046d229550674dea3dfb7e7dd7a5a4441d -dead27581a5bdfc0ae2111f2bbd3a2c6c0bb996dffa395b4b52b9c30cded05e6a363d314ee9ff024651dffa44aa3ff0beaeb736b1688d9d40fe3e0fef53d4ba6c78446306d6ab6d014af2381df992a526ed354aba7f3fc20e1edbca83012e40566e121801018ee1ef32ee9687ae896b9aa2f3ba935f199c5eeb7953a5eed518d -ff751130a3aa372c26cad01df7083187cf5f6b1604a98f63687846634c3a6676515b839e49454eb344eb894dd4d9b7ac4de7bd8b8de3aaa103b45124e2477e17c0a44bb32f4afeb2522391fce1ba6f89f5596ab338a8cfb1b64848d517b96b5daa4c164ca5275ad8adbef3fba0f0115303162690de9f75aeaef3cb2a831c98cd -dc93f8f672332db4d675cf638d5c3a9b9ab7e28c011802aa30ad61846ee175916a5a9daa13ce7db426209cb409fec83f26f9f4a653a1bfa1c3e4de7318bfd51c182177bcce23e120c601d67f21b948060fb521f1a9cf4a5ff5a260af17dfceca586674084a012c3156e3c59b346707d6511b7f4cb668fad7e517e247750b98e5 -c82bf0ea27c2be5b5b90850621a508016f821cec4da9dabc473fbcbf0cff53e3c13fa3ceea1c851f638ca622d30dcee8519b30e54bfe7f2021dfe08c56a03323453436007a1a0d5058661d0e83ae6e746e27a2db8bc0390eb94a45fb9b3b6ff21f0874805b748eece85a21675b1bf0f87393eb64fb480e776f209dcdc288218d -cb01ab004a455102d265024066c28efbf293b3b0b8c5b97a2adafa84c2f0ee25c567d46dcdc4efae7039917277646f2baaf507ff8bed41e88aedadec96a4cad46b77af2c7ad24bad0cee415ef7fe59c5459fce5334537265db060fa1fef9526d21d4dc4a932c3d27f018b988c51fcc54b3d45757aa1e782e43f46e6630ab7525 -c8fb98ad46a049845c83dccb2c7e31b8b16ea956b9b7f30422ff2f53da87733b60c801751ab394d86449a8270f0df4fd25193d886b8ec7c2f2a4649f2fc39640e8634155ecc8a1a191f2688c1f5adb42843c9d7c73f7379082ba202d30b8ef70a397a35d26e9b5e49d4e3cd87dd6b051a642efcbef58b9b5cd05f349fa724ea5 -e154fd4f5be7bfbeced17aa18baba53f19837f0c7964be61154aa49c6521c9f38d7619877850275b9573cea6e4114fbafd3db7ccf9bd2ee023821042a5e6d8b242f9f62a7bb601d1118573a628bdf8500cec45235d7fec639b5795af057c863f1838fa15eb25ede388c5f7ef53eb9143aac8aca8d19efa3dca4bda97feec5e1d -cdeb910095d2e9345ccc30254efc1fa238ce11958ed30d24617110b02c18136b832293835d0963910d43d8247b9a7b19c49fb479b1717f4ac7b55a2888144aa4fa7360f9847fdacafc98097e7f0b3468eaf0ae8966fb279f1def69640794a221123168a021f85d8d79ea5b1702c4123369d598a4801eaa973dee2741d915e6ad -f8438935ba59e7c95287e5c2ef5d2950e736f74e6fd622f034c28beb3184cd9c0f62cae993bd4c1fcce3ddd5dd0b8eefe9fde9165211685907b55f96833ec32b3398a4377786ffc5b3b1222345b488662802bf89ed7a5b55edc639b9f941292336c51874ca037d33cbe951cfdbbe876f5fc995075cc4ba44e3f6cbdfcc59deed -f37918b706b8ceba15db3e18cde5d888270e3e01c5d5d10b5606f74047587671ed3c5dd0cabaacc3091a82786dc9c17956eaa129196d8b007b4f1540c520fa8c75990c7b63603a56a3200a1ce9379fb536cc2216c87d850085145e230c959f1ded675adcd029fd57e32c762de466b9921470b357ad945d12871bd9a3f25ebcd5 -c5d4d9b311fcc1f9d2d2dbfedc09c347d5d793746335a7f8db899cb6cea019cc66bb50afda64b84c2cf10ea5b72669c598924b1c9735c7ba423bf07c06158372f514e687f5284979231805874905cba2bce044615ebafeb93ceb672b6527c20f48b2917b1593c1788506b75df278881fc77a7c0606093bf65c15156daa594d95 -e63759f9d2559b33c4620d6c598532593b957d232b873ea35125cf190a1fb78f3a959a100d4892ce47b87c84748e1a5b232cdeb3e404fd6cbf19069f2c8de134458854ed4e07d95131af6c441305ec7a70a96058a2882af2a342a626430725a2adb448b7bde4f4adc0bb275e33b44a97d2e9329194f1c815ff57428a1e2cfdbd -fb6dd7d761b3a07b56cee7abf128faabe4ffe20dea8169b2cf74d3dbffb159d3e085cafa59b779433e89eca22895833c491d2409b1403a4d6d437c405848627065dfb0a67ebda9458e474abc9aad869ffef2399abba08185eba0f7ed58822224a981e28b0e7314770357de626418235987b194e8fd6dcfdd03194be656fd60cd -c204ef8a6c39a3f23133957bce1fae1158b587cbbd73797bbbd6e37aa86d747d0c8793ca59b658e9095602aa882f34cdb9a9d290ceaafd9d2116a15f6cceec75b0a150cd215d2e9b993c5ed17fc829be4126afcc9d85851e5d366d18b47fe90edb38e72262dbcac4bb701128c8a2d942b0f110c41d352578c323c1cd7f8ca99d -efdaab310cd92e5a7dd0dd4f5d387921fe5e18b9358d1f8d4178e7522f2aa1936f9bdd5de36ed955530c65f059aff8d177da54b57281266f188309a037533d346788175022f8a4995692294dc2a09b7ae1e79394b8cd9c69033ef8d4d07506fd0dc14967649456b8afbcf480bbbf1c6bb7d2bb0809c88c0f8934fe89b572d9ad -e3f62e0b73cb17ec33426c5a4ba8f4292e03e677f5d1617d938e93e54304f7819a3921ce0df73423902947ea2b4dd162517380dd48ce63f30e8b7df9d7194e75564e72b6809056d6db1bfa62b3dca60f7a017291f8742477efc7eae8c9e7627843726fa4a9fe78dddba02d9814844c6e8c54febd3e2158971fd4779f725f68ed -c3c9197fd49de1a9aaf1ba03302a0849278a6bb8460afaf38952d542cf7afe6f8c1fc40b7240ded7a7ffcb5b23e4a5b1507ff7400db4d19fe433524474e21f9673c88c098f9d033c191809e20617dfd5f92cbcba5c8dcfd6652551945d1eda48f6dcddd16ffc05dbe4e3cdb163de9eac0726b7dd8ca388adbe54858471319325 -dc87423787fb3776d3a38c010062304d7fe6f8e4bc5fe8e66201d9bfd724b601c5184ac3267ddc8cddf3880542fb91ac077cfd2b7a07b49b90a550f8445c1c68c084a77321c0d03d005c0e666a9ef3709c1708e8d5f5f2d82f0ec81a2de2fec456b22ddc5243b2ab19f64a74bba5fa6c2a091258c5916c2c49d2ea7f0a5d084d -d0012d2f905082a4516b64dbadf6a52659fb6065fa31f6678c00941eaff3d1e2423a57d9450fb53dbc956536eb00844326cbba017727d3703cb3d83d7e30510a25a0e3a030e4083c747a9a33cd8d8ad28d2b249ead1286cf1de4015c6022248801fcac6320d2b3aa398b7c4ece75a6a9d9fc19d460c657b9d9aad6bf7501a5d5 -cfa3a9a0b42aee7cbf76b882f2ef49bbb53f2eca837a6660714545c6a5988a819a82b3ff72f96c828f385b34fad06e52fbfc3dcc6e43ee9dafbefbff3f5111fbaf795e0675047a21a64c717b725d027b1df53e680d49e2a0fa68975b8d616790535e6da217b58ee3135043b13f96d9d9f14ceba25c80e698a8b6e79247aefa45 -deccd1e4355492e13408d4a9ef52ede6f736c3bb92c85bf76f264a053308a228a547fcc55b2b18c52615030aa71bc0118f259e8638656f0f912352d44ea4964ee652ad4a277d02a96cc6128655cd3caa276eb2622de7a6dac84bda2300ba6ed68d5883db8f45d88feaf67fd7af568c09dad637d46cca9dd7164913bc21dead4d -f05f8e610335c370350f81e7d3b8681bda7c0e51293550553b028ae6937115061873b575b342c8e0eb16e4a94a7263d405fee689dab1e304651abbf9dcaad9cdc3e0b78a78d8d08ac7bb3bdd54bce8609b4a741d10540e88402f74fd20a931b098f83e08efbf73ea2cd91adf599a06e3181f369cae318a388bad70258959e5fd -f40bd808d8983b526dd32870db7481b0026292b56b3fb937f2ca04a20063470f46f6903dc5c323dde933fc6df412d04d326dd3f2c3c63cabf2796b3a414d953f2e164fb4d7120cfb555ab5499f097ece48afe978a71c8a43deaecd680f181087b380da2186afe81e60470daba27cdda8f72c1e2013743ebb8c7c7836ba0d9a8d -e0a5aa6ff2ed1f0a13e9f226b1d3e1daa1dff2a82fbc24c57f4364ffb58fa6dfc3c146aa2a0c86fbddcfa6255398f4d5309e5116b1e05e044ad396c780312b36c56065218bad573ad88fe687502ff51a6490c10b3afc0db2faed8d282fd91f6245ef83361aee9485da9d7cfc4ef91c9d98d6ae5cf383d8513621290f3dc4d42d -ddecac7bf804349baad7591ee4130b79bc255a87ce3b3af695c7ead8676ddf607832ea50bf24952f57c1e19ace029361d94e6891aed1dc095d784e4147422676e52967436cc963af0914f335a7282cd7b73188996c01113d78ff465b609608faf2d1356ec58044f8b9261cd09cb3b8449805ff34abdd257479dfb7e699b9d485 -ed3e5e09d1a52ce643f484d223b312b47511c0b5fda60bf8081b69a6470f94713661b098f744fd144c1807d7bcb30117813d4d6f506d232c216cd0cf81edb59180ba2bf74ddec8f7fc1bc720059253b36ddb4758fd39986a097cd636c80acd11529b24e9dec6d803e87cf990cd6add1c6d5f16cffd74896811d05d324bff511d -f70b3ad2f71f7561b3afb043fd85a7f703416a0571aaeba91b098d198af0d19675245b53c0b9839b8a3fd4ef37b95d2361809cf72f0d057654ce018c9e9c9222419e636ad7b7b28ab9d0deeecc369869be70a511c15fd40e8e9c35858e04db42e6d08614d2e98754d85206ecce8121305400c3a7eb1be090406449bb100efbb5 -c3cf52f73bb03e184af1ee941c56e4e3e4280b78e2d7b3e9beef82f896fa241d58b5a260b8289708c88ffad26a3e907da16bdea925de7c61de15b0330f717b05693423ed0979130ddc3771d424839262f4135e270b396a899e40ca2f799a7ffee07e65ed428b4a5069987e010754b3455456c28183c46ec789095938d17be055 -c7e0b0844d2d1a7a638dd86b30ad2bd20caad56264c4ebd10566d876097c09785110d4238146ee0a1a219c9247a61b4e39fd342546946af09b9820bcebef102efd8be1b51902acaaa5509869b9ebc5510aa656261313b7ec6facc4eacadef66e758d976ebd613a1b42f0ee54a1fce38fd0096887427f61e007f9386f576b9dcd -d4149cbd1f05bec65413f244f06bcd0ee3405e734d57cd023569e58f8da93fda5dd2cd38c2ad1ce0ba131e9fe0d5c3e898699493276431ace3adeef0d8d74c0197144540adca344003f77a92dbd168e0320adfde66701df5c71bf439413a61693ff137447fde0cdba216e33c78b73e1c6ed6fc813b541041728688edf87dfe95 -dedd0cbbba3cf035e2aaf743b0328e04709b0a27089553039a37c46fc62664f4c3d68115e470517aa546cf3126a2771812ce0c0c2631f435f25966ca88e37eb49faeb9d345618de4403aaf0f7af33c5044e806f423b0eb9180f6ec797dd4374a08d3ef625377787203c5267c8f9014d32b575d124047da743681ad677303334d -fc1208a5ba359665264d35fc6bdc4b23a187ab3fd587a2cab5a3911b708c68dddd57cb150ae32cb3262393e24df810c38329a679bb452ab0eb7a70f7e679285f75b83dcf470390537e02cc0c83cdc6b45c0773589b43b144797ddb6336a8103365d09dbb1b5edc2e5d568079234cf7bec794e952b8f29944ad66e049d2c632f5 -dddfbe3908d0c1ab4ba1c000a2a154671f440d059da2d700a6eb8a46f43c8dd870f352b74e7c96aa4d12e7c7ad5793d3adfbaf242d1b48b32f7f51743f6222ad8f7b7dc663b7e43dbc4a07ad3be5694744e9971d156afaf090053fc24a26df63a664728c0c844b95fd2b46afb22f4d8c6e97b63bb0974bffc3bd146ebddd1fd5 -e0efae147c20338a15d2fb5a5196b402cb9536cdefadde4cc9427f5308a7693768461575c1bceab20e9e28af8f5ba5fd2c981065650f4adf4de6a460c29c395130007d623ca2409a9badd4e3bc00a1188fe3a19005eae44cd36c201126ce72e229b277b220959b76ca71005bb246bab998937818c238e8dd778b0058c28a7af5 -eeda184c6f8397794c654db95158c29a0957b5d273d1d44432e2d212e358592226a00b284670c7182cd64899398bb9f19e4b987ba7ab08fa09d8fb41504bfaca985f1da13792f5b44066c36d0036aa4d48b35ebb6ea6cc173928ab9cfeaf22a37b540b39f7cadbd66e91fccfeb084d2009e3eb3e57885cfd00ffc0ffcc8b2695 -d85227d4f2889dd7f1e39c15060490dd7bc2ccd84f4f22179c74f9240670b68a3a0a2ca2bcaf3ab7512597db68d794f20313ab1966704897b32fd993cc8a656467c66dfb00d50991c01ca979cc35ab7aa0ca463b31829a852f51ece4076fb8fab7d395445897004d3f4d6fe07cb4f9fa7d6bfda3bef6c1d0c4169339da897575 -fa6393cb5800304597bcf745fca14d20d93de2c1f99f3909511dd8b9ba76072e55aca206b562721095499a302f2c77f7ed31dfd4b5011156ffa6e9f96b45bfa1aa698a863d342561b2aace1414171e8280d01e902eea9b2c476465628168592550ba5204609a5b7026d86e85b660739beb085c29f7d9114df91bbd25d59a5175 -e2b832d391a032e7fad9bfd592bd8dd27676e2d64a7f237b75c3d33e6a58adb73cc536681969d88e768ea287064d87de15f93dfafbe1cf0fbf80403793b739ce6aba95b73312b419e31613c2cdbafa65f34393b14ca52ef3ad565e5ab28e4b12bc38199250162992cd29ee558f2fc41f448ffdff6d34e3e259a413b22b7dc405 -f9b8c2242b699145f93f38e0d537eea01e147321aa2780c0017dcf4db6d2b6157964c62c5ee1f16630e3c0c5dfbd2d79fc68153875f2d5231f64537876d7a2d353cd70802c227655d7afd42dd94ccd79dd123f86de8a524c96daacf0365d4bfcb3b255e4598fc119938b151fc7ebd4b6fe6188298ab65853acaedc18f1f580d5 -ceaf59a8150e25e680974300c03087e734c24de34a838035f6af22283da5bcd9c8c76f20a049d26c85efe92928ed12d2c8533d139a867b380697afde7376c8f78593e5b264b224777d525d4d0a62b39d4fee7c4c57d1b133bf181f7c5b3805b727ba0630cf28d48d50e55a05c6735bdd9e90e4b98767aacd8cca543d92239cdd -ff090e80f5837f43f9f393a2cbbb87657185cd70b0b7c7ad681480aa48e8f5d69773316c3d6a9d9af1c8a3ce9aed950484a5a77849076650d573de967a3e9eeff5f70c3230014e39b1b8ac200b8618c201d83893185c07e75befc0ab6791cec4f0523382b1047bd40296642135d9498715f516693c624c0ddfe0bc67506a59fd -ee12ade07eb483a078532f5940b71a9c71b2310d2d49b56df3b7d2394f75d1495be2ccac175a52b9228440dcdfae49759e38b5af2de3563230cb19c06acd0570fa3635548770ded37e0b0f42293e978d1ee0b26b8c105c78e3ae12de17f389eee748aa8acf91814043342df26391c9d9e90dd117198e65ecf9c1d1f5216dc9b5 -f33b2b58ee5e248e076301e4d4b77ab9c9d702924f95f13b486e272da16fc9f57fba60091c79a83169fc8f08082875e12acfde59d10c8ce9944bbe8e8876b31645e074d501c146c651fba3ace691ebc0eb18c57fe7abb0b1efa3b5a497ee7899ef95aadd867f9a988cc28d9d01a163ee0dce6782ae0a45409b6a104da6805865 -c15736b1ca11e133c090d5a065b53cd82e2979f44cb93bba041735f4fd339955f1e9f2a753f7100c8aa7d0df40b908a74a4419999c0f4736021aa171c3bdb5974aea4ba1db3ede0b9ec3ee0eee5789dc24a6ae4bda8c5559b148648b55e3a6e2412970d9c2b0fe767fad196b130fc88ef383f5511000af8b3f74c2cacf165b1d -f16569ecf0eaba1f622c8caf1632b24735afd2684f3a7ac86d8ec679c6b7fe9212ef216d37c210d3ca5849c167ce063d006551d85e2d40fcc12265a14467d8d36a67a9972b7b72ff814f90bdb473f0c8618a22023e80e66d6e0df8e466ea995fef20d4127fc3d690e803e4ff62ac8f88f7b384a7a219fa8b116269152c2f8d25 -e70c3cb7b95c703d9f9e4e5b9dd6260f3a4cd3deecb2b7632652a013158fbf0f5e4b76287410cb20b627737fbf7fa92f85081a13a00a3fc59daca503576d8b449b600f6d9c57dbb7c674309bb1c4af7fcddd90085b68713ec20c766c442a0ef136731101bcc6b1b9633ca344a590ec7b1ca611c6b39c161a4b8b3016ee7c615d -e94d5b4afc86cef446b4a4b0004e08f5b9b94923f907fb015e4959406d03a8acc13a51d825b3930d5166ae0054622aff440eb6f2550d51e7ddcc88dff5dc3a8f8120cf6c4a2f3e01902bd8d86c28df484e5b776d31d149a47a5cc842220a608eb0ffa175eee3eb3280ef12c5b2a05025537abe234717f6e2aa849e675fd4aab5 -f8d4915ed06d22f36675aa84359e1a877b369a6e556371b59690ced0f4d592860a78c49c6bdc8e7ea1a1bd1109dd8878d53bec463b3ea10801181ddd6257daf65aec29f188a706f0039003f436a2086922c7c1de0f251d6749855b0348df64308e0a0ca1fd0b7723dd4f35956662fe0aafd3d420ab19c5487756eedf86cf84ad -f35dc4c3be8a22c7466e1d8e9b44adf3e91601eede366fb9658446491715ea34524d76d8660ddf95f6c512b34d52c3cc4e6bed657cb6e40347d9cc46dc5404cc2e54dd8a370041ff1651e20a8084e45b7b73334ae12c19b5885fc8c626e9937dda3c673365f1c3fd785738c20c5723eb16e604f2a94c4ef966f577262c9e5575 -f265c490a6cd394199083e842612145ae5576ab26719701f92d9e084075d66f4f8eac3a6375abfdfe3197a79d45d30e1a6b05b2f09c5d884d495b1deeaaf3b5fae36541290093078308f0e003b9b271de921051bd13216bc16c996c1d73b3563a4a1e4c71bfb1ec962b10efddbf17c69b77621390a9922d63952cdd4b203a2b5 -f5727c0c1826e112487441c855f1225f8096dd90d13f152a49a737445d03c78115f963f88446f2c7a3335a371ad886150694cc476a0ae0ffc5adcc6368190813938f0744baf6e4def9a211afbcb3cd176166f3ffb23a48a793aaffa08384979d4482435d3126a5ede1665beae8426e0d0c12ad3c0077dbabca8d55ee87b8c5c5 -d793b9f288bd065b38d4e80160a7680af407bea4c05b90f40eaa8736a6a9bf41b2206f663b24205115c953f68cf2be1a2bc7073e17d8ebbf6897c0caa9480192c014f15a9ccf024caa11ef56fc35ca06870d8b86c41baa2fdf6ca00475dc3091d50fa452021e66db6cd58e8002c37b7b43975f23373ec4840ddf8c5afe3882bd -ef2744764125c14bd0109d542b600ff2c445c3496a21409b7ecb9dc0aee0667b564ed41d819537fdbdcd4781121e20c151cdb342facfb9ceb1fa39542b953d5db58ccd7bd5ad36e0252dede437fbe819312c6ebb9745bb0ffdd84f99b34ef0d323b89f12abcbc2e90649ca09372e226ee7009d2600109967ca0b55315062aa9d -cf3cba2e0eec4502ab476834d2ed47764c44d45c750ac23115f49c52ae41ca82f36930c92e424b8daedccbe1cd905068e43ff1dae15093217de2e42eaee6f113ede1e967677bf41b8de614329b9853d7725da58134bcbe055a73827bae503b15f7e1487e453b9252c34006e20127fbfbfe2a4c3d74ce558bfc1734e4728edb7d -c9f921d0852f020ba370b4f2d58dac49176eda353b7db9dcecfd73c1465d8c7a1f4dbede864d6fe320d8e5a2386cbda7ee51d9a0efa099b99b1128cc0ce959a1938fbb85ac4c0306068ccbaea4bac0f7ffb2adecf215237e23e7397b949bfa852c38ef97d40071780b379ef1747ef0be6ac7951f1499ae383c43b86cd34658dd -e49e960ab120ed0d6f3c980febfb5cedc0076a4f3ae7f3b5e2cf9f9ca783a390fd77b674d6c73a9ded0fc3f6dbb1bc91242780ba1f4edcd8098f207aec2ff3bacc6694b6bcb94efef3df81a99c4db1d89a7d3981671d0f2f62a4b1900c0bca3aa690171d04a927183d381e6c67fcd7147660dd43a554aeeeb737f3a5cbf1d635 -f2f9ec42a76b676a5951bf735c3398d8bfde2ef02cf24200b6270745316de9fd949c489fe43f1b4b6212903931e29bfaaf77fc0ec9b0dfc7177dc23fcca35f2a0cdaf82d8fe53c792854322f98c538b968efd86d805ba173e23dac68c2cd0e56796959a5ce5bcd195f89a45ab5e371b0d76b92b348c5e461fab00570740a2355 -fb2cc865e608517979f6f4ee62be241fa5a43f326ceac1cd90e6389bf8046a03bf5bece2b7d3772dc0babcbfeed93c86e5f712350bf429410509a680e4ae335a0893463c423e84cd4ec649bccb376d84b67699f84c8a7471ee4ebf7b5341495be4aade3f16181e21ea1624aa8fa48f266e3f358c5527e89cc2973d9d02b08d85 -eb853c389114d97737af83290fbfa382ac883d68dc89c47e38b5b252a23a61a29a5709aa98333c9f0868f72a3ea5999f4d7a853dd8f3ed18e1acbc0215c97ea23e2154343338d3451d4c5f656eec491f9c2f2c02d69d760be048ab96937bc9a6bd60709066bada1dd197c0c028d87367e0c02fc4a8f19468734a96f3a94eac0d -c70e66e78b8c832a330525acf00fb556c3fb9902e879952ba4f5ef4238248b61d9bd5a15f9346dc23b3cf6b961ffcffd853fc2ae240d50b53b4bcfd7f9c6cfcebbf84714dec1d15d3904b8eb506a8a7f5d5d9313d195ed2655474e1e54d1ae6311721475de884b5118accd509d9f734ffb051f9eed141c22a16a68c96a9fb24d -e9ea13afcfa9ec4b657cade8c373d20c2c13b4e76ac74d00aab43922bce4fd990127ef8e6d65fd099cc55cfc42bd19b9ade8fa71eab087b3231da53ea39ff01b2e8114a74f108757abdc22cb06fcb60a159dfd15ff52d1234f8bde2f8849a78ae24a1091793c69b1ae9807e065c70692cf7278ce739787daef86864762f7bc1d -c886f6a02b642d27c8606a4d933e9ffc1af53449324d5da647a427dfe244ae2b2b2cfadaab181298b07dc90c1fe6a900f1aa078edd86fcfb3b9ca8a6ac2d18248c25afaa1ca9bb3d391b15d277a2733f88df7eaad52d50449f085a1f0ea81948a38a7798193a52619428ad1cec3c7426d922f0dd8dd38234a82346d59e7a4c75 -f648344d2a961d9585105006b9db58df1a1c0bc7bcf2a7d46a5147a92a333ce3de0e8d2faf815738dedff3d6773ffa6134635601f9f4e491a184577b224f377c8580eeb35cbf8ecd1f069d825af966fd84cff6f2332e0fcf3c3f605d3b6fb6cae295c2f55c10d46328f8f8bd29d6489bce95ae1455771b0cc1c807bd74c1bd15 -c79a37d4b999e7348b78d0fa08b7a7dd53ac0b4beaf0c3ac6b001cbef235b42385075e0c81afb247df1d0b733894caa9dab15083c2fecf9d93706d1e060c143a5e1d2c865ea9f55acf25998ac3965dfa5b1ac476a9a6d559866c7e6b31cf78289a276bfae51a0479f899d25b9e08631f17719a5505f418a381def0a772b12c7d -d88b9c146f4e0199fb750c6666498bc1166178fc39169ebb5326f517181830778015833a4d98de263316f84c6af44fe81c6d12369e9f77ffc56f9d5e64f612bdb96e7440f84bc7f473a5f31684a1b32ab72595b58dbedac75f6d1808977ce2428f8a2ea87e3a50aa20748b0fdb93af66ee8489b00de02a62eeb1283154c8040d -e615ba364ffafd0b9d68d3a9de8600f09d08ef321235bbbf4a96aa37f64062b87e8959dbc99a9cc3a43b2829daa490a156e5a347f380b2cc88c2fb01847fb15982903f64c5eb91bc2c632500cc55534469709234c3f75a6a483b122c98f2ef0b43835d68b96284d81161f9dd7ea5f3317da0b8d6d945e8ca1ee2c36fc53b9125 -dd10b88f1b2bffabd48f5372f2087f5042668ca3035dd58325855d8030d3c2889de3d01c4c29309b4af3ee4478de119663358c4cd43bfde822ca3d43d85eb6a9df6702eba7b55321745f8364cf6a6f025bc7cd0efd724f8bc57858035318cba6f0752a04e784ea9b87bbe4c7b6989e66dc214b2038eda8c74866131cccb81955 -d1b0fab56306f78133d466ee8ef5f25e03743ce6f9f0cb3be4daba3b6d38d9d92f3eb55cc4e5f0efbe568da82df2d4a7e2488709ea08e71ad8d6c223d19292d283f77b7d226717363d4472e57c067790c8fb7beaeba402585796df83e7918f88a58698fbc428a2cbac30f09e647b2a36332d006bf1f3cad6e3a3b31bd88a270d -ffea786a2f25d52829f186a0f33580fbc345298a69401f144fddb4706962a2d17281ffd9ece1088b4a0ef43f186a6061785abbf876e79add9354da10ece0764c68a15c60afc504996564a7bff20623197d2e7e92e94d2b1716e15b5fba48f42afa481535f5c861001f7ef481434c7a3f144e5839313c3730f5c8dfd8413abc25 -c423dddf756797d8d1f4c3d65a1870332e1e0f38393ca7d1a1682b68570473ecb473195464fc3d5088e64e04196e83ad79ac888ff490f7ea240d2e56295adf29d069856fd7635069c9964941d2bdc3a171a9e56a67f1722ff9b3dd6493de3aa153db2a8abb97d67f7b8952c4224aa4b2be97616d53b3eee164128caf710ba65d -c9674f220b3a2c58df851f2603bfe4c908e2945bdf89df61d2ba9094e4cce5591c943cf2ab2a40ee664723961a0f353c0bdc5b85088e45d12a7d28336557eaa8224b843882b0dbcc3bdbd766fc2becf05348f2bfc85c4cd472a7bc264bd91ddbeafc8df06e53823d06ef34565439b13d76678ce32684f99ebf039b1aa422af1d -e78177a16356284b786a93ce78a6765e11053d69177d7aacdc500a5eef65cd61a77fc39b07e164684361a378bcd99862ed041a28e9f8ac7da2331907bac701652ac3d1a618d76f6d68781c82df15bb465205c6f4dfb1d7e42f1c2997ea578a37e229a6b8b8318a758ff684d58257ad18e955bcd99872bb3df226674858b68435 -c42eac8e41f303ad0083c1a790c6c79d0aaffc394020cb344fe105a9cc4190170b0fb5fbd81c77edabc17fc7c261a5561f34edcda4688369ec781ef4d486c99af5debded2faf3fa8e96d33999da49bab75e89fadd3cbb8ffbc2fb0f8481370080c35dd6aa0e88aac0d8955c5395b6655cb8bd34417f0686b03dfb332b7b39f95 -fcac3e16eef5fc593642ce3bc0f7dcfa5d3203afdf4d914725d22449eff9c53a56ec94c030cb793c870b78787baec6f8ba18c6e0ab83cc082db8f1d80a5ef4f19f4f775d0581b2c50928aa9bb552c7fbcfc26ca785df3580e53c649690cbbef9d3e9b168ba18ed4ae9144813c09c9212df7a25971e0cf39d16d0ba3c31bea345 -fe925c06ec7371c2e002573af3bc6bdd0db363dfce1fd3e1ab46a53e9a85aca5c41a00a91294bc02b8f672bb001c81f29a04d560dcc1c83a7e379be2e6863a97bf82dbaf58794885d0a5a08344d313a5966a667a7c9149147b90e02e043e8474d8097940d6208da26f7ba17dbb94ed8ea730610a27a6d19db0e852f25d3788d5 -c1552629fa38301034c6cf7b05e27566ba9f370474bd4efeff1448d83d288144dc5a088de234b311c8f9182c4496ebcdc279e299a654a4fbd5ce9d212f4af82a6f4cef9bc22b4e2f05beb2820843d69b1e245da30f501aea1f9c2f498240ca5895939c97bd50593b019e1b05a0d1d5b3acdce7848aa111626851878d2dd3d0cd -e74a8165276844b8154a45f81e0dc7dcfa55d19fe3af14a87ef0c39ae2f952ceb9370a1ccafb78ecaf7278b4470dfa26cea6e901ec0159f3a3d68ab0022c8c2c118511dc681e00fbe2a03cf9431e6ceec99f76799053f1cafac04e94895ecbb46e760d058ec20bd9823ef56d4f47bc67c4fa449c3b795a37f0997e34932c359d -c8326eb60037bf4345b9da19d4a4b0aaa618fce1b1b636d983ec5ca5e7ef9a48295d6fd5d2805d38e311b974f69a5dcca40db2db8dfff01c563bdcf623ce76a3c304dcb8e21df3a5ebd78abdb4883482ef0e99b3ddf998812075be2bbb73e53bc69f93c0c925ef9574c42e660d94375ab0451557934b5d93e9ab5c0160a57b9d -e325d4d545d0c461d1e6cb5c5c88b2fe5a6498a5f4f33c3ebc4251f700840fc0ce8e6b2c5aa4ebfe0d47aa64704656425bdba03ab530ad347e3868af9d32e743c085e48550e64a8846eb6b3e6b57e23c641105153807a22c7b929461c47b98b9980965529fc562c0c40389545d9c93520839165dc9f5df9519812ad49f344c7d -ef6fa5cdd389e45b4a5d2773bcf6c52799445e1a00b80e0af49bf59ff9dcc0b719973775ea3309190f9ed31d59c1e04cc2fc46b5807d51bc4b72e86845de6b39c85c809db14229905bc93c986047f127e7d2ae02184b34b7af72ff1bad7fd0ae398e631e095dfc480592517459b551829f814e989caf154ca40e57084b0b19a5 -f554cd79a676ea46712f4e3d592ad62c12f6f5699ecf30f65046de91c2e47eacdfba5ea7d691802a9a57111070daeefafd93a3efbf7a483f58fbe8bb3e38a20de9c438f227710407c9ea34d6cf304ba18e94f8cd18112bfca6bf7256c02c53446a67a66b5d8ef28f02a52d90304db070aaed34d746906e75aed077ed397f5ea5 -cb4b1fd5fd6ea096c48409dcffe3103a32309bb2ca283475ddfebdfc6d3f21d1a0aaf28c63af15fb94217210d76078e43495bfbdc8ac4a0ca483a4a84fce13c3f24ed69d1225225fa3a39df9327dac09030bdb3191354307db701183acabe5b9f4049a98084711d65b76657bf957ab0e1d51d18debeb386a4a4692ee4b10894d -d729e6b7386227bb2cbda5260a2d6d3c26127d5afb20f93086e44d3a2b180fec7ec80d0e6941b1e32d4a65441504557af88198fed0f8713c7ca89f095e1f3ec17174c6e138367f247ddce75ccb9cff48fb13a62f5feea30dc6dab7d12ed70a5779e4b890200c28171b83ac8a348f4e15027e34a89dddd727846edc880fe8a6bd -d74900ff226b5a70acc71f89a6b928ef282d39e17ca9cd334c4262c44837259ac948b9487ce4be7336b9829b9f48382baec51e5456be045920ed2d32b28b744716617e83003843611e42ae9183cfe86c0b51e514200504dde737f86e70c006b996d2d10ca9c33f733dc29497633364674de14e2256fe2b4658755a48226ee91d -cfeb9020e28f7ac0276b098df6fdd9322178b14087b45b09f0894fe673d6f13b51937a0fb6f4f68ad54bbee4831218ba5923d60ca33ea79c5b4304e773fb91d2026b00a773aca6b9d05de79140afdc7f2f4a160665f9e65398967f2cedc78edbcf8f1c1b9b0a6eb2d9eb43b52e58cb7ab716ec235e78106843cdc5e21b37679d -e280bbcced0e16442aecdb68961f53ef97afdfc030a2606d54e2b5610d3ad6f44165cc2c9500a49b539565f24bbecec5b6bbfc8185c815b00ce24bbe6f61032d30d611ed5b78f8adc5c2c45f82deea75aab6c64514e0cb3602a2b612beff2c102c888df5764e1a7df70794472f86a114ad17107a259535f07d27cf18c9434a75 -f719d169442d84d3858146d5690a18c28e1783be909379827ef36bbbeb72cbd71cd66568f2a015c3b4bdfdd2940fd751af4fc370dc2df02d2e836c9e6c27ddf866b646bc05046aa4a3ec49281d9f03a56897b625d9d884ac02e87bab4cb8e9d875f41895a1dbbd77d77c18e67f55961888aa672edff49c0ba6750d0c97c659c5 -c5188adf4708b4c4e8b5da09939f8241abfbb4735ce569ea05fbb948d34ed13408a68032adc0cc381858a100c202975c05f64d5f240364fc699b4b0d7170dd6b6722f46ca9f464da1eb915176cb62ae58ede202dec980925d9a4c72d55d4a1a617c6b3cef3500ea5695276f3c64610703544fbf32b9cff064b12f959473b5d95 -f848376b6da6b8c4a5a6cd5c091f87aa6861d5f074c4656f1d436fe455e222c778f2f9de22e40cf831e9f2978177ee80e29291ffb6728c7c2317b55e91d9a5ba92e2097a9a18fa975b51feb8c9e720faf8b1595f0c6ec30432660744178ced85ee4caab23727e83f094ece52a12ff9bb473e7c1767ca9d4e5bef3b2774be0895 -de46df8ca7a7d1bdeffd0154a914705de0689253f377ba9d71d0fbb4ef39f37fa76585e83f3f0efe5dbd96d916bc6ce65b5f9e9854740e60e06cbff56b74b00d5c1381c45002372995dd149a0c6e17904b356a6b4991dad55880e146b2fe6d2f5a7923b3ff93d1efd5d832f0bfb3f99d5aaccd7a33159ac6cccfe8d2646033f5 -c05cfce36415e5e276a06631d8bd157702acfed8578334c7a8834404723300d6eff52261007b514cd9d8af7eb18458149a71727b5e6834f019910b098a56be457fef0a1242dfea95d6d9185067e7b1bfce3d398373225669aaf922a8c7f556549f050a0e32ec7d4dd8b60aa9f5ac5136e07e87d33d10b41c51344e7c310ff445 -de846c4c59e11179be5e1532e39df29bf5418a0482318bd8a2e86b85f9f550578ca39d42f4fecb8d449346946d0ef2ea58976a392d5597fa171f2cb0b89339ca30a711c02625232f71caae3e51fc42354307508263028f3008b579180acdb4be0f8871ae4beaacb30776a1889117239af7a523d35477a0a97f1ad09462e9349d -df12c209beed0ea2f3642937597f2552dad5e523e29d3ceefa2a6497562ae2d165fa88a412de4a3b9c60c066c57647dba4b62daaecc6472e8a5494a40cd795008c917af115502cf37bcc20869dcc291de45bb0bf3afd9868949e3419c7f573e88bc04ec813c0efb58b7e8a5993de4ce67a8b75efe0ffb0b019e52e3cae42a27d -cc50771c1648fee05dd7f2b11aeca10f9c98fa92fa549e7d58c9addbde156a9da1479fb99802524f074c666e1c5073896613a3887fb9596e963564f423179d93b8f01e4ea28aa4a0cbfb816cea5093a9514ba234d882587a11005bc9b9f78afefa418ff26c7d9955eb50610f9b334f223a7e3279f879e645a700430897ad4225 -eec6db480d9fa186cbdb38ce166dcb9fbde5378b3b7c02e8cb9b0408cce03f5345a115c1578ba63ada5a63f3a67ccdeff0091f145c20550b6d0681d7b15d85a9127e3609ddacd1fb051958b0f0ec9684cc64d2a489144c6baabf7d54b87208d2a5c90b3103b390be118a3857a6cd8f81bd58ec78874d5376efb3f64639e1af45 -f9f7bf19e35163b79760af714be892589c1ff3a4e640d2a95614e5bc1fb99f9e02780df153bf12b2612c3bac9b8207c69c576011db501a4e667a289f8bf1956f600453ce00b57da6b79d143d69c31bf44ee4bef65a6b0a5c4f054e92c82b2aae00c569be359f40bc67b221edec8a21cf1d5fa2a734dd486c9da49af2e6cc2b85 -c55325a6adf5dbecac33ab7115fbc5502f1af5fa3c39e2785f736003f3f02cd12c172700b8063eb97c7467294ec30a80b523398090f6a6536156e53e9c2f0504fb2a75b2aaa3d989baf6aaf7a9a3f9a80e3ac23b3a05204cec1b1d31f0879e9d3d0a4229fd2af6809d142bc8a9d697b7e04a8f03881c01c46caad405dbcd7625 -e55ec0d6b7f1a14eeb398b7504ed6feda7f2e8f79ef3d1ccc0e193311ff39b73cd7afa873e4e03ee95ad3a8d1f1dc8e1999dd2263bed74c6c46cd061eac4544fc8dd67483a9b15d998128346228151d049077f83a7d950a058c5a6b89953694fa226dd1822c8196ddc75911604330cdc09e5c259ca8b081c14a448e9d1fc47ad -e05c896d23616319b2041fdeea81b8da5077aa68a6a586e0fbc189aecf29c432e46e1e37e515db6e2674837a469bb3f44f7572ffb8abb225291430ca44c7eef9e79a7269209362a7f60c014fa5568a98949809cc93fde3ec99ed034dc7134e0d2e8f28f7ef38ded6a1fae3bcb147de54228dd91f7d88844f31c59882bb435595 -ea2513a18692955aa60455f8fe637f48cfcb64f497063a5cad9f7419a1396c992a9a8e9a55615488b374242caf05a80edf2d871e6c65206a1a27566728af9e4f7581eb1741c0e88622d14a9d3c840ed68cb2146d22995532b820771773b2c416a853946fff2a41136de6205c149e3789e394d75ebaaa9846af47867bff3ac0c5 -dd99490b49bdd7f025fe2ccf451f8b25718d1992339c0a1c62169eb3da2d137db4c8709ea60eca1e590da4d20f737ad582c937ccf364f10c593e9c336859fa403de6f7a5b8de16a41b5d49eafd98a94a8a6b3218ac696e236e46307e20a1929c5bd114516e6b6a6f4466b217dbe03de266e7342bdc3384a34f13116c57d1dc7d -d6366000987a0bc50a837241f9c5bccad07a851d10fd8ae8d9bfec1bdf8acf86ab98b885d16e89827d0ed7522a3e2aaf5fdc2d46e2fe3bde43bd3b8fcfe77de4f4ecf80d6489f12807d57a4ec43deb0307b94ac5e610a29c75810a56b207c2ac8747c5f40b6b112f98c0ad59b6c382fd610818630967bf9d8061cce453086f2d -dbaf7fa3ce31316be0fbfbd2f5439fba81d440719459e61d5cd52d6708e3bdb1c51322f33133b2c6f8addaa143ebf380b46d958723fa9cbd0a470fa1ec34bd5d2417380d5700827259bf7d058306b766d600fcb63eca7519ddea51e7e170521dc2ac5b5df245e5dfc19a3c0b7599cc80d920ee5ff31ffaf3585c7c5791c741c5 -f81d4e3e2ee193d38eb2025316be6b7f65bb6625666079abc6e0c7b7f3258ea7c95c53769112d9f83846dddbfaca860519fb3f17e1d1eda1c88e6df313682f2d8bd6018692865ce0e413c72b1882e315494992173477e759ed05766fdd9769c69f852af3dd385aa9d39cea626b372157ed825bd88df7258a1aaa78a0ffef69f5 -ee3fcccabd80601f017d6b760e12f14cfdc876c8e0190550d32c1f1eb6049f5edd356396314b8914a84f6178f62751e8c31fa5bea13d4f76f79c446bdd45a66a71b310a4ec1c85677288ba0ce73861a4bd40cb96cc896dd839227b2b53a358baa8cf0e70995cd7f66819c00a7f7811502d81f8aaa7a90d0851313f08b63e07a5 -e7bc5d453f823ac26bb071e138eadad94528a689566eab8884aeca68a4128603b771b3fbcdefa6645f3e16163a4b2347b7a63d36aff89e97f5b40894d7cbda43f0dec94040067e88d1c2627245462fdfaa061ced0ac4e9743140c1680b07c107e1493a2800f8abc75e403c4ac5289b59559a9fb25e0051ff614fe3c6314f911d -c6757706c39d581ffb923998c8d11656c261d23f529f1ea3dd5b91482fbc1b5d9d0fafe22b0ae8f7caaac98dfbd4fbad7f31ee044a8d467b590c3166abf56a5e3aea37ca2daf4c1a6815f4a503a7b1b55a3fbcf14f84ffb867cf9f3f546b02009de6d3ccfd76b691e5293240c342550ee13a4141a693071b629fd3770a01371d -cce03e4ce3bdb4c846c1044eacd7a400cea051d22c7eaaa0cb1494e2c35a282b87e0157bb72708a21b88297be011ebe06b2a93c28d1edf61821cb7ad6edd14ea4693821c1fedee39da6bc86cf65c31b949984db16ce23fa23b0d4f9c7d73bef86969173b7ff988854cdcf7a23c9b2e3ae8bab8860d85a5ff004349f3b74b4dcd -f3ce37a66647d5ebd8781e14c54b25e738ab57df1393db7bf1e71b0e5c2cff7e1c9aee1228c2047979a6073326c56e969577f196e58264cc3e95addddc871beb8c7facf010236594f33644576934e024a3194f7c168268b64f7082ee9cb96cdf6bd834899523841ffa8694eaaca9c2dc48a53e02199259c77294e2063664fcdd -dd5df28cf7821595a31fd36906f6802b3b402bbb1ad9870cf92b64acd08c8a2045a4ab03ef7cd607a15d27925b3974ea3a1f453c5d59c744343e7686a62737af11557bdc6862eff77c9341c988696938874064dc0b0e1212e6e460651c05edb595d849a974cdb58c498be6e75a8ee339004f121c4ed81b50e88bb8d7cc87620d -d56377fdba499c3acb75cc81353de33f5f626e85d74b9f72fdc0a265b19a7f4b34295a3aa78073097ad62d38575693cd8bc5c6306286891d201e5958c686ae7776a2b3d7d9352fa536f415a71565ca2a1637ce6c1c6dcd3219852a87e865d5d4e018269a20a10b4391cfe8216d2d8712174e1c6bd2d3a369dd005c913fb1d9ed -c24d97dece5958111a0a0d8538d1c15e282f21681a47f5c66035267a89e57d21287000214b069c5acb3ddf99e9ad4d18c02b675ec1b634394901796507a740c818b8859e6e74bdbcd433a236c7ab511131eba2d27414502507cbba401311e9153a615db6fa904d54d415d99970eaf7aaf3a265efdd2021b560eea01b40c1a0cd -c65535ed408e69a5928bb27267ae53024e6ea2a32867212a914b9447d07fa6b725e4337bee9b7b7ff99e065248848111b08d4bd028533cc9420e54801ae0b8536ff3659f34eb9062f1469d6dbd22596ebf993f89e35cd4366fb3de63886192030c477ccddaa8cfd1944ed3aa2288d61d7f931e42cfe939cde98d42bb92c48865 -ca8d20c285a7f844aaac144079b0e9ee4c92e160aff97d298959514223f85d94658219eb8a0740c7c1b59395ff6e57c0b9688e8a843d9f75974f5fab5dcda5a0ebf44dc271c22f0138f1268de1fabd7088f34f181c20c58479fd5f73b36c36b9c77d1a02c3c999298470dbd1a4edc324e3478220ecc4e11d3cc350fbf20ac525 -cb1f812e799aefea75f7ff591654d77fd43706de79eacd8f4972e4a10d433c74f66fb644c7a53b09ab8611daaec1b8b158995d1162f5cd66468d3627638694f0144500412822685b72e9cc4d0f0310cbdf9422943be40f675255cd36a624dab1635e6257ea937ec0a9c2218b3458b9f807bf604639bd3f2c7ea9df24bf7f9755 -c9041cd6b43bf14ef4fe6cd495f876bf7a3da054e826570bedca2593b715c5e6f02f5ad5703196ab717ddfdd926dc5ae1f4eb49f054b8078da6fcb41c8d828833418c883451e944bc1f62a02e87423aeb84f52a6806d6fcabf42ec19ba3e023c216d57215c3c7d475065320677210d19f1806d08fd6a3502f8e157c8ffc7ec8d -c5961a4910ba30ef276b27337bc4adcf01c74a83189305f7be816887901c6eec46d204e813e3d4fe85e812639403102dc00a8e2d54c858e54d69eb45076ec46b826c9f6d9eb862a5dcf168fc71c84b1ae6a58677fb16eb1b11f37e0844a84b8b0bd06c33ed5b1d61b0855cf220429803872218f736089e7f0627927c01891b5d -dcbeda335b757bf79323762fbb7b849545bb717052586afa644c0788e300c07b3ef64437ee07a0b181c83cbecdb49b91c4020215fd88302a232c8ac46a0fc1c1a2fc8b45b66f8e8ee21135b1f186f1faab41ece733401d92ec4cca066d6a6490d721152b5547bac7cc4f1027ee7c6edfdcd8ed22d04586fd159cff4ce970b245 -cf4169d4412da9494e211cbf5d25ebee47e7e48409e3b9d76b4bc6da0f91836fbd40b4ede0c50d05a63d6184c9495dbb608d3e57117d086d30e35b121acedc64dc75c5f7c760cf9d1a455f171a2fa9864f404f7188604a92301b5fad6d5544de323a74888906b6177dba5a643ac784ee4eefe15d6833aeeee55cc9a0f6d699b5 -ee2113d74d47670f7313c08e615fecd2777ccbf355bc125ab0bc48151947af19b99f2cda5a815d5c44046e74199595989d1ff84205a8a2c976f9e09ff0361a62c27b3575d1a53f3d3c9c2681fd9528a71e22bb630f9ff2b9ca1a77c54ccfd699595d97becb8764cad0383aaaf908368acc311b43980cf902885d0cb13eaff335 -dff036be4f36093f2e20781547235c6b88f82401795e0cb513d74e9618236af81d9daccda3da9c4a5272d2e10e49a776c7baf5f2aa40fa61e1003df52d603a6abc2484eb807588826d5027f5529fe01b6651a71dfb1ed23990c7ad12a6902c71282e9083fd6d33a36919e51b00d10a47582a9dac65b9d192269000c3bbdd6cfd -dc0d7122b50d0b27327606cef7fb6380d0e7f7297f5076c4b4de8cd76ef629745d2bf9bee4e2b1fd8f37a1cb11758e98d2f2e54583de2a3c0c339a8bc8d013d48d5c76297e12e18d03aaa6f242defd98b145f5bc37224c0f94f895132b6791392e7d598e0b39c2f9badf8631f19325fcac3b8f8ddc655914ec249cfd9e0d0e15 -ebb816b31744578bbb9b10c8c0217de1c20b0ef86b5bc6da94f5708d0140618a56699792225b3adf6e9a02b68422ac0b9f8bc5f676944b4bc3382059dcb33b5343e2bcceb340ef9faed9044814c41de3cf862e07a2bf936a6e8176bc8217e24169f9fbaf8c09b321e349f4d2364d9e37096ef8f62e0c0ed640adbff7bf7b0135 -c68591f3244def5bd01eb6f7a257842fff85f59e2243377e0d265f1f1b90e478b563d5085d1982d96ab881793e195a168c468b50c2c16388107761bad1278db7529d207c5a41ce77bf1cd4a5f6b16cc97b5186f821b15311a07ac6ef0df2994372f2f52c3803ccdad0da78ea6e7527502970e09dd1ae7ef8e99b872beb9f8045 -f6b4a1c781d759e5f4a13973e003264c365893c9f181e5410af0820d57ad417039913bcabe466e43e7e4d66d79fc564a627d3bcde846d5ac6658ae09444050515953337a9398bb1ceefea37c72c67f09cc0ce3f1a4091f52834003c3f180ac340819a4fa0e9fbe074f9d0187392ecbcd024f0a90649759ac83fdf7e77593934d -f6e7675f852d318d6b402d410762978cca8588326d5bbf84ac86160e03c426d90ce167b041d255993eadeccf331e7d0cb57fb25878da293cf2b9fead61e9e080f2488d98e96179693f4492cfb4b6df7b24446687e1b880356779fe408b09c07ae59fe64cd4bdb209dd93e37d6064f6ebd7f0b5d3316e77c916e515d608096fbd -d9cc77a38c2e2c6ada42e24580e3a801b85020808778cf7956f90cda127aef2416e931aef46688ec937d9d57401820292f1b7ef0b956a9ffedfb4fc5c04f9e582fb527d7e09d68ae5cfe1d99b47b603302a89fb5b933e18e4f0a1fdbe591974537f59ff2ac171bedc72ae00100bdc4891441c2767fd70cc9917234cb6f7910cd -f29f0718f61441e6a7fa1968060a4624c4e038995140029615e447a2ceaadf4faf0b650a448fdeaf4d2bd8a3467fbfbf1d413dac1706b7d4d345daad253a8e47bda4215bb71898c7b4859dfdf9011f4f14b76be402efcc22a3f65895847aa866ecd65492a53e7b024513878f197e23d16b6753655c7f2f67d1d5a4df6112e87d -c38400b70f59f672e31bafa81bc5da25f9eb83c2892534d863325df19d0cb4d161db7d52e5d96ca6d4884cbdd47f8f95a7f59f087933df4c687cff3c1c09c527e559a50674edad1f798b233b3a9e6bd0f1d2e14933ca7d27910e4cec9022fe6713b6d774f624968cb2f8a146c5aaf48df2a44171e90c98aaffc5b45cdd0f5295 -dbfdf8391f3f46855b0effd42884211a069a720eea40b4045e05b3f7b89350b3baa9349542f5dd48e6c6675799ad85b7ba29c0d7163f9ecc8a5f945e9ab62cbb3c05f018e07bd736b3d245c168ed0e7c565fa8df0dbf75649acc4a078f625cbe24d7d102bfeb66971d97774e5a2a686b7484260e762c2cbe8218412b255cbc4d -ff1044955a4a46fe88719b98b4fbef3610210a11a00f28779409e52a898a2a62d383379e3892ecbd5594fbc4c54d363f2030ac48f0cf8031904c598d494776c399cfeb0be3b0b376519e82981cd88d0dbb656ea1896aafc998a00c33a7e8e619fd64838b70bbde315812ed2084ac77af17a5c5737cbdd211a0559f178cbc796d -dffea7b7cc8dd939086609c14c85234851f74699f5df1de82d8f9052f8d29c4e2f5af05fcf1e0111d0da7d216ce76366684271c14e56a56efa08592f7c0aac245aa1d4a0acf19f921884f50cc320fcc76f1cd094692634e3bd5142cb588e62687705b236927f77e4097724c5936523fdf6633a934efa57ecc0bbb109e4301575 -fc7089d2a8cfc5cce0d344cd5ef8b83274f0e49f7a805299bf8adab3e89a074d9daa62f7ae3b8127b628a11044a511061ab08e7751e9603750dc5a5f46a46735b5901c118a2a839d1232d2cbb429c0a7588847daf657f367560e30412e984028bba9616754eb2f2dbfaa3ee4550ee81898d933eb5c4339c1f126bf9286e7721d -fad5e667ecc443e6caacb6ca76599adaeae84cbcb83d0713eb84f13dc7fdf4f0d208ffe47ea4a1d67375df6a08cf13067fb8bce071c39a5a75e94363964125cdc689e499394d3c7d6f0ca6238668024221f82817d132e981c72075db853262cefa4bbebef031efa99dc6ef5384cf942c6ecf0746825c9ceec4cc699f2d4181e5 -fd1b4d7018b7346ea508723e0a7d3960a8828e7789230e1cc749340be4c93b4f424f598b1acf0d16dc515cd6ffb9739c5d52d6e8e9e570c355a0dafef9dd7d61071b0b4ad1f9189df4284308d74c34eb8dcc2d9b9d8fe66fa96b0b221881dde85a8583145463d45d7e1abf1278da2ea8050db5173deb108d12c70528d9c4745d -d58a4da763089093120a6a32735137d1ada1a5ee779329ee0c3c04036ad92f36ac3d4ece8e47e6f3ed86ffd47e96e36c245141e64bc20a825657fe0eb15ca4dd9456e59f6769fb3545f5cfdab573f9ac9ff9ad1dc55f012589cc6c58025df387e050d52ad8946f9618fbce898b651c8fc155827229a779a6876e92dfb484ca65 -c9086f19fcd869343b4a3c21ddfc79caf54d812e21049ee968aecbdbf22ca5f4e211ac94595b28f9f8a3f7f21d5a7c95bbb92a5baa0906ab3ed98694a9a3e40dba216006180c472e993fb1674cbb02c5dff2e77d2f9d03323bb0addddb2ed040c1c55599377d7e98cb0386cb2f95b8f57182ec2b982cac39f01243bc0ad89565 -f461eb483e0ab79a1a6d670c7613f6b04b6f3c2ab1bf12bf20d108f8c9234e1fdbd4502bf829be59b4ae68bb90fbdd6d5b19c5b84a3a512190adb31df2a4e29b5fe4991ebb00532365ffcbf462be7af9267e06c252ff251093bb6a442e1c88a0936aeedd25d99513be8af23447eecb1dcb06ff24ad868e44f53c790feaf4ffe5 -cf62f209d35a652c0f29f916da23634d32148391c06f3e9691d24758b87fa9dded4cd75928a2c4f3a097a0debfcb6928405e50f4508e16482c30f4a6401e1d32517991d3e13acba0397fd02483705d3500f81cfbfac3c4fe75d755999a9a6587b1ffd34f71a8ee827372616aaba8d7e44532c639c104993815efdf23b86387ed -c355f05e36c6438f1fd6ea0613892c3b71931a3af6738797cfc8fba634d62c69b1a803f4e779e3581b1b834fd9ab5f6424cd08f5bf242f71435944a2c31fa93bfc8ff5baaf40f5e378962fa3c10cdd5a1bc8dc0a0ee910d6d7182f5bef59bdc4ebea9f46108f0c78192b6cb94d8e259be4667c7ff4b8b48f51fdd34600fbd7ad -e9704819bdae06326676d9c36cee870a503273e9e450594b52a16ad584504f09fd19177569de2e3c2889d461257b6e69d323ddc6534a672a999118967bf283b012fdf87d9301c37cbffbf49eee882aac5dd871bc137396e9a184f1f11105cfb6b88fb8665a861f0894ea4270fd93130a382b938c9218143345e3f7fc6d24bd3d -f935d2e497d834233aac83a32151b1f19adeddcfbe5145a882e0faa6a53324dd21c79e5677eadcfe93628a58f70bb18d004fae06197b01293b3d09fdb4b7aa0ffbf7059c62185fc4a30cb957fdc13062583c3ed2f4e4588a7d63056e7c2adf47f6467697c6ce15cb542e92edbe132c1d40fd56aa4de0b107e3ff1582e5c0e475 -d51a8b2cf9408add3bc549a140310d4c8df4d2bc68ec35306ea146b90c2d19197afbf54891a240bdd1057f3d8238578ea1eb2e7c0b54676e4b53549fa074bdbcbe794d9084810ab6e0b4827c739e845912f54839c37031482e5953f04ca7b5c39d28c7d97646508675386085a3b59b011ee2b8aea1f46c052753376fe5e027dd -f7048051b96422dd7f07e4fe6f1b70b95aa981f6136cf00e05f8bd1c90d54e425bfecfdf1c5522ac89b10419f898bc1c0616ee8bc703c0dbe4835ed1f56ae159685535960e386e662ea504c7b9bdb1ae7a0cd46e79eaf6e72e5aa60cb58e1c91bec7258677438198287296625f65c8e77db2c44da948d8a2f523b1e65e1f08e5 -ef81839f7627a4798900fdaef895cd619689724ce0b8b3af8b12711a1b7c4b89cba3957f176d4a74668a7e7eaee137f9fb144c96355e1cc7170c107f513a2a09d3b053c8b1b6fc9134c084e5540b2f698190d43b9a1bbc0d0cb77d3c526a95eb5115281fb66c3e3c569460d701393a91e41a1c27be304c6d4d352864736f791d -d06d19436af8376073fbf7527fc3ef4b54e6f6d7323cb3fb4de5547ca75c7aa5a975665c9eb6408447eeed168c75a94c24bb7ea1047517a2991d204a10fe798d24e57d0d907080935492fe3571aa8a97533d0f836ac2037023d22ff0674954a43f144d5ea0755cd6b5a64a5f9da16966c1a40f757081a59b51ae50371ccbc14d -c91f81ae46dbaa65df1a6a5e5ad6e663575559384d94123b2b25c73b67e9d80a56c1e7e503906b87d04534b8d1e0ee788e45458558b4aebdfcd4054871c00ed3f1913e25c154619b787d62fa362c92242189f3b12ffb89ec239c20fb9852900cb73c5b6aa681165f6692321078aceb4da6d8c6753038a624a65048a60903e72d -e2b88ee5f593780e9536660e1e277047f5f00f2507c30923f76355443a88bd194546598aeba7d8a594c461973c066c9f1b72514ba669678a85b5706637ae059459d99a4d9e1bf1a95988226df3fbd51b0c08bf65ea092870f902d734f2326c1c82b28e32154b7044be05a11d4ff9505e8b22e991bdcd295fed0d7d520ef59aa5 -c51bae95613c3cb9ced85c822f9f63284b4f69cd5806e5f17e0691fa5531d3a83361e042b796f53667517851bf533915ade6100c5e35e571fe62186af6a2f6b111f7b006ba1d2dfbe15177f0df69bf48e59bb15c38c3e5f2adc861b99c3ec18e86cc2ef60765a1bea21c66a4a93f5ca5c824a33e3df049e2294a851e607d98f5 -d44dd9aa118e09e71722661f274ecbe1dea8195148b3be5788e0581a67b10c54fd565b1206442dd2e6ab50d0acd466d4190fa2b435c93e6b3599f38ab8ac197a97c1b6eb85ece86f6ffbbdca079f844b9e7aced5a1362415d7952785bc3d7f7759cc23fe28b1e7004ccc809956462a5291d03ea4db7ad19c160121bf81b6ab95 -ef78419ec73c3b5c017aad711d0cb29aede2c53c6849a804fcfdd1e4e8a32d26e5d024f3f621e0053c03fbe25ef5becb19acefe10688585b80d1504f0084ff606d37b8c630e73f15736dda94e82eac69d73b1fd69ac9c0af1343dee6b43f512d93654a9559331b93ab76767e5437d42e8866b68140b1c7e8a8de2ec92b96d175 -e0b9a8df9507d8acbc32c9782d83d3a67e5e9601c155794bfe29e065a4f3bfd5c923001a143473e1cbd5d9820b73bcc1014bb1a7381ea8402a01734683529b599b19505d9bb7eb270c9b64a57b98f97554ff8380f79653ab19bac8ba59bc057463c497239831384ce93c4da48c0ec1fe94403ee965f3856425a082d5bb9d158d -c88f3d02089a37c3ef9de421da396c22884f1934cccbf6a603eb689c1d6d503cb9af8f153dc2f2b4a57d4e3731fd0ac69bfed081027d0be77f299903ec52846ee784024559b5d13ef76dfa4b365d08a6fecb2fe5621dabd3963a3ff799f1e95466633169ad5c5ea044286baf5fb3a19a2a7147affcdda544c1061da877b978f5 -fe6cb780781593d1e777f946121b55f15059ab69f8c1ded35a09e6c29dc4ed637bf0dd3e11a7c056af7c7fed27e98bd80a5fa2ea7665a82b8381261c7e764f02fd5f605c7b8059161cb1a1e11f7632c90d417b460e32b3ace20a6948168ff52dd64f5c17a412b7fa72674baf8c1e24ea62a8319b3533c4dd04b840083179627d -e14376d91a06128b4239141f7d4b1a16847d475a02660e0304396ca40ad93b994c6d501db2cc180f466437841e76f798ceb5e7523ac41b4237064b2b31245df30dbcb6a076cca82de707e1b45c8892556f9fce262ef24169cdd7539c8ec04f497f5c4b28262a2622a650648ad9d4ae5e1945a443562a8de81518b22c42bb3285 -dd6496c4c984f5305b5d7e114dc2184f75ed627180145f331049bbb0f15e14ad2fa74ba7540206b61ce364bd191230ae6ff2d8c25d378d6ff9e8d08e4972a015b917b43ecd734d6defd9961cfe7ba50b916294c9e0cc686c7a496eb5f44c98c44ab974af71be0aa50f5f47cb902a6cc004289ee1e882f9a71bd63ca3d1160c6d -cbdab7643480f2ce10c7f4f3effa1491d7eaf45109b5e7e188cd5d8cc3d6f17b220d774844d4d130edd0ace88a8758d951187405c4dc67dad60c15eb7a2b7695393459db06832e96bb017623dc617c0b916484542633c5c68c0bb44ebe306d9ab1d7e33fd50e328cea3f256393a822dedc68c8af63388462b1e5b2ad9b72cfed -db561231fa1ec28360b09c579bb5cf6d4a8038139fff0994a34e325ede4ba9e41cc65eb04294490880891eb4a624cdc25777e8ae54cc65642e3e986d25f0d1d68450df0bbf52f2b0ee5da9769b6872b39abbe87dd4ebcf56f16c4f8c59f7b27d49e84676ee28980a68fbac057e0bbf69a5414859aac4eb110e18102e4d356d0d -d13ae235284d459e4228f01ab6c8b9ca0df6eb563c83471c32d272e8bc5708f1dbb853d4a225d019b0d63d244a79bdd9cf83152b5c568a5cb378ae601cd96864cd2fb65a1adf1e0fc8cef28c367f44705ab153b86018287fc73892221877eb2f544da6bd09ad2d9eb5285978a49fb3536b8ad70cb0b5dd96577b4d284ac5c1d5 -ccbbb29d9ee1e4f113219a526ca77d70a7b00fd13f9ae423d287c8fec3fc4d128a3f29110b87933f86849161f57c1b72c9309fdcd52390535eedc3b18e61acb6e904aeb4eda536a74f53fd02c9fa903f2f60532baa57c26755168b02db0c3cd311fea7b833ef308be69e8e4408c23eab0ccd3222231a17b74438a8a937746e15 -ffefc0562538685dbfb1e3184c5c855dd0a04bc340374386134f756fcd52deaf24010cd012ea90306be7c11128326b8e940a441ffe90c81c7096e11431482a8cc42576034034403b8a5691d28538833f17313e610558be716afed80807ee29d20b309106c06edd2e7cb06f905af6fcbcb5ffd41f36acf88170330394db4504bd -e3081868e6bfd443207bc3b51e53884770f6dfc227f5c4ad5aac48192c838b7d53b753365313afe4082f5763d93a9362f362434df93b06490bc0df7ed1a3e69811fd8e2f2daf8093ed7a3c55744a8e2243eff50570aeb50180d9cad962af13522d80e562dd549840102e4af3b654f62b29a8a035d59e04277e3b8204989feabd -dd467258d247ee309beefa0333ad4bfd4acffff39ddbc44e6cff2492c65f2a9cbbeb33b915141d7361e579ca387ef3e55105b39db94a006dc92f55d104b29b2d9cc52342e58ac426c5bea0c600845091de3ec35bff5ff3e181c8c13c763ed8ea37d5abf8b39f4583034cf575000216c48d56338650cb39a4e1806c7dcd5b3d15 -eaa24e93d42d27e4bb64120d554c2ee11a095f0f9ff153b835c94e9a2133812d5ef3a22be995af15f6b12b7288c048a6fba834f4698e77259b5a1cdaa740d550383c2c0be7fdaec742ba71148a08d4934bc8e719edc0fe65c32ebeaec3221f7566b9f8f4dc076a0eff4a35f675852a26e46914c5bc2f1012c8dce0f5f6b71cfd -d1ef6b9fe5c0ce5ea98ee2851163b31dcbe3626f2c61e0343c3518d407aa23e14c1d9fb268c844608dc939434e54a5c20f2604c1ddb5fe4f5e71956a4114021758963fab0f569d82a333be13da8f80abc81693de7fe55bec0c53bb6f2a92f9ec80ca756367aa767b39d5b28fa21a232e9f524a2b08586e3e2630c073710083f5 -d0898926fb912d9a6a570a895aedba60ef0f47192b21b7ec097f40cfa4eb92ddb3af30bb55a8dc66a74a68fcc908f19abcd9951f06bd9ea57d91221135c90bbd191b53c03296b8e5127978ab4a7538b3f1a975448474b2895e24eb45ad71bfb24de5b98cc1858a25d1d41a0ae575b05db820aebbfe82a1b7f362509731780fc5 -c77eec2c2dc7baa150df52db49a9f9d624da0cdfd2f20ae97d27e948321afc76aa9e3453dea6d7decc72c8d67da56f57de1874149066b20726ec74b2dbd109bec0fa05c735bcff108ba3e966f00f6a5bfe868c5b74a7983bb0d3310b80b6d745b7a288a73ee40951329aeb18f1b5054a4148a89c7cb34b0f5693ad7e7f29577d -fc417d0a6a65e7a90ca52a82a7ab97069e9845a248fde683451ae12c6fc24391063da1dfdd12adbf2f6de878a47ac0954c8bd6a13129ba1aecdc535a16feb591ede4a8dcd5b0aa9d40129dbaf29879af5debb7fac908565977889ea4857c27b6fcebd8f0cec0fe5ebf1b0f389205ad4976726aaab02045cecb7f3440231f98ad -d3339da1f1643b18af3aa714ab2fef6e2f229821d1e9100261f4f696b972af044ee21a2c0f3f3f0cb69cfbbe06409057a02e6129a3e6ddadefa12639ca150eb9ddb0a2e4a0b5697e4160de6d885061d71cc5ad6a19c7e002078e8ead1348a3017758cf3cad68d70865ade96f3334d708a34d5931ed105cefe0544e78a4388805 -e9065eb79ee92dc6837b8aa61f7e99541dc966151f34dc0b97506a5666090d58c815490a4170097a4b5158aff94a69eea153561c7e332b387c42f3563ae81591e908b0e2f4449c943e7586bb4aee61c31d9640f440d08fc1bca84f8575e097817984e803705a513ac3c852b702d7675d5782e365eb76995d1ce292194039370d -cb211ab2c89539b83d3b4f8ef0edc2e2a061dff45c19b8e25c9905049323f59e42108359467529f94df66006d2b9409f1add75c7be360e29805570161d3660c96038c49bf576dd84f6f9b12aae23cc8bd268ee48c29b5fd3c13c939308214c759c7afeb89465b1bea95c292a0481cad727acf3020a44cd639740be98cac94515 -d5963124a849989d338e6ee7ffaa24830b21fb0b32e6313e3ea77abe09b62ea4bb29a31c7df9c38fdaa25f5ed00abeceeac3c79b0c33dbf19380a9a88cd6cfd09e5bcccdbdd644ba3e018893800a910f2e99beaa7efdf3358ce600d20be8020dc4168647e9a530ff61673bac47ed53c63b39e9964bc542b797de0a7517edc385 -dda885206c316fb8493450432e705e2f202dd4d5a35f86bf6332df0d50729aa3f86bb71ef78d7af36940a1add9f8679f0b8b67e828755191f76ff74e1b0530a9a2fca1120b32f28c3e73a9e51f9ac3be261c91919d936c66e2da8ef0b23db3c9a6b2c3e1d71fc634319e99e758513396352fbc9c978c3e8746e9dc6e943655fd -f0b6bd708eeb9a153389eb769fb6b140127f876b4116fc7f72dfe4e3137951dbe9190d6f76916dfb8dcbe8c8ed02848386d8d43298bfc1d6d6daf773156bac1cb2463ed1232902643bb090eb604c812de60c1515482bb3217660e11eaab25865f375d9fb7a5257c80bb5019056e233bace203cb691fa15831ae1302901a7e8fd -e6e9ede06461fff5f9fa150353b9604229649e454bc1adba9d30d58fae3f9bbd45b45c4a257e71163c9399a1888741cfed9ff01ab8167381e6f16e6e16cc2aad73f6c8c30d1d0be9eceaff662984aff469d85cbe852086beec64a5c7a2448720b384b79d046f4c41408402621d2a676aed29d24eaa99088d126e947f9e240475 -e99b898150f7a8a2d907745b3cf293f2484957a448f480fa2fa9d1069ac64ee0b34fc1816558093e14d8675e12dc416732f6102ec9cff519315806c2d75bf4870a2aeb20abc04717a8246b3ca56ace5db90fc60b820b72876d92a6a4ee263050d4a529ad29d87f626f5e9c4385ceca30076eab6340e31adb05490e3fd0228ac5 -c2a9ae48163c80e187b63785aee50b61cf8cafa1f41355a404b3bdcdb1468318ed913fb4294b51e7301d92f1970dc01e4320fea142e29cc8c10d083a6b6523829a13a762fc6681ef0622ed11d81108fa814b989eb435dbee63e025f9196761850054ed2148c07387a5f8f20f6623f6531b4cbea6ad00e8398c3460edd9c3b48d -d5b9d5961ae8595d6f90402dd03cd9af9194ccdb9c30db8df9e4e3951108f739a6b095eaf6be0a44e681aae508aea83ce5aa3875f72821a8ce50086c91f08a731de573e52ba0a592b5f8e3d92200aa1b742f1c19533a4c321873ad2c4b5f5f24b2f6d0ae92a09108735c0a8795b476b92a55bb65a86fb142318f63bedd26cfc5 -fc0e95da298f47b4c5c200cb2cf6c8250297a1cce4de3a070884413f6403d2410277f934161acf154e2c2987279f1b8a1db936ab1232dcf00e02926a218388f972f4fd47a2299af22b9e15b9909154c0b615929f13fd058f331bd1d3f61291373027c965cf07ccbe762fa5249855ebbd897dff7c802bd81a7f89e5408b4a0a05 -fbb36d7d5e2598ffbd50b3ab673e91ceb8f99f6eb46a756396bd2189905426d492acc0eff5245cf16231795c3e3e88bb11b2f66c7c5995130f7679072addf04f7cbd9059755ec8c3163ee8390bcc1023aea55b16f85972c178c46600a5bd20c8aabeb7cfdc9731acb2068ab311b1665771d4b19a8d782fde357d9db1e6828095 -cf448a3d3b21c41ba1aee82c0d424c2ff6d5afa1bc2fa3c82483c0b60ca0ff0fb579cf87cde23daf83b1077f1333aa5f51dd14ef5d3c276cda122df9e79e4156e16f97279b054fda035f0292e0098ec65d9ef02f2c6076016969d58e1f9fb671e356a956eaef3b449088b2eb8443df2cdd4fb09874f6614328c41e5ac0b67e05 -d3f9360e3d6ea978fc7d18f492ac4696929fdec822744c17ed262748e6bac0547633d89bb9c4b34bbd385253f170f262a22ec37d0f68fec97a193b23d73a649177864d08504e9f952c5d52d831b0fb7a2444db147c2f1c4d5d359deaa19b5b335b968d713cedc0d02dd7f08537bf3f51e17ccc440336a242195c239f5e558945 -c72746e4ec4cfc545d4cd3642a4775a04fa97b2e502f52783f56f90e7549b82655053833afbee2472fa7fce36161b90b8463c22511122e63f9416e075517e917b475d6c7c66bb61dfb1a82391929213e05127a704dc4355b563ba246819c48bb8ca27cecb6633aa89d8114e8c23cdb470cec30ead9f9e815809e7cd5bdc51f0d -d2e429c50f73236e0eacf38428572263d1e37d3ca438d9a4738660097c26f9fb7f4c5a28cfa789465a5961c8a81eb6ec5ccecafe1022fbb5bb1c7bccd93be66f1058ce0fbe48c50d961744f507cf4236b4cf5aac01159c634d831941072e0ee1509c78bec8a8d8867273a5d59cc772343c9afdb86e6a50a8cb3bf1e65be1f405 -e0c9f261bcee9f861d84c726717f65582c17a3db29d18e1a5e4b3e5cdf7cb850de9e9cd663c2a83a5ea9282e255c6003b77eaa0cffcbf0ea1d01c3b9eb52aa0358cdb52ef08af713e077a7e4afe78323ad1e0e911209d3e9eb23cf1b4f9fba7952f697e057a2ef7905bd6988c7c669c317dfc2e5f960eb1b5c645e1ae9b6bf0d -c62c8b51ad3c9e9acdd33a4f4ea308e6cd444a539af5cda31c40a39769d2bafbb632f60272615ff1d5829849ee087f0351f7ea347fa6984532dc286ff1932871c7d11dfc6050a02633b3782c2a0c2ceb219628f6a638d14d8e438908ddaf6c623bb4c69a4a5cd313cc8d17126bba96e6ec92e501d8e81b836653152b3c3a9ead -eb161956621add40a0cc0ca3f3bc9a60f2b0f6a2274f4038213e3f0d288dcc5066ab3813fb42687196ab29d76f1cbfb0b0be7cb9606207a7732817a49230b60b9de7fb8e77a20815b83f84850dc0586025e12223f82823d6daa6efb34b8213c2c439628e81850110815d225305e84165f1502239ea79544d7dc322e69aedf2a5 -c9b557ebd4b4ded4aaa97bf4db989dcbca6a741d59cca239ad8b0121c35508f33a321a1fbb9123d9ba370ab69c70a4032f34c32af2d6a54d7e312840171ac11cd663b5ad8df1d7bf6f9bf972155509c2beeb1c65a0a7b85a857a66bfcca4a62cdb4156a460e2d6274e8589ad83431f824eb51b3f06522e52f7c2d3e93c541b9d -f17c93e94c7ab2f777f518ed702a02b4b527c8d21226a7941559475beba02d7e8271bd3b79b78ef5256b094610e4345fe43802210d2e9d072201436933fcf3243323b7b708f93ef223f2eee56023307c0206979876772ff1c302d9684def77c5c37beac1ba407f1c92f23df7e380c4b3dad03b333f145293737e48c6e4c29d2d -d677d7f7b547fe2d6e89c506500885bb6000af7b109349faf06cd588a829ff62b5e5f72da766cb26f49c41e40fd743f03b887998ab0dc0d691fc16073066e3a7d3bb562d25a109ef7228849be098bc41a94d1635d61d0c07de82649b597eb53384b4008cbfc981cd2ad32ce65fcae288c6b57e8410ea504e68d169e3a93ad3ad -d2738f6224131eaa57bac0cb592b5888cf9ab32c5ca3ac603f00dcb7523bc766033cca5ed14e1e85acb26e537b1506bd9ede1169b6771cab017e4b65fa473290a2786ddb0c065dd9e13d3fc3274c280f7cb99f143a3e2f3e66d3d259c9100c7852aafe78aa36b33545241a422734d1cf216c45a1316b7f5280656a768e8a5f45 -ec9e5721d7fa361c5555ae29c7c53c91735b9b9cf971dfa5359f7a7684ef737018b70235d9f856766fe15c87829fc13a0cb22afecb906af9a3d098673154121ae0556e17e94b05784ba4c3b7c0adcbbe8c595c4cab7c82c4c8dfa9f79c15123af3d9c0862dd46244ee60cce7861bcbecf41e1b1d39a708135bf042615adf3b5d -e61ca49b6676e6a5a59d07f5fc51b85ece0a7ab69f0a851f71688f3aca1bbd19b4cb9144869f8827dca9cbfffc59e57cd8729bbd313b8c1713598a584bd9d2f4027c6f88e24bea6738d07b5adbf8c0f38785aa33b6666664607acc77f4f3fbd350d0bb51da7d2693f1fb35d0c61c269ee5f50414b1a4441f72d97d429a6f4845 -f1ba2f7d8f063535c811c0b268d314f93340ea7c3d418928cd5016a2e8224ada2b4228959e6abe7c5c3c9e2472a5cf5ec6d21b7449af0bfcb00331dc64c03be20d75f7b29d2d47642792bc9acdf2f1647ad453fb3e63301385dadc8472048fc73a32e7d3fb6283994a322f7ff6cb8a419886c2c0f700ae704f34647a97daa8dd -ebf53f293fae2b16f3d0a34227556cc536f7f83542a627b250a4b6e8e41fe8a7a68fb9beeef8ed233bed0ed4419eb832a6e698d0ff6b7fb95617e2ccce0561a2b0f124b15bea9b59aaf86ec04374d7942bc6a7e0167e5eeb360fd6002fca0dfc7935a8ba069d47b74821777900ed205980e1b8182792dabeb5858e8e2f0c35d5 -c6894fe616cebe6bd407afcfd26e4ff2ce32f253bf530de41ecb645f181806cc3d592a18024d67ddfc1779788b80dea06c7c4c29ce0294a1dcdc76a30f173daa97c55a9f34aa0cb8f5d848a5f2f706cef4eb515397d4eb38d493a3df2b582d7644c3902b780c93f0c5ded25c50fdcaef8358139741af17241ff861f19a5cda05 -c044d81f9543061edcaac544ecff31ceeaccac638f14129d9df54c34891a9c2482766445a37e405493467ed188b570ed1e8450e6750873170f4ee3c9c29a519b0f17bb935cc74fa6cfa583f6891cd935cb8868068b5d76975074ca7d4c6f2cc0156a93e25c5eeb03d5fd6d7858b599f15fd8ab9e6b5dc22ad1a302f96775cdd5 -d9ac0da9f7b0cefde928331c9edd485728a4e4238bcd2c4df7c1ceef777df025a6c94c27ccdd49476ebfdf8dae75603fafb4563ebb956a6b73b381dec4d414d6031d3db06360ee425b7f104e14b993acf1594695500c2ef559bf9f569e3e33232c5333814d1060c696b2c0c58ffff825cd92ad1c29bdd4e0ae4b711639bb6ac5 -f2a92c73a5decd8e1e36eb832029d8828ff031b759d366267cfba24e35f01b45c637d7727322e60c27d55e65871362410c3a783decca9e65e821d5a21cdb8c5d97e13cc11aea383fa8f26b602e3a9d895ac042df6c2bf9d42bbfa6d11959cd9b9ea9d5202a857ae0b3c04b7097428f3291a50e86d07085e24b061972a0fafd45 -cabbe2b78d742f7d8fafcfc03d8d1c5464c5379c6a34514b255add1babd0fbb955b3280f9c9b9ee22a6139fdaccb09f1bef5f64058b9cb24aaa23b4bf88a7f34e3601ebfcd12ebd497a70c673c58b303e960be452f19b397b91e2aac835c7cc395ca2b0484272d9cea2476be8febfde504fc9cc392ae1cb89e464fa226f3eb55 -d9f356c3beb34dd9d2577d5cfc5dd9d7571cf90dfa1302ebb0bcfc194de5185237457e7324033655050e22b976a45fc5d54b5b22c0d50ac7762b6d812c5f32d682624b07e71eaf335c85205606475cf9206fef4c5a65e1c90cf4bfa74a136f592878410aa2784d0b30373067c2bb529ebd24f1c50e941137d244b83d903f586d -f2d4f9085480253f2946c7f41189ad8351cb734f6219905cb6f75537d6b505a49c350b5af52386bc59bb946ae662690fc349e18d31f70084b72d981fe557a70b2ebeebdb16a25d63dd93bfe9ac1c2a919ceb92081d7f47f5db53f9a66e5907c83201e41028544d14b1524516fdfdc1effb6741d79621ec127545ab4113d12b65 -ebdedff63552b39b84b4435c4825a88b523de9c880e30afbac8922f6a296e00ff02296fe3b66583c7848daee7b2fb7acea9144d7a5d3b7d2ca7c5e109584d08426069bf599fe097272e0dbe536caf767f0520b25ea5f678a255d3efff629aca6435a296f7cf6d29bb4c37372701c37ea7a952d483dd0d54c45ce6e7fe61e1d45 -f8932edaad8028dfdc82072d6ad44c32ef59fd388b6573848eef6239700a431e11ecffd167470a2d4d05f2e6522d69009b6883f55baac1b894039b13b98d6b5ea25bdf219c36040964551842c564b8d13ebd4b729d8156636bb7fc0a7965462b5b3c80786ec10827533be07445a6f66e54ade6155bd008f710e8dbe69cdc6365 -d143338d085ed0955e617ac2758b534a1fa75838e0f10bdf4192142c3c47180ccbcda159813a69c9f6db92a9278285315df6b65757d42a2a1555bd4ba3477dc65a9acad854a6fe0b76089ee6d7b76143fa08a67a9e98927fca7212ec94488318b291858f4fac01171bf595626dce76ef81ac84cd58602a43770a71945e41f20d -c7ff71337de97e9bcf2e125b1731a7ff3c139e4e999a9992c4d9b4893f4756d94507a366a6d8d435b5f4b8618a36cefbedecd4fb9d2c2441dc47b085b89686de53d9a1a7e673546e94db1315bc8369e3866965f55200390575a1dbc4e1e8b06d800068254a21d54c6d79bed40e25b625f6a2fe012635c1c7fee7f60e49582015 -f40213d83153dcb0b019d5ced1f4b3e944881f6638c5f325d8ed05a4c8ca5a6ce38815f336610ba4ca4c7337f15ccea090478c97f8db9231ba73af7689434fbc6ec171944dd77908cd0d329a306957079b6401f0f34738791093d71fbbe9f7af7e6945f7a0c8806abc31f6cffce47c9d539f3f4cb9fce3b0ca54d1177285f145 -efb3b6ac061fcd4bb6411ab78ee10cca7c14b5b9dbd07109d1f6e03b5ef11f4726a88f89a5e79e66a11d59e2ebd426b3f21b34e25602adddcdc87753702b1e4b852a565525559281d32a753e363a98723f365c479dc9f1dea8311d723dc016e811e0d8e918b63c3e6c3e17f4c9a765fec6c563fc1ab1ccd5c916273da3a0ba1d -d0b8a638098319ed6f0c0bc2c0e23c36b000059c0883a8fcdfe9357f4541cfa6f06d0355b0092107459a752b040722356d7f95320d7206deeee6dca587a60acc2c64d8b63067ca8ac10d221a6ae7311a083d62d180f9524cfbb7f5b3fe71f0e82bcc29b64d55872eb03b816af1d23a54d6fc4e395764d0dbdad63e494b16b5b5 -ed0752e6c489b4e37b27a1a90073f5958a7eb7dc6be8c5fbabae963784ea0993152cb9b8e0c9555fde1cda14f4e377611e66a7e7f50166a6eb0e37286a08584d931f47eb66dbb234c7e10a5080ad84edf57765b0e2c32eae6c725cd95932e94f1475a1241d1e3f8b5f11c0ad8f399332a0c1f0a54f48f81455920ce94a3d18f5 -f2164f284acd56b67aaf1b0cd0e733709c7ada139cdd348c91eeb742303f96ea21d3f4b423326ba8cd95fd1c36d5f99966e1dfb075fb13ffae9b2a37db11824a6e184980ff63322a336cbe1cedb8c748349dea7673689c4b34be89d065441eed9b010c540826a2079346eb90d80bb219c973718670ff8803afe28feab3019a0d -f9a00b6f7d7638db994b087390ba2b91cca6a3c30682898efd42f300aa20116e0bad9392294b06fee445d694bc8a5d93e4bffd7f4deef45660d39148230b955b0157bf62255e31861f9ee002e78c300a8d93c11f3d3d7bdfeefdc87231c9001fb7cd41387153dcc91f8a1a1663718494d9d6c866af82c0df6b796943ddce0f1d -d77482d83a5059204beacc0c1dea0a87347b5dc9e5dd04148a9339067121e4be8d8f3bd13a0780e6efdcc077be7f1281df3994031ce308a1bac1024144dde9e3587984dc76b919e941abe1b9e6a6c83076389e05b209966b698942f02e83861a30349797354f02d3a7d1fc0797a38e4ca94aab692e9d242f8d11d8e9ceb36e65 -f36609d7add6e2e5af768e8806280de76a92799a44ba2317d16b35d8120480ab7beb4550c706984300fce781bcfaaa7f34f4b8313ba9e350e35136e7dfe060191dffc4f60803f87a23e70e78ad4067a6ca1ceec7605ec4224d9e4056322fa932fc8d86c3eba6904028ff1391918c0628f23425369788e6f15c5237f3e945748d -f76aca3ae95e24732d780671dae23eb76e95320b999bc3087b9fd5b47ed48ac45f276df913fa29ebc0f267c5d6149f5ef3e995252ab855a75ff13294cae22463caad196c29593233bd345c470f48ec0a33855caf026b02c7e9be7585e6a2620ac8071712520903ba6ed56af7633e08de22b65c24260996b905bc7b17305b6315 -ee47144c7cc79048da2e5c7ca377d6bf54373b0235788f6515a4d05d76427797e8ee951f3880d80105a8b9a5e584a09d7a278f9927737c3cb3e65b00d166696d1e299a81d0b63b3d16c2e80ef0769ef0d49219b97d88772147bf19c8e0e2354dfe0753613ffdf82ca10b79a606969a7d10ba6ef12d41cc9ef7a0ab41a60aee05 -c7512a6fc248a703f04a4628a04c5f42925d0b3a0bbd26671ca332a46ed23a23552581ca3b14fb93c50f2b34f27a4ce81b7b32469a30a02044b08e1d8c76d48da3058e821978bce032f5f8cc59d85d30ed8f8cec79c716aaa577e1c0f61afba873d6f8709695f4bbd22241886fd684db8f7371947330c16dc5cf588393011035 -f3965870c5a0eb8f3f06393b00ff005947a4c93ca91234a60e0acd6174533882abc26e4c4660f194a8851b59029bc31ee4e696fa1fa59e7c88ea0a2b91960d4146ad140286b1f3d3727d0f67b29394d00a604e65e4240b9c93c735f665e1cfdc69cd48a2dac10a6c7b5140d8a57ad1841d99ac5631fceaaddd8d6578b4ea8ead -c108f896edb6a310f4b3acf52348f351a213a75eadbee769f484a220fee6d32fa5ef491f9d39d964015a4eb6f741abd14914cf03ef05f039b0eb0361c1dad1836dbaa575b6b9cf69d3d39c15f3fb5e1c5ec54a80e49636096ab75916e269b1a15cfc5cd374a064a3251b5d6cd6de2aa65aed83cf68d4dbe1ab9682e98bad22ed -c47513e74cbb89be9ce2f69b924430b0f84c0bf6b99414e7db74ac0db1d31100d5f06bf3310e11d1feee623c4998d40dddb72481c45eb87ef0e78b71b85aa1bc121613106dd4fc055a456dfc0a708c5c13337214aec0bff64bce84a49751451ae207b393b2299713cb705bbe69b11b3dde3f818d3fbd8293b501d027b2c2cd7d -e7c4a401decffc41ac44a48dbd92dad6142e816439b07a93c64b0b3eb772d278aac72a5583b93be6d23c85c91a22478b7ae1e9544b05747d5003809f17f89593153595cc572f9ed5815302e80c5eca2a360f030ad556787222cacad104d6c20514be1ff92047b6d194c5706c95e1c5719d25fdfa818198879d9192405b546945 -cf1924b43aa3edd753df6dbe5eb4453194ad50937d6072f449185a6f704dff7f70a28e317e0c5e8c8d67164e83df9ef57eb748b38c4a08248d56e7ec06caf4c47ef7bf09d291fe57c9b0093bbbd36c323f383170e4d1430012eadebd912ec07c507f2b91de125d7711869e7311a98f4a3e63c37cbf770fbb8f965c8d8f337135 -f8aafc8ab799051e91d03ebc27f3126b952aefbdeeec0957c60335325694fcab82a7b5ae5807699479851cc4c5c50610fceec008da4a5591a5065379db44cc33e3d8d654442cf7d8867973a5b7a967df6005192305bbbd556ceb2f51bd80115ca86fd299b9c01e51e6f7467f1dd6decda49ae2211fbc8c1764cdac271290316d -dce1b066d202d9d4ec6be321dbe4a0f27be678cbd16d30bdbf55877c70d7ef875fc895611b7c5988e1d2c5311b4885b3a8845186ac8117c17d9302b66fd1de0855058eae06c04a1d6ed84facea5d5cbb88cf5a8e7790aea33619a681858cfed59a7cb1db54f2d865c71556d4b9cdbd8539015f00e264c0bc4e4570eada2444c5 -e9b694930c95ec62abdba4da1bf14713c02cda478d380e6c4cf3e3a046fad0807211fd0c7f1f0511a28c83cdfbc56f48abe9daaf48b10433989ceb489aada52f35d23aa25b8ca027f1fcdc8457afc56b177aeb04bcab67146ebe9b2ab1e8000a8468f112c07db377bffeb6ad81084001819a8e1bf7360126e344105eaa6c22ad -f2b747825bea0eb69671e2ec7894a0445206269d9b04a1fbf7253ef4a69c05a9ed168408962ac47d852c85cf863534d3ae082e2fe90a9daeab63a37dace95513525731ec16f629465b9f7f05449722fa06c66e6c8b8a909344cf2d4036b5bcf044fd7dcbc50eb53cf2a1246bcb564f8286dbd4c6e8ca155152fdd1b1627b71c5 -e1e43a3d617669dff0cd6d191f3c92516435c17e5b3d8ecdcb57182b7c8529d7def527c14f660d63e61bf30b953f187ef06e378b2139ad0f30f4dc6193a3df84eb265f4578dde745ef8fa1f10a3b7b920bfad2a113452a222b8434d4000d53e52d8e00c3a59f9d7e4514ed175101559c636e90a1daa5d7094db4c529a0964145 -f1fdc775e8fc8246bb2da1d922e140782d2f4ffe317226701bcdd3bbe97efb8197f2a4c3b9e59d8d489eec1eef8bb2e39466a9800b5b112d6d8cd8c55eef993a6cc13a8f9fd23ff53cc12de466e24a033674cfcebe7baf90c3c3f1fc366f3c463fccc4c02dd074b1e5f83423e4e26fba1d35d6b90f22f0369e4fa35b4b46fc0d -ff0bc4dabe703216d2597fec46f08827f09d8277baecd636cb7e63c08004849a4baa21ded34362a871db6afed09e0acfc73cb36220bc5ed0489b022e1e2491eafb0f44c96bc7581ea02d841179f4079370b4dc576357723496fe7e0217dc8773fbdd09b562146613fddc8b38ebf33e283b9f3f5bd17bad87b60d34a191b9cd45 -e4d00abe3070d6233ad696bba8c4ec62f9d3b372a799303bdc4bda030d78db01cdba42919778bc3ff5703fb14798ed26c182cd29852d2488a9f72ecb2e95a7241df1f8f3372ee7990460bdab916884e47ba8ebbbd5eb010bd36b267fc0be5075dfaa772853187e02bcaa6664dc3e98cb1744a47b15e6a92352377ffd5a7b277d -dfcc6a945099cc5fc8a3c59d70e46e29acfade7843ca12f82715f5eeb8975a379afce84de3cfc32840391464413667d6c6427ce85d26fd9a737c5aebf4caa6d1419c2f52f661eaa3a05642d575f855a1650924a0b9adf410402a27f2d896907cc674c16c04c36a385b951d885608cda14a16d6905de193f7e9afaace19a26f25 -f756cf4396de4683afb81f0b1be7b72fe5304e807c430bd35dc598846a3c78a0546154c4798a43c15916f1ff06467bc4d108ea1a339f561d728c1a4e0900fb7f22da26729f5f4093ed53e44696955ff94c2211359aab0d7771a327c69ee934f31db90b4bb6c85c805abbde0feb40f6c26f9d14a496589ba1e42bf86dba5ca025 -cd3ec9b8f738386ad4b07a2411e57ecd743b145b6e865b28bb78e053be310aa7d4ec30e375ba5d2be7cc03719984c05ad512d0bd1f1e41237c1205db19f933c4c3f28135a7935b38e8bae7bcc5bb3fc8810e59a1438286b17189b6feb5dccf584b883a42c14127dcfca06e4c7a0249ff4bcd28c78b7a0b4f608de3a4fb13713d -d1c3b913cc9a0dc1c63b5da8442cb55e508a9fb81fa5538bcda09696fe73fddcdeb2b9766a60c6fe13b6b5ba25cd99414a29bcf87bea3225dcb90c9e5c05e45c982c60e36af6630d023809d0c9c68d7ec1d78088722be1dc45204a02be07f7a33f3688aa0efdd486de336a6fe9d40b24ae560ee94329995c67dc43c999eb584d -e6906f19fbe0a7b73a6602c14cb916c205e117d109800b7dd3c3c0947c65a58cb7933544b2d9fe95defc58fc514c3b7b7e661549223c407a66d8293d895ed71224dcc7c9928867c0179719421ccf1432f01481e76c79ae0c5d5b9b5c4c43d9a903df053da80aa6a2297e7727f8d263f18052bbb4691e7bc2679a4ed9b1655485 -ffaaceb134150a10384cf039e8ad64bff0d2f34e26d5f69ff0440b0d27f9964fffbdfe722279ab31e4ec029394f692dcf8701edaba8b577d0ab28e217e60e2ae885ca72b41624ea3c0793eb388e7c1d513d4c0169606a9d030cc397e8dc3cf0e59dabae23c06de3651ebe395159554f0b6b861bb22c7b0bae083936ca238f43d -e1353b6edcca52bb2e5f4856c771853d534cb7be128ad0a62fff102cc1ea0c83f143afecdc865fc72b1294a940ad4cb7a0316c255f87ba7dc848e7a6a81cf339d085d64002815434431a53c2754e59a8b9cbe97f9cb4321cd60ac9fdd828ae9ded8954efb7287dc088212f66037e5fb80de89a60a5c5daecc91c371295a2214d -e2f3e64e2b74da49aa0993acf7fbdc551d092a9bb47b9c9d5243af4bf4ca6c0e0fb7b7cb743acc4199b9829b6eb893818bd6f60c40f88095efbed69aeaa877fd59e9780d68e2ae38e5389334db71722adcb041d4bd31b009d7ea342e2964a31ce795dbb22b62a6aba4e50edd711db57d3573d96f6d40a5a0eebf5f7fc041e665 -f05bc3e8dd7a81fd90afff645e6f99124219ef8358f125b4deee68652446147c2af8a6eaa2527d9a62755f5c663b936792d052ade822b93f2aa328cedebc9fd32b787a5ac88cc439294672ef61fabb0aacb5a8a33073a6bf8665cededa4fdf80364e9a38c4f2c4a348cae5c7e29bee6c49655dc6a705c3881c7e408aa5385725 -c0d865f35d27caebe727aa38ddd5f74bfa94d6a194d92123ce6a2d939bc9208d4cb9222de08b0515bbad5ced083ff087e516d2e6c3b37755311d233c6cd1b4e7273cc800e5704ffdd28edb92b781143f1f3d259a1524a2762e4d6ec13c7918f54766e63f62305b5180d904a7a648ddf18ac448592855575a0ef5797cf47f893d -f032c386d6dfdbdfd28ac2006ace6ab1591adc464269b33f27ac5138ba399226c151e9e59894d48b0e94ef366884457baa930075b179c7bfb61cd1a452b9149e9fb18dc937df8756d55b3c8f4c2b5419cf54854d3df18df3769eb6b7f0926764952ef7f453b460941cde1b868be3ec8cd6aa333b3a8b45bfdfdadc3bdb59b3d5 -da1915e7c7e36ac52d28383cbc60036ef18185dc10eb99a72cd55b819cf5640bc3ed899ae849a9e033634c9ae84e8ee24359c2502e11ffe142748238a2e57fa08c46b43ea52742eac29564b598f32da59ae9fbcdb34fdc30d3e1fbf3b08d0076344c8eca5646bdfd787868b27fc615a93de698497580586f41cee473f9309425 -cd2946b5bc0b7e1289bb27fb6e81afbf0fef4300f5d0317445419bf9aaf4835b9e6d4c6c10ea746406e45942bd697a8147887900bb31d42e18cbf29bba283786526823540d959252f74a3a6ea9d5561f66e9ac0cadc457e46126fd3b99dee5e4252449c4121722b19bd01d7eb6811f705487ed1d4416a274798b05d5fbac5955 -ce5a745d1e79d7b335d7c88377b1c692ab802a6665bde0af07b37d70e982e0c1af32125c8af9c9cfe22e872bb4e3a71ddc49d07ee17db5bf045995f3b6f4d79da9271d51b89bb13f23592cb57ed01eba6c40949a967adb0f8e3606782e9866322f3477043ec8b65d6718bea34aa025e8f08eb0a8468050274a99bd7f05711ad5 -ff5d660485911741bf3cc5f0c060444c1c847a17c2d7b68b40b644d944310ae3a4dbe878131bc6685242ecc37912cfa7cdc6f4611f7b9873ea0e75c59cb7da908d5c1d503a1720f67bbd2a15f3b035b4e89f39383da64eff98f34bce4f3ad3a91556c39986ef56e94cb7442df4f2687fa2dc965011cf0314f9fd0a4e99f8a82d -d92d8e5d030306cbb0b4e7145a8a4e0636282a5d7f29816cc37366e95d5a9f51415539448edbc6903b07f0d81b84d5a8a33c90f7b9e4e7df1e10bffd107dec6d9362dc86513051ed064f8ff64f156903d0a96fde60811447570cecef2a77cfbb9ea1e3e43ea5d703d39fdf0e3720338f7eb201641fd0c63249d97bb34227ad75 -e046388255096cdd05bcbd3153f97722a6a7841b7c49f9c13542713b5909ec25cc2da599b1025e224b26930b5aabd4bd2e554ba3bfebd531c9586f38d317df4b6c6382b67c99bbca920e7592fdde8934cd38c07d3710be51e1ea08766709a2d63a8562a079ba6116265431cebf8cca528fd82fc77f0a2de81f6e8296fe0715b5 -f5ac18e52f951d10be9300cc6f88abb46f237d7c0bdeb4a088e9352d8fcf1dc59c5b54751bf27b2136eb9e7703d70e4287e5cbd5d07848ec3bb116d977938bfbe288d85e98b68cc1c00a15383cd01f6324f0d78b44500bbe68b27b32e19778a165352214eaa2156780deeec3274ece0ddc7f93fe11401bd49e915ccb664a3f55 -ebb41e1f5442da75e42bf4b8d1dbaec10e59b71b126a5825f03707a9608512ea068436c3afa102a4d2044ea7e6a15e70d5726d8f68f9bdc79f09abc5a2df6946088467b35085fb626a1be703441ccf627eb9b3f56e07d932e8c4b1ad3b2ff399de007cbf72017d819c4ec8ba10daeb75ee00c74bdfc11ccab597352a145c88c5 -f695a2a2b05e885de58d21acc17e7d0acec99cc82a40a0e65277cbbb12698e1101b7d0e30828a9cef39a3661e2533399a754cc67f4f927e084d0c6e756f0daa1e53f1656d637a795972a3d9e65b8e76d5a9556bbecf8243b6f5c56858a0b5187248630a6ede79b202ed70111da94a25f8e95abec93672f1650e9f94ad8e8dea5 -fb1965abe9d6b95979793175667a8174540dd9106ca08aa16da6ee91438ddb51ac0be3f88ac43b3ff3b3a8fc72ea00d669ca2424040f995a63c21fdd6806883e36bf88f7cde516afc79cd2ab91a030c9fcdf8f043cdd33e448178a37f5a5c75fa3eecdf93c24b97a75a09b07d8b6cab8d81338e1155a31305e60bc7bac49a9b5 -d08191f8d2eccdf966eea365f8eff23790b197673dfaf8727de20239e5e64acaeda10dbb9d662df04056a6d7dccb35b4eb78187ffd9b7625baaa1cfdcfa7801a19e63f5353407f5628f10f1dec5c8a02b5cd51cdaa3320ece9daa1af982899280d6942fd90388b819c3f3550974814fd336785889f966a751754054d31eca70d -cb6ae70226b42cdceeace435730d84c2e0a62021315a08f8c91746c6eb4ceb5705bc1344ca936d225d6a8adb1fd6f9ce2249a16bfffb77655d314ea4daabc1a90be9641b787847430f03f1f13b2ad301d8007749a0333ec9fbc233d7adc597331614e7789e0665676aa1eb02aa6fa1846e1570332943f304f96f4a9d467e4885 -e91ae993af41925b63076c8d6f97c71f54802d64ebaa90385676474c25c360084080594c4ec8fa2db7436a7b18b55af2c7902c4cadc0474a7fbc2e82783af9bc87eb88792a0a4241c4b99383585225f1ef1c7e46bbb32c8ed90e83cd2395688821610194e6bdb38d6fbf53870ac9c20df991227c598b300eb7955f7a44d6abdd -c865501f45da50c7061abf8421dae04745125764a6fbad33fef595783dd8676bad62c7ef7853e4b75f4b5aab8bab93b43999a425a83f7176199aada5347567b70d514d2c984bab627c8a3db82f29a0ce1f7d70c1b0de249689c7c59e279ab94c5dbe149125f79196660813b7ebcce27044e8429afd6be018c70a49cce6d76d9d -dd8abe13a5ea14ffd8ff45ab9a3a35b90e6bc79c018fd1a1005cfb7c721601ece24f2078b2289a6afd9bc3d2c63a7e5c7623051bc4ddc8bd9aabc48b7b5d2b5ca86fbfa6b8c980b37e7d46bab3734887543934bdb0a75eff82bf238999a51cc1ad0595805dc27068f8d23af344e022a916bd2012fc7038f547f92d97f76112c5 -ec32ef777c9318c52ea24f7dbd1f323cdfbc1fc91f8ef39248190d4944d320ac758fffcd5a7ac3df78761b1a27cc90da44882672496ded73f2998e4884a86ec264a2f368a6adcc210bb28a9ff66358f15c5e531044a71a7515e7c17d00758b289ab786acf07860e0de22deb357fd45d2f1bc289277456cd028da8cac1f0252e5 -e1e11019dfb7beb92187a908847bfa04cc987466e9f709f3fca57d32699d961cd6630a147ddfa228c30e5c5b6e75d9badf16bcc6edb5284edb255c64c6af7f977c4ccc5893a10b621c98a77eef18882a25852b4667dc6cb03a09a2dda391fff31548f4abaa33ea5903ac891d907fd2e2f56706ffe4bf6eee1e01cefe431e956d -fa197e6f7fda770e2db0630a8d13e4ff7154557470fab3723ef0c7af17974bbeabfa5fd67234c92790f3806e65cc938925aea2eaf11a27535053781166b8c5e9b8edb8071eb0dc434a49bd78b4d36557421f0778c122716598ae748051d2496c518c3fe07fa70731bb34186e6c26c1fbf3f927cfe3a6338386aae4f109df3ced -ee1d856fb6c508481be35e01355c6c32f4fd918834444c48f7dde2b60216389ccf46a42e5961cc40e6cda7b5ba2235669c466d6f14950055c84b339ca92693243b9b7e02a3c105cd6a25ac002d3c6182e90661a913ced8678c231e4105163118c2e719c5d5fd8665981d7c842c282944b81bd482cd9c4f1879442994c62d38ed -cd1e3cd21cb756d928c0f53688aac4c03ff7e71ef20dcd4798159fd8af9a105e5424a23c800a70de73cb5b22ba328dd799c85ddbd20c62bcb4b028ee1476dccc6eb26b932c12dd584f8fb6d70f4046a001e72161db28e2fc76cd5317edb4b35f7c878637b7a2f1788395fd5c019a0033c7c9caaeab1700d89deff335f5f65dcd -c6c7888d3182c721e7989d341dffd18da609b2578e48825acf5d541e54475631b5de037f8323981a7d6ed462c6add59fdc2bf323c9d1c502afd881d817b6a9acc6682cd5d1eb0f7d7cc607580703e3bafdedef36b7af7afedad4262cec7a345748b237804f6012f860dd71a25340d5674d1e599a4dd41b990f7d504195f7b0ed -da9a9b87449827f325fcb2c03bb69a87074b2b97434e03efffa97e3198e3e720d806fd0f5767c29340fd2b8d8a7b2a1df39327de79d848d600b78cc4be447c6110cb060281b891b6811ee411a92ac23b1b19b224669ca3512f85b6e69aca9405ebaf5fcda241ca7ffbf7cc1dd8984a2670b696d5d15aa3846d919552208f889d -d2fad86c78c301373441fb2ca6b8dbe2bd3088ae6f9351df1659f2a7491a203aba7ae0cd4c7c9747cffdba58b901680df5eba4a2dc9311f25fd1b48f4464b55b239e5f6fd26bed5a636b73ffb1df7fb7160d065492c6f2f8db8682aaff9d4b5e9969f0817bcd123be3bf3a2e1de81cee2b0fd7bcddc7fe6c652e6e7e9e3ce07d -fdafb1e55ea0bc6bb0bacc5cf0c617b39f41ad7a2c7f760b26e963b03b1cff39a7a00ece74c36d6a964919430b0cd5f2f84c86595fb34f6c3be57ac13a985083f312d61784d966f82c28a68f4f810c2c7b27d492355f88cd9b47baed0bf6fddf5009ce95576c7b6d8a718de2444b7263ac4a1bb627fe66fa797ab27aebc9121d -ce606360ad461a06a31c1995ab7d67944dec0459c06c95b0f736020864d80511bc41e62f6e58274a3a1f11d372e0f39aa23141979028173f1778eb015c84ac3a9ba7aa492bd589b16a2fcd50288d5e34609aa84a0796fc6165a0684e7f12acd722be221b226a83c9565c54eb1df3dac8d987df544fc177b9981e617e3c160d0d -e0f7089df05ba237db3b1c45bc21d66c29ccb507e9daf95001c416827fbb671390c97df7b83788e2569a5c5fbfb6843cc695f239f5a1e95303dc43eb5b6af0f1c68ab9e90bcfd516e6d6b6ee40d4f9ba37b6c048525c80283488d70250c5cf99c971e66bfecf91de978dbfcb7c6ae04cb05ef016202f30860479ec1f90ad4d65 -e8507ab662b3c98ce61e0a121f721a55fd03f7ae5112227da37af43bffc91cd1467276191a561cbaba0e34c1f454f679f3999d41e3670135b1830cf637397c4a5da44e050f872e2f9ddf38796a72fce90591b01f2e2c5fe715617386044a8a971411027d3806d6a095581689065bee15a4fca04958fb5ddae0ebf5a300300b15 -ca0a12b96ffae3b5527115329f674292820ce3d4088c63224afd871f8119479a55dab101651ff8a18c3adf9c72636fe333c4b3ebe674efde597ff92af502146127990e7cf6edd2d26092c39a5c54bae54cbaf1bffc2a4694b50c1d85e5a2f787d5f9440626b3106ebb2e05bde7a68c2898285f37ee3a28e2e1c9b0d3a0c485d5 -e3e88bd18aaf97c07ef653e8fc0a34c84fd1253a3569bbd446dff4824c2603c7f8eb27875c696cbf4468ddbe68f05441ba1ef367a318e65dcbc1933e89386b188e530ecce528eaec744f90bfa84646c9ea20bfed636b3064b3af93c55e78c984e3bb6fc651bfed438ab861acc7122055624ebd4498833c744b33ffef8c00e1dd -f8456e31f6500650a486eb37443fc7952d67a1769c9fe245af454f76ea0b3c5e7a16977abd85af7d224430556114337e54c2edbe2b3c168b6d091ab6969f75eaf010eae3967f346cfef4fe37bdde5b945fa81c545bc60a44ca4cdb881cb1d85d7756f3106c868ef2554bad9fdf621b6ad576dc6502d3d8eb338a6c661e0b4575 -dbd011e8510af2bd21a8e5aebaf1081feb39a43579a91b1287d1855ca69b461bfb39ff789bf9e18d521a29f9c0a98f801022dfe2b48ab47211d1e2eac93507553f05bcf830b9c0cc01a82e23ac09ded672c36287ec331146d15837a5132464cfd9a9850198ef18685376343822e6bd00b0042b0fb9a10c87e2e6ea25ec08574d -c88a0d8e14d4aa0b128e0c7b39ee774e520293f1dab004456f11eb20c812d76568b4255db7f62a4d003bf2cfb2e1e7d5307fdd19a37045aba83e3903cc80783a40c5b1ef779fdbabcc4b317ebe478f89bc5097d4bff5181ce8ab1485f65ed28b740ab329b4b40f3503778531f64608798271f5b7449971aa01082b742ae821c5 -f027a59ef13a773a37c37ebed7c1f185e170ff69456875c8dc725b7294883480d264d53467a7a39a69aeea0096c69f7e13a48be0e18acf2d771937bf856e63e584dac3a764bbe19db2f72f17c15f24d32c069c3103b85bde4c3addf09b97d195c26ca32f1d0db60d1bb3e8ca124bc68cd4b347950b3572f794dcf2ed28827a05 -d0005617806e66cdf95899ad4657a55406d11afc7e9509e6c203f1fb0c1cab50cba705185bdab4f711f9aa6e357f91b20dcc908cbe10180167428ae569a9aca1ea17c66aae42e99076dd72f18eebec4071c1873f323cf6fff816845c25725c19d59a5248d680f85e487ffb0b50400853cf228fd8c5ca39888cc5791cedc9ad25 -d54b2a1f600724faeef022a75a803724389d6c3bfecc6263b54c53705d78e0344e0c6a9fb7d29f707c068adec28c17723225f0fba495f6ecd6b6a379c3472665beaa8152cf3ee69b619428f5e38c874bc9b648a5c00b844288a46c4996108d3ebf3c1f43b8cb327d04a59ea5c108e76117c487a9b82f93cf928738bce6570655 -c8284c1ab062a0d0ff59bcb818c10920ee12ecfc4c628791d690bd5aaa84a9cc172db8a77a6139640968953b11462225d2c980826a017fb1260569859a2938e2df25f5afbd789e8c2edf0acc71e5cb2cf082afdbc5b4a1f8262df03fac03a2b05f67ab51acf7fcbd9e48d07fe439dc14b0d082d44b0b761d76bfb17a7bb9b785 -ebdb28743e4d9393c2dccf2402595e183fc6888fda052ffd2cd7b6198f09be48f1377712f042a63eb1cfedd9580099ca32d4a61d32b5945557ef67d9950d195009a4195167338243c83cf66bb24086655741fa93c99d3ab51b36ad100e02299926a272d56ea1a1e9e3a5b6ffd8e8a64abf5416fb09d409193319abe153409d8d -d65eb3f296ca96032658f0770215e613015268edbf6c29a95809f565029fbf9bc198cd69d0cadfaaea3105914a0fb42e909108417b0c429eebd2dab7833a3a840dd477de79e8e0a293fbb0a852522075dc5136e6c11cbfb0b17d55c0a7efc5bfc72e4b4b388eec6aaa0d0faee88dfd94d5d894f1835646470eff1814bbf139e5 -c05e541401f5c14ebf63bd8b9d8fa9634438e7fb90abd491f818d98000e0ffbd3452f77ebc328e2be0449f41d2c6c5bdde140ff58dfd1574e9720395d703fe10ab0cab8bf3d3ee0bf1f733dc5fd34e0da04ca61dbb977a83e27f09b23686daa5f094adfb78651907dfbd1ce6a6f18c54d1556292e1f7f3e94d76147a89fc0f2d -ee4cdd912fa1bfbb9665235f0a06a7cba1a8419cdd12f8a994adb73f241e5bade29f12a1a1e4e81e5d3beb88a15ac2f38e8f55361355a777706812db82c73b6f332703a9f5a4fab39a3de4160b5db08ec30b7047b88091ed3c94140cb753eeff87303ecac29edd3ef2332a546c0b871cd1ded23f27b33852d5bc05fed9c34855 -e1064d22e161db40a96faa22fe4ba463b16a94d17307cdfce9d9c0b642c5d167f1caf1dd777d8623f8dd0a1e0beded6bd5944a0107b045cc4310e6550db18703179d67377af2736ae9ef32b8e625a31254213d2fb63c815a960f78c18cb678ef77aefc1dd3bec2a7bd3d2e976a76fa7a8a6514d1e5d18e55f3dfc09b9aed64ed -f6bf2537599214db59122973bfcec0e66a65341e7bd9fc04c24c9600956b6fc07477d954d1bca1c854469182c9b31e92f7d78179048cd423ffce6f9cbcc91a38b4af16ea03a8d15d2ff8e3412dd9427f9954ea20fbfdf1fcae506d5d732b14a2e0bee1d0f93668e71cd30ee6da165e77dc8935353063de550c8d72573b66f635 -cd6dfb24defa5b2b18cdef0eda2adf0e861869c77a9ef643e27d9d7a02f001e32fe9927c1068aa0b2ee6de142623b161158a02af1c5d49619453d69556bb8e4dbeb36aefd74cdfbe384924e4afff623e4f5ea764c41d65f2032ea5c15cbedf0beb93f852ad2181b4ba545ca1d87fa9d9fbc84d37ae6cc0270e38fabd4ad160bd -fec9e49cce336962d2617746705dfcdc39ddecc68edc64fd17ce44640aed8577882d1bacdcbd504647ecf987095d0a3dc4f5b8290141ac0ab7442b4bdfb78e80f3540a0b85946bf8496a0ad4bf0d204c3236524e6cc09ca68f23a341b31ae7bad457846b0a8c37d4b9e09f21c1db009dbafae366ac179b4d5885ba3f3486515d -f4cf8eb9f784a44c2acb080ad31a8cc9cbc2896ea56bdfee5796eb213b1c5c06538ae73f6b8f3542fcd35a890a247b4332d99a8d58ccc39c3d663cecf6b29cef3afbffbc58eccc3719e9413ae52631be34af052e851f28e5fba511e0c4dab5261e5efdeaf4c4de17c4cf2531963581e038c878b677a365300a377cc8a36c6e65 -c5aed2f3eaaa7996b9b4d936d94d5e73fe64bdaec3a3b2d569a59c030929d43ba23454e922c76bf3e122a0798f6120f87f35a5557ab785dc2afcec66fcae2bf2972872613b493c5b9628d6151ca970b6f8185025eb4d253be4b638d17600b5aee7661afa0e6f56dead3d2de75c6d4aa0c0e0bda945620b44df8cb41f05370ec5 -c101c7e5ac5a0c57db703d288230e7283bd8c9d46576411b6df847260851335e155e08770d9ef9c2ac27cd575860cb65fe85eaa89eabcecc69c0deb244b7fa824cb09763d151a23135bec7a26fde2107af92b10bd1994c65dd25ed9b433c382443987af8edb72527e1fcff85bc0a94ce6de34549ce57b2c74321ba3975a1c0fd -c8462781628fd6bb2c9f47406393ffdb3de02027d4bc6a4eb28ac3cb21140958cde30e5a6201ddfbb8a1f1d40789f439b295f46fe034e077969f895178324b9f23432053f19c0de921076739c9115b364f2c1ad3267b3281814d99b769b386b60f14a57dd47b4095e56b6f0e838467be9e42d208f5574f231acae151c2ff0cb5 -f37aa90dd2a3793e0089a89a0d26e05c38a73328a39e21bd94512b1d81a3804f180f98080230082cf34eac7a602d78c9e402e77a05eddfc6eae2a8ef68b219d93c21feff16e50cb51376ffdaa51b9a930a9b18528176db4ec0c0fc2a535a0eb2f82eb5a0c5b8928f199458796ca0d7b2541a275895c26048dee1f7ea89d61d15 -e47f1e715bd6328113e2353bfc797cb1a008bc12910747730ba17e7e3978763485a68d8a6ff3d116c89cf81bfbfb00bb8517d382f841089a688d33bfeb8ac83d6269ede3d04f831cd65fc9e176c5295b488cf4571e1269a33dc41b1f079b7c0c5981733d878a5785fb261779f529d09d6ce90e94988ac4e4308aa25734ba08ad -f3b54bb99708acbd6ad66450e54026cf28a3c958eb019bc18f429ce68c06afbd52f63f9769e5897718564aaff8e4771524badcfce709a67c6350b178f436f48bd5dd546f3de5d9cd2b68e0c9ede5e9f474703d1956e7d95af0c8bb8d75568b200acf5f6717193ae70c7646676481af3dc2be3c777e1932915f7d5614d0af1e45 -cc59d09c80ee1962acdbaa0443945b0120ea91d7b95ef6ed0d325df83a8c8efe9b022ca8670af6fca2e9f2f0d0454e6b5430a8233709b2a4611163ea979f14634341446b8be00f4dc7b1b6920db2cfbeb1a75861f3d38b373b03a35ec8270bafec241f226dec940003b52e47489835e46a79360c963363aa862e5a316cbe3bb5 -de3f7519b2e3a2538cd66e3b2ba8f5ee8e67961e89a5560f1e89a8576f425dd8c89ad8a74ff176d76483b75b91ecbde59764e9d477d051374e9276e8bf16e132b66b5f33ad93bdba3d3ce14957db94482bc0a1035be41ebed25002e0df2dea3ba33f0127be27eba5c425d1388f81a6b9d52f7393e51abb202a04a118fc9d6685 -fc107d5a74aae7288ceea89bc44c366784a36461f2af8005d1ff880089fd7190f5986de041a583341d8ff7aefa3da09bd36ed24c2ffecf1d0951ee1b34ebe1cf737e4836daa7a59fee6033372eade4c8b80540e6b3c6c0fd4606f6167fd9d355f6bf650990f5fb64b27b74fec2beb1e0d902c536e08d199dd47734f5b7843935 -e541479fa9d88a4bd4ca0f6b7f1f06c799a8c1e0eeb441ac7b8439f08fa1c6a947bdffa3e31c54ce678bb5ecffd40576fba60e365bcca77d479f9169ab9f2f1ccc8468d53bc7ef6f2a4b533e8c3c73e3ecccb686dcbacd448932f3f7fb68a2505aefea662f4b87f259afe07bca12cf37de5b0103b7df99c5bf85fcd72e2dbccd -da26fb8b8d311836ffd5db5064ab3390a02ec5d4f08b92f18dec3d14a458decf147268a65b5cf85cb809e30e6a69b032c3ed89cd6703d4a7523ffb5c7863762556ac0d23ef72d41b5fc3c701b603771d859712d20bf486808158b76e3c647f9919f2253093ee441d9be8f638c38ada2c7f5e28530141d8bb0fdf2192a023f0dd -e57694952565c980f833b0448ef58ec973a1a6e9f2b497bf0660785ec578ecf9d3011ac2b390639c74ba8ca9ebbef87963ee133babce7aef70d27715620572f857413e02701a1070b63868b483c6ebcf419d66e3aa41fba5c4b2130dbebb8977e20489a485ec415ebbac10b169c0b0f1d0c21a96c52c3a9cbc71ed008126b165 -d6247d1a9e2c712a162f0d894c7079d3a8beb96e25c62866b467164d1172e99b15b583ef5c26af9fccb964d15cc778e5bfeec1ed3e5713aa3c09ac3ab353ad6c57b91705f910e8e0efc2d68cf81d7d604853399f811ffedfc6da6030137b156dcddc026eea0af1f88602072a4c0f119717ad6fa98bcb6b78a31e89e6f2dff105 -c19831e7cffce0a3b135f9fe75c84df6accf140118c762dc8d7d24bbbd58d61b93f9e41d49581e7b27b1322d16cab0ad0f7ab9f6d4885a1d9532e9126e1a4a2c7316388549ad1084335054a19bd1cdf2e7828d529c2fe1fc4d764b31ac490f26047a1564aa419dd99c9144095e35650b47934f29fb49343702838630fd9b2605 -ca44e81c9b8fb87c9da389778ecc62b97f40d4f4a5a0a1c6644e7aafd454eec28d58e5674b03d4135c21feca01a3760d11bb919b63cb6721c94e99cb6b56de6e0a649589b88bb229847006ed55a18b344a4de9b175a2ba3739220e6c107662920307af9e1022c7335a0955ea358df0ada2ad3943680ba2e0852d6e3fc2264b25 -e0ebda026946f37448a80a6d6cddfebc8520f7336c499b18ae59daa4b9122f6591e19f47a8603b4efbda0c07b60f6aef095b4143394fe0055290ed3d3ee10bc224d0df624a735f08e1562efc8cc338d83cbe95d372898c0985e947d1d61a0fdad9ad8ced32ecc8de121e3c52033b6c606540e996241a981387f066209d8951e5 -c429ea9d461c269b00c787861ed26644469f9384884b028063f9b556d9ab8033f12e3df5e2ff8dc0206a2ed4060a9782b1124c7886227d49688bb433a3f7c050130aeae8c0cdde9b6d9cdb3b0d355382039241518bf44bc5320d0be029af33298ddfe35caa2cad8ca4c3938428561a33d67453d3d48d55964bc89ec16019d5d5 -fcc2f150a65b58649c0e7986e99703ba3ded0a3bf24c3a514388580a1c992b141fd974948aaed36ddfdbaacaa97890c55f5edb67cdd0e5c24a0af84d07602143fbdfcb751e6bc881b4899682c0b45ebb668ba9b86c8100fc1a4420190b51e832c42ef628be065efd668b93058d3c50f4187884f49714c99b9b81011165ea64fd -defd2f3aa104b433c09ac4e959331cc538e6857aac1b1d34abc204712d0a3e081eb43219f24c5ef2ac7991377497231fc35a504fd18bf370bff33f9518b1f6ebcf7ba527ddec3c27931a2534311b5af43b615369b2436f157ec9c4924a74388102d7d702efedce8a9e1513731c2eb4a498dd38ef3d48c2671bf0556febd61105 -d24cd7fc935c6649cc1c4016e9b434f99f8adcedcfb14c10d19460559b79604504ae630eba090a8e12dce804a98754dfe97d418f69faef31b36c9b84494a52799fd6f6554bbf00bf09c6ceb31d80c9e898585ba514db0da2d5406242ac6425da82f54b59116ad5a8667bbd36359ef615124aaf49eb013b12c8e73c95ef1754e5 -d8454d83397aeb2f95c2ef3f631b09aab13bee7e2ea80a60b23f9b62a16661ce173a4adfe7cd6add3574eaaa2e3fde776fae2512f896102efda5a5d7963b0cb0d24c64cad43df1a404fb45124985fd979ea12e3b8e04986dc79424aad069912399f9967819336ffddfcf59256d81c31287bc0f826259d7ae518f5b4c90bca635 -e5294125e579b5344bac95b5bacfad8a53033192761a264dbcb51cea719e9c25ca5777d647ae22590a3845bd525e431752718570492bb6a7aea199976a5d5f88389289ff8fa3353e1c28ca733bf509982a478433f0690a564ffb77abd035f3cb0e3c2dd9cfa27d0213bc9a564cd40421bd8553c08d9cdd2c798affe3ca61fa05 -d51665034d9ecae075b5608ca2418916d2ec4005282a8324e438aa40df2c4fbe78d339c45293945203845d3ddd9b5f1829c4b7c9f06932279015db0426e12074fe6922892d1accc23322bc6c559b6238ab81318e19f2b09f8743c84b95a873fe6e8aba102ece14ba72ec41336de899675a01bd97803e9dab17e8f5a039b5e8dd -f186114528ec964fa924e4d9ab4a8968543c4edce6b5804d36379c8598cf0cc805034bf8f9d56263998506670eea8719bb510d5ae42b56906cbbbdae35c1144052c937d208e88d4604ee9649efcc4a6bab36e5610f3dd430838947d2c45147098ca1700c642769e7259025793028677068e41afb9ce631593b93bd17ca7a8575 -f16e8d1a0917b9df4114fac8cf2793b05359e131206f02ac1ff291ba5528232ae94b0f6043184b6adc09628251e0ec605e68a9c1e1ed0f777496fc8903fafbc624206a7de1c8ad6faab3baa383e7baf8200d55a5af19ec1344410857f3c8ac8d2f3ead5c582215344e23dbeeb91c862fd3f2f2483eda9edc4f170175f6e95b1d -c338871392900e2f76e013b9f1da842dc7e7631f8198033fddd6e8eb8badf74b402e5deaf65d397e8adde339503a42b7c7e0f8ecff0e09dbc8d29c58650dd694004576ed197da2838536e3b4343d3ca0cd3b762ffb994343e546c9108cf4f143c602749daa477d46d2d55d3a34d666b0f4fb423c2d485615177fa71329bf22c5 -efb3426bb8d11a7e6fa89fe0cd868e1a58743794ddc94b08e8b187efd3a22080bdc0cde343724416e6a2200be91c1f020c2256aef6d66f661c87958c366574c0778aa225160bf2e5bb4297a3d9a22ebe313532b04fa2240f93568a07b1864632326bbf5bc9032709b9b219fe8ea3922fe113a2b772d9fb033a5163c9fd95c6f5 -ea0dd3767681178a62cf5d7503bcf8079b6498453c06fd462dcea80c475c400b6072887616efdd6892efc06503c78dbc0f1e77bfa67f34f3ccee38c1843423fc5f3be216fbf950a631d90191f9cd3a7fb8d0af712c48534a3651ac75b482e1e5f9b27c9125f08a30480d72a3a275b039c6cda359798d2e75fcab0dabc7378d55 -e7e12f4fac98c66c07c1e5bf04c07154e5f5718c51231e0d551a2995f207cb71ace535541d09024dfc68faa213cc95bc0a1b07bcf1101c623560a1f4ad1ec3722b746f202537267c69641d91500880b9ad9f44d07c991405a1d2fe51f5810d7ee081d4113e14654efdcdfcb5857830448b1af7dddac073c4728c798cf393b315 -ca0a6fc6aeb2c9b9d4298060834ddf9c91f3b4f5287a3dab4d6795955fcda75753baae06d7e73eff76a3a0372b90259d6f805e2a2c3aa6a368e08e8100acb1dc2aaa5126bc91ae8e3f15b8cd638fac50f772832b585b71adc258caa8c496ec6adea9b7b7a0ba2c39dd02df58d83ac79bb0dc80367c818948f056d655aff4bc8d -deb89fecf1aedaddcf0d635550756c7570c088063eb88c84fa9e4e5b5da2c7d2f76fea3959f771cdc05a8e1066267ad88dc348b69d6df1cdccd9538ed5049f63a58d8bfe3e28fbb0978f9aa1a300a4bbe9d07cb83f661b2d5fb2b3eb7be01eed03be859ea4eb5cce32d1fa3919966e1e56d388a9b860a446c4a5810aca2e2075 -fcf39e5ba24ad54f27b50091da98de1bd4799c605431a715acefd96fb8bf1513cfde5f593f22686274fcdaafdbbd97c08f02a8d76064fc3af31041459747de9ef4ca9ce18dc252dc8d61ada1350100ecb0b1f97d769ca8bf5b937d0383e930a4c24b68b7a1742472732efcf927b37245e82fd08162c25178d477b515d997b915 -d790dce9372e7ea1d2caee36f69e987301a1a7b1e52bb53f091a2961af1c324155d5f4be1df673285bef975c141e583cbc91f0404c2fd1d005b00ac8b08c5492b1ccea8976dfd1c571471b50c521869a85263989f9857ccfed16022ff08573c672fd29f37be59dd27e872ef5747f87b0a641bb6a8ab487adc41b900396090d35 -ef8f422500d4490352508c3e9435ae2bf8372edec93d6a850c0ecb2f23996556d3635b4e0bc13544481773cf1ddc2663c36c7b4d340a2fbb3356597eb60765f876f8c002ddedf606cb86756c16db077a5fff5646b117d21e83facfb7bad9366e2532051837a3ae753fe0d494c34835518a8c247ee2d2079259b72c2859b4e4d5 -d429f267e30c0de6826ce7f65f90ea8033c03ecfb5dd9b4b90ca47495ab5bb2752b681b4ffbacd304ecee282c922ccb042a41b462723275ac300c8b0ab2a8bd83c114b4f516497c662e8193a8bf54782998236538f41c0f5e6ab06182aec139a7494e1827c3b78d7bebcb07962bb8d1569ea0873c9c6318d3d1cc2c422b5a935 -eafe2313b84fb9e62849079d30c7574f14bc26f1b8fdd3f3d65a81508bc7b6a08a1d568c1f25246544b939f122b1cd0f87692f0c944774aaa8956cb3df84882f5c38eace27bf1c6a3eeb4ac172c9d226d540e7a77fa24cbe6c4c4c79e38d23038b0d517a17b4262905845c185ccadfc2f642752cd15bc48a4ece8eb5ef080d2d -f470db3a4ab8db8f77a9dee199005f9e8223821083326eb8e9aa412669d10c7e018159e8fd5ababa671c0c3403d7e381ad7786275a17e1ebf478c75f5e945b07d59eb7959e253731b3266dec6193a2240ecdefd82ba1af59829ad0b875724e87a9f166918bedfbfb60e6fbc871c4bf5dd0dba6c3c9d46b7d199569c85b14bb85 -c71f44dadd29e0dea2f5ff3fefc4dab4fe6fff677c82058da2321f5935b35fd5a241ba8760cff8c910732e798f5c1a2a7bfb728412daee252c20f764c818c7d4c07c971f4a60f0c1ba922dbccb419ae96c15e13bd99526a947783b68ac247532087709a6b5c42e58a6f1493b5f418d5d41b0163441cd6d4224cc762767b76c85 -c4c55b788b5ad843666d57cd124ce4c9d3b0ab6f4074fff4bf2f77a293f35693457309f86e6cd9a3351609672a5b7b839ebd4354d565a44911cdca108b95d5f4d51ee45bc5a2facc0579424264ed19365de0a50915fd5f4a8bd8b8cea7df39226f10838e84f39383927b5385c4317016f4946f7ba1c1aea81d86431caf3edb4d -f8b46dd21201e8903bbc4c4fe61b97aa663c3002aeb8434a6fee34b462a781fc99f0a483cbe9d0f20bffded09611706e81e8c2c7070a58c31acf85a65830d9b6b51bf0e807aca1d291143c26b35be69db73ed5589ef2be4d483f97197a5b8ec3131bdef4675ef7be3aee533ba6bc1330cc6d2fcef3dcaba336dfae59a4e1f725 -f03b62129d41a09715c112d11c49642309f96a429af38086aeadf7c9e8d53bf487f48ae8cda37ea64f62132467f4a0ad6cfcfc6ada4f89d4c48f76d5f3f283bfc2076bfc7f757d94bfb152bf06a336f98a4ea411af5aa068dbf8e6ca2ee9d80ba2e48fe71bbe6ae886d3bcdcdfbfd73653ce43f963435181a9cc79e0b27a02e5 -d861169853e13e90282dfdccb3d9aaeb10c2c4e996ba1893937e2aa701a56cc27ae905aa733759f008aa1c0b67f6f2a01ba176ea222b7d496a5769250c343c3e7fd0489b683684efb061f35caca1725e01ecbb4b4d3b1d83320007fc66cbf040ea0a6aca3c5f2a88f35941ba7724c72903597aa621e97d7e09c8965403e1bec5 -d9acf96b15169b736c44d9a12d7e987e2c2e2982f2aaf5a446cb063e5d911b1ae053ff07913ed7c521d30e1f07534d223c8bd2b50344396e839c9479adbd23c196f01c166d7eb2906154b3584ffd365bab7164c193a5691a5047563357026f2b404e17beba02b1b000d9e66562714413ac53d12c84969e89f014175ba27d8d25 -f7b94f600362ca592424d0476ec8b022bab10653d3602273e3ea8ac58325db414f451b82c9722803ef553d0de850c1b8c230accfc51d1b759113e2bdf16d16e8e97b46a25980015dfdb90918dc3f3bd36fbb68b7954edf991bce1c291a564259cf642531175b52be6036fb8e962dc3d8435ee4d0baedfe8451355b3164a3391d -ca0ee7ed1ca5bf9222afed87fcb7c71ce8e73addaab1d3d8b6a22f00d0f4ede8b3f3132210995fa34fd85548740079313837fe8eb8f2fddc65f9de71031af83eb1aa6d8bdccc63a07c932b8c0b1d447bb4278be412e68da81b32ab8c38a9c4d8183fd89c16be206ce26c464065166c3560c27b931fb321ac06322909b5f370c5 -c3e5321f70946d1e3165628be877b8b281555e2911dcd721546811d082ebf023c7a745a119a40047e10715b5214129e9d29fcb2d7743331fcd43b6583696e58cd388892131fce98ec1c5b470492b37ce923a74e27994b147e5ee42ae3827165a4e7e532d2b99d9d24c35af491b49665b89e4ca5039ff9d0e71288b4b8d40bfdd -d3c922f7e1e70137012dd1489d3c76e8d35a4a71a052ecd459a7df03403afd9a530e0b7f23bc500abda5a4ea51016626c17f410d85cc4ac798d1a264c94105b736b7b0c8b5503ec701ed80af25a8b2c341e861f8d0ff8f0a13fd01f0333a80e57e0ed6473edfb0a51b67cdbddcc6a28808b371add5151c5d5ce45426e0f6b5cd -fec3c5a877fccbedab3019571ca33cb89c2a2f15f7188b18e3833da5c015527f01e54d2306086ace38b05e2fd9e5bd8bd4a669850f86853719c05715e885ed8b07d01661e0ef7e59d16119542cf6fcf052d609b81b85a60ec50933251d83aacf39f268e4c3793a467674708068d24267678b550645229efdc6cd54acd7e2c14d -fc22a6303f3e5c1ff1c907aa267144458f742b0c2877cc0ac406826c4cc68fe13758b928f93b1dfb2af2f6d7f72ef79aee62f5976ff3fb36478f5958956463417e74e6d29dd438c1f5f6e20d22a046a662d442ddf89c45ca850ac31e4d90f1b4148ba7e9f509b95bb7b2127f50ee3ae67a637de417cbaad674d9c9ab960d654d -c5e7d7d8bd4eee2149c6c8f40ba59f1cc8231f7ba294e6d5b7b4b23ff8a824cb1d806eadb5d3be8444289b12a4e1622499db5bdc7ce400e60aa21c7c8180caa399b036e388e1b777a272174604714c5944fca044d6085665eefe70ee6bf2cc00c9b388f1cb96983bd3bef01474714c89b24cacbf91a8ffb05b1ae9c4a4188bc5 -d948d43d26093a2ba551b0b2e23666c807e127b9dfbc43544e28d7eb650f537f66f7c0818564c960ad708ec73b7b9bc5bb698f1923a76e16d1694e9ebb4c9bd7930a951feb570fc9ae1ee7c6da44661e3d42d6e61bffdc063db904c70c23f91d690f91a80678996dad357e934ac2d6a7d6465b2f2cb1b426a9f49c58da5527ed -c05c527b0d5fa435fbaeec6762d909b72b29a5a9e78d723e01a27d3e279a69900a4befaf68f5faa93e1ada0807c692090bef24ebb7fa5592e6a6f914d16e928dd319559947609b39857f31e72ddd5d60fee1b05dfe8ba63ca3964bca4f5a4b713ff38117be91e0c99662de63068322e462f6e5c26728edfd1f2ad6fc9b0e7bf5 -cf63801c085a59629b4cc9ff4a84e8c591b78637935e74f2a0153b168af7319393080d5628a9f42e3d7e2c3f81abdbdf0e47c0803144323e40b67fafaf580c44a56361e140d9f2d7dd5101e733b6225dee687cd695899d1f66d5bf6aea44942e31050de4d15c1e575f9704a5e583cd9ff6bc255a1775a5c1fe2929edafacf265 -ee662270fbeeff37339f9531cb3cf368439d8965d87eb53a6db314e5326bcc25a8380ff08900df663bd18d9f955d05743d7b3689120df9bff9e2cf5d2576e5f8755e30daaab8f923d9f7d623342469d84e649c47596d4b58d10022c0d2fe06f1dd27708dddd8d8375e32f8f147e293832ee60528eb4e7b3dd57a715f9327ab7d -ce0a029939cda5b28090cd0a778c5542a424f9c82daa501da76aff59fa8ba8ec2c160dcf87e0a553b29ee948c66da6979d1ecbc7b37c91a89860bcbc543d46587c5b1b992e490d9c2d813d0983e93e396baa79dd4105960c30a75ad3492b873320cb4b3442e8d6355491388b6d59153b4da754a6725065607e6126dfdca4e27d -f2e87e164154e1daf3e72ec783ca1f8a5df3354fcb358ae29a4166ef64129764ad1aa1f33fcd59a3c86bcaab4b5f5b38395761539995a03fbeb491ed66cfaa68876b8ec1a0a079a127e14f82d866eee6f9a8077700c74855044f95a4ba1ee7c2021c7a642c1a2e734f8dd6af7fa47445b8c68a7730976be70388b737b7e374dd -f968866268344e69654fc79a607be13aa6407de096255f75476165aa384c674f795fa02a5ef8f19304025015baef3a7ee33513dc9912d512df4f7beb23140c011ed78a0acd2338c6ccd0eb1db4c1d33d165a168755c55f58462ba874d436d96e841eb0a5d00a5fa230db14462f03749a45a38ecaa9c26caee2965b3b2927aebd -e783c7deda612f1caefa7b7064bf23a0da09d2ae09d76d3841171b772dc8968ba9e53ad2c2887999268cf9760afb9233f8b9037063106453adaa744ffe6fb9509cdae6a1bc15f4f771b6c602d68d1a28be70c8a160d58b9d289d8347c5616936b63c866e7e5d6bf2b0143e0b6581ed2e2b0e564c7ae20425fcb18e4ae46665a5 -d978ffc21493198cfe598fc3d21d66b33b9c2bf692ebad110425c5f048b983aca82ddd6205a96ea5a61f42e1aa062c7b274635dd3d464cc49b63c7b35639af93ffa1c1e0b05b7303abdc7f25934decfebaed85a9575dd1369097211306bd9cf032a6cfdaebac6cd109945b7d56f32a1af5b9863e5a6c69300f87144b92db6b7d -d0422b9bdd9a3edb95cb89d1eea6ca34b686a61a8b6512c8b1fe1189a3cceb7734b8482ae1a4e2e00f2c567dccdf1a6079ba89d0116aa2a70c8b53f0aee2b00fc9e93953bbaa090b4e4ed7a8c41523cb7b05d44c267994e1928eba2422f4befd5ebb730b7e544b0d51ba4052b8724bf16769114a43dcb11b02feea881d99f705 -ebe131fa523c7ed17578e2e5823da2c3b192ac207dcd0d146ebcf735dbd17459132dc47b3d16950c395660957819d219b0d1e0cca9dc6ccda229a51247ab1112cbdcbfcdaff75027336d38fba3ca3b74b9a8cee891ebf6d08b96f33d77730149e52e8c8a38900cbd971cc54987a44ce90986f2e379eb9c6a20969694ae39905d -c3a99a38a01217be7d6eeb8e2eaa56c4a43feac43006201a3f8328de13398f452e051702cce7292789b98f122ec96cb82f38fee6ff5d92bfb420e8ed260ccace5eea797479a20fb214fd20449b012c178480a35d4320046ad3889f1ae3807a33ce322ebc5f6ab1bc8f39e05231db9e61d97f5aea8bc892d32bb98ef692689eed -f5ad28c75028eca2c03a38cdfac27e29cb9c4b99a15571a6c1342a9ed21e954f5c1f442b38324ac13951f883991d85c7fd03821a45dccfbf076c03114638af9fa416a2c71b12973019d164b04993ad85102a9db85f8bee7b86df5ad9fdd9cb89dfb07e60d48c0ffdf68a86760c77dc670a1b3b62d7886e4ea96f2ff88878db9d -cff89d75be266af6afb6b9eea3e0a02825b85cacb908c9a4911be00f3b7c8c5370c05c0846979c7fa9b2b18fcea91703b6be71912927d49250ad9237a59968409ca55cbc08ebc54ef98338c59b8600ff687733e4178dd09b49bc9570c86e405a1f137a888c902d729cbab861ed5f965e1e50c9d8c3b426d62185900429a22125 -eb8936415ee74a4aeb09de49a0d7f4fbdf19223bacacfbaedb5c51c0c8d52f6c061c606060d3f9119a4fdb7b4f17b4a37b624392377ab9f81d769eb45495272fe4bbab7d110c3fe7d86d1ac2d91753df8915a8161d2f7db2378e886dfc0fe44f49c4fa6bd601c572423a37f5f9c3f40ee5c04c8f6cb5452273c0d2cb4040f0dd -f0ce9f411618305ba4a296cd22040713246e2f3ea1f723d2e2643b9fc536a864458b48e388e542c360bf5917aaabfb2cf1ce1e30d275ffee99137dd3317e19a2c534a6113e3d89a6665e55902ac1f119a0ebd3390ede13cd04792c89d349fee7c66f17b30e38f78811c81d907e275167b5c3000e58be7bda033c500a172d889d -f7745942de25894a96defe06117eee661fe59b466be237cc66b0e3854cb6d3b9e97c8b52e216458c6e9bfe9303299ac6294f2d62000a964b128742616a726c89505f1d2f493a68e0ec22b80a03e0e478bddd2760b474072490ef5dffa6fc01410a7fd4cbde2aa34b82172deac580cf3c3ee442a3a096597dcd8eeefc285b0a4d -d32dd28cc369ac18b8a088e49062c13f8a344b83cf354849104450a743b6adcd27ae6c321068f49a0334aef4896d83df1997b865f658486421ad0c5773652236a07a8846ec484eea7830c30884e7c20c35d035bbb4b47a112cfda9ba84db9b3dbb0b0edde6d21f8022f5979b3dc441245e38bc47b817ee3b0be50668f8b45cb5 -e26f4e6b3f3588b49a92dbdcdb3e5056703af21b7cfb521d62eb318105df1d3ffa8001629da6f5d3429dd767016ab9707c009a4de738b74401ad916a4f364b10abaa44471b1f16fca5c12a5bb31b6a54f1431411b2cba27d762a6914a6d13b52c42b3ef5838cbd502852bd490fc9951505f81e8dd6f10270861d091103ad5b85 -d640540fe9113341d00aecb996e15420c007a758094e6e89d05f80c2fdc165bd75475286235f5bdd659227c55bb901c2e55724c2af4baf1b989c71cd46393badb590c58b682f0e7f0ba01359232b21aa0fd2cf1a8c71be06739f1237a7de275ab4fe4463db572bffb219e2fd11b8aae37d00227dd0ed1fc060f1613d98d8821d -dc86ed947a567f74bf4f8c8b2f32654a0efff484437a049772e6817787ddbdbea1ccf4d61ae351773d92078f2e2fc788b6556da2955203b2184b0947449ff778359a1fb91bed9aa62885e5c4e3f7a359185a6816c95be610ff82a3d528cbad1775884501b5d5d200303249deb845a6656d066182cc893f0bab7523a5f8ab8185 -eea1ee526723cd0ecc2e218d71fe39bf912afc094eaf6acb4b3f2d76dc104cc9dc5a59cdf7a18493bd90462eecf9223ebadd096d07ea4f03d680f38afe3d60eb8059ec466294580ea9ccb81dcbe840fbf7b65b8d15d624db9b0b9c84d0c3d2549e3782fb1bef4e264bb3bc2d1664c140b4854f513befc9d48b9c13603539220d -e12113c4525a41a9f3858d26a91cd61061bf7976f1090934eaad962220e176519cd512c103cd4b655c87f83dbcb274be6dfcae131b017ea0c3df253bd048b8498256d2cc862eeb4a2d957d9f3c6c746bb2e7192c116efaf3e3ffde5af9d129ee65f3ae419c6130693113f3be41af7f8e2d6832aeafd2647544eee1e6b8aa816d -dbb906ff42edf909c7c1f3c280b607743049440761021499a03a9992de6ec17bc32458e7d697dba61f747d0ce110a24c710d00c597316f2d079f1ec9de3f6225f3940286f4be61fce0ee9649460ad389423a25922015482a6da7524bc65280bb0de9f72c81e459d40706d318632d4a151be0f8ae78239de005ff723ad4d88abd -c82ae8d45b214bd7cde7be84140b8f80b3180966c4b154c6c7d77b94667a3e710ea5dce00ed4a048a8f541cd61d487d014d97c0da902c2ae55a8e8eaca23bb23dea15c68a9ef146d08de1cf61dc589203acaa42df4e1941cbad3d338b56091117af1c9a23904c3b4b7832482310c0e2f9261b1b703e3324418972d903881e135 -c0a6505471e66553d80b32defa0199a97d57b22af9ce17e2a2bb7eaa9a0ff64e76a5d4e05a982d51b8db2e9941480de002035f3ef566f10bbc035b799c03ec58735e4f590cbdb14388b84328d33c53844b757b4ca44dc3caffd9ba8fd6b134da06e0d4c9d8abc88ed43808d73d2b2fd4c6d4e8cd70f91b22ee246e2ffcecc24d -c130266cd4a28926e2f8764efdc55e59cf3e936c5b244226b728702fdf5be181ef9cdf6b4d2fc7046236a741b7b9f7a7c61133493bf6b8578f990a80e68d693fd07e7330644b13a35bb2041d7a0d83a0ff31ce8382d5e197f22826930e7d1eb99bc2ac85f7036c54288e64bbaf60b2460a58c962b028a4b9dba26a9ea65eb54d -ec0a61da39b2b0af9b1b04600ca6f3cfd5d1ccae3970f641999e2e04081c2edac59ad2e25c9bc2babea9afdaefa585b9bb094945d75c2651085e67350c7f89cbd1618129ffcd7f683a10d2de3bc76420436f23967b29d00c613e61b1950384d361170a8d6207c05fa6015cfbc78d4de334a372a94c2372232d56a14c095078ed -d95927e4875a12ab9e97d72bbe3792ffc100a88abb4e665b3de5531f6da18497956af30795a8219bf05ccab568333528059c85e1e1c43b28811838fbb19e4568a7adcbe7111a260562b7feb89e9d4e8c23cc4781004558618caf3984cf6b1c0f0fd56533713b855781ab6520e30e1c33ad34cd9fb192d302acc396f65ebfd82d -c32682f151c85652f533554a95f4c5d1063c73750be7adc84cf437ab072fb835f42fa4cfb3777827d22ef6ad96d3e5ad2a3022464a9be7d861b0f0815e3f678274bf86c4ec012082b46a49500f92cb7db69df1da1b9fcd2cf4d47ea28d6581adefa9aac478781f74ac7afa1ba709baada5d0a55b84446b849331bd450b9143ad -d639fb704008e9fe6288f4a3c1b4e4bb255af723f5a222eb6b17dc79eeb882254c07634d9995fbb231e6713863185102194217c72011a1aef91db92d101dbd0780f23f8e281156168552e2fd7910c5d31510ae75564709c6ef3ca59f0af02de59d7b6b413b31fb17c41d9e948ccd2d4b1d0ea9ed58cd2cb64eea4ccdfa7a591d -ff34ca1e9b2c4807f0c9d8940074d34ec8902310de7223053d8902f3643800ac916eb801f405c6ca4c3596e3545d0f6b388c4229b19638b82057826bdbeb1c65c7557848ad894b30e336eb812a0ffbf33fbeb42ed744c7199092d45178444093d12343937e3c356bc1eed086a2a6097bc99b1a18e5d3386e6410d451c52ac9d5 -fa3cedabf5c5865d9609117f32c1195a35f1f66144f2d8b7bc45f93d03718b9feb4b3bb324420c274de0adf7538d003d689de88f19e710e0774f6c9d02bf1e3f4ac646c1f2b05a2144f5bfb6bff0b9421338e01911c39d58593a13d5f09488dc0517cc49a94cf0e7efe39069ae5ea553efad66f049a3a1484bd6551a98a2c4e5 -c2a7edbcaa3c4b5539b1667c612d3aa11696347b7574722a520a30336d75f3b51cfa7bd8bcc94f393beb73cc34c27d7619d851f2b8c1738c87e7d502c2dc1fd979e66ee2561a92281f4d100a4a3a89179cde82303385dcc4c9f048f399237545c526e03093a55fd90a35b433ff86c635041674490876a0ee3407e13a4432473d -f46990850241249bbb7cdd181bf26bfed6858152d0a2f3a07e06015d3741fe9079527c881465364f8dbdc7ea9df72e3bc86b1534a1b9a9e9b0db457753cf70ea06a3440bd1459554e247bbe119e789d2e0f4857aff24f410a7194521dac382a81ce89040601cda6ceb76b96267ea9063777b79b32712e1a1ff0f8683745a576d -d585d7c8a09e54f83b1a6ea405693006b875d985f01d9ada9d414a44aed16c2759609706a07e926d3c903ff6abaebbe89855f4784de2975096f249508d4a3c2fe55f85a5d662ee4a48b2c21e9f862056bc6b0a802c5130ac4fedfef94bf402988fa29bf125cb933ae316dfd157bb1b4d56c12ac3f5ce2839e41cd8a80c3db045 -c97bc84c797cc5ce3c2be229b0746bc45fab70f26b59cdd7cf7a5a0b96cb7c1e5e6b97d743ff7acbe33f2356a65f5a885d7b0364474e2c72bc9d21099282bec72d23ff3812c2dab68b7687c8b4a49fc6c714dc935f69cb3444430ae719cb3aa72bc80eefddabded582da7098252dd8baf3b60bc3133c2dcb99e58b6ce9ae77cd -ea3d3fbacc5209a15b9321aea7b43727165f34b45fdc06169ca953dedb9b56a3f71fcee48217c54cabb6813e36957ca4453019496ffd665109ce2096dbb6ef049d7c47bcbf461532069522caf053940df12971d7748caed05e9e654110fb97d199683769a8e2dc7666b9bed501c9bc93b901334fccde993d646f9f2ebaa0b435 -ea860c75b83bb20a0ac27531c1ebfadba1157f1f398d39c0c1bb0d6ab81ef2889a400e89341712ae52a4e0e155dd2e2db41863330b02bf198793872565b515217b33909de3f12de190cddcab5ba8ee70af4f29c86273a62efe6fff135da9240667bf7d2ad03ec6bfa0e691967d56da9bd3c57ff9790ca2e905c86fa142623cbd -eaf4e7490624a6174c26558a38fb59f80fd1e0998f4a6ab68a2b02ff3a81905576bc378f6d3d413926888c4067959b51f0725f854fbad6213f7c99416cc413dfd90c814e11fdcf373864a2197bbffa3d1f30a79f008b90bb566a001943d37dc135eef8d10448218e72e2d95a7c02ae89690a6b1970b7f6edbd47419888210aad -c67db1f755259c3e502629df50c9e52e55a8911d237797c614b8e63908e5d3c1f13f9fbef4a6f54b56d8db3ee99076bb01a34225c31e316ab65de36beb85753384bc8979f19e54692d4312e0a1ea82abfdf1fde7963f05d811600311866becc994a1909603d29d90c6bee021b06952c1ea7b99d3ac4bfd0023bc88698651b415 -ed2741be0f80765dcbaaa2df41b383b3a66241743a2828fb34e2f941ff6c507d6a7dbe8706cb1208afba66b83df09562a52579c54d8889220d44856c78242722f1510181313931892ef29dad2c3e5938ce3e74ea24d3ab3a7275eac299809242a1ac425984e0520f03991342fba98292e672d99a9d0c063904428badb005eb95 -ca82695fa012d5e6f3c664b23458fd5daf95c94b4299f936f8b70b6bd79ef243b1b9f16443f5f8945fb01eb0beee10c2bcca4225e6076ae9f5576168826442d4318afcbe7be329b30f0b4becc72832534fafb6440998f31acb31258673a9d202d5dc5e1ac0e5f282c61eada2b6f592aa2393db06bcfcb8166f3439e01e62545d -fda28487fb44a1cc26896298f6ef49d609087687498713f41befbbf6ce0ddee25a61acce094feb2d291225b00be8fd93ee8ddfce42999f29b149cb00f36eaaa3d379e9802f70c3ff58858acab0ed34bb9050ceb4281832a194831bf82d860e27474fdbb2f7b66eca12307dc685bdaf34b623eafabe885c269bcd6c21a52ef0a5 -d8447ae18777fa8b39f9077b58e056dc22330314c427e6e8d13fc6a3610a2c1286246a724fb99312e7f915d891101b1d8815582165178d55bd4a2c367c24e78ab21b13a8b9cf3ff67541fe69049948b567fb2f2f2bd4e7c711693dc0b6ed7ead617a447fb5b5bc567f53be6bb0fa097eab097d91077fd6ed1f02db4ac96575bd -ef71e9bee6899aabd27cf4ab2db213d0ee49214291d073415a2663e370d01fa741495af57193e52c58ea3883b2a13b79d85c68ed4032a0fe96e5c005df2b0982892f1d6c1c425c04063122ce306bd1a194b7b5a1366c2ec673608c56299f521f0c3493e13bed9df1c462e36f3a0854ce33926d532a3c05af710f5fdb65d36cfd -e5359c379e60c97dcdafe5a336aaa0db6659cb8f806a5195c7e13211b396324e831aacbb8691146ec906a96ba3f66cca0c8ebbdab0af793b24c94081dbc19d8f1ee6625ddd16103bf49804fe41525c839f47270d6f1bb9930f46063b593d48145c1982a40cc78421277ffa9b134997b0a02c8af22a51d0c83333433b3fc36ba5 -ee72e1aa567796208b5d8e66fedd555d5755d9c353a5d1979d0bafe0201ada1abf26e9993e2d1a20fa6a1f374d8ef39f007120099df38d6481584e6c6df24d31637d5a4d5c92f8496335ae00a3c7a5b713ee5ff12d9c4dc48e02c8aff9a308592c8ed3f66c1128481059266c4f852540a1393139f7a2d8d4ba6548505af6f135 -d95444b1c9c3d55cfd17e0348d0b59c73d95a44621d30d3a6fca261a8a1a4fcca9c3e4c218b1a88c2aade830d7e74b558ca56446147f2546fc50a485fdfedc0e258378ec1364edcd99a44d4c203b01db566b20528da4c3ccf4593d388fdd27d6400fc1e05bcafb03ba5b59d0cf3edfc66c172a6d79d50c9f6efd6e32bea5b0e5 -f409c82f06463b8a59238727edc9d64a88747a76a4d8a0950533a63664e5c231c842557172601b388f3566d8ced5ee0dcd34eac2d1fa16ba38efa15734ee29e4e42ac00fcca1a9919b4c7965c7be46a72bb6a3a4539fc9fa9f9fd3732786ade282a4fd6b724c2638406b97e501abc5fef1f34b9a4117b54cbb96212cfb0d154d -ee71503445dc30a2e629e73523d04c9afb0ac5bf8c93dbdb701b6d4f95faf5f619aeca3cf32aa52d7c441043c6d08a46f20ccce3b63348fef6e5c5ea655a25364ec3cb997c57d88448b1eae83f65694df426c4b265680b8035a589f309bd1bdcd77615cf00fd98f989b2c1f68253959ff6e45e53524b49a6b81500c3b1975e7d -e8e6b89a01bb23b1a1e501e5cd91b8d7fd676e3b4c82045b2f3403893a44cd2beb9d1e72ea33ac197edf6838c445aa924e0174a83ef14074be38957f494f7aaef38cbd6b42ba7a3a3e4e570f0c9fbd0b9f0876c12f66dc7f2806341851997d623afdf8e1885126cf64e6614119fd9096da72f8bc765e87cdde95f796e03ac72d -f28d5a3c2f7f68fb0fa309881612184933794a4e09b4a914d0e15962ba28ecdd3cf032cc79ea4edc98f96a4d97f9ebe1a42f858c58db0a88470be1d9a2f15a3899bf7ad8703425ab51d37fc186578bdb269fbe91c83c99a5763e433ae85a91559c177303a06655300952f27438adf16897504c23e334f2ad0b9574714ff525ad -c36710875e7737d6163161d4aa394fc388baccf567a9a694cfff56728f5a5a84818d4b4c2a2c393cc92c4e59972980407221c75bd06253d1ea5883729fca08ed04a37e2fdae1d71c00ce3e5ec49ea516e9a43ed50dc130f9ca82a93c735fcd9b953893ad2a2f5dce201db07f5625fd0c09cf357201cdd071cdb442b99ee65635 -d9fd2b8e5a92de3cac06a9b941af8f6734c834fc586ff9664332272e5df184d6b0dadba9e1d75800bfe679a15caf98a340b68f1ad405cb1b92e1a0b5f176419e72874d162ce0966a24c15bd67d416230b07daec55774e40e130f5b59ad8cd81880a15659e30eb7c23caa315c4ddb1f7fb4d622b9b07900b28cb2c8850a9ead5d -f858fff7b6d38f73bbc3118f1a67e787abc04c759a97dd8ab894f1f4c70cb7deedc9d31f642af1deee7043deb93ffbb3cb2a50cfbc7de9345a66023578f8e168687fb8e54374cbc48b89d41a0c8ddd5136f2ba3119baf0b101d462db1f7d6adcef017b6ce12af71b3d83d36871836309ece1d2dd2316a7a4165a0c4936e4cf2d -c411fd6fae60edfaf2f378edc643faf350c7d5bd8d3b14ccc5024fdb2a720db6da39aeeecd2ce1a2abf2a1b2bde9a9e734f641bc1fbaaecf4eb979cdef4c72a3b735073ec40790e1b264519c00fcab517bb14e65721d5ed8e49af4d45cc272f98f9ddab8126322b0ed77f9dc830b33d3c0d00f7c989f000f5614f7e2b7a2dc7d -cdee1cecd0e500ef3a24913c8b4411fa864510348618d0497a27fd62406aa5e19256fc8c28a5865e2efb24b6e56280ace90eef672e2aa250355e6272218b50ff24351f52a9b6a95f3fd302da49668760566314b82dc4bd36641e52c42622fa3b99b0b6e080d2a6873c666757a809beb30675014a61ad558e02dbbbc931329735 -e43ab2cb35c4b7db2c89d68b1caa3a51e5939c423a7cb3cf907c66cb0dc17799a936cfdc74f6a1aa1ea1ea7b74640105152803015ca083207807ce0b3d27310689a15a59f5124bad92b0d7d38d81868bd8415f2ce12fd6dbdfae8345e30e2d3e481f736a9bbb0348c09c521b5a95595485e5db301d6398ff04a9dab2e17097a5 -d4b4aa3594a5a3764e984f8cf743bb10a9054ae512660fa39595e09b3fdaafdcfb25d814bf548fe219a3c932b85d1d05b6bac54704ae7b8d01b126c09463678752596df2eb1a49681d4eac1620718ffa9e1b383639f6a7e02bae1858ba20782b65b34a2873a7b20790699b219f6814edad9a70e02aa2241944fb548edcd38f7d -c424e212cd8caf79d592aba373255d335bb58dd95175bad04c404df2f49004585dec10629ffb6cdeed6a2b96f00e6a943533c05571b10d0f977f5ad6a63fdfd57822e7c9d83f7579cfcabdc57646dadeeb7e774272a2fa5739f9ee189d05ec7cae84894550e6b62cbf5364a9f125f23e6c66c4d6387179a480c8ca19a61a3405 -e35bbcf0eb6f2fd2bb055cddb9a62008bd11c72fe35f75f2f8dbd4e89549cea92ec4b559721751a938c7b491a79e7341db2f3fc9ad7210199fc1fb43a2d79964a7526a1f22130cb232fd006e85efbc33b03a437fc0806431a5e55fc3b738457c0fb9c2ed38d5a87382573b10202404e71dda4ee520568e860a2c5daeabf94d2d -fad58a9cbffe7e58a6fa508dc7fa68c3d16afb32593c74b324a96953e0a28c855cbd40e0c4edb5b255c3ccd3ebd5dfa03ff16afd76cf910cb513ffcb5103b87728d1d9f46c81f2eb908b4c35321aa78df4b4aebf26aa8ba4d7d9f4dc7817c5835a5cc1f06472467ac0c329952312829ce154002908a0312397d2001b22e55a05 -c2cc23eec815b9500fab0310f2ad42967b1d3a8a2ae30dc2e0b0756f03d15b986dbd05ae733b374e687d4c1ac71afb3062a0802016cf2f861c138aaa082570be4e3b9a3d8c3ea9d432375ce5672eda0d9264588ad178679401b1fbe8d39cc6d60866e7f7e672d96683069ffffae0fd0f7194b73552c2d37144d8da4d8f0347f5 -df830ac28a2ceb86de86c778400c44620fbca0ea597f2be44d138bab5d40d89ce5d802ae39b07186ce350ba22c05fb614af5d5e3e8796623ba2838bf8162bbfb336e159f9236ec9a8164cf7c59a59fe1309a4d740b337a4a0cc9d8a9d961d10e2a3e5d2f077a33edfe89721c2c53b238e6518d2d2104f2ccf3351bf73452ba0d -c390d2db5531bf90d8a92cbd10a58a255ef6c8d726b7c805479a5fcb0a805458da99c0bc9123aec25e4bbb483d7d2ab14c879ef3a278fe446c03235fdbc83c85779297db3ff92ddcc4c5a6f6372e924a5d24f87528f87f1f6cb0515bec718ec8b2f1dd334a48d94ba766664ef0c68b9d4edc80ab067e0b642555cee16492c735 -e9b097742abf5024caac24091c2c5890cb2ae2fd5e9c7128c961d19f4c5fad4bd763dcbf3c646ea3a1ac8d816b673af4d6a488f2e40ec0100d154d6d3fbaffc444bc000255950ed13da1308bdb6a8ee6bb3468564637c3c205f77a3ad718d7e90f02c19b6e497781d8da8053733492dad5d55db1b7b84ce21260c85dfcf4dabd -c29aeecd959ee5a8028ab5bf1543d47d90947a355022ba3c72db9304a49d740e7a3174ed0f56818a8bdbe015f7e11d05ea8b03a8e43688dbe0d7816fe9cc7311c546ae34c29d304fd5442fe8586a89b78994d121b0be22077879c6781c44f124a3be54e2a6fd72482777d63033536b8c01cb069c7ae01f16f3fc76e568cc5bd5 -dcba67abd50cec07b4e84ff593f1e89b7e30b28d1ba0704549a0f1de7e23327a8c997079464f0cc81feb46e3465ec010632b9ad0a085a1bd2a5e8c9778934241c68bfca1c96e476548296c787372e8057e7ecdab83493619ad567019616a53c19818228420509728032d8618a8f35fbd901fbd0a4c294a2ead8968ead89a1195 -d33920afbba20c8705f47c812f31cb7b36c7dd5e88a00ac9f555a6f0dac9026c4dae15c219f2760ccd38c0127671e5a33f00211c81343835d8cd856c93e9ff3a6c5c61730a7f388f6aef7779350ba98316f795b684c60950a18e52855288d2e7575315a5ed17bd837e176b0020e0d47d9c50b668a73c893289d66f79bcaffc5d -dd4b3b5cd4c6c13f1d180f2ced8fd94eed6df632f0d6dc0c3a86b08c971daacdb45d96b2df9f1911c8486a06fdd64535d3fe012c63bfeaee833e2b6a220e00860fe9360c9813f59c13dc1037addc9eda6784ab2435400342364fdbce37baeffbf4fc4d876eb10d8f48a6604d85609eb172939f57584087ca911511371ebb43ed -f445fcfdaafc3b04890f3a9d893bf0bab976d6ea0ab6353496c92a35812577970a6f0169a2f2c88dda1f8db9e5a48f1c8bd97dd8dc271321d4a512fbc1c22f8d433ff4acf7f07913fe3dd61c8085f7fbf5e38c73cc0bcf7143c7e7940bf891e48bb25e85e4ed044e299fc73f8ae5cbb928c350db712af57e3206075c31d64dad -ddd27681c4e17b61668296dc2ec218f7745b0d22d93b15bfd665cd1e2341685d1e46c2aa7272a81d2d6e492c879ae6d5bcfd27bfec68f86991448db24eb323b1a9972403d716074cc0e6381f58a9c414b67b53b86a0d4e572d117e31e831eed78674b63d8b53d8aa689eb629cff0625c90053e7de0554f26325affcff31c2295 -ed16929a515a5c173259fc7119e5b958b26a2c061788e7602bdb74df932bf38eb4f2864e8165d404f4bff6d1f4a4fbd0706b840a71f36fbb97d7da21ea11cd258914e1ad3c91f480154e2dd0588a52d30bad58a63da178c980dac5dcfbf07930cb7032bc86d352634c042978640ba314ea678097b6ff6bcaa5e76b5714dc6c35 -f63fb957a8f763458e2591089ba4c4c729bf996617e81bcd911297228a6b2f4d5f60f605ff5efee7513ceadfbfd2e6548850689fe19dcd9967787beabf44400c90d6ffa22874f1d14fc0132f56be66b3d0c62acec6243fc34a876f16b8f5f71564a58bcdffe30455573ca1aefd3b9fc62886d1ab6456de66100bac61d0c24e35 -fcc63fa090af719d1a27b6345425d6685aec8b3b8dbddc2b02e274205c91c965aa6e17761e448480316712a25b33a36ac31d959492c29268ea3f10547f28e90cc8cb597016f1f126148398e21920ca71960481fce3f6ee4c8064bdba7ef49af62cf3cff00cc9ad475ab84619244475378066ef891155390ca589b75efa544385 -e6da32d30e3934c02eb23cb417025a288538ccce07e0d9bce4de00d9492720692be2a48e82ac9a25144c0ec9b4b141c77648c35884316b311080fb0796cab75cfb93933a2aa9310423a7b2ef94860783aa27f3061246a8c6bb2e2b40b69fac7fb617d24d1cd094abb1a1c7bb46460598e66bb539aa0fa499ebadf05e151716d5 -f7379a553d60d6e51a8f37f2d910d9dd5256655efdc891a708c6cb52033ea4689732905a5bb46cc4d3183e74708578e39b0c8630cc0fdf50e5355aafdf07b478f19584951c251fa72b93be1a3a3b744fc3c911b0847b089eae9dd73ff7050a0fefd4508f549c37790de86c87ef74bb53a29800fc64fbe7d365e7e708dea86a45 -e933766d7ca9db5dc66ff2ddc7f44542daf51232fb9ab413b1d31aaac02dbca7113c4ca874ebf599363ca99572e19a3fa57761cdcc600ac6d2f0e8dd8471ee7fd1b5584f201a480ded805af6dbf651f1bf1f06757a7fafec243c30ef5eb3d94958ad6d6b9687689cd578e383c3f6d8e3fc8981e83a91dbfdb2c4e5292382a42d -ed0f5d59bd470fe130096bd507795c809d261787ce73c77de9480d57985759d4909b19b5e248bfe6c75655beffff3a28aae22c017ca4c20ca4dbc81288542fc5b6acb4df489e7a3895749d21f2a13c0cc7fef538dc806576dbf816b529c3800eed0dca00e3e4cc022dc498f8095c7f62573daa7c00b6a049fe550b1d74a78e05 -d647d958769ca155b5f98f62fb98b28c48bc228f641b7f0a05ffa07c35a7413e29f35fb675b6e2580bc1e37f95eab82aa64317fdaa73924ce0970434002d70d1a08f84099d1b151df7623ca07bfe27b964f2ef9796d1e48c172c812e7c039484c16df56e289fa32f8069ea99a209b23efc383bade2006ae60521ef2f9e7c28b5 -c49923c0119e93216c2684dbbd9385f2c59c9a7e6330a44479a62da7db661ed2a36bc6c22fe5a0d21fca0f8e0f2d91a4c2a5c42f917f8e8b8d3e33ce97342b2081bc65eee931d2659c5d7b997e74bbd005b91d1353a3a4d05bfe6d680053092f27832c22776178bfacae0117fe6d80f42d5385c38e0fdef4e3b8cb33016c4fa5 -e588adcbdf57002875cc72def03f19e6c24059914c3a6055a7d67374a8ba3d339ffa72067c69343ad5dd11001e98054928cc39ce04b543ea737b1735682cb87a9b82963080a79946dbbaffac5271f905b7236c6215a456cdc3c5c40fb8bad8ce33e67c1113cbd9f889fc785888f50bbec30982fbcadbde934d72d44990b12f9d -d36621350931f1a0d1a8b1d215c643ba1b6f63a879789a7f5ee272f570e5cf0ec06c0700fa2521e5d5799e091967c54622534dde1c7dce3fe659569320fcbca304499286c3798bae6b70f64b72e18cb4ef5884de2103661257f61d327667f7f63ef4d63482e9ade53bfaf117662b65e46db4a2f3eb0829ee5363f53d2ff38695 -ce5e2ed6e0b9a7e749f48d031452c9c49b9760dd74e9cbb87a3e6d208cdc657dae6caa5218e0a1e6118080e8d2201d541e9cfd9fd518ea91c88cf18d27e484f0ffd0d9d04713e6a6325df1912ed4ef490d1f8223b884277a45c18d9157f8224f9bcb68d4458b79cf80911990b08b40962f84b5481d08b834ec2b80b81d93f2d5 -dd6ab77fdad44b520ad7796facc9fc57e52a6adf9dd7acaf00834418d871f64ac6f2a44d44578bf2e4c488b57becb233fc3d1367b21227c42f0cfe256ddac7712556a3b15c9185f60093d07835e98d03c82a3b9ad8ed338a2b54d49a6d5320454be8aa1c444cefca7eeff7c3854bef4685e8e56a7a537b7a3cd088953301652d -def3aadd465c6faffd363a9c360eacce5859476883c48dde4c8faac7dfd58a1ebfe2316b8771dd04553b78a11d2b4617797fddb541f1e440b61ac9d1097fe55f27be65736448206d0349d2cd95d8856bcc9b770472e8e8db83d3ef3b38b40b83ffb2eea7c0f7596911fa79b320e2add7c8336a71dc1a75e29d415ba0bcf24815 -ec4150c5b4a666343f6b2a831f368a7e0d0cc7f64473e521f539eece8ce65065fc2b9c1484dc692c7f4999e766e277f6fc6d1beed8c64d807cdc10a4ca6db1ac8141406768fb4cbac076d77d9d0555d95fb60f878996a366b099e59952657823304a566b4009952c37389482e8979a5cb0a6f1cec39bc88442c91bd918187ef5 -d1b84e4ff948e7748adbfab581176b13a98fdfaa6097ca3615da0fddfe3a13134cb4737e440dd211976f4753cb17359ed5a4803e8fe8f485103fb47b82c923e4a923df949aa1339ec6e925bedf405f05863e2628bf3a2f4a301426e97e52cd17d5de113ed7b73425b5187a2442b141a15804a0e782528dbc545dcf90c1bb5edd -ed83c3fe0acb80253190a59051d684d71c8eb39fdc8e8beb75e0a166438e206f9e060dd6de4aa9569a16fd43a6337e34f8b038f19906c4670410262fb3cbcfdda0447e4cbb1c69bc2ede8fe60b0bf40ede40e6e380a5a16e8633adb18f3dc12b2e7c74e6dc088a23cef51792587dcb1ae90474f82f37c653d2abfdbf6350229d -f25cb0386c6f7d01a3aba79f9400e2e621a8174de2ab436650a9354c2ad0261db1ba8ebe694bc45f4ded8184ed410c53c796286de4e0427a026140f2a183891ac0422c1247e01a793f94ec112dd23b5c460eb72356b060b3cc701c8db7a9d5b7cd311048f3f7694a92da2fd07a000e56277ae75cc9a15e71a81224592e959da5 -ee03c438fc7f8908610430d2cd034cc01a6762d94eb940b5ebe7c227091cc64878d41821ac3e42af3149e45b4543e34660716c2cb49af0b6c03be8ff178a242e3b5daf281aa04e2ddacca16d65a2b065a7c61dbe4bd8160d0a4a005679a4b5f0cd3068e1e092304d2a585c4fb2176bae941fb11374d6bc0272a8513865cd457d -ef6568752b0fc3eafcdcf2f8ac2b1a9f774e53a131eeb37d49559cc60d9caa99d8bc777b9ff4e84702eb83165fa03627d4eb09d286ee42565e87da20bca80643fd26258d3a060206faa9fcc3508ec1537f6578209ac359f544529fd87c471635dd9db44d3ecb9f5d82906c171673ac1d8ab5fb3f1bfd7b3cc2c06cae9b7f6685 -ccec545b7d7f1ea51d8774cdf81a6e8794bc3cd87fbe1a8f8251d9741410b37bc39f6af6ba9efda0cd15243eed15cf11f0b4465e02c38acff963f71fa7220c9d52f64c2fbb8fe044bc6cbaa0895ab8bdedc65a89e0441524cbe28ef9ada6c63d0431583506354b9c2a5176779538bf229b74c8f7feaf5eebdf0825835f33aa8d -e4459658218601a13cc808dc9581fe25f3609976c1f3430c813a2b5dafc902d5440809e75b1e01568bda0d15f8de12f368d7c3a32bac5bd3781f08b0beaba41d4f0541576658fee91042aecf2a450aa0a1612010690c291537a9430de782eb56207da17b54c16e1096eb1f9799ec98910c8557a65d4dff8da6201949a9238715 -f62b559ef3edfe69b2ec36c3af8ec3c36a326409f7d8665ab2a9c26cc28c9daf5350e8164e06966a68e33ceb550504945fa967c6af820a49c4abf6076f94c44340972f524fca03156376720f5bd7a795a4f1d022f1d47cf571d2d4d75b677791bb31bde0a3613d289d4dd1a3da76b9450b56efebc996ff1a59eb3d42da77285d -f397abbfca0f6d6ab5c132ebd18a30c83514b2576c2876e20c6cceb43ae8654f786d9ee5d8ad7b968ff447274d8c082425a477836b59bd27db3920ffd45ce0aec781852cb2a4cba54aa57092b407e2558f27a8a4a43551ab0641b4446fb54845c883dcbefed352cc0f7c557f1597f3e360e8b5d27da51bfd38e7454d509bb19d -fa306da03ce1f59bdcf895d340061798b11295da3078bab00636ae87f758873c32fafa2579563cf2d313c0889664d66e10957e14b0d90af7915cf61151043c1ece2190769ec61bfad26fce27a86094606f734586ed7590500f21ef02db9b19ed5b7b9598396d10135febca8c3e0be26ba0f02e2e54bb6b1ce0a7e424c4cd0e15 -de301f25036944a4f6a8fe11d1d6781cc5e054a09d449a8b1443ee4ad50e9ac8e68e244dd8f8ebc9de0f6e3fd2bd5de7099e17c452631f1962ba400eeb79db5d36dde3f91c7d5780b2ea421b31c2ed57f11cf08c29bfdfe7350e3a87ef477e0d178cec6faa7a4c07519f5fb21661a9ba681906dbc2c2658d9d25bd42e436118d -fc1556bfd9852204f19ac3da8d59b2e889d4232f00afae9dd890b47882c130eeced040fb696842e0635ed0530cddb515054dc514765e9b555f9857cf9bb13cbf5e2fcbc6630a0989c4b2fd565d81e7745851bbffa65ae8ba42591a17c3a44e1d8d60cd549558a4e17bf5343613a2aa4bcb0d086588579865e14b696ef5d03dc5 -dc60b41e021104e87cf43ba8e75dd012c1121bd5c3e682b8efa1f1103a12e27d89c520ff95809fe0bd206ef70775c78a2364d01d91f4afc7c8a8d02a671e14e2cb1df0b14852e7c5134a31b4380788f8b0f37423ed853e3e1c1938ad3f7cec40cfabaea1eef28c8d2b01f6bab2a1d584084897801bd249147e6e0c725eec7ee5 -ceee4f09a49f1de80b4d0dcd33eb56e8ea3d85c1a2e5e856323c03253fb91e2b4347857a86aa1d8484a501238f10b7aaf4adc3c39e42dd04495590c814f6af2c6a07155b1a793cdab9067b7e709bc3d748b10a419fe3f530111444a7b8cf3dba2880ff1bf81a607ea367b5a81b52e16b41080ea36b18a0d3590566af84989945 -f6bc6ad26d71863b9c771160344c9aa98f35be8193d2ee0b47d342a9ded78aaa6c654df6aff01aba55fe283df748f12afb40f6556d4370a9a987b98e2b330c9576f76821afb9103f249af8d6544c76b94d0e19b710465b5a8732ebabce87869a115f7cd88e7c01dbbb79c9cc04d266b9c578a645616e8ae3d8fbae1f80667d15 -f295e2280717c5fccba279523dfac2149274ccbf9e7a6ef99e17444c8d4c89c668d0306cf955ed951b7f60b1ed3470643fedfedc01cba6d66c2f32ab122a83314e84e21e1bb1c1af7ba69fc64faff940e0e2a797aa758f8b2b3bf2e882dffbe2bbe2da6680e622d05ff03a4ef09e88cbc3595179f68779062eb7fffc336ef025 -d607837c88f51a8449b0d1ded1caa08df6bbefad69c55cfbdef7c7f60fc0b2b3851019ef5be975f84238082fc0b1a1b67d595a95ac5e412904cba879d5c67a99479d5132189c9cd21c1b3270f293d1be5b3ae383e4ad9c3e72acfcf357631facbab5adec457b11bf6eac2cd2995a28ae5768ed2dad963bbf28b5794eb082d3b5 -f18ec69d1572c4686076d8f7f96629bc04ac315b0ce5fddf4758aace119fb5562e39535b7f20702ca99e686e229bf951e7bbb6d5cd6919f94235e873c3a47ba36829070b5f34e4153d0649f7c4aa7acf14720036b80362ae1b1063222903e4c62f434ec16c852c926268e739ba62238994dcc6f95c440d4826dcae5a5660168d -d2e36d5dc038ebddb59318b497fa416f76d2ca62fb99f8d9568737430a5946069ef251c20d2311598e9d1055f8ba15b018c28ec131a683d4d26056e67a46216dc529ab933ceae21f762538db6ca6db0473ed9dcc8c1ac880ada42fcf52938bd0cf3c528587a5ed61f4478d185c4b0d4edba24d222b207016be16e43105fc96f5 -e4be11d1cb3926427f6b2d26c43ae756ab16ea299a5c6b4c38eaaef00e0642e2c4cacce642f3be830a8fa93f5bee03a7d738b0a4e4181e0778788cc81b6989549b16ba116cd931446f39be17de2d99896832ff4fa1d4e9d70a15c4a4e7afa4b319cf51fda2ba57572b5656a6333597df083aa8278addc3024c7a21690e7fe305 +db372530878747615c4fb4370798ff775e92427c66b33b661965a90be28b1f1d168cd2089bc1562e9f26a9236a6a251a036d255733cdc9b83f97678fcfb1fc4aadee65f868966eb03c8f7105c9577b57ce59d03ee4e5df78e9a081791c975abff5b4df4fea67826d560bdbd6a83a0d3e9efea2bf7dcc0c1760b12c58991d908f +fceaa54815932d7214114e5f32aa952ff57ca58b7f5d95e879c5e1fef853158d38c0b7871e3eb8f4f1425729f03b837db945484f0eabfed235af86abac2a4cadb8a34857b2f11c35083031cac13e540ac20472fb580bd6fb961c3778fe09d21468125e46c1a657953333b5e426858686d72b72fe795cecdc6d97d7c1cdcaaa37 +ff24835312d69c46088b90709779cc30f5bee2563e5f90d6e1c5d8ef0424f90dbdfb7dca8a9a7785b025041c6ba59858fc7359ce8de5a8a7c4c31f67020632e05516608b72250ff86603742d9281cd85b162106e5dbe602bd45e46fa5cb884a4032879e567adde48bf1eb181356cef82483f5f32c5aea14d5c89bc0b3925b0e7 +fa9e1a40062142280c8fc68cc7b10bef8cade350c77f802377bfb43ddf41a2856085c2830e3017731233053a15627bee323d8ff05b376ced13e7e6b85e61e3cc4f235f2ec586303563e23959a7b479491e064b307c71ca68f5be851a4640b2310d279129940f3a8e8c921b7fbec624062e64a78241ca5bd11de1273fa5b2704f +e2b87e3941ca2447335d7aa29d2312ef8811a133b3822c8b49070aa65459809e052c0ac3d3f0c8291a8c7a855b0a0c7fed7f19b8de1067888b4afb211d50b0ca067897f49ea9cd1614c7c81ab44b0685015d2b999faa59b91fae6e48f95d5c1561494e420e3606c6c61b590a6b8ae7500bcb5ab8be2199add3fb19e95213b6e7 +ebea5d974209add6d6839e80d8c294953d709219df5d5358d3743a0dc2c075119a75ab75091998a2724cd7b675367e0d0fe66216be8f73d2a59ef0fa295ea637338caaeab5f266be050884db4314df188825852f31abe4c10d812d8710dd226f2094a5785edbc6f10ca35a373a10cc5766e6624ec5d855b546240d518d393337 +ce71013d7d44d73bef077b2c4aa557d8f931eb170a90fdeddf560b981e8b5798169ebd66e0de00ecbf5a227a514e6867d6d6c2af2f00a562055156f05aab1d01a2d3e254b6e0300d9f8e3d8fa48fc8993dc22773898cf891373b229d69bc5cbc18027c769cb4d38eef22c0af695e38adf7ce45c4f112fc3111a68ec1cfec0797 +ddac9dc9d8b49812c30337b88fb07422a37c2cdc1b0d792bd618e65021b803ed7890b14e9553b3d06a74b3c08b213876d9ec5bcb0497af94010637276fb6c66124f322e7f2b0af882fa290aa56c0ff6b6a0b1927263888ff66341f7370332905761eed565951dbf9a08dd6fb57e44c7a8b63a5b355e658d434c543467ac03e07 +d254b87e2e3a6ed475e7e915a9d9e19442f84a9a9936d7341a2b950afb0680f4a4af04caef66008b88c7328840ee8a02334aabb37906e9e9a30daec059a085f89598fa9122992b20dac3c47945fd60c21dc8a8334b7c113139c297f005156954c2eb43e7cdbbcc13de1d2ff308f61a939e73b992c49739618851494f89c635f7 +e6ca91690c86696bc802cdc6311954e4bbb150e84c02dea5d48751a51c7faa0716e502ef8a3e56186c1b32bfb86ff40df26639ce31e275823e614363ec53084fa4bfcee044c346be6dda1bf7a8d6376601f7a54264af991945747028b6d308eed0b037942a1703cdc748457f6630deac44822a63e3c8d8e8d8af5ee312f1b56f +de5023af9ab94b4409be274bb2e4abcfa820b0d616b89d32c618ef82e8b1c6a662ef92204718378a4b79f8bf95db0351250b2566b0df07e40863a894430c3a90d5e12dd545026bba0889c9d2be184f4571a440e4e7b5bb093e60717d3c55ac5b349d373b01ed519d641973eb35ad4e3e4b781653f5c7823d753a5a82a28a21e7 +c72f1d4508271048ece3ac0a94915847d17ab6e42dc01efacb786da01da7304ffb9853e9f720080029bfcead8dd719781883a85867214aab79c35f01b2d3b3dd678a8a3a2936404af3b2e588fd0917a6946a9e0908af0290bdfa56f95513d2bebf23e168855b7d07a9c680aa9b8282b54a49cda87e0cc614c3d57deb89f134c7 +ca70ac406dab582cf375c5e0d662a1d238b2d99ff6629b58e2b6f5eede810928c110aeb3de239eb2e1864455ef48001513a098a8db050b34e92152586f807875daa73b72c432379552fd9f89d5f6bfec3171dced2e01cfce3a9a23d1f5c25ae28fb38434a978364bb7fbc0655a4b03a31f98b246cb693a9619175883448311cf +e3c48515e0474df0bb48651e7618e456d3ac79099fe6968e7951762932cb5e1ac9b5e4673aac3396ef7828d95bb3e179550abbd8244cf0de9e79949b9791fb925821e03a6f7b63f0172e8838a42d0ac8e57b1991fb1987589ab3782815d49a93f17619e5a8e01cc55107f6d7df3e707cee30d34a5a47aadec0de2fbcf8bc2c1f +c92d3f2450ead6ef4ee7e06f82a08c442dbde6b2e5c19d96f71a4ff90577f3cda1d5da25508e47c89a816bd67a9be61c99b9efacd332f188d2137d2b1187239d35a4c82c28171a73b09418c41abcae94e19d2629356746a4541c30b1307ac4a2da4a5434902587d26fad8957bd371bbaa9860f2b6ca7f4daf0dfe6661064da2f +f4156c5e0c20418780c098b1ab206804beb95e266254de9cb26fc55a555fa514ee9ad315734de406cbb6d445c6f7fe23a9fe234464fcc3dccfabb480e79fa0f2e497ba0e2a0f83a94ac6bd7c579bf7f87f0ac5056e19eec15252396a28bce421097215115c67dfb9a9468622b4992cbe4c9ae063d5c594bcb385c1da92f5ec07 +f0e28483614eaa2f9a5be931d71ab4c7a7a58d4e9baa80c12dfdd4bb9d981f2a45f06b0e470b6357368ecc892f328493ef01f4c1e2235da0d4237fd45fb7d226b94d3a4f5efe51ba0e2ffad87077af1a92b1a11c68f0136fcb609a38c53124eb539dff3cb9bd10d6543168bc63d6fa7bb743e21fbaa0d2e67525df9bc5dd0687 +ff74a1ee3965da46936883122811928463f711245ba7ca29f2f1179ead437fdcfb0c22b4690daa9bdb917521ccc2289e994aeb098c7ef78c40d32c224bf8f266fd4700699b163bde45e86c0443f935ee3995101e3e9598757b5021f2149da77534ba0ecb27e031fc070d982b2ae1fd72a8e81ab4dddeb48a1b04c53a3ba1bb1f +dc24c75f6258f811d437900c797cd16b2e1704a8517a1dcdfd47e5f24789a2aa4fa181383badde786d85afa73cce5da0545feb47561f7df906b2cb5dce2bef2250becfdbf142658823030a1420064b9fac604c64b2697e12f391190ff8f579d6191a53d4d3dcc0f3e778f3e54ece9f532fe87cfaf0480f4ae2c5aae3a2677f97 +f01fd71145384f18b12f6a2e77654bd34496a6605ce90c7094421b838ff33786ce0a0aeb81ccc16f3953b3a5f8671fd14d78ed97f432a75e55d208004895dea116e3c347eabb7a8b2c26265f4557c8fbd44a9297e868daaf296d76e2a7ef7fab3619eb9bb25d4c0961eb7aceea4c380c7ccf9ac5c57af854fe2258d41bea3fef +ee95a9b9ec05713c928dd421be4784a5482041e1901f790a08a2f02c097fa0be7b6227d593a6291b398f2c42894198803229ee8d6201a627cf960e60235a3d3fb26c37d84cb40f5244849606fcc0f1882148868a999b88847cf0dfd0a06e266769bf19bf563d0485f691bd9f5d528696df5eb0e22f723832ece5664cd147903f +f7367bfbb8395c4c94c4c604db79506f965999d607038267562a8381c8cdd61be3cdbfc96d198eb6b8736bf630e52714339e9c97464efd3d0d1eb46a5598f08b57bf39a2361cd2bddfffc774ef79bc926f88fef196afd5db6ed581b07a141c8611881c35e2c31df2af789b3eb042702a6164bb02ee0547face6957ac8bcb9cdf +deaf2159819db8ef2e510419379b521e14d2406778c853b857eed893d1ed35ef95c9e2a82003f64210839534366ebe93b43c116f52ccb1c5345d2d0224c145b6b9270f442d337a52109b781e34208caeda03b3ec8bbfe8401368aa5d0cbbe83a404c9b671b1247237141e5e87151e6697cdff297aed0aed9a505820180e8fdaf +f6db14884f0fbc0c84a7675442a69afbbf4ee20cddb8889e6a811063576b5f6be166395c1844cacf8f6fe211fbc2ff9d14d143cd9c4428636474995ef13d0bc969fa978d1323b278a55ddd0c8bb979a7722538ae0b2e2d30a786762cfd77bbfdd74c13136408ab2b295af37ef3857836cbb876bcb2abbff67c6aeafa3b373f6f +dc958a619c54383b7fcf5c79aeda7a839e1926cf79331b035f1e98833fc7b8caa371f8c8ca1c8d85eeb6f1654358f94ab01efc9e0159bf1451ef0453e6529b0e4b7cc52625aa592976dd489a75684af653416221cbac5e2e385e5b0eff1feb06c61b78cb1d1428232c7a023238b3dae59a92d58dc47536ec0826fb9119b03807 +eb08748ba6cc1420788c5a3ef950ebe486583fc57dab5dbbc13da41719844d80e50ed9985ab44693be0562a1d0a2592443317258c58e4a6b83ad9f99e26d8e63851909a23084208ca9534fb2c05e27ce8fa949b606dc6278d4b569989cf2486a284c5faca2e0515a8199205bc42baaf3526265f4cad7d575c82365f2cdecf507 +e52a9b74b6a3c610b7637a7c62820b166eae4f2df452601dd1d6815abf204d329a501d4d5f3a21a81c90d37a7814b597984ba2700741eb69e06d596b7f0daad5979cb1d57892248c083296bdcea882aaa17f3e6645a67e91484312d6102eacd19af03129b56255c9b3a1ac499b85f4e79c7009a87ab930fa46c689ac17f5e5ff +e21c0501acf87c6de4b77f98fc2d6f7c66c5f95de034025edd76632fa8c8751ce5daca7eec2b1b448d99aaa4b7270d4f0dfedb44ef0910c48858b6776d54bb018ac8e56b79509cf35f1e91423167396dc4c634ad4aeb57f4e372f39c6e1f18278bcb85019893b659bb6ae4d307114eef2c10fd1371c563a177d914f3a6ef3557 +fe919db951c1c326fb73afadce03c61f0575846ab6b68766eaf49fcbae185e7deb53cffacf6969b10205abbbee9ab9705b4dfe851f568482c342993a61c025034cc7e77fc250acd795012a9b63dda1b235879e0093c814e08d7fdbbff17395b756af5c451501c36ccbc172c8b8138f3c3df55b1a4f9fe7eeee31c0f16730820f +d54c32834b0fbe42dfeb8eb84da76838e1ab61aa2183d5bf34de7b48684c5f6c5b3a07421530406a8f9f94b51ab8fcdfc1b1cec1085417021e6aee78e9f11cb628a96cd1015bb32d4ad8afa35e2cddcb8f8fce6efc66a6d9d2d320ace54dad462ac4488f9cb1b62cbe31a19dfcbef034e0fce34fcf3fc55db8d9bf2497dd656f +ce8c2dba05429079d8e175a813526e43b07592a5c8853e507759de4d246d8a6ed446abfb5b9d9a6783d8df9c84c7edf84a385ab6caae0bffa62a22cbe268e3545a3d5b16a87f3f38f28ae0457ef1cfb32ac5928c6a4fd3f44d5a26d15e7c7e72f0339b7faa7eb197367c73d8914813ff15ce20a3f9fdb135e30de2fd919c926f +c487e8e0138d6e2d66b4f3a5a5896e3ed600a33f82d1bf446f4aabee6c5fb3991a954825e02c970bc9d97f1a6bf2eb484a8ad9b2db13e1987b78c63d8d210b03ab27f988d0b696b7938eb15506ecb03f9fa9f40b92dfdf6f98582a1ea1d1d0ad6697248d539826f1e139b8cc85b2c39fe17d7570615322470758a2ed79de0777 +e250654240325aff2d953613d41091b5f3b2733426ce60e309316a8174040fa07d09c73107ec44d612d28678fd012c693ff10f0c1e14010e21e7dc53a7a34047968165d2c5d657f4d5baf0901c199abe353e464029fd8994edf9338390bd29a9f5deb1ad33033ba9a7bc69db9acb55a81fa54b3bb1025fb58b8e56b6ed717c87 +e710e760c4d198b02265a2f8b6faee71409d338d6f0c002feeb87e60a7b0b3fcbeaffd5b5f33dee314ac878126fb3ee3cbe26ccb90c5c3bbe4a22c248477600e94713ba1eeddfc950b8f2dc45a40d54fc158446acfd21ba6bc500002c365bb175e4d83df51a90505c4047df69915f8b932a5bf92830c6b31de59536f4a616a0f +f78eaad3aaee64e7b64b6f530a560d838a02a8bc1b147a227bd26f814ea5f20bf130bd5a97fb8df5cc4925aaa05a4b96a8a52ca6e741a006f090ea9838513d4b4e854621b804183000ef9853c6270ded1a215b341329191c93eeb3fda1b31dc5109076cd5fd822bcc3b4297e6a1bcde9ce0f09c8cfd92e7d108c04dcdea12c9f +d03db759f1a20bc674a7cf0d721acf1aa99074e4a129c196a4a8647b19e347aeafddc1b68759785c806667208de5ca51019d69e68362993c7b2e40a328bae614e9323a41a550a92d750ee7b6409002581e7bde1345f5c16801defa98d12d721f1d8dcf12ec464a6def35a52e8aec23d45e77e142854f03e68f6ecb7945081b87 +f715c4b141d4041d8c149ab7d1f8ab622cbbe0cb04b410f165c86d181ec872e805cde89e657485c1309be9dc408dd46d9a07b356a663a149497c36f7f77a784990a9012cc16234de449223f310752124bb255b16c7791ff4ff2ed61aa8bf358657225019e505446f938817e0063f8f1d3655d0a598181794ba14573954ab697f +f6c3bf7824744e2bd2110a69bd62233456d8444faafea7ded8f8c0f2f17ee75664e37eec12566e36e84a14ad46a307bc3b0c3b5981337acce4cb5ad0acec6a08d7564db75949f79249aa046718e5b737965ea0ba5ae7753630a081d6d0c04c540e92c3969703f39e6226ca018ae64240f893ef57921741f0889dfb1719e7000f +fa60a22d65c8065169aaa796896de9c097c2229a5313bd7076c1fbe70d40ac18dd2ea2c92a77010aacd9600d0006deaec6a26d6411794b3db937692a999c83982f0c8e1cdb96150ae44bb95162db0891d7abc49154ef5e37484f4f2d269c35b5ba13ba78c63c3f63da102877fbf61b380d76193aac41544fe133093a711f3cd7 +edd463de9fb853c3d26744a2d7267abe17213fc44cd4a640b4c3b6338e4b1c67c7b574363de1afad1ffd0b89d3d32e2276f3a7d3492adc85c41767d5bb2e669b6d6373fd5bab4c8cabf4bbf9c460a92fc9cda8e162395a172c6793c95c94e32273a3f1a367ad8b604ec44771f1e700d475ba815bbfc1c0f706d4ea4d373c3eb7 +d839a0cd751e1fbdd545ea8ff199b55c3b23c143383d97ff56b33dda79e4f30b7e11388393d67bf92b4510f27282a9f9a91ad1a2df33e88a2a044e860be2e882464b212c44ebc39ef322eee8a9f06024916c81557ce300ea3887e7b5bafdc1d8bb91c9bafb8e8889812770320cd014ed945f843a32567a6607d323ba4788f4ef +fa4a5713961eaed4a42744ff81544479606cfff15f6083f70be1e2dae43ce90fc3b205237c3bf6370d0b589dfcf7164e5a95a7d15a6c11b3aba3fcf91b60dc30b36f2b49c5620a06bc757fd183a14cacfd63e313fd4d7e001cad916ad01db82eb336fec52e9f681b0cd09f592f7361781a58fb10652944e1f51596e5b713a797 +d28c6753e9751a21daf948f01cf10a42ab99a66a367ebc2bb257824572b581707fccb7867f9f200b75c280e8cf86a265ef72c86d2d09418e8cb78ad6da8bca340cf681c972bc93a00707a926cc21481a5238e6ab372b3bf66c193549a73c2854590fbaba154ce2ff6a5d9ce579d41403cf65e2fe6f6637869754d9f8f6a69997 +c63fae7be962a30db8de0c1776d12e206dfb7d88e6260a7fcd8a235f545f065011ea1d3d589a825ab6f05f21cde2f5746a66ceb511b1bc18c8a64f004b4557e1a505ecfd499c057de30405578fca578131157f59c540619ad43b86dd47a1cdec5ef979a60c6f5e0d8a689ab4b072d6fb9fdc40c39b140c7b3338b806654c98b7 +f148e78f0fcdea364ba642c7f5e0328fd05463e98e8226029cc3b6c953bc6c0dbd7b209898932e2e2b0361aa2fde4bc03c4c55567dd3ad3b0f350bc7578a0d9940a5441b6b6fa273a8ec698ed2ec32b91b5277338fe2a1a30843905ad17aa36850d76512d5436b366e6de80c7322ac74e816c886aafcc5572e1b5bd983d44687 +d28c158ae549d723d50b93f45f9169f9a7c89359efccba98aee658171f3ad6675567c065d6931483118e41bad0235c48d7e5272939f13467c8ce7e124e25d899a3878f495a923b5a8c64164f678162bc83fce085bbdb73eef54ddf1b2a13f405189c8960aab975b0109e6ebfb9203231f237941c8c47c818bd3a3762656f19c7 +dfc55b607fcf1913ab3c74c8f2599429f8f433f4066602ef70965b7aa48f4a20a7b4458e375bbb17df98ebdfcf1a0012903709bb0864a62e00b372612dbc884d5976f77f5358d2ac0432bb340817e721717615306d5548d6f7c19f9fb11b0bc394c079776f310819423ead9b3c9451cd3c0031de4c5229484c3130a5041ba67f +c392a1055bd15aa520d73908dccd3ae93fc289c5dd1a07fb3ccf0d4b597315e4f3cefefceb99ee78a1d2d982cf492be4ed510c072964fe7d12a4e31fef39558f885a90dd2383f09493a579d6b826904a74ceb05020feaf9b3f3ca0273a50c4f0e895e07662824bacd1b0fecef3906ce2badc4bb43bb7ab932cef26066eb1b81f +c6edca5cf906a7a936671e078c92461390762e506cf354245484acd46be9ce4590054dc3037822c262e5375a7ef285f544bc342de119f4598e7eee973942f12a332da2c3e7e8ab5be6815a0a73a3f22597ad389410f8d0295747be606edb85ab63d0a5279465bdad5d517e084d9f3983d7fbf936e1351c3f57e7378f43cd4417 +e9441b7e33e843de05047e2bbe98d034d8f09b43d1d808bc17212fa6b1f9d5ff06fe787080de716e6863057673f735dfa0b5b924065ee44e6eb544d804e797a0cc057e99bd891da9eb011a4d6501dc1f4244574501d6883e6c30d8fdd0d821ebfce0df2d089e42ff789a6b49a28e07f64459e89e31768ca75960e002d1afd397 +d737f1733a8db16d5415ad766999894e5014ef1f9c724e45d1d2b0e71d01669fbb239a1d7c0c3502254968bdd3d5155a4cd73118e389b5b5a73f326f3b0206cfdcb324140d3aeafceb5cf567fa4a0e30f868046c415f3bfd199c830fd42f6095e4be54d42f51ee9a43e4c7520e223f5fa38c18bbb69ecbc9ad29a0a4ad6e1d17 +f132857403deaa21cd493251f5c39637c1eea3702036fa65084ed727af76f9d26c3db067f2a98a9f9dbe858ae60fae3edf511c6bb13cd8e39d7db1499cd8b3efd111b99387558ab66395223ec8a40f95675d54a5ed7be32a4186475d178ea4ee86e4cadf922d3d9e73fc6598340198a5684f324ad8e34c3d5f987de62729ef8f +eb2271ba579deabf693e95910f3868d8a3ac7059fda50b706cb31debe1dc1cc2fef265b71f1b7370a5e0af1d869870ede28ef5aabfd8f96f75b95bf5532d91b81a44cfa19cf336b1c34cd7323a2bf157b3b12dd7db0a0f08ae97756a4ea6116408367a5b73561c197b1d8396404fba0795a1603b8caf9c7f3d424f0fe622006f +fd62ca8051be2445a54aad3a21c6296edcdb7c2ec4e78c6edd9fbb84150c6e922d5c742ee7c26c4c1492b1ae7e9dbc15e083fd0427ba0efdc57c98f4106d42272e492965f623fdd162a008e6fe27817365c1b76fc50cbab34d595fcf011173dd0ce777582d2912932a87a328f44fadadf9bd47ba352078c8f452e149ce605ff7 +c19a630ecd583ad669787d94faf383499e8ac1f6c3a98c60883ad47837bb209fb2d237894f97f3bacaf2c8379e814f864e495f8966a3c689b2624cc4f10acaa6e94c6f0864243559dc81075d9fc0f49be36ca0634e4cf50c980a4ffdc7a9b435d17b67514ed6e43b8cd22470325b50bbbc04e8461b9d994b5df1bd95c90254bf +d2df685dcfee6ed21995b6a997bf517328f5dd3b99349852b22a8d068f9334077feb9705c5af72479b0530e7dc5b5309d538021a4e47b569fabf74fce427778401b26e7304ff82e3e6d0b03e52dcdeb488e600519fee6e553289fbf95cfbde59b265a0e9c76fe5bcb7056eb2cc847b93fecfff6043add8b646cff1acf8ed5837 +f1b6522249ff0999a0fc4931fe1fdea8f5f83df9c069beb0fdf30d9ae054cf997f98e41546ec75965791a0cef028ed53b30ffad7315b678931d54ff20119ba6233619f0fdb1f49d36d36d2c82785d95b249a42276557185ffee891ea7071d0baa8d4413037ce23fb3ce2531e17c9b854f2d2b9c3d252f28eb464475a18bea5c7 +c94276bcb17b5a28432bbd21119fc85b7433bc56a6d01fce146e75ebf9dd549191d7c7c5c32eedc5ac9c541e43baf16cecd9e31af4be1fa4a0f59e6d90df2c43811bd6db28bf9adbe013890a273408817573406b7bee95da371bc57aca0cbeeb36b8cc8941545094acfb70ec6791d5765f3f2f9f6856c3484c15cdba3cc025f7 +dee791fd3d3ee0e38f4e14cbd6bd3f88c02047a4f67bbff39b21e4ea1c3b94f1b5af2b94fce252727e36c02d5b7ae50a62373a311958117ccf23d03803222bc344a3d52416839315121b4ff9b59ea972c56dabe62986379bb9383c7f767f0c75999c5c092419ba7737b63d246edbc6df41a7135822cb69ac6c4452c618043497 +ccc274e18a393cd5aad3a5a97824cab18f9ab430b1a3e86bfec250e2c6268bb5e432b05bdc437a60e06c263b3a9827204e52dddd63f7c378992e672bfbf06725d75a74ef56535cc8475a3f18ea6a6d8c3e0df3d8836c3ba5f39bf8145b824a6ec65ef417c3ed755caad08b0d1502b630452b47bcbfd886434755232e8ba8b1a7 +f58cdb8dfab7acd6f27170d2c2b527bcb4c1e8a5070fb1d5129b16bedda532522b8e135fe89584bc8943154317980d94558020f5e9a233c2a9edd4b781da227bdd8d87d4239048b5eb826c20c0ef29443908360c488377b9a07f406bf96f576f73f6c99a3c7db00721a3042a5a376ecd5f3eae5e8bea2263c775b86e5df5abe7 +e32d8e420d62ec5205f4bf9807e393fc8b58e848de62cfd06984ac6cebcf0e7bc3b4cdc09b3fb647a32166f3912e9347b143cf46bfecc7ec0838631004e73066e976f14b3d71997e77614fb1ece94cc4873fcde1595151acd862d57fa64dbd046c729d3b6c421ba22d9fc4c386c4cc3c42b4644d8c4528883592507cc707fd47 +ce3aaabbef07d31ecf818b9ee693f9f19c1d8e07abeb1e321a49a38a7d75d5da5c84736a0ba3295d81e60cd34f3146648e6ffe485faf51cbbe3cb0bc9d0d2c04e510dd940f6d8efe74a818846119fc6fa7e460da814bb90dc25fe8c02a424087097c3d60ca757fd931ae13613d38bdbe1abc1896cfa21a8bb1c36bfc89d03d3f +f39ed8d2f6247da69fd5f5d248eda885c4cde9542464169dadae2945870a8fb3f0f225b7676dbd2070c422f26c69a0c2b32cde20701b2c344e4d55d95a167443075cb69756f69ad5acb81676bd57435f37d639ece633c99bea1056b887a990c92334a3de164f45e39629839de59404ad25409172b173157b3feaef3b664830e7 +d19afba278ad1d1685816b495f87107ee811d6f2a8c64d70127140860718cdf568892d3130d487d41cb31223513b769715aee9c45ceede99343c1c8366c10f9928885c66123f2a7ebd31c02191bc341f3cf2246e2ebdf6ca8236833d4de5fb8934cbc5f16575915babbff0935835f3ec710d02fc53cfd5434f8c1cc41a2d3657 +da4fde85d150b6c64a3de7da532886c841e79373f30a7fe510c750af54015230f40cef4684607d71dedd26778c6e990aad9684f1da7caca28394219612a812cc05db2cd25745f994853666a9d7a0ebe5756656fa5e195dab8277e27ee7d6a2a0bd72c9279b6ff15ef73a40b43b39ec9c115da2c88a051e5c44bd3daa9e5256af +dbcfaa37472ab486375b59116f1d397e8dbad7089364ecc98e75312c128f87449b408151da697ce1f668d16799c09893c22675ed96bf3a7b8d692d07fd5826788b37c6304c6d2b96050e6e83afe80a6292e5cc166bc510e473ef0d25a99b6d114a5e319bf16b4982d72e5cb5dcd08c07bf456c51eececc9522c89d11ee4d0257 +f46aad810bd2c3734e041c3fe82eb56b86c3a86e45713d403454b558972a62c3e0685a3ea44b6aab5aaf1b153ff7432390bb7f06b1bfe6a139c9984872098f464c57aa3473f165806a82d2887b5b0f8c53c76c270d52eeeb47c0211adfb8d476159b38e2ab9586ba68bcfd4c22639fc3ac47e6bf4a4e0eaed81e92f8a95b4e8f +ff878460bf54c59a807422b2c81d40e07a3add1d54029cfe96edfd96d71f3a0363b4544cb5314c13ca306286445dddc8153b91e1f1817469f66b638036aded6c82399072923ab6d169eb406430a2bee05b071cf13590ac8184ec34f647b2ac499d6deeb883cac631bf8f1a384f74df828779af5ee4e88fbbb1e35eb2cd57671f +d948db0b72a6abb7c72b854c7d2b33a6db4b7301cd3b69ff09000d4301c3b13b81c0ca94ee166e6fa80d916939fb00d56769331bfd919b8f84b0a114cd42d966671779bead213dcbc9a2313b7d1d8217ec25f6439db6456ad3ae6dad577610ca22007d386a7ddeac03c07e6474c68a3cc66a12b40415d4423d0d7dfeb6aa78df +c128048ba1ad77f63f5df1be4f3fd530cf6e6d367fac7afc983e62ce3c53cf37507d6e4093896c5c4b02157a7274e7a21ba7fde321a69cbc2f8109c0807d27bc85a400dfe77f2c3b07ce0efca738547578a81bfb9a7db936514e449dbf04a51112a7464a6acca4f37a9d03680e459dcdd7a30b6341128542073a5a65626e006f +dc10da68e8c67b4c809fe724716ac2b75a970a2ea982fa260f031397cae3695678e8f692ae32a1bfdbebabcc59f6125838c0a413ec0138f410ec701f67f2d6cf19c558586949933582b1b2c725035733fe7b87f8f067f0c756847956f3a23ff85e917e38594382b03df5b76ff9c27afcb37368deb4e069d511ef91f062108947 +f4299fff77b9e7518b4e7e82f226321d771f4ab30fce7d99f0a07fbb787e2b7758a91d4ec696a3969451e09030bbfe392349b861e4b20c2f92d4b6dab786cc9fdad9ebb687c1ec0678077979a728fb741b87f01bc4e3e4e8975327095145be253606fcce90e1dceb1672867504844ee48dedd160cf4751be67b874cb2b30a5a7 +c8df0da4064e290e887408653d6f5d94516a51a912282c952e145667140fe0764146f0b7d5ed05f5da5ab054ea358bbc02df24964288d4f7ecd5aba441714cd7bc791c74618b11f72032ca4c5fcce70e12e8f1081dccdbd1bdb4c848ac06ad7af775cc773c7deca603bdb3e5fa598fe0772d2ce986dfd439fe62bb08218d5277 +dcfbfbc5fa1285c097fd5c0b896f0ad0ac0c3c55f106a52e3a15b810f1ac52636a1cfa874099f1ec1d2e877cddae2d6c2a99e36aa2d980a7c3dca7518b7d4a5666d6a4321496d577bf0662facb5a4fa94b3462d14ca0467f5e2a081b7e275d32b08e07bf76065388acc40c323302f9ea70c12796fe67854ef1d4fa6a90814a2f +df0df89643ee91018f26f4f7bcb21da595494e11588098423dd96ae729559df6971db24653d99a95d327692cfb6d054c6206d78763033376e9530d46bd76078b3a8a02a6e2f91bbbb6c39203a48f5014629a832a88fa9a7988ddd865fcd987659e0b1638cd2b05a8d556c2d22911c93154d1e08b60e405ac9cbacfa37c11677f +fa6eba0edba9f3d72a288e13ee73e9c1270531a6e06c32068d92c8bc1eaa5ed307eccb6909da33eba50ef946bdd48f5642f9db0507bd8a4e674051b7b89e45fb54163c28bd550c74c35c16fb49a9dc400a6e54563140adb43037e887a216047caa0378b6c8dc27ebe1a2ec763bd707f9636a776cbdbe228d457b7f65eea5d34f +c1574ceeaa9bad6a909fcf58850fc99a6b4abcb661cf4090e3b3591e8549acace9d2303a57afdc7af57f1e39dc4f9098c22ea9fd3bfa74c244977a5fc76bb9747247884f56baa9c74cb1b397818d151c39d6dd50b189246bc3f5bcbc402e1f68e71d12029aaba38e255dd2d563f6b2a23fe0f4b8aacdf7c865ffeaf76eb60757 +da14cfb701d9902fb1ebd4fe0e9a0d115eb870046836351dc03bc857c6a6378ecc22914c5596084659958b77b82fedf376a3949189d48dea36f6be60433ba4ef17af08a1e12eb84758f378a9439a9c9bd62c4727db8b99ad2030012a1af6999fd8ff0f4bdb64e0bb8074cd4bad51f2777ca25cc3d89099cc841530b95eaf98c7 +e750d5d52b6323eb9b4f694489da6fc968b9e22059e62e5f1aebe64349d5b620b1592c630c6807614521b79921abeff6f6f6fd9f854ec4ff37ce02d5f8e8fce8b9769815dfd170eb22b82fdf0f12b8304e1295c5527e96c9f39b1ae8f4d522f08ffece088584c1bb2ec2a510efc40c3ec5704e2c9eedc7a2b77cd6538bf2cdd7 +ce29e531888ea6801f6348c3ab8166545a302d1267069640be424eb157caaa7ddc4bf4483023d22e97a36742cbe176baa70a7f5a2e363b286153d5766ec4dcd7236313a0b0967fe526d87e6a71ff16b3f6108a072dcf02198cab67450b3ae585b154c39d76ce65a47e446b93fd1b53b6a00ef2f19fbcb2626dd036872de1813f +c533fc9f218912c96ce7037ad67e2fb5a98cf44ec32754bab267c7dde2a394828e0bba517ca24abb4210a93afd254d0c0ff2e1f9d96cbfec60363fff8e78eabbbae97574bc71ae12672156049d39e2893f228c8b584604afe0a5864b3b805bfbf188ede6fb4bedd62f97f7010029aca8cffd6ca42828d2015fd49f988430b7af +dbb4f9a1586963982dda5231c219a2f183308370f50bb9b6d2bc4ea3ab2c780a9e1aa5080f733ced7f2729f546b692217ebd81fb2cfb5a3d38b683cef1fe8154c2f97f2c974a2278fe4ce7730310f381a6c4ec29cb384f3af280278f16fb1a6c48b9265dbe0c9146ac6f56c5e5604c0035660b9400b1312d718ce223d5f49a2f +dc541edfeb101b776eb4b292f0623842df3353a7470c1ffc6204b4f8476ea6d2cb8574abc2f627a8fd70c2991350968521a814e71a502843520c249e2f1e05d713082e2908cc3b1f03e3859245a76692a432eadcf6898d4939d99f629934d129e42dba4a41ec686defa7e329fd45e54a651dc4f2761f0a845467d7e3390e476f +f9fae1cb995ba2146abcc3f1f8b0aa0ca979cae3a85554d59d91cd0bb206625b0c4e01995198836353ae5572d46ee37ebabc94104337e5306b64ec1f71c8461adcbd217f0cca4bff13d92045b01b83b30d30a45dc05677afcc25773ed8f6b759915e8a83e14aa21dcfb7b8f9b5c23ad76a11c29eb02df97341712568c52600ff +fb3343f47f5b0e0e79385d9e84240d65b22f2e166c7f839724f68f7901e0ecb8ede59b47a7d0ac0e4039004d530a0a875190ecdc39f19d7db10a24d82ac35baa528fe65589ae3d1e2ed0134e4dc3f79aa8295ecdb3f78d4f0e94c981fd32e327850271d4ff7614d73284e32d2ff1397e70582dbb1b7a44819452de9a93b5fd07 +faa7eb6a9200574461b068e66b644260e5f96aa9c7467b1b90be4eda33d3cc45a3458e19edbb1d572c1466c6e50a3069a5362a6989eff60c22276d8ff75a38ddd09433936eb351ad29bcfbbbc2cc0949c46c0c9c568817a5307a5c92f42304d81bab5e7a328f94bd7e07cc5dc0052809a2c2eb3b783b2235e07a90b21afe19cf +fd5faa0e8f7ad5e0a6de132c4cd5f1ecb1569b328cd609414777476486abe737868f28b7c7145f1b0f3feef99ebd6f98f518ae93a007e25bbf51cc07d44043fb5d5213f7778af0e8e38d4040aedf053c123540ea284465e7f82c58f323e3001bf9f8c6c44ca056cb79db098546f72a4c497e01d8153e68b6cfa700514917ac77 +e97aff51348b2e3c161ac6c9c5c994cb8474923ff07a099191bedbba5decaf261d832149894b974fddd011fa789865d04326206341c47dca2b628bab172b3fd8c642d2e5508b9393d92b547d319e75351a18927effd1c586cfa3d92caa772530e28975a642c444f7ee79ee04ff66ad5a82f4e876db3da2be9b696c2038daf8e7 +db864fe862964d02da84b3ef5e5f97163223ac81292b0d1a8f5eed5b77ad605f55cee18f0aa8715546345bfb0540b0c3472465e3fbe47d9a7b71669db85dae4afd070d6b634ebe19d945950fd86113b921cb2434b7acedadb1e0ab4400a6d5c29d987ee12e9bc15899d47bf084b675cf86ea7e07a1a52e7d2943926a541d9137 +f484a7236c44e7adefccd90a128d8f3f38b71c5f949c79101edca69850eb8e007002f602bd35c2fafa2deb3efd8491125823d444b6493d93bd3e4bd31bcc50943ec718b1a6de118e44fcb999a779c10460cada657c558c2da565a1d05edd8d79c5ce81fe5238e367a17695bd7dde9db55cb20ba9e802c8e3201834f42c7a1ecf +c2b2d4b581b09ddda5aba926eeb746c2e845254dd4b2e8c4f1f3d2c8854834ef627bc9643625330da741a783406b57dfa5458c5650fb3e2aae1dadb70bf1855675c84ff443f2a7a78223137d87fee7c45050ed85773cc7e97e4cbcff6f894303e11415ffd681d6c013185d22f5d48dfa9322d2510516867d2880a97606b1d9cf +f37bab11d4130686f22a650e09aa323899e88215e690c81f53986497474621314d74f3eea27920644239f81d95d3a2bc87a5fd111c03bcef25d3ac10f107ac15c7c9f4a49b7fb9bbe8c8f27f7cb9086a3447689e73016731fa2186106310ec3cfc28e8e264a88a61bab8e744b28441b19804050fd7993106f4c3f5cdf9779a6f +d2783a9f707588675c64a369515fecc5887057068824ff0985380613d84a807688e793126eb6a7e4a6b93af8fbd34ce5a15334d41a322b915ca8c9fe41ee6a666daba10ec3f816c32cb8e7922db282a75863c0182fc116f3c8d113e26dbb14b555a3020a2b7a313b53be02f7434ebc9207e6b4f94ed02aac756d0c767b70c88f +e573b9eb9b8d65d3ec142767740e0f494af6821539af596e4818b63dd6845320083a69650294396f4e228a77741cfac82aa9adb1cf5b46a8fbc596581db1e5eb433bfffc4baa10504b355ca6ac7b1cf81526adc635159ec41add960a8368d7791244d1753abcb1c12f392585f426031c38769d695707e7110c2cf3c8628f45ff +e429a9287819d39e4c37de6c1848867386323a3272f7ba8ec4410e31ee8bf9232c903abfdc02df9f66a339f2c652760abf8d167bdc82e213c240d9471ecfdcb150513a9f3da4bf5f899f3130f76fa6e4807163667b0563d9f3760025a425077dd345b80fc8bfb02c4cd16359b786cdfcd9fce00e9bb3700efd26cbe10760f04f +cfe80e2241b07724f6aacb64f3e27b53b5fafe04d677ef569018c26ee453990e59fc41fe7de9eab109f9f875a6a76a5728810da6cd5f0a0f2fc175d819366f1662d36deea41d6916838d6142580665215755be20c9d85fd3698f8a77824c622f2b68510b2b5809e58d266ef694b3f61b0b9d7ef598607e86674fc37f4f91c6b7 +c655370fb31b8b3feb698f239d31f2fbfd216c0cb634bc9b663c8839b8d796437b377c609a42595dc98aaabfad44872c2add24408fbac64d6de4924d9ecaa73178f1e7a8683ca35826dbc4877d0e5028c5da8df1d628d4fab5002e802a5bf065c0fb8a0a9539e53f909af5237349e0c010cd71620132e35878468d1cbb1cac1f +c403662fdb98cbe47a12f5dc14c3e4985dd14ee7b370bc3032376f0d15497c0d096297a40e3b2403a3a88c7951f6a226c4e912362fb9feaa82277700ae43cbc21875b6a17863526de463f76950d7ef46cadced7c12499f51aa1725bd6ea773b497b67fecf33318feb6d2c15ea7154643dce4de7d848e66c31a0fddc11ccb3487 +d17de1537bedb8f9ec1e853f2555a9e6ebe78c90cfbcb6541fed342e70af3f6fe6e44242bba76b59bb280751937c40f40f93ba16cfea14d3de2296262e8e7976ab68618cf8c277dfcd55c755ef089815b3606a550e9529017fba0a8c53e5e3d180bc6684b002e5b69b2427e355301d4bae1b4be604cf43fba5a6f6c25a11a67f +e710759a1e5cfed708a8adb70f7244ed51227e30aa707dff507aa4bbe63170dd758ac85e9219ac94f1265b6c23a2d529457df180c03fa8c226d037006a7f10e1c11e2ab38c23f0ac995f89235581b2f3bec81f3e2ce7e9b3201fab31a0aea07b3d59be3f79ece7d2a26c312eb0ef1455e503443a48cae9c11565c9021a5a7ee7 +cecabc344336ee987da7dc3b0dd4d8755c6aba4cde672b4d07d6d53c76487f1bf28d2df46b09439dac842e8e15f9ea8e466a43fd9f3930b9c7bc5da32da2accb97e9aa677a804e06ce14e35108792f5e9841299f753b55d0e49d53d249d9a58529fc9cdefb2baf7046fcfbb342b9f5184d4c62802e56d763c6ac4f4f7e70e6a7 +dee53b082a20c1cb1921b8e006fce28e75178d8d53cd76c5a79cae7074017997fc696fb9c57c66691e933b6b8f7ea5efa0e483e57b3f672a8f0426a3b384c3a8f84d62ca30182955117ae406308d1667f40ba92ebe9713775ff522fe4f95b0eac0a5933cf00dc246ffd3e88f6aec0a7f6fb3ac0badf8a30421717eb7ed29748f +c60f86b2b25b47634097c502a0a2e7d96362820f12939b8c245bfc337b3b8c0a8cbefdd230cd7c6a067150c0d012767d6fe006cdd0efea7f79a01631e2d5c501c8ca65bf4c24564aaba95f6b9da845d839f55b30732dde8a14f2a22f3c54af35c320bcd182f4e7173244db5e59d6525a799ce63f926ddefbba7b6dfbe9000e7f +f0546c11cfdb3dc19cf4c7a56862822e284ff252c93d975e84dcb1d9fc0bbe76e999206bf54917ea3aa2ef02011a15bd48acc87cd525eee170a9ba55d9d5710fb4d654e0990e4c58c603223f146a92066ac3961b7f0e34ce114fe0d52835ff9705cf42114a9140de3ae042ec97feb8476d4dcb6b2969127b7dda2fe741bdc27f +cee25b89c65eb5b71207c0a7132cabe10f7c5f965da053860cca2b87b8499edee7ce1a41fd11f2995d68f6ad760ebdbf5c5654f61b4dec6e0be32f21958acc147ba10c545ec574635dfa66eefcd07c8a18ce909e85217eae48576bb49d71225b4f9e9471d8fca43ccfaa1ce5b2ec5db9756ab96ff992641649ffa48302a7432f +ddb7486a40acf8b82b2b54ae5e068238195179ae4284c866d5bbdfd67f801457bc3be15d5ca79062e6f7326ad56444786ca0d851c90741cab6b55e32951cc69fffb3cb13c06baf2bf83f1caf8cac03049dc0fbe7a3dd1f092dc4945ffc34c9497f7a1a56b5fb16d65c6a253dc9dfd1dbadf72581ad1d149bc1658fe00a5f80c7 +e73a53023ec34363620f9b7911fe0d9c250436a202a5dd6d4ff6ccd4ab9fa366c8091e325c0634fa25a5a6c0ad3221344dadd496e68e73a639268740b872790d5b824fe2fdea6e1f6e57c3cf567944b8c8dfd9b14fbe60c7de6566bcdebcc573fa57d6823371ca6a9daf530c21413e0090d4fd36877ef00c0a582c914c9b480f +e2b2c0dcd476a66e1d503a31ce88620f4a12ec33d88d88d221a3aa12f518e6fac89609deb22eb469f2838dfa1c926b31d6ca8685a0fe6cea728e3429acb3264ab1f6e7207b1a5df1aba9e1366856adc3de2942c63e9e0412a05447bd0cfa81099e1ca646bf663468e18050d5eaa5aaa673b9789f3bffe42338a8059d1ff5fd3f +d2191b9fbbb07d3d52975328114b582b1c147a9ee10049731546f47edcb4c0c4353de8a2783c97a71f309ecb193628e8d84097b19b654602615cfaae77d476b567d8ecda44da94e49991c1dde2663cf5090a836e564f9ccd0deebc4a791a577314a6ed64c75940d459967e12a8b13fd2a250504b501cb4d1173ee9e3e284999f +eec2a1e91ee5b6a1f28fd4fac5e560720c89b78e4b1f672d7edfb3fa737cf9d68eed35ebd9c0ae4a1aa83607350a400fb8c31b952fae04cb895c5300be9552af9ce6782ae48f4d9da4fdfa376347a70ac7f69ec6a82008f596af06d258b5cdbe99492c3ea7f02020ac918076a13524960a9aea7d76ec15bfa5bd56ff069155ff +d71a403ee3c57289deb400953121a0634ce5394b317cca033e2ee1320553e02678057903b2021d49ca42961c4e6c90aa0eedeab3594393bca58e013fa9d156ba4f8a8b313d2ce9da53c3b6ccbb1fa0e1f6ca8884515acd902c54ef757f82700983298e4a857b48bb13005d8bf092853cfd952683c6f12be8a7164e6fbf8cc91f +cbef85fa3496eaec09a424af7fc9c3cb7837a0ac442ada8bbbbab0ae2e084e74c97582d461ae2bcb0047713d841023dda5b7409977b1012c75a643f5d5e9e7fbb29bc68d15d5441c90d67cbdb29f9d12f93ff4103352758cc8e7da9e295cf6ee906a3f1c5160824d84408829cd739bd42b1a1a3e49e6ffc6920c1c97bcfe9477 +cfa0360a32f66136d50bfe96919c51602ccc7bf171d53aebcaf4485c68d51e19d0fd027d7f92543964512e134e3466dc45839077cec6f5d8b221b0cf9dc3191b893e7484eabca0bb5b36b8746029fb800a687559409e632ee1a6981b0c579f2ede4da90c02fc20213108a3c915e77c3f38e4a4fd8c34768249b26dfd4249aab7 +e930ebc09cfc2892c2d188cabfd411518c0bf24329d75de426e239c9a2f1a698136481fc3c60ba24270698e050ea8d7904fd91dee8a0e80d40441a5a94fb38bcc35cd71fa8489281951329f7f1ba93ce9756496d5af51db79f4c50ad8f1efef1c96d57ff5b7cc8764e08757e75868a34c3062fbdc7c6df48e82f5e7dec040cb7 +f9f6a8808c3fc5c36ccf4f6f829e4582c8de1b66afe1565c2c986fa1bc6dac1a52093c2ee9425dd08c57329e0261ea27b5a5e0da0ec67914caefc8218466f3bf3e9eab324230f91ccd15e55d068d41a730bab51858bf395603fb92a016c7c53025234fefd9a6c97c768738e9e6f7a808c0b072c67cbb82e3ccf421c226bd1baf +f87c216ca9655d443206f90ef9f616096b2d0f29840ecacd445d5b02b90d2054fcc9fe89561bdeb580e97d6c6392cb025e572f1b5b3d48940eb350e6b96a06245c82755a6b07205b9bc1575b1c34cf401568a2aedef24ad112996f7500b69f826905464548d1d1d93b0c9fc3737f91e324abfd420cc0fd7a3c69b79181ade07f +c6bc8bcf422e4c9a836f03dd06a83042e66b54e4af382743a4fb0140c330ee03cd400d9544bc838e105e1fc918ae606806d4fc1f6f78fe3e7d45b1136bc75eac0260cf59eeb835294ce7a416c5e1ae8eb1030c8674f7acd82ba1b361f3af77a6fa00a41acdcdb99fbf0327f5655625040aa21b7402694e1f4496e71ba47ec0af +e2ad813229f3e7074a7164f67b064ddd014d9ce8ede4d2305aa890f76947cdffd20007e0505ecd5db378f94797d9e5e119d083bf5d390da7e8e41afba40b5e637e632cbd1adbe2d7d35178049e6ab668b818ecf674c8f156e36080ef2ad293240d0b91894f0eaf509ce68a2e796c9de7be6c77d0c67027a9ad36cc98654c0c0f +dc19459e02d7db587c1c5d2a78ac0cc270606140e7c33bdd3774aa19dc8696f542e1ebb9eae666f085438cfbe5cd63a08788109779245c10e0c93fb9845b7213a1e466d14c0a3f871afb7a1b7c89ae679a5cfcda87db43a5bdea13bbfd7a91f3a0833449244c56730723d06af43631f253b9b4aaa78ca706fc85bd57caf6a5af +fc5aac44bebf4f9aa2eda747c354bc6e529c18137cedf734b67f1b733f8511491c6b0ade0dcf43ba6f035ad80deb92510224688515d2a6d45f47531eb174e00687e81153d9bb9689a206c58e06ae2dfb40457199fadfe0343745adafc115c2e585026b87f7b8a08c7eab5106254d63a958e721c5fe5af3ec4e470c7db9e068df +c1dc85257194c54961322576c9f74ca9cb0f266331549a52cb659959a77fc2977f868a7dee5595475847b3ac78e33df96f3901369fb68d11ce0df155a8c3775bd6faf22ff18017d018d0aa301f8af5fcc5b51296f928a427aef3c1258f7536567dd89f0b87e0081b74ee68f84f7e5f9a21824fa7f01d664ba91bc35f9035a6cf +e22e90205ae0813a37c3a04ecdc51f27623c6cdf2eaae36a3da60a9de05314202625f7b5f5b1587f302d3540ecde8a8744aa598ca2832e309bc6376c0f78f0c2256985ae31323b586dc75ed3ba76fc4d6717adb9cbb4e956b31f356571f39691fb9ad6c11882626b52fc628e298a6f0f618671a182642fc756884f3d092a83a7 +d87ae186504e67916ebe118475d05017a13757a33f9c7913902fa38bc20c2bcdf164cd5336eb6198d5894551514c9de3947a3da4939dc3c0795a397cbb15bff61e5a1462e90250efbae669f0a4d5f7625b26ad49723a4dfb22480fd5f7ad5f8d2cc61fa2194dd6d0601cd06ee390a513404266a386996c3c39818761d90fc587 +dbfd8eb2c169282f7897553879993c6eb55fe7405367b83c2592c6c18dc10d790e218f4a01d60373bccc9292c8c02372814efe30a7aa52fbafc247022ed4c9f786d4e95312da46dbd035252346535216c7b23f39e06eec7a7cb91c17672d300b087436f2a49059a106ecb579bd335d7625b4210254aad907f645b01a80952047 +d1591378f9452b02db1d898a288d54782fe16cf922b82c753ecaeade3dda23798ba0d754f73ff18cfbf0f75304510064fc3700b0903f4111483edc07d7ccfe16c147891e28430f6925f0081a00ff4b084831f3c43fccaa0e37b1fe24d25e193b26e8439e221ac18032c3f386caf866b72adcb3fba1e46aa74cf50a695cb93637 +d496b09ee671d64fcc26407a5eb764851ea7ddd0611c5179f9b3007a700914092574b69efb678ab7a7ccd91c8a61872bed4ac8218cecad0345de5ffc8c1576a45be4d52f1a640d9fc3f23055e940b74f30134afe29f3290dd888d2a2beb02e09f95f8010cec7724f246443d8637d08bcdedc2b5e183f2fee9ea57b80256cf53f +dce41e52ebe5cfc1b9db8ccf14d96af6182ab5a2d58a5cec36fd2f0c47ecd7789e1bed09ad343dde105db78ffccd850bc2cc3d3ca447d244fd5cef782baeaf940eb98a88cb3553ebbcc6519a74e5ac6e9b6f5c305f139bf61bc525224660dee028cc9441fc397e3dd0a656a00fdd571434116869535c4b8b5693405f7373e92f +d5c768af340660816b9ef6a584a3013b7c04b7f3ea65082b48a1e866c871909b2a49e971a5029a5808a9edeb4487931d769346b01f45ea4bc23415616dc8f82fa6c5bb24330c4c7dd781420609f78a4a2db4fdacd3afa8c8724d51a5265a632a5404658bcf6200e4f6c69a966b788f03ddf8c53ef6e63c52e2c8dcc2c0efff5f +c415e5a225f30efbf8369f2cdbd77bcdf7ae3a9f320f890acd7b9f749580a3a881160f9b63956f94260d6feb296be9762fc3a31012c8c5d4aeffb8dd8bc574662e60179a7308de0021562c075117bf9829418a7d9cc138504f75ff28f1d9b478a6b63f4df77c784717265c19e17d9557bab1cdcc96c07359c2baa03ee02ab917 +d6d5d4a583aca5041a735c5e11dfe40f750cadc3cdb0caa707e9395e0811abd07c57a14abbb3c1058f58d843199779ce10649f24ed5520e360dcedcb3108275928964e088c9f60a2d06fc74f7c1f429481779fd11d767a2d1ef9fda0f43aa3bac61dddef4978700c49f1836c10193e06c4ed8535fa87cad54ded4624cbb73e4f +de9e74df4d7fae28a4d572ca3a68e9fc27d5e7c2d52bdda3d99bae846687e0d33dcda767e3124935bf0da211cfc11f6deac8cf0815e4c47c1b93ae8d0ce7932b2e50aada9cff5e82670c00082e15894c0d8d60daee1b96c3dd9d599fb070af709742715b9e3076ae12e2bb0816f5d3e0e6ec64de650bc9cefc4c5d9c34c346cf +d612f460b0e0f5e1d9db04d10c6c13d2fbf06858195f968df4528694af69126c389f22c1184118f8576e299b308967f6303d21381bc78398f34a04ee716296a0c1a4a08f54aceb78bbdf4190e3649e2bd2b2c1cbced38c93366e13f10010dfcff49d3151a3dd184ffe66db483c5b26c4220016193eb8c08f45dc881f01117467 +fc347a2f6226df4904a01d8bfa0967321eef19d84878ab2042d89802f9c66173d61959d1d1b0ccb919582754f7b6f1197c71aabce8d5e5e108df6fa89c863bcc11f337ea80cab25f05e58b700c7b193e4822bd3ece4d056583b06f67326eb2c3850770102fae2ffdf6b50759d9fd02d8abe1103d3a1e26672dbedfce9d2b1957 +c20ba9e3cfa7eb45287d552093be746acbb1386cdd88ad01b84a5dc81a4c126a5ba3b50791a26b3742ebc43ac86d04983e425f77a7694ffa657fbabbeb967faf0a96bf0fb6c8d7c1d6f6dae31f59910471b82ba3911206d5588b76829e8fbc10f30e40c1be95a93f24eced491c829e3e526628a177ace94066bda9bf908b410f +c7fc66a8b75136f012382a48cf4801dc0a98c161b0396993a96dce37b2068b0d11725543b7e23d03d7ddb98ea4528574ee9ae1702e1a8ebe04e916e0cd12302fd981f72d179ec20f4b362c56c61b33d1358278f6a8ed84230001755b808aa421b7730370659031753b55946f65e9cf6873da72de4beb53f65bb2b35acb69c407 +c00e75ae513272c727f86ec06d4aa8f62a81968c86f0a9ff46ca327eadbefa277c341d34df6ec9a204ec4c5fa863ab2d940bdd4e72e79e19aa5b53c5b2bc3da8f730262045310f253e52f7f54c432f9390851781f019ac85de4f4315570bf647fdfe1608c38aa6a2dedd446dac132fcc5737dcd259c05da572536bec03d1e9f7 +f695c3989f89f94bf5f2b39fc7f4acb7a4bdbd582ebceb6c9dc9bc8eac6bddd56a4d9151400f6e1bc72685d796a21efcc1c5fe6fc8883be30df07f4ab03d5a274907da371b348ea2b536060b31e002ab5c13fbeb5ed1a5dd5166a27fd856bbcab782631d6a6e050029c9186237163af1d2ed6d8ed165a083aba53277da6d006f +f8c058d895c87296974e2d79d91d0a8aef9fbbba43664c15a5944dce233e25eab5596ed4fec6c5441087bd047f2bec117737c08689dd0cf8ec10b81b965041f2b87ebe32e2936603fc96880e79882a1dc45e885034c9863688f656b71aa85e1b8302a6465b2021ac03b94e95904519bfe538cb3c492787885dba4ad62bfc5007 +ca64a8408574ec59289a70eda1c7640713c1f91d2b93442cfe7906351e22f3ef59359dc32ba5b8c713bf40f67d1a2d1c1e968cb140d0960db65505f3e6431b24f3fb1dcb708c05e9d0a7f17b2cce663974c707520b65895593b2f91d15d6e7e6d0f47cc34af5e914ad1fca80c2733b47bbf8ebc75e2711719435bfbf20910f3f +dc605d82e424a8d8856316178a56602e6376a132044ff4cf81fa30c7d9f0fd848ea5c61df7b2253708a6df0c74f242ec1e20189bd0ec1abad2041ee060eb8878c68105036b22a4166bbf0ffbe793aec632d2694ea5ef2b80968d6277e95f35d60b2f11b1318d94bb3290707bb0dc0dafba3e85228f16b625b5338cb9fb0cf197 +ccc071bc55210b0e052af545678d38865b8f8220d729d1bebed4a27e7f26148978b6d43cadcd29520b9cf236e30c0906df5c24132e43002d57b7e962336c1e75e0aa61d34524aa59a688ec4f9371722e4706c076bc1cb4884153eb5c7c1562e5e916e2f9b79b484edc34dd5fcc1f70fc7c16d1cdedba4ea68ba60d1afc6b660f +f485b5ca166b41b05cb681588f4222d29a5207acd2f22a47679b942e08128dd34e42a261b1d351f6ff640b6b60c6039cf6efb97833b26cfe2edf20085e7106a494e982fd5cd7893cb170be6cb60389aabc5ac88995670eb28b412e533dee30629e61fdae7d36cf7a00b2fd25d2db14749ebe4fe437f90e0a78da57db9e1275af +ff7ab2cd425c8135482beb219113de2d0475b22fb481e3df2445b0a4f3da5de6b04542f8b2f56dfda8cc01f7e3281ab1d11f34356ecb636cf6eae922e760d538f77d342756283c6c79809bd9069b175b4c47cf313ff34894a09fd0c97bb531ac1ac1b88e36f00addca9f3e5c1f85d1273c56897cb8dc995449313430d6ff982f +ecc498746c17f03ed59e520f5b1643fc5f147909262124d7d4b29b18257b18cf0cfabe25b157421d207164ad0a867a7ed7d1eeecd050589cbc2d28d9b037a7a2ec520819b0a38e64d1ad0a1e39c1b8f438249b385dcba9cca3f1b02e1b53e8e4fb0ab6d1ebe05ad86d5a96068e70312586c38a449dc42135250ce989bcb32887 +e73253153e3e0921d82e52b29854115b5a4f8c52898621bee9e57901580a13f34fd55f7e18432cd34e612406ff4c1dc2fc584a13b5ea4c904a7608d1fb966cbd081ef92ac31f6735aa89199269f08915b05a71129e821e0cbc981c4db950c18f87fac647c9917c0d3cab2d1eed22b85f1ba32d64df876f8e5d8e6c97a39f41cf +e8cd6e08a0529092e5e9505c4a1424ff4c8aa092ab2336af1f41031e9b8a88de248e52d39c9b85f0834cbd37cde2290d73373c8b6f5b2e9b557760a574967568fa429e5a3fe32cb97c465ae2b020db0624e5131b59b6e2d0beeb5bd9b709ac0d9350bdb6d6b28d1873de26c0f3baf36f3a1b96ceeb72e6c6898178923d815dcf +e2ce5e15e723450cd548a1253fba31649d88eba3771c32ddaf356b0acedb7b938592442659dc8e9a490430cad0c7305306cdda03e1541f1aacca911633e14b47a77f4aeab3da7e263f0c3cfc0453d28b3f454983ab94f25db5f3ac0c9e665cd7dc646e34ac5edc8345737aa8245b6df756a5bac06060d5e80d86af48db2551df +f52032b356ce2a2d1cb4d9fe304f4f039e1554f4a6b148728a97406e04c1b86d3eebf6bcbf3a6ed34d10c4c972d7690d617d700a587873056c9dda9bf570b06d2bde3988d6afee228f857d143af4625ff63825bec869dd761285d8ddebda3aa89c59d455877a368c074e87a6c1f2817079db62d10b3edf0b403e8db4731590af +e5bbf15e5c2b9017d58f7b0728e50aaf59d81caa33a9623dea91a0b9e58ffee88d253e7a626b49a84b4417182a509603ed452b28f92420aba04a2b637a616b317cc6ffdb0c98a3689548f3b8e800682f2828ad1313b12487d6160d4e467ea58ae4df44b004f367e9cc89f476ffe508a56ce6e7233016be2fe8b20036476a7ddf +c5129d04ed86ee8c03e14c49014e02cafbee86b0c089cac8e3267e2acb96d9c1639adf7d0bc68eca6c366b7d3921b94c84ed508153fffd696895576419e485e5b93ffc8cb6e1ab6d0c60612daff6a7846297a561abebcf2e90b60390c2f1ca12d8586c7f5ff7e1799119a790bce81b3a0fd136225c198e88d1aaf4661fec138f +e59e15ef388ddec2bad24386162e16cc53d3ffc756ec2391fe92b91edb7fde66bfb919c2195e0a4fe6a2f823658afc7ae0cfa11efe4e4364209047c5f66bf472559cd01abe0313ef6b9331054a39d8dcfff3ea04b431a1de7150564dd3ed9855d3956ca6588058d7d32ebad83803d36238edb3092c9e73a24b72bde70c54e977 +df7054c9589068d420dcada6e67779178bdc8b5244d14d93c2c0973f4c69ada9930f378205aaef72d4fccefb2f692d4595027d3d6e22842861dfa7e5c4abbfa078794567bb79d30a92a5cfb1839cc170f1e092864a7ba7cc25a75f36abd7610da812dc641beb325c22046b0543b5fd801f2c45a491f7657589377531d28f53e7 +c09733fd3bf69f50979cd6b96e402b470c18b1371b9638e0e72850e6d9e437e13a3c6636dec074f02fbf156293c702118889a77259e00b4f565f1ed09d032d9f7118a1bbfaf863eee3148c623b3018a6002bfce08a587500b0e2873df1ef41c00c021c3a162c08f7c978f180873b7a396a2f4404c3a02f9a8f027d9b9950724f +c15c1d9cc43b073ed3c7ee2a214cf5b8e50c3f706a793c0af4f10f2245673579f0aa0b3ae8d5b95aea1054dec657fc9403fb5c11acf9e9706d7cfd55821709ae1730b2a3bb3cd55ee16284b3b4509a0e4aadadcfed001034d40a6b8413a66e19fbff726ae973890824f9a3818a2c0dbe58e01d8b9f9c9e837038f416576b7c67 +f959bc9fe3f549829b0a58eee3a859826c16469b16278a5f8ec0c0173c66241eb380b79a9da1851ac3b7e5a018caa00c3001605f5c4b08ba739096de260e2a15cd57594bf093e331ed8d2b91c1377bb702dab877b7966fab97bb036d66127103c5d7a882ea7f9647f28a97d6d43b61559dcfa28999e8714ad56a75bb21ddafff +e97d9cd25f7dbf3a6ed72a85d19fbadbfa5e327893156549a6521d268983dfda97e046ca4f7edc4286738395ba6749d8089425f4156c9e06f4970b0920a05b022b91879f4e8144d3437746c11816b619d8ed2fa9ab55056e2018714dd7b3c42f7a67cfa09946b335bfb1945e16f993deb6b4dbb6ac5a56c34e6e037cc4d0d627 +ddafa0b99be321255bee3579d73de739077360093cde626cb52561a5a3d6ff677e91d0cc7228bc76b328c3fa6a0d3123c813e91a6eba3c08b030f9d599771c7ff68495ac8393c6f96b7371335185ec58aa0a089e81b72d13c9fa9126d971bab0e995dc49b7799dd6f16f8a2c2fd51e61cdc23f35c6739c4194a4051fa987df07 +f6160332bd9a042d52f3ca279522daef51425bda2989d02b332c903f16ca7d2f30779017043f6d0e50008e6e63dbe0ab64cc685831be9ddcb51c999e4efa7ba1f245b6372a2f5fe3972303365cdaf0cd49dc1628575eaa4cd3f2e601f21acf98a68cf625df7fe16cc16558fdb76ee46d61bdf6444cae3961445f8355fb073e67 +c46758385f139522d853a9fe5dad84c02b41d83883be1ff7967d9b014185bdd1a866373dc16dde3bf584457ffb95747da16941bea4c446ff3ca824bfe78b3d5d87edf89c4c00753d3a67d1080af25e8683ef8d4825781cd0ca48a1e89858d76b888637cfd916cb11a2cd2c691999e0c5ded2a698992a8236324a3aa99a6d027f +c22846ffa741278b682829f5d434c85c0d5e6ea716a3dcf046f81e7c809930740be33a07b057e3c8df727f6bbd959eaeee85fbe82121e3965e35c74177864a07c60ef705deb482f3f1ca9a82674abf8a7f94ed891b91f80f67a81b2efc85d3644c8b5382d7c2a26147be00d9fe253604a2b2e651c74087eafbc8fca72f6fc76f +feaf445c793415ac36557774752973a240a5e79d5c7863ba358f107bbd42a158b70997ce3b5630cf3e88e5bc621b1918f3b9d8566b2b7fae60bb0bfddd9b71f282a29e0b527e1fcfb52bf1622d137f0171c24eff15655586e8807bd8354e50bce966f0fea20b185f9e9fd7d92c41a3a0cfe6879d6ca9ada0fd3ebf703cbbd24f +dd698566672b99f935de94ad967ba991c029cef172df33a67e0acc1e82fd6e084842ba3882f5fcff2d6f75b6ad1460f476d00c3c5e7b87b0c6e0dd8d77f80f6bf81b5bd48c73e9a24d59b97356fd00bd6e2f215e36b43f64ed5f694b99112162b554012a384ebf4c3a97855624748b7eda168b6c241df4505897f4036cb98f3f +d0730f7ac7c0adb90fb60bb3586c4f47080ff4ead041f9fe0b5fcadaa7ec4b58ffaca980538e2460382220be01398f99d977c7586516e667658ca122b216c26abc887d4ca21e649d532880bb545ad6ba2e0c09666b52fa7cbc54c8efff4e04159328bca791f66650ee883fd96d1ccd6a27bfe5ac55aa81de7c1283f74a7c94b7 +d08c098c4312e16d8ef52ea58f1e2f31ac7da51cf72bb149a2316f1a24c42b1275c4c5701ec5bd57ebba07e33794e9dbfce49b4ceb75d0896b7b3cd3a27c1a6727f64f89c2a6a5abcc990b334beef06d92a401fac17c7a828563497180f2e737b9f9ee883b4a711af5a00d28338cda7161a3449cc4e266c84023ee60964e07ef +fde81012967065f6b04a9c0438fad13f0ada898d3f0fe7bc14f907262e50534f9a7c531089dcf3ddfab48a7529d6b2660920937068e61b94ef04e0c7b6b019e1170170cbd5429f807510329fd00eafab80094f9382d23127cd01b95153dd58ee090e859c4215c360a75429b465b0ecb392b2d52920fd47b01ca6d44b08fa69b7 +f580c5db7c66e1ea612372b6138fd73d8a7b8290bc0e68ddebd96d0c4fd133d02e542ba1ef33d58a67677bfb76d45cf826694a8e5ac6e491d0cbc82b7b61ac07bbff5f21395b6f5618df2fd00f416c6bf967e1882edefb4cd26df01a67d416fc9adebf384ccf396ab14c370f4377f92b15b3a0342e646212054c804bf33e0d27 +cc7161b9e6dc6030086ea4e5f6dbdf60e3e10c0514413feab990251123f68882ec40cf5cbdd3429563df0a45affaff7c3180af326de2ac3858653bd7d227808edfd10b540ba09ef7eb5de62c2f11bd21f5ba6ae3f40d67423063e8e5d55029f3717dd287e706eb7b7d87748cd2fd7c46b0c0c7eeed31b162f031a0f3806021b7 +c815674dee4c92ce5199431b5bf6e8cfbf851dbd208e7e08aeacf5ac668dee0e7df50f02c4c04002d8e20dbcabf77bf95b35af9355638d20ec2d15ab1accfc534bd59609fac3f30ab9e6a154127edce438455a9d35544165d96610e763f55a3cf7f2e4b95297076bb2eb00ebad1bd84f9da29927ddb53110410bdb7fc73d4737 +de94fb7f5f0ef6eb959d7d0b06bca35c991918a2f56754fd1226c2efd73a722bd282af7121f40e38036945776650b0d63b39ca1f0b540a1cb9f0fc9371764a5ca977b1e7d2da3bf8295bda86770acbcbcb7136854779f06ca0f98164f353b386fc985b8b66ac62720177730dd84443a799e1ae8782d35dadff3edbdab68a0b07 +f96467fe69019afeb04305f9a3e2894cb3e4ceaec49683a855e41605120d27f38ca7d4021a6801833b7b4eb842b856d8c7d9a270ad5a05617553a8e35e9f47f81f2c9861367fda06a4798a24847dbc8376b7cc2614e39890240ceb1a35f005a206de6099e22400fcef57f85fc05b6771d084e68dc522bce932f6a6ae30e0534f +c7391d8ebf65701b1f709b207c9176a283fcd9bd960193ade44013ad8f789232bd954097e316d1ac73379081e7ca2bf86a0fe356b1309f42f18cd19f3f255bbab87d15e4dd00bdc72dad9198dfa403049b96ebd04c09a27b01617f90f2bd7508280c8ccb9bc74b08be03336d2f329d964347c84dd320f9bb352a4ec70b18d937 +f37467c261172d869ce734dd386219f62f4e92b4088c39304e2b744be1db8c38bec82f807d1df243a40a7a878b07aae6e22c10505ba1e5c33e1978935b530598e27788bc6b7059facca37f0cadfa9f8e06581911244d26fb8b9d14767699303fd8fc5fb79347a696aadd39f895cce8871c1f3f412468f9370548254d80a39c97 +e362fd14c91e7f486d3ff49548b1bb4b3d81aba52e9b03be552fca23966a6d47ca0642eb98506ba293358b960a4bd1ccd549001cbfb80177112c63219a408051216b6b1bdc23841c1020eb7c4606358abec3fa8a250ab304481df1fe5f62e95c50261182c6caa5627c6aff6257b2375cf6c563dbeea7bf1c26aaa3c56abc4f4f +d5e0c3b2a2dc5511bca2683bdd0f82f551bacc3b00dbc25e3d8e5b7ca30250ea644c5d90bfd3f3fd3737411be1bd748d74e5ef646a1459441255dc0e4768e1d6ed51e251eab1008e8f616a94a7c6162b369de43951dd21a87ab0666f02cfce9ced4b39f7517d4d439c0e780305d7ddcfd2fdc49a06339586747977fd7798a2c7 +fd92e52e1b07aac61915228009e17b1f1fadecdb12fe3c346742dd35580273934e3b33eed0ff986bba619d6a05bbb07f0334463e5d91604b86a2cc177630b0e1c24e6dfd5f9fc2ce9ca704e1ebecf1c599d18da92173d4457b25c141fce6c363856510d2a7b1f005a64d6bfb82b46b1eb3d5c0ed4aca0b942bb52568439572ef +f0e22e36048c8c000a2db661ef665f847c28420722ace1abb3b47d491820d672db43438617ab9599ac0efc2a9233e4f3c7b4b80dae707905fff9d54ed87e578965fa97a12a8176611f0bcf04087a690bdc7759356230789ec894bc4d9516bec8a942f6c573fae0afd17ac798864cd966149b6541c706580ab92b1e3e9d2d5dff +cb14d6a7df3c33d331d730f6b6512fa680d137ffbef26788e1dbcf8370115b64e9fb6d45d1a925086f592156565c16c8ca0d2e19386cd4d8423755f9388d817dd3458ae2c18eba874ffe45ebdd4bd1af75bbced2f3adbde50bd83dcea4fa4f123809b4188f10b794f11a9c06fc1ab2671c9335525edf83363b697e2835ec6b6f +c83999c5559ea3c0dd4243d2937042a8b5c9aeafad86b826fc79167dc1db4dc1217d2d9e8a2cf175ea9bc1aed69703da4622f8646da795777f242eb318619eee39a425202c59d6eb3989f30aa413b86643d3ca9ca91c3c7bef23866618f037266d081b3376a4488416cd9745522ffd1aaa64ff2e2e7cedc5ef74398ba927147f +c65c823ff6343a024597ac80729350cfd51c9fcb39a9dffa324910688ee952f1199203563c0e969a47748f087a982d4390ef3deeb937ade4718692ca79a8d88b95f88238c3ee7fcc8b8df4c3ae439602dd2a57afb7cc328a360b851cc05dd39dac07df599640efc57c38ef73cf16b6382e0cfd07743b78e4b7d25ebb526a27ff +c02afee4ca779da3d84dc4d68898ea71cfd88b98c881e5d7defb12369c16e58be03f7476c80d6f9b4eb863988c99cb05d2d6556d358a98c76fcdee169c76eb719a0ee80726d33e182401b8c56788446078d19719bd98f3f9196eb2e0f00d8805057a5916d46af8321c26a18ca9a8fc116f4a0ac2d69df0d60b870083cb88489f +dadde698667f0676c1e98db1f1c3e81e622cc54a18b5928bba619a73dd9d59cb742cf9ea0e62acf5e813c92412e6b1e2cc8f07b6a2d79767340aebcfe5377bf53392ce821fb0af2f1c5e1e06c878f79ffbf76215e541040ae231cee9c68060fc39596ffafb0afe67ac0bdc1e5ac0d9e756a85798fe9c6b03f143532682fa8abf +f95b9da863e6ab743f00cdf9c8a1fddbd988c2633c2c48a9b7d771bb3923831d0e08c07db7c48ccb4d2dffe0e2f52388981fcdff1b37866f5ef35e8931a4d7e1daf2dff3a78951fd9fa894fc0f887a6d883b7a2f57a4a7fbaf696df28e2f869598af3db78ca75703f26e29076fb66a018c1f1a720ecbdfae9f81a5d8c277466f +f84d746f5a5ed50ec393a0f4d9de62af823c3fafd454ceb0237fb8ba76d05c03ba3b5919e8087d1d8e3f54ef7f9e66d22bfc8adf2b83b80686f197ade1f540436fa6af7c143626d7986278afce291764507694cd9a84acf8538c2a36ab47fc0170d69194ff809fa046baa676f0a1d687c3761b91c0cf1820abac3efc9f132dc7 +db253af941cffbe0fe573c71e9a73d42dd0205c4ef5bdd67a3aa3b7237b30b3d3217c91054d50971f800781a0e9c47fb06fbde24e41db5189c4248f9574cb3bc42ccc6d1e684ede5b88c737a01582c274882d578099d5b75d9033c7ea71a6ba0d9970ebde72d1f49ee9c4899bb919696fe97fa4433f2bed951791903b4239ce7 +c72cbf9f5ab83cd90073642ad06adb3bdb13bdf792662b0c0ce0bef87489f1d7a26e7e29332009c5d52e53728e897cfed15e1d27306bfafc97030e501b143c10652235963d3fd28c4bec6b7c3a5913e42f4d2c720da32ea7b380548b09415e90de9cdf6982a03ddec64a18d9ee9a628e13b2bff14f873b8e80223af5963f7967 +cfe1512850316f373c76ee5cedab8fb0488c0e6b927d95942922fc842db8bf487c25085c0eb8614ae3071a7afefcc7347233496d564d7051f85eff39c17d6a7f4ef36561d3702c216d9f3c9d6dc6fa46daa6462f8a4e6a097396fb53ff7fda07bf9afbcdb6237e644c2609a22fcc3d767ef2fe34d5d04a58447a85dc7a7dce6f +cd3b99c071b25d44022fb0fb4963094f26c0c37e142a406664f8a152632b5a9aa199765167dbd574ca5647d64260404081a1fd0b701b0976d79ee25ce752b6afc6d21503f2a24c98ddb729e12df02814d1c7a350eec85d6882cc53d50b308ee419fa8a1c9b25eb57e829b671f0fedbb8185afc950a92087ea33ee318668ee6bf +e15a0ffd31dc516fd3a73ae0f2be5da50a83454ef264d2dd339b883bb68dbb701c922169e923e088b3d9d215735b0754e1bfd110d46246fe0dff040974164c3f0b1f172ccfb49e3459ca7cc4f8e11ac7f1c5338c6792f1ecb7faae21179916bb3eea85c06699ee7306919f3f8cba0d6dc30f32cc144ac9eb67dd2d4cf067c3f7 +e8cdd8649bf74468674c0f84c63eae4667750f6875fc50edaac52126f34862e2dc193d6f739eba23f74af345928d378dd9829d667073306effbea802d6e414aefa93043334f51c12a2ba214acf91cbacd455c29be093b2bd11bb8a7943875165352d502380c0d305a6be035685ff420fdc4e4a8c0d14e858f6c96039cd61cd37 +c22ebef1d72fcc1aa7dcae6ec54f7efd31e602140f0f260325432048209a159e7557e05f601e39dc011e9d6633e0aef7cda26c2b246d006411cf6c1a1b014155b4e4435721035ed6b0a487280aeba1f8f361830907c9046a06efc2bff825a4aec6adcc9a87a037165e955b8a2947c05eaac0f6d2457249b297f365edac93185f +e559c7190a57c954219fd702a031766d54c46613bae3c48c091840acc1f518a4ec8bd8c8a73f99116dbf28d3dbe93e8729a94d5580de77aa6bd1d4940486d70bddcb460ed32c9b3f840614fd64fa595b1d3a96031f6af783b6484f61016eef45b54c1e444252944c38e26565373206dfe922e8660e0e35de8eee1b3f2f652c3f +cffa37d71e43e011f008287cf140222a923576abdc74cf399017cb7d7cb6a1bd7876ce100e8cfdc5ddcf7521373c53332fb27103b1ebdf234988c318bedcc2837bacbc64cd30bdc2c31f39366e90228e0d8eb4d7480e1dbc54697631efecb6fab0c68bcfd0cff9a958cdb3d340076f590b48043b217aeeb328a674ffaecdd42f +dc8b1e89c7aea331b6b41df124b4dbd32914a3b8cdb8a65bd211900e8fddc5b270a57833116d50be5f106c37397230a0e3b599a109708b5ecb029e19f557e898a3ea91f5186e71e94387744bd9c5551407053a6d643f4d4586d0101a7cf6a9a375c8ed1058e375deee9c5abdff29d418751313dd117ab86dae9bc40d5157fbaf +dedf669ce773cc99d8071382f20dcbb840b17ffeab32ee903ab45e5f303d3a5dfcb21fa314675eeac25088bd39cb7b631ced4e88d4db75d34cdf9a768307c090e84271db93893fd6a84bd392d4a4b81511ab062b5a6f6654c5fecf40fb9dfda90491658ad890a8e4c0d658d828d420e3ab8f956eaf06a3129445fc0f0a504137 +f259355db054edbc5ebd5817df729f713415b61c62b4c4122a98333060327f41f91a4f24f6efaa8e59d4c772969a7f8b9273a89369935a9492eaa6c64956eb795818c2253e9d10c6c7726623cd715beb84d302ffa91a1c4784531b1cebd9f9c320ffe0468d2c2c921205840ab912d27d4fa6435a32e6d469e028b7e838f3773f +eb557d04249cfd4c044ab6bbc802b5084fc56dc6a767137b67a62faa1a161df1fdbb7dcc59ea9cba1c9ebabba233dc7ab2555b49a901365d9937dd8b7badb68063315e36a955a71743f1256577f4242d371ec7ca2735542cc399228d1e830b8fb1b3c322a217567b82efcfad6bdf865e3b8487c0dfed494e0a2c3b42256775af +c12df638372cc304468ab1745382cd37dfa215a58856b474286dc7be7729aad5562b3e393d1ef43471a625b7a81e6302020f41eb0c1d20054d68c1a4399275acbe5107708b7fa7eceffd42656ea09436372ee8a39874f8be58696695faeb64bec19c84f673878518249817da1670207057c780176b88661800bd6236cea98ee7 +fcadb0283cba02daec9711d6b281f01a6b26e9469b51c77448bcc216d16fdae757b2c99a0b6ee66c1dd124847f896c32b4d2016713bd82fcf4374a0b5bad576dc57dfe3c3a67472b2a29070d5922dba916e2e5f6d1f36d50fb45a39fda6070dc648532a96196c971379971eeba1a36213e6a5b7e53df69543b2fa714fd4c804f +fc144a5f905ae38c605143a5b2d4879a9d718670f000a1b4f3b9484ba7e3e62065ce589d99df6d5aa363a13f6aeb601d83e6ad88b86887bf86ab1c50727a2556537a7ae7393b207b5dfd3413fdfb389b079440326526b5aec06319e9851ac1dfe48734e47baed58f2c7758a2cf5a0f96358212e023de3768627c086d826eedbf +ca9c44b766b5300e1b493ac54c796f45bad583d2faf05b62c9d4ff05ee22c1d23a1c73e2517e3d7a6bfa4fa0d8d1e5ced6ada27990c6f74b2570b4af04056b39e741d2d472e10fd4dad6f5bd7a99ee6a98d90208673d8d1db6b09e07947ef19e76088b0cfc54c8f1783b70a49be7c5ac6aeefd03bb33a6b4963d22928f849127 +e8264fee38d61abf933340de7554ceea91b512b2aff2062b6c91dd7d905adba9b51ad6ff90e6a05507b5ad0caa1756aa835cb2f5f2fd0eb71866ada1c77dd3fc31eacd68ca1c6d130fe69ce26964ae1c88467f2bd1fb93be763ca6d3826cb222d0d8b7d4ad4f181675886bfd0840ad02a90ef54179de13bbe4c43c0f4235db4f +e2bf6f9166eac6bdc74aa5f20220a5a985a14c3c80c6c131735de468e89a4cdc05df0c98f386ddf4bbf2c8b475f7386ce88c8f2a779a532d9ae118503e98edec25f55fe873cf3cb4fe2faab0eef2c3559d2fe6e7a5f055aac0a0e7b8eae275c2755c3a2f50c739dc0997b00f2ec404541f64970e56a7a084d60f061fb3494a07 +cf751c6232a9579be23a76c1b5c154c61421b83f24ecee61c705694144d230f13978685a6bb6b9c1a1b553f13f5bb2cbbfc15db9856f195785ff04fd635aae0a61a0193bb80579222b64bf0d0059a15455a63ba9fb409d176682048a906364d7f518f9b0f94bae83846e125105a9193627fea1f05cf68ae5a7733f80cd8dd29f +ddccccbad20270137ce0a27172ca24e55678843182206a78b47ce38e708fe625732d2d6bb63b7d9306b9a29d58f500132c6f3b8b5f26b6c1f6567f55ace29dcf87c52374840bf28bd5e49a83b3e158e74547c8681d80da6df3e71de59692f58b4df694a7a2f6601db3b71b5393ae2d5bfefc9e6a5214f6e572c6fddd7193955f +c1c8740fdc235348de319f9b7ce9e6dd7e9a75c9e5e678e27b0fcbfd329a3312557c11e6796eb70ee1220b9914ffab62b593477a21b22b2a6081381e3167d98d05ce78739114c617b2ccb365ebf73641a931564448fa86af4bfd5b0b2610a6637d8553c6175fe4ced425804ad2724d869571b04055bd8963ac74475b19fa3c1f +c2f48989481b8763715572f01e7547c00b487960564c47bc64d07d18654f95b472c9ecf374e1b61eb5e2b71fae199223e0b715afdbaf6ed71a2697c006a412990a96e8b144256e5e21efe2eeaffc8df090358f51b09825c90da80c4442a543c634bfd26640bbb163c5c93e582231a0ec0b3f51eef655df6392c8c026b1d850cf +fc3fefc66a65f091ca5b7b4b02d6f29dd9b0157b6a68e6891627fbc342510c5065c037b379b2fe54df2f235a840ecf90ebe807c1a0bc8326364af8533d8c6dd62568f23b77890b9273a6ba7eb40f1f6db583fe7c4011298a99c473a7e0e472655fe859d20b71c2d1ef7f2627593aa7721cd4a7fe3c5a677f8a25871d2e65177f +c508a1cb7ae0ddf0997573bce26a12a3e7e622c7d04d7b43f8ca30c7960d9e418a82545e426318fbafa04f5e431c8cd944ae2a3bb234ca6497ab27c0810392920d632927bc5fc54c64136ca9ed69d8706ed2f2c66af365077fb2dd28d0e223a9a2e42ac244145b5abe670cdf89436251ce70aa277e0e60a2a6afc53e05a29947 +d82ed0e5179acc14939a9d0f2fb6f7e3fa8a507a923f19a441498aa1da8dbadfec00519b5d1ea0e40afc534643c591b936fb85afcb8f45d9318fa6a23f707db457ce1dba12a73a85e428ef2ef184f60f7d28be62824854013df029c671f1c36b1b7970268ec1ad7ff0fcce2738f8738d0a5349a5853f3c87cf0d28fa6378287f +d103540d3586cd6ca00c68de1b3345ead590be597598c673fcc75a885417deef5bd54fafe2e37a4726320a7d3bd8ad47d4b7ecc269ed851ca5238ba84279f2ca6bf3a041643f1595ee70c9b252a9d706594a94c710f149737c7b8c6898674b6bdb149e749394fa9819a0ab1ca0d358b229260ac2345ad3eaf387c26e0e51c607 +dd8faf729aa57c6392593180f79f2e5fca7dbeacc0206a8d6c98ee463c384649591f5f8de837278b75bfc10f5b3f186a2f7365e42672ab98ab705b885079d7dbb17256f3d3bfa353a479ae4c5e6dae14718424434fa15ffed4696a46f20be34e349ebeea53979210319b51bf690ac99ef0a7a1c01871b1f4f005bf594b43c23f +da4df96369f52a1449c88d57205ed1d3f283e02bd9f78b026426abf51eb2ca1bbb100fe8fd067f124a28559d3a5af9dfc1acee60a4ac3fd7a01166728a9e11eaa273bce18658ff83204283a916b192c4195298504110c0380a10013b7f02899ff128f70ef6189329ff4f8a240910c764b101f1c013bd2f6c4caf9102975adbd7 +fbee2821df791574c79b5e16c52ed8b511102ba14306193a2ecc209de895ddfcf98c71c717bc2993d5de937fa2a756fbf76d17224e3857d6e15b6a87edc074967e67dbf60f003f8f480dcc895f508c6fc258a37111647d688f36d0852bc1bfd3bbd716134c30621426e1c7cc705db6f92d84aec5c8606f0ef5fcb1a1d01d3e6f +e94a6db97ceab9b02d3eb8ea2aa837520bcc5d3681ace4775cc4979ed1a31f184b9cfc6031904cac7827ffd2bc7e59872459d1d3f3861f6db4cf009e2a36faa333b16c3b44e5ca8a85be718a174124713b4845b90a9e7b9723bd9a5db2678dc3f1d7f889381cfc0a17bf69412fc3f8dee7ed4a4df33096af8953c81cb6d6498f +ff359ea35fe0706e898ccdd47e5d291b318ba9cc78a9fbdeed05946b14fa193c68c472466b64505333d60b7766e30d333468f8ec5dfa225709ea35df854332916af7b751dc2e52aa0091b8c6dfa3b57f38f9ba17b818dc56bd0b3c8c453c41ec07e659fb18aaacb0b95ddeb06a4b268fd17fab721d728358605230432355789f +decaf9b1cf7ecbafb003a1574ff518fcdb3eeb3c49ce4ec4dee06c6515dc42a96593971642bf406b3956f76ed2eeda783a07825bc6616594278c5c61fc26a6a2362df28352dcb03ec105e00b8450c3b68768b56f1b764928152099e51a74e6d9ce0612e002f2cdfc59f5c3232a331791691c23e757ceef15ca2c7595fe1f8987 +ebd02a255349ec0b5a193331216faba2816b7c3f719d5b08bb59bc248f15d9f90300f4758c35e4a641d3baf82f362f5fb9bf8f73310497f2aeca5bef649f457cff99cebcfe7c71592398709135963262b6e6406ea87eb4639b47cf325e84e88f566135bbb2d1d6660bd1a081d8e0e90ca714cf7352648fb8086752bd97256437 +dad1510ad5fe6147f3b76022d7c8e46866b3b98de94e89e4c356812836ea6e612908ee866166edc30f755bf132c7e95f46999041171f0711f08bd7a6cfab0ed53473b3888edbfdf8a0d03e7d2f295ffbfe3fef0947efbeaac4f3251a990aeff9f1085b9a89e7d8d771bf213eaf6a615a9e96594c7d7b1e9958335d1a8e43bf37 +e0f5781491563401852ddd409d9c64649b1300273c125c2cebd4a9ec80f6adb3a79ed384446cec2826a4ad391e4b3bd6a746293aabd27942dda585dca80f0a021554fa1c6a8491f644ab3b5739fbb37899ed5c7f4d87109efed7f247b938dfee5bf0a5fa411e0354d95e011d188a92224eeddc5b99df3dc072de9d2febf5ddf7 +d6f9ecceed47fa0a5d312dee816a93a9d9dfbfaec6881dd53b333a944f473ca18818df44ea2f27b309edc45dfee28f3e9afbc3f3e8f4d0956fcf1b2ba38e18065c6b98bf8edcc1be967863b53812637b03897162362ee83997e7d15968337bd57cfed0aa95cc29eb1cc18f67ea1859f573e213106eef95b7d80334e3fdf6fc67 +fbd38e03ce8b3b914f3571f4935d871f0f2c823fd513f40341475351032e2f6d897952a7475087367dffd07cb9d731e6feabed875f39e35abaa1249ff4437fb19b90e29da4fd6d476b5b668019f82e77ff7d8cebb04dd6aa83fe608126024cdd566971bd8e42a52031d8cb1b9a434ab854f926f6ac6357ca609fd7fed289fd6f +f38df426d697cf0312ed6be0324a6cd174ffc8bc93928effa78410ec0dad25a7cbf0817771bc6ce393291798dc517faf31ff16a4d0644ba64525507a8ff137875347865e6a893635f36d9b69f9d507e225da9155b04a6c0ce9f14f04c4d984f673a7889779aee7c67561d9fd3d86c84c91b466fb39ee13afbd5fb45bd07e048f +e43ea44258deba243cdb07e7dcc053c21f32305f9f24015a7224d15a46d8da15519e1071495636c41a7a1fb762b9ad015e2404a8511819486c8baa97fd852c6b1395fd710bd993f1d5706a92261d91a175e94bce7d8ab5aa0f6c248d51c5747e694f9aeeca3667730fd226a9443c99722e8d7b68292b7d42d9b5eb014ef5b21f +eab85e77994c4191ce1a425125015028a0cd83a4335ecb122574a48b85b4e40f0324320c10c2f13d1b54fb9ebcfbdb0ed9eb0066cacf24b5c8da848fb2c70bc8d8c364ac6a895b9870ad4d0e9648ca12a86c12c401bdd9b92c5c4ecc9f531217dc697c00d9a4e4651eddeaac7cf212ccbdfc277d0af480c8c4b3b8065dd646bf +fc5791412fcf334f5878469ab0446be1e0dac9dd45c6e85126bfcb9a30e48f0d5b71bc57c3d96714cbda69a76af95742643ccbae52bcc8c6cc7886a55ef8068b9d34e277fb55c952e7e9935d0591117420e853ad6afc428d35e9f6b4bed280fa8be8eece971b008ffcb06558ccaf96bbb8373b1b61b12d3346c9bc06d20712af +dda07cda9ea9391052894f57290fe12c10b4ab8499aae0144d1e9442b2cc0ebc47ec6415e8dd29ad93fe46304c6e782e44614920fa5f6986222ed82e3586bc185b447b772b4f68dda34e5a3efefe63766c4e8bdc01f518dc9b429b3e1df0fc8fdf84171643a0efa3b04495d200b7bc793d7f308a79d87d53ded3154a26caa85f +f2a2692516e4139fbce47b411c030f58525fe92397a41f058c5ecfbb66af8100cc43c0a550a4178ef08238cda770331d2451f3631810ced63f1ccc92bc93380a9af2230bd1515fe15059b157aa5b093bcb108f3ac82c03097f3457a2b61bdc356eead8b89eb2bafebbecb238d01c502fde4e6aa4702378e51e9382da0b4a8b1f +caeae68be25e395d5e1e2ae90fde15f1df5ae721efa5722019ff79030f1042d173c5c500e67ea4a2953531505c4502125519370ea69d6355fd70ca9ada599f3cf95606682d029b0b43f17a4d3ecca3e4c606dec6afdd8e5c2b6aef2ad90bcd7e614692952e9d68831034f67c4de12bc596a61b9e60b6cc1b62f50a85e9505ff7 +d22d812be9acfb94e278852ae30f323a56c8ad5cba1d30810c5d45a0213f478da2dec62d685461e02856bd7fa52ea84d07fb06f4d760fb581499b1e4e5b3422a4f26829bae4062cb037293e340553ad141a6089978cc0d0248a6467d1031f812e828757adb6a7a2105f212df09ded57e1aeef3ecaf62ab4348ed2688358eca7f +d22461395293e8401ee1e4935cbef16773ce2b9e1ba56017261593cb605ed13030d5866027a772f3d1f3a8ff916bfa180c82a8b7dae98c4e14f0f5b99d80305356cdd6653fe472b29f1ff4b9f8053d699d3067b611fe31ec5751cba30aabfbfe12b6c1ac1281170a8b21941128420ff8ec0c55e72488be002307b2fc2e77f81f +ec10554dc4b07d0a34b3d39e42a3b8ad58d1cbfb7dd4ab0691f2f87f194854137018acacb5827d4a8f5d089b1dd16ef3f2bbc14568c9108009a2f1e910ba68d9db15da021eb510db4f923b080da29627cc423cb0338e5366db7a873f3246173a2d1b87c86cff5b57f2ac0aeed9a8b3e0788c6f0589efde292b3f4f2c797ad03f +cb82ac2d32a4ebcd581744fd451f89ebc64737e7e816779bfd1d51f25d1bd7180853b428821ccbf8afdfb4da86faee4cf5cc6ac7d3eb73decde9a5ccded0438df3dffc39297b709c58f1196421e3ee9e8bed02f938d43593584f9b0a38411c9530a5911a2c83cb67d07ea0e9b94e3234483260b08c4b86ed143b5ca429df2f7f +c6ec50dee31408f0270a6910c0edfb7d9f2758cf2e745514bafcb5f27602125cf7a20f982e5f7be5dd41b39d6380374567e1e68ec9242a37f70291c9572306d38bfdabf35b28b0e2425d71932241b9935c96bfb3eb23b0f7f7f8da30a89d6af269aa131c2d5ba38c4ccf7de29635d1c22d131c0fdfef3d4874f43d08ab85ac0f +d80bbcb7415c19a4b2b4cc664a0036e96f92864b1170f0837ff0cc5e687b5c57ad07044432c75e469025fea25f0bee2b329e041404eb969a06746d39f256032e027541b3168f41ce29bdca04581ce001a29a55eea95cc704d9580215afdec8eec565a5793cc2037898f61692198880d0df95a9aa48cc3b3f19f4b2f7aab1d02f +cb4a314d1567c11100b3b4c3fab11fd13fedcae5b6fc19bced63e8a8ba0ec4c56016e2630fa7fb6aac4dcb53c05f56b9853e95ee98daf9e8a8fad6e8b5f381a5ca578b85ef06fb8925e0716833f174d20762fde9c4edd1d4d4bf1e8f71812728ba705d266a73d55fbc42296e5960ef041114e9980a791fd2fb5725ef49c37c17 +e8d4aee89a46984a8a8f606b68b2f21f33fa78a63cf1e9c9d53e429f75a70ad7c3382ae1d75c3c72782803e0a0bc8d5ed1790cee372683b8fe485206b2f685f380eabd1e3a99d8c63b447ab76269544f343b6fdbe9c58106919a7da54e6439620cc62f34b5938271bf721ab291157e6ccd02dd2dc24e37e847cca3e0c05c348f +da14fb3b1a8261c4b5eceb8963fe9d53fa616e306ef23f073d4aad817507822bc28e1aaa7c7dd34f922e232c78c66c749769bcf9cc6922653d92bb4d4355492e8a58a7863e201130bb2f0039177a9be305bbd4fad4c4fb8581551b83a3309bf2d1a619b0c4c3f77b73deef168cd382cf76780565caae089024c8c7ef7ea16adf +f98058649aa1d58f7a3f7cb8ae6261252d70cba1286c60f76b60796b62c80dd703f7884bf2f844894531fffb556cf9e6afa12cc095c4a7b1a03a8a7d3cb9e26704ebe4259a568f951b889e4d6907594266334fec95355df362065602c26152207ab192133e1e80ee37083bc4c2f000f095acdb1a02b2665d2efb56f0093049d7 +dbb037e9105acd2dabd9aa95d06825788b4ec014484c91293f0c91560fa4fb08d8b22ca82d8f645bd0af18598c757475400f5ebf6c55903d01f7b39c0d668e0fc497f93619ce54903bf21ec65be5a78e31b9b584d4f4350d96e7aec2581a82fa66bab19e5a7c90ddadaeb400fe4fdef765412f0996eb0c25bbd8a1abbbce8f0f +d18ba9cb70ee13a0444bf616a4885043c4714ebb30f64bb8d3430d10841d197236dda8191db19579d451ddcab1f30002162a5ba0e3c309256cfaf6019faf8790b597b85559b4f303ec687fd3c8c98cddd6e5c7d911791fe6714413e76719314c72688b7b2bd2bc690d6be7bb590f0a2996037e260aa422bc30f35086e7969587 +e1afc09be07151fa4a1e725d55753b16408f20cbebf6908a09c6a95ebc8ff5eb469f3fcd06a07f77b6d1a3dcde5a03ef6d08601ae6668adca2f86e81bd64a64c90c656f5e90c46a8840e2e2dbb3981729c676affca945ea5756ab2dd506daa0f092a9fb4e5ef51fa69fa5a6b0e6af8cd9488fd6a8b8c4900cc0322ced61a82f7 +fa3f2d0ddcd9a091831b15bff41bb5645744cb499a336cc93b2ea66a1b1dee729f8d1a21705d578b004bedf17f2878102eeb62ebc94b0b8bae5fa98d3505fece5440ed2cd05fdf680cd6610dc0fb2246a189310e0c4fd7eed65054ac5536eb1618ea53d2717fd0d50f193590552bbd57c866545c354b424b4a373ceda8769157 +e4dc0b0e38df58d56f4587926766f8408912f0dee2cef58ebbf149ff618944d224f29ae8579ed46c25b8d8048ee191647ecd698513a6a0a9b26cd08d50dabd8f6f55a2556e13152ec58f39d371054a8120bc8654727f04c8c7be96756cf5d449e0d6028f6be5939e46426fdd5d0a3b41f40f89faa42d54aa163f5bb38b731ebf +fb4a27a03a06dde716c2eede2f35f9de0f6af6ce4e78db318b8b804a2d96890d4643a644afcd4dc8ff49f5b0d47f7fdf40155fe24df5d3d82bce18b8efd918140f7576f448cbea1b931a5f4557785328bdd681db3d2de4c1887eb32870e280f5d1929795f70c44648674e48375d07fab8ece273895f4d565a06414c85a2e255f +fe74618ebc9d37313187d019e2f94ae7a55a846ce9c92fb334f6b9f177f433174f30a23f826e4db13b2668b901d6b6fbb53a44fba03778d54f1ced469794863060bdda5f5cadaa6f764c256807cc097b215a737d555639a0297ff3ca058380665deb3371073393caf06f51a11c3ea4fe76f2a6c2c3536e2b3f6ce4509cd61dcf +da85b34fb76cb8c11108428e3fc1673497a6ba1a8e50519965c4abf25d4d8ea33ab7a588a1e05f16cd1a110c57b55c8b9516f7513b799fa8b5e654696713e3a505bee801fcc7e87a470891c409dca3b0ed21f2af5cde844345983b81d43d4bf66d8b1e0de1be5070e75c9bbf356302de67252b3e57ee25330c595969c9fa045f +d198e995cc328c7d2985f998961021df1af9cf97c4815573b1734ff35706b82d8d77f4fc403d5331d715c503aceee0c0ca954c15a7ad24b0b56ddf5ec1ce7ea2f8e3db77f7b95af0e4ac45e79d94e0cbe1d19f14c4b5e9814bf0a42c765b4e3b39895196e4d57f36e13e7bbd50ba3911fcdef2f3c45413e2fc02f182e353959f +da7b73eef75c507c6aa61bd9165db33e658a64f900cf39c7fc5f01d2ed8025e1330f342a161da4660bcb784dab3e91c4bbcb6ef4c17f0b0c6629a17cd93b1875997033646d74ef5980d3ec17a1cd9ede1eed2b5afbb6cd53c936c44a3e8870e381c5dfdcd61af09de3c3af183ddf7bb6501d6f39c1a63a5fb4748c17760173e7 +f37303687d1fe8fb4e086cabb1505d9dc2924727a85456c342a25843161d2b15c774338218bcbb284267fa899adf7f1cf7a68521840ee44cacc3edceee75bd19e23b274879e25bf3a55cc509fe1eaf715e7f10bad6f85cf7273f09242b567c02751638ceea44afc29c5238e617da17a87c8181c4cd29c44983d2cbf64c88d177 +f6b2b0e5ffa9ad622416987337be750c831fa52dea11f9304dcedbc8f1de5cd1b2604759c8d6919fb3193f3d30c45e7c6b954d1e28e50ec570204477342d5a6642329638e48a1f5c0ed2e55bf9150f66b645904e80e5dce9970bdeee824ee754b0f9612f357e725a7661a9d974c3f097db8bd0740154428f22329d3618f14157 +dc614fa4dcd084d9c6e1c5080a8066b08fe5e07ca53388c7377bb3af3064bb89b6091fbc302207b6891a03fe87723846e122ef7be26b66e71cedaba1ca4b83aec563a4fcc15df6b53319daf7f252c7ca71a6e1de53f21127d83d939dd402e2b20a1000799561b0dd57e933909601668e43b46b9b06c30bc9dfe84a8371b520df +e7ff532ebe22467797b9b228d8ed0d5d308baf5e806b46198b7ca9adaf0851517fbb0c48a13458f079256cf467ecd3ca1af9a7beb89b8c90a9e7f60d80bb735fbf414d4d13646c07c9c596cfe3d7aaf37797ef5936b2c16017f9402f552e4b83beb070854ed717278b2e3d2c824cc317c960260f4ec164d2495a69bde5ea9087 +cbb9a134b2a956106c1b112ffa788fbf9986fbbef79d9f09eea98476310eb5420905a4d02d110036215cab9e30178970d619a9ca1e4d7700ff0d8bf3a7ed5f8343df4340c06deed41fe9543e439bc9203835073a76e0fc2c9fab03d374f61ee0b2390fd723fb7c8f7cc2f44cf371194846a1d5bc3085ec09e0edca8689df387f +f407d857f28cf3e9b731102319d655d129acfeda4ef9fc20f1563d04a0da90782a8a0dc5a2d49b1a3bad723c88c03d8467e697ea2546b7d13f09bb6d59487f08bb3fec330d0e34476bc6deba7cf48bbebf186bc5e690080bec4ca9d7f1ad633c0e06d2af117515f818baab4d372fc46b1b5c236d3d1ccc7d50b3e349fdf19d97 +f8105fea3c14b1dc3ebda4fd60a060f5a625fabb3b9da4b3cb0d8ef0bb8831db07756328f2d80034d16476f029e9033eced4e3ca2d7c9fbd0caa7c91d978de5f3b6c88167591b22c15f62cb2ca8004404e82d9ac6d3dbacd1f79667b87cd8c1fdfc921aa7bd6068cede9150f2b059093ea20fda5982f540f538533cf66158cc7 +fbf1334b6d2f3afd68d07a3ceff0dde1fa0bdeeb53151742b8bc827ae24af4437e56282b6bdb1135e6e76ab8d752fdfdf06b3f68c5d01408bd12a20a2f2fe310c54e7e2bd94ae6985f0835de2bb45e51f02d7eea7667e8ed6439a535d2b392833492e884a40d5a00abc3ee5a185a6af6d81cf36ba8365373a9ead23ee0ccd37f +d9680e9e37a8177040ba8c7335cf85e1bce0df83979a880935bd24f31ac145a7204ab8cdf371126ac862bff1ffcd83df23818abee2230e5266acdb0f6fd04f04bec8f5ceaf9262f3dedafcbe854ac6d76585a4c29d369998cb0dac638700dd5a1ff841a21e634d6a992451d3cab87ee79d6d7061b0a46bb43a46d66bbe17744f +d6e6b33d3413bc3dfa14f33e846f801fb71bb9d34ca3dcc9934f3ac15f8d9f9b7c2bf5a0d731a8039f67b5e62d2c57ad716c820248f7fc871b2b050f0091da113a4df1e4f44653b7dcf474c657b92cc5f1f0cea757fcdcaa10940f8d274f90a7173f2cc2015551f7f78ac154bff4680a2fad91841055511a2862dbc91cd49417 +ea6e3d98b7a32bc7a9d67ed80f7c3ebc37d2197616d72f78a3df2d83307cf3072c4176361820a0fb3542de998a4688a2f84c394ce5cc42639940d6a0343c1fbb25ce074b7b988721d8e07090a9b338b15beb6550e3f0818c4ad5207b4e5970ee829c9708029af40cdf2e2e4d1ef69c341cf02b1d1434535d279d89a29e59cdff +e4f6bc6ba9b25d22a38cc428372ad571939bdfdfc4dd833db74e2b914be2e865bac8bd5280a17e71c86eed0a9b26e3f6fab84ef4200dc3dc7ea2a7600024e7491d6fa7d711386a7a20cee182ecbe1c073eb51d9ba917eb57b27b5e980556caebc6e42578917d38fb3e19ef20fed6f7c3db77a925b26fdf8a06886775ce322bbf +d4fe58c85f3ec4072026b0abd9242c68156a27cc3ef741039821178acc8f141c4c8c86c76b88a70044efd95a65c9c0c15a99c0ca9dbf6e4e487d23083ddbdf454cd084d10da20e8afd7ab17986ae8038fa64390dec493d1f1eb7a40a10954b429f4b3f8fdab893f2ba23efcbfb36e9320af9f4935bf2674f9280802999e09f77 +c1d574f05f9fdfac7e9e61caf1de255f1d559b2033e6368c96addee8395ae1565d3d23120c1db7ca75f41045e9a26fe64d0579934ba2ce2682ec3b59bf8f3e255f04e7c5496fe0a304e40681ee74146e0e0930b140b7b0f6007a2ef1801a398cfd244e0fd25146f1b0d29f4f78a23188345c958ae885cecd4956d5d29bfd7d37 +e944573eeac1a26d4340edacce53dcf49d42e04bb3fa8c6b8d0fbb1a4232d9265642606e517c57240ed56dec247dadabb7025c215731739bfb3130bfa36fddcb6baa4fe101e670ff5ec2f0e21f0f0a6b92531abc7e1e9dbb0dabade5d057169bf43e1f6aecaae593f6d206717eed2b0cf65154c24d578ce121b6e48346e4e857 +f531e36f0e6b803ebe7e3678aa5e1436a805656d9902e9d778dbeb4f96472f8b709801209aa2d10083b262d7974fe40ec34c01dfdc6fecbc928db36ec8cd1f561aaeb7189f55a8422e6fefc68a2d721ecaf0ecfba45dee2a6dbf7f46a1d47bc5d0143568f96a22e52051eecded0a3460a38cf5f87df5b4401d0a7b465dd9894f +ebbed960b595e6df555941a8079c6ab8ef07118d7b34d8bdae46333117ffc11192c7cde57a4e2ef125764ffd2f84d51d25e90c742d020ad37fc745fec4dd3b540023813f9b6c6fee0a2b55e545a27f654f4b11ef97f80cf9230e967fcb6783355f2ad4acc3554818d312a33456ce22267ca5ad9a047d9f0029c21c1aee8d4ad7 +c0c6759228fb2197ad63ea8afe4642a597077badbf5c54a96053e3f11008806d73fed9e36185841468a9011c4b3a5a3575777e9503bee120e896debcc4a687917d7f4656a0399277163addf38a3e94397a5d128e96ec23568bcd65cd856f6e53f7b9c0cec3483427a127ffe56d54dfc43c3f30cf5b7022c4cfc28e7571ffff3f +c6c51aac6c270364b2dd11324a7a099076a0727659094881e95eb945face5732e2cc90c32fee3d849e723893e587770fbeb69ddd14acc092025c94fb21ffb941b0f279d638967526c2d42f2325cf46d798c16852069881cf8c4db55c8249ef64ba8c1719f08b186e63cdd9c5ccbeec0731da795d46eb2757a76a628c27270177 +ce96c7e1226e17bbf40725be9604b6809baf493c62dfcfdb057d64da0ff3e0ca7cc08b97e79ba492901d69e0c859eb285215d4de7c4dab219b0f34f510d478c18a7358cb84308cdb79859fc1352247ed93cb68f28d17a5be597aa96b1f7a7fde619015bde987cbe9eb0d3122a2fe5a94fa1babe29688b15ff772a348e184e127 +cd09ce6314d1149c0727204d846af2ce44c876d916ddba429133e92b068f369c8e4a9089ed2f5b6bcbeca5baf4a4d363b7e535e968f4f97b6358a2d5756f61e855bb30aafaf0c2aa0d95f82bdbaf78a9d673817fa7deefd87d3275a53baacfcb057d4ee110b5dbac53323827bbe87bd668244f81a02e37734c54fc6ab9f41b77 +d04108fe4f53d13a4b1ec8b04374e8382b9134ffef6e71dfa1831052036123c8d0326e4d3f24f0cd630959f8e2ae7f6d3e75635fdedcdfbc09b4a9d3745587f54acdd68e177c73c413db2468bf5201a291fff1431247e765a309c8e5f4f2d58790464fcbc2f46e27790df6cf3e0704319032928c4806ad13846833f654f980b7 +eac8c5879a71f3abd97b412dee1229b26edbe6aac2f6dca7c911da788e02f13738c864e0c9e6651c033b382988918ccad78e95ec0bbb50b3defd6e837e4b69e9a12739d602be2967b562e72e7fc071540db71cec8da7081fc24afc43de7cfe66d9afdf016de77385a9cce2676e6e799dbd5c19d0e6800fcdd0de005624011f97 +eb3209a81731359a1b461f2dcec7de27f60aae89e8697ad272d55e725bd8dd1c21520a2c13ecf72f5c48a9967d2ddcbe13d10870f4dfc78cf336d1fb2eba87b1b31206becc714da17963e2c402e5c71567f80e24edbc197eb567c08ce00b86c596d774aa722423b61ebc60ab67ba8e5c8d03d546dac6351ac92380f54b994777 +f363f77896501981db11c65751bc6abe1580b4dd184faea368b9cc144c9a09aa6ac825f6ce0fa34fb90cb658ca5aa5162a19517a67f94c0bd28a0ad1f5e4d6481e64fd9983fbea03de8812514c5436699df36297a90ea3a322d878c28b879229f7b9060cb55ff77a57e262f314d8c014fde00f91609a2a38f55bcaf37c4dacc7 +ea648e8e8e0b2d136b25d93e6257bd876445dcd90a96c9c49092d472b4bbc6376deab1397259d9dc7d51cb34e8780f6922517778aae03462459634a13ec23815537b39a1cf1cc91bcfacb97d164386a3ee6edb3c8db65a733fdd1ebd6b9730cba86697c58db8d44fce60a541aa8d53f7b8833d276400c7401fbd5e2a4905d077 +f2433037ffdd700720d13c8562d44d9afa92aa2d99faf3abcb0fd6acc01d44866d584a08d9e228f0f210bd2dde0b44254e60c948713a6e3ee52e587127e6785abd43538aaa076e89a61e498fcb58bae8b893ed2e34b743d146bf4ff164fdedc0f7e2e6eb3197646274aeb3c7b9f41a5fa659049029d9e42012b290392a7dee1f +f452681944c8c7410dc670c7111cfa86377ff77cc9739d37922642d9530686b054ee7458995a32398e1b055220c754ceb2197327881063484bd5e0bd744ee3234b46a4ebb08a1e290de86f47478645ef748d4e45915a828c188e049945b5defe877bf5c9b6181899e5081315e9860c18f90d3857f4f62635f1448b497a251b77 +c9fe495846f1dca193bcd73db2889682de7efde728eb1631825858ddb614323e46e64472892597952ce06714658e32b40d4bf4accc91b5a2b850a74929f27b3b8610e73b94b7e274d7b457fe488a0dadbcad5fe8a5cb66b5488b06a6e2bc0da4724b451805821bf0443ecd60cfdf8119794bb87818ef716bd4cdccd0e707c1a7 +c45927a215d2b848b03a783d2082c592da4bd0373cc5f123dff87d630c862cf85f8e17502078171f92cf9ce19b55de1fbb8301c83c72a7e2f985ed778e43046403e0aaf2b85727c82959c3c69c70dd89c546cd3833b4b16cba02c9adf3e8f1366e37c5bf5bc7ad718e0ffe493b12dee3c220f9aeaa377f2f1eb23a54979f7667 +c3ff6bf268c6189c5fe6f2950e090bd46582bb69b8437ab55c1d7391b14aa25dc62526a7848c45dce813fd145459b8be4c11ac5cb0f1614d8371a7804372c8e5aacdf69cfc5b8e7dee29788654ab8047098267f28ea36371675172644a527afad033b257d9c60b854a56fc09da4988d22daed11f6a770b29016b95fa7a2361f7 +e130936cf4d5cce7c19968a18125379a27a11641443de22a4f97bcfb0317cc7e993768b97448b93a56c7dd9990c3a385d4b0255bc19dc51cbde074574dbf58d3e6d61a724ccd71eb075975d7f073073c4735faa6e9aa37acd28e1139e0242b1b4c40c308818d3c8a7a6fac57fbf4097edd83ef0270f41a3d50016c03fe58880f +f5c704ccaadc4dbf48caf9268f9ab25c1d9f81590c9547827e32a2198b1996275fbdf5655d653ace03d5d1d396c38f9abaa495287fd5ef0e906e03f694c7f04b5296607dc4fa140163db943d7eca1bb7f475de7492dab4b88810ee7f8caa20ae1a369fe132d2fd578e318186b9b7e894a72ce7cf13adf24dac8701c08cdfec97 +e484dae953aea2ee494b50833afbfaff3c72ae25c2f5b0ed69f80b596d170d2d58c46921a2d44e71b346087345c5801d6925629b15b015564577d8cfaa09824c2111e1f664d0bdf672ebe785a2f7fe80beda51aa2b9916e47bafef48d618a9d3b54bf8aa52bc400249bf0f07947571b0a1bdab2bb1b76acfe75c3e8c2b74220f +dd72682e1991ce97e092d0d9719239f6aea99ff38f9bcb2be99344561d79b0ddd6d37ed3ec4e5b2e89e30057d748ff91d312f0d3f0bf166e174baf5f8f9d922931a95a7b68e12f81109c6bf14089eeb964d64153ed7479a4087d0ccc1908e0b1417f1c62e9dd2c6eeafae28433da6a45e23ea86b11456f0b2246cc584c19bba7 +f10755acfdcf0b09e9cce140a835936a5cdb3b071c38d74e3562656347453f5e5d9c6423088f5bc3023f74cc72c33f4daea485d9001ca8aa12f0b51e1f71bf9bdb5013cf1e462650d230c3547a6f9685342d7718d6de6515cdc06312714b047c45005a42dd853d7a7e6372f282922e2c73b01ef30df9dc289a0a40e40dffd037 +e4b7a6bd1c30953bbe50656f3df9fd3cdafa4fbacd65f19b8eb3c1fd6dc172070e2ef90c369bb81e8c20171eb3b937da05bae141a93776fabeffed8bae6bbd30ccc86992a7d4be19910a874e98df4390f4ea10e81e9198fbc2b2c7e39a6e8ed9d11ad96593b5c7274ca3271e7929f47df3e55d8221cfe71f099326936312532f +ebe0eed5ac10d23ec8ac49a3b084458fc369cb14a385b341ec0d095121b793a07919bb239c0dbee1b95dfa540efb62bc08255045fb7a6e9ce2a0b559d6eee21ab43f2d90e3dc7a7f5c2c85852082c58d34a6b0ad288ef70821fe48b70076e40dcdacbdb1072b0f2892a105ecddfaba18c86141e1e24416b413922fdab5bbdc4f +ed471448eb14f20b5c34c5248d08c3e2f0965646ffec0e40e2122cf168a423b7e48aaee898a70bdfd5822a26d5323aa4fd39b2ed38a70df1419be1d738c8f799a41d28f1ea67ff2cf43e45b1aa6582571e902a717b42a793378d4d8f30c1e3706dea57291efa63b66aaa740936e11b6d51ce2d862675859855f98fda88adb5d7 +da012e96649e34cdac0d4da8888f2212cde8a5b7dab5e37eaafc196cef0556e926f14158913ee3fae02b321f75f26e56afe81e22c854ba4d578c2df4da41de39655ec55017ec4d972899483a08a4934130f5599b3da6d5adafd646e28a528e144f1c0ade972bd0ee5ec340a7f3899835feea71fbbb6e472306a838276c5ec7e7 +c0fc2b130d83be234e983cd89b24a97b57975c51a9feefcae37eda75a758b88c1ca737bf46da69fccad506782fb70284bab4f78ac0875cf624c37aedb3872413979e526288d208157ecdc848265dba1364be75993ee4f3dc5ac4eb33b482d37790ec478c84cb07a57f45a78f84303f236bfcf372330c9c1da4459d43df139927 +e92a3eda1b6e4223da6a23ed1d0ce0870f5a0fdcaa2f4af56d0e5d1b52c6aaa3257d1d6fab02f1baf87288a757a052e4ce7caddad8f4a1751c3656265ff52b8abc349c79f44a43934767410906f7a37323ebc94a803df44dba222813ee8493b1db13a89baacb21ae845bbbebc05e3fbc796de2ca2de7879d983862777781631f +e5c5283906ecc46b611387872a0cb17d73af77ef7af6ba9f3a00ca8ac492f750d9813603ec5774173432787ddf64ab36beff6178326f21aea09af1f9a9bc528a32f9112c6fa7c5bc4dd41c80e03d148d7e76c7cac37bd21f2328e0ffc1036cec490d7fccab0dc0ef23f7c61a669feaacbee54fbce01acd0a538c4bfa63d5da9f +d655bbe1b58ffa9f29d77a8966a290cd97c59d50842f37572de5c1f942bf480d39bf4be0511ea87d1da68c7b0c49fcf3e181af2167d4a8831bac63f03c6da9c70eaff4b09a6d30071eb13b106660349885a0aaa8de55e245562dcb902ffbe9b5b0b70f20d208b02e0caea5eb9d037b9bc9459cbe6a1fc0eef1167b0dfeb72e5f +cebf1eafd773f404c0d09c2dae264ce6c2304fcf094630f7ab1e9995aa5da2bb55d67d7af62f9c0fc01477d680055f6686263c228099ac4f59de7e2affcba45947ef5dfa39a9838737031271bbfd562b32f05dcf6000cbc91a2e41fff32bafe0665e4493eca2ff4ec2cce17dd5c1467d58e0e34ca8ce65c65d6b5cd470c79e37 +f3268781c5eedcf3fbc937997a322e58ec8799155e0ad2e1d03bede844ccb08f057d6bdae9d406b247ec58c470defb5888d2d2651be19aeb5cd6c5f5acf0520a36b4cc11b5ba84767b8f11839061ea32531b39d26615feb5ba8e88d57ebf706780dedf09f108c81a0421f4a30747cd604640d165fcb23798e006c5c58ac744ff +c651f81d4c9d5cd785ae8b0d977c8678676048fa5613a9a75cff2c8b455e34d7a45bb775b3a6625f47cfd15cab69eba71d6f79affa87d8703922b0fbb3abdf7f107583e84be4bc09fe4a33e1b89970110500b9720bef655878361d1d37a52ae20592e35b750db9720b5813e5ab27e09d443238e4509379c90bff00935241306f +e47062ef92972cfd6c2a1f08247b66b44d2f153e9bc92cb94c7a4abbd99b1fbc04de376a11c2a488168eedf2295ef42adfb7f44ab0696fc45a1be1d38d38bf88e338a6a2c3a75cf89ae27fd129ce319793d5770d2dfc0ec595eaaffbf853c941cbb996fa97f4f7136cff8899ac6031efe2936c68f6832431ceca9333e0e5d317 +ffc829625a691bfa951040192a1d7199e96d2df2aaddd7ea74f5c76933fe7501f2578d5e29ca5b5a23e8a024ced7579fa9341bfde0621acfe1803da9be076ed2d2b38c00a59984dd6424192789729dcb631029286cc95325eae34b55c286b366a0127dbb78beb1c8efbdd2dbd006e5e0fc47484324c63b4962ee75010c5bbef7 +c3e6afd67141283389d20fecdd41c7ae5a8fbfbe1e5071d259ce3293d9573c4717d5d4bd24532a51f85cb4674963fbffb6c3ef689a3009fe762411972a4b645539a016d88c66460438366fa83c37fd3fc1b02da3df41e55423ffd9cb9b14e04cbf2bf9bdfd632e849593c8cda99ebb4a69d3a6e68701b214cf9b261f6005a747 +f862f3d0a3e355745f920b60c67825dc51c7da701e104ead2015cc452c9b0e98f06b3e000e95835af1da1e7a4bf95af3339e9cbb329d50c003259ffffb2e81fba3934f69ecf342633d8f626c3f6186aa8cc9ce644ab524cb318507eb2492462e844daf0e2b958af729044b8f3361f57c2a16c55c39cb790762216ebb3929e2e7 +d8e88e3f0edea7a1c1e47519313723bd5d987cd2405435674eecdcb8da10cb2cbcbe811dce2e28a1dc3b98c5922750a959f713c71464e2f3b85201d25b599a3bffa8eec7cf3eadeeca73f05661f3d7075165e5fff25f2c5ae5413249646c3a69340481e7d4662869ca001dc9142f83dacdcdb090af6c87b24a3a13fa4cae589f +df0a5e933fefc39446d26713f8ba62e6057fb4fd7aa24d84b833bffcb9d03b0b8a4685339b7a8bf2587bbd1990ba66c83df6112fa8b65f09990ea86f5a22b4ea8d4587c8bf5e35bb7ec0c84ce43c695526b3b74689bc940bc9749f710634927db7f8692db29e3489db15289d489667382280f9dbb44fc57bdab68ff70d47cf6f +d0bb6bd2106f6b8e6838b87eafe449d004f3a1cd02e4e80f7f3ba2065646e46432302b01d89cd315264feefa6dc9b9f8095476c42e792ffbfe870392b6928e052d8d4e0b7a7b2435e74ed90dfa34f714aea5e51276e17b09fca92eac60533f27f1dbfbe7e2433dd0c003a95ea67ef866a1d071d4d0b5e2cdbb34ae3e7b724def +eb4a4020489a1549f820195d95882fbb4960872ae9175db09781b21d7a1f59d1a4ba2b63c500c912ec40ddf993fcdb5c728b0ec05b890cfa3950f05d004cc9a6f16cf8d2d89a9172ec71c32999c64a18f3d46bdff4dbdefdaf4a9f7b1bafc4324ac94194124cab95192639406e087566c62e03f35d939b2f4512418c2a6c243f +cf98f45d9ac16398c14914ef9d81b351ee34c7cb785a3e7253b9e80f663dc91918c3fb611ef3e1e132005a9f9869c3b78cf71316d85a026066b30acb3ffa75adc8de900dcb9a5f4748a6458560bf110f19581c2c4cda307181f1eb31cfcdea90c4d2f5adf9bc766b9e6e9d65b2506468fabc9b133c5f0a45877315022913d3ef +e7628fb5bf0bba2b425f7e8c5bb1bd4892fc61a1f33d7a9065ea4d27b42be9750def0a5585e26f48fc34e3b9a8811b27b8a9fd245732ab23e5b20fd82ccb84860c758203ba4b5298d8c9d40cabb056d349d3714add463dca83dc151ceca039cbc1112a62c2c0a7e901e888d928770ee512d5c00e3215399731d1c62ba9c93dbf +c7f8fbfc4313b2d18f2d6720928600ab4137ebdd433a7617787175ee2d39f8d5b334c44e86877239ba37996c48d81a19b371d45311cf6cf82d499ecce6e68a5c92c2098c66488a8779adf1cae6d470182f3abdad2b81f421363c3814083f9c51c3c89ee37b4952341516e98775d9f21cbf1f4641d8a7b682887d03c55d446a37 +f7da75be8f981cbfc45b9fc1d2736d66b60c419eeff2b0f238af0f32b1f6564e4a748fc1611a8e75bd15ede6498902fcf2629aada1ec184e34ae42bc555325f9d0b6334711d3089d7ea0b76710c061f5808d3fb636c60d815494e012721e6c7bf6a6c3a050a721211c18d865e908f6f76c8744cce6f8da5c05d7a00a3c644a1f +e948c5ae0dd120c678aecfb05d2480936e14b0e94c6c21a5caa0c5b6fe0d60d875579f47c5f6af22ce2f24d241a34291047bca32f2b57ccdeaf8bb227a8ceeac58a9c26e24e4c112c5bd1ee91c485db35b30fe51c733c68ba12263a7c0a3f90c0a3bd7eafc44291dae3167e74300fc68b39204a20c0e83ea9aaf1ff7cdbc2be7 +ef1d01845dc901275f6d451f69bab7cce32b79c22aec49f4dbc067d24757afc3f666680e80dd37af013bac15f98c810c72bedff8f357f0530cfe07951b1f7e88aabb23c9455dcfdfc193f130a649c69acc77dbf2b0453305235d65701fc0b95fca1bfc27a20df3f679e8c9c24837e490101d14aae605db5bc85c515d7103f397 +e47e99f658857c72ec792cd1b97652990273940f5799b2f10c8efa59d849f629a95b5372e3fd843b43b77dc7ad832bf5b241e7770afccf1d6d8adaa4422d7c5b05bf5d7876e7fba28f4a22f9b4e92ea7ffbba18fa87e51f2a9a8f34ec351cd3f411825d7c1f9ed5e09e4851098d4f91397f1248e5bb180c2d33dd69e2dbf3e17 +fc41d64f7f82e35da1d11285df049596b81e13f5f6596b08551a8b93b9b4ace08b9b235678a55bfe058bb8a4b02a69b97f7b3b496630da5617042809a414361b4d895be8d4e6186973bf0a8a4f1e2d658070ad465894d6b309d871b669623e15e0e1ede1d49295859943d64e47d971b91b2b9e3306f54b300424e52412099e0f +e535da26ad3d241ef3c33173911205706bff9cbb07473a4605ebbe92aa465047780eab4620ec1ccfe6b02bea1e8662668403e06edfd5e19b796a59fb8f9787eccabe04b8799b029c05557c480b45a6e3500680c2f9de07bbf69406f3bb19bcff475c867df8e0ed58cbc4a7f3996db98aea1dcb9f502c91bc63316ed0de8cd1d7 +cffa6e909fb7470f5eaae0afa5644bcc3d7afc239bdaa635fed260221ba3ddc932acaccf5993fe143b25d04c27ab08885ee82a544e346171904fdc675c202b2a50505c3fce8fe5090ab5e0d2cb5df4f7d4e50eca82c1354b2b3df803677b351eec83224311173c1911e0317cc7ece5f7a3484c98dd743b20b08d7a2ba23992c7 +c3bada4f2609f5cd28e649530f0155e85b77d11d6dcf9cd25c1ad8fcf4ea084d0a742335b5da696aa59d0bed19513778d8c960218076fa9666eb2f973d645e5ec4bc0e24fbf4e02734316c4192937c9bdcee1d582b1e50c58de5c1abb6d899d793845e69a0fc624ef01144c6968e89415448c5685eee163105fd764f5afafabf +ec605c427306a19a794fcd9bb495090780f320809554674feb2d3bb10dd790f48f2bcb945346ca968d9b1d496f2864f63a23b2fc2d29728694e6e7bb94b51d14a61cf95943fa464419120031f55df1ae9a154d0f3ef23292279f01b68c621e917b269f40597fdb420c9514e6a6a103adcfba6061d21f10d1599bfe9dc782b7c7 +f9795debeec448c4198ae3196511568d6879a239cb9c01374c771671abfb0639a3075cb70197db30bb9f59264147e2f1a11243f3ce60af961411dd4676231196c4c1ed2dc650d3848a85117bc0a0467c36f633f41fac1e5c57a6ade1bf3cd3d0da51f6565aba10b972024a9361c6427af2e8f3121460a4c3260734608f6397ef +f91888c39f618559654cce557fc8917ebbb722d42ec3f11c61c58caf865d167b3d35c2df383200481bdc5600f941da0d96882c35c1ffbcf65e3458f771cde25f73512865ac65416e9827a6241b1c72d3616af6959a58e48b9588d5ab7d45c793128f1953007f331f3bde0aff872f5646809cca81c1f55ae1d45cd9795155d7f7 +e7869015021ee3808e79d51bdab9079c3be019e9aace25624d38c26d803d4b7386c4ba6d34a6d0a0ff183db6406ff36fb678ade758bcd10e2bae7e6342b295b9dd9434cfd14ec0df711185e206530953721cdd5ca1773027435958d3c77f3c2b311e221f681e7395b15078d0151273865c2e862e9e1467a5c48e60b230588b3f +cf2df64776a81a9628e10b7beb436407bd9dce4867fa9f4056061ea2c0bfe7b813bbc2eea79033b42de9afb302281b54ac6ecd178aeecd8a27eb67306c26b209bba60c1836afac97ed9a804ff65f05533885221c15e1f51153ab360168cc9f4e3f57b146528e18ad35af040ec7326594cf847913678badb68815b68667196ecf +fa0c11e133c7c4413f16c5fe2ef00aa4fd68534777c0ac101055e454f124ee701f7ded2d6bf4ed487c83e197e9c74c00ee9e45ea61eeb07b99991f2147585501605b7fa2d7351fab7286add93cc25bbcbc619543cb7b9beb3ea81c635b134dbde4983a5d4a8a5facbcd806de7de4a00825ea7061fed8d07b3248c49e2851a8d7 +f0e23ea2c1f8fcf0583c0eaac59fec9218c2b236ca7ab0e3ce2a2d4fbe8e012ac31c9920dc47dcbbaccaa99e91234e33eb1aefc3f0a82283d0eef49934a2bac17af5b65af671df8d0463740a39034eba063736a81a20a2417ec91c06a8a22bb3b4996bc64968c587f8e9cd4acf82b04222134ef433a2c7191fd1e8f9f49a58ef +e19b3b8c441e4a7152502afaae259673fe6b77aa85d473cad4f8a1d89b5543a9b5838e152fae02d098287544552f237fa29d46967049c5601205eb605c6a1ee62bd4e759b0a7555f0c7042327c5ea3af5f5925c9f2da50a194df3f9d61c501466ff21d309e4c06044765d0f5cfa28b873b5cbc03249c5c57935e84b9a3d097cf +dbf51b21020d6fdf7fc7f39fb8c09b2a36277d9f7edc726afa488ebd57e85d08961d234ee3999fdc1ff830f4362d90a570945d8e368b3b8e79f41b43baa8b8749969e3d42fbfd65af88ec67532028586a7484b6707e4fb2fe133fff46423dd33da2596bdd7d6df2082e3448787671c11042f3e833197e83fd5924b2a9974f977 +d1ad84b3fc74c845b90bb62a394a7c3232a4ed1985427cf9b17102245153b9815682b74c85dacf1091548c17cc39e252d9d3678b91bc9bc3c798c02e7d65c803b98d738117a56d68b7178d0c8cb4ba648fca90ba1741475f02583c1982f30240a0107e852c25c8156995bcd9465066bec312d010ef1376cfe387b76fc164ee0f +e41109bc6c7ecba03f748627915350c5b1b12eecd6847c27b3196f4a4b3fcc67d3cedd91e02353f389a93694481854560866995b6dba1ae893d14c832733afa105fa2e9d114b5642e0a9f5d74d6029915a89ede10dc5e20b40d2ee82ca69de98f2ff4f1d48940a00358378cdc075a94a4f52ab861b8db696b9b16c529c709787 +f9e4228b7872fa78bef4bde6f6397b4bb919c39c463c9a06bfc8fd5a285d472d128b26df3abb67e6aeac90aaa5c1c0eb32bf20aa168c684fba292907c4605320fd90232e3dcfde4a6e846efac291a56b11182e11ed5013068a0b35b149bb8dc4c04ac4857a5ddfbd4dfac360c6a294df82291b31e82f85b8e952336ab9942e5f +ff2c5a728b078497ee63b00a6d0f5032f177da8394caa7ebd657633ae5a6f312ab78bfa7efdb5992cf8979d708fc240044282eb583ebe8edd4020e0f22313238b129c98071dff6b9e85135a1b7e975ec5d1d46d088f2e982b8edba309357aade27c77f3140e77ddb18a98ddd1e1ca4970bd7b0a6341b99382eb0ee0b67a3e997 +d4672897aed3efe66e3d67ef7f971293683a78dca1f3960f87d9917a10312fb507e1dbf3bb382ba3a0124f2fb22ed02b7dd488031a99bc8c0b3de9bac08ab5039e0fedd2acee5e203aff991bcf1789d5d32499248e3e9455e0e1de37a363a57963bac93a9964e8ce8b8944216752c60e0f3b81456ae62585b9ac1c65c71d5b0f +c7b5b93e11d789fce5744b3a022c1dd872ad32c1846b1bb4e7ca5d29dbc76619093dbace0ded0942fe5be0bff028b93a552adc72eaa7c25aeabb8ab699586c5973026556b902dcd8823efe3c6a55d51737065a8df4faaf22cf6b5768e69cbef5104215881ba1bbfb97cec68c6bafc258fcd1f505aa69cacadc5e9f60a70621ef +c43fbbe164f988e0eafaec30c57e61332c389fa322cf0ac8ae17c55ca425d1d7c6e194a1e178d87dab6e2d84570c6a37d8ebf10e2f2ff3aa2c7024eb62b2db1e94f6e6164f9b81c2d2564885fd5cc572177fe59e7bb791d19fca0222044d94b2a9fc484318f98a2fd2bc95a74f1b13b355f2f5af181d725aa88ca77808360e0f +f9df102137f365568af13786b55ba63b3b2ce984a184a17ba541a89d8743131b1e0ed6cefffca579a849d3f4a6bfa5296eb6070fc1044a135a53e1ebed8813f5aeecdadd1521662b29ff6e7118b1e5747925c3e6ba1c7a3bc00b9614be3fc0f0eda2b09e94bed8425f08cfb8779b07a8d7717158ae1b8502369784928ca05f97 +c8ec0ca5c5bcab5622f92e71f708d412156ea627f2b58b648803ae60953be10ec96689bc19831aca636fdb21de5d9d1cf3957899a9a6d64d3ba1a410c9c9ef5d2621c9dff3f75f3bc86c6adca155e62c6c5e240f72404146687ca37005a348811ff5c3cd369ffd5a81eb92f09db78aa2dd429db5e2549ee70feaca7dc449cc8f +e9073241391038ad95f17ea52717318072f19f658b8a4777a36d666a3050561024be112274cf6faf9a8550fcb72a28611b5409d139a27041a1cb4132edb4fec8f4a04702509a2df6704212c27766573b9d28f0b2fb5f0699c81e661498abab8929da11bc0a1f00adac5d155d0c47bd41b30a4d23a96be76a911273856fac4567 +f3a44990bf160ea087b5c1f6f36ebd674ba66c588cce7bda0ce1768207e9c96ad530eaa97f4680a801695c43c4b2b0739d4ee37fb6e16e35567c06f7f8189eace5c5d14325046288c2a6c29c8330f71c5b9e5dd7994cf4398ef6b268b7456e1e5065e1a9ea075b401f0cd0933b74761384106db85d026586b019eaab14e64e9f +e542e38bf7814db696cfe9c0ec6556a8267461698145cac590fbb628706596053d2647ff5ee30edf78c171a924febdd9392b92f0813664dd64321f92326d9042bffcd8df5fb1ccba5fcac18a21a3f9751cfda4c93c6158083e8a90465cb5b5422eb168bfc7761eb5f124f93f8542fbe7cbf565df3fc47136e6cdda224b99419f +f5889e53999aa8383063186c097acaf33f2d4b4a0a6b4c904e1eebc7a9581b45370e0ab6ee43fc5a9b091305106b103d2c9ff498d3cac19bd08b5c0244772c5593fb948cb24d38e1ff7c3780b8791a37be478fa4b1e75351ff3fabf48fa6e7dd7a6cfb4112e3f0fcf2e4c43126c0dfb6fdf0dadc3facca8028f0bcd76cf6343f +d58269d617d3e29ce4835163d507a52f1b668cce3b76a816edc86b5ce4a34916f49e36110b07e8e2f722020ff1925b3a747609e05c15ea89599f0cc5c47e29369cdba3bfac0c998dd55f5ea1b2325721c1c35a3c8922d50cc4f8a8b117abc4fe59a0e23d1ae0c98104c8bc32596891c91682d33a2740d87213978abe04fa7527 +da6d9b9dae3e03d04672e09e689387c740ddbe898d6f27a426ad1593353dca9e0e412830ee32efe685421f4340a5656c74adfb2c1b3d94c55c629ea4faa7e4b2a13601c43d2afcca59406895b03ecf954b41dafba257ae464ecda9b30b84933393114d0c6b22db9fa85763c076d3fb5415eaa01144cb4b6d99effa87d2eee6cf +c7a1e3586679c71012b3520aadd7e982f82125da13dd4ba80d108b5a875318f48a7586de157de5a9c847c9e5d6ba09a9125c047b0c212e23d2a49bf333d56c0f7beabe5e3a1a98dcef0e79c2ded3b77854333c6fd7756995a51f189e3d0311f9cf2f587193e01d66d04833b08b52f4a8433b92206dd6f53fdfbb93ab45d6d777 +f80743de4d1a3240392115fd7fe5e131921867091a782dfb5aab81fb10a49a169e59e3901a2983b9bf1edfabfb509f83c554f71b20433c5869d76305156e17d93850b99c761092fb742179a9478c3609d6bfb8f178ab2778b54dc643cd9c42e2106ac5d980dd7ae1101965355afe88656dfff8afc0ff38c9d3c2badfd69af277 +e5560be68b30a1b1b3e1b2fe192aabd9f39aa2ea34e4adb9ace1720bfef3e46bca7e9c1e0d6580a69fdd1ae45f2a85aa8cd3dea5a9fdde6253d77117e64eef5a126ee802d6ffab2ce2f9e1b8e61a65ef99cd9f601055df6a8feaea9d6b26a10ff22748314ac231ce5752f7f08a08c8534ceae51ee37e9a9918e0dc04fdceafa7 +c2ce1f8a6ce6d722ee771c85926a233b47f800538ef4345b127ea7276beb918553d33a7798a6c25cf503062d24c08a01b05ce6768f2647fffa4b982dfcf8d9591dc7bbe9285c6eec94086b19f78b552a3d2cd695ba8e5d0d06208bd4e773570240f1a97cef448e2613e3fbd2186339dfd4a15b79539dfbcd645864635081b70f +cee8d166a1c7558c744571d861b8d4e1aaa09645cf45c6f016660963409e958f89b4b06fe71a95dc34e011d4fb694cb4a4c799e0cf42452fec2de45318b87130d781821502c60ace0cd0a10dcd5f9165185d735d3330803c387d0c90b32524b1123c31f8156e138ddd3d5750ed8ad0e026837a1ef0638ffe314bfc60480ab667 +d0005ac9423f2e0983e52431b3b01e36149535e7d681a2e6fc1c7c8f1922bb3fec144e616551e372adb83db8793f1486ae313367d9bdbd7ff4440b5d57f55985dd92fd2b3bf83c5adf7df9e1306cdfc2a6dccc3a8ca3ad9f2446b419e365325e8a80bfadfa75903128a4595f144235af2baeace5ba71a7bb93b83c5001f26b27 +e033b2ea0d7ab9e2b06afb5db649b5b3a09f13c7bf3dd11431c1a1f520a2986f8477b1205f3aad7b427ad7a806ac9c6068c467fd9db56a8eeccb0842fe88ae1eaa88c69a4b8817342412da4e7f0e1db4b6a731fc0686e918b7e8d48193e2c0ea63be6f051954a8ecc3d6e78d9d6a8eaffcfd54399675f319c4237277c2ee7b1f +d7f74ae93c82c285fdb3357f08103deeb6ad1cecc81545024485180639889695130ef02c6697eac9096c14f3478ad6ede53ec5263c4e3af5e1bba547cc36c9278ed58abee5be5f13aba352ec5720a9672988b9130e60e0e606767d2724f78b39da7475889bc61445f4f35dbec645b88eed3afeb0c444be39a9dfcb77fc6e37df +cebd643150462bff1bbf0e59c50f66e6aab2148954656ec74c10b8d2a68b383344097d5f943dd5bff1370d297a657566be8bdcefa749b039e764f106db0c67b9dfc5b035f30b033f1d96e74f9a93a569700cf051ef251dcd23629d3b436136996d91595208dceead089af34813fba5e99fc5d71a92ed3c1e3137f5d5f648d6ff +ceb7b757f158e50584ab34ad026a2a5e13f7532eb84c7cc46caa62128d161ccc1e23a4e70d811edd80c29ccfe14ccf155c965031e418d9c72b90870fc1fb0a1347aebd847a0979951f148135de3f93f96e91834add89db70366738200e421870918c1d1cc9aad862c3ad4b1ad2966ac2061053bd7737e2bbed4f1cdbfa36816f +eb9079d99ef578d672c06ca8dad5d447c74d5f850df919c2effb5008d329a44dbdc46f74ae43668efe4f26853f646ccb40fef33e82eb863fe525c8627d885f3663a6a58abb84f9df012b6c2be907f3600efc4338016544e86b446bcf6ca1611f484babd7a29d455bfda91567372878da0259b5200f2c71ebf939f21e0a029937 +e7c08aca96644e4ce9d8f69fa420caf11d066baf8c79ea6446b7143276f10132338cc3a6705a10e2621262d98e95794c42416a7361f81bd4e7b9159ae88e07f62eead7e82389ef33c5215a928eccd74d61b6c4ef3760325ea95c8709ba312702fe56999f2161c509bb63a4cc9d49769f3f60340ce945f6f8cc4e7867b454d337 +e012b3b5e8da6ca1a9a3fb4d8333e230ca68326880cf3845a06d609ecb722a4db6f6bf1df85d84ddd25657184828dc1f60738e416c029eb33e68776d3c9af2ef842a5331e2aac8573e6ba819e26c476027fa931855a9927048a86cbb8c7d75f1a3fab7911d1e14b24a5af4b8a52761b9968ff08e92b93e9fa9846d746d27bef7 +ca0976cb5eea1bb8ddecf00ce3c664701694a93916898ed0ecbe69d9277d76d21b35ca22c2b715897ca01296d152ebf9be52eec0a1b4de315aaa9f39a0b970970d5844795f8aa6fc2cbe8c509e94b4f510555f0b4059ea2f13b98b4709a1206d90e7b9093e0d31b6b2ecb4c84a2cd6b21513b522803ff76698053ff735faa797 +ebb4c76d293e27c879fd3c8384bf1e43d11a84e55b6c5a2d9f22643dba3adffa7782a1733e177f58ccdefdf8ea26d9c1e52c7682394bfce0e79b1669b0927748ec22c2ddff19047583b1b0f41f1e7715f4abfb24146dbdad9605e477eafa3d3c9300b076698acab97951e101009c6afd93df9aea5207727d8f3b6c89db57e60f +e9fc31184c69067ffb47a50aaa0e27df124961b08bcbfd97bc420423e67b72c76388c8e52a6b5b73f02b940b9cd0b77c170d29119157c86e6b1892ffaa9340ee5ac174baea3c7fa96702843c1d426766cc668f583c6ce0126c7c4054ac724ee647c5b1751fc13fabb325fc13445f0c3ea04388c2e6a0789e24829511e619a7c7 +db76598507e56652094d3e393caba319dceebce3990a1e2d8a6dca07e4f6bd853b41ce688f71ea8347ddf4c96aad39b5901ceaef45bfc211ee9e7581ce1b6ae358100dc037b92f8a92c505a56aa6dd9bd5afec0cf2c988fc3be8914e09bd59047e30cec938a5219cfdb00b1c6a2841d4a3ee00471c80d0ccf7975fb2f8bf2117 +c46f504a611285b4f3bb0c10e0cbc61160860f574ac4616f21ec631816cb98d3a1f75f1bbda7ff50de0aef8f6a66dcdcc801f5b8a32250a9e44b27376adcef7177ca20095733c9670dda8334ce5131567cf8ce56825d71bffe141da3a501cbd0d0058f834ee95db206004ae5c3b922c74190413a9564571edd2e889f7cbad217 +e04a508ae080e21d7957f56bc6fd8980d611b6b57335f5a96297fa6a38625ac65620304adc7c9093227fb9e7e65aea257c3dc6336402e750d45854548a4b9e1027a5d08bfc299a1dfb14f73a86abed3ca60943b7bcaee3c0e01aae5c6fbe1a41052560cbff4dd90bbbe48f4ed10b4a7c9dbea4dc2adfff24866822c2baafebbf +ce36bb15c33c491daa17624a8eba852f6346056f0b18cdc14026a906f953dd4d6c1c7626c710ccc4927d779b60ab8448c72cbfa9e863180458146fd706ef77a3b793eb196d6e19b0c90e4c839499bde9167e8c7a405cdaf4777a0941887ea3d747d13219d3da0a916224b0389462822befb9f3897762ef55d7a42f6b5d4a9997 +da8cb772c97df5a9a78cc9c34d3492c7677370771f9e574e5eaa49c986c6bdac12ac32e6c67124fef9f4ab84eb79110aa6be71c98ea1b2e6e30d717ee8b003d21c635da0d793250d2efc5112d8ed186ea1a0357aba8a75f1432b62b2425611b23256c6b122a4a76e24820a50ecec22cfc31c651cfc3e563d20033daa77ea282f +df3791581d813ab127f21f8dac31b52a038345b2bef20344cd430b5bceea12f2816a6cb65c673221909a9ae98d3d3b0596a48a87a3d15ef42a6341e857cdcff50b80b75d735e517ea0ac7aa10e13eb115c67158b6abb7fe827233cd4bc1a610e5d57cc59ddeca80ac6bf9609e584506cdfd7fd387d7794ada8403b1cb9aa80a7 +fcf7182c1573ec8a2b697dd69f463f89e62a7b970419ca9f922cb8b8a5820eced345bec27e8864c39b2b6ea1c48128bd6d25a1e3f7cd9b36c32b5677c959d2d8a9630e692ce55a1f27005aaf79704850a2a7b0c6ba5cf42601c879ecab57119ad72dafd3ada58bfd47ff7c95d9f362fce6b9ade8a9855ac80e93b4da3790fc4f +e2acbfbceb5d312b9e5b0f07b5b97f2188af87d0e298a01b88afef9890899889b756d180915582dd731f668e2704d5a81934612f65dd75c92d8e834da0e03aa40dacdb63c830dbe75f1bda80e746421f1dd6839a978db34381f99bc2768257690ae3c856398a906fad6d87e5eb54c840d7161a3d0b52082e6787969013cc6d0f +dcadf994bd8d33ce02da5dbebcf5365a62e9a9379056980e16fd94429d25901cb1dcced1910f70148ac301fcaf391e159007ba867f40f2ca3a02ef960ce0840df0d7cc250e9546bee26960ba62cc1b9311d0f0843262e8acbf6e4e76d9bb250ace733247960aa4f04e7d412d3d310e0a0e9008ae5a60c9d7f10c77e7ce4b1d4f +f95dc6320fb2ef97ddb83bb5e550eb77fd2ae524d5aa91303a58b636c435f61e21be773c1b14bcba4dc8f385f239bd8d2d7b695b3f573a765ed91e5ecb18a912f498780bf33e264e8c09a24633dcde68b05023dc9f04f045aa23db47fb2511c4dd5460ab6ccd29e4a50be2bc5f1241389105e4296678af9a7f6ca8a6c966baaf +c4ccdbc3d6ff50d8f9a7ed5b5c9ffb6e0f8744caf96d77ae142d87d02445b67b3a01480dd593fd62deedb03d602af6768ffa4dc0ef00a6b55b7d85feb462697b508eb73ffeb108f3b928a42273ee4f0220dd838c6e250349a154b62f5c58e127075a6d9abe778a18905bf4eee7e87ddad57e6b6ec3e19ad79e25014e9f721a8f +c545de5bee9612a370548efb21ccc05ef4ed0bd331e6623fb5e9fb79240fbcd786b456ed2694510916b85972225644ff44a1543a380bf11e952c9d9fbd15da814be53c91e9ab40722ed6786a2ab89e4ac3f93914d0ca7437a273901e5dbb8ae1871ea259d428bec3cfadeec96312b9c3133e9c7d7418013684bb97a286ad3367 +d1c93aef00ea229d5a93e2c17b389cfd350be64902fc5ffd1b8d6a29c53810f4d1938cb8c634903b8473cccc107451f1d2001d45c771a4aa025305457c74201934adc841ed0c9c60a4132d7fb15f66a686ac6a77df725aebc405e60e6e093a1336b6dddef9fa6db4efb760872e73d396594ab3aaf92fd2f762a6b3e24b9a3e77 +d8da3e4e6fbd90e7f850a74b363896e3b3de48831a1cc72aa8fcc6718d9112a66be7001d0e23c54596776a4b0270d93ecfc8b63244825baaebfffc0e78b3e9fbece447b05a0583db8f43afb3e6b8b90358fcae1934c7bae67765001a772bdc43a3041eb4119333e587e1f990cb57a21e1c946f627592274b075c652faf356857 +edf0e1792d832df5394fd279fd6d1531349761d8bc6b5c39d58ab7d39216798f7c0c5356bb27f2bfc8b513d3c99556d2095be20cf37ada2d95e54da23645f827ce6b0a0a9a5a88b3258be399d6045cbc6205d543361165b300de64f8cd15612cd009f44c0edb1d2f2f2870c29e5a9531842cbc5da82c50a70ddf0e7a486470a7 +f05db7b2ee9f9400110142b8706f142c24aaaae4c40ec231860dfff6163de9111a432be4335ec629bf1492288b9d381c1cfbb1eb57ddd53f3774ce0af3c24630bde4538bff8208026e80d08b9674f4f4283d387606313dde49cac2bf6dd83f034eee68f29d935125385a4acf87289db6d2e82a6a82cc4764cab090f8c9e974b7 +f4e4d0f6f1c719903a10e86108bae4606975c15e5ff662709d15be64cc9af164749d1078f7afc554a55dc157655f180639c52a1cefc4910cf902414afcc2562383937d8da311914f860e51531943eb9dfff9f73d4ca5d5c53829bdf53270c723eee28e1751893acba587fc72396720186ac72614dfada62c817ee461e189b6e7 +dad3e1af58e9854e817eef396c505ef1bebd491cc37bbcddf9ee761308081fcda555bef5c64e5100bc961b06941e68121ac0c780498e9792d213a5862922ec6658676992f9c3a2989edd361a3e7b4b2dad5c0aee836c0ccf1228f8b478ee3fa831710bd606d879f1d03b5f44fbb57a297dc6b84e65fcf928d37b9db21c4053f7 +d3fb6aefabf06d5e50500b2d6761d31e9e194bb72b4245be7e724f1928efabb1d3631439c38f4af730aeced6dda5539dfcaac1440f94db40ac22a3ccf6303d8dc6814b18b764067bf22777c831bfe95478fb7211a1c55484cbcdb97a6fd0d7cc4e92c45dc4eef6746da0fb0c189e763ccf70a4aed77173c8952ee40ff50d1abf +c038e24b1d608007eda65ce6352d99e53a6d12830eab0a2ecd70ffc48d260420439ca1d27dba0e8f871b23334cdee0b529e23bca12b74fd66da65334cb38b0b51a278a04a20738465951649e63cb0a2ea259e8ce362125eb3f383a532aefddda16ffc25a658777918f1d2a81c4ae3cebb2804a9ca67c1653ed014cb8b2f06847 +c5ec763d22f24d795702dfdc4e0ad6369e65ed3797e8a7170426b0193b007fce96d29147cfb28b3f1e05f2b03bcaf47c253c186d5ceef0fe5ae0583e89060141835ba44ee8d6ab2dc2228e8a8a350e2e9659eed070a59a477446a03417b5952a65bfa4b97bebe01b9a2c44ef5612634c15fa0a7ab3a9bb9d371a4d8966e658ef +c2e17a34ec620f681764ab67ba04c2f91cc3a66e2d6e53b516c40613a017162f44ac9a1b30a1fe9801c546f87c3fb1e652901e30bf6389ad5a1a074563db52cc668309fa3175f32a4d50387c617170af05e7045ada4e2b586db2663e8cdb61d982029d39c8994f96cb12778ec8a8126d56f9c2aaf02b2bd804e7eb1e357f16bf +cdb669db95581acdf04f302164acbe7c659d5e3644bc58071e750e5c157f4557abbaa82823c24840e78e96962587b2a8225be12deedcb634cf2016fbf81ad0d90cee804567486de28b69e773c92b6cfa1e5531d0ba613bc0500dcdce4e5026ee8db5eed8fc4e1cb6cd77bd8c31341950dc46dbdbde7ec388ca0ae78152814b17 +d5356c6e06d72c6a5d12cc1ebe753d2fe2f2e28bd58fabbb0eda2ebbe7743db0c696c7c62a86ea146100d9f0e02fe3bb7030f339a6b03b8b43be8fdb17fc089b490a69d9ba790871ada186ec719c030697f6e37d4d59cefa7bbcf065e19bc5761353558d2b6384159227161bb03c0b984c0f2af33171383a96abe9aa2221fc9f +e8624864eda0cdd9142783607baa7022ae33d7ef6492d7a89e432c62b6efc96d050aa84683ba76042ce48a19a6aa90fd1b7e8dd5f6d3eaeaebec25a6188f27fc215096c3b46a0a41db7e4fefa5091a7b89877a339d591e7bce72003c70473ad7155e5530e1d86b061a168fcf5255865dbe0c87f0857b044300bd31822adbc2ff +e7a03d20518bf8142e41e1004ab2eeaac388f7af3ea1674e6e8054f03ec5bd807454ce6479e2352de45ef6ad4ec19f122a4490bead0fd01a4133aa8fed3ebe01a958c6260beff7d3b32ebbd98b43aa28f5a2dd3591b830ebf38fad1a6c60045979e41355c479acb0357594f1bad3f1f49883ed122699ec666272d258db138eef +f182ace596ce4929631845953e78c3d72735fbd36c40fcd5fa91e04765853663a59ab5b3894e6306a2393681e0fd090ea0862ec8258820230c365618a05219e402040d98d0c41215a04951ee361da4f74c7c6f5c53af7da022eebe751e1d91652f1204e9f9d67f106c7bd2355f2053157b8354b24473215b6e996a65407ff307 +fb1f9721e7fabca13f9ed6c865bdc31300a2a2e14186c5b2a7d21befd15ea7b17850e718ba1d50032f8f2bd2cbc489e39f4c07be497bd828c7fc31cab9b76472ec3ef5e10673512c6055f08a639596ec793e10111a8473f20f6c4b4b4d36c86bdc59fccdf438c0fe6fe0827616608e7235e870c3de42a23a8948bfecdd66ce6f +ee94cd94490f519911c0e40bde70adc48610627e30d6a7a8d49883cfaacaf15e776d149239825720e3f7245723f860b28f1451b8bd708088937317768851c944a93f36dd2f5277ae9f129fa681ee62f2d69150cdeea17e562ece6292263cbeffeb5823b2d2b4f9e35cd5bab7feaa1a2fba9053ae454fed457995961530f9795f +f044b6062e43e6fbe9042c1f91c9cf73d855599144d23468b064b76204fd01a4a2292c3b13ac51cb994a4489b1240dec2dee44999973d56ce4d3b7d7cdbc7bd76cf94e232811922634aa47069d3deaf2b63d7b329cafab4a8c852ea94930f55574a04794ce1e29619981395ec0ab98ba2157c5ea9f8900bca4d346beb3986e0f +e51c030e067217a685ccf33a59060487e582d19e5fa263926dc399c7309dd3f15be9c358d1633457df2f4e1a1f3a66e5b20acd8968251405fe45b413ac04466e4b25ca5e543032f0236172228e0f85b6750bb03c4f0d52a714f16017131a6f1a134427bf33ba14ab29b30a77c4d1fbc01d9a024d91331252308a4dc9e78e98df +f9835b4309ad90cd9f09c25732d556f959c172568961277ae1c55ed55d42eea5e615b2f4b1faa60cd69d5b84e5ad8262c455f3db997cdb6406f6ab791a0e956176956a8cdf486d6d8723525829b17e07930c8b765fac655ea17e1c1724fc29b585d868817275c8638bceb192f5ce548009042b99a99df6bb07186739fa24da4f +ddb4070202073a54d0661e2b79d8b5e38590b569ff51eb7cfce729a0a4de02fe36d119faea9c4246db6c1df9514599e7659b2e9cca2563eb0e78c9351371e9384c4126b9f87f23f36b2609c547d63ae71a0b29d02e8190ce32fdadbf146720a66a7d75a10ed353c02ed6edaa617d5bd7c8f6deb543e41545c7b52e4e8fb64b87 +e8ddc97e1c9b379522b7e08cc95dca6ce1025c53674ea3b5a613ca093b07d5e3dd5a0d98b13513d368c67d396a2b5267759afe9c954962c9753ea04809f98f6243a0ea6c620eeef53e5e23f5ab12d81a44604ec25591afdbf580854ad7a74692ac625c46b6afb7cc81c4c1cea76a4b7a86b6c8a985a2420d3c20f5d326ac28c7 +e80a2abc2d9a8442a250462f08dc025eea90e8b0048b16a15aacb65c866bf3790f8dfbf03147c9c59b555fe28f90289926631e102f79de628e5a5eac77aa7724f1159f5246675a589a430c97b5681a03dc271ea079dac8eb24d3dd071f98692ce7434582b7fce122604615f99363111a5c9c71ec08c98af5b9d89d1467c570b7 +fe89f7067521cfb2b7e911782c5d27c0499b798b12e736c2465b022c53a0d094cca84467f70b5a00a99aff1cacbca43c66376bf5c31a36b9993083b71b56e9f8381a0ad7275462e15d44db66b82eb1dafb7685f0bab69c7c831f751b1616d410b3b39b8100a046a0440d6eb027069a315c9050473ae57a8169d052c9e4438cdf +cb586fbf603dc8646bfa253951b65b0e93d4185162a6ec3bccdc40a398df69a0914a00f19910beba1d7d71886fdd80ef7b420262f6c0d9ba2df12fb2365e3e80d0d9f75d84673fa72a371dbc931ab134b2cda89366e03a667c1d09f82bdfef9e8323edb21efe9367a59382b06896a58e85420e0d2ccb060562c25d982ccfd1cf +e9cd930341c0731b50ecc8c771122a1fc211d913484454522fd2163f4a789dfdd561676bfe52da7d617a028f0af9b5c17b8143a1fbd856f75135477b18157d057ff3ca1ebbffe689fd427937d0a3c5d09ba6cd11291d74a6adeab21905fd1fdd08a927dbe83db28013a2e2abcc51f717b01df8ab9b356dad8a425c7d171d5d87 +e37bd300f3654946b493cebeb962ef6a0d0586c4e048bf0f8cf6da4fd843b69ae7e270101e2f3c938a076e41cf5d04ef30b8f02bd2403a5a21e585a2446ceb8a0fbdbd7f7cf5bb870e4c621901dcad39bd66f241d6bf9ab7fba45f842cf1374867f0a178ba07a96149e3c947b570a90a2ace11c970469f22bd0b0dcf9313c80f +d2582613e07920616b74f7b412d423c29e79a6112ec4ab773b4cdbe781e36bd7c0f7d62fe2c667b69b91197283ff54f2931b6e8b1ad5216e87140369e605dbea876f561f35c855b02c06e0065b5786a760aa197fdd1ce4caf55915feb1d72180f38d7eed6d51f32e59cf786a390e9632acdefbec423e3856dbc9e34e5b4c1f27 +e74583a291be41c94e462e9e52bbd99053d2b37048f09ee9b0b30a979e2cb38d3e56e3c402a6b04ca33ae05001cc8b2a338ba4d8b6ad7f4145a8de873da23430e6bff9a0561c1c87eb2a383101168746f1aa693eceb7df6376211dcb4a5fe45b005cede2150c14ea3d0b4b55ed0b0e712f4c451abb9346a66a9c0b0f1fce3d57 +f21908b7047a4c9e97d429be81dffbded8194b0f950397a5bf848474edcd5e22a5271780ff1278af476abd42738f14673a40f57a27ffae80403d8adc075f965eaba064b13b59018aac75ba5843a1f0a4e5d9b3bb8744559695aa4b60dce2c5ac06e7f6c12fc899050de540cd6cc6560dac5bcc7254c065e336062179acfe08ff +f241f80aa13774acff90fc22840992d34f4b6d5e368ac4d59c1f313926f0e939f48c21a1bbe6ddf8d7eef9a3fcb5333eaf22367fa153b8b2f373dc94428afbf01f7e2e64d63b31c831a9b4f3c975827d3618947d677209d5c1dfb24bc83b429a8887a9f58841c1307219e7a6cec4702fbc4bf448c0e13ec0f18fa5988a90ccaf +d1842518a195a179cafa871f4263dbda6849986cf2a2d2b9f5a959602bb84580d8fa745245669d5b1c78f64de252c8abaec34677651e6a990c670cc8c0b1c5f3b761e6b5c228d04a03f76e532b2cb6189c23b15c27938e484370b34fa6b22d0ef76c6a42a0a576a6efc9cd9c2c12f01b73176d1d492e9936834bfc1de951deff +e8e6de5745a2bcd7b356547861a1d4965afe3bec6ed0910d81562ded078cbdb84edca79efafe1673e13d2ab7dd4e96a2996aacc68453f06db604e6f7d910e7adac9eb7f366da73af47396d3a5e74f7f5f1837cb4781edd087c5329cef0add907855a55675ee539b99c4847c60d8335007919accb0b367c761dfcd80bc839c91f +d1dc764ddb23dfc22a03581ca1f82f966061e1a9d5099fef8fb5bd1041ae48ed582710d892471a66fdc0441b620d57e90993f32c2333b2f626a01cc5cf883a528158efce4382317850e73d93fac7c68ca8d5bcd9a37298cda9d1c0fecf46cf7ca69ec2815a708d3acd9f8653d7a764ca5e9524d47f6e8c2cf64b6f91df22e58f +d1f54e666045eadc1be032be75f6c05220b0a220e04813e638021f7734f60340a4aeaa93a01c6f51d540157be09946afc7ac85650399f90dbd71e4c4540104c1cb00310c89d1092d332a968ee8bedcb421c4850c6fb2788043360617802e95de799351983c52ca29e365fd3627bdda7beb17b2624dc311ad8b887481cddfd75f +ed36d811ad7c64ed029275eb8daf1916cf889b7060d07bdf97fb231c9eec8d2c9f57a9e4a4dcac6032bef14d70ca29bf602575fc352555161fc41b875bec8899bc9532d620276fc272c61e8ed1c46f556570f91192febecda0368f5b2a87852ccc04cb3e473853d27b8ca9e98228e018f990a493eb05c0e72ac3d560a56afa67 +dc5dc1b83225191cd1be4c329b5a2fd4cf336acb77afac60df320436038226025bfa584352fd7dabcf179a8b4d26bcf7ef6f174421431d51f2917a3dd0a09cabdd07539e603b6f67a7e2a9c0c2c1b97f653bd331d0af5837bb730b5e41dadd26cc2cf3d94b2f1f41f9b0acff7387220f9e9fb2a4168594ce91402b5084a648cf +c9efa4e21a5a2bdb12eb576cd2abf87c0f68c30b56c6ecf415229aac30bd6b808c8d6eb0571bbb60c1877aac777cfefdcb8d059def0b9ab13cb549d3199add6aaaadc67a27bb5b8fa69cc302be242760b3eaf286adf58ad5a98020526b792a47164f87cf59c64b3a38a91f4e9f629af598f3481ebc3a8c20664434975c8b6137 +f8378e35cbcd89ddc015dd973f7df3e0a9a35615096247d76156d0edaa20b22558fd96bff3b81e75c2bfe418214704d2388bd14a4f7c6ed515d842aab7b3a36bf4cd0d5627ed29b5c450bff27f5761408863e46e849cc0f13eb474442828758ef90de006d4613f16a42c96bb9779b08df176e73370172939651e5c767962146f +d0c68acfb50c7bba18a54eb341e8c6d3392dc2a30df8e8fccebc451539f9a1834b8bea160864027fbc40292fa4143943695ef0a0784b8c92dde192bbbafa16b8711e8b38fc747796a070f3371e9ca54546f40a428ae05f857ab6a45de4bf17f1afd3cd46b8b2428370bbe594f9287ff18c503266596fc7f591eccd6164ee59ff +de45c5fe1f392ad474573aadc7c3da411bb913bfe0ae5312b3613e24f00afde2f7fef8e2924490deb1440adc0d7573c81ca977680558bb5e6be07d02297ac7204d57f6413716791de0d60d0cafd8bcedad8fff1f9b1660eb68880af94f4dce14c3f7036824777abf15f9b428ff0aa17e5a3d9d1427b810a5c8484eaa54f84a3f +dde7332f67eae67989ec3634b3c0f5db96030440f9526f4310ec29c3696ce2aee2ccba78bb0bd747b3120a57f4ed62819cfc716d0a42021d3ccaf0ffda1e1ad11ab2f6f186dd23f98dcb6c4f30362cb425adbe374e016376294cd3eeac7be4908cad7236771cab62b1a81a87ead0e86f55de58817dbe5de8441161c8a9cc6617 +fde8acd0be97e2f6e4c72998965b106f2a9243bf2bfa7b70b8a13ab8903e806848d9d23fe696d47d4f66fe8250111e249ae54ca612da8f3027e5fcb38939e3b174ba520635081288d508583b7e25aa84bdee797f71dad55c224786cf8018dd9f276cd8981c90cfc14ac4331c6802ef18f3bcd6ab742d28b902f5a14cb285b49f +ebc044a6a0a05903daecd821d1b1a34405cc8fa85c39e2f3635b0ae93234d9c9f703e8fe597e751dfb026e2647b4735333d042830f1b3f2d542dbbc6c7c380b2649a48b8f33ed830362b7fad605ee3274a71ab9700cb0af175c0dcfef12da665bd5fd7460a3cd55d3959dbdc89b02520a8b4d5a3c1f8842b3a22b360400a2b7f +c7548ab6042c7ce0711db3efbbabbe99301dcccdbe9d13505580c2d14009db7befa7e2ac6d463b6a59abb030f125263fa7aa46d43388bf14e5d9e7d258b7dfc53bb6382824dc8c50010a7fec8c9bdf8731748d9ba718e9a6d4db3f5202638bb24ccecddc5cf7bb692b590f4216331dbca650dbc08a485e86a98e188b4692906f +c6aa59907f5d81bfb7c11453ba119505e327a5009ab6995219c36dc109eb277918efb6a0ee75c9d4a3ffed1a7d0ab1930d5d90519f2ccf86413cd42f3f2c81de12565df6efbef3642dc6d5a56e04eecbd22db9ce60eaa57468867ec707d123334015f60095b4775249dfdd6445c5b17653a83b6c7ffd5b4dd811299a270bb03f +c9144848930979aaf39e48aba6cff101b19a612505742c42ff7cdf846282c5cf1884b822fe6e3fa193cadd6edb3b25489409ddd41dcd3eb3f61b332efdeacd2aca75edf54f6cf3fa8d78a51ea5415695431c918bd6d7f1e9128f3b0423df6e3291f8e3ed55e9bfdf8dbb7c7e3a6e80af562e1093ea299e80eb7d8a3814ec15ef +f60c0e7bb2515a0f1e1dba3d6f5e97599ad098f05a8377817d073767ff229e0843055085b2856a7d609d97e81d93f47419ca6d57c5bc46dbae6d45bfc53e0023f622c8823bdcf3f887e53ccd12d6269e146a00d19c529c93fd7397f1fe48ffe3de73f5f3ad0c2149f79cfb1cb33acf9cd10293d1fe1096eeeaa98235717990df +da6793c488ca16ca687f310a0581ecfef58cb43e7cbf1f8d6057a74b696cb1edc87e2dbe7bbd75589e7b224860bcb1e5c77bd828fd1cbdb24c3bdf17fe0b3efce92808e972b49d638cfb5d2037f6444c359d88de888240468487e87850d1df3299e3053571a97d5743043661d4c46d0c5cb737b7302cbdd6358d52a2b7b38c3f +e6c855154cc3d900f69f098c4a69a2dcfe551080e9205dd8bc0a833eef7ecd78ee194a9993275520d43f740d3406f6db796679d099e1d00241dddf31c4b3ffa5df7e8ae3c02f87296f39a19fa37a2103c72d8d23fe40ca16c80483de5ca307716f924065f8fd1f3801016294041e1e1a2faf081740876ab169f6ea5cf6e4d11f +c534ae6c300af9b7b68feed5dc823094ffea7b2e1593df78bde45976a2fed54dc37d8011aa266a75c9ddb75c03f9d106691b2c2fa8592e2c3f1d78cc6ff143bb7bb66fe1884687a9a80c837c1b03437ab40c57f55ee2e6acc5faeca7caea5f5eb079be8864420c88c636e75b987205c503e518b06fdaf2b2f5920e5a4313d337 +d7f5b7cf119c8fcc0d1893de078308f471f6c9c5ed58ec6e99ab3ef36aa25fe91f926c9997193a1675ed049c66a3ad74cf91bb75f7182a44a0c58a1f72ee0c77da3419ba60d24592fad66c6c3e7337b0716456480722406ebfb9a286b70d45664b0f47661bac2cb5bd332ab9bd64d38a79c0094a1008741459be558706466ac7 +c330a066861b9dd23d01a3d20b2b65e66e01f891736882a71c35d3fb8f326920eda2e14ee5d9ff9d3a4f4827cae23ba19ae339d116def781032d4edcd9638fd711dc3c6cd87ca0cd761b52deb266c6cee9099e28a519830a34e80711fb1fbe7c439206a943b65ee47663867a9141601e9c2e7b1f4c9a57f9ef1e503c2f245e1f +c0589210e8f0531cad158b31d29f92ee7ecdae84a91aebd6a4cecc092a6bb0b3f0f5e6bde0f74bb34f3b0865f14837987091f790ce37660a1a266da9397063c0597eeec0c8e9d2acd0a7480e97ba26ad36a6b70dd89480b47b9a26fa00d3715090cae9a042585f5e52fc11ad0ce52f0ab23e49d01d718a380aec04076663dc8f +cff191ded3e9fb41c69e4b26bdccb304785e1c96252d25902929c6cfe8e6384b5975c8830a8f4a9043aba4040e1b60761eda02374af838a1aa7add2c48d2ad4a6b1a1e0368abf5ae70f9b7d0e8b1fdac9d3fa0484c0ac54f40095e59bda11193da2d54d2f801135ab1bfbd3d0216653ed0da901051c3336cbdd192a925810daf +e41d7563ebc93b7fa02aa599889f8a985bc7d2c35b2e655ba63ddac077d481f51517646c2a52fd51cf83a723d9ce170bd676f33a5ca9857c3d50e21b0b511ed177ef2c710fe544f1d9e99b10725672a8c7b5d83ea2a04fdf9bad18ec30d44efef5443809204844eea7a57a766bd3b6f2dc10f8f1b779bdcb01f8b00adce2b057 +de4715e470c8513ecd87b9c7cc2e6dce22fbb36f1e7f331b1dd08d9e5be8c344fb2ef98f34e287ceae3d59ea7e8172443726405037f74260f4b60f67fb217c148527be825136a8002dccf51dfbc20b24935c163c92d408be1c1af9216800d7a6dd5431c894c716bf2047932800555ce96c53f1660465176d0d64d5c72a3d9a7f +f04e0927de017f9e27dffa89d56ab2eda576ff63f8cfb346063c14214882d9d928e4cf24badc3f35e0fa005b1a31e25c1eb1d70e97aebe3d739fd1dce7f4ee310bc09096151a2876b432f77472ad1eae4890c8339b2129d36b7985996ef6d5a60793fc901af6584c27bc6d5f98bb5670b9c2f04334364fde28c6a872b7a25bb7 +d139d50900ee245d89e1c88d1f0c7c484da940c63b3c2ef8aa80eeae937a6ec282bd6580c78f3481f8aebdd9d584171b558657d631a96a2cec5714a14fc06faeb47f000af4fc636baab44387053ab029367363bbe85c0f9e107e83247485ab5086458eefa90d26555522c0b94f68f63d71a1f3fd385e4c9aa6a40be1f23e77c7 +f794d6afdcb656b9c2a353caa279e898ed3762347552beeaab54172ee163a82cbe23366c5c9cd4d1b28e8c33b0eb47c2305ae2cc0d87ebe1834c64d82149b6bbd96411d42ede12a478a5d6aea88b60ea6fd3e9d4b8e100681ea9d0546ec5913cd136310f8d2b199d21b39a85c49175880db48d4c450df37c282d4fc3a5d3d0c7 +dc15aa334fd2858e44cc33b2aaa67b0e89aa96f159f8edd6496e239a9c30883323c28288303770be834c672b1c2c3f46599211ca2d6786bfba9e85f97c8c976d8111ac1fb38bfa302c63e1cf2ef8a8cd164dbd7c1bbb97ab164a8db3cdeb999be2fa79a10829f584df24e19dc2e43bfcae28aa0c1109167670cd4f12e2efc527 +c528f102a6cc644d75250202dfc456eb540647336b2d666437adc6d2d5d2eee7f8a5368d87a45c005f2f6d6ba2069db994d990d86d4b23a37c44d5c2eb3b8a39073980804fc5b4285653b7087e9967565a45e7b5ba85fc523ba7c1a29d53ddcd1ba6c21f4fa7ba55d1243f4412dd80d30a1d7cc1dd50c50580bf1a699ad1c9e7 +d71dc91c3dd7c221bc129d4872df3f95e967178b562120105c10eb3c4a79dbdf53a2fbd0411f17690dad52e5b499b4585027f71a6d55f97bfc5da34044da3fadcb5d20d41105c477ca1db437de821a8d6751e9e64d7e434da889a1e6ce048e0dfe23bc69c64ac14229e4b6f46291a57d309478366ab4b0dfcda28ff2be9af1af +f9661606d0a19c9e0eb921f13c5885cdc07782ee0cd71e1526f56ee97c4f10d67eee657a2cf4c0bf2ebe33352585e7dc61bd636099a04ad877b23d69a389a88a3ccd077c594fc230168ba21ca7e9c62e8ffaca2315e5083d262d7f81838a86df16f0f361d1d3313dc955b050267aaa33b2d781967d673aafced46ffc89f8c05f +caaf9c2378a1a60318e770cb01c1f734d9b5765232e4e9c4f0aa2c2b1facaa2c7b4744b3d53c2e47c1eab64ec9d7860c36997eceb3d68ae801cd972c7777e124289dcc8002a8ccb9401a0f37eb58c3bf427a23755334b4319d6b89cfa072ef526caac5b46e9bd3f3f3bbaf277459a4cbf74610311ec406f5e47e6aeb91dbf7af +da4ddca2985690f3ab025f64c93e4852c7d9507654263607b8c65449f7c153aa0d9dea171c7bbf1b5ec71987c2795c6b5886a1414806f2fb05f46fe79a4503a70d81813be149534e9660e2f85a2210bd188c1b36f67dc99d4716a76722633fbf2f5174ccaa3cfcfb41c17ddbe1a03c6b130545674e026af23edacfc7bca077af +eab3bae39c2e64af9f484fd81951ebf6bbf180a101131f514a1206992294d9b4fc1e8b341f6605a29778663f8b8c9be865e5e1f18494e82ec452497403b05245a100a8e949faf7f99bef7a0b2e62df6be98eb89ad8dbae0d6f3a7ba0c69acd953be9d313fd0cd90e2021bc836a46389ec91c9640fbcadd854505abd80f31e61f +cd8b4d4565b7d7e8b95971c4be960dcfcf1c7cdaaa00d4a13881cbe51e2cb7b1a04937bf99be196583a7d444447dcd998da23d306de823c3921dcd494b700dc334dee91ca86024735f9d321533a8353e277002f6bdada4b4fe9abc9808208a6851fe9f5af6aa12a1453b00cd9a72e3dffa2a62f46f18d0e96176da7d3dc60a77 +ccee635050e7a5898c2836e60c524b98dcf779db124ac25e4d92b0dfc804b534fd6a3198dc45073975a922f8a4853f4fd85737fecc687d3fd6b74e3c45ef4e57db7a01f081ea700f6d492ece144bcfe99021a48f93b06167ba912a5c2fc380da32bf581f01558a0d5048f868c5ee80764fe7a69c7f4169c64257825304f5d3cf +d079c09a15850d0f23e8d84fe57dd607e78c41d9ac4b0fdb8df6f6a22316b551c1ab2e283ffae0e50bfb593d052476b2da7336e8f3bf6a2d74fd8a9a9c16ff38790b1a5bf68ae676d1e9adece9276f4fd79f630fdc39e735b99116ce53e046a9a4d3312b77e3580e8a61a3088c8a640a2623bd811aab8244b38d088e6151dccf +d04a2f50bf1bddd1a2788c95dc0d83f7df6c7da609b7201a1f620f1b191df1c29511bf4151fc2d149feef372b21a5bf4eecc80151760dd4eacd86f073c56e421b2597c721d40dc14131c3aa93b3b3c91348734e54c99150001b7cb16c3f0535585064f7849ce11d1cb6fd73dfd8ac181409a5421f0c2fb5069a5daa9c8ba7fcf +f834ee80bd53022047350b3407f5680b9429d07c7729d1906ad227534b0ea6d06be1f43ead586d92cd9566fc57e3d7c258227d43c08dd23501ead86f8a8fd22c387ef1a2c06cd94218569ad030f7f38df7e83aaa9f447a2f6f6832eb0eab793cb5b1e309a0a47435247fc23e1cfdf27fd7a900b6a1afb677faabacdf463a4edf +ce2f4871c7955eaccc39f6a2c350e23e0e12b2de2ebf2fe1d2b4a3c25b606a89ec1b9c7974839b9f228d35fcc593204fcbfd6e9d8d0301be184a3c04b9ba6c7501b135f5a778656c9ca9c533d3a042268ef0e43177cbc1bd2c3eea7f48dc2dcc08d5f26776b3f7172b36a28c36a878b67e790d1932af8d9959ca53a9cb69d6b7 +fc353ab47e971d45f4943c6fcc9cb378c8ca048007707769218fe60c92098aec96af5723edae7f696e6acd4357977fdd29b19d92878db0b90e3b22b01b8baca033c4d15cbab5bce27f8643b1c2031c549311c7b6aea70546696978688ca754cd19cea23d88d70d5cdb8dc7706413a0e304f084bef7ca5d9c1d268af4a8aacba7 +d0196d1a2b037a1979228ada618221808e4229ef2b5dd8aa305daf587ba0430bb8c4fdc6cb9e3e10ab5f8b78309c267e2122705d36b004620608bd6938818f0d7563b3d652d7406024c939af9768dadc69c5b9027bd25cf06fce0abb4b0b41165fbe290a5f2019d9fae2e0cf9014cfb1d01b8d82403ffbbf7263f029f73267af +e7dc899c7917d613c1c87945d9aec2b8ba2d584bc761026d52cd164c5b5411b85424ee8166e44632d13b52f45032b3edb3b84070d45cca7c14669bdf77f2b05505bf20f758a7d17f90f5d5d32f037bbd66ab11008f889b962c1ad91a2160414d3d85b0853059ca252c6f292b6d8fef104a8b7dd7f0aaf5da0bd5a76a130ac46f +d914fae982e02bd23825c6d34f62d69463f7d5557afc4c1f15cd1c366ff7a21cb59e3d9b9f23adf26b20c2970a87de4c31d08132bfd373a391151d53571b6c1f51cf04c01b864ac385b5d58d87951a56f093defc6d22fbd11c92c82ac6a61902a1a5a0a585b37756ce80f9c885b309567b565c1f1cb022b9c593b7cbee3428c7 +fc110406039579a25b3e59d7960e231ec8a9ffedca37818c90b66cf94fada1c3dcf9da80cf8cddb4ba6a75008c6ba8bc2b501895caa40a222245a200327b8f5251eb623aca75f201f6fab188854b4ff9296feff5b6863456e8fb20c3149058ec61b98474cf086d0fe9529df0c3aec95345116a2f878e05b754a83ff0b04c5ae7 +c0c529541d21594e6ff7f0b31036fee2a8480717e637605351713f77647870e8eef4ee5a0484f23572cce18dd7a80319bc0ec5e203b393c5704132b41dfa02ab42893e636083f0da765a54b033a44313df991bd80d514c27da0ad98bd90f69f584b677d4e1aabf659e60c07ef6b5beb0cc181e9f7f411ac7a5a2ad1a1fbc9f87 +fc076d37a5c40616371f86b022082fd129344c8da28638e9a402d63725ca0012f3bac45102a67f1cdd82b51c88c62683dd8467e3c5ac4585e96d528ff96243804605d1584de352a8ebfcebba4d9d9ef8ae6602d000a6def01444b4f1a6727a84d619f04de7d274c601b1de6e23f216dd048e72f9718223adde9327c3d9314bff +d04ec534c72c2795a18724e9cc3455bf2426afb0cecda79fdd8c9117dabe6cd8eabdeaa5726bf426b4624d57ee847e4db4ce6ec71e7e81c85ec803f34c3ed03698b6740d681cbe4d87566cea96cf935b432ae2e40b02d2507912f2e0a42b747492cdd6ee2438d0c8b10682be0c993a678d00f527b0262fd9badaf6d09e006e1f +dc18622916d5eea0387b624707ecf23ccf9a8e2dcebbb3ea255832bc60ea327fac6d78c471f350803125c28d2ee57661c1e73ae199e81c93a6ba99fa28aa52e4795e82c1780f20dc5c7ab09c247cde1049cf9d353d77dc4bdcb2ed1acd2418bf809d6e5f89f8c458bf8225e32418cdc8422284f49d77b9785f25a1707daa621f +d712c4b1b0a53109d1915f2087f8f4c229eab2fc2e8e203b9c7d80e7c9a74686c77f054f6442152c49702676ae52e25d4e670ff80194dba3c8e0d5d1fcb7fe1d2efb54571cf5dfa8d72d68a204368f37679084a3499bf1c3c4e5c6c6c18b5d29f36cbf053da07adece1d73eceb8b20c05e34d109cb48951820b1ca993baf687f +dfabac69017c980dfac07aee38207f04daf9a470d7715f57625b1ddecf56779fcafb47786a094cd9c679e29bce927b7415a4d2736e1d8af14369a8514f75380346a9c9a027adf47d7b30b6e6473177e5f5420ced2774408bd3a9c263241c112f743c99acac8f85c62c7b7f39f455dffffd0239dd0af418b5284e718dc9d5727f +ee4152e7483c2ad943a88305d710c86ef8a39ac3b0edb4a114ffcc5cae79fb356c26c66aa2abdab53700f6654eaebda84906511a6882a9ce84fbdfe962064c83f61242dcc87d1af9d7ff6cd8a69d68d4730331e2b5a5629f87c475cb60d8581149f42dcb22d5c1609a2d92977ef59d8e961bd2fde065a0122a9f086c875111a7 +f0a1d31a5bf044a7bf049f68697606d27398a31e6dfe87ba0558dac28e5f06a25d1b5baccbc75f89d0b213f225e37fd77e58e4735d40dd2f886947e9e120f3d09e207ca3b9b83b68398394692543fd4d3bc88ed6c8e28157e20d25f115d8aa3e52c58fddc6902278a6a8c2b63cf621643bcc08e80ec0f5ebf72bf76e2fc99887 +dc4a9501f7d322aa9b9ab3f2c74440c13cc96be0f764dfd066ad57b21859ad081e34816ef9920aa8e031e3e3215230cd9ec3859fccbb9c12903d053c0e03a67a239f71c52fbc0b556b42aceaf770a6c41653b7e48d70b9a439f8d751eb9c9eeedc994050acdcfc8883fb3d4a2933eaa3abdc97b15bfcc0e5462db068794bd8f7 +cef65b9de65ed55f302cb6e2db92b7875871ee356fc7db1824cdd2ea43a4ee2b2cad7be83b23eb586b35f5cc47169e4c1d913672daec162d02226dfd693be75296feba669391e58a90245665ee7bdf12109298c61afc128eb5525013f4afe42327ecf92b46720c70f90dfc6ced88739bcb5a18de7e49ac1d67049d7be8f95ed7 +f411dc30f754092ab5fc42053d2cd8232ca20026c98638c0734ff6f9b5dc4f9d9a288fbabdf773971338b164c80bbd84479a270bb28745de763ae98984db37974357636a1ec1ea40f8eaf1e9c9fc2b7a9222705b0f8547fb0650179bf02aff0f6185a35bdd5fb3bac789a8a97c8810eeb805a7f5ac50f525e888e73c910656f7 +ceae9befa7ff76b6a7f68d4c3613018edc00784fdfc71667ceb689cebed81bfa07adf2a59e6a5a1c6916d870e3215edf1b3652f89cfcb137f81aaf1a2f8550dabcbb7a392ef25d87f58c20e8e71cf136e94a0501bef9a5b2949bd86f69f9058a367ea9190419e960e37d8b06e183feaf2f1de0264ca753e5a8571c6bd69f4497 +f80e7b6edf36ccd53101db420065ea54464158cca1df67108bac685e7fd46bbf318d9a597693538d1d8f188ff9e82aa61c44e5e3c6be350095f4c9509e69850170c79eea52fef1ed4edcb3ad3d96339f2dd8318f9a4295fe50aa30b572af27e3bb8beb8fc2926d53f31b63779c024eb174ff7e020d50072676e854345b1509df +c3ed6ebb2470ad26b550b419d35fcbb65d8bfe3f87c4d3af34a24ca87335d1e83db04cce1c05f994aab89da712e05c63b9ff7c90f763e376ef34a674dfc0664cb06b5dfe658879dfeb570d5b7a6f4b292d21975c99afcb5fd98a0756c6fa61c5f26997d348cf7149a75d7fcbbc518c342e295b7bffcd24dcb2a0e280fea45eef +e9f31405cb3e3b5720f42a3747b033573e6147f4d38ff1739ab5f1a3ccdbb96c33919ff4270bfb6275a9988110d8fd467668f61df9982f4174da82adc0f656ef0c98d80b7829227ffba30ce3b1163799b77f1aaf5959b3b3d5f6e60a895cf31512db393567ae8d80f7ee4e8d56ff92dc09cd0c34781cc72bfaf7fc760db95637 +c6722e1f1f2da595f4013239a5f47a7befea961a57b89ce990722a6e5ae38ee349448d7bf92d619c9550814422925b3591112c81924db1d938fcf93a67d77f512b7392b3aa92defcdf53e3ddf8c9d45bc201fb6898edff659a47ab61276e6e307aaa5c33a53a7333315627bbfc725ddd71dc08b3c0f6f8e5405f7a8d864554b7 +ec62644a57c2d73cbd3358adb5ffb6ada2b5f754aa2b69c2ec1d3630cc149642783c729a385b59578d9cb65286f2adb7fb04d009fe482498f0ce54e0e3bf6656446e1dcbc43cd23dc9c06b08a0edf3ac085ab0e9e47c0a4321c9f711f6f09ae8670fe9d788c0a4d3a454a05c8af62eaaf1a416984ad56b428381329d6a0d00a7 +ea206f3cad4168fccad5ff27f221e12defb6c31f2a8b33d27517033622bd5fd908a125b6d107e02347b54e1660b81be3afbdc50a4ea94c17b41cc353001e60fd2f16ad179af3224dfccf51e7e02c5a16a4be0c8db75612bd02c492d3ca81bf8dcf38dcf2fab872de5557009d29e66ebbd0cbe0f42755f2f62284afe3141525cf +e436df8021d205bf401d81d1aa1974b5f99b87d3303a5fdf7d4809e349c59676747385042d2f8f9ca7e03ecc8ff91ef85215376ac500b337b69628a87d289c2c7aaa7ee969a0014eef5e10f1032bf3f33093e7c05e8e4c8a13f181fe0e81919ef0579436dec0ea0ae14e860166a7236dca3deca5b7eef127732dddccae15ad8f +cb91fa4638c36161798b219a49678baf6d28dbc0b70ff0a094197cfdbdf04e68d358660ba31b9de6a3497308d61ed20e297d51dcfda6d0d593230a130cc02cb2c6094717190f4d4a1a6b23a5485b31fc588b220d8840c2b733fb08eb85642d361d081434e43fe013f85d384c396fa78ff6c3076a373014ba48677bb6ad1e45cf +e49538cc1d3311658270feab194abfa2e84806c33b044f2e5e020d8ed88581c1566a04053ab6a1ddf9560357d23c115af0a8707567c9b414f3f8c779338bc086c0bd478c34e1f8f2ec286c0a4913569fdc9ed19755722ef4fb9ffd342c01489d5edd9f6207bf56f57a18a49bd2e83f9760084e8a25c3b92e232babebc70380ef +e6979c41e8ee1e3f91de38ee90ab48fe7c7ba346cf18f9822f06096693d7fd6b631319ef4251e09b40527b98e7843302447a70e876b9417b6f4f806b8947b1a679feb159a586e1db198a06866a9cd0be9542c70bb157bf8b8c8b49f3e5a75a07e96043a97cc1b91bcfa9aa5927b71e0443ec1aac6aa4d0ab0edb81b66a535237 +d62d17748b43acccbac7dd1741cad04cec72047702d8a0ffc83cb8ba81f386537f192ea008166dbf14fb3717dcaa3fc6c5237b702642c68fdea0d48612366646ae6ffe9866b88e5469444251fab6c4123b291383a7d7fbb53b1f0b56bb57c77fed74b919c9f6cd754842c543d2ed61298a8123772b9c179a5b1dd0379d17b28f +ff69d18d87e3d6b2f50c50ac47e96170da72096567d464c5bfe747e3541a283e96cfd71a97346e00e1f74acddb004dce0b23eb08b621242b138ac7c6a3f484696474b00a0a7181e92207be1df5462825c7e2ff96be611ea5ce626a20cfaae8958834ef65b711dd364424f148f8fb37dadb83f5906d0a2e88b856321784097827 +fff424142f50218b673e2df6c4f33cdfd144f102b6eb391a3cb7d55b51232bb0bcc2d8b39604c81c979ec0ed9a3986a96bfe9710114b06821b62446354461feabcdc50a5257c7e066946dcfb114a5f71e175b37783e2224caf327a4f175cd2382b28656f24221c1f92f5913856d4fb59fde17e9e0179d274a2649f48b09a11ef +fdc9867298e3d538bf08aefc903734830e2421f89567cfa64fc4e6ad0cab6a30953e6f317b58727d0244a8293a3c937fbeed1bd737e48495759723b245808ce854926e2cc1e38c9ab06fd3b3a81321cb1bb043b52d48a17ffa7e7230b032f4c5bb09910e3424f0611c7e19d6f15ed40bca2967d10cd110cf969de33ec402e377 +d186f60a57588129277813da2887dcc927c35b55c1882515758af72505dd2109c2fd3a1ded441dbb1c8a0dd8ad1f0d5c4e099ea5329f02cdc0c06ba550a28aeaab607c8fa8d757f3bf1f0a6a8ba174459198b812ef6f7a4743148967f3f61b8b46c9bb89043d879f6ae0164af3406d34a9aa13690a796ddcf611cd3d2bd8ac87 +ebef8a8a26d080b1c912cab10b1db786a4e491b2be2c81223fdcd3101db31b6ca3c89426c76e6fcd2c0c7d18b7dff9a1241c2bb005253eb8e84b7bf061d0c8553751ddaa69f7c06bb5f7e09d1cb3d6b0b09129804aeea39be3b76390d6218d52bc5c6ed9d4971b6235f1a12bb08294125dd3401da2671b75cf734d7169e409ef +d52ad548ce2517d44ce3c8137642bb1f38a107c92bd1e6b5fff4c89bac634ac6e1d49450ed22d922018c16eb08fefa8d51649b6106ae40cd949d78651683c7a1023be09eee5291ab9817c5b19f8d88842b2a061916c2a1c6dd2949f68fc1fd2eb4062a01356e3a8619c5180afe6ec5b431b31af3a108bcabd78088a3f6bf7307 +de2c4e4c1752b2f478810f217082e7da4606f93f99c14a4db27f6109e31fe9fa34faf82cd16fd7edd835fcda87203d6a22e469222d6fc869d09ba7c056ea5811212f2cb88598fbca97f8b2eb357271ded8335ab57c7d2fbbc870f7c080d72b35cc66f6255e73db8544aac28916aafb210c504ccac75b04b11c99be5db10206ef +c6b4bdd9c7c777db79c4ebbf12b27af0d619b0e65de4848d2cd4817a4f379070ad55b0941c3da2acbf660084fac111b17b06518831c0510714a748483a98174b7beb380428fe4e597250038f1a1021108ff451f05d947a63097e4d7998cfd89ceaed2e31d512be51ac62c38ed861d30405edf772b5a859d3f668bb4aa215b8b7 +d2e0cf9309e57f03301d263ed4195538c04d544d25675564a8cd8099ff6ba1cb525d038e921bbb72ab2d811bbaf54268e87dd12b6b195bd07005a836b4fe51bf5dfd1f10e49c57c6a07f3be6d492bd3d60fa9b281c24c218eb2f07d2f0a4a4fb9bc7b2fd4a2694c4a7e933d9d4dda0c5ee92b67762932dbf621887f55e76c977 +cb99391eb078796f922aa0a3b12c889d4d3093660761011b8499359ddc85df50768f58cce538a35b7729f349009130b77cc8c4882b2c45bb8cd3985d53d06fa4b1792abf362d4f096e889fe29b16a9452e72f4316ae581b31401240f7cc838db47c0e142eeecae387d3d52bb012ad554a00ce39471bcf6f0f795a8cc26de2def +d70b754a87dd2116a13892b17e8f38872bc4f39753bde12a3b9c1d89c6a8236a7a25e5fc7416c9947f87ec47b2e5f2dc8a8f8ebe8a2c575ad65264ff15590eefd971f5b59ca03701bf9c1d9295e7d88a366b5b13118ed56f6d245763c00f01478d4c27f4063d8d181f91af450a8783364843be7d9ed6b807c4045767e4eabfcf +e7010a4dd410cef4eeaa10bd0868bc0fdeb3211acfd4cbab72a7ccbb47a151667a1e5cc65387bdee6c762a66803727f2479896656e58e320386065b59209f536e89268ac874047a39c65a531abd87ff256fa76f217e01c1a7c00723ec24e3b31e8962419a7369f9805e2295206d5b9cfcdd1315891f6bc98266d0dad2ea38e7f +fa9dff39c90a6a23944be8448c04c557fd8e50eda773c9ceeb8b0ba21792be505d57faeae52da52f002120a4164250a7058649f9cd2b22eb78d8fd502497baa3a2ddec67f3ae08ceaffd1a9b2cad147e271d75d6424edcc9d5c968b8b5d22fe6a6a4cc4855e86b4ec5becbd940535bb214ebf69c93a7cf564bd8aa08d930abf7 +e984eeb96dcb588ad08b39194a3b27bcb61bd2d46bb14c7e553d4c3da5392d3bf29e4d20903267d4459a9a0d1df217a66d4071df95e0cf12e1285fdec85ca66d3dbdc85dceb95d029fbf7f734cd65e320253f593c265cc04b11ad11024de7c4b70bc9f3386cda8e2d7240645ba7b11e3373930bea1ac996cd571686dd6258ddf +c76a94a6ee89d67d3b62c2dc4dcc4ecaaf865092b37f0133242c13cfb9dc6ff67358ddd5419987983258407766f9999621e25d09f358944519a679ef3facdb7adf0db127ad16ffabfa914036fbad5d44072f03ad1d8661688468fb8cb5903825712171fab43276a7632e05204a4622964ddaec9304e0f05acbbf29e151f689df +c175a4b6929f2620d491eddc75c025fb776008d330cd4deab3cd1509358a16187b0875a873f3218c06db758cbc2a0c7a3c332bd5f9a14ca078bbed4405bcb72c07b5e4d268e38a281fc524e679feabb93443266e25564016314d951b0ad4ba2ce581cc0bbcd64af67c99e314d68afd0a5d7245fa4138b55927889a4967d981bf +f3db8f6dc4baffdaef67b78645d77a2bd655a7b9d9286cdfa915dbb7222ed81fe9cb8dc523f208453a6daa88d692698d40fec11d862dca0d6fb1982fea5005c2a35aa1ef138a24cea2a2192976dda1b45a00b462b3abb914f3512ceacff38036abc36f5535fb024fa2374ed1fee3bf281a4e3481fe07caf67631f66896fb0ba7 +c30dd80b118c1e65ca010b9a7f14163f4d6d9958658803731b283f16865b6c366107289f7cf360310a5dc8a7309cb2d4fafdacd551ba39d6c0dd1529acc90bb21f758b7ba4e3bab5a4142376767214c2d8a4076183e08f03fe2a34e2e4c21dd0dba7d0c6b69272bef70af7bf6c9a58f48f33d576b1feda1c4bbc8c55a621c0af +de0523520a910e3df8a744eae876a578b21838ccea9c075de30029e0ffb5535f9a0e816ec91ac185b54d9b5a433123f525e76a9a367fcc045100ac4449f64902595a032515c17fe7f50247477305d1439269ee55054bf65f48aa5094f1b3367b7b071e56de0687e17fa2d90083b36c741287fb8fe600ea1afdf14faa73b9be97 +cf17a70a917e2d562b3cf37a807071b0f57153503c741e8c98c9457acc5b95ddb95fb93245b70a7fc29d6a9e82ecf0f2ef8c017ee5a762c9ef0fb72360b83d7b2d799875dfbe2f8af2496c66629d26d86d9e1a613d0cd1a7a85d46f0616eaaa794b93613b2342fea71ed6042f5192fedd9e4eeaff0def297ccac2d406ceced27 +f8b9a6cb8e2a2afcd85a3f6d9fadfb078fdd9b224b9660b2edb209f6c807f35cb6ea88bae72cd7df278fdc0a050e688c4ab2a58c67cdcfec5e76302742c3f8b665953c7a4ffb168801b60c69af2191341b8f9187df6b4b1f01d961cd1c9cbfd4e01f54803eeb1e353e4b16e10a68430ccd553dc85c2e24f089116be029fb4147 +dcbd85b441e4203ef6d75af4d29250d87027912f475ebb3a2853ca4ae1bdd9423f860176a8304fea19a2d4dd464e52b23ea2b207f4d60a680bc4f1117f775e3d46f9e1b4e7ca073f1cd28934a1dfc28a4fa64059e5428b49a7990b988195f6299af3d8bd99f299e697344cc9684f78008dc92314228950f1e3d39f0c8a9afe27 +db90e38e9d43cbfccfd317f108ab96269e61edd13adf1edc2237a82f112bfc5366d70d143ff651c237dcbdd07fe8cdf1e43351a98686b310ccd4edd3285796c2651cc14634c52e4e5b76d8d3c39e23d7afa3a4c5ad08989516e43bb0ca7e9c2d8b3a9ab44b141d3e073ac9dce0e69534f056ebbf6630084d664b287634eaa5df +ce269aad8be991639e05ef252094ee97437efd07e2a6b44d56092d89a23b885ab7b6ca8d142b641648d9df9e8bb09a304f75f5ea3e5b52fa9ec32579e27de0fe51314817f7b0e8454351e601fd33c92a2fe43b72f701e05c558089c2c5d6c0204e246066e0bd5e007035b0da200fab0d764baf417316e0290721707704ffe047 +fe4f294e2056670c189c9ff62e3e1e95a0b63640483c6b4ea703693a9346a245c6acde944f02fca51891181b93cba20f8e9452a22b22e16eeed4a09a82de6cb34d40b10da1c1434ad2330e1b3314979377ad76d305de86d75e5e6fdedf6099d1224ad1ccf563ce87cd724fc5314bfe699539e783ff95cdbdce11f5cf06ece027 +ddfc6ebbd371abe9d2504ed8b7bb2b5928c3ac26e1a8643aab52a05ec491379a485d9359aa770532a69070d8b0b2617338ac29900136901d461b588f3a0846807919f823596ff535a4bff2689c7708cd341f36cd39df88ba957b14550ae31351e1e5dba8044877afd8d55a8cf28857e2d3b92a5736022d61a2cffa96a6ab87e7 +f0b3782b87bf787e129d3a858336379e5dde56a831dd8662cadc52cf6ae7319f9eab517c975d6974cd27121661395a4abaa7aed08ab2397a744ee56eed2c2aab390778f9b1a0bc50d8c665eae0bbc3c5d6777144f99b703998b83b39aaac89b0905efdc82c7907066a5e3a8d818e497e55df4666ae35a874f1e52ebcfac0937f +e0c691edd48b15bb4cefa9b81c2c38a40dd039a10bae8b15bd961c0e13cea2b9adb6b77e63282e264dfc5ebde10a3a588cc54430f6afa626d39d2cc0ad029fc3a3099a9d5fa00d93403cfa8dd679bbc8766e9ba108061adc3396555eda1ac86459b2ffe0fe61710489331f4bd129210cd3d9ea1ae5735ae3d35687c90cebaff7 +d3d7a7c1f7749dc5044cd1f14545198d0b1b373d474dc7d5cc90cd56f4986d6c9e8c530258e254e4912d9d3d2633e0f10d70a3e0b5b79a9714f7428287df65cd98d05885953d42ba3d5e96dd0b7410a8cca4091cce007720ce19db72063b6f233f94157075fd07a04c8266524204d595b5ea70bb268bc2f7abf0c31067458727 +caeeb39f8a1a49a6d443ac4f133d3c0a2304b2316a963a0c86c2e453daa51b43e9025bb539fb1e873135b6e8347641200d058bd96a67095980cd826cf68e5457b61ac919cce1ebbf4a0233983d3b511e1caf90f74f777daeacacb25a9d771d08760a90363761a2bc585f0dd349e1b128b73f4fccc890e83dc266131ffc94881f +dd893323bceb99de086039eff49a347a137b14a91d76d83ad4e59783c91765b7cebb8e6d155d851a34a755438fb5af59693b6d13c5520980f97e434e6473ad6523239fc3605221024d7fcb0f6ef44cd0a9aba8baa4bb901caea3af311a7d08df2a3439eb65fd223ae075d4927a9ad9ea54c420cf876de4a7b9b925696feb6eff +fc3b79691f865a8fa77a54a5b169ba35a1b15204f82ac520c6ef6cb8a7eaa33d262ae1a3acde7c6ad29210c7a4839b81c73df4d710b9e87330416e843e708d6bdf0554e0502d1d6d378bbb1372418ccdc914087ccdd6743463495843eb4f09eab7688d4515c4752cded6915f7aab4e82cc8bf2bd113a2100cc7899167657a7c7 +fdf2a2386fe7eb4a276d9d0a62bbe2189ef099df27a50b7f19a2ab5f2b817c67011728c5945cb0d227efd706c37ad5d5a170d097f0809775866a4f47d00df832c3cec87a217e501e4aa425fba608374068805b7a9c18169b3e81ac9f56f3e6e11fdaff05a7a4ed2d052f0cd283bc1fea627c877378f1041aab9273746ffcb2ff +c9499c21e6f8d6f86a7ca4ee5bd76d66bc57f41e9dc64cdf5849d2e61b50324ce61da222db2709569ddd401c5644768a03fbd4c439e2a024e636403a695d9a8ec8951056d47b0b4ae265b0a3b7dcb8cc841456cc392c5b20d6a2ebd3ae2108a29bf6c3f764a2e39b9fcc8e015544988b5c3868c53ef3064f9ef172369d9da3c7 +e9974d31576715db3ca1db32deea6cd6b99b69a414e41b7ee976e90667deca1c9c25bd98ea115007342d07554d8d7baf88db6d85b29b9f376b63bea6d93b6ffd0ece14f6f5b79f10a09d9a90595ead995eed76819e548b623993b3dea0ea527a158b5265753bcf473ef944f3d524bd710203fd90908d0f93412201d285db15bf +fa2cd87473223c458754e0bd9acfe4c1ab60dd086bedc4c3f8b87f52542e8b39ea1c3297e464be3c87a6ac1adc8426e19ac9377a8e74e1a049c0fbd17417667d55bdc8230fb9f9f52c95f40b75afdc8326654177c6e68f1d4b3d01ca3182b0b14c23ced296f7b7d0369c94507856a17b6b444e8bcf32911bb64d16b1fa5a53cf +f74d682058c0a64ef518fdeb3ccce2b5f8ba02d29f228bdf6c9c5914407c5b4bf1ebadc83f5ac4008c041c0695ffac691c716ca6057f9d244cc3d3fcbc2578f4ddb0bd588c0789864917202fdbce1767e1ac059e7a33a2c0d84bfe4d79d8d4e3f52382a35535d1540dcdbe616bf0cf26c7493dd553525d225d64ea1ce0538f37 +cc937450abd8ddc9635f0f68c3cd2322297ecb960eff18b8d631a71bd50ef8351de1ed05970768b3dcd3159f341c24474a1598741823083479be18833fd88a12d95e98f4b5e299082bff521c52c7bdf19862e7c3a0d691293943aaaa9d1605a751d5c05c708e885ca1d3353f2b03c9492ac09a31c3682792e332884717f7152f +d92abedd102a290eefbe81d87e2f49ae4c91937fc865bab32de1d7369c9fa0bc9b5eb9d9e9af81c0a1ec287b5eaea7230a7a17f0186563d70249f8bd45b52a4edb980f3224f90e72b7472815461b2f6535156c6f460fbcc13eb576b9bf11ea6e73278ef9da158be4388e90a5ac81b194af1f453b7554094381e48f35c1fb2e97 +ddbc6466e85417e02b9e1ec0b45b14beb9e242a7d9e4abd59566c4165f979cf1dc4334839ac9dc17a882280fd8f3d65096310628daca9084f2e6aa010752cc2ff78b8f72c49e2a47073927649ff1dca41819633eb5b63b21e0eb330f01b8b46d8b30469944789ffae2b5a9056a40049d59f213f8375329049ecaa2809a76db47 +d83759baf83a6454aa59f30d71829005656857d7bd9fe29b27c28d28465c059270556e32e135740bb20ba0b2b72cfd04c292247c24c179d48be6b3353ddbfbf2793e3297f50efb4cdf3c9ae6be11a538ad11db741f9583717da626e31effdd246de2007685ff9688216a012a45e44df69304b8bbc4e4d5c95559e0afc07aa297 +d8d7bc8ab5c8e1bae3b880b794ac824b5a85e555a43d4cf9929df3dafd24beb9b3a232184e0c71770726463d0e166b8c6ac1388dc091d66752b08d8a7b795f443324cc8fa32225d25f69df6ffff03417fb58be8cad76454c65d6ea6941500fba2384e0a6769be27e077188f7bffab433366a0a4b6ae237b37b4da84a299c0607 +c85452f263eba0b7dbbb4a4d6ebcbd1a8ea34cf56f69e880270f795399e2a85075673b3475c6e692e70bb9bc46cb058fd9876804d1741f5a9cb651fa5d2052e64e2dac22e3f1c1fdea1b553c825533324da1baf6e3a309e3c719917e686ef9d624b955ee73c365a3412d610c1d0030374d32cb0f74dacbf955b8a3da5970d837 +e66f425d45adf036f409a068c286a6cb36b45e0e8fdeb22595475e38055a25d0d470716eb95a592ea0b2174e2549eeb91cebfb94ea764048fae82c80ce0c6b4dde1663843901df79314e4f96e47abf70588572e436b1097c5281657043c7e79f1f921fa815d6b73da46fb5f4e7b584a506803c9dd182996860f9c11478620c57 +fb0ba6ee3864b729118363834a737481f4de4a2091f7560c81e1af474af56cff41263df6778832465e5e26a4ddb8dc0aa8add9ed70fff6c705cbddac2db8b5dcaebdd41d905422849ff161c00590cb800d16fdae91a9443cb660b21c86ec4f1541ded64cd71ea6690c33764d8e39c3084c7c80617d739237268680ea5458efd7 +cff6373c69c778d055f4952ebe46097267be80abe8fe5ad959b8f695e1570a30487cf331e1244849e2cf760d9854f08b89e41ae7c6d8925f472f28b1d2c6f37c6370ec2eec30dc21647f34f2c21d5f51f23ce79113067cd2efacaa1fbe09d15c957e5fce947f10621900d00985362e978eae67bc085dd99b0623e5dc5e64e0f7 +df146b656e1897df1dc1abc8d0608f88d6a7f473295680517f51fb346073baeb7ff3a7b4215853dac4e6a2edb517f55fb5934415e306037f5b39b8891e6529f9403bfb0d89ca31c9e2435b3b50a2e3fb43aa57cbc07dae807190a7c412de3b6c7f7d5d506a4999d2fa81ae7ba74e22b6a887afd567c197ddb8cf11c1d75b13cf +f9fed9b882d89fd1d2356281789a6e382c409844213da5d9c792c366cc16a363731487d94fc8fd492d0b75bfbd7eacef33a2e7157766faabd4701628054a2afb6a9fea59b0a9ea7e4547658e662c4f867af199091c580afa0508cba10eeb223ebb57e727dc19b939e43720d5dfe0d816deefdcc99d5d7e8d0a343c0c82dd80f7 +cd1308758abb634fec8f5ccb62915a295ed0ec5bef84be3fb2b8279a801e055b46d207fb3fb34ecf7645ef1d206fbb6e945047d3d416c1ae66ddcf62e551d8d9c8a978a60433fc8b6e3251ce8ac785443f93d75bff8afa2dc162e65c33f41cf482a18c2da5187f54fa54285da00d37ef6f5e99742ef7428de2753253ffec2117 +d78accf25e582ac95ddf1aa9c85457be44bee99086162d0122be0035aa0a85e1b56b515b3f17a05f4814e92f3bbcac96440af439219b48e6fd4f4438ca08b1d6ea0e5923a1be755498e99f8dd52aa84f45cfc4205f7b167df80f33437aeee07d819e8bc29f058375864c76ec674dda82b46fb8368df767b4784c4e9f426324ff +c842412bc4ef07ea3ea82429704db5430e7921cdce1da5eb453b5f3ae6565ccb8a6265d0270bf9122232cf2b6e761a109946cbc08d619c37da6653fc140931fb2de2777d592a3d74e7241e7a96c8d658bf2d6a79beddda977300262a362512281343f182b83dd8b21863cccc2617601dc7537d23381774071489ad850dd40b87 +e24265329569867c65fd889d3c320d7254840336e1720b74627b6d4e7def21ef10402c21cfd40743b4b35cdcc86cf9f8ca4043bf0bb59163a0ff239df5d82d3b350841893a433fbfd7dc7e4c6da8c653040f457b1858ec90b1dc278acfb93ca534f4555d2ed3b72e307d9c09ff4addb18782b0e2a57bbc7b14c7056605bf661f +efcc4ba3d34bba4f007c6978dbd8b9d49549bab97d6f4b0c5f5e228b97e368b0913f951b815b5b83480f14a23ab75c6d18ddda56a8ef2202f9466ebb6ea2ff4a423c176c21bb0925018a45104e2ab58cde22564cea35e3f925e58c0daf8607cceb9eab639be1f700bd9f9b5cb49279cb135442560b8156ee5695c29ca2ddd5e7 +ca4ea5f9c573c5832030b3a8bf936db5444303baae016082d30ba611402e490a29705690cc88a0d09330897fcf464a726066edb49734047102fa4fbaebc28c7cfc311ec41b66f58e04a57942d6870ef0fd5c6ab8b13585a16c204ae6ad089bb2167c79f1568c99da854a8af9f34b7d1805e9f8909001259279d74e347b35ed7f +d11abec7c63a518306208e3bf9a9720b82a61bcfd4a671c0354f6239d993e7c2603c291f205cc7dc4f7d8c49431dfb26c7d436075b40e697267a5a4cd7e1975bb1dcc1794187372388b2f814de2dfe71da9158d7cb599480de05f9bfd8195ad080331466847259fca69a69abcff19b15331276b66e745482150e0c03c99fb197 +f054b8209ee3f7b5fda29b07f2fe19272f99edd6c3eb6777496365899d3e46631120ee54d78da1d946742acdd8d9ba384e2a1281a5bf2ea0755739ff8b3a0b6c3480eab2ca7ea44a97f2ecd905734eb5c85ef174df884086a26058244b25b48d414441da69f32091f3b6a70bb9c367b05f599f5e085b1d6d431538bbe0f83f3f +d053ce9cddbcf0468935ca112bde322dc2d4efaa5b0b5dbd605decd3906ff39327990c93d2269b0b14d9957214e3471b28ead4deff8d272ad727874ed17240f6095efffff0253ce7676a59e5e793be1f9c9a1466439da18ff4426bc8589b4be43a301e9b0e2b7389d659dd3e02d643617096004deff8a15263c7805fa355df47 +ff67b01136b8d4f5463f6706fbee6b346f6637f0f8abe1c2f7b4ff1b4fbfbae38943afface476fd9212fdb56161136afa764e3a9e69375f068d5a3cf21c19c68d5e8a56d7efeeed96efbe1dbcaed9a0e6d7290c91b07f87d0c78222933ca2e707b3f5c61d0a4a23f78c88b3ac4db5e664de1dfbd5aff98290eca582add8d7c27 +f660b084a9c8dccc1361cbd95364f954997528f6f02ff80b3b6686ef0d6c20bd57c1b1fe1b9e9a6caec00899fce5cb16c10a81265fa98032dad685e6523bba356fc647b0c1232d0ae71cf47f77e6b07cdddd740e00a9a0d79e225cda7f2d501593995b6efefd2dece3284be720a41a488173b7921e204c27d464d4c767416027 +f4bc603f930a9bf316793dfc0c6ccfd8463f3003f01f060db50a1118c89a090e540cf3d44d89d4906f085f0332e502fa8d58072ad26190879efbff31ce64a9ae661bcab1b3580ea3ad77d6523019593fcfe34b0b87cd318b0ad6c0fc77e140c03e2e00ecce54ff8444af5b9d54f4ab2fd8a8556e09ce18c2a711131c8c4ef897 +d57acf0b999ac531fa29be4b1f1fb88cb228966d5d1a6d797d5bec14512e597700a16bc01459046f88887b66ac1753ad221696c18034c4f061350ad0e2c7a75162b540b936ee54cad5891c489da142aeec89da159859e286177da56d015811cb8551e001b2005fbb9b4de51a5072f6714e9ea34cbb260a1cad81f193b465b277 +f8165716f56e9bdc94718e5a3522a1d6c9e31676ae37fed230b7b89c2f91873ebe9835d5ebc998dbc272a41b4fab0f1be33d841126816b6d0216dcc1379017f16ec60fd558da8b4c81f55cc5c09cb4d25521f122a6fa9a70511a1b42ca52a5689ec86172b2488b9e38ad329dbbf4a31e322c45c330798877d6d77311c2dd58df +e172beece666f374a2685fb81c3e63790187fc5907698442ddf5a0628e9499ee52ea2747d28d659efa58add4f7de236b12d04c37848470482f14ed4558a9a41bb1c3abf65f93ec0b85a69efcb1548180346dde1267663359e485a1b91c7b6ddaa97e8c48cfccebd0153979e95e83d3be23ac8a255a11ee793d3b5be0107ec5ef +e37b15d633beaebcb9245508ccb14f7c699e4c09947003a049ca0a90a5cfe39b68a38f489f66ca1936ddb47051922ca1bb6e772039dcda38debb5edce3181d90512259d6b168a2c46822f9b20d93bdb175f978af95de7503f1a38775e467dc1f64208f56c6ae43dabbcf48b027c254a6c2c8dd9f74622e1f7da5c14b353d8b87 +d62abf77822d5444d2a922f582355436c4805f9884f6e49d7e89d832c780c882c4ab6b0ba51c6bbe4d21e5cfb450ea6126d2e95fdc50e3461c606b83633031e38451354b60154c78daebb950ce9828ab0ea1355d8a610ed623bdd887d59388b1930ed6d3f750ebe0c42bdab027dde72329d4b414f8bec32171920e725c08be27 +ced7153cc46b4dc154276cdb8245bba39d5d0ef0446505f2d896f7515f4e17e9ac0b4c0df6bfce162f3438c7ae0d30f748092b981cc39f2ab9cd25fac6aa574dbd67ed2bfc7b485714b5d1499a73d2dd5d03d2e88ea5f71706f7508d8503113a23a284d69f2d658d3110021c93851cc6aeac1d04b63c8221a029a013db76817f +cd0db68c1bfa19cee937281c4971c28d8567441443f87f1981a43b221b4d6a9a4ebdf771e7ea717fa1d3acf4db6a87299445d24d48726086c83267d2d4f629357097fdbf52a64e585c1ebaebe2640884819d5960f4c797242272e7e4f0d872f55d26463c390ec3a3b1f9796b39d12b26432a3ae72fab473c00d4de2b756c9aaf +ea0e77b69160430d36395e14a7a3ad481b1d2c1b109c69a955a3c4220e5364b6be16be07815b2a98fe60073320b57c2906acbbb41f5280f61391cc63a97e268039a6f321c912938b94112f7677c09d665a11ab5656b1e4f0a64b7a89ff7c25035a5002496cf4345d2ae9ede4f5e591c2320471844da7a76f728aa40bc6bb6a6f +cf468ac019db05604a2ad71f0c617812b7997a98c8128f02734104aa5c6a941a12ed31335007c16d7e9bf176f26d440fa02c6641f155422f8797541aa97071116a35003f5f9db2a2666798b6ab7be50472ae500f94fade34943122e2cc47c25b3ee070265b1262e0f4f7ba9f9c418d7d3bf663b0155a2478c35cbea39b37ce2f +c9ff9ee63ceca2856313cefcf2a9193885691fc1611b15bb6c2a5dc4d5d9f48fa660ae14d04091060e4601173842da593fb5433704a949c84cbe20c17f49920b1c268c4c38b73272a8ef63a3d4f9ed06014cff603bbd6fe50b6a96e74b794e6786cd97c6e62d272f1472b45f5379f2e3bd4813dbca15913c19112d9e0e57f27f +dba1c22313b0a3461b0979eeb46f6567379ee70d81414c9cd2339d16cdad2087f3010b9c167244500d2c4e683fdade0686c18ebd339cf23046ab516f69dca77c8d3cffd7a3deb435b900695dd2df5457df5b348a12d5939777111c1dec622e908086c57d383fb7868bad8db7ef34490ff5930232f43958505d76285f040328d7 +d67179afbc262f46601685e23d7649fc1b2985f23a9797d1039ddefef65a2d8d354df68751958ecec2eacb0e5234229257e6b9c47885b3fe9cbcae27dacf955f4e8d70c521527108ab3017fd29c540df367a4fb17d4d857bda5d3c3df81183d18d6c7f6df7c768f77f980a24a50f117e4461d246aa28e60ddd957536be62c08f +c7d2c9c10f4fb6aca611c3cf1ff92b32b531df637ec74b8017ea6923f45bb2c4281f21518e29d9b0c0fc4980edb3386413846ac91e6ba04c9be97016004bb6bb0b980119f5cdafdad7c808d575190b64881ab3415005b4e0e25cc800532a4abdfa25f8208d104a7f094f0b8b8fea13100a3ec11eab2fac5401a669d2f770026f +cc773d870248f23f16be8407c3788558b71b4b926b64e6bd8b51d4450c6f7f2a044a8f061c2bcd5ee67e7fad8c953068adc81c4f5ac827730792163e9c5ceba56845b9a1565289eb68cb8b18525a2a3c1096d9826819db7b05f9486c06a2f3eefe03bced7bb730c123bd7c14b90f0b137cb61ac8142b63732f1a818eb678dfef +ddfdff73f8246da83de578aed529a8aa3cbe0356392ad63fd00fc0966e953b25e2e660c4c32d7848dabce98d83d336d383caa1a2bb0d05b41286150b29d166aac2f0b320ba9ebf2aec263f117a446c7dd6444efb4ea55cc7218f44e08711692ff0c881ebd390f62414f2ca74c5682f8b93f3e16c5c691215ff520dd907a0678f +ee32188de560f1a6fdfa58748b0835d90390957bb9aedf95f309c7782cb0a199bee6b4c3dd292373f1c6d9ccdeb82346d5cc32901080dcd187cf5afdb3bb4814e74d63ecbb0bcb4defe43570c4fae335ea33f8f34d973410bcab16ee55decbab8acfd3284b0d07b57d87413d6bc88f4c11253e3a2d1418dab5ee728ce1957a5f +d7aeb101afc61b95b3eb2a28e3981985579cee51b212ddbf61710d76b409665453e7ec45d13ec63098444d7b6fc6fd4624977a48218a6e127e7129a0b041c2b28a10306b1a30946f25556521867798ca4efa0215b3d5a96ab044ade0b7948292674823da4f6a173447889fa97bc9204c0727702ca9174204f110242b0a7ded4f +ec8840beabf1b78a4bfd40be61bf58eaf5a6b2e3410e1294a97b721e4575b326d4b2c7c9910145bd1e662043e25d2e7666886d083708d3952bedfd7ef71fabb3f56964a6d6ecbd9dca9b7c18d3239b44b7e9e32fa1f7cf6301c18871c3cc3c3064da2f3d44a703b5f963df5ca8fd77d8ae1ccf5d6adeb372d4a8f3c5391cb667 +d541e0216e21332bf65925001e2aa85fa16919bb2884c8d2341a83fd753f9d7f17c38b0c706368cdeb852f5e9238e066728285c821ffc04a9255a30df068b578f5c597f38b21e41cc928493164f436e2bd9da8704ba012b6da1bbb81525e5057ccdc36f01309c669e418e25c66643a0b0cfb25fd57170953b7174cc003a59d57 +f80048c30a71f8962bec80030e0216d6c035620168ff3b4652d3d30a9d902a926a5e295b13817135ad044c96764a02a49ebf57aac96bada7785ed9b6f7e9d01590b0e1c341371a66bb6aedcbe31a0832c3cb8e91ea1acb2803e6ffaf629cc36b0a4fb7fd10b91bfa004357cbbedc8acde8fcb84afac75dec54d3e8436a700bb7 +c4a2d8289d7f6c05e864961d7c2480c0075c04049392cc754a22dcdd23c0c47fd1540fd7369834b407e2ada7d8349055e4746fc6213ca9e815c8bb851b5cd86453e34b2135691d3f87dc2f17c182d6a36daa3456da8f6185a80d00d9356f16bcf8c0b007aed9002acf1bff7157f38ae690987c09374b35f55c54a1b4375b8157 +ce59f3f1102110d945bbb652f624449e37f8226714f97c12917f1ff247611dac2a4fa11120cb03f15e82afcee8f3a3207b0e79341794c10173398686fac1f1a3406426d146d44048043894bf133f32ce9a84971dbed2633a5a629026107cb624b64a6d8f8c2b3f27bc2a7cfecedb572cf4c7639b1ba5b4ea5fecf658261e1dbf +d196fd59946bf116c68c98f363eea5be1deadeacf73c1d112b9195267978fe5e3a1f9a4eca5647bdbe3df24e936a119ff878a6a43223991a1e6b7b854a831ea211c288d3236ef1f00336e939b40119d6bb50b914806dcb35c07f6b0f19be8339704e53d758032072bd8290b7b4dc29a5561af942a0ddcf5ee939de14b626797f +e48b8779d60e84072559f288247c57d3400dc6d9c633805cb5953de58ca43ac4e987dafdfa3f97b63fa1a6610c1b556623c6664d3eb722d750915935afe0396fbeb493e8775bad1be94ac2b962154c4be1e4b0b02dc907f5107c059749bf3e93876ad86e9293d4fcdcd6b26d290bf18a9126181a0fabe657e8169ac77b15bbd7 +c21434427b69e081ce25b529e34b48bd477fa174381f2916e7318257995d1b91adcce8bcee57ca3689a2d181ffdc580485e3614cb5b95815439e5f0e561d0a8c52faa9aa762e59cedbf874f296921475930353af68fcab49dd4837433ca0d3facbe6261e4c89b6ee1a8d04916b708dded34a689d3289878009d8db93d1413ec7 +d6909039ee83f2ea1a7024648f7dd6782c9b4d75959382c98a9323842e3213da31489e9268cf5373af86f3e2fd8e6c631a1fd43e2a90bf9c6d3ae48616f8ab7004bd9905581c3f7bd838aca3f01340ac33d57341fc237ba9503034f2fb7f2feacf7b63a98a732009b95cd19040ae140160e5099c29ddde6223d76d8991136057 +cc31cb3c8af51a86f193c57f22e044051acf18f16bb5adc4b6ebad33666bf4a9fe287abb0e633708a2da1aa99968c5615307dbb6aaf3c9200d5fdae12c88d2b1b77a3c301286c69ba37a6787ddb7260444e423f8ebc5138dab0b1f81eefb0ed2a66cf1fb1a015d633bfc6dd393c93fefc0001b76f6e4efd71f07c3b9fdc15937 +d5b9acbff5301192ac7fa34a04b582f14c6ce7f29822e3a1ccf12abbb9bdecdcb6e4b3552f4d6d51d1dea7066ebc0c1304dec1f86185239bbd95698b4521e39186caba534f6a7960ac648349c1715b90392ee4d0bd50d6912ad47f9693a2033123c5f1da57bee4989eabd34be1975ff34d48656e82d2bcfd745f1a3e019c1057 +e282810a34a58555c21139b664cb9cb4625bef0912dae2dc687cd296c46a85caf2c06fa13560cfc4ec71ab16e38015f8b7263cbb8f5d32bac22c39a8801fc1990f0aedaee9417806e700b719d2cac937176eb66994892bccd976cf0ffa737873b66189b4acb80d9ea2fbaa225375abab43131c5938e7bfadf6f639e8ae402127 +db0aec2814c93cb0bbc1498dae509718022cb4bd7d410a392c01905102c8eb29d2c1445ccc3d0bacf2828abc769174308cc61430ef7f6783aec4d53a1e83cc1c1ac7bf7fadd4176cfea08f7674ba1b96a40f6c04bc3de23ef2ba413e1c7096040ffc05fac94990b78b605e49e3b2b694a14b8ba56e051a061339f06d06fb8b77 +f345216cda4e2013e47bf1f8dcf0a13d0d6758ba36893e661ba63d5fd62377e51c01e1687ff375073cb669a981f5df420bf6ad593461a13f727f6d64c5049fdb1ad6dba1659c9d9a4c38153d3bc11672b6e72d0f54f24fff9cb3a60373d82103a80b7826401b96f9e67a08bf6cee78ba041ac5c7d2d6a081971ed00a45c80067 +e57a844e04766b5e25a9a13059ba6f314280f027f4c4bcfbfca0f95337a2b1344cc39cc55a41672badd79e5719a5f7ea5158c894002b9818179c21b8f25213d6d02cf1fd96bf74a0d6dac1fd1677a9f9591d4af2c11b436aa5546fbdfa2fac47eb1a7d314035806003fa7f97b7aef36cb52b0aa1ab131ac75fdd49077515c88f +ed4afadad1d69a24925be8bc2dd3d8256265e8deb38fb10149701f0ea074b46548c18e0003a68d41bab973d2609ab624b96194cd5eb82fd22956af2df0376e1a65d93b34362e90785e5906646e830bb44373292161908dc5df8d73b2f66bf349e397b6df1868d3309aa54f609387aff19f8d29bf9adbead168957c2aabfafb1f +ce17c113e102afa3d05091b6514b5dedbd5a3b10a40f04ad8de2d6f08be083e3e26d87363799bf8b626a50c236f8c3162e412e483e2f78d68bfc10af95e461d36044c66b1bfc0a2bf120036b8419f6810d8181efb6ddd30f080958063ba4417c6430ab4eb924239d2df7d49705fedf8d09da09e9571dee0951552a3168ffbe0f +c34f42ceafbc818bcc23da2c691a36bcf6b0f89046a2f04501c5426719fa8a451a832abf97d0e0ff7172694e66c4bbb3ef0198e651beb8773ed5a3ee1742ab7111cdeaa6d35e4dae6486b3bff830e3691126b3dce01c090028270318d7ea0cd0bb47c2fa933ad916a58abc94d088a7ee0aa8296e0a0f52a9580b37d4792dc177 +df0dba2b22f18c871e2324f3d0d34dc80231d99b26983f0dec402bdee17732d96f08f60c9f7f4937ee39b1246489fe999fd291819e7bcb50468fff75feba08573f6c6248171c09448cb094788d1f03d0d3ac83cd2f0d3bafab38f8f98476e646ff2cef10106bfcdd13f487cb9e250597f45210f3e9d0a410eca20779a7d3d76f +f2762fa1777da11ca7c9c8a312c853fae7f9bea2f92bd1ed808a08357e5ff97b68474167e8e60e5d4523a146e82d16c214858345743316ddf21d66a7dcb2ec9b81a967a828e65b2d26d3d4b14a8ad83255147a3cfb4ae5f2df70de6932b18b5f9d903889ffe0d1f8890b1ef2aab23f32c951ba93b74c4ba5468f54ac139be277 +cafe7129f6c6d345dd51c7c04f8e0018f38b314c5fc86ce5a2d703f7dc8fc8e295902672ad698a6d518121b578c454ab355fae99209ded82e760c9c053d5c43ca265aaf88c3aee255ec3941b10c1d5d578c41df6ad02a3a332a5e8e3368de658157c053de1b0be9fcfb97202c744c51ae9c93bd4f668300041a250ccfb8582c7 +dacd30e759d4d0185f67b14cfaba44f548ec433ed40ff4b2d24431bf78ceedfc4383188eaee21fb1d80b51acf014a4305d70d8586c837371786cbbd679e8d979c174276892fa2dd06010d6e87c7fdfe2916fa4ca1cde00113d98922f121e794888bffe5d4f76597bec3e6307c4c93b77adc4c2fb44bad358ffca7f133776de3f +d0742d7e67a4f63d353bb0142e3209e308c0fac01efe24afd3d2cd0ee0b01149c7c5d2534ac07c3b60345f0011f51baaf0bc7a6f71a81d27a620d061e0980edc2942eac90dac946445e1121b32fe13f6d926b0b7f6870f094a95dd09be9007a798e3b75397486267191fdc8ff5c4d185548ca5718ca08aa1f3d7f8545b80bb07 +c54f320cf2d1c378495ff2cc7498ae29f504068fdb8d7edf6098552217b5fe2737136b8cec44c82df9edfa05a3f5c10a6c47212b84a9fe38815c151429e19d54cccbf229eb8d39f90da3b47f84276a00fc7ad01b748f3c23485e3b697afddf648629fe048b95ceae133d3d01a6ac875becd02517804b8737b2fcfd0da607f63f +c7629fe446201a7bc45d4d2be0633b026ebae4c433ad4dc83c22cd9ed8a061cf302d3add2197db52f708d0125c84ebb5ce412a6bee8709ab81e9370bc9473845e3e3bbfaaa7980bcec65be86479991a1e1c7ecf23241397d97b86437429b571064d90e5cf9dc48639823bd101c4652be4e370a483cf1c9de8d70879f53cc51af +ed865fdbb19d40386d157c91aa6e7f59df17cd73089a2b7022df11a0eb2f66310f58d29813f1aa430f15be7660c31f1b422828a710cb6e028438fe89f7ba1410307edf4eab44943a7bbfea63bac8bf69c6d0da2dc8651b10f32ea450863cc48cb2f3f3640dd92966dbff7075bbc2cb26a84a218020f729d563cdbbf345fc005f +d4b3cc91aec4ce29adedd51f018b14f4020843c34b1e695a19862b26041b79cc0ab691e193d9067758269643b7a9d64c35050de74f32b33e82943f08402808b3c548d3f8e2ffa21d8736e0aaea09b223196eff449219a0dee9572bac7142433fac67a8d6db35e20c101a1ff5355e713e5891232f1027b36068c89f5e7618ab8f +d97df70d98fa55b10dbb4ca6189ddd32ea99da91122b0aeb9920d355c695a2fa773cc6202a05eccf246c20f4f4e3e94cdebde7746534eaad281ac903bde6995d594db337f3ed145ebf6e9b8f1633e08810f3330c6b4f63697df6030b48f07e9134907d384a2a87812e62bbe2ade6106e3b0003c2b9796a75e853b930792a6257 +c0c83722b438b2c44e10c27896a8eca2a09ec1264509ae55cf1aad06381a7e6d3c087e1d67138967c96acf3a942c1397c6177759d7c4bab06333f65f11c68a532b6cb821ce66c770558a97188a135af246f37c0f9fddee72ae2f65eb54992cf83ec7e674bd306e73c06972c122d73730cd8e79920bd378a6d035f23b4172a61f +e2e2b829347114c1e5d72f310e9fdfe4e89ffc9a0a814338affba4c6fa90a2931373872c7be5c0011415c98200125f413ca358b38199dab2d33f55d514ab5902a0a7e86da39d2428c9225ebdd92366f9d1aa95424132ffbe357d3ea2c85fe08656b95ed28239dda23cf3af7f4fe06e1b5a3637d55c8de7baff1ecda811b340e7 +d40e576846ecd37b0ec789eacd916d96b523baead3711e6d940ec9440b21ca3d153127635b3da352522a5af0b7cdd913ecd8e4008086ab3cbf9dcc9a9f7963f8632da02a8e46db9a5fc72b27704af7387c8575e07479e5ed1330b0ea05df16300051fddd899f7f09b62b7a9d93b948540fa19045d1cc595e0d0cf210ac8cb0e7 +ef07ad81d66fb8be095aa8a8f89ecd8f30354706552cb7a17d694f90cee2f20b4b480c8bc449750d41b83180c09ed23c0934cf5c096dd8fbd59171860b70523307a8695990bdc120238410d84326f2448458afee0c0d7f977f51ea6a8b64a728453aa326fa6d3aa376eb7891640699d9808ee9d0e68c7a38fd8a0ce713832f27 +d243f78e7c3d778d4e9e9736d35ed0fd0fe0e26f1d17807fe232e1dfdf5b7cba46b7a47be443b58093e5cb1598fc2212b2139522a64afcd16c1cc108fa64915cff9b212d179e2672dfb8dc5582d61214531318346b000afe155471005fd37b2175f85744bed0805d9dfaff8a0e60c07b2e627231a4369163bf15c8c0743f8fb7 +f222bec719a635c97690b17a03ba9d936b445ea475c6426bbe1dde43575cd3303f6a92279a33026dbe53710be576454d69a494a73da21e0a3f05e269a4cfce1d60ff31b6cc8c7bfd423e4154aba58c6109944825df47b31a778587561a6b4a3275bd036bbde52b5ebeb27381d5f2be76dc90d35ca1b49f08042f77c742d0c917 +e180eb22a17c86337ccc708161a842752756767fb604fc15c46a45f5945a44bfa96cb4d7d79240e59967cc220740b1e1d5c8307bac53a595cb3969eeee22c577f588aba23b4f888f1238034551b2e01db0ca6d25ac39aba94f6a1ae75ba527e0bce769e77dccb189ff6c4c31a1610b69fe6f38c5e94e2922640ecc26b475da57 +fb7796101768429f2ad6833c548f458138c8a0ea63bffe6e2173fbc2040d910b33dece612c9387e8fc43957f5a052b07b9fc997a8e72542190418ce3cce18c658aec030a724912b31e7c754a66b52612e35d99416973114983c2d791ae64a15690480a9c89718c18df72baa6f6f77ef925314893ba6538005a84e1241c5dee9f +cda51b57c181d0d761a92ff2cfb214c84ab7ae885b203b5bdef344503c395c6535d8f3dbc9491b7f41004bd26eaddfae3c6ba21dfd442076e232d8889dcafb17d9ce1c886f5280e1ddfea0f6e8e0b816289a2d5c892eb63c970369399f1bd6a4bc89c51f4b756216880b7c6680f0e7980734c84bbbe970a7ca7500e0f2bf4697 +f8ec77ad91dbfb2824db61f356c5bc0823aad8f14986c6a479a3e607d2e125303e3a119593da990f3b3a133fb72cedc790c7fc78d6401bb83a9f444fc43216e02af4040b4a61b763d4b0eca32a0610902507d8a3b7f174adba72c4f23b78fc99ccb4a1efc1b80482755a4752347ddd3a13d4e89a3d22a2f2b53b5d4d9e588cf7 +f8b7f286242109d52940f23dc4c4f46489ba07cb023de9a0e2642ee8c3c29b9a7fb592d8b51ee40bbe869e3401092c92970444c91a9f853ebcd5befb6c9a857745d779bd2beb2912df858386f40f1159e0df03ead28b6551d6ef97a5a5c5b1a2c17af329674660a40c31171bd27a24687d701636b3c10ec06be4fb709cf620df +dd7f2aecda44d8541024e6cdb12fb1cbdcff1f2af6bab2734cef9500739a442f164201ba97fc6bc613df38c2d0a764458582c0a599bfbf728aa414807fb5236fa384c213e50ce7752a48b92d57f485ee0346579454f6c65b067f6636e79895cae0d068b83cc0e83163698923907bb9bcfe299ea921897bd8d496bc9a37c7a0e7 +da1e32869c789ed7706b4eeec60ea8d84f078d6396abdd5f2977c8009ccdc40e83151ccbcded4ad11d676d5bbbf7b6101eec89353bb21a09329c8027e838d2a70cffb0616f06ab0ff0c70c3b47b07138fcc0dfa370a7c9494fedd56e7f59385de0e4379648b05ca7a1f8c87e3a5568d503c87fdd47324422829d59a29c476c47 +c495cc2b47986d227a37fa24e35d02e07a233aea1ca68cecafc8271d258e036522472f1ae5518e147a24dc935dc49aec39b6313ce03401f4a224821abe3cadfea298ad5590d4a847c9056e3e765c90349e54668e3bc9f76a56598f758956a1c9a21f478aaf7e474c0587de2075ba0bb1425b20192da59cc05864419bf43313c7 +f68b3dd0f0c8be6372116d9e4efc2256329efe5270400fdcd3f326bd69a0b6c0fa58fffc9dee4be3f8c18f10c92ba9b969c7a89dc2c71d6efcb05cbad5ed55ec099afb9a4782e600c4926f0ebfc58dc778ff65cec48752df1283872d30b41328056c7a8ffe62f035ca21a012b80632105aba0eec0fc26b213bf31ded3b5b625f +d776d1f59a5baa4422834cde89047edf1b1adcf4522ec448516c339d169b7f65d26e02a69b0a916752509cdd0d9d88b26da01b669f91f9360f9d081a485de578087259c6985f09c0d9bcfec335e769a54f8382b2b244077993be9f309dff3c4a37d6213d01021c58d89ad9f50dd23361026fe01b40ee605327f5ace208931e4f +c4bb5da9ab2bb0f09337e067c95cea17ac1d5c65651a5e7956ac0c335f9f542edea8fbb5a19135b2ff6dc433f99ff96d177fe3c2b24fa6b3a405ecbcd47a921656e0557abcb95b78f178ec03b7c03deed4a723fbc0a60233b48e217afc540980a4d7ec3e1d95808ba2006a5618b4b5bb093d5b3cdabb9cb403cd9be353defc7f +ee3dd20b3aeab2534f573915b470faeef37761225aab1452fa660ace1e15e7e8ec7d4207039062ef9684bf0d8e78671ed08cb73cd53a93a48cb2f145793e2561762193a3f3cedd19ec6319775c7d660f885695a25e7bb7ab52637ad263ff77a97af37278a571272fd6b5fa696cd0c9f87db3b3fbe169389db214e2dc64e3953f +ee344866d69cead0840ccc71df12841c26e9a24c8a1af045b71d93042f0684e96418abdb5ee0327318e960ee73284a3bc65a8c056e3ad6a674c85f93ce30b3dcd7249ff1a5c3f8e280903db9527f21f7a10893cd72b7e9e8380c83a493946262dd3fab5b3153bb27e67b5afbcd541deb6c74bfe00cc407491c3dda07f0c31557 +ef288d563d01a055437c0f9a955171035568dccb32b267377945144277ca442064340e482d749e6e21126e7a6749f5b758a28fb0b30321d1072e9ebb50c98b3568812a0ab342e3ae91e00fb3b8fc96caadad56d3f4d8a8553365d02bced1268bac14c1cde73d64fcf1df3714f6558a4c4128da9b53247819d9c2fed18c65e087 +c7c1c5b559eb5b037ba2fb6bbdbf13f1f09a15de69ff15bb573c184037e5de18c512d0ddcc155a3e321d4a83a675da7c81e902d07b1e1e7f316b845c0c91aecbed84ffdf1b0e7a0b90f9ee0910c41dd3ce2f34fb3b86572fb98c17935a0580b1e5ed747a491d994a27cb6d1222d20ea3c456d21ec271c62d90504d8bbe7faa57 +da2bf11ffad6c39dd10351d5293dc90bae3f74255c4d1fedc8d56f803abb559c27d30ab3b13d1035a000c5ecfce7ffd570e2be83b147aa2fe16d7b4f6baa7429233ab34e6f26aaf5689ef824ea7f6bf4358a6d938eb386878e51d4765f3011e354dbd5b575b1194af02457703046e45bc9f855fd1f99986dfbc8479664e94c47 +c931e67c063c639e0e17079bf1c8e988fe82c6bece1eb99474d1f0f8e3157005bc9c7c48cf4e93ceaa2181c3076bbda3553a5d64aa8c0ad0d066e9ae51bf8eb790d74eb3f733418bed28d3e9b7f1e4ab1bffcb78de4f0745ecb2cbe0b92df6d0a9c9a3f98be5600324700ca86b29777823d1a83f0101f7420c2b0aee96f9ca8f +dc32676f01cd16f4e5311b24f225bf28b23c3a82a0968998f1d3e2df2a2a56c87a4ae6e4f002729c76bc8b061177035aa9d390cd2487da0c4527581a87f9cf5d7ea8c1f94119c3726e74256a10d75d36147974c15aad20aa0c752f416b9c95cdb856114cc45e8a0dbe209c62e41a5bbf7451e5d1b2956846439fb8b7f899244f +d38851c46a69ae7dbafdb4583ebf90229b3c29feb76233764b792da22d697c371392e26dbed79c6fb340d2b780c41d6335d658a11ead4eb90b2ea130829743e83e52d1b6a24e10df614e72f1e5f89ff5d642dcacdf92f1ce76f851768cca68f6808b64f1fccd30c42e62d6be534cc1adb2473f4501f95b314da573065cab4e27 +c74172d2a8b8ee07eb7a172cb8e715416dac162df59622584d978c679afbbff99d6c1733f747f4afd357f03b51f0eee3bad74ecd18a2e4f459cbf24d5908120ec0617186338864cac8c3524dbbdd859ec3aaccb1f774a0acaff0098d36627f5cd29abe13640e0360cedb6ce7fa6b421e2c95c21e4440e53621f559769316a12f +f979a4b67dd8c8c7459bb814f33e285ea8649e899dc496472baf115f12289036c3ecdb8acc649c4ae0be25f153b828f985635776fae919537d255e8d39aeaededa53b4f4513a3c4f36ae97de1433a648eeb7b07e8b68f38809193431daceed42bac274041016d751414415e720cf6dc6f9ff20f9cad3b3ea73ac2bb1b4219adf +de7ae08af2f56bd9a08a0c7cc3b835881a454c6d73f2277cfde8361fab9c21bb757b595a82ba9609f5b944f74b073781513f6db3ae317765868d0674c8357db9fd4736fb889011eac4bfa6831188f83a8d6b96c4499d29aa86c94ca06706bb5d810109e503a4510f2592ac7e06dcb6d19a9ba3744c679bf6811eae1fae08facf +dfb2c532bfed8ea7207b8989b15096629db63340192698f60db5c5d0c52e23684b43875fa66f8a68fdbca594860a92e1d690b9cd98ba13881271fd5f7e29ec335273dbfbab8f8b317dfda1b4120f7d148a21530b3ac0beb00714f1abe6a6b3d7bf9e6079ca508a9959c4f48fde8eab29c0456104d078b32982b691fa970d2537 +ff1a1ad515683c4b2054915f0e915160e301f18d6bd33945f81bffca6369f35060520eeb3ab6379c80852ccc950ad51308b7d7f3e596f846668b536474daee965fba07dcb58a4b54b5157d96e0fbcb728f3994723a60a0e4be7aa453bd2f92e39a2cde27475a9bece90c161edaedb3fa4b6be36fb97c13cdf50ba68b1d342f27 +fab5ca3d6dda558ec99c74fbef4879b1e3be0638a77bc22aabde1497e9e7c9a3095aad8148bdc199c174513949ab26418f8a2667ed44cec4ce97342003787d65aa598066003d42df138eee1634202c8847cd19f92ba7c32081b72c477b5408a62351b73fea6a3a33709066b92ae963c275062624e377085e5cc7357b49e46e77 +cfe6079a7a48193e9cd3b0c7c81f3ff4b36ef04da4c4d50d376b06383c8ffa83b46de406c1d38af83bdc490861afb9bc391437d428ca4af7126bcbf91dc8b5a8a9210ceca58b98dcc15f26808e5ac97fc20cf8496c5e9e2b0eafb3aa1dfd8bc1976b353456868ed7fe193fd32f82b8d7984d220a691c4a29012679b39474bda7 +c0f181dee3ca44447209f0ed51254d7980801c5e4a2cbb01092d4a93776014f06f02e032b62c696e8be41075793379476aa02ab0383b38d1154f5ed30fda5e23dd89fdfc9a85da60048738c243e90b4ef3a23ac72c44682c24a9a222998e0f52ae9c03622e7b72692888737ebf26b0c2e51c1c9e8f399da582fc324763021397 +f51e4b8e1f2d205af4078045b4f134a5082e7efc9283fb7e9a2b92e2296f6fab2781a058c1ae16456262303d413369211661d07caf25b76efffe824d59f155eb53f0ff1dea66b44d3ddf71befa71939103063de0ef7b5ad5d89a4ec83ab35eded0318abbd2456b4c193b30102fadb369b82260be3f4a108d1b768b8bb3260f07 +c89e21d8c516a78e9dabb9bd8d7526bb99f8a2c655e484899b486f518246d6fdd635ffe039c29f023d0e6253964a44b3cbf289e6a797fb16eb043190f3ab92357fbf40cbfaf1aa04cff04801631e5dd1aa845caf0bb47ba94a3f74b2e7a2402ad3d5fba6eedd861a9668809546456762a93b3f2056e12c9a31b43360361ca6a7 +d730bcb4ab6b96a1011a7d5ef58b5d932ecd08f3b719cb06b26b6c14a4487685e4e13372a73f6d76f21bdbcf36f90363fe83380922f40ec072593d27f366340a05d128657bb0ee0d7bf4c7abdba101de42cfd4f416763595cc87be6570f158a5b2d6cb2662bf013c7707ffae907d838bdd10f04d18fb7258f01edf62eeee1037 +eca32ea331fa476d0cda6cc9b2a7a994019b72ffb1afb0efdf34f2683f53e8e8529415ec1ecfb6261e11a53f889c08199f13d8b3c3216f0fb075342c076c856dfa18fd6edb2dc0eea0d8e6183175f91e1f5bc36667dbdfaab90588a209afdddbdd99de6a72c20348d64da6d7f12b198f3c89b6447caa620f49925f46457574b7 +d8ccb35036a1e9724fe865b89d0009f460bef0d4ae347b96fabff5568985db7dc57868309cea83cec3f614cb85ef8fc97a3f5116440d868e18e8ca14fb84f884d27b990455112887e6caf87d3b2661846806991c4e077815e78e2bdb55571515ff60c4edb5eeeaa7f3f7629c4285688014efbc5dd732414adf4887a6dc4272e7 +d6db4de28fbb5393519ade64f448f65c271efbfc2c36eb763c827d6b9cae0b4a04776530ba7b81a805f8d76a88a97aa9d40f7f0b48f956032ed6e9d02b16942cbc65b39b1a1a9b8b61a76d2a0f9116657b943767422ec9df84a2438832783f03f36990775feef97e0574129e91aaf101f5da799f402e5ba6b2d591a0be0a14cf +f098e308c931acb24f9c27fb1b907257b390f98c04e9140192bed62bd4dd6a6d55e33b3e2e66f1ce1579bc46639b3c12a4688ecf9eb5989746325c9ad8bb07fa50e4c2188d20a2f86dd4dd320dda865449d3c44cd8710e36b451ee34673a28bf0cba9036145f4cca80a36be8d640d81d8e31ec0d6e3e95b8a1be9633aae4e2d7 +e1c9e78aa512d9ab3dfded8bf80e6f72c3f4cfa7156f62e85dd7455886ba4158a01da12007f5fb5eeb4aecb83e8816ffa50987c19700f4c1e1a6a3d892e2635998f6819fb90a2132f623b157f6426e8548575fd88a1738a614a107a480275d0fa409d13691e0fd1b7e55c02698046819c680d21b5c85831e7b531dac99e0f707 +fc41af72fac9a8aa569833952c2b425c20e88cd708025c8ad233d4cf6ae026a14b6447f04331d605513663e26791dce5d442bae00fbb08aa25d877b5f48af2a0b870f9e26281e5ee8c5887bf13b828cb83c93c8be80699a5fdd37fbaa1be3082c140337318ce93c7230363da232f4f6591e34d304af840d393b0d8dc0883e79f +cb9266a5aad3acec0438588dc9b8834b7487e2316862c62e30c97d2a4362097bb1a72658c3251e6ecbe4afed1a096bccb8753c62044bb6ec74248bd78c546c9f4d7e5afb465c932e13f9a9bcd66efc3cd9fa3a7b7f234acabd6b63efb71f72aeb9745996375e38a2c12501ef7992ef184e1f66b2708a1be6a11b8a86cef37bb7 +e6c97f9303bd922390f082f14a081c110637821d455724672241915380a5cc6883959ecf7fc34538ba544fdb3f332bc59b0a546ca5d9fb638c1db51ad2958c6b2fe8ab381c8535f67cc2ec34992783a5db3495926deef8ad34de7bf6fc0e8716228506e9dd2e646f63812695490d6aa067c08e7f8a5ffe174b077003297c7ca7 +c89ae8fbd9eabae0ca0ed1259680d38070a2a6272f2b65d496e3063b8ce8c1280dcdbc29f7e35d4177d925429f3e3a89bdc47fcfdc74f2bbbcf7cca48ab3f0df3da12c54849610f11ed46cb01f4c15667aea99f0e7619a3dfdb2f0cb590ca41ab715a235a73e337426af95b3fea458de0355519edbee3f72804431f808e28aff +e27007a981f63adfd843b64b09752552f06c43cbf2f5fbbde3ce53d819e9b3d5e7a6e4b5cabde7ee5275dc559a9b9d4ba535d75824e20162a2103044b5e1b633baf65f53504797a4d80407156081ddf6f761e01acd4c5472b15b5a9d96bb120290214e26f2954d4abac08ffde3de0626e56d2fbc09e0accbc64d8d0c0f35b04f +eeb8898cd90b10ebd4ccbb4ef1b5100bbf8ed77a3d2f31374e8f0496013a15adc89f648f8e6aedd2d60635378a7365f27e8fd8436044adc25c5fa8caa3d889c4719edf4e8355660b25add2a430110c19be1414ac8bf39492569e221c4e794c2d921878c2c987b4c0f14a1d274194eea63ab61685a81d1a76f28ea865bf3e6b9f +c118c3985e4b87c7d4cec52f9474a127405bc11de1d46c5c0a9f1c89fbdf6ed95763453d31e922d33faf8b6c0f19f133844ee1661c98e6c7eef86f2359c8cbf0243e2e16542901b65340e1752fb52c3ca345fa5d216486fe407e26b29422ae868b59f4fbabf1f11ab6a9dafa4038d2500f29243e8b1f12503398bb6ed330d1ff +fa6494be73cd0e78f0f2593cc4761c88cc394eac686acda3d1ea4da5afb03d01669eb443f66f3f7ae719c5b5c146962481d9cb3caf2b88bc2f71a722e1b26acd19468014fb47982277c8f66571ec7b7d438aa8a08500ce1c758b8a9ad685e4cacec9991a97af1b1c5247a28af0c9ace33638fac9192b71467d128b008e2d2aa7 +d94a8297f867ae49996a1397c6f7883642dc44777c2a34607a872350d969948d352711a47c83c0005acb0bc92697cf223a543f887748b2dc8ee1c3c058adbcef8550dda24a9d7a984116426afeed9d6ae85c20bab98d2c57e3b9ccf4ef36af06d0aa9f47b94951e76a1943c27e77a43a7f162e23d73bf6476ef2acbc17d6bb77 +ee5ea49357f7d94e32abfea93b0867e3a54da007b045eb79019771987be4f09cb6cd0da761971435c793ec0661bce62111dfcc8cae70fd155003b4f0b0c9a371bba906a8fb9ebe5e02cb59357c1df1c1a576e678baa17ce142b7ad7a700a7fa1aed8b00cd7dbbb717a1f17eb4622377b39716b7904a1609eb9bcddb54d953dd7 +da32caa059a588456bec6cde7108366343f1d2c704db11a3b37027628450712d919082be6052e39c37f3d06ccdfa2bfa245af706cec48b0ee3a411873ec61a5f4bee55aae522ac63bb977baa9a23a78fb6bab6ed438d9aed0230aa0483d68c3bb79502ff74ca19725dc73ce81fd336453d402191ce885f896792207539fd3a47 +c13265873f95f703737f0adf580d14334572f01b88bdf7bf1de2676b3f5d6aeb8ec21bed328d01ebccda75287c68d04a97d6b1dcd2f287b3123b17b72dc3e8d32d01aff6b1977eb48a59ed14e0b60fa49f14e338701d4dcda1ec13097384208194d00ab4566b0114155dccca0995fb2e6e16458082a6a998837cd207f7eb7707 +e29be7dee838c837822bb30b36bd46eaf6867f87385c3ed314d1ba205a24fcc3b24e3c6046301133de853d82c2dd9e1eabda976bee0a602f4b1633cda4361d9fa1391410de6db8b834247e56cde687abd273caba5c0c7c19fe6cfca7095a4fa25fd89e2eaad6df3113829ceef85b360a6c8dcdc0d9047f633e362e78a33778ff +e25b4c79c66bd9c856547b59566a2dbd254c8423f7c14ecd2a1ef94f43795dfffd31eed641b4268597ecce6d983bffdd85064039c5158a644439c7c009cf73678bdab660350969390ddd22cfd8b47111eed0bdb9ed142f8eca09d741c9e0af9970cd12f6f073e6ac06b4eb480f17302ec1c0f5108f0406baf9f85917f04796cf +c417d386d848365097a91c43ef398d5340fc3ef93b663cd647626d4b8f88280d67a27d6b75a6a8dc51b935179ee2449ff25e83d11b3bd45cdb103949716c9a0cc9e9ac2dd9a6c347fff2c2fc84768709124fc33afa8ccfbd0a208901d54f52505de5c3605c4b063c66099ae4c5cb4339c6958a75d7335788f09adc1002163acf +cb2962d9742bfa907a0bd86311b0b3f7dd44dc8cef0d5ad81867e66f810ae73fd43ffcc0961ed52e4c339e58eeccf67d67edd45e891eb831714b3d4efb323e07a6c48d6f76f9af31c8407582bf48ca7f17cf6fadb6c9cf9e1a585586c5940e8da8be163235843cf62bf6c83afa7e8b4f21db87eb988535a645f25da941d795e7 +da0c07cb2569baff0413394ca41269ebe40b5cab206348cdd1c1d46da7ecfb38d027f78258a52f8c131ef40f8c3685995224b166203d3529063f3949e05e8de2341c4c5272d8e70ad2ed11057adfd17ac4ec54795d19b7beb7a1bfc02b450fdd78dc528672e7df7299a98a266dce4e0c02921e5fb4a166e78d0a30ac0b889c4f +ea9f71f9a5bf3532489a37a32dded405bdcdb57f52f18d26802ef18c64c6255dc3adb75a546363219ebe4db91df4cf097c8e977ec472e33083e06846cd4d4d6a34ddd472da0f6d2f8ca45751d3f072a6c874ce39ff0c27b23d95d33277a700d29d867b73c582f22fa84ebf42194f8fd5af3871edabd0a3cb4e9560cc3725d147 +dc91031d647f04393dc08a5ee8f84030f7732ecec2c52d52137e78654b088b6f11c47654232471655a499876df8b1dda29c69e193bb663152de4a64942c7fa13851b925a650f8825c86509e2a8062af652d4ee500a22ffb5b7f668fd520b68b5452f69ec88353444a35c18253203e361aca9ca919e1f74ced3b011d84dbc027f +e175a7b79720e6b412d10d973c4a3e734b3f9e8a96443309fa48cf16a8d37f61c8d412aed2ddb8272157d3b8a911564a909ee3a8679b1e2f906b5fb75a3b4af53d3ff12103c95d166f019540a9551cbcb4c6edee56ae7365f19203b65092c43db85f3780f0f65a9bc82a47bc6b56142e35a7bc96989c7507b8832286e3835317 +feb21f2e723931465f1f9f1a742570cef45114e208d8d111f76e24e56b9599d1b946e754eeaafd69d319747e52ba25d98dcb2c9563d078ffaa70028e1008cf95f43b01ab747974ede28c12f353d94dd1bd2257b12c0b096712cac91a0001acd630734a72fa668c7a16becad53c539b0f030921f6cd6cb98a39301f5f17b7ae8f +e0c81c0b43d12b90407f88ffa59446cfb6933796b7b1e59f3ea20cf10a4c2445f2ba25f6f048302f8519ab7ca0828360100eb6138c2bb7430aa1e36d8a5e91cf9704c95e56080bed573a287869f0bd812e3a02731f317bfbc0b2d4585df30eace0afb84fd4461e1bc1d66aea88360ebe38415f0ff89c0a7692c2d60e086472c7 +c108702a4267fd660df44cc2395b8a2165d62f865e7df7edcddc47c191150ec360abe89540b69b7e0a0f344b610da326e9c3624b073d31128bba6717521b68da46913b7da690d4ce196ff0b9f04e05dce869ebde731d459a64ae606d2a43658fcb8793a144d4b5da0712bea4e94afb5c00004419f19b5e4273aef9c500b16677 +c72a194300fd5f4b58b3c5035816674b1ae569ebe29e0a7ab7fca27c068783aca2b02a871e68917012cb7e12d9ef0696517a9e1f503442526580122cf8fe8b887ddd3f9324f28f031a24c4c22fb029fe2ae2f930ac32a023734c75c66a29086dc02a75b70bfd2943afe515821adb3fd1391c5b440c90454fbf16586a738ec61f +e3383bf8250557de57c5764da9a2028108c063eb94ac336f363c8becc520b8c84b2ee1e2122777c25b0c55587b35062f3fe3fd80b09bd57890a53383ec5fc55cf0a8252bf6af0bc4c405e8988a794f88578348eefee1cfb35b4d30f0bcab8e05a37fc826a8585532a3ddec008befc8a603d4b25f53ca307e824cd37229854dff +c9d48176508b8e0a0a5fabf027ac2e6b408138d00bc7e5bf01ca326dc9378107c64f3f04ce3b1b2a1b7ef3a57fed086c679fd36d9bf553c880334d4b6fbd841c26138560fb61bd14db57cafbdc5267e40393ff3b67204325fa6fb0199192f8eaddb95e36b1b072a06200ee225c481b3061e8fe56731ecea403880ea6e388fcff +c67afe4ae6ee8919ac769cd373b1f9bb6f94b8726c742ec97f3fdf57b8d26de82f4995271aa5217cea620be1d339f7626c24f486ddb200cc840d1eeab6ad1753a840ec6e6295753b037851bd3bb569a23804b3ba3da056773c337783e853af28b31f46c2b6912787d99edb1ec273c0a18533ade26315a4743352da8281a7516f +f6f60b8b3e9b7fc1d0de13075d9ac1391af708df7252de27a59a07b0d1e8999dce6ac11bdbfa1649f602cfcc1a32c4ae0a396b7aca34476efaebe57ef3fbf983d9ce94e0ce62279396f5547e8714a5bffef54b05e007a90deb6a73904a0fd44827f1596c9e8c1a61cea300e4f9d6e9acdcb550287164659ed2131b7adde4ee5f +ff0a668298f3a632a0217a9020e95188ee26c003ef857b7802b1f8030ef8483135698f95389155c0fd5906944cac14d10a791a57c1a55ef3af246d6b58c679007a8844a60e880edc86195ea44076910fc7dee1fe870396041795b49fc8580a0d03e2e4d812b84b54626cc161f8f3536a17deea33201a04fed8493480147fd56f +f7e56413d8d9522aadac8efbc69d6fbd4ecebac6a26e2b7ce31561ba7af032871a988bb75b503b955db8097f0cf4254c6f7ed607b460b4cbd2b0b5d598a5ac63bc421231add4436c4d3266172e5c331f61d326a693351954fc332eeb204979c84d7400797c9c35c4fb65022b2881db59453a69bea623c83d35d1f7445f30a4cf +db54052e96588688b53710883fa3426d12b10e1af85b66d475250efe19bf4700f736bc8a017141d0b769815576a885206b119ffc081e98a1f8d58894e9310ed452107cfb13e463ad3370925f6f81c6d1a7c8d970bdb67393b9771edc8ccedc7e0725c6217a342e3b8ee1f3036c8c9c117639d108b647c8b6a6c4c056f3bdfd7f +e91d6c234b55885367bb705d1587ca417154dfa62cb8b399faa9484f50c103161ca8bf56d392e8cc2a3eab1ea7108ddd7dbaf7e10d055baaa620c4d4d7199a75b62a7079088466cfe0cbbae2deea03efcb6f4f20beb13940e47ae63d959196c4e46c3e89b7837c14e9a9a30296e0863bb394f6ee1279d68919e53d0cf04ae847 +fa49d959fb891b7ab8eef88b28366bfb0130ab3bdf44cd8bcd561abfe29be85586356f181315e8e134cecd2d0855cf75cc20a37bed8ad522fdeabd10a78f1f71f823d1c67d8bd78406093c45f676d991265f9f01b1f21c3d613a1dfe45d7e3b5ccc82eb929a014bd8c0ad34dd4757902d325a12bb0c4e31aa103529f9c5461ff +f8c1ee233ad299f60392482b8d0f89dd4e6a1ed56103fc4f827a2edaaf23062e1a9d5ba28bf1a784fe7cf4298c9c3a067daee1986e48c4a722c48e3f31b25655ec1e5d8eb35fc1b6b5c92eb76737d0664a1df9e2379e04d17abb6afd446789cb4627bc501bab922dca52fb5f58bb2af18d0c34f1d059442f7d36672a6960cc1f +c8e648b5355ec474463ebc97e93819a948137b9d37b6065f26117aae72d5164d8ca2cbedc3b8656a58d4ff83646069d1133d1d0f5bec952a1950d16e42b4aa6ded6be6c07d08b62a8bec59a6dcb1ec407f9a41ac4690cbdfbbe8ca006c37bad21ffe01cdc9c66a38bb97721ce7a96800a6ba8cd23fb0b52cd3e6c0d8cf069d9f +f64c377ee76d9445064399a609b284f7efd26d7252517128f9eca2438bdcb679e5c06f2ed493d196a7ce513e6bbdac532a9cd4ec7b8ab61b6510d8ef9ded56f18b6a0d6b720beed97348403370f7941e7ea7aa8d00451f5ca39c25f3cd931dd8e8d1050d1244ed05f77ef57b1ae41698ef265063d937bf201cdc9c72ec5dbddf +e508b0c8dbc8e496a5fe0b54fda328a33ee00d2e731007e2b34ce1ae733da098fb1556a5745b4dcf8eae97589101ed7ab9658313521f381ce013abb716c1a85f5b566fd5e8d41891d0275b537e864914bd5d7361a86403addae70a778fc2e0e0ea78b4293019c01809baab1ef9ed1ce1dac34ac5857aba7523d71919cf02f1f7 +de9de46ba8369d066bc852ae89452a04ebad1d51ed006202018ba332f3a028a88cd01b2e03ead6cadfa8c6cb6887e07a36f05ffe33f078b6ea1a27122a8becd7039ef613560069382d3b5cd117d8932d82ff8deaf08dc8d8bd6785897fa01f534edd036fbdc009324196c51f34756147395d71ffd4c13138d7a679e9cc2fcfaf +ef14963b7fc1f2121c69cf49f3c845fad16a73c7e43b671dd6f1a567f3054006fa3376fe7f83062d4f395929f78d35dedddd9c06aa5776898a0d856c47902acab98b1c5ba36bcb5e0c784d471256c2ccfcb9149ac19e7356a1182eb3e2e82e0c0fed3245ffa7decdf8d8b62f486609e7482c7ce080b41c4370353301ba376af7 +d0f1a79fc37d874288f4239b0549a161b2af702f2553c1ca1ef290224c176cfd07bb7377e7d0d384d38884912faea5a95ffcba6404de397fa1ca2645de17a5d888d4fc3b56ee5725b430f1903bd2df5238c61e79a3dd75fced3c58caa60086c83fb0e2032f51b453139cc0e47054f0ad0eb457c6aa213dcf5df4250667cf8057 +ddd0f13627c5a1f088878ad36236a750a7d94adf0a00c7f30ed9e07c284c2a61fc0dbad4178e7f49bdad00f13cad4362ebb73d120b949331897e52fd6939fbd55e9aa758f4fcf10bfed8c452f52ddcb030ba1a3fddabfce0979572c62b677d573f8f857282e85c7d141459cd1548c768a427391bd358ef8bdddbadacbd133acf +e651309000339fe8e0cb39de3e66d0036d31a74c5b6934eaeb124b85bb97da0e71e8ba9d4f9ca199562b019e147df440fad0b097c5253471c8825542a0c7853e5886088bb1643cf5f40073ea4c4cab77c222091a903bafbb355cd58b2c5a61d596767b69823e3dd3cb480838efb05c7bb000e2a1775333ddf282b6ece60b276f +c7aa0c98c1ad7fdb586b73bf7a3b3a13d50c0bec9a22edc160a9e042bb651213c91dfba1086bbc0ec4dc02757b55bfcea3a2381f7e047e91720130c002b16ab87bdbb077dd06c2a75af207bd0405ee6d577843066225a2c91b98eaa57f3050beab8d37a43ff1958c0402fdf40a18a70f98066dacf03ddaf90d0e7f534516958f +fa01580ef0a647be1fa28adde539ec1be4c63d276003bc6a231fb970b35c430fd245b5c462c169ac2fce4b06712f1910b96b3eab8a81e32d7a0bf7ea0c5875aba0f60c7eb54d87bf54d967dc913af405b108c337a38fa6dbc67787dc194d6df97c31c00f5b298430a4a879bf46dd34ef8f4fa83abc0fedb3eb021e03d48e3b27 +e7d61d71bccc683f18b7bcef988807105aff846240a5a63ac48d5baff2f2fd6e006f2d08e12bb91fc95a7fb0cdaf96787d4c4b78ba571095ca097f439a8c762404feb6b865a5baaf79d708ca213d31e6666c005951c1f34b9275ffe6d27d5d01a6ed4e18e3ca4340e6ab7c49019f0f97d98df8351acba202f74c773b38b41c97 +dfbd8dac032a3309854d9b5977eb7cd474979c5edf4e0b36e762e548fdeb20a443164b5882f293d8b92f1ba1bcae4941f7f1210c60eee54579e9601518e6c7c86038d63a30c7880a2d13e6469c7c2e2ac8857d5488b26e260f9d13d784765f6eab1ecac6216a1722697872d479151a3b00bbf2631c9e4d576be412973d7ed637 +f57b1fd9dab474cd040f0bb570ab99c41a9b443b7a34323d852c8e14d2d6c36a323ab932ac14d4140a56b3cac022e6a20c50f133d9d6b41a22eee01421772760e17ca46af8af796a8236f86710386dcb77904a613f0420264275e5be75ecffb1308771c9b4ec6c0af480cbd616f143ad4f582af99fc85756a8b1536d9148ce87 +d2d72bf5bcd16d43decd5136071ec06c49925ad8c29236f21e844a0980596fb1a342df7c2e53ad0fed875a523148eb62290daeb035d910cb18c7bb0aab6bbe1c7d2cfc6af438404d9993cf3c79f051ab53c558fac38d4137dd83b08ed55cbb6d6b3e725c3d604e55777b2efc92242691477f37cee9ea70c61f41c627cc1362ff +d9577e50c695896f8f1b8860bb663c20e6a75087a82494f29ab1f1c5eb2105a593bb99acb56f13fa5d1e5d3af0dda67c92bea413c887c6da98737a4eb4150ebeda46bc80e559109f443fc477ba4ec9166fa1a743fa3ad8d6d6013206b4b90baf1fde935ef7dee716debe5e72fe6de04706d07e4e73c1e524c5ca3d2afa08c647 +ecd696dfc34b28cb579004c65a2260b656ae754d8b3e054011766ecf9f13d140204a6cff7763437e87163841da8ce8ad68db986c8293cd44248d85fc76fb734f1e0286680a10c19a5ae27a8d73be38e11957aaaf6e582d9d30673d78dfb6e17a162fde07dc411e5ac07d694f8762389d0faa62c9e646595afcc47441356ef9bf +efffcd0a3e9285ec6a7a35d120e6a0b1ebd3fea0650868d1a1b3e645217080128295ce3bd2a75598388a337a0dc80c152aa788384eb881b7b884f545cb83f08dd013f7342724d7f34fb32f6f76bfb5677af461b8e1a992324af27a7c1fed01e9a025b0e5efd1b1dc1d2464bd1094196ceff65b799d27e048a047d6dd440f7257 +decc1fda609465f05b9c7367931a39b67654bc167dee9d536f7a0b020614726ea6214e9961dbe36cc1ee5b18f22b5749e3d94e6305006a0899a78d4fb9ae2a3d7375afd8a7f8c5b30ff6e8c8a0ca43c8897ae2815c1a50b488e25ef451ad5a8ef4ec788ab9d5616b0dc836484b9b9d487d043bdc01cf748d1fbf148b4c4dc367 +c55db93dd2475c7ae22267d17b2835af21331fb8fc65f5da8016f7099837218ba9f59846cc77539530edc91e041387565819b1923d6de72aadcf22325a5a2b67d23da0bbda7bbc88f4ed89e814295db2981d988cf51cd0fb812b5e006785da0213e9ec2dfb57a3c7313068d6d0f1b532a46a323943ea9b409ff157e3706ea94f +fe50814b5a652f5401e8a806f463147597f73ef78bcfd8716b7ff8b83d19ba7917280679e5d503d91f89d0665df63cf86c4bb017bae8b93ec8e3461211e564539e390ce1971b67b2dd6a5c2af163ef437b60c80ea00c74f1a4c9ca60f9ddd8d0107651be4e542fcd8e6a7daf26e818f043bdaae0d534ad5d32b3057c3b12224f +d6aed70bcf1e313a85f9bc7e3a4d55fcb65b5a20a19f834f514bb1a0b66ea8ac5de735bfb133b17f047721ac2714e78f786177b0194818a7605e0cea4a95511650914648f58a1926d5e7a5db1266139843dbae4f96c1bc2163f28e7f89578141bda4d56383332d99a32a03eff82c64ccd78e16df0582ab9d55532e804c831327 +d25027752ec8872e362965d295abee4d1ec069f2c96fc8dff97115155796c6e1d08af98926a0ee6efbdbda125851fb8437de1fd72d8eae2b7f25211faf6f5b8c4232456e375d9b495b5d976051a498f00eeafc5b71dbc8222118e4efdff91da452ec863bd66917f0ee816d294e76f5e7a801e61afaae38a1cf539c37a9e79f2f +fd112f250009e7169e00d9f0b005c7aa5d5f0e564d603c3cfe901ea181275eb2635e0dbf9f5a4dd661c6bb7484c8517715420d61f7b99fbfe21f05d8f8bc981dea3f5ea20ae22c0a3903055aae28445da983ea0a4b40c6726931b5787c433d9de28a6b88949c168b5b4ea9d04fbbddd7f3c0725aa89f6ccc9bb202927f6fc0df +ebc023f99d773bdd1a1dde827f0b4efd338b51c94a8c1a7bf63b2170797713c63a0244f384df1a5ea9ed516d15cf0848a630d984d61c70c5d1870fb58c23e8d03f9135cc1b7d776a3e74d861e612eeb30f1f1a0482f0f55bf90df4edc4510d3a9399cc764e91603cd281fabc4939ee117c240771699e74beeaa718f2a70ca187 +f1f312c89d80f3cee7dfff6b3f940962f1008371003eae2a096afdbba403db842cb953dd9f7c5abe5a6d23d1c2d0317e95569be4c6b12682f7de0b1674b0ff90943471481b53f3fbf87236a1665e25adffc478cbc2f46083914fd02ade67887d7b62f04923ec3e9795796ba7070a758272db426b3407e00f8b356efae1cf58ef +fc8d947b01541c764490b3c1a9567db92ca5f26cf8edc3db36b54dbd3ef3d04ce01fcb1f0142d2ff340bbd50117c0b5306dd1567082356cee59e00aae410f141ab7bafe1b9a939e14124a1c172f5aa5f871930866fff76cb64bea603b816bf44b35d7d0af867ae4c4aef0ea2740f089ab3e9288908e3fb4204ac50ec3d6a3a57 +d19a02433621f3fd88fa78b3c72d3e5487c8b8ca183b26a7d1ef20285546cb0c07b3e056e8e801907a8306c3f665e80775035971eab78d44b9132e8654797a0f2f5c16fdddf7371e6e9112a85266041303037bcd95784522fc7091554f8ebc1f36a8df52453e4aac5c76c92263d509b6d900ee57c0b25c35ee7777201724d1b7 +f05fd738e25eb46c95f920a4ee9d76892b1db9ba6474ff994dad9f5ea79654dd7472cef16dac38ff56c0afb21b78bb05b8645db34376a193435fbb6034293441c1d2cd97e04b418695f91fce04a39e278a3f91c651cc656017d987b9faed37c30f6c7f2397b0fae8a4fa54dd8b073b9a6b55f37ff3b79789e7eabc98b70a0757 +e62461bd335177d6c32bacd9c5b44a9b9c63fab74c7b602786a545d2f3e4f3205cf2d71acbf5c5411f9704e2904fb70d1a00a5517a4afd528d7d9834313adb9ada4bb409c62a1b369e0c2e9c58636bbfa55ce580d0dc0ebe36a7a89bc06ad1f5c71b0a20ab5e9aef9bb452597fa93f033be988af471d9bfab4a6feaf8855697f +f23c8e0db071cffa54b61e18f2fcd3c727874c45de1f5e04c61f308d6ea2d342f3defd6860a815739eff0ac068946fe3d43c32ae21a1c6dcd9e43bedc55f35864e4775017a94f8a4cc55f27a3af40bc8fe7b0f9323b7cbd6c34a8796b4e043faea26773a9754ebc89e76b6f2a2cdeec69a38a2f0cc8609549053a4fc86e3a96f +d10d568461f1e89196dcd9dd94a0fb41c2fcf4acda96535e1f7c5855a35814a86efcccad1c8d069e2c7e2f66853d21b3e9e2d14de76124124296991c120607e90fbdf6d8d95ddc0a8cb4a0d453ee9f7a876186b254a6a3fbb4ec3bde67aa99726a7d639b5309e28630e1a6faf975d537d702dcc5664c8dc35e86703e97e590ef +d8b83a4e71ddf5ccf70c914732f4b97220fe3924b658146c09bd5b10a6946e492c9a79515b7cd9b1733d21a9b96f526484d63e5ae65ba85c239c96db337c8ec4a74f15c5ff894926fdae26e28b1f9a28d57771aada3e58bd69307bc2ffb459a7b4f657d15bb2a817769ed26bdf270148791db0cc1109606716adf5157d2ae487 +c2e1bb076739d3699a67df7a005e1787b67837d1a3490b881f821f94767ac88a1fdfa0678ced42b78470854159f4daa4edf7b7e9f1db77d456339745959dde21598d3ed148104de3ad84d97d2933f3251ddfa0ee689c6664e9fe94481095c5da2d3106f1548b4d5868f49967a67ab7c62d40a2a8c716754520d41665b891b9e7 +e43e47a79a8e4ea43ca4847c7ef225469cd10906eaae84c7dc7c2ac927885286bf9d84eb0335915b1839e770e39caa5e70318a363bdd6ffc9985124ea6d01f2f4b28d0c3e45c2ec3f719527e16f3c286740b4f3e3a688da29846b793cc5544c3f4836db5f716d05628a1017ad07c222d2c2f7ababd444e4600de081cbab43a27 +dcb504147e323dda815de541173c1b2a7a74d7626624eefe65dde2ae5290d55ac21f740015f3d9ce52d0a08f49a018b34708ee600b0f6d6d74c86098c58ec8f2b38ace4199b0347c68a35e6955aab2ca2a8b7fffb27690c8635ea81074b2da19e4ec563c3ab173b6d93654d250a125842bc350989b8f80e7fb54c47e510a1d0f +ece0d627b404b36a1e7c466cf610306310429f0bbeafd2fc82d35e8c70b42f707581d22fe520bc9acc86301bde5e24b81726254840a05196802e3dbc739f39ebb7c64d2c7d5c8c94544175f8c51ece6130ffb874d14b13a1e16cc173280ff9a1826df37957a9e28044bf0f73f11fb11780e2ff097e97d232568b7c6d18da5737 +df1601410f4acba0f3a9a0db841270aa10eb4bc2382164aa843bde01e85a891f30dc3abbd92472db8d64a1645d39d3a300e650a5b94a93834de7e358c84597408e34b0745da657d727ecd2a86b60b18ae1e05bd87e8524ff0c5c95d2df04a9e1f14a96efc47f1ecdac2161acb8d5ff78651f2b806df3178a9ef863a86f7dc947 +f80c7695f21c71d4192eb94e7b3a95e04e3fb6304f37251fb814ffc3521052f20c0c65cb6087a99bb66717c16d580a78b5e238cb29763862864b0520fe079b4905bd62efef0630b783eab489152d749a05ff1cac195f3cf5ac02e2a4630f5a15cad58d5c2f57164e56ab3e5c2dfd771e75b264e0108c8ca3080e5ed7a72d498f +efa058329611f677a6298ea9ebac082ff95702837cf5ed8f627fcc6658b0d86d497701c77872ba7d5b32ca772a82ba6eb7561d1c32f806ca25feb377f75f8657d01dad2790b9a80ba04ee35b321179264d76b0865018da674bdeccdd5d54710a65d2d15d7a32a6cd38550d9354a07457696df769913b72b26944796bb081b8bf +e792a871185e72c4222456fad06adb2062be2d1d74084a427d3d9baba2f60e42695bbd6e17fe41dd37757c53b59833686f4a08f6b4eb045ba5b75d7f48c4a1ceebb38e027f84c3d4c41da86ad74d1b24387c9cbf323d23a90fe55291c3e0b327cf60e9a947082a591286ad11f792188cdd197e01195beb29be5524c09be9bcef +cfb583dd5aa7276fa522f9cf12cef459d8add47c6eeee78193471a12e009e2ea945c8f38cbbb83f0241af276bc9ec15ed83cf7897786d4d06e7ba09e4dddb2f32567864a032f18f0bc4960339b714e9895f59a08efc38266fcc3db84c392b31c771c4896b79a4c494e0dd2a008dc93167376fdf60a41df0076d108d13da54a8f +e2bbea477e2295b5990969b675aae45c9b1f65e81ee2cdca4779ace5ad3dc576514f4d09976ac56b833551cf47eed95243c5867f377829656f67b2b4a1455b1faded214786d45378e97859fca22ab1ca73bac9ef8fb9fd0d1b494fdbede3ccd71a814c1755b924cff3d466b0199d62ecac2dcc5b42253e41314e8a6d50df2bbf +c93317671e163218e36e6e0803d684fd002e68b25682f698a71888589474de90447b767fa3ec2dd832c341b2d69e07bd8891e69964e4dbbfdb7b5fd473bfa61bd2c52fb47735ff44424a03a789bedd0fd6267ebdfed742895dab6288dc36353785e78910fcb1313f4198c13c6f2243730ff402cd25ed2ad2079a7ef81eed1f17 +e5a88edd931037174d6b7ad94ee60f9fd171c9148d64f23eaff168781d2afb0aed18b0303e2f3c19dd15eb289926b3c3bdee206eedb6ef4f39a54cb22ec273449358acf45303ce8cba04562bca605be18356e0be1e9e183be1e9195f4296770c5e668010752b07851d549b196b586ce783eaf471aa41b6ada916ef51a401b3b7 +d2b9e56656d77c1b8d5c792748a9ad6045a9cb14fa00d63cbd0801eba69baf17d3c57cf53b4fb09533b7847c2a2956ed7d69be9bc90da11e6121232792685367acdd75fe1f6c0174002d6cee27d25ee65f889f69b9065b1a71e22e59cb3e29b58e492f98ff15f2a01b7ea6aa273ddd5655473b4c52570d29e7130c047e40604f +d8bb397078640edacae94bd856a91f92516afe6fcfc9c36862313e22d0f2a05e980a5c9db29c350f97f57be1c87f98a8ad9fe43bf75de2b0284dbf08c4b12413042450b8b33417fb347c17b0d3866a54d0404787a7cbcdc640c1aff056597374f6fb13407ab7eeac531b246de32fdf626e48cad346f5186eb960307fb2167207 +e0cfb7871c815189108dfef0d79e427a9ee6918be3405f516ca1ca62942a3d884d91dfa9c90fed906aa6af0d1b782c9964035cc0a511dc0477dff3e13e13cbbd029597b85a723e2a5157d75ddce506d20b5cffe443e854fec4f3583e2a1baa5d3f3703973fc81d7bd353eb3b680ac59dcdf45ed13d111c3c24ffe94edfc37377 +db69f6c76edaf923bd7e7c0d7bc2653468b37d86f65bff48224cbd21fd7c31a0107e83e282a0ea88c7e8fb36f293626d1a430a83efa1650b9e7f87e8b9160e6e67aa3135240dc9c15f261aa22ac5717f77758109673691ba1d5cc031fb56833b2f8e81c09db2061bfc781a5748b237bec83b42c32ab5069f1301c8ccdbc2ba5f +c8ce84cb3792b8d1bc38e626468eaaab4bab1ecd0ba863b0c887174dc0f70573ea175b74b859c3792d6cd13692a89f620db4fd44e5d434256e7dd3582f0876fec9a1bd4f13411a69774c2e3cdd5f32f12c178a9f774553b73f3aa9d203f85bffa11ae98aab5c9f2cf2b26cf0609dabbc9b0cee006ec0767fc65b41b81741ba3f +fd0911d9590f05cb0fd8f83306e8a754888547adb8c8c564642a7b5e60f886f40adb1a0979c59bee3bcb9dacbff5af9eba421e098ce4bf838db7a27417b94b044557708f8b5eafd3c20258db8c595f9c173a33fe6153e5f4cc98fd95845cbed881786a605c3c49fbd08e5019b41634d8347f231976f9e20f1afd4706fd7f7647 +c837eb1c38560e0aa00d85f1b60b90e4236bd33f51ce21dd39f2521c195f819b0c44d9ab531b0fbd4ffc6b39a21790cd0aa1f3b7d5018c94bc9d7a847afaa25ef86954294d19f2349ae951b96e916c696af25cc7ea1c9bdd3c76e4d8bcbbdb1789235b7d6e522dd3cb5d7b8ec5da3c638cfe068692a4630aa9c7d3013edb226f +d7dec9abf53071638f0bd29eff280d1be72607326e2818f8088dff4c6145cee7596f78cfc3c081ca773efaa7f35685534dd9ca6b15d2c3895dd241d962a16d17cc86119d45abacad015c4401bfbb627745daf0b039e4b3c9f6f08312c2beb0e9c58428287d24aac8edbac4da2b0bc4c7881562e92ba0ff28395e8b4717786dd7 +e946c93d7e3d1a3f5eb6e8cb26d0a5dab1ecf59fcffdcbe161945ad44a1e8976f00c4786eefb421e0edd6973981b881bf1900702f3cb8f73b5f254ac1327954769e11570e5d636c7109b937f070fb90cfafae12e8b0c9f9d2a7fd71e0864e4e1ab870c74851d1eae926428bc2b5bf7af7c9f9128b549f3b2e3b3352107d437f7 +d772418a21012e71ba1112ed1debd1b8287bcb5137eb41235c2f572e2291db951c4162280ecc3bfda5631536f25ab8a5bd0220b7c6594d0f12bb1a86c89bd5bd02a0cfe2475da091091f1ccd4b7e21d3d02dbbde4e507eb11d905cdd1fcf8f38bec26d281d3d25df45a898883d4f67e8f4fe2f2f9916c12ff028e02008858b67 +e363dc21753efccbeaf5d8e5ea3618b48c17b645abdad78b32531b5b781c0995e8c27728ecf7ae3735a3071af210ad41c5239f5fe33fb35fe429f80d82ae07b28d952bf5f13257fa03b339cca540dda38ecf612693fe67e02c5aa1858fb356f25ab6439b2461b4fef9f8b042f960c556f04bccb4efdcac5b1dae73d358fc3aaf +c13989907e285b9cb5a28912f502768fbb76436c099032e5732a38a8f8c1ea413a3520bd0f3861ea3e99c55ce08e40334fe43021eb0907d3e80b6f6e7668711501cda4ff40579e55d0a16c6818c8d8ea28932a1b9101f84748a5030431bb51adeb45ba10244b293d5a572dad8643280234893978dbfe9d588ed9706ed43dd537 +cbd7945aca0d3b635c10da4d490c01dda5ce1438e54b5e84658258ccadef90199f96a4b32f09339f982dc25d3f39937f99bdaac0635155da7b2a55525a4c2456ff1c6b7764e808e1f799499f793e64768d8a5d90d4f47994d382ae36086db9e3a4cece95548973611c596314db5ad013b685311b1f88687e5b52002705bdf1a7 +c02a1e4c437db8187aa9a15145e69bf62f4c4f8bb4d5795bbc9596a40c5cefff383f2f2c917f4b64c0a9c13e059db7267dcf48a7b33563409930125f555694555dab9d4d4ff669c5766677c33b7322059b7bc84e3c5b06fa806bf7646e5677051c1417db9876cc50cb75c37d2a27761f86a56fbb3fbe1fe84984244a061834ff +ea4f78ea6ecef98ba57fc7ce1dd95ed9d15efe9e94ea74f16e2d32c6b1b819e500963e52d8c7adc3bc9dd0c8ef09664c5e707f6fa1ea95c391a56af745ff923b1fe00d347fe2453a43f3da449469a2dfc8a5dbff7116af68a5341b9228cc0e4ab78b72781356d26b3b3f7fca0ac9bd4a561c750c36bef1d4e07c3bf09a0bbedf +d3cbff7b613c2b2d5464c2983bf7e18931d0c4b4cdd313cbdf359315fb82fb74c017fb69c0e21946962878acc1a5e806bee5142fb8fbb94d7d803461c75be316f8af4dc47d5b5e7ede073153bae3df600cdafe767353f24cee4806fa8b3b019ff60cf22b45ff0b14de7c1f7d77c6cb0964f79d51e46cbf79451cbccfc21621a7 diff --git a/src/crypto/rsa/testdata/keygen3072.txt b/src/crypto/rsa/testdata/keygen3072.txt new file mode 100644 index 00000000000000..b3d3651c79147b --- /dev/null +++ b/src/crypto/rsa/testdata/keygen3072.txt @@ -0,0 +1,1075 @@ +# Prime candidates for RSA 3072 key generation, one per line, in big endian hex. +# This file contains two primes, one of which is at the end of the file. +# The totients of the primes are coprime with 65537. Every candidate is 7 mod 8. +# +# The number of composites and the distribution of their small divisors are +# chosen to be representative of the expected average key generation run, to +# provide a useful benchmark target. +# +# https://c2sp.org/CCTV/keygen#rsa-key-generation-benchmark +# https://words.filippo.io/rsa-keygen-bench/ + +d3ce5ab07f05e0872342d7e6b46471c951976a85bf097047907b2c039c2cd5fa028a329e580d78cb7f19933f4e326d3f3dd91fd5592f1e2ac4e53ca3c0688c906fbf00d357e226344da9f0db17c7a47930fdce424cac5ed81c56d5892c3a7efb932b66047fd2253f9cadc18cbf5e53322cd5d272d8d5bdedf392c96380b3d47fb9eba03353c285b3348cbcf96811327a2f71cea8faec3748adbc452f9f5eb900c1de58c45ffe8fffa3ed1b3fd75fc9547ec978e3bf63f6cc805b92b8298e715f +cadf1cf9f6aa5f247d4f351427c085691625dd4b980920d4a525d13c56f5944f67594d43592c0495bcbef843d9e2dfb0c46bf887e2a58be1d72d391c1eb102246233fdb18f09535949f54f010e36ce60390be412d2bdbfe35ebf5733f165a0a335a23a5b31a60fcb9831989540b510270b427317c96020018be597c3ad0e0a9a58eec8f83742cddb9e30670982c3a81bbe64874167609929c23d1f32fce1d1f52d99ef7da9db86d23b8f33c55977de6413ba789981dc657f7e42487a710307a7 +d02f1f6132cf713da18e462831c6e3d6c323563c26ae4b6da3c190e752fd3ec635faa54ff9582e61147850cb262cbe284213cd9ed4f68d096cb4c3c54453f9583ced9e2bf146b82de942340c2a30a45b89a77124644801b795f6bb7c356337ab223aec48da0fd4045f2f578c6a897eed3be77c1b9e14bc8a36ee0634586035b9ec573d38c9d3f6745e3435385c0f9d855cf7fb1513858305e3cff8a2bcba49111e2ada59ca97d0d37cc977b1650be533627ea64a52b7b360fb8d088cc23f40af +ff8b8b7061ce7e48bb460c9a6e2bc0bdac6cda89371b5e981e50ba1895d34406fb0dae3ced11de59820dce8d7a0e2a2297bdbd390ff7beccd66ddd9d75b64153557b151930483dae72d881496a61fbbfc1101974f9cfceaf1adbd04d0a81523a7a9106aa66796e6773e13060e75c732115f3350de9e12a71e06c4f6a186430e3b67a1d8da92d9a98bac4fce4b9c6ba9e1fa20dd9a6c27574c6c93c19e1de44b6c174d6fb9e4df80621cf4764231a2a05f3f685cd249f3cfec88911e52a503207 +ca6b207a41d98b2b409b6314be6eddb5d271e4b6acdc35ae5eafbfc94f679709174d63e998324f0dded041ad0170c1e16d9fce3b9dda93939bdf489e15ab565983b6df34eec2525f943db4e6633e59779449b3628eada71503b2ce830487162d1dae19a5c78c6048f153403225a042fa73ceaef2550469ab04459710cdd8619fc14e542a129e786ad6bdb645284edaabd5ddecd0df6b185617ce4f4a05935d3e190eb31615809d126d212cc5de0807f2cf1f27eac5a7d93523a10b1ae3bac1e7 +fd33010b8788cf9a1092340386e51e40645e3630928a36f09178a5d67260f8a0d7ee52f37954158f037bc5f229af7f944cc1d1e200046c732146a134d2b3d6af9af7907ed7e92d2b50b904710283cc53329a29b14d7bcc17ab50d8953c3e7b1a77613e17bcaddc03db8906751232909cb252de377a57377831663777bada7020886baae3f1d2486c8d48e06ef2969caeadb4229556ff76951e3d6b2df34d60dd66a941e023d3fd03c00a93a798213e42122be450014ad38a6e671266c1eccd7f +de41403bf5174181b8603d7e1ac7fd2399624282b0001ff02df7d9b971585146e8f2520f718018a3744bae43dc0ab88333300019f5a341b8a00f98f8adcdf83fa04bb0a5d8b3e9b9e6e34ae48f459859affdd51bb4ecc32aa59dc4de69385bec2995d7ddcbe81f6a5b61b697c1c66cf74a20c27cb3493b312a1ba44901472c1db6e13e9596417caae8ea1461c17d5305a3ff6ee0862658c0b2da101588848004a392cf0aedd3e9ed19e39872871064b1a22e1dc1387ba0de942db36aa5b7fa67 +f4a566a3b10cbaeab3e6e41b7d994e1245850b989648adf1581fbca04ac6aea123848284a4e88ab7f3f1f98026e7596c6f12184c2def7eecad3968130e96bdd705d1a990ad0637ddda4f927d8a8140a381daf647e1c8f3086d0704017b44d20391a22f9daabd3a72db7ed37ca95bae5c3d8db7f921f632e66b1695abf54162baf07cb28d345aeb22971fffa402ffdbcb0e1e227dd11eb361db53eb59d56ea59aa6d057dd0aaa06b695c85ff0f82ee64219efc88538c455ac2982000a9611624f +d533923ae2c338e989794746889d19e80a4e217b66d80582d17db8c6013040542a9f7c53af5fb0cab6906babb1dc8bab7f48bc1a67409d22034eefa4228afece635946a45441a978c2fca0ad9009c133062500e7c67632dbff5ac6e0d06b958257f7a22b3ff7259e4a492ca10893aecd511ecbac2f5d8d37c88b3750bb27cb6e9838df9c817e68ba60d1f5b00556c8c3990b056720a74862beb7fdf9a97f10926887e5788eaa2fab2c885da24a44e67205827669ee2fc0815aca60c21caaeb3f +e96d709c3f727fc6fa734925005990d11cad9b9bb338fa3c047f75bc3face225fcd6e44aeffe98eff4f8bfe5d90d3ae7cd40e6c7695938d941821c038749ae5c5c58d71b04c15ace36b6fff00ba98bbd45b1b6ef85fe3c4b912c96b89ef7a680b566b5404c20dc14fc55dc10cc1c73b6fff05c889ee92a82fbb53f1157030af28b6a9f42fd242a74c58159862d6ed45376448799bd7329da1ee9c1b073328d2081443345c64d4c857aca53eb4c49b57a0257d6fd7566ac76ccf7bb83c6b2f4d7 +f00e08393251f569f49cf0c0846df62686d1f73be9777f8284cffab0fbe17eb3c0b783b9f497d1394b5a99493523359b32f969e311bbcef0613c1df158f884d82d6a689c9e253148b7ebc8ab4bc2ff8688e3dfb767c40179d6dcd70843f57b7c8458abdde6b8bac890c3ca156e1fb8db33b7f7d017c39e96b8f7d5ec4c9fb4bf91a24c109c352fe197e31863c97cb5978b1036d03191c89b22ddbb74e76b1f26774bf3542ddfd0713b02f151f52e5d1a590c991d517388326717123e4a9f6ba7 +fef53f5426c1f3b45a6bd8c5f2c508b684372d40e79dcf7cc8558fba261d26a7733d2a381d05edaf800e09a3cfb75861f32ca6fed08bb4824f43268b8086f1283c148195171f3828001d72117c843fcb0e7a407f904db68a1620a2860f64fc89874e053eeed23e17696d9bc91951acfc51207d30214c93b19eb486f2227595ae12636a2b008144d0044f97abe2043705bf1c384eede4409653b9e7c1b9d0d341692396b8f25a3cf7f17c7e4a6f3b6679de805bbbc19e4d1af9caf49a5c1a8caf +db17d12041df4ca16a2416e6859c59d2fe4ac7ffe9b7b43b105bee8c7dcf52863626fd5fc47bb02d1530773edf641491f6884d0702efbd2aa287d43a6c056296267f921cf53630772373908f6b832315a4b3206fa89741c0b5259b99915d0714241fc6a3aa45e0585c207cd7d5a271b7a5fe6f6b6ecfe102340e67484a449d7f7a4d7fba2c40dbbb3e9ca2277e97c2db29cbc688727f83ba5d5dc677351abc865be6b652186993124dd4a565a3a925878f7d744ddccd35424a9ef9b3ee452d87 +f87c55889edc968b96c1030601d12bee612222fe6cfbd55ce7c282a835f483ae1f305db6b44a0231c7372517cc1eb2c9dcbb11b7c9d7d4881b845f1aa5df50a9466671b571175931135a335e46c25fbf09778a50b077c465e1042e1cff0c5f633060da1b7d67876ed3675293a22cb5aea1eb594c3b8c254562b61a8f9df32e08215e52f801425d5be7f3381db2f462918665f47c46b93d13f52183cbd968cc6507537f3cde921816fc3bcad00f4354854e9dd411ef02d5c045803f48558a81f7 +fdb8a20406158689cf02d164aee0f8a9c87d9c06f23d0cd52c6f5d39522d28102d7528300954f17f8e78efd7452e4534814b002f0d334e3f2240825a508e0885082977264037b3f1fdb60608200d218351a6d0c1657d64d98eca70e7cc7e7e265ec5de749237616f330ec943721c6ed7e2c2d7114bfe8a72fd25a2863f2c27fc8c53629458540885c990ebe21d66b970ec2029136386aefd8b337377363fb24cbf573261e15ad22a1dfe1e81ec3d0788b30d5ea284977fea9aad14338c32330f +eb3d828b62878a6dbc8bbd95adbf1f163a5325c384ea6c4682425db6f9bbc0b92393308c309ccf80610bde2309209d5a2fa34a24bd3107598723120eb5887cdc57e1755a09dd84800eb5df83e127ff1ebc6d61146a608ed74187b3cb74789ffdf371a38be029b441fd298e5c5816d766184d2634fe60ed943388e35b71f15595f4998a7e8e9d959854224ac5f9bee207e7a30232615f270689cbd3f45ca8ec20ba2cdbde31f02590333ab1bcf7f72423e0335f1d75e2439dce6093da026b7b27 +d5bc22ba36352fa1ce0345c945614f8a3045e4a6bce3f6eb2d698f962da1329f696de2e53d3539ee6b0ff9ff54a9cb62ae9401dac32cc1ca566286d9e326ccd4bb0d1db71de2333c8f57d3a9610fad6041345b9640424c6486f9eba64c6732902cf92099a6326705eef714906f840d3e8b53663c7ad5219abfb504056a61667aa7aa78e8c92f836cbb0cb0b0ee09559a6c161945b7841448f6cd337f2e205b6094315cd81e867e1c4654c56fd51e0d3e8813cbb2c395eb81f05c760669ef5c87 +eda42cbf6e171f76251651b747a10eb7bb471c09013efbedb1cece52bfd00a4b5faff6c6324cb04b4c547d57781fdd8eaec8bfff7da2f2a9655fc9df7fb4f6c54bb1798150f157d7d4faaa0e9a3a00566d13a8b9096467cbde15c9f8fac4a7eeca6084c8f8fe93ec84a56bb8a0d8cc85b1d4da5670111c9930a1f61954387f4daf3c1effced9539f7af2301a395969d77e7b318cbb52d951a36759aac37e2acb52c40660331753ee6e5cdc36a3ccc71d97fdf47bb51302d716baf43e36d0a29f +f2099f14f21ae218914ee7e60fbdc11298b32e18680d85efb0b22c8ec1cb9e45dd2c4251f2a9e0bbad0077beee2d302de2825db79799b8c439c31ceef51870598eadb716e77dd236b55ed76793b53301eb2ab70971c7e21e27b4270c3e27456cb6964abb00ebbbfd7e76df42bf08df8130bafd0088d372c571bfecde899cf8888e6504694a20954b2392996effb5a3519e8e06674aa6825041fb80409300373ff738c4d38e769bcfa1b078921987e2f1fa06b06bebade33b1b41d1b73bf3481f +d0f4937be09adeb8517881d7ce6b272703ce8e89f9b8bbfcbcdc2f3d02e6a75fa6e35f02b2676f6194fcbb198b172963a5757be1219d7920cfd1d1db6e03897493425f024e66a4b89827406ebaac0cc05ab3e9cd11d69de67d4c9a30a9e8acf19e40a6bade07648cdc1818ecb98c481d1fcc685eb2c35feaef16d5dc3265521414b5d4fbb1fcca60d0fa8de6b9661fa31c0dc512566700a70afe2d9f51e1cc837cb31e7be81deb494a8845751f6ea4b9c196e94b2edd679bee360e83bc1aeb07 +db584230b7930650aa62f8fcbfc9005e1fdacbed55d04bf7c1962e14cba1463f4ae243cc4238d1c2ad0fc6f4dcd0a014c116f8d6589d5537922f3daab63af5acafa6a46f941fd8fde77fe3f03cb72c1858d1e7209da01b75176e3278dff67dbd341a5a0f924ead4f29d20cbaf556f3ccdd252b55dda7c7348ac6e1912d9f4ae3cbad51de8640e055d6df087ef6e518b296c3c972797b7aaeeab91455a25263a6ab9be0ec61378995dffc384eca71d75726a5ff6c9c6a558f6e0baf7b93f5025f +cafe308d4b04a92a9cf58ef0ed5fbca6740b5804380b37e3d003e16ad0fdca217c678072c3e3fb3a6d173db78c7cd01c3172b9fb6d24f578047b0b8f4f332c67ff763bc57057a739038a86f7fa02d24b50880044c9b3780f412111a6ad700c8c555238f77eea9f716c3a6e462b7b8a4bba98fe18d1412c6d7cdfed3822ec41eb921905e9bed4a46bb462d33b2dde99a2f4cbf163f5c124169e6da4df68135c84703ed7c3cce0a3da47cc28a16d84e915db772dabb7aabe024ddc3cd9e3777a2f +ca1c0ae3396d272664e2be800ce4d2e140bda8f13b6935d27b42f1be39838cc6685bd414ae4c199e71faf9adfa2aacccda6324fc236daf6e2dd9606d4920544ae63d511cb6f70cc388c413735b93c47457a4a57c48972eb1c658cff36efc1a40a507bf2adfba969f3a124a9e5f65f2ea28cfc7c8561fc5c8bf0956b34467ac71e5c5ee83f04a46e63525793057dc5cbf2089d2822dea0fc3c8ba442c55726ccb666d509590c90b29855a79febb4d66d3d1a246de437fe9baf1ab116c28dcf537 +e83f24ee14017aa30caf508cbafab6ec3016db7dbbd51d934cf3dc77e8418c41f4cd4fc9b79f6d71581c936cc33d6ecf1ee9661be6927f76b94e5af2425a4c29c433743c95e60abbfe8f993b6aa343f4f3c9adce9d727aa106cb7addbb64ec0372ab555e289911113072262e0ee8030af60ef53b171b52bba33898d98cffece3372c1a1c8fd27529934aff8472a14a04855b2cf4f0aa1ee2456bcfade4636f0a88efbaa13fa86b67f21eb8591d6c490c2a95ffaf641ca60d00d6366eee986a7f +f7bccf3bbd4fdd8df347c0f0460d5e87bc737b42c76ae203214c0d12151422c8dab08de07e7e9781d13db0fd496c6c6aebb4225718520ce26cd7c8f85134d8520b2e8280e81696baeddfc11c80117ff6721659202bd6b6c856cde25a58ec3abff13f20335bb32e18b87c68f8e56391e5b4e42074d94865119868171da58629c56702847b24e8394724e8352c55da2b185516edb0a2e7786fa8bc4164c66643fac01106dfbc46cc3c9e1f7906ad55743d53a70aeacd7c0485a28b4ba3e99f9187 +ee68f46a506860dbadaee431d2990085eaf1e8a8724f938e390cefac03d105ab4e342b3ddeac545c31886a7761e8223a1e2c5a1809c8853459efef0e40f9e031ead936bd5102a2f356d627f1407d8d217bd42d5ecf6ba3f40807a7e4c1ed269712c13439721a9d5852cd1757f02dab9fdc87e9b703b890add66aef52129b73699cf475e04e540d869dcfe1d1d34f3f4a21735844be8277096e22cffb2a64f71b8a19c0e622f5b4a7a69f2293a0ad00d84897b5e2fa10bedd1b106ce6e0557c8f +ffbe1c50ddba0ff24a69c2c8c45cffd582761cec34f4b6a183c3846ac17920ee568c67fc35b97165ccf03c15aab646babf61c112a0c96cd64919f7e3d9858ccb505931b8acab32c0688fffa1534ca622585a4c4b3d1d3737f3634f28524a0ac722108d61a1b3e0b816e0694cdf371811ddaa4d680fd4b4336014956671710fb17050c4dcdf87e9d92269d48f47c203d6e6ccb908a4ff63557b31e8222fdeeff8162774a57d12fbce701e9e98ed095e21400a6ffdba38fdd3e44746d724b57cef +dbf6a39c190a369df0bd8f9c3878ca2bd4bce25c0cd99ed70fe61222a4556214221d35cd8d4b9f4d042e8c8773eeb5799a960445dea530a872685000b25032ed5900d2f50e7b5b7775befb37af5591ade0679f0281ff0a3c5d0c3df9caa45f007fdcbcc92e9141b31605e2e95274f94ea5186e975632a06a4ff72e6c7257e160839ce64fd1923434f15505e7f292db97d23bdeb685a6f4d5e9488d580e73d78a9f2000b5b658d2d10a1e41a8053570ba99ea7f19dc9f2dd06fd5a563c84e0dbf +ddbfb26963ed71b8536a213c9b875e738ea71d3e1db4fca2a6f7a583913d8b1a019207dd957153b6ecf2fae2cf6cb0ac414ae7f119b709e88ce533aaa49b9ef29ced8a00a751a61f1eedab21e79121e9c7b53fe4eebb7fc2cca95c1713e298bc4fc7fa7fd3b57e7d15cff593f20b18e1f0fed8f075aae049dbfcc460062afe3970933bc859a99f957c27a8efbf0adf601a274abaa8c6d8ef1c9ace091b37096845f0dbdf8b01d1398db8b3d8c20393b65671eb70cfce9e7b4ab3205b43db61cf +f31c7fbc2496da3b3ed004a41a64c20a103101e073e515005dbecd58e9acfce1f2ecf047d70e487b328ed39a4de786a355f84ff4a8964097e45d1f3790134b3eacd1cec48b75e9040f25284173a23cb880004fdb027351eccf6e1aba7d91c808904e0d33d5b6f49bbd64b8271520c4fed962aba8426bc8884de0f8d041facbb90c56a60dec24972bb51e7751ba77f2149faf582c90838999fabb24251a86b9c4afd9c19c240cea864516354e69ec7f6e7832644d4a0676169c7bcb5eef5d73a7 +f7fa75f578a9b5eba619637dbfc427774594afcbf8dda93749095e4779581cdf23ca1d7a2ecdff623ee1fbbc1dabc282617cd24461f1d60cbf9687c031702647ccc2201e3802419b3d6b119b9dbf179085367e1267519135f1d054154c38ff0d6adffd5aab45c06698eb220e9f398a7a8abb833528095a95d4ccede54d687dad77193b28609a798e3a4cc582757d0e00c713872752fbf7e11b571d9626addadb9d525be042d0f9f740edfa5b22405d8d595a39a3f448c2af0e39392c63a4e777 +cc14f1b4057ef73c669ff99324d89645c253f61088f9d96bf6a8496a0e853b0ca09a508cfcd5092d9f1c90ab0ba67db2f88f564516d1bbc7b09e729bf502b273524793d669e17834ad3db5625ac549f958fbcaa888efcc3fca868b156f005da62b783bd2fc899cb70f0f2eeb287b8d9cafd52590b366267570c8ce4a23c5139a319f7032c50432a4bcaed10ab709815a8e6972dd17c4cf27d367d209bb0065a2a5a289f77bccc397eb64c8d012fdb0bcdb0eabe475268ea56a58d88e01c186cf +eeee2c779e714cfad6f536f41fb8b49fa9b6756892f4c3f9b99d7a1bdcedb55a73ef1869ffc25cb4f2b1972c476e002f5bc9db735ff1d10c39045a3bb002f1c021a4f8c5fe51225345079455d63ed9be0603ea86156e5f184c8febf628a4c4674e713661f84ba7e0d8917d26a0e7310650f4cd33fa9ec2f0c69c0cb0b325cea4dc97e10fc9c2c26b82f89cd23ba8a57765aca2d3084871a924b12f22d671cfc78b5efdea823c5ca67e91b54321d3ecb949d3dd7202f5be24a99f3f656697e2bf +cfe3582ee7079486929593ad71a5b18b56f986d1b30c3bd006f4fb38ef566709ac04244335c02b32803171c29dedcd6bb5b960347b18f2b2a6dea2b4f3609d2f23a6ce60d1fe9c3cec6d6ce534e4dc3a3df604ebb1b0e8f50075f9d4612fe665aea9e80e536b7253b370090409594076bec96aafde372629c7d293e5eac0aee80788d13dd453a2b4e65d4668ef97fe8a5daaff1931c0f9de9d789d5a8c4afbec6399aef2f04630b6edae6bec886568347094dd97cfaddca5bc08564709f58d1f +dc4497da10c9c5629f0fe4eacc5612c802feffb6a24526038e7e088aa548fd3393ca24f8fd68aada06941b1738a4ce1b41cc370f959478764b395943d9ed3a3461e3d1e449f6a48ddd0ede007afc04f46ca305b1f87d200a8aef9f1474fe8d6ff9d57aa45aedb151fafdbfb5b9039ee37d67a059124e79821739b36c3d1e16db4183073219441f71dc9743ca4fd4c240c7bb04aa171620b72d38c924160d285616b66c3b9bee1ea080c5afbc281932dc41ac22f6311b36a6b12e890c40df76cf +dc1a5d591496b008e730c3ef57f2deb6d0396cf2d14e9ec236974f1513ef5fd93a2873b24f21333e21c8a50592f51941f1f339068fd39926f223ecb4b14788ecfb5867a555b57b8ec0584978eb28a265eb67759f6493fe5963cbe5746b5b31e97a0bb20f8f8e31e7fb340d7fc05750ca1f2d0f7cbbdb7a2635c7ec71e1306a5e6c0e8ac673c7f93efbcf777cf8af7536c1697168c3feafe9e843ee4271b817cf8b1329d3328ce9cc05bea652e5f3cb405e57509907eac7ced294e7c604d063c7 +d5fd584644fc4b97a5dcbb9fd35056f66204f444338570ca551b6c4b7f544d1891e9982799d1c40e4b506a6c9b73d4029af5eb68190cb22e779fc1184a388bebf815fa2bad531e07faa7631de84b173c74b0d5422935712f6607d64830b81e1c16721805e5f58286bdbb46b043fc735fb46e3460808b9c5bf95141d3327bbe9b02e8a287ad673407e78b0e6e8fffd9cf117c25b30188827deafac125cd65d585e27f697b0b294feb84fe8d8c0d67c551448244b898fa64f5fe79f4bed4201d87 +fc83bd9fed154737c6eeac1fdf9ccadbe1a2bd5c77250b136835f4e8a34e099e46ef1d66deb1a2f7346b40a6fd5881c63cfe8e267c37c49f4e27c5928a9b89b5fcc951fb602fc72fef2d4cb98dd412a3500ac797ac5724c03bc2ad6eb2e2a9d25974e5d2c299b7a05b0dc839572eb058bf7d8c15862ef9b4e1fd638e9e5dd4f9d024912ef4f2dffcbdb851e64dc667a4d5b547ee03aa279f41fcf6463f2e471dc744c2a7fa3aca6e4e67a01b21ecc5846d2c8d62d45f94033e8fa263486bc63f +d1f58772dc3d88ac27295639230a9b6e0771e9f759d94ecaedc523f2b5356e9cd8dbe380b0ae2bd6da0057321b41bf936d1139aad813c1669bba6ec5a7c12f67d2f45ba7dd4d44c40c136aabb88e5935e2f81e6f2411baaf3837b5357c3ac614975c695e319592fec1572f35060aa06790bdb4e190c6881d95428fddf413d4d7bb2ed759bf15c9cd22ce2578d3e75784c1d1b31b27174d269b0dbf409374488c55b355c429515b00334f3a6892b0566606e3a9f8355ce205d8b7f8c9df8b3647 +d569f13fb4739e9d349a80f02c6b691ea1b0da91348b3d39a6efebc41f983cd881cadd833ac174696266316fee480027e37b5af08de7d40361e5538e6dc95776c1e06acfc8d0676b608b5392146aef6a937730c1edfbb5509c8ad422736ce8fdc4574e23d0fcf27f879aade10335bd2c6989d0c5c51cd9bcf53c9648a99b8f00b5172eba5430f0018261844bc2d792a1d68afd49b3ee00355fe74fdff797e7deebf444defc8219d92211381841f10a4283189a50581ef3bbc06197b1577efdb7 +ef494f7b3b6ca9cc2ce8bda6aa1e46aeff3081b2dc1a076f6e75af174ee03f31ac10aa0d6407d022c6bbc362b4ce462eb8a7002f7ece5fed2932d513e4c2c6e383aaee242b6c4d72a00b41ec3244f3988d7d4d7da8560bfa8756d3c794796e5bb4b42195b1918a1528956899df1ace7190e60b784c2aeb1ce314ecb3a062b5228ecfdbb03cd779a6a9501ae49834c85cfe420389aa5cc59b7a5fdd327e1abb0ebdecd4e8564266356a71f8c8abba0d255c33cb0c22fb15dc9111f4d1e10009c7 +fff405babe89202912e337c2d059fecac81376f90ba4debbe54a63937d11e6a3fe70aee36e87c529bc788d45e22fbaa3baee128525498b54367de6a11fb65dd2bb888400411f814d46275d0967dd7de87b0f5951665d681fc5000439f72032c863242f64e61db7126f53d83693e403105823f8e5462561ad218341f97b825d810f226d5861becb3630177f14c8da72124a97a8d2df5ab6f60ae41c8f727894ec1430583b0e54695ca490112eb3a3178f7cd541fafd764807de867d11c9ae834f +fca764e0db74501fac4c35a3e7961b57567e4a1eab4b552af549b0586c4ea5e53d10300e8462645b14ddba51a5b542f400aba4958202ca40d025cbb941f838e13a6c6052dee06783c1308595b4317c43c8249e2f07068f9d6b54351895eace5546f03e1b0ac569606b45adfec7c9012d98a3098811bbabaf758f2ed6ceb0905d5ac7837d07fa4cb641b5043de18c83dfb791f33d5ff6fb47bce2e2fae49d3b49f5225402f796e5874d2b02713547d24a8a4e3c9b85fc7a1daab0ab7274926d5f +e572299990efb30317259aff6e4743db6725d8ffb62e72106abcf4d9dafba084aca1609f3dd07864bd78096924bc4e2ac89961790a166d0182b55a33071c86210375c792aa430e26081424d964feb4233574f44e3eaaa420ad3d52af1bee9e36dbbd4b5d55b1d527bfe673553a41ac596dda1faecdb87b7b5288fe48c7b8544ab693adf7e09258c5d09c6d9174714f1ce92c34ea68d423ccf5472e845eef36f67c6956fa23f8640c6a805aee1dedd356dcee096a73cb9c29043e499d4df032b7 +eb8f0f4a29b50f90f453c35734563b66bc82edeef13c6410b3bc0427234c6b8fab06746e58f0b890f3e7a9b5c9b5c359a824e5d3cdb640d2027606ae0e2e864a0310d774a4f904be40f749ed2d08cbeafca20aac6e4684f4a2b8f5659e8eede8dfa57a2840319ec9a92fce07b6d09f1a5231303920c8520bb91917dbff2e3025d9d9fb49b77f0461abacfe869891df00bca6c8203f22722f8456d933381f47d6182fc64dab1116e85cae6fddd4a56d6649d329803fe0261d9de1ffd7a18f692f +f40135859fabe2062eb9281e26c4047935c0c24c65289bb7ded8fd6c3dcf3540671c096fe99af0dd7c75f7ad240b0458a7be182303e129e9c39d6a715712bb4597d0f7121d62485ef8d715867a139b871d34ac948f665181c783cfd6e0c06544c258c12fc835ea79c78f5120df23887f052e1034ecadac6ff58c45fbf367de00b5d1ffea0619cc3bbd307c359c8cee748ae267a565f4762df21546b28506e24d6c14db5cc35ed02d6bda107fe2602a86d31091b7ebeed2857c6f01041a6041b7 +f3715595a38baba2e874181fc9de439c3a06563e2a161ec737efb6dbce7a1bb728ddb60307a4e0a1921fb4dcd96ba33a68ebbd2130497fb3c7cfaf649355daf6d96e942017b5f0da7c4bdbfa41f72c4f7aa7e9833bb4df163cd0f7bdf91ba88eca83ff4b3137f2cdffe117b10748daa0f6cf069fd9f6f3b717a7bd1ec8309272618f031407503bf64f1b228d4344c09e6ed6f9974fcac106757ac6e7088cc05b05bfefcc700c71038561eaf96d3c39b6af0118b3d0865ae725405ad65c1ac05f +c79e85af81aa291a9a2f652a92eb91e8d188bfe3267328782f3d668f318dd4d5d92cbd757cb267926042ffdbc7dd1516ac1e85bfb7e79a9685776aa9c0e2758aca37dbbaa1de8a9413a1a79d8cd1ea587d3596910a85a99fa6ba6981a435851f55991849583caac3cb3b2c6eaa4ad629b2e81f2fcb2275604550b2d6c3d250186ee61239ba14efac61197c3b437c51ba4125cfffe8fbbc63fd7ff30bbbdedb481f97ab13d493fe7cfa058c28609f77e61177e97b13531e8563fc7e5a2d4b595f +c8eda49e2fb67da97f6f13b0460521bc1e18d40754be646a464ee75c441881dc09f918c43f906bc03ee47c5f61cc106c4b577d262ead9e1b600d5b98c25edd09fcbad1668679775269c8fb57e507cb67694e77987dd7417423afc08e8bfedbb19f8c70eaffe4e24c12e09e4d2d2bdc5fd63e77c725d48361df117cc4e82de506ab9b127ab9d96ea17e42be457ead5896e7ce119683a45e6185eb0f0583426bc2377f0905419311ec3498057389b8ef268137aac74f25f4fa67b89524a939af37 +f67e1a38af6620810758f47ba327ef3ecff4f46763137908dce0a8a6978ec93bc4bf0b161356f9e3734bd66a7295114e6151f6a2eefa7a3b919e8c8619e3b056a9c0acf6f06a6472d557653c0b126b722e1e5455fd669aaa9e7af96d25a2b790f98b15857daf6ed46b43c1f52ab471b55e2dc04c3f948290c119e91a510622f5550b916abaee2f020591b215153ee19b9d5b4f523ff14bbaf896e64027f0f9bd91ee425fa29df3a0dd43552817ea92ec972be8d250d844097c0903ff2563d957 +e922920ebd2984beb0ee9721ed02bf42a0ccc078a54cef35a7dcb79cfbcbd8fa21353e937ad8301ab0dbf989e98ca91b1c06d2d958d7daef1f35132999e1243451ce77e852ddc681dd86db95dc22953f1b4c2f80201fb08a89964f958d6b75b9ccb628d28ee48be9830e4007b22cd8fb985c21f0a57fa0199aa84e87a5d508ed320dc0907a441f329614fc1c0458120ee522e97e7a324d29047c2e5753e9770f836b621bfff99c9671d38fe7245befb61c98b99adbc23554211ea1f1b1242337 +e31d1905ed0c1918bd8fab7ba24984169149f073bf63e834258a122139237118c01cb97c201779567e87dacf44bc62059ed82960a7c3548417794998338a1c4fce97e42215bde27452537a17f7aeb6c7dbb0cc68c1aeb028837edaac10c34a7d33f5cca46e47a570cc6d383be6fdccb0bb4185d09e41292508d2730d00ffa8f7b90c66c9b467f911f48d0129d0ed24a999877468ac9bdbc57a47424e155b399413e4de7e57a091a746e569736cd22d29857897c1a300e8f9302fe69253d6ee27 +f2e717e0e906da68c4031a6e58b59e2a5c2b8f60bb4b2487e7a35750b91b65152e09a4ede9e09806bad69980de8dcb9bb9acdb0d6aa6dc1030f859d88aafa7e99b520c56062120a6857932c90cb0f059764f6e5f8b8d67f1c4c3a7bfbde831c52312f46835ef2b28f698890bb03f9d4c437f7caf2e9c40c8aa9b0a586dfb1041747bf4a5759ba87121386d711d428a28e4bd7f6a0cbb2460d82868e75fae6d9540e1885b9e67e890c5f04020116c20fedef75bf283f0f2dc19c87443a321443f +ca13b2bc3952b8df165144f3a4a685a90822ef79ef63343e4f72fc303c68c7a77773b06e3ad609ece1935bf096a5fdbd566f0784b09dd271b06937b7ecdd21e39b0bd78ac0fe47410ebdca8d98cdb1ab2d079cab905563f4696321a7b3e91644998280fc92717cd90a2c460359289bdff5521e19eace17785cd7297caa57ce6f60f0d4785dad0c0ce139cff9ce83067cb02ee17bb7a6d7beb2ebefb6dd8b137b66a1166b4c0c936600a60ab16261152732c31c4e0d82ebed05112a106da4166f +c281ee98c6cff25f2f59fe7cc0703e777c1c63f33abe834e2ad87b4e2f65e6fb993d53b592da21ee42c0e498c66cfdd11827ef579ef5e5ad2dbcb27fd1f266dc0817d66004b64277493d71a87c4c786d36abcf2cd0836b8ad8164c7e2d0fb309a5154af0cb6e7b4fb4ccde2db6e7d8c6cad268fff43f2be80fdfcaac69a2c2753539478031b243c9c22d129e0d2ac55c3470727e57e8ea041caf6653251ca2d8829c4a8e5b0d6a0b660b88279e25a275017207d1874c06f12165a228f831e9f7 +e98cec99d24dbfeb7786a3dfa6d786cfaa9dbc1f4b2706c0ecfe13dc560c42cefb9bdcacb9586854d673989e46ed5f744d91aaf115cd5bea5657f643c819fa88292eb62b414b288ed20042d6c5642577f7d78bb45fd4170672cc4a73011811e7402e04ec39ebc32c410bd133364b7a7e2e5ff9f1d8cd8c66ec5a6414c122b8576af35115ef39f259fcf0cbbfbed0158ce36e52365559f43dbb800fd11051dca6afc00c666871ff78ea1c73fd874c15bd42e39891da1ba878e8aaffc398c4017f +d8dd0698c83177a4c63795c54ae3db66117a1ad4063c4829ba3aa7d166256d4bdea5f62e9a6eeb434710d7c5734f26adfe10b062e9255426d208b7dda0762f073b5e923c9ff039657003f7fa38c6b73f7accbb123840593a6d924884a67147fdaa49e0b238416342860c436f185fd07d2eb674bdce53919fe521bb22e92fdd1b4b70d0e4c54cd8abbbdc9a286dcdb8052091087b848b05cf2744c236ff01295bea70d1ac18596f47c7d9fb74a00cfe89a9311da755163d2e16a06e26a3ac1b6f +ff658da10d23c8d8251ab77d23e7def4b1f5a14f1fe44058e418ae356b5469c0f6d99c3b9e17b42aafb59ee116cd48ac3dda0d986f21529a0c1065f0869c955f3889e64d8635d19c22ac67eec96526146ea446b3cb0fd17b7c9a9e062978e38d8aa27fecb588c3bf8443eba49662fafc91499d1c843c3a4cd452d40cd104d85b1b4f70e8fcb0b3928ed6a31e723a646b360c354d838ae9a0b7c627c575fee4008533b3fc3959358bcb09d38b1913d1b4133296522599523c59a3661296f6d83f +d183512efa3abf8b445ecfcfb4ece7d1751278661c7b48e125992a89bec08ccce927bcc1eecac1303be12b88cdb73b2f1fa1dfad8b227a9baa5dbe8127446339304f1da96b4eb8ab971e5ec5ab695742eaac0eba1823d3cde433d6e124f6d8c9eaef522a97e37dbf900e53a504ceba0f4b2936fc137d4c26cb497c2998426a1471138688b88f488f53408a16d3889205f04068181b22a7771008fd41739fa2584ac2c23f4c661f43087f294524ecff1333e60cb9109329255173289fadfc94a7 +f478f8bf257b2a0be053e18bce39dd59f7230481d30791b535321a455c77289872053e392257cd705df61197c2f14a63bd91863a7151f4088c7b0005d4571549d4dd38c9d9c0c8213bec570effb155f87d9c332bf19724ef84ff8fc2c88c7b0a29caab0ed9e835be53fe92161150381ee97436a21eb1cd5deeae2dc8c464412e4d28743d91dc387de020e291d2e753dcfe606c2f04e0341db98de58b5cfa677a08a25a197fc23f1c003f7773042068c831411e55c1c41fe05c0de331073b7957 +e36de58a854970e1ad2a0a2f4bd6e3ce374c1d558bb40e99e22e524bbdffbecae034afa6af17475fdc836ee901cb97b9c4865ff6f264d72af91c5723e2bbac46169dca07adbfe26074ca7fd1c0b9e09dfeb61ef88e89977c75e8f79eca240332f186a7fbd7901e807e7474d732b1c3f19e95fcdb19a83a8b813243a0b9d04a0a6f36ad4d197362a112075e151750145f94c0bab68e555aad1a21038509d5f608b3a9787565df4b67367ba7b568fbf94ad38cac49032552e6e2b028f978f01f5f +f970cd330c1f79589ac50b13042cc9537b91ca48218186c54e0f6ca55d7eefec0db251a76674f42a3dc649f089dfd0babafb3f3da8f3c993f0d0caf76f752a2a87844961957113383ce4e679e63c6b0f5518bb2f82873c8c0bdad7a7ee335f6cf6314d1af79d38df943061d63d0ddf7dc81d1c0adfd0135451c9a7b1df8495242d8d44aad35f24ec2158b39e0755d6b7d8ce0b947596cd4d42cf9e5b16fd2b3deaf7389935f6cca60ead616e6b779ea1b41aaa89058ba0989e594ba875249287 +e31c931672a849d30777f3a22e8f49b41b5d4acd2aa21fc17749dc2229337ee5ff2d4711ce7decb42289ca9d53851250dacf998f10ab25494ad673bda523467968faa4a71517e412921379ef765b20d5b5dbfac9ce595eb94d994668cb56a6a009afbc44f3df7e2976c486ac02a43582eb8ff84f6287d25377f762f0282188a46def98422023f7e50cb1d99c848439d1edd7b6f6c8e014f72f7257f579df2d8c5e6cf70df7fe45d5de22e0315fb3c36ac46e5a0fbfc6c2f4da12e851ab42378f +f569561cd8b32dcea53013a5773bea8cc44878b161e2f65763431e0fa976f129a50143212c28821e220fdd46bd6af248cc0f5f1fb127d14744cdcaac524357241cb2e17a8d7c8a8718d455445ad4dca266d3040774b7706f1a511e178721c94bc00b7334f69ee43b232bcbe7d1ff48327ccda4b45c4c1c1a41c3981862c0387847239ccc2a2987e74cdcf52c62011cd5f9a309d9f2e733e0b045e728048223578183f7ef10a3f10f31ca295fd6c4009851221828e0adb2f4e72fdc1d89640b47 +f1aa7cb2054712bb81b70facc2e8152e6848470de01e898a7546f06c5fa59b1de963023934e15fef31f842a532a1c4e05155784047a1608acc7d8bad80e9f8c10134dc7a27479e837aceb1817229a1955e71a291dbf9d5012f56356e32f30f2369788aaa841273765255aa3bf798651dee90c002896e778d216f1a98205fcfd395d11d73f1cbe41e51ab12494000e53dc917976118df2a5d373dc376c2302ba718aaaeb97c2a653566a81b7c227d5ecaa4004d775334ffbac48386fb6a455a27 +e16cb68ff58de3552ec7cdc8d8b7f45e8a491175d404b7a8a4dbcfb916c213d3c2a59d232946c5e064e864dc232c96cf57817cd9bbbee88a53f60a34ddd8f0872bb2cda74722bc438223b8e36e92b9898ef48d74e966c81179494ce266179d156729e5ace87ea2835f9edd1f122e83a53c4e13b14ac3f7bd6bad2e2aa556ac9533e729f4b9a49f762a7fa44556fbd8fcfa914ed2d19fe57752f13a2442e984edc691e1da6d17c8f05b8d6aee6c8f456486b5c7bdd8cf11264c98cd35656cd0ff +e67bd885f4e67d783737550786f3d300f5b9fdcf22e92c808cedfa6e714350c1aa51c4cd650a2d649b5dba1a8aaf4dbab36f7fda9591356439c2da83c1fb727127621d0ac6b1bc9bbda741bd87cc0bd2ef0b3cd1ea2018271c9b126369fd738a614fcf1c0338bb92c83e0c35be90dbfe4386377fc01dee8340ed76eba650ee22d0ce5a70bd28f2195cb7ccce00e7ace409b5e8700345d095b7dd690317335bc68cf8e3aa65b23bd5a7644fef634bcb1094ef5d3a6eb0f2eb158e50796ff4c417 +cc8b13da3b8b2269b8b331b68281d782de650a288fbc922b378f79dd26217e1ac7b6ef190188ee542e88ad5bc3f0431231b3b01fe09346a3ccf30a206757abff13ea726c937f991fb5bee8105a3980156d2de5c060c7c08e261919d043373d0203df11c4679b9bc7a5bda3c617d168740f67609a9a56e4fb39780e8ff4f9764552e8d046952e16d8e3ef79cc6e99e49fcdae0d8267f3d30491f89e5faaa6d953f7b884db980c13c4b18f6dd54cfde6f1c5c1f1d3a7a3dc09046d0a9e77a6c2b7 +d9629569855dd6b0adf04eac28410e82a5f9d3e966b4475b850e45a57af304fb75842df4a5f0d9e2c512e95f1384236e9929d54909174eafe6956e919a70f87f6be1ac567fdded2c24b5557126469b0df56fcaaaef64d1da156d3e7e929ceab611924fb07c6f76dc4b8dae0eab5d7bf81bb520e5fee5c7f1db6cafe1ae76be1002c08c2e085c70b353971eb6d1c8bce7e8aeb29d63a4c4ded60540db8730c9ed1b7628021c35ca41b5c524b98a184a5257550b22a0bc838149092d0854777bc7 +c3d2b2916afcb3219fdd4580aaa6bd93a6befbe68fc5abc0bd4383098c78694ab6da17412c57e00fdb8f7431d72db696dbe061a2df2b25876112253e5cd69c47fe1dc903a33ee1250998825238264206ba31f1c9f6491f6887d30c78ebbdb05af9e9295d7fcc9a819d09e5e367dc652243a0263153b5defdaba26c92ada2f6ac0f9e9fe6c03c3eedb31d4f6cea34fea91fe92c1a6b28fd83e6f52b00c2728c5f6ebb327391cc4105c6ffbb6b59aa6ebc921606596748224e216b1e4413676f0f +f644446bdb77b766e98451be118b47f21298f298edb1a04550faf8f4307622e60489ed27fe3923f31edb8cf6abc6e8d8c412f37f18d27bea619f3885c269516f4f00e55e17bc59a9410ba62c6d365d62da0ba1d3a954d80d091d8eb7759c6914c6cd23241b47821b587f3b17edaa6fbdcaa192936b7f111a11aa5d1836dd760878395844b196605f4fa9d1b023ff802a7192262c2bbdbc3525b03449f344d152da2ff85680e867c69e4203e1fe0001612732afbf24300cbf4f76b58b5bc2585f +d829f02e45b14f747c417206ea37d83e4d7675386e1a59875ad90123cae4deb1a03bbee36f67b696647e366bdd8ac1c2432610026ca191625a76a41a1db0652de84f019e5c5b39198924415d995f7f551dac90f20e545f70e6ef14870344f4f626902803f6cd114473f47ec3b2dbcc938ce109768623a47e4a6ae804f14e941aeeb7f7c2b1b4a5c8b14a5321b346df1cdfe3d0f6623e3bc51ed69452317b5ffdb0d20b2084240e4dfde975c988735f4280f61ffba90cb2405c6536e79a28f407 +f81f3129983dc52c5d1fabf3b0907163221874ed98406208a8e69e356ece13e8d35c962078e815eb48fafdd33da868e48ead85fa0892d49a935c7577c3aa7d94dcb99e51a09f7d7cde1a20c188ce33e4360c3c4f8ef3622743a4ef9d9fa699ed5da6e3af47876cd13d505dfbb19fbeed2130a4ed44deb2a464be7fbc7fee2c84cd29659c871c8e0e35483354116fba35834b3cd61130669ea4d132d1d5558d6c727afe543a73a95d63dab08826a1346d0d3cc4a97df4d9be70f57bdbaa46e2a7 +c93cbedb3d126c50c14a4b56f69001955b808d36614aa60be01af36f44020da68595e936071a5fb76a7e54068dd6b38d251f52deb43e0427b7c95803fe17cfe35f1d3da75ff2a8d5852b1836d9c9a07c26a613aa180857420f306a79d5528dac31fee03579f74908fb4444c8f55cc64e47cb4e0aa7173cd44508e63a6f8f7f847cbf3ac7d0326e44ffb290c75698e991ad6cc498913d0719795459aa3229718b9c499915e6b1e8a81ba2644e636403d9073d5da3b8ccd6a9925d19c18978d16f +d77124711db344b2d6c72865a322234849635ba7bb9a816e492392ae3250efb37efa12390e8f6423ea53c281f17b74827730935f61abb58934387cf27f894c18c6ff39b3a006b68e8c27725526e2821113b07b85c106289ab3df2973652a195c9c4a9500b35279987a46f26d9fa47e699fa4b3f767cdcdd44e01200362a154268ee6280f85d6bdbfb6c37af8b7e2805b20100833bb2e19a225e3ef6b3937e06987518f66b1951b5e4dd8c2539b61c09d8be1959fbb3948523da82fa2a1b67d07 +cd205d8a7d51ae66d87f67da369c9effd437f3f34a34b9ec36eabd2f845a0d7ea904fb10c17580694c6666f79f26b8e9e8a063f99d4d491848e052cdd2b19652c9a6a0ab696aa61734718122898ebd48cec4f16d3be9ddfc7dafa3715e978c0de90e9a956fee1fe73a61bff88bfd41234f14222c910590756c00747b25b589fc156cb236f2a8dc3b2483e0037c431ac634f658bb2a287e438e1142c984697cdec6c33ffa81e152384e18dfcc1de7ba12963b13cc7dea8a353c59c3a3a96bd637 +f72e222a23f4b63951347565021fe1322705c3ea1395ff3b9217e43916f65611eace7e004044a5fad5690e031c8b8fae20942b0a59130ca7d5807a76007cfe76c62f3fee29fc5917f09cf1faf6fec0e817dd961020cbe04eaeb24b9640c3ef3c250a9299a8e0bdf9d04e0f3af5f36feb43693c90548902556be30cc26a3f4c4562685711641a7489acd10450ddd4d7ce2e8c79394c6791bb9e2252c975df91024b4b92a102b0fac81826dbab839cc303607aeddd333678fc73102c24bc89a267 +d730eb566997edec5e974d66ff56311f22f7345b397c8cbee171acaca152e057884e203f6f757eb44efaffa3d4b16f005a2822dd70e2fb06f242738efdbb69cfaf5fe820e44a8959e68b8bf9940459ec46d82663990c92933715c8b195fce7f3e91ceac1d0939067645fca9b7834699b117486714dc3de8a4d4ec7fbfc7b785d5f5cee3898918b822d40a94d6fba5ba3f155d6a4194d5b587b361dfb3dab831072a9f89909a1a574703e7436d10e440a9bb9b8640eb3b143a0ce30f6fd8a5ba7 +f724bc867145b97941006ebbd91bf8fdb60529a5f76f70455b3aef4f0595cbd931d47c4886cfee8a2ae3b09586911834ae2114c598a18271e5e57d765d96244edd3e5a7f1a6078a1201b3835997f77a47f042c45a9b770401e607731e464512ebb9ea5efe6c4daca5430020fc358d8e5ecf4a55f293518268f91096e0e1384d743e0b1853752382e364b17cb64831f625fbadda5de64adbc184e4459cbcd7265f6f7ad041a5ca48baa2fcac50fcb5627024b715d007937a6321b61e787df176f +c621adebe51f2e3bf1b72feaef8a2180c83f81389e3faf43576fa538648db27d5921a04c8422033305a5993fd5b4a0274106ee63a33f87213e257bca9e6caaf5dd6c6b006b4f6ec884d5a7d29db7b670433f47a7fdf15edc339ad083666c255604c69eecf071ae511876fe7de88f1ba177b8ca15914181fe3dbf43c062fa0e3a67a16626a26c770c428511dd7cc03ed1c9b18c6de0b62936645b77064035a730014c5cb587ef5146e99447fabc4798a83b2753c99c4b6cf1b336374fcef2383f +defb9f6df0d4d037a9633bec2ee3a515243d1eb94c88577d60eb200fa9cddff509614f286ccd63129cb9d5d6afbf7aa8a8dd2fb79d2b01cb8600767c0b543f5c5e6c185762bac48ae36c976c461bbb27273a736788935466d93453f1b5721a7b63b980a5afaec945e5241001614f5b17f09a9fcb8548159c40e33f8e8fb8df0f2e0e3df8f35278e3868113137a65718dbeac0a42217e8a1d2bb68f2ebc8062443b4194fadfcfff543aef604728db116dcad3cd032ae79c7140251c1a5b88cc17 +d1b63d3efa8245752b376fff2a22644c6c80b23bd65467f7e998d173a1b181d67064066a71902eddb6605ad5f27c203a2d567a3f5098230e0937948f69ab9b6ae95b344b86e493276b29ef0bbda767b7241e10e2f695ab4201a59c86504f3a19feff3b2e6e3a7d7e0a280c85d55058bf4c98d526775f432ce14be920df50f0b746a2f39cc2ce20ffa73fc1f3350663a863974a7f3076f6c3b0038e7b89bb265b5f09c0a52558f462e038456b827129163caf6ce5a6544d414ff610e0299455c7 +ef0320f694e8051f9abc00b86bb41623e3123ebb37114574dd0ec53d6e41aad7ee03b2f511dc6a57c881b4ba20a8b51b4c8c9cf240f67a991ca52c9824f65f89864ee8b0e30145320541636b08ce5b16255ddea59d236b27b898e45d40b25374c18a623eccb1245be9b84cc8cc0219cc6f1bb5677b1f7ad785a635e43a4b10264b874ab936133958eda71b26df39a58d04c704f6b5aaeeef846b3346b42f8b487584acd91c965c8854cf6b574efcb404bde1aaf2876b981e277486bb694c760f +c49161f6360acd25bdd8582734376d87e0cf4d30edd65d3620d285b42f8322902f110524ed760a23d484ba64fe65a33bdd2af74f1183a03916093fd0a499eb8c0523251645910f73a87abba12f9ef74b722cb010f8c139a16030feee32b73ec2bd539fec40329af6ccc4197f4bf6a9cbc9cf6772c85074a1180171ac6d72564a1f3e0e793fdd137f6b67207004f2531eebdcd17df91183a436e81a862ee30d4f1aa75af4350ccbf156ca07df5d953b57d038cd95e15e3123e477a4c91e7e1497 +e8ca7d331fa5a5adbf5ef1b1823566842f6d50579b1d7ff32d0b62bee8ed0aac0cab24129cc739d9770279c246ac18519a656495fb6057be3008b27e5f0fa5a8a50095d3079163eae2a1e5df30dc47e21b5bf8f8d26a290136a61d6892f6656f65981decccc9ad1e7abcb5b2fc43e20cd9ad861a26f0a6650083d28879a063ff9a57413f467e64da1f303e815fd969bf77d3fa0391915e24312ce48309adc2240ea69cb1546a93ea8e8e51cdb293484d51942df0ae39c09d1137bc6ef458ac7f +efef176455d3823c7a1a7af5b4a7efa74214f89499b453139716f90bd22f148f9b078aeea8ed3ea0c53c1709d6a9e945938174871c89a270375df16a0d4b183d11c1d606e18cbf348b64e010f61328f93c4844933d246749e102f0ba2d80575b9ae2820f8a087e1aabf43b9dbd78a9e5bfc446faebcabb190712ae1543d0fc0b4a6b28f29134285e2a6cc605c475669dd0efab00bf5ec4cb48eb6814d44064e3fea2937a05c254d6dcd544a8df9f450464cd56ccb7f12d5c30cf50c43af556ef +f2017cee6953db11614c862b81ba56e91c8d54cfb2d8335ab26ef8d8db0c3c58f4d1d4887d1b9898e1d2dfb381c540cbd5426d44ca51dc8b74e2bd8c3d0956a3b54082dbdcb727356cd8083c00787740541a0c644fee73f5a9fc3f0ae964a40f8ab1101c8528f5cc7652bb25c2f4d4701bd8abc982ec8f18c8dc90b0451b5ea2e507ce2f0ca37ce8870377137a33478dfc05d9eec5f9a6f0f98f121becc93339e3702be2ec65ff25d55409eefa7549d6f515e5b734a9d9e1a766d9f695ba08f7 +fc9bb14169065ff6f5d830da29803ccdbf77954bfb15d98cdf98ee4f2028e9ab951110a80059cba2056c63cef390fc88d115625178ee89ea3904b470219fd72cf5951b623dcf9c92421d37ae8b8d6776b4ecad41cbc12f9c11eacfab7ce68373334d78733d08bda58a768efd841bace39d8a108c8aa7145ceeeff4df64ff00e6d8e22a6d79e27aca955cfd27e6719105bed65cd3cccafe5134dd868e474180e705399220f429d7fe28c60807e0875c1a8c85ffb18e2c22f9e7548433df863847 +facde79279419b51ec7726288a4dbecdb9973a672703be3849b02bdb668f3fa2e474e7a31e448299a41958c5762bcc531e8eaaab1d342c91ec9af11742a8d0fd382d36b4e5bcdc0188d05463c7dc4d4add8572dd3f02545f193d2a228697d78d5c0761a2077ef82755796c370f710b24780d2c0d62e1544cff273020a56f7b9a4c88f0e7e14296a49cdf96c6c2083b89c57d7fc4fc1cc228ffcff7129dc012628dbc7bb95005290c1cc1170698f950fa9a55fee186199f48508fcf5a21cf9a1f +cc4c2a3840d42643c9b862e42ddb2502c3c036d7ab44cc162ce40a6c812c1274957c01d9f60bcb375a2ea5793ee8cd672b4f6cc73a4a07b9c1cf69f84c9411a181730d0babadeb14fe500fb80f4ddd36fa369b8455df0a340736d133863a5d2c77c44f3c3960bd08605c6adeef42d0c39ff4f9651c17d8224cd99627513f790fbc8db5de7a85e7d92613322c37c5596ee5ae250c729bd7e5f46ecf90dac76a37e5efb513c94351e9bbc856c10e24185a39e89ea7c49d5ea080bc0a8827520287 +f3d5e75c107eedf9111cf3e70db268f4b2dcd2b2344d528ded12f92cea676ebb7e8ce7ae6229a08e7073000b876f9a21daa82ec2dd290382cf2425cfa4c69e5705e6a43660d4c8f34dd48bf2f53ffc880871bdff94778857ca1128260b0830cca80e12c4ab68d03549cc9bf55cf973aaf95196886a8e5049b66cddefb70c4f543a2d5c6fbb29c23742d26f63bf7b395abf6634da0f78e4ae3b67cb4fe240a614365c687cfff0dd876cc52e72e9af0c79b4104bbf29f8f70d61475f7a2268b85f +de4ef6c6852e225ced840b1e52f4139feca902b42095f1b63584b314b4c2eabab5602e0c7c4af3653fb7a245a161faa5bb9f64589f29163e8bf2f85d237342499db52544df945d47e8de477a84c167abd8a6d3f90a2874348f96475cad53035c3ad196b3e790b4caf86a098273a20afe4b6ce468ea94dad08cf6e171bdfca642564183275134ebe70bce7e81c24ed163fca350eed18e9bb46b955f5535535da74b27ffcf29b1e2629f97f20470a61db30bc2b46c41d3c60b751b562e952f8bcf +e84d560842e484762c9931c5f732d9b287d3f569592394cfae580bf5d9190e240e296babf99cf72c51b89a217ecd5e7600bd8fc598b71106323f8458844ded8ae9d9d3074ad2adbd12af5ac943bcc44815bb87c21dece9a9a632aadde1f442f50ab9581fb2fb2e4a2a5f45df4d419f4edbb6597671cd449b62fd23b6a96c13f678049e2b309611136444e36efca58388e5cce4c71b0b8553672846afd132934751df783b9d32ac6a9d3e71f61e0674f1823d48a8312fab6c47c45525b6f1fbe7 +e6111a1fde76320a6279a56fdf827609869049366453694a54a6a72462238deb882edf593a1f2d1707794f83a54398eba5b6969cd5aa7ab61075133d2e7250485bb1fe8c8977c899f544cc859e494fcfa2655df915158e58306a8b668d94e13543561a6a37cc4e92140a76ac4c761e91d2621c2d2e0cf79b833bddd7c964fb5b00b45873ad416cefe843523744f0ab6b67d29d9d4913e300258fee7db0d9df265de1bd63093ed6358f7116be81416eff5819f5573239eb3e180c80e1e62bbf47 +dd8eae85b67b0eed3a7051d61cc98081bbf0485cfad7e5e73f8d6a3df1528dfdd916ce2df527bd3a481d6178f0a8c8f2ba8a64c09b2e34c14d7266ea7f629fd231b7056c9cdcabb8a9bf104a29077dc1ee3cc66bc403c257c94dd55b61f7856c8e2d34fe7ac27c1f5a001278bc68b7d078536e355db1616184d95ce0cf6e95903819dd42f318b9520257309543dc3586d0e207dc4bd9c94dfb857c48afd0e781a38a752676ae1eff19bffe1816c4e9f1c7df309751c943e7f1937a6683e29567 +d90a69fa2a659bf9cb31f81be8a450a334f83a3c08a18f356b643b77a6a1ff5d7f64b83005129a80ef448dc6f6614c810d64fcba52ebd75e4b44e590a2bc5d68fc30c7c55da501a7d1fdc01f755edc71189e90be2d3df250bfb36e5a378ce883f1b0c777c3be483f44845216a441566d4ade8ed63d6d4271f52365f975ce99e378562856952933eb52dee55349091ef9fc805067f032eb2b7c5ff3ef1dcbca3f589c6657c4711d5d92d09b6c1a7d672d415222fa159aaad19c248406d83a9caf +e1f3f1e0f2de23bb438f893484b7f4ee398b8684a2a26703237759eef1a3cedad2beb9c1a522f8ac9cd078915a13f6a5c66d1179b6121a74c19e933748e04166dcbd8a8e4878cec5e39f341cd940de059e685f61ae480d9408490ae6e008fea0a7fc7427875ff3c87d502dd5bd926288f363cf36467e8ac9050c58de39e013598b8bc9d33f15a03a3796da39ae6a4ae7d9ee6e5ae0a63f99f84b3fbd4ecc6b7a54aef4bdf096655ebadc1982f5f8816442c7f715a5c605862d8463876ad2f0c7 +f84572f02945273755df0acc2e6e5432427224ddaff45b97390a368bdcf25b12de26f2dc022d39c5f88b6ac24acb97a29114526d4af9694ffdc8f0a405c587072b51279321a9cec52bf60958edfe3c294dcb3dd70cdc6a06a7e22faad85de9df59979bc69aafa4f1a623542944bd7eb92de6f4af7e245ef98ce5b5a2bf2d64fe372cabe02851ebbc9e52b2bcbac356b75a0ab056a1aa5b7f0d4f8d641be9c867e51ab2165c869b3f2630a27070387e6673b3221582e1350d03537c31dfae1b8f +ea81a6fbb7cb227d3a1dac65f583708340b443f5b5192326846ddbf9239f15ad3b1c0b996f4d44934a8e0a3b1b3e8bf137840ba17f77d9033f88a99f074e53632a9c7cb6e85ff1776e14fed9d74fbeb10c322b5bf11058c4855a04e01b18e9e326850d5421f60b8409ef28dc5339496ed84ee4121498e59ea39efd17782ae8b7405ee98437de59ada59a62db8902dfdb2076398788176dd9f8fa7afec9f3c2af58e4662f4429bb1d41d07cf4eb3c8d4a4206216fb798277c8267ae7c7a682227 +f33e9e770175fc4173225a7541a714ad594f907fc07dee3160359b972e6be4ea7e5fc3ae02a0856a070f9569f3b57739b541ac1d6d49ae27ad0c75f8370f8ebfa6dd90d3818a9b9e14d2b70e32d8df4ff9ecca7ac92fef8df084c5ce84605248f23e1a7e64f517ad1f8c9de0a13c38987228b3a5d3c6f08a5010b05171892b82d07cba8b077a0f919f09b15afd7aa14d3da420dcd3f95fceb8550fe42c5feb470a970f0205bbe63723a8dffd3bc940c453e4e265f742c9d180496fbc19fb6def +c463a2cac4eee9c2f59cf79da01f8c4670f9c48260e263556bd88ac60d08026d61f3c021d0c9b83375944d049d532f557111f3be7390a2be7f17163e33e653366b6866d0b4fb7bb27cbdba7050306a7cf5646218190745d1575753140842e100d1071541e0d8fdc17021f51da04e3342ab8a1f563fff54d76d6c03e5e281428a67565662647f76ab15b7d39aad65e9a085fa9a235f3520fd163c19ef39bbb862f175f52d987d7b1bdbdfaa65d1498d70d44cac5f1e8b44fe99bd8c4ae1dd4fdf +c5d122605e04b33f585324a034358753a4032ad689f68b5924e36fd700014921a9909331f5eadc3448e15bf5469f56e735624aba71c1ca8e784f421668bbf70ad93f0da41b94e8a6d91e2fcbcbcf5f3c93a0523f116be93c4ee7b80da0f68b9f52c8c2d5cdbbf2f98173694ee5a3f855c6bb99e6ff34cfbeb4f52ba0040e5882d76f28b97cfe5b0d79d08fed7c0bbd90f85e0053412265e142f51864be4677d82e009413ece47e7320fb7e9c4629a784cb0c7101e31b18f7d99b56c567c34f57 +fa6f8efd2829cfa47b043ccd9b7a7a1f63c3ae5e65832b5273cf9824b6a2e1d8b771088c1e6f1fcdb02db16034036c07a86d31cca3c23d26ef2627ce1cc17917b594f2cf973c1d980f7f9c6f1b60b1915a79e79b61d00602981b455ff9409a71d8f74193452d8028dee2d9a4ad458b416372c3c5c81f69ae817d9d05bcfac29f7e95636b41a0fdedb1490d207eb18de8ef51635982a0cb9e447361f21098a14f23c2ca5150e043330fdb4e1cdb210b5b9671d4a6d48e59c338edd2ed793e4d07 +f9327e3665ba5069b2c3b9b2f87eb0f70ff686d425e260adf5c6e165dff4083357a729ee7318b0cfeb0b85c138a38b10c23d31f8ba3d3b840cf5c99464ef207cef6db34b3f0add35a0ad45c67d9d8ce30055553f9250db0c06792a19b340c643f3da417afe734f20867391def92c65a6f60f659f609faad13636d994a561c171c4b6b080c0e51b53e8b6503d5160141ec8edcf37029c3aa9d8d3fb0120eb974350c9fd34f76f99cf605fb39ad324f78b30f6eda2fbef9d8de18324cec1e7cca7 +e901ea0a3e3a4049823e747c77fdd5cb89999136593ce35f298cbf568b5766d67a0612ea349a3cd9fa7d42f9346d1b2cf04cb1f3ecbfa48b7858c02268b694f1ea67ba416b98b7c62b144cbe2d98255e900883151ff4dad032d5475577f2e21b6a215dc36718c90043979824bec8a45399abbaaad5baf7d721a7ab9dc213cc59b6a57afce6d65cd91ec08479381cdbe0e793194350a5fe1f0ca81375f6a057453ceabf90d9d9d2ad95d4f4d50981c0861a9401aae517b503375fa3566733ea67 +d45beb4ce08bc319303f05c6068111a435827e545a1d5fe5d2ef150b3f18324d0613b6dc9379aa8bbd9025985d0644449c3db0e9e2f81662648112ee3ea58ef05e89d8c87229fd9ece4098b5f9934587649d52424258125790ce2a3f2ab9f5bcc9b91b4a6c568713c16ac856c731c6fe36cf84c0a60b0615feadb6ad45433ba395ff8f48236acaf5ff42c850bfd6fae5d77132c08e27fde4c9226a74f8038f16f7c0f0a03be9392014f9a9379af258d76301d9e5f400ab84c9ae4af7848d6017 +c11841a9d6b5a268bbad6d0ae5a679d8dd158af763a19e277262be8811457175599ea7b65679a075f101adfd0ca67fcb8c06173e1157e1758e20b76845e31988c58ed432b90b6209647476501564b036e2ddc029a92ed5ca403ac59ef3d440bb9a06f393305756f3e60b024119d6d5d5b723df577db2e0707f2c5434b77b881b97f8ea078da1587611a291be13a948860741a419dcb68d4c0336f28e5865c5436641a46ff5793ae143aed96a2a959d99bbe70efd87b4ca16339c934350766c67 +d44d1384fb86dba8811ba454c8ce134677d8e53be2c4eedc27568f59cab4f7a4ed8ef2201aec780f7cefb755b144b4446dcbdd7ce3dcbcfc995e99f80df784f023b69d66c612199e177d97cee311730c18d633b974c1d488161d47bdf098fd96f9276ef1f95d6196ecff092a3fa5d55873d104473f1ba55217b013ad2e7517531d9d9852e45ff47e5b6ceb02b16d421c2d7045ca7b9dffbac88a09c9aa3003c3ee27446c75d33b7a60b669860abcfedf66e0dadb55dc854d8d486f9ad3fff0bf +c9e2b8b2bdaeb141111397abc8ca1189271802bddfbea619df36c91827ff409d882be9990bc9c8069ad012172016835b13c6083c3383b1822ccc8124fc955679f9e0f95000cf3e49f9f2018e860d4937d2c652fe0d59b1acc64be42b40a65ac6e34fe77567fd7a8b3a26e1d40008c969ef124df8f92ac0ee9def99c4f020a9ec52b4fc1d7b6939ffa3bf0b4769c91acbae7b5ef8ed4b884f0fc656c351ce0dcacd323939060ebf3dfec31eb1c7e03e3f8efe56b84079b47145ca4da55be16287 +e407d646f575cce469d4c6e02eb9a35771dd501de0c7c69ea8ea42c1e40f8075a1e30ef160806d5b1873bc6874360a3efd081c4afe989fffd00fe361af2dc98c92b2521bd2987f7216e715caec9dde32e82a3e93d3d079852e6ae58f68fcf41849a9361836d9fe96232f6c25a16e977701f1c38d7fe81bb8b210d488b7a6206ff3f5b43ee80ace0e08ef742b9a9e6a9552dfe2f0d4885abe75cee5d7e9b167937733b9f3f6b10b1591136225a02536b6d91feee910c04179345042cada115e1f +e045bd9f6171ef3ed276c2fe34c5ce9d36fda5f1e905c2718ca05db2cc99d322950152c74b904a8bed87b88aa692d952c39af7f9c44ab64aeca17ea996b5072ef9fc8cbe0c4dec68277b3b033b51bc2a23ced37c13c7e3344c8b6c6e5cfad8b6d134f0da094934076db00cdc3a1e4ebd5c61900a68711e5ed70a649c87f7a55132106c372a059379456b3b6d01ee1ecf841e1c9f1bd9645aa19e0251120bb39e173c94c23d893bb785b9985d31ef4225c64a182cf4e489d93110bbaeda43b457 +deb535efb0b01fc47a6ac581b838238582866c5f23c84b4f11b25cc232a043b3563cad0f2234789872a41265763fadf34694fcb39817d2616fb3d25d2a5c8b18ceb05485f19ba2b8ac3b828fb98bbff337d66c29b22d3fa602f846e4db1600ff6bb427e9570bfb70bf528e0558c5c9b8c8b1743a92f6446ff1bdf8ca17f46f4fc4a7d015953e40ee5a3e64b2017abfe0e2732ed1c06ea3973bf859b9565f769bd3b818df5e8d400c3f22c903c46db9913c6b32bbdc2390a0dc85a029a357feb7 +f663bbe8fb583c6e028da835841b033324e1dd795e08e6b819485ac8bad9d574ff35cd7a3b21994d992383cab550fa54cc21244227e1f5a4d19fd129f835e1dc0cbdce649535e7874b75bbabd6a00ed96283fd772618ea1b58df3c106fca9f70357decda1939b4eaa1339d8edde8f540befec78bad4532dadd8b10c4852658b35e58957213bc3774a53b77a3b0eea69bdc89625e39c0a9b437f0200236d2084a15fbb4690c0943421f2ae3006f56b817971a7623c8a813ee506d80ce9cbd7b77 +fd9f1a6b64a9b5b48063d72575e81048dd436860710368f01409a9a2d576882fe615283a1d700ad83f94473a34d6aa257b2a679e68b280b0a4ee9ffe35e61405d2fb7107187db308fc614f5558c4ff7346a957da89ab2533008d52106125a60f8d069bae835b02859b1d927026b550ed6c5128c6721a1a6b7d125ec3fc67461e3c1166cda7a7f150304890e1da8fd68a2ca1548821856a788293354123dcbe697a669cc6893475991e17cbdfc6ae9745fedc7ccd830a0639f47461a5615674df +f0b632af7efcc89a81fe20cb3a8ff0cdf0883eb90e92b42e2dc9c3ec0dfbfc1b8729f43e28311b333a4ac62b4fbd24d62ef06f52e32c49d4e61643be9a81cf60065d5aadf6849b0b669deabc1a15ddd8bc3512aafd7c5e96f3e75cdaaea6d3d4505aed54f41e58e8184290009ddb1724ff8cac367611daa30ea835a90760e1105b4dd2e3a9c8c98003e24102da74a0b2b8584b77ef28075f0c8f5ca0a71a598ad9446bbed9de3760bc6d77d4c64961d3cae498b8ea7eab61282b66450f318e4f +f5ec06ad9aff9d5fd1ebae95f89564e2a5c38f823da5a4349902dcfc0cfe02a372b321a9f38f145de13045004d5d429c143d06fb68393e40698631f9f935c1220546eb0e19ad6d0bfa3277e9b186bcd74b2cf45e19dbb62f515e63f981e3d8e7b15330df4f82f4395596a51a8e09903f386a28108941a710297736fd4a7b4e6093e10ceacb8959c14f74ab007d5dacfad5554856c8d37672bce0410f2bdcdf67e6efe0fc7ea211a19837f441043a10fb7b7fa3a4961105a220604c5c5909d06f +fe75a5b1a67be84bcf8e7615bee1657725fbcd883fb861fd38ccccd15c29deac3d6bb7800566118e7f1ceb648870bdb52c96e8d10607c43104995ace90ac74f93ee48c1558a9bad9fc187a5397400983c59b21a749376a52726b9b2ac4c07cfa2c784f05eaed34a52b3f1fe9eecc8e738b6b9cc118cffd38b970e7429a1c4b445d2f4d36271617027faa09a11816c43988ef274d19846a2d859ec47ea160f86a46fc6e8f08121f6e3fd19afc150e24fc7cc4602d38f9ed9f6301ebc3d713a237 +fdad4b8a22f0862cc2decda925282fe801198a932cd810b57bac2432220cac471a6650113b0c3bfa479ee01c2f5ae6b848ce4cbaae70329dfc40dee2941147567612e4545be752a14c73ac3dce85206e306ee7b36aec8ba0f9cc4dd8c31e6b83b3e2c30e04067457e70e89c2bff56c2c42f41346e9101e3a8c0673f4c2e71f1bb4e9495a6de310500e5fc143d937f8a54335aa0f322e90efbc7a4a3935d5b5a25141f5a538210d06a47aafddb2e7ced10f6c545568e8d07a1c211b1d8f0bc2cf +e5e2f69cd29644b8a5b906219f665265498a2d513729773fc120e7d17996c2f8fd98c4a7878d6c41640611b5eb8dba46b05c551708aa750a0b780cc2ab8d93c932b36cbbd083720862626edbef31044d3d79fd0e43c2f029b5cf3953fe1c396f3ac3eaa7d8c8dcd01ea37bb8092d05fd882402105a5039c57a58864c99536856b65d761a881e8e9faa660fed6016537202ab9e90cda7e7a5b2059322443fdf5c66c1e9b699bb777f862bbc399cfe33f586cc114b473623d5be4bfa337d1f0f5f +c13cc2ab5bb3516d5bb4b49b3b8d90e9b7ce9ee3618c2b091711c16f35330048e77fcd57512715d713c1e68597e91be8dadc0586fc0066ef378d8ab38a541604d67aad8ef623838e6df6656267dbb6ac51fe76a8331369fb3b1cc4d9125ded23d08b0958d499bf5dbaf8d38257460249fabfaa4568a24a938cee795867d83ef4343dc80c373825451aa9da227613aab7ba44ee4dd280847b487f990696d002badc3dcbb45c08c94b870df83dc6e98700fed2f3b1dfafbe870e3ec2535d04ab27 +d315f27fbbf16769b6c15f4255ab52ecebf3e1339a144d19f8e88d62b77a6bdfc6fd2e9e87930c72819644e73be6dab0e587a3b413d12db8901858cff1ddf4bc85acf42996fbd3b47d9a02f071b8dbd098753f18f80b90dbccd692e0f7f565f236a0c1dfa70f1d1c073a93d40cec0805d5c3c25d2701487f25ed69060f78099827669d42d40e5285165eaf3ad31d13ab7cffb6f5f9f5b3ca48d6eb27059045ee80f8eee758b94298829df36de4c779f51fc538214dea8165aaefe246d86fded7 +c618c2fb07533d1b53fdcf58c03adfdc31a784cbafc7be09a630d73f1b0af775dba6e5c48f5384e1811ed96da34a20c1f62a8bbee66cbb4dead9da9bea9548068ea799eb9e3cc19b3d8528528f17b6e00f58ba401c53fd2ceb60d9e239bd60092504f8150b746d71f7c7e8f6cc5fd2c5280bec605f60fbc0d45389571c2ca804374ad70aa6eeb1066d481999113bcf9c24e21573f7898ed0b1173d74f9328a6d2dc7def2f4e261f40432ee8787ea7f6d34158713ee064a77ad4d0d134f6c89ff +d0bd00ee2a0217331a2278b7f16a799f039969f5f77aeb4dbccad11459dcfbefb1205bc2485f5965c01e4b274fc7ba3667ba941529396ec89f0b3e9e1f5a0d3c2249c7301a96dc27edd8925f136c77986bca808ebf7dbcb8529cacf69cf878b6212a224d2e88970aae1946680cfd7870a15840471d240c70b3d2f06e5d98473324a8e00746ed1dc283cac77d6a06f4c8e8be908d54a1f0869e3297c744aa3af1c0f7cd696e863678b3bdaa68c6f00b7429a1d145fa400fff29ee9939f8ac80b7 +f6905f1d7998efa0ff86e3f289e1b3203411d4146a38c83a9bb3588dcc8b0ab70d14b6bbc57187176621cc59163d283943c9ef98ee60dec4a586969cadb9f0a6b901bca4d7292613dc3d1b2d6d2fbbceafdd791b5c768815f37cbfe4a556c76d34b047037b10e487d916c6ae12a181678fef2c6f29f7e097865f01e5314569d81d28e927d119ac8c429c29e1e67f27582d04435c32feaabd3002b300f5d5d25ceaa9f2bf1828dfe6adeeb86657f00d52d9f367236086c1fcfcdf18c2586ed997 +c7fcdd947f37d6ff48fc1d53d5f571e129af93e5f7121183157be825183d022f45dfc1635ee9b4d66dcdaa62ebe300dc6f981ed26797e3f5546e5573e02b913d88b8e6cbcdee6e88fb9a4520cd44bcb50ca10079be6b7370ee2d6b32b71b97936b4e31dbfff15bc270f4ccd95784c04857955b9fe1f93f02acf803f3b0e7d35b75b0cbde4a96cfe21191bd7b165112d3b1a3e27a51666171cf3c1d2f4fbe59438a8610b689bce26d35301e3fa13d987f2b909486d586562e736dfb132d1dedcf +cf25222b004e83a7fefe0c8c2401d3cc2c87fcd2421eb67809c6b9a273a4e268dec6ac7115fb1f018b4b63cf649f40d4aa3a718d2e95b4aacd24f8589e47116ea579c7166397db03b239a38068971cfef76b76ccc70ac3788f8c37299b217524009524b95f4243c977ad31881e72e21951959440bb1ff76e7c3b11e9e7855862173dcd384bf63ac45de157e44c8ee8bdc1c6e81372eda03eef9e7be9e7fde45d5b2121ff99777cee5a7b5fc6b70bb931c0545e67f2f5e18806d0fc2fea70c1ef +d8ba14f945ed88fabba2fc0c671744d57f1c711c928b4da032a9463df9a35eccc4d52e9daaf65ffe26e985a2934c814d397f1054efee47ec97bc2dae6636888fd640d71c4f0f197c06b52be4910d4bdb46f477e8a534bef03db64710a21cce46bceb132559b587d4af4ed669f4bceafadbb935cb4bba1d7580f837fe8b881ca2250c0339e4b0608930c0df48af98fdcadffbb16c267875b0e8f3439f6bb739cc111bb869509e69c67744e4a431dac10ce6b99859a6784bdc73efeacb4c348097 +dbac4b50bde437136f509438391aedd42173a762890758d604e383d6ba239de39b3eaa4039bd581d2d73e1779de4cb56b208a4cfd3b66ef1987108cf10f39ea17cf2b8a95cac8a885f72d7a791c48d331eafb15dbdee47a36eb6b6776c44fe72dc81a1d867b70fe72bb79531e47c5d1f26b1b91a9a38f773eea6f1b400169402d8f38694dbb9169f980cf68e2f8866f766b364018100bd2fc41dc0740a83d44e87106970e3fb26d2b105dcfcd2b29220fe5bef1786e751d74dddb27f02d79a3f +df1dedbd6acaf3bb64365862f84e4d30e1b657c3a3ff07bf57ebac9749b3fe04da5dc8c0cc267a8083317eed9771dcacd99a56d23ffb3fad4340e591493faba523b200d5bb9f89f96c7d6cd65466872582c5146b999c4b3890f0172c3bf1bcad2c1ddfdcd13e28c429009586f2eadd18519dd0a28961a99595679c3330abf8aa236aadc58e0481574449446ad6e20da971eecad0ff6b1e75a68f92cfbae3fe6d9563c56d1ab07a7763bfa410f3db263e5d4a6de3c30ee8714a0106498fc7e557 +d90b38684c5d820200f53a0293d8dfee0a771913424397492af7f9586a96fb62225fc849a449420cc4f7ae9f48656b3cfa7e8e5b528d9f2bd262db95fc8038832888dbaf79b05fdd8cc30b038af1525a1d78a43fcc40bd45e1bfd7a42e6da08acccc8f5c7ecc0e31d77f7ceaca8b3b58c2b170caa671ea5bf12390a875fba11573191b04dc9cbf4205ddee591fb413d2076a85e404ad1c189bc6c6ef0341b911de90e1dd224d665102c2ad0344287bb7d87e7737f260b7153775bc32035acc1f +fb397089f78b340777c4d47b5f6cd1dc99fc1b8a2eaad776bd8926c91c4c0384528ead12b914b9390c0655c87ddffe98c3495dfe19181a2bac27131520bb5d553cee3e49ac431051db2464ae5305ab118b73c2af0301b7dec5d648dd58472185cfff3c1d748e3dfb90ec77dea6c7c29599400648dc80a00329d4ab63943fcdf529bd7b844d50686d8a15f0db9e180a330190cca87d38d8163ce38babbfc3f3975eb8ca91887e3ce5e3d8fbf04434166b43f44c487cf340be48f4640c3e393dbf +c6d4663277ced200c988b37d04c1f50ddae8a9417c1f58cede1005ef7b3d6904c56fd00b2aba335d6101198e0a320b13ed1545920838a51215d78557b26b1cc5e8a150498c392f2bde70a61a09a1a3e2747196dc1f0c133385b900fca94ff5004a827e3d4eff17d698489e162de9b0ab1f80197fa5a1cbdb60c6a6431da83a0ac9f368c1b313fd577ee44a8d765d8f84626411dcf918ebb038399a38e53fd8c9cf1a82f53b3a0866159ca720ee84388b5d2614783bd13962dc194f6c7fb733af +c70f9e840f0c277166c029786614209580c46ac608750145ce9cd7251b0e59f01853c76ba7b66d756937d850483e92a59747933e17c998d2d232c69227b69022d365853e048b42edfb17407da566bd55575da90b3e53404d4ca0fe49e01107d0c2b551611a83b1df0a458be9ff8bfe170ad8020a09fb914ebaa2bc88e2f2bad8207247e97be79fad58d3f0796ce321c4af499c2fe8b90632ef9f6a133e1c3dfac98a86c9351aee5613e09810207c0be886814924d04940f1c4969b1447679627 +cd3dbd1ef06564e1580c145c4ef36c4cccc31793701da7af50eb5630e8636c886fd9a7ee6516856da9cff77857cd082f9bff02ffca507a12be7b8c982c55a6ce709ec4a0d755dd3668c6f8c18feadc7e01cda2b7f7b888d600d10534129eed8f8d4d67c932d06a5dfb160489d948b6534af894f6cfa331e3854162ee51d20fdb871683322385281d19fc1136860e4cab9c9efc0ff37b1f2b272bf910be1b1bf1d2593569767791c1ef57e7a48c7ec147bc973f0adc23eca045dcaff162e454e7 +f0abee31aa7422c7874db865b4c360dbea36a2bc9e58857b194b5f6fde38ef02202b343c4d021b2d50686a63d8587df41c37213b66a2c23f111bcb56ea6ad8372f7a7752d8bb144c8ee45956db968ea7754378c841fd6f4b63bc48b2226614b6da0f1dcccdd9c3dae5851b2413d5847b97f20ad700e22a335c648e3594d944e826f6f903469c691bcc45e8b96ff3852eb55b3de05100b16d1f389720ac175d0f4445cf03763e635dab4f15163f43e9370aea431a046911ca8610f7afd6f4061f +c12c3b1d12fc04833320fec561323a9b7d62304e59f8869e0bd36300275f7afd3aa2f4af221820c8b2fdc7bd426fc0d05a9e72f2ddfce458c1284178a5a6a43b9d1b2b5bf0655fdf084a4b315917597ee25ec046c5394b0845e1fa3945a87dc11e8976dfb45db213ce6035b66042a98c6b348542de42fee635047bb1988439b3a8bd73791fa3237dc8bb52412a947fb298b1687261d0dfbd85af76488f68018d30efde6470a8d2ab891f8fd0cc9598b6c83092105b630f10ac9b10246c61ab37 +d6df86a8896b7c56e140abb63c033f10827312ed55d46522323598f260ad9358ddf0181326f04b66a7c04d43f3484737c7f7936710d300b544ac3bee3550f240a43a1f734cce492671fda471c1bab0e8580a08c999df30d6701437e2ce7da5dfd3cb3f785a09377fb783bb9bebe94a0fcc973d6d3f4a1f22c2d6c04b3a0ae79434e0ccd76009a90ef739dbddbc98bae0a9120d82634d28d9e760c68c5edb50941efaa058f23b8029fdde1b7838f11ca41d5c7baab7bc10f72489bd99beb617cf +d74dc5a73a734707453bdd11c9c3141b535942364e18fce523ca22d2d87c8fce84534529e8bed597fb89f08dcc85f6ce055da8639114d6bee5db3a9f91b4f34f277e7aa033df7340d7d69a4f5fa1d4e027d66ea56ee41685b532c05b97b161ff01c20f0ce01db488006605892a4355d18a71f125ae63cd608c678257ac821a6d422ba4e469c75280d9af8b9b1373410d7cd24b0e0ff5d97fb175db1fa4ca7e3c7bb3d7a9a431bd469b587b5fb3f81afda9b407a580dd03a0bc44f293cc967947 +c6c42c7df5356a0eecdaeab1183e91c398efa1568f379e97854e3f1166db265269ecc83dd4538a9e4756131e689b3044a5971d806eabd99000ba7ea6acd6969770bd149d9ec22abe71d8818a43c8bece19f1c61fcbab4ca863cd27761de80c3f83c0066ca80ac0c9cc22f427b458a7bf7ebbb52346ae78167def4836308498f48591c8df9d82089c64c7e9378d55e9b87958384686ace5b3133503cd00fe4610a85453a0878aaa39ae79b0c551b5dc5ac584c816c3c864934fe88553a9cdb33f +f7390d6997dcb36f4d4570f6a5a88a755200d453908aac397db53ba8dc667677d9640c8bc4f0ec9b0c5039dde223a90ccad4c263bee0064dc001c881a70de60bdb9b4bfd99d68a52f897d441002f46f1869b2c0e3ea037c741351f05735a1b5ee2d4c3009805b7edaf658dd4f53c1e446f1505d1dddbd038148913335f31a1c4e4c2c59a398660f3547250654d3451ac8569a4e398d6768e86d258ea3fd286e8a10e1a35cfd0709dfc3aba9bc234f2509a1706ea8f2b35e376c8180c33721197 +c9dd2e04c5bcb9550fa64f0033272684f8ac157648bf1a6c8151e9ced23fbce5803f16977cf07fc56bc7ffa0b7670e7bb5373e76b5cf691a83548cc94fe6a566423c52380395ba4d86fff06cdd82e6f1d11990d7eca5e1095c6df7d8c8b9cca11b9c45cb60711a174563dba4e5671f8fb9d849451eb8677f19273cb3107b2cdff88c044abe1ddfb4f5ee5c4f0463041c741457f7a702fb1626fbc9b4fcaa8772ceef1b44649b88ceb7001b2abf081075df5f8388a919bc0b621c7e63ab89c8ff +cab6a405762ee274de2c903cfc61083a70b364b85583adc1c6a17aa7c9e4818121956f6da669223f5d3075abcf733e21544525951092453cd079687bfd36f26d36880326f7dc5d04af9974f4d96efced67c255c56fe4990e84cd28cb36bdff40e26e9088715046bcb4d0f1b5c3ab50c0d1c6b048a3243fedea6aa522de5115b972c5321c5869b017844c6cfa55414af10b27134334fde72ad95897be2745ca9abe42176f25ab328a958a0deb54904a0e581158e33199ddcde165257689bb91b7 +c68b0e586003875157fda2ad5393188eaed733317b1bb77f84347d90afe7bbaffdc0f5264c37d2454ad28b98b9e510d139ccef6b06a5bf5eca937211b13d4f32372476ccaa602b914ec4f0a244949ea6b4372e5d615b8670ebc046588707584985ae4b455fdfceb4e8ca6627b2a1ec92d5e1aa892a8cf87ad83816fe6a36a1fdf83c3b26b79b5c4e37441e2a390e19648abdcab9bec602f960adceb2e9fc0a0113cc316b5bc967c4b13444173bdc87b71c2fc12de643ba61ed47b18b25d5a43f +daa1f1e4e647b677f0ac31048b7354a1b82b6147230aea100ddce79b46a78f67d55b89688638064751d3b2abe804dec8486e47f6c7af4d2edb2502db82413d376ccb685bb54841aa2c0ed593d93b083f7ceef26b351d0f9b1b7e0b9143cc02f1b4382bb59a063b347f3c0d1892308f2134d2f525e8fb833b6c84a9c299a9e4344ea8bbb221f24c6ca965c4ff3ee242538dbd427dc94b88b2e8bcf376b23a477dd120b7c3607024fa33fbfb85029a546ff93d86af36775456b5e70acd3622352f +c6898378939326cb97478cc3099b4ddc9625cc3540d3061516346ac2a9a019046e1d03c3c0b34b5752e3e7b168fff48cf0075464aca916ec7eb70b85a62cab4457480066c745cee8659234cd0c6b2da39f36a323a356b9b64bec4d7ef92fab01051bfb8ac5e9995b4f84d49d8037e59de6f47467ea38d3afb05aa2fa662f534d7af3aaed20ebf2e64b63c384e15668bdbcbec506e217bc4d288aa8c00301b19d3176d320aa8a8a497ddde8d39e9bc13dbb4eed7111aef6c1972f45ef8e2f4dcf +e9d440b01ca7e567e29a016850ef605ce76f22dda049a705fd05ed83951f668794a60f62707e30f3ece63b869cfb1d595de95c51ef58242271bd07380c3a386fa7b26fa23f2fcd1382682b80f722ca9545f2b421339769b7e9e8be1485bf5eee081f8056bdb9156c8ebeb5c24748ab523bd878b40fa76a50e35f0d17eee9825383212f568a9d3eda88e56af9f1ed78328f244fc217ca3babc1150ad5896c0c1db38fe7ba63be2fb094dab6b9416663a66857bf617ede43e9dd0e8da3448502f7 +c5c5af9504f4abd4c6542e021df0147f807a4992e267f396804204ee117b4073bf3792560abb171c1908f18e84a85be1a00da9935e2c49b28bcbcf315f9510eac80c3e2e0c2f9f92724c3c8c8ef42ff48bda6ffa356f30bc43d8e2b6c8e1927b52040a35c76c3944a36502f0eb22512b9d762240b1e4f23f22b1858b45f876e08853bafbe7bbc1d9edf9e215fb0d9155871afccdb85b26267621057093bec8b6fe47c498ee878e52f5a34cf8b98e348ea552617cf1a1c69f27e04605511cb5cf +e1f60ecd26f63669f25798cd60030757007a7fc44e430a8b87b81abbff539ca91b1153b2e2b3dae9042ac46aa27eaceee2b0444ec7ece9eb73ef81a3c28904ea1c1345a7eeba37ab592a2258902608294a35fba1455c036ed145177ad7839df58ccc6a7805983bdf450bce75ce991e03d92a30cc85237f60a57353d2f58b83020cfff8ffbf6b41a92980f5fc27000d9e1e80c581b80d54f703c5bdd0a1e4a2eac798aeb26041258706c9013cddd9f10ef407224ec9daf142777737448d48f317 +c8597766866b115a61c63086ec62aa8e668da804a76bfc132bebbcc7dc9a00056bce8b0da4c73370edba00acaab069b76c96030d07285aae21d3c010b86b9bd973c03b253b9a58a8472e6e4ac2902c6df907bffd413698e0433db60ad4fb48f4324c59f7c2f84988b4bb4c9c1466b7fd946cba3885569a5c578d077407fafc3df255ff0760b71f05941ffbf5af01ebe7c22b7d942fdc3d64b206f5366f2c41cb566d527d56d53595d70a23a13fa32ca6159ec60f71b041c7efc03780b85bbbb7 +c4cefc24e5ab039ad368a73f31c4aab208370609b8c99fe94fe423dd3d132b8228b3f1791e49a7f1529af6540d361ccd91c458b1eb5076202278582c30fc8ab0693b47a14d88956c9ed382668be5eefea7d4853a3350d22dfcec61e14629b08bc54d66fae3f68796230c758cbeba819ff16f977270ab8e901384ed691f0560e025ac1bd451f9c39312c20f2a72eadf292368a6501674d9cab65b051674efd8b79cd24051e5de085c1d7137ce00b97aa048ddf0d2582fb7d9f69897da8690985f +e029bfc12639e34771121f9f3342b2dd4d6f7a18969a92a9d86bc628200baef8f4123479774c430fffa4f91c594705083571463169b102d2415d94bc33f3b4ab5a24edff9aedebd69149a7f63a7a1b7d98739fe920ee844e02c55798e259609cb10ab70ac569c637f33a61214757e33a54220941b82376fa6c210554ecab0af462b6ef872be17bd247ae42ad880982c470071d62cc69fb38b8ecfe3e51b7bff9d459d175899546252baa14827a46a4df49bc271dcfd395a4b5cbde7c6053036f +cc49875d90beb3e0a7b5f105b6a96a30a480da75e8cb20eea13b8ae3f232d699790065c20e7465d629dc923e28773af43fd9275aba504b5d2f67738ec127dce4bca4a59439046fb50e18585db03d1a33987f1779c43a4d0ffbbd531298939237be47d465b500f37ac8e5c2456a9d3c6fa23c7ab91e3923d93e4f819b96d041a7b085e58d045cdb03a4423e5dbe4601979fcbeb66c58d915e35b7b033ab21417cee1c783290c2d255e677374e8a5276ef6abd3ce14bc319ec4085a6a064904f7f +e6e7eb666a35509fcae1730b2948cded080e331ea9835faf06be32ce83d27358b71c30f22337f01962627c32c7abccdef1cb3314c53bd6523ec8d52f9ac1cc00c11e060378b7f796ac0a5de0d8204e84e3e8e49d8b1ee170808c1caf35000c4d081ede98e3d6dc0b9d3c773424f4446eddddb37be3f3842b7e95967cbe55324280563eb5f781635b039c937e16488d32d09d97d2b2885650e4cd34542f2bb336dc4132fa6dab7b35c62c28de2f1b59d4cd890037306bcacbd1279fba325046d7 +ff9fb61e241a1805ab09c0b07deff2c24948c444452c102af36db66c411b6cf8241e82388f7793c819da7e1f2cc15b7cdac1db06c5fcf3708af9d3710041876913c1c9f6a55841d0daba239c67bfcbecc08bdea8e5225a46c9afd8fd2c4969dd21856fc81c5ff9746a3d65e02143dd0bc2f40a597029760fcb44f7c934d03924ef558f1d75854b2a2751262e6963ee766a49795f659d28fd8428b11ba799cf4cede10d04da2b75344071701413af1892806aa5162b29efa59e7e34322d64594f +ce9f2944166cbebcaa69bb146fc60060cc17ae5f751be35868e29acf93b5ba87e8e18047237fd973e10755d5d7cbdc23add8af4d778ee547681e01096a7e1dcc7cc4bce50f795237d4bf7e35ba2ffb22f27d4c5556bcad7659771cbb349b4f155e03c97152dcf57747fb97502c058b3b26feed3d2642f3205960a8a3fe16c2a139635ed00b6cdcf95220f45b29a286fc36800c12e005801d48f44209d32e46f8af5be5ed7ea487ccf4e1fd2e73f452e17fba630f9d7b24620cfc9f43dff331df +ca724d9e98b18ea9d709a145fea529fa8c83aa07692391247a31aad5f7aab73d90fb241447a65f1d37147b17188dcb66c035cf59f7ac0e770e951a18821c1da67d750db72ef738e2d8a9418fc8e8e8426063e61e62dce737236206f171d663f97ed76861b92af93f71190fc932847a8a04c74893248d5f684c542fde77e0e8ab19a7bf81e73cd59567f9266bc73038693c0d51ad336437ae2547925e8601fa7f3dd8cc48ccfe551131b9d2489e47fb731f2b5e74a4b2d413d5d1a67d65000a67 +cb52d40716f7eae88e7b2059231064438db2139b94a5a6a2effddf7cab009d0f6ce8b9303d000b24c790db392cd7685357ccd5834f59c770dbbb63c9e71012a3c96f9002e2365bd726b0c11153dd274cc9d3e904e0c1c65016b2af4b1b142856190b7c37d07e850c5c030ff9e1758eea1889c373a7d3add18c0beba9a7fd0632ce9e76da875454291f4d0d2cc8ca0b740cb17cf4f7a64953e4c2e53fd38190944c2c2d6f89c10b35bb13840590d942ca6a0e84a76774f95c01b72a4d14dba92f +d01540a2a4e737d003ed8f7a7090199931c8589f4e52414dd929999845ba19959a7cb25f0701a830e84f57d6184f5d3b72738201b2b9d7dcdc57cdd989aaad9c05d23a599ddce449d225ec9c8ddf142d50c4556319c9a6485830acbc81b84f1607d74c60fcb66c82266bd8a7323bba5a2b82b5c8e7751f1f05193b2aa1fd00eee3e45e700e7b90b76c011e2e32a93608b0fa1aae7487cf66298b7f66ba49a7e9ce60fd59b5e1f225c6abc24c8614c387497deebb5dfcc0694e40e2d14e57b6b7 +f0a2a16516e146a6a6309ad687d3af7aa0c416b87ddc024c74f24c808ddbf3cb1f75ca89a7d50f4caca5136957886a337b06abba1f7ae2cbb890e13a04804631517fd001287c155501e104543757e8ae31b4c0b26e58ec64584d1dc391b78039ae8379718da7aeb9b359c0b0deb51450492c35306e934377bebdf0b29745c96361028cd023670c1df98fcf7c0b7221a3f1205285a0f1cde31b938479190892134a39e2be9b1e8b2bf3fbad5eddd56a0db306d9abe01eb0586a98129befb2507f +c7c8e2ad605b6f9f2f24850b1b92220faf61ba73391684edd2bd9c61a2b5f526c77b0b0a45735935f12ac243056665199c46d1eb7759c5648471881cf2cdaff101a6a26745b0adb9f0386ed0b622d7dba0ba6e9b508b58f51e769205858abd123462f8610d6f758bd55d5102c407fb6b25f6b8336ac33cf6e2e431827183039975d0e2f8c7a8acc6790a38e1de6428f54c76a73741a3f62f0b62e91333488de914884757caac710cb7263c891259d10233844f5f49c7eefc61b56d901093447f +fbe4c5c45e6f94a054a0ddbc4919742c4c9173f299a86081011166126b5b1ece3898599992c106c364317517940737da9d0a36b5d9fdaee2942630859880757a79c4ab500ef941d437d68f2d73e9a41ccd245947ce4dfd981aa7be12e60ad1d27c354bc3f09de972ce42003a95a0d4d3d53098824ecfd5a303310cfdf8b9765d3bd9bc41131ed4a59fdcccb294f48f74541a6d10867ee96abc069e8c4e3775085c91011391f906e58a0a57e02008ce23489b11b0675451b114f9f35f1992163f +d71a210e8a60261fe4429d9bf9378d436ca5029c630754c6411873a096ccf63fdf66e17f8e2a6876f7fda7547d5835f374601f7c91cec2b842a747ccd8f38d64e07caed0dffedfece4f4d8c32adbd04213323551491eb1721be2c18a2f738372c2e8e8e33ee3a0b51b3918bad38dff941ef45ef13f2fc122d1460fbc809dbdff5417f501873fd968d76c1a6906aac6885666e94c7e6815a6dfef29d572620a82da7a5ef269c4fa9b5032279b87636ce52ea9a465f5cd6aa2333a202731529c2f +f44579e8d757a61546aeb11d6a0fc6b94e4991c29861ca8a4f2acfff343f61454e74d6619a03ac080e16d2dd0e23e79a47a37bf249c11990e8f4185e990a24e641e5a1f93566937274ea1b89175fc4044b23a123ff7597f3ff5a0884d19c8800761cbb482e86d1a031617414094efd3e86e303cf9de6c4ef007fbfeb4fc14f1f924221ce12229acfabd6b7afc8e589bb9be70135e015483bdcf986bd9937ce860812ad0a0b0b198547efcc097006ebfe084cf619493b53a8a65763f19be8883f +e830e71b29d69dc5cd52dbdfa3742868c01dbe167042335fa25eb8afe904eab77557582feaa9250f02dbb91a0f7fde00bbea669142a01bf9e607162b65f79498c84f4b4d3d6a9c33584654bd9206b6c405947161e64482256d289f94268047e28e008d471f5f1f2a34e6e679896b43f85c41d3a621b71e5a7ed7792c9685406c2ae61bc1f975e3cfe445958de4e05bff473e5ce9f0b396c7c60708e13616c48f646fed205b54cb82ed01cf43c6d08f205bc5c548657b1a1e304158b36833daf7 +eb1376971ae1103708449cf445c1b90aab5abda9b0d8be78af46330576f31d3f2099b8cdc65e6513cfedfc422ac58b59c2af59d3e410d52e7a14bd2131c3938eb1c92f52b3e788a5c08fcef44514173c4fc32d28c88b03aaa587c38fc5d1df393b21a906a1aed5f01814d79efd0a3f93b5a223e5fcd8cfa0329dbf333f19742c65a4e6b10e158a0464b53ac4d8e719a532712c81e7ee24189bfcc65e7a3dca22c43024cfadd3bf5648436b8c4513eb2d5f37988f5517b0f5b3e5d89a6393d967 +c01f516359ac5ce1175fe84bc82c388d6104fddb954933af390dccb5da7d2b4b691056dfc48700a74ac227a567e62e0bea23d3bf47de3da1acdf129464f4b1f18393872a463c73b60cc82f9b415efedcad1f1d0f583b291e77a6919222a81a18a61562c22f914dbe074990baa75e1709a10398b6ef552aaed98d2db2bfe35abd9a4eed048c4b6bc2b11cc5c9b36089ad24b1a9825d4e0e1af5c04b79cfeb0e5c350f303d743adc5297466bdfe4e64f580de7fcd37e75dc98abb7df736f06218f +fedbf6a4531e477b026c2175c524206b2e5b3e1ea749ac989df3b0fa8563f60b76a912e0fd14cc465ce7acd4f08dca60b0760f79a79dbf8939307d7a5367324a21d93f4478961925abc03dadb09bcd60b66c049f82f036abf98202a56fd98be32878b9e857390621734fb674598080d647d482d2922d06e061988f85b0559b6fc4ebfc866b4de4bfb9eb64486454b63060c7e966a88baedb7da23096632fdfb07fe761cdf256071eb98d50ce82d55a6877351741932f3b0bd73aac79496190a7 +cccf26de30297d81771a4313f28e6822910226edf8a4b0e440a6a454d2dd70ed945bee5ce3cd11ed8b019130fed1403508dc3eaff7627542606938625eca009a102bc080f6af0dde1c046a51e7fe4977c10ab3367049673e0a5c6ef49667d02eb9ee0682259717e351879428dc2b25fe66fd0c340cac1f1cf7c992cc1913755debe69bf703fb063e3b5a1f954285da9055c1c0e6442e17e6b59d1334ce41311e3199f0a39fe59c81ca270d82a0c369a22b8954a525a821623c5bb6ff580bd24f +e305979a9f6142880a9cb16d40b958ab3e48dfa5ea28cb7d22eb82cd058d168f3ba5eba26fdf77d1e325a420f8ee0e7f4d75af1b2e2e016335bc67527a6e8d0a704483108aa5806d6af82fa3135ba936b750355cecbfd24da7957f7817ba236cc13b4be04e338b74833cef2747172dd31b7e79aef840379e43a927f9cf76a52af3fc5189c63b76e8143f3de7f5e2e14cd4426fe5301b00b7efb55c84bdd8df6da32605187499bbeef73e50787341e558af811873b0d60560acdfd028babf136f +dc309d92a4ed80e6a9ccee21767b0384c29ee0ddefbc7a02567ddb6287f2b0be2a067263dd0ebcc2319f5da97403899cae3c5af9ee3b368e8279592fb5d71e2960f09b560da1b0a3ec2d59d850575fd208bc220964bd8675db64a2b8de78350c64c41595a7213782d42901b3c80464f03bf5b2b94a4985c330748633e0b8c2f97ccce3f6ffdf618ef019e79a7bb8e2cb7e98ecb7b7473d7243181b3b31f2ae23a61dcdd8284e37b6fd997271ff6603dcd5a0c9bdddb9b03b5eb31defd63496e7 +d9406b3cb148a1d38d1578e341932ddf9d915520b3fd71143b3e02ee7131beec4c670ceca2ee2d43e3e6af68777fc3a1d92ace7e488acfb2f7171a7e3360fd66a1c283f7ab6a53bdc94ce6dde2816225fba579fad0d7d76ef6e47e2faeea1f5a9aeaea754ba803c31c11426889b6ef96eef2b2e0d086a18d1a86025360f94c2300f1fe766c68b5e9f427898cefe6a4850933a28a6f18324ded76109b5c4a8a0dc7a8c59bf37c47efb9d76bb53037102771777e3a7970c9565c73d3567c23d287 +fa796e3d2c8476752f403ba7ca572a5f24f97072b0462ff81df6ad7aff094ebcc2a2e3024fb6b8b5e88f7df1056e7b6ffa4057491cf392227ddb99f9be73532ce3ac1212c307c5890974a19944c08b4185966d3a450a9128710badf50927bdb14556b9f21992a2c4b5cd73d7ceee79cb8f2a43e093a1d3256752d34fc15366ff013b40464337d18c1cfff1781837abf94dc0b8d69f4facad63844d2b152344be3056a9b4f414975719541a187fa5963a19477f49bc7b3f2d5eec27f9c69efea7 +f3551ab6e0371e44e824e1ad96489d6577ac45428ca3940abee58bf638bf9ecbd253d8f330cc0779f21554e958464d12043543ff769c1ee5c4d43da6ec9fcc58ab79173c9447d41c28bf8c3436fc35bce25b5178bdc92af277e64d1ff6eb65c2cf993277f0a3d11f03f9d69fa36e435ba513a4afad8ba0876c705ce4b9da4250e0765ee740e2e4b1a08c496b200fc90a5623d946b8a7a4594700d2c6432525fa6901841d7ff85b030d1280bb856ca105b8046a5f30aee10bd99e3afbb5e51c67 +f2886a0a1ba698689ea5687a1f07530d39959ba9306ef85c65f1706194a687035c66592346ed51c1fd8815d0c78ddbaebf1b389a56ed500286a1ae4c5ba46a3d3e74cd955310428f27176a04a5669d727742c0f2011cf7c816e3201943e47b987a8e13676d9f305699c934d6a630d13d0dea6599a9cee245bbb6681b3538689f03f016718c91a8acbf1fffae90f32624269d57f0f72cae52867bd4f11ea8fae4fda6a0e445f3b78d966e093872d9e03845ab7a2e64222beb1bc5744b287b938f +ff6b7b088dd31ad565dc7ed622e4c0692e1da5cd82e7624640e8b892059ff55a27552f9190861f5a9af9d094ff12f0c90d90fd9e2ac23e1ab05ef380b7456ccb5cae03cfbb960f61c77f42d3fdc3d3882b2e5c49384bb998e59f3fe4946a16f250ea9889d1a91dad1a188e43a4e849890599520b3a678ab2ade9e8f43ed072b9799fe3c2520dee83707b955ecde4f0eb60a6fc1270ca7086ac747fdb7ad6f3549a60432b6e5912fefdca4021e2053b969fc6810b33673f7c4097653e7133b51f +e9e2400eda53e8dada7d63bc6c07c5188bb8884191e9d783c9d58189ef9a87ba6dc2f842d7b5e7db7db9ea4f95b85d7caacec1d5027749bb7c7c58be216f9e8a81094d1a89a915858708c3872e7d20e856789add063947663087f540b943341e217949937f1aabb4c3ae9cf25a1a9c900db027bfac6cdedf5eff058a1ebe6159e2477ce310807b208eaa9aaa0381b5ae202aa9c85ec1f9bddbc24016b2c38b6c84d4848ac18c28366dbadb06556e9d11ea51d3408b833fb81e0cca3bbbe91aef +dcd3faaa75b8d028ce8abd859fe7a42e43c3f6b5492abf38c248387920f9d65c563ef0f7a431fc32a1a1b92601c439fdf60209438d6e438d941ea26daf9e1861faa796e12926152b62a825b666bc21c764cbfef2e9a771e22c256f151fed17781267738f07c9b5b099531520785ad870afae7f625de07a4f44c9c0329c58862e8d563034c7210c57bac1d9d1a20ec7946189c40bc6ff7c96b27f5b27b5699e36dea00ec9259b887cb3a83bfd158b83a9b58092c91a15d1fca5ea382514921c97 +ca61e0b3255c55f2858acbe93d706a9b3a489bbb0490fd4689f9c3393d1984713ed93eae3dc5a65e8cdf25934d357dbce359516426b56b2d2253fb46a5a7d4579438830bc5df2304b6f31ffd4d957c1c902579a29f6629ea50304c985f6e3bb65ed8073f092ca2e77939aeefa22c004aad912a32aa13b903e938f308fb53af4b683759f466d005916d9e230cf52f6b3901d7f135286264fbdd4b6e41c4973bb47a03fdb21399cd8a6571ca0cb4a1354069ab12131626c219fb2f669a0a8504ef +e1943d8cd3c11d7bc66e6e79913dc1d77bedca874d3f472a79932592f69be6eb9159420f365341a4856d67e71e764c47d96a1f0565563b7f8b9b1eef0e2960049b4ea07236235a945a1f9ac7ee6e1f31791b9f41927e30e832909a80091d15fe4e24fc31affacb53295008d544cc844ca1faa088e121e1e5b1434d0b91fcdba90fa9069cfe1f5c3019a7903e600591ff8f31a64aa7333dc9be37f368be2b004d948b6304edd9a82d82e863582b1c8e51cbf91875b739a3aa933071c84377a3c7 +ee1e3cc49a9201c97696a340f11f6c7f37d16ea4b5664a8142c776ccee7e183a385eac990c31625c25dc14076342b325f80383bbdd0d6834dd1678d19be6b945f9942a7157397123280e70e10bf6efcd6da029cc194208c1f104f808ba19935d4d82fa9734fa32d25d1e0fbefb6c7eb07d8e14ad43017805bccd41f30f073fdc17f2f5d7d2c63b7a8001e63f29eb9d3938ef02169a9ae00b445996e7c46dca7b35f4806bdb0158bcb10ade485d079d7ab0413dfa7d952e0c37ed195764ce9c17 +e4593001b2cefc06a8e9735eaf7029b1110b24eb3db43c17ff3a1a9c3078ac9010d9eac82bbb248fdf0aa45f499f5f146c3a2c5a876570f8bd685cffebbd41936c5d9d4bfb603fde0080fb6049ee21bf373b89c4bd991b1916dd6432e70cb3068528cad5bf14d6f4842bd42bab836b603ce40da00c005eea65d405ef80064ca3f9d6680958329568c45aa21cd796328af6d67a3f9569d69f790ce31da7b36a643a6b35c89c9ba587c36db2d81be33e0bd0d2928d38aa0211f4e4f76b88044f07 +dfa5b4d98710cdcecf522f94a160401b5349bfb47dc8f4a33d3bfcbac4b29f713148259afe1e9593b80a19f3014d976b6b318a8ed37b5b1b0968bd3239c9930e42895dda6a120053d33f435246980fdc98d3082e165bdc8c22a775e92ba6cfef7359a7e2f01f0cf4a9af1e23eed4804c22fb88a9d3c7534b3f6986605a1872ca8bcb8afd009e6d360c8766966137cb3a22b5f1d3cd15a661e9fb36c2bd6ad8a18865e907356a4902d3cdf650b018e3ee8d052755dec8a6ac2d2ef0b531b415f7 +f8c2cbb8a88886224c80b57bb1a47002805c6f432277c3181e632ba5ff0ce5a753f6f629fa4d83434a0878c6af3378617163ac4cc0c255c2874cc134b8cc5187182b01738319c8e5c3c47efd88584838f873aaea2adc2eb78d705b8a18740a54ef8f8874990238889a04d2acfebdf88b7411643752807067ae4ccaaa862071d48a4441627c32c7d3cf94497e8100d67ac07970ccf0e502820fbe9a57d8245ae4d89a075aa96e3a18740050a64059130311808c7de81b2f94c8871864eddc9397 +fd515a427b3e574ff8df602b95e18f00980c26ea730a77655dba9a7dfbf839ac4f18263f1580f3c315a88d380885d29dba4a739fb9181375ef93e8f3f8ab001ae81cdd47ed5e9ac0b91f7a63cddf86b60470ea1fdca61f67461cd806e03fb47bb7c74b6c47394a7daf9a8c3dfd4217c72c7463e2662de333008c99ac461dccb3a8d4d961eac7a2fdb3aa3ad2988b3b939efb972e3a97d78323e31888bf177a1b34e25417a23116f56bfb35885288d7a0574c54465175dbdd6d3db1688d46f5df +cc415144c4512f4f27b8e864df6f5b4be416900536eabf40a830404222be9b195332d1eaff5cb3688f846fb21c4cb62158053e7b5f8a53dfc818dc8f615a8dcbf7ca0c8908dede6d5a096992e52769fa3c0188fbef6ee90d3a427257b97349a0ec155ff0b59e687a1892bc081725293430a569e837da7f8b2dd4264073e651dd130a589063382404eef24484e0b65ff54f121257e4248baa68ef43785c31bd2ddaaeaf1192984c8370a260b99ba6bd64e5f229dfd86e3103bdb1c9846ed220b7 +df876026e6f8f5ad9db8e9491251e35682e2e167e8d90a969bde7552ec0369690d6385941740e1a498915361fa11df761ccc4cca0238ebe181ebc31d6e0f8f659252cd389e948aaebda56a9f4e89ae61f5bd37637f5d0558b66b1bccedc8ab6bafd206d04b546e5860e34e134d9dfbbd5b3232a85f8045010db62b69dcec625fbae6f241372e2e1df09bb270604770b91e582a01b3548331ee2328b81e5cf64b7b3bc30214f48dcf05a8205f3bac2efa862f092a960e9502022a6c17f936c0ef +c65b1afba0e2b056f3174562e8bedb651787055d87e6e0c5648c1c07358c193c1df42758180561b192b9da8e98897042b6671a79f24197b8316e05d5ed2dfc68923521835eda7e79683ee975c4e224f3845b78d42c4224a326a5ee01e6abc09eef3dc49ad0832bf45fd530ed0e215845e9f274b80a421253582607bac73a86cb16fcb0aebc5198d5b8cb58fac1447d539517b70e375fcd01cdafc4a93160a6d19ca9de4e1834cc64f68a5fb88e628475afdc6909fd83b69f351dd25c7f8bd497 +f590aa72178731f2cc4d8b75098831ea9eb796383d64ac31b6aa9cb6242b18e66c71aaaff081c8cb0d98a1f90f3ee5a8d32f1c77e40e6e0b4ff6317d409db783beeece934e734ef7b21454303c83b1e76f87c645f533e7d8c6499be63c2409448a98c5b7573caf9399f9787c11e219d8c1570aa1928a242099bd1f217e0916f8395814c33d10a5665d12dbfa16f7f72ae4be6199c7c84cabf5d614394916ab51851386c997254a5ba2d5a5f926d71d7461d022b0b1f83b07cc7f1ed7287e65cf +e18371ec9ce9a71cf9f36d311ab4d2a91a2bec2139a200cd4ddffb14ffc7919d699e63deaa81417f4b301872b93333f213ef30df4922bc47a28163a72859f7aaf46255615380edf6c0212a3e65536b6eb45ad174bc4dae0ef66ccdb3a85fa64a4ab89202e424a31dba0d7b676694bb349cef4c4f946e3b2513a1f9e9a9f5ccf192e0713e28f53f6265e696b2af7846836fe9dbc723cbca48e48d60fbebcdf6cc999203d9b34c8495c2a924c8f103688165f59343adc7ac2e244ddc0c5fea9acf +ddc6674284175db2d61f0cd7d4126e38d8ff587771a5bf80b33ea99c5c70a81d07f6b7c98f77b829a7bf91712692aac76d81e72dab4c4471363b7aac6df019111b9a959eef932fda49e4de107fb84958cf526eba2132841f2c71b8c8847870301048275d759c7b0617948b292a3034315b852fca1b29cd292b12e023c407318da4871ac0f28654db9e9c8ec9e199e7167a353fb40d36f00416e57bc025c90a97a200b18e1c43d15f4cacf94b213b1a90a6e051bcc70b40f7bc3658d3f337f97f +fab08ccf593bae844bbd01b31561894031cce9db58f2f4bc094843ffd6e1f1c28067f0c80b5019193cebdd62eba8b6b974bfb9b8a637b4a1f82a1ed48147c90fdae4fe13d43dc961abced93df6ff1122de07f9562beca11e7376999cc78f10288f4de65ee2f0f9364ead70176c10205a2dd536963924b286b0a9652af303046162910ecde36e9679f2683dffbffa9669beee3442e4a9994388eb81acae0e5181d03897169fafbf661d5418aa4e61c2af45d703277eb0402c547839871eaee16f +f2f8d9e6a7989292137cb6562bb96e011e4d2fa2e187e4504bfa4e0d510f003147ec7b00fad2b4db88dfe0782c6cc6fdce6a810599418621c6fc24bf7de44c7c1ca274141eeb7ae9860fa7d848084e2a2c8e6d1d208c8b061c7b3ce9f00c4aea123b8f25aa9299b1503137c01857f863c8406a8bfcd78c9ef4cee8b4b249c9685d2c5cdbe9bea9d3ef8be95575247fb6c0e2f59639d42768dfa3a132491dc808282e7be1867ec0dd396f06b58725d97eb161025b6ef6eed0d56982810d13ed67 +d57e8a70fc2415b9275113c4fa2fb2baecd9f7e53a21a330aa82879059571f3417cd1cf6b2d190e8580dfb34eff5aec443601ef8d668877ca4eb8374d23ed95f34c5ba8b8e2b8b2bee41b41552ab027e4e9f7805020b3fad7c008fc78d5bd6d87469c682c54ff3099cb1b9e2e00d5b71214d971ab8420158ae764e6f6232c1ca319eb17dfd1890ef45f8f5251818bcb948b6a4a520922a3773f8302f9296451aa608d7c0468e49cde654a368b36ddd96e6972c19ff21a49600bd0b7b39f6d3d7 +fc3d1c75fe62e4c6141539c6eae1cf23ae8a1d54986b1bc10c52e7a1a74a2301909c69b1f7338ec5ddf031d4789b839fbd12f53ee5050350eb9adebef484368b6707348ebba3df2bc870cdfd0d43729f068d300935944a5437e2c9a50994013322568bdfece201a472764e6298055161c1563c4f073c8ade020decb2c433de4e6fc9d0dc85bff3371cca15c9b779b0173e34e37ef7923e6382e2abae8685536544468da8e5c19c0161f2a81890f193f8f7640ba88f3367aac7c4ecf0d90b6a2f +c184ac2a820a3fd7b48700c22a2970645f8fd5641048d56ff8992d9971c1d7d8157e92a0bd03fd8c9cf13ae20fff6633c969d93aebabce1724f0f480e0987497060371eff4fdb3a092d93b415c035c2d3ac7e8f5d634cf02f59a3dd19c1b64296d5d0af89a58f4d91c30f749ab6cd36e047b340cc4424c4536a212785a9fedbd814d01ffb97647eea1821fc751f132522e597eb3d4e6d14cccc110ce0ac2eb6c3056904666da702e9345567aec5c2b8e89374e9bc90cde4b65a618267b523ae7 +e2f6a7a8869d310e8297e16e6ad186ddf7d9fd8016b4d01cb2f90f92ea049300cc71443bc50bc0c689c4dcb76455560246ece06419759cbd6f03e32bc86fce18dc7a1a2b930f8c9bf87dd246e67218f48beddefe1d78a864f009cbcf6afd7d6c082a9e17c4fe11a0e9954c898fd1cfba82cdef7749279a8df3a9916e232cf19cffcb04cb436e8ad701e66a842f04e9e314cbd9e0875588cec4fcc5e46643bdced8417a73374eb97a0f8f4ba48b3809ffe22da4f6637d782a086f0e89055d4a87 +f6e6d9c680bf906dff36f8909fbfbbe2b663e53fa5482b3cca7584af09d6c86064f18fc3e001891baba1cd3bb6fbe4e807cdf330fe914b1464b6ab063573bd5b7e0ed57613af0e1e081cb75ad30fc6b65a7f982a0ea832eb4388d0bfcdb7a72c9f5e0110575f202306226ed99346de68d9caae2fbfb872c8ac61ec83041af3ae512b1341ae7e5ec55da16f4e6b77b4cfefda649cb09f3b5d41ff5c2a61f7f2cad26c7d115dc3943d7192dc762d8f2979a0bdf8f0cb0e5101a722b9b46809d317 +d9a0d7bf7b252e0126640e46af5dc1cf91399cba84015d93b26a446f19d8f3cd0a51dab5f60ab631395c5ca6b8e7b8ed7bfc0c4d1b0dfc9564e5d69bf590c1c6aa4577e547fb05c0fc6eec08008f8b0ed43a9e18028390652390883e08188f0799262afb90d0df7ff54e1f2475053a8137bbe6426cd8167d7e1b3cc35c9a001f99355db5629edfc60dad80a67775bab580f76e1b5e98776e81895b5a7440d009d86a6489acb1d3c91756be5cc59f9cd78d5f03d488a6faf45be9684e34e32247 +c91d832d45c457fe48a9030534433743e1afb9ca68b50df6b5f9b4c232f1892f2110fa6c7a6c92d10edefcee6a6fdbe2559d1ebca8da8b2e920750d6f78bce24731d4c4bb666f6bba696ee323132ba14f9311f3e0d7002140ec97523a21ed7dc463f44c5415a44e8ed1cc646d3292560ddf2b0025340c033411fb4da42c08e4cf1dc9206ec7054021d6bf34b47aa3cb6c09fbd0510949a41c97595f859df1300c96b695380a642a742561ff361b7008d6f1263690750b899e2c8669f9ba8e1df +e8349f774fca2f28469fae32b887fb0dc10708dd91bdb642825ab951acd304a5d761ee3f023cfcb06290dd905fada24d9262fd6aaa58935ee44ff56ddfbeace0edfb0cbfe00bfe5faadeacfef21690de077bd3f83f1eaa68d47942d8e4760c0afad13298731584b13050b80bd0cf08a5f92e674abf044d173266cec65bcdb0edb9fd466410434e9bb202016c914956c94f0b1feac939f87aaf9b9f9f31298390624690e4c438d9db1acf140467d8b9ef1f59d4a0d76c2a1dbd46bda35151a43f +da0090d7917e88bd407a65f14b0b6bf0a422dac24c2bdc2cc782e41a5302d1831c86541be348c4ed2a9daca44faad6e692fd6c132de725ed696ac7a14b6fc1156a8a6db2f018317cc08a68532e8ba61d72e788b4fccef7a1d5448b1457fbb50488a56412d1a2f691ce7a5331313ca5bddcf59ad617a3834b376a887be1a0d4bb394c618904db7b8124abee6a2950854e631b8991448f504d43ac3afd466d1bf24a493a558d73249980e5350ad89a49c70d2fb6782a2c2a738b4120ccb78d5b0f +cf4131e57969c6334f92787067260d18ff0f6ca685eba2d9b77748ddb6ae03e635efc40b4f918e3014d44d9fda781747b00733802dc1057d3d2cb47c6669ae8bd335e5721616fdbfeb36aa3c7a851b1b56391e276a5bc6fd069d611eb22e370b9f6171e1822d331ca55d3e66bd88b50ccf1eb593abccabb335b9a79acf29fd090e5b395814b8bc85270d3d98d3ffd326b99bd0e8041def7079c1e1e0b3820991ad0876c967a74de6dd8b6a83e3b607da416dcbb0f3f74a59e353f9d45305b61f +d6e1db516aebe10afb8adff6fa2d493b0f1811e3397f5e3f2c4829f77dc2f3d3eca6fc289da781dd7aed05e0d4b3d4c06621c4077b38a5657b655f5f10376b03f3eae423332f00332badcb69be1aba23da65a7358c05303e1291a4bbb55fc60d3e7a012395a65f009d279f63dd28914237e89ebec29d39345905ed74193224bfceb2a3c562ce13eae7dce66cb7c339711b42a609822e3c6a5e82c344eca9fe74795a301cba9eef5377923be3bb32b13884d5814cc8b6dc8e167cbb0ac404f187 +df9b5151e6a0cc00a7c3382279fbe931ee46419971c5510e5c237d458ad6ea15ad4ebbd0971ee62f5f0393e175a6fe057fc353afdc7a1471000cfeadf2b69696acd51a1bc674c1edab0758eff01bbca7c741724c61fc35d45f4af30a1fbfaa2c363808b4e3f19416f67e412ef76a0fb254d37b24554828d445b402d02470cb48756bfe138086a7771a0db040c3366a07d788fd94e331e14357385e170eb9abdee651693f67204c2a9f2cfe23039260e46ea6bacb63b9d4a25d25d24bbbd489a7 +f9e8653aba34de670264e9ee769211a87858f9788dd4c5a6178c3fd05e15b0414d5eed95419247c99177b177efe44b877bb9e7843284f8adeceffb02705eb5ddd604fd454a4422bc4b47cc8a6c3be9c671c7ec4791626d4c3aa9c37f6987e9a3020fe8191ad2f9b56a322a1148fffedf8dc61a933dce854d260931c5ff544e7f8daa3863e027dd4dc46ceea6f333fa816eb7e0165767ddb3cea58f1e1632da1d359acc67ee5b926f9d52e32419e42f9a03d762b42f8b61f3cddbadd99fad08bf +e31386c09dcf74a0cfadf4732625542b2dea1d847d35432aa29b35aa4f83361c295a69fec2a0485edb231e10036d9b5bf455a3a46da3afa269be2b1ebe45485a28d73959fa98626476317594922401f7351144078fdd812fb30671c0cd1fb42f94ad1e87b08ed33973bf209f5ae20ab9124757925c21b423eb741f8b091313d46d549ce65b35eaf7db64fd79e9fe0bc3e7abe3cfc116988ff4998e95bfe34b8fa3e710d484b15b1f20dc653ae2cc95aafbe80c1a484379ead4594c7f807b0ed7 +c7663ab058029d6174772b520e98e3f0be547ff8cdf6103bbddd41458ea6819cc0015db8ab1b035bbe9bf6849ebcb62f372ed0bced60a448bee460f1a3ce419467542d97acd3c9d0b58d3f4990e3f9bd8a2c641779289635e2ea10960cba6f7347b3c35910bf9b52955c8f9fc57f7ca7a7cc5ad72e2f36e7222a879950d4f8c4ffa0257cb25e12139b1249a444db320fcb391fccaf3db468614225bbad310f6675f99f2938bb756455668f770de845be14f3525fd9820c06b3c2ec3721fea0e7 +cce7c6d76b073ce1adc9b9be845da82322728e38e2092c5deda47026545ffd998e6ca7441fdaefd4bedb88015e0dee137da0a380130eae1479aba6941f874751f7c27fd66bc5789c29ce3ff8fa0ef9fd5eaa6b344589621b23781686e68637ed344a1979c113691b3a2147710a23c4f1d1ba07a6be249dd0c76e574b83e4c399196d23907bf407ef27af9de863c260f965042529905c7ee226a260cef287972ba493e9c7ef27c93e275720e39efc0d3cb5ff6e68b1e4236aa7b68cd7085719a7 +c6b173bd83eda420d021ee43ad8aa267ce4316e38254671f1b6ea58f203be0a9e49324bab3dbe4b33f761bf9443da5e4b568819c74a73c529f1ba80f8ddc7b9e4a9b5809de721b211ad0352e762faf3b8fa28c5812e383911776ee4a7a44d8e8d4e923b770fe7ffc6eef715f53d14f53abd9ae78c3dd11b658755d756431f55279238772b1526a1abbe894e56396e12401fbc0fda92ba49439d414a8aeb30709d3bb296eec8bce6361b14ac6d0a4f9d6f7eb5f07c6fcca80f6afbecd1b3583bf +c51aa53a05fc8f255c950d3339f026fcd6d8c84c24eb378ba1b166080eb290552babdc2d9a6a8082ce63ecda5570dba2c5adc687b851916bb933e1c0a1f6307a921fc0841ee30afb4daded113b72adb4a7dee59efd85a51b9182e78247d521ef8d76e8d2a710ca549c13026dcbec267ba73d28deb2dd8447fe95c6e374679d74d4defea57bbf27e61c281197f3ff3b3f07a62980af7e59be884edcac08bb45dd6e4d61069bd17183ea45ee001de7d328209b855689f041239c604b768e976517 +eca6f2dc5c35a913e55059f2ded4790e3bef84cfc1d74a45252abc9788ba68e21e013e5376c54ecd5c0fe8d3ba90cf30172ca749f543c802df46390a5f60928f96b03db049cf9e23c54d6fcad3acdfc6548ebdee508e6f6c0a91fb4ef76d35e6a88468d65032d735d6e20418e8c3872426393b98ff568a58780bba9ca6d6c1ee2e5c003b5b182b770b3610ef6621b9585e611b4cd4b3d9b081bea0756d46b1f3fe2a677f3af2bf13c295c4bbdf5c4d4778bec7cebdde8d887b493f6ad1fa5bf7 +ea22a06538106e68eda2c08b51abc90ba0a3fe4936d00fb632f13dd1a84c93b9b927ec9ff8d7de6d9926dfa9a67b1b318ad8bad147cf8cd6f281013cecf65fea0ee1757adfe8645c787951e3202ac8bd47bbde18487cb9e83e46ca7deb5195a9f39e9d1b8a56a908cf2d050aeae1e0805072e0d2e404d0cde40893e91c55f4c156d5a955a6f4c115225b5405a61ad6739eb4f06562c0a26fcfe46a8b5110b7ae4512f06d4900e0697477987f8e2c5303b0fdeec53a240bed7325ae6f3468c24f +e5c34767ebf476a0e22e5681263ed39a6b291f22f1e408b6ab7bdf08f2b7b1aa86ee7c4157fc79a719fcdbf00d80ed04fe9100d01b3dd4fc2413b4a1cb7e398e8b6754fa53b76f5d5d4810ea7217908de3782bfccaac089db54d5778358a689c19477e6d46a66207a47457d6c18b22e70d5a76b09fd2b9267101851adfab8f6389adad2f004462124ee4027c6f16b7f299b14912804360142d6922171718e27d26050684aef2d9cd89f3d1fcd00182b047acfc25015aefcd0cb28a67612bff37 +ffb58b70ed77ba82c796ff5061ba4a0e293c9434b7e7ad6ba1f43b2a319018c75e0682c2898c2a8c53ca789ea6fcf26fc9809fd0b31859a426d19cf52778ddb5f219b5c8d112ede180c89f0e4c94380df6947ce8a3a3f7b1ca0d5eb5b651977e1640b99a2647640de7ce64f83795bd3014e071f18d12ea4ff822dea06d3a414851e08296c9bf2c95eb06d27e8b2cd32159c126d7b2de0667decb1b577df47013b0a4e4a8895c2d9cc1a4139b479b5de4ea11f3021a7ced695d831effb980ab5f +cd30fa476269946bb0105c98396493dce1872c1514d69597ded63d8b8254730e8616b0945f051d3c4f44041479d81b38a9d1d8a03f0f1b4cbc3878eca6db46b74d7e228ff6802a427a5465fb164b5690697a6e4d97f7bcb30743f1998aa1b468d003d22515fe4375248939207c255efe5263ae7b22b5118e1cf410daa6149d4ba4a1466d921effd93f698ac2c3b227a0e9330a62af24e202e36f1ded36d05b22a90e312d83c1d41ac40e880e6ee2bd1e3d0c90759793feff0cb9701e773c272f +e78a06b0156adae431daa0211ceec279e8673400502b287a6a9c9915cbf848b4753ca3b7b03839eb6a01bd62746030a98891c90a6189943c4deaf5e03e15a80ad74dcaa17b87151f8bd299769f60f7ef4b4ef5a88140981c6ea8efa5e82d062f8bd3fc6cd0bc14494c6f418c9fc4d724233db794e6aabe86970eec050239f7722328d13e68da0d9a308905b9d373834c65db9db1823f20c4a611fb7e307c95874bdceda2c20f8082d6558d1ee45cf9738c95b374dae46fd6794f66328a646fdf +cf20882608e6f13b94874d913058096f1ec6b4c43562e822616213d19f22b7173cad9608e4eb27a53451473b4d4567e824fa76a3333686baf0be7dfff3882991aff34d3f20142233d9f73ab77f124415abd50e55833afec0a1f8d001c17ac41c4da60d4278004da06b3af8714000c949f2dd9a7aba27950e6fd857ee50a084c8ce29319ad6730a7783a6812b44f609d4b5a21d9bcff48885f8598dc8c276070a32473d82484721f0dad87f0449373d610a03fe2acf6a2da4826fb4fea4f3f647 +d138b05b861f251f7e12bc84027a65b0c56c020a2dee91d9855a3e8cb2c8a4555f55b5748ab6018bc2944965a7525f6774b786ce6d2e70117d020a87d83a97b98b242a892f681cccbbbe3271eb21a0699a7043d7c9a8b24cae9ea37b8adaea8d04bf56aa8cff9ae7f7c6e98e09033fc8bee3e462136ff85743f4803ed4bf61a75393fe2e630f0c6bbaad501f08e7db92759a77b03c2bea6220dea9a1d7aa371b92c5af7e60200e7db14a64655eb09db7f2a9410d826bb0d1ccff509c33ba268f +e81156ee58d726fbb430795ed85782a37f1e1bdef11e634f283d3a277af29ee1c243c8bd18a0398a09289f8f3398ce34b076ffec10245799fe471533ad0d86de41d5d5a3f9e7563642ce728866372ce6daca0c81b6f5b1e613b382fcd8f70944c87426e6e3db491c50de14f7333ae02e79468fbbfc733098615f1bbb0e848978bfe63136c8d1e48adacffd9e6e46eaf8f41bbe75e65b06a03e2ef1c436ea4029c943dae8ce418524f74168390d03a3147f0a0beea21e11c169c21b3ecee0de4f +d96ee5ef3bd4ca419cde61441313bce5faeabd0ba1d5ce516d39dd9ed84275e142a5fc25636026020cd0d0f4cb8176916a8a8fa8bd5737efad0eb8117e54e98df1edf4b7ff79782ceaec3ab80432ba5db2ac8e3885ee98396cacff63a34ac24e2b9a646569d9963ef4b187ac20e24e44dbcc6fc77ac3470d3c8905160d0f84e9c981def0ac140972f3d2915aac2812478cf2e01924f40962ec9c8207308a9190c3e50e49c0ee41395e8970ab6ac316683d00ff2ce660d626b69505440c17d547 +d67197e0383daecdb99e3c11b675c013d6d4ecacd67779940a189d1f1c5ea1cf045f846884e2e2031b3313bc723acb98e6a1aaabab73f5b5bc03771c273b4d73581379da515685048179941fd7d1ead8888f8302c008294d5f1afdafe9af88b36168cad4f067d0c427516d03bf7bc9647ade42e406bef51213b910cd016c7ad78b36dfb9408e26dd40e0ae1dec4ea33953dd43d6a0cdd4c09da76d10e66d62dc164c9599bec36d727e44eb979b8bb92bcd05393884c7528a718fe4617d2e9e17 +e3964ee399446e490f3b4b14746fa3d28300c28cb0481847ad022c430e312dd3d6d0784aeb905f165f7876254cabfe1661737b1eb2169c97f01879e9bb0638a9d1818544ae8f7d057569fd7451158c8652c05e91a300b13284c34634ea3487cc0ef12a637553170e01398bee995ff5f0bc54426f842c965a094c26385179e063c7800f7a61141b3430a4fefe251de0a8e9f87ba7ae102e4de99a3e979042f2720ba0c0194035d453cbfdb6fb94f62d7961c04e0160371cae91d3c3922f1c7aaf +ce25d1201a373ab03edd867dab32eb7b3bd96eeee02d68a3f3469e876cad02570631d795093eb2045238615e0ff4b0c56dff5ae7543fa3c71398b067af2813ff671440498e2f7e91566b9ff7ccb4c03d9735df047ef4359ebb236f6bb8c6042f1c0b8e0aeff7777938498981cac67989c2a2180ae00bcafe504127705904e6e863e49e64d747cf5fad5cce7fa9d97e4233cd3cd2da805d8a9e95d05887c8bdb7dc76a70382970e3747f0d1f324edc9ec411753c21b60f0364769861f35593c0f +ef44a787aec42ee45670b362f57de17c8fd974b00c03dc57ef9ac8416cbbd31ced94197a334654e39df64785665d26ce18f605ca0d117e0b28e1efa4d9e0229dfc8ad7a45144973f001d2bd02c30e17942ffb029e6158db5004a2abe026fb8a9f8ea0df1f56143c805c13553d5b45c6618e1a90a3e2271a09b1db1048ca4084d0916db83ea2757bb4189411942574d3c0501f21c357b3dbd9de1aae8f5b585841926875f9c7da43381cc0beaf345e5c1f5405ee81fd5660ce646864cb61fb047 +e981e014754772523dd4f1cf5ac6ed4b2fe4d9255d3061ffb1028cc97048c9999fdf271284a4f978f96c4d472054d1816954821afa0e143f6a4d5264145a93b3ce1e6dd352303ac9a3ad8a7d9696e1222751797ea6e27b6eb392c0d75ce7fad611abd1145c176e834a64b693c32bff8ee0a46340f33c70a573ed17a0103881d6121b2b023ec04554b77bfffe228e317cf05bc7c4a4cd169bf8bf5ce40743e1631898fd969ed63c6e315351dc3374f0cd210d0864fe3954613b192ada590f2307 +c8059ccab36162e45cee502934f1de53b2fbffe8cfa92f7647536ae51dc1828ac9815f71427a9aa8377d2a69b77d8bc7277f74a6ea2d543b11747fd4f900dcf2de73475eb28ee84271dcc428da0ee91b9cc9f1ffa6c00037c070b076a02b87e3863df066c059dbe544391bad0135d94ef5ff133bba0ca0a48eb7cadbd42e90bc455dfe4875ae7a842a98635bd38c36f4bed243e33c301f5fc3652d2955892f79f8b0b3db477497d0ca928ee072e2ed5a98435c6b5975f4e999ef04b3dc85ea87 +e5125fc4a7b43b9668f7d88fb61067a4a0e121095d19c9890493de0efef0906841a13b61bec20bc5b3271c20c6f52bec39ad0273f1f3fc482e5085a588cb8b3c9b0594d801db01d1c1d391872e4c62d03b460255c5d10e6548514d2474e7e480e38557f767d3a6c875b699662bf9635bd9ae440f8c655b7e54b8713e6e69ceb21a1b9513aa0dd0a9d0998e8c412081d29866f83c89a5323e185ef16f01a43e0845bbb2fec4688f716e15cb3b7d62b9d3800cad8fedc5a838d2680a0fb1b363ef +d877e5e0c59efb7cca6606e817eb68ff60f1fb4ffd1ad29bd04e27079dfebb7181ae1867b2053d01869c49ec89254fb9709e8231d4042f026587ed09323440ab7ec0704d96a0f512f3ffcd7fbc94f28a4fd93a5a56894bc93ad8071940b1efc39c1b62465c030b270f1ae4f9a719ced3fec0da6521c1fd5a0137671959e3078d809eb360c0a73ca48a2d355aeca9b8ebab16b2a92fa6c0bbb28320d2e0c21b77de75dc6eccf0c263b4dd944863f0bc8ffbd28f51c07d5e6afc18fd64cf43262f +d7559d19f2a0b845bce6fa43e887f84012900d3f2e77792640a0f9e15f8ff2f7417dc1d871c7cf3df3527e9804f5701aa5fe8cd4d1c5d631eba3b9f45c8e86b56e384af5441c8b19d48545fe76be8326d54c80811877e44bb690094c7e5787c2f62836d38415b64a8efe50d9304a3ed1cc2c839f05fe45f4c3f5a60911d993faeb337e8bc91be89bd399e12fdbe775d3163100d1d450341bcf7ed9e7b1ddb4f6151ef125ea34e3d12a09ce735eabe5ff048e91c237786939679b6eeb385711e7 +fe9ac7d108cf032a8732f929de5c89b1aef1ddf241d374604b3a5bc57dcf58ccc75343ed88fa9e34dbdf0bbd6772f6e5bae0e05212cfeb7844ab2860f48753daf17c502c8fee1023ff1328cd60513e37ca8f4ee71b5233521331c9d3da7958ad9a26899b20333ac612b60a6a499d1c7f2cb38f10037afea9fe76679acf6c5fe4a514a0227ca7af1577b0296548360f2728cabb3e93195aab54181724b0a8a2f8169332415e7501aa381d883329190a7c898332b231c549f826d3bb59fe243c57 +ce11274e1426a40c69fd45805a83e168ee00c485b8ec806e6d30165dc0ed0038bc2e2438ba548c2fc4dce21272bf2a27dd1b22d119eeb285a9ad1008bd7127eab053af1bc0839a2efc9e1a5c4b173efa3aa4f03c65d01df5dc0f70a64d2c956c5a01923715d27a8b3c43aa098e68da9e26246dcd7034e2fb5a410949221f6c4a5e242c63182bec58e089ffcaf6d0d5c11cd3a50e21bb98c31733d32475d855f324bc0db014fa7aef0d58122393f2333014ace34aa6d0b65c302623c2e057a247 +f1ed1b9116035b1dc083687ebdfc0dbcc1d5f58ff291d33915141b48483309a1238183b215532c93edc1601ee3e59610f83250086f4270e887d276ec09a8bee177c8b5fcfdf7d6ca26b1d735cae5d664f759e26829a2091a2732f59cac08abceaf136da897ea85588cefc4f8a209d63811c688667a7d47f11e885d21d0b22d921bd070eb2b9b6e387bd1dff7ce68b4da99013ef710d622c508f5df24687a7fdd3374949921996d493488777f2a2d1a1429f76985943f3f1ce2ee0ceb5f54e3ff +fcb99e617f601cb0d7e6e3b908514ecd26112881acb0a83a48807f8bfd532bd01c6ba4bf590b3ed140d618411d7e8ad0e97151655fdfb11e14d94f2a75ecdb721e2727c5dc6124a20a126685a710901cce236b31737158982d4df46bd4b6fb7446295f525b183dc0fabe742f212ed9c63eaec35e11042e93704941de4d9010fa1cdae787e9e16e74c6ed99239e23e9ca4288e1106e570b1a05d97b653edb1e25ee8fb03759631819c72be4d81a7bdc3740bea916182ab56d40bb941089d10387 +e4e59d6ba9c679269572862639cfe86867d079ab06384f5085f0f09fac5423ed44eb582bea0f67e10fe7e618525f17de1e0b6ca137fa2e50f4215e57a3346e155e286cd8f09edbb0e09c2372746ea607c92de7c8ad32252350d91a001af172162c172acd6584eae9eb2d7534f0ac5b19cf15b8355f1c3d21803435d36c33e17333587f3e7787a2bb4aeb83be1d3797f5a34a64059734a16582b092cf78bb45a47c3a23195ff6cabf9f20ea3cceaa5d690744f5b1a43e9fd895f3dc93b8ed7607 +d910b3bea135b6193845eb9b44d95a608a6650506df242429d73daa94241676ffdda739f72e013657234c8f2bb07629403beae113cc13ee7fef48b6767018890cd31f0e8c951274d084bc5cda5821b9503f596105f2cbf34dc3ca4733a0049f10498d11a3b1cb766aa6b96045c366fa07de12bf2fe7341eb14cd5b4e9741e302a291b385fb26e3f70b9445e259f480b15acf69ef2314f7ec07823162c29b34b02aaa1fca7297c58823427973ce399c57c8b4d8c2c973cdf713094a6fe60db8d7 +d7e87493cbd06ad511d85ff908c8539bf35b6c9165bb3cdc275bd56fbac70c5ce0c11eb6df5c6cbc0c3b9a39a11b34f8b5a6467bcdf20961db1fd5734ba038e731c6215b805ff6e4e90f414911ba96e6867042c85d6705240abdb3a6cec98f34f18646bbd1286e6c17c7c84e311e80fb904b1e0f2488dc78fcda461dc366630dbd77a6324b860455a06f80bcce093150b9482bef9e1dac135137ce203acb599530b9cf3262c6ef74e45b9885efe3c8d03521df3ebc9eb013f0c77244df5e4217 +c3851df574c8f6e4a854fc38f5ef33b8c04bbcec5b882fe57a75c45d1bd9c3e985855888ef9bb412c83b8e96429e6ab467075cf4f0d825728e07f17ee9d1bfb3ba447ef2ed1c4ee3c115dc149ae1a15db4de72c7576c09ebb06f5b4be4bdc60615c7e8ceb0a22e4488c8577c00510a60aab578518d456897f2dcfe47c1cfb4665320246e17c728c6303075b74a9f2081a93bd46cd4269e7307a78ad235a9d3461500ebcab253a0bff07093db8ca88ead010f0097b1c882722490c73b32250c17 +ed0baeacac2b1691c48d1b00ecf1a822f1e2206767580ec586223f239c00ae6f84d734cf329ff3379a7580c2e81ad6627135dc7e0af4e64dfe029303c14717d8e21e8eb90cc18c9ba9629afbb7db44792ae4928ac2e9c3926ff35e680426647c7bc46a88942c2a03ebd56d625589b81e0e26b429ae4d432e119ae7cb1712eee47ed6c7fd38bf7b34c9b243fb5bbc03475e63860f606de8218d87a503e2afd1bc5e588e0675898b2954a9131eff1a15fe8eca2c712f0ee5a02e1ef20bc623a5ff +cfcdae569b946ab37bb080c691450326e78e1dcd6aa7fd3a7cfd8c136f84843f3df7ea57f6fe45f60cb4f9bc39338d218c69b37f45dbe2231524b89a44b7b94d244175e0d38e489b237a0c037df48f69f18ffbcf6f08c209fce379557b8dbac274022188647ed83da902b3da6f5a6b96ea85337dbbd9c513af1c773469ece20c0b09d5c4278b1f61ee5103008b051f038e971edc243d73964353b28ef821d708bae534d12556c56dcd0e992c2bbb8286b5704d4b9147e156cb3dfedff1dc434f +e2cb9ae08d03f90b6cc0b5d8da757b1d79d79e8b60c2441faff659bd7b6c19cd49116afc4a22cc0a2f4c7807d476a904c636052b67976b03356cc2cdbcd9de49a232cc3ff325eaeef16c9c55b951e429350cc6a609afe3926fb9640ed891725167786ba0acc6418cb26d2602753c35682f9d7fa516ba84a75c452527c67f00161dce9f65d07b3abee80637ea662ece79853fe9beeba55cfc3019d0a58df89dde6fcb4044cc34fff1f8013846de320ce75ce06876e0f2fabd38e43d149b9b3de7 +fe109b01a35a649524cbaddf90dce137429b90f53924ae807bd2ab50a1a6ff7151baecb9dada5f86691a83694615b0c958460e3cd0d5cdba92f982acb75745207dd372b9e0b54ca07e8c80a71675875fa076e62a80fcd9b875ffb7eb19e614e39e8350059139c7adf23e01ca8a0f4a901ac6bad2db377cd1b466f398878a158712033ebe79fea1769244532608bb83a21fb512e8721a0270e3f739d1a79cb7ddd1c8c8d0d8cd4b6030a5c51087b5ec20dffe1e481fdcb5f0ffd68c28299a7bcf +e79c279cd17276792ea5090b62fbc86bffeed1fd7335b67698d9d52362651b4e6f57611946703ac6072386f9f75e0f5211db1427895acb20ea792adc1e34f61bd03739e6e3c3dac773ccc7fa79504adf9180d29aad31f569e61327422af7f268edbb173cf29016ee7f13beeae9fad51963bcb0cfea4a4df416b918b5d5ff4968b8991fa1abeee5bbbcffd506a5a3749992b8350ef010e0b2024e2850966639c128edf072794cc5fbf9ceceaaef786d9742bfac163629dcad1f3227fd870811d7 +f909c0d658afa9cb10be350b530799be4e47acb20f77626721ad1dd19cf1219be42dcce03ee90f05eef48cf1090577c262a2ccc4ccd575fcaeaaa6471e3044e92cb9dff5e047804d721ad814476d6a6b469fb17eb620285ab839fa03035ea52146cd9d0ba5a4254e7cdffe53d7b2ca22c0d8ca959ee8834b074a91ae434b2a1fa431e2317ab768a0d8a83e87abe96489e8e990210713265a35944f8353208922ccf3d681f95613ff682d8a1708a03503858d27d314065b1c22eb5e4518f5f0bf +ef9848a5ab6fe3a55321f04beb460b91800cba50aa646c6f0ab6fd2918316de6a9680151b83b29cce5a4f734870b529cf312e5a1acf61dec6c870330c0156327746e281f37e3eccf6d4005a76491b14aa777086c731b20ecaf5109d74e44a7d374fa6ef9da5cb4153bb7db624c451daf89a39bc020fa82d7125c0e4091abab7894a3cb3c1d9de6297ca8f6f85397915c788c520f850b8a87d8902fbbebbf6d0e413f1c1f7059d0241aca1c9cd87631063e4f465f0c50b1d205b05b778e67865f +d553c646ef325781644ce9cff0e96e754df95b24b4f2ad52feb095be87c16ca2d1ca2985a5bd019fbfbd5f9d1e94f5e4814b3f13f67bba843593088d7acfbe4c75804efbcc5b3196761ecaa8b4c3d3e24fac4704bba29ddd2181c1c4b05085b064e4075550fc9a86ae4f2c6c0b4acfdcc6bf8f88305f12e9e066ed0e13e816a095fb9b703874537972ea9cfd1cf24bed368f6f4f0507ebd6eb34759bd75baab94167510d56652cde684815113de8db5a122baa5e697ec88b3fe78452ab298f7f +fc34751884658188dfff527bb79c49d1baad2f816257076b763ea3f737bc5d09b3fa218fc25b17cf28799849a6d2488b3b32982c901ede725b1f98a23932ee5396819771ea9a26e8e7685da9676d522f7d2fa9bc8706b77acccb490b2d13cc451093c24c17e1ad66d234eb1df115916dd634be2754eca7592225722b794195917f69ee9d6879694f8bbfc9a2094daf85b5103523aaae26ad34e96f8dcbcb7f32b30f2a1b7ea454e0c4630810e8d6e2b9b7c83b98746de45fc16d34a3a8eec687 +edecfafb981a2de163be6bf5222b9d2a3c5086b66bf28cf4cc76de8100e9115a497be46b2efe1c1af30a67d6ef63e6ec98be6d098fbd4c81c61afb9449f0a942274e37dc84109380a38a0a2d3b97860b8ba2ccbf109c64748146acb6672442360e2f7902072dcc94e040fd195a8ba8e11395e37cdff9ed125fbb50f83be5fdb493a8be5305c6fc61db416c2e02eee7ba115d13d848b348e20c4c0f5dc28707ee14db3eab7c8d6c9fa2ae143f46813a2f8f56e08feae29a66fe97b8c5c16f4517 +e777e1fa979dcb0ca3474cb1d721b6ef28b09e519298683dd0a0f5c9204e370408b30bcc489318647e2b3f6cbc99b2e0130da690ab72919850de0e60ab7df66ca95d69be7066c1626f5eed4505e2386a43ae4873632b6164bd91d4ce6ec2f758173726abad95ff91857cd213b619d3fb7f373cab3016ab22d32ca692d311be438786b171a6b4105bc25eb66a9680db950da7f69243c4c5a4e2e5d84c6bed9d37e1b770ad4a9c5f77080378db1452146b4c3d0e4c91d4912bfa406642732fca5f +f17a3d1731f1d97207d617e79ce993ef64ce1de251da3cb4cc2db23e3e76b86dff54faa596b58ae217e724729a893f67a122b966a23f2e7aa1b1457e8d50574474c5dccba59b52012c62b7a07d52c3a3b463c23195d36cf81bf4a3bab3d33b4e83dec3d52767ef4182da3df359b9d5ebdf31cfab29ba74ace7174b2e74491da77d9faa2df2ea551724302f68742d8220f767f4eb5f08e953f6eed79a36a80f7cd39bd58081cfe1a0113b7d1750d6baff2e2aee7dd31e99f248e7cd086b3faef7 +d23fa5db9efbc7389198b385e59c52518f3b182a0ab1eef22d4f8c5bf970f4b9d28eef17f7a26b6e003e53f8a07187b039a1e2f0b001ef00884f6f0fd28a3be973e823544684a9b8bda24f762e9a49f5cfde28d83b67e2060bccfe3dbb9a9b179329107f0430d8bca7d8c6d067ed151b50491a9899d919c07bb3f3d15b43550db8f012f1f962f131101e4fce661a8530532f3e739a2496b11f42ea9e307a2a757c0a80bf7c927e19e5864ff597896a579dfd113bc2d28598cc65f0be89c68707 +ebd5a1ed74eeb4a102165928af4b51760c5285c5af5e2ce4008686de870818597cffc1577046d01b28b98402ee1147d6cc1878c86f0d7e4f9c92d27f89705dd336965372cb5963ec3f0dc1660f09420a66e972ed384e7b65d1bfbff2d34f80ab25c4230891a86457c5717c967e9536e79a19f4f10cd12044516f487a4e01d5bf2341b873e44ae8abe222ffcd34499829e98a49af52310da131d3caad3297959e21db2204cd8c7fb7f5a6509d3f0f32a87010f4dc26b229a7aca823040e4a88ff +f810352ef04c697b6d9478594c7d39513d49018acb79ac8fecc7668cde01c23d102e9980607d8f2812aa010dda0cbe547a7bc1ac8365aca50c926907cf605e8a86a2b88800ec06351d95338e8c0ed34de91dc4935381e8166616f169ed9f53ea3df92e311acc89950af7342f71ebfe7011de0a20e81ed1354e512a0b6758b789f2979222f5164a1a3cc9f4c46a09696f02f4ac8e53c9b579d1b130066a85cea24a73d2cb21c4130d79e167eaa4a1123eb28f04645182b329a5bdb338209b41d7 +e93233c257782974fcf39711908d8b78e2241a291864e57b244d6c9dc80d4499289eecb4fb2af0a1f02da39262f5386c9dd2ee12dc75d214e159cb585edbf0534d15a732f12bc8530af2ab39a79cea1e7d0fb31e828ff32a2e9f3b0bd8c3a2b3e02e6153758754fea685ac4cdc9068e36fab49fd038f6d006ee6c58f0ec05705cb4bb211fd7d189c7c70e5d05fef7e8661ab060c5f7d3892789c9bc91cbbf24434c9800400d8da748493af9d6718f1f06cf75ae88fdfd9e5284e9697c2b09c6f +d39b423ef0f53e0f728ebc30fb5a5e1daa5904f355894d812564b827847d9da970450e408b675d732990766d8a9c33ca1c607c569cb58102073f1d2091d8936b703bf49abccee5f0dc33fe6d42731dc46e8facf41128c9f0f804f9eeec8507b9b1a01dd9189a1cb028e7e04959607f859a145b4b87087a94793be1e36c96122d0d69e1a0c2d52b1d5f4ab1d4ff56260d4f367c23e5a40aa88992451e4a9036f66243f1cd683cbb9bc5af0d21059113ac7e42dc41c0f8461e9bdd9a204b4a4a9f +c935b6f57105e83ccc32e1eea4f39c6db36aa497619719bedc69ca455d859659ed3fa6a235245c614a9800ea75a1889abc5e26eeebabe8e94fde8873535374cde953e529ec704844f9788fceda9f38c08745636e62f402592996ebedd42e778fda4de0916f837ead2a9cb2b47ab126361ef3574801bd3a8ffde12aee68c5248063106d8cd18b5e012905813c9ac59f376cb5ec36c6db0703f78c35d27378fd7b805ad8a0203767a64ec9618ec874d2d6917bc0bed8a3427ed7320de68fb743cf +efc6097c210aa1affb2860ed7b9e183cca30ec625fbe24e5f526b041ec2c37f73ed70021a4a02443bbb587e11191edb39d89d1820b75ceaf917251f961b715fbdea92616dac2138af8b3984fd000f2eb3cb9dfe522e9565291bba60aea27176e8a6c19c68b4f962215def17e86d8774566603df29b96f9adecd3d23a863a26b04e2b45a35bec4870ff242ee949dee212807d3504325cb14c42026c078ee0b57616bd4edc310fb9e1392c5534c905b59c5b4989652a31a8682ea0c3e620f412c7 +c53f116692266974bb819cbc18c87dfe42f240b6713fa9ba16de5981d80e37a1e1e2a037330d9acf67c186c27a1edfd278027d21a4c55c0be3e96555baf5b6433fc4c9fff2b1e635c4d56c22070220b908d5bb9d708fec502c4b695ec4ba99d0da81998ea56c5750179d4f144c2db158aa7e51877f2c62c1d27fd3066cabbfa419879f688df593270809729cc6133947c296e3fe3f590a0544a92e98408ab1ff0cb022f1bea3f42ac60f0d8aba19dd3299cf4856864ab893dd28bcde5ea5f86f +e2a85f7ee40e9c0f74875fecd1356a209638e849298d478fee74effee5270a061d9d01e2a4f761a02b7d0f217a239d211b923c2ba8ca2b270acc889a1c325f9c707e9b248007887b897e8b28f6e31432036883a83cfdbfed165397681ee902c84cb5adcde078c046c2dfcb9780c69dec8164a78c919eeab181de8c4b5f1d2f6fcd708da854e013dd3a97a01691a6f3d3ff59abee08556984525941ff093504ce23bc85e16c7040bbec00ccd1656f644484a690e6b5460a02e70f13d075d389e7 +d348d6530c3b358df42cf3a2570e41ca1cc09406248dd38aee5ceb11689e1df0792f89ab2654676d136f853174166e055d94978aede7fc54014ed1c66189ce5d46860a687f3ae7a79f259fdf6eead6f84d97bb6821b6b4f593ba2d6dafed0ee778c75806e605c739659abcb70252d9a56ca14896163b3ea591d253cf495337b3a82761f13983c3bee4f55859b1facaa971216be479600d7a1279fa7b236646e789a16667d6a8d02b7e09a52be01603090cf87dd8a7f2cc83b3f8d9cd34e9b89f +d142cb1d00f3af783c1917a004428b92eeb34e0f49d65e135ab38e3a6cfe1cf3adc743c7f7b885ed9f34441bc292e8b2d06096fd087a6f895992b803294909b3000a905d4ebf3d75c0243a2d4cc026a9c0249cf99ad27e3e65676b5630eceb3e726edc84f885f0c2198c581bbecc3c1bdafa8c8ce7c1313593247baa2564341ef762cd7534089e117e148941eed037e6bde9d10a1f60b098407b94ee15a8227c1c2ea905ee1ff7fddea6234c5f0ace0924a4421ece8760b346980ea65d342637 +d7d4b816795448edd471af6745890305262a4a509b6bdc05da7c684baf53e1cbe9eaabcac55adf252b02f1299a9e0995ef861724a0278eb55f87bfbc6d59ae913884a11b3cf0fce5ce9f20ad87578da86f24f23b2112fb5600243dcea519241ae33d77f89b87c6a773be6b91d07da56dbaa47752005b981c17b63830b7fbe871e67e19313e8649af77e4dc7514ed32faefb9db142c84573ec2a3c10e3786dd26c54f731c6d20b7efb22ec146522271107bfad185b3eb8866ad221923742b54b7 +e37333239f7d256add03ef50bcf95927182c0a4ec45e8cb7f59e9e361fd48ab63c73aef9f321b3d9a0be4fe90045a5d2b0d404e4975a6c2f9e3db6e54e8a43cfdee2aca2a87932c9fda4c27c5e23e7cb87bec83ab39d739e71f855badbd61ec93989683460d4940b4be677ee517991f799629183c9e9a809a13460676e6627789e4aa08872d16c24ef794f606b0bc3a90914cbce9c34f0f7ec78a79ac46e6715a458a19443956e6cab9ff013b673eba872a63aa261abc3aec8398ef97a4a5d47 +c88f8c0c9ef0b6fd750534364f052403e75f85315f0a1b714cf0a6b5a0a706b25720ec2c04a3cddc22f9fb72c988c50a85bf8372bd09d71f5f1116c47f95571d1c2fbcf9bb12cc3fff68732584bf4810c8bd4195cdaff8b629fd2e21f817607954d2aca7464f6c58b8288462fd8c3ec2a79bfe079d015aed3adf664b9fb901e53e74f3ab7da4b7a783ff8c557eee07445a3a0b9f4b724c714583d40a43594aea340f27dfc889e6fcd3dca47e81fbd45a6442983ff9171e00241085a30bee2d57 +f27acaf3bb0b5dcd19f2f1e7d974d9a73331ba52202dee19c609b6e41058697472df8fba3a7caf320c1495ae5b8ec503ff0b9d676ac21f7c817461d69f496403f72868cae7a26f09147f18cb0761291da49dddafe46c8b5f44d6e165f31b2286deb4b08a3c7b5993a781c43cd89b24dcbb8e605749c93d6bea8c644bc296f7f7c7ec1b6e8b59323d6a4f89d47809bd3bc2bbd50ba57abe6e07f3f8b75b9c0469958ecf41a0e52ce78ba1ca47b33f0128e1c5208c03c254163b083a6faf828e37 +f708d0bb958986bddaa59cc8aa17c6813076b52dd2c0cf3b8ca9669d1d800c183dbdbf461f2eb9f1d4cd5cda006e5f5d62342f3ec0c85aa65041561ca8a31c0e0779533722c4a3aebc5fe23921ca9929422fce806cea208a395705fe0979342f991ccfd03746a5a474b9f87b289d552308d3307134bd9d398131caff21ad0d0295872f819c5955455fcd53cacdd2550697b7ccb7e73b86fe777006d7745b381d7a49b999075e838b2ef47e511950fd698d7933b07cc7930fbdc1d9dfafdb6ca7 +dd2aa0f33b4e0b3d4aa6784926c025fa1254341835648bffa2b2aa1d8de3f8891970fc2cd68e7c525ad6e9935d4537dca8d2491b1c4902986cadbaffa16bde21350813e21cc9461386a2ccdb8386480b95819181c7bc6f91987c0e008e29c4269e9757ff3fade84aed7dafb3d4b9ef83aebc7a17228804903295c59fd4e13e27fe18c4e207821b05943c99b581f33d1469ae16182dd733aa2d2b0c2148590bb9176b43ecfbab32ce45910b5ef72a5ef5b906f7be1a20cf06f2790f99991fdb0f +fe815693ee0d6eb79c03a911907f19c55948f69a8a08ebfcdc7fb90103c1ea89322ccf4e49ab48b6effe893d6f8c811e96a790b61feac957122dc7e1f5e2bc2144ef324187bb3a3523b0a2b1ce7c5b859bb395ef8668821134b8a904de07bdd6daf644cc15dd3982de8bf46026768abc41643ba63b38853eed89414374c98e1b6fca320c3a54cad5d43c955072c06ca777acab4391f715b7cc1085352fa160bfe9316a5ef50ec8f843c2d9ce820422b81491c88f02e54e035a2eba0c586fa7a7 +dac45abab8c14a032e465fcf8f05cec00a29dcc676cebc24ea1c7dbafb9d4823b9d5eddeba844035c9710dd704beffdaaa97fcbed6805c4d5294d9f3e77828b000584fee557fe5f961d6e4db344675abf8f0b710b0fb67f61008cf4d3584bfc5feb87262940c094441c64c750830b63643db485bad2e3f3eaa4d83ac0f4c35b863bb80d22cb3129ed7db45ea0306f4a1a92325ab7b73f033a6cfe387fa7a074164c2c13af47447634b01a89fc9dd7fb5cd663a0f5495a173afb994d4c5648447 +e092affc2f3f9de8c31b0584f01ff114b7d9562ab755765024418b2c643f11f56bc34e3edfc927df06793c564f3f19912d517280e9e419988457990cfbef17e0f4dd13902eef73f7930b8a36ac10d8e2bcc75336ba60be0eb51ceee6f1e493de455244e324259fb7805cd0ca30a4bb79b848b798d8e219bfc22d900179ff1c6566f7a365a51c7f88ba140ba62bfaa2edf98b0bd627ae3d8467a899c80b2fa695c15faa1608975328949bee7abaee5b9e2eff7845672c7c70d1cb8ec0a1d26cff +edde2ff34d34ced6b17a089a2f898c9d64e0ac434e3764f61e1d19ed805f07ad539eb0895358fe040faa78f7e16dd42c19d4eab9266ba0a18477157c86f3933c54509403a8fd37d85ae73645bbcbd8a8ddec42da30242015fc49e3e2ee22736d9e165aff5493a213c4d52b2219dce5369ccfcba06528d892075f24ca66e189368679df181b11a10a3e3e64d66b7335427aabc9e886555e9c1d6ac009d74e746b882b605cf83b6f24febefee6018a8f26c34adbb65a1939996bc6d0ae62886cbf +e1e8a2175cf7bf731c42bfbff5b7482b8e117bdd5dbe758421bee452e1a442ebfc8ccad10e51831a09afead152ef3004d0b89875e1dd898583776365c0686dae7313ac6ff99951f084f8daafa2b9004229218c2ac59a010cf5fefb79a11f302fdd21db5c03edba28b9d554a400583ab1be35f794a50b922503470825b5ea5c1577423c5d39fe69f466f853aa5b7935e57ccb352a97e9dc0ccffc2fe355d2b18f731ce8c00421c7297d6aad10e6babb4a786f71a56c0671b08a30edd154fe00af +c1aedaca6598859a67bca6d9712ede3cb941137803783b30f068897f61ee5c331f7fdb3ab77aa1ca9873500b4eb05da3a07d53f0dbab7819f13eac08adc718907a11cb9ce0de3ccae9d641d16390a655a208d43c3669c0887bc4294bcb3b0d2ed2274a6b807ac4fc7270e4a61d9418cfd1c21d2a02bc41bbdd1f667320e93ebda405ba52773c82e5b3d53d74dd170fc7936d0eb25c3a09d47ede344a9a29f9a44c0a53c2a6774b69eccdc55b912952f78ce1fd7bd4ba9bb1543ee2a288124a3f +dd45c008394bd429d60374fdecd42b9f2cd4f17c4bca0c564c740112e2f81df5e852459222fb33d8c28a0ac308ebafdead9268f1c0688d9e3e66c12524d8b52ae94b99ab88c33a1f32479968cae06509b39b5a36991988c0fb2241e4b193a911cb5f1148f4570425e313744b51035b6ae0d16b65b6eac87ea9b08a6cbcd410c73a0f2f62bd1fbae70dde5b0bc44ea8c4280fbde4ea9014754d5385e05c44dddd588aa75069c9a548239f509eb195f296f642ebc0ab8d24373ced374c7fe91f37 +c6b8bfd939d26dd0db1d9770696f138881a54ec3d3fc8536880ea4e5a7542e9e7f9425c3e8098fce95bd4e18d87237d5262a29b8521be4bbf9796547616f60cc15677f93830c7731400d31c70ab39f8f9680cc8d2c0893e17edc0c7e8b25928e4b3951b765e33a2b476b8462e2a0a5f8a87c102883ebfff18887b2ccf75997c5b859c333165489100c0d7ee0e3009c48183abb34fbcc9f5f09bc8f532e21cb39b25e26b31b971aea5b2ecc66558fef60c8455f9022a65c9976a6df251c86f497 +ddf418e167202a96b90abb44fd206dd79b44d28e992d982c4cdf26d4c80514845b47ac015df176b5b60af1fa60e6bcb391e81f0e5636b16c68aac4ea4d9f4c8fd90c527e0d3da5618ca2debd5ffa5abaa906bf8b68b8f7636677f56738b8746a5a1ec65740ee1a9a88842a60aeeb1e6bbd064c2471cd843b746789a745fe4965dfaae4807f8cbabc28cb2d206bf7e43853a76412f4d0471dc13225ef51f6c8d8c67377a8105c882c26e3200ce5823dbf9045793fa8fc549759e59849fb5f6657 +c06431ad200d2f4d327cc19b99f3c7837072a3a59f425f240d038bf45e08758c13ef1fab9f9a6040281b3a00e6d4844e5aabc3e1723d33029bd6a8022c833f17919af0273821ed7f0dad7797a90d3b520c705234d2e3dbd08c3af15ca3fc1ea99a137a9d2e9b08ef69e8c29e5f7713870d1f46140e00746774754e1ba368e8a989eaa42c15e70480cd3036bafecf91ea10066a6e0c6e6bcb7a6c9d53a353621d2151ff958173887d82b4589fd8fb6cafc43c8334646be95eb1b9717e476f34f7 +cf43d331d9ff63c2563e6c422ac5777e0625ed74444bfc8214cbec3220c690bb58bf7f21964908cbe54d46d4cd6b2b8c9b0671b50a3b03e2a5e851d05b4d4219d4380f86bb340a6cf6de9a1029e670e415fae4648382ea617b3ef5964f0a3d02cfcc5d76e5a7eb8193e38aec024f6cb87eea0834ae798a305e356154c5fd6ca1aa1e5f28ce29de4dbce82c9a10a833530d8ea0c096a285c2aa72aa299b7c2a2acd1bf91205051ff72d4bb8d5d2ff32f6a62dbea7d8e6b3f4cf06189e72121d0f +dd516ebb26b9f2960c645e340b3464c67e1c5c4c8ffe2902b1beb7e9fd84a07dba7ac0f4b01adb02e989115dfa90760c8786b4230bd8bccb0dedb4f486d5b99e6bd5e01a15ae84bda4a36acd5e4e90cdd68e1667456148ed1d05e544e5e050714d75e8039a155a88916726e0bf184747ec537dcc7f0a3c00272892e70749c76ec05001a6f9af0c92136decaeb224f05546e50fd7d1fe6265111ee41c37966bc1eee8cf61d3186b168f63958432304d0a4835aad622c0dc9302ecead67f06eb5f +d230e4f912be56d3149a89dab1608395439f865ba2d32a62ae6aa71ab2e38aa6e32d38f434cebed6893533fc786a1155a1d1847d413593e428ecbb71dcbe6fb626a0871a30840648b2f69b386b551ae9644c3e166bf9d7445bdd203b7814ce8643f475f3ad4622d213572c306dd9b4196ff94d7d40b2f23c6ee3dde2adccc974a05269333e3b30ac784dbf2eb38541747265aec40648d51e3049c82db5d71b7c6128cb9dfb84311cd44d9b14fc3140edd7c22aa963b50fe6c834ab6f15da0d07 +ebc856968338958fa3ec2d923a2787024b7a5423a856f2c261b8f719be1bd2e990949b7adbcb85659b9b2e9e7535b6b0bfa7a38af8bebe69277a6bd80f6cf56a6e63fa046554b50b67ebbf5b6993e7941b78b0211d3096b442427494aa89571e783e27d6b6e79e62c00a0fd6fdcacdac54ef3491dbc6f410add15b05693531cfe50c43f7422e13478731b84b1b3da82df6432b5c041333b6f043f7d1428c73602c2b9f2e771d2088f9d9263b51b3c59e60d941600a9713320d43bf32a61ecaff +fb49159c999f537f57c66ecce36fa259c167557ab80d0b4cc313b22c0547cc34c8754be9fa4c99c93d169c0ec5b72d947d4ae1b8333e0bc92103eca1a193fde45b39eac8f457e68c922d708cc047e540659a4164c8eee33619cba44f2000064fe2b336dd23c3f35bdf30f518873be9ca6faa4dd41302f61a62de55fe3b50a194428eedf7f15bc079c9320771880a2cea1e46f99135fc001daf7379a4cf6dc200d06a2c74530b64e8435ac2bb132902600819fe5b90d190de8afb1aaf0f463ab7 +ee7b7d4176420c86215feb02daf8807170473fc75e87f1f4de161cd87683591840e381188c7e3d2a7abadc40f2a88ccb42717ca8ed01ee74efdc6ce39147056914d12770e24cceb367ed572bca140922707c4633414c0bfb47e97e9493e89e1e039a3aaab309ffebf0fb17974d2a16ba6726a4cbfa811b3524242d9e8b11f033ff906282c3fac0ac3b34bcceab00c95fc6c9bfc731b246e6beb254668f0bd7d5cd503d5cdc2d47e816cd0612f100e62f9067d180cfdf5afc09fe4f64f071efb7 +fba10ed1255a7a45dc97056ab9553095dd23beaa1d5973961c51d730a28c33c4bbab4afa806ec7bb73899c1bba086e42158a22ab74858f8a13bd119fa9a51f9677ce050294b67eef38d9e57e8dcc6487a775935f7151f4802e19d70f3d6bced2805bfe5ad52371377c4879043ae79c8b8f42890e82150a9c7841f883d60131875c29cc9b4ce798b2a6fba5af5417bea637bf7a42cd85d6e6fe6b2be5390fb5bc791d946225cffdc80d8847f042743ecc6453978e5236573141a4c714edd43567 +cba2f7e3305092adb2091b6093d4d793d8cf588a3ee3e12b7207552d5e043e7c30e228ff9e8bbbd766eb65a5b2e9d5a27e60bddcc1a211527df448fbdefe0201d39021eef898c2e8a9933ffcb8a66a6bcc50b8ad3c8604201eb8352205e08fa9870cef2618bab19b312313d1e31513c18399130628fa7cc16407d2fe404f0468a634e7ac3a1fb29009df24cc38cacac193a1f9271c165d1999b07cb6d66e46c1980aa0a6af8f87e37ee5add000180068d17fec860917e2180dce36c137725d7f +f5f73a0f7d809c7c180026e0e6ac0908c1f792ab1d3aabe6c0ac42a004b3e0a4cf28bf86a03ca0b11b0702d36bde342e0f12fccf39389dc3f2339631bbdcbe79abab8069a25bb98c1f469dcaac34407dff7a502e7913edb8abb5cafa102cdcc1a98212191d8649755fe4e73a5741bcb98e00d51746c162634db3028cff1aced74485bcd085e00d226657d34934286978660bb747762688ceff08a8a5d409d026132217b88ce9e8db43fb8f091d0fb9d7503559cea4641d96e0ca3d6824b18d17 +cc8ff35adb0af1f3c19c18d1c70c3e022044ffbd7a0941eeb8ff5294e726948b28d7a01785a5f0d28ebbbe63d3961754dfabbd563ed9e490a066a1fbb997dd1f0d8b55499728689c201c33f5af5c88417c34b93f84d3737fe0508cc29eb3315ba3ea1eb7a4a4d7b254a51c80d5a4f760d1cdc181ff35f8d6bee3452ebcece4e4b60faa3c5a600818f7ae5eae8e78d25a5b72170f8a4e6854f85fda7304943d68ac93940bf3d46e76ab40f94a89528a1f9ac59bc8d0edc81dbce92cf8ab67513f +e3aab426c253f70e7eee032924bd54e9fa66171754d35d425d398d3164ca61ea3663af99d8d85ca439854c70379323e14ec0d5fba7fa9a78e15318f911421dffb69470325fd31a2150aa91ccd0d8ce8d1e268703460e931732d6d31dd2b6b8174b103efd8c79eedcccaee1cdede29f889b8dbc6e48f3028d80b380d1e686e7d83c9a29764acc65c4b62f48a6163aef2121ba42252eaa4c81641bffb8b4e2af133480c3b5621c384d4e7988d771abd74663c4e44854dc9e07bcd682e3c31f0e1f +dc3534f2e1a5530b69ab824e36c80c27b7636637382c6544c11fdb512e148e2d313134ad7a3994dead24f1e1aa3b360037d1534053022b00a54fcb6054ee785e9feacd4dbe85a44f8ea86b33d3320c5db519567f8747ffe6c7282877bb7ee3afd84fdd48f987cd5b79dbe877e91bdc9269b192586d931f903b9250b2552e055e142b2403fbcd9ef22353be1ada73b5f149dcc8f7524b3487ec6aa01573213a1ae82f0036598ad2363e49029998a98cd5f2ae04dbb35c003d0cca24d361ba9a2f +fdfd8f96fff1dcfce2f9ddecfd3d83d3ab98436a03b345dbac2b01222db1451b2cfcd656ab0674ebfd8f3c5652833b8aa94a840deb60a02f3c7560b62cbcf346790d4d146a8ce85888a08f1ac8b61415a7ff14e314251d23ab37605c7ef740521eb97372b4cee2bd6e2a7758ff65283c62b4ce2cf340567147eadefdab7242fa946b698d7dcc78f186337540d295233b30ccd12773f814421b46443c2c1980859050292004599ec53665c7a32ffce6afe5459146cb9d2ebd1ecb11f27f1540d7 +cfbb6531182a3a16c93f14b198db13e9c3b9a1ec0e86655017716c36a679b0afe88a1d43eb6ab58323ca84b7981172006a74b10432afea210524e9312bd98440a71715970daa9dc78e3b04073806f02f823fb1f7aa2c11ba5d1656510db9e992a676c724fc330452a2f58b7bd61fe25fd8d50a061bb45799e34874d8a93cea76a0af0c2719b1f85ede6fdf0521993bdde33e425605fe0197ac964a1bf6e6cd181b5929401ffb5f0f2e871c067ad6db44f984fb1446fa4d7f7b2403b03c57cc3f +c1f8ede60bafffd1c4a853976ee65f4dd6bd982c4cde831fa094862fd596812b0d3d37dc92f91b131c88cb8942318eec091583e7572ddd111abe86b9c32ecdb883fea84fd32f2c864d52ff5adfe42e77614cc5d460c8c2b7380c036aa6782d16a1a740d82a48ace6df3d68332af5f944afc07cd0c2d81dd26fb18968794d504f034feb4c9d51468bbce1e002bb62793abceba18b450132d830b09a5921de63b36e2c7d4c4ca3cf7ddf53f99da4cd12bcb11d8317b211d5836e6520cbed1bf18f +ea1d664e9c2216042f195d2341c047660a0f7e8c862f89948ebcf79a97714dde763d9f47e5b103f97c52000916b2f6033eaf3fa4c33f27c80be5027c200267f30d7393018b312ce7d6b9e58d59e74cc73b7fd2dbc93b54dcefab1b0753cb8b98cab4faa3db2de1e7c258e94f10a21bc928fedf0e25e018200aa670ea1b7990f2cdc8eab80864760a05e3220c7f5f38aabca8d8e8a04c3e363358ae0fb18afb9461c61c1cdf68c10113f5a3721e3e5a827403c8f76e65007ca91709618d5dcabf +ff706e69e6133f694e69a8b3ab7220476bb0548a6a5c164f22389ed9fead429538eea56a5f53128e200cb9e895bf1a2fb68f873ccf5129871a6ca6ed62451ac7fc143da4e6394378cbc3f629e07a6d8e09851997df6848b8b77e3e28b5d30e13af78d0094b0ecdd2c02c34aeef0c28af306eb24ac8ebb598d5db786e262e79f16825e9bd73bcfdc56aa7629f8c69d7290b31b520b9647f36fd931133c49311010442d1b96d04df014aeed7bc8271e95a078f2e41b34f5b92dd8879b35d2c57af +fd8e099989c0cbed8e7306f986bf3e1f0460c9ce53580dee5db6dcd82795b14b4b60f0bc6e3b7925b73d42ff3b8449b0df5dca2d8962b4e518e7a0d484bbec52de8ba0111ccaa942062e3dc56bd881dbdc0b4af46ff024d63f0d90fe0a1cf7b403c88747e5f9e1420bebb46f696231ddce8ba232e498ec153089751d8ce1dd7589b92a18c0bcc61653f953655254801da644c5c8b8159659bf8ad69bbbc1f4b5542839c6efebfefcabf53837316d104f73a3af6d1b234f193c6b0de97d6100d7 +ecd1c02c086db7debece6633f6d6832cbe7fafb7d05a324a3bae91fec3d70858b899d1761ed4d31c504bc8c62441357d7c089466847520d5b1f59e33aabcaa451e6f503554387caeb82f3da5a0644999581d1604c76ae6efb6929a40aaf06656c42b92f321344a3c4577737e6aa467c84673a0188dbfb6f3e4952aee7cc639713f834c8e1c545002c77c8850f4e56a7d8acf4eb65fcdd58972a77d6bb3e4e9ab08ae2815855c7b348204dddec700e6fa3dcd16487128630703e2a50bd40aec1f +c13b90baa0330c206e0e1f44577d61b6ed0dd2304f74a47570640b4be3a60d764d159bd39d82f9d6c1cef71aa903f31e73a23a1dcd75624317b112dd630abe681f35bd8627d41b265bb2f841f327ce5a71bb498dca1e9e4c5254735b36652513b456142f6386b0b25914ae1524af440ea44bd6f8fe86eabf7405face59d6f0e3dc49327e72e7a1080894d4879172923a0bf11bc90bb736d92a8a38ecfc0e1f6074a7e37a118b0028ecf75275bf1bc04dd55402022532e6f9fe76e0d0853de7df +c1349ebf5509f8fdb510d62e132309f1755127665ba8004b3eb884cadc3accbc160fe344d0e6d8a120cf0666acb48ac8a5f45b4520d38b5f09224c5486bbf59a0c174a5e48b312407383f407a81dbb36d61532f1900921582998a7c53d27397990c5b9a493e61aebe2633f5e9f36e9570f07676e36bdc501082e7c157de0d7db5af08b2cb9f5b73956bc635f8d956c85c6a0ca74e7cbb83c8913e23972d00356fc3afcf64f08da8701b62a86ba32b6a6dd02dd2b2526cf9cfc77594a004a25ff +ee8e5a0b32747831c807d795e180ba7ec3cf4adf7e310fad0652286b62969cbf10906be90e903b58327797a5f41d3f50b8517821ce2537b00dd3850d356ee12c121f6b0a7374f8f662d7d8c7a53601dc03b9ce37c9c84acbfa4a9298d1c7bdd76345c6434a5b076016ca4fd196e0d635f1fe0a41749e13f6d35f32bd1b6b5a3eabaa72b002b7354348ec727dd680da07217910ae2344c412307d9b020bf52cbf4d3fcdb7362a0463d1a58756c4b21da10f7248eb82d11d4f1fe822dd7ddd92a7 +d6199fd30bd7360d58327e135625a0f51f6b0d2fcd2aecbf68c15d9689b534e45a6733fe034a34407fae27fc5cb1f6c78efb3ae73b8d8cf697b630dd001ab07c0974d7e6ad68f5db4e4399b8abe09936baa543f212b96c41a437b566aacf083e58b33ce451dc69639ef54733d9438213019ca43a80f19dfd9f7ebbf1835b4801df9d2cd675a79766e8e9125ce767fc393a1dcd0937076fb1802322ab4ab7a9bf92503be42de838cdac02a84d56c784befeea13edd8fe2fb3f835fd1324828e37 +f2f2a8bc6a03435ccf26d14d93944b0b9585c15a9739b995c8ca82e10aeb31c81ecafa46875d1b28ac32ecb1968a11a8c375754ac5d99f533e70fd5be0a812f9118440f70aaad7e0b7d1d388d5bf1f92e3ded7599312bb1a8f9ef3ca8a1ef9546f825d46ffa2caa9023cf7e92c80ad6cfb01830c59c22163a41cd75c7309e507dace5c201f1eb6b39f908938b1b11511544a3871e7a6ffefae10999666468e93d491a45fa2d92baab24de15183b32f9a56ddc5be6ff6bc0e53a15585b6484d27 +d7533d4e4f7422e2dcaac55a65a253f504df6142dfaebfd179537215c80a4ebcdc1dee1d6c04a73949bd8d86a10664ca32c7edb8bf2d76303fdedcbe566d0bfe83ae2e47c3b42b8afe75b0ad0ec983d093d28ab402e20428f4d4b2a046df90aba31570c2e7596305824cc4fca0a6a63e6f3211bb51af2eb3807eed2bdd86929bdd5c02fcc89fe2d08aaac7a26e5b9528b87e032279dea9fc163e77c5873263e2a565c4a9ddd4743b997244167539cf41728e0eaea2d5c112f17f295bad3fee07 +ff134e77164f24911419b5a03aabd01a8e4a3b99202878d34f5622df56ed8a96761637a87742edf3ba8dbdecb9ec47da473517bf5c0116f4b597f143534df29c1521bd7b3817747f28a1aee2ec2b8f1a0a5732738a0bdcc367c29a134c664c4d9f55f0d6ebc5ada038329601121ce624c72a04e6bf1241c7886b9d4f1843ad7d57468544906a5ed71e2207a51bc47c8f0245707bc97b46a7b3a4665385b883da35359ca26f27c67beac422ea9012969bcf9e9fd4f563c6256fee8ff072f12b97 +c8ce57a83f1a082de8b43c8ec452bc7344673d47f011a90fb29dcfeb0d49c242c0a8b2bdbd4166320a505d7c1d0bcebc034a996744f41b1d6349d09edbc21ecf5c888d27dfeef884394ee82fa4c4399e37fa805d84498b60c4b6d0a10c63cedd847e54f7d44c0d585bf8adc0dab0bcb3bb5c2597f3d7eca9a22f0cd3c3750eea18b854fd887b9a3376c98a8d563e8020b3ba96c817072759f9ab6d407193a18a03f259d62e0a2d5018fe343ac800b8fe5e463208f7e8d666c02366a045cb235f +d31028b20b92cb6bf2781076fd6edd825783380e527fa9733631a885493498e2a4f1cd5a5472eeaac9607d9b86fc26c97ae78011a78011130154380b3cfce1fd10b0a4a76b44ed1d5fb20f4a22db6634236fd84beddc49b9dc5711c3328a5134f8a0188a799e7b6ac03a52487818971ea17d1153e8764e21353eefca75bcbcf40e0d42886a61f2edb24e03a0220b184d8d7e09b9b0cea04420412eea12237e8cebeece7dd6c1ddea8c290259cacb56bbf1384d07f2eb2ccb2b553a638f203faf +d5a217d659cd42c1fa60035e7e55daa334d770e243d192224ee68c3c572b6b0920c9473ca77383fc77db24cb0916fd92398c438474e5fd112f3d3789fcd05ff0099165497bdca48db1842a018da996eef046c77c2f0387c5b3182c664677c10b32e67574466f4152ad698b9899eb74b6973aad92d0d0443f1b519978cd6f8aaa16119501d7c9798b1a0e04127d9e391652b9f799b12220e45d5696dec574eb2845199ae6317d6bd22297dc8063aa36f907e07b387ac8c0c6b4e3044cfecac917 +e8696a49236c8bf7f9a48d7233e07fd1de51a208eb178a7a9c672895c874510087b334f532c458c97cf0d4a10811fbc80e25ee61c5ed6dc448272e0376d9c75b1d7f3926d78814542cf33a75fc0bbdbcd79365170e825ac04c1aedbe7acc865e045f11881b20f58b82b0910dd6921b172a3e16abfacf2c538258b329e005353d0fc373b7f61bcd3e773e8ac4a6589b296fc8bbb3384177588e62236c01915e3107f21ca303dc1d71eb16824fa197e9ed8a18f256a638e8ccb65794508f1aede7 +f1eae10fe6c8cc670c7888ab9eed380ae3a0c266c0cdf1b14f4b47510d4cde6cdc4481a7cda5d0dac47f66eff55ab6a7c5d0874eb2faaa870a825101e7c1c15b8cb2bb1de8edc81560204b8932bea4ea3c095ea0b021d2efec61fd93d649fdc67006f9483ae73d17c9f117773d8931d143f9559278fe1ad9fd4c65a11336dc5287471c40523a1f07d7143aa343f6bd941ec43cb5279d04bd9816294464e8a5d92f294c2853c4f39bda96736606327bda0616b025959ddcf62f9d6f60daf5a537 +f917ded895dc3d8594b3d29b1db9aa8e60e6d00b97ad684bad89a24fab0437e456160ac89d3cc50be02055e8c832c26d849617580c353ffe6b82be51ba41ef840fde167c90f9b5911ede347c0a73f90abef842cd72aa5354ce719d27869766c377c36b4023686c90fe4b170520f5a5e85fdd20d2d3bea5fe054f7001437037beb59b4e115c609cca101aedbc5b92cc0548d7752d8e7717ef964f389fd1ac6531529b70f96759c65e2f3097cd619511ce94a2b3e9763b0e2252808d0442b49f37 +cd609860e85fbd5b8d0a56b1542b23d60d56c7b1abc904c4910cc5b98c42614db5839a7af5e5865ad41b9904dbc8e6ae15671e57a271d68b6be3d6dd1a7b419cdc3e8e49d9cc8e477f35329bb5cee42d19d0b3e9d7ccc3f64a12421e8dcf8d8db30320414845e640dff6da13877bada5732d436bc0dbb94e8975657171b183fd2cfadab1d0299e6a9abc9852419de7a265f5d92cb1c4feecc7d57c7c94c7ba22f728b1ca8f319b1bf8b2a6c3fac395453cae030911696632add2aa54b413a30f +f3ad27d28fbfe81b0ec91cce9a08c2107eadc83f1d3122fd4fb237cf171da32c118fe3bfb1e746e96045d60037cbf2448f4a8136ca34af95a12822fdadc1521c335efad13eb0f41d03488a56fc5372c388f351be91b4bcdae40b0d61e7f78504e6110355af8a7b289af3bbc20780eef2205a2a09ec70a7a3f9835577e336c1ddbdaf21ae5b8bf107e22c5f8b057ca0b02ab637097b70842c890c7c2d59f8786f8279f7a4381f556c104e437663196ff5a14e18d9228a0baea115afe6351fd587 +d87591bed0e719b52e008c78c1f4fb1e5e51ef6ef1557decb60333c05c7be16c611589abed49926a1a6f65d0e7f23fd76c874d987f9c74d06a8fbf22f1a44a87f394f7b8a7c30cd42a073d87683ee106094020e22e4324eafe488995ef9e6fa3cea6fa72308246138932bb6c337d2779082005ebf2d494c36d2446c02b86aad7f37b7a1530abb0900020fae9725b0e37788c268ce0c75011054da9d4317f54753e7d28500365b9ab94d0670efcb3478f3f2c6da04242d00e3b002c648ae3df4f +c93dcc40fe83b282a2a20fab397a27d59402c856fd486e87a4083ee52dc343f9b546ad49786fd3f2ca895e95108fae931eea082c679e8dbfe60443a3b69e54242b1ea192e6396a89fc9927209a5d54c093057322c59bf094f114009e63b5b752b02bea8b3ce0ff738391955aafe811bc70c6ca9eae1df0464987eb7b7a098d6436f501d68dcc8a392de977ea3dca1c77d27c3a813b7c151093681b628729687a677705de7f44c39a3fa5f3f3f630d653564e35d19bd5f41d00069dedcc9113af +eebb635057b871d5837f6f76a89af013f402d4a78188fe0bd852a5008f6c8676cd2bf57e2ad4ce8f5f6ba9c2e6735e436475eed2e73299e96db895c1a32735c494bb1506ff5dabd1cc606d618dc8d72d0ec9738acfad0ee80caaa5014bb3a1d416a3ee829e176bfffb71260859c2d9d3e3f6b728c734503c8fbd88857293e98d27cc9de1ebdf9779a69e2f00808f9ed986b21a09844ba5fdaff6f02b16d8cef7af1d03079ad49cb6ca2d64a32b39349725a299ac155f8d78d6055c8b4f88ac9f +f1d9473d819285d5b641158af8673f77448bda41ebbfc926c86480e2c335755fed678cf2b87bb34df21d4a0035db6f2c207944cb8998f4193926703f8e28d7d4f0aff9c11b655c30380d9081a0a50bdcf0b9c3009811456b94ea8018566e74923ed84a583ac3dacfa4cc166181ea1f9414ac1c0e9075df47c5b2a72177693e722811b9282e87d9926e871a41b37de4db51f44acf3be74e51ae26a168454eaf52b12804bd1127845b8e5c35107274352c87b1e23d75889cffd7ce1863014144bf +f69f03926406b039c6f3c9a14369969234c791acfba9f94db058aa9457b9869c7ca5e4cec0584dffab389834f2e82b6c5e4f6fea11e38ae2c5153aeb0ca25ce4b8288a6e11e6a6823f17cf4baf25245c63833586b5c8fb156e60d3e36bf953313b634963b074674e4401a3614e1fa09e20ea41d2f7fa02a0571a6bf891ef88261597fabaf36d63a18f5f1cb79c605b9cebf1347d744b5e0e68f8a756772cb9f135ca1641e7bb6304d8eca0eb0ae220f5bd7a896a5d24807161a753e515f8ae57 +df41f0e1a7c888ade5ea02155d44f84f7c8446ad3d3a4e20447b021a4d78704d385e241a476df17584a2065e910d5e9f1554175ad8fccb62b38f35b2745054c0f21dab2bc3036e25ff2e0573660f39a2d26a2ea1355ca4a780301f9639b9c50467f904c2680fe86764901f0ecc2ba7b17521f60374eb6184cbea3ea0ef58632ab58b5c28302a2324fa962a38f8792d3025fb4589062ad812106ff83e1ae9ac88611e704dc03324aedbf41b31959bbb750acd503d15dbd42a9c48e2ed5ed81827 +db165ebb6ed96d4c33ce2f4f1dbd3300efd3ccf4968e0da4c3356ebdd2823b20706ad8ca208663026c3969cf72423c2590bdcccbfa8c286b0b57176704e086b56234d1c744e336cf18f308ea057e58c7b03cbd4cf5f23a44ceb740a541538674b960af21489021a3cbfed83a884a7924b3821e68fbb05d5d1a3e6c7bfdfcc68f1e3514040a77b2133a391e2a776cd151e6649e5ad8e694e92704f5154f0374230225aa90d863c8a2c7617a9694c44abdb1c69eaf2965c75810b00452e0377e97 +ee8d2a9e7db6b17ac8e4e4516bce40c8bbbb70299b6a01c1c03be67a9892fd9384c066ce77315f10b5b79d0fa7a60fa3e421864b541a8557cbf754d3c81e7ef8579a01da41bb19b89b53ecf629a34ac52031c6df701f7fc25a403056e9d640b367166034f8ee4c786a5c1ba2fe532374a823dc77f420c048997ce5835d3e77f0b6825855cc3155665090739ee7a6f4aa7525a189c770f069ec8e2f15cf317f83bb4a560b66e7121d2d8bd74d9d25501b604ee78f21e74b25aa3c84c4dc1846a7 +d196e1a543ad6de20eb0e88cf72d79110687daf673232dad55ec23ec8351bc6c44e497dd2fc8e135851ed7c994d0997a3573bd7cea2fc155e9d5c82d1b119c1ba0090667940a94059cc2ffc88557aee3f7b6999d0e6cd4c3d05e1a5621a7ce2e05557d6e1de1e7e08060a35a00cfb2ad070367ab88e349292c4bfde14635018bd7ecfeb262f4d1f54d2f9a620362339df065fa1c8aac43c6afbb7a4a559af3215a193db768e8fb440e3a944ae399fe12d6bd24729b66e3f691f7a2375a9bd047 +fedb2d2c81b5b279536975047e804e7e2536919a486bf84a62ac2708983356c53bd3bd721c9c3b947fe7af0d02a104730047b2697bca9bcb3d5f55c43ea9ee92c6f7c4a76a1409359937e1bd687dfab58282c25388805fe398463c5e8bfbceb05463ce6be108dff057abbac6cb2bf56c3e4617c634959ee1655c64ab4e3899385d3cfc01bca8353cdc9d61aca07fb42e9fdbd4efb8d9da3c705b9bcf58578f95f3024f6768ea8936bcc5208f3e3c8b00f1b8892a0ac74bec7523ea40fec36887 +fe6db2e6886eff04fbe0455ead1b7358e4452940144981120384c85e9efd461da4fbedcc5ec74669a211d318bb5e3b369bcc20387eae933029441ba1cb2e18cd6acbb1231f183f6386c868abb530b52840942c2934e3d47c1d82af3889e990e45e64243bc07f584adc1d12f0ed18b5d1040316959e986f826764c6f1f8dcb12215f7912bc9421c289c0cb00fd453b6a99df3de9299c8a86853bb2d321a26c62e4b0ed20a824d29cf6434e5e9ea633ea6b0fdb4492db8481490579cacbe1967cf +fb0de6b0f0ff364a9bb858e2de48e1ec7a72d72ca03b90cf60eb199f14d109682abfbb88aebd7fc077e161b6a4f16171bfe09408e430e88a8b47bb2addeb53b385127765206dd3051d0fbfc3d6278a4fe4cec83baaa84b691417cd35af90ec1d3df56cb54604156895acf5199623d9d0a3f7912c5442f3f3408823d2a96c0a9ccdf515f045c3bbd0246bc2004efac2f2825ad5841e37735e9092d832c149fe91fb66a3289dd554c95cb82414855f182af091bfd17adcd27b7cf4dd2007bffe77 +e56f646dfea86b7689637d677bb617618462e7be17cb982dcd711fd3123d9f062746739533d82f0247df38236e8b158fbb055b1958df6f635d9a1e05f21c2b2457796ce1140e853202083cb0ff290538b1c1488f0144e52454130aba0e2e6c062035db3b290de5d589c23aaee346784ce37323df95a75e848d635b1d97894ab250ba26045233ec401603c7ff3305d1e8da4d71282093f0370ce81907e8eb3df0694976713cf0e0e95e669ec4374099bf4d153b80dbdaad58396b7d73e2f43b4f +f6fb3cc4c493afd15eda8a6d9c5388f2fcbfba51e434d47eb24e32e5e22656b3a81560b270ef76990afb5b2f3dbf2483c0bb1417619741bf309cacab9e7b1e18909d435d54a9e48c15f36a73d7159a46d071f08f739363ea1db6a2b0b11767a5c1da98e663cb2e81d61249b8fb76bd2b603f8a1d1b9e851537d6a456f4f0237c222144752c56ac47c1f660ebefb0da1bc4969b4d3a2e2c341f011329407f3d704a98ea238e19502ffcb2bf33de11533675a60967ebf8d8911503113e6d4ac99f +caaf9dd14d0a012def009126d64bde842144d8a2c0a9c8cb2f530680f2e2d6fa7def9d903a7259db454b05ee5f21ed8769114d7093044be5f100ce04df03bfa09f5e7b76a96824dac3efdd58d0e4e0bcdc587ffbc4bea241a3eb15345535c95411b80f09c33c52a2953f8a6e9f8a8ef4a2ed30780deb5e60806a5a6d9205d042ec5501376583da61929d509c5fe67ab800f45ef43d11a6f5a3c6c03f803d014350d135d1842def24de053d24c83eaf109915079e2eb07fc0a4854052b0b497bf +d94b2ed75e838ba17433aea6346c5f25575a725e996cc16d90f2bed239c073dd63fb647404ea78105eb77c409d32f19779c47fb0b3c5cc453ec88c8536c27bca3d15786e5769b6cd0b6dd4ea0507cffe57b8c6fd4450ab33821083ab1d98c37e7fb9337a19ec6139e9b96de85805417127ca347102a62f31d897837d600d75bb42283817a7dabeb4b7bbd063c59789c7f9c6b4a193cbac158842cbf187a0f7d52f9ca87289d869b5356db3b9867e9688038a846981dae3bc42451289871bb16f +cf87526b33835473c2e7025d632f402d79b07bbf4c6b2e42e5c54d259e1dbb50a256158b27a088dedc3d558da7d21f0eff924b0d3d2e4761ff2821dcb7746bb97680ca7f481fb1fc7a41e37c5e7f83142133b9bad9c1002c92c0b11127d6165ad95b508530dd34dc857731b2f4afd8d7c316af124513440a956cb490909116140cc9f76b8c061a83ac9842c5657e975505d94751c75d51ffe69f0855eb39a75727248ebb9e3975470fd992516aba299ceecc208d38cecfe838c2d11fa20481d7 +fc79e0a1173950b0bc0074493f8b52843907db6b35a356c6c49fb95a1518c6a4d1dffcf4b9733aec57c56f5e4810b96c0d5d5f5cfa718a1a25be8608be43095cc7271d4fcb7d03f072bb108b3ce8246419e739baadc0e00629c46fe477c142205276fd49edd9ae06c6341ca001f950c0b1f89349cfbbaf482c1bfa302a4538378b299940fa5aed4a13a51a397d3a68dad934816fd2e276a3112d2eb5079e7b10185676f4b769060950a1124505b152e92ab0b561ab152f107dcc06e87bb96fef +e54bc874a62979918a215e710884874b4ffe632a11087618939b4b71fd6a6b9f1c2f858e47f72f38b4addacfa959b6d788349096df25053958d9e7dbcdb1b69bed231959baea4153f56fb54f4544b30e0171dd0d2a4a67a4e789403a1c7369949cfcf1bce35649ec0260cd8d3bb5ac9dbb39aa286be28036d398d43b71bfb528eb1ec8dd34f4a4ca4d74e873d8602e0249c219f43394add99825a94564cc3b2be0307f7d8e4547b5361a38535a30f6426c060547a6128321287c4154add137ef +e5f34db13704b6662e25139664f561e65601ca465218d4d758175380ac579b593a6c4d626445f303f3d0eb10bad9870f1e96a8685841b3da0adc2dd86b8047509cbb7c592f8db0ac6688b63130aa2abbce69194ea8a856d5cfa31ddb83cde3d544ffa3651515f5dfbc1b30767f09c799420c62d357da7ee2468807897bf937bffb11bf861bc285d56b41643bf9a8f52a3e9313d7ca89bead335513edb2c2604f7be824b70d4eaec0b7650b98df710e7fee0abcb6692a1d346c458d2aee768407 +c9aa281ab4d5fad6ec558fbdcf29d1046ebff588dcfffb7cfc825796fae3c083fec6abebd5582673221aaf0ec0f73061cd99720b4a748002dcb704b4d34448dd6d6bb994508911aeeb5ab7210a82624afc98c3798cc30e6dc261d752df36cfbb9c69cd40e548f39855504929e03d0604d7090550d8b91c98e820222df11f8b5108f2680ae8bc9124e8be824c2bc403b60d139bfe33475d94f5c1029f984510acf7775940aa14fd43a3ce088301b555571167b999dfe24ca7b5d12d6367d3d2b7 +eb810f5a02517d937c14e9dfe20a2aef3411c36d00f4e14ae59ebf56f661ed600c83d427e73c5f6cf5a286b782c2f15e9fe0c621ea7d7732fe9262bd1ec4c5984647ab593ca8e9a77778062558db2d5872b7b5d5dc51adac918232f3d0b43f55f255516e31f83f0cee8e16697184eb244f86a65ce37e7c3404650f5b57c9c35336aaa8cd9f1924f185bee8e8af3ead0ded5bd25936270921eb04daa29d5a3086b74b9f351f185967f3a6ceaf7b066a2ebfb4199f106f168de59b90233dff7cb7 +cc7b92047d8fa18ade2b003cc68a43bc0817a96a08b5a0f7cdea54a76a839c5e762850f6ab9122c6260fedc42e677fdb4f5a2f50473c3a87f4ee10e09423e28b0d52e8dda84dd9492eb76b7e7b4b7c8ea9370dede2d42d65576bd1e305cb7547ce28952de6929a867f0186e977dccfa78f7cb75b9cb1a3f4ab95ff9322f96aada46ec05f85a7c21be1c0ded6ef24be9aec7e037e9a6477655326d30ac4cd9c0ce3b6d644939f0d3e3a1727d1e24c0216779551b31d8dd93a4254066a8498c0b7 +ed8360f9e8bfe94800e7182a34fee077270850fd1f36ae7666eadab4a8043f28d735063e3143940e9a5427109f086b08dae7581b3f36dc0f06699ee9d934825ed59c1b1fc33e870ace65ad3bfd5eee8f48f65303894e7fdc525fb123a80e66f6642e03f5ded0909e29b73ab954a4b638e46c31da22fe0f9d8fb27eb289e4fb8dd8d7f4599c5c607be960d382ea19535f6fcfbd576554ded1a65a2ccc3cde2c23b10baf3d518362f5bf2c3a33893b710f0c8176c01998759f6fd47588bff47747 +f1a8f4d4d49b6637a979b41bbd24345b3262ca972cc51a3689244fb431a1fe677f0fa9042403382d35bc262db5ea106b6172df0ced6388a9d13be52a8d7a6eef375693e3be58a2d1b80d20c2ebb89366ee3eda8e3f2ea74a7acd4c2260db25e4383ba86097f8c25014f9e1a587d0b801e1a2b7a223d0fdb75bda1e58d9e17ecc0111506b547a2392fb86006130d2e2c7fb552d83c92e8c959f796a9afa162e27bae26305c97c2ef736284ad858e9aa72dece709f8efc953f025d21d3a2df1d57 +eee0959feb5d45738d3c01916bcb08e3c2225ae1a8039af6e8cae19f17fcd2f1610f029c0d1070f71284274eabf2e07c031da20ed77ae5673bb27cdc6549071aabbdaa5318f7036ed0d02477a5b658affa7d5aa7c9c8036f4df0ccd18b5ffe55e71fa32f675a250452903789774fe48e1d5d37fefa0c8d19e44f68b769b072f4c0e0882ba639279a06973add4845f34064e525f91392df36004e5f2839f76702c01c87420539c8b6cb5bad6154b0a261e0b52baec1f50da1227f61966412d677 +d77703619561acc6fe65214f025ff7976ce79ee97ee969509ba0c7f9c10fe1d5ef393d3113964450cefef813564e2c8e152a01946e1b86e3e0b0822b5c0eaaa2b5c1e6296c4dfd8aaeae997b4ac09a4adadf5bda04ee14bbe5598d0861c47b44dd06dd5f635ff6006f553ac54d567b66a8eb135862d4201fb049c1e1600a67149bf7f7a3e5b5ad3874fc8b8acae8a14b29d75f781e75f956811e298a9e3df1cd995c3df961438221688a5bcd199d7b6cb01d5bda4c82f39604be68888851df57 +fde53a039a6e13f3c7d2bfb1c8cb0ff6c0fe9ffddd5a48e7bcf30d9cdbdf204ffc3b99ea5cdb13377f766b764aee108df93c547ee23b093fd96f8bf9311708ab734edac98585eefe3847a0a2af6213d57e91587dc4a11cf8d352996b0433d926fac2dff4677703431ae2538781c604a31bff33cdbed0db494f808f7f76756a6824831ec59bc1d53bc632e6490cb27fcaa02dbb25305b2094b02243f5e58b25d554e4286fa1f215a1c5817a40d015b014693c392c659f07929f54305b2483bbb7 +df659bb9e2756c57aa1f607dbf4d1c4a285030e86b754f3d383e9c4922b2321a46ce63db93e9ed469e6dda036a7d15121368d4ca5c18a18f688a19e1036854a5c60992af7b1e111c6efdabd867b7670a2f5fafbc3554466450b2add80b07775947dc0c8998cf8a6a478794d99f817ba7a70768215c0c366f6a5d1474d62e19e408d7bcbd853c5e2ebf29050449f5d1840e533cf4df9ffe6b646f5e5bf07fdca808b97b4e9d19895c89c566664e3373224a0e71ad0c11db7ba7b649cfb06383e7 +f33fc8be2a1b10725f9ee7854cad5552e5ef5cde7023fe8f8af6dd91a7f2791847dd49ecbf970581a0f6bd75eb25ffe8b42e04d60666dfbe6e5b978cc5ff5115128a48b34c0a53b0f740a40b13a4a00c87b27bef7d1a2cfce772b28f8658ba79af0fa2543badae5f8c562cc65963bc138f2d7a0c9dc3582625aae481f807e9ba4681844e69cb6bb01f540807e509be8bf2745bc641e8768ae8072590360b1d900d706243429398b91567bddfc423a9261671dcb897ed63c8f7089848b58d17cf +c438a5fd0db6296edd56c74f49de1b6012cc9a4f2e80cc8a06d37d0c75be203b61e56d9ed6218c55f1d58b4d445fffba798faf877ca070ff2d53b0d0280d4f997a2723624926438ce6c7f470530d733b30cfd1d1ca691486238a5541c54a2951ea30c524c360bf18be69e833eda3adfbdbf6a0c05a38adfa1a3d3c792b442ffe54e90608348291ecdb20f96ba2f303add3b68cd44995820f972048b31d163c58a34ef55d30f9fb5745c87cb85a8d8b5d19ad82ffc8df3890d2468dffc86559e7 +e9011c1f136f75868028028a5ccb020e37e9211f5debaf25ba3109dc5f5ed930dff3634c33c8b7be2cbd18c0338e413bd2a8f59d2907a65a90caaf98f1d888e0c8d67537f92be163b0c12e119c7865e5525b716cca4bc20244ef2b59ce99306732fd7a00faf9fcc5191b1d3aff11cd9406d12bc53960b1702a63b955476a2705996057ced43ca12a53204d48d0b12ddab2d0224f1e2c14702a275e98b1780c3c0cd2843256d84205efbf2394a04144628fd5c78cc767a0e32e936ee4002ce94f +ffe661dec11c95949657e3dadc57bbabc1ce31965c1742cefa9e47c92e12fabf55b9ac889e615b8f12f4961fe6fc438c809ea6246139629528fd7f319e8e73b99899ca3aad8c97a44d2ae24a2c4cd51e2ebca6686c0469f78a1368c4ebd2e655836da6c5eb4aba0e2c18b8b12bd23c83e1e236094b54008d168e14c54790330d2bc55065bab062b0e05cacf61c6d08beec81fe8866af75bc127b0657c7d1d7b3abb12df8dd6dba8ada2e448de5ae756b3a7c732a4d80c73ec019ba05549dd28f +c74383c39cdcae1c1949a20c714535861e56548c71c5fa459b53dcffe0f5e1db6ac6ddb5c4681cb2cb8a44c7637b1d4c7a88629bece7733a6f6ae61f6c3da4073a70f069c6c59275ca2fe62bc40e591b261afd829a012ae17b186c063df8dc738e84751245789bacb8a8ecfdbd6f18d82afb1182e8f74504da6d55572836e20d32c58f963f8863b89e11480c4a0c2f4840e05097de324f88aa68c9e40aae4e2fc96f908d59fe89adefd7cf63d6f37d57c35f8ba5d2ba3b775ef2b310e5614c77 +cc23fef45499607de58c4cfec574df6f7067c91ee1541e2b731c14acac93122f83cfe9adcb047abd0430250d62fe600978336c4c837e43f4ef383e053a6fe701f5e8f743c14f80f24a26e82c374509ac0c2479b2b4f1b6c6333498b97a02e016d809382e453eca69f22f54ac7ec8b547001275bfdb464999950063bb7059f7e9c664d14795d579e593fa173932075bb3e7589ec07868e5a68218df26d3dccfda33a7eb89bfa435cf6b536c01674b80ad4576a66f3e79a90c4d54a94e4e5a1f8f +f68c2e832241ac0991653a351e20f369be62f3e0e914da099f94e7b748b034e14441ba1e716f1e7a2c20bc8ba3a9cea73f6882184f33e875382c52e0a07b36d02ac703e73fd256670261bdfeccaf26ad1642a762039c6331809d97f1c11b2b8d39f6fd103e28906287d9180a5da6364cff5132d17faf67b1e68fec47b40d4c056585a3d41ff4186c85094e9e61f3edcab58909366e8cb32d6fe8f6ceb0abc117eea936887ca5a72715812ce87b047e19bd88313a7dcdb55d1a940a108a4a8597 +d81957a3d3ad5f917b72c4e86a994e8575bb76ad0cde7caaf78eeba70023a24ef3ce383c2e9f2beb14951b7560b6fd0183a5310d808f8ff4f14a289d3a28833a4657ca65836efa751780e9cdc81889ba4edccd73d08a662852f083d185220b70f67f6b08008fa37c9f83558f813b37c407641d3e87247d8f5943871cbdfdf0a7bcf3c0e28d85926d32ca1af1e1afa790da647a3eed0e5d558b1ff34acf0a7db5a019868b290c746b023b677050577b41a3334746b175a7b66fa86ff33ba3eabf +e5307dbfc28818578ed5cdd8947a7d6f3b95cdce7cb6a03bea5fd30cfbb04ac9aecf25ea16d8d921b8c01f6fe2e817fa552889cbb2aa00b36489b9876256e3410e3f1301a43f3a34bb91cb43f22a0f0b59005e23dedd774943e6a79003ed8944cb3b42c7362f7c8691c3e74b9bebed18bc42b589ae8dc81d9901334ff708c828985900b95d951daa72fc9e7ab30fa9e38eb0f39504da33e106d92cb3dac8d6d2889870c4202ce4978fa7fc28d76ca6acea287561e4e9c0c11973db1b403c65b7 +fb09d69682f7ba613844aff56ce7d9318625ed0746b0575378a8db6a611c462a451210dfc0c89e26fe6dcf9d8b32844a3392f095db5416e95d138c505b72d667dd9d5914cfaff106482165a26ec5334773a0b46ff434d505905a5840afd37a0e75c9e4423b54abaff30e6379c48080309a8bf788cc2fcf17dd694dde9529b737ee33f652fead8fb170a5d0d6463d544cd86f83f36248e24169033e19ae3497e93c4864aaf90a35beb2eac4d56d4726a7ea8b8187b1da5698fa5e4ed87979986f +c13ef7f23d778c9870047865151b024155d51873739df6dcd01e822adac7f06be9799975981c3be9052d1aef50f3b0d00840bc86c11a3c7faac6fe68764aaeb6995a3e2522642806b0010c4a5dc69321783ee347361f21f816b2d17901afaf58f3a889b79957c356689a8ef43a57b2b0a10e0469c55854e12b4b975c6cf55cf94207e37c645b289a81a98b2ad98d5af2bc5666c82e75967fa49c0b408d81fed2a3f4727b4f1da6c773eac103549749f7eba801186009f870820eebb97bd9e4e7 +dc5a5dcb47692693285afa7a8f108837f9a8b1e11b1079909950e478e2a339047fca933934794577364e8fb62f895affb08b459f5f01a8beb5e3ba73376712165b14a626e0d1880080335d2c55f8f4d37e90aea7a41590cdb78b1e1d4bc529eae2402423fea5f3d767fcbb7f7bbb44a7073eed119c52f60b8e1f9fcc86e7d4f76379d7cb07a6c422c084464a478cf96635f593676b53a2a84aa0fec11031a1eb2536cfa904372914020514afd21b9ac592507f86b9e73dccd29365c8c951b6a7 +ce9fe290902135a1c236021aa162b10dfbb27d02f9bace837fbb26fb0443d3f7731e3ff2dd39be3e0daf5b934a432132343b433d0f2c34709cdec175e986a8b847a64e1f86f8be9c9c38a50c10fd2816a5f375393ccce97c0ca8f1d3e844ef96189ac04a6eb357a232eb4b4bb0ac07e865e1eed0dd17b1701cf38efabe97ad4e454deea0374c1e235b3f8bf83ee480a5c2d5ab77e95244a1756dc3c84597f58d8090d3593e132411a5a501fd57739198c7be9d04f5b27e70b88bf913074b1df7 +f540f5755c0df355f60569b9835aab8e112a40f4eb967be1614fd7dbf4291689d7996a688e99469b13ada20b1fa56c64e65eff2200b8cabea2b349fb7eb4f863c0c4a55985d0cc9613bebd749c87b2b7887fbb4d78296e421f0dd96eb48af1fca22a2f6c69509a2bc27678debba7d2d42b5d26dad3f77a87c0d0c3ff18828896c95d30e027185062120fd6b0dc6b5fffb15cff5d5c16eda8ec215b51c853ab44c14606da3e58aa5295fec7cf6a79c8d6bf67df2c67c671b61a7e3072fea1c74f +ebd9296bcee133dd21c908b22e22a606daa8a99a6f296791bfbe65d259a9b8579d6ac9d32958b0ce711b125a74475dffcb38b7098eab0f34a4340d346089b8384e0ca74662d8e798bd28d1d54c0ac131410b6848a98146f074fd9dd026cfa116732b235d9769f30513937eea184d76c1a34a121ccd31bc5e07c73451d0cc793006f13f893c61a556c07bd27839ad3d49956ad970400ca48fa9e3a30c5d6c973b612cb451c7aa00baf07cf8de8df3e442d883e8752057425516e3609fd1318b9f +c1351e3dfc401966474ef39bd37156a1e0242b36c1799da4aa1078c0609f7b8d34fa4d21d10166c05f23854fe95d832ad4b501d08190465b8c2773bf556848f69f90fb888ce8a9994e9a97fac6fc2bd6f9942769c869b795271ec8aae3269cbf785041e64b15ee2d5d64f9a7e4275a2e0c99d9c26ed1b827b6298e52a353cafa33801d725f820ce222c3750f36ab0e97be801772d00086858cbafe23396f7b94e6e75115dde2abb9f4c11cddf0a7470c4cc7eefc58e790b172086de2ecde1127 +c4ad282cb248476ca2faba11c155fa7194f4b289abb8ad638ababd6a77570bb2a3da0a6459876a5c816270759edfde556ffe8502ff6652b090c131d41ae0c61260fdf76f1f63cda62437a5aecbba784f2075ac7c8058847b63478a983509b12c757d97aeab810b5ec4659fba0424d8ca13c10b5122a2ecf1d221437b9c5c0b0d231651f51d508b4e3794342d24fef8c0a0e71aed1572d012b359ec3cd0a9cbe022ee2039c88e690e3d1fee1ba73614915c79f044978c7bc5edb117c81bf5dbaf +e93b5cd8eb399a42531e9e842012ba3d9fe1e467cccc67bee880c3691fc78c46dcdd99c05e92918a55120eaea9761b1a3a1a0d63594841b428a3464bcde08157679e1d79f80b164d7bd13918a3d847299a5dd402e3e0d577e5a30dab688ed344f714dd99d30296bb6a0856e07bb2b1917dfd3dcfca769ef2102fd74231211454abdc08de948698a576468d7597d69e829f86c41c5ef693476a7143d092028c0c0c17fffbd2d29c7414354a790a76399c0d5bf5e608c93807f4d223dc9c1312c7 +e8f567a717bc4a41df308446045b2035502b9a8243152d6d9ddd7f811c2b84fa964ccc814f3d67369a99bf370f03761d4f6cd9cd4032dda3c4382c3cfcec394894cfb642fa3dd1417ea79ed44e62a20b1c56c3a67966f9fee73b79645ca90281734f9e80194d38ba3e74cd02dbed31796bf502f0960b32276070205dfe4fcdb867146e9c9da8fc4ef50b7f098e6f80009b676dc4a03190d2595765e04dc47a02938e020930e10a9432fb3daa08744b71e2927272c6f6162a028a20bc15385757 +da2cab96c50f5fe20b6d7dc914330899ffd3383ff458cba384260f54868e3ea4ad6b9c12d7e1c15fd132b199ba2226018d21ec4edbc3618a3c3385419d41d8ab6fd76be1acf8f26b26135f4ab8e10e1aaa74c4d20ca278be103beeb8a39f0d18a295f6981a7352b62d7582e2f5b08a1e66fbbe326d998f74cb9eba34ee8fe755e114c2bca36a86f4cbeeb795845a59fc4d678a2c10c1bb1365f7e1c5b8070bd29dfcb11aabb8658311209e4184b0de47d2657479113da6458dc4c7b743c225ef +fba4126de071d2888f0598cc31eddb6f7d7924f5d4f2714e278d3edfb2b0944073167219b08e3a8d22a1505094129cb165218c76eee3224311c6755d3ed6f4c3c3ae4ce0b91465c2dcb302cdd3901281c587cb644368a2cf275bd77fedb902f7110f34871c0f223fe473915e5270c8fd1fcbbc24dd923a7c865cf38e52e5c16113cbb7d38c304f1acdf6c7c8f292102fd992417a33bdeb8b85b7025020463398d6408f533e17e7968775bdbd138cd6fc6408a619e2dc6e64ea2d5b71b46ba957 +eda9c98c124214ef5a8cf9703dbc0a9cfd534a10ec3931d8fbd78b76b49fe16c0ea556fc174117084226cfe463e5c32630d2784f5f806ed56c9053221888b78a164c65c5eaaf9a59ee8b1c5cf17648544c092eb895b6846686773a3a617f2cfbd0531950f2fae403a2b938f73ab566ad24012131c7a4175c3445b89127d99660a6d5d1637755598b8c61b6be516cd42281aeb8a5baf9948cd3a65977783fa8ae30b6e6c3b8d59df80e0f34f98df62c04823ad6157f096c7bad7d04cd835ef56f +dcda59f054133e4f2ed14474d7556882c5c977b7012e5b8fc13f71749fc55c3da7a365ddf7704c02e6b48952d60ff616395ac4b7900a5ac6c10011964fe86132681a7bd77ca2e64f8389cc958620a7e9765a0d6e324ed24bdbfc50c28844aaba5c69058676bfd643c7c3cfcb905da2822e4163526cf9160a3e8ee0e29a23dceb96c79d221e146b3547b40a353b85576999d0e331cdf0570d853e52e7b473a332c7f10d741e4877357d7a21050ed0aabe30a024bab507ae72d09d061bbe958e7f +ca19c7d23a33a9b5cc69d3313be900e687303dba0c5a6358949ecc2826f30ccf615b06077f104c4ebedbb50ed79314c9f2ddb5510133da2549c80f08603d2cd67db11311990596b0df6db6c34c08597a928c9ed9c0d0efed15b7b17e7c938666fd337f63a1aa087fba3f6af83926d40fc6765286f0a075923b33ad9ad2eedd3a61012c3f1294afc702a501b78a4d79115629f24f7cb0b0e1a20420cbebea1e52571001231936a5d6610179ec8a587a89ddbe30aee41ee7d8fef2b6a9851b16af +d2baeaefe5d515285d719934c26bcca9d5dac987cca9e30fb6b8045d7b043cbd0ceb808fbe776a60f0216dc84c8ba417bb5e85231d7aee4e53ed12b230cf959abcf1eb1ecb5fcd788916e0cf98f0e417dd889fe32add1a8c83f35aed80912ee3e01b71f4be06ad343b801b799d5ff455e040c463621f352d83a9f46c9eed36e6fcbf29e3badaca04741a82f8343a32b15c93b7a6a6a22fa7127b790c1fc9589b4ad5ccaf3b0c7695d685a16cd515e2fe7b75fd221b0d4a33db10e0ffb5885377 +ce4c453cc680efadd9c3dfb53c8997d0cef91302e6add90946d3e7a20e85aac9521fc536caff8445f1c0e5548d397b04a670c36b9d9edb6426eeeb1efd7287ac35ee48da6773fc0e92a965bafb5f1c0164eee905c51a61be8e85419fec027869f3213d9a2a5e618b55ded9423053bccdbe59aae6a8da0187a591dca0c5abedc5928f12bcfe9b440c1bd891f9b0eb61c0ecdf6f3e2bb2298814b989bacf3e98985370515f3a9061fc2bed7c4acb5d1af12b47f4edf5b640730163cea165ad303f +c3da2f1c218dd3d65dafd812e62255f94c7720353e20f96e58551b5cbff3c5fbed80d14035c5e2a5e9692e2fdfd7ca94b2a30f44de2bf13b73d3a64cea9ccb41ac1b07e8d4875d3b16e71717916e70303f57f3209b51205ae74669c733d8f6954b542e4b0348e17cc36eab3cfb82c6a412439c48125f1796afc9a1a620ce25c75ce5ab8ebaa0b2257fffeb7cbff0a4f5f4a4b3dbdc773159e05feaa10d7eedc22e273ddb154c468c209699d6d0639e599191c793d42f92c7d82599b5533e1557 +f41c7b2968db629abeccb6be6cd7a49eab6eb39c33c0c3fd755309e6a487ae8d8035fff2c7b6cca4c8383564f0acd2da3a1d192e6cfcc201b373f4dfb40be57e3013e25357ca8d0b5c2e121691a1ea8159c3a1aee04b211b7190182bc8690ae94e2ab9182ca52abdb14cebaa6b6a4ed87e99f731fb7c579fbb25addfeab373ad5de0570af53c1a3024289e2f3f2df81cbd3c62a505804f35a52ffac7d72eddf800dc750834f677b10ba46af16bbb646a72f22d2726f4e063941db28fa6088d7f +f68af7f5efc966732f2d58424a7f70d22c003663a8ad20a28441e0d184e03e0563f3e24ebece8f65c2d4f80cf5757f69de375a232ee765e81b99feb36f8c38a53dce71f57074c80910678a6abc87dcfc5bd636479837138329cf7afe499263e3c924a72ce96aa2265cffa4e2f424d75a940ddea9e7d71c80139773c4fbdddc96956fafa1c8a5ad5b9e01192ae1852327906cc08a1c32c42c868eb6a8a767656675306a8390ce9e320f20f70b5fbff610929ec4a70625b65cc8fbde1a76dca997 +f5d97bd7c983677de7c7bf2bedd83ae59b82e7d8942704b27f420c30fc412200c9c728818be75c72ac449aab6cc2ac48affd9856e401897902c40f7356a74b3049ac8f669a917f310400e8b513a538d00b2b05a98fdc0262382ae6cee132d65762c1514265c83d5e72ef4824fe5228d6e0a35ac893c9fd47dcde386c37614d4d1cd60a91c540c5150687b5bf607300fd13bd66135ccc529802d94b71aaf5caf4076416152fd0380d6db31875b45d5bb62c8c5efd4c5f7ceb5377140da20057ff +d4e2c2718d1a50b999d00ec2ac3b97d08d2a71a726876bd3a98bf6be9262a15d571c1fd7a3aec1c1a93d751d9ff20f1c04fa2543bde3e3c5859c01ce9c1236a318b8e73e5e89fde951ea57f978e7e6e1089a9939af7ab6a99a79196a564c9f653da7a30eab6bd0b06e91fc914b6de48e6579e0962855a7e1276a5002867c0ef2db1ce125a438f2f9f6527459819b8ef69a02409cbccc20ec5ec4cd18100550279fc0c07a1751e7a5b26d586cfe4bde5d0d62656873e41d060e428651520cbca7 +cc9dddceec38a9a9e796e2f91213dc14cc0db0c44b1751afe845e33292f8b56a5be6b9b092120826d1c7794cf110b93fe58b568cf3b6000247ce8cd2de61ee9f2c4e749d279507dba8f645a8a5f3e391d2961081ff849e03fcd21b6b55340c371c541eff66b88d87728e4df8773bb7d7dc1ca82492d1ebb69837c13b956b261125aa765bc485a6dee3349af86735a4ea5e44756c3d3ddee077f471b5cb76f07cd58e1240646f37c709eeb085eca2fbe528b928c2b48e6c12c92358c8f3b2a9bf +c317bb7f2a03279191b49b2e4245b05af09aef8d80476916abe473233ae4db94feac9185d25d0032f7b838cc8f3b3a0a398e3e3bd7b6c12bd0d8929f6b13485d6abc927208f8d2ffa7d93c1cbf6e2f8567dafac1d4f837a5d5c225edf1ebb3c6b66975780e1ed7823f3112fe90a0c47fba6849605deb50b8ddabb4992e15e9c3c2fd91123e076f936e00dbbb4cb02f22bb03d6329fc0bb098663fbce4490610691d094bf732701ada472200efb2afbf654559b9182985a6ad619532d4828dc8f +fca21a86fd0ba17087ab6f4381090656e4770257acd1f506d3551df7edfc1305adc38a75d56f0757ff4ad4779cc304a4edc32efa9891434c0acc7a579de7eca42d329eaacd10e4004bf422b1a077177fe41859ad4f792f1ee0681a9c823239bcff9bd35e34f40b0dd8fd2064c29c7cd6ed4dfae42d6426c2641f2e525e6795a7d1f9cba52ea68e8ef513e8def29d5914a3fcf38cdb18ad00fd78cf44f6f98903bb241fb5915c39be08c0f52c8d6ed9acc4da1156d9d29de1088e64a2341051c7 +f2e90068eca5f78741525de37f2326567b839b98c85e271428897d87840e4a5d5672516ea62647f0c3b3a1d83d3ad1766cec0cf3df83a00af21fb34a1bfab2c51332a0ecc3501804365227f423f3b45c9be0c9613dc920dec0457a1135a975cd8fd70f58539c7da745dac71e7005e54b09f239d8106babc46daecc8aadc835396d71d7eb77fd0dd4406328476607d56a9f6d6ea0cf8f37961e677b408d09b208a2cb1b7771888fcc6ebc023900493544e193358cc7d08332cb35143157f8f07f +c321461abf9334c5ec80dc2373954c33cbb22053ac1ec8ed7ac63be207232b84ea36b2dec4d59ad0062d5c49f01f9a246763c693d2c52f231388e5367d5c9dc6238a08ed8cc3f3d58118f3e3dd72aca119c8102eca0d842439943267914776fe2bb42e032ec0d521f18ca0b21f56c119a847b8fa7e3c2d6994fb763986bbb4af58cce21446161cede7c6bf13daf315b41119ca11521932229475635b306715b82471d553ebf34b46a6369be55bb69737e90d56a65044f381b816a36b923bcf97 +d715a9af7b15afd75a594fec333983299f783ba1881fb96431c00c5bd1449b7f6c57bf4dfcfca138976409cf03ecb8d9bfd89fde995411409e8bfd69701b11666366230fe79aa9baf445358f69c2cc7e291c6de10f99282cb52c54fd50a9901bc18807d0abedd72d414607aee68d5cc24187f7a54db246be3938d5b3b54eb12cb28f60839e5583cff1f9f9e545615570b56a4d27d67dda1c9f67e50c63c655f2ecc831c4105b1fda44198870433fcaa7418e81a4bbd5e04ac60eb747f520916f +eac06789de27116d2e048e96c8a3f9b2e0582c63b8be79b2898d567127b1d1da8ff708dfec6753e9205318d160e0552bbe31f6e86aafff3a085384b37afb0f8e27be746dc4f231863a192e694054801bc08dc5b198f4fda0ef517bad7c683e29f2e41d2c43117a158f4fc1bc0ae2513a4f289e4f64b6d83b4d725c90972656b195d6e1b2889118832f56c97b1f57a1e7d69a4cfeb150108afe118824d8a82ae6c6bd360f6c95b35d1034063c0ab63616d43262754c27c8f4795ea825b176dcef +d9e0b446c491edd57580fcc8c8514725c9b7fe694ec78739b3d5d3de0ce9ba518b2609e4503135ea22dc26ea0146047b8831838b1008d5a3179d13080283b36e0f66427473b389f8a16088f61072227cbd4666e348006708108d40deccf27073c18ef8827964d40ef3bf46fd3a0cf8ded50382087af95b7a0a3a7f2fb02cfd8192757850e1ef9aaba218b339c1a9843d50b6992deabe04a61e65e12fc0b70b980830b7b3c9da6d6360baaf77cfcb35c08db6fa20b6a1cef779ec536f9bdf591f +ed1e62aadccd990f53d8be39be8c8f400de1d68b6fb35a62dbd675711dc232fe7d887d414f70cddbd00f188be1c8b405e43c6e5edb36cfe18a384652d2a65c693a894ef2b042d70e84353591b74b4c1933c14e09610bc531aee1f193b0bcb3bcad6caa0fe96c798a5bc86caab98afd2c0ea908cbaed6917deea0f2346d5e912bfc83c4dcc6bcf4a2be66f59bc31b143fb120ed52286e63bf9acea8ad26fc07b4db5a62d93d3617e2ecf5309666ada1f9bb843b06eb9360d6cbac51629eb2267f +e2e79e7a3b9dd0d4ec3592837e2d26d6d68cba60e49f949c6b134ee74f6741187fe009346cd532cc99a165d977f488353d84a91dd876f30b7a7bf886313c2796228a2375eeb9d115034f967169c742533272652fe21f89b65bd7b1555da0ecde9d7c89c9675a1b932837c81b05fbf27c691510376a48413e55e591b4fbbaf2d996a6a2dd6dca210b9c26d8730235353a794bb9f781d531778959ae56ef656a43aed0724e0ea5fb77ed49e9e64dbbdbafc23ec5ec8af64f95cc0f930a3ccf42e7 +d4c6751520aafef705af16fa0c8d8191e3ef1cfc60f9280545cfb60162ace2495324cfa3cf64cf5a29bd08d5946602800b11320ddd7983c3cf7f158e92ba47e97a49d33f78f667a4a6db8913711b7a9da122b7e34fd347b78287002c373340e5b4f661d5b15fc4bc92e2115740d6b61882977a25bb34f3fd8f0f62e767d03864a301218e650d5fd6676d6ec1741242dfc55a743f63a43da5a18e15d3f6063412c78d81a53c84d942778abb9eff23c51b26631bce246639d4fd347f4765b8e987 +c819e350b1702e63ac70693730f0fcc0e824673c93421a5e65a3b21410dab2b4163d495daae28fbf21f73838984d30d5e7d87e9eedad40f38d3d11bbf62440350a0f2e12596f1cba4f06076bdbecff186ba71696d39f3ac13a222e8914e7c2a20970b05678a0ef2fb5f27deb0503f1ed8a231adc05764af15555d006803be47f0b5b29177ce35f2aaf42171a18b19c92f55292ab22e09acaaed2b59ddba6b833d7dea7668cfbd3cf900809e4fadecc54c3fee83be1ec0a22105a5c418211b6ff +c63c50bb56123146d74885e6ff24a1f190bf5e12ea5ca7ec84690c4017ba33318f1848fe4898b776d55544a641b163051f123867d79fbd19f614334c9a4b5b120baed4f0f66caea26814a7c3bc96e998894d4605e4bd533077455afa9a3b9e72fb279fc6d0bcdf41c0e35803e21da641afdb728fdcebab6fa103682fbffb2ea28a02574380cb576a7dda15f5a9e4a04e28988f50367a9468169f05890512f70348ba6c9267d74f43b4b7887122d59bb6f78eb6c9ffeb329981e28c7e0e158687 +d259815a7f3388a7755d3d27ee4c5272080d19465f09649dcc0d26d557660e0360b1812994db95c8c806e14971886f8de6c211b6587b0b9a5d77f8f794df26daad025071cb8667530a64cbd87bc8beb390349c80f32282b03999c420fd44eada539501d5052b84c25f0cadbfd3f7d75d191c3296d215871db379fd6de7e1f2d46ca8fc3a25b4f97fa5e7ffc0fef0160a230921f76c389a59617717f18a3f4d451e30150a40024710f0f0d4ae65a5210e926992f3beb43ac81c50ea5a738c84c7 +cfed5952cb34c03e577ee69eeb5aae76b869c089616fd7cafd75649d10f69fdc174a0013b78023a060af7b895c95a32066b027011f256747f7fec6fd571d61895d42607d728d48633e1cd1576972a7e9b33c7b0883e0f6cda7a535edf58403ee3fafbcbd6c59d9711e9780c855c1f09af0be168692b1586e4c0efa6cb5cf69c4db0af9fdd7333b44aee2937a57ccaa1024c35cad7356d0cd6213f932c26a11e5f9635b78d4b4ba8000d5ffbe3dffab767c0099aff8317705695d27e516b67ca7 +c50d49343aee55f91cad60f310a7076cc84e2660e88013df11ce2043f0662e9eb45bbbbbf6fc83680ef09f038f6b406400c68ea20b735b06b7059f006c588141863dfe31884f4c84d79e503b9c14574a40ab302986694843d0b59a2926de706acffffe455f6817f86621f4bf1a84ba1b9737fe6332e181cabf14696a4d165e07f4d74707f0bbf648444ac86d37fafee94141080ff59eb599cfb4cd92f7f3a775528a16757ded898888c904bffe9247747b24e232a020e4333f0a8020496405b7 +d8f35676ea684a774e8d710d2173cdadeea834816f375df49e7ce25beaf53d45234beaa3dca20c7cbde9d1978c6642f79beaff0464ae539ff181b714a71039d333f524cd87d9ce426a9815e8807062f404a3010b0e4d4c895f5a2d6ba4a4ef91f11180162c53ca72a110415d4b8f18e3d4946d8ed8e9aaad22eef05f34866d29f5eb6e7cdd125b24433707d04ff177972d14b7ec0f00e7ad295d10ed9969df4da270c55e76881f3d938ef9b2994e1052cb8c68d2f5fae498bde4352beaf2d4af +e44c0408b5b8dd7347020738ffad99cb0bb95b73e43eef917345b0df9f0be65fad5bd82e51878782dd124d0ec3afe37fd2d375754a09f8f55d10ffa63990cc87341f99a2ee5c127209e4003174e0496829c396fd6e4978efa616b17a8a59d7bc1a59900641dc560da202dce6b56ce7f819c106ba0f192022096af71b457515176c72fa826221b26e7b57354496954f39230aec856b10c981db9d12ee71bec7c7d600ce2da6b1588a548b7dd2456e653ac4e689beb2f2a5cd77eb90eb45fd255f +f70a9dd8a66d8dffadf7ac7440940837963e3a08bf7e9db7663e95e542297da68dbd43923bdbf81bc22c4ff53244d2140729e70db6bf3a31e2eadb9114edbb06ee86f9f4bfb0a517a9ca50e27161380d0f3b2c289ceab759de82cd03ee75de2e1bac65bfa928786f65278d75962e714e1feb708c8550fc3738a9410088cbfb516690d0a5d16a9f6118a26c7f1aa09a3b5da64a8f232fd2dcf9d413e5495c285d6f50a9e2ee8aa4d31847e707cff6a5602cacc3d0105857af9f71664ceadb194f +f3ac2b1ce96fd127d996f2591a6d3decfa4a738f57a4e6dae0e6efaf45904d560df0a273f1a34aac655cf580fe5e8a592fd54bad33d6cf3cda44937abb9aa7d7e2f08b06964a9d84735fc400d3753bd4c3ef077ab77650e064eec49e4f5259ffe0b5fa1135aa9c51285cdea1ec0c621fb3db4ddff24916a8aa4d2fdb54b8749e36842a0a9daf1cae1ccc93dffc04f7490b714be1f3077f89c3559930fee28ec0194a01d1b5c9d0b4fd07676469d9aac9e8cb3a9a98500ca0e9a743d67646d9bf +d164e09cb847351dde0149b47c95665107d153525c9a8ae2bdb1cd3b62811aca9ad99491380cc8774ab88306274d9731cb310182a3af1822f4da57c1b244d58f7e78af091a91756d3f620fa908450691785e1cc217f4621eeb6651bc76a51a6633cc7d96c6b2c6705a20fbf5d5de0c70ebec68c2b221667a17ea66c2142dd0ea7837bcd92f4e1bb58f51d47d6761055cd6eab978e12aed72588da1d3ee0ebaf44ad84a6acfd1c6e66d0510e416ad5b1ce97435c568fa8f0beddfd3770544cbbf +d5df3da0377c179e9fd20e63ddafee4ea8466bbc5a22a39c1a71c446144be7f34c67347dd1f9fbeae543ed400f0ef89d07da9fa338bd30abd435d33a85de25f0575f761cdcb60aab4a4cbe4576e787e15d864058bf9d54254333e153818a987e76d75cc27eaab2d279edcd2e8515844965f9327526783f878c91d794ae3b2189b8a8888341172d953ba8a4049b9bf2ea43baa740a863530cb792c9b0bced1ba737a42077f0a9dd2bfb2abb11143ac4f9f6aa578744bac83af9c3ec8b0747d607 +eae7b867c5e58d37df52f40048496c2fae6e7d8fa4884d88d1ce005b387aa707ba4d6a62bfdf408efcadb7862f8e33a40b52ae179b1c26791ee570b4c423e07900eeb24e36cc012b778595a181b37be638a5e92ab8f791f1d17163339bdb9dc84452a43621ff42d5d204afc65ff5e5d6bef5ac690411fbe763e6ddda3f05a8b6f39743b332d1167a008ee9e8e897eb4afcaa975716f0f102c1a8f8cbd52bdd8e87abb116ade74e30ada23b6986fa86984638ef6f4121cbb151634063db72085f +ff03b8c87e84a2cf55e1ef9c8614b54f4fbe98afe49dc9ef7e05369d1838581a13b8c84dcda4c986b77ade42f4838fbb001d3e924ad0c6e58f8c9e6bcbf4d42d3234c9d03212d5654170a3c17c2ce24b54ebc22ff91d42cd4b646eaad38dc39ac9494cde96d7be86f6da5d559770164cfdfcd387995bebbc386fea49557451d720fa75caa0e168503a1c1aeb08be61ffff29d0861724fb203270a65b0c4ed43892dbb467684ab03d2bab02ef3e8f264956ea44dcad2c301725f302abfabf2d97 +cc028aea4c4d4bc71bb57c1519de1f1788fe83ac982eb03203157cfa7479f919bcd42dd40a59435314064e0bdb471a1f8add24b86701d7efb0a68f2c411f177bbf753f2e09e95d49682f02423efad190ca6571b3549e921af05c3db1a3bad32188d13b9db2bbcd7e36dc33b61c9a6dda331779526abca50dbd73641eac10b2f372b8b0e590bb6d6d326a652ee410d8a8fbf2ebab1809e3fd752957098c3d1d766fdf9b26c9592b1b18f594b9574cfcd6fc60dbb1c9c1cbc13a104e954d48d097 +e53f3060e5c7b1969eed0144dcde5ca4221d2224bc901a4dfc806f071b854307db9a67b1af1c1b77c385f724180e279b216a55f407b7c15fafddc64c9e3fa9baeff6ea2ffc1f45632859fc61f9f44786f63ba2c3430e62357278e569e51e7745ad234dc76172af18374804c39c2539b2d684b4a6ad214e9fc1a4ed4f8243a5ac3e0a29286aa622ff24b16269a2659228ab13f438a270124463823da1639de46a16c1a8ead68ddd54584a09a621c51c8a9133d694a7399d7233e9475424b07037 +d9b4df58d28ec395003b0e96ff29276b737b74a0dd59086e896bac90bfa1eb719c3a91935317b19b6d9643bd2ad6409c8c98ef5628e7cf98f6f9087a5242a4bfe1ac86bb9c44f4dc30f9fffa81a41e8c24158d779147cc91ccb0a19e7daae2585ecf4009cffe8b30b39c08dc33269493c7f08634f6697114edcec1ee82968b3d3d4684226c449bc177610629b140b7361f954e87927bec643aa4fc23a43f75e2cbf0a15d3adcc16630907ba9834f999c485a3f896cf315b22d4b12cb58690107 +d307fa65c077aed3debeec265cd0671e4c4a216bfab427424ce90410c83527b1854d85395e1bb79dc25557cf2d79f5952041fd10804aea6c726a8e2299fbb72b2ab1e4472ce447b4dfcf3ece7720b7a8f7a64714bb5db89e6bf0bd0a6c9bab9fcbe576521893c12269383d191225821124591b8422cb5cf2bb597201bec82bb64f4213fde089f1dbbc2a69539d01ac43ec515599d919140e2e04916c169857e9f2302c13f78f3995294645d7e93d79e06654c02add32228a23ca015a0825d827 +cd0960285335a09541c15c0b28894634ac23c16f54419e9f371fea9272d8d2df6109caacd1b82b513cae3e19d4c1dc89cc1e9dd4720b8cc2ced25972de45a31aabf32b310e0cc64463a55c4cbd247abe99ff5ac60a09e54290d5153d27f06943d773959840114a93a6db93d8752a515b5e6069b02d1e9f400d7bbd677788d9854b12eb6c9fc25d8f01aec7367421fd724ff72351d3decfc9b22eabe6d8451ce022ad21ef4ff32857ffd1aefc089feb51bd7869928497227d3568e82b9ea1dce7 +d64f2b30138c425fd5e0fe89b61ae1836cf5344214de19bda9e41b748dad40e758454277826929b09bc34530d516d74da61cf8aa4110e6dc5829be015a0abed69de14e37e58d789d2b4e93c16c42e73aa023efe79d1c344f97ed8f72f20fc3814456ee7ec00adc8b4957dc932f40538f8f2526510d4150955bae42a890892351879844999aceb5837c01ca84bea9a36a09f4b335512ff9f1b8217d53d949377185536e913cdb6bec5f211e873f1c217cfcfedb55237b13604a68b0c99680db5f +d847ee1139156514f75e83d5d12457a82f3900892df73f7d6462b5dbbfa769456a3bf8dad2182baf7556311f2802536d1628b4a0e02813e04c2d60f2e8e1778c8ad4e08b8c011458769111c803f17c0808499e48e6cb598bc0263aa451af5b1a6fa5262345c06958d0b6075c3fee65ec98ef1f6cdc862134cd175c0505c7804d77497173ad798e62f99c5e49d458a0d28bb1b37fa5f3011e8121e0c6ea152283f9aec4da7982c82fc013636f16af091e8d591c5320cd7569c04e5a5dba402317 +e6d7f58f9a83504770a04f50d736c9652efbebe112ccf8b851eb0c0e7d0eb0d9158ceb0b3509b4c74cd44875914d9307c4b88818a27904c3e5e36fe15b3eb6e34481e02ff997fda3dd5331c907ba8a6fead1150f2adba584ce2e11e05028c106023db8446218ceb3a8dd1036c57326894a56a6380c76601fbae877ca82c31a2322fc5ff0d0afe079ace9d82eaddd4541ae9796b60e49dff47f826e113e6657abfd7cb7a72ea840125a43deaff32bf8fe33ec91a0c5769f0eae5de9fadbc7a26f +ebd9847a9bd1729fd7a660e8f4a8ab84f588638992abbbe711bccea82ab8f70bd48888697747286a635cc9e3387028c8ca6d5665403cc8be34b23b51c45946ef8e9b276846a031894a7612c6d55dddbe126d0da3d4a9542069d84e01ea2081b89707eb43038f666a47a42f6b76c56cd8056f62b0759801515baced3ead8bdc7668e5e4555aff8436dbcb12eb5341522f9bd8355fd0897af7849ac833aa4c581a63e0de2a5a1570f87d49d84442a3ae0c2effae7504eefa19914aa04aaec98bbf +cf9c77f8a33594940a14b647ad774be8291e09f85b56ee3a8cc6d6755f074ea2b2aa49528fe6ee80812152e05bb666b4d8ba8851db0f44bf88488c48d38d0b092aa9fd7e188e2921b1b6c2052b5eb23a3ed01772db96f1433fc390160c4afa0361ce53a604de4af006e3760abeb2f0b24632cb0eb02d2d53378adbceeb3faa06a73e1219ec8c09166cb38070fb4968478b564036b2bb8d679cd34b486b01c0a599b587108abd5865329370ed9c843de159dbc7cd02e99bdab37a6ecf6a676acf +f6939bc050c05c7655cfdd029933c3fbf558d557496958657fb4040981dfd5d197338d5e9fef5919da962e3b3a8a5b3ec1a5e4e010684ab3e0ed2bcbef11f2b1020c41dbca50aef49a29f2029a55aae987588c7f16035fd7eae2a40729a2c2f574be38e5e12ab1187b6afd7289f803f4c58bed68b1f36052a22827af471914b95c4e11df5e062284ea4a02229da26b21252be3ff39831de847cb06cd05e1415e4f3e0722152de6707559ef897b7904234367ededd973987da8eb286f770205e7 +f72627ef6f50feb7785b5d1fe6eab9a13146a60c243550b5a7febbb89ce93485e41616d653155c167661411ffb1183945ce536e5b17023b086851f1572115e8900c4aa7e5dd0e7d10aaced19d66e1dc4bf1c4f4e8cf934dd109403504156efd0b3d52fd3131d00e25b009149e50886b7078486adc763ec78680dcfad80d18dddecc83d45b5f002f6f0541a6f3a64edb3bf07cdadbd8077c6837a4a16689c0ee7b9c738835abbe2264d78ee16a63ffc993f8cca98c3130134826e587c9eb53d87 +f5c1e38331641192a3a56923456baec539d47114c860a2114f1aac33a4dbde2536189b61a38878d37a604fc71215ff8af6c17bce612f6e76854be3032e5fdbb0f4ab3b712ec0d31225740a609bfc68c62a3e02ecd33b4d0d1e5b18d356321d9fc54f67d52ebbae63c34623f34758ec0dc13bc13c4f1e67c67e2d851660a0fd495a7872e212936cfc0fcd768945546d22323aa82e8bbfada12af6ecbe5458f5c9b0302ccc9035118ca1cef79446402902561e2a757547b0aa1dbf33cd6ad6102f +ddaf27d1744c6eb16039f68e1cd2683ad289d95bd6af2a3b291fa7f4939e9bce422179e78ce337e26d35593a6d709734e31e9884c47d76ccd2abfba6bf5731f71f835f4954e2a9c3c424792a50b0d94896d9b4096589fddbaafaabcab5449e72c13d25d58312e7e4b7862f7a6716b1a3f2dc99c4462e16d2cfd2ce521c816fcc5acc0e013fc6b1e3fb34bf27f68f8a359292affa9c9934ed9b3a374583561babe679ff1a6c03860ca6cb6cb007ddd82718f0f69099ec994bdf9212c451171f07 +dbfba8bd81ce821f5707def58e9e1303201554633676a42ada62f5714aaffe27291170a32f088bf83ee439e86d69e0b59d1638a2ff7d69cc2be0a5a843e9f2b97f0b23123fb0f29c3480112ce4bd97acc0f4942f9acb6c6cf452d20b7258f87e19d43dad75fbf0799bd907b1c8fefcd43c8fc6a68fe1ed21fd32bf32dd62a0807acd97c2726ce7846ff08cac2bafc94457baf1a58c4f2a15255286602594e5dbb5169a67b83c78a196c86d14e9db1ec3f3c386cd20af400a664c8172d465a477 +e7c7bea0c2869ac801cf9ae01756f0638f0189c5620ef5e2e76e9a506102567331373fd4d697267c0ef1d11501b22e22acec5ab782aa0596186407207d71586d939f7042a3560c9bd23fae1718e83ef42df2692d329a814654a0179e1952ebeb16466d470c8c73d1c970e150fed3eea04a7ddffaf896917e629e09e881f4f80c90590b7d1ce545263908e8f0fa1b6329e0dcf42898e12bceea2a962c43f6a6964cf201cca6e4110ffc988941edaa9cfd99b41d76991e2ec275f3ffa66fb408bf +fbfb60e6eba3f56f6ea68345b5301692041a94c7d1604fefa409c6fac954091e33b9044efb1506121490f44aef20a19276322d75bec7563b9bff0e4682739447397c01dac65fec6705b3e68d298f1c4a5c0d0035e88162d675f1d0f7b1d56355f5bd261cccf16c30646c272fdf941aab68dabb3e6d8dccefc58e4ab850aed36dd590f90e293ac5aaf05d1f9854d29bf454a4b6508aba4ec555963b43b670dba9f1716b758446bc7cd46ab7bcf5847d2624dacd27e666627b018726f7ecbab49f +da0eb689849b0cf6a6392aa2e5fc1759fbd9a52d56e39f383cd72b7aeffb8f77b50d08c99fe544ecd5b2b6680bd18e4d0900ffc90dda1f1d2c610de78bb41bbff93e28ef95f4fe31696d5da7be3ab97ddb738df74ffd26a29ad89bb15cf7875a8b8f3fed0228aa7793cecb25055fb269bae7939dec417e5678b8497658ea82c53ef00e41f45077a41b87ffd8e27160752b078cdd85146180202a7d5a99f35849bd3951e35cdcf53998788e077e10a7dc082eb886bd04d49a510d57782e0dab1f +d57137bf568f5797bbb8f3a386332460596f0d4b24e6fb4c7067092ef00f24ab3b0bcb1b4a3cffc3152db6f8cfb97985b220061f1f021344d72775dd44a5dac2cae1461e5f3edbe36c31b7946fc50b45ddbe0ff34cb9688575f27fc92973ee0e327ea7c13c50386087943fe8ff97c7fa30ce4fb0a433045764d5b8b85322d8e7a97d70e7fd8ae4c8d1b42b305e8865f041925afb7a64a62f3816a980119a514cec12ef909e8d6692de8901293b1ac01e0c294cb77bd38d0327b2da04679b5c37 +cebbef35aa96f916dcd985626364fb08dac4790b2960a1dcfdbb4188dca65e7980e9ec09c5f1df3ba4c31b0151e23ca3d0a17a9eb525caeeb33dfae1ae4514fabd0f7bf71a128dfb2094dd778e706d7a88adbf52c4f7732eb1587522ddc2b1ebf9d7dd68f28128619eac6b152fe8b272764104ba6f979d353ea88d9a1af80e0e2c950bf18683b94320c1d4c509026f7a9cdad4846de931815c4972d32711c06068894554721579770e2062d49ca0e61e31059b6b4fe833808ee917b6cef9ae0f +ff4588b3199d238dbe5a109aad3e1210d1754c2246726bbc0a570756c903658c00bf75a9dd89f162fa8b7c77017136d4cd6de2ec4cc56da86dda03efe3a7246230d9f031072f9ca6edc4cb38b75baf9d34c56d3fb0bf9c1ffc8dea22ec9dc52cd05c655a0b78130fed9d77a412ccb5c1a3fd47f3705fc258153050c14365f20fde4cd28b73152b58d25cef50297579442e13aae549006a5ff44cab3ae7c9111bce93f3daaffa1e26d196ce051714c314c48d999f12b69c898d711ba3c201fedf +d4b3706a92263b8154320f2b7a1710b0025fbc6890d024255e76f0d36a0fc95d7076cd1b8a9ffa0baa09092c91023e8a359670605c95de27f5d47b193b6c75dd6cc65f425e37cf22b329f454fc2130e3d123512a9f4666e1f529c16ae10a3f9c64837a71105932915bfcb21622d15a361dec8d86c443dcb40d5f9d49e2cd0de0c94876147a0c941d42127b8c35016fc55bfbf5f5e8d1e5c213cc059daae9d6f1212725718bc412f91806b0c657489dc32a95cf5c7c60f52c5d41308cb78a01df +e5885c2513a753faf1f28876174143a7b5bc4f3f5ec58388915ceef9e6c926ddf7b3d62fc6247050976a3044cf252e33773e92fe575cd7d3b50d620d271d5b7525d1eaaf0f0c90b490c4776833b728de7e470c86dd4c164c8d0003395b30ea0d4f8b13ec3e60fe5c7b0dddf7dfd28aa4d2aaec32e966f56de1b6e5f9ea87824186cfcd713205b9aa01ed2b6d39efeb53d229249a65d8da867095c74ffaecf583006d57cff5fe9a2d331c6184c994d0e8b27c3d2e84c90ed261f73d541e702df7 +cf8ee1897c1fe67596c30ca840388b49aa88128087b12f10363e90097ee1ec57e78b07ba8a6ae13fc4ed46015c281ebc73ec5109f3e21a323b5c80d56af500a948e4a7778d99bfdb5819fd807e176b0e6468bfe71d775416dcd3528c34816872410d8ac48bfc64bf35e0ed51da9956642ab73752af7642cc147670bf2fbac2b77ffa5a59b683ab820fa990e220e06192fd4e3a57e86ab666326954c49afec89c4dfbefc11a259d22798aef6871c2913646be5eb2278c2d6da10af1978fb86ad7 +d925c2fb85be0e8907676a02249a8623fb539113d42b42cc6d1aecb5ac8c589c12d8429efadf54b1aad104bd5cab6c9c9081dc71e2bb2ec726ae4283e7df8930b47c727f7433d708db3b12a53101947fb370e01b6f60d987bdb927fc2c25d9f27a9fc8ea10d93ea17160bbbd66bc84d512747e69fa5f30cae901fa9c5d59921df6a2cb1ebec8853cc537a94b5b061d1f01e51a1f9e9e1e6be40d40299034034fabc390906ab074c74ca3693146e37ac1d524e754ec8837c5c6ad25c2c89eace7 +f731a423f649a3559bf4005f1f8685cbc9935ea6d6abcf71e8862f8a5bbab546f66a54719e6318df41a4b937db7e73b61e738c54140ac93b28f78e0ebe22e3b0471a40e10584476e849f5ada7f1ee91f9948fdaeb2e053d5fe5b510ed85359721663e035209de636b34b25156bf650177c62f5a3fa33dd38ebd9b24e8c4a93da6cc44145a8d0a5eee35310a5fb01bb516e0e1d31fb727b8833fe257bcc50d61df252096df27a00c7983f7813e2957059408fee9a7521303427ba336d373aea47 +dbc6b10126861b0fabece7e81d832d3477ae13abd1022ca8e4c33b82e4b13fc64605645a27be783357787a61a202b5bd735eae889edb1fa8f86244c0963f02449881cae08f6bc61fff2e6c22270a8f5f928dc7e18d21e52376909c6e5c492eb0a56b77f6864601cd45cc396f60000d5c4202840dbfe4dcb0fba8699e3d81856e5e856bf6999d1c9b78f7ed55a329f36d1155bbc687a400388e38717bd00c14879ea2fcb3e4dd78a9a73dbd19f1082708fab827879aaded3716defbdfa1ed154f +f18895b4e5f99b7e62af47a5defa4a03413636a0155f3c619de2a31b70f0263635b0ee0fa36e0838514c33dae33b2dc597cc40f2df6e0542af417eac4bd0ce61e854e0d7545436868018298e2ccd8bdcd25e52811fb3f457a21cf5d78fff10d1aee24231376879e4b71cc30924a8e43742c3236197eb791a43093b217ad29789f2211aa9c58f9b87c536328d0c21ac6ef25f6788a48bb6275336d31c36df79a238a13cb36a8eb02c3da0d0bf55e82186a72bbad39ed2a1b921a461a2ce966c3f +d7972282d7830f9c0d6c4089caf480575982365e6b0f8330756f618bf5d25a86b07af206a669162bf22eb4628b0be258cded9906c0d9c65e055d4ba6654470370ce9f29bcb630110696f02aa6e9eda43d53a6d557ab79c746b93f8d9fdfc44f6aed86abdcbbfa319bf83f41fb160184cea5e1a8194b40cb6c3273fe26fc4d444ed369bb3fcf39cc4f90c847488a87e6a8a450b3013c2d3f2c4c20fb394a948002aa033b151ef8d7fc6e8aed582027caafedb967600a9a70bb601b431f606bbcf +fa960a4f21dca88824e0657d6c6f8f725077d23bbd5641103630658116dfb278eda064e51835aaf2de54471d578f77eb0f1db57341a87b7c6fdf5e1f1fc5cfcab3c01ce160b57fd5e2f5e863ff4f683b59965851dba25de16196f04da20845a0b341b1e7dd2f160d9f487706c1754ee414d2bf5502788a60545a34c0ce7e84142e70877cf994af696e6849943ea45db96b74a9fa56cf64e3496ac102f3f78658ef6a60995bbac1066176232110d20b0832019409f8c2553feb615d8c2d4c0517 +f9b98368cdde09e8c05f1cdb2e9e9e8f879ed1edc0b5ab3057ce0efbb77a22434133a6ba5ca7d4bb0bd56db4402722eb994590a869ad3171d8f168a1dd0dfa839c99a17051100dd9c5d5fc1bec47dcbab7cf7c8eb55500e756de97c591285f180beb22e440c1319193641151247aeed204837211c04aa7f2fdf209a89ce57e9f56c3fb8a5488a569f35fbe735dd368ae57d412c992d9f0b3d921ae48268e919cc520b2ce4f754a3916f28665d777bcc94f89341b68585e8994f4e43ec0668fe7 +edf6396840c0d4c8508bdef80b61e20df050bf13cc97e6108303b5ecb04f85399aa34625e64c126a2c81a93ebf127b9886981693d5d65d2c7449061c35293ec529f4569dad7a97ccd692e13399ec4b9ef9f37b4f196f28df3b114094c3c03a5a19b4feb1f6723fab9a18d709fca7bc439fb473ddc0ce77ab4d7f5c2283d187e909e31b4815a84db73d49a991b4c60d356df2d0291f2658eb449d506416a9d4b2dc966edb4d4bf7e5ca588cdbfbc21da74d02f3c654e40ed2796d0dfcb3f1f56f +d4fb319f2239ff2ea8de981762e2a24a7ccd5ec3491d21ab1ac46a423f78eefbdc0bfc7172cbb49de9b1ddf88a7a5fae3244da1b4f1126f57f20e06c860b72114152c5a4e09e77d1d849efbc760a16e66d98e9c99acb673e5c0394835becf9901e682b86fa62fb0deb80e40f47b840be0298a3708b4828d7fb7cea2370aca5c6b9a6fae54c2cca2f7422aeaa95603985bd14cbdcfa013690005e9614206603f9474abbcf964898076d9d43361c29116cf2de65fbe19d5114be346fad52f63fff +d7996dd18635bd3c561d973336bb2eb0d4247e68097a009de2254883cb3c71c081bc35c3a54ee708891fdb132b1238fe044a81c3960e2da07a41ba11ca3f5396390f6111e27bfed77dcf713a82a0df1a197563d23fbe77ef0303bdf1f4668db7c887a277767d2b910d2f61fe59ba8c58c40ccc0c2d18009f1311aa9ad547b489c5f822c888ca8e0dbb38ebc7388bd184aecdb86467930684e77b1e9c3f4811735cb4f158a8b5a37aefbf2ef1ca65fe8b6751af3f3ee16816e66e825a25cdaf6f +c22c4f38883763231ee35a98fd588353d99eb5fae83b8c7c6e6972fa02f21a5d34dd5e6e287ece038fcac68c822245fc20bf8a8afabf0157d5d194117ae169633840f8148337f826d7460578c4c8e1603a0a013ded3895f861fb25bc129e70ae0d9c9dc5fc939da8bad1d18070516d266df5f56965fc36d8764f94ff0b7d76a82949fe24a09e18e2471a9e7c3e69eb8ff79e6dc936961db6dcd8c7c746e375888a5e2171bd3ba367c4fc1f2123749bcaabd527c68f3eae38383fff8b3624990f +cc7252149de6c3944edb91cabbdea887762208aeb470b23ebe8f65d5d1de0c9433353ad3a9242f0779124f67e1b85b4445b92734f172f13ea43983d845b9f95e22e9d75705d36d68f1ade82d277851068a9e5c7591cbb864fff80b2629cac3590ebd532f263e3b70abc3e96a0264c47814e787e9437716a3f801be323f875f8057684d69f59742ca13cae8de4d7a0c26c8b84e234cc18be7cc444efffb3efc4378b1c248f82e0110144be5a911c88e04a90116b88dbd055c96bdcc72e5d28657 +d8d358d40b3618d524c1a7e391aa59a7b978c2d9f1a4371d117d89833c40cc1645d44557e67848f687fa66c3fa89395bbaf11aec0a16f52926b979917cd1786b9ee0e5d795c40d963608f416cb05c3c7e2e34a94b9452df68780b68fc5abd378c06b920e40699901d7cc3596ff40ee1fa607ac1df437b0c56e1c6d79f711352729fcb78ebed8460617fae3f58fec2ef0250c201338004328ad3416b84d24bd32d8410dcb3dceb8f27bfcde00e1a9e063ad30dc612f06aa67050aee1ce26663af +f1f786ee152b3a52e223e7b2dfbd125194e97d1115cf66dba5fed2cbb7effea4683bc7c340fb86c2707eadbf5191b27074c199c87cd1dee06c19040683d732ddbaa8a16ce91d0c49b2624e23ed87c3bfdb0a99f6ec687cd89b65ed32c1c4a3d58ef74cbaacb2b75261d7ce87aed2f7031c1926c728f5556dbcd3ae1b628df15abb0a00430e7b39b9e0410842c796b37d1d8929862237d5ab0121caa0d0925d1157f2dc2cc6d92a269adaf62560da0032c61da5d9fb971aa627c661571c511dff +e3ce2c5eacb9b353021e7c466b858eb30f1e9fef935ee7d853d3eae62140d7f0c871d075278958b51485ca9a86b3727876ea35ef273b6066d1e8787ddcc43b8adeb037fde9066392155db47ad2f7a4a05669b3788a88858871249a5c9d233b9e9cc7d5c958bc7f562bafb6c437e15e2a5a1bc6f2f433a821881f9d1a1314a1e5f5336b85abe59e4332c7adb8677c3466ebfda10919823e7d76a9faf10d14ed94306b1c3f83490e299f429dea50ad6911b11ac0093a9d8c6ac02e4c9970e67ebf +e4b3d5deec4ba8f7c80a89270ce07e8b90e0cd4e56d887e80b50ced4e9c6328a9dbfdf57c8341deba2675cd1626e3950b613c3bd012b9f589b88fe70e509f3fbfce717715b9faee8c188cc4e69a323f68676c24bea96dc91e45a24c00ab75f90677c49ae6d5630fcf5079fad71dc6776ab688c60254daba711fcee03c10fd90bbe5f58adc8ef239d637cd19efc09045a4210b240bf846c21e6f9ee051d58189f61eeabf9cb7f61955b5d7dc770d67fe21813a101d5e80b89a7f5bf05fea765e7 +cdc0b1a6b5775c0052bf2a3bcfe52aa8320775faf57fe6e7d7fd4f9b4fabe83841f53ba276db068a0abc5c49dbcb5d0cb470fca177ccdce557667d5c371b8540ddd1a1ded1a164b47ccf4b96a60e97c24eda265064854d0d37f842430cfccdf125e9977b1ebab21dd6ea53cd0a067bdef41bc761e8ce4aa5385cd137d0715c678a8832bbac9ddc76e14b28a8516963104852cda36f584ad2caf88410c5d7c55e6cf2ea097b4503c1d2dc75db9da0bce3ffcf0da969c41cb285290d43a977614f +f5997935058252041a568fd52888bf00dfa801d1d6fe9fdcdc9952114b39440e02c93471e537c621abc0d3106d8c3468d8f869700218984a611215adcfc368dd78dd041ff8283c824049899fdb0a0abbaa334084ca16ff4110c7155daaf0d12651f9d983a5458374d002185b0e301b9c8687dae5e3f7d281cd20e2fce2ba22e80f5bd3e3c21e7ba5309d957c62bf0ed0af0a45933170e3fdd705ef4c248898840529e91e9c97b0fb5d014d9c3432d60030528fdfc8416fbf29f00c512b72d6af +de76bcd5d18ca3b952db085cbca812bc074dacfb74d275fcb4249a6edb6a6a78909aaf3e21dd04e0599da559d630b306d43ae54b933c098e015023f6b206712e36006ffce5b9d4ebdf8dcf2c4ce24f49e44ea000351f6eb7641d31496deb8a4e9e0d2da21fb780ba6851573bb0dbfe7afb8aa3ddc19e898ed3c20a7f75fbe4d98821dce93b38470f2dd1df8adf9650c4ba9c845fda2105b24159b4b2adb18233b0d74c1937c2f195868d45914eb60684fb531a321bc1bef390623aece2456617 +f3715eaf062fd0439b67ecc01391aa37eadc7cbf7e88764aa5f111b52aa862ff6f492fce28729dbb4dcb3f4846f7fdaf6be7cb94a758064d03ba62e0a38c5281e0e8f4aacc2d4a1756fe4c98b23fc0cf987ccaeaf6b90c39cb122dde82246776033896dc22c57f573db30bd4a39969d9799fe1fa479e3a03195b8ae33790411dd156bcb186daa703df78647addbcf676a45abbc11bbc105a664dd5f3871533991942567856ca96344412bb03ec0a3a1a4eed337486957917c19b1508c1885067 +ee057dc3a182b895acaa9c1f86bd36a196a48ec213484b2d158aef84adf09b533ae5594d90d959b538d020a66ad138178a3f054cf6c69ede2f75c30a966110b2e8bdbac16a1f36e721418874aa71b728f8c6a1fd399352809a693be6f721dc79612c6b76be74ea0efbe53dda00c604d5536339d0179c348564fa57a85781da84c1dc3d929e6309f5b2d787280f894f54a6492e39fbbdb8533d5e8875f10dc09e068a7baab9d609a7e9d13f25a99782b84ad75880d9de034452cae26504e36397 +e95822abbd2337aa0a56cb1f990b105a1f8e510af561d1d2d1131ffe8bc345714344a2c75ad2f5ff9d603cac0dac794b6c732d52e6d1f1b97a22e7fc5569f04829d3abcaf7e44042944aecbfca7f1ae4564445530dc3a2bacb962afcf3aa990588774ba00e806e9f62ca34ea4c2573c089bdb66bae6f6bfcd4f187c5f804ffcde7e28079317089382d00129227e9f8d0ed46fdcb364ff1eaa3d9687e11df39a5d43d8b611b0cd67cbca16787ee49f8f619cf72468036cda98946657e625951f7 +c29baf10facb4c19d0f3b2fc027658dd5ae1aa7a3cce4fad5cc36087981c4114b599eecd916385fb542e0edeeb011d312430ae4317c41fe6f7615907bfcac227907b9297372e784bdf110da0a2d592856d0e0fe7864172d136df52fa0179c81485ce37b7873d4f1042f092c9563a1f63bcd87c62082af644d54b8eb8b2b1b45d21fdab577ed2a0bac6ada0707ac4dc43610d71c3a4927fbd08a72b88b2dc69ab50972e2741dae6b8b27071f383019c59fc342c6797b32201f0233a3b3db8eaf7 +d2e4941d240730ec26c02e6c6ab3a60d71b2ac87a3061c716222bccc415a857ca8dc1139e31a23b21869df85c61b41c21e0859ff1092d66754f858c8add2dfb77ebce8ac1c2896d3256648d06cd9cf41c001a9f685775e110ee0bc117c5e5c296996afd5373f5cad8c24f21797f7a43d99458b4f0a958e10b9febae0a305d25d8e66423414fa6877b2bed7723cb8c9621713ee184750595102e92a10dbfb8250971bb5e738e46ceaa2e61250c5e6608e70503ae2d20a37f4ba55476fc27ba76f +c7aedfa5f473f4ab7a06a8279b907e720f95ff44e08d2a21d4c692f29b69aac0c2d0155ff9c4dac61263833ff48eb0f97bd33857e8520ac158195ee537f3e466ba3331c9fccf12c3f937add2956e1ab0dc967c694e28aa1e336bfb2d88799fd20957e2e45b5ecd68567f67134f500ac4819243c56a4187425caf62c9ceda9a22e88d9475214f23971a6d487d408a35d8cf3440c91178d2c29644b9362a6ed2b33d3ede257e19a1b9e91444b69ab38aa756670d7f13625b74f26e820f780ed2cf +e8870caea2f7495731c3fb2ba1e643823e5543377cdc009abb607d7ddd349bc5cff9684c3b78babb00883ecdffb43562a0f74801e534e6cf2897a2eb2fbe9501afbaf19fad699476ae724371574726db89ae3e22429d3827995bc2dd22d959193032a8ba8413751752c8badfa2e0dcccdd0f5c12cf651dac163ea3d7d2ae7f670e547846368f437316afc4bce567cb51003255cd01340c3e65061f12f84ba28688167f26a8b3c5fa9983599b25468957da02d73a09b7c53889faeb6eb66213a7 +fcb0e7ba68f2838e6d6c632b90c5506fedc813f726cc78624bdbc0d2817e5cfd6d75ec0b42ededa9ae308b6fa093eebf959e6de7d12ecadfe5a633b67698d2b0e95a0867727aad4717090434b7a86db8ac27bb0be34e0525967ec759b5be94787a61d71e12d7cab51c3a4f8c12bdc789ec75910567d48ced48708e6ba4ff660c7355e96bd8e84177cc1d8a6720bf8dcd6463c00c0e973f626a875d86dafde9c1977c578546ab2fcf7e3ac80061723d351003c3f8527d85076cc568a86a0ac3ff +fe50bd8c73bdcf82b2712760a4d9aa7dbfbbdc94dc5f02d2e97932b41a71e73ec2ba605a5dbdb4c5462d55f8af09d72b58edb8a4e484d9fadfb9aa3fca921c3e254c8479185a7a0d9c6a73e7d6ecd25befee93bc6833d54f23d30aebf89681b0974a9d227bf41c8f27303acf32fc10286878ae2b80cebb921c5273fdc6e40168e76dd3599595a0cfe9e58b30842b61b2fa621a9fcc84a00d725cfc9c31742b7c9f2667ae543db121366ef9c29548e9176c7d0f2d9028481c9db4720ce24590df +d960fc482f529ac9011cef18fa30d522ba679ecaaf7274a603a9a2b14103d21e82dffe5aadc85280dd6b4d3a62f9af1c8e33a73636a5d4d26ad5a996631cd9d14de5df42439f0c8af79aa9327b89f63b8ba2dd5b083df0e4f774c32e35412c2c7a389c372d4333cae0afb6ba0b3965571600e8b63089d2b55da68a93b510530755acdd128e5dff072933b11d7d4c83829e3fcb275a84ee85e81be900e647a3328e9aa67d1d4cea9e7c6c15ffaa1661edc0adf4205b545e0077b57afcb03ce61f +ed2a1ed1a71eb6acb25a32d50bd8cc75ff5bbc314740a1bf3c58ee5741b46c4b13a307dbe33b527c471deff1c7fc1ebb13214ff5ec9341b225bb173a3b3b5435ac13a0bb19b3b0df79fcdeaec2f5f21608b0d80f1d1e677547b6bd65faf116450e61cac63c0e8c92f1ca7815171470f1c4dd11c897d8d717dffc7791b128ff383fef2c535dfc742c60f6d85cb70acb5485e10b1cae3404bd465a91949b8ea6c7525837af257626cf1fb08d669524b4222f4bda03dc941a43239d1a2b8ba942c7 +d87b66389a4639e20c6b3c35cd4c7b06ee0c052e4e3b5413e98c4f69b43c20169648ea0651f918d08a178a51fbd2ed51c09a940c3141d8e25258b6287adf288f40e651b9f4bf8de33d9863162e3e8e6498660e6a9a31db51cf3de09b6ac3bee40cbf2afd8605527e41fb59d8b72612077bb426d759c0599e4b5d6721551321246162c40dd943ad64b6cfb7466260eef0a3a47279b52e285f9dbb259c14c0885990b3b317b48033df898a28db39410b218593ec2467039272f99293ce7be03837 +ea5e4ff162fe5c2e91c9e7239453081408fe3933f954899d0f61a184cacddaedc6be2588f1fa44a468a18ef1d84c430d84b83b8f172f355b6cd67c9ddfbd9a9f2dff925e83b543564f4aed80482f77da0441fa9bebe9efa0fd7d8048684e570da7c5cf0afbfc7f2fedbe8f1f93c57c9a09d1643fe0bcc3aa0a2cda360d7a239dd64e9cf13c52d39e3cd8f505dae8d8a15700e08c76014f5977cc978f1e48a57f34757bbb11b51e560a719f53d2d2b08bce34314508953112f2f60f31c075794f +f093a786f670350455884ec43ce9fde3da398c1937994c5bba70d7d8d14e7b4e951ce84ff4fb8977af8fa3943f6182c77fbbe61fd47654950bed42d1e7bae350e330622733f51b0b6961af05243082167e4e826734760f32afdb00fbc8067f4cd5c17423989d3b33279ce438a3d55c2263c90b6d306e632fc7402aaf05ab33e1e7cf0afa815d75e095f8f735ef8d56ab8660f43f5ae607f8cb1156477cdb0c98b1b7f6952f07800210f9d7ab52104ab83d33bbfd9f63b45dac3fedcae23bc187 +ff1faa14ea682414bd96551d51e096b8169d159c3041da1e4a1c97aae7aeb192a51ab28cbaf77fb9e53f6b201062d63a4f29084bd504fd518cd373f33216a922fed02d62196da8873880c7186342c0078df6bc7cad3a32a6fd5a7fb747b760483ea393e3a623781b7d68323abf49d6ef00a9bacb97e8244f01d00a3f251f58367930eff0b2d2b44d88087aa9bffbd2fd6f5f176a7d204ed9410922c6b62b10ff0056e49c3d25ceafe946f5e8338e186b04d4b608fb23c3909b2d8e1760addfff +d0df3265b8276a7425680a2f15cb6451c0beacdc7eb2bbe4d3c599f8c29a5f17931b0127b52ffb2a2ce9edac1b8f40dcee2b4ceccb54e5e9d0ac19e85523d84e35c34945d4eadb42518ea4533aa9fe88d8e32a30d7d31e31e3e3d84409c4a21ee7bc108c35fe9b0659ac05396b6047424aa7dfd8deb12185b02baa1dc93619b387c0d7c3959e86fa7ec06545c9a237507d4e375b0d11551695bb6e9aa2c2cd4d3f2c1b94329f0520f4e3fd1d0d6bc5e6ce1178a36619c39a8bc491b62ae92097 +dc908baa47d29ce0aaf18806ea21c8a19b842508c318a3781be293c95d969f78f321dc7aad5c32a0fdeb57124eb76b855f080c6243c2b7bbe067ee964a6f59c4ae6828e630a33220b8449dcf2087e80994f1d3b1a30b6a54fdfe002d0d039ff494e3e1010f1cbf78ff9959465169ad2f1c69a588c9b8c9513002687d81d5322ab9a971bb59ac860879a430f4687736308411a7a9c03a343b65470cf93dfb32081c09d4135b7c5dbeaf31604983d0cbfb5b6bb86f1825c672129ca51c4c7a533f +d7aaa3a75b0655a632563eb9d5d64d06f528a41573907a5b8ad6a6ae74daa2cf7662f8b44186b04aff03bb8887f187ee634ff701c1e8a77f7b64894d762b596db88e9ce2655d975bc6858279a14a7d16bd07d623b090d8447d7b0bfa7c25c874abda00cb11fd0f1b9c6ed040d25a4a8921c015f69a72f5a656f64ecfe81397c6fbc5e260eca28213fe60f6459ce5cbe79a841755aac3855e3828f6be0e653e0b62ac918112b29e0ccfa8f58b2f9e70f8c04a002c380619b13f42bd8df6d41a0f +e587f259d87e3847868c8b51f384c2e6ced0c2277f27bd2d998c55472e6d73b0ba09db13499fa34c3c66560712f045f6ef91f255cae37db3d7be6a81a24ba381b6d98515c90f5e1e6d96ce9f7c69a7112dff8e92bf86c06f415489214ed974a0b2e32ed6d09d7673fc64f05161ac4fdc41378231a63ed3c18f46059d81b7dc3edc73e2e662392d1936bce8681c5dc8ed7a7fc0b914e16c619761b90ae20ab54f62f8e378b36c70142e083784c1397ccca3f1d6503318f0ffdcfdd829e97c4967 +f7e3635c512a8298468578dcbbf928ebeddc3977d8f3b8e680026e8b6b68b410b74add86122068c993e3376283498666f7e5445b8bfe837079bc9918ded150ee107502b5a1c3ce54940338ae435c562ceafb8be48f447621d200279992852186fcf4b3b19835b277f5d4a8503bdc7465b4478d1f9db2ac891f42c4bc91339eb7898d75a60392f4b6b19765eca06f5705b4ff2fb6220b3fa7aeb3667e4e28e5224944f062f9fd11440777c1c61112ea5daa54e548a63ba9dc926e05ae34d79897 +cc68f85025a2b77d391aed03e5300992b99a8d806c3ef558a6106cb57e3d997d48b2cd179e053dbf72bfd931683a60722e33905f78668b168006e6f19c4f1538bf8c594c929547b4709f7e1be4eb29403b97974fb9095018509a7320b42634e9605a1fc46d2e600e2da639b80c20ab486516f7d0f6676c4cdbe2f9b855ac054af9052a71c6727ae4606b3ed489300b080efaa83e2fcb480b6df1cf68675566cceeb365ccc6e92deefe17090d054a249ed6d5d410dd7ab51f87b131f9330a8b6f +c26a21f0c75c5d9b4f7050beab5abbddea7992a6403bcb975b96ade32bf0eaf5db133569f498aa90f8a0974221e5c21c92269e3a7cd2a3c10b43d83b20d8710f6a96cc200006c893a4027518476e12402b4e8dbddc80ef080dbee6b7b7f4a080518c5716cc4d021e2bd9d4c4dbb8beeebd5dbeab90349b7619ee1a3e25d3fc905f7c63e6853a3b7cd1f0fe16509ac8780535572de38e5d72b88f091f4de250cd9d9f2c429a6f63352e555f77f737f8619be141051ce2e50e2c53e9ab630b9b1f +c3236679d231a38da85c22a92d9312c10a1f923680c10ae119163cd8023fb33b971e91e20459d7c7f4073cd4455f9825f7bcf10e07a6df6f5516dd4560fb25835019e4397a00b6381e74e952bb066df74fa796fbe25f2af36af06d8627ae9db1ccba4745efe1ab42ad5edd7708da4191cafe6ce832abe68b627f4195596485ae82f521915df222d99b203b81c34ca73021f89c5bda3cd8e471c85ba412137970a78131ed45cefca406f4a3a0d99e5cc0ab4ac824d3f679b06a25749951a58b97 +fa37d67c72c456f0235818581b6dca1b9acd00a40734d953948b30e0bea7a47a7779fe1b367d31919de68053ca2e72ab08c2773b37f08fdae9eaddd4af8c38cc7e9e806f33d473ad9ac021924497662ad013292fb26f9add7cb834c3e85fbb659bd9e192f7f6aeb1be6fe5e96f588d68821746e81fc220e9f08386f9b2b33a81a3afe6e97de2a460b9a36f2a989892e45289d258eb4161220218dbda10dca349fbef2c664a3c83e84917f5831f22c3722f3c8bb5459922569840c57343302787 +d7dded29de7a6d926fb53a312169f5d9720a0f4ee52ffaf642270c1f9c07d283169318e1823a856f5d2e97b1ee97570789b74ca14014f1f3dcdd7e4a66658f24e95a74c5e7c1b390d5918cd1e424ceb08cd49a97780c92ce58c7b790d23f9051fa590460bc86e169b471b778b9e87dec3a7a6fbaa1e91615fe2085038c8102ba27a59e701753861b7782e309e4894445aa9f9911bd7e7441365ed15339d9270abbd6f118be3412abda60c35c51413af0e03d13c2389a8e19d1871558a5cc0097 +f353ae1854ea4f62ec498ee8bc23b847d549a2e78842267cf70e693b522b7a4b9f83e7342692fe8164c6bad2972490d4e2b7b42920510944c025a4ff6d9e38712c40b44a8e07d185da0282c353407d50fea8b30453531045148ee7c3bc14425d0e511160c5472daa0b5ba0c97a3a1060c5bd107c11866b3eac0437453f2dff2030e7f5c3507b82d5020d295617571a284198d6659b5722b9a2e97e9c06e7c054a8a8a6283df4bffcdb4a4a09ce8b9965bec7a2fc9de13d5ab11781022553247f +c9e5a8837dcb2ed74ffda2efad40c462faa05c85698e78725696c1fe57b7782ea529ea4fbdb2adeae5373daa490183b96c997cd4ca708ec197864d7e2f1692f5c97700df32fafd5f07fd645c5318fa25fbf287ff78a119b0a71b3436fb1ec47d52ae0c10ae71009616d544a60ebcae4f6bfaac9a31cef4df1b0d24e7e49a76eb0fa842d42fee524bfb35b930644a69c6f5fa9731f597975aeffebf2436e134904abba226a4aa900519ca59f84e52431582913740b42eedc74b4d05fdce8813bf +e4fa0fedb1a9ccfff3b8120ae4a2b8f805dee7ae3dde517a2a0050f9f568da41ecb88af9a2dd97e0e18b1b8b9fa6316bb786aaa01da1dec441825b7ce3ccea38885ecb9cd02ddf4a8a7d9afc6f979f031cacfda3d2f8ff13f605438d89beb8895ff8e3d805e03363906e2627a52d52b578c83303bc70f5b9358d085bacd20f8f2575329cd30a1d6318d58074381de8e75d3052a30f6dc1d72070926d406e9f4a7b130e530837d044055e6879e10596656c9809259c993c906f646356cce376af +dbd032a9545a54f687b5f3f32113b8ea9791f78d590005dbe893cd266bab83149c7a9861676c6dc53a8681044ed9bb76e15a4bb270e1658b445b33ff31aa3aa519555e8f7d154ca8d7447a27867b7a59bd5ead5058c31fddd712db0eca78a09b602710b81df7ed910a2895e9a4a4f031f2a39e109d32e6ccf726d146ff290e92ca3fe87843e4f48a464298b6e949ac4bc9d59d330582194b49f32527d27566c9c608ff1a5d82fa4b39c1ec0365184b66a50711d331cb4f854e323567dfe5221f +df6a227e5eeb5be77defd697324730b989f4ae758b856fef69b6bc3461d400d5dcad265141d6ac6d715ba324dfc0b1838173637117eb6b4141ded329b1a23d9f204c445de29449085ae370ac2783df6c5b2bfd757e6572e4d50b878c514fbb333479cd1a96bb4b404a9f7c25bbb638e1f0a8c3e64520d1e983f83c3c359196679851d64c1b7f8c10c0a16506246418efe5d6954defaf2afbfb1708a0322fd5fadb297392bb1e3fb313a0a69d90c1623403963e7642d2a7e1059571004ef7785f +d956f245e0d24c9c89772a3083d5d5f30026491a2273a170e609c438604a66f86cbe811d90f604134818dba01ebd1f6c199fdd4b0549f419f1e5697aa7842f5528d8e152ecea6fd621c9b019340e1358c831c35e4a7bffdf639aee808046e0e8640b15d631aabc913b8a692844a865c9939cba9a05d575555428a6606c80f147cedf6247cd93b86e676b732e0de806c6e172e9ad6da9d1916d5f7dbfa39c51d9bc4dac4a6b0764467767ab173e8307b25c809722028ee677a04926ab0589623f +cbdb892f09759f873ae69553ad9a99b60ee4983ee028bc7fdacb00205e9782d7d0c179248edb20fd1ee05d9a7c914113953328268f2fc5d7d8d90121dca15e57db465c9914da2a0bb2de094f1f1a3ebc417903919aa92205ffd36782e16be205ef19e24f82cc43039fafa542f5efde370fba67d0bf9e3fbc17f0dbff09af4c9695cbd0acbc05d11b701a6141d5860021034068db7c3f59250dbec62ff62a91886ca18632b1e6847f5c05528bb9db8de96b20bc36c81d8a35f318e64f3cfdedf7 +ee739c6f4fb9ff70756027f0144aba026dd412d0ccae9bf45d97d5a7c58debc7bbbe8065aeeed16847384fce7ba221cd8d2e59472af8d1bf6d0b88a2ffe72689fb2d1d9d25850666ac95577a5cb5e5437a49d71917d9fa051a5aabdbcccf6fa9314e69b4c937648a142f02955f35c601fc4f8766953e6d236e756aeade748bc83899b3d355057104de6126db72e89fb80d82522ba65fac4355f4fdba765a4d29cd3b0943fafd979131d14fb89efd3b53a209c13a18214c0e1b3fd27e2862a787 +e751f761521a3aa701d1fbb2111768fd510de707655a26b79a09cc1b6d360d750cd75338205215daf851e823bb2688a40841233fda4fcda864bdd5461757f6b0853fa666f731766ed7b78c2b0bbb6e9106f1f954297ade74f61589670cb8ea578027c9a801bca5603681693f8c6a7561f580ccd15b431a43b2e3f970d5a0536c8c9a71923811c08e2793682e8ebc4defd0e3858156f3b5f1aeaa2bfe9194fe3907872e1723acf3cbc297fda6e584a3eda3676678c6a49bdcb846fa8a0e8f6caf +fd0656beab3b392d6255a51175eb8fcebd70fdeeefb13148e8f289e1c4132d8f4b4001deca1f668e8692ebcd4faf89437970f7588026aab033f87395bd12dcf7f38411a6dc7de6b3bd76acd3cee1a7d18613d4a67c8dddc8178ecbdcd0fb0b4c5c7fa0eb2ffc3dc27891f0edb01d45f2029e6bb33707c655872799afafc590747650de67cb409ae994ab6e8a6705354f320db66ff39a6d20a1cc8dbc1a662beb82ad779fece6aa9b388bdf0ba233be7116d4d64b1c391e6e367bfdc9c1515f17 +fbac893a704d4b14316bbda77b9df54bfdd90a1c8127b1c5403df791cb0b2517474f9b8af5c50b376203745f5da18b287ce05cab16ea7395e2285c39543693df9ea50df28e5ed90c565b5ac52208f2da07941153ed3af8b00318dde13390e121b82c6a7ed8161deb3dce4716171985ebee2dd808935442c12c670e2d940ec3988c4c47d790192d0f86fd4918db52eb69654ccc9a3828d6ee219f82d0e33217684a5af72d3db87330b27b4d7ca4649b4c1e26c8ded5bcf2873f7b25e5cc29ee37 +d87e02d41427807c61567349d323d33f500e5b06adf8a4daaca539932a983afd3aeeec0cf7a6c4b2b070c77b78e6cd95f50a3aa5a89213e34f324477fbb0ec4af5c75e5d2f13697a0b0db55cbcc7159b888e74f2a8c87bb3e5d91f2b803de269160d75d6b9e111a7d57cdd417323defade77fbfe9f83e36d9bae9f0ec9fb2f7ef7e25642399cfea5b58fa265d024f8fe56825777f0a2fee912802341c804ede8d844a09c17c5493566ad83398ae766e488dca083c3d88331e5aca4ee68d81caf +eac628abd562585fa2d9b89805113439676e1ffeb647b77c2527ebf276193efe0cbeef015bf68f2bea27484b661850a83ba40b519e3f67a687c12237c38ebc3a17b9109cfcb8fa6c4234d81b8d453adad03e2bc387b9389b345452661c3848ae89ef557c5ed1a75508e144dc3abbcae894771281dec28242cabeafd7c2676e6819b6e8187b92c070bb2dbbe0c8ab4ad0ccabc6099d0d7a884ab5c38dd9f90585a6cd98248005791734727c0d3d9fd686cb505975ebe6270bbf96817a0cf3ecaf +e22bdfe7411538366ceb861798fd8bdb226a8d900b11d13266c6d941b353f6e5423bc7f84b902789daf0b1668bcd90c78d9f4d0b697a9c13020fad2deb6f7928de3fc73cdea8549d0f4f4376302991a6d5a8972899ec06651a5a1f86e820291c9d3c1f909547af425958cbce4136b30bc6576843cd5396929c3c788961fd046aba13992486303289da3997a35195f379bfb3850d6767300cd136b470aca6b78c8f3385faa91b0cba5a4d47d46201afffc4fab745a6f9e8b3a7b4c638303b1eff +e40ea2bb353b2735357f7266f2b7562052fa2c837340c13e2019aedc39c06e285b2049745d353c38a925e3a4a11188d645dae02243e63dd527ae00b95f6e90860996041dfe47b100c232a59ea621b6fda4a9aabe3e170751acf5b5a233d067cb9e5c33bdd5ac8a3e8427a0280fd15b7481ff024392e291b3396ade93c4bc84229477aaddca1878bc2d22260ace5b9a7ee88df310b421c093c9be9ebb6b6d47dc9f38535cd7f1925328192e2c10dbfe9c1f235860470679a12993dafffe07923f +c85caf23ea2fdd6a6caa89325c37c575610948f3e2134d5a004d1f41a24003c20125979aa138798bde13c7107e95129519703ddedb90a19f956ca6a4e2cd310a6655a69c4afaac2275bdd60ba7f6a7eba3b62d693e9afdd7f82a8359e69624b7ac5dc08a27ce1671ce9d2d0ac812703246686fad5a76f56d18454042be77ef763838e5122425446555dc7cc7a3bf7db242744245f911e9e3f53072c8e7fcfa5d6f9220941d2668b9bb46e26629a712fb501528a4103e9cfb8414de342ac4b6e7 +fe5029af0ea1c5347fa529732eb9ba1c993024b84409fc7b064ab4f38f8905e3fea1818ec35d8d27af511066be7c991508f4ed920a212d77fcec571701a60f28d0c4935b5e2f54348bfbd09eae75f13a8ca193025d32c55fab2226c34b3104bc1c24b30245cad3054f8c7602ea04b63308c2e0d6bf6be59cbe8b93f3761e5418f47cc026ba1367fd3a469fed27e0172be60c7612a94e1f2cc066323942fb85cbf96de015bfe56afc4da22a0b54d850c061513dd6c913accfe5231799398e2b57 +fb691bf074dc16586bca9d2ba9dbcdcd0fecca943157ac70854925619549be9136d01ff8a1eaf0c45347d257e95623c1ab23af4079464957531341c2266556eee2ef0cb974420247b1d049acd98badf2abbbb323edf73376c78aa5f990046d6f44c11da862844fc47fe25ac4a004f5415e36b7ddf47f5fc3a40feac1b1c13c8dd7ba7ffd67137239d7eac57e1fb1d192030fca90bb16ab83b339d457388cdb9401e81043b0e265c9243c01c45274fccb20582f2d03abf35e92cbd2273b0abe6f +c47adc263498436a930c1e8924f4b1de031bdde67cc29406fe3379a8f7ef3aa08e90634244221e1f61861df6c80ee1799cb6863652be0cdbea65a3bb5c76d6714437c4807871eb703e1a3f6718bd515ed63f9ec0d01fb627340a4141a9ea2e1c1d70ad109acf6d1f0ffcd062104f102bf110d2dc4225c37aabaaaedd712065d66f27639bbdce80ef967d2c33fbd977ebe90d3798a9195f459fda38fe24b4ceb966d4e252a7cc70cd2c212613c76cc94b16ff96facbbc4e5d239fdb3e095c0e57 +ce0e77ce03f60f4baf02c7d1d68d51de7aa71057ab38504be5b65dc8e69338b43668e007c408338cda06b568b94a5553323d82daecdfee870d43e0e7a7d3ce75601f4622a79b4f3b7d4cf674f12be16a13832f439d325be2aed4735181b99ab8270f5050a07b5eb7d82a515a9ee5241e7c38ba2ef4db638437fbde02e06b9897e9c8592f5670a1168bb1165f2ce61e6fdc89f313a6b472b5f54d7e35f88f416e90e78dc7fa31876d6b5f6257408b2527888de2b45ae7682d0a11c89877810e0f +d31274d9370ab4c810dc03de24ab2c9635e9e757cfb352209b8b699117ebb111edca9e701bf7ad00bbb01bbfc6f2c6dda9fe55e1837ceb8e910a3e4ad42633d70e8de2ab332b404a44c7efa51578f20a0423384a6ec8ae1030e143680db34e68ea57612c63cd0f72adeac3cc6929044dae5bd81defc0bf7ee6cd3a9a645cd30f2084249c79101444697eaaf5c4a8fe662d4d46ef0f537f4ab684bb01a40a657a719dba79eb11308c50367d2ce9d74ec1feb73a30bdfc24497d95c127591fa2bf +d810eb5abb7e8c0609b1330e6f40a3147757b319ff5cee382718ec730960d00fbe4af5b9787c7ab34ccf329b12b98ae7b8e2d951aadd90f16bff4da600f8ece8ae9df51a3f5896dcec5f6da90bd21bb8dbb1deed63c7e982324cfbf2568a2cb81e94151aed216ddc905375ac612fdd60c15d064f509b939662c5a94e2a5c2ee5f0b8ba372263c7314a2bc1c6d55d3f40fd7ede086c65119d6a20c92d1827c2008731ae37854b58c65a9e36392acdc72400562d546c290a26791e24a6224df15f +c4f31312062f89d9d583a529092f81aa7e5d2eefe270a8c0a010f83fda2bf4635da45d134b31660c736127f1fea072634dd17cd3d8891ab968419917e3fc3f8ffeb0b8c0aaf5d3882718a6577fb1f4af3789a02deec11cbb4e5fc135395fcd77131e52836a707d1848bd7bfa631f2022f3618af4529606a8a920ffd942d2e5e70bf2a24d0796d1e742b8df5c5e0fb2d098e8b463a0debf8f2c9bd825c0a1e46164b21ae65970f7b1ac13928286210368d68d008ed769a97cd03e3c8af6eda5ff +c25ed7bf7275beb3c26783f900acbbd5dadfd3938da3d3f25a950c38a85a1fc5e354c0f12f5735f91cb872ffbf4a5c0d5b086b506bbaae5b01de953164724c28a6d9cc66ab7ab3262b439f7df17468cd3bd93fdf938473473ca764dc173061a5840b4162a205f0f066dc5cced99124896cc0d04e006f687de16de958b575b3d175fcc49fa5d614b205efad5343e3f2feaf268f10a2e865edd3893542de6a4def3282748f49f33ff33c865c92aeda5b834f793b9fab10c2b281079c1efba72407 +cde0684199a6ba57447e3e31e79e040412634d71ea75078a583d0db11db5f93e051c78e049e1e09bcc32e201a388709216ca4cecad680721f50f51a26ab891e8be7148a8c3ec26b838b2a73bbf96a07cb1c36c40e2682c7a8c087650f21147b62d3e8069f514f879e9c4b0ea7ecb0906439485852a798078dda953f98b6d17dcd2957683162e766fc47cb72c855c3934ba860751ff144805e27109a3d627a840526d31554e82b93a31b814ebd3ae4f41f5aaa14e6adf33d36d1fb9b4f139ffd7 +d3de42c21cbce85285030869cc594c023319a600a7b53108c3713946e94daf5de46e69d0adec0a719dcf69512cd3b7dc1da2da1292872273c16b0191a5bb61e4482bc5a572a2c4a22b4fb76afe791d191f3459e5a578b26ba04205f1b1a5723fba72d7a9c2a4be015db80242d70288efe8e3fb6287b6cdb7c0c922f4ed9ca981cb59f60524d782f16e6014d0347194f58a6349d4d55bba1a6d92efbf5349cfb19a4150918f81c2362392eec3fc5c9ed568688a08ea461a91266d30fe8158ebcf +c669db4504a391335fbcea65263c7c131a78596537a57941f0bcbd63494b849b458b61c07939a9db144ff98b44a7dfa2b7d8cb074732baba9f9a82a21528b7ce9f242e48727aec3ea06f64bc7ae7e350f8e3b05c16a722fb05c4ef1e049f574a0053c805238e61c88529afe25315a5255ce6f1357e009e8dda747c5689d45c25667dca6a00d77a4673893629889be4c25fa249426f845fc9302689e376ef9e326aabac525db65603a900ea50ae38f5267f01af9ba2d6d0f0ab94afa01c6e6b67 +fe8505648a77a71b7beb9ed8efab78b1e8f9566d7385b64dcd6d3aec3e462b75d7f732107ec8f2c571622eaffa0dc03187fecfd291d5e246e837b21fe7a309903a425b9de10ef4fcc9c1728abed42938006e7dba71ccdd3a16a0d816c98292a5b37d5071bd35b0526396de5d474b724c72658bca91d432c832b06eee56c4c5158e80ef9553c11648c89dcfc3afb8a7112363d98f4cf49c595c3c25941d9f73d0e1b6c9e9e8a3e9a83df0f5dcffd331efe4be1726de2c4a24f87e71447556289f +ed54d9ccfd5cc360814f3007e98dc80a062d0ad7588b2c87bacf76ac982ec501216f94d443e5cb39b850cb9e49d297b0ed45b4d4ba865f8cb9f1684f4d26b77a10412d0d38c3f2032f5020dafb82d6ef89c3cb97ab4ea7fdee6829f91c1ee25abdb5db60c5486ee2840fa20cbf9bebbb2742fc4f64d67d400ce755dfac58161623c148822c34a638559b0f5bc9130454edba40abeadd43e8d7faee2e4f55df084103fc3dcf6353725a11c52beae16e696199db69d1ff4545981dea3b1cb2af27 +f291c0c7cfd88fe09efdb69b3c2fe34fb71566fb2373c126003e94c1ffcb4fe91f1a1c195735cd74d91c0de4bf6dc4e50ee16c7281bbf3e64934515a0aa51fb083ecda687892f6701c8814ec7cb35226cf26b50d50f72fd2c5544ee3c374a117c418871fafb36883fb7dca6468df45a17ed4eb7812f2ba8a1f77f272fc0e8153532e63ded182db6d62b22c5c910f3cacaf324eee54b7e020697c36d64a82265c21af14fdffdee5755c7323486434d71acf77bb66ddac5fc3b69e5f1a9a47ffcf +e410d80489185254cab2bec72720f3e92dd0154512f09b08f610b599992a76f0bec9feabb78b90b61fd6621a36894fa6990c5d14648c6a14a143f3cbdce29f2f2217c8d45e015ef159ac47b20a785e2a3d5ddd5dbf9a66c901af11ca84c4ad71d1a0e9d1e90344dcb322d67d901913b711f7a1be7972360286c2b6b4748c7854dda311abcf836a0b884f247c4f4414cd078a5530165863eef2d5ad1fb4cb8bce421be1abc72f0e3f08f116b10c3a0659d3e1b5768480d003897677a87c472d7f +fd2b28682f4f1b7ac26a62a43ecb0e03f08b5daba8c66fa22ccfeb66edfeb7f6d68ed9ddc1b60d3b3ec718e78d4b85f62314aca5b905cf8aae2e7811685a26e374d3acfef11f13b6afce4c00f5737ef0514c3e435f1b4f75bb68204b11b1351be9f8b8b90027bb288f7078d4f69296fca7ef422681d3183aae0b6baf97acfef1e2169453cf188d69da2c095bf0f23afbc852c2fe2294541fff64ba50a75131d2c9dc6ab902087bf8191aa71ba048bb43d1a8f2c4f790a8c4f869cfafac02ebe7 +cff80a1ac0dd5112f151d5ba6ebb6f4f2eb963a3a3425b46e3d26864d53f3bdef84be700e41fe5c82be8b31c46f8dd9790f9912bfa99e1ea7b47d29bad9c1bfbd45c7f7c5bdea02324e7257f5b83e3a726ed2eb5bc7279f754cc5442ede2208858cc41cc69b07a782ba2b03c4e8c94666353a761c8f1e4dd5f54f4ac9fab73e1d54a35ded1f7276b270e9193767e3352b7a32d4119af57648ae867d63cadb87cddfc97d877eb501e327e8316abd2ce965c331d46958a703b3273a513602c0d9f +e4962b03cfb272cf6642304b4a23b5a259ad71b367639eefaabcef407eca8d313bdfc1bc1250c0f203f9f342241c02a580b9130f476a9ce7f5cdc2bb8cd2a6055b0e232f2c2002a91df4f35931c53d907af53dc5315c650bedf02d28e6372f405643b3cb807a990a4f5ec253fcbc5955660581987c6cc4e4d39e66547ef3f840fd4bfb85837a9bc5a8ba45e8e7892c02d69f1bd915dc2583d514b263aa95df89d6484c84e6bd66f01973240614f5323494d130af73f699562ac5c0df6d1ed537 +db0531ee1fc4222e77a14b95f0a22ccc89275aeeb64eb5b8a24e9dc0ded4ad5cf1b31e1b7aa14588e232d8d79f0d395a2adf0709db32abc24e645815db6c9630f8c74436d38f2b89c2fc746f3ffb11ef371782958735cfa5ec31fd2485c8e118da62cea5bdf98f2f84eca80f927186170dad273b6a8a74b43a7e3ce7223cfa7415481ff27d17cf5d8403e899130568ad9b493f4d211acc09f0c9167bd5d667bad8455f09b6bc1907f1ef096ec3ac5bd6cb516ecd2ec57e081b3951f808ee28af +dd9deac4959a49c73c55df39b8d1399094e722f45d270068296cc134acad6f4bc0ecf1582b9864e6e6dcd293ea184000b28ccd529e5a8bd6f7e3d1252ccff9f19df3ff8b10ca2d8ee25bc3e025635e5a2036da56917af675f2b4d36f5daa8c82844f625745dcb3f29b1a1fcc80e77136f3598d569815be317c6d1448fee7c4c1ad82e7b7b6be29af4fa4ea7a5bf2a9bbdf5db971b8a2ba0c273da2398b845fa3ae9bf0db62525ad36766bc58e4511a28ebbab492eddfed238fad3f256b32678f +eb4e5d32040205c3d27f470eb9203c4e563be33032f4046af932143b1010bdc9a47857f3400cacc9c21eacdacaa7c5f587519cd9b828ff683e5a58af3bbb40017efdc97c47a86272b4ed56598449176808741ee181839c0a4704908e567a0143b38a3b46183db8c40b3928fc75b5aad4a5f0da9439bbd27be73c379873236dced7abd67564775326f0b55c769c920d2821917ab83264547b332c2626f9d539fc02179c512424f7b2106f3598bfffcc556f410a3a3d30b423b601d2b80863b67f +fdf8d1c03470c631aca0fecd803f52482f9411409e9f01903538b5d79a0c4d0c7b86dba6ad21561ab983f6e00fb0daf0219cb9fc8722dff78a97e5888debb3329f912a8c176c1d2105441644c90d507f4b2414bd76f2bee2df233c44d03eafbeff369f6fa103930bd5ef3312fc8fce12345979677b8df3b8d8679165e1e1e17e4e161d72fe50bb4d85705d046fb190b1d2f0ab287421bf333ca51f380823710c4038c973b9a9d04c7759d55531f5d528dd8a107e9c810acd8dc2b381040ff01f +c37f322aabd6b175f9b0f7aff4ae875f96680b81462c416fd96d0a2863d7ba9d4e7ef2ad1261443ec1c99b7fed59351dfd3d9bb2babfedb2c3a19e6cef41366c3ed4d7df3a980d73dd1b530e6e162f8c3108da51632d7a0cc34db4b2976c055306cf10cc7e1579cfb35307da938d55ba7f68f69c407a9aa7aabb2b713bce24c2e68ec84c12eb58fd18ff8f3cfd6c8e909c9cfb52bd3e3042eec2678419a824fa258ab97109c414c64ff8f86b507f6914f681f5a85993516d769501cfc5a393df +ead779eb472ad1a1790ab9799691f15591614a0f893d4f6e6b0c6da4b5adce43bf61d837d738e062a9a9208356e9003d06d83088c80c08aeb49338f16a6908e89e4e8dd12646dc5c5f7eaf71b67a6c4ac201b54527d0e196dfaf7a8f1e931b8b56a12f564fe0511d582f22e82bad5b8057c21b4467258861c76cb1340a07d8d8ab5c93fbdbea9f852baed5f35e24f045b69eb59bcde0b6a2ee507315e8846a548c56930d813fa2e5cf45667d1ecb577545b4e327b35dd9910e3d9c79f2a17cef +e57e5c6f9745b7b78c325830d02782c3107caac8f50f304b4b2f0159e859896bc96001ae71bd030ef4e6d3a849ec9a167bebdcd209c8dbe4eaf4843f63802e9d069c6d2b1613ccc3ec1500213dcd22deab7b3a149d2b2e90082de60395ade32445a294c8e6d7c99b75cd5a70e3d9b423e7edf3db41c74eb649ba6fd0a2efb1fb9ee003a2118fa917934721de63ec26c0efcaaf9f5177afa2db7f3a3ebed008efdbc8d7a89f7e9f1c3cc41c6d3b7f7e3891a8b3e8e09bbf61cfd1465525f0e557 +c8d829e64db449beac9b5f74c66c7ef5eef459b2727aefc0f0f5cca5a489af96f3d9159406fa25218cc18af7a4e3b3f222e8da324d050f0743a0d5eff8bb2bf3acd6d5bf5f6fe1ead10760591df534b89622207e5d0fc9da4119afa7f7bb46e9ec1f6b2d8576c28f18655d7cc983e497bda4d41aa4acfeff0c7f379caa25fbb8179f12f92c53820c5150536c4cb18d665c47b19bb48ea604277af054f7f67ce16b4e1478541370c5db44aba2f19848c4d188357addc17b70ca85e74844a97caf +df35f628071c4a201b8601b355c13c5b8d9cd3aeebda2acb5fdcccd10ad7084ddd0fe4e99d3437b8a79058936c25eecac8b0192fb42f0616336f35ead04d1663e9106103aa1722ca29b8db8895d5e6a5bed11bc51e439e42ae94e1b1067e93201aa343b4b8d0917cf5cb05e937e10e09c60e7327f441b3fb4ce1083a227c736e8d8e9b9bbaf7e380685256626f0834578f2a8b21b5332a24eb5ad98cea2b92a6e8da272cd70a4e520bf10b8aa45522a3966be279bddbe0e806ab742d0cdf100f +ecf2e9933dac33cd264577dcd3bd9cfaaacf994f506da31705835c50dcb15a7e466c6aaef2f8b1802ce415acaf8408c5a1e87ac31e4d5e47a108ab345f3a376d6f73f38300734ee3709c5f09f9eed6f2e66bb32474a64989af28f5fc8821b7e5499a355cd33f202b0f25ebb8dec6810e653155c5483a8a71bd9fdb95f3ea296918ee0621f217bd3b2f5c40d015cdca5643f15735673148fc09e947eb2f44358cc43359307a03bfc82a539b0f0def66249bf4aeb69bd381645b83e2ad0d12b74f +f9fa25dff3fd0eba8297363b3de3774500c6f9ce76936d0b7d80bee1a1ac7816c72dc70245c59d737592e0d01213fc7f4c1a381e3886edfc3671c436a2cdeab350f6bedda968b4d287ccf080092a3f83b65237ad97be9db1008a1f5c45dec821a54f409d9a31c4f82a121624a99e45e8f16cc1f7518c0750d5bec2d829cff7fc4ca6ba79d55bbc023faad0a1cccfbcc1bd41f21889f91015d8a6ebd19702c81af802a4601804ce6ace95d00f83c9959ef3bc35e9f290eccc810bc7e79714825f +fc2f407370c4da8e468f85a9218e4af00251049af129e2d419617ca18216e839b1f23aef559f5e478fed68ee212325c9c245fbb7f55bceb0e2959d0527d5cbab8a7249f55f20d114bac240f610c82aec8484331236fb2e662c347748e69f6773fce4c76a1b55eb8f0280636cad9de9718b5be04dd013adbf14d198d4a610f9bf2c1a1da3b17f36921ad7e1bcdc981458b6335923282545b29d1d485b900b6898f2b2f43457ddeb708837e42bb4fddc8a194680c2a00a7054d38261b898e4af6f +f6622203c7a57da7a8aaccd30ddb272121616695c60a2e4fe6268de08affeeb3f2156a083c0b7dd0f3594d99f5d6cc94b4d3dafa8ac5ff07bbc44f5ea9935368939568265a1a365a0ae632a79f00ba2044eee47f570fd6bb2db67c2fa138d96ba7c4105c93ec2b892fbbcbf611817fce891975c09d27d946d5709850a7f16fe25724b55f26bfc45283fe288ec4ea3361b4107c4e0cee06ff9e8492ba5fa130b244c6a48894be96ba1ef88ef0778c2d1dd082c658c6b62c648b480ed96cb6aa7f +dcc3c05e39e692b49a18ce7fa4d3f1f3b3183ff0744ce47b133c59fc72bbad964f29947646807371719a9f315c3cc401f3b58b4b984ef9acfd23a7ff0515fa65a04a4a15bc979f857bb10a489b3eab2c3b969651020697152decf7f0280b9e73f742474406cec43ec93f8d4f20e50d1e682f4ae8827a39dc906556a4e6f08be118355309ce750697c0da7a9f4d4306eb62f97ee0b4bf0bad12cd1c5f77d2ca32cf95074e52a7cff21f97fac16ee1624d7d07bad9a182b33c051ad4f9639a067f +eba21e539b475040b2ec2050f1158776e48b438df2440cf4f95b3beea526e36a1a57762275cd6d468265dacc59577a67536b3c90cf149dedd86dec5abe33d8350c014c9bd220e65272d93a26507a837bc027ebeb84e3cf346d971ef06e893650bbd4ff7e535a3adb81cbdf2efb1dfa2e9e1620741c917e63ceaad7803cfaa8499898a9397c32ff65ccb9c820ede0a028a6d2cfe73516a3646891bca41d6e6afadef518be847e775992da0e9739bf327550081976cab0cea23c7344795b5c6807 +c97eea545d7e811f4cc6154a770abbdca916baaae532998eb923d8ff901e9d35ea76135e6c639507fd548b1695d988add353087675ab88492013018452f11956493de3b4d38c194071d6cfe47efc0430319224082b8cbddb865ca80deb594949e6130a73c30b6ac534e49e4fa58981b123c7ee217071b773bf8058ce3b7ca4160f23cfb4fbe6fcf6239d37c8ffb3de2f17f72fe631ffbf3aab4122bbae559a30bc68b904f9807a733cf1fb700fdce7f58c90fcd23945ebc41855223e7d4756e7 +ecc8956f28d82cfd8f4e80c2a745fe7cc8b98a0da351cf8775b98963ce61bf1d293c21932f34df2313f0ab73175183158049f36f858170191b21a36a66950800e1e18bef9ebc8e4ce5aeedad22ba00eb0e6f7fa1024089a7c116d737504009b52b67f9c064297ca5d128b836fbd2799ed5df1677888f7e1f937974c43cdee0268fd6ce92841a138f488e44b46b901a0c3c6f3f1c4d02432586422fde26c384fd8535fac326d09facdf4c581f13d283ea5d40061b157c3e2cad10363885fddcd7 +f23ad14cce71d741ecc3040e8908107e4bf0511cb3102dd91e2160652800cd91ac55d711d967b25285a000a8da005971ff4cb277d098f9e2e9ba4207921d9f366347c01d73552a3ac7ef2ac1ea4419878b84b8f40015ea13dd5dee616355e520060c96b1e5bf055138479df3ae62dd95b6cda29143a96904721ddf5c8bbbadf0ea416d9e087e7545e82237860775e28d86ca9e08fc519db4af5403c97edce8a899839ff5ec2adef6988394efdf922c95bb94ffd1b604f1f40d94b1d49bc5a96f +f173c4459e0be2120ddc5eb82a5aeee2880fc7e9a889f248480abf13ae50f5adb663cae76f73723034ef02e52bc2e21929d9a3ea87f516146512d9b13e60cef6f0e40a6b07c669b3ba651a2279a2bfe3f108c7f8ccf9aedd48a1c2a26678eaa2af5d59b0216795bef3fc5068634d46d78e67f7fd1e8219314a3ae1ea0d829bdd9717cba024a8c5fd30c1bab40a7aba67412c6a23b9deb2d815969fc257add9d722be42d7dc6cbfbe0a0570970a703304f2069cb83841e0ee0b363415b197ab4f +e79e1d9fbeb4c9f42e24ddc7e5cd6b3a435d3806e22d433ce8473ee3819314f3aad106d23d470c698fdfe5607c924346346c31be8115d3d1778a83e8bd614c625a9bfe14e5bb672e1d5340a0cf5fd65564120b6830d19306366d4a50757aa31ad251362bd6f09db04f97a1911f28ab6ced9416c5bc4804be024f9cf546fb31e9a2a11b52b512cad54663150c93d21b528d2eddb8973c81a01841361f2ea14b0061edd55f7530b4846ad6c94a718a8608ccf259811afee689e70d17f1d090ce27 +e951e44c61cf1f658b6e6af799f2d585d6751a6b84cc80ad676e65c3fc19033db8e373fbe0a717ca1ff240015d3346fd0b6afdf63de67e6863318a846ad1ab3daa222c632b44b0476e07bd79ee8d1c4b9f50b33659320e100da03bcb2f1465f763eb6c565382e160852371d45afd8a8a47c803f6bfefaab6a4854d56a59d523c5a74c703bd73b783d4e9df947720fb5508a0bd8007e462e6e4107e40522630c8cca6ee9cc992d06273f475941f8ce73f9e221c8334970bfa43617b6b454cbee7 +e2c26c5a208a867e2401c2fa0920c8904c989c845a1bf80b81942507c8667858d54acb6991cc35f229a2794af1916bccf0acf296dea07de2a3fba4888c82ea19b9d6ef089c7653dca030c54da384a64d181adb7842278f64744e6e672efb8bbc8fdefa952df8704246f18235a374d3874bf9530a3d40f7a8668b066b1119e2eb3304e0fd5d0c90da132fe3788bac89f0e507cf4cfa27824aa2f58987b4d10847ee451bea5ed731619e804d1e1533cb2b0b1c0f4b3fce4c069432cfc907586cf7 +d8a0156902a7e96d59dbf439d7e4a6c2378720a5f3599319acd6e1a85fc3f623eec4f5687ad63bc49a14ee23ddc2ca05defdbfdc9d9cd44ce05f3de2c800dd2fc80c0d6936c947b8bb75a30c0bef854e52da3daa0db9f9a552bf3ef033e309205d9574d9465a9692c30c53b60762128fc9689e8d33bec5c229c4b22502691f4fc230f9fe7b076a8bf1f9cf52f8d60e6434cb860ca4f5c7c7fdaee90a6b339cdfb6a967bbbb2d0421c26e2091ad7773df9fb640408c87fb79a2e359a595b94d77 +ef0e1ce735ef82ad1ddee8538450f4c761171e2b8e5632b02e7aa8aa8a6b9f9d5d42c065bc62ebb1974a796364440debbe9e13d718252885171fe4b6087eb6c2161774e8757a1ff822b03a181298e5023ead1cac719f009a53d594db7a7fe41436be8343b049a53a87e0f899ee35adf24cd1e84470972008a4a628b474e6e8b881be5d327ef7806acad220f0b9b42f29dbe58b535f052d09ba0e5f130285a51988e451e0b305d4b71cb86d773bb4848acbe8cbb92b2d92220c2392d1f32649df +d8f140787158d46d4db6101d00e13ba743e0e5c3d14f1929ef2e31b630709ad7eef0ae3a21736c2bdcc34d4bf08ba7b89dd9621ee4ab770535e3e76fe298c1204ecea3df6bd97c0508a512ff4506a38eb35706f0d8201c419c5924b6e972fdff098a415e86faf540b6d2f583412fff9bb7e905f1b82534817b2a09abec38cdc65b32392c6883c11cd8c7a80ca9c0341d5bccdf4253642e894637f84aae01e79c744d99253b4e9d26435fc5f92f70c44c376b8eaa4b7d6a27d5db7993eaf1598f +fe58fe707006f005b84238518da03078c73edaecca061d95077143825f577ca4a209280912c35afc2b3d5b7986b3448165b8406e9b905fdd73ed6badc00049258ffd46ae5ef2e8c76b35767ddd5e9f009cd5cd9ff99846fcdb02d11e5ecec1fac457139e52e6d49ff74c478ad425382d9e66bb3f28bef4769b8732e374c606fd0f0b0e601f3537594afa44162c6347b28a553408727434fbb4fa37de313a445e8f0a444cc9199cb26e9c61c02b0c1a1ccf048ecff2caff3005293bd19949917f +c8725678ec75623f3c741bf3e6feac180be16cdd9f2bb76472370ce04ceee60b5a2ee3a0e0a490ec356a6d96ec1743478898eef8bff9ac02de070f6703080b8a053d834784d7d037be24671d10eb2aff25bf168242a8cd8eef2a8efe9bcf074db2b263f061982a43e68a1435926e66462b9fa46145b310d7901e0801cdb76f1e194ce5b7280f0634eaf35a31f40f7bb59772cfee50f28af1942c02d26484d87afb396f1dcc7394ce9544f77ee70cc1866e5cbfe4af0e226b4c4927ee48111a77 +ff5bca329a80750cd14b21d0304bd6549e49d469b7626e5c7b08488d259e8feea16a1da26365edd3a1fd6b5ef790f506c5972c621eb50ec9b1f0713af707203f89eb19ad490c7ca68c1a3b32d2dc7e575baf22a05c3038e8016502c98db2edb9486fac020fa1e7c0d3def16e5e6397e26d710133537813f2187d0558dc1de571e4f00d22f73c8564ed0bdee18a8e0b9ecd5b8e41f653abb745d14c440a3da8d31dde06bf95ab7a9fa9608a04e45cf839eab24d4dd7563617ef248cecc3cf73ef +d353c7feb64d0fe341b0488420b4aba13993104960185f7a5185acbac1ffd83f79158b1448820329d9b3def9a3954b8f1dc6c14538aca26722cdc00a907a4b2137cef71efc9ef6785bcd3c914fd5cea688ad3252085f4a5c0fa340026534b9d9d26df76fa21c5a0d7efc46c6a8a8de8548d994d2bb2f986dcdf5293789b24406188fed941a2c8390711c0fb7f7f95443b78b6f6aa4284724229d831244004173308a3c7f309849519cf999c82568c862e1baaf6b6a17f3e1e7a5076e6c9ed2ef +e723957aaa3553d8715c52421af01524c504268741c8067d842dd01da4c9c255134615a1df0a51191130b21a7e9f59d41838a4d3f46a73121c0632ae62e5792d1de5b812983e40fd9f7c1ae4285109a6a5494da0ca46d309dd1da91df9f5117b41b426c17f452ca0081ff33253956c481ee076791587697b616a23c14e1577fde2a44dd974b9f8ec11fa8e86b36fcbd95d6f7c6d17f6af4cd1fb01506e951f35d6593a082ffc7cfb072cdbf0f09c296011ef346886a25fa8bb7792bbc2028d3f +e5c95be67551ed9bad2790f849a9d7dfc302dd507e5cccf3d85bb191d6ac6c20f64bb8a10f01c3306618ee49181c38d01ac375c20278fb1ffb916c43b7f2ba394464546a67f9688a33b17f867fd18d2fe8e00c9f68184879edf9422d4bf061404a1a6a0d2a10417c0942ced41cf47a50df785df2a7da81aa33aa6bd20efeff702da45567f4a54192bc82ddf633d55f9ed8dce4ff0b5bd1240861524f23b24fa1449347fe6627234ace14446dbfeee688702e059c7eb7320be76b878372a294df +fad38daa4d34d4311315a5dc058dd2072469649946cffefbb49666d24cb4393df89a07a435d63cf1e272f95c402cf7b4a34cea3b77baf2d2b42ecfaf30038afba4cd809854da0ee09648575280ecc47f65da17b6870b071ac7fe6a3ffc2555657af0a25c7c6a6aedf2e4b8d645fd35c619e56fb3017d555172cfeefc1e8704615accbe7a6cc3fc53e30f68e15070344e3886f869d904f2c4a47c59fd95432e8b6e83ae4b2c24ba456434c782eda38f99e93644421e92a6e5a9e99b218821b14f +e8648fce00011afc16e0e9ab12c6003e03b7d19644da5eeef575cb7cdaeac9ff3fef4408a26fccb19170dbbc7720a336b758a5ac01c0d1d6c0169075ae93b7d6d5e1bf267e2db763ef5d8afdf49fb88e5b1787cb91f92e3a2f91c4a6ffb24f9610e429eefe54e5bdaf77c4489625847a2c6e79c8fb40f79271ba5a36a7794a512beaa9c74e4f0dade6b5a2758bca9bd64f378c906d2759b71c6efe0ad62074395dbbce0647f65c87f1b9d1bd80867fc9b8a09e52572b277d4c3ce8f5562fd597 +c983a4378d0c123a397744dd13f29e828e40a40de57d57bc4618559ad6fa6e07ec74f84a60188e32f14be389d213320bb0c2ba9c390592bfc053017548658ec1a29853d9b6f824a873a95c486f88fe21881436f4e8d46392e8923cc420e20555e24526f7920e34f25b102060fa28ea6edbd92849f56b98dbae2e6c2937553a2df15a6be5ae4acea69eb58ab1719c51211768de9e8354c051506a8e20422546b9a8ff7bf54f0cc9ac6c844aae8e80a15335b666434dab21dfa32a45257f12445f +cf64763268ab29d5cbb749a3e176ef0a61485b0f129f6213b8cfcf5c08bdee865d8427370f2cdf345f005a5a522bb0270e4b990a987cd4a4b2f0a0e042b2449567c1560e439b1d27a032236ddad9fcbab390ee497421f354ff8ae1139d29d9d3193984a5bf300e87dfdee1568b19377a15b5dacebb030d45750a482aa3ee7b953dd0d2868059656015124525500a0f5d6854a7355810caa7d4ebd0f92638aa6602f505de727a6191ac73717ce6c0a3c26eb3ab2e2fd5ffbe1595db7321ceb78f +c071a107e232508bd3e29dd52649dfedeb77c0ccee3ed08101b8bedcf2c3483cd58195b5824cb85ea5b416d38563b85a4bbef78df428c1935dcabb1e8474a512e71dc02e956c875249a4d3f7bae595821f2875a49be957a99321b9bbfc693a7b1697bca8a2321326050158909844501cf131d4e693d0bf8eb2e7ac8bbb9fd1bbfb55e4a6580d104e6caf590e6b7d57bb93fd8ef785c476f90a2104df30a3856160d74bd8ace103a41b263b52385a63e8ee7a7cbfe1e930ca2d09810d649fe647 +e31a38ab0c5812c6c06eb76e7e7ee53a11496602d80a485010611d692145e6a4f6fb36cebabea6e9a269d49dcd99d8d49ca047b1e6a87de5f0938603128d84c194605d1d821b1a6b7a37adbdf9104445e685b075279f8170ca4764ac142881c33645f5a2fe5ca5c585407ba2763432f6c4a8ab0a42d86cd38befd9da4adbef54d9882cc5ab9344d6e78c5daebc8e82b7dd017a4289c4cdf25db88580e3ea3ea06618fb265b97d039530d9a3648db813b2b433957f941b8403489b0395aa4909f +f258033fc86408f92acce054d53b5b14000454044fc544748f3d04dc3845f95903f3b2f9270c75ee5658d3f26eefe0c24b64b18161eea82fb3308fb1bef56fdd93143fa79b6aa3dc711a5ef2cb834bea6fab7352c07201b9aca6d76c05066f254fa05edf867618dd1d93ad525db6f439d2e7e3a8628e0e34100d197d1fefad1c066ec78b4a4d25b201a9550319329b88ff36bf695cf87f48c24c5e21d5a74cb7b63b882d9026d8beea3b309ffdd5e0a96fe2517ad63475e1a86535fc12e7451f +d56187ef242acf41212e5312763fdc51ffc7d34508de64ba6207588e1aa1162e94bf83d00a7818d1824bc9f0dfc07d323429d05ba1015cda9e8bb616fb33c94f7f3d23f77c79bc172662effa9d1571b17f0f940c0cee63e69501c538b9efa8f6bdc6e6e1aae3148f005ad16be29608931364567a9aed220ce1f14bf7b6dabbd9cfe8e4894195ac0142775439d7bfc645fbaef40fc8e7964815954070c3e405151ca80754736ea59212b2d329c0b1d2c4944a8c068ec8c8aa134f0d16f04066ef +ff64c0923ba363b228d6ad8b8add51a7981b0d523b7323bcf45c19b207c2a4248a83683b2d2926864d99e12c245bc6804ccc216bcb01ce8e7c19b8565a45468597197891ffbf313bdbd95b7adb768417d886b8460317d26732b1f10f622509adaf36b607a4ef9988a4de972eac50d2f58570928caa0b707941ba2c0e11e95db9748b1e037da87f89c2014141c89807c2546370749e5371a9aeaead505b43487421e9e8a645aee5bccc826bcf6922b513a68641f5248cf706e3b2637734e3f58f +e9cf66f33f3ea53b006d312bc544fd3dd6839f3bb153e91b803e36594327ebd7cd4fbc840a6d50ad438838ddffa72ee9dd92cbfe3224dfbae859f8c333a808f0e9b37355299d73092b22386731d5749fb9088b4962c5b5c4565001a7c3f151c6ee828fd19b73caa7afa786faa4526b28db104e12df852b3b1e078a13af81fe8d4c170bd56276d2cc7530eb000c7d825b032bba97434d6ed67752174533bbd3f594de2423c54a7473bf73195eb7e0ebfdabf92233a5933f11a1aa44106ca654a7 +d43c5103bd45a1ffa602b5f5455f05827520e070e9729e5e0660293a04241ee1bb4d74c07f1970551f051e46594ff212c9a91d2c7c6e759c4b9ac55610397fd5df7788eaf0cd2621fa8f669671d36537d8d5cf8e48dbb15091c049f4a4d5c5f903cf575b0670b5f1465b999a32d7a08c5aec59317311a9ac33d30e97511326b08d71b25a71cb7f9a921ee1bf3156d1ae0cb72290103238823086da9a09a487290743394b4eb7741af74c01cbdb84de0f91374436a2ee3fd8e1b830674d6ad5ef +f3a4bbd8e957d868f9109ad6e0f367fe2445aec40d913a04de9e8bf794e04c77fdd062e75a5f05672bb80808807b99576442f34763e427a21b86ec5903f4cab20fe9a9438ead52b3902536f144191fa6e618a72c1e48b5ece125a5b39d5dc8c7c9261d36f6ce83bd863f86ea19f336c24f54ea220430e2eca49020b12c067e624378d48007804aa7359e44cb7a61a5f145b652d722753e99f188f71e0276a6d3d7b96f47d8d9c33607b3c3e778cfe00d0dc8cae35a3a76653b89615506ca0ca7 +fe42366bb1b362cbd71fc21665d8006bfa2642dbf04dca7e8dd9d997db8251409786b5e4370eef924cc7b2a4f11a2306e651843bc518ad4c288949fbd018e0e0f21afe5853c017a3f7af98fb992b5acb12b0e1acb701c9d941dcf6612f4f0e2773b54f31caf53c2a7dba9284c61b345e59b1f69ff1b95a4f6910508e9adaf2a0901a02369001f4f3977bbe5d9585b0eb8152b1c648b1ab4fcc70d4652199b08213e60f9a6c4cf73e4533ab05013d0947f90533b00507ca97557b72e9e4292e7f +ea64c7031acf6410cd683c5185002751b37649ad9e235bd2a541b700d143dce9e698428fcd7e2da87fd301efb7a81c1949805fd7f09e72dc6d6f58194b4ee3294c4316ec777e14d62945c3aa4cae804fa153c1eb76fb534daf569822b4a9c91ee7ef2afc4963b9955039b5dcb2c256846142fd53e36db90910df7864392240f495b169837a13b38e5f2c8603e8b7472f3bb62d94e583791a0b2ff0203a15b2324da965c9eccd554d3a701d08c275f1527d6d580b8916f99cbbca9da63e380f57 +eeee9ef4cf8a234248e0575fc44603c58f563aa8680c3daccd31b881e2f7787d7acfcf9c61817bef2940fa0b968086b440380b6da7a3a0e48ab417c8e8ed16fd87d399bf766fef78cf938aae2286600bad610a21fbed1c7d5fecd147bb985751afda46f090e01f3ed6da7dcb1c5fa981ad24dfbff33637d8e41f5049ba80eb03a567c102938e803dd39c1ba9c87eb4616555d5992e2a9cfcc13ca13a15668b6fff2ae46ed20319b870c000e55521d65d92772017110a0a59a69dbfedeb1d034f +cbb83dcacb3cbfd26f8775b223ba208bcfda94068d556aedf466e8e38a3eb726627cda563d8f26eba1bd0ee1c5fc67146110c7ff058a23440db7552b63aa1d163c0fd9c448dc39c61e2e371496d0f63974755b7340a348c06a383f59850e5a6a58a5d12964658ca257a43ba4b6f85b89837901087c8c41b2e7acc2a9f8e53d3f2244e70ad41c7bf5a8842d272d26bf5407f70811a7ac4bcb027bea8e8eafe15c2fb55d1e94d1e00834b422e34d1d3a8fe8257ad92c46f7b210dae59cf439541f +f5c8f87ed3e91feb94b15cd73c84dead8d80f4da5aa7fbd7cd8e08f31e52ce877d1a033bacf327874fc73aa60b80775b1ee0eb6e482173e80f97d453b4a683e0b64e7552767c3fac318adb63a8a75c129fc7949ae66d192644cce03cf45770d8b946a25d000125f852f3e1143309dc223cc3ce99090b9b6ac50cdeaf7ec44b929fd15bda4dbf2c14e39d2dc0b23de5b2efe66e99ef57cd901646576602f9f7aaf94cfc24b58e88e840a50ac7b6958aef62b3fd834d380070bd81e3ca1c3048df +ea55571c9b3f95f3503b8f27070cf99ee1e1eb85733235a2a0e439a41e65a73b40a50ec2f1264fc811661a3eaeedbc6e48f90e4cbd79f24cd8da69221fc2d7716c7b5c1118112c66a5784d7ac4d7f3a34f7def090a153a1fdfbccc64e1b1b132b1d709d9e1fb7ad215fb8b2c59c342cc68a67df3f55b5f745fb4b83f36fa5347bea6e079cba253513dc3db4dd6dcee44ca068eb5e559c4f1f5830e5398e2abbf661f5a728488d96269c82291dfc4c2c07b4b8c25dcbaa02af7e7fce41f308757 +e709d2ba2840018212edea0e0f72a67c16c96cf67c5d6d0458d4414e17d9be3656ffcf2f8125a9a719c16009941e5f2e8338c87e69a95574128b6e450e454b323211f0aa68c0f9760df8cc8912533f312c845858b8101ad2549ca85214111552952abcd1b0662c03a90af5196b6cab74ebfd0f2b7fb00faf633d6f7d169a296f46cb4d511161aab096e8ff32987d17a1c6ea03e6d264a9843adedad036fea695c94b29105e18a1d69e244569216a952b051538f738fdd7b119041b5cea975e67 +e36a882d1643862f42895f0363611b28405a6c933356f1bd432b26850808b98c8ff10743ab01dbee6a2755a9354544f8b022ff8c02cbd84d4daa71fc61724de18c20eba508943c1eddbcf2b7f2b251d15467cdf30cabb2a96761f599cee0275732ef0f2b7ee2fcb972a680b432a5de4f6b56d267501365a1421ec5b5d1c4a6ab455e7fc4da6b2cc087649fd84facab3a381b8d0ceb716ef7cc6e9d821bedc57b7a3926db51c29b925a79a7dc2ab167bbd1d596bbdfec189b4c3197272d771def +c24aecdebdf235ed2230f808a3a20a323629778b4b1786e168ab04926cb931ac507892ec93c3dfbf6a8aecc09425b1f3de8a7d9fc65bde6530213bb3bf5897b04b00de16ebacee9132e55d612b03b812e46457874daaf4c0928ae0f8ffed73fc2fdde3a5de2ad5b7421a95968cb54b9b6fd809dcc5787e114d14ef50de22fb4240e2a71700396ea92b743c4c7656b593648222f07680b21a458dde5f10540a923ecff8fcc70a10ee4dc802eb28d1d1e4660b002216249dd8c745ef65bd524d07 +c8f38fdce3a557c1feb34b635aad8a7c7965ff5d697ac1d130ad1062aa618aaedf0b6933cd4fd86640f68c195d6c68ef1be6d6d12fe8e331fcaa61c474d46abd70e70856643d8a02af975e48ee1f8fb59a20ff44a19e0ed5befe87deed0c00da4d7ad15608c25feecfb9ed9f8f44ef067dddacca19e7e8baa5a31827dbe6ff02b5a3ee0a63b19f512e8d1fedd77f902aa795456d09085d1abe427935dec64281c9ee9ffb45d1bfe6987acc2e4a65c7b08fd57bdd3cb4c48b36e7420b1d88c72f +c738e1ea843b954900a2a38daf62a4426ba0c9866498813f75a40cea39534588667dc382003c4cb8ea17772f34819a53e0f42b7b59f9f0f0b5112ddac040cd800d2b5c81476ae27e3874bb4db3d9de088bc6b0dcffdb32462da11f46b9fb1f3051affae8b9e37c751fdda95d8ac143412a1fce697b72ea931d20a3678f8b0241a867fd8b8aae4270ab376ee2720c08b157a197e2b77d20e80b75d862b6b322101897dcde68b6557481fd3097157065f4f5ef4810df417fcff4936ad7d24d813f +e0fdc58c10ce7c45bf07f4b44e6308ae1e278cbde45809eb16a9dec5caadbc14529fa4bba5964cb65d7711d0e482837e8c7cefda032160f88893d57752d2ad01ab1610c1782bd2638f0e9b6b4a6e05a4de6b9936d0b0c3091ac7fd65848a9c5636497b7ec8a31a4563b50d06a1a53c9ad590d9a50d116cdfa09743cc27edd8e35c1e1f19bbf6f9890abc37f9516ed3f0c0507d3a8a8db6b0f7bd534ec7cf0ebde78f6b8e81f5da528859d6c7c689e55dfa4a69edb58bc7d7a6e396ac38d25da7 +ded0df136b31ba57b92a8c35dd962c76938ece53a49301cf9f9637b89fb6bc336766a98d4ce47d844dc70447e1aecd7d2a16229d485a6893d494940343d87e666c1198b3f3ea06ed5eacfc5676dc86dea31fe7133de8b32a9bc7efea56114d9ab921361335e09059dd420bb6ea4fdd591f832a7bf68b1d30203cc582602385713478f21b668922318876a363028ce9ffddcf6472785b2c0c96d05163b3d9d1f17ad0edd289f3532feaf53415b2d3f3f1d2c70fd209b85e2e797b5d39debdd077 +e7ed6516e685174fc6b0c4c880a5cad1ca7f262f101df8364d51d686ced104dfb1a492efb1fd6a595f658b28df38eaaaa4edf1b9e005901b6a37757342c2e571ba2219960f9a4ca3567031fc4826adede6b28d3781a992f1cfca9dd9315aa6dac87c113a39f0fe27d716a173d08166cbf62e69b60daa5eb8194e9a66a154803670e171da9e5e3966b4aff114cfcbe082b59c3b6fa9656ce892d7f7420dc6679a5801630430739f7432e155adbbf6985ae31a71917f69544820130158d71a16d7 +e2748df57db84c7a0f598b387b17ac2350e1c5f7aeae47d9b6fb54ec6c8ab6d1386fb17e159f968cac9921e5fa21dff2679cd046bff9acc35ecd5686374b509af979bdb5b6e25d6f149160ef6d92c407f1c30aba3ccee445cd0ddcf54157cb9dc0e7e0f64ee2e3cd85df80de812afcc22ded084cab3215a194ba5194a1c720faaaf8c140bca5530eb9afd65ab3357bf21777f03b3e40760f4e24177a48bb132e4b27bb1c810b03ec203833fbd0968f9ce78b783aed7e8bd637ea0cccc568e3ff +e15c0f87d34481dd2dcb55b20433fb29028df168a983e6b016f8a1ecb121d5a228833d5503a9ff52d117866fcb08ef3001b7c6adcd2b08c62294e248292026fc11a7cdbaabc051a6e8003b37dc3f694512e49735f27aa5383cfe9f3f05aef04a41968434fc4b3315339439567b1312af8eeeb876707f58737ac9932d578442e814211b8246c16d44a215fb39099254d400454478e89af3afec2d3414d67c738333faa84791029b3d97eaf75627488e6d7ec0649e08c82701f42203cf90781237 +c41e08310d715eca913fd2567fc7dda9393484a62c6e03eab9377d6f412bbcdd0e332900290fdcf979e3a635826ee0d28ce6fc6bfc814048d86b0bc94e2351c93b4f876b91b90f180151889a5ed1f1b1f09499326b32fc1af99ccd8538f294a3c8a6113198ea43a42e285ede529be584eff759050edd6aece72eb24c9ef790fff00915fac015d9dc96518e9b83ca585640c1be34e424acbbb7aad86d50067a9224c47b1b2323f6bdb54e90dc3f1723ef86a13caa13c06c6a706f68bbccf8bb47 +fb426a88efe3c7f2a723e0e38d5ff204b45ffec8ec283a7d58f4d3fe901fe8489c1829b4feae902b7e4862cea47df046c017210dff2f84e6e857b93ea69be7bad5d5c2d433e8a6eb13c3ec18427a4fed0987e6025a0f4f9453f8487b60c994c73b529bb30b86d5a8504dfb50696c855e0988fd9ed74316917d03aaec6f1b6495b828814553a13d612593e8888017f28f025c48ef50e73255a1d8633cf83805b7b0c8005a250433f76a14257af68ce949f8e9e377020e08baa3fc94e82452b167 +db4bfa6a007f30a6460a3e16a0819d7938a24621d9f1e6924742fabb0bc6079428678ea3cf2bf1b8f91a3d8f7b19d905c23fb26e548b7817683b6316b9ab4156d793d6317544a1cf8d870595492552cff5161dae6497229594a5ffbc0efda7a3edae32d69ca14009a421906d7e1b8b47fd8e36124c7e8b989a0c8d082e9e83ced755ec27b28592a3bbf14a9b9f02e2f5aa6d00e3f785bd3ed893c07eb122427eab08fbe90334565eb43bf034d0f943c19259b201132bb61c7bc225f6fd878c1f +f68d4a4bd52cc48ea31a9d772a4dd6c9a659c0b34ad2d6fa14d63979cb19bf0e065c7c4dcafda4ea3947ad73cbc6ab4b131fc580b20ed358c79f438cb165ee66bf05d69a4ff6c3a2ac9f0531125c89878423ae5b5cfe4e0268f6d954f9644379202b25340527a78c1be2ec0b89eac8cecc75af34b1c6033161b5c251941f56d09b7ee5b19007d8ae41ac365ca8d1b2d6728d0273e0e03c57cc8909a77b02f20ad3606d44a22c947ce84ef337ec08f8743c98bbf72c7acf17d541ba9f5227b3bf +edd5c9b20524a545f3be131d35d3dad5c7297ceb09533ce2b129a2fbb04c5da1c6b0a55e4a285fc9d928a56b70d7f95adc11849dc218a62c31ed97820c4299b0a21eb7a5e3b4e721a2d4272119812c48d97c12173514469af2aa22c38c0907148fccfe106afa757ba900ab890dc4d8c498795b3ed0491f84f4bc050ac1233d049be1aff1205cb24fc435fdb69070143eb2cbdb5490ea9bb0c881d20948730991af37fc8d52c9ede8046cf2a38cffd026a72654dbc5084e4d1830ad14e93cc7c7 +f9b30c8300d81386d89c4ef9da08a3e5c33d0f614f7dc400d695718d15b731cfcfccd631c45b1e750bf549ce4f565f34b9d6090036e43c9fe6dea03d56f52beabf9f1e07dcd2c3a1173f9370d1ad35cfe4135851396aa4bfb6c02a1571f7990a9f058096f7a460eb16c6e3fad83eee29dd26eb934e22ca5e2c3094fb88d7c1cc193cf093f498dd17bd42b14dbd259003e434c3863100b8c93fa1bc006c2edf924b6e96e47a91c79b7167a9d2daa7f7aaeb9f89635fb01bea1aee4c56b4ee6857 +dd6a0239627ddb35d856db430577ec2424bb05958ad769c8296dbaeb4607942ec357fa631d1c8a45878de05d78a1e6cb3aa36c2830a1a3222973d6e9bc0e0889b6f009557444b3a00cd786db533b1a7450ac0de8e5fe11769eda9f268296e40b3ba42f1ff4f693d647ce067ef9728d92ff786aa5ae43a9d71023db8aeb3e448b609686ed9c06d8bff672b8977d2a95da0b9bfe900f9c5320c13cf9ad9510d0d3ae969ba1be64c58a10d744694c49bbc75630f9d1d60dbc885d65ea11f13456df +c9c7659d7f48b73dbd8070f23ced6dd80bc34170c359def7aeef5da1eaaae57d4580aa2391434316c22b40b1dbe8bd3d01bb36d493eab2265393b4a0af11b341d1112a3d39bc76a78cd286872d87852746e9ccfb2a6f9b13e928ac6aa4d318543ccc3c98a392cfb9adf2ace37b32c68bdee4709781468d12a7353b9cc70d37cc25dad8cd28e37bb0fb8d045f32d5b327e2e089f2eeeb2553ab6b2ff610ed2795eb5325ba61acc5ffacd5c720bdbaa2a5be60df9b01f97a44cd9114fbf0966377 +c91a7e9277a1d93c6e5d29d7f5b3001407c8d270706b94aa2162f0f5077ce796ea84c97f345a6dc5f7bdfa570f56b8a3e9e84dd1ea003fff323ead435456c3c7db266aa052f37edadcd574b25010e2a8e585cee1ba513470ddc60c450b130aef41e1e159789337dbe3db17188166118d2ae8855ae5e26faf5c30d52be411941a2b089d845478d971a25a84c8f63cd3415bb2ffa068210879fc8ccbccf04988a34a00774676b6b9c99d97f828f3f4f9967260080652edab943b886e730cae4c8f +c82ec74f9d6a90ba77d27c03a640832557f6a9689d408e78dc3d88c464716115dd756ea9aadd4718f1b97dbec206b71b07bd3d1949a2638c06d5d399db8ccc2b942d16426e6d59f7a05559c75e45bd40cc163b190bfed7a5703a36214c00cc083f9936e2b535feab383e69cf64182a4848d18a4fc134e0fcfaf195bfa704c53e20e49fbaf0c3caa543557bbaa27b678dbde6d3f39ba1676ed92505ba103cc2fd767e787fe508095da338a1bf330490d8742a905cf7066611846876e720eee587 +e9e57cd53981425de7598e3034036c101b7c7ac41667e1e077bc3305c90bb2d96a16a723617f92846cf74ef9919b7546d1c3580525995dd108c77b0ae75b197463ee7cf8797e2da7b7d588934945fb74b163e8995f490a703b00b3c4698e5b6ff142ece18395a67f8455f26959bc4ae50d237a895ca5613d5efa1d4f86a957ccdc3849a889dcdde86db5f3694e135f2563b10e5149c75d4058eeac042f048c1a1fe52d42eafa43d8aa07462f9545c94aa4776f5733f91e7a760d275461bff197 +fb3a6c62c326030675e85cccefe3bf228886004c6390bf47bb9fc935220debc92ea9898de01a313e93ff341a02d6b8808f7a0ec936e5187fd920460f8337af74555336c2e8f775f2f4c478466f23b1fc43299df1bbc01265de7d18ae2b9e284a22f27704e531f59821b2ecb0c67c69b0a4211be3c4b68315b546f533c8bd43b499844b24c5636b1e2c0c899f02a9373e341975c881b75ddf9bb56fe6a40e2b87fadd4ea093ee48c6a643b321fc2edbb8a34d1f7aa19efcbea03fbd9c6f2e9fff +fa32625c7ada736b9e2bfa6b182856774fc5311f1b2c1162c6650fa4251dfe2ffd1217e488889226dcadfbc777c65d59b12530405b99a6cfe64ac83c2795bbefa1eab76e24a86b7277f677f3234ba77ff05f603c2c908b7591caf0632c780facf1f82ba36e13b7b8c0d6ac6ba2f525fe4df960003fdc554127504cb63d58a3bed1c22feb9380527bcf0800071e583ae26fa9e14f88d6d5932677c439ca92629e0a85eb07346fc6a0af2e0fc67a6778b21e0c3725e3a307124fec3d4a3843c10f +c2cefd52c527f3e0d44bfbe720a613d0c84f1a6f178eeecde73b7491f3863fa099e885b94173bafb190d466d2466bf68365903305a6c245e77b07ded16109356cdd7f5ed5edb6aee81e70df3167408a90968a9eaaa766513838a9bf58340c0f8284297a9c8a2a2abcfb00efa02178dbdb5a8feb89432270e5461073bf9f44ad2e63f1e893f01f2b2a7c0ea8c8a72cd94c87138e3b2806f24e1abf3cde46a4a2494344b94e111bb4dc5937bd06669608ba6f96e92a425c8057dc91edd4528d5f7 +eb125b964ac6b750a62875745ed066392b65685b23e685f94cb59663353d4126fa36d5f027bbfe8bd05e0a7f70d7b37526516b154625d6de89395c1b02095833262307462e9a0f65ec0cdf6bbe1a19e02f93e6a3d51e92f34e2efd4e2f6a3d36a68dd05ea64a36d5451ab6933b91cabddf37524b8966e51aab62c2749c64faeda0262c733bcf872042a826b24c84ccf14f58cda9b820bdcc2f0ca661e8a782687a12719e5bda5980159a35a8ee1d25c1615ff387ed359d7de2bbea17d8cfb7d7 +dc623c54b49ebe50b074cae95f214562f892b1ceb76ec7744abf22db5087eb638e958ee37099480cafbec8a887c8c67d545834f467ef182c769d8297197fe3804c780374aaf9df49c85584299f4d4763fe20d1724edac8a57dd2f63eb099ff1de27a337e4f522dc8796db9436c0f0f4b639f77e9b75dee9edc7cef458be8b3d092bcf478b9e2378f3565378ec9732fe7c6db2a55b159c178bbceed25da21f5609a750ac721680abd36345f96160a347d16428b1800305aaacd111c31e80dc277 +d1a3c6c5972956a37ca1d34a8469c070f517e8971a9c673764f7bd5d713d1312297bb43d9c34b1f780ee5684d0c2211359c84b45707156a8e057580bbe1a1540fd8cbf8f4fed8284ad4b89180050a3fb8360e4655de1aa974172f512e064d06cbdeaa110f1bdbdaf3567ac53c63a8ee6f4e8402e0410f19edec4139c3da1a24e776744e787073a0237373743fe886f26ae9d76772b374cb2e7b7b729a689aaca7115588a41e9879312f76752c396a2b2131fe16830e694b3bee1d389b6d32daf +ee30c38f81f022c8a47c1d94f886dae42f8023ad39d62cc1d4083e90b82814dd179f6d30a2a65ea2c798be5a09354a1615fd0d60b4bce180e8e5bbb92465234d0c6efc7b1d7deb7e1918cf495227f5ad09e3ee7939903dc2ebb43110780f1f2a51fd65428d096f54b4a0a4aabe97a4250dd309ed277387fbd21ae5687f479802d215b93812b4ab97ce5f46307e5999ac7eba00915cbd4aa7be1de229c98ba061cc79045eefa3537ec2e9b782e0b81c90537ed75506544243c146fd3af9b0a41f +d1a81e7c6b7560a018358935c53e4337c613c5e135652ab6bb3ea3b50f9322900f81f85b3673d8b83fc1b66a15faf526de46e5c1c0a6b1df9ed61654838c1418fad1219b6e86632a9abd5fa43e5ee4c378734df4a836ab000171e9389dd32662ecf18f0494fbacf76d45ddd57fd49f89e8858f7c7a287cb0aede0bedfed046c3f9066b79c95bf60b00aa788624c7dc5b21a24b8cb4675785bbf46e0a19fb43a610a26b6ddeb1bae6a9c0e98abfeabdad8081e30c756cae672a27ac31a4cd385f +fee73e4d08603357de4f424dd5ba2ffec2136f33796541ccea6c477f879aa058071378cdb1494fc3714895ae08ed9a1fefc9e54f436bdb2de881837acde3e228cc256e88be9c860e09082ae20dd0828a4ef7d77e37c6beccec4e5a69bb9b9f6b4a9817691ba974cefb74d5b6571b240ccfa073277dc85e08dbcff4dc6cf8f85da16adc944e014a7bf686ad26ad393eaa728b49900bead36e56286f01dfffbec2eda0fa63b0cd467a229bf434f508e24fa24de8780b1750f1262e522a67ec7867 +cc021cb8e73688be97756df5ca93c6a19c78f52060ae56a5b27080eff35c573efe1fa54a6989f9b090a3dc4aaf3431cde10c348e5a304db2bf0ef7008dee2966997ecc2385345785e0c8ca7251dd320d46dae91e1112bb3a59c5c5785371e1175f1e681d23f10419bc860714dee5f664da4daefee0eca92406475ddfc47e6b8ea86fcb56a109af94c1a0af73712421b4454e4b58695cf3a881407e18e3d1272ca76b56e5b8976340fc95c731c1cf1e320d14a91dbe0ecb436a7f598f14aec5bf +dcdca0d7292e3b38164747be81639e130dcd327df2f2ba97bb2cf68ba3a3b7154367f1acc01b51fb861269bdaa78ca9b4855a46e778f00cdb912f0789b2e89ef227058ad9bad2eb88b6db300381e3003ab84fea3089373778d9bfc582a96ff0054246e38615088f6effdd66668756e76b1b616e0ac3af667f3ddaffdd8270a94c9c82c7cb67f133fecd3444c9490ea3194bbbde11c70a1026f0f8fdbaef2ec670815b847e2af7481255a11be2effa7d72eef98f77dcf0d3218241a510cd2d91f +f1c551479bf3cc166b078e23d04cec4990d0e730dfc774be51518604fe2535c431fbc1770f94bdfba906390e77a06a1cfb885bbcf424d9f184a846768fa182503412ae5c4869e54512cd5a5dd57cbff7713e07c3dc8881ded754bdb643acab75f4bef47757ccbdc1d553427f0fc33c838fa29efcae7a43292890e0c1e7ed4df81d58b1a88f1a940210cc59f57d8029de824927ca4b1f00960798097648ef418ae183784c83ab05d55febead41b52a03c9d63162cda9146137416f9a75193790f +d111bc2b5739722f738214cf9d9e28c068142c1151b48145260be2c508bce9e55da41abbe2056689a18349e7e488d3f79e5b6756ac741ddc558edbd1416c8a9a81276aeba90c424cb329d2277b4ee393c2918e1c3d657cc1d6e8c503ac648bf8df62671ab9123564396e19ecfbfe87f814734c6ab4c751162e296a698caf56523a4e1aa77a15cd7f33122b06ccaced755e6230ee7caf0ed60201db9a9ca375123e469627663f9e600e5fa7c80715a03db2ac7c08dc182ea01ea158e307ebaf2f +ff55c53ec919dac333c195126efb7a0cd0de8af5d8b78c52e0c3997822ba1ef31a6a698098834433849f17700a222159e3c668da85af21b7c1a94dac662fc58e92cf68ec438035c8ac8f0f51a8f853457fae9ee7ae12505186a057c6e1fbe4486b1edd9dbd14b5e53543649f37d7004f94bb9e3900f80772e4d1aa7aaeff1ac01713ba6ac85fcb2198e83821f46ee4cd9beaca6d911c62a3d7bfbcdbb4cd5351e29a324b5afc33fd5f2d7bbfe76e9e66b19efc25365f8e45bbe5bc0340149277 +d1c9d25a5ef7a6e75c55653c405e57fbd51489943f6bdc7e47499214acc592c76a6eda6905bbe50a6d13f9c465a5a2a6287479f45ee5a387453f22b0559271c5eb4e13ecb5365aadb77fd2bb643231608cc1945413eb924d38f83d381558e89bb04f3bc89ef0ec919b77dc9e6e15c7ae7820bdfb30efcbd38ba5bcc7f3370d1cd073f056903f709ebf4cd61d2b1ee93c54d85990bc75e7a46da39ad05f944744d18912ce73399b6c3f6a8ad4278acc8649798adc300144586c5c56ab86cf80e7 +ce0ffe6639ffebae0c411b3ef6a213c778e0ac2b947536488ae05aaaf3c702ec6da31ff4c5241ce503f5c6876e0595ec7656084e24ca4c72a81404efa1f6195d24d23ea2707a7e321c5e0c72952cb22a66c37bcb2638480a7397c09e009ac4825d72fe0df8aa90076c07de0b3dd58a62d7f5153e6a59b14847b522af1ae0602bfdcaa5efa68350dda2992caa3567adeaa34483611f4f8f785d5082716433f3a6ab39745dbc65984a6c9c1893eb057c95396bbc3dfa4694d21ab2150367057687 +e1fd246de2de805043ab10968430454fec7353f00eeefeb730a41dbacf4bd866e48548e64ace19b2150f6c937aa0013c907ea688bf08279097f536806da556b2ee6df9380a6132ff0b60bbcb90517b51fc770f4647c6d81cdeb86c0e96a1c96dd05112db29e1b48f8dc980326e315a6b89cd992cb3b23fbad778846275e63e0a4431fbd1e65bc98a67c104920392517c93be0efcee1488a9bfd96c3e7175a8e377c5c854685751d43702737dd3760f255bbae26afeee1cf42b6ad5948899232f +eddfff2ca9d79b51b692280e4a1b0b131643b54fae71b13ab94b5202f36afe66edfa162ed96fb0dcbfb2ae370a4f48ca134fc45e9ff9fd366c6bcb513156031b72efda7cbda4e50e573962ec0faea42812ddf8a089f9dcd0c68673a6e3a51eff80948b274ad6739169df430c36783f2ad661b7b0f54011b5ea33dfcaf203608c01d71b7ae3c32e24fb9a6f93d765fe27557e734ab1672ce1ac6437be2f722e5311798ab5fefa1de541001c263297e21908395ee7e874559980e1e726f8d109a7 +ef49f476d36bb6b6bff8b89387ce19267bf58443778256b09016a2bec14eae08ec5047a065f2c694e433fce1ddf48b8541596ef384c8e0a5729d890321bcc41e7544ebee2c7b3177741c78e5cb07b84f430064ab357fc2f0ce81c14ead9c35a1aacfecb4605e7d7b76e8c90ed46023e66672f4fb91751d70e3893409576ab9d10e612428f29e4273be4cab8c3b5a7431df0bca9cd146425f2b31b9422f1559944ff9732ed156d30c7e4de855db6b75b6480fd767b466a32cb7d8e9560d0e5fef +f8606c60433de6dd13cfa52e4383b8925d64a7be52250f99c746a552a3bb93ea0c19c06953196faffe8cf8ed01f706217c886c17ac2cf6500244ef6062278df64902f061a96884ae7e6f114f306125048ed624e58ed8f9d7de8749cc9eadd39ad898afd108bff7916723e1998ddb0aca3c19b169a4602a1ac4ccbff9ef1e399e6e1872146cda983c3070097431ca39da77252a15683867bd73cc0c0afa1ebfbf53ff2c7ff7e10969658d151fb70023fd7d4a3c3998ed4673495ceb0bf9dd5bbf +ff5f41936c1b390e733123fbc66f467ca43479a0b13c0814ffcbf760135944c648d9b91e707417da8a7b18aa164d49e9831f2a37d5ad69e45b01dd1a276ef92bd9455375480ba993a3b0e66b1cb0a6b41b60b6b6cef8254a40bd4c3686f8d72b8605fbd160fa2542a96224d6bef186a75d9b01afe3b93c3e547308c9373fff2af7061061a96728752037e4ca50331a1aa18ccb87000b134813a2826ebf01f378a042fc4ab42f335e8975b8564fc6c20169f8876c5d12a4c15691798907e51abf +c86d7bae4dcac8e40eb04b2c313cc294f20d560e2202adda1e7c9b1fb7edb07a302e98385f603c4be321f9c9d22e2e1518b76b7ee8b8ac9157958ee0b94051e0fbe30fdc904f5d3353144ce1aa0b0b779860f0034b0fdf7a317131c6d585755884668d480186587e378e10bf9bb6e2e5bfce621d3bfa62e5c3e5e6a66e889cbbce3d925004b518057a0417015fc9b1f1beaa156134c74327c9280d02bfd3509d690ff8458b7ce35e29e6d34495b1db023216e8ee12553dc0f4cc2fc5c58a2c07 +e2a18a63cabf0c428466f86918cc701c629222121471921298306ae3cd3c69a007d86a911b723b60837bcff89f539d5cd04401b08c55ce6e91ccfd48874e87195301d10e90d7326c82014e41b583a1592cc296a888668767d233b466c4cf91cd0b6d781d8d31029a7c0d4455c3831512916e27d7f845cedd9650ae9fc826de67fd89fda2d4ef3f9dfeb91234a2850fd5d791fd42d37001e4aa032955e838246d0512059348d9b7816e2da0eee26ddd783ffc91f4aae62425e2c2c93aaaf0a63f +db142a15a1448caed490abdf3e2b8d20b0765e16d459d7fac37d9c70cbbf62614c032cb311f01a4bb9f81ab346b8b9b13bf6736f1e0e66a0f0d1120312b4d4eecbb07e1c177161c5b91378a1989d99dd9b0bb9d257341d1366411bd56ec6596b63ec9ef73225b8594c6f7408ec0badf2be27ef6e5a31364203d0cb87e03518562369d09a11395e53962de5550045d4f408429f85b0c0292058bcae3b0901a8c9fb98866da0d70cd7b0672306cfd7170b13b19e0827067f680259852f95e1621f +d7a444260cf77111bbae218492acbb8e3e63bdbc26cd6a181873a5e63df1bb9d8500a64beb942941dae68cc627eeb8b60be4d990b79f52085c694f449881526e168840c9e12d88bfd022f890aa50e8ea2d2f105e5dab5caf30c810646fc557f6016ad872acdc5b9faae787cfdb58631c5e87f6db84151b930f7a5fb59f1c4d12dedce48907456e70528c404cb46eb83927cec5c9aa38167fa07b46f2d3d29c5a260347c41baf001df3b50debffc6660517f69cd7d739f524f5755f924ac4f277 +f924b1ffb41dcb8d4cfc571acd262060689c9edb2aa6f5609ff46ac6414996de5a4b99c6247c7fd6658389f44ea1220a47b07d7a9bbd7bcec04396027a30a7039ac7030529d681a42fbc95dd1fbd313c6f0f6fa53d1bededb08582264e4e30409e6897d3efb8b3d1b43ff3bb662e4fd8ca4241ebbfd732c7f5dc92b8d07630cab8f54455232efed1a957fd67f4632166b7db1efcea70c24e87e91f988a8fdc7b349746fa92f9a5efc9d5fd9ad0a42db449a366e1e31b8904c55e38c85aa8b84f +ede3152876109ec2a46fad68726d1a3d8bf99889a0ac6c9be1b44c181768b921406a398fe67c99a2e62500cb48071a6deb353422855770571ef6f9a359781479ec37ace3a63057c93cc5e51baf8a1d45d4d8f230c0c08d0687aa4f388601852560df733debf8492e2e2c38654cf8104bcebf81f85660406726780d56c306509d152503bcbd53d8dabe8d3da355e4204bd1ba7270ca5e16d0b5e019e0f683ccfb4f80568f1c32e9e6db98c69578478e09461fe6eeaa847d53bf0b027a7b38665f +d09c73f2a540ec5de319025b78c10ecd0f23994af0e3b0f9b751fc572feb5cdbe31b3f7fa3d74ae4ce2f3cd29553dfda27b4105c706bf3ad8f4cfefa04e089c680d8f2b486e14cae286f81b841bdda66549bf2625b105f401956a812376d75220dfe968a41317881bf4b9425299cf09ea1b7c81b4f1c4751311e7f799acabafe02e02f22ae0901bb39061d442c49633f1cdf9412e697abb6fdad6ec7a9f1f201d7c07d454744f94665fc715277c93814b22add573f24e78e47c0f0f59f28cc97 +dab8a4c68f8d25b3375dbaa6d96db11e27962c5cee6ad4fc45120b7cdf407c48c395501d53c19f924e16a68de2be81f600258e16217907717c4d0fc22026da179e679e9db5e88c5c46808b816574c503ce8878c385058926651259cfabd3ef47715ebaecfd7f7ab6ec03f031338a8793a39f58f029956074ad1a16442ccc50d1e2ef98deca2f26b2a9c22be34f6b212c84bf5716f80948935f3a4e8ebabc79402182ea2d14b444c737f7de15d4b51f31491447b8613a2ffc5b82841b873ec01f +e8ba37b1de571fb67a55904a7bf20e0e45e3b89b4ce920d62cdb2f573caf952724ae84ac55795d0457e40ce338096230c5247af6ecbc39560e4b19520bd365de85a3b701fc57f22b5810e7de40a01fbef814658d391e8808647a1b6a3c97443a27bcbce3c3be8bf859d27792c6a9f0c625c08e7bca0ee678599295626d653a4923370df5d96743b74daa07959f2d942b91a45636796117ecbfa5daa1aa762c5198f1e9dba4230a3ba10cd7a792b97013882bd45cd9ed25aada335a8679f4f357 +e7aa8650296c089f25990b8ab2cc5c70b8d0395813030f8d48725f79eb190d348b27be4ef0e3845757fd41c7dcc985365a2f076e42a4021605c2f565f5ab7d2d7dc5a8da7f015751e6473f3caded5d69ded255de08003fd0ffe49c27b3cb9d067666c6fa4405832b68784eaa10b130155a3fc13cba6b7699465c7956fef0616139163bb9c515c235798a04e83f5a80bc8fb5d7dab174f7e9d76ceba8c3a729dc318f7b6a140ec36e801f648d61386e8f6ff495755a7327b2df38ff4972e0c647 +c6dfd8921835883958ffa3ad27324b9b5cc6ffcac645ccdad4e416be5f2f5d310395a659448a3455674cefd4fad9359650869cd7b736d7291b5747ae6d4a85abd29aaa52fb63dfaa8ed49870d51ce2440b0462f8c0266ec984203a51aa5233087cf40f2e7e450e0c55f950e4ac6b96432f948b261f8ce9c70325075080cec8dd56158feee1b8b44afd51e2098ee896f73c9a01c8f154b2295aebd201f1f2b6a3f7be3c5348221218459e485c4d842b2f5d746106e78c6e9c45e09b25dd81739f +f9e1ecc8182b535a9da8b42eff28b0fca09b183f1df4b0d2ec62e06b614b4a294f299ec45a5de2ee000ad0ca04f00fb15483d2cdf071c746eeb793bf59ff1d6b2f55cb5b9194e561475c377a54b2df1fa0ef1548560d7f93965ed7fc6cb606d73c4ec138d2c2ebecfa25a58e62fdb96750079885156de848a160f0a78601c1c754b16da4dd021531dd3a65f92d5bb07f8d7d988b019f519a20d60a58d31b33c6f1f6954be5669868a33330c201a6b1129c03f039d54c4d1868009e7d2bd94937 +fea82c329b1f32166d40b6e0a90686cb42a5ec22590e9939918b9aa4f838ad30c8a64a838524dcc63ccac06179337187abb9cfda525443b1c8e0492798098c0c4b445b306e82ced768d1517d6ac1f1b98d453e358b9efdef860b6054474869db5460773b2ee94cb92c236435f4f2546d52a0e1731290a3348cf4e1fefd0664acbf11a49389fe745c1ff11bcbe24db1f9d1dad425270877d6124b507f8b136ab02e80daf4330c4b458339b5b4fbd019fbcbeb69b7fd3f7a76f85bf94826968a77 +da0495a9a34de64262522cd52e7030889052995e80611011e26f5946fb407680a356f3b1e0df2012d4aa86e9e557d87dd940e715264b205e81e8fc0bafaf028b485a22edee7521c961368b85c1c4e9397bc343af8813795532bb8a38138a208d852a4c1704547fcf69965199034a10d49f0663499e92d329f66a82497ec9db59111d599468c95228e03e4618045a180e05bc3b28fa6b0dd4970177195ae54ca9b0179843c5fff5a08df2f48a4fb268176d8b32968ae1c3f3d0ce318e4fed4b8f +de43fe3d8edccdb03e80c6f929daf1d9cefe587f50e66a4265ddd3dfe4143a2368c19003e1e4d736b8fb2f4afa1cdca522385c70c4f819cc8d7a5476faaf49fb3fb180b404d10d5eb3b1d82f87ddf1f822108092aaf88b98267fe7e502c792e6a9030dd7fe65859a95c19d8c0847dd268fde0f4e45d9e948b392accfd5a36b3776bb85788a4fa89589cb1fd138a945678967094f6218204153344b240434699f9306c5801aacd617d0f89b7a1dfe7c993df65f0c1716887a3443fa3fe6ab8b3f +fb123a901462897c19a3f1656a689a76a49ef0d264e9fccdb0dff513588ad5aa2b35054931140a7430f4415496187a230e6d521ef8ac8a135545b6102bba5213a915ae3ffad855f337c3fe77eaf2d8c1eb76de3b662b903d6406839ad8311214d31ca01b824e910457cbda0d0d97dfb715e82eb076ec55288eaa5553b4fe40ce87a1dfee481ded1fd6d05f9570fdab527e5b6fdbfda1b14f121099a008ca412e5d88649a7e805b958fcf30010f57d6dae802a83541af546923941e64789f0337 +ce8061707eaabe8f72faa5e38fbea4ad67a0d704eaa30fe4d568229b34f3a7a11111a8dcb17cccb8a976d284022b6d4339ffe2ea819f9b3c3ba67c9e943a05900832bed892b5b6fac072332f8b69e91893afff4edf294da9a85173ba0cabe79f2d984032a7013d10de25ef1a280c845956fabea2cead573961e838eaf4628747540184a4832e7e1924088dd0c28013db34972b5d03aff447aa468df483ab04ee13e7f90ec5012c7b00912034df0c1829e51ce2ffd0f7c8a73302de50870d7e67 +c1953cc4455e0cb1243ba84e5aabb6a3c6d0e70429657c3ab154d5c431f113b2d093ff1bae63d65750459ec55bd694b35cf02bacf18817de05843fddc5bd4ef6e3be380de47d62df761df76968be2c13624b574d6f32a1006e7bc95dfac965cabefaba1738275e219f978d75da5cc70a6d18ff6c33095565cc150549e3f6d1f09cc113d30252b13146ef2b3c5a3db5ba1704c7bf1dcad7ff1985e3adf9976f62225f1b73095f7ecce1989bc966a9aa8d7d80242e2e5cdec0ec65ac17c90b63a7 +d8902cf19f0203b0c53b46c8d42d19291f6fd7c1b8014c33f7325170230706eace7f509b40130ef4727eef140d846e68e0a0214e72795174c25e3782f61d339a065b12d6fb4d2e4a9bf3859d01bb15595766a48b8c712681930a87f743f5ac884b38794a228fd43162bc82a4d29bd71f5958dc1afa81bd877020b6c641e5e61f725d7b66262f29a73255e1f7ce4b0de6f88fb24d5fe8abfa93465fd8a3a388ad75ebfe465a13bfc23fe76d7c9ad10b68c05490f61cfe2cfad38ada4f1190d8ef +c606e6ade04c4abea4bf13273bd41983a9f31a462f8d5cf1835950ec8b094840a84347a14923715aadecb0ffcafaf0a308641503e59bcf031c04d15fa6417968f0acd6c50bae713e3b7aa281862877a6575788687298301e077371eba5f74a21ebcc7457af40628f79748b36a90d9ef153ee1547a646b8e224b524a188ab76e5216f298fb2c777e35a9186732a9f3787eefd0802c7f590d20a2437c883a368eae00c6e6fee184a62ffb64f92a09d727f788165d2577cadffd52a7e4d63f176a7 +c7a9fc334f3b60a5389234a26f52cded24eed6763ab8df496993c427424de458635e2def529d7f61e9a0468ca50b583e0ce89bac4e7de69e5799dbba062002d0603f76ece012f71820b35242a2e0f0a24537e525aa71ad439ebe0a249287ea873da72150079cbf166c22d8714650c862ad6985dd63e0e2477a10f6d0fb214f62695c17ffed440d2cdec93fc5385958ed02b7e294c3c55c285311eb28cb86891d4ebfaddd0907d184dc3072f68f2931a2f01f73685ad2a547009bcbba856be25f +ebb41697f7f907d7844a63745ad5133e4ea6e34c2d8daf1b13b6ec975b4b210ddda879552fda39e38e86a71a53bc1fa459a15899e066c72c0ad7aece3ce9b0780792819d41f16384c4086ce9630fc647c0ebf47bc1647babe18f6b09c022665cfb8f48937bb7e1c8b6787b783b9e8c9fa4d77419e4029f674703b6536c3d90cc59b5a163350dff66e1c76470ae32f1290280e9c253328c9452a042e55bc1f0798adc1c1797759de229915bc677d26be539944d6925c807367588d7ec836c245f +d00f82eae57419e8b81c72339e57b78f0a74219805e22c95433887620aedfe47b746932cfb5da40bdb96ad29a60b4fe108096cdd2133d152e8d7856f1600cce0cf27617eac115b9eabedaeb1157ee6165af7c793f345a8fea0918c4d69a317095ae0a72779fe13c05f2a19bdd6d65d9bf66695c506c4be579b572b25ad8ae1efd7fe3d22d0f9e1b36e9b4300f7c492ce55ba8d165e1036fead8d4dd575213809e7bc62e71dab021920efa807c4daba807947306b2e26618c60056da5dddfbf77 +f658644f8493fe40cd131434c145c4dbec8afef4fc9281f3600d524aeae022d9ee8349778334ea5894a8043e4343ec053d1b4cc0df1cbe5fe6908034020d3f070e988c3ba7624327406ea1c4b969b10c0d9e072676f6b5e2767700e206b92e3b3cded14e65e9d04aa001c3bac811608846ab16082b79870e5fb4de2fd65aa51d564455e3089b89ae85414633ee119dea873e468b0ea2c37475cde4711a107c8ccbb55513444c3c8d83f49294294562d38c839f75ea0a1a23157af3491f1ee9df +ddb70cc04054c105608e6f941852d2d3ddd5edd8340866ac0edc9d4d2aace7325cca0e43e01205680b510920b98a878d98b0483b723b3041ddf4bd4dfc06dcf123806f673b107ae1f3213d7443f1a76e4017a5c2e0bc8cda4d18c4f240339178c46d3abdb3e23028c5a8c66f3606fb6452d9c9cc16943f8282e4f4a0369dfe086613398923eb9e3399a6b3f2d7d5e48c1481ab44f0b8101ef47f787161d062c287ed7649b9cc1ea071b0c4e7f9f7e26c424ceb793f333d8a00f2a0f3165326a7 +e4abe81843fd7a5a2321eb5dbf5a32e1221ce11359731eb4cab946c523395613b7ed789c943560e1a308ba712bffa9521700275384783c425dcad167f1496d5bfbef9c21975138a1fa52f0f361b8a115b7946421438120ca3ad90b6f383bf30fedf9167005a65b84d0325afb82785af30728e53dbfda4ef1526f4963bf9856bcc2678ef29a164454e913dfc380020f695f627b6413946ea5fa4a5fbca94d7424e9d0df33020b99ad4c4bfff76a7714385586eeccf316dcf87c04e3f5646c1e77 +d5a0455f5d476ddd0182100d3352afdcca7ebdfed3235fc8377a7d6315b0d22dd31ec7bfeace02d1c46431347f0fcb6daa3ed092d2e2d74323158076c4ff5a51285576185947deb9fa87be70dd05dc8bf56f863ef8d92638674cd6dc9b01ae6a99f3550e1626361a233d2f7746f26d8f9e4b6499f332832b8b9509f5f6bc724ecf3d0648d84bfc6c7ba816133e1be5938ef05f113a5de2d12ce7c5dca73430ceb380c66691633015b0361b3d14bb6b53c6879d158b4415c19234a5230e560c4f +feba8c907f531de896f230cc89077f3cbe53177f5f2dfd01ff89cff8796e9f313e2876baab5d22ea896c870be1a4c017a792733502b4443c01a9dc649c79b873b40f94819857250242cb32e7309d58f177200603751ec8c562e894ed4e3cd20caf254a1ffe979a1c39592b4251021aa43f27624ed54c0f180757633736aa2cdf304332a705ceb1fd905b1b2dce483d429e144f94159bef29862989c0600bd3b203ed8e21b141d54b5349dcd43081ba0bb5eff4cb7d4ec000c5a0ae88b0bef51f +c84a4a8d19c8be887fa3de16881d6e7fe9512772f02a3e270f1323479352d357aa6bf25005316e917a881f0dc5ea4783654b9bb525f2708b7ce15716030bfd5838db90232f81bc6848c9795d5b3335e56f003602bc24c7c8a0dab8808a459a634b1e93ff415dbed73324f743ff60265ea85d5dd21d354a07445d824dbf1f2b71deb6a35bff79173fba38a4de5740674eb3b7677ebc38dfe8b520fc9f6ad71f76d32d449d71ef108d11055d0a0f7f2467ca35da5692ee073a6e4197f785c48a0f +e980e68fee386115b6c1769d21c30ae3e6cb87dc30b0c68a2206e99b518e70ed9c315eabf33ffc5af073cf68b731630435d60a1964534a5eec6f0a36e3828439098f5e10220059bf29ac6bf83ce13c20bf2e4858b4cd4e110a5bbbe4ee36266692871a3ee50c69f9b35259fe685091b0accc20099569d52e4a46dbf5aab11800b633374de2068bee0e7aacadbd0ace0b254f48cf81898e7db4204f1434bb5f2194bd1b0e59e9d64236ad8b22149e73d9e8f2dc89617c90801b16f1df35c68967 +d9a9c3f56cac3137c26999f5f21a5a32c2ecc5f415c7099975283416f0640b284233f49fa6de56f7f06de1c9776c0426676db26ee930fb8402d2c6341d6b6626afe3afa6abb93d4dc82bd8dec1dada6623f593f931e9c091f29eeafe5a0dfded10322a265e316f7d2459e47b6e1c16edc21bacf9e717a17c22cabfbdd7be81c9434ea4154d79ee2f17784c96147175fe3be00ec633fe85b547e88a69ec40cdeee80f4414dccb5147aaf90574f80ce9383524526057d84a031e4a4642b6c72f87 +eaac1c13f3cf1c07abab2717ceab3d4b9986da737d158700ba6c0bbb8be979d69236ca94e92a880b160d372c590448fa7059b57db33103313896473c44f95ab1f10c01d9dcfc33501a4d6f6c5d791ade38593553c7ca36ad15beb0633448d2c52c11dd811b7c09eaa26925f7369539ee3255ee1288dc7a21af2687fea47f61e7c383a425d512aafa83eab7a398ef50347c5d41d308f33275d6edbd8b15798e37537bd074be7836b5fdfdd624d7be542af67fd9285b3bfd9df8b0b2117c60866f +f6fbfd9d4f99984534e503cf7d4b6e7f23a172179edc4c5bcef03de6740d9a901726dbdfd1e417765ce60ffe514b982d28731ab0c69d6b879c74c722e4c187420b45de7f214c66d350ab1150dec16f94ceb1221bdee9004c9a4dc3add428e93f28a349b64edb2a6ac7ed788295dc19101760960fc6fe5aa8bfa4cbdd2de1de6647596aa8278283a713d43aa3f7ea68baa8a894ba95c70208a80e86533af4f35ba99d1a7cbb2336ab6dae4e5a70d2be4e1647e48b049c6b851a4217a9be45c347 +ef805e6356e58015c59d5c6c195b52181b1a075e4a5cbec7bca82d6e91401ad7b2500b0e89e6062a064f86089643c5e3d288b189d272b2d8ab932e2dd521db7afa36662fc4ab33a68a990b9928e4e6b4974c70f1541a2201aaaaed4d4261cd0bf67472593476babef780b3af864362cdac0f021219023c234488bdddb772f0ba10b9e7ff3b7a3c03bb9195fb20e85b92a20d21fb1dbf5c0ed586ee74be8204850b76a7c13757143dd721d979d72c255487e7c70bc07b69f38777e6a935fef61f +d92bf36886b887de8a799abcbb730bbbfac3c95015bd4e69dc24cb9e35c62fc6ff3092fab9450a39a396be31d2ad8e749735fede13bf7582f13d2ceb7b095901e36d0da33817244940a4b5b9a75328286012059952f6614516293f164051db1e10a89299d00f49b49d23ebc9aa21e801a4ddb4deab3bf872dd8a9a4ccc05d01142301357950becca09eeb436b75e34bb265dd9de3d8cfbecf461ff32b714d775409f0ef97099801081410513c11d1b6b09382b9f688b6f1c83574bbdde52c917 +c03d5ec7f092372b6a4be09da5f7cb351b12ac63eaa8a3be2958b4a87c77e53b471d96db853180f88187cad6f39421df9c47b8e798e1d62aea05ae91bd9629ce5933337498e1afcbfbc4f7f181c189999618f8a264579621786552a23a93c27d1f9cd60fba8da4b632f65177c22a4aeed8a091bc8a3f4c38c1beff9a14759c757dbb8f5ac0f66055349727daeb30acfbf19349425368fdf449084d6a584247b52144e3dca4edb1e09aef23f8385b0e8267ad49f29d665f24c4997b08462795c7 +eff91a7fa3a727faa09f3fd77fb267869eb6543bf2f2e8886625ee84cd2c976a4618da569159ea323022e1b74f3aa7bb11673ae8fb70b9fd2b732da67627303ed3232ae93082ea9cc260c878afecbcbfa026ff9672219ec4763e8654e1c6b70d253bc8651e84be6d4a4c649db57096c68780dea3184b1faff349dc1b39d6494d909afd453cea5835cb00424629343bb34170657411f7cfbf6d716e4c359d89b6cfd9310b5eff2165d5b321bcbca7de12bce5fab816d3094e028fc2949ba77c27 +cc5bb67991a0e0113939c87290929ce5a72dd2fdad0f9921a802a8a8ee2838eeca64ec161521604b211170139986787ea0c2d446ddf66915b6ce8cad7fd94ebd8dd90a345cfd7b116ebec1684da46c9e50cf20c19865743fcc25ec6a1f619644ac33b342c2c75158ae2cabd0d8f15de1f228048e73255334d404c7c7ee7ecfa9c5b464ad21c2315192cbb3e4ab0c795795996aa74208ffaf192983a2ce2eae8d2fe532831eaed7ddc3566c838bc70658fc03599852302d2c5bdce4fbe2a7f7b7 +c8473144d3a1ae167a95a657d7059bbe3043d27889b01224397d6ab05a2bd55aaf54d155004f751d96bf532a48b3131ab0442e93dd576394f6868c452fe918217fdc6320d9d4060ca72955fa8ac3a5061fb1a036bc6f845437b1cdb9b817d16035769fbddc3c63291582bed91a522648c578acb45448a3f9338c26b3b35f51f36669dd058d78a337571f9afa0b19d1bbc132a24583ea597b5c76ad9bd539e292860c124d299c00f333cc960e49544a21b8c0541a4c2cf22a74ead0e049b58ac7 +f9b05978463c1561e41ea4270719f8ff4b284cf9f1124c767d4a450c0f3d15b5405d64dd3e79071ff6a8351e4b664f3d6fabea7908c4d9fac46a6cdd3f135eaca31bae6e7e7563618aaaedb969fd4950d231ec853a08dff5d37991374fdd026a04736b35d5f8f91d39c82471daa55fec3e3e4ee3dbef14affb019695f1a9da20b1c1bf74e96e7e65e57d42402cff12050a304e662e47e36276a807b64a89b2ca8cadadbe72e391062b3b1f57289a03fe278144792118397475747c1b3bd43c3f +f6dfd21d92a2d28be417a8a4eefbb3ed68241013ae44028e5787d89d1dbb3fb7638d5eef7b2097089270b18bf9d8eb17e85c11b27c775e9bd7220f07f29075f3190d80f440a6ad100e94eff4014b08c084fb6f9e2573e924665eb5159eccf657365d886f90b94f71a94e5b0548e98635a2a7693d7d1640ae4a4f448265805cdc913362ea9575d7959ba5bc8bfb2837c661acfa09ad9392951555788b1e84678a31cd21bd7a57fa187769a7421f15c9e7a70c99df7f02c3e77480b963731e46e7 +e16474c9749d12e0b20d7a3f67387a0866bde957f5890d0051e78e77def0f4603c6f81d6065ad99103b265816b5489fb5421e7dcc878b1c25fd57d485b428d7fe446065c841ff23db8ad61bbfe86c94fd44f76cf0dabb6be21ec45c4c3c18bdfa1de5ba705ef9589109839e30975131af291b92dc71360257a6f207a990606d854d862616f79d319f053c6e434ec0880ef2ad0f90ae3c9a4b6a1de64af14fb66b25ff00923d86bc21ecbc0065f4c51d01b302fb7425075d9c3defe4cf3a2f81f +fe119c683cff684a8654c3dcd8ed21c4afc51c589985e298452ad58c7cdd67206cb9f5fb164cae63c40a7c9dde3dff601c8253800e51b2bdc9be89a4bf4ece5b0ed8e0b5d4d8aa05bedd027d8def46330e04582539b2c4c057f84bb9d366d3320e9003c90b51c25162486e089e38e07410d13f0f076fb5e33be5b561dd079d2fc6dfb64c43695fe9d919e7813f5f08925a717d829fb40a6ecc3aec063dfbfc054dd3b77ae1d3363a9f1a69bc4ee99c72e959c04e922dd18f4012619ae800997f +ffa144f24b49676da292f34b032cf74eeedd7d47a7fc10d0e983c20a36603827acac5d52feefb4dd0e9fc0b5acbfd03cd639a26421ff3266d83afeba9ee2794edce4e41929b9c392145cc9cdf57902284646498f8b421f4b51759d52cee39e692b724b849398a73944dca640ebf038479bf2485565e51718516379f808059f1f9c1992b2de9500d7793dc3d5acb119e0de1af1257531a64a0ef4a1ffdd7b5d761f4b2bf2c7e37b3943b4a26e02306f0ff3c69b5fe50808e677662fc04ae08e2f +c5fda0c3901cf123887f6532e5b51f4bd9408bf8abed1f503cadb295778668579ff5e6132da6e64d47469b0496fc3749122a54dc39740d54abdfd78cee62b39fc7697b87ad3461b5ba34d19e6d47a2c2007bd0a2328ec2b73e1038ef209d572d10749c5a67d40ebb9ef4259cba1034acb67c15123bf8b594fa39760c45afdb5af725c3b29a5433ae3c4f91010152a4d8f7cd08237ef6113dff193487a7fdfd0745a3b5739ca4488947e6342bf30063bc906922206d92e880157d95141d4c1207 +eb0f0c2bdb2ddf3df935e42b8b4f457356bac98d1f10227e1c46c8c2f0de73f9c9332302215b28083a3db50627417cea34ac87f6ac382fb528b8f55efc3e3fa74076c1ffabc304068add987fc0557eaa47898ee52c4e9efff08eea7474a0eebdab9ff9007732f42cd05ea42fb95f55ee051740f5d55566530cffd69642c91db5c34c931a41c189cae4ee8e27c4309785614daebceedd0ae360f3055c3fc8f68dba83f7c2dcd4a1c6d7bf42ebc353e0d934cc0327bb41916697b6a434f3c18aef +d904522dfdecea36d89eb312ed23b36574fea68a47e6631d80b92be62be39dcdc145e684acd890bfa1b88c5fe746e4b4a2a3e4dba14ca15c838a3364d1cf9b9a21f09e90830e414957bccfadc9a9f3d4ee7d61eac87459c1f934ecdd974f300a045fba6e75d83c52e9f84b82b2a803f3c429435cdd2582805f62a3972ac7026a38345031aba45c7270bbb184cb876c47e8e6d8e5ff2ac78811ae864de0605e89aa541d97af91e883181f1fa4c4a62a6feb1e2776d5197826bb8f205122739f9f +fec03d6431017b85b607d93466b06ddaaede6bd6e9f3838883f1f9372aa4f191c4a7aa2c9a1e648ec123ff00b4ff15abc39d6ea51a7edaeb66fe412230d98a8dbd00f9355f203b79deeea2df1f82f8d90d8ea3a9372cd5991faefbf394fcfe9ad5929b6d113bdb5c27726b58a00fa51ca1cebcc5c4fc0b50832351e2514d7f25cde20d753a4eb621f3769336c502d47b333ef4273a2f6e059d5823a2df36ee8dec0f99f210b82375079739b2fe89c6aa3fd1a1cee976da078800b36925062dd7 +f29fc99b1149c4c8bd6a0624975b7e1ea5f19174986ff372995edbe9e76149fa3874ef8d8a5d3f0e9ff3274c44d44f4699b105201be14b9dce4edf10127798497d1f5e52fa72e572bf846ea861689f61f41c007397e0b82596a704a9ff91cf3188509702ac2888deab2ddf954e9069cd66a3251a1e52ca3f9758b4f489541c1606bf032ec463506c16bb9ed0530b879f2feb3361676844b2b14ad59eb8b4f28fe6e584fa1b7e34390d91aa217dd8757790f1fcf0ee8ffa5875a7b77fee88ae87 +f6baaeb5bed8ba1df2fc30e8ab514bb89a642790af3df5878a3a4bfe8310b165b605dda8c4a06b6161cd1c0a4ad8fd2a706febebcc8c8ba318a89b49b1b469b014bb2cee70bb577b2df8679020386b3d484f934dfaa939aa8948380bbf4190ee7aa348814ab3d6ccd63912263c344d32ba11bee8f097b79664b35bad59d7593e61b88192be33b08636a7acf6d880b5ef7171595b9a1ad19e4c96284c5824ace6d5d2d76a7d5bbf6c647666466df47948b967ee09aaeb2c5a6c157b1b77e7faf7 +c5342fe27b28538cf4f08abf1990f6b984d9335f06445d19414b57d8d21ff34fa25423f42d3bf0a1814737e04a50fee4bb8b62938a8bf801723ad2a4d08f86b99b2f2bf66231f5ea8300ab7c9e3566dee36e78148f3a86098c046b17651cde7f11ab6482b2c3e5e0976b86adf4356b885140a4605b09e867d9cbeb09350ab79bbe8164d9bb078686a1825da97102dd1b3cfd677bb541627c6cd5ac9d67db1adfe7d8e9469054012772864e64e33bf2daae8d7c459a3adc4b176e5c79f4b241a7 +e71466c7437ead8145ecb24997ef8e44b05b970f3278965c7b7d885db405a6a6cc5fc930c9aeb1354ec20fac10cd8c6f592589f745aee0e451d65847ac4472303f723a1c447c3d391c077f42ff203f1f07847b305b355fcabbce3bec12cc5bfb64c1da92040dc1ac24b4087f8f509c6e39404be3b8ca7d5a5c03974201142bc3fb3418e4c7e052ed902037cd0f8e2e59e5b422132f96b2eb0048d0e7bee116a2e523b8dde09a7639e5d396259a965e69755570d06719894479797fbc16fab717 +c7de3636d821f02b8d16f87f9a4e0a347e6f94baaa227dd5d8dd5ecb9d883815bf9c7ef6542362af686a7f8165458c0b4e7a6123dbb9ecef6afbca796d4e30ac3bc6e4f94043d98f56056ec9bf0c2a912c8da6bbd798f3c28bdb6d016d9a453e723e1ede7b4116c8b76e4bf0b92e3a1fcba2e4b5666b0a6df3ffa63f668e10f41a35773dfc73a0b638652c4435aa4275518ab9be6a194573ffd4a73f3a1234793a7b8eef595200dc8a654a2af1163552b6a3f4ee78721ae115c2d4e678f04a17 +d0914f64ca1e16ce15013951004aeeee522997337318bcdfd6035f71fd3628d89322d7a3f68096af293b69f43bc35caaa47393487cfcd4f37992a56307043b790b14af7e8e6010c6e1735bed954427fe8a302c290d70bcf8740773704eefc321c8e7caab8854c8adc96af87c182ca254f8bf5497da8ce7d920ca9e467515e7cc8f1f81258bb01aa7f25b4ce8e176399beffb437d405a57b44203ba6ed25840bd0f9a6fb13fc1c159f8a3594cf834b26b6e1bd22d98d1c0fec70d61b1a84c5e3f +ec7636ae11252b17093b1c2fb83fd96afa670d6fcfc8980d812403c64346ebcf12017756008654a653a4553f3859fd165bcdb0c78c370ac47e0d614b967d0b6bcf32ceb3e9dd5bb6a205591c4ace5fc602ccbdef227795ae578884e1cf4b4fc39be62cbe3e0a96a67f1257fd45c93e521527e118bbd16e7ae72e58b8d9f51357b951654c80cab5e5256bdc57be0cf189682d0632c2f359e0f3091f71f2826278519d0fc554b582f84d8a9f3a5f67891a553a34186115934fb9f7df37c255aaaf +fe8e7727f23f2fafbd8b505444c6fdb80d5197123876df3047fdcd91405f88e358d33509a9cc6e86c1570d6d92f2fdcdfe5d8176370c98680089ddaf275e58da239e6e88a572783b51c1bf72f9b10b2a1ba4d8233e845df55f89e1fa907bd96613ede37d7a901584cfa2592d1a2f5dac77e6d0159d0997629c31bd4fbbff8708df8f01bdab6b9b450f7356e6b635a7a28d5715ad948bf8073a6f0abc10ab88bb9fd5ec9cd7c6244263c17226fc46004ccc82462448b32d79767388a58698c047 +e16b22c4500f1fff23d18081e2093cd4f0622e0d117d245d6f0e8c5c20f7b0165218b34a815276e47eb5f6bec04e2a68e8aad1c661b7eccbd237028dfb3e9d5828d0d5984edc709ddf51eaf3523391551103f0b09d0567e636d83a25a51c786b186cc65e5170aca7c0db5f4d0959e3e3d8b97c24613905028fcb440ef76ead874f52a3101a428954dde96072d5725c14e1f6d321db0512c554b06b33161aff6a4620d4b5e391c1d144c59bb74bc1cb8060454bbceffbd4a9afcd2d598f800947 +d7c1739daeeda77580ecad42aa34c94ae11e9add6964e1ff2e1fc57078de1b2f8fef1f7b00e693f8d8864fbf45d87a11d896369eae74337341306fa6918e29b89dd4f483e9a23baa8ea4415e37a33d02e8adf317bac5d9b445cc5a9c79af7609f8a8cac9f52af4024e76997c05f8e883bc4dacbe0e758a287c92399707416fa35387ef53aa393197e1daa66200f262b3c6bbf5145916061dec5caf484cdffcd3b47b6c369affc89d606a891d46f25a2e2a9ea5901307bb67f850d14286340fdf +f9db7bb58fe149fb572840900fc1678b26b8f6d2d0d4342190873442a2569481202a226958ce017901c72488e4f6084761b2a1a802c1d9da5f20d0fc9758566380af2312382b7aabf9efe6d96960425d5f54d64a425301e9f86436327a2ec21d1edcc157eb8e3c425c8a45631a3ebb36fa30e2c53cefe0a543b46aee46f031d63363e0c286db813ce9f403445c77e844c86178e358b61cd8f87978ba1fac35db2dd868bb5e47416f92c63b87f7a8bfd91cc98e2e95a9003d9a70c9734de5f5df +d8941995249134899cd61a5a83907f73c1f196a66e49e33741947639219aafb4626fec7760d73fd851a5711ff2b13a934c69562bf1fff388d40e6db3068c5342ecf2bae286bca4cfda8f54bd580a94f7f860bcd14d17345e5560410a1d8469594b40634a5a712b83800bd5ad1164e49a12dfc9d0ee18e3dc502ea7732cfbdb406943e1db7aa29b677c580e014a2c2719de23bae689b4fd78ccf730e7129428cf036a23653c6d48a3b465c18b1bb9152a5f2d635c2b101dd534656c270d18a95f +c7bd0132b2b3b6b47dd41e5871afaa737ba5b4c46748a1bbc069e6a23a3bd976a543f290a2184942f7b282aa8da1fd9558156a21d34b19c47c72bff4431cf447569ec5a9acd873bdd1fccfe2b48c77c109fdb716c178ab34776c115a434ad8ab7a40bb0dcf1ffdf28fef1559fd8d61c5c9c98e080e7d62f796966aaabc05c5616f042d46b58f4da7cfbd922ff041b4555b387fb879f3b7c2ff7cffe3623c3804efc15f7bc3f9c898580133a3c3464d010fd7203c86f271418e2f30d4ef5861c7 +d7701b8d7048166c05fa86c3ed971c680b96891c9d74d5e8c8d6a090c56ae7accbabee02a6ae4cdf406007ec369b0dd7e5b7547c9808e720145af01b55724bb3a32c5ccb7b410dd39541712d253be430968ac047102a00c3a1d4a27b8822c1f21d226b99ca6371efc3fc3754f3b4efc66c91490410903bc47a058c2860b3c54566767348d51a724fac0c91ac90653b05aa8350a748722ed7a25c1ae2b9867f430727089c110dcf767622f9b76456a52c2ed6abd62a906feee403ea81e3583dbf +e30d012a6420e933d61983dac3c9464b520fbdc5967421223ff7d319857e659eefc028e6558dbe67fac16750edd8f33037b5e800b912184610f28339b9b5920e18e0d5ac426a855741e55672af7b8dcf6c86412bc0acf54964564b55f3119352edd354d62ba1d0e861078ec72569583067c50f6d726863263ef7c121fe944ed5a64e6a41ae4df791ba5d70d5cd0ba58b1cef6ff143d7188817332131f7298da9caca4e4397e2e46a185d592c03ffce61ea8212f163d17879293cc7d8314d0eb7 +d028283107f9057959fbbc8ce58c67d404885cd4c119e03fa311f30142cdd0e26c8463ae51fc8913d455b9853bf0b644472b91a80588af95b83a67aafe0025bd154aa8c7e0b83a9e144f63df3c926d22f3992893dafdce1e26a3dfea73413db95d96ec47b797401b36c199b3054bb3de7c585e7a0c847dceb38c1e063bad3cbb2fe26fe80b1f69ffc4f51fcbe31f5f79655ea5c99207a3e734200afeaa9a4dd5b2a2b508b5846875fe75823e8cc373bc108b1c876fd2338364d359dac7cfc677 +d954abe478325aad05fef47f16103c83e955c5a81bd8899040395e06b232e5113692bc62ce162c3b0e72f0de8ba96dfa8ac62258736c03b82d211b468ed3687dac3bdaa02b4f78411496be0ecada716ccbc48676f097d2c92f2fe81407a7cd58dc7cc178dafffa1c68781c03667a6018a47754bb0158a53b97e0a449ae090e1dd0832eb793722396fea749072170900ac2e8212c05881b922feef5de4f7bc1e485b48c492f7c191dda61c482ed23b99d6890b69a7b218177158cb4a837cc5f97 +cf3b34713f450d2974a8b8cf250911e0b5409198b7c5a3053f68cc58092e31b666f56fe38b9739c3d695d13ee6ac9af86572bad92bbfca0cb71e376f83f843d6bfa779903238e28acbf3fa1c49afc9e7b7f09755a5378c6ffa426a869d70d2e92731b2de71f97a98fda264d842ca0c0eefb60eaf81e3a1fc156adc9857f13f0df9714463105441720846ebac83bacdaff38c4eb6ea5571f8df037f621015fc9466c75c119fcab41bf314385dc8a8c96c676f6a8245e460cb83845797eeb92bdf +fe50c279b5de274b3f2b32afc39f685f80c9af729e65503e04e105005b8d002d1b08475535b9951a35b3204745e914d8fa9cb898e93e57dc02f16f294fcb38767d0e4ff4db3a64e619fbfa860bee222e7847eb67374100d0ede9c643a7bb7cd1ec0246fe651f274af104d2720ee488cd8fb4928885a60dabc31c3c68b03ebf06737af70de443a8f22967420ead5355b20abb7eba7ed9ee5fe9a20f7ecd2e5d1abb69878ee90c4886b1e1033f0d0708f26b14f10b6235e6b7b0ce65e01fe92e17 +d5b127875e28950e9d9e6ee68b1c91df2fb34e66cebb563f884e2a1e25ebff98aca129c2efa1d6e6c3cd476617c232c785a3fdc563414b58119048789b8ad10088f0bd4836538ac061fee74c07669b2296f91b3bb8e8278f8901ec05440c6a6bd1ee3fda917656765d1ae2ab619a9edf43ad4ce558c2c7652c4eeefddd329f276508f7339c0d4127f7dd155cd2c7cf5830f4b0a2c79100f2df27141ba27009f1d642960b84b84835d18cf83aa49f0654723b8364159ea27d0a5402645f3b78e7 +f2a3bfebacaa166f635dd04ea3eba7060c94e35ca6f0d0a57659e9cb63493a823fcb229a2e00d2c78834d1c6c1a63cd11933202f507b3229bd217087e13e3744c1e34300a9396d5d42b21998741ab6f0bcab5397381913c60adcd4d36635fd733ca189cccd6dd321272004c9c4d1bdc5b95f8e5cfbab1e44c776bc76840c558649008d0cf1807aef97f5a92971a0aec39ce13f3560c819d79fcdc11630594325c7fb90d000bab84622bfeacbc2f510ba50847df34a58daed7324188edde310c7 +cbb4ec5c5751980956baa73dbb5433a5302d431d14f61571bc15e307ccc1f6c11cb5492b589c194b05336f45b5eccdfac2da9935c01142c83f29b05fc94dab4922067258123e7148c5bebfc72aeb3fd31680e007c05d91655e7fa2871a36037ec86272e180f4d2cb9c3c29f5e803dbfd7c6355cd4a5577f917e2aeb06fbdb3aab231ca6c20f31cd570b07021cde2588f447af1c293822a80f47b42e97a9baf1daa499b2d8cf211e6752631015fcbb2894f084d29e789fdb2eee5381a475c254f +e613816252ec2be4376c56857b5081c5b2807b63a1b9679b512b9ecd9fc0b897bd36e58b823007f42752738a28e925795d945355471c5b4f7e74f0125974aef5b1fab5a09a31ee672482991830ea2aec17fc75b5d8ab35b26fbf6d107bf4caf660f019d3f330ca0f1f470fd1eec9f5e958a6a4f007467f2eefdb515060f7d961a43371498664be55f4f977e52f8cd86e981f357765bd11359376f8f87ca849711444ccffd02fa779311be27701493d9f6736eaa4573da13a2bd9333b841fa37f +c1b7ccb400d419c68d1b94144ad7d2877c6d8c83d28856cc1ed2fbbc2983e702d29d52f311b1e455fc918aad179ce8be58d1284dbc3ab48bac91744eb85368f2f9ab4afb688bc114b06bdbb863507a2141f84d78b8c3fd8e67be032a7a3157c8108ae5665aecdb9101e0a4ca3f540f35454d53e5a296f379e44cde743dcd84edeb3fe60b4baeb2306457ab63cad6b9f96c05f13b4ccc4d4b828a4907c87fe97a9afc3e3855ab0276a56bb8069303a3e96424719a1a3d4eac1548649a393261bf +e87549548c7e38f8e2c2378a655be4f19e9a6d99676f9dcf945d320c58fdbf5bd1074ccde41991cd77f18deb70e770d2d93c9f3056d311a2c71ac86a0ad72e13904e1729625e2929e91ee25b489cd02dd534c3965edda2ae6b1d97ef94e15e9b5e97d63b72998ddd4f859786453723084b1d06807a52cc7d1364b0321b9e3478eda70f2fc03696902ce580d7b82d1afecb952d817fc65762515d99f2cf53e2cc09210dda1336d85d2092fb7608d940ae304b327f03babe57eb8d85fb17a7a78f +fa397424e4ea146285ea0f9f97b9ab6454252d80ef6b881ce12feff5546207d4a1a8ed8d0e56c8fbcd7fe052237a20d417f292e912d6559c4a6f272090f26b1b1f802861c0cbd498b56be4d72c471cc073276528c5c0c043a539f7d8baa1c67bd16caf2cbd52b286945e886a6dced8d2fbfb535d6654ee6cb7d82955dab66a27accb40f392cd2b16908846083731bb2803513fe23ee8596ec1c73c45eaa4bd54b4495c09157c7566de880baadeae62f6e10c3f7091da4c23b209736da9ed19c7 +d13af4fca1c6cede8f4ad59d8d038a182f68c57c26861dfdf614fc231a30c9c640abdd9fd5747c950a8e0173bd8854fa46cd46a6e980180b26d28b5da827acaa013b5090592883bcaa5f03bd60de2119389671f8af980de1306741bee11418f9a1c1cab2f5099c30e56f0f46e9e937448b66a165ce32459e860f460eeceed8260811d1cc6892ab71fa7c5fd115d13dbc50372339108587560b86def2e2fc1ac8f265ee3db7831c708681998506cd8ed6c081136b622185e67541a3682700d12f +ff695bc9d2bc2834c929d75eb446b811e31b1ca3827dc1d53dcca465cedef70defaa42970a4495fd91e94862ff773e983a2a926d9f084e8be8b423e6e25ad3a3ed087d8352b9a10078b4959db8858d7b370833078b22484091bba33f87580014bf27412482b8fcd6a6d0f350cd3f7de7178a6239eebb2345aca215346a2028add7e19d522d7c7418e4014ebc47fbda58eaf7dc64b0c8504ede6cbe7483a745a6e1e3bc964a0038bc9c20bc3246b4c8c5d410f7bbe62740261e5b0142ba922c47 +f801781aa3dad794b1803fbe6b037eeda148b7b2d17b0e0f22a66fd94afc2e9828d011d7de01fc8213b39172c19963dbe377695e94b8af294e71f46d231f4671ea9b5845cfad00d10e30c9cdec0ae7324c5b856018fd1dc57527c99dc26d8c9017118e8475361149f0c64638f30aaa45e79514bd956cfc4aa56e362b37357b1816732a18b4b460e5d2d7c0cb85dec7162f89535e4d78e86ccbd554f047f36618287ac559fed5ae62503b46ecda813ed10c2dc992aeae0719d04a8c88b2944e5f +fbd55506b52a9e3ecc505c146bb7c5a4e6dbd7967f19fe63c2d0baae148144c406b037576ef5b261d7cb72c54e7922472c584c35c64ac915f049f460836b26efe7577347274453e15943cff19c6009dbfd299e9aeceea987eb2c04ee639790197d6843e51e3b13ceeb5ef24a40b1060676cd98e8bc958dd3331de63900da00e7ce93e8517b5271b6295ed417eb7f2b8332f4f2676b86ceb2567dd3906d6d829f4fe4f24e485add3bd4732c21168150318e68c3df3c8857bd593b27cf7504049f +de8b0011db990b9cfb9d6a9474bb05a0583151a4046ae7bda12eecfa2e1fefc911024a843ae61b7eaeaaa78f4d1ffadaf4d5e02ab94f50211580844358dfab7d49959b841891c528f62ca017f99c15a1b9d4e3546c11a1a776259180f8d15f76671916696771d55f9dc6eb4a53a770c4a90b075d7eeab84e8de917ef98f0954d810c0a863d1834b3521f8529a6edfe622978e77f4ac76fdd6cb937b84ddca077a828a2101934ba5c9b4060f5e67078c9faac9e68ec48dec594795dc3eebf6c7f +c580d21654c85319558e0787584a643d777a915cc995c590cbedc699f0434da9ac5075ea28d61947b454e7322023da67fd5721dd4a532c6b5549f5ff857f9ecbedd4d3423b2c9ef76912f8d131a2328e2d8ebeb1e613ed6cf1872b788259af81835cb13b590e5a72c82c66939e1af89f54d88f7e781c87d268688893b89a6d1301e7d13e470573623a3976b19191d21a701b920c4dd09a24490da3a0e571224f15f9d6793e4e03107a0f66b63b8473f09e45ad31d5edb1571399c69c95a3e1c7 +d543fe5a159b965cef10db17f940b2ecd99d895f6a6ffab7a89a259f84139b9efd1f3c312277e56e3481f1af4abe4595a2dbe916006887f9ec07ebfc976036ed1c8584a74a06ec1cb84aa25962192cc285991e5e83a6383b38d5f7f44090a8ebf0aadec6e80aa86e48e4595fde9e6f6f2a06ac0ed995206ef4ff1afaea2570e8e15e870ec7bc8687c7692d666565927324fd03f0423a66e9807f5a0fbc238d369e7832058e7d88178b6f7e127d00430e6440eab52635fb22d7d8e3857ba8edf7 +c1dd4b797861058b322f761e7d43f3666499ceaa266874a54071ec52f8f2be1afd010baa1eff8eb2816e3736d3153253af458815c74be9f0aef13ce67cd29d78e4ce81f4c15c19313a565b892b3f825751cd38636f462d61bb46e1ef1c94fd49dbef883a6adbbf844097ba0441e60d61faf331f1e712aec51091fb4deba2ff4fa9e9c7ac661e8962d34f0cfd32a422e163332c22b38b9fa69fe7f3bd1a18babd1d6977a7e843c7eb994af92d38fd3a976918fefce261793844dabcb431d83d6f +e961ca969c3ddb177dfd4697cc738f81ee1a538f1d82e4e62b1e8abf8baf70973a14cb6b53de300da0dd7cc1409b016abf0f50718f5eb3640a5700d90bf4f781dcabf53bec3cf64c652f40966df3784e36357c52ed8b14d50b9a59e0c98adfd798e2ca08987606b09c2bb7b147bdd0ff1a1f4e872044c671037f63d53ec868869993529e80c2ea09ab93bae379521608843a346db6d1a80016b6892aeac3598d48810942945f9df8ab6b57a4f1ffc56f7b5b7c4d0775cb42d5d731bba4d8f9d7 +db2f6cf0dc47a74bcd21396cecb60a30f3b3b874fc9759f24cf98f3300101db161891c86f912f1612a10e1015f85797bf4e7f1469064ec057a3fd0831723e33e0a95648a2746998f55bf503a7c56b310f5bb9de3d4e522b330ffe0a84787ff50e7293c429daf6c3e1b2f817e57715d29dee13aa9f527c5676497b32c973c0c113b85e998a904861b7a2b2cdba3ea67fa013e8a2ef8dee51ee75150698a93d881a0eddeea39fa88ea7206e9a3813695381c4eb4cd0171c9c17e0861f37ed11fbf +e8e9f6e48dc048f12f32a386ccdffd8b9421fdb4f1c0d23c89ab5a71c2dd793a77d51cc5ed2db1a0af23869e7771faf541305edcb06e07fc15d51e81eef69714f5ac96de58966bd83d91f03a8db82985a8b8eb7662941a1199ab103b619f96c002a74faf78fa8a0229128e0f6bd54f1a802b4d18287ed2c8e56754b05f82cde74eaf690da1b68f85158a537d3c2b235e6535d1325b891fecad415bf4fb38e0b215d0497549720583c5d2e88dc6e73bbd603fbc416fc1f7f8020763f03d5c6047 +ddd63eac393dc91e87e0de8a9c3eae1aa9ca5fa2f3ff2e249084f44bc345096e134d18cf2ddec38ec50c95a4a290c11b974fabdf2532d09cb73deecb7b791a89abd6e8027c4c9f3c3ec150e903550dd5455e0967ba0900de58638a1b082741914085520bc2e319d252cfad98701ef905f6ce7896e366c5e816ca7c3aafa993bba0f0d09f2ed71555396d77eec9afac06bee70c3e6f4c59040a4c048479924050ee1b58cf04892b66dab562d8cae179f3854e71007886835dc7725a07aac593df +c4c390e9dd001118be32fe9fa7947bfd143cc2c88df5fe03ceb507938c7c85ea2acdbc39109e3c1b613c26c54e1f430612f12c9556dfd6e42919a61e7feec1e8cab21c6e479dc1cf3705f36e2eaa190111e0e3edceb90b8cb40c6ae3e357e4e41f1bc332840c921c57a53a0e06249930cb0118899cffb24452172795921ce8fc4fd82b6323149b17dfe7c5887bbda58518f33d023308a67badeba6e4b18f6cc629104d84b8e417823ef94963255235037cddea8a3afd6be34ee9734c776aaa7f +d22a0171d42c13dd5c6ab34676767f5f307909dc25588c6be804db04b9269b8cd2ded752a300f1b3c8a3d07efa3f9ef972cfc4f173fead67086c003c7c1105bbc72074cdebaef46f720aa075eaa6786aa542f45b23bb572d757b15375888a09f695e4d4967dac8e8218150731cf490c70a94419f01187bf116d58fcfafb2e71936d716814725602bf1f912c20b67aa80f9434c9c275d48aa25959e11bcff465aa9dbffc19fa2b763f83c98979cbd8b75eb5a12cca1ecc0e6319ba5a2a6a00e0f +f5d650a060ecc195a41ab5af99c847b0c07f27ff199e8fa456f012f8410369df1a63080970cf66d1e8886c68081acdc82dac3b34fc9918bc71734e4f79f768120027e253cd2db4e6341bf746d9fdd3f9a0cca4dd86a926c050e555df81cf953b9a2e3bc5e4fd04eb9b4f0aa70a3757605d97f80c5d7f35e705bc2e631cbd8341aa7ab943bd764cce0f5343098738df56bf30f2474f9b0d1257d8514914876aa6261be2615390ea1c51328873ac4b8d5ff6bbed2aa7255beadc99a1ca93f2db4f +c6e4a8f10c91c0cd0c669e91b23eeaddd52e81ea80ceb5516804828e4c5c088102c0f6d1ed26ac6fd7c6973afb41e7ff09495aa60653d03c64912cad49bdbb57a989e3495599b390c0a7bd5b64e7cbe346cf755491f72c7834e8a00c0c24acea4b51499c7fc74c2d49cee7b762156a0f7b90c566c93d3d2e1d614deab0259f412026a7e5f81ebc127eeb618b3f808d1bb7df57ad76164952c8d58f5059cf09027ae154ac70265b6839894806b1117020701769a7505aa146aa5ac26defc7ceef +d5a8ba8491278c0a183ede19ea2625fe6a924d1c6aa5779fbf23518107cdef77301a11b02ba1a0f25592b34de1ce528744be79b2814f07929495f1c8a0c55295582381a46dd9b8fc16d3c4422a9693ab291d1c0ab93d89132cd129a99c0b2f8926f3235bc97d7dd1714e627d60005aa3edcb693d5888b11fa0cbf7ae696514406f220bda9f8003a44e0c98bb69876ae316482c225cc3a616abaf4d2a7056d3f560cc4399e220c6c10fdecf34d36f6c470b806099cd2e91da2f9d2182ffd641ef +eea2e21f159b710da36ed4ee45a68d7d05507ebd94065fe90ae4beed3557435864e9e532d49c7cfc9b15c05c4dc4b4024e554a7dc39d27aa1f0007a6599b5ceec61ab40e59da1561259eea46070179bac8aa6e689c384b3f188b626cbab1f071809cff62d342d2a4200b028cf623a55a8ce286d6b684cb1fd0f24620a1af9f2786c1cda887d7c3ec60835dc9324d67c7d13607740ce49049967a16b714d287bfff76669737a9262d052a341f833469a32dcf7555b370e76d6e59aeefd0de053f +c6d1754aec4a6eeebe116c852c06fab1ca32d5c69e6f27f8645016c02d11806dcd700f05481513f1b240a0b0d476818a0f1c8bd4a3b9f9bb96106f69e2b6dbcd9447eddf756bf720b6d0bb7eb147fdc277c5f9d061b6b804f60dfea66949d4689b0d5b7141ac031cabdb8a7d2b7704030272a5c50a1591f232fa6a4a3cb90de9a6bf081df339cca3b277447d80776fb7002f0edb7cf3aa1775638c450230bb39cd197249526cd743957133856951cd75d9337277a49d860428a02bd0553bd057 +ebcd0c58342244d0dd0e9668fa6de8490c0cb0051cb28e8a77e3d95af2e620ab656bd54aea0458d69ba45f28a645b7985408e92cd36e2ad9f649cb2c1eba08f989e7a151dafddc1ad13eddbf2148264134233f106b9e1455fe046e08c21c6630ea9f07dbdff3c39e0a651443b727a669f82baf36d543d2c8c31350879b425ede929c5a1f3eac72de2916384ccb14f7d6050e2108fc94841cd54c82898ff1f67ab276f2db724cbdca53fd32de539f0182f56a8493791d974d4aa400058b44b8f7 +d8650eb2774c8958a78c6e926fc1fbcd4643b70109c0e1853b9918dca34d946b2561b5f1e324869d9d44c64156baa27fbb195e82013a7ce9cf09ecc2896117340480dfe6768561946db6c25bf7609e681a95af73e77f570733ed9651e7da68d054abbc9ccf46749f31e48eefa91f6f6441376e2f25a30464ce6fc1b387928ecc2c0db49748bc9b76b7b7e08351148ffb61337fe22ce90c234ea189e9bc0f80fef879daf29eb774d275a279c1bc711d9e4008a1f8c89f5c4e36e934922c355a17 +d8e873f7d40afcbd3262ac20611385bee1423545d3c51fa7f4563bcf4ec5e65408495032f4cc216cfaea34ad6fcd922f93853ea49f43709ce76525ea1cd4e177201f04fe2eb2e93101bdb38d289b856606679badc339542dbe92d743ddda3970c3c7e41fbff65cd0608c144643d81209b3dc0899817160062734d5ccde8eceafa8e6d1e25739d61b8b0eb2b1985dc030b944bcc18aafdd3606932c2084ce402b56cd73fe508fa401b7af3d336bce643c07467ca6975f7ecd55f2cadffc03e9e7 +f6ca89963dff086dfc4412aac7d1fc97f7e4603bc32a5bcaffa00d4b7361446accb899680ef3092dc78ffd3081c2681851cd74d48863098661b5e378294f7206d3d64671db67aaa45030aa56dc4324588375f1a5978c90b3e762677fc040a2c064650dc088c1067bb01c22b3901700b24d9b4dea4d03a2d021b6297546403e6b535a402d3acd2a218462bea5eaa6ae7896544edce01df95adc9d5f19a2c1cd4627d7bd702591b695beeb0eb19f5d7a152727f0bc05197c3a3e8d1ea95dce12d7 +ce36f00f51cc8ff919d2244266c7c3d601761215ee5290b69a9508382cb150619e00342c610a0e89adbd61e89659fd31cb5a9f25a6555e6a1675b7eb6d9242900c75c8b0fc3f88d5b89a7b0b23283e2517fd05de4fbace1f022959789f483b67148cd64b66f04b8f1c3374d4342571d982318faf3b69de4318e25ca42db376ef4720fda0a96f9a2ff35ca8e714d9a2cc733939614a6d9b6990b202c45ea393f216cdaf59e20e30125e285655bbdebccbfb75dc56c7fa7f3810cd0c2e14ed04ef +ddb831657a05cdc2a69d84d1f6f05f3f05732d3a03442a4b427ce93515d4399c891d83ff2654f8a9f5c14cea0b3e6d691d572ba1282a60d981fa10402be2e5120b64749f664c901e1acf6f3e010950bf94891b41bb4a3487694c4eed28716b711388e0e56efd652418be40d79668c19812fab1056d1bff6e7391ac508d11bd5ba9694d3fd27441368df23522aafdb815fe992377deb5299d1d02e41898e86e1830a96f2fe7709ac25a61ef3dba274603745aafb7ad0a06be8b1c89736d68f3df +c39b89d3a03eda520a060ee39ffcc24572840fdcdeca090ebb2ca859c7f52c207826c69b7365b565472e1abf7c2bdea03133e729f92306a18e593484672537d0d453ae50840a6c017bb940ff7f2b32c0949d616e940fd6446feaac210a5737795576ceb761426671e8d83ec006dfee9696225c2b64103caca4662f42e34535b3026d3ac7067126be941d44f5e187ca74bc7748f2e092fcfb832d5bcbd6c002c19ac469caa53cc34444252a4963e534308a16da1e1154fedc61a4454e49ba106f +d487cec2dc71ae46c634e42eab156a03b22139c198f27a090b9d47cac96670ca4d97f78f644c00f3e5cf852dc764dfe78b9fd8d6052c5e579c15293ec34d337c68f9414d3bd9fe88d026f701f162bf7a5fce2610fae58fd28ca54398471c531fc57a602589ca6a908b1a30d4e12d9e159f9756d1ddf1637de92f1bf41a6a3dafcb16fbe8665f9fdde961793474525b95ffd428f1ac080f2d0c0612c7ea6ae6a9c21cc613740ec196f43159dc02400cfbaaa4c6db11c10f5457ff0bd5e77308ef +d89b57fbb94d0e32717694705e977e0d6a1927c7efde568fd2ebfbf9f16f2c99eb61c6cd7f9ab5f57e5b657b6131613edf628af93c7752c7f19eef6889c741077bfa558ebb3f69152d7217140bf47c39d4dc394a57a4893ad7af2c8bd650605b7f8e845f46084bf4b5862aa86bbf272a441bd3aef53a7c2ab0377b78090fd5b4716e5e30950309d9b1a940ff8c642af347d347de394301a5b306391befff56f0a6d890622995d6e828d82520bb2f8b68e691bb4052908cb8d8760809e0513e07 +dcbed000d99fbf7f58ae06a581490b4ccbd56ceffa6f6482a6310ddc77894403790028081628fd6e71c11b50146b205e7ea372c42e828cb7e8d3004303c6ff4c515e3e75d2fc90ce46e519dfe944bf321b532b360b1c2a694f16f6d7afd388de9f208a25f4644f69bca468d881d020e15ca16dfce30d77e13da3c778144c66bef9f79d177b2cc7d43e4a59c24fe6aef61c0bf8cc447aabcf8e45a573962897b9b4e3734007b7a92cfa453a3ed716561a7c2b851bdf3cc4aa50c99c47c2ccbd5f +ed83a3cb0283ca986436d78b465190f60e27e5e7ac4d60c1cb3cf58d892d1554a857291a44bfbf83b0fddbc7015d651a438844b47c311189c9326cac8bfe028e665c91c79a6235199317a6c6602a1c2d7c055a9fd38c430ad035b4ec35867101bbc5e03e0f90d0e07a140df13b9511f0ff9d2708d1bc8072ba3570846aba0da41813c4417ec6fe686e5513d2199e90caf346331fdd7df401fca606cd8b31465ac31f0f4822ddb05a2aff73978a2920b8088ab7da349288db53bf5494a316ae57 +c3897df931f5392a9d55a57678260d22e346658b520f3bd9a289d9ffa07c58db2bbbc0ad3943c50e6857019386b58c7e6809ce55a91c7f98d7aa65d39ffc2ae6de8df7546431957c2a0afb545ffb5ed662818cc74e7cc50a591b12b83e6a39bef6c02f727acf8cafc79fa96bcd202fbadd4d9d54cfd90cdc3c8cb7ba43dc6797d90460c3943a54ab78826ceb9e63a4203f35fdbe4d67d1ac03ef5d745cbbe98bb13f780ba1be2d4208c5e4fbaad8d9170ac36788db32d4790dfe0b21615d1d97 +c16658153ca82a660166b2207fd41b7ef3229bc87535bd33ac4a12f8c959f28df174a2963b04e492a7944772c02250df8882c65d03abcc64ee177ee248b5ff21cc3962475c67a203c6f5236f76593bca945775963f80df08706a66da523deb6b9eb2308cb86568b2b7256a50f18e858ae1b855e77e9e9d2dc805bfe4edeae1aa7befeaf9a3b493e53e278bd8817fcf25c7b8be9777b6b84a7bbaeebca22613fd65a2e5b337cb59905798d37346e4e05d290868fe22d943eff4521e06c430cb4f +e3762f7331ac8352d9eb904df1e5210ae9406542fdb5a176e2787fc67335c0427bfdffc453053b3ae50e9347e863c693941418b4b67200c35dc7c045b32b47d7eb88e58dcdb404f9c95efa6c77a18291b914e8c3befe5c79ada3552356c4f8f45f7e7ed686a6951cafe362f403b2c2aecadfc5567d10068e942627d8505249165e923a08a197d127e8b1953f137be96ac59d86701c165a630de1b7917b8a46288ad2d159fbb6bc69363e2745c406cb15f3fd7503057cbf440756705f6a54d637 +fbd286321c3891b1c22fb9b199c2a75e75f29fdfc2f76b14c82f3526062f0c4932305b08a7390d977beae70533e330e0a105ce9a2ea5787f94a5b21c90bf86b421586f842d49542fae95c78b3b6f57ff716a54255741b3c0a95b198c6cdcea312ca6e50800ddc34875718aec0452dd488f157eb028daf06c6fd58a66578b32483a2a09a992a88967833dfee5cad21ffa2a702a4da354b7e497672410bddb1ed17ca96e47333d251a61afacf3d2655fd74e3e108955db2329a7a2df9f8f64020f +e65eb3bdd36b0efabfe4ec4b56ddbd9c9baaf4d080a1218d0704022a11c1a2203aa74eb6fabd321fc7e016d05a250bc57c1826e15a883c22a0f43d7b31697c8774cb160c48d0291c6ed1ebcc056bae61f01adcde4045e9b6adc1109e4ada3e819565a0dfd67f7cb2a86c595d80ba5029f6a420236b558de45f5363390272bda970a9be56d68e14e59454a044d1f92f2ad4287c76e152c719dc58c91e67d6c5100ffda7194d8b1d35387788e0e4256c60f9602c41fc78b3381675bc2ba5d3617f +f5253bae754de43e90c25374e72bfc942b93b24deab2c17d2829183167eb610f77342f2b0cdf8f1b9aad8008dabb325e4594d865b15edb489b612b250486b2a7a30c8a91da2283fdbeeab0fce13722b848558f4e318e0eb96dad09ca7af9765363220541ceee6be68ef980320a1b5edfb0ead82e818d9888d8e9b662afdf65cd0512602637cadfd0427655428c06ab1f09ba38791a9f14b24395ff24be535c7e91a83fb668c400633e1405f92fce838dd5fd3736597b5db01d51123a8b13ef17 +ea32b5bd7218a2fa0e4d76dec233406f4850d2d5b998ad43cf953fbf38f8db024c568808e22759f042c8cc11e7824e37bb289928889f3eec26efb156a54c5bf6eea9c86051d55620b13e3ef1e5c0ee123ffc515e71f859555452a56d6c19a3e58f63e5dd5f1c95d30e53c5d9f572acecccfaeba2f24292864103f025e2bb6dfcd2fdcfb61bed7bf7adf1fad61dc56fa0c7566c5f2a29b091d3b22159a509ac698319ff4e58f8129512762d521fee64aae46c50ae1435c7470312b87941cba4b7 +ddeadaecaebed94db9d15252360b0afad6a6f1d24e5f5ae50f7f5e7c0e440f3d4fe209755ef440a3dc00009f316d3a28c2f0b56e7df7c63291ff09533576b5421bb8ff0b824fbc99b58bbb362eb2a7b25aa61a61735377ca3c40be60e95d3740d8b210bd167aca447c7e194e2be608bd7243b4eaabbe78f337ee9637009a1536db6fd96c7827b7ea498007124062c7a1d85d5d4933d2cfcdde52948d07fd58504fcc656bff1464099efd52c2145c2e274cce57025e2cd6d8cfbbdccdc943ac2f +f99d82ac0aefbb357d3b9d963c6a88e7ed816a1136e3f9da3e1c938225b3bb562bcb3f20d8afdd57e343b6eb426c1d6253b6bb058fb4dd9757b40b87577392a623cf5689f94e69cff00f9e155b72997f4e411fd55134705a169a9b0692878ce380cae3ab39dc4fc14e1b0dba8e533ee81e1f03dc912573e81620cf6873fb67624a227e72cd7a70ce5d9e873d946f887a683d32e2c3ff343a63f37551dbcf339432fbdbf04334738bf8b82f1a30dd2c8fa3c28d3018aebe84b851e15aad485f1f +cc1f276998485e1577b9e0245b4d301b027f5940a624fc66b738d4e9e88d503b8d8b764aaa1c4aef0b4781213c37a957f92697644136df92cd6bfd981257864043c08e8ce81571cf076885b9580313abb1a26b8a1fc5b4ed801f79d273b5693f039c8dfb2b3d656d8cdee9d6826645ddd2cb3aaccd164e2e7909d32b555595524d8e27f7aed8fb78890393646b8bd6e99e59af17f711bdf90279aef308882adee3c7d78c8a459f488790419c35bcddbc752564ff228fc08bc588290cd8b1aeef +cb35118ec7115faaf4d099de939a5b15db0e6a58e8b807fcfdfe88f84607918252874c215ffd9b74c7957338aeaebac1753633a9d7871950fe2898e7dec365f20092bd9ace7b844a5b4bd6f3361165dfa221ad8667daf82f1187d1d46f38f2bcf0e0228682e6daafbf9b4148b852ebe4f47e37495c488238e9063b022e6070e4a6fe712b20781e2a92178c7e5d248a0cf44b164398e08f80557f49c7fd22c33f604d86c6427a13aa292b13345a9e1a5e5f8c833f0ff162ffc00b8afbca94d367 +e9d363b4c0f2395bc8ed92e366cea6942294c1b6900ecc24187ea9ee107cda5608c59ea7298a63c6969a61de75a19f90c587956dc818ef056bbf04fcf84742035ddea1b43e72b633689edb934b3a0670d3c924c99710eaac03969817caa38a841d6a7efeefc08d24c02336d037984b3b03634b67e62dfebda6c63abd69141989677f371b84ce78034b833220feed7f71f3e62f6f23cc1f54fae0edc6e3f115d7e47d1b5054fb2926aea37b77bca5749f0ee724969a38ebb3fb7d91d0387c7b1f +f4fa68f9102f7b380e587a3869d2042a2928a09f366464887043fca4f748982a25d474bcc9705f6587dcb8db53d77b7062dce51f66dfa71080c8d21f3d9328ad5bcd0d6b9bf53ac4201ca04e5c3f48fb042012973bf8cac9dfdb78e4153be142a6cbabbeabaf117fa100c8b6a54f5a7805f9ecf16d640738e496a3e87b3bf4239d414dc2f226efd7176cf8c5bce5c38c217a01082d92cd23a191916e14f9df346a4b581a3d6a329e059c5f706a500e6d8c4ccc9f383ce7520e98e65d2faa766f +c7912b794748adaa216b3f9f8cbe28d7582ecfddd7f4161ac68f4a8c14eeebc4752857a111da79895a1decd343fe0e076e8fe7a8ef4ae0402d9858265b291fd8a993ab2a0b44c67c48c812ecb00f8d31c10202a44c58c87607207653eaebd4987ca0e9fb8d3e057df8d865d0fbca049c6726babcd8d99af644b9cb24e9b62f8a42926998d9107d52e064e73e222713037394f7767429e85e9057ddbec8fc83abb080c217f395b8b08c586505c457b1b27bde6368ceeec62a0cf645673173659f +d45c831e0af127d494b423676cd5eb5ba51fc03c2de1ddaa71c64ca0dbe2638860ac3b1de0d470135525d13ca50bfc5af8f92395dbfa1c0fb3f5ceb06b1025ed58ee3d9ce8dc6c94c7e8fc8b8f4c7ee9315ae8ffb1c32b256b205f02df10597a52fd153731e283f4802bd22778d936d0a264b0b07c3e0e1c733d10a5c3d3eba3c67373b6c044e1202d1a033bb16124af362438b22a04706819875fb359a42e9ed765ec585219d12453b7e3f8c6a0607fea4a3238ab9ecf9a9043b77864054737 +e7e577b778627edfe9bdc53cb7e1dcebbc98234bd49930d5a406809fcccf23b36f3f2f7a2720d2b072677eae289ecf2c7d9481ff282c4c56b36ce1089617db689960479abe7e0306a354f9c6cc7f2972ad8f2ab42b640b603a318ede84bc8b784a94a4e3d70f83f80b63aea4d828951e74e3716f0feabe180439f923d0995917936aa8153de28e5b21a527a2c5047e360edc1ebae10051d36202f19f795d1c5775a147da43d465cb57f1ac864718766451c7dff161cf546a9d40e3fd6ba0d04f +e4f72a2b7f31cf483ac9296abb30e35360d58094e00dfc3719b34c2624b48284fcc2440b12db1a456a8e2513f7b5580bee99f857572e815206d39acd3dd1a2cbfd93974346cc5dffd4ae9884e6fdeed63ec8db9d2349e8e11c5225a63a3997d93222b67e54699d3b0d063c1de438561fef8d1e4063171850597e767779c00682a83ba1e84b4f0afb902c2114cc05df154ec701373b809ec564620fe0e1d0da62260d3b2af3231d0f70d85e9e726db224554edb9611b31f0f5d9c2a58bf525bcf +cd5b90681a15fa447aa90fc66df0cd0b774d0b0bff2d3d5a3b0d4f254872d45bdcc5cfa5b8465ecbf5b9e631e955ba61318bd5e9cd6ec51b13eb6712923c9653a1c2de6032a5209baf0ee72ecd899f47911dc8648b03030f4170c34b33c16a3def76d71fba07d29cd3cc0f44145f4d3078567b6f54840e0d8ea2d4430063c7a1ba083c5fd18d6b1c574d10ae1fd02cf8eb704ee3c5cc9e859f27f70e8b9af6683111564dafa5c7326fd4b41716133a8788d9f7abfce4d4f9558723fbb849699f +c6528eb72a7b3c7a6914f15bfbf12acec65bbc7ad5e04a02485ab5f2406f0a194ef31d4c2b8d41ad05de02cf06d680509f67f7a75605b7f194686d6b340d2449e6c2792032f9df191565fbe203a7ce0b17a0d1ab84bbaa3facb719733b1fd6d432cc3da040ababe8b229c65a9bc5da47a5bdc02b8f7f7af2a0f8ffdf181a9d94142081086c4709fbe77e802012b913d93a6ff0b371a60b2bdc449d9fd94926f671c348c15bc2d807358646187fa6e2004b5e2dc8ce979eb970a744a197c27c4f +d14e1bcf8eb49e4841cec6a97b9a9996956ee7fa3dcc03c68b6cc9e6cb4aadf9ba4142528e28d7ba7cfe35ff35a8a48793fe7ec55370c1f75e693bcb7e0957bb25337b5fcdf95d691fc7994f737ec15d79bb8d60c71db8d69310cca91020a6f9e6827af6739ba6817254045ad0bbcda7279404a78db0bf40ab9b6f58e79bf046119a42c90050f47e937f6a45a6ed2ed23c69023b0d75abe97ec60b889537aae01667a33528b24e3aed9b003365e6d77183b3ce9df7e8af3c2d525f89aef06f87 +f30e6b546ddd32d51a348c18a436002b5b5b6f0427d12ede2fdecd0172fe8fbf4702c425fe469ef9c3988b7a90596fe583012d6d0f23673e94dbb143a9d8bd304aac71ad9c46ce0221f72d08d80e1ef0adfc298b7bacfd19dbbb4821d6fc9d3e12b06d31d1f47722b9ed2e126e505c3f7c260930b0ed8cdfbadbe6d1ff2abe916d29cb7bb2d2d5a5e135234981b19dc8cc31ac8ab6925e750153927000449b5bde775bd82331027ddfff9e989c398ebcd06dc2a6783cb310de49fe5fdea5346f +c1e514a20b5fe935dca653a391d29bf6076f3ed775c82ad25e131dc3ac2a6342840bad1b2effd0549f3d325e5ed297db470d8283515ed229bbfbce543a64c6b4e1c95b6cbeed50d6b988f2923265768d9284cbcf7e2b9e0005be7c20b2c5332af3b91c2f7f99dc944e11bcae54af280b68a096b7867120aace3fd66671de6c62509a38ade31ec7be8f37ea49fbc0f778aef3b8f0bf94a17e97b894427060f2194566d22d49f81bba41323f48f927bc0af81dd86911b7fb8981400a257f270a67 +f51913638454ff46da80ad5695bd13183ff748348cc04da12ce3005177ebc88273e2ef305bc3efb60d08ef09f296084435cdff518490ab41eb298a5106474d105f409a1d7d5f2a3c2ab761e61d10fbb30b8decea4d316d9709a2a7a592949df41a3ff18c2a02617ddd8d9ca38e41aa746752da9b11ae0c3ba8c6217ca73b1de3f6ea2f78ccd5c62386b16704c69e622a52373990e4cc2d92e4494a5d2606d0e6c645f1d8289aa89c191e77a84fa13b8c13e2429fd63c43bab3f9d415f7432b37 +ce8f950a227a5e6ebf4706ed11fb0cac4bba620de5796435393dc4430108b12b4333d53ae0aec053e9d121b67aa2132b947672c15852912471ca17f9435f3df67aac5b058fb94f9f46209aca9ece55e5f38822002d9e1152a91453341ec8635c719b74917f402ace763d46d43d172bccf06e9b787721853646aecba3ad1611fc51a27a5c2f2d08759b5c2e1299ae928324a1e2243c4094e3dd05a892a868dc233bdb5503d0d54030fb02f84a227c9ae5699e4b554005b3f2a7532b17ef5b031f +cef157760c4ff153223fbb585df66b34f6779bab20cd6c77cf0909cc410a542ea7ca3e549f99ff5c8c3e09d7a687afeeaa3c4af45e468baa04f55c0aa0f4524d70843482498ce7d72c5fd234de3ccecd1d9dca72982908cf56218fbceebac6dd19b7109819f5f1cbd53f99487804c0b3666e2692a6e435b008c2472ef3f40f77229aaa13e14904eb1cd2d819426332172b51aaabc0cfe0f3c303cd2b33f4e8770bf306fa98db3ea107d51a5206516e7ca649ee24d5b52da10d545b7e815ed287 +fbb19109b17d74722ae0d624faa5fadf199f5907f2c9982fbf7af3e1444745e5e223ee2daba9e127008763c06b7ee38c93b55e45a5cf44b93d6d98f6c7741709a3b8523c8afb674aef2845c7527375c5b4ec5ca76a89662361433bca35a351995a9ade8e9216d18f5b2e119c35b8ea887798e72c9c597666277b530339bcdaa59c5a68a50e2fdd234bd3718dc2615d200ee35f5c0283b2693fd72771df460cccfd7c32d3a95825d72eb1dfe7c1de913760b315984e76f681af74502683b4accf +db02efb5cb7224fd95fff83fb86b567f45fb582870215d77b962da3cd4356580179f2535cb50529a53f8640df54507411d23ac30f7dedc4a4be9ea1ca93e3c0ae72cb23f8dcfbf5659a718c3f17d675e056b2cdfc426033be443db10ee801d4a35f2f6718305c6b7e1b4cff29c71869cead6276603efbf724b61a7c9c637892d518188b92e227c6a262d6e37b6a8d5f83b042345104cda86577c092ed62521f12a1f7ad9b391575da859070d1bedbc92c1c65629b09f0be16786e4231af9cd47 +fb17f6aace9702d807fd52d5c218c2a7c3527ec633805d18e8d92ba5da499a7f2ccb59feca25adef60f9fb27960fefe42671f7b713e4db501c51e6d46e85379cd139d9d48757e120a61d97060ec8493eb716812cece3528b1b0ae9ccc81b933d5a5ee4a3cf7b1b7c9ee582aaabece7fdfd603069f9758d8f6b1043a9d9483052d50d67ed318218709d30c859e7def1ffb4a2626a596b59a5fca57a2214c0888943a423606a5c3b5ec9d64c494211522f70bcb5f51245f4486eeff76ca2d5f117 +f38471dae682f741254aacc60d1588c19746bfd875f686989983b9932e3bbb9f624f2783e2563a80118a89a8e91205ea82c5b129afd6e2238d433d44539f5ee71db57039611e54841c53b2ef9893d178da0ca9c98694822118971b0c533851b57470e7d435df475f10bdd3739a2633b26e8341cc31b3b759e689661a4e1470ad88d41e70feef56a7519d375fc75e9eb4c4132e146ad957bff1305376ec7ffac3456a7054e4eb2817c946c910851a45488ac6659eadc4eed3ddb30087667ae497 +c8646a7daafeebeb6da078685a440f20863c113a3e54731a5a89c5b5f6b48c003d255ff104919953545958828b24642afe4074d505d9063b7354dfe693bde9d974787b86707f2eac9ee4c50181c4dd987ca47cde18b4c7f6fff78c0c8bc9dc0c0440fa839e530db91764e6057af1210311f03b4ffffbb768af7ba8a9ce0e26de1f70c7de1fd3fda7433796268c4bb81f02424519e018fc31392a5939002b32570bc7d85e3780ebf0ffe22b25ac0185eee16131b48e3cf31a5caf1ea2539755a7 +c18649384b0b7aefd7736b29d43ec093a1da9f5172acf71b1b35e242c15616d64a9385fba1b75053220346646cc1c1ba6f1aae59ea4ca8ee30184920d37a84d12461eb24a843b0fe82480f63e33fff883fc766e6e16d96465a29bc3e15b0cea7b3084a09ddd5af8331647852c446faa88c9e759459a3c1c8920947978a1f2141c201b18c4200aff13759acf6de7031d177aba22dcfaf777086ec2fc6c0da625315989497d5c9c1b0c9f258b63744a4af615378b27161f81d034ced9fd7ebcb8f +f89259218c9ea20aaf7847c2f84bc61e3ade715193d05264f0c43bfc53eb489d11647aa4210f9d68358471e2c9b1a90267f61bee464d7b007a7d15451130d99c86f1756a46f885c91c13028b676d26333f788ff28e09a7b95d32e2ab5ddd17687d88c189117eeb08e8105d694bb16724d3dac0f0104aa8368f961458e45eda0557db4eec24d8ec4264fafa663dac1c7b6b0af7b45102b4bcd5ff749221dd70dd6924ea47f1f3c031bcb74cc057da28b4eb086ab6642a75f506cbc50963a177d7 +e05cbdee9041f1b2ba39b9c222a12fac67f0b833058e080a597e5a8bbadf507c34da592f7e0e0dcb46bf23f16533b00b918da91cbdfa3b089a873a9343a3486aea036bcf2ed1d145557aaca42e1e5865b530c915072f27ad741be1344c84f67850339c71998e532ab49e1c95f9bd61034dd9fcb39ce66c1a9fe3bf192df27cdf712fd08af01abdb5ddda4ffa64079bc8627d75af1842842dcbfe2b769e9e7c6a364e49aac2e92f57f8f8d1c5049ed23cd4fca253b8a8e6d90b5df578fdeb41bf +fed3c2b62a5b805eaacf57fd5cd708e32da2f3be8d9875acc58ac36274fe0ea175706a516464d03f4cf1791945e53ef6e821698c8deb5d0736fa3bd15e61186b768d729e957d8ccfe8bfc6078f62aabda2d38686a929f76a529259e00142afff70bbb49eacbde2b74ba3a74a5d8f97feec41a6643da1f521445609a8e4765fb286823abf18f4cf1f55042359857ca71a31d96b36ed2bbda2ddd436dc24b9f07ed820db61de18d668cd0c3a311593789c1d76db494d329af361314bbd13da7907 +d50df5746bde6637859bd5a4d0a1e4660f1648f499736bd1ec0a1c6a01c5030f74d5cbab8a9d5033dacb74fedac46112f2c31e41cdea8c87b5b0bc10e478958c82bffe750c1d36cb9a4b9ece4d03b35fe673a4bc32ad8538f4da5384f6d8c61df1541a77e65328861b70e56c8bcf03a1bdfb0acd7a67cd9daab57c61c82ba0f4d26e777e6ec4f8b567320ddf2b583186edbe4a895a93961a0f50361d8add340ebf3b8e91991ab92f7c08afbeb4b73fce9e41d985943c5ba0eea5ba106cba218f +e1da385a6977e8d50c049c5a27d680ed2f4be04cb80a546cf0a52974f5b1e89c5275e9b3ac32a5651daa46176f50d5dacc23dbe1636966b3085ff341ab9c9d89b1d837ebd8f9deb116725d63b5ade64fb0b7b7a965167f92bd1f46bb70a5ad5d08a98b76d196d5bec83b6ec49b735885074ad5e3e57ef5727f733506335c1d3278638542c669bfbb612a6317a1982d586b3aa712d77e17ae54459643cd77984ca6daa9b4e1a915da91251ece5e6efa37a506da5aa0f6f5f606874e61bca79bc7 +e14b4470884d01751a4a15a86ba1d7b48ea40a94c2624ea08ca75f703b602fed416d88c2e5cb01e722aae21ab31015c5301370f4119623c765cb60c70d504ad235ef3ea52b54af7e06756ba63fe047a55c7a4836621dcc5ee719d947d3bb4a7ed13e5f5151ac944613868b2422615e3f971ca39c0239cbe187deb881d6019dc1eb6b02381d7f8c45aaaf34eaa89a352e168ea214e6c7ed2d7fe901a2a2a99c43b9fe1f3e6b43d9b9ad8cd21477baefbc8f829114a78a28f1530beb900a993f4f +e9a9c1bd4a2efe3b1233b55f86c48cb66abc73d10499e285858b0c5bcf59cb6851202a21aeeb2aef7bb52b2b8d92cab77dc8c9262dd1c0bba8c5c1aaa4a850bd2ff3a8f72e80b3b84207b4fd36e7aa6dd2e9206c76157f702783981077cd8a65b42c2ad66e8303e3389fe24df44a30eba7ffb71b1c0cf95643c9154ea6451edd971e6be5bcb7c332d52f1908ff338a5e541e6afa0ebf5d8150f5cbe2f243aa737da450949c5367631e8d23549d7ef2b55e7eb51383f4d2b6bc2f6e0315658287 +d4e0abf564ca902f09f9b6fb96c1aa09c51ce1a612a7da5a2ba5e3ce841bc961a2d2966651130a4d49586140e51d5dfbd5b36dc1d6a74eef995476b0bded783387921a8c379c484540ec0f3242a274aa71daff7b03bebdd3e251f47a0e43ffa74d0e2d63910972c19e1c198caad67cf708b788d2a57a1a030a2793f88a6d7f28f69a755a2891dcfb28e7794b37d40d7b52b826c1377ca217feecbdb20a62b1de2e21ee14d075dabea9fa2d219e6532d1c061c9cf99b4babb70ad470f62e76d3f +c8c0c287cf56683822dad4d02cedd7805ea8707cb4875495ccd30f56f344a1dbc304d0175f5655b09a59f0223641659bd121280e8eb4f715c58746dc3baacd85588439685382aab4288c43618819ddf1f6ea4d2992d2a96435685f18a48add28073177bf0942df59924e540d3fbd67460bb99307c73323b2351a46cfac1d40aaaa09d26dd5d3733923ee9a80b6de8e3b84ae70556ee6215ee1214d15da62385e5ad7f03289fafd1b3dd6d12d02bfaf65cc4583fa347e4ceb455b57bcf2b80b37 +e5b37299ff6a9cf434c445a461ae384b4f5208eeaffd70b9b73706b88ab83e9af1a201bf7b5e852feeb75cd32953411e6b00ca0494299df87f35ed5d5b55a5d0b6d7ca8b6310145af76ff1ac93796a743d0739a8c4b9423a8f6662e59a157fd15493670a2b07e4c02594574d86e330005290a07fd4f7b5536df03c3967d3c79e2d674c49e1727100ed9d5f4fabadad2ed151a2b78b27e5cca3b2a57ca07e02baf541195fa60a9e61e087916a9a4795100773a3d0305cf84ae2dad543b65f67d7 +ca0f94c6ad70708de20781c3571c4a3b3647b62130b880b5fdebb065820a4e09ba87acab5e25ca80f868187f90f14019f750bd5f23baf8e069ef4c818916fa2e47baa8c8c08805a81b6450392fbf8a15ab1fd09d0288f5f64c1d7dfdf4ee06c39a8ea3cad2cd74c89a8d26112047a27150139a6f66871d4e90b82995242ab669e4ce83e024bd21f9f3f1200b2068b820092adf04bd7e39cd21e273470f5e5318578a087d6e45614ab15d70c35d27c2c432bc1dcf17ccd711c9365c5bfb31ab7f +f685d6ed96cc3f37ded8e6bbd03988b174210a768adaa6dbc929834fbbcf617136b23dd0d41222a4f7cc28a12cb7c019354d2659711f3dcedb188a5c3d62c279d203591aa36e8fbef981c361d697ec54747a972fcacfdd57e9028184eee6fb77e1a2b48023eb5a58ca53853b93005337487b2f3b1babd8c2d141c1f6e8c6b1d37dd2f1ba2be3fe01f9ee758e2d6edb68d5f3f0825a487afce7f85ad6a0f82147430a42dcb0857c3c8e674f8daa9344c1c61ce62e84927048e8f9e8454cfb0aa7 +c9aa1d343ba97a7648341c04437c2e7987b41e5024b7fa021d98c369c514da31ffa84167451f37024fa877bf6fdce6054ebd45b34fe0032108776bf5ba44558c3a6e6f7a45b322f4cfe66d4fe91b86f4563e904b1ce67ad41377a9d26737f70f99149bba10ba092b8e91c422db23cd419cf530164c6a3e2c7cdf368a22161972fb20ca0d982462fdb20f2701bfb9b2333577c6c26121ee0f422574b5fbf5b252cd16ff14d93257f576218f042758622ef65ddf8f17de75762677a4e6f01b1d67 +cffa9a9fdfa3f5cb2ed2cbb1e6c9bb18927f8df826193985e3d882d9c92f89b02f0fb6e76a26660aa5df0673fab55e3dea73fdc154a2f1ee42b6b0ce20c941ef5a1e976bb9e74dc58d4ee93df707399b30759f721cfb925b6ac95763ee4434df8be241fca4a30a0d768799477d5021b5b4e33ee7b79333d9df9be190921832c0efa0773dee3b7424d081cc63920d58abc0982343bce059f104dcb7aa5fb11533bdbcdef6649013dfe41e1595436883be677978cf77f5aeee2c539303e0420957 +ec6c7a5493aba720b4e4926f6244416a7bc684c82b8c5465891d6e6fdfbc02951c84f2655f9bddf9a50a9540e869abb415f5f1cb425e1d935f04c29f84ad8267ea075fc0745ac7dd38caaf960155abd031a00b9a12266a555bc36783308cc83f89f4b998f4f8e27ff600752a6f33da7949a2600c7f9fcee5865081d4f829db93b083e9fa0f7ed45c9c4e406f06ce43a8bf1805718ee8ede77eab5d656af7a0bbf266b4c63c10ab456fbcafe0ad679003a769d0a406aa32e54d23a8f19ed201f7 +f93c23d801d97339bcee28f591003aec1a17ee1aa1a063028bb01e625ce09b3c35e49d3990bcc847aeba5e1b8a1867d1cb628229ca8f60fe8301194d4df44ca7ebbd5bb6ddbd87ddfd0208053e04b2964bf64a3c402306f1288e72383ebe488d55683f33eb350a09539460fc1ec2bdc1f36a145e7f38b7ea7165033d3d88fa160d2c27898b51b953a3b3b4d9c50267162fe226d16029286c2e6b491f4e1601f438e296f3cdd2dc203300b052fbe0d6314108a31ff757313918a75ac9fac1576f +dc59aab3782a39464d933b550ab3b7f60bc0aa82d525060b88f1ed281d6e9f109d53f86eec14c535b9f9f5254430d5def3fe09eaed994b3e73f40a01fb462f48e3c9f4d30fb87b20522c8510f025895265631860a88bfa5ee2ed4689dc67bba35221ba65a8f3c38eba9b5803c32a7b01ef721e5691538e0a9bf0af710596fa608416013827af3a19ed28a9c9b5c0d9a5484c956e8e2dd150777c5ad02b0b5a1f00e7b1e40f8f28a34c4eb286c65e9ddc3c8ebde7cf2beedd51f3f70c94494b4f +c2992389f32521a2b8db79ec0b23351e3d19a7beea9666c2d373460def33c69dbc367100b135b11bd03299319caa5a63bb69a6488e081557eea1e7e3b826d42b860baff73a6326b8634c4209fb1d48ba541fbf1ea8e2fbdb5db31ff70c2c5c9b91a2df63c1f4d74ac43874f7adbf8a9768e04052c472f7a50c19543e8c9f493ce4bca31ce19f8fd5dfe34256cf0786924ff6808b910133135420bc5cc25252410cb6d204bc885bc05d8565610bb85609e2ff19b27400ebb4e99583d773e33797 +c6426aea0c67b5173d4cea761c0b6ed648d9aa3cddc766c445f3a32475f66cc901515d89bb3a181121eca42f88299036cf7b79ccd66de04549ddc2f8374df30cb67ab8331959465b6190a34eb07b84f845c8f10d85ccc6d5c6caefa0617bc4c1f451096cea988eeacd4966c5ed6636d783a93a683386ee045f96ef7a4a43b00ba4e16a2b9baf4c02d6208d9f797c1df60c97b0cf6ce6d780af333ddb97931c2cfbad38725fdbcd1c479ebc37147d647f65c2d0a4916c77129971b32d381a9837 +cfadab30ac48e2c376b25bdd375dfbdb657f211c941a3e1ddc9209951f477bd689d142336111010eb41950cebb9ee318d403012170d01418678bce9e636e051fba8be49e436a47437049e051a20599e0441958d57fac1c0b11be7f743734466c78ace010e31809ad5fedc0641b3ad0e60ab271e18c90e185596b2625277b55ec2a8317fe048bd2610412ea73677c073f1d38366f8e7e8bbd3eeb8cd4ef532222152f5e0fe6776f619beb49b9c89d1e99f78a84e6459c46dbac0907803f586657 +cf1fcb3b82f6d3a2eb93b5620a35596ab2424383c016a253684dad7ad29782d395e903f85e5c4515fe81042e484a92f970605fe86d33ce5ea0f3f0092083c0325eb4fd5b79f148a9f189928092ffc4eba18669276de4f203f70bf8fe9d73c1107811da13b868c5d4a6038e489de7b7dc1186cefb6839777e8bc5c9411f8ff6179496b4cede65270b272d49508d14d8bf8056086d840bd7652f705bcd9348375613fdbe684942feb6693be3402de1f15d517906b4c0673b46e90970136ddb627f +f19069e7f726705c7d759eca6b2623b491d8ee898b85642533356910b1cacff3e8d11934db076b465d120ce45f57ee5db0977ee4a41b0895134ffa26027e3efb8c6610d2418808157808376c4cf3b8f4567d23771349efa17fbc845c7e23ed28851b6658dd8a3cf2a883c7a503277064c32222d850ca592b5743d0b0271358cf243febc85bc233ebf9ccf32eb8da16257f20031cf58fc110bbe3592a1ec7ecbfd1b7eaa8c5c2f091c6bd0c2ee8e5bf3b2099173bc556baa703c08688a4c4649f +fa76aa2a1a94949b715b6dfbd4ecd6ed198a7c86665751a7945eb5f653bc2c0b6ca418da531935dc1217fb7f96dad4cb11e661ed11092d08725b6983e165b81f9ca800ebe7907c5479a4594c1bdcb2baeef49a1d8557103c0e966d6e41fa2c89ff4db3a6fa41c9dc1f551f5ca95b379bbb8e31b1a5d5411f8934c2dafa2f7c93cc0428a76f2dfce7cb9ab21b4a6a14d090d687dfee3baeeefc2d3a314e1c0bcb29346332b66220428e28b19629397782178bfd60df0cb4be031311cffa039337 +fd080b30f4910e0817cd31bb0f9e0164b8ea414e166919fb15d4b8773007619beaf589ce1a09b4a2bd9dce48175d808d36d5a1aae2c6c7e630e7484a85408af80540281e1fdf0e3197bb7a4ce51563d52c35f1fff0f60545906519e64497a30826b78cb6284bc9ef05b34fd2141ac7adbec622bc1abab3f189fe1bab20ae8e4ad4526c0f773ab4cac6d0c10323865a48381efee59b67b7e3a8c702d2cf0ce09106d5f7646b275052275317c6ef08ac4727974f85a87ab665512ac4627729b5b7 +e06b7a8b42415aee628d393a26d497c9ec54e9c4d2b282b8d7053f620aba2d2939f5976a0f371088946114f785090baec8d5b6be55a67432ab1dbcb6bdeb186ec4177c0d1ffa43f49174ddec6f5b7b727bfe3177702ed2156bc61c52717ef0309ce825a2f8e537f2a66ab69ef0a49ebed6e80721c44672f055e911180817b9597cfc57a48a76a6fc2528fb820802f142bbe3d374050366a46db4d749e206353577e607512942beea514ae9b3fafed8af9951c922c8047d787ef58a033176b8a7 +fb9fccd155a2fde2d3eb8bd67e0a8a62dd2a9b9bc0f0ede219097d9867b63ae7b0ce844ae7758a6836f9c631f6a0249e583f84d74f18356ca555d559c201f8c92c7b30d3c60e103e64ecb6763d922860ce32e9564315d27241989e479505cedd7b9ab88bf27c75e9f4e9b55922643f7e39208a3be5be2145e753b700dad1936a2dc6b70778dffd64afcda774c855622776b2fe69779bfcb5373983b3d6d75448ddff18485a57259fe25bbbb405e30e33f59560678ceb991ef64f47a855a05737 +e919666a7fd2faf119bc2ad5fe0b7dc7d51656a1a57e4ebc252040ac8bcbb2899b864d3f33fa87de4fb7204e60bc28bb8c12e9cdc964b5add2098b0d8f34abedc8272fbff39ffe2368f83bb720c27314f06bafed4dfba77ac2edb42254152aeb69a7998ae0c6eb32ca16337794396771adfa762814d6b8b7182f47cd864b063edda215181f8da5c0bdbdb6e0d00ed269749110940ace47e25f7efdff4211b2e07b2ce9876cd8e0555773a5bf4d36fba3acb87fed3821b51d6cf49ec48b2086bf +de8a046f52249fa5ab9f2447f51193ac0bad8c3625f433010b05c43b26aea01931822c6b8371c5a487ea84b5b7d30af75fc3ec1a6b2863d32951360be61e91d613b8b17f9e52fed48d6162c94b7ba6b780d89cd42fa27555a2215c4e3fdc79945da2a06d3b2530c193dd9494572b5c1dac9e8a96644d0ea3e04752c8445c13bc7f664abc52147934f71d78659f3d041ff10ce56714f217a4b5084cb883a20150ce2f684b436d5c3c03bdd2cb6d5a96eca4eb80a91698611fff9d2cc67132052f +fc5cd8f1786c57174aafbd50946e8d5b8fd90cb4e2797c6601256e4bad2a6dcb6c6e42fd8fe425920f175a02454d9a1c3001d561bf29e507f401001d543112793e5e121eb75d7c8bc887ebe7a5e3b17acab2f85c8aedd43078cdf6e3b12177a1187003bbeca92d8be0bcb048630d4b5c728a73db34a571f597f33ef0b632347ef2c2f737782b0c4111de6af02800ddc6d0e0a9d550ab3e78387750dd74f99c1840822cfa7cc3188878763214e30317e1e2f0b4a0cba527e4fde39521964e7d37 +fadc583b87d249834b8d77447061ed8f1510edc687f03c592ead556118f1447af98854517292220067fbc8949a8eebbecb1e3bc0de58de85698a4947f7da9cc449e58a32ace3c2983ebc6099502841b9a5cbcb301da98065f4b7fbc6138d2b0843589e0d08632b8d4c5e0a7dae2bc74b87b2d7f9093b347fa073567fa5e54003045372274bf6d1240084b753015ac1789fe53b33ff74a4cec70d0f1341c31abd66d4b341a2fe69193db890fe9d848b7995d7ef1466235f5d26a7941843196b87 +e83aa1fbe72170ec82a41f64c0856e4febb8675c9c5700291f21f80207833a28246cc97ec7eb24d344bff1bd992150d6da74540764c1d8fb9b07d7053324c37b4a13a5a3ae9d2b351ffdf37cd19d2ec49e3da4488ef2b6d90ac79af772d6c7e3cc28b032738c38ba67d99e4daa008c3af3c9ef14e43f358deefc7ee43e6b19d864719b66a310d3e1d34314a40eec6d8ebfc4dcac2df144e15078e372c11ebf2703f4a78ce032cfc516f87bffe7f4e6ba584485c623978a4e46d2876a330129d7 +cb575845dbe612125f4c16c5ea7b67290e51c8a5abba8c9a267203885a0955d420f9766f5b2ee5d8f697b103fd36a8110fdeb50e66064824837c78aeb9d259ec5f2456f8eef33ef6e2e69af4a608c180349fb65ebf74577a0a48bf1cf61ee2b2aebdcd4085ff90b002a216d8b86ca26c0c487f816e29f263b3c35bf7e82c2482f76c04a17f4653f505c1d649180efa4f0d0d02abc8a3c4c5fa93f7899d08b650c4b866dee7dbf95bc46b58603181dfb996d999a1bf2da090f18a396723855587 +e220fd8a85085359f3bb808ae9e5d5b2ecfac73fe79378009ba401136281022e355d87a830aa48d30c11cc0ceb9351f5e63bc5c2a4617c6292e19a5f2bdc6db61ea7c0975908d4734054c0ca417f4ac6470e34c713499aab1401bac7ad4d26b5e0d07ba1fc4b33a665ca2ee2d066bb5290ea3d92acd3fc5e48bd3a7d915a2703be5960cd86bea871b01137844ecb386cf2e3855ce42c513050f8663b98bc839cbda4a59249199b269a03d3f247fd5928ac6564c568c75d66bde40f9f0a29de57 +d7a76d59a17e47ea5ad1cdd3916f49f9b85b189df7dc8b37c516f88cf10a9ed0614df6eac384e37f23c49594f6d6856c14b44b310cda92e81de2acbad21c3eb2cddb22a168e775716463b4627eacb5db3a99428b68130e5eaa79bd69191b10bf9fd864ca32aadbceaa9562c94c1697f1e2431ea36ca36b0c82343763d666b2d99c2985aeab7e18969afe279b9b012b9edc8748c39b055708d0d311ee60f69f01dc9deda085bbca2c6b45d12a6fb37ac75f1c8c6fff757142be9da05b87a4c037 +c41373429f85dd326b492350b9a658508cc64fb60e0b9011b0429cce7dbf8e989a680c574f56acbb5e42318e8b88052e6ae16dcad0dbf79d01edd2666faf0e6e3bd8f9270a89ba2acb5526255ca7f10da467de9e057e435e3814ebaf9f4042d34c1b352bc694f83a9f1f7d0a678f2f0fe00045a56114d75fc869e67a433e9978a484978c1881372af104e48b8e5b4300f8cbcca35eec7aa3cf50380b3d5b2bc5a49eb42d71e7e1a4d9d4c2bed84ec5551cc37b5442830b5e99bb90b7e04e4217 +f176d6606de88eb76db268964f0bc68485d7953faea2817087e05f957115bdd33ebbc63807c10f0c641fceb227922e3608f4e7c821238a8016b80ec74834cd330cab0689f8af76236d4f504bad8f104ecf4fd3bbfd4fc1918ac1691039cf0d0a7f36d16a67dcf800fa973a627f8a4c79bd0dd38efea5d6e2b0595ee225be3883a24a3b81b608e5ba62d25d295fe27da24b2a4d5fd4b5387efe0b4fc3261d9c46d8ffd39e66f890f964c6308eda2678b9a7a0698a4084a318a9b30c5b6d587837 +d2433179f2a090bba102d83fc3891c652b85bb4fcdc7439060771d17a25436b659a81036a012afa654fcc904c0ff5ec5b8727f21c9daef5d4adbb2bd83a50ab78351aba80188a5e4a20144a29690253f54f3b8f219471aa6aad9fa9340f969f3c0c0b40cf9615e7ecfc6e2b1d4ac5535a3babc3f201127aa5e0fb724fa50cffa418822d66214b6968b27f38700ca891c3c3c3cc4716df2e217c57fdba0395a8d791daf89b2cb16f492d71ef55ffa9669c6d6cb632cccaec5e8e1dc829823fb9f +c4d375820080844a37f0d7555874672b3c4c9315e43bc95bd8855d01dc2b6afcdbd74e025312a00de7346ec35a9a39f02b3669f1824302634b14583bbfe03ab808c08e37246828a2a878a1fc01e9b8e2fcb2621204c00b09326025851a39c82580ad01165e162aa732be423ababd689b45e4ce1426df9214c4a44cb6e077fb2ec76f5f1c6495445b806f6cc42a2465a07c35c3a74197fc571d12f7a79dfedbc3bddf56dac4c66465c4d4b00a963d679af81852876b393a9f9e0544b88d39b9ef +d9482c87d05ac2c29bbc308f445aa9548c50e85308dffa8a7a5447f66b380b19c631818ba3b088294b7a71fbdefdcd3b1d594c50d59aae341031e1ab78047c4d6c7da64c8cb3e58526f19c77cbcfb87be2d21f0b2e988042b6a633396a0277f0774fd855c0f605bf4d0a5bc6eb1d39296929b6578955d7ecf164bf1a2a8766cd9a8022686907faf22f2f3e17ebae27d12a0b45c8fd86a3435052a9097c94ab6498936238885b78bce55c58416cc93455502f07cdec8296d9826ed3d83c749ccf +d7fda64b53e2aedbdd00ec18b27ce50139427a22ea5b0c7fe6c765876bd8f56280cb4f5a7f5b98325956cb2e9fc73bdf990a90a37765466ba8ec40ecdd828cf62af242e0d19f218214c2ac970435fc572b37f702c44e35a803dfd658be89271ba40379458539c2d0d3ea86748de0ecf4cb1493773554eac7d08a006edd101f937f203bf688d22a0180cff766cc17694f7736c853b32cf6e31cc6c48c0f22f4b774a87d6f01960a6ec70fac821e89769f86e92e012ba7d8d43a8ad85039cbd0e7 +eb2ec43f7ce9912b9e16c20a20e290318810b3575255fbc15a076f460ed82e8f56a11aaea3db5db75a850cae55f58c173153330a2ad85b8297432c20eb5f11f32dc2d4c9c250dbc396ce74c053472f6560fdaadaddf8d4da4445bf9d4f2d2bd6394bd540a42da86c5f3f3bc5ef51f142cae3b098bfa37b2fd0709a5d901fc090ff876aef6cf5fc9d5b74799132c0b20041f673db71508bdfe407887f277089d098524b260f370298da29ac1069849eda5806d0ed455f75e85f692cfac151d527 +cea58f2e49ed38d7c64431d798babd9c98a95b5eed3b5a66b31088d0d4033569efd391791fbd1a103fa27eaf70e64d4e85ca67a4ad4c5d07c8adccd603c17cea7211294ed60f794e56d5fb5a67f92bfe24c1b41cb57aa344de4d095fda5f8fa78049e9246b35560dcfa078460ef6d9a6d690966f32dd275a58977ced0ce88ef294b9bb253986a9a76d6b42169e8dbc4ac887cacb15bb9f5efef498e16c1eb0a67810cdec72c8c3273ed38a4bf02eb37a7e5a113a6fe724881965ac3723f4c4ef +e1f82ce8e3fbea2683c6a4ecb7665e6fbf25a3a9e7e18e654e1e861637c3e39383c87141861cb482e9b771dbd62890f89747b225bdb54868703ae504a1ba4f13da805409412aa9ce2488599481a2612b11cbefc4134eba3d3248ff7086977c0d8dd092972d517652e5b56d92e31edf2cb265e79f2e438186dbea26b9e440f5368835545936addba76d616c8722dc53a6c19797b195df00dcc977fe1cd601d0fc724df34dbd2e095cf3cb473612ab333530f7069240fac164a5327ba770e41a47 +c254dc495ede5abb246a3ebb93791602a4de9a1d2e6fb701ab7575b2a0cedb8e9f3fd689023940e0b8e209ac3efa45645562c047da5d9ad61e6ea5a55cc204b96b75eff6520b4fdcf30a0c3963e3d4510de1e7f704ca9486dee75de1fe62dda29db385ba303c9507179adc65bd15fd1ba2a0ca3853dec83cbde294891e768eb2c0a197bd3b6a0f3b1736b5cb90c89b672aa9a1b47626bfec92cf97dde4d137358c1ab417e185ef0ac2f6fc16164c529fefc7a762066a9eae827537e856babf57 +c1786dcabd1b601607d668d5ce9cd78c4f3ebf5a06b429b409669f0a22c7b7ab5164b0cf9988158bf1bd2f02555ebf3e9da7f875672b77060d01c431080564916703f062cba25d6f56c7e1b1f981ecd7ee68fb210e468ae7061f4cb32abb9a26ba442a7f8c55c3092fc080885cad0e548ef1be8650d02756281b96312eb836d2f2abcdf6dcfacd8b421c04172c0c2630bedc3fa14b9142133725714cf741757b24aa675e31d395920f2e871f299d9ddb148c987cf9d4cc9604e14061444dd167 +c2b02a154a3ba63af34fe7895688d678cfccb6fffc618b9983c8d9bb76f77274c23bf2354604872b87aaf075f4a6905b09aa5c8c02bc6ff7abf26ac79e1370b99b9baabff280589f7d33890505467e8c270735754b696433d651a9359c228d63af999493661295440bab8b55393991c2b259e5569ffd4f6647c5355341d56cda8607e56d007ac124e31cc1ac3c6bbba85e105dacb91e6a568894c0ea570e6a9b1e20c579c596d3a40ef0e6fffa8447c92762dcc0fab86d6039491f398447f057 +ca23b5287aaadd70e054d390763a08a87635edc268003418eb89e79486a6f2c3cd7098c332a8554010c689e24bce1a33ccab46facbfd6c38fc77e9827fb480b4cfe8bea47a23fa08ef8ed986e2d5d886bc06783588d3f756bede1977598629098a1ce8c3c8750f43cb904461af6f6b9b7af7f0fe00071699664069dbf435fe1dfaf4ff1f8ff09cf76f5b6be325c327aa4a56e9b1fc015f31336df204581f91a7547673db9b16fefcf3d3201ff4eec5077d56de6bf477db19bd2a9ec4051602af +dbb8c4e659dcec5a7e60b19f14e16a960d12a3ed30fe652a451ae7ef0e990bea3f91590c44dad34764e200e98cdaf6dfa054d81ebb18da0bb888ffa5460a62cdc7a453060d71ec0c1cf03784a41b65964c0643af643267c04e8ec9e1750f5b503453b2e44a7eb4e7940fc8cf3806692fe6de597a331686ddf4784caaf8679592d9caed42ec5740efceefb2782a877266e0014462436adbdd3ee6e4bd20454c83f17a7740c06f03b3c11e647c738a27348483e106f923ee639f1874627c6d8427 +dfe7d90e3a95604c894092ad0e6ba5070dd14354b27bede770cab332ce7ddabcabaa48e19e3ef9459e89cb8dcb5659ded8c3302b6a569878cd14538c44b1517d8fd2b3df0a04e416bc00093a8541f331ea102a0a5f683b13c8c3bf52a563b27d53f3b7ad1a52dc03dbb386316a5d6a878a78c6bc3321bfdc86d0d83238e48ca30c9e161fd868b1a0e45989bb3baed635170149885090704f832c8cce9d9d7fd3f686e14896b0c18a5b35cd049c75531e7c22ba6c911621cc722ca4a11163833f +e1fb66e73e04a263f6103b1efcbe8f036d848f1590f3a11734121016a1eda2e13e464c60f34ccf3c34241c48a3c4581822bde7a6b05b2fb18de2206a1f1128083076ec9ab591e432a52e5e42dca759657456dff043cbbf00a6b74f6cc5b84d1a648b9fefda1a37782c6e11344c653a9323a730758bc77619a0f128853ed23db2642129374205a30aa994df5cd2e4680d3f43db8c5e2e1fe237b02505492825b2115cd9313cb20614f4678801af1985a89a321a453dfc7c957bd50763ea3d0917 +e853bcefda971f7c10f6ca7a871a77c92c85b8b35c3bb1d411e9e4d4233b1a730487cb2c989db77601cd8e92d70d961ba1dbf14d421121e1918d0aa4391b107e2bdb9b9cb6ff3bf5f3439ddb4baf302af4a508439781dffdb5f29b91bc60e34867046d356ac479b5ce23608f3ce4dd917b91b4621fd10de368c13b27dd268808c4a689abb543cd320545846cd41ce9bedd0b117ea8d42c56fa7c5e9e11a102bd45376c6ee36f0336cfb3185173e9f674ee630d533aa7db9868038cd4d1c8a46f +f0047ff065a7fc83e4cc85ec42e424dc81cbffc3b5a7bc52529a0ee118b8341af92baca84c26d38d74e53ea0dc97375e15ea42feda62f35998bdcbae129e789ecce8fc94345b97efb2223c939f5e00b57c6175e344ae5bb81bd82a03bd30ab3e2904a1da195cdc4bb6c317428e5d088b0201c6c6fb4013a79fe8b33dfc070f244c92113849885c7c02c84e98b2b3087f87c73423cb866255d6de00ca8f079c451831bf050e7fef470977248cf742454882c95d086c5d9542ac061fa2b9b2813f +cd4eff934216771044d0fac781f1213ca88f250796c7ced50fa27c482a7b06736ac426e50eaeddea8c192cfa63e99a910664250b833977894972e1c76a1ad1aeb131350c55596e5513661972a73910089a81252bc5a8e94cd179450b9393bdd16e25468377d2f8e58b24db988467bbb372806ccf08fac3b0690c449f3070b49b4b040d9bd79ba622dc0e126bfb951c6e6c1fef633dfa342474ce111151a34d3503734c822b630f3f75e29fa144c911c5d891dfc32f94f73d869be061c34422af +ed48eebf2eaf0a0e1fc13e1e92e4f925634de6d70608591b50f4d47725f53ebaca4785fb729c39525b6b96254e7d66a8c9f1d05530993d123a163831597681e1393eccf34ddbdcee985bae4d746a902a6ff6c27358502b99d4b11ddecde6880e88f8a599d2bcc865bd84b5eeec9a219e312b7a3f1f62d48f9f3e1f7063e99f8ddecb1096f9cc8b04d6934f8550bd9485451e5b61209b1319886b6ea9dc919feb7cfbfbc0d4b17ca19e98109ce0cc26cc168b8320b0d3284f580619b2aedcec7f +f4b4892528cbd3fb5544f8d4159ee5d9a186bbc7250498047922ec3dc883e74485c8932b1636c7e85265f4213f0993a1223da2e4146add5bd4bbf389cf14ff7db33976ff4d195ecd233fbcf09d8e3d627d13efac0c8f41ffd24bc21b3fafa453f551ded76b7d231c315b70938d33ae7c4444e0785140da0f738b15941b51e6159586f5eb67fb074aecd694eeac29096712fa4138c77a6d12eb683bd726c7c959fb3b5594cae96b4261f1866664513074152f46cf73018ea3f3f59ad36f9eb81f +faf7a1d58c3d2a92f1016314b3b5b9e135c7a488139949c6c14888f58bd556a23eaa2e2dad1af3c4f5542c71148f0adae2b21cd2a91a21cbe0ba2e275820577693eafa3462f53f637f2cb179550903455927a3c79ea2f3ad1872c217a66348780868d12f7e9c39bba584182014a1c614208c3ec6786af0e195db338fe1a0e9ee0ff48b6cfe140b4be51aaf02e0e80f90c42daf17a497fb2eac6a25bf13701142818dccaed76ad2ddfeca681082b2febfdc952bdf268e8649051ee9a62f44902f +e64a0e358bbadf27081781a6e494f1e23abddb4846e0934370ce2459918afe77420e9686029ead621ce1a55a03c597e781789456bb83de03198ef40866537b817db87f5ef1abc106b94bd6135addc5a211b3e748f7e9481fb490bae327730786e49b39d201b54a43be310db2785c3a93a5dac4b67defedaa6d51fa084519891969fe54369d42608475e7ae7f92287426f7812a1b217fdfd46141881e0858ca2c56b1436d5a405278f8734477261732cb8f5e07885ab17dfa30d07b962e99dcb7 +f647afd3e6617eec3e5784a43556226c8a9abc11d0c5eb7a91a4b89226fcac168b37f472ad96ce9fefe6c26a8543dc06489fd3ad713ecbffcde569439b8d614416529f2216548e3dddba0709903ec8806ecd54561c606ca9da59558f9ad92ed07ac859970c67d9858a62bb8f750b291ece1f74ff9b880f957f15f1da270001471ba1bfae5010cca86e45ab27e1fc3ded11c525eb20d9ad0b2b9264cae6cc89b97d319565642cabd79175dcc9c00c7ad5ba5be63fe9fb4c49e5248475bcc837b7 +c831d8111102b003b4cf4edf1d84d33f180d8ce86f91e59006304ace6d65bb41e4d1ae84751b5d9973c3a5f6f683f454671b72534af0a4b796ad5acc80f53ec485c00ca27750c875fea802a25683e0ba4d4ff40b4bfcd2c666169569cb205136c344d8d38e4e11801d735745846723d4ded1e967b8d255123ee9ee3a842f3dd3b668a33c90b92666787181e71642c056883dcebf8a755351ba76704db29adb801904b53bfa5ac362ad1d536912c4c0a2dac4507df65c93bf9bcc1bb4a6c679af +dd8258afa78a59db3a47d918e2e5ef22ffa6797ace2a0fe34f8c7c493602940a8ee3bc07895f455234dde9cec96e028b968ae19068b9de5a7b50f1afb8db1f28e6ee748a55eecc7ff3bb8bf17b73e19b7f8c5709a1e848c585d380e79b918066e5f5da0f4af87c60788ad9d666ff198b0155e1d3ab31ffb4796f554573b79161269b260ee211d4c7f8aaa33fc64852cd8146eb656b9ace8998f599ae1d08a879e6ee21546ca15eedef3c7e6b881a8995ea6aa6dffe55bca99eb5340326be2ecf +fb93cfde09a60400cd24d57bce0d25a50d6d5945ce003ae22479218f69e218cb5743e73c0d88feb58ed55286d2fdd2cd1852f6f04f33758dc4f6abdf07c6d9da237832ef3aa0103ce61d4012fe702661491d317d0de1c2cf35ed4b5622c1fc50464a86c010fa06f3e76b763e656dd345afdc94b88b3eb9e2ab131f8a1f359407dc1edb595aa15ba9d79da5f08fbc25350f0fe9c31a103b265e56d137ff97e69359ffb389093bedbeb0d24b24930259d82f419959bfaceddcb3020f7135c09717 +c6da7c5aa08a17f7d6c0187e35f3e56d8ac30225d1aa4d447c4f11355a4686ba1207bcb605fbf20bf2c4d4a81af6d1d1bec74fadee5ac9c2bfd60102cd6b3221d2fa47b48fa1384ee3f36f3546508609066d1a0894cbb51f307fb26db00aa05755e6b46ee89b7404e0fe49b660283b00991b1544adde8dde7c14c137df328b406e1ae3c9e34dce95e2dd7f9cb695dcf4fcc11e7ce052feda1e0eb68c0bf5c8da0876211d6d59a66494d29962f0392cdae66f036b779cd252a6515b366ff26d8f +ff564e1682f1d8458cb0c98167adc9b6ef10b63022aba6ca06b9bed2823286fef77df68979624390b1e31310775e404ce98f1600cd80c45a14da39e607388f1350e21be336c04405acfc1e9efe3dea1f583b315d9af07bc2c7836c9dae9e1f4aa3c5a1d881cc6eb0870d724779669a32ac4e41e6d69cf9ad8db5c0ccf1479e27bfb33e7a7b1006782f5c2d9e2263c418719fc6ed83b467572d482816df1fd3eee28a17cc957ee8645a6eb7363328da2c127b881d6e976c3a997a24a46e141daf +c12dfbea391e323460fcc4939cd5278e8dc08791da60b109464043e90bba9aa704620f02e18d8fea1f659e3b224a11d12ae12d7deffe4835b45de19b4e090c4174732bc8371d3df3b13896993d8210d90ce248f23489c25a3f14276a0f98dba761d9fe5c7771b2f9636a89df189d9e78e46dc97726a5a09252b63dff2f949b919b2e0565c3fedb171118651428c8bba07888f5a0222b8cf687d55fad4973e3dd7544f0e2b7665f6064584d7d3171641daaf938bec3e4303c99fad33eda7d3a57 +fcb9ba10d44206794120a44245ffa86d34fbe74963f4cc648edd918ae86e30fd6faf9aba55e478a1bce752cb5ccd633d70c3b3fde38ef08ef7b15cea59d84b3478e5fce6518373cf3354d1d1365d3fec5d9da80001efedb22d9b3ca3d1839d2d54159dbc9a2287cfc3f9a9197b78a70708c360608fa3ebef9b45e3c1c4e8f9a06aebed3f07cbd65b23a309e90c3221597fe3dbd10bf6a08c9931720ae6f3c1602d32334a8104aeb1a5111eec409574f7bc5bfe8207ce1f274196486f57c7d957 +cd531cfac2a32c27bc22383d5269560ad17217cca312f15c3077a77b1a681b9b26f1f135a7916f75bfaafd9570dcc548eb589083810c37e252f520a86ae0f1f00b546807dc0641533cf2cd88a18c75f2012836348084c307379725cda6a6427579686e2c604767e233d05a758b676029ea023bcbc4a50fe274c58a0de6f4d50cc1d44ee7371b209dd2ae5f6eceb7e3e4da14b2e952ae0e7364df0b059b3b0630dcf847828f3f9673444a70d903c4d9ccee6d7212065fcc25fb3507790766107f +ec06c4f9761d5af361bbb8e07ac0618c7e3f9d265b078aed5de21034d09f6ed7a88e3e316f1b428fb1baeb4e77908cc1a6061f140e4d873e84b7094f67ac7a268d74d21161fbd87559cc6d8ef46b0f6af9d768ac40f3df1e27a01c05472905ae2cd7c2fdecf6a3abe4d182f1638882a9bd5ee3fc070b05c4e7acb6b21765d066320311f739157099c91870c81cb26f78e222e4610fc7d6a5ff326b7e401d6c8400eb25275bba35ffd714ac42990af3f571d470dec3c4641c707eba56c08fe09f +c806db2e621ec158878932592342185924f9bd244e7bf0a82c428b294786ef2575e1b2574f1ab478702584011d548466f5d691c076806c2728631bfbfa76eb2582733630d62fc75e38bcde388e6ac1655b11cf3e2608544739389747a7579dc3dd37d4e5eadc45df4a32dd288169a8d8c05bd010ff110a4cfcb6587eae4394b2791c4a67719d7fe7f6b0cb752ee8aed6c0a6ad11c2b2d6520e3963fa97c3343739931ff0e3000560cad83b9f7ea083149e311b59a8c703ca01426f6e3e06d567 +f3c2724cb83891911971cea1c8a7ea0fd5994d9e0094ca04a56e260ee333627258f6ba48b2b0db8d037841e2236b03360fb1868a01feb7b65b73124e18c7d8f9e82d698131870f70df95b707a30130605a92f797ea464cf04c77587ea89856a744e3d299b4633f4be84ae0190d410d5ee55262e8a6c0dc5e6997b02643d3e237f40e5651e0e11128f564d284cad2f2600755a5b121414f1e8b1b1d2b33b8911280103f60d94a6d9e3a124213d764ba6622ab7ebea0f879ea59b9fb71dfe28c7f +c4d503fb1b18813bf90c1a509ac922b45e639c0669525c74efd9274b551907f4aa41986868e49ba6211a561b1771481f1bdb5aab560422ead76d88a8139f31f466070e3951540fb22e6e2f42281c7078f3345e0cee96e1d790140f83ee9d9d695c8065bb69562be60c58631943f6c7d39d281446b145a03947ff20d34b9e3fbc78562099545478d40d1a4afde0eac6560070bb8b53beb01d83e918939845483ec28deaf86c8e67eb962ed206e23006d7cd1115a63b8043a64335b1d45700d27f +d735703c47e980f13d4ac14d290fc66222d704f7c2b03d3f6761608408c629544a2f7449fa383f47e9a112708dfbe5631e549a3c252833d30697fc56a73374d944c7adf2815a13a169ca3d3e1bda25b4766eab8e490d4d3d6940132b9370ef52e4f28109135308dbac81808b40c4f4dc6ad266a6bd55ea6cc2d5a93fdc2e1b5870e2efc41a71e9a4663d300de2e6ccf3b2f65b91b2c54b7d540d8368779165e2ebb2c242bfb8ec0223f61e9f495e81da24e93505822970c26de1fc2da0ae0577 +f26225fcc44d971f9b5f6048a4feb32ead2c6e4a4f1f249299dd1ced2543a7b224acc0cc84da9768494e4933c8ec632ac9db6456355538fed9def3ff520cb7fd1ccd6b044ea11e65c59ff8994249b67155d63f76cb885ce94096834464e26c836b8e94f8839ddd449e85fc9f9cad282b19fc7ca3e75297875af074d918097588717779a539e6385e94f4f70a78b9b9ebafe656172c0b0aa4e7c742e4816efe36e715e7521bf10160af54cfa960715b1bb214823c70d4e531fea0f29e3a2dc2f7 +d6b60f3b6c6ec335ad8c023eee295d029313be547d062257fe8d008a3aa70d65f3b80ad0f675cb5a56a0caa4b3ec6fd757531bf7986153d38936be03af90b0d353cb33c9733ef1afbbf7617b4f4eaf22bf161f9a3d00bbdff374b3d265d4eb74bc4a98202a9de6a680d7988b68bcfa0915aeb4661f2c22bc2ac9f314ecfeafacf3cd4c3604fea8a99699d7d48fd13234b13e421514444df43e61497ed893a253d655fe8e472c7341cf4d7ca8bacceced78db21672eb9b5350679b520af0d6747 +fdb4ce80b1a6751ea7c38619bc215787cf00e696124c0f0248783684493e6d1165a3d8674133088b455f3e4c27874412057c8ab5f3dcce9afbfd38dc9ef68e8a1f04d03cd81f1fc9afacca9b9008ee3d56f164a2f92a75097293a1c10ad2b59669541c4dd730683f9f7d3f94a2c9c0a3f8ec3feccb541894290b020d1c9b660f8e0bb7fbd8a6076647860d24ca16938993402b553e2e62a25e71440acf9e63b11323682cc454cfcfc01bdf626e1acc1d684d27d928527e181e1ba8cc6870c477 +fd926febc69e770f536faacd126756f2d0ea35f91e67d166777bf8827e56c9fb20f6bc2e87c43a1e2d05dbb1b358f87920ac754088a47c86f884043a68ce4e9c67c9fcbe444d6055e6126663d584124887311f9c4dd9501f642c151f613a8d3b2f4c6a388d0f40f335ef9e319d83a1d086adc1f351d183a714837a60f23dc3415e32ad258670b79992419f23c7d58369dbd138fcb4cc9b608b75bd8bdc49635bd7c3cdd4c9c1a5883def3dd17e6a7265cb4a139d794dfb229a65550309a38cc7 +ce7c3cafaabcdbad49af9389ca97bbc7bd02fe7d3563c3fed2bc766423342ee1e662e5bd3e2a9d3ed080ab99c6f3e7235689579df60df036176bde69ba30e68a6424d143d10aadb1066af579b8a3f51b2cb249fc15d22889e7c2d36c5f863fffc9a02592c7a5669c9b89d3520c2492a4de66eea2e48530a99040d1aefbc020a6545f2dd254dfbb01b1604831c4684e54233c71a04cc5ed80bee17110fd3ce3f6159f73fdbf62b792148a733624c734e4467a724271b35ef9b085641beb733f9f +deaeefb30b6de32a30219546fb9c726cb0683b43b53c7a1b69c0736679f268b3a690c882ab4979f863113fe9763b9a183196007f2d3b8bf0aaa80711c62dc529d2bc35d9927fe5b0be7776d42b39b3793ce93b7ef93ccbbd59deab10b6ed3a306ced15650db3046888291a3c9691c8d7449ac48ef389406580e58f129babe31380fa1aaed87b77439d25ad7d1bf99b0071abe8160fb53dd834496771b3f44e7d64330bd647bee8014076ec9c91fdd48d17a5b6bd4e4bc21a95ffd1c303c46aa7 +ef435080852f5a8e1e4413084b416046ef985c266517d3b618683c3c6a45ba8b7f89c278de1a7588398f066f446871b75c3b24ceaf8612c5eedaa98f973564d60b61c4d3d710927684c39d706fef4a9a2f577d4c530742cd36084eb447d251f0c830920df541a05f009f8a43225814e74b3847cad0254320a37e616a5458e685e72c1c605f925e8fb035c41f7792aead63bb277d473bd3312dace3bc921738dcf339fb575a487d0601fe215003524139652ef1883f42a9270711ee1ee34623ff +e18a86d4ea099733eb7eb8197903c41207e2c0396cfaacf1a6db912e90a5ee76916cdb61c02fb8d4483218ad52a3066a07341a2853f0472708f9c191aa6da0c2cdd89418ad064eab029d92be72a0ff96aeeb1b3f896a15b20c2304d1bdde58fe17b9c5e420ece1c05988e377c9c47ba370744dc12d07227859a99ee6369dd32bba2fb675443ce0715d787385f15c61353fe136f6bbb36ddf33c1d1f4193867a6d06899980464e832de65be3efd6c1eaa884c7c6cc72538a694da872fbed36707 +caf29431053dfd114869470b805bb3445798c1f82c8db82e290a9f0bea5198e5b7aea5fcb74eaf6cb3f69b849bc25327c4b38c6b12cef37338334cf44ff489d71edd56afe5a6ce6af9c1fecc852615b65341a5ec84909b81ae5ee9457a86abd9a5285fca66abd3efe6549d8bf2bb987bfb312fffcb6b24ea20fde04ab521ce92b37015d787da9f9e308042f064c297bca5565ae7cc8cac6d8ca68611072ee52af846acc76f534a685869c99e2f31e7fcc939d6bc0208f7224a843bbd38bea267 +ea2b08855f8e14e988d096e69e03176d2f0a51046412f3eded1250dde6472888cf83232fd681d39583441048f4946c52ae4c300a786579f1a42c4ff6f25c8451647b0b434aa3a2b833ad2cf7729bd8fd81b28b8bbb36b1c6e13648011f0bde6c3204c55ff5d39647f1dc7033b8f37c08e0c6d717452666ff22ebf8c8997fab7f84d5a179e982c8364f6ddb3b92e4100f4e64894cb6c6d57488bad51adaa2a73fbc7af83fe1a44cf2a78476dae39865b1c82d65841bc6840a1cdf139216e8df6f +c52f6596972a96fdc598f0783cd9024cdfa8da113229b2a6d0e3ef7c13dda8e54153e48ae3b5e20a1ea9e1ac3650d91fe354cf1492c4993ac4ebb197a3a96e93cf42ab013ee7f44ca93e4b71d6f6ec3f3ad7d31aead1b987071f1ee190fbe27b953a213fda7f0c5162c1beb13188d50476dc1436bfb0bfb2475450d0a02d5b79aef3aeb65db57dedd5b6470f227f49db355c47b2f229ede8189bd4481b7697f8bb4f3508a08523c35395fc1c28cf10274c9543b96eb2e375a844c32482224367 +c5759e5df8999a9887c514a1394513bf8b349f5905235e1663db25c8fc94e68bf85f4734c9f61c253ec7bd602d5fd9f02ae40d298bf6e5f0329b8deb57d199dab5eaafd71beedc4f6e6eeb5196538d466236a7ac20386539c60c61486f43ee1b8a8db0b340d89a2bbf0527717a12fb4848f561d569b0af1981f16d805bf43d28691fef3b4067bee4b725ef909d007f0ec1a34af738bb9ea2665a9e3d30f393dcf74343cc36e07ecabdd9a8b94d9e116c1b9d236fa41de550f615c3b3e4e650a7 +f465591a248da6eee7f79a30e8e05acf67d7b0deb232d4b674590fc5d653b5942b235f4ee7538b75c7a09dd48673038dd4ae60e3577baf86d0aeeb2af8f826b041bf069268adc066399b399872bc76e13b8b119932a2e8b24f5734bb540b4e7f49376a36ff42dbc9ae2dd7d9c0df8a47ba090bfc075ea221500b6638079d1f60f1a52cd2bc1032e149e7fe1801995ed8ef6a8884d273ce35a0085619f6c45bcd87c8d27286d3aa8626f8e7ab999d7b959c6a032581e5d3c54060124bfdb867bf +d9b16080d1099f6c5e57afbc450f682a3a7d734aa3755484c7bc2e61010f3827bdffcea1ccc7cf6dcffce510adc50ec7c46ac0cc26a93f2de0b6c58cd912d2f8d023f9bc9a3d51febbe07f93a8b8f49ab4a236d26aebbfc588a4249b6242e3d075a4f4ed660bc663bb2aec87d8894047ab0cc591eb088b5e055d886dccc79d104b897e9659b5e04a8ddbec20853fea7c4f415b81dd29d8687553dcc8c028c8af78eca4aad6bf0896dd23ca0c9b827acbd375300de342e144766acd6cd9db0c57 +d26c27d0a980c466dbb303542aa24547c18ef008852dd48cefc0f65ce67695581dfa5c1252a08964f6913a296586815c2dec314191bbf3532b183a282364dfef31b78f1ae396150d107536748a9df1c3997d907e94da39a47347f690455b453191417c1b8930484fb48015a48e7914ab44f66b91d38eb0d4cc33942451cf5149041ef0b9a5d7b9996b0c45c439bac64b9778febf55f4b469eb80db5e077b4f685dc0389cbae14e987a0f6c2d9671be5d0c19db0c2c48beb63b5789cf33429447 +f972e63d040785bca540723d20aac24d3e1a4bcb4fcbb7bc0b6376758ab54f1f3800a4d3839b35554371ebe4b063b4de310a4a7b8ba00cd26f6b5367d334066afd967a8f68701b1878bc03054115a7cd89d01befebe342ec58c8f117da924d8323ce66f6df156466e769df30c1b7990c4e9361d3af1c96e1f98b786f98edf7b8ac04a3083cc4592487c5de055e9a39505f2bae072edd9ce1306b9e8277a9364272647b470d9127623caa01c21037e8172f3ecb788304dfa5d31ca86c7f58a3ef +c227b71645904228fd14706534a75b32d8b5e58f2c4260ac446958f9feaa77e535a315a0ba1f46bf7d29fc6324abc0f4bf0b6d84e7c1f055dc037d41972679d2b9815cd16472770983de6e33eb70e1f79b73e30f3e1dbee95b328b97de795a029dd3369c4749a4d38b906dbe1ac75d44769d2804bad5dbc5c7e2b7211b46eb59011fbabebde26e8bc59ca4f1848d78a42eab97578a8316271efe8a50e099cd9816a133327720888ca92f7717c7ea61dfe88a445d7529a5ee2273cdbe298e4e87 +c0f73b5b1aaaf12f6a390f66c1e95303fa68941e1f3a551085c7ec95a936986970658cb2543e35a142327a8fce33e216107a6e5d455e7d03364d03b148fe55bd1dba52b643580b03706186dc93938ce57de0d784b8231fa1cf95c97abcd8cbe1b177bb76d30f80455e8491385e6d50928ef7984840aa6768e995a897312696844aa995caf39b58a652e1ae5d04ca39123e02bd5cdae00bccdcfbeff90337446bf3a9c09b0097d8207a7c9474d2e9ed02da3e50f6e6384bb2b37a0419bcb07ab7 +e25eaef729290ea7018ce3618c4915a5e8c7a309094d237d0cb34af4702e600e73e299993853f44231d5dc598db99a09886faddca75d5d3a2af8ca55125b50caa2553a52d99c914265a0593dfdba77db1e759ee8bc424996e581f768f7941528f90c26776016aae9623b53c9a90998f034f8b9e65db6d8d376a527970fb705767a9f6e9538cf63f7da9b32ba7c348467ec862e812be16522ab41ad1c3eaed07cc5c8b21434d64e081dd0da14217221add4b5abeb5c9598b0f0fc70831e921ddf +eeb25c60d6fba6091d93289fc04911f649b04a519f39d7b9452c796f2247a843ca3322577359fa281885d27aa804b2a4ca4f108225f74dab549686e1daab438565e7cb26c8824ba0e488a70cf2b75c75f2b202ab94bbcb8b6fd661cd685252f9da775ef943221a2df5a4f1ba12e92d44d4026c033379d93825061e494a926cbe53ebf0651e878f1ae4c77bb5c81878b5bce3d19b7fb0b9a72237f2cc59f05688dfb39b32fb0c738a120f8fe62414fac2eb30272da384dbb6aeea6603d8849fdf +e1f6c9dabe479d7235988660a0a32c66cc675d79cc9417a27d1ab5e54d2c6809c9b5a6fcf19b033d5b30348ede9c473fdcbd5179fc5243b64dda4c6c7f6738b13c008227689768b40c4d6d20cd25d45940fd311ce93b88b7a671ad81295e44b07d49a3a91473e4ca9ce4f4fe731cf1dda09dd13ac0899cee9abe59c29b3615914cc63311275e3688accf5ddd9452de15e1a925c2b8658b319283193f40e3eb969136bd2772095117b985ce4a5632e05d3ff11243d5b29c8d50ee6ac2c6a1a137 +c9b2d2f4dfa6588333e5caead6689700d5cb6498618b4b1f5f9792f84e8ddc79d5f98b90f1595aecfe094e7c7305357125c64c1855d27a3070413a30c083614b3dbd88d5cbe3fabf31fddad2596df426ac02e59afd31de6bd00068313348cb2fe4b9129b8317c7a94970af713dd0b3698721a2be46df265d2691188d34094db8e6ef0906f33dd4b3a7dd8661e948f83bbdd23fb843022830dc8e309f04de444388230461c59f098aedb88581a295401bbfac4c44cbb174f95275829ad23b5f77 +c2d634d2ab8ec06b2db2fef1c7f065cd2e05e279714072ac0e086c5cf7250ef9c67602b71da0a3c58f4efce22e207fa839aabc5d9b9fa06b0cfe405e25dd01ab68eebaa951b4383a6f934c4b8a5c3c1822da0bba7197991f91bed4c80ceb389e37b047f5b45803aad034b62ae754122ddbb62b187104c65348525e911172d74360b7dc5bd5d41da39de479b8de9769a446a4560c643bbd4315598d67639710c011d3ab036ffdccff05b6e8c251a1a760508fd8b6d78c3b19d35b45b0c59a14d7 +d36033466aa4529c34dd038db0925928825a81c8c22c1944f4962fb21a20cfd484b5af74cb607f8610f7d21a34f74921d818c3cc814fc6bbd6eee49df5ae452921827144772eb4468ea9dafbba7850ce56d02c08b35fd22f5a6cffe8898e3598c637dc18316ff445a7ecc895fc74017b75177e8a57801ca7e3662b5b3d4c4c4ee983bba89a09d4d4bc69583b0b47f7d15efb30e344bea9d3ba9343a52f2fdf3db719a9c0f40197ea86c82f4624cea2d122129cc2b45eba9d4412c24ec332083f +e4e17fc5267354cc91a6eaa6938afaecbf62cdb285e41891de5fd5a2aa1c599a7ded5327e9fc390c3ec9274fe4c738fa5e87a84201473e172b2b23867282088fe448afdf48a95bac12479a99c52c3d0503fd907990322b0bcc0b0c21c7cca0d58bbd57b5208b9a949810f3a6598e7ed8385a38a798aa7ad91fb5eb2b59abab7021f9b3b237c38f624a3ef1065ec4da96e3eae7541bc6b2d3d48406541c07e81f431127f404eae7fb056b088228218fefb13f0e4b0584f2c6b4f0eb553f8031b7 +f5a259020e68bc68e8986a279210790c319e14cb2d0a1046970f027461e42df7e486a6b1303c39dcb80a5f66af72b129c3ee3437cbe342dabcb0cd817fa6a9ff5de40d584262c8b416ddbbe5e41dc7c2e1ee10548314a368d600313ede8134cd95c7f33645736dbae09d0e5059f6cee85d51ec95c73ad3efc395407a39f3af1862de99f8bb3f027b2104c0081d2b83757ebb71f86370047445518e609a951a92cd9f4fc45cb8076403d7111dcd92aaebc3314554dc7a7e104032abfdc2a9f747 +cfe784d53cb7c4a996133534cfd2f58095c09bc3d7d6e5a012397b73ad0d1ccc60a86a599b2f8dfed3e82655a2da21a1344d61803a140072e4d159d898b1b4724fe40dc30a49747aab72037372a06e5c7980100273db39b45d51076e2ad1b21ab3608f664b14138e2bd185dd29e3691e010e9e90a9fc6db3ad6e611af6b98d855dcaf463b3f2928faa32f8251c45d814bc7fa3ce0cd3d6a88025f16829986714106145643d2f33f86fd5b9c8f6ed6c9a08b617879b7cfd60c854ad7c36840137 +fe7c0d50b13f28c0ebdc5df086a18f8f09832c1e0004f20de5eab7b63cf170e295bf2e83986c277875c112e5089d0088a671896a5823807ee2886008e44a8742ff8e24da3ac4400fa94102a33992c9aece4dba5e5a05e874167a2393d786198fc56edb40cec55fdb633242cba5af1ddf568cf05160fc183407d5e3ec89446a422f5ff3bbc948d8fe5aa01b016803483f21064cb1467f0f4f011111c000402df1e62b32cae498f59270e5394aa2fbf986989ebea32ad35bbc5032fa22bf87791f +f5cef54223a18e442172bb153a016784a723583288ae946426ba57d411e871841f3c8bb759160058cc4374c31a74316dfae9af3ab06d1197a1a260c07678987a810290798e2b8f863a30365b1c3268c4613a509d7476db38108e44c28e093785451b6e8643f3894463fce25e12210c7c098a4df33d3a9bcb28d7c77308ae020bb2a21b901aad5a4865c774ec51b610d4485b010d8a6c8ccfa584604ad6309f1f77c120ecebb939918a54e40d2cb961ef43e6509104433c097e7e112a0c099727 +f62610e668d790e0c634886692d10a30a872edb9f134e4adee32474fdb0e16a3e427ea504e93039a94b24672589b463ee8100c3a4b89d979c3cdc27e71c3c611b86b89522eed45ff92af4275b2780efa5ba34ee44b46f1c5542515e12a8552579f863e512b03abb735cd02c0d06d33bc9ebe17edbeb00907d497c2227ee922faad3f00bef9d6173d01bed29f9673797e551d4fb93a4132ca20911f04d6d1a27d8e208b5ee7bc7ae94eb358ed6c1973c5e193a1e0a9f32c8bde9ef759c5532d07 +d8451b60de174edcb71e358bb0dd748607dbdee92b59e3b52d98463899067b677b9086a7463f8327e338abed3631ddfdb4d79ec73630db11963cbfd3a1da66465b5aa52981fc8b3f8e754198d4faf392b3095e645f85422081d841fd01dbe6c3587d8c91b621d637ade872c2326eab31cf3a931e110204aa61a5bdbc7790b515f0d66fadb62436c2e7f1879ecbe161c54db7bb9ef9e5e9ea635b029d18eb7185f1efabb4cd11b150ac8529c981e5b9c009138f5b472db27def08c722df82bd97 +c26ed05d80469e7ccbd9e1689ca60b828f69deb023cd5055c5dc4824eae8e640d370b3b045894fa577dd3eadeaa04b1d6ad9b494d4593da86df1aeb64c348f00513db8c59402a2ec57625c3162c228f03f24a4c69bbfd161e46ab505eacde391a4361398a056d421368dc1d6a80e703fd82981d7b10ab2c880a8584b71b4329041faae2d7fe75a0b4b869b31a4f47b73104df915374f0577e778f79be1722501ce6ec335d9ba85e49b771b0e8b541a224643fed899c782a6e8e306a07d31dee7 +e7ba78f5a6e86fef627f670b3d520945b777fb19ff6ae37ff228324afd0c0804e386b53d2d22160f83c9fa9bbb8ad981c64b56850938745d66ed091a33280518beeb8561c91012b7fbc255f70fb2b587cd23d63f56f4e747d17f438303069d8e46613418cbaf9e5440944f80001d7623950c0319bad32ee72c4b5a94ce790b7552f328a7111617f9204fc7d2a39c41a2e1b4102dd0b50ccff66fff0332ea7c8b6ec25a2d31faa25771ba3347ec6d7d81e1e9a174baa86a053196fcf0ca538faf +f19036dc55fa6ae978281eb5828eb3ac5b9a06b78bff9ac95ec87117741943114d568e42c8ff423eb83b3e87a5bcfe0cb73a117603b19b2aedc943da9e46c66907811d30bd3cf961f66f18e123b89189af81a1604fd2e505c2cbcc17a9d576cfe2b4c05b1e080176602f866b995d3dec362e6c4359b172725e9d3b65db87cafb9b95bb718ebfa89105beb1efafc58cdbba264c5e4c6684eb41daebcd69ca690f3ab402d4feea7668d8ddfd3fc19b7524f6296c9df3146cd9d9b4de5e5be5e497 +dbc55c88612b17faa05cec894a2a4e8ebd47f673c0fe2341fb9c8952cc97cfae0dc85a23758cbe247d0832a6d2676da088fab8b7adc1fff9938de9834b9c6a940d26c068dd935b042c55f160435d44869ddfd0b1ac7589da9b994388996f43b0605da038bec46278aeebf1b6afc15c7792b97b82f6f9187b3df67e6712677506ab90a66ecb202ff19b970f14a086729ed9151b509f898de9fb14b3a5265420182149da2a91f6c46160a80ba7a9022491840890601859dc94c7f442b9cf532c4f +f5453edf323d2d1ea80345291dcd0ed234aaa7c1b7663afd4394119b8146958adcd5cb638ec5ff22766dc77f34f8216b24bd9799f634224dc6383f0c34e1e120a138501213f257c6003d6a29643da7fb6f321b874d1bfa597d97f9b795678a74742ce565e46b280ee8b8783450daaa03d5526bf990ad544e3ec857c1682029b07eb09cdc5b2981d7b6a5d05c14c964dd21c6e44355d19bc157ed5dfcd03b6aa3857d6b54c8d49bd7c0b01e757e3bf5c8c3106e793ab8a0f4ee3196ac2f30b96f +ee46cd42a2a82de1ce648e1ee4118907be39e7d72fc0eecce929c7926238a4731d19e707e5df1d23a7bc328e9f63708d0477dfce5ba8adbb3215caefa84ae36d99650b68199bb12b5d3a521eed450217a5e7e2e308a27c2384332bab0bf5b08f5346ded0afdf318f01a70da6e8578a501a7e692a94b2a330806ba7e3ffd0b973d69a748a2e6eb59df2c9d7a654e2b26e445ec4c24df2734619f78ec8046ac2b5ee7c391fa791c36598d24f595b64bfeb85d34365c96a06c54a15c7e3f95a415f +c6967f947f4a20f4c1c640dd2558b65e20f06e77d3443f1fea196c1ba55589a7bb7d3d649693b25583de012249899fe321e1586a3a95136591244a95ea8ec40b32942782e5fd53c06824fcba860178621d805214d788e1788e0761562a57ea171d508c3af46b53e39c86961e3dcd1cf2a38178cb5077c0f6cc527cd45c5fcd99ffdee7ce7aa0e7b12d384c199354f4187a133b52347f0aeb6e68e9c16dbbabccb047b966781287f48047ddffab85a531d42e374c38b8098d355574e7e0d77b5f +c5aaf775dddafdf56fde7bd1566ffb2f3dfabf1391ccad5181671bb941781dc1d67b9acf07109fe4edaec1a90499ad21a9a5bd910c9866ff5a407ff5b280ba978459d2cf921e95691bb08e81fd4a3d367c681f7b30510f52a8f2fa7217101cf11fde6362f77179d0c65a976ee2332b5d5fbc31e99423cfa511fc7d6210e40492aac7250ae74919aca86363aee55861bcd8cf895d95c0a3809a363c8b8280e9a945bdc8e40b4d2ca91794c6f572cef376b116febf09edeee61346fff43a770e07 +c7ab9a76fd3fc1310757c795ba590460b948b8cb0177b71779032e2a7f28bc5bc96bb052f6d70cb7e28bf8cc2ddb723b101e250c2de12d368ee1c302e820c0e30344474e5897841a57d3defcadbd16b988163721ee3e1390b45dde863b9303b91fa685927e031dc6f7b1bee416ab7acb6ddebab90f0d9f566b7c7649e432eb91ac83ae14faa8047b9173af7669e124f6bb60503d771adbbd5b76a0637ca589bfb7a834b41b2a13c05db51e47b048b653b16ac09c5ecc34625bbe148c24cc0bc7 +d075c1aa47e2ed048adc12b1299e77f254dc3df0cbe3d7526de0bd0166429d486270f0136e2037d9053f6d6c486110156ee6e60a6c71c7a69a67cc258be7975e843eaaa97d40a4c39e255730ccb1f4fa747e4a8b817c0b25742648a695598ef45cc3a2cb95a221f1fcdcba258524337e6be8d7a912e9b243ff320ef8506c701fe602298aedcb8569b6e0e14c75393ddac5376f71fcbb8e6a7de6739a2b8e015f8719a050e1ede867a46a6afca6964ff7d64cc98053d6447c84c95c4c1eb7917f +c0303db440ee885b776490176b3b7b1c2c091506e0b7962d335c506a1a70173d21545818af643278dad5f6cffc9bfa857116c6c531e6f6715f24871ac88458d3fef1724111cb38dc4a72b0803991ce48b773e830ab3d95d290e7fcc081782467731500bfb7d24cbc0dca4bd6ac62acffd1f44614e3ce111cb72e43363bb82f7beb072f02bff9d7d5f3782b809ed2aa47354c8388699fa3a34830e178a6504260d2294dc0d024c3b5a9e3030e85249eeb6092acc1910e5b602e779941263e0a57 +d317a8d8ea180f2b28cb210e41d1103e123cf4241187a377968fab6b1d05408755144078c13161a75fe237e94cbd9220d655758dea0187dd2b77ca6ef8bdfa7b79a85211d11f5b0ecf795029a78d1efd3142fd2ace917d77a3ed6a4ae648a98cb1e1964c0f12aa0e1b38984ab9be7d49576d522eeeaa22536114c176d0c302702d3e4f15a4233baea69dcf756333ba73757f04af71d144195d363127a449857586978e40167ed0bf3088d7f2061be8d68908da2e0d836304fbcdc816dd90e4b7 +f29543407a14b569f43d1bf3a41c2b7ae6fb1a8ca8fc6d0ee66f60d7f437ce58166150f8f3062f104ae2903dce91878eeb7d0f63e6ffb675f00937e5260c367afe684c283c657ed4d53f88ed2a3441336b136187b18acc2af89d085fd633823cc896c742d4e4e2b7d9d6559d329784cad4ce2664c6fb186922be513bf2249717e5a805001001d7e35613f88920515a0f7dbca556a687b54f1adfbf0e906f895b518e07dec4591da0a91d0dd877029c308a7dd0a81da52d7c00ca5ca749320cbf +c0703f08854621de22b6e6a71f2309a8aa53cb530fba32298967c4e6a86f07bdc87156a9f17e15aba6ad3a7213d5ef423fefbc9e4ab0404abb1aede70b371f53ab8a7faed219b6eb48835f643a073cc7d3775ef9abc97488daac94881ba7c788855aefb49d2ec0e9ea62e3b1136e3998718fef3c3db172b3b89ab2f8e5299d955313d87c741ba40339a12ba3f43814e5cf2635b00279c13603ad846e30c817c439b6cb1d14560edf07864159eb1f14d4769723a080509b15db2c2357865cda0f +ed665129de06cc0d6e5739a161374e3a70c8889a5a1b67151b0cdcbf7c28fbbc52591e7bb3b59d24d62ee16e826d2964cf455a2fa882be5ee896a19d152fc761f052c742e3328f3620e023144d552b248aac8bf059e5ac20555c6be5f333e58946e0e9d9372fcb1188cec9165402ed90af7f39c2635c9f3e7d9c013596e0992ed9449f35261974367c114807ae92bef69f4fd2a04674f6016ce932cb44519af0ef8f5cad2e9fd3b21e7d8c3a1be43dc73f045c486aea5dc292637bd60e00e4f7 +c4b85ddb9a508d45e7a4d13de28b8c9d1fd47424ac5ee8da5ad2dd4f83623a695372e8220d2280209acff54c1885fa0ec0957cdb6f2b8b0106440af1aac8ea8e542d5ef76c6d7572e5e7326c525e257f6b31a663b68986b7f1d2b8dec52f94be9b1c9c170fdf5583085dcdd248ffdcac7efbffdd51848791e9c0ef226b1efc8ee8ddad9efd3949e3373a363ec11632d8fdb267bd093f45a2fb78ee8106ad5190cdae9bbd7ddb3ee179d477e1569950825d1a37b85e6c4be92ed47e2e2d367df7 +f2db2687afc7ca3618064fb32627abcd8d224f9e91937d15df59ad4049f2d04ac5814c6289ab6d02aff09da2d1aa390f1e77c9a8701be7c9bc06dce5137d446053d0e60ca025542907b9aa8d20dffeab71e266e9c1792e3e56dbd82e3e7e804c1ad182f31ef8d268871061948217c6cd982a11fed406b69fd4a6547251cb236960bf026ff93639919b561559698be28213e75e814ae28e083e3423bb338cf88bb6ab949f7d54974199c952c29e5190ce5649c0f6f55cf656a83203f670828fff +c6b4c126011a6d236aca83df6dd57b8174cd37dd15a4f61f820c98bbe9995324dd1f263f99d90a9ab671940140b423802017b39959bd3b49ad9de7e338421313a12759710592ba8575394a78e7cab64ef96608ae2427ed4a43503ebfd49de47291e5417e5b64b9ea4844ee2f82cb11df0501a07290b23c749346a5da2dba967d2dfbc51aaa79ae3ad81095d6434e68a73ecbff59882a1af24797a71f63d44dbdfb7cd1efc432fa06483efee28fa1638e172ff644259ab8c9f80e5c6b1bd18a8f +f45e08ad23f87e7385a6ac53712601eda4292ebf184264b488485c708334e85476d6a5326b4e1b31d15583f3a3e26c37c21804272e0fdb21a4219036bac93abfd8847b0b9be43e8900f4add0941441c9d1905ee98df1728b2438109f5808494332f78d706810a681dc310f2a788171ec4f861c3a3b669d34698e7bded251fc9173b33fc3a6d94f45a2ef5cc0d059b1b7104caa870566746e9cd1bc9dfa3357dd07d887936356dd3a756ba7db7267d33dc7602db22a305163968d4676aceb4a17 +f71fde0546f96b58ce2b90b31738ee11238449be23322f10185714da5e7238b9c5818d528265529a16163c04c706842badef1d25ea033f4fbc25fd40afcf8032101d46416ad62d2e719d24d74941ad5174916969567c2fb80d43a4d4e14ac2af6bd2de14028b48e7f8bf82c10afe522dcf6dbcac26d49e80f2730081e21bbff9ec7b632a0dc90b3ed14941cfa3d412c6dc7259ed1e0904354b322d579511489a04234b40e23517383a9c6e207a197f076e084af82302780d0c2b2be0865d302f +c8e41187c7b7344e5a9f7cd4b65c34c321611ec46717f3c955bf511a37b7410026998a5add0ad09df8d393ec3511e0ce3632ccd6e520c80364e3336a9140e6f138e22e80a3303be60a2fec7d78a32f33d4ff2e0f2edd393f63719a1258f7eb5995cccaccac02ec4d2d44f2eba18293d6af4fd13720e2b3afb94eb74984e9c9c7b46790a2aea74abb35705dffd774a58b8609386ee2b20f354e416222737dcb43ee38a7c37ba37019c6a37079e0e037bd714a29b9337994de961556ab7c262ee7 +d064eee8bdc7451564c6d307bf3e4299631bf75447ef651003c3465fb72a502e79d430269551bc5b400c7febd182647d4c662e6e72053a820fd1727a96254200c02626246fd2432a58d5a1a0db84027e0bb28a5dc3783ede9b09c02afe9e5be495af5c9cd2d8cf18ac0a094add78e0db27f3c9ecc5452df0dc4c60390b991b3bb4d158dd19ea799a693bb3aff2af6197b166623686dd9dc49af4da4a27603cebc0e64da53988c0e018dc3e0e8450e51be7a04e407dcf0085607c2eff74e96cb7 +d263f51eb9e243b8bb5b13662b2f88cc9db6ca2a78d5460607f4bb68997bc8361d00f719787d4c7447503c195d2d48e22a945bf365828c44940159cc41d063b07564a7a000d1a479f1b0013569c22145211cd117e53538adff8d0ddc6327befa084e8cbb6f6c9ddfa4116e7b38f28d1ee0b985b793570a020d930b0221884a688c32dbab57556c4e10246940cc534ffd8844f90cd2b7a34d59469e020bfaec995401ba21bd11aab0fde39f143ab2ca220bf0d757b1bb4d7591f62c8456f74cf7 +f08b395e50f702893afe409cfe0cd9b5aff982a34727a897f34cecd9e5720c9aed676bd21478eefb94d5a3002e7e443a94237fc391bfd92b8005c93a961d433c7e0c0407c4a3942b978510763cd3eb1a514dd8b893885a4e53f28201d3cf2a2df9261e24bc57bdd6e8d186f6e35ef77040e424482a5e9931b24ee78a6d71b150812082026cdb35bbefe0e226fa03d4815b4f38d753f860ae0e918dcfe96f67261f2df8a1ace919f55b8f9cce1cf692a92cd6ff7064ca22d41e3774e5a5840d07 +e3983cc4b3c1f099893ee85b5f2637395c6dd941262a472e25bcb4ecafa397bd979d49764b6e02319a4498ebe55f68074e918e2a313bb2c0d823ce321f269598b1b02723ea0c8b11d6ce330a6f6ea6c396ad670a2fff7a9bbd189608f41cdca711ebd11b52668a73b044bf3b0a4b7c6f6f937cd1fda3edfe3381f28f617e1e96972c195db00a0c7e1efa7faee1d48545a2318587456d5b51fe60f3decb61fa7b244e2e2c4fd2752154bdee0a11dfa26f443b572a3f8ea1f1c272a9a40f02d447 +ff279e25d3d0b701e5c46f95ddc0d9fc01f5cb17b8a60e8febc30e5f0ac54b18ec6ce8ea759d234181d3b350a967c06473fc4d1311ffe1af1a783490ea019757162ca9bdabb828bd8c5adff67df1946e1823fecac8928fbb3116602d48727e7a50ec15e6b8ba0c943dd67efdda3bcdf415a4eb22fe1eda1d1e438df794a9ef28ec892b4f31bb70ec5edc13d9de1230278bd79bcc0a559789f963776d89772ce9e0b252651005bcc57e1e70f54c3cc2aa9e3f69429ded4fbc06fc42445a6925e7 +c084b5901a1691e973d005d73172ea3c9c7f2ab201cf529df2925bfc867aca3e609a7a3c6f9ccc300c4fcb9fed761f51a02e09064c45fcfa724f2b15b1483b690aee6b7b0db91341a62cc4653efc8e9587d42f0b3e8158e5c7aa3d96445786cdcb45deea4cd8ffa19312236bdedf20361c9617648b97a08c9e67f50c00474b46080adaef2b4b0c70c7a001226b53bc766529cd1659133de624559987f69ca847c0b312cd2a814e79a74e2151846d889ac7cb633fe99c5cfef4766bbb0e5f1227 +d19b033f6ee264a700a1b9043e94f633df168ae1663fad1b0005135e16f150a394b24f8093dfc6dd4f5af8752cd5fa6dcefdf9d309ce66a7634933b5bd77ab6c51afefd1f835e7bc3a86eb4eb85c54ab51059be1c6d58b2266118f03cf127774795e01f1e537a7100130b7eac6f5d4eaa63cfd68194549251b219146e378357f9e2917b365fb4fb1b46653d94cfc22e1524c2abfe9007e41dcdf59b68246e856afc9042b45bdc0c3a86470dcbe47a039e0c5a35269ea44c8f5d6883de3c19edf +df5347cccb5dc94d519e2521ee05578fb0f0f6eab136adb99abb1d873fe8f9857ae9864370004992a6afda5bc6cbd6564fcb633e1682c72cdf6389db7223e55d61070da97d858303906b7db5f5a5faf9365621dc7a49a1c24924e9834ef4cad77d860bb322847ac142e65855c6ea0fd575fe4b41f33a6571c98c3b3f4ab9e2b23762b2e9625e11ae956f1f77ff584d1ca78e4eb1cdd0995c7f04512b87f3386840207c895cd147e3bbed787360145e46c8c36aa1acd020e44cfd4f0d2704ed0f +d48572e79e65fcd9457332ba86d2a0d5da4eb6f7d23904bae870418ec44304e01358f6a354fefd910a6833702b9d1242aa4b6f6e9c251dc61d60e4d35df9ea5d6dff7115bb9afc38654ab75f3db48a6a6bf329ddb155f082fb80f5eb1ca9fa05f0c424bd4a5dc5e80eb946c9131bc7c25353e0f3959de7a5f4277722f211d422fa7992c9c829ce0bf0030cd87ed83320b8bca2b7b5d13ba6ab3c7a1b0b8f1eead5fcfa7016f4436b4941c7c6f10bdc17f8175c5af6c296b0da4ac4c2f14fad47 +d3d7f1c09923a80284e4e838488e8e762858f46623d7179f9edb048c2372d0e8d4656bc7f4542da72d507bc0fa94c6765ea6f5c24b55e5c554b34314148a0398dde9b8a39aca49b6e0af724ada0b973e0dbe8a30a47ffdc93a5fdcab052be04ae3c35becd4265f3e8ef9ca8fd4ea606e39e6b826e33b6c1c956982c2069276303367e81288c17c783f867d7162e8ffb3468aef2f57a322782413e9d19bd8a182af9f2d5dc77ec76147415839576df52abe846f2f85d78a53129c584a4df2dc2f +de0d5abbce0d6767791c3d6d788612dab1c8e9138acfa5dfc8b2f97fcf0075bd45da14496d16f0d0d3ef94011160a7578490d10c87bedbc10ef4904e2e9956e6b97cd107b5cc492cec763c843eafcc5e6bfbbc9d6c0c178e665fede6f0d885ba90e9eb104709dbd4bf3ab9084c263d27749d561862a2fff2850d97b43896ba6e5f783a3d539f62b7dcc5abf903404374b4db5aaada7e09be13b42943274a40d707c303fac71d62c76ea5fe7e93b5831a0f47d2a11b8d0e94da11a367a16e5ed7 +cf34b2bd5f79b3cfb8fe8544c7b0b83a77c1aed631ff96ef22d8ec724f85a265d69c99ce20fd071f61f0a8c071ce9f5e583e6b388ab15383c6a7907597c3eccc0edeef722897e7feb8594aaf5ef6ce96a66e056476d92db625b238c4cc49cca4493e4d648f47c57b1986b7bb2f6e751ee9edf8b9df55467b325c963eddd065b66c2f7a552feb884591571962e759a32108a5eb42c9ab405eb1d25458c96b28678b64c97eba59467cfce75a4e56509fec5af269823c20010b691315d81ff93caf +dd2600a0ffd68a295943710ecc045e7e8c55154987f332bc0bdf9fa297f50d0e587b36d960ed787caef3e9cd58d875eaf289c1bed5de6cbef28ea72100b9f9140cc21568a3e004d85db0c67a26c392fba9126af058467d9b1a06122ed37a2735ac879e9a1c492d352d0c217422a0f0db32103bc078ba32dfbc0007b67b9f9460118ab878d4e61bd38abf00a8540ed2ac8169a69a2a7a4876313124d05a68407912ab4f001516cf8561f867bdf8ca4791a63609cc5bc859894fb56410e39ef637 +f5419742b3fe3842711ee66656e101c011e9ad3ebb2a49f14224f8fb9f3eb63bad80e0f6fcada7c12ebb36aee270f1fcf674de660b7966598a1b346d07c7e7d11dfb92920faf0b2074c311eabbc0873ba524ad3ca10f07559dad4e23f75c720e048dab1b5bd598fd7098d6d125f7c372f0da76498c2aa69c14b2808c4dd21148e3201ab60f0c3095814f9116b339eaedf6f15ff63ebc3e4719f1de5e7619d2def5486e90e433f9dce42ba9439043dc6915d42cff6170a252161dfba5f5b64827 +df6763bb122f5e8949fb6fd46887583db703b0fcdb7ea29f9097e5bd5634b1d14231e0dadf382ae0e149d2f31bfc92dcc07a518f1527732b35d85fff21454e5b884c45da22a72a848a5a708b45e715759020f77399b20b32e7672fcaffc21e462e8988a1b4015057b49a9019d977bf16ca78f50652a092ceef65e99f532e5cb7b16dac537bc9c1ff1c5e8e6b1f4554030a490d97c1cc4f7c39e33b2aa27582588224b1dfcbe257dd96195888c14e8a11f001a92590ef47713ff0ff234ba0ff2f +efec04097afa5ac830b8718cb721741ae23f43805c4e0d162f72a51e7be0303a4375c4bdf874d3c2dbe08104ee2482c840be7b2abb96ce19b6048f47e880808dfe3d1e707fc431073775dc888eeb473236f6d0d306552a19596ba6188eddec9325aa4020f0c2bfdb9efe234d0a181939a95d3cff15adb71f85982ad9a3cd5ac655e84a1cb18a91dd6715d09eac6d7ee3357606ef7b7c99f2f0595f967150df4a9e1a50b4a0a480879d8221dd86d4ea42be08a7764470f884a1f95109d36e9b37 +ee8a7cbd9499283ee13c5f225f78a2a46cb6dd01fd136144164e29e95745807502b6d5fced69712e04c3adf28f2eb9bfcd3d51720fa19cd2150183d11c23cead1195ca810159b5f8f907775809f30da3fac596a6dd56b631a948d7984dc5a761e9cba6854048771ca9f5900dde0da01deb01c14296469975ffd6b1868c86c5011017f04b65320612a6dc7c143510c156ad52d5e45fb109c1e12d8ce2968c2c1a08582ffa35316ce346a4388fe9b5c9572414bf6a7a7ee2d435f81fdece731cb7 +f62062db3a24f2fee047967d14c19a79b6f792f9a828e71e13c0ca2f06f93054e2323e716f35ded8e1d8d7761125c337797f9a26822e173aa602407eddc46b78ce0a07076abe46fb59830b34cc86757273907b2144afab89ab2a46775f7bd3fa37f1dc15d0e35fba873217d23a46b8db37d760704c9bd364dfa0dff0341dfb5706ae7a14c6115549fbc0f1d8d75dd6e077c6e0ffa738d90a8cc736bad5b62e5e9366319531cdebfb67a4bd9375ce78120cd2c68bbf243583edd40b0d97f9f357 +edf4a71bcd5c6e1ad4b1bf173705e073f24b76dd6268e0e6f6a47227fedb6aa1f7bbf63c546afbd89d74e8eeca992cec7234f97a8e116f38bcb17305711891afc867f77c23128b1b33b83d7be79cf5045332e6a65916cd5e3c13d489ae80e0176fa7173937815c098fc2ce60c53f06df48b674466f6698ff8d4b30d875d362995a1c4bcb61f1c59907d40fbba7046efc199ffbef1f7b5b4942ff1c6273e5daa689ce80daa71057a19459b94b2e2af831bfcb94f0d6dec655c90dfef09059d667 +fce848e895c7ff89912cb4559c2751fad7274fc1dfbec9d51c1310caf0315c1b9cc9b3aaecccae0828f813f718711f6f15cfe0974303369aa3cdb5ba1ff5357be3b6f188a8ed4972d1d18ce138a909c4f14bb6924ecc454a519412ada9a9a723d8a4476ad303775d00509165bfef212c0801876a295f5c7d0f306297df79e1d8671dedc7f80c66e3d532b0508968d9178c60cf33e7c97bd4c0e0576705401050960703811ba95861ad9cdb0bafc0937dfb66e00973eb3f7b60405b098ff2b1f7 +f0288777da782a52f397e24091e764e86e8065d7c98acd2aedad2cc187e97a0c63fc3bf13d9119b61635db85ed4299201f04b4e2b46e72bcbf564e9ac0177ab1eed262f03ea1251e2d394b9025552b2c7b4a706b756dddfd79570abb08465c4935bbac05b6d609ea6b8af1a0b8d62957304c74ad5766faf60a468dec5a91140efb2e112855b748511c235c0e346fb15b50cba77c7398d682d3f4876a33fb1a5dfef409e2743fd8e0a23246b98afbef3a6eb0d4033cbb4bd9ce64187590d16b77 +e343bd6947099a066b723fefa7bd56b3c0395966f7e7bd04b8ebe2cf2e892283dc7cad4bb975fb97f21b989039d934a288565f1fad8c5d4b2c1097553ecf221760267b2cef16de3026d45aa8c4c63425278c59a03f57a6de25bc9799208cfdb15f04cd2b6973099f9d9b7bec2efc65cd85caa0053795d17ef7a4695d9e17c5f62224b3294345704a61845ab10d8674d3d343bdd58d8e15a7029d7b5a8c32fbca877396ee0766be4a5750e8b335f8741718d0b59577222b6f6f5592bc062072ff +d081ab01c9f90dfa130c7e51527fb7b130d70f76af3f577ce6c461d766f57076d2bef8eda2056b04952a1578a1011426c62a6f56681826b07c84f53164981c2d2929d654f2d56ba88c6ff4853a4f5aeba2c65ee75503d3b59958e92cd7b4165263e055007a193dd95b1bdf1cb9508a983ca83aeddcc13d7dbe8c6ac303636260a27a6b125675fd2d44175be195b57d024269c2121a340e1389e7dc6dd1f7a25d191e5cd8b663bff7d1194d031803de47ca9e1ef7ab90a15c539d69d6c24c59e7 +fc144c596f6f2c694307bf987947da3b5afc967c5e6f089bcf7b15859b720bf2423939fc3cd37e5364985f9430f13835f279765f5c5ec9dbb002e917eeab57beaed20d8b7436de9ce06d0247629f7258e35974ba7440d6ec37753da6782d0f0a256da5b75258d604605b59ad2a13001168f66827b394752e5ac6d6e1572544c175eb9d823fd42d5d8f14451d92df9fb0dbb738a729369015199f213e574bf2c0fc9f11fe6035e1a107eb422862a8e89c1d602ddfc243fd3be5b38d1492c05b0f +d50449303875ddf4e7ba3b490d25bd8502a1b84ab6c8b07fff628c3486227c6b9961922f4a687a4c64c980f85c1cf9c0f4dab2f46f402949d018ffd88f4cb0de9ea2a4f6401c4a924fac70a444a13ea4af953fe12166a299a5cf0fe078e9a8619509b443527d1d92c0f9637d5dbf628bd5ab9bb82fea0130de029da419b16ae3d365111eff2c9984ddf4eed4781fbee45cc5093b508d6b9cf0e695d8bb8d03968f6c9a0a38d4ab5c84ff43967f41090ecf48fe265036f2f8f80e70f4db07c337 +d3eaf0d9b5f872e30363b50b73c5e26d14e874d6a5c3fda78b82cddd472b290b1565f728aaf921a9dad8e3c2bf84ce56b720becc309d14b104216ac2cf242e0ff4769f75f3f6d67c3a534def292c128b2835badeb43c6892702d8a76a732f23243b5f2ca964be1c6dd94f8e2a284294345b2c1c6c77fc97b516e2099f0df3389cb8f4a767021310c3a04027a15303fa1030eb15255aacc4cfa5cf114c4077d2981f5f71ea87cf1e167ecb2d1fde06f899d87266844a686f0bfd355510848e567 +dc0108d5b5ad716f2028801e331a9a60d0253765358ef8b978c21eff4a34c3090fdfd9c243e1e4e523408e9e792645f80b8a7a86915fe76361f9374ea3edffe984b7593b4c55300e30b78709b302ced3c9ced919606a0d8c4041188c66767f789de9470301470a87ba0c36110af26ba59c14db1d31df96f6813572e512c2f8efdaf53772e8be568e746d1323d1ac748008771f20865f7eec2e76e06516afa085e1ac7c13f6c0a65b06cdf4c610f868c6f4819fa9e841127839fdf6f204783887 +c3d130c30f8f565e0e08b28f73f1fcd998abb0f5e6310536fbf89a258d09c8950e1fe23ef674aabfa52e6ebe6c65277738fb169621f9d86121dd49a6efb4353d44651e3523a051a45f355cf64f1671bbd673460a66aa802109b9123ec478f50aab8fc823cc1245290858bb3c379e460c3257e3be0f7b4727fce95ca25bdbe8ee936b5b06402016f956321db6fb7ab89171aacd425c4b1c1fde579df36885206d460d897e87f5b4e0e49832682d777e9684b4cab0d5c7aae8be2e8687e2cc9adf +eec92c390fdba8fa62ff26ac38f90c7254a45973651d0388e3d242d0c4ab5d035d59eb017996777bb6084c7ad19d16548f010fceadea9d9c37067f6b4ba3c551bb6e7762442aada5809f63422944b5226c3974f624e1079d1ca3da7c349b3e15a22eec02de39529ba3f06813f7a900c1f25a1c8e58bf95137f4f01909ca0fe27ccd98de5acbc8c15d7d8122c3bffcbdaf10b8bc53313f1a0da6924326d231bc783483fc89d51f29df86b50bd3b291abc353c3730dad2fe0a68569cc137e70377 +cf321803f1ced30e46704eaf1d6177251617de25e1dbb9ef4d4b298dbdbe95324bed0bea70f1972673db71807dc7daa51e506cb8f75d87a77f4ce94874efc0602c5a66a1d3f7bf1cc54be4c5016074e079625958b60a93426028a8b7e63de0e53ca30b4e25c28fd81d724899cf1e0877b58fe52a034157979dbf19e35b6934d42f8d28ed618f7bd67fdf01654f5ac26ac00479a8ca00f7f9c4867672330a0586054d1689b2733562afc844ca7dad214f947d204e397de2111de1abdbe39f980f +e16ba4024333d7b7fd95d1c5fa5766e2053d44f7be7fb24032b13d8c4080c660b5cffe1d3688a23917945989da9f530bdeaeea938bcaf5dc0624ad07800b0010cb2e1ac039248d1cd2c713986aee71e5e013a6570eea4574cab2cf0e1b539ab182aa45f3ba62a3d26e0b41f461ef7c973c2f2107c8de46862a19a85c95140333174c31313104a9837134be9ed7e54c59f9bed60c638f3979a2356bb05ee8e564bbc17398ac0388cdcf5acc4b624d9e64194b28c443f6b0d7e1ea580030e4774f +c99c693551c02e1ec714a28e3a3cce817d74f8039dfa58923ced0dda3d0a3520f4d3238885b18996cf8b88a81871dd3475e18be9d8384dde40e7b2b2a0fd73b79065e32fe92a72c60cb6ad67a3a0c4e826ce916b68844d78e4b628af7c61092553999b57aa6a4003354be0e2fcf1d6985978c5142020081c25ae1205e79b4f4ebc641d199ae0ed1ba9fe019504e5961da62b77f8fe5b83bf66d8aa0385c4c4c597e4f5e6c488a3611629f9c4200a3bd2b7e824687532fbf0de953fb0bf58a847 +cf1ecd92f8073b5630c96a72ac85afa63346619f18a2ac19b76c5a6653d8bbe92653a45b617927438376ea8e1e085b2db0fee88277bac96e34b641f4bcf8b587a5085eb25aff9b61dfc6ec7895df81c25bc5451990359091e9778a50dd9a828e31a30b07c16e4cc74532307703ba40e22635fd50f1938b4b281b34eeabe4712e4296208880df6f4b6ecf6041afebf067cb2a3db6df51097bad3707cc4fa5f733218c3d1a21abee68ceaf8de8ec4ea74cdb8241add0d96c05934488bcb6ab5b4f +d32f3b56a58e22adc130bee8a32ce281fa0104a37f41cc25911359d2c389ac9469d29b5da7969d3f20608238d358717d4a72ecc6ed26899c3518e9f0b58feeb064fcc93b46bf1324a3348208271614d980bd101e9e2a9833f06e92c7eb3f93857e44de65016fb80b98f7a5d34be9d8573d5b4ab7ba6244f79a8b96763593d2b55f6ec0c46a43598353fee5bbfb6f8c8d274f6b14597d28d5504cd004f531681d5ff599e07ef56997fa71b39591bef854d4e1a4e48fe432401e0e3493aadab89f +d59acd5882cb3d0b2748d5345fea427d8bf1f1e6ae84fcb61d9856d733df70d288a94b0ac6fc07fc1996be10490318ac4f05f1ba25b2bc219033b8c141b9f8001f8b8a6bf343a343e73b9ca370ba845bb576b0527c7de4bb992cd6a08ef96bd3fb36bf8d6d015eae7f388179594b1c989e36f5c5fbb8c7d840e6eebbd3aee4124a68c1e825dc4c77ec8b7ab74212bbd3ebf2b64c09cc6d57667ca0af8c0378e9dea0609ed2d9ac9a31ca5e567f4d6a88e35e3510bf60a3d9a2d2798da404b70f +c67fc9339c416bb1e91300328ea7dcfdf1b81b88d94f8eb0a21bae0f7d14501f9fc9ccf99a5121204cfac7bbcdb3eb4aa513148601b24928a43a4163a9e1a2e0dd0621c678e334d7d1b93d63e253b83fc5c00198c6f8f5ed49cbac1ea283b8f4dbaf68f93e8563f5398da33404c80186fb7634a5469baaa42b0067fd2edec895eec9664df7aabb6753d2584a37fad36b217a6b1bb45d525ce2958d81935d9ad27043b700ed361534097f71644ba5248354fc65368893a82525074ca59b33c707 +df094d08bc29ea2575b37881ea4b887d2ca8c2ce8603b8238be92efbf550b6a5776e3f1243960086c5e7a9b2357a58f0d0308d8cbb1dd16d9403d14132171c199f2b9bc9ff6d9e7195761e7eb442d923e64999260591cd5141845fc2735c1271d353953b512afac5b9e49cb4adf6d0a35e842bdb175a5833aa4577371366659a5643177a013780b2694881f5219159357825ed5f1481ef6720422656f8b3ed05188e4c6fcf2574ec70b6640d77bba4ca3b8861e66c270e4544b3cc741e646747 +f91aadb279f4bd6c27ebc86bff7468a99dc38b9b1c25aaa5efa609d63323a3ce7b8ef665ed2036276ae113c3c0fbe3f0b5decbc2108a0d48dfdbfd5fb6db501de3da43d70cd2abe71b9177cde0020683f76d50a7c7b455fe7fdb4dc79897075e1ee5e0c10ef5d85b49ceab5584f25c2c75648a2b37bb57548cdd5ea086753b9707d2fbb5562a3a3bb44f6aa6d99d3ff590b8fbde4fa309a25e960b3c8c0ee71b8081da2dec1fb0578cad1ebd09d3aee5fa2db4302a44a79d4017fa0a2964360f +f2228ab30b6239a9d943f9d3816f30d71cadb72cc642b61c360c4382196c2b06ea08255370867b37fd8520af4fc7b0c963b7656f8184190dd63087230f702e0ee7c7dc78ca7a3d9e3ca34f102afa437fcaa4465f21b516173ef10eef7859857f00a0e3b96ba1d167c439e05d89e33891d10fbcca2aec86e4aa4e651a631d055ebf07a850ec2b17302071d0ea337b7ff8aab70ab84cd43d474c6947c06e623a4c3752d61d75e8cb3b594479a0805a1732c57d744bfd5ad86c55ed482c0e1def57 +f2a9f6ef469448974e19bee757bff68a59d9798161137c4103e7000fb9f12939fec3b1bdfaa93429041fd60e3d0cfeef9275e26b81f1dd953b487553955b31a431e9aded04d7c35c816f0b6e2dd4a2bf380251121e6533d5b1b72d8db7eef39bad552a913a10b38bf2ab23f55a548705a526ae0b7d9881d347a963928384c519e85f68efabc4f06a057ddfe509e1c22a8099fb3e68a39cf2540a79324499b45af55b18cf28fcb302d6e1ddb4caf256604c633a87453a4a74feedb524ee21a2a7 +c69ef9222d094d21d990253539b300e7a99d13427999234c60b6585e7fdb75ede7928a15b56b1293eef00ab6197f98a59b9de91902c6f3e64d506e2d7a1afc5f2eae012476918dc5d14c4b506bf37b6cd9704e52501dc7b80e162f80c9340de7bde4546cdcabc7dd4794c4dd99e8c1885122146dda817e65dcce54f56a3f0a6e9e7f193ae2a2d9e6b0fb74508cbe6975f8f9e42e9186e486706a0deace9b08f205f3169f48bd31d6bba9dc3aaa76dc49240230f5d73107ad247ce23ec625b657 +d18f1fe4da5f9d9e50d38cd330480d4786f9cf49459eda953c20990916f88eba1ee7efbd32fa5d712b8a5b9b549e7583e08619868a918529dfa21ae1242abb84de26f98ffbccc73426c965a13a3ca25bf56d79068721ab326fc487e3c0768a026e4552f324f12c7a9963ea925f91f853522f34199e66585705f8b31cc1dfba0fb98f7ccbff91bfc6470d64091c6d54ab92aa358f58246fcca507ab2a53da2fb1f64d2a791ddbf26ce86c7149a4a0b2cd66c96f90b40d6a173854cf10514ddb5f +e541d189de1a44ffa373a1a80e097add66729e1eec8dda2d7a35d7d97cebba07cd3d20104df7774530198049028d7925eea2362baa6655c6b0141748b8ce3beeda06f61be3ac9679d95e838be093983d9b572b0eecc9abb901ee1c2e780892eb2004a52f1b62dabbc40531047ffca1e526af5a6fca7d71d11bb0c5f68c146a20ff60ca1e58397d27bf7dd98879e93071c76d910d48aa8da35c56c645ad0f4eccdd18180a7cbe1129a71d98848ab35256dbca0afcf2cdde393fc24d2e4f7a19c7 +fe30909dc8c80df8804a44247fc8f52317ab0ed0e5758d92ad9cd466b4f2e507db294394cdb9d89a7410411cc4e4f6e41106db38be18b8fd802aeb4f29d998fc61a818f9b54d0e036331d8f891df5d08ac736401d64981e8e18e7c39ce45d0e89c4fa5c08b78407db6000499c1fbdcc0714551b12cbfde3a30c0d239d8ae1466c50a04b0b8852c36858c6b02294f0147847a41c98707edc4ba8960743224d2d80667f278241fafc4b0be48e65cb199c662c83cd04796cc3f8058d717abd8d927 +cec71f618c2f939a1b30763bd7c586be00f3ba2fcfc91b1311061d4f32f198b6818b8787ccb9c5d17977ad87c08f9b03e22f7252ac3522f0e13ed289110ae9f453ac9611f0a7ee1c2e58aaf458995def55204ba08949d21e06cc44cd5a46bc13974cfcd2fd1747afa94fb26a93df6b476b45306a9469837e2cddec7ddac56e8ccf6d7e49605b6d3a5f78efbe4fa532d7c807371ffe7c512816f60b8447cdfa8905dc2b8b05984ed8aabbba7b24528495f1b3c1c2c7d0e11680585edfedcfe287 +cee373b7ddebc5dd7aaa054d7b36f17eb8714c160cd9ece3a394de4028cb48414f300f5b4e4e67deb639e16c86a062839fa53fc4881b95a0c93516f7629572b0b8757ac612fd20bfda6d0b7718c7bce64e0cdde8d70e3029626ed7101f872e7989bd12444b3df2ca5552ff80b45f7fd7e582c67ee47867a7aa59dd0f7b97532e34b4200212cfcb3c49f187182eae3588d428fcd837644d2cf02715453cac95bed6d2799a74fe631987ef3a43fa7c09a2d7e0379e14e17932cd5f0cfda6b9870f +cd82b1c59574183a052c0b41cba742400edcb70d252d379ec89a2297670c94215ffa5534b47cdb626553309901527ef1bc4d7c793d30bb6fac443f6a8b01b7bf4ec1f8bc47e000894a60220d34ec9161fe2e90f12b651fa74cf0898919feeab073617464779a9a42f738df1ed3ec740dfec0d86c97efeefa5ac76d150243b84b06c577f157368a44cc6dbc8577ec54dfaa02ef6efb1e9447cc84507bcfc79847c7f963905c8dc9a23fa6a2187e88b0baa74f729b3d6dbe664a7892b958ad9397 +eb2df85851a760ec96419e56f563f90d026d9fb2e8555e0b50d1425e6252945488748cc2a5e27dc43b0260929ce3541387065eb5c529ae7a160e5451c285060fff94ab069c3594b3f7adefe8e7ea8f7405f5c72fb015190ff8b31f9149c44423ec4e1ff38b98d21c3659198fc56b2b5967943921aac7557f7e9ea4f6ef42e62a961bdf8d26197db93a2352c4a4e8d4bc7b00b602b97299e18177bee0938d07c807356e79710c973a6303c2294db6fa1dbeec2f91e8cf5f1e694fa3ed2e3ef42f +e44f252968b02f6c00140738b115dccdae7269bd77d78f09b1a75789b0a5dde9858badb386c9500fba5787e8f2d752617b9d33a54fb102dd10a58542e54e6e6cfa0e9fab11a4757548a6fa94917493c7574bf2cdfb1e5043d75d894648e438f8f278380dd82ae1a6e084a39a3e3c175355942faaefe13fdf5b03c0d106cdd92d906f492e0decd439e005504092fa6cd12e8e4eda163b6642a086570975752827e0fd5e655f433d5eff52accba825cb7baa4274e45768bcd3307c213a603de7bf +c00e0d55eac6a5f701ba4ede026680a2cfa1e1331c3c222b88ffca01a68a9806260b5a70e74addee6b4453f98f49a8ed2cf65d03b54a89c1a201f158c90f0efc78ede46975ff75a717aeade44f8efd494ac2904f49f3e0a0eecdbf560a7fbef94dd5f6c96c02d06bce0f858e7ac5c9fe875bbb8e56b6362af7f3fb1494300ed8fbfaab3eb84513f0c91566d6e6bdead5d76b181adcb178d7560e0d39fe561d7b34b54120229c6b38fe2ec6f17e4ac60fed0d9e56543a333c4f7c39b7286816cf +e08735c98223dc935557acb9a1806be61a52c2b826e4781fb3c80c2fff9b60ea33306bca3fed88db16df002f8abc6fdbfb323ca690a01cc1ef7df823c6ea2b376046cb7f4a6e85f756e3aa355c00900d0f0189773c429b22122ad05204dccd757b6a7794ee920aaac8cd9401b359f6d13ae2beac9541f2c8d1b97a4b8c86743b313054c8d916a073e79acbf0b9063fe3e8f08061e6c3b0e7f958fb7bc09659f6ee80a50d545bdd37f1c6f0231940762b4cf8eb702534c4919adac3a25799ad47 +d4c06ba949bba21deb5a6fc6049ee8f13bfff622efa4801e2815728209b229c6098c7217e1bf79181b050448abd80aed0d716948ae18ec3f50a135a6bddbac2b19071d58e0a1bb8d3c398a344e31eaeec94512a6c78810d2405fa6683b3269cc0b0948ea09634c515d9f8f72e856a4f7c2efeb1d76151598c9261b55f1fc4ee08ea92a943ab71f5740de390f2f660fdd07fec50bfdfcd6f507fb7f8cf4dd7cb52aa6e7b039b4801a82f41f6ec444618d7a8289dd462180d9ec4de200e76ee9c7 +e6b2848dc9d25762103432b1c4354ca5fc4b8e41f754f5b4e8ee6d407cec35ea5a86efab8e7232d869a02172633e2e34501d8110b0d2a74e1f327ca57dfbddabfd6808e4dceb7af9443b9f0ab335cfc26b32ce5fc214046a10036ee1846a3fa4a426ecd85a3bb34c5327ee8840601f0300c0a91f1a916614749c9354d94bf2597492bbe207cc385601276198149c931136a8db926de69d0452bc5f85ffca6d7c3a54ebf02143014ec7b91eae6ec1371a9cb72cc73b52710afe2a5066c37b7e7f +d9664743f68a9be8e38071337be2b41db69678bb08f6379e7caa231164cf5d82b69e6aff556fd4016d59b44618889a3aba4c16c89add120339c535b6fdb73940331534a5f6a3055ff9a27e8340a66a5e5c56a0ee4298b98579ed95c790586573ee25f37b298fcbd39201fa8d778dae896482fe9bea7f9d7427eb0a2a8f68feda96f07a58b7c7d97c298cec557e526d6a20b72cf2927b9d606e50d488cec48681e1f0cb0422b7090092d5ffea12a3a108f2f6b1ed3d295ebd16524d725f612e07 +cbd41b34b5157e2b5148387185a58fbe90cf2ac622fe14f56d173d3cc01347ad0466a823b8a91ef980e6839588f9d82206b934b8639ad4fe09e7952dda7b87eefd9e1e52537e2546ce64287f9987df92c9e069464f15bda786fb59ba568b1f03610db4beb8c1df02488fecd834eb177a737a61278a62eda35a4bcc937f54f6b5c575e05ab6250b1afe025dd8d1de412b35cd21bdb05c6bfe597a4ba1299123cce6754ba88a73dac3979487e1c1741db53a8654768bcd00efdc32a81e4ad5085f +e528e985e19c0ddd995a20664fb249b1f76f0377598309ee5db05eac90fe05944ebd56150c18ace7f5043c4b2e0f394efe0a7acdc9f3d4ccb152c3fe30ea16588b24b8a5a268a96999df3b39daf60a6dd1edf637d5c8310791e34e0a3c503e1ad5ed3290cf9c40897aa4fa62559d072ff9b6cb5f62a3c8d53c035c025b7f13101ecd8a33d0e3c887f74eb52e9e8c7b6c83897c175c30191c9342f4f4ec8a5edc3e938637d8399ca9bea370c688d6fafad07f87caca4b882c706a028efccaf367 +d92794a0218bef34defb3e1ffb562410a196e01c86f6d8ab488ba580b9ed99c7bd6a8c9ba1129c1c598f8ba7ae4ad1c3ca82c308394227856fa7840f095434de3522b7d687d496c818b190c55c29bf7caad7470ba6286499fc1b5843488855159585119488003f651199500eac7f914f7d94c6941c36c8aa6c92deac88b63777f2cfb30f9f6187d47b38d6fe4c7ddaaceb98915f425eb5e65cc5094e50f4ed1344a8e8891e242266e5acaef55a856badb66963c235ba5e1ef4aaddb80ac5dc6f +d6953fcb5dc9fb85fcd981d710aab37bbd46042874a4a9d4b778e035e506fecefb9950a4c1cd423c14bbccbafd15be7935f80be9a1a75acc9eec11a4951528f2d514fd85b4c0f0d233a997dec1088962b8b061b9a088ad5f51757ec6fdfa2e005e19b912d3bede2e34cdbe5b94574cb7ce3962297c157876fb7a809d69a158f0fb9454def63f3c02394a587b8834f45149ef565e191d5cf8b2a9f842417b150fa775ac6b04e1c619cf382f25c73238d288c3bedeef2f9b30a3d158d32a2154af +e0098f3fe0e170897054689891a93d16cb72c319495d4a83ac526b6a3cd71fbe6f5eb234252f4bd0cdb53480f48558275daaf19eefe1d78a6d189f43d8e28d39cdd757ea7d0d38a1b0bd82b27222f46ed839861e955fdcc41dde38fb1145439f0aa68b78c938d4f131b2e813780bdd480a053d649677b48f84eac688d984796653630646e9141fe46a57c8d87b0f5c221e4dd6110845c219dcc9d9ce3bc6c36ee61f713b4b1b27681bcb9efc88ff74c77f61c2c5cc3ef6aeaba87b1da2e3c2a7 +c04147d515e8ef25ea9145668fdc8c9862c81bfd5cec8294612994893896f7db1f6981fbdd7702f7d81fc77cc93045a7cacca3782b8dfcdf2ab8c62aaa80d049349f3d610db00025ed947652ccbf2beffc165a4d76000e328ede98570efb07cb0565c1f26b97f73504ae2918ac3d56193ecf206056993123cfe4edd9ee090f6e47dc71185b3a51a5aee4761850115d24668e28d87ded88216c8561a4c336c137876d6265ace0507de8a4fa2ce707443f095a9c1efafe98d737eabfd5aea1fb5f +d5ba4cb2292a2d6f07bb8b6796a5eb661aaf4d97e7b0c5a6096356470dcd610b252dcdcdf4d56291772bf128a072595840368ee11e0d9fd4eb9f94e54655fd8fd15dac8def0fed292384059cf26783bf6bbb1df2243a687233855ef37284914d0bc028da34847197845610d249ad86f8c085fcfb4f5b1d4be1f56ce2d3367aa7022032dea6627f00a5d9eb51a10eed2d660d2f9e336c17640cdbaea9714d217b8554994b79742fb74c6836f324e53168af06a70c8e46314e83c7244254bd123f +cab548253a0db434f4fc981af977cfb469e0abe8548255d857cad633a64b91e89ca08820c417ffdd7e7de6bacc01f7c9cff6c6c1f0ba3ef4173cb0a524cf2ceb5143c726dc3ba0039bfca865c99b49c76acd5f2d23a5a6c998cf1dd2c98d0a266b6dfe593a1fc3919900ce35c8b866401c7272193716dc0e64c980d1b2915be80f7514c2aeb0aed233affb4d1ef7e8db496a0890debd5b94155e2a13858e66f44490066cde0b8c732017c87efadb2c4f2d21aeb5e0735f63711818224e8a951f +ebe17f198193301e176003e7f53f4786a22b96cad017fa9b4b3cf7663c51186ef79676a6af05e08306cbd42ebc7db616917af98e824a753e97e557e7042f0e7ac0608bc8cef78ff0857a136331363d4ec9ec35150d1783dd1036848c60c362339c3af0d82bd8ee6d79dff84d1729b118033d8c37a12cd8559e16c7b2d959e8c694f581fe93afac636b0d6c7ef8c041901ba0cbc8f3ab13390310cd4a9f8e36e816e66bb289daf5d9c948848bbba616e7dcc82c9b49beec058804b429b36aea87 +ef2b389680e0aae58fe24c605fc12500fec2b6d8e85f7955921c3a5c1098294ba2615f090d65540855fe074bd0bdea7bd6ce49556daef27e276412983b4eb4fc2805276f79dda3bcd5fa306cf2ceaa91ed264dd80c8f6936e96f1e3bf24fadd21d557ed15ac417e49e3e78ff796782f426a8bc919760b5f3310b06dbf899aa325e25c1f0aab89014705fc9778dc648b2f272e128bcb70e63ae2ea78dfd0930b395c585d33fb87a8bd56f85e156e602da79f5bb2d4e051b41cd5e1a0cf3df8917 +c9ceffee154f772527dce6a6c8b556c07b67fe5e52a2d1ee35a07b284c59da3f76923ac9df1c077cc544a060ae16545647588b4083086d62914638ddeea933c238b8f7776574951ad748c24e4d546de52f6e3240b657f086498b16caf29ad1f617eeac791857e85c148c67920a41dc14ce2b480b29537933ea7b3ec0a8f2a439c3f9935986925eacfa27a4685ebecbeaf510994fa7a4cc08bb7f62709287e638d946665c51fdf2dca0627a22d854114f559101e4f9dd4c11dfc0d158951fe4df +c57867bfc0d99f61350eb26623b14d402d28caae5c2da3f1280df3b473ad89d6b3e3fe6e2b0b3e99605e3480c4026ca97d86796a5b6ee382caee157db9bc1ccf9967d9819850d83368fd881080c36e745335de03ab136bb27df60fc1fb82d658459f65a6960e4ec502a4b8af37a7dab37c6e9a73d3b8c6145f182bb3a103770b8650062f5617e3a263abfe5955bff9bd8ee4dcf23352e522c735755499c5bc45ba639e7ba9c9b1a36d5a641629bef6744085a7428ce22c1f8f05c7f651c99f3f +d83e7c7a88aa24478a15b23bd3fa117ddd9932df8a1d8f41d0ea89406a2e9f0c39bf82bdbd622bec0a937e4cfcb640fefa703ff6c1df8775dfff3ccdb21268daebd283ece5bfda9b5397adf8a34192b00e2b36bcac0cd7dc52c150402029566688d0893440ac731cd0ca6998b6e70acc61112ca50ff1b0edf34ef6b07d9c37aee9f9cdae98549d98ee33ab2e634cfe40872fbb8564c971c45007cab17ea3e17accc052408a9536df254f0702f843f91bb2bdc75f9e78c59ab24a8251b38be42f +e24fd27a0bc2e1aa7e1bd25c98694a658e7bf9d7f8db3119463bf9fda2bba2a87d17799f081c86286de35f1b1859b24994537eddd3a57aee06769e04bd2db52cf2f56cf78f6f2a261e54a60ef9ac0eac6164f649eaafeea8a039d4848187f7972664e6fa906becaea79ea4da840493bdf99e998ed0435087bd5b5ca81fd20ac789286849b4dc8063fad3e35119530b9c163d27e28c8ab6c0ce7516c520cac31648a0c8599c3f5e26f0a797324f78e25481a0f7a33a5a94d1bfec8b7f5472705f +e4bfeb1419f74b28bf45a552a7d22f9df5ba991fbeac7f6e9319e10c987181d49d3383d140d27b6ab566a319f20de59640489e920e4cc0177838ddeda7a8a4e44d03799d18f7fa58e16795c86d9b4c990fdcbf5007795d02021922cc1b6bf77abbc389e63ddf0ff0fc691fd8ed6808009334669ad37c787fe613b6287b40a02404730683ae2ac59155357d484ae1680c1c3ec022b9c6ae1ec578b53caa9a27e3e498961538f1f43b6aa7850095386a89b5a8e382861cd3ac85bf229c21a93c17 +cb10b78205c3b4983c364d244cc996fe534e22c20dcc106c51e56549c10ac87ca28bf44ee5a1b54fe539d7fecadcd4d8de8bbf7865026be84eae832447901d30f5196afdff38f6c475bc99c8932808c698b1ebf56782fab39b45897b0f0f887154f817fe4b08d1ee838c372d33c8c14bc0107556d33e47f70bc5c7fcbc54b1d9d495da8cd6a2d34d8be98f5940a53f09fdd50f4150e43fc1acc39ac8a92af8e52e98c66728153c6d767ddc02ff948dd25656bb104a22a58230b9eaa4e4ac8bf7 +ca4d623ac863658b19b52c9d3c0d7a5823b8a5a66d1f5c1b5c69d4d6591a009b60961a3a7a1e29462cedeb6a43a07b6d1e705767cf2ad22dedb4632849a7a4179eec140f80c0f1051655c424703d60a5dd3f431f07d6dd8e48abf0bb432d22912d6c5a120a049445f8e49f422a1fd9f2a2bb776b6354fbfec70a2d8241c201b8a322792bf2d94d3124c075f2a5728c2b80778a4d82e633fd205eab2796fe684a377336ea95997b7e1dc5a64da747020f83d8831edca83bf889a746d1ff1a2c7f +dafb925eab29ec5494044852bd82ea57886c6ad500cccc60a9983ac2c77572226c828a997f60cedbe7d4042f6eb40146fb5509325ea22b24933972ba848857809e11d120c23c8bc3098ac2f97adde873a87ec88f8148496f143d9ddba3bc014b8de540d31c46aa353c5cade7543f0c9a9bdf7bb0b0480dbbb5cb1639a02d6cc61bede5e2cb1ebdcc487c7458110c5057868da13d53ceee137793db1b1889eb5461e1421de9215245aed082d5365305f34e86eab5e8736cb9fc0526d6eae5b497 +e203dfb0639762a192e3ed988d5b908f08db0ec596a4332403a0fb89d97aaa7ffd5d453d9a11ec64e8dd2f38312fd1ceb1a4bc8f78ee81b736e8eeafa025a19c68311862189fc7922c5ea4221f80688771521216ed7b3dacc7319834535fbff57c8ffdabf676e592cc0f07d51eb9b992bb4a51b771642235c3e0a80efa4042043cbdc990312662ad8986202439d6ca88ef95edde3809840ea9e8d336017fb8e999dfd4fcce5e91be3363cc71e3fea354bec2eafb9a433ab4556790382128056f +f85f213a90f8c06dfbf311c21cc02eca75882bc638cc2f12c4f0d20b30c27f59e07d635e4949a6bf11b453856b26e0b22cd31a533300e9a58e161e11167e20133e16115e18fb7f6d0003295ccf192bb64f7dd514a4552e88b01fa5199fbae0325890d836cfa359ee5b2da6c766998fe884eceec80bdec0b774215ddb05a1d3f59c47ed62fd595afd44a4fbe088305f53dafba085e99bd4fadce7286c59402756142f3de75477841ceb0fa4c6d80623e65f72584f6ea9e62d090453313e4c198f +ea7ec01e8bcedf7c04b236bd615bfc847154af2800c6ebe8fdb9fca9a0f357c4d152e2b915afd72312cb81d124545366319b9c24841e8707ab14394026468eb45f30d9882f6f3dd2c1624b692ca7e59e3bbf90048d5e5df6f59d65f356fa960ac25989d09ab12074b13ddb609d69ae6b8ca13e965e39f793d5da32f1ac7b6eb9f211fd0c316dde2e95c7f1214e7dbfd5b4d2fbee9d78c4ac8c66355b0fa05b4f6d9188d201de59747e923b4c3e9ba9b69a0bf1486dba002487df8d115dd5a30f +fecb947a40717fe65d385cf4b7f1db5f5967344b19da9697173099b8a9dea3d86aaa4c0b29a8f7ac9d0b65611cb3ccfc669b03846fae2a8008c4dd129ec48cc4eb6df0a1cd9c78a34fdeacfd3ccbdcb48230f88a324c89b9ffd4ff3971bddd96123785a94baa43da3e2ad7916f51ac3f016d25f37ffa6f53ad496a7acaecafe7ffa277287be7c74d5871a4b8a30efc5ecd42af0534348628cb137fb06a65530e7dc44ce13726266eed2e15c8b055f8a42aa1dfe7b2294f8c84639b0f7749d417 +ff25314d1781e47adfa94ce016a0cb8979785b163a6605d064a987556a22196e53f0871459bbb60ef770b44cf460b14fa2baa7a86197f58c60f89019d037cde334f030d30a3e0e31c86249566a5bad9ac21995708db5e8ed083c5834c5815cbdb3ad7bac2fd9bf3e97ae50b0853f30fd17826c9f8a6772573c33828d90e94836cfc12c644964541e42f78d14bc2b2ad4aa213e7e1ebd0d20f9a26194da886fe7a7d58b657f7202febc11b594f73c76e94a94bba9929610b9e31f2077bd9de6f7 +e6b3c88aa51cb909975ccc3be3ea84d980133f6196a1edb2b8a1d50d33e8b20df860bec4c13c9cc68d7bc89ee584f7a8029327b9dd70a9dd1273e7f33413317cb728eb0b110a07a562efb95c8427c6a5c56808862fe4ccf5916e322793a6f4c997bee18fa1b7ad0384c9edff0b1d6f2ceb2f39552e686698bfa6754bdaf4ada9e2207b1172e6dfa9142e44fdfb97b948656bf782e1ce2a7455ddaaa0ebb8c667cf03f6f6c6afdc06c11698aa4693983b7be266d0bd12c243cfb14e78dbd62bef +f9dd8d2a009c11c2d88dcc00798659e768160a02d95643e982d4c493b734297c189e78ced00248f0dac5504b6b6f5c51b2948a7c455c1d40355505d506b119b0aa895727c75661c1d365191d4b744927ff37bfc02ee2d0201596fc62c9d14b2aab3acf166711ef5b9d25446f8bf445e0f0dc3ec88f33c00f153feefcd157d31cc99595f561a1d074140838c03c08010beaf314ea57871cb4b365efe06ec50a439351ac3d03b804ffa655ede83d546cff6f2ed17dff06bcfc746798f317ea8d87 +d7c00f513d54dc9e185cca5076bc0ad85e12cbc27af6989e80a79e483c531bddd1c83e4b61ea07d06920db445a713999e3cb9e04bb94032ef165df50fb0a16c53954f92417a27bb279014ad1cdeabe0ec78f0aa2d192255bbe0289777294bfe61c9626976853c56663c79ef57e5682cac81c4261870670d476dbf8bc71d68c5724cb45ff2d975dbc3e0ddb7920ca1665308e7303d195b04af06b06dafca0ae07543d42d4c9ad695e46a2b6289cf0c6002d5560a2ab234124f7c8b4e17d564cef +dff4771e70c77fb20b865b9e949bdf1f8b8d8d480cd82c4e6692fc60637bf0071a6dd62a6f9ce1feec2fc6627efc628b4d955e2655be893bd3d2788a6639555202b25f7651b9c75b33c86b69245037b77ff3cdbfb6110f5d16ddb18bebe2461743c89006aeddef7a42c72240abe913d854402f60dbde895794ddb7e387a316bb7b519110032010d01f193746d59862c5e99e9689d76becc6a39c4dc86293b9bb09baba40230712ba5cc92827d952c367b7865ad7795ad9a9f222aeb8b5968aef +c06e77cc82c10ba88803bb273088750675a75dcf6c9f179b8038f3e88e1b06a7dd82141ac05d471c2fc76c2351bc98e596c762f5033032d644f52b703a9c22555e8463cae7f3381486a7e150d7ee86f35e50eedc09bb66cac54b9a328330ca529be38782567a73f6e70e1cfb744ef24c2196ee23ac293062b4fe41802f0049b226dbfa3cd7ed23ad0d8d46790de60c05d95beb15476c5fbb2ceaa157b54654bd7d5e8049cc84408f5ad82fdc5e9353191d5d0787c65c003a9c6a3b634825c44f +e85387b2a7f7d68a162785e2ff0ba82eedd72a4490f0e26728ebcad981601071173dcb97e729dc93373f8aa98504c3a840e6f014fde59fa0b6a5bf484f7a66a9a0bd49f3e38ef4b452fc0a23eab125ebdc8e620d461bc46edb6ccba144f160a6e6adb501407929b6e2c21bfa2bc10229fe78480f343aa074ca7a12fb75beb90d2b0327b2b510b9610fe9cf289ef53520fb3be2cca0cd9628b84c0506e114ff4e34a62fd041a3bc99b43a01d306fdadeba5bf8e6a0270f09bbb9d7523ee362d57 +f1dab3e096579cd1a8d42699dad26c0d7b92f4095594b45dcbd1664eb0a2a9fc47211201157b784224777eb04ed6ab57c737f9a413af3f64b66e4e680fb18a85e05c465b81eb5a1287c7794b824dbcf45876a99744f876bd9c74086f9cd89028548af6c5627d52d78c1e731cee12c22885e3f50054ec4675f84fd20caa05b356148658d8e3bc173f476a7e58f14c5540b3cfb04fb95c6f8bcf8d6665e4be219e9a4ef794e900aa18c85e967d4db8ddf790228aff1c2a8af29ed443e0796ba11f +e3f59e4fae44256a9947deebea9a1d783150b074ed29879dccba42048254a19db68e6d3c58aae21e10bc3bd54ccc0ae6ccaeb7b7bdd18579e6c0e0b6098c91f68fded5005077d8c84f6d464df16716185fe3721c2a3a7f56b0d2f36b380035abaa5974b5dbf18c5651f3862e1daa03ed6cd62fb395283ff2bbe2b28ec1c5b004ae4485ecbbafeb0f11af73696c75394aea242209c9e18d5c49a08291ca372fa511f6509b040144795a68fb56fb986d90ecbe26e6e9cd7932acde2c6434ed6ac7 +d256aeaad75e78a6af42e988ee22379996dadfb2bf5a64bf2df00b8e54e9950a004fd213f6f0364844ea848f3ad16825ce47766ae33aeb01914237fce52c1b7357e524088a663c1f83f4a4cfede8cb6929d61a31f48546c305681dbaeb18fe50f51ef88c5026d1a7df7a1daa33d8dfe861c9cf1edea7603308f96b9820563920cb03b683c0d96ebdfad241f9fb63bc0a1e360add88bee8f99a674057f7705a850ff1805db7ca68d0b94542813142091ff2f995ade62fbd523f5225d69d87d2bf +c914b58bf738e916bc602fd84597f4df93ecbe044417c1f35b4fcd4f3fd07407890b1e4cd28dbedd0dbc89802f053cc5951b05b8233fb90c04a5c0e2294fccacfe4f97d79bbc8221c7295d07e9c8b4d27d787f41bbe656a671bd93b8f471feddd85290353515c12784840fc42a95bf9d8b73467a3c97a3542294d8cd3cdda35139e7e50023577718b443376f7bd6955030e594f41b647b416881e5df451d8f2dd38421c5a3fdc57ef4eb40266c1e5dc3743c3ab0d6de33d250c50f877753808f +f6856214d8ae1174c38225f6c6858a2a656bea4e12899059064df485f2d6bc2fd58dcdea61bedc9c45649d5c664cd40e4a783e1df3bf891ca0df992a0c82df3e31b9cb33ebc5d922cd2bdf7aa19f4211535b4cc1087b0068f95503f25b37365b6d444d8b7d82df1219a9e95f00b1250ca18e1bfb41597f271f3232e4abdf30b80e74465a25157481c745d7854012a546d5ba3a7a7f85f25ff769a6053e60b3790bb1e8139dc6f4d87812fc83e94c58726c9af3ba9269939abfebff839da55e8f +d05fb126d146ca8cd23f9f8164e48e692d3daa2c8dd9e28c427af7560d80efe82a73ccc0e9610c70bb87baf9ea95b48b5f9c2057c422358113ab4ac30c2806ebd492bd99077dab66ab2b8a61cb2d1b6dbf6b9066bc80a94c2c4a55ebbca2d81e4cbe1085393838496340671aebdc923e58a727e5dff5003d07d97d125141b2a4f02ae231c11f0fd990cd3a54b1be23f3cb8f7c2a406364ee657d6fe2d57938e0a839ff524c6f5ee34d233a15f5c2b173dff74fcd12ec1ea5c1e51f06c1d64ea7 +e1bfcb301ccb9f58ac2111bf79bac0ad6c834a6d42900ddae067314a8f0f934a0b49813d69813c145f7033351b6327787d816da281946fbb9612172fa78cbbbe4143b9a9b66ebe17f53e7fa9be8e956a29ac5d615f1f8d657098e0898ba8558f9356eb1cc8ba3f430654e3157cb0ef0c2d9b7b7df9da95d9223c9324e1c64adb7c7d874510213c6e28a6eae1cebe78717df83d2a8eb82c33932741889c8f63010cca837f5281ab67d61712a72bd9738d89cdfd44342cbefa4cc1729d2a6e9ec7 +c5343d61133537a734ff293a5e1aa842e0c7290843f4e7cf379f85d641b4cd3bc65ea0071dd498932b3e44112e53ad1aa5240b696375c7bfe61b6f37d3ba5e9f7922f29e52760e207a6c62b8e1b4c31aa7bd1b64d30dbc0d5474eabc637e9502e4913d36c4f5ecadc8f16a2eb291ad148c1286ac2121e2a5d4997ddf468d265c056bb778f165960458b76b77170011f6aa1ae7b167daedc0e6b007025d9ba4a50cc4b81625b02e809ab394e3a748359a9588a56ff017b8cc75592e13afa2d567 +d7f68300a2009fcc7795e66f920a6d2912bb369a0198c3c0c9ca3e327d3462bc9a577df0f82f42c8c29eea53a91e0fa236012657b19a7d72f089b2959482cebe49f081bf1e32679016c13cb5bacd72c10432aa359166f9742b6bdc340f3f511dd34cc31671a2b2beaaf982154d7fbb4d375c17a173379d747f25e2e65820911db927d82740a595290b2ecb786bf19078c342f9b7f434c4d2388b4c24e98fb5462cb0a9a80cc5b6b36cb8c381ac3f17ca89fa5197d7b949ce5085b21d13591847 +e12b048e13da2bcac10ac03d4240a90382749ee9214ded61779374c1ebc16dc8d2ae873c95d97c7ed6c1907bd1bd24a75e4d38f50f2ae4503a25efe57ebd5170767f0895376578343d0844e5836767ef9285d16804606304f7725c50aad8b2672312e864d32ac7d03a123883d555fcd29a7a8895f44967e256d6e6a5d2fb8e2682242aaafe7f0f67fca2732ddb1bcfe1b7cd270fb0aa4227b3ab48997c3c11b38dc8c06de5db1faccae3cd344ae58ceaa0bf335bcac9ff0a5000370c8134472f +c51306d0c72e09cebe49e644fe0521fcdba1cbc9f08ceb9d1b7b17947beb1ef795f7dfcdebed34538779571756efb723666f2752a64b91ec94d41437123f017f948020ba36ba18f3ff6124c22ecb999dcb416a807fe2a34950e486c1674cb9196276e49b13832fdd5125a4dfb3004679c2ffd492e923b22b64cd074e308caebab6117539bd5e2e61a0ac4e1284bca1fd1ca4e14a6055a8be06a69b1a6f3af9e2535034c93d1a67375ea0f27a635c9aeafab88139997f3c6d9f2263386649be7f +cb4fddec0286df4218d0b600d275dbb83ac309fa91dc482aa0abc19fdca54ea24855b15676eed60609ae31da7f264cc09b882a35bd5e5d1852243f4d5dc038944d7490cd60ffd5529087d6cfc4f0eb07aba339f9024a4c0d638a42d97d0a748f60992e9f678668aacc4014afbaa32fdd1aaade913070ae015d586f15d8f3a28af424299183e8b3ca4a6fc5c3752178fe60f8fad9de3481071da7a7483ea9b6f95237aa527a6d91f3c193084005d412f37753382a6299443daa4f6c7cda5ba41f +f6eb190dfbb8af6a8ef0e468152115302030f9b9c532058d169227da5914a28175c5ad37f7dd10fc8718e85ac45f5fa3618bb00b401f81b7ce9421a5373233dc803002e7c8e9acd5fef947ee228528dcf3090b13c6b0bca0bf1c85f4a7136e3e9ab19be6caf1c22fbb42a9ef48a5ed911419f2b48293145eb983214ee709a014e8cee1924a6c4e4fd09514fbceec3b2569b9c7545894875a13dd19c802bcfd8fd7cb017064f5f38270dd2712c163a2be0ab1442a9f94508daf6ba22ce6798d1f +c1353d6bbdd6b4e3aa93f3322a3b6c33615fdec98d53be3376508358c2abb53f9b9506b7ab7253a19fe7de9be7b2b2050277a77629bd6532d389885bdd7329d8237fe3dcb9b41f8cadfad20ec5472dec2fcea21cadfa9456a92946cfca0b1f054712edd91144696e5e0cfb9b3e0650b010dead0b1d79d832d0001a2d5d8a20e30e91e6df049ddaa05b37e042e7504634beb74f9fe509f7aa2dcece62d61cd3fb488ead79b66b2f4ab7defd4b1af5e2a270911135bbe50bea1260ede91469d7df +d8be5e31d12d4f696433502e93837720004a8a5beadee0c482c3638cbf963e99bc52322461684de921eaba394315439082d12f200a315728dad8e0577bf088983931c31c6ca84c5fa325e1abe45983a0ed15615fc4918a2d9e082ea6836a3f83c642605556586eeabd7d15986d850c9185eecac5b1521fdd51a5e2784b704d581774b0355626074841c2027a954f01fb2f6b18d188d45f0a39e4874af3c672f6b76ae9e5f20fdea21a6e53a196db4e23707ebbce4122fc1cda6e6871eff2c07f +c1a0400401d6738687e5a381638a0a566ebd86c44d8f0b7b429e29d350345edd3867fc184b7506994aa1120129c87caa96c63b0f7181a88c42fe055cbd00998c0907b64559310f87ae3709f342fd4d2a33c1eab540d0cf5b7aa8e67f65e4821a0a8f21c2a7aa99a9c9de8f5900ca873d69a080a2cc4b0c34608da2842a81f96293a9bb781e7d71d427e47b08185ab2a93c99a6389e7e47ff35a52a5725e324e4654b5a3ddd000644ad0f4eabc90df900090aa5ddb788a5621bdc02f3babe405f +cb29e545b7e6a3b2d526c7dcc29bdd5b32126d27a47ccdbbdd01ec76c161e3c6b0b957c20a24558f4ffbaba0ee74c21ef2d0265012f01fad9c9803c379fe8bcecd0ffe0a4afba466681b2166e612da86bbe1d55b180b7bab59ebb16255c95d43db9defb3b6150ace6e6860dcb0bcba9d8877ea4c663fc121d128fab54bfa91e39be790621f1e604958eed64fc857fc29014fb90c57a129acdbb1e5e4740840303c0de39ac3588bd8802570d909dd9cfbbb307ea19b95f24fa570d2584e02ed77 +c3c238c111c6d44f286d18b1585d7780111eddfef983742822549d8511e6dbc95e61d624095fe0a49321b219c6af3b4b2d495e1eb1e30c4f36fd2e58b025417e933fc123872f20256a639be20db79a07714fcd813259527067c5cc13cf0b358791c194189cb1eb34bb30d59339d1e82430339b5978010814d4a87f0890fba406832f096b48075614f7eacd7a9ece128b44314b69a2b90a83fde14f765a65af67a65ee78659d124a27025d8ae367acecf504c9092400e4b3c32f41ff98c9c9e8f +ca6e23fa959efc6cc58194c1457de82a44c3b38f10fb15cdc6fc54c0c8fc8bcb6f6800502d84dfbd3f94de4cf57e299a7d6b0259dbf1eeba8e699cf673de50f0b46c5b6706dd8c425e9fc76ccdd697ce5169f5804938a45349c9e2f4ed76ba9f3ceaa4c4604170ac48d297f4da48a479ab2df72ae07788edb78a7e5037b2d55eb536e4e90bb1234706db9884b9ec551a39ea56dcf64867a2ab0baa0bee7e96bbb0598a10dab36bf588ae72607ba3271f835776a7115dd1062973d50f8ff67c67 +f4964cd7a370513bd64302e451c47a61e7bd8045c61a9eadf233fb59b0ff4e79324b77a87c16903e631ee9df1ebff44d275b331ed86caef4186180a8cc5bd8b5c3e2ba5f953d618b249f8a113fdd53548a295765ba030884d4bf881df1518af6723b2efb7f28da1a8082f80972a95feb0690de8902cc51941d5e6ff4665d8dfaa84671c20465b0dedd52fc5c23236c21dba6ad88a68ed4a705c216a8b4cf92711234e71b60759ac7d502b18bd667ed78b03ff6b6571ae9f16edb1b1df1f919f7 +c21fcfd3bb38ae634755656bfefcf624a27d10e920663463a59fed73327ecb4746c4c665a07fe9b7603957d70b1938b88a39b3dcbc0f1032f1630e0b17a2993f814b1d976706d848593291f65fd00013f7f8dc051eecfac902b6522889d8a900a1dd6999839003012b20d15d0a17680c87d40b65fef44cc1c71f479036703715ef9d381b52f8d7fbe25f3e10210d387b3434e015a204953f656935749d3de66950c5205b0ad399369d6d4ec88e62a7cba55248b12e68e0036407f16165043b67 +d4966e9e632a8bcf7c84a8f470026ea1a7fca01d4a7a8da4cbd2e579803196c0b6d3a54457ceab54c425a2e8fbb81a62cc2f5cc15fd8a298ce3c2185626d43879f95ffcb631acf0d967102bd29416c877b922ced14bc3832b10fcd0d0ba6822eb9477a2cc0be574116df28e0728244fa78f7b2f6e7f877e0d755f9214d5ee68274a273790883f3a1533d0556a0c1b2a01b80059dc994d93c08ae580569cd612b3ddea2a3cc83ebf127f1544e22044bd639bbbc402808476f33e98740fe98928f +e90c19c222205e6779eedc22d0f85a0ee68e4ed9ef7bd0342ceda2cd77befeb50bf2226cda296c703386db13b627e07b94d51c17fe303b983cd449168648b9403a292516511cca2b25b66f2d72bae75130b247659e1127a6fb8c8814ac191c85523d59d97bfa2c08f131c24598fd27d1c0534e6d65c681be096bcd605f5c063b0bfd4dfef3343f44aacc22e288b2da81c446c779c958a9ffa698b6298f62156887c8f6581adebea45601b4cabdeb0aaf76448ba484c67de482de6cd641897b4f +c2106dce47233c228596ed3bf3d08fddb9798f05add442be383bf2c62ac532197fc4d147c2a857385ecd1677026f712a61430a74a0c735690b1459e996d8f8d672d89818e68c3a40d3b5aad008c335838ac973b9c866957b386ac2e74477b4395bc1d06018e9c492fb5d31e71ab72936d01f64b5b35d268d5c538b2213e9a44d0698367156fd4800e58f3b6a7a703b28c92a8261752935400de9a98458c5e92225f5915f6a45ed02e70147c6fb47cc3e1aceae426ba46c7f6106793063bb62c7 +ce4b822aff00563b54c5b1851e90623192980018681ac280c126baa0fdf3a50e9eea9ac6f21b30ce8397ea6857b2d1252385c9a861bab88ccbf7995d1e126ea214731e23e54789c52302ebf5805e6c655f3a5906e99ecb2a493a83db1b9b70bfc989a6e5fa29db4cfca03ed44dbf5b902067913b9d401cd64c654ffb042693097aa1ee4822f364739cb2bce521691df9ee8a6aa4b6621aa35c1e956488b72d5f9cf8e98b1be8f85d9f54b77d9be9de2ec65cf4a754b723424374d149ad4f09c7 +d160c2b278351b59f15ca8ee06f6229b23034ba854f0d820ce47a9c2557caef5571ae5359bd6063977ef79943be0f8fbec850c0a00f6ceeda2ed48005861aeee54fc8999323e6314c7e97bf3a50f8510fa0b0f9ac6744c29e37343297a36438e223f434b5d203ef7eea8f23d3cf89ef4cf114c8844dfc43dd93274b757c5b61747ed4d5cdaa7c6b72ce5c8a8f6e19a27ef7fdb6e5fdc0b83738f09ec5bfd38e7431b9cccedf07c443d14d5de2cf99976fbe80475648f5b24e2dd2435d1e0bcd7 +fdcc810421cff3c3954af8785f47bd32d93b98eda6123a5ad408711a421981aae12dd37c42d050792aea3fd7510d537e644f98305cc11830c15f0ad05779b8ffda01f53afc53bce7ef500b4a88c66dc89efc4bb205492bf915305b199f41e4ed78dafe7a872a302c1ed622b1b3fce54f1b7669579ced4d4eafc507f37e1decf59e8fa07ed5007ff589ed8493ea7447174dadeb819f4cd3f742dff2ae0332d4f05707ed8bcf74c8c69d3a6145b31a3d15b041bc30a0cf7b4f328ba57a47c5872f +ecd6b37d38eeecd132f6dd01b0ec2d5de29362f26eb8ecc975646577ba8e25507285243af44536475649035da5a17e3fe71bf03173b29e354ebf0a98bd4caec15891df5fbb822f8d0edc8f42e3a3584539d80941e7c84336e8a81de1f2813056e5925c6efe9edeaef7d586967366452a67a77ee64f33d87f6caa2f25d560857db0b7b02cbdcbcd2a0355583b934ad21cc5087547ff194a566d6ebe557db6bb90711f431c294b280356e52a08592ca550f4979ddf3cace1cbfb004f05fe349007 +d15563f250fa5525eb36cb4785aa27cb1db4cf092fb1d4bb1c54310a5c259215dc12a892038e72b89a3218a624f7800e484e4f92a4b82ffc2937f76bf1fd60fb50d3ccaa97421692b3584a47bc17bcef7179d3ac4d1854bf2c33741cc56a3db3ee28a0943c9ef4099f987c35631e506e86af54c1ae953af47db2549686a82b442c08ff37c97f279941efc382a5d14eb2288eede9588e51c05e3af63f5f82d4ef1cfb423eebd9fa34ac1df1799647618dd0ae352d59b4602e7770a61dae730ac7 +ccde00ba215af781a86a7de433caac68f6ef3e3926eb63efb40dc4dd663bc0e47ec0750000df38ade659ac23a372c55aac10b657c85b4578e8b26ebe46e857d1b43750c603a0aef55aaac09668146ceddea5f7fc10790c7d28b284a8303c713daf2d30f39bbb489714f999239b3eae75c66cf3e73189fedce067ac1d34bdd6785f760faf6ed42103fc0860ea12c45311f410261366293fd4d8f1c094dc4378e42897b19beefad3aa42c8c4b538e4f2d56b2dd0cd16775dff14c08df93438a4c7 +dbf0697310ec636108cf1e9f3c97360d033c5ad0123f7ba05e9adc7679a2221ad0ed2c6946a9d6deab02020bf4e536dc3560578165be82dbc1cc3ab10d8b65ddbb8b1a7c3ff8344ddf49d50b4e6b36cd42943c78ec7a97ee3744ed09d79740ea86f10c05a1271eda82da9f092e348dbb9bd19f7179be8d21fd8e037f06ceee124e7511d0d5292fb752a4f5ddfe80143337742b6960410d1072e9e512fa52912bc0b057f72c5f2572450cff9c69ec11b2db38bbe68855d5bcd53706905d61cf17 +f2531b1821f935331d76e91eebfaf17be251e6c9bd95bbd53c41ce0bfb41959fb0ab63c59f6b7a5adaba01cc508b62ce68b2e364ded8724ebb1bbac54ce8b08b8c8d6d775b5c51ffbdf14e5cbc43875e910b483034c4f9620a69b07ece7764e41972f03737b7ef0c77ff7579b9c82a672ca0f498660a004ef926e92f08c5ed3a8eadd9d2d0fdae91eab822617ca607b3c44e4b26d2863799074b663a863fb298d397c94e54edfce44bd9c4031fe5893b0f7206cafaa4e1352349fd1c91ff749f +cb549950a08c3c43a8db031115b48e0480c8a689ce22f03ffa1ef7a2e156a00d401535069fbbd3404321585d524c8502200419667dfbb6c4d00c10e006c29c8ec23bdc7b1b5c485d68d5d98b175670037441e659be7391b7c2c15cb18d213550e053c3fb031916ecef777cd97811e24ff56aaaed98d4d31f545a3325a0b080da0952ba6a3ee34948994a023ac69896bf890ff0646c3baade41d45456462060f84c679bfcb9c05bde265b1a0e021ff1e10854da8f6b3fe2737cb463be8bbedac7 +f67d3fef7475119361025e68b6070a18205bb9e3f3b5be454e1c14b04dcb94a4310469d9fc909051a3b307b560cbd49ae36f2e0d54e0c129fae1bbec06a5e90056e9590d378d489c00445530834ff753c89fa611a18e91e286d0e59c38e0ffa7b5ba51af3d9339a2b0b7d294bf23d78e5f4a057621391e8bfeecf990885c21083bf31e11d9d1c9d423f3700b3fe25994b60b3763e5169f0991f23a84a98e28f73822f72ef4cfbc40ab93df870a30c2d894f4a8f9a1fb1e9355ced39268f17cff +f78256768d8274cdb086c07d818f8dd06d261d3fb3526435a61674f7bc64dab55402a725feacba36ac5b6990624380121114e20afe0173e968f3da22014a724ff561fb0e89df7b818a7f157951e9875a46f69baa40bdc0f335440acbb99ba35f2bcdb01376d4f446f112ae41a7853579ed8d15a87c7b96954c7dea94f6fe687556a338166572f0badcf603f0f2ef6961c1c079f9bc83eaf73a7de1a61e711595217d67cdd64e03df118eecc60987ec81ef192959e626a2100371352fbc94adc7 +f763a713de28b030c0857616e39dd256e2256468e4ec189d0abb5290b6190aa4f9c7d73e95f1ace155dcdca13d81c8486a9c4778aaefc312b2da622b02b655e5e9daa5e168020e27bb38c22772dbac5c384ac3912615b93e8854b35d938ee7f1560132e0016b0be6e5bd0c55a558d0a9672174ea6963b0f9fe175d9dcb6500afb9504de51feb49551c157e7c36808d3af3517063b41eb70bed5331e3938d8519dc3062b727727c8b45ec354bff69c9d983d48ededa4a7927ebbe5a689139788f +c0d3999fc4baeb40443786954e592c8d5825507f53a1b348d57a3c074feedba3da848f845042b2be036778492c2a8e2883ced512234b5900df5547d7ba322e5dcd92df1282c3602fedcd0444974cc729555b238d628816bc1d64bbcec18341c3112d1459711abe1a20ada254f30a14208e22ca5f8e903186802754208abba88980390d4e81e17a90c9effcd742403ca764fea302fcc712808efa901d94b4b0408b0dc43d809bd9eb0b167c15df92a56b0755b68d75bd84275eb8c2bcd214c247 +d6ea4d4ad88bd1cae90b6677fba39f5a68d1e4143ef0184ee5808e960d13ece7e009cf692c9626280db6c070291e5a155c96a3a322658d17d65938a6756575377ecddea234ad7d98c9a4c82a1a3ff3fdbbfaa1ddb4e3619bba2fb0a4e7b580a58b94d115d9d48d4f5e14de6d588aa8fc160531d1a106c768577ba13991c1a3b8a2c8ad0571abf63b0167cceaf42e9250e3e6150369caf3b306b9296fc22ee6170297d9e0215d688094285963430b010522e181895fe346d0ebc4a76859b6784f +e51003068eef8e3d7f5e9ad4fcb10c363feaf680025a821344bf0d2052fa4ac34afa59fb7d45898232e5fdc3bc04781ecd0a2d7ce065a05dc86c3055dbf27f4f8d7ebe08427cbd0f4726b0c2c1bb7a0b7b4dd6c93ba91006d2787916cacf6f5d797f8f4117f721781364b33212e1a7c5998473d2ab7d50bc365c70c8643f70eeaf43b5590acdd409021fd97bba3950275955f838cb4462212a5e36b49fd70971278c34c9142eabefbb441ced177da65d09e68569940140f90bf133a66a31a857 +f361b1e04bd20ed5d674cd81412874615923c8ffd9abfec4416e570d1cca51ecb8cae16ce2a776f92721dc967ebd110c3524e3e0908a598d0352be79401026ddf3943f4a46ca1b730fe47500be34c28cc1d92e3fbc6ce629dd99d77577ea6a90071a984e79699ccaa9b233a523a2549409ce93dae76b1012a78c6b503a6aa2c38289b79af4decd4755f74c12da01e8c23fd852408fbe2144a14fe985cd1ced736e74dd55f128f69298e5cddce4db5de40dab382903a062a5acf3b534bb704b6f +ca6549fdfe32145d619a2f5e9e67dd335ff5ddaa109fe45b7e012ef6f203b9fd3b634954864492e579f4f79bbfd2cec3f8bcbd72f6213c89762329a0ad3b17b810eb60c20fe3d741b88dfa7be065a3f29f36680f41e199229d76eb6ff017de8dd67ae301c73d792d91995712af44fcc20296d8a4e2f3870c6a25096a71def5ef6cae9a1295f2389f5a9d1c6cf9951ab8cef8cee7e618544e8b67bea10c325d771fb5cf361e7fe4661bb2e0fa4b478d4481f60f12a1247444b8004731ca7810af +c9e1ddb45fc7b3f94d055adffe7d37b42cedd59159887bc9c2939d530ff7cf9e4cd96909b8774f341f4816dce743fbca6096cc2bfebbbd75f4570b3abac19dcd9009490f085c859a8640a3be1cea0b7a861d8b204ec173e1b29927fce382e3cf6905ea55008d44b53080cd046057ca5a2b0f813f9edd3b23b24db9bd2ab04638837df46af60a94efa9a22e39bcc35a58e8f52ed0388e7293d2b55160ae786cb9ba03c699d95f9c9844abb123f61d28dc3da6e397af5ab963be33da01dab3447f +d3ab2af1670870c9c0c9231b8cdf30859070b32486fdb329c9ed8c95d1ec32f0d166eddf33e42aa84e54a90d6731c332b9a286d6cd747ed70aa292cf715380e4ba9ab2777fc0d0b5ee88e661ada539fcbd7316a17beb49540b209098ad57e500a26b8bbb5c58fa43c9a442a012ef605166a544292661272bbabd406794acd26770dad2a557f8c1a027a57cea4e94a416252e1d8b0cfb0170f50133068dad05f48c38dfee438ad3565ec861314d00936e4961838050c37e78ced13827c69bd897 +cd4ea80afbcc41683d4270ca0b9fcef16bbc4affa9a1ebaef736725591150318fc5085be85819a11b5e5e42b0c43cc4d11c4bead27a9019a0df6b12c095d48f2b72c6b2129dc1a95263922e13d78b99e53b86e47d5e3633702cbc6a42932aed89e39b53f80c8d6653a86b5fe985b071c58d1bc6f9560a5c1bd3d22e8581e0ce7d1feca7d279d4f767b6e18b2ea75558a5cf6aa32ce2a7f8d8f95d6abaf5c15dab7ec0e0799a3d915e59cf076b22c0da7c30231cef541ea4e5106bbf46762aa9f +e4bb93ef65a30aa8c4f05d4e0c5c121128f612965e66e02c78d7de8d9a06668cd2eb39c2569b739c76242647b790053814428d3f2efa121e34b7a02beff4a4a9970250ef7d623b080acb62a4dffb9b1af63d6dba1ff0ccfda182308e3562dc31d91417f66d27a66ebc304bca693fa0a4664df683bb11e94c97a45cfc53b162552a91afa40047fd8f2e82be51a9f83bdec3600838b67e464f185a9546163afc7c26cedaa3cb31c704cbcb69515f0f8b9934d03b45785f3f6fb6104994a40181cf +f24ded3c25a42387bcb44aad697c1037151f471762bb4052c90b3b5cafc9a6405405f1ce69b30b73d78855e18ea59e1cda8a6d7ad40f48cb7032136a01d40355013e7ffdde487025f2de017cc2eb082fb84c69c58bb1686f2c9c7dbc75c8cb6ae0d55dcd69bb162b70f0de1a4ea6d757f793426c81178d8039e3d6ab5292240ae41ec85771b8db87b401a2243a26951f439e7c6e55a0c6a6f635aa13c5ed3352a42465264a0a80c69b9357eb13828d5da7012db5ac955911ec4be9c7b4a781df +eafd75f35f62bbc71599957f89153f413d9d435c577131cf23c4202bf5408b4e4f8d8e20548692b6e9fa313290d0ab8fd49aa2a45cf0d509cecb9381dfbdcf66d372be6dcd9351536a09b7cf43869aac64f8c7c511beac519afba8ec1fdf57c3577a8b216e7972fd996882b9a3e122e9a81478ab2a228cc123024ab95f30ec60ced6d275f177b4d9b50ea90a70929c21a44677fe8f8f168cb16e70dbfe7bbce3a6c0992be3217e0961e4478f9aa7fe9beffeacf8275100228853d2f013608bd7 +f07edeff8098a542b0a9fdd589435bb9ef4b9ff21a6a5152bff58c1f1775c3a78b0fb4204185872a84a2db3b7e7a471e2f5a90732f87c8c29cf10bd7f34bc8270063a6012716159639c40c476b958ca644e614e7fa6b971b5c32f02f1b1693b2e381b83ac5234e95311424e730a98e12d678ccb3e08c9262ba98a100f3ffcce91ad535682ba40567b3dbbd029a7c08f1fdf681b8dc952b162fd6e34f7013c34caebfe5e4c084f38589d824e0627fe15e3347ab12a63220a06291c51853832667 +dc49cad5884f5854a817651b1540e69dbf962cf07f566902e10624c94e0fd8d4f40c2ed118998fb903994e7f195915d5c77e23ea059be069e36398ba87e81bfdcc5dc86b1cee454bfae0ccfe46fe86abb817170f482d6f59f84f2e40dbca185c6e6d99204d7d0a8af4820ce34d7fb987f0a8cb97c571d6a80fac6332fcddc2c038abcd1fc32066273a5be943251f9ae6d0172e76874eb8643804afd19626817de59e37458fd15e523e837b31a71663016f7cc890015304bab7146174676c51bf +c0b024c572a29517111f7d675f6e3bbf1e246a41a19f69d717f2d0a182db828963d06abcd8b992a9df5ea14bb19e41f2ff030cfa96cdee1333571a5b6300ba08b0515f5a38310adca88e90d5ac4e5afb656c436f885918a17feb52ca8ead2ebaecfff25a3a111f75bf92ede6fadc931c7fa7999ec935ade2055f636e5c786f66ac730ba4067d34925d096538d016251f094bab6258f9fc27afa988d6f5e5e5a7ddf137d5b4371e17eb5c8e6d4dd2e7e7f761cced1b1ee40ff819990f1d30fce7 +fd47d84661d3f6063fce7082da58b68536d59e01e4d013011d7427afd46ac57608e73fba64f3b05e0f86fe39761663c783509a082bba2c5938b915d7490c081d648da670b8eb674627f66bbe4ae836025d157fba2bf86b24b3b17baad9248e7b9d38325bc6cc1b31454b308ac62b82c18b8c6240a6962fd0650edfb3cd0190af8ba6262b85cb6139d3dc2271c975dab6b3eb0054d459e3b925956e1379294fe1278b3cb386f58c46809cd1a076b2589814c000ae374ba41d2ce77d8ee11bfcaf +fbb5db9d9a2b03f22dc283c1dc4e7538fcef69e4eb7c26449d676e65f6b3398a97a0ee88bd9b9b009457e6b0e3c44c9d4b89a5243044e1dd87a615c9dac57a1a4367924cfc4095dfd31baf5888924c8176c073108d4156629d0cda9772b0516d150e4af8ea007ab32bbf991b6052be1b12b59fafa4845accfa448758f948b3203531169b20476409a34841fff172100e3e6cfabce5345fb8cc65706fe87fe8a01eec45c4a89e250df04c40220d61cd7ccb9b87d977a075765bb7a2e7698fc15f +d1af6646f9a034321f5b71eb335c5ae2d77811732ffd42150e6e6c1da7c82af0bcf2b2491ec19f320a342edf1adde87d994b0ca683c48031d537ce3cabe3d42a10007c3a9110b10b042d88d649103e90fa52e0569022dc75a34e43d7f46ecf5985f14b8b9f233f243c136306e9e47791bb36949b7732fc5431fdab0b1d2d514150bda223bc0861a85fe8dca678efe7c3e3b12f2439a94441821fd75b0ac065b99538d674e910bd212ff514d257530b8e33e95ef1b88ce3fb4966b361aabd460f +c81f106c131d13590548bb0567bc70f0486d06ca7a200660f26aeeb0d74e1415bc492d580ae08c4827f04c3a8092e829abd01991c296fe4f34fd834193826413436bb026306cf50a6711c559b46919e9317d2c29fcbebb2471658e667efe157e7416cf6e1a778bc89cd5a393f6bb124d8106b617b904f6c5668fbec7f6db51d829b706a33b7f5148d2dad14bc78185923a77468970ba04fd0521afc50aa2e7626542e6ea50a5f7ec4a262d4675f8091c7de7a0cd2c7ece20f2faedbc49ebad9f +ca5dc7e66bf898cb9c4046df5aab153486131e0e7b36fd72e407cdf5955df03eda388b37c7850613167808d0fb9896c6afca3db3fabafb3bd602f8f26c08d007234939a729195711f0b76e0a6a412febdf0730798cd3faf1fba028afb1c15877771b52818964928b5392f6fe1cde60128eef370e89261bf6841e54e181ec917ece1159e7748316b21daf133ceba4eb73b9b1f75319bd4ff302c6848a505710adb3280e38e3e7784dd83f439b7d00e2e06a7cfecd83a065b8d3a504fd84d2d717 +c9598d64013b88e0914579728bebbd5a588ce69ede3a8a4086b764655d30486e9e348c9852eb54f3ec5ce36dab528e80fb6e2002d1a5f819bf561a48fd41c332afbc6e07a5eb367281308c5fd6e0dfa6d29b779f04f727b0a4df5ae547c4d1b7e2c6de0914099eba9c88d4284ebd366ba6e64609e2c560461c7da99345620d809669bf159db3db0c6d8edc19c8a27a81cdbd00952f2e1aa15b6cfc8e1fdb75946cd3bf90eaeee85091e37d1f51e1c0688c4f94bd6405047e0370ea1f1cc0847f +e4b3d25d796f32ff8187e9a77f266eac3f7f86ecbff82be758c199fce37126496fcd66b926b561a01599730a17ae6f89bf80464cae762325039052e75792c0b1a0b4ba95e58107163eac7030d26359f257583035db4f77b8de5905aa74728b3f0e577f6eb261eb6921221178528a67a2f7fa195b095daf9a425fe46d1c30135e34da5fdf0756c476807db1719ebceee68b7d4c7e3b05f1401f1608816a8365d00c22a14f2001f75519529d2f3e14413d81be92215b2e506c7a9371f11ddd1867 +de6e9662a2bdea570ca2fc23abd8cae7b88a013b41fec6a94d6f3062e23427aab60a6bd5db1b5ec22c16702a74d68697c5a7e6eb37dcc8cc0cfdb2441d6d85532235e5be0cde357fb324e52ca566706f678fa2e1849bb1d01af8f79ff4dd5829d9d9fa4b57d1db6b8fdb1ca8d7578541495b8be47552e2141d8137e06a65aaf8568e54f42493bf9135e33991758131793e44be13221878bde70eb42f95e93b84ac953b69061a7da01fb466345e8200bf50a85c673b7663d0c56d5d1fb862cbb7 +f739bc8eb112d6cc5b74cdbd88116e4797d6a5f144d4d2485482905e648b2810647b476ebfc5773e3d1cd25325f434adad381b204a84a3191161cae5de74a402109ffda44c13e2c7c63c0040ad1b751e5c446ee97740f3d1b3cb1c99df73a93a7b6947857d33dc10d3d5f4f1452895f1dab8516ea6169b9c2c18394b34b9d2c79480696592d17db143f2aa35041c1146407820f0db29df7afe8472ffd6091d401d79137f32592f7b1932a5082249179c1c83bc2a5a5a325754b588ceb37bffaf +ffd6f791e8c8eda70c3e1f99ba42746e70a5d8a1d88c2399237f15c37f72975fc755681d9c954031aa9a07b1c49bbbb6caf1aa16290e290d1f5eca2901481396424f42e58d0c44d34b1e1a170c7f96d29120be79c0cd8178a08913b4832d7b11b0608a89abc58f20f34698a86639ebaacb676e91e2640a2fbba922388cd1e15aac252e8303bd67b89462b34122d3b89f35a6b7c6b4869a06ceb7493a9d86f6deccf05de6acbb07ba40d8719f701389fe5c63f69f448c1c7e100f11831443e1a7 +c64fe683445a608e717bafab84427221ccbd1f244fe988c64289ed0ccc76289690d767de13c6dc5a47896b515a87244d3ea9df219456eb8f692ce1b1e71f5734cb071e9b3917c45c5caf2b3fc17a7e0dd4926d2fe6b6e0dd2f777311fb3c94dedd1dc797bbbe9e81a769dec42f05ed87fda0215bc63fc6132ae7617bab51fdfdb9a7048874a722d81a0465053ae0d987000b11ca533a512c439d7d2e075dbe19fde08227e4bde84f3377333964afae98f024052eb3fcaa4ef45dce4a71c2be1f +e4f0d706cb806088fbba02bd7fa1a71c1f72e5db77d6c138b134f1e30fcbf99705085fb7a6f521883c36cbe0368ee66ee21525944f54ad28b9612f94fab150a22505beb67bf16b7493e3b5f3ddf5dcf57e5dcda36e2711a46e2bff447c68c8ba8ee09f3c2ba35b9d41bf246b21b891c915f3e6868be490781d16bb1df5219235a4c384d8334689dc50f314ad1f72dee118fcc027628f75b02a72af143484d2beb71bdb1d2cd8dad85116b96b3a246c713bd5b8f4bd3cab457f59798ea9462b27 +c53672eb1f7a7d55f51355c135a6bc2bee1b8325a49c05cba4d40ed7baf420238870b57e047634e714c5a907fadfb02ad13041ec6532616dc068990e0c7ca48dd872de8eafc684373b1b4eca98f3febe842b9911d5528f5f5b1af8903cefa96adf1e8a392c61c00ad26e8bb805809248f4c07541244769f0489c82d6a8fe27f9deeeaf923541e1058ebd992695698769b3287b1fa5cdb9735099e2c6e8aa0d015f0d3b1b592f31f73a29022a690959efbd49c239ecf6cbcbf854aa9af44de217 +c11b819f910658dcf4d61595404306200f35dfb53be270898aae00339565c4a3723f5f32daad40378b2f7c124540f98ea8355f5d5e67fd35b480fc131b6607d8d334de06b278606c1d83814fa69783c4cba2eff822969232150687d1a3784c9b2cc1b981f047b42e800f1af4e2d0081eb7cc1e37ebb319481f2e5f237cf694599194fecc97f5ea726e9a09ca79ddb4b8bea1d8a60faa1f8266881f2032f66e8dde5f1723b8ee7eaed97c199e2281c728c4129d37b1c658c4bcb1b10223784db7 +dbef6abc9e0b4a140d9817d3423b11f07cf775b2029fc94d3e0fc9181b428939a15e5c3b2158bfbc0ac3dfab9fb57814d924d3dc497c6e2603b3eeeae3b7d606d22b6a313a1e2043e68b98869cbdb6fa5634d50b4fcd28c8377ec8d2711e439555389e5bf1b07ddb001fdef0c7dcfe71c2b923d57c6db4fbeb9c56bf063f26ffa8748ac9e97dec5438da4d86d0887e1cc0fb1cd9712d03afe5fe15ce2088c5271156d034deda96fb815923982179d68d21e08ff39d16103415941255b06320b7 +f002f770071d5563945682d02b1b99694079372f0cd7cd7d98fa39611907344af158d38b480df642549b33dd4727304a89fac23c47997ddb0f206d91f537d7cac730c28f4efafdf65b49dc093a51485f128bc0db9a364adc939fd6863137839d037d0217a9e71a187d2af99dc318d407cad226cc6e442619fab1e201fcc252bb9d454ced8e353f8090fdd29a6019c83e44a0768ec84cc6f49866e91bd5e866cdcd1e84cdfb4ebea6aa64282708ef9c9c726c62f9aa9a8533a5ccf37153f8ab07 +f37028ff5eb655094d0c44bde401e65a118d3683eeb4c465c2ffec6cb8b963ffd5fe16e0d56053adf424644af27cc470bc8e8089f567fb17b11a5662f7b70b5e4063fb5c95a0e1a1aaa5ef481741ffbb53f261b837e9529d9969e8d343a567db70fdc6987e433e62b3dc91d883125d6f4882815d6396f534cc5370faaa922cd12171879d349eca09607a87484dfc8f5c6d2835ab8be2dd46a85b7469cfdd95d3585a300b992cac7740453e4d6b679bf5487d701905e8197c4d879f3b31475d8f +c4c0de3e394d21f43baf74baed83df4116c7e6657a9d9f697d9725024d3b6d73dceb4e020cfebaea6d31609557f1a1ff7d30a23eccbeba8da1749543a3fb3df22bb7157dfd2df0429b100591a9b419832990ce48c8bdd563a96273d14582a0c4af0a034767351bca472cb583a00f7ff8e341ed687424dfde442c3c70f66245e1ab6ff7bec67535f138bda16a0fc53f37b9b9d9fe700413f21477339550202e50863ddafcf163437a74f0e7726a9b8a05e1faba972fd5f9f9abc8309698560aef +f149c9659e8e3c69d74bff78426856ad6674fb394d4fd801ab6a97d6a3df33ff0385747acb7cf9b7d4e9387509e9662b83b05c311fa3e7edf9cdd91eee831ca0b6f14f9df53f0a45d556bbd3fb47af4a79bd7716abda5fa8173ff8c585b9ea4b0d9118423b03f1de4ab25116c351a38f842fb3250e015f7745d91cdb006639530938faf964f53ca0db66dcb569a0c4cb3529d3ab606688abfe8ca68685a9e01b558aa6d16f9bd57c31610d4947ef26eaf549686cc2c253c3be79ad8a283de4af +f8ba93b6b9be67a5bc066da70b24447e0c8efb33f315012ca168632a950a87c74a36e0092af099a99e6e6e324087ed9c78e14e449f061b2ab426c908ea642a9c8782572c2098db8c98df26ec4bb0c307fb862b1c17944fe12dc993a277fd00d17a651366df050e8c3596567654ad6b7d8cea56e3ccddb6e3f8e00881651e392ffc1e881afa48f55ee515dd01d54aab084a3bd5d499c6156cebb7b391076c5e962ab7bf8da9cb085687ce1cbfdec91fe8bb17bc7848d6428bc755754b818abb5f +c7e6a35b2105c33f6bef49d98b2488dc1b559a090553a351cb5cb82f2f37b2098aeda899ddc4dbb6f57c5590f4f81c234e4ad3663209b8d7ea94b3a53655a9fb922b4f59aa38c716e9b3b3c29f34957823dad77f29dae41e180216e38d83c2cbc03184be373a05243fda6d5afdcc5319f10602480c34025947c4c975547707ddeb7104999daaa96cbca0bb9340cc32e3978cba5b02821b4bd383c7b9e3a57aeb36a1fd15964143bfdacfa0ad679a7d214b8ff1a6ca807da387206b9c771adc7f +ee3296afc8fc919efb3d205053bdb71c3095506eb69538feb720b625fd2274cc859c824d857f799308f260b2fb753a4264bb92a76de23f6269d96bf5374ae0f9dba13a06cd7c991bcda26dbd19b3f03a100e93bc1b90e7557da17ea005eeab9b1628e0925089f1e0d0411325ea504dc8ae6587577f4094e14158484e27330895e2d5a341cd9c7b2757d97b9124c8a1f8755219bdc6c2e18e46da7215ef68f0904c68a0bb61688fc7de58535598a63323ac65036869d2ba23f7b8742f28cac1f7 +ff1feb7f60582a9f4a884a4ad9ea3796ac756e3ea66fd659f5bfb9a2226bd3865280ca4a4cd51486663ad844d5bfcf851163cf5aeb2492b88886719ab2588869fb4478d5a4b71031cf25dcfe49632a9b7316e4f3964141fb04a40f4637307f5e4a26b04053bb72c4c284c6dfc8faa740bd06d9f67ee7949779027e3444fd98a013bc867722dac9b791f41c7b305c67f3fe89b20998119801499ddc78eb6c7a02472e84432148687b01d90e87d46258de2291a9dc34fda959533704939ace04c7 +fc4f7571cc5ceb7e2e29d0a47f5d71a71d8a9284cb6b43f505619ef68c3efa4c8035ad58d077d9d1e315d642f91ee4a73af4efe23ec1c375deb995ccd10ae2ba900d5daa09a1a76afdb2fe121a2d0f77fcb6294a5a1b29161ce662536d1a9e5ea3215910bcef27316e4e0f793ade402945426b1e2643e92dddb0f1b2705272865cead7f479968621fab79f50da9504bbc257478e95b4d62fb2c3cf2b4dd29a4b7813734bbcd7df9c1ac09d736a85d284914877609b9506bfcaf06e25bdf93987 +f02bdb81d4e182531b0f90b5bf85dd364cc7696df1a03958866fefdfb341fb2b3e71d327d6f9b621053bbcfd16bf330c86aca1eee73456ccc905d2554488edc9e42ff53fb6d37217902474af3f8d613c019c7e5a6c664dc08cb2ed9173b8211936ae7b3e88809671d6546874cf9a2eba99fc877e63e4cb46c053f3662b8cde47a4e0ef51d7dac642127e0d522b92875cb10fadf04039a188908d93aa9c027a03ded3c945577da1abc39c0007c8d5d1dcc62a80dd464009ef1e5d7055bd1c0f7f +e3a04896109f3e5a5c77f8f997f4391aae092ba5951beb447e8383d26dbafbbf70cbffd37a2c10596e3deeaa6c6b4ba8b8a51cc81b234768ce2335f64ea6cfcdf111aec810573ac9bacff79bf09221341b8ade067c9339b379de445fdc695b4b2b9e764d59d5e3a673147fc8174e3ae59158d461039ec320a7dd314075a37eb688fe1cb067cd2fa8fc5d52f99cc7a6315e453aa09d2bb2b43cb02567b021c7a224804dd4eebb4049865c754096a6f7249d54bae07848bfe0cec6f8b2d72e1627 +e81976e3d02f4338c40458081db26793d51f421bf2844737bca138d08bceebd70a1d3d8233b699989ffb40b4e5d7ced7de17dd97dbe3b753969de866b0f105c593338f550d6f33a87fce25c0a5ca3db36b30aec37f6bebfeb665767b8c7a01a2c532f8fdc8877e7dc1881241f3d3898eb0e7c95c0e803c87449c3f5af5ca650559ad5bfa40a9315cb55667582fe142f47474193bfd3d7bc0e31624ab0c71184a6ad4d2b42597c13f133ec23a1aeab73b678efcfeb3506aea8196e84566e6a0f7 +e6011302117e49e6ebedd722c09cc7acfda16e3d13d4fca47f801bc2f43b3dd81199c5073dfb25aba03a2afb0cd5ece0af728210e10b9525272cdf6d09f7f659e2700f487415790ddfed393765facacd663df3709be238df76fb4904992e5ee5f27c5179fdd027b0a1c6d39380ca42c6d2c5708292f3510d9d90002646a8c6f663b774dc9f2cdc18030a6829b3289899aa18b87c8ebf1867ee610785e6b5842e0292d0948d33517ec57884249befcebd9f878c2996e5630d90ca36a877341e4f +f167f96a8a0a1076d85fa5d252ca2a8ed8c2d30132997c054bb8ef4951acf1fe3b3c1ded8a284d71b56e93e9086f6dae362268126b196ad1de35959b989ddb7027d99aad64e8220db2b76df8d42ffbc3205318f75abdb66b4a0b9e4e542e1359d9958ba0f9c1e4e04b4e98444d6c0d573fd9c068c421257d018f9caf54a27ef144c32cdb36c9b0d57bb2ae4c7a2c66aa060de92ed6ca365829ba70f862976ec285906ab353b269009979685e82aa19d6527a6552482b94efa271121598eb80af +ec706c0eec0a4f92171e66f706f5a9ccc75a68ced9899754bb72130d879b00f1c370cdbf2a5860db27b0b7750e061279498e9f0e5b56ebf02c0a49a56d11a317e48e3ef0463be341200712515f58b38d491d39edd1696b22467bca8052036828252157b91c4c162cbfc6f760a9eee96c862a46d952ab2674b2c61e68acdf7fb78ae3c82b78ab7dc191ef61b84008f0ed4f73f3ee5ca156d531118045eab763c61c87fe4f5586d7b5487b2bbc0be5a52af8f0474a683fa725f1669ebe05a1a0b7 +c775b122ee18341d57a01e47217c57f36b18007ac9be6fde188bcfd9987c3aa31a60c74d690d835577c662c9815d293b50ff7e1bee03d34a5bf4efb6d2532ee4f0061d017dbdde2519e28193a5c47809b01f333b980781198cec79c529238e7cfa1503899189f4e8089a4aa8124af718769b8bc7cb465ea2d4d94bfbc3b140a35f7921ff6782b17ed89175fe2e26c5def11a366c8748497f65516b5456d6aa2cc17796158cb1a39c0bd680a02ee8717cc5551a8a3c12e93414fbc3b3478b73f7 +da3d474f467a6d33a31c6ff3ef76ac03282550165732f2471e9988003d20b3c22db86b53b24d893a076cfc21ddbe659be69273311149b9700e5444a502bc2bfc967fece0451dd3be1342a18a36f81052aae3c89cae19555952a6895886f0b04c16da01aa15c0b5ee14a466e045a4b19401fdd820b70ac18eff662340606d94ca0fcb40b783b84fdd6b3c06285dc45d2814539544d2bcd4ee2af6e254e5cf55cadaace803d3b1e9bfb7168c3e8f6320020ce44ce893ca0018f0fdd913fefd6abf +ffdfbd4bceeaa083b7b7d3e93a321b2493d2d4000ed103e9ad215138060a535a5cbf5337f7cea58c46fac2547c929ff68c3b49e199c9e3f57a750526b9802478eed227538f09e855c5dc92fab3e1ea4a2e55de33457485d235aedcd7dc4a5e1d8ff76960690b138e81308e151271d11da4a97d8755805c93a5911c7d0fda74a91b42b7c3be1bec327d191ac8ba3519bd88b3481c9b1fabc5526367ac6d21d0db0dcbb43bde55c2a62fe0d5b3ef389c5615852d5b1f37b5ebb9127f02c4877107 +c175a131dbb9bb153c17dd1f527bfa74064db27b315c1cd3f7571f3fcd0d1b4a7175ab11bad888391e35afa223d24409768142e01f116d3573cee09a5d3056035ffe29dac1e0524ac827a3cb198591e72a9aa7ef831168530c02619fbae938b657995f96c714e25c198f955321a868aa0d9c1e2f7598cbc9f59ea305844a2919e51e1b668a1c0995e624d4c340e3110e17fafe9db05c0ef16e4a242b696cbc380cd3671d2dc279a5cad3ecf21615d888ced0de026377ce74fc2d039d07958fff +de5f6ee873c6aab1484c6fb5f5b9fdb07143f4fdaff69db56b3152e1b5d1a98e490a6cb8f229ff227b6fbc9ae4ddc7042fe9761d4895021d8123f84a2bcfb2bc9512db6f8cd5264d954996ab21c216aac2c4fafa309da4210272611ae83678f4ca65683b4c2f84a0c41ac05d72cdf76756989b2ba55733a42368b89d92f825b0e5a23fa004ea38bbffbe1a2b4ffa2cf37f7f667cdf95b57cab4444273c87695273e151b104e35b95a9ccba28fd14db94f1377ea1634a1b19eaa3bfd01d8388e7 +d4e99f2e7accb76323d6c4ffa9b5d9337b99cfc0504970c2243da5c1edd78b20b336af61b20ebdf9613961571eaadb965b9ee0319563c4f8be9e85da3c30cebf925b8da3b8f4fdec4cfff19fff799ffb38bf8340995289bdc74a084d9499b85d099bd8d096d0dfb84811d72476e84be0b77ec007061d6d1d71e9779a123f53a5ad8dd4292f21cffb3b80800d1e16d59db661472f678054a140d5389885f4f4bac488111bb85791af00be334507754bf986326991dced801652e034bab37d9b57 +f95418ae7a5778a806da623502490a1536533a9ee931de42bc4a55380cfa43419dec676f809258004b61fb2c24590f104d6e5f8699eb9b7c268b78df1ac0b5032ce740168fff5ee871c89bc8dbe71ad2658363665a01d9ff8994ae3fe9240029dce1347b61c6d1be76de7983600cb56473405de3c9e486b5e73a151a8a700ebf3dd6fdb53491673df53c51487f02083d093fc5e300dc3cec858de65c216dcfd2a330e84b644c546434ce2ace1a5e89513c0e55dc5d6a13077b4058222ffe0347 +fec35645467f06f855ff2faa6dea36f8b0e247823497de73542a755e13995c7bb5e090e94427e1aa5156d86991b49c4d3b3a44e1c13dbbf94e3d4f21d88081d1403f93ca2f3be68daeee0714d0e8a1e7dccccc565cbe342276da5f55f002ab32a308559e8ea0c89999180baa298f2ab6ba17b36c312fc8e03bb68ad34147b68876ab9936f2b6a1c911df67ae1a87937a889ba9ff4c2f218712369cd9c1a9069a1039ae811a0281e3bf01165e21f2829a21bb8d40a1b180df4962f098dfc42197 +ec2b9654a4d975c02a02dda1f18106d88c9b0aa829289cf527d2a795e82967a21ea4f1cd5378923c24a46143850343b38e1361f4308ceaf4fdf87effadceaa236e881f0d0705e8e612aee75bd2a62e6ee86a8f4a354ad4063fb6850441dcfc9b5d2478c2f5f3e00419cb8bb21ab2c0e88ad734351de40cc84bd6493bdd56156df192fa060200c2049a4b99df7c06415fdce070ede49a9ebae4c2995c03f346e3ab16a625ed0b8eb6c17df52c9ba8178c640f882121e3f9027d99a5bebee84ccf +c636d7b9f392c9f3489a64a2fe264cea0578c97362664a00903c8e016622db253b5337782c4ca168f43bc542a4a4044d92849d17f2353523947a5c8c8fa1f239ca0e5516e47d42928e51cc9724402993108ede3af31f87a9a705356fde02322019e84bc2b15412ef5fed318f3b66d883c9bf82ed5d6593411c17c58fcf202dc643fa674d683f17779e2701236a44b04b758e785e066f48be5976c20639bc58a369398bbbec8030183a879cf1281e5e16a0679c9e719e40ce49750a766d6f6f47 +f43d15061d6a0d751d0ca652d0a6e7aaba46e67726a07f080d62f531f2794c157052dc04573bd28cf51fc1a5d67ba14b49e9605ecfa5cbbafddd5ca9f7efd38d7c32b415f67c53d33902353d83c52c88c337580fab2303f78ad2441d260fd8adaf35fd321cdfd0e1d377eaa8021f43cebbd013af39176ffd21bf318a2d657b29a450b30043cd5683372449e214d0ce5be3b72ada9cf2521b9090d371679c9facf8e7d1b65dd9e04a12e0fd82c4a17d8c734259eda127f7f5c6770bb9a5a60887 +f550a234633f613ba5dab89cb5a88a655fac9059f2db58bdf0a900d6e3e334dd78c05d3fcc995fcad4ee8fecc2415fb90e180b58bb2a5a5abfbc3ced0852ba3b060441afa60f24345b6dda75e54d87bf5c9e766aca8ee22a668784fe1c82fac514120769763ded3c8e4ee05203c125bd57a63a787798559bfeabeaf6c9b65d68f452b9015d7258b17af2ecf5c3524ceccfda74c348c5ee16ad7bf35f636998269ccaaffaf1bdea832e96e2f491b874b9af8b5e86befd71c0c46e34b7d2d65d5f +e7b1d8f6009a82de57fd6989c0b2a9c2834016be9d858f47da7a5533852b637027ed8f3306e25ed95435da324dc4c70db7a0769fc9d93af76ca6feae713c909b3eae57f937ae6af6b3842c96d8e280349d220e09a31ea2c25ffdb2dbffe5fbafd69f7193438f6290fceb314e0d9f560a5a6c29b8aff8f277b14910d6a9a629faa3c909310fb5f9c1f29e0510877ef7a03cde01a8622876eeeed782941defca68d50995f6f49b20a7b69cb1a2b140813069cd4679e44c639213a831c53a7da04f +f55e1cc86ef22d5198e2746d0da88f1ebaabbdd249bf4f71e241c18c0ee69887ccc1e60c9294bcdc9e1db24b9dc6b7d3b81c83f7f46145c1a7ecdef59fc15622441bc231c22df491af1b54acda27171d431a3c31c42a206d22cbc9bfa8d2a7cd2a2107de95525ab769e4f52fccc3033561475284c9ead5b66427730dd193db7aa261de1070db35bd82aac39b72ed1bdc3069c8a9017db674decfd0393921b5300528cf6a0aba3d8a561e0dab51335c4b788c06402601a34f29f8526563bb6847 +da58931b79fe89beeeb94cecc7d57fddcdd290ab8899ea1455a29bfaada011cc6f0fc5b351df30e10ac7159cdb45056c4012df134cf9ad3c514d4f1903d6d8961a097f8403928993258c3b85f93bf112e9f5ba2062a1ff05c7f46205305f4476c005950e004355201481feb7250025ea1906505cbbbd1c21f17f032f1ad3e30f8c75d7322abc3e270d1a418e123220ddba3365387e9d44353b547875b3cf6a8bff1b413838079817d8cbfcf87e5723eaa84fb9dce2d5cfdd15103a419047c027 +dfb4c2a45f5faa703d88950ce30061081abe8e05e79ad24042ddae9bac5a85b4569d9d2930d59cbfbbbe3c54bcb33d0fb7d7493ce9fdae237d7832b9948534e1f082776947e2f403488f978864f05f6e769ac027ea0f7c070667c93636823e8fc82874b36e43abd044e826ff01cfff95d5fe5a0b424576decfb68497cea26cc67c6c787c522bc13a04b70b37e5fba33334990f513140753f0db45aba161339ddedba18128b41100587c00b83d6239af22068f08c78d19ec06307b5a86fe25a17 +d013abd043a615556256ec6055729405af8b36fd8fb25c3fc257df56abbc5326ef6176b0b900f85f99340a970ae50998a6803cad87e52d1da93352250f49921b62a2f7a8c05bf5f1ee9a12939f14de7849c90ed385e418838503d7f1295d3f90d2630fe95b14373c996c444baad170fda2e1b43a9e80044780aa66d476decbb4e81765e4ee0d2248b54b60e54c0d4f39c0baf2b678b55097e0067384eb2f5a3999adee4cbb897a78d943bd73a90d905826a2b5c8d8c3aec1cdf4ec86a2131927 +d3005021b06badedd6f1615ccb480b51f4af681bfa11d1bef8acf2040668606fe72e9d8d0fad01410fa72becadbefe0ee4b751757f03d14fa9060bdf3e6835d5e1fd2d14077fc2233ddea1eb63644e1f3598d6590bd1ce41a6e2654c197e8823098cb72f2b166198dda67a25a48c959aab5f22e1b6167d45086e3ab11caea83b2a51801b05adf9922ac2e0acdfc5d22efdaa48c03926965a05e6f68e3dfd91df6b451adce9cb44661ece8a582761664afe649daf2ef39ec831a5c04cec938c7f +ca1cbd1527d5a118489438578b13b916179fdbd488ea17af01e242957e1a3571c0a0b092f66e9fb86c1352dfd88e5e65f4dd8fa3c3c93630dae083a9fe4b2f21705d40c2c13e18a88e42ff35134ae9b29b7d09d279fc0de3408558f48e1dcbc3336d792a05a5801f58399c2f280baffddf290a1235dc47dc74c191e14d206cfcb67959053be56b22f2713caba70a0e469c5636bdd6a89189836ffeb1d52046fd50fd9a88c9b38434c1ad0074a833ccb7c60f0d86b8578398364c8371cc0d12d7 +f903db6d5b00f5fe5afcf876770576c4809069ce03c7dfb821b6444375a96d7ca30903fc9cf4d4fa2d2a9ecdb332bef524ce2a99385fc36f26e4b230955f0fb4ff4ca384949b043eddf7bc5263c26d47ef2c82d6281be93e11f611623f2b3baeb2914cc24e993160bbe2dabf21a58d27fb3121d583a7b2c0f8acd062343c1102a6acb87dd6a82ca3719940267b493dd193697ad61e88b7713d7addad74a25beb8d8b373fa3842f29996212dd76a38dccf283f3ed83fbcca9b0fa78eae8466467 +e12c945996607bbd7aad5d6ac2eb9defc5c9503ef7aa8a3db93b444c02ca7dcf292fb26df1ae0f03776ecea779bb5502e455b44fd64632636e049de0d912523cb6ba9a922c6c20e909ec286e511b41a9f8cd5d2d8285004614dbc2300261a849ce4e3e5b6821148ee6d0967c70f0f9588387b14743f348d5534a6f363bb87b8ae76deba5abdf03183d85ce467750655bfc1a9663b901b95e29b10b2b880bf1d218c31390a95e898a3d3e70d7a34d438928c30733cddd9a9e12ed376d5c4ede77 +e23cee0dcffef273d620b218fb09a86b513dfa501c5596469e0cd25062e3aed8966d1ec975f6e7419757a1b5ffe1a062692c0d93570e2ff6a0ecdbf0f24b4f8e6af65cc5b1b3cc222356f2d9c0b1b894a3c27419af847cde009ab2534007175facdc1c564c02a3706fb6df1d4878d893145fad9d6eff26490fe0c6b5048656aa3aa55ec027881f4cad134626fc85b8586fd94b543ccefc5668d42381f908c85263edb1148c4aae9e2e77a9b0d627bc0436b3807fe7d616e77b232e05080c094f +dab3238966b3f6e4b83a53bd456d7159649702524b9569c1203b709c459c8b30dbefb3320cb67b5b7598516212bb8e3b43927e46e592a295b599582aba1cd41d2047048224f67c8781217e245612b25c962a9f611c0deb6619f9da976206efc4e1eecef3443c33ee92cfcdf82bc76b20c7378c0e6b0209c0126d83b2fe92cf3c7511999ee2e953f38cf6c9aa03b65a683e9998469d1d3778aca292b72cf7ae5b51307a132b4a3fd02085613dea98c37f05b3ce57e25266adb9904e15562ae53f +f5c68dab71f0069da120f6261d809ef79ce6b064cbc05dda25802f390c0a60fe18d7361a9ece68bb1476d4f30f77921a66ff72640232af5fd039ad9ac2491ddc7008fb28bc8da56af643c0bdbf1c0b5e046fc236c6df660901d91a28ab90afa165b0d2bbc0031c4bb50038d15470be4c45f013f824e47434f12402bd67033464da0bff7c5597f2895b83693525c7024ee6aa95d9909758b08a732bfa2038a0d784f723658f0586241b399768fc5c8099f3bbb757b0e2f702b47c1a9c35c05bb7 +c79a9763b1b9119b4b1b7b51dc5344e27cfdd0f6cb1a7d09694016ef475bba65c48eb7e01c026a483fb9162f1571e05a24ca4c427b209794139d8deba06dd4a1c717ebbdbbdbd30c09faf7d68b9bbd19042c23e1edb2afbfb222b110948e6535263fa6665b3118139b3cf7646485b87e491254a08de95693365ac4e50d84dfb63247387b16d1d6069deb0226e0ddef239166e698de34bbfdad798ef905fcbb5c7169368c999f10f7c0744c224a684588cd7978eac811287229a264722f1185ef +cc8b57577d51db09f7c81ce3a74e326aa538a960f8735a50547ccf368fc4a62efa36b4295d6659c0e506fadc76b7512846fd22525eef156531fef551b3a17c4f31e4d8848f9efcf846f423d62c45156a06d0e858a4e5e5789540e21851856daffd9866a5f9e7714e23fedf9dbc2b54b129db0ea8aa24441e3eb35c8a0f068cd310a303ffbc7c17cb397b442dd8175705f1315ac98221c8fa6de914482be3644987558785757254073ae1029c9b32b8a13364337290a5e7b13f70cb2ead376cb7 +ebe0f9e6728f4b3e53945869723ebb647e3e65e580e36156ec442d24f543cacc91f9c39b205f0359767a803414efacef14d28a838cddade91252ba242cf8fc79f167c8bd44f5715e63cf5a82d913c1866ac303d302edb5b44a97b18c69a994ed3e990d24bacba955463d7b833825245301d8dd6dc06e7abff4deb3b0c319ee18436ae68281d21a9e7fc4709bfdc7d963ee8d93bce6bbe4f167a77e70a70f7a8474f6a5de276dbd7537913c68eed6bfebf930ec6b5ac382a6c002cdc00c6e44ef +cb0763414f4306dce98e9434fc248768cabe68213e309e8df763dbc67f50c3a60001fb290760c80e2ad9f44bf5adffdd48106dd5c44400a8f903b9e3cb8d3f4e936539c1219f8b966acc3e893a7eccb4e3b8ae6455cc9572ad6f6b6a8ae8d0e9115834b35b6cc2fe97c72bed1ba6a5ad894cdff9a9a54113dfbd71f2ec6dc5be9eeadfdfa853985497fca3cbeeb4b63ff6ebbaec43123058248301cecf9c9a874005d19c34ec8f86c2ff4d3afc2d5f8d7cd69c876b3841022da3515cb1977a4f +e6daa08a2332637d3f962a2b7d551374eb2ace46a88230f616e50d70578f57cdd5a4d6ed619999055caae83e4d132cb71d80fd0fbfe7d5affd9e345c862e673bd4faf39bfc914eb116308384308dfb6a648f5354ffb05503ed701fbd03d768da65f5336607c38095430806c15d7e36c343b8159a08a4a3550ae0d8f89e7405b893a46e9470d8ce55160cc6211c0d70becc81a42f483c5ede7187bdc45c0961396421efae720131bc7c991e7cacfda1796e73469de8970df938545f6ae4b8fd37 +e5ee5a593fb5161a7c2c6393562833deae185850e27c5c84c0fb269ab982f3f03671d74264e2e8b975f29cf1215c405f020e121267a063478d5b7ec02487a4c0b2235ecd5a52e67199c909af1eac39cb11a8992b7804c9ebcac556990ae04def84cf68a13dff7f40921dde18f0e8019fa428bbc0bbf8c1d2e10b06612bf0a82174915b953f9a530be5775a0fb5571876781ed7ab6c755b6ba3a79e6792551c26b0977c84b8f70e81f9d798e9333c33d5aa38a9f50ad4e47fcb1359233312e98f +d045cb369b36403a2eb399d66e882955fc212d9a86a5dc26ccd64358750c79be6d60e71802be870ecc73c39736f932db39d3edf1fba7daeea2c4ae555bd08e689d6e018f553076ecd0c8e0c9454a065af6e8b423978021a98e66f38a06e8a5d024337acd6cd92f5aa967a1f121563af83a1fed3c851e3bb7077b77249f481a7fa90210b2594db9a6dd770be082882ac9bb3bae61504021f5edfaa742fccf05a720bb4b29bdb727d9ecc1f15cca1834420de82a5eecff0e72d1a6fe2cf5343d1f +f88972ad4caf4c50b50ec556e5b1d545cf28eb8e0719482bb4218198ee0a770294fc3a7ef779de2665b2363cf15bccd75a02919d38a81be81a1657cbc0d940ee789ffd7e94d1a5f1ae426472968ee04b52bfad15d53f5433c885a981c75629ea6b5c0116f5caec8c9877f729040a8d2c149a7b9be1fb63d07fffeec39228e824c62e16b46bb6c45b92098cd683b6ba0e21c5f9046fb6b7640c14d6a3c398803f023a6a6e1b3fc7dcd4884b9bfa4897d3dc00b52d9b394ef0161bfd8791e39b07 +e98c2be1219998aa7df431d4fdaa48bbfc33fcdb71dfc582ecd764f5f9fb24775288bbaa0104eb03041e884319ebaa4c493a063738378cb2732f88d8b0613a598af474bf50d2b27c493aa0094b6ae10b08556c4c36c48910e3c1e3e7452c47e8b37c09d451373d619ede400b557e286ad25452e87e2b89e8b83114bc02217680c635c116169c0b4bcdd75bf55a607525d3469c66d3d89014cb56752d1407703b82741f33741d7099b8b88f5bf8299f1ca83446701239df6ddd284a75051cec0f +dabdc04d9a651b13a8208d14ad17da5d4cb011662fc2c744cce5d1e3873ce0fad3afe06f601fa993de133a9e8a42ec8283f8de096a345bdfb184de60df65389ca822b18c5f533298527713cb238bfc21d6b06726b9920789a270c5ca96117220d8a763ac6bbe81891407a4c17dcdef931ea8e1f91f98618cfe4376c49edb74b03e07596ec2109f52682b13d61856ce2830112ce679127fd5905cc38a7debb10ec32794639723e6319c6d54e80701b1f06699a510aef7fa132c05765a0e5915bf +d1a1ebfe2ee8b8a1f93c0f2f3b122bb6fe338a12b3823d6de2d6b591c6c0a46d0fbdfd8d1ad7f8248f74b5ca056bfc6e965e6b408ddea98f3e54319dafe0b4e1f532b0f0ee4d0d423b7bfce02a70de22ad5a9c6b7cde71b82d603e4b7cabc1b63394f9e6f2c210fcc6dd90650440b9c1771b4952db3bc8cc12ff41ff80f90e2cabc357c9eee440e1d638b55b3281ec0fb90eefdfd2b9e716efbababe52a3379e909065a60b7665d62dd36a146119b83aab1b8e94c114cb976daea57434baa1b7 +f17c847f2272f7d0c5ed46594b9e785cf9039b0e5f123d3c1c32cd881ddcc5d8ea70f1be9a2578169a5f64596f5fb261e2194ab55f93706c4169b2d55a292a0d9eb410c076812d531836d0654a128fdb113719dd34230397dc297ac84fe022e7556eb1954d205b2be0fed598b71fe75635878d57f2d3ec752147dbc682b90f10853f4a430f6ca4b606cb534178b63f9e61d0794c3726beec43520938bb8dacb9582d7f8e1d2c235198aad3264eeb3a967505fd28737953e76bb648977ea0bc37 +e97656a70298b4219b809687d113778c69a6e6591ec6abd213cf41d2bf54f80b5b5c2c7e5eb4c2d976882e2b5370c0aaa8bd108c5e1054877cf2b53c9a5df1a5c6550cd26a52f900baa2819ae2573203de8a4d802ac8346b339a68bb979a8191e2e0722802da24328bfa2aa229252c09e55220ae589628c8a25c0f7a4c2a002e0b2bb5a5993e37bde17faf3a34d8f49fe493ab53c3020186257f294844516de756595ba6ab8d844338b6730e284fcdb21155559f2db5ef65c53c7948b8ad1bd7 +fc50ef7a734d235174622294a576263ed4d03fe12bc0de2f302102162d7b55c6beed4d487070487dbbc6d225752be01d5fda1973c6cec50148f21a2470014dfb92faf84554efb78ec0637dad170c9aeb528341917dacf51a80937bf56415e88048bd2a412e146cbe4fccc84d8b3a23a415ca3aecd10988a51b88521235d3714bb4fa6a8005a80b9574434a0fc4d972025a0aeda26df83b0f89508a7bead6ec553215a9af7d4863af6a31ae30685d646d182f211ca1eeafc8d4558e2b39a9181f +f63cd1e7c1ba166f143fc48f9f47ddb7218dcce80b63858a706dccdb7252dc1368fef962b1268095be0224e707a24f99c306e393efd39ff148bfcc147e7d1983987e5e8ab72883e0be8d5af281454f6d83a662bbd9644f9abc0ce74b0e2aecb8127618cfc7eb8d08084954c535fd7cc5ff0445e1fbee794740ba851232424e85d6f5e1f4d7080a0a52e64d48e2fe22c282aba7325d63ef30fa08f95846bd18f183b085cad78dbfc70cb0044701a702b2d1dd7698f312b05772a3c469ec6be0bf +da3a55a05f3ecbbf4e4f6c9b767faa0be69d0b3db54cac522e11874b25050cbd50bcdb83be556de4595990328ea7ac14a5840ede74d873a2486569d887174ec5c695b8cfd4ade93f7a8f21eff15ec4f1bcfb0570d9b4397e8e65bc1834d714720516025658d21b9f2a143ae8ca59f4802a00af73acdb980d23d5ef930ef51d9894076625e86870884a0e273ceab91ce0d9896662952e058721b01c294d02a6455f09276536b918b2209e0900ba72895bc0ffc3fa1c2f23db9dc5460ed2340d77 +f79d40b725a72c2a4e40b147a2799122a5a13e772f56fd96846422ca605bdedd14a9088f0d37875b6f72d0701898f0b6f2a4277d00373f74afd01b1a2797ac72968630729e58e67c601e6f16352c7f91e40f1c85347281bc4a2b2512536191f4dbe246c92236e54e2e20b1862f3344e68a8207d00052e42e994f2536a1051fd725138d7730e198f6568b18ce2ec1b64c74e357c65e2a3403af2e41e269aba08557874e9ab1f88c7df057e699b849f5d9c77a4eeac0dcb35e248fd6b5e74c0b5f +dfcf3aa21f27194a4e8d9c3e1fcb35c34bd6a9fb23560441d7a22e262282647c160e99e165def637d31fcb9f3049c5f5fdb97039c16550228d36fbb3b127709a3cd97486205796e13ead0a7492b82977412c60a8d08ddbaf863f4dd6f40f672fcd9ad82443f672653461b1775096fbb0d63a9c361631ee4538bbacb3cc3181a7bb38d3dff044a80a9c90505d4e442d8b6109afbd9ef8585a2821b23e03991bb0d492d0cc62ed157d498d8222c9c7cb8c73a222114bd0933473760444c618b4b7 +d6ea35fd0813111430598b04c7b24b059b714aaa2d3a612f4e1949c3b772d761d8cc6a11afab233ef27174038b79535b8fab7a3da5a66456174c791ddfaa7607d4e7cc1b307a215c1fed4afaec8a820f75676dddfea5ce65853f509b040879561b5eba304ee74aacea0bfa57d24df2e2f358cb09c09264d023d0a6d9a5dc1515dd9e8da1210c60718dcc43ef5a64608fa87f016de5decf1df82a1c62a105a0e1c8810da2c7a8028d22720055789855e922a622eb144011b3cc9df4846541532f +c28061a300479778e76d44b4f7094c417900376f7b29bd739852e0c96f400a7a0c3347a25efb928f40f8dba04009cd5237ccb78162ab5e9749d3ca0fab07ccf8befe3917e5f3cc7c83f0c59cfcdc3acc99a138d72b3ea05811809d40cec948185c36ee2690405eb462c4d849e0cd244b7d71842662cf3cfeb2e7eb32c31c343f0a86795ab12ddf38875fa417951b85064d68179f322840329828355268cbdf3b7c60c61dc44e2703cdfeb781c456c0966c91b3f8195b4ee0e0e88c7c3c18b87f +e6d5dea871c6f3e651028002b9a36695e5b45c40eb9696d41c4125d3180e2dcfd8121555e03a044bd51a0f1392c2a4dfc3e62b066f76dd499a539da8b1240c32c562b56e68080b772e7654dd09f0c46d7fa3a86db4db96a47b8028185465d89e7697191aec641b1d66b1832a542087099e637f2699d9c846336458687fddb3c7fb20b0edadb706653608e478b71ae4c2ab50e04ca63f0bc62b9a843ad39780576aeb439c8576de8d3442d791eae028e47192872c4c978bf19df7dc60d097d237 +c2c8161b53a876a7d60b1e7919908e13fb870591e2d48f196e45785f783f8cd5bf79916aacd3b7412c7344011174fc56269a240d2671f65bf7544f4f230c60d56e349ae53f4719e407472c1ce0e749db33f9fdaa331e87bb43d8d6b0cd652e21ccb35ff9a334bbf03274e695b3df1289b50e0f6a6e46b7461c2a3766e7ceb815d42a7ba67363f9dbd1b2aeac7b684fcaf973436434afacff15d7acb7a60fd4a04d0973e73f44467de20c09bb1a5dd5a3106e812ef98febd8b333c3416a694c3f +eeacd1d71033791d1d32f580f19fe4852e246d51c219855ea8f25b93f0eb6ffab1421102345c809f58f75e380347b01b20657f20a9b5b3495275364a0526f1221421459228d4603c0fc552d1e519970f7e706bd6d6d80b776bb4658d722db59d5c2e60d247a3bce01faaf1570ee0f7b38ad523ab2d7ac56e76f2aaa1da03325b13654ec4188a23920418ebda3c3d25f92334f58fef3d83930d4ffe72503924e1a92cf11c50e3dc493778154a576d4cfe1e7c04438773a4287f915495f9b6f997 +e37d9436de8c2ac8daab1ba1cf527b90d8b32bbfc8e4652f3a80b68a9785c5395cfab1dd96466320e1c3b7610cf7bff7ac41c8c8430875f883298efc947e799cd160c6d3bf5b949b571e6b6e5ddae13cc1cfb9cf545c87f709eeae8e23bf955b69f1c7b26c9ef3919bcba8b25f81bee1a377fda27459e8fffa3742131ab2e4e12373c36613d34f0ffea899152f0bd8e85b3aab05c12cc98be98b86b1a76d8773667eb44a8e578ae2979f24fe0356d96b12f28a487cdc281c2a3284189f9126ff +c2d7c28af700adc2541447f36c40c18795b614f48081df989fa0cfab6d48267e7fd6710208eacecbf86ca4a52fd27143435d9556c6487782285742bf3938a8fc22154de4907f33870e28689829a4f2d78c0a737de5c1790c36c04c789a2f0078c8157e80e594d4325d738c019afcbb46a542a4a670262f9440b69cd665c94bc79473ba9f61c30b965e57a38b9490035c021c04e417e5a7457576fc9a81abd63d2cf4671bb58a0a5e326b555f519d77b0205f3a3026515a43385c327c0af5e8ff +e4af33ec2555f5c49284d570b1c79a87ef8ebb00d33b3d67c1dc75716003819b50bf77c64db79b68d81435c336779cb1874ce2a46d2706381c824225f15479a150263beafc262764d4c0bf08ebb813c477a69a8f21b1b9ba986361c7cd1d2e01d5a11e78297dd558eb4cd9b31acaf4a2c08508a92cf8da6979d8e4d11a0de50f7ed21d019ad5e2358765f28159e096291eba71c8ed96cf36792636b348d3af0b16a0b84d83f515a0788dd62ba73e0b71819b993d1f8da48e8bddee85372ef10f +d7197a898b9c552c6f018974fd6ab2375c99a145bcdb642a444c470382b4bb67e006a36e30ca048c73e70750b829aa06cdacb53e592234e2e08a3effc2205d3808ec6983c1888b2d76d595bc24a387896e83d49a03c0058b45ffe4a414eea665123f3e6cf51bb5b7926aa5fe65e3b88c6f39c474aed1d4e17122713e48e50272e1fcc947d55d8ec4dfa5f9ca16cad0289deb933753a8e6f19c5993ea223b27d1400e5bc768c837828124be57f227d0a5c8706c6e973ec86b76ec57627352a48f +d0c36c04e41b2fb68fda93e12fc47140110801d3a63a0ef7e969a7a360fd04fa0de3f596850d63b662af573536bbebcd043f003aae966b5a5809c8bfd53f22ba631c3e639c314f21bbfd0c32690ed62754c532ec5b1e6e17f129372890bdc9e87d3dc7e526a1d947fc9c3d20af2b21244094deca6ae9c5aa09b2141896b8688157c414fc329c06f694aab35986bb69f57f1594f704468f9dd94bd14b7eb06392ff8a3ad4c46b2631d110ff38fdb3063f3a5b5f83c8b7a5c97dea71118e2db0f7 +cce09450c4e3df0200278a1b2b58496a51c1345709bba6dc8480d6d5067072c0208861c355109d36fa7c18fafa48ecc875c0703f1f1f9e4f1c0d235ea23b48c79deb9c15c0ced00661749deea516293f686c41258187dee9d449880f9592624cfa4292929d14d0928bd732a8c82bce7cc6ff3701c1d6f8d1568b17cdaf425e8e42643b5d886bf14788ce2301b5e72571a3f144dfd724b9d51cb146b798404d2fb95bbb79d64d4672be1a4adc476f137f07242e399a6ad462d4ea10a72273f237 +df747e18ba3a068c60001427aaba8aad4a03dd73cb13af7b76a20e1a3a32b834423077d5905032fcfd20bd2843e17a7c1fbd1ff9f7ff88797f17c023737a112111472e5a47fda2bdd2ea9f8654ac1122f8db3c9aa92cc199351dc9e9a311aedec1cebc24967bc9be5a9c3b6cf3002c29b5df03c81e562fb6a808f16b6249789eb39f9e4ffa7c204aaae472b4b23beadf5003567a13c3d072d3a916f9ee44617a0ef7ce7c91f58cf9e4fde6e9f237fa6ee090524dc8baca35bd8c3481da4ce0d7 +ead5735ef6fb70f61fb0a15eef221bdfb339406085390b14d1884d63dfb0c97328b17fad73ba89c023ed3d9a83dcdc0f7fce76b8aa40bb7dc953d3fcfd043c4ba1298cc15216441016a72bd2091d262aabfbddb8e16a5071dcd47530f666b128fc3ada0718c048cf20e99ef40d07c7e2b574ed1fddc7dbaebeac3e363a9708fcfd53022f4dbce4c35fab94af9bf2ccc3304955d3bd7898295309e1c6e4ef10e75dff16178fa11d678862299b3f4cb40d291f865534c69ab10eaf5467c61d669f +d7602705907c7dd6b5902ff173ca8205e4e5130216b353ed348437a18d2aca48ce1f4f961a458c769122c9fdc77bcacfb79e586e8974447dec655abe3ce8a5f3d66fa23f978176803b80fe5d00f0694f14051a1b9e1a2c723d0e4da8d11f382bd6a190524625e274babb18bcf83b767a888de63a5acf9a92bd0779413b6d817fd955869a7587c74194cadae915562ac6307a90c2ee291fb25394dfb5f5fdb8d1020c6d416802bbd99ff8035a9f89f173196f54e7fab8abc7ac5ec1afd5f542df diff --git a/src/crypto/rsa/testdata/keygen4096.txt b/src/crypto/rsa/testdata/keygen4096.txt new file mode 100644 index 00000000000000..bb6c5911754090 --- /dev/null +++ b/src/crypto/rsa/testdata/keygen4096.txt @@ -0,0 +1,1429 @@ +# Prime candidates for RSA 4096 key generation, one per line, in big endian hex. +# This file contains two primes, one of which is at the end of the file. +# The totients of the primes are coprime with 65537. Every candidate is 7 mod 8. +# +# The number of composites and the distribution of their small divisors are +# chosen to be representative of the expected average key generation run, to +# provide a useful benchmark target. +# +# https://c2sp.org/CCTV/keygen#rsa-key-generation-benchmark +# https://words.filippo.io/rsa-keygen-bench/ + +fbbde81addba7475016c8897cc1016328fd0b267912aeb6a69186c5b9bf33043fcf861ea1dde9a546913838a118f9041de00c57c1264aeb492cb9e980fb417f4d676c989ac913754ac6d61aeb9cf966e91e3de1e22d826cacd02463ef2f3a3b9e763f1f2e898b477d4fdf4ede348323df4d57b0169178e5a7f912e166bc23ce890f1b9363b53cea047469b2ddce2430cd667060f6524435c1b4e4bc0071e5d04be245130acd9ecabce932550621dad5fa4609f93c34673dba09af4f00dd2ed578d4d757f8d631a872cabfeb55e4ac220c27430325cb3a28d0577664fb501d8d041e24fce2a1cffd59b249c9bb39af4c6917aa3f991448828226fc442676c71bf +cc7f87a608ef31ab6add4282fdb768760adc24dcd50db7556af97a29692c4e9c0fc2f48327d4f7f23b51b36bead0007b7d8aa476b3d8294aac6ced9034b31bf642b0f9b24ab813f94517a0ad1386a2b9b04a5a7637916ee6015ff8a8f02dd2eee9643f58f9dd16a70595ed50fc1cb8825b2b4b307cb822d228caea58d52ad0879f730c70660e49d88f8050021bd0ce8d9f80893b40d8308c0fb98a3e74684bb1b28295dc4dd6b47c97be2feb2500fb0a0810aef43410e5bc159426eeae6b2bf3b462f5e35bfb442a63e40d36b81d92e099f12902c88b62e67c75930eff6aec8802a68a37921678ba3e8ec3b4584ba700139e52c4f3eb51077ad661c23623fb37 +ce641d69c38a433455ccbbbc66b87b946fc6d3a91d6036a08f538f054f02157d63b989b4b1f4a038ae9f5167b4fd238758867cb4649df6622ef2fec9f57736723e0b7021b01ace6d02a19a92fe592625c0f79da9d13b1dfbff455ab2bb59e9dd653a703c76d54cdc79f4e6fec7497603c5c935b04d5dc7899609562125d1742fb79f408a3c90d0897fb9f68b580f488b3a3fc62841dd581d874fe99c0fd8206f8e0d6b4a3f3b4b3c28b075d4e368290cebcf4fdfc64f2d2c1486fdb7a232ff70da1c01ff7d1fa37729839c682b54bb7179cfa638d619902e97f0807f7d28f77ea206121438e8223a27733fdbcebd26a82b10c6e24dad8f5e6e63a730665bc907 +fea6968cb7388efa8265ef43fc9cb474a21bba2e53e25bf5ef6c9996d4e58121c90bf077c1c9c7fb0bbd94dd8e206cf3b40efda0257dce17d253869028000a799a596d1828ca1d19cdabf1d6700c00a198f8f91128baccf427358d088854df642582beec02dc0b6997ad249cd35dc8df508a3321af3273d7a643594f4a27b5bd5d831c5e754b4f2f08c96d7207a02ba8caf28904d65c706278ddd2948ca520b38878cc125ea2deeb720d675940587bf3216ce12dcd4c449d7b6cd60818985e133a002e46962830f3c7440da4b71899baa1dbd272ef7a0f2d60052bff8ce239ce84871a0059fa6dd0d4628bda4efcdf2ec077f112d9782fd978086f16a81698bf +fa1fe19097df171855ebe4e706a5594a3710396f69e51548e5da33b97ebf1b985bd2ae8c5168faea9c09ff9040bd462ab0df1bee3d0389121b9abab7417c89efd2381fe4f5fb37f511a09b7f8ebd30acc9b4b91f48bfe0f224eebcf7b98e485eb22b1e912b4369985543341bc84d873f92d9d35f2657a687e91a354be284680bf18c61f71bc464acb2a9d75777231b511d470766325c56c17d5dd850f10d458e0c75d1562a2dc1bb370a7ee3f589dffd75e8d2b975ada6108752b485b16bc61e108607473b7b758160ab529adeb9e41601502bdf498de9f31c845f99cd7e9b5c1c08c87a0f484ebbd4741f25472880cda834312e50de5a39830075109d300fcf +cff747f8f5737a8d51919c1c805ef9063e3cfd28ce4dea4b0320f1f9ae64583e5c94cec7368cc459de6844998b823f5e047f81d6397959d5f2514fa6980d226f07170dec6c522b97487b5b2de8d07b920abeac67df101778b19266335f86d5a24e8dbc1dfc04f11951a2d9fbb501decafcf40ccd3e743bc549f8a2300c33619aa711294b130a9dcf5940d3079be5565631d233aa0c1f7ab6551cacce7c46cc2d38462d1122ead875e771a21f81334831130bb9ce0eaa5298e030b805be2952357fa70f8ffb15b579b0ef4af43fb7dd6c477065144c4edac431255a2fcc879555432b3f4d86010f3346445e31c4b9ae5a3a18129e580a6ee396b72e11bd8a1417 +c6074c4a6f87a3ec4c4f39b68f129baf55858f1e82fc5cb30a0a16908a7283ebabaeeffc66b1320909276bc1f42ecbf6a68dde0edafbae90d87f6ac18b1da235cf483cb41b8653a6d44752978cc72fe085636f6369a892223bff070a1e2f44b85b63293644d0ab01dece70a7706433d5ac14db4985db98ad0ccf1d29fa6df12ab37eefe4940fa01a71c3053653886adc065a38ae6016e8016e74f2f9e61fd5b9a079dacf33a26aa447fd3815e970373e89f5f9a5ebadf691925449232c1fe45561aa8b562741c3002a743d90db9970be24682b32672404ffe0567b834ffdd4f24ba469669e9a77d0a2f67a6cef6fd1aba77bc94987e4c957e26f7da24ab4d257 +e4e0ded5c3394aea2730c00a7b69afa0e9d15cf50ada48942cc19bad1d0f6b4afcd458e0d30062780ac1dc7f6fe26d4fdc2c05ff84c79932ff7b679bfb5f8a357c27d7e79d7aa79024ef643f389072b5cbc42afe18c399e6d247165f91ca40f646b2e84ae3ec1b886b878b4f2d53cedfd2f07ba4b7e820ea4841cdd71a2811f30a31d18165b55e88791cf1f20706db25c74b429fe6d18b6826b06d59ee9af7401eb3cd15d12c6a918ac828c43cf12a624f6f4f46e5eb36072b5d0bf0bc4ff348cf50d8c1ecce932921d3103e4add3734d45c8d4628269fa8d95b37ced6327940200597b950fdbff9ec6f89e4df76e095d5cc16a5c73b294def334f6055857f27 +e67f85110d93456ee35611518f1a5f93a7f8ee4615d70688df39a32daa639d22b350ea31667c2a1c3960fdb006797ad41a47b919abb910c7df6ae35c23930f8f7cc814bebdc5d4e066c03d753077d79298329b5b4cb72c111c0818982b2a7c362061bd8890cf3164b3eddd3034b7c48b9462186df1917f72b54874abd8b8885ec1b87ae2115f383436eb6b59595209e76075cc7c788eb2bdf4f8caef7efb56b126018ba5e2b78aed083c5683fbecdcbbf51c71b101b54b2b76f73ec33b66caf8b985b9b8cb70e0f983b4deb9e9c9e07c756fe8503229bd122e7d0c6935620169fc6fdd23125e1391bb5ad6a982e71488e2c070925b2b099e8866b745ddecebef +f4d75aba1cc307f8ebcfd6315f11b33d77c9d26812d4dea22f4bcf3f93065bfee572a562ac55e38ff6b61f240e0c26b683fb6774705aa2da8c2a519b0c7b2c3980a9ce557498eb78bdd3e27a147dffa410d0663a411ad038c4a939756957d9cdc3c139b71aa023e95fba1d8bded16b9f9c9dd5eadff255883ab4b0c8c5314458583a141aec26d7cc35e7fd807deb21daa9cff56759e8f99ed610913cc9220d976ce40483232c34cdecfa18c5c315d9b4ef4f4987c8d69006ef4c9845f7e5ddba858c5d91c6de95216f03b7d4369247c79c9fd1950dac9bed7c77307a966b0613ccb19a0f6d332f84f33961b1db99d98138e8151c35c7af735997ecf3df1c7b3f +f752f442f3092902aae659de9ac8fdb4eb6e06f15ae4c4ef7fea7841313dca64df98d2dde32cacaf8d1f5b010ce7ede1dcc90b06a8763f5d721a777a75d9524d649f83a0542272c8f095bc3a74fd8dbbdf8ac169566f0034f27851c532cd01eea140c4d6db70d3ecb938cdf3883932fcf1820690c5308e87a7e42b6a6ac687a9aae962fbd65e9440959b0e291b7886ab361c7126e3163ffe5b2f3301ed4177eb009a221084835a85b49606a6bbcaf0f5b056e804355453ca5c22c8d9963d95bee0688d6d96c51c665b00d32651e59a65d319a8828791c36317361a9ee099094de3fa146f5606cd1e959f62c6b4a1d4ca7571f87644e00d2e11189d1ad3691c1f +fd89ea3b44e7be77f3f5c413f25941909870b3e31bd614013b54053222c72fef1637a12d5e3fbed76665c39a540d23bc93764316d33a0f38639a73a2ef54d02b454d3e48a049bf4522d8a67c5881b0d369d9e5ca86e4e80e2e519ecfd8ed426341842df76082fb0aba483192305bd2330bf3385e5b8ada0a197e187988683fc462aa0542be675debed606f659a1a5716a25e7f31d39e9b95b0d36501d44e0efd397c6f2742d9114b90b840df850722b7909a5734f0834adbf00055b04493e25cd9de9f8946d8657f15d41efd01cb44ec9d3ad4e413c7b1294fad3e281962a05941b6d5e0f54f1ca092f2e0d48a70cc49dfeef40d439af68af86cffc9b97a310f +e8907f71baa1c2fa9f843db45a149e8fcc571dc25fc788761de6708daf31f2ba4cbd41cef6399657d19bd34e9ecc52d873e4934db63ceb447e31b701dd0fd50f218c471a43184aebfb670866a17c78cc16f7d3f8c56ca3b59637bf6b41f329c07b7adef35a2807204226488a47dc427a8e2cf11e86f2bb9f2b54632d2bb554c110a7badba03af684547b31489801df506786b2b7968116f80276f3de3ddf7707a6cac17201c8aa17e7db4e754e65fca1138b789778a59f1b114c3ae23fe3b91af0452bf435eff6e64dd4ad3203e6e43b59f7ced09fd5843801ad9682d581283e4a9d6837497e6f7a6c9eccb35642bd8d8cb9704f4d8d433f1d0e9c22bd7312cf +c6ac1503c6f6fcd978856ecb5fb428bb640f7b71c497d64ef154e0433b5417aaf5b8545283fa52ed50ea9c7952d733d2341ba5686200956596151210607b4c37d9d0e218a2ad0ee3d974a1b62d82713f9f956ec15535d04e5404c6424736490968623eca99f851442db2327ba27f32f0e6ab1239bab67de015312c98137f2ea95d90ac401ec05dd3aae915d02d9bf9949f28ef49ad7d186b937d39c703d7a0bd4bc42ad2ac901fa13e8306f52c10738fcd9ecf7aee346842a69fdd52a4d197e474939c43e469051300f0933e8545b48962f9c788f11c34db4fe249b3d1d01898e962810e16113ee0f7774e18ca6b76b1618efd949d820bcf916ea307ef442a17 +d70f32865defa7b4fb3d1db6edf10bb660130270e9efb721cd72dbb8169f24ea398d7cab2cd28e5408173534978404168a062b5f10a8cf231361c63c7478b6498430443c3fd8198bf045e7fdc16c769a2d8674de71131e2a86c5f3ac67404991eb12091b50c9add418601c4ce65bdc54a3b4668b19481a491ce9bef21bf9381f34672e9401b3226f8788fc973efe3caab40925bbcb33e07ff5dc49b8fb58631651713305bbf2d67fbbed85e8846b8c832ec27c2208aac6deba23350e89e0249664ef980f49adcaa61fb10c3df708106a086124ebb7a5145f6d2b2d74470017cd879571763fdacde9bd5d6287856358931dec27106e1521401986a1de4fa4a4ef +c3c574088693f5425e0cf521f39c5805e4b962dd96676e225ddbc99178836aa927b5674384a181154606177cba22716140543568afe4b128f1f3bbc6622d27d1087e8820d66b4898ced0adbf6ef99000c8dd23c0a09d2c6f713cd36674d9eabd66632cd38696994aaff3e9edb57065845247dd0a4b8a62d2add2f6410283d9a37adf1d51358c145102d4083c20e7d83bf4bb835d81aa2b7b571235a6c188f42d05aad8535c3e7906c1022331a4109016fd3b34f929082cc4a561a3b49e4e34264e512540aef90b4eaa520894a59e0eae058cb9983e437c163eb7c6632e990df46770159af902f031d70d9e247a7d76cfc9b0058528b6101ca5c3ad95646b7daf +c13f8c00c2323e821cd3daeac41812cf695d5787c1ed6326cc37bf717033cc6801fd2a938e56d09104859cac2da8c864c5bd5d52748116ab356dd58f0177e75b5fa48336cc946e6adfb95283075af1fbfdf166d6cd73da3359b2a5b346d229501346e85decd72207ccdd12b99ce17d17d6b11355fff21913cc523421f030044d8c2a8660166f3cdf6327e411b3bd243b865ed3f516f14e415d3d29ac2e7f7eaeda0c21df5f185832dc1a7a286c5301259da6a9373b9622d9273ac0f640c2b82b019a29358d086a57030135e5e96f21e8b1ce2f5a5dcaddb37770435bc36a553c1f2611824a1016a7af950f964ca1e5d0160c1b034b815acfa47c1e079d66edf7 +c2b919b9c197faff7d0f8ea5137dabe4a7463eb4564ea88395227b1b9732c8032715e7108c99618882b791df09cf55da94e2235eb26f7d0aa0f7ec648a0507545d4f14759743ca1dfc61e00a5920080fa3c8be2191d01cf7c5b31c73015ea0285eece1edea4fa0f0bf705b581ed90ffc48fa29bc6d3da00cc8bf6b195872a838cf3edbe1b12e25e150c10bf788aacf79e5407b4c1119d9c63b168c98bdc22723221630ed9161b02cd9fbe0899a072fb8be2b52bac2314583ae26e28277367a35385c50b35184d99b78be4e161236d6ffbacbed99b12610600de6dec8cac3059cd052076747eeb319c36b39e6471e8ecf9616e561821c5476fc71eb1ad2b250ef +f114333cf0931e19fc50763da245046ceed703440e99dd4670c55ec37911d815886544cd29d593b3635e24e7c25f10885a933add44e8e0c51e6e8828abbce276a1777f1d6fd0a36a9243fb9388829ea5bd163aad4c935311c3b78e809869d00c7346556be094fd8c521ae2c6a1ce0a5aaa95104411f111f4eca197320096cd07919cdad0a215b2c883b9ceeb3bff8c8e34bda9eebe34245d09c1a3eacb470764da4365cc417132106ab671d691830f6e71deb40689a0efb73f018255d263a6db239d117ba7fc67fe1cdfafa59715929aca7885f51ed30092df24434f8c0f98010399d5eae2a4ac1825ee990d8d1ef2ae4ae76e8d696275798bde877fa8fdcbbf +f046437eb7adcb438c07a2cf7dba5cc55f48bdf9b56935bb57a5534be79d3336f56a0fdea68398dcd81862d377a3d5b7f85f719f69c87353a1bea22f6791268d4ccd952f2b5f30787d2937bdc4962635ac63db21a348e25b918a08c5e6a5bd56fea3d53c8d2f576c8d36b2d94fc8382fbe100ec7d2eaf3aa14bdacdd9f3cd00f8e7678bfe51deb064f4768c47f2ecf94beeb1601781b7da7840f706846d17682aa772daf5ea2b62574e47d1e4e2efdafcba94e73d8fa5828aa998231915f658b783b3b9b7a21712eb66f931d7716c18bb4c961cec58bb2471a4f204e06a302fa56ee9ba7f139abf0e3d0f471c040a80448f37d4748e9281797233630d5d2d987 +ee1b08c473b6437be303b27123234b58370267d254d28400db1613bdb8babaf4a1121f7897d0c73d1b75e7bc6d271ca5f15fb66fc64b8b965d58f307fdde5bfcc4bcd2f861a8bd00538775496d50795634b5bb5022a2c9734786f2e69adf1780bf6cf227b9fe623921dcec4ad52143358f6b9b8f721805b269acc409963e31df8b70cb40236218d84ce26386947e2bdcd13a76ae54cdad056361f0479ba47ed2ac6c539d40f6b75a08b24b82d2d35f406ae3b8433c08614a11fc121de0c8cc446b510311599677b170a46c0f9d02a6a3f24c8ca9f690626a3ddfc6b049d88a43c90e2d42438da232864bfbd1cf85ef44bdcd565eeda1b207d37536ea1bdf70e7 +fdfb3f06825d1eae1d1beb38361b5ccb171bd021f54cf85ccc62ef3d210216868780a03e122d1dc043701fa802954f485ec7de5bd4607553b6c930b4be27669d50230939bebcd691980098af6a83557a06358fceb13f09a14c6c0a2938e7e480833a819873edc6737f73e6dd55dfe6bb9363917e395d220357845150428637c8be8fdfef7cf41151f9ba887e5fd660e9e6cd4a4e5b6837ef41306b7eac00b20401dd9c028e3babaea74c037a5db0753f2fa086b8c2b7728796388a5b40cad7d20a9de096d1041841cc875dc5d232fb66233533db9a0b1d6a44cf1456f1ea3781914fada176de9c91f958f2d40979037fba3e373862c8f58750b846ed9a5ffd27 +d603ede94987936b7b99f9682255a7724f42838685d1c4a6eb8e0ce155857269201440f587020b5137d33189fc7579f366c251673522c0b6bd9346ad5803e7db5a0acad8bfc9c2c6a14072778ef300105f9cd9034f276477107514f5ec90ab1a2fbf3c5fe72137705a7e37d11b8c2824caae2f382b9e71b34f9b97120cc1155259f217645110fca389e361b196ac412622c9252547c7f4341e549df8b6316a1620fdb5759a758117137b28adb3ef74082eae774566670286b574e662dcfb018a47cec28303661d579889347f0d85837fb3c13df7c5ea50cd9f0cfe4789835080506b15ed1f72386233b3431bcc037314abc6a72f391dfc2dd8ee3a1e9224b3f7 +c3cadc42ca3f68055c1e0d6486320758321853a47d7823ecfc4f8d03341b7c5e737fe242260e1ddc964390ad3f4840cedf6a4e826aab9421ef2603985211a04945b871b55fa6be51f1e4dc4ac9ff100c9370aab1a57124360e5b9d1c193a687ec62a6a449df01f42531e6cee86c9776724d3304e6d4308c3b647981de28bc0e32c5f274fe1dea0613f47ae55de3188e3143d4367efa6b65cad432005a114b1b3a36fab22a9708007fb54525facd3211f5fb9bd1ba5c55ca1e02fbcca2500278cff8318568f8801eacace7493362c00c46eb77060b68630e285233a7a7a89b9460df59ca6c092c5c761726166055b989e52a542dd0b79a609b766002c68d6fa47 +ee5059323ad8c8f2d70f167120c109a36a8ffb9b29c86ee6d8c7970d229dcb7271af93ac6d6c679923d3c92bb8b0f02d35028227f094fa26eb4411a6058f4d2164396205d63c98df337f0487cba2d03c505c0cda28189a51650ea4697c5ae2f727c41b59ee3da0824c2f991c12dfcc760a440b126d897c3c1d37bd70b79af77bebff0bd766d69b3b0e29808c402411f181501390fa2518314db4001d8627f2388bd858c7fd978c96f3e33251ddc1ab219a122d61fdd02199f59fcba6b1e7a42cc8f6d6d038dfdf0bbf3fbe8152c6c68f1f8ceb294e3df28e2f2bb4b10d243c609378ed9d5b8128f4c5e21284d59ff2cb5fc9e4c4adfa12971cb4275da1595b67 +e51bf64c4a6331cae7e14c044371e98354daf2298842e670f4fa159c400eee2a452ac468261847852d88666ccd5e6c793de129cfddbb65717734597bb540775fe49d44db3b96626da2a3affd6eb6f86d24cf3114b8c3502f887c285e824af00290e583c8aab716baad11bffba7f5b0e703e5e3e305574b18b768053828c2c1ff84a3e40d4115a99e7380e11ed76008f6b4859d5f195dfd08ac62a5a1c37ec090294d942c40f9cf100d617e46a7c652a8aaadbdcc8e8b5f7b19d6ff5bb3d20fa557a1aace96484bdebdcd6ab25466d8b44e7fb52e9f7523c0cf75ba6ff106cf30235e4fa8effd528f9163fa616f938ccba392511bfc8498a4bb31d15c4d00dbd7 +fc6db458e78d2f083ddf51f288fb25697429ce51ea390a1c4e54c55162a707fb69e35e962947a739469fa11efe3c855eaa319a26b3bcbda807172365a3f02d24f347072231f110db2939b66defcb03d40a21703b711d7932b20dae47f17e4adeb7cd6cbbaf0328d4badbccea33bad0d96ffe165a561b2e0c90a153c2f198cc9ea20b16558cc2ca29b6b1b4ae7ba1f5db0b0d60cf572357bfca95bb1b873aea2eaf02f9c0a81b1a63da0ea4d8add5aad0ad1c0358c629f8be6ce7bba6d4f11f4120c429e0abd91f0236d58c9fd4139df163da0ba9f48145fba53e55e15f921d8517c53064cbcd24f66b3ee2e9bba70e1c1ea2021d19f858d48e00bf02b275ee1f +f7bf622354267d402dd510c7877bddf455ebd5a76c0103692bb2bddb5b0819bd3bc876b9edfdec80dff9c2676879776cd2671da8c6d673d6d3d153576ccac7444e0a4667a44bc89f2ac9d01583d163fc7843f7dde720959f4fedfdc02fefc304c8b66f7577f6f29d63003587081f0e72d4f47c163e144df1ca5593bd3db362e06ef89d4b72da63818128b2e33796d3bb6386e527601cdcc230b8c9e1d56241eb40366ff5773bf59e2bc443bb13e352ef22f90ea67bd1dd21a63d2a25ee58ebb9cc353bba5e11cdbda04c9ba27dfc2b08afdf15a162b1bf674fb7861853f06677102e98c810897005cfc45b982d2739d9c8dc0796fda598b4b7e38d65f11d3f07 +f9f0a9f1b8d7999ac4d96d51cc20e279fb2ef5c3eec1d269ba43de1a5cb5b68508b5792aa7955a313ce4e610a5109727e34cb8d8cd1daa115fee4dafb2d81e2afde3fef427f1c3ff748c90662ae49df50f921e6776e69995ad182ad225e022f113dc99fdfd3fff9bf9fb36c119f05a524e46a39724465d4f24901b7c10fe593ad83670ffc01869feb0d4ff5ea46ca7a0e59d67c0b9554773c36fc90cb3717c828213eda075d55a35b9880cd77f5196746b7bf7c213d1f1692021b9cc8431fab0889ed7f75e8768365003e89f247d68dc7bf733df7c792fd1fc7791ee26a4abd69c63e10a2ff19960305b4da57fdaec7d25ee67e9292f83ff1a5b362bdbb1c917 +eccd67653fe9888d9c80686e0ba865a8a67736887fd754d5acc22abbc0d00204ff4e50db7a8ed6b0ed0f85aa16a4024ecf1ac0d8319cb08fbb3b610f1cfdfc10a43cfb642fdc15716ffa183caa08c0047caba1aa6a2524667f28c068e95be29e98133e048ac8274c0694dde86b3f37c25c2eae7c405996d277743763a34039f8caebe65117176f036662927249cca3b20480c2e92e194c7b02efe0ca05c2fb34880f13761af9682c9fa5942811ee7f1e712be3bc3915fc5aba6344d3a71a938b42fb42a0ae8f0f54f7e67b3230d8626c8d3900e7b6fb932400a28e1bf95ad47bd314617478c19ec48896808d5ff082337cd4055d9a717557e50aa840dd583aa7 +e1d4cec7d3483fdff8b1dbaeab935b1b2a8a0371afd5efae3183b4927414118b739c6bc600cc3a0bfe490fc51e22074fb390753694dfefdf6f9899980d297a2e8f9e09b6b2dba54e4bf62f3e1c2daa9cc928129749137332dc1afc54b30961e55336d444ab7c38d524ee4276248aaac3fefd9dd7722ee207c158a92ec43751c9883baca11735ea6b97a103f2c742355a8024760f28f648fb930473f6a696aae05be23ce62022fdf861d2aee82975226b10cc54e62eb891f9936e527bbea1550516fecc2184fa97d472d4e7c7090ffe58293e2de81fecfdb4509cf6359fb27b8a035e25ab86486d279c8270c2a6da161608d718f6a9c7f5540c9234a76f26013f +e66c51c82ff3c861a9409cf63afbb9f3106fcd7b69b104c915d459d88bb58d8c77b0854df82929b9262aa86becf63ef3037564c2af66f823552ec2fd1378e65ad41c8acbd7914ad67324bd1065f11f6aa7f56eab9fec4afac651f707ef7536a6cfeb8affe6a2f0582ed046a6625fbc8de9d5f1577d9b92e22f22a92d1ed9d923337adffb8b85574a4f5416ed508388dfd4be842abe8c30cfcbec32dbb8a2f493af5915cfb5ddc9c882bb7a7f1c6ddab1d964172e871a5e652c28a20c3dbc00bdad43be985c796f6bb04b5255979d1a110640ee05c982660c2efa2a3a61bd5dbe253c52b6095d34505a62a2af16f06c37f72fc40df24af6eb352d56de681b673f +ff6123ce48fe1fa45e91c59a11a1c54bcf0a05f8bf73a1b4459b1829f64ef632f82b42e0c46eeeab20640019ebf9ebc0c9ad76ad41b54f61eeab480da87e71bd277a60641700b84d31ccf4f3654f16c8b859d72ec013c14da37d973843a0c5edd60c602352f17cef42a8973efb8123c1c2a8aa5e9c276c7de25880a6f4e65e84c6e3f4bb1c8bd2db2dbd55a9d048be8b803768f8781d1bb63dbd84b86a9aca3dd4824ad9b390375f8482825b8ebc982b719e6a0fb7b46d8a1589b8093fd02115a9e761713b0d7af1f79ffe7b351aa93701fd8f27595150f982a0394c2afd637238100a71805f2010d9b859c8bc99e3afdd1731da36d543a23b20347f8fded4e7 +ddae7023a60b9e9f427b06cf43a027c2817c8eb9a43afed89cf4728908bee6dad0a214919830869fe8e886894dda66a7b043dbc623cec1fe77383e61297d2da3f879232c6406e5bf5dfd8636cec5b72a138d0235171085221c3bf25458d884f31debf7810952f31bf93535fffc20c4e081b5948962d95bf2a33af0d4493142c367e019446a073f3a7801b4ae7cadbd7c3d6139d8ddc5a596a10857505098cab3114f6f0e85eda44a35dc47052d146740a9aa57ac49b07f0ed5d213ba386e151019e26a807ed3e8436e3a3c271926d0a1c920e94ff1aa0541c4c93b56156d27397da62c28f2cb33ad6d63df9f4026eb0da473a27580b79137ce08dd5c7cc9f367 +d6a486e750ae6e7e408a692f01713f43e4054282fb35383e27ef890d076dffd3c6c30b929f663bce9522b1987c42b2d1c077937ad3f188d9a912bb98047a30f0a6bf0a7443199dd63c11af43fde5368f6a6acb257212cb71e85521dc4c65915300611c11b44a4a631c72237fd3e1f30cd2a0559428ce817629e23b4109e6d98351bbc2c5e0e9a151e4acf0490d69b74fa8d430407453be71d8030470cb09a1022c981781779e2247e3fe7eb5184283522e196d7f5c7b63a2bd436562819e76a42ab62dbb37874eba2ef2b79f53dd9b4e8a3f41984f6847a435359febe381db718c25b3535168e4bb63a330ca9480df2bcf55a35162881a3ca024d86c006d28b7 +f15fe3102f42267e5c1d28935f17bbe7dfa129d3bd1ecb03770849bdcab0cbc646710a4bf72b3ce4e7ab150047cdea262e0bda5ac66fbb2dd4b062692f7d629d6e3e7b7baa171e0a363a064b959edfdb9bc67b0273e6e69b2012fe4644e63ccc2c94c79cf4b373e999d87bf18ffd76318e4ec55a0d87472d7205e26d0652bc6ec07537564b1af7089adf72aabf26417272c5adc18a221b5c6e02e4c60005cd41211d4ee33c7d618153c2a85b10791fffcc36e3b4a85d3a33c9ce2170cfdbdd79c4f58d3b40aabb9e341504604fd83440ad9f4d94f6abd0e320d071f3645c457d72b66a33bbdb2696ad38e5a9f96cf49382507de1bdbb7bc1f8ab5d42fa2a71a7 +da364e6ec8196c27ba753e8078c72c47a76967975466b568b217ccea320dca2b49003512f603493b5ea9b026bca77613690869401e496d01eed00d73540a40b89b26405c9d95d95da060da4428ecfc41e4ef18c637da1d4073df62dfec58388448784420c7b2372c4f6024c51dac5ae256ea6190799ca646f99f3b21299c5a7e446532a5281ba8cf8bf10517d95670c2925824a0c78e5f4ae5cccc5fa2087ec8c2327879f5d45d9b8b16005521dd833d46538ce11bb30c85a67128794597f3d44f8649b0436542ccadb075adc781f9a3d5d5cd9120de9abff904122631150b5856432c0e610147285308b723562b4856137f6075d78d9f6b147a4da215c281a7 +e425d06ec950350b5b54e915ddf5fd142ed4508985b7ce21e7fbb40d53e8a1480c31d6035b77409469d9d78892740d1930e83557ec34b86ff03852e9b1917bddc73abb0cef1b2a08cef4ac416bffa968336f815e4b0ac060fb8f80af0968bbe190ff82b62b37e59e62769c9756b1ad7b67e45fa46846c94a1ae597f909daab45112205510153cce3b6a04523b75f679249d27e4048d2df28a6022480d85438c46a52585ca66069530f1fe93290a6b7877a3a30e0a9493a218f32a8ad3e88cb6d3ecb4f80ab2161168732b31a08a0f7530182a95b287b61cbdd2214d54c6c47a1db5e3d3bec3090857c28e82a5918710fc6a06395e2dea4d76999a77dbe12cf2f +c624c1daa9dd45db14873b56613865e1fdd6efdfd72ac79e15d80857c181bf6b04bae508fe638f65e651d05669c5e079e2f4e6a58fa80f54169ba8e759ad0fb0f59718c1baa480abfcee68cc2190937e76ce432eddf361bff92c16c36d2b1080aab65c93e56c0fe96e609530039f7a84b1704c79dc62c4c56177eaf67eb62a87efa936d3340772033cd7695ec7d8515a2175008005c9cbd5b0818be77e43e582dd9b474267050d22a8c0f09f9eeaaf197195622272b5a74f56c4c00261ab5ad3fe406b3a6f28ebd64bfff613e313008a645fc1b7bc5a008ac4d57f6e8a5196409286b518fbbb69554b2c5da00f951917a18d95ad10d20299808e94658651373f +edd8401cbfd50eb59afa71b27285d21087c59948079b2e2ec91e045684a3bf0ec988f21508bc0666d9f8d4df4c94c0befcbdeab3dbbd33b1372af85264d3b216c1eaf9a983168ecea291aae6ce082f07172860fc495d3b147ef43392d2f89f5253249b24b17669ae8f2a439ed6c8d3a1f600c24867cfff4faaec57cd1807dc57acf5ab7d2fe3803182dae8ef480420cf79143dd8ffdbdb377cb9b38815da01e2649b0bcaff9a1a3f4dacddfca73f3c55c671c01b8b1fcc91905d707cab357e31ae7df276ace1e3026da8e1d477e0d66458f0df68db298b8cd1f2891e8f8a80fcb2805775553a94f5792a2d6dba4f9e5510ab1151b8d95f01b310da872f3dfcd7 +d0974c85e5016bd8a1288382dd20c5ef41610abbbf1c68873a4a00954997a4f92a8fddec8a6a0b0e882f1df4ad5b751022c54cdc0cba6b57c2f9a748713c4bb86066069445571627b507d73a331b5c1aa3ab8835f1dab25775e35e62befb18441ed796612fc1b04d3ea7debe1f87b46f18eb3eae09742987880d75e1e38b9c6c5a10978838eb73ee75a2538d47cd32c31af5ada4a739fecffec9d520d6f90b90a4dcdaa3cc7ec1de97d4e82ab25fc5e25f9dca99de85b760c5ff087f10e3a9b7d0b83c79a0e5e44e741bb3e28492d6c5e4a4a43f38be2b6b56a99948876c6a5f61b1208ba9869c24fcfb17be4d5b22828981e300963b97a8c5074454bfd5d0bf +e51db05b9749992ca806c560fb39eeac2c03847f3a8eb78e0a5b25b6b13caa6e6143f7242e03ff18f46ea0d85a8b2aea3257b0d03ef7e9641db2d01ba697dc959c609d213621b548de8ccf53f24b2f4546e7aaee49b6b1fbbc850a9d05451835bc1d44507c1608145cb5756cf1ee3777544dc4bd8c94e00d76185aa0e9aca12662c724e731a6b527d9c5421d02f797dea27e2fc00841dfa57efc79abe3aca468e40d484816eb504c04ad03646afea56cb00337292b9d9984cd8ba8480762778cf1ee4374b711501fd5ea32e1884cbc9eb2d524584a7e71bbd805c866c53ff8a04ed2f7f48f8e7882ae9f9e4e64c8a57e8a89c7d517eeb83c061b5ed5279fb0c7 +d23d2282e5c703dc4b4a8b4f50f8ec7b07a94184da6423564aec32772c51720a004b5b1193633222e3d56a73d4050fa3c85eb62083ce8577ced19cd759b015206554b66957d6d40778eb9cd95c312e9058405219ea86730289f93e00948beb5fe197d0122b6a0ae0ad1282ce78558dfa8789f6d27dc064f5b8ba72688cc32fd50ae27bcf558faa1fc9e8ec36af9a278dae92ff7b5c3d99b89ed8a125f96cef2339f78f9d7c53d35bc0f08c6990a8b9662ffa39357763f805e51704d8647c992fab78d89d781343438bfdb0ba39373f97d0ee676eb81f9781c449c2ba84c1ef9a1470ca68a86471142e9c1b669c304bded0798e097d1d6f11690dd0e0815109af +ff5c6e01af1520b51803539722c2298a02db4155a99b3c9515cde281ab6fe1a948f3bcb3a1f2c3099b50335208f4c1e907d85d338dfb325d069a0ff06d65baee3b456c28fa628904db08e066909ae706e0720dab0faddc8ee6cc082251684cf978046dfe44ada2565ae7deff4840910cd2505e9dc9ef239d42cfac7c8b8d1503453b3c8a28ae58a94deb2bb15a3f690807a4bc11a4673bad9ea363a061e70e2ab129f31786478145f274f8dfc9063c54f459ec51f82c61c2f7d378f8577ef80613a9593a3fb0ef38c31ee388887ab54dca4a939f560cbb79f77ed13d14e4a0bbca0b6f723920a45610bb099523dc3bccf68eca41ab2a3c549255a8a79130968f +e7b1471500d5473bafcfba11f2a2bad4933a8dab8d7c48f80b4e7a2aa4e4b0fa487da048c5dbd980d7abfc84a50d1a7836590c45a314a814ea8b20be67bd110c0ace1757d525edc059bb9e1188e588da6d3dd12da54f8d7da37bc2252cc1a8c101fd97cabe6ac1c287538538b185a8cd5474a1f702ca24ee049140d7e5aabccf198430503d9bb71a6097a6b18c5f10c91c2b4e92a6698c556878d74cbc39384afc3a6f00b32a4fe9d4d1706a90fdfee9609fef6dfdc13fb597c28cb3277fd910a9c904e4dd9f52ec8af249bacea7b3923b11ea5f36333c54afb37e7c263c4c71d6651f8eff5e7c8389c4b4c7ae642476841f3c924ea957a2a114cf7980a7b19f +e8eb1c4881ead8a991b415983cb801a9ddc4871626f9ecc22b5f3a2dc33c710105d59297ff47fab0f320b6951457b93a9eaf3c9923853d2086cd370817e9d213aa26f14ca11628ae673a675ec61ab01779099a4e192a0222169b31186e1c5a7086aa10bdfec5cf87b28360f63c19e456ec210184bbebdd0fce273d8c8a02bcee814d111f369ec186772dbea527a3bcedc96d48c5bb67443e8c417dcb31adf9cbe310adae62af24592e657c39e5b5ff67f5ffd349814dba81a5537639ffc215eeb6fd4973af1eec4c7b52c978e37edd9f7d8f8092d7de10ff1bc309cd4edb68c34c86af89905e923f96cacdc73f3bdc57af1f41c0add9d0fbf22ac9c50bf6914f +c540b3cfe9d46980ee40ffc9a2afebea9d4928d181f0a2f7ffbc5655edc1806a4fc76b943b9ff0a6856f9388dd0255e686bc1d3e69ae11fa276312b5e827b23be76bcb68e9b53b3ff8b130f404f1bb917bcfca4d861e46a3869c9ab6b2f2f0c47ae2f5b71fc283d36aa43e1541dd6b6ed65f149b12d633ad38c807d2c2b3053b792752dc7ef5e3685f1520afa643bb7761b63667cba2df266ece3651cce9d956d0e703ae2ba11c7bacc0d7fbfd480fde85cbadb2d9b668900bd5114666cd0a2d6756e97575c9f4dc0a04b3221f08c83cdefedb9464ae6ae18e0c705723a3c2dd042400778ffa259df171f0ee3468cad1f09ce59cd6557c2b7299cc122f77175f +c84ace65fb7a593ca9d5ac44f70f99d48fab83821fc716150f72ec4c91f6b3d942293263482a4ba4e050e59f592c4a7bd65a14fcae4c8d31a3c8ad476bd2b919e3a26d090e579a8221ad352d7e76ccb6fd1a1872aaf3c47a8f5b0cd0d099cbeea5f02668a51b6463c683d0287b68ffeed47e2a1a8000e998534c472e5a91a6cb08158bd9d08f35e80499027d57be67dc2a1bc2b80d067ee5ae1aaba5c1d4781e01e34a7e152a4153f688dc743a61a6d9a9a15d0bb1a1d1ea3cbb6eabed692d3382012db3651f1181774705df5a61f8859f6bdfd8331ad842e3769ecbeae856c0b8095ef865e531d992b8934d09e947f63892a0ec4be846df53d275ff8ce4d8a7 +f38ee21931ec944825dc8b53e3d23e1601c89d7482ab6dd1ac7b51702cbc894d23b1ef0057be2f29c9f22f47a756ba65a02d50270598781b567bb74f2ae02fa04d46b280955bd17f23d90fc0aed92604cd3498ecfb90a97e9a4fca1ad535031302144fae49aad847ae58d26d48a8dbcc374da41753f352ed77412139fdf531c3fd5f8d642ff2dcb5f20f3aebac6402edaa133f9f7293591331b7dc8655db9ce89d8ce8038143702091244d12727aefe03177062b45c3e6cc11d51bc590955e3f63832b15dc78d9119df28c3ac794d8f89083bddeddd426cceb5aa6bb760b85761357d8421ca72c479dadc2d802b1e40b15a0416237ebf4e0a01b052ece5c5fdf +e681e19e90eb8198ddf869fa083c095c338bcef53f6e5667cf736529f975f70544db900c417c34eaeedc4d909aa26a4a5ea249326d8d4fe867aff32066434c1406653086387f478798ea61cdf8ba7b5da2412d633eb9bcba7c0dc28894c0540446b85a1add27e86e0d54441a7d8de4f37bb53b8a68771c05f5bd21923f760f05ccbdb650ae636e698254fd81d25e708f5eb5a3dd00ed08735fbe86c46881bfd47680ddaf84817919fbe0a32f0dbbe5991e61c3a276071461a02d3bd4c851e57c70bb56b3842b9992344b2a436383aa2795a279164aab488c366f81401acaf7ea43f38780be2f1d3051afa57fef805c9fa9dff53a36d2583d9c30c72f953ca7c7 +d4d9ba98226c9d5317b390e8d433c491c22c639f21bb471a6a03adc24c171d82148c8b02284564365a7b54934e65a8b85353836000a5b7826808a01d983447237928e9f500e2e0c04156c38304dd6a141a5ff843f632c24bc751f156dbefad2648297d9cc713f5dca55c3dd5cc7a9c7e41921276e9949d6d6bb3bdbdabbbda38e60a34b2c825b799cc0cf94420c81459a3d8143a09213ad16cea6615ca2196af776a1fced82fb1100e25c84a291e7f2dd21a5bc93e1d11219453034c2b0f70ef339cd581e5b62486aac0d389afe41396aeeb9e0d4357bfe4464f51e86e03a20028d3bc58bbe0f86b7a686995df127801b16bf5dd75a71c0c2f33795f7d0c37ef +f8bf858cb9bb815835ef83ee89b8b57360460cbaad8e2bd0e339e7777bb09b3097bd5ba61d3347ea3b7ac4f97b09cd516bc9d1d3afc1ec35a0bed5cbdb637cc9cc0758f6ea3d79194142734c0d72030d97ac60f01371d9cc4bdcf3f87121e1c2ab85705e41a163db7789218dd3604d38e016ea561264dd6469078741bdfd8b1c804dd6a5bbc4710c8f743878928aa908a864d5615e693fb400e552aa910e1c2cf6a33766415e8c6eb88327f5b62924dc04e3a21d290aa3b2fbee1756f5057606d8169a2c95dca79b82ba120eb9b9f27382795116f2e3dadffcb1b1ead0bfef41304077c96a00b43754d61decb4376b9a31e48145bd3eec97a673d7b7bfdc1ce7 +d27f63d439f95ea1f29f0b3935675776b3aef81ba35fe369e0952ee3474243fa256a1b3ff77d1ac756f04f4c04d81d60b92f59d4c6e437908db647a43bbf5a7e1b35009d5a28224f79580161182a234aca7b62d3fc8466ca682e51f98c5e55b065dde5622784177f311e29693eb7f7e334be781ae2c445a67dd183f5e5bf1d5eb2f457b9fdad24c6d90f53d5e0dd7e63ab70d6be71cb0cbd9c6fb1250557f009fb1c5964b983d0e66de8cffb97025e9a66f6183297b57e2b4afd4a84f2facd1d7e54dc8df2b4ee53ec8a804b5bf70a0e33ecdbdc1c78027a6e31b3a7578c9af3d2349a3d8a381d0b19a8a01ceffd988a9ca133b376e49d78f32430e9f17f94a7 +c7668b65841142aaa4b19db8791485d667d209a9f22809ce6de1737cde1b5505767452418b7111dbc42665ec219a282849b3cde5f087dc6458ea42ebe5a0d979dfb3d84746c896c2fea36077c1d2cb5a0364db8ec54d79bcf7e8f64bd7c9bda0a5848b4a9168eb56ff2ce814f0105f32f0d972fdb51e7f170b7742e3cd7df82c8af32407fd5724b3107a57d9a2220fb7b8f31b467d7a16ec4350d95dbb148ddeab8730d25b7cbc0b3e0bf327b7fb78e59e592bcaf5f8f60ecf3dd5678d0e811844413b155800f5dd7b8bc377c3e131a72eb9ed386414976afc34163bd51e6efd067b3c3bf356637b5e3c2a1a4a6e51566ebb011be7bb34ae8995f5134460ea8f +f0e51ceb65d03336309ea71fac71c6fb0604386b1aef0b7fe080abe0abe39e4aed335f11e04c7179e9dca4209d68aae6236b9a62fd565e85395cdc43447f6ed474b9057abe88f9805e51cbea29b1642421e3bf3f58150a9dc7953264def4b030c5abb13ed1ca8addf23465712e8fed7cebf4c69997ddd689633eac57f1abe3c7ad4ebe2cb8d7aa6c9f733d70eb8e610b26b0cb588b109433819654d205732b3c5e647f5add6a4ead3f30775f38e9e618e748012c72399833ee7caa7278f602c1edd39fbb2462a868b12467149a257678cbc9ab8f91536d1b523a2aa061163c9fb2cc1b8b7796747c19e23323158f1202dfb943ea976251fcbec3d1b9e5ad874f +fda83fa1336baa715bfe0d5a0bddcd0e530bea18458f32b334e83a317124349ff8fcdfc0b3b069fd7e85c04c64967aa6e2e87ec2117c054925a2f2c1dacd5af32d6a445ffd67b5e51bec2856373985e83717a394f13c259bc8f6c972d530ce2e97ab938db759e6e9e9d563d28b085da755b2170da71e8e6e4b12e017de69ba4ef3ce4b07977c5f07995456b0cab959983d5b2090c7a0b8324d64b0771a6ee4120da3ec72a55d78de8ed91e7ad7694d7caba8e795b606d997f69d7e1510ac19b0901782e0158debdb15e5a1d35e5bbdb6057d4580640888368a64ac00b1cfad721151b56709de9fd027c6e7015d556562caef2f3691bbde859ee9f89d845de58f +edadee1a04f52fa269eaea637722a01137dd0a2e2bae848f7acc00cd82b457c9a687f173dea17c22b3ec94ac0cea31398cd0ccdfd4978674b838f1f53bd34a2fa3cd5163a5729330d74038efd759e86bca398e8dcddf8ee6109065ebd0f83f4907814a796074407f706ddae0ce0a23b57d20d1300ffba61d97a9375f13388c995058840525d20224377868d66f8f7ffcf447a63fc05af16e694fcde5d3ff835be9a86b2c73a73d44cd1688817c182b7857b30934e2a266f2a8ce70da035b0538ff8c747ae9a9827881f3cd4c072a949d8fc13fc2c3602c59c5ad725514f708e0667613f202e35cb9417a165ad26c841e108f737e3139afa873100fdb515838b7 +d12684e501db5acc0d13ea0e6b2337cadf31b9b333ec52d19e0d50dae858a5d34a3e88972ee4e9cf9ce132b780e07cba1fbfa08fa48272fd7b8f7bd46d779170042e11b327e04601de0166e1035dbb2134e943858ad5569b92c1844f1c4898d5ddfd9cc82dcb79252ba9203cb9e3217a694c3f19d1766b7cbf0c3ddcc4a826bb885cd0e18865a64c562cbc81cedc6228596f63310c3dcebd41bb244c17c2fb6355a73ff40c8c8496e58f0cfa737b9f7779252ce75474fb21eb8304143fc574ac43d44880efdea2af848303b41484ab81c34eb64b3bd85529fb6b432536955fe33d52a12090c3e94f729c0cd67c46a79fea8dcb7feabc92d4ed0dbd2935ababf7 +e3abdb3fb07155673eeb205102534d2f68106f8f45168004281ec826e4ae72f455542bb6f92c573c175240232b822b24b42a964781fd3578391ff97ef4477780c9abe473ad4b2fb9229d88fff99d4e1a960dc6f4f9862a996b5f3d6d0f1f3f46a260ec490124fba14fd8a5b0496150e23772460730f9c9a2da9039189e0d6f935ae7422c03676a40c6aa3d62a922e45daca4fbbe00ac1ea89d88471bdf09406f5058ae289dba407f68c4b9496f7d5d4c67ac1eb1471a5714974177f4045bffac9ee570b0419aaf39252abb7b98a81e5539abc8778193fa2c81db60a674ad0191a580e84cf175a5d51e69fa38d6fde59bb707752d4a06e36816d58229ceb6ca3f +ce2817c18a33f986b04ba5393e219f30dfc2b74583d8910253a18dbcd18de487f39a2bb67ad9efcadfe3e3646e88c2a1a9604ff83bb7430e94759987ee627b2e16883e23122a3b4defdf4280e4a09845dda9bfefdd77e202ae01ad669a8bc0d348d661ccd60d021ee3ccc00805227efc1743b59a730c3ec9d37ae8e2e8c360719cbce1a516fa6e5fd78dc55a9f10c3a7fdc8aba4231e851b1dd94659a45b408155f135f4df1a11eb85feac6243f0493182e612c860bb73500668d1a8f9f84770d32381c58ded05e3df6015794fd609627c24a9d39fa6376c49ec73e1313e948d256da90ae36b881e136d966991bb7c363f40a770d4ac5be955fe4cdc58c8fe07 +ee6e2d95779585dacd48220f5cd20e2d4363b3f566ebbf44d835ba9ceb653a00c1c4f266c3f3283ad56d7fec38bf16b2b54fa2f1ea13d9b6eb41e931dbafe319c6dda465cb6663e0ab4544569e6453673f05906e9021b477c977ceb70557133cc6686829d164ac16e7f52bf9ba6e256747cda1dc59888ea63895d2734a6f45895844912e2aa775dd425f97bd9474bd412b3db8a55bf0bf857304c9a4b544587e99e47b057554b8698c26cf16106c8b62d72cbbce23fcabca94f342bb96485d8fca8ed9925f27d3d9443ff7e627b8acdb6508b83afcfcf8e0bc84c352b63d345d187c7e32100d7119911a65a63383bd52347ca89c2b23170795d54f4bc4c85fc7 +e1632a88092e3199207f700066f2cb9fc2c408235bb6ed73010673e6ad6bc40806d10c9462be0973e0f7f1460f93cee2d7a7c83b38981462a1ff18fc58224df515067d06286ed72e8227619d621d0f21ce99033340cf17aa0c4b4dc23126a75fa0029e1e34c628c51fc6c41605363c825712acd325e1ab07d345ddbccae77bc35204d6ab970dc8f3f40c239aa649e761527156e60b18af8d763a608c747d146450e84632e9d418659468a75121be274a5096fc7be46576a85c5d98b3a7c19b2d8436b4c083530e62c87051bc4b45dad216f71b59e420542a4b66009c5a8d7b6e5c4bc2403d44a5ccd3e38492742d4c3ace25e8698aa0cd294a6dbfb6ce6d650f +df20fc57565d098e1d3902e1feefe3a319c2b7557be6912b14f6aedb01ab5d7a12bcc8f35db0445510bf11be2837f92dcfa0d8476dfc8a80146b10affad282bb4ab68ca5050753dadd099afd9153aee6b257e729f26cfe3f2ebd915b342479759e79730efcc030ca6d98a6eb6b68bf140990b49efefcc5745cdb87ce43f104081afc4b3764cbbd75124f295d3cf1f91baa4d763c02574b063b59ca9a5f359b0f6cac3dbd2ff348996cc59d84cb1976a6bcd163efa97111111dc9e060d772aac7962bfe7e96ed3e9c36f96c4ee8709b37ee61ab262c95fff22038725e5fd79fb957ac688c04a493aa68038395b489efb610d6e0ab319bbaa75a3d4ceee9f0e97f +f0ee967f26cc3e6b88ec142f5ae019453271064fb24e6c04acbfbee83ee58c0de8720434a2227eac02e834eedabba455eb90f0016b30090e5f0fb68bec9e42fd855660628b9aa316927d383a4cab85794a824cd42469d664e67beab70c0a6a20c762aeba870809baeeae1dd2f4cfca1d505eeb6ba6cf16722e7f30b5820e9f1a4dfbddc2a4995886a416a78e68c26629eae02a9a78c4e0cc23306c270d24e8ae46d2163e184f285723ba2c0034de3eba968939d616f4be848aa07b601a9f04f06395a8b42563b71bb7e59cda24e4601ac5febb48c6a6b52a85610a306ea42fe8629e57bdc1c85a5a0ca1bff30eebad19f7b65247d58df53c120d2a5d03e32ad7 +fdbb4819e82b626276255506d6d231545162d11867e4856bc24874010d0317561378e5433c1fa82f2bdfaa104562ab06f827c7b583ab24e6328c96bd495b095fe9ea39f1271954706ae949a56ad0cc34e9c2168fdb9363518b53329c72e6ea5aee4e944e57ca43efc0ffb2ee70109b548ee4f4dacd5879861dc52a509d08fc45a7da3838928fa9b381d43fe4ff168adb5527de4b46d7aadd6dd85706b11ea35c61202ce775300b6b5e6814b3a44126732647e03afb693dfddb2f972de2ffc33a06f27748c4457152e4eefc5800b48dfa78688d57c8ea2f082725f22a7f794cbe676877613482229c6b6f693a24e4937d3029200e63085178b0abc2cf992c0617 +d4c7420d865c77ecc1a5bf98ad218d37af7ace200fec636bb48bec2033adba5464056662e154200a39622b7e22fc03df8d1120cd4c503b66cb6acfb4ce41cfd50fb44a2415a57266177afd5000d483455b693b4391705a168e30613dc7f33eff354283507f4e2e0d1800ee2eb16f902e69fa0fad15c6d3623338b4ab05e798226f4e3e9d980322e92e58d6d58de20b9282318b21cababe631485a06215ae6731c9ae65ee33f6c94d09ca61c4fe9799944ab8d185be51e7e9e56af673d21190784df23eff7ce00d1d9cba17b4819c0106aaf54f04861229c092714e436e5fdb08fd3b3e64b9da9816ab7f4e2ac0ec040cc1a707b979203c5d645b735d8ce47caf +e23075904263409ca04e5c5fc6b152aadff8ec62e154f92f5a02da5416744f1fbdeedd84e7917196df50336d17fa9769e0a38e0cde68869f384ff077c2c51d7f1bd02d317b214788c13522833addfff0ad286e346634fbeaec64d7f70cbcbc628fb2d39970fd1ee7501e52206548207f7a3ef7041284c2edaf966e28da9b52d73cc597319c45c92e80efcbd26a2d61572d70b57a0a2d977063f51214ea5173cab589413e35c72270a351940a58d0ee6538a5abcb7135e59ba95b5746206f1e7bef4613de51ed66280fe472ad63a4ce4c376b607b494772ccd753a3425cf57659844cab686f187794f56e37d2effa14064dcd3884c8de0549e1420dd91459c507 +e4eb7813774c6feec28eda7f2f63489f8e5bff32d12692548016d42c499d882e84f45c80c671e1397e964d9cf73a0b2eab1bede46bf23dc3ef020bbf4004de7f3c0501ac38382f87b017ca4714fec9277a493c1f48d6b57f50f7d4b893d4e07e08352b75cfb311874fe08d6aaecac4710653936c20d55683ee7ed497a4241c6c37eaf008145d7c5b426971a6d115f630d02e91463b1e8f88978a9960936431bb0f003abb3ed50237f640509791f4b0ac2321706b3f08d6be146268a009d13ed7424fb7db167ac37a1827a4b000706cc4adfeaacad5720787f46e71ea007a0a6b6b74a06e8b54d4aa4235303988843881122066b86d0c72ca7bd2483c8f95cc4f +fae5a3157d68e7dc159fef8130c5c53fdfeec65709ada8cdd496125d5dc15e1a183094d731ede5ee6badd7bafa5b574ee59eed964ae274d95b4cdaaa22527fdc59e9f8b25ba0b0b0f0ac15d309e360ae98830077230f1838c18bf4db5def3bb315e9fee882546aa062c240cf234bd560a9cbb35ff07b0d3ac44f37e50c9c4922c46131c5f850797658b1eb80dfa1882e5af6b096866c9fd871dd3ee073c21d5c9dc9ed04fff0e28fea1902679bd9952b12b51e96051bc2c8318f779b2de234025f136bc93fdada7417cc39572578e1d74e187ccda32ff6b0f5b2bfb613f85e120544ce23524384c7951ff249bf4ab8dd3d48c5a61567a1d3aebed3b99494edff +dea0b34b5e8b03e1c19bdbbc6153e54eff470298318548da6917fd845017faf1ddd6192e0de33aec7cae2f0b3008f73067a54e84e27e4c40d8f7c077818dad1d551d4110df09434573f7f10ba2ee3fa1cfd11ddcba7d7fc50e1525d1c17049103e698054353c9bc20748bb95bf88c2d441c7e1be5cec58bcd4238e66a36f1adb154141646542fe6c9b4e6dc12ed3dfe0b0089d58f8f43d3668786ca913b3b3aa215ad583ce9845de3cf5092fa067ac9c46e923d1304bad1e312a889f97d373dbde75b8c63d32569f637eadf38366695d58f7eca56e325f8b01956686ca172e51a104744378cb04dc78807f20e1e1fce3bbc98d6c3b7c510fd5e98f780a6d7c9f +c6006f5d8575adedca8fbb5aca3dad500d1409853caa2ff0db7df36a9430734812896d4b59c524088e27a08fa864e9859d1b97285a7577be4878036da3d2c1f698bfdf94a99da08cab36e16bbac5ac7602897253a799ada88cdb95020515e18db00821436eb8c69a5526ed70a376ccdd2b71f8b1ad191335ee646223fde8fcac7c558b7aeaa7b10b56d18dd5a3b3af398e847915896ec83633f12f209a121c696a158956793615ca95f086ee78b8a587482f63c5fe0d295c1665c5807a95167e4bd34fc52ef2ad0590407453b1f894ad6e9616d1f831d0b972f3641f2f3547b3fd400fc8e1a50a7b05bcbac3c7a6778f75190bfa962a25c2c7af167315689bf7 +f47a96ae91ef200fef0ffceb28a5cff1e6d34f834bb2bc2233dcf33d1d249124bb8693f1a2c64100397f18fdbab60431f8d180cde411a58c576c5fa7d37d2b86ca6b53e5e82c5cc89f10af0f15149c20e3cd64adef4c757e9a49fdd6243cf4b4eb41b9839eccd6551d5a62c1b362901fba2e3260e1f380b8b9a2bf6947b5aa700b30d9c0484ae6f0258d0f0a94ba0747889c69aa5b39fdc07f8f00c3d66da008b9d88b1cf1457105ba649dfe22ff2d97148edf99707273fedd49b61db06e73fe9cfdf64c0048a6be3a86d9b3659a97cdd0b8935d8233fa2c9554d15c59108b7737f90357f6aad34fb6971ea2c4e5607878a262611dab88ada131c1984201c06f +c3c892e25566d7456893fbb3c85661d87d2ccd6f1a4754cba4cb39723bd586be73868a8dfeb8cac2933583f51c653783209f5476eacbf5ee180bc1ecede1b03a6c11221db11ca3b35b4f09d618ae38727e6b17db5dbdff11dbf4440216341f5ff12731bcd6cefa1f98390520c2efc72a101640ed911a30b946074b51116824430fbf502df04dc0577016945d06571e20fc4565071dd4ccdc507382c4812cddf837bfa374f0ab4ddb234539f5195e403e97b6e9cfd9ccec55ccfcc2ec2170055391909d0cab68661e367e75faf4de16b756ae25bdf3281ff4b5aa082239e434ac86a88e84d3830083245b5cea25b6ed7faffd8acf3b176a3f48250ceffeed6ccf +d8f17c541e3a130a24b657c8b54836ab2c188032ce95b7de444f785164bb7a3a55a4fc9edc3ed5a41a5d99d7405ada0fea10288a36a040235eaf5e568184f693e9c60753ad05ac8bc855a88a607f802442bb7a4ce1b717ce0f1b164877883b1bb3e04c9b6c1dc195410d99c5fef5032200ee3d1c49204305da86365d2013793fa3884ef553d02690c6b8989d6cdbafa5bde9ac5dc8441bbaf3e57e3849a74899eb0c0287cd1ded8cd84b70f9dc1f54a5f5426146fd6766328796e809f36ca2be0e1a3070154020fa0d56f47319f7aff980e48c6de53f408a6f366fc7c571d3a20fc5b3022dab53a7cb1ffee04a3139e6c522e8abb4ffeec545f2d8d08cb0e9af +d4bada1cdab4760764ca398efecc9931f71f8416fd3b36a9d7505337206bf9f81d02019c25a7313fcfebbad2e06df1a1cae68b8b831e94b6cd84baf5e669ff4465329dc3440d892722811f79d164bb81194f4ce12775d52ab8c1c28b9da9daf04dd81ed7e6b00a5d6cdd56568183874f2bf0d916f1b63ff259bee64cbef02135c6263691d4135b5445fede3c3e75fd897b1c9d76ea84b95a85d86d5651f1a21e2c2e2e6f329c0cd4f55a54d407ad858c868d16b3e161b535c1b79db17f4c87c41a44668d1d35ef4a10fa20c87d04e965278965ecae787fe547518afee8f9e2b027153cbfdea3d2b3e705fc4482784dfb0d693b4fc057604b8b92857a130d13df +ced5a6af34a4b237f4376813df2464996ee18d78afbaafba83200c60f3718b4ba799f30d882f19bff592dfb49b864546003c8138745cf8d929d5cb4a3e680cad49ca7adc2b713da76c0df63483a60cca7e666fbb4720e09d78f25468f954fc3ab6d23a97efae68b8db70850bad648c1f55cbadaf42847ab2f06a86b52e4c87c81e65635dacf63ae578bcd3036ea5a63819358e1462bf7ed1f651e1cef2868cc33fd3c830796acb80d28cedf5c8ea27604033619878ccda0c462654987f440879aa7bc9bf1b091946d52dba91ebd3da260c333b7f8d1c2ffdbae9ca8f79a1a3a5a4c0854650f2df362c7e33970eb0377e89ae495260c46fef70f680c7ee9265cf +e7b83f56ba985f2b3153543cc15dd7ecf2ea2a2c3780d609c1bd0278c0aa6ed52a2839e93a68292e330ed69579a88802120ef2d612bf31c436310283f7f600ae0996cfd5997e3eab490d0f8abb3a80ff529e4cac92e8cfb5847d7dc0ec1beca31a6fdec5956950265ad19986b97fc832890dd74b7798e5d5b9d428946b640ed9e4cfca9f6b763b9ee8a1a2fa1ed59b3540728c8da4ffaa719a9b88b49ead4fa0fe6527821983aab090e8f8d461a912718d954df9bb308e41cbc8b567b1daf1b27bfa1209f0a25a5c58ad89abd249b1de5bfec072694a43fc6797b3a805abefb5439a3dfa5abc1d584ad822abb6b54e4c435cd46585f2e33831d893e0985ba747 +d44cbd43589cf272d45ecbe9b9e1b3fdc0c6e9b5eb73593ec2a918ea078e165268d62d411bfc753a3affd1a1a5a10466bcb17d044b3d7bc75612fd05f3bb68e6259fb512d4d0eb1f908df31e2d6f55c9f5080ad0d2e9f9716ef5ac2408e15de2dac90ca0c87511e6a41ef993b87ce2132c6cfb86c5db16a8c9726df781d059477d12201b4b2ab3e72cb55c2b56d180099987b7fae680b34dece8e36ab525d539f9fbc6848b6a86cfdfa3c94d6cf7e7bb0a363546c61d6622da08970f98239d824d09e8ccad412e4287f14918b9a0c014cfa6f1ea80e76d0b34e87eb0a17d87eb6ef36f56a095844bd143911b6946f70a769b35ac0ec1d67ef3ecf50b37fb8797 +f02c50459042be6389710a2662b7237ae607853aaa1f5b5a4c57fed67449715eabcdf418ce9f4dfbb4d57ad6b9643afa72ddc3a965b43505759f1bf50c80bcc71f8cbd8bc4a5ed7363a364d01cc015e507defbb6baa4ad7ea6e98964e5a2d7c7a8d77ee4d969d14c2f96bedac670860da2c7828bbe1509c4797b561af6f72aa978086ca14ce4778be1f320f4877b7be87370156daca7da7b350a5ecbae3d4a639ff0296dfc7f9e81165975c443195e4195eaefbefcdabdbfcbed992f25da4115918865e1024929bf655e6b432f77fe3a996a441dbd6713fffccced6a736b47b912ca289111801b4eb2ed1fc4b7ce1aa3f1c0a8f0c2c5be1d29afb1a3a2258ddf +ec9af1b33332ced66d337b9001ac5209f41c35bd78a3d4573b8fa883a72fe4961141f1a0fbf8388338bb26cfd316029f3cf5f3b4a0e314cc2d3dce652155cea8d19c7dbc58408c56f1ab56541b1cf6049b97aac77263f2f49929ab372ac8bd4f43d9e51eb61cc62cdc48fd96cc3bb3cf017ca2e51df7bb6440c2eb88b76faf45a891df8130cd478aa49bdac288141c8a814aa77e369818ccd9e564f1f47917d1b51814219968ade656e5d81a34ba0d889226bbcf1aa93037158d80751288c00215591c4964cc35dad97f252ff09433d3edfe847d5e3e06dfb1ebb7c697cf675e91128a127cbd0f7fdffe6b2ce4c2b7d3e6b5197c87c27da22415929372587307 +d210881e1bfbae8120b2fe11468ed7bb0e3a84652415e114dcac26cebc58e981de891a21ff2e52880a979d7e61a5eda563bf5d43ff7a93b74637752b4799a8fa8a52c30db1545ccfa875816b36642f702a5563f3634a81ef10170e20a466343fd44147a53c1c0bda704f60cdfb88674f90b63719d6a41ec7021dbc7df5bfb294667c0c030ff203aa62e39645be02c0127a216ef24f45e0ba7827b00392d465f7cb43301b0caa68300051a8d0b1ed824c532bf6c04f834e3e5b640451c0f3e9f1453d7a97f066c365c58ed6adf7432ca6274fc3b5aa80be99821bdc1693a1fced1da58d42063be85014071d535783c6a56dbeae9dd030b27569677e0cbac75daf +c8c71d2253f163feafd77e0b4877a2c47ece9788a6970a24a07ee7d81ac0e9f713e46de8801daf3e7be03b5f0cf5ab3f539afeef3fe4830b3003e9f954a684659e1644b72bb3561e5725d56365651746856fcd445dba88fd4e954b4a7e925efe14fd665b151b88a617f4dd44e6ee755ec41f8fce49b7e93b31bd1469da46f0b2857d4994265b9a49b4b79fbe2ddbedfd150918395ae7154395170317902ac4de99d7f71682dc87356992a2a7e4147e5f05b54c4214c61c65dda43d4b6f042d146d50b674b3f21f19737beb648764db2b4d3b8b517326b7381d4815cabb55a0a7b08c13404109770b387d04f44294d329a5536066bd6843b5d2d8f0b9773b996f +db2ff492fd1a5aad0e6cbd7ba442108d69e25d1493ecc6165e3cf7aaa3851c0aba72cdbc9ac266bc3d8c2728da0e4b66ce13dcd531c2dadc781143af810d4d4950a11b3a59932c71d10eb6fa459eae3d69e91a04bbc0c02f0c9cddf6656a18db799dd2d6e8ccc484dc6f0bc5e7a178c2a5407f535b7bfc47875cc1d2401693d4b71eb540967731e6ff6418fe0ab25da14e1f9531e4be0981c15c020d3e77bed07a89ba3645d9470d626d7828690ada9bee02916b10133d4fbbe85f1fd019c4b5287a8f9e1f1eeec537b37fccd50be2ffde6db8a62dfc7287ec77ba1d4fbe7892bca747fe1b1f835e3ea2cca02cae965690f0c4e00382b2dc2bbfd8f4454f8a7f +d914029294f2dd669e4c568450c8b31ddb5c51ffb3ee28bea6b94cd36a7adb869eaf405a85aa80c665120b23b06e09ae277d47c3da8485a01913f20ac7f20d90971e5dbd064ef6550179fd80b39917012bbe21e8cc61f6c0da7e25fe8245c15398812af451b4a8c89b2395b741246438da290d00f67f4622d8a8141789b9bb6187946edc6be8fc668efe8ae7c6e79fbed988177876938efc09e308cb1e591d8b7e9b6a4298bc866cc2fecb7d87781eb7291127e71554e83140e9067f3884ada9a3d86d2ca88d8691f5ec489c47e047fa524d0c2e8aba390967cdf797169709d3aab4be2a10267c37784d1963944c10a475a2501644d082c623b3983dbc694427 +ea791cb0312773ab7d787cb39eb1bc1c9eae96c1b71bcab9603a2ef5a4fc460a63016aae66c7ad34fa5af61b49e3f728fd693c0962277db490cd74555eeddda00a0c6a1c2c5a32cafa2e72bdf530e21938a018390f7aba0bac7c4dc11d8db102f7a5cdf4e8fa2f9fc77018414d65ede884f9e4b151e3d8a8b457c09e426b591a028e87f4016b3f0e59fa04cfe4b832f03de1ad42b25f7a71db8f8d447823e1bb7a5272ceb7541c4079be796deffb874917f9137187dda252c61021589a3b913b8f9e1b4b5888c00258c43c969c07cfa61798ea633a86d0a9962e8833dfb90ec8817e4523ca53c21c36985c78fce8336b9a918cc7084fdb3f982c58bce8e36bc7 +f40ede8660644084e5939b91e71c2a8d3e8c72ff246b8c26b7d4e0395325fd9f030258f76980eaf630103add893843b0b2334c9d9dc5fd0703be12c305debde837a502c37125e2649da5591e3f83815259a0ef70134ef480c5c063fc1f102da45b74c66d6932d6fea627c4228a6ea87756547131bb3d0ae517e56d235e9c16de42d36717582d4014573ef538e98f3c30038c4e0ec037482fcc8661a1b64430762ae13e559c27d6924497df5464a2f284cd988d0c6e072863d7c7e588d09ef7d9121e76f1003d050fd37beacc0b71613439a1fc7104c7cff16ecb8d75d67a882c59d6af549a83b839f53b297dc6ac68f2098028d0e31439d9481c7e9895ebe50f +e142b7c686905de827425463c3cb6a65c34a2974e6453fe00e20214fc686299244b3337293ce5d7cbdb60fa0616e68e920a5df3f457138a39443b4ccc3b5d9c910ed3a46e821fb3df7d5a1a67d4c350a640f41aae9b1b70b88f8aa30d4049f24e2c1673696f878abaa103696290cc620c7f151ca6130ab3e9af4b7a414149ade26826cfbd9bd31f5402c59d406351d2e9328a607bf33fc5f5e62773fbcbb41834d07999978569324d8e3853ee9d894d163b226c2792e6a8ebe2ff1a30cad3cff00dbca336fead0736038b306151ee53657b4733bd2205301836139065a92e561a349030de61c82dcc6529d1e5a78b09bb5cf6407eafc5c4b85279f5613eacbcf +e740b8569a47031b62125011347c35b358abbcce5d6d58a43dba6764b551e402e77ddfecff3930bc17745845fb8734be4e0c0cdf4af7ad3d765445338018829bcd4eb6249113377a6d1b4067718f073568e016bd32c3e919d5e32a34d66b8147c88680bd97cbcbb08ca4b4e1be2f847dc7a00c6cd5f0de3df602c45ace6c70c4691da99e21972b59f62dc2034bb0c67323781a07dc7c1ce1b9f9724ca15c1cb7ac287921173e0737066bbd34bc150590f645afa3683b7a412810a17efdbba050775a53d68eb59c149f960cefc2fa709b1c0bd8129c7dfb29b9e8e96940b2acd7583079d761d898645888d61b73b0a48db8ec6e46b024058d7b8050ef5e3c6857 +ec03aeebb9a653be8aa73f8a55ffb922aa30fa8200d8f406a448d1f5e8c248769229099bdc727ec2ed87e2b94a368b3b8d687e7d5428fd1cd9cb69c11d483348892f94957d59537c70448afa083d57d163b2c362b099588c4bcf76cb2ebfd2bfc99081d53aa2fa1a4d6c4a6ac99236b997ed0a000fa76ceb5105ff0127edd52ea13ab393470557d82647568870df5e21d66f3df4d9a3cb7c506c2bd4e801c5cefae8ced3eb3ea6da9618286c2beca56965824afb5d19ee862411ac49e18231f52b6158bdde7ae3dc7ff21824588302ec4b76576f2d930abf07e0b2cddb10364ef69ee2a98de889abf669205501ae895dbe380293f440a085e8c3e73e153c79e7 +d4d4d30af0e6449c1525a4463e11e06f6b9270f8d6b3885398bcd7bcdd3d9472031a51143b7bcc2799124700ecff5276c26f1752a3357aa69d38608afe0ae12006bfc8f8a43f49fdeabeb565799ca78b6937dfb4c64638f72c0779c843179e8feeb998cc8cb5f6612ca39f7644c3b8694cba4347c57bde5de62dc3acd5bafa150551956357869891fba95c97886e402aca8e629bf17c2e8ff958f2f520f063c131501e20f26b539e0ee45cd9c660f217bf5e32d5246ddcbdda73be739901aafa34c5660eec323f0599f8155d54965cc0ee147ab4f2c8d7a95bd804986f19ac1b3c0fb50ebded859cd29b8feec8e1956568d72950e699b60441ebc411e502e117 +ce914c318a88eda0538c90e3acd7832c0bdbb6feda06be61ff86aec53db80d59aeef18d47052e040c2e3eb6548d173838215e4b9a4041bcefe1f3bc4c9f4134dd97666785f9c77eab247b64cf09ed2936a80622f5be284b36e5680eca6c084cf83f29f897d7e0b48e46bba1dfa0db5ae1d8e45db245edaf8ddea9664b24f7bffa763c7fe89b8a383cb2e972c5704f5bfa84395ae42d5420f3e4959666748f0f4312f380956255d123f6c843ab57f983924ff751ccf1956f0401ada6f09ad7ce71b49a5f8d2618772cd5b2caa84987031c157b6b564a574a4cc6f8dc1c132489b1872553883fbcd9c976ddec63142563f5f3481a7f199698bc1471f18643107e7 +e585f52ecfea7967113428d5c07b773ce0deb41392600d13d5cc6f47419c448295ae82a17349229a07e5a5434da6758b4ea0f9dd4b31f645e2a53901917c4ba55e90443b059b191ab3090b1b4f04a8aac184eaa74b7ac0731d31149ce5e4477f076f071ee2dd3b902e68d7673741982cfa66b5a12f85977ab1ee06d0456400773d320162192e9e00240b2209d7f4b8792772ac0b70a079d31059c09cfe4c4865f50dcdb6df323edd5e982e4c776e79e2e4b29f1adc2ff9bca6316dda69babc88f140fc674b431a5164bfff80a597a1633cdde41832f237bc1d6a73a99eb5212cb8d97d21594d67ba9b1a88a0fe6d6c4b8d73ce79dffc78a22d2f4033db12b2c7 +eac52a9065abf839debfdcff446326e780ff53c50339e1d61821347744460f4a620205e75ea51eaee06b80ffe93636203423c7ba1af9032b2e1cb41995b2cf15e390420bfe606adeefb179ba2730856101c42e87a2ebd383e4fa1f8ab37cea178c3b2178549efb161c93a512be9840e083067f81bf38e8234878b1b3323abd33fd261723fabd1792020ca8c01fa68226f2c9a40e27fe0cbbf0ab6939b08ec94716eea2f9a572a016453f6715fd2553a07f4a6c59421df1a2eb1518154bc6ccbd250c5c92bc2dd314ee5a88de222df0fea4ce97a54295c359984ba82ab7124a1a799620d4331559d2fd766cf2002552fb83fded1772f7f094057155a1e1bb5e2f +d0f99d59389b6b063f570b7b20bc0ea3a9013d9d3f95679f1980d53ef14eef75f83bc4635c8fbc7868b29f96e03161d4f05c35bd9aed727cc0b29f50c979048973109ca15ee93be9eb040fbd11151f78b4b5cd83bd02153970e3ee33883ddc7bae3edb324e49d483b38bc2dfa28f895ad3b87eedecff76249257da8589d36b4c46cb34f707b161bb60c8f864d3ce939209a78c1ce8367000c65c5c2aba4453d6c99401d1587ad0e3f2baf97d245712ae472bc12aaed464451d06e28501b6e62b7608c4596b56e0d5cf6b0b46a39b022871cd3b2ad9adf2207f0521fe5faa4574c853d1958010b4ef036e672ec7c632849578cc2f29b747c0f9ee10be5bdbfd2f +dcdbf09fda21f5f644c1167ec873f588ffe32b7f12087a20747a7daf5c03cafd7f09d16142d76c479872840c0ce40d41deec297e006b8fdf0cdb716c5b9154486376a2af70c95281aa39ea66179b7984023aac7d62dceae861c77047f5734cfcf93c7b1489c9e4bed4816a321fe1c759d0ede19b5a9a2ba4557681b4db1014c26c171cbfde81a28e9438bba4bf98a9ab5f23f00102e786d09bb16827511360383b69c2a962f0d3a41fdafa3ab971cf5dc833414d81431352fea7d5274d0051afd295643ffaa62488a04f13e8764d3f62b01f970eb6c9209f4e99e281bee8006af20b5a7a88a33d8794a16d6c6a96529d2b55ed72cdfbfb52609584a10fe5785f +d3f85a002056e6ca58e1910b2973037dae95a8458da8a1076d7bc130ca07be3203130104032c17ae78e8844064ae498117f350c85c8270bbe80bba55fd4be72c2ea25a2783c6429c8c27982b1cb3a9e6f5ced2eea78a4b9f319d2f6d1e12254b2b9386e0ccd389e2b528fe50a0e09a784b2ad47e9cb6806c4822200c1b652a07637393ce1fce764c447e20281b5d0652577ba0e4fab132aae12f90afa5b0d975624bbb89cfd9120b2504ba806c5068a1cdbd0833aeef5a726c2cf62afe39d32cd2af907788a0f473de964d1424bb1f76114b1c01aace5bc7a8e7694a59f6ff9e3205ba5de18923275fa3fba24855dfb5aaebe1eb846c80a33757aed8350c8a97 +de9e65996d640ef2c618d19259ef82db8ad7951fd37839ba6499e168ffeb579f5ed7a9d92e7e14f51889dba807b168a5ec9ee946d221b17ead2d5e17d6aee1ddd619b1df7adab120d875f3787c3286ab3b597ca68dc80189d661fb6092617161acfaac704fa94ab397303f0a82cc20ed5606230873a5f52aa17f2ecc74c4a0a9a6e244b172fabc6357d3e6a7e12bc39af17438e1e28fcf2bdb8d83ec27f560b740e9a4324a43671780eb4fb8dc297d989dd21d24f056cc44eb9f5ba1f4777d8861e6df1f4093b4e5778062704e991420173101c2e96ea56ce0564ac41a36bb1d661cef56ead69d97400dfdda0a7a463199b7941e6be9b24537adae430f03a7f7 +d7c287ebd47c0650ffcbaeb99591453b9521f946b220bb7b3d9b49c32ecef05fca8d13c117425d4ca97dd89f5df9d44d6b36536b09ae3052058bc5db64bbd8a35e3f5383d82a3710237311dcf1d58c20bd7a999a1f3587b288d2fa2ac5f366ecbc0c5d29e40d531caaf39d06c8891b359ea7761eecaa25c34d0fd1a72d93aca9f142438b620c770d06c42d81262384de6c3650e3adac738b34a87fd61aa58661733880ea0ba0cca99733858725e06362030a39a4ade0b0cd390a824b6214ba0d3c280099f1b36ecf4d618bf074d1530f8a29751a9b35c224d0d9014bce592f58378e13f247c0a2c48c3fb239b20e146c5e7dfc629510d1bc3711557a3be87907 +d054f71185c796af9c6b55c109e2c7b0ee0d49d21132e4fb99d9e369ec4f34193c0f6dd1f8c68f85d8954d7631218ef92f75f4db348783b0f7adcf243697f0c3d2b028bea46134022976030c28bb05ce0048fc5daff3fc061f2de61e6f3854aefa2b4cc4d903a2153c47d5ca95046c6482bd4f1d55bf7877efd01d22c5557987694db2ad9486384889c25cac317371cea445e60209c555b0b0d2742c8828de7ddd51ac8847742f36d4959b357245e6f17041608b93dfe31376148ca5ba669a86284a02736f30b9002234516a206c86962ccd38f03469acf034b6bdecc609607936de92f4329fba22b864bb8bd83357531128bf0180cdd9bf13045dd9a41055af +c82e5d33295cc82aaabd3fc56f2b8502e9e6ccda68f5a40a0d343f4a5236eaeab181a5b72864d203bad6f2b5222eeb5bb41546ffb3d00c7c1055660ed42c7a1d4557e6454f40502a85cf32dc46b35bf42eaac0780bb96f43e1cba95f7f44333ae7c380f05c0190e4b392e7487ad0e2f9345f448a3cc5c36ad985d7f5412cca6560e47113a46db42010e8377645a8c30a34cdb32af11d7c3b2e416a1e85dbce65202ed79b3a8ee9a5ec711296cc8bad2aab92bc9df598dec0e178b6ac233240d61501a966da5d5d4450de6a1a8311ede7f196ec2ea1124fb3d11172b9e63a4504905fc75aad1a2d6b5f849411e788c7effb0fa250a7c6a091a8b3ebf3da1c7c7f +fdf7e95aa647e121104181348249337f82560980a8180a256a780b906de8889bb63ca058e5993575e00a9257022cff5042e01296c5837c31ddd075d3f78a191d8f311afca477633af73adf09f5e1a6fd6b9761e51b82c2af407ced726cab3df1bb83cded0700b77233e4c10f03cd47ec5c6c327a52f062b31ef9a9bc5f2cf038b461e4495c4393ac998956f3bcff41cc2af92189f9e09dd9d8beab598aaf4912a27cad9c759fdac4ab66df142615f7fbd4d1fc3a57cc4d449412530197663b5dc4c7373575746537ddf6aee0d42a308d9cfec551be83f69a3e596c5210760339b40b4180a4c6168b51977c1ecf1b9c07d65219ab24af7e27358bcea9a49089cf +cc6514a8125b11560160af7f4114e51572031b6c344decb99435ea3315570eb24ab0b3554763351a747a33361a12d4ed9fe54b500c669ce6e18643e35b38ad59a77efe268485b883bc94cb9917f72340645da84bfbf5a12c41cc929c94599ff4d3e6b14b3bcda7b188b828109a3126878e367ea363cfc85684919be053d9d8de7a0d8a0a1d2bd4273ab7398de4e6b9750e7a589cdfe5928d5a51203f1a6dc6353f73dea9c0cd7bd7ae3fb013a6ee8c9c184e5154a212e364f6add6d146d4b94e26c40c3e432e81b71491699ce00e79b44e39a637423c31b420a4f9fd6c7700e6f7e477f7b7452c4df286236d8316512d605e539e0d8a82d330d82b9adfac392f +f8d75a788f729c1841cae6ba103b98381b355a800f50db7b462f7e6b04cc0295ee41cf1996efa47ee84094a165047248bbe56d1ab42b2dcb00bb8c26cc7e48274aead0345e5b8baa4c50efb01578ba08918ae45cd6bdc902e9847b0ba62aee0ad1af45d1124599f2ac5f421b05fe38fe197f2661f87be271aff328e0f7491a6f8b9565729c02e9fc20e35badf1c92c6db3b67469a77f5f7e87c15480b3ae684caff85a33094761a3ff7d5524a18b8b0812b0fb94f8f8c0e8359ff754e78b444922fd394d61420a2a4c94bca7d38fc2bf3913ef7cc602d0c2f1c617d1fd451ae2042022bb75ecb955c51ad2aa943821b7a7ee9c4adfc3bcab23e1a40a6b1306cf +d20bfe89403d3e1ac3775e8d8582fd8c4f73ed00d150436485412ae4dd005a4f2028fc7dae0ca785fba88c4295716e260ef2233ff5b09f9244b93371d8a3bdc9fb0263e6bed1118e8e1d9e335344338de26d88a074628c819e2f5a68abbb987ffb8bad30409e8280fbd876e3005d1b3a51cb1bedb4bb5f1ce8a3314554b19ccae358321c001066064ba9c4b1c19c86e5b55b09139e5f2e08f4b71c2d3aae6cfc3e7c5ca50e8d81f1b2ad27263db3501a3ff20b64257521378935507d9ed2d9f54dfafe988e349bc0a066c992460925d9fb45bda098231aeb1a6750573c4513624aaaa3534f7bc5978467ac293ad45e2d6965b0701c8c73ba302146341963b5b7 +ea8ce2f753fa418f7511fb17663f8754ded297b02e7469afa566f13b578f013cb942b2b4d98d9c16e7d28f1926eb399bedfbaa0c8a77082a1d857f87ccd58a5caeef14a401871fcda18245cdbbe6daab8dd50d5d4a110e584c1e4cbac252cbbda39f63d872d75f7da36664dc60d6ba5542ee81199fded14e711d1052de125ab8aedac3b1f5adc9836fa2bc27de53cab5dfb49d28bfc0c60a4fec40a3b4b93134ce7d555c7f4ee9094113b4a2501262db9bc5c06cfe1406ab7ef54d1ae68fd3f90244dafdb37f23e398b8eee62f8859f7c9671154c55051e618ffd6cb5fc47c9eda1844ecb29818aee2623860f768b72807e8cea9738e7529fcbc646cda8039f7 +f4033c39e6481d239ede7e7204df9a0c34c965346dc83b709965f9b4ddaecfc0409a3c6d51169d25600931b7f63ae25f30be8f0b761e0d51683e1cb7633255419fb81af9988ae41e6ff018eb52af065fe59a435ae84da08f21df5abf312576efccf4af331c1a055b9cdf0fe6712adfccc100bf8c5cd7271d55502d57ecda149d40ff9d2cf4353839d74c13d6610453b37e7470406fd24d18d22a66ad872566affdcb541b5130da310ec88ea03c6c995245905f7e7588c2be691664d43bf0f26c19094075e73b9114d1dad1107892c72562e2606ada1b1218299dcd54e2c573b3e96b2e68fae0178123a8e37d4f7c60b15243dfed21bc973133824f45d19b2087 +e4ea0808e87e946548cffc637d9cf0453a80bb788aa3d6dda31a82734b3c4b88867a760049a49f26258b70365f6d0c0b9c4d4ea64b8af58761116e4b0a85c932bb6de6250a6267a37128178537aeceaef3f6e493eecf44f59dcca35fbb5c1b773feb22117630f7e271641010a0aa9d7a1858bd961d5896df522255741071c65b9da1a5079c9e89133a0b7e7745f26a6ea3cc5b923a21e724df24cf41ac30680622015e98645e49a1e7ad3f45a4b21239ab5edb20cedf49b296b6421df828d339cd89c065375cdf6b8937db5f92cd9f04eb2a8d90ea7764fdfcbc85a72348718f4e21af605e0e163ad0159ef5574f788a8caeaadfc70fe004446ea773aedf79f7 +e891106f1943870b88c3638be566eb1ac402f0df4b2cf400155895909ac12e678bfe023eb9ad0285879fe4c72bb014a2e92000440c2977b6942fc3d2170798b99a1f8694d10b0163e2d16b3739cd2c1b244b1ce0295dafe04e17ef92da800f39c16b016e02ff36ef5b31195c2a09a213d1cbac5769a928917fa685eefa3652b6118878fe8a0d7535107ef17ba3e83195615df7b685788929900c0b55e39aca0457f07b98b910e31f2cac68992cd0b2fe47dc24a7c23d148b8d66f6664a3eeaca2f0361381fb1c89c2f3f355f9de797e345f3ccdb7e796a7def89c7d5a46393389a931dff15a3cffc93e8f185e854db0f18d12f77aedc8d4ae50e077613cfaa9f +dac01a84244f4eb5f651cd5121c943a6cb50e4b4239796a96e4c830a79d5f8cf53bb2170e01e55e9433efb82364ddfaf129b14519cc09fd513c66fef5eeca5163edfca3e2e07ea0c18bf225286a102ee9f4aa1d05cf2fa2bd29bf75e05512dcf8889ebea3ce13e01f337241f9782155cb261e302ec0e906faf268bf5e47049cda59078d5bd51f920d14953f3211627df949b55ca101bb25756ef3c5c0d172b4159cc992f4a57ba2b259bf26b8c9bf17fd095b010840431a4d2f165f022860abadcc0c575835ad7ff48636e98dedc60a1e9cf18dfcebc02a52024b50391d880ece71f764abc845a3c6809ba68ede38aee7385c93cba17baa7d223ae0aa485a59f +cf3115401446834f1913d6b7d120a9b54ec2281ecf351fd3379dfacae3cd889d0276592a09aff0d6a1bd6b56e712c70cd824bf38e4357d0c8a50ea5e32d16347dcc302d1e964e9d82ad530a75ad1f2eef7345e484b23e4efee5dc7c7c0a2caf0a8792df49093508aa47d99904f2a5efb93881d5cfe754cb27d0aa014ccafc79f1c3df2d3c2551d3eb5539a0cf859933b0c8bc15b5165a1ec15f28f7f8acd6b8507b8f9c1b7ebba257017472e69cb0367429303027c67004b255214fdeba00090d84cb5f47848671127d335bf0242ff156ad347b31d497a9ea9956e1c40f6ff7899d5f2c4b9c7625ab6faa6a15187f0261b7fad13631248b8af81af6e751b184f +cfc5037d1b371c5fe6ed26026e165a38ea8b9b89afcad8b8e0b7aac18509fcb2a1674959994fb4a1d480817c8ba1d6b50a79a142e4c5e3e29da0efefaa222fe2323fcb03dd81bffe659968adf8f449668a7a5999e15b06bc15511bae25bf995f2188170f68b1ba3c2cfa39a6205764440a089c7e42507d0639b905ba9ddecc68e514584b9fa71e2ef65770471dc7d5c07d7270ef569217b5d3d8043ef6f5d0630ac540dc9352ed68d08241def221fa214b87158e89a27d318faf8bb63a993d9b12ab6135f2a42175052619ef9d4bc72c7019b9e287c1521f1a4a8dfd2599aa85ab70586a6821b5d67dfdc1ce235000e737096cd7d668f9f84f269f90df28c167 +eed54f42bec00304b789741496f9b1715b44e7b65441a73288c3b8644f502cae5cbb7f3f27570dd7e3204065ca683ed4b59d97079b7a3ff67a2bd77cf04a6bc3b4fa637e79054d94bdd4364709e47c606662eca7d012f96664202e992b9243023530f43a29d6140ee77f00045895f14eb9eac047ebf549f05c070a9ef1aaf932a6a89ad3e04e39dc8c53af35263984406be7a138b31b1b9c6f57a05b05c03e32f403b68c9996830e7bc7224cefe3e519140ad792b4843dcbf1b274e34576060eaa1ce0148f911115def6c4883e4b3b099d47279a45f60e72f83083b0b37b1ea03f805de545fa63c4f92a18b6be18ea465f487365d31c88b83a93e3ac863de6cf +f67a7e6cecd6ad22dcfc502683b699d2569b75f6c130a384622e74e04a3d8430d149060a595bfc7f877d38989bdef582fc21d42a17d9e1ee50146b185fa7d0376de1a473e34918ce42c629d0814ed2c7bd38b294b6638a6c1ae8d50bc3e752a8f3f63350b8fc4a9bd2de8bbd62fdbac3cf5a4a2f6e91dfd2e3ce82891ba2ad1f821ec92bf27dfed7a088fd3c04792ad934f62f8f2feb158953d002afed18ea2a9715637668d7439bf8b7b62131180527d15f8aa3ccef92f705ec5568dbbfbc4d6f48f45cfcb50ce123b8aee05368c60b15627a08033b63444a36fe890035b87ff3f307ef84496ef1dfc40df7f724feb20bac29487bb48384bd49c66f00790327 +f2a168fa2b1547883eb2067fe883733ddce9841e2c200c25cf9437f68f4be191070ddc98ce62b7a3564c81b48de9aa25c78e29c54379995f674407026a2556720ca5b3b8985c7075569472cf27fe48f01ce340b0cee339b20dadbff1bbce5cc4ab37738d870a75fb276a78f7cf9acb26771394d8fcd70a2142404f62165276f812fa73c4feba3b572480bf8aa5437824dff32fc1567c5e8fe89c624af8237c76ea4495cbec37fa0a4f69961673f044ffa71b68b32532072e61f904865307d5f8dd16a6958405c3addb8762409d92b36e224fa7fe4d898f4e98ba9dc8ce3e7a9ade86eff5a21603762d07c5ec19f069fb75fc4bbe75ee6b34dc63693ea572a2e7 +f4d7f49d735e515915621d5ca43d2c5ba91154b30c74c638bbf08385ab67b1e6ffc22d584e059f56698dc5af8115f86afdd9fef4b67fc97c7d0f9b571965929d3177f785a5c7975866d2b38490066c5d88756d487a9b8aa1fad969be56eb26a7ab775e2ff6710ac9e984d9d3845c9cd46fe9335905ea3c6623402109b7f5ccfc34a6636957ca98a7f5d09cc982cdfbca83b1a5a0c099d77ddea2e4c0f78ce6e51b074918cf698693bb5e9dfdaa153041d0e02648301440eb48edca9fe0f0a04f18fad95fd8137b2ea2115ff3f03f31ba72448a0b901a2e6285fed306b07d98195c2de7491c4b371aba48855c075f6f59237573c5b23135551179dabcba076567 +f595193e0c3f528ccc4c1387d09907ab3e729722d0c22471a910db4583a4f988d2416004f6f119d8887d53154d5f10029fab849f571993e05f927d75ca63a137e67b213181d4e70beb09cddfdea551989dcfb50e87a9ae8228bb4af3ba6d05b1091ab89059843299716d91c8215aee64912910ed1edd0c2535eb644c8b7040d782b183b033bba11956e5db0731df45676fce03ac1da21fb8e3a5c02031f3469475cc4336a32797ea489eaafc922e22683f11a41e7515db332c1c237b63546c5e6a7d57a3112a8e6a26e069aa77008bfbc53eb6540162f9c687df163e42a5b611adf6d6d1cbf43e445b59f3e611f7c13363f53419c4eb9c4fe19dc4132c2decff +cd128db93484235726eb1f0d6facadb0324100ba48ec47124a7834482c6404d0e3a4d38de9a6746ad89937c255d9b05194358da2800a50a0bde2a4d5d1f27699dbd153b0c4b9ddb44aec039f8f96c23dfaf143d1d657f57053931d442f09fb25f4f7f2cb5b44248b6c406f8fd85a918cfe04d8f8c8387e5cbddf5d3126b6ec662992acd723f483fa6640317c1dc10dd8008df021ba3ed6d662ffc35a343a82484846ac50107d3b94d06e87979f59e0fecb2580327541182e882b50839c5a0bac7f218954820b1a69367445b9939e1c496c30fa05bd55bae20a525dfbd6bacf93dc2df1473a19edfe958b05631b5505730f0f67c5519128e81db0e3b5f79e035f +f8061eb5f32c17ce1bc66b403de864a428bc6d22227d7d02948d5cb59f2cc63bb67401488edd60c86f477b18cc4944a70887478095ad1448919380af9322c6f47d4c0f36de8edf7d5e813f2a83c24da0f493826c9c59f65b80ead6b1fcbe12c1b98a2387046b2ac1d6879be923c8140150add3db2f749636a6434387a82b0bf0add3dfec1e51852831e348a8c6673538d02eb3c40bed5fd46a8dde0622c16d0fac6d59ccaf2495df651b4593436b18ccbc856bca12d4c93bf57db461cdd702bc5ee1eda83acf9756c094b4d324e77840c14a395975e409392e56d52891b158a9692b6a1aa94c014488759383d1ddd895307678c7621c7d64ae5d52bd0cc46a47 +dbfe5511d71a8d674d8654771992e1defcbbd946163fe50bf08b339a57d5cb180ed6813f18ceadaebf3a576a954a862d9d9c2ad03865ae87102c1248a18732c6c3e688f7125849ac8d29544928f7a4182a115958c6a38ad9fc7fced7a5560e16f3706afaf4945229777e668040a546ec2fce30d6643e0be6bb245bdb88e64f298d46e03fc935ce0ae6daf96f14d987016294347b9b0a212c499e598f9befe130ea4f776fdda7deefb65261353b526ef57655ae5fbdf766aa00839d378811493871270fea502ff1c0f13304c98fe47da5f29a1c1c14f0e16e5b17163b1e7d69a557f2c2c0798e658be572e65ae6e8d8121a209a968def5e64eb283e8ee38f1177 +e06b65ea95e04d3b8e666f47f792f929c691c106e359ffa8cd867ccf6bd135006ef75c54a67e10cb5e888c3bc220a0004bb95726bdbed871fd8d9cbebba5fd65ffd9443b355d5d6a67bdd2663018756a189231a8aa424cee3f7f003a85a33cb4fd9f31f9c188dc3f8cd05d6c10ad0b30a8aca92603f2d85adea81b92f22bd4d3ca7b66dd14f3bb200cb4d371f4ccc7e5f51c550a3e7ffeb8f48b6275422445803a0cf3e1eb6f662cf4eb039f28b5b699ecc0408b4d37ff794b6d5f7263b784f4da409937704e1e98d4ee40c4385be18ef10f7f083f279a6aa7f6d63e659dd215447fe026ed161651680b459c2dbc9097d308267c294321a7f948a6bde20b1d77 +fe6915e9f6bed47413e00e0de93bf8d6658506bba9e753585eaaa2f594ed1d035212c05eda408b04cf243e28c005ad6f212cf061932708e3b9bab3025218d45b69189170cbab823a4c7c0f8260c8a451ae27b720953d95df6129f26a36edd43ebe384a5745740ca133e0fc6bec7ffc5b8acb68d91d772a9773bb240e1dee8728684eef5923128569e68fc11695ca4b4f91e72602239fe30e6d7c4d91c5eddb9cd62df5b2298b0b7ad237c7a5ed713158493f78fc842b0ded7c1b533d697a63c5700a94b0c91560916b85f65855760452e0908d7bc814abf93f1f59bbdea443846eae1994389b01ecc497e2b91c2a95d9f28d435a8fd6faa18bd773643b34aa67 +f8029949828400d66a94d4dd64699dede1a149a5b62d14e90101df99084b3d4a7ee88933f43a2fef4ff492f68c517c7c7838aa078a2a39e12665897773079621e1bdac4ca7595585e447b40a112bf89dd4ecd58432e3e0170d9ea0aaa89b364b6d2da2ef0df4b5c5aabd1f9d740ba8786cf0944acc12fc68906221b23c005600cba2add9c95165c23a2cd3916577429813cc8eacc67237f3b4730e8a416204f4a78bd270b1e1a4a49ad53cb9e3756bd3a871fc08b06bcb33f598e481402a69ef6f7fa7fb88357a7da284cf35ec2e08a9f924549999a57ea1fcc04dcf86057fea70d8ea07651edeb795c556deaa8cd85c7b790304a52dc4c7c00162c7ed49dcd7 +f32a5058ed25625a7340acfb5b3e15577e05b9a069a229c855dac372e4b34ac3f4d68de69f94b4f16b755fc8f2220f88672ee93f435959599c04bc7653fb577b8bc6701344b677ac95fab78281bbbc5251a9c9ac93957c347c784075d83c657d6e0574d78c662f18126dcb44b8ab1120506136b02f1d3484eab8ec87d69b3cc570b78db06490c5620d14632a68a17e2ecc8205f8079092700895c39a2564c8a25436665a6cf78958eaa6dc3683d36313581e061761d0af8981aae4fa780e734e30d91aeea7fd15c23d0c706e52a818d6685d9a20157afdbb3e30654d94473b6040a73f18a878d9d599ac172756cb1638d7786ad282f1e15fd9b944b724c8b1e7 +f06d44cf9669bf4cdd1cf81cf5bb50d664d86f66bdccd1cf92da4889fefb5e7bb0e0721fa49b87fd09311c6076c16b45be1c3e37c0a5f1d71df41c4283d2e30190d00d44f755be1a1a23c096878fee6f96a85a3d987942e61f70abcc6a3549850edc9fd3bed601a5d15a0fc2716600e1e37dcb387a03b88616f9e82058d5df8a9227f5ff29c128b3f0469c1a7484cd39a8d9d209d51f05976936fc05d626c8c827485a5569f664c82ac4ad801fc34a6657fec77867e7af4acbb6e2839604c8d3dc493710f14c35ba8399b9d24c682c71373fc60173b55d034729d5d3e8a8781ff55351716c69d7b5ddb6e1a23907e6839caa8c371565c56fe1b70faf3248438f +ef2695e0e1906acbaf95d031f0386b2bc0c3358996c96b50446f81c7d10d263fa9ef1ae75b815255d91cbd6a9aa7fcca368d988e6b6c59c38b8e15cc8c31c817bdd4f1a6116c7b7e1b3d000860ab4a27d1132889f3575a96a00806109b3a6bbdfe314c93a3bc098b87e8a2e01b6e601144de3aaaab1537d0d0607778683110b02a67c96003688927f2d17156800109574e12f63a989ef0eef1d7364563f8159bde7d1f5cd11365edb6b69b0c6e20cffeb61cf7d288b5506f4ee445371f87775c3baa963a22d38e50b0ab7bd88690815a0e1d1568c2c802aed97c236acf643655bda60dea3d1c1fe70c5a8cc925caea9dc6d90cfdcf539f9d94bacda2e37e60df +f7573df6d9d482382291868f3e2ed84e5671536c330b1bc79c9704d8792c74681c757d7c8f4030db3e7aa4dd5d5d9191442749d8c94c4f556c000da027ac366a1511c8aa4abdef83c3f3f9fd5e5d75e356e1388dc2bfce1195efdb790ec1303f51e69610ea8e4541445d14b0c6221b2b2facdf4cdf8b655c3b929daa9841d210f8092d099c9ebddb80c07004a26ecbf928c1ca1b3ecd43c485dc56a1caa3bdd838a5f9f46470a18bb3ae3b83c9bc9f47aff8161742f4097634cc8665127645b88f5a92fa14d360ab0f1c3b6489ccd2d814041bfa682fd9d2d9e919f7bd68934a91031f0dff04f23f6ac52e099ace54138d002c25665eed8f7215fe88642cf957 +c56086f5747bef19236e28d2c1f7729856fb87e7b0a7adad5ee72ee48ba139e1127710ae1da3a2cc8175f2bc578ec5bb24c3bc194f66d213a2bfef7413d85467fd572d710e24233fb4d46a4794c48f06b9d2914e015e5585a97f96f7f0a0203be4ad0e8c334a4accf0f2a72c04c8ce5dd5ecd23a784234747189b3062cb38724b5a6ca1ed1095bcc7b53fcc1a0740c1fdaf212e0c96e6a4c807af38734e83d09af0cbde50c95cbf45cb91c935a625c6a365a603700c818c32146fb295bc55ae0a7bd38a92eadf257cadd9aba9b80cdb39517c0b8e22c778116df2592dcba29020d1075a935b6d991e3a75568332fc60fe5f84b8b0703dedb7caf1bd6d4038387 +d4b1e8eec6e74910e31dbae8820bbfb7adccc3d8c4d93d075d4c4c3959cb10e4967dc7ba4d5cd077aea09564642a5ed8a257c3fefd1b935594537e11af3d79e737a4d790a3b8c7b16881193782425dbaccd7644e764b256216700f526808830cfc1a8aae530c55ce18329613402d3de32b45993dfa0b16cfe27d17684f6c9bd106f9369f68712eed67be8c9d26d0808180b1f4eca57758e397bbf52ed4398d225aca25082b894fa216f21d3139e645d54a55e10b2c832ff2539a9bf44da6994230cadd2c276e4143d808ef548bbe604f7765ba0464dc7da293d1c58b0959039d24a304b6737249f0e287b3860696c636f29340233ffb35ad462757d7485380b7 +dda4b23984d0e2a6f34e3328bde981c47c50398359a77e1f07968c455a55258177600ff7a7fbeb803c076449883dd9ee9d573bf198f038ff8cb27f2251b8d61d7efe0915d097503db35283836ed0be2c36d226f1c227996faf4e2fc65ce709ec416069fa4641576ab30f415053202921bdc33defc3757921e910d91a37eb62be11f569b86cd6ca7416a62173c81b7e55b9fef6c730fdea45cdc4e3590a9d36afddb775a5e71ab1619942d6930c384c8b52db7add2a6aa9cd8e7c3fecea964c6b799bb486034cf35805e3c69386f344f5ba1e36a758952e545d69f60d9a27f379967b4278e6632c2668d81b8f509c5adf53be9725b0350ddfe33f3af97ba100e7 +e00e655f4a8fb97fdc19f842b81710634cd2ac4c0fe263bb0266c4b9a722358842939fa81e73e2188b62a723bac6edad2cfaf82ac698b88634276b72dac4fafef8419fec573e04089130293b7b8cda0b3eaabe4cdb95e51427f3b174099c9e7fc2ebe7df60bdceb34b161f648042b309904faf776bf938751cd7958090e74f96be6901f28ba2c7fc494daab51f0c85f1b737bd714ebca7918c64439754315289e8841c2559fa486872f12bc17da3fca9a576db795ea917789266e0b222f0964313c7a4f930891d7510a49d3a899d83e4a70258d7e273484a5f1784ebb590fa081a94633c55e19096c58c2a6a7505a94c58c442ce98e533f296f718aaa1084eef +e97390c997997e8079f721a3b092b06f06063e9421331f2dcbe54e73bf5886f36803559beb1b112a5b895a1a5e3988c6987bd9738daf65faf2000222ded9361d351a8888cd3a1ea3b70e9fc495ff9c8d88b6a6ae5fa025105a127e39675018d8c68b95769ae32855b9635ca862fdf0615d2c6aae1cd545cf7d55afde0df1d5b4d81c591c031d048c0304f8f0d8a632c3a40473e2fa13d9c25b63115154036fd67c8386cdf350e80d71622c566a80aeecc8900528d73e636d25b965bb68cba1e1c5adb2e788c12b9646370b6a2521ddd18e1c6f291decfcd889ac830c5ad71e7607ce05a1a67bb733f42475a4777e7ea75f015f40f5fbe6a18391abd448cc9b9f +f78c09978f815a5dd1ffb9b6b2ccedd58fbcedf952087fb9e46468c94cddc352fae5061ff5263d03c5121d46b22fd1a011556c14144a63a25fda7527037422590974d5c88270c691ed2b3c67115d0728dbc4f4f4fe321c7162aa1837bbc65dd7f2f478fa0a540b381ad3c479ab099bae94c28dcee3f9ba2ca0246ef33785fa67fee80053e70a01353ef9a6f7417ed577d54477a5eb4ef1c8890466a1b3b7ceb87dcd946fce4d34552cbbabf7ba035e50a16cc30b0f41fe6a5c3f46422966f5169d37b468f70476411c030607388b25184e6b42a6e7e09ecc8dc8766166e3463eaa3c1c2bbf550012f776c08e323a19e0e1532636209e4990decb56da22c69077 +dd420f204fec6ae9a8cb75ca1a7a312a57040360fb7b9869e42d2a688ac2e44338c2a1efe7552c0ba21503c205fd964ab4474e24f051183420c62a16f706696ee74ad41ae9294c5f4f0fe2257528f02f22a1df80418e8eb1cec9ec819e1f1086c4aa1c1d42193f5a107c707e8eaf763eb9790800fdecb3e280d410b1ccb6fcaf6e30c2e9e55fe817930193115e64c877c84f190ebc79c8d3cc72b286d384e06d56c9126fc69606f0a7629e450a776601e1554f15c581ad5a167cf6c2a73e6236472d6728bde045f70cfff3b2c8f07e1671cb4d3e41158dc5a7630973bd9c4aeb6b5b77cf1f0876c3363df51a76e44df5116a888460bbcf37b97f8ccff7bde06f +c456e4bdcafe0ae5557c0d18256f7f902a5cafca6286364b3fdf149cb0969b8d1cb869e1510c1448c7c63cea5a3d81cd8cf2149cf2b76f7f59d3aaaf0ce9b863ae9e20967ddb23836f9c731c56fd20c2539fef44b9d23618dfc45f25c7006a2f5ccbb5fc4953eb2276250c1e43015bc9ccbee66c6b5b6cfd31904777a8b79ac287edcce062217f8c56d86483456e0fa3fba83d3876c774dc59763bf8946bad282aa2fcd2106d5e2c367a1626e3842980c436d58c7b76cb99c7b94f87d45dadfa95d58eb6d8418d722fd849fbc9d6b1f3f9467d4bd53144313a7e57c32712b6775c82cee5285108619bbc157066b5a007b8e5d8293c4ee3e15ec845866aa2e22f +c0f79df781a6b897554d5124f8f860740cfa023e72e8c3b575e65b0bf14518f69a91d83f01a476c164f982b417a5a37f56023fae712ad5008ace81b8f465b17f5d79d94a9cc8ba57659ce6710bbcb7760f7d04906be996211ff219f7c4f9390c71e1d19dfc532b06d70ebf34558c78c18e6d067e3d690f9499d6c41f971f089ff287d044a385e31fb458dd2da120f31684fb107cce685c804a4e5f77d0190385ed76fc877b1112b94a5ba326898e7ac5a570b7622263c26679ad6aa39747b30d3ff8e532926997fff6c1c12bd587b8c8f903dd5c37bde033cfa4a5dbcd4b27d79fd1d717a1582f3be110d1edb710637539cb864c6e52a9c0d72205ee30eec4e7 +c0a98ccc04598617305e0b4541d0b539aab79906c563bf05ae8c8e8fd2722d457456ac209960161ba019a93d5bfe8b3ea3b0d93193b72ead452d617db193299a7ed0c203c20e20ae0f0b4a729d22dea13846d9c589491f3904abd6530b73f2427d82741b1f2d56f6f619463109d31c55f495e319ccfd24e19232d5f28fbd6a352b2e21c8fda94a72997376983ad419dbe8f4a26ab96381a14cfa890d27ef63e94d189d47663db25d6642e818475ec1f2ee3227dba4c1ac9f7d5a27ce041e23e45bf5b9bb56890a491581935bf460e7025a9046079fab68003cdfc8642dc162a645635416141694443e54d1521390c6079834f9363b2414338d38cfc842ae3307 +e932afb65d9ab612f8e735b66cf547295258b3aa7b2bbb7e3ef88d2083945c4929ddcc5ae26e8e5f2c7a5ad1724e1cabd30fa7d1963beae5a28d6216f6f606f74ba0e8d7b1b931b20284422d028633eba9b325698dae8e81d79ebb900619a3de637238f9ae5660a3621bffa17902388e9cdc8ed15bd7f0ea830e52e06dbf4e62764ac840d9bd16bfad5e23316c290131a771b0950005298e2487ca3b565529735948bf8e6d2718bf7b39b5c583f9b7c51f8458780cc46d016fda7acedbb5a02005e7a61398fe8cebb5d558e6e6ba35e67cd53c902eae2fb63791d56adfcdff91628b6e2e9f18422a5369faf9c0ae68dde68cbc2b7eaed65572ce1477b28b2177 +f00b736f9da6aaabba7a39d665da092368053f0d0feccde95339751484aaf0b26c0dd857c03fd8739f13a78718e88fad32334a8975fc26065dad3a91c7231069dff086ccd1c5d4eb30ea8f3ea80ee60720284396592504d1c548b217ca86c703fb7e0d39f55eeba414e19f3e6d6e8cefc0b7907559ae7a3af2e0dae55e99d28637e656b94f82a431313adaa749243b6e0ff5feee46d298ed112228bc3cfe68ead7453ee23f172d5af5e0bafb784e076dfa79f6e3758cc923fada715c8c2bc61a1358635cd5cb7868921a3141096c81bd55e7a1b88e7ba005f3698bbb424b4ecc437895fa28373ad52ab0b9e61d832eb60afd2c2bb90c40b9d20c3d161cd4a447 +f16d1df1cf30260a76d766307563956d72da89f8935e3fcc1082abe6996c015161852f29778560f080238489e28a1ebaf155fa97e5875fdf13db6a4b49ac527e839db8016929404b2c8d5cd21f917357bfe17ea7d967934646dfe41df593d849f14186deb0dcf3c6cb0bd207d4665549efa35d4182fdb8beec76a2a2de4d84bff846c58cf5776137ddf979f9c9fcd682c48a2d9cce136629c5a4d3fc3eed091cdc3c42940a503f0e040b651ac4f4ac484c68b531164ef73e99558eb2c41e21113776721ccc44e4bc680540b8f1f9eaacf61c781a66ecb7829ef0e394b735e445392453bf39da91a7ea14383414d187b96a1830781f7a1e53afbe9c1512bed03f +e2124810428072e8985addbe25e4716a404d6c55f9c6ceeda6f7873f71cc395327d015c9befe4f52e471c228d2eac0777542458f9e5df982a43207e1b9f54b38eae194bcdde20b49bc3c92a0bd359d0ee8993fed9adf94af0d3fdfe904a784cd26fe7ffece4213c627f58b74c009aaa4286bff33f8b5080b2e1579a5ef560a64a676995e6c97d92b7c1c25d3bbef27ec4066516d321a8e5544e001d157e546804b198d27b23f2944eb7ad9d7c88d20f2ab7fbd85bd8e06bab7ca5952eb8d806c4cb7a7f9134e5ecb1311fe935c965cbf8faae65c9f1077f9eef27ca121c257f6b704aad0d1ec5cb13982fd4351f8ed75ec06d17791401159eda4d636794bb60f +e99945c4561f1192d96e08562dbfb156d2789ff72ae6b5b399c7d07e770759cc260b79ea27484cf2452f2570d24a9dfd120c6a627cf6db1420baf6591294a50dab2c52b132aa6011abd1180855c98fdc0509084ee6477fc24fbe1064cfbc59e88fe0351e6feb310267da063a8e4fa0cb5006217d4152666ce93e001c20b45586a53ba6258c58faf1e637bd41bd6716fd33b485a1dc6404cea837e47661ec310568ab1c21a828b9a531dea65ebdbb53ba241b59989034e3181e8aaa1fac2567d70473fe5d3ee1ed19c2b363d121e67b7bfd9d1ccc7157ea8c1f09ac7c55e43976a404100977f2976e4b8fdcbc33fc6a8c810762d491c6b1445360513f39df7c3f +fa965419b92810815c9d158112a4c80dc545e4422cd851cd3621c2bed388b57eb163f78daf14529d4d424d7126c625ab11dda3425e8e1980a957e181a0da111cdb226bc05d76620a809d1c632696f76b15d92af30502cb4eb95492965c7b0ea8223a70fd19f74d9ec4697183d1da7aaea7f5bf02bf98fd74a3cfbe83ff58dcb44457accc256407c792e10940abd328c556350483e9b8a7bcfe62a8f42a609a677747ffaa0bd20db295a878c7a6916ff2132c68ba2d717740981a9bb651fb9b8c00426457f3f7e9b8aa048ce22e567c833df324b2d6e0dcfe3b85b93969b56a8b3833a472f6bd2a4ed260de1b85dec894c07dbbbfe75399b1b52f0fc7ebb7818f +edac3f4350cd4378d6ecaa20c5aaea21422fc493e405101166008f6f57859b963a282211555a32a71478c418621ec0af80c6f787a2d04f3912d9b0deecf6470fe7fb6c2e36e09c3c17b14eb5268fe836975aa6f28338e061d9c2a626eed69e0db79ef063d45af25104e87afdc01aa582f40c0039bd5dfde0bf4e036ff0c8328b5e58cef71715583b634690da123dea03fbb0c5333f880e191364f570ae1538e540e2b6f13550c018305730b558820fd2a319367496f98032f7a2430b134a419ae6ade9ec661dfb29dde6d5c58743312281abb4953f7065ae96da874c3fea63019f617530f78817260dce77a5d2bbaeb3939dbea079a541b428e7158f949541f7 +cac7c6071a38d0bbe47abaa2795333d77697ece1c633c1d6092da047c0c7fbc6d48e9b510c87798f087c877a1f3e67e7186c0f5589d8bbbb6eef7aff2172d396b393818bf964da6071822cda330bcd8abde7d91da416f4e19b4d34087d3d0738d34cd4615fb663b2dd82f4c27e01ffe1510c2fbab353467118108ccbed8019be43a05bcbb023fa9aba4b989d1b3151129842679f75aca67681573ece0d5deed7e42b4f5bab4bd66794f06de7299c4b65f4fc158693909c1cd94279da3746dc8f7fefcf8e33f0fef1eeaf881bd053e4918c9711e594ba56a3b2542f70b0bbb0e5be094b90e1f92a845f6e84c9add22b1128d032d7a19c582f0ba40a3d8659e477 +d3d4441c382ef5b8c455a641e9940e75d793f6e2968c30b255ecfab186e74c735aca3cc177c32561ba16c6c97d159d026ce18c22bef2d8db6e63dce6d692acd3d4ea1822ae165e53b5559bf0f4b988c05465c06367e79842a8626e2a48233ba4c57bae92d1388a4c4156fe42fccbcf253aff1b58fe8435d6317a819c292c1f84d7ffa2c48b806579db3768cd3b01e1f14954c7dddf09f18dc57c0900d640a53da498f874fd94f4eebee2ac8cf85c430bf38eea28ec343f0358d47358b284e654fa4dd3becc016f922dc698a94754ef3e2ac7bcc03c4a71491efa21f7065b71f655f8a7f27cefe2d8063ef575856576e29eb2feeb83d1954fe3d700a09256e90f +fb8de9268d7f965bb6239ca8ae9aaf0a1b6e7c7a7e7ec79302dfe1209ed4625051098cc21ca6fe048f0e07f0c68f4e8d6ac36292bd9133651e1c148538d47c184de88841578f9bc89f2acaab8d4db43ceb99df20c4f9b12c98478b3de3bb601f28fedf7584a9ef50959b1d94584cb5d115735efbe9bf890e0ebd468b2bcecce6ef56adcf39f8a1cc91830d88f89d8b3adf4a8a765ff1a189175562e36890561b7245a0de0aa535bb7582560ca3d0dec3c987cab978af8648baaf5f31e60bb641013fe21291adb56c9c76db311e85158267036b9b5664a82e127ebf3ded522cfd103438884efd0ac9f7787dffea33cb4c3cc16fbcca9bf83e9da42d7d036b4dbf +e41df0bea8a87e4dfb24d7d55d977bb639dc200393fc9ceadefac407c036ed2728a7ca0ac2d91c136af0cccc09ecd98606cde3f04abe231dd4e1b2519615f87fe25133e8abdd06fc24107811a45fa9ba6cec57c53f3e6c8de43fe8064e287c82d5396ed26097f16aaea2db50719567071f04aac525b27aa029a235283ca12c385328ed2f486ea660a51ce6cb537ab2660c2f1d873dc1199e31c312da489700884947a07a831c5a87c1f3b185596ecafdb67c48b85ca80cb5581858801e51723cf306b13df229dc62da5d8d22515a6752b448c804714153185b622f251d37c43bc542046b9060a5cbd673d8feac305f251e62e48d53de5548b7eba9ca4794dfff +dc9b9efac3bf68bc7ff09a916ed86cfc30cb5f93c56d3cd56ed0b64ecff8d79aba0039cdaf85ecaada7ef06ec6243a7a3d4652ad304d9eb242ad08f7621a125f392f0e672a0b6d9ae4ad1f457e6f8cab89032ea92817284b9e963c607bc209d95b3926e402bde6dfec641144fe5eff9a9f4ac674502047cd82f83c5da95399c60fb6ad5d1894e319d7a43f9046642955d3b092efdabaf99447db7b29ca71432fb5091b845d0ba4ec3c7eb359a644c7c3315a8a81d4d7abe658f0c4238736ef0b3d9ee5a854bc64ea4fa82f322de0ff992fcf9d8e039639b5a5d6486bd1041ba211499397bd73fc310eb2928eb074c04de0b94df1c32fe506765b3e74345783e7 +c0916a3acaa1c77f9c569d2e1d54bff832d14d5b80b67b6e88a39109865e4afeed401c34a3dd836ea0be8854436c67ef996f8deb73da3b42fa4fe221045a79bd58c6b98e120fea7c85e9c5ad838e6e890b0abb9832308dac331dbb95d22310cd690e190ced0dcfb1086220546117e0a2a0c6970dead066a35fc5db726d6ec837ec1abc17ed2038f01232d587f36b1c4cfbe594f5596d2da6e83bcdb79c4ae6b3ee72ceae4c6067de6b7ff88c7956a8c031fd9d6511f8bbd43fb2bd1bb19bdc7ec9edb9d3c13452584f6606cd5dc7fe45863ef913096198b77d89ab0c0a5f4cc10cf6b037c0b2efdd861303d2bead85a282c1f609cf3ed7e28efc65403ed747f7 +ecb600863ea9abced52583bc5f0999dc64f514fd25e66183d185cfe9695e9555df85468aef5a31d4f204741066f98f16275f291dedcac068c15801c333bc5fd09890882cdf0e59ae2aaac03d3d4da823b376b5a05f52d7b1ed0df008f23a5ddca9f45f089f906fbb52ae5a598c0aded28bdf445b2e03c1b37c204c20be0937ff459f77b5600b7f9748f1c385594e6f82f62d9eadb6ce6b08fbb1665cc33aebf8be10930ab0190122b2c5621611ab973426c6d3f91c5e51291bbc4e39f58a54ea1c271d8322c07e849df6a188d22d5fcc5f6246415d3d6e62230e1ee9f890ed7c6d5a9260883735df562e064afcf6245768d72e8211b18ee431361624a7ff39ef +c35d0231c5baf530f5613f93d933a88b866eaf73c0fa149303ec7e14c559e99174680386744241dcd753d932a3ae9c112717628f82771b309b14fa2d925e250b4b26e6febe733142f86cb1e839e27e2d2a0f3b240f8021f10735370c5a9b0572e5ba6b6e2f4a746dfab1aa241b42caf23fd31e1c0579a40f39d6408ce015d47a0366c29a63763595817358fd1798faf8fe467e78173312ba685757c624cede4819792a69507e0c1d1e9141a84edc12f91cd51df5e790cb66576c6ebf5b86583d8f30373ba7fe2f2f094aca2ba1a294964829f65e3b5d32eed170d4080d655b09c73fc52cf0364a0c0e1d7235553864219bb56f0cf49518369581da4f9c84f517 +d46b0ed3857bef92e14dbf4a32c4880922bd5022436b3de8335fcb10ce92606ce88a21e03fbfec5824103d093ebb6dd3a0bd7d8cdc39dc88ac67dc5a0c80643b26f64225e95600ce50e8a48dbf7a87efd7ec67424b84048ea7812d4d03b0ab27532cda7c598f0bc2a413fe612dff229a755393a3e8454c9120b0996ec2bc902f64b0886dda74938121ce40ced39ffbb4b05fddd8d3c30c79d09b14c1d11913f5aed9c7fd9056e0ac46fff0ff0e363a7378f80be445289fe163b302787a6c1b107d25d26efdeda29899b603c0c24636953f8e5e3baa91bd867f818f39f6936fe8323cda62d7ff127b3e22db109c1cf1a82f46e1bff4b549c40d6c09a72ddfdf77 +c57bd08a6c815e6bf73ba372239c3edc515ede20c8ed8b8a119386d87bf050b74ad5e350f236a08260ccc83c8f2aa9be13f7510971f7fd9343395d8d006d15c5d70791d50828898626988cc3b65eb6968b8bc8f42f70a6c94f18e018e1c0a3713a99a9b99d9f0b69ddace63f9ad75c5aa40e3b1ee539ac1d0ea2421f765038bfe821cf2b1c6a499bfd394ee21cf9b93569a2858be3a2657bde22e1df59ea84552984a543759b023b9c286d670a557557ced1ddd5b4221ebd9709dfcb7428204c2114d087e5eba726238804e56c890a5219a3f4b0aed8f3d8fb7bbc851e0132b17e7fc7123c4860daa13ad4c45ea4d35addea1b91a84fead5adcc1a97bf34ee97 +e76f55377e4d0266a9c04365e92391951166874b2598775d13ce74bedcd3e8c2f6a8c67f3a0b168174e83c3ec30f9c4034ee737aa2f229f8f8fc5452512d0b6b7177e0595ea8f58ec060ac9f75e6f4cfe62b0d39ca02508a13461acb0da85ece4302d8ee47220a1add88bfba3faf37c007720fcd51226d86a8b8376b4a77916ad50b38b8fc6c03466ca5fe073340afde14e7fc6acf1a6906d4fdf4f35290bc1ea2ea7d3bb5a8f2e56125da995d59fffe4ce45d4437b7bb0995d657348b8b3f67275d1b8d5bfc552c2ee3d7f434ecd32f0ca66031cd83fb6c44b1541276041b2142605b372053cf400f89633ebd99fddf060abf7f3e711996431cf2c936c3fdaf +d7460bcc2d153f62056b6c5888fc0a66b5b0e24b93b7a8712b577911cc6505ce8013ee88ff629e602ae03b8a0d40c5d50a5385e2ba37e790cbe98e0a5d8d3239b79754c45255b6b44bb5739458a5a89422ede1abaa3688e068450cd303e62b142b22efd56c6602196299e2848bd0e3d267fe7c9bc37d5618374360d410ab2a9e51e5fdd745df67e33366dfbaf4761be7f0ac13e78d6d941644d5793e86498e248707e7e68d254d909db1aaac4af667bf76b035544d082f6d01dc1b141a24f5248aa77bf14704f3aceeb2ea58209f6575224f2644d420d75eb03e6802bb2586bc65b5981956e996995933138b76d54d32fdb97560058220180f9427dd3c07881f +d1e07e9d4dd2fcbae8ada763e5b269157f55ed2897ea312be2cc01516462ace2010570efc2c1ed6cf1404a26120c53d701cc90d719fdc829703ec5acfede459e2f0303cbb2cdb27c4f1389d8654bbdf5dd33696b5890cc2f6d4e3f2ddb95bf4a834e9a585d62dd9b610204e577ccac2017da96c2808c06247884356e2ca7e84acb94cec52b53a1736a15e514cd6e940d1cae559880886cbad6237345d6a37b66ff1946b5037c79e3b2d4c9997a6bb6b12f4a78085b6c8999a64cf2dfe6afe4fe6920b0a75581f4cdb27f804766224950da449a34ce6deb3d1bfb9e909eaea6a8786dd9845de4e728395d8b1afda89a6dd7695d2479b0ac646ea6acf4e8b303ff +c991f35c47777648059aa9130dabf098daa80d8fcdd685990fbfbaa2baafbb0d5890566f2595b81ebb98462c3173989317526a5da59d135e75521245009cfcb96b336e56529f006a4bfd0425ff9579b52ee77c879e807456237a3e8baf899fc82ffa8ec9d8ef736acf802f62530c43cc77bbb701c1ca5047aebc0406812cffdc38d7149ebae2f40f1e249320bbe696c9333dd0411d0a2d9b58e309157a616240ecebb508d85d78513f018e939aeb40277f9e1db98f5e4aae3414bbcca946f356f5834d7eba7d14914585ea75a8146d45eb7608d2978bf2aa5b0be3b743fe39cbd7959ed4b82497fbb68a4a739067424e9b2a9a805eb9bb91fa86b4a69396d8b7 +ce0841f925c19234ce8bcb20dd8b2d0c828d128fbbf63f61e3cce97ad58258170f144cc9d43c86e64a4c207912f708db72a4cd341a7a9240f44b924bdf41a1b232294db94ee1067f6e9b0e76800a73081e8e5dc2d1f544d94a505ad172e3c40b32781e1ac273de119e0df86ec970f67f047e9b9f0ee3e1c5bf151f325f0e96b09af844c7ce4ecc7ab1cd5f8eabc9d007571e22946ae27cc343abd50ed6665c53ef272192552ae388a75a6543274fec1a35d8647596895a8bd86262b01ed8adb2c20d542e53b5e74d421bee70cbf0717a49ae8cd4f69d941a140081570af28184039d9c750fddde1397d862c379f61d84820b7e68bddd19e129b49db6bdee5c67 +dbebfbd218036cba275d554428a7a922d0e3f33f7ce377ab6b09345c7a3e2e75806a24e8aeee10f3b2f784d0074217888bb01064f8b6a9c469f7dfda677aa98d70118c6f42101cd0458f69ed7b453c9c05f85bb6ddedb189e16dc86856a3db3936a5137808de2563af8840f6d14f58e0e0d97aa2db1f54d797adcade700d33e01d6d518ea12485534d0decfc2716df948f6233a836856e65f80bd2783390216096917a69c1e26eb24c79d79746f3081b08058e25fa8f61d2a1c50c2021bf190567ec9e34fc78e03cc4f41ea490a2431d86bf22a1f5f0a42e09c85e884cc8c992df73cf574fc81bd4c32acf6d0d8dbda12bd5c8c3f5382f4abc8b080ee2f5e6a7 +fcd7abf3d83670d5338428a991d2d8d00ffdbd46fa480cf067fe51b913f85059dd1598f5f76bbb40810e7b13cd08d5174b33e6ec01468422021912bcc41226b24b87e8f2677adb3ad4cb0f8df9caa2175c79b3de0bc0ce44903825c8a9fc6d43208d1dc8c1f9cdbf6830df4c4b89dfa52b0c9c32c8a721d9d566b88aad154bf5b3c7ad65d6755c84a050084ffd27ea1329d156151a59d3830dc4a620679dc75f2c9135cfba32b34b117d90e2e1a02126aca24d7d515ff0ef0e586d1f7b8784a9ca86628fa2fde762fd00f3b0703414bdbcb9dbf507e8fd65e816a0f819161a4de67dfa3bcd88bbd7e9112f71178ff9d389cd3ef92defad252236349046cabb87 +cad64c2a6cfd5b5f37d6864903427ef376f9f39ef63fbebd3703be8121ed0875b8ca3b7b2be71e7db054c1453204e553b285e396520639f807cf92f38dfd9f5280c1f7ca3ad6c1ed0e99488d6421fa488aceca83f72a3505d3bc4765c3c07687cee060ef172b8be125bb21b3eba79602cf19a8981d5a4475bd81b74a7677e85bfdbc96806f1096f7fdf33ee4e15b0de06af1f555156c4e712004df5f0649adc21f67ca6271b0f78c4ae5852103e254ddf5f4c50fc5b27b008beb4267808504b1234b3295002788188f172cb4f28c820273fb49116de82e8f5164476f26ab6ac5184043c6c5c8e9e2386f9e2b4ba3d8b542bcd6633005e25ead129fc4ae965bbf +c9088a19f0a3b21dcc9a2664c1fad6e917aab39eea974e2a2ad8b42c57729dfd4236b0dd40d806ed3d0f4a5862d79d54665e2b70493fe8ad9fd01b0beefcd78c52e5bf340010f1640a74ddcae81bc130fbde6257e49551effa8a7e76d27e371408d7582fb82d3c225e230b0a2d2f28bc25ca329c67dfedef5340702a11ddad87375593f3701ff41645549d560fa03ae359af8289a6ccb59043ce843b0857e12d545fc211874a92c0953ae5a51aa2e134904a0c75132a238a4b0cfce820acbbcbd72f8f2c553bab8326bb79ab8c7295e39db64ac0decc12e54cdd64fe57ddfe03b9430a34ff085cb5d90000e155ab1833cff59c388d828033ff0ed5631d48700f +c2fbb23829d4be2c46a10ab441ea91bc6a1bdddf0b113c25226c766d2b49728d1d42d6f293982f8ccd79d5fe97dac20c7e52f70dcf3eff1eabf6c192b77c572217019499f223f9b417d6e0f3ec1c887ebe7c44996dbaa27fe927634f1f4cc6e388d9033b8179a2b4c364c934bb7a51d602bd4c875418f6b05785fdc032a939deef5bd11750fa8ce8fb4ee3b881ab6e0722658b25721972d31cb7352a40d068cc8162523369cfcb89355c15dd92201f6fca60696613b7ecf3ae72d33159394863c975f4af09c2b1dae6ddcd7942d0f14d42ea7188ce02ff302143643513ca1e5b88e300f59c2e662bec20b0ef7034b88c3f11a457168dd4f94773d0d4f4aec28f +ebd23f1a19e4aea3d1c38b03879ee5ab650ba2f79e7771025d005d69c0681565602c6c8e907bd500354357e18531d49895194d24dc030a08fd861ddbeacee3d54ec61e6bbe79b2fe5eeaaeeb6fdc2460b11ec330d4b4db9dff0f8835df63ec4ec76b4b58ed5c8fbd82a274656b06ace7b0937011830b986d0c3c870d88607f0ee80e43f3b8f2c494ebd071d600212088dc40b0d3d4e20f76a7de262a4300f31a54a06f6d2a6ee95031c36389a86451e55c5a6719fc7b71feb13902417f0b66ffa9ccb17320a659f41d4c394b4ff8176ebfae62a12e0956861975b7b12993046447719086bd413a66b5f1cf0d4cf7814d762ddf4647929efa9120f7409b791167 +ccbe7a86628b918545bb0fb8a9eabf72b3c0a33530d962b21fcabdc9c370fdfea742a858e96f0bad2b2a1f967c4a9175ef87a71601a842c046955dd682480dda139bb64eed5eb779ebbd7ae938f24b0f9372c20d4a3055c3663b00fbba9a631b4dc9c2121a17934ad3a7b831e09829b4dbfa8925dad44e18a15e4897d1f97e0e8a8a6baa506d4223de2f7f650bd3cb28511fa0bf76a228956b47c37bb9101cde1f99c7be93bef85e068bf1bf335d31aa5089386dcd061996c44c648a0fc43cc4c0b26af7eb96a0becc2520f689e3d1eeb152fcd137a45b05ce7cfd8b5fc418558bd6c2e192a6133c6a4747f9aa3e64cacaf4b9d433b2fd9d2e8600b47878be9f +d1e82e1d7115085663995dd2b8553ed89ff1f7311dbbe62089e9be9b79fe13ae725baab9df74b744564c0f4ca76e55dd95f60f71a84dcfccf6c3394fdcddd4678841ac22dbc2bd3afae0ee74ce1211f748aaa27d09a16db189e33c064eb0f37ef26af20bd145d29f413ecfad47c2fc433a3e8f5c67d0a0ff4c4c81a8bace72b55c50e5b02948ea2879f68cdeb48cf6fbadd132d1e0b2faab48538a37273f907c32267f5cf27f845e7e752d87d72055d2072fa133b5ba8be494308a0e885f51e8b1606b33bda6a3378ab19c8e6157f506be9f2cf443ab62d8d6e28399ac0c0cd76d6a41ac3e230dbc919aecaa9af9a31f5ec96f001aae6dafc637d9e1cb19ae7f +c810c5c0a184d0d54bde5149d479935b28093b8adbc38887b109a3261d5e9c8bd7f110ee9f7f572f88859161583451915f8ff040f38235d8a265e95eb1791e2e59d15af14ace1866a371213c454f681b5613b157c9145ba80713b2a0a6a5247f86739243a32014fa19147cea7052f442023b09c383178c2f9dc35d0184d77a752b41086ae326b4d3a577859fa97a2a40b5b945554a01c491e89ac2736afe55ffaaf1503463796b0c2b7a14ce624fab0b16dfea0ead8b9198bc6ed745ac4389d59226c41e019b73e58317824cffebb88a83a837ee488d305435da704450a82a05cfe145da679430100172f84785800c1a1c0130e1ab3cb1e5732a8ae1146818ef +f9e6b27c66e94dadb6ef15a29ea82911f09d569bb3dceadda1f814011f3a58b8b484fad49d147e1f090ee821bd20e4a13e3fc6a15253bf050022b73e778df3d2292333379c67a0ccc0ed2a21ca6d7b2e04d184f00a240379421e3b5cac2960d2249c0738f09c9312fb9eba21fa9980627793e4bd44ec2c089b1aeecbb1e9c296b7c405f2dd4b0b7e44ba00f95f5bd60f49939eff72163039377d78813cbe65849033464389c1e9292da8e4e2d304b54ee7dc250500ebafa17fdeb2816e2ff2d7a5b1dd72f79337a13fa3de20078883ecfc54678c8976d8adf4c00203075a3b29b4a6d17031b2e1df79c32f1ed07c63557f547291f7bfb60f138cec3ab4abda07 +ef7f0d3e45b54dde72adf0f6ad8224e12e2ffd8f246076a0b9057c3c6af965a97d0f5c39fe073c1ab4554f6229804bacbb77646e3f75a9d8a9f042d522dc3f8b02fdbb08e7d51b5f3156ae40f1da7b8d9189d60b6f45516038e048c6c67bc200834742e17949eae33cb9417f6defed71472d043c856bcbd28746e8907085d4ad5ab2e1bc246b48fd0afa92f7f67815d756bcd6328e7e25ea5de576e79548595ff02f42643a50075bf52b8eec681eb131f488fbf7014b2e06d8e9d7fa18531b2de187a178cd72d07b0a4f1667b9e022d8521cf54b8c6c0e089a06347d46bc6fee64e0c59c8d6bdcc56f33c1dab7bceed0be0dec80c6cbccd8d1c98d99992a2a7f +cfff4724431087125f0e613fa5e8395d53c5166bc0e655ea2f7ec52f81e94311bbb71e6eb3a9861304ed27f3d1b964a99ee6fb51f54d6dc5eefdee154275f1e208c61ad976c068cd650bd30ea26af9a68a9568712f2f1a82f5018a2ed2c3147438c877e568fb6aac6271a05f20d6b066548685721d2824bb1fabff12bf904bb222859e21cc745136d6746cdf20f405a7ee4423d7ccca10201b45f7e951c1bf933f17d54c8569485987192c125cf63d2ae5173154c191b3c7807ae47a52fcdf2b4f460cff56b4726d2f3199bd5614a793bca79fdccb1eb13bb1eb8b5138482edce50a4109a8c92061f6eacb646242a93afa77773b1c76b57e27515a895b36c5cf +f0cc8efb0b5d5ea7dcc3e45008bb36c9ce6696cc525c5292f9b6f790b6ab18cfdef1b16d8c4e16849e3a8ac8ce305b5dd99171c12387b3871bde4198a49e1646dd567133c227d44a4d98ff2d05dbd53c9f532e6622196859ada3fc7a8e75d29ba31d1fe4474b3a0c2ea4b5c27f390e755b61d92475759f47c4f06a6d3ff205d55bf09f48f58c4eff642515ae6aa64554da99ebb8769e30c9ef46d6acc264383bb1ada951f7b8d5e080a185d7f88ddeffb31ae854cd58dd94ec54bf46889c0937ff39e4b2e07bd042ccb5f18c17124714b61074ec6fb117e0f9f3f6b2a49ed0119bece54c44e371ebfb09344131b44ba7fdfbe8d9fe1323621f9a543162c3adc7 +d4e20dc2432792568acd4fafc128762c1684055309575eeb5e30307311902476895f0cfada3565a3f16ce7f8ebf3eee51a87919d830954aefca54b833f3e3daf624061da0abf11eb3f04459a5734838b5dd07a0fbe886da9ca13d992c333f931bda903f5711fb8ab30e9d28c2646064a66ece7374785e9123727bc8a68b3e6c55bf86976829ef9b8d823d2c2ee9120a89c47403a7d51b37e93ac4d9ab7ad589d89bbc35e7ed887c10fc0e094ae3e5ab114347e17128e305bb7ab587c521fe8e3ffdbd22ee406432fe9b1d2eb78cc055f93edd84569c8540cf309e74d434422899b85e505ca3e0e18bd50a6477c5c4d89cd618e2fd10f4c884c55fa7d80b38e37 +f2f6f710a031e40dfc1554c2082d7f262a351ebff044b6754bfc5e979aabce1a98510a354ff61c36bc42ff40c814d606552de734712942f04bd1b3f7887fe676b6a4a33fa3a3d28c7e43c687fe2be63abb4a196781593a6d338b4d6072b4a762b8f962950c02cf27e632cbbdefc59444c9a62ac235d5e82d5bb8476c22928b71cafb0a7d744cf8c81a8f9b894f43c265d1cb66e4880c187e8ea0fbba3ea8619ddb6eca45a7aa69daf24860abafc38cead1e8a487eba9e1cf16e7a596eb80216057d54177901950bb1f4add9c6bb6f40efd1bc479fe18f5f724b436ace88e0c76f960994b4449d75d8cf85c641fb8e1b07d6092f85ddb13105cad97b023758bcf +e7d631a57062618fdac56def9b8f71393d804f686b0d3ac4a450bd0dc154a5a1f8b807689301b760cc9c123c791fde3c2ec568ce74cb39166955edc6b5c862abf721b8f036ecb64a274b2e108a495df0d99a4d5d5150055ee70f1092cc510432a4cc790c22f2901ef5074681b2eb0ecf214f948da94fd34106e5fcfd7b1c7094a7de32b9ecf97be60228c9fb933d35e2adb75cf4bd16f7711a6c6161efd98cb48ec65d7b4b0157a5a444c72eefd7e3966a445c90e98bdba2b14b4cdde5fd5ede244a2127984b2043f544c05f70f1e65c5a7e74768addce871b39a5d24931cff33883be4642c9d42d12c0a82d87da7ec4abebc47fade56b6f67ac6f5e9bcae6e7 +fe6ac636d381028a13cb1188399cc16f53e2dead80233b3a4f06947a11d4070b29afb9717a1c9b66ba4213afbf97e0a8f182536ee7090a7a86a5e16ea65832ed7c2c611a01addf2bf15cff5eece3c701c2706d1b9418538b03d9b8b9991f1a1b15ddbe0fa493f06c5411e0a823878dc4438eabfa2bc745356a4a4cc5cf1d27aa52dee34bacd5bf9cdc2544c9255bb4998955bd7b85bbbb7fb6beda7dc8301f104846e6354dfb97868b4e4e19d60d5bd9f29480add7fb3fddd546b0e2ef68d56f317a94a809163077da86cb77096c1845bdd4a83581059479b9ce1d9121aee7c8c0a2c5fa9a6649781bc9656c73fcc7541a1bc566a5c311b2b42e55f7ef828d77 +cde82c8459440fade5d5dba23f9fe3088b78cbd04ea5e8a4f66996d88db894426a976f1f1ff8c04c0cb097c9c05b5a6399286df44aa4c4557d265c3191113bff6cd4ff9af64ad4ed2e2177f92ff925146f2955ebcf3199bf2945e4d32fa0f9b757888b1e9e2903992af3029c9d6177e5ee7567d1af8fa1f5be802e7297369297adb79df8a51ae6ac44a8b323a857898d32e05fb839a2bda2ca8149ad97f7dd930531dffd3b44a4fddab9bfaa15b99cd6f1eadb983d389bdfc4214adbee4c51b64df287ae16042bb93de7a4b3feb32cf9df0e27c62508be2676e0546e97aa60c81333b621bcf743b27240cf21bf3c2dfa9b3a134a8c7bde1a989ffa52d99e57e7 +fde5ba3bb877117f5d76e5473f8eb6f754be8e678746efc8f7ab6f2f45dc65ce511f016990fc9083a41da5b079702eed260f83936267539779f7f2bf94a6c86a8c8119125ffffef242fdb5c7890a4a0cb345077de56704f43ca37bed26c57fb2237b732016803a773d17a068ac04fc98c414e081ae9c30e7df0343576afc3cd72990014d716c74d17a29ba4ae6d0e0fec269e79e01b80139b88d85d12f06cbcb14f881a96bd594067c9fd77a3162c1746bf789b3b089042ad65960dc3d76f2108724fd51d47d5078d934261c8587a5d77159380ffc41e07047dc60485c05bcc976ca685b7dc27cbef44d2057a47ac663597883932148975b0c91c38a1fd6ea27 +d90fbadc83e82150ade99632e2490079aca1997f0cc1fd7f098e3eb47c5aa8e4fc4f21f47899b60ef4f50abb7f4e256cd7ee367a78b780b726c77a12f06cdd11c0c6dd67bc8486be71df2e30966059e056c4d4e85d5481ef56e66f41fe59d6175576a600db7a0c4d64744bb8720bf853446b49647779517b5baed7345aea126447e670e41942c100c53aa3b1487c5d0fea1795e4991d5725d1133b4f09ff8e3830730b9324a198114e38026b2cd95d0c87363bff552644c13746d456633b67c4f92ff78bcc92a52aaba2c2c54f3fb175354fa80bef944614ddfdbfb932da52d33b46e8ba971ba3ef3a895b46da3ec186857ad2ff461f63c47ba3533ac666f0af +cb85e97f3c4e361f09d2ca917b52740707d253b704639bcd44935a14e985725ff2c0a6d2c0938460caef06264c45cc5a0c73c00ea927b2281c2cf07c029cb3f9b4eb637242537ec8afb03145fa3b7be1cd1278f2fad82be599270b03725492f414e680c788af48f43698f6cbb31aac72f0805b7ef743114161dc65c20e0c477edd65b30dee71a608f2d9214aca91135d2015408cbdee2a69f61bdba778500cf4dbdb95363e770f6e6ba56f0cb4aadeb2a1e5c05f031aad92e7c3a06ff2bb5761d16dc33dedc75d500340457ef04ef9925be9b382fe302a77d318211a22c3eadc86d2626e65913fc1c338262b47af076645b66a5e1b79499c93e71fb594449867 +ed5a6bf1cfbc55777694d5d8fedb8c0ab1e863999375bdcd9b52210203142dc3eda43ad4f7e318f425597329a0d15c78a6246953793907f02dc15595981617ba6805d0cb2b1b360ae5c210f35650d0065c04369e84ec583840584d4be2fc0d829527d66470cc92fc802bededd031aed7e6dd0f6d0a009e79a5f3e1dba39dab1796c0b7d263e3d2590df0b8177fadcf31dfb8651e1071858355bc7925e073c45b06a605fc3fd1fc91bf6f718ad8e224561aa0b576ff8861dd46c01e190387f75c93f0bad9b292a9dc95c7f1b0242a456d2a7322fa81ac3a2ccf661fb5a0a5ba1f8bf78690cb0b7f96982d767cac074c4e35ea2216d5ee019d569e38509dfef6a7 +d0193d6389248c31ad4350ee67588eded29368a29017058615d6ccca706216c4765cc0fa2bfad5f45d03f12f750e1412dec253056ddb17857b8506cb49f3731f7fd3de9db2b278166b34f4a73c06f2fd509ab50dbe25fc21587dfaad5ebf3d16c1c61e79ac7d843028f6998de77ee4ecc923ab13f1ea76874c100a67de9ed987beed0445824b39b1f6f8ea77e31225e4edd84abee50bb9c224e27ba43b96775c3728bc552a274ce405ebac078d46a93fe6cf8d28379c164b4f5f7032b23713679b0ed9d5a2329650ca7b57c8a403ba7ab7682a8c825d23b3dfd43f4b4e3c6ad60108ad9cf59cffeff132f07952db52cd782e870861d89a877f6025e64c3bb5cf +f0b548f59baf784230ddaff016a36030b33596cf1f07ba68c0d1d6f3891194319dd2e81c6aa695247a5cde06a19abf442bb34ea1a07b395657d372241394fc78f6da1e015da97e9320aa42a67806f8f04f65891f658afc70515d92ebc7a355a1655dae2563b41ecef1fa42931b43b9d98c1dc33e44f18e26616f166aa35d5299457e419b3ac7c2bc63a4ff9eb39005424bc2255bf9e4ea3a88ed4346102071025aaeb657f17b31e1693bfa96d86077e3bf7821dcf644232db1034648d96bfc49ad2b2af696cc68def20b58d4d7691410d9a09d6e134578fe5fafe7bc07c687cf6b60fd98dbeb99b087b9100cfd1b48ffdfd30a76f3ee6031a1292f9b5e55515f +c0aecd4e8e382607430966a39accea33071614725730cc1682098f11b77a28ed96385b15fcd99ebcbec2362536027584f15421a87fceceb82644eba0e81e6749936233e3d8372ca972d7045a49f81bff51c3e4dbc01835a35e7cabccaf451ed1b7acc75652b479b48e7778f309054afc609118fe05d48955bd4f6ee079e56b208fca081bbbe57bba10448212ff213f314c8cb24a6ed44f7ce16c9ed09a9789c7eba7c7cf32866ba8fdc5d36e79b477a6f978cfc61e5b238b52953977dafefa11903072617ff9dfbe5e95d5c00669c6a74f4abad6fed89ace6459ee6b4ee4a90896f374de83fc2a33a3dc7cf0483008553d394048e7f0a7582c7353b62b1c814f +e9ec2265ffe778f19ff2ff7dde7b5aee1326a0763ccef5d333c01f0da904be87d6d21c0320f6752027df959227cfb2cea593ee734344e8930f03008f10c0b03adb1a69cb94ec67624489722c2d899b8418acd14418cdff004d384aa0875192a9c974dab0cd116933f6a7ed043c2978e5adf5dc82ff473b81d775c9fbb22095fde070c1c8914c60781cdb3d734a7772b7ca60e337a8e9ad3faaeac06483d0121a8ea34e80c196cc5a6bb8e782380c58db19429c921fabfe325e2d43a182c7a65b43c582cf7951b03d6c6c5090d4554609c4792fd81b4e9aa7ac2c7654beea19bbc3709dd545dc3971086bd88e8ad6ef2636fd289bff945e882f2367914fbaa2d7 +eaee2a794c4f2f4da00d24acfffa74d5c3019451008ee92e0572e03e1e026844ea5dbdde0e0a7c44dbdaaf402b6321d4c832e945e68ab4fe892cc1c268a2a87c8b9c2a356bbaa109b017c6c5f7739398ab919cd921d63f1d21c84e04623985232a457b786d4c11349d0a7c867d463dc385e51090dbc944b9e12ac9ddecb7ba745005ef42d5c17b6baa4d41d92184e75cfd8eca5caa33206457b8dfad4ee94780e36baa2d275a4e9e85dfc05199f6f84d1ad2b60cc96157ca3e2a9bb67e2dc44eb318376109a986a96372e386bdd0e179bd8d5a89960da256ee23b1ce132344622b52377992ab5d2e6e59316cdf474fc1cb765e8d4c2710c039ab0cc46b4ce047 +e279ec5f30973fda79b919647817cda2a68ff5d92e1267f2e4d4b15bf473cffddd2f380550ca8815e37153f7ac87cde3f78580c076f5110b2fc11c350f407f11c05f4f25fe9340bb9a8826d4ea24ad3ba0d7a464bfcbcecb492f854ee13a2a72fa8323b7eeb1216b9cfbd1e4ac18e2bbf5968eafe4ed94c269e3f9dc4d8522a65764f43016a771000fa95825168f9aa74a5db8e5084a50cc3362dec8cb251d3098b10591929286e84e02b2ad0279a39e3b09fed06ce63a777857dfd6fda1f81290d5cc6d3287d1f79f22260577e5f00d104ee56909d73150eb75b92dc76e4f2a5a7c75f6eaa30dd183414555f25bb0cbc9678c67f130f64f1837df037b1b70ef +ec2bce025d8cc338379841e203a787aad01b14e130d420b62e1139f8f10be9a1fcbd3da633555080117f5b34cca7f5a1e058e0e58b11a907d659ae9eb49528d3cfcd6a09735fab8f04ea34e9e84a2c0f1bd39217dc73434ef94c7c7fc7bd38ddd9b3468f7ddc7573f1dd2d790fccacda2f5f65e79a480bad800804cdc50da60b1d00d0b970f7301b89dc651f5e8959f847a99ada801c41d17cc0c4c7e3e5a4f699dd341a3f369d296ce87c84559476db99840edf38d5ec3640afe3dbb36ca78c455a3e1d04b1a06bbfac8cba2124f3e1ec55ac2c715549dc983a23dd7b3fb0803b4aa057bb310d84bdc205a251a9e5918ab041e0b09aef1685ed45939c7c8a0f +fa199e578632b87dd7b2fd5b0c26200b61d735669fcc707975719b341f0a9f4612e5dec5a5b5fc407eb3bb2fb5cd4c30c72511c9997befc4e3394791890fb8e68a971ed97ca20f3d32fb91d507b3191c20e5db0ed760877a2792ace3e35e8d8b865ff18e68259f8bf3261664b46a956486596b5e5b309bfea2f2be52fc83400bffa12776fa2d23ef9e172953817f3968eda6198a738c7b86b88da5ee49fce8429ab7218d11b4ad476085c6abe0965944af8f2d7bfc29b11d1f2e3d0664974a10aee98d522162dc93e01443166f8801eef114612324dd9f2dbcb84d82bdce4de3b0cbc220af1e51fae1725cadabee3ddca61d7a341fd81c4bac1ad7b40386f3a7 +e411ff345eef315fd701449ac36dee313d5d075ee53b7bf8f4314405ace708b7c1e51e28cdfe98a6d610b92a1cd5ae5f6d30dcc2a9f7987df20632d32387819aa0fceb7fb97b8e75be7c14ed58878a5f62cede80cba9b308c9e56e4b6a4c435bba929fc7cad85c678cffbb5a51e735dab93f100b932dd064264d245742a1cb0502ed5cb0a1071d42df5e2eb1a9c07dbaa73f995388608609b7dde91a86e70a656029f6d416b61067bc0cf1d1ff05c9bfd0044d384e2e32d15f23bf574d4bf78ad66424492d201e5b90302d40f7ef6c7847cf41ff844f41743d359196445f01f225e6e5c8e7f60fc9f95308f83c64d2e37da26d61b6adecdc4d75231c5d2c94c7 +c6c709655119eeeb38460579944a6ad0f5529431f8481dde5fc11e9b48da0a306164055aa01f78c393e21066670d6e045ba0f25acd44b4429a8afeb18628369bb12ed9167f350335890ba5e085e9d8a98d48962d660cbdd903438615079d1ac3d1a52d15f484640368e24b2ae9cc412482eee808223e4606a831f5930dd23dfb22800499da7c96d62c27d18c5f3d85dbabfd87f65a6e116acdf8a4929d25aac372013f39262d68b9fb3b8b80836a2c0fb146ed528500d53ff7b9f95493ea5f591ce188cc3c0d16260452afb63756de5e6c0fa69fa9ed8d4801a6966ae3ce01d51a685dfc41826e8464a92c79dac549cae07659e98c9c141b2ab4491aceefc5b7 +e543cd98d0304d77906fa7e921aa50d9de738c150a11b6dabc27d1b67b2421da13886c45b7ad2d380742064505f197e51d2a8680b61cb42b3d06a3db74f4f2cebbb8d95f84cd2da310d21a975948ad8c05c62e1b90def1ee0a70ac5ccd690b1f0b8375cdc5538f813272f6c204580cd70575c726c32c60a558abfaa6464fe8ffe1623810d673c68fe5c69aadb2179e73ff88f1deeb2ae51f234f2248de83e05e17954f511ca9dcc93acda715ac3354b9e758d849c9024081be56ec5d55129133284c4e715a109188718c2fe50215d0cc8cf5cd1b9d79a1defbfc1b3140d24e3b838ee0e5417e3cf27097752bbb9d166473e2bfc6ee60abfdb356aeed02f9b017 +d124b87163bfb5620185f23193e5416bd18c61d1bbf936ac079c9ecf48443ff4424d15266d619b288d08dd5e522f63ec4b83bba5671f3b27d72a1370ed59dff77b030c6ec37951ae9c8d75fef710687d96d00d4b89d2a2dad8477e10cb8d161dbfd52bcf7509e11e38cc25ed4c4d10ea19f082b1cc36f647f212413a06775871906a2c5412b90390989860010a7ed1be64fdd124fd1203c5191a5a7c6df4905c4e0e8c8d42d85bc78ce0b89a75942ed157cf08e1e17aeb5016c94c4ebdb321d3da557c8513edd1d8cd2a946292afd1cc37a9cb77596ea3aaba47f3ef0233316eaaf663c8540392a75a661a1df506a8d61cf96fc0a2fc133199c3b662403e69ef +c0107a53b6d35c88c70798b3a969a475fd056952cef48bbfc25f946d8efa7f4391a98c7010ac7ed04f76326d4029ff8795764761a82d843034707c799068af29b167c2cdb4f2dbc44d28127ed57de502d4adfe1d4e2561869d8a3fd955182b82dade95b3095301681cc1289c7369878319ccbd103a5fdb23d92b3116b414f725f56c1673df35b8d8ccfd14759c1765388b658f980ac42b86c140331f2017f3fff5efe1a5ce74bb2c5721e41fa78febfe674e04939f62e53b367363ebbc0d62e52323b9b6cc146adec304c9de4c428c21b598703d764e83f2b22e9a5b49c9f990da5c2aeb1fa57edf6080b6a025e641ff7b51113a0fce5d029dfaa9931e4bec5f +e0c07149dffb14aa1fffa5785b6e937f17cc6f2c707fc069738a7e583fd04e2e786441f4ad39b3bf65e5d1f4c0de6ba7bedf44cd8264844d324b3a03e584b20d29baffd8c5097ba725904f44cb251041271ac361693dc94ed2b7b60fe03ccac452d4c09a43191d26d66099f10606c829bfa7010e1c78e519317705b9db72e25ec7927032ba5e96dcf1161b4bb269f3f7f0b5cd36cb29c6813ccdb16c38955425ec97e3176171a035d216a92c7c26dc8437ca697134b25b63091e19722c90c3eef59691330a6a7b4ed61cc55f543e6df504b3e5db6033645f25dad56588e33f422bc807218023a26bddb5eaf25c468816c1d0806ce154bcffa0f8e6fed496a27f +d449e7e3871fad2399e545fe6f7ea61e85955446637b3e5c58100e8d3731eb75cc2368b85195b2929e53b064d2a95041676ed16c86ff5286df2c3e23dcb19aaac1efac5bd8d36ba9187cec5ceddc2324cbce9b789b0aaea45498d6aabc554a413b70092d718a82b2f551b1ecbfe8b90b3cd7e5dd8f3bce575936aeab90171fc8c33a6777aa48bf91cf8f8c26f10fb3a070e15005693ec2c465c91c4fcf48e310b66e3a371ef198624da267a13545587b4e0088c144283a5e7dcc8a8fd1b29bf8ad470536a305f254292c3d5c04cf811ff8d86291e995386d70b46680b097e9a886225ac330918acc9c3e443334358dea1db791ee151bb97e97ec60f5a6c3ae9f +db9188b61517280d22d15958e309f43678f88a770eb47e67da0a57a81ceeee65d8007f6c586b29b429bac9abae52d6370076a099d961e167bbbf55eae44c0f8b1598e6d8514561144ce5526bcde9086a28fb0fa1a56ce4df00d17ddf85fe75d81095aef2e4701813f0f2770b868b639bfe14bc6397b1838820ea276e890a0ebf796b33283953e6918576e35c0f9276c2960a0effb3da51ee9c7c2b7031fa5366aaca3b6c2104204ee9ebd01e32304afae0afedb77458bc08195e4c8673e2cefbc2c8aa7132c6c079a8cc65aeff8a715368c626ecaaddd81811f1acc7f4530d490ded74fc8c19bca50dde00c31c5a02e9d21abc558551355bef3b905579337847 +f412bbfc447eb76dee1ee7d171e2d20064a6bdbb1303c2167ed9aee3356d43becc925888f6c0da6f6119407074235e63da60c6b6fdb2e3521e637bdb538d164a7babd8ff721e183516ffb51ae7d8f038b38f60fe2a95c0080f972d69be45338664e6cc1e092e80a4e0c7992e75261f76c63d8e2ba745d87e1be13b488b72685813effc24d73a3a9fe16e8655c25e9c064ec3c74a4ea51d287fbe8e6f43c18329a3de17be67b5524abc98e646996dda957d0380f619de9d95a072f50b725a172349296ad29a1d7a165a1d5bb9dff4ad0d772a82eff731f21b3f6784ddfbd6843863bc5705810cb9abd30e6a9b591b0b8cf18983d4fa1df400c2bd8643052f28e7 +f7815144f8a8f5a325c6dec504f5eb30a59963810d3429ca01d9781788d46ce95acb87e6437c687253f110c54951c29367641026415b4c417887b43eb2c6b1ce68d8346e36dd960bb52e384b2925aa062b8541c2c9d04db27c70764f329073e904601765a6a37fae2709f09acf40430c948d3f325c85f87df7d3821ca4bebdf8d2194b2d59be728a48e4eaaeeb78920db994777d44b35e7927c46e49f037c8cc56ea87d7053d35a1bb12894a1db567eca5441e27165f8f98b79bbb096e56a3af66c79c7c3997c5efc71ec9a40d47b7917ddb67682dfc0096051f3994b8f9149a8ec8e3b3f0ddc2c82819ef7b5a58c2803ff4955eeb8952aeef2fddb00225eb87 +e62b7728fd7c135b05f654c44f56dbccc9a6243aa81c9d9563d8e9a08e5ec4edd7da4d4306e1d0a7b325a56d248de42d705d68225962bee615211e4f04ba35051c7e5ebc912f807e4ba9e1cdb3a5e3d278dfe695b861cfc756be1a1cc5b6814e7c86906f1a04a48d1f38a63703fc06a1e00cb0519517f783462e1c8fd0dfacdc052264605720b05936c57e3fe0e7036228b7007a4d782968e37de3b56ddd4e0e9cffd0b1f15a38985e57e098df35b78a16d5e9c3da085789c63686e5474664ff55fb0d11c2a5d974a780330fa31860492313307468c6bf15bd9569b26cd04e085e28e91bdfa43a783c38230fd48195d3c6a63b5b83872964b091ab0b42daa43f +f8fe063f74a973b68a13ac6c3f6b9cfd09adb8ac79a306d0d8e03d7c2b07bb110c2e8222c11e418c6fe2cd807f496a3a3154e8228fc99a5eacecb851a484125124ad8c5d81572f1cd3c326f3a2fe01c15902c8e51475c955b6d3be104d663f36a225259d42d58f350dd0430a841f09d96f6b16df7ee214bcb35c288e355ef55ad8346e4e54aedbfec113a045321b6b2e83a681be03316ca2ed5464bff7195a8a53e8d6c9722aed4a7fbf612d114cbf9d976a91a012f3140e1efb1740d3d0117106fc51cdb485bac337a650730e1e8de97464ba92f9df0e79341ad3ca166ba4a37b11b0732d4b9c570eaf5617718f5fe0cae3e63f73c4a5417e4d60e1654f7d7f +c588c45aaccd6d56a96144fc483bd6c64f34a1c387e01ab336f5564d4a9297f3527308109de92897b0d44aefd40e8db49d890f1bc4bd7329662313bc2e1766eea3d9c0bb363f1488d79dde1f8901dd361e1eed2a2377ac26cfc9bb0ddc2db6fca29013847d01a1a040cf8e027a896fa39492afb7da49566b795db96557d3553ceb00627e8c163546e887a51cdfe24d681e151d89a1b5fd6b2a599c622a28f3fcd6b762404050156be550c07cb5470a6183e7bdab2fbb67a8c7a49560e6c9d7ccda2c2733a8842dc1a040e022317a1c128b2563172e141876417c79bf0efa1f80231ceaa6aefc359c5dcaccfc7c533bf6376040ddf478e57cd232d0419d8ea89f +c4ff318b87faab1dc2dfeb591dfc1b852492a7967c9932156bc2f899312b37c58fb371904fa6ae571c7881c183c63570d567bb0ca29c47d0b7a8b747aba9ab01c6d6287d94bf5add78284e7fa2f11fb0dd8d32c2b90d2e9b4feea06022f42df3321af6de2634e4046e9615d18fe09c618da11783395bbf890ab80286075b15ba75f8c208e94ef9850e520d30e70127a6a0d9a0bfcf101d619adb3bfb1bc0559711f55ad23eb4f5b2c7598895ea95b6b818b5365f18312293cfad64b8d3e281f51533532b30608eab467f31ee9de8ae0a9db88cbe0e39088a9b94f1d3d29ba55f215526db07969e8280d9b8cdbfdeeed461742b1a31c9a8e2f8831000e141a28f +e94b0b422c9fcd64638e6ecb42dfa5b0f45e49ca7fe054bb4757fcdbd33ff7c8a99c527e5024633b59a0b44e380a7744558186f1f00e62e37fb8ae4083736a662cf476fd3300b97e433bf309e60a87d16363dce40063d99fabcf266213c6262a23c2a16d0fb598bc3c6393dde7f735fdf2a5c10e65ae96aafc2c3272b26fa0200ff45aeabae6875cf0fe71a5948670b4621beb0cd9fe8cabc73752d5b61dda9cd71009523a7090e4cfd7a3e8d845ad15e70e0e348fcf47b6a1b72623211430ddb3fd13981fd4412b11c3aec48248375caed3e1d8ddb1d8ff3e9b7e8e8f84d41a67d7b66da8bbfc02fb8b32f6ce10c237a82fd00de05de9861abebef5251fcd5f +e91f567098d7ea1696d4e6edfac8a6d2022d422373eb0f8cfd56db3d2d2666bb878384d0901ed7ecdf996ba305902bbf94fc7ad325512eeb4b76f7a3c325549f0aa5794a96b66d55e41d14784fb60ac57684f1adf49770ab8601f6c821db27fba2b88e8bbe3de3b128adfd6dab8e717970db97a1d1a180e0477f1805de3b395178a2f38e556c9319a8449f2a4abe3380fd9df0de228d2f977f26d407009fc56b1ad8db368b9f9689febac97f7d2e8010b4d9f930a190bda7e8153f6ca1de736fffc3191927723637891c378cac5d6362e7d0f20b01da58308949b31866e11a133b9674d8556627532dd732158fc4e625d70158dafdd66d40409ce2feb513cddf +e66e4c951a3948dc2cd386b1f8ef39c406957b5f10b6ef87bcd330fe06d79202f1d0b54f5cf1e11b8b1b0d77620b2068f29e1713de0c421f52ab5ab2fbef337dd0a4c923b75140a56954666a5f232cb5b04bb40f5167f2c1323db3cd546c52fb3011441289c4b93d78011a6a62424385aac78f0ce6fe1f70ff38c13fa5ae7f1e443f8944a1d6704927536d32a79b6a5268e5378aaa5e8b587b0436f91c3f1688ba0b5f2471dac7c3608409f08db2db26e0488f955eabc852b74698e2e3c6d7338f0029edad4de787fb7ce34913d688073b35bc049966e477693f59c7bc34e949861e7acabb3c714f09e91383b5ac5d0570daae65845cac68b7b8b745a0d4933f +d10e32320da52caa7558d4aae6079e4ac8f30832549df69bf3b0325ded9725b1ecdeb6326f307939a4497fe7c144db5cc0904863098449efa540c9b2803ad2406dffc64ee57c7048af94a5d46c0c6f2c6022379595af1908e9e38fa1a0de483182af1a6bc58c55fa3ea306325c8c61f7da9a8a90af555b88925de3f75a602ba9480176134b3f5ea9206ffdaf4c514bf537ebdfac1effb9ee609f791270b99a9a50a8b7351dea3c4280343d4dc89b3a639f4415d8b6f9f3f5971cf9c35fd67c4d7a812c30572da0cc15a37ce5d97dd16f3b084a9ff63a9f4a89ee8cc3395a53be49b5542abbeee176be858fa5cdde021cf581c01f2f8faeeae61f7647c22d676f +d3d20f199df4f57c06a10131c2865ba3c925d267ad83f3a0ea7ed0fe96130b730d44a1112a9e783fa93638bb44fa755bc02f7a901900c82d79fe8648bd8739b3e145cf7e8ff33fb1bfb4080ae5a0f2b9fc0ad52186830e25dce4f085de52982e7a335e471c458eb77c5508843c6470f68ca674fb3de9aa34bdaa1c3c79140d4a53c681043a085903313b78cf342e177c85755396768d178d7e70387e53ad1a8cb7034b0a3b271120288d759b24f890a0b643066f7a046233ed670c4ecb30e8a2a7d0067b1350bfd6091a63e5c5aa495b838b8e259e8081420f70a717aa5e45e5b14481e35446fdd1aea2ecd22ba076f73ed14872ce4377156e3065afcf34c3cf +f9364382e5cb6fc0b8bfca867a766157521d4089601f83f380979c253af0d025500c090f0de0ba20d68c2c7c34b1363fe8b1a985b9e06a127a36a5bd443fbccf3b55eb83dbde0a146bc194403e52543c48f5550e2faed904fe516cb71cbe9fb1c0a5ebf0507d4cfe606af0dad48aede914cdaad2d6913811a758a7811c472d1fea98985ee728d88964694b8a0dc9c6c53b6a2592d00d85514c59c3ec81f7a7269bb279cf83a1d31776e604bede967d329eb6d0b25a90950e9c4456cf32fce491598e714b2c218a8e2eb0b87d364cf3be10cab1e7598242056b522df821262e519351238846c5592999218b193c6d96943b14f1c72831858f1a4aa27bf2c2b527 +e393d25155b106287c7cf12c7d5b17ffefd3138bba816730c31339b84e91bdecd0efd9ca153f6f33961e2c1a10a15683a54aef29589019bc7471943b46317847b5321cb6733381aa48cdda97befe22983647098aba5df7d5575bcca5219ae97aab70ffe07ea759cb96bc23959d035709a7792029d96cb009632f7b6b5af71132d614e7b112d8398e4b84afb2ee2bc53de18c3da9f17b0f71b6d14f01cac46a0fb762c2d13770c82aed67c22c137e54a26516051c0a0d2c2b012722358ccbceb155481138fa6e153e1e1578f58e4fdc91f9d2da3be794e37a9273dc3cc6b48995de2fe879811359d96b640cee3bb3db3c07cb5f1b3533eecb6cc5eecaae590d37 +d813fcd36e0aa328c558133dc1da631117e815773ded776bad5333db0ae14d0fcf3ddffe97a7f9d5ffe528370ac6e55d8d589a48f2bba139082ec3a5a219a435601dbcbacde6e7ebdce1397a24c33263604888ff738c18b095b2a7cd72e2e3308fea84b04d6b2b7b4942336822ea74b2cab2d4e19f19df641187d0dc33fbdbe9f15e6f80251a7cb98185e40fd25450012154fe5570d6dbc3b6c4354b1257a8e49d10499aa16f68d4b0f6a5c4a18b7efada1f640a207c5742f64539d0198e0744a6633b4662cc06d05fb888863148c1e1b6801eee35f11744c1fc3e4ff164ac56370dcae56b9f990ebcb467afa3db6e1a3e6ad0c3f461d3d7c85e63f203fd59bf +e9633bc5c226b717a0158e0c52c2cd213ba2cce4701f148676b5eed11ccdda7febf6cf93de1f3f82a58f539d094c3c76f91c4ba8bb709b153d9160d6c499cb9a01a56c749378fb1d48622cd41a1b80d800a243e4c97197b5d7670380d89babdee85808322b79a06d22a111e8d3755776a83909b7964d0db818808075b3cbca81c2662b01e1c1c80ab8a3e9ca67291445a6d7e3410ec596e23757341fce32d320a9307c466a10174d8e1aedef7fe693cdf5e91a961bd020a6648371d4a992f3db0d2a87995382e47c75499c1f4ca85387b0f3e3162728680cd3d8afe7c4a5ded2f0dd5743347f012a5e137b0d5671bd68e97d7e6d80dab56c49ae9da98f9c8a8f +f35d95800126d8643877db93f483fd011c353e68830e9d960ff0a5a994d05b58832baa5cf1016e2cd89dbc0dbe6b1ab4be88389c0b980e8c89f788bb7c54327d4fd2e5dda50755059007a248d8313ea081e47a8480ff84730745110b9d05c18dc0466f8612e8a2dbd7ee760e9732a90ec9f9bd7111174687caf84f3384e574bc4036a061f9f4449a2d969310121fc0c8f69d37d3eef803d6cbb6c7b77602f3249a8717a5ce15de8451aa2b4c65318acf1af01165beb9f9d24b0e82dadcf65e22ad113a97e7d47365bfcd99773b4b740a1c51bdf20cb92930aa4bbe6ebf2432e8eee7ef7d231c3e04c9486d66cde05cdf12d9825797146f9816b72baca73d38f7 +d571322a1696b17da997e5d1de427e81a14401b485ece6c72596cc862a8c7139a280bb51959e816b1b054db436d69f95f2c24b04c8f90fa2482b106be20136efb33256edc46c3570535c46f00b95758ec30a374a617e8ded4c6e384170d887431a8d563bb3aab6314f5a69c7b31e6720ef613066c1e682066450c6137cbf2fae52022831ff412585fe7ccd41ed0b81b6509878533e55eef0d48786f65521777419847d37c2099e91ef8a7363a4dd104d240c691b6a348bae87f393981bafd12bafb338d15c380893d5fc36e595db3f476bd803fe3bef5829dbdec0097a7399ae770847a306b0e23fccb3adc472b29e41ecc8ff131981649d8a2c9bb91c37d76f +da2204dc3cd6a49e773867dc1d57f2884cf01c5847f7c32de325b5bfab2106499716f3c1b5df75a4fc59dc042ca7ce2cd6702439f2c6a320698678f23f237452eaef322ea531efd4ff705b04432ff32f686c74cd26d7eb05536d53d3ffca175e72753b73a3b650855aee9b5c174d65c599b5747d7c6a952bb48ff4384b0eaf2ef20ab2a645074384bf1daabf573aead480c62a02ff99c77ccce9cdd4499d5aad9ebce7b702bee0c9ed91827ead8ca3f5af4a4cc4195520525f064a665e10d0d82baa22ddd7cc3e83d1b01ce34c7f8af63cc86bf861557771b7682906a0e5f0285816506753913be738f1b356778dab31cc0d0197008a30f3aa2b366bbf91c76f +e616820e96f6fa505bdc1afd2aa8f11eb8ce7f419e829e2644b6a65ba67cfc26616875b5d790ebba155b1dddafbb2c3b21a594fcbe6ecbedeebd3384868d4c825acc6630dbe79af0196ce7cd5784dd96a1bba3a426b78a47e89deca0bc2591cc11eb74d7dc58247c153c01ccb71058a2daee81dcce038e287e78ea2cc2cc9321227fc2e18bcf05bf3624e509eb4af8b888f796d69ec7be853b29903b443ce3d6b5955166f2acd8b7e69175c04126c44023c7574786b806d07c9fdd7feb897adc0ae90127b6357a7f6aee927371194ada2556a7a11983e93c0969db1131bc9094b6d8ba962dce5ecc0bed2b1d6341226160f497650c54a16352fde0245edfd2cf +c4e8129e1900d2e6cad4c33995688778c04a5745a1cdabedc980fc5141505da2e4108d2b825706a46e40b05a525de70e338b79bef3987bbadd6d1bced05cbe51abe312ab533f892bbaaf8ceda7901322a2f146772044fc6e51064cbbfa3ec19fe97b1728b6f518a49d77e3bb6675b0c158b49799c56410a921badaee8730589dcde7a1f04f0f8b4f3f0ebc3ac558b2f3f0ca00b21c5e876d4f2aa12aafb73a4c5b8967398193e95ff719ded37dcb0ce06013a4aa7bb0f5d5759cc973115cec249444a5a45026c988fa399ed2566a790fcbf0db2ef2701a9d581153276ff6952eceb661cb72e463244005443c2f42677942932b699e64505a52da04d2b57da80f +e0893afef4da8b392ea2425e8c56af74a2a46ce3b5db0a2d2af56c8d09c71c99d81a56ae1a5cd40231f0c7e7f0dcf9de0bbb9d3081e933e325da8ca33fb1c73a64d015cea5270ece0bb6749890053ed12b1174ba78d0115e2477071b14c9d6ac3cedf33cb4a6dc76c6adb8e4c0d44b40c3eb1c31f3a59d48eb0677c16894524f47544c4b56c19bcbe732295ce68ca7231c7e5cad95b7dfaa204cb64f44825eb8aff7b8390c58e87adaaf668434c220983b92896a2d3cdcb93c68547d63d75d6adadec2569020d8020a666b4868550f9edc113e3f420a5266877948117203203bb7fdf38c420441f85cea7adf886a5051190736348e0591215a35987f1981f22f +dc16e9e1db29c86a40ee0a9f9cce04b4ae7ec5122c422a8ad0335156795e950f9f5f528127752ab23de62df3123ce1d7f7d8a932a439ce94d8725c7a45dc79a67b6395d596025522d4086b052c95a42e1ca3c9186d66afafa361141a55893d827b3886272aef5767da17a6a7a64ba888a1aeb42300da5bbd66f98053fa0f50b0f070e7e334f6873e6ce44145741534a63a2f7431348f82263375c25947e44304b8c9a0877e16bb75c62d7f3b144e9b601030ef64424cd1ad262eee0ae52708dad5a84cfdcc40e75fbb2e655f41eccf09d8061749b6af696361d60c9f1cf514e542debcd7c92715a9be0081a38ad8ec3c48d8bede2d9fd867058c6de707884d3f +fc5106f356bb0a194ffa5583574696d4c3a221fde966b2ff5118649a7bffa266c69eea8c2d5f3df0c18bb3519e2fe1fbc43cb854a2dd39da1c31fe0725928bcee971a5ac67456e383fcf72224b5ce9dc61499e4d179d61984c99b5d4c09c39d686c2cf13fb067bf00b232a2432a5ad80ed0067a71edf847010a16673f6479161df12df5920d314258dc365ec0056bda668b1923f0bf983f94575844f145e543a13ff57779348a363455f2c60726a43d185a2d7b756b272e72b712de07292b19c65e8c0c87a461992cab95b4fc7950eadc2f0ebab09f361b6d5f9dc8d2009d8e4401535cd3261372bc275afbc0570a49766fc507ebdfb35cb9756881688f5feff +fee700901c10aba0f98bf5242d67166b154f6ab761f84e80a4a53e1e6322f473dbf897e9a6631346ea19fd3755e495c8eef787a28a3c395ceed321f7079ec529f6bbfc108ef2b916f5481bbf8c2f8bc0ea14a39bf4db836e5f8a07589a99eb1d764318431cae3aca2456fa0b709c19bd7878a5c2eb4aa1aed9ec56217668a705fd5a97ce1b5663d45874a78f09a8ca35e4c4d098600bcf5dbcdf130d7d38bb81f6a1a6c22c623dacb3ddd316d61493bc31185a8265cae64632dd8fa278be7ca34cd1d2d9fdc62b2d932e00db85d3497d56a8483a029d89e944f70664f538c3f6534825908d0c08839daf4aa9cc417204d9a0925c67c09f8011dbe28e48d37c87 +e3d8b90a93a4d0b302eed9a18d466a814a2b4ad568f2dfe87dcee4083999f1a835ee4047dc78d0dcc1a26b820bf7ea8246dd5a895c24cbda9c4f66ec238f50b58404f0d039130990db03f29005b95d08fdceffe3736868290794fd2960444462abdf17dd33b0472e33e2d0a81b7d4c3aaa771182528393c9b0baf0c2bcd3176f0114a4ff05646a46aec1658e2a9958349a3f62dc20b50f41f3f4219112d7ac23b19c9711c509f72ad874b9bb8ddf3b59b8288e896b277c0e97fa81ca680899cd2b24d407d39db2386503cc52c66c9c2187563b97de7b6d5ce12c0bb533768070298ae70dfd2f8f3ee6dbd49ffb3b43ef119464901f4c5e11bf7f247e797ed577 +e343e9cb85967a3d4241cbd58c881c36adcbeb421f514b3aea38739f4d7cab3708233bf8a37877082989445620dfab62f53ce89e545d1d534ff4f8b8a60509395b3108cb8c483ee86fa9a50566c371ddf846b698a1551a1df124d257138eb9403017efc05e3b208b73c9f6569d6adc34db479646ac640048d1f6e3499a755ad3f05ef2d73c2333023bee6315b34a79fd7fb0741fcac2d94de6a15125fcdc22a313d39d46383c55088c9dd4566f8a68db55723e7ef304e7223782969403b31af6b16102bce2c4e93090c0eb254788008e360ce94dcc4af60f722431899154cebbf8fdf7adb270979c1412c465bf67df4a541d1bf6e0560a0e45cbdd9aa1981c17 +f87bde57bd2e1b36d9d2f4dfb1d7a1147a3c8b3fcc2457928235beb9b44eac080a7df092b492502397f5c6e2d509362334979de2c052a885a31c383ae67105b913275ea04e8c72f992e6e10010dbde4ca1265f5795132519dbc3576e5a19f6c018951b0de709bb6cbeca4ef1625cabf533c5ce5ce320beb16d55611b1d6840bae8396a2a4c7a5198340ddfbf4181214e7da34185a66a18ff6d07644b80e81b6f019c1d7b0358f55dd46e84ad8ffcd62d30386393cd4429591f30f8b6debc04d9abdf13698f4dbeea9b09b610687b87abd71a9f7e501c2e2f684a5a57b41402b256cefb781fda5b4e860d71b4c9cde9c009ba64bf26553d86689de5e85361a817 +df7e58c265012382f8f231e68351de2429b9d028c5b723c90f138a759f37ed4ce6a0663a8816c106568ec1e77b5ba2bb01ab0e53794d92dc205054e54123a93ebfa4450ab0b823d8e41804417e3946dc98f30fc6f7d9491aeae855fff5f710fbde0527f8cbb1362f9493868dc91fa8cc9c01bd9eb9c3ef15bacc9dd5742aeef3883d52ff7fab57da8b7f9816612a78e4d0127c9b045bd3932396de3e06f3d4a69ae442c66a35316bf44f1afc632b21eef2607459278c2ab921127b82397bb4773e681a85dfc97d7be03adc4f66791f52675417886219f5e6011d6efd0e0bcd70ed5e5a176de4edc1abd6b7c0a515d170ae42c053c2ac1ca64f00044f0f3547df +f004a893675fb1cd06a7a260236c8070590dc771d1ceedf7e1d491b9056ae249f0d7eb607448f900499f9313ab16e82570939174ca0c6aa90c60706031fb6f69ea7e551b2d161b86731f3e29b3adb7e635c1cc897fc9361236a6c0dbc27a5666f1b7d8437e13214374853141a7c8f1ef6deaf0be490d6df99cec00af292d72a459bcbf1c583565913d6198ef3cd767f64f40e3f39fa66845a6933ed311d044cd09911637a05e5ff06eaa4191ba64b0ad0fe9ee358ae1e9683eb091cee310f9fc42ea4d0a641459005955f340b5afe1298061cdbdf7dfcc6e29da272c1caf475b360f207df9f1c1b034dab01734983c59c57db3f63b343b41bb623e4592dd057f +fc962a33257eff84894e33466099599de152f96e9f918ac4f8c947a9ffe107e6f2ed85430af665ec9110ef7500b5101273c907a1632ba571348b432d3a735899f29cd4af881eb81095c14d64aa3e2534c853b783cf721bc6e774d31b27228e279ae909413b2cb0ed9770398fcf04a1f3da57efc5649a4a234533c9e930c194901573bcc616643471ea029bd44027140e70258dde5a210a7e62e630441814aa5f96a01998a0a695f803d7abdee035ff5c6889d4629b9da77e80d42ce77f494981ec91c67901e31160d7703aebbfa91c7d51f99984af5dba250211504f18b59f39da745c3793195e85ccbdb7609ed645ae83dd90107571ba4d34063eac8c5a4947 +dc7bee586153987df10940719a39e1bcbf82cfa98ab3f48ff957159d862ae0dd115f83c7082c568d91d1dbd89c28739d475541fb9009aefcd5c1a6549aa97ef2085f1c252bc97024d3382ae30b4a1ceac82956bb2e983f7788506fa60c5be9b943a728db44f77d5975b3eff620d91c6f70b42f4dabfba80940c2dee584d3b4c616d5d66d869ae50cb2ab50e4780b648abaf2f7e3832731049f88e634b514db3f2b291e8e7f7ff0b6971016610c568e67aa626756073ec4bd07fa820f9807f25e34971a58f934bfa772e485d36c913c1d2bc4360f2bd44f92e0f031bf82cde2cdfec9c0c62509af5ad597c92d4e659ac97475790a12b7a2926690b09267739cd7 +ddd2e54b13120974c65059e18fd615d5712f3fc10c49ddcc263d03ae4b063126935b291f7f82840c84eac3a55163fef34f79c15ed45b46483f9f34febbdc6d5022fb315320d0c27c5e833dbacd57ea5a168601abdd8c3e35932990b5fc988330f2fd892d21c42ad3ccef6ecdbc59f324772a7084a5277e15f4ec1646ca3f3720e8b1930fb6aec9b53fa2cef2ae109171427f370566d20e317990bc0bcf6ec6f042d2ce7e91d2b2fd3353e52f2b28bf9afb7fe0cf5c7b6e0eff3009a7fb3197c3e55dc0727a7c37e8164188965172d103afbc81211141738e63489e653d8127b00558b0a9e3ba401b41fdb4da3ad095b97847e34d0dd8070f7fc164ccd5aaa17f +e59b2273839e50f800b6803eebf44ed3ead62ef4b7cf78cd555028065d94a4d6ba361339f012eb3896e9060104ad93099b44a74fa385eada160e51c6c101aaff22cab82ded61bb6152a8f34173206b517bfef2e73093d9ac70a3b4f4a2c1463948d69dca121d126689579dc28d34ec71c404e5b4c1aecad3acca63aea920a6ff3c54eb99ae932f9e905726a327e9a4c81b3adfc266f291fdbabea665b2c46f50c90d5db4c89fe34d2f0070fe0684dc2b60ad9785df02b9b1fd5ab5eb940680c3ec88cefc123e2ce2e7248cb70111011c368b39afeaf60e3eb39bb614e4e20f0220d3580af43c2c44b9dfcce27123ffa59420024c7e8ed367d9876a9cc6c2a7bf +ea396f168e514cc617e9f15bd9c5300f33122f39c59c51745d78e0126465fc40e05173b8f59a6fa9db064cfb4df8e2ed1aa7e8c337dc725cda28f26149b6ded934b061791a2540bf162fc3956034b19812fb7ae69f27296f21d6327c73154937b4c1d7d2af747dff3cd6ec2ef4418898c983fb01fb8b357ad6db45f44995e378a0597f7ad25ea837f171a1f7e2d2207a1814e081a36f43cd54f92d15755c5700f6d6b68f70d35d97f1e91fc6f40e7f204232aa96e6c2b78ec2dc2eee63d5bb2c86d10280b70a34d225a5753f8739e99ae121db6226c63a7016c0596a5a6ebab671b5d60169df40bc9c87e24929912ee611b8d2fb0b7fd9f85199603f1a78b4a7 +dc324fe70f62901f82694d4d3eb40af6d5436313a3e58ca3d88ed89a3dd775367bef303889c71e4093b42be29047571c2d6d94f1dff29ba4142e00ef5b26c606105650c403097c7f20f181eb7949ba02f3b77a7f28a449d4989b5e8e2651fd1ca6a4eb1d543d137e834793919dd22d934e05ce997250b2c09f11eb2232faafdad1820cf4ec5699e05f52fed868e23ffd1eb6ff252ece52d375c6ca249276d633385e0a40f334c74fef11528425d3be9c4285edc07ae6729ee94ee703e163ba9ec1d6d3ebfff140bfaac8c5b8297f2a161808786064632d5d1c782079fb07f738560122772717f6d5615f4267aa3ceb0c9ddb4ec335dc4bea3084f2f95986fc7f +fe61575e35593401506c2a8cc6586efffd924bad1f0587fb9a144b0d59f365e15a3ff98f56fd7a9c98adb7341050368ab93b239bf7177be18295a234fcd631c15c742c71d972cc218f39fa02636410551593f591e68ffd3c2c0e6d884613dabd2097cc8031267b41fae1b05283730e746bafe7c18bcd5f0d885d73ce38a73d5a6d31ca1df1173871f4a1fe46012c0fba627df6cd2a1267a07b72f6bd79cd6a5887a20f286110343a0af8c244c7a722ad7ab0d45dbd3d69d6f54b32f6bd314940fd0aa99cf8023136c08f0a4ba2f50171033e128cd99a31f55e6ece0ad24aefc8925a306bfab839083d4ea65fa1621c2debaf43204ca526f2e01832d3d52b8f7f +f00c2402d0daa46b1fbd50545c70b70889811675f955856f8ef07eb5be1455ab1000453aab8f1145c8d5fc260a2f76bdb169475bdaeb2e209d311835a5060393e82a72c31192a8ed9b7f3a6916fcc5f74949b8ab3651239a4c2997766eb737bc893c06583477088bf145ab6c8a6d2730370a190a63aaa0bbae0221509571e52b483a29a92ee23de979b2a2428eaa7aea321a725b8e4053e93adcb9def2dcac955f704c27f271b4ff56613ac1f1f47db6086c479f5ef6520c56e86ae4cc710ae3c8d003bad663e630c9abeb2b72f4aa31a7e62e8d70a1c15dd0680da381f6df60cb6fd05d9ef73a107580497327d7362cccc5fe2ddd29a01990b8aec749c64017 +e069ea63646f2183f092ef947d6ff03ded527bc9eebeb85e411ca668c5887996bfb2a9e6c913358ea9c0d99d60bcab9dbf6522a96e1aa647a521b87e6cba7f969b7c4670cdf2779365de42d9538108bf0e31cc27beb300625e4abed6f60986b943ad2197fefd691bd214a6a0d338e934a647a67ed5ceefd354f7c61c7893d3f4d8c1e387e0f6611457134436c029b204a58dd6e3fc30dd29d4bf07493f09fcddbb8e242d6913cca91ee80952e464555abfaffdb2134d284ce40fdce66f30591b61c4528b29c3b36a96b876df0a40f340532a9bf7ba40a318acc497ae8ac4abe2284580059f334c72ff6c7ab4e24cd7345565c9d8ad378e4f74e3f185b586d9c7 +c58cd2c7c8b85198f46ed7b1d389c5a728cd7133e6174e9e8fd00242a95e0ac896f14b08e6e45894d18a06724c30ddfccec1390b3edffe13681333b683e5f1ca867f9b4ea90b6b6c5bbd2c17ea4ba968151aa2293c803bc97ab308546d84de2c6ee3ff5742f2027ce2ddd6b59b9db114861ca005fad7cbb397cffb6a3a48a2a4542cb24ca3a07a028846c28d306742fd55208545de266f4dff519beafef0bb6385b8cd3d2605fa1ae2752bf6ae2faa5bdf6d4d86924f7a30b189125ec603211fef4c7efc49ab7ecdbf82d4710d965dbbc5f1b6caf162adc57cd18b28321c17abce1624d2dc4672426923407347acbde7e17505a30e9b5317876639c4bd1074c7 +e5487b75f6346aa043bdcce6819a42c2f6371519ff3b2e298586c551a672da108a0e781345a3fb698d536f27554f32d59a577dadeb78917decfb5a75a7ee4181b74aea1e247295a415ed29707fd45f1c30e0162e84420d2a874afe2c74a37c485e2f64d2c6d7bde0160969aa59c7cc1ea329d872113dbbb6dec712343b2462ed1f9b71e9b3d9aedb4688d43c08e18de28fe069623a4854fdb3da8ea58e6f16780a19b845e615499eb67c42d6c59606b5db6a2758ed8bce5694eea2d6755a2a1103bf722a3753c2b94d38e7d9293b802631632ce7f16685e43b6e97588e929a83c4560f914008e859b4e5c79edfb68f04fbc1bf27a400b54c9d8b6d25a7fe1467 +d88e59536ae6a30d4fb73a78e979efc3117aa055f711980f71db5558e24676632dce9ed74666eb8e0c2cbd48d9658e7266b5673d2baa0d481ae65385a62b7b00b4a5fea5bb7bb633aa893ce2bbefb392b8edb74173985d71baa63bca20f4d163a995704759a2e3a691d3bc169f19add482350dbca24b988b946bc20bea161fff68a0c1cc24bb0b5dbfa597b7b1b52968ff310c854957765c5aaaf661aa8a6a36e0ce3dbbee92e5ba8e74e356132131e6f47ba866c5dc67396b0979bee1fd48129619670e38a00373701aebc1bbd8a71aad50018716795b2a863abd2ed1bf3ba852e4abbbd5aacccab3d6c1e21488dbcc0822ae005fa8e7b393b719d9f93c0317 +c64bb5358d9d5703cd42d765ce5d9b415835064679aeb9afa598cc64aad4ea88ae5e73a8b81db3a2636c4b539c9ad09d6429884a5776d3f161eb956f7ac058d46893ae662833ef11b74e151c0aa7654d2ad53a818faed37bdceedc4a8195e64dd4779c2c57a4127f2adbe02c5a77086bcf16354ce0945a69adacc28beaf57e98a3b8211d40fed6052501792ec2a2e0c3fe89798e118525cded237c0283973ed203f1e15de782bdc7f31d77c25e13b3c7d4e4d4f54acb06655349428d9f20174303ba5e0417bf1a86e52197e588ff80519ddf73e4a3c58ff54e389c437b833185bdde63be1c4e47a31abf8c99f1d36a254d375d7420924f64e0dff9cb2a3c33f7 +ea3d62dfe4f47dc0b3263af72995dcaf529e40ace364b725f92d70c8093f4caf47850b4c0d744de80828fe7ad585db8ea418da7b88c72e121694d34f3ec19a92f4d6c794b571caf3014d179ce51f79eb7f6de813853de1e7d21f8e27233d17a32d7df483845078cc5c7fe3f2a1ee56c530f85097c49bc55726bc9e364c67c7e933499b8b2aecac90be5f62769326f5a4f060f40543c2c0f44177f325148b888ef6a684858a29e54c9adae1ccbf8eac2115fcb16b8eee336205056df8c7194c3ff5ab576c4056c98463a1fefd4a63b83f84d6b27af4b661b1bee938d6a3121cb4ea39fa86192cdd353cd3ed27024e48d5185a5f63fbce9d97608084426dbda527 +eafc371fa5c31304e114bcd0894fe174648e627474ec40b645c1b802197876e266029df47476a7ee705a70f1f2b62eadcc6adca5b401308886cd1773eaa905ea56445571b3a644befb9e609c61a1f24478d98bb27fa037ad107a77eafc01a5dcb776319f18763caa5addc49124e113136a5d79c75bec070df470162d258325a7dcc3f5c4a7623ff50db59e68d28f01940541d6c4233ca6ff0ad6fb93a8048ad684dca3602acb3786afe6b8749bf100fb2c03c8967fda330122347f85db5ba1e4145de1994669d852338da21d99a4b860bcca1b85055e901e80b7561cd191341fc79ee5b38d59d355b5ac83b8f3d1e5ada081f5a48805b2ea4c7a3726f9f194b7 +dc1b142f70c11af791f8d5c65d0b2b14d8c2bf56459b9fbf5323f8fe36a30a4857f464a051416961afeadc895d7074b5b8efef9332ed2fd31a0a340aabbe4b40f8ca625c18ef24cf80edfa0af4627f4fd284e011eb5e6b3b6ca2d2cba09fe39d43526716556bdd99d9dc58b35e08b81cb88d427c33267ba09bceca5a3769cd1631a53ddb323ba557bfe02ad35a3541804546d142b02936eb7d2c82cb67472e2852073accf694a28b466d83bc02466c2b5d13c1c624dc3f922b85517ae6482a86bc81f708fab7177b234d7aab554fc8dd2326b96a4e1cea3ce5cf28b8e7750285f1301f35d141dbb8e61385ff5342dd479a96a5dae993355565c6a195a6a5c49f +f172ad0848c2f4561aa9a7eff911c36c138dfa4adef893ec9e81acc386e6e9f75463da45a6167b90c35c67b2d4453ffe87ca7929ab88997f8e484a277ea4f64bfe3666572cb7843a7f982f0f2ca619a393bceebbbf138278cbf2a4ee1cffd6809c376f1e70ea160b8a03647028441ebad21d72f102e5735c56596ed1ba6c2c78579f26d9e45fa1a73df095e75b51413be883587fdee1e157db7380e6bc7bf27ce4112ec2fab619db819a946a8fc32696e21a4f4160f116699cb598e15f894a260dd342434f88666ad8c8d7e7ef5ae59ecde828f2209d242a57e4fc7f7e50150451551d98c03337da435bbf1dd1c108620b15a03cbdb9f2b85c5d2b77450d9627 +c1eb538bd2a575a874edd19d92e807b473800e92ac4355359168758ef381eead8a7626c453476468d0647c930c7236738d116d975021704b70f585dc757ae8aa9da1ca15af0ac93b125a4be0366e58b747515d5be5013b606667fee05cbe947cf13f8eddb733e8491c3c08c601220b7f1f5eebfa3182a53edd5e9b2fe59ae28a68567f153edc082c907e8bdca614e3d7417a5158510945cdf45a4e1476f8d2ceac0a11602c3ee7acd695587db153f5cab49edf2dd5cdf0d7b503dab8a1621b79342d93cc42685d619bb4a9b541e96e1db73b42b9592506502ada26f73e98bccd6f4328ffed23ad8c2c455f84b6f491878ce3a82fc0915f987512017df5f08ee7 +f769c4ff0264a4e77e414c93792d15af4e6acae366c14992f871670aa613329ab152a522177f33ffc8beeb63bd0e3c9381bc99d787f96562f5ef06406788dbcdbc1ac6ac5421743ee766b61ee7c45a70b55d4c91f45ae1fedf3f9bb174fc52ac54a72a4bca2485907ccb176e5b710664ab43d2e429ac8a4cb3f58dd616edc55e83cf72537e26dfa36fd85416c5b26d92fda4818a7a3e832fe48584d020f806389f71f401262112fa2b343c34dd61eadcaf240c236999d3bb6108f9f264854f7404357f93a231c4b8963714dc75b39300f3c4319889babcdc3f08ab65b2e610c4bbacde0a516567feda999b769643bb18d44c2bd4f91d487f395223f47f565a0f +c02c8d60981fbca2a6b3c0105d8b454e4de057860391c016b0e2d52edee87ee4734cbfefafe8d31fc0d8dae1bc2ea901bc946c31ae42e87b1c06c4e0ea5428d5922431723f0a599a163fdbd3a1efa13f7169a181f40e81ea33a351fbbde07a24534df2c840692d9e6ed2389925355f1c016a076c50b3acbeb04f69b534c4c63e3bd6900826dfe1103166e5bcd5f083daebfe6e7b51324307a829c5b241edaf492a472f2438d0e8d0439a2598dd61ceee68b95bb43b34a2cda6c026e376c36f3aec968705e48a2ddc06d20530aff46fe0f79fa3333fa2bb810efc398e6beb3f7075d6160359597a7c3869fc6d35c08fd4708e5ea9cad3e24cd971e632d4fbbaf7 +de8ed969e99c4b4f9a20a1ff64b3a26863a3abaef12b0071f428d5702c3d3ce7ba28666d8a4f4ec6bc4729dfec9dcfdda4e9e185d8e461e604b66ef1d57e0d52d1f532eee5b961c40222f5d95d63ce73d0b1e8945dcf01b33c9722ec3204f62348780f104545ff62828f727b49d15759a11bd20a001eaa0f9a5aef3559cc11d8b2c6ca2605871109a7861132179b6ee526eb9a4ff461adb36135e71fb8896b8e53cb772f3eabcd1511a9a56fbcc970fc2cb0837c4f813f93f62b6e343ec7673a7d56946d6b351dfe5c25fb81fa639b2f3013f5eee82daeb4291947badde6b1e7be7e2d7b3c6e399b9ef4ce63fd288288630d3f0c01064517b3ec8e022eee299f +ef7e5b31b05f5ce686b2b49e55745de2e1362cc2fed18024c57160ba68ab9cd3d919388dce70e3282c37f22105403117cce153236a6cb76c9c2d318b1c3401725ff57aa5e7c5ccc19a4ba4bb8b04bb937a7599df33b4be41610bd9dc22f1cdc88b0dd56ad7d0a50c689c15dcc6d485f841f0281f476297bbad0657f5abfb73da606a6cd8f406feb25dd45a99253188626129817736849d282e6c80b38c4bcbd0e329334e129823699e9a48d7191e9c22e93e9f9909c56e9b763fd28df355a5b68976f68ab8802d6aef02825e68e193de79eaba4148b7638c3f4ce74ea9dcc6fe5c3588baa5663a44ad1b878278a96b85aeb5e9075014d3870c048b243919e667 +c719ac47401323d4d3dab829289a647019db5e6728a3916af27c672ee7a7f446b83657cf2c5fd94cc2258b686b51af264191fd5c9c0926f37cbd3469694fcb18b97faa084ff795241a9e32d59ba4670651a4f8d8c4cc537fcca2ec223ee38df9896a403c79ef930b540940e60d90ae4ab1680bdc313145a6e8759156657f548ff2d1a70523fdfc71dbbcf2b3957224b7d7e171b75bf04a4b1c6c5f7f7b7abba406d36ed7f1dd0891ba4d77b101dd515fd4f0dc52013f69e76242466a38f6003462b97ffa4a1f9e94081549d25155bce3c3f2bac22efc2e9381a1cf0babd7da8c631959eaceba822de4154f2fc683187a9ee36bac13e24542e9be5abb9c202387 +d7bb02592bb0e433378c7e30ff0b53e38dc7ed15ce2fdfa614e6ff8a695c86da6d548df07e347f56850874d9467d4bcb7c1d24836c55444701337e27fac7d75ad677713c5fa34dcd96c1aba03e316e3ed2ba807ab05acab2286e0110bf792d0b25caa48a050ff83dce1d31b2d7c194834886466b47cbaa05582d779d0407eeb2878f12eb72d29d67d6521e8ded115aa6e6ee2b435917d39fcfb3db0d9f9eafd94bf75b627bb9157b8a9214751b0c86a48732b527a2c0ea4f7b8dca6ecea5e22bba40e190b066e26e9bc1eba62653ad880b55b08a47ad936432609178dcbb465ffcce19be07ae85c2a8fd7d33c6bc6c970cd4ebcd76b277c512067651bd46e9ef +f84477bfe21fadc031c904ee1881daff0276b73af86c8bdb619c8c44085fc4794680c3f598d8835597e2ec08b0bd296bfd9a1e75b3eb1ad166233aa0c1d7266dc717610bd7211bafa92ab350c18eb6c987e70ae7b6de9acc8287524af06512d7fff5397b7f42c2a360091a09059f306c9bc7b6f2f697006a42c0aefdad155bcde814f2e6007224416ae00457d5057518bd573a1dc192a4c7fd8542be553c453b01026d8366523d66ad08cd87e8127e423c5c925e61b388c721bcd643b4a6c76a41f5c1f698062d69c6ee1c9a8912adc0a49677a0e4dad167169cfd9a66fec8ffb4389ea7dcb4c96cc38beeba0e4936ba0f2b25f29f68da3a04a80089e0ccdfaf +de8009a825f8fcc8fa686513aba9c6e768be164b50043841c8a18e91aea2cd5e6cd8870787bfbeb5f3ed183d34764de33009e5ef3a436f90f1a8ca2c11e5d0a21584af9c77937642894b2b2d768fa2f0238b6b6c516bc7465a53cd3f28e0e879e282ad1de9082b6f09e75db5d49100e6fedd5180c1a2f85457824ef8b4149bc3ccb7d5bb3cb7fa391bd0498a649584dcf3784e1b15a62becac34e5e11762b83b7bfb8429b72a7b39c0947aabf42375f83ba05436ae4ee8082ebb9135484a2328a9586e14e638e883fe9a7dc3f1e7a28d25402db56e608f43e7afb8c56a9bc424e6603457301ff13f7dd0f253a655283bcf0b30bd618b676e78b48afabbc7d02f +ee32f468e376eee3b9877f566edd7430afb52bfd665857721e2afc9dd73ffd7162668ab9164ed2b9095f80451c26b3ced89d15b9d5004fceefa1edc2d0911a7f7084baabf2ae81a65bd4b076c0ccfd82da156e5d744cc1eb7c575c9af423d37272ed67712ae97227433832a85195f249688664bdff91f45b378a64c2e420c7aa37c7e025ca28bf3e59b0fd7d0d2fcef1711db1795ce23543074a653fac6c498cdda18c497bc1653d46e37f0175dcf230950526442bf21a24c2d969daa71008978a97d5e170697dc3acf461faa1330839da5f8b2c2d91b5b03caebaa90189e85ffd0c95f2f78c29d810df52140a81366b5b54478114d29fe1b99d94a855fa8607 +f7c4ac85e31b32338aa2424a7e5c07ea35c580116f6e26d0fd12f8459769e58673cc763d2ab2f26cf26df977e7ccf5e1e704534a6da4857dcc2c3c362c324e31652bc2c9ba0a290a7eef5e3cb9f83358ea36670297e8d0993cda74d76fb2e764593a2b579a59c1fe6338a8d3f205f1b9c8d422b7b25a5674e24b21660a4b55535777f4b102370d9bbf44ee06426fcc4e3aa789e33674de7f00f4a4ab85287fddb6d6f195d894baad83775f4b18158aaca1e34b56831089e67d4ca5484920c5cc50ef7a05841983295531da8882b9020b0f98f88fa7a5f9a09a0178924d3aeac702fe33910820a78ba90c767e250a77fa7ee571d6d9eea8e2d984101f9f90818f +db200d5786897ac4cf90b235bb4153d72ace9bd2bc3bc70d5a93d4c2970a3e4cb7715a7881e025b5e725c59c287f4cf63d6a94c74ca387a4f1adfeb54bd798073424a2bafc9c0e515ad482cae14965ee703c59461bbbb571c77683a6a30d330ae6cf51f964bdff52a4ab7fc51224313acc968f4de995ed764ab4f960a8d2641d0669948bedd8696d037162e3d62564c9ef60c75b1a0f6954ba9bb6740196b1919ab595fa78d1374d73417eab3c25c395141f8cd5e978ecee0f8128d839f47e507c7e6768af0c55aa6efaa9dd852f4f012ef906ad0ea78d5d8ccf1bca60309389b4e651e8d0b7e7beb2defa9a336c12fdbba296d53ac15181f442e8e3fd329cef +fd3c11f9b2215759ba2e8e392662aa9aea63361eca28f37ddb5a405bd4f21a356c40137db49a3a38ec07fa923b85a35473f9bb00781c207efbb45a68f0ac3eb6bc9a94b52f79845bbf8e74dab049c65fac624d7f3e94ce307c2c4014dbbf7293b7a7c12029e9fee673ad040e586d7cfbd8d1e02b8630f1784730e925471c3afd0c761c909055e8a0833c9257484543f5114010d9a9b4f1ffc018fa01f3508f795dc780215b262890542ee501895cdc4fcd3f0a395e2c0d7013483e355b9d785da441b8540cdf992dc144e3f76ff437214c74a2cfb400b882dc2e29fbdda456077c7f562b6ebf6b7f6f1c1e301606c35049967cf7dfe89d0bb0913739ba12d7d7 +c3833b3eade882c406befa60d23da1934f4ec1d335d06f2742104a6962605ef31998c37be28a576064bed688520dec089dce283bca898d10e10cc5c4b26fdd7f0316d59a49d5df559243a9e5dd3d60a265c13fdd713c23c72c10cf4a9f99d4f298878aac1c47bd8ec2912b384e7f3040e77031bdf38740a43dae670c7ca238d7b783dee67f99f11de94d1c90ff02971b982a5e8be51388afb04c0a460b2c28bc5c8f68ab7c9ab6d2a619c1eaac28f6456f9a43a7bbc3436810d009171bd78ce539ff11b0b139fd8c0bead428aee4485e407a1528649d788596434ab0856b70f64207eb20cd1326b18438d77ce8e917f2bc79f717427ef66344b5fa09293d909f +d4ebc8e922ba1e3040de6176897d6627fae79bca198147e901f238f81692ca32c5c07e2a79911f34f9ef79b58cdc88db596ec3efb0da455793cdaadc91c2ae22731d55c6b975e9af8a059d4f6c174e714a7b832acd19d7fb7dd4cb0b837c31494bc7dabe959d979e476268aecd6aa51421ffd264bf87b9e2c4ec5ab3d875c722681556f11c76c788ef07319cfd2f138c970f598f4876f15bc2bd310a533427fd412f532419b00b7beb303104afea8a4cbd265c9d4e03a95b50a4e8cd72abcd0ff533cb393aa502ee1fc2d6e641515c53069abc0db91f0250b29146c91889e6584aa4521ce5c0e3cc3720b1e9e8782db5432cdd495c1ed7d2672f290c4c5b055f +df688fee4355d5daa922ea19badd8108fb608ffd34c0ee08174e314110038d04360ad7f27ed493921eaad4745e6a54c3f26923060ec4f64e7c584a9fad6c8c13f5c102b1e9d64f56052d710a10ceda05a2953abf16836b8ff0cfe7ec70b32969d86dd7e2a0c56089000b6bf3c34641eebc3e76d56910129353073ff8c3efde317eaae0a2ab7c6791202e8f8ed176f38c17fb7f034e22eedc4788b89fc0c8cc185fa4d161ae97856dd1a598dbbc6803158274aa045963495690e7c7824f2a1f75a46f4073b811f7a66039d43a3165306c9021d126d173899ce41c61d26f271efcb97c1e28aebe9a0d382572f6529525e875111e4c839a346d7658227f05a63faf +f92e033eca396da6d9575671d8b08d57c83b3f9e4c753cab798371f19d3f1eae9e870724cd6503899e82f2e68784c123d5b876a5afdee9004eb854ca509b6d14367e3a5618804c1149437137334464f160d2cb0dfe83f71c62f9a69a256b44a0c604dd08a1eb92fdd5a71fb5d9ca6be49137d310575678d50e2cf6938a6af2ea7b6ad4993fa0f813c9b3d74f57a6d37ac33d132f15dafdec41ffde3fab1ddc9f8ecad4d6a23d09693a2f5acd34d81bffc5455d7a7a24e9bd789d37a27c3f0b8ab959fbdbf342eee52ea18933485aca4653e12dc32f0ce278cb60be9662df60ebf56ccf071c3ab0c48b376bcee80e5680ae1713a414dd4276a834e361483c1a7f +d77994a0cabe8337ab50f3642ad14abb9320bd3a821c531d5085623e24b46b3fb75e41b9801b1f8ced076d6648b29ecbb49a6b8b55f4a7a7d8f43092dfb412c1b0c57e3f6ae58cacef3479225a0c5b5839ed898b59a7f4a4860f9f10717c770b7a9083ba19a7077361d4a967edd02f79b446e4c0e1ce7b5ed692b37225f60236ba5e31e38d999f4054dcc4485cb147e42e486cbac01a346aaab2ca3b227643149fe3640b1648cef777076349f6a4cf69eb491987fdbe04a9f23655e490b93ea425ab9dfdf11fa229da2aecf671083d44a07e4615d892a3ba5a1fcc1ba9243417c6c4d9ab59945b7f2e5299ae5d2c748ca94ebbbd735db8fd246dc61c3c84dd4f +c9bdaac42d48c110b1ec7b1eaffd4ec4d259884e202437795a70f3a5bc6891e1834cc71f2161676e58063d34cca25f0efde30847e695f175c187c2c28f3b484e932fd220f37a64ee5240f3ef8dfc8a2cbb94da5cec4797af397fe3d6eaae48e317939f887cb139b2b7098827743248146b4046bff765a9ca18089f15616e5814fc975eb37bd41beb555baab4eb739c8d7c2b43361e014e46aa9146cbf5831986e5babd234be439e7c1b36bf348a78a53a681632319775acfead075b482967bfe24c8fd9f5a4dbaf0c3e4443d3dd4047d81dfa29e97f43e0e622f05817302fcf1d0864137dd4c93480f622a48a31f2f91747a2aaa95e2001992328e308cc2bacf +c89f5c4676d7acef22225464f80be9488a50011af9fab43a75b9257e0c0325851fb0d7ca6637f04b17d80735a46c2d6a18e58d77dd1ae545149e359d0758cf9b3063f102ea5bc650d19c74edb80300d75656ec516156b9dd61a53fad146eb54f80c659b5f99930eab995934f067ed610f16e5447489a799510ac41ee9fcb5c05ec90b8c44149f2fc593311fb0406419b3eaa7cd03bcdcb281b6d22b8ea2eff0a0c7e9eea0ac5b2d4e7c2e1516b0fddd4e933931147eba76be1c63a6cae5a3a3296eae1a569a51fe4da81271618e3276cd5f9628e71fe4496ba994df0aca9704ad92043b465895f05654ebb8fdeb543f04cd0834f7ae22b829d1919f52e6d254f +d8d1fe8b591e721f3a4d2a978913bbd2af0e3691968067142ede813a14dcf0e07a60da346c47132918e00d7c285c5225842432efe79098fccdbd14e3c1c29ef6eb719257dc1248dfa204f84cbf749bafdea3b565b00e1ece4824da811eea70c3b4c6fddbc473deca8b0433c43756f542d095ca1776412991108bf0f012991a2dfe2c4d426723c633c087928e5ef94e29084e2a40e8ecb34112a42456264d65e93c2b6e5630d38318ec1c128ebd882c0a80563430265ac619629fc80f5d67bbb3e2941f31b596e86bc2538f0a55442cbd0577908c1c90e969b31745dd6b5861accf72062478d7bfbd33cb880779f8ee4264b789b34157f7bf663543b82d80f627 +e65fae11bcf74fc0f855a86d05f393560744f2cca0c68d211a0f1f93dbb66ca625a67d21cc308a1a54a8f8627dea832ce13c38cead9cbf383073ff375efed155eed510da95f426fb57a91cd25b6097b053d0528af37253db5e5e9405bbe0f69c45433cf08a0228164f8567ff5aadf1b29bf775e6cef2836abda4f2fd7233c61c6a6719e63f7327079d1642654158fc02cc4e14d5479003893905d30c1a366f39274e999c12eb7bac302a72149aeed9dcd0b2a8ea49675c6a7528737c2cd5b60dbae2c0fb3977cb25a13c6b4349092e4a41f173dbfee1b34bb0ed66cfb483be79b58eb7532ede02edcdc2381c03292f2f200d2febe0062cb022ec4fe064b0c107 +c3e77432df444871a9fe9bcd43c46fd9de3f3e6262a2daf005cd54fd7c56f0191798ba07c979d4881931aa8fe723930b1a2316089a75807c4f3f368b93413024898cbfc28671a01e089df34930e7aeaf3ba11234fe10ee624253ec79b85098407b892079a98395e469214199c9333be2e9c34b24301812e339274f3cede21b6d5b44fe071e36919ced01baee3e71e29c6dd31dfab6337bbd6ec3c5764267b31fe60211d52577bc83d909e0cc11dd06a1a7c87ec939cf136c686211fed45f2e7418df21b57d3d5f1e65a17639d8451e7decf389742eb4faab7ed32d4ded764941dd68894850fe857455ab9ffcb6b000c0cd76e5f4ae512f0cd22eedc4f1d53a07 +dd7f4812191b8650a293ea6f6321b501ca73432cfe2176f877a75e6d394e2a40b0fd16cebfa699f138568d7632c0ecb0d777922a281d74489e44a146ce2c356419c85d362e8164bec4e6325873d6359e0cbbc56bba30ed3c24339b5c2a1a51d6777dac6814b8592cda09d9fd848b23c28e5b0f1204d62df8b7c5b5ef1c457e4b8b3baf4f6166ff6d0cd146aa4c20a4d19cfe3081b674aacd31dafc39e5c685a88e42b1d1578f161d441a7cdd3a627b76bcd57aba6a1a4d8a8df7367f2e908f5ca7fe7ca9d789dcd1ba5c03c8cf532c3d78a3db8381ed211b2a68c0aed566361376cbf669df8d7659699700c702e7c0252a654c7126930acce38efd96b100ae87 +c11ae2479a27431dffed5b07302c4be7d3bbf20415feebd0a85d3200a3da6489dcf94e54fc0d2b5c1826910999563a695fdd84025c7785f5f0fa6514b3adc620af4037998108fd766963e2f943f014da47eaa8d71b2d5d8787fed67442d2adde4a27e5ea55c6f2a0cff8c5a1e7130760364f08d8bd99561ba6aa351fa7cdf422a93c765b28c9ce5c90bc4f5f3683b0795774146a2c3319fa2b021c1295ecc8081c1866d5f47b1fb9135a48f6fe8cb4f89d9dcdda415b3c913cb157db26cdc9664ada0227d1794ae098906e74030978f9b0520c8048bcd235188f791435f560fba541acdd867c6420005fdc4c1b6799793dd3bec72b2024a05f97e550ec18b977 +f1eb54aafc7fa6c76f983283e0df4b998c2bc4c7ea3a3ca26d63fa109466268ae36c8cd89e7ef3630bc628c6646945b92025de99d06fd74ce5958c01357d9399ad5275a11bd16221fc3e62f93a756fc70ac056a8cc5f3e724f89aa097ca3af76ec14fff73ed8071db2812af48e7b33110b7e016435917f78e19116a54911b43ddead2847f254aa8eca07759ed0ef0d4c39233b430a78ed93d0855113893159c53038128d077bbddd5cb83938d19e2cad3d0f68a42fd65870bb977eba2b6898c65f934514c945e1388abb49ab0fe266ccb1a93804cb4a283f28b0ca90d4743c5027b7edbbaa2a649859d937b8461ae0a75fae0e9bdca7064893953cc702c09a87 +fc4c22ad506ab9ecde05bbf537e16d39e1456c98c9c52d30abf20cf93da526d595192dbfd77ce942e945deebf62f1d589cfd056a2d9bef65b05b8a63857a37a721a544f9d9f8c05e8f9d1b439a063f8f91709f0ae851445b9e66081010e3cdd08c4fb92c060d583b109abcade0e75cfd957573852986afe4035bca28a86f39935e192c8a39247d95fa75adb0278f8a5f38d55f4faa1204fc27d8bb5cfeffa3f29dc69002f160ca36dac2fecfb249d54d24fca9ded82672880c847e03a304fabb5186b5702b5bab77ea2499bfdfde0293ddf232216ae4c6ab2bfb2beb0033d449244fce56459875963b1d94ddbd827b9c41f1502163d775be6385c8e5cb0fc527 +f65a704e3f02aed4f3aa01b3f57560449177b374ec36e595b57c431dab4ddd78ee322333f62a2b05fed01bd35a2faac26cf97b06450cdf2f7c4ed338c428aa3e501ccb0156d59e9a491f4b202e940da52844835d77892e7ee599886219a422adb5c3c1d64da5dcb751bdd720f850b69bc8790d037765553033ed26d0f767afb926d86ec8f1a4b17c0124b0612022c2ce52dc8f48c27d13ac5e44c94ee0d7df8815e5fdda16a9099246502bf02933d509dc8a6f357b4707d2dea15439642dd12346fa774adcd74fe4942c14c10dbb3c47db5077071dde774ec08a8021c6188c578228ac7d63af4881b2a9c50d779da19302a806ed5e2a4f12d93775a921dc969f +fa3139eb2558770226cb221f86979468bd7db2e6ae6f8b3fe57f7fc932a9ae37efa443eb8fd881b54cc7cd0d31107ee52e9bef849080717fcbd560fb41113c446d6e3cb1ce9448ade5237331da914c574bc7c2d209d08eb848623001d49385fe8c211b05610c8763d8eb9584c80a498b39915a84e22f930654165075c34b6a6723ef1b6a2573fa4fd959125d4d63d2e6e5e7fe65c8b84d9e2885d1d114facfcb57d67114352f99e1eb788147a39f9b07ebb7c7ac5382c38521193dff9f8dda9f3d90a761e68205d3f3c0d550fb2faa47a83eac785db495721540fe5f478e309c3c4084a26069877c0ce86832e39eccf9edfb1ef7c8caafb5f41db524e74f5da7 +d13bd65582bc2beca57c1b84ce1a3e5d37391bfe7b198878abf7b7313d46b5d5130e471d6f23d08e387bc6000a7e9a093f93f238a73a5d969f6f2c2dcb4d53c7f1f1ddf787c4268fb83643f0eaee803cd91f5c80e025a9d5e0c0c2495abd385613f31ea4aeccb4b527ada695aefd352ce6b53d2c7516e3b874a776da3e27a6488f97e7d365254c0793527519b7384ca1dcdcc0032c8cd9aed23b9daae516be3cdec3dc44d1d927ac4fcea8e605fde38bcd65dcd751e94b4a237ee0b830d9f0eba8feaf4d11eae64f92d805989ab6a4a77a6bc84b5f36eed28dcf02437ac9270307cfd8f3c440691278b491924435fde0305ebd8486a57f4e01dc8f29e5534d17 +ee77fbd8e876f1198c4807cb16683601d099eca8a821d21e3764a854daf2ff4840007fdb8aad29efa863eace36556f140f6b4b718dadf9ab35bb7ddc14b06fa8134bc4a7f24cf6829329e984e05abc63869f2a6af718eac0bb7c7bd97949a4c4d0007ac79a076a773c8f1214fe934a7df263b5724c87e142dfd840686332acf1631abc2cf2268565a64fae89b710924f74efdcd978ff2e249c4ae2bd6a469a282c39f8129e9805066411c058dea518b2621bc64b7a36faee152b4416588e50a6cb1b09bee077cc53b5e228bb9584cc20f6a5446519c34b09329ff0dcee3ae8efc936eea53fa6e77934ecda6e31b346fd2374a0b7088b907522f2ab3270e441cf +c6c1e6bf1fe5e4413bb12c590922d2f6d962475e84e9ce18b921a1ade9de209609e5af5a2f1d9dce60f63de7c6182da085c354db3eac2ddaf4a41aa656619d26d8a94ad9d356ed9fb0ab47bb5179373902922ddaf2e73ed0d42bedf0a14c77b964aac1be97cc0ac4a636b154cdfba7dd5cfc82a52fdf338fb86009da1b976179c82a62f705b0be4ffd3ece35ea72d51eecaf81189b384e055f9dc2baa530d1d5dbe93a3f0335b413c644619dcff1ec2c11c426898e032e90f7ab59382ea07d4e23aa3d54b79da58797642d1dd7f8fc3cb048be3e5913508b413bdce7e847426e94537021672e78edbb1cad75d1e8f3bc76aba15fec2d362ceb3b560732222cff +d88d4904241fac87a3a6ed12059f59f5d486fe7fdc054b68869b5338bd5415277c5a7237d4306614f154272ddf0e1579c3789f2273e73acc2949006f53c34cf8d94f1884f02f98b299fffea76db230b9430bc64ff86a5dfd26a2e9b88b8dda9eef65d36ceb68fa8f8d9addc340af57d5593a41c43d24a6d400b00aac77c2f183acc7ae2ff4c540673d51206216d6da5b26f6dc8b80f07b578cfb4aeb8a69b7746fc0c12c6bdc04df7c1833cd9bdab1919047a4ae7ed4676156aff2357c935c39b168345ae59277634c3cde8fa62ef90bf3f96b346125739b777756b1361f48a2a4173de7661ac6731ceb5c4f301b8cd997c9a67d5f9b4afbdc3dd36ac432668f +ca3eab8f23fb2f321d8168e0f533346c6d0eb84c46323d7a23146ee3c989bc2da80008fa581db4ef2dd7434a34f9a183144af84f55a01438e18b8361f1cc909f65a746d4006f9ca41d53369fa52f3bd185f0d9e5cd96a8efceb6ecfad6859ea909ca65d680cdb57a158af6658643984c4611d990d1ece03bb9b9787be9c47d0f84b7e94e1be00023ac10be4585708f6c573198512fd8246c45ed5ddbd3d289a07e3fda3a77ca42cae243a44537bf588c501a067d3897a0b8e9d0b938df2a94cd2e643c8db9e078226f5fe035ddb45d4ef885c99b0c286cc2a734a08319af0a11b4255e0c5766eef496b2b27298f221fedac8ced22d58e0f884b071979b9cc1d7 +c14ddbf98a54d0acef11f0f9609dcea91d65eeb916ae6d5b33d0f03130b068a2e17848331d302595f7d5b5c05d0176b3f3e6b208c9f8293296ac4d32fb8e22c684d68509b2fa40dfa1e69e18751950433a25ed286400d09df46d4a836a7f4b17c3683eed0410e3c2920a4a20cdaea4eae53f94f7e61927ea23c2a7072c864eeb4a6468c5021453623833df2984c43a607ab507fbf1ec8001059f6a609e7f27cb4283197dee888e13c002055d481fb5dfd91f54022debd5b319f36047c85574a4c3fca45a0f7b46508ed31ea5204070dc8bcfcd5f4f8fda90b05262af860547410a870a5e0d1ce9cfb0bf960b86be634c076128dfd776a3158b79649f00d2e19f +e5b569021c785be2add56d504f32c628539eabcf2cea0115a6840c8631e1e6b2964b1b2134aed8235a918dc761361a5e0021c8ab5398a58b5c4ca2f1c50411942c1bcd095d31f11ad8707d891ce69019cd63a3005f8572c16dda70af7a59323ebf9836c49f3e713a41ab27cd7090f21ca40820a7ae3c44e9305e1ac116634c5d982382b6972e3f7cefe3dac2d46f5ef382592619a67dfefa14ffd59596c392cb5f1087102e3d7bbaeabdf05b9e515d5cb50ed797a456d6a768257188874c8fc871344cdcd77fdee70e680ce24b1f60094aff128eaa8b161c3bf0a423cc8438a32a9daabfc076ad17c6e07328f2b7b4372e88dc96cf6c350fb1d043710d0df44f +de4bbb73dce72425184555a717937cfc37a5eb2a60acc5ee67def52aef649a63f994e77c8cf79d353cca472945cb1810f3c110ad476a0a5a62cb951140b301c668624e4ef4b8ebea214a68b915304a2ad89bb039bbd6294bc6d7fb8c235b47085275e013ae9d71f9cdd41682e3a91d5a8c0b49c5108ca0c4789b59ededbaa5d1274ae8b24ae4aea2bc1a2992b4ad1994df8cab76cc307118efb131eacf87f7a084db81ac03c884f7287f0d605e1ca21564eaaeaead4f8636d119b3f8cd940ca2df2485fc47aabc60a42ff51480b2e536bfca6e373bc0338a79f6c4aa9a5277bd8accfd3662a4d6b6a93de0090af45bca35591e35ca4a2a2ca719bbbf9d5fc4b7 +dbb2e3ab395e6740a34fa12fcae5fe114652c0082a85bb3fc3d9ba67bb0aa32cbfe21c4e432320bcfff138816237a41c5e8c78d548fa9ed02b2678821366b4286f8c294c965ae029e7381b63fe96ff4c476aea1724412aa133f71b077ccf7e3d54986ee8e206def94c999f41f649714b4825d122a78d82296bdac12be1b68fda6aface7ff55c5fcfe58d496e0d736e91176e7923b4e0cffe168f099b009537ecfbe59c72e7a127f7a5f5243d0e6fc947baddb88d090cf4b0aef2ca8cb54b0773640336a065c568087bfd4787aba10d432fe40f52fba74f58a242512c59a70093245f03cb092703f5d6b2b2c92c96dbeb6d040663457855b5a4a5c60e0395d6cf +ed2b7d8150964b55e0121caee8b0d66384de879d6bb112991ad1b782d88b8b18778f7701e27497a41e241cf33a09af79eb7602b350c486f62768ded021b3acd4474c156b215a27dcd13e34fda791315a4213c193164e05101716d4314a889b949759b0d2eed665fbd6046a178673f23472c0bdaf525e6d426ad196007a1a3b990126fe9beda96d7f93a5a8fb9281d1e6f58c25178e87a0796355d098664070d58644044a1832915a286502e20946c91a10d2fc697f3ed33f9540322568c74d145b0fececd30b385d7a91b026dbf06e7c10b7ad15d82f0a7acc8fa2b6b49159d459a9c3d39d7ea722b2ebab3ccc882363920225749a86087e54b1d6be09c6e747 +d972c771a8614d0b7bf7c9b5fe1334544676266ea6437ac0521fa4cf0932928c9831f1b1c89d6aa22045dbca2dd588817393f2be6ec4105865919b9f5f9609e654f265fe69901327a752eab726dfdf3b01712e17ac42d1f0a909c243e86119dbf4b2f4f262fa822e98c438445ca3264475e39d8cee6a5b557885d80f9797eb9856ed6efdfe762f387801e1b808f79a67be9a42e43671c860c7d609baace6cf973e6a4be0a666bf0f7bba82015811c97a90f866e9eb54d50a531c2d77dd29df87d0e97bb8c94ef77f8fc15c3fe6c0ba03fcf9df69e5d64f3efb3480da99ead685bc98ee1ddbc9ff04febd6a950190c1cbba284d98d92213fa4b87c51e5524609f +f573b5f59b2e39ff961a8c3d2b575b1e96a7c4c3e447b4c909e4bb02f10497c73bd9c6ebd9ff6d9ce2054faf5f6ace4d09619bed972b21b688cdbd1f55d4d0d8e0767816c1a5077af7023185692514d16776d55407a86f294fab07bd7b826eddf7a3bfc628131430324ea24f9ad0ea76c6845cf18ee4f027741dc32e43bf11dcbbd8f6e05a25e9eb95bc2f70e42105618fa5aded8ab2d8da3434e082ebe27e3a2b537f0053169a9b21ba1b06dd3b0ca36eabe6e4563c7cf886e7a0be477b73c9a26cb0fbb80c1f1445ff53cb6054228d9243489171adcb8032ba9d44045b7a173f7977be33a61957182389360f27e8984d68bd9d2439be724271740f7c7e75df +e9ef4c73b937ca66a3da231f0755c0f247680924003ff78166b11030eebcbf054a56eb19a7e27efa7c01fa57cab210309cb1f288d2f7b7e977d412b8a966571766c6702a882bb3a8423381217ebd0e1137bcf3cefdca3c795b57abe50f88178bebfcf4617d07436ddab40d1094fefd3353b9d93e7267c81def12d5cb67d6d7319b4c2befdf240a444fff4facff8bbd8039a935574bdae7b3345495daec3fa9e0dd8c74908e73dc1c8ea57cc3d7d45aa411a7033388c7dab81e382e32eeb209a00aadf2563d9bfc079bd4af8edd7c614f3bd3cb329263b2d17c897b4526008f33285288611a3e0ad49c55a6732e08f6cd8b33dfeb9e4653854aa6fdb5edf38507 +f96bb9c195d17bfacc3d84639a191a877ac42485b668b91e3604a5c3ce1800a88e71cee3d8fc2951b08ca1567a5a233dbb6f9db2b2db5c90a620266dd2c62cfc79604d3109c1871c65e1d3f1a71248a624ef5724dd4ce9f6134eaf27800a212bec720a6ea593c64db8c221f8f18202b5823e8a7dc371948bed1a766e8e182960b7c37899f6f2ef6068d4b0f0459c7c05af6190e052619ff09d3c1368fd7f3a44a1a26f40aa1728113ade24b5195ebc64d59983c1ff541a6a315e206821dd02eefdbc4e46c10208f97b9ab3c26cd10331ad1941d89b9423940f085cdd4cb4389a36126f558d69e53d8220996d9117b3e739cf50ca98140c9c92b38ce12ee2c93f +e2f1b823c6d5b4cdcbc64c320a0fb4904dfaee9de80284b621f0bb1427ae7f3aa47b09f0badc8ffd309681aa10a1868c5c3bb6a222d95fa50797202c50833836e6197c5ef3a2caff955df5923c22c0e1ed0e4d9afbd9f8ca83b30b13ae5137ca4326777ed4d005fb5df286a171597db604b4f2d79991a7bb304dcc562608033de600821095da5a8eb502f7cfae8a0bf5690ed8c2b4de4e33effda4b50fc1a1e2c5d494b01e1ff4ef83e9b576388b708f4f50a6bef734f9bc08efc07215dc01b82702b1e2d7a0a41486729d71afc2af8a9d39eb6d0247323a29fa14795fd4188fc4e3a07ecdae4e80d53b65a6163e1ce351adef5ac3fac8515dbae26076830a6f +c113ec2f20e491ab3c5269c896b7bafd33ff258a693850cdc930e3a8620a2ba24b0f3abdb9219b1d5630a95c1d2e2ab6ea963b94467d657a72574d9e9d9fc03ec6be978d57552779c941891767a9e3f0557ab22d40d4c290108f3f44862c7989c5bd6f84c5da822ac224ffaedf7c13dbb338dfa901899ec1d7c493c281c008827e289792a4233342d8b0dc8ff9c130421a53c63c83416be60ebb55425a0c43b4b77f9d20e90a15cf95842403cccf97df42ac02be2367c0fb7a03fc30cf5c5b0dedb4b9ab34d9bf84e6ef500cf2418f5b6a5efd5d1cbaa4638f325f0793968a70b575f8e6d6f24e2d795ec5ee7f496616313c1131d8a29cf9b0fd6d5b50e5d00f +c2dc43108a0a67cfc67707b24a72ef3df0747ff0146f117e91cfa65d98b5c0a9973fbea74282030d82cf9165e137ebac0c4fa3bc89e248d58661df23a65546d7796669da1b89aa51ace5ab1f15ba35f6ac81132836ca3eacbda4110a62cd5bb9cdd922156fc24ede8a9d8cee5d0d3cbf20c5ffdfaf6c8c5fbb86df39c5c13d264dba291ccb215e5e0a650e9ba92788dd203e90c9b60758621d88bee38f961615c1d7b9fb5a4f61fdcb103d8d5964f87c86ca3bc27ba8399cacc1d38cf05ed6e0502174326fdad44bd0f04478446fa885b86cccdbd3a38450912ac6ae7072994efe17063baea0daffa22bebafef9ff6bda743facd3cca33bcee95dfb9fe976c37 +c0a1d5dd4acaa09a5268b9b9b143c19c3091de2b3f061eb5fb37303cb88cde979ecda5aa61de9f222dd934d1dca402597296b247430e8169fb243e0cf253375dd01522e137100d5fa27d7134338331e6f204836c72de5eee2691616ac0f60849533edce22d31362b629a21729aff11a50113532f645a6baba3e527aa9845df21871d97dac9251887ba3a3366ce81ecb83be50cea197b784d4f01accb6e5fc81c3f26c714c5d982e5eaf545f04074c6773ed09abc48e1a2722017787a118bcd1344e602cf4ce0ab7746198915e08b0bf08f30b5b1c4d1ea7e4137f725658aa2b2848a29e83b4bdb17298c84c0bd1a6805dbcc66eb561fc361a5a49f73f5b13dff +ce755748451557f2b2afc8e5b871bcd4ec5cee91df2697a80455b4f2aa704382624e9bebd8710809c152d28192903255172c66b59788b19a79bb148dd925bed0d5fbe2a49df14e0fb8e653c105e8467904e9cd5fcab35ee53801e475cc45e34fe671879f0f32aa3e5eecd48f81c53e8d8fda6bf3812c05e8c22fb283d597f6fa35958251ad93c6c081081b0f894a1fb36624e290e6e282072b655a5168a93cc52061fb0087b89718eb01e175e009b89e8cd713c9df0675fc7251dbf1f366df4849e29fed8a6df226b316f03fdd781f5a59c455e205fd2c1c11acefe456f7cdde535b49a848686988fca60f857d21ad38bf7a2b43fdc746c87321a53406ff2977 +c9e566ceb67e01af331c9b62ffb3be25a1e3d81bfb0a7d7cd02e271ed133209927669e922ba488de1d8e3621061a0568f8a3e764c5ef67daf03a0673135599ad60be36e5ad230c86bae38cf5b0766fe2378ba82aad546d4e6f80df74b4e2cb5060139b76e907eda8209388088d9e4e2234adcc2f7ca1ac69ed6618d1295edfdf0dc466ed65d0c6b440eaede20fc138cc39ab8c46e1363934af845038c2fe4cc622ae523238563fbeebd99dc37e22ee75b5743725909d7b08e561df6e176d356437fcdc8fac149d12c7268300b357a3610551c949aebfce6efa39e61e5dfd5edbfa58ea1eced58ac40647161936c318d74c14ce59dbb7df4a334ccb6fe366d8af +dcc6ec447f0fb66da2e3cf5e3169ffdae39d875158de1ea27f9eb9637e2c1ee6eec94f9ee5c394a87bbf1706150840f719b92514431c5baf9395c01bafb2f39b3469d38fb2a340238ba98804a090ed0d39919492e8edc97414f7b61e15f58af0c356481221ef0bc5dac5ef7259ed33854bfec71f6bf317b38fdad84c3b382fbb062dd40df5f0bc6ae50d8b410ded7f82e09c9c7b30010dcafc56088c3c1e988d5d8c0a80842166bf7ad34af0db07d7d7ef2aa006e4dac7aba4da4038dc02991e530cd419d2e808c3bcefc35bf1a2fb80eb5e2f2b0a91f21ff36f005586e3683ed2f393da5e8951cfa5896a361118bc129882a5d3cf62fbcd0a78dbad24d0c217 +fc191d384e31002044427e609d5e0e0eba8b1935aa0ab596f1f1696cf12a7c27b388f0e19ff3f54c01314562858559936bca7d34e27863ee666fc16848e6a82db143c6914fa81ccd6616259b9dd190538b9427849d179460a36edf9cb67e22da4bd192bc9dd11062b98566d7158684e0653e2641e64f098b1873ab747b4b64119b4d2c5c5f7c23a828b26d24b753af72872533188e795af2ebd0d0d1ab95e54f7c391bf03a0592210a24ba9fcf4635f996af1b8feae072b28c4c5df172352b36830b2b89450c0fff06774daa47464b89e5f850271e3513f72907fb8fac2236101cd399e35a162a1c4015da5c88315fe18c0b07dcf4fd76b32a581a6196e558b7 +c5574893c129bb25ca00c54561cf35fe806b648742f538c60aa9581bb17b8483439c9ef6b64e17da9f8080a35d6bf2b66fc8ad8fdb02fbf297d1bf89ec7601031ab831267b80efcddd19634661455eb70077db2e8b51f5b7a76181fcc6862f464e5f28479c09260e905ab843e8a54ac133a648cd000407f09731009ec5d45c289e5221873cc235925219cd5b0ce1efcd6ed84f9cbe104887ca68ecb5ec59911646017facd10b0e9ec886a89350e3e12403b52067064a4d98708db4da76ff032a79fcf743ecb423051cf97677ee98877bd8aa853c8c0e620cd0e431a8c563b2692f55541609b6189a1ec0149450c1bdf662045139c7ed085eff988835451fc3ef +cf0a3681caadd4f24e99fc21881f36ff3ef0d8b9f4aa0dfebf37bc8a365a4d27bee7ec1f85ac411fc6b9cf6135b7113bedeaa115dea8c006b3a8e1546ecd2148781f30748d77c7170b0cbb7f8881b17cf570bc6f75cf1cf86a7fa268b8e9a352bec1bcae9f05cc828ee63a6b3340455c8aee37535c253ae8ffb2c17933f7e5cb8de5373cd937a379bd18f7cc1895cadc06ce5f0ee535109a4b3d77a3064e099a6f0835bf7f51d2e982235227ff2241081a0cf0754ed7ac3287309dabee73d3664b46c095b04b8b8b951fddcc1502bf85e3666500a07aea86657fd9a582c90675d685de0c01cc221b5a831cdf82a2d6c17289aed0f71f31eca727b8a5f8f7c917 +d7c7acb9a2b0891c780ab3d3ece4aac8350398e8911acf8637feb51a557193ad606f2cc70e692fb3c9f269eab0ebad8c0461673dbbc567e4706a332ff523e0637f3978324db474041a0f6615c58ce3eca2ec67f6fedd8bdb28a320da600d555a7f6ae5f781540c0d735eb3cb3e49046394abdbeb60399937087b323ec3a3c307291f680659709944d365b9448cfffd739372ea6696ac3d44f298acaced5112d1f1159d7d46067a1e06d01cd1277bea51a7b19e25987b1f0bb1e01e6843adfedb0a8259369b99981065629ed30148c6f8fd3be074048f5ceb27af3dfec7d32cae38654e27921c50102ac5e748d904bd21b62539061261ce8fce41bcb114b13717 +ccfa3b73a5ee30068c18665545a742ce498ac93ef86e372c83629721a90adcffbac365e154c02f8d8213d54c04404bfb744ab5a9bb1477d4e61af6906108c8d991860fd360c7ba8e4e4e1409e4506686be21317101431c75b4ea099b2047ac25f13fc2cb42a7b95f6c64258d2af13c8be8c78b62916adb55cb6fe9805ad5d57607fad5f7e24e400472440bae35ff67ea4ee8d9354e612af357a24af8ce55b319f4cf8fefee747a4156b4bac571f9cbcf7849c61f70ab2c50460b02efad52302802a51b93f4b668f5c7d78d7332b24e473b226a6f8f271605d9dd7f887f47fc8d67b453223dd4ebcabaae03a9d82a2613d3ec8a570414763867e319af2a8ab3cf +e71edb2966933bb5fb3727797f42f23e7fa80872239a431b62ce1d666e20b01e227c241b5e5c7cf58870a7a2600fdd4bbbca6ab438c69c8c119a873f4b2a363de08636f573e18158fbeebd67e0ec509cd3bc6e19305bc05cd4ac1c36c9a928f4bd7ebcf05a235aa66684c141d420f7d0adf4b9a04583a8c1ce9b9a460766e6d8d57ce5d8dac77d917f0ac6f5d201d769494f82c55bc5e7224c1756ab30030ef04d6a552ebc5abcb559612d308a1f85d0eb2db7522033cf8359024b51051d0fff946affeaaddb58a038067f845f0718d2922f5defe2b49250b5b250f3bcb01f8da115432a12e9f49e64882a0f97d00f02f2d42d0ebabd83d66722d3db2427b31f +f1a9539a692fba580de7bd04395fab87263fc6cd4843882a5e1196dec579d841b59125748ab295418739bd131680b2904a88f90f6bec3895514e355736f73ce9a92b1024f5418e6f5d4b54976c09a6e602c75180363c089673722cec6764fe688f92942db07f2c9ada9fe2d50e59897e0b9af9451421abb19415ddd94acd50c4b9661f6a0761356c2f9ad6001eebe19866168214792fbd7c93ebf569abd3f2172fed4d5dccbe26633fbe867a13d5fabbd6e966eb6246a20491697c0c15fb0188012a5ce276745dd4e0b450ed329e3c68555c30d1031cb96f4e5207104c05c6d7a193811536c89507f9c48f61042082a478e606028fe6ddf46ebe212e7a2c0c97 +e4e4d55786d878c1e1ad8796b177c4d7db54bf80b0757ebf1aec8399ccd9b0b2f04bef8a92e59c5fd8fabc7bbf673b979dc7d2c0ea3b343f7000aee9739a20f9f0a4294a45801333ae7aab1404e243a8c9981627cca77faf00cc18aa14b4ba4701d60b375fe86184979f74c0746312941093edeb669bd2d1b28db93f698927caffcc06555cfaea121585f67878cd3794aa5394ec357a77c11ddf51267f712bc828ca0b0a8c4c0ccfeb785e01169473effaa254cd1161a6add562ba2e0d0dc4aea22656ee66562c67acd65be55131dd7627c4d06b8d58799c31c264b23d493c06e4da667b7dffc9271a181fb32b29e041c4b3f074eaf6286bb1e0b07948448037 +c232b0a2f2c8f74128f7d754f4e61b422a3695e808d01c427aa8ff251a565c1d2b01f746965689c0a318050a535ad71b7d7ad2008f13bc265a061b371d16fb8e18bc3b90c3e6d6718c593953c6b88ed7c839610768973e6a1e2a3a295ffef7c46570d514cdb65d7f53fc386233301a458d811a0f1e2cb781fe06d2de2d423078127109588be3eb838ac1e79fbab1829ce55d8081fd529f9deaea30e50c626587862f19f361c03ed70a6fd4efef059be0b168dd61b100d2ac4c6f5812ecafc63153edec2e70f1c46f409366c2c24cdec1c27044e71bc55e06983a66b4c290aef11073c08c5f9aba3629fe826e53156af61b8cc810fd1fb28aac7d63f4752f43b7 +f7db90ea3477c789745df6248d16e32860e9019b4d5126c2f0818f3b9e2a414ae7742c6bda3c78dab0d0747fdd258792af5fcb1873e85931ee09f9ee270292e9194044b3448d191b0643a150c00116e66d134ed6289efb99d36a5ace78fafe3bb25a1d5249b4c705ec35afdac3145237e8eeb2582d279cc4b497b3f152d177fa9c6239d82821e19fdcb54d0a4250170a586f54adc1a32f97c95bf0830b147b798f56da92259d22d54032cec9b48380f1cab6b1e6318bb527a6ebd9d039cf8ba361ff0b34edb6a9e7945566bbec2398543883ab13723fd80a1fae2ad70aac6286df7c74bcdb6e40790765cc14a9242a63d3a1fcee4886d8d9d02fb5c3f3bac0af +fac5de573f4b6f7b9bf76add9081aa10c958460a0da42934f4edcfc900be371a03d45557b17a3c0b3d7d7f6bddb73dd0a832f771e88ee03e153c640ca6ec8501fdeb9a38aaea9a568ec341b44c3be5c716b2340ac16162a702704ecce7fd1f47122a45f4b4f8dd4d54c4b133ccf13a94d9736ddeaba9b244f521399ddb389f8aff241c6a5b250a0d671bb6c414913383ea25ea91f2a39adce66ebf7952b08b1dd853f07c26cf46e868c55977c084d15c1852b294559cd2fc7dbc410fc54497b1f56e66867a7b802776f5efb8010bd58bc4e7403dd91d2133c41143055d2d17370919ba88b2bca3327f3be343a2d4094299fa14b3463ddcc827c39009e7a58017 +ef5a2b9af04595233ba078bf412e7620024b0f19312c335ea7b5c391aaab332319e9f65a09429656aa3e7fa9b305c375ffcf8952552defdcb7843e8940af4324dfd6797444f6be89c76c1989a0e31dbe3b303d12a9ba9e0e2bd966aae70172e71a1d408ebadd88db88858be129fddc0f8d9bf90c11422143ddfcda0ef5ee18fa210a58e8792d94e3b23b01e6c0afb2c937f62a0720c4487e553f34a605170c7c6589ca665bbbe8229eca0ca2fdecc0a5be7b34239c756cd24d8503bd10d15ca4f502f1e5d57b523756bee31474b21df920f3bb8b765216b63052d517651f7901a0b59c0fb5559a435dedce92dfc06742394dc37ed61989fa8e8fb31b580e8aef +cac58d72a0a284f1ff6d4beefe189b9a5a88e1d0d0b1b7c7dae3af909678e73cd8d2775d0614b53b8ddc9923da6aa22276e0a535e3191dd228c38dedca250932b9c22147cb9f01bad5f298797a2fc2a7a2bf3fc8726dc9220ff36aecad7501444df514d3e5668a426e4ff0aef8ace5cb954dd81284979053345842c57e4eee2b3c9af3ad4fa9c12f729473d40771bf9a84f9c90079e80e73adedaa59de80966eb716d10f7e60459275c7ae90101b6eb2b34ddda070d6b9850f2b3f0aab6270cecfeba2ca179876a63b181eec70c9557d07a105d47e916719dd8f7235d53b6edb1c278568a818ffd48ee3840568d64d760f7b655368835bc1cc97b6ee208eb4cf +f800e22615491231872cfa3651fd39aa83663cd615142bc9102f95e1fad2b70b5be54ca35e1aa9601170660edfcd1097a8a17bd2e38bc52b4a56d0e341057f547dfa25d26feb74a914048f305267810378997e14b98f636521c51a9817ac7a62694bf97bb2c689033b0567bb06f8c8b98a66957063da666f8c78a808f4550e3befa7f9be9194671f0bc8a7ce40af5871b63b69d8834babe5f35cdce6084239938d10c7e1b3f49dcfb3e6e7174564c7cc04fba10ed91149bd2607dcf563f95c459bafbb78ec4ed4e3576f340efc481575db5017318f2b9224334c04b1c132f51f077d0136cc4d83d76fd4d98ff86bfdb9c61cebca8069c7757e8d134fb5461d7f +d13206382c8414391a97f0da16d4a1d0737e30817f08bb4804f066380d04deee6b60377dcb58fd500a0502b0634ae8b205c1897c395b3ca1123241cede5d92cbedca79bbaeddc95d0ea8e3e672e5422d570da3e33fd6a2d7c758bb0eefd75089f7d39d1b59a64f5ad7b5624412e5a825adef9a7b9c9feb0ec5f1a9c5ffa74b4de559efb881c0ff44841eb0a055eb522ec1855267843d48b2370857ac383a8b85b6d24b72fb5fb963e01be1a8e77d6455a7352557832f67d2f9fabeaa2e5b4549d25e6f84d9b4ad4e304c44f61a197e62bd5fa48374e4a2745d369cea6c52d3c92b30315c552ccf647e5ac0c1946486b0ec3ffcaa8d5ea93554e74c72b1e0c4df +c9cf026402479526c5e059ee894c71875f8714c80b84629ee9c87cbb2cac54667d28e39ef546b9523947ebc5e4ac2f6ccc5c98622881dd2ce6cb34351524f57ec7efbfea987c6dc271ccdf00e092847d6bb8761c52490a724c98fe626157b60198bfb91566f02ebdedc0a5fedfe3d9ae640cc884e3dbb1329b2fa25417d8b31d76854a2c2af825c7807fd1268dcbec5754e491638c65d728ad93dd26fd36d9e3117c3819f7e8946f558403327150412878b03894e9a4b7668476f8fc46fb761b2f65f1aa376ee70825de8af57750a56faa85edc6557137c82db307dd3a00adacb3410e886686687531052b0fc91c9dafca39c5be1fcedc168ac65959612dc4ef +d8243ffea54b735bd6fcc0780afe77f667cb00e8a62644b2b48c6a7de02eaca8862d3969170066113cc82ca154b6529d3f22c2979f23c265a09c4ee44921ee7b94d330ef5a8a16e84bbd9c2cc1e6ec6c08491158b64bb044c3087c4364b6fff3bbaf92444e072099c6788949d73efd3a9cc3feeee798083123e8d7a2a36763020e6f09db65eccafe13891c1b787fd6c4b41da29f49ba23c45aaaa2801bb4f76deccbbbed9ea1f7569a7b96568e04ff844492ddce3c82211775073bf8479d924aee47bf5f5d263b40bda14698d1c66b14440b7c15d9277351851fb1d05b27a11ba7831e5183c4f3be603030cafa050d2555848fe54635421a3aff71ebf181df97 +d7876b8283b580b3b149f14df3ba5fcca15cfc86c0407b46df36253d19c169cc2ac5ca1445e485b8b27f79a66ac9e0ff7f8c6eb015ea7cae68bf10911cb791337f5c16cf05c0d7ef095e8189d755ed0dfb9ee31c6d843f994c348a6c11718e272d16a1794e3473ec89e06f6fe8c060b6cf2e1f00608da869671bd6d153604ac6b83992da8b12248e16aa813de5cfeb20aaa674ad8b6233839507f38edacf348569dcbdd906fbac1b01e1f087abaf3038fce5cf580f507cc7ffe93e1bf52d799dab896e8ac61a4e402386b1f378af224d48ba8295d2533c12e85fb55f54bf1a930f3e3332fb6c8bb251c6125906ac6660335c54b6bde6e42bc62fab3e38703467 +ee1a9fef4ee9cc0802ae3426615a105cea0323316f577890ccfe56e42722b99e98e274d2c9fd58447b023f383a43d0c1d74d468a6c8307a64713d7f11a37cc2ef18f4746e7783f6cb6576be4d455a432be6100e41a56892d1282ff139c635992aefa670bd04c1c5b44a74514485953d8d4bda3f2adc8b8b65d8b62e2f5ce44c2b49186df0c8d686c8091ec22471332a4728343465db0444f5313071a086a9a742829dfb576404819d79dc420bb51f87070c0b31ef4ac0b3578fb385e9b324ce582aef82a6ac4d5719253ae7314dade0f9c201db2c5d11551ea227b8072e5c07be352d79b6d2d6016a53b896c7fde2c81b2554bed62e2fbae0d758a078c4c000f +da8c91799658451ebc95233b3048326167c8cbdcbce3e2d2a13de2906f245f65f517ea3eef7441988c9b24f0a3626ece388490f05254108b7d6e4a9686ff9a9675cea1a908a98585a0d5a6adfeca0fb52439543c5145b468c378f75a8db108a8f78413992cd4b0f7ba14d5fde126a734d9af9810abebffc139844e160c0a455beb6a536a041ed958bc8c7e6418083e6dc02da118805b3f1c4f41dcbda3690fd66206d65000e5be21ff38ab663fba45263d62c791e4f2c64c3d70a143ce1ca5d4f93bfd677c5f9a4a31e0224247f6ed280cbebdc828745a903ba832976e1130613da91e5ed73c8fc84678adecc998f333de312d083ae5ff13cf982bb8e82c40bf +e196e6018178326b326f375c0c2b551aa89a62becbdf06292854c3b25e9868f92ba431f0d772ebe1f082803b6e63fe1c603e792cc814e85c1b6aedffc902c6cc3b2ef75446932b7536ad3d4705038ac0d10dec56994f13cfc7ed47ce8af099abba8249983b12afcf11a21bdaeb9c8d1091078f75992954c0cc66e1f8c5d70d2c76d80d925fcae9f21375533e3eaed1879ce85b0e9cf1bb8f4cc973d9568b4524266e59b83a2847268a70b77669675686fb1199fdec909562875f074d4aa3dc478b8ac452dacff42b4393df67a02e3ad1a3fe20e81a998d776371ba6358cb0365343f512f0e939c5b777ace521254c2aaad06576c939ccee5393bfcbd429a7527 +cf56af1bcaf1d48b536a77439a4a8906bffa28a4d5327ae2a0c45c9812d1fab537412e649dfd74c4c3ab6cabbefa619329e7fb72f5b1c96db0fd7e199a90d8c71852bd77d88ce4f22ee7e4b352b1d4180437d3245bc83ff0ce54881936adfd439feb6598e600c3d03b80a62ca4a3e245116f0677b99c6e70fd17226de13e4846e61ebbbf0d123575e63d9622e200864b96eefbbfbf25ffcb15fd666524fa23131e76f323d188d5a3a7208e6daa2976fe356ab1a97ea67193255901796d2b620ace681ad8f3a8a1edc88b7e92f1fd34984bd3c4896f984dadf49bf2310aee6c2a2d8474dded8ae6d90ce4728724d47aa83210c1a5322b463d741f45823cddcdf7 +e877ab2d48f4e15880e9229bf47caf75c36277ad900ac5b06defc4e0ff5bd60ba19732d91979a840161d946a42dab69a52793157aaa0dbaa7616ce134de9de76a4911b565985e7c558bc741660d1c5c44a0d7412365d152be2c1cd56dd56fa92a71dc37beb5a10aeeba14a88117eb1d30a5c741a40bad170a99e787a54638ccd67d106f424493cbfa6f2dfa7eb4d77790139ca38fb7b06f0694b1dcc2badd8a141a78b498075b174f2d173231d9839c56001ce78caa054f9ea505b02860bbc0d2b2f3efac2b82ec6cbf957cc828f858f116ee27120f3593b8cd0e4b13b3ae50fd7e3dae517f5ce482504b9a2ed73aeff671f1a2961707ae2ac742529e984c49f +e26ccb20895f578ca44e4cc4a6f44037be78d51cbb3a55ff39c69676fba3bc5eb44d473a3df009cc87d1ebf1d75f6d28fb5c3cf93f8dc61e04d64170e1ce238f531dcf099990a46f46c88e5e777579d4785a3c79b9c035aca02d49c3fbeee77c9e305fdc9a51801fc152cf4fca5bc7e97466a9792d6659a23240ed4b8e50649b543f9a970f47ff1319628f3235a6217d1ee7b5cbe635579daf64d4ff2ac691f564f79df9f067803a9d7f853bf41820f2328622df6d72cd15bdf83b5342367a6d84f0967509cd1cb9ca31778e3062233e41e8069f18aad1567c4ae07e97d80e79887d0d6447510255b3c7af72019fe926952c4284e600a808c7583ac273977df7 +d76b9bb32114f266a98bcf3abe5e2c9bfbc132d1d09a13d9c3ed3a7143c74309ab9a3d40d2d94e14ec632062cac99f0d60001bfc63b62d7da1db6bb408ea0f0562df90140dbd8e3413d949aa380941b50582bf26990e61826c3ac419d1d6818399ca4d54cbb8b760d539922e0d9923515a53de190ed3d316bde8708c4e50d4909bc6859059d9b6297c50d9d16387b2668aba585059af6511e52086b41953b5545d0310747d0506180993e0772fb64a3e27ea9d0954f40a93bd71cb990e0fb218e6847c4cb9c907224fb83ee878b6b32adc5af89e45b9f5b6717c69eb14fd0c73a19f7db4e34579ff3214b3a8cfb50f42f48b9bc1e179273033692180839f2c07 +c7d687d089c4fe781d9c1a303eac4ba814217d86a9d190af4b90aff2b6f004a5572c7fa3b22613cdbc9e528cd10ba3fc69c6fc1b8f63e84c0fc1d69c8e569803b29a2ef028a7662cd911e7e8066acbe5b8c2cdf3c769deb6bf9988f1386fc8dea36e3977b16aae25dc3b583a6fb6044c704ceee78f2e9106624feada7300887418ecaed739c7f8c6268fe4cdae559aaf54a0e0f0c1cb262180600f27006bcd2447434699e0b35f72408f477ee2d96c63d2d77294b438d29e6f0f45e7811fa2bf101760d40fcbcb46a63bd6c7fcf2d0a3aeca5644cf63d6900144ee521884d96ee268c423318c9327d320a294c11f2988b58947737d75329d8a32f3a870017a4f +ed8294f8e5c68b8a5ed3da4eabc14789ac8d0593b97101182d3a05a11f4c44fdcc07a89a6640e6ff30ec4275cd692513a621b4103fd8953985785f6d2d6e36ad8aac83f2509e47251038cd699df23b0ae95bdd0d69df97f81dadf46bfb526078cad3c53ba795806a9fc51696033d4855dfdf8223ec68549b8ac5097c96f5d320de3ca3e5c2f58ee9fa9bd7662c5544f0a5bb80f32b48870bded12c2ea212e0f440dfbb6eaefe6778d37ed12ae62a6080d3a3706617dd4712ba9ee63d6ffc01fca5f354ce86703061aa03950faa705cc31676095988ff73a0cc454aa944d02b3279d5a1b27f281b24d21313ed7a14c004ee1f48c7882e213edcb085ae1a07afa7 +df5732b1291c88690258c9d14df4ed8b7b072956ef9cf8bf47a84350399fc1bbcccc377f350e597b5fbbc1120358de984113449f6bf846f04721354eda50d1db518842967ad5b984c1884ba4862b77eedaa61c0efc16128f94e4061b7ea252319465c4015fc920791d1f5a0ac5a37e3421227d6b343c2c27abe12add9885b2fbdfff7a4ded602b21357cdb163c18d908b8995b857a39aaf8cd83ea0d1735822511ff04d6f95cc60c16f7550df43807bb4d191669b400082b4a65cddb86121b498ed03de998c95433d3845038953f8ab58f63718bf8f12b0d951d08910ae1984a0288827a348a1e8d1e674760d010419bb7d419d190bb244e8aa6724e67da2ff7 +e05b1ecd1e8f2c7d4797ccc6eb9cb625285b105072a48ab90b5f3522176e2d95d2187b8cfa43fb252aa94f003d96490e81b62395eeeac25e63c4adcebae506755449efb9f8311b4e2ef452fe5def60e2cf3af437d85f723d46bd90ee2d62e08df9f79138863e830eea7c1dc6859e9867b66c84342ea6d2c18fa7a1e81cc1cfee1d69cb7c0887720f0cd135ccf23d5067eb1eab426a64ca06f8a681a530abcec6535058bb631c28389893f042c2020f57934e94b267f7dd834944dc534c021216fec47631db22f987e991bbc60ae34ebf5eaddd41e96cd696b5bbe8ad62229c535353b22fac88acd5df98ca854fbdb32f41174b7481eda14ccd28eab5e9e95ddf +c222e99f11fa21747156a93884a0b3c401d56fb07eb7252fb306fea54e4d3b8f3bdc791e80ef02bb782b6aab90c9c5ddafd398b1095785c0671997a5f2ee8f82f5ea05a2dbc693982a4948f13a8870f150b1594024f9501d59e7dc617d31a1b34065da9b4ba11a80554dba7fabf216814de8acef8f20029a52267d8deb9bfb4ae43eac2325ba0b0a24a70f88a6a3ca699ea56c45ad6182c040e755e67d4e9e83d43da6f2ff680f9b2fca2f918595f4d93e9928730f735df899abdcdea33611916b5ad2d25823dd3039ae032821b15d95e35284f6c8573b592e4625cda2461a36ce42128da4b4b50776996d412d77aaed457c2810a20e1e4bb8a9c8395eba168f +f14a7ee34174409d21c6963dea8650ff029dda0458b86001ca8ba23b702c66d9399cdcf57a8c8689cd2842635a509028b06e21b1b286a747e4e3babbeba3bf9500a45cd27abec0f40a2fa803a6de67c4c4178a976610bf35860830308c9ff8a2cb797799f85047ce42d30a45e07626cc9414e37b621d8b95ea743361076396ebd8379bd1d0ff3198ecfe3c4e7f3b7b6ff1c08710083b5c74278bc21de5d58810967aaa8c67cc29bc715ca3fad11c6437e9ea011eba9997352a71e0324f51fe3542a478887e78ed3de5a1f21e78986fb56d3483194720655a2d177be2b57754bc98524d0c2fab7f4854e0ae78f75425de79a930ad2ff1f66e345265f63ee63b0f +d830eda8b0cdaddab9010e723dcb7e89d12c3310cba65215d741cd7902622af22f543536b384ab23bc256f9e3cc7b5584ba223dc515dc64e81fe8235f3275a233014abda4a8513f14b2afd3a570f852d98f24db499bd911b8ee572ef69e906af7dbfe1798ddca4782f369c6cba048f1141e3bcfc21e861b859e256c167585c1caea12f9adbb61239aea233aff7337314b7da723d8c5cc1d70bf8999955ec97eda4c6805d72e0d31e689f2343c8189ce0a062ac4df1fdf9d66105e7773733776873d66a7f8737e250bcb68b828bf949bf841e3e3de9efbc2e24e02ec1146d3040804739db68869b882dba45ac0f187a01f086f4cb10924d429cbe4df39d8a5e3f +f06daba9cb3c015ff6b663de9ed1f065bb7e5391c34d66fa70061338ef6aa789eba60c6ec5c08f27c554aa77001cd0f663526e88e34eefce49e2f9dd916e9f553a3b07aab6b6e4383bb8c65344b404c0a290d70e914ec7ed83a6e731c15afa8ec6d66a533a0a8c83ead623b75674c03520deb7c701c8b7a6f2462ca7b87ecfa5cb8588ceb237171baa37e791fe5a17f978a63f904324c6520142b88270c1647a14af5f0f87734be2d6670eda0857e66186f573befd5048338dcddcdb9739f18da81d51e7c05aba3202fd44df8bc6202fc6b53a735b8dd29c9b8113a93160d6e94fd8e57450cbb578fdf47f00303d14ba62cc47ecfc333bd2bf34f50fe407b507 +fd5adfbdf94725cf814f4ceb46388efadf84c113e8a3350965484b7f1ccbeffc21132638e8b6f840e6aa2c0283a37adb53bf4814d1251200470d1fe0fb01fd2971e9cbe058d4d0697d193e475b76196babaa6758d57a4bbebfb44df145ef5bbf9c6ca7c358761b9ed0b2bd18e5df2944ae92c230ca8a089ad1313e1cab62a7f7c60873476363fbeaa099e5ceb210b161c2e0afcf816f3466421b077ab6ec7e32520cc5a2add423544143a39f294da59e243bd16f67c35d4becbe3d1fc3e9dafa6b52c83980a79d30719b087aacb1d12c4212633b1e25db252f4dccfd8629431266c1398c0feb361640658ea4cca876152bb5d9a3f777bc350235e33d1d1ee03f +fc373cedd0dc35d922293255a1fca4d46acddf0296326372514ce8a0e150f6628af12a44c79f66ddea7c05c30207728e5fb50a9a297e396ada63289b69445a464416402a87c0ed457e4d65eda1d980ccb7521fc95a20a5d101447a411ebed766e63b19f66ab0c6814c9276830693d95cc096e7b2243ca96db92b16bd6cf4714d99c8fdb1591e9e711ccfd29a5436c6472cfb3744b51f0f1e79571a6bb1b5878d6696e2ff1317fa9c12d970c45921d5f6ca748ebd781e6850dda31bba154b787ab36e9dee6087952dcd8d07cbbb4ce1218f3f46a343fbd575fb9a70f444651ec8fd21fb3bcab6c26fd8690470bd7a4ed7dae0b0308586655c10728f338641ed2f +c915d4ace568682770106a4f017f5ec39937b0550b20a777368d73152449dea793941a3c4dacf600cb4102961040536396c31de9869258ef92f1c6cc1eaee68f1230402c135e4ff887a756ea06fe686a5a92831e4b15bd03f12fe195893a6ecaa3d14225ad72369b0dac1321ac62093cbbc0da29c976aa64ac53a42204a2ef020877c4d4e322dab365cfc92a6c9645fbd1dba40e6b047c535d79953e1e6897725c55196ac3c56a23e25e41cb9cf4e248ec15cd28ee6f93c93d6d5802b0e4c74c38a7a7a75b8b14cf313bab6aa3a8885df9f3081858ab8fc96dc048d467dbbcc152fa199bfac2cb26d8ceec9e9ccce73770344a5a587a304571f7967b6c6dceb7 +dd4a1bed174ef9050f9373db525c3ecdda21ed868126df82b004b9acb9daeabf5cd5993cafe589f952d59cb8ce01b09d920e991fa540dae3e10c9e71de1a933029b6ebf901d69de52751eb57888af625b76e47856c1e8f63909cca8c044accad1560457c0670e27aeb07f604cb1856aa740ef411522b108750fec928ac2bae66deb47b973be691cb725a0ceba3592c318e3140d7c6716bda6a3eb6b4c74671763badb3fdcf820fd53fc37bd7f95ba1f38b2f3abf88d1f2a5b1f3c9f906d7c42521cec837cb5e9ab01397740da45ec4cdfa16524689b6fb8f5507358522c7f99cd77430d08d0c78d7a32dc96805a84a982cae378e97e86d1bff27c1003c55b497 +c4a0ff8b4cabc971077def2af74ad988b92e494b69c15442887a663b5b11628e2c452f54b6677d026b23a9c05b884b597138aeeb14cc36b7fcd6ba8a57ae1b1e657053764d305b9296020d525a65ee795391b49d625b61f02a4072ee0349051458633c1b26599848c5d12605e553da17faa2649a3481dffb039cad94a8e7f63aa4069c2bc3e8c0f4be420ce351d87cf003d73454df781006709a854180abc66e537b34964249c58c316ac37593bded7027a6c0443182c60c488db0751393adb3f80e13a41d9a90c614d76eb8124d2aa9864b18c6d4c767bdb56501b39284b442e4ecc9866cc9b12f99bf4cc9dfe4428872361a573fda4908f66739be783d4447 +f91f5ee61e6466fa52068117e62cf5c91a079b283959fc79da47f7ad0ac048949dfc4f8c200c212d77dfb7d909cb2667b5d3ee75e9fca5bcfcc6ce67f43d287118704ea8d1afa97bc066c4954689055e28dbaea87bb95b12830cbdd9244a91971a1ac225ba6bdc35b600dc1b1b3af2f4262df999b9df2571c7cfb0baedd17b74dfad505ab9e074e1bf93f6b0bf26104aef5074c9d86ee1104b134e5572425b36779fc6fce0408a77245aeaca945e6a841c7c153df51c33a9c58a9dfb7ad6f08b2bc86356cd3de4ad165aded0d5e9aa252c4f6481412cd08bbb2f4dcf76281daf399bcb11dfa288a8e8c6d2f5dcb7afa73ddcac4b1cbebf7141763b8ca7e340ff +c9aa77df75c5920ec402096b7cd3ed4c2d8cdf2c4331a5b76b4f3a7185b861ab5a94a7de1c452c489504aac90a124ad1bc4be274dde2ea1d43e478cdccae26911dec011bd85d2d1b4a5c103d808049c0719519ce5d4dd9e36db5859945eeb9a5caefacef14261f706a29de1dcc5239d6b15a12ef2ef1dee0f2adf42f983123abc879836f9b02943f6210b5d2c057b4047b14ec3f7bca3b3774d79262a518dbd1e41638954ea70e124ee8a5360f089fe626a65935f2f7597a6ff6eac4499c35fe08206ec24085040f28ea92651ece9326b050c76ba6e666867a47eca83a955b0d4986af8236a0dee7e842ba38ba2559446ffa009f9c4ae9eb9d34fc565d2d0a0f +cd4cd42091360e76c515d64dbd71539d93ec2cf370fa76d68e31bf5396a4b7cc0963ea34bfef0160362693cec60d42dd2c9665c8dd1c49c428d9e58e7d8f5559fc43aeded04e4d77d61d2692f3ea8d0e7f53637062c512f041f0e274629f6ecf460b5d5bd4f5cd2ce115d14f2fc4384e7a00bfc930c8bd13f9c2c749c564fc633e580ced68c5defe1f46f8959df3d2af30cb481863b5076d57a547f211f2c93a8e04b9afd4c91c3650b92248efdc9f12ef9be4fa94efbd0a35ec880f7314c07a6f129c42580545a4f07f73aae24c56b240638a995f208b1ae204fbf5f2ccc5a0cfb7ec8723907372331b48e030cbef55bc3df83c4dff2c2ad59efce43fe1da17 +c5fc77d500f486f1d8af445fd1a0531a1378751ba44433ac0aa90e74e56d0bf788ad220d825b326fdf4802360823d6958e5f1b60855acc62e6351c0e4a69fe051b37407b77253346dd173da9d4576aced3b0e8e4bebb377e300690b53c4bcb1e2f5242cafe6075bf9227af9d01d360f53f9605d5dfe33929c54f226d8e1c658971b3b7060e04e10e2ece9790cdcc27420ca91b5ff032bd2e4c1ad7d2cbcee78ac43fcb4dba187148d6f8f66301fc9aae793d511f0525c2b252480b60e98563c8eb95ae80ee5857437fcbe56a2b33594d3b73cabe21a8e9d2df212b56a1ec9f712772713cc9c91bb7963077994f0adce79eaf98b2ff7c66c2106be23f23fa06ef +e548c58244bdf08ed2024641600f67c6c042f8b8814536c08c283588117cc7e949fb0098d071de18499d15defc403208e7d1c2b635b449faa983d1fbeaf34961e7c3930dafe8808b6d2db6e78a937b8b765d3b5b6c5f3555f6be64bb45ace31357662c9f8d4eb64481d7cd6ef0401b776a69f2e3a91f3b2cbc906f90103bc7606ca24fedfccb458173fdd3b5451368a3e4686a6b090b8b525738e199f1e2820ed361524df6a019da19f85f22bf92a40f327fcf66f67f6fa1a254b0ccf89dbff47df32df34413017c960347fe9f0f3da7090c6f6a56ecc937d3c12e9df2dafd356069e19baf1b626a03c71e213e69556c4a702d419cef1f40a10d02d7745376a7 +eb365feff536317654205fe5f479b8db087928e84e0b1a39639c7eaf0a759f753413a2665495611a2d1019ec9552784c910757b9a6a160ec96a746ec0f4a3829b7b8cf14983135145ae7687428ac1ac971d622bb6cffb6245ea01c757cfe547dd8bd925a3370594839794efbaa92ebaf27d066b1b1f9e0e38744162a210fcab51125f5c955e649d4ee041aaa023d411fb7e890f2de8780db6f87bf9e645e59760ead3fd16426843e4555073be3ab3ea5fdc0c4dfca97fc0801d9d767c522d89f59f28399581fbb65fed040eeedcea15daf4f1213b0c79225fd18c75a7b317df86fb7c16341aa8959a21349eb05fd4367239fc78bf423870b1dd8f7b87b45cd5f +db9e72c28fee7a0df0790d936e6d44c2808ea71a8d712691144155f58c92864fc4f0dab22a3adc76ba11476e22a09e0efdfae9c12b51da7e5317038dad89722e405da3bf8b3dfce86d1c4c3dc7d295ee45e9d47757a1ec1a4b50865c281b86569be931fb5e673e59795421bfbb08250f5c6be2fff9052edb9a4b0d65205edf462570d6404ef4421e12de7dbec73e0604d603a6db1ef9f135395ba046316a90fb5619edb0c199c6238d56247784ec2427bb81dae760c59adeae3804d70e546926baaffacfea7b29327a7a4fe0e6d44ea485b53227ae4f8fbfec8be44f8ff9fa0bbabed0d20191b0b1dc9e5f6754b5dc5805a6305eba61386ccfbe9220731b0c7f +f075469db82f7f2c8a91a87441885d69ef7932485d9c3ba4ba404ff85c0d85410353798ea92881b87f17176149d150d007aecf8df561093decbee4aeac5f5f3f2c8f2a8aa681ba5a32ca20f9ceb2019139ce9fa5401ff75028eac7f1b639afee308d5482f089c9ebdaa8568f6dc6672dec18459f459f297947095b452c987149f413e12b706bf669cdc70b36f98abc9d5d1f52ba37d9b3518a6a56188b76ad1370a85b166ff5b84e86e321985948793c3ff2def6feb9b623eccea4d358e2758113fc9a19db838ad05379a1d29347602f6ff3cfb3cf421fd3ce3124d28781ccb11357cb5e899c04a0220fd4490cd86fbed0ba27e7a3ba29f17a252dcc85183147 +c253371f1c1e85e5bf8223b113869e504febce1507d62561f871a68fdfdb7c782953b7c336b5efd2086641fc559bf6c1e3e195cd39fe7dbd9aa47b9bfb2135040764ccf3219512a52b1d0f5fee4e8de9913a0bbd5afa73454adaa64a17e76adf6fe935b6ea9c440a4d6936aa7be6bd696be696338da3d64a4bd86557ed50754b9cfb6dd19b125e7021043c162e5d27865c44ddd116bbc1d724dfa2746e96fd039c46a4361ee3e369d3236568db9ca0dc04fe778ce324880956238509d3f9b5809a74563773f99c45fdc888d8e57b9373a8669348b540214b9372ebf9dbdb2e41dc977fd9b513357c37f64c3ed0972ac5d85af9356036620352e2d574d657832f +da6f0e3cf87b358d24b19eb7134240af9b80332348023eff46ada3ef2c6df5b0181e69cec457d59ad082b9aa8a3dc8a749d092c3c24a13ae9bb8ce6c342026bad60e4b4f0db48a2645d04e7948f0aa406c8e0c31f1a4dc1923e40e3dbd3a3367dca6b0d69c4fd098ccd13f5b0ea366bf7c71ae376bfd2b1485ff086d1052816a20c1f0fafb62ee5f2a69c626e7e6baf3ea548272f6a206218ebc5e80668ae1b9ca8a85078fca1576e4a2464e9b7db227084955199f407a994f17021d5943879354bd74e0880f448c479f1e174964e24e41ea623c939eca90052cb3cebf70f7cd55ddef168f1be39ab4e1eab19fb90d1199437e83f809f2bd8547ddb2392d5d47 +c33f08bfe3ea3c5ddccb373cd0b2b53debf364d1547b6c2211ec748bb3d48eb21587c2f311df187074688966461ff6891fbc77359db8d3bdb3576e88db0dba46a830245bd32ab793b729501dfc080345c2a490865b5f0f5bd5777c13e6798b590b4f751c167f00e3889c43e57171379ecb8d581cc248b90a868b6c44ade851a592fbbd25bbad715f6032ff83d7f53b398fa0a3c4acc3fa01440971bf70686afa52b730af280e60ba157c497108e811ed0ea71d4d908fdfb63c83287252130b55ffc3ef9ce862ac3e680d071f6dca508d39471369c7ec65abeccd884282a6f2b5c84fa7ed93774eabc15554baae4e595e1f7cb25dc1ae58d73854c02d9d3e55e7 +d51d437e937ae2390f744bedec2d3c816b3a04847dfddeee3264d46ab2897c321a04e51a40159e1868427861772a30dbab2bcaa24ee2dc8191b857fe0851024787444c0089085bd2e8bf54532f3d6de9ad9cf597512e0c3848fda33a54d52a98f7eb4e743b9953f3d57afb1854561b61a6d8ff657325bc169c61cf19d55e1eb90500d86fcaed01a23fffc5308308e3cd5b504441605c7f140f6bb807c75f2e8923eed9cdbe74b3eaa7eb10de6817aef4c247669e7639e7b11bdcce41c8ab53bf337ac2d535404861e9564c49122251e47c2b325b795e863b160f0c9b60c1a82974f8a9d551915c176d816c08273b9baf001d28cbb4e899e49ca79341ce718167 +faa2108d0f3ef21145830cbc67ba74c30ba9db6985df4f10b2d2129f8498c2e493c3f60a2f5c1c3d9eda468d1f2389d38fda9b033165eea229ad0325aeb49fe5b136ccc227fe4bc98cdcda2e87905ef09e922862b6462edb0555b9c377b451bb739fdf006d18ff7d75612e99a6bc68825339669bc8b2a6f619dfbc1ac7eb58c349b81416c298ac3bfb641832e1e7922abccec4b81a3f370d2791782665bdda6554c41b97d153460df575fe9839b4022ca6b33e7746c6e47a56fce3c49f7984bf0e7d8dcf2f2cfe6953df466491642bdbc21111e808537bd37d8c0187fd924347022559080df47d876fe7625b47ad65b0bdd5eb90c51794ecab945022c5b6768f +d264c786357570229fcad3658add30ee2278f010b5efd762627ce69dcf337464653f507afa9d3a2fda47455fd0ccfc8a034ec90061f2a10b18893c81822a3930cfe6a5d67a04c5bc8925ad98f3904e80ad68e45769618529a59e452bd9715ac40a924fb23a9253bda73d2ce9bac63136e1822382061fa504a1bf97fc5ce1a859e9b33939ba9b960b76dcc1ea95e58776859511025b428f1dc994fe203a81699defceb538c9c6d4cf46e5fc4edc65091030cdc51d7e74f1faa8377a90370e64daf29d02f3a1f07b5c6034cbbc5af6199ac025c3d19ec096fff323c387026110e41381de4d80382e56e0523693aa323b790da9e10d88b0fb18311641371dd6066f +ffcdf7fb4f2dde0abed211586fd8afdfdfd267c41a80ed4c7d5f2cd12f56461e2612b964743e26300ab30d8aae57fa4dbb380f87a5277ce8225d6abfc3c5b8841697dccf078bce35b18b0fe14b9403da3e01c77beeac74895c0121290aade495dff49913f94ab5ee093439b835833f0823bce8aaa7696e4aaa6486ef6393bdc7c83204b1e6b6d77597585bcecab09020a9d9113420cbc61d647be897fe07beced2f2411c46b468d97951bbabfa82da7471fd08c7b387a20932cca7350439468e84621ac186864f40d7e889d05aa49eb5202a902784dc0d3a66b51a1a7101b369c8097f18365d9224de3f65023ea3464375336deb6fb5aafabd66ec92e5710547 +c6fc6a40e9cca8bb392f4bc8d1535c2dd7560b6cd4352cb9ff9702782a505a0fd0b6336a58f9ddca7bbf1586278da4a76ee36a1c8fca6c30532765e7167a63145d42f1e3aa2314835dbd13a80b86565c5c6d2bec25b6279cad20239489c379dbae657a3d83ef2cda408625c4e6f5c8f4a1c7bfe31241be2316c0cf3adc371579c5d41256265fbfcec2ed93fbbc1f96a3a5d70d83a089e8c930321f5fecf0809c8c14d0d3c572c089ea77fca2c98546f682c90acbe08c2fec87826136a03b36740178416afe3f9014be6e2a2cb2b6183f99beb470021fdb66758e4ea0d1fe356ee0ed1808604ba78c47ac2aa7444e2290138f70d43ef99c17ca4f407ca3f2846f +ffeda578d13526eecbc3fff06092c0e6d7343e86c1f0b3975c9f70c7875d849d6a40548d65665a26307f951ee7383f1a238b76e1382f6bcc313b990afa7b48a915fda68866e572f53035f4b1d4303894a75dc26da37e1eb6dd347918b81aa5e8357bde4880fb566f8992f0ff75ec59bd364de2cbd44ff78b82349a8e5c85074db8d28e99efcbad11ac012116dbe172bbfe1556ccf04b4c550eb40205e166e74729cd7f16b07a163d3c530c2551041ec11de934af1262d900168180445d7ef87a4d78aa40677c31ec5318c8f81547e409f51ce2e97fbcb7fa805323cca7e0144d4445bd173fc27c3c57087ff1281271460a5ad1df483e59dd1473a164f1c19327 +f551a0ef36091eda65b790494216aef3e271a0f38cbb6a7cac554d73368cbb7c7483c1c5f407adac8a5ca830845c0648bb546a13a5873378b17c763e494569b5734fdc87484a5324382d19935f8d5f2369c322401f0aeb57dbbaafb5e717051ef541fe3eb0bead32cbdf71112ac42a1b86f77f70f8de0612496a1fcb16d6ac0488a98a16caf549affc0363277e4d961dc0a59e4adeffc37f450b88f723be4f5853ab5938aea05823350a1bc9b3cffa476e7e3eefd9b6e204e7a5423336145a359fc1477e98124727dc19ce598d12939e01fe6348af6ca0d8550600914b74177d008e175508d44bf1f23637a0e2437a781028738ff54d49ac62fcd174ce6349ff +e7e86d05103f1374e6cf6c233c9e799ca17bbc7eab1f8855d3c87fe17801d33fa80460527103d05bb1f3d6d725b9a8fff89c40adb41de395dae2adcbddf12e36d9cf9697f7dbc47d0b74f54d96b12038d02fab891b3a2eb4189cb1991c7697beb273e6c78cacb4d7f432deb54507c849b8152fdbeccdac2cf2dbf6519378ec50460d22a8713eb5ba1311c5c8ee76aecb591ea26e390eb68b948b7789890b4b0844b11dc948ad42e0a73e17cabb4eb937ffcb4e26b6acde842fb2aac150d1ccfcad9b822b5aa19ec25cb8c41aeefe251e91e2c1547e666610a76431723a8b85c684fc519f563fea7fde6a9acd97932c0337228a6d5d448ee7eb051e6e6c210847 +c829b1830142568ce735ad19908f49cfe37d116264c2a8b59c44723b97d42f7cc86d8907d00bc8a32223413c77002f8a523056e66fee04ff555cc0dc1777971f018e2be510551cef8e86f2d3bf1b9496102c85a5437ebbe0b973c92f5e2655c881aa0cd2efe4ebeccd070d5b84cadbb8487add89cc3913d9cc0c8bdd245a23e360e8e090c90e11345438e1205f573c81a9bc1aa6c1a1fca0f176a477dc57078b0f567635c912f8f5d6ef209136c1376d41d16a4a05bfbb6b221e52796b8b24ef0d425613c27f419d6a5dbd9a022216bdd986db278798c6c27e3562539dfd8d0e804a6b2d05d1c3ddd9ee5d0a3feae5992dea8a2529940be6e21de9feefc350d7 +e087532b1d388a8b67a4273526c2bc2f41b0542bcaeddd1a686877cd22024c76a73b0e751a73e0e97711a7b0cf44fc070eb0475fe24cc09f1b87f107533c670c33fd194e1d479ae014f0eb3af0ee57e10f33da7ee822c1b5b0053369f00ba2c08f4fa1b4191de195cdf9cd50724d5c8c7317c7df818b952aa18526b025e961eba00cf6653c981ff82de3f625e55736bf3ea88946641f0d7ccd4502c463e1fcceeb4730b628743a4df3ebde9cbd87cd9734e1130a251109901fae8d9aa01a9a0d3859dad5d62ca615a5633aa5c7a6f3153faf04d4987fd8e8c9301fb4c2c0168b5d82c6b1455a913a5ebf8b75335028f9c347dd389967f58cbcb5a070e3113dcf +d747b62fbdc2226675ec0337f8519007da8791bfbfd0de766fd5d283e335b5a3fe2022dd1f3beb791e40fe4606f9737c2cda53b3bb6fb311dbaed237cd319b3d210c05981ec9af48371c97e5b555e32746c24831322b5315428145bcd505f8bffd190e0526416dcf2ddac4d179afef013bb6f168c67635ab1ba672fb381b675f0e10cc057245f2af99e2cb57649cfba4713218ee949e5b68b652b6828b6cf197bf533e1386d86ce2434c8288d9e9c9ad7876edf59418aa0d9f24fe9e1382bb8d9a0c8ae6d2473187dd5f776241983cf8e1301e8fd72a3b10eeb21dcf73b6513ea59dd261f72ed0fc63a70d91455abf415c82fd5f7cf100ef0c585028b935747f +f69b1e05ae7dd4e7362038a2ff08c373f69617139995277d88082f20f5704149f5d29b3485bd03422349f6adaa725ef0749c9a7cb44c6f0b4cfa964ce51d586ab4dab3e8a32788a05cf4306596254f2c324f12df5e35e4fb940335990bf1bfb59a4db3aada02f97521b51d7500f68eacd0387705a3a542105afd4ed5425b3f991456174b794d34f3f575d0fb6802266fcf77f0c2582ff31424f054671ac5bd96e3f1614d2772b46151d785bc5c7b5fa3887ea8063680a8eb3c98d652f2de4511266081c62026a14b1f504b5f3b17e6b5a9d6faee08ec1cd08b4d7b31db8ec2bcebc84ed33e2bad1c3e305679e01a7a03f9d9e306fdc4db41e5021ff83e11af57 +e434b65fe8d7c9b028f964263822aefe63f88a9019422828ddfb177a0e804fe526a8ec2317b24bf1f60755b8f56c1297bcca94c1e0b2899eef90470fcc33cd5b1d5612c29e19091384f7004a6ebf09339b2a860c33c203abe783d3fb04866c7891c035ed487ac53d4d1d410302e22e24f50cd111d4a88b2da81668f1bd66c1c33a7993f4e04578afd24d3d6304cae5106366c94042b6e84333b553dec9bcb8efbfb9563f9abff958e890742b2bd9d1849ce76ce6d99031bb39d1788b378f044933fabe9d0d7b2569e58b0214e4dd933ee3006ba0c47c533190f32a370907ddd50114640dffe2e2e31e1c9ac502c93eab09e9f761d21a1005ca703fdffd611f5f +d80838cef9eada5a593b2ec8767a4bc93aca83df2013f5c4123fa9ae87d9c13aa9fa68c068ce1e72d87492b407e7c8960c4aa044fa507512e91f4ff172de274d4b54abec5d54eadc3943b077730bc8e5920d8151cf5dcff861d65fa0a3b2a4ae6b353de8652cf19d14c47d47e9b773e0476e27b5dd950fbeea7a424400521f66c4e443f9f84df5fadd544a790d470673053d8f0e0c68d40bad41fafdcecfdaa974dd23d77f4ef6413b6b56d5a3421987eaebd21a7463c53acc57d7c48850752919434ea71e181ab1c50d497b09a1b91380bb0c0173b35c25387fcb6daa46b4fde7d68d4d6c99044585c1928880ba45cbc302f7142618a1f940b830606121a1b7 +f0859d0f8e7b04ff5f7b6fe8b88a206ddf366bb90f3b7b89ab6169e5ddc6fbb389036a70bb37c5bec3ee2dc6dc531b2f56f2ae9d3fc0bf69dc007a6bab9cac88852738311ca2436515534e7047419bcfb4f7d85613c89c8b06c242e95e047e53f65d8a2a80a3cf91a48d81fd5c3757ad79e11553d09260ca0bb3f60af64f370196934812bc9d6f38cae94356c0047815b55cee1cf92699b09cd40db99282f3efcfe8098575a85cfa76350f599e5d3e02a98b68e7a00c56debefccbebf819bce3e34305372febd886ebd21693a21143bff6baad84460aa2f2781fc118c1260e6e69b57bc9f93bc3fe386c86231d2d96dee6d4661be25a21fa8b33b4dda2f75f77 +e01225d747d24429fbf42c60b1213a45eb382428470503aa0ab2a871c243003edfe23c5d42d3779268812716740fe392dfd2e9d4d68d18f210338d853946e3194d7a4ddcaffeecd90f63a5b7b01138c80f2e023fd400084250f45674a0a242aad263fe10c0c2f4e1b733fdf989ca79cac8597d92a1acb9a0862bf00207c91d8154b9d403d9cc7127441e931b1a4074a51ae6941dbd63ffaf4bd3c57917a04252c4123988f7b18ccd89eadae9943361b5f67c11535f29dd1c758c613bc1ba60b0138b8d7b6f41f973e4f2f7dbf3d1bb2ccc086bd13eef84a7ee9706acc7d965eda94b9952064b7d468a743b4ad6e23e76459bb27b14c431e3d161a6bbb4f1da47 +cc7a4c3cdf33e12f7e8ddde9dfa383936f85d4b8f4de86587a05df8de29365eb9b82b8846bb70a148547bc940305737b50a50b32dc87ce89cf0e86207f1de47de3a470e371b293c0d54f6c5debe2f6f05de3afb95080e210fc16762650186116f05a22415e7a988141480a2b20bb7eef193291fe4727f28d7c2dc2d98a3d75639874c85f4a5b0c730dae12931890c639f3c2d3fbd2f2779557017a28467f27e5dc3fb13950744d5841ff5a43d84959a129a9f944e38372d8e3967fe60934b4cad7eedb51bdc98a1e6aaeb28a94a48257db5ebb1a8ea6f5e2e6379b05039e3ba7ba9f960571a054e7eccec400d8ac4ce64f49ec86a9f19d0b112e664421c3001f +c6dd8e5327c550525ce6a7bba789e19e786c55ba70ce5b558c1773fc4bce05dc1908cc2101adf55997f7251c8d845e3252615d731210f20a94dbca2c9ce6cfd5418f199bcbeee2f7183db3857e57dfe161f3f406fa718a2c9ae4a9e5bd3da5f00969abfb6b81abbd1665623d63d77f8b10306fa0c8a62e7cc790161af312557f493f2811495a8f48f480d019c0d82f8a9b8181aa802bc7c4cb5e0987a4640eb10a896419aa44fff1a103ef54ad58c10fef4a4e9484050ff41b02872a9daee04008d7b66b5b1d65f246a1254645c34a834f5a4b0ea8d366035c9b9a880b5a64b3c7c9f2e3f8e40830080a2e90ac6c7adea31eda4d698cdc2f7ad0ec03e0bd70bf +f624c43053c09487bbbc88bdcbe4d63f7e504ad29c11d688ba9f4da5b0843ef986fc98e1baa9ce1e0efcfdc276077b20d7574378325b5029a1559a39bab3abc4e8456f69729a6878847652298233106551c60c56059b50fe13745ed90a5c3644ffbfdbb9d2193ae78181d725bccab37a8b6bead6dedf9e3afbb82eb4f7777ad593d1be859d753f8ca56d3c5e32b2312f61d0f94c77a5c4faa71e03aeb6a71a90753de56ac996447535bbf6b4f6c8de758431a6917019edac902f97d89045baec283cd626f8e3418208576210e767b397ce6b46d16237481f6f7146a9e05e9d9971894b11023e38f0deabed98a93d7b578d51322ed21fdf3e809b757642245bbf +f53ce4354d2871685e544ca4508d0d38c0c1ff32edd60290aab5935f5ad5569164a3e8a9d87fc48a849324e9d1c6f1e596a8d695f3be0b42d26703052d5e7165e69463870210f01c0b433d34caad62378504603dae5783e57c316f398a48f328edc5e50e1081799cb4d86122fd441072e3d70ac52f7d7b5cba442ccd8b2b098fea27b84d1beca7a85461aa2f630d5f1efd43adbc4f17a9fef4d4554b293015e4a4dc89e356c8c1afc25e873b5bad2dd85dc1b8063e9efd7bd43958a71e447389ecbdb79af009191da599323d1cac2a0d11f21ff55a00eb556798eed16edd32debaf2ca527dbc1f9478c847f519f104671b3b011ad180d6664c1a18d29bb21c97 +cf448b082269e8d08e0358562db93f14545a641282ecfbf92be7ef1a602c7b54a53a68783322e6f6c7502425304adfce083bb22f6ed38b20aefcc2a04691919cbbd5e319c366657326e57f8b5d1b13fe5d298b9780a0c5fafddfeb59bc3bbffa486ae85ac1348313479d650e58e034ce22c8496a03b992926944249a4bb75efcc5cf8e1542edae9eeeba1213b289897eb5d2577f512710d1e839d94cee2a98bb53247a830e3dfa19ce67fb7450b8f8c1084aea1acf6836e754abbc634f24db738ba59816be0bb8221ab37fb950f929d270e356e354d52fa9c27ecae6c51cd075357a7b1d29f64eeffed24894c3714b537a0de7a25fc115569d574c84c49ff1b7 +e305c448321e31234c9f59af5f27f53045265dcea7ab4ecc816fdce27c2356427b49b2550b8b0d81d6e6ba15c7382be21134958670965cc47205de0749a490014555b99d147bfc4b2de4e7464995d8ec595bb12046422f20ecfa3e8a132b2cdaa561f2cc0a0c7c87bbfe2215692bbe5346df5dcd1277e6c0d75875028b8af8802beb9baeae0ad4e5b2c1167fcbf7e71900014ea244dc610e1f8d0bc3abd48af93c15427772b600984e4c5a6ad97533d42138930441f57769e3bcd20a8751d72285b087073f956e76c0e4050990e50e1b38086ef24ac4ac6be4c78390b8386c8213ef8ee49ce699d77a772937d95206a5a7e662be5c5dd0c01d05f8593ac89b2f +ea10c3ccafdb4bb4c9b62ef390d82b523792fa20ad9fd44255fb4f6523018079ffb2fdaee83b304fab9dd0c80bf5533c4aab2e60f94f3cde509a5baf477d8a2d0ba62b5ff664797d339ee98b782b84f6649f21e64119e0024bc80e4fb08ac2eb128747437462773c9bc44c719256d8b28c634fdf3c210455ddf1f0beab791eb8134272b93b45ed199cba8aa93a8bd8a35e1b88ca7cbf66915b889faa18e033d4c9de7169ee1583f89ccd0395eb6648097f29b9f4862b4e6d9c1a52f39edff8f6c42312687ef2e20ad480419a5e83666f0675863dddcaff0b1d74e5a0a27c73d35bb93298a066a6142162894e38d16fd141befd1a59e68b07c7f322421053d39f +f0ebc19f8f5ea5d5ad37000ebb5aaecd3bac11507860f956664bf5fe61f0083b73ecd3b3e6187e53b9002845701dc64aa3853fd1de305cb21dc2c6058ea740bc420aff9008d8fe78fbe2eac50659dfd1b81a97d80e39836d3e4eb80cb744e295b30d05af5a4fa0757ecb8e4ab3108ba63c341391af41bc2bd0e8b8425e190030b4269cfbc3deb4d32cf8db8893835d97db5d8416b8425fc179ed510c4c720e7bd58e58fcd4b3a6646f840a5211cde4813d62acf1e147e1b658b4e7d16d1bc9a4346836a2c7ef6634f76c0edea5f73eb43a8145b613af08c81c2395ac68fcaf36feca6240a7fea15269662392ae30c1b18cbcb53198a104491d66028c0920837f +effd96bd41fe913ee83849e0b0f212dd5dce74176ba683d59cb43a93fec5a50ad53bbb97c93d1ce49590ebaab302313d26f505244bab7832c4d7585b56acf8ca5124f3d7b83ccff6170d2f4962d0a6e56c9917c8a34271f2b418c1866bfe88c1a9dd5039be4e3dcfc156545e7c8715a9f2288a20bdb63e2dc586f3208668c742effbc73c504c35534c2728030c3861e9f36819c99c8b78f12ac9bd63a955eab9b6a563576893063f6ebd65cf7e5877fc803da267a70cfac106796751425fbfc4daa6ac90a3b9194e6fdf10c2feb79170318766c47aec18dc4a2211d43178bf87dfd876ca411c9329564580ee303909b30bdb702a4f2a12c99f2f20e0be2fa87f +d48c3ec95d04565b0e5c93f38e633ab73b2c7d75e7c38f474e54c8995b620a10a0792dfd9c629f83123d9ef280b69c7c09c29aa9382684e8b935c0a923c6750db2586533957e1ce67b41d5184ec6e821ca0432f0977a13a195bbe8d9449b5f88053e2d464ba795d31cc4365e903fffa6d82c084f19b15720d4b90b31701e8c96079e3aabfdae6dc35b3662bab49cef681de1f1fa5046bd405f8b4f40123a55f83f46ec300d8a4d084007e84238fdf2aca6cac248bcc6639e8bcff25b5cc53f28416e1f386bc53bfe6bbbe51483cf023970c0ac9cd7d0a7490aa32dee39c5d0edd08cc9e711c97de80cf878100d2f59edaa5e21cf44bf8516252bfef52c3f6b57 +f86357697ba3e051bc459f0b5a030bd0e9ca79d26e01b840316e11bbf5e79597972e290da289dde5e60b0adf1c13701f77431eeefc96d344bfd89bd4136e558b4e15eb56517c322333b141b374f0f50443744c40d346b4294188d5128cc428b48d808a702b44bbb6b0e6d8052392a17fbd47a90bdb70d3ce969104c6b54635b63afed74c571e7159807a6f7252592ab47a3344cd47f9807ce5205ae40963d412e71567a751810c1a4d6405396b8b0e960888881c7cee54cd7c4efbc341d7341c83dc21384f443d1c2f662b382d703dfe139491a608c759da563d9e6e863e79cce7002083c9f5f27de2cab3a0cfbf7fcd680b107c8cdddc39940d94688de8d577 +cd3f292c5a3ff76e35f8f8865448276a5000087622c6fffa7487c83385070901e3f6628559f211c08dd3220383483a7ca6ef68855b4a1c3f03de63592c55bdd4dfb4b98406df59a510848789cbd83c29af57d1dae568f33ca5c114b666ed494d74299b3d3089c91fc26078ed9ec27268ab8ce2a6a5f7af93863fd87ca2a5e1c0a3dbbb16c7503cd270205b063352c0b3a09fac10c26b415820cada69b4fef23e6f59b54d9bcd40581cdfae9a2aa5d4e24ca91794a712a45ad942b7a7b9b3637f48b28fdeca1a48762e205f91d2bcd3cc32304c514062c1d9f838521355ed0d1659b7ce9135a223344b61f48900dcf2614c9af7f39eb9ff98af2fcaba8563f6b7 +f7bb299e4269ca10c378d49e7ce8a5ac9d921d28de63ef4058a253d4200d9a19cdd3e59a88dee61fee8fa7bed9f568724ff7d094eaab13883d9e6d48d739fd95a94b5d80a069bb8c075e4c58b00336195bffd20ab29b6d90132ee1de3fb1850c7643005fc411074b761adbfd0a857318ebd1502b70f1c3bb5148a5cc3da39efa350915bf76a19bff7a2b02b0288111f5af260857d4023254bbfda90040d229d700b2a6d95321a3663b20d8ef0a75a1ff18b7c274529655ba34ab73d657ce8fcec0403753532176a27a2c59804093ba7e13702ab43540c672762166a2670fd76d5cdca840bac7c24e35df570f6c949cb010eb45b8ebe5f31e7d8d2958d324899f +ee3124661bf7da0a931fe7b934a98863b93b8e2027999985e213dc673428ff33264fc77372df05841a84625e79c82b40d8cf1cf70b6589c9d8177ad716c6135853dfd93b9d03bf38c8ed1bd397b2d43d252e43e56123f518a9e9762412d6ab00a0ef0810bc78179f88d872cbc9f833eeab9fd27d154f59bf9e9cbdd7a9e736216ae7456d1378678d12f02c48fcfcebd5872172242d92b72a2ff0f8b47409877e5499a84fa6681183a0d5f635d5e9cc2780715670cff72aee247a0c57ce5f3c28b2f8b16c67d6d2ee91c2bc739b5927d90d5989785cd5c35cf4d113336611b577ec3100c351ea615830642072227d3d2a7f1d318ca3cc2f74edf72ed17726a3e7 +de7df5011f700e39e93e85781ff166286ba93ab97b2790915e1e23d98574fdcce280e0567ab55d9bec1c81a564460d12358840aca41abde61e61e5eaa044821f2e0070d55dc2885f5d3f08dc13042df795f0f0177b2476c90b61a41e423361097b77cfaf0c1434b1e7779e106683eeb937d1d466ca12d4eea723fe4c2e677fcd8e7db477e2a080c3739f8ce97f651f40828c611b605fb0f614910987c33a98d2b6d194019320c32c1bfab2f3f1e29918decbc581093b242e1d287a63ddd5932b12ff54c7082ae98aa1e818a3049977006e7fc25eb945fae003027492f9b6d0c4ba1bfb8901b63f3eb2517373d84155b56091db508b324302186c04b006844be7 +d666fb4464bebdbb1489ab0cee3659440022754a150b0ab969cf0feb5f22244dcaebc814a65f8c2c4aa5844b7a213b8dfce71ca695238b42930d47d083f59f2d01e042538c573d75f5eae7c4f798230aeb96d08d042000c5d99c8293b3705923e770d44d028edbc286a0c0913e0de00d6769e07e675cd36a5d4fbd3061f318e1aaab0e49c608222ca6a94ed0e1a8b80054a9d1d186e399204828eacbba91083d7fafe50bfe6326a3918bb2be4d46df2aa9ce7bab15d94c8de31d197a483fc1f26dca88e306619ce84fec80d090784188481a1925310e81b064bc2630d8975def3c3bbbf544f706086cbfc7c127dbeacc2a6b24e0fe17189e2ce5fa88f2887747 +f2e99cf1b31f0e5712c5ae6a1cb2dff5221ddad4eacc3ccb72eb28966e8772e3052dcee2b3c103cd035f5e88132907914c0853fc2249bbe98a05cb5fd335aee247d80398ad67046bc08797c79764ac1be020331f4e5e3d434d3f9e3abebd9e919244dba3607387c9d6dedbcd1e22b3a0c920a8a0a8dc7166ec0b3971ff90781875bb5fbe61a8ff39465f8bbd6713d8b1cab963aec1e864a07f832aa2e41bb06781009fb0871eb94224223e937864022c70af76fb074863b0fcd850d6e782474b51ed6d2080631b706fb0c5d2f9935c3f5d3d84cbf851bc157beb3a594b63dad1956668f36e50770da54bec072ca3237492f7e089ae0f71f17c2ba019368f0a0f +df8a5dc28ce7f8e847a981e6036c68dce7a82b9b806e8f4743692af3eb7ab0ef72735d7269a9f3921e3d03972cb5c4163407f1985b3ee6bcc4720982b4dc2adc9454657950c3fec866357aab321503da406c0c42248b6e6cac7d5b60128bf6134233d6695cfacb0e62deaea4fff427efcba441483a9083a2f1c3ed101b67630f6c850a3eb5dc25ca6493a2b22ccfb073b4f77489b2eed001b22c06cafa9cbb7640999546fc4d03e9bc2e6f45e94e1f9fdf854ab7f615f76f48696a2214a6e9e01ea4a8b5ceb51338128db93aac749b6e53073a5f6717d3fdf0b5de95e14db51c88db7291190eaf02f55b8c7084719fd9e32d6dfea91ea11a6f95d3213c803117 +d9c1973b2ae7156139c92a6490fb0a81548c83aeaa1401b883e81918129959eebaece3a96f8ef00569b81f911480885a1831d6dd93d2d396c147e937cd9cab4151d0df0126a926478b5a4daf7545a1ec27d6d76606be0bad67deb1963a4ae78baff7b8a5e9f1b3efdc89faca3cfb6a808e4ecbfe2c0872d7f65e3b7bb46063b280656e0394c19604e03aac7b41d3359baccba20ed7581a050858a419bf062669c8370bfffef0c087c8a9e541a87f0361a4653c04130105820f6f53a7b70362eb480b33b28aeb139257e922d2d569d33e123a3c33beac489714ca1f7c57e9e8d16a3ce7191fcd567bd1579842066371a8da591c05150771da2a657f609d9a00bf +d70a41cf9178d7ebc365ec8a9dc93700f018775c59124e5d62245b5b42e02eb7f710850bc37c3c3c9300ed3c4f8d820d9c9a69ca7752c6043631812e4cd991719a7af6d4007102e3dcc9387d21ebee77efbec7b2ebd2e79cdbad7b307418807b662b9a270ac24a89680e3f4afe5ec947f57df0909267a454c51e2cdd824b12409793edec4813a62f8f09c705ab4a360d262f14e485dbbb8a26deb3a308c66fc3abfb3f772a05eb99480ea91a4a771fb6a33c6bc92a84aa53dc7a88170f1e540578727e626c3e1a2e673b43008fb8cca513b1e39b5c1c7ae5381196ccaa7c5ca55d73c08864f4f6c1023c59210c3d24e92527fe7086f79733951a55f1d652412f +cc86fe3261f2b18d3ccde6c674e57c52ad15a3c03475ede862c4f50d6b358f142fce014cce9e13034e868a3a808471c9f35e811b30a33aab81cb02833270c8ae88ea7ceaaef771e64d5fe1fde3cd33c180e2f4e1aa6bf93c844d9a4edb672b32598151d90fcfc917cd8b005f7ef9ff8c918d8e5bc7d004bd9eed7a4c175e13b0fed98078976f7edb0b146ba463c03cb86e90a710d766ac66e0ffb31ff5bd291c6bf18847b8b356d183efcbf8044d9e88cd9ac0cf403250d305779050a9208d212f2eae911749d427f315505478b231a39f8394c8ab76b40df96bfcd968c4782b8a7fad6859e5792d9e5f2e6686b9c1a19f6f008d42dcc601feb130fa91dd50cf +f820c10ebbe3f65834a39e998f5b2cc9b423e32e6260a60183dc2b8e8dda7d104eaa0304a3943697c52b8c14c0a07f081ba1cd46e2291fbb6a05c3d0a7b02dc7248d83558909731217abdb68a8052b2039cebc50a4c79a23594604be2e86fbb7ad8579901c3fd139c6ced23ef78b6b7a576632c17084c1b344c9276a6ba6e2d5c55cc8ab1f265d760d9380b16e108a414265aa350fe866dee221471c9b8a052ccfc697eaa89a90e82fc201fe0984f18f374b845103a59d57dbd2ca0f37ea272dd7797b437bab37f0bed151b4ce106143afb34d79857e323369efe52fa604c011d8dd338830e55c43cfa0021ee43cbf1df0e160b43d1219558b9c2b5f550c7037 +ff4431094335adc9ed36e7f3ef21f4fb23459d8c2f534e1a04f6db5c60e3e6b1d3f94b1542a55fd7d7311f1c27142de1015ebd6a5cdb8b6aec3bf091ba36d5686c874525c701cdcae6154794cb2857e26ac2635ee9f4f7a043391018110fba9789aa330d6f91f3570df204924517c35c4a185eb26664a9d94fe8b276120f2484df2b917bb5b9b570e2e8ee696dcf8b85ab94c619c6848900357a018aa36741394b37ba3d1f8f1c88373d414361adeecf9690b7f5ae02179bea67ef9edc19a90f7d48b4084c0fe53b12e0543898b367e27739623a1072c18d59486acd805ee3bbbd04bf7268371148b88d88e20e2fac39463a914989c177e69b70ca606e466e9f +e499f3c299181499d1ad8d3bcda594e678cd2137c3463f1771d9b83c11fc8ea6acf33e1da7a9d90d9d07fed18c3ac9a801ab1201edd0a9a88b05885fe68fd9a8b95a07cd39b57697d51a800b01100578a5cbe099dc3dc72e66167a1641337d538b5eec9aece495dd39926e9decbf690a8b87f8f4562d5067bead12ef72bcd2a23b8c12831e0b8a99898bed3f4e698e3b1ef33ef4a893bb0e447d0b3b23068339305a39b51af4ce8373431d98c4943f07ae943a92c8d2f9d997f389035b4b192860b7f364402afcf2074a8f26bf7328d3b00daacb0033c206eb049f28b3d24fbe29e33a0962e86b05a99e19cdf171ec40cad60b4ea425245a8e3fa8d3279106b7 +dfe488b9f613832d66994caf68ac1f827a8d78c4e641d63508bfd3cde01afb1344c4273e73e795bd98c54330e1d129cfa25009aeaf84d9793727a0cca3e20b5fc12ab6f321153f21353bb561a15099714312f5ba1a31ea4200a28901c84075b8f093100fdc5126325eac7388c75629829e33a8ef5e526602e8b5e1189f7d7cf0586dd0e58d095ef1a92eb26b1427d523e20b20ba4f9cc6b3d6ae0ad64bc4095dda5d01ed78601bfc4b3377f467b40a8adf884d6a31637b014da25c022198ab6e7b7250d6cd844d936908879e4e8174e95f370a76d9af45ae6ed5380eec64940cca844b3d719923ee18f75ef5721571ae09380f162804319d79e1b29b5ce74897 +fbc204941d7ebe8c6660b5b588fcb9473e17ef24b173e0fc34cadff9006042303423ecad9b4e97c7a4bac9a091abe3b6fbe829c9f4eacc2c9a6a752c6c31d7171361dbdf51aff66e7b46a1f40f2c20502cb35a52743bfa5469f1f7233040e7823cf327139e612ac8b83f3a95d07406dafd77e822fe5c2c8657f3a5772487a6354106efb7ed41500c0ce133819887e01e5ce7acd7506045dba04d5d333a0498b07ed1d981ee0698efb7e2acef66af2fb0e4f37712c406fa395cb761ba45f6eb061885cade4452cdc6508b4f3c20330c6c77f80b5374b83bfbdf6e31fa1a364b7ec34c311bb64c53ad6e68fc2d3d9ce5c2656bbe72095ffee2ef84dd4f1fbdbea7 +fcac1e5aa4262083bed35bddb5d2e1db866a33846c1932683e07aede9485b4affdbebf758916202365c1cd6fca4c053627c7a7749313b374433ece4bc857f408922fcd5ea1e20b205ffdc681b3565e7917d124fc58d57d533f50dda4e553720a99488f1d7fac76ee03aabb7e2f62dce7f05e946a55a19e12b2293f0ff9982e29ebff9236042b7626880997fef227858e5c813292f74d360e869e7dc8620846d1f0ea1265c187a90c581995e3d46216d7b64103a9aed57b19a469aaac8e2365ecb1fd30ed932696ba50eed6669c8e1581f37fc9dd8cfb223124f9ed4950587e6c23903a30a5aecdec28253164be6ee1df014403f02695264eac6a3a98fae38717 +c89981f5c63fab4ece88887ae823f8f9b4f1666d12f5e836ab941687881476dffac12cc3f3a33e04965d79cd90552048f21efe50fb07f2d7e4864c9fe78860d21f84719a2de29f3f1c477cb975125d8cf3e561125a69524f6619b9068a96d838b93895260cff7fb99b53ded286599a16e745548c45da10b5012497fccefcd840b2ff43ee3e6c4d94fe569762beae8a8275fd9176e63c0413dadd20cbfa053fe48818c862e03d724a4e9175a2b592bd8cd6b6b2925cdc2b6d48fbbffcc2292f7ff09b35fe7ee629f7677523f34d7af90f0343c1d0425e4188090f2108b620381bd8b868e198700a2e38a89a0e2a885276570c835ad4d21be6be8a24960fece0cf +ee1209ee5572a4423a5b0af1766977e677ed12d008f455be19b89ab6d4ed24d004271f6c45a82f4a34eb6614c5aa70cee3f3b589fc02d717d9bc9ad3dc3f0597260f5a0aca8901f3009fc71c6e6c8cb2bcb03b6ea944104f2518a2bae72a6943356467f001a28e14a2c161f9f982d354426d3410a09a206401b5dd8f170fd5d1581c846db19a534ee8dd16c630a3474baac898040c9d791958c86098eea4da17f0f6f8ede432cd5a4f9c803720326a5c39a1a9861b7bf339de9175ee961e5210dc8bbb6fbe91c21b9be5382e0f9460d32e48747a81e7181ad175595be3a463d16c2ba4f48383aa1807e744c55940476c716ff2e80df31cd6b44fd6dd658b52bf +cb53582eaf944f8db6325231bd958a2be446f791740f75949c08eb39a6e8c9cc6764e56468c3bb1643ccafd105526efa8d27b82336f733cf6fa9f0c95d3a1e33744d08c3c1d133962b906513cf470d2968c07eeae17e68203e40bd510a520de213ac11587b82e9f04144e1df5c6b1668f421ac9496d618aefb120ff588193c833a311125f9f9eb1258c04f3558cb4bfb837a7b7dcefabf9d5d71be5468d7f5b92e15e14e0735d177cec9e1b354f6bf2321e3df5dc213e0921be67537c6316e34a54e796ccde6f321de60c6d624ae74ccf54ecffbcd4756a4e10fd22125456e964e42a07b145fcca72c7dec4d0aef528682ca21347e8ace90452f9fd3d4efefd7 +d4a23c1e3a975856a512bd421c294b3bea09dd344bcd4c0ce1dff8cd49f2e654139974859b655cd1a430942aa96a1dd4db4ff983a21ce347ecb2d916d91efd37e0ff52d9e418577aff2b80c41244ba7a39782afe299f01c3dba6d2881aa3cefc5e5088f68149ddbfa866431a5800c7c3a35c3a970e9d9d83a34018c03d2de329484d2c0d479d761ca9ef0d08d8ebcc81a84023c35738ebb02c0bc2af1d94ad7eb3c296c435fe89ee315e0f932911cf20b9301a440e18c5cf1360d7dc4bf9f4a5ddeee28c03b62f8a0a197482866e44189e80970596118b98977a1477eadcc77f012ac289a9721bce348ab383603398026ee12fc38758c4d946ca08f1060b6c5f +e1459a72384b0e40ae3a1d81ccce95e6904e406a56a650c419f2cf1e64d0bb2f40cb35a7982006b14f502af37aa69691624bfdf55b6bbbed70788b893ab0713279d980efe0549efc789ca481fdbfd5e61c8e9049534851d66f1224fd715fcc0b7096115be9fa4aa48bff3011ee5907494e373851871c69fe71e9d90437cea5a4b1868fc194e9f61e68c2281429b3bc1cafcde26092389521eaf7421e4d92a14dd89d2a570a4f5cb2a4422f7ef14a5964522fb3ba2d3631aa68cca4f5162bffba895465f8d34330e419ba16cbfe754622e26f6f1bdf5aae3078fa7b05f6c371af51312ab29d249606e9ed237165ba9ad8d428e052b979552133c9a486d2f44c57 +fec3ddb6c1ebddc0f25caac5dc575204cc8919107aaa7b21329957244729a18238e8fe46665ba1e42b33192e5db48458caa9ad39c78b702720ecc19f005b9901c019a27620d3d4af7f50ed9ea4028944683f2f418e92a9d8037ee441dd51ff51377cc3ccf53e1577b123365fc2174b6f9192606313d8ca9cea58775e8c74c7ae3c3d206ce32d0e1a01841fad90d7caeeec811eaa1daeabce6c62ca11b945da4496ba474c94acde554e9a49f47320fe43845b368ac72537324a6ed6d185bfabf9f1eae8653c993b6694b1e833ee37fc02e5d637715534cad6f448296bb7f4482e997f336505da3c5281fe8cddd549086bef63ab895f5fa42a335d5deb3956ad3f +d3f0677b35b4ff55742957b7707981bc90161dfbe89552311943b8f41d5590895bb22a7082f10014f247912d8311ab344f32ec71b8874d6083b072748b3d39af0311412882e6646b1708dacd0236c8f2282233b5e7673d18c5a41f63a4910920476079af9577bc4fd3b3877588b9d1d6983e7290c6987e59098e61f3e6a4130a77f2542f05362b4f7a2cd4c9d88a896e7638bd642d7d2aaf95f71fde6e5b89659049443e789b1f78bfe673f7c6847e22e5fa24b1fcbccb13ecbf4f5b36400171f4cefdd18a8470e238f55d7c1c40227c2de1992807883f163d60981d644b7811e67d6f03d138ea843ca3e8c8815e5219ca7e9079af56265afdeba201e2b3e247 +e44aaa1c792409268983086f11a6e69d77ea23b9400d39eb844fed2b6e0b7a60506cd22dc3360972cb9d68e8ae8db3a64871e5a7cb8ec225145c060aea15c03819f2d8117b506fa690981de12f5a113e224c2b4721f1db6c59f3d9c042e8a1017217c743393ff6dede85588147aa0ffdbdc1d47ec21ffe8c91ee0f744929cb9cf3720151434d4790021e8c125506b6e0335f02a06c6f55ce2ddf9cbb80c9246458d39fa5b5e85c14d1b297a352a5afe01d8de832d9c9b192d436dafb8bd3230f3e2580086b8e3597e86ce2d6714e873de28e15cd77c1f97f2484a2fe8d68a7c9490f99ee0bbebe747aa0e47ff6f45b83d96cfc7b4a12754e876b26128bb9076f +e2ef11ec7e9f4b584b90996a7ac2bfc4b24630ca34517a6688b8dfff8fbe09ff53df7bb4f589aa7a4fcc5993a4ff7829de5cd498dfe47ed3368b53d4348368d0f404324a829fe5c0896b7a13dad3967a568e2c2a06ca4f20efaf04ba3bdead3d71160bd60029ab3a59d2d347748fbf130b0699ec0b32ff11292d022eba6b79c1ae33275699784994c76f182dd17bb735d774ef0531aafc64f9fbac6c771ab4949baacee4852fa9841f24388e438a4c314503f0ce7763cb78cde43bd7d071ef1363b8ef366c656ff99f23f98dd3f9a5708f8f8c9300cdc64ba6f2a7a1e83452226ee5337f726c452d6fb517b7922e1b1c107577123086a40df0ee72b0892b6fc7 +e8fe66713423dd164094f95fda912bcffc4e5854fb2a8d2fdebd87c2d1e98265c07892240de639d80158e153b04c300a716f86573e5feb9a29c78adc60db58c0007c24986041057ecd5e59b36152a8336dcb5d89da371b54371db02dc40b693c50949979e940466753aa9d417e4e1d322b83d26d391148f55caad39e99544190a070cf01e1b0c472c6a5bb7656d6a001f5abbc46484c0df91d90b482baf5b90114f2835a5c9ebf85c7c3a33d0e81cc2c546fabab1765ee6c501f143c441599ba01284552ba9f09f137a522f099bb747282c8a1f825ea71da4eba7da5d66da407e28dfa39ef373bc3a9dc3d7ee140b4227e4b92ed39f85c317e95157a74a230af +ffde53676dca94bae0f8c7c4e7ba4b031e3dee2539030674e4bb6a78bccb1e0d037976101b0bd33716668c113c7568ed8f4aaa5159f1b6c8204a20f5297d91b96dd61275c0c4f66b959be88ee4d1d193426babb94e9ceea3a9a27cbe7fafa288fb70d087f3af496e0d17adcd7a2323d57e9b13f80e1736b43452de7d80230020857babf9cc6a92cbedf13a796065c4c65a49b6bdc8b075531d35d4beb347e3100465d4917280c9e1d5a313aec90d7b085edb93b8693bdd6890021425f0899c0b1d84a5e84bfc5d3a252e3087c3bbd29564883c289f8bf81053f764f643e0cea7312f8ee214a66a2757eeffc5af703d4bc4029a389493c9c7da440451a07006d7 +ceee078d83c3938a9a3a7f69bba56eadb426f10b89902b5c4fd12b922465d9bb7a332a0b093c21554d844a58a0db4a646836488b50d87df4281a2932492acd9c36d86157d01ca78e0d238bff0b3ba23f870c77e51c0b55d6362fc09746e30b8b50671f6f1043e9806fbba7ef963f9172d7212c204bcddbea0ef0d101ff7f4eded08cf7c2d333977c223dd55b08abb274e548c71a4c78705669969348baab9f6fca68a15e396b24afc886d7d499f07d4f7b442c653ac6aac032d6e865d48490280c10c0cbbfa0a71398df45fb6ff08c63fdf438f3d44f682a3f01d37f4c1c212aec7bd85a137485de55e4b968ebd4e06afb4dc2bb18242c58bea270a756354837 +c706c2bda9bc28f9ad10f1f31d1be2451290fabfeacca47e1e6a9755879a02545889bfc63e67aa63f2d24a987da05f15230e6f657845018d3e509e16fbd72c53c8dacb4d4453a7cf31112e64b75cfcd37554d08f76278313e80aa1f5a44ef1f28f7d9c14e70669183e0145cadd3969655ee9abbb401d29614a001f8ee85668542d5f3c6d6371b25011ac1df57851fd03811004a8948998396c25d71a1d26be77ff22c6dff614a8e5363fdfb511e591b6438e3c71cc04c4a8aaf64a1ae5685281ef97c86f85ce39edf889f982b716c3278a55214dc93bb8dac43adaf9221bbfcc81179ad4e241dd9ac6b48314c25e406b9e5a4f23282790c80f715abd00218c27 +e5dc406fba23ff5b00b65d39e0eac0f3472903402437db4cf8af15de4f5396ab396edc7662152183b2e26a1702c8672ff2c79947114c12453fc08aa265c8a8975e9c96c9bd7124694b6d4bfbe57c7ef5d271f43733927d6ecd77da74faa764d1eb41fffe6fa311954fd44996b656a7256a239dfd13599f44df1d93e6e78fa5bff1606eac62e12e8c5886cc917760c137397f2cf45d4e3d7f7f0038b3c503308c8fd39c629b81f8192f9b07ecdec51d1ef5077e381b6a192894d943c100801b2be658e8a91167eb78e84b51e8856555393625be3397aba02be0a16ad7d15e2abcae73094ebd6878ea328b1070a2becb8e784143eac6b40774965b30ca19d4004f +df35581f830013223b615c19e6359cb7b7d249b727b74db0353bb3f2fc19d10f63206f3d841d6218f55f90919114b82c0397bf72b7f54434c27ccaf3736e3b65f2c7b5f63ea6fceda98912eaf97ca5efaf2838a550833b77a12b21af9f3c9e8217d0aa2dfc615b6b94590c01c4eb3c49d9913d3739164363f62c6e182a594ea6ada05ed175f54e9bed906edf3f290620a63ff98fd9c26c485ca9196454f13823b8b6f7cf9277ac8742a94e837b277e612c9ca74524b5375774b8063b1d428aca23776356d49a81cb2a0f5ddceeaa85263deacabcaf01dcfdca11079c0d2332725e089a014d769901c3338e157293e487975fe58762ca72bfa8d4d0017c8a74a7 +d32c3edcc02684bcd0371423b7ada31c9bc0a4a50a1e2b51a09011a6735f18939bcb8fae15ca21187c991c044115ab0c99399f63b1ad5c14f76f55480e421c942e6cfd96bdb647375adece278d52f3c802ccf134fcc523dbc6de9f6be8c999cd8a7fe2b1e447f302c52aadd6d370e9e746129205a5f4dccddcc81441c0ee6d5cea4fcbeb46fdbb3db0cabe509978b6af30f0b5c8d27741d8f498c6e21ed284366a72d0273e66dd3b575b92b53e1874ab9423d811d84bc571495ac593284de67ffbfe6b3fc35eeae7e766a52fd8c417b8a4e6e49f2aa203f920929f5b941a648d0e51591fa0799f2c349f4e1d0c12cada40bfa90109b5764e310e0aba3c71918f +e3589f2ee63912e426d037aaf4598ca856e99459b03e880e1924391bccf0aff791fc0c0b073a75da4f2f862c69eaca7f9bf29d96fa1b85c1a8b891d76f4c0a26b154a8197809c52f4b1f37708fb8501cc893096cf1036bb42f187e2ba79856bc480bd2aa81255711ca8412f830b5cb70f6e5fa0eae21829a53780fabb22b38d33800d64332bd4a1fd452aa5c4c379090f5487a74bc58dc00fcdc3d93ef255183f64b936587b8cb26a30ea8349805e32da360e7fffa98a136e716f98e9c8a9a5a11970d324538f401334724a712011f3eb8cba75b0eb5cfbfefc4e9e47370136fd02e431766b1deefcfd3a534023201290613dc339e3067f059cbc5520b6f6de7 +e7a528281048558e38dca99717d41e0964ad0001de650833eec75b97ce1275fffb09aea7a4c1526031ce4f4ae18f71c798f25a71cb23398b7d3fff64496245223104c5b7968c3da48bf530115833d982ffec91f7f4ccb373dd81733e76f2fc75ca7c645492cbdd5cad650aec178951a6b4902323b6a778dcacf497b8bf7233462744df6ccc55ca4da2a495b2f9417f6e1d1b5b42da304b17608b3fa034df03b77cff2e4bc8aee0d3485367e037b0d10172362ea4c50121f25793ed06bf5108e36aff7e1cff7b35dd589980c523f73c89881918bf49e47d62b5514eb6fbc614cba83ba62dff1e0f3749c73061ee2c43b8087e300363399021008a4fcef68cfe47 +c2dd7b3da4d199bb9227b96eddaf36e218956cdca1b6c9ff734eb20fec1c9cd6264ec79bb0cee254d89d106f4e389b4cf8d05c1a265c9f3875e908b8e4047efb4fb321efb51add1383e795f7033ffcc6cf065c8579d86924496c383cef0ea4f741d0ee9bfdbba3cad58fb4abc2b291c0b57d7b8feaf546857df36f2d08b7bcb720eef9ed035715e6f155a09a2984c7d449dfe5a77f111ea4c38fb81461900c41bdd9ceb4627bfa35351abb015bac681df8a23f987a2b0eeeff3d51daeadb2164e818624c04c5db0c24e0d5e147e5ea61fefb825d24948a21feb7d13447eebe75397f605cc0b8d0e540791443f79b5262e694468f92dac3aabbb3d5a60d562d9f +e74c07c3194cbe1fd4c38345e513823c1c91e15210d45b72302e26f5f6d037406c629f47eb8fd26afb50035960dc1b7679bdb1f316073682b015ecca783e4d2331251942442029a7db8aaa6faf25f32504b6ee3fd50550100539423459fadd16f509cda53fc3a9080191895e54f5378c0ae04001b873f76b99691395924fe21f280128806862d5eb67c4712f43e81552158c737e6559fda90e3dde332fbc016b7b24a54d5bec24918881635a804465937eb4ae04d174ebc91a572a96adca03e3e481a67b93c1a60470aa16a9b5f2114302f76044d811a4b4a13cf4c92cc2d1221a52826fb3f7c913bfa6afe6208d7eb862beba55a92780faa66d9b08573f7047 +e0900f2a82626bc9d2a5a41db8e93a19ee51064b903c1002dc1b7d01b747a15814bf6023394ab60a3b28f7cd2e5013bd18d7ad5e0f2ded51da400cff3bcb51fc734e44251244b22093293bce11dbe8069d23b1fa82517ce03470a5453d06c904df86ede69c7c28c0232e6febd6627c7a9b5d9593d15e702f88a9a8e7b31bbe2bd00b35c0cf6bfd307db3285add5b920ca7ce41b93419e3567f2c3e022aebef836948167447b11df283681aaf9e044caae435449f337262e0b4c6743077ae01ce6956df3ac072f71b113cb39e46b01d27386231f24651d11b983474c7fe3a4a7c7e37eb7c84d2d9d92c9eebd7cb121dee1c91af873f3faae45b1f44e96d954c7f +f06b3e03c85eca063e0eb4eb5a0c30a0c81d557e7e842ebc6f1f26f1d2d256f1926ee55acf7279e918823382eebb9cf04c8ff91e72dc2858260a8d93a8b7bb48fa65b5168dcd96926c496f75c7a796a203628133d40e620ef3f6fe7fb4433ae3c9239e41d7fca51538a984b39669096d1730970dcfac5767746e594bf6d011ec2f3e157636059e9ea5877a57a62edbfa653dc27cb366becf0b4addf95ad7cc4512578292b069f43b498b9586178d5713739571e64b5b36bbad5bd0122520be4750e2d9c079bab6adc97f068ef2ff064c61910bbeb44c6afbfd89a6b62d65992b4b022c4a8e1dd3073d042c8b2f2cd2a081415a800a7bd164930eba152cb4b2c7 +c95357f2ccec52def51e5499c5457764a1f9fca7e470712e82f5d95bd7878f9d7e3d474717cc42f94467a7a5d0b5180634140c28415e5067a1b35c0c343e8a9c0775b4bf80e3ffc2d39520a3b9b38934f148cf0cb5bc4b3d2a065a3251b433c151f9e739d2df035ae4d01af2d6a2040bbbb7abc13862d96c0c6ef15d13c90bfc8af9ececa86ed57bd40dcfe428bc38add78c2bc9312904946aa507b3266d0ab98d04318686afb4f2d3e9bf1f4231252ab1337e81f6f82dca7ea34957c3d800ca8f42e6dfc2ba47c915a869c2ccac229a9d99e45149c1064344d07beedd109e2a65c6d9ce01e5cf750e1ba6314ed626fad00980ae706af0a2c445e60857aa353f +ea6499943333e84762680aeed36b40681e4f7be55ac8dc2c3b37cf48b810d398ac9bb3837130a7d94afdef728629b4c47287d14d008cc9d08d38fa6d1d6bcffc2191a7d535211a1cbcbd6d5a5d072153e5e4730f05a3c1c341b94b524b9ce03a3ea31c428f14e4f016f8a5d2d95e68a06f4bceae03e3bd0488b47871868ec365707adc6941176aecb6844fba2fca9c3e765392c6228c6a7e079bbd38567e1b8d65f2bbed04d04668c37c530168e282b72c9be5c7408566a82aab4962ab28001930ac0e72d32283174a919e432f1a62d2cbeb1343d7bce9d988440f0caff66d538b6ce44ef94ed1b2de0fd830863fe5644dcbc16af50480491b9f53ae93738acf +e3a4ac890c3e58025506f7c62b5eb417aa71f78f757e7b6d8b3e67111cdd9d5a65459e3d0d9f5e4c3901afc5b6c4ac577223e6e0b74151a2334ca4f9e01548e36484a3a6260db6a9604e6cc9734e693b71d6338ba0498b085cf5298f70893f7a20bdb729139d850de9e5bc19f33602750831db5544faa7ffb218707e014e8eb2aa637cf3e178970f9135f0d53b674a1582b3ed7148c4812966d51b97cc8a3a9c2e36c8f5b7b3e972195a4afcae11015d7a94e4d05c3dc551e01b2fa78e2b88df0c0de2e90e0293968880fb354031da65616f7c358fffd2bee53c16fc2f20079e4db1f615a5cb9c36a5144157ebe52e0eecbdebe08b5f2da2fc2065e9db09ecd7 +ccfd9fef533539f0a218282001965855d5a62902b28577fd9363731f803efd5e6d22aea90388b3d940a6fb71e984c0a4cff3ae5d9349b14f80de9110c71c7db2d543a7f8cee1c3540593de2b1da5ba1071181627cea360372ac37a0d1534f4c0c77968b05cda5d98640fe87b37e6b9b482c983e8bd82414ce3273494a61c2b5416a5690b5de507d8eb8ce034779b3d15ca3062591571da3d78f4e7d007e8466a361518f01bfd4cbd67e162d3f07d2a0534ca155cae56d18facf7d4f73e2c5f82eba65ef80ce0c5cdda5000aaacb0d43cf9a37a0c1fc2d87098835ce24b2eda77d892a54764a72b91b273779a1f483d473f2c810745c4857e9f0c800fbc159f57 +f410fe8f86b34461683a5454b34852e0cd3a9b5ef04e305b036a8a528319706c410b8c85094379f4c94c6581eaccca6c75cf82a3272b267ad7ac029f0b93837878d661ff95e8094a9864f6121d7dd434ac530dd7ed44d1922b9efbea12f9f78a9ee2bc01e721edbc7ee9dd8ffabe321d800aa925eeaa7489c9b74f8d4b0a9a5d22e7ce646c4c49f66ffde916d1a8eb63072a8fa3f5a7ff13c133af630d4edaef9a0b889c506c6bd6f456abb31748fe07d7e6c0fe63d63d4e858572efe14511e0d1ca076a5224a79093674a537c248dea1227047a443d80358cf355000af393fe7542a5dc6c128a8f666210f55e915005a2d93c1d834bcc6d0a1dcb94e035f70f +f40393b20564f06d664383285450145574eb12e94cd70b46bdbfeb69b171da72144966153460d6b93b93ca102ac5ce87faa59cb6584119da9b8b198c83135b14346f5b57d45a1b8cf465adc67fff10363159255dddec88e17da8501564c77180a03cbc7139e09e26cb82f12157a9f3099e40df10ba71fcd916a420bb688b1818a76502f73dadb92050924f0554f6817b3058a400cde46a79c5fb7888a647880d5e877b7983c5145d9904f0ee9eb42bd280f4dd7298cc1ea199e91d1bfa790c0fe0eb4b4e52d381443f2b947b1ba1cd4f3ff678c7394a42c1a365a8729890f5a361ce6ae5d8ec73d026f9c78793e895356972310caa6f34b3815c101de313f3cf +c78625ca4ec2e559eeb47bfcfb2f6db0df9f9837c4b6e89c642c3e35a5a987df1b389fd37578028eaf8980d3332cb8883d247dac16aeaf5bc05bfb29a459b2193554266b43d190f58785f0b58f518d234990e07ce0845f6c5fd59d6f21fadf787a99d0af8cd742f2f5601ff4b908886b382695c1de98e994f62697752d6605729a5d0eea27d1d0716358ab069a0b885cb04f2988c94cb90360aa2d5ae2cd6aa9bf7cf338a3c95d4c29340269ccea47586c2329d317087b9a0b13ece8b3a9713700153cf5de4228bc98acecfcf9d82f7c9f6940f75a3544f618483064a92a0ed07b3109b4726ec86e64b4b0b6aea9b5f2f79da23faffa0bba659a0866deea37cf +df2cca7482564edcea0614b916dbca6cc1954974a78f24c44236cd2af566735204eaa16e56863dd66d3ae916125beb8b13d5776ef17ac9236e46c7ba385523822743f909632df682e50af0d256849c423180a7450413911cef7e3b0aecdaee57d1c4016e86713716faa63da303d2188b251e85a1754dcaca0abcff5fa43bbd844ae7ac47d2073e1a783d5a8632517cebe8a9785e03d7efc76b7d4152285ff3685ae60fd2cb66bfebae99f505357dbc0fcf7a1a9bfcfcbf324863bf617d5471150b71f4e8bcdb9c4b91497ca4f72a2686e1b66ce5161cccbb5b974286ba0609f3e92587cbcae8cae37eb548e1da05463351c82381290928ab9174e024a8cd4cb7 +d049d1a71d6b84646521a7a16bd76a98a57a48f3d470789fc6d9d3b5c55675aea2971149f14223f4d07a453cbc905d4fa77868554d9b7bbba22b1b74c068530ed4d35c916b6bb61ce7cb4151fc1dc93dec8c9a7bbcb759dc39699a5f1672a9fea5d45d6f3a8cce7bb6f7e7ded8d39d983696567fb698a200855a4b847ca9c1561a1d1ea6aadaf4f95ac6965faeb4240a305f59ed1bf46cba08bff08a5f10cb2a7b2fb3c490ce82d47aecb6cbca89675407ef4ee6022262e9f9ea65ac04a7eebf8350c444718c953a24e0de90b0154b1bfef4ba570b6e256d622c5d807163dade1084b612960255866bb43a06f78c92d9e73a1284547e8cbecebab54450ca961f +e84cad9c0ce94e328008639b08766e9eecee2c33d5de34d4c0a318e7605b9daee472a293667ded97811d41e2feb9b12439c1f33ebbef3e4c5cc2d491dca897a517a80108e02e044fdfa741532a8dff89bcfe88662ff08d39850347c5ad7697378e4fd8af9f6225d8f230a7a953bb5e83cb2c4e78d67b40cc2807472a88c067c6907fbc7ac47d6ce6901ecc2df613870d4decf92bad8afc9898ccf0e40a3e28ce78a4ab5e356694a3ea5c46218f59591f74d0d62626d88b90f81680fa381f1c0559241e757ab6579199655773cbfbfe12ef5305196b2a2a489b42d2b8ede27f0ce5379862e50f7cfdf7abab3b35b46da5f7dc03f4e3119756d86a45b10d5128e7 +df2a93b1872d97ef91c7568eeed70e2c0e39ba36cfb475cc22c8f1afab5a900ca8cc72a001d9f9ea4f4d0fe0b25c8674f6cf71af05d8feb10baad4d172adbbeb28788bb2815c82c6265724ef1a23b605914a8f58e65395e799a1cb5401da0382aefa82051aefced72512f35f855fa9832568220fd8aba98232f28d53a189e1c8dd28e60d038a1046dcbfcebec9c79807779752ab744cdda19a222d6744c0a284c96fa37a0ce23c5515165b3851003905d598116cce3aa2e1c898659bbc56f4b63949d80ea9e42baf0ef6396cb60d981bd648eb6a3ca7512b06ff1db82cda448b087a8fd1f7c2b168cd3532c8f61d2df323dac91e931bc81887503e58a9183817 +ee7518cecbacacbbace9d493d42ffe3e639c85a0240cd6288bb60bae6fa6a82e90b55c096f95047161175290cfeebf575458025de4392b140e3030b14338dea868655245f3b1282f10f6e5e032ffbd4375586263c2e49783a7e8aade0163f0c374e87919dcc95d0366cb99c5693e6c4c262b4a52f0d699477a550cbb7d39fa54debe263025bd0484bcbf7edbbfa0927d47e8d47b950ac72a414af57f8e3c6d9fe803e817cc8f44a14c5684b9f118367458dbefdb4b4eb08a22e15bced544fc750ac0ead4db1a7e4c8245b8da1de43b0a80136f01d567697d1d31005c193e766c01b65ec03a19c1162b3731b04ba3e3c33bd6db2db579253911194b3364d701f7 +dfd7521f35eac47ae5b85926196035e75bf0de3d3e20ac85163b2c4c6cb8c4e14c77dd833a637ee654bf1e46c1b1cc411f20dab55e9015e929323332e76787944ab64e384dc63e52eac9c522ac13bd4b787c481eb2d523f2f38acc609dbee0ca4769b2eb592f647ab096722aba181bbcd5ea1f97830c3ace408f573b6d4d66f583450bacc45b010463992405d055d7f5704bf773569907b2e3e2651dfac0d9a1524a89426ecbf1b2f51be5e31c365f4c8b50b27e4f2286445e5fd13d7f9bc8cf71238fa8600d87df921f68e6c94bd54ac8d1ce8502d4bbdc56658818309650279dbd608ed2f845f709c420779bbddf5c8561a476ae913911bdc2f4a102b2b5b7 +dedf9d3c756008a83249146c9d579fdcecc91af09839646ce6d75442728d50adc20975a90928ef6daa48ecac83ec0544ed8c30da7dbe6862734171dfc0fd2e7223d4f1986647904d9ce04db6c800d01932da8853e1a62be28c95752cb3831dd08cc37b3f12f124c7ac27be413366231e2f7dcca6ee0cce787685681ee8d0e8de1619f06eeb7cefdb3a4a3d33ae364781dd52b932912a0bf0fbea68674735a39fb7cd3f7f07cc962229ea2bea4885e67fa355c48cece2ec1c68c96e047965b51007c9b16600a0f0edcd5ddb1c84a776b79e944c10beef3c69ba7bc8bcc16c8ff9cde3214cde426fe6c570690023c4cef79cea17de8ad52e8c947c1a4123161a1f +e2cf117921ca6d54f543d510259c28f327ba34c80b9fdd07ee6fa5786b62d5d60d1e4aa3d27e86d3fd455df4af19dedc10bf42535e33494c0f7884188abc0a84b70370e0db22f3f372dfe113a0ea9e3b1b9384d425bf34cdb895b2259531612f49ab72cfe833f673d6258f43c5fed905877b3292c4af20443fcfbabc5a8105907e1abd01ed292264f78fe24ac3c33a98d60595ef3faef0f7c7edfb846d36f7cadfd05007c3c784c7d91bbd0882a43ee3382ac9c966fb61e67bb7d14c64df9c219170fd4d1cc681fc2572d7e681f91cdaf151227123e2c570630d646c291f54cfdeee7e74e37b9bf69cded5282c0c26461fdd5418a3cbdadc87298d54972cb417 +d0411c79bb24de004dca4772085a2ccfd5d1808b3789541830997806c2d4412a40eba2aa6330d706ea04e10fe97b8ea662f297c7d5784a9611b16fa3dbc89a39ea0c14d34429fab79678382d56054f40cbdd9efb90887780cf440820ad5c4195442f47ad3d8c33a6065d8a58635c66e3ea13cf4a95128f2d82a16252fa33a5510d9c66ef6752640df45172514a9cbee2bce31ad4482f3538776cd5e238b7e008248122514781307b5bb2d2f8bf3fd4c78566ea2fa1b1725015d65233ddbb08ee169a8d645c28c944d51550e32d5a4c171625c585bd9faa046c12987c2d381585ff1bc9cfc9c66384adaee681f694e2d83429c98bdea6aaf55dc2a110558adeb7 +f6a866062f3e73742e60b4c360f8afe63d60cc5a6e02de260c0d19991569297a3d2ac4476a175a9c0dcb9f565df40dab1a1076c35b4f5a1d0914a1caed53751b69dbd23d8ea2c1d800df05c8c1590335679677bad8c4537e63448fdaa41fb703e8b965903dc647e43e5811823c5dca7fad858cecf06bf48473aa8e5d9a057b2d6f15ca405b2a04fbb5ca2ec6db709ae4c7a61d34a6fe77c49a8b1b9b711df724ff19c518f3a5424d7dd39091d5ab631f1273e0fa724e95f9c850f6fdb7d4dc95bceb7e5a45fe741c35cfd50ade9a19298eedb28fa861ca468f66bce5e171bea0524fdb6563f9119ac767a07073236cd7a12b9fa6db1bfbed3fd06ee8c67f0317 +c2e438ccb44ecb43f3774d8e67a561e52aac4d5821d78757886aab79b52825afe1bceae198b53cf212d1e8ed6298e1e2dc8dcdcce02ca544743ceb1b6864cad559964c1a233fde2449606e2cdbf06902f94a66b5306f0568fbedccaffc3258f720464172cbd6f9e278255b61722a555eedee76b776d10abb11611269571afce250aadc33938924cdb403b85b44439ee9b52fade81aabafa20160bb8fbafb92f328d54913c67432525ebe012f3c7d3617d1c16cab66ff1b7aae9d5752c3302c47f86d23e9e11a4de3571d5b3c33e06502f3537b50759110f290836bb6ac2e21beabe98e5049fd703dd1eb9479f4e897332c4f77e81ed9f9bd53b83b5cb17adc27 +cd10f64629a51ee09cf6159ef738797acde9d9faf8bef8f458ed837c64e7554ddd4be68add339934723e36430cd10671c6de4b4f2eb8e5df73799e3ec73dbdad1b5ff877415872adb4ba1a565990415d2913b7f8c7a3df156f66be29bb2ea995d6ada521def9acf90bc15d649a4f53e935dbe64c1692a1697a352779de4dcc0efb1cb4ccc1ab4cb94ba73ccbd216f919d3ff7650514f829a966d91b5143e84fe587073b345b6541516965f0a928c677d12bc9af2d7e843dca196717988bfaf7b0bb76155fd9e7a6758b2241c07720765ff01fff983159f9162b9bb3e26bb79c77911be0b1f2b41d2f3c2e91ff2fbfb20375a7c974ddad2e192469bda54999a1f +db9908c08c36dda1748f7bf150217618f08d808b40f6474dc13b8a1b0ff8171ce1b1c9618c9595999a1857c943bf382fc1f09d68cfed3ebc9edb4e54fb4b1601026971bd7418f08b55aab1490b08d8831bcc082945e2280c2792797ca04bbe80d3ac6f461b0a75ba2fc5a3b731f55b03af7b0c15f837a931796fafca5f6925d9efc3003fbc979c69ff2f8fac6cc5c5901e4473bb76438e2bfb097a872c26d9a4f0f658a7cb47d14ed08d2907b88571e284a5614eb4d5984a2e2c79328ec19765ee9957ccaf90cddfd830be7c0b92fa837d3c47f1a8eac850fa543bfc6ee650299b1dd2c3a5aca6bcfc802f74edff5fa1ef89f8af4bba6cf64b01a6ed7b77478f +db93c3a4464f6df51813a0e9bd96ced3ffd25b04cc93520bf791986d03b15ccdcac55c42639db25734359961a65adb27b7d1efea731623922382f778943dbfcbab96d6682683ae7d8114424932453781f43aeda139cf7d6e2dd5b9ea91ec68cb36bd4a342ec23807ed807abb2a3c1889a91f5e4de63611694d946bcde014517a8ae41d3c68127749154b9baccf4b9aae2bf54a8ff420c6b97199ae4523bb317d2194ae6822efd67b776a17192fa6339459264153a6458a1c98b4ae783c9fc77515289fe8d94916d416bc2e78167e4181024d177819d503698fe77cbd02df301adc440ebb9687e93f8cbd9871c66f9cc9a59dfe3ffec1718f257e9fa26959926f +da1776013d21c7ed1e9dcaa8c5e2bdb7b522d24d0ab6787c66f8a30f6afa9e1bb9427f1be896176345234840dbe7c3b824c855b27962da290d48e5fd4c2ade37ac918f8b754f6b36da51647da64ea64f01145d5ea6c43b67bb81f7f520391bafd3a328fbcd3ac478441c9f88cff9c58a95d6d8a39c21710f84dde1cb6fa6a3e2b3301a5b0cf4a4ae53abdcf25e3996455114412eaecd10557799a5001a03e37fcef0603c0660eea6079b549d488395e515f917ae6ae362991fe809d1847eb487f64007ed4bf45d02d2d56c9db4697ccc444b8936a30151d4b60b88f71213e2c87c4214d19aa9b3b861a092e1c1c1f92744a276dcda68ee7d126662d5cd6b7dff +eaeca543d1608989e7435c0e893476eddfb20649b4297bdd676fdcac27354be9988d7b753608cf7cf2bda090e466e6278ffd127b50bc0a4166eb9d818d9a89b2d98ca9e6e40f740a5ab42f6f45800b7d7811224b431fca73594a9fdaa935eba7b5a315dc764aec032289f6b2cfda9b9d69cc590e54ecefd185690e0c0d63729db0945f31e7e960edbfc485d0eb3aed1cf2d38576106708e7bddcae5dbc1ff957d3bb55734f06e12d7d92843300edf9af87ab811cc888e1eb83ee75ad6d306d3f733e0b49fcbf30d6cab87c4366efde72effb244f01f52184c73492bbd74b3d12ce1886d8224fa9af8336c9e57cbd7331f22bca7636ffe2f65619d101280312a7 +fd14ae125372852f3c024c58dfda13201f5537782a93db834ee00d20ce481b91bf1430948cc9164f42cf2b7f63305508b05e58f126187775d73e6b5b7a59190ff45d22351aff90fc2e32375156f8816b9e047a595b0b09b2384cbc0a6abd802e77433fb2222228facdd5700f9e9c0689012d06498b78d17e1242708e92d07079ff321456be5297f755b780cc9700dc91e9d6367eee09bbe581dfc8c7df0258a1f52a99b32df0275c147b95a6c3e2567e0ddf808485f55746377b5653acf5c7d03a910fc25a2bb4154ab148489e37d87d2a9063b63510e608baeec89bd0024775044e2ab1577a8518aa72a5d6fc874762aa3b32c7e77097edc9c4d4eb1e89c0e7 +e3b54fd47d16df1a580fea715b14f556d54284e1c6989c3dac4a2f9ed80b9f6c94622eddb58a9291280d8dcba51ed31c37e8ec3cadf03bc742427311b402173157ceaf86e5a2662bd9df18aaa2a39e252dffc576c11295fb98c42da742b1b03f04a751799108512d0414932663e887794b63504747d0286997e32ec143b54e6817ddabfb4c5637b8b7a9cbf3887b1445b6c03dfbcb36bed6bcf66aa563cabba441b6581f714855e3147762b4f82351bd34ec22884b8b3dd2e73cde9bb3e7d0ae1a315d2cc82134dfdc7cbf73e576dbccd0d2c33f77c6d71b41add666bc0ef2bc4f3c5829ca2a6f7a4ee09e280a4aa73d638615f3f348e6a365edf81f60c108b7 +ec0bbc10a6057e985833771f0344117c39eeaf1eaea07bf8485309f0f03d2c557bf1a37dd2c15dc93fd753fd4ced41e7f2552a2a6e2182d89e5e52dfc7f8a03fae2c3879c75d3b41c163e36972a6a1c404fa1f731976c0c730bd3302866335ef59a3fe75c2dc9901f2a3756562bb4daf52c2fefee3c02f3285136571d47467d6be950c120cfdf4d2af6f09a9ff852d6bf1f032b989aacbb49fc111ed679fc762f3dc2aa1e13cd1ca0f4eceffdc7a6690eba64fbd6d8c25e2875f80f54f7c019990590754338eaef1a55d7fe8b8790ca93983db4df2b1fdde5c998bead1e70925c738f3d55f043d5fac181ca45013be180f744e147aeebf997f894d1d9b3be657 +edec9e65a39b56729833cc649c8d336bab6cbffc3fda31ac2485c066603d949efb312ed284fbb3d035d066d7da70ea45f5827107d5c698931590354c911838304c6c91c7efb59217115346a9a7d5957dcab5afcb39fef4082dfa9ef2cd2caf79f43e21302e970cbb10d7d08f6115ad6b367d9c53a89a32d9cc4f736856eccf63e4bd91ec533b052e4e620e0afa85a2fba5ca4a398fedb077c528ea0820f6d8fe70d062848e445ed84a6ffdc19f4e46aa3053460ac2f633ac1e28feed8e2c3ee68d1ef3f46fd7db25858c3f15472926c2dd218f9abfdec42d17686cde7f73df0e84dbc6e422ca71182797eebf52d9591b447f7a209c521366e1dd7003065ac28f +fd9f521cf0eb0258edd72303617279dcbc6947803712ec32eefaf7cdb4eb00f104b2fa7db2aff2d2822ee1585a43b0a94b9a248351b10304bdcf562182f63f83fa55dc0c646cd36d058a00fe61adc7a95d75347f7f85a4bcb7819ec84322fefeb52c6b7b145b18dde1ad2534f22b06dca43d07866a9c41f849c3526caebc1fbd2aa12a2c2712eb29930e2646500119cc7fd52eb1ff88220e68c16618fe42128b9c09c9d4e862f1db1393328fe72bd9a394d8d693d745a9db233b86085e8b653b9a311328e579ff0a450a783c9813eb8d20b23f43951fc3aa62b03edd38bbc46aea52953b7744e554e28ed8aebff9495bce394b24cda0c6381489d6b16f378347 +c6055ae988fbcf330b949d86e6a1c389346c35e11729c7ab138ae091607f5bfb2159b1bd81444e929c50e94939d7a38bf162a4a81f12e3042cc55ca214cff8215b6729f0852febb842e7d3b016b2eec4a3b5f78aab412a7f450d693338ad0163bf972921809137ae084178a68b29840bca645f0e351ba122bc707dbd23493971da419b0bef615aff4324fdf2b3790cc7d2fe1ca0b7e1188395d35bff60e2085ba8a009b5729e09a77c4712a2db29a0a5831d9085ffa9d3108f9a0ff343f48d25842060e881c92e2527d9ae07160daea3b14aa5e6802d39598d7a56affedc5da1cc4bc649e2527c791416389594419573f4fb3759da7dbcdc9f5e2619638ec09f +de5aba29c2a1558874e180a6326600df2c925b3cd3ef3a7cacdca5a9ca855eb25ee659987b1436b3c7d94958d3aa0c47cb6fe6af15415095dc0343e00953c0bb7d14c20ccfe9ef1eaf90fbb80840595d4f1bff82c5ffcdfb16c77bdae058ac17b1790cbdbc514bd80fbe8bde2dabebef240b75887faa55ccc6422dfce87a725ac3e785f73782cc30e7da8ad0aada823dca5c16e2fdc14de1851c5cbe4a4af1953e68301023e9e78efe9bbaf60149d0b181d34ce4824f13a0ef9bc1c72ca87538b82a344568160244e64bb76744b938f9776bce8eb0678b07b9998c212e6f1e8170e41737a148aff91fe1033bd027bfda0170efa6410d268f72cb2137b1be42af +fe8be213b60cfd7df67305e5f0811facc5d0136f52e335eb101a9f5f3788ab9151725c2bb1202a93085ce0cfe2dd8b1afb7b29c8a7d3184d738eaecb30fa64763772a3f2883361ea7026f4a6adf9bae24938ec35437bb41f23f88f5dc95f3acd4e1fe81ec7d13bc13096a1d9ca9553282183aeea8a88f73d4ecaaec1209173e306608faab0ecfc4aedbab02b6cbf576e9daf45f348840e6763a0c936a2c3e3a4b77fca27058669d482e356d0d323b8e7333c5fc98bc49c1a3baa0b159661ccbda3c42db4bfcc6d873600183ccdedeeb1b7b3a66d3db4cf65c9f4a9d395d77777e7c9ddb9a0a34f0ea6ecc91e0b41cad22931841cf09fbf98c87cdd68949e1857 +debbd0bf759b15bc73230a50d4c06ed75279dc59e860c634ebe1caa60e8d19f59c6b5a9a0ebd385598bff4aab3179473c24f76a55d0f307802067fe8c165d99be0de0afeacca1a678756cf78cf1a9c56a093d9b518b63554fdcc3273074d43f39c4f423e48fd85d3fb70583668a861c071f1ed28610b0b55de0fe02a0a4bb9bbd142769c2492d4593c01e4a83646b9eb0677fb39cf65eff01f72c96a8eaf6b9a220b1d52c37da870173a2890d9a9d960891b276eda8f1627f11a69b9450d9a80ba3076c0db103f893af89552cb71b537fb729395a643f133dcff4d5e220e9bf0815702b7f407acac66abb1f192742b61831d39da42b7bde78535dba2cca114df +c5c27b009aac04c0f1f4e81e605bfb217f053f353523277a0167101e204758567072a748ced31f4d43dbc0418bfa90ff78001190d9e11e24872b61384deb5b978510898fbc05d5868fe60a1b494b5bed2e8a99300ae807b41ce8f86c45af6953f6a9904a317c52934c1fd91b4e0df9832f034ba63b5efb1614fdf4eee2d1e3f9a6962b68c6fa9934e135eff4a2a2634195cc1a74902b41c6c7965f622af1740de5e13e2fb622223aceee8f50d29a55bc295c9efa180d680fc0a358563f6d720e503c0176787e4c742244d89776b71b110808436f0a8cdd0fc16cac61a6cbc5676d63f1916a9375a20333ac15d43a47b668cde8fd4a97af28a19324bdeabb1b5f +d8b4567ea395e9fd7a3e678a5eb843fcdedd06e4b3d368d7483eec44a6556d2a873c095df98965c3239680661b60164b16320fea9ada2e53520a48a1a4c7f1e66297f2c464864c607deee39f3f5680210f22012cb6b7fc2a7afa680e1c2befb1700563574f241a7c5b0c272f17211ad41dae0347019ee8dce8633bf13e543eba522e88f865fa38d4de2ea40d05539ab7aebf87c3b58b955b6b7d391ccc9e18e48cf54f39d74c1e173adecffd0975f0effded9fb28a95830b365cbf5b6886cb913e8e53c7762dde7c49e715b6822f1c05ef61ac2e7bf00521de60c6ac1dadf36ad77ddc4e332b3129f01f5d0550189f34c8be1dad16fca15dadf56adc9036c7e7 +dea64394382f2395af73b04de0be54b0a1e72ac9a4b26695a73263a9ea817a659697a4e0131e3fbe3e8e179895ca713b5b89a437f9275abdc8227ce316a9e43a0cf76c6f7267d90ce12c0abc45baf7472c076904d451b39dd273e53f7cebe4e5b126144cf77d6fdaf0df200b721b09c69850e1bab680d90f857891a6f7833b73b0cf0bff92bcebf58c9f90847a28b98ac8468e30cd79c668c7aaf4b88ef8ae3ca427c03491a028248ea5b66b5c72703f8de021a01bc98dc2f006da8ef53c430582def4b1fe42f11ad617f523d86d7dcf93ba2aafdcbd7fdcf37f522cdde9ae69cedd1f7bc122c9eda56691dc21fddb7f5e9e1d2621e27df70b9448d80afa556f +ea028fa5ce447a44b19022efd17c7d6e6be7c0ccd0df810c9fd619fe5dc6b7e896efd954935a2da2c45efd44ccadd5f215a45c7c091164f70db3efa3c82a2772e59ad2d7e4a403c8b0f96071b38a678854bcb740a8a1b046075c559227263373217dfbad49b0a29b4f8f7d8669c73042113bd1dd59002b651e915667f329c75f0597c882ff20ee3e47628affcb2b935b36a75091749228e594aaaca7d710222ef5d68199fda557b834e9c79dbb23e448e19a43a9e70bc78919697f6ac5b25ee0457c3858f10c30029a8e340e22084b4e53cc55d7d8c94576da73350c02ea7e2c27dcedc62dd2e90560fe4ee793f3a49433e21d76da2b12fdb6f759e83dd3e777 +ccb4b9e91af73c360c6747d62de9f0326f102c4c702240c85f58427735a6218a7325bc177785fc6cf523214b0ea227772d75dacc53069c0856a24c537138d443c9f99817734a887d66b34963c2eafa2789cb31de0e974b17e43d772615ff385bd58dbe028861586ab3c6569a47e6ea10c360f8541ec46d3952ebfeab558db932da8080a87760c6d3492667ce808e9102c5e77e913eb0cbe0320b6e5703be29e19f757d3cb6f7c33fdcad238429e5388f944b088634197d9faf2b3bba86698207eddf29125efb224767b88c6616c55949324a9acfaa95823f6814c49a780ae632dde42dd0ea28c7b2eb39c00d9a44d41b0c308325c837c59c10907430c1c5bdc7 +e77fccd431e558b7a9e19b4125bd2736bdd6a64f36384759896ea44d263af2a78d758b3f0980a70f478b8f62a873ff96857736b8458b84cdbe4b9cadb8c01d893c978d04b14505b8f84f1600047afeddbbc8e0f3d9943b9c6041dd0ead09c48c41cb23aaeea5157837a7bc47079ba332555c380949be289569305dcec0bb4b7ce2836d46312b1cf8f3072ee80ea05c5d79fc3f1e879886ee92b8b459fef764564f66c07136c5ae37173ed9c43c851b96fee7097f3950e8039bb2d1c8e30216a00715405fe0ff4089d8449ae016c594ae4ffdb0cd26064d076e6aae84d5e273fb762fbe5ae2847265f4506cdd3d769797dc86c4548be216ffbd09a4529b78bc07 +c040db7fa6e96782e3a520e1521901c5e9d2f929b0e3a9e2508f7c3974de788630ae1129d1c919fc3208b65b114419ca5ef81d09f3eba1e23797a5646b0d2ba29a11905674760fad6d148f0c9bacfa046d14b2904b133c1490eba452116a27545c87fbc4112320f42cfcfa80ece6e5c355c25bd31fea0cf39c3cc0e4e72722026f31adc0605e832cf84e5b25c1a5b96d2dbbe0ed95e4aff1f6a81676b0e51244148175c96702e8c285d503118804fb26214903cf403bd851bcc779bb337d1fbb3af07c13afc9cde9f6ee00cca36322069588c7f882928154290bfc7bb6ca2b47c758fbf390ad27eb149fa33f692d9802c31582a4b2c236beb710fe9c99bff5df +c282e19b1d80f2ae4f9689f426c240fe558f7cfa5c530cd1d3eb2d93387a7c0765855945818479860a83c4c2dedfc9961620d21677524bbabef1aaecb00f9e67c015d07f6f57a9ac2a1291c4a29edd1078ca6e1406b81caddb806e87d8b6439010bca7c9e4d476acc9b93efec259e84bf973ad8cbac1f8c4450dfa751e8e20d9ad53b0b1c3d8d79c1debcb673c2183ef2d58b99b075bc3fac3ca94705877b7963b5a6195d79d14218701cdce9f441c42032a3a574549b0b2ad6729b5cbb3917942edcf96304c4a36c4a6a0a6f9b67f88afa3e39b6062b597eb32d82c59372a4535cf7c195724a505b8f05bafbc79fd28978ca2c92fef6ff640358e88538064a7 +d72cb3493d4a2acadcacee2f5b0c5388b27176bcb1e3ac95a7de84a5cfa0a22b9086ec609276c44c2f670e39995df964823d38ce5548dabfa2e594c506826c6c1c340561407c5dc995e48fb05266c9ffbe3fc98d2da5c7a2dd1f24a0eddd0dd2887ecb02f79a79ff066a76d55dd5707aded57a68ea447f2b40613dc912514b4232c0207558abcc5786039f7ab772adaaa14d7df76778f44e87d8dd3a6353f8a4756c5332b4407e1ced1665f86c3f36a8b0a679af5efb5f6fd36db34287aa868a796ba180678f4da0b945af3f8a98fe2ea738898d6e534e0c46a7e110e690f524a26c04da492994c93aaa01aadee7b74c7b94004caf89c65d275445cb652cd35f +e40c4c7f076383b4bdf43f744e4fe517e65c086e7100de8705bf4e5d0080366a45a73a39aae5a726d0068aceb1f16df640c31c37ef295ed824ea960ea143959b16fb6313dceafa3f89f843d9f4378a17f1de643b5e7594119dca7e94f58cf1bc512dac0c50565994ac9431356d8c8b7c28aaf7f98895c653e3068cd8b23062d453aaac0f5114a3220b21b7f1ee37303bd9904995ad2138f39ac1d10fc7a89c494adbf38821e68d1a298ff6666f8ae2553a095b58ef2dcbceaf38cacd212c74f728ed958292afae3657cf16cb8b0637a2b258042d39378aeb99ba33e314aaebe46083ef9495ae70b21d489ea6c27526225a113be3194d48b0f4be5ef43171ac67 +dc859e79695db79e27159a8cdf06f33a68ebc6afb8da98a666375d4bd6cd5085095a8ff09931e34ed08d1d4c0e281b8843e5906bad18e5e49f326b4c5e9783220b655aedf9d0a5044078589d6b83808b56e6166daa06aaa575f05bb9f1033326f3f10fd81f97c4305d40768db71cc70cc14ab68cabe184d1f8c20dc663787bbdf7d4aa46755d87c359993c089a0cf83e9efe8539d6575abf4023f4fd242c78292756b93c3d4d31f38c473ae60ce12d1707c3b7250ec8c741e6b2de085d8dc1a1f147f8a402f9feead4b49878a4dfd38c3b5897a41acbcf72146e7eb6c4c44db24982886d9d701cb430b593540d6debf741cc39111dcaadbe7bd1c587a1012acf +e62608b2c2547a9b129718031b7d5a1ee32024619bf2f62b24bf8fb545e3007d49b59f42d058d8ccc1f921b068516e1814d65ae860d111afee7470fdf6d866bd35ac4eaf065e0264bd345da3f23e6d67f39ec434a4d43b550c41258236a0476cca3f4c19d4f0909cfb7c5f23c8d63b25037aa06fc3a9fbfc7a9f230240eafbaba36f3a60f6b0e857a6df6d5f6605925d97244187bb11fec940713c9c8ddee712bace09a6a10d3e1c84f984681ae087b05550a6dbda0eaea464ab836832872ec59df657bce03e93f890449757caf9a54030cbb8b46057e53f9815d41ae08b8bc10e4818b49a805477c5126f72deca5635ded93186f9f45efea165ef6f20d9da67 +d42736175243776e685c815ffc9d380c322c64d3b0cf1759ef505d4dbaa80a59deb133809efd3a35e421fe9fc65d0e663d6aa47dc9fabad0681663f85f784140b8a1b75187d1caa49b74b1267b26af37b0a286e63e60db9fd85253d3692511f33ec89db88c963c67b31d5c5965ec6db73d64380b0dab90abfd8d2b15b5225d6c70e3610593a7a8f46844cec71dbb7239641794037fe1770640d56a6dac07a7340302470eb80055b98c0eca5834a29e55fe178e76da759d70a69bc269f136fcd41882c8b2ffb5f34552b82715f59e5ee76bd8cb42654a303f7b50e6443989b722f43f475f26bee98ff51271b0de9b947664cb7a46795e0dbbf27c0d88e03e522f +e421ebecac0277d33ecc4b4d16fd298e51df7853ff43e4c3fa2dfc18b4d73e32cba74ae2857eb5ebea2fd9991b4540b0597de2a3c8d878b2a9f3f044cc729de81112e1e1d1834f0c4550b0ef8ce53df47d6a1d4bf03ba85b63a10fb6d943646aac84fc13edccabf308a9c9d224bdaf0c9282df8e57d29b354b36f11ed2a101ab4aee6b96ab1900f9a40a32b8ec538e58b6f7841b87a3f9353c1ecb94c0c5c7dcce43e412e524c73cded37e59f54c882a2edf821c44a3032e2aca8d7c361eb43c96306043b3d6c5acce64838eaac4a5f8b5727073101da544d0870544f0b23020ab180d27d0a117a1cdd0ddf7bc5d3ae4ad471ff5b6d4c27ffe68de70dd6b8f9f +ed697b7412212cd7b1e187adc68aec388a44df1972640e9bd741ae1c81ec6d7e10a6f6c2b77455848624b3b0d64dff539d4881f22d8a88b70d1e72f921c7e1cc46f7f01841c572b9f43e93631dc84d962bdf7ccd13e3b6e7017c00e65bde49548dc3800aa941fcc21a0430a34d47b3121a30e9b194dea12185c298feeb7af8db0e3ee0a425bfaed90f74b58983fb6fb0473cfead2cfaf0fb8a965bab442a7bcaa2c37fa16b4f4b1593f809473cceb96e144a306b5bbd0dd4c9c9965a6909177ad187a9cef227628792ee6e2e45d4216afd2f9699e477d1b5c249d5b77b9b5ff64c9d67875ff6c4aff50e4b1a34aec1b2beacb39c3a5c2b2318c3c4e236c259bf +f7ae04d1d469b885364a7a2d46b11259ac11c59e31c8197a7bf8f43f1ab1e386908505915cca06e5e11ebbbbd2de80bfd7f3548ac876437f0baf61a3a1f1ef448f0753c6b7002d1f500819f2ea12f08a0bcd2b1fc85618d9531c110d29186f27a14e7f260fff6177e863fd3b3aa1eb05c30098efbd166f973938b13e8245deecc7a0c1aafe9a64973bd845a423858741dd73338e11b32c4943bfa2ec1b618b23f1a68fc2c6d580d493102b7e6dc3de617cebf0c1a7bbe261f5cd17bf62692481e67f45dfdaab308f94c95e17891175f46a6acfc7bde9574b01131562aaa8bd555953a6ea9df224b82cc61d7559011f11aeb77c068c233e560e55a34f28fb8d57 +c957a1d83f69ddd571d00a91e08843fcfffc117f15bde09d52979106e5a65c576330113c34d3ac301331153d39c073ebfdc0171f2108b9772b2214ee885d85b962dc72f274fc74c2089f6b353be2aeb578c4c27278b6f9bcb75e78aedf7371af03391c171ae53903e34dca2113ca3b7ea8116198bdf67607e2302a90f445886954b3a2022a30919b81481dad85826ec0e1611d810126aa213e8b1aa347d504fe3023128c73a6e6f3341e460aa7f3e8a62d14947e52dfb9bf7a29d125038a5f74ab019d86d0608a01cba554f45a5ec7fddf8bd261a712c117e52be317296b1a5316bccb0ffcedd3b4bca5b2f8970b9dc00fa36f699027bfc36b6c0cfca835d77f +c696af7c5ce19dd99a08650041fc22947f3f34b98274155e096d43062965316396249c4e7c02c4331553d981bafc6d477f056023b9eabdc59fe5929cbb0f6421670c4e3689af08fc23cfb9823403d393d49d9f766b645eda07137e479c8ac11abeb68632c482117df6d3ac46d8617badae6e27f683130c8e3b1bd353df82fd045df50f47a485f737df086ab8ff14b70f1b0799b8377cb61cc0386d7f462008b7618ca8553b7a4ec564271daaa68f78acb7b6168ad52c6bbeb79583fada56fd535261d3e1302fa5e252babe42f0b620687ee371ed3667d31c7450ccc22f0825a623e3571f897366f076b781ee3f1268364db1e1c0256c68a9ba98f37dd551480f +df903c218de7cb92ad4f59514158311abfe265354f5c0f7f4c3ca415c30e46739d6a8e7b8ec42748f6e8be9ddc6c09e0a9bc294a66e931334ba35355cfbc1d88c4c6de8e555bc0979ecddca5f15abf15a7a0de7eada6a47825eb92dc143fb1eef14d1e48fdbc0e5d02fe0a8a76dcbf419b6f5bac1a5c595fe74101b873b99982a8b3405e319162324c6314cd369b839db095611b038f0a0049fae18786b1a512e36b947c94cfbb0786881849a540b3336088636b67273a019319a2e46b3da4b9d566c33fbccf3c68941fe593757905e0abee5de8a1b02f82e4e4b08d14291d500b73456daf28c651703a36cb1dcc114bba1707c17bf447cae2d20fa69d3b0c27 +c718a64597c25e04df7ed6df467692ca6146b0c5ab894780db39ff20ff4d167fdac80ac82b8584dbba68f84d2bf6a48461ef69563cc8093910d8805b5b10d4a83cec8fbe6e2d35388439e8c0a33d66ef1b75cc043480838d120898073ba3904da62f9901dd9b22e0183daa5375a5e9ffc0d5276f4618929fab1d2b16eb6705975bb96853b140a719b73f84af0982a9040245337f8d40bc6d0dfe044ab0166492d190b6530cce38516408e2924612bf3a7428654e57574bae3ef8ab8fb2fd3f67cddc0eccfe2d5d9f79ddce7b2aaa68d1ff8e79611292f71a7d3d1136776c85b5d4c9f2aa912439e218fce264045433aee77c2a02a9d8e3d850fc76201f615207 +c585bfa0fe07693a2197f05577d98920f48369bcf9374bb4103198fd3d8f73220725d10f44154fcd31824889e981b610743e665a6dd65a3a6ae1fa29399fe4f9b457d0ffa65bedd14798d40c943591b379cdb3111c94eb12843452234039c018281160fed3eadc5463fc3c6ce543df971c9173cf629f4536b130761d40307fb85ff7fcdc06fe33d877a8bd3201c2d3dac76249ba916874ec059ae61f62b7e259e316c82d02dc2b14d170f01d804c7566be9a7e4abf77941c726b173e2d24a5a8b1013cc6074c2f95162cc62ce9bcb6a96eead7fb2c0c2431782ab88185f1846cfb2633b4cb419df4cce1c3187f9f72cc0578ed9b443d03f83d77cac9e3ae65af +f5e030972217e22fde75ccfa9be5d45b156402295c059a13e20442babd491d791fde2eaa5c98f761b383153113f64748caa5258e37780f3658c3d3de4fe3676980a5d981fbcbebef5c272d11899307e01ada572fc53ad9e16ca527733530daced8eea625ba13fddbc6db9a378b9ebafbf2c916380772e5cac3f5ef10a10dcca8b22ba4020200fe0d24c188ea3df24eb0e4b15ede48ecf9534213259cab79001fef120097adc41ae813d2e62565ca178325ec074de2b46464dcbab78a67eee0bd6ce03a001f666c2c96bd4adc601a4cf6db1df4cbcc67fae57aaf3c348e2b288b61642aac41168e1e9db97cdea84d79dbfc5baf26181d7502a398304d95be6abf +cd0a41f7976780d01e8d9e301cc00305bd645e7a8f982cc2bfca2ff1e338165af7c347cc6d7ad352f411c42ad39184d6f2507314f8c650303ec8343b442a18634e87a3e1572c1ba9ce1efa263b7a7e5e13ed603e5d33cc12ac3484180c4580ccc46e32bd612d6db6a5ee8f5efbbbb8b8ff0603cb1f4e75957a5b33314f4defb3cebca6b4871e46b6f4bcbdcfa101c223075674bb0323652fbce5e9f6991eba2f4303019c303e37824d059e5a6ec92d787f38a5b7a7ccc2a7ebe731167514053485d4d6e7e6c6f1f48ce17db2a1b792a1744e30f30fbc1bce6415916fbea8ee096474960186e9806fc14e0266933ffc3f052b4efa7d19ff0af228ec595630ee47 +fb6807f0ce2a552a0f4c392306a207c9ca2b06c322fe2d2fcb43d718875789e08216b685c90b5af91467a48c9ed5a8d9a54eefa0b34cdd3db995c3590a28ae593d30494e25609463e70c9fa246788bd9dc52b3557497393f3aa5bd4625801590e79e4b6b871fa76093dd8e4708802656342fcdd3795578299e648dfb1448f0e68f8cb2e37a7cdad7c5cb4aa768aab7b411349213b950d552b4e454557803c35f9b314430209f13de2b257d00190434e0c0e15c63eacd5cd9671b69d662af687251b0b3d0e9d154747acd0b53a097005c620f66cb38a3077deeb0c1deddf48e148bbaababd79140fbc2d68645f216c9d92897d9ab8c7a03a5fbd07bf558a30f67 +cd93359ba228c75a91e03dba46370cf40fc0ce378e93116e45d9695f829504c3d936be53494fdd4b195e85e56412e1b474a23c3e511473f929680108cb2470aa6639428560d8b885040cfe5f044d3fbfa438f1bd42e0b6072b1db54b9b6684f528cc0ab6011ea0040d824b38f68f3e7da5699ba926eeb7ed9f2d6da4c6950d60bb6cbb1e9e750022d2d400d3fcb6b6f0b2e7eb118b5710e0cc5ce699c906f93753c7c367d2502c927050f4c925eb668635c3194757033f1f2b8865b43c043812f1144c7e78033b405c11fda62336e6eaf55693e54a19f7cec4b21b234c0309fcfd610593911cbbaabc12379999a13e2923f9b5282e26a879b087d468c63351bf +c60a8c49be9c14f1416476fd338f657d7edf687b06c91d2051bf30e72b51e391c29ae855ea45f93fc5fe2f8da99716f22bf8f6bb483847b15e3c59f92126dcae4bdfea60e64d11ebc04992dfc15dc250ca23d85603a7fd3080889cadd465985ec71dcd4a964d6055d884541f4712f69ec4090d4da1c1a9a2414b0f5319c72f1e28c3e829f70ba3b43ff63605cea1302125d3535f41d4baa34d374b195ed495ed0b332f6c042adaa76c8ab2a79b65f45304013bbf83e08fb86a6a4d286d319cf6f4ed33994d2de7440522476fabc6c4f3c2b8a848f25afaf91cbea2aeeb63a8515ce71cdc26d4801d2097d78b5dc033826e6028474b6fb4b47b227caef7ad2427 +e57e1c659ba6dd20a5bfe27f766813a13288226aa353b7fb14461d76d1538876180449f1d2012f9be94f3a2a6a44352871fdf7fc250b36ceca12531839bfd7d55c4a0c7153b5196a3c440c00fe0379bd9cb8f9ad799d00f10bab6186dbdbf71325ab52d8e6f81d3f5d4eab3741f6c6f56d5c97b170bd57b6850e75e1678a27dce78d48abba9855d7e9c788ab31ad3d4dacebf1cf55b8186dea157da3e8a679821a854fd60e1c8d2ab7d013cb34443eeb458685c5d824f5cc52a11af5c6e5c59bc96a4837d31fab38e847ebff70b496d208c29abd4fe486d68a74f496fc817c27f90034ad9b456ed7b18b3331a68d4c976647343c7e64c289de4f91d8f14f26d7 +edc7b9c5a377401addf72193f0eb267fc214663a66801ef189c6f63be57724f43eb3fa63c75694bd4d66e30af5d1cb98e294432a5f4c4486283f19e1b5c46faa70876bede690061333d373a395ac45bde233ae00be3c051a4d9dfc608a9f7d5dfeb8385ca3b4639e499d74b83901a2877400dca5165644e203fad8a5ec99f6251c1b2a726aa83d8eeb5a62a0c11a980f66862dfb0163290f433905dc383a765f66426546232f19b328f46937b1098894cf95894a593c21ba361839bda160311fb4860f49c6be76dd39e074f1d533308ea8d91011fe1030649d404e91de2ca40f5c4745349d7b07fc3f561589501da7bdae4a9fcedde3b60c48d5deca39cee09f +c62d10ec23c676e6a8aeacaa4beb7a77cbdb75a75a6fdd89ed72a261614fea3a1b323b0b00759f3097bbe8f349ad80c7b95fc6e02f8422997206fc78a61553472df5ccb529a123c0f9b34acee5b2c06907dbdb6823e98b13017043fa9476f7f6b462e3df48b313d04ccdf512a93a923acaf2334f121be8d266e1294a17a99cd4f1c0eb788724892812b839ad430605adc3a21ddfd96ea6651b5e3ba52f40f0953ceda8329a8864677bf17ead2f14dfdd0413a56257100d32994eba69e85e5e05d1f26addfb3deb78471f09df0cb3408a4237ce2d0c5348494fcfd85ebea621c492fdc98cfdc2c9b82cc619c1db986198363a820007cba54e7693727faafbf1b7 +e5835b113d37c0ccb963bde846ea976327f72d113be37b97506da8ed3c0c532cd1faaedb0598ac2a34962b8da6015e4a53dd58ce2996fc19431c4b97da0be71a2bc116f80195278e4697bf188e180b9170f158e13de99c165d713a2117269297cf0299e716f4cc3444367451f28ac7685f881d6077bf9d2c11b9075918b25cfdc65bf478d10c608571357a5086d60bf4edcc6b342a04ec9ff0b5543476dace306aeb9291f42ffd8423f4794ea5ffb48760da0ade224bfabf9e508f36b07e9e0036d1b8056433582d44f1cb164270a0121abba62752fa4c113300dbc28b2f5f5d20772a2bff1ae06c1abe544aa33a1efe07d501fee58cf2789e32947827129177 +cb8db21cc5662dcbfc9b2c3ab7f28bd4e40150b4ffd42c984370807d561dc4815f76fe8d37b19957f658b91eda160cdb22ab84342f2014338d6a29c0cb77bc29ce81ff6a0108382cb1921554b30b32c4dabecbe07d149ba06aa5b7645336e527f4a00873e400ca891b1504378b542101a2b0e6fbc2d5388d20d20aa74aa41e70386f24532bfcfa07c1d1dedfe027293fdf2bc9caac097b8bf1446061c2f051a6774bbc4813e67adbd05a828390b898611f575c44f929ecbea12eb2c43dc1f18742438929fcb4dde02449826f1ddbc26e57744051edb4c8f95efe7045d810f70e4aac2a3357093b1091d9d1f3861e27df8b16112a7a5352748a659e3fa504da07 +c53530306a729272a385b16cbfacc33e5a8f6c5179bf7de8d3f6c54dc19aa36b0af52113c2c394cb1ca52e39f80db9339e890046f66455f63938e0e9f3cd2bd31490b8d2d4977a0bd94b17b08bb5c4e65f7ddcc323882c5e758bf34cc11974c4c12ff844a4d1c62af0b236c1c53d2ebf7dd267f2cd0451d014bd942dc45d29cdd6fe09f79a32375531021a9080a8a5b4c033da855af943de5ea6772a13775cf9049d32f7b443b5df616dc25f3ea7b575c8927012a120dffed00eae26348ff4aa52835d260625eb88ffbaef4096e78a1bb68c721f78c11e065821984573f6f5a070e90a05a2a2cb85b1cb94b468d71c63e5911bf6014953193728775d547b193f +d5723a187622081e4bbde0fd751dcd0ebf9518afe3a791abdac226e64e546bdb481ef09ae1208150dc2687f6e0a7af5e11a4b536b3e430696c40dd5fcfbeb88e0c320f4e9743d548f30ff894d643dca9dcec6503715eeebdd58c70c09c8241cff7c23037f457e98bc89d344ceefc7176652131d3bd42ca64f7355d6524d6dd147ab1f5b51248dc7b00859233b7bba2d1990f3cdf39743385c3f070af2d9981230a357fd4c6628a5c8f959604c9e29d397c1b10532038096481bba9a124e789d6c4edbf57f351a55dcb685bcff5a41b5fc04c30518ebffd184c55f194965ffc1c27c2a644221bdc99870209bead106af9f54c8eb31456fe81d3a8af2714ceae27 +d0009aafe96917345c81e54cf583e87bf1966bfae1b416a71c67189bb3cfa2018c2c5a3b704bfa758f5ef391c127535f39b8a37e44518e0e870c812f32d9905ef9b8ffe92bbfe2135f8474e26ad92ac8b79a56cd1b5071b6c6005786b68a79d5f93516ec3a4b4e5d0f64ddbf1e102d0b0393afbe45878728d22d050a17253f43250ff528a22bbbbdc166b593d4c7ab01c038bb9e66f9ed7e3363148aa7ccf487890f9299e1bb3aa31f356cb86c29dbc20726e9feebdea2737d2b0ec1bdb676f77324ca13117d2c9f8f9ded52b67c118fd8175899f8152ba1b3bea0a4a92b21058fabb0a3ca7d364b5197b912b75e795cc8d4e55e89f3f5c666678458e0eae7f7 +fbc0a1588792feaf3c3214a899c9d55447d3e71d8506cb7f138e244645f9e2d2884eba8774e034edf74438f41939597bdd48d777600968a367044307c6177b782dafa1ea694f30f679b6e005e53bcf9dcecf67e23e8eba25c598d6e23820fc496c0d457ccbd6a2bf44307acc4b1c3829cadc130abd180517250cf7b90dca4abca0a2fc5989d0fcc44677291b4806efbd662966b329029edfa402c6da94df6ccba82dec4cc43f3dfd5965ceff79fce298b4be87fe63541634bfe99609fcad3acbd995bb100da68a97c2c1ab19ee11e3bea119d77874b635459218b6dbb63946053927b475e248c380e6212532140d92742d5bbc620cb9d8efe809a8f40db9d53f +c248c9f890614421009dc7c6437eb9f5b918bad1e5a175644eaa09aa336a8fda0a0aac58b9c759d16fc819a091f791fd512cf5604313e7097a7472d707c00c372a71210b060bf1186eab4c4b3cb925f587096bcfe887ab528e040a04d94f780d96fa2218e137769e9ac2632daebec38c7897ea8ab98f67a0abbeb9f07ebb2147c191f42e59793fd75f4f360f8cdc4b790eb67fd9364b0f4681dda9ea136da33eadf8e7558361ad511e6272e447d0fd7e325d3291976e5cfec3a7956d6587d711ddb4bf2cf99436134cc4279f98c3b67f4a02c39a95651e81efa58e7a06023dc2e25050bad51f2ccb8b3c6d3d2d53d46c32149d53af28d513d262418e8e39d4f7 +df519cda59c1f35fa902282b66230247c77a728715dabd991276f20598e2143af66bd389ee1ac878a1dd4aebdcbd0696f7af488393226940c535ae36941e02f47e2e16bb5e742c2bec9c36f467a0656934dabae117a39bc3611b30f48f3f5e26d3542adc68925511038939d0287f5e0ea5cdf6727f6299cedaa030952fd6562415b1b3d8f6676dafcfcc4a61239411f62b086c518da4342bf4d278f267e9f51277f0641d19e062d39f0b7623bead5830f3333a9d41f139f2a5901b856a4b300816e3e830b955fda84e4e82d9872117196476005313fc66015abbc7d83737a178898b631023a7d2fbb4569283fc421c8f29e3a2917f58c1f42b505628b634254f +fffac3cb09b32bdffac6bb6c72ee86d1ff507f17f89b04437522fb752045b44b4b76166e5bf0f89bc6e1532f01b7b94503403b12a56b14d2893e741ca593eaaba9fe1d5a76afff89de5f0fcfd0fff9cc7fd19cd677e6707966af07e10ee61d5a4ca4703a9cd5d400dfcb41e24d5eb7d0b8cdf3692d9e24973e9d3b2f2a4e43fa32897c140ab2bb5b43290a0540b538b8f738b100f5df6176bcedee1a596f126c8ccb817b929527e84b8474217467035de9828c2425725b4082d70afe7d6d2a58c5979bd3b5cb7968d771f00cafed2f81860a943d1a320574da3fcd21dd4f03fa824225dcfc2431955a7217098baf2a721e9ac8e118f0ee7296f18712da991e37 +dd69a1f289b20fa74a652f87c6797b93b996a4af328e9d9495e65b435901f04e765d022be90d7f8fbcfb92d5d6693ef1578912c07e402498421d2991e7dbe820e9c4032583f7fa61255d1cc1803d9658e5c59a59e39fa1d682e93dbb0e345ad3120a607063bf64f8d0318a46978e88354aaee2e7e3a8ca7dacdb8ceac683c24ccb5fdc76396252b66d77f1cf766c6ce8bed78bfd3bdc9fae721eb2a129867e916260f530548b25827736a233d9517dbb19a20e22bd4ce3c398082afdd685026cb77df5cfeb6d06dc24bccb7303332b397f8a3b3880a163f40580adcc31ad69d1ee8b455d38eb4e31463f207b1749ed4972160ca951d11847bd354925a54d2c37 +ce534a35eef33d1c193c15d98eda86fb961f920f9a1574fce37eb78ad3944dc8a863a143848ea688e3463a2dd68e5f3997edad50096cf038ea92e8664762a963abc9f96c648a64836e503386019f2bdfb3b5abaaf4efe17c121886b998361d81d20b8154c23f4f08b7f55e8c4905ca5910ffa4943e800923fb9d1a05fd787289d1fb86c5a2df8ea7c6d9433462774a138167ef6d910d24e41b30657825bbd649611c1ab797f7ee9def5f650aac9a2e38c8e0d393f3c36174bdfabbdca1bac6f91a4dc0005f6bd7c65519d475d93d16a18224d7f83659f9a75a57e6b53f4c01028cc725d9e5216f116b0ecf5ce9ef180e7698d2e9bdde08bbb504c4920e4563b7 +c228a2918c1d5fa27209f6ad0dc2625293c5dabaaa1493c42ea942c3ac01551f8904d455c64f731eca21c251d8b7ff5bf59fcf2aec8ae68cb3482fd26ac6e5660804e5548c927f736a9ede94089dbbbdd5821de1a25bd0fcfc35aa6bd463774c15c1c13bb8f2a5e1dfd948b9842215337a40985b05c7b2deaae081ca4d2de4b5914e0202af237191df85382b46c03ea0d4ffdc895c37d8af5994fcbabe98be89e5c051621da14e2f602a1885145cb31d2869c16debfad72ac93f098d519be4e70763f3553a53a97a9a302d4d32543a89093cd945b4f533977286e1bc96ec0a7851eb5c36d88732e9c252989aea81ce5328861ec7a940db6db5b8e8bae403418f +c2c3838b5b2aea96e04f759b9c6ea1eb414e5de470bd75475626ee2544b1ef85b8169ad9f77834afac0eb7c77e15acb13575407c81b74aa0c0f9681d422c853686f415c91f9611524664e6e191bb95cffd4e0c9087d4c8b01cc51fb500ac10e4fb09db38e98d5c2daaea90c64c22623ee3e45fc81ef39b4e749f4245b1117c331e00b505329e4c49ffe9eca0e4e9e8c35405c3c6853b31ab0c1fce1bc3eeecec1db4fbc2bdb2cdad9a0d058e71be35ba29fb7b1ccdf4ee182358d5e587c7c9f28b7fa87636cfa1ed3dadbb87c020e87410861b8c0489108561965229b0817a01224eff348745f7d14fe9ce1c1d70c509587a4d4017ae49af60c2ee5df14d5af7 +c3161815f4c41800cfc446017334709b38e3fef5eed99525782ff99e400f8a95af84c55fe0de81b19770b72b6c8c907b7ba1f691979023ea56ac09ab70bfe35ea5301c4cc7fe115ca24ef54664092a6b653e5f63852438f701c051d59a0b0f0be91d57cbdd9ad636c17aff781e2dfb810345be3e3aedb89cea5f20f5e0eee9ea996a6fe0505dc4fc3b6928af65d70e848b9a29330811bdd2ee36598898d683ce024313e628858d63b7e5355453f22627c0c6f47a8ab7e8a2bd9a6813fed73df7d8f5ecc534863e41ace5ce7bb59a49470a375f937da234d60eb2f68c339891e4cf96958a552e0fa656d77a33b5d62e0fa1f2324460e8da4976707924c2623917 +c477abc230caac9239b6e745d121d47c83461c64ab708cbed2fed84a11d13bd9a81be66921d56945cce28ecf1526d23f760fefebe32f066291a618884d4e2c96e008c39d969ad7a62d993290c75e4dc83e828a7d825fcf42fcd2ca9b58d4d418b1f1ba3a6ae0e2b8f0ccdb803b1ae729d5b9e9a4a9b6108d8c3815cc1026d033ddbabdda434d24bbc229f6759f668d00a5f70df26f3020a0f6ad3fca5f845ac2a1d3879be7128a12d9a61dca199ad42d3fba926decd6dd31ada9c88ab3bfdb5a6a7a227d3d7d53a9bfe1b8060cc422974cffce603c442bc00922381d7c75139215ba3ac1e1754c78628b0ff10a670782a8c02cc51780a573ead9a9a4ed6a9877 +f037b0f4c55a9d750bcf6058668afc0c7a901ddf3b54fefe86df8e708a11fca22a5af0f57cfc413ac340e5581b53e95f57f9a934699f26b5e049c885f007ed31cf8dfdfd1c457001e61091bce2778de2c5810ef0f58288cc5499b6ed1050d9e1315a46d855619e2e3bd143d36624cd87753035683a3571746f5c2e58438c8141472e86ee1693588e4a21875470b3f3591ada3671bc9864a6fdf44189ba878a92c98bff93ae4ece20f53178ab22b877dcb482d8d4f12ee6d0b1d57cd597cfed439bc76398924d611b72482eae5b37eb40884bb8b8de8d1744e821d5444a285dc0ee44608fe424f0272df6a1cf48e9a2fb1d4ff55f201e652d4b368c86105b56a7 +ee73ee61a9a16f5fd159672f784399350bcf0636818bbb390e0ac6ded76e8c5044c458df759e66a41b8c15b924853ab61b506c522ee18f3a7c680827f9d68642f75b4b7e3125864b0bd0787867a14274de2ed6069b7d5f7b7a08f5ba4a862742c3855d58c784e6cea773e68c652fba2ddef5ecaf1cfd89cb1a5493e597f5e347cf8117900d778a736bb23b34711e3ef95f7a76f593ad70ebe9865743cdc652176b9d9b1e5dbf68ee93e44fd491256750bb43c1090801d84223c87aa40e269e4bc6df3c4e69feb8e11892f1bd6b879e87286879e5361c95a01c47389dc7fc20501b8143b68f9b865f1b7f36343b225939299311f0aa6deee39a732d52b9554477 +f0f4750a160ba1c89f894c018850c4c33cfbc5479004aa11190ea5858be00e36f3cb50307f39a3c83316da8b2a313ed97e22255d075c9dd074881132a3a403837491a969b856fbf96c6cd3d0f9750596e77b64d76c5130dfd0e561a6a467ec306813400657af8becfb6ff87ea71ca3241d37fd3e23225c209c0f01d01d58ff419d3204823c2e4f298108db37dc154fc94526a1dfa395ab4404ccbabb8c60d5e9d3fa713ddb7407b60bd47812fb4d5fa34471a78e3af5f9bc5eace67c71bfde18299338923c7fa5d58919a8398699df59796514ad2aa5964434bc98aef8079662e58f5f18edb940250f3b9fcc9511d0560f3594cfc2d717973fb87d3176230e1f +e71fe05fc361766db804357229d532b57f9258af05f6d3150567598f06f49270113d43ab6c71c97283ef0d6dbb56dd8e7e0e50dbc88e3f1fe25f5c8323719fa5bdbb2caac8aafc8eeae0af755d9e7db604d37f75ad263183b23d29820ece3f68f248320af30233805bdc80901a669bfe962c8ae4aebf7110d6abf36c242f0098fcaaa79d52de6d04f68764feb56aab06358460efc33d8162f69d1c404769798bd2a6203f7750c03b7c1b5850be335f69cb46dfd680feb73e7a9963528deff8a1b8486145359083b8a72e065cd089446ccf6355c5deece20147f2958c4a9fee00b3a1fdb4580260f978fa12bc23b688cfb0bf5ddec7f8226334bcb56bcfb01567 +f3506ca0e440b9153330be687401cbcb2148c3ee7d66b5686b906d73f3b6c2a3f1ccacafce4955692a254c5485f9f669fcdd251cf4f09c81e8c2d247c87381632451ef6b2ca8b55de966bccdd767255e8b1d77ca6ffa68faecadf04b56082296dd34ce50128e5c30ecb06c38d3ee2931a82e50c1315c3f2dfaed1c06111c82bd16abcf9ecd0160248cb1bb8592b8304cb71d8ac49cb8b44591e7bdcf23c28484b8fea608c3aef0412ef9dbc7831a4ca61942528d0dfbec9553f8e0e28b30c635aa45c7631b8ba6b72b7aeb5655d3ab4b63f36157fe1733dbede080f9b62e901e7b0fab4b74e0974bf0c318520ddb5aba986eb6e1a8d0e28bc14ccf83e51ce4df +ec7341f526454c62692f5a2fad752f50b414229064182ccdb3fb272c6820185b995cf4890d357f62bcb581c4fe63d48a3988404c1f849dead91172e297bd6a3ef69a3b4e56753838d35cd5f52188abc64456325e3ec4f7d64eaebebfdb90eb5b622f26a2d7831422b2480f381a61a43a159fe0ff50f3ae9ff5ef90a586b09ec11d1169568b6a99bd35741dec01c571622f031e55fc309ca8c37a505c035fca9c601ae5ca15f9a4b0a226fdc7ad5109c8bdbb502e3aea14dbbd8bfe2ca58edababd523b2739774a3e94e803601e77f0cb080dd97a80328737a041c18c39202ca6803362f9af654b4a20a4fb0a17e0c9614a24143a0bb94f92ac5d1bfbd21c16f7 +edf5406909a8b6289f4d92a275e92349ddfc34bcdc5d41d3168f168024f73bc25f1a1cbf7dc308d38c31f9bb25e0785e28ed4faed30bf90fa3b6926009aa5c28281436a38237dff9049454089d740dc00aaa0d85c22ad14d3d6a9033ab80a5214961dec8f4f521364191780763b1b701dec71e2b11a0a78f3b4de7839f59880382fad1b9dde20055b872fcc624ada0937c2eee729a17967751b6eed0241b768c7ed80d7d9de7caf0636a0e6c4a7c1f0d86c1515bde28829fa078816b1e73e4855f2596df6f33a4e1846248d24a4afd474de9d174896a23b264a379a15171703a60074813e6ad9e4683daba1a59ae3789e51cb76f2ff18d9e46d35f9a07ae27b7 +e7d376c1505e4c134c45dd89356c698ccf32d4030201b5b8ee3d7d493fca32d60e570907179fd4ef5e9a326b247d48799fd69b992a242c35b0e79b08dd163bffbda15250d9e31e2604961c6409afd972a1a4e192b94d93f83f9b78ae3465bdde3ef5245b3598e99c8c122c8c85cff364bc13392d1024090f970597f89913cacc9efbc0069e47c20abe3c81f738089abb62b087c5dc64d19fd47b8aba6ea55e3bc7a4992a841b81218f1ad32ff7dfd258d7d9b2accfc4da9194ae5130016ff4e97e7933e24a48203c5f3aaef2745929b5b45f54bc170c7299086af70189f30f5f1686b112a62787bc672c6384e3c61b9ab8168842a042f7c4ae2852112d17d61f +e85bb4152f61ac2ba0a976a8b92075ced518caab5d1a15d87b20ef3e6e2756f16a010ef6708c8d5aecb4fc0e2232bdfeeaf5a88ed3f240dbabce809bafd8138b38b4c59b57b4539d87e2e523689768122d6494c12a8a6637ec6ca4b24d44978a6a9f52f7591d80f8c2eae2afdf66fb1aefcd13acfb39f46ee604dd5e56143bb7f9dbc78a7d1eff76af52dc7a57306486a5bb1f24cfc0c6f0a4e5ead90682f94753d129fdb2469b92d5aa384346207aa09e7ba560adf94082d71f1ec99b3c2a8a0db5f771a9accde4ab0c35f7497bd309ac5a612291344f0bb8d82aba6d9abcee08a7feb13e01018adf03848f2d5a5dcd88e83f510dc51af08413d82c062d43bf +e043f171eb71df9def594c4891361809f6ca3c246a501fe06c2ec3b67d7397ad85d3a38d70333ff9047b97d47d66a7152ae1bb4648da917015914e76c80794a33c094fbad8b1e6efb5f37e18da57e96a6e33b5b63c20e8af382a17375ef660ae68e07b56e722259750c9e8e073a21e6a786e777882bea2f9495f7555d215f23aa54668efd24145ac24f730db76e7b62c31be6f11aaad43d94bc82575eb50c9d75fe0e80d34dc6195f8bbdd11fb0f8970e5bb4fccfb453efba51ff25063bfe9be82693563d02459b912a7be86a428143b87c4e6f963b2e322bff15c815aa38fca57b4f3df3fabb0841f9976cbc89f676dee1582d2417b38fc21ba6a6a18e8047f +c90ac79c5d5eea4dfd734e7dda6711f28e1eda25b1df0aa999e8c31a1c4b9257441e79e7f075fd52c0f353a12915b6c6f5438995bcc8aee7ee8de7b3e992e9c727d838a77f5d027148796020b0f32ed90c18e50b216db8e22e7973bc413143009be3189c822634b808cad00dd4d4a20a84a435ecbec6d6b8335a0806af1a2cda8c5d76b19cdaf8b80ed9789b4fa3cceabee21f19029aa3f2a038fea9f43cc7254b078af893703e1fc76d1f667a3ce407a470d5535b942dbacfb44b1f78f4371ad3a7a34573ed99c77004ed97fd22c6e5582dde42cfd19d311ae1959e476bedae25385b82646dd51be065f44cafe55fd2c97aaad339e21040fa7e42d037910f57 +c7aac3ec6b3b0d2af6fbebf686165fa5cb5e5c10d1653e7fe85e3882f0295d5c95e6c75d28111a9c16ba87c9406f585c226a9469f8015bd0db35f7db4978026bec1d0cc1b67d2507a605d43ca13b99a96241deeb716bc07406e4da41ea216ffa61beb33899f457c70f0a1e81781b0c6af4361a205d8f390f7ce7171d45cbc50b25880ef0cdd4c3b40426f06ac35bf1215021f900f452b8aeef9e5236018446f5ae8a25771015270ece0f786d90437dedcf6c14c7246fb1177de9f9f74b3e57c100e947aa54b3e19cf18bb7ca86ab01c9f5d0f38e9abe348b696420e432f0be30d2715da4effa85cdcf6b5cf805cc2ca58a8443237f1c6327bc70d87423ff0c37 +dc69f8c6c97860cf55b2b6f5228a41fa8965d32900c74e026d62cf3eddf49ab0ff63313ba986f4fd45f74695beb6d974161cf96cad54c9e1ef57687bf6b1d3e1b4048df3ea12133d9588f4aad41a80f4ce5e19391d6dd43d7167cc8acbe0b0cd34b924548fd31ae8a32497d63fdb86f11d9e31d369eeaf17335354d55f66939a25c77f28705e4aa6dd000a692e194ad54d2f91fbf49f614ac40fdcbde3aa5c2738294a5a4d595290657b908aee166a58689d1b8923a17459f9d9a3eb9e7034ebf150ba3eaf0452e9c6d62ce2bc202bef72204ad3dda83f658b44a12aee69563416ace83852c809dabbe755535d610147e5a8e462bef615f33b5667383b51b16f +ecc911684c2de1ca05b8a5309ba510090f00276810fc1e2dcd73ceadf6d17006557734fd748721a2267d08dd053609e193a14788f56f7fe9b8bd99d1e92cad7ad0bfeca4b63d34cb06cc43088718fbe2179de380d4e84e47c64e8d7dbaea4b6138923bf16f034442937a75e321e5050f1d4bbb9b3cc248998bd374b2911e62dca84d33ba4657853e4b33b5580556c03e5931ddacf6a02e7e2eb554369196b77caee1f88b57a1facab9201d83fdaad7869ddb60346b8a8d4af0434767319b9281ec10ff8e550183d98203f7336ca7a6964c954754d6c5d7750e371475e738b250dad0c2b93d1bd6aabe0b002ce906d3d8ed1711ba9635e71b0f80fb40e3c4b23f +f416b017613c621bb71d2f7cb6b0549a78bb371a260ccc3d973c760ca909b3f9ea31acc470625a0c72c756842b1bcbcd35f719fd315500eedcd351b6b8c2d12b79a953383a67b1faafb231774dd2ec4f391b74d6d19b306817fb09386564d341be5b42c15a8c03ff28148070c13f1ecf2e018cca0c55d0e113430d1205d2c2bdaf27c579941e5492a583f2cb2b0d8a4d9c496b6abfd1869bdda872d137cb0e27e407a5f2c67dc22efa9ec3beca7f29147ec19e5fa612aa92e1de3c7e7d10102385cb14187a41a5615274f88f3be285cbc394837a379291600fabe9eafd291cea094a00da530c33ec0de1fa34f8dfdff822f8053ca5feff825ac09d3edfa713ef +e01b4d51be87b939ecf3ad79a6131849022ae7ca4f5e821aeb1f27215b0bf3c4433264f22b034339550f5e74ccc79be475d925ff8e1d41f458c478c0eac4ae44ba14b5153acd452afe34178bf92770804601a3d8b6a3062a50b50c12fa81027f7fa3b1a747ef8ade27d70d390d44681b77ee5212ffb1040122d06204c8e55882e26c9eb47a819a012ae53b3b7fcfba6b5783447a8421650899485ceed90627c14ae1f568ece8fcb44bf9669bc246c5be95759d10449013bd3d9f8650b1d3616af057e5fda814d38208296c6c076c790daf235562f57c82584a7c740a00e1838f4ea81497a596e6eeb553528ddafcc9d0f11f8e4bcb04fae67f03dbb0dc91841f +d2ec282d521150b2d4f085e8f1a623b194da4bf97f86c0ee7008032a37f7f78456e72ecc134a6d87c43d43cce5ad6610348221efff6a24a6ef30f128b703e0b7942042004818e3dec7c73bbd442b51c66cb6aad21876e5bf38518d15e2494b45c990ff9a62c620b7fb6d7cdc6306f867637eb6f9bb8a3b430b2156e70cb34e880c9b54914b4e76a06940405c4b8aaf95fbe772ddaa03f2a8f41306e279aada22950ff175fddc93b53888d14187f74dbb29420ee7a88a67342006ef7e0343f654be6b77dd87d9323a325c5664cf9a736a949ee290ebab1e0d5e4ac0f829ad182f5d8050e92a77b1b3d9497d9eb855fa101792d1b4de66aa9265d7fe699eb14bc7 +c8471a84ced278e11354bee12410b260cc41759ab031384d78403dd62fc846c7efa3712191fe0281b90106709e37c5c5f5b197a6755dcf6b61d13dbb6ecc9b8822e213754b7d868fbe9c9c5792d4ef17da1c3cc71a25096454eb559a64eaf6b3b0eeb2b03ee345e1cf557e4b990be85b282dad9d7a4f53edbefb9955e4558fc59f87a45aa4ca1e456e2c2955b2ef467624351334e6d25bec2b14a086d23be9e997db2e56b76ae88d7c907229ec7cb7115913a1dfc4694567b73498dd5fac99407f3e676b0a08e0680d0864f428a08040f4812cafe68cd82d7dac0ba6a217d6efff4819b8da6cc260c8ee47f101860717e66256779f8aa96c34fcf20479439e27 +c50cae4956392cb3ad2a6f4d7bff324712fd5bdbe4cc3f74aae3631ef4787dfac7020fc8ddae85e54667d570198fa5e8cdca909a48ed660e2a20c80db5a917269ea86f91c21d45c6fc9c068585504c7909e2f9bda2c9b8e5a4d3408836fe3dfe9b2fce973c0541d3f55460dea4dbf0cad5c4946a8595963278792dc9074e4598eecee97fb49a1eb87cb9e2e3f27b69cf52af2f11dee876ed736ddbee70cd5e1b765b6f88725f1b164779c0dc1b387dd9f078e1e98f2bce7d375e41fbb49529d8b93b7f15e3d063d029be0467425cb62ace59a73b20272dfa31806044d237a5f9d12d92d7375983e8e2c87dce9f6b4e111ad48ea930550ad740d0f87868d7d717 +e3023613d354b30c05ec9051da18a41b94e77e7ed16c64bdfa4c928307b1d084dc9ace690e1c110c01e113c81581f0e413698f990ad396743f71003ebc705de109fd0935e616e06eaf7d23a3318f92759e261b557ac140dea018aad7634cdb2dc6461f6fb26ad80cbc37c295587f70ed885b36b4668c3c749a75f1852d9b42ed91217d0d653dcd0a319fa0824fee46d7627acf93516c488a87a0dcaf4693cbc9b4932599a9bac1da29a3ba54330e5e22510c266eb36772f39daa333bc37a57937f3257135f4a4b65eb6648cbd5b861aab5caedde97631122f9bad9f3ad1f4c934aa4b1906f8ae90e2dcf468c45689687e52cbbd1d6d3cb0901b4a3083b9f2367 +c22d9be5a6a17036bbd56be0fa82bcb4fcfb585bb61fab585997dc0b3b1891ea7c1e34efe357f49ae525f2246dd8f9a619fcd4285a3258f8756232bc6c20f9ea8b676922d0cf0cea47ff6ea094e4394d7f39604c38b96acb699761f1ed789205fdc608f01f5a15cbceed37cd6aaf7dc1d4051bf077f1fdc4f30af08a8ba765013cbf5298292cb5b99689f44eba04f568a466975393807fe57ac018419c350186b5e61c54454f6d722bc8d2fe43b7dc51407f39646d6ad2f2853a2d9f15c7b207aae847fbff11b82804a56a2aaa555f6ca672d170700e07d9a1c88715ccc960466bd7963478834b7395dae4988f378f627963aec7aae1611057f57d44dad91967 +c486f9f7a5dff6af0383bd986a52e1e0a176792dac3f99fcac7652ef5dee2e455765e3acf4891eb0026b8eb905335459e27b76f726af55c18c57009b43d17ef7e1fea7c71b1d030e16796634c08a61b7302a552a45a221b44b3ac6a37d88b91de63befad9d21494ed00b2054e88a511cdda30409cafbf3decd7797cf33ef7cacb354a3e1f606f8bedffd01e5f90c55a6fc546a07a900143427c6fb01318d0cb631211c89fa59188e8215f223f840f31d9b0499aa792df08d7908d3f7039c419b5f08bcbe2a55c8ed7b4aff21bc0d9cb16828df28db5b12321182bb595cc395ff2d20fdd50ba33c44b990b90d4d54fba9c313ca8c332631cffa3f2d26286f9e3f +d214ec8657dc74bf2f643de3734ccb23da7c9056c191153c48fb047424290a7fdd9ed03007ed222a4b9d3301acdef15233410ddcd38e88c2ceadb9fe48cd31db523fc1d68eb585416efe7021d4dc28f34f6101b4a64457c0f0d7e742a17b839fb0ad5c03b3e2a9da03d7b6d724e17b82c99a5baecfe6b5b7f66b76df0e87de69fd80689cef28c8ed19878665c2de6f08cfd7e193a3e931ad58440c51c9331748419fc6cb4f733eb095070b66126d288424731c9a804c80a233585a031d5e03a51f2f94fef17f7ae954d9aa9c667b4adfa9c76a215f3bc9a7d7b61fba15a24edf80cd9476057d9dd90f7834e70e39a2c7f922c3225b01d709b93f4cb0960af497 +ee40fd764a012c4881c3e0218b5c48d68f6830cd05e95d55cbf7bec72691a94d5c1d033b53b6b64644cd163eb420c42983bf3e685d06a95d50919e3ff8a07bc578564564b5e4a7a317904c84f5435f6a5cfb1ab52262b32f8daf091decdb17fd86fa4a2aba65b6ad883d0d6ec40e5b015150060c417538d22b744c7ca0b02cde4a69c6358d9d7059449d74816949516a866af7439d85ed706bf763ff6290dd07657c336a4eccdbce70112adc299fe14ba404cc5a15d729272417c7fadec54a987f3a679bc48fa218509b098ca97710b806d62a1dee21864d55ed7e921b7a02324c8423091cfab152c361e5b2d6f44225409636a0ae5b34641ffc8c4bbf058aff +d8d0b50c6b1fd2a9b283115c77ac67dd78d4c9cc4e4833a9f4ca99d6ee95f4a02409c36d74a9b7d5f442eb74add6594c84575e4f9477c68512d9846a65173537495fbc386f14b85338dd5c15f4b83b37fbfe7643279cf27915df872274fb99f9b04921db237bcbf6e4cad1afe30132652fd2dbc7e82b005348badd005cc07e3e33fbbf7a945e17f8cee1dd580c55f2c1f8ca0d155a1238a8b0125b6c8d20c39c8c869277288d5f06d00d24c13a0f380d37cad34a57b797b23c714ca6738d0e45fefe22b3155411428a70302e92505d8aca09f0bc20c3efa6ff581469f8d8281948096ce8cfb2decb113fe02fd0d540f3f08552335fecdec75c4e55d5efd21fbf +d40710a5d93b169f6f4eb27b6ff6c448b9f5c98d0b96f51e79318036919c0ecd00c031a8c9d12b25a91a2ae0995255cc87cc310878d4aa4aefaa74ae44aa0077fea6f6b155f39cb2d1b30d4f3906ca1e3072717237334a0ded8afc39251620e2e5890c366ce4824bfafff291ce0cc451a2b2a670f71165da6ea5b041a91713ba155c70f920fef636d8a437e1d3023d6fd8fdf3c3df54ecbc705c7073a405998528d40f74104e855199cf131a21eb17a9a23f73f68e6c7ea82487591ca06e6814b9baf7e4693230a9dcdff59feac6db8ab5a09c6dc5519bca34171e9c49a38349cb6d8a84199c562c03aa5a83da8bfebd795e1552e313631525e8cdeb06b20187 +ee241d3747dc39c0f58bb07193b61a7b87c55c41dd578e479c9343e17d75609d449f5fb39707f6e0d1ac18d58fd593bc03a35fd0e1c1838829dd05a86fea9a19e3f5cb2ef64bf0a7ac7fe14d87bebeda00e78bebbd9f336e9909af2c3587d4aa96dded1b0c31752ed23142af9cc7d5b1bb8c05c9746bb9f90ed4a7d80d53e6d04a31aeb6469b190195d8a415367180b87e02ea5e7dcaec25fecec11e119be48a7d9f0fe827151030e03ef7a1e0e23eb1f5c7387cc704608d6bf2d06caf849da3192e418868ee622ce40684281f4243179094338fc038e235355398890ca88bfd44c616762c9bbaac448404590f50a089050804acd9aba531e5fcfa8c32a8c81f +c10e74d0ed60ee95ad3eca3b27d243391b93f3fdb5bb0d28a3f24a0d1787406539ad1c74370e24cc66d394af1dd27612fe4a5949e33b770c1309ab8790cae3ffde0a0d66b01795b2bfa2c7e81184509e4b7ad75d207ddc372542f1cac287fb71f7d07086df4c8135b70fb17e856433eb5cec3030cbc1425bea381f3fcbe8c9c82c1b292b583e70e496b967e7e8b98de1ed4213e65a8a7abfe67f867fa371155d7a02eae89c1678fc387487f9a79b5535407a6a401bf83088f27ec27afba68d3afa85af41dcb39541f66b5ee612b5c1e5d47d5ea1ed4c91354380bfc8bb7e36917696f30402bb7b0d56b5c045b8b3dc4830165b34ea1ab2b1422a360ca28f1ccf +caab92608d2f9d303697d8ff9c5b955882a707898f284998d93e952892af66163f4a6f100b7e646a58cae92f2b16f9126057a42fccf833e6c8831e828c7da637632c569943f6c8fbadd2658322bd8a34d303f8b0bd392062c94f8330983ca441eaa66514f0d67e2a17d0ffbdcf2760f706e8334f3ff14ea2bc992c4ceed117a854c1b259a1b65c05b63848601385f40d9e9c99d6d13e51542cd2e1f1a701c0ce4fce3189d324993c2e49374daeaa92984ae4d48c5b8bd8a7c95fdbf25d09170ce065f4500f722edb0a9b98898e982a7e5179494a1f26608d1a9a492f76442e4c89ba1f1c0ebee5415d39899ca02e18adfba1e176ff902ab2cee8ea110da7a417 +fd012bc7aaf7818c031df8d177961b928ab67424b1732c3b08cc626917da440274f5e2daec1401b43e396e7f708b1a482fa30e6c725e6c0eaa17dd5b035338d5012ae8e43f38a4e404e01594aefd3e21699e65269a02601f878c430e75445cc1eb9817f60f9dbd79d4570d82465abc9d1f0b23b847749d8b0305b01dcbf996b5c14fefd8e280604b90916c3cca4934203542bc7edea0a6a33fbb1c5dccc7d56d4211997bf5f25097761abb1e7ea0be471a8d85342bcfa17fe905afd14ab1d6590b600d46407ef71b4c73ad28d3cca9ca643a1aa28564730f35875d9b9fc4325f1e5a6fdb88880f93df046cf111e7d09d10253c37766a5dd9215b284c1ee8b5af +dba7c4ae7cebd271939d2b1cb65434f92371990b0eb113ae8766285c16408bf0a839cc116efc2174e91ac9b720d260d79a4e42a9c0a7d897b0d5e44f7e5579453560d32995548eaf1e4f8cba0c5947aa69fc5606e6549b1e6f4952bd65432b0ea590afc74fb216a86e8902fcfedb5178589c5bc414b313963c92d0f415b831dc9c0e02656c419c942d5a272e2870fb3e58e4beb8c649bae86caf4b8f61148f27b244e266ec20e571d17731197b872e70975f051f930a382eb447d4976b04f4353d9a2ff2f4b92b898bdf66e27209c6fb821bfc22933d755fa3dea0191ad6804276cfa0b820245093ff5c617a6f915f1c4801abf50a1e5672acf8a326ebebee77 +d40d8383b7ba37affad545b9a3144b07e359de45b376284fb4e28ab7993f07f8122d4b4cc195afcefbbb757df8ca357c4363f859a4b741f4931b18ea5f1ca86d22720f5d61e6b6b53e6d5d616c1dd8cafaaec1c8f416d5dd77d3cb3abed6e8283095d73b0688f59a4f67472e2ffdc63edf619514b6304581a94490cb0e08431debd098d9ca5431377495c5ecfcfe45e297bf92b455f1ce6cbf56ce0491939dc634c09e072ee41d8c3751a7de00ab79470d2741a6f5520b200ba7316e45bf6cb6b973f714005ab39caadb4a9c39a177e23edf177664b666087a007bf386d23ceb9d978eddda811905f6bf0b94c4e85bd766dc9581bd66fe1dd3807ce9d19da717 +e375ae860ec2a65c2c860369accf212127d5bd483a7ad1a94a0d5b593aee15ae959ec42eb7f0c8d1d6ba24fa6cd6479ed425c563261b298295d4c4c39f5b33cf0d9cdb527ebfceddfffe3bc5bdd1132be719d2d1c10fb855cf546ced2a30d863f8551942683c6f54fed8b234ddceb6e640574cb106507b3c3a129aac3ff4cea6a7bfc2199ab96fde96be4dbec666dfe8cbf6e04fa0330239bc715921afd6083502f5a913d4f1144a76a0bee59219de49dd656087f29ce1131cf12af5eeb1a38b9c7115679b8c4d2a4eac3c38ee4b70462309e911d3ebd07dc6c4cee52e2aa5b90e57bb348c240c6e4321f914e89a0c17c34e4c2ef91f073010a45e23b67e799f +c326e8599289fbe06c678ec1882233f293951cb60702fa40753656a36c484eccd1d77f9f4b59722056772947d5aacc1156d7658efc2228460288367dd10b7c73d4b077991899a593763c8d3b405eda74f2bef32d5d9f88f69bdc76a8a9eec109a92cb7e38deab2864a50cd22b458a1c0e7e12df8e344db4d70c69b13e12db54fa46d8b589a7715c1d798eb006a39cbfdee86b1cdeb688dfd5cbef53d4ae029f474e155a7e5590b063641b8084adf3572285eebd0f3d1c9fdd7910ac290250021a3ee1cdd78484b852b99048cfe2d42e9160c52ecaddb929e585c99f030998fa35ca37fbb0e8b0e3503d5b7da7497eba2df6c47dff4a9cf80624640e48f8ec5cf +cf7a3cac672ed05421c6e9a782033fd2b5d355fd9407f3ea1ae0b934625d08d10d439309b13dbe07c1df46c03fd52f344842737574f56fb47b090ef45da20d7b1f85ffc5c907a5779b9229f77e186785669eef1b7763b6f4f07b45be29fc5af31abc0c8ea90529bf14426642553858efd955c7bcc3453188b07bbef66288fb380911c8da44ce060a78a72aaf58b564ba05aab78d70005a84257684e67c330443fd197eb8de2af2c52ec9967461dd536ddce36865a0639c9044f1ed159337e252b2109ced0af09c46c2a05496ca26df52f2d883da15c0b3670b4c9bfe6d6ddd216014584c79247f83e1f947025ee91bb507a218ce1c24ee677ec214be13d8fb97 +cfaa857e2e71e706d5df047dce4a2776aa497ac05354cb6c097f67faf032709395988f6eaf5c0ec100503f8ec0ed9677605735b3155fcfcf4dae83a8b34e374f9ee32f509638ff09030b702e82930339394c0afef2695ff8310b74c21a026f599619e90c223ab90e6775faa4963f0ec91b0055745e0b743953b2c7a3f7b96d8c1f527d7634aba120bdca8081a8eff7e314d14005ee62432071ba56df8dc61ea7ef1eecce2e7859a7b71b82558e3a3cca245d8429427d2579e43a6af5ff2af890bf6c37d60068c2d85a22b23da3767eac146e3ac8cd819910379fc7927cc94e95ab206cb57cb28e0c4753be67bcc7b85afd8bfea6d415fb9bb8c50bf8d153f497 +c603080a57011fb23645b85283d5bb0b61c16234799447401079e5e165dbda94aa1d0bc1bba9c7a6bdbbb8f4553f65e60c113e37a978dd819339fe7fc884e67e254840b8be1b18a13e5765a34ec42a420eb11e6188c469d98ea6ef80090092d14fc67b169535e7333034bfb81a765b7752f25a22560727a8a66e4ee77ba9f68bb1edaea09e31e2c8647252ed7bb17b336b6e27d4af6a1a15ebc79bbf198f6faa393b375723b02a8f41bd7ad8bff075833a718a6b5dafab0ea5db7b2378729b5b81aec778eaa65d04487b2d71fb73be6acb4512f9befd2611fb3ffe720eebd4df4ff3def6eeb72aade9495f42f850d8f569d295c07118a824019a19e620d289e7 +de89578b3c9dabc60af0e467e3e0f1773820a450cff2ae007b236ea5996c9dfbb806bddab789d9f7e9c1516e94ccebf24be03dc407b18576d826a6047631b1e1ed9b33d5600f48b813c08835325b9d1b71a46956e41e4e7d333d4904bb5a5b4a24012ff77d2a0ce647e778b84d0f28c32c5539472f0a90596d402658adc5768cde98d124725919e9ea7a76f268928ddf9be86e323ad1b9646fb8e686c3835aab971a8746287773269555d5e01d7cc7024729e6f48ad8e6b7b50bb1f77e0ecaab5a6adfdd70da141b0a2dbfdb95735ebf21aa77651eb2d5b4a0582d6a7c6a05b1a0f59491b199a844ddfdcb0a2e1273a69738143de3c46ec5a23ffe7a85ff057f +d48f310ab3309fde276daecf3e7575cecc89a7aa1632ae52b8624616cb6566cb54819a939b201fb944fdbda95b304fb7da81e1a9ba89ec7dada50420f2c278f2c1a34202f6147cd5e2518e6445c1138b24de16530566c639abe821f90991db38392a651ed9f62811be88684c7f7e878a43bdbfbf5e27a9dcb19e97ae3c0dcca302fd15d9dc1a4ceb980bb4565199c97875e57c146e29414c8f65d8b4bc0b8eee9256182f13c433297fa98c3cddf9dc1a1df06824d000c10a9ae67081b31c05abea670bd421ffa2579bbc2d7bfd4d85a18c255242b740fc1cfda620b516a695629cf9ed0bfd701e913263acdaca2ed9b4053aeffe21c199388320bf42ee25ff17 +e3359bd8748bbd1b13abe03a1819fd82422d53a3de97184ac0dd14c1b6eccc4677436a5cedfbfe1e872bcc0879fe549bb14f9564f895365e3628ee4bc983710ec6c69c0e72c6b49a27c5704a7c9920c4e2d48263c59a404bb221b284f57d41bf750e6fc63d00f2979bfe3da6314d2154faf5516dc9a9420ae426c6bb42cff719e1bf29fd555cd1430553f95f602be9a389b5dc73cebfb0aa43b267b3bd65d85aa4e380d38dd1e0da1d0ceb89fc979e418dde17f4af798f5d9e8077dad689779b6eff6aef008502dc8fe008a24813c3351d44613b78d54f8067467bc06210cc399926fd32b615b5599eac71d08a328afa486787b8df957add1fb60947577c5eff +f0338fed171f8c02bb533cd57527fb74a2f2fb27a1e55a18c396f6abd77704fa7fb2e63de7989f5c8d6876eb2f6c029312083a77d10a1e3173e17f456908e8410aae392ff30bb44fc14e16cee9c08c123a100e16b66cd0a2bd2bc22ca6bf860dedbb03a5eb349f59b6a8af30579cd071872ec4c3c08c39d0dd84490225c499f5e3bb0951146eabe7cd992c6554672b4454ae5b06740b2874606b5cecb2bc33c6ab0060fe4dd104e74631ca31e3f27a8a1cec6afd9ba6090de55549a13dd74025793d7051cb4c26a87d229d64320a7127e7476fb1631064e24cc1eeb54536b31dd2223445520e598480c824aaa43366117e00c59cd5b085f1987b6146ee3e3657 +c7796d64955b08945267d1775261b68e39741a451584a2763ab279708a7b799ce63d90330f134b3a18bfefc9bcce9564b7bc2357ca746c1659405159d7fe246d307d00006e48d257b55f5620d291e92a6a92239a74c150938e0dd5ec8802f11b07c10a67bbb4ae8b457d9e9270194b296b1fbdc25f7ffdd960bc69e8bb589ce7d38004188d1158ea0eaecf70838ffa0eb439756f144ace0548e11edefe25478820386d5eec73a4c4cd6a8251a7ace2e1ad72401072409ed0ed5779752f84ce42b02de19ad7bc2db2a944b7ea4b29aaae0b5d3a081a6aa403b909548fac18bea5a378a46c460e3c9f0d3fe811896dfb54d725a5ff5fb3737944a38d6390e71f7f +dd0022abe1f6a8b130eebda87fb54c91c110e2ee6ac8cdc3bde0e3ef3ae920c2d743e00bf4d1dccfef55645f09d913c2010f49a5e04a7aa40f1c727805a8fc06d0d44e334fa8adef66b8dae86fb06ed1ed31d3de21c493586691c2b02549118ef65e53425f5ccdaab129fecc331d00c6d2b4852102784b22b0bb119113e12d256adbcf388ca756908f10e3419b09022c851a5b1d42365476929b3094e54ce97a283bd17c5e9b47f3f6c25b623974c71d84c1f252651b748f3e718744763963bad63ca19cb45f57e04d98962e44218cf83616cbd829d582647eb1f183495c22774a6f682e05e1e2cc0719af98177addac39616f2bda9610aa349515fc44908f9f +d2116e195f22ebb2205da2d4675989069b8edcf15dca0b6477df14e45118ed7cb6c17640c02dbfe82dd65808b281b17f1afd6f503e9fd357d81cf7c8ffc83ae669c65e81219c144afe3a38ecc50153033eb3526697ee4592aff8239f56e99f992c9e39507a3c9316f481f406cdf4a0217d70609a1c3ba2013e34635def5999fbef9a8bc2f4ae2b05a0473199e8d9e7b2b52a7cddca239ad2cd24b92376bf260989b5ced7c463dc427f00ae7dcf87fb2ef422b912939a3b8b65af8fe254a06534d822f1234013b6ffffa8b6cf7446029ca6eea5d25e062e823a0b0e09323880915fde01bf32a2e927eb02e88cb5125e19f46f0357a045ce36364182894ff7d61f +ed37dcc3f2b77ff507e7a4d194c9d5f2e92f8038c4323799f3536c5e1a4c8946fa1e24ff3141f628f10f08d0ab850bca0d78a0004a76222c9969f46815a4fa34cc50c0fd98db9bf04847fa8c7aa7b46e88b710b252351ca963e900ea6f0b1cafa1dcf36c6a495cdbf954994d5e35a6e240f91f9bc274f7e9bc7d160fbea06e17a0954ad42c7552749fa5bedc3a8eadc5d305da4f8db1f6665bde26705bd19569f6b07c010483296d2212fe8fe4ec891961cf998e89e36cb19480bd0c079502b2ee76c1100000023911c24858076699f4b53535fdb0825c067358ec1e1b0ce9345958d79ee537eef86cc62ae0c115e9c22f5beda9b84c78734d4f8ed2be4b72c7 +d628429047817c6ed6e27d477e26cc759120cab581a330af6496a46fc35a68bc1589ddfbc7759a33de1da0346b9f3b717f1f558d7f4f8a5b73c2c03ed761ec3623de87c781a769331cb356aec2765ff5b44f538a841352ba6fb8d5ee211c1b69877fcb2cb0a0a9903ee80314dcf18becf200b0b083a68d39cd0dd536d1de66584a7ff96f2aa2b0348f027bc1484b5862573f88d227940d7c96da6b90a874cf47100142bf580aa11a7592e9d7cb57f8e474702e82b64720fa3cd4f3203bb9747aa03592528d70f67f562371020e3540f032951503784d10e00d339f48f48ebfe14ed7dd411e1c2c448569137d09ddc24d9159b2cf45f9a3280d8db6ec8a6499d7 +cce6d468f73456d2d613a7252c30af98128caf7eaa8e5ec3c98fc8a6b1e6f784372c082ffc20965913e2348478a6e4a847a261a3e4016d63883d522400745d94c5ec76076c1c5950d0368b3c38a5b31486c5a09f435bde399e3e002312c1b150a01da009f3ec971e0488773b361932cac8c913c79b268eef5bed740d916d5f1593448c499be33f492bca05762f5e35fd97ea33c82ca145b4ea8d5473b6bfab6074affa40415413e832d44314dd7488f7615df20b7709ab070053f5b5081c6e7b07e3ce232c246a6b45f916414e988a18d47653c155a6695f1a8148515977f19d907fcb52d7827560f641720b73f69d872062c247b41ee1ccccee9c47215f2ce7 +e181af4f2ef87c141501d6f8063194fd17d6d27fb35381145b7ca698999662ca2f2d8f20f5d421def1f1be564970399057e1ef7d7b4a59dd3299d1eafcea6d0a68dff4ac00d98bb8b42ed3c95031bffdd9633b1977287ebc356597bb35669f43dbb704a14981f28897df1f2108ea136567a576f74a632be257f090babb039258e417ab9dbfd4c654cb43f1503e7c4201a3d3e059ef3916cf963f8df63df9256d695cfb92abde3a00180a3e2a73fc6a3ffaef386a571ecad0cd924e9a47c9f6664e11c2e671f760ec636a0a65436e6a41e03a8a97e1be8746659fc311e4848385ed2f8a072959661154b4734033ee8f6299faba85cb30504f9724de41954bd8a7 +f52dba5bcc4cb7b7fb17a3db6b2c8233a946c968a4efdef9987f7ebf0a523830a570e949d27aa135c2f01882a869f470ad478573651f29fcf1db550940f57a77d610244db231792e9a800cd5a9feee22af315815e1fbb0f27583ed72b41e63a0b40e3b6287ebbd5ab6b367a0824e055e2aac6cd06e7df7598080b16461946f3d09069d4badebb2d1a09d18ff05be0771bf1056f7449a90a2477a3241233a80d84d04796d01d1b1513f15904bbd88cc71505d06aaac7059f5c5738cde581f9fedced80e516ce8006f65ea0f296e0781cbd28c0e195e5c1155cb5c19836700632e6c0bc8a540f00515362801737a934d484f65d36f51feec95b15ae17813219957 +dd1b9d5927a3012c3d2093020914f50acf465979943f5c918f2d816b90b3e30900476f2a74b04c9ac6b9d47935448cf9e7960b76c90f66dc2e36fd10221ff1c846880314398560369b10d58c08a28bd61b77c2448ea19b00b85a54143f6936c63cc5bf359f10c0a30a18eeabf28f07130b116f85bef4a3fe5154b166da3dc2cd2f0dd65206332ab6b347b990f951d646f697ef37aa2a4a335467086471f41793f2c99b4b868c3ebca26d000f43f9279f7f685c46c535b053d49a18d8142f2290b1fc24ea1126e54025f726147f64af0253dc64322b6a72c532d309a9babcbcadcc39bbb0f0bf6fe50f27df310890f33b1c7d38ac0ee1e76bbc5a76c220066237 +ed504b4b567507f6076440f63d0459b95afff405ca3c6cbe88bd79210e708a06a0b3230867ba1c8040863750f696f0660834baa44ba577a26c911764246f7c4a0da88686949a272346067e50443f3fb1531700c899468e07252c3bc7868ec45172a7e6d83a7cd7bafe44aaf1d292d93beec5b9ad861d88ebec5456865091db29eafe3fdd80f88df47871ae03bb4f9c6e6f704e48db66cc958854adabcb5b5591ba92877444fd8e9ade8bc8a53c4c13401a2a64640c782a5c877c8b5e5077ef0aaaa3d70e7e6bdfb0b43c113a8becda720379939d7826613816e3628badd8d1de6a3eeeac9fde9ff8b556451830a6ad8183b701036ee22a95cf3bfa079e67e63f +fe9a78b0e8b572a884477a0858e41a686b0295ddc68e8897bfeabfe8d18f0369e1ca95a7589cb2ad1e26ec0ee24414c4f6cea24c3c6b8ce053b14756d262ba5382443d01135f02b918b167d42d1bd58332653a4ead9b7468e658866269e2a25143d9a3c5e4ad10a10cdb9c3d46de08a9528c7f54801f02de22717af1563ed36c0020c92baaf13420655b62c947f6d83188818dc260f826cebdc1c3a8037ca6ebf206093eb0befd783f50f6c9b58fbbb5ab85b6acad9a6c40742b3334c9aab3c33fad5b93f5bd367982bea89cd72f6910129f47d1d40553b4eb18df66ef7885d680c0035f4e64ec3dd98d8e721b2cbe3be778e035e54baa0fbfd9e2c8527449af +f5ed26ba53e065d573306a90b20ecb60899f03ce8382672bf2d0cadba9e969ad44d865699ee233c7955bb77457caaceb14c0e490d4b4302aa569ed6f50d54711dfe407d8ecbeebf764cdc95c8408f475ed853a25aed81381b4b091dd9addf56929b25dcd00bf6c61b71c6f118d160b569c37675eecb0fbcb122cc30bddb96c76db8b8f9ab67969843717c53bc9df0de110a15eba5135d66d138bd53c2fe6b34a847cb6b3b1d99a249ec02cb99bf444960e4529ed5a1cdc2499db04d4c91a30a52885abc229cafb7ddc15254da2d314a0a703f1f35ad0754a748c3feeec18cb85c8ca08f6842baa022cdbeac6b5f9a7d43cbe0af9070c4f80b95d0a95a731467f +c28912d5445af671beaaf53d635a06c9745168d34e77563b5a3e8fc2f76e254ae4d2cf7dd1ba078943b525eac47ed9046105a452a4d1ba3a0a8e066699ae9ff6b936a5caaef7e6027582a348fd40f603d7d760822882402c18f0db09f65b537f3cfe3ae3a571fbe0ea9facac3ee94c729beb13e299fc7e9755dd1a9f0352e9163ef0557e93587d635a1db6399a5e3b8960b08af5f9970b24121e0af051d3398ca495cf44b38f9a3f1fefe8b035ab405823e857c346d5b266f15148dd714d1a66399f50c775c74d7ef4bf5ad7daa89a52351a213176ab2d5656dd71fc932f345e5f72197964935f2e0d27b0c7a628687f309044aff6598f021a0bce4f22537927 +daa31f4eaf75c3aa4e780b596000da4bf05d7fec2ebe518ba80353f87fa32f980f21756179420a815f1d3881e5e0a62a2b0f5612981cc6aed23361df635b605a9e984fd83fd18a2bb822271b97d4b3557ffebdc02fc15028bee1a3704b5b9c5c2f79b115e15719ba5d257829d0435de965d4ef3dc29d0b2b2c0f6c41fe0c52c4f2c315d47e5a21341394f3bb117f88968d65fa97113a78d4dae27ff24cd2b01b110d17848d0d5f7c4210283b11b460cfbbca52f0cb96442a992fdd6696e2e476a77e524a3bef4cc6883d8e564b84a8fad71fea71852779bff81f728886cb6c7ba1e49c44c687fe660d0635cd60240e7a120d30cbe514179599fa736ac1cbd06f +ccd1980a89182df91fdf293d5ac076dd04a12d810cb312441712970a1d4dd68461a89737bf8c1aeda4a0d874c90981f83f9c8da18d8dbdf4862833eb3f3b164bc9fb7254df7c595c408e549128603e469966de9066d2e4200dce0d7036671e5b1c9897c1f44bb7be7f3ca12c469adcddc78608ce6fb7fd8aedb1ab90fbf6efc3086170917269710cad86b3243194443004da9e0914363ca1c7a804bf1d42453584906e428b392c776b90adb430864cd4fc9d7d7e39939870a03e6607bcd6a4a582461144925ad403d44d4309d6b8731cbb8aafd13fee9ce5466f1fe65a52ca99eca7a8282186fdbb4fbd2584ee8c1e221da6a11f1760ef13a4fbc65fd7aa22b7 +e9f18b45e10a0adf88cf50c1731f60c7e9f60cfa20e9d5d4a4ab1c522ed0de55b4d400bee84ccddce5af4834150587cb53230b9743d8f7779cfe25f4c3b8e2a45244d12eefadb8dbff38003269687435c92671d4f0c12b73065bcc55d6df528fdaf51ace08a13344fa43d11e67fb1fabd74adc3255efab923f7454a0b350b629f34718c990756e894c15c33f984e819720460e92c37a174e8a74fbb213a6f3673bcec953ad73445576fea23b579c852c33517642d9e7dd2f409a1d8ce35638017edff93668ebc8c206238606183461833328cc4653283d92d2adf1d35b702fd3c277d4a97f0e8c8565d2c7ed552fdb94c1cf40eb66a048e6ec250bd56d9f47c7 +ccdaad4bacbbd3e9261b6185e17c4677442f9feb7952ee6e8c02314e68b3732a310b775bcac87e70135b33731b5c92a75690338ec616459d5a14f2a7a39a89c0f2b5e1720500631e7eed212e5a799f622a888e229091af04c77c9cd357ff000759213e14eac8b189a03781ddc2dd6db65620175a5cf915f25c544b16a54b795e52361a85653c81abc3b5ce69280e5fdbeb68a08b44d642a0d08e9baa9cef82517d75ac32aac590c66318968c45400cf961a452278f6f16ac89af48629c9b49a124d834aba7b377e4a29568c189d1b0e856a631a2447ad0404da8dae88f9b785485f8315601aa045ccb61bef236422f3f4d25f9eae983a2e8199c1872366ed49f +c9afa62b3eec097efb57bb91f893fa82c6e176a9f7869bb0478da5cd36a69aff93a98dcf5ffe0cbf5393690a5e0b74a835d8a1b4d7d67884f1e2e9dc54ccbb00d27175851d26ce9b42ac39adedb7d64811000232231fc5cb0abbd403e1d3cbff7785a0f08060d2659e058f54a60e86eedfdb8fd025dff3faead8dc73fbd27c9205d2b4328a717a9b1601cd9ffa96fbd17c9468d8052e8a8161e99568974b8e21be90e0381ff74d96617810c35f15b58cc9ddca48d6cb70bb78c0286292423975e45c820bbdf680179971b834a2e4e795b291946c56a8e3f4b289b9f85c59c1c4a56233ec3cb6c0fb781a9170bff6825ad74f3324d9b68a1d90088779d720734f +ec1b6f6e2d12b4b9fca10af2dc42de2ef780b0f915b1a7dd2a7b47a4bc50dc26bf45584ee8783a38fbe1b03c7c78221e4a4fc796f8181333598ce0731aa5190fa539ab6417ddc97ef919757ca9a331781410219f4684b39c92bf901d3795817649d481cf7866e2d203084228c611cf8453ef747346db4790fee1faa7132a58dd185c497c6ed0b6f57e7fd298e38665d3b989cc85b54a8c3f0696c511dd6d292bc3ec65b4146540d2ff8b5bd5a2ccd4afae7a86d08e24c68f5e6207a38d453966f2afa2fef84192fb4d9b0ccf3cb7bf9721d972bfb7696b1e4a58ad494b937b1912e626fddd5baab3ae799c25062657d7abba26d8705f91195631f9ca2310f697 +ec9fe109b8d6aa62366457622e9ffdc8718b45f4d3664d7a83289c30e21b154c86c85bc86970f1e71b268f4695b23174fc60e19ff98de49fd6fcb77724c7b73695ddd963eed21bdab75eeee4851bb0537c6f53a74a30838309af8ac6f6e3ce9e2174cd7d76b051b02aa15cad1f21d87c03d2481184824ada29b7c98fc49b5b5f4b07f7aa5f8a92d7cf94dfac3dd9d7e9932bea998631b41221bf50e952059fa456732e140173899004ba53a4e885db6522e4e8c6c809a84f67f76b1911549d08c118cd987ae198e01bc29d411d47bb140dc2a5b7baa2555961b28bf83afec2c9d1af50b21e9a63c29520f6acb254e4cc8018658a79ab149c779ca8e698f2e29f +df3c6501a497545dab4524d05b32ecb8fb9a42c7cd38cb7b2a08fbc30cde569bb3eca156f3119f438cd4e823b601a1c86e18439337310b722fc97315e49501664747a18eae8e097e9a5540d22486812bbe3e40da03ba806510c28c4c63a3833799acbf121e775393d2eb443aa2a632a2816e4bf37c27ff12fcb9951fa815b4dd2ee15e894e8aef2693be4e02d8a5c2497d20bac5fa31ac8d90b54dcc774067c029c7808653af305deefd82975c5e72926391a0473306cf5f425e329e1bb17568bee115c4205dc466fa4373cb20bca133cb6eb88e1bf690922216ef37f73784d71b1e6c88d47c201a4b0c506491f51ede5acc0585fad4a6066f5bc79e4607f5a7 +eb15064bb683218729e5ebf4ab4d9402fc071873c971b4d7328f79e2d8c7f97f713b2de4afba515d315629746c36ec67b515e74982f3553f985b46ee9dea95a6668d840f2d23653e88d76e6b17b5f3d1e933ea9689c4d80d9d32c332ebe6061a3936aa412b745f72a1f83a8bb91e9cc1d2b1ea20f01d534e91bfa5c759963ad874853d6286b52eeb2f13d7a25d400623a5eec75128045bd1100fb4ffd3dea9f183bb6166fdd6374193139e991d63d07c4b8edf58c7d9c291ff2cf57f6e0be991fca13db45d88e578a1751565cb4768f30022429b0d7d4bef784c3ae400a84bc3ab28dd80aa9436c73cb28b92be6257f38f297cc26e1ca86d709da6b27b63aadf +fa0aa4259ae87b95644b06090539e86cb1f67b5dfe844c6f4c8960e00c4d6e16e5f01c454a18b6f83b97bb9b1fc5fd3d0314f6b20dba388faeebe33ef37b9367861e360e344222fc46f21fb78ea6363261c2d0ce0646b489cdfd16d8d9f81f0f130797d5692cb070f28440738ad3d5a8a5772a46b9351492c781cd44ccbd2193414183083dcb8575a7f813efa76f4b2732f78c6b75b37ef8abebae162d560e6ee249a778f35dcaa3779813eaaaac11709952dcfd8bd33c0b8a2c91d4eaa78f78af450d02798d278bd9cbfdd8cd81ef834911a908c95e686e5d029193df54c6159750655de92393801b26c1238ffa717ab1968bd0859f4a0b85101e29e7193287 +ef5e5d5e75bcccc1fcfb85149f8f678794c3d97af61431e74fb717a040c8e899e9ef778b8d41de98e5f9f321d27941fd7d1de75bdda95d6eded6cfb9406c845af0f67d36163b06874e630d1c5e633f4dd3f643847a3e9761f754b70736234d186272bfd7ba291746c30826942353ba0031c8f1a55107a3e982c2e9ca979f0a38204da8e167b289bff517b501e6f004be84ca78232cab36768d78b2e46f8425bad7c1a3541e870822a3e32c7ffe968ca89a64337941334ab16bb58bcd75a6944a3e651f59f6ba1e16a84c1b4b7d3ab531a4ebe7a638b3f225bf25eaca4746217e8bee66637787f5ee7512c75afc040167e39eeb9905e07c4c4fa9a847e914c4cf +fa39e01bcd6b44b23ba8ad157b56aa45d0f9d0916d519adfde60eb68ce5142504b418eb079851923f68131e7200dfa10f5572b690cbfe45e03c5bfafe2a7c206739ddbb5164a5bee3ce1f176dd084370b2e76f2e3f54f93ae8917518cca735fc8271053d557ce25dc8a730982327ac76da6ee4b3e88c3f7a5565c4a1d83c1553fe3d84241270725d8ada49872788b5c9982a592f5ad5ec0ede5c1b1066feb344c9aa3a6e7173acdb6949b447ca9376349508e907b0415a369dcd21c6241d9d5a656754f25f131f3f23eac0ab676c79ed55bcea98a8cf8dafdb7c1567e2c4e3e734c1ea7573d6067c6ddfa35b2c50a92fcb64c31e8644637a6e6dd09e6347e1df +cda974b3796cebec3f3a71f1722dcb9b0555db098aebecdb6ed8f5a84c4842df8200f1417f6a53e1f259532289c4ba1a892336d0998e9efdff4100f6c12eb485c01223b00a2b0270c75df2cb381a0ab9c99a9726fd09af3e9ce2b0a202cd201acead378eebccb6b3df200b67cd56274c01cfebd251ec3397366ff15bf74fe6c7caf5419df1f25942f8fe3a049fa636eb6c3e34cb1e0f3bdf38afb0e15e6e63d6f47fc130250ce26c199efdc3201e199586c323bc6af244cde8cc560889df7022d005542efed54fc90992055aad6c38850c4f613d06cc27ac76038e5af1b2e1fd11bfcb0427b0ce87492c3d4be474732a707f54fa1fe5c30b5d4eae07bc11e27f +cb38cf430ae84072a8e5cbdb0c0e4b494ec4dffafb3a3ed1e8adb5b79d3f99d6010751fab0c8208586f67a3ef72b9feb884312c58588fd20cfb4c1ed0dca30ed08e5fd669298416c040a85b90748ffb7fe2b68c6ba9baa684a0bb05d5acc10903ef8394f75ed1781dc8608df60e1326c9ff628538267f3811b95fcb20f23241027def9b36cc6d12a9c02c3890e9f40366536a7088abb176d4bca06c3285ed5cfe84dc385ff19aafa6cb2f361e7e48b8fe93e14a24cb9466986bd978ec008b9fdc0e430907897dcc9191b82b4ac95e35ec927e7fd98d9dd5545a615ae2a6522e229e91db1bb740aab2d8f12f05b91d6e2589bc178e6321664cfe4f1ea30831f07 +f41971d83181fd45f1289fb5fab83d404e765908159eb2242e768bba1a2f1c668060a332235c7849778f24a56dd2619708e3635435c14f0d96d55461c6d709b446f7df3d23af0a1e902a1ab063ebec001b826711736718d7b855b9e770fccfd78609fa73f0559530a874ee4c7fef0c0ee7fc38df04947541078b46178fc165d8cffaff0b0d58a5be9a5930123418e48c23074c74f0ab2f87c00d8cdae2112d154028291f46e3cf858c9a7a728415d03a1bda0944c85cc29745a13c86b57b978071f0c347b0d9f2400478ed55c159400977177612fb8a5456425273ebc1ad39dbc8f7c2b36f6ad3b66688d1cb4bbe415294b965659fbba1394efe5b00458afde7 +cc1c2cf64e2afbc866656b3e1cd0959bf00c40d6c1edcaef2eda800ae5876e5a9278b49b9fa0b2e1db4718fabf6627d26a5b29596bb6db231008abcac66499029f2869edd7291bf94d33c4a4b9b9d3dcf12d220049a2cfb172b1ef56dd6074ed5ab4a15e06a805f698009f04e88b84e16956ea96d875273153d1f9cd9e491078ee0147ec3657fdf9fd28a0a7160cfe1acbe687d08ced114eb030fd0961401e99811bd8ab9617ef2d804b75ed699a051b732d5bf01dbdfaee465b1614d4807ed928f2baf7175c5a63e2e3a8e8944a00706afa941f03b7d8b758d82e2c035dc5b15cdbac8a8ee4dfa816435295e23628f78d9da61867ccfe4bffbf52909de2997f +c8680e93ddb7d944afc8ccbdb3b389a3b572995db5dba1fa401cea8e926d5d0cf4b0b1bc6a45236aae8053b2282299026718d950b728d3dda6480a1834c4315cd7f7331b3dec220bca19e6eb48c5166fe3f0edcb4bafff040abbe1cf27e88960943b574cb323ded133c1514e4b0630e3664d357ae9d7cf0d5d5e3d70e4361afe2b84da7aaa0cad9b9141c70184cebfc68e2bfc0f2bdf5717dfc3f15e73e0301b7d5c35f2b37ffe8c8ea9b8ba15c32ef8ba4f83890fa694a575ba3de8c69b104a8bfaf86b5ac91df73347feae938bd698f017f06dc5f7459dc061c94c77e5c896f12392a6df0d24fd42f1eb07a039a470274e5e099e90de74866818c27ae7dc47 +d02518dfa83c37d3145fb22931bdec8862a7fffbbd17eb8ce0ae7f4249e34f4fb495138eaf983024686b53c7af6172a9fdf14fb51cc25e0c0d85d42bbbaa45bba323b5a4c6c67b6bd08989ed97a33e10dba288760462f0e91eb4faa8a50b75fc949cc31974124599f153221fc27c8f81c88a3da2577398f342b3eda4e8027ec72be06189079ced3b63c5a147f4f0bb05571cfee463e725912f1565719b6ff917bf5abd2c5aaadec609399f3df3239699894ad28220decb265e718582923c3ea2126e7aa4b19a136fe94955a7c4d394e5134c6388e06380d5bf7dfbd03c662cadb5fd68051c8df07380011ce1c402f67f6d9710f8d5318f898dabfb339ea99a1f +cebd68b51d0db4f4ae3c1eda457c0709565477f4f62680200d8417bdc86d6007691f6f2ff3d3b36ac42dc607771ef64e0d2f78309bfd916139d643ded893dd62d89f01be7070977d127d643f1b6ecd0d76b8d35c330f5377d18a31a3be29433db9a118c8612fdb3530b666f81234604db08a66755f2659c847bd7a32d7d4da2a3d1b2b367dbc4c8f5dc91939ee7310f723679156e56a2431a8de9438c82879f8d6b851ae0d9f888d37bee6366743e659427b713509ec95e2d38e65366f45028bc62f000de86285a6099c3c3295e6f6bc7fd39eea0eaaa8b4cf670abf8dd12ebf59f8a62ba216892c0946b6ac39fb4273dd00c3d483671bc002b607cfc5ab72b7 +f007ce9f8c5f3111b7db1828d041ba49623d3d4420cf95898800acbe749e26e4e8817863f7d61642aa79f43d49063c4daf70d3e4b6ef02039f005c471250588649eb22bcdf8ecfe4a36d81f7e2fbd078003a0e903abff9daa08dcf39bf336cb098b8a90c64aeb8b089ee3b0692859fb41871f671ae89f65ae75d281919b6c8123304b3dcf2d2fbb72f8e2a75c8edeeeb685c8181f13bcb5277e4caa1d2924ab08ba5da9afd28346c427983e7f2229b7fc6be1db03eaf4fbb0e0db3a33dad1fcf76da7bacddefcc965b862bcec8cb6c2ae936bf3a48a442377a90ecbd868ea34a4c782d7a2ce8b9930be05533b8dd93c235ae2f52cc0614fed2f80791dda5a18f +dd2277984cf068aec2d460e77ca4e16fde8230f4c42ff95882efe559416a6152434be14e7748198008fb5c5f77ea8f4885daf5fd2e8706b4aed30a38f3e9c23e9fed6a72215beff1f606fbe58c3c7021817535c90049908f0bd1b47e140192408aedd9cd18ebd455918a02e3a660bdd6eff2191417943254583dfacb104b888b969d5f63f40d741952f5648c41defee416087ac98c4db9005dd375dd27dea9d6fae5c210f57e11fc4a182e429d9d595c36c44150203356ff35971da546c49b293f315090beb2c0ae716aee1e6d1ee2d99f5069316692b5b4a70807c2f02fd7e13f634344942a0cb99e6c276f366ece6bf02da096191db939d3ca636d46d22f67 +dcb2a7407f7088ca380d4065673e1c66bd76fcd016d28fdd710954f8c4854acf6d89ee788a133aa05e3fff2bdaad4abdfc52cafeb8f90784621055a8166a1d9fbed4158a2976556470b43f2f736c99eee9484a2d8aa6a99d909566245608ebb2384ff77dd3590b74ee05a78947facc8e7fea9c6807f9fedf522085946f566248dc0ed99c1a087ed107a32d37f6419635297a87c6228f81468903963cb4808d76c79cbc80dbdcc8e80d244f86fceea764c19960f18599c84103b54c7bc9e61e8e91339c889c0b1c9b026eb249849f7edfba4274d43fa947353f897a81d4bf887cf832bc22a4d66ed6d87ff62ef6b016659b1352b70ae7842c7bbf726b0833162f +e1561e1ea66d47c06c4f9aa0bc28cb4ce9c7cc2033f0f59e09a501015130ee178334ef6a300ad3f37cda5e43efef224e6ebe61dad544978b09aaad55e585571dc481414f1555d6bbc05d11561f6c5014730da568c57e0836b4366aa6fc0468369b6ccd12ff376c9f1429b3dfbe549fdc95b094072ecccb7bbf248e46fc4e839f4ecf77af5dbf0ecd4b8ec05da5060bc5ebd199aff2cb80ed25591111d2c7bcad4f8277e155a8652943172f77a45fab5e022c6ec32266eca669a5c1db050560880db1366698b57bc82a94ef74bb334e40e986d8f0d1e541845c5589f95a1f9bf8994f5a1a01c880676c5fa36fb4a1340fe2438663814d723fff5cffecaca27fa7 +fd9c3b9410799a43c016a4e4ce086f0ebea598730f3ef8b2829498abd583c2ed7dea75c4ca73aad22cc9a3ddd667aa56849792ec5e52f9f608af2764527c5209e9b8a2e99cfc0dfb017bed36ec2aab672348e8b93440c2244ddc8b2945a113b372ef5e5f83ca546d492b827f272441834e998ee55394da871ac1df3d50060dea70b2469ae00e015daaee33ac2560d05ac8b19367023da99b338049e12c897f0e39273c9ce16f71d2e2c508f98eace7dd737e131f4c2571301da38746715189effce6b4ab77b5b6c777f1ffc42af7e39df0a99795b0cfb3b1716745c8904893fd39f774b981a328302e7dfb0a00b58e4dda7560fda5a4ca18bd83643570f00eff +e8df63118bd25287343883e0e76e56b9d0267e06d3971cf68b0c1e25b03936b356e6a27800c8bfc220595e79e36c5a7374469171ed00acb9732db4d9a16a6d85261ad862719b2bb6b09eb52104cfeceffe643e277885f7be4b8be9be1ab54fded391383c9e5d8471df0215c8e5a8feeb4df8e82df38b2a6d546988b1b6b2d4727d3256283e8ec7e046ea05d87625b04d5b4422fb0db7b67c957ca6ca5e1360f2c8657c5ea48c18908717ed5cf3a48a132a31aecc809c96f39b09228fc34e777edbe9a696b0b8725a0f4d591263aaab350960b7f56947eb80b17669ff6a3480a6832a2182d2034296a627310174900ec592e119f5905f0dfebd187252c57cdf67 +d542fdf8ad9c629cc40be2616d3db299d09d306071d0cb04d0615090ae5f51067baed1c203730a3e2cbc8210c91d4ef2b694e33d2db400e2dac871099a146abcdfd53d76d03f7878f121522c9f43a2122589c7be88d1ae8f89fc13ae05d277b41bb881aac752b48317e883726e7b0eb064fec8c2842ad8a2714e55d38dfbeb907cc76733825bf6d894676e43d5fb8c53cf77e301b21b756a39db0c309786cef626fa9a1ac4ee42305198cb50576dc0ee37f03442b1041d1c9df45949e1d7dd6af5365843420b35282d05f6b82b3ccdbc337bac62bdf80f478542464d7b4fe61908e8fcca72745de5dd5fe78fd5ee2264cef4315d1865cd7795952537a8a99aaf +c0e04b13f231f9e5838a541904902bda09c3d1c2eb5dd364d2547ab59e194a2c35e1f773916b3d4cf0f6e9c0c3b681d5fc8d81790d04772a95b6a24841f10a1df62bc106c8dd8f21eeb5838e95113bd3c1f6741f541c9801228e96c034d1d0a70277966e89a3aa40b1dd6c9552317ebe11ef519a87e7bf5cf26bdfb518555356950e21a342031064234450693921823a9d1570d78875b12f67454c92d33e19342d87bc208ddb1c15c816ddc63db4f3e226283810c2cb0a491c3bdc75844a4128555d355de565b1ade673ca4a4790479e5bc024952f20476f1507245443cb42d3942b3ef6f5b85238ed07194f7e3e3b9254048bee4270bc431395a16f0f7ff93f +f9ca10555c17bcc81b71ff24cfb8653e74af75c5e61b40968f5c6b89c7276d1e6361b6af242336ae4095fb21ee50c92869d4984a3927f153535eda8ef1f0a9b060b25762714ad0d475c74c5d81aeafb5fb3b30c4a2b0aef71002ddb376a6a4001a67e1cf62a1dece224ae738e0924a90316a95424d3c4c39a7f13074ccd9cf5bdfd96741f4e81b4ceddae69d6a2e5a56df5ab77bb44b20b8876413f0d8440b1d3e51313876f5720a6fc894cdc33c0a6913bff5da000258d8cc7684cdac7a517674ea4def33d20bc58599aede7c2a0a03ce3779ebd8d3455861bdec096e9b8ac54aa80acf385be6389a07f6ddd23da41cb485f35b40c52102e071b200600335c7 +ee28e5fb77980edecdb22585ae0d035e6643d3106868f0a55c602037a7e629576bad2e561ba513f508501fe45fe9689e9da71d7093c30db94af05231e71d9952ee336d32013c1350e7682e419d7fccb255dc982bfd73bb0a4d6a920fef441c9340592bafb7f627e9e91a0e3a20394b307f466e83f020442a3972c265b3cac5d51904c0e8b16abd8e8f1d353c8442e4c7dd8f504796f1ed6c45019caf9e9d1134768b3b131cfd798e36dc6750d6da4b3acb036c4cec4cfd99af51bed529d2058416d8216abda911b56549dfccbd3fff538dcf1a951e56d8f09c041908671453c71e50c2a3db17cf60a4d45eb3e90f9950258da44a0ff4ef730cd350ec43bde907 +c56cfa780c6943f5ecb5c1395f60b2251422efeca3e8af89729b7ae374885c7c626736c7d8b509b4fd4bf209d1f78ec00fbd6bf584a9c6974f034bb9b32b167c1210c48446ed52a071808db23fd28579a27fc43d08cbecd0beb5e065c7596a8a72150a16bf109895460962f73b9a6494a9ae1beea4d2d784e0ac56df55501318ff6239e09cbad6e6cc63a76ce923e928f8200930b69a65417fed69d4cce6c5568c0c165d88e756b3979c07cee0373ca9ed04185607b48300bbe92d015724bed54f738472de135b3ef069bb5b22cf9e9fdf481ae94d1f8b1928c179b6042459b357525d219fa456201cff9bb1d385d154adcd3b2a951b82dc2f129c17f0ce659f +e490a56c8636677497e9bb5ef5ba42061a051efd82ca68a073551178b8c4c6c1ea8f45cd43a346dd96f37aa0f880b7a9b094626f0263369cede051e9b16e270be504aa3e9ac18d290e19713889df07a958df93717ed50b1eb91ae0ee9d647f2a06b095e98fc1b4fbeff4180da3e8698f49c04cfc6cc12e990028a2c2c2fbf73bca84cea5b12810fea705641cf1730ef2b9cee47ffd504b954b4fa12f6d013dd853b2aa233d53e1da7bb9a871b6453c6564aabc419f8ff8648cb7832f9e1843dca2d8b356de4f3d515588468aeeb1631ca3c7866ea8b97b71c095bfe8b5c3b12e00128023d0fceea2690b710380b4a6f00e1e33de6c8e4f34c042c6ad6b7d8547 +d674ad3a24539c7830de6f21eac5f2bf511053ba2a75202faf7c04fa95e47a3a222a1e639e95f3c22f36bbc29975e97aebbcbcf4cad9bc87aded44263864f8be164ada58a454b9fbd66daf80ca96662a3abacb07d381cdcd18c62e4198ba79b4263e2657ad32f03e64171564cf278f4404cf54d4e0e9a2a9804c8747c589f41eba91e2df6177c52612f7a794f8637b46ff2f2c5e5ed4ad8a02e677f1aacad7c4dec4192041196bf822bc84ea76ef8cb2c3501534c322d6062ba9cab5deea658b5e19349b45a6773f1b922fa42de5c021ce28f9219f2d4871ce130242cd3d267fe8e2239a2ed05e50b09076b4eb0fe0b6da6c56e03504e3c65496089abe7ebb47 +e2ba47b4e4554bfc553fe78342fa7101d461f063fa7861781945410ddeac00c1871b1c1cf57595b8eb4bdecedd6239ed9300d8edf838daa44a61b2b20a7f587adc102de1151e83897333c45d27dd899d2963d75c67816aee73896a428d81a5ac94f3b48b60eb51ad9e3db512a94b628635d80fe91ea595a33c31f9b994e9315868ba1e9c2f83e5e123e46e746fece9858842e8e7e7ce99b132c567f5a1a8912a963bca8fdc9bffb2bac31a69348f2733b677250322ba6a2f5e068af8922a94c0e518bf6c0ca70ad9e570125840cbed4f41cb7f8838db5eb697a79809a0eb238e222b4b1903185e162bc5327a59b70f49618483a4ba83b1b94ed2f1aa21308c27 +f1311c0ddbaf8676e2435b70e5223fcdb76a0eaf9cc9cf2f8e8af17855f7b7f5975438a81d8e4b6957ceaca37d70ebb2b7cd46c5c6a4f1339a3087de95f22d4a585db2231a04ce3d20da2e324d6c946c9b9baeb6953857cdccb435ea4d3732624eaee5a8ece3c9e6a97077285a5ffc53d80b7bbbdcf85aa2dbfa93a7f7da3c275d27a4632a747aace921ec9133f4361c248a270f82ad298c676a833dfdc506856baa3469b38061a9cc1d3f150adf1d7be61f5811ed4017b9503f9a5ebfa0f4e9cf77559d9206949065b52108e0603c79baa0a568d46bd2b2a318e42e9dd67d1db03602f8bab3c780e220749b6eceb699cf1645732f38ded0f0c7afab8ff11167 +d15d2cba86434370158075fbc35c327664a3f17d4ea50851454bb0374d3c0c7712c9cc58b22508acfc25fcdcd997026098cfab2f62184456ee9b8efa354ec5a08791ac6b80604f0986c208c20289cdd567ab8df16a8c3516d3dc5534b7ebb5ffb7dfb5786af11c85fe8949b8a53e44b9f3dabf66e7e4a547c64bbe34fd4336ba2852f586ee8c1d5638a9abff6ea5a7632dcbac1831547625bbed17ca01bca7ef26562e22daecf33759e170faa02f0348c8d80d40adba260f9f5881654ce4a7fd3fe1008a2a0ec4477331e981220821f3a680fac2a3de67c8ca8fbb0e68f52061f2322377e71a84ade9047fc038f0fca60f1b9ea7e7ba1e5a9d24428fe8caf53f +da4a8bd722a466855946069b0d905ffcebb75e119394b6044d523ef4c0ceadf9a75a65f92b0b7a715a5938422da13ba1c2eaa9913916ec0245861a2c2ee7388509286155d68ec744ad348a3d13bf0bf74efe2553f30e7f82b21938d989ac2694f9222473e10b9bf36b74b1a55059c277b59de8c4ab2ad57cd1d7113d3f22d7041a78faca2dbf8232e89e70608f5370d4be021933d27f1b1ef5d9ae570440b2c1d6f7826700b4aa69c1af8c054169993ba17e4444ab7901b5a6512d66ca44b04820bc2589c8b0f0531e514b46466c069499120abfaba2c43107952c9d461c2cca312a9c801eaa16d3416fa899e5cf06b3c5665311aeab91ee455005ee1c7cf287 +c5048adbea7904f4f4bf10e7cd88c0eca2d26e45336836f8cf2975c40009801e315e0199a66d6e2390dbba9b67385328113d8f20c75fe02de7ab0342a0e5bcf09e8948102ff6ef7edede07ae7524bc948336ae48bc228db42a11f547798ff2d1568f031a5ad9878aa68948a087df2190986c56f56d666255829db27cb76c03b8d2f35a83425051af18b32708bdd4672ab09294c019ad902139e48c930dad882959bac8a3a97c5c7c3c1ad28844d655895c5b8b57a36572716d0750d9602236fb30057cf9d1ab7497b4555feec320920247867c259cbd6a086c8c64c24fd7c3e7093963b516c76c614915806ab020ea993a61f6940146ab775f52cb26a541ef17 +f31f0b16630199bfe300db8f0cf4cf2df3dc0996a98618dab930d8286ea5f7931b3c6e98e4bc9f173788f45789c5222512144d4c9f20fef4dedb4adbc585feeb3f448ccc7decbeccdf1ee956f8717b6d106ec5d13a614e14274f4d5fbd611334c77774a2dc1eb9981173cb7d406567a8b2d4ff98408283cc4109ba735841f3434cc7215434c317453acd6ccbde866057b7f36d7cab14b188897a0630bedbf1fbb7d5504d40bd787cb64462313a8710a06e726d1cf27d47f1a8757c4fcfa1c9f6a0b11c13deaf33ae295e620a679e6edf40edb50ebacb6910102026689514a8d64f7d0c23ccdc0e3b8e2b41944c963fa7223c840a2dc4c16ecd1b68f68a56b3ff +dc20e3cf150b215ce22ea194484ca71e43936020f8d0ecdc84e80573792218f105a5c45fbe63a46d984915ff63af9fdcc834ba6e8e41e7310b40112b1e408d6afdd79554e347c11ed96e057936afd8cc687bc77335927fdc46cd9f9a0691889ae44fb7bb93b85490a6c55a8450d8755c205475a795c1b33b6fcd872ca54773e207cb0476d99368ad9336c013ca0e37a3c9778e30f3147adced4a29b007c6051d4bf4e6fcfbecebb89202a7b2263c3407a8e51fa9c310bd91965d55719578bdc13f127178e62980870c2698f9adf6182c17818680a785146441a9f567d7a6c45265a50261c77a9def46fdc9509caf4c7c7cdff67cb6f6924d5e03702b9d8d4687 +ca45525e142f2afb610656162b193a3d8694f4ec52cbeb5a0cfddb48e5669333efa390b1fd0974ce3490fc99d3d649bd8e2395ad61567c001419ced73b0ba04a8e3acd02ad028bf698978124484c530b0653f5c1c160f72d97384d74af9ec23c5830a1cf2c12e01b5f0c0e48247af517ab72077593f52ab25353009fc9732444629e2c8bdcff8b7162870f76a254b452fb1547159ad782a865ef38142f7eef76dfcf18739547c672e6fb7c376fcd14609ea62669d017f3b8455350a8bd12ba9bf4fcc6b1ba9810059ad2b7920c4ceac54d8a60c253d9671aa749f1c4a7c66d1deaf4103047bc2058a5761afb170ba8f10432b51546919d1d8b6320cc0b27363f +ffd893c090a1164733451d3d15c6268530aa6a9477d49764ee3333643ebc0e493b8f537b69f1716fc908c89e29bde84219a52ee98d764dd579dd21722b1c68acb6572d53b230430f3887c34441bb245cb9e57a2eb8a2b673cfb89b7bee18c62bf3adffc4136cbd7c2c0a12e60babcf90449fdb230c434dde747d44052ab94ffa3ed3b25950ebbf770cd7b9344b3b94eb601ea7f66e43c09dd4f434d4d27019332e9f4075797c93fbd460cf2fd2a5b1b570678e018d5f2faa807c879e53f7ceaccfa0b4265079546e53a41bf8765469e4aa81de10488808f4c8e011c5cb63b39e46559f5787e41d1ad5e843972cf7e0c23091291cc3159f0ad55d0acc3c58aca7 +f65151fa19aeb82b945bd13274269878c125f5801ef94025f040617b079108df27dc974575fa86bc182eadb5dd170bdeeb33933a9799a280c554078b60f6112b3ec527760dae920bf898b8f2fe4f8dabf23ba98641f13506bec9c49647527267e767a4188ad6f430b8e8593650ba576c8ad1aa89266705396a01be52ae3bc1f2ea7af40b3e6f37e1c68999bd47e811bd5cf2b5fb47be1e5940a306298f8ca2c57731cbfa2b7b45982730e0f9a594c2bf13f07de623c7a38aaabde38e59b1410056a198ffb61221070ad1508fd494d38aed164b70d9c28153eabe3577892ae2f63b978022f96a6e3c96bb3bc3f3814660443d58b538d20e710834bb59df5e2287 +ded1c3319aabfc55134f22b2246085710227b26403f8c0ae2feab7861d4f4e4a8288fbed2f3e4afed68de96aaa4013fd92d3ca7d138526124d84df6abc2d97748f1578a3186e7493dcc1099b0b1704fe9fe8828c6a4608d844c0b4f6166269e601f4b70ae81100373b0d8649e0e43825ce95f1e48bcea1a6acecd9ac14f12419204841f8e5b99199ebbb74fc1a90fa05fbca6234785cbead699a777870cbec2ce70dd287227f57a9f81aa8b70f10b070816173f4f4e5bc25a948f3fc4365346b200b72fdb52ad52d00fd928d3f3c2e333359734b8028728b7cb9b8c8d8def8c60d3bbf680fd8eff989ed0fd81f79416faa3aa560d4db3e45380235ab6e457317 +fce661edbc83d2b7ffc41c56f92fcce680d42c19ece02d144c2971c3f86de8e6847735cca860633f528cdec3531bbe3a05da95ce1f4081653cbe362626ba04b88135340ede394ebe3beafe586a11946cc9c5495e538b84f81554b1d42d1a08426267e1c14b624cc6f884db019c5af62706121a2466970a53113d8351ed9d9bfc47416c91299b7bc7783aff39063b27120b3c04533a03ddcf477ecca7566a066ecd94a90505ac8e845c894b1c0495003aefd8abef7451931260ad2bfbab583ed074b18888fbd68f7b0741215c2ca212f2aa024038bef8f8056331072b79c64e15508f6245f4217e48769f81d8abd7329897bd6836bc3a62eca0d1571d8e01c72f +ff147322656288788f1e4db8bf834708e23598379cf84eb9952fff5372a5a6ff56fb33fa6134455a37da311bce8257bf09c6511db25cff14b6ae4d0d6f9d173e4fe1f5a4ff108baad8237280d7e3cfc11c456dbb9accaa6f9b2fbc3cbf57b730c10dbd1964da126e2c5132ba524913e68c38d1d84250489e67d4bb109d7e41220a39c16748859a8ac2ecc9411c885a2c52c57f006ae0e58ba7dbe534b29d2722ceab2ad647451b76c730e0e186bf2cf957344bb54dc5605e8b6fd0e7e2e2bc7a46058632b6611bcee6c90c233b2e5e80d9cafaf0c7d06cdd0efe4d142992679c7f2f5dfd7d832f9b354976ed8843709b7c3ff3b64f43bef8a8c21d217f4a827f +e6eb064bcd7a6ab2482d074763a2edace95e543621a6de12589d3724c3d03ef5517f440b6c5c7b3bb182e92d82edb5daca6f9473e6810d5bf45178278acdbaee3ec1f80a8dc1c7acd2ed4ab3f7e4162f58e0c6ba274aefdf6b2d3dc24184c2cf9c8eba855f8a4efcb4d2da20dd8a8772f82b9c7587230165b2078d16395b29e0dbd194ea7603d311494ddff9dd9f81124e6ccc474031fde76b491036a13b82f284984c34a047ba62711423c1aea4d826ab7d561359dc7f1f75617def1f8226bd31d21b2bad8bb9a83283488fda7184640aab5be70c6f570fd94a8e59930d48bc00c9035348ce0a5b3f21af9ca228fd25e053ff062d6991bd5fce33b769bc5f37 +fd3c03c11b21810daf3eff15d687544acc2b2a89bed694fe3b413e8dc637826d81d448780301ed2de7087f0cc71c829d85be6ca6446fc8a6c170bbffeed23d1cf8cf9c814acfb7af19bff592626235dc39c1e6bccd61f9ddd37bb35c7194ff598a4d4a1b56f60d425c0ae62311cb9f7c219da778bfa54f5aedb428c7c2248733dc715555c955fceca8ff4299fcea9890d3d6be3c053c22fc27b2a0d0c88ca3ab0897e1b3265ae27195a0e2015cc7ddc4823da1e60b6bf9cc06fedf8af2b0d325ec8995e39a371f3a0d18f008eb9b741d51f1ec0e57c03f84a6e8f468212e4547f033e72d71a0b89a132e3bb1037ddfb9b80a0b4903c1a980d0386c49d8f78a5f +cd94ad3f5fb319d9795cd162fb77bbb26ed9cb90711adf59bb34db43d80896a410ebe23b0fb89f5bdcd6df446ee7ae02d884636af427c1f9e2150d4e1ca11c4565ef3512e7ead434f34206030631a6b11bfc00b735f4c074c15ac5f44aa7bb821472eb6cdbbe0b0774deff407b81fc70b7b8eb280a7187b2cbe2cb0a815ec0fcde118b01c6506a30c89f4367772308aab80679da7d987b2d13e544e20aa34d6c696bfb5c428e0ade6dae9cb414d4a8d569228a4f789247e0f10bd2c8936d83be84247d6dcec0e9a393c64e729d1e511c9000333c8fc808841222eb18d56f526712a7c18d25a844e2e50d26bf630dcd71dc29389a46945c5a3a1775adcc54bad7 +e20dbca742520d6cc7ef50b05d4b9dde83fa3bb023aa9381760ad6ee1fa00f9f8a6fa90777ae789f732c07ef53de9c047f73cbe33b18ce7c01331c066e51d2a340f1edf6e5ad281262b1e00abfc28d1277e3cead9250e42c5f61dec5201d3e3bd68153deda9976e75df8d12a1a221a1c934e515a984ff642109879140e6af524132cfe495c577316e43182002c8f4a936d3a69afff7a7757822eb0bdec0c83e0cac2a11881bb2a79d0c5e54cb33ae2f87a2a9f309ec109bf315fd96e7e71c2cfbc6b60e537cbc5df2eb53f46ef8f301e1f130b36b9f8f09cae2a21225d5fc530c8e35aba7f8927300daf629319019cf09c78f652759b915986370af43f197cef +c174c43acdd4c35bcc2de1ddefb9d2f1a099afcbc65158fd5b9db7e76dd9e1eb16631b71079eb0ebaf69cdb609f178f15c5ec38b0ea609d568cf921cca7a4bd8c1ff94f43d19ede5c053beabdfe8d40107b88c5dd19cb3edb2e1831bc0af45b2864b229dd11cf30165c5ffc5c4bd2c8fb867573d43cc69085af0b72f37a160fd648ebf0d410090e0549b389be658c638547a92f274777e2e8beb5147e776670a80ee1d2d364b4520cbdc8f58d6ba147b1f097225bf6264517f0b560cc1c57cfe8a1065520531b0d2adcf757ef222b649b53f510b3a2b1ce7a3c6cf4d7369d607e124ab68b246f9402b1c794206a10679f61628df5146d78914422b3ecdd292e7 +ebd74d4d4613d4eaa33ff8b40e2e7d84d90015055b4cea806944ad37d9cd0aa91ae10fee5966bae0f66c669bbd130bfcbeb5c491bc4f497827c4625e0ef4ad713775a3652a1ab9e0eeda4af8150ea9af566051ba8fe4391e6e4361bd6140875d1d83259c0365f7a06ae5b2cec34d3a66e2eda951f211b1b2a3d8c6c8fccb945f6444d9db44d82a2ba2bfa8ab89e9718b4d48268cd4293618e16005cf87f52104e4dfd6a2d6e3098b3d5fa8a1a6f8ed5e6ff3593623982c3fb63a31253807b77a48906283b87e682805d0a322fdb52ab39d62d2137f56154a041ae1aacf43eb5ddf7686ffcb923f6c319242a4dce029585674e82238a9f42ceeca4d3664045eff +e70d2fedcd248780c4b9e87987d85f73f60ee92c748e183abff7911f24732cab4e7db6b6d343422d27efa2cf1db93417898bbf44adf1df79f31ad763995647264b8f0b7e725acd9065e52ef06d08bee215929fa2eba58b7b5d0c3631dd689b36252109838c465498da30ffef911757e194e8cf8722fd0a2872b2cc6f6143b884d29e529e1ba7e565afdb708134b1cf2b2661512329dbe53d003337707c859e7c1136e63d8effde19b100c8a5e87c623f7fd1b4c3517bde208e0747609c2d9f39cd585bbb05d6c64e24dd36b2d5db0fb5f34a39a2a7c2fbadbfcf8e0820252b73da2fc175b898c7ffd6997b5b4b3592faff5f04edba2ef3e13ca75645ebb22167 +f7e220890ef4a9f3347b5eb785239d4961f65c0e24ecbbe04078fbd40edf0a543f035e917d25dea99dbe218ecb9caa248f6d74138c3db19b7d580b77127205ab11f9c56d97a1ba8edc4c393bd8c2c455e68fbbd58c36ea6a9c1411fa54f9c4f628622c7e766d10607b7f4fb5d2e14fcb06f03b2ac7f459cb7ea5ba86f78c9032373ef14be8cd9d81facf0cfd2933e418ab165833b0e81b0d316489e6db63402772d7a36cadf5afe8e27acc55a59a36ac13062bee9ed2875ed24e4ff9e3da25e527bf4f19aa024235176070ba0e3403c6f92801b23ce905d02fb461dc5b24ad525ffe382d574b29d87d9738640bd85a705e4aa43d16cb7d04c919b86f5bce87e7 +d9cc943cd2742cf405f3029a0a986feb239cebb1b93de050a9be563f42829bba2e65bf0b98eec9b6bf15b665894e4b735f5fd96cdbdb4b2a2a53e170219290d2ffd1ed405762030c72d1de601e1c7a61d2664606c6fc2751d57eefac60d4821a1891ce70bf9007dd55d3a783c440c18b0bf009ac7379d0cd3f54c8fe4b95321fa01276be649a974e7e99fa4a24a0d03ffc2d62ae970159da10fdb3629e6c0fe17463edf10f5670338bffebe8ff5c6b9984740ad404b41b8bfdd1202039ac00862a1e5ab54490bd2cf6e4541ea31db14cac6116f8f3e0ea9c3d53a1dad04282ef2c9c2b16f7bbf1060d3ddb714fc18721d05b5f453a13e0bab69f7fde3fc43af7 +f82398ffd71647bac06d3aa19cdf1a2e4014d9e3a5e0e607c71ed4b8cb4302b418609e3b96d679dc834aa487b04971acd9c3625cb0253c254a5623c372faa7588624cb06e98ee762c697824611da9424e2f5eb0379e8413c8a94f81666a5823afcb5007909b60e668b872cdd0ece8ad20705d9e148a3c26813078247ae97ae4eb5199307e9717879b57507565b16e15023d8f3304375715feb57a8a06521a284031fa8c2117adcf883ee65363fa5fd4619b90e3000ea59b9ea90c50f87a5e796c7a84af23c5bacc461d3a873d7ed04b325c0666cd858ce8755dd96b753bef2157f2bb3e0c8dfa78730dd03b0fe6257a4b4c04fd2d4ead9b88e9753398e30dcd7 +fc486d1c17ea0774347d6fc8db316fdebea65ff0add7d8b51a909eb5f7f190d9a161f311c5525cef81f1e9fb441a76044aae0a7a4c6a897d2c4bb103c529d59026f8a88559b46c63167612fed836ffe42d9887e2072c0bf3c733adc5eff619433763b23c8e8b350804da7c47500ea86e1a5af810ead54eebb3f5cc3d629e433c4b3454de5c932e3c4c2497a75a9f1197c81e9451dfc65e4ee409d4fbd058714ba04f1aab2487a838d592643589974ffdae6189b280c6ce95fa7d0ff140996240e6f5d0c373ec3dc2d17fed194c204312b2395246e4b7424cc9a277dcb2415f5c634d0d60d661f4cd995ac59a03b3663e8d0c20e39fb59f32c1314d83e1734e4f +ffcf773c62b455bcc14168215c4986811bc1672762cc7f3ff0afa3fd36de0b9d801b770a8441eb6ea5afed53fc518b9652d8a140e7b4773c572c2a8f3f2a845911a728d07b138aad56924ea6979300bb71ef43d3d16c7ca187cd025c667ebe65c50f0d0444d38b97a7efaa1ac95115fcbf6ad35d5d4da8cd69dfb9d514aca5be78ba2e1000f87594f38610ba62ee8859b93928aff189639ce05722c94b514ea7d404cba6252082bc42ad5fa50cc5a48e4cc01589100f742ab9d6494963bba09864e0c9ff3a56a9cbcb469cb501357b6d78e1b17b49f4c24f4cd33839d9746014690693de26d2cd93c5c5814cd41dad0e13831df1493b36030b16ae02b831fb07 +ebf578a4d4b28ecf48ba8dfb072981b0290fc028fc21310359956285e24a9e97b73916aec9e9c0b4f87f05cd737cd3ec07aab8e72eb5e261dcba2a0c67e327abfa98b7de6ba419c12c0e5b465283a79a9f085db92e752c99ffde6d4b146bb7c42b3e2e529ccc5d2b4f167e884701b815ee7801763137c08592ea256edb5cbee69d66550763b522933011fd61c3a37873587ccf73835d036650694585dd68199d1c1d7e163c5a98369b3d21cc086e3c83c4203296cc84305a29ce4ce92219e9b54a1f4b1f7f9f3f835cfbe5f3073c3db16836003d53de1a62075ebbd84563e52ec0f12447726e8905eadf6f946d1f0785e50be22e664d7ea9d23b3f2d852ec7d7 +ff90b96d7441ba9eb39d0b4cbfe9a8c0951025079ce5db4cf61246ea916de4f05c2cfa8140c55c67a07bd22e9b147637acdbcd57d302622136152cc6cee28a4a62a8ac42ee082400ce67c0a3940ec75bca6986d4bad53b252cb8dda8a6e1c86ebf3dff55f3d20a12d1d7ce6c1a264caf69d70019db3cdafc796899c12cec78b2e28a36fba8a0862358eafdcbe208d95bb78efe479f23d8a3f5613278606b0c984a19ece3b5461a06cf3e9a09efb6a1b1a9ef70371d6f25757dcac86b531dab3e19482b17ea5d4c9fbb72f1def01aaaa85786b097d9eb3352642becb33c7970146db884f521528f552d9b49a6df706205d8318827f2f13e4802f2321afa56c3ff +ca915608545cfb4d3e86e1230b0eb16f68983fe9b2c45bb3900e58ade02146035465f7a17fd9ed7db66fec1cff1c569bc53c52b55f02daf66ee50bab8addaa8fbee81c3afbd2e90185e81ed144b0eb5b2890ad74e302350d788a7caa939701d1d821b2ba6d2ab4a7134e518bd6e5401931986cc71dee502905e3b3793fda27037d0283452ebcb2fa0e61dfcc5ddc2622563761e12ed4df303f519111d1deee52934362bcf54a2ddaf88133020f32b6b17a91cd7e092c5a7b03946bea12d1f26b38ee69b3c5cd430a4cbbd1fbc2c010eb34fe20fbe6e54cc26ea144ac971331b03b06bbe4eb348a77ea69bcc01b15f2f0e3b428f09fbe8843b5862f9eae8d6aa7 +fdf984ae8b52dec50f1a1347c05364f41e09c07f9ee8648532204f7ff74b5c2d5098476f922538b76dfc0f292a3da19d548e3a386afb0d886f1548e3aa236d1ff11b3a4ac0f6aadee939a712564bff36659d697e81e448ae268041c386781e7d7a4a8ae43b2282d10501bc01b7ea7936e8a2da56d283ef46e0443c6be1ec245b5da4c3e51609421ba61c9e6107cbaeb648c9f4241f3121805d812858dcfeedc739deca90a5184065ae81de3aeea1cdc11fcffc999c1596f61433bded4189484843cf0204c7103676b52a03eb5ab169b208c30b6b97dff38dc16df430121eaccc20c0b036679d692378e66da6cb55525a3facb5f5697f3baa2632f66955153507 +f408008608e160887681567845b3f6767a10e26946235ed3cf7388af18857a7d50f3ff5f1ae77155c94131035616cadc90cce4519a4cb2e821195de0a16cc83528de5ab679165372d1cf740496bf6189da7d04e88748af1b35d7ece026d30b24618250c2ae35cedc8749d63f545fcb177cdb4e3716a140d3b8b9c8bdae2c0f485d68d4563eb14646d3556df523237d32c41e9e22fae32449ad755deae16c30fdd74213d674ac64d7cfbce404fd3527ddfe6c62bbca28037989a6d87974e22d4276ea1a0a12c2e15e20105014a4d7d250cec33f15cc32d7317ab95e205ebf271a4360d7d5aecb9ccb2f5de585e8ce8628aa67874f1f7d768aa29bf4a8688a8707 +c30fc9350564d510f441eb49757f69926bb034853d714aa4e63df23d816fb926f64a75e369ad874f1c5bea784dfb99f4619fc5187265cbb41f027723ec1e4f543f41227702d69a774bca4637e3dbddeeb1e216a26be121080150a906343e09ea026f1a80d6d14544dcdfdc570ed27d5279a36c24aac4832ae889c23368a7f444ba624a4f635e6c117b1e55dec0b5bd7420f1f51dae7b00d99ad5239f4c3852f022b8830d9a264434d6e779f9dad4a1e737f3b751642e1190a531e5b71789f75191706c9add7d5d82b8653e28564a8f91897f436302058d25f646f5b430956b59d7de822525342bb9151f317fc9ea6db4452a49fc00638467357dc47bbccc6c87 +e517aaaa7458a1c9321be4980f4227b971eb25cdd1cfc36d8f9857915395d007604f05fb29d87436b517f2ddb2844674e1858c6e60cc53ae3b5379979af4c0a262153bd01ec6b1e83ed772de5d2374acaf6ab03aa2058ea1195cd1ca43b15a1c1fbab934becd2b8747abe006e0265b1fb07394837458038a6ad43f4f7cd72bc317e916cb781caec98dc8b6dc3440858d191f4c813af80b27b5fede614661acc135560be6e7bb24ad46ac3fd91291cc56046e4d23f170447f7e6a82c7c4daac5cd826998ba0bada6a678290c60b1cd6dbc9152305370bfc360c5e4ac0ce81b9efc4f397c273c4b66e34884ca0bca68976931e647a30c1b2c18b1400590e1dd92f +e3484304f0b42ba161f094b38d2c99dabaf753a410b42fa7c5ff3d5b3dbc4e9111f0abc6821bf3021cb1ae745b64f11c1d3b060412ce837d351589f4467044de5f04ec02cf12d0191e45080c6d9795ed43eb5dddf685e199f7dd4e5922e1c763326183b2ac875c1ae2d62eda7035de6215f093ad3326dcc67bfe107e22febe5b3e1218fdf70c5121e6307c8826c348f3a66691324d6c9a8be8424ba037ea7bc7cbde022bda749ec8a9ca67553f00ea6084b199b491ea84e088e885f28aa356bd8d9d7fd84530214baa29c0be52802758bc6c216b822a76fac5f3f8741463d1108e00ac8b9b8605012dcfa87dae49ae62bf17d86dcd03a8bc55be744f1e62e927 +ee22f5854529f5f1491c8026b0546a548967c440c1024732b723cb941fb01f290f0e390ef875ff64f1141d34b6f2b2657809a37b9e179e85f16fab93c83e3c63d3b52c21c5336f4cb5b29f560f21825ae1a5c227aecd200a06efc413fdf9e37e4625d6241845ec6b858241375c17f119c40a98089a71fb7155f35ef382b3bafca8bc0598c93e64644cc3b669da2639d6c0649194ca5b8c850ec2a270a2dc086b1410d1657d01987dfaba99ed2cb0083046ff6c1083e637d66ada929d0f241acc2f27ba92b16eb02e78acfd2fe33e548bc1982121eb3520b46252a93274c4820af4dad07dc1036979f813db288a7f25f7802bdb0cb5e3c3dceda306a2dbea8a37 +cd84b644f529d54fab8d9e5cf7abd15ef2d4239015b114add63bd0dd9f4059e1230791204f2aa14db9817cb4af9066e3a09963421e12603b7d8eebc99232d11fa062112f6fe07b2750a054b6964efafc624de2f2f72f17fc780796facb71d9c8e85c2465f8b7723225fc4c8dfe3a21985df2345bb4581d1f6f86fd30a0acb3f446656437120acf2b5eaa5224dc31e11dc92e59e903fb613bbd4d967f148841b113c4028be07e3da41bf45da91a87bc042b10f397a86621154b4f4039d9a119847437219ec70c2e395d25316ca2ffd3d9e2d98b9a0ac73d062fabef4664f9f738c4bfb055f9e0549e4a6468f3001980936efaf8949b2421cf326fd6ae31d29487 +d35b19baf3a946c4b0694b75f670065662297cb47a3ec317b40aef0accfe7d0f650799ab83c79b3785c93097fee86f0239f8571f96ac57bdaf69fcb77c5501f0e3515452990c838362fa710c59ebfa30949045a528bb0ecfdf1b0999d3631f8f0767228764a031a87f00d6533b454463ca347502baabbd6fbc32167c4e799266cd89a1c1d8b3fbb59122e6efddfc643aa626a8908f2d00a777080c665d608d9c59538f5a83b6aa799b1200ebfef6729c4afe4e6ef096d4d3c4555bc964dc944edfdf1ed37e85a07b64b04fa64a642e9bf9952e114fe63cfe1bc8163be8abfdff4a22f3a1b935bab52b02f11f39b91de5967041745594b2b4cefbc5ead3958797 +c2f94c3dd508779d96832c35ddb7d52e56cd99a9a1e4cbf9308d58f1cb5010609a43dc86aea46896c71ac608cf1601e6b8c7e27f0cb7652fece11bcedcecba32886396fde74755b190ba888048d0edc4b4d9480ccd9fe4c916362ef7fed7d5736856ce3c804ba47dbd05d8ab547195d0df297cc756c71b7986352ea5ef150d74525446d128c6f278541aea6b9acfd601436e95ed6b0d426d7fd8f382d97ac7ed0894ef150aadb74d65c8cf4b89c796dfb749706397af9e36c3476ae0f92887c76cae4b0350c9f42587ba03439882316074e135c1c9421ab7f3a4f33a0cb7f4f47fba54fb1661be23d376d2fd6f71a7254aeeb979a36df6f5ee329698231586af +faec05ccbeb87ebc154903a8e9034c88845a2fd56fe1247c97d945a95ac18f41a4b3ca3e860eb3514c0aa226550ad8bd396101c912fe2b30542071d24eb0293a839222099a5e822f15111e51fbc76a235653e974ad1bbec605cb783650eb19c0d8076d3cf1ffee5ab3591beef974a178ff6f0a4de424e3bc7edbda926e009b8ed0661c2361d3976386a263d188935793e789df2f1823ff7e1fad46c29eaf979b6b51c25a63531d2e80a349c8e9eeafe9a0ac2401dba17a13b884d13a601bd7fbbbcd3ca7a12c63d004cf517f155dfc17ae784089816bb6c52be1d4768c4d86e94e0cc2c3109029136c93e735a39925d70e2c9be00eba121b28e90dfca400d8a7 +e08ec69804aa5edeebd0b654a6788ea63d0fa5e2762e8dc909cc43b81da64bd397a0e9d5c4c9f41008dd44fbe02b121f2cbaaa20291e34f0ad0f2d91a8be777495fd38cf0d404e174971826fd810bac0cbf92d71fb054f109f151716ee1d459c1f9a8a9395160667db4740a0ec704a5de5d94d7a86dae0fe361b4a77200f748c7649c75be554e641a97b7d735062c99f457e4cd017361f27b55d0b789e69ef1c059cdef9df1654ab1b97fcfdb31a90f8dc996ec60d04d0619872dc731a7315dcc9edff40db1314ad0c64c0dc2446cf01859f6f7e377a2998575e1a39dc013f1d83c1ffd268d4a5779751fef480f6fa9eb375090799d4906313ae70c0b313fa4f +fd2ec2e4cfe393cb17c0482226e921b280193f8c2f2c063a7c7e579aeb49d8bd53eb484e6e3f93f454d171cde164ddc63c278ae8c23bad2606b86b7b37452f1a2ebab30b6e8695c778e064e651d9a8f4904570535cc8e52a63a16a3ef2db753facb60d25361a283f0320db73826ed202d486c37df426b1eafdb70c6c311356ced8b23eb80ef9c0c5e1b04998b5226d8d869db4cc0848315e14334497643dfae5c18f2a7a90a1278e3bfe5089bcbece670e32b611a6c7b72f719ce461b85044fd58794683c9224ec7555c080ac0fc22123b48751db997a651d7ad3a7ef6594fb6df5d32a5d5a85ac6a85fdb48c733c4f6986879bca48b2d1c6bd3e490bc58704f +f07b0fe302c41d600f09ec22fcaa455a733d3eb2881dcb4e8db398cb72962fe5f862e078ffcaec3ecd2872e060d6e2cff0053637e45e9a4382b7629f96385c3a5fb57a294e5a745eca1038ec55dde0e15448f762cd41a29d02e123be228fd585ac93d9e5dec97d2632f353d8718dc8ff26637bd26b5b9ea789f38ce17421856e4ca3c8578d3ed0c4cf3b71a054c27793d098463ab0c316e3a09cc30707edf6ec78906f5535e43f5db6288948c4d07d2c5d2101693577a4acdceb126eb81ce95f7b1718c39c7fa04cd1fa0401233a1a670b0f52356283f3b7c409ffa6c522b1a28daaf1942cea8aefdbc655222dcf00a04d14292b6f475d35e75823702d57b96f +f54d21d78f1b75d9e6b4298285a1ea2211cc41570e7960e63c1642188170e29e30b927110a9dbbe7e11188b05317309155d17cd021fb656585d83b9c0836b26d140ee18c009004a11d15eca4844f92aea937ad297d0e89ac53219e14d9ac29ea03f58a158ce7420699ac8b6f834b3230172e895148202579daa9c1e1904812a09d2848842aebbe7e96a18aefe120f6ba31259decb67811b435018e10ff7fb8e97a4c8c5cac91ba0b354d94763e2e593230fbf0d075b33967b7f28d1cddc2ac613f50c244d85bff5bb8801eab5289b620f97f9ae4428bcb77444b8b89d206b1950fe91870e4993457991c19543adc4e5781049cf6639ccfe3adca1f659b6a9b0f +d7043e41bdea5c61b469075d97887a843e8cd5219be9d8d04a106564f7daaca779bb6c05aac4de966e911bb801a35d3b5b940403cab538403a43a8f2d57c6733b1f5879d52bef4057689f5fbb430aeaa53ccc9284e2d6ab9a5208ce045323e3539f88d63850b63d0dbad296c39d0f6e1251374bcfe5d5cc801e20e3552f347d11272935531a88faf5034c5f480a46f7dbe6f36efa7579df41946a2a4bbca35c55d67c303cd8c407d524bbaa99ab7c2933d7372c448a4f0eb0626e1e07e2c1ad2297768743b603b90c558ef29becaeed690a74f51adf1582834fbeeb6023ce0b87a1720713b2a9b847ecc73e0310fc261779e2a2248e7a1767abf58ae319309cf +f3fa01633e2bbbc89502c8885e1ca1f1032a8a39f5513f264a7245130d9b0b66fb496343bb88a5c29aeea04c64f306285beb0bd279161c9b022368650a4bc9bd999503e2149771012b9068e5d8b768f11a0bd218b9b6e118a7ed5231c697dc1db65c442cc8a6761aba8d571ac2d9a235fe43922dc68d6ca6ceca167a5bc34f58c0d71e59bc31cae7889089d8611067b0e99a9d91a2552304464482a5d82ba1b9f9eeb0a28bfb7c94e07693932b050bf72b83446f428c5a0a42a0134c00a35895831d33c0114de0ec61ebdbfcfa2d259a52b3a811545da251228972c171b5a664466b14258ad885dc2fdb8b18ff0852afc8a1d422a0a31e9ce81a8bd30ba5be57 +caf193eee6eccb5750f98ba5f76c8690fa71b6daedb0f927d44b3090f8addbf33c68029e7ff1165239c4c2f200b19d809517b290aa15952d289a4f65b96f5b2ab0a578a0d741dfe25218d9f7eb8e565828e1f31dce2d5b309407478d9d7a255f4b05c600909cd3bd4be6b811d39e36adae1c5a7f7ec6af20563d48d2b940d592d9593c3115c34c8a04ef4f2e1806ef35bb8c2ea90cd278cc9cd13ac328b320c29fdcddfa9a185fda8439fcadbbc3f33c250563ce4a1c12769905fb307eefe140b9bd802fe702af3045479697927e800cd1e174f718bc7ae238de61d78424cc9296778643783f4b545a2d33e92cfaa1d2a1a4ff6e234d7a01cb69012f3ba76057 +c82f5d437145919e901db1c0a0c443818722ec47e63d82a7673574f00db7be8c93839ef75521a6583456506ec8e3f6fa8d92d88af939d4b3918db3173bc1df2794c7cd04f16593544c9a304ca577356ac63e4a62adc79239cc0ddb576382a34d04210f466f46ee5a04e4df5a206d3b3994fc2cd2f490173d83f7b3daf64436af0305748eca4944a6a1ebfced502b701eecd285f337ac200b6defc274f3e5b5145ba43d3a5559f58c8932a226f729fa24e61e461ddbd572edfc070fcf17f55bba4259b0ab2fba3528c64add7a82d913e2db65073525a4aa311b0f14add4a4a858b621a11c586a3fcb5161afb0443c922c0bb8f418bd8c56a00a13f1d333906247 +cecbffbe543e25a98586247f32d154da074b52f61f7bb315d5d86c59e2843feb581198bd1216e3be1dfdfc3fa8df988a9a6f026b00febc024205a06a816c54e473d7bfbc8d98e3c7b494101d31812aae7613cf44662d3173a2ad7ee46ad25c5dce3a01933e2837edb4e5612c56127ea5567d2ae35399a73926eb926df2ba53c2eb654e53ad5cf9d6dc4d085ae26a2c6d08c6ab43deda8256c9fe7b1e9168dcf0b322665e7094d44f18028122e71bdf870d2cdcb6570a03a06d90e384d8f4b558a8f9477aa5eef06d673c4a045b50af12b3a1672627efbaef661be973ae8bfc5800e6a2c2989905436a95855f3a9dcc9f0164476dfa5270d383f16db3e1e4077f +d2ac67a8eee3ba9262f9dbef9cd49c96a6a4dbec434ac23ef4f994079f4c04f1392ee7e18444feb7de7b869632cde291a6a8f938e7e769f3655536701ecf823b2de83948d49ead1dedd1e8f85e435604df1e92dcf9bc4e01bbbbf046fb308a2becbfae285f98181f5dcc4db75748292a34fc27661f95ffc8c75c82251a515f31842d7fdbb7bb899db5d45f29eb4d6da4530787c446a9c5d20d8bf92845b8ba5f2140d9123260ee21244a4b996c462b95be697879c06e7a272caf2530312714f50db64ab147ea8ce94670fa207f1aaf380e1f58001a66935ef589b1bc782948603ee6c636e60cb35a592e7d189533ce2af5fa68a1d73996278c738688e488c2c7 +fad8ad4e39c9aa6d856eb0cc10a2893882334e00d412bb39c181bc118d95bc56dc8e47a37d8d30d68c3e7c36454bdafc0936c8388e3fee7ccb3e6c1030401ae70caa0c93c868fc8bb00408857ae9256797a73e88cd2a22e0f3dc973cb3825131baaff4f105af7afd2f0ab5024588a1d51e7dcdad29d046262f74a812ef4b46bc015f48088bd0d80170c88bcf79942c180153860d7756c8bd2d3ae1d666e1d458b41d82a5e5d8a93cfa3d1394d4007a5d0bd2379319427d5f21c3ba2fb86026ef1aa235eb298ba9204c98dbb849f127928761674f063595470100301b74a3f4aaf2b3dc5e599b98ae40a68c045ecc474b09a5974a25c7eb7eb8b9ec7cc4740a17 +cf217f09b61852ed87027c20a7cc1bc022c665f7cd856c88ff22a86d3c600ba4da2e9627c416615b25a4f310894d23dd94618b1783b982385059edeb123f372ed1b338e8241d3650dbd1de6d04230886998c410b20e722cc49b3fbdf5667517ff5d1994bbf81a0a7341616ea1d388326616e57868f4d15805fee6f00ec4f698090fa68eeea0516bcfd0f57c5c9e1da8d80aba0320cfa0b7e3acd900c7973a884f1c64780395fa1896a7fba86884887f619f6401eee1efa21679b26a79ddbbc06d41c9f17cbd13a94c79d5f3bce72eabb360e8c4bbb1a9789e7ae9d3b1f692179d5046b65d7d6a8e4b53bbc88c7f1d414fc5f36113e09daef053feac5af686117 +e48325a8f6aaa3bca4793659671e9699296cda7fbcd0c36dae3ece859ca6f4ceca58baab6e57af61597e4e0fce5e0dbea028f6780cac6be0b3ccf45582f7647bc9daffc1ea026f16d98f6ddb64764d300ce9f97ce21f3a86efa5d138bed9630ab4e85244ad69aaec4a913c5f36f2cb3c3d16a95580324d2dffb3437f2b7773455f867bac8d9fa1ce0ee378f1364a77d10cf26590f000a2d55a478af7ffdc289401130e3a4b3fcc130ef4c988b5282e43cf9423f6baa3d45ec38e382d0fce1cacc8081a7e11dc2bf83e67ba26039d7a8d9a2bce6be77ed5f2a14049e2b30ee4c90fb3fae2688f725402dc179b2436be2a5ad74515385a008e9a9ce0ebddaae1f7 +fe4bfd8d81ab8b70c68d505a550f4bfcecda1d39c52fe5133c3fa21dff611e0b27adb9a340f527f67b8a4fda01eebf0e0384093a1b4cb9e239b35c8b2a29c66b19584f35d2962dc0a2c59c2a01a4b5cb317ef25ede6056eae379469bd6353c6846b0fd1224616b5c5e3f79b7fb85db55ced7d30bb1ac7f816dcfb42d21b0288bcb5f58187b38b7c301eb4a0eb9b4a9fc899a67824915b0deff5f4845096b5805bf6bd0647bd51ef080e46674d42c44e04239df613945bd478645cec2f2d45699543226b249a0838646507a3e67ba121b226d2baf64d670ee564ced956b2ca91a05ae48e951922448bc8e115f3fa9f039d4844b82408f1ba73cd409773284d277 +daeca34c3250a5992a4e8349befe2cd04812febe6ddacee16c70c444df19489c9273f43264e21fd5d1de97ae0220dc1b0f4134d84dfa1b6dc548e3db276807347daffaf73846418078e9583ef62e86b2a5aaa112c3c165b8fe388c0e57b62455f71982b2a1acbc53d46e8b103c6844575713a7ef1925afd3bad847bc293c993b75ab81f8a4d08bf70f5fa24a99a20248a4f9ba468ffc1e4133ee1130c7a8f6c643eb6d8fbd824d5c2db0a0500e5726541766745bdeb25f6c67f71b3b776285a9795a39ebdbac18964c0204bbcf0aad2cf726831a995d54f838c76dc4f22266ff85c11238ad661120fac2d73061cbd5af792c1323f033b7e0c1ab71d96efa047f +ca7642d7b5cc7b914e990777d0d20a993fc394b05fd964d6376556d31f3585b6450c1e99f00795c26282860302660a01a63acf7e33f7b158a19d02a9bffe9634cee6c086501cc37dd9a84455f6f488264c1af31e376d2da66837eb8fbecccd788d404d25e253a73eca0b889ba94f9f12581ee3567c7b0c1544f426c7d5bb75f6d430ec30911970a0e480cd777b4747d16c16329b2b3e45e9ba3070897099192731129a628c03e702df53686588406d8e63554fe309ca15e10103d6fd0f51d2b1b302dd3e9bee404e30fc59bfdb213d0b1817e5f0b84b989e80f7cb62bdadeb623c10591d870081e9bb01213c73893cc8f88959cf4899b53219f900ae62685ff7 +c9bf2fbb3fb9c016cc0d656e2eaa45a2636b56312a7a5c30c2eaecf6e7881ef110912e245dc3f378150a2e0e7dfcb863e6cd40a4a12af611df51fa65eb0b773f80f1ce6956e95b9aae6784a6b6fd9b7273449547cdd51d51bd5fbe4c5355044f5f98802ff96c5429f2486f0ea42839d777cd538125ca65a8759addd1ba7ac35b91c05c566dd8a4fe817992d62da19152e511eb6f5327307f628936e13afa8389fa455e98c6c63595eb63ced427ebbe7f0501846b0fee96727fe39e66e5bd8278148681cbc41cdde9196d01fca6fb5d3f64b740f47da7c403ba95a1e21a377185a162ba72dabb92df4ea8618d421ad40fff85474b073d2783e3e77bece73049a7 +ff7327b6d44e7542613506040d05f5d33342ccf8d85fc306650bab6929489f7d6a30b1ff9163a5e56b245403b2ed69874ce2719d2e62d3f3689e2f1e335f262f10608db14603dcea2944c74613a2c9f5dc8bc558e77a01118be76ed8fab9e365600f639365e62490efac914ec84131ab4048d95471d276bd57fba7b5864843adbd3cabe94ffa197702e942c4b83edef1e7ca6c3b9dbd6e672bd11ed7978e656f956c422ea5975ee08dda980a0f2e8f1480385276e505d41b872fa0fa731a0eeb1a8089000695619c8355dcb6d3363c3b35dc868785fa1bb526a4ad64c5b623450167adfa5a9524ed4f53c76a85c6b61e8e843a4bbdc4770684d3a8c452031107 +c8e4b3766f013c6a718c86dafb40b2dd0eb8ebc744bcc4cefc3a1801bd45dcc67675ed0b47943464fa28a082d2f54fdcbb64bb53b12e1018e4629aab765c6243633ff6f3c6ad9d9fdee9531ae9ca31830ec1add8322ae890943ae8a6efc6ae02bcf89b4fcbf65065d5265a08b77ad38e4f845571dc272a1681d0c0055ff81d6eca129e1c270b28749180ee0390de076a815d38d5e782eecc12aec6199156e2c40b9bb0e1dcbf446716c532c87aed9ffaa77f0bae2b3d7779c9096dafb99ac3c729973724dfa9334dc80f54bf55af93dee252e854f17d8b71c0f7979246cc058a196a5b4b3278aee4748e61551563624f4a3db3fd511680e7a109ad5da56cab4f +ec4584e344afcff79e72a9cafe4d68426e723e86db5df2163b290f074bedea93e943dcc1106b6abd8136d54fef2e31c6fc94015e88a4c9a648cfb3a771b7339b5a16de463443e9679e4daff4a2af2862e0552a380df1d58dd9dbf8db6af1bbdd235bb32573eb93e3ef970cd523b9ddf27da019ab73fd82cfd814671d6b165eba8015f8d582324ec726ac70bc172110f5bcb5345c83c81333c32d104990da3f9261c7032836cc2621366a9b3500e22be3f7e1f29e8f6f277585f6185fa5efe5a5edfa7c63ba79409291eba9edacd6533e1a220496dde5bb583a63454904a1618af587e362a08f88b814fe9b615bf17446bcecd4d47d0afac9605c0a367512acbf +f4c8a32dea818b60648b99db87ca6845c97ad94646cd728c8ea8d0010c64fba8e2c7fc78f0afa7d97b48d7006984f0e0d328a7b39674e9e487f1b5410ffd363a3a826cf577c395f1da38f0e2af05c01af4af42a909f1f0f3aa796873af06eeef5c270df5522e0d8a928102f27b573d4c474c65e256a9f005499e10a6b839e09bdad0a8a5efeabb247972e742f216c7a84f8b777722333ac07f6d7397ecf2b1c404f0aa02ce952afd94313f6b259146b137cd007800d59148172dc0abd3f2bb7430755e01cfacddfecf9c1c55c7ae85ab29ef4ebbafb38a494834fcd83b7ea2ecc70f1ab5b1307f7f0052bbedaf5a12a2d7a93214bcccadfd16203dff3139530f +c33e294179539cd6a1744abc4fd74f5699310c89b8c3cd1be6b5d227433f2183cbf530fa4946ef2a8d2fbd54d6ed238ef47472694eecb5c4b81b80e17a8b901a6e2f2a79ad2330f8c80dffc1bfc2ca51faa40718d21f9a4cf6dc1cbf53caa7b1daa45ae29f91051cf9f7a4af91c8d069704cd1428e4748e343116ff78a117417e5a097c28471c6fb5f4eb346d5a2c7ce6b8d79430135dcc61aefbd813b1e0cec45c0bc970ff72c6c7c9bd50a05b83242dac7d16b52a44e3fab719899e3efeb0186fbedc99ada0717f0b859c0001523f0632cd5aabf410d6940dadc646bd5e6aef5b41bb033986b4c3d58e181f049715637c34be5750fd8ae6fa7c375d096c98f +d4ac14bae48424f6116b83ac0b1cf762a3dcda8e7b54763d4aef04c877842247ef5b82fcbaada99b3425fcff4b27011572a0bea364394640c63f91dc939028310e9652208eef6d38ac46cca12b976d03fbbb557c94755718ac7cf54004be19799f7ae3833249d2f15af38df78ce0cce0e20fc1592c8a9562b251239f264784528b15dcbe7368d0f32dce53516acd9586454065a544611f601b3779c974589a4fd391e3d0a2a1e020232747370b0630a820a6286b1f17ab9f3a7449e2ad8644ffac7c89f6f3dcc767fdb7ef7012e432374b606e6aed4f4619de4e120c3a0ca4298db8fae60c14ccb670f7ef89d56a7a1de087151cd5593de4e9cceb26117c58e7 +f03f6513a248c0ef7f0c2a5975e47c8962491feb94df8bc957112921fee6d28c71485b542c037a9e67af9ab261119dd723c1d35c52dab528b10f0810bae5f71cb2328d750a05108c5420dee3c15cbe395da8ed82003386067626e849bc0e1e55fe367bce0c0362491e51fb6dbf31b67e88afb4f1ef417a91afe77d5fcfe4e6520aa2572c6b05ec775070f86f1ee208b0739e04b0852356858497c17cfdbd145e8a80bd690828f17125b4322e7ed6a32ec50ad3c9ec7c5eb9624431c649a553e4681e9dcc8fed8c22be1c42ead20e9e3272c294291416e9d7964c009170e3418525f0d24c1ef3e44922c60ee1fe81cd6197cdc1feb91e6c3e4ab0a098e5a4243f +d0f5e22b57638c46a9d4bd3ebb36ef10d91be09ad468ec0e528e891d8ff57944e0f4e3a989f4c0585567abc9427fdc7c85ba35456fa3004027ecaaf7d8d103038a437bbc4eb4c1faed7f9d512e1fa99ad849701d9c2c5ce14087718f849edcd5ca9cb678f4c9fbeb946f48ef18e924f981aa5a045e1dc96b7735b70d517bd70d756756c27742620ba12879b48e8d4b2a10cf80de4029e2ce9d3820989653f69ba65165365ae287cdc30fb36bd7b94e54d05f7f6ba65503f5d7b3284815cb075cdf52f4cafa0c6df0d9c46c6ee5b96fa2a7f5daccfe1c32fd7ed6028ee4b4b30cefc2b950e7c183f96a5455f842225f801b73e3ebe4adb99511cefef0e4bc357f +cf4d746677277029d2e2445b1ff9d3c27075226626bb48b569b6b04f8abde8df79202fb26d4bba8a61f81ffa5bc5d7eb35457eb0c82ed30ee7230922c2278f68e0ce7dc6b7d9e19a35a9a15ca5b6ec9e4ddc90334f99322e0bd4e32c819704856fd96177633b56f6651e39b27d312d96708a982361ac93c435c65b9e3411dd5a7e7f8d9cb5721b0aca6b2c0f2ebbe2d885aac6a16f8f64fb5e1a9d2e0a899c0171edc0e325e44f279c49904cef465e34f5e4104333ea11373747c40f2872ad14ededef9acc8f14c8337240865830a60e800ae642a55c325c2ef7dade13987d958bcfbe360791d3ab2306addde1c4b959a4eeda83de2af3e64d29def31f46cda7 +d28204559c8be9d1ff181f1ee88c703299ecdeb03217190abb7df131b903f5076d389cbfecbfb0f0bbcbd1adc597c0026ea1908d547f48bac0b8832f6e249f7bd85228ebf721d808593ee8a6f22a5e843821223ac96d96c925016e3d611c38f7f224edda5bde0c88cca39a23afeba8fe9b601949fd09dc09443bee8af58a0897f829f45e54febe7dc82e07e062deec1ce73f013e0b444dec24bee902370bab6b5aba68947c5b47fc4a1ccf69f4fd5afcc23db52cb547ee0db3426af3ab249ed267abdc72c6ec6a91df76e4d77206410880dfcc1c06ec8b879b707df49b339c173e4fdea03f8faf5f17ac87c7d3486d51a65be8adfa64020fde54e6dffe0c3b67 +f921e0045ee89eedb1528fc03ec915d2c994badb1c8c3994c3aecc8dec0c2d2de8e3f102b005e9841e98d3d64ea80516416164871492fe30553a5b502ce88e2b316c9983fc1b9a2076e495e8b63c3dc3d57aa918bfaaefd003d15cd02aefd517ad0563e95efa20ca829998aec0593ec5813e8b535e0fc2656964989766e7c3d798046086176ccada9171eefe9a74365568b880efddbed3fd5b9befa35810fab4ea96c346b057f13c0dc39180123d599851a920c61c44a53344ba858fa1f57f63245b5e9ad13c05297e8ff241c15b074716f85ae068370a422528c1d0bbf3ff8710a98af78432fe14720b068e53ceb36342c1e238d7e076a0e9a9e8b25082ba5f +fad2ab4eea6df55e1b761018af5f5e6d6d37c54e3f3f080602243578cc3ee65cb952660fca71072bb818206c0ceb68e48a93d267994aeccf958c59a1d9605e07e6edffb7649e3062b7f0337c3d68f937adf42accb2aa98862b51daaa4c8ae9f267ed98fb3aa3472f2a760b9c5ca227abbdb01b75ef27aed73e7c97252b8ece6e387ae4a39ace81a9cff123546415cbcd13ca08139b4da1749eefa1287e87351aa60ab614e458af0b12d5211e6f6938e2fe936693b0600be8fbcdcb51761b01dbc668b340cf36cd5d47bf4304de923182c633e9c9302a843494de8371a3e3b6089145e1175c5b5041173b499b8169ed87803a4c4c1b7435d8e08cc3b3438c7f27 +d8e100b3d93e4ec8c6e4eda7c90556dc086d5821a9940c8059a12161e7ab0d3f1524de362cca32984eb8f296dc1ab94df552497afbe969fc2adb4582275d7f329c20ad3d957539a4ddf68661d38345b0554070ed07e028f639d306b04ac8da43783f46ce1dc63c84af787d379ed00fe003d39750dff911e6135cd922c1437b8da583cbc96269202a97f4b3da8dc62ef02f0917d2830de01807b65bdd1b21637be029041b9c54b788bea9b881b3b2c6cbe717e2a161e8515fdbd279a12b1616da7babd5779750c48162e81d84777bfc58b809012548051dc619ea2e70664c373b84e9e0fe3020fb677b664c0c097116ecc8a73084f0320cfd453c2519cf34fd67 +e3477961f7a5406a7233162fd0d2032cef56fa80f02176e9086752c1dc2205d91d8c525129a5cfa3f9455ed79b50b5ff5af56019ea72e4cf6a29dcfc6e996e980ba1f717a4a992adacb3e8b40a25eb5370b6430027eb08e66159b0928afc1f73e3c87a602b7e5edf17a3341240f28c9bbaa3bbbf28cba140d9b53c25660431f94ce5c8883c550235bea815644d2c799e2229ee1444ab63e0e45b27589a43f18483b8d6105c13f1fefc2393d1e3db417d758698fe8e15cdc7d8f9b41b331f776965a527758dc633c70d88428af091b9afff2ea58d966e46ca2e0b4a341ac91c4142efb1b11e5ba2313020ea8cb877b9293201e53a7fef6d2be2fad07dbf0e4d97 +f82dd3b307c0a2fe0c62db96865c013b9fdef4f60d8906d78fae0edd251f2e987fd32734bd40b487e9618525c328525486a16aa41f0e3693d007c5eb6a9bc87202b55b091ac6516d683dba5eac19605845c9b4e7170d9d00c1e1fa94f023e935a1dd5f0d057cd47b903efc21bf434cab2bae34bcb52881428d19fb9300434df3edaa58d042f87a1f06bf15eee91a932196363219e2092f350edc28a9753f04315f3873d4eb4ba7d089f3ef6209692282df743e0fd3ebdf586836331dde9966d556e29506a9b6d4d19cae59c2ec1183f8d9a46b21df0d60f01f376378fb6c163980d23148075d16cd84c0176d88dd0d7e80ec64379334c69fe5680c7bf6869607 +ed029493609861782924cf975123289db52ac4641d97e0f4265b40b49eb67b037eb1f9e34aaee6a3660dc2f765839fa998a7e1243f257d05f0e3e18e7f66dc1ef255391a407ee86f81ab356f10a830a2f53d6c51178ff2c2fc65336874c48f4e9fe6e58d3df85428cbe81a368df37bd6291172681e0ef4a24a1058aa332d77a642a141a7db4d444c09460c1dd8c946ffaf2947f34b65ffd5e23afdf3be6ee8c2f85af268a8585b5a7e847882c20e049ee080e1fcdf1feaa18f8c1a8d9ecbd2308a0026c74251be803e83754fcc4f24c81a4f647a00ceb00fb487435d85cad217fd0d8459bf699c1fab4ecd52b4dfdd5a8f7743c8aebe7c14372cc6327c33b2a7 +d322c05aeda570469ef0a3734704925cdf1f53a69554c087a783ff5c42ee0c117c31cdde6f55c9c336e094af6b1f4fdfab0e3b47b78ec76aa83d38b555e19d3a9ca1fafd8154915689143cf6dd7b75d9e7f9dc9ee2f6e391a89adac343378540539c7a90b75120308b2c50917df77a536a1a626090aff2a807fa0f8c74e6162c9107da5d3534be21fb90f4a9e0d8445e67c6b9a1f9e6a8b76c20af405d6b178c7071d8c7eddf2799ed317fd0fb1f705f150fd4702956573668870b136d99cd85df935aab79bc8fb2a467ed6be577e91924b5b931975cad338dd37550a398dfb8081c80f07a9dcf9331a39af38a39b7635089b8d0000e71c1e37aca8c5f25a0e7 +fd054060895f5c47ea771852725a338fa1fbd4ca5b68a4ac04a9480cd0c541adcf38db6ae95b5f9b5f6976884d106bacc2460aec101f620d41308c0a45c6fb6186917af8c8b4ed621c30fbe87176ba598effb8bcb10df6baddf82ed800f516d7dfacfac8a28fc80a3b8082f41363d24593b6922fd8e3183ee48f0646a9b75223f8a19aefac553b9848bc05ae44366ddaf930cdda35f8a0be7f501a722f58f70d78491c6dab3ca1592f404917cd0f88c3a46caa6fb5c78e27a16a84448be5fba4ae7b47e07280edf1eb4bba98f3a213bdb4f74e311d8870036cadf17dc3a2192fdf41bf3c7ba2d822a1cf39b23f010802786c7c60bac69a499902a70f3dcbdef7 +ff333b5f37a820de1a1ee8c67a1f57d0f50b32354071ed769de3efec5fa45f0e79231b4d24c4d1df3c29fd02855b13d6854a979218331f581205e3662acce8c5fd6c0583c1c425ca32149c8a262c0e9769286f21e1602019dd6a864a7a545006530a001caffadf20db928a0a2c3044e981154743dba3901cc3f56a3fd5f1fa26fe37eceb3a2541cd0ddbed991de9b0d5f8d4daca4efa0ed31011edf8000a3b5ac45bc73a805c7a7e81fe52835ed63ddeae30855a3ed61a728ced99b7c0acb776aa7cb11d3bb39bea047dcee998664569ecdbbfa6eb4233c79f31522b84b7cd8b0e7fa6ef8e62a191115ee0d352500e914e3895dcf6a14bd0e38c1fe63b6600bf +d40578e67029baf6299d4b3a40b510ea7fa8925d03018b32d670a0efe62331a5e5b10fb78536113607060a2655f904c7879bb04bab5f62fcfac0d5e8137adab996edfd6fc7d3cc11409300896f778252ec3b47a73d8dadffefa106c4f38f065ef404201aa0b0dc95d189701965db852259f14ce6024673bcde9e4deb075b02fdeced41e43cec9fa33e3268ebf799473bea0ca93eb916367fe379852fc26711366af7a56d36ee49139ea1850371a81dc7a9b9fc9180a169ddf923400cfdf6c2bca59f42d61dae9844c85e8c15efbe44d752d09368dbfb1a426374ad5cb1567a41e8e84995a424b8ad3404e34170c7c2f07db2ee0cba078bd59a674db7ce16d9a7 +d6ef2075fd230ed70d55ed1c6ba9ead2856220d8a80404971b8345bad603e794d10b21299a33fcc6017200422e9ed2463128770f55c701b93be36bd2893db71c8aee90768beaf3dd309ce192a0f57668e0eb28dea6762b7ebc2ba98e0ebfe94fc03e6e1044f4567f15bb45a455505fc5fdb52db1d25fd36d22e20b527ffb0f1faa4fc4194de0f56a5cb08546837800a0c88c0acc0bc5cc0c3bf1a5c4412020be08e6444a9142a777cf0a9f816406f8a1fadd557649857c228d789605b10f34a40f3a0312ce20cc55a5cf24533cbda7d93892d3cc6c07525ae4214619abd380b2aa3929001f9b9560edf644fbbae90a10ff3fcf88ca621f1aad2c38094a9b8d07 +d8bb206ec2e49c1f2613916ac085ccda15039769bc9df7ea7e85cb2293094d461655f2068d6604efc4101840dd3849749f1157fd959513390ff37ba8c89f16c1c7a736036dae05f2fd5fd8bdece6f9ff10a7c772c117d1497cc2953055d07f61943194bfcb1529d94fea682f2a59079c8525dbac5c4483a2a36a7137c83392b21a7e13932a43d44c9d307e4cd4ccba8d444fe18cfcd3401a4ea93016fc6ff132c49e4fa0d2ff5b9aeddb04cf5754702b0452fb5fef753c3127ef0be2c8183bdeee3ca533e0de0d2ff5461617809e89de0c9be2953d3aeffdd6a676ead2258a7396ea08992ddd2f4e0f535bba704f7b753733124806c974c70e57bd6cc393779f +d0ae0d1f42606e1bc1ae8129090281e7c861c706c1e718bc992e0679d5a4c999758dcce299066291dab887eb914f6d6bd2c9d609ca1dd9d43c5a4010b0595b2e5526fc45395eaad11063dd75c60125e279dce158af3f365a6bcf5ead2963bc9bad612aa7fc213c3caa8a09015d6efc669cfc823101f89c9866aae629dbad5662c69592c00fdb687c12470e42076eeb21d00d9758b7f977a5dd64c24a47e12759e545191ea7ad215454e4777f1226f7e2e622eb23fa808dcab50ca2148263d1e1852fffa70e20f0c45f89f1875a9a3e9f5bf5f933c5d97078adc9cc6a16706961382f8b43f1974f4d7d8ecf0ab026ced8efa4bd298c310ce42e084b98816e84b7 +daaa58edac3f16ca68af0a453265c971ee3b572b5188d48c5fd5ae4eea83eb5b5a643f3a98e4f71db995b104a09abfb361ed777f8af57d452099fa8f67b396001140850c595035fe91426f0beeb5ce79b2dc7a4c3523540c4989268d3512f018b15235bdd1444a9e16c2380ed08e68e285a6cac62f63e3bdb487a7126e703ac0c408163b7e3834fc160d2983e7c18f41ade13b8b064df6c691b766f9cda7184ce80dce090979d4c300cb7e83150c4a08c9f4eb34d6fd68b12254553c7343dfa0dd7d09535cb445a6fb573f3a5bb49ccbaf10f9160a8dce09becdf318294d64ca20c2f659fd2c038fde8b4e590e1db2a2cce635e0a05d06158ed49d0af129c61f +d29593751581caf59849bba7da4cde6d3adce6318e9afc33fa863715999a0b3bcaa0668d7713679b488e5627491a6d707c4621d8bd7227a200d4333ed9ce81575f9bbaa84edf88f5ffd7f482e4dd4c0b57d43e05a0fc99dea8c7476afa82441916a7599ae388f0f543fa8edcde7d5d7ab70d06c773acc6447dfd081ff52fb9186eb2e338fafc834810642676ae5a93d2b8db7d6b74c49c3ea7c2c05b21093145d08c1ea04f570bf875d2c63299503dc282532efe854b183fe4f8296b54d62b5f0859c4ca8b6c16865395592f314e6e0923dff0702287ce1bad4e4bec4d12bba0ce24564bdd0cacf27bef3bdf870646b0c0ed1cf58d88f6d24a245ab86c0438ef +fdb515f7c0071ccffbc8bf5bb542aeb162bb4222f00e7db93ca55c5b66cbb3279cfd7c0579988a5fc3bd81d5bd18bb7a769e91ed497e046489c4cb973903615eae426c6effe45327d9ae3cfcc3a35482fd2918b3b2bd6a166955f7e0f1066fc55fbc7a9b3553fc27a58f6ffa052b6ad8c338eb7eb7db8f99fa4e35e8a3eebf6f1a678a4fbf60bfa101ef818233bbb117cd2a54232f590d4a1c93c697d8c4d00a01b6deb425553f43cf85134c8e3171ca1997fe81fbe642ce7c421b8172e4bc151ddcec3bfd6d67c408f8ac41576bf0fae8cde9c65033ca74afe239c19de7732481f8f3f78100a6094c8979624bb96e663342afb110824a83410e0daf7ac82497 +d0d177626c21c518df9aa0ee010df02ee75ab3ca5b009ef06eeed3d2e5f5908c6378412887e979383fba20ce352146ffde9c8e9adf9cca0ab388957e9e4e6295e05fefd2e539274cebc82d03e8823da5e16eb4ebb02a7293203a3c4cfccd35dd93eca0d555af9042839789b58de0d026e812240d087174f3ea7d38d0bf3a5189d1614c757dc2681a3bd5e6bd773f7a474da947b156cbf444d832bc58f321af8edf189d5d5d314e8940f256477cf2093338cb371f7832901e53b5655dc4305a530af899d2750de41bec7dd6fad4bad57acd809fed3b5b769a1ae3948b3dddbfdc413e0dc1bc7bed3e1167db894615d25f0d6eaece24d693e2d24331e27a6e220f +fbcaf1133f0c8c48174ba2b2c32f7d691454f6125441c82c5757dd412e7c4741624b1f6c3d68210dc8d4a6b2084039eb72c260c413c389fe263a9babf9ec5c4807f982a6df374d4d384e5f70dd3f827f853ac94e08a06d6d64a5c09124ce753c820c4db77989577b3e71c32f60589b13527e3e16463fbef97077deaa5d62e51ac55f0829104f864c5f3825f6a69d6320fbb72193af16b8e446be8ce19e5e1980cb0a14d9b391b1410847fba0f27afc5b655a4651472a7fd61357920f37e905471732f56d655b324843b1093167a02096227f4ea1982fd66917b3267f6d4466781df93816d91a557c5cf93b826e0e0e3f7cd39d01ebbfaf7545377c2e3320b62f +c63e4bf032ef05b06c309f12f645d68edc0e914e60a35cdc1c1967df892ca7b169fee2a7501fa3737a635d8d3bcd08ef57d6bbd9d1307a820628dd28ca00039e1de1ab9b0a2b0099ec22a83bc9ffb70d29becd7cabb3adc16300df1ed5f445eec3c98c776235e49d23b67edbe43d3d067ada7dcda64ee6243e8f72e355dc5ac05568b90e14dc57796ac7c2118299ae141dbafeee85a2e54d2ceb8caa8f3785ed40c8670d5599374f46246180938704b71475412b5844a3bedbb958e0606b00b9cabf41737b6a430f0e0fae54ec6992dfc2514a66dec06df310d542668fbdb16c771421bef1044a1b33c01fe965f4925f22f628f4caeffbb9d6e2bd93ae8f3287 +c6ccad736d47a77b38ce8a9fd62e55d4e92535fbfc012a7c3368f34a1b51bbc22ef919356a4f8732e43dc6696f21ab3d04c39ceaf887472ad07bd772174d392d8e876c1f3f7de31afe53af6715857f2862426fcf5ec700ba0d467c32b6b053cbfdccb8f226314694ae4dbb12f6a41ce284227e267a214df4b840146cd8b855c63d44a1283b692dd752e81a7c99dddbae5ad0192e0449e61fff910ce8acf869d6d9c4da6d6e5113243ecc5bd844ab71d34a6232745a8502c87ef94a65c5c1d3b6f63c5323f83e45f3c66d9b6d35effb33a9bddbb720f482a4c9356fc2af51f25c7189c26e5f07705a4f368ed508b78b31369f6631d26094b7b600a2df1af74cef +f94b94872d87be9591760101ffe7f1cb5e7447b81f725649e8d7178303479fd6576ac6863646ce5a84d442532689ff5c669586b27c2318d58f33d99e176046ae5820636060cb79c74f51d5f723340e7920b8fb999f388a0eb26deae2ce306ee992599053827314fc236774b6def4d73ce91d513b1628e9fde63a6a95cc35ca6241f822ab666429b8e7fdb16b6c3228a78f734f0ea713111665e6ed0bc7dadaf3c32aa7cb0f1cb8c21540cfa3d917320660f5393040a80a3e4eaf53f5434612a8866006d92f350a92ec8f717b1a8d69535d77133cb295794ae1d24316e3cdb8da80718e20988efdf6f94c7501b40491ec333ea02e9972ec6e6c338ae6fe1b86b7 +e0f6135676ce1d9afcd5dda84c8fd771da26a05580a809aa2836efd547e909eba512577273d6951dffe575a9d93d9744cceea10b29ede5958738f6c4b1c6a648e9e39500ee6c5481730fb4b597c905d44a328beb5dc3684439b468fa1d99e21378a03579aa5704da3452ca5947de4610c164023f217f87b1ad257493748539bf941b7db38e49439073f2838647d86bcdcf2c2836edd3ec27b7347f23f1ce1ad92eb4decdef732cb266469b06aec497191cbd3682f9899019f2d24945fd85e1825ddae6a306a11c626db7f9864bc8bfa350bf438586618de5e3205bb71ea458696810bfaadcdfccda09bca4447255a056009534b405ce1ab0e34fc00cc8fa59b7 +fec1769b029a4988692774ba6811a1b932b463d48d1a750a5a3f56d7020d24d24910af130a4c97a7fb375adad4ba32f1b0dac7b9227a5cec62b6927ee723b0392991b2a3b8b2a41be3fdf744ba0d92dd207a003268e119fb4086621bfc520cc61ecb9197f927963cd374e25ff15d1d0da9e908467cbbe4fabf74af4a6f3129b6dfbf95e42f7e3b77e064a3f6aaa83841346441787493e109bbf85574c8bcd2ce1e2feaa74c72134565c5bb2cf68da1890b22a9c407eb08c7528ba9f8ae99c825fb341f9bdab00f38cc0ba408c05a0538cd8468f3ca292b5558088c555db353ba2f41cf0b449b30049e08522e17f5993e01c0a18f1324f78ac2547df7116f100f +d2fdf27635e4d29a0d4062f846a1eb3efdfa526a94bf01ad57cb96dae55477dd561c3fb024e9ca53065c9497ec91ed04a8a73080dde8a7fb54b2b4218d58a6326412c826dfc32bf6a13ba6ae437a0cf95a3adcf1cb9f9484ed4be84cac9da3c11173ae123383d69ef49e1986c995855d4762f9616e05a083572fd0c32ef0b9b96b90d5442a505bb07bb28c165e1da4915ad0f90c580f262564300b47116afff0aa64b7cf568746f2c9fd7ce61629e284503984650842fb8db41162431d642f6ae18eef8c80ee79bf63cf4cd9336940c76bbccddc61825fadefa087d74575bcabab6f15752be4f25fe4203ac131c932caa036c04bdcb6496a2ae0036b20810bdf +c0323ea6c50f1d776beabe5b9c109d804d1bfb1eb8859363ddefe9c14cb88d7e05c0b1cf9ca2a0014dd35fd929a4140cf0f1fdee1bed9d5ab5bd06c81b371e1d013b643a3e204d68571df0eb93019e9d375296a0556c29afa68763e7f784c9b38e670f4ec14e04ae1db20825d53137e4e6970d96e4e61e4f9461654c6dc925369cd9ff5a8812dc7ffffb9555fb758f1046a3b14f20d147845b738181ad26921ad24b59e9f80d87f95548c40792a68c185e90625d8ee0602a80952bc218dc511daf68a7d5bebb563e93e118b6ae9b8937e896552ae76560efca54590ce7474e9bbea5246ea76ce096d3ea1f82b8a4ecd170d5ae416d2df217ca7e2a4ddc95c0bf +ca8b7e3f80152c62b384313a7b9605ba63f9436bc4fa3274cfede1462cb12bbcc2b5fec9e2fb2e678299cc3449c56bd8f9131f555d218e33f4766e84f5b5aaf970d3cd62b40a47bbc338649a959dd4ad372892fce9cd1db9e684da147c89691be62a0651a6f6d31334f919f8d809c00d0febfa447fc3636abac021c4e3551dac724e642a4d627fecff73e4e079bc5bacaa120c4566e54a5af5670ef99d6c9795c23b20263e4e0dda8d30a52e3054e4ead83504b3a3a85d7d158440b9baeaa431c3d0acb7705f726141fd72cc8b55a807d4d2d9ea5a998d581884244be1444084042cdf5e07dff90d3d70955d410f80e32f82fc9e128b7604a08bf76a3bddf867 +caaefb78c2e5e5454ee001d73b9848766256b448d08484bfc70c9dad2b45e82c40778cf172be61143c7aca8644f53014b16e596f1b399e6bad4f17eab8b24b51629b2ff077d5f91ffc4925cf3246f9f45e664e66891f9502fcb9a976601eec4eb7999a2ee68dced45a20ed76b442c4cdeece517765fd9a3844058b735e019cf4720014d3163312fb43ba3096d351baf109318abf86f042fd9cbabac91a4e1066da373200b499508dcb803b145860b6e1b5c5651ff325789bc61e30a780fc9a407acbb9c5d287bfcf05e9f33fa6cd97389e92c1099db949c19c37ad55db364390e25b48a262d906d399b50996efbb08a1191ce2973b039e6d8f1b111f174af58f +fd0903737240dc093c22e3ee7954d5506b03c3cd8e56a102fd967d9f60e9fc787b6f8422945c77582b589998e058378ec6dce295750e79ed2882abe1979699e6c76b2c04ef2211f1d4ceceb6cf971c921d6dc8d9a649a569d1692fda7ced9b6fd8779c59edd5ed6922e91168e372e6e6cd778aaac05999e68a409fb1b7ab5be352e577a6c3990590ee18e08999c72003677a2290ca11ca234072cd57120d00de5fef1088279e1cfca77960d9da05ac418d3273c780fc42f555924311b98e9286021971ab468038ed98df43a6ac5533daaec0ff1ab43831a046355d7dca672c96086ed74f10a4b06ae80d6e40fa1a9169cb68f728b756fdda882d9bf12e1c1fd7 +feb2af6810def748ac52af4129085eab9b5f3e48ff5fea13e087ee3c69fc3dd4678f568051a503e023f6e43be02af76fe774cad5edeae122fd5c045705b7f512596124ed34376b23089618428225a074546be4714ab5d73a1e0096caf9f43cb496407a29a92fe9f09d027586d30694fc72713a015ca39b07ae7e1adb34c8ba86f108ec5d8e93c4d26573fa479542276277247b639e7fdb8884dfe7260666f41f7fdd3b511d8b437e807ea1cb7ab0d924723e3bbe9ff9c72257ae71f609bea0aa1829535954008b2bcbe3c75b6837f38863df26698414d74f119e5d1fc62dbcf08ff534abac539d5e840c6f62309ead630ec95b1c2d9bc6e47142cc69bd0afb57 +de2a026f30402f89eb5bdc15b924b0638749b239d00f59d334444f8ce51f19475d251fd2cd8a69b998a1a69660e400f66dcda8ea0e1ba99b8e6aef5125a71cca76d379b38e4c28737349c423382a38331e6d4d69cb7560314db05b64514deb8b434adfc28e5eb91088eec1c6b9873d5bca2f0017805e11be1914018581a86ef50a0d7e10e0660917b8890c9af40a5f047d0b05af04391ddc9baf580e89883335d1514bb11223231e4f60a63f504717ff7bb31b8ebee48e0f8ec94f7040a229128a8a0c2121d1bec73fcc7b38194780b976b3a4fe4fe3a20499b4f6d1f5a608710a08e12cb86642be8ae12b729b77ffdf8d1939e4282cd6345bf29320778f957f +e974c7bf417c36d9e2caaacb6d205e375b7d8688b368bdb454a439ebe6e0ffdc5998aae6392586572c403d9df79092bbb0f9316f9709296e8214e858e20a678845679c5ae8562024aedc43628b21d6035f2a3b6cc4aaf37ca98efdf7c08408ec22fc40670a158aa8125aafa7fa50cf319c1ac1c52ba1c3e021ec93afd5dfb4e3e36c0c6515b2992d0e2045c42f0b4a9d0edcb62d22885bfe6794eb0388c2535e17f8d933591892319442776ab158d31b6d94a28c04777ef6d542637c6b57c267d48307fcda926c87cdad97098849ed68d293a5b49df8f405559fc9d7fb14b26926556e7a126968857014ce96bedd64456bff1313ef66bc3b9384d09e03a5536f +f8d1f0caa659f35f6c5cff5d63c8b0373f11bfd02a969cd0c4495eaa1699688b11bfb740c1a99357f06c722433bd8e10cb974350b688053891b90775ca2d9a5ff7470360621f2f6ca0cb9cc318c58f731ff854fc278844fca399925550911f1e4cc68b11a5812a54bc547d1145ac2d5fc8b773f4716b587e99d3cb393a8e337fb5e9e2db0daf5a02cf3e646ae2c8f7c2e7046dae5d897e8d4259cc16e6b45564df1cb8ba87016a2daf9531ab8f0aeaefa39b9df39b1c23001dd16979488318dd46e63cb288411f808c61e72da0f2ab957c4ea5f08916c638fb58c596bb619d01a717d3e89ee50724d6e1f8f49239c0516dd06b8abc210e0e1c8533b61b9005a7 +dc93625ca24e251ea9dce48408efec4a8631207fbc29149f79e30b4d71d4d7ffc99577dab18797b63db5f7b696da78669955107b7ee057474a41a331f03ccfea63f384a7c6195418ff4c87e8391612694a1dd24ea63de261248ea12119667931788b695ff0d96f5c46c15a84681a7b2f147ca6777fd63b466557e709282788e91671bb6cf346e106693fe935e1795d13e76499dac56c6a408b4eb9c17f1bed528979942af7c3105b2f618cc355321c2237db315e9af500d98820493abfb6f95dc85370a0e78274a1980cd8dd625a64bb7d4c8994b9c72a2402853240cb7940ec0ac9cb96faf8e0479a7cf55a4b17b6bbc0943a9819383c51f516466c06b2351f +e6907fa32f79c07ec3f46d08bc50db8a9ad373336427dbe382785a6c92e020acce668756d7f9e0b396e3d075a00633cb6f35f739e51d2d907fc79030f018546d92346dded1997b648661d9adf9d83379062576f6d32f1eb7d884365a861e9ce8996c9969e1564d610d6f9a81e9f2e16d1a19714814e61f91773825affb4c4261defd2e45d5de9184095fa3b6daf056567aaafc73a8228e24550c119369ab6942ff4a0dd720cc5b72f80dc6c7c0e2eadea9c877ac21192a567a515c0ebcaf64a9533269ee32ec35204b3280975c3fb3568f52c632e2970f1fefd603e867449423a4fb1981044db83a0c326572d7eb108d133857f568e96b4ac9a30cedaf3e2e77 +cdf60310797d4c951b88a53059b7606f526e4d7938580a8989f283511183fa9957b241ca3e13a6ab3f3495ddc18a4f0bcf4cda1ca77d1e2926f1af2854321ee845ab5ca52050aa9943c5db6ee591abb7ed232045b649e805a1b7f22bdd72c1af03a97eae2be7c7855e55fd3bb0b8cc631ced6dbb2a1c228168b44ecce1ba0987b7df953976cc9146f7f90224839b380ae9974c4401deef0d5dd971d664a65b0d13e8ba7aa47c8058cb1accc3f5d30abce8c059cdcba90fdfe1a3cd72fe4248f6ad88940eee33bf9445de92513cdf193bcaeb50a69ab157643dc8e2f94451da90d0a21ca167074fe6243a3abbe4fb8e394a18b6ae1c7c77d48163f1d1d3534ea7 +d66a409a423bc534e53e5182d9a0d9ef4e128d5cb50a6f432fc84202712bd9ae876321a601a8c8bb8cdac4f511198ddeaa2aebbd19e518d3fb2994b3c5297201e9ff98a21892ae983e7be23320f069aebc3d7b8646467cd06f92236399098d3acc1422aec575c744cbe57c8b1dfe72b19987b45862d426dd0ad0a866d7600c59315a3f9b1e5be2177c23a7e7967fafc45844884c80ab34f59eb0ce97cd07bf94c87e60539adf59f09c1867512b02f7875b1061cb065c29688fd8ffb9dcb1f8911031983c80ea27cc959948b4bffeb394cb34a5ba8584886156700ebc36d9f797c857acdce872d8d0af1aeefbc71e03bd19c03dd283a544a52d930f95f2dcf947 +ccf688ed454b66cd056813cc0f4140d325aabf3061a4657dd7ec06a722ba33d1a52eeec57dfd808cffde601b5fff2ed219536ce950f68c6365f60e6b28aa60ac8b7287990e50adc010eca55884c2f263411062a6380031a2044258535ef6aebb430e453cdd7674002157ee919308e87908e7a749f5cfa7e7cd4063c9498acf27bd7d4e653fad7084797e1d32c4a2a6d235241504b3d5a6261a2a81e47da43c26e3cd3788f9d72200e9f7e7cf38afe926cfacfb7b350c8ebb237a7afef0baf1c3e3eb48cf3271ffed9c44e63446f5ec573c00c352353328652e59931aa0eeabc480e324d068ac9507574097ae51e02230860ec833193ee2462587d7ba04586de7 +d1793f60b9686b6c4035c92afdf00eb6530cc0b34a5270a3d198651fe49da3aee34d47dbcf5ba5f5cc765e14681ce73837f233ba69c5a88b612e80ee5888d8c47089bf5e4461e1c74c56300d33fe0b2b47050e2d061ec55b46cf971f861712e887fae0f0e7e21292be8e07e4c7ffcee068b65c693d11a0cc6d03b3bb54709c7e35957dacb488ee3b77bcf1c7b74f180c85474813fca5f0cf9c5f83b9338f206bc932281000598bde18692198ba6958080460958eedd5b0282742bbce5038cefdfd2373d6cfc0d9a04ff56eeca6e838a7731dbe83e359c70f00572ad2da8cc36f0c3e3ff9bac1e55fb31baf37d18a5f84a105dcc4775b303f5a51e706176884ef +e3cdad4ca4f671fd79799a0803aa223f531624c242b11911a5b393b0a7828e8ddcb5d8e54490befa0a8cc7a34acd2dc0a5fa2823360bf11f89f2c53e8a3cf84ddd01b403acf3965ce26ab5b5e6b8cfeca884130cc44646ff1bba107c196720112eb5e9e9a9c5508050fc9a1c8c7050894ecd8115c0178b09b1509a888691ed2f5b123dafe94888f94965774d7722922a8e5f2e9cdafd4c4672f1590a79cf00b59703217e0d61da3ae74cd7a9eab325fc447cfc859fd64806e589333382ec80e0b3c72ef3908188b1ca6bdf0c68bf7d150ca8090e55f2efe9d34fdd806b64343715b74484a46101dc88e244a440c5fc0d5c4c4bcf252c6f1bb01cfb40558c818f +ce186f5b9fd463ff1da5f0cd4ddf7b7224885ddcc66bd44c245f4eeb244a2b56f782f4e31ebd7897e975cf2622205077c7a9f22793224f15ee89e6a4a4a3e69ae8fada344e4faa52389328c9ebb9b52527224cfb8e0a97a5112d38c808a9db669012fe4831b2924bbe8b0a4ec0c4cfe9573c7db1d536e0af6454ffb4daf872c0fedf3a5c5d8e11ddf732e8b8ccf854f9b27ae1dc58e4c7790e36eb25cdc2a8cc089f88036cfd6486958885c258e551ca0ce3e7e3e69c12562c8792765c0369d0d9990a18a3b102a358b93f7926bac7ca61011de8a85b8d9a8cba94ec23fa02a9a789f1b52633a302faa8af96a165d50bd392a54c062c98d6a83f52ae0a4164a7 +fe9290a0b963d8bd83bcaa835e2c404d301ffbeec5009d09838fb6d80a4442cbfce6965d0bcce1e6b6b74985658ccbcc23c2f2c8adf994f82b979da69a561f75a1eb2fe994787be525ca84702d6ce04a73f43cfc67cf3e4fff6a0a00d71d6e576df560d5ac12f623d35eb97abcb82d7c86a56369ae4d73d06aa6063adbd20055dab56e3a61d42ba669d3619985d6a05d2b114eac9962fc91b4b7f4c08b5c23db1cad65bd2e567d215dc3c69c3b57f5f202a2f4a60196f0df13c692f5cff166e3905042826ea0c90dc0ec2f1440ea4e2aababa7529323a48eeb4f65c3e67d2b28b2d1b5bae7660d025e54132089a36a354724c11997e4e5bc8f4ed862388bfc27 +db1c358e54f772fe1f80c75b62107923d0eebc1690996ac04c30345b2db029d147f3f3bf34c65394c77b7d96993ecd4be2f67418692cbef2bc3763056332c26b41173870d075f82ad4d19ae0abb0e73ab7443faf8544c16034d0ebcf8b78583d55cb5104a8cee5fde29c862072fe1f70cb82f4783f2e79cd9cac765b515db9fd5cc01616a3577f01bd773a3a7e240afca31e7178c48084bed8daadb683b52779c0a223e4394b0f3c34c0ef1314f49f26dfb3c12e502322c0fff6bdda19b203e84a6aaf85bbf670f0760e984d0cb49f3b3f02f14c7c91097333a6694a1cdcae52e547c5fce10db3aa3c99f1fc20e17a1fa7aac1535d900cd148c9e01212cfcf57 +dd2b6df629c4e7b5e5cfb8e2cf138996a3265448223f28ba05c4b1a1c657a885287b49e277acf6801dcf49b06b90bfdf4a3ff28bc3b37d74619100bb1baebe8c579e28a15d8be69e2d6bccff4bace445e40b396bf385391f68ada33f31714d439fb1b365aed3eea5aa54bfbdbdfb9e134832c4663424f2f31b08324830a1fb7bf19a882d23fe3fadbf2f4303b5869959ee75af87995dc6796b4b494e5bd579b837cb3542225b4722121c7ae157d567a7d732c586811fefa53c71510db574414ed7cf44e6aabd63ddc8f5121c3cd35fcfaa46e52e8df6fc8c30ce011c5c1d5b0586b1276f05af0fe2fc57633873d9e7b289cdbd40d818eb50f64d4f42fe8a900f +c6e1f0d2688552ddb8067ad2a90491dd0ebbc7d10532329c9fe7d6b1c8c5d5b6892e4a0bb90e96e3e453a698fe3f1f76666aac660308f63ea8b63f2fcaab398fbda8bcbd2d9f6b2d3a3116d0a4854119c7a3f6e0c82e1347a3312f5f94b2f6e7d6f444de4398636fab1bab41299f1a2beb9023eac811121ef73b30e3a2d8ba6e70daab26fdc8e1470dc82e70c0d536fa5db9be08736ba74d44adde9fabe89e73553504af14bcd7e1268496289ea4979bf25696f4db42e24121521210233988064f440b7ce0a20d7e426fb8f66cbd5e79c5797a0f02f6f0671a10691f5c191075de159ec3dde8b2e1df80ac9bfb440a132117d28db0aadfdbfcd5cab9ad5d6837 +e7d58f956bb06c55680ad15023376c9cbce24cf5839222a98954bd86aabb4d83833c9cbf7c76ad8175da9c993aa1bdbef7dd637fcb58c921acae20b047faf3d39c671febbcb9565cc3dc9397e8acf8561fbc7bae87d6c8cfefb3a5c0ad7a2a151963c49713fc402f7f42b8022a262c2b9435b1b135eef05308b1304270bb22683553d68d1fbef447e03e8bef4fe412c01899cc1e9aa92034abb865ab7a62fa00c4c62a0e95ae176c5a00d58a295cde009e363d730b979ee87c8d3bb9539f096ede881d9bddcfb683e0b8e4196a7dfe2fc8fa51ab36e67285138417ce03fafa1eb2b84c2be4b7ede2931e109d1e08c4d7edc9e5de32ebe6aadbf5da83c34dfc17 +dfc8a51712498b7360a48bca412f3755cb4ba96f6a4b9c2bd15d9f072ff824de9b8583d9023686bc1eb7328252b8b7808bede0b8fb93429f9e85268d4d66803429aa5d54a6c9b2c3317b6c97431df0ec6396b33194bb6088f45981b1882c9912917cb18406cf77afd171944773dbdc50985aafebf41a206e0172ecd09f2ab2861309aa5ace55a8782e7af23f043c32b77196571b3879e5caa84ff5f9a51ae57a92c7bc2c369bfce5b54c85989562edaa5bee219e1551852a1b28f6c1644d2ba60979b0a86b9ee749c199827d67a1262953be7d28d80f30ad5cd3b849177be013bbf8fca7669fd736b78cb0e6a9b2688b4a3d171cfc3cf34b3fe5dc28bf8fff9f +c82656e3b1e876d0eb5c73bddab39920ccade4f3a1dd33325252f81ac5b5601b6be8566305981937bf11de730f3be3c86a75d45b9709272e1eb825d74064afe4761c6c09bdb11c33928d7dfbd8947baa4d1f52299a1e2378c95216b643e3a91f4dc41305de02cae7f2a3d3f852411d914fc0e9d38199f4dde17af776cccf118ab72b1dfb95d24ea97039d74e2824307f01ba7770578d0d5b79531a4af2f47fc5ffd3a6d95b21353b0fba2697ce4d0d205aa794deedcad70a2f3550cf46038a58c33c4d21ecf989de7fe7ed6a29724dc7a68c8dee4cb5a5e59ac3f360725f3c9e0122e4a9ab9b5ed86560f49d3cf5b9e7309618e259b1ad6415b5e4c191d40a67 +f4d57fc11aae2ee52876ff8381abfd3c082a490bef5c8ffa61e5ad5c0669f0d67c3f17991296ec863db122f8f43e3ab8b2eb7fcb012d1a4d5e46704986401da4a2aacdafaa94608869efc92cc93a7f02425db6cf1f681b83a385547db8445c881f08faaa6854518a0fa33f5a05d20bcdcdfff6be3fa4c52f22b3678a5f4bada214a80779ab5c4d1e84ce1b05119f7037e5a1bab9f27fc6beca3dc76284fbeb2a978897445e60177646de05210706da1fe8bb4fe448c27834bc515059bf3e8c168bf9578d622cc8a98c2eb44e5547d65a6a4518eaf85a1803f274377c048bb3360710b047e8027e4c696ba8f2dde350717acf39cd34663b4a037125262aa88e8f +d3c653ae6648bf7be03d199f1344e6c2daea446d9d60dea6005863844dfb89ebf9ae53bc28ed1809410e7ac21649c64465e89c36c9bf6256e2fb1fbf837a05051335f4924325b086daba09c6e4f599430a628988543b8f774564845cd28c3a5fbd26bfd71c6dd4a21ff5ff4fc09d0dcb1e18a83c986cecb5dd47c05e103d61bc2db802dfdc6fb378c3a9ed407402b35f576372680311e43786ece8bc5aee7f3df3873c1cd5725b5f2a175c8cfd1f09de6d5e58e176c14c35826cba12ba4776eb9367a59dfb600bc95e9f4b7175cc7c5c71388ff8c7be3735ca98f495c01b02f207ece24cb638a901c839e54c8a83e144eb0f92da983d56dde14fa3afebd5751f +ff31f26b84040b196187fd0d9806a4c1275587e180d8a309524b532b39102477dd177ea69537a6faa93ae3db5e2c0cca0531a048a244d86b43d23c78856f478cceead6fb181afcc5dcc818a490814663c00fda23ed25bddd9ec5fe96cbb84b5a29d451499dff6d2358516acafabb12df212aba5ba63acb185ebf41f754bd7307f19425947b3ff852a31d29df244070ddddccdc7a09ba141e6bcd979fa3aa541eddc00d5e9c031d5ba540d8b532dd2146d30ed8300e8287c893d0defe8c708c55d48c3848e3b35a85a997accd278500f715c19043e2763695556775a318d2f8a14e12f84efc787d562ec468a8147e787ac5b9847a760b332b212a8b1bd6c94c87 +f84ec318b46717c275899d09e30d7b2e116e35b98bb4f536793e0234c00908851f9d819e6a11d35c107179a3be0577d61c10cb687aa6183b6311ff2afc79b037628bcb34f9601b772dcdbcf9492625fb96a5c7b52e2b221de9aaacb8e545aea09d603a6526007efbdb067d1f3d7cc9803fb31fe7e575f23bab1fbe7b841f6c061d10772a3e24d494c92cbf0dd18f199b734e4cd8f8868a825a82472777881f383343c763bffde117cce1dcfe464aa38d391835b96004148ed24d31388440e6d040dd25860164aa83ce1eeb750ed660c1acbb653d399feb386697fb381fdec400c315bcfaf247126317600c6b44909f09df7bca3e73c1b6b15be945b7e4e59037 +cd383feeff27f7504fc224a564a1ab569d1d53805d75e6c94da6f3e789e28895464dca1ca64c0ec1b5d1444190b3ef00e166074cf58510c3da358481d681cf4452ce2c3c75bd86ff677affd92e00778984be33b2354075e617dd9ab5fa3e419dca8a74c139d768e96bc2c3fe628133ef656ab6016e5051db0774b8ae4662e2b44637d9cd34a5962c03e3e433687864b611c76d26b294827ec990faa6673f58eac3b9b7232a981239869feb574558b6348a0669bfe8f457afd4a304a57cec01f3fdb2c818234a03d2f07ca4fed54b3565102842065b18b99ce1cbe21ca8ef273388e9548c06a47158e25930e9c3ce799df9c36af23217ff3cbf7ec52e750bf20f +e5fa8e5041e6c6bf8a7ffec066d5dcaa1a36c4dd451b2d991883517f9cf31b8a5bd5881fd0cf8fe1f514629e0e07abbae8ffd5c7cca052b88dd2bf42d0162f0e3a4f4e707db03f7db77920709550f26155e5480905ef9ff800ad33df348cf887cb98a9e487a3d5be4e24ec905d7cc47c7e16e738dee037757eab95e0923d69e6f603ac920f2f96616ff706613725cea9693ec7f644c62f730f6350d19c2230cbf83fd3132d8c48957a634b84b75fc6d63fb8d67087749fe37d9e01bc5d6a1b9f1ffe9e2c5300e83495315383656fcdbae6cd9a47ab1ceaaf773d0f422c54b7436437e07673f92536c46452fb07ab99b5d9206aecb218dcc316cb1bb0cb56ea5f +d04e876c0178be1335f8a0a2031333f137c9de480239ebc34e6f926c1edacfff0660b95d700e180ff7b7e76175de60c401d7951455f15e141670eecbfb96bcb9f742dc483c84552d498d380d8e23fdf8f4e10fa5cdd145468660ffde58b9c258c6a4f09c50df0d7d91c62c966bf534d1a886986e5d8f9719156e0efd7711d7c6aed5767d8cd1c3e505b44a7f11528186cf2f4b846c1d09bef7bc3a056fb0221e658b9302a3e4639c33c0d266c052aca0f1d68543f7ec8b4891f5f1ff938673c8fd6cc58b615012a9ce2439994e38220823f81edb20558e0a093332060ff9b16b2e879e878a5f1c3f73aa2c100e88ca796e40c8f5a9bce23cfe1985aae3530317 +d05ebf48bd5931615d5874b8a2d50fc310c74518fecdc739f30b8c61af61fa65c01eae9c74ec03db24db27c086023c45fef2d67e0d4f9c1db2a5ef5068a9c7f3e36a1b9eeed3de02298cbe7d128f2585ea8b9228c8d71f52674b12cfc659a08fc7b6a8be1731965771ec294c0409741863f783ce801b6d48603d78677a56abfc153a75ed76dd451c82424148b65bf564ca84306e1e397386a5bf9e2fcac3994c8c9940c60483d4f75ac1ae86c20cdaf8c53f546cee8c8e5d7bf9e30e56c68a95cd6460bc51589b69f713354e6f3947cac447d4f46b34b1cf54c7c5986a6213b86e5b5133c5b782a503c503732f1c90d69834b35e5e62a97f775d137d98e2901f +e5452a2d6e408fa0cb79deceeea4a09396dacbc047999e19187fc0b5a72c7f8a96d02385cbccc6c6cf560c61c051aec97740d05bd55dba66e446e3e6ea51e8478dac6b8f9ace9b16b77278aa88fbe49b528deb639fd25e0865d29f97849209aefcf4b4134f5e3729153afdeb1ff66902d67d8e7e4d9aea23df5367b078073442c578e95e3447832c921948e36d52c749364de636810d07231c97fba970fbafb6de72dc2c31bf7449b571197cd396691640697931a8d30e1612465aa4ee443a211f98963a8f740ef61536e186178b2e25e282025f22ebab87d90b22ca4c81a49631067f8f61351951bea225585b17b22bf6a6cc9259a6fbdfa5f9ab86ce980077 +e801e68a7631af3ceb61a2a298f4adaf9441eb7c27b735b649b50731fd58f8522ccc70fe0d7db6d3bd370b7b73414b04ba1583ac7c97d9a341a5bab31fcb01328187893f63ed109653e7ef3646238776183d3232532ab1e664769cada3f466b550180d2c75bc8e7852bde4ef7a992c025e74ff4770892111b045e61d91e7ba807bf5c5762051b2bc8448c3d14333a4945ec39a18dcbf1a775aab91a4dde4e57bbd39bd1ef9eb9bee219409b9543fbb6e9653e1611e4bbd6ea35bb3a78703ab0299016d03ac038015d0f25d76619198ad31588ce186088454309cdf1ab3ad1dcf3f0623bd22a0902fb93a22981dffe6284fcd4b6f2f0b90e7ecd26f596a7c2c3f +e09b238e898d8111e7dac6aa6905cb8753f728a538202be9dcd36b3f4880b332bb83ee3548997bc8cbaf05ccdacba6841523d73550e060564ed70315ccd38573c86630252f88008e6fe9083e343850778230abbcd503a7149c18374e248009d04db4ac1ac3ccc8a4cf341ae18ab6960c1737a43dd6ec65eba7519fafe93fdcf72b32834d8c513ff4ae639c82b400db0ed7b49372f67d126eafec282d620a38d90e4758cb3d4e6f9dffda9479e0020898ee93dcfb69c62013962f2be19cc82722ae50ba434dbf4e976aba6ae7f8a426fe2ffdf907eb5ddf1e558042f2916e7235a3b9eed4fe7b7f877497d0571f3b61376955f2224a0eeb6c285c3e0c600c86ef +e8ae2371cd729dde28c08f85445f5345bb06b91a500b85f93cb62df15fd5b6f99932e32168071062fcd93855d54c452b77aad409e4b7b05a174110a3caed306d36348ca7833fb2db904132266907e63fe907431072f28819d0ccc986db02cd60ca26c5c003a1f3200915dacd3e7adfd0e066948fb1dc21cf69ac5d3ec0827b4316bb62efd2a0998f69839cab76f665b1c0f9e7f464da2e02f6f624804ca89f184d41f2cccda2dc0b2479ecbdd3a0bc711aec730b16c327acc60fcb2f3b1485921e5f66cc538a01936a3f318f583cc507cb34b28ca8fc2d05670e49ef1799f98f8a51e718e1d57ae02987b6326eab7b7d83e9322de3d2448148811d5f87e5e81f +d42c8e8e3e44ce7769e5ceac525d370b1cf01eb99a08c4fc4764975f756766fa6d4ff2a4b52877f58b2ef8039f8cbc98a32f9e58263167ce3fd31ac59ebac9c955e6b281270b962e294d290beccc77311f1df7543affcaea692fcc22ed9ef163bea5e60586312f4cc1bbfbb25b210f7743b460365a4d0f4953d4cc3bd2d98f090ac958f99a462ea216f2d01635f2e75e7f44149ed00afe092f99d9b2c9ce4dce149ba8a0fd254e279dc100dd8311a4f3051104d426d2c8e9972363de76f3ba81c3c30172cde7510b018437ae24125434e4b36384ecccf93f2693d149bdcd89e7e4fe6a9a0d9347896a01ecb66e72303d86fe9c0b9dd99fe16be2ccb918ece367 +ef15a57cddb67d014e49e22e0aff5e66489d76a79c6c2e1d34cd52ed1cb7296d0fa9f6a35ece25bb4376f1dfdba47d98b186e1237c59e81f41e7c742214d28ec1149b6a95a4aeab2996cb4f8c3cbb29dd8221b28a099d00c62694fb59393e80b823074b9b30ddd978fc8fc81cebaacc448043ba316737cd9c1ae7e6efad094fe97844967f105da8e4f26da49b563a02426bd24d9f91690b3ac9c99f4039bdea38b4ccc29aef56e8bdde39010566fc20085d1b07b645a6d45cf82d169c919cadd91b8034539b2cb4978df814e9d1ee6645172fab59c066e3ee2071aba24ddb138229121babcf02adbfabbecee2d5e2ef81d3dcf019255331dc9b3df1342caaf2f +e7fbb6ee23d18d9dd1aee901470669ce13413c48ffb3dee5baa175bd4581668bcad500f4846acce1bae53b0728530e6660ad1f836ad790bcf71531a84c59fd208a422ba750380e0adffa38a562ef35d3d9fac54a0b2e39198bd54b2353b8469c94a473563f0209db3816260952935d2a7d7a0c492b38542f6c3c09f97240e82cfd666c98ce2a10c9ce644d46dbedc9a29638254dbfadbeb207d61f9f61b5d4242db05e9fffb16a28f75874416e0f61fb70aa45e61d3df934a452a851d4fff3be250a401c38b202baef30eb29a879a67d7e645a155e078a30ee9599f073757dd958d5478f4401fcd05759919ec77e2eab79d195cd7217a3c4267eb9476375d2d7 +c6f391bae2a174b2aed3c0d77e6dfb5b43eafe71b76bab39d635664879be135215f4fdf3f5b337202f14b3e60ae62145a19055c1d918818af78e4c1f9ea5c615106e3648e5dad2d3b271ecd3845d12b72230267d6ebcd105ca53eaf7bd99f6c8d88c7d8ee2367839ca7b64fad716ce8eb9ff6868a16148344fff85d4945bcd9b84225f0c66f4f474cf4c8bebb9c403547e37ad84cf845a18576cd4545994688987877d01acbbda76448322f7a1fe4d6f15bea68117eea2908ba10965ed1fc099a0036086331c9377e6ed077bcc95dfe38b6d3bfdaceb897a6962394d62c8a1b96cda27329d9d04e5cf6170c61ddd482b20466d66f395edebb749e4b01cae409f +ef63370b83dec47239b6485a0bb05eddee4c11fada0ef5111e8c3e77e8ab4bff0064d45ce9f70bddd0f1e37a5d06d7f25d0e4f6fb8ec1cc82dfeb072d063dc0cfbdd7838e839379299655f074fc16c27b3f0a781683b1f0e9f454bebd9fd058cb2082ca8d9382b68ad7a3a165a55c27f9b317f6f8cb122bdee7647dcca15956c0eaad7ca0f6b4d7907ab68fc3361ba498468036ced37f9734226d9fc301f4d5f9f4ed1a97f55a624c69266fb6e40c193d4243a5756cbb4c27f1ea8093956d65d7ef1f2ff0f987472bf7d90f0265555d9232e0c0e1094c6fb57db3ea1c054d6a0b5ff914963807be24585bc9ba3fb5b807332d352193ad4e4a4de1d95e8d1037f +db4501c4664d1ddc8fe16024bdbc4b11c21f80c142a51b161f28fe76df8fbf8a2bff47722e48234591a53a79fa13d9c67d782dfcaf766499bb882e655400a60b28ed492575c8ce7cf4f737d79b40b7e49f1cde317e89b5bf082d501757f437857e47c9461492232b450684fb27866e0ffc22000719e16d4c6b7337d913588a2c191f6c894d8a825a18f9fca77539276d037c4453d1be609a06e7e5be04ca497097e4e87494464386d55cd25aefc45a3afc323e43dd532cd71c93d3480dae13afebdaf2bba0a655ff82e9d3ef7a5a6f839e27f54af2a35044f4950a543254d8da5db5b23a1ad0ca6528d16728cd743b86f39b479702c16bd76b15c1d15c1ba797 +c22ad7dbf8b24e16ab91ad688a8eb95d8b2eb2db8717963661550ea2db6f51a69d3c7345f662003d351e83ae2b1142cfd169ef9127dab80afbcaa92cac2ea17f413b52843f696e12771673bf29977fd578e96316202db2e54437c646799aeda17d5842f003be83f8f4e13b5b3582e713b7700fcc6611772014044ac4c7eee681dbef154f78d59a4584002177993a6c50707b830bbe08f9b31b1a9680134851ac76ce836a82c5c8b2900bbca2b1254d33491e18c0b48266f227cc28979f0e1bef174d0ce83a71be1121e1c024298af346398c2c7b2566c06da1095be1607fc232d2ce22742658a31e4ddce62b36d6e764f221937d8390295bb3834ccc0e5a3917 +ffec79f87052b82cc82e387ac9ddc35a3f36856bae7fa638e1b1b0be539df01ab4532df2e495088c19dc49242179337fd884a3bcf1c4cc0ddaaad139cdea6b679bc0e7298b341e6c045126c2915e58db4ef69e4150c357d271027678c13053ee46994dd0ff152efe028e3a0fe047c62b89bfc025426cab5bfdbe4917d4fa23ea29a88d4cb137f5cda076a7501efdc4f772f813e0681336840d00ad886bec9fb9112645a38513ecbcfec8b2356b5bac684d4704a231c307d3adb97dd2e969b943a701b2a82163b52e00d8c13625db6f7588c9f2ce68b8975460db98e1f06cc6f9bf49f1efe0adc014538c8d3538482c6f6e5c2400576df53be3be7ab8302074e7 +e8df694c91f3a0a2a8afca7d825627ef97085b20b879b1464824d1d9855efc7c83c501da92928133b1f46b77a4ebe10e53aec7b7633ebdbdc69642efe63ef2df2164ea3b62cd2aa9a031e29946b3af1250a97ed30ec28f011b59c75b2e7dd4aad9facb948aee9baa7cf6b1427754d21896a42131c6daba1b330aa9aa8b5de474161b02072a3bebb8821485d397cd1a48c2b503c9ee2e40a7b54b27bd0dc0c888ae91cd38203cd73e1f5aff1f48f469c4ddcb675051937f9dcc3330dececc247da88b489819bc6f3c4cc8045e0947446ce431853bad39434e188a3c00151c148d5caa0510daf2a12329c5e5a5c667e9eb9c7f59f69ca799225f176d469432c687 +c30f2243e2df8d7410bf13affaf4dda7d59fa60b103b264317f694fc722690ab26e0c284218943e56b6c2be078018bd72b560515614ab46d09944736b6643260c733bee7a91a3a1ea64b500c6a6fced7c0a8da93b762b830c9be7da94e3f679dffb7fa00004233ac8cc01893fa9695304fde112098e8193f9f40d20ba57edbe50a9ade2249fa403b3812716dcf9126f2cab53a9823ec9ed1ac745aaa97ef7b0296935185bf1ebfe025535978726db32f1efca55bdb39485f3a7eaadd9cba4cfd2ff1fa579f076978831b3434cd447fbb4a192e2e9bd59cf9c55616f75c489f0e917d770eb4c978aa2f151e1ab7d04579ac29159c5f20f7a8e101d621353013cf +d26738fa5d3c3baa5ff6dcee380f6e2a15a5b1083857d59d4d95fd573af7e8de1c7a9eddbb32a83149afb5b8fe1915f8c2f89de294b07fb9399b4ebd60ee16cb93f88e424a2de8ff5a91bf973a629f3985063b09024ea9db9644e560c82f970115a091e1a11f466fec1e86d2a8bd8f64add9e5391f9684038ee707cd67de3bf172c638ea82d80d2de7f11bd117b679c156f54a691821e432e909351e491924539b356a3cfb279d5d64ee57bed7ba942d4e8bd17cee0767e270f3efa2cd3d9ff5d5fa2faa3ad7e1fb6904a11fb3e91dbf3241d25fde8d6eb0881558f17ef3bd6103c635c797e97e3c56da064348eeda723f88c18177faac934bbb32d69bf933a7 +f7476562137f4dd7928b1b4ff2065b17b658c2d01f181e1887178a9d399b709aae54aac3b820ecc95f48aad5a5edb57a1748076070e2b4a45db7127c627548d72ff18c847b6a98459ae5b7a451105729acc73ed95685e14b90e3d051101d22196d512f1ca29ba9e7f662d665d2fde80c0183ed8f84e3b06fc431eb5bf60a98f8ecc71392a6960587e489ccfdfb0799212cebfd0050381b44544eaa7858443a0e0935cb78885876ac13661169ee62187fff499d9707a0ab408df6b7976dbab6f3023bef0265a5f45642f34c17edd4213a6061a66106ce796b933839af4837726be4ca3a5a5fd512168baa61c31c9a273e3926d573a49337ad14de5f674592af6f +eeac58a0a6f58696505ca7ed7fa0c8cf98492838a87b8677bdfb4fab09e0510312c13887050e659275c02fc655b97fd3af3a44b88b2cb4e417ee418e33b66f992c99a2d3f1f3d4d05c97d95fc983047fc1be4b1971323113af975e077c15704826b8cdd8377fce80c4343a251905d0478f4b9ab6f97b2371f4712406c45f9e95c5cf381da5cc7be34950f46af1a9153a0d6f392f364703f52822262ba04b41fa5fed12b9b55b35d76d5ab9b6d7af8bb2fb8b1a0ee64db8d38a4f3a51e067d01fd066a53c449700df78330f00169750645b97ad7ff00ec2dc26e3d0c0595520b80f86b50d11be704ddf373b7785020532bdc0eeb94dc17b5c1a9f8699b523abbf +c5c0bed5b38c7ba0dcde4360372e5cc7896bef1244b9bf18ac7b0cfb24ab26219beb7f3d78b94dec83af41d35aebd45ed4ecbb5b2ea5dd7643562b3c99a260ebef6cccc2ebb5716b6dea282c6bf9a411916d2e4a458f392ef2f8fc2610dda99bcf50e0baf8796765e9deaf5e0b7d498f81a92aafffa604c693bedbdc83cecd62dd86421f354b7a2134ee7f0fdca86fe755fd97f719b292b0e8b8effba0e4fa0c27be3bed2800b37dbbf5da261252e9d08ea1e3b2a0c35c813dd40c64e44e81e0a05b9f3caca8cd1c150185ba15bf6f41472d877eb27e557838fd819892da0de2b4895974f05d8cf56eccf060babc172c571e0be2a489675be662e11c9f2f4ad7 +c8dec71517d1c4a766a644552cf11b05dd3266661bea5a51d5008eb1b16a271c4b2e182db500f9e81a0b13a6b42e301742e06728d3a77b8f7c27986d0228ea88c1c055f927181b94d0a13af112fcb71a26d6436f6bcf09bbed0f9273e5e8b27732673a5b061b28241a6a674d5884649c0b99420eec66515a4a1db798c269a9cb96b1ae902f671108dd75260550852e1127cd75f45222e91aa75b54fe918259c1aff6c9634c5b838722728dc63a39a921d322075f1411d2af15fee0e809650b4342c5a16549d367662d3d6803ff313a37adc28baacd7eb67506ec29cbdc6d1c785d6b54748f5b22c8f3a6939bd1d04628321b6c7d250cfb52c19207202af09ea7 +d4ddcc968a7d41102529fa802cafcb7198e9cb7831321495c914bec3c2cd5d539f8a218785d08696c527fec25a50ef0b20474a1d1e4198ba81a663b57b9b5cc2171777ac5d74f33532567a18d96b3b907ccca78a324d1ab89a36c1a7861c1a1978a01dd933f117d5f2b04993c2f968e0448c3a4b535284fb6669afafdcf3e5a23b32287b729534a1be1ff89d1143da487c90628d9535c97cf7afa6f12d6fba3f612918427e7b7bae39f79e559fb868296f39921b821221dbee731f4d5385049b6d635373293a0dd55d155504021125a889b755ea9609c304494dbf678958b42e9994d7d0016ba5210a033fac11f75aad1757ac08ad012e19524c5458f0a51357 +e73db5f82930f5a52eed969d01e420d3e92cc913275ce092bac7a48f64b22653c0e71ae33d45740017fb958b7e0bb62855a77c35b9440fc50a5b8d48c766129321f17a192232507116287319cde6e5023b48d211db43dc543e062f5a18fb0b31e9112d09c577f00294cc0a4f1947fc2c9a574ec20fb084e42f92ec860e67a9afa530b0abbc889fb237ee3667c3848dba08dfe5a66f5a9495fbef1bc03d6a3cd0dec3726d942107a3eea6eb6471a1ddc3cfc0be0d7496fe9f3db741f7be06d43451a4979e31a4bb64cf16a802f9c9c9b5eabf72b32fe1242ce0e2b548e679dbdab0807754fd2c918c2496d9542414a9490d728922f1760a204fbdccc849c146e7 +f6500a0eccdc58d310ceb37c1a77883af759d4ee49094aeb4d4b63f8d1a55cf89d059b86fcacff0726892a41ce4f431a742316e69f65488ad6d577115a05cc38856a7509a14844995a4b9a332b38c55cb5db34554a4d044bb328c36ea47c18ff6258d99de123f82a52bf739f9c1dafb5124dcbd3f83f725ab8095823afa581ea3a2333de572599eebabef9f4fa9a88a1a0ddfa0cff1b29c628b9a1676d8136e047a05571df6d53b94fb0d1e82b0308eda4d2a7a9d8b0a85c9e798d8f08ec5430a42736abcdb9438429303f47dd153613b2ff973843dabcfbdba88f32393925f598d010b3ecb8934a18855e467fd229d890c8e836433ba4ae0a94575ded3414ef +c298e4ebc30632743f0e06a127b31852c1a71e1d8403098784d2414b39a10227116198c1f0a1decabe4bba2a6508822e213c23eaf8b0f02f89a0daa2107b5f672206acbb51391e591429f1e7e1fdc5b6f35e843663a459b835c311491c864946e1db36565920ba79b0859f09be39bd6dcc5b863fadd7c85d5f8a0968fa0db700ac7dd8ee4b989d2feeb1566aab0d938b76643806ebd8ca3406aa7ae4864625bde65a42e11b3806627ec2e50b1ae04ea5ef4f6cee67204d7aec7042df08e165eb4e7ee1ad66e44c30091bf43d78f9fca1c74538eceda12d6ebabccdae3f4bcf4962dc2cee379f8dad5207198a727e161a23c07bfb8d55391a5e6e3fd2f4086ec7 +ce4c3e4cab5fc7ebd5811b6c403f71d601fb3b1c2a62e329d4bd8106e8ae91fd046de0f8a29552712e1613643dba23a0eaa27ebb0e9fbacaaab882f7af681250a2a378a2b82d840812b290b111d40b5a53928113fb69cf77712165339179b7bda47eef80b463eeb25053467ada02088280da1b06140c8789e4150edd25fb55d5daaf8f03e7f4a0a7053decc3986a36cb4f2a6ac794144715672471bfbd947326908599ad871d66c03d26f3ca5212230c3f63d3167214995ce7599fa95d94b64f6a7e904b40fe283e5afc4d5611d0a7d09afe20e1f01481644b841eff6b74975f4f1ce18b196350a86568eaec958920e30e624730c90a4ac4edd313d575d367a7 +edf5a321f1588a8fb499b7c4c32d1860e43ef2e2ec4a81cc625a5b6ca04a3f85a8a2aea9e581580125ec6814f3311e4f15bf3081fc7eed62b6794af946d02dcea51265bbbf9f30e9837c855b6ea8cf4c69a6200024faddde5fbd681f0be9f5c1748d7dd9a174956bcf3fbf822779a7e3ebed5112e603308a8bccdbfcbe28db3f54ea56f6455b1e33d0ffdb0496b811d1a2ef6fceb2e69574b41f097311e6e4ff7d4c563d9b77997683bdd5d01ff76c38f7abf1df57a2ab3fbded9bef9d6028be5e19d92db06f0282bfa7162a8986f96ffd2ff85159042392d7423a02990695b27bbd6e2deebe6618051210fd52da1ec74c53153e80c3e216e35a9dd82a4f509f +d6950f7da8573ef042f7d84a29112b0110b10729642ee5a16f2088d55bf61dd4259c69d49a3d14441c90b036a07447f72b2988dc0ab1e6139720fc3151f3fd89547cec7f6c70873a48e5eb87649d983f47ee9c80adf4c525d7591c380f095902cdc57a44d1a87ec140c3926d3877270c795e4b6204a5307648e98ee7dc77d10c89e91f5f1738cdd58ea2b0d28369a4a7a2381d3a6d876e42ffd67a4e0838be0d18936bd17b71b860421c6989b7636bc7492c6240f06627eeb861c1c8b734338606c03cf49ecabe4c0e21735877a7fbff6f0659404acdb1bc9262b211538c56014755fdb30a3781e6bf975807523d45dc254a41219b72e6692cea955998bfebef +d7b34a74caeba4eb5248a3d0fd9f0f1c871864a0036d3d559d8815b759858f96de38d2b9d212c914dd4b2963d796e0adf3a5c9f80875cb0cdd9ae1101c6be90dd6bc228f15713746752119014c304d61579a8f6ad5b151a9a24f93da51cb4e08e53c3629fb8b6453665c840a7416467690b3647aa953d36953caa74e63cd8799c0358abf81428966d633f4950ba85697ad0685a662f77b767f5ed8d8951255da72712a772b4daecc3a2244c801a5a16701dc762ce727f5b301dd66097c5eedefdb6ce51a1adc2ac242e2e4c5b3607bb1a4de2e64185891fae6b9023df2f7b0b859965264b2378c4d6e725e2ce476c891b0680c82bfd1a9f9da1901677539edb7 +ddd6a05b23ed89992b63d725c8dd4203e6603c49b424a926cdde77687c9353b57bd99d4084761ec64dcb08ca786bcdac8d4318da3d6660446e5d20af8dd7486b3ac78bd3ef520acb82866f1d5422d7ce872ea25d5e66bbecccae0685f870b01c36f273ef17e42bf3968e12d345a3ba6f7dfeee13eb4f86493719339a5b5ae0cf82c3bc223880318deee5862845c17516aebd610975796b44f3221b1ce7602a204bf9d65d69e730d00e266fc72afb7ff9a1049cb90a986692b5574e040fe5997c0a751c8cacc4ec59f5413d2c2eb9873057bf84e31b16016ff039bd80ce4dd03e1fbe0b6031e2821f9870adaf7cfc6fcb62e40633d3f608035e9389c3c92905af +f7bd59b87027ca1ec6d75926a3cdcf86829c4834451f4f583ef3bcfd1fa9fadde547de6133a8fad8f943c62a5e4fbf657d85ff615d69a1c1989dc5fd31f3b540441a8eea79cb19d56d28cc9f6db1c71c90a62338987268e52d1b1437010fc90326208e061be98d28727bba8d7d39510d0c2861d28dcb1d0c5ca01b4117cb9d411a94570eb3e09d473680c3d9ab2fab57de2ad5c7e7ea5fe157d9b9e67c27a2d84f1b56db3c8a534e4a9eabf99cb35dc0349f6839b5dc15e3b6b7522d717755b8607ea3d7ccd33b663d67565972c990928f4b857043798853ba5e7472f5ae9fe58b711306320c5a93f50ed243a6ca52f518bea17d6d6399c845fa40e1011f88e7 +cea4ac6e6a2c055418ed256687bc10254190ff090e201be40c6a18b177faa53adbdb81cb3e0e56fe4637587452a042369ad97c5ebd352498567c99f42db5f28e3b521aa68030a82a10d0eaf36830dde8001bf9d72a475366c18a35d23b2b6202572c6da82de802324d2d6f5cf379c00b46331587597fccc2e8a90d13e0b8317053e4c37cc825e0cd14a5d6b2b0a0a72143a60b3c44f9d7a096cabec53c5fcdb5838c9585e0ddce293e131b7309876da071c4371072828132b32dc8b79515803efe4e54cc811412488913bb12e167740e3547d6d5bca38159fc1f268800fd41be67e41491f1f8fabaa0b613919788e1d68a9125fb2c2b7e7323d9c82b05b6eb7f +ef1eae861666c7e109f9490626346395495131de24e8862b8cd53caaa514db7e324d67c263df4d94c9fddf86e704252935f6c1e7e8862233b3d19001439551d46aaa7fb5d31ddd454e613610c8d4359b319c477e650344487e9ea398157d9dd8fca372e3f070935100dce612e60bb1c7607f02bacaf1ea8d20209ddbde4486841ba42f8c03844adcac8da45b3942339fab659bf3f0e8e5f80bd9c48185b5eefa2edcf4ae31fda70e8a40be1823f5b098e61398af678a7aff4e589d6bfe09bf096912b22b23e3f5f9e985f23e71ce65d9d0471bcdcd1a9759ca033aacf8a9b5c88db0021b92e3c21541de0cb8c2f06a4a07ac5668a1c9294aacb07bd2c4e5c5bf +ffcc0ef32c4bf7decf781e47f7c7078777ea757e0c35d55d8c65ecf04e05632184429b0cb876e16f2441341dc8fd38d9761129c3ab8a4ef6e75351d6659dab97588fa043baeb0b60ff3f3c7e40f3dc8350281bac4318fae0b218d2007ff5af20fbecd19abb8375a2bd1ffe66d7ab3d5428f35af6604dbf3ccd58115ca88642843162e49f17340833bbd1e390cf2462e7c8f77e4f9c3330a8504b9d8d8591a3db1e78415e0a25334e516d7cdd3c5768c1de19020db93df2b58bbf8abc705684bb0da74338dbccdbf7de148e54b06b04fa65902e877589bd597c570d3a80a89634ec45b42244966a455357aea50cde6491a08ad0d603558c0d9656229040d865e7 +e37755372850c410be3cb4dc249c6f76717be57bfe767af0e1e5903e4f78579edb31a2592ce2d597277ada25baf2045b4fd0c9313292b0b578f85ba91f62f0b02d259ba9fd292989eeb643ed465f1e7b15aeaa6079b1aa703d0668f462700900521ef6349e967ce979301ddad7e6e8e1294c9e82687affae4b415d474833d06f5ddd0d720e263300f8bf0966dea944bea072d08e5552ffd786a1a0f668b7ffbb26140d080277b212b47f93dbddba83551f004883acfb4c125caea0eb84f3e982cc35272bf4db3f5c66a1fa629bf492a128a3abd5235cd3e313bbc0dd8114b97b42ac6816cfab162d3c30ff112838f46f2fcfaf4ce7f1d234519fc42ec4d2c757 +e0dc2fa6ed9458f389f3f7e84deb87cf98fe6614b83af48a3bd1430d4f2b154ef878289a2430cea4bdef4617b5b76e469ae34d706730e4451ba963f92a1dd11674c7ba1c37307a0eee16619719f1f360cfde2ada1251c7e5533898b890db2a8a08a3a73da062f714d12c757100dc11a74099ad353cacdf614111995dca1f93fd9bd8e80a4b3f7e8316856a5e02a299c55be13618ccd5583da60f3d06b54f5fa67b19bf67038df8f210a4c86e1a4008367564ac648ab299b409435de0c56e765e55d006bb404198347daaa47f197851667844a9e9b73d51ad13d53ed6086978f1a20cad94e9ef9bc68f052d45c83b354e5ed2314f42a23b2d7723999cbbc795af +fff20b20b758b9eb44a0ad1613f65c13eea23a4e27b29a9a6c5d8cf4e81a4fbb03c7571878155cf6f6009e3d719eaf611d95c7cc0f9de19e15b04e625802a1af402cc0a9aa06a0db58f08f17922e2640d3426b5f56f6423ebfc208662a24d9c5e4ffd76113fcddcc790e2b840557a7c17e75702daaa829a016b01f0c63b90612986fc78907fa345b3fbf6ffee42a53c6bfaaee76a6428e68890ad6c52b342eb0796537829cc121eb971a9c686ebb74f16624cf0a20b8da84be0399b8801a82e4b2f8176842a4830ecdedad6e4c7acae7423f70374fa47d5232d858589754c768f0d44752021854d7825b273d4e4cae50c9a7178c53848be7f30740217c62772f +debc8a04cbe3e987c01aa9dabbf39484022557fc173704f274cde850ea9606cdc23410ad8f5148f5fc57f00ae78b063520264496d7ce4d78f70e32036f55956aaac8b9cd5f0ce209378b78700f62567ace333905e3894216cc43dfed750b5534d9e301d95746c87cc2db2e197c8ca96fefd41f38dca0786ac717c559f6d090147754914dbc1e937e66ab8068967aa9057b7124e280421ee89158b746d66f8badad9140f2d23471e2946baebdce4ca2dc9ebbfbd1d2f73c9333c14eb592210f99b34f99cb8af9f57a3fa35be047276bc03ac3efba2e9179d3876c30a1354561d6d95a2ee53ab9c42e48c518d40b261044a4280434591a5535bd6c6af56b31307f +edfd3c1badc6e819af5d18bbdfbe9bb8f2d5ccbf4e979b48e49bf01971d185e78bbc0350007f35fe839ffecf2c95ddabff7c76084e88d3a9267a715ce9a02ff9ee267f3a087211e4c50617044089523c3d048d979b92b521f398b6194a9b3019fb51980251a978c7cc167f0ce9d7dae3bca194377c54c0690a1c419dd3798346911d252e2490ea303516740827d496dd473452c875296d58db238344e274d974f86ef7685c1a7bb8d8d5464eea86e24975ff2913f45b7750a0ba40ac435464c7bf7ddd77562ab5bd656da410401e21aa365474fe2e3b2c491635ee8fb21d6c56f983b5bde241d98b7d2dc083657b0d5cdc5938530ea97218cc8a65b111a60c97 +c6572af9ca5f4dcc1f44667d0b74e375cfaf5b2463c5cd3f265f7c997a3ae446100bf66ac0372e76ee9fe58f9ccf471316b81a090e303b367b1c2561b6e80971cf4912a0262a0d50fc2d98d6d3e6a910ef364d7c940e29fb5bde410a80ec0145f2e5926745e763a51c539c26f391c50e456660649a31d7263875cde2b80b21208ee2fee429c0e08e90b2f4148ca002dd352d612866fdf4933bd3a9c9947889a8f1c83a5e2773f5871f8a4b65deeb32b786d18d08175a94cd95879847d9501b4239910006b269d54b0dfd7f1a78c9de8d991e272b0e9227ba34c326c9c47f745ddf19d4588a7c70e6336ca16e318e97273328fd577322d74eda420199e09109f7 +ded9dec450ffc63bb8fa51272eeb751d7e731a49e8aaa355598546727e9295a76b9f090b22e44221add6512103a442dc38f21131d00e1761f350008f1a155a3c531e01ac848f38ff9b0b076a553464752050147bb8e4d82f85b4f4c0feba1db824d982e91c699edb5bfe9dd2f0532948ec78481c4c7faff8c878e0507395158893de4b36781596c7d3f4426abf0d25d7b860f5454993256d71006a172fa338d443049ea96e63743b06f78f99ede339a8a79def0e7e84d1ba6aa9a5af7052f9b54b13a2dfa7671a0246d7b39fcc4644299cb936b197a5d2f05be9ed9c641578d55a997b809ea2ca3618bf0beb591ea33b1cc2e329a058c9d3eb56aa992b34bbe7 +e1e1581da5f2856504ae3bb92808854d135dcc72c031693aec619773713ef03be7e1a985da72cac766fbbadd5a3504078c517c062953e346e75ac097b6372c4fed5925e02053990cd7d3fc36a71f99768a65570035f510bf46be0e39816a2e5b08863ad5ddbd1219bda2bdc0e93a8e83e0f9ca36ca68a36d61879846ca62e9cad117a23d9984195fbf993bc1a549bf0d6beb3ebc5138725275513d6dd1b6436e1e3b743fd8acef907c3375de13ca0b0b1ee7d2325c984c2f5ac15c4ab10a74b26303b67d32505bcaf4a3675593042de224d78f4302ddf86fc483a991eb125788d1fa716fb41921d9b0f2ac16ca987b30ddf90e3a928a3c42ec66d1838794d0ff +c5d55c334058142bcbeb5bf1ffcfb4f480684a8492b9a05af10d5beed07b9a7603f46fa045458c0d80ca3ad28495099e0191d38f560ba66e0373819d5cf0c47c8b134623812d76e9e460c9d9bbd16dbaf4d8a6144bf9cdc07061dbcdbc2194142baacd918918edd1eeb57bd9e6be160ebfe8e2b2144053dde00449976651ceec782b7486498b937f9ed4898dd7dcf48cfa6dc027da25a4bc624a8576e2084f336eb804348745158b7d00be79de03d99ef3b54dde9de874e471ec9356075f9c97ea579231cdd05ffc8d3a958d863cd7086575827b7eb467119509a2780cfc63422033eecd880c8cf552f1066c56bfd999cafa2f2b8f6033dc83cc7146afe001df +d55794b50971949dda9808c09e332eb20037f4f76a4c16c484e6a8a4aa78792b6b0d12e017fce060bc0717d947011e8d6acbdcca10a4ef6b928748da4d7ce6b27b587fcbbf547228486f071421bde8ba5de382791ead50c9f96bfc1fe61ecc568049c511450e2fac42a1f2bdc10c800839fe2658461522766fb2d81f570e3c7fc1a19ea17eed39ba8d64d7b51effc27039932b9d4b14da23a6782dde6297d75dbb87106c064ec52d837cbb40c759aba7839582961ab641e058aaa170d0b171abeb860710b59cedfda02409830cf946797eb4823dd315a4a432c87c4a2fb698564dd0eb695091975491851e4e07273b01258409b53c50459b06fcb1d102abe04f +c2abebc2015c2ed5013ba10292fab20555fbb09705f3617ddd0809d8a35a5b563b6fa28aa330a7a01e4e74e07c000c9fd61becd1d9ad691667ee1afcd1c5eef0521b0864ae3257b5c84a847d7774e74e4178dd69a7588d5af6f1404346c5cbef1ca149f14302651651b66655869fdd76d0f357784eb32025cb1fa46c19e88a12c6b92339d3ee8f4457e6de5b1aea52893b0cd3732126239861564f180c563e66580431755dee6fa9a651abf27a2c089c8da0b55427880b834d1137e7640813b69b955a651a8217a458562c8ff6e2b0e80d5ae0c64fba456190e0f63582d1b649e8882b131263ef354f7ed71d22a0809983813729ba8663600b2a860fe403f8cf +f7e38c195bd5214a40b128f03c5abfb876358c5cfb1bfd74ca5215423ac16b58dce983c934eede7e5a6bb6d8af1252428647371f5cfc717b6a279c91f1772e969862b7b108d910cd9fb487d835c700f63e27e6649bf169ed0c8d4b8a14089e9bf535af6d60c9e6034907de241579b401ffc9b61e1d46e900f00f5ddd695f74a3a29e98a3f2d8a00145fbd2f9044331397a3ba51b26efc448269a67d751b4c1cb1a3d2f515c2724a0e7af44985b2653c29bda0a4daad3c61d71d25a8f9a94ac375fb67233be58bf10aa2abbe2bb1a799d5943d7370b04cf2c9f1bd4b2f11f579bc7d2a21ee0fe76d74611a0e9172222aad252d2e76bee8492d5b5c0ff5a61d04f +e2d4847d1d8610dd2eeaa4f9b5b77dc3908918fbe7166815bcfa884a5e2462ad088ee4c48fda59964ee6c3540505b600be5e093aab58a4e5f06443b7c10df860c92c1dd180aa073837db4b862b62a249d466006573767cc9bbf28b69d1e568ec94930693d3288035761b6ab7810fcc49b4afbe7fa7b5574a208c74be2313bc1ff95b64e3ef179ac71fb5278d91a0b40209e3a7177d31c35aee3381dcb6f1e4e6b56e9810d8693b160d591a836a0bc72dcb040948e71b726f0b64ca013e38af3d43519873fe9e7c83d8cb444b30c448cbe3ac0c61802df145f65c22385ebc2f0502db34654957c443bce4d7f073f0e8329602093b3f9252a989474dd98ad340af +d38a61a6525084b6b858a3d47da1bb636daadaaadbbb04812e912d0b4a2ab55ea9e240f2d6b9322af6f5a7ca7dee6cd98e679fe7609028e7715904da804efdccdc847d9eabb2a093d4e8057840c8a9735d930bcf26e5887bb9e5d3acd25a4aea5f2f7eaec8dbf878aa0b08ad9509ae0fb1cf517c31545798d1874e72ba78cdb610312d02c42c5018d993879da25f7bdf3b5c91bb3d9b6b2457b115ff17e988ba86ba2ae00a690dd4f720d7285a0158ee060ceec4ecaed9967f6daa413109ba0af681c9ca2d38cdb12700dd7cdc650e8b32aec1a67f721930192cc9f31b09f78b0566912a559ea06def3ef8405cf656570502c365b14aa7861adb9fee00d19617 +c2f24d5c553c9338e5d7602df1fa48060a2795d9e1cfe3d1eb3f3d39b21d057d19bcb268eeb9e3e9d6446d88b51dbcd71c0d7650c77fc053e9a84e97931896f163b0d38584d1c4694842a080ab3285d165c6eabf1974e9dc0d2d9c6d6aba57f17c472fa55eee4fcb42ebb35b83aaa71c0130ccc38b3c15ab356b24d554fb39a3dd9ccd3350218a94aa6a888de64b4fb688cf63db7545e6b6be8bc92acef356820444b5dd3bb4660eac6a7f6d84181b079c6b181e0d27b46956f0379c39f0b82ed334285a388b74666cdfc3de2fb998e4c264606d7ab495ce91492b58f65f59164312f96dfda9e58b63f8cdc1cea5fe990e786eeb0ce244b28a34e00b85c0f1df +e9eef1e27546d08aa37f388a96ee4dca8981d0aefa385ceade89a31b8112bbe1fe316e9108153384deaa2f220b5d4be12ca71c3effd1ea3df0e284d8005bb1999c3f988129926cf6b19d4dc7c6f5078c10814048c82d81d17570d62de3f80492757f7206570069683cabd16fd7a7be4f4cf8370a6bc20a6f058cc57d3330b539846e72048cfd627afaca57bc60f3c85b7bb025ffb24459a199d7a763cc578602abfb3497c6506ee8045c089630acd2c408bcec5130f0e88c84d4f240f7b041f3fc99c19f5f2e224647013f114be77fb715bf842bdcb695c71f95d6b0db388488e0d56d619b92681289a20f89d887303061053df832f5096554cc3938dc1cfae7 +c235247dcfba90cf85e0b62fd2e6701f6d3f8c31cb7855d7f415014aeb299fa7b961ec7576164307dab15642bbab1e22c75a5d8bf7d906f6d6ba4fa7a7ab1daa8997d006fd17a0325e205cad99a4ddf3588e18a6a2bdfabcb4584c448c08e42e8f444b6cf3636b7f2ea659663f8c1a059759fc98fc6e495837408a2154186618498935c7d8f0ddf65bd86a56d6ee491637c11d120334fe5100bfe2e03a050ec55e24c29fccd8609a34411d9cf16aa3727dcc71850fe578c334de43bad7015b53f177f66fff9c512f6a37495e1ff513651c773ed891f2fc8c9cee9c3b8b39f4efa5984ca5add5e7352840017668cf9404d5cfc201baaeb474f5c1674df03684e7 +fdb09382c46fd793062cd33426344be4df371dc7361209bba66ff07d9f7d649786f4530b6c460e83234fae057ef62f50ab1ed4c077a23d7290fa43e8dabbd3aec3902626eb56b9bfe4f5c6e8ddb1e7e1f8aa1feaaed61b9cd12e56a3da61c6323dd149d1716b6b478eb0782de86c9d5df5d8785c2b9d593bbeefa3f45c48f46e553289ac21c37c3ec0a3f533d47f89ef5b88ad72fcc48160911004e7bc50dafc85ee0508ee19873a6696353f646c2fd8e0febae7f1473a65b0dc23d9dc4342ffd9c1e195ffab599ca2f70a2d115790c2b01161da6f9de96741db9eeb75e1668592de68df750f4af8759297ad2cd107125103b6223d3e07b1cadc13070496877f +fb56c7de7b2cc5d32f2e1a81abadf7b52337442f784a2694ec0761cec813d6697a3a83a3f05f33faba785a87e1e10227e344f4623c2dbbbf5a5be49f6c258198068639ef2d8aa4d3d2d1993cb7af918bf83d89cfa95dc0c9f8263afdb1dd7991b96bbc5fc3135e48d14f11399ebd5bcade25ba121e607d894969dcc2880111811dd06e72edc5daef5b0408d6abbe4214b29d06f97dc6088e4f5a8237b4ce336c4270cbff25f5a5819514f6ab8d9b02dae78e7b475cd234088b19761bdcbf2885ad5903f1485106263c5eec23f054acf927cbf09297b659b87a1d7efe5bf3e66ed69cb80608c99cf5f760cdfc2def1533935e279673c72b28655632b1b25b197f +dfaf989d008306acb18ec3d233252f86763a32030cfcc31b37b88ac146449825a7078c7b3dd3e353a71e3ce9e822b2e37375067c3ee24364e679881608c7974aadd243d44962c0272607327edbe77c49f7d868a73b174ee027a780b86c80cd7373d976a3094c9faad380fd23e6568c639314650fbbb97ebf301709867fd8181fdf4b06c455b3475389106cad896cc3b44d5d10c7727e5506076a537bccdb25e7ad6b12238bc0f26af23a370a415c00417f13de3f7ed6d5ff74c22bac992360d2b63242bfa8273b9cb3960497a6a7e031f34b4695c6cb2c8f4b2a7343cc83a9032b653fef68b51f98474e40914142bf4d8cb5228a44966c3799ab8b45e8d7c1af +ff551b2cb16ec36be477a8e2a8c612642298774c0f76524f0cfa0e82380f952668b6615fcf8236ead08bf64f8d5a954f65685f653c15d339419c65f4c967cd59499b3a9a15169b3b92d491fb1cbe0a88b9694f3f9db50a9a6684fbd3262e8b18f88b15ccae3885cf4313f166e077beb3f5c9d27f6d2a05aa3d3632f770e7c48c0321d804fcbaeb86f36298dad77dfc21c968a9dd8cf2d69cfa0adec5e54f37100edca9958f1e2411dcdce6595e644f1f651279b7b750c320bea9f39f2b5eb866f27e5928bc9207d6adc79ebac70b4ba54c851fbb39ab17e6bf764bb20882ff167afdb8b2109da3f606036bbf119f0c97d7d1ffd90d09eb5ccd9dee3f31785e4f +f283d5f83a1fc38fb5bbc0831c3714a6499b61204caac44d0b1c886059ed1002fafe487fe5b9e8a4c7bbd193cd476b77464478308be17e4d94d9d039c702db1af36132d3ef0643fe460068e4036c7d7af385f2d3554ab64fc184c3ff407c7fe8f9fb989cf82fbe82bc837e9dd10e4870ecef09ccddce911a56db9eabf71f0fbd2ff0854c1e434bc1a8eacb14a85903218b921b87e71b7b62f1001f63e03abfcdde8c4da5d23d3e8d468ddda8fc4dc6199f8bb4e7c4b2eb1ec0a9fb423c43e35d7fde675bf18aae6e3afa63639b47253afed49d28f095cd0183a77158b0e67aa2d149a7f27aef4e8437ef8db91f3ac97dead07c987d8c5b7e011a5c8fb35707b7 +e44fc4c941a4afacbf68479ce33c7e8e40b05ddf4d88eab13e52c6207a8ad3a178c78bf4f092015875baed4288b95922dcd237a937b55e53a754d8cdf86a0fdde6828ffa11171d78aa1597570a77d2147651a013a45c10b5fb02611ccbe74b334d556797b61502f9e35872e95428cbb70d85de5a6b894fb17dfdbf7ca22a2ecf546562ebd5df1e06b5e13b159f6e2b2cd7c7924a54b0cdb9864c03732f0726aee7d427b2596f1a70998323835d7ea75431609bf077db3150a27ae271ebc514e6d525ac6262814840993053387e5b407f94bfcc05f9dd52e9fb401c9ce9a0b742aac222e6074a294e935feb10e2533ee0d0d00165f3bbb382c88c4cce3e72da8f +df69785974bee056e1fd9df2bf18ef5965ca309fe0407695d457ce8b7dd90938e5e709bfc643b0e9d748adcda5e1ba8ad21b6a9578d01aed17968481fcbd050486d3c5c4185efc21cc564e75e32b6b385e77ce05ee2fca97e7d71e4fd6eca2ac4f241845bcf1142091f354efc59b0f094fa0ca2220dba130f56c2ba02bf812e864387fa893d34ebf4fa45e928fe1af12a27082b0a27d3c63ef526307644b811d91871188c5e5b7bb03201bae92f51aa7009db696e69a42c5d079910c0500d6a50f100e5ae2caf94a6f6fcba366bfdf2093d3014e2b5d792c610f24c930636aea8c04d7cd287f440472f1d7544c5ccb341fa2911c86eda3d429af0679df859e1f +d048e4806bee0fd89ad03633452f4816ef17976fd241d9ed2ade959f4ab14a8f41fb95502d6e6a588e50687f14c7f0b4fcd08322763ebdd6db6e0c992ef1d9815421d1107bbd86b4f506b946fe6df529b60d6d05819220a839928d87e5127bc6fad726456fe054b63444e9083b6d41de9406f0a68be9b1140c0ef4d15dfebb6083a4d8c28c1ced209bd95e37b62d77d29776327220e2b19b54b157bdf316713a7848506d170c0721f63df108fbb7d04bb494b4dc911a4b57ce319d4dfee2f31b46d79579075607d62ac443d3e3ed5eaec5adb6cf219af56f0a67919dbc2cb3d6fa042b9692857f7d8340a1b536a143954d996b5745ead6604e713ec8a7f1e5c7 +fcf845c7311a679816a286316d1ae808bdfce5b310bded7df717019a905a1ebbc8d919ac4ba82cb39ba6f6e418029b6a4a3a128b38b93d29df9618a97a9d7b603bac4fbfb2c4006212eba9ce8ffc00ee4d0a5b84bb281b701bb957f49b3d850bd900fe7186734e93ca57b3a9ac753ec204c01b1204bf4fa5b1538b7a44a3113cea482d947e0a1657bdb4245664e638144be7af5341c1a5ec3ea0ffe7097f250eff3ba6e921680654375a6d453fbfd0d6f6573b3036e22080be5baebef0c537c6f66df1937d0827ba40f378ec46fa6d9adcbf59b202e0eb8d43018154f29b986be4384eee5f07490b162eb868df6979f722bdb8ee63a0c5845e0febee8d54159f +ec37e6220b8448c53c60d72ddeb077cba842d12d367f7e262a85019c629de47ad867f863ed7e5422ee07309c44b2c0d5560cb25640a1988ecdd10682c250027e88c4babe668bc2ca162e265c846f0a96a3e17fac7cc001f4b1cc3b1405cacdb6087854c2e573eea813c035fc406ba6ccbdccda8db0ccee98cb7916b30beb48a14360a12ec3f13eb53bfcc521cbf93543bc6d95e3872f18ad1e7388b04b79bb5c0838e079ddf18be6060a1fab7c562b8bcb7cf4e243d6be9f087d241d997f54db3edba3022726d9fd66a66d5c7ef58d943c59b364bcf4b69464619180c965c2bdcdf55882976405324efeb3f73ea646f19af89227a42b559cbc307f935199271f +f1da267f4b2b1b5ddcd252a01da5042e7e64f90fb6277f9050dc099c4585a40ad13396423687d526bc3160a1f206328f2e39bce2324d289d7165a8c480c01359d9c893e10304cc92ee8a81e8440744d53d41bd65ee1de03a9f4cc5adc4b25d68aeae53cd8ddfed808f72469d045a742f80aece2827a35d0b5f210357e644539febbe4d765bfafcd10a2a27fc23bfb7148ffa88e7e9fe80c58af82631c89f766b92ca0aab208c139f0ccbee23196f035d09511ef0a593061cbd9cae37f2e71f07a6fed17455cde50c4d728e6597dff5a8cc9cb4ba324a91d8e6acbd7de455519bcbb20fb766728848cdd0194cbb6ca6d12fba859bce460be84d45bd4b1913cbe7 +c736fe31b5eda75b9419f28cc53ebcb32011182fed8c9d45ee6920c838068005b8e1c4c5b67b81f7a04b32903c15d2735c648f41431ece7dbefc7806d44671b9883495faf09e1cc4500918e51ffde8230d2c1de7429294b09759869a76985ffc32df4ad212c3fb0c8c8a335ced0f1cfea9926d494d1dd5fd2d43bac1b55396f22d582c6827bd8058996f2b2d44ecfd13d8eb03913f6a156550a521c85f94ec6a7bd9efab8b3141aa8ade3bd641aaf8d81dede2a08617a34932de03829fdf838da322f47a995dd9827dcf4671bf3009a378658403adcfddddd0dabc9ea06c152ec9502ac4686b62a49c5a0b09c44b3bb79f77e6fe447891f723de553f6b80895f +f5f49e6b1dee9ad2a68f6426ec9b32f60038df493e7fbd3095a6ca36789d0a8643809a777a7ec69d78e30777aa769aa2c5576dceb4ac09e078424b057520157b6975323438f93146f347abe1f2edddfe9b391b302e9d9c7c0425cc4f93b49b7b781a88acd68f4498c573d777f03e30b14ca4a82569097b572c1ef0e48c8000d3aa421347e72e4f6884b332fd5148a2560bb2c09686e92b9cf31899f72a3aa2fb919622564c7ebbaf5009fdf1cce03e0ff74ce1436a78967738174af18b31cf5fb316a8405a66c9f19888aedebb779adb987892493eb0445e141facc97e68193da5f8aa574017b0e2770c274d716198d3908b1071a8304a20cc52f579bbf6ac2f +ff980d25449ab5c269cba27f0b5b5e08ae8b864be6c2ba44313ee2ddfd2fbe6fe812f067f1e2b4dec7ebcab18595e659804d7469f0867d1be8d14b296b17a9d7cb625ed53a16253d78b37bc1a30fbef68459e1c1ae2108b8a400ab279ce196c5e0d0ad17d67d703bc9f368053cec3ea1c658c7b16019650124bb9186f1c5c2d26b8b135d6b5c58eb23d009a22d09180ec23762518dfab08f9865c69da921a3b1d0404eaac300a036cd778485173b06aad7add80e319f00693463741342b8662046da69fb1eb770dbb5db8aa9b82729e4b67929c08c7ec7829c983b8acbdcdf7b87ee994c514ebfee1db86ed05a40a2410a775679807fec94e3978be7f72b7dd7 +d6afd00637c31859f598ca9ee4cd8aefabe324a921dc7f7e6e5d5eabb190732242ffb7db4b0e17f0abc276710dec42e78eaeea89955ba7846c48765c173ead90878435ae1a7471b86b143b641021bfd86004d394db418ba3274d94ded48390acc7b807329220f1ee2343a365222ecc54dee511885eacbab01efa18bee698d6b920c5e0f90d0806ddfe9683b736680601a88602d54077ee06226d7dc0bde1bf6629e127b6aac3de1eec528b6701705ddcae5e527cf2899b48eb7d75edb0ae33451731cd8ba9c2ff0dde9a7648896715e32fe50b309d8e4752e1ba2011fb89a3ef8eb592d3db41fff71e9c4175d5c5918734f61c43e442cf7444bcdd78ee3a230f +d260749985b7af0a2498026d4b3f15ac2482573f7bbb9dc17c8ff79a9e57b96ee067c590f024d2effb9cf212c97ef89033de7678e6d86bfbd0818b9057aae784046c058acb7b282e5757526b709133f236e2a9ce06acd647847c8688aebf8d12157eff1dee5bf50172c061bc32676c79bf42dfc0d936493a8ca4022c1205f5c880fe93e89512d57d11721e93df68a444558cc368310f1a4f8d71b83fe08d4f1ed1724404459b3c83cd63c668d7c689c2b790e3499d9867a7ccab64db18de6e973ca553632d87e118da7eb33ac2f3e9901acfd4b80696cba9cf8eb6b73b7e6c286633ff8ca34c4c0889cfb7ff856a1adc14f086e4094cfea697f3f23e01c7279f +dad45604691901f8921c71003349ac26db04e94054738bd4bbc2c72458336e0593892f344e717b252f79352fc79e705f352b46d4382a68b2fe3db720179f95407b629c150fdc36581aa53df50cd4c743941b4fe03e5b1d76a535f7e3111fa478da0f2e04831343c1e3258ec1c8f9f0ded0edc4e34cda37fa71f97a79879948e7d80e1bff8fe93324baaaa0c1e916c2f112e7ab830694e9c4a1b0fb1f151f7800dae0ddf929486b9f81f994221fb029fd0967e4b78c00a4c7bddc66f32af388f9e07d16a2febb9dee60f401ace58e24a86f2c29e95a4fef3963791f7ae252bf75d84fb766c1a29ed8ac9300aeae3e4a7da53d2d0b4c2f952eae0a2ff962857e77 +cafcc91075498e4f1af783c8a2d194ae102aa9bdbe44d8da1c3285be5ffeeaf6d0789671e00019a609dc113cc1d813bcd22abb98ebb018b1ef1f6fb51506e03f3e05131c53ef7a4311d2ceb378f972ce91e008be55968a4a416bf23adb182da14c52210b8b0f9334d15ef272a600703a2bbe1b18f3ec3900b15a153712360138def8131d3084aa96d7d84e24a32ba07ebcbf56a325170c8bad3985a3701a1f4e129c95e7b3a2277f1e05b136e51421af668a828e0fbded9ca7cab99cd35ca0152f81d152feca76eeb8b9774fe711ed66e62ce0dbd37b96c388da1f2cf1512694880a3762ac52439b59123ba90414253ee93c1dfd4973024e2c5af620455af9f7 +d840e390b6bd0448c24a0727842d631e63ddedb03018554cad85be4e420a891693691de75c3cc47209b24a887e38eda2fdd9150c5b308a14840d8669d3020170311f52d38cb44630e7648f158c46006326f656be84bc4205b1c044a788c62835bd1e5ed28aca6c2cb7473ad50a6d30576549050105d853e8e9f8841ee1d77e003c71cd77cc4fc547c15b83a70332fe250b5f14577cf900495f02b2d5a1c76f449df56ce6cba5794d347baa8a4c5948562233b056c367ef030f2a86df3e69f506650f668f1bbacc593acc6b380c510af85ce2baadb0c9ee37878f6fb8f7bef3bd27690ac16b202df9977b1e4a8fb5bada686789fe57ee741eee634e0128cd5d8f +d0405659e441d5eb88f9066b7dd058e2ab726f91e19052d033b0f7327dfba10a200bfbcd0700308fda98d81acb827f8100cfd702efd7d7975b784de6cc7cec8cf33a4889027ef779ef6570f8158ca433db36da282217ea159279d1aa5cf55d65d62d93ac4610126a988267c91d4bd64001e51785e2dc4528a6e72623d1b14bf207a74ef45aa7203d24e67abd3c66aa8cbf02f6689647faf3e4fa4f9ae66e74c561438ef7168ea4cc99f2af648b5cb233655a0365e61022c68fbeaa51a46a303ff9b3cb1efad3f76f028c371c08ccb740ac2ca5d0ddc692f508ea382e6e57d22a0d87d95b58373b7f1bf82197d8097e1c0579304ef72ab0e046b3ac7b7cd0e6ff +c4fae7bafa8f4f7ffcf0721966283085764e3e16b42ac515ccd68fa16c09a828baaebde251980d2825f183bb862648b3304160c1861e17fe3ce95268e4feeec7391186498f04922b87d55e54294f303b1cdd2b0d414d2cc7ddc74b667e6e2936b302e7ef2eabaea8696328458645f1f0ee46dd72205eef841e4b66be72ba86acd2a9b988a735ec905a3e4739420a88462ead85313afb6eb45152491370e2839ba3471fb37a42291dfee6a70183916993420858f920c2fefb2bf74337a89a910a6a316402255b6986a212e241a3e3349324103c5e5390558ead37a0a1b992a530e0af42f1db86f1cbdaf17bccd9c9ed04c6bf7028bba20520e52be08c2fb148ef +d84264bf85207baf89497a3bedd304b615245b61db12e4d0597820ec2b1bb50b901118f8273d40dd91e8653b34a8c35993cd9c38d459be217491f9079d6df24116f30827b5f9a55c7b1b2ec0f81e3a37d33e64a65701111f30a0d3f613669d3acf39929094cd905de5da8a99795e26ad6820abb562981b049950f3b1da1ab0d8ac8430c8e5c708671d4f532aca804046caa4a5f78b0b26712a3683bceb78bf6d62b097b896133681743e5cef7b613f84d22427c3ce9258199000ae58ca64c6e132facf8e5188348c21b8456bdf53cf82880adf7e266853bcee29b635058c1b8759ed50434c6def7b7814c0954432d11c17381650ba160b303423f87d23c6efaf +e36b8203f19a07b88b6f7a4cb781e88f1c91adf9a7668835e2cfad727662dcaf127afdf4370bc79e34971842e254542af7eeeff0092f0ed0b52221278c2f626c8fba3bdacaf359464be1c4edade3ac73353d49f024ba559481920cb51ba2a86e4b083a3e69210697335c279b493c31fa545f99875d884f44a6dec96e0900c0a864b30eeb39d2433a30dc022f40c94cf2f3aa5538c2f8f9c06013cd5889bebed0f3d496044758e725df11a81bfe1612194bf89819a86b17283c6f23813b1058b66874c775fe1736e90dad5f3421bd36e8e580c878b8e10a1a768e553bae7466e229799f5733c33c872ad40920d037bacf6ca3b341f90c32d4d18f7a1410036d9f +d87eff9873eea56333b373166465fd117c27009922c5d517ccc608aee846013d55a3c7c6cbf8a4898ea510af77cbc18f4a3dcb39b7d97004e759fbc8ad67ebc4744f7f8bb8cb81191670af3b65c5c5210ec346f9ee4b30938e7ec34e8de26eefbe83c1cc16c9454807fb38af4783510c8ba983421ca854a28b1e728320dbf936f8079feebc38606f843a7862ca2af429daad152da40f08b09c1109fb0556e230939296ac3c7390b8b82cf8cfe4ded8d16ea25e22dda538297f2c6f16d677ddb9b7fe73016a3fa4f3d4ba10bb10cffcbb94fcb6b3fe77455c8e9191cabff7fbbee540602b76deeca821ee079a5cccf1a0691b1201f6ef2d9d0006624d8713b4e7 +fcb05b327dec201259fbcdd5a8359d3a593978c0cf8f2825f333e300802cb303c9a018c8e1cbe8831441f624f831478fb39994a4f40f8effaac9861a1cd5e22ac7df88761e3fc88041b853eea99667ac28aa9387a06d2fc1581ac6de2882dcac292ca8944c41a2f4402fc33f43e4be57799f18e9d4b83ec0d28522f9417b9add8ec95db9a1ee1faf1f2b794044b5f9e18aa0a6bcd51cc97eac38d3a1bb4c16a1eddd6afef6ceb1e1dba56c068613f62e97aa738ac6bca615453aa12c75b5866b2b1d1c937c326c356886c36de52bc023b4ef22a67d46729db3625c00b33ed17123ef73088ec85877e06d7743279cda4c7d6e3c131d89a0ed8f62183c3084b0ef +cbff20beef087ea68bbeea24a2937b7bbf9c1554f309690136723ed1328a99217e43621d8ed6715b4242e588baa4e6b212075820b0ef56d9b4580974e565b8f623eb5300edccd04f4819044b10b8ef6f80b3fb480eb7276bbf38b1d36fb3ce21c70fe16f225cf39617e8b71ff7787dbceb6166706908323fc8630fc540181ac73aba8f396fdd6971c95f72cb89fc0501b26b462fd30be3a46c7528e2d570b540d52ac5963ac59c5ede5c6932a4931f6e2b5d58789784c25812cb96095be2a8dfd25ecc6afe8c0d4ad79d60aa59dc1b48b9fcb9f33283aa95ee45ed2bfcd7b2f0792f4566e35ee4972cf96d7b2fa15f7c5bf682c3e4c4c5e36d1a3470471d25d7 +d5231287643c106092e675ace61a0d8324ad4d612a701744af6a0cc49c41036e0cf929b05e88e05d4fc9d8cb74d0516a29e6048ae62e66d874c8913c10606a962c0a9b35ec09f5f1c4e887e4749c54faaea50e15a73c394710740f41ebaec9f538c68f804838d68f11f208f246dcacbb83118aaec86c4b78a5650fa40d016caab8597cb6a0912aaf0fab2e629272fb2b5eac3f3849d2551d0ebde1c271588a71a46c8bf270b42c1d926a1b8cb42403b952ab882d6d84e607be6ea7c55d2dfa8e60cee4bb13d9668e2101e02b99107ee50b6d24730f0ff496f26a932d2bdf463dfc446e64e8dd3ec0b4c13b301cfaf6a1ddeb3d6cbec96d291ed0e8c2ea150427 +cd0f71c557ceebfbf4ecea6608dbb5744d9704da003e251d790c7643f71f957c29deef6560fee63030638b80d6858ed16c43af8b36114a1680994dd522f7d84dba506f0ea5a43e038073694c0e430a77a61f880f3c1e2068172ceb385ad6c7a05523d7aa916ec618b1b8d27c7b26405d13735afcab12982f9c66ccdfd532d4cec3c81859056f735efd0442e1681efbefc5b2a9ff3a7be2a39f67abf1406ddc5c01fdec57696b3fa29a8d474a76bc7635e6942a31e675f8e95ff2da2639e39130a513234edd5d300c2abeff7adccd2bbf904c42e98109e9f99cc4719f4aa7f341cb2c8ac48e74cec2ddf6ecadd82647877a9fac4ad9d8be2eb71d809d78144a37 +f89744bac38055c9750e9150b78c8bb4df10022078f84e57949ca7a98508762352f72ecb81ac30d75cb090f9b438f2ae51223ebdfba2e774062584cda7e7317a91a93e075bd55fd4452c8adb70c217d93edc8b35737b50e76df5257a5298f2772bd9d37e24c0b408e4abc6f7a5bf11e0b80e3ef9f51815316ad8f54fdd573ed6fe640f342a023aa1439513e14fcff368172e3a3ea97150b32e19df728bfd701815d9007cd25e0cf3c80659eb593e23dff81cdfc03cac40d456498edc42578be24a2c1b7cfbb2166141e575979545a9f6f01c96ba19910e6480f9582afa9a89dabbe453c4661d7c1cbc8aeb351d1322fcbb44942c9de75bc4c5a44ee7be7385df +f23aa2ebf75deacb010955fbb4fe18c4527d1e76c27e9ce089e6d8fa0956eab5ed5e8f6605edfe5bf6f7605a4f07aadf61ac8182ac8ae8b201e2b124894d1dfe02cd0a749ee5e3cebfa0f4c91edc617ede88547d484345616d96b95d858d33632a127da1b318b0c8c60314b40c5764a7bedd3f35b0d5841a9c4a2d3ef25f62aece6628541e42ac7f325aa5855fdfeb06f6148437e3b75d0f6f11e45fd12cb44e473f1bed012864df311fa5732036190d8d8b12cedae2063578c1c5e32e61f90af1bcfe153f08e2b4cf9538f307a10e42353013ac400392630d821150be77822f649fabe878a8bfc73a1dc9499378cb8889de5e938bb3247d6ad1b1a3f151ea67 +ecccc7319f45475726a30ec06dc19c1e6c77fcf6afe7fbd5c579c21209405192f6845990f2c66f1782d820a3c722cde2549f2badc5477aa7e72f8325aa3d48d0788e78023baf7b9a8603d623fe699f3a227c0b44384fe2b6cec0e5e6965ed1a81b34ce8ccfcd21ed1d58d628c9048df84cc5f7543d415749adb30c63753b39cb379a793c2a89d60d2531f1a389a231859a15df354d390abec066608342956f07c71b6bc69f4e86b66c4066562b00da4b7ae0cc1af55e849a9557400c6f56c880198035c9cfc3911f29ee5786febe960d6253ca0de81e5b75aab4897d056fcc3ed95d476c4601a5726912b8dd6e3101eb6f87d3f7b566cde9bd13c99d50992b27 +d632ccf10a3b757ce23089376ed63ba20c4af7ca9df339871d8e75dd571e34fc08d9573cc531ba232c17709a9cd007711c70b69c1de70909990157a317f42bbfe221b70e1ef02f554d51f5dad4b82fc00242b36275d0ed2bb25fc1b9cb053f6f57bac21212cfe6668fbf7627fc4525e572e0087850190fdcf54dfb231383beb45fc2c54c4b34a5d6c9a86d0e7f3cea0aa387d4359da6adf5652fae36fa38f5d4b797ccba65b7d6f4011f79fb93d83b754e87fe4c94146810eda31146191d58c21081211f41d964f844564e93838c0e6219949abb7b4c793ba1ac365c48ec03c110174438d8825c93d7311c29fc2ba1b69ae5d9ab22f5c360776c6fee9175b27f +c496131345212125a1f1288f551bce4a6e329f273d0d544db108156e2fbfbb60192987fcc209b4a1d609c7b742659bfca6a9d0b755682690cad94cbb69a7c493e96d1a5d3dbb6f498501b2e02272522be37241df714996f40ffc3fb6744a0e4ee73d60def2d1c5f400eadeb18ea1471bb309b51f1573ef6a8252c957d8f27d53ed6ba883d916507ceac1be0074b9106a70b3f88f9b96358f332c583910f4dd33d1ca60843c5b395ecb56586007454e177b8b92e3d98f7a038048571ba3f984a1789ba216ca4a307d0ed421ef61aa785a3c742c9baeab14bc35f2e81c94948cf7b1171ef8f8724f64db4c9f645ecd09242c0c0b7d5ee0e541a9e48a862574e21f +d47d7f7949befcbd2f4e58380fb1fb2ebe905655d36831291c48228a357dcc11ea58313deecfd8180ffa8e9182baa5b763d6c9d70dcadd5ba631e93695daaeee2e38f34ca0145d8deb9153c0d312f482421fcb71a28d4ff7d358c551b151adee7b913e4446323b273bfecef076d7f4846937627fb23663ddd795684e2570c9c7559ed8e8bb5ccdb3a661807940390143bbac0cdcd2a809ec8b1747df98eea40b3accb6d96ca3adb5495a4b9ba66cbd603bc2caa2d4ebf4f4531e7071efff37213f2594f2ea178318bdcf21ae1aaa2690ed51a318ab0a1becc2c44c26683695a7d41f15cccf5dceb869a350ebf3022877e89c646966daad5e177acabf21d2e5af +f574d7fc6628fcd62052994186e28314fe7fcbeb5457c67ff74d234672960e10a6a14bb91c5e9dee55c0af7d59e06806eed79851ccf7b09daab07bf92e735f4c7bb1584ac109982851c1484993698f8d4ee3f590b942af8c1b7d7dd2b658a138f192c0bdc11726cc38da9cae086e12bcd59a0c7b8b47f6f976efb683a5009548fee22ee321c72291cc27888e9e7b922d083dad31f8561186f1c00a5bc127be3189ead69451506d100733fc06d96aaf3c6ec5e038aa3e87cd513e71f05e5a7f5e63491326619c2adf8b6db8f701487491abcbddb82159c6c21d57a7c45b40982b899494e33b701286ae8b0d4c8478caa2766b681493d4eb28bed7499c618dc50f +f632502d1fc44879f4eba134cb8f16f84d704fc27f192987d6891ea6e303225f0978eb3c37067ea28630f64b4291ec218eb49582462f05b60b31be7f89954d6ffa9b299b7f36f8bb56082fca36385dc982d525a745f35507e3cca8cd8f4345adb4753e517ab8c3bad99cad76915ac8a445ed93a0fd103d28501eb58894d4af44961ee00348547129d2ffdc62f1e3732f38cdcc7a571a571954da9bc0c583310ca7d9bb760dcaf5e73d0d45b1e0e431be13a4eb97dc4d3b0b9e0b36d7bf1cb8bfe830426bda4c056a038f9d26d4dc8f2a578d23d8903b2b6cc84cfb0ed50918876929687a6844359765b5b6c6d947858f28f519873002d3cd06e2b6949d57e7af +cf7f2405854567e6506b38420b40afd2f3f0cb6a5ad05c809cfdd38f80cf34b7c7ef9e2e04575deb1f42d6b41078784ec33a759f798351c6d4576874724daa56994d838abc2a69e50f2d49d6fb8825b699ad250b0557d6f5afbae2ab24184ee8edb6af0595d9b7dd51dde7ac16357c14a615cbc37b5eb77c3ecaac28ededcaa66969b067972f5de47fd0f8c6ff13cfeeb2a454f9f03c482ef2755c2d71d663c773e4c063f0999f2a4f1c7b879a38868bb801ae0e6518878c29cac2284b675ed93c6fbf9c33870ddada34014fb21e4f033f7edc06dc8a94148ec14da2aae76a44df346ec3ae1c0ca171efff7ce4a61f225ee1e7d70da6028959aecaf250c4f007 +f710146d81376bc2227c21141d65d9b8af3d704d0038c735dacfd7e57b25af095d94ccbb8663f038cefb0e49fc97966baf78d721bafa827d8a6d2724358a1aee0de8edcc53462dba49adbc303e735e99dda7a7eaf124e92e236e8c9712958d070d4243df87abffb0f39b609084d3cda19b9889a18e2505d62a17b7f9f1f6e8271b5ae5970782c76b661dde7d1fd2ad957e14aff875eca0103633e7399e8f74fd0202c36260e88095219c14fe7fd56e11060b8ff23ef61fbcebc4075f9546def772321e23b25c9864808c0a6a1a0500292bd3c44e3bdfc7f5dacc176a8c779a8e80c3b1cd2a5b58fcbe89a29cdebd0c8d531acd5de764338eb1cf110bc1992927 +d586be9c490fec62eeb64ea44a765020c1ff2748dd15f968760b88101f999abebdf2cfa9bb5ca69477f35ad85cc72f7fb5a22eabea1d8a23c5ef36d3e23eaff8eae793e3402764c9a04dea813b72064f56dbfdf25fdef2c8f21acb484b8011ce1df87f3932a878358e10b387f614c67c006f275b2a14690c20031641ce827626e8fd396358525afd5e695042d2aff72268709255f049e8c666a55f6f8c3479ad44f56503ad95c6367c4687070328adf24d91b0ff4cc44cee6197245be5ece3f30d6185c209f2673f4dc49956867169fff9aa0581bf4d87aa1d5825528a3642f51ec691888a29e471088f9dabd2fc652b393fb262d7194e066d4fb7455e24de97 +e911e449875a614931b8efa20059c2a41903e2904d851a0eef1ded1ab6dec3b8e0021608ba807cd6d51e672b4ef09a3c830bdd708e1e742a643e30b4d76e9e64b19f479cbabd86dbcf97d554a1e3e1d4d1bf569b045b5d7609163a3d6d12235e89bebb777ed682a79fcf3744f718d4012385c0a46c0c1a9eab7024a39b53c195942ac96f4624ff736542e4d49c843e8add8003578fea2574c88427a26706039519379237388a91039c82f6ed2e9e2bdf36083135b35a4f906c8c09f3f01e1a7302ce689b2767eef6b303d44ceca5ef8e8704855ec2e35b1a1f35fa13a70c9447c20b9a6aab6d8defa0b81ba5e3787696425564d6eaedb502c99690834705aa57 +e1bcd8e88adef5224b455b784249f9081bca39cdeefe3311142ed2ffe6e65753a0a40bfde3d724035e8e1659478ea84cee398bf86e73be7267b4d429c7696d921f89573eeffde664176fe90bc7f7bebbce78ec0a3e7cb2d6cfc67a225f9ed6845e6bf85919d64132b080c3e3695872403d38eabbf6f421de2320b10f279f1e48aeeaf4a86b2c4b951561763dbf79c9bf50bec1e30b21db157e0fdc0adbb3921f155bbfb6ee1cc69afa159ca7a63b7e0937975f0b92a84531b69daf205b07dd2ae2e2419924837c5f54ed291f402ce522c1719705c99ba50295e3b44dcc488ffce12f5f4d2439b0b8b925b0e6ee924d63ed243df62b03d44619b46f9f0b3e36bf +ddad0ebf57a30439586e109286a9bc92bb1b66ff9a0017197c80be65a064257ec34fb1644822ab657b4dca210a0c9eb2112ed1f9bfd287edb1b1fc7050614726365af79227f46316c32ace3265129b24aa06181aa3b9e488d9953c7c2477d12ca8813c191c41fbad534fbd03310235eae02f78f67ed72b3b90bc12c39a64fde8dbe04c7db065026aec4a45f2327587ed3e5b73a2923d60f607af429fd856c9e122a8dbe0d8e54481d4a576c73d7b1df6c8c552ee40774fa7b301179f479faa433ca2089fdab3543fabf37d4645cebca609560b0a1c53f2f12d6a6e9d19fb269abfb5bd6fa113b1786f527207389e5bdadd16a0ff7eccb00c710ef640c6b1ff7f +fe7c0e30ba7693815f4f31181b008f92d1789500231e52989b06f7d7b3081832605648504d1a2b5d3266dc394f4cac4e464fcb9c8bbd852d8abf12628b1000545e3aa77391ef0556c8329cd09c3eabbc444e210c85a6a0b3199a8de874a6bae7304d7be8ca581454eeeecb6ebf3900e29fc0f4531587cd35fc7dd07d820c2c746f4c1f3793316b92943957659efcc63b83583ca2ff498dc76370351bc1ed57b8c11b243cdb9db8fcbc419a119d7190a2511cf38efe1047a55ca1e0ee994d8026bc72c6dd087671a2d4d35251a1c8074a68d0fcba63fd5910b27e6f4e5124697972c985b0444e4cc553a93c508c55a9c98e774d93b764b21f905c99ba9994a0f7 +fef78a91135c64887993ee3defd622a7dae4da162c8e6c57e155fa9001d12219a8fd6f2b0991945addbce83f2c628531b6927874a351caafb6f1b5f564454a058eb3144bf65d4036e9fd7d7d00f4328ea23c4546c7ef48709b9aed19782ccdc3fe5e6d9f6730b488152fb4d94316ca4e69bd9834c4227792d7893ee8db9737b78bf94c7d3bfeb603a1f91778e2d0ae63b37005dc8416c1ae22818f9c0cad8e65c21ec873da3c8412b4fce5b2f8305672f337373a5432f9b2ac1d5d48e1807ea4b68b9cf24e2c0dd7754eb11dd1d7ab8fecf09ee1f14937b4e103d5b902432f061828146da8431721068d6c264beec32ce7fdaf033939a4612c205cabed7d6f67 +d44d4d82eede16d06705285a72bd55bc54c57093d3bded279a04aab7c4a112d5bc6cee9b1faaa1fec8e1cb44f11bda69dc032351545947905a0b0172033dba743d185e55e4154f038d9e176bfeca0ae647ee9e2dade90137cbfeecebafc3d96dee50b37f02d3a5db13d266d061c88700d735b45c79e45c49004f1e7bec189f96e053e989f46544623258ecb063b4b0651ff0457d5733b340744f8c34eb5fdd084e4290fc9d860bbe2bd4cfb64c1c290ac12cd7d3afc6d43874afb24c446c05fc449258e47d9ef7116222c3db2b0ac0cfdbf6271a53fda9a6e767a0a0536cfcb435fe81d959626a1c385665b3bce34e6a41da8f7a90fb01192afbfbc9a6d4c397 +fd785e43726097daef5f9c7bf9aed0c4a67291e30847e32cbfbe64d194c69d2940c62f43ddbae3b6bb5f1972ac624330712a44d7a246b813b7cc55b40e14e8c1ad8416ec915e56091ab4ac971db79be021f8243ea6cb7d94a5d69a4881be72b829a662a98524e7d33e9c61f89b1fdc01562f499ed1fdeb70a03978ea7e0db630fd654f91fe9f0830c35e7d3a00757fa8148c3094be35d3b85fcd53c806c4acac4422a7e8341db677998e39f8206dbd7d94f064c722c9ea91dd1c26f8703304455a3dd842cfca815ac94730f9d3733e878be1fb1a73e3a988cfacbd4d23e33823480410e06ef7346ecea19da24ba13f7ae6e39eb5c94baa7ea22b4885b90e0637 +ff5e42abb025bc8b602464d52b82738f83888c1578b227bcb0b9e193b7c986e7bbd49ff00a9f9e8a3c0204729be0bc9ccf292ea6b2f193bbfd46c8c970e7a2aee05ee70bc437b435a8894211a217f50f60e70b0cf4af2bdbaec85561b67fd3d04e08463925aa0d7a2e5dbc2142181d3867aea9be3397c17d2714ac4f7c25bd4b9e69328876784ffcc9acef1b129439d0cc34ac6f58f13d30fdb4ecff8cd2eba559e1669cea001d1154a2cc2a200340b0cf432339c3485feb6cb52c9015f7a217ae93d88de839526b7aa51045a16d2eeda18183ceeb78e6e3fd8a8cda314498acd07c0fc4d05a7bad34db65098188bf173020b67c514f4fc2340caaa0a6fbd55f +d8ab0190834771c38790216085ee998784d652127993f4ae239aefd02837b939f9d2581cec968f340368b391da20e4f767d6ce5ed19c70f9e38d62a986bfdb79407ad5101c641b152a3751e26be1f21df0d5807dd5ffb87dae5c9812e717b1a106dcb6c58c873d73e29f2860e010b467be4286edd76a215187182099fb33866528b87765b322c753f786fee7050d88c7eef2c70d1a9d751e3fc155724cc089ad974a80c3389dc5c0351535c8aaa48e55815f8e8ae40ba1e89dbd69c8cbb450373cad551d1768de3bdea93c47b29ed9dc9e4b1bb0e7b7b8e7ade8e234aa94b53e111dd3143987415e3b96ec8c0d512429b11222bd180066250b1eb6371d625a47 +f0ef4da6f7d8e62e343302fa12d6ff4af95fb996119d1f85d9ec1011af6fed65d21b8df432dc193249f5bac70c12538c284fccb204292499ceeb9f0042f652e0df852e09ed5bba8fc96885dd94221bc89a0cb2d9d9b174f5190c3b72573cdb648aa2ec8ddf97915a4b30a40a1dbca56367067456217259ae43efe59ddf4c19fa7805b230da3580a385874df2aaed1c749760f491c6a0dd9be9bd17f0dfbba883839a683fe424392eeea92300ac444004f01a44a16b662de1cada640f74acd8d78601a14dd362af72d3d96d2f6a9c70242fe0f21433e7eb7268f6361949d2548b9c775b8ec6c4e1c55c0941bc97a36d185e80cabd0dda3831baf3a62dee43d017 +f203e355008df61ad688da1a00bff7125a9bc85d2ad46ce179357dc1c5b4a057ab42bba02d477e32db99742ec726ba2be48d6f15934309d1044f8798afbbee34822941478abab4cf790333824989d2e0f439873d526c09d62c1d5f4d86ec4e9d9a766da34af758064c2deb4fdbcf9e93e6e32811bb6466bc67dfb9c52a280fd9492bd3c671ef11174408c90ec912e772c6387a0280183b247ac69045a8726b3cae2d8c91f1de33793263d43cc2eeac590ced842bb4e68c89827e90eacba1cae357d1ede418d6924f9a2f496d79f1dc64632ad5a4a04b5832dbb07a7964b7bfac4de1e0187f5a91d0194c1b80054d2c86bcbb80f9290c96c223b0a2730caa785f +e14761b96b7c88cb1a5727f3472eda56b1f6cfa8de25b3c59ee11b2dafea2735db2dd8bd4d05d68d30c3e473de09b35975aeaf05d13efc8d08117e67c7e518d6a7947db5740ceef7321e79be90e2242516bd5632e1cf5f4718424618ec1feeacdb958680e4fc8678c011b491d5ee576273cadac67743d723bafd05ae30ad9cb2a52692e49dd6197c4045f6f02e0d118a929ae20c55ffcdf3b4eebda1268379ba98b16743b38ca4982371d26b41bfe59933818823f2d00e1df2132936c5166adc298954c49eaeb0f4dd27deb2b6fe9e5e64b4d0990f24ac156d6f4efbd287a6e62326335dafe5ab3a1e2ae31aa9728099b40542eac3a4cb55457d60d98e0330ff +e12bddaf12016507f7e606acb3bef61dab0935a7154c7e27f27cbe7835643c0fa80939c8fe51fe787777876e4aaeb6e8aa734c019e2c2df84fb3882227f110fd37f1d5031b5065315835efae51998b4322a88a655256253d82c5ee798d50b4d5241235e931ef3936ac01a203b122c56a78fd5794ec82b5a9e5ab4c197ffabbaf75bdcb03a036aa2589067be81ca72b884faf26eb5b8f2a90aae6d2c5a7cab56aeafc0c9ab3782dfe894ff1e8d13e861a7d95afa8d244f6599b368ffddb1626073f49169f1d5208d456cf867fd1803bc0720924dc270cea027835dbada0940b0ac71a8333387e8817e23a125bf467fc8f706fcd2db9f0947b449e180a05ef9a97 +f85a633a7205ec3ec3432412bef4161fd45bbe28263540bfb40a1a9238537cd9686e8993f0362436e5c7ead422c7ca2f545f14a4534fda8e1ad026f23e595f09093ce68301d9761ed04c29cac326b7b23266eed790589b430a92cd656e50b334c9ae1643eedbc5bdae621e60e09ba1e6355e5e7389a7348f2e146f48086105e33cbc0e0d951e088565f6caca63835716443ef122cebf4948ccf64f4def1609a7b9ab9127280d7615b99a64fd48fa7ceb4852f51835a2374615a0fae9da428361b54542d83224ad7fc2a1ecea602b835f2c1276a39eb6c0f6f0469c7e9e44c36c151f02c6b2e7290ef2a65ee87a29f6e67b55dde1881072b6d7e155922c71db17 +d67a3aec5b91e21c9186a59267d26cf0490c9bb08826080d41764f26674f9fd87a10aa1e027b40398f9c291ab21cfb6768fc81ca20888fe9db447c03c5a84bd16b78e800c99def24b8411b4febbc097f1dc6b5b1ff6c262d9888f0ff96e2061a3fa369edc698c63b8eb08b82ff186b43e4b15397dc0c2c2a57357bd1354e3f47421b2dd8d962c271704299aa314e47fe7b2e1123ceae125715799544362a8e923fa7a1e765ff89badbc1967e0841719dae351ceb2a8bf09524a68de90ab8009eeeea2a400942734cf1bf7677ac3c7233d16b53d58d5091395d52d987f1a01c7f9465a1cc5af34d6f960de2870b43613edad77400c17ddd0cbfbf6297931284b7 +c003139d50c7e76343df34c40ac48e32ec2cfff15ea0ce68e2a082639ec9ec5f305a5a3dad3327b9db25bac221645328c7b617bbf1970e92401f253e2a39f0a782e696259d22f9095dd2f8d5845d70da1561145127adc5bd74b41148f3cf6aa76db5332b66299227e5bbd24158f972a2391dbb51cc7501ecd327a3aa5722d94b7a86448fe3a5f2c80ce972d9c199dbbb7edf6dade276508ff4bd2783e6f0ed255489ca5f692646247fba7829599e8145334e5052f639428893bfb1b0a70769a6a20ab4d472f6ef38d444f503841ba4164a0b8b8735708b615d48b78a50a3d859a66c0c500079d74b1547f5c822c59ff521f230d2716fcae001ce3f54c11248ff +c45a6ac223aaa834fc914bd58affb4e6fc37c27a34aedd51aaa0ba299e19b7a28444d4334ce18cedc4697fc1fd586873b524a996ed42810ebc727c2a2079d17b5db3aed5656687ce32b0d4e8ceb7acbe50f04cb27c0e1008fc6d0546b9e2609dd3975c68c759d5308b325b9245013b610d74d29c19d9c04597ab049b0a8bd915e968fdd718432bdb83cf7a671b6e772abc5404329d5f7597dc10968855e729fb3efba65a6ef73f6478d7e18b9bcb9aa9e3c7833b2f3641ac4f238bd88ab7074d52dbc0302203703db8b881c4bcf6ace3732495ae03b15350b5e1d4ef0b1daa4155664108a761d7a042cba9b5483b48f77d69d8f702ad6cc6a99597bc75798a6f +f6cc52dc29e07362d8fedb399dae39bafc340a2b950032e65af96d272728931196bb55a1894347cfe1ea2bc7c2c4d43140e4f06c06bf26275dfd85388bfb4abb993c8cb5c2326270b3a2bd7bdfff91edd0771d577ea05097cf5056a772bc976357043fdb0141cd1151b39558ab0c55a69822f25e06cb21d0332f8e230c7c9470b27574d71eb83ff1cbfac345e79ba7be27646b719e1ad17b8aa50bfa22055c970dac8fe2ce58781f2ec5223278596b2925196aad86a15063b91c8a9698fec8750c6003e3cb3ff9a078375e0c6861716b624c365978922d90dc1f72aa628e4de728c63586e288151c20703d5f77adc8a509c99c8a8cc77562d1255b3fdf44f86f +d4b79c50943c72963e7863b6a8158bf0755cabedcb5e584a5cf70060dceaa63349ea040d567da2ca637743a62b85c9d3cc76ca68e1b089bc53c7e92a682722932bb5931a3420836d2821c98b20b000f708913a034d184e610ed25dc05c012dda39f8d4107a436682fd274f7c48364ae8e71184bf7c06a14b65770ec5dd2f44f074125ade5e620a1ae3b43a721069c0e395fc2d34cd2c6c63a631b8da2c566402790423c319bb484d58653f0033b9a455643c93cd35db8fd816a244ad0e56caa6fc5b46f8366383e97204edf6fe2cc8041d0c128c344bd919aa3debdc2247ed40091980cf2934c282e98da8f383d2828404e486aabe0e4a9bbf058c48c54acc47 +f724d51799adbab9e72a3944ea298ba4bad71dd3dec3cd595fb0824cffe46082c5d8ce9311c745d3e7d76305da078b1f0a0708270432653776aba80f242c137030a629947ae048197da2522ec35a1ec08c9e22a2bdca3c41893f35cde262752fe345b36adf5013deaee045bd60a8c2eeda1e055c0fc1eac5a2ffb4f6d66beaa3382bc2aa2e13f57bb2018aef547782675e5cd9836247d5da430953d781591061f78a6ac0293493249cd52a5f7ee402275d33ad3ff8a242217cfa219a3b67c138fe7906b8919317540f633718e97400a2dd4a879f487adff6601f6c8cff374db98eb810215a4883a86f53b9f8244306fbe1ddd5cc9867b6ad8fe35330e6e54d1f +f0885269f064ee01d65e87572926c504e810ac137bf4c87d71fee41d6477ddc6b50275c23ee285a9536fdf2c413d4ec397e0a89cc688582b051707c024ef750d283436407667e54694acf8b09773d1b76cafa7329cc91773c228fb77eec29a2ec48876583df192f500c3064d081702fc6588c7a6e1136e482e960fa04fead82a16063c3daa3ef4e2a7a40ee45b72e548780302db0ee500ce2829d792d4bab90772c0f5ae81b9f6499bee5cb38abc82b0e35631004868d52ce24ca6006e4c196898c7fd14f28663106f70238ea69b1c9e1ec7ccda93374b36b741eb4843f55ccfcf1c6eaf870c0e1133e6e6608434ac814382db9538b9b87e2a1f227a843d7b87 +f213fda2360c3e3ec23678c998ba9bc410daed5b04c2c8f254f730ddb65d227039e010d0b67db6770a45497da9b5d50d47278a5e9d836d79038f3bb201853e26b8f4ab0521bd992eed654f90c5547c25e407ad3e40ac931273cb6ec58f7ce693c75beacaf5d89de6047056ffa0957a6d389c13dcb35b5b25c5470f74755ab3fedc8498bea9e8adf61f13803308bf4e42fffabe32cf92d5a0227874058d07d08c4d7bf946540080129a70c58c4ccf7e19b5f31682819fa6961583acef8762d79c42d9870c6498b9c1d857f6bbb5d26de0f50ba8c6923b7ba4d4fea5a256c8b22053192e84751d0f408f55cb2f411ba9b5f110dec3b42f8d6fe041bf67bd03d4ff +c5242adbc165ca1375a9381a90247766d48760cc66cb858836afc7cc979237939bd5f2f8803e11a5e377121d6292bd0b7884d632140653db0d932a47a70a2b89ea2756cd12c81d89d17d2333a8af576fbc65b509475020c15f33ad64ec06232ffcbb070264b9818bc3662e3023f620ef5f5d203478b7d284349464b8d40398a8a990dc0d5e45098dc981ad6bb9fdb7b1bd8246780dfac294f1b908173d426117c59de8472ce43fd84e9b02ca5d1625ced538dddd2d0ecfb8bc6eb61db44721c5b1ffc43d5cf60ba9e0f42c74d632aead90f3e5fa8a0a1219366923fe37d7df7bcac59bb0d6b0993f08ebd5f6244554d054bad8992f8cf5e251eeb1cd1e73290f +dbf0bdd91de5b6fc07862ca22bd434b2a5ba071617d3d454e48e573844681266e4e9a342e108c3195797eee27bff1059e78ec737dd51d28f49dbe9e0b15556058130d07344b843c3bf2228a717abf0bd67f1cd04e1d1e22cbac7ffe7c367a13452b1a00ab53450effac27e1c090945edcc98fc3167af99a141339d042032e3b0948e581f0caab2fff3d57c264aaa0b2e2c59a3e440b281a9630f2abd11448f0217e2ce49bd492caa899ffc15855686c6f2d8fe044a7eeb32a3c4039a2dc04d34f33dbd9c4f8fd80f25117b2618efbb6ac029e2c3bdb76fe80a9bb1d47db922745ad1bd8897c038a270b1a25230075c209abcb03dc97506fef7d2471061220f6f +c381b724db32179c38c07460dc63405f193595afa95bd6dd0fc13f3958f5b1f6a5f2690e67a97ddb728a8ec43dfb840eb409f3e0353b6ed9e3174e8ad8dcbad6139c4fc0bd69f28680c154dbcdd087b7d4eda6e6f57cee6988e11faab1f5b66415c6407a17d1c552b0e7cbc3ff9c24359ba27cddad3ae7303145f47312f586f7ce64b645295dbf91ca88139a03d51869ae16dcb94f1afff855becb29d6e5be1a9a4990e21dfb6fae679d561ba3f9d72ada0dfdab4362971eeba0be74159c4c9d1bd9c3fbb3cf178be6ac9900850517f4fbf1accadc5cde87c8cb5a8ebc80f99f218d76034e984ef285cd750af4f7b0f071ccd41a98f4fce149b9eaca668b49ef +db1a5c4c4e39399518b35899e9db47183b22ebe4f5572ede2f03f3fe1efad9bc30fdb5b9e64673f2e0566925084e9b040e9047f18081564c8173525bacf41495bb89be3f8d6396d7158d453d90d206e8b55530eda9ad3f5ad5f9f70e5b9d6acf0484e756c95e1eb2279d9634499a482dcbab7ea97d415159aa876b93668d6f0952314947b6631f10f147f829231327b4fabb36037b5725a96586c810ad26a0f2720b56e3f4813e46ec1b59ebe758cc752d52a9b3812c552fa76d7852ea0a578f4e5138780c0d1f47bc37627f0031143a5eac985373e8e8177f6d0a88b3122737c2052660a42c7c5e4223750adc5009bda642d692f2818d392ea8eaed136d3a4f +c4f48ff90ba434c1e454c14ff23404b9ae33da74adf8a8e22cc40649c80e8c174c8e4c14eba66863b542b6404fca370ca49f5f1af2434ed5638fbce0d62f41a26e441384dacb09b8df76710b9f2b60a066b2e5352fbb78dd4a38bbaac6e631792452cdedd027eaa946bb30c8ba55504ef262c4c29fc34f5bece960f7c6b137c38421ca96a65455baba13459b18ebf4d618d1626e0c5f7a800bf12a5f92759c579806a31aca6fe2caac468f3836c9af80f3d554e70e4504ace4ea7334b64fb526ce98170c9939e0fc3840eb4d8e3906ac4bb5ba255ff3f8c4b97791c81af5a35e5b6b83ece4986797dd39b2a7e39cfcb8ae1d04b8198d39770b4cb9582f2700cf +cff6a1cfc296e1aa484487e8f558c9ec5bba5df95faf22fc7af42c74aa162ad185d2dc83066320e1e824899c3acba0e1c0a3848b13bdcdebd156a457264b7c4b1104d232b6dacb616cb4a3f685a7518725c93b91040bfc47f2386440067b82a98e29877861ee4c6cdcf04a5bdd704ea9ac843651eda4746f1c2534da7c1e9dd601f13077aee5647a723343940918c69c84e8274a34c92f3337acfbec1096b8ba3d736da0f404d125ac3cfd64e1a4ac9ba6536b0409fc34bfd6432f625bab7c193833cb37823f3bd1d8137c6ff019a80aa1df38bd7b9df56289d191d45332eab7b1c910908304ff0e544ff5c63d02dde78399c096243e2d4715d198eaf1b9059f +cbc282083e63b58ce63c14876e036df5ef4ddfa143e70da463bb8914dae24842f8748f641be9a9ac34f775e0c99185a59ad877899c7d8ec9f13b5379058cbb3c70ed988e5f5ff5df2851a60e499a90edf16ae6e717776c139a59882539854c56fcd2b8503412440595fd96b3c429e2d8408d84b91c8b2e9bf6ba7343801adeacfb3c3c854e7e91745f8e9b5868910bef97c4c307f8b6cdc48571ce201a8dcbb8a50c98cbc360213ce1e319223a470c0f80b3222e1cfcb2c457678f02e02b9f9580498a6b2a353fa58f85aedfa169ba33374a607fe480c7490f2b50840f98f8aa67aaa93bf2d4f0ce95fead6a1ed32f50e8ce39e14cd0e0b40f13025bbed92fdf +fd86a54cc26760d60626bc0fd1e2c0813347fb9bdd65aa222671dd2633627fec4d03f6cc31e46c4b38d8e632ff164c35bee0ca2d48b875e3830ba199cf3a34e9d24f61461a62648af2cd843772014206a50022d148d652048f61eb65889b5e60f6fee0c33d5a9c6d6f852d8745de92ee581db5a4454e9076bfd1cf5925d738eac096dd129c7e9990f582724ff3edd0c9c0685d86c4482bb9ec28488069dcfe0a090173530a169e613b26fc43cd79e6233809f1799c10a73e9a5c71bb6425af75613d45dc6fb7f0ef59577dcc6edc4df38b9ce1f21eb06b7696689337b962df1dcf3cda2205771d84382bd14ebb027cd47630ceb896bfb8accf98646985fbc177 +fed9f871dffd8ed30efd124aba692c5ddb05a976f15ec3fe8eb738b3c1bd51c1067d084697bb958c29be9e9a145908b50295aaf033450acbe1fd8216e800f0b4e2f58230601ca9dae0dc045a84c476af79902ca5b07f3d3372725130d8540e9c3739ca95c9098a04358fb6114a19f2ff64d3d839f80e2200ee1f196817144eebe567561f69f24205f4dcd126d06de414a23e3495c918faf897f481610dd75cd4d098d6340542c599882e13872dd1efab890187268629c5e31928ef658d521cc002216c3196e384af4816ffb3432f3d66e74f8948bc63c340e6ab6ddc69d784e09fce73c867879275145ddbc376d2aac1982ff0aaf652d954bd3905e141e426c7 +ff9d28f720968b2c461086b0da6ca82a6b51932ce908419631f78a875d1da61e7efb4a70e037c76cae2ff5987deac39d09ea18f77b613bae1c830e9532efb5e87f40e6e2e6b3b5902c0a71f3a6113b46fbe5ab03aa40f6e7b3ac0e29dfe753545cc3fbb21a54d8a9d34b4c26327ad3624cb6686d37144a53dedeebd3a3d69ec0232cc80b5f413e13b0c97bab4fdb0c0ee009afeefda9af23b4efe3f6ed045d89f03dcc1cdc48bac9d5c70bd194909b86de75eee349019ad4fc603bb8c342083c1675f6c7a96ea3b3b8af85c3f2a8a98b1f7ddb605e626bbc02701bcdd3c75103685efd68604e0e36a4d4f9cef03623f0ab0766e7b344f49f0113259e3e116997 +dcae051b769bc14bd489435b4dbe6f0072485353e907e4d83b44d00b959bf518f6e6937935cce71ae7ec8cd1639ff053a5b2e45b648796528b17f5fce98b52478f4758fdacf5f5a4e1c2cdaeb672789b391908c1ca2529110cf3d0a253584057f7013079cb95818927264d8ea2e45f9f7b16dc684488d186210e09a7d897eebd428a42e5e7afbc41bb7d5b47e4b7345cc4791193b61f16faa41611f56f333a79db485499f277aff38eaaa61b78a90e4e33201ceef5c2a71b40d3edf6e4b24466a4589a00befcdb687edb35cb82633384bf7c7cb2aae8100c4368d0d0174edbcba77ef17817d45eabfbc0276a33a2499ee4bbfc8c522a5244c58c0c6570020177 +c2d1bf3442c0f738f437af73a488f8f9a6dfc4a42ac9e71812aadb1a4b4e40c6cbc0f7488910a426253cab3e7de95f4cefe0c6efba370882910a6c5284e1951bf6fafd03535d02d832058cfdf785d4ffd87b808628369d85dc8d98d69f60b501269a1c94a354698567d3412b7f5316afff2180cebe0db995bb2d71ad4ef37e5d20ba68155eb2ad5eb2f42041ced6f8c0163bed2b233c4c6251155fbb6d2addd1757da241b5ba7530a9794c85a40d9d51e6745ec1e0fe0c96365fdf06ed3b4bbd89d78fe505fe4a39839343523fc1c13574577f42ec47e2b83a8ea95ec6b6e1be0890b6942177127822dafe9788af51b8f9e73362e365cae0a28d89c71e8a5bef +ebe87b2bda6aee8c6a25ec575bf276ef0f5744841270cc5d97a88bd7b749012f777d1adf40232ae624a616f0eddd07e1dd7da2a6fe527c29e07904bf5016bb62525d5542f77637657e6d42168d695f793b607182d7a6e043354849bf23b55e5af959c9cd081c9befa3cdfdfa91e01540cb9a48a082a7f744405fd4024ae233c932ff315017e0c88a772ff537131b142a763b3fd10adb1114ee747afc5f0d50a06c164f15b8f3ec450f412fdf6c0781a8bc2cc6049686a98913c76a634cc611a159292fbbb0bfd8614070895842079719a831e2688456bc7a592c22263e533c20409c367bc2ed4dae4922ad10d11fb408932ea255397bfc850e32dad4863ebf9f +c1044d8e115ee9faea9a90c9e0ffaa3ade22a704e6649363c2b6d3f8deb1d4826007fa36cad6ae2307d6d73a04450bf9ea434f780115fa9d738ac5c7101e68e73ab598a3e317412d7827c66420731fe9b0e5433e4bd5a55c0507cfa8cf9febfc06c8c8707eff72965c7b1e5bf9b5962667feac0a521ed995ae66bb03c5da15f1880bebd85835292b4d38b38ed1ba983914b72d9839b557bdb116a5ce289fa53d584ee17bedda3e6cb4c7b46b6872ca536600d3a303fdb0b1dbc93f09960a06e3874bd6b744adde281acb7cf2c7a9cd19eb1049bbc71e5e4e3e37ffb980f80b467378524be49bd5ffdf96144e1a8727eeee403fe3a41458349918ec10da3599bf +f26f5b24b1503fab1756326ce220990a7b0e9f9450d4f6168f8f4059dd217c7ea789ea1c6b7e42b2067352b37ec2bd102591a877dc674732875c7d6f890a28b91545dc6235cdee2b4de7f53275d247539219589cc61d6f3a5b351608733932507959137ea8bd4a45bd16974c4d71bce5c9ae3c9c61bf8c1201634f5949fd4b18e13a34a29039bdc8dd5b4d6a04b5a7af4c9892fcb6cce5e1ecf06745a4651980e6ea084ad26b79d2b10af8d199f9208e329d3f65491d8612a6cfd17b2fad8b5cb5aba22847f01fd84bdce57831e1c41eb7057c709507a7e881ea8043ababf15fb9b5fc5da5414fd56a95826fc522933610f023f8a093d47315148bb3d8c1a16f +c4f942db95b2284aa0d3cde33cf4abaa6d023b057223ac4c9d67fb7c6ccb30c37d9fb3012a0df35a2c93b0dc85007a2574a1c6533613ead1943c74a1761f27b51d59ddd1288960bab5fe6d80cabbd272fd7acea026dc1aeac8cb90f0aa14799168fafe5997aa88e89cc1db66b986680d2e538621201e8cb4307b3f57a70cd66022aaca324ac35e96fda062fa0e74276bacf30922b7668d84067b46311da866dd7a7e99ae8f2cf6eb43de87342c489e73a9e7db40dd47135b624ed2e6b052f43ed35d91fac450160172108465e96508058f24d89f94520beced65fe299a3b2680fd50c9f97629248f619fc9f68ea33d27eaa90fa957cf1f98fe9ba6d53c626847 +ea75ce2aa83a3b4298c73a6f0bb13a8e518e2aaef2f3604fe767118d9755d44ac7c7b83e21d424f42d9468a6af7b6025431a7f786429f41d2241331df25c31037569b76d0e990a5e6324ec29656d39183b2d354022d153512f6260efc7263e1b56563bd01827cf4543b5b92906b28ce5910306fd0aadfb9ea2bd4717eca7c48f7aa68d6d517f239b73626fbc41cf1c51a6e772039525f57292a9064123fd66184df3e55d56208651059c0a5882ba3e2b99d58d2acb7dc92b321bc0838b81778b5cec6b221058efc13fb7276ae2eb3b41f4dffd5f5805fa89e3e0d7ae39e1f6c189e89b1a90c1586fbf3be4e2fce085d8c12496ca3ee33a8fdb4a7d481e72d797 +d9d53ee0b86a6f4a0b31504b3b7117cdc20113af5242a7b36bdda5fb37853533d970a00bcb779212088f81574dc117e4d9c0965ba53cace8fe28d60134d96a54ec531a0b3ff5cc70b1200de2ff2624ec70ccb440535e458459428878a64f3ddb6ed68b6b379062e7caf23e99830b1b016a8e9f377cdafda8c85b567c118f503b3f4169bc63e8788b1412085c01fceefb107ca407eb29a0dca8e7b9978c97ac91973ec4c999dc832ad1c923925be4e9a1c19515b5920ee1a6deec4da752e3cf58a8907edfa9a32f3a56ac82072bd87b9a5fe152305ce930108361412f65a9bcf6519340a3e957179c7c5cd3373a142df777e5a0a91807108c0193ff025b808dcf +cb872d1e247904b0c012af800eba6352ede60ea14c1e86edddb6cb60996fe984a52fc01382cb7047ef0cf0e289191a376b730320384db3b213d00dbe98cecc53330622644287c3a5e06f874493c5b3fd04eae579c74021656b864869aacc458c3f40cd079e8e040c779a98ac6257012c775db30476d4e9e9bb5c92aac0fc68ee15765b6fb416e4dc096065c21104bf2881c5d94ce792320d0df4392718c371b57a5174e84132d014a05efaffd2f546037161ec40d4be253e84699f371fc7d485d3bd68caf9d9ead5acb204ea4dd1773a53342dace14a2b805746332cca139244609625c73a3f3735723bdd56ddab0afa5a02885bbfd8a7f0e9e886be790e4277 +fe667765400f32b4a9c2e5a330866c06974dfc484592f2965e9b46f465e524ec6c87bc92000c76e04e5e0bb8e36ed2a0db5ec2ce2212bf411c788c40939a26ac44241edcb23e019c233acd6133fb7fe6dbc0aad897c006cdf85fb53be9f0a9ed9b65a3484ff173e2e2133fd5613ef92f9cece5524f993da61d1f8558e57b8ff30d4f88e249a7e5a3e7d61c8eab70cb2d2652f5d3c8459242978fef196f8d6c785221ec5d3bbcdfffb2ba0b251b9813e65ff890fa74ac51b71de57400f6e09263cfad4c1fbddb8c6c6f012a8cecdb78ae53819409f4fd55f0b876efdfa3d13f963e6ba290d9c202dbda976a2536b911eda720a1fb696ff03d8a81cdfafbabb27f +d11cd2188ca5a95d056571cf74547a2005685045816baa4fa4e6c12cc7e2874e47fdc9f0913ed1aa78b389d4a9d7dce59ecbd5626afdcf4c16ef5f86293ce968ada1a10ac89716453608263db454bde6c9d999579ac481d142a9788d096e209eff66c8d4045e8321752ecebe55c1b5a4eb2e33933b31e22956807de79abe79962b03b223cbf9f92d9bd70d054627754a83d49c342387e16a8cac409fb18df84adbdda226be0f43e4d8d0cb39e03a6aaae45175145fb086ff18ca455285c6b0e5e9bb357149e5bf3a0baa4c583f7f2f2d5cf41dd64308f860ae68188fb8666a40a005c071a79f6078bfa60a1c55b96c9035ff9bdce70169e2a28e3ef03c08f4d7 +cd9d55939f377b517ef58975c5ed3de69e5e8c7fa9b50b06d0257da0b8eca76db423a45fb69c45335c411088aa963cb18db3670c9008433faf9824ab09f57362daa8c9eaaa6dc794455481ec6f784eb7443482d927d4b9f2d753f8dcf983df64551b3d2198cabb5e07139614be07608b279d7e4584ce129ac31ef3851d1bc8487b9d3f692c2d46e7b107849abf35c93a8ec02ab2d804a6316282c11e991a31fdfa4fcc4f8e893ff40ea52384c6dfbb8bd7a82bda24b5519bf76572f63d2ade9ee1cc8ba0fcf2e646c95e33bb46341396b12acf596947271f2551b5a44c13b4f10d26144d63347be848c8fee36a64ce8965ebc8a2fd4a31f21e950fcfc7816b6f +f04235adbadc6dcbe47a62475dcf51f219e6963dafdd3c89452d2a4766025227a63f879ffe182ee3e9fb059075fae196e0055ce3f06fab64c8f38309ed17a57f0460d033c26bd7d6e064a815a2166005eb050359b321cac1c3c9b76d1deda46ec804531b88df75a3c689e8cdb675bcdd01b19086fc228bde8300e35cd13fb163bc707deb9fd366aec26d38e2d6dd7e047d216fcd6842a862cd3e36049ac0e2b0c7aec1ec7aba3954873ec655b701a8adc3d0ae3df43bc8e1854e747d080bc90fbac5db98685c34d3b2702a6c11cd2cdf18bf36fbcfa6644c9eb92169447f02ef10d48e511fb205b1baa6654ea390c94722d22b1e3504d55491c46f69a37a44e7 +d850cc81c3a5ad71c7ce3d96ee9d6f946a44e11301e81295e077f373e23eb2976adb7e6f37cab4ff90ff4dd3cb9ebbd9a25ea0ac5765996685a58a01dc61ff5f9acdac253e3b1d1cc8c1815eba7c4c351dc66b846dbbb36d1d43737049537ef1d7d7505457c68a1bb836c92676acbcbe46af80e356956914efe10a3383dec95b5199fefe61c85edf620b6fa752369efb7645773737b34db31b4989379ce64138152d0b36d5bcd877b840f24e243fa07158d9b4cb0181d13641cd7c8df95a1b0b3c4f85751294462531113c9e453f567f73e65b9e94bd81b7ea80235ef595366ded2d7f70bf0ca7ca6a0dd9106aac8d06fe3e8dc4ba42271b25adc8c750e5de4f +eaab935f71ff67aeefa18c651527f5b9744f9cefab6b1974f897051b56d4ba8890d298f40e44f5989101776e6a5e0cf8563598411f84d7ce698fd48cefedbf296639cbd426f99512682be7a539bc1bdb3caa35085fd23cdacc6a9555fb090bacadecdc57f9bbde7759062fef1c5e3c1156fee2944e3febfb80cab6c5d30ac8df117a0127f57f410a56133b2e1cbf9142848eeb1f76a18b065f64e7651a4a7b4073d7a860972ab91128fd1561cde6dd41a735ba723835be049d3a563f175637f38743b8e314589737a2a75c2375d3494d39003505a98f78db97bb2352831fb446b0cbc61e9b548809ef21f08d4e4cd6c6142d8ded2d4058219f6b3d104dc3cd77 +e291a8688211eaee016e0ce25bb1fb161e455f78523180c7c4cd2ac4229b681e51dc52ccd116a29f3fd5b2e4519092401f3be6b4b74a1b695889570ede6234549cc8b087344d0ab5725d99fa5637bc531ba25a6374cbf20e97a53a81d4a84b145fd948168b5bf8858e94363e9b251879dbf7824525d225c9133252cbaf0e26b9077ff3c53a3e70da406f02baafa272db28d4751333618221239278716e12d8d45709dd7bc90a206267133b5f86f4e402b917282c17efa194db7e3896a90fc06b1a04670dd342f1014bb0460b3b4025097cbf9d177a09d803c6558a3ec1c259bc3d83ca54678e089357fbb9763a97cf88b92a04a9c2cdafe79e883852a48cf537 +e535799cea7f5d339d4c4057d4abf7ad497d3597371c33e00d0c5ff72ea8bed595673d551cb001a99784b318c56fb1937196e3f233db3a4e8f9a4853584c260960dd3ff43b08c1a54e3795e607df44da6c28a90248d9ecb353d99a378851d48ffe839bad846d0a7372dcb4b407784b4ae0adb99e55f5b7e1721f48ec5cb1257e53cf71b7aea615b0b4f6de4ebec3f83fee4bb634c4fbd81e9952c27861f9c1e578f7cf9a5eef601aa2920d184282acafdd02a0c57e61847411c9b7cd65996a1079ed3d0e30ec6ad74d37a229dbefdc6908707ccb0a167cbba00cdd91c25b1cfe9ae8e55694a300cdcc16d96d3120aa8c0bab127afe534bf6945b73d0dae5264f +c2aec6ea70a2db16b6a23da2552eb6c5fe95732062eef16103405cd78381cb23c8b8e0344a33b85421595f408d9e98f8dc9ffb5b215ccb649e15db671b55ee0d1a01a0821c77ed1ebbe88843c53fd45308dd0288a6e93cee5fdfd3d6d7e0f0f349a2510cfee3bc920ca90daaf06ed8533f37700fc6ccb42b3d5b4a1056c73ce5f3d6f48f59d299337360bb7001b67d98d3927f89df3f4c01eb0d92268ed1a9cb3530ed99eae9b49d2155b90bbf65e2386d307cb87560f5d26dc4e829775e5968d9c9fb93563d5eec423ae9d5c8a2542ee8a2c43448beaf46365ae99854c9701f1d35779a25c5b6cfd5de3b90fd0e5684b38ec238536dacc4a0e8d41c1401a7bf +ea01b89830de7793b8208ed74c33f027215dec87e973ab00db1464762f2cf0d619c1619832300945b01731b7c7facb657708848af26d681c90a26784a9853d036535bcb59ef56cc3f33e2e4eb5a28a57ced323cecb22f8639f42231458e748c8e2f1623eb5c2063caf7af2de349dd018ed5727fe9dad256012ddc78ce98909e7d17c8305bc6e140130905d0a1333d484018d7d9313f99cd39dc1142b23ad6045ecc77cba8edc3df72d2afc545f2e4007612b5cebc2276f0a555a261e3b2d484aacf6eb2998679084c6ed82afd2dfb3b81a405e56314d70c3f98c57be42cbe5c3cd79b5d433cfb2d2f020fbbd4ece27fbcd48821650865cad331d95482e6fd4ef +e7113553c4482fa32c5217c87108e840c1528eb8339896c10721135e8c23dae608005ec03a8e56b962d205f82aab1550f49e225d0a867ceaefd7e7be4818c40e5daa4bcb155d7e0bb1d2a6300c282212d6b1d0784e1ec022d0c5a1273af2692fd0b1d2513bcd956435be7eeed538f8f35bf0834d307820f0a67498cf6c53614d5350340b0cf91d3d7f45f25f33dab043d818a024ae632c7c5cfde728b6bb29dffcd5448ec350dded825db373fd149f6ab7cbb6039490b4d6d47e69637e67f84a23cc2bf43b097d78dc2076b005193338191a39b8d4d3ba935f4a2510e83ff309a573d27a600e0fdbb066c6c70bfe551f0429bb775b7f7f0821a3a486ea96fa27 +fad8d17f9245d034f1b38fe95cc3c4bc0b0414d9a8ff5061a21977903ebcf4a24bd7578da6856002ee5ef6704949c53ecec2f9f77a64bba4630607305d3bed7cae76235b832418adf0b3dbf084e7df9e0de3eaddf78b740c73059834599bb71c3c69e5921fbd19de74968cbfc8256eeddea01d3719633c825acec443b66021086c7c75f4fcb4eb037c969f3cb443ae682233b18a8bce66800eb4f808d41b1b43e97ea2915795d1d5428f6225326ee7addf032041b8afae2cd35b2041309b0e10e1b8f55f81e460460ce4c336e1bd6d3c3a448570f69027b5a75d65c68018efc911d7e9b2127c0b87bb07129d2063bd624d75a2cb08703ae8398dbe89064f2eff +c809c6ece15e674f0c35eb46eef65712f17fcd5d1fa652cb23abdf01240f0dc24f153292ff47bf35be04d442aac56b65ce476e50a24544ec641004fd1c415213cb0e441b02f04f43abe9454628ec638c94c9c2ed87c8ef0e4482febea1619866811ae03eab5a60840a6c1d3873bddb1cea1086a53220063b873994650e8619e9486b30e659465fd44d3457b908c3b9c1915155ae2ac7139333834ab4d868bd2feac6eb3e8b54271b0cf91db6b0219d667f0563b144bc58c299839e05eadb3d2746ab9e0990c8cc1c3d81c9fe0ae03b9284ba51e61bf820e1dd8dfe95099a6e5d81c3836d62eaa2749b12654664fbcce7764945039e95d2c1515a662daaee6087 +de7835eeed88b15f26da34c6b2dc602201bee45bd147683e4a488644e757d91b54e664953ec46e03755a644163224a4592a7efde50e740e95315f858fd9d33e5699d5475e3ca8eac7b43a2985602a7a96c61392d154487da9a5cbe9e21272240d06ca6d3b52e560cb9577d3671d2511ed5c4501fbebcc574c2b8d5a7eb4f32598f6bec065a2bdea81ca2d8130b8e0feb8f7913ee5f1692bfd736da0873ebab8253f1afff19a11c9f5e1b55d556dc5ed7501782f11ce964d024ab47c9bf25bbe853bf8cfb5d8303d915e1507a3ba00bb77bc14382284a1584cf122e823d696798a76a4cc535ebee917786d808c30652c9eea6e1b1e0bdf96eba2bdfc87aa757ef +e6352ef0f4dc4e3e66add70c9776f83e48dbae6f552c013168334360c61ce9702622f4a96829eb967d7f0470e1160f8ca78dac2d180b61e30373bc215503f4c33fcf9fe72ff0189bc19f6ef969838e194594965e323c00c44457116c37df0fb5a2ec6708af673632e0c5f2ac34e6c717fb0640c488fbb16cdd29893b311c920eaa10e2c0ce1d03be2bad6478f235f2b85bdf0d7f05eb1f790e318f0aa41b8613733664d295a1778256df9f112edf90b3b261a39488a16500115bceb94884cfe1b5605e2866a7cd9a06c6acb30c60a75d00e80c8de91825de6acd2d732810eedd1f99b6a1facbca6e1376eef45698a0323e78458322d676656499e84cedccc73f +e67df37d6f9dbe0f375e575adba6fc402a4aa6814f8d5a36cab999f6028a6a98346d508d7bef50d9ede3e0f6415557a62b42a9ba939a5eb83d713d2c05f1c1f815fc378ab4956278effcdb27f84a197dc0e507306af8adb30c4dce4c1169236bee99486cdd5d9b6370dfb2c5150e61be741d37d34a6ed4d3a929275d0472d93d058813f853d0c42c75b39808ded2701e3552e6a851c5a85acb3f46ae545080dac7971a6e1a75525140c2e5b40a908d9bc68bd0015435eaf6c47af901958bce37105d8d24bc97612a4a80ea8349b353478c0a826e7154e591871659ba04d3360b9e901de19e1ca1b8a23296e6b97178458b02213862eca549ee20e8e03b90dbd7 +d4a9440d024fc2a31be90028ad4854795f64c2a7d02677f8b34aec51670af996a5ff27c12c276df60d754a826a27096546e8aea2bc2d7432a862c433c6ad3238b6de65c89de96c2b61933b4f27d4e847c7af25e15fe6bb366f498fbfbd88dcdb6c5a77b713afde1bf03d24dbdb224a20be21de92a47153a2817645f697889189aa40c80768aee993b9b32d59e7ba18c3fdded78ebe664fced18dbc555625bef9def82e7431fd514162c7e605b019bbb334d7699a8867f5d7cd72c082fdfc3b84281425a40f3edd1d26bc7aa4f6702e50a8e701eda3cdcea7b40347da7a60ae995da8d6a9a04c263387131ff03d20498d125ed738c16e4bbfdd64ecdd01726e1f +e28b525b7daf4e88fd488e31334a465525a103b8351bacfd7334f289a58fd5c108e0d6683c1383e99d6430a13addaf12d20a4a0a10f5e711d51fd44a73c054a8b29bae98c0874ff5360fa4dc5fe647a7590c24cee6e37749d4ea6dc902f36a35d56336fbe9addfdf3837db01903b927c201acdfc1167337b7982f5ffc74b924774b1e6306e937d7819b49767ac43378cc5bf838d820c82df32428dfce501a3f34ad42bf5732f78c53bd6355d2f6e4d33e71c7f8406d44805c19aee9d7f49a4466511aeeba76ab54b8bb971217485ac946f7fb2bd0798ba38f068927a15e63cdfbc641f34bc05117986a93e42d76ac4a2702a63951c96ba5335451e2b55124467 +c163de77a4231242de37886c0d5ca15f2bc459683a559de5e989105830976e79c76514dc734041673affe10b820ed93e7f0887c9c6ea7a996175638699f658533d66e960b8d0be4201fd5f7bab19144a66f70a7de0660904d495dd6d89c72168e5d722fec8ad0493f23633971ba8735f3bae65c041be958c82ebf5f49bc5e9bfd0bb7206e1cd5a380e5228c41904992bce69cac79649ef03d387f0550cfb0143accde02e045a9bbee847d4ac91c5b415092f5b02261db93ce82d72ea9c3b68bdbf43487f1e3e7f76837a869c0f50ecb7ebafcbf0ce02c5607ddc6fa11304fe596fd8ce64028f1bce107c5a584e0100414051b7d9d5c5d50d017da9f2fe786edf +ca559118cd16c8d303937e759ff320a419e8e79b88304a210b3c63cf6ede1cb16a1b1b659bee2f27a24f83d5aa075df99793621c41a075cf6864c332c2e1767331d9ff72b69c6a9b475ca5f98b64845d6a2b12c095411d25e4050d5fc4c755d45699b389ac890a5da122da0c6ea5a8fb230af019f5c54bd14b709799abb44904cf71275bbc1c67a3ed7b8da261b5ba92ba3cc8471978a0b2954c3deabcc7a13b2ed93b91fa194b27a5a14ff92396103c20fad850c077f546858f49d43867814a09017e607a4ba697f4020dbc8992c6b2a9b32b32c9affb606e897bcb0d5cdf4baf143f317520ab10df3efcad623b0a5a41ee9291a1c75472e9a9eada46dcc20f +df9bd7a6e60a26f502f807f2b5d85cebcd362b4788d70a4d017d46641180c853b48e590f1f2aa54720a6694a14bd2e519b22f99bf0e8538d2b6961dfe49925a3ccc076a3f7209f0d01e6c2d72f057d0b851cb53fa0e887dfdbe503ba3ef9838e2c8d49fd3572ebf9a03794c6c2deaeec1efa21714d9775a1449e36bbe3697511f8746b157807acc84b22c082efed36d497175f00a69e681d61c5c95b4622bfd1fcf0bdb86283d5cdc9369f3f9e0d8b862b6e3b433f96faadf133847de651350777814c53f09430bff40b4ecbf813002bf324d933f63831417e389d6f5dd1baccecc6ca3bb64a3e08fe60e3e106b670c59afb1c73004b0077dfc699399b36ce6f +d9fd570a6bf5e5780a3d5b43c083ed096568a54f1738039dad030c88fea9a49cd4099cafa61992d67a13ab51cb14502458ff1bea9fe5bfb6ea4e9f8f047908e6593fe32b86e9112b3cd004258aad42044d2720b326d9fda18a30d6118320d309ae01896a82588fb276d61557b981bcb17a9d95638b780b5cab500404a69c56e9aa91b2f76d74f110a2c333ddb7d099cfe1954d970595ed9fa7172767a1cc4ed5de5b47583f52e3dd3dd0184bc923f54243fc2aefa6dede121ba92e59be001afb4688cb156d4e76b369695e90ad7a8f8404a11bf56f614bf6b4e96824689b20187b73ba6eab876f66691309bae21817465783489827996e439c0a3d7e867a119f +e24e89dce7a65cbbbcf3573b390551a71aa5fe3aacb5bccec9bad61b11aa390c90cdcc609bc4b4fb4a56bfd2dbca8c8995c3e2bcb0015a2c1b7a1f71ce6080185f6629f00603d7d695d43516a605859137ef970a478b8960d5471dbeb3f2c690591c905405c5bd848b03098eac3bea11f828cff16491d1a44118886b36d4e03c4a29d94d7a6596a0962ef5c1c0bc8bab8d0f36d019194859ea2cf8db32ca17b6b162f5822280ddcfc7d6690e8e696ef2a0e82d26564e9e4690be7868e2113a0d0377be78c039d01cca24c861dc7dd450c2ed66b3b2589bcb11dab9a5b365c51d312bce7cb23d8fef6b295a38bb5ca3381a739852d688ffe556d3e906007a7cd7 +feed4926b7a574b5a6a87977d9e6e16a91156d0f979f8791a8fba69c473df94ba6c4ae8103e732dcc2191d1ab5e1a0ad28ee34c476fc4687b3c7b4e88788fb4c4f57c1826ec06de8931b872f830dae108f0e274e6c4a70484ee6f1bd9d1da16d0adfada19e54007587e9e997f677a93b501b3431ce3b70c969951c02f8fcf427ddf42cf13c395c86c2cbbb610ee6626944ceba3002ef3166408b0154fad953bda04f82316e718e17ab6060a7c0494855be3e166c523eaa50fc6c27f49d47c5dfeb19a2610710386cd1de993373643ad499e1dfd2d6d088b44d94e3345d83f01551e96f07f2b5dd4c883059c83fd25af042455870c96ae0c7b7770091a58e16cf +fd63a2ea25f0310edbcd4e8790355b73248d9d389fba821400fb8100eca65bc833404212727bcd7fd1bd239781f317f030312e6cffc1b43b689c814b051c6d2932496b9766806ad88651e1716e73fe0979ffc47e8d3483e99caf19a21d9c387b13b73a3253b36aa30e017a6680d74b9977933386fbfaf182a3ef0da048012abe086d24cfb94bb3e341d3f7e6531193490d0af227a780b0b6fda55e659ab1d8f78e1a070fe0f7e76db573f2205398bd52a6152c9b3dd405740bc3808f68a7cf90ddae52d59825c653c9af9d137c86217190b9924dfaedbad3b3fe8731145cec313f1d9aaf877ee62eaadb1aa5b3f2aa7d72d33896621c12dd2464eb6f1670c25f +f84c931a7ff397ceaff2763c3561fc1b7effede181d2a59ae3e7f617d060e8d31ffb261c0cafae3207154ca0aeecf3ef950a13e10b41a8c3c9dbf84e67002a0e97715eee1014137d1d63ea5f3a749eee7502519c4fbdf58cacf777452601627665fc007a81c1cf3fff82d98d01892d3492d2cbe68d3a0b35f959e503fd6220770ea19c3fa5e3f55de81ca932d489bdd7fed2c664f8eea85a928033e797e32c4fb18b61043f064267707c6874d6fd4bd5c1098c56cce572a4df629f80f60e1a210c3036f11225e0542764cd0974e4bf877f0fbf3fa3cdf5448af58460f56e943cae61402e6384bbf43f056945a3612547d6648db1466fe4c600b6de1b85048d9f +c59ae81afaa0fc8672e62ad2792e3a4190e0f07e7767900c4d71de75cd2a069b7b54cb469e0a35f3a6f93053ada39a75f34daf98c7713593b5aec5d207787176c752420db0ffdccbd2a0f34561a894a3bcbd346376fe57359a0da70978e92246c48f85f71a2619631047b2599f7c3ab28d00eb54e846a6c4f35b03fcffcf88ac44df332df8a82aa2d8ede4e1811438099709f6adef999562eb2711fe318be80f29ea2c51746b02dbdef34e4be12daa78b1cb8dbc4f8b2f21f641f762c6ecba570bf38c3e7e4bc525b9569079097fb17b6c6b7a9db9f5c5801dc8cef200fa82dadb67b2c8c368969e999f4e1907efb5e2b30fa82122e50f4d20dffe0c2b44416f +e80251ac2a9d1a40ae31e8fa42ecf02c284119f3122a37ef0397dfd079320eadb5c1afdc4681422ce9ac902b43e46e05cabbca99ed27654c2723cfb5c210dfe1564f877b402a95fdf56682646ebf8af16d61339ce555d88809716d87ae55f45645195b1b150a781d869759f4f9d9e75c31e297182c82f60df760721d0459f024a0fccb2bb99ded5af407a213a68117fe222fff72bcf5513596e29b9f96f0261888ccfe77d5385bb5f87b3f1441d1852b37ad2b1aa47b02f0869d97cae2e4a9f0b695906ccc272d43667e6a9344fc4b3e7b01ea836ae1e812dbe7fbc1fcf834eedc10d75995c460ac32d7dc08d52d070af34ad1980c089291e62989737b11d987 +ef40ec18911a6934ccb29227fb46eca55a6a28f618d0d8b5a2bd92cee5b096e6ade389592a76262b0ed407989569a510aeaa6c6596ec5f06a896d2c8e497995acf107fe7854cb74e09e641b4de6541d846bb18f32f7dcaa66e7f37e2f27b30873eabb994b4e1b9ea59eff1d945958ee4e5d928b2cb58bf5465d017a2094d0d8f48fc39970a3a3e0bf03de6f31f7d4829129ecd3be1866a6a162477c513ffe5517acae37b027285c4b705723c0888df9fad202153a14fce5ae50fcfc7a33066de8172e2cfabdebf1193b41fa3ad4459820b5fc07e365de28b4817940642043065915f2698f607c0649f9c72dc274db4b3dd3d7ae0f27665654115eda8c899a877 +faa54e2dbd843037431e00fa012a92dd88cba593191b0c291fa6705a2e044f961141379e3efb07c0d1fd7333cdd557b95c3ba80dbede3a823764903e974ee2e4c894aa7f64bf90b3aa2cde13607f9be293135d73cb7b5159c1e6dc38b9ee5e54ac7127587bbe6567dd19313231852a02a3fd715be0c6a1865c30e10b54218e6b9b1159a9164d1097e7682d7f74320c37b1f94f8552e450da3ec7277f5056bd227975954ffcd25be5af43694c9e092484319c07cfe69f454275e4a0050b83e29ec8b16ca0e4592aa5e2057e71312d003b34c2cbda5ae593b6808c1040b9d01f2e6c55a1fc2e21432402edee70522faaf29ca00ba3d0926801d30427384025e41f +fbaa5cf01ea9569fe98450eef9ed7f5c228b0d10781561b39051f7ffd88786812a9864eb43204e61915d69fdc0cdc8e425f386f11d229fca2f95bf58f775158e78140b3a9a2989662c7f44213fd8d3e2ae2d7cad56e8083663deedacc40470ab7b1f3bad16b1feb93af42f42f2c6dd93a82669bba63f44e036ce69f48de1ea19c456e5ff1b60e2b47f134ea5dd716e5711dfb545d638474c9e52c3a2cb97a87c121b93b9f19f0615a858d28b225610c16ca72a2deed1a1a77db562308487efc6d21f22ed14a4911f3a040dbcba6b4e55e81151ca8207b74ff016038a8e19305e0a24f210308fb48f3ab3cf6ad15467c674f7422494dd1cdb0173b4bf212fcbdf +f5156970d7dafd998501d4b73deb5a8b0297d6cca58c325de928caaeb57fd641f0c906184fd7b92f4a100e495e98e9ae0221dc34fa869382b1ab1441fd0ca1fd7735d03a8981baa7a72a2c34f1f84b3c85ef308558fb1e957fa1d1e0143e96c7658730b15a73b972b482a38fc1da77ba2c3ef7703f4627da308533c793ed69dc306779d9202e7e4dd290f25c5a036058c29641e0f15c832d80792590d31d385c6850c86062a98d1ae653a6b6eb4724b639cf4769cd14b7bc0cdd880bee3139444d70e0e1ffab92513c7d66416f640ccf2a214e5084402a0c09c4058264f33d13430c76023bbe2705221b28b47c1e53ae22067e627daeadbe2c163e5524238af7 +dcb2b184933ef6869d6affcb03f102cec97e6ac5dad407c29a5d87e960c5480d1eff36e2d7d4c1dc555e47322e4d15f3ff1ad58aef5fa8f0c2838250057664c967118bad46173533114b90fbe008737695409d15cf243320f2df229d36e6138da4b2a3fe120f632958fe593e0a59b8e6896f783c4ef7195bac4ac5354746a5e8fdc269422c974300a197b86c158a7ca207f09ae7a9399ae484870086ef736678b813df562258e2f902291cc2bf9d4f1fa85487afe092b6d23434dbfa7ec032caf830e12df9b10e6790ed625b96c8f44ad2895d0fecb20a742cd1aa6af2a32a51c68afa604259c60a3f746d9adcd5157341f06a7881a68e724a3d277df27aadd7 +fda2ea3d0a24ab848e11870db9ae19e8ad2bf2d44c753364ad2aa46255acdc40c0d61af3555df44d9fde2d97af0bfec6b16c77d26c75ecf7d74712781c835adbe72cfe07dd7791a62906e9ccb6d1b0aa05f80944ba8bef7548b599b4f2ebfc392542d6f468149d8bb101869dc124b652c49c31120f46aeeb3e44cef0774822cf8b4c9d98f5a29ee17ae66f50da30eaf5f334cff76a147e7248795bfdfeddf5a2f300f3c99dccea09e844ba558c0f44b4c06151329c6c5f103fc76047ce29e3d97b76ccc35887ab07145a58287ddf8de0e2ec42eda5fad3982f0c02df6e2f3085e296eaff05165cc332b23ecfe35bebf5884a941fd76de9ad51434c5ef45c2bef +effb5466f39908412ca80979a29868a5a3809b7d753dae75cdd266036b1411cc22ac69f83306e3dd4d71098ffb5ee2466a3afb86bfa25ad2d1696f6d26362526e432e72e7ece3c2dbba7a22e5cf94397157caeec3b1f04eaeeee4154ae89502cf973b96cb939ea839582abbbc41b6a1edb644899c7ef2f0a723b4caa6d550d5501839c6217efa37d878f1c6768d5274d44bb7701ba9ea8e67bcac46c41d4c523fc8382a860fbfaa4eca90543a813e7da21a2675c592d5e84b58d4445d051e53d1b2f5f93a4e4716b2f6390b5782aebe9fbd2ce8df7d3b7000dc6ac5a70a06d15c5ea95839e753f5bc96cc6e9bc2cccad58faa01021e67a0fbe4158f337eb09ff +d897132113e930ea2abbd806a8c9e9b4c55a20499b5947eee1281bd576796e3dc8548525385b5108c3f4f1e3e54b5d9238a1b8fa8665a88ce9872ad53054c09ca4837825f6e4402790cd720470215b9028631d8e0757074cd571a7f9cd3987542c4aa1e5312373d658d8edb1797d4c7be56d0170ffcea7e110a49fd534a42b05fff2d89eeba41c29f6e2c1cf32a6dce66f634c2c1a730d8f541d21376ebf063fdde0dadfcaa33d1a152fe9dd9ac87b7683f3fd4911182842fab67c1fa6fed729f1da26a96fdbe9ff90efb5039f05e58e0db4bd0a784b5fe9d3ce3967d3685dde6d686e398235b8565ed7fdec39258e382f9e00819ab71ff1101584945064229f +cd47d0299c11d0619a477aaa11d28d2e62e0b3b88843c5be92d3aad8f0a2647e83fa2b5206c20d50abbe1023ef5427369b11b2549d8c604aa15a98475e817d5a3fefc60fd5d3346534260b9ccc44363c22e5b93b51f7371982d5c7c836e34205df135894ef68fb3b1fedd39dce060d2751efe7a75d9cc2be272189ad0033d418626b61b3909ff302383f8bea34d8de6dad57563f872450197bb1b4a87d1e0e6621bc7d0c88690405c06ea68a118966468d8b0248a6d0893d4273178bf02dbbea7f4c985f0efd4720e4a56cfb223ab109a8f4fd9ccf590c9ed7b8ff017740162c6d717bd59acc3474471cd5e40808fd794d92348591e3146d2df6cc248652502f +fafea38c2d310b7dbd6a65d7d0faf4cc2c949c3ba6867824c786d5ec945e9d623625ee13d019b5a9e500cec3a3bf832f3a7065af3b8c1dec66b405d7360a807fb20aad6381917cf18482e7b008de90b5ec7a96c0bda194c603b32417ca6da9b22dbbca726d4d57161a2576474ec2a09112f3360ac3af7c0f8807b82bedc1cd7b1c614133141cd0a2c1cc60d42da15747853fa7b4c6be37633868da54cfbfd8d82edd3e9411d539cfe2985f3a4ad554223495e433fe08485631742141cd2669864aea9f5f5a719cc09bd09b61c07df84d22c48e1ae7a805eb52f6155012c8ddb83b4b46a7f3e1946b8cc72f165f60e7452ac2c05f1b46933449b85b04c0807e0f +f58cd4fa1f8e8e088e63e6518c2b81ace05ae06f0779875a82559b461ad0182464acf4fe2e2b023e3d93486ffdd72512d075c6c5990118e2f4afc3392956c3782567bad33f797fa87de0993ad31410f9a5c4676ca651838908839e2338aea2d8a399134a8db84deb5909b514b5dd76e6d9264a24944aecf7e5a47bb55dfda3de20c6c11c2eaa8c92f4d8bc597eaea8e7120383d17368d645d1fb9a401ef98a851e408d355aedb03d7414a3af4491851ebaa32847e744e2dcf956cb0aefd79202636749cc67634717e684af0c9a96251c6bc821ea97c69e84890e563cd4f112ca64ad06c94338ed03655a368f56394c554c18ad347efc27f8bbcc5da6695bada7 +ff814da105789e2624acb9616d458644642281e8fd3328ebde0a88136bcee3b1795c7c0819e3e7c5579e1521940496d57c68225f071d960390408a8b4c010f32a30737a9be4973c6d1511676f8477e1a1c91af54003fea690808dd5f3afef53b5add55aaaf47539c6eab2c6e6255da37a1ca347e0579a54d1f61c0d5241fda040b5fe95e762d3978532e09d766fd115dc4f90d6d6b4fb8fab21da9c5c1ed9a37e12580c01ec3373a6256e02fb6580f91b5f89622035819d6bd1de1029fa7eda816543681f48ef23c735a39c554b89c7e6fcb474499e531d23dc818def94f5ce158070d8d6600b45438a1e04d8390ed1cf12cf502ee5d7953433ebb30eb92e957 +dc55e90abdab7d9f5a6e2b744c1807e3e7a58b721fba98b4bed405ac5f0cf92146ffc35ff5cc9ddafa5692882b0b712d9c3029f19aa6b42f817d603ef3011153ce661497e232ce8423dc13b4966431ec0bda8a9fde526e4f8dad60c59274f08e4ca4e66d5603d83250a39cf3195ed9f46826b0825150c02b60bdd7409bead047a36d142ab85fddd7705075a4c3ae85b380a40c1f425a2c3055eeaca2b0d8decfe46610eb74b4e44217f4a72aa9ad0ce80faf90625878a17368b9640b5d2ee444d800c2342e20ac629b944f9829f95fb5098e2505205e002460d180fb5daa6cb9b48098dfe278e9cacced15d17e2eac8bf91d5492357b5f4bcaa2181becd3168f +e8b1ff7012c221f3bfd49ce415626a4700e417dab2c9f22626feb71963db0bf755cabd65fc19c382fdda4bfc96532234faa9c865fa252468ab632e232973a02963e1ea35c18a0660d07d4898ac45acb0f9c341fff5c5c078d15caf8a4e3c832caf77af1e5e6c8d612d26d74aaaf5eb67e3201a01eb41910b045d7b9e2d64e733f0dc48acb3a6af161194d9fdb8ba0319335ef90905adb92d4f569d55418e495daa0a04c62848074dff5fea24ae9b35c03c133904c2a34356cceb647596369b14fd4638caca58351dd4c68f29a216394242013b6a2194d424753258634f8071019c0d35d874c45bd5e1e7412595fbfe6158788d7c1536e29f607349e6b015cc37 +d0f83787434a07fa269d07e4d08431624296c475d02b244b1e1db69d71ca564b7d178507c8a1f13906a6ad4ea7e3889289f2b253d2b8d2daff5d8cd1e7bd9ecccc84dcbf66d0193007e9df3927c1f66876e9ef685e4380f59cda8fe896cfa25156d0564682ca40867a5913ae0dee28e43a6fa672fff9630001060ba9e9f0872cc2920a5faff5f42f397172551aca79329574a9fdadbb2bc72df98251e3b866c9e838e8b05bf123f3ca38d6b1f70d768a2c1eb2eacf43324396c9fcedc9478bbe048ea1df89421da243156536be96abbeee410b9d27725f49c59340328eaf6f6eb74841cfcc8076e636cdcf34e1594b06f78501da044f9e55e9d9545302d32d7f +da2c03a1cd058b3b096ce93496efde39491f2187694e33de51a45065f8a4a17bc7938ca68dd367e4c2e5e1f8a0963c660633145b87f3766f74377bea3ae8e07d03c29c9cf64c40251f37cdcb8436fe9357cd533812d25eda3a438bcf2cf47705ec95f8f715c8dbcca4a2f0c2a8b2741754f262b0a8f1343a843a5aa6b9e54790b07259ebbbc4aa9d2999e634e534b01a93b5aaf36fa6ad67ede0c648bc89a618eda7b64bfca6a3d539edfa02b20907b1954ed8e1eecc7a28726f9fd35dc492c7b11ee5e21f5035e964b82b66f09d46706f3dea3d0da089773f85fa8aad5e8d90bd0628afef28e878d1cd477e85a129a942849628170f508b75ce8771736c60c7 +e246952c650eb6cdc1de8c98a00a535b2237163f57fcec4662a1a92353f72a18f0e6d8d8181774266e6ca1a842d10f7206c2b51f73738b9f9c1efd7cf131d744c2b649c3c69ba92a1e5071fb491a58b133dafbb0fffc4b7263ba3fbf071ea353c2b0f30755086fe20fdf48b42141effeaa562e68ece9a11cebfbcec2140f5bc2176cfc9dc707f2f7255291ba5661ce858aadddf40016ce6c8b67a1ddb41ea44aaebffb899ba2671007023209fb20b6b53eded2f4fa12829a4468c36ab7ad35c3f48a4fa9dfa2049b0bca59884ab0f1d04aa48eff9429dc7d2af3812d3fdc57c5a5808c7a5111de9f8a27e71abcbf9937a416cb248f2d2066d660416754e1dbc7 +d49e4d68f4335c79f7a46b976d42c473645f93cdd3242a659106f1f989c83f14a09193f3f5cc8c3cce62f47af74c692e9a0a7c0d5493a34929d6b11c25a833f24049f345100cdc2073d4061c22bf5558c4e0e1571b4b49139e7db6ec3d9d8a730312668913da92c85617ffaf1f9c5eaa157622d21093994dabb5f6bbc864dcb18e250e648849eb2e66a50c916ba3728eefc20895a2d0ce7e5c8ab55a0089cf1c1a064d20edfb3f4868ba07ba4cc5bbf3224ecedeb560b25a0efbdac98e32d5df901b46ecda922473c3aa271e5014051bae75a6beeeeb6d5f68545e4b4fa2c7681c2b09582a2846016d968d3cbb131bb6503475a447b8b9af2a27dc9cdaa2e18f +dd8cf7b2ee95241118bc526d98f4213f3b9bfc849b6f03ee3155b8cb4a641030b50c80a992dcc8432086fce785a57a67b7278535f5635f3bf4ad18b88b7c0799901381103ef90834bd652458358b71847583c5bc614f2db07c6ce845698257de73e6aad6790c61b6e9c55fdd0ea4717d4d60526c03e6b365a781232f2088ad920a45f7f718ff0d5302e9b20747ce608805c011e3978192632ca503884f7659a3ce0bc92a0ecf30c5ecf4272ea1fd28330ccdaf742243eb4fa7bfbb0b8807c9b4a182b49121079b5585c9b0d89bf7868d88f4d0c576521266645051d484266c3b0d0f89522ad569dfae8ca791a8fbf976163633d30c64360b3ee392f6e98f955f +fc1f8af335d5ec1e6a77c5e4150223f717c049f3337fa17dda4dbe016da1adba176f67280235765eeff402d4bb902d34904a0d43554c63c8700713d823817115f0c5bfe7b641364f0e1e915b107879a298845e60109b0d36b71bd0bb17a7e76280a4419d692fb787d1cd7cf881db28f1eec2576b79d3e5d45e1997d6050d12703a062ae5f50bfafab67771ec7c81878c2b67913dc87a1a307b4568e81979f2f6e4dadc198e9778e82ecedd109e41598d8eb31025be2740d228d48da2e702f0c9142955486b6efd806facde49360476fe8b41c1c422004e33438dc68a8ab90836efcc1e2ddd8d3b6980420cc0df11fcbf3190c4a3988cc5500d6b7f925175104f +fa98840222be8bff7dad0a86e00fdf89661eac0695cf0042442c725f5778e6444cfd80de92629770b7eba7b008fd27ad763a56f9184dfa765927300034eb524d267c8f140c17c7a09452d15db95f614f03dceca6affbd0cefb846f2e2644d580315536cfdde2e2c478e1e5659b5d9562d39e81058bf8e30b9fa6eb78886e428a9f561509ca37968196d0742b97fcce045c2eadf82342e082772ff9d0f8d87bc8da5ee04841bbe0df4761fbe7ae212b627d036b30badd208d30d42c9f052397fb701a91b63346f146d39af35d17657f71c298d7c819b0743f08bfb02b68a491f624cc518f316b8b5ed4d610e3cc99775df7edd4c9f00110614aa2212871feaef7 +d3747efc74368485738a7fb2c4210b5309f008781bb8e8a2c5613afb7be11d55717e5f5fbc53fc78b84d956ef3caa23c6ddac4de7f39131e6db79b2e489676a83dc72b989e7f88e350d46167dec34ea09e20bcf5830733fa9d64f1872f69e8303f44dfa466e7f27ee8ce49ef20de817c27f9191a9be7e267a866447b0da449d62894b6414d9a66149c441732a096b6fa277eb34bbb9e08ad442b7af5412cf1ed8b62e9088b56dfd14d60a0480041778fb2d7dbc88d626ab609a280d0f9a212ea00582543bbc1fc46e9cfe4f23b08264dd38475f0ea07fca8ec88d17037060f5fac962597a1ac4a4df2fedd7a42f6893128c48077fd804b13e2148499b83fc3cf +cb89002a9af3e1ea9f2430c2697cfdf33383b85b5e638f167ea9d3e4b3f4bb7de16f52d3d4128d54a112821e2a0bd884a5f55f2e2f5da5a0acb8b1dc54fab6f46725c6de90269574f55d854a3b5c1f24d7fe7b3f7435dc0ad1e3990aa23249370bce21fe6ce8e81d5e9dfbf4cc341fa77ed6e7afa518ad8163a9b59c20d9fffb798e6f5f2b8c7fd4e5cfc1f3f91172df6a34377266fda8060ceb4168d0571d26b9804729a7f99667e7d4d360cabdc799b3f254a76353cd160011e8140d5f25e4282c62383c25c2b0bb003e12d59adeda4bc79520ef5021e9a769031502e7efe3df74f7bb56a3941cdcc495c4287c27a312390dcdac93c38f9640dfb1a69cee1f +d2106ac017c4e18f6744ba788fbfa08276db6fe79b59d85c5f92b280d2c7f8277f84976f50c5b82658d826db1ebd5eb1b46d807745bcd2d0c8e9e18272317065c972e9eb5a73e62b39e466849b16aa22707c0916c98ea881d22dd778a71c44cbdfedd8caa89b630cdb0f8fd7ab1510c84bd5873e4d18e7e4ae5774a069609560711b9f5380476f9f40cc05735f2bdd009ae55d2a88eed679a87f662037e8c1c312fa20de8a738dcc5e930b989fe25797b17017e80206b68c0efd973f0ff92ad9ae574029d43642ae945ec8124ddea03c49ad48584ff918fc4e0dbf074a26a8f75bb25e66c9bcdc62092ebabf6db52d1403f995b2bd77f58cf730b5574d8266a7 +c4f8535e12bdbdb0cd93a7fe89188c846bc655a7576d8f3ed3ebcb2bc7f2a7a21b342edab344acb4cd0f23b7ace53143220820fd04535baa38e79a6a123666c95ed4b8c1fef0897109e42e63641edf2f3d012d42006abf605b86a2a34f2e743890980af9815874b93761e83d4ac5b651a56c3bb34a6cbc887936ae7030cb2f5bddd3db343db205781a74fd6df9d0242dfc46a3040e39e3b8be2ca3c9388a0596452c72646f001654bcaf325c0fe12f4bfa137239f4a3f6a3c02a748533493d946b2bfe3df021dace7e90eb90d854c19cb91f4d113c843952822b8a0c68e754486c0c8a38de7aa81c9bcd0fb49cbd10132770e9dbccb7aa2668f7568974cddab7 +f8c8a5bc1195748014309989ee5f502d3ee3addbc220a3c646775a1b3e524b4b9874ee0efb895400bd62030f6d545624b776a1b3cc00181e59ddde73f2791fe77f4045d47fe4160edbd611570e5f53b564bd8457f5e42b23bc3d49cb420c5f1ed90641145e5416a547700c859a7c0c3e9cdf95026c9767e2627b575ee08ce0954a73c430b808f3a596fd9e03021e090bedba882d64e2946caf60a2194e3d125304061967a2fda094387f31af28c4d46e611f4c76b973f6b15f0982db1652c3605c3794f64099e325a8efbf901bc25a16b4d400cf04fdb9831a698a8cb4aa4b46c8441801bb890da986b079ac427664c9132f8e5a7ed4298ec9d6f4949657f21f +ec0f23d81daeff4966bf0e8ecc31201901e6440996f3929dcd7ed67c9d8dcbde91161b1b2ca0eefba66ccad3b55c0d08482acec617b9c9aa5a5882b2a82694d0c360ee75277e6a3cdde6a492a9864f70010d2eb3e2f4f51fbc408ba809af3d2d39b04688ae7fb56b497fbbd01f882cb50d11eae4464a594cba5f54963eb74a672bb82a03f5491d37ff53e83adf58f1634b8f4550b44e6b2288dbbfe2b179f0698f8493d40a03a9df2a1216c58354b99f11e255dcb42ae0d277f5dbc022cd058959eba960b3331b2cd516b8a33b98d39ed2e080291bc30eaac772d70460c36b79544e9a1c36102cff19e7b277f44a4be88a37fdb71630c0dc9c13e0ddd32313c7 +dd3eb5b9a2395a11c2dd7722e3f04b5d7074cdcf6df6b779add49b90d2c3b99fe95acfa71ac4a5c6a1a04c83a9b615be6d1c7d55f7b548e63059e322ada0f05ede57bb17c6e852d9a201e559eab4a0e68f7abd365da29a35592177851c4ebf2866778b41fc3779f2d8be8db97c6852ee8044dfa3d1f5159223d7696ccd1403625d4834c31759b895b1a62e1c069707b4bce808c3e15c66c1ba6df5ee829e2d6405f059ecd6bcc4d0bc8452c7d2514a6db46e693d77d77e8df758fb039978ca7a8b64cdc8b71a989719e80e59aeb20f912d2ef140d569d2a250e999e82bfde79877d25663cbef3ca6cd6b3e00647eecebe49a5078f805c2662271d0c59830af2f +d4e0b14c8360210b48c60738264fe6fbe55958eb3244048554078218f51e365094329b1996a1ebff19731795fe661fe9277bfe40626dd8ada60d78afed24583e632629b0cec496295057bbef84c27199bfe031324c49dd2ced0a2539e2e38a4aa2bd94c9c141a1b130bce27a434bc3614725a5d8523cb913a15bd6f050af5c49c96cb22fcb85fdd996dfd4a84a03155288933df1132ab3d231fdd69365c6ae0e3c42e897c462785340a761ae1ec5eea4c7533b105bd6b73a45f3103546994c54b2378796e1230b346999d796033f18038b07f8c5713bc67b34ee5fe784fd212f626e3786b516268937fc9eaaafb0612dd7ae1c0a29537ecfd4c0f69cb1a1461f +e41799bab0aa5104373d057a3b9e55ae74cbda32effbbda20dd2bdd9b297238aa4b5ec5e70e83a83a45a3d4dad2635189aa6348ebbe1cca2d44dff8dc59fd8a18a39f30f8a7249ad1777281bad6da6b2faeb1a3d38bd0888416c78cde29d950c5680cd094b752a823b7fe56c5b064bc8ddb398355be74c94dc4dca574deb20809b34c728f3ae3a5ab4588e2621dedbc32b6bb9e836e5d873e7c1c33dc82fc13754d73ac3e225aa683ea296feabbc033c37d752ac8a611cef58ad055c93965440831385fe194b4102d00c01aac4509f8a9714fba67139340ac082b9a037d62a5cdbba64faa042ceeb23973b7b20e0bd98419d54971ed578bf1a2db6e0471aa7a7 +e24eb4dda0a1f6077b7fadf6c3a9b94f32a98912425d552f8b830f51b387c1fa7ada651c0d9a3bf3c20e17e6ee85befd317789bd001dc727bc2435a9b4f12556806c48ea0efe8cedbebd945f9dd3e18b43ab5a006ad3ffcaf462fddf11e855b0b21fb307a5231f68f76e9785593bf7b43c274bf184ff19cc1eba616f5295d1f223c925865909e4c81b98fac02bea80c08905f54386b4b8f2be3916b56d4b93117d215bbdf29135b36ef2d952a7992dd218fc4631a5dca52d8ddd3ba6198fd7f370428531369453311c7639bac4e1fc8f25c97e9377831453d5368b6ef869055470d225cb0d15aed941b9ea1af528371b2a2a6deb47871538acd080d199e27d3f +ea4c4ffac915c2c6e68e6daf44587887bddba39eb59e402f2c1f2c6e72ae662074e6ab32c53ab7d1a134597542a429635d9cf0754416acf80e71475be572313109e9da2b549fd2d70fb47ba7b7f3fa54e1f05f2580c08fd2bf2fde411bb7fdaf0cd18a6dcfbfff7efbc4c233493ecad8187ac410db78610a7e91cec063aba6feed4c0034bc3895f4417713108b611bc2798c5612e5990f87e8506541f51c3a8d781ea9dc6deea05b05021fc7bf9c888af29c404145c09f9f01408bc3678e67671eb597678026f2041972ebf06a83511bb82c5444e26527da900da3667d0e26bf307dcda613205827e3dbcd966f3f5e873ae9118accb84f1807a632aedcc2499f +cecffce65e2670193d182961dc118411a7d05a93f83f8a8b9dabe4fd9ab4c38703558d0c3431f40f1c283c5f4826cf64fcdf290b5283f75b0e41787c7bc676c2f9140afdda63af084e48edefe6fd2c91bfbd45e55677f68704e6d3bdeaa869dd210487288df8a8fce688e4433f3feeae8bcbe9ee692a9bc03cb5580a1be9180a54d8dbd3228ecacdfa76ea10fbb4b2c21ba69fda8d0bac3f1b26e2dfe3d603cf35e4c8a83d58da39eb4e7d7b9853bee1d2b42537594d87f0050b6b07f05296efa52fa186d2eeba58412239d32a694e10e58ea83825d0fbd0d93395bb4c8ad2b7cf110c621ac078df535f2dc28877aef9ec9da2c30632f4ae3b2636fbb8573dd7 +de225e064d653a42c4979ced2a5bb7a1c07ed262adbae4389437afff44884a0b6c420f51200b634fdb3e5e82965fad51238d776b582119ce522f455e0b91300786900448da8fbe4996129844ff70edd7c8aa5292f3611b779adca44604995fd58d5a132abe3f9c9ef36cdc0c4d8e64859cb7a41d489da51799804bb4c8d1355e595e23b712a0cf78e8be777b994f9ebde40a45ddda22fdfef5901b11bc3a37369a4aa555b4097d4e48e9c17da7c8a70b357c6e379dedd0ddf895f73fb0a7808178c89685262b1a0bfcc2c7f85dceb24699616de8d19e43441165181436687a75757c6b6f54645d0e4863f73dfc643bafd60b0e4e1f4db0145ac0c09646bd619f +ee7a157b9830eb6ad932e8364da442626e09cadb48d72a82575c39cd0de9f7ce2a5d6957d2756948e2b27f3514821d2c8a907c5826b16e5f8236a99941b7b1a61aa0a647cc18574c368024f61dec700547ac82125a45a9242a983cf627f8a2d00729a1b47d8bee7356372664a09c7b36846d38e85bdc0a3328c0e676ce69cbdc0f588a7127bec752da6fa2cad59f8cf685432ac2a54f11b1381c5ee2b1007e28e360d8daf7a18613ae11c382b31fd7bffc704a02776a7d39588e12c02f1138657ec26314be83c547d3605387d3f9ecfd1e9d450a23b76146fbab5ca1bb193f061ff481770632b188d6c22166f426b6e6ccb470d47fd9003711ae893cadffd197 +f89cd98100b23f971caa175f6c797bfb8487134daaf1f125a2f7716c46e4acfe11dc1a40111dfbb22c82fe335092e7127473a43c59438285474fa4a7532e24891692bcbb55f5ad078bd3f6f6c50482dccf6c0f1ffd9ad75c4d29c459801dfcc589f3842da24f11a26353d8b470ff51dabb5e88705a601cc46691d132c0f7fe746e3ccf0ed958e61056a4eb5a21b0472d4bdf81f7e9d2fc46b3b3361d8e233b5d1b8636187e48a1336115e8a3753cbfe29e79a42669d58d4682d911e461ae79a28ec2ebbeeca2b750524b13db5f69735db57a2157263f6b12b7aae8914064d20b26af96c7a26005fd7b6d8fbb91b70711e6c2de333187a61101a4abda6402c327 +d69152548a7524c00e824004f0f155476f119df40c5a29ec03a82ff05a80d728ffb4aeda504747937034613b4134bfbe9fbb0afcdf7c4baa8a420ad2fd3f043c14db82c137cfdc2621be8507e03bcc137010371929d0d7c04907596d485fa9d5d89e606ecbc6e72515a9dc2c0bbcbcb18ff80867d79d323648b0433d0a5f56d44406af880474341f7493a4b786fe0d1eb7c0ce8f77f0b778e5e235b3cc938b37487ca3836bcb40f088e261dd2920b33d9800c4039c12f3059f3c0da2fba59778dcb2b9beefbcffd213ad547a039f98e27c03bfc7181d91ec02cda08e0eb6a918d8c3756ed49bc81200edd2d4900d3034d0e8ae7951496b724dd7d0225a0ce797 +cf230f090c85c993010027277a5806739207ac2b581a047926d93b46b3a1dfe019835517d3bd0183b539dae09878d89d1118d7aa47285c1c6298d79d358158d066e3c481a9d5f90a86758493230bf508cc7cdb0f17aedc83d5fe2d0e9fe53fe8afb3a4193e604e4736a76ed33fb38978e1a495b8131d616814220cbb17709cded6c194b5eed173ebf2d6c9c03ff9be0ddd208bc18a890f7116f4bade1ed102fda50f4c750a4917d4259dce44e6ca52ee8092a22ecf3d4773ed109354a429d56bf7b4685c39387499adc9d0bb341ce5f377dd572e1928582166654018afd2e06e199ccfe023eab1322dce13227ba8dd64e0dd6efd2cf28f67cab8c5174e60f707 +f21d7f0a310749ff2e8c961339726bfbaa59d94e335ce847429913821f885fdd74c76970e9f6b1ceeaac3f9dff69a7cdc0ee0de84a6de0f2abe20a1e64f7cfdd227df053ebaa86f3967acf0bf6abeda6db3a7a73f696f28ed206e1f76d92d578518c2b5a040ba9410aa29b3c6ec406503f489a68f4d0d0d82fbbaabfacf1997317121d26ebefb47ea37c4fe1e5e333722431702875aa7455bb2cf6a3dbf71529019a2642b3a1f72b94c47c79bf8467af8a4e855cb7b62f53f251250110f083aa927744afed03be32b9bd5a79ba1e81922c031df259b9c2e0f2281307ce7a48e55c64e61bb772c5b3ffe5f4f35da7b30269366a590534bd9ab0b2b1c35270d547 +c70bc664c08d7df9f6748a7912081b3f683bfa1ccd4a4f61bcaab53d60f4af621e042e861d7ba9ded77029e4fcfb365cb83c1eb0a4531b09361963692301ed6de55c1b128e273b28ebd1f6cc54b393c9631f9514a180038d0b73cbf4d525bd89fa2c031aa46f86c2df103c3aad842d444489e6a1596d146d400977459a8eb0a4d4446aadbb32c7ce8cc6035d1bd51daf344bfe3a4fc29668e37be4bde40e574dc498175b82e7e09949b67bde24587435f9637a0cc9088c571eb0c6bfe7658ac2b268d7751f4832736e5005a27288cfaded745017ba1d7958cdf8af1269499e96f34299229cd38bef004c0a25b41baf7606f0e953500e390c5e4f6dc28cab8cd7 +c9ec40d005369e87c3a8b6c47bf4db1b0f2c13d0eadbd56de7141e8612d1a45efc8d16c9ca67df97fd3e9edf36e5c36475d9e82c3b81560f7ea6c125563cfb0d632f76aca10251e7aefedd88f1a53171d0d6ce4a8d06e431dca0aa2ebd8835e8cc1a47f7e21ed6f22002ddf13928be55154d40673cd69e8570c984381980d55752fb9544e339a811ceef0d873179558da67411c2cfb752e5d1b9dbfd7cc8da37e0d164edba88dd00be1cdd81ebbe02de3d10df377e21218e0cac732af718ddfb779ff6f583b142da402fef90650d4dba87c87e2914081030a68b8c5ef22c3e6888e26c0b44f778a81d7b9b9a0f419d66560840bad390dbd4e49f6d3a1635bed7 +cb993739c9f2b61e81bfb17f748be4df192937fe896959e142455389973dc365c967aae1786378dd5318a3bb5b91a5956984ebbfde62512a80917b48d12fc4801d145f014017f697e43643339d3cb784edf4270624fdfd2478766710bf510fb6283863df76fbf13017276daf312acfdf0e3cbbaea4802add9807cea389e41dad6e40eb0b11e991dc7606d9034255a2a639453f52533e66a3e8d66c2e127da1e3d662b5ad84a9d85b4e6efe3f1af3809ea37696ec46809f5d0751fefe8e60f6760a4aa38f220763eb9acb26ace37c7d04ab7588d9c7f006498c7174d52a37530253b1137b93ef4f8c115787b1c7140910a5d7c830b68105f2f7fe63acc304785f +c34653e83799c1d09b55c80723b0ff15be9ae9463a2bb9bc762ffcd84c23084b21b32e4ee9e0f2b27d9d13ce6511e715748efd99f604dc34aea998dfc04ddc87b8a8cbb481e3031e7ab73629a94f65df052d45305d100d75a323bd325bec38e594ae0c9a72cd789f46a02e853026c6cd26132fda7d8292bb40d4a9fb525135ab828bcbf9ac7fe53f6363d8b6766834715dce6501faefc750b765e7d052e08be485f5433d1b083851e71cefb8a448dc173bd0df77756a88d585510e94cd39c2a4bce25e1b69402cd975c7a43a8718aef5e77c099d69ab2624119892bcb90ea1191a869a57e30152ed502ab4206ded1a659baa63579fbf7af5789fb98f5c21b8bf +c7ef746a348caf7469f03ac399e42b8a2d76bbaac63c6a0b0ccce1ecc63d57488865d38f03493a227e332b378814b114ba858f7d3cdc2abe2ccb5a26c12fda5f6d694984c078490ef21d97ad636a0191a52276927c954ecf2a39953aee71de73ca33491b8b3d51a9a370bdeff172e983668e946469362aa8bc329fe2501ee89684ad0a773e8c2f252e4e66f1153e4d5e88f9fe5ac11062d44ca4871056b97ec23a704cdc5a4a5cd13dd69a3164c48b71aa76ca58a84ebb168d14dadbdfa9120dfebe180fa92a10f8390cda7543c0145d5b99512d15e162ef521c7fcb90d55ef5fcb491fa617474619c4bcc9db608c0f3940b33caeb5c2ca24073c3ac5d940cd7 +ec15034dcd33464a9710ea52752c7cd593d796f2538dea3618e3074258de52021e92f99037bb7ef72da706634c9502339fd65b531a5eb2b925f71660122b53fad7e208dace4c6bab9757563809c382ac4c1be49d29bd9bc85a74aa60b7bc9eb0b22c8f8773528dbb855f8c41e10a9d81929db1efd694aba5b5590a74664d64e46828097715cb1759049e1b5d2d8410a0076adf89f5fe9e1a6464c85c8fbc417d17e51e14de4b0265d1e12acb98806ad94627876efb50f646d2f454412c37efa4f3463e07258db6faef12a5712accb2a9335025ff3e8f93a491ec0954d26cde37e90f4fceedc7c260e20c77c8b2ae119e7861a0ffc132059d62676ce427479847 +e69998f4d08595f77585c2316a7192d6e3257fec2db8971f9ebdc39f60642533ad7606f307f5518877435056b89cc61f2df9d72b35ac20ec09136fcae7078d653c48594b4d70ae7e54afe619eda5bcceda8e778ac0bda610948a156fd9251785d6864f73878cd669f7c13fabaf7d1f7581b910ffcf3e2f08d16b84681146e0cbe887cb920ff032544335cc7d360dcd701c27dcaccfec21d1d9f831d78c592fbe2240fedad3fd2f4f09a4a5462692bd27632748eaaecb36b41a1602cb49ffbb56b918962cc7e88df0bf89e2f7878a3c11ac6b38abf88f0fb7a85594597761ce31e82663e05fa30d6901adbedf4564e8f28275bc67e77bbf3417cecae24c37982f +da31b0dbd411067d95a712599f910abf2f055ab0bdb217d67aefd59b89709cb79e9d318a8b6665b641362a99c4fb2153a9b4d72ca000d2d90ae369cfb0b232f1e5e2bcee0aaf0f896b9b625b610cc9063a1143cdf161801560d68c0b91dbcfea9c2cfad1866f100e895422904a3c758c4a1e96d6ec9e2bbf0b4cea9f615ce39a6acb9620ffc0a1054d65e5f423b9249702810d783e20138f27640fb326eb23210e77afa49783ac9ec2fc51c77139299dac772c87238afc10d7e5f769b172129c1625f9bb0936683198eb222753feb1d61236cd85dc5f2ebfa418a922d41391bd9fa0b684dd9a9cd936c52dbd6723f2935a0cc49b3553650cf8db7200cc315e87 +dc7337574ca75b7e423d7bd8cca378818871c0242c12faeac88857ed5833990bf1bb66ddea5efd74a4ff7a0631d4c620ba1dbbb342c736a286d9dce0da5cea9672035411ac4a90e52e215e0be935f8d613b547c94612a7234d022146215c6b7afccc70c445748fde76b11919be74e78db6339d4dbbcb053cbdbf89dfb728fa672d5afa8d1b0c7fb21b1dd7e06139b4e86acf9d7cc57f466e6531fcaf87494248a69603e98a57a9260ea5749890f4e335876237c320a008dcd4a6843ba09cf7e38cd1106b25393de5413903224d2409194ed40c56d5498929f72148372452c95592481d781c5da2329a6ed986c54a7c627ea5eb99db553c82b3087191c05445bf +dbda0a95f97a745bb492d848437747c274082d4facb83d81101aefa5efb775f1fa6a38f75ac5adab214af72adcc861d24bc9a64bcd3ebbc9cc2bfedc5bcdce76538d636b00d2243c2650657244a68972172306f014eb1c38ac03656311a6dbc76f99ccc1210d9c387e16f0844c6033e368fe62fa355670e969f8e92af19381a9b52b0c1f4d5f2e9a1d8544c7b9f0b82ca1ece88e3290859b849a5e89a417645841a090feec2637135849634f8656dcbc26bace4fe5dab6007a3f2534c60ff205537d81f68529cc62acd1b8873895645cfb735d808176a33b54545ed1e4194331c6e9d5a6150def07a841888808216507e73768350fd22fa8f96d7d680f19daf7 +fc3f3d24487749b8728ad2f9f0baa69625ddcfc515de50af3f6ad79e9bcda5304327651572bc30f7c3eb16ff29cdac7e0efdda5d06d72eec1cf2b5edb2b9fc0a32b527a00bb43224f89a3ac6501d9bf479d539991938bdd12758a1d06086baab85adc40c1c7019fe2464f58d05cd7dd83ad3459f1ee394913c02bf52beb1373bc51a555a10ae9112cc82209afa4ad51f43375ad7bda46d91f444733b66e47e018aef8d5ebe0166cc11ff756400908a5205b20f305c5a38c7d47bc4fea6f3104c391047f4f861bc88276dc15edaac3ff957ca06cacddf6df82ce8eb54869c63020a504c5d683783f22750e311bdd3b35dfb330813c9ca7b342ff6a4d493b1d5ff +fb0cd5910f62fe97e0a5a5711380179f0b349f01027901b3d1f48596d5283b6ce13d5d1f54c4127878982163914ad713d9b7f4ac24457a15a9b2c4b4af45cc0e4371eed9ec9bd1f06b2cf589e58b81fb24a595379ea3d8ff9416baea9a86bbc4b8255d5378735b07c09bbf703814587027345d24ccd30b53c84281a609736c2fd65eb975708fa25d33140b03fd1bd740fe4c78edebbe99a69c7537c2ae3b9d0c99f8197df9d6da9e3382f54ac9fbaba7944f08c60e9854cb100199bc7b010bfd4612180c571804a8d36fda2285072f8adf8cc55fe1b59950eed35a63fb8c17cfc5c055416500ca064b77ecbac62dbd0e39874f8d2018f1ea2ec47e02cb779b87 +ca2271aa034e4703066e1aa75d7ebcfab24a0a95fff888bf08ccb426a0a31810305edd4380a40643206a5baa22cb99dd196acdc20a6a369e25630c59b39b650719523bf64b428a7d868275e7bb9234237ec25b4567d3a1eee08b8eb17513206ba49c06738fe74387c7d65ffa66d6e1cc0292e707d9ab792fce913cc8f00bb5db6c12334b5a95a26b9f893ee75b1db628360cd7f7ec3c777f8bc3fa681816c792739dd0d18c7dab53c0290cc872d2b3b88954af36ee547075ec6983c25f38f521fe34dcbf2591b57223e86b02ee1735d9ee837747edf5e36a335241ec98c436393fb380f42e485471de0f1074aef0b989ac623ee8e14803f5f28a25a126fd73b7 +f70ee468133a56fe8d3afb3af38835bbb65f6f943f62eb6207a337d5a7c79ab35ff4e4a8be4b67c24c8ac742b912672f3835ff7186092525f17eb60e2b2b3b03052005756685e92450be21526272a77c0c6f9f46e12c4cef584146acc8ed33a6cc9723699b7232d4f0c618b274e0bb36d0c135e8bd973ca8f83b11d3ce8f5b53bfc3184e7e8e5fa331fde0a84614bd4aeca7f49c7022ab06dd8882f0f85479f559e6f327f29123c9d834f1fedbafa960638dd5014c2c48d52d0bb13013e8777b50f8d79e3bedf8c108253607bb65871594556a7028ec29d465ca1557fabfc11c56b9af30dd1d0f7d44f0068bda9944425523339d996a244e0ed657447c3a5527 +e693c2f2bb764c25c814fcf0c331cffdb63ab36bc2400fffe4b375b637ea25b6f364bb7fedf5ab2b45abb786ff842b77c0306fb2c9d1b1cc384ab33807bac631dc1050e3bc6d8707d64ec9e6e3d6ff32e1950f1143a5d0c48fed62d16485718b2b45ae953280689dd5cac40bd639675c0a85d69aab7007c450f262c8bd8829fce57bb0a5c98e813da06d7cafa89e5c1e497ce5d8958fc4eb4fa8c7ae8d741fe18b815c8d1159c0fbf74c9c75be99ec6ee385d3d4e2c420bd766d6263ce7152dba1b0d5b925b002a935ea34ce939a6c0e5721639892aacad4e0cdb48a084a4d4e9ba7b361f4aa8d3de1366792497878c820a2ee92daa9e64cf5a28fa8ab420fd7 +c7f31325627c513ce302b88825ee22ab4c89e0e04fe8fade20ebad29d9f84436a0b6ef33739391ba6030d3f8b13f0f6205093eeb925b7969ce27ffc3cde35a30d945b323c695c61dfbea23fbc86ee73f598fe0c8887678791f0e9a15fb829ff0facd643e4bd7e75068fa77e0fa2ccbd447360a8082a97fd70dbc4d9d9cb2f0dc1e79a28e9689a4c7acac76bf4f9ce42f0d8614e66ce8fbf511ae535e9e0ebf301aa859c2ca8c9d093fe1f986abf777d33e9b6cf94466506cdc21e6abe9a56e4eab2f7104b349006f3d1861b7136488c34044760cf6598bf4748a344d4a6bb4532ef6754128290c8956ac3fae7b95a75bb9dc1039e7752605fb8ae02597a07d67 +fd0fa5bab0daf7619042ec026ea51339a11a4ceaf542ec791d1cd4bc3f2f3eb81ff58763fe0310c2a0b839179d5f080e24b8c2407fb6d4100a06a6aa18b5bdca778bb7dcb372050f86a2f7b80bda79fd7e899e631386e0a80538263c0ac80447c6734ea476e499473b16217cc09ea161051e1a7fc11968347106d78106e32a478926526768f72a5fd77d0211d0e21ea8bf7bc94aa72a34bfa56a2f14c20ab4e090bcbdec631371549a2a0c1936f7609849f4bb9c4aefc577dda784802ec17ffbae7834b476e0f334bf08ccd70d7ac626bfc8b9d4149f3fc211a6f7bf2fff32fde3653ca1e8b736895ba1006b441fae5870fffe9401a3c2b9922b260ee5f308ff +e739033db875a64ee27e305b29e7939b8e9aadd92e15a05edbeee9367cfdb705e9b19803c9f7d9a2e6b69637a7007d111d72c6e6212eb04a1912cbdf5ac2990dde69b0724416bab46bb2791477c13284e03bfc43124818157e09bb317a4d1b865ed18273f2f94e367345e8a4514c1ab02d9f09e2469a442b69cf794c685cd233339155aa792398a84d1251afb3cf2d277fc8f89142b942985564f6252280ede6ea047884917a1aac041788c9902955e395d2ce30655bd38ba6b134ed2a25dda1cd9fdc71bf82d6542ef42e1fe6e6f6b05258e2380da134c0d8cc21a21c3d052b7ef0fab1767d04982e4c3bfe609d1fddbe611b7ba8373d879d4827ec08803857 +c7fdd5bfe991743d7f7bb038f26ad2c81deb848f6d70e7b00f26821c089e05dd0bc0ef1c97615e6e5a1c1c0e67837eb05d1a509950f0eccb72bf5a8710edd1cff009934fb691506b8bacb1c45a55d4344c4b257a06982b376692c94e4cb1ae873dd0773ec6aee18084e73289ae8d79fd47e3f8d7b91c43eef2e0f41b9fe4bc42ba3761345d32bb40acd09785cbf23e00ee988abd9cc6e608838dc3c4bf2bb1d932ae3b7b44ce0024a52f59832a4b039d2325933e12dc0207130ff758e0f7ecc1c6e3a818c987d3216bbac3179152eb0ca289e19ecb7c6ba568abef050c92de72f711dff7beda402c424478dd5ffc25f1a4144af55c310d3d8b1c901b910bfc3f +cf1f555d881c01ee64e25c23c13d01de490d5e932c496bfff6b355a40a61bb6174e6a3d31b317fb78c5307f849ef97d7c366ead0b1659bf7670f3b69c074c9f99b869e95e6c800d1c6c8cdcae56aa8aa18484061515c6b05595359500ed9929a2a3a32bc7912547c23318227d7bbd6d54b1835ef705c53ceb67eb7f897153d38880293b228a567688bde47d615cfa6ec9b495ef7656480a5d6410f81b1e907bc2080c65d684d9ca143a5212d87c8e9e2dfe6252c8921c802fa53b23345c590e220bcd2dd0a17f2e52488ce2a408d694ba663c95b4689ad55d2c5976ee7157ea2fc31844432238234e09e5ea98c52b529dbb5ceaeacf9a04e536d3a27444f905f +c5f773a07063f7b79d06546b73d808baeea9bd726a36d2411bfb0e03a8808cd4a06b4b1ec2c497964d2e080878b813bd261451ffc67233becff6a4c4b83b10c6459cb6f7948193d88aa898a6908c93efb1bbfbadc9560a2b88d281f25a714248300ab435ba6e553d4dd43421e3fcd81fcdd1a9303c22184455fc0d8063af02e08f4e8aff793fcd2cd8bb7461d8a8868184c3bb2b913254cc3ebf7864cae77c357d31e9b222c627271fcc9c73544300cd73a2161a7176f10a5440d6aa73d992f5c72702966eecadf2df925794d8f4877654a11b7fac28fa8d94fb03170c17929beff8017378ba6b80536343c9cd07278edde96361dc2990ddea0b6b73f91d40c7 +ea4c1f14ded90e0ed6c886fa10f7cbd84a4cbdebc98ad3f99b042aaa583e6287e908741d2c461079747d6ab4a6de591d7f30f00878fc7296565e7ca8e4994e5f7adbc86b35c9b80fef3a5a29aa99f750ab4a30710096a9ea66ab5e09149b9eda0f57e608bf74eca7ab25c73f63dcc162bab92935f243d28bc3b1662e07dbe30ef94805eebd01c6a22b3bb47ab01c5456e54ec5e837be79b0845c91c154736334d404ed0e77b59f1f6ab0c84d9dc10d4d5abda3605bac8a77446077af0e35c8583b165fb047502652b5cc5d703df1797555b2cf8573908ed2901db696873fd51e1a0642dbec66f550c75459d1a9a06ba2c89d95dd12d591582a9d4e0d2dd89bdf +eb2d4eb4d77bc0a617af82b834b51f0a8450e7d60ed5bed0d371b067c8a08a7279b05679680c28e645f02e081da2e512a103212840408f249588e2600f09ae543f5b1052e44bbb59d6255ef1b8f2c174305069a98de095e0184c5bdea7f2c29efa49b419e87e2bba2ba34c0f5491eef877f766bc1bd413be3966412806afea8f18b505561d49e72936dc8888c31c71075d7be0b7ab4be25f725194b6425a363fe76ae4b3b03016ef29c679c730b24a7a898d2633de586d623602e19cd281437ef2acc84ea154ca66fc5873be9f1b56b311ccc08017b960137dc9b60ac16eb98539040b3be874a4f195c9eb0d3a7ea128073b85538f611626584c00fcf80e8417 +c3f6c18cb472d3af48cab766cc61e5af8d59e26b18b8ccaf15c6149987b560112b78e2be5e170b2e48d6206327df5b1a8a81baafcc87f0e8038a295df9f4e591a923067880b595bdf6021873857ca93d348a8731df353bb16f253161e99e280d8da972fd660d7af8b4ace80d521834fefecd182323ceca79d2e0d6badfde1a2e53b3d66fce350ffc8c7aeb6da8f64ec628407a14848787c2e63e7c896a6ee298fcdf6352b63f7e8c9899abcf09d10c455bc081c2b70a7dbebd12bc283fb4b1a2184f606c5eb11ffdd246a3b8d5ab50f1b6ed7f14f02046a82a92eb51f809bda94a606e3fefbb89cdcac0cf12ac94b68b522e77423a9ccdd6aaf130ba8589e24f +cc431c3211e5fdfa48e4e1364b6c6db035f07f99c495869e6d467bba1777ad1fe5e3f0d2a3632a2bfaae5e1ead65b4ac6387d734b8248d581fc29c024ac6070a398c3327d5e7d01ab2900257f0967bd76ac2b2772391ef99fbece95ec6f765075449f10fc7363c1f524e5bfb246c5a45182584da3108efb603bc9544e5e14d3272c164e1bc006f7ddf509d79e69e46ad79473a059dbca04dff94acff4b3576a62581c0ee914b318170b681ce90e2f4ffb07e177dd6e94c72f2f5827ebc5e7fd8f1c05deb3553d7af7f0b5415e53bd89ec9a820152dfb41d66d8df6456395192b90c99ac1591699aec1aef05afe4843b0ae0ccc2b20d88ad3436904dbe0059d47 +d34a7e4562cd5e88c061deae312259660a26a1f5c32220cca0316bf7b058fb7d91bc3a6a97ae5914e18d896ebc1630c8cd18c4674a5860dea3a6f5fdc46070052bec64272c11d19e6e5a24ca897da6136c97f75bbc3d30107f03a7aed2cee3d59aa50b3e22a64146586db14262065f8e1f4eaa29fc64cf050eb9fc73314e4649d2a74f7e6721240bac89c9a167dc2b693cd80fa996db8fa0b4dc022344ba27de414b5b5852c1425a866081f62314644443b3372eaf6472c16a72fc5e112b357df7e9851c6e65caa76403a625ac8b5c06c37062004a15cadf6fd0a5cc4a2f8a44e6cc1f52c3b9c3406e0bb0a19a1bdad28c316bca130d08599914ee740dba9af7 +d2818535b5e460bf1c8cbc702a05711b2c478de74edd4a5d7d430b99ae4bf837e60ac7b9595b9c34448575b03d2cb0b5c60cf2e30bc25d22cdefea79b9bdc46f9cb5004a000ffba04de34d5c7fdedb1e030d4df85b40c565f736a7011acf0f158afab37015e0ce75f6038c34702756356d5ef79cfcd93079aab7eccc29d9d346f1ad32e352ad3816e983ac0c22fea51a5f0f166c8eebeba4be2c502c04aa817252936315d4d4c77a73714e6b4b07b66acc9c5c820b73c06bd578f817bb5b4bab27877a86324b98e86d717deb3071c4ce016f815653330a427d2fb02de9f2f76ae1e8eeee5282a3fdaba3795452cdf1549e4b767cc5e97ec1aaf75e1214000027 +fcf0c698a36f23ed4ee2120c62e957302a4bb15d4b59ca96e1e19e01313ecea14d5d67f59a190676224f02d75006c533bd5fae170ea7923bab3f59a55d1539c7822e820fbd385dfec9ff1bb710b17c45bb346fbfa9b352a916f8ae654de843e6954ce31efe05e5f5c82bd55b7ae35a8abcbfdd99879f6232fc23b3b555003faaf5c72873cc44b3fe62665362f3f7564739e8ee3ab1333fe96cd538c8454082c831ca3e5c9e65e5ca8be57fc06bff969ea4271504c0fdeefed5880a93cfdffa9d852b67902b70af7fb15f130b44602da80c957de8d639ee78eddf279a0f10c3adeb2593d6799b0196a1fe82761122044cc5c37850539f44911a0b92422da4519f +e9a82017a0d92179fa285c7b998b173dab2fcf592dc1e5a1f3a2d90ae0a8c331d501825c95ff296cce39f286864000345732039000fab935251bc098ddfd3980018e2909da23a4c13d61f6448f2a5da039fa6846d8e2ebebaa9828c9b7613c56e426e4d8ebd77e0d355f4498d7bb63141279d8c40f2479681185e92ff0cec70755894e7737330b9a12d581fa3ab4efc88b52cffb45f1adb2243086aaac282b4f81db93a49935d50a391e5363f6d1959829cf0a25de82419e0c984a85b44c728192b8387bfef0f96d4f5e45263773721da1bae8a45b14c9efd49ae22268b3f6677358ff8e54fafde93e096e12e3b814c62a4f15cd4831cff5072141079eb6f08f +cf2af515d2c60f1666c25a32fb2b52190b37a17512af4e3b0fa206f6dac3184f082148f46cb7f0521ba4aafeaaa994aae39e0b197092208b31d60cbe4bc62107730a0bed98cd1ae2c502401fca7aef937dc8fda91d30d94d370d6367a9377a4162a8d51b5a7fc96115ad30e71d62e59ab3ae3207254755c4008778371de4b26e620f9691d14f360763ffad9f37af36df31e40c084357272344466db57c4b18dc65a13ca3a5316dea4b3b9f1a89f2176a8cca8682ea315ea3f4ffe94148df570c0a4f0f5d4f6702973dda7e1c6d0b8c6b0339fd9f7def3e84ead142c4d5cd8a7e2c088eeccbc9ca9139f432d02af1bff2fd15d57423a259d679d4cbed22bd26b7 +e3f0d0716cad1adf5ef8ad3f6497fef18bcfecaf1af5aedb76d31be82c1409f3e68c3998f3da1c8db8e31f12161c60fba1f90216e3972c76bd1cc33f099934f98617875e8d5d77af2220b37a2b755c22fef4427399bea6c032882169fe77392f8e18e463060af9277a82d7df96795f7b358afebf21ac6b32ce668c35c131c0bfe5c2e944976841a6ecdeb5f7b9cef180b9fc0cc74ac0e4e80104496646721614d2e211d8ef9f3b56f2357f42de7aee933ce9e89c509e21c46c3304ccde518f666040a372899164289ec475ccbcfe66a156ea70d935ccb019cb1ccca2b923e598dfa14e263c447f297a3f8cd3f47493829d4dfe14d36ffd8a3de895f162c091a7 +c9b803ce27dc97d425308282693be6e257bd3f8213182259e46a9ab08137e4ca3b0a1e1c3acfa79384abc05ffdcc13655c0a6121100883ac549c18be997f32f57f2ea8133fb9d6a8272b91e25027cf06fcffbb18b6f3cd6a3291c6a7eb0756063dd27a37426a1e56006fa9b5a26e8b81ea112a0859c38e809cf3010581b810ff6a5d2ddc1c8af72ab1bdc188f53a01111d9e28ce2a516250728caba37aa5d97bcbba4ad5c766fa23df9c1b073e2e2f97a5309508c1966a1a0733f6621bef0af495fcc62a8578a9a4f58cc81874cd30001a7bda2a6314060996a6fed58b6dcccbe81647b53b949c486f1bc6ae473bf48d9af77e4f59483e38c059a22644e2b1bf +deff0a636a739c1445c2f79f8925c3102339fbbf186eb364669593e8c03a23ff4d440278d070df4fe7b4080ed81bc334566123bcd07acaaf1f285e489e338d00005bf27ac6982ac291d88c6622a75ac27cb510cecacc8b92e4675b8f616161acfdac8517be0d523ac67b5f1692ce90299ce8693500f191cb7ea6eaf64397feaa82d5cb17c258f55b435ff805d11ca62998cab0821d7e8f6d3c33e8a0dd3425be6739387e378a5232ed7e1bb42cc75a968afc158a5a630b1b6b808850c11e56881eb606b3e283a492d13935d7de22032ac123142f520f6ac8fd275f2c9be2f3c968a19f4caece141a022ec45c3928d23aa257e527a4be3a14c7dfdf614222fc4f +f54d4877288f30839ba7702ea3ae8594bf03db16e7d4c085b7a58fa3dc1c0ed47c9cd9e5b0c7f2fd195a330d806a40859e81cc43b10bd65425c7565cb9bd26fd1ef7ecf38d186ed8f8cefd65cb443c09240930652efa477f938cccd8abe5be3fb3a67ee142147fa8dfd42af08f7ccb8510708d49275c8cce5109473bf784584c6829f69be02c9a00d770c8f62077ae61e3ff936660b9d6a239b0f81f72df7a4829b80fdcb6fef01b9ccee5f6d53ccd954d30f2b6285a46a09b91be788c09fdb7e703ddaa1dbfe03819f0604306ff9d127efc895996e0ad84a2d849f223aa71ef3484a17ec7a5da4072d0fa9bdec8a98378b89f79ff884038b90be41128b3dfd7 +cb2303526c32fb1e71de5967ffca542038eec2a7777dc188ab0ee6415e72e8857bb8b6e473c8c5bd636671f0dd065d87e72f275d250a7f0dd97e5334b1bc1fd48e50e76bf6cfa5f59123ff04eb878f8e03988354ca6f2d54093bae67a8d594e262856c34bdf9ad2c3519e864fca286c6341cb2df42af93bf9cbc7415aab3caa8dc98238d73e0c6af6dde08561955b785d15c51ce2d1f46d0cc9a43a23609ce7314ae3a0d7dd38f00640b7826a1d8a07f09163e0da338f8ac8f3ebc8631f3def148fbb08ca1a91370bbdfbb40b0a88825dc9140649b1f33b04c92dbaf38565818b5fa91e492cc8da10297413eb934d5609375a2f4188b9c232d7dc7e5eebba8c7 +c333bab6306611e956808af51f4dd5e3453eb1eda9179556da9e206da1189f901e3f634a2f6459a7749c540b442559cd990fe8da634a8e36dc73d52905b60ca39a29b881db38ff341c2a3af03c404ebb1a165541907bb1f0291059fc34fbe607119a44d02a6835a389f663ca792637004692796791228f793ef479e85be42ec7bc32e433c4e8043c7d95fb9a2af136a7b32b4a0cdd355dcd18143a8f08d9e5772ec687f89a9b4301f76ae8bd287429d5bd542e7ef16d794c9a083e305380f4892a9a40496fc2e2f6ea5cb5a5230913524a537ef7348cc6acc34b6035b978894ccba095e646a175a5659a4704c02e642d59030f302a6b27f5b260854a9a446877 +debf133bcc1ba55ccecb05bb0f5d4d8e0420bdb104874c895a1c1f4e6c61088d7bdef589ae713df5fa7a4ec0d41dfa94f7ba042f7de3ce656be635e4df420e40760f2d062111feb66861fb1c890f99706d73dd651584bd35ea134f20012ef0e3e4d6cf399a7b154c4ed0d3fc11691bd18c88392e2e7e4406e02426ed5f5e46730f5d7bb20841e17275aced7428ba3bdb4c02cf0a84d9493246cb39454512a9fa000b3c9c564ef9a9a3b2155c452f55f42b25ae8952bf0f99fde31b0ae4cc4f2086033378754b0a87112bf18d899d678b108e52dbb8d773c391e15cc9da38cb01114eff83c0cdf16fe550f0b8b3dddaab33b6612c461c72ccfdde1785a40e2b7f +ecb3f74c948e2083621d3dcb5e754f4a61dbbcb7423cfb1e23c8f31e2f952f258558086148898332ca0245d341734d1962434ccc2e7172173a5e639f41d69105b5cab72bfc6fa3f50795c6d81fb5c540d8e671a0216179b83292339627a4a1f07a469583e87a0a20df2b41aef360824c3ea5afa84cc6128fbb8b9234b33dd30817fa5b61f0bb0863d71c1512ebf47a97d33d44d551a5a76397dbb9196afc467e1e1b6d38fbbb6b834ed202d55f76b43f67059adff8b4c96bd554c06fc2d913bbda3420cea817acf471ffc06893cddef4b871a34bde2f942b24cfe86a24d49b27d4f3329a66bd90bba4fd6b72e6927a4b21fab19f5ae66d2f1baa4406c22865e7 +ed50d4be0c4301c88b625b510a1236cfbf8063066ff487f9230d776bf50f3428b7986bb03f639a062efc5e828e5d6105697f5b410e364d8dffc4f454afab5d6f81dda4ca4a58ab4f94adb1b5d5300f020945d702984f1e0c35c7f7aaf8c22ed275c84c93b206199758e3071afcd9709c51c672be9abb37022470e64e2a28703afcf6a8407b12f01485627d7a95006e5fdb43141cff8780b70010eea3a13812c7b019331736f8cc2736ec7f69888ec7cde3cfb934ccf362aeb29e3d9a593d65e3e85c3da2491cb5d9f5f2b47e9c021f6a300b9cff0a9eeec8e1b0656ac064a0f65b1df14093f94ecc7fa61e373331785024c150296a351280ca43312412d1fa7f +ce3e2fcf2422fb1af8da8591a0c518d4414a4ccf1f562d9f14fdbf53831f56bf4b003aaa58841697507be4f472797f16821a102edc56c7bf329a84f6869ed693fd66dcd8d4e200f3a2ccc491fd7f4193b3d3309d11642416ce87f62db969ee990f86f4445d980812168bc745d9f55b6377fc91fc00278b6720b68489ca4738ce8c6cb0e088fbe6f7ea25f2ec9a8a8e9095708a100728e3e7db9f873dafe54f4985f98892641c7cafc47b8aea0dde03b6770a135dd4dbf1b5845b232a1b73dc0a214c4703fadd4e8d70d7445b24236ee3f4b23657985517bc7906cbad13dcc669791a5fa7400e2a530e1f579e2704c764485f35d62eed21e76f14f46d8725a3b7 +ebfb82ec6554d90cac29582a0589fe189c82373e27a74a30c0501393de4888765449023fdb33dcd34892805b1dfb91941a16866e7430882ee0e8b8f0f9314a2baad4ac3e206e12ce679db2989e1de48f4c252694e438b727b5ecef9371bdbebff3f2b3d81d0d347b3aaaaaf50973357377b942dbace106c92fc7f4d91cb9fe04324016489f088e48386f67b9bb95db5149277751c4b1fba6d35a4c7601d49aeba2529c542fc6ae6ddde67de05eee474733ed9b73010afc3d8c21d99e54272bfc55947bfbf460c0296ba2fa5f48c4ec208f51a57898cd2160917cde21a7fa08a30dee4c39c9a06e41221c8c73c609c0736dd1e3d926d4305ac5df69dc1045d6c7 +fc4ad2f536bcea325ff71507e178f37b3da0fa2f59b8728e0ca95982fbfa9b7b4249032821566be44d6e92d69af052871b722894eb28fa83bf390dd66519ec5337b2b30a384bcaff88c73524dd754436e015b1dd77ec23278cc3ea6e883a3abd6d736674e08c321f5fc33aea37dc6c78609224eb4905d97b6e0fc8d92f92e126de51f71482383b689de96327e2b86168366a9946b12f1a647d13aae7ec657916dffcb7399139759486c7a225456c891c6b6a431a70b44d41fe086e23288110f89ec8ea21ae4126385b1c307787693896e238cacb64c47d6df18670021ec6e35b068174d639932385ad91a4a0c53ed4d547bec63e21c719d482f23a9c03a32e9f +c14a35a8e16cc47627674a5b0f8de6e3f3ae81b29ea2a69d659080cf2b00213e6ef5c3f4f005fc32fa9ad19b1f291111ab33e4d0f59bf01d4265dfab76a5c6a811aabacf3dada816e4ba392085d3eb0d877aca5d34b9388c329c3acb9929c0cd9e2bc6f1fe5f5c362f5b7e46bc75802304706db6652541443b9e6f9cab72b079ae09a4e4e27b244d00f3d78761ca0bc518cb9a53cd0121e041b1bf68448593c0e576a8624fd312530e71558ec780ecb7f145dfd0dad27d4aa3ca49024c66ea0f890dc39c46da120c684bdddd0927eaecebb5e445e991735e9b7f991c4732375ad8d2ab8891ae79e641be145515ddafaa3898707a7b55c5efbea5e29802b7ca9f +f38b65f0bdf03b772a276142f7ef10d1cb6baa500d8cb04421a2a5dbe7f3090a8181b502320e930e45d2c32777497a705a75532da5a6a28dafcbf71b6f393dd8850014cdd76918770a4e694a9663f18f353a3d260fefffc9ee8715b18dd0e04c59f19f05933ac0a5243dc523a7128094c5288254fbc453afa8429ea03e21bd226928b79bc31ad81d583065bc90cc01d504be3976e8cd16d51549d5b168efece99c39bd54933e44463cba40f8d518800b4d1e62bcde437b48d69c68a3a2b0a990c66e098ac82eb9a1649a7e621dc604ed0e2e833baee7c95a2cf65eef507d35c651b8313a45273e2961343d2f0dc704d19b0f2bec486e8af2749fa640640610c7 +d109f8c298b2000a3eb0c658ad1736d632ba237ce2484cb53d2568c7a4235a02e03f67f41356dc4675b5af02abf2c8c4d12c28db3fb90ea5aa3b85d8c1526d262320814119cca0d3fb2526b2079b05409d52ca5eafed5fc3f4f207ee3eeb428d7852b841fd655fe3eea199875e1aee170a59636e92c565222af2496543b1ade512b313039ece0311668ac556638c5e3e464284235a7674b47810be7182115a0e3b78d228cd3e854f6de623193b7d72e8abdd1d911cb36b76860189f5e23623b361744390db6c5e00cd3c438ee6142865740103eea3d70936c515e04e97db5e217d06dd77219e640a7603622a96cb709eac6a902e4cebe6cc1bf8ad52d73714ff +c92fc2753ed65ec9cc04a62aba70cf6a5d185e15d3e2709deac8dae227868f415c4cfa0ad836edf99bf7766c4ed66f42e5047f6b3bce37f7a96cb6550fed5f518512697b73c18436b453bf4f06160aa0bf6f60324b2ec28ca7bd54a4e1e01b00a9f7a6215ef521f7a70c7ed455c002b850170ab07855a7194926a7520f59f03cc30d4684da085346a9a68d70f64e4b3df18be89cfc4f335cfccfa9e99ca894980630ce87ac31f39ea5f219981abc33872a5c601320f805a99b203b369fbc25b0e2ea7fcc9d4389e52197414aa5ec40955485cc92cdd3137449953dffb688e4aaafb41121eb898490d56c0d79878e2c36ee29058b06c6b9145fcc79dd3ebe057f +c3d54954fab5ad2f42c7c87add0b421a59b76b592ff10e70bab253b767e9355b8dbb26161c84243ada6be25cc61baf7333c774ea5fac838f474d3b76be757a00fde3ec861c930dd5c2de1d254a395b67d99c8e1ebf0cac228eda5ad1edcf4babde38f9ae539a8588f8f06aeedac556ee06320c15d297e224bba9c766729f974004abb2e66997126824bbea24f9191e0d7b72732840be48c0bc5039c1d795f214a916bb330d7bbd7145ea662dd56db104b50ff6fb306d2ca8fc267004a3002db84e951a0a3a9749296ec75dd3a1f44b9de5874ea8df7d37953477014cf88a886cbe2b8bf875d43c0e87efab6844001f54964e25da1bf06e1f33f89ad277189c4f +d7a72ac6f20f2d87ff12689063133c0a2e058ed7c9cc551dc4a86706f49fc325e65c1a5eedafb2a7627af09e520655552048fe10553d66c65f141abbf3451993bfb621eafa3b78cdb966591f805570870a8a8e8f24dc753690b5292cdb088e6f71d8dad446a4a9e03cbb4af64321b88ed3ee7e065b251e59250279ddefeb6655db56ecb9c791b15d8294ba5603b93db4806757d00c4a7da7bbad649c17d5c6887d4dfc34133623eec3f755cdf08b6c7d4206103a966f7bc7e5f2051d86625434b1a1acd0bb1ccc8a9f0442bc1e567ba36a9abdc4b1f58efd1181be4363214ba9c9a516f6de55c65cbda05f37714e9c18393c84c219c64767b077184c8149b4c7 +ef7fddcbec81302130c312fa1001f0a6732be4e4324fd0228cdfff4fc916d6fc729a19ccdaebdbc176c9ac64729d7d0a1068289a3353930552bc176273cdbac6ee6fc639b42bc9b23687e95041c3b923c672a1afc22354128829c73415f77489fa6f4d4eca668255134f05c2fdd0a4a7b91b767f75c537a897b74d362f015e8d0061eabb3d734f0be7d1094f40b974f00e1ea6886152c0cc76df251eeb106824f9911c2ef5367eb8dbe7fbab02577fc57fee8e434f4b3a7ffa430c7bdee87f8b8d0b9bd23d5381be84daae49ace4810516f8ee638f27a8a35c9102cd2692d2e463f405af2c3f282b401e7838336cf769ca14010d4d8bf03f7502986d4845d2af +efdb01c506bc9bf249043ab881ac997dd81da8d70b0b1f01171ee6e6f87dee3d7eca2c99197970ee7fae89e48ac388cb4ac8a650ae3a425da46b52576921e9238e870a190f5a0ee8781e92e2162a7ec82854702bae0207e97cc6d3705ab046ddfbbf3f88785ff027e7f9a3a2475c19bb208b2f77cdbbc175bd077bc74fb7a3c3a2b3402ed729cf3c1edc0cdfcd1da0e76cc3ec1332317d17b478bada76ecb35c3ed1a365f96726d9fcac61aaefadbb1e6ca2f41177ff43d4cd444051899d46e79f76fc0029e236e6292da9748724f827c4d0cea8629b0c20ee7fc528e29ea4d43762b9559c8dc3720fb0681b5f9a13bc98cbda9268443fb67b52a6636c84e99f +c094ed4b455464cda1eada8d63ace6ba96eae81551b7805604085c78ecf337990ed1e6b2e74899fd283c27bb8c59c21849947a76256879b7d6cdeba913934bf24a0dee4431e12cb6f13babc04ab4022532f683e8c89cb32e5ecfc6ac816401e8c8c7163051f9696b030df1c37b543899d2a240b495795e63e13c0cd53a7b243cf61308c67a9e3bf3df12dab4dea4ddf2c1409b70db999d3030b01fe4bc45d33e9152aab65f9fffe5ce4ddb14258e50bba0cc9d166528dbe214637f4335eb02567941df3cc78b86efabce27a75888f67cce15a92e52e8333ff3773bfbcc4251df239dd2f70af1d05135f847c55c6ad3dc2f8fafdd36a8e9a3476a8fecdb7e1217 +cacb07431cedd257a85aea1d0a7f1e977e4c287a993901c25480040293df6cdbc032e174efb1b6abd65c367e5687f2b90564a67cf797feb24a8eb57a9747f8ac686a9b1d636cc975efd8e9b2af1e5619aa74c7a8afde4bbca106b4b0a1128f861bde5b089f28085c20e44156a92b0d9aefea275463aa0b065130af0496f3acb86a2345218897b415062a74a9526abaf62dfefd53faa5eb38a2c1bbb3d0d706d559771a5fb136d67ad883b782b8fc66a0eb3288fa930ee7bfc438eb8bb879d18a80b6eec7dc0845dd4a17a18246aa9c730284af94ae38e5feb166a6d2d0e3c9c02818f37501198f0782dcab22efd90bb10145f8bc60c35dd274835dce10bb8acf +e0b6f9668acb089b19d71e4bf577c1edb55a6b7e575e7aea177e5079bc230c8b5bfd127d188f983ecba5c621b20d55d81c34aa44d57822eb9c1c869343f37453f0f496fe29de6c25a26f560f08ef834f00c85f188b9ed58e5025c4c8f26e956a6ccca2c155af934862db0f37bc9336f2302ce56513f72b99ccb538bdb4b12db39c007889f70bf92be6c0b10b2c205168f6e7fee8583bf6dea62b78963bd0f03fcc91d1e6744364ef7e94b5610b836e75e7a9d37062bcf8f11f04e6dfcbe72f794c818bb3d2782a5e223bc0dc64b22792082c53c1a964b916b8436fb6108903315b28dbcce8c3ef26848b2f5dcf75365f34e5052ac3775b79e6926b655e0bfaa7 +f1e81651b04c24720b443254b8f3a636338976aceb72bc04aa61277b7b0d644604416efbadd0c063b3c0ff4a4b248c2c998a7e45bbb4abd8170aba68eb499763f7d8fe7973388170037803ca1772bedb6c0b4ebb7ddf95714f33be27ce2f75145c5752dda58078cf5c46797ebb9ab2422fa9dc4429744e6ede96eaf540f74d65c18417a815d028775d3e1cdcbca95d5ab9ffbf38bc921ee873143545eff9e016fb87538ce7455c191e041ae17cd5e36344d965a61b800b769da95864b67e0df992f3eb5cd650eee2164d906618987ef9b11b4c8df9a5cbf51693c657b270a4a490d2a7e23bff7862e808e2c9b37f84927bf2a50adc7bb994035ac532dcf0dc27 +fb5072bdec456452c3c631e927d4165e0358885574389d00ca48d825a8263bfa608630b0c22d348ab15ba839df50141e320dc5fb932ad3897b99687a6193d3423d4ad3a4a031eb2e1fb89904151bb9a2e2504713816b950a365f3886776d8fe52aa8808696e68f8a127ab388be12c095befbb150e6b8028e070f117b06a245544753048f3bc8971e6cf0906cd2f2f03567548933a957fa9927fc563983230a8e0cb26778cf94ae7ca0a2fa094f2ed88eb2ddad8ef04441b52b892ccbc3e8c3d804f5f6b621336f0e77bc5bd0c5b54b72b6a92fd52eb7159abd2c6f924cd547dc7e28d9bcbe3ac1e09d3927be23cec863436067000e7e867b1b3ac44b680aea2f +d6507ab76045caed158b1a340a8f43833ff9d82f112d0f48d594c305ff106df44a2a0561d201bd5e62367c288b9a6750802d065ec277208efe9db2fad5f2a9137a32d4ba5330cb60036952ba4e86199d604880007e0ecdbd39936379c299629d0238619e7d4ce1ff2831b7ab7b53035f0d5be377aa682f760f4e9cf38261a3e008e3afa6608062473fde06eea5bafba297c44c1e87aa4d4ed9279c81f133fe61ba3a86eab3c657e265bef0a5530876f9b5a2144ef11a6973a1115edcdd820cceba463357221fe93342c3df1b93faa56450a8d9dd02e64307effca53cecaadafb08dc95e8e3606a2bb8a154012e394df5a9808fc7b12c5a97f3aae6c5cb6fd3ff +d2d9a17db4d26ed7feb2092c1950b585aa1e41ba9d583753e1999c5c414df6d439b80737d219dd71d2b04dad25900c150eb4bf7fec8d1979be7d03424ab32c523ebe3b81d06f8f49182a7112a85894a06a50f5b9d0334ca13c751e1fe6267f51bd91c798ea0c7ef9099041297a036361588a051f884741889597ace2d6cdcb4e8749390da769034ff007ba5a435f78634765880376e144ee7f92f7dd0b5723213960586fa461b1c6d4fa47f4b57fa67c3951bc925acf33e18e43d1909bad1f7c56835df7e93492ad14c31af2d6bae1cf9543d7ae4b07474fedddb3ca40546ecb5560b9964b7275c4cdfd3162289ed101e0744d2dbc54d943f166bb70d27ae3c7 +ebee0726b018c0c51c7620df84427f0553e2ecdc5d34cabdce2ddf1566ae8131b5b2acdb97e7112da650aa8fa40b7aa4019b3c9d7713b889e9b7818270a93a60b63833da2edcf74ea8b6c76faf6edf4b5cce961553735354db183aa92f88370c86069f3c1608c92411866bd3e1b07bf220f183ee88c9f6dd3e25b9f6ca94d911f3ed82b11b4f2efff145b2286d8dd19abb1541c6e06ebf7f0c1be69e1676b434cf4565569acf2f634439d1e442598184d0b937be7f09f6ed3c3c1793975a30cfb5101607443aeeb2a2c287b20af944fd9b30d99667d39666010a04b6ef2fd8549bf2dd4928a063fc86f5a9485a1d88badb518ce699c7bd7181a0f5d52fa80c9f +c4f7bddbb3f06688c4c5256cb20119f6d472dd0c3cc38e796c6871b6e5d72622bc114bdecb2174716f4c9adcd36336ccfc7155bae70931167de7b63399965ae4bd80e50d91c9dcbc06672ab26130bd917a97137c2d61fee5efc810268cb1d0a71a2c404f1355425056993f847709c918d8961be12fcda1e7bf779d618d5fae7ed1059af1daeb525e5de55b11a7760e15aa4a7eb03971ef37618485f31238d098d0b9a7d67bac4e9334c80f5fd00bfc37d3c4658150510855b77bdab15a053c18287ecb310ebee022bfc279d37ebd2db358d91553a30d1b10cf2d05eefd5e1f5e7bc1ef3b5d6639a451b0c103eaa745389f20ba7252d1dc744888815d7ce0ac3f +db01516d590c615ab132d859c3b20fa619a895310f284725c598dc819495f1ddb4a552ccc6ef8553e5fd7566627c4fd73204dc442cf247c24b8f0a95d9c7bc37582849a218afd7aa7575ed8b12704146447b691bed53603c975c1fa609f63c2961d8806dde48224c40bad02c9685c23748ce3f49ca98270333459b56610eb95f6beb546e9f7b9cea820a2e137ebbadfa6014d17b0b8b5dd1aff5a3a06ffb66e97f744a398397662036822397a3f0e3b11abe02bfafe4c053d1c623200d757129fec31ebc81cf853c20bfb5428ac55e28575fd241b33156f5bf6235e81f66ae6cbbf0b94956d8fcc45998d44188bb97ce2c88818289f9d3e9d003af56dc39cb27 +f017eda1e2bdad2dbc50ae6e553aa62a8d0dbccd62554e93d960463b01eedb068a04a1eecf22dde39599e04724db041cf3abb39b2a6886b35a064cfbcb8c8112c6321a4d51e1b2f62c4784167084e12a1556347ff6a68317974a26c14285ed6aab40cb955cb82bdabcc5b8a4df72fb659c6db2eca2f2b4453b2ba66f2aab7a60d6ff38ab6ae271c9d34d0f286de6fdb5cb3bc9d739fcd73dd67af8a5e771fadc5546adbad56922099368e5472fcef00a7345739508d3277cd8469e2d871a1d1b5f37a73b0cf68e7d3b89e7e782bf19301beea0a2764ea9a5efca18feea0963de634f66d3c21cd03b9718110b36f95f06b10420e27725673f3d1aea3055c37917 +f636aaa8bce05f42943cdc2041f7fe91987bea9fb152c2ce0a2ee05180350541c18a35f6454d1f4a36bf5053bd442d11fb12a875aadf96ccd72e0fe0ad8de59264742dc52cd974d5d728c314ebda9ed27ca4996483a59661a9b527c2e568a9aef6fca17d4d9fd5e86f87ae1ce251c5a591ef7ad09b1abeeeecdd7f607d18b52eeea4f8cdbf088ae6a58c700fab75a42098c329c719380fd06af5a330d4050802a42b97e512d66872295d7fc83f29ac6db4693b20e069412b41604622c54dad2fa9d6acff1601b2ce13c7092095c7b33326027619ed38cc36138f8fa8104c06ff5720f1bbad5b2d23eaebf053169c83cf7c326521aa1abb79da4ef86662383557 +e2494bb4c89e2ce1eb80dd3746583f27c5234129faf4c98fa85ec4ce39ac58ab5672a9a7c7f6089e35b0f9ea8599556842528899a476c06dd76460181f3ae9bb48c1f0c52fbebdb8499ed19a335d18abee8565df853cf1d6ffb058e3892963f671f7e0097eef462ff2ea6e2126a3a9f7e21fddc34be28c4498503273e85f954ddded2fd831ae4ea6eb1fde5a4341f8ceca22ac218e3f87f35a493841bd25a889a576ded093e425a084e24e54d19e37aae352f347e7f44b5e0f43080b13d435022c4d375511053092fd1cda4e4707868008c843f10362f01251881c5fee3f5ce574174eb70595bf4a3263d0e3fafd7d6e08f59fe860b5b91ec54b0cb330d1aec7 +e97be7bfa16b8fc119314fbe60e075b5a2d6a845688fe1f16ca019f46e7eabde5aadb14041100a67d7d05c72cca1164d0a4ef28c277494403030ea1880788f4a277a9d5e775270e6da9b5af9f472c244b1a51925f9f2ab03c32d329f1598f714f4fa48180e5a3251252081b3e2c25c007aea04c5f243e7b26f180656ca853b7a0d677d9fd01593f872be85ee924369df736a80fef457b7e2cb26d9a45b284aefb23fba1eb1cdac26f97d14290afe541809e6ed494d364407744e76a214c4093a24cdd24a12e217f79e3c3121968507c14ad3e3857f7ee0d4325a50a7227db1e9ecbd785f5591327ab6ef771087a1771cc2d935b8fca66469642e5df73a878c47 +d5f59dc2290f1dcd9a0d7db645f7242524e90386c2f7a3e9f4f6a7f70ac9e5526b59a05a2afac8993eaa01b9ad1a5c8bb27b8a6fecd8dac166c81a9a7a999d71c5bc3a9ed941e5762a185de3d8c787d73cbe1e8d6c82df3484e6a8f7a0e64cf4c7d342fbb54e9b9ee9b4f73524cd86cfbc2fbec26bfe04bab191020ba9e205d285d161a7bca44928ba69b4c82e51d241dfd6590fa2c9eee93899f863e4c97d0532a6b3bc604a10c459e18c2f5be1a29a0affd6059dcb2be6ab4098aff3b93c500592eb5720ec86f0c579ba898986ea32f56797f2a4e092fd5769cb58a97e3ede9b743c5a4ecc8427b70ae0869018bfc423fc84d154c44d1e65dc4be162d4eeff +cd819791e069325c438c0afb630e60249a5835b9b99c0f58656ca12e80b72524f6b78f7b658c0c5a614caece66c0f50da1f0e8234eff3365140d1f8b6781ecb051ce3e26612abf2eda905619cdf75e7d67216f27a424767e54b528794eadf81c8a879b8f28743e01e71c5b2c664a234b650fd045bcf513b32348a87960f04d8dce440f686eb08e6db87a6aab81506f3b24d8c6f636f2ecabb181a76a062c0afba4bdbf73f81394b5798867c415ea2b77bb174b9a6df1dae556b59b06094ce8ea95d14f4d256c40d245effbdb344bfc41c75946b47d4dc984ce9a2e0cf2d0bfcb796f65898193878553cd5f214d7e175446911e1469e98940bdd3837328824227 +e0fbbb27a57e6c6ea0998416178f137c7f9ada2cc29c2fb8a26ab6e9b8eead0c705630049ee406eba1e74a3ffa61f66cd19caef8aacc43dfa26f64fe1666b19712b07e0079c54d699c71175bfa0b24d9066655dbfe01bbc0d0b5d0221668e66e0442bfdf1895c9a6c669dcc1e3fbe50e3164ab2954b172cfc0e0657e244dcc37106081bb0cee3df6e9b6311041e7f2106592b6aa02bc675340158f1f706ac65f7788dc4b5585728fad1aad990742d22db36347653a271189880bf4b09c73921a3e28abb68e2e6262678418dd56b7a06f7749fab4de95d70beb66abe09408355d12da03f1257f853cec4596b6158ecd7033f4c7c6cbc4490c51cbd3382c3b76e7 +fa53927e08431ae492f812edd7c4ae1aa97b43e9289c79e7d9090ed60bf45856dbc5a50c0d28027bd92c28944b7e1717bf0a3f3a8d48b0119dc6bfd9657dff1d1b1703a97b6b32b05388f595eca18240f922e231d73805a9bbcf772870e29670d88c74eddf911d2f0391d82595a222343d6149bcaf94d4bd56ee9c23b1f03b110bb6f7dc9adefc0bc114844f21bad634c3945dc9827b3cf9861b3ba47605308aa0b7ae2dcd5ee8832e20c5b066974894802d7bb3c5814dc4b31ff7fb5d4dc5bb801fec8024d72283bbb294ca199035e61d7654e4f90112e7cb20fe71d49c92edb43aaab9d08b50af6a6b53406702fb5b54a5c6c08ecbdcdf65bf7b2a296c4867 +f30ceb117b4d02a0c1fc2a0cd8d3b59d389ce7a794cd3923bccbb9d1bf31cf249c8b42f559e286e3ba7ae1383e4adab03c384941ac06215294cebc6f3244a978915fd5784ed59e42d5688f3396f66165df7a88afb98e22e91a3dde1e1e8fcbf238cd9a4054a7f8ff2c041dc5b5eed183e85378b86f2af36fef745d6bb1cce065de58c4707edb27ed1eb761efb855092b633f60bc195746cdb9408ec854ac7e6ccd368ac1c81d82e33e380c3ffd0afdba6a1b59345fbae55256c681f9d280e9b321e9f316e4d370e4c36c7125209aa79aad3665853c909ede7b167b35827b4640ce1b242757eca7f19c188811edb2f75106d85c12d3c11bfaf60473759042e7d7 +fb470674bf25cb57ea3d7fdde93d79ebb3e88b1355f771ebff37e3b1e8f9754fa50033cb77f92a7b7f4adecdf7b8ef31ad66604d0fb0340cf710296c6f6b8eafdd2df9658123506f21ac8f81f2bd96ef50172ad5f743ce4a4df32ed101e7dd5d3c562eb68c7714e9a12af44c2d8a125777a2de535f66358e4081b22dbe10886b12bee30cf13b82d31424da2ef183ad29c5e239e5864f5e91b91445dbe42087fc4aff51f7f323cd5f6fae86012223ed86597bb30122fb3d1fd7dfcb99ea3bf1d1d0134bdb0c3687faec6b134ce086f1328a898a55420d557f8cc1e979d9d91c54f72c7d33d5c98b264d149b76676fd74a889bdfd3a325ef9d903a61bc90038baf +dde2d993cabe7e22976bbefc9a509d8cae36c5867dcd8596cb3a28bc621f7902cb1afe77858ca32f82f6a479746eeee2338e04a251e6478cba58a3dc402a08aaf061e8a3dad34685815657a3ab1604024a5972bafeeb0479f45d0a32ebab0a5f828b843073b91939c268a1d0e526f07fdd3f688bfc50a23ce59c561d6cea6adae4501a77513fc01492e13d6ec0776bc5768c8a466bc5e4169f3514643068fae1d5b92c61ddc550abf73d8667049d13454dea2dd4afd1c1044b5c84df8eac11f0c435d7cefd7befbe60a25f00400aa4a819559e86800e0da63301a575d656574e4ce1cc2919bfa596d2e70cf0062cdf2e4eae4bf693f9278faf378aed868a8d77 +f166a395a9c4e440dc118d68120915b1b0fd2ef9aa89987c2c297411d327123f0a939daff714e95381a4cf21d1d9766bc7675d0fbd47cfe27dcae4e64118164324d6594801c3e0e14a523a203d45c80a0575b57d0f991715071a48689f5c676e4c4f2511f375d29470c3d97dae73f4a81e68724e4a252d23b6e8ab9b607620036a0422828a8cf08caabcc8bf5d7c9c12d21fe754e85183ff880a05e8c041599f229dc14a77fb5ea66daf11e925149455ca649b77c396b87c30998bed90fa8694f35f1c329ecb2761ed6a77fa6850be837fc8df84b91cb785db1b938bcfe65b7540e6e6e92791b8f965f01026596ffe7f510b2e6a3415fda5c344c0977499a85f +feef3139c6eeb3294ca2dabc4b827542861d37f72a5934700b4ec67447036ef8406e87f253b494446f3333971a1229b7065082fd4d1dd95efa5ed6dc3d790bb3f9db615bb1a52661efb93502fb74c8351863609461999e578fdec58efbb5d405448315549bec620f0676487d16a3b12489f6110f698cacb77224b0b2d5ccb6a498bec64f704f6168798c2e75dd94e22e6a299a49db317848273b5b9d39b8750f65d1581af458958f957667dc744d497e78ba82966d476dc127bad13ef4ff9950dde72cecfc45ae8470fe20f36d06efcf002b51f46bd35f0dfed0b75cf9e09de59a2fe83305821509c1560254f523dbdc332e533ef066f192ae62f05227dd0f3f +cb865200a419e86653060efb819496f988bd07c389d4a75d2f043b04b525ae9079c3a52d6308c4bf2e993826887f8c71a475d1484c000b4f932c6b7119b42615ed33c85609a95402c8f3d4138bd4df01519542e5a90559e000f7cabc4ecdfdf33547779187f0429a2600f18b67f9913cf25bab5e5f24add481b38e9ab5cd32d883f88846410df208882be6e5fe18500d29bfc6a80a68ae16c5c4727220fb97cb7550bfb2117b002dfa0b53e3a44f48a3fc40f8eaf8b3cac15ba54262d9bec323e86199c7ab2087f8e447a6d40d3e4edf1ccb2b0b252544bc1aa475cc65d4d946b1dfb0079a7adc786aa513399dcb6a3c632670b17a190a640d5c60c75b160ad7 +cfc22e2a5ca1ee9d9faf66cc692c0367253ee7cceb3d2dfaab0d886ff6690061444af1846dc975c4554d9bccc73cedd1a4545e0f19c19c1e8f6af453bd7d9e3ccf5eb00e2b4d059d7a2b0ee148cb162953a16817c648e5f6dfbec316af94157b1a0d2cf0d01d26c3d94d54af4d43fd60a705e12bbc81d35b1363994300e43147f03b95a94c82f4a7bde2693784e8cdbdb2d2a93470fa77b3488eade14e3195881e5031d0848d02fadb0fd7d776ac05c2e65dc8b45b682a24677872cc73be17501720b64b1856b7b8e6aba27ca944d374921b5ec99fd000cb551574d3a4cd2ab5ce6179dbc0e63143793ade6b2f1e378dec95fdfb2d1a76728cb0d78bc5f70c37 +e9f065323a27f223b109020e280ea4e30eb80e1e83f6cd192306366771a010462c79976e15d9434365eec4e5d665787ce4a8a5a1624013bd08a98308f7013781a8ba43d680d533dbf96416c51bf5128365ebf3932be551441e66ff7d76364a00f540ba593c0a93b4cc79abfdfd2d7eef81e69817c597fe68384fe22c43309e2cddfa37dffd160258a1e729a8e81452a1bf9034be97118e9559ba4d05ca95e3b2bccc1cf334722e6827d0812b8e9a4c394e55b1501f0f8ced1b31a0ec519b128a5a41b1239f50905299d426bd842339b299e440862716029d16e9f6f1f172a4cdcd4df3e2a1036b1598c397582ed1557517ebd3468cf8fbe5f20b4f0e141888af +d26dc3463e7575a4d889dcd32533e81e6ddce573a61e19d7ac573af7325fab33c16d30b2931393719d9baad4d75ca6945eb55a45d566e8e79ae4dd90a1e0bbcae59e6c8dca92443f458b175a32cd8d66e74c02db8eff77dfa9cf3b915011c73b31fe5ca33311fd49407631cc4fb7e736788c0cd68eab02d6bfa0ff59c8e74140f56eb53fc9ee22e7cba1ddb59694bcc95b2aba3f3359d1245368c58863a4f653d3a040e917aa0fd9a637caf34958a2ae1abbb0ae09898378d81b9e2f86048958905bf0827f5445c31d1379b0f5f0a2b0498eb7d817033f230d2a84e28c3952174eb47e06584db6f7b6a2917fa4340f1d3100f86a0b63d469d1b5a6ad7504481f +eabf5b8aa92f2e3b718e004773b136cda4541ee35d3dcf55fc52cfbce1886da377b0076b8eb871f6f93975eca4a57742f89d1d1b82ff6b5dd0fc5da0f58c701cdb9b106ef519569ff1a7be7fd1777edc68ddbb6e5a8630636f6dff008871d6d00bfb455f57262d33b244f2d71b2874f2eaa5102ff0bb7d45b339bccdb4f70c0892a005a8f54dcf68356f7ee9f2a0142b8b972f5ecc9e6d33232f57e9f122a2fb04a4e886fc2804757dcd9dda785ea4ad956d303f557d54e104cffc2423d21a5d4beeaf71b7b825b520f2af1441a58db145d710e42751eea256f2baa4a9f76584c0ece94e53ebcf092519aa919bb2043e6d85f2e410090768cf90108d08bfc94f +d10d842d8787adc8b0c9119a1aa6cb47033cecd023721a36436eb3ed31e30a67ecc23493429fcf038493b5d12feb04da9b4c30baf8162d50137d7919661edb9587f56de9fa8cbaa7e9fa8a712cca63d09705ee5f838f1c1e9365df4ce2796f522cf52060bc56435ac09e6c5361387363e0015187e2423fdd5c43704c3daf38171c5885ec7424afd90b2b44db4c79dc8dce60da9ca06fe62193f0c246afe211b78f81ce723b2324ecc095ddb02759a575762f6002553565ebbfd0977ba4fe2957a59615ae96c8b62ff1deaaed75bc81e5f7d3dd258968cffd2149c63262745db21d52ca34f5b08f0bb7ca65a5a3db99c3f847d9f2cac193225699a2436bf44d7f +ced9378303c1d07500e06f255fe6dfc03c06c9a1bb4de03676e0c5a55092feaf8304bfa8ed1fb3f6e14bf5e48cc1a481129838cb7ce0cd35c2a2fffa641cc0060fd83b9bb9cec0033d4fe5718f1e53f7c5d11d3d21f0e63377e5da9f6113958e70cbc71671189fc34d31d6c096189bbf33327bedf0c2e88c281df6df7337636917a548db53f7b6f91525440b13a888585629589cd84abb0e33f1477a7b3628c519ba124dbee87a56d6eda0c9370a6ee2f8f7b25ecfffd1453124c2db5cfaaf3172c69629b9dc6236c8da603592a6805271911704b6f40b951b25f1437027b1d021029a17a6514b508d57f451769a9826de2fc2cb73f0ced8d9d866bce194d47f +e58df832d224eb421584e0874f9baedeec0861bed42582971879a4dbe909ab110f0bb274dd3448b72c4950cb2638929b7ac4e0599c0da3e4325c11ad08405162a3939a227d60518716518e70f7baf136d7e6fb48b0959d7851f20fb3fea4f485db85470490eabffc3dc705d5bcef0496168ab6be83bbd230366a1569f5c9c0c33ca82130d37bb18278046e939f1a5732a5fcc86722181050b1e96842c759875fc31f32344509e82e41570d831eee541902b7c5b8a7414779b99a047caedb6818ccc23590b130ca213685e6b3ad3e32ea0b50e26d8d5323e7e4837a6b91f79ca5a220cee6b6293e8722892bb30e3fe1ec78759c25dcb6b6cd15bae57eb3e245f7 +cabfd8ef58a61447656a5725cf570495f4b837d37f897e24acb785722c7405ef06e844a3fb50c757ffd49cdbd1fbfb80b9982f264fc815a2851abcac0aed570d9b72d286aafd39946159e313c3a2c8a622d399e76b74b0b7ee470497d5884d4188790ee75ad7b4ed5c1f775c437405fdfdcbd5f552a22139418d3ff380b1baa3f2e7b90768df02acb7187ab3a9a131b299e5a015209e46280a8bc950b259c1d63509216be9606a2da920a26c4cbe6a996e4b9b4d0c10a88b3d475bb494e8286d6c69409556692f8d8066d82ea28c2518240567f109382a271e5c4ecc86501700302394fdf16437a8ce269a7b6b7f4506c1dac40665897b610e164e11c35dc6d7 +d25219531842d0a9044fb411e1af1af26a641c327cc8a2cff5cac66ec7165345f5d9238253e1953599ba9c97e145a9e7bc06e80975999761027b2a831694ba2f63d5b72b817215c30e6d1e3fc3b3fb67a1f52bb03c53fc6ca0e3dff743aa7c77cea478c3f39fdfde378922ca8b7a4ed42109de950dec68b493a87a9bc0d06225a132471a5cc3a73f66c0f0765a5b2e508ac581385ae6cd08cc04003e69606b2327c2b6ee7d382b05609b5741fce21bfe0325605d7f045e3049764103acd31b3ad047f57d92ce705a75f0bbd73712df96118dde9b14b9bd5f0aff498f4fdd7b63c890c46f2e29d00a2f8c517c99928465d2a4b616b040c3d545b41dc95c23d207 +c61a7c6f2f838d1cb4457af96f9405777c4f7c657b370a0fc159e07996520826fa870f809dad812dc225b04085b3ef4812cb033da97c9698f17d5774680d634d9a05cdde2fc40520cfde4840506ab972c0b529b1f413f8f49851c262deb1035ce9b41f19930f4d876ebd6969d833e6a4d33b2522151ec1b90a72579a35b5fbe448484ed23443f655ab65ac918ab97713205eafeac60b292e12aa04bf6f6021745e92b58f441f636dcd82867ac1ddad7cdb2baf96efaf6d398dcae17ee0a23d0e46d89b8cbba7ee1aa99dbefa0e73369593796fcd0b4b78c0c8aca0596220190cb406af3a9a4be4c9c1e1ff604b3401acc1e5a7773469f3f1d6f16d4c93487d37 +cb1347152f25cc09a703dfebeb6def553984be4d6518a4a6f4e398d26945bd5511f38f414098b94a0c2e163855b50a0282212e46757326992e0666b36f03ab9424fbf5ab5bf7534092bcb54b756e9ecfc7e8f303cb9e04236d9132acc726f90fa91add491a73d4ac31c4869230c1e1331acb18c6833ebad87293871d17e9fd0bd13a45094c3ec118da2ec12da9916d2505ccbb0b593e37db541a5277641ad4c2bfaef8635b533278aae78cb90aa1d0920f16ddde5c180fb83d4a33db7d9bc3bc102992ae0eb0308e9ae2c3ede158ab69b66e873fc75e378ad74df727ce81a6a9d36e5b7e66df786ce65626c9c50207e17a07a5a5b792d592457ba3e94aa28d37 +f144bd3147e4adc8ea791783593165c9fae297c52060a23cd9a4d9ba65888ac3f508656f46d4232c2d5c3d718333ac3de684faceecbbfb2ca9fd9efbc821480252aea05c14547947e4f411084b52b6c7491a357dd596536ad4ca4590d217516496f5ff70cf5af1877b925be50ae05bb25885d26e70f0dc09242b9344ca712687c2e7eb8ee393df1afdc24aed83743095a0beb702041b077e916106739ed43d21451da85140ca52a49eeda988b59ff9c9770ef5a3912878ab1fe0d228a89edcb9b145ab6f2b053027a033f252bf3273ebda193beb93ccc3f56ff28ae4266da744a9e05c5f70fde452ab2d3051ffff0534a5d66e4b59d217517f69b445cd7a443f +c458800bc1b68f5d488863fef1dae8577eb5ffbae05603a138873e17d7b99d391fba62b9237f3c6a322d0abf63ed00ee49988f354ef2b1b6261b9bb3bd1e896e072f8e6c0c08b387d0677771abaa6ba451f5a5927c5df6ea608821cee792105d232e340c10f4270015a42bd9a360d4c3d74a37ecaa9ea6831a391a6a49c4ae8281c4f3241c2899f93899863ac55b53eb2e5839a31de78c8f5e56327649012d9191e84062df5e31e316576f73bd03db964e00d28e5c5503052ad1886c48411c588941b755bb1bd31b47d361b45eac39bd1ba74c2dd156263f45d017efcbda0418299d1db61f9023be94776f6e4f4f0087850c8841a5e2fbf79420b2929a9d780f +e923148189b267c0262b163e775dbe59326f69b8d77d7ea35020a8dca5d0106c3a96a28246600ca0a52f427fd80e542a0419402e0ed972eb98e407c1111b732f696ae4b5213469bfb60fc40766fd0bfcea7e40ea9fdcb44148ff9446d661b024beee8f5b53cf645fe8554e308b3760346730395cebb0f654c6eebfbce10353f22b1eca63be8472af20ebd198be271ca94a89da7e5a839b0796fc280138a60160f8bc54019a87c94f5744b58252eef95f894521359d43dcad8092f3bd3cc54e891891aa85256d2d3ae604ab8d0295aae6450e38d725b973b74724e475c952e8c883d3ce4022e769677e5f8a76bd59f02752f5038484123b1913fb941de574155f +d59efb2613e0364508f879be633add52ba06ba8e5d1609f329fb37aaa3a92f585dcf4d97c92bb6eae549631fb7ac25614b740089952db175564f7cbd08b3bdb467b1fe528e5e81085673def93036f9b24444145db866085a7ad13b0f30faa2ab68c9a8c41b8ced839878a2de97bcc4ea4f5b39f47009980c1e5faed533408a3b5ccbac8e15b6ab27afafd91c3e73caaff0774013045c67387b619c3281c8a2dd8474ed3ddea4fdcf392ddbffd51447baf1be8e80bac0c3c4ece1ea3e5ed3657832defcf8a20842aed4c78b3101e0ccdb33caa66cdbf9aa2ab96723dab7cbe5f4974f5705a4ca69e5105d073d7780b578810d897baf0066bf41ceec65eef12daf +deebcc20d87ed29b483201e191954660e4f84bc5737a8deecd126b1c447f51d6617ea611f6ccb58c3c208e9cac3e3c649240c37093822680ecb0b06290ce9e65bd7c0de94e2fc1a7d952d3f0466892d0480590f1c512d957ff29f10dd7eb18e9f169faa257d4c7ba26581bea3d2e9dcc4b138f3cc385083894eb9e467bb7a2bc3ee362d689bb3e768918e57cd1b4688826ae03c3aec6e1f1ee85348cf77318a136a306d8170f8f89db1c7721c9a84b754340863006d8ae00f4fa41432d1108449fd0876ec85d94aceca4d06bc089df5a410c91fc7ffcf1222e56bf2258596cbc40287a64c1e2580436df1d1bbaec790878b6b91a03f6065e007e4844756ae727 +c2bde7a3b98da732d343ae810e762806e74e7ff1533c3e458f90d08d394c8af2380704662276f20c73b936b70e1f7d81cb1aeaa790e6eb0c02aca63e4261d5b21f871558e13d0ac05d0370d9cdf62bebd2553dca7e718e928c14c97ddfb796a6a6ba6742832f608346ee60f005ce2df8db06f0cdf34b117b52ae08c5103780d69ef4df72db039e0b49451f7d852ae320de5aa99fd4c7b34736ad9fa544511994f3ad79927314b002a9fafa452e2038a2ba863b27156ffa9f80e4774bad2357a7b31141a9b174b668ec9ae795c0433ef520ef651c8e62e65d43e7e88ee1825e57c70aa16229aa8c57ce26062e0ad291f27e666ee67075d45550b42d397ff59a07 +c3803366dfa8f6acaa2a03b29a950eb76aab12c58bf32f562badecc05c609ff2d4fed1eaa0ae1ba14809fdbcbc0236e4e75ee48fdc0f51d9205602d0eb20dc598b832c2aad7b66e60be4aa4e951e7b2fcbb0ea441a016fa5411b5f45e04e0ed3eba822cef10003744506c7dba7af802501ca68bb1537fc30c374c96adbedc40637d84eb1b2b03544e88602bc28e7c8b8903be322e44d558810775598890fe94d439be2609edb23bfb7fea78dc45a8ea4bba37730e5a180b20734268490dfff4e4e2afb6e4960182c56ac8d635e380e1a3f2327f5b60592e8adc58795e47e4e5178277e71e2acd34046c0986f3b857cb64cc708ef597da7da1b8e2288e04750df +c1ad5fddd22ad323dbebd5bba4adb420dc12e436a913f07205074c6607ce7e829f3753211ef0fa37461674d0bceede159839e4fd33b26902e855f805205646d275275352b14d4f04debbc9b48218c1a4071f5a89595b038d4ee8aabcddb3e8c1de812ee09c6000462be8cd9ec01395ad9153aedd5c069c8b146cdd3137f5595fc7a0e5ee9e3290d54d7b2d76be7e56ea153a6d4c03b35cef889d61655d009265bd3581ad1df5a1690dcc6c32b1a01e1ca45aa4fc0e36477279c8c39d78c5fe4c811eb7b6e8b91f517413d93676983daefae164da41a4801a7863b9c405c3f870acdd637988dbfd5af0abad9b081fd1187cb75cd37731ec13716fee1be71b3837 +d4b63b14ba8c4b6f0c3106bd7624405d1c00e9e0f2f5f52d6f12447ecf8853c72c25a101ce7297af49205183c81a3288e0680e96569f443c0efc3c3081eb1685adbd7cdcd9f9a2d143bf19212105ac2b7c73dc3ef070e3fb5e22d0e554281340e77b8888ada8d6b5159671e12dca9c236c925854eee5c2e7e33be534ae914710ac9342d68ad0513c54f81ecbc907af5a5867f2323fb5ff5bce2dd7ecf83b1bb1cb77aa28d56710e6b5284ad9358414708558fbfbc53acb92c1118af8136330dc259ecfe07bef17a59e3cba4165f5893ead7d2b494661321b7eb4be956d468764b8f8485473d6d5c350f74f22a86870fa59b5c037c3c96996f5d7ba737385c2ff +e7379337aeefd3f6a15abb3cb74ea9bc2d4b7c716c5ceed3f7de88f9de205c0dc8d236f27de0ee841ca1c494fb81ee7703877c98fb556a928882809901db7f6366500d95ab1fe785d26eb9e08d1a1152ce08047b6035ce78bd1866a1b7435d1ef5f89053d8ae5e49b21b828500baf6365017456397e5213bfdc2357c2e40471d2ad7cda9f3a5c845799ffdbe2eace51727e396bb522575968cbe2baeec846e70535ab98b9765d313371875922938619449090031dca6f3f304d0f1c67e2b667ce488b706947c201b62782249d70b56cf84caa6b462fae09b7c984801dc207596695eb7bcd6d32343f90c943867c5dfe4575af8a2f40d5abbd3123c6ebf58342f +f41405bcc74e73f48af4e244cfbb7540da8bc33cc9f09ec4f1c8a8a6aeff0bb42b1458503a29ba0c8ee1262e182d94b0fdb5c00db3b8fce479db28a127b50bb3e330b0ccd683b68b9941e35ba20e3704ff712c75ef837c831e7b4fcc261c0e78dbf614595cdccb563004ecd90e1ac4b122c2659435e24e96bdda79d23e37f0fd804f464fd8e878f2aa76031dd77165ec13a69dee07de9a8535b095b3a2af4a6798817742664dfd0051f270a30af5b3316e53c05f65b0f695ef968023f13e6d884c90eca709eb04d6955be06000b39f4ebc36c37981222358e717b58e6373adc40020f5be312203e20f9ca1c2087845a50deb0042f6678c2856dc22c6a866826f +d1ad6cce6e4802b3ca739b8b3363891e9d662c69c7c262dd172d5033e39d1eba796b5133346287d2ea2a02cdda3e350e97b3bfb52d9caa4db822372f27f0b9f3a509e0f91a7424dcf6d8201e6cde455f2d206064a11006463d486bdf4765e00d8bf85fd1ce2c04c89d562a1001d233a4d0bd80b454bb05f58f85c1fe6ea018f57a5befae4a034c275a39f6c1d61a7d82dcf80bd48d02cb5abd4c3504ab32a524adcd71030d30fbbce253420748f89d55e93fa666cd1f6b988452aaccaaeee7e6cf40b643e75e95b3810dba82cb496f0a0c2606dfd38a1d73e0ffa7e5b2d7e938611ffba1d78a67f82c75248a970b5575a0a0bcaf05fe33bfed082b97f9ad5087 +f25bf8a9c44f5fddd9b84bdef3d013154f41637f46ea214f096789d7ed1bcfc2143ffcaca8bd2017bbb8125c3897d375596f1467bd87044abfcd35b6832527a1b3951487108705a1898d66f05da7a9b835313c9aebdab614360a7b46c111c676378e215b28b97a49a589bf78cc2d41088958f191ce4f2a45018c75d6593e46e7c4b72286eda140196544a6d817ddc818ae874f1997467752779da91f791bb5ed95a2a8845771e73cb69c9c45280c5be1289f31cf3c51d519d899443b30b2358d830101aeb623206bfd1e560ddbb307e900b7ca4a957309b0b146b1025ee6975d75d93824730b4e8e8f6d92586b5fd2f617dc399b8567bad8f462d789a1c5954f +dd371477ac133acd72ef9149c9b0533ef459d8b1623985e972bc095048e584a6548fdbcfbe4fa26ac148baac55ae689135c905f9e4b78b830a73ec84c85f53855f68ed7f78d8e562822ceb7316dcb216112b08fc395c5acfa24aa5c63103e6c498cde30140b3785ad2678619431236384781a7f2c36e27a7cdc47dfeeed8fb0d34472185124ca9dcc90b409bade6ab4e2bd961776eea0af580a91dd0da34ce183e8f77c75788f6c5a4c087f30ff9e541e3f0f9a34a0b5858a83de081edd30aa94c5d2455cc8f91c48af4752fb1b6ebf454d950a92316973896134f98b11abfea1558f5395f064bbc60632d05e5cb02cce2b094a46973c5b0a013dab703d67bd7 +f513de4439289cdf4c6d53fc01033f97411500252a7d01671e9114f5b4311944e7df724df9288418d8e54d26f47861bb127478054669d9979886148ecc65561c36f39a106434d0fab8fa23dfbe77a4cc60a8a66315d900a88c9a44fa06c4e79b2ad9e13ed0dccd139a5beb3245aefad1589e465caba82373c580e79c2956c0643224cd3fa5032b283aea32ac851de7e40b344954691d1d2a1e533807b850c6af0f5c91df28e55f2e3c0dce3b5882803e27140cd2b733ec8b1bb890c038cb3c90a50b2be15950fd5a781887a92d1e8e85c4926e14c001957f047950ac807ee342008bf7767f6e8b0aebb1af24b43dc34a88491d99fd81b61435e9de33d3cd1b0f +e12e6426892319794e4c3bf5a784b96188a8723e2b788072a6449fbb893308aabc8253cab24eb7af0c9e18c453833b97a488b134c42e3975abfa72d218c8391c744277ecb842676e75595055cf8619e6c4f94c7c7cf0f7de77fefc60551e697b537060f58ed961e8fa0cd9ec2ada25a39374d6d02dffd35bc1e9e2393c67fba7de57c9b204fdd5aac1186732a0fe4361e62a853265ce731c4f77f108f43a65ef5e6f7c2093e339c3311518bbc8f71e403cd3005409a07cc5146a300bf80e75a2db3cb6e6b2dd9d53280fb197a0c41f9b34d2d22104ac146b27ce0db05dbeef72ac67933c5690d52c15a2c20d5ad4a3ec305a17fdd5f76410b359d0c1f8bce02f +c3918c014a3d177c7b98b28209b9e5bb98090afe7a2968a401dac501fe5e64a13a3459d3baa59093d4195b2f401b43e790b9b83d772d7d2bf4f7419a0a7c6d508edf033af3c83341ab23898b3551c7e6df077b7f1fe158c03b7706c757c40c3c6c9820f53df09f09a6127d22e21a47d7a9f371a89d3f7b91718fe52e51857c59d87c48f275f7312125645a5e8d53fb9c876fe183f51390ac288f03f3c41842ff7fb2f08d6f73ca0e43fcba6b16175cabc797649fbaacef5491efb75ebd5114880dec5dec74d744017abc3f30227b38b7c6bcba188e1c1d5ad7e5023e714138d45b533bc5bb03c37b5ba4bec5f2096fa92eaa3d12a73bc42d7a18160eb58d5b17 +dbc25ac7c0086a4eb0fd35d0ef863519f1fe83a6d17fefc9ef39faeebbb02c2b68ae732a1c0fefd577cb2629253a3905ec799495b9e4ebc64cea9f4f6dd24360d8518c7e13e3252aa61406a61d45deaca6beeca83b5998dbf4e93b73fcc86a0e7264756c6418e1f6c57effd12249f5c1e6f76e39fca0423f5782376f3e136bfff27a4618c3e0525a7ca6f7cac6f94437d02e53fce5da28858fcba950403284ed2168e19f3650f1c7307fb73fc6ecdb5a6550382840ad7f1f78022432bfa066410b0cc3fec8fa97f11924211929d1994c983dcf3d0e150c73f71da6fda67c657363b39174af3d6ae52d30e73ce9bc7d1a0fa0ebe0dfba6e677329fdd8aadd7247 +d02ffdbb061266c649f990c0328588a6d3bf9441bbcf43242067a5d3c9f16902a5cfa8c4364bd24a5df81d7f8582607f5c2914ae07579a33bc97e221084db1eacab3c85ff25edacc5219bc544f4d9b23cfd3fc404fdc731ca8c6a3ee04c5048b1cd112cc3203d8be5c682ffd1e6580de005855fda702549ae27d40b1a6c1e6d15da6dfb9c0056a044d66201a39efdf91ac0c67c2101b9e954f0f5d68895bcdab56b088ea3c70cd17249561179813b3afb3b04f377f656803c4924d2cb72f90b68ac104c7c5b4d28d99d41507f07e0da4470eea011ada703063c3ee3ef13b4a9d47f582fb0c1f9ec56214a11a2ce4dba471bf2006e7c49bbd8f565970b240f60f +f510f95b2c8ad15f7ccd850be8f18537cd10f57f242f2c62af89ee2861cdf5f92079488a69a973fc563be5eabd833ce90176a2c5b8a0b71cd6e35835a4bc8e8a06250368dc3e0d0df41c52bb4dbd4ac748342d5a1cf19965df7206e773cd4df025ab33e56cf7950c0dc1b4ff252b937ea95f0f2423e51b1109622ec36c488bc0b490c9ed3e7070bc537f4d3aaf7ffeea215ad26d4f1c0ddf906ca31641886e2c83a60e3500f611f6fca51eb6dc0836ce42912689cf3de6a13f4d1bbd46e6908db2455713628a3927d7f90b04353832b9021bfc777b4b4d9986fdcf6a6283e9fcee21d6f537f9dfd4a834c6c5a5515402ad91893ade7e4619f20219068dd67637 +e2a28d598b5db2a062eb5d1cd0ac35f7e3328eefc6983fd7904bace2f515e2a54160470e0097b0845db5fb41c04146b8747e968f17d96819bce4cfc7c4cf6c264c8212f751510a6b85b455faf4cb1c2146a829a6124cc59f0b7aec1367be22cc1ce19a2526f51245d2d25763a74aaf799bed4cd8446459723adfed5003b2327d0f5c37943fed6b8b93680a07fcb78e57bde92c45bf28e91eba5f4f8cb2815aadf3ad8a753a16b89d104ae644813d1f68fc9aa22c44a98a79afb52eff0ec748bce61858a88d8d0f102ea8c37b20aa8117e4e2946debab7da96f7c3d5e6caed9e3b73d015a15c4cb2a8f479d61bd81c6758a8d9ca214fe3557a28c1b00b529ca8f +cbe21e638fc914c572aeaf1b94ef04834b6f68dd7e4bef9dcddd192f257d28f3c4fa8f42d2e11c4c1e74fc82d39b06c9e8d0335f68e72e4b38874b22e2f92c147caeab4a8813f5d7353d1233c1b374ca5f3f611cec0b5eef846a71de3bd176457e47320e6f5489a03988d0bca84edbe2352306bed8c19ea8a5b25e8af427a2138232989fd37d77286e2be52e72b804ff9869247dfd2bad992f585d52ed330dff523587fd3932d99e56de62291c2ec713383798bae5d9fc9a4ebc0567de4701bb08dbe6cef128d443c562f33b404e31e9898c30e37bb2eaae27a8732f8ee6b3a5fe9dcf8583ab55ee081cab8698b5caa933d51aaeffe7fb7003f29339f692e35f +ecc4435aca16c1c0c0713c25e39294a6b609c540c875f9e3588f51f8ca2f47a597299ec0ad4ff52ca29039084b0dd5fdcc0d676bff63993e29d9ade33e0c2edbfe1d8ed132dccc92ffa606ff2c1c150bba2cace0ef42f8663862f789c2aaa72a85aec714c30114587016132b2ec436529ac3c2e54705a3b7e2f78f7bd4e1a159b52c21bb040b357453ef38f44b7ef0c2cb258063e49da218eb435debafa8b873deba27b97820ff462178e0a1051527b9b666909ce9fe2681ea1a2c78a971a84c45504017815f25a8d45c6c356eb889b6be3f13434d567c2f2f07322197d0cbde7ba702195ede057b1251623540aa408ca41c09a1e6a579cd2eddb720d8b8401f +c3c5e0f7faf032f36808df9b225d19b1b64cdd73bfad05e5346a791155b6cbf2746e3992842639d8b48a59267f61fa7c93e3ff4cb37eb31d2238f969e09d26602c6175e3cf14ca8045b8d981feec88f1baec6d19f54e331bdf080f2d23632b24cd314ecefc419dcad87536ff673ac3099f89bbf419859b66d39105814372bd22db78982470b13a5a526d17bb47b7aae3c95762f5d89532bcf33537c82d28e0a8dd2a523c4772b2b479fa3531965cf4b7396119fe20835bcdf44c3cd65c843551e05c2ae04791760161a0dd3c424e89b8a00f5dbfafb5779d08be548f3f4fa68b2d60b29b6e8129e89badc793dfa7cf69d43b6429f4f77b02ed0a0078ef8ec9e7 +eb7b0797bb15fdc1202c5d0bc1bad0e668738e65cee122de5415e1e0c4083ab6527cc654d4c275b21031c7e79aebff4adf92940333ca8a9b9c947a450852e9104fd15eadd5b7da76d29a2f3f0950e9500aa53cda7786d74301eb05a034376219d13408520f5d3537d4e7f3d8193549734bb0938668cea1b3a5be7deb0ace82182653c1c634ed80aad807588df35749481e9894ed78ac97a3774546c0d7824f78a3ca12777e56e80db6505edfcd3be14588094a94fac2ba2c8950e1d419c5bc72a7f2be7af75922115d9afa980bae57efdae1577f7f60ba7c2dae754220f00473f58d73872642fcedf655f1f2a6aba65c94d93d6ca6c02ef1a649caa647a7c7bf +fb6df291389398418e2e00a382b0bde019b06ba5cb080aea8b0716d949ece5f902ad9ded2bdf664a365c3996b266c3dc44c724e6e191835c771bac03a3a3a85eb96a4e3f58eb9089b49dc16865fabca98c3cc1d28cdbca17cb786560b99f1e4cb7c53ee2f58968dcd6cf94b0633249c10141ab9002cefbbe026e501e34a409d839d98c90c101da0c4e38c9ccc17051833b4645214eef3d5468614776ce37351a222f9539e7259ec6b442588ced00af0fdc5da602eec2dfdd73dc3467863f0188123f43f43a134010582141535196d1e5c1cb149182c69781213784243eb86bdfd13e7804d91ac84a65bdfe11457abc1367509bce25af15879d00265e7f2cf07f +d04823febb2c6a10d1b4195b944b71c9b91402ba6bc9103a6d0a48a4bd9b2e5b57ff0e6660beb791b819719381cfb6350f646654485e213a9cd04da3d6fe97429d0d5ed72a54c1cf53147b75e7cb7b1756e601f0b811b69f3f814aa82346141bfc54c9c9243a1dcd9cb94630e253d43b7f76f5c81156805540fc24b471985f69bcdc21fbda96be05ef2ceb28f216c679d35a60e878dc9103e01ba1c2ce62f7bff65735cb2550dbeba380da20e78dc219123668d0516de04836a4f1f1da6c97a1649f313e63cf2d9875417735b191ce9251044dee38c05106b2a5339b2664ffea7103602316717624aa3c38247b24bc695417c9c2c055b0f6c6b1faea78eca94f +d60c526a2753d12c16873fa20f9b6baaa803913f4752055363e556303432ec15f951f1f58b5f5ef9c7d9249d9115fed0249c6a17b0dcef6c64640ce0b030418e0a0c00860856c7862f10bdceb45df50ad822ff770902aa258801ef51154d0c10ce15969fd6b48a7e9d9b1b075f1a54670e6670fedff666f253525bdedfe4aa4b20af95e839aa6aabf9e08c59b39390b08acd3ba1364e396a97a8c095d3f382224db8093b236fa7af7661f5f38d045fa45b3031ae446769ad110146dd3b0840de5a39f7a1ea72119cad4ea8e40545bf2a77619ccd455fa25918d68d824a7ac7bacc89e8ffb8ebd1c743e960cf57adf04f560db38ec1e941b3d4bba73df13f2357 +f3f94e8e1da260dee5fd59e4b7b92cbcb9d7525b6dea4c3dd08761db8ba069e4ac4be293e1686af065eba7fbe1ba2d68645a0ffad8485a4546ecf1b97b27e1f28ad626a0fe61e4dd3d1bbd25a9b6bcce82c7aaf24df4d9c45f776ac8d87055ac05215e270a033df0292ad3d235aa11a7006391ebdbd0a1b8d2bf5b7afb75442b6d95d66b398f02da0cfb7de93c0bee92e60b522bb3be8ce504cf2f06cb9ea7baec05444fa0d6043e640bd90a830925f68034c3681a3c0c92b49b34f3b299bf7d63c85b5bd3600cc22f16fc1e251d1ea30c85f6a4ecffe394478dd18fa988dd74a7ffb258059ba5e6056ce52fef9ae0d982274b087b153bcdd0396861252ca377 +d62ed1a9d3f96fb6a5a800c9646cdbef47e08acda6499638c0d4daba62ccf88d50aae3622542134d8667c91d9f096660901486b66232f6edcff67da02468be84fc9680b322e552078885f95ef17ae428a08927a710f14fd43da09156eb0d0402e07fa3fcafd479cd997bf14cada36127c515e216af3bb1edd863f74395decc16d5239fe3f7fd891891a684a2eb9818624ba776271ea7c83db61f7bad999d9bab0a43a1f5f63e3e0d76387c89138ee80c926c6207dda9bc3f41d67cebb3cc7c9442046537bb73e636a9b5ac690293be919c871b91f38d3743c5f412cd6d3599665a6328e5c4d75a7b4c33185d223da5196a0f41e73cd3d88a0496ad6bceee56cf +f6751d02c8ad83fd5559a404eafb7cee35c8972c77573ddbd1ff5c9fc819fe38111e783bb628e6b83411b211ee3b819c395e52ba6086fcaf1d490afe7fa75abe7dcc4e0f55b16c382d2f80797081cb7598421b212c2e0e5521e2e0abfcd8d866c1c4766bad83c6bb75a429c3f9b3fb2a21cd8be0cf59ae2250519ab949d6e02e36048ae0a7f7feb38dde99dfb9fa0d9319c370a67f90d411c7ffb1ebb63cded343d7640c05aead19899baa4ab65abfa3dc2d44db7ae0a7e8851bc821bb75a93a7177799c3966ef8445a0505005858d37d68e704b66f2f40218552b637cef7498c304b44280631fd9ed83bb8a7efa976013db34c6c981a48869f92cd788180a27 +f5d2b819612b925f979ab92d8b591d4b2be2dae5813dd746f0e72a41a216892758e35c056dfdefb653b532b2f0bbffaade032100ce8ef9c2d9cfb932840b7fe5074aef050f93339255bca6bbcaa067ae06e19962f3b8402fbc013cd08f42ea2c7620438e66d60eb45e76835815b8fe0374a59dc76a9e3647c7dd89bdb766c709e77638db13011c6a8d932fc73d042401aac413e5b6980f0425f39193abb87208683dafc69cd5b34b930f8e8ad606d920f2ad3ea722eb32971eb308304858ef905803bd8759c269313ec67a95f24cf6edffeac984dc913e69e4369ea32a38c631eb9fa6131dbfd164d136830732074ecde05e42b07b0e94a1a5c3b4ec6f5aa827 +f18237a742ba3290d11f275ffb05d0c9d4ccaf9f6e55442e606bb6427d77c11774388d4c5e55aeb0d4165d21f969c179fd82b1340de3c791d3c1000e0ca380b9410e57ec06275fc3241becc4d7d6a1f59cd85608273bbdf3b3744c59fa33b45f1b3a4492b1e48d46fd71282034aa8dab2381b4d85e8a942c69bc5247c1edff8a3d80360bee3487688755a28c427ae80c999afeb079135a5087f55f85461bba4f935446b2d808dd36a6d625967df1272647a417c8ef2618434b521d363c62f0bc36b326b1f99d5df8bb762e18f9d80b524c70f6c4925e182bed8813dae1448ddc71f6c6cd718cf1ec9231e866bc0ad6fb9fded88eea5d88d8c9e0525e493d2457 +c240de7e32cb2abb5b2340a960959f7056f07441115b64b0b4cc4f43bb6a19cc461611e1f75811b65262212a79e6915ba8bda73ba770c7bf0fe0721dcc0ef7fdb11a065b1c49832326401963251cd9fb141c58e61f637a2828f0dcc428d29cc3da9d8d9293bb310398ed5a21165dd861fec490fb7031d6ef087ae888b25e70fa33afeedc00636f30818e36de6fb9272cf46dd0ea0d62d3374f33887be4abd88d013831dab2d90452f3518d39b7544c18af50337741df4ae9df75a989efdbe1b5e01c7ab13a44e26884ee8cb8f85ed8d10569ccfee0e4762927b4cec6a79cb027df53315d551c9d8317d78ce1238af423f9c3690759450960fd304b4874e2aab7 +efe3472a32a1c5327304b687109567cf9ef7af07ab8557db36abe33298d45b22147294aebdcb40ffc589eab1b453aa631ddcc8b8e596ec3ccdc219f6d0b91ea858ca4e158b52630956b265aa3307672650517e5210a43ecfb5b5c73bf57accff639db5b58b8167a3adfb654de7bf2357c3f58cb102514466e3e91046fc2e620590d340c202b9cbd396c052a16e39ee191c40ec90f22c08c9731c5d66b48c0010958f3983611a315b62ea41710e49fcc785fadbec0c2dcc5b192a2c5663ded8d6af628a32a66dc87879667df7093f41d92302bd75a8335958eb8f856438b427d3ce5a6cf083974ef458c1b36420da3ba3d97f050a23d43c0b1ceaa61782c0008f +e6ca5d82506cb1c6e61e20be288e6d88ecd4370663eaf1f69ea476f979d1bc7e314bf38fa94da021d0bce704c87ab1271b5d0c3c5a634f3c4db056343217a3efb07f5b21ee286dde70f446416f9812222ac325da60461a6fce327ebaa5ab40e5268c6341392d895260a4dc43b0a4b6b73f9c3de6d80de3d867237d3428a9ba7c86355d614cd61c2b64ae55f5fefe0daa146de9eac2b420c9faa6d3d6964c91666bbaedd566a6914d6816e307fd842337f00710b2b3c33d9828cb2f3464c56ee47e7887abc040950616071f78b359e53d727f9c25b29c2361f210c266843ac3dba70575a598939474f8d3611ba1639c6d2e4367d1f5a13ee6eedd9ff2c3777ea7 +fb0bc46b5aa6efcad14a56e2432d31ae667dfa862d8db7dbb7bcc625625e4fb7eafd87240235598f8b19198d94eb5816df50e2823afd37869b19a6b71cb200471bea0f5422cde18e475aa195cd4edb393fd5426de97fc8814bb19d4727759958ded85d71c690fb0b88e159b1e6631623f9b59e54d4836f466233f59324b889d53db3bf93258e5e45c0f01152446a7124cf8c29981947b59406817e660bab68893ca8f1066b962d4099ece3d6caf6ce127eb0935517173ed8dc265ba7567a39d4cc39603cd5f416fb2ed74c7f3cef6b4c6355e74999b6e01009d1fe8b58df952ff9dbdd40cb9949f91b90abf847481818e85fc98e5309a57a6269c22399783187 +ebe8fdc8f4e7c547afa206dfe392e3f0d92ee55d0cfc2c2283985807db5260b379e194909873fe7291fa4960c8db5d04f9e84d696870f9b316f896d7967db911015f165adc4dc3cdc5bca7a0b8c0b050d5e2361da51ed467a79b60d037da5ecd05cc0d9aa81cabeb6d91611da6d54f97ba111abb09317c1b7a4d4c4b3e2eca1e6e321054781dd3610381b0a5ed2d8755d89c4e2ee6bd3d922b4fa4cea577892d229a783c65b33626c654ca54087f4c644aa859877dc7220926546b59cbb9e666ce76d9b80268470292b68db2888bef7a4c91a93e8cab64e3d4e493e684506d9cb67e55e613e1fa64c645ebfa37ea1d1f89e004bafb61138ed25d52873c311997 +cb4f1f8cd079e2edd0e74fa84c58593c2db7f012f02b816052aa16d81b9bd77b8c4bc213b2468c3101edd9dd29bff4a6068b1bb83057e946a15db5d88e93fadc285789c4f0918a6bbb3f685df822dd16ce71e5c401466435708f6ba16a1d8abd9bfde0ef1a0bb2bf194f3f5810715dcb8b4f6f175af1a10f8564be2b9b2b8cc7c56ff54c9e79510e6646d15211a7222dd663703bcbaba0e969c6d023365828aaa56c4fd5dd7ba9b8e49b17162a2ca29d057ddcedc043b24caf7b84ab0ccad34a70339beee9676347e9e8d659c3ab6b6495c0c457a4885a7195bf4ed2b8d6e826f44d89bc3b178078ab085b36fdd00806049b4fbeec64762ea51b1a5d30dc6a3f +faa8dd01cda9d6fdb7e0f27209790c8da6339446ac89f78ce55d722e1cd6338d063191071de4cf24d7e118341fdd46bd551372e84186698c9d4168bdbd2fe711fa22c63e9faa908cd73afdfcd654105d4a46888821a9773f5f2a722413378ae75b901aecab11bd017f999ec45ce755efbaf3981c34fe5b7f02467af580b32c9f2095c5be26134bcfc434a03ccace7e38073ce3a4a74a0a2b0009bd4b95043d6c94b6f6ed1e7f83463f03d865fe2391ce0362a183d3fadf463c36f96dbfb1efcd8b0d671047984d0197789f8c97534df227f5d9fb26ede09a7a702bf0e25391d4f874b8314ce2d65856424c4e3e7e5a5ea00b3dfc66b37c2ae1eb311137341e77 +ce009bbc575a4580ba1fef34ce5c6a50ec40335bad13131b18f9f3785c8824100c3b7812310e88f6d79d990f7dcaa7c480c1c097552c952043eaae131eb621cdc756cc66a11c62fabbb470798a72bf22523d64713c80cc72d83e8e04d7810ea53e80567b684736da5bd1fe548aaab07ddcb03927ce12af313bb5cc6083a0f31acb628bde74f157aee84d65a72307ddf51d96bfdcce3b983d1b433d6c91a3b53c08d2f45250a762b0b0875876106242f74467c731da778eb617981248af7e6d6c45f3486e186ca8f37d18a56a9a97c17a79ab33d08d2428f303c8c49c2b37fa2d409de3295c44b429e7eb028817657f798b5bd2b3be7c862a3ab90c4f5d84a427 +d86356fd80adefda33248a03a344324bc8d33e8b0ada697fa99873c86a07a55e9e17277a2136c071fa2491427fc1c35d72fe0ed13bb63c7c7e080d82723b52e3abec35e9c28ed87c42cc143a5e91a35ff435cbf4099dc0bd6339ae52f9dd277ebf8817e610bfa19255040f8bc5ace5835eb8cf98ba1c8a6427866dd4f898ad809d460a45677a6e4f54cbb9e089dafadfc7c8defddf62ad183e78ac836f51b8d4bde71a76469400a9169b011aec019d2343f3d9acdde58f92b58fb87fe25aa3ec6fa4c392940825ed255d18c89b55e9d83fbd4fd88b588ef487d89592d2065c6c758ca03cbf6aa6d49341a02fc2d32f6af8649672e53e52816a0483740918d267 +cbae534baffa5817fd462cd2280b3cd9e3da7e4bd479aa1538868a67107f187467299c4b1b7fe70483cac484ef6f0697895e706538f9768a55de474e24412ada4fd1261585b4bb3e123ca4c6c2d225d78472fac9111d0f3a947d3120a9b820a84227f6452d0ee70334531a67521cdf1060e9e631beb5c85d17ea9ba1b0f12fd13ce61e5c39f5045905f3e60203b3e9d0412aad31ed5b9c9b930e81903bc4af48e26aec6732fafe6fb0fc3c044223dce6e1b2c53a8c4491157a93c972c8d3b61032dff0a1184fd6783758d1d1d9b31c6e0742ef15f9b8fe9625be52385b49e80fdb9e033600f5f8f71d0b99ca7d6b58eebe5dd3dbcc289836049fbe95957feb8f +c1281d5a201dc651d7e0835eb64171da69d8df141755de7e4c7000c0bf024fbfc1d49c4fafd84c396fb5916c0d5383c77e52513695fa33136520f73eed41834e5e6ee7726fa9fa7e18f9460d730f346b3537c15f7cc33791e1b7ff92e5709a3a8837a87fd22ac585fb6f5cc276a453e7e37ca0244e955a83d420d4d77df470acbcc057a7e0eccc1d6f5f58e1db3152273fa28a32ed9df00f6cee05792ba191a7d554b5204c2c530ee9e3f495e0e6f25e2f8bfbfdedc33539b310732cceddb9850c0c0d1f7ae225fd82055ec105e53ea21e85df44c8c2c040e6719d7a6c008c56c01325186b3f4f35cec88f1239177e44168d0438c6da7331f892d48748ae4bd7 +f5c7894eb0e1a1936157a94427939f39fd6e49dcfda321ff3e514e712287d23ae41fb6c4413fcb2f42f3b5f0c37b12852065b0113b9bf95574ca420c8f6502469e83158346cd38133e3a3dd171c07095776d439fc269e27f007e66f248a93c106b5a61a78ae0338196ab1425b828146db6be6fff0affecb4033dd798b66829386daaa92ceb710e4d532049d07a2769eed6d239fb063a2f2bc85526d03e2c33306945c9e5774c01bbf5c49c37495e959c0a1d659e0ac516c5be6456a484fc16c1ac120da98bfd28533e08a97525f7ffc415424f5af44e0f61668a44803ea4515fce93fa6b70a02c89be446181aa681a18ea151997799475be1406875bcabcdcaf +ee94c82925b043617ebfe97f227c411946e552a18be97c717073c7554437b043e630fd30bd164d2c66e92a258b22201ca773d9f1f0b64976051269985d16961f6975b5b0a73dc003716b5ff3f54e02eb5763d2ee44800cdb2f3b9be0e11d1383588dbcf63abacad60a0b47556348636960aca75f40106d0740b378b28b818f3db3d918f5d6b5a89f42bc9703cd9045dee5b3c9e667e3cdca8868f40bc9f200a96cca79bda02c16bac1ab0aed780aaf5e0dacb765811b3f0527449fdc52b0f957a77514a261b2e2d0d72d12381c915c3f0504fe5b78e4c1f894166517ebd3cf33833baa9966927a574e3da102998aae963d5c653d0305ad33cf0083446232bbd7 +da712450f1c0a1d98c62d517e6626aa57ef2e1e8d8bb37c1ecdfcbb048e4dea81970f972d6bec21d5908d32497c5230de10bfd339caffbb306064df567136044caf6576b2fcdc4bb3044f93e2cb77db3edb8a2ba4d3c7049c3098a85b8e08cf1b2bb69fd2626afb19f6d5b3c16184cba58f23f1051f466ef6ae3b2bcc482660639c4e074d70b0a11d16f873fdd5508567ba62fcf7cb2c65a7f975a21f507bb2f342046cc1f37c5fdd478725ff2931fdd2bc6b3942c2ef319ef7af5686c0ce4c2d93a46443047b1fc5b6b2a7fd27e0398f96863bc9efff26dad6952f2a291bba18d211f17d120181179e0123b6a1f20b6877a775688f819813e907d26e0a6b14f +e8ff16c6f7cf96da07fd2b18860f2d3ace5cf59542bfb55a203c7066f303aa40753caaba05bf2fd8fafab33ee7b17864b467abd92725a75a2eb812fceee61aa4101a681912e27029f1d7f626765ab00b247581acb700194df1f67ea753fd87842fd577190ca700d6b95fb26d64140a60c8d63d9921b439ce7a4f70a92db5ca32a4bab3aa8781edc8744b1756812f9c32b01bd3c4bf0f21e3b4e1f8928ecbc18e9d71bdc715d65689ba1f09ab3670b833a0cc63b98433bc3fa98386f81058fb2f6c714d300c00a9694f0ab700866fb54fbe8c9e55b0313f8d4e46c6c9d3f4d11f1a660e6807e044ae84fa8f6370f1d6f272209b1fa732cccace13c0c93eb8f7af +f17cb0dec9d64bb087636d697fa7db07f564c27d093642db44aa853a3050b88d4c7fb95d70b3c82b3fd282a378bef4ebe8dd85159dc74ffdd7c282a0ca2b58f3d7533a4963607e28f7c5f076094d051451a89615fa0a0cc1ffb9af6dc9d3bdf0ef1e698114bcaee5ab95ec699bcd3334b9e09b5489d02306945d9b95d9c8403ddc98e86241210ff30fdf25febeffdd9a4c92868d36f3cf729f6bbe44d74ac98d6d5655fa3e5ecf2146c138d1ced4dfa4a1221d5d5fed56bd879f8ce848a58f234943bdf5b349d68db9d160216cf15e919da99e415f0b8b772194810bcd746ef5ab37ba5f1f9b1cc30745eec06ddf38ce47f9df02ff66dcc9c95628e95149254f +d3d7f8cd789dd1bbd1c324d4df16b8aece0f2af7cf8a02f70d6cdfb305a6766e99c226de567d1c7b5a216b39fa85365b38217d1585363eeba4d7d5bc6e1e2cb38a312cebde6eb659541fe69c2ebe86a69431ffebb80fdacb9b2a8d471829c70f298a877b9e980fdeef775321a5054887042c5459abedbb540aff8b5317fbca10b39ba98d4cda7b7c2f3641c65d3864e584d6484db34838ebcac73a258e5bed07d12baded2f208430a8b2fc62c3a70948b699f296aba9aa8049895fd5eced94e8a74a23270223ff5a88c3d8ed8210cdafb40d22cd2a20d3afa19de58db76456e9d1f22d3e928971bd83038aa6f0b845a469038ca66bc629f78dabed9e188e673f +e41b6ec6592f4dad9d8771a1e8f853fb1f96e5e9a7bfaceda3a87e33c68043b2aad47b7f74d9c6add6e9334612550d1a2d96df013eefe4bcad3d03a52fa3bf5c07fa210dcc88677a11ae80dd2375ef27e36222afcd8a0d97dd6ab9400d778e3dce48bd151d29bcba594016a8ca7f87d09211d7d58e94fe9e9e8d9b85eddd7707af99c052364dba9451d35c5ee35a983ba0ac9940daadac86bb627b5ff7d81c2920e2f618a6d78fa67fbec728210c8fc52435cda0122051849a71f16f02d0fcdbc4714c33ffe5ad5189c607043bde5a52aeb3791998153a786751bcdecf772e087123d7b73c0961ef7e7af09dcbf6b9000d1898d66caf0bcdc65fcf27672841b7 +e14f731377e761791570f503d31131b47c15c4a025adad59ff49eba98fe0c8a41b916636fce80cd05afaff1883e45da622c1e31bfc5c996c116aa4fff5942e455d9fc1f4f827d8087381117acbca54151785a7a883fe823901df7943d45a626b12c068a822b328d8ccaae21d09612cab1b8d242025789623ab2c053f8c502551aab0f95cc0d891a8d180ee03595f293a48dff9266c7b18db2fbc9588eb77cccc9cff4af68e1b54589a968272373f18e24bce1d5760cddefee2f25537205eecafe63f43ee8a517295621069212525dba380b5b1a1779b6db5a6d307c4ad5e300ffc739602f2a26a5bb2395f551f276488e31cd66b337877f55de5f6bc3b79a587 +d6223146c37310de8d239ce0d4806a69c63be42da0dc343d3a2f056f1c5ff128bba5208435822c3c885ba896dfa14e688e1c30a4de756b1f0b1755c8fcd2bba8c7f4ee4a2ab6e792a80546f47e21b328137c46fc82ad81c4e9e53e5cb972fc288f643f04d71fe73189915f8e452d6b700e30f55b76dcf0303e9eca9eb8e002abe147befdc0d646ce41ba79afa2c26fd20e4db83bbecdcdc8849faf2880dc86c49c27ac3ed89781d26ea11c78f04cc3f62bd0616a3fb28f39c9d353752361869cc287c4d7fa0c534ca40e722ef164bb19279902d2b8379eb50b6aed53e431886d5562379c45ba4624d5dc0c9c74e3e881854e37fcb500d11f0bf8b39f0f9ddfe7 +ce7a2492b1cdc5347ea7aaf58a3dd6fc12b81ed57369bd7fa3c9fe8d59bf615494cc0e3c9d64c3a49328ea053522cb1e5067093ff526545945e430112610c7eba1b138d61462f7c3d9c32f1599b6db5fef266e48604a527e26bbdf34740a7a181aea20ab6c34d33dee1c89612bd03d2fa7f61f87188436d198a7113b3d266c82e518421ebe97554a8ec117ec7ae2b489e653f86b8ed6ca9d59c74f3c2e20d2c27f6d7319d37750d5b49a4c18047c592e3c59c9fb932abe038f29e6f5d1a5720681a19b78949dd1f10d59bc7d084460fb79d3f22cc399cfdc28cd576a08349fa0cf296a7d023f171b372482844ada0ac91abc258e885691922dd5317df479c7e7 +f846795bece809bde68bcf7effc7981cad4065533e4c66cd19b6a862e27367d46cf54e81f2b1308cad43fffd9b4a99018f3345adceee0f3b0494502ab85195043bd44b971ff6a747bfec532490b6b4f4e586517044bdea2a89fcc46d52272f002a0beb143e1fc191e95e57f0d83b345ddb18dcfa297cf92c5e4ea9cd82a513a7beb5d72d8246a30db624da4d6d227486f1aea271f0ba101cb8b62d0d03b3818b47cf48639552bd1c861027c6d10ec28a93efb07035a4d7993465e14b99dad91e5b7c9409d58262ceae1c9e8511031688c761cbd32847eb7fe1214f9be17313e25903e21fac18378de9fff017109bb2f3db8ed819526923b3fffe40981166f1cf +c8a7a7077b9607a6f20fd5322685b466009e05816179e89906c7f6841d27a9589274121595b3e2a432a2ad170831ffb98e10910d1b20dc110d084342ebfad228711c43d315693c8c596535079db0633d995e8d2976d42edc9e481466f4ff11f79fa32487084f69643bf297ee95de0c8454c6728a6a132fbc7a9ceefe469366a4cdd3e19eecae861cabdbeced2149f40478a7c7a9135d93037aef99319378c0183518f82d537fee89690da6868a04fdb8fea3dcaebde4673a57807af5e612399e9ac36708032dee528cfd891f7c556fc3a3ffdb6f20ddde7cdda24c8cc3323f3da8ed5c9d9d4696752d2a92cbd920ae89a9bc967574c89b41fa56f9944009c6ff +fb9a28ba73758e137bccfb5e1f0f4a1789a2d66ec5dc0ae1085683795bf2a29038ec98c3b066babf1e25fb0b07281ff8b64d0aee03ec6de3d2ed7c0d87c95c87b19f586369118059c66c37120dd95e51d144193eda26636ca0ac479edb72216019dbf82433391c44d662cce4a61d2fca0513e3a82a66a0a64a19f4763558e189f56082ccffaaebd4286077ff34d36b9c47a35ecac312d175c68b5c71b822466136c9e89f6ebfb5465de5e8262c4ffb6048f64331fa4a64ad28049175a050b9e735589e653e6594073b507e11074911b97aff5dc3dbdc1dbc29bf3f2d4aad783a94511a38e40cc0d226581cc1e3690ba0a3760d91881783a86ff86f5afb601a87 +d593f09bd1bf3e5dca28acfb5aaf6a26df9cb77f84d79deedc6462421b34a014cfb993a08ecdd502df992b28b7343101814dfab7680f26235cd2513725a19e60925bbf61527cd80d1cd853e66658cff020fb4460416e30b3d9588cfce9c7cee1bb3536136a24e5538f5e383e80bb3ada7d464510a1431561f96e462496dc334988b30160d6194cb7dffcd0daf186fc21a8488f638af723e0838f7d6162748f116d76c3d55ad9930b4afc8df23ff1f3d872a8665401547ae6fc4d857ff800613862ad32cd942cf6d6fc6002e318cf506e24210959b06941d59d1b5abfc2e651f8772a1b8a17f498e68dd4729ff24bbda3fe3bfd92fb1c4a7af9c3a8b54420bfe7 +dbb9f93197a86bdfb0baa415e646f36bbc37cbcd1574eb5ba24ba7eb768bd8311ecd21598cf26deb17c5a3bcda2558a50f8dd8ef8e170fa09c2aea787c2dbb6c57a30a9b3dc2a4fcc7cb957a2f451a8dc98ab03f693feef9b817fa62887d744bddd64183fd0ef046863a42f3a3135a27bd9e170223979d3950f7387d8c7a32fdbf392b8607736fe91f4738f212587332197a860cd5a1bac3da7b37ecf8bab0b4fa7a5a46b46b656df5ccf3eac9154bb7688d2508c618b3a9a6bd97f83cf26b80fa21722a7b201328bcc0b1a4910acb4ba8387125b904b93be82c8362e0dc166f51f28de3eebe531bc00a7e2a6a660247e0db07ccfef43dcbf16cf717f9fa987f +dbdc77e7809c11c314ca29d827222c67b36e2bcd71af079258e411c570896e7683c8f410e4bbca02a3a150eb98889d809015035c481830b61cf6d77e444c083aedd6e7cf8b2dde57e79c5faf00d631d5bad8bf3f825c6d6b0e9f8eeca745131093be3de8d5dde9f74d7aebb95e4e1508ed714df1b532e56c939edd4aae09aa50b1e5c3c938337ce5fa3f5621a043093c4d2ec3f19c27b6a038b9ba6de3ed9ae53d6e99c0b499b463028eb8cfe02e216c052b6ba8b5c8c19b8efd5a4a21c41a3e9fb2fb9562b04d10ce412d5ab6b52022a3c11c8c08138dafe2e97d16fd1fee2f2e0fe432104b5eaa214a327834375e48337f9c18ab46aeb752f0ebd05ce3f987 +ff6ce0816620c41dc4b41c27b6ac0d682645562ccbf5981faa7f53561654f7914067e51923332b29f05a4a7a11fae7077ab43b97db1c6b2c2f91a29cb86c9b253a45849f3652c5ab7be5e7a6803d65d7daad13b4b6439669e964b000eefe5a356a1c990b0453abdfd50d357445f217737c917be334ea1713328adddee9a1d51792c49d93682af44462c92d52e2765d568e032878485751e8794a69b6650b66bed584f02283753820215949f0e552a223c06d5cbc754a7bc4266f7e0e55f9d8370519b2804dfd5688fe1a791e444d505666f6b9771b5f97d39ae8ef336227f78b5f9c673269286669d22dc17bca18638e7f3c777a15882c4708e508b278570997 +cfa54078475b79292964817f0deae565ab60fb912e95b26cfac11572df4dbe44345ed21fd8f0f2e10b595dbdf570106e2b932f7be6f7d5eaad05d63037e8edbabd75b53d36fd3669a09b3c32038c0db59e6fd4466d8eb4f1515f23e19938bc31b992b5608e6a9427828450606483626a31311d2126b065193cf3c80b2f6bdd5c6551c93d0ab84bef53d2b049bb30d3ebeb8cfd9e885d2b826b1b4fa14a90839dbc5ab07ccf93b72f4cd42180ed5d2b7e84fda2d7a58dbf5995abb8e2c1e9d8ae80b80c788e8a793fb35fc64b4f6767b387dd9493ae1fe13d014cb62a68d2615950d00c2ca0bda0064538c76d0f4245305bd6302354b348b3da62e54743d96ba7 +c76a12bb55ef115235f248923a6f7933785b8f63d142ea12687dcfec52c9377bbe33c9d27caaaa4cf18b7b64212f1e27ec5a15ee30f9380748c7cadeafc2007a3a9f9bd1d738404169db886396ea6e95d8ce99ef452fb71698b78ea679e38415650c65159c3125526a317753ae4d265ae5259fe27e97c0f126b31a1de99d4fce4a9937d065ca4e85014b4886a210df6e18ecf686baad796fdc59a8a5b30645b34d0f93d7d158ff746dc0192d05dee09496af751eb11bfa5dc2bb114bef6eff1a5832b30887bf4004d8da36c539a5094ba89bbd3076ae73d06d16c9c0248c2ca740439aacd6013c2aad7e79c0de56442b38cdfdcc05683598453d111c2fe41327 +e26cf45ee25344fc6d3ac974a29ef1f1e520de87d73bdfe53d55361d031d81879ecc4393a3d732c2388effddbb61c14abf65534da1d53283e38c43a5a0f3e29c39a7264798ed094d4a76e48a50bbddbe07c5b270eaa92d9a603193a40f5232cc45427a8fa25090d667c4f4e4d31f649464d891b40e052be83b1069be0c08ba1653c18948ffff61640cbfaa8a9957b0b4f5e096a60daff6648d31b0ea406332c0cb5dc47eb120655c8a4c71e404dc603238b3f637d33faddfe6d2f23ace99e76e7784a8e1285b86d8bcfb32756bf999b8ecebc63320e9427b98e7a4dc541fb413f1681d3b69ea25445ef51e8d4c6a04d3751adda4d5689fc7a2eea64badf76867 +da102be8321f7ba5a4452eb92e826f7a0b46fe9596d7ab1270f58b5dcd81f3b7897a5f4692056cf86376794f70f519d732516f8818e3407903132cfa7d4cfef130b8430db369ec35dd5d0716f55d82abaa270c0641a0465192a1be830a71f2339dbabd77d0636a3e625c523be9d916be53083d3543df6d5f714a68827abc4d9343e83d23536971a01a0f4d425981ab5577cfa5ae0ef066522e5a508151f4778e5d6d5aa61800912f6375438cb47c5e583bef4b35b3492fbf2938588653cad00d01b639917218e180b19bb0161c7d73ff6c3cacdc223d938dbeea1b0c6baa76685310360663bfb5f167d8ba8b0d2ffcd55bac3958155da01ec1060f7a5125454f +c0c237fcceb714150ce84c02ec7bdf07a65f0cdd0d15cebe9bb105afafdfbec455db589cd415037d8937f19d24dd889ba70d154cac1abc007922a6e25814422158b8f55f727d2d330dcc99552df9dec1cca3ab1b9f44bf61a63b987349e1a4889bfb51b4c585b270a6e9cf350a5784ea078722eb2f7e268d4d2de1d343cad524cbfb43a1f520b0dc68f1ba54cfa8ccdf0b52cdddb6535f11647d4ddbeaab7f8cc332a8a9ddd1c3dff1e4ee8b80ccfaebc795b352262f64a99b0a10fd3cfa461d5aecad3bc289690b7a22ce5e0667a517759d743c9c61f5803311b429678e1e8f0ffc0fa265d58e070550a8eb8e2d64b33888f63d41f06797313963fa5692962f +d3c6264a186d289f0eec24e81421ea77c8031681e8135444839632319ce99569a0baab80b5ccc824961f44904a7afa902352e55ec2b52cf03189fb97005e51dd00d8d4e457d3e16c6242132356ec616ca33d04a802828503683895aa075a1947ab02b87b9b07aa5ba10720240ade9326c601df92a72b3e229bfeb110a140be6045a08e91bc13b00c847c54d13f53fe5ef3aff7347127ca81b25fdb9b79c2704a376f6e4876512d2241d31cc873ffd5505d6b02771a909ce4e019033036f3afa509e6b1b5b8c38042e07b3e335e3b591f639787233f9f97536c871cbdcdde87f214eade448e782c6f2f35d682f963c9933782200ad4e46441a4385eaccaa3d56f +d0c8c8e0ccf9603ce0777dac401f8b30dd873fb36151a57ed3c75707b4721813d66322cf474728b1d300fad2cccf309edc6cb8329557f8f54ef7f9d8fc2a99aa204522efa616012ef163423cdbbc4f44354f699cfcf3bfc9923f392ee62ed399979efa273dc74c5874a1054a9710c942001874fcc59c8e098711b4203e0d0eb0ad38d3dc28d2af890decf1d1ed78137a58fcf90db5537fdf90c371fc5e585ea906ef1acac4b9988f93b53420af97987f42f1f102c85886dca2725589f6de281d7ce7f7fafcdbc72d209d35eeb7f5cb334236ac37a54e51d1808c1775f5ee3f21083827b0601d8ee7930248ce53fb88330f8ae50cc6bc8cbc23a9e6a2f8c246b7 +ea3b6e64574ff4ef05b4aad8ae79ade379ac92a9b8accc5d64a3313bf4f5a6365236ed95a42aed095c3e2c8a7b0c04d8bc604d80a262186eae7b70bba9c61cc6859a3e550ab33068b1a0eeb60b712178e8b906855d11598c14d5c15e1e2fc306010ea6f0ef647b17b825fb5fd5f5518435ee821f60df9ad37ded490f14ffb30f4ec95c06e9a68314f33db043896505de290c0c23500f24322eb48ac02ac16a2a7ca2236194d134af5cac4ded95c85f57173484cb6f4e5a02012f4b60d61fdb3d62b2b088df1c735f54b8ec77a92159911d055e43a4f829fffc8fe9a058c2e141bc83c0bc624af7dd32ae1731469df7cb89ed8929b2324a2bed03deefa78b2517 +f7053636356a373143fd0202f8b2ebf9ad998c5c39f6cbb7e57793c57890e8d298d32831d64530b1d21eb545a762bb8f65c4c485de299f826e9e264e02dc289606232a710928cbaa9f177dc6fec3d787d91cc21d2a9e80ea4159eb3d5c425b31978f557753fdff3929d5100767850ebe34839e5d6bbffb95ba6a2dd417aa8d3bec455e9047b1e461ee5c7ffca6647041673a62a0c6a8b95058972a3249632d611cf262affd6c7edadd4cc99b36fdf1a0baf2925db954b850b321996e3d40e4b17f28ad0635fb7c59654fc6f02c6dfa2a168c9495eecd19e53717fba129a94052afc1eee35bb2ffd7e43b8fad470b9bd45748ef2141a640708f478f7f757aa52f +cc39535fb9870798460408a6c3b03f976b6ba45216d9d30ec67c20f9bede32159f788e2b10632cc7429746fd77a3ea21aba20f961fbc154648df0a1a018c0074de768d3a58eeac51be4a9c9903c434afc8ad1c4977b96383657f76178108fc36ed3423875c99a618f340c53e1d70aec2dce0a169a7e59122e96c86a30706560fa5a915536fe2b06dd686bea8f92aa05e1e7c931d6c1460bde33f0e01f1eec0afe32b6a7957c2808b6f92f4523ce8b8ec92aab792f33d7c245c8adc09a160fd8aa4790234cae5597aad37899846d7423a12e5a032920577585b038341846f5efc24459b77b81abfdbbedfb54eb1884e32ad496dc9b6d2cb33ceb696ce21bfda9f +c309c0b652842eeb4769ecefd1280126c2d28ed029fa65e732beace818910f7f88a6fc18c8ab7669565c569bd6c2b920742647d98dd37b28a1b3b3efcef159f0eb3e19fbc3da7a4360f888a2ca473656b156aea56ba761e7f044918ee8961fa0f800bfe757a4bec5ef7cb000e0560ce253f8a1ce2aea1dad494d05094d7bef8d63e3275f0b1af7608e8dbeaa4dc3f92e291eac3680b905f1747e6f75b6044b4fa9f3d57ce6e37683d487682ab6eef056c44046f7e062522f297fd2dfaa59cd3194eed689410c6908bfbadddad8b1c1b552003684513bbf993f0e6978c4259b943043197ae0f271b04e80febc579b5d7ac42e97e573e5978ea07fbb5f3f4dd947 +cc51b1bac81fa76e6f5490e0c03488062d1560a661cefbbdebafc218c6451d8f3e4d4dfb6206c57cac82454bf78b43934f71de4c5662543ce5ed49ed1ee14ecfa565394a3c8db20dbd4655a4320e715fe5dbace88894620db139bbf0610d8833989eeab1f615cd74631a99541b45a122f6359f15b28aebd14e13287f22df1706113025d4e491bd0de3f9de75934484dd3e3ee7c8d770ff953df4247c8d4c8aa12488e274c2b9c1a0a3189debcf59a4791c0f67cbc613c563ba1eaa28fab295d14fb951be242ac27d69fa7fd1a1d0cdfc14b8cf39d81566286733ce6bbf06026df2c22a8c820c6c71ce8445fcdd6840ce9d59deeed59bec159f8613701419c5af +d898316dfe09e99269362159cd015e1d0f8379ccc77792d08f3163d44e2aa3cf5b798602e76720513ad58096b7efae196d0240e582c1edc0c652d20f2af3a04cd2cd68fd469f0c71a32908f5128e5301348ff06e4e57adeec6aea6717bb2deab10015f1e356e9617f83578932dece6126813f712b6af651f9aa880a53979b856c6c051ac7eca5de688c03baa1619262854fe045d457ef6fe0bbc0a4a178c78a1080f6765e76d4e57261b075ff3e12d87b1e07d4c6b5b618ffb277a7f607babc4bfe85b38f17dfdf5704bafe37a06f9939a817a4aa5d663ec87c193e3a84ed6081310b0f445aa5a1c1a68e547cd147b359ee5d6b61873b8eb9562dd037df3930f +d1bd70fc7a2aac43871401434dd62f2b20558f5a22be5f3edb0681050a721ec7e6a94667891e45cf52f5a0215f1b5eff5fefde4adc790f74f7023ffb1fcf69c9f55ca201006ce46605e375a7a5da52274ad04f06f6b7e1b3317739c7753e96c3041427bcc992ac9461679b8a6929df6df24a126d8faf2f58414548dba51b322e3b95a31f28dc0180b62dfb41bc230e1888082ce7f45f9b857a93ad1a5aaa2114c9984e531e8bfb30033a8102e663c26fd7a0259cde2bc229b5a503112611e53e54ce4a04e5f4523edfc93811e9a79ab0b1ccd45d2fcc1bf3466c062a79a1c5c5185126d85e674047e110922a17020de65bc5f4c93fd25239602c7f9b7268ef57 +cc6c20a21c5607c1cd132fc29ed50df8c1d314e8a8cef0e636a4a3c553ffb18694d2e4ae510904fabfa7ef2de9937e5f294975681be68d637f67b1f24145417df14c62bf8aee43524f1d0f4c4453c810d0e12880ca2265af6f0be5e0e32d84a188e20c53fdf7dde75653ddab8f0f1a91f4908d947b383a2042587e3f80622296a737b41077aa81c9f23d8134c779e17323985440e46dc6d83285a9161279b79502a383bca9ee07c89a5f8a866b7f6358527f25968f1388e208ef3f5b46789e916fff88d50efcf866fa04ab3d03de39ef23920eb5351d1e4bb69ae7a94f27282a3075423a11aa54286b5306ba2f2cd8992ab93f265f475cf4f80c5707059461f7 +ce89b77cb99ec00346c0223ba7d53de05b69772fe420947d5b6d5451047e30c3e48d0deeb927b7c8c22f90903147f83aba8ebe5a0943eba73146586869da09a91b6efdf33389e81b98c0463597d06262f2be4c1d872ebc56422405c46e3ff99f1d06f59ce6a7f2764d52ff49f481ae89d8d6bfa227261d2b3bd1eb4dd5e04aa6c847eadd1747b994afe83fe558efca4df87ae2febdfdc1edc879ae3599a3e43b3632e45d8e4417feddd21aee73879eb3e495ca2988b2b5a1322777c5eb463b32a79af14ded62e8b7be754f6b9fe0b74e3077d5fa2adb238e59dcdbe2f9306b64587e0ac3ccfef94f1c24f85b2c5b7c95a619dbfade4edd727ac73f8c62af2e8f +c84adb2c52cede9fcd552474a0c8210bfb275cd9aab74f907ca3e6574c8870244d687fdae31f1b51aea2443cedd5531509e258fe4a080657e268ccbc237258704a353902cda13ad0b0ea78443e14f1b04830fee21bd81619e84e1097b99eb643f3667cd3b51292c358d370f48280dbcc9d3310761a0e9c22dae6005e5a374f22415286bd724b14491b127e858332c946e6cfe46dff9aff17851130163909a303bb57eb5e872fb9a0ee5c01f0ec3180ad6c4f69406d0d9834a587c0fd396f3477ce8823ecd0545a986e458460dbf0af075232523192470e0e499e247790638c7ceaec5387ce76e6fd23573b9f19962c854b3c71e416118679cf516e6a55b025cf +c9a8b211474b7de14468f3442708a75e6d8db3778bd082e4c52ec345780f42e6e2a8eabff23744537a3226f5908ab38e88e8ac8971d9a70be74fbf84e710559004a3eccbe22d7930bcaeccd595ee4973475423e8d1c572476248fee29627019c3e14a293d8a184ba825f17c504dc597c6f1b2dad198a463a844e957ff86b029c915cc7408f5c716ca26c9ed115e2a93fef9737710e0875c02df6511af42cf81c259f264c5bf5c679b277959e1e86fe272f2669d77ee77c9441ffaff1fb2afd5db978296afa5808e9d9203f899f0f702dce571f3ccbf5b807b2349e74836e78ad3e4d70a667b09e7eb408ad7b46450e99927ab6e6a65842a4de85c39c7e51dfb7 +f89eed3733b9babe5182fd99860e3fe2a741e8bc4ec93f8de4552d1c1e7e382e1d726033f47778679879d8cec8a1ad8d9bcba8248d707acd5729afb88e77a453a8de08bf11a97cd6c2eb8cd1326a12211e36c93d1956afbad98f30655c87cc044f6a5a6b0ad8088b2e075b533c99d8489175ad6c07c4c44ac295d01ae80108a1fffe987d1c732500b710dc596c44e749ded8a3f1441780857e61dc4aaa724f6405a404e766a776d892debb9d398df174cbdf80dc16ac1b43995710838cb811e3434572a62a922b1acca2af1e8266e940e47e71773b46e6905545ccf2d99d38537774fb378e1d95c3d364c00b353f55a3e2fe5435e0c1886735dc62d987fe4a67 +dd4d854a970c1637134d680f913248f221d9b21eb8ca9d8e2ec44c71583095ab329d460539b1707ec38a8966b784e34be4cfd0f4822f1ac1ca735676af0ac57453ad3993a87d2de0fe6abcb8d9a4ecb0a08014675c1755b4a9ba46ec48d8909c49167317e54260b8f213534b39de94f474a9414698cd51ce3731bf5eef0dd03cb094993531dde143940b951eb3947571c394b8bba2549845e582afe0fe912cfc19df3f58558190eb09e7f0f5b01fd0c57ffa04f2e9c3268e48a5474e7e90fb2020c962ac6d68928aa468799ef6269bf0af278d112b92752f280815fce1f637a27f1deede408d7d2e92489556bd2f24d4b0c8f1027d9d775f16c8d4fdcc0c855f +d79c7c0c47758b267e547f748a17f25d27c05ed4fece851046054286769b024688d111e1503aa0b2da666a78511748455614a54ec93cabcddc427add5b8fd2dbebb268cc6a2ab66ab20fea52b30a478d6ed9172b5000becd9b9e8e6429d520ca9b7c5c3d143a2daede49f4e91d4c4a3c31eb418316ba4d2bb278342b273bd5b0d1a14b116bd403b42a586c2f2fac69ae1993ed02edc59284e02fa31b5c4bdbe2fee63b7d2ca3348cb6d8ce812620ccbcadcb25a1520b4f917005bdcc78603cda3c879f43f83a680f1223780999314036d283952088aec6d97c913e15cb0af9dbf1991802b12b5ad47aff929e12bd15f473a7a59c9ab70e7526cae2660cf94557 +ce2b6dc951bf17bcccf71f11bedb28fff565c937d1c9931d6b8fd9185a1e52b9e97b7ab0e3ab88f64de7fb1ea22c24cc1f6a0156c5799a0e2b4c60f75b4b1c6448b390e31353d29c1bc990e1482c7c9a6bcc3ae9d136439443b169f0391ad36768122c52332aeb5941cae78783e2eed074995c42acf0e80f7a1dc8f83cc4c7b8009c99c94c4b6ff4201ec346110d399f5db1f6dce315f755f6df47f40f34abe9acb587c3d4c9f954cb24a524c3c7d304c51436fc54d6c992a76c77c5973b56a7881471c99d73a727de3a964576664013009f5f0582822525d641584ffa8c4547cb739ee0e9dcdd2809f7b88b51573b03a996f3f8984eab10b773d1d43c6d8497 +e2099ad7a82230fd8b69e43411245536f122abc311449dd6cee52ca7baaf822001ad01f902ec18aadb22a01224e111ab352f1a37f3ae968b2b0dde59693f956f4392e48891cc3542f84f8a9c0d0e8d246708633c24f2070896c2c5cb51211fa6d56c340e07a492a745a8a9dad850830247095a7e9e42645d36b538860302ad26a2947da72183afc5c53cea0335f9d72a2fd2dc1d3ff953724cb90a8c2f569bfbdee3755a52be6d2ac2bfdc86a7e647e07bd37aaddf304ba1c57e87caca71f3c847de4e5dee16cb4381987108c01224a79dcd69215c8bc9c86c60c849b1924df80448abd6c7f7411e2d85aa43a7e8486c34e8898b2f4fd3139fdd351f5577a31f +e51b5a690a288803a720366b3e4804ea25d583ae1bfe0dc9bd11771a468f86ad79b4742cf2c7f0f0ce8926b0248445ffc20e595ecbd69f7828e6352318863c057503ac028aea40e7fe37187492817b10d9cde63a8574ce103a31699e7f5e39a565594df2d600e8bef5dea09fce844b11b1478ff243efc5670421bf315351ca4ef3c1567cdbd3bb1c527bb492a1d753833b756a1e40267e5dfe7212eaf7ad25727601d4c94b853fc24dd725ff3ab82e8407c089dab820ece2babcfb8a9e8bf2be6303c9ef360d7df8c65ed001127d059cb417f0f2794a8211aba9fffa5ea1164db6591b5a5b1fcc108e8a8671f8134792801909946d6bb36cf3def7dc52de7417 +cceda9290f7b83934d6bde29e22c3646a82ca844bba8ba3548147a7e0062a725712095b754cd3acdaf4bfb99cd815891da8221697a850e1ac47bacb532b21c8ea00d714509aa4efd509732790cd2871210bb6c80da0c440e2094ed6f9486057f592c7fb4222c0c6809dbb5bc6dc93ffeb8752a35e618831b0740dd37ff9e7f12b21341ddd90d555bc88773d12075ac7e9d1eb06f2ae03f66ad96600b40e881487b1ed05e8e8089cac5d6e82cce9ca976c943d743ccf95429e6be35de548e0611dfe04c1f346cf76e8f39d6b9d49dca2327c287b9575109c0b7177e4003fa37ad51968c0644fc327e9145346b78c0ddfe35bda5bee2f445d5b0765643f73f098f +fd10f5d8b6a2ccda26b1c457b59fd56614721795262662ba06aa1bd1abdd75af3c553b33209af21ca5ea3b94ee73e50141f0cf2b0c6d3221f3a4b464a983674861cf8bf74d48a7484d7935983d865d16f7915f0c69dbcfab8afca93a4abc218d0fcef2c15962f786480e2d241633dff5abe2ee0a3e190fb2664799237cd21e96238369003fd74b0355ca17ce310d7272a048c902355f5d0cf00b64c2ec6d6a8cf37ed72a1906cd86040e7777566f187d4bc7b638e741711d06145892ed6458e2df9e00d10acf41bf25c544707a897fb8b32e6d82425620387e96e6643354031d3bd6e22f9e979e779becb5c91ef5cba3e889e55aff962658064b53f2a297a867 +ccdd7de7600ecb0fea94e8a4f6b663d05dec97f86562b6543ddc3c52e57101512ffd5ed300c21ecf55e8a0270c6064ffe05f62a4d855916bac1854eee93d8821a574467476b8fc4413fd572e1cfbb1aa33252c31bd3bd1a3a1d503b1af26011dc3fe5c01ef94a6e98452f4bb4b972383def1341ce5a4d4120b5d2b69d9db8071834c19400bdc1cfb72d60147a23ee21863a61828f87c2e48d8d07d80bf5b06e3adf9a4ff4d3f631a74b8e5c3c32a415f18bf72a07dcf8909d4f2d8468d1677bc6f049e59e08e85d9c623cb70cf1c403d1e665a924e92e2e642e9d2161cc12c75779d4a2690a5d4e469ed5ecfd6513133c6ba7078e6b5629b1057e948d650bbf7 +e7580243a57822a2e74dafc99c8c9f6149c387c323aa5cb8d7b74d4bac3613cf6b75e304c344e73e26fe121c1b0dd9b6241f392b5f6840ef826fd142603d3ebae4003c4bf7ad284a4d5394ca57621419ab6b0ab48a18254acd2e167c5cd3fd6930d792d8d5a43e5224a0b4fe74d912d465f77c3f3145adbe0faf8db40ac81bcce36d8daeee2a9a50da86616b168795e8c6d0c46ebae017173e575e37f0204462bac5759a32efd7d86236c394697d66bd20f3f232292dc53f89b00deeaff8d4141933fc932abc5adbc9dcf562f0c34f85b24da6f7ff7105cfec88c17ac5cf2abe11d94206a054e0319a562568276cd8ab42a50b6727264566e5e8d4229630831f +e97867434a89bd1630c55325b2e3f0a19a21aab608aa92b269b4c0c9f5c6c97a1e66ee8371604f67f76968702c3c92b1dc9e8beb99acce9ea51cfa26f0026bc99cb7dd944e44dcead42aa3f3d9684887aa4bb119fa8ffdb071f715cf2d42dbc01729ff61e6e7feff2035dea3963a311a641db48aadeb657cadea80e6e56533dec54317e59cfb714ceee61b562fc6dbd2fb4782f5ceca92b03304c20354b3badea94c98ece6714b931701147ae9b5aba1c7c61a6bce16641184ed2847bbf27eb42efa7fb7be06f18aed39fa0afe4a4e1ea83e69d65f9b2a1dcfb0888c7d6b9f6ca6b904625ad4e919994f736ed4c7fee637f5df4e21c60deac40c7dd7191808e7 +da2e041913a4a2f7352fe5653b96829aac9790cbb6662437c589f283c93fc4becf89b661ad906ed64244aa3b25e09556db71b88b86df5fbcb1935a39e0f81cdad62408327d8df75ef8da89cbfae224412a574bc9f5446f77c682b4367e17ad715a0b33527d64333519f23172f94528500af975ff3b0e1926c505ed226828d7fefffa7b48a589f61ead031e0694f15220125d575886f4ea2f60074d4f8868451395ed1a98cbfce520adcdb9a53aab1b5351ba2a36940ca89fdd3043b72ad1bacbad640662f74a81d11ead96ca82ec9f50d73bd63262333c37cc8892d217f10cf699ca04d81b4d8aeb83654d723539b4e394330bd435fb40519c797840cd9b6b07 +f885545487688a509c7842cb12e6ca1c7aa8c4f6a83981fdaaca524f2a81ab0b0bc9fbbc714cddf745a0a6123ce633dfcff380ac9f112526813f6d5c63e80bc25f8d86029843150b959ccf021d087b1d918826853e374698a5d9edb090e504787f5af3e30172f2b3612eff8db3f78cf4cc5f5832ee6872454dda898335fdd5fd364b571c6b8ffc03725427ded9088728f90d46b3c0872b0477a7cff8602f9790c865c8550666e25fa2fe02b4e0280f9e5e169ee85ad7a2745c11444934b5b07cb0092145e5d7a88e4c9d4c021ac0c1c4733d278dc483a89aae7b612864651b9a3f79b89906f6542b61b3300acf231def22ba96d430c75ea873c613ef0616001f +fd85a57388ddb4bb2d4dff76663b86ab6d8350e8c24b90c0f78f1b8f51a04d035c11a80bbaed480623b49fcbaa72a7354ad5526b0332805324cde51404fb125fb962fb3a1ce0b80fa0b791e52e2bcd500e3bc66f4e88dfabdbbb765f42f69da193842a7e844e65943fb629b9b0cef8a70dd53c0181da8293be92e184270d86ca24fe3c2a0948cdf588650d7e0a9cb846903d59ecebf74cf35ee156f658446dedce84cca0c8f6b7c44cf9fdbf052c48c9a2e1608cd95d4139c1c8d21f4c7d7ae198ec73f21bbd09406f97d567bf2db7d49f33405ff1dfc15911b595bc7a52aa87649a6946ad56db661431497e541087334a8b00d5d888e78aa50440bc33cd0c67 +c2d0cab01c0dbb9e1ac26b90b326752bdbd2e10ff5628b20d49c8f994c2a70555908b7d489273b59e8406e59df72f2be6fde4213f302f5ad4506e65cc8a2620be9824d46cb90e600fe5162986e0e973f12f04bbf999df0b295e10f34389ba55c104f440a1b8a46a1e5cc93b0698390a69e90d13141aae9a4566da7880e8c1119a4110449a68dbddba1ba0f1256472484b062f753c777b645ba8bbb522a18cefe8815b61e9ac3f78c3e2b7f65af66563b0957359e1aeace69c5556ff9137a015223b1d6680e353083b2187c0c365d69de3f77750f18cb98bb336dd4e69bce6812f06c3bee5e525633002da72cae78c4219905b2ff85140e0eadc2d9d54eb2be87 +d944c16fb2507259d52f5191f3870d30608444be4eb1c5ee29402a5c8ad462f2c96972950211283b76cfa99ebb8caf99938180c529b478339b29ced310c1d69865f03d0790d26d1d8405fd3c5bd36407dc172e68813d197a3e367f519bd2e1c108bf341eea37c6dd1b0687bd669eeb161b4fa0604d048f7dc2c3191828466b38916be7952bedc4118a59ef08d9c5025fecf78421e051cae4b359a4d32746301feb97aa713eff81d0eadee9b6b764cd6e137846eddbff34dbf5438473e6d1d159bebf0b995ceb16f660f4c51fc46a6d3edf5acac140e84e20cda401e0cf379723568a4f006422f5856d009445d539e2115d8f46cae45e7e232111bc87b37f1297 +f52da1e0b59ce68c38fd60a5195175492b110d2ba5616016ef05cc316d5babed8ffce3d3441aeb508d106cf5ab1881c16d0be6c5dc73c284bc7e0d4fd52d59fca0b7c8383804574f951302522e897522ae407507dc489cd9719823804f65d025a27f973dfe20c4666abccfe7bee5743851cb3b8a1d91f9f675f65cbe6fcd5a5338294b9413e55a9fd42e09b5961b6143e6ad2423d0a86be194ca159621edfe057362d4239b7bb7777b913e42f625944530e7ab5f863e4ecee5c79b5dc847c8a651452e40d59391778e18442a6803af9e06256e3026228f24a3043c41d5d61f019ca863cdeddc51a5bf56c51485077b330798d6d3de185d19c68bbd655368eaa7 +c400fe234fb25e86bbd0c6ecea11235847b624db08f6ebb123c84dd84c955e59497a2ca5427e66d33a4bc473e3bd51f07bc23b2a4325945a628935baa877c76bf7601793246cbcd3f6522d720e813cb0ed2ff89cbb20142fd21af86e25bf685cca75dcc895bdbd773b7fe5c410893e872bee271d0426f31ff2ec4079cceb6ac1eb6b9cf8771bd88a3ec63cdd5d8d414df297fe002a33d9e68a9c1d84ac852c3d3557735966000a838fa3ddc4bda25bbcc86ac09b1ac4effc739ba2c3a511764ba20edc905a6fb9fe5927927d0b70588009e86dc070dfcdc693aaa2aa11a3de0256e1de5c3444f2cec1bc96577e367ec206b3cd1a685be0661c5bcc8645c970bf +eb5d1c0c674aa705be30de7c4b8022c3e9fb198323048d8df7c44b74b85395001f0157d02801cda28fc397d0d41a455c2a12a26a8aab2bb0493ab763d94d8ea99fe7566d186beb2b158bbed63cd738821950a07305a7a6818dfb440321f8cc3d1bc8050b23073822c2d0f3a150bc5ce73336bb191b96950199c46d2b4d3b7d1246510f33e030fdd819de2512cf0dce954f93ebfd7f57934227d31aac233dedf3148f8619dcd7ff3652bf8f22ea45dd1c5f9b2382148eca79f02c5a4245701c2063743e328c964b64f5eb03f30349d405bd1465e5477bc0377e4c74faa8a052852011a3eda054e6433beb2817ab0eee2f67e52c8a2edfaccd975997cde86d2e2f +ce1095edc7310e12148831b99f9dc9222e47c05dad2a44e19654fe412dc88f4b7b97ebc305add825eaac6f0bc55e46d9db7f14ad91c6960b3f66029453fc65eeae84587efd0e30585fdd8946bed1da1a30d1bf7483b414ea72e030979c4cb4d598b1c030bdb989ba5f0e57bbd59fdb21a326d61df7048f013098dff4854566abfdc0ef29d7c8e44eed8180cce04a98c1f15fab46b22f69560dc6b29555292c14020232b873b0ad34030c3dd8be89058bed1c61d4a8848f1cd2cf37210fe44aff414891ef6fd27def8ef58d1a37c95a53c12a28d0dbfb9baa31df1293a5c512b5e8a10352565867039a8fb19be109425a21a4ea484e55beac8f037a5143dc5a7f +cb007276fd16e7b22324f083929906efae67e629d19bbe961d9c73b9dabd7945b2ceaf970a4191bd408cfcdab84b5f14114a482f61e07c0e412c26cae6ae7adc539da864cb51aafcd3fef3b1ce3bfddb788361cdc4bd7743f6ad7a6c4f98288f510e582ac0fdef653e4a02acf0a8679403e23e7122a7bff991dabef4a93ffea4788c311d10dbd4bc587c298cfcf82022c2377b9b749fb2d1db0b53a7fd5e96eda26ae260f3381227acac337e0ce6ab5f43a1bcab28e67589e92ea718e7048e8b6c2301220276e9cbc3ae5e9c5f2c01a67a61f57ad8dcce895da5084f89829e1f37d03d51a459420dc5b898f39b11dd4c89366cb8bdd250eebc71a03255f6614f +fe8a1eb6856e5544611e6f192cdf36db3ce7eaf455dae477275457edcdc3242d57868292b93918655b96816d09a027a8b6f2449fc9c65e849c3ad32ad9cecafa68dd249623a04179a3f04a47e0e68583e4c0ada89531ce640026561037efbd069b07ce19f853bcfe736931d0f1be0218a426c3586d9546c9dcea1f400366bc306b1ff1cf2d8b6bc7084aac644531f4caf20b15d8f8b9d6036c744321d114c61861ec86502f7d3061d67b279dea0839de94126e4f74e1117b7663b55ed31e84c7e9d6ac7321830b5a59346046d752c8513ee0cdeb3dd7213ee57456c85b4523a0bb7b29aae5ba9257776f7ffb1920360b9615df6d5f259cc6f101142b57965baf +c377a1232ca8499cf0f896f3e82984822aed967f167464d1f65fd0074ebd05b499aa1d4933a93e713a6e6b72048dd41b1eac511887a0bb984c78457f6881f53d7320ad89b5d00f048caa3c1f742fd774975dd54a33ad608185831ec28774f4f90903c15665fd37404703cb01f0deb48ae42f99271a9daf8eae2e79db4fa4d8069401cad350fca5782f8c1acbf379207f6500ad5170257636f98061b2f13c30c497a863e8a9aad15529ab1abc79e1095b5f212174ed25b1db9c65086b115772836ecd94d89913acc354d46edeacaf3118b77aac9b8600c8d98a10c2494616f5369ab247161a5259e86192acedff1b21d276d811d0670250e02f809cf4f9720397 +d546d7f2fdc964255adde3c8a11c81a9edaff624938e37ed3a89f0f4c070b6b6f843bfed4d017f1e0af8e249fcac330474b70864b64ea46d9cedbba13cbf0b9b3c4f584104e278a1ce44398c1ea60b996372e5650715d2a32a2a60c68d75abef7f5ccfc7c0257dd62dca4756b534941c3ad3b7d6d5ced73128372a875ac4ac76f946a568f8d29a3d0ca8465ca507fc80da0e8ab45c05b1b933bae369f7b1f2069a609bcdedab57a308dd21d6802cf302ab9eb9b0e9c22cf7afc11c606bc3c19f2949864e5d0d58c6e8df547c5ff04ffa07f66953d68808a9647461a3f02c7eb84686e40baa3520f0b582734bebecf3dc1589e05318e9dd81e380d7e798f237df +d00b29770f1365f62d1da1d3e733b8fb1a17ea8efacd5632989824f8dd36f1fff175c7200d5d4613515e77c6aea2ab9d2b816d300c290989d95bbd737eb5055fe4b89cecc87c149ed26f05f6e802564c482cd592e765d5536a339ef4c8a8675cf4b5d805640fa5e5717f58a7a68b4ae2eda6479c176b5adf11f0d4a065aeb507edaa13e6446710f2d4be18e1367c03a10c384b73c1101f212495bf4ecce71de20b3e5747def21759f3775707394774e8aa331928b3461cf18d4d98d921e5efa77b9be8df30a6392c7ca4c4ece556d063c0a9197d59b1eaf54ebb2e0f355974c9fc009a5864855dc66c2612b23147069d8d5781b7a51adb48d88704a0149e1f2f +fbcf7ca3f50d25472731e3dc3e4ed6855db0a5b084e424e1ab9d5a45f316fe87249e0fb1adf9e5c9e0286fc04f1a9e63ecbb89a7ad1af9ae855220b469e454a525d7353ec6ff8a5bce524b41b3585b24603ac75c438286ec34660fbb06c4d9687fe53ae7d9a130998c3b47a57537661cbb8bfcc9377bd9f3b2397844821182524fc9b56687a35995a6f7e60156d1cadc0b3309fa6cee233504b9985d4ed660ea549f9c7d968c4a6e9cbaa96f803501cc541330eb4f252587a95d7bcedd023be83e4a848253dbe05f38c90bce6179f82973bde3993690966747a76338549f994736565c2948d499b59eb27c1cd71595b996fc1f08453df6a8aba795610b804937 +e91cffd3f036c3240b98f0760619b143e18285063ba48d3e132bc4e09fe6661c50877409e664f3e450454d5775784ac2fa9d80ac5db9f4422142eb9ef938741fd9379ff12d074200da031ec9e2aeaf4a4d6e5fd22f8809e4a4025e2a453e1b5d08cfbad731504b217cf9fb20fd9db9f8317568cf6c04fa51fd2450868b1d74709b23e879927cf3456d14da36c4201b739cd68e3417dbed272af8caa736057d13703d4f747b1ce016ea76e2da640284a25c293541081a829ec7912164a2ab7347af114cc487d42d7b0129a8e4c5e034ad39e74b9d5a0d5c1fc3be9f5b54118e14860c110209f7f2ec857cd45163178ec100ead0213565a4e47906cc29d3a8638f +fb6096feecf9360e75285c75e1d6f0985cec4fa5c7230aa7c71d98a41c386f1613933696cfe7c06d117c70b496496983e8e39ba98458ebda587ed4b73bb314df7b2c120fb782c731c0bbef04aa65659b377a6fa6e951d2433266d3b9ae5affcd78dc741f91afed7152939d067cba906e79122235b603824d6a4c3b20e29a4d4578831479c9a117438647429a4870a18cda4eea02571546c5e9babaf078a5e42034959e266a734e79f6f740bb37ce9fa9cb230dfe907fb5c7116c30c33a3e72d5037ca6ff20da61dbd0981d61805e8c79c7b4a54c66f2c3b14c5d73ae6367e61747121f45ece5422e3f30a244ae25c68ad0d870b28283bc5dbc001a53419ef9c7 +f2258699b18cbf11043bd942ceac8969f15ff53916b0122da69a17ed061a4cd4ae0de642c591bd5522c42c9dee41022eeebdbb7313a39ec621060a08baf215d243854f7486c5a067a24aa82265b39cd6c90236b3d1c7524fefd6e72949588e1921d04de1e6f322aec6219d24c51bb9383eaade2f480cf20396fd4b8554bd9f039d1a85150bea0dd18fdc6a219b0b2b62d479aa9ff7ea3f6656f62a28156f45e80f9584ea961c86855ba757a814613927843709eb69aa9705978dc715e0560c4c2a2ce85a3a0983b1d87200cd7ccce4ad089ddc0df09e3c06558f1a6419fd8dda56ff7b9e5e8d02cf80e055833cfe635ea040db6488490093979b203758d427d7 +fdb2a8fb23d22e6d37b9967e8800292a2354637203577fe52c12c086e839f723ad7ae86c1d324c9485e3231655d409391a75a30e522a07944bbedc4b11595a4cb541c5fa32de056f30551bea213f01e71d9040b11eaaf4a326fd914663e6155e2e29abe5b481cf80f33f0a23a8783f7f9e76a79766d15116e5289088fb05c996a2e2c13a00a419f262caae70d1651361165a0900fbfc2b1a9718e2da6dbe3ff579fb442acf251bcb83aa449645884f4e33e3c5c15f9ce28df48b9eeebcc02818eb95432e7d0c9b259bc9eca3fcef029144927c1aa737ae7d933b1529040f99914e91dafe4f5b0099667bf9cd45bff60bb4af0acfd60697483e16996af410859f +fbbf9695fb3b9d132b42cb4151645766e47117cfc74e059ae8d1db8006448677a42b3f6d9a548d0f95c92d2f73cedc1f69d63a806cdfe09db453bc7eec18e19f4b6ba3f376a3c355b15e78667a0ae40164e6f7e7dbb12df01814e9eca7615e5587cf4fc426e6b657b972702febb390a07ea0fb24517b64bec3a8a7f01226fde3cf4a70d9a32515ca9b5fe3f7cdf280ff54385fa6ffa12a0b980efc6e651ded52bd9007d3519ea6fa6c0f961945faa2d34afa8173416b35914ebd8cabd853a268a165faf873f9460d01fb28f61ddc9d8700b4d73c873a7e748bd1e280c1f93c5dc0fb17f4d1a527121240e1720c6f9a16a6d40d066d5f5f5a7eeba3deb24c3f27 +c63a8e7ee7e0a6c11eda3563c7798e47c103ee83fe19d78d3f880933f65b3110ae14d87a0c4792dd339d1ed002fcf7c31c6c9642bf5ccc8be999622eadd7223538478a7749fc2050079e2c38b6dd18f5902a05e8bc44db4d1d2b6b25827897563ee088e37feec6dcde51534194a8be8572784226390541edbd72eac32dff634e43ec7c84f91948502712ed68dd5dd787846c3aefbf99dbeb653beb66ecf2dcef2cdc6a9dd390b0aa20ad2352c7d5f31057702d39a1480b80a05db4a85117709b3fea1e7599173d0abb1e2fa24ac1af1e5c931bba7471d9d06213f7cee78876bab7a792de0ef89e8441a9b7ca549f6cc8eeaba6363e763a4492f1c9322ec23877 +f5cef6e49eed0acae30a28a1bb6516d2b39a25157366287a7f5875e3b73f459511f0a5444305f890d52acdc2678e4122aa39724d6db3bad0b98d6e263d55c9de1c742964a5860fccffd28fdccf1e5114c843be53931df981e0fcd13a9f49a8d1c02778ca4b855380db3353a0fa6f49310f649f5e2372638978798a53916aeae73b014c47f19e2c3ac52ed594abed74f1f2d5f27fa8728d34f05c92dcf66245e3d46ab01a4610233fa116b2370a830cd51f45696b5c2a3029e0ed033ba0b65a99df54628c67c3f391bbd78778f6233d4db68b2586113638a0c524c287c2dc01ffd9c8038e735280bcb4bab3590e7ecb89a430c3a221c0a7ddc8d9ad195bcbab27 +d8395fd79ee3d3b97ead4513268f662a1b2431071f8941f4f0008918fb0684cf6ef3c337f278ffc6161aff9135a7c7009a970597d0d0e0682bc61490275c46309e688a44b070c8aadc420244026a83ae6c5c11dad59d6760e9ec3e8fe92c9db9792c740b38ac0084b3cf0e3b69ec342eb8fea48b4123232630ef32662c8380a803bf6c2b3dd34694c5c71c8c6e01fa7a40fc981ae1d17e4fbbd85c6131c9813008ed4b34229c6a75d2b2f758a9201bf2a08a4508753883c943ab1c6822eee2688dd21f9f78150e8fc9af4c313f9b3fded9a801af76f32b2ab672dc7a78a4b0327dbdf0b4215f47545f2d74a48b88e0c31ed3fbf15e418d3bb76ba8f1fe229e17 +d4a5d28ce3fceea3f73781177e25b8232e72b8b0359ea961a2af46c2cb70fe32fc03cf0bf0f8eb2c514432f2103c0fb554dd1926b695308d07f2aab80aaa1a76d10df5b8776c3652d64b44e38b4c2497eac49ef593a6b4c28ae442468e057ed7df0f16a8afd2f1070fd9e87b838442cd9a83f1ea522e3b86239b0cf4df49563879dd82dc03d71f275ce481c7c6d416817b0cd73a83d7bf59b1b04f08550686b3c1c1c26550d1179e7be7d549279a57b1ac3fe767f43294ca217fa7957618d7a4c6179824d2dfeaca2232f7123b9797fcf5ddaf8f1561a51a9524ddfb419e1c2697760c6603f02eeb0a96a8be8f7d429deb90ba36cc8e0afe4c914e8d0d68b1ef +dbd1ecfabe3185f16f9b1c0953f651ac763bbebccdae82daded853a1954a4829e2509f4672570bc39da8ec596d7000243412f4343c1f4bb1f960add26ede6815bc200f0c5684c8bafdf93e9a192a869e888cac4ee70520c54af713b6d66559d86a01e7f7c3bd695e328deaff0321dda1be32cc741145a41ef5efc94b82a08a74d012f7572b63e75572239d35eb04fda901bf1c38bbafabe7451eeb558fcede1483b983c56548c08e1532fecf7de83c9072724897b7f326ef90bfbd1c44b614c03ab088c7c21adcf9e34bd366eae9cdc2787b25689673b077cb7089e09d7c1f3f3ce5115e86340342c908a080ae45225df1bf4dc079f90dbccb266ef30b0f59df +cb2eb300cad6d1d0779f601b17093b264ff1181badf1ff9cf44bb1275d04f826e4614fc57933a1624b2bb505e1809d6b06cd6f8e9e0f202867332fcc89d6bcd025ac200c6a599f338ae087a8859dc5cbfafc469c39ea7e55e553c0e63c080c6eb49cd3d4bdef16c0b87f6e777c6b54554189ff767361bd3774d1d0637562a3f0bb73a1cc2e86a7bffe39ada53c6c6b84b0d15b54018eb1fa5e04282378bf15731d78ae9b530b1f6ab207aa5e002d0900930a767c26c054805510d741239e42accdde1dd7c6a810e1b2346b46a931cce42a3dda9704b2e30267806b5253ec5221cd79a9ea7b5cbcde8394213e867b530bea4fe358c5953fd24d650413547c11d7 +f0a9671413b7f5d0c235b5236d50ed76f9552eb590d3e06e99087f0c24faef2db9d18526d216c2848c58fef4df7ae1c487e59c173fa726f4719a98e29868af1024b313e0433e73921587037c12fe7429cd9869db62abd068eae72fa820e97a29bacfbe2eff26aa061f11121eab48932439b3334eebb6d550e8ffdd61191522783358585b735af4b9336c3bfe68e02c9af51af79a3b48474d7ba47a2988a62ab6af8893cf641c55a635b2fe7edef19a729109c0b04a1c191cf0fa13f98cf92383bc7a524ae30d02cb2b62710845437697aeb5ac40364bdd6e236a3446db3ed3b827edb16ee05f6c10c2afc907ddff5460300bb84b06cfa86ac680d5b40c525d9f +c1e1f6188344e2831182d7b86a9241a2206876680d1422bb01510c1405a620310a697ab7c2a9937a0b8fe6f76ea47182e7eddb89b8a0a9b1443ea1f3b28b174a19f7c49ce17ed6de65e404f84340ae53757b13479231f6a480e710828f2c2a3bb01fdd4042f530281d202f1fd060d251d06d70423906fa87523c9ff7321d9ff9326f9c8dfe579cf70664d21352913f9f43928e9f352a6ec94cf324a2dd66d10ff050fc2a584abfc28f46ceb5b4f87d3f3acaa9fd1a5182f84b3a8c8b2f7f3fa0ea5119552d9bb2bf8c62a8fdb7a41bbc09330407a8e8181921e798cf2e22c931df1e997c1584d00fd5deb139103b7f31c8450873cfb11207ea411e9881ad937f +e17da84a561e8969190f2c9f631bb21bd4e16b3ab177ffb77b3641fd5b0604baff2a8cb324830b8decfe1c355a2ee54a86b911fd82b799a0864c10ad2e612e665a45537ecb8f3eb7b7ba575fdc0d63e1415286f4fbfe21108083bfdaf9648a763a0ee28bbd202c2c7128cc391937d8ce897808359cb6cdba3dccbfe7d0d6cfe336bc11858c4b59f1e6bcfcd11901d03082ea801e6aa690563531b934b893b99423684661129b2e4d7ef9bab38fb94681ba46accddcae24e0a6e8f3cd3136c510f0cd397decb1204fad6c9f4d4c7ea71d84fbc4c24318df5fa67de76c5558d3759d46f5ac7475873cf8ba9b031b82357b4b24eac79230f0a78c3e6dd9809bdfd7 +e6993402f5ec8fe3af622f3df71081cabbf1d6aff21ac0cddfa5f945c68affadfbfb88dff9ce29f71b7300c9d9bd03f23dddfcc6711e46b11711c985d14bac39ff4e59aaa4dc6ea4ae5d498f904904cade44237408e1769109797c74989ea6b3e9fce228715553e94081bc7a5089dad7174eebe7d7907f83c59a70469765020c73e51bc17ceba1d41d48c986f429a65fa1adf92fde57704259e650ee1817b289537a61a8fe46a2c4183d1385c195779a5282f515f60607dafe0a7bbc1c950fd9975d9d4d2dbb7067b1972f7f20d7c46a2006aadd24c6ad0368141b29918ea69a767f533cfb3fb04e6394b4ee2359ee2f2940f6724c0812cea55a57c65cb11f0f +c7b7443dfe33dd862044347a98621e82fab324d8da586f3c3a5640e2868efc4400be1c80cf6078dbd886da92776c808382bf238bf5e725fcef752f0312a7e4adf84923335695800e0e9cb51a53cf586990c82e1330d9f570f371719efc7790f7bcf5acc85e318cd47af5c5e6507fae73c8db649c03ea0b327df48ecef94ce351a6779e41f4585b9820dc09a0eb341db82bc939d787a4ecca4a34021c2772ffc7d7db5ad147751464f55c0684492ef16c4111cdce775891f739a8bbcc59533ed173a271b553d8b3a28f8e5d76a6e134f0272069ea7cfde50eb08e806247cbe870ae5188327d0cbe73de193955815817cbdbff77caa582a27aa7d6c26813d8685f +f0a6841bded2543ed73375db9ae0170d47ff07ad73f41010669c363c6563ea4cb590fba517128b3985c7d314b18abee50be4f32c2975ead6db535476b8423697c655a157d7e42144699049aa2d290b9547ff27b80fcf3da4262b5c7e0e1d5154a140d671e0740c52224861b8604dc1f0b409cc274f3fc5f666355c7cb2d396e7edc590692207e24d2241c0ae53f72f50bfe0c21ced8d9adf6608daa59c6f83ce45300b9bdbddf9aae8b2fd99df312cd90bc927f98008c089b6e38f85e59d1ed0ec386cbb5bc3e0f13aa9f9c9d0c6276465e1ce28c484d22e13f0fcc15963085b3a9ed1563786a9ffa065a2e6c0f74139a2e2e6625aeb97866e75c6c8b61d5157 +c585549aeb2e6c6b7b41142511f290f4ceb72daf63ac81745a563c154c2ce4f0c9bb2bb510395e4073a1e03f42ca579a21cc1825fc0f7a208ee0281e2ddcd07457a5d20f0f620e151234c14fad2284339fbec5f450e65d454f4e3ae31ba296b2ef08a5308d81f3a1cfa9b8f99f35d0e4bc3c945de6611cde94aadb18d80b1d8aab20ec89f27d6548412cf82dce39b159be9eaef3a504d53825c4a522d4125583248ec17d62d8999406f2e51f1f84a42c3b9603862b1403fcc17338d1ff0a3d52f40ea16eda3d65c66456927314ddc9d24035ef20b41a4255328599f4654f8af60be1fb75f011bc94896c9a10fa2f7623288bf21a852a22f28fbf78d9cf419327 +cc014d8f079e149a72be1845fa211a6f131fdf2ebfea152077d478bbe67923f2ec691ee4348dbe7a3861b270a988c1dbc1aab54ccc1a458d3569a2693c9920e45e2fe7773f0d4498f78720296c37d8beebf3585feb734a5a459f5ee9b867bee05abb2e8c8f4747845db85ed9d3d73867798d603b78d6cd0766d13d405b4e00e7a226a2de98a315d010123084c4084e765c7541a692245d1b9d5c2131a32611ff28a1840dd62a2336cdcd460c4c6cccc9e01de38d4ad43c582ac7764b990d9d1755c491675db2f3bbef9a9498ea30b3c037693d808b90d12985fa076127fd10aa500f44db65d0fe5ec8317ff70309a674e30eba81473773b39a9b8eca6ceca67f +d623753c846546f89da0f032a2b38be75228a884bd4ef5a3acf026d6ddfd3159dd45ee0ca6e7bd27040ee9901c564740bf4520ad14547ea162a0ede9775666a6a521acade0a08f79702b54dc047e0052503050749a1c73049c651f5051e04bb9cc1f4bba420bf509ebe51c541e4d99224039311fc70befebdb33dd6acaef567d4aae3a8f5100c3469b28953bf55b922496f5c6650301fe0d568fb0a52738ff4341a958b9b12a27d35c32feaef8a833d57afcfd0f2f02961c9e8ba230c1479335ca6a069dbc26688b5376eb5bc572a6e9ff7869b7de4f98fe5214e30731f237f841cfe18b6769454c92663e473148d6cfa800cc780c11e353c0698e4237fb319f +edf82a235848d64383c754249c0ec96d489afb2cc32349b15cf488536b116befc6e7fd8f8150f16e653cb49ab24860dd9b94cf00faa06d50f4916a931cf85adf6ecd6a55e0a746ea5d7d8085672685fd5b4bd5a3b937c749461566a7046b75cc9161d6aa78ccf4367312c0f45fbfe7ff11224f8b121f55c180197fa0ed2041c93e653cf8befec2474dc79594ebe25c69d45f5188d30d2376982a5f0da59e1ff87aa7cbf77d8c68e618757507291b859d3eeefbc41535f6232ec48555e43f9356c8755c95924800c9a6a082da6f1097aefabe9e003102f3c49fd4c55a416f097f650cb2d15d395be7979ce0bf6d427cc314367810631081ccaf98a96d16813667 +fe512a7978bcfaf9120c7f90db4e967d8afea4ad0725abd98ea375bb023929a96da44621ebe3b341892c58140ab5819d51f2ba7f8d1f68f84891999cbf7125411299cf69e86ee3025e14ecbb363bad3e37379646a6648d0df2d4f9161bc36d0ece63044b383fdef28f9e6cc315eee6ba04690092df481e933caaa4cb0eafd1ebbee99bd6d34d1f4c613571df050bf32e3c84d4a878f08e2c4a84c7b80858bd6456313e9d1a880e5fd97dd6189c2b531a36d5b674a05c005430f0a37f12962b4937a1fbb1a919c86a7dea5ec46441a7a2e4af2415ac3cee652580e7b800c3d9e53e11ca12215eb5320e8d3804830e98fc564704c98ec334002603c313ee89749f +dcafa71579519f15e6c5425f485beeaaccd09cf0e0bd2a66cddf8d6f3257978098b582aeb0b8d1d0462fe50fd132a0cae418ab691389849ad0e50be23ae10a4918f2a9cabe500abfb0dc78660fa6dc311dbf02c3853d86b8259047d22e33d7fffa8e5a486e80487eddfcf7b0e461de123f81b1c2bfac74307efb0db9fe9ef4816b6186c1a68bf2cf567104336ad9da281b76ceac831381fbbe046987df6a4bcc9945e05bb0038a00578cdf1eb45102ddceb426cff5378a6b5c392a3966938e717a5f352f4ee5bfe5d2713ad64bff119e1086c0aeaf00af01776577ab5ea741916c820a4283c632bafdbf1e52e1da5a73eca042181ff7f3ac85fd2f867b5f6d4f +ce1a43d55852b598596eaa89e493336919c5354a7537d71cd6bb5e0a413dd4cd21e0fbf2a13667c62f1f9d249e27fd2a5f525f3a341ba5b7fa16900373fa04871ee4945775b7d325b4829df3c3b771cbfe9790ed971788b0b0569129fb3344e749e889e4d3de7a5cc863905e14c1d39a1c9b8973d31d5f3c20e77a9fe136d4a0059b483c2ba423ef13de8eacacbc6202518ddfad23eba11b2dc7422aee85f0ec97f7c10c3fe081e1c525c08ce14f49bce0b2638ab7f1b028682d6eef87ef4ef30f6b4ae7401f55f6e22c8802e6a1a9f6590b1f43fbe554a02fdfbabde2612c38ff0111fff97410f4bf02a1347c48ddd4e14c9f786ccdb5936921cfd57a3ab56f +ffc91055510872eba23e50fbc63dcd5a47cbb3663779c72c115e272e357f52f1b8593fb6c79527d5276129de9fffc0c55c1282dfeaf370f2a0c6ded0d77700c1e533dbef35b9aaaf0dcb4565fc359d987dad2ca62eade15c69c2a671ee49cbaacff28882acd1aa4e9214e62dd77341de962834c3e04bed09213b0e0fc605dc9df8c12cce8d5b50d292cd19edf3d42311620fbde189ddbae3c25bbb557f59fa57f0053e60f49649c4f27b9c754e714b3c35a4b9f2d78ab4e46a239ea7a3106d1ebb5bde73d1016471bb87db629d16fc1183362eccd8abc8a670c4b45f2faf81775bdcdd64e08066c95b538f1f540d98c580f982c4c0f0666a859f4ca2e0f82a17 +c9598be38cb9223de564326352090eec1f30955ed47f59c5df57082981932409912e83a1b383337aba604c4504b7046c5a6425da9bb75f76e909421bdbf40fbd4aec20883a1838e0ff1e2eed05de1cd755cc17a9c6630631a803c7b784440c3bef4de94f0cf5e81569f44e428e64290c3e770d14beb26904c4568eb64b5a2e7efe668f211c9df58a36264e51fd47b05bef54a7b4a47cee8364567bcda14700bf352b8d0adecb0c8f73269484f34fed559a3a18ca30c54c37e610bb58fb6b897399e6be75263e0759f3b9972540660460277a0ad503864f3a1239322454f19e0a87ce887e774ad39a7f03e98f65b545f021065dad8349649d9ad3ef4f3797a53f +cec0da63f1d7dc8c37b2cbc8d24ef15489792f4b8a6f2ab0e78fe359fcedc6cd4c96096ecbc411f2fa8828fa92189f1700a159235491fd375ebf6d8b89566ce6dc10b39543731fee4b2504a547b4f9c102a664bc2d4ddbe563668e3bd508721350917a99c9f4790f6dc889d935feecb1d95e47e81e147494c36b785a581fd25276cef3f4824fb202da856ddfcd76e787ae62348a889ca363eb1d115fccfb97bc0c1436d010ea7f130c167c00a3fb151ecf378cb4e891e920bde1fbcfed0b0b0e9907352b27b1e73ca330e8ef819574ddeceae6a31a6b4b330cba2e3e2c60844b18ffe17dffc41f6541845b9f2bfccf8292d1c0d4672392d3f6f55f6d0d39b21f +e5f4a1632c37293e00190ea9dac98d43f17d89938fd63c8b6d99469b66e909fbd9603bbf65c39a3bcd3cd269c9cd38b5692069cc5ba2f0e795857455cebfea5a34c8621b7e645b8e435b3571bed3616c3fad6d1a7cbd1084f59cb728f673e199a9f9dc9d35de83ca04c653c516eebd2bfe7ced015961ac70002694d5a38a8775d80a1651a41c46159e7d5e0bc375c996e398c091cec36e720c13993c4328bc15370d189a50a0da0d278cac9248780c2ae54d42132d30880904b8a43b12efd2c6dd4e08ebcb0c813b4285e5fee25f92e7db2949bc9ca00297b7df4fa613f697ed65d6808c0f3362e97ce0add8e4494a541d42facfbce0379cc37f02d6b74ea117 +c8af48ad546b4777e80eb96975027f6aee93b1311af2661436e2f4bb6784fa0df7f538b6fbd190183436b78290e88c72767e9c3c22f27644f5aac339196032587c715f58aa2df94c86492103b70ac94fb6b8c8b8606dd6e4edfadcf7621695738803205e44971626cae4d43f8bc73637d323d0ca1575cb822b6c71afed191e0da9999fa964480d3997eba383cace781c8d6e188f8f51bb13f5f73d73d3b73e17d818c4f457f1e8948c995304d754f855c73612dc8104fb134a20e9bdca192bb400031da6ed24516505c86e43e7d427fa4f63614e8969e1e1a5254c50be7931defeabf91b649084cf4e9316b5195a9a480cb6e946e086b5ab1df42946271935b7 +f1a647c1e422d953a5238348c54f053447732a65487c2a411f88f1a1facb6870b854a3524a623e06b8ce734301c38442a3ba419a5b3feaebd047e7a8bd2946de1a863b8ef363148ebe1b2160f19ac1cff706dfadac4a466b137572740045328ae37f3a143491057f9e9623ef6dd1870efffe57c4ac43f2b2b31ec3d6c24cb66c2f7920494c5c23305ed246b595f7d46b50cdaa4824a3a59dda0e7f02bb6574b3029caf67642a8475343e389fce32e20a4d5eec6a74cbb5501dc86ae01f067603251a06b4b5799d6e31f879b4646db74b901024db08f4ac886dfb771bea791923478d6281badbfa65d291cc882e48e62a3ac48db397c798f2aca2fc0ff95dd1cf +ddab57e597a1f0185866f6200c0e425f0b509daabb9274f5f790ba431e5986a28a4a8f7d1f8a2e638f782bdca96b02011d31a4a3241d4a15e866e99fe006d86b8cfdeb073adae653950637391845a170a076de8d41332b5e85196a8be2eaabd384d98b4ae7e7aba26471a3d31966c7c7965582ca00cc3f6815ed62f5aaccedc847469e10f02d37043aa6bc2acbb6b55ee9d66b34545b9d17595f98cb52d46e28cf960c94ddd93cf7541dd2a33cb95ee863c38484a70e71f25ebf37ef4258038d5f3cc37f028e058eda2be2b1fd7211f8d767cbe519507f3c77e55cc4d5da5bbcfbeca1a66d0522284f0c4a289729c7263f6284d663d70d43b1ed3b2f66df353f +c3b9093528ddadb0dbdb6ba580928c784e827aa852dc2ab59e9744806478c179e8535674017aaa46fd7ec0224b900cbd0c2e5aec9d51cbd4ef015308aada3e2d33b37d2d0c6456147248852b59f32988d1a5c837de5face56c05e08214d266b58f65d824b2f819650f0cf443ea9d9490c2a5d8d98e8544bbaca4d67db5c9d6b52f4c9c1e118a8c5a1757f07a136aef7c6496a1d67764f5611cbdd03b501f20302038c4b7fe42ce7539129b18c52c998371e52992f223489c57742c42a5dbc577424d502c594099affaadabec0a4d0f32e00b847e05f14945a11383314c5366794fc67e6c3cdea005a97d3a0e5f081e3826bdb7c3c16358db6a3357e127a1f887 +e36a70cc2015ab78e6594d7a1fd7b83bbefad905b585b5ccdb5db7dae9ff840605c6620b445e569bd2fb7b67b613a7a2f70ad6966de89c9c275db6768a4b8e95ccaff4ca720c8693fb547cc7d36653f6534b0839bb834af32c5cec5e0e3eab718e170fb046ddb9927fd3d74acb99f3ffc99496e55a9953169b7f9eb5f3e05ee999ad6fdbd66a1a0be909a5b37b897719d9acca39d9d302c48d272cb3defdbd2367c50ad528799bdeca2da3d94d9127379871a107d1af44aae2ce3069bdf2a2d5a8909e859c239dc1ee91640e8b94bf4fd63f7a345b607f3aa6557cc28aa44badd3bdb9f2fc1885c10964b05e7eb05db903921cfdadc78ccca76de1251119381f +dc5e30dd089b8657cbb0258dfce91a29371dec4a9951fdccc2c2801eca2aced4af8326bcbfba7e73b76ca5a8a9b79f869a4f708abaa984245e881faaf7eaaca6f928126c5ed2d9157302a2da3ef1a7cfa33744c0e98545353afd9d52eb720e066325a29974db1360d79503c706acd687805f189da5b13e11bf8dae14f1f825edb543a7cf8c0d6f6f86d538ed418f636fae1ff70febf92aacf64a3547127785a2a68db5962c56fe3bfca4491d83b8f1187582c90fd8b54e95c81857d51f09d37c9b03a21deade7c9b9ac38df535f86f5306ad916301019af2a0ee354424dfaf2c250a1e33556859a748e6bb422652523b34c31483b5e95250095660b4ba222adf +ec6d26cd3be14bf3d9ffabdd6ff31ea648b64b18fe9ed46e2f04ab77af14e1fea433334b7a2c4d7512b3583f1693d086633d7664207ad2c1d08fff9aaacb562844dab3ba282939ac814c39cac780af1903b21a7fcae2ef6bc83094748c3ca4f25d504dbaff105b82768786041c6194f27c5db2d1047506c2124a8dcb70d333e85aa406fed7803a1541a7f16160b9fce72a4576799290ce07e232b6c584f2559210e086d6b9bbd2bb1ef3fc27a55d679e3dde0608b94b8a944525cf7706fa1527541d17597e121a135d499c4b253c7c089b30155aa77e49940cde2b6987cf620345d762eaa0c479362a67f2a928676323cc860b0aba9de71de793dad5a27e529f +ccef649ecab2d9b1d74e56bc01cc9399ea5bd6549e35abad2ca9c45a61cd143680330c45d044e0e05028aad00ff14ef76cbd0fd1a679e1369e0c959e580386d8e5e53011426a432e0ea768e63af07678310cc4e807cd1937d5e2c9935a8eac2ab748b48a441e7c8aab09ff4b2a34d4c803dfc6624f19b9ebb20ba1a078291c16612e311ce29b2966b86c98fc130c36b73879d42a04386a7a2670a98eac988db9030b16104a3ba6b4f3d09994be452023d086f94c476384a8856335d709f0d9bde2912d622c3aa2fd7bc25ae5903e1bd82521aeb83f62d9f4eaeae10f8eadcbd717e980c91d181ed9110720ba447c1fb41753bcf593b6707241c486c0cdda79ff +e8ea1ed6e3bd50c416935e34416a5cbd813153baeab0a58a4bd1934f5526ba1aed544fa9dc44afcbb5e2172feb915ecfd6a56a9ebe145fddb02496046d10b8585f8394be544403aaf2df94829938b025b8cc70831f61a96e9f0e5374549ade26f363f336e509a116019d934ac209691e8f77d3c335f61508a037143d0fdcd8bc0c1f81c3f24bc09f24ffb03ae026cc90f501f98a2e9a3425d449c5eee71f946e2453979fafae141e43762fcd13f38ac1174902377c57d8786e1d7f8bca9ba1dc32902f5f23f6cfd3b6ad4aae991012b4f3a4f8288c9838ffe71bcaf8b591ff746e183f8fc59b602afd69f2318fb6c84f4bf1d001a12299d33aa3c97fe1e49f4f +ddbd0694e367be86590f51bd124a7641753f029aec0260ce6955829f47a30fc81530e9abf9f3cd1bb15e4d11dcc17d16624630dcc6e12161a076135de5a79bcf7824d60b4fee380b73f616ee83abd5dc524d4bfe783906b035c95ed48d6caf0dc28e88c1ed309499e7a8b37b035590aaae7b7d0be113653b3393cac566b51cae430eda51c34c2dd88b47867f8876079d12c9238467278ad772d9e0c73dc80433bd79d6427bf6cae988aade5e98e0474ade9f7814059cdfcb4043ecf04672b8f1f412f4dd8db127c2ad1e4f61d12e9aa4d288d65be1dc9dc9fa7fd21abf752f3e8789507a5de7f5923fc94eb474a946124422deba2c01a55d5460f2651431099f +df2fe42a3bba1a98601ca051327ded61a2d08ad270f1827370cdbfe7eb04a1845360ccf47545936cad74673d2ff319d715587a2883a330dff59c6b9af70d2acf1a855d1dcb4a64865ed1f4f520c488e1414dc73a2f5d2c06b3897aa49eb811e9b409e59e687fe0dab8159960144c37f648cb4680802e6071b9e83dd1969419dd6ec596b7eef50a43b993fb395671b0788b8155e553e11495f3fb0e7853a94b3160f79b924d67308cc2bb98869310306c69d9442ce40a045db9b225fe53a66903edcddee0bc076892bdc653fb9227a1db5f51c0791a452cf12b4a40b8c22a4805023ae701f930ce79b335596b613f96d0620a7236612fa732134cde8e2ea73437 +d6cd8dc336f1a7e0c275e5a01b549fecffe372d7095b044a164f6c6fac7b69411edc3b5eda5cd67a17cad06ff907af9bff34f0860f8a159908b3a5b6a495e5af356a88e9b3b5808a1e0db7018bdbd581b90c5dfb7d7bfe00523a94475bd185118dba9731c2d974977885515efa6b50f78b38f3e7a65909a2423bd170f1fa93cf487a8e6ee08b93bc58699ab786282896550cbeb4f4c27487c8a9cfdecf0e8a8a8474758ebe2499cbd6023f85c141c8d800f6990ceed190321686797fb3e7f4e4850686a10daf41e56b8ba6ffd7184cab343d83f75173941a98fff546922271defb511844f054a5f1af76214f068b9c9cc6652d43173214360e963ecc1fac51f7 +edf2b24978b8ca7ff19e74335d126dcb42944b3fb9e5fabba92dce92d296aa5ef120c164c09c6adcbcdbdfda9a3961500a7daf95df3380c741dd657dfe143ff9303881f4eaa2f25a90487a2428669dd3a27458a4308d6d19b2e5fa8e74158cc1efb70ddf5a809f9ddb07e7ee759392cb2d2dec295b06481cf836dfc0f36417e84d2334f4f9ad1f35be8ce941138c6e2b044461cdd0e2636c001e622a44ff3dccdbe20502429c0359c890bf984150980d3d6edf33fc12157109c57e443db8ab99753c7add550be29d5159da9a97f13075f15c1bb6565e65656c118e79294b359a26beb5480cf13893bc35c4fed5c2eb1f0cece874ba125e0abb438f55ef0310cf +fce7eba7f929d8ba611684052fe5fbca4a155e132cac5cc879dcc833001ee03cb19e5f5fd43072e22984694aa48cad0d8ed624f3899096e0086f748197544a4b1bd07cad69b0a147a876081397737b4ce5dd20077f9b01d9edbd9181d718b183974f479f9a052d40315b61213b00e8559e3ac231c80cbc62f516bb5fc60d87f270c08d88f19122f52ff6e8be2b68733279b571f76797aa55541501cdbc0ac16acc78cdf7495174351c8a636d71843370021e86e0ff465afc28e3eb3c61beb0b4d2f8cebcf3688dbeab295570a79510515f72bb46b6203739e5b8fd9fa2e8a303d46ba00e52fe5bf76e0ea176cf4f31c894837eac8061f8c15b229d45f88863d7 +dc64650598f7f3c5c3aeaa6e01a10db965290ddca394e76d3048864eb81e5fc774ac67dbf428725ab5bfc7b1fb280794989deea85aad9fe348572a5356851ab035e798a66af02460f7060ea8d2fdba9669fcc94e1ba7bb4d1c1bcb741c9ab543e81451caeeaa45550cd3e5cf6466d77182414c11a7528ba8b3b6c994a2379b183134336c235d87711d759cd2ce46c7830691d82c9cbc46dcc4f3ff4758503c523d948da15d87ab0c1e8b0b2db95b902b3c2c443ae88928ab22b797e2a88b14203bb1c03bfa23a4d20826c94521b4feb1eb74694225a348e4d4307d4d9a1773394d6bb64d095af0788f1a3b603c2ceaeebc31c0d80e5dc0691aa0f6f1f68ffb0f +ef50c8dbe91a7e2b571469b2732ac45f5912b8d977d06f7bb7efbbe31902324c258eacce14d5f550448f6a6f63e3c457cca6e4ae6af453112ee8466e24b13dd1c739cd08a82e482c9ff152e92edd7c4b2b279a15187bbf72b1e4977291113abf494aada3b7654b588ddcbffcae4cc55b952e9da412dd9a4ac40fea596cee6957f064364e243b2572149855aee34dc21d4ab83140ba3d14d646dfd2254f61d5eb5ebd864bf88074fa23b0721db01b1fe5f8073d88ee5dc60dc66513039b2bfaa9fba3a3d02b2035c2b3b6690c03145e5761f9d36d801980268ac5b37b1143cd920dccda26517f1c330878c3f102ab74d5645470b814fec66fe04e7e8d5608a697 +e91e1eb64f1390e89acee6fe3be3d639fc900a470f0c57daef1625d96401ce99f8343df28aeeef07a6b1bf8f4329bccc24ab0614cc3597c300b6076e1e04724401b9832c6fa8b7f074f5238914daad4958daea65269a3df91b06c2442865dbd3ac7935380894787511b5af2e383b3419748578a7a9afd974ba1b331f7cb0d70b786f49deeee908aa1a5d991d2b9cadf3cc56a5e937a68628196cf09a188940c3a08738dd987e6090dd4b6876811b7cbf452fd4dcff61256871222c7a712e08fb7732e362707e6b29009687501642afea813d55bf4b277af3a78e27e8ba7a910c9ff85cdc30311bd07e1f029941ba506c493c32e7cf7f6d7feeb99933236d24b7 +dc9424bd99df707f9b39ef31759c2c77e5fbfa4dffcf6b0d8a221a670ce24c2389e6288fc8ea6188c02ab570dfecb33a0abd06a33dade2b597d79418dbe0bc12028fdea5057606cf6d341e0800fed419038bbb5f283142f59147f6c6f23e9f18bd80a50d7332a3b157c94d4f70607725838ad6ed64a54a25c47d13394b65df8dc5e5e819c8d3b3a9f7cfd208a244d0247a0c9fe44903637dd427be6ae961934fbfc0d4e6ce4e534e1aebe903f40ef51704b5910dbb448115922e542101addf1060ed38d8adde4418d881a79d2cb4487bd73d3e8550861936146dbe4d59acd3fb0257c2f0b108ec26c47a634932db050ea027a932e0ddc30d9e68cfebd3e43417 +d0ea28c56421be3a64a81b42dd400d6ae1f88bc9c2a2c8e43dc81082896f8d49f163b1ef1925b058ee8a39462353445dd04abfcb1564aba215329715e145e1f22add543f08ce286ca2fc584eafcf8bc515f100c8c4ac14d28cfb44da3fc28e95e3f8c3656689b218228da99a800e238f89db795de55e327b5aebfe92433c1228000a83aef92fd0c7afc739a27319b37cd699cac90c953672f8c91c8a5f80efb443facb7b9fc68b777a7adf2726c725413c2ab109d48ae121dbdc45371d28592cc374dd619c4282f14395dfec8873814932090f347f9734948d82937adb125c2477170d95651659754f135138f52a7efbeed4d655d75ea9ac26cbfb0f56837767 +f1089fb98b8a0cecf8a8a02f1a07b83baacddbb009c3faa68bde35f9c64263f2ad1c5d6cea484933b0e4bd4b426af6cc152a062b7be868712355827a0235657446afbd8fd97e3f403f5ffa7552fb8806b4a12311f890bbf6870de16363924dd3b415654aa977d50cba59d27a489566b2182d9812076cc25ebbcc1ab256188a5c227ab1a965d469ae8ce1069ec6121d6ff5e6f91e960e330957812fd3192984a5bb7a961e9a9b16d1a4308b6d7760d534a1c68e49f1c9f8e262f42516012abc5e295b4c2add8447391925d9a99e05e6aa94c0e2c843187368f791d0bd908aa6392e40890401eb45f63b3dbdb8b6632284705521a985dda3257db1734634d4ec0f +f8793532656ae59b33f977a5e3f35345fc62e9843f01936976f5f8440c133fbcb4cb1835b367192581495b6554c3cf604a11d5bec81e4a44946101d43998ca144c0ebec59823018e968e39eccc87908ab5d420b11f95f14db89dc8fcdedd35783bbefdda1e7d95fa54129bd6e0113b7f8dc1ab8cae9990df8969dd91c9ce4c40001f15e2aad1df1bc89ef3784522c775157027efe0e3218fa097aff25d98d644b904632db7ee0e8b7180c0b5d58b9d59c4fdbff1b995b23e614a1fe75bc16956e0db249557d4cb7bdeebf9ca2b563622738bd2dfc701021f63d36bb914bf1a93fd68918cfb4ef210cc65e5c1e9d6e2cce47e14630764402817970bf7db1d719f +e4a70f0a25e23a4defb98563c279e36e73dfe77f3b19c3f713b51733d645dc25181e0958481d6dbafe80eb2b6f48651ee82ad03d582992dc74aed4c88164f44a48bf4f9628ea586ce3b27a1e1d8ed1515a2296edbbc88cd43e1d9effdf9c532ea8d50ebc6548384bad87cacc8e054b2eadcb587bdac740f079098c9cac9e7858a9b5f4db91431dbc6f8ccc134d9442ee1b1c31d621df8f1313924d232c6878096c5bc079cd688624ef082c76c406ee2506ff7fba00b10c2e0f1c062221f8277ac0e5bca8c0243172bfdf761bd17901216d3de5f30eed6dc96889d80694a71c74c93215ec4b956e4cabd6735a1b43dae7b8117e503746cc411390431a087a76cf +e2fd0c4fd870b1da9c9152246d369512a65134159742a3525d38c2a3eb6a80c1817c1d6fdafbbc015d1dc91a6c193dc399b956fb4ab3d511fe2a0920ba1f4b05922fa797e3b522bbc3782ba3106c698604688cba9fa751c6ef618f34ff6c74b8ff72e3f5ef8b1cd4a8335817e85eec2f437b0e88fc9086a619bd38908c7f9607242af5e851ae130453a66a3ddc5ca7999a1a93034f7da70e56a308019d7ed510324c300cdb471c38762f14cc49898db07addd4129c6608e0f9f7c1f28d7e61daa59f2e0cca7ef884516950103534261655f9c7a16b7ab7fc1a5a856cdca5cf87ffd3be6532b7a00b8102e56cde4f4d84cca02626cd455740625d5ee9718d3bf7 +e32436cfd3f6ab161f9a7eb11392615b63c9ed89086d65c3f9250fa01d6aff3414126905dea0c94d55169e0dcd0d921c216d4a891038a318b873cfa41a3ef2af86474d484b86125ddf472a5b0a5d3ed18f548a3276f702f03a10d4d4ad515613cf414d73ab9ce7fb7b0a47666a13b7dd2a89c39f2e51adf9747621d1b172aa4ce23235f847b9673abd130e5837542f3702a3db2e1f946a5bbeb9fa02a1fd9cd38e1e62274b03ef69b736c56b7c664c5adca96189d7759b4a2e706e4363e38a853110d710ab91ba0f92fe89a5a75513e51e9c904e94900f7ef56998730e862f0778b616c062b7ced2c4783190a8ce24449e39526e9fb0dda9493c1c22a92274af +ec54c4dceccc6f59cebad077744bdbb95507d6532c04e893683a395a88c9f1a1a24eea7fcebd16843955f9b95c5f0911716029489afd8a8ff0347bc394f4017d8dce7a9b62c3cbbda9307e9d5b8b478cc156cc9297ae516ef71d078c6b76dd4e8e006adda49618ccb5664c5aec84295e4b8689c77011df6df87d931f0c18aec41c8956c6d6e321797dfbdffa32dd33b65591783c454184781181a03fa72efc873e38d970eb85ca2595815cc1358e496bb2def6840e47c182f801ebb4811a22442132cb06937a906fe499ed21a61e0228cf1abd7a2e9265c6f0dbd739d91ae1978fafbc959df178665d2d2860118cb640175f53910feb144b883ed51f86fe74a7 +fd374fb0aa6664965a2f0cb284cc794f5afe7e2c7042439ba458dbbd26c97251fb8614ba80d4eb3219d2652d8af4ed5d92ad6ed246967fa1200df6b13ac4467cbbef9bd9e14ec3083d08f5dbb2ffbb377c99b230e9129c4c71335bdb9e04cedaac182f1f03e3145d6025286dc0cb054b0c9cf7f81f991df05934d21f0282d6c7a733a724aefeb1173db098938fba4d89f926c34f113f9a6598c1ad888c69144c2eddc7a926099238486bd1dee611e6bce2ad07efc654942a780488e92dae89dc48110efc31f732352059f01742150ce9264838776845064a775d2623f62e228819f09bcf7e303de180da7d6452c01ceb1eefe4b9c066e72163aeada25ae34fef +e6a3793f7422c4714d3da8cb9f2aad9917cdacef73bf6445baab6c846b06de67c2e3b33813a40559ef1000a2a59cedf432a12d41d4e02186846765d529789c6b0283116df635b61f16fb03019aaaf8bb5f2bb32298947dacff10b408d9ea5726bca3f687272b2e758915df63f6c67f81dda2ea001fe20ecf0d9a005812774d2c28022ea5eaf1b17e6cc148b853e3d27cb284214efb317896f85607233812ff42503a4440d02e9e1bbd8a069f027dd1e4b61820f0907173286d5fe98d150e3ad626c1c363749bf76292c0567e096626e230619162544be2fb0d07b658ca2573c1cfa3925195f234ed0f60aa62b210a66e90ba0811559b60c955c823d97ee4ee3f +fde512ea420d338ac65f474d6a47833250f5183142439a153d89972c1ce59a2c08084b5552f48e2deec4da9dd2bacdd96527aa6fc231a02800098f19fe30c2d7978419babc137662478a1613caf265eeba8ddac0874e3c258b2b9c4861dc83e7bd1fae5a10e69283050f57bb14cff435637a40a07ea51de43ea9f984b167be62a89794a141e18c9a8a8922bbd0365367c0889f089607877cd1127fb9f33833fc03a585c90a7d820d62d478eac803a387cbcf931d60a05576238dd2b930f3cf9d6d0657c8482184cbf339b0aceef96cb82d6f0cd9e7ae5c3a97c29d4af37211170874839521c9b20e6919897df0af4a91109cc90041bc6b69702204ffbe7561a7 +c5a2ee3a4663cc2ebb904e40303d6a6c43afb811abd3c182edad565909cd462b7c37bba3ecdce61c6c8c123f705938f467260e6c726d4d7f32a492fb25d51482ed37cbe465e8da538584dbfb902df5ed6b133429d9e04c3cde97dbd84f388f8204d5a669ea78f150685d6cc8d34f77bece6425fef801e9d62eb31947e871d558436377185275ae86cf70ea0563d6bdf9c00b6eca09fda489b5b496772f31a11c3ff91762673e92504d9e7019e6021181aa7385b3e28d5e0794e64fbcc3c052c7dca7bf959c0d2d8fc0da2fb7193ae85e0b26224743acd0457ab38b4b48fac75482edb8f5221bdbe3f8aee92ded973046b513b862e64d0782e4dce27990b8d6a7 +c253909e1e9fbe40677d39afdc7606e290d5e6d8fee268f661cc4dc41f54a26b9806a0d3fbb2949de77e7d624a03380b4313cd6b1173e11557db4610b04912e92792980a65e2d95fa6d31dfea4d4403e50e3db2f6d1bcd9306e25c96c4a73dfee69bed5fff41c3ab9a56717b22fa3331885fce8bdb5215c367b548834f51500d7d6728b4794ad1ef36f4a92c53902ae559ae4ae116b285c38d6cd54a82d312b1219836ad7747b9c3439a6f51be4e7e59a848ffbeb362db0525e80b5c573afdfaa7d1d643f3ad702f40f9264aea9e720a90cf89fdd1f6762948be1981c9d2cf1b2d95bfca5b35c01f55c41a8f1c48184b717ab55323d6065dcfe8763161dae0f7 +d149f7b662028eb6e0c068698a3665a865fceb6272ea513b6a1bf26f1d80806beef04a6ed8a72b6fca3a449e6107f1edec54bc2a2c6fcb78fec57fb591938c78b5735518347adea67320bbd8d78dc5c34b547584114e7bd9d77038dc15652245608130f5d01d913d34812a30d079e89b5a052edfeefc56838e50cad12465630176d3c2b937982777cb842157bd2b9b7c5356bdd4f8f54402560d293fd8ef99f73dd1e20ebab8c6eac8584b7396e44096055ee41dd10f6917008a71ce9b30eef31c96e3e3e6cb93977b69c5aa7bdbd9d716a7d5e57b5ddc3de3cd6f7346528166935d7369405b30f8d4dfc923b46c5443e056d0fc61a8de190fd70c98dff19e1f +de7dda5b1937a3f30fdc3397db17b5f329dfa8e037d7960b4a4489213b68c98fa0ebe0b6c97645ef089be0d2d8e2c3368e2f4540b8c2ecc08c935b78710abbe9022b735ac17df5bacf6bc673b4bc8ab4778164c916a476ece231c750f2abe9d3a30fd958d750ddce79ef664fe28dc7a5bc7b4baffbb3783f2ece54751a03e462f932fb593fe5eba0118ebe611d8cb655d8ca57b8dee31b5dca308c72806a1d3d459145fa2482ec65a37aebdaceed32b634dbb7fcf54c74bd0973ed02ba2e496d371b1ed4fbde7f568d58588db51e93c0f910652bfb14bc3e196b9c52eb787527a6da837983ba81e20f9a8607e6a2eb78c1633f4de96a465310e6ec1f732d45ef +d7ecf3869e1712f434b97e99bf5ac7eaa29e3be2306d6400ab5ea10b20814599a3719bde3181a67976154c50664b96ea2a20d80d03b403867b60ce97da8697b34a3698b4fe4f038e4e56085fc6d158707c5f70a444ea44c8592070bb134d54600f6bcf1bcfc5491298d92eff6218b3ff2b1d498581bc475e77f27afa4c1aba3d10b0e9e0c633dd11226baae37a6f3eaae20b3a715f0a4d69d811fa946da5a6abd81ed3c122d4902c4e543c26fbf28ca3bf6e2972c2ddee7b59ffc06347c5d4714e2253419ad3979879bb8f7f7742dbd8d79b5b18c210733228c7d704b8498b471c7152112e530491cd129cef76d880de168bb38fa026353d8f80a4789786129f +fa8608c88175693099f7808d811dfd496af7a19ff4408199134902832a85da7623374cfd2d8cd7636a8d8070eda1f50331fb7dd9ef7a534f40a0db8c041044a6568ffb603dff86549e491d71e217023d072b543e7554b568e6dc10b8b47ceba9a6d96910cbe87504a4dc72c795f2e117039eac2ac1ba4610008d37c97040080f40810c53f3b1001c49ab6481db99181727ea36c3ba6e79d7123d65084d0b9b76bcc1cfa2530ebe740962b01abb2333dd4f8df084ff20fe1199760232092e73937e4d4412244eed229c9f07daf79b93dc480ddaf646e7f9019750929a0a71c050dc1a2bf3a82e4e938c740eb2e13f057c688d91a3d2e5ab2d366a3ade245276d7 +ceb1e7d92631cb6c3c6ae39a49a4525dfac8fe96833b9f5d27ffcbaac81d144927c04b5547b79507da0b4750958590fdce2e51dc5b4c3f8d21a3e8378082d8ebe3bcf6db2e30ff05e732aa6442f17d4ec306627298f71d799ce17aca48ea2dd8164a0911fbb5b4bf4dcbc77322eeacfc5462a34ea494efd0f201a0d7e89bc54c15de3f2dc5cf0cbcfeed111bc07b6ba69044b9f1235d4b1e3f5f96bba170371c89d124ce174ca1699806ff0146a206150eb9bce8bbcb09d3a646751732daaa9163459a237216f46347b17be1f1bcc9a057d7431dc31ff84d245f110e7eeb9fc19652f7e2c889fe8486c28e72cd1b27933d35b01e4ac402a746589aa92039b73f +ecea3166208af1a2df2d17923dfae20ff3198ea40f85f9ef0438bbc91d4a7370058445bed51f0330103ee69815bd53f229304b490491199f1c2ba8cf8cbfd549b69290649d855252700cc7451b0b8505502c23435daa8a23910e232591c765c660e6b996bb5fea092e6235cde9237598b46f62f16ae00fc9b4fde835cd9833f79804650db8498f77c9541e93b3c36acc41c0612380c0f139f83d549761d48af3497187d93d8cae00a809633542f03da36901fbd4aa5a51866eaca76c4d5e2a74a079cc2ded10ed57c3d5d6aa1f86935ed8d4c3456d7b20041f81fac0f13e824ec5e4f5fd7a9852a2ce0c80a7e3de0f07119a419e45b914dbf24c2db5a569842f +c0242e6fcc543ac1e6c4f4a99a11cfc1ff2a9f19796a0944f3658b3d6ef3a807e5f6454c8aa723428e17b06003f5a28ee9ef7bf0a4c01d7a8d5f25b4c7921f2f0705d5bf1be2e2d16e0789471303e6e10ba8060d17e43b001e189b330cb3453b5dceb5d2d3c09b05903337600f61677d374a1ee5d91ff859e6eee04e8d7b130d97fe3d7b840182a116cd07bf9dd32518358dee04a95a70cc5cd29aee06a0891a804a8c2428ee0fbc1e11e3f52c4f100b601413440c7463b372da579df56b573389716b36b09941b2f8008efc50abe484b5e3371b1d5bf8098e507f1235bd1172bc6b0cce8f2b27251fd5b6b3a8be04195de2ba3e81468e6aac3d3d32eea5046f +e3c92d4cee685dc7233d78ac6460bf003f6398bbb5a6405a852f33abe2d37a4b43db46fa9f485b4d5fc3991bfa8e13d5a58ae347c030e0b5d024740ac72123213814976157a8bcb2f7254f823b05b45b4ec24d6914ab772e400c2cacd0a683b81c4dcf34b66972cd5a759594001c29a4142679d2ad6f2836665a62822ebabc307d49cd04792df2c6d32e38a58c56289cadf66455445caf32fe5b2c02fb0773d365bcb740737c336b159b3ac61ffaf1e14a18c266a764e8e9a15e0907051d03fbdf449f965d1af02628692ef97e27b2c81b097d4ecb2ebead263597f10cf212774ddcb66cfe169c896552bb432c94d4c64c847993781cda103dac40821c6d5a8f +c75891547a22469f1244bd40c2954d15da9814426b1d0199fcd16e3eed30a9c5caff9c045cfa285d98673746ceb93e756fd1070a96ec5b8c6c24d10cbdfc3d3943e4a6f097761d515b13142451ab7cab5c2f5ee552d721f7fb9bddb55a7d0c38fe477ae3e123f7faceceb393410a9ef8a9c6a00d5508646ea9635b2390a1c5ee43bcdbcaa87a19d7ccfea14f3d6793837c5b868881b3cb6622243ccf7eccceb909822fbe361432dc04313272188229813454d9c73b5e4549f73c1a8e7c100318ea2752bedb6a3085f29a31afdfb0634d183f194611771f1260075d57323b64d2a5bd14f1bda6c0c0c13c714f09793368bbd78a9faa64d8826d7c70796e9efc17 +e3871f800c774fa3ebc406e0c2cc9abad5d8304f3c60271ad1f71338201ed9fb08fc4610f4686b6e989d313de70eadd972cc4e60805eba14be463d310ccbab1f98db320190a78e40faac69bf59601ac3443f639faeb139b91ca2fa2e88dab27ba8f591200b4eb218d656073e2e82f761e63f551b393559da96519c0a161795b2aedd8fb459533982d96a601164ab38dad82e4110b5b39abb3163b6b4050acd0d56393d56e42c2534d26efe60005c7c6dba2c24c3cb9e36e36edf55566d4c757c3bd9e0d18b4dc36251f90ae2861620108182e4640782c8afe0c26bc6011aaca20be1e92969354e768f93cee01d7aa7eb6c98231932e6adb15d017d7bca787faf +efdc3c47b17b2b40dcf82f597bc0850108e11e23d3a153efe126d68faff6e98e680ee3bf6ec24d834844fef9780f76d61eb11396a92d5ccf275d58f4b2167a54b8b882400d746beebc1976f935ad90beac4aecc1833720b3dc4da29c1a363dbe5c788c0a1377c4ce000356f145afadd76c2cf6938c095817a6527a0271a4db7299722ed30149ac1ad4c304e3ba39608cc4dca20b158c3c5e4d50399292a491ed1733e8d875b5ff6367ed7d2a69944d576f328fb12622d2ba7269e0aa16d31510e638ee6d46ce58e6f0151a5e24aaebba1fd24a8dd9ce33afb59276124aff139e802ef6e04c77bccfa110ec7e4f3cb42e41559d41879dce9bdaf683a743aa7377 +c5f8907ed16a63ac47e2f631ea8f07d8f4f17aeb3ee74cc59315695338dcb278f148d53e0adccc29423eb9890383ac2c49a2a1319ff446b132d2edcf44f106ede44d1c207cbbc6274c29ccce0d62046c84655f69a20f525efa26581a525f6e426badd131f855619f6fed75f62dadc4ce0d80b67d179c8ea227c9f58cd48e157d31ce63c4782559053f6c6e9a73eb34873e33670f0781408c0a255f50c6b7ae80d035eae6daa88843f7cbcf36b99a7ba207b381788f5eee86965b76b169d03c981ff2dcdd917ea7e730ef58ec107ec8b8f16cb3a7ead57cdc5407535ecf4c52266591d76e3e80b0c6ede8a31ee89a7af3716a91bca9858c4ba7973857f0183437 +cf9cf9e369684468c6d538952e1fa8e6cc1513c807612484d11aa1fe3b67a6583c48ac7c2a657b19dfcb35be825cf1f6bf53fff170b3dd8d5111f968e886c6b7a36589bff35bacd23b7ec761d6a9eed1721c60dbe2522b2d8df96ae88bfa03b6fa238ab12f2f3780a4539798d3243f21beaf217424005ed0700c89798c4e6bbbac4add182507728690c947b9efcb0176abc8371b241cdd13eef3fea43ee08676d4be3277abb49e742ff6abe65d7e5358ebac2522655293536c3b7596c8bb7b5af9731794994c789a451d130713d545525d5a054c5cdb915a3269ac4423316d6d109c287234bb55cc84b9b04fd9e70d3f69a7f54562e70471649c91674cdef26f +c45c7859f61962ef0eb5f2ccead14df66cb6f656b13c958dc9abd5c5c78847e23270c3d6e249645ba2bf44a2f1020d8ead853b739ce96506504587c2541861dca0f4824ba8801817f00e0978b63d050298383ecd852f678e0edd9bcacb07a3ab9f851d78722b9a2c3e441ff5a25ad3cf66b2f80ed2fbb42e2023e911a3d8914606f693195034f695c89f81f369ce98404885318dcc8b8512040cb1134e3c0f62c6fc6dcc7f63c222a55a7805c7a6662c132b4634c99b0e648c757deab6bf6ccd1d423fede27dca84de28eda4637251aa68d7bf8225e8b46d2b60760787405b5fd9ebccd55435e76ec7f6a99f5b72aaef686464f3c781109d010a23570030e85f +e5885adbc3484e00cac743f515a878c4913563915b31151dcc81832a9e35c322060bdb8a8cbc303788d331071a56eb9d57f47a212180006075796792cbfd6b76679d79aaa6c67b2e2703fb047edafe97af662caa14aaa695a60f7ffd0e0e4b48ca3f7236b74a206a1468f9d0a79b455eea3af77fc6ad311a6e6eb24b95a5a082e2388453c566381325e6fc8b5c5fb35c0b200995954363ab974abc36c3b01e222aac1b094fd8b7de5bbd5fbf71c1f90efc02e8eaaf65a77d87d4f683055cc76671c42b1a882d9296898ad30cd0898f129c5d7bb13a44dc23140052392677ff8eea9afce0452103c875a64d018c974997962a262856958b9696980e6980f0d84f +d2706bc92650fede7f25e0c6b38e0e0f9a88979f8ad6e150d7c8a61d092ac77c4f6ba222883db8f8f8ecb185efa0f146cda176308ebc4275166007df3fd4eef016d8d83c9fb3b23b7ec60176860ab91341ed9debf88d94cb79f5ade495076acca54d0a0a6a5460affc0a136e8ddf0d89b957f9de230e8c9d3a4d10c9155f6ed9bd0a6d9f99fab994cc8b44930e5abc03390c007fbe3c4dfde4b4269adca5be6ea90dd59daf0593bdf14718ebe6c06b7ab51728ba2073051f5e1778919f7f43f4fca1e1589b6e3b9aaef0488c8ffb72c085a30bb0ca731d291ee760e5aff726f9d09ba1a63755c0e21ed4b5724e78b4cbfcee7fbc68399096f486f4deb716d06f +f0c7b8cce26c98b52ca0a8fa3aebdcfda6d48e3617f09d7bc531f772f616f95b7f431258fdcac4497d7b5ebf7cec4c3bc1e688f900c3f539aebf251e291370385d32f88681573e973fe59608746ed07124920855f511d4c5183b64e8656feb17bfab304443bf8c9e314d8506def0a4d4e3f94cd52e7bc7bb35225c6c285df8b24a46035dbbfcee46c4d81197c4cb51a6503a6acd18cdd98f98609f26e35e8c0e07daf523e422eab1417695e2201757fab6548386ea3111f73cca28e702844617214e738c610a8c5aa39faf99dbbbd3f3d5f285afcd04d889546289b798bc43e3fb32968135a39cb9966a5a7e8fb83f24c012bbcfd59ab6506b2cc7ad631b850f +cf7a0858d967cd0d4eae55c75db691889bb18bca5e4a70ceecdf911320755fe1af329b7b24532b9434e16d70d62b7ca9befa671c423f97c5b7c7cd0afd7c42d2f1860c32ab824d87f50046c818d08d7840139d41d4940c0c0567b06053b900e09c80d33f456a2c3b83588ae2eb8a0b03d9664419e9857a0ed12a2dd40c8d4f1e5cdc4022e0ba11dff580fa4296ab8e6c0bf24acaf3dff18de359dcc6ad6f230ab7bab4051bb85b32a90b70299d090ff5d9e34204e4d1dacd10a749b5dad015a95b944a4921f9f19c0c3c2b1cbc2bd8b8b33cb30c870c673d34fd3a4c50ea426c2385ac82536385f4809f9a32d34eec9c5a1a7a3a4d47a6ec3e1b2282cc882f17 +fa0eb49695b594b5e5238f731aeb5f1ad9cd30d866879f755cf76e74c1958d1c17cd6c83ad2cd38ac9acafa8c809762f848b6bfcd3c205a393e74c6220093b28471127f08c3f2bad7a2ed779b2c43d90519fc5172bdfeac2bbdfbaf9e681c85b101cdd16a657f26ca04bc5618f195f525b30f56259aea013c86d42c570ff833935bd2327e8741da345fd529dca121bdd88248d28c4f02c7cafebc96a4d5f1d3e77fc275c937bcefaddd7622a7be114b3b41eb9890f09011201662a81fc6af4b6ff11b928d5a4245ba5e0e08ed34f49c4bf9d978cff0bc2659fba3b1e85f63ae731c94175e9ed5f4c388cded0bcc8d0e8bc969d7d357c72296e87a25cad2e572f +dd4294636b51d9bb548d2e75bee36d39e437e00b96fbcbf84da6cd1650f7125fc4f949b9b6d926509076b3a95963bd00a0d80e1e3382850c69ced20af9dba422bff65714327313a1600830d0390a08273dd4a07b4d99d0c033d386d11cba4dcf0d85d26d66449e17a7cb003acc15f193374a57f4a9449a9b3ea65a6f47b94afd1c429e94664b6a729fc177b9cbe31d7a6ac555f87407fe341660ea9e384bbfa02a0f127394e40aed2ace0875a39e558f0954cadafcfd424c806fc2e381493ceabe29878047b01df7a2f1dd457f4f374378fa6f7f08666dc803367711584b7675540225719672dec66da3b1abc7e52da7c30c06e83020ae0ea43068b0dd599b3f +d9c38696bb63a8d8cca73139a32602ea2b9bea76ce64ae6fd2721d2a93385c0e4da772c24a1c4c18c124db7c890e959a5f22947f82a9d2c43a281afbc0068d24cb7c0e305c8dc47221683598e1b3fca8bbbd712cabb3fdc346b88c065410a4b5565c068e05299be5a8492b5b33861d6a782f216de11deef0e44f707558b9875e810fca3f9f4e4d27079ce440b9f7e1dd755fbcd64102615093544de5343421922091e91883d4ff6b2842af6ac387a954a57d4d067e5e897ff2543bf5196f0c007f616c18f93b5c746aab707314a4549c345348e0cb09edd3d9f9c1b221c41311057ee6c9583a4b9b2bac410eeacf6549601df255388d2ab203b3ae05acc51ec7 +e54d632aeba97b00ea46d8afd5b7353f5449634b48e426b8b1ffb67476060915552a664594a832fb1301e2501d3a6b81193164cc0f98fc6d5c7551eb9e1cdc0fc9ca972a9f7e294abc69d9a6a9e13c850c6ab2b514e50d8ca9ba55cc4780f0cd0b3700b7263f7791300eeffc5baee921022c0297de8a045c9c96ad9add26907d76771e0701670dc5253d65e29ba0ec2e877e29582b2224b3a3255216c68c827a1c9603e2bddda1cc3226360960f491d9433a50a875189be67c6370dff60c840ba35f0003d970060fa2c39ec32f15ce4f60f6c400d353dce1b587dfec453e22c81774a6693f4a94ce7ce55aeb14da458a62784bad091eda11b71e58b10645ba4f +c420fb8c2a1260984a39d1fd62598db2e8d4b3c0d4783fcfe27dc880f9258890d3796aac9148e538847d0628d9d75d2606bbeb446fd48b163ba32cefb719e2129c59c891c3c1770c33d5249098077b53a5b5b09d6d32b72f0b31d11707ee640579b45f422d7b6ec7af0b15fb2f4cfb716e69c53f4f4fbb5b2ef1e530b95a1e8b7ad8eb9d9b478786a50ee05d6c105bf778fa007b32e457893d3bfd637f474ce5aed5e7f69dceb272b395394967b96f678798c3d6622e8c72db92aea7a7fb0e27b55d3dc07aaf134e4f7c923184d72bbc4d78e464f52d1283000de919150dd3b80cc257832a39457ad792bb6bfaa61380c5fb98f0efd25a7cc7178626b288507f +fb46b612b71cb7d87c53ecb1f8d8cd383aa0d8f49a69e5d6b04eb7a2407ccace07eced31b3ce532222fc4b4ab3836cc6cce3824235626b0d284940b47cca4b1a1db97a401ce457a00112209b09e79b4b0d5e29f054a08d39dcc0404e0bf276ca25c5a08f1f8112b797633e91d7391b383af899ccb7b1f4c4a695c062d2ed3b9deac723e475ed59195a7db60824ad34f59aedc39f587908a692f3baf7d4a000d4c5b414eaf4e4178a4b09e9e19990be2c66027ea5e637b69841523c9d35cbd4ada007cab194ba1a9d01f081331b02fc02adf29bccecde3289e48facac0bc574d2bf1f4d4ce0a3403fae6b273fd36f874aa462e60c9668c20e8f9fffb94e1f3d27 +f25e9514c1ff6c266bbf94d90a00c394430a32604e99689d186af865599e374829134f7bd7a4e278014a1948fdeca7af0dff08e6c0759ff4bcc42df7219e8c9f2914e857944919b335e8cd5a65da9233487e42d2a77476716388a0d7f92d53d248704bd9f8db07c38a89276788e830644e45f12209a096a27b2ef685cfbbe61d476c98a14c643be442a1f2383ba4596f0d6f76ad7b05829811a1c8dcd0019bda59d962402c2341855c9750b20816abed8822d1a6f7e4d90b499e2d9c4afa2add81f99ac26c815dd5364d294ba5265a77a87bb8f74754410b33040266a1c2f94fa6597df8ccb4312f6c628d47694fccce682a6e9be2b552e7770e53ba8ba04a27 +db50561c58bdab609cc8e95fc89561472e5b11b627ece8c4a1151bbbe02e1adead8d6e9a8d2010f5112baad0b3d7930fbe625f55e3efdb17710b70333b35048bbb48cee9d742b47f27d25aac5381707e752cffad80a7ae3020018cfa71d0abc00ce600835e170a695f1ad005205f5ffc2725c98b916da2ea8c458704b93e14ba7bae2f1b4591fdc7da2efc602260d57f6b44dbced9df029146d2794192ab89abcc4410174f859042211efe2d49c720d4c6eaf844551c0c3bdf8dc386e0cf5549b3c40b448ba0d66e7a8d23bfcc515893313e3ef33f42bd1097c6299cad5a6d4aa6ec686071d52e01d8b8b1ba02be70b7f445de67841c8a130866277601d4f63f +d6e9676eb461c0225be446c543df864c07c37af39cd03bf566e9947ce8deefef269925abe5cd832fb60341131e269786c1f299d88112c47cf2e30395b252b7c704496afac809d7cffe749ece47648c346b0bbf1bbf31b7a3d72168b905ba74d9f30bab0069ba87647aac559b1d8ab2d9085e5181c82a26b9eb08aefdff5b838bd331dc8f90e19b76246e1fa1709b7f73b477bdd76dfe74c7316057d673d1b7f36f4e483d6a4e2dea4efff235cc8d7dc30b65a12fbffe9d05f6e98b8d4b9119c3d6eafbc2e9bc211e307200348dc9d9f0c3b2de98d072908327a488fc72585fed2789fff5b7175ed1b458a14517dd9c51acf787c11905303d64d376a7f30b7edf +defc3c481af5d693cc056cc11c9372f63ccf68642ecfbdfca53ac16d3cff2f42e17f8fedffb2210a2cb9e19248f06277c535fe4846cdf88024e6530a8e8d281221f5b5540ccd8732e03474bc55b13c2bba8a19779aaf8c2d07daffa1f791a6059ab7d0266eec7a7ace5fa1a37a22325c322b72fd90eafe608fec864e30d55966dec2ecb2308e2db43e3e64d827151e17ffe1e929dc3924e94cdfdca25cc5e214602ee8b87abaee40504147f14901ee1cfd04940cf403ce68cd415fd60715a6bef123771dbba929d4d2b950a59425a8b587f5dcc0204f6c7cc1777152daa9ce55d6a9711837f3cc48f56b38603870fa865221c4fa65a09a6b9e4ac02762f5c887 +c15af83435d77b0d57977ff2dae81a2c5fcfed9c2a4e493c0f49a1c2429555a2b5c61a7fd2b36f6ed100d095eb6682e766740fd3baf2705d79814fb4e89acaac0eaa94c60dfbab90e888860d757ded4bb4583b81cec0f9ee5bf04b8770e6fb280e50a532990db8880d5a903a3706402e39fc708ff65c48c1c26a46ba7c8831b6218f9dec2a3f9507225bd2ca431838f00bc4d48f9a61b356eecfa100fd0a66b7a0b3bf2a8b3b1a5d013747cc89eb8b7ac6ccd41d030aa39d373e5db547f30bf67c70dd50f76d42f25ace963647c8568336868bf0a8678c9d8086b70be9f0ff765ef3cf3b4667c322a8cb5ec2252217961d567429623a74f12a7d5c1d99a95aa7 +e3f40721cbda62b2735aaf57c8adb9ca4ddf6a1b5593de32b4eff068be4dc2bce28413961a2388b93e2ca6248739c9f392af54cddfb7ca20987e76d3add9d4d522ecb2c1e40ee0684d213cfb685a37d678b4a9ba10b848f2b585d86ee869073bf86d2f673bd135394f567893051183d26e02102242b49516f3bfd92fa3085f477ddf3da097dca78cfd73c658002819b166f2774bac853e43d6505e538dee74dab51e8f3254c85331f1d09332890334a805fb6f05d286ff9bf78c5bb8df49da1a4f942c956c21684b8ca76e3fd90c386ff58facfea665ff152c0249ad52bcf2e32650d5580be683f8b125bea7cd36c84df166d71fd70ac6b57b0bf00b2f738ee7 +e49730c6685639af93088c49f439d0ef0b676e2c4a35eb8dac657a00552854c28981eb73581b7692cba4b5a41bcb1b7c0d9aa73ecb5ea39e50dd68c6df19027c1668e60c629ff283ebeb039b015edf18717125f8d93acb0228ff16cea37d415dfbc1e2d6b3d69fc173bf6c3e3276581c03f839cc73cd7941f84a0d12fd16a667cac22e14a0be0bb0260c5f5f44526dc169933999c832f2fa21dfbc0ba23fa4a67805e1cfaa631c03d4970bdfcdc47f6d23de5105fcfe2d29820c133800978b35155b398cb4c319fbfd2859922273312b1597840026b73876e488c1ad5c084cf311c2ae7ef6eeaf8c31a8a847f1877bc00148c3d8ac04976c30d9ba753fe88967 +c9e5e4fa70d210af15fe8d7d435672100508bd23ab2fab348c4a6ed25bd4dcd3a2bbf45466d6d0b17d1f5983cc27e06d3da12022f099723e8f4790ce72dfe8eda684ffee8f85d9c2f875cdfefac65ee43b0d6e4317cc7273074d52ea5be762267e1c086ed2579db9b672d3002bb345e0da4ea1bc31216eaa5b71926c7bfc2d3c7ab78e6c0122e1dff884a69dc0d0a79029c6c90f1b67e933659c5d9bf68d3b9fd2dc04bdee771841e4ba0079f79733e06ca3838e63e9893d45a77e92457b6cd456cdac1fd06ea6473fa7cef353aac3daa8be15ba7d5950bcaef968d4a3a7035c16bf8668b763df7fd0d6028bbd07aa30ee115fcabb37d908ba23856f3fead6c7 +c9ffc836ef04d748d6dcd75ac5cc715597501ca6f5af568619e13dfd69fc4aa3e7b45039b57bdd689ab642b7b61c3ef246b1bd4406cf138e81e1278a28f8c4ccfbce1fcb7af0703763f027e4c80b7a39d21299458e117fe79d56fdfd87a93fa6a5feb5a10fe0dd0abf8fe4a8f8e49e250ff4ff1c4d02b35d22e4b3fd6055064c6960551c87dd33d95503814d3539eab8f9baa438d69686082ce4c6cc7944c2cdf342a65f3518b1bca2ce911f9537067fd17f46834797ce5289bbf53949f49a37fa916496e09ab167e706859d133eaeb1395648f6303394541dd5ee85f7f78478c42461848795ed4da87e135c5cb40471fba7160baf93c4057c3cba9c4bfc901f +c14b86aa573e3ee2d2c3f6cad9f2b787329979bf1001ee1aa7758aef517dc8d2ef8fa10dfd5c48af10a3ce1c1f6d3227b63be1afb6c02c49227d67d5fe3f09b1dee63d7a924b68fc06e0bc497a5931e5bdd3e7a34178934269f342bc9ac41e9bdec9dfe330af6fd60cbb0682e844e130f47fa22318f9aa5b55b6c7e9afb8a78b21793c39bb3907ebfeccfac35506123bffd3279613ccbc89e0b88091f1243a0ea6a1884fc514404336342d43289dd71a80e13bbfb1ad69a530e288fdf2f4284f558cba5238e2c0db136cd4e82ca1321109b8d8ca3e5ded3b425a9db6701b82ad1f5bd35700efc62582ed11753b7470fb9254780cad08f56bed222dac9b09ed1f +c4b03670918e599bde2367ab3f6b5cb3957bdbc175c99ca16bdd3597d134c29b1e28ea253a925d762703eacd152827ef0e440206f9f380aa3a940674a2a09fcffcec2d461a0e42215f7a41fdb9a0b6fcbc06e39ea67762a54002fce394cbd6b178a81cea8305f08353f283a0d469ddd7300c0d0cedc352fc79442a9fcb06b48e7e3fadd6d3283fc380e81a5b673d6014ad219f0995bd037facf91381684babaa855374f7d9a90882f8ab682dabc00e09365ee96c2d344d04625e610f141c7f800e07a5c9873da8ce059682547b9d3125443cc360d3bead69d0da2d0716334c05a7cc982bed9ce6fa1beadd734511f6dc04374922451f96b80a2379bc1a85f53f +d5800a41c8d4a1149e6bbd0f488dbdb727d81443ccaf3e10943a00f007da72d6173a0a97a914d37a3aecd1a59e93dcf03d5e7eb85793262bdf8b925d5d6b3db96424257c27f5e459b35ab5ec1f1a05f97fcf52bb983445af0e7f6d6a7938450e52ace162a31a2a9a4334273e53f5323815b0a5042c5b5f371a16f2804530107adc3caa9050035d176ac2d6b250593b0cc515c81ed667af76133247a40203df33746575a803559de50b2eddaace2328a15d6fec9292e2054d0d0f4b16c8297a9a183c7506922e8421e723f2c4cd6650974655daf7ef5d87baeea874ef0a552cc5cfb4e8a05d648a086d99f8be52f53b55afb19a9b127cb4bf7b31869ee9537347 +ecc4a129c3a45c9a0d7739203b39ca64ed684f875820d7e062b45fe423195ecbe3067a88a6e8b00f56126f40ea21dd38f34c37762cad028b0a1df1d1b096f592e3da0b209106fbbe3c3e2c0edae276c500f605755286d9ca7ea7cd67e7235d16770a0ff5966012fc30242f4d086cb47cf86f837214181cfad8ffa85812c5d0ae1fa7726bdb6c5638ca0635a0977547f96bf551c310c635cb4ca60fa5f60af03b8401ceb76fff472c85936309968c74b495b15253de77d7823cd422734c62e9e2de936e7d04f1becbcd9c3740e38b5e1bf821001e23ad0ec9d2a9f550d7b6b0f3857ff24cc8548f42e232244d5c0a40ec8a3f1956f9e56adec1c4a53049e0a427 +d80eaa4f786e522d77df641a0ff89aa98c169b44a2948161a21bc27c456f0b006ab9658f9a16122098baa07359ec9589ec1197b58c2371e550ba00a43a6dd87a1ea4ece5863d5258876665a01a3324304b81e5744ad2bb6c1fe961230646bd8f2d1979decc709d6701a9d3987cb40f3bfa128d3b8ff5a9c42bd322df8b0517ac34fa7bd167999a8b9c30d75d487714fc3939ae3ecb107f87008f1056f763fc4bc86a7b61b0980cfff3197dc1a529cf6a992375eba00bd2263398c6b6de37d7d1ff544d150c5b53e0c95597c60197657b582b837b3e86b5e0bb255f5b74724879650260b9716830c2af5df847f5096237b56c6c754ace2f3f2458d01721c68c07 +ff2c3a85dd030e4b27f2c7b8afb095e219492ed86532bcac5d3729dce3ee22fa6a69c52d9eb32c97994349fb7e15b15fda042d4fca4e845db0f4472a8fa7b13e8f24c751e01fef11507963dcb1c2f834e73fb9bb5f681d9da3b28ab329e69ffcb7bd1f268c92f2df5a6430aee346ee2e3876f2b5bf6ae8db1fe06b60837a082958493c7b9313c73e85295f199ee6adbd2b260eda85d53ceb4137c9826e946f167156f5b900afc53d0834c9174354db9cc82a495f95b3a3c76ee6f10380aca0ecc5d643cfc9e528bdb31428d608c489a98646984ab9e12c3494cf4814186ba685e54f349fed3087b01f6f23556d6475bfe57c0c3b335ef63d372a037ee8c671bf +dd3fc4bd98cf4c94da092e7764381cd8d57ece91810987840ecfea5da8d7c641b72ac134dda520598b24621d7776284ea971898e347b7586645238aa266ac7c189cc1be9f99cd8c93fdec250e6f1cc2b6ad21b161e52fb06183ce802386b80621de981ffb76f0195163afa0aa1a0ecac33fca634b5829895b847cd37e10bf86521016977e2f7528ef7bbd5d41b3e32496d8fae7048b14d1a87ab1d1fb9ba4b3863280d6b67aa33932f3f7f22d12f7e2e6dcc1cc01cbffc4bdcbd750e4575f2acc7b0b3ea2683a27e6bfc62579e4891ffa4f546654c9b640bb684c2557d2fb398912997470568a60fc32ebc5c2e997f9977febf5f99822d8ea58b0e8c255dc697 +f06eb357c68b615cd1824fede6df8688f3f92d792882ad5f1cea7b1d3bf68b733848d74b47aa3ce13a38bf99f4f10ab1a994cb77b660f71ed9383794c1522e01ea21e44d44622656ab23af320bee889a28ea8400557fe6b17c2199f78098bd40d55048ba8efc9b87a8bba87a4f6e46c87c7956fc78b4427867e8cae4c40a92db2fbda08151a8c9fdd97fc5c28dde1104d4e8bf0cead43d92d8ae9a69f5b649094caea12b9b6eba332fa3dc70bab9356c5403e76d940a605505cc025a06b21310f29f6bab97e786ebcd1d517ef205620099761118dd335fec1d07e179106f51d12676781a409f3d3bf92871dee98cd25d3a60dc13430cc94bd03b1a2778bb18f7 +c36b59c451ac1723cd37f63543a40a3d93e9233e0642092def39d3247d64624528690f89e2ea88206b6302ed9f099692dd90468b9a1611a99f6b739a3f70271c03c3f3a29168f6410349b199f8d6bc037de288d45d26a941200c07118d5d14d48044444cd201cd715f541cd2b3ee67a7d41125753c48ed1e111e355c7ec795af0a0bdd57637287a1b6f6bcfd49786f4fd1c5fa21a0bfb458f94cc73b5d4a866779b8fb9cdcd336cd2c9a34d0eaee397ddeb287ebb33f286bcfaf6488fe3a74b6663643257b299be9d69977a5c2fd9fb9acec10376d236423c338ef52472e9feee258c536b403d6aab3921900e203bbfe6e0d4898da61527dcf3c866cbfd5c3cf +d537c1c045f1619227ec4630857eb65ae9ce4d647c55ec2084d9f61e8bceacd25d16b1812599adf3ac4d10b5c0f42c26e5b4d02f79480adb06a62340ce61c281373376dcb16275efa04764cf9eef66dd951ab2271b4e064d24d9509996515f043d5646ef28086aa5df5f046f5f9d80acc7893e28b3489128a35080057aaab0a92f3479008e1bb0d0b5da0bf00d8011feb4cc0146ec5c8a017e9cbaa409ad8e5168cecce5e15c01ec5c1211707483ac712e7c662e8b73b7977d63ad5848b3cb72cf37cf9851a2e937babf6f06422148a562584386e4faa2d3507eaa914fdd15e35fd22a3eb9b68b67b9b9c5276265eef56a835e98176863975fd3816db7cc09f7 +f713c84c5c01acedc9fb98a5c33c73e94d5e3dfd8151a8e726f2197a0d11ebe03510d7f696334de789255806a85045d2190ea9876d10ef8c9b510d70e6802e83e0ce94e72e10c4b2e11f30d5686a4bc04c11765a60921998ab2ad69e7d735631f558e89e529b16dd84ff8ff83a6ba369716f17d1b0d564654e12613dd27a16a7239cf1136b9f11b741337b09560d772e0a5d482b08cf26b60816463ec7d0626ca293686e9e218fac0ddbd709b6384a94f7f7febc171be40602842fa7c225224f62527c35dd8811d97d0a3ab236470547a13e8901d3c737a293f38b857138138d3eac1d7420c3ad4b19c9a5840858f0b884058d9ed8c7a0a2ad23ceee7b4f5547 +e69d2b48ce880fdad787bb69da0397754a8a9137ac068b7d77b5cb87c58515a85f84ba1a0f39fce2e4cb817bc49918de11e6c056b2859765c756133f8a74db58ff7b7a66fc4b121e0dd559c9809a86dde43e12a3f327193f9242a4dab3f920821c95a6fc4da68155c247469d4d6843507a3353dca483c475cba31d334ed4be0f58093d3751efb1df586a7e2160a4aa5a152a0f7faad9760d61e3d07a326c5c56e23ac55f7dd39a1f3f41518b9e36bc126d9930509f6075769f4c266b2b2ecc98ccad09b825b5a6493d4f7377e107b67e6b2d19ebbe718ccd0f892bb05809dea4c6b18d567022150d9cb12cab331a21c39ddbf791e576368bc3f4c220ad4922e7 +caf41e2b7913519cde38236e1ffef72ea3583b459c585b5d91360de4eb01c4e1e7e14745ce6f5708d21c91ac6a834c8abd939aff7da8c9ba084fc3907e7065fc18ea75a1a0573f53abf4810c6c9110fbe1c16e5700bf88abafbb9e70db64afdd58e0e4651c03bb815589c056d3e24cde7d9942e18e26da60b3da776546ced30259bc77023b55504534e645326b74b8102527f2153cac7cd397a51f44f0bcbbcb93cd16a80eb00cd23e9d3bad62be1e4423f303554d22ec6b36039787e6a559ec34ad8a469ac1f9b72a747a4e60e56ca7efb96b2a3bdc3f58919cedbecf7147f945a0365d74bfd9ff04676579ec19768489181a967e9a70de1787af671d8e511f +c43835913ab6343940d955deeab93c97a8c792463273b99bc47e8dd102d94454eea892b924f361936230aa26c2b3903af8a6f090852288f6a6eeab3082577e6bfccc9c9161ebc28549b709b1e5b4150d3af640254aec029d9470fb6da409d70bdaf75a6b22436c3f2d34af37ca4773e74b1605e7c2eb7f02e47ad64a107e13c8f1ac010e493b59cc6fe22d38d4b702c1eb3e8d24adbf2b37cb4727b17833f1cc27d27f125502687b4258c0c286643004a4b53ce6f0def7eeeeba6685949f1320027e712253b32c3b24464b809a921f39c420542d8c32952e4047b881e56e4eb9154951f05d8a5b6c115b9fe77dc54559a80bc70de6244f23b4d5cf50a6384a8f +ea8e92a6a44d823611ad8041c3eb4283fc7e3e3c2aa76f61833b9f2a161f8ed384f1eb0ad818831ee8264fd81b29786da6ae7951e64463f9785bf4eba166e7046ce78f973c76ff62dca51f8bcfb3e1b3efb44214c29519099ab41d441818104b671510d5cd980d0dcf5619be07b68681a2d1b985f89077f8b0d96cdd7f3d07890c546ec1da85b97b7cfe8b7396ea1e205781c4cb9192c01768d2d20571c8d66d19a81ad6ba2580984e59e051e36ff53d57dd7ff8f490bea4b01ba255a3303e75784a65f1f8c2763049234d4613e73a0b332cdcaeada520e0892bcc94e14a0441d07e9d51b7598bbee107b1eb48357936a4f67b8773f5f3aa0b2cfa1945ac51bf +c3b05ef54a5d508f4f10fe1922890bc83988178e4e293f6b832fa72ef2e5f1a0280ccb2c01b30673b957dcbe11cf0c9cf37e1abee2b554905fa16121567acaaea67d3fe95e3ae95c7b482b4de0c597faf262124693cbe4d2812eeeab84e42eae598f08d2a89d5e6aad34a8ddc7d539f08eb7f0f3d8531a7a1330c79238c4b2429ba98593a5f0a5cfd08e57b6819e8753cc4b11795aeedbf8a282d39bdcfd6e9e3e137763e00673d16892ff3ff93559c0254681f5cf887f53631182a581d826a0cca39bc5eb84d09029f3442223f4d95f9889188a6868db820099e118801d5efcb41d1503af2629056a8f497a2bf5ee3fffef289fe7fc355af80bc517cc8a4e8f +d9c2b495555e7ec2bfdeb16969722f93dec4da7b787bc810c323e3494ac5800233bef733b3c8d87a37e1e6f2494131297b5bd1909779f93aecaac016d53ce9eedefaf501cf2bb59013685f4433ec2d0f63822263825de7ec6513d84e1d2d321d7de3307b23bbaee632fa02c56625b1d6545a2a41cf39dd4c6f36c3926cc547d34665a2ebdcf7394ce182f2648bd0e33b0d8ad37d730f831af7143e2dae5c60fbe2a69c484e9b09ff0d2fccbaec255f4167a4c4f8b073b365f139767b17590c4bdcd2e8ed0bed6a3116256532858d6655084a9105b12920542f65e6faed1cc275bbc78f3b71e91df105c33a41ec19f285dedc7ac140a788db46bd2607f1019087 +e5a8fbf4ba8dba17edface3a5c52a3fdc7c9b5634c7e6cec85fe2a6132c6ceb16809e9e5edb2a3ce07fc4a043c4d98a489366d8eadc2f442ebb5841a00b63adb76dd2675f9c6d2193dab52f84366a284dcedc0e00926091f84a66687809e3c24198cd9d608aede560d1458aadf517a5741b59209ed4c8312e6e5039ecb7d521ccb63cd61ff0166f2cdc2fab243c3f803283ca510a344f41b99852fb8bf48ea657f9e1a157d6cf9dd599676730a13f7f1aa4ed2eb98d7e84c0c6d6e6d8e0abeefc900b190bc90ee55e47b0df02827f5a99fa1d335095909b299d4255d206aa6cd080030cacf90eccb6e4d0ab71c22ca016935c2a9f7d77576d832c723a287f89f +fc0ec1ee0390cd1e1d7eb9e6b2df2ba58fdca109828ac178367214ddece87b32e332728e07be86a679150e0364fbb5d332a5e9b3e01f06fef6912f386fcd0da13ca49ee99e4a87c7ff2e5182104821f83721e43a0cb172d1ec8c2619d9d2f4c81491b9fc1b8dda1d4257607783bf341d8b6056292c935162aea1f4aeb96bf24b30ad126a8fc2d3332b006edcdc7170633a3705f016ddc45f96e401f52b73c47e1f89d1a8f663e29cef8401ea626a3fb49a37105026ead279456acd42bc02172db9ef544f8dfa0bfe883e75330d57b072cef26e3d0dec8439814f4494244215db0f07a12ae4f677e7151ed48c9f4cbd94cbc306a2762d09fb667f30a102b2b677 +c845937ba8cbe79485efffe5301447c8d6c616919d29325699237162396a272a182a2c243bb10c205177d5095c6c00bcd37091a087157216ccac97690f8cd5e58ef9e2e0826e36de3081d8180ef04c40e6c40c07a0daa550d69f031311dade888d311d978a081fddf05e130785c3277b814a384310ac71a8f11ee9a02077b5c943f81472063f80f70605c794eab44bc9bdb0dffcd0149c946475c154e26a46ae54cde6b28c4a2eeed0b1965368c3cd927a44d88934f3a2ab1ef121c4b7f368688a2132f220bfb5779193022c2bfe722179c53db6fb169706af04908441a08b43496580d6b2b3fc8e09733acbf9687b5b7b16b28e9d9aad5e1543b32aaf75ab27 +f4db6d38fe9ddad05d117e7c1f58401a4414b638f8414fb292e295a6115602f2a24442cf16445886ee42fd5f3217b977d4458622086bfd15079e841293da0d69993888be76d972dc3aab6c59c015724cb117c6142f9f908b1b640227f95b18ee5bd1f877eca1d88d18c91a15647581c30c52ed8d772ec7bde77560ceb39a68f03de40cc2d76e9b2aa8f9a70cb670107bbcd6b9bc6e7a6d5dba974e8c1bbaafd3ea00fd4e06d93cfcf756927060983502ee4dbf863997bcc3f33be7fa8e19cbd69ce75e16c16f03a73e65803981593fb036be18607e7d79726d2c02771b1f8932955050ecf38a564bc93cb80b2be99023fcc608b44d2187243aea831be5ad3a8f +c3721dd22bad4e7ff4cce46ca96b367df4482009b223a4a77f0c388ee9ae8b300b821bf3963ce51941efea990f1c63150882db7d0092f4d284bd68bd4478e351a3e39cfebf530af8ab9be254327783140740bf77098c2c9616f6fb2028a25dfa1f11de4c4f133582d4a1c35af7e2a088bfbeb59747466db98bd3d0e5c5eab5c9d78027abf2168612e52a1cd27da996d9677290bf6df800b9915d50a210309073a2853642566927013f451632e198dcb804a8cdc809a49d8fc5a7c917a34319ce2000a7d7d2170a5354c5e83eef5558b1c21c6acb1aaf21a53628d8c421c31181522d2dfcfd8750b9ab83288a342f90ce3b781edad8c9f6b98d9c7e8c0fe24837 +ca46d98f5f9457adab586813a875d60aba854558d668de133e5edb90909b88a69ea3d4fba618b2267ca9da0a5ccf43d7144b034782659a0862fea67de219e892dd106b97ff1dcbd971b3f25a326700be2b747b7d3806ccf270499a12d9dcce1b47870eb29b00a4fa662b529d07d13321157673f9642413e4893fa25436b898438dc9729cee2c954373190a46cdc4dcf58ee6fb721a487aab96f009f9f4ee3a33c4849ef33a1ba2a90c4268a73d8d7c0c2769078954279a51a005f3220e390e62d8c3fada11923808363cef1b01777472c53d08e30d053566eb11e17201cb15129dfbd188500854a77cce051fbc76d0b44a1ec7eaacac9f5aefd330a6af8e8d9f +f00b69f6fea37e1f23c29f5ddbe56ea83342ee60fcf5ec61668959eb43a7cbb5a33d6edf6bdcb78184afdb602321c1cea44b830904927105f7ef3d704b86ee970bc8d5313b4e0854d73bf21c14e4009505c3ad3e7d4232accfc8c5c00866b542362fd54d28d7628259397df836bf6d770c2aa58a1d5b8f904258f2bfd22daa2c436b374eb06dd65758842b67852824b4404a5aff8e7d3e2ca56b783f80734e6d31b96c591037bc26a016cb4cb120e5bd4367ee12e348a7c01a7f5e6db6adc28bc508d02a9f3d76204869d47ca12861ce8c078f7afe341491f080672cef5f7ec965af282752e6b9a60e98e0eee857778034b33b6302697503c9c8354e5015a5c7 +d32986237eb77acf99039c856be8e18dd2e3054ef7d57b6d71dad18a1eaa34f4d6217ddba5c06ad2653f905cec9fa15460da72edaa2542e704100b3784ec0732153d7ab5d8416532dca1f86dfd4fb636e91a34728d4a75bfc71d41fd8f56effb5b936c44b8f3ae0e60ac12d43ddfaa7e04060766448c2146c2471bbf4a654e5f4f7b575b45fe0228feeae38606c8a6ca0999b6aafea1b4aea7bf80dbea98fc8017ab3c6cc7d6f737709ffe0a879b10222209c144583190704a40bf6accb185f4483ef4e682c293c91641346f6374b9bb261cc483034a500c062690372b76dc9cae70ebfae28a529c6bde40dcf1eabf90e5488ff4d7635d37b796b17e71e28bff +c4332f2486a1268480548fc3e8e5f5d19d25b03db17e91cbb06f4f8bd00b332695cbbe247b5f32d59d8c460c384ca8562cb3bf5bd20cb0376a6bc259fd21cfca3c7db37092377f38b5f7a4096b8001c51004b01ac7485af5a74d4da684b3b57fa7628658e520e2c03b3c5ffa23579d191b5051d3244ad942a6854da736f5570251b12b60035bb9df2fcb61ed2705369834b27ddd51b94393a45d0c456d989145e81dbc4d0d1862e6ff9ff2ce8a6fabf374daa321c16882425aba214efa2d9ac0bb5f3cb281172a77b40d2bef17e586be38dabf036f4ec5d0f38dcb997ff5e6d4f80a65549c3bc77af082c01a84f418c590c741edc183925878c003c914f135a7 +e9a419038e36fcf43058f61d94bf8e94b86bbf772c113582f2c6367757fc1b02b8e4d8a5effb0d4c80eb40a799af8c1190765604efb500fcbec0e825d3021b409fd83939c8d70af04908d2a94a16234b7e363f47623c1b3665b2475f685def5961f0cba7efa0ce59081bb8d8dea28b777db92e8a7289f838f91e37677e0be480b35608cf68cc4e87085300c6fc0b19c3d5dcaeac73f9714f4d20248598154ceea6559c7a6f11dce34a950045ec461623be18695704d9a20bf4cfd0055095851c79d3dc4a57a06ceae8cd733bc0a19a48e256bc60c802447e5f83cab5c77d0b875651d8efc24b6b38b339561ac860d48ba6b9ab6ea220efa1831a95c5f2399057 +e06f9a21d8a5658788448119c5ba9bcbc158aef084637bbe0c2a77c9361323049f0b8c5a2db6ca74062c355b6f5b835247ca74907298997c6de54dac0d655ec08646e87914d0a91b6ef351f967e918823abe7a58f72f018009836032c0cd77e6ecc9cbf79687e0920e892aa9929ea2d66ac0b9e4af2fb88af199daac95001b3271b9ad37771e9d816685b03e53a7a8c5b1a52bdc338f6d0001dd62d3a313f5180643c5832cb7cf3f21fca9597aaf8c248c3ec5bc2928e28a0bb5b9abadeada5d098d9fc63dac78965ef500b6ef90dc94c120182d7947a856b70d209a50e2757cdc32fee4115152c71434f130ccb1472447baad73b08cfa3b7efdcd8f9c66ca37 +f003e6aa464ac9987d079e8b8d9cd13bba75687e47780f8c5e52e50ad67c677ba3a933901a48c4a758bc1b464a79fdbe94d0b9f5c9de31f22f2eb07a1784e5dbed07b1c24985b4ff5670f69620c8057c939e480763785845964cc372a584ff11d6dd6b9ed2c1ee9d5235a3f8e3a2dc78c60745c1a6721241aa2df882aba079ee6d8947d07a16ebe8ea7e32ced9624f5bacace5db3258b085863837c579559196f79817d77b908c1555251a2816159bcf6db575cd1bfd8e58f296d0c6dc124fef8ba3cde1108f43dd66c2b837a682c5cbc41e20581348049fc01a16347a64c5d4c61312375aa4d58c236ff0ac15f6c687c4ce3c849f7b6d9887188d494c0bde97 +d11aa2bbfee02e08b2ceebaf8b7f96bd24dbfd34b1be0c9e2ea50762c0bcf3f676872d268c5d9be7f360ace7dbb739b3e6dcd95f02fb7303c0f48fdf2c5c273bc947f37e75f04d51421a049067165674721e29e40b96c48791b8b59cc2cda28384115718299721ef32939852dc995d598c2cc220c3f1302fe6a7ae33a392e44e2d8e93615d0b070bc77cd5fe589dc3e8bcfc543a7ccca0827b32f77c373f93f9f4c9cd4c17702b6faf473318fb1a672a66ef92e55a9977ebde45e6aba6f901246dded7848773bdb29e1851684d4c9528e788b45f50b30eb5797ab58934b0cdf013d68908c0d10067b0bff9375cbbbc9b1385330950c1abf7ba0b1ce8834b3e2f +c2a4b19479df22a5dd5715a297f87184f94404cb60ee3f2e898b7d2c0096e84fa564a9a0e20b1b7f4031c9fd90b9c7dddda6f1023b0b4b03d9b7514826be70836cd3a61c4cf1c531be6815f1f72dde93ae8b3712f6e223fafecae655fab2cee3aded59a377ae15c35edad5bd954cb1cc3940b901a1c1a3680fb3c215452bfe7c581bbbf0833aa76c14881a92246bc4ce7be98fac7bb4848fffc48540fc63d70a4fa48266e3f6fd9ed64a63f77b0c2ca967fff4f4a152d816d73dbcf2b97739dd87b857e96434e849d294a0dc6a2db8fd271117e50a9a2a168b80fe8d1e5d40a7b74a3aa1297976568c87abb49beb6cec31ba534e0968021750d2c91764d52a3f +c6356a528ee3da5809d55d8d0675544c11bc6e0b748e4bb6d2ce7a58788fd26d64c8e5782ca41b8cf7097b37e28e9c34fd2c2e41c2de455c7ee52c2f931b73686e85c44fe7eb8043b310b9009d3010ce599a9f11c90971b7017df9ad5c2a3e2a7ca1a9311cf805838974ecb6bc84f55588ab77f6698249b522eb92e0e3ea075b9e5d44c716890ac2dc0b30ccf52b752fd655c77b5121c935e75083063cfe638787a3b4f84d90d89eb505fd072c0284fb508f4fb4b561572dafc40bd068a08767d514a6d647a7a2f0f5632c277fb39f1609b095c0449ec5a99b1d9b9bfdf2d333da3ece2f1fb853d8718bc5edc8c5e2e10da8c4cc64d0732aa7988678a3c92b4f +ef4bfea5f5281bc3dd2789a212b3640323141771e16b83bfd9e27a4637e84d3d449b64e8b1667934ef1c1377444a51bf361a275ba5e7ef7997e8f5ebc82fcbb0e4a10c61163cf9dce032837e49fa5459fc0ccb2cd20d83f2471b05965d14699353113efe83bdef8b1784624758ec0f5c7f64b3cb77c3430492e4f2a6c2feeb47b701b1588ed750592177c7c89344f87b8e86a240f38b25e2d96d3387b7c0d780ba08e0214008f5bbc391d9029a7ca8ea1ab9ebe5e7b900abec60ec10d4fc16fa9a01d4e375e304a4aaa59c37b6eabd17ac71128de3426f6d37543108c35b6ab87638984ac0d54ae78648ba9b0d4ec550ace8cc17ace15d4f87cf3f0416efcedf +e8844fb0baa2f2eaf7088aab02c0f0d3b48f23706b3fea7b6093ae0cb92ac759f2c064f965f02720d2d4934e19ca0ba3e39ecd4cfc4601be73c37a76edf5f991dbe0f6e5ed0a4ca77934567097196d43e1b7e6233dad1e0d45fa0b1c090f7cfacf34b756e68030509b3d418724b4908d3556938aaaf129be28b6c50f860872f4cacc2131246f38a1989467d0940925b3839dca9a75cea7847b736fa2bf9296ca2d4245cf2f102f72db46cf1c28e4a87379772d74922ee9ca9e0297e306fe84d3d7502f5ee9b2573957afbb64d08b4c4b85b9834161d4986a8e8e06b1522defbe56129ebfc96f157c2d92559dc5117af8fa6bfc6179c690bab927100f4792b9bf +e4b034cf91f42bd8c2f54184f5fd2cc9a9eda7aadbd28f73cc7f396b5c1930ee481c9842cd63bafcdcc7fd1a99aa985861619894c47fe9c8da2d5045eba560a794b111e32c23714e06c0539d4259eaa8bf5aeaa82d968c63d96fddaa86aae682e6e9b3fde48f611012e31a9740ad97214d695443fa4a51d4b2d1c6761ce64d2ddc98a084033fb343c63902d9b3648640d2579c9fc33164952ed21f21c11b612227490d018936d27678d27c8608600a4a0e2e288c841e8ae2c14515b5eef39aa956c9eb2fd925e149799d5ef41d4cef36dcb4f2f220686df09602aefcd258e0fb547712e6aa86cabcd4b6ef316c8a03b28993e28686895d5752fb127c5c7af7d7 +db5056d7799a5a436570edf5ec37eef180cfaf7f6ab952e9e714ee2428edc57b75a8f39a70891f41eb604490e1c26775d656aae16feba60a5b98e6ef244dbd9672a0921acf4f1499c5a8b5c9012d6a3b316fabad8c4726967aeba1b798ee60e632c513d68e15b35e5eb339d7a0a8394f49c31f237465c3c4f639fcdecd3dcf5dcf6b87043ff96c5154284b3267373a404a525c34902a86710f7a041f7fa962a002251294b49516264ac11830422f0f44b7a0615e6415a860e8ee5c1c69dca5c2d9e56f21873e0c1b08821354ae5a789261de7370f888e3274236f11ee2bab511e1167cdac9d0e6d465d61ef7cee340bdc9524e7e80de89cec55002d70bcc8daf +fb77e356dbdbe4350a62e6032d0e4c3f5f10f9f961c22bc64c26189b66bdff90947a4e1f2249d3416dae4eb9bfa8346cd7dc9c1bfacb79857c401843eef36de547578d88fdfe2971269f9a8c8bd1fa2f178824f23a148b12f8c14247956a8e201ba5dfde091c55fc1113ec396c1f43ecded24d3b3a10459d0b25715c6a980158ea159d195b8e35c75e8138675ef5cbc86eace2280f815f3081266483e61681902cd7add372838d238f86cf7377bb0e5d88633b5f77c8d793e4e4fa4c808d4cbb4cbb09ee5bc353a7db858f857464a7314fa21766e5b8d45c5e0b19091f963f3dd73b6864f44ba329e6551cd8b2acea9694847fd02f70ca202346d64fa5ad9fff +d66db982457cd287c53b13b4f71d0910823150127e481ac931f41cfe153f037f6b013129435bfabd7f4b7c4e53fb1906b86d95e43bf3748e12853267a9aecce19c57d92fa6d9a44c90482f5acde9a123ccfe01bb8ab5ccebd416d294d4c05649dc6876634227f917097759ee5f55015d6d2fc83496efe4f00779ab49be8528a3dbdf23468f2d30dc2a3f081ae90f2cd0cf0cb8239865a7887a613aaef94204bf28b07f2714343d66099e8ae2cadd7015594e7d333b5c415df849fbe6c7ae4ac2ccd54893d9f42bef48150355589a8ce5d29ff0f0bacc72ca531054560a67cc8906c13fc439b4af77f90d86a33ee3eb8e0ce209ccb8aa1bfda85094619a32757f +c375d939e960e5654c4fb83c8b399656d6529967eff9dcfb6c65126c9e501a370587c6a0d37a298a02ce5ed587106114913d978d6f2e44c6ce2f0af9a64849a17f38915f3704c475a6afda1889c53d3bdb602bb84ec44f8b16b024af73d354527a2d63002b97a68260b30b052386792a13b5939c7a9d1550ed666cb8283b676d020fe0e7a00fe90cc0e06c165f616f58e7aee078a35d88cb6110e4c96f5ba2dfb56ad5036999bbabd7f8e2e984f26a84bb16fc5f36b175f9d785c3efd253b3ff7bd6299bdc35e8c823644df2c0bd31ca8d4b6b46f4dc870a5b0f62d8dca66b88a29192a62c33c09ef34e4c589c6bbfe4d44ff11a98388a1e3af1b02f20c178ef +e25d463b036ec724e500a37a28219a109b4902fbb81841b5bde83bf07221a8b32a9086f4a3fb4aefd47d28994402ce9a2d7b4bd8ba71c7240d94e897d4e65b7730e0de750b30d3fa840d375f5a219323ff22a92a6b2e2f5e9dcac4b383e6dc16dfda104ff3c145dbfe1c80b7538406b5fd772015b5012a0070d2c9757670396129511bed4db7d1b40e9c1252914b70016949ecc07962eaf5d21ad87e6f5e0108191b667b70bbe5ed772678b68ada8309941dd293835ef6f201252ee32a6243a6f255e7708be5d831e77c2ee450b0eb1fec12e0beb8da2f0f0b4dd90195b1489d7ab50132a50a197466ce3343d2878e382090754a7be0e9414099eb60ec0b1227 +c4fb102b90d58c0c3e65260a37497635dadbd65fdadfff7a90a29f2a8bb2a5ed744d6ac18f0893359cc28907b48469cf0edabcf02b96b6afe102f9f01175b32664d46cbff272db914cee7eda8d33fd7545c81f886a1fc59b616ed51b5156fa1fa24b46144320ae06d7ebe022a074ec79ca0d73e9297e1a0f4001ad7e01b265b57d8354eae4516f2954a03b170b77595b6e8cccf62fc6177c6a1a0c7cbf9cd9459d52959c20205fb32bec043bf75fe8becca22a48f8959bfe6f0bb2625e0dd214dfa70e360f06067dc6455a56a0fc8bfda59ec2d1871215533dd91efa78350b660aa1516c074f14e7734797c03a44ec649e22b8ffdedbef4a2be2d75cc53dd8f7 +d9d9d24ad68aa715f6ac78f760ab0b148fc79b1bf81958dc46aa8b0bbadaa1ac37e167f471585b596230405e1e998da8aaa8caa1555a964d59b4e3e71214b669c05d53fa6795962777f836ff0b3e7624f12dc95c4bcd63847e3bb7a2f0d04ea7e26be3074d042014d084a28ea8a815d559d7cc9fc79e2a34a7a2efb7d484e6f3100212579c69e1dbdb74ff3d7f099c911ab8ade00e8c0a3f83f7a47569eaa68279068168564ea8bb39bec390327f5e37fbe94586bee6770c06a213403682a3a5f5584778f9623544ac10fdc80a74eff23d73ae5019cb1393977f27db70a972a3cb97a02a43584b4fb93798c6d5e60a352b69abc1a5aafb28eeecc1299a51e97f +c191553797f8acfabd0a8fd52bdbd36057943c4e7f460f63b13f95e7a9a5a103ff956140ed6c99a45ad606f5279d14e7dc2aa319d1e0002f34d8e2ae1af73c0a712ff27dc3a92714317a646f2112ee76eee4128bd8fb8dee3699df6ba4a304fd31c83c79ade627de2abe68ceba06b6f51b7536940173e4af8d3c773fec55e6357917f621f1767ddf5b8fcf9c100225f939ecfdb136f6b82f0e099edd661fe2b3db9c722f60bc3c188e4d58844dacea35b763cb6e7649e9588e7ecbb58cb6af6c8ca83dffb8d5cc8de08a121bafa8cb04e34de6f9e1f611a7786dab182ebc2014f162467b902931e94456dede86c3be305f28d05262ff91badb957c3bb2532c17 +d2e77da244965ed9c56acaf256f2d9a9028a7f594e1032ef6895d986ddf1597aaa4b218906550b5badbdfdadb2f25d3b1e8d78760f79930d04b65e034ecedb8af1129f273267040a3572958d1eac996c8b30b677cb246bb1ce982e5bd4dec137e573a1037c1ca3961669bef545af19353df24d9352813b9df20ab6bfdab16d6de8d398989600d7a98b0b3eaccd38a85f6fc4dc13cfd7bb8125267f190fce180a6f222959594e54be85f1f0d3c076465db7c886d63d72b01258e37a21d0c7958c2932b5a3b3de975cf6f0b4eba4d89cf1c66e395d8a2ddbd4133e035fc234b1a2c48b2d8a666e869a9e4c8ee60beb5dfc417e1dc2427f3b72d39a1274d326a487 +db2df6326314c12f71f3cb4880bf2eb1f99b6883c485c060ff0402fa06c9c4d13e1183db620eb5f80878101665fbcfe84725e8accf4e297f15fe02d8ba704774501418caeecb4fbf67ca1d45f631f0567a634e185b25ed22147c04bcbaa22a9e3ab31a5065a9af76f0e66dfecf1caf692b73f8ea2d2d274ee8b8d8ff1d21dcde12c2e4efabb13631763d20b39f234f9498446c1cd80353ffecd2c2075e03616bf1c3c7482e7f28cc121cc6422c8cef04fec6be3b828e595c4edda8071d21c213f4fba7b096bd1dceb7d5f520512f5897c83d3db89e8e00c5d085e6f6f694d0157c4d683847d1f2fe2cf6ec04badec55a87a8f64c348d9b83b42c8c56434f3a37 +f0ae4e6c3ae161e10751e5749cdb162079a35a3c19bf385fef1ae95084c8d56ebe1f9f9a7fe079a2e755c64f72b749976b82aba4406ad31806522631024022a68a419226c796cb55390714b4cc01d7161a56f73a19d606160d3d62eec2474220ac304beeb803e872be44d2ff2e35e72191d44c6503e38b30257cc54d09ec00a34afb9f97cb9585dea43e3d08ed64760436d5621135a1c2d01bdaba747bddf3bafb2bbe950df18d8c4d32bf1668562cacd0c52d64d0a397b51771a4d74c42d52a382b1f7f8a12305a6fd73c56de47f98476b2e6471db2bc7b2b2f0f1100515e81152b4f099cb8225d8f4594662365708b87e7e74f971ed8ec8fab93a5b3b2f2bf +f103a4a96fc2d30262a422b0914038d8fb3fdc7d1f5458e5a457a10668c42052bf380284a613bbd0186f37b9e3a6a23d5b3641d313f03b17d3c3c8c849dfab846012c219a66cb0c98888ef361e3f3f6f2d3d5045d7bfb240ebde20995238ab4bafa95c6860f3eab583c6ad85a7789e016557690b589b6881cf02f6fa3b6e7f84b43c3e60b66d9623af990bc86afeb151a4bee980f3e63b9423ef0faf1071795ecd9d5f84427bc21994d96d8bab92d74bd437e8d2a58d6bb063d924cabf2a2769e6310f73ee8adc5ab801b55a1163e729efe8879d29a931169c6f736bf52337b24decd3a7c553ce675a1460078146301480b709c34446680560725fa5347dddd7 +dfcf1d9175f5b464f3f57d52535337e687654fb62e7d4c6b7f6e3f86cbf7cfecb35c05d9f86e8def08ab0edf31c499d9cc41a916d925434699596e63c1acba3bcf044aac921696ed399e203df63f9ffbc53b69eb68ed57dd1de37cbcf06c8cea9a18980bd3f033f6707f74774daa74c642ed8155c1c29c192adeada02e4ad936e3e9a55ef9f8bd385b8f5426dc5f95deae9888b739bd353f61d3a5fe7ab98ffd500d41ae4cf61d48a8f9effdfbbd6dfd74ba6f30dadb4191d3a0311c9bad8e5de09e2c3f8896657c1562473593e037acbd6372025e4d8e9b743515930d312faab98842aa59847d82e3561690b46641a2a1f87333bc433008a4a171d6ca5e841f +ff21ec520ab91fc2e4606d9ba9c69827d9411ac70ddf54961309f0809f00f76c67f1fe26329cdc51f25b4d42d788b115d97f134094d0fc3dae3b4ff65480c66f4d9ff5a4ac30c94c1b61cc1ec0751feef23489876077d57bc82d17f1a80ea56602168ac1dd077589b11229c2e19ec0057906ddb98bc15a1ba0ea5942c76096f3f4781a75d6266237f33307d4c4343fb93c0425da363bb68b9cf634a61fca797dec3f88616ec3f0c714b9acecd922c58db8d41ce0a5c9d2f848e130141607a8411b941d0df72fcbcaaedea16eee6250a2106ee920cd018b5a444a3b93c3f4a8ab121211e32a36068daeb51a75189e2ecdcf30077c8dec3e76127bc34747dfc8b7 +d7ca4beebe1a80010cd238ede8a7cbb99c0c077ad2de1324b3474d31aa5c496d6a80795a59ebef2e5d3df03ee4a19c7e4e3d403f3bce3ec7bac29e2d497550d7921ba30b1c65cabbf22179ac6bd16aba6997a939ebb494c9cc63282dd564a6e580da09b184acfdd5226e7e4dfd97d3f39ea8bb098a576a9b52fd1e0aa1e33b6c5a879d0be630fc68f57d1f52b220308f206b10b270e3937339423cbcc4eee75520d59735622834b2ecc1e4bb7d15b2b930d9e0433dc629153d272a170b54768f2b40dc71e2b7ca46440ac724054c5c8bba855d82b7306f37b6a3f17e939c84ea630bec182e521d3f8b28660cebd5a6d4637eda0ed681561cada58b3456a170cf +f016a474a1838a82715bb73982cb6e6a35fb524af0be44ef2c861c74736b416323ce25d8328c278e77ca0e67fdbd45bbec8f00505c2645cacf7383cb32ebc1128e2d25c2c7d0c918dabc5dbf72977f34893bbd4c9b853a6ff057e1120b966d2b4f6f31a291fe95097ed1e2c4cdc5fd6193791c6e86a0f88c74a236a20318fc71e4bee8a55794485db88b3637a8d23020e7b396de9aeb53c57c7cfd61f89ef91c2fc6487e1ff1d2eeb54b4f9f9c429e8bcc575ddbcdda5410dc48cd408c3cce81865d2e844fbe648329007051fc20d722146b7c0d29b05d2bb12a87839de43c93d2fbbf87c4531c834c979a2dc4edf47e61c44fbda7b396be932d587bcc4410b7 +cb43986d81a28eb1caf2f6ef66f21ccc182e9ed0e08258e385ca282784efee5017733148b94f22c711257ee6c3cb1e2b1df07e2689c649918bebd73b15c390b377652fb75d123837f96f69e12c3b416ef4d2b47add6c4d82863eb2e0ab3ef4cedab91ee7efa0063b4049dade9da381203c865b03e749ab2b475744790c236e7a894213001c5055ab799ce017799b5cead12cafa6896bf71823d58fd513123105f2157f3d849ff4194a8608ac34ecc46f1ac72e0320a09f3a4111e6b32842b0422af039641adfe11db415ce6d203324b986e6eeffdaa7d314337840128bd311d434eceed74471fc5237f4baf0baa9ea706020809fa3ee1015549f7f653d42f89f +c010a954b882fdbfe15c42920bfb7471b6b3fbc2a90640c7b707c1950131a5a08d3fd03974620132bdded12a588b72e3e8409f8609b73915e3f409f52dc7d8c9e75624ef41996c18abd1d877386d8026168c505af97b8cddc1fbce918d1485242c16592c0354b3b2bc2bd89af5e2ad31d282305099c7ed38fd7e8cb2d5d5799cd8e66473791b74e5e8a185bb7a8e9fade9809569d659158cb0aac5e5f09d94a141b81db80702f6d80a74122c5d992b533bd00a32ecd1721d067b5b845d06bb9975bb9866a741c7ffbd5d967c3efb47ce56498f5885c6e7c86a04212fc09182ae4bf0633c986919d1f2a9706e67fceec917257355e69a65c31d4d5bb7c1b227af +eba48411429498fd60689cbfefa621c8f2b98f1d97c3955440d7cce0f5a534a3782fc307d32f5db82d1116560cebaa47d03cbf718512e91a95f39f18729539b6973139686653b36f513594562194ce9d3ee9060c0f0d73e60f09644e0474d1345fb92dab79ac9e4e06dff25c543ecff1161fa9be1d7f17bf1590294e7735fe1e6dfaf79b1382ceab252dbcb573a2aca006acd76393560243d275f5f80f572cd33d5016cbe3f8c70e1e0fec2ea9cf192bd5e1fdcdbacd75f4953784e640ff1a8fad44e9b488aff190063f0ab391489de8d0f3b303131f7322fca4b6972da57dd97c86a3e00531daba827ff023b14570c83cce92c3b3e7108479438389a127539f +dbc7261551ab2eaecbbba7923cf1e3a2b2bab70dfdaf408e3ed88e99d61ab0557a2c2e048bcce354efcb5fd400e0a53b687b50b26ac6d7b3928940072b16e7f389b48f5dac97e92d47832f347a4cf669e2bf66e4340977820db61919aab6e5c12ab304a4a901c5c338dfc76dd78003ca70e1e0b9d98e28425c0e1372abe32ec14c4b3aaacbc59cab9d28efe333f57d597723879e697e5a9561c657c64577d958b12f27cb4602ac88c137737f68bd75b8fd62efb225b0e6c7f4710eb8f9b5960c1d9f9d02375d77044360cb85aeca09e0bec57f0a1e8c4cf75645278e5be9a9e5ada4103b9cff44e17f558618a91f1b420306ea5615c26e1ba0b5190921ed6d47 +ea144742e0b95793b864fd404f33a0b4d6ad295769ee8e8bc49fce1428ff958db359589b02681af1e2d765b83ec70a49575d0adbf314cfef3a55a488c536fe9b53e4aa41e489789cc19ddc8c5bc198d585f23fbb0fd923ad6e0727903d9021d075d7d16102ea299bd9cc1352fbbfb5ffa65b5563dbc3b170b6fd6e869df35c0753a6f5d9b98abfb22004793e790a797b907ac47d522196dab582807ed3bcdcf74bd26c4524778433ec7004b6ecd01f56e27c787397608819e0150a6e9142d0021d42b97fa6902deeacb2e73961cbb69d4acc36134283dffe01b869c07b63d1e477032126d7948b89da63f6499d219670b8d382f74a07aa242b128fa1a4322c1f +f2e0ffd1bbacf82b5da038c77e3e117924e7dae957b515cf68d6901779820a067fd24a2a427c7d5e8561f1d5d05a9dcda6866274bfaed1ff0abc4e84628bb0b1a47acbdd14f1fe0a656f65b10d047568c35d18d27d8b4c6108939de6b5d36a417a8dee9cde060ffa1d193ceb453c093a316bae42c98f8901383d7631b0d594efebe9365bb29026574a6d647179338543dd7425089eb0051b296e1d632ac748bbb9fde44a75a3284f3a61c67d9ec27539dfb148164bd1189f31ed412bb05920bc8517785b34032312f82670cb7686db2428db9a4c71ae5082fdefd3be2c5d53032eb585f610ea5dd91a88894e2c0108d473a5e10129f8df81b29d247d323f0857 +f149bc127a6924c3ebc3886ef2d49b967606a47613aaa03a96296b098daef785008de442e27b2feaccb36d19f17db0a96af5147dbd3ed5da6351aa8baa5d552bb90a0c52e9a14286e8d05d5bc1d01786f13be1a021f0a9b5e527175fff1ae0fb9afc2b85a1558ac7715ba5c114966721c8b4045fb3a85ec6bb632e45912c178999be493877485c1529e6500b04e9661551cbef59cb4f661ca6d326772ba13e35881626f9cb8710dbfe0b0dc7c6fc99fb94d4e78648ccbf0e02acc698ba160e84e6701d6b3375d819596468e752c1cd91bdd661475f05f4d45e672d78f4e729e75f168e177dd4667e4c2cf4fed233816aa241d1ab4fdff0ddf5820c3a992abe77 +fee3e25821908453f1fd40a1933c20018a0793b396f6607f1003409115a832e4bf9c437432e914fce8284bbf362f67c48624f7da82c4c416b2f2b5494754f7629c473be5647cc641e478e6f7c06fd0d38ff3bcf998c531d6e6a56503cd870d938327f87a0ea970393823b3e67c68b308ca1e93128021f79a6c195bd12314170eeb40a199a707a4387f5595f29cd6e9a35f465551aa040c9ad0bb1cb08fc36ad79ff7a3f5bfaedb719773c01f58c2e92c55ccb0d1e2da581d4d60e9090af39d9ffc6927484fa7cd44f688f960e15ec5646353ba3098f25bbe07603851c4f019fcd09a1b843aaa96cd6fbf4bb3afd219d80c0b08af5c79be349bf73767f1688327 +e2a4e1d9958a3087f5477899b924ad87418f887069fe1e68f4243b38633cfce6a4f5ca9dc0ffa94f97c8fef37461669e808eabd302e1b0a5b98c538c923b2d9e2f83dda4ece76f119ad259981f85e1cb2b2caa40255c619c1cc792b7d1d0e40d4c79d23b389fb4f0f44c0708f2109a4717024dca0cdbb2d9990dd66f372ba6e4bb0bfbcc33bc328bb61acee1f0cadd3258fb1337da8e9f690bdf4bea1467bdbb672a84d860cca20a0cf5486517bf07ea9f44fa5afe61ed14c7241d47c7c8ae647250e491d5550dd832b925de6b62ca9415eb97933c55239bd4c6dbfb3039f351f24001d8dee6c3e9fe893327bfcc27c2f8a61ed64203fd2dae8f0518a18944df +fd1399e166f1a0118f7abcc3f9cc1a5931784b1a684757d9921e3394d39a1e1b4e897b294283dc0c0655d332694f43d3f10b450705665c91f3d2dc29fbdc5598803899f66ba6b113ae1d5727a2a705e4a6889beebbb2ce9d64b5dd6de821b42d9ddf3dae96ab60e777ad398387a12afb712d6a34ea1b3c80183e21b51b99868d5aa3c139b5a4642d10f1a0e8cb4de1286ba820587112893f4ccc9edcf87d5e85003b3d5a77ee1a5d3ebe36623a70fe338ce8ca6a8e95b478ae5c4e59d1d39257b17c2c6b56af3935faf08fe98e6358578b25052a124bdb67062a89ebeb8d960b2065f0c615a84fb86e29afa3abf3e0e053910529c2b89165b2f6b3d887024e67 +c9f44874324406621c77a62b5a85f9e2bd65ab04251b8a8ff94a65de554e82bda1963c06f571a2f6c71311c1fcb70a5eb7c80dfa62d92db2e3f452b8bfd4d3f227fc83bcb1668c77d563c2bc9215f1ad9cdc4f05744616dca6fe264c010212f8cc83f4587027a96b571c01bad9d1d5aebde9c2718f7f2f4973fd47649fda39dd23787dd48e9358427277c6f5e65be4a4b79fecf2b34ff76d0965a4db8801c9db19ad0f284ca6c0f910233a53f3891cb87db5f5c82d0c6da89e6a5f648d70126583a67596691f8142118781914fecd898110459d103ff4742391e5a55ecb5d16975229ea0e72d9a8c2491c2cd0b88dbfb5dfd108f5e7f32943569a63c08d1a6b7 +fcb766c7d6bcf983128c71522e04245241b7cd96ea68f62c79284a11a3bac62b2e95277ba6245b416ac3d9426456cbea1b650bd30d10001aecb60886a7f0486eb8e0bdc9560f2f799b497ce08436ed39b70b3a01067524f3a2d7807fc2d42da4a2821cab5538e934596f9c235423f238944f881e7fb5a5188b2a7a3db42c487198f0011abe94465250326730e99877e4e62ab7cf146dbeee51238acf0c43eeb55a136226cb1855d36a7b0a34883e50bc703299b51cfa8788073475ea4d5e2b7660daed02cf4fe44614f8750d3d63a4125ceff00020b6fe4afff80726e794679894ac81f9dabb59faac0635d5552505aafa8ecf302ca7aad7304048e8e82257cf +f9e91619e516595735e8ad512810c5fe69270028542923aa6acd90d765bd1e95615f55f1d8275aa027455827c45ac2ed289f3984aaac9b7a1f9a4e101d5c41e62d279f295559974b612dfaf24708093e7746bbb293767c9027cef0762960c58e939d10cf78c1eba2392816a2d07eecb8f3dfcec4d1cf1642294ea9414ebdc80d3906d8d4785b0daeda6d0f1716eece1996fddf1d36fb71a87bdb962ee53328696c96f6fbd982be564148fa225fdaef512a6e6616672b3a0bb880daa90e4d232880701fb64099c81b8e35aeb29e3de3bb9727e2cd9d9ed1dd22de86cb580dd87d545041e9f35f74593b702c1f199130e635b77576c0108209c4e0e0b8f9092237 +c1aab3b4b94867ff42b10a1dbd3f6f4bb1352be13ccffab22216cf5a7cc82260b93abcb0fe28fcc9e58c8dc54d02e1f0ca3db73c50674f174976ae1b1b73a51252a4c58510a0acadf8e168478eaa53056f68a71f7358f702e2835ebc2fda90eeaedd5e8a6d3869c3673ac20228e084f39bde38e94f4e4c6aff2ae53e75df7f9382d11b5be17092f9cbb51c7774cb00c7c0595ebd254b11346d6a57178f20c4e7a6b71e4b9dff9bf16af2a5301b501d9ebf14bee59baaac15860641dc5435986783932f7e3322730067452990fb04282e3eacf35127fb345b57338ca5eee96e6e139340f9d51dd18c5e2f03af3dd03ee70ff03f7a3e27a63cc0005938ce77ec57 +cc6b019be9ed754fdb01ae2f2927e21870b845e5f6dfaef7c2cb260314b036fdb43c462819329ec54f1c0fc0ffe79b0ade2e1a45fac7cfa8cf8b099dccbaa5d8ba71a66eead284986eedee09ea92a077c33bf22a86bf86b317de980c2e593545853564ff0b75dd6e249dbd02d22998ed0d31e10f9be6d1ff92fcd712e99082cd39518cd0baf248e6eca41ab8722b13d77c70425dee696d1ce49aa62ae7e4a172708b301c826ff33cddd7b85f36b3f25db328420eace1d181c3c08cb9b74002ba86aa9733b70c322e0267bae89b8fa006969cf9edd3bcdcfe6b12be3b8199fe0472733144adbc6bd0ad2d134195f1a8e321e43f44f2d44e55ac8e2650c3bd0307 +e6685bfa51e9c025a7a8f3f89e98ee5a8cbef07535e87aa4b1eae501439179687e5accc6f2283f9c7d61d039f044863292572e42b0ae3b5a4e12cfbafc1eba170007620c03c573feb6fc3a415bc2bf7b1e3df747c4f2957e47d1c4e92aceb8c1ed44de61e019f722f84ddb5d3428255a0b1cf492e5f49c16b9d16be3340a717117713f91727046d646e7ca9d79ce4b96f745f51cc538e1972a877f7cc10ae7f81912717f5b6f85683a0abd4f800c21d6afb3657267e85a39e359d13ef2237c4a32659668e3ff7e27b144db887530284fcd7369c768c6e2c7c147db57120728398524685b39544aacc54b5de638204af398ee6ddf13f66f3355a35c60e7c13c17 +c4b3762d827c65a26e1aa6b82133cb3aaaded4a6734db3bc7c7b50e2240b3cea181231ff84132a66931678699be9df4e2909b4426ed9364f16da20849eae473ce5f2b959ecfef3a10ffe556b601daeea79f4e3861edc2af7665ef208f83e5ab601015f3ec623fed969e65f20412f884585a5e6c4157b60c2f3a226ce30f705b3645c66c167183a4e990c32407200ad7b3fff576d6c194233e60800444943a38851c9d3dceac626bdaf41568f8fa39f9431ac881a81d711942e0c35aa9b50a67798bd4d7c7bf46b05f11362a4267a673e796f7200e5c5c84e74741ce70ed72932c0c82c8326596c1beff5fceb4b9de96443609ceacc5d2b65e20fae2b1907d07f +f1ad6b599b3893c2a6f3d49701e413ad33d5b29adcec8864cc5161fbc3d83edd5b13b160edc081696819313ced043fa9d676641ff8e9c8119f31a717b09380b2f24070707f4650643c742d57315c6dab05726a3ed9c26977b8c9889511295f3d46b16d1f4ddebf6770a6160cd20853a2e60d535f1971f64808198d4e4d7ff530e20df0c1787c73d91da9202d4a630b6c6812c13a059c21e37fca9741386f8530a13f1338d1d7d3603e4a618074425b9a2d7b8b4fd2f1b8fefd42f7cbe274e789c88928aeff5c2c936575e7fa097e86d17eccdbd8db448190c4c68aa978c9728db6da95b8a7ab09a4aad4a94b073a230e4a3b22dd0db2dd83c1b19c722a2c9837 +c33243c88c545aa5fa0279480e4bfa9a183902b6cbe15b315247980d084f98edf5fc4256775e65486c33c815087fc45f1531067d29cb99e815a9d5f433d84bfa6737f38fc27d255bf88696a26aaece036c1d458b7698ee23227ddd8050b9d4db68f5fa3c0790fccf55b71851583af1df1772ecf00d92c3908af926ef6da4f074ccec472270f13cb1d0fd3a8fc6a2ccfc3257e0d7dfc0299769c453dd7ee10e5b84f3c02bad7241f3256f4e29a30481c3765037f0875255542760b0b5374ff14ddc6941bca867fcad7236ed7a42123fb4f5ed8c1ce50e2727954e73a83f59ea3bc170ab7b100a60c2aa3f2493fcb298a6dbe39ee4c9fa92d2dd16367c25e52a7f +dcfd48ea75dee714707f45612d7cb52cafdf340daa344b127d95fc2cab34ebff62a62d38840514d0820bf01bb5286e7a96fc14fac49646109fc2e2d2ef39a0f16036f7d0b4c7bde76efb1712ba54e339a324cd9f9edd6703e3ecb8ba5a4bc4d0f21b9af5413db9333dacb3650d6d4efea89ef13990ad10dd8dd8cbcf5cf47c7b858d5aaf48222296ee7957ced6a05482c9e8a804b5bece63f4c39418fdce0f7beffd19dabd351fe92e76ce5926fb18d1527ebbf533262d39022d60fb542e53e1a1f50a6eb7c7c98a2de69581ac8331fa56ae474f85c10bb8460bdfebeed20deaf0f7234394295025dfb23bf90a10135cb3b4608aed902fc4ed57b0d69be09d97 +fa65f0e4baeaa3535903c430a47c88f6bb9f565d034771f3bf57e03b8183b262956daa887277fca2b775e66cc000cdc773fb12dc04e2ddd08b226bcc1a24b1a93035a62a8180a9763ab6c558b8f6d9c8592fc5eb860bcf47edd4b1602864a12f3c7da18e96edcc8f588321ddaf7d4fa8e14a3c8d9579438f70c51a6144c48d5f4583f681a2d0c07e3339382eb25734f5cf046a6d226fbeaf2ae5965e5db99f029d492b4660677d21fa5590ba39d3b3f8508846dc1ac372a3f90d7cd3523fd3db271510ecb8ef75ac63e4f76b17694875fe30bd413fef574a03fef8a03585c525205b69d3fe6fa9e48bd0a7fdf7ab3ecc90ce2450a9638cbbd8ad6d41dc651e57 +e1adcc961c4d05f8021deecf78d2bca1de5ae336b23012fadc0c92915ce58563f0a0275d38cca0b08f23fdf8a41517e0edf6f54e90348b2f3eb04283c2ef8ab9c9501d6bb15258774d66325855a6c77cf4dde3a39dc6f5c3a0b0d47585c0faaea0795eedb1c816e48de8243cded0088c752abf4488ddb5e186067802fce6046cd01acd64bc2f47a563b4b10200f2edd7eb88d465379fce822c7fa1c5942b4c60ff2fdc06e800b110b1da26ab0cb38729a1358dca6e4783297afe57f7270553ccb701f6f5f9477f3433a64b5ccc5860de36a7232699ca8691a57c011b1b0b9534d5831fc15903227de9667706c467a018e46fdb158b70acb54bf513b13f07472f +d99f455e6c2e53dd27fd386884c77a6114912b9ff0c8a3d11425d46a76a87ddbdb0e302102dca56aa0fcca3e76d613b4ea9a75d797d26005de28a4820e610a981b69d23fb0f3ff3554341c9023712b2ccecc6227eb79f15f8b96a64c4375b8d708d2c76416a6b6197d2f777b1423f2c3a72b153628619a996c321887f748384147a36a450eef25aa3ba4aa4e65a347ea0ed2cf9b2af2cbf969e07eb22c8de90067e8bf911d075bc1aa8411ffbd7117c3b12170d406a06ea052c7ca2df7180719d9270ed7666c2c423a23a398aa2c25e8e4d87c1fe18785679fe2fc9c7087a2c9bddf5854d43875d84a886c4466203b4389c449f18bffb90fbc9627c1e606601f +e776e21c816197baa70310cc3babfa61df7b5c0094bad5be42411defac7dad6719b21088b5bae6a24ec4a1fc00c840bed9e3674adb041aadde808a6d1b5f65ad75ba3801be5beeef7185fd9d50680fc6e9435aeaa2958f04ef00d076e8c318a00f2d3be2b1ae80d7eae4b54dff281a1762cbb25823967a322c262f0c585320916b4fae5a448b1906ddd68e00244be2e682d048cba6e372dc25789a1b076532e78a46dc4aaba1b16a6eca50451e25bd058d14ff9ff9847b22d7d1a01ae499f08c4a23632343643c953d7b7706709e08c2bb6a62c0b33d5a9aee14d7ddedd40d786ca9023de391a8d669b66d6f725ee8371e688b010c00528e15696fa070eb28b7 +e0623ece777dcfd98f723768a3291e6eb8f34bce182532269b50d349d1de4c7aaf8942cb7ba4735d20b0574d690062a6363acffd2212be4b7ea9d68fd7f3701922d46f90777e5081f449303a7c354ac2811cf07e51302d409166890b782e7bf61050c8b4605b7bc15670ed6853ae7101860dd536b5ffdf0a8c7fab1d17482f7cb220956caa0abc3e98ea3ee9efb21ec847b36296506af35ed52a35a0c0fc2c41a5c98dd53370017483cdeb89ef86ac98fb2b056d4ce650844b483a888456db89fedf5c5a77e5dedd609f98341e82354d96cab4114f9ab593dcb03e050303fdcbc5fa8afee659f2f8a8290404d96874deae5dadf9774683554519e219c0529b37 +f3062c4befcd911c0caf1ef0a9bbb2f2939e7f9f21104afa8c85d5dcf1183b90035e48a8782f175c2d49469ccd11f40d1b476daf164906d611a8881284dffb9fb9b2e25663f5307ed4b717f1f70d031019773c60540aac0ede81a49c7ff9a00e6bef5ac89a8745f5b4806dc687fb2ff0686e242a96dd8af10fb00e9d670ab934f5c056024dd8dfdc26a21be06c075d0e2276d434ea35f94711eb43ea88e23ee1f2f7248de3f9ea6c3c1531af0507c675e6850e08e2e57e75dccf26b2eeffcbbd14c8e98b44ffa5b26fe56ce1e2d07153db76a469fc02de14bff854cfd5d5e458c83313725d1c69f608e5016805013309dbc329ec053f450457348d8e2e4af867 +ed4a8e51a46700f1279acdac09e7a881af87390afa6730a8ce269428e526e4f7580f2c16ba6a9f291ff9c627d9bef21e980e66fd2762b1d078e79dfed53eb6b4671029cebfcbadfbf03e45309d5e870d773adcd729cff6f01c92cecc7b63ed01e25e5284a2adc328dc01ee840beced34c0db123b153fbc28f1757c7b260e3e5b27cdbf6e22fa59830f330c2b2395be7ac84edfac58ce2cebe4e83defec947369a515acd75751fac0c0d9b2dd60f534cfaa34ddfd84f8ca7a86d8cd88999a33be94fc7ebfd02683cbddad18ff5efe285e56359879c0d14213c1360f599860f260f4ff7b3eb7eb97531b00dbe6e0040a010c3ad07ad01f88be023977d8e52a85cf +c936e1f6860a67ff1b778a132ed8c48ee2bd1d2c6626069d4a17e7bf102d54688336a486b6c5263911373107849d84dcd0fa59b39dc0376faa8c5c48fd4cd01e6a9ae01428f217ab9a16e33d2f504e877675961d66e3893c7a56d4dfb3a643de48c6aa9ac9e5ff6929e86f7bf9f99c38236e89d96c0920250f9a0a3c4e6b5da2b77b0c20e6097fdf0c7ce42ecc666b3b7655408618cf2a71191dfb3399c3bb6ebe0d1586525b5a89e29093179b86488c7a745b0fb05f19c3f1e04ec34af026b54a83ae35474a528ff874829ae53bc1b4e91a02933c23fc9b4aa8ae4ad4d88507bf357b92bcdeb1f4a7f903400bc9165cd506f8625310ceefdd14312a6d0e450f +f8b05661eec91871e8fdf4e3d2c4676341276d03dadd9d601c09aab765cbacdaf07f11c521c64e11336d9467d7209dc100ed98caef24c5f89be4e77212ba505b182ab00174410ace8f95b241e04b777ab1cc463fc5255f746dabcf45448c3138f4a73d3d669b4549ff95fa8722dfb2a943dde93b5a62f15913d0878fbb34d1482840ca68f64fe6eeb75ba5fe35584bf77fb860a9cdf78ff87c88bac9d6b8dc57901f9a4264d7dfbd0347d94f6edad0b108cbd9339f945e38316c751faf33954e14058488b5451ae896fd4cbb3f8342b7f05739d3549482e7373596f33829d160edd908929185c5ae18891db7784f7a4f504503ccd9c09ac732d65ee67fdcd877 +e0094a258158cea89b6f084cedc5f336a5251a8ac0a84ad528f0032485babb7fbc07971c84b68470a39a2a51687d0266e24d619d1fb692d25b0cc1d0a5971f8f2e50e5d1fe95ec4f3cc80586d0a51d12b19fa7f98ec225665db1d720f70b7965d6dc249df5305fa378971c4c042b3f65f56086095c888cfed28f20bd89b7f2e95762b6ff24e2c6ec73c55309c354de93f3240b6240321c12f88a13f0fde37082c058bedf111ef78d1de4c894ebc83550f2ed859eab39076ab9fb7a51aa7582a5a32cacf8c080b71f98cee5127aed9e234ba801fda77e4a9694a7232e87724a40bb8534888e8325281ade441bea3e1e30c9a6fb2fcd3dd8940e18b25cb41dbcaf +c04d0d9707e1f666f0262c906d7f84c072297009118cf847adeb15a071939fcd7205348e1e96c3643ca46d26d0af40d4c48b0049b251652575f5f7a92a9b6acbdd40369170700bdd6a54e99426d37224d90c26f977b1b9a048ab7b8266766748ff45b73d231210eb0fea3ff40ec578b2e2fb3315c309943346f0b4d0e5b70aac59f348c21288a532fd75e75f599bd6488e2b2b7ec8bd50d496525ba8544f84edc6276a631acea503bf081415158d90dfb45f1d934eccf397cecb2c746272e71b8b54cc304b6231d2f5a56b982e421e4bae3329509f0dac286b9be1a884d9de3ff1ba8b070be0d5cab8877daf36fdc020b6799a59e9b1b4b35c373abf25925cb7 +dcfc512c3fb8e99f8d6f8d9da4f6b8122e8f0e589353ee80a071afb591392217075f68d7fa8c0460cd739ee64fedea33d8d0b6aa4514c0b04647d152d9ea4e8d65ad95098e95a061922d35ec8362ba5917378e8fb67b3e02501a1e14fa54c4d58269d46890f42436635a2e38fa0e7c9fc9f26926ba537becf8ddeaf37e28d1d634eed76c43209556a0e421579b5254e701dea8ef91537683b50a0340a7de86f6f79850dd893a2eb6f83621ac7264b242e5ef85c2c56086d4c8bfc25f0e6e9c098a6c00961c2c7b3e543aa7243ca7e05e924ee629d550cb8aba62e40550d358911bfb66483ff19550813ed03e72b3fc1e85f025510ffa6cb46396e397b28590ef +c232f12fa9ab387d3768686df61b14abe15bcc39d6ae705c344bf65d1e1ae1ef700768d9992b7571c4e4cfac274ed0afe449c74aa7c5df9cafb23a84d72efca779035d0dcb6930123e34a6a3349ff25e4a591175a2ff0c80dc5889565aa32b0be803b5241f1c0746cd66df79727cd84abcce2157a12036f523eebed91c90f8ea34e6f03cf6fc6831712c88a3943c39b12f3e48a64125beb24d7ece349bed3293e72156e1f4f21ce8913859752fe41076719c8c6fda494b732a99011218768d3fc0499e6ad712e8c4a8287d1fbdea7d49c98ebf5fb6d07d7789bf99c407afff2951c3793ce775164512c0a7a07ccf2cba7a07fd0f3e0f65f35919fdb5a35cac17 +ec892d48fd31d04a82c1f9e4b45d75ac80ccf52c15e42ab1a63dba383f2e1bfdced6f1aa0baf2b7e8be97e151807c46860b5880960128b4232c5de7d397ad1062c76ccefa896796dbdb83928902118e11e783bb0b20fd4bc985fdba07802b1e1d3a9a22bfe658788b56e75eeafc419f29496772711d1f347cab864ba77f9810b51302cc926bfba9e4b0660295878b069d60d7c21f279019c60a49e0c9a3e3e93ee73d4e517714d6084148d30ecb563680e8ffec0b2da68cd744e4aa0247d5f6cad8a2a201db33f1e5a98a1b1e4800ad4b72e051a17f97f7239ecf5748a89e15c2b8ad766117b3e08e8bd76c4d1ce629cf6bd02cfa518356f1ddf244365d227c7 +e0158692067a4f63bcbad0199033406227a2da012ceb2b035fbac378691cdf62392a93f2387b0762ea05f18b5edca78d824255bfb0a209c2adb7f505172f518d0dc4b6f6e1fc1126a9f9f4702bb4f3ee24ddebf43857492a43c58d9c5a45a5b3b45b28f172cbc7c3084e3018cf9105907bd80cd208256647777c201a5a50718debe017e7f364c4b3bb6deb405945f898a2ed9a3cb0a32290ac57d20025deae4f3ef9a73b740d42f24859b50c442f22ac804f7ed23bc899bb8800803af18fb01925837c74d32cba9a36d1caa3b886385ef34fb8a0d53729eebd0b6cf8b3f39af87f909e221c51c558bc88007c10db0f5aec338df46b4edbc68801405d86ece7ef +e21327e8b6ace30fcef4e72e924e5372a96ecffdd7b5fd7c7dc490b8e8865d1b0ebec0243953097104bb7bcf2d3f1e906ca55741ca7970e4038229611dfecaaf7aa36a4a03e57c6fea3ee0d05e44008a25fb6f46846e6d4fb88749966acc8e5f068340df3e72ce219e0a02f9e86cfc4eb7e0bf8d92e6df705a9f657ab54f36d88dd98bf30922784bffe234e01f03d98ea34870adbf79e30e707ef5ef003aede4162c1e7991c260802320f5767222a27026a4586f70625004f466b69b7970efe50b52eb31f9ea49d1fb611801921e9b67791d78226a88739bc901f5955b4e4f83cdfe3b40c369852d4d255f8c6a150eab6382c5c200e099b6a8462f32f47425d7 +c9dff06dfa4c2a2546488c1f33d5ef350f757c4ac60eef209ac6975291e136f1b2d41781d706011a8c2f96824eb7c86ca7d170f60893d4f7bfe301a8551d2857d79cb57cfe79604bc24e4926e2e924034fbe31f33a25292020ad5c8f2a311074b391c3bc81494650467468242ee5ad0808c00ffcada2df2355a07a9232aa74c487ad0c5e41d95f983ac2251ac16afc3e9e12a4380950716d0b42a180d957b27b3de65c1e9e31d20e9d948bd744afe9fc95ce1f8117672f531655c1f95340435ff50ac4d11bdf4d65bdef5281bb9aacdbc1dfb50a16617a3e798f2be699557d479604b8b5ae6ff77ebdf28f163cf121619d09b9dc86396abce792b9398347246f +cefc98c9a18417e7fb093ea1390eaab07d0187c443e42e19010601df5e068df1e0d26cd1a7c3f8bf0c9dac419fb5c553674bfe7addfc03f4961b0b61cca7923d7a297c58a54b7296846e6902a65de71482f46b840bd2968dd8a964847ced07a2f11c6eed09540e5ce482968e45bd9b9b262bb732a43634e7872cf9132bc0cffc5d0e5e42dd04e90c7a43104646ac2a931f154adb82745c0f22ef9a5c1ac6dd5f4d18ba6d872fd5f8ddb1155d6154ca4913dde7dd38ec92688e56677d174312f088c0076d5668bdb481c1aa0aa8fb69c03fd04a85559d2acd36ea322f7a4908db61cc80a0521dca010626b36c3c3c24072ba826958d7128b809a62a7bef3c4957 +fc679d0ab03aa2466f53801ca86b3fc8809efc04016576c4f6a2baee0ca52aab0b27ebbceed1f0998e8801380cc1cfd6c16cabfe5216e8f7159780449d6d03c443325a3911cecec29c4a01d856578e1fb46db50fdb14cbbc267f17b8beed2f465e0d5db6dd4007c33dc1f4c3b85eff6f560e3c89136ea492055924be831b7af729dad7f92570de9d2943d8bc50557302c8db9186bc04fda7963306679e3e06f30a6027efdc59821fe53884b7775f678f7c25a0bb6b4af35b5bdbee8860244831bd4522f14fa65271188adc1253230bb63b0a224e6897de32be78690e81d755af9524d2a3ddbec3d0464f3d0d8659e134b035e0bdb569c85bd1ca0b62045dc6bf +c602aa52ee865596b7051b5e36441d4c302b3d51a22eb8a5b31610bb63b7461072abfefab57e3b72ad1bfa50eff67590b8003bb22c4aa97114f47f6e925a86f612ff74d7ebf3de49f08f026838fe81947d5c513a0bd15de8de8707a48c082628ac3b243d5df42ddd8111a7e8e6d419db5f4c3ff83a2c102f9c993608742f435c023f61889d6cbdff4d9f5654e1b6c4cb7eadc37373c877e5ed4023534ff14de0a9dafbfb14481e86544bbd0adbf1b59dfb86064e87529db0c492ec8593fabd8e3cd25807b3e0130602a9fc4f62aa5d4226e63485b1eb08d5e021b485507e97a276b2ef639631d836fc93b7b82aecad7b7aaee4bafd02ead49fec3a623d025517 +f2d38eb0213d0cb5968d6d9ffb2651b2ab6f802f65e83096b0d62428adc952a3d2c03e0817488bb7b21a3807edaab41bff2eacadac5334fd31146c9f44cd11335f25822739b7ec1c85a6db5b28e60c3afd0b8aefaa08713582335c34b2503213a0c794c38021240c63853d1536424f9e353f3e018ed1baeb659ffece2459a2076a46e63189eed2bd906453f88a5f4d66adda538660e0d81b9816d51271594a68cdb485a9d715f5ca821806c8f1710ffd7a5b1478eaba6086f14842158474b164f4ce58669f8aef956f50833d07e76f8157889dbee69270430d0a726ad4dc96a77b2f0fe1a0b4ea5cbeea4cd2a2609d912e026a04798f00f1e1fbe7729427ea7f +dfcf5c8d2b1d49d611c0a3e8600f35a2e5f3b6cf45ef42b581f5e35c204da8eec01a38bb7d3b726a47f7c957dddd4031ba09ef14c9209a139c018c2330fa6109a1bb3c45baac2443258040356d790e7bd3e39834b54c7c40fe4d6481a530b13c77cbd54b6b1c73f15dac1c4d20f4f224d2dbe33803486dd048424b14e38ee4161f402d5afd79fcb300a73ece0bb8d38ced28b2c3cc797c652ba37a5b3b5185aa896b27307a2da513b3cca1857bb4e360c332f1ef57691a88ecf9c8b10efc60177342b31193475b56d722757eb564876132999160c4f18e5bc370b307268dfcf0470d0bdc5444bdf88a04d1b0624b8b009c205149f613d5cadce6612466488ec7 +ff4811cae14d2ce811a67de9fe6c1d8d1af0afd09d69f4ffb172164ec048338ae9e02625d7fcbb678730e57c95c3566a2bbe0cf52ae3b87c9c4f0bf11764e37127c88afe74dada4b781f1048f94b61c6802d0f11a8ba5a0b59fdb8edf46b985b803869da66d4584966f2c0131a376d55e64692ec5b1edd1032567f2d8d8852c2a07cb224bcc4dacf6c0fde8752deeed654dc5ffb8e21fbb9935e23c37e783a1b9a178560f9f9bd01f47f0123bdcf9b73cd67541a24788674dc3a0459395fe6a3d240e1e69a24b21723ad1ab2adfeeae77c980b73f385748180d3430e98c1f3dcfa67e351655bd2eb359e25d383242e156e85f23e2bd56d7a36b75d3d0b07d6b7 +e944c18b3ad713e2bbd342347861f398c35eada2b9d7fb6d28897a3cc020b52afd92283cce7c074ebf3002a85329d4131fbd21f619deec31be98fa4ea253b129da70d7d2048932eef7a61641fe48b807917ea7227bfbdb7835510a6d62933c76bd88e7225208ad2dfc072115da37df8b74308a578564c9d2501716933d6f31890a85313db150b565c3a6f6f49a47a256c3c5b5f6f4aa55c64ebed3d6573eefabfe182e2f0bf7adaa4d38f1ca30cb95b5325b2cdebeaa7c6ac4acf8b40f6bbc1d35cdf527156b35fa59231ddb4f35ce431bcb0f49882b57df6b57c1fdb6ead3ad4ac849f09d57fe221cb6f7af954c9e0c2b4f1f0e78bff7bcf1222a5c5089991f +e0d985d3b2c9fd862388c987539548c15431a82f4a8d3085dabeceacd5f70ad0419f1b85de54b80c41c7c47d247bf4db9abfbcd12fc67165a52df443369d6435d3f4578ce34842e08431c47c932310e0ff8e591ec2433be8ee58df803545d6aa8ce03de8b3f51f39d5f631ca471edece558f95f474b023b5e05febc9b8e9c4f5ef89433c206b91af39c0a4f8bcf7bec19255912a8af7a4599b6024ebc625d6ff99d8163e221549f5be8d5e49da977a0f6ab3a7945041ebf34cfeccf3cd8bfededbeac8b840f0aa7dc8bf16bd4d4dbc3b05b72e1ec8c65d305ba613ca57ac60d886f31c81154a30be11e66a9f4847deb55f130b4ad6916064b849a4ca69489b07 +fba135883c5e53f2c0dc4809421a13bc473ec3f64330edd2e4bbaebc2c52610b35746eb031b6dfc24ed987fdf7310f48140a4bb15bde65bd4dc98003f66fa43ea361277051f11613662fa6dec625ec402494bebb267899a90902e043aae3434f733037fcbbd2a272e0c62bf6cfc5dd1e07efed044bdc01b3a76014b30b7c0eb4c1bc548ced4e00be2796455303886c2e9246e94f98854d3955983671daddf3ff2b5a77a0a99dffcb13cfa38cf098935f34a777d480b8c06750ce82d31e7d5944ebcf0d7b16f91ecaa2b1c3d0d48b1adca88aca517a608c8a74fb53e0230827d8ab6b6ad5b8a67f6afa7b4d7d6f8b77d87e7e72963cd51ddf9c81bfb576c0161f +dbc5ff4c5f22503e7ac981f14e8b0badddbdd2db8bb418a69aa094f1cee3d291193e542422dc60324ec6f43de2fefc75f02500871263d4dd274675e47e8a470c7a77028f6cdf9e9c97bb1ae29328778c511de27f7ee8c58c4105cc6456d2b2fb029b0c59577190761cdd77e9ad7c8985e5631215fd277db1f83ce907766a2b8371bfc1a3b49cd2d11c7f333d55f2d1a3dd60aaa1ca0e787f45eefb8a9a3521a6d5b9ea141896ba4e934c2c225ee506aa2b6486d30335865509c5c15e5ee989348c4a3baa596f5bcbcae03a9ddcaba044dffbbd68cbb4fc18fc7a3ee2d430ec334812ee342105e29411eee534d07fc9a1b234e157a25094cbcffb1bba53f6d2df +f2d99e16148ae45fdc6191e0b842a34f00b469d428d9c53b046116d8f74a279821fcee419b79e88f4ba280102ed4c7c2b3e477f637d246061bc4008d9983068ed03838c95f0c66089683e5b607bccadb310bf5ff702afa35b39be74a028157be27ad6e7d34dbad3694220141183c191402e09eaa9dd2e358b4fef101bb197b3cc230978ef7f4615f22f78a7e4dd82a1cb0d94302b6527a22e5923770851386f3e1ffcca1d29345d6a9bf5967e6a7c8ebd1ab3f3209ddf15b44dabcfd88b45345ae200cd6ccd219acdde03813bcee1234a4daa93d51785f0d6d462f17a7a63dd53aebdccfbc7bf49f2b814b37e445c84b4c4c9d2cc6b6165aa4037a0ec8e9de77 +d59aaad3a6b14820e6d4aeb6bcc002433f40aeaa79065fc7b5ad3aca40444fddb954287cd44f41f680c4ed5e55048e8a0428a764f3e519f074834fef8553883046d14b9cbebb8c990f955eddd8b7510f416e4ed71d54715fafea31945e0d7e3ecd6aae680d1d0afc5d27605a72f344f659c6322bfdc96e7280320aa33766a0f1d86595dcf33cde68b753b947ad822e881551b42d10da5e66304744a91a2ec5c9f75e1a1aa1802c7dd6cf3a5c25a724193c9a1fbd655863de14e8863effe33305f4a20069b3d9380f3c1756120a90733cca6e7366944f6a93d7bd15ede95a7ee21ed7418f192241e9307e2e7efa4211fc1a3eacd14d8520fb11515ffd0c1141af +dc80fa79f9308cb6eab537dff7f311fee396d7e86eda6323b69a9f13c722b0ed9ed91b14942c962620e00c70b2be083d03478384867cbb16d711d8eaed2fe6144d07661544dcbd819106f93381ae50e8908a4272e0e8677d5c78772a799faf4d12f69c0310b4b60ce83ec97e31550b07144269f0114810627bf4663a34daf5ead834dcca7d7480c2e55af380016dcab60a06f585f33b39e28b60da6618a8d36a3ca3f7f6db8107ee609d171a39c6d2f9382062d355ac89dce6b3006ab882f5aff56c88af294ed649f2b2096ffc63157c4afd50cbd0a2fe2fa6bbe1d236f11f6c091c2eb8a10e9d9e07783a5806d553e641fc73dc41e69013aa0949c2bfbba5ef +d1fdded23c53205758fc93db9d624ef9cdec15a74d7dd16e84e9b27e318773ecc4457bcf3d8fad8a370e58952c5af88987dcd08e6146ecaf566474623d35d54bb4ca620f0c7742e51648e0377626c377f6de5d834a19869d61f8ef5bbeb17e3827a243b2a02985387568599726ec3622823a06a0924b143e17beda544817c064a7462cefdc6b92d393fb3d5e249b42f2cd689629a2a3a2209f3e7f77ded793c419d1b8b355f7b8ab76cfc6d9366d91b3653ee82d9e3ce242fb1c06ba017d1bfc45795658f571dc1b37801a2630a869e353d00eca16f97ab9cc24431ca0b3d17fd08f11887e5180812142d07890ec518f2561523c0250c7f3980304267bceb037 +e83e2241f55692c631ad60c578c4a2ae5130eb110f6c19d0a1f4326163fb6fda44d991e778d3403db869f07292168905b9059ef088b5b9efde446f6b528d0bc7b6024550cbc18cb8acb92468d218b5f5961d66e53f1a956a24b24672475bad1a227c59ffa45db797971f9d9aa79c40ba7527c7577def78d5d45266eb525a478b2a0a833f8ebf32a1adf7743e15f4bebaf958a3ffc7f22937fd47996056665913b7d0c6e2b49387b70caedd2d129ad4db58d5084a71fc233895111c51e5a0b06b20342fe7135d126322c0c1b76514ea31224c12e4b06f6e51ec34997a3a6dfa21fb9d6d94a75ce25530073cc95cc5a95b6001cc9a6d134821d9fa2dc9655400ff +ec232a6e5bef748762f221295f01f303908659210b813fd5692f051957475d25842056dfc2a3f2220675ef9ab32b500ed1bdc46790d71958003d5fc64419f74259a2e68f43993872b251122a04bb4d155ecf398699b21261bc1b20aedc34a587d59612b305676909fa2db29a12437cb57b5ec769e5cca4224413af94efe6061bd965e13a0e267fceca54f28cbfccbcf3e1d255138aaaeb13c3ab293fe7c79c0e70ddad4af50cf62bc02766d14221fe52ef2ba8263810e3a613d54679899baaa0bd5da6f00450eda9b43da84e980dba4f54be15ea111168636f24a9959c268a440623f305ddb6af0a7e10063635876bb5cb56f3cb5de82c6d9e8cafa893d0a0f7 +f60ee5f19040de8fdc9e0966e67ce8aa9e5ab4397b632939ed0b6543c55e22295231ed2410e1d9eb175ae77af285c1b4870bb846990499e11cc5fdcac56e11aef60b514e8945e1ebc053c71381a5bd8e0d96c55ce3b7c23e89c5fb01bf56b6f909494a87a5b6d11871e2ca41151fe451bb691ec723a04f6a56fbfe750e2e43562068c5db852a58fa9c9628f683dbdc92290b4b3a11535b7447ae3afc990c87c64b309b55cdd08fd993b692d8e567ee456a05f786f63d8154e3dfd2a6ef987eea654714ef2aef63f47e00b63fdad068f271c756e1c1357c270ca6dadc08c66a2146db39ffbb5fa406680d894db86dd4d4350def6fdf720dd4da6ffa8a0382b5bf +c3dec73582d6accce07413da03959360fff48a658b9959a75141de28a90fa050a87e72890b73ef19ca7ddf7bdaf2bf7ab9368dab01eb9f00927b99c7362b33f243c619f7f613b3a6af8a10f2349ab20a53c5873b83e0b6b200da759fda3e3e6c4e2cf7be2e849368f150c4ceb4510d98ce22950ab82a0d128ef1f3f559f45aaac5fe19046cabbe94893a1388f5d3abeb130239c7b401423839f55a626395d7f8eb7cf1963b3bdcee1b42390ac263149973e3271227da9899825fa72771eaf0321173e913343ec38db5a0fbbc931328c3fd4d01fe813817275781755be32f8e1fb2ae7e7ad6008b9263de8caee2f904ee97859efb3e2c510279610d063472581f +f5f0ebbc7a1a8fde840b1137b695ab45e4befd9f8da08a1d7795692d806dde80fb32a85ed804a8baa35b6f1c0c296fbd846184c3de01b3dc2336fd5137588c0650d40e348dcf090035a43bd723343dffcf173d1658a686b1515e302afcd1639125bb9e09f00e0328860b6417eaf4e9e3b3089a72be4220a97a85836cee715dc861306b13eed493dbf6a789eeab712c2ea79ef3c48e81811a7f498aa7b9de5a8d99b84b71778c7291fa0cbea6c9382a8e33b69714f78af83873fff82b51746ee4e1315b941b94f29d5f09276cec9f797f131094369ff35f298f3b6b752dd6f6b086e36a72958455893f8d64c9d9fdaec58b40b47d00184ab550f06f78edc79117 +c1fe13da580c68e860e3b699664945df3667e10099790fd384b2433132a7d1a8918d90db9c91e88c87242f9b18ffd1786f30750218251a925baff0c6c4abc9113b02236e093c85d786b4fc580446482f656927a45d8ab908ec8448d89aebe2f1368413b727353910444746f08bc864aaf8c5b3268294be5fe964faf2f5a604fad6315ece9af00b8479b5141bf3395656f5c5cbd0c0d05582cb496edcf57278b8ea6a871c4f0c7737af4c99678de3e3ebacf946baf691ffd48676d9e9a47e85ed68c30f010d54221a1cd1b59bba67fcd73d07d2fef5dcf96d5a223f95a96cd85a8f21fb9bdb3d827322ae95889cc1290efe29dc775ab8e5b16f93f9a4679bc70f +d9378d93697ace75d0770d6801276771965ae457a9c0581f64e760b92ff1de49c430d052b20439b9444e9c35c04d565f51e3cec2e139b49dcf0edde292efc78930814bd20ed788d616f008d4f4e7de9789976953e9598de00b6664883aab8780734f3901577fff311682a117cce5d022822aada9c0172b7c2eb2f172ab0769f6878961d9d07ef3590c07aaa66668e6fa320b205f6b755166bdaf4fc9d65b065622fbf4927a7af65d5b9553ffc8e3c0eb53b02bccc3fbfca455dc217f3dc44c49d3c456452604d7ec9e1935e12f5d4bf4781bb9daf3687c638efc12b98d6a179c54393ca43f9bb63c53c1a713a146c46ccf1ef3725546ad27ef2eea96b8c1001f +e0badd3e31197c384b5847596fa67e20552e69922fe63f6526e5a157cade80a5ac75d99fd70cbe89f774b4349d359930ba0285d2bb3197b0413aacf23b59f2812697a4e13f70ddbf90229a2a2d9d01f804f5a746cebad0d8b755a379e15c96eb4200089d11a99b82a45ccb2100586288c702dfb7dcd9603f7e9eef6858e6bd91ce46c1320690e2f80b8aeb1c57d07fe04189507dc1c6fe48411514d7cd0004b03c4b944865b8edca9be8ef25d1269bbfa46fd53f34226f81793fb0ff2eb70c904415ef8afae92700e00702be001248c621a94c3914034d58b017972c83d899f824e5067888072185655a8300dcde0c2670754d87e3c3ff65795c54a7b7a84c27 +e6eb164e8b69e1de97db50e144062d450fe7f2ad489d940bffd5cadd5d2b95c500837f7403377369f5a11c0abbc1b7033ed49da2fed533807e3b8fa988df2eb813d491fb08b1e9f690ef8839875e96e2c2cf19fb94ca90d1957f105ed3391abcc60d99a963f719b2b27dc6c5f2f4930999cfa93f6fb8ed0ead4aa0360f067a093198536d96e429af7af2ce3f6e7b1a91c6fef4e6286a570113a447a1e72c382ae71cfd72eeff0fd0825ebe75f9b16308e291f2d4044f933d6a61c402495c0c38ede3e5ca3edd5068f901490d50b996f4508e1bc76f6979d055f8bfbfca94805b030a696c7da1766a96157b9701d92c0e7e4ab4ae7cc17bb0a59c756c10500d87 +fc9442600b6f74baf6c3c14688c35f16e46ee4ae183fdb270da1cb31d33d572da3d3a7af144042183904892a999e9f8b0f4cd03cf7b3986c519e72b4e062e841f75b57a68f83744f39960c976f9882a86f47dfb4bdee2ca04257fcaaca53389ce51582e922e27cec6ad485ff3894ec0e41ddda6e988cb4a48a39d6380119943b1a79baded828b80de0b8d38d94f94b8c41d2c9ae2aa25617a44c5b9a63afb1377a5073a61f805143da69a0445ad902ee5c280a6246e51968da3009bf77046737fe470d986058d08dad9802f86802f96e340fc0b6816e65e5dd560f5cacca4f86ece4d76adb34c70e6698c7f977c2f905479f4a76fc6a4b17cc8f55ddab52733f +c485e0edcb125dbe8f50391078b34d892d4f174194eee62b6dd919e4d1a82f8ddf50eb3ff9c7c827a5936d16254304512334b053aea552e03e6c54337366b2aae18db680e719d27e6d3fae53977964add4dc2beabde136bd924f5b584ce65a13e87bb092639e1ae125fcb55379af39935f1b4bf6eaee52a32d55524281865bc0bef1207f2565e0019f49728703d427e35493493ea8dddd1082f4ef50dc93f0cc9aded7981560d118c83ec3087ee242c68bef716da65ce85fc38df264269451c46591f2194e9d90739c54a4d823e049f881ba3e2c4b0ccad77dbe57034e581cd1b1f311f751e66d72543160256da92c4c93b9cb2b07dcae8ab5f0f96e7be7981f +c2c7cdc981be90dfebe7eba8f9fbac39f5e35e7a1a9d65142616f051f3a8628ceadc2fd8197bd56433339fad4a320619d0453febf3bcd21f81b74a6a397f85ea751a4fe06b79d1099bbe6ac36f5685c656b3340873aaa2ccb9d816d25233c32313fa2e8f56ef49fd724f337e7bdb2c20aa6610269317b40de12d6ca373ea2df8098180698e8a32099ab67afcbbf8239dbd074de9b1641272abdcae0f487ccdcfcc65534928b062984ae4c953dcd00b127adfebd29945baa50ad41869c3c603d1402c7598717a8328261586d55dd746d0db0658894b769d08d5f5bbfa2fb757bd50cf5ceb508b0ed1ae5bc9cc96562c19f43c2f7d9e103f3464e2b7eb83f2ae6f +d111dee9e3c29441e11b311ded1387ec9433594c3a68bebac6210ba3537b0f153b82336ff8c5666d63c4ca0564b7ea50d51d71cad35b8ae9b29a1f662eefc2754791a6ee0eace143cabb23d9b5a9fee082cac078943214fcff84002ce1d9b1fe21287cb8f72ec84e157e1596f05601ca7ee3680b3c04b0e600258e96a5b2af623bff686bf81930070d47cf9585ae47e3161efa47df272a67d5ddd2e6358fef6b0c81a64ef4ffb7313ffcc4a33f617bead29a93af86823fa441c6b542b541154efdbdd358b4dfe2a2fbec907edaac08b0d476bf8192a0bf8a647fbd2ff213f089c386898c5a891456964650860132103f9829af2814bc0d6e7db5bd042ea9641f +f82f98e30b5c1dda437156b4c1055e090ff6e7ad05c7288abb3f7954c5740dfd936055c0e359b77ef2c4b159936d906b62e2b5a0cc65dd4d23996618fe02b4ada7f3b2bdbec3240a769c2e61940bb204ec77dfbcea91c6a6ad93f4134e1cc3b7ab6688794f3c342ba6d9533e97ebba3e0e9c2b0280447114102c96c5c661f77b294fe73594cedcaac0888de429c33bba34fb68d01631a1fb9a2a092945289e5b1a962dc059872ab0ee470d5927124924feb9c992921667db7df14b178f0747e2761f0aff990805da0ea47e0fa98c4efae9e6b980c76fe72add919a2afdd78010a89369de6f014513ba015f1471a5d9f87cfa39dc065ef739d0358241eac576c7 +c3a9a623768292bef7af43c59bea98de915d5984557053a8b0d3e35aaa1ea0418ccb1215b4eca4af5fae0a6b0919220373c2dd13c4c62477a1cc3927fb98a01c91fade34bb4534c7c54e1c05c88227c7dd10eacd7cab9b595fc38d93ff7198aa7fd5d3e81c4af91024e0eeba5ac5d6f7036551292c70c5ac7c07f43996b5ee609e45f231db0ea80e41f64c8e82cfc5db3283925e0002fb9cac82d8410aeb691b9c4cc2428c547984c16730747c3bc02047fe8f3977717f1258fc963eae1ed8b6e1b29eb512296cebbfd5297d6dac004a11dfb547272db5022f80f55a5902fef0e0f1af9d5912ffac9b69c51511e0952366ec7adcfdf84a427a46cbeca9b548ef +e7bf93bb72c1895b59bb19175d1e81b83ed441054b75fc86b65015125f3a9a0938df36e6df9de60fabde5ca62a8a815d6c87ecf8eb5fa4733762a370d59314e78e9823265a0f818e6a02e0e4acb754f5b2f5f93f524d209cd098445881a0e5920556cd7083c9218669c8fdbfa14b4946ee181ce9ef59702d5fb31837f44150050e1611bb51cc58d154959a33efd19547a27e9be96043629ee56e6065108c12cc2b3bb45bbeac91b1929a50f2c26ed78ee4bdf92946a1783595c1dd0fe5ae713377c3c43a786edb6721dd19d90c8fb3cccc2729c5e5de6a7ba654d67f8941fe7bae4065e61b5191ff156701e38471ed6c0c0dcba3e19889cf5d70c7b904401e6f +f08763e592bb024b387cca529f6058369888e1ee60eebb5ef92d8c1dc0c73652127cbc9bfa595624572166800f822c444c92bf36fb1ffab460d748037c47a2c131ff25966c7ac32aab40a5557acd342f6b765b774b7216d3ef0b64f825bce9aa04b588a3e05ad73931ce8aa3cd63be43fc9388704eb00c6a893c8b8fed0f91b6161c7a57b66c5ca8c12b6529267f931ab9049e122c328d552fc12909861a0da6db7e8dba0c00c860becb2d9af142b762da45efbc57476b0691059d1eb62d3da221439f1e4ce715928786cc2c8b64304282638ce3fe6bbe6ae59dd73d1183de370fcd0a1a5f054bbdefe163ac91da54cd94e54c866706077fdcb74183e1f9fba7 +e38476f0658e6fc61a39e680233cbca49143d705e1ddf87cbe638abc6ab6b19808fd35a5b9e4255386d2ab8876829dfa90851f5358c7e530bf7a8364c083ea74c8fa8209687fea25ca96b4b25d41f810a8bc3b33f15c39300f0382e53dd37b1a41d774134561032a43aafc262992085626dc181b2d6ece7c0acc202e1a17249d977aab7491113e2a15c6d6b1d8fa0ee80539aaae938baa7582868cc8ac888af99fa3012b5168d793191a43ec7beca0c3e76874ad3d65ab9f141b5314b72fc459e9beef118d615e0bf1ea516904d3ca04662ee4451bc1d1042f318b8a85c54414bae22feda83f1a1fcba9fae408ae5e016881e1f9221d8be8a29bfaccd6278317 +e8b614bb29cf3dba215b77a24ba02e091c651d3dfbf70c219a19dcd2a37f01619201ac6b0e2abe560ad91c108cd764566b24efe67426d2d03c6fdcdf8387a4cf0214208d0d6505fe2941bbe2eef42cbc7a03a289a763b1447d6004807c293884308864d6085bfa070fb82c7e1a6841ff824e7a28bf84b576b2e0fe33f936ebf2c0868d6f57d16d33da7ad729f934511281d4d146af5d928a0e18cc529d06a6d40c2b0da5ed5bcb4210b4dac37eeefe835a2b26688a6c187e7693bea1cde98db3cfc32f55c71e66c261aff47011e939fa76c27f8749797792bf88cbb46cb228c17e3da1ca9ed8b004744ae90b5d95342f20718bc5b90b0be6bb524a66569cd6ff +c4830e2207d52cf748983113d6da51a274fb6f4871167916815e8f94526e0eefc68b76e3e1afefcc6ebf1a152743166b6f047a2e1c73de9cec79896a9af1bb9dcd5fdd1ce7c333852d5e5bb18360e13e5a980bb18c7564cc333ad63a0558d16a7a95d6fbff54f9ab41aa57c5ca18d803c083f51c2080cb8f98a3ee5396d9664e808089e88e17361116fe36e095b4999e8d47b148a5b9b211d539f836ea372000fe1c1ee69337e7c6c1408b2242a8a728960330b32db1697315c2ca02e1354185e0e32c98cc8a621b5f817c92904f601fa41484efa90b1efe0dfcf1e992bcde4905808e8b0c7ccd0e81990264061e0dbef7ab323cc679cf55a3224f1c5a8b4167 +c0381a083bf110ca1418580a0e60b031bd6b234e91a53d2ab1a1d8d03127236faadab1e408500a11a8a72d90e7c4af41b46c6492d1c1ad52363b135fe79ff02b6b7e1d1478a1091f6c6e08cbcd9ac059d9a874e04f49ef10efe411ad63855150f0011f30fb9fb8178ce4f2125c4ee1e3476adecba9d87552fdee8d91deab057c65f8edd85d31d6d459c2bcb695e561b58a74a75223bba3cb41e3fd71bdfe8c45e210fb3647d21e9768d89aea12f23e4c75cd72653a95e9340d1adeacfc0ee175d36856cb72ca1fdb749cf5eaa5a35747830bbb838118c4e102675d0a2c2eb60b7a1586ce3e18925fe54cc8901c58a040e6726e019144514ff777f199a9c2cfef +c3e01847022e2d76c966042f73251b536ab9e9aa67fdeec6189fea402ce1a1749ba13c03934ea84937e4e6cafcf3f9577cfb90c293231f5ed602d042f169858070ab4f3af317818810f54b22ffa45df28a82650953c0b861f6a44e121927ce0bc970f6921a681450850507d8a0bd9d732ccea4991b8b3b6ce8a060848237ca1ba30de35e2198e9b49a8e869bb827e7550360589102facd62d56e682989846dc75fb703579cb881c459b07c492fe243092b0fc44d06f89fc877c058c16d336047f3f61a491d0027474710015af15b012c06c762a120a1232795db32f06da1cf79d8dc874d65b8c5384b34424a18978def08e516f4513d85f4f861154c1f3db017 +eed9d71f222f6ac76f642e56626f51e669d90c4786405c66fee28d07e8734dcbc9ed8ee13c18c1fcdb1291871a6b6f958a5fe693b9efa47ebfdfb14c12c205fcc54ba128f1d0ef9035b4400a823720c5eb304798040bffb432ff46157239e5982a6be2169a3eff15b2696d42a4a7c1703d5fa1a3f7c11ba6775aa04d13727ae087261e383c963c5114b048639fccb08f2e285e31f7a05a65724bbfdc1e5ad0de1a84e2db43aa4d5d373deafd5d82af6aae39b3915205b8179c1ef868885b8cafa57335603f1ddd04895f24bdec40aadd2205c0c5e9b078e0155e61449a0174457e1cab060f77167bc15f82a738df0934e9d1691a6da85f3a048b100230e836df +e5ff7b3f1dbf5c5aeb48c0ebd7e5f8b123c6b311932b1fdb142b12af27f091aa87502876f3d6eb2be31550007edf85dda4425a6923f3a83550acc4077e7ae6f06d234780828868d125a090a8de9e280f7f8688ec010b1d0ac4e02eac3251f92167891b18dc78b5908dba5674183dd5ecd941ae97f3e98e16c5bc387085efa7eb1a35ff42309476c5a110049ed53109d685c26d1afa29a4454ca5618c7051f891b59273087e80414c0c638c4188b4e64241f696ce347e953f1e761e14c8dbe9159f76445e86cb668ba92939ab43a3445b348e06e4731883365339fa9402344f8605f58284e2d6e60d75148313433980e47a475f59afe8abb46b9753377fb75707 +db91accdd37b7267d4cfe9dd3490c985f9ca39e31aaf23642593432ecc7666f517850c04f8f5e5492cc97ffb7459ebb4bf1d6882fda3918c3ee10dd5dd91aa77099029f7f00748aeb9654452b88387d3b6f44570dade610645105dab04e2cfe919e4a37c186cc40af9c5b1f64242f9fdc19084439f24be4beda79f234e3db8fb59d81891f4fb42583eaad12ccf025e560091b03eba3234cc0a256dab991cf96b7f8e4e659927016ac7399941e8ee73d9555067261197e5bc0becd1ca315fd23dcefe4e9f56ecbf0c4a858361aa866b92a60578cd03c4c91ad676f49c4b8c42a7b52352e332fddd692e9928400db8d104838a3a0fc70fe7e7502fc27dd5132787 +cf61a1aa592c6e9d5c4f7a782a20f2a716ae94c7d4e776421da1ba3353a88f095387c31a993c58e1387bf07e5584629c8ed87ac465b04f4ced2e6c74c262b92614b4f7da22fcb1f0d19c3abdfc6327194f90a756602b229cfa4c071d89949462c0ed247898087250fbc8a76eda65931ae6953c29ba69439518e764d4d52f5a4b358467e845764dc1a0b8a2841895c57b618116a380e2eb77fb22a1de3faf30c37dafadf9de393941cc99afbfcf66605d21c0873b359177888c916191dc11dfe7927bc4ac1416d5df48a6bbe95548d5f3fa6e61f51d4b44c888739ae0875292ef7e457e39fe744f1889fd2fc9c36ad1e31563db7609235840071f28d43b028877 +e1d7f69295af44c02ee4f727c450faf86fa5ec0d36890cf2dbe40ce6941eb1b7cee5ac30817107b839e4a9d201ed398eead63438119a991a0de1375247f6935b6ceb8dd33aa2467b0110820b0acaad06ffa7cf4f9bd620002e2508dca293ea227b288e8cc738baed557c0e688d53b3dd81cbf86664d399adbc273d3b567491cc8f3bb2837543b9d9d3c900847a740602bc3805293e40cfc206f654b531db670b54b51b68f0c154f14e9a38f844849103d953b095b1236fd26ad95a7d0d9f52c1a9ef1d5c077f6f9e1f3c7d13c816e445f8af5b7d2bbc860a7bb1038651bdb0d927f75ed20fc8e2da28d6445820a48ee6eea46b5e686d82842e82e0a94e42198f +fdc541f0245e35b008d80810161f1a7e35f8a84c605c3b966caecfde5fa96944b3a87fb1c403c1634b4d60c4a754915f28b3360a342816184956d60aac3e966cb738037578e447765abf3a785043e6ac09dda1750e590a0d08260fc609a44e8b79a79800d5b4c40b8906497a85da17c445a952849ac23897f8b784e5badd2ee6cfd9cad2621a1628f7bef1ad0afa26c4463cf3edd7d890824377663231c2370219f34516c3a5eb57593bd9d8ba8b90df4001a3c3fd0fdec2fc981f576d35d436a4fbac53725f5ee6e7197279b528b0010fc81e676bda08a08329f3510177c41cfa22737e47fbe17679a25bb2691d00c1b45aa56c02bb715029931e1a643ee357 +f508e04e99a4dbd60058a9a63c015d31c9060dce441fd2584de28a5163b6aede011e95fac31a3870bc404f4dbc45ff2291f482fe011d43f830970152cab8eb7f50222fe19e9672063b21b7bb6b868525aab11f517c8291f11c44b6535da598c6f5ace0b95b0c1a2801867f73dde476a9fe6fc53218a93e26603ece4ad1f371f3cd0ed3f81c1980acf20ead5d1d5c2a0371e3747a1d46d0efb474aefafa84a986dff87fd1c2532187a458dad805c3121e8629f8bee1696f2bde4f6c755bb8ef8ac7f175478e5f24365a4000ceb5f44fc9305e047c0186e0f531bdbaf500131a6004f1cea46ecca9114a805cc7defd6fd964ea5ff4b782aac370a0f381603f1047 +db3abf793ec3afbb667743de195440fad48833810e6b5f11289353f5d1acb3ef3aedc27bafbb500df0b44b2eddf7225d22cf062b0459ef533390422157712e4d0983c2d84fbd716702dbef2f0eba160f4a511610b0d9654d7e433b605c7f2880cc68304f371c5d0f73c16376f8c28d77646d23b2c9e17c80a24dd06b111c77f594fe4625e2e9509be0828e3b2746f9abe13b96803eb19e46ce67ba5ee2a9e73783ebc0bc1bb5b1b4e1859d4c1cef9fe56e54d034ad8fab7b389a501bd25859bb7158318a9c70057ac594421fe5c6610c54e50141a3aea34f0f79ae84352653055b9e65e48b52a918708c3b31493a68c865b0cd4827982283cd535c198ab8dc37 +fcb031c329ce0e9331495491e0343364b9e22eec629e503e43c40d7ac7162a1a1f381e961aa186144f694b565d1080dbf31568a0ff9a37d52944e6e8e55622de010de997363f6e5f1b9ea0e1f11404e12c914829e1d55f6ee20528e8d924a86c9112643ec7101815daa55503976ebb06b76f490a973f7eb32c2d707e26112a12393a4e3bcd8985c9f658f154c2ad59c396874ac1bb06745f8987ebf7f05c674266106c3a2d9177a9f55e9229256546dc96c2c955887ca67cc147b5fe7558decffe562dda842c38ee3a02bc9eecee028b69641ee87f2d604f9389767cab705f7e09fdd5634516e5707785f4ec0acd3c42a24798cb767d1cad8f5ae4d176410e9f +ebe29085004d91a565dac4b401ec8e7d190a9fb310863e497e82625614e8a2d1794190b7ce29ad3c7aa54d9b08c8aae417d88bd2c66c7ce05075e26146d124fe2913cd14007ae1c6ec8169155c42b1cfac98963da1bcdadfb2a4924fdf0398d4c0a78ad75f1861515fb53ddddd4eb2f31140cb82b298d8fc9cb3427debd916f157844b7530ad57fff9f2c505b914ced9bb575cd54f7ab20b00a0a502da9deb7147e611d11fa93713644083fae0013f9d740d4e3950ff83028509543769d929cf84cee079210fe531563ec865a15acaa406dfba51c110c1006e053491a8a4f01936a430f9456196c33b8b7b54adeaad288a65abf8bb65f6bb34c01d6cc8cdcaa7 +f37db2e8613d5581541b57fd7f27ca9fe80e4446a9230e7fd5c354ce2a6831e5cc776d48d30630ff7cad798a60b540b21d02f5284425b63826f80dd90a755caa7b119396062372fb5f097f3611186d01ef1757726d0e2db0358d7b8451937fe657b9b8097a985a371ba15b1f127cdab7e2dcd52fbd1326e3fdcd195b9d9613eb5073c757e4a2d9f26ea7785772f046e2442f25d04ff55ed7bede987d7949eb79024a61de4f0d742192d92e22e0a3803b132127b8d344ceb35be5539072d546c98dd49171713b3a911f60e487dc56b03bfd2cd9d4c4028c7238740b00e71fb24efe7321e601f6d08e590d14d8c55044a08867c6e83ede481b4bbcce8ad78f3ddf +c92c925172501932a5406e3b211e1387c1995782dd423186c8737bed00d9895a25bcd749a778efb8ddf66287b795387f871f653e4588ceb26cc5b2b48578b9e738b1db5a2961668925cb9f60912b6b099aa0c4a6a8e6630a9846e4df288f1631a6120800266af59a12b89826ac9b83dfc0413a60ca7209d79034e5fa02964d2935a44a5d4cf42cb3703ceade9be6ff54c858bca7719fc088447fe5c4e1396f63cc465d85cfe1c3fdfc73e2e45ed0dd320b1d7f43ce75135e730561d9bf88f55176bbcbefedee2f4f0e03b1ab9868dd47279566478dcf3cfa2753e531a249717bbaa9d481c0c9bd4096f6dad695fa02618fc33a264c0fad62b55f4fbc89cf984f +f5ad36170cc5db8bf9b412aef119b3c6bcfc30ffd8f9e4ec9867d1aec3cf2410cb75477ff72828bad8dd8cd15bf321bb2ae46420ce5e0ed81cc784e0f68bd01eb9c0a20169284370d26e45c053ee16e133462ae8c148a668ea0a54f936280db694bcf9aab49a7d14dbdf99f1ff7bc145f4583771a095a24d4ed9df9729eaeb1f79bdc91ca036c5f8da4c01240dace33f69db018b1c6c36dd79b80e08ceda3892d783bab631daade993f77d8ea5202c29a0f3b91370096c92ee592e188b1128a2c27b126453de1be26857be83b3a0d4b96cf2d9be15b6ed6f2729a1691021e7018787f7dea2cadaa3a7c2a5ab574a95cb71aac49dd61157b7676fbc2666c1545f +fc89c22ca071029d555ac5818d0be40837c36ad7373ca920a0286788a8bac616c06248d15efe2bb6d98fb7d4a233f7422fe996aa405966f5ced9c2783771045300f0289d82066ea1411798cf85a3c8680c98fe67eb9185c93fb0df6a0c6bf3a6f110a8c7e19bcb68a81708049bf8a92eae67e1655463e0f5d0d8407fa0d4d7d01f45f0d359dce39998919e5aa393015108b43cc35f4d2547235f106560f4831fdfd8fa724aa83a09a4476024e92461b20aaafa76c7c282fe64872a2bf8abcabf8d889e1d699df12a211090eb5b844ea60712cd81c5a63fde810bd87584c6c5ee5dad28c5fd91103106c4d9ef26237796d7cd23a374c23501411ab70ccec6232f +cd6540bf8cbf9f4f0fb081bc3aa3227d54e330f0be15c9305bf63d42c058aeb8d4c25e58eb8fc619446e0e7996a27304abaa8ac46a71a259d5e7d3c7d0d820a57547b2ff575f3e0f6b93e64c1224d7d764a1e316cbc74a1d814078d3a0666706281128ef4f73e5c548e5e5ecd228cdb483b6f847fbb3df72e7a315dbf2c6f7bb2fafba813541911321c10ef30a5f8b97e0f1ed14fe54eddc26a95f9350669b180ff2ffad500fc050f5c912e570cf8318e832192fa79e092c32ea465511ed1862b4cddf10604b47e74f938401dc5b0580dd4f319b9eebb204d476186e71ffa6c7f7392f9bbd408dfb88aa08775f6ea4aa4a52848580d6a2ae852e8d54b1be9b67 +db809512821d645cbc98f6103ed03891d60d6757f2a4beb29077b2d0cfcbf93d122c182e397937346c5fc6878f7b7add2301cff9997859e7c4e8b759d47d196736f0fe3f98f7967de47ccfee595b9c807703bac6801c2b85ea7798086f801e8856c7113f95ea47354fd601eeded3a96ec33aae73eb6e163fb9934bb5fc2e3a50fb0c7265ac7dd799bc5495fb4662d2f5645e03d6773095fc514b0302a6f16538fa1c19f5caedf68f1ab3a83d0dd9ae54bfa69be08aeb23c295d5f5be5270615d735a93c71b12fce3c86c79d99d0f137882dc247e3d1a6f5932d12f89e6eb824c2c2b5d6e5be1889b6751b8008f5e1d74b8a30936d6f7301a511d590d89a0d3cf +f00c0a9994f226fcb96838f39e17ecb0a0d75f2459038ce64de7429a14e2260654edb258679d49832beb8531c40788fc1cd11e724f51b32957da86dc908673467f0aed0d500ba5d360f40a4803d7b516b8fde8d9df099710f69f5045c760379987b23ef5412615c9f8c596be18d0369fa7508b6e09f2a14044e0e5c078bbd9d8d9d85b54104150e7de6d658e10866d7890fc8567da4522c3980a5da5e5418a8a3a1446be050f3c224299774bf2ef1d11da9d099ca5c5030fb7c378210373a42d3d35973f9d6c190f78bc147dad760d7e2fd39f3f9d594393f39140c05472ede949e1f3661d17c02b17ae1eb9fa13b8a7d4ff13de96da9f1138c98220045f9717 +cacefc8c632a39c1947183dfca5eb440c0ce9727f9fdca80f0c69b9d96aa4d6aae22effc40c7c171e135a94905266e8881cccc9428b3ff3a3326f6e19871d150af08c762cc82d374c5beb2287e7b5649c1849d99a36752651759409ee7e2e6a4ad199cf93b81e6fb4e70a68eb41a7a34e17a46a893d2a52ee8ca0070483b6184d3630ef5021fcbd03c0a8f65d3edae30ae494c978a2597e0dc81f62254d57a82b419fca68b176a29789974ac226f5909c4c0e3debf40be48928d884e4b0602988de792dcb145522c5f34ee080a70225b92892ee265798b3ab44b987f8206598b84e778f67d7a1d8f06f344764033d7be5f96aa01b3270837896d6fdc27b420b7 +c32f719eeb9d7455ecf3cf2ee407dc5613edbceef2d8ffb33fb7b2ceb48d083d673d133ee850558da0d732f78e28759aa6107c0f5afe1eafd7068d3f202528881afb19127fddc7f279a1143cda721f1b03c5e87f98e88706193436cf88816510cea04628c6fb74fd0138ca83327b7b512454338e86826397296be53405b47e649f8561788dafabf3279d36f55def672c401b1ad5e24138a32334f0ae084425590eb286a381d838a8b041a7bde855b5b55734a4520f72a33afc3ccea736a89304ca02f7e4164680bcddcd5e766d60e319bc0a900d4781cc0534a7e15ed27cd9b371b9de0b72f74f1308736e8be33165bcd20cd29183ca9b1dcaed12b8f32bdc97 +d4646e4d315d5b3f83e8a63b6109ec5dd1fa791750ee1c5c4c62fc967f441fe736fa5a8bc90bba3a487d963f52cffd4517b7bff1feeea9e29477f91ed71e955778053cf49296c748708bd52069feddc1dbb0209072616dd62ea87583e2ad830ed3e11ab0ee376c38e457dcd8a086641aa7b8e853b430a13cb0ebab3fa851c4e74944178f42353642cb64414e26c4ce0cb4b7a924bd7944b5c0a90ea840eb61423f8b4fc1e2bbe627bf799b31f54760d6eec1ae8415c7fe0fe93a9097479e3c0238de8cd9016b6a6831fa6aeddb9901c3a6aff76b72819007253a339f1f4c77e52e707abb5851c60e7f5f6ea5f1684a91d9e07c23c0bbb8915fd9bc52256b050f +ca3a27f7f16f68fc8bceb7aea503d924706454c5fd31402df1cbb07d45d210888409d3267054848eda0ce34dafdf753eade01aabe193bc31475f396374af24e3e9efc8b1a6904f9916d41bb179c664876ec907565a8f313a94e0f23a25194c90e74de0d27f04f62f4989f9709edeeff0f3f39a8522dd0a55dae782525341be6f7722f29093b3a29253ad0454164cbee6c8bc736f8837b9ab4d7c3222d54ba6673004d2b2369e3b5814ab86610fb3ed53bb7f6ee8c7098a397b55adc635a3f7abc65920f6879a5bb9a2fab380906ba119e8f8ce2f01c382816314d27573ed75a458c7b7c48e47a5cf8e7742273276eae6fc601efed4578ae60f4b8b98cb962a9f +c26a7b786723f5553980560aa0ebace964eedae58bdbc1a3aa31a1959a1b808264c9ec28f57fbd069e426074b2358031682d3d1e16573c950529b92cc252a37735927ee46b7b33bffa4d5c1bba5292ff78298c80f9a5c01094397e8f9f6df828668c353f1b2752421200a30bd4166634f535c28b1f102ff2f0cc308bad1dd2a11cdafb32de552ec7618444c1d7dfa093d1e78d4098d897fd2c050e18a5091b6f36465028d53cc1cc91ccfc1b09e7cf60f850586131c116b1a13dfe36d11932d38705d11f1180b875d51e57b0d500da8ca5cc0005528da95d387ea5b33710357cd75b8b5557347d7e1d980b4cec33a1f9a038bdc6dd669f2e95e7e5e58ee4f7c7 +c347fc4bd581ed5c313eff2ac53fc6e2a325523bf437c8cf55823a76ab0d08100254c8f852bff673fa7ae9e030ab8e3d9124788531fb18ee547aee992d8ac3b51adce902c6ae33cfb8f05d5f66d688f8cfd4aba9d7523f8b03922a400949cc2eb7b96f71fa53ad282e33734d00fd1bf4dfb38b8b6adc856e5cdfe94fd0007280fc106310103da4df68a164106adb6ae57e0d199e8053fe55ebd0737899b5e691c4c7888885c5f79ff9c84c5e8e9fafa3f32ddeef29094014bb719eb76efdf8f12390797e9dde09f16cefcd7aeeecae6e1981e1d985883fd5347a3810b1b2f66fba5d4a8db85ac516d1e01a1b693993d09515d2ab0143af69a11088ea64d64ad7 +fca61b2cf40ad1b1bc8b5a92fe9881eb51f115f2d90c41032b0be5541ee13909dfe8683e01238be5ff26b9d2b9f69238d62182748d7ee9385394cb160ce82f721900e30970ae5d601f992bffef98ed37d1e37e9d26207d52b77af1a9dbd0e6ffe4f9de6aad5c4190579cb33797bddaad24ee4348384448929c0aaa9050507383745e0340834b4014624c144be9924aa9535a45c8bbc0c2a6231d4ccadeac5a5883ecd80b4fd114d73bbbe838442e0f947e6f66a34e1acc034ca894cc8dfb49f4cbd11be39b29ae6303a30deb05321361f7d507541dbba8de0890fab005f18ab1a4c79408790c29aa614315f2b9675f601e68ff015b2d31a3da190f85e8b0666f +fb53467559ad72c47a181c828d1d1284d2c68881b8cabef5583615f201f091bead3f2cd41914d5b610051021118b5c1fa48ae8ec91ebcd951ccce7e3231beb6f980192f141290bd74c9bc0be078fccb41e53e7812485e9f21e896d76ae10ba93d423a6be75ed01490de63011f6fd8a382178847aec45c9cbf6d86ccf553800a5fcd90986b2548004538ad10f4d8907702193b7ef9b4e5fba1f79201b0a2102fc81fe564be11e448f7f2d84ca1e8e76b6a552fa91a593cd50d7c12d7a42c8f65646679f83ca54dda5f97c45ccfec75ecb20a19f80d84c0b970972a9fddc3d91b3abcd0e59f6925f1ed7d66f1fc1169c78b399cbb45ee76eec30afb220807b543f +ebb381969468629eeb3f4fdeae97d73b1a8748350157c0b98e6f5df94e664c6e02e931d8e7e99317faf25073d495162ac3a06fa33e12d06ac19f24b53396efa90b07935e714700a8f24145da3794a2fb2138a524edf94b67ee8ce29dee1c4c7d0e5890b40061e95edad76aa67f8674b19e0470b0ce59b540109cd6075a2140d9e588c8dbf05fdd4d76607e320fab6b2114f5e5a6092444ffe8928b103fa608ff2f808fad9ca6bbad8041815005a1c00bc29d85bdbae95a452c63dd2fb136f3ccc8f17b1e9e93fbd9bcd87b2160e7793fda520cfad4390602600b14feb9f3b9eed1132dba8204b03363c5a2611477ebac859c578aa24122907d6be01767415fef +c4dabf3f50fba025333bc95a3a9f61bfec44ca1dad8729a255aef7418e7ddf4c37e50e85c572dcbd619f22de5c1e622b97fa6203115b2082a5c9142cf2b59faa073f613dcf03faa5189e5a22353b1e1e7640e2a859828f2d10d5229fd1b391b251737f708194f64cef153bfda6b79a56c0a30ae0de53ebaa522219324ff864b420e9f1323ab913ac4cd2286f6fc08e940f9bd496d0fd0303ec7e522f2dfd90c968e93123dd201e2f3474b4b3220837b371511fb9691a7eadc4437149cd0fce5d247346b97fb98ed0b44d3959b090a45928d6b273fd734d170e78e1c32ecb38d4a000ba4f871c0ee7908a88a70dc1c460e3fc7a408a2cc04ac0956e5cedaaad27 +e3b6ac80c53f2ddf6c59886b2e18ed603e96a08fac2d7db17b3e3920b3957c94f2f8bfd6f127e085e14a7c52b3e3bddf10b94c30bc5586c9783a869e220abdc7407cc811258fc37ed83d85779b7befab23a99cab2112f4754484e5a009e0d69d81f1a8a0cc5c15d36d79ae3a5798e52601690759d0309e3848798715ec895a54e47fa0f0b69bc7a6efb83eb03a983bf3d93805c54e854e5ab9c579bfcd1df869b337eea5484203356b975cf00585225e58f09d6c1228f78686d740aacf45e00933aff1beace67ae6edac0940bfc1b796cc8c43346c302cb568bb8272d855fe71c8cdfc4c7600382630e739519bb23a8f6c00a07e8be92837309e4443ebd82997 +e0822dcc41bf9e4076f4f38e8a56dbf8ec69c1fce58acfeeea0cd778e2090b840bf31de1b7c95b6ddc77cdf8f0ba96560de752020d0fb86cc146883794727955bb18d0d7b78e4c948f0eb9056136da823dcd36e95814a64b5bd3a0db882a951f6793e4dc32c405e17af5eb3ed1a1a70bf750bb092264adc79a3ac637e3e980bde2a2317c158ad7e3f282d93e42e1a01fc680995f230525995649afb8bfb47b57b98d8802b11ae0c3d8c4ab4a9597a1d387c3f2d8d2a27275843a2206bd562dfb1b522b1dd5d896d8e4cccb4c69780f2a85f76fa95425f79c8947ce1827b41333f0cf3d4104f54113b05667397f6175f5613a82921ab1390107a0921ea2986287 +d11975534a3694091b6d8747041f88b966c08e71b6e0dff5830628ecc523150c934100544f8135902d20dac87af3a52a08f7b784ca35a4f761db13d29ce186484521d839f350d2ede025806c5ce6517a221321f21cd7e4ea6898aaa27dc6d9999e1854252100cf6133ae33c19610d740a56ac6ce5e9a4f81f65a8837a3eb907c524654db6a999edfeb983bf5dfaea49595149df0e5f73a6f866aa808322a50b749e2d3e5f941328ba034a4e5b547a4e33dcfd1dfd2907396f075f1c1c2eed66799efff5ede9b56868b2867015977e849d2cabda14e9080b6ef220ffac7b44f91ee8bb71da403bf56b8e87e33d9eb919196e5a750636d16b9f184cd8130a3a5ff +c22f4cbd31f402c82079c18839eca983b071cef28365931a5abfd7f1a3d15fc547ed58257a252997fc85addbd8fd9576bdb9b99633bb5ec2c082ac4cb6e580d933096e5631462851328b157dd6634fd33dbd4cd6e68011fdb611594666629f14621c9387de19fb75cb495c863b19bea0e171f20882299445f4e470da1acdf5665b0e33ed5791be1628856a8c964c8e74a58d3577fac273eec49bbe1d3961347104e53e6ca84a3693d4434ec283b45e36b59d49b8827a1f01e97c265d0bf3df5c86c82ca4a3770dda35cea7bf52f028393f7aa35fce76d9660abc911ab243eebc9bc49fcd5d936429c908f4d2abd4073a5b25ddedd18c0f4187c950c6acb2f967 +efa76263ef037b0ec75854b88b7ff472fa2b7a383bce1f6b2b6501512e67fb8e51a49e324c12cd678c519999caa034b7d363d65de52859363e7a35a32a40428725083d16037552b9d75d47cbd625cb34c38cad62717793052502eaab4cb3ae53a93e1d04c6112583e6e9a8fa971311ef66585e1eaac65036e847b38f39fe46ef99106a2c4f254213ad8868e14145b6ee2d575e756f973c22f885e7c682cb229e27e02d4ed452fef31c77170629e6d884ac80fc3617dbf4471e14a4089db11e4615f86774d4f9b0ce3f250e9353951e9a380e00a6543e02468c7b3af683dc40431281bbba0ccc2557aac10a2bea9c52095239fd83579571ced488ec39438d1797 +c7f34bf46ad3c6ec0fdaf7aaf7897e0e0afb9afb398d18d4a6edb990b5c362c59fd91ca0d5a83f3a11a1b244adf24ca340a53ce0c12c90819387f6280fd5ecf5329506bba6088caba972c0f1f5c9b0aa7dfb0b6679d872c736fcd7823504bfd64c7d4ce5ef801ce5971ded8353273b181af3c8a3c35b540a2328c27e61bff29db0724f60948e48ee57f339bb1ee47ea94a687f6b3f243524da25e3f74f7e962e48f4f715c5a18e33e0ce3188e49a7188c919da8f6000dce6fcb680e37a2b1a59c13281e09f894db4b3b287f5275f14bbbd0c51218503b3b341f54079fffbe3bbd49594acbceaa5a92c12a80df0aa320238786b1a50b20861858c6813eb8736ff +cab6860f0b45b3fd6146b24494fd1d4ab963b9a1729b7f33f5ed27c5eb2966473a02e9a9eff5659180f3eebbad0645834a00c2d7ea17d4e48b2bc61a6ee8c2d12ba11518885637d272b6663498972cf6a2b9b10c6dab91ac98190d85d0b3c9b810abeea1a6299f34e754ef856605f5d754c28e96fb84eda33395c5420496fd99818569036022225e8f624d5856eaf04e7d2eac578d5593085c98cce7726bfbd2fbec1a32f80aa976a3ee0fe9633bba28191e76951257cc5b0e68bd34632a85187571afcb504be9e62d8e2514241ec75fde6e5a4132167be4f40cb969d92de6d6dda44eb2ae190fc4d7bb3213c49ac1d8277856eee2d1e353b62122bdbe0431e7 +f51ecc8abbdad8d583e62c4c8eee50865df753e9aa4c789da85be0adc9d8a03733310d6a8d310acdc1f77e81473e13c8252e59a0aa85c0e6b551da1a29aa86ef92998e9108e11f76f6516ab2f7b0d4824b81efe80b763d5754db107de98f9497963fe74dd52838e42c0dd5e00fe55ddfe1ec20e9595c6fc122a40a6c4944aee40ca057d9ab94ef65592093b8ec014740d094a66a36f3f2f4bc87d3391b6e87e822e1944b966e7c6023244043d9b8ccba26879b0bc3290c984a24eabd1846e60a7d98bb1531e97340785475a1869cd003fa1f9fe56a5b93478f0cdf33e7bdec709c7278d947205d6958122b19212c4409837c595acb96227a823efad2ba2a2a07 +f581659a7d4a763040f4e7f4534c4efc3286db1197d4ea02c03b21b687ad09ca51b3d31cc9cfe8d036a135ee26a09c33789d7fcb133843aefc7d5d8fa994e2a41175e5ba71b21dbd57df1fc13f24969b91a7a2c417b2a263d0469c1507d1d719a24b8046ad3071de4da5c19f72b0ef50c24dca8fc063feddf04133622e7ae61ef1d1c9c64693f3b325d605ba5c7c394976dcc59b89ff6a73aebdcd9bd0763be868d30821f291dd71af9e84b0d504dbe4d5f5f9cf3ed7398f4a761e28602c6e8f6da4a4e29705c27c8d6afb623d4844504607f65e2c34fbad0ee68d89fdbff1cc28729c9e21a5446847beab5b17a431147377355c8771795515cf51c57c4ef337 +de17fe5d4545566152fe9ec5803c6fce524bce1eb6dd3a9904f94c8ee3df057e478273d2c446f5d0477e7434f5f3db29470284aa1f40b358d5aa2d19bbd5f0cc8bbd0a6751979184de8544ca7ceb7071385747c009f933b4af519c2b57445e09590de8f65b8532c49d5229a2c0410c9f01d906415ac0b6bdef1807bddecf0012ad934c12519f6a654b4acffbedbfc07401a4d9c9b128fb22d8c6cf88b1c555e9a38447630b8f7f731172158e57523a2789c2dbf0bd13c938ce2ca2d9232db2faf220e1fc5f8759b3a339b69f8459d04dbe38ab1955e313b40f91a404c5a59cc68c35c5f2e529a0c915a8d2f7ffc927b5a529699dd9bb147af08678124bd0b5df +f564317aa01c812805b74bcfee98b99be8ba9f1514d58ea3057c7eb6a95779636184dc806773b2b775f41307cebb231f0bdd8ad9ed2a58e8023f9e86659777298b3311eb240c6b2459eca32d2a3e823a929a820712aaa9eb814ee3171bf99c9491e469d6eb1c63007ff70a05cf2814bf2c66cdbc82713a47a9d0f79763f9d0c3f68c07416656fde030fc895ae1c5148ea1ee16659601301dca9e40543c798d44e71b63a5944de8702e9443643cac5c22049449074192735f6d659b009d6d44f7a68880f378687c431dc0de8c1c331bfd33311486a16fb1e6c0abeec5f0d47e29611e364e0dc28e6d15256e1a9daad80b9a61e6b651611e5c7863558fb75c56b7 +f48cde346c6edbf22c378dafe81be8c4c5daadb3046b8b1c3c47e2b50215d042562c98c605533fd3b1b26f6ee5c008f6603de1265639fd283b08e2cd7281bc92808764a9cf368ead9d441d3c8192222dbe36ec3b373e54ef7ea2fd031a50e831855da13191a29b0930a772d5e644b9a6e45b171d7f6b5adc6e0451da040e03920cd3176e38c8089f1ead5cd95e8f317fffb867369327f43fbf8f48db9d7145b8d3116f70662a9ca51c0b67b9f109b4e974004434dab10ece8b06893c2757b5d6d81186fd4dde8252ee42dde0d4b082c15cbb35f8c73aa7cda52bedc9b9eb8400e299ff2b5d42431eb432490aa2e1375ccbf9a37490ea9a53d708604e376eaf5f +e7bebf7cfe686d8b00925cda6f8986c2f4f7b69fb25abb941ca46fef389a15c3736deec3df500b6c018a93da778647331bfb6253f244c0e068fbf84d764913429f435149fce00bb4560f8625bfac2637c73253e05a77fb22f5d1dabad9350dc230ea1da1d579762931130778d4f8a89357da1b6b3f64b4e77bcd42d85db207cbd2a6cda9501ed39754d39f76d2eeadf5da8de6b55abdd19132bae67553451e63d866ca5113e98d4f116008a31a7743ff1ceb7fae3fd2d0d811395acaaacd8f2d4a119b12fc9cb84603336cb77e8a08f574d391df98a2958fc6df745da1ad903b39f4a4999f857cd2b87f367cee112162ffff094076397ed1cf0a947b052b473f +e50ba2abf8838c91aaaa99e54e08db2fd9f86dfded8ad7537b0700be0a06159bc07fe404ca9a286f19e4363199bbf8b979261692aa6c5a02a3014c90877fdaff5a19a5a2d1f06eeb3806ac55115d9984bbc777ab46ed8c3dc15bd77e36c7ce09a35093e785fddf5e242b64d7fc408eaec3d25c591ed7ac8f591ddaeaf9d0c3ae839daac7ae6f6c509c57871eaf7485da244da383ac4da0fe51af38126d56b89607ababb738fafb07230884bd634ed4c5f5a4eaacd81bea09bcdb4c2f081a1d826e7bdd40248c051ffc095e9f9b40e0b2aadb72f3da99fbed7abb19cbfc71cb4622c9076f33419cad9dd6031c2c590d5be2ddbefcac98d0e7bd93df215e8b52ff +d1f2416d034b923743538832c35e282348f345a99cf094475baf81b61b1fff543af1202841d8e22a6fe89c5a9b3b34a8f70a706cc9701facb1651ba9584eb37415f152680f349235b52e7aef0e6892e699e563a7a89f4a1b652ca3ee49376c23dee88961ff89ca0f671eba20db9542c2205fb01cd8a8c456da1270a6599831ec1118eab05d6279873743c41d894c497ba878375e25c804a0b90de72a326481366fe6f5b01505d62f00af79c2df376c6caef0ce3fd4719a9685f1bc18e8c066256aeef1e9b54a249af9d8905c8b2535c75a98231d23f446125bc9c32c4e8b9ecd14ae9fabc91ab33d192351324d16d4a4bb1f12d64091953c4852d5390bc356ef +c93215ae7b370cc71fbe95128c1dbb16c18c650e82ee583041c35a80b9868334397126c72a436dba3272148cf98e163da3ee4c62c4bcf76a56d9b9ae23a5364540f6af9f160dd78565686d51dd21ea401f9254f127849110dc5f026850994890bcc40ccc301e63797b204043689c10983529af9234a0244f2f8a5bbc5a4ded313381d2574f0525faa56c99e52d52deee0982e9aab013f527308ccac8914fc4fb92b20a4cb87a65954591021e784f26289fddf465b69ccfd2ce8331c493f8d1fd9ea13428a730e34585380d25e35c807b4c7349fc72aa1abb0a3fe69479fbd6fb4dd573eacdc2122fc545bdd6a40abc39cc6d06c18962e3c5e704819dfd95585f +f9a74747eb4128e183ccdaeea9cadf7b276e5beee84c18cd3ac90d602b36b9872e9bc5f09114a9ab2144dd0ef4d82d6b6db0975db28af0c3e89ce57551f8bb55e11749da61500243f1dee121cfe58b9d7866e4a501d8540511a3a69bd606507a4438b3dd9b4eb787f405b40a66242841a0e38f013e2e5a28f9a96c7be37ffc0716641d438ff347e049d0d7258aaace14c1a709a2c2015e05c31ef53e36fa3522568fed2805eeaa5f3f7713064f43f2ed8b0b4d2192cb9f2b6de45e48536df37df32346022434e6756d7c766ab503ba00b59e8a47a0a421b4b38ccdcfbd60eb06f641e22a3f089d3a8f70e5e58ad14f686a2691b1672440fe29821aca6f75f30f +e343ea29d7516d5ec65997334cd3eda65d8670a0af2ebb487cc095cef978dcc875ddb6ba9336d90d4dfd409a9f8306338adf30d1d1773d4fcb5e68d1e9e450103bce6cb28ee0c02a677359f21035fddc4d89aa34fb6975d82319e49def265c123df0265d8d4678d592bf81f92423eb2730c91c46588e9263f4cc6e0d2ccac52a927294823f56854eccb54d4e09e6b85b2cb9bdc7b3e6667f8f7c598002382c278b0696bcd498c055684a86a98f6ffa6f3d03a0088b06e7e6a3cf604db05694d53046eb4651c3dfbbd79d337604a4374a4e1357c47f540fed01e0a7706a53cc02d80f1a08770bbaf1f4e2b06f79d02f855d010cc7188b5891887badf1e7d01a6f +f8e5146c7d4607a09fe5e760a6115c435905a209192497cea302509e15923c61e6e50159ea97b4300dc7d79157c5a665afb97569fa6d59773562386a63f4ff417a594359708ce50a3d0481287a767743a346d956347def10e930a991b5e5977828006019201798022d14d1e36efe51a083530bd7fefe985ba5fa0b74d90868d17ce9f45a70f197ff2ea93d578ce120fb651132521b167c0d9820f078126707d8d708f4a2a0319a7a1210c252148af7c331d7847b0c40f91815a873b339f30c3695ad89fe17f1220e9ff08cd97622ea86729f753132bdf1693337156d376713c95ad3634744749e623bf14b41ab22866dd37c78c5a18781e5049418955fc944bf +e9ee882e96f97f0d07f05eed3959985305a34f00813f75206e029308fbab52d8ecdba2b7d4c63416a92b1d2a51e5e51e65e5a231d8d5e534afb63871f1fc2fd9ea5340f7513b274a6e48d77bfc9c3ab5f3bf3c5e094157690782df561946f220dc8ff00c4b256370f21e9374acf9f7e2956bf7bc7d2690d27c8e6ac164665a8d3eaab0c92bb97f493dd5f43d4493befaf3a1d037d49957e2607db545f376486eca208432bd73aef1e6aea59778771db087c27118df86fb116770dad6e1118a3eefba589067f33e38294fd4f9fc6b4ef1c4296516f8cb07f2a8ec04fff5fd520d253bc5a7ee178b6d3ee5a1c8bf1002d3fde10c0cd2e1a169c9f9df8d8afb80af +e9abc7bf6010a20d8e79d1f8985cd242c58b2a245b2ab53c922e37baebf632f60cac80e3908efa759d6f5ee7d6efc1a083ec8fac2d99ff0f66833fe7d4227ef010085183845384e8ce583e7076967682e19c11ec3e01db3125d3f1c7dfb3976a54ee9b4493576a91ef339c6eb3270426bc9b55f8b3804b6547d44f1d7a8de073d642ba36a99b6c6c6732cd3e13f14c094d01de1070d2c99d2c7e21f7f31c2503de079585d710b10a8725e6cf569f74d7d97d7f9c4821ece09af5f7b9310b9ec322a56ffeea393d5dbed849be6aeca83dc16cd55edcb59ca3c76419456ffc8502fdba064554cb5c54e0b933aa4b55a599819d249d558955ea0bdba24a2bcee42f +fa9142f40614aaf807243edcc7080835162255800e6d88fb40801b31d430dcf8aa17ce0e48b82f593f436e0aa6982c85ebacf74f25932be2dd2127137a32f8e9b317070e2a070f9a574af5183c269ee04e1a729430a971e6a4f4cc409a3e9800754b360840e4e4613fa59a516f19733d7b00ff43dcb0c8870c8e1ccc6c4bfba2fd57ce674f64faac7104fb1451bd696b8f1998b9c3124dcd4ad2f0de3f95c5866eedbfe63d808530cdb558450f9a31e38277751fb4bd7834628865a4821c28a1fc17bae3afb213fcc681ad4421acddf43cd6446814e53b1d179f66173ce1f1193ea8bbb7feefae4122bb52db679c21782b293b250e06db7be2f47bde4f726a87 +d9c1a179c6bcef7ce207e8d1a4c38a64d7de6f7fe0a8d1916afff8de1b449a92dad4c27f32018ae594c3f7d1f333af2a376452b30aebf0a9ce9b06a7cdb81575ea4678bf4d187281d01fd79c6de6da4216628eac0dd9b3e4bee97ceb0ccc7f59b4e9f983acd1a04193a2de8da70ff01d8a719fa086ff5f5ed9f4b16821fc0642306c02cbd8636c877aeb11f058db5e69ff7722bd326ff590e8dc9ead2c54ac01b6008d95939057d65668f789b08c7a559c00000cf8f81c69f3e5a95c265be1ac0c1416905af6b9c4a9bd5f745a67b54776f52e7836c85b0b81f7d7645ef7e766fcd3cb1b68d1ccf09c5c69dcf082b6d08ba20febd0e931925ffbba490a460d37 +f2676109bb3aaece0e31439e5cf563b3ceec09a2bb4e2649b0eba76682aab44b8f4f3650a196097ba99349712edb89cdc8f3e247d38699ff2fc0e6c0aebd4cfde5c931d92fb1951079732f4bff76a37649b0322d1538e32af62074580aee514fa7fb21b84c79394148cfbbd65be610187e1b35982fc4d322936bde9d3232c96b8435c5a9271fd3c43cb5c33cccd8c65bc83580098192a9f29df25171448f9598edda5b0cfc95b3c196b84c065a3853885dfda3737b32e7cda1183ca15c3c85f5e41d7116ba824eb73a55429ea9aae4ea6776127c16063d0aa27ee46dc4115f064ed4730a66ac2b248a0bdc05f7ac6c5ff86f33db8da299b2d4650f8523732d07 +e56a2dcaab8370d631af86392c685f48806d69fcfea35f6bdbd046425fa568702431b8946c051dfea23615c7fd3167dcd466ece74300ad0b517ebd6770f7fd3fa9d2d45413e279bfaa637d5f21cef3a42431103b38e243f647e5c8f4473187844bc32a219337d2f084a02c7d83416bba69520105fe3a84cba5f877fe7b1d812820541ee161eecfd136f3841907952c04e73f8f44b1466f2f0eed8b705f3b6fe39e50958c8e29014047da42f53eb2039da78f43864b003b75deb332401fa590ddef8f852919e2e7ecbb6b298ac860e352ad07bb17b10bdeb7adbd07f59f2899efbdd4c47fccbf048ea984db295d7408f8e270e3a8b7f5e500ac84f6957e98389f +dbff908176cb8effdfb196bbe6927d5570d61ba42b88dd629e84da61e6252507fdbe0ec57127ffb7abe13a3cc33d9b93bb0b4198b08fabb84652312c0ca47de1c735308bbcdee35e0cbea7e01b998f1827b621a5e39b336721430fe77b16128accbd1961cc5267cb1a24b78ce0e475ed071f4504947f258e32a286670602748ad76395c233e4b53b5aa3516c3358f697c4786504cf9d1eac7bf00f4a2e0bcbd4233562af34bec42a2a9178c2fcee1e1dd52c697c09e5e74bbc418c7abd0e20794fc3e8c4b172b11dc8beb9c5597ae99e174d94202a87cd3fc20f6362395ed1ded45b3d352c727bfe76ba0830a29d1724b77fd24e663b89b3a3aac1e9e89dc457 +cf10ca2c1b1b732485542efc913c7f348dd0923bc426bcf4b41636ed8a484c31b156d79ae06f076e54ea8e34bf471d14dbedbf19ada99c58fa340d1c8b47a92892e0cc3283a52fa2859defe6f64794e15cabd88bb6b00cb2db9186ab420635d8ba59eb360f512fa1fa080a5c7b6a386549d50467a7e51f2ef22ecd40e0a659e56799d5d37cea635209d74d6f74d849db40a3475ff3723ae3b5393557a6fa2e860631c01f6d61e383a3dec6dc80a0372625ba20c108ec70c95d87920698d05d7a01ba06f3c90d932a293a9a44b9df83e53fc4ecda1aa2a16926a923fe2890396d0ebe27a923045f638c6e1028d4c0648bf0907c5b7c54c6a0aacd4e7abf3d107f +e9b02323e59baf3b4cfa7f2f826503712dc7ab45868fe0fa51c797e384662f23c2a58207bbb7e6a141fb64019a764da2c977c5bea04e53b8ad59c4791c71ddfe4b1bcc7acb7526475ccc4b77a548f51dc1695eaf15be49675c4da1e1290b0c3fddc657a6cdac498cf21ad2a8bb4f8e03a03c46ec69d785e8217e021fecc0a0e5dc5925ca35b5aac508f668482692b37c455f6656bf5f6c313e40cf32922f5193aeb4f90a91203dec064102164fe5cec6ce0b07f6b359a93ad35bfe22f03cafce1ba0a9dcdb3afccd2dbc6ab77ea5fbbcc5529da42c9bf22a3d141bce12aeaca02679415097b369160d9f2a55b67ad85870fff10f67111d3600497b73c7ab7eaf +fd614f6323862ec35f3cee50fc22dc13065f56fd22af33a10ea1acfd2ad175c69e743d8ea86cfb9b6cbf7d85814479954c463a94594825133726970614890ded791e5fb6e2bbb47fbbf272d2f11826833c9cd52f6b7c1b51e607c633ab47fe1550dcefafb7313133857d021255f5eb5961319f05f3c83641dd5b969923a5e8c38379cccd8b0a05ff63329e421f43a1c73bb4c23453a54c65bb0d12120b3995c39bf3d0646be0120aa7bea3f14edd8b08c0b639265b122abd5a4cd9713efbdcb35d15559ed444f0ed8a8a56c1bfc4888a6db3c08e60ec6464f3d6344941cdfb062dc6e1e26ac6ee75486510b1c859053d16c4f560b4716506eb47a23dd70a474f +d0a4a20d58c146648f3e157eef58fca322c75212d2a3b7d35862246ce32fb2778037dc7b2a15257f13bac5f138098fb9da264f3770c2a8c19e78876ad80ed88d1369a66af6a56b367ab33fd457b56a4034ec3337d479822fa3d5237bfac286d5297238a5a4940a23ec5ba4422ca52f6045fb5e1699a0efb03f96baa089a78441ee14ec42a78761eb2abce23e2b9910c62bdc50a0572c33bbbb91994ce6f8fef743575adf43d685c6866ed5a7b156c09345ec2ba48ba5e9ac90662c13b2f5160cdd34009ce0a4c6e4346a3858d6c410d6d78c101748bac5221cfb711bb07f2b3d78ef9aa67cd03c5a4b4f661f8d0a4f3ed01c81ecae45d940c2f9bc425f9b36bf +d811edc7392432653d8c716cf504ecc668b6e86405296c74ed495a7ae9ebdc7eced972d90d594c6c39cc04b5cb0cec926d15531fa310b0d6b2ee5216db1de487db2a7039ef67dfa2aad47e63cd6ac0d2fa8ffef305716984f7bb9ba108a283a05170cef4c99c605be42065b27240a19b10c56e8be1db106333a0119598751df95b11d0168a4f4118980a10d0e964327fd06accb925af6e67538d3f687149de8d31ebec9dd28be478b62d0145a4618f3c9f16d002eded596a4f24557783a862b4268eed56609991fb650b13fe65965725e6e5b8b543be01c07d68d88f3ee8fc305a3df088614c22067b34fbf0f8a6c6810e76593ee39f2c90bdade3486745c0c7 +e1bf3aaf4c716add50ca43f00092cf98b3030a321a547a4294e7a5fcf66ba15a90dfd5cee92b204c037f94ae44b51869cfdddb800ac22236df827251858a89c06469340ca6a7c75e8f5c2a4eaf649b0b100f80c2e020db8a9b5a7f30cf4007721c292b7aec8d3b4e982032f2cd659245236b4ae0d42a8fea3665126dc6fa445e3bd1393ac9f3145e9ae6ea79b30399825c3de848512b48afaa1efdf27065e45381dd5284f8a3408a3cb605bdaa0ee25456fc08850a3ea917f1d7df855a5d62eaaaaf1c46116279cb4f7b94463e5e2340a2a3b7e57e5b99f0aaa8edd19e21dec750644dfe38c9087cc5fca5bab28630b97a26d6f67288d36b124582cee1948a67 +c337071d8dde6ccf64245d712e4fad5f88376554d647b6b21238ca1ea00163d77011eb56c8405a2eb334ef8ccefc614b689e358d17376f71ad20366a5eda6c51853036a3eb5d34520c0eaee72333d0b6d4d32a720a38a5aa11162d5db6da684be174d298385408f0fb9a1112d047461c4e2c49ff37369601154051ff06b5a08000e7397ca13d9b97f8c10b890bb91d40ef68d020f0d9f379ce086830d024d27962ab5f28eec7bfcb72718fc51a75cb4a74d52d2a346457091cd67835ced1656d453bdf6b0353d0b47f1d737a71958a842b1e431c4aecb07ca12d6b9d298f1be198280a5a6a2076f7616ac33c5e2082e2f356f314e4b16497d8acb4e5126a910f +f0884ecc83d48874d70c460fae55cb542df74775f32efd55b81f650c74eaaa4835ea4e383ae9398f2bcb266c10c4fedee66a20b8810b60a84c1314400aa3746832e39eb945b872d5fe41f4b8cf3d11a614f9dd8b4e0b9bc42ddd066860149ad33281461f6e541ead1a93882f723dbb7962df762b065fd26b946698dab3e7e55231c1abd814f42e013a6c80845371213bd6e3fc615e1ca3660fc0efdac33f0c5ecb6ff73c5b7d16da2b34c867d45c824f644c988c8a36aca4c443b0766e25aeaca0ddbdad2816fe78c5c3bee78a864b68866e6658165c4707e27efa9e8114c4ecfb6dc261cdbf144c642f8f6ef82422da2a517ed5076f48b4fa8d756e9fd3b6ff +f79e3bd0ba633ae3c9df310ae88a82e3440983c23199631c5267f9a7effe4bfa73ebfb8ffac5117af9e3b999194281a0b0e7fe8f82028838522d615d3886d5312c502f04b03ba346eec9111208f4c84be6f0340d677215356261b2ea77b2e504739b2deaca67a9afa12c896e684f1c5e7c6e6b50229e0c6929ad7934ab34adb75c1d62d91cfb6107cb134de05a5eab7819b8dd736263005494db284da4a3093fec3262d773e4434b02740c608719a0cd5294137f98a41a1e62bf5e3d7fc4b0bf060877d31357479c5324e652c1f343ea70a6631a3b0809838e4937cf956ec6993d5642c01ba2fdf44250ad491cdbdaa420ca719523d61f27293c364dd7233c5f +fdd6cec73f3dd91efe29c55c7f446a627790dd88287fd52d9acb0689e9c73785eae84371255880850ecae8dc3e522fde73b2184fb49ceef8d3f9d2c2465ac0c7a8a5c2c2ad63f81c0ea11c9e36f99e387d2918551ee2a42e9b16ff3dc7346ea43b21fad22b1225289f8c87ba23f4bbb1c62a24a00e3f93d32c9b89d082795d75d8972e3dd3f043a61aceecc4b09e3f76b27378bb959328992336c861f68951109439dde02be378553239ca4536ec0ca97c9f2be215cad07d8cdad28b81b6a573c1b3b6eab827addd875b998285f3dbf13a13fc010c3ba9c42d766d32a1bd21442a903a3785a3ce528bd812d82aa14a7c25c5d58cf22eb0ea339b2fef6f849d4f +dd9aae794ca68cd1b77d25e15ce20d4d308ac8c473adcfaa0f52b06cc8e67c6bf705567d05a28af6e2a079344fd752e4aea3055bd1b0c3cc393f83bfea6fb7d53df65175355a519673bc85460b319b4da52d015ac9fc338a8bafac22c049f821a64863dcabe8dabe623d41d54181ccbdf9819cae7852c6e66422ce79b2185a093c485681469e609d54f7449e53855d56e302db0f6409228ead4fd2b7abcd3a5a8a0188bf02805e3eaadc0d6af7554352e5b31e12863d73dc6c6f9f976cf26ab5a5f2126dfc1baabc553666ab1fa756de308890aa82b2c8e3c87437fe0a703b400a1d27a0497a2b69620a999a9d4fdd65560649b9173565a708a893b9875e29ef +ca649bdf108e358b63223c01651f6a1c930bd2c5ff2f685ca5679658ff869b45efb3eb98bf6d15f380e3a04e6c2e99883a942bb6abdb6bf1ed47c2cfe234292440764852c453060c4c10883983fa49873720d7571711c6f76a9a0229d718a7b42f589c00b8902085a0ac963619c5bbad6189bdaab67dced4aa29e38b34e9480d91d9308c60fd79b60b705c23934ad30f2001afad57bedd4056c9ef1c5b5609eb57f2c734806424af581bd1cc3be70d1d2c1d11658fd602bd9dac50a598fe2be722b531aeea37e6a739322b5a6fc5b85c90a8fcaf8d96bba418ae7c3faf3e6657448919214e05e69dc2f0621620480cea882fae7fb2897efe969ee8404da1025f +d390879427d6c83a0db44f58c1b8c5d42a5e804b2a8b6f1ccd757988b43b744367b3f2de19f9ab62baae0d9533972fda4f800f782db0b6ad4c16debf1f856ad09e6698640758a37e46acc8a28d8ccfdbe90962107b66a1811e08580fb1ca645591e4c5459f690c4da56fd2e739bd4a06f5eb8b34d580fba7f2af4138b99bbbe70f2891e93dcae1bf0b778586fc97f937924b6a3381ca5b9103acc6f4435546bd23df6e355f33e6965674d67cb4db98456efecc4da817f1fc89bfdbff0c1b9466bbd1b3c5754ee192ffbc85e6457c6e7f9ba5bde977c1caa4f6544639545eaef7f0414c9e0c179ba24283da6cf7c7630a7f0a22a07afc15383c31bedf1d5e7df7 +c6122d8f64203a2dc9e0e81653b4160627895bfdfcd85e7038dee23264bf07e5fb053d3a300050d30ae90bae4c53a56841c6331acd303479a670fc3df20d218d9ec84408c8f8396aecbbd3c2921df36d1a21788cabf8543ef8b668aa8e378b3a95c0e6a769775dbab13ecafe9e7e02945b7b0c9e32678c4ebeda010ae79ade857655271c1ad7d342d5ec49b869c49e1423a125123674ab12b350d9f930bf22114e845afcf803b3521d27300ec5f9cd27120bb779b17ab36956b46368f2137c492eebdbb4a2112c157e7d46489433dfd1259fbddc5282853e8c96a94b7830af84ef4e7abd803c2cc660dbe34f64a72a31271807411a5991632eaa59d5f707048f +e7c9615e3ad391f4b159bce2af2a2d0291a5bf09f2ef3c99b5d2710f5ebcdee2d3c27683e7d690bc487360094afed9a365d853683ba2c87a630ed2d708808ca0738a211d13b643da10da20941045bb7a4efe7092921dd7895a8be8c75306e435bacc13d1b92ce22de80b01fbec9fcfb0a5b7e4e30da83319994ea1b15d3a9497fba21d2c32e7f622e74c4d334e83cd6312341d87d3328c3c4c13433d12ab37d06bc3910090c9ec6d23c9a94e8439f2394433a88311dc46e096e3c192c9908460f3b583dc63c0aed5803cf30543821e8c5f5c0a06233f075c74100715d6118c6bcb839a29b6865f76d875c06f0f190d5d0116a73955c6cbfb3fdfb4ffa6d2830f +e22f6630fa952256c23a1a75059bef0f0e7c549ea6f6d0aabe7093d7d33d3601ee20878866a4311d33d740b87041231f133fbe40ea972e461f52db6d8ef0c8267e243b680ead8cbd4ab01e8bf53e5c9df7e1fbfe25276d6e4adfc1ed8ca6385078f78879681173a96044da78ca89c6dc645e2e4e2b743ecb66251f62091218ae18d9ebee0e93731f1b4fbf5c861213fa67bd0cae484143f58d1c970201d94c4d0ddffb9436fa95718fd697d2544e10d57769286921ded2edcc1991cbac7473ee2f90bfa01429d4830bf23377da80213239f56810f2d80d273b79c9bdb9093e3a98ac694f6b8e007065823f26db9195884bcec23ba2e2a950d08f9d5bb678a13f +f10e662054b5de28760de5f21d560ed196c3340a6de730e73d2e245307a4c52fe42f4402956a96e2992ce42069aa0240d53079d772412941423558233d40a781e4ff43bff5303373ae9f7765cc726aa7047b5aaf06c58631ce29bf285d90168be3f1085087ff27cc11020cc5b1c6b162aac9f2d6bcb3cfb9132a529a057c5721b69f5eab747c4178dff3a2b18fecdd4174f5916d54fcb711ef6288f78ea7d83dbde0f5cf01653049e581c303b83f5a16b162a05593768cff734d7cac8f197a05489e56a013de8dc2d7b67a5ca4a65466d928ade3e5256720d4e30376538a48cd30665885d6cde11006a99e09698a5d8f295e1aed87ab37e1af6be71a9f940ba7 +ca7b49710b7a9e375e0e101fca1e9aec03ecdea0e06687bdc256347c26a189e916da4943bbf7e3c8d39bdac9769cb231be048454c6ab8d7c8d5f885e88e8e465277b0115b3eeba184e0700d429cc435333b2181aca55ee22b91429439f33b0c29bc867607b1155acd007c8531352c2944823d2e125ed7bd47542e101ccd8af708202bd0f3c912b79b5339eb7eac69f1439f632d05cc283482e85e49ae36ee1b317333cafbd8b25cbe94ad8fbc27ac5ad0a6441234208d3b411a470896a9f331c64cf6c0a47c110a65210c9b1f52b0ed500561568f9f63ea5616d2d29e90898eaf610aa3ced96dba78df3c3f77e98b8c5975b2ee21b77295de747df2219608fbf +e343832f285b5b2f053f8f28b9854c413528c7d78a901bb8b1272a449e39987f5c3a0e8224cc00041ea2225798b5e717da518d5a18810bab73fdea98e02e02cb8d76cfb06b693c5f9b2fc121708f8ef33a905c6ad99bd9c9fcf4b5b236b0526408e96894810bb39479d664165ad83e4ca5eee0a18e23471c987faee7dd80b3afe8dfc3e3209265e9d2c360664f86df1bd97dbbfd230ffc3fb5e9bb91db4eeb2161abbbf46189f0a6f77525dc83cad50a188dc3f806310d3ee9cdb647750cb79556c01c35a890f48a49287e1757183df5a5c9ece7a551b349ada74011cbe560b0e980aea3718a925e0f3df4fbab1abd074ee13f7496e95ab63d79895678db2f67 +e70cd99252db29cf0ae67f30755bb491b21609fa1fb1aecd34b848fca56668cf76972e214d9c5d2fc646b1c5c327288f6f30d51d6c36d627abb3b26ad06ae72e8bd917c0a939ab1c1cd10ff0d66285771ec1be24298e75dad3edbd249a5c90d98b727e919bdc32f50962321b12d9b5e30776d3edc2b158b91e828cbdd79b5d7bb6850beb4a3956d32a45f7302603aa401ab4b4ac33a2e1c145e8fdb057590891be9cd756b1f2eefedbbf7c70c9dc4569fb8c1dae5902e037edbcb9c9d8a1217ca2f67096093dbf96391d7c452dd5d46d948873ddb1dc52110ecd5d1f198887cb25b456af5505e2d5a542310233d6efb1be292cfae44e5625b069017331aa636f +e3bedabb8717d421fbd53df06274cd0f3a9494ab0930a68d60413d163f50610314de671f74d8d7d6d6ed730231db025c44776f0819a3c2db970477b94ead7899070c3995308432f49029b0c6bf0cd9b27d3473f88ebb4a2ebc3c36adbd05c0e9aef1fcfc5ee1715f659ff393ca9032e746647301aaf94e901e136c7357628b26c0603144c7b26dacd52ed1f798d9bc22edf5735586e5f7c2214e59859fd26a638341b1ce6abdca29c85f6fb162396f99e41ed589ee6051364b7f896ade999deb0aada54d8322bd9ef6b99994821e088ffabd5578cff3dcf83b478cf59ef0b7ca0648370b8a0ddcdf00ca854c95b8eb3bbd1080a8bbb6c1e5859feb85551a84d7 +d7a804cf3abbd0784374d6e5541cfd8de4ac1b9c8ad0443252ec8569d3bae9aea3a344c174da524ec14ed91a42f3d2864062ac96256dedc9bc5ff749b72f62916d5bfc2cf25cd7764d5399aaa652d7c75ef50d4f7482d1fe2c08e473df24c3102049a1aa036da29dc9572993f25e5dc9454a30a95eb07545abc7744954226130cf86cd8165ba161e62eb087693ab0973fc88d11c3e4ddd25d7198a14254241edec289e9b8dfbd5a8320f6efe549d86339b0e4ea3614bd64323ec6e5bb4fd2224df78659b625046321dc956b9b51947adc67a8152758e946ddee84f8489f39709bd7155c6b63f49a3f8985b32aefaea709fd8eff66663bf84d1051808bf42ebc7 +eb0d1c299320dcf709aa1c2431afd45ada07b10282604aaaa98b5e88398fc4e2c320f2488a8e2179df553190df6ec756035d8bf31147477fd3fac37dcacfb8a3a3102c69861f376d0c7b5b71132c1e8ef29fb10af200295c8fc89c018b82776c0d7d277c4fa0cabbdb59a94edfd674dbc02b2898afe598727dc87e600ce7730b908af248b156405d9b8e872eaec3368fbc29fb0875cad020499e91906cd9a1749925d41582c097bb160136354d4f7c6e57fdb57a3dd46953d06282f175153eee684ea57617e90d5eddd316c51a8988eee786c71a6bc2591178b728d707ba2e364a387c1a43b69c450c98adbae622b9e907de312d6bb2bc6e68a3b8618a4de247 +c3bf411977865fc33372b49c9ab4aacb0c8b5f7ff688c79cdd614e5b1bf0aba43530486b8ef1a1445ea15b586dfca6b97a28c66adf7f1d22c51071df3ba878d1c2192ae4d7ea0a2da330813b828b596abd44e6cdb84717edff0e312d4426a2ae633e19bcf27cc991534178ff0859e3e4ddd7901eea73575100d25a31a63b3e7d48797af68f0f80e0a2ceee20b06fe6a3853027437aa6d79d55cab95de99f36979b1d6099790de171b8ec5b8f0ab8596c69703252a1328eb6546282621b88c6dcf102b88013a4762df61188ae6caf322a54a4af715f2e8f61d8b4b7bd33491faf823e7843d333db49d1bc2921a5712801782d4eba531f897b01a964084436dfa7 +d3ea9367e6437a08b1153ace8ef0023aa154956e58a95fb4fb5087956b42dbb8d41855473c33705ef4c73a9680ea7e5d7646a680862e589e9c8b0b8081dcd7eaef7fe8ab092fef49c976417d2301f0750eaec3a1a428678e1de4b5d9367d226c2d81ffdec4b0d1c28f9f71ccc4542ae478f27c84b97ed8bf80a04701b402b851e20a4d64c335c73df49dc040d322d1c72e1e5d337280d6aecc09e2a550b2c26ef6f937dc1c18dc2e334ad59949a36a9ea88f6d6253e65cf19d06226eebda9191d3b0a6a8f495fac02c739963d2f06d0f6c228e6c333e9341c13f5713c0f69e695c6b3ee4ff1ae832a35aed9a28e7b868e6b0e34c1a0e1301a8b1e15d2d7a4ed7 +d6626ec810899cd5f0b5361a11f5820de85e0261fb6c535901d8f76f37839972e902296ce4f525446e0c06b6f97096741933be97fff8489357e2eda54e79b1c7db1eb91d51c93b30dd507dc183b5575bce7624dc3d2a2a06a48d1ad301706b015447bc45429736c8b0116971f4460ec44698c656712026e0156a69e3ceb8256750f9f9f7dc5d8ed0e88ae6a865de2940d18deb712d12e31ea519013cdde083d6ef978135ed7951eff5856afeda858e7fda60b53cf7acf6370e91b08a322476ad754488c8c4cf619a7c0e3296840a95a22f4bb8d20a144d528ed392f167489d465ec8e8cdaed9679508db38dc8d55eecf15efc2c93b052f16e72a1d95b692af07 +c6b9934d570585baae84d6b1c4fa69c169e4dc1844dddc56930fc8c584d5a7cc83fe42385dc0b0c208108dcb30fe7d38e543eac50deaaf85cdd4cdfe375b9eaef6df4b0fd9204a646291cd0fb922fb7e5a59a6011a598f7314a5ca989da7ae4cdfe89736109dc0ad3e022f4db5a3f90d263b78178368f8815a3b64bd1fd143cb86ef7f922d39296f9a522f68f9c19e198ffdd314ca2c9d6473d10bf4a134ffc1299364d074a45b3972e258d85ce774270854320f88f97e1565c3ed25d868105669c026bdff0d0217b6143815fc50ebaeae832e69658fa6ad33773561631a5e9081d66dbc3f2ee6210755aa105367a41d48f295000f61af1c91e68c5d2d50a487 +e74b0876f6a7ac9d0d5c0e791b6de0c02d9efbdc529bf0323448f892a6756d4ea3994dd3a00896fab6ebd59d23942e2b8f84f0492105d1261e60c99c1fb03532d46650fdd1c2bdc0733058e397a42be4690f9c77fef4fc56724bc0d1a3ba8ba232b58e8cdb7fec483835354592ff86485a364196bbb0854cee5b72166fd32f7e57e823a15ce3dd8f8978deb63ba8ae219b5525d2b5d318971bcb54a96ba00b5e62ce7b45fbfdbbef598f8495e3b4621eb926556bd6745755a3450c6328d74ed8893aac482dc8e4d25ae00d6bdd3ff17afba7930efc65463ae316c6a73f464a2666738ed1afb91633a26cb106f74693bae38dbcea645fef317786ec88b6eb9e9f +e94fe42a2f4ed6de3dd58d42c35729b7420973d98f0eaa37568c6328b495b1dbbbc1d43c64b2b0081e68afda45b45138a9bba567aede4d36b81c350cd47fdc6f3fcee24533566f75fe8caa461384dfcb8b8a9f737ff661b5c00ed237f3e2aa2882cb7f85fb3c83b8764b508b8fd664a00b18603a26ad6ffc29e229ab4960e7bdb2ead9020669af275912f5496487a9838d4509a5b9052dcfbd517b2858a31d576230044ac34e17b1673fde22215802d605c9a962102caf5750304a324c307072725c00a52e66ebcff177dc2d57748853df03b057604d9e6ca9b62a771b95a694047d2033182d33097444bf91b991e7dac66078b93344b9e1c511a16f67f7c19f +d2fd271bfc3494d3b89cca653ba08af8bc17b4b8d9f017337896747575c8570db057e62bbdbc0b8f05a807c8f174c2b62321ee8ab5ee52c62878406c580b6fd54f523de47046efb5d6620bcfdfd53e4fb4449b69b54f214c20eccf40998462245b1d691c2ec4f12e9a746282871c8c94829130bb559c16c4700cefaca40166eae489452367ef9ccb161943545ff7a4bf27c6d47280cd800fa0be1b834b1e6b47f88f30ee5842904acf7767f8fde412e250ba58aa60a6b6b1cdf4c3080d3c13f309262b084cc2b8f87dc9206d8fe8b6a508d83b6e3b8264657272da6ea302fb37cc5a69af0b446347c8e2f20a9cf40960313bcb97a626f5f7d82a1cb0a069afb7 +cbb70eb40764db669538fd6e5dfea801ade1569fac49e5658d02a77759b2b96ff5f32db3887ca3e883a803661518d785631e0e04ab2105f90044b81b30e3e7f7bd94b0e9863b0ba16a86fdb8f8eaf8e6fe2ac5f50c5a08f03d77cde0be2ec1023cc6dca46e19e6cc522f1e64bc47b598d74dfdf2edb2cd139d62705b78a55b15db1e5828ce40f555cc98c5e034647c84be08c497c9a50edb8f4f0c6975c66dbf3961983c5eb6d5ed45e992868adcad1b2cd05a1eb24e9989fc865483c672a4c9bbc7a42cdfe33360b4a0c35a213d9ac9fb0b1821adfab3665e661cdc176164491d08f2913bcf6b2eebffb2a2153c889d0a4d5053848ace3ef4f092bc10f1dd9f +c12bc8869c0a0acb12962d8c972543197f1f4799209abbf547086a83dbf4017821a87276162d88b5e7b706d33005179b943bea5e9e1b54845d9a3f00246d938de1ed2e2ae606945133d2d262a80798adaa8de7e59470d8c8dfcc1e4bde44741af8d43e3bcdcf4762bb7ed55b166b3cbf0d4606d48c096e905cee43a889f05eda64a8ca822868a24b39bb5e706d40c3d055a56fcede4078fd03aefd06e193bdc8ea85ce6d43067deed27f8417a8cc1f6305678911ef4ff70e0314a5b86cb18f093d537dfc20ab22f29fd9393aed275e53bf016b36b433837ef263871240a3ca52c7aa5804f06649c2d4d8133e5fc2f8df979cf44e5ec206799e2055b1c069a9b7 +eec4bec2f19fd2fd70ebab01f28d10e79414665f0a32dc6c312ca5a6681330ede667e442e6cbb87ac5566fe4f5614f2da1d4f1f721bd9525d5d4125c5e3e313dcae009c801134c565afc64b76b6e5d9b45df312be86c2d7d68b95582e5038ca1ad28683d7eb281b77a8a12b4e95b78e46e70c57cca1aec0f3109d3abb1fca23917cf8b9b6d38400627d2b698f97731e2a99247f9e9130c056f2da30906dac3f16dccba2f6bd46971da58ef6735d78b8f43f4929859694da368b87d4378fee07c0a65a941fc8c424c08357d31824dc65c9e9749e80453c84dc2d2510a29de49eb11207dbc2218e6f1fd5556ecca9a60c9ee59d4b65f29d67dc6bcbf2af401a967 +f22df4ed3c6a0db51500c0d2d1dc176a438e5fd5dd6f40270a5be5966601900ffb2f9d76b785fc168576b96e810112f0292feaecac3ccbb80705fd2406d94b65b2fa1d0c05b1ff6a74016f7f883731d9a50548277adba53a3cddb028290f31da6fa9a3f9a930a2d7699b39c99597bca6ab4d9d124b98132ba719b685da84281d2b42296f7a5027dd3f7445ecb4b820733588b64e126016cc320049b053ffcefe8deac37a99a4a09cbb405abc5ee3acdb6981146745d2d2169162f94b0207645c1614be41d2315ecaf0f54a6787482a71b729d0edb61a4bb50742acd98eed449b460228d05d9fca592451a83017170d99749fb5d5fe969317bb73b3703fb95a67 +f1d0ebf008447ee037d08499a56d8fc42d631cc7bbede4d25960fe99d8db2850559b02a2e61b8808b72c57685ec9ac33668aaf141b1ef88853be4c248e2abab307fc3440efd840f584476da4bae30f9a7c3bfcb5b79ce90c131729b204e06ea68bb00f9327186f131d9014c253df6b780a3e557d5b8c7632991dc819951cd9b3b88043ac438a7afe2eaf2cbc453f3012137d99dc3ed11849ad7997a7e141a933d9f90407e3f0299aacda7941321811704aa95726e3c50c73b4b675b973133d20e8f2616173e9fe19d92558b0ee128afb5628f97c3b50a57cb338c6fa6358f5a6e5d826d6ddad980f36ea500874633d7a7c1dc3a75a9bac4d558b5eabfb285707 +fb00484c6ba94ab7af885d318e70615e091a4226cb832e342747a8fdd413b3ecea260dae5d7f7bf62bd68eeb040dcb0e6d15c23874a054f52372e7a4755350f7bf3b71fdf513921e9a16ac70f5cf422e467b7119fbdbe918ee0abff15771a0fe886db0649ad4d62ec008d46a6f411f18929ccd0319c0874de23d190ea2572243b3b57ba316e84756148a351527fa315be928deca42f136cf1c3363182ac64dd24f4f64ec866fc13889a3a9e2d638fd31d8e5cc93ff8562ca40a381914f77fea8c6e75ebfea3118d899f53a85bd1bfc0c1483e1613b4d686380398f3491feb836374f57844f1d06cf2fc9bc4049b1eea75477817ac6b585ed6bd4b0ca1cb10a8f +f258818fab4e737f7131337516f138a9921e5ea146387135a9d56bac143152f839a1388d0a7c9d9a91b9888045f1291978f36ddca435ebca418d054453b6d280dc54a849e1474f41c9a6858af4ffa1bab494ac306151682d26dde3c96ca1a857cc8d93c986e1d09d8e411d9094b7e6ea5d704d5c57299af8698b836cab8d52ed5da253a57dd0a859d9a75daa25192e42ff43ae768ea6aa1f4823a3ca330b9b2e5267bcc36946456cd5eb7b462dadf59bed721664e1a207684631348e0e57905e326cdace1906f4a09f6d025ad9c257d4aa3a39b12bd2775793226c9183f81a678a7d9197deb7eb87bf72eb5301188d42ec0777b2a1ab0c71a7c7830229bcde17 +e4da88ee45dd04abb6ebcf0774ee890e40a5476340ea4745b3903d2ec04199db76853ccf64ea41d1874859621a4e0e2ec8a2c943bb1c8dd61702f27cbaf771e91998544bc9a90e07dcb87d2f80a386eb7351f84f114096847aa9f1fdb8d0b6868bd3c3388d9f7314afadc658bcf6fa177b85e0769f2e0cada653e3f8e26a754f924178f9395cde8cc6a16a8d30b161edce0d1a1848b5df5b1949bdea3f0fe8b6fb3489b0a2bb4cdf7085fcc856dc74653535a0ddc82355458739cf234badcce141f52200e702c9d635deba1714fc5b16d8ba67cbe0c500cf965380936281ac2d4b516a5b0412f41539a76963a62c95852a2bdebfcaf86105f48afaa45f2e7a67 +fe49c3320cc6ded64e1c91c27fe326924cc75a53d3844904005552eaede4dab1291236922b7d8e20e5ca18ab8b61b2796eaecd5a6b47d4a417928242915441304f85b17a2ea974b1cc9b3b93fc5b478f469cf72b376d542091bd4bfecb4c8875f8190b9fa1a0cfad538a568eed79f7e34159c4ce26d178b3bfcbb5d943b42e6fd0a08d58ecfe8b1c1184dbfa6dcc28395cd32a9591c82d517428b662624a5ae4a95894e1160ccc3aabe1e4aa039ab66c56ed4adf6ff31365f6bf678ccccfd614c85b5ce2a21c77279b1ec2a0180652e5620e164862f5c8b8dcb98ec1c8533eb0dae3ddd8c0e30b30f8bd07fc0dcfcefddb6462190173b006a36a45817f079edf +da6d7f224f225e60e2ccafc3cc9be02b454d23fd7f6a2ea81769376300a8054bb7020ed49a510502335474c481ddfb8a6a998ebb3fca3ea37d0c046be3834a8f464dfa7b6e7b4a1c6065d0e2ba219c7a22e239d8190c8373f550d8227e024d71a71069681c78fdac01b2e0efd813546933d5d2853cd95a05f230fc6da62dfb6399d6551e5957208888792f56a7b0e34df83b33133e1623f1e29dd67ff45b6e03e4b0ac15ab40683fdf8df0619ebd3385e5525453817837782e26769daa6f012bd55bef528c44f3dd06afcf4d3abeec918966b8840644156d73207b0630d6b87678272028c7a484bb6209a7b24b8d277162b7afe0bc83b2abb62ff82f8e14172f +e301b002e907cc3bb46f1d9334018c1e4d16da57649a2572d21fe2d13e2ad261bfb26715399e5d268c4e371f90b10cc7ac24ad55ad7447351ae97c2bed65eff907c4b228ad7f0ef40c1bea699ed4c1ce7e8f65bd3fdbc914c59df5456ba11d8819fc094a03b95fad8f5fc9ad2e816e8fc7fc8578ca4b6d9d5b9f57402ddbc135212a29fb0b2d1ddbebe25f2df9d50fb0cae3e2e848a9347ca2f69a4d2b1ff08027f36bcf8492df8e60289750ba675d1697e10c3689eadc9e613b5002eeb7bb628ba6d23327089e3a37d9edb60bfe8562788b6605c9979947cf578611b5f8610e5b19dcebda01ccdecf94ce19924682c567fbd0533bcc25eab8189da31a992d67 +c38302868e2353dcd003aaf9cdcb98592734efc95b6a98e4c8519059e039b5e792baeaf58ab59479482c0eef4672792b60beb4f37c3f8c4a54bf4723b98c78a8b53c88803d2429f3c585bc4f220f252f011c971f6ba17a2d0d62479569bf0d9c41a44510cdfa1f859de5a0d6555559884c5fc97eb1990687f892aff9d85b6762e26e8a512005e259e227660b28ffefebb7135c0f8d058ff2ee37538ad0bfab37b0060bf1d88279529d5cffb4c9301b4d830eb9654cb235cdac5e21a20329291ae8b691e19040bb796282f5892f10c74b99d1dc6dd06dccea8e0036d2835e577bd70f318629adf5ff0addb176609bf29282e4469b95b02fc39d902e799f2586f7 +e808457fdba6039fcdcaf150a555ee2b7bfc8a872abaa8f8870442b25c877ff9bff15848f417c44beba96f4455c0f043558dd0518f1b53d5aa01ab0de6f9c345109dc89afc59c811e69777be2b866ffc0a45869ffb2b73a787c37548a3c3856a73c8ef1b4b8277e56fedb2538db696eec76b4e5fbf1fd36caec7d855bbc2d98e024deb88aadc524adb08d8585e0da1ebf887e1c6f69ef66299e9d23aea105dc8966ef46f2e9464d830c2649edff3646de1e72906f8a5e7ae4b8d7c2d9abeb72aad9b81e97151d0c9466e79d071010d3691894042ea451bdc0419ef21e59570d6853caba6659c51188aaeddd638621d410a41d2d0e295b92f98ba0557a016760f +e68937d5e0470606af0fb00fa35357f5ed70210090fa7a6c10d2d47beef8e3f90f37b788438d3e2592cb9521a1991b2997798b3169b49f184bd4b80f9cdaf10af65ff7341443c8047c844d86ff7b6d2c8491acbd2db1e81aa767138dc1a3d2e4269d07f6491348bebff9f1b4e79dec5b77ad1d5604564d0ab74f4d7ccf3b3419f66689cb706e6d5f36ab2fe6bb2c9eada5bcc21b9908babb7981862a7b6ec02243dde4c994a8a9759a2d3935785804b1fb3ae3ccddb34cef3e1d266bdede770d2166e2522e598de1736e49c2768f519311fa47b80ac0373145a92146eb492dfc48e499b24f0c8724d51154bc0a31da2d18c80f8eb3dbffe06105f3dc7db2d537 +d6fb4480d79bbec19eba716cff648ac395c0f3d640fef9f7b19273b93d4ede07656295d36a3b81c144167b84f613ad57b44f279b5177c3ef8d0f3162b1c7d2ccd394c9d58978ed62e809e22da2e5cff001ad4ca0712862d013ccd7ac51854d41bcf46587030145f288cd407e2a5dcbd0a2bce02eead90c8f24b770b66b5315e884e0fb0647b3a30fb89fc95eb9b3c757fd05b60338ece9a767ed42c1763762545120bdb46d6b8748d2131b601d543cca7bca5901a6569fb95dccf36ba827321f0556befd7973b885a7967061bd9b2d54eb5631c798682a352cd36022d86cefc1d07d1c1c314ed59880dc449cde9c4851e28aaa5c42382e99b0b6d33d62896297 +e6655c11361a3a5f6691ff576814edfb733cf8e0d14ab65db0944c07e82b22781f54e9b41c43e5e64e5058437ca9b5064b8fea88b1482fede02340730460882321ed253e37c8e23cc004d7ad5edbee03c74e1e80bbd47827caef46b0894430279e1eb9ef6a29f192bb230a36d50e357d9109421823dc066fb15d626b2613c6d08c35b8c9bd27a0b613fdd476560d52b5de371b14da5546a632e299c24264ed979603ed9044b0fd2775662176b1dfaa8eb7d440f95a4b145178139623015103553ba4191470f27730028b32428ebc4366352acd36f8de6c65a4f3c4381e6301abe8f48ee9ca6c1f88362db2957449fd2b13035ed8b4d9ba72fa1eb1308bc4265f +ccaddce6d9ef1da18ce758bb6664002ddc5c301fe64205b622da3cd8ca5719a6be3a21e2449c52a334e6b994b5ac844faccbb96ad01091e8f3349ba047b56abe957ec8cb2b864cad601de60fe5c87c14216a47b86965679c9148e33d07dcbdbd2ec463be5fffdb0baec57e124b2f4669df0dad0387965bee3971fbc0b639f8d40999e4d58b83667014401174bfa955a5aa3c6348dc5c0ca58d5d4eaf585814dceaf5aae36d534ec90520b5b9dfe941e42e68e6a0ca10c2b68f5486323fe09b2c7603c93847cd1435f9fea28838c8c1c6069c93c39a076c66fd28406a7676395d7a4487ac4416473768894c4c04c87c3044ff3699777b4176ba4984eb7957a157 +d9cd393d4f4545774c88d21c0587875d17dc5b01edfa41d241f89bef454bd2b92a567c5f441c05ee41bea7a79e3dcac51ab3832661c951da39bb7a28a6eb25ef95ecfdba905ecf24a356ec53cc3459efffa215efbdaeb9638304a622044984d7fc7dbca316d5878b029dad72eee515827097d646a7b1628be2309c68fe7d3ec4de85555814c55a5472d198789cab7b47dffcf258fb3fc30aa9a22dd8055214f5810e65554ee985c0271cf0ba071e05b5aeb3d66d5f55f6641fc1df89bab03f11e3094bfd90e232dce6ccd272923bd981fa512ce856326fb2e9a85cb6260df53295f62ea7a3c3d1987a91c591d754e63592027578fe2a3ed9d85e76fa847a6eef +d25d2bfc54b9d1e39cc376167b6763941accf7dc0be6a29cf460f4bef1eacfb424448c892da4f79b8a67fc0b09e426db6f44e13b8494e384aa94e3b7a82c921f650f509b8bc10550d94f9fcd22f434c97adb7f193315acd5ed756bc90d7ffa9c880456549115b97f189a3bac27f76ba1d21eca9563ca52d119f39edfe3a65798021231353a56d9bfa31acaeb8d17439235e9cad2632c8f02d7ec4d8476a9d103a3a6435f8489cb99c9c395ca7e7421f58ce39742260f0f3dcc8ecce234bfb982b714cea2f724efd4585b8312fdbab1c35e8c79681972d1cd5cf172e0a107a47f887dbd1588d08e4615d822e1acb64ece7560121e0cac4786dc96589c997dfebf +c7a7e12f6e996669e5848dca2ad7ec586a31c333b2c1fb69f8baf46d7b070ec1c8fe7e0f9a9b72a93e6439431daab72a629fd87fc23dd417bd7b624788d8e7e4ab13b4ce7294846f6c3432123903ec5674427f333737a0e1b261fcd7a63229c5c7b41e9f40399e7f9e232950789b75847da1a12a1e2c14bc7c3781a349e2a68bc51af4f81a1c7ac749c9acf8b6944fa08d8acaf2288e9ee34ecf7937fab9643efa04bd29f15aa44764e2537a70d42b163cb769341f398defe9fbbbd9425775ee7fb11cf4e1092b4098dc0f007871dbac49d77e24dc22615b56228a0425c968074d851fb28659ab0d3cd1c02d3ec5b02d1f188d60c06eca4483fe272bc714a367 +f4d2d50a03cec02b65e1445f44d6f9043e36f905af6f122c059f13589abe8a055407da383f6f4398d1126046053316c747e4f29b5472a7752ce84fd508225f553a2563422feb440b4255ed41a5c3278499a278c5fff9c0d95858d6e0bdc41ec4d20438cf5da6eef853fa9b23a0be4674b5ceb85cfc64358649ed98811d71f5249129e8663d783e57650e0a04b0520386483d0ff1d4a8dbee9b5f9a765e9041b7d1847051b6c844663c5a097144314657d7f5d5a28723ef2e91b1f1b3b2d45bf76bde6287109fd8aa1b4a3e62f33a085f692e70a27288aaeb5ada0134bcd883cc269f67867520da9ac0405e3a54c48ad0cb1a0195cba8d7f986b1ce9e1d632197 +fba8bb55d7756d1a7698ec4824acd3e9ac7a10e9cb0da2a009b2ad7dee7a9bdb65c6aeb60879699d3cf0199ca798ef0a94455748f2e08670597f5df48b8d13b8c8d20d9bf8a38bda88b3599b032eca75b3b140faa38726ab55fdaa55f0c01a97fa11d8cb361be1efbfb9e51f00b771a8da25eec46574ffe5555be56b7d390dbb34caad26584e0981f7e05c9b411475f5d06aa8fd40fa4aaf8ef6566a8b556937d803b41334050c706fc17decff832ee14f78f0b0846b2ae2f66c6cf218f52062a4265683ecbd39492083103ebdbb83e8faab82eb98a1fbb719ffd68ad4ccb2b7148a85d98756dcc0bd034c4386f8b70ecaed98e0e7dc9420360545d2f71617e7 +d28cf47e27f88f2e68c690143f93970799ac8f06e488df14b9a9da6a0061c110cca1bcac102a0d68ece503b139eb81d5b9ad943fbec7021d2bac58ffd5994c69039d0cbcc7e3002113f75c04f2c7fa2a93697793cbf0a80beef88ccc7485551dd65d84faadbca6bfe4b05981cffe3b85dda569b3e950d6ce737bd4027e75fe2ea1a3d16a3539b6eae6d675b5a371d24e378c7f2103de49e68759f5cf90a57b14457d24bd248594acef749ca1549c4b6ee3a6224ac040c3c8227444f3f173006bb4f83fb5bfe5d390b1466ed5d4b9da09a95fb5e5ae2575d742743066b0f5fe56286baaf422188970c7c33c38c1a5ad5e7115cda4f5f583afcb63eed64519c8ef +ec9532766d679b81b253d48c65df750e7bc0e5c90d102eb5e7ac1ac7f7c3736025104306a1369e67599590abfe6d3d25500b8592980d89703eb1c6dc7ad1010b453f10e62610f49a8b823a67b1f9647852613800be0864f70aefa93bf5860c55bd25c9ae2afd3037b02bcdad3b0417c7e038ee175a1559fe342e93c9eb09635926abab4d27404284b42adb543adf0c5d63d1544ce024163c79da3560e2d4c1890bfc6734e4becf911f90c9c40f850642931571473ffa6510da68f89c03f3cbdaaf3239be9a1ed9d3d5a55e0c9f865da42402f2d1dd9fe3dd7a68fedfe7d0ce58d99e838c73beb135fde4eb2fe65fc0afe27fa841016ea89af86dd7712c2d2adf +c325097a0f073fd82087d3b0d187a51cbba82dcf21198268894bbc1c0cfcf5477146b7ea13cc4510d3c709924a1c55d931937ac1f525d0b131a897997f325732bed58b9f10e9e4e79703e389f311e81d0a16ed65f622ac9680bb16360d7792e57232861cd8acbf041019fa0ebbe32a8877056d389f663cf00f780ddfe0659419480335b1bac2d5cf7c0eadfd187f63f6e806c1a0191c54e822e94025c2a6f2f062e0289861fe2bf71a0bb792581368d5a4e4537b2e4baceab71c0ed4e0483ccbb010b9bb062e7e17166b741385f67904f5aed7c514fe03eb9aed823a94ee6415dc0fafd8bfe845da4daba461ec5be6eafb02e0a83b353064e2a74fe6f14c545f +ce2b7d0ae403b317eb783174bb8be2bc54af9a9d9d9477b68909cfb18b2a626c8200a54e190838410182309a0066ab7ecc3f20bb23793f2e70ea9410ee267b215c033a19fe9e99c622947f115bd737f188f80201c6211349c671cdb8d52549fc033b7daace8efb50c4fddd62d479f6542ed29442095d817af0b13478e363ea864703e889af4ec97a430d7f09539bd4eccbd2f5ddfc9e982804d53ffe147e217b81a651f04414ca290c80fd3aa61644f6d4d1a6a37b0d9065d45687013e223905a0033b2311e79b1da5bc8e8945e74cd4c11a2187858ca2eead0bf329e85dc5bb1cac43a62fdc56dfb7b7a57e0b03e81c83311da99ab73f5f4933feaf6fc1482f +f320510a1e2cca9d81052a309ff4cd09f96454d10cbcbe53552eceb2c91e38555d43e71d177618103138864da8bcb418a29e2becf2ee12b172c42cfcd91f28e4be9649cfbee9f57f569993aebd6a5aa89c60083bf235fd2f1b8318136cafb0ce3110a528ba2bc254e5c07270d75c588c67a13697a64f5baa9098a90a28475531d4caaff8c466cd11556dae236824d633b6c0476b347b363052a297d88649bb718ec8cb4d0e0fabea6df4b2d337113b9b978d8bd6fe3529db88fe3e2d18b7a4613df196b9ae4b6af8ed976c989342f14a13a0e2fb4949cfd08f6974c4a3f6b1533f59e95ed23799acd05283b3ec9f21e9dc415387d7ce1a0c6a2a2853f5064cff +e3d9bc693b1309967f809f1620c4dc566a3534df00ef197eadb90332460043b1e26a4258f673e3e4f202d3edb1ea088c261eda8ff4f038c8b96d33b5dd798b7cd9a57f028dda039657d5cb4aa9736d74d00644ff43defa5649a7b273dffa1bd9fce19f3fe2ce1bab430bcac7553cc98358dfb0c01f6fb403382fe7ef19ae9eb35531aebec08cb9a362de3a3fbdb845f7ab8333dc6ec00120c173ee5587b416131169c0ae57cd34b2250ad17a3a2fb98c44872fcbff0d86967bc4f743883e65dd0c328fa5af916a5f5915ad2c3e179172edf9efe78fc51809b06d49749094174e64eb7fbe31807f6d264e3b1e3f46f1b78c434356df5a1f823ef628be928ff50f +f3e6f3ece2c398baf761f7d4715450d1090fadee1310df49e3d2c8d5c5a4f08ee1db94fad7544811cfabca50855128f39ae7acb67e9590997a7e0fba98ac418dc3beda7c1e191cfbe0e354be04e0d4498d5d81639cfe68e4af9a02b44d96fb8a626f1a10885b4e8069fe79b3c2a428d7364d62c34e7de2c64ac9d16dc11f2490a8b795111416e8a67559f2b86b64036d628ead2702fccfd72da9fcc0c19b4940fac746b21a63c6fd2555286edc6a56fac16a1c0cbec0568b65ba24a9ed5a8ad98566702759d534d24c5695f159dda60891a0c710aee325c931b6b65abbe8626c3f25c63ae09f97254adee694528b84332a3350f81782ae0fb9c727d5badcf367 +d8bd0f2ccb760f4c24c89b03f80f25478862878a189870c71f9debc7c4048810471caf8081507a99f9d487fc231fde6cd1deb7ae1e4cf56295c7a241655b3206afeace7cfb503c18c328efd1d35429737364ad25d09ea88c286678e1e5565eb2aa49f34bcaf71611c8d22eba0023b511f68e3f98f67b8cc65869949b3da3e5a4b3bbbd9e34a97bb8ecb005b7c5c9a9f6de8014aa1d20b97b124a6c0f475384a239028c65febb79573817da0c54204ba27dd1bb282536fa4e8fd42452a385be4250378114032a6bdd2dead1a92d9ef67b585ec2f6fa2391182352d5040b3d5db8bb86d165b1143368f686bd1104cf8eb0d251977754de11f9d76a60dc4d6c3e97 +cf6f42e6553f0b212454bb644e34e8ed1ebe0e57dd23bfa3c8b9a5f51cdd494a36992aefb8b1b8b46e8a0c9e81d3c9a80c01fd270b0ffc21f31ecaa363735ab5de8c412222053f54beabdc242738898ed62179ed3eede15af07e2f1e0ddd2c6d3c56b0525c27ef98f99ef6e95f43a844d10f6bba8b5c3ac24fe3c5a2597bd3a883f43b47af53a6fd05dc0a7c29d63cd219f4580002ddd1a797c8d083c624a58fc3a923fbc6e042b31c8f3cc98c8607ad674446335b91fd68dcd14df9a8a3fc8e83ef58c5e3fe7fd5995da01ef1fe648956d3eed256594dfd9a023a257f7d60de2a2287d7f9238005c9558079e49365d01328962b3a5fc1190015b1bc256852bf +cf1ccdb9ad3595e22606aa8be637f6079c18a139a87ffe1d0daa4625aa0696293cf162ccd788facc37a1b0931d06d851f33e86518160ca73c11d69fba3d83cf87fe825e47eed19ce5271c5111debeef6c5152b1dd146d241860cd77d19814796c227a54cc39546796beec6336f370add7e2b4c68b63e0f5200508b8e7d2a034bb383850e49da9a6b13741ea6947998ecf286bb4ecd6bf98cbb4855da43c10b5a530975ad9f12d60dd55c7d9241568110f27e04f07d78f994c8641deb9bb42a73258055abb426430c8dfadec4da7d866950260c0998350a2136401f37eff88740ce4bdd958907fa72c7ea52067b8790fe8d9eb13074a917571ab6f9268e90a8df +f0c77c5278f3fa988f67251a95038873d8012c7b45bf2e88979975fe7057af1a19b189bee3bc170083abf9ae52034208da004132ab0a41a7d2757765af8abaecbe515bd51338a6eccf21274bcbce19aefca8c02a395ebc920242c05eec0d01706958b1de2cab0010f242c6878c01443d6be218af0a2584fb2bdf5531c45402ee72737eefd75ba18d9b99183ebfbb55fa626beab74e0d12ebac88598e3e356cf81e164622753b01a59cb75ad1d2b660dfa1f7e5c2566528158685edc85b2967cba489c5da3124b711f5c1999e6a42e35257fb0ab698b52c1d856e933d755599d2dc3e579297fc3af17fbee252cc922c545823a4e37870135e161116b42c6fac97 +e3ff35a76814326748ff8bb85a41df18f2148f197c788c660b4517bef2e3ef6667c44092efb83f592f587ceae0bae0541faa1e55a104e23d395c9752078d4b7e04e4d59ce9f3e775a474416d14826df19b528caeefcf206ff91d4f3dffe026fef118da2f955a445d660966af50c3271c5c8e212d314cf52a13ff01ee2383e9eda4b7d4ec1822f102144c3017270d5a42b35c91cfb7f1d8a4cd8061a321dfa94bab2b9f5b4f50f1fe2f66818869690036b038113be12a9258ae3b38c8bceadb830f42123c97cbf54ded4261935af4565c2df8c356299467ee5b5390b316773149584af6c9f99cf51c228d36eaae2a81d395a3e4ccf24d31e8745beb49da8b3957 +dd761d59e77ed23913a02fa6d03b136654bce03055be3672ff505c02c33c56ee343941210fafc7aab3489428814be45ed1d4ad7155e732a11a51a580e1b125ee3058d59a47918ae15113a1d7316c0388944f2f9ed0842e773d45d89090516fc5156cb5a3150d046dc54308ac42f277850dd4131f637b9541460dbaf074566dcd09c14a2984dc5ec8bb4bd089377f1c48f52caf1421e9455a9d4e6cd811b29b9e0f8455ae754887f1b7087a2ab76d7d093fd33f2a5da1841516d97d4430630d7d239eb9b90732b345fc8f0676cbe07a2577ebb598af55ebf3cc23e856e15ad215d70d9bbf32a72adb1a6803ec3a7fb6d0e849c70f206b3da68414f8edaae4e22f +d41fa5a32d78ffedb81296357f40de97d0316e98835d8825556f5f81876c595aa8f2340bce188e632c535ba01da23f78fb2457be7265c01714874296763543a67484823b101940de7564f4dbe05cf9836214b31aa3bd9df05631f90263f0dfb1b13cb593f3c3b9335c4edba3c6ab99e6c5c7c6ac84693e71eb50a8af9903a463ca7443a898b560c75b9ef3fc052a05d3833f7a1a817e47e6a683f359644bce97bf64fe091262ffe9ef250d1c0bfad23ac331d71f442ec0e6be8f5764108e8c1e2833f61dba7c8f31dd97641e161cf85b56e0e303c0ea1e2f940568cc62e0015b723c8e71b34ae9fedc0a55a260a779977845d0dabae8d2a46a54c5d1b0bf90df +e4d875e167c621b218a803cb896830eae2ef5d16491c76f9a5d64cd648687066501e3ecbda9e76c1a0f8ffaf175d71195f4ca52f3145d7cd46ad4bf48fcd7a7ea1103e45a3d82f8ebc08f0691b46d6c479eb7a0a5881a06be70a32dc6d6e08b8c84a5074c0a8341a2ff8325a0674d835eeb04ea192a6c53ed98dd48d2ce35a17bec10ce9b641af27f3c2d09cc37cdd12de99cae6294905398580c968ba55f915453811cd75f6a583e1547df4783eefc4aca721eae0f503683a931e9450d249b89752d6bbdd06fab8e0019d961677391ce7bc302ecf7afeb6990208db4c32815b95ee7395f79d1d0c878eab96d79374e86f8df4bce1ad82402e0de87c7d45092f +f8c17414553418d03d72eb4ca5f79b003fb73fe1d9f661665fb9fae8638bfd555beff05778881e8daf8c94ffca0212b57396dee047c1fc690d22d68e9c082565e4dba5f560fd5505952217caa879020e84554c1a7645a9c9b64c47f3b6391bab9e9c5b52eefaa0bbf7906ad4be29107a6bf36efc2109d74f504366533514eefb8840d1e9ec0403e66dea04ce666e11cd09d0f79e3b684f3a0705e347e8a4f5de9ba75250452073041e68f5b5d9e17535846db3b32ab46e82002facf9ccf002a62fc5a71eb28a726b31bdb5795c34095a8bbf0f96644864af9698e9b50fc4be1159fe66941333e9b385987fde2e21344450c6001e0217860186c2fb352c601167 +ed40b83b3939baa994b3270469b30e539ffc4be125e6844f7ca12c60da05d3dcd8302e56f9ecb7e80003ff0945fffe52937256e0d81e64c55ae442ea2a616d5fa4dc5773282c70683ab65a8af5a7c5ca393360a518dce404b87e861e902c32b58cca646091baee29bc9b5819c56e3018fa983e63bdb2c635bcc0ab87a1db3ed05a2c2cbb0de0e74847b3bd4ffe4a0275182484f9626913bad2c3040815d2cfec0f3ab6f0901899913834917693ce4efc12b042b54109b1b579fe2d58c6c625602d89714a37e5860f9cfd3ce7b00c9b2747ee35d415830370efc0017c83f82c02d3046317809f7c1f104e5d8f0634c398514fafd129019973907ed652e4c73eaf +cf9bc33b5da6f22a066f97e29c64b854ef31aaa67b145888471d89d2a1dbe519b3c061adde721566d1eea4fbd6d47ba856cec3eec23ab851882b8b5ff3e47e1743b542fec9bf4bd67f5321bfc0f7ca71c88d40cbeeab2f78f7565513971a8004c6540ef824006d54c896330230c6cccaec3f57e1372468e7a353aa1249669dcdc8bcd44c15dd8103b65a834eaf34c56a3f25aa758015bbb11b6be25026ee141570cca91e9052b1fd2416d1e5634812247116deb91fd206efb74e6b136691cf0d7f890780b95f5fe5dfb1d54c767f22a9e183e1f695dd3eba042ab861c938bff15cf35f63683aa802033cb828c79524ea2db71967bd3cc5ed6f87b3c3dd1011cf +d096cccfe6a984abf6a9ad7968e2a02e7413fc4567318513973519c90c9e13890f8e18110aa3eca46a973667b9fe71fbe25a12c422c8b164324bf1247b8cc019825e5899064801f86bd19d540e3d2ad2c9ec4f2dacd73b376390c86385fb84cdd802058586b84875df57e0dbe4bf56b60dab3e4390f3ddee42ae1e9c4458396e5454ab4b6168e33d2305c9f30f657b9e746fa837b49450b057a74e8e27e4fa7cfb559d8062419ffa5674190f38107b6db8c8111f0ac3f43f6092208173370d30d8525290b7ae72980775aad252ec9fa8ee1e7f18fd8aa414770ee707430a7125a741d8167b8388e3e24338b7bf026c125205411a9d44633eea0ec0965d31b287 +c8321da3484a75ca2e308bfa4c06e8b31dd94e2bffbe4a02b6dbe151f19def3399789cda0bffe8ef1fc52dc20b14c838f1fede57a72273ec4b4b6aeb4ae3dc0aaaee925ed5aa9f0a1bdc9e72030c99fde96b2b6c03608ceca494f6ab775eb6daa06643faca52d7bb5135f325d6c969bd4a8af32d6a908f321eb5c8275721743aead1e61ea20a521c2ad26c7ebeddb855ce4f8e04caac2fa378976ebef400ee805481df492fd5b308133116e41757719a89f5ea330312616150fd54d242d5775d51ac82936360bf5d0c18e71258d4b18ee74ba605b0c69190f6a07b48f9c8b843b1a2a94a4c6ad2eaf68f2da683e63d005c79228fff98f154e0d72a7fcf352b57 +fa669d7f5ff61d018497c0623d8f5a6d9e3d7988c6479e78e23a7e0bad4f3a32b0610fb77e74c9d070bddffe6757d4cfda0a5d3debd410d16e186b5486c1bee5181cdcfda3ba4affcb8c794caec67b5c10c62648536ad00f37474d1284063abed06b6e0dfeba3f24aed0c55808a49f34c6a445ea27d14a57afd5f05960af979d9420bc3923639e63e2235d5b030ca9f6587f1ea684447caa7d668842304aa1c8a939b5f4da5ca1f03488fc7e3597b79526d741005b68b97a165b210c84124b272036b9286f00608efdcda64c75905be7f6675ffd4cb9119a5626d88a05217df95ca71e33886d922f5987e79299a9ecf8f3b2f9574ae406a3c255b5c0500396a7 +d5be6e6b015e900412002b16cbed271573d818a739bda069ccf522b5d3c3e3618d42c24847cbf0c476b19ead62332758d535bac034f62da28f1a6797ef54df44f762920ae22f3b7ffde677fc52bf787e57b010653d3f8ecf9477ee77390595f1c423d49f008f1b0f024219336db5cdc80598d418ea21851e50e8103e52597b7457aeb4fa8b7193ae2357d3a843da216c9971bfabece6ad7b7b490f41bc387bca122fcbfa72776f883b1233abf02ed5b3b8196c0bff59441b5557b278c752c273d8c01b2dc435bb463c63a8e4e8a46369b1f5032c459d521a0e8e253d2e3a3ee0ba515dfa4c26eed3e63bf53aac7b6c8925fa76f834fc353037142c35492e2067 +d83b2d6bf3466495862733175b3d6053dc610707df617e76e69c78d5c63c843fb431ab673d1e217315b6d63c83c1b508c6f2d85f0dc47c9456a1084121062815e084e8814ef5907388f3a721a9bf98b39e498bd720871f0e9d283e915ffa151e9f193b5cb0851efd22ceebe804649d899c030a42f9bee7de473cb72a469532d334eea81beca8f7c2e467a72946c0f0da5bd1ad77ecfca096540356bd84b5699ee872c19ef3e8e8bc4c7d73ed676536c0fd8cd5041bfb6600959286b96008a54eec4e65bb182d242ef267f2e9406fd3a86b75e8963e4875fed30bec935663003a95eee31e5647d2475ab35007a753e9726d40f5398fa88a07b9352e3f63e3723f +fd829ec500403eddfcfad22b9ba5647302ba064295ea8f8d10d314a74ebd843cfe2ba9cdff04936ae28f444f2349ef5ae5a0f3ac5a047adaf24ebcc406843c91a260cb66c8ded56921ae1d3b4b5d039b0b85390b4308bf55ba2f96e2bd292f533dfe3b67803fec76e2bf3b23a8c83abf868cf4440cad475226f990f70b1edd7a8c766f45800d5d6eb034b769e27cad48ed52de170ee6c5412f529e1c83c54e57d4052f100984cfcdd98b010ac74e8ffa7206b8ede1226ae942e5d2c5e65f1932c5cc4d98393ac226e7a58e09cb21826f5473cbcc482a78d75f46d179c1e2c95b108f4bffd3a23e3577586cf54bfc7059e99eb50f74f09ffb432e057d1ae9ce0f diff --git a/src/crypto/tls/auth.go b/src/crypto/tls/auth.go index 1b26dd50ef8c2e..dd9eb673ddc47c 100644 --- a/src/crypto/tls/auth.go +++ b/src/crypto/tls/auth.go @@ -21,6 +21,9 @@ import ( // verifyHandshakeSignature verifies a signature against unhashed handshake contents. func verifyHandshakeSignature(sigType uint8, pubkey crypto.PublicKey, hashFunc crypto.Hash, signed, sig []byte) error { if hashFunc != directSigning { + if !hashFunc.Available() { + return fmt.Errorf("hash function unavailable: %v", hashFunc) + } h := hashFunc.New() h.Write(signed) signed = h.Sum(nil) diff --git a/src/crypto/tls/auth_test.go b/src/crypto/tls/auth_test.go index be7278e6756a94..4ffd368d272875 100644 --- a/src/crypto/tls/auth_test.go +++ b/src/crypto/tls/auth_test.go @@ -13,26 +13,11 @@ import ( ) func TestSignatureSelection(t *testing.T) { - rsaCert := &Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - } - pkcs1Cert := &Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - SupportedSignatureAlgorithms: []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, - } - ecdsaCert := &Certificate{ - Certificate: [][]byte{testP256Certificate}, - PrivateKey: testP256PrivateKey, - } - ed25519Cert := &Certificate{ - Certificate: [][]byte{testEd25519Certificate}, - PrivateKey: testEd25519PrivateKey, - } + pkcs1Cert := testRSA2048Cert + pkcs1Cert.SupportedSignatureAlgorithms = []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256} tests := []struct { - cert *Certificate + cert Certificate peerSigAlgs []SignatureScheme tlsVersion uint16 godebug string @@ -41,26 +26,26 @@ func TestSignatureSelection(t *testing.T) { expectedSigType uint8 expectedHash crypto.Hash }{ - {rsaCert, []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, VersionTLS12, "", PKCS1WithSHA256, signaturePKCS1v15, crypto.SHA256}, - {rsaCert, []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, VersionTLS12, "tlssha1=1", PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, - {rsaCert, []SignatureScheme{PKCS1WithSHA512, PKCS1WithSHA1}, VersionTLS12, "", PKCS1WithSHA512, signaturePKCS1v15, crypto.SHA512}, - {rsaCert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS12, "", PSSWithSHA256, signatureRSAPSS, crypto.SHA256}, + {testRSA2048Cert, []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, VersionTLS12, "", PKCS1WithSHA256, signaturePKCS1v15, crypto.SHA256}, + {testRSA2048Cert, []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, VersionTLS12, "tlssha1=1", PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, + {testRSA2048Cert, []SignatureScheme{PKCS1WithSHA512, PKCS1WithSHA1}, VersionTLS12, "", PKCS1WithSHA512, signaturePKCS1v15, crypto.SHA512}, + {testRSA2048Cert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS12, "", PSSWithSHA256, signatureRSAPSS, crypto.SHA256}, {pkcs1Cert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS12, "", PKCS1WithSHA256, signaturePKCS1v15, crypto.SHA256}, - {rsaCert, []SignatureScheme{PSSWithSHA384, PKCS1WithSHA1}, VersionTLS13, "", PSSWithSHA384, signatureRSAPSS, crypto.SHA384}, - {rsaCert, []SignatureScheme{PKCS1WithSHA1, PSSWithSHA384}, VersionTLS13, "", PSSWithSHA384, signatureRSAPSS, crypto.SHA384}, - {ecdsaCert, []SignatureScheme{ECDSAWithSHA1, ECDSAWithP256AndSHA256}, VersionTLS12, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, - {ecdsaCert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS12, "tlssha1=1", ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, - {ecdsaCert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS12, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, - {ecdsaCert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS13, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, - {ed25519Cert, []SignatureScheme{Ed25519}, VersionTLS12, "", Ed25519, signatureEd25519, directSigning}, - {ed25519Cert, []SignatureScheme{Ed25519}, VersionTLS13, "", Ed25519, signatureEd25519, directSigning}, + {testRSA2048Cert, []SignatureScheme{PSSWithSHA384, PKCS1WithSHA1}, VersionTLS13, "", PSSWithSHA384, signatureRSAPSS, crypto.SHA384}, + {testRSA2048Cert, []SignatureScheme{PKCS1WithSHA1, PSSWithSHA384}, VersionTLS13, "", PSSWithSHA384, signatureRSAPSS, crypto.SHA384}, + {testECDSAP256Cert, []SignatureScheme{ECDSAWithSHA1, ECDSAWithP256AndSHA256}, VersionTLS12, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, + {testECDSAP256Cert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS12, "tlssha1=1", ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, + {testECDSAP256Cert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS12, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, + {testECDSAP256Cert, []SignatureScheme{ECDSAWithP256AndSHA256}, VersionTLS13, "", ECDSAWithP256AndSHA256, signatureECDSA, crypto.SHA256}, + {testEd25519Cert, []SignatureScheme{Ed25519}, VersionTLS12, "", Ed25519, signatureEd25519, directSigning}, + {testEd25519Cert, []SignatureScheme{Ed25519}, VersionTLS13, "", Ed25519, signatureEd25519, directSigning}, // TLS 1.2 without signature_algorithms extension - {rsaCert, nil, VersionTLS12, "tlssha1=1", PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, - {ecdsaCert, nil, VersionTLS12, "tlssha1=1", ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, + {testRSA2048Cert, nil, VersionTLS12, "tlssha1=1", PKCS1WithSHA1, signaturePKCS1v15, crypto.SHA1}, + {testECDSAP256Cert, nil, VersionTLS12, "tlssha1=1", ECDSAWithSHA1, signatureECDSA, crypto.SHA1}, - // TLS 1.2 does not restrict the ECDSA curve (our ecdsaCert is P-256) - {ecdsaCert, []SignatureScheme{ECDSAWithP384AndSHA384}, VersionTLS12, "", ECDSAWithP384AndSHA384, signatureECDSA, crypto.SHA384}, + // TLS 1.2 does not restrict the ECDSA curve + {testECDSAP256Cert, []SignatureScheme{ECDSAWithP384AndSHA384}, VersionTLS12, "", ECDSAWithP384AndSHA384, signatureECDSA, crypto.SHA384}, } for testNo, test := range tests { @@ -74,7 +59,7 @@ func TestSignatureSelection(t *testing.T) { t.Parallel() } - sigAlg, err := selectSignatureScheme(test.tlsVersion, test.cert, test.peerSigAlgs) + sigAlg, err := selectSignatureScheme(test.tlsVersion, &test.cert, test.peerSigAlgs) if err != nil { t.Errorf("unexpected selectSignatureScheme error: %v", err) } @@ -94,49 +79,46 @@ func TestSignatureSelection(t *testing.T) { }) } - brokenCert := &Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - SupportedSignatureAlgorithms: []SignatureScheme{Ed25519}, - } + brokenCert := testRSA2048Cert + brokenCert.SupportedSignatureAlgorithms = []SignatureScheme{Ed25519} badTests := []struct { - cert *Certificate + cert Certificate peerSigAlgs []SignatureScheme tlsVersion uint16 }{ - {rsaCert, []SignatureScheme{ECDSAWithP256AndSHA256, ECDSAWithSHA1}, VersionTLS12}, - {ecdsaCert, []SignatureScheme{PKCS1WithSHA256, PKCS1WithSHA1}, VersionTLS12}, - {rsaCert, []SignatureScheme{0}, VersionTLS12}, - {ed25519Cert, []SignatureScheme{ECDSAWithP256AndSHA256, ECDSAWithSHA1}, VersionTLS12}, - {ecdsaCert, []SignatureScheme{Ed25519}, VersionTLS12}, + {testRSA2048Cert, []SignatureScheme{ECDSAWithP256AndSHA256, ECDSAWithSHA1}, VersionTLS12}, + {testECDSAP256Cert, []SignatureScheme{PKCS1WithSHA256, PKCS1WithSHA1}, VersionTLS12}, + {testRSA2048Cert, []SignatureScheme{0}, VersionTLS12}, + {testEd25519Cert, []SignatureScheme{ECDSAWithP256AndSHA256, ECDSAWithSHA1}, VersionTLS12}, + {testECDSAP256Cert, []SignatureScheme{Ed25519}, VersionTLS12}, {brokenCert, []SignatureScheme{Ed25519}, VersionTLS12}, {brokenCert, []SignatureScheme{PKCS1WithSHA256}, VersionTLS12}, // RFC 5246, Section 7.4.1.4.1, says to only consider {sha1,ecdsa} as // default when the extension is missing, and RFC 8422 does not update // it. Anyway, if a stack supports Ed25519 it better support sigalgs. - {ed25519Cert, nil, VersionTLS12}, + {testEd25519Cert, nil, VersionTLS12}, // TLS 1.3 has no default signature_algorithms. - {rsaCert, nil, VersionTLS13}, - {ecdsaCert, nil, VersionTLS13}, - {ed25519Cert, nil, VersionTLS13}, + {testRSA2048Cert, nil, VersionTLS13}, + {testECDSAP256Cert, nil, VersionTLS13}, + {testEd25519Cert, nil, VersionTLS13}, // Wrong curve, which TLS 1.3 checks - {ecdsaCert, []SignatureScheme{ECDSAWithP384AndSHA384}, VersionTLS13}, + {testECDSAP256Cert, []SignatureScheme{ECDSAWithP384AndSHA384}, VersionTLS13}, // TLS 1.3 does not support PKCS1v1.5 or SHA-1. - {rsaCert, []SignatureScheme{PKCS1WithSHA256}, VersionTLS13}, + {testRSA2048Cert, []SignatureScheme{PKCS1WithSHA256}, VersionTLS13}, {pkcs1Cert, []SignatureScheme{PSSWithSHA256, PKCS1WithSHA256}, VersionTLS13}, - {ecdsaCert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS13}, + {testECDSAP256Cert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS13}, // The key can be too small for the hash. - {rsaCert, []SignatureScheme{PSSWithSHA512}, VersionTLS12}, + {testRSA1024Cert, []SignatureScheme{PSSWithSHA512}, VersionTLS12}, // SHA-1 requires tlssha1=1 - {rsaCert, []SignatureScheme{PKCS1WithSHA1}, VersionTLS12}, - {ecdsaCert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS12}, - {rsaCert, nil, VersionTLS12}, - {ecdsaCert, nil, VersionTLS12}, + {testRSA2048Cert, []SignatureScheme{PKCS1WithSHA1}, VersionTLS12}, + {testECDSAP256Cert, []SignatureScheme{ECDSAWithSHA1}, VersionTLS12}, + {testRSA2048Cert, nil, VersionTLS12}, + {testECDSAP256Cert, nil, VersionTLS12}, } for testNo, test := range badTests { - sigAlg, err := selectSignatureScheme(test.tlsVersion, test.cert, test.peerSigAlgs) + sigAlg, err := selectSignatureScheme(test.tlsVersion, &test.cert, test.peerSigAlgs) if err == nil { t.Errorf("test[%d]: unexpected success, got %v", testNo, sigAlg) } @@ -144,7 +126,7 @@ func TestSignatureSelection(t *testing.T) { } func TestLegacyTypeAndHash(t *testing.T) { - sigType, hashFunc, err := legacyTypeAndHashFromPublicKey(testRSAPrivateKey.Public()) + sigType, hashFunc, err := legacyTypeAndHashFromPublicKey(testRSA2048Key.Public()) if err != nil { t.Errorf("RSA: unexpected error: %v", err) } @@ -155,7 +137,7 @@ func TestLegacyTypeAndHash(t *testing.T) { t.Errorf("RSA: expected hash %#x, got %#x", expectedHashFunc, hashFunc) } - sigType, hashFunc, err = legacyTypeAndHashFromPublicKey(testECDSAPrivateKey.Public()) + sigType, hashFunc, err = legacyTypeAndHashFromPublicKey(testECDSAP256Key.Public()) if err != nil { t.Errorf("ECDSA: unexpected error: %v", err) } @@ -167,7 +149,7 @@ func TestLegacyTypeAndHash(t *testing.T) { } // Ed25519 is not supported by TLS 1.0 and 1.1. - _, _, err = legacyTypeAndHashFromPublicKey(testEd25519PrivateKey.Public()) + _, _, err = legacyTypeAndHashFromPublicKey(testEd25519Key.Public()) if err == nil { t.Errorf("Ed25519: unexpected success") } diff --git a/src/crypto/tls/cache_test.go b/src/crypto/tls/cache_test.go index 75a0508ec0defa..9217a27eaade3e 100644 --- a/src/crypto/tls/cache_test.go +++ b/src/crypto/tls/cache_test.go @@ -12,7 +12,7 @@ import ( func TestWeakCertCache(t *testing.T) { wcc := weakCertCache{} - p, _ := pem.Decode([]byte(rsaCertPEM)) + p, _ := pem.Decode([]byte(testRSA2048CertPEM)) if p == nil { t.Fatal("Failed to decode certificate") } diff --git a/src/crypto/tls/certificates_generator_test.go b/src/crypto/tls/certificates_generator_test.go index 5e01746983e8a6..368e62e9b8e58e 100644 --- a/src/crypto/tls/certificates_generator_test.go +++ b/src/crypto/tls/certificates_generator_test.go @@ -40,9 +40,8 @@ func TestGenerateCertificates(t *testing.T) { } // Allow RSA keys below 1024 bits for testRSA512. - t.Setenv("GODEBUG", os.Getenv("GODEBUG")+",rsa1024min=0") - // Unset cryptocustomrand to avoid MaybeReadByte non-determinism. - t.Setenv("GODEBUG", os.Getenv("GODEBUG")+",cryptocustomrand=0") + testenv.SetGODEBUG(t, "rsa1024min=0") + cryptotest.SetGlobalRandom(t, 0) notBefore := time.Unix(1476984729, 0).Add(-100 * 24 * time.Hour) @@ -130,6 +129,7 @@ func TestGenerateCertificates(t *testing.T) { comment string certPEM string keyPEM string + keyType string } var pairs []certKeyPair @@ -140,7 +140,7 @@ func TestGenerateCertificates(t *testing.T) { } certPEM := string(pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER})) keyPEM := string(pem.EncodeToMemory(&pem.Block{Type: "TESTING KEY", Bytes: keyDER})) - pairs = append(pairs, certKeyPair{name, comment, strings.TrimSpace(certPEM), strings.TrimSpace(keyPEM)}) + pairs = append(pairs, certKeyPair{name, comment, strings.TrimSpace(certPEM), strings.TrimSpace(keyPEM), fmt.Sprintf("%T", key)}) } // Roots. @@ -320,7 +320,12 @@ func TestGenerateCertificates(t *testing.T) { package tls -import "crypto/x509" +import ( + "crypto/ecdsa" + "crypto/ed25519" + "crypto/rsa" + "crypto/x509" +) `) @@ -328,8 +333,10 @@ import "crypto/x509" `) for _, p := range pairs { fmt.Fprintf(&buf, "\t// %s\n", p.comment) - fmt.Fprintf(&buf, "\t%sCert = parseTestCert(%sCertPEM, %sKeyPEM)\n\n", + fmt.Fprintf(&buf, "\t%sCert = parseTestCert(%sCertPEM, %sKeyPEM)\n", p.name, p.name, p.name) + fmt.Fprintf(&buf, "\t%sKey = %sCert.PrivateKey.(%s)\n\n", + p.name, p.name, p.keyType) } fmt.Fprint(&buf, ` // x509.CertPool containing testRootCert. testRootCertPool = newTestCertPool(testRootCertPEM) diff --git a/src/crypto/tls/certificates_test.go b/src/crypto/tls/certificates_test.go index c72a5fe953ecb8..e5b920888c9e0a 100644 --- a/src/crypto/tls/certificates_test.go +++ b/src/crypto/tls/certificates_test.go @@ -3,57 +3,77 @@ package tls -import "crypto/x509" +import ( + "crypto/ecdsa" + "crypto/ed25519" + "crypto/rsa" + "crypto/x509" +) var ( // Self-signed RSA 2048 root CA, CN=Root. testRootCert = parseTestCert(testRootCertPEM, testRootKeyPEM) + testRootKey = testRootCert.PrivateKey.(*rsa.PrivateKey) // Self-signed RSA 2048 root CA, CN=Client Root. testClientRootCert = parseTestCert(testClientRootCertPEM, testClientRootKeyPEM) + testClientRootKey = testClientRootCert.PrivateKey.(*rsa.PrivateKey) // ECDSA P-256 server leaf, SAN=test.golang.example, issued by Root. testECDSAP256Cert = parseTestCert(testECDSAP256CertPEM, testECDSAP256KeyPEM) + testECDSAP256Key = testECDSAP256Cert.PrivateKey.(*ecdsa.PrivateKey) // RSA 2048 server leaf, SAN=test.golang.example, issued by Root. testRSA2048Cert = parseTestCert(testRSA2048CertPEM, testRSA2048KeyPEM) + testRSA2048Key = testRSA2048Cert.PrivateKey.(*rsa.PrivateKey) // ECDSA P-384 server leaf, SAN=test.golang.example, issued by Root. testECDSAP384Cert = parseTestCert(testECDSAP384CertPEM, testECDSAP384KeyPEM) + testECDSAP384Key = testECDSAP384Cert.PrivateKey.(*ecdsa.PrivateKey) // ECDSA P-521 server leaf, SAN=test.golang.example, issued by Root. testECDSAP521Cert = parseTestCert(testECDSAP521CertPEM, testECDSAP521KeyPEM) + testECDSAP521Key = testECDSAP521Cert.PrivateKey.(*ecdsa.PrivateKey) // Ed25519 server leaf, SAN=test.golang.example, issued by Root. testEd25519Cert = parseTestCert(testEd25519CertPEM, testEd25519KeyPEM) + testEd25519Key = testEd25519Cert.PrivateKey.(ed25519.PrivateKey) // RSA 2048 server leaf, SAN=test.golang.example, issued by Root. // Signature algorithm is SHA512WithRSAPSS (rsaEncryption SPKI, rsassaPss signature). testRSAPSSCert = parseTestCert(testRSAPSSCertPEM, testRSAPSSKeyPEM) + testRSAPSSKey = testRSAPSSCert.PrivateKey.(*rsa.PrivateKey) // RSA 1024 server leaf, SAN=test.golang.example, issued by Root. // Key is too small for rsa_pss_rsae_sha512; used by TestHandshakeServerRSAPSS. testRSA1024Cert = parseTestCert(testRSA1024CertPEM, testRSA1024KeyPEM) + testRSA1024Key = testRSA1024Cert.PrivateKey.(*rsa.PrivateKey) // RSA 512 server leaf, SAN=test.golang.example, issued by Root. // Key is too small for any rsa_pss_rsae_*; used by TestKeyTooSmallForRSAPSS. testRSA512Cert = parseTestCert(testRSA512CertPEM, testRSA512KeyPEM) + testRSA512Key = testRSA512Cert.PrivateKey.(*rsa.PrivateKey) // ECDSA P-256 server leaf, SAN=different.example.com, issued by Root. testSNICert = parseTestCert(testSNICertPEM, testSNIKeyPEM) + testSNIKey = testSNICert.PrivateKey.(*ecdsa.PrivateKey) // RSA 2048 client leaf, SAN=test.golang.example, issued by Client Root. testClientRSA2048Cert = parseTestCert(testClientRSA2048CertPEM, testClientRSA2048KeyPEM) + testClientRSA2048Key = testClientRSA2048Cert.PrivateKey.(*rsa.PrivateKey) // ECDSA P-256 client leaf, SAN=test.golang.example, issued by Client Root. testClientECDSAP256Cert = parseTestCert(testClientECDSAP256CertPEM, testClientECDSAP256KeyPEM) + testClientECDSAP256Key = testClientECDSAP256Cert.PrivateKey.(*ecdsa.PrivateKey) // Ed25519 client leaf, SAN=test.golang.example, issued by Client Root. testClientEd25519Cert = parseTestCert(testClientEd25519CertPEM, testClientEd25519KeyPEM) + testClientEd25519Key = testClientEd25519Cert.PrivateKey.(ed25519.PrivateKey) // RSA 2048 client leaf, SAN=test.golang.example, issued by Client Root. // Signature algorithm is SHA512WithRSAPSS (rsaEncryption SPKI, rsassaPss signature). testClientRSAPSSCert = parseTestCert(testClientRSAPSSCertPEM, testClientRSAPSSKeyPEM) + testClientRSAPSSKey = testClientRSAPSSCert.PrivateKey.(*rsa.PrivateKey) // x509.CertPool containing testRootCert. testRootCertPool = newTestCertPool(testRootCertPEM) diff --git a/src/crypto/tls/cipher_suites.go b/src/crypto/tls/cipher_suites.go index 6ed63ccc2dc1f5..7597aabe780a89 100644 --- a/src/crypto/tls/cipher_suites.go +++ b/src/crypto/tls/cipher_suites.go @@ -16,6 +16,7 @@ import ( "crypto/rc4" "crypto/sha1" "crypto/sha256" + _ "crypto/sha512" // for crypto.SHA384 "fmt" "hash" "internal/cpu" diff --git a/src/crypto/tls/conn_test.go b/src/crypto/tls/conn_test.go index 5fd48d6bd5af66..d272abf3bb601e 100644 --- a/src/crypto/tls/conn_test.go +++ b/src/crypto/tls/conn_test.go @@ -66,13 +66,13 @@ func TestRemovePadding(t *testing.T) { } } -var certExampleCom = `308201713082011ba003020102021005a75ddf21014d5f417083b7a010ba2e300d06092a864886f70d01010b050030123110300e060355040a130741636d6520436f301e170d3136303831373231343135335a170d3137303831373231343135335a30123110300e060355040a130741636d6520436f305c300d06092a864886f70d0101010500034b003048024100b37f0fdd67e715bf532046ac34acbd8fdc4dabe2b598588f3f58b1f12e6219a16cbfe54d2b4b665396013589262360b6721efa27d546854f17cc9aeec6751db10203010001a34d304b300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff0402300030160603551d11040f300d820b6578616d706c652e636f6d300d06092a864886f70d01010b050003410059fc487866d3d855503c8e064ca32aac5e9babcece89ec597f8b2b24c17867f4a5d3b4ece06e795bfc5448ccbd2ffca1b3433171ebf3557a4737b020565350a0` +func TestCertificateSelection(t *testing.T) { + var certExampleCom = `308201713082011ba003020102021005a75ddf21014d5f417083b7a010ba2e300d06092a864886f70d01010b050030123110300e060355040a130741636d6520436f301e170d3136303831373231343135335a170d3137303831373231343135335a30123110300e060355040a130741636d6520436f305c300d06092a864886f70d0101010500034b003048024100b37f0fdd67e715bf532046ac34acbd8fdc4dabe2b598588f3f58b1f12e6219a16cbfe54d2b4b665396013589262360b6721efa27d546854f17cc9aeec6751db10203010001a34d304b300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff0402300030160603551d11040f300d820b6578616d706c652e636f6d300d06092a864886f70d01010b050003410059fc487866d3d855503c8e064ca32aac5e9babcece89ec597f8b2b24c17867f4a5d3b4ece06e795bfc5448ccbd2ffca1b3433171ebf3557a4737b020565350a0` -var certWildcardExampleCom = `308201743082011ea003020102021100a7aa6297c9416a4633af8bec2958c607300d06092a864886f70d01010b050030123110300e060355040a130741636d6520436f301e170d3136303831373231343231395a170d3137303831373231343231395a30123110300e060355040a130741636d6520436f305c300d06092a864886f70d0101010500034b003048024100b105afc859a711ee864114e7d2d46c2dcbe392d3506249f6c2285b0eb342cc4bf2d803677c61c0abde443f084745c1a6d62080e5664ef2cc8f50ad8a0ab8870b0203010001a34f304d300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff0402300030180603551d110411300f820d2a2e6578616d706c652e636f6d300d06092a864886f70d01010b0500034100af26088584d266e3f6566360cf862c7fecc441484b098b107439543144a2b93f20781988281e108c6d7656934e56950e1e5f2bcf38796b814ccb729445856c34` + var certWildcardExampleCom = `308201743082011ea003020102021100a7aa6297c9416a4633af8bec2958c607300d06092a864886f70d01010b050030123110300e060355040a130741636d6520436f301e170d3136303831373231343231395a170d3137303831373231343231395a30123110300e060355040a130741636d6520436f305c300d06092a864886f70d0101010500034b003048024100b105afc859a711ee864114e7d2d46c2dcbe392d3506249f6c2285b0eb342cc4bf2d803677c61c0abde443f084745c1a6d62080e5664ef2cc8f50ad8a0ab8870b0203010001a34f304d300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff0402300030180603551d110411300f820d2a2e6578616d706c652e636f6d300d06092a864886f70d01010b0500034100af26088584d266e3f6566360cf862c7fecc441484b098b107439543144a2b93f20781988281e108c6d7656934e56950e1e5f2bcf38796b814ccb729445856c34` -var certFooExampleCom = `308201753082011fa00302010202101bbdb6070b0aeffc49008cde74deef29300d06092a864886f70d01010b050030123110300e060355040a130741636d6520436f301e170d3136303831373231343234345a170d3137303831373231343234345a30123110300e060355040a130741636d6520436f305c300d06092a864886f70d0101010500034b003048024100f00ac69d8ca2829f26216c7b50f1d4bbabad58d447706476cd89a2f3e1859943748aa42c15eedc93ac7c49e40d3b05ed645cb6b81c4efba60d961f44211a54eb0203010001a351304f300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000301a0603551d1104133011820f666f6f2e6578616d706c652e636f6d300d06092a864886f70d01010b0500034100a0957fca6d1e0f1ef4b247348c7a8ca092c29c9c0ecc1898ea6b8065d23af6d922a410dd2335a0ea15edd1394cef9f62c9e876a21e35250a0b4fe1ddceba0f36` + var certFooExampleCom = `308201753082011fa00302010202101bbdb6070b0aeffc49008cde74deef29300d06092a864886f70d01010b050030123110300e060355040a130741636d6520436f301e170d3136303831373231343234345a170d3137303831373231343234345a30123110300e060355040a130741636d6520436f305c300d06092a864886f70d0101010500034b003048024100f00ac69d8ca2829f26216c7b50f1d4bbabad58d447706476cd89a2f3e1859943748aa42c15eedc93ac7c49e40d3b05ed645cb6b81c4efba60d961f44211a54eb0203010001a351304f300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000301a0603551d1104133011820f666f6f2e6578616d706c652e636f6d300d06092a864886f70d01010b0500034100a0957fca6d1e0f1ef4b247348c7a8ca092c29c9c0ecc1898ea6b8065d23af6d922a410dd2335a0ea15edd1394cef9f62c9e876a21e35250a0b4fe1ddceba0f36` -func TestCertificateSelection(t *testing.T) { config := Config{ Certificates: []Certificate{ { @@ -125,13 +125,18 @@ func TestCertificateSelection(t *testing.T) { } // Run with multiple crypto configs to test the logic for computing TLS record overheads. -func runDynamicRecordSizingTest(t *testing.T, config *Config) { +func runDynamicRecordSizingTest(t *testing.T, serverConfig *Config) { clientConn, serverConn := localPipe(t) - serverConfig := config.Clone() + serverConfig = serverConfig.Clone() serverConfig.DynamicRecordSizingDisabled = false tlsConn := Server(serverConn, serverConfig) + clientConfig := testConfigClient.Clone() + clientConfig.MinVersion = serverConfig.MinVersion + clientConfig.MaxVersion = serverConfig.MaxVersion + clientConfig.CipherSuites = serverConfig.CipherSuites + handshakeDone := make(chan struct{}) recordSizesChan := make(chan []int, 1) defer func() { <-recordSizesChan }() // wait for the goroutine to exit @@ -142,7 +147,7 @@ func runDynamicRecordSizingTest(t *testing.T, config *Config) { defer close(recordSizesChan) defer clientConn.Close() - tlsConn := Client(clientConn, config) + tlsConn := Client(clientConn, clientConfig) if err := tlsConn.Handshake(); err != nil { t.Errorf("Error from client handshake: %v", err) return @@ -232,7 +237,7 @@ func runDynamicRecordSizingTest(t *testing.T, config *Config) { func TestDynamicRecordSizingWithStreamCipher(t *testing.T) { skipFIPS(t) // No RC4 in FIPS mode. - config := testConfig.Clone() + config := testConfigServer.Clone() config.MaxVersion = VersionTLS12 config.CipherSuites = []uint16{TLS_RSA_WITH_RC4_128_SHA} runDynamicRecordSizingTest(t, config) @@ -241,21 +246,21 @@ func TestDynamicRecordSizingWithStreamCipher(t *testing.T) { func TestDynamicRecordSizingWithCBC(t *testing.T) { skipFIPS(t) // No CBC cipher suites in defaultCipherSuitesFIPS. - config := testConfig.Clone() + config := testConfigServer.Clone() config.MaxVersion = VersionTLS12 config.CipherSuites = []uint16{TLS_RSA_WITH_AES_256_CBC_SHA} runDynamicRecordSizingTest(t, config) } func TestDynamicRecordSizingWithAEAD(t *testing.T) { - config := testConfig.Clone() + config := testConfigServer.Clone() config.MaxVersion = VersionTLS12 config.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256} runDynamicRecordSizingTest(t, config) } func TestDynamicRecordSizingWithTLSv13(t *testing.T) { - config := testConfig.Clone() + config := testConfigServer.Clone() runDynamicRecordSizingTest(t, config) } @@ -295,11 +300,13 @@ func TestRecordBadVersionTLS13(t *testing.T) { defer server.Close() defer client.Close() - config := testConfig.Clone() - config.MinVersion, config.MaxVersion = VersionTLS13, VersionTLS13 + clientConfig := testConfigClient.Clone() + clientConfig.MinVersion, clientConfig.MaxVersion = VersionTLS13, VersionTLS13 + serverConfig := testConfigServer.Clone() + serverConfig.MinVersion, serverConfig.MaxVersion = VersionTLS13, VersionTLS13 go func() { - tlsConn := Client(client, config) + tlsConn := Client(client, clientConfig) if err := tlsConn.Handshake(); err != nil { t.Errorf("Error from client handshake: %v", err) return @@ -308,7 +315,7 @@ func TestRecordBadVersionTLS13(t *testing.T) { tlsConn.Write([]byte{1}) }() - tlsConn := Server(server, config) + tlsConn := Server(server, serverConfig) if err := tlsConn.Handshake(); err != nil { t.Errorf("Error from client handshake: %v", err) return diff --git a/src/crypto/tls/fips140_test.go b/src/crypto/tls/fips140_test.go index 5644d235acf1c6..abbd46b6091557 100644 --- a/src/crypto/tls/fips140_test.go +++ b/src/crypto/tls/fips140_test.go @@ -32,7 +32,10 @@ var testConfigFIPS140 = &Config{ } func allCipherSuitesIncludingTLS13() []uint16 { - s := allCipherSuites() + s := make([]uint16, 0, len(cipherSuites)) + for _, suite := range cipherSuites { + s = append(s, suite.id) + } for _, suite := range cipherSuitesTLS13 { s = append(s, suite.id) } @@ -330,7 +333,7 @@ func testFIPSClientHello(t *testing.T) { // All sorts of traps for the client to avoid. clientConfig.MinVersion = VersionSSL30 clientConfig.MaxVersion = VersionTLS13 - clientConfig.CipherSuites = allCipherSuites() + clientConfig.CipherSuites = allCipherSuitesIncludingTLS13() clientConfig.CurvePreferences = defaultCurvePreferences() go Client(c, clientConfig).Handshake() @@ -398,13 +401,15 @@ func TestFIPSCertAlgs(t *testing.T) { // client verifying server cert testServerCert := func(t *testing.T, desc string, pool *x509.CertPool, key any, list [][]byte, ok bool) { - clientConfig := testConfig.Clone() + clientConfig := testConfigFIPS140.Clone() clientConfig.RootCAs = pool clientConfig.InsecureSkipVerify = false clientConfig.ServerName = "example.com" + clientConfig.Time = func() time.Time { return time.Unix(0, 0) } - serverConfig := testConfig.Clone() + serverConfig := testConfigFIPS140.Clone() serverConfig.Certificates = []Certificate{{Certificate: list, PrivateKey: key}} + serverConfig.Time = func() time.Time { return time.Unix(0, 0) } clientErr, _ := fipsHandshake(t, clientConfig, serverConfig) @@ -425,13 +430,15 @@ func TestFIPSCertAlgs(t *testing.T) { // server verifying client cert testClientCert := func(t *testing.T, desc string, pool *x509.CertPool, key any, list [][]byte, ok bool) { - clientConfig := testConfig.Clone() - clientConfig.ServerName = "example.com" + clientConfig := testConfigFIPS140.Clone() + clientConfig.InsecureSkipVerify = true clientConfig.Certificates = []Certificate{{Certificate: list, PrivateKey: key}} + clientConfig.Time = func() time.Time { return time.Unix(0, 0) } - serverConfig := testConfig.Clone() + serverConfig := testConfigFIPS140.Clone() serverConfig.ClientCAs = pool serverConfig.ClientAuth = RequireAndVerifyClientCert + serverConfig.Time = func() time.Time { return time.Unix(0, 0) } _, serverErr := fipsHandshake(t, clientConfig, serverConfig) diff --git a/src/crypto/tls/handshake_client_test.go b/src/crypto/tls/handshake_client_test.go index 22c82251b4b385..7cf40ee5bcdd14 100644 --- a/src/crypto/tls/handshake_client_test.go +++ b/src/crypto/tls/handshake_client_test.go @@ -909,8 +909,7 @@ func testResumption(t *testing.T, version uint16) { t.Skip("skipping in -short mode") } - // Note: using RSA 2048 test certificates because they are compatible with FIPS mode. - testCertificates := []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} + testCertificates := []Certificate{testRSA2048Cert} serverConfig := &Config{ MaxVersion: version, CipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384}, @@ -918,20 +917,12 @@ func testResumption(t *testing.T, version uint16) { Time: testTime, } - issuer, err := x509.ParseCertificate(testRSA2048CertificateIssuer) - if err != nil { - panic(err) - } - - rootCAs := x509.NewCertPool() - rootCAs.AddCert(issuer) - clientConfig := &Config{ MaxVersion: version, CipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, ClientSessionCache: NewLRUClientSessionCache(32), - RootCAs: rootCAs, - ServerName: "example.golang", + RootCAs: testRootCertPool, + ServerName: "test.golang.example", Time: testTime, } @@ -1091,9 +1082,9 @@ func testResumption(t *testing.T, version uint16) { // Session resumption should work when using client certificates deleteTicket() - serverConfig.ClientCAs = rootCAs + serverConfig.ClientCAs = testClientRootCertPool serverConfig.ClientAuth = RequireAndVerifyClientCert - clientConfig.Certificates = serverConfig.Certificates + clientConfig.Certificates = []Certificate{testClientRSA2048Cert} testResumeState("InitialHandshake", false) testResumeState("WithClientCertificates", true) serverConfig.ClientAuth = NoClientCert @@ -1102,7 +1093,7 @@ func testResumption(t *testing.T, version uint16) { // failure, and the client should recover from a corrupted PSK testResumeState("FetchTicketToCorrupt", false) corruptTicket() - _, _, err = testHandshake(t, clientConfig, serverConfig) + _, _, err := testHandshake(t, clientConfig, serverConfig) if err == nil { t.Fatalf("handshake did not fail with a corrupted client secret") } @@ -1217,13 +1208,15 @@ func TestLRUClientSessionCache(t *testing.T) { func TestKeyLogTLS12(t *testing.T) { var serverBuf, clientBuf bytes.Buffer - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.KeyLogWriter = &clientBuf clientConfig.MaxVersion = VersionTLS12 + clientConfig.Rand = zeroSource{} - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.KeyLogWriter = &serverBuf serverConfig.MaxVersion = VersionTLS12 + serverConfig.Rand = zeroSource{} c, s := localPipe(t) done := make(chan bool) @@ -1270,11 +1263,13 @@ func TestKeyLogTLS12(t *testing.T) { func TestKeyLogTLS13(t *testing.T) { var serverBuf, clientBuf bytes.Buffer - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.KeyLogWriter = &clientBuf + clientConfig.Rand = zeroSource{} - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.KeyLogWriter = &serverBuf + serverConfig.Rand = zeroSource{} c, s := localPipe(t) done := make(chan bool) @@ -1620,8 +1615,8 @@ func testVerifyConnection(t *testing.T, version uint16) { if c.HandshakeComplete { return fmt.Errorf("%s: got HandshakeComplete, want false", errorType) } - if c.ServerName != "example.golang" { - return fmt.Errorf("%s: got ServerName %s, want %s", errorType, c.ServerName, "example.golang") + if c.ServerName != "test.golang.example" { + return fmt.Errorf("%s: got ServerName %s, want %s", errorType, c.ServerName, "test.golang.example") } if c.NegotiatedProtocol != "protocol1" { return fmt.Errorf("%s: got NegotiatedProtocol %s, want %s", errorType, c.NegotiatedProtocol, "protocol1") @@ -1776,23 +1771,13 @@ func testVerifyConnection(t *testing.T, version uint16) { }, } for _, test := range tests { - // Note: using RSA 2048 test certificates because they are compatible with FIPS mode. - testCertificates := []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} - - issuer, err := x509.ParseCertificate(testRSA2048CertificateIssuer) - if err != nil { - panic(err) - } - rootCAs := x509.NewCertPool() - rootCAs.AddCert(issuer) - var serverCalled, clientCalled int serverConfig := &Config{ MaxVersion: version, - Certificates: testCertificates, + Certificates: []Certificate{testRSA2048Cert}, Time: testTime, - ClientCAs: rootCAs, + ClientCAs: testClientRootCertPool, NextProtos: []string{"protocol1"}, } serverConfig.Certificates[0].SignedCertificateTimestamps = [][]byte{[]byte("dummy sct 1"), []byte("dummy sct 2")} @@ -1802,9 +1787,9 @@ func testVerifyConnection(t *testing.T, version uint16) { clientConfig := &Config{ MaxVersion: version, ClientSessionCache: NewLRUClientSessionCache(32), - RootCAs: rootCAs, - ServerName: "example.golang", - Certificates: testCertificates, + RootCAs: testRootCertPool, + ServerName: "test.golang.example", + Certificates: []Certificate{testClientRSA2048Cert}, Time: testTime, NextProtos: []string{"protocol1"}, } @@ -1840,15 +1825,6 @@ func TestVerifyPeerCertificate(t *testing.T) { } func testVerifyPeerCertificate(t *testing.T, version uint16) { - // Note: using RSA 2048 test certificates because they are compatible with FIPS mode. - issuer, err := x509.ParseCertificate(testRSA2048CertificateIssuer) - if err != nil { - panic(err) - } - - rootCAs := x509.NewCertPool() - rootCAs.AddCert(issuer) - sentinelErr := errors.New("TestVerifyPeerCertificate") verifyPeerCertificateCallback := func(called *bool, rawCerts [][]byte, validatedChains [][]*x509.Certificate) error { @@ -2090,29 +2066,21 @@ func testVerifyPeerCertificate(t *testing.T, version uint16) { var clientCalled, serverCalled bool go func() { - config := testConfig.Clone() - config.ServerName = "example.golang" + config := testConfigServer.Clone() config.ClientAuth = RequireAndVerifyClientCert - config.ClientCAs = rootCAs - config.Time = testTime config.MaxVersion = version - config.Certificates = make([]Certificate, 1) - config.Certificates[0].Certificate = [][]byte{testRSA2048Certificate} - config.Certificates[0].PrivateKey = testRSA2048PrivateKey + config.Certificates = []Certificate{testRSA2048Cert} config.Certificates[0].SignedCertificateTimestamps = [][]byte{[]byte("dummy sct 1"), []byte("dummy sct 2")} config.Certificates[0].OCSPStaple = []byte("dummy ocsp") test.configureServer(config, &serverCalled) - err = Server(s, config).Handshake() + err := Server(s, config).Handshake() s.Close() done <- err }() - config := testConfig.Clone() - config.Certificates = []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} - config.ServerName = "example.golang" - config.RootCAs = rootCAs - config.Time = testTime + config := testConfigClient.Clone() + config.Certificates = []Certificate{testClientRSA2048Cert} config.MaxVersion = version test.configureClient(config, &clientCalled) clientErr := Client(c, config).Handshake() @@ -2155,13 +2123,13 @@ func TestFailedWrite(t *testing.T) { done := make(chan bool) go func() { - Server(s, testConfig).Handshake() + Server(s, testConfigServer.Clone()).Handshake() s.Close() done <- true }() brokenC := &brokenConn{Conn: c, breakAfter: breakAfter} - err := Client(brokenC, testConfig).Handshake() + err := Client(brokenC, testConfigClient.Clone()).Handshake() if err != brokenConnErr { t.Errorf("#%d: expected error from brokenConn but got %q", breakAfter, err) } @@ -2197,14 +2165,14 @@ func testBuffering(t *testing.T, version uint16) { serverWCC := &writeCountingConn{Conn: s} go func() { - config := testConfig.Clone() + config := testConfigServer.Clone() config.MaxVersion = version Server(serverWCC, config).Handshake() serverWCC.Close() done <- true }() - err := Client(clientWCC, testConfig).Handshake() + err := Client(clientWCC, testConfigClient.Clone()).Handshake() if err != nil { t.Fatal(err) } @@ -2236,13 +2204,13 @@ func TestAlertFlushing(t *testing.T) { clientWCC := &writeCountingConn{Conn: c} serverWCC := &writeCountingConn{Conn: s} - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() // Cause a signature-time error - brokenKey := rsa.PrivateKey{PublicKey: testRSAPrivateKey.PublicKey} + brokenKey := rsa.PrivateKey{PublicKey: testRSA2048Key.PublicKey} brokenKey.D = big.NewInt(42) serverConfig.Certificates = []Certificate{{ - Certificate: [][]byte{testRSACertificate}, + Certificate: testRSA2048Cert.Certificate, PrivateKey: &brokenKey, }} @@ -2252,7 +2220,7 @@ func TestAlertFlushing(t *testing.T) { done <- true }() - err := Client(clientWCC, testConfig).Handshake() + err := Client(clientWCC, testConfigClient.Clone()).Handshake() if err == nil { t.Fatal("client unexpectedly returned no error") } @@ -2281,7 +2249,7 @@ func TestHandshakeRace(t *testing.T) { c, s := localPipe(t) go func() { - server := Server(s, testConfig) + server := Server(s, testConfigServer.Clone()) if err := server.Handshake(); err != nil { panic(err) } @@ -2299,7 +2267,7 @@ func TestHandshakeRace(t *testing.T) { startRead := make(chan struct{}) readDone := make(chan struct{}, 1) - client := Client(c, testConfig) + client := Client(c, testConfigClient.Clone()) go func() { <-startWrite var request [1]byte @@ -2392,10 +2360,7 @@ var getClientCertificateTests = []struct { if len(cri.AcceptableCAs) == 0 { panic("empty AcceptableCAs") } - cert := &Certificate{ - Certificate: [][]byte{testRSA2048Certificate}, - PrivateKey: testRSA2048PrivateKey, - } + cert := &testClientRSA2048Cert return cert, nil } }, @@ -2414,24 +2379,16 @@ func TestGetClientCertificate(t *testing.T) { } func testGetClientCertificate(t *testing.T, version uint16) { - // Note: using RSA 2048 test certificates because they are compatible with FIPS mode. - issuer, err := x509.ParseCertificate(testRSA2048CertificateIssuer) - if err != nil { - panic(err) - } - for i, test := range getClientCertificateTests { - serverConfig := testConfig.Clone() - serverConfig.Certificates = []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} + serverConfig := testConfigServer.Clone() + serverConfig.Certificates = []Certificate{testRSA2048Cert} serverConfig.ClientAuth = VerifyClientCertIfGiven - serverConfig.RootCAs = x509.NewCertPool() - serverConfig.RootCAs.AddCert(issuer) - serverConfig.ClientCAs = serverConfig.RootCAs - serverConfig.Time = testTime + serverConfig.MinVersion = VersionTLS10 serverConfig.MaxVersion = version - clientConfig := testConfig.Clone() - clientConfig.Certificates = []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} + clientConfig := testConfigClient.Clone() + clientConfig.Certificates = []Certificate{testClientRSA2048Cert} + clientConfig.MinVersion = VersionTLS10 clientConfig.MaxVersion = version test.setup(clientConfig, serverConfig) @@ -2526,7 +2483,7 @@ RwBA9Xk1KBNF func TestCloseClientConnectionOnIdleServer(t *testing.T) { clientConn, serverConn := localPipe(t) - client := Client(clientConn, testConfig.Clone()) + client := Client(clientConn, testConfigClient.Clone()) go func() { var b [1]byte serverConn.Read(b[:]) @@ -2547,9 +2504,11 @@ func testDowngradeCanary(t *testing.T, clientVersion, serverVersion uint16) erro defer func() { testingOnlyForceDowngradeCanary = false }() testingOnlyForceDowngradeCanary = true - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() + clientConfig.MinVersion = VersionTLS10 clientConfig.MaxVersion = clientVersion - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() + serverConfig.MinVersion = VersionTLS10 serverConfig.MaxVersion = serverVersion _, _, err := testHandshake(t, clientConfig, serverConfig) return err @@ -2598,22 +2557,15 @@ func TestResumptionKeepsOCSPAndSCT(t *testing.T) { } func testResumptionKeepsOCSPAndSCT(t *testing.T, ver uint16) { - // Note: using RSA 2048 test certificates because they are compatible with FIPS mode. - issuer, err := x509.ParseCertificate(testRSA2048CertificateIssuer) - if err != nil { - t.Fatalf("failed to parse test issuer") - } - roots := x509.NewCertPool() - roots.AddCert(issuer) clientConfig := &Config{ MaxVersion: ver, ClientSessionCache: NewLRUClientSessionCache(32), - ServerName: "example.golang", - RootCAs: roots, + ServerName: "test.golang.example", + RootCAs: testRootCertPool, Time: testTime, } - serverConfig := testConfig.Clone() - serverConfig.Certificates = []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} + serverConfig := testConfigServer.Clone() + serverConfig.Certificates = []Certificate{testRSA2048Cert} serverConfig.MaxVersion = ver serverConfig.Certificates[0].OCSPStaple = []byte{1, 2, 3} serverConfig.Certificates[0].SignedCertificateTimestamps = [][]byte{{4, 5, 6}} @@ -2688,7 +2640,7 @@ func TestClientHandshakeContextCancellation(t *testing.T) { <-unblockServer _ = s.Close() }() - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) // Initiates client side handshake, which will block until the client hello is read // by the server, unless the cancellation works. err := cli.HandshakeContext(ctx) @@ -2745,7 +2697,7 @@ func TestTLS13OnlyClientHelloCipherSuite(t *testing.T) { func testTLS13OnlyClientHelloCipherSuite(t *testing.T, ciphers []uint16) { serverConfig := &Config{ - Certificates: testConfig.Certificates, + Certificates: testConfigServer.Certificates, GetConfigForClient: func(chi *ClientHelloInfo) (*Config, error) { expectedCiphersuites := defaultCipherSuitesTLS13NoAES if fips140tls.Required() { @@ -2782,8 +2734,9 @@ func (dc *discardConn) Write(data []byte) (int, error) { return len(data), nil } -// largeRSAKeyCertPEM contains a 8193 bit RSA key -const largeRSAKeyCertPEM = `-----BEGIN CERTIFICATE----- +func TestHandshakeRSATooBig(t *testing.T) { + // largeRSAKeyCertPEM contains a 8193 bit RSA key + const largeRSAKeyCertPEM = `-----BEGIN CERTIFICATE----- MIIInjCCBIWgAwIBAgIBAjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDEwd0ZXN0 aW5nMB4XDTIzMDYwNzIxMjMzNloXDTIzMDYwNzIzMjMzNlowEjEQMA4GA1UEAxMH dGVzdGluZzCCBCIwDQYJKoZIhvcNAQEBBQADggQPADCCBAoCggQBAWdHsf6Rh2Ca @@ -2833,10 +2786,9 @@ o2SBdbs3Y6MBPBtTu977Z/0RO63J3M5i2tjUiDfrFy7+VRLKr7qQ7JibohyB8QaR u58= -----END CERTIFICATE-----` -func TestHandshakeRSATooBig(t *testing.T) { testCert, _ := pem.Decode([]byte(largeRSAKeyCertPEM)) - c := &Conn{conn: &discardConn{}, config: testConfig.Clone()} + c := &Conn{conn: &discardConn{}, config: testConfigClient.Clone()} expectedErr := "tls: server sent certificate containing RSA key larger than 8192 bits" err := c.verifyServerCertificate([][]byte{testCert.Bytes}) @@ -2860,8 +2812,8 @@ func TestTLS13ECHRejectionCallbacks(t *testing.T) { SerialNumber: big.NewInt(1), Subject: pkix.Name{CommonName: "test"}, DNSNames: []string{"example.golang"}, - NotBefore: testConfig.Time().Add(-time.Hour), - NotAfter: testConfig.Time().Add(time.Hour), + NotBefore: testConfigServer.Time().Add(-time.Hour), + NotAfter: testConfigServer.Time().Add(time.Hour), } certDER, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, k.Public(), k) if err != nil { @@ -2872,7 +2824,7 @@ func TestTLS13ECHRejectionCallbacks(t *testing.T) { t.Fatal(err) } - clientConfig, serverConfig := testConfig.Clone(), testConfig.Clone() + clientConfig, serverConfig := testConfigClient.Clone(), testConfigServer.Clone() serverConfig.Certificates = []Certificate{ { Certificate: [][]byte{certDER}, @@ -2957,7 +2909,7 @@ func TestTLS13ECHRejectionCallbacks(t *testing.T) { } func TestECHTLS12Server(t *testing.T) { - clientConfig, serverConfig := testConfig.Clone(), testConfig.Clone() + clientConfig, serverConfig := testConfigClient.Clone(), testConfigServer.Clone() serverConfig.MaxVersion = VersionTLS12 clientConfig.MinVersion = 0 diff --git a/src/crypto/tls/handshake_messages_test.go b/src/crypto/tls/handshake_messages_test.go index fa81a72b0de018..c06c6c93f1b9b3 100644 --- a/src/crypto/tls/handshake_messages_test.go +++ b/src/crypto/tls/handshake_messages_test.go @@ -360,16 +360,8 @@ func (*newSessionTicketMsg) Generate(rand *rand.Rand, size int) reflect.Value { var sessionTestCerts []*x509.Certificate func init() { - cert, err := x509.ParseCertificate(testRSACertificate) - if err != nil { - panic(err) - } - sessionTestCerts = append(sessionTestCerts, cert) - cert, err = x509.ParseCertificate(testRSACertificateIssuer) - if err != nil { - panic(err) - } - sessionTestCerts = append(sessionTestCerts, cert) + sessionTestCerts = append(sessionTestCerts, testRSA2048Cert.Leaf) + sessionTestCerts = append(sessionTestCerts, testRootCert.Leaf) } func (*SessionState) Generate(rand *rand.Rand, size int) reflect.Value { diff --git a/src/crypto/tls/handshake_server_test.go b/src/crypto/tls/handshake_server_test.go index dfabff1541305d..b1d2718245fb42 100644 --- a/src/crypto/tls/handshake_server_test.go +++ b/src/crypto/tls/handshake_server_test.go @@ -17,6 +17,7 @@ import ( "encoding/pem" "errors" "fmt" + "internal/testenv" "io" "net" "os" @@ -45,7 +46,7 @@ func testFatal(t *testing.T, err error) { func testClientHelloFailure(t *testing.T, serverConfig *Config, m handshakeMessage, expectedSubStr string) { c, s := localPipe(t) go func() { - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) if ch, ok := m.(*clientHelloMsg); ok { cli.vers = ch.vers } @@ -98,13 +99,13 @@ func testClientHelloFailure(t *testing.T, serverConfig *Config, m handshakeMessa } func TestSimpleError(t *testing.T) { - testClientHelloFailure(t, testConfig, &serverHelloDoneMsg{}, "unexpected handshake message") + testClientHelloFailure(t, testConfigServer.Clone(), &serverHelloDoneMsg{}, "unexpected handshake message") } var badProtocolVersions = []uint16{0x0000, 0x0005, 0x0100, 0x0105, 0x0200, 0x0205, VersionSSL30} func TestRejectBadProtocolVersion(t *testing.T) { - config := testConfig.Clone() + config := testConfigServer.Clone() config.MinVersion = VersionSSL30 for _, v := range badProtocolVersions { testClientHelloFailure(t, config, &clientHelloMsg{ @@ -126,7 +127,7 @@ func TestNoSuiteOverlap(t *testing.T) { cipherSuites: []uint16{0xff00}, compressionMethods: []uint8{compressionNone}, } - testClientHelloFailure(t, testConfig, clientHello, "no cipher suite supported by both client and server") + testClientHelloFailure(t, testConfigServer.Clone(), clientHello, "no cipher suite supported by both client and server") } func TestNoCompressionOverlap(t *testing.T) { @@ -136,7 +137,7 @@ func TestNoCompressionOverlap(t *testing.T) { cipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, compressionMethods: []uint8{0xff}, } - testClientHelloFailure(t, testConfig, clientHello, "client does not support uncompressed connections") + testClientHelloFailure(t, testConfigServer.Clone(), clientHello, "client does not support uncompressed connections") } func TestNoRC4ByDefault(t *testing.T) { @@ -146,7 +147,7 @@ func TestNoRC4ByDefault(t *testing.T) { cipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA}, compressionMethods: []uint8{compressionNone}, } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() // Reset the enabled cipher suites to nil in order to test the // defaults. serverConfig.CipherSuites = nil @@ -154,7 +155,7 @@ func TestNoRC4ByDefault(t *testing.T) { } func TestRejectSNIWithTrailingDot(t *testing.T) { - testClientHelloFailure(t, testConfig, &clientHelloMsg{ + testClientHelloFailure(t, testConfigServer.Clone(), &clientHelloMsg{ vers: VersionTLS12, random: make([]byte, 32), serverName: "foo.com.", @@ -172,18 +173,17 @@ func TestDontSelectECDSAWithRSAKey(t *testing.T) { supportedCurves: []CurveID{CurveP256}, supportedPoints: []uint8{pointFormatUncompressed}, } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.CipherSuites = clientHello.cipherSuites serverConfig.Certificates = make([]Certificate, 1) - serverConfig.Certificates[0].Certificate = [][]byte{testECDSACertificate} - serverConfig.Certificates[0].PrivateKey = testECDSAPrivateKey + serverConfig.Certificates[0] = testECDSAP256Cert serverConfig.BuildNameToCertificate() // First test that it *does* work when the server's key is ECDSA. testClientHello(t, serverConfig, clientHello) // Now test that switching to an RSA key causes the expected error (and // not an internal error about a signing failure). - serverConfig.Certificates = testConfig.Certificates + serverConfig.Certificates = []Certificate{testRSA2048Cert} testClientHelloFailure(t, serverConfig, clientHello, "no cipher suite supported by both client and server") } @@ -198,7 +198,7 @@ func TestDontSelectRSAWithECDSAKey(t *testing.T) { supportedCurves: []CurveID{CurveP256}, supportedPoints: []uint8{pointFormatUncompressed}, } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.CipherSuites = clientHello.cipherSuites // First test that it *does* work when the server's key is RSA. testClientHello(t, serverConfig, clientHello) @@ -206,28 +206,27 @@ func TestDontSelectRSAWithECDSAKey(t *testing.T) { // Now test that switching to an ECDSA key causes the expected error // (and not an internal error about a signing failure). serverConfig.Certificates = make([]Certificate, 1) - serverConfig.Certificates[0].Certificate = [][]byte{testECDSACertificate} - serverConfig.Certificates[0].PrivateKey = testECDSAPrivateKey + serverConfig.Certificates[0] = testECDSAP256Cert serverConfig.BuildNameToCertificate() testClientHelloFailure(t, serverConfig, clientHello, "no cipher suite supported by both client and server") } func TestRenegotiationExtension(t *testing.T) { - skipFIPS(t) // #70505 - clientHello := &clientHelloMsg{ vers: VersionTLS12, compressionMethods: []uint8{compressionNone}, random: make([]byte, 32), secureRenegotiationSupported: true, - cipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA}, + cipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, + supportedCurves: []CurveID{CurveP256}, + supportedPoints: []uint8{pointFormatUncompressed}, } bufChan := make(chan []byte, 1) c, s := localPipe(t) go func() { - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) cli.vers = clientHello.vers if _, err := cli.writeHandshakeRecord(clientHello, nil); err != nil { testFatal(t, err) @@ -242,7 +241,7 @@ func TestRenegotiationExtension(t *testing.T) { bufChan <- buf[:n] }() - Server(s, testConfig).Handshake() + Server(s, testConfigServer.Clone()).Handshake() buf := <-bufChan if len(buf) < 5+4 { @@ -289,7 +288,7 @@ func TestTLS12OnlyCipherSuites(t *testing.T) { c, s := localPipe(t) replyChan := make(chan any) go func() { - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) cli.vers = clientHello.vers if _, err := cli.writeHandshakeRecord(clientHello, nil); err != nil { testFatal(t, err) @@ -302,8 +301,9 @@ func TestTLS12OnlyCipherSuites(t *testing.T) { replyChan <- reply } }() - config := testConfig.Clone() + config := testConfigServer.Clone() config.CipherSuites = clientHello.cipherSuites + config.MinVersion = VersionTLS10 Server(s, config).Handshake() s.Close() reply := <-replyChan @@ -354,8 +354,8 @@ func TestTLSPointFormats(t *testing.T) { c, s := localPipe(t) replyChan := make(chan any) go func() { - clientConfig := testConfig.Clone() - clientConfig.Certificates = []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} + clientConfig := testConfigClient.Clone() + clientConfig.Certificates = []Certificate{testRSA2048Cert} cli := Client(c, clientConfig) cli.vers = clientHello.vers if _, err := cli.writeHandshakeRecord(clientHello, nil); err != nil { @@ -369,8 +369,8 @@ func TestTLSPointFormats(t *testing.T) { replyChan <- reply } }() - serverConfig := testConfig.Clone() - serverConfig.Certificates = []Certificate{{Certificate: [][]byte{testRSA2048Certificate}, PrivateKey: testRSA2048PrivateKey}} + serverConfig := testConfigServer.Clone() + serverConfig.Certificates = []Certificate{testRSA2048Cert} serverConfig.CipherSuites = clientHello.cipherSuites Server(s, serverConfig).Handshake() s.Close() @@ -398,11 +398,11 @@ func TestTLSPointFormats(t *testing.T) { func TestAlertForwarding(t *testing.T) { c, s := localPipe(t) go func() { - Client(c, testConfig).sendAlert(alertUnknownCA) + Client(c, testConfigClient.Clone()).sendAlert(alertUnknownCA) c.Close() }() - err := Server(s, testConfig).Handshake() + err := Server(s, testConfigServer.Clone()).Handshake() s.Close() if opErr, ok := errors.AsType[*net.OpError](err); !ok || opErr.Err != error(alertUnknownCA) { t.Errorf("Got error: %s; expected: %s", err, error(alertUnknownCA)) @@ -413,7 +413,7 @@ func TestClose(t *testing.T) { c, s := localPipe(t) go c.Close() - err := Server(s, testConfig).Handshake() + err := Server(s, testConfigServer.Clone()).Handshake() s.Close() if err != io.EOF { t.Errorf("Got error: %s; expected: %s", err, io.EOF) @@ -422,7 +422,7 @@ func TestClose(t *testing.T) { func TestVersion(t *testing.T) { serverConfig := &Config{ - Certificates: testConfig.Certificates, + Certificates: testConfigServer.Certificates, MaxVersion: VersionTLS13, } clientConfig := &Config{ @@ -451,7 +451,7 @@ func TestCipherSuitePreference(t *testing.T) { serverConfig := &Config{ CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256}, - Certificates: testConfig.Certificates, + Certificates: testConfigServer.Certificates, MaxVersion: VersionTLS12, GetConfigForClient: func(chi *ClientHelloInfo) (*Config, error) { if chi.CipherSuites[0] != TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 { @@ -483,13 +483,11 @@ func TestSCTHandshake(t *testing.T) { func testSCTHandshake(t *testing.T, version uint16) { expected := [][]byte{[]byte("certificate"), []byte("transparency")} + cert := testRSA2048Cert + cert.SignedCertificateTimestamps = expected serverConfig := &Config{ - Certificates: []Certificate{{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - SignedCertificateTimestamps: expected, - }}, - MaxVersion: version, + Certificates: []Certificate{cert}, + MaxVersion: version, } clientConfig := &Config{ InsecureSkipVerify: true, @@ -517,7 +515,7 @@ func TestCrossVersionResume(t *testing.T) { func testCrossVersionResume(t *testing.T, version uint16) { serverConfig := &Config{ CipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, - Certificates: testConfig.Certificates, + Certificates: []Certificate{testRSA2048Cert}, Time: testTime, } clientConfig := &Config{ @@ -1185,7 +1183,7 @@ func TestHandshakeServerGetCertificateExtensions(t *testing.T) { // Go's TLS client presents extensions in the ClientHello sorted by extension ID slices.Sort(expectedExtensions) - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.GetCertificate = func(clientHello *ClientHelloInfo) (*Certificate, error) { if !slices.Equal(expectedExtensions, clientHello.Extensions) { t.Errorf("expected extensions on ClientHelloInfo (%v) to match clientHelloMsg (%v)", expectedExtensions, clientHello.Extensions) @@ -1208,7 +1206,7 @@ func TestHandshakeServerGetCertificateExtensions(t *testing.T) { func TestHandshakeServerSNIGetCertificateError(t *testing.T) { const errMsg = "TestHandshakeServerSNIGetCertificateError error" - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.GetCertificate = func(clientHello *ClientHelloInfo) (*Certificate, error) { return nil, errors.New(errMsg) } @@ -1228,7 +1226,7 @@ func TestHandshakeServerSNIGetCertificateError(t *testing.T) { func TestHandshakeServerEmptyCertificates(t *testing.T) { const errMsg = "TestHandshakeServerEmptyCertificates error" - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.GetCertificate = func(clientHello *ClientHelloInfo) (*Certificate, error) { return nil, errors.New(errMsg) } @@ -1407,7 +1405,7 @@ func TestHandshakeServerEd25519(t *testing.T) { } func benchmarkHandshakeServer(b *testing.B, version uint16, cipherSuite uint16, curve CurveID, cert []byte, key crypto.PrivateKey) { - config := testConfig.Clone() + config := testConfigServer.Clone() config.CipherSuites = []uint16{cipherSuite} config.CurvePreferences = []CurveID{curve} config.Certificates = make([]Certificate, 1) @@ -1418,7 +1416,7 @@ func benchmarkHandshakeServer(b *testing.B, version uint16, cipherSuite uint16, clientConn, serverConn := localPipe(b) serverConn = &recordingConn{Conn: serverConn} go func() { - config := testConfig.Clone() + config := testConfigClient.Clone() config.MaxVersion = version config.CurvePreferences = []CurveID{curve} client := Client(clientConn, config) @@ -1444,49 +1442,49 @@ func benchmarkHandshakeServer(b *testing.B, version uint16, cipherSuite uint16, func BenchmarkHandshakeServer(b *testing.B) { b.Run("RSA", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS12, TLS_RSA_WITH_AES_128_GCM_SHA256, - 0, testRSACertificate, testRSAPrivateKey) + 0, testRSA2048Cert.Certificate[0], testRSA2048Key) }) b.Run("ECDHE-P256-RSA", func(b *testing.B) { b.Run("TLSv13", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS13, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - CurveP256, testRSACertificate, testRSAPrivateKey) + CurveP256, testRSA2048Cert.Certificate[0], testRSA2048Key) }) b.Run("TLSv12", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS12, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, - CurveP256, testRSACertificate, testRSAPrivateKey) + CurveP256, testRSA2048Cert.Certificate[0], testRSA2048Key) }) }) b.Run("ECDHE-P256-ECDSA-P256", func(b *testing.B) { b.Run("TLSv13", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS13, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - CurveP256, testP256Certificate, testP256PrivateKey) + CurveP256, testECDSAP256Cert.Certificate[0], testECDSAP256Key) }) b.Run("TLSv12", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS12, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - CurveP256, testP256Certificate, testP256PrivateKey) + CurveP256, testECDSAP256Cert.Certificate[0], testECDSAP256Key) }) }) b.Run("ECDHE-X25519-ECDSA-P256", func(b *testing.B) { b.Run("TLSv13", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS13, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - X25519, testP256Certificate, testP256PrivateKey) + X25519, testECDSAP256Cert.Certificate[0], testECDSAP256Key) }) b.Run("TLSv12", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS12, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - X25519, testP256Certificate, testP256PrivateKey) + X25519, testECDSAP256Cert.Certificate[0], testECDSAP256Key) }) }) b.Run("ECDHE-P521-ECDSA-P521", func(b *testing.B) { - if testECDSAPrivateKey.PublicKey.Curve != elliptic.P521() { + if testECDSAP521Key.PublicKey.Curve != elliptic.P521() { b.Fatal("test ECDSA key doesn't use curve P-521") } b.Run("TLSv13", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS13, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - CurveP521, testECDSACertificate, testECDSAPrivateKey) + CurveP521, testECDSAP521Cert.Certificate[0], testECDSAP521Key) }) b.Run("TLSv12", func(b *testing.B) { benchmarkHandshakeServer(b, VersionTLS12, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, - CurveP521, testECDSACertificate, testECDSAPrivateKey) + CurveP521, testECDSAP521Cert.Certificate[0], testECDSAP521Key) }) }) } @@ -1495,17 +1493,17 @@ func TestClientAuth(t *testing.T) { var certPath, keyPath, ecdsaCertPath, ecdsaKeyPath, ed25519CertPath, ed25519KeyPath string if *update { - certPath = tempFile(clientCertificatePEM) + certPath = tempFile(testClientRSA2048CertPEM) defer os.Remove(certPath) - keyPath = tempFile(clientKeyPEM) + keyPath = tempFile(testingKey(testClientRSA2048KeyPEM)) defer os.Remove(keyPath) - ecdsaCertPath = tempFile(clientECDSACertificatePEM) + ecdsaCertPath = tempFile(testClientECDSAP256CertPEM) defer os.Remove(ecdsaCertPath) - ecdsaKeyPath = tempFile(clientECDSAKeyPEM) + ecdsaKeyPath = tempFile(testingKey(testClientECDSAP256KeyPEM)) defer os.Remove(ecdsaKeyPath) - ed25519CertPath = tempFile(clientEd25519CertificatePEM) + ed25519CertPath = tempFile(testClientEd25519CertPEM) defer os.Remove(ed25519CertPath) - ed25519KeyPath = tempFile(clientEd25519KeyPEM) + ed25519KeyPath = tempFile(testingKey(testClientEd25519KeyPEM)) defer os.Remove(ed25519KeyPath) } @@ -1523,7 +1521,7 @@ func TestClientAuth(t *testing.T) { name: "ClientAuthRequestedAndGiven", command: append(defaultClientCommand, "-cert", certPath, "-key", keyPath, "-client_sigalgs", "rsa_pss_rsae_sha256"), config: config, - expectedPeerCerts: []string{clientCertificatePEM}, + expectedPeerCerts: []string{testClientRSA2048CertPEM}, } runServerTestTLS12(t, test) runServerTestTLS13(t, test) @@ -1532,7 +1530,7 @@ func TestClientAuth(t *testing.T) { name: "ClientAuthRequestedAndECDSAGiven", command: append(defaultClientCommand, "-cert", ecdsaCertPath, "-key", ecdsaKeyPath), config: config, - expectedPeerCerts: []string{clientECDSACertificatePEM}, + expectedPeerCerts: []string{testClientECDSAP256CertPEM}, } runServerTestTLS12(t, test) runServerTestTLS13(t, test) @@ -1541,7 +1539,7 @@ func TestClientAuth(t *testing.T) { name: "ClientAuthRequestedAndEd25519Given", command: append(defaultClientCommand, "-cert", ed25519CertPath, "-key", ed25519KeyPath), config: config, - expectedPeerCerts: []string{clientEd25519CertificatePEM}, + expectedPeerCerts: []string{testClientEd25519CertPEM}, } runServerTestTLS12(t, test) runServerTestTLS13(t, test) @@ -1550,7 +1548,7 @@ func TestClientAuth(t *testing.T) { name: "ClientAuthRequestedAndPKCS1v15Given", command: append(defaultClientCommand, "-cert", certPath, "-key", keyPath, "-client_sigalgs", "rsa_pkcs1_sha256"), config: config, - expectedPeerCerts: []string{clientCertificatePEM}, + expectedPeerCerts: []string{testClientRSA2048CertPEM}, } runServerTestTLS12(t, test) } @@ -1566,13 +1564,13 @@ func TestSNIGivenOnFailure(t *testing.T) { serverName: expectedServerName, } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() // Erase the server's cipher suites to ensure the handshake fails. serverConfig.CipherSuites = nil c, s := localPipe(t) go func() { - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) cli.vers = clientHello.vers if _, err := cli.writeHandshakeRecord(clientHello, nil); err != nil { testFatal(t, err) @@ -1634,7 +1632,7 @@ var getConfigForClientTests = []struct { { nil, func(clientHello *ClientHelloInfo) (*Config, error) { - config := testConfig.Clone() + config := testConfigServer.Clone() // Setting a maximum version of TLS 1.1 should cause // the handshake to fail, as the client MinVersion is TLS 1.2. config.MaxVersion = VersionTLS11 @@ -1651,7 +1649,7 @@ var getConfigForClientTests = []struct { config.sessionTicketKeys = nil }, func(clientHello *ClientHelloInfo) (*Config, error) { - config := testConfig.Clone() + config := testConfigServer.Clone() clear(config.SessionTicketKey[:]) config.sessionTicketKeys = nil return config, nil @@ -1674,7 +1672,7 @@ var getConfigForClientTests = []struct { config.SetSessionTicketKeys([][32]byte{dummyKey}) }, func(clientHello *ClientHelloInfo) (*Config, error) { - config := testConfig.Clone() + config := testConfigServer.Clone() config.sessionTicketKeys = nil return config, nil }, @@ -1689,8 +1687,8 @@ var getConfigForClientTests = []struct { } func TestGetConfigForClient(t *testing.T) { - serverConfig := testConfig.Clone() - clientConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() + clientConfig := testConfigClient.Clone() clientConfig.MinVersion = VersionTLS12 for i, test := range getConfigForClientTests { @@ -1738,7 +1736,7 @@ func TestGetConfigForClient(t *testing.T) { func TestCloseServerConnectionOnIdleClient(t *testing.T) { clientConn, serverConn := localPipe(t) - server := Server(serverConn, testConfig.Clone()) + server := Server(serverConn, testConfigServer.Clone()) go func() { clientConn.Write([]byte{'0'}) server.Close() @@ -1774,9 +1772,9 @@ func expectError(t *testing.T, err error, sub string) { } func TestKeyTooSmallForRSAPSS(t *testing.T) { - t.Setenv("GODEBUG", os.Getenv("GODEBUG")+",rsa1024min=0") + testenv.SetGODEBUG(t, "rsa1024min=0") clientConn, serverConn := localPipe(t) - client := Client(clientConn, testConfigClient) + client := Client(clientConn, testConfigClient.Clone()) done := make(chan struct{}) go func() { config := testConfigServer.Clone() @@ -1793,18 +1791,12 @@ func TestKeyTooSmallForRSAPSS(t *testing.T) { } func TestMultipleCertificates(t *testing.T) { - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256} clientConfig.MaxVersion = VersionTLS12 - serverConfig := testConfig.Clone() - serverConfig.Certificates = []Certificate{{ - Certificate: [][]byte{testECDSACertificate}, - PrivateKey: testECDSAPrivateKey, - }, { - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - }} + serverConfig := testConfigServer.Clone() + serverConfig.Certificates = []Certificate{testECDSAP256Cert, testRSA2048Cert} _, clientState, err := testHandshake(t, clientConfig, serverConfig) if err != nil { @@ -2073,7 +2065,7 @@ func TestServerHandshakeContextCancellation(t *testing.T) { <-unblockClient _ = c.Close() }() - conn := Server(s, testConfig) + conn := Server(s, testConfigServer.Clone()) // Initiates server side handshake, which will block until a client hello is read // unless the cancellation works. err := conn.HandshakeContext(ctx) @@ -2100,8 +2092,8 @@ func TestServerHandshakeContextCancellation(t *testing.T) { func TestHandshakeContextHierarchy(t *testing.T) { c, s := localPipe(t) clientErr := make(chan error, 1) - clientConfig := testConfig.Clone() - serverConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() + serverConfig := testConfigServer.Clone() ctx, cancel := context.WithCancel(context.Background()) defer cancel() key := struct{}{} @@ -2116,10 +2108,7 @@ func TestHandshakeContextHierarchy(t *testing.T) { t.Errorf("GetClientCertificate context was not child of HandshakeContext") } innerCtx = certificateRequest.Context() - return &Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - }, nil + return &testRSA2048Cert, nil } cli := Client(c, clientConfig) err := cli.HandshakeContext(ctx) @@ -2141,10 +2130,7 @@ func TestHandshakeContextHierarchy(t *testing.T) { t.Errorf("GetClientCertificate context was not child of HandshakeContext") } innerCtx = clientHello.Context() - return &Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - }, nil + return &testRSA2048Cert, nil } conn := Server(s, serverConfig) err := conn.HandshakeContext(ctx) @@ -2181,7 +2167,7 @@ func testHandshakeChainExpiryResumption(t *testing.T, version uint16) { IsCA: true, BasicConstraintsValid: true, } - rootDER, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testECDSAPrivateKey.PublicKey, testECDSAPrivateKey) + rootDER, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testECDSAP521Key.PublicKey, testECDSAP521Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } @@ -2197,12 +2183,12 @@ func testHandshakeChainExpiryResumption(t *testing.T, version uint16) { NotAfter: leafNotAfter, KeyUsage: x509.KeyUsageDigitalSignature, } - leafCertDER, err := x509.CreateCertificate(rand.Reader, tmpl, root, &testECDSAPrivateKey.PublicKey, testECDSAPrivateKey) + leafCertDER, err := x509.CreateCertificate(rand.Reader, tmpl, root, &testECDSAP256Key.PublicKey, testECDSAP521Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } tmpl.NotBefore, tmpl.NotAfter = leafNotAfter.Add(-time.Hour*24*365), leafNotAfter.Add(-time.Hour*24*364) - expiredLeafDERCertDER, err := x509.CreateCertificate(rand.Reader, tmpl, root, &testECDSAPrivateKey.PublicKey, testECDSAPrivateKey) + expiredLeafDERCertDER, err := x509.CreateCertificate(rand.Reader, tmpl, root, &testECDSAP256Key.PublicKey, testECDSAP521Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } @@ -2213,11 +2199,11 @@ func testHandshakeChainExpiryResumption(t *testing.T, version uint16) { t.Run(name, func(t *testing.T) { initialLeafDER, expiredLeafDER, initialRoot := createChain(leafNotAfter, rootNotAfter) - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.MaxVersion = version serverConfig.Certificates = []Certificate{{ Certificate: [][]byte{initialLeafDER, expiredLeafDER}, - PrivateKey: testECDSAPrivateKey, + PrivateKey: testECDSAP256Key, }} serverConfig.ClientCAs = x509.NewCertPool() serverConfig.ClientCAs.AddCert(initialRoot) @@ -2228,11 +2214,11 @@ func testHandshakeChainExpiryResumption(t *testing.T, version uint16) { serverConfig.InsecureSkipVerify = false serverConfig.ServerName = "expired-resume.example.com" - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.MaxVersion = version clientConfig.Certificates = []Certificate{{ Certificate: [][]byte{initialLeafDER, expiredLeafDER}, - PrivateKey: testECDSAPrivateKey, + PrivateKey: testECDSAP256Key, }} clientConfig.RootCAs = x509.NewCertPool() clientConfig.RootCAs.AddCert(initialRoot) @@ -2266,7 +2252,7 @@ func testHandshakeChainExpiryResumption(t *testing.T, version uint16) { freshLeafDER, expiredLeafDER, freshRoot := createChain(expiredNow.Add(time.Hour), expiredNow.Add(time.Hour)) clientConfig.Certificates = []Certificate{{ Certificate: [][]byte{freshLeafDER, expiredLeafDER}, - PrivateKey: testECDSAPrivateKey, + PrivateKey: testECDSAP256Key, }} serverConfig.Time = func() time.Time { return expiredNow @@ -2300,7 +2286,7 @@ func testHandshakeGetConfigForClientDifferentClientCAs(t *testing.T, version uin IsCA: true, BasicConstraintsValid: true, } - rootDER, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testECDSAPrivateKey.PublicKey, testECDSAPrivateKey) + rootDER, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testECDSAP521Key.PublicKey, testECDSAP521Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } @@ -2308,7 +2294,7 @@ func testHandshakeGetConfigForClientDifferentClientCAs(t *testing.T, version uin if err != nil { t.Fatalf("ParseCertificate: %v", err) } - rootDER, err = x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testRSA2048PrivateKey.PublicKey, testRSA2048PrivateKey) + rootDER, err = x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testRSA2048Key.PublicKey, testRSA2048Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } @@ -2324,20 +2310,20 @@ func testHandshakeGetConfigForClientDifferentClientCAs(t *testing.T, version uin NotAfter: now.Add(time.Hour * 24), KeyUsage: x509.KeyUsageDigitalSignature, } - certA, err := x509.CreateCertificate(rand.Reader, tmpl, rootA, &testECDSAPrivateKey.PublicKey, testECDSAPrivateKey) + certA, err := x509.CreateCertificate(rand.Reader, tmpl, rootA, &testECDSAP256Key.PublicKey, testECDSAP521Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } - certB, err := x509.CreateCertificate(rand.Reader, tmpl, rootB, &testECDSAPrivateKey.PublicKey, testRSA2048PrivateKey) + certB, err := x509.CreateCertificate(rand.Reader, tmpl, rootB, &testECDSAP256Key.PublicKey, testRSA2048Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.MaxVersion = version serverConfig.Certificates = []Certificate{{ Certificate: [][]byte{certA}, - PrivateKey: testECDSAPrivateKey, + PrivateKey: testECDSAP256Key, }} serverConfig.Time = func() time.Time { return now @@ -2358,11 +2344,11 @@ func testHandshakeGetConfigForClientDifferentClientCAs(t *testing.T, version uin serverConfig.InsecureSkipVerify = false serverConfig.ServerName = "example.com" - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.MaxVersion = version clientConfig.Certificates = []Certificate{{ Certificate: [][]byte{certA}, - PrivateKey: testECDSAPrivateKey, + PrivateKey: testECDSAP256Key, }} clientConfig.ClientSessionCache = NewLRUClientSessionCache(32) clientConfig.RootCAs = x509.NewCertPool() @@ -2418,7 +2404,7 @@ func testHandshakeChangeRootCAsResumption(t *testing.T, version uint16) { IsCA: true, BasicConstraintsValid: true, } - rootDER, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testECDSAPrivateKey.PublicKey, testECDSAPrivateKey) + rootDER, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testECDSAP521Key.PublicKey, testECDSAP521Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } @@ -2426,7 +2412,7 @@ func testHandshakeChangeRootCAsResumption(t *testing.T, version uint16) { if err != nil { t.Fatalf("ParseCertificate: %v", err) } - rootDER, err = x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testRSA2048PrivateKey.PublicKey, testRSA2048PrivateKey) + rootDER, err = x509.CreateCertificate(rand.Reader, tmpl, tmpl, &testRSA2048Key.PublicKey, testRSA2048Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } @@ -2442,20 +2428,20 @@ func testHandshakeChangeRootCAsResumption(t *testing.T, version uint16) { NotAfter: now.Add(time.Hour * 24), KeyUsage: x509.KeyUsageDigitalSignature, } - certA, err := x509.CreateCertificate(rand.Reader, tmpl, rootA, &testECDSAPrivateKey.PublicKey, testECDSAPrivateKey) + certA, err := x509.CreateCertificate(rand.Reader, tmpl, rootA, &testECDSAP256Key.PublicKey, testECDSAP521Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } - certB, err := x509.CreateCertificate(rand.Reader, tmpl, rootB, &testECDSAPrivateKey.PublicKey, testRSA2048PrivateKey) + certB, err := x509.CreateCertificate(rand.Reader, tmpl, rootB, &testECDSAP256Key.PublicKey, testRSA2048Key) if err != nil { t.Fatalf("CreateCertificate: %v", err) } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.MaxVersion = version serverConfig.Certificates = []Certificate{{ Certificate: [][]byte{certA}, - PrivateKey: testECDSAPrivateKey, + PrivateKey: testECDSAP256Key, }} serverConfig.Time = func() time.Time { return now @@ -2466,11 +2452,11 @@ func testHandshakeChangeRootCAsResumption(t *testing.T, version uint16) { serverConfig.InsecureSkipVerify = false serverConfig.ServerName = "example.com" - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.MaxVersion = version clientConfig.Certificates = []Certificate{{ Certificate: [][]byte{certA}, - PrivateKey: testECDSAPrivateKey, + PrivateKey: testECDSAP256Key, }} clientConfig.ClientSessionCache = NewLRUClientSessionCache(32) clientConfig.RootCAs = x509.NewCertPool() diff --git a/src/crypto/tls/handshake_test.go b/src/crypto/tls/handshake_test.go index 0446e21f8b98e6..0f4ddad87ead59 100644 --- a/src/crypto/tls/handshake_test.go +++ b/src/crypto/tls/handshake_test.go @@ -8,12 +8,12 @@ import ( "bufio" "bytes" "context" - "crypto/ed25519" - "crypto/x509" + "crypto/internal/boring" "encoding/hex" "errors" "flag" "fmt" + "internal/testenv" "io" "net" "os" @@ -53,22 +53,16 @@ var ( bogoReport = flag.String("bogo-html-report", "", "File path to render an HTML report with BoGo results") ) -var testConfigServer = &Config{ - Time: testTime, - Certificates: []Certificate{testECDSAP256Cert, testRSA2048Cert, testEd25519Cert, testSNICert}, - ClientCAs: testClientRootCertPool, -} - -var testConfigClient = &Config{ - Time: testTime, - Certificates: []Certificate{testClientECDSAP256Cert, testClientRSA2048Cert, testClientEd25519Cert}, - RootCAs: testRootCertPool, - ServerName: "test.golang.example", -} - func runTestAndUpdateIfNeeded(t *testing.T, name string, run func(t *testing.T, update bool)) { - // FIPS mode is non-deterministic and so isn't suited for testing against static test transcripts. - skipFIPS(t) + skipFIPS(t) // FIPS 140-3 mode changes the advertised parameters. + + // Go+BoringCrypto's boring.RandReader ignores the testing override set by + // cryptotest.SetGlobalRandom, so e.g. ECDH key generation would be + // non-deterministic. Setting cryptocustomrand=1 makes rand.CustomReader + // pass the caller's reader (the testing source) through instead. + if boring.Enabled { + testenv.SetGODEBUG(t, "cryptocustomrand=1") + } success := t.Run(name, func(t *testing.T) { cryptotest.SetGlobalRandom(t, 0) @@ -408,17 +402,6 @@ func (zeroSource) Read(b []byte) (n int, err error) { return len(b), nil } -func allCipherSuites() []uint16 { - ids := make([]uint16, len(cipherSuites)) - for i, suite := range cipherSuites { - ids[i] = suite.id - } - - return ids -} - -var testConfig *Config - func TestMain(m *testing.M) { flag.Usage = func() { fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", os.Args) @@ -474,31 +457,14 @@ func runMain(m *testing.M) int { "-naccept", "1", "-verify_return_error", "-verifyCAfile", clientRootCAPath, "-attime", fmt.Sprint(testTime().Unix())} - // TODO(filippo): deprecate Config.Rand, and regenerate handshake recordings - // to use cryptotest.SetGlobalRandom instead. - os.Setenv("GODEBUG", "cryptocustomrand=1,"+os.Getenv("GODEBUG")) - - testConfig = &Config{ - Time: func() time.Time { return time.Unix(0, 0) }, - Rand: zeroSource{}, - Certificates: make([]Certificate, 2), - InsecureSkipVerify: true, - CipherSuites: allCipherSuites(), - CurvePreferences: []CurveID{X25519, CurveP256, CurveP384, CurveP521}, - MinVersion: VersionTLS10, - MaxVersion: VersionTLS13, - } - testConfig.Certificates[0].Certificate = [][]byte{testRSACertificate} - testConfig.Certificates[0].PrivateKey = testRSAPrivateKey - testConfig.Certificates[1].Certificate = [][]byte{testSNICertificate} - testConfig.Certificates[1].PrivateKey = testRSAPrivateKey - testConfig.BuildNameToCertificate() if *keyFile != "" { f, err := os.OpenFile(*keyFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { panic("failed to open -keylog file: " + err.Error()) } - testConfig.KeyLogWriter = f + testConfigClient.KeyLogWriter = f + testConfigServer.KeyLogWriter = f + testConfigFIPS140.KeyLogWriter = f defer f.Close() } @@ -554,117 +520,6 @@ func fromHex(s string) []byte { return b } -// testTime is 2016-10-20T17:32:09.000Z, which is within the validity period of -// [testRSACertificate], [testRSACertificateIssuer], [testRSA2048Certificate], -// [testRSA2048CertificateIssuer], and [testECDSACertificate]. -var testTime = func() time.Time { return time.Unix(1476984729, 0) } - -var testRSACertificate = fromHex("3082024b308201b4a003020102020900e8f09d3fe25beaa6300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a301a310b3009060355040a1302476f310b300906035504031302476f30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a38193308190300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff0402300030190603551d0e041204109f91161f43433e49a6de6db680d79f60301b0603551d230414301280104813494d137e1631bba301d5acab6e7b30190603551d1104123010820e6578616d706c652e676f6c616e67300d06092a864886f70d01010b0500038181009d30cc402b5b50a061cbbae55358e1ed8328a9581aa938a495a1ac315a1a84663d43d32dd90bf297dfd320643892243a00bccf9c7db74020015faad3166109a276fd13c3cce10c5ceeb18782f16c04ed73bbb343778d0c1cf10fa1d8408361c94c722b9daedb4606064df4c1b33ec0d1bd42d4dbfe3d1360845c21d33be9fae7") - -var testRSACertificateIssuer = fromHex("3082021930820182a003020102020900ca5e4e811a965964300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f7430819f300d06092a864886f70d010101050003818d0030818902818100d667b378bb22f34143b6cd2008236abefaf2852adf3ab05e01329e2c14834f5105df3f3073f99dab5442d45ee5f8f57b0111c8cb682fbb719a86944eebfffef3406206d898b8c1b1887797c9c5006547bb8f00e694b7a063f10839f269f2c34fff7a1f4b21fbcd6bfdfb13ac792d1d11f277b5c5b48600992203059f2a8f8cc50203010001a35d305b300e0603551d0f0101ff040403020204301d0603551d250416301406082b0601050507030106082b06010505070302300f0603551d130101ff040530030101ff30190603551d0e041204104813494d137e1631bba301d5acab6e7b300d06092a864886f70d01010b050003818100c1154b4bab5266221f293766ae4138899bd4c5e36b13cee670ceeaa4cbdf4f6679017e2fe649765af545749fe4249418a56bd38a04b81e261f5ce86b8d5c65413156a50d12449554748c59a30c515bc36a59d38bddf51173e899820b282e40aa78c806526fd184fb6b4cf186ec728edffa585440d2b3225325f7ab580e87dd76") - -var testRSA2048Certificate = fromHex("30820316308201fea003020102020900e8f09d3fe25beaa6300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3338303130313030303030305a301a310b3009060355040a1302476f310b300906035504031302476f30820122300d06092a864886f70d01010105000382010f003082010a0282010100e0ac47db9ba1b7f98a996c62dc1d248d4ee570544136fe4e911e22fccc0fe2b20982f3c4cdd8f4065c5068c873ca0a768b80dc915edc66541a5f26cdea44e56e411221e2f9927bf4e009fee76dbe0e118dcc13392efd6f42d8eb2fd5bc8f63ac77800c84d3be90c20c321273254b9137ef61f825dad1ec2c5e75aa4be6d3104899bd5ac400da7ab942b4227a3870ae5bb97870aa09a1082fb8e78b944cd7fd1b0c6fb1cce03b5430b12ef9ce2d95e01821766e998df0cc99202a57cf030577bd2dc0ec85a49f203511bb6f0e9f43398ead0958f8d7534c61e81daf4501faaa68d9cbc725b58401900fa48a3e2333b15c88cf0c5cc8f33fb9464f9d5f5768b8f10203010001a35a3058300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff0402300030190603551d1104123010820e6578616d706c652e676f6c616e67300d06092a864886f70d01010b050003820101009e83f835e2da08204ee6f8bdca793cf83c7aec175349c1642dfbe9f4d0dcfb1aedb4d0122e16c2ad92e63dd31cce10ca5dd04be48cded0fdc8fea49e891d9d93e778a67d54b619ac167ce7bb0f6000ca00c5677d09df3eb10080134ba32bfe4132d33954dc479cb266288d53d3f43af9c78c0ca59d396498bdc56d4966dc6b7e49081f7f2ae1d704bb9f9effed93c57d3b738da02edff3999e3f1a5dce2b093951947d233d9c6b6a12b4b1611826aa02544980089eebbcf22a1a96bd35a3ddf638578989334a93d5081fab442b4383ba6213b7cdd74110582244a2abd937828b311d8dd69178756db7874293b9810c5c2e833f91d49d283a62caaf359141997f") - -var testRSA2048CertificateIssuer = fromHex("308203223082020aa003020102020900ca5e4e811a965964300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f7430820122300d06092a864886f70d01010105000382010f003082010a0282010100b308c1720c7054abe66e1be6f8a11246808215a810e8936e47601f7ec1afeb02ad69a5000959d4e08ebc4455ef90b39616f380b8ff2e76f29942d7e009cf010824fe56f69140ac39b761595255ec2aa35155ca2eea884f57b25f8a52f41f56f65b0197cb6c637f9adfa97d8ac27565449f64e67f8b918646ffd630601b0badd8d38aea421fe413ee94f10ea5874c2fd6d8c1b9febaa5ca0ce759993a232c9c48e52230bbf58777b0c30e07e9e0914133730d844b9887b950d5a17c779ac69de2d9c65d26f1ea46c7dd7ac636af6d77df7c9218f78c7b5f08b025867f343ac66cd43a657ac44bfd7e9d07e95a22ff9a0babf72dcffc66eba0a1d90731f67e3bbd0203010001a361305f300e0603551d0f0101ff040403020204301d0603551d250416301406082b0601050507030106082b06010505070302300f0603551d130101ff040530030101ff301d0603551d0e0416041460145a6ce2e8a15b1b68db9a4752ce8684d6ba2d300d06092a864886f70d01010b050003820101001d342fe0b50a25d57a8b13bc14d0abb1eea7431ee752aa423e1306654183e44e9d48bbf592cd32ce77310fdc4e8bbcd724fc43d2723f454bfe605ff90d38d8c6fe60b36c6f4d2d7e4e79bceeb2484f0565274b0d0c4a8562370677624a4c133e332a9e63d4b47544c14e4908ee8685dd0760ae6f4ab089ede2b0cdc595ecefbee7d8be80d57b2d4e4510b6ceda54d1a5980540214191d81cc89a983da43d4043f8efe97a2e231c5153bded520acce87ec8c64a3408f0eb4c742c4a877e8b5b7b7f72497734a41a95994a7a103262ea6d598d03fd5cb0579ed4702424da8893334c58215bc655d49656aedcd02d18676f45d6b9469ae04b89abe9b358391cce99") - -var testRSA2048PrivateKey, _ = x509.ParsePKCS1PrivateKey(fromHex("308204a40201000282010100e0ac47db9ba1b7f98a996c62dc1d248d4ee570544136fe4e911e22fccc0fe2b20982f3c4cdd8f4065c5068c873ca0a768b80dc915edc66541a5f26cdea44e56e411221e2f9927bf4e009fee76dbe0e118dcc13392efd6f42d8eb2fd5bc8f63ac77800c84d3be90c20c321273254b9137ef61f825dad1ec2c5e75aa4be6d3104899bd5ac400da7ab942b4227a3870ae5bb97870aa09a1082fb8e78b944cd7fd1b0c6fb1cce03b5430b12ef9ce2d95e01821766e998df0cc99202a57cf030577bd2dc0ec85a49f203511bb6f0e9f43398ead0958f8d7534c61e81daf4501faaa68d9cbc725b58401900fa48a3e2333b15c88cf0c5cc8f33fb9464f9d5f5768b8f10203010001028201007aac96efca229b199e1bf79a63256677e1c455792bc2a348b2e409a68ea57dda486740430d4290bb885c3f5a741eb567d4f41f7b2098a726f4df4f88cf899edc7c9b31f584dffedece15a7212642c7dbbdd8d806392a183e1fc30af36169c9bab9e528f0bdcd27ad4c8b6a97849da6452c6809de61848db80c3ba3289e785042cdfd46fbfee5f78adcba2927fcd8cbe9dcaa97190457eaa45d77adbe0db820aff0c8511d837ab5b307bad5f85afd2cc70d9659ec58045d97ced1eb7950670ac559449c0305fddefda1bac88d36629a177f65abad182c6470830b39e7f6dbdef4df813ccaef01d5a42d37213b2b9647e2ff56a63e6b6a4b6e8a1567bbfd77042102818100eb66f205e8507c78f7167dbef3ddf02fde6a67bd15152609e9296576e28c79678177145ae98e0a2fee58fdb3d626fb6beae3e0ae0b76bc47d16fcdeb16f0caca8a0902779979382609705ae84514de480c2fb2ddda3049347cc1bde9f1a359747079ef3dce020a3c186c90e63bc20b5489a40d768b1c1c35c679edc5662e18c702818100f454ffff95b126b55cb13b68a3841600fc0bc69ff4064f7ceb122495fa972fdb05ca2fa1c6e2e84432f81c96875ab12226e8ce92ba808c4f6325f27ce058791f05db96e623687d3cfc198e748a07521a8c7ee9e7e8faf95b0985be82b867a49f7d5d50fac3881d2c39dedfdbca3ebe847b859c9864cf7a543e4688f5a60118870281806cee737ac65950704daeebbb8c701c709a54d4f28baa00b33f6137a1bf0e5033d4963d2620c3e8f4eb2fe51eee2f95d3079c31e1784e96ac093fdaa33a376d3032961ebd27990fa192669abab715041385082196461c6813d0d37ac5a25afbcf452937cb7ae438c63c6b28d651bae6b1550c446aa1cefd42e9388d0df6cdc80b02818100cac172c33504923bb494fad8e5c0a9c5dd63244bfe63f238969632b82700a95cd71c2694d887d9f92656d0da75ae640a1441e392cda3f94bb3da7cb4f6335527d2639c809467946e34423cfe26c0d6786398ba20922d1b1a59f79bd5bc937d8040b75c890c13fb298548977a3c05ff71cf535c54f66b5a77684a7e4363a3cb2702818100a4d782f35d5a07f9c1f8f9c378564b220387d1e481cc856b631de7637d8bb77c851db070122050ac230dc6e45edf4523471c717c1cb86a36b2fd3358fae349d51be54d71d7dbeaa6af668323e2b51933f0b8488aa12723e0f32207068b4aa64ed54bcef4acbbbe35b92802faba7ed45ae52bef8313d9ef4393ccc5cf868ddbf8")) - -// testRSAPSSCertificate has signatureAlgorithm rsassaPss, but subjectPublicKeyInfo -// algorithm rsaEncryption, for use with the rsa_pss_rsae_* SignatureSchemes. -// See also TestRSAPSSKeyError. testRSAPSSCertificate is self-signed. -var testRSAPSSCertificate = fromHex("308202583082018da003020102021100f29926eb87ea8a0db9fcc247347c11b0304106092a864886f70d01010a3034a00f300d06096086480165030402010500a11c301a06092a864886f70d010108300d06096086480165030402010500a20302012030123110300e060355040a130741636d6520436f301e170d3137313132333136313631305a170d3138313132333136313631305a30123110300e060355040a130741636d6520436f30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a3463044300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000300f0603551d110408300687047f000001304106092a864886f70d01010a3034a00f300d06096086480165030402010500a11c301a06092a864886f70d010108300d06096086480165030402010500a20302012003818100cdac4ef2ce5f8d79881042707f7cbf1b5a8a00ef19154b40151771006cd41626e5496d56da0c1a139fd84695593cb67f87765e18aa03ea067522dd78d2a589b8c92364e12838ce346c6e067b51f1a7e6f4b37ffab13f1411896679d18e880e0ba09e302ac067efca460288e9538122692297ad8093d4f7dd701424d7700a46a1") - -var testECDSACertificate = fromHex("3082020030820162020900b8bf2d47a0d2ebf4300906072a8648ce3d04013045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c7464301e170d3132313132323135303633325a170d3232313132303135303633325a3045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c746430819b301006072a8648ce3d020106052b81040023038186000400c4a1edbe98f90b4873367ec316561122f23d53c33b4d213dcd6b75e6f6b0dc9adf26c1bcb287f072327cb3642f1c90bcea6823107efee325c0483a69e0286dd33700ef0462dd0da09c706283d881d36431aa9e9731bd96b068c09b23de76643f1a5c7fe9120e5858b65f70dd9bd8ead5d7f5d5ccb9b69f30665b669a20e227e5bffe3b300906072a8648ce3d040103818c0030818802420188a24febe245c5487d1bacf5ed989dae4770c05e1bb62fbdf1b64db76140d311a2ceee0b7e927eff769dc33b7ea53fcefa10e259ec472d7cacda4e970e15a06fd00242014dfcbe67139c2d050ebd3fa38c25c13313830d9406bbd4377af6ec7ac9862eddd711697f857c56defb31782be4c7780daecbbe9e4e3624317b6a0f399512078f2a") - -var testEd25519Certificate = fromHex("3082012e3081e1a00302010202100f431c425793941de987e4f1ad15005d300506032b657030123110300e060355040a130741636d6520436f301e170d3139303531363231333830315a170d3230303531353231333830315a30123110300e060355040a130741636d6520436f302a300506032b65700321003fe2152ee6e3ef3f4e854a7577a3649eede0bf842ccc92268ffa6f3483aaec8fa34d304b300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff0402300030160603551d11040f300d820b6578616d706c652e636f6d300506032b65700341006344ed9cc4be5324539fd2108d9fe82108909539e50dc155ff2c16b71dfcab7d4dd4e09313d0a942e0b66bfe5d6748d79f50bc6ccd4b03837cf20858cdaccf0c") - -var testSNICertificate = fromHex("0441883421114c81480804c430820237308201a0a003020102020900e8f09d3fe25beaa6300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a3023310b3009060355040a1302476f311430120603550403130b736e69746573742e636f6d30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a3773075300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff0402300030190603551d0e041204109f91161f43433e49a6de6db680d79f60301b0603551d230414301280104813494d137e1631bba301d5acab6e7b300d06092a864886f70d01010b0500038181007beeecff0230dbb2e7a334af65430b7116e09f327c3bbf918107fc9c66cb497493207ae9b4dbb045cb63d605ec1b5dd485bb69124d68fa298dc776699b47632fd6d73cab57042acb26f083c4087459bc5a3bb3ca4d878d7fe31016b7bc9a627438666566e3389bfaeebe6becc9a0093ceed18d0f9ac79d56f3a73f18188988ed") - -var testP256Certificate = fromHex("308201693082010ea00302010202105012dc24e1124ade4f3e153326ff27bf300a06082a8648ce3d04030230123110300e060355040a130741636d6520436f301e170d3137303533313232343934375a170d3138303533313232343934375a30123110300e060355040a130741636d6520436f3059301306072a8648ce3d020106082a8648ce3d03010703420004c02c61c9b16283bbcc14956d886d79b358aa614596975f78cece787146abf74c2d5dc578c0992b4f3c631373479ebf3892efe53d21c4f4f1cc9a11c3536b7f75a3463044300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000300f0603551d1104083006820474657374300a06082a8648ce3d0403020349003046022100963712d6226c7b2bef41512d47e1434131aaca3ba585d666c924df71ac0448b3022100f4d05c725064741aef125f243cdbccaa2a5d485927831f221c43023bd5ae471a") - -var testRSAPrivateKey, _ = x509.ParsePKCS1PrivateKey(fromHex("3082025b02010002818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d702030100010281800b07fbcf48b50f1388db34b016298b8217f2092a7c9a04f77db6775a3d1279b62ee9951f7e371e9de33f015aea80660760b3951dc589a9f925ed7de13e8f520e1ccbc7498ce78e7fab6d59582c2386cc07ed688212a576ff37833bd5943483b5554d15a0b9b4010ed9bf09f207e7e9805f649240ed6c1256ed75ab7cd56d9671024100fded810da442775f5923debae4ac758390a032a16598d62f059bb2e781a9c2f41bfa015c209f966513fe3bf5a58717cbdb385100de914f88d649b7d15309fa49024100dd10978c623463a1802c52f012cfa72ff5d901f25a2292446552c2568b1840e49a312e127217c2186615aae4fb6602a4f6ebf3f3d160f3b3ad04c592f65ae41f02400c69062ca781841a09de41ed7a6d9f54adc5d693a2c6847949d9e1358555c9ac6a8d9e71653ac77beb2d3abaf7bb1183aa14278956575dbebf525d0482fd72d90240560fe1900ba36dae3022115fd952f2399fb28e2975a1c3e3d0b679660bdcb356cc189d611cfdd6d87cd5aea45aa30a2082e8b51e94c2f3dd5d5c6036a8a615ed0240143993d80ece56f877cb80048335701eb0e608cc0c1ca8c2227b52edf8f1ac99c562f2541b5ce81f0515af1c5b4770dba53383964b4b725ff46fdec3d08907df")) - -var testECDSAPrivateKey, _ = x509.ParseECPrivateKey(fromHex("3081dc0201010442019883e909ad0ac9ea3d33f9eae661f1785206970f8ca9a91672f1eedca7a8ef12bd6561bb246dda5df4b4d5e7e3a92649bc5d83a0bf92972e00e62067d0c7bd99d7a00706052b81040023a18189038186000400c4a1edbe98f90b4873367ec316561122f23d53c33b4d213dcd6b75e6f6b0dc9adf26c1bcb287f072327cb3642f1c90bcea6823107efee325c0483a69e0286dd33700ef0462dd0da09c706283d881d36431aa9e9731bd96b068c09b23de76643f1a5c7fe9120e5858b65f70dd9bd8ead5d7f5d5ccb9b69f30665b669a20e227e5bffe3b")) - -var testP256PrivateKey, _ = x509.ParseECPrivateKey(fromHex("30770201010420012f3b52bc54c36ba3577ad45034e2e8efe1e6999851284cb848725cfe029991a00a06082a8648ce3d030107a14403420004c02c61c9b16283bbcc14956d886d79b358aa614596975f78cece787146abf74c2d5dc578c0992b4f3c631373479ebf3892efe53d21c4f4f1cc9a11c3536b7f75")) - -var testEd25519PrivateKey = ed25519.PrivateKey(fromHex("3a884965e76b3f55e5faf9615458a92354894234de3ec9f684d46d55cebf3dc63fe2152ee6e3ef3f4e854a7577a3649eede0bf842ccc92268ffa6f3483aaec8f")) - -const clientCertificatePEM = ` ------BEGIN CERTIFICATE----- -MIIB7zCCAVigAwIBAgIQXBnBiWWDVW/cC8m5k5/pvDANBgkqhkiG9w0BAQsFADAS -MRAwDgYDVQQKEwdBY21lIENvMB4XDTE2MDgxNzIxNTIzMVoXDTE3MDgxNzIxNTIz -MVowEjEQMA4GA1UEChMHQWNtZSBDbzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC -gYEAum+qhr3Pv5/y71yUYHhv6BPy0ZZvzdkybiI3zkH5yl0prOEn2mGi7oHLEMff -NFiVhuk9GeZcJ3NgyI14AvQdpJgJoxlwaTwlYmYqqyIjxXuFOE8uCXMyp70+m63K -hAfmDzr/d8WdQYUAirab7rCkPy1MTOZCPrtRyN1IVPQMjkcCAwEAAaNGMEQwDgYD -VR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAw -DwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOBgQBGq0Si+yhU+Fpn+GKU -8ZqyGJ7ysd4dfm92lam6512oFmyc9wnTN+RLKzZ8Aa1B0jLYw9KT+RBrjpW5LBeK -o0RIvFkTgxYEiKSBXCUNmAysEbEoVr4dzWFihAm/1oDGRY2CLLTYg5vbySK3KhIR -e/oCO8HJ/+rJnahJ05XX1Q7lNQ== ------END CERTIFICATE-----` - -var clientKeyPEM = testingKey(` ------BEGIN RSA TESTING KEY----- -MIICXQIBAAKBgQC6b6qGvc+/n/LvXJRgeG/oE/LRlm/N2TJuIjfOQfnKXSms4Sfa -YaLugcsQx980WJWG6T0Z5lwnc2DIjXgC9B2kmAmjGXBpPCViZiqrIiPFe4U4Ty4J -czKnvT6brcqEB+YPOv93xZ1BhQCKtpvusKQ/LUxM5kI+u1HI3UhU9AyORwIDAQAB -AoGAEJZ03q4uuMb7b26WSQsOMeDsftdatT747LGgs3pNRkMJvTb/O7/qJjxoG+Mc -qeSj0TAZXp+PXXc3ikCECAc+R8rVMfWdmp903XgO/qYtmZGCorxAHEmR80SrfMXv -PJnznLQWc8U9nphQErR+tTESg7xWEzmFcPKwnZd1xg8ERYkCQQDTGtrFczlB2b/Z -9TjNMqUlMnTLIk/a/rPE2fLLmAYhK5sHnJdvDURaH2mF4nso0EGtENnTsh6LATnY -dkrxXGm9AkEA4hXHG2q3MnhgK1Z5hjv+Fnqd+8bcbII9WW4flFs15EKoMgS1w/PJ -zbsySaSy5IVS8XeShmT9+3lrleed4sy+UwJBAJOOAbxhfXP5r4+5R6ql66jES75w -jUCVJzJA5ORJrn8g64u2eGK28z/LFQbv9wXgCwfc72R468BdawFSLa/m2EECQGbZ -rWiFla26IVXV0xcD98VWJsTBZMlgPnSOqoMdM1kSEd4fUmlAYI/dFzV1XYSkOmVr -FhdZnklmpVDeu27P4c0CQQCuCOup0FlJSBpWY1TTfun/KMBkBatMz0VMA3d7FKIU -csPezl677Yjo8u1r/KzeI6zLg87Z8E6r6ZWNc9wBSZK6 ------END RSA TESTING KEY-----`) - -const clientECDSACertificatePEM = ` ------BEGIN CERTIFICATE----- -MIIB/DCCAV4CCQCaMIRsJjXZFzAJBgcqhkjOPQQBMEUxCzAJBgNVBAYTAkFVMRMw -EQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0 -eSBMdGQwHhcNMTIxMTE0MTMyNTUzWhcNMjIxMTEyMTMyNTUzWjBBMQswCQYDVQQG -EwJBVTEMMAoGA1UECBMDTlNXMRAwDgYDVQQHEwdQeXJtb250MRIwEAYDVQQDEwlK -b2VsIFNpbmcwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABACVjJF1FMBexFe01MNv -ja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd3kfDdq0Z9kUs -jLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx+U56jb0JuK7q -ixgnTy5w/hOWusPTQBbNZU6sER7m8TAJBgcqhkjOPQQBA4GMADCBiAJCAOAUxGBg -C3JosDJdYUoCdFzCgbkWqD8pyDbHgf9stlvZcPE4O1BIKJTLCRpS8V3ujfK58PDa -2RU6+b0DeoeiIzXsAkIBo9SKeDUcSpoj0gq+KxAxnZxfvuiRs9oa9V2jI/Umi0Vw -jWVim34BmT0Y9hCaOGGbLlfk+syxis7iI6CH8OFnUes= ------END CERTIFICATE-----` - -var clientECDSAKeyPEM = testingKey(` ------BEGIN EC PARAMETERS----- -BgUrgQQAIw== ------END EC PARAMETERS----- ------BEGIN EC TESTING KEY----- -MIHcAgEBBEIBkJN9X4IqZIguiEVKMqeBUP5xtRsEv4HJEtOpOGLELwO53SD78Ew8 -k+wLWoqizS3NpQyMtrU8JFdWfj+C57UNkOugBwYFK4EEACOhgYkDgYYABACVjJF1 -FMBexFe01MNvja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd -3kfDdq0Z9kUsjLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx -+U56jb0JuK7qixgnTy5w/hOWusPTQBbNZU6sER7m8Q== ------END EC TESTING KEY-----`) - -const clientEd25519CertificatePEM = ` ------BEGIN CERTIFICATE----- -MIIBLjCB4aADAgECAhAX0YGTviqMISAQJRXoNCNPMAUGAytlcDASMRAwDgYDVQQK -EwdBY21lIENvMB4XDTE5MDUxNjIxNTQyNloXDTIwMDUxNTIxNTQyNlowEjEQMA4G -A1UEChMHQWNtZSBDbzAqMAUGAytlcAMhAAvgtWC14nkwPb7jHuBQsQTIbcd4bGkv -xRStmmNveRKRo00wSzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH -AwIwDAYDVR0TAQH/BAIwADAWBgNVHREEDzANggtleGFtcGxlLmNvbTAFBgMrZXAD -QQD8GRcqlKUx+inILn9boF2KTjRAOdazENwZ/qAicbP1j6FYDc308YUkv+Y9FN/f -7Q7hF9gRomDQijcjKsJGqjoI ------END CERTIFICATE-----` - -var clientEd25519KeyPEM = testingKey(` ------BEGIN TESTING KEY----- -MC4CAQAwBQYDK2VwBCIEINifzf07d9qx3d44e0FSbV4mC/xQxT644RRbpgNpin7I ------END TESTING KEY-----`) - func TestServerHelloTrailingMessage(t *testing.T) { // In TLS 1.3 the change cipher spec message is optional. If a CCS message // is not sent, after reading the ServerHello, the read traffic secret is @@ -675,7 +530,7 @@ func TestServerHelloTrailingMessage(t *testing.T) { c, s := localPipe(t) go func() { ctx := context.Background() - srv := Server(s, testConfig) + srv := Server(s, testConfigServer.Clone()) clientHello, _, err := srv.readClientHello(ctx) if err != nil { testFatal(t, err) @@ -704,7 +559,7 @@ func TestServerHelloTrailingMessage(t *testing.T) { srv.Close() }() - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) expectedErr := "tls: handshake buffer not empty before setting read traffic secret" if err := cli.Handshake(); err == nil { t.Fatal("expected error from incomplete handshake, got nil") @@ -718,7 +573,7 @@ func TestClientHelloTrailingMessage(t *testing.T) { c, s := localPipe(t) go func() { - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) hello, _, _, err := cli.makeClientHello() if err != nil { @@ -736,7 +591,7 @@ func TestClientHelloTrailingMessage(t *testing.T) { cli.Close() }() - srv := Server(s, testConfig) + srv := Server(s, testConfigServer.Clone()) expectedErr := "tls: handshake buffer not empty before setting read traffic secret" if err := srv.Handshake(); err == nil { t.Fatal("expected error from incomplete handshake, got nil") @@ -753,7 +608,7 @@ func TestDoubleClientHelloHRR(t *testing.T) { c, s := localPipe(t) go func() { - cli := Client(c, testConfig) + cli := Client(c, testConfigClient.Clone()) hello, _, _, err := cli.makeClientHello() if err != nil { @@ -772,7 +627,7 @@ func TestDoubleClientHelloHRR(t *testing.T) { cli.Close() }() - srv := Server(s, testConfig) + srv := Server(s, testConfigServer.Clone()) expectedErr := "tls: handshake buffer not empty before HelloRetryRequest" if err := srv.Handshake(); err == nil { t.Fatal("expected error from incomplete handshake, got nil") @@ -809,11 +664,14 @@ func TestMultipleKeyUpdate(t *testing.T) { t.Run(fmt.Sprintf("requestUpdate=%t", requestUpdate), func(t *testing.T) { c, s := localPipe(t) - cfg := testConfig.Clone() - cfg.MinVersion = VersionTLS13 - cfg.MaxVersion = VersionTLS13 - client := Client(c, testConfig) - server := Server(s, testConfig) + clientConfig := testConfigClient.Clone() + clientConfig.MinVersion = VersionTLS13 + clientConfig.MaxVersion = VersionTLS13 + serverConfig := testConfigServer.Clone() + serverConfig.MinVersion = VersionTLS13 + serverConfig.MaxVersion = VersionTLS13 + client := Client(c, clientConfig) + server := Server(s, serverConfig) clientHandshakeDone := make(chan struct{}) go func() { diff --git a/src/crypto/tls/quic_test.go b/src/crypto/tls/quic_test.go index 5cc25872b3d33f..56c5b3a7d60960 100644 --- a/src/crypto/tls/quic_test.go +++ b/src/crypto/tls/quic_test.go @@ -172,13 +172,15 @@ func runTestQUICConnection(ctx context.Context, cli, srv *testQUICConn, onEvent } func TestQUICConnection(t *testing.T) { - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) if err := runTestQUICConnection(context.Background(), cli, srv, nil); err != nil { @@ -214,12 +216,11 @@ func TestQUICConnection(t *testing.T) { } func TestQUICSessionResumption(t *testing.T) { - clientConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} clientConfig.TLSConfig.MinVersion = VersionTLS13 clientConfig.TLSConfig.ClientSessionCache = NewLRUClientSessionCache(1) - clientConfig.TLSConfig.ServerName = "example.go.dev" - serverConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} serverConfig.TLSConfig.MinVersion = VersionTLS13 cli := newTestQUICClient(t, clientConfig) @@ -258,12 +259,11 @@ func TestQUICSessionResumption(t *testing.T) { } func TestQUICFragmentaryData(t *testing.T) { - clientConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} clientConfig.TLSConfig.MinVersion = VersionTLS13 clientConfig.TLSConfig.ClientSessionCache = NewLRUClientSessionCache(1) - clientConfig.TLSConfig.ServerName = "example.go.dev" - serverConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} serverConfig.TLSConfig.MinVersion = VersionTLS13 cli := newTestQUICClient(t, clientConfig) @@ -290,11 +290,13 @@ func TestQUICFragmentaryData(t *testing.T) { func TestQUICPostHandshakeClientAuthentication(t *testing.T) { // RFC 9001, Section 4.4. - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) if err := runTestQUICConnection(context.Background(), cli, srv, nil); err != nil { t.Fatalf("error during connection handshake: %v", err) @@ -318,11 +320,13 @@ func TestQUICPostHandshakeClientAuthentication(t *testing.T) { func TestQUICPostHandshakeKeyUpdate(t *testing.T) { // RFC 9001, Section 6. - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) if err := runTestQUICConnection(context.Background(), cli, srv, nil); err != nil { t.Fatalf("error during connection handshake: %v", err) @@ -342,11 +346,13 @@ func TestQUICPostHandshakeKeyUpdate(t *testing.T) { } func TestQUICPostHandshakeMessageTooLarge(t *testing.T) { - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) if err := runTestQUICConnection(context.Background(), cli, srv, nil); err != nil { t.Fatalf("error during connection handshake: %v", err) @@ -364,12 +370,12 @@ func TestQUICPostHandshakeMessageTooLarge(t *testing.T) { } func TestQUICHandshakeError(t *testing.T) { - clientConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} clientConfig.TLSConfig.MinVersion = VersionTLS13 clientConfig.TLSConfig.InsecureSkipVerify = false clientConfig.TLSConfig.ServerName = "name" - serverConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} serverConfig.TLSConfig.MinVersion = VersionTLS13 cli := newTestQUICClient(t, clientConfig) @@ -396,15 +402,18 @@ func TestQUICHandshakeError(t *testing.T) { // Test that we can report an error produced by the GetEncryptedClientHelloKeys function. func TestQUICECHKeyError(t *testing.T) { getECHKeysError := errors.New("error returned by GetEncryptedClientHelloKeys") - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - config.TLSConfig.NextProtos = []string{"h3"} - config.TLSConfig.GetEncryptedClientHelloKeys = func(*ClientHelloInfo) ([]EncryptedClientHelloKey, error) { + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + clientConfig.TLSConfig.NextProtos = []string{"h3"} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig.TLSConfig.NextProtos = []string{"h3"} + serverConfig.TLSConfig.GetEncryptedClientHelloKeys = func(*ClientHelloInfo) ([]EncryptedClientHelloKey, error) { return nil, getECHKeysError } - cli := newTestQUICClient(t, config) + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) if err := runTestQUICConnection(context.Background(), cli, srv, nil); err != errTransportParametersRequired { t.Fatalf("handshake with no client parameters: %v; want errTransportParametersRequired", err) @@ -428,12 +437,15 @@ func TestQUICECHKeyError(t *testing.T) { // and that it reports the application protocol as soon as it has been // negotiated. func TestQUICConnectionState(t *testing.T) { - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - config.TLSConfig.NextProtos = []string{"h3"} - cli := newTestQUICClient(t, config) + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + clientConfig.TLSConfig.NextProtos = []string{"h3"} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig.TLSConfig.NextProtos = []string{"h3"} + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) onEvent := func(e QUICEvent, src, dst *testQUICConn) bool { cliCS := cli.conn.ConnectionState() @@ -459,10 +471,12 @@ func TestQUICStartContextPropagation(t *testing.T) { const key = "key" const value = "value" ctx := context.WithValue(context.Background(), key, value) - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 calls := 0 - config.TLSConfig.GetConfigForClient = func(info *ClientHelloInfo) (*Config, error) { + serverConfig.TLSConfig.GetConfigForClient = func(info *ClientHelloInfo) (*Config, error) { calls++ got, _ := info.Context().Value(key).(string) if got != value { @@ -470,9 +484,9 @@ func TestQUICStartContextPropagation(t *testing.T) { } return nil, nil } - cli := newTestQUICClient(t, config) + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) if err := runTestQUICConnection(ctx, cli, srv, nil); err != nil { t.Fatalf("error during connection handshake: %v", err) @@ -488,22 +502,24 @@ func TestQUICClientHelloInfoConn(t *testing.T) { clientHelloInfoConn.Close() peerConn.Close() }) - config := &QUICConfig{ - TLSConfig: testConfig.Clone(), + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{ + TLSConfig: testConfigServer.Clone(), ClientHelloInfoConn: clientHelloInfoConn, } - config.TLSConfig.MinVersion = VersionTLS13 + serverConfig.TLSConfig.MinVersion = VersionTLS13 var called bool - config.TLSConfig.GetConfigForClient = func(info *ClientHelloInfo) (*Config, error) { + serverConfig.TLSConfig.GetConfigForClient = func(info *ClientHelloInfo) (*Config, error) { called = true if info.Conn != clientHelloInfoConn { t.Errorf("ClientHelloInfo.Conn = %v, want %v", info.Conn, clientHelloInfoConn) } return nil, nil } - cli := newTestQUICClient(t, config) + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) if err := runTestQUICConnection(context.Background(), cli, srv, nil); err != nil { t.Fatalf("error during connection handshake: %v", err) @@ -515,11 +531,13 @@ func TestQUICClientHelloInfoConn(t *testing.T) { func TestQUICContextCancelation(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) // Verify that canceling the connection context concurrently does not cause any races. // See https://go.dev/issue/77274. @@ -532,12 +550,11 @@ func TestQUICContextCancelation(t *testing.T) { } func TestQUICDelayedTransportParameters(t *testing.T) { - clientConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} clientConfig.TLSConfig.MinVersion = VersionTLS13 clientConfig.TLSConfig.ClientSessionCache = NewLRUClientSessionCache(1) - clientConfig.TLSConfig.ServerName = "example.go.dev" - serverConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} serverConfig.TLSConfig.MinVersion = VersionTLS13 cliParams := "client params" @@ -566,12 +583,14 @@ func TestQUICDelayedTransportParameters(t *testing.T) { } func TestQUICEmptyTransportParameters(t *testing.T) { - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} + serverConfig.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) - srv := newTestQUICServer(t, config) + srv := newTestQUICServer(t, serverConfig) srv.conn.SetTransportParameters(nil) if err := runTestQUICConnection(context.Background(), cli, srv, nil); err != nil { t.Fatalf("error during connection handshake: %v", err) @@ -592,9 +611,9 @@ func TestQUICEmptyTransportParameters(t *testing.T) { } func TestQUICCanceledWaitingForData(t *testing.T) { - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + cli := newTestQUICClient(t, clientConfig) cli.conn.SetTransportParameters(nil) cli.conn.Start(context.Background()) for cli.conn.NextEvent().Kind != QUICNoEvent { @@ -606,9 +625,9 @@ func TestQUICCanceledWaitingForData(t *testing.T) { } func TestQUICCanceledWaitingForTransportParams(t *testing.T) { - config := &QUICConfig{TLSConfig: testConfig.Clone()} - config.TLSConfig.MinVersion = VersionTLS13 - cli := newTestQUICClient(t, config) + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} + clientConfig.TLSConfig.MinVersion = VersionTLS13 + cli := newTestQUICClient(t, clientConfig) cli.conn.Start(context.Background()) for cli.conn.NextEvent().Kind != QUICTransportParametersRequired { } @@ -619,13 +638,12 @@ func TestQUICCanceledWaitingForTransportParams(t *testing.T) { } func TestQUICEarlyData(t *testing.T) { - clientConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} clientConfig.TLSConfig.MinVersion = VersionTLS13 clientConfig.TLSConfig.ClientSessionCache = NewLRUClientSessionCache(1) - clientConfig.TLSConfig.ServerName = "example.go.dev" clientConfig.TLSConfig.NextProtos = []string{"h3"} - serverConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} serverConfig.TLSConfig.MinVersion = VersionTLS13 serverConfig.TLSConfig.NextProtos = []string{"h3"} @@ -681,14 +699,13 @@ func TestQUICEarlyDataDeclined(t *testing.T) { } func testQUICEarlyDataDeclined(t *testing.T, server bool) { - clientConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + clientConfig := &QUICConfig{TLSConfig: testConfigClient.Clone()} clientConfig.EnableSessionEvents = true clientConfig.TLSConfig.MinVersion = VersionTLS13 clientConfig.TLSConfig.ClientSessionCache = NewLRUClientSessionCache(1) - clientConfig.TLSConfig.ServerName = "example.go.dev" clientConfig.TLSConfig.NextProtos = []string{"h3"} - serverConfig := &QUICConfig{TLSConfig: testConfig.Clone()} + serverConfig := &QUICConfig{TLSConfig: testConfigServer.Clone()} serverConfig.EnableSessionEvents = true serverConfig.TLSConfig.MinVersion = VersionTLS13 serverConfig.TLSConfig.NextProtos = []string{"h3"} diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven index b7c2057fad4403..ee66658a7dd602 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 d5 01 00 00 d1 03 03 ed 50 cb 13 e8 |............P...| -00000010 fe 9b a8 45 c4 15 9a 64 68 b5 7e 8b 6a dc d5 39 |...E...dh.~.j..9| -00000020 df 26 5e b5 68 72 1a 6e ce 48 6b 00 00 38 c0 2c |.&^.hr.n.Hk..8.,| +00000000 16 03 01 00 d5 01 00 00 d1 03 03 fd 6e 51 b8 3b |............nQ.;| +00000010 db ec 88 37 62 24 c8 11 f6 69 90 71 8e 94 06 c1 |...7b$...i.q....| +00000020 4c 01 c6 a5 64 4b 28 fa 86 1d b0 00 00 38 c0 2c |L...dK(......8.,| 00000030 c0 30 00 9f cc a9 cc a8 cc aa c0 2b c0 2f 00 9e |.0.........+./..| 00000040 c0 24 c0 28 00 6b c0 23 c0 27 00 67 c0 0a c0 14 |.$.(.k.#.'.g....| 00000050 00 39 c0 09 c0 13 00 33 00 9d 00 9c 00 3d 00 3c |.9.....3.....=.<| @@ -59,70 +59,72 @@ 000002a0 36 9a 16 03 03 00 73 0c 00 00 6f 03 00 1d 20 bb |6.....s...o... .| 000002b0 af fa db e3 de 3a 65 10 e8 9b 4b be c7 04 31 92 |.....:e...K...1.| 000002c0 72 a2 39 97 24 0b 71 bb 86 4f f4 cb 98 39 57 04 |r.9.$.q..O...9W.| -000002d0 03 00 47 30 45 02 21 00 d1 e7 ce ab 3f 97 3e 8e |..G0E.!.....?.>.| -000002e0 c0 ee 3f ab a6 30 8e 2b 33 02 07 e0 b0 3e 62 66 |..?..0.+3....>bf| -000002f0 85 a0 02 2c 05 18 2d aa 02 20 2a fa ee 90 dc 9e |...,..-.. *.....| -00000300 08 88 0c 41 9c 2b 84 d8 ed bf a7 ba 3e 6f 7d 39 |...A.+......>o}9| -00000310 f3 c0 30 81 98 f8 ab fa e1 4d 16 03 03 00 39 0d |..0......M....9.| +000002d0 03 00 47 30 45 02 20 09 15 95 87 3d b2 94 f6 92 |..G0E. ....=....| +000002e0 c7 b8 1b 0c 35 f3 23 a9 6e ca 54 ce c0 fd 9a 9d |....5.#.n.T.....| +000002f0 b7 b7 fc ff c7 f3 ca 02 21 00 f5 b6 5a c6 bb 96 |........!...Z...| +00000300 52 bc d7 fc ba 3f bc ca 94 e8 8a 11 5a 97 85 94 |R....?......Z...| +00000310 e5 18 1a 6c ad 8e d7 2a 62 d7 16 03 03 00 39 0d |...l...*b.....9.| 00000320 00 00 35 02 01 40 00 14 08 04 04 03 08 07 08 05 |..5..@..........| 00000330 08 06 04 01 05 01 06 01 05 03 06 03 00 1a 00 18 |................| 00000340 30 16 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 |0.1.0...U....Cli| 00000350 65 6e 74 20 52 6f 6f 74 16 03 03 00 04 0e 00 00 |ent Root........| 00000360 00 |.| >>> Flow 3 (client to server) -00000000 16 03 03 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| -00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| -00000020 d9 17 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 |..0...*.H.=..0E1| -00000030 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 |.0...U....AU1.0.| -00000040 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 |..U....Some-Stat| -00000050 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 |e1!0...U....Inte| -00000060 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 |rnet Widgits Pty| -00000070 20 4c 74 64 30 1e 17 0d 31 32 31 31 31 34 31 33 | Ltd0...12111413| -00000080 32 35 35 33 5a 17 0d 32 32 31 31 31 32 31 33 32 |2553Z..221112132| -00000090 35 35 33 5a 30 41 31 0b 30 09 06 03 55 04 06 13 |553Z0A1.0...U...| -000000a0 02 41 55 31 0c 30 0a 06 03 55 04 08 13 03 4e 53 |.AU1.0...U....NS| -000000b0 57 31 10 30 0e 06 03 55 04 07 13 07 50 79 72 6d |W1.0...U....Pyrm| -000000c0 6f 6e 74 31 12 30 10 06 03 55 04 03 13 09 4a 6f |ont1.0...U....Jo| -000000d0 65 6c 20 53 69 6e 67 30 81 9b 30 10 06 07 2a 86 |el Sing0..0...*.| -000000e0 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 86 00 |H.=....+...#....| -000000f0 04 00 95 8c 91 75 14 c0 5e c4 57 b4 d4 c3 6f 8d |.....u..^.W...o.| -00000100 ae 68 1e dd 6f ce 86 e1 7e 6e b2 48 3e 81 e5 4e |.h..o...~n.H>..N| -00000110 e2 c6 88 4b 64 dc f5 30 bb d3 ff 65 cc 5b f4 dd |...Kd..0...e.[..| -00000120 b5 6a 3e 3e d0 1d de 47 c3 76 ad 19 f6 45 2c 8c |.j>>...G.v...E,.| -00000130 bc d8 1d 01 4c 1f 70 90 46 76 48 8b 8f 83 cc 4a |....L.p.FvH....J| -00000140 5c 8f 40 76 da e0 89 ec 1d 2b c4 4e 30 76 28 41 |\.@v.....+.N0v(A| -00000150 b2 62 a8 fb 5b f1 f9 4e 7a 8d bd 09 b8 ae ea 8b |.b..[..Nz.......| -00000160 18 27 4f 2e 70 fe 13 96 ba c3 d3 40 16 cd 65 4e |.'O.p......@..eN| -00000170 ac 11 1e e6 f1 30 09 06 07 2a 86 48 ce 3d 04 01 |.....0...*.H.=..| -00000180 03 81 8c 00 30 81 88 02 42 00 e0 14 c4 60 60 0b |....0...B....``.| -00000190 72 68 b0 32 5d 61 4a 02 74 5c c2 81 b9 16 a8 3f |rh.2]aJ.t\.....?| -000001a0 29 c8 36 c7 81 ff 6c b6 5b d9 70 f1 38 3b 50 48 |).6...l.[.p.8;PH| -000001b0 28 94 cb 09 1a 52 f1 5d ee 8d f2 b9 f0 f0 da d9 |(....R.]........| -000001c0 15 3a f9 bd 03 7a 87 a2 23 35 ec 02 42 01 a3 d4 |.:...z..#5..B...| -000001d0 8a 78 35 1c 4a 9a 23 d2 0a be 2b 10 31 9d 9c 5f |.x5.J.#...+.1.._| -000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.| -000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W| -00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| -00000210 03 03 00 25 10 00 00 21 20 47 37 e2 d2 0b 55 c3 |...%...! G7...U.| -00000220 4a 19 5b 44 46 23 1c 7f 2d 76 79 85 eb 61 54 f2 |J.[DF#..-vy..aT.| -00000230 e1 43 9c 36 46 7f 97 88 7e 16 03 03 00 92 0f 00 |.C.6F...~.......| -00000240 00 8e 04 03 00 8a 30 81 87 02 41 68 4a 5b 2c bf |......0...AhJ[,.| -00000250 c7 79 a3 57 6e d1 d2 d8 8e e7 ab 44 f9 1a 90 92 |.y.Wn......D....| -00000260 6b b0 d8 ca 31 f7 28 44 f8 e7 3c ac 98 d4 6d 3a |k...1.(D..<...m:| -00000270 ae 7c 16 92 88 c0 12 52 17 96 6e 94 10 a6 16 02 |.|.....R..n.....| -00000280 71 7f 3a e7 d3 a3 89 ea c0 b6 79 77 02 42 00 e9 |q.:.......yw.B..| -00000290 4b c3 61 6f 91 f3 7d df 30 f0 22 b7 36 17 18 fc |K.ao..}.0.".6...| -000002a0 f5 1f c3 bc 7d dd f7 83 00 a9 07 ae 7b 43 6a c6 |....}.......{Cj.| -000002b0 c0 c3 66 45 47 9f e2 f3 8e 52 0c ac fa 60 f9 5e |..fEG....R...`.^| -000002c0 1f 13 4f da d7 e2 c0 6d 28 62 e0 28 1a 0c c3 6d |..O....m(b.(...m| -000002d0 14 03 03 00 01 01 16 03 03 00 20 9d 28 07 16 84 |.......... .(...| -000002e0 ba 69 22 82 6d d9 79 5e 73 a8 eb 82 c6 51 01 7c |.i".m.y^s....Q.|| -000002f0 d3 27 76 b9 30 0b 98 a1 5f c8 85 |.'v.0..._..| +00000000 16 03 03 02 6b 0b 00 02 67 00 02 64 00 02 61 30 |....k...g..d..a0| +00000010 82 02 5d 30 82 01 45 a0 03 02 01 02 02 01 0d 30 |..]0..E........0| +00000020 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 16 |...*.H........0.| +00000030 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 65 6e |1.0...U....Clien| +00000040 74 20 52 6f 6f 74 30 1e 17 0d 31 36 30 37 31 32 |t Root0...160712| +00000050 31 37 33 32 30 39 5a 17 0d 31 37 30 31 32 38 31 |173209Z..1701281| +00000060 37 33 32 30 39 5a 30 21 31 1f 30 1d 06 03 55 04 |73209Z0!1.0...U.| +00000070 03 13 16 63 6c 69 65 6e 74 41 75 74 68 20 45 43 |...clientAuth EC| +00000080 44 53 41 20 50 2d 32 35 36 30 59 30 13 06 07 2a |DSA P-2560Y0...*| +00000090 86 48 ce 3d 02 01 06 08 2a 86 48 ce 3d 03 01 07 |.H.=....*.H.=...| +000000a0 03 42 00 04 83 59 85 bd 33 10 82 29 99 d9 69 48 |.B...Y..3..)..iH| +000000b0 da 7f f8 4b e1 00 f6 8b ce f8 ae 6d 91 d5 4e 48 |...K.......m..NH| +000000c0 d4 ee 3b 59 97 ae 97 f6 3a 27 6e 36 d8 ed 33 de |..;Y....:'n6..3.| +000000d0 bf f1 ba a9 6a 85 83 a9 f0 fe 72 a2 8e 98 47 f5 |....j.....r...G.| +000000e0 f0 5c 0d 5e a3 76 30 74 30 0e 06 03 55 1d 0f 01 |.\.^.v0t0...U...| +000000f0 01 ff 04 04 03 02 07 80 30 13 06 03 55 1d 25 04 |........0...U.%.| +00000100 0c 30 0a 06 08 2b 06 01 05 05 07 03 02 30 0c 06 |.0...+.......0..| +00000110 03 55 1d 13 01 01 ff 04 02 30 00 30 1f 06 03 55 |.U.......0.0...U| +00000120 1d 23 04 18 30 16 80 14 11 73 6e 47 18 5d a6 21 |.#..0....snG.].!| +00000130 1a 1b 4c 61 26 39 c8 fb 5e e9 74 24 30 1e 06 03 |..La&9..^.t$0...| +00000140 55 1d 11 04 17 30 15 82 13 74 65 73 74 2e 67 6f |U....0...test.go| +00000150 6c 61 6e 67 2e 65 78 61 6d 70 6c 65 30 0d 06 09 |lang.example0...| +00000160 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 |*.H.............| +00000170 5a 23 5c 55 e3 ab 4b b3 e4 cb 01 07 ab 4d 4c ef |Z#\U..K......ML.| +00000180 05 36 66 3e fb 3e 93 38 97 1c 79 ae 0b a8 f1 ab |.6f>.>.8..y.....| +00000190 b6 4e b3 d8 7e 0e 92 43 14 0a ca 4a b0 1f 33 db |.N..~..C...J..3.| +000001a0 e3 cc ed 3c be f5 fc 6f f7 68 73 4d 0a 76 f3 7f |...<...o.hsM.v..| +000001b0 6d 09 0c 03 40 50 96 0e 97 f2 0d c7 f1 2e 55 b9 |m...@P........U.| +000001c0 41 83 74 08 96 18 dd cd 19 06 c1 e5 f6 08 e5 76 |A.t............v| +000001d0 0d 01 5a 06 4c eb 41 8c 42 06 49 dd 13 cb 89 17 |..Z.L.A.B.I.....| +000001e0 d4 2e 5d 52 43 b6 ed 09 17 d0 01 68 fc 5e 1c 2e |..]RC......h.^..| +000001f0 aa 80 97 b4 19 51 78 61 19 cb 59 d7 5c fe 19 22 |.....Qxa..Y.\.."| +00000200 7b 70 28 04 a8 23 8f 95 c5 72 1b d9 97 d1 de cd |{p(..#...r......| +00000210 72 80 da 35 40 c5 56 93 91 49 8f e9 94 b2 7d 87 |r..5@.V..I....}.| +00000220 57 b1 56 87 0a 98 e5 a6 a1 d5 72 81 1f 45 ee b5 |W.V.......r..E..| +00000230 4a 1a 43 49 ca ed 27 15 cf d9 b7 da 82 67 ba cb |J.CI..'......g..| +00000240 3c 5e eb 11 73 9d 93 d6 a1 b3 04 57 b1 6e b2 90 |<^..s......W.n..| +00000250 6b 82 cb 12 63 71 63 2a be 5b 17 46 aa 0a 5f 85 |k...cqc*.[.F.._.| +00000260 48 12 7a fc 20 17 cd df 3d 6a f0 a1 db 75 6f 5f |H.z. ...=j...uo_| +00000270 16 03 03 00 25 10 00 00 21 20 c2 7a 91 0a e7 72 |....%...! .z...r| +00000280 23 90 20 6c e0 44 70 bf 79 7b 49 e1 94 57 c1 9c |#. l.Dp.y{I..W..| +00000290 a9 e0 68 fb a7 87 f1 49 a8 4d 16 03 03 00 4f 0f |..h....I.M....O.| +000002a0 00 00 4b 04 03 00 47 30 45 02 21 00 dd e3 35 f0 |..K...G0E.!...5.| +000002b0 78 c0 4a 79 fb 36 a3 1b 84 53 79 db c3 cb 18 5e |x.Jy.6...Sy....^| +000002c0 b1 b0 94 1c 7c 39 1d 95 fc b7 a7 67 02 20 22 39 |....|9.....g. "9| +000002d0 97 57 20 b0 f0 bb 78 03 46 d5 2f 56 ec 02 df 21 |.W ...x.F./V...!| +000002e0 65 19 cf d2 7f f8 7e 6e 5b 72 31 0e 5f 53 14 03 |e.....~n[r1._S..| +000002f0 03 00 01 01 16 03 03 00 20 d4 08 e7 8a 50 ca 13 |........ ....P..| +00000300 65 90 18 c5 6a c6 85 01 63 91 d8 65 dd 2e cd 3f |e...j...c..e...?| +00000310 1e 72 5c d2 6b 14 31 4d 09 |.r\.k.1M.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 fb 17 b2 fe ce |.......... .....| -00000010 4d 81 c6 f3 66 8f 71 16 6e ca fe 8f a3 8e 10 bb |M...f.q.n.......| -00000020 63 f2 6b 33 b9 42 73 db 34 2d 91 17 03 03 00 1d |c.k3.Bs.4-......| -00000030 d2 95 6c f2 a1 89 bd 03 7a 94 8e 49 ea 6b 6d 4d |..l.....z..I.kmM| -00000040 14 18 80 ea 7a 17 27 c9 d4 9a 4f b9 42 15 03 03 |....z.'...O.B...| -00000050 00 12 d7 d6 b3 f1 8a d0 d6 5b e4 11 bf 30 9e 4c |.........[...0.L| -00000060 94 c8 30 e7 |..0.| +00000000 14 03 03 00 01 01 16 03 03 00 20 5a e8 03 ea bf |.......... Z....| +00000010 83 83 ee 7f 67 54 57 8b 23 51 bd 01 52 a2 88 27 |....gTW.#Q..R..'| +00000020 29 55 38 74 4a 6d 7c d9 95 4d c9 17 03 03 00 1d |)U8tJm|..M......| +00000030 c9 a1 1f 7c 26 8c 37 f2 2a 1c 62 94 3e aa 0d 15 |...|&.7.*.b.>...| +00000040 03 94 f5 cd df dd eb fb e3 50 ee 5e c5 15 03 03 |.........P.^....| +00000050 00 12 0e 19 4b 1f 17 57 39 ef 58 a2 8b eb e4 d8 |....K..W9.X.....| +00000060 b6 38 a4 53 |.8.S| diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given index 39b93ce2ccc70f..b7b7eed79d74c7 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndEd25519Given @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 d5 01 00 00 d1 03 03 3b 97 d2 a9 88 |...........;....| -00000010 0d f4 cd f9 6e 41 c3 ee f6 dd ba 28 a4 22 08 99 |....nA.....(."..| -00000020 1a 94 26 4b 49 bd e4 4f 10 70 15 00 00 38 c0 2c |..&KI..O.p...8.,| +00000000 16 03 01 00 d5 01 00 00 d1 03 03 9a 10 f8 00 e6 |................| +00000010 c5 b1 d3 4b 40 4b 0f 0b b2 af 13 cb a3 6b fa 6d |...K@K.......k.m| +00000020 47 ba 1f 09 4b 27 ed ce 83 93 13 00 00 38 c0 2c |G...K'.......8.,| 00000030 c0 30 00 9f cc a9 cc a8 cc aa c0 2b c0 2f 00 9e |.0.........+./..| 00000040 c0 24 c0 28 00 6b c0 23 c0 27 00 67 c0 0a c0 14 |.$.(.k.#.'.g....| 00000050 00 39 c0 09 c0 13 00 33 00 9d 00 9c 00 3d 00 3c |.9.....3.....=.<| @@ -56,56 +56,71 @@ 00000270 31 ac 65 68 30 3c 5d fe 9e 22 ac 58 f8 1d 99 e0 |1.eh0<]..".X....| 00000280 5e c2 c4 ad e5 74 8a a8 08 5d fd b9 01 38 25 8f |^....t...]...8%.| 00000290 be 9d 4c 57 02 69 76 49 cb 6c cf 3d 5f 5b 07 a8 |..LW.ivI.l.=_[..| -000002a0 36 9a 16 03 03 00 73 0c 00 00 6f 03 00 1d 20 bb |6.....s...o... .| +000002a0 36 9a 16 03 03 00 74 0c 00 00 70 03 00 1d 20 bb |6.....t...p... .| 000002b0 af fa db e3 de 3a 65 10 e8 9b 4b be c7 04 31 92 |.....:e...K...1.| 000002c0 72 a2 39 97 24 0b 71 bb 86 4f f4 cb 98 39 57 04 |r.9.$.q..O...9W.| -000002d0 03 00 47 30 45 02 20 0c 5e e8 45 2e 4a f4 20 05 |..G0E. .^.E.J. .| -000002e0 7e 10 43 55 4f 56 d8 00 5a 36 ae 59 1e 2e ab 3f |~.CUOV..Z6.Y...?| -000002f0 1a 04 ce 38 9c a2 63 02 21 00 bc 54 ee 9b 0f eb |...8..c.!..T....| -00000300 4e d5 36 0c ab 0e e1 11 8d d3 fa 5b 40 c1 96 f2 |N.6........[@...| -00000310 39 d5 60 61 f7 de 10 d8 bd ab 16 03 03 00 39 0d |9.`a..........9.| -00000320 00 00 35 02 01 40 00 14 08 04 04 03 08 07 08 05 |..5..@..........| -00000330 08 06 04 01 05 01 06 01 05 03 06 03 00 1a 00 18 |................| -00000340 30 16 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 |0.1.0...U....Cli| -00000350 65 6e 74 20 52 6f 6f 74 16 03 03 00 04 0e 00 00 |ent Root........| -00000360 00 |.| +000002d0 03 00 48 30 46 02 21 00 f2 44 bb 66 1e d4 70 e8 |..H0F.!..D.f..p.| +000002e0 40 fd bc 2d 17 22 7f 96 d7 23 43 85 ec 98 80 dc |@..-."...#C.....| +000002f0 29 51 4b 1e 80 40 fe ce 02 21 00 dc 85 94 28 53 |)QK..@...!....(S| +00000300 cc 9d 33 0a df d1 eb fb 4a 9a e5 9c 1f ca af 7c |..3.....J......|| +00000310 eb ac 1c 17 5a c0 8b 7b b4 cd 1e 16 03 03 00 39 |....Z..{.......9| +00000320 0d 00 00 35 02 01 40 00 14 08 04 04 03 08 07 08 |...5..@.........| +00000330 05 08 06 04 01 05 01 06 01 05 03 06 03 00 1a 00 |................| +00000340 18 30 16 31 14 30 12 06 03 55 04 03 13 0b 43 6c |.0.1.0...U....Cl| +00000350 69 65 6e 74 20 52 6f 6f 74 16 03 03 00 04 0e 00 |ient Root.......| +00000360 00 00 |..| >>> Flow 3 (client to server) -00000000 16 03 03 01 3c 0b 00 01 38 00 01 35 00 01 32 30 |....<...8..5..20| -00000010 82 01 2e 30 81 e1 a0 03 02 01 02 02 10 17 d1 81 |...0............| -00000020 93 be 2a 8c 21 20 10 25 15 e8 34 23 4f 30 05 06 |..*.! .%..4#O0..| -00000030 03 2b 65 70 30 12 31 10 30 0e 06 03 55 04 0a 13 |.+ep0.1.0...U...| -00000040 07 41 63 6d 65 20 43 6f 30 1e 17 0d 31 39 30 35 |.Acme Co0...1905| -00000050 31 36 32 31 35 34 32 36 5a 17 0d 32 30 30 35 31 |16215426Z..20051| -00000060 35 32 31 35 34 32 36 5a 30 12 31 10 30 0e 06 03 |5215426Z0.1.0...| -00000070 55 04 0a 13 07 41 63 6d 65 20 43 6f 30 2a 30 05 |U....Acme Co0*0.| -00000080 06 03 2b 65 70 03 21 00 0b e0 b5 60 b5 e2 79 30 |..+ep.!....`..y0| -00000090 3d be e3 1e e0 50 b1 04 c8 6d c7 78 6c 69 2f c5 |=....P...m.xli/.| -000000a0 14 ad 9a 63 6f 79 12 91 a3 4d 30 4b 30 0e 06 03 |...coy...M0K0...| -000000b0 55 1d 0f 01 01 ff 04 04 03 02 05 a0 30 13 06 03 |U...........0...| -000000c0 55 1d 25 04 0c 30 0a 06 08 2b 06 01 05 05 07 03 |U.%..0...+......| -000000d0 02 30 0c 06 03 55 1d 13 01 01 ff 04 02 30 00 30 |.0...U.......0.0| -000000e0 16 06 03 55 1d 11 04 0f 30 0d 82 0b 65 78 61 6d |...U....0...exam| -000000f0 70 6c 65 2e 63 6f 6d 30 05 06 03 2b 65 70 03 41 |ple.com0...+ep.A| -00000100 00 fc 19 17 2a 94 a5 31 fa 29 c8 2e 7f 5b a0 5d |....*..1.)...[.]| -00000110 8a 4e 34 40 39 d6 b3 10 dc 19 fe a0 22 71 b3 f5 |.N4@9......."q..| -00000120 8f a1 58 0d cd f4 f1 85 24 bf e6 3d 14 df df ed |..X.....$..=....| -00000130 0e e1 17 d8 11 a2 60 d0 8a 37 23 2a c2 46 aa 3a |......`..7#*.F.:| -00000140 08 16 03 03 00 25 10 00 00 21 20 5d a4 d6 42 d7 |.....%...! ]..B.| -00000150 34 89 0d fc d1 8c 06 90 11 4e a8 dc bc 82 d5 e7 |4........N......| -00000160 19 07 ca f5 8a 99 35 e2 97 79 14 16 03 03 00 48 |......5..y.....H| -00000170 0f 00 00 44 08 07 00 40 19 d9 40 71 12 57 0f de |...D...@..@q.W..| -00000180 40 16 7a fd 79 f9 cd 0b 07 e5 f4 1c 0c 02 17 32 |@.z.y..........2| -00000190 51 77 7d 27 ec 04 04 0b 65 67 ab 99 20 7c 7d fe |Qw}'....eg.. |}.| -000001a0 aa 43 e6 5e 3e 82 97 28 af 32 96 4e 9a 37 bf ea |.C.^>..(.2.N.7..| -000001b0 cc 7d e7 32 dd a3 0e 04 14 03 03 00 01 01 16 03 |.}.2............| -000001c0 03 00 20 ed 75 b8 0c 6a 07 88 9d 90 67 3d f7 84 |.. .u..j....g=..| -000001d0 9a 29 a7 cb 3f 23 13 3e 27 ad 57 53 65 fc 50 66 |.)..?#.>'.WSe.Pf| -000001e0 b0 2a a0 |.*.| +00000000 16 03 03 02 38 0b 00 02 34 00 02 31 00 02 2e 30 |....8...4..1...0| +00000010 82 02 2a 30 82 01 12 a0 03 02 01 02 02 01 0e 30 |..*0...........0| +00000020 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 16 |...*.H........0.| +00000030 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 65 6e |1.0...U....Clien| +00000040 74 20 52 6f 6f 74 30 1e 17 0d 31 36 30 37 31 32 |t Root0...160712| +00000050 31 37 33 32 30 39 5a 17 0d 31 37 30 31 32 38 31 |173209Z..1701281| +00000060 37 33 32 30 39 5a 30 1d 31 1b 30 19 06 03 55 04 |73209Z0.1.0...U.| +00000070 03 13 12 63 6c 69 65 6e 74 41 75 74 68 20 45 64 |...clientAuth Ed| +00000080 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 |255190*0...+ep.!| +00000090 00 95 93 0c 4a e7 3d fc 5f 64 31 26 0a f5 a4 5e |....J.=._d1&...^| +000000a0 5f 5f 2b 11 bf 53 82 8f d6 fd b5 47 1d 57 c0 d5 |__+..S.....G.W..| +000000b0 47 a3 76 30 74 30 0e 06 03 55 1d 0f 01 01 ff 04 |G.v0t0...U......| +000000c0 04 03 02 07 80 30 13 06 03 55 1d 25 04 0c 30 0a |.....0...U.%..0.| +000000d0 06 08 2b 06 01 05 05 07 03 02 30 0c 06 03 55 1d |..+.......0...U.| +000000e0 13 01 01 ff 04 02 30 00 30 1f 06 03 55 1d 23 04 |......0.0...U.#.| +000000f0 18 30 16 80 14 11 73 6e 47 18 5d a6 21 1a 1b 4c |.0....snG.].!..L| +00000100 61 26 39 c8 fb 5e e9 74 24 30 1e 06 03 55 1d 11 |a&9..^.t$0...U..| +00000110 04 17 30 15 82 13 74 65 73 74 2e 67 6f 6c 61 6e |..0...test.golan| +00000120 67 2e 65 78 61 6d 70 6c 65 30 0d 06 09 2a 86 48 |g.example0...*.H| +00000130 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 67 9f 96 |.............g..| +00000140 53 a9 62 a3 48 ce 56 44 7c b2 05 62 fe 91 be 6c |S.b.H.VD|..b...l| +00000150 ca 1c d9 94 e2 ee 9e 3a 9b ee 83 e3 86 a2 1f 6a |.......:.......j| +00000160 44 72 a4 4d c8 68 72 e4 31 97 2d bc 36 e4 32 53 |Dr.M.hr.1.-.6.2S| +00000170 c4 7e 4a 41 84 81 bd a6 f2 e7 7f 7f d8 ee 2b af |.~JA..........+.| +00000180 31 92 6c 1d 0a 26 1d f0 67 e3 a4 ed 5f f6 6f 71 |1.l..&..g..._.oq| +00000190 13 63 61 0c f5 90 18 08 1e 68 c4 a3 19 a0 98 c8 |.ca......h......| +000001a0 f2 a9 c1 dc 68 6b f1 11 ff a8 b7 ca 89 6e 1a f7 |....hk.......n..| +000001b0 3a a1 4e c9 bc 31 dc dd 0d 21 36 c6 bc dc 1c 59 |:.N..1...!6....Y| +000001c0 7f 15 d5 ec 60 ff f7 f4 7b 39 fe 56 b3 0a b3 47 |....`...{9.V...G| +000001d0 34 7d 21 60 27 3f fb 22 8a 0d 12 e0 79 aa 99 cd |4}!`'?."....y...| +000001e0 a7 d8 db 92 57 d4 c3 c0 78 06 18 ae 0d fc 7b 70 |....W...x.....{p| +000001f0 d9 35 7b d7 18 cf 5b d1 8d 89 cf c5 83 dc fd 37 |.5{...[........7| +00000200 1f 12 93 80 df 12 a8 33 9d fe 2f 9a 91 55 fb f3 |.......3../..U..| +00000210 b9 07 b7 a5 fc ba b8 a3 9a b8 5d 00 38 4e a9 55 |..........].8N.U| +00000220 b8 b0 e8 3a 09 6f 7e 87 ff 2b a5 85 e0 f5 3d 67 |...:.o~..+....=g| +00000230 04 07 b0 5a 92 98 18 6e da 35 4e 77 ad 16 03 03 |...Z...n.5Nw....| +00000240 00 25 10 00 00 21 20 fc 6f c3 0f 73 19 53 5b 02 |.%...! .o..s.S[.| +00000250 9d 88 07 18 eb 72 c2 fc 54 4a 45 df c2 90 b1 ed |.....r..TJE.....| +00000260 2d 43 8f 6d 89 aa 3b 16 03 03 00 48 0f 00 00 44 |-C.m..;....H...D| +00000270 08 07 00 40 45 9c 14 cd a3 7b 19 3a 09 db 72 1a |...@E....{.:..r.| +00000280 99 66 0a 19 dd 5a 29 65 47 84 ae ad 53 f0 39 3c |.f...Z)eG...S.9<| +00000290 33 c0 22 e6 02 1d 0d fe 02 93 df ac eb 4c 7a e7 |3."..........Lz.| +000002a0 35 01 5a 42 00 93 ae 01 de 47 7b af 62 59 70 3f |5.ZB.....G{.bYp?| +000002b0 fa b9 d2 04 14 03 03 00 01 01 16 03 03 00 20 2f |.............. /| +000002c0 10 e1 19 1c bb 4a 5e 3b 2b 05 40 6c 33 dc 88 4b |.....J^;+.@l3..K| +000002d0 85 3f fe 0a 7a f4 21 f6 2d b6 d7 45 84 3c ad |.?..z.!.-..E.<.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 db 8f 70 b7 7d |.......... ..p.}| -00000010 f5 9c 7a 6c 03 d0 0b 29 79 4e c1 ba 92 b9 8f f7 |..zl...)yN......| -00000020 c9 1b 7c fd 56 0a e7 f6 b6 5c 45 17 03 03 00 1d |..|.V....\E.....| -00000030 a7 58 6c c7 de 70 d1 51 4e f4 80 2f 9a c9 48 45 |.Xl..p.QN../..HE| -00000040 a5 08 53 40 82 2b 8b ac 97 66 af 71 cd 15 03 03 |..S@.+...f.q....| -00000050 00 12 9c 4d 4b f4 4d 08 19 9b 5a 28 8e 0b 52 92 |...MK.M...Z(..R.| -00000060 19 40 91 81 |.@..| +00000000 14 03 03 00 01 01 16 03 03 00 20 c8 94 f1 89 7a |.......... ....z| +00000010 68 47 9a 63 94 af 9c d1 f1 73 25 34 ac 16 24 d6 |hG.c.....s%4..$.| +00000020 99 58 97 58 82 3b 70 d4 a1 c0 e6 17 03 03 00 1d |.X.X.;p.........| +00000030 0e 8f 98 5e 85 39 a9 78 23 7f 7d a4 04 96 c0 12 |...^.9.x#.}.....| +00000040 eb 5f b8 44 b5 2c 60 25 a7 5d 32 02 02 15 03 03 |._.D.,`%.]2.....| +00000050 00 12 d0 e5 70 ef 3a b3 d3 ce c2 78 05 89 42 3d |....p.:....x..B=| +00000060 9b 83 da 35 |...5| diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven index f5fff171f90104..c82e15c81eb4b6 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndGiven @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 d5 01 00 00 d1 03 03 8c 6a 6b f3 b3 |............jk..| -00000010 c2 ba 3b e8 11 73 e8 61 b3 2c 65 b8 96 c7 e1 c3 |..;..s.a.,e.....| -00000020 25 57 6d ad 39 74 b7 e8 e2 09 e5 00 00 38 c0 2c |%Wm.9t.......8.,| +00000000 16 03 01 00 d5 01 00 00 d1 03 03 0e 69 30 2f 48 |............i0/H| +00000010 b3 42 fd cd 72 d8 77 f2 6b 06 4d f7 93 18 bf 60 |.B..r.w.k.M....`| +00000020 8d 2f f8 05 2e f7 3d f9 34 a5 35 00 00 38 c0 2c |./....=.4.5..8.,| 00000030 c0 30 00 9f cc a9 cc a8 cc aa c0 2b c0 2f 00 9e |.0.........+./..| 00000040 c0 24 c0 28 00 6b c0 23 c0 27 00 67 c0 0a c0 14 |.$.(.k.#.'.g....| 00000050 00 39 c0 09 c0 13 00 33 00 9d 00 9c 00 3d 00 3c |.9.....3.....=.<| @@ -56,71 +56,99 @@ 00000270 31 ac 65 68 30 3c 5d fe 9e 22 ac 58 f8 1d 99 e0 |1.eh0<]..".X....| 00000280 5e c2 c4 ad e5 74 8a a8 08 5d fd b9 01 38 25 8f |^....t...]...8%.| 00000290 be 9d 4c 57 02 69 76 49 cb 6c cf 3d 5f 5b 07 a8 |..LW.ivI.l.=_[..| -000002a0 36 9a 16 03 03 00 72 0c 00 00 6e 03 00 1d 20 bb |6.....r...n... .| +000002a0 36 9a 16 03 03 00 73 0c 00 00 6f 03 00 1d 20 bb |6.....s...o... .| 000002b0 af fa db e3 de 3a 65 10 e8 9b 4b be c7 04 31 92 |.....:e...K...1.| 000002c0 72 a2 39 97 24 0b 71 bb 86 4f f4 cb 98 39 57 04 |r.9.$.q..O...9W.| -000002d0 03 00 46 30 44 02 20 1b a9 64 63 17 99 b0 a0 d5 |..F0D. ..dc.....| -000002e0 a1 27 8c fa 47 5f 0c 7b bf 42 93 30 fb 09 33 d9 |.'..G_.{.B.0..3.| -000002f0 24 98 4c 45 76 4b 30 02 20 2d 17 57 91 e0 d5 64 |$.LEvK0. -.W...d| -00000300 69 16 ec 93 c4 c5 f6 fd a9 56 37 7c b5 38 be 3e |i........V7|.8.>| -00000310 4d a4 95 3c 55 c5 66 e8 d3 16 03 03 00 39 0d 00 |M..%| +000002e0 f5 d8 49 47 81 7d 9f 7e 15 d3 00 aa 52 76 9b de |..IG.}.~....Rv..| +000002f0 62 b2 dc 51 92 9b ec 02 21 00 b1 b5 c1 f5 df f2 |b..Q....!.......| +00000300 a6 f9 19 a2 b6 28 5f a0 4e f7 bc 98 d0 ec ee e5 |.....(_.N.......| +00000310 85 9b 2c 00 2a 0c e6 5c a9 bf 16 03 03 00 39 0d |..,.*..\......9.| +00000320 00 00 35 02 01 40 00 14 08 04 04 03 08 07 08 05 |..5..@..........| +00000330 08 06 04 01 05 01 06 01 05 03 06 03 00 1a 00 18 |................| +00000340 30 16 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 |0.1.0...U....Cli| +00000350 65 6e 74 20 52 6f 6f 74 16 03 03 00 04 0e 00 00 |ent Root........| +00000360 00 |.| >>> Flow 3 (client to server) -00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| -00000010 82 01 ef 30 82 01 58 a0 03 02 01 02 02 10 5c 19 |...0..X.......\.| -00000020 c1 89 65 83 55 6f dc 0b c9 b9 93 9f e9 bc 30 0d |..e.Uo........0.| -00000030 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 12 31 |..*.H........0.1| -00000040 10 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 |.0...U....Acme C| -00000050 6f 30 1e 17 0d 31 36 30 38 31 37 32 31 35 32 33 |o0...16081721523| -00000060 31 5a 17 0d 31 37 30 38 31 37 32 31 35 32 33 31 |1Z..170817215231| -00000070 5a 30 12 31 10 30 0e 06 03 55 04 0a 13 07 41 63 |Z0.1.0...U....Ac| -00000080 6d 65 20 43 6f 30 81 9f 30 0d 06 09 2a 86 48 86 |me Co0..0...*.H.| -00000090 f7 0d 01 01 01 05 00 03 81 8d 00 30 81 89 02 81 |...........0....| -000000a0 81 00 ba 6f aa 86 bd cf bf 9f f2 ef 5c 94 60 78 |...o........\.`x| -000000b0 6f e8 13 f2 d1 96 6f cd d9 32 6e 22 37 ce 41 f9 |o.....o..2n"7.A.| -000000c0 ca 5d 29 ac e1 27 da 61 a2 ee 81 cb 10 c7 df 34 |.])..'.a.......4| -000000d0 58 95 86 e9 3d 19 e6 5c 27 73 60 c8 8d 78 02 f4 |X...=..\'s`..x..| -000000e0 1d a4 98 09 a3 19 70 69 3c 25 62 66 2a ab 22 23 |......pi<%bf*."#| -000000f0 c5 7b 85 38 4f 2e 09 73 32 a7 bd 3e 9b ad ca 84 |.{.8O..s2..>....| -00000100 07 e6 0f 3a ff 77 c5 9d 41 85 00 8a b6 9b ee b0 |...:.w..A.......| -00000110 a4 3f 2d 4c 4c e6 42 3e bb 51 c8 dd 48 54 f4 0c |.?-LL.B>.Q..HT..| -00000120 8e 47 02 03 01 00 01 a3 46 30 44 30 0e 06 03 55 |.G......F0D0...U| -00000130 1d 0f 01 01 ff 04 04 03 02 05 a0 30 13 06 03 55 |...........0...U| -00000140 1d 25 04 0c 30 0a 06 08 2b 06 01 05 05 07 03 01 |.%..0...+.......| -00000150 30 0c 06 03 55 1d 13 01 01 ff 04 02 30 00 30 0f |0...U.......0.0.| -00000160 06 03 55 1d 11 04 08 30 06 87 04 7f 00 00 01 30 |..U....0.......0| -00000170 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 81 |...*.H..........| -00000180 81 00 46 ab 44 a2 fb 28 54 f8 5a 67 f8 62 94 f1 |..F.D..(T.Zg.b..| -00000190 9a b2 18 9e f2 b1 de 1d 7e 6f 76 95 a9 ba e7 5d |........~ov....]| -000001a0 a8 16 6c 9c f7 09 d3 37 e4 4b 2b 36 7c 01 ad 41 |..l....7.K+6|..A| -000001b0 d2 32 d8 c3 d2 93 f9 10 6b 8e 95 b9 2c 17 8a a3 |.2......k...,...| -000001c0 44 48 bc 59 13 83 16 04 88 a4 81 5c 25 0d 98 0c |DH.Y.......\%...| -000001d0 ac 11 b1 28 56 be 1d cd 61 62 84 09 bf d6 80 c6 |...(V...ab......| -000001e0 45 8d 82 2c b4 d8 83 9b db c9 22 b7 2a 12 11 7b |E..,......".*..{| -000001f0 fa 02 3b c1 c9 ff ea c9 9d a8 49 d3 95 d7 d5 0e |..;.......I.....| -00000200 e5 35 16 03 03 00 25 10 00 00 21 20 16 07 b6 ed |.5....%...! ....| -00000210 6e d2 9c 5e ab 34 52 a8 59 e0 28 d6 2a 91 46 ca |n..^.4R.Y.(.*.F.| -00000220 8e 4f 59 b9 21 0b e5 58 13 87 a2 6b 16 03 03 00 |.OY.!..X...k....| -00000230 88 0f 00 00 84 08 04 00 80 02 86 d5 90 14 6a 32 |..............j2| -00000240 9f 9e a2 ed 33 84 02 6f cc e9 de 2d 2b 7c a6 17 |....3..o...-+|..| -00000250 9c 12 8a b7 13 c3 38 eb b5 57 54 ca 91 12 44 a1 |......8..WT...D.| -00000260 cb 46 4e 39 9f 64 66 93 72 66 41 a8 c8 bf 19 a2 |.FN9.df.rfA.....| -00000270 7a b8 4c 12 ef 94 c3 9a 3d 9c 8d 18 6f 51 e1 67 |z.L.....=...oQ.g| -00000280 25 be 59 d0 22 a7 07 a0 ef 64 3a b1 ca ce e0 e8 |%.Y."....d:.....| -00000290 8e 6a 1b f9 cd 31 98 9a 2e f1 c1 f7 01 b2 87 51 |.j...1.........Q| -000002a0 9b d5 11 12 7b b9 2d b4 d4 8c 1f e1 3d f7 34 92 |....{.-.....=.4.| -000002b0 3d eb a7 24 a5 ad 58 75 c9 14 03 03 00 01 01 16 |=..$..Xu........| -000002c0 03 03 00 20 a0 5c 70 cd f7 f3 ed a8 6e fd 9f 52 |... .\p.....n..R| -000002d0 d1 a0 e5 4c 99 9d fb 42 0a 71 90 13 af e6 93 2e |...L...B.q......| -000002e0 4c 72 4f 13 |LrO.| +00000000 16 03 03 03 33 0b 00 03 2f 00 03 2c 00 03 29 30 |....3.../..,..)0| +00000010 82 03 25 30 82 02 0d a0 03 02 01 02 02 01 0c 30 |..%0...........0| +00000020 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 16 |...*.H........0.| +00000030 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 65 6e |1.0...U....Clien| +00000040 74 20 52 6f 6f 74 30 1e 17 0d 31 36 30 37 31 32 |t Root0...160712| +00000050 31 37 33 32 30 39 5a 17 0d 31 37 30 31 32 38 31 |173209Z..1701281| +00000060 37 33 32 30 39 5a 30 1e 31 1c 30 1a 06 03 55 04 |73209Z0.1.0...U.| +00000070 03 13 13 63 6c 69 65 6e 74 41 75 74 68 20 52 53 |...clientAuth RS| +00000080 41 20 32 30 34 38 30 82 01 22 30 0d 06 09 2a 86 |A 20480.."0...*.| +00000090 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 82 |H.............0.| +000000a0 01 0a 02 82 01 01 00 ec 04 4a f3 24 ba 53 43 8b |.........J.$.SC.| +000000b0 a0 36 c8 a0 4b 5c 73 e6 46 78 ba c1 33 2d 5b e5 |.6..K\s.Fx..3-[.| +000000c0 6a cb d1 86 94 61 55 e8 fb f6 ea ae eb ca e2 a7 |j....aU.........| +000000d0 c2 04 4f f7 ed 09 d4 2a b1 c3 b4 68 b5 ab d3 71 |..O....*...h...q| +000000e0 ac e0 0e 0e 74 d4 c3 2b 3e f2 41 58 6b 85 a2 49 |....t..+>.AXk..I| +000000f0 e2 4c 0e c5 76 44 b6 a8 1f 8c 98 90 3f bb 0c d4 |.L..vD......?...| +00000100 c0 17 d3 af 05 66 45 05 81 c6 94 b0 8a fc b6 a9 |.....fE.........| +00000110 ed 91 15 9a 76 ad b2 b0 01 53 d0 ff 50 4b fd 85 |....v....S..PK..| +00000120 e1 ba fa 1b 2c 19 92 30 80 c8 4c e2 7f 32 b1 ef |....,..0..L..2..| +00000130 04 70 59 38 79 5a a6 96 27 51 2a 69 a6 62 f5 b8 |.pY8yZ..'Q*i.b..| +00000140 a8 c7 48 c6 4b 82 97 71 a4 db 90 5a 0b 80 11 a3 |..H.K..q...Z....| +00000150 15 6f a8 30 cc 5b db ca 97 c4 97 8e f3 50 56 c0 |.o.0.[.......PV.| +00000160 7c f4 27 5e 58 59 49 e9 dd a8 ad 43 fa e3 59 5d ||.'^XYI....C..Y]| +00000170 fe 25 0f 6a e8 40 12 b8 19 0c c5 7a a1 72 8e 22 |.%.j.@.....z.r."| +00000180 d0 cc 29 41 34 62 db 53 1b 90 37 1c 82 a9 5d b5 |..)A4b.S..7...].| +00000190 ef 37 ec 0a 7d f3 3f d5 1c dd 72 8c fd 1a 93 c4 |.7..}.?...r.....| +000001a0 83 86 ea b0 78 01 b1 02 03 01 00 01 a3 76 30 74 |....x........v0t| +000001b0 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 07 80 |0...U...........| +000001c0 30 13 06 03 55 1d 25 04 0c 30 0a 06 08 2b 06 01 |0...U.%..0...+..| +000001d0 05 05 07 03 02 30 0c 06 03 55 1d 13 01 01 ff 04 |.....0...U......| +000001e0 02 30 00 30 1f 06 03 55 1d 23 04 18 30 16 80 14 |.0.0...U.#..0...| +000001f0 11 73 6e 47 18 5d a6 21 1a 1b 4c 61 26 39 c8 fb |.snG.].!..La&9..| +00000200 5e e9 74 24 30 1e 06 03 55 1d 11 04 17 30 15 82 |^.t$0...U....0..| +00000210 13 74 65 73 74 2e 67 6f 6c 61 6e 67 2e 65 78 61 |.test.golang.exa| +00000220 6d 70 6c 65 30 0d 06 09 2a 86 48 86 f7 0d 01 01 |mple0...*.H.....| +00000230 0b 05 00 03 82 01 01 00 43 05 b5 0e c5 90 59 8b |........C.....Y.| +00000240 0d 73 5e df 19 66 61 4b b9 51 c5 42 68 88 a4 40 |.s^..faK.Q.Bh..@| +00000250 4d 5c e5 12 b5 d1 61 26 d5 aa f8 95 76 f3 5b 74 |M\....a&....v.[t| +00000260 0f 32 2b 3b 75 06 d4 a5 1b fe 01 d0 52 dc be 32 |.2+;u.......R..2| +00000270 20 86 46 a4 44 fe 37 a5 f8 39 74 99 5c 58 c0 79 | .F.D.7..9t.\X.y| +00000280 9b e3 9a ae 27 91 92 5e 50 f1 83 86 5c e6 e3 0c |....'..^P...\...| +00000290 9b c3 5d dd 10 92 28 30 f1 01 b0 2a 7e e5 b7 e0 |..]...(0...*~...| +000002a0 00 e7 07 90 7c 4b 59 e4 0d 3c 72 11 cd 6d b1 80 |....|KY...L-]0.V".| +000002d0 7f 1a 06 af cd 38 5a 42 75 80 6d 2c 84 07 c6 5a |.....8ZBu.m,...Z| +000002e0 8b 11 96 11 52 dc ec 1f 96 39 4f 0e 60 02 40 05 |....R....9O.`.@.| +000002f0 6a 2f 8f 00 78 35 0f 82 46 50 64 a6 c0 e2 d5 63 |j/..x5..FPd....c| +00000300 3a 5a 5f c1 d8 eb a7 7a 3e 9a 2e 0d 79 8b c9 bb |:Z_....z>...y...| +00000310 6f 99 d4 9a 71 ac 4b 4c 45 4e 4a df 0b 34 d9 c7 |o...q.KLENJ..4..| +00000320 d1 e9 80 d5 e5 af e5 50 58 a3 fe a2 c9 8b dd 28 |.......PX......(| +00000330 c8 e3 8f d1 a0 2c 7f ad 16 03 03 00 25 10 00 00 |.....,......%...| +00000340 21 20 78 50 d3 c6 3a 4a a9 be fa 10 24 fc 37 c7 |! xP..:J....$.7.| +00000350 56 af ac ea 12 46 f1 73 b3 ad 3e 8f e4 c1 31 a2 |V....F.s..>...1.| +00000360 c0 42 16 03 03 01 08 0f 00 01 04 08 04 01 00 d0 |.B..............| +00000370 c1 cb ec 74 2b a9 37 3f b1 58 2b 6b 13 b4 a7 db |...t+.7?.X+k....| +00000380 dc 4a 3e 41 a6 14 90 15 1b 9e b1 7d 45 43 b3 cc |.J>A.......}EC..| +00000390 4a 16 e3 03 61 05 f3 fa 35 8b 07 97 6c c3 b0 42 |J...a...5...l..B| +000003a0 ec ae 7b 13 5c 33 29 c5 bd a0 12 81 e1 ce c3 c6 |..{.\3).........| +000003b0 c3 38 be bf 8a a4 a7 07 5b fd 9e b5 b4 01 2c 2d |.8......[.....,-| +000003c0 57 71 99 a4 91 b0 a2 14 b7 87 49 ff 49 25 f6 d2 |Wq........I.I%..| +000003d0 40 c0 f4 6e 00 c5 be 45 1c 5b 7f e3 e3 f4 8c 36 |@..n...E.[.....6| +000003e0 71 07 ae 72 be 6b 5f b0 5a 4d a4 43 b6 70 c2 36 |q..r.k_.ZM.C.p.6| +000003f0 55 ef d1 0f 27 c6 4e ea af 00 7b 58 a2 47 c2 e3 |U...'.N...{X.G..| +00000400 26 4c 99 f6 23 d8 04 db 41 1c da 92 a8 ce a1 92 |&L..#...A.......| +00000410 ec 08 a6 96 a5 b9 71 33 8c 97 57 22 31 af c4 12 |......q3..W"1...| +00000420 dc 0c 13 bc 18 62 1e 46 b3 8a b9 56 71 d3 1b f4 |.....b.F...Vq...| +00000430 8c 93 8b c4 51 33 a9 db 65 2c 34 07 5b 80 3c 82 |....Q3..e,4.[.<.| +00000440 f0 de e5 89 87 cd 9f b6 cf ad ba 06 73 e6 90 6d |............s..m| +00000450 12 97 3a c0 eb dd df d9 aa 7d 62 ab 11 3b 08 0b |..:......}b..;..| +00000460 28 6c 97 24 4e 08 d9 03 a9 01 0b ef 18 ce 87 14 |(l.$N...........| +00000470 03 03 00 01 01 16 03 03 00 20 b9 01 bf 80 03 c7 |......... ......| +00000480 c9 52 58 ce bb b6 f9 f5 84 0f 73 e7 65 d9 7b 67 |.RX.......s.e.{g| +00000490 8b 91 6f f8 5b c9 25 75 b3 e1 |..o.[.%u..| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 fb 7a fd 20 9e |.......... .z. .| -00000010 40 47 ba 3c a5 76 15 7e 5b 09 ab 78 ae 97 74 fd |@G.<.v.~[..x..t.| -00000020 17 5b 96 fb 34 05 87 be ae d3 f5 17 03 03 00 1d |.[..4...........| -00000030 76 95 52 ef 92 46 1c 76 fc 1c d9 c4 0c 6c ce fe |v.R..F.v.....l..| -00000040 12 ac aa 80 58 79 05 da cd c6 a7 f1 69 15 03 03 |....Xy......i...| -00000050 00 12 bc 91 af 76 6a bf be 5e 09 8a 70 d7 8c d4 |.....vj..^..p...| -00000060 0a b6 fc dc |....| +00000000 14 03 03 00 01 01 16 03 03 00 20 7d 4f c0 5a bd |.......... }O.Z.| +00000010 1b d1 9f 9e ee 56 2f 80 55 d0 f6 d2 24 03 77 46 |.....V/.U...$.wF| +00000020 b7 c9 f4 98 a5 f4 8a ea a5 eb 7f 17 03 03 00 1d |................| +00000030 71 a6 34 48 20 b3 bf 3c de 7f ac 4f 4f 50 7b cd |q.4H ..<...OOP{.| +00000040 4a ed 1f be ed d9 ab f4 5b 69 99 b3 41 15 03 03 |J.......[i..A...| +00000050 00 12 35 ff 26 88 9c ef 1c e6 4d 45 53 23 f5 b1 |..5.&.....MES#..| +00000060 72 19 73 7a |r.sz| diff --git a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given index 4ed7a8821e750c..8be7fc0f785166 100644 --- a/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given +++ b/src/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndPKCS1v15Given @@ -1,7 +1,7 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 d5 01 00 00 d1 03 03 83 0d 63 5d 63 |.............c]c| -00000010 b6 27 d1 a6 20 89 66 f4 1f 76 34 57 08 14 0b c8 |.'.. .f..v4W....| -00000020 e0 e6 4d 94 8a 2f d3 ae af c5 dd 00 00 38 c0 2c |..M../.......8.,| +00000000 16 03 01 00 d5 01 00 00 d1 03 03 19 50 39 b5 fe |............P9..| +00000010 6a 3d cd be df 53 b8 5f a1 fc d6 2a a5 2e 7c b9 |j=...S._...*..|.| +00000020 c1 26 59 6a ea 38 bd 11 16 97 70 00 00 38 c0 2c |.&Yj.8....p..8.,| 00000030 c0 30 00 9f cc a9 cc a8 cc aa c0 2b c0 2f 00 9e |.0.........+./..| 00000040 c0 24 c0 28 00 6b c0 23 c0 27 00 67 c0 0a c0 14 |.$.(.k.#.'.g....| 00000050 00 39 c0 09 c0 13 00 33 00 9d 00 9c 00 3d 00 3c |.9.....3.....=.<| @@ -56,71 +56,99 @@ 00000270 31 ac 65 68 30 3c 5d fe 9e 22 ac 58 f8 1d 99 e0 |1.eh0<]..".X....| 00000280 5e c2 c4 ad e5 74 8a a8 08 5d fd b9 01 38 25 8f |^....t...]...8%.| 00000290 be 9d 4c 57 02 69 76 49 cb 6c cf 3d 5f 5b 07 a8 |..LW.ivI.l.=_[..| -000002a0 36 9a 16 03 03 00 72 0c 00 00 6e 03 00 1d 20 bb |6.....r...n... .| +000002a0 36 9a 16 03 03 00 74 0c 00 00 70 03 00 1d 20 bb |6.....t...p... .| 000002b0 af fa db e3 de 3a 65 10 e8 9b 4b be c7 04 31 92 |.....:e...K...1.| 000002c0 72 a2 39 97 24 0b 71 bb 86 4f f4 cb 98 39 57 04 |r.9.$.q..O...9W.| -000002d0 03 00 46 30 44 02 20 7e 37 c9 8a ca 3c bb bb d5 |..F0D. ~7...<...| -000002e0 77 97 80 18 53 68 f8 72 05 bf cf d9 93 7e ae 42 |w...Sh.r.....~.B| -000002f0 48 1c 35 21 f1 96 85 02 20 2b 8b 64 3d 88 36 fb |H.5!.... +.d=.6.| -00000300 1e 7f 38 4f 9e d7 32 51 43 a4 ad c5 34 3e 00 d6 |..8O..2QC...4>..| -00000310 bd 14 5f 56 a0 c1 8e 1b d3 16 03 03 00 39 0d 00 |.._V.........9..| -00000320 00 35 02 01 40 00 14 08 04 04 03 08 07 08 05 08 |.5..@...........| -00000330 06 04 01 05 01 06 01 05 03 06 03 00 1a 00 18 30 |...............0| -00000340 16 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 65 |.1.0...U....Clie| -00000350 6e 74 20 52 6f 6f 74 16 03 03 00 04 0e 00 00 00 |nt Root.........| +000002d0 03 00 48 30 46 02 21 00 c8 a7 8e be 4c cd 0c 33 |..H0F.!.....L..3| +000002e0 f5 0c dc 8a 82 6c 0d a8 4b 07 d0 b4 12 f0 00 05 |.....l..K.......| +000002f0 11 de 82 09 cc 0a 8a 7d 02 21 00 b0 83 9c ca 91 |.......}.!......| +00000300 41 51 f4 b1 1e a7 0d 85 19 9c 87 fa 94 7d 3b 0e |AQ...........};.| +00000310 a6 2d 1f 16 be 6f 7f e7 25 45 6d 16 03 03 00 39 |.-...o..%Em....9| +00000320 0d 00 00 35 02 01 40 00 14 08 04 04 03 08 07 08 |...5..@.........| +00000330 05 08 06 04 01 05 01 06 01 05 03 06 03 00 1a 00 |................| +00000340 18 30 16 31 14 30 12 06 03 55 04 03 13 0b 43 6c |.0.1.0...U....Cl| +00000350 69 65 6e 74 20 52 6f 6f 74 16 03 03 00 04 0e 00 |ient Root.......| +00000360 00 00 |..| >>> Flow 3 (client to server) -00000000 16 03 03 01 fd 0b 00 01 f9 00 01 f6 00 01 f3 30 |...............0| -00000010 82 01 ef 30 82 01 58 a0 03 02 01 02 02 10 5c 19 |...0..X.......\.| -00000020 c1 89 65 83 55 6f dc 0b c9 b9 93 9f e9 bc 30 0d |..e.Uo........0.| -00000030 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 12 31 |..*.H........0.1| -00000040 10 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 |.0...U....Acme C| -00000050 6f 30 1e 17 0d 31 36 30 38 31 37 32 31 35 32 33 |o0...16081721523| -00000060 31 5a 17 0d 31 37 30 38 31 37 32 31 35 32 33 31 |1Z..170817215231| -00000070 5a 30 12 31 10 30 0e 06 03 55 04 0a 13 07 41 63 |Z0.1.0...U....Ac| -00000080 6d 65 20 43 6f 30 81 9f 30 0d 06 09 2a 86 48 86 |me Co0..0...*.H.| -00000090 f7 0d 01 01 01 05 00 03 81 8d 00 30 81 89 02 81 |...........0....| -000000a0 81 00 ba 6f aa 86 bd cf bf 9f f2 ef 5c 94 60 78 |...o........\.`x| -000000b0 6f e8 13 f2 d1 96 6f cd d9 32 6e 22 37 ce 41 f9 |o.....o..2n"7.A.| -000000c0 ca 5d 29 ac e1 27 da 61 a2 ee 81 cb 10 c7 df 34 |.])..'.a.......4| -000000d0 58 95 86 e9 3d 19 e6 5c 27 73 60 c8 8d 78 02 f4 |X...=..\'s`..x..| -000000e0 1d a4 98 09 a3 19 70 69 3c 25 62 66 2a ab 22 23 |......pi<%bf*."#| -000000f0 c5 7b 85 38 4f 2e 09 73 32 a7 bd 3e 9b ad ca 84 |.{.8O..s2..>....| -00000100 07 e6 0f 3a ff 77 c5 9d 41 85 00 8a b6 9b ee b0 |...:.w..A.......| -00000110 a4 3f 2d 4c 4c e6 42 3e bb 51 c8 dd 48 54 f4 0c |.?-LL.B>.Q..HT..| -00000120 8e 47 02 03 01 00 01 a3 46 30 44 30 0e 06 03 55 |.G......F0D0...U| -00000130 1d 0f 01 01 ff 04 04 03 02 05 a0 30 13 06 03 55 |...........0...U| -00000140 1d 25 04 0c 30 0a 06 08 2b 06 01 05 05 07 03 01 |.%..0...+.......| -00000150 30 0c 06 03 55 1d 13 01 01 ff 04 02 30 00 30 0f |0...U.......0.0.| -00000160 06 03 55 1d 11 04 08 30 06 87 04 7f 00 00 01 30 |..U....0.......0| -00000170 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 81 |...*.H..........| -00000180 81 00 46 ab 44 a2 fb 28 54 f8 5a 67 f8 62 94 f1 |..F.D..(T.Zg.b..| -00000190 9a b2 18 9e f2 b1 de 1d 7e 6f 76 95 a9 ba e7 5d |........~ov....]| -000001a0 a8 16 6c 9c f7 09 d3 37 e4 4b 2b 36 7c 01 ad 41 |..l....7.K+6|..A| -000001b0 d2 32 d8 c3 d2 93 f9 10 6b 8e 95 b9 2c 17 8a a3 |.2......k...,...| -000001c0 44 48 bc 59 13 83 16 04 88 a4 81 5c 25 0d 98 0c |DH.Y.......\%...| -000001d0 ac 11 b1 28 56 be 1d cd 61 62 84 09 bf d6 80 c6 |...(V...ab......| -000001e0 45 8d 82 2c b4 d8 83 9b db c9 22 b7 2a 12 11 7b |E..,......".*..{| -000001f0 fa 02 3b c1 c9 ff ea c9 9d a8 49 d3 95 d7 d5 0e |..;.......I.....| -00000200 e5 35 16 03 03 00 25 10 00 00 21 20 52 4d 0f ea |.5....%...! RM..| -00000210 40 ed ee af 68 2c 18 63 0b ee 16 d3 54 e6 5c c0 |@...h,.c....T.\.| -00000220 6d 30 05 f3 19 82 a1 90 e1 dc db 34 16 03 03 00 |m0.........4....| -00000230 88 0f 00 00 84 04 01 00 80 81 d8 7c 75 86 e5 c5 |...........|u...| -00000240 f4 0a f7 9e a9 cb b5 38 64 55 d6 0d 66 24 c9 ad |.......8dU..f$..| -00000250 05 17 1a bc 63 f2 9f 67 eb 0d b3 7d c9 b7 8d 78 |....c..g...}...x| -00000260 a8 6e 4d 38 f1 19 03 0a 59 57 e2 97 ca 0b c6 31 |.nM8....YW.....1| -00000270 55 f8 11 73 d7 da ee 64 c7 8b a3 3e ac f1 00 9c |U..s...d...>....| -00000280 4c 1f f6 b3 c3 05 7b 85 55 be 4e d9 52 56 6f 1a |L.....{.U.N.RVo.| -00000290 2b 2e 38 e2 60 8f 91 3e b2 9a 70 c6 2d d2 b1 c2 |+.8.`..>..p.-...| -000002a0 2e f5 46 bf 3f f8 5f 91 4e 88 97 de cd f5 11 43 |..F.?._.N......C| -000002b0 c2 b7 7e 11 b4 b7 b8 54 9c 14 03 03 00 01 01 16 |..~....T........| -000002c0 03 03 00 20 23 a1 42 23 8f b0 36 ac f0 33 70 34 |... #.B#..6..3p4| -000002d0 a6 85 e9 f5 e8 be 9c a7 21 90 ff 6e 72 52 85 1f |........!..nrR..| -000002e0 40 6f 23 33 |@o#3| +00000000 16 03 03 03 33 0b 00 03 2f 00 03 2c 00 03 29 30 |....3.../..,..)0| +00000010 82 03 25 30 82 02 0d a0 03 02 01 02 02 01 0c 30 |..%0...........0| +00000020 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 16 |...*.H........0.| +00000030 31 14 30 12 06 03 55 04 03 13 0b 43 6c 69 65 6e |1.0...U....Clien| +00000040 74 20 52 6f 6f 74 30 1e 17 0d 31 36 30 37 31 32 |t Root0...160712| +00000050 31 37 33 32 30 39 5a 17 0d 31 37 30 31 32 38 31 |173209Z..1701281| +00000060 37 33 32 30 39 5a 30 1e 31 1c 30 1a 06 03 55 04 |73209Z0.1.0...U.| +00000070 03 13 13 63 6c 69 65 6e 74 41 75 74 68 20 52 53 |...clientAuth RS| +00000080 41 20 32 30 34 38 30 82 01 22 30 0d 06 09 2a 86 |A 20480.."0...*.| +00000090 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 82 |H.............0.| +000000a0 01 0a 02 82 01 01 00 ec 04 4a f3 24 ba 53 43 8b |.........J.$.SC.| +000000b0 a0 36 c8 a0 4b 5c 73 e6 46 78 ba c1 33 2d 5b e5 |.6..K\s.Fx..3-[.| +000000c0 6a cb d1 86 94 61 55 e8 fb f6 ea ae eb ca e2 a7 |j....aU.........| +000000d0 c2 04 4f f7 ed 09 d4 2a b1 c3 b4 68 b5 ab d3 71 |..O....*...h...q| +000000e0 ac e0 0e 0e 74 d4 c3 2b 3e f2 41 58 6b 85 a2 49 |....t..+>.AXk..I| +000000f0 e2 4c 0e c5 76 44 b6 a8 1f 8c 98 90 3f bb 0c d4 |.L..vD......?...| +00000100 c0 17 d3 af 05 66 45 05 81 c6 94 b0 8a fc b6 a9 |.....fE.........| +00000110 ed 91 15 9a 76 ad b2 b0 01 53 d0 ff 50 4b fd 85 |....v....S..PK..| +00000120 e1 ba fa 1b 2c 19 92 30 80 c8 4c e2 7f 32 b1 ef |....,..0..L..2..| +00000130 04 70 59 38 79 5a a6 96 27 51 2a 69 a6 62 f5 b8 |.pY8yZ..'Q*i.b..| +00000140 a8 c7 48 c6 4b 82 97 71 a4 db 90 5a 0b 80 11 a3 |..H.K..q...Z....| +00000150 15 6f a8 30 cc 5b db ca 97 c4 97 8e f3 50 56 c0 |.o.0.[.......PV.| +00000160 7c f4 27 5e 58 59 49 e9 dd a8 ad 43 fa e3 59 5d ||.'^XYI....C..Y]| +00000170 fe 25 0f 6a e8 40 12 b8 19 0c c5 7a a1 72 8e 22 |.%.j.@.....z.r."| +00000180 d0 cc 29 41 34 62 db 53 1b 90 37 1c 82 a9 5d b5 |..)A4b.S..7...].| +00000190 ef 37 ec 0a 7d f3 3f d5 1c dd 72 8c fd 1a 93 c4 |.7..}.?...r.....| +000001a0 83 86 ea b0 78 01 b1 02 03 01 00 01 a3 76 30 74 |....x........v0t| +000001b0 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 07 80 |0...U...........| +000001c0 30 13 06 03 55 1d 25 04 0c 30 0a 06 08 2b 06 01 |0...U.%..0...+..| +000001d0 05 05 07 03 02 30 0c 06 03 55 1d 13 01 01 ff 04 |.....0...U......| +000001e0 02 30 00 30 1f 06 03 55 1d 23 04 18 30 16 80 14 |.0.0...U.#..0...| +000001f0 11 73 6e 47 18 5d a6 21 1a 1b 4c 61 26 39 c8 fb |.snG.].!..La&9..| +00000200 5e e9 74 24 30 1e 06 03 55 1d 11 04 17 30 15 82 |^.t$0...U....0..| +00000210 13 74 65 73 74 2e 67 6f 6c 61 6e 67 2e 65 78 61 |.test.golang.exa| +00000220 6d 70 6c 65 30 0d 06 09 2a 86 48 86 f7 0d 01 01 |mple0...*.H.....| +00000230 0b 05 00 03 82 01 01 00 43 05 b5 0e c5 90 59 8b |........C.....Y.| +00000240 0d 73 5e df 19 66 61 4b b9 51 c5 42 68 88 a4 40 |.s^..faK.Q.Bh..@| +00000250 4d 5c e5 12 b5 d1 61 26 d5 aa f8 95 76 f3 5b 74 |M\....a&....v.[t| +00000260 0f 32 2b 3b 75 06 d4 a5 1b fe 01 d0 52 dc be 32 |.2+;u.......R..2| +00000270 20 86 46 a4 44 fe 37 a5 f8 39 74 99 5c 58 c0 79 | .F.D.7..9t.\X.y| +00000280 9b e3 9a ae 27 91 92 5e 50 f1 83 86 5c e6 e3 0c |....'..^P...\...| +00000290 9b c3 5d dd 10 92 28 30 f1 01 b0 2a 7e e5 b7 e0 |..]...(0...*~...| +000002a0 00 e7 07 90 7c 4b 59 e4 0d 3c 72 11 cd 6d b1 80 |....|KY...L-]0.V".| +000002d0 7f 1a 06 af cd 38 5a 42 75 80 6d 2c 84 07 c6 5a |.....8ZBu.m,...Z| +000002e0 8b 11 96 11 52 dc ec 1f 96 39 4f 0e 60 02 40 05 |....R....9O.`.@.| +000002f0 6a 2f 8f 00 78 35 0f 82 46 50 64 a6 c0 e2 d5 63 |j/..x5..FPd....c| +00000300 3a 5a 5f c1 d8 eb a7 7a 3e 9a 2e 0d 79 8b c9 bb |:Z_....z>...y...| +00000310 6f 99 d4 9a 71 ac 4b 4c 45 4e 4a df 0b 34 d9 c7 |o...q.KLENJ..4..| +00000320 d1 e9 80 d5 e5 af e5 50 58 a3 fe a2 c9 8b dd 28 |.......PX......(| +00000330 c8 e3 8f d1 a0 2c 7f ad 16 03 03 00 25 10 00 00 |.....,......%...| +00000340 21 20 b7 71 d6 ab ca 3a 38 36 2b 05 50 d1 29 89 |! .q...:86+.P.).| +00000350 d8 49 6a de e9 24 a9 60 26 56 1c 3f 03 e5 62 05 |.Ij..$.`&V.?..b.| +00000360 bf 17 16 03 03 01 08 0f 00 01 04 04 01 01 00 3e |...............>| +00000370 7b e7 7a 16 bb 09 b3 fd cc f0 26 3c 78 7b fa 16 |{.z.......&......9| +00000460 3d df 0d 48 94 fa f1 25 36 96 31 de a5 05 a7 14 |=..H...%6.1.....| +00000470 03 03 00 01 01 16 03 03 00 20 3f f1 f7 82 eb 7d |......... ?....}| +00000480 14 e0 64 ea bb 77 bc e1 22 34 7f af b2 5a a5 16 |..d..w.."4...Z..| +00000490 ec 07 85 12 f6 e0 c9 07 55 c8 |........U.| >>> Flow 4 (server to client) -00000000 14 03 03 00 01 01 16 03 03 00 20 f1 61 2c 05 34 |.......... .a,.4| -00000010 d5 38 e4 36 68 0a 9b df ff 6b 52 46 cf 60 87 e9 |.8.6h....kRF.`..| -00000020 9e 93 89 5f e2 e7 7e 40 0c be b8 17 03 03 00 1d |..._..~@........| -00000030 55 7d 18 36 c3 be 88 1d c5 08 d4 87 a6 2b a2 17 |U}.6.........+..| -00000040 e6 7c 6f 9d 1c 72 4e 7e 6e a7 48 80 21 15 03 03 |.|o..rN~n.H.!...| -00000050 00 12 4a 9e 9d 63 33 c1 88 b0 60 f6 cc a6 53 eb |..J..c3...`...S.| -00000060 bd 3b c8 dd |.;..| +00000000 14 03 03 00 01 01 16 03 03 00 20 fe f7 2c ac e4 |.......... ..,..| +00000010 dc 42 2f 20 dd d8 fd 0f 0a 02 df 5b c5 40 60 71 |.B/ .......[.@`q| +00000020 30 9e 27 4d 23 08 f7 dd 37 85 10 17 03 03 00 1d |0.'M#...7.......| +00000030 af 09 a2 e1 00 83 a3 d9 4c 98 de 10 b2 15 1f 39 |........L......9| +00000040 a8 ac c3 2a 11 a0 c2 61 21 4b da 4d 61 15 03 03 |...*...a!K.Ma...| +00000050 00 12 7d df 8a b9 3b 01 bd 53 6d 27 38 bf d7 fd |..}...;..Sm'8...| +00000060 ab 03 40 d0 |..@.| diff --git a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven index aad9fbd5a4868a..014fb14aa8d750 100644 --- a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven +++ b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndECDSAGiven @@ -1,9 +1,9 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 ea 01 00 00 e6 03 03 76 c6 83 cb 16 |...........v....| -00000010 e6 14 2e a2 1c ae 9e 52 a1 79 28 08 af b7 97 4b |.......R.y(....K| -00000020 eb 96 5e 62 33 d9 15 6f cc a9 22 20 2a d2 a8 00 |..^b3..o.." *...| -00000030 6e 83 ef cc 16 a8 ce e2 52 c2 13 60 02 7d c7 4d |n.......R..`.}.M| -00000040 42 a6 ed f0 3f 84 35 09 96 37 3c 52 00 08 13 02 |B...?.5..7>> Flow 2 (server to client) 00000000 16 03 03 00 7a 02 00 00 76 03 03 2c 84 0e c3 c0 |....z...v..,....| 00000010 fd 58 12 43 ce a3 e8 28 a1 5c 70 ce 9a 7f 3b 59 |.X.C...(.\p...;Y| -00000020 f9 a2 aa e3 eb 28 cb 67 0f 0e 97 20 2a d2 a8 00 |.....(.g... *...| -00000030 6e 83 ef cc 16 a8 ce e2 52 c2 13 60 02 7d c7 4d |n.......R..`.}.M| -00000040 42 a6 ed f0 3f 84 35 09 96 37 3c 52 13 03 00 00 |B...?.5..7H1..=| -00000090 11 cf d9 e0 55 c2 43 af 2e 64 ca 1d 17 71 1b c6 |....U.C..d...q..| -000000a0 ce 56 81 b8 be 17 03 03 00 72 26 04 f1 68 b9 07 |.V.......r&..h..| -000000b0 aa 72 33 bd 8e 6e e7 9a 71 97 a4 16 1a 3d 47 69 |.r3..n..q....=Gi| -000000c0 24 69 5b ab 29 39 78 0a 2e b1 78 f8 64 ae 78 8e |$i[.)9x...x.d.x.| -000000d0 7e 28 4c 4f ed 75 94 23 41 03 8a 61 0b de 67 1e |~(LO.u.#A..a..g.| -000000e0 a0 0f d6 1c 3e 89 7f d1 dc 42 d8 70 b6 08 6e 67 |....>....B.p..ng| -000000f0 07 da 19 a4 b4 0f 24 48 17 fa e2 e7 cb 44 97 ba |......$H.....D..| -00000100 29 37 86 c2 e4 e5 8c c4 63 f3 53 87 58 c6 6a eb |)7......c.S.X.j.| -00000110 36 74 05 bf 63 0e 60 61 fe 64 d7 ad 17 03 03 02 |6t..c.`a.d......| -00000120 6d 27 ce 2d 46 8e 51 7e a7 9a 51 b9 ed 89 69 18 |m'.-F.Q~..Q...i.| -00000130 34 3b 54 22 99 fe 6b 51 c8 ee 1d 5a 43 36 af ea |4;T"..kQ...ZC6..| -00000140 12 f5 1a 65 7a c3 08 c1 9f d6 a8 7c 45 74 33 e0 |...ez......|Et3.| -00000150 30 57 57 e5 f8 2a 49 10 78 55 dc 86 0f af 42 c2 |0WW..*I.xU....B.| -00000160 e8 43 bb 93 50 11 54 43 ce a6 da 6b f4 50 95 19 |.C..P.TC...k.P..| -00000170 ed 00 01 01 34 48 19 00 ed 09 2c cb 6e a0 b1 5b |....4H....,.n..[| -00000180 6e be dc d9 30 fd 79 72 dd 94 c8 e5 a7 50 bc 5b |n...0.yr.....P.[| -00000190 cd 3c 7a 69 21 10 69 86 c1 66 83 78 5f 32 2a 2b |.t| -00000220 45 53 f8 7a 86 7b df 10 d0 ef a5 a7 07 1e f2 3c |ES.z.{.........<| -00000230 ae 70 b4 b0 bc 1e c9 49 1e 22 3e 8a 33 a2 44 93 |.p.....I.">.3.D.| -00000240 a9 d7 35 f2 80 75 6c d7 09 9d 4e 74 39 23 d2 65 |..5..ul...Nt9#.e| -00000250 32 5c 13 8a 26 aa a5 fd dd 60 c0 27 3a bf 9a 4c |2\..&....`.':..L| -00000260 76 0a 0b 00 70 87 7b af a0 35 23 46 14 d1 07 00 |v...p.{..5#F....| -00000270 86 a8 79 f7 94 0c e1 84 93 03 ac b0 d1 b5 de 19 |..y.............| -00000280 62 aa 46 89 16 d9 aa 96 16 1f c8 61 6b bd 63 ad |b.F........ak.c.| -00000290 7c 53 4a 13 d7 d7 65 6c 65 6b 02 e7 aa 22 92 8e ||SJ...elek..."..| -000002a0 40 84 52 3f 94 db f7 a9 66 ab 50 32 9e c6 b1 b3 |@.R?....f.P2....| -000002b0 4e 9d fb 06 be 9d 65 55 69 0b 1a c0 07 a5 c4 b2 |N.....eUi.......| -000002c0 fd c0 ab bb d8 dd 56 4b 6e 94 94 f5 e6 23 31 ed |......VKn....#1.| -000002d0 f2 b1 ad d8 dd 45 9d fe 5d a3 57 fe 06 a6 5c 21 |.....E..].W...\!| -000002e0 6e 69 c0 8d 84 f6 12 2a 6d 2d d8 60 6c 72 b0 68 |ni.....*m-.`lr.h| -000002f0 77 2d ac da 4d b9 86 91 9e 88 33 60 76 1a b2 25 |w-..M.....3`v..%| -00000300 3a 3e 0a d6 0a 4b b0 d4 22 e8 c5 dc 5d 8d 18 0d |:>...K.."...]...| -00000310 0c 75 d2 c5 c7 17 d8 61 58 ee 5b 1c 41 b5 c3 fb |.u.....aX.[.A...| -00000320 bc 98 71 37 b4 23 b4 f4 c2 73 53 2d df 31 23 16 |..q7.#...sS-.1#.| -00000330 ad 7b db d3 64 8a f6 ea 12 80 a4 62 c4 ce ba 52 |.{..d......b...R| -00000340 7e fb 9a 08 de 59 64 e9 b2 a2 18 22 11 2f 7d fa |~....Yd...."./}.| -00000350 1c 0c 4c 13 29 c6 e6 77 e8 a7 ca 9e 37 d7 57 e0 |..L.)..w....7.W.| -00000360 4e 5a c9 48 81 ec 59 e9 f3 08 76 86 b8 2b fd 9f |NZ.H..Y...v..+..| -00000370 59 b8 37 3c 27 5d 1c e8 02 de 6f aa 1f 6b d1 73 |Y.7<']....o..k.s| -00000380 13 fe ea 1f b0 67 f4 1c f9 8c df 3e d3 4c 17 03 |.....g.....>.L..| -00000390 03 00 61 b5 ce 49 9b 38 d1 e6 de b0 76 59 33 43 |..a..I.8....vY3C| -000003a0 49 8c 97 c7 32 7a 19 8a a0 f2 53 7f 76 25 2e 6a |I...2z....S.v%.j| -000003b0 04 99 30 d2 e9 0f 95 d1 cd e5 72 35 15 84 b5 24 |..0.......r5...$| -000003c0 0b 50 16 91 a7 95 51 ac de 6a b2 e6 cd f8 df 18 |.P....Q..j......| -000003d0 31 85 29 68 a1 7a 51 ae fe 18 91 80 78 35 6e 45 |1.)h.zQ.....x5nE| -000003e0 34 1f aa b3 83 e9 eb 9c 09 69 66 40 c7 82 b7 f8 |4........if@....| -000003f0 7a ce f9 b5 17 03 03 00 35 7f 42 57 53 76 54 6a |z.......5.BWSvTj| -00000400 68 3d d3 b6 45 87 df 1d 26 36 12 3c 8d bd 6d 3c |h=..E...&6.<..m<| -00000410 3c d2 05 c6 1d eb d3 c9 e7 d6 45 8b 26 d2 05 87 |<.........E.&...| -00000420 0d 46 86 3b 08 c7 75 38 45 53 05 c9 83 85 |.F.;..u8ES....| +00000080 03 03 00 01 01 17 03 03 00 1b 92 d2 68 85 3b d2 |............h.;.| +00000090 2d 5f 80 38 10 68 2d f6 db 47 a2 66 45 0b 9e 3e |-_.8.h-..G.fE..>| +000000a0 7f 45 a3 2a 1c 17 03 03 00 72 63 60 07 82 18 bb |.E.*.....rc`....| +000000b0 50 02 02 51 fc 7c e6 e3 c8 b4 5c 1a d7 fc ef cc |P..Q.|....\.....| +000000c0 f6 4c c8 20 76 ca f6 75 85 54 48 d2 3d ae 87 d3 |.L. v..u.TH.=...| +000000d0 75 06 a5 f8 3d 48 02 6a 8a 13 99 75 7f 17 b5 5c |u...=H.j...u...\| +000000e0 29 0c 89 16 91 fd b9 47 32 78 3f 43 b2 a0 8b fe |)......G2x?C....| +000000f0 4e 85 19 d3 a6 3a b6 d7 a5 59 b5 b5 90 3e 2a 14 |N....:...Y...>*.| +00000100 77 a3 f3 b0 18 80 73 4e 29 c3 4e 52 27 36 69 38 |w.....sN).NR'6i8| +00000110 03 ca 98 83 ca 35 78 06 92 ed eb 10 17 03 03 02 |.....5x.........| +00000120 6d 90 8d 9e 47 e8 12 42 c4 ff 43 34 d4 6f 8c 8c |m...G..B..C4.o..| +00000130 3d bb d9 25 8d 10 d2 b2 8a 75 94 34 42 ab ce 34 |=..%.....u.4B..4| +00000140 e7 b8 ae 5e 75 5a 8b 45 82 04 0e f6 ae de 54 9f |...^uZ.E......T.| +00000150 7b fb ab 69 c2 18 8e 7b 9a 6b 26 25 f2 00 19 51 |{..i...{.k&%...Q| +00000160 f9 91 8e 7c 06 1f ce 3e e1 f2 2c 25 90 fe f5 a6 |...|...>..,%....| +00000170 a8 67 d1 6a 35 db b0 2a 39 dc c4 1f 16 20 7b 9c |.g.j5..*9.... {.| +00000180 bd ca 63 84 dd 66 6f 96 4a 31 46 9d 5d 85 35 56 |..c..fo.J1F.].5V| +00000190 6a ed c3 fb 62 d3 66 7e 02 b2 b4 c3 46 45 4c 53 |j...b.f~....FELS| +000001a0 9e 55 7a 46 17 45 10 02 12 9c d2 71 b4 9e ed 25 |.UzF.E.....q...%| +000001b0 df 87 be 69 77 ea e3 b0 12 c3 ec 56 7f f7 ef 68 |...iw......V...h| +000001c0 81 e2 e4 25 5d 7e 6c 1e 26 2d 0f be f1 94 96 40 |...%]~l.&-.....@| +000001d0 7b cd 6f 62 6e 59 bf c9 5c e3 15 62 57 49 8d b4 |{.obnY..\..bWI..| +000001e0 41 de 6c dc 83 5f 89 c9 62 65 89 22 4c 91 1c b3 |A.l.._..be."L...| +000001f0 dd 90 66 82 f5 af 7a 7f f2 1c a0 77 d0 9a f9 48 |..f...z....w...H| +00000200 85 58 30 b5 3a 39 03 5e 04 df 85 df 00 9a 20 27 |.X0.:9.^...... '| +00000210 92 12 1d f4 fa 09 44 28 76 d4 98 76 33 64 56 29 |......D(v..v3dV)| +00000220 13 9f 9f 4f 05 43 f5 f3 e1 08 4b 2d ed 28 b6 80 |...O.C....K-.(..| +00000230 e5 b1 2f 61 61 ea db 2d 06 51 fe 19 fa 1c 6b bd |../aa..-.Q....k.| +00000240 15 a0 59 81 72 20 d6 96 b4 27 be c2 d3 76 24 7f |..Y.r ...'...v$.| +00000250 95 38 29 16 ca e0 8e 8b 2f 4f e2 bc 57 28 8f 1d |.8)...../O..W(..| +00000260 8d 22 f0 d7 a6 b7 e8 0a 95 da 69 58 a6 88 c4 a0 |."........iX....| +00000270 e3 69 d8 90 01 50 2a 9b dc 0e 43 41 41 27 20 5b |.i...P*...CAA' [| +00000280 a7 a1 4c 2d 8b 1b c1 02 3c eb ee 12 cd 12 cb 37 |..L-....<......7| +00000290 57 ef 48 57 af 41 62 26 ab 9b 2b 7c fc f3 02 64 |W.HW.Ab&..+|...d| +000002a0 87 82 2f 4c 34 46 47 23 bc e9 d8 1e 38 b9 6b 80 |../L4FG#....8.k.| +000002b0 76 2c d0 14 95 e6 4b f1 79 36 11 f4 f2 57 34 35 |v,....K.y6...W45| +000002c0 32 61 ca 4e 3e 60 08 7c 0d 77 9f a7 41 05 74 6a |2a.N>`.|.w..A.tj| +000002d0 6e f5 30 09 ee 69 a1 d2 8a b2 3e 9f 56 04 e2 f4 |n.0..i....>.V...| +000002e0 cf 9e 6e 27 b7 f2 15 7a b3 16 6a 31 4b ba fd 0e |..n'...z..j1K...| +000002f0 29 83 d1 11 7b c0 25 a9 65 5b 6a ad 8d a7 1e 74 |)...{.%.e[j....t| +00000300 52 98 76 04 41 22 d6 e4 3d 64 2e 48 f8 a0 6a b7 |R.v.A"..=d.H..j.| +00000310 ed ef d8 4f 32 e1 b3 7b 12 31 3e 03 7a 3d ea 98 |...O2..{.1>.z=..| +00000320 f5 c3 de 1b 23 bd 2a b1 d3 1a 9b 34 f1 bf 73 41 |....#.*....4..sA| +00000330 11 df 78 8d f2 83 54 fe 82 7c 2e fb 94 5d a4 f5 |..x...T..|...]..| +00000340 34 45 37 87 e3 91 a9 ec c6 e9 24 8b be fd 27 1b |4E7.......$...'.| +00000350 3b ec b3 b6 3d 15 be 3d 29 46 f5 9c 4c 86 e3 2d |;...=..=)F..L..-| +00000360 af 58 74 16 7d af c8 07 c9 d2 bc 68 4a d0 0b 8c |.Xt.}......hJ...| +00000370 9d 3f a2 96 07 37 e1 1a 09 ae 59 a1 4a 32 08 15 |.?...7....Y.J2..| +00000380 ce 35 0f cb 45 8b 5d 40 e9 41 b8 c8 5e 4a 17 03 |.5..E.]@.A..^J..| +00000390 03 00 5f 96 16 a9 f2 62 b5 93 b3 dc 32 13 86 ae |.._....b....2...| +000003a0 2d b7 79 76 27 4b 17 d4 20 a0 5a d7 c5 8f b2 4e |-.yv'K.. .Z....N| +000003b0 98 ba 56 e4 05 7d 89 5c ab 07 bd 36 ce ee b7 1c |..V..}.\...6....| +000003c0 8e e9 83 bc a3 82 d9 84 92 53 ff f6 7d e1 b9 17 |.........S..}...| +000003d0 a7 0c e6 6c a3 e8 02 d6 21 a7 31 6a fa ef 4a 96 |...l....!.1j..J.| +000003e0 58 d0 82 2d 38 36 0c 67 7b 57 ea a9 54 be 3a d3 |X..-86.g{W..T.:.| +000003f0 ab 5b 17 03 03 00 35 f0 d8 62 3c 49 88 f4 b9 aa |.[....5..b>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 1e 82 b3 b8 d2 24 |...............$| -00000010 72 6c 73 9d f8 0c e8 bf ec b3 d2 ac 05 57 87 c3 |rls..........W..| -00000020 44 b6 92 07 81 f9 ac a3 13 c1 a2 37 f1 27 4a 3c |D..........7.'J<| -00000030 73 d0 6f fc d8 1d 63 cf b7 f0 94 71 5c cf a2 e2 |s.o...c....q\...| -00000040 58 55 ff 53 c0 82 10 bb 31 2c 35 4b 21 5a 02 16 |XU.S....1,5K!Z..| -00000050 e5 78 60 47 60 56 29 ac 26 96 22 ce 61 df 32 9f |.x`G`V).&.".a.2.| -00000060 d3 e3 0c 62 55 75 26 cd 35 d5 84 39 e1 70 0b 0a |...bUu&.5..9.p..| -00000070 c3 d5 8a 0b 72 31 5e a5 59 f5 1f 4d 33 0b 92 a5 |....r1^.Y..M3...| -00000080 41 3c b8 8b ab da 76 10 00 f6 9a ec de 83 52 8d |A<....v.......R.| -00000090 00 c4 70 02 a9 0e 30 97 ce 10 3d 56 c7 c9 68 3f |..p...0...=V..h?| -000000a0 ee 36 73 3f 6b d7 34 40 25 3a 4c 4e 7f e6 f9 74 |.6s?k.4@%:LN...t| -000000b0 70 b5 e5 88 c2 aa ca a6 87 a4 4a c9 48 5a e9 86 |p.........J.HZ..| -000000c0 da 69 38 6c c1 34 3d fe c6 52 1f b0 fe 42 d6 8f |.i8l.4=..R...B..| -000000d0 4b 7c 34 85 ed 48 b3 51 73 31 9e 5f 39 66 b7 b8 |K|4..H.Qs1._9f..| -000000e0 ea 49 3c aa 57 c0 b9 51 bb a5 b4 72 b2 07 c3 cc |.I<.W..Q...r....| -000000f0 88 6a 53 74 ea 51 9b 5d 44 10 66 d9 bb d3 58 20 |.jSt.Q.]D.f...X | -00000100 2e 16 97 62 49 df 50 4d 03 52 14 eb 67 23 86 c1 |...bI.PM.R..g#..| -00000110 fd 14 11 7e f1 3d db e2 57 29 fa 49 3c 08 61 22 |...~.=..W).I<.a"| -00000120 37 aa f6 53 42 84 c5 f3 f8 e8 93 cb d8 b9 56 f8 |7..SB.........V.| -00000130 c5 f7 e0 8f 34 b1 69 9a f0 62 5e 25 8c a3 9f 1c |....4.i..b^%....| -00000140 19 25 4e a2 8c 1c cf cb e4 03 dc 54 59 67 95 7e |.%N........TYg.~| -00000150 c3 9d 82 12 64 a9 fd b5 47 ee fb af de 40 92 64 |....d...G....@.d| -00000160 24 e1 e3 4f 2f ad 51 1a 76 2d 00 d1 e2 45 08 be |$..O/.Q.v-...E..| -00000170 25 f5 79 70 4b 34 3f 71 b6 87 38 c6 d4 3c 6c 58 |%.ypK4?q..8......h..h....| -00000200 e5 d5 03 2d f2 24 65 dd 98 12 6f d1 db f1 e0 a2 |...-.$e...o.....| -00000210 d8 c6 56 a3 22 1c b7 c0 0f 4d d0 e3 6c 72 d6 1e |..V."....M..lr..| -00000220 5d fe 93 d2 3e 9f 66 f9 1e 17 03 03 00 a3 fa 27 |]...>.f........'| -00000230 0d 16 08 2c 58 32 57 98 59 e6 ef ba 4a 8a f0 b2 |...,X2W.Y...J...| -00000240 20 2e 18 5a e4 89 89 6f 9f 21 35 0f 60 7c 3c 10 | ..Z...o.!5.`|<.| -00000250 32 36 8d 72 a7 f9 44 ee 49 36 74 0d 03 c8 c3 59 |26.r..D.I6t....Y| -00000260 6b 59 aa 2b ca d6 65 8c 01 31 9a 47 86 df e6 fb |kY.+..e..1.G....| -00000270 78 42 77 2c 1f 23 24 41 0f b1 38 a1 68 02 18 73 |xBw,.#$A..8.h..s| -00000280 9d 77 7a 49 ff a5 e2 54 d3 8e 52 5c e2 1a 21 60 |.wzI...T..R\..!`| -00000290 c9 fb 39 25 64 8b b4 65 87 bd 7f 22 5b 07 80 12 |..9%d..e..."[...| -000002a0 3f bd bc 7d 84 96 8c 65 83 7e 56 ce 60 a7 8a 54 |?..}...e.~V.`..T| -000002b0 7d 6b e2 9c 49 8f 4c 3b f7 3f 5c ff e7 e8 10 bf |}k..I.L;.?\.....| -000002c0 90 e1 41 ea e7 c0 b0 70 4d 18 dc c4 7b 93 f6 5b |..A....pM...{..[| -000002d0 40 17 03 03 00 35 3f c4 e2 95 70 70 f7 e6 4d 9d |@....5?...pp..M.| -000002e0 5e f5 45 fc f9 5d 8c 3e 22 a6 da 80 3f e8 10 ba |^.E..].>"...?...| -000002f0 ad 94 06 0b b9 c2 dc f6 2e c1 97 82 b1 1e e6 eb |................| -00000300 56 f4 ce a7 d9 bd a7 c5 46 cf 4c 17 03 03 00 13 |V.......F.L.....| -00000310 aa 8a 8d f6 9d 8f 64 a0 23 78 eb 60 1a 1c 8f 06 |......d.#x.`....| -00000320 a7 1e 33 |..3| +00000000 14 03 03 00 01 01 17 03 03 02 7f a1 fe fe 8c e2 |................| +00000010 b7 e4 a6 42 3a 66 69 db 11 35 34 0e 0f 7b ea 64 |...B:fi..54..{.d| +00000020 82 f4 9e 48 6d a5 93 3c 1e f6 a9 a1 87 2b 92 f1 |...Hm..<.....+..| +00000030 20 82 b8 2e 37 4e 17 bd a5 33 15 6e c0 48 f2 54 | ...7N...3.n.H.T| +00000040 a1 7b 1f 9e 46 75 06 a9 0d 91 0b cb bb 5e 94 0f |.{..Fu.......^..| +00000050 d0 34 2d b7 a8 4a f4 7d 6a 19 3a ba 30 ca ac 16 |.4-..J.}j.:.0...| +00000060 8b a2 38 ef 02 e8 d6 90 3d f1 c5 de 17 cf 85 9d |..8.....=.......| +00000070 a6 cc 5a a5 1a 00 4d f9 e3 0b 3e 58 9a 2c eb f1 |..Z...M...>X.,..| +00000080 57 d2 7c 09 00 b0 cc 45 d9 3d 1c 2c 91 02 6e 9c |W.|....E.=.,..n.| +00000090 c0 89 22 c1 ee 9c b2 a5 43 62 3c cd c6 59 75 23 |..".....Cb<..Yu#| +000000a0 cc 14 1b 2f d4 fa fe 8a ec a7 c0 0a 3c 3c 94 ae |.../........<<..| +000000b0 70 1c 57 85 37 9a bd 69 dc d1 04 58 14 d0 bd 88 |p.W.7..i...X....| +000000c0 d7 b4 59 36 9b e8 71 ef ee 23 36 e3 95 be f4 a0 |..Y6..q..#6.....| +000000d0 96 39 51 6e b4 1b fd fd 7a 11 90 cd 7b 15 66 25 |.9Qn....z...{.f%| +000000e0 b0 77 46 68 55 54 6b f3 1b d3 3c fb 4d d4 9d a4 |.wFhUTk...<.M...| +000000f0 b4 5f f7 44 89 0a a2 52 69 56 8e 3d 9b eb 32 76 |._.D...RiV.=..2v| +00000100 58 ca 2d 97 8d 3e 64 9d a1 1d 62 b9 e0 75 67 9a |X.-..>d...b..ug.| +00000110 c4 8c 3b 75 c1 42 5d b9 b0 fc cd 9e 96 fe 69 5d |..;u.B].......i]| +00000120 c3 22 86 6f e9 2a 5f 22 4e 03 fa 91 ec 5f ed b4 |.".o.*_"N...._..| +00000130 17 58 68 5a 83 81 d3 9c 78 d8 e8 00 5e 63 6a 09 |.XhZ....x...^cj.| +00000140 10 b3 98 02 20 44 4a 96 56 8a 30 4a 0a 97 19 4d |.... DJ.V.0J...M| +00000150 c9 33 f1 43 4e af 9c 62 86 8b 09 d8 75 f9 a6 ca |.3.CN..b....u...| +00000160 22 85 7a f5 91 07 44 68 62 b1 cd 86 ca e3 a3 be |".z...Dhb.......| +00000170 d4 ea c4 1e 71 67 eb 22 66 8b 90 7e b0 0c 8e 9e |....qg."f..~....| +00000180 35 14 b8 3c 7e b4 18 9f 5c b3 eb 79 2b bc 9c 59 |5..<~...\..y+..Y| +00000190 cd 15 ee e7 ea 1a 1a 05 9b 9c 31 27 e0 54 e2 ca |..........1'.T..| +000001a0 4d a1 6b df 85 85 7d 76 58 68 e9 6d 39 79 c1 2f |M.k...}vXh.m9y./| +000001b0 f1 5b b1 cc 26 0d 06 95 73 54 d5 64 bc 8a c3 fd |.[..&...sT.d....| +000001c0 5c 90 82 dd c2 ef e4 0e 25 31 ad b8 c0 b3 56 45 |\.......%1....VE| +000001d0 9e 2f 6f 16 da 01 3a b8 81 d9 93 f9 c3 87 08 aa |./o...:.........| +000001e0 e1 87 de c4 91 d5 26 bc 45 50 7d f1 1f c5 39 cd |......&.EP}...9.| +000001f0 2b 8d e5 b6 4b 34 55 97 1d 48 75 6b 1a 4c 7a df |+...K4U..Huk.Lz.| +00000200 d9 1b 0e d0 d4 cb 1c db eb df cb c5 88 a8 78 6f |..............xo| +00000210 04 15 53 0d 13 f9 f8 73 80 87 b7 28 58 93 9d 36 |..S....s...(X..6| +00000220 24 90 6b de bd e8 de 74 09 c7 4f 5e e7 48 76 fd |$.k....t..O^.Hv.| +00000230 6d 69 10 76 4f e0 6b 4a ac 67 5c 4a 3d 5c 5a 05 |mi.vO.kJ.g\J=\Z.| +00000240 09 06 fc f6 f5 59 59 86 eb 75 03 fd 6e 3f f1 db |.....YY..u..n?..| +00000250 c4 61 4d 81 69 ff d6 03 3e bd 20 3d d8 1d 7c 13 |.aM.i...>. =..|.| +00000260 f2 00 9e 15 99 65 b6 31 ea c2 86 ec 31 97 2f 2f |.....e.1....1.//| +00000270 93 81 06 6d f0 89 ef 2f 34 f1 9b 5a c6 ff 10 51 |...m.../4..Z...Q| +00000280 64 59 77 cd dc 14 d8 8a 22 ed 17 03 03 00 5f 0f |dYw....."....._.| +00000290 74 52 32 e3 d7 5c 9d 4a ef 29 46 19 21 da cc 80 |tR2..\.J.)F.!...| +000002a0 8a a6 8e 53 f8 16 7b 73 26 b6 1b 65 8b e6 69 c0 |...S..{s&..e..i.| +000002b0 cf 45 30 54 39 35 0e da 4b 5a dc 22 f3 2d 4f 79 |.E0T95..KZ.".-Oy| +000002c0 ee 02 f2 c9 4f 5d 7c dc e2 1e 7e 88 d6 08 71 6f |....O]|...~...qo| +000002d0 26 6d c2 84 5e 90 a4 f5 68 1a 04 63 ab aa 0d 6f |&m..^...h..c...o| +000002e0 93 14 f1 cd e3 74 c7 06 b0 0e ca 2e 40 0c 17 03 |.....t......@...| +000002f0 03 00 35 d4 9e fb ac 21 1e a1 0f 66 98 94 8a e2 |..5....!...f....| +00000300 27 61 78 0c 9d 83 a0 88 e1 d5 21 25 5d f8 ad a8 |'ax.......!%]...| +00000310 ec e8 2b 7d 52 ea 9d 9a 69 62 07 bc 2a 3d 19 48 |..+}R...ib..*=.H| +00000320 2c 88 af df ff 6d 96 c4 |,....m..| >>> Flow 4 (server to client) -00000000 17 03 03 02 90 03 30 e5 39 17 14 26 a2 26 08 c9 |......0.9..&.&..| -00000010 20 37 fc a1 53 c8 7d 62 aa 17 81 a7 03 48 73 ed | 7..S.}b.....Hs.| -00000020 b3 fc d5 c1 80 be 06 bc 98 48 e7 cc 6d ec 6e 41 |.........H..m.nA| -00000030 58 79 51 ec 74 d9 94 d1 ac b1 d7 92 50 65 ee f5 |XyQ.t.......Pe..| -00000040 63 86 26 56 79 1b f0 7c 0a ce a7 37 91 17 ae 16 |c.&Vy..|...7....| -00000050 18 21 f4 a8 43 fd cd 72 78 db c7 40 32 d4 3d fa |.!..C..rx..@2.=.| -00000060 0a 0f 74 8e b1 ea 6b 85 c4 3d ca de fe cf 45 48 |..t...k..=....EH| -00000070 5f 12 ee 53 72 96 81 96 dd 72 f4 96 02 6d f9 1b |_..Sr....r...m..| -00000080 1e 3d 58 73 ab e1 32 9d 10 29 53 05 27 9b 19 01 |.=Xs..2..)S.'...| -00000090 ac a7 26 a1 e1 af 00 23 84 85 53 82 86 2a 9d 24 |..&....#..S..*.$| -000000a0 9a 88 07 99 eb a1 11 6d ab 0b 9b 13 99 ba ba 46 |.......m.......F| -000000b0 8e 16 28 fa 7c 6f 52 87 9f e4 20 26 b2 ba bf d4 |..(.|oR... &....| -000000c0 11 18 1b 6d 3f dc 2d 29 44 ff a8 87 5a 15 0e 9b |...m?.-)D...Z...| -000000d0 40 6e e1 b3 b6 d6 76 6c 4e 76 6e 92 89 68 8c bb |@n....vlNvn..h..| -000000e0 0f fd 23 89 fe ca ce 3d 73 f4 95 3e c5 2b 87 ca |..#....=s..>.+..| -000000f0 1a 47 4b ba 4d b4 d7 f6 0a 19 36 6e 84 f0 df 27 |.GK.M.....6n...'| -00000100 7d e0 01 46 0b bf 90 1d ca 9d b8 32 fc 0e 93 cc |}..F.......2....| -00000110 e0 aa 01 4e 86 ab 04 b2 27 89 e6 fd e9 62 3a ea |...N....'....b:.| -00000120 38 22 a1 a9 5c ee 1d ff b4 c7 c2 71 ad d2 87 44 |8"..\......q...D| -00000130 2e c4 c4 55 2d 82 eb 65 96 da 58 cc 01 fa d4 27 |...U-..e..X....'| -00000140 7c c3 e9 f0 9f 6b c2 52 f2 58 e1 80 ff 2b 33 b6 ||....k.R.X...+3.| -00000150 0c f6 d2 c2 11 18 21 2c 55 2d 58 0b 5b 86 e6 60 |......!,U-X.[..`| -00000160 6a 43 c9 dd 43 05 47 8c db 1c 39 44 0a 7f c3 4e |jC..C.G...9D...N| -00000170 e4 48 3f fe 58 38 f8 b3 8c e9 a8 3c 97 b6 57 09 |.H?.X8.....<..W.| -00000180 98 d0 4f 65 36 4b d0 99 b3 e8 9c 9e 8b e7 82 e4 |..Oe6K..........| -00000190 21 26 f0 5c 7e b3 e6 05 ef fa 6e e7 ce 0c fb df |!&.\~.....n.....| -000001a0 f0 bf 35 1e 26 b1 82 11 f3 00 89 ce f4 8c f0 5a |..5.&..........Z| -000001b0 41 89 96 bd cf 09 f1 2f 7f 8b f1 69 84 08 e4 08 |A....../...i....| -000001c0 65 64 15 48 09 f4 5c 46 33 fa 32 61 36 19 de e8 |ed.H..\F3.2a6...| -000001d0 d1 6f d4 a4 c7 70 32 a9 3e 53 5c 09 03 70 f2 8c |.o...p2.>S\..p..| -000001e0 cd 5d bc 24 5b d8 67 3b 1a 4b b2 49 53 b6 fa ad |.].$[.g;.K.IS...| -000001f0 ce 62 21 08 0e 4f 19 d9 5c 83 5d f6 6a 12 78 e9 |.b!..O..\.].j.x.| -00000200 3d c3 63 2e bf 63 12 92 fa b9 c0 ea 68 a3 ef bb |=.c..c......h...| -00000210 26 7a 6f 50 22 d2 83 7e d2 2b b4 91 dc f8 1f 39 |&zoP"..~.+.....9| -00000220 51 ae c9 0c 60 52 01 41 36 60 62 21 a3 98 78 6a |Q...`R.A6`b!..xj| -00000230 75 93 57 33 83 c4 d1 5e c3 e3 1f 65 e5 53 fa 33 |u.W3...^...e.S.3| -00000240 b2 e3 58 70 f0 6b 5b 79 63 96 1d b0 15 16 b8 f5 |..Xp.k[yc.......| -00000250 9b 99 b3 e8 be bc bb 34 e3 b6 3e e0 77 6c cc 50 |.......4..>.wl.P| -00000260 90 a0 53 66 95 9c e8 03 c6 8c 37 df 7f 88 9e 81 |..Sf......7.....| -00000270 4c 24 82 84 4f 6e 7f 33 98 09 ce f0 ae b6 b1 a4 |L$..On.3........| -00000280 91 c4 64 82 c1 e7 65 f6 8a b9 f2 64 40 e6 ae 0f |..d...e....d@...| -00000290 75 f9 01 d4 ba 17 03 03 00 1e cb 1e 53 d2 df 20 |u...........S.. | -000002a0 4c 76 0f fa bd 46 11 b9 db 96 c7 36 c9 6f 2c 5e |Lv...F.....6.o,^| -000002b0 6f c1 35 b5 3a 8e 8f 2c 17 03 03 00 13 14 ba 3d |o.5.:..,.......=| -000002c0 35 57 64 a8 1e 72 1b e1 bd 1a ec 42 da 06 77 94 |5Wd..r.....B..w.| +00000000 17 03 03 02 f1 71 f9 ce 42 59 0f b0 87 6a b9 36 |.....q..BY...j.6| +00000010 5c e8 03 c1 d6 63 2a 29 33 a9 51 11 7d c1 1c 2a |\....c*)3.Q.}..*| +00000020 54 18 96 b5 b8 31 47 60 28 52 2a 3c 2c 24 85 ac |T....1G`(R*<,$..| +00000030 e8 d5 9e cd d4 9e dc 01 87 3e 6a b7 8d 2f 8c 48 |.........>j../.H| +00000040 c0 29 73 81 c3 3f 4d 6b ad 9a 97 93 90 de c3 68 |.)s..?Mk.......h| +00000050 af f3 01 95 70 6f 96 7a 70 27 33 62 d1 3b 04 a3 |....po.zp'3b.;..| +00000060 e5 50 09 5c ad 52 cf 76 e5 7e 71 3b 7e 3d 59 b7 |.P.\.R.v.~q;~=Y.| +00000070 e2 23 fb af 46 58 c6 1a 25 c9 ae 72 a2 e6 62 b9 |.#..FX..%..r..b.| +00000080 52 b3 d6 32 59 94 82 89 81 76 e5 b7 f3 1b 7c b5 |R..2Y....v....|.| +00000090 14 c3 26 1f d9 6e ab 0f 3b 60 3b 25 48 85 92 98 |..&..n..;`;%H...| +000000a0 5e 38 e0 4e 1e d9 b9 7b cc da 98 4d d8 06 c9 79 |^8.N...{...M...y| +000000b0 bf 35 94 4f 79 b4 5b 1e 3c 9c 7d 0a f6 86 69 2d |.5.Oy.[.<.}...i-| +000000c0 05 1a c1 0d d8 ff 3f 42 68 fb 1f a4 a0 a9 85 b2 |......?Bh.......| +000000d0 94 ce bd 6e 98 18 c0 31 e7 d0 47 10 43 56 22 2c |...n...1..G.CV",| +000000e0 07 9f bd 8f 76 cd 8c b7 d6 5e fa a7 48 20 21 2b |....v....^..H !+| +000000f0 27 72 ed b5 68 01 6d 09 93 1e b7 e8 3e 27 6e 89 |'r..h.m.....>'n.| +00000100 24 06 58 88 5e 29 cb a7 61 6d ab a3 e2 29 3f 1b |$.X.^)..am...)?.| +00000110 7e 4a e7 3b 75 95 f8 72 78 c2 2d 80 ce 53 fd 2e |~J.;u..rx.-..S..| +00000120 f6 19 54 85 c9 9c 29 5d d9 78 92 3e 5d f6 ef 9e |..T...)].x.>]...| +00000130 5d af 73 b0 d9 23 8d 82 70 9f d6 b1 1b 5f dd 99 |].s..#..p...._..| +00000140 f8 df d7 e9 ac f0 bb 46 2c 94 d6 43 ec 08 92 d3 |.......F,..C....| +00000150 52 b3 e2 25 e3 0c da 43 60 63 f9 da 29 c8 fa 33 |R..%...C`c..)..3| +00000160 80 46 c6 91 54 82 03 63 ce 44 5d 14 30 c3 63 d9 |.F..T..c.D].0.c.| +00000170 e6 07 7c 12 8c 82 6b 1d 88 90 5a 25 64 a7 4e cb |..|...k...Z%d.N.| +00000180 f2 29 b0 0e 97 d5 a2 b7 3c c4 eb ab bd 11 7c b4 |.)......<.....|.| +00000190 96 3d b1 40 5f ee 43 70 0f d7 29 08 ea df 3b 8f |.=.@_.Cp..)...;.| +000001a0 df 27 57 3f fb d4 b4 cd b5 b8 24 cc c5 99 d1 29 |.'W?......$....)| +000001b0 93 3c 31 aa 09 01 24 59 c2 85 68 6d 85 76 48 0c |.<1...$Y..hm.vH.| +000001c0 c2 97 f4 33 41 0a c0 de 84 61 ce 64 90 39 55 43 |...3A....a.d.9UC| +000001d0 0f cf 4b 27 fa 7d 8f f4 fc 52 9a 1c 30 6f c3 3d |..K'.}...R..0o.=| +000001e0 62 34 9e 75 15 70 78 65 a0 68 3b f8 1c 89 e5 05 |b4.u.pxe.h;.....| +000001f0 d2 a8 9a 04 54 53 4a d1 40 c8 e1 21 ca 85 66 10 |....TSJ.@..!..f.| +00000200 6f 0e f5 a0 b0 0e 64 23 88 1f 69 29 3f 13 17 93 |o.....d#..i)?...| +00000210 bc 64 76 0a 8f 62 55 76 e3 ca f6 86 1c 6f a0 09 |.dv..bUv.....o..| +00000220 a6 d2 8d 63 80 96 7f 21 83 a5 56 15 1c cd 33 0c |...c...!..V...3.| +00000230 58 f7 0d 4b e4 57 70 09 2c fd 6a 23 63 31 80 7a |X..K.Wp.,.j#c1.z| +00000240 0c 0f 3f 00 7a e3 4e 46 31 1a 76 24 99 16 15 ed |..?.z.NF1.v$....| +00000250 1e 31 ba 2b 4c 0c 45 e7 07 05 35 e5 8a 86 fd 7c |.1.+L.E...5....|| +00000260 a9 b6 b4 e2 98 4d bf 44 b7 8f 77 fe ae 54 ec ad |.....M.D..w..T..| +00000270 5d 29 ea b8 6e 06 8d 18 67 21 08 71 8c 70 dd b7 |])..n...g!.q.p..| +00000280 67 93 53 7e 60 20 c2 21 4c 93 f5 7b a7 59 38 07 |g.S~` .!L..{.Y8.| +00000290 fa 92 1c 06 ae 83 b6 49 67 de 00 95 cc ba 98 9d |.......Ig.......| +000002a0 bc 3d a4 92 80 c2 87 8f 69 be 5e e2 2f b6 9f 8e |.=......i.^./...| +000002b0 bc e7 da 27 b8 21 0f 6a 18 e1 3c c5 f9 52 b6 7f |...'.!.j..<..R..| +000002c0 fe 51 4d 0b ad 99 6c d5 d4 70 4e 71 b4 66 0b 8e |.QM...l..pNq.f..| +000002d0 c5 ac 5f 52 01 e6 57 d3 db d5 b1 8c f5 81 d9 77 |.._R..W........w| +000002e0 f1 ce 11 75 2c b9 87 5e 02 0c 1c ea c4 8f 25 0f |...u,..^......%.| +000002f0 46 71 05 62 28 4b 17 03 03 00 1e 4d 70 0d 47 77 |Fq.b(K.....Mp.Gw| +00000300 30 e4 99 6b fe 44 08 9b 14 89 51 33 05 cb 22 b0 |0..k.D....Q3..".| +00000310 62 a0 1b 04 81 51 90 fe 8d 17 03 03 00 13 42 78 |b....Q........Bx| +00000320 59 4d a0 44 63 97 41 f4 58 02 db 34 3d e1 6b 24 |YM.Dc.A.X..4=.k$| +00000330 51 |Q| diff --git a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given index e634436c5b44bf..2f9a981ad91037 100644 --- a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given +++ b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndEd25519Given @@ -1,9 +1,9 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 ea 01 00 00 e6 03 03 05 17 e0 80 1a |................| -00000010 2d 43 4f fc 1c 5a 25 ed bf 58 5a 4e ce f0 b3 04 |-CO..Z%..XZN....| -00000020 cd 95 ca a9 23 0e 73 a6 db 9e 19 20 ed 12 4f 84 |....#.s.... ..O.| -00000030 b9 8e 68 11 99 ce 64 2a 16 c8 19 d9 b7 6e 87 08 |..h...d*.....n..| -00000040 6c 8f 88 cc 96 c9 0e 80 d5 fe d7 df 00 08 13 02 |l...............| +00000000 16 03 01 00 ea 01 00 00 e6 03 03 41 ff 1c 0e ac |...........A....| +00000010 70 21 5f d4 a3 83 14 d0 ca fc 2b 25 6f eb b7 06 |p!_.......+%o...| +00000020 b6 5a 6c 3d 40 62 2a 1d b3 e7 a0 20 6d 9b c9 b9 |.Zl=@b*.... m...| +00000030 f0 cb 9a 99 91 23 bf 62 e8 96 12 8c e4 c3 02 d6 |.....#.b........| +00000040 76 61 d9 b7 a9 fb e0 98 b8 89 1e 5e 00 08 13 02 |va.........^....| 00000050 13 03 13 01 00 ff 01 00 00 95 00 00 00 18 00 16 |................| 00000060 00 00 13 74 65 73 74 2e 67 6f 6c 61 6e 67 2e 65 |...test.golang.e| 00000070 78 61 6d 70 6c 65 00 0b 00 04 03 00 01 02 00 0a |xample..........| @@ -11,141 +11,171 @@ 00000090 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 |................| 000000a0 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 |................| 000000b0 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 |.........+......| -000000c0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 43 |-.....3.&.$... C| -000000d0 50 2e 25 98 70 e0 7a eb 07 47 3d 22 ea a7 06 c5 |P.%.p.z..G="....| -000000e0 50 22 5c 2d ba 18 64 bc ec 15 77 94 74 06 15 |P"\-..d...w.t..| +000000c0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 6c |-.....3.&.$... l| +000000d0 be ac b0 60 10 bd 01 89 54 03 db 56 07 ad ca 54 |...`....T..V...T| +000000e0 a1 3f ee d9 e2 43 a4 04 8b 96 1a 0e 62 85 04 |.?...C......b..| >>> Flow 2 (server to client) 00000000 16 03 03 00 7a 02 00 00 76 03 03 2c 84 0e c3 c0 |....z...v..,....| 00000010 fd 58 12 43 ce a3 e8 28 a1 5c 70 ce 9a 7f 3b 59 |.X.C...(.\p...;Y| -00000020 f9 a2 aa e3 eb 28 cb 67 0f 0e 97 20 ed 12 4f 84 |.....(.g... ..O.| -00000030 b9 8e 68 11 99 ce 64 2a 16 c8 19 d9 b7 6e 87 08 |..h...d*.....n..| -00000040 6c 8f 88 cc 96 c9 0e 80 d5 fe d7 df 13 03 00 00 |l...............| +00000020 f9 a2 aa e3 eb 28 cb 67 0f 0e 97 20 6d 9b c9 b9 |.....(.g... m...| +00000030 f0 cb 9a 99 91 23 bf 62 e8 96 12 8c e4 c3 02 d6 |.....#.b........| +00000040 76 61 d9 b7 a9 fb e0 98 b8 89 1e 5e 13 03 00 00 |va.........^....| 00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 a5 |..+.....3.$... .| 00000060 4d e8 76 10 57 cb 0f 26 cf 66 48 0b 22 8d e5 94 |M.v.W..&.fH."...| 00000070 cd f5 50 a1 2c ab 53 5e 6b 12 16 07 07 d6 5d 14 |..P.,.S^k.....].| -00000080 03 03 00 01 01 17 03 03 00 1b fd bc ec e6 71 be |..............q.| -00000090 a0 a8 24 a6 2c 49 22 8a dc 64 85 7d 1c 09 00 a7 |..$.,I"..d.}....| -000000a0 81 9d fe ed a5 17 03 03 00 72 d0 77 fe c4 d7 51 |.........r.w...Q| -000000b0 14 b9 cd b2 0f bb d8 b1 f0 bb f8 5c 42 ea e7 57 |...........\B..W| -000000c0 a7 d9 f6 64 f1 a6 e1 c6 9a ae f5 12 a6 71 b9 4a |...d.........q.J| -000000d0 3a c2 97 c4 9b d2 90 5f 4a a5 57 57 dd 9c 0e e8 |:......_J.WW....| -000000e0 50 62 59 fa 52 46 cd e3 b2 b9 69 e9 90 64 20 87 |PbY.RF....i..d .| -000000f0 dd 93 55 89 ba e7 4f 5c b7 fb 56 f1 fe b0 51 99 |..U...O\..V...Q.| -00000100 ed 16 69 c3 57 e1 5f 27 d9 2b ee dd 2c e7 2b f0 |..i.W._'.+..,.+.| -00000110 07 7c 45 e9 18 df d8 5e 5d e1 bb 1d 17 03 03 02 |.|E....^].......| -00000120 6d d1 8a d7 2e e2 2b 13 0e 75 df df 80 ef 00 8e |m.....+..u......| -00000130 63 a2 c0 4a f2 85 97 c4 26 bd 7e e1 c6 58 8d 33 |c..J....&.~..X.3| -00000140 0e df 4c 1b f6 79 8e ca 72 74 85 6d 9d fc 87 88 |..L..y..rt.m....| -00000150 87 cf 8f e1 f6 09 27 64 91 bb 34 0d e0 25 f2 56 |......'d..4..%.V| -00000160 38 05 c3 d5 f8 10 ad 63 9f e4 4b c7 b0 b4 6f 6f |8......c..K...oo| -00000170 1b a0 12 36 9a 8e a9 27 32 44 59 97 ef ba ae 2d |...6...'2DY....-| -00000180 f7 f8 12 16 1d a9 d3 2e 02 04 26 91 53 26 d1 9a |..........&.S&..| -00000190 4f cf 8c bc e1 f5 ca 63 c4 9c 70 b1 29 2a e6 9b |O......c..p.)*..| -000001a0 77 d8 1b be bf a0 29 8e 32 aa 4c 04 92 01 58 b2 |w.....).2.L...X.| -000001b0 70 2f 0a 15 c9 ea 7d d2 b0 52 06 45 c6 0b 97 2c |p/....}..R.E...,| -000001c0 91 c3 cb d3 d9 e3 0f 6d f0 ae 63 b4 42 62 9f 29 |.......m..c.Bb.)| -000001d0 2b 7d 6e cd fe 2f 13 fd 3a d4 67 86 c2 3b e3 eb |+}n../..:.g..;..| -000001e0 61 14 34 c6 df 79 78 74 93 32 bd a5 14 05 8d 95 |a.4..yxt.2......| -000001f0 92 59 6e 8a 81 c7 82 68 40 a3 63 1d ce 65 9a b0 |.Yn....h@.c..e..| -00000200 fb a5 5c fc 53 70 3d f2 15 08 c7 21 ff 64 a6 ee |..\.Sp=....!.d..| -00000210 e8 81 7c 60 2d fd d2 8b 0b 66 95 5a 04 ad 8f eb |..|`-....f.Z....| -00000220 ea 9a 4e 09 97 ee 98 3e 3e 06 8a 82 58 27 4c 48 |..N....>>...X'LH| -00000230 01 ca 20 e0 8e ba 41 9b 68 12 96 a2 24 78 91 c5 |.. ...A.h...$x..| -00000240 b3 08 b4 9b a7 17 05 ea 59 23 dc c0 84 72 67 31 |........Y#...rg1| -00000250 e2 f8 d2 71 8e a8 9b 27 c8 74 ad 8c 53 8d 06 36 |...q...'.t..S..6| -00000260 91 37 62 9d e4 c9 a5 db 35 5c 6f d7 d9 28 40 ea |.7b.....5\o..(@.| -00000270 f1 31 29 20 2f 66 5b c4 45 04 e5 e3 69 94 74 55 |.1) /f[.E...i.tU| -00000280 69 ba 80 15 5d 45 3b ca e5 8d 87 e7 f6 9d f3 36 |i...]E;........6| -00000290 83 4d 3f d2 ef 57 e5 04 60 91 07 e1 e3 13 24 9e |.M?..W..`.....$.| -000002a0 6e c5 62 7f 3a 97 85 1e 45 ce 31 0b 58 08 b0 a6 |n.b.:...E.1.X...| -000002b0 54 39 bd a6 53 b0 0f 32 75 22 a4 12 e7 84 30 9f |T9..S..2u"....0.| -000002c0 42 dc e9 83 12 46 3c 65 36 d0 b3 eb bc ee 8b a6 |B....F.0| -000002e0 62 9d 00 65 e8 2b 93 f4 bc d1 7d 0e 27 f9 b3 d9 |b..e.+....}.'...| -000002f0 b1 0a 27 ba 41 2b c1 18 9c 3b f8 9e 31 1b 20 72 |..'.A+...;..1. r| -00000300 a9 d4 11 a5 03 36 14 6b bf a5 49 7f a7 a8 5f a7 |.....6.k..I..._.| -00000310 f5 5e 28 77 bd 54 ad fe b8 92 2f 26 40 b4 fc 82 |.^(w.T..../&@...| -00000320 bd 17 4a 0f 42 c3 0e 93 c9 b3 f2 c4 83 54 f4 ce |..J.B........T..| -00000330 54 e0 f9 4e 54 dc 8d 42 c0 e9 45 ef a7 ec e7 d0 |T..NT..B..E.....| -00000340 d9 f6 e5 98 9f 28 4c 7f 6a 24 33 f2 03 ff 83 b6 |.....(L.j$3.....| -00000350 5c f8 5d 04 8c 02 73 bd 81 2f 07 15 92 bc 23 28 |\.]...s../....#(| -00000360 ba 70 e9 df d3 93 5d 40 b0 cd 18 42 2b c4 d6 14 |.p....]@...B+...| -00000370 dd 6c 69 86 bb 8e 77 35 b9 1c 1f 56 1f 75 70 6a |.li...w5...V.upj| -00000380 80 2e 57 5e 17 09 42 5a 02 12 e6 94 1c eb 17 03 |..W^..BZ........| -00000390 03 00 60 1d 74 75 f4 4d e6 b7 53 0f ff 41 a0 6b |..`.tu.M..S..A.k| -000003a0 c2 a0 6e 04 07 9a 66 85 ac 83 bc 63 5d 2f f8 3a |..n...f....c]/.:| -000003b0 90 18 e0 db 8f f5 14 d7 b4 11 07 b4 36 25 ee 4b |............6%.K| -000003c0 e9 d4 ec 6e ea 1b 30 f2 ce 81 88 95 ed a5 21 c2 |...n..0.......!.| -000003d0 bd 10 d6 2a 14 c3 00 80 18 40 66 65 b4 ed 81 8c |...*.....@fe....| -000003e0 9a 4e 71 e8 1c af d6 b3 b9 8a 07 8d 0e bf 99 45 |.Nq............E| -000003f0 c0 e4 c0 17 03 03 00 35 41 fd 21 a0 10 61 f5 21 |.......5A.!..a.!| -00000400 e0 aa ed 60 6b e9 43 83 96 85 a4 4b 2a fd af f0 |...`k.C....K*...| -00000410 71 52 1c 67 90 98 4b 64 45 27 9b e1 4a b0 06 8a |qR.g..KdE'..J...| -00000420 9c f6 fc 3d 5e 39 fd f0 02 60 fb ed 69 |...=^9...`..i| +00000080 03 03 00 01 01 17 03 03 00 1b 6f 36 59 9b ba 0e |..........o6Y...| +00000090 24 aa 7f 0d a6 e2 63 d9 bf f7 4c fc f7 c2 de 09 |$.....c...L.....| +000000a0 78 da 4e ba 7f 17 03 03 00 72 ba 60 8e 28 7c 76 |x.N......r.`.(|v| +000000b0 1a 00 e7 9e 3a 60 f0 e8 f0 ed f3 64 3d 1a bc ac |....:`.....d=...| +000000c0 63 a9 13 d1 7d 7d 3a 17 cf 06 db 9b 67 ea 64 59 |c...}}:.....g.dY| +000000d0 6b c6 dd 77 32 87 a6 d6 b2 9a 87 6a ff f1 70 2e |k..w2......j..p.| +000000e0 f6 1b 7f 59 2e ee 97 cf c0 58 c6 0b 25 c5 cd 6e |...Y.....X..%..n| +000000f0 77 1c 8e 71 1c 7a 93 f4 ab b0 70 06 83 18 12 83 |w..q.z....p.....| +00000100 d6 38 c8 bf 8b 7d c7 a3 2f e6 8e ce 7e 52 2f ea |.8...}../...~R/.| +00000110 d5 05 47 3e 45 84 24 ae c4 71 11 df 17 03 03 02 |..G>E.$..q......| +00000120 6d bd 19 2f 7b 43 4e 11 82 5a c0 50 4e f5 df 23 |m../{CN..Z.PN..#| +00000130 24 0e b3 27 f8 19 3b 89 18 c7 a4 43 e6 44 54 4e |$..'..;....C.DTN| +00000140 c8 23 01 d6 ca ef 56 6d 99 75 be a6 ff df f9 57 |.#....Vm.u.....W| +00000150 36 f1 cc 9d 46 54 ce b6 e7 02 a4 e7 c0 53 c9 dc |6...FT.......S..| +00000160 01 82 5a a4 31 0b 37 98 3c b9 30 4c c6 b4 7b 40 |..Z.1.7.<.0L..{@| +00000170 25 63 6e 50 da 46 c3 99 36 7c e8 3d 57 0c 97 6d |%cnP.F..6|.=W..m| +00000180 10 53 b6 63 10 74 d5 52 1e 94 0b db 13 20 e1 e6 |.S.c.t.R..... ..| +00000190 d0 c8 9d 76 ea 7c 11 0c 1d 5f 6f 35 7b e3 e7 3f |...v.|..._o5{..?| +000001a0 e5 8e 78 3b d3 44 b6 6f 7e d3 63 a5 2c e5 27 bc |..x;.D.o~.c.,.'.| +000001b0 df 97 b1 c9 01 48 a4 ef 62 d3 b0 12 ab 87 b7 98 |.....H..b.......| +000001c0 f2 2d a6 ad 98 b8 99 98 c1 25 bd c0 b6 3b 6c c1 |.-.......%...;l.| +000001d0 a2 79 7b 34 68 a2 dc ea 7c 0f 8f a6 83 b7 00 43 |.y{4h...|......C| +000001e0 b7 3a fa 8e b0 ad 97 ab 30 fa 3c e7 a3 55 c7 8f |.:......0.<..U..| +000001f0 3f b1 82 26 7d 1f 9c 78 58 5d a8 aa 86 2f 83 00 |?..&}..xX].../..| +00000200 53 65 7c a1 12 a9 d8 ed 6a cc e3 4f 56 38 7f 1c |Se|.....j..OV8..| +00000210 8c 2f eb 24 bc b4 33 a0 f9 33 fb a6 98 fa b8 0d |./.$..3..3......| +00000220 b3 38 2b a5 e2 98 28 2a 39 17 54 5c 6e 79 c4 5f |.8+...(*9.T\ny._| +00000230 d7 60 65 4f e2 fb 72 29 cd 45 13 a6 3f 6d ed 58 |.`eO..r).E..?m.X| +00000240 de 08 3a 94 dd 20 c1 ac 39 fe 1d b6 32 3e df ea |..:.. ..9...2>..| +00000250 4f 73 47 29 15 71 66 90 ad 6c 34 4a b7 c9 7e f1 |OsG).qf..l4J..~.| +00000260 9f 7b 9a e1 4d 4a 36 39 62 dd af c5 27 16 1c 39 |.{..MJ69b...'..9| +00000270 d7 fa ce 95 34 d4 f2 be 64 49 b4 6b 60 47 ce ac |....4...dI.k`G..| +00000280 ac 4a 1e ef d3 ff 43 f3 f1 0e 78 da 55 76 a9 42 |.J....C...x.Uv.B| +00000290 c3 7c a8 a2 b2 2a 7b 79 5c 2e 70 84 09 a2 f4 68 |.|...*{y\.p....h| +000002a0 25 1c 0b 00 77 62 4d d9 e6 a8 3e f3 0a b4 71 fc |%...wbM...>...q.| +000002b0 2b c3 26 60 a2 2e 82 92 e4 83 5b b3 0b d6 94 18 |+.&`......[.....| +000002c0 46 37 10 6d 2d 26 a0 dd 10 b3 eb 9c 31 7f 45 e5 |F7.m-&......1.E.| +000002d0 ce 09 e2 3c f3 37 e4 dc 60 19 64 03 38 82 34 9b |...<.7..`.d.8.4.| +000002e0 cd ed 14 31 84 75 72 41 02 22 42 1f cd 21 d0 cf |...1.urA."B..!..| +000002f0 b8 42 20 e8 f5 09 26 f1 c3 70 07 ea 22 ea 24 e5 |.B ...&..p..".$.| +00000300 de d1 30 b0 18 03 08 d2 23 fd dc 2a e2 98 e7 95 |..0.....#..*....| +00000310 96 68 ee 3c f0 25 9c 9e 26 ac ae ac 96 a6 6c cb |.h.<.%..&.....l.| +00000320 f8 28 a3 aa a7 4e fe e4 26 b8 50 e2 fb e6 49 8c |.(...N..&.P...I.| +00000330 e2 0a ae 16 07 38 bd f4 88 d2 b4 46 ce de 69 52 |.....8.....F..iR| +00000340 19 0b 34 36 e6 ea cc 09 1d 5d 7c b0 3a 84 56 89 |..46.....]|.:.V.| +00000350 93 f9 6c ee 25 e7 e8 64 15 22 41 8a e9 a8 de 6a |..l.%..d."A....j| +00000360 68 11 7c c5 ba d0 2d 2e f3 3e c2 bb c7 f7 ad 26 |h.|...-..>.....&| +00000370 c8 2e eb fe 45 61 dc 13 86 f3 b1 a1 22 99 76 40 |....Ea......".v@| +00000380 e9 f3 12 07 aa 93 c9 4f d0 c7 80 53 12 ce 17 03 |.......O...S....| +00000390 03 00 5f a2 68 57 39 34 70 f5 d9 1b 99 f7 6a 0a |.._.hW94p.....j.| +000003a0 70 9f 7d c3 d4 37 65 5e 40 41 7d 9f 49 f0 e7 65 |p.}..7e^@A}.I..e| +000003b0 84 b8 e9 e0 f2 5f f6 d6 4d 08 84 5a bd 8a 3c 01 |....._..M..Z..<.| +000003c0 40 82 a9 93 13 77 3e 2c 67 4c 81 17 4c 3f 1b 29 |@....w>,gL..L?.)| +000003d0 84 53 56 a0 38 0c f8 44 60 58 b2 47 10 f6 5c 27 |.SV.8..D`X.G..\'| +000003e0 af 5c b6 8c 5f 9b c9 e0 3a b9 a0 63 90 e2 98 cf |.\.._...:..c....| +000003f0 db 70 17 03 03 00 35 f6 05 24 0f cc 7f fd 3f 15 |.p....5..$....?.| +00000400 aa c3 6a c1 0a 7c df 4b c2 90 05 1f 61 b9 12 94 |..j..|.K....a...| +00000410 a3 44 71 ff 23 89 70 1e d3 9e 56 5b 1d df 6e 68 |.Dq.#.p...V[..nh| +00000420 97 b5 a1 ae 84 72 00 0e af c7 e0 b2 |.....r......| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 01 50 c0 eb 65 40 2e |..........P..e@.| -00000010 4b 36 20 1b 09 db 44 49 05 74 c6 eb 27 14 70 87 |K6 ...DI.t..'.p.| -00000020 14 be 3b 47 71 1d 8e 54 01 82 bd db 29 dd 58 ce |..;Gq..T....).X.| -00000030 cf 9d 03 20 66 94 32 12 f6 dc 19 ba b0 ab 32 57 |... f.2.......2W| -00000040 f8 b2 92 bc 24 97 25 0f f0 9f 05 29 44 36 3d b8 |....$.%....)D6=.| -00000050 ea e2 fb 84 5c 44 89 4b 02 d5 fe 8c 0e f6 02 7d |....\D.K.......}| -00000060 49 df f9 11 7f 7e 6d 80 23 83 74 9e c0 d1 5b 98 |I....~m.#.t...[.| -00000070 97 7b 31 77 3f a3 22 b9 47 c4 20 f3 f0 92 64 bf |.{1w?.".G. ...d.| -00000080 96 c7 7c 65 a2 ca 08 d7 e3 66 71 21 0b b4 96 c5 |..|e.....fq!....| -00000090 ad 7b f2 a7 6c 7a 9b d8 68 f3 56 48 2c 65 a1 84 |.{..lz..h.VH,e..| -000000a0 9a 00 fc 8e 1c 8b 5c 80 ff 24 bd ca 6a e0 ec 7f |......\..$..j...| -000000b0 08 fc 8d 40 26 d9 99 57 9e 1b 72 8d 8e ff 49 5e |...@&..W..r...I^| -000000c0 c1 c2 2d 81 65 78 15 ab 76 fc 52 04 6a 3b f2 db |..-.ex..v.R.j;..| -000000d0 cf 5e 47 fe a8 d1 4f b0 87 f4 fc 60 76 20 75 16 |.^G...O....`v u.| -000000e0 19 33 04 ad 0c ae 28 d0 04 90 71 37 97 4b 72 0b |.3....(...q7.Kr.| -000000f0 15 b2 a1 af 46 78 2c ca fa 5d 5d 48 25 7d 52 a5 |....Fx,..]]H%}R.| -00000100 8d e7 d7 d1 67 e2 4c 93 e9 a0 de 89 91 a5 45 f0 |....g.L.......E.| -00000110 44 72 41 a2 b4 ad d6 50 2e c2 23 74 98 d5 aa 27 |DrA....P..#t...'| -00000120 53 cd 89 f6 60 86 93 2d 92 5f 5f 12 05 ba 26 f3 |S...`..-.__...&.| -00000130 0f b7 df d1 be f5 74 1c 8b 45 82 08 61 2f 93 4e |......t..E..a/.N| -00000140 61 19 23 46 bb 4e c6 2a 6f 74 3b 4e 88 62 4c a3 |a.#F.N.*ot;N.bL.| -00000150 bf 4d 8f fc 10 7a 9d 6f a1 c2 23 17 03 03 00 59 |.M...z.o..#....Y| -00000160 11 a1 82 86 e8 79 e6 7a af ff 36 b9 a4 bc 68 53 |.....y.z..6...hS| -00000170 4a 43 de 97 68 cf d1 3c 17 38 ef f3 36 bb dc f5 |JC..h..<.8..6...| -00000180 d8 a2 11 b6 27 7c 6c 3c 98 d1 7d 25 aa a0 72 23 |....'|l<..}%..r#| -00000190 9c b9 fe 58 2f 9b 56 44 c4 6f 47 5e a6 a5 a7 da |...X/.VD.oG^....| -000001a0 20 19 3a e2 f6 9e b7 af 36 f2 41 ac 2f 1d 54 99 | .:.....6.A./.T.| -000001b0 ea 7a ef 6b c4 41 1a ad 06 17 03 03 00 35 c9 5c |.z.k.A.......5.\| -000001c0 ce 15 39 9e 31 09 af be 84 cc a5 55 bc d3 7b 4e |..9.1......U..{N| -000001d0 53 61 fe 87 8a d6 ea fc 65 78 c9 48 1d b1 56 ca |Sa......ex.H..V.| -000001e0 72 2a 3d 1c c9 d9 b5 32 c9 ac ab 1a cd 67 17 5d |r*=....2.....g.]| -000001f0 aa f1 fd |...| +00000000 14 03 03 00 01 01 17 03 03 02 4c ad d5 92 29 32 |..........L...)2| +00000010 4b e9 ca c9 5a 4c fd 71 91 a8 f2 7a be cd e5 1f |K...ZL.q...z....| +00000020 44 cc 2d bf c0 92 cd 29 14 e0 4a 9b f6 d9 5f 59 |D.-....)..J..._Y| +00000030 c7 22 e8 f2 11 a0 ff a8 71 bd 84 d7 23 a4 9f 18 |."......q...#...| +00000040 7e 1e 7a 48 1d 51 91 a9 f8 8d 10 66 f7 6e 45 b6 |~.zH.Q.....f.nE.| +00000050 19 d2 b9 f0 b7 f1 b5 b7 42 b7 22 2b 60 b4 17 7e |........B."+`..~| +00000060 20 16 29 08 69 28 35 ed 09 bb d5 cf ee 4c 03 2f | .).i(5......L./| +00000070 6a 97 e3 5b ca e2 bb db 93 9c 44 cc 06 24 18 8e |j..[......D..$..| +00000080 a0 ca d3 2c 70 cb ab b3 08 3e 7d 3a d7 02 14 0f |...,p....>}:....| +00000090 9c 47 c1 2f 08 ab 0d ab 83 60 9c cd aa fe a0 d0 |.G./.....`......| +000000a0 9e 92 be 76 b2 ca d3 b7 07 e0 c8 dc 7d 0c cb 6b |...v........}..k| +000000b0 f1 3a 40 c4 f7 f5 33 03 2e 2a 1e e6 8a 7e 12 c8 |.:@...3..*...~..| +000000c0 6c c4 95 bd 65 38 30 b3 97 67 07 eb f3 cc 34 cb |l...e80..g....4.| +000000d0 86 86 0a 4f fe 63 e2 94 da ba 53 1d 09 20 ad 49 |...O.c....S.. .I| +000000e0 b4 a7 ba 93 e8 81 b1 79 c4 bc 23 59 16 c5 54 ea |.......y..#Y..T.| +000000f0 62 90 c3 b8 ab e8 fb f4 de 01 1e e5 0c 90 8b 10 |b...............| +00000100 88 fb 13 90 d8 63 4a 03 88 f1 89 c7 fc 9d 34 ac |.....cJ.......4.| +00000110 c3 76 96 53 20 0b b6 28 48 d0 55 1e f9 f2 38 cb |.v.S ..(H.U...8.| +00000120 b2 63 34 10 3e d7 d7 bb b1 16 69 fd 52 1d 5f 67 |.c4.>.....i.R._g| +00000130 ac c4 90 84 9d 11 29 0f ce 45 25 b5 88 e9 ba 77 |......)..E%....w| +00000140 a4 5f 59 b1 bd 82 ba e1 9a 56 f4 c9 06 0b b8 71 |._Y......V.....q| +00000150 62 7f 2d eb 9c ae 72 26 67 e3 cc 3d 0a 79 5b 33 |b.-...r&g..=.y[3| +00000160 14 4f 20 94 e3 02 6a 9f dd ab 21 f4 16 92 e9 1a |.O ...j...!.....| +00000170 85 c1 14 6c 4c fa 49 c9 b9 08 38 6e 75 0c 30 12 |...lL.I...8nu.0.| +00000180 82 b9 d0 bf f2 28 60 de 91 07 2b 62 c5 32 48 ee |.....(`...+b.2H.| +00000190 df 1a 25 a9 f1 6f 77 4b f8 14 64 ac 95 2c 41 c5 |..%..owK..d..,A.| +000001a0 7f 82 ff 73 08 c9 82 19 98 b9 81 1c 2e 69 08 b0 |...s.........i..| +000001b0 4b 94 c0 1a 29 2a 4c c2 a5 a6 30 5e 0d 88 e2 39 |K...)*L...0^...9| +000001c0 fd b1 49 d1 63 54 73 0d a1 68 33 20 d6 ac 99 49 |..I.cTs..h3 ...I| +000001d0 c5 12 ed e6 1c 4f 0f a8 ef 71 ab 4c 69 81 fe 86 |.....O...q.Li...| +000001e0 ea 6a 21 c5 79 f3 d7 c4 e3 88 03 97 aa 3b 16 35 |.j!.y........;.5| +000001f0 79 d1 ce 4a d0 2d 66 14 9f 1c bf 24 bf 59 62 6b |y..J.-f....$.Ybk| +00000200 e7 0b 50 de c2 a2 1a f0 d0 21 eb 05 5b 2e 83 bc |..P......!..[...| +00000210 66 6b c6 71 e2 e4 90 4e 23 62 00 f4 b3 14 c8 dd |fk.q...N#b......| +00000220 07 fc a3 88 7f 4f 5a 38 83 1f 47 b1 e4 ff e7 e6 |.....OZ8..G.....| +00000230 77 f1 4c 92 62 46 21 07 b0 43 1e bc d8 5e 33 30 |w.L.bF!..C...^30| +00000240 f0 6c 56 e6 04 92 4f 32 3f 46 d4 a4 6a d9 82 e7 |.lV...O2?F..j...| +00000250 8d d4 e2 a0 cb 91 a7 17 03 03 00 59 5b af dd 02 |...........Y[...| +00000260 92 5f ad a7 0c 0e 5a 42 5b 92 e6 d2 22 f2 06 fe |._....ZB[..."...| +00000270 6b ec 8c b4 bf d7 d4 94 c6 74 a4 8e 1b 42 99 5e |k........t...B.^| +00000280 29 25 30 98 2e a1 0b cf de 0e e8 20 44 f8 d1 8d |)%0........ D...| +00000290 8c 05 c9 d9 32 84 b9 a5 91 7f 47 73 8e 75 7d 91 |....2.....Gs.u}.| +000002a0 31 15 7e 54 8b 7c 71 ee 7e 8b bc 11 dd 73 b1 1b |1.~T.|q.~....s..| +000002b0 0c d5 f3 53 7a 17 03 03 00 35 3c b8 62 ba bb cc |...Sz....5<.b...| +000002c0 a4 fc e9 b0 57 f0 39 c8 0a dd 86 cc 1e 64 fe 0a |....W.9......d..| +000002d0 73 fd bd 9e a8 e9 2d f2 32 4e 68 2f 30 25 0a 38 |s.....-.2Nh/0%.8| +000002e0 13 b6 20 e1 d6 ad 34 25 d3 6b ae 0b 92 aa 77 |.. ...4%.k....w| >>> Flow 4 (server to client) -00000000 17 03 03 01 c2 7f 10 91 03 9e 3a 03 ee 8d 17 62 |..........:....b| -00000010 b5 bd 43 8a 6b 86 0a 39 98 1a 20 31 dd 22 16 6f |..C.k..9.. 1.".o| -00000020 0d a6 5f 85 e8 f5 06 f5 3d 07 b6 69 0c 8f 6b c8 |.._.....=..i..k.| -00000030 24 0a f3 07 80 c2 69 6c c8 5c 81 f3 d7 4f 2d 7f |$.....il.\...O-.| -00000040 41 9f 63 67 9e 28 10 fc 00 e1 59 c2 34 ed f8 b5 |A.cg.(....Y.4...| -00000050 0e ff 11 f0 89 90 00 03 af 5c 9d 31 8d b5 b2 1e |.........\.1....| -00000060 9f 83 5c 69 94 e8 ac 28 87 15 8c 78 c4 63 58 64 |..\i...(...x.cXd| -00000070 b2 73 86 8b 6c 1d 3b 07 78 e7 35 b6 60 0f 50 67 |.s..l.;.x.5.`.Pg| -00000080 c8 40 0a e3 4d 76 83 59 91 30 2b b1 0d 2b 76 4e |.@..Mv.Y.0+..+vN| -00000090 8c b7 aa 51 e6 0b 40 95 78 e2 a5 29 79 a1 84 39 |...Q..@.x..)y..9| -000000a0 cb a1 b9 52 b3 a6 9c 38 6d 4f 61 06 19 b5 7e 67 |...R...8mOa...~g| -000000b0 7f 53 95 4a 86 82 e9 e5 6a 27 5c 37 b6 06 52 49 |.S.J....j'\7..RI| -000000c0 83 a4 27 92 4c 9f d8 4d 5f bf f9 60 50 0b 9b 6f |..'.L..M_..`P..o| -000000d0 97 3f 06 21 b1 a9 9b 0d 2e 04 d5 1d e3 1c e3 62 |.?.!...........b| -000000e0 10 06 eb 75 66 26 83 9c ff b6 75 ee be 4a 2f 8c |...uf&....u..J/.| -000000f0 0c b3 80 09 7c e5 10 34 a6 1f 80 ca 8f 57 ca 64 |....|..4.....W.d| -00000100 96 e3 88 fb 4b 0f f4 49 eb 76 d7 72 fc f7 4d d7 |....K..I.v.r..M.| -00000110 21 60 b4 07 da 2f a2 47 92 89 eb ee 3e 8e 0c 40 |!`.../.G....>..@| -00000120 6f 15 4a d6 35 86 6b a9 81 b5 b8 0e 66 b5 bd 7c |o.J.5.k.....f..|| -00000130 d3 60 3e 37 eb bb bd 02 58 74 8a 0c 7e 57 8a f7 |.`>7....Xt..~W..| -00000140 0b f3 83 ab 63 55 99 2d 38 dd 20 5f 4f a4 d2 c3 |....cU.-8. _O...| -00000150 f3 40 81 b6 e9 e7 10 98 4d 51 16 99 d7 fd da 61 |.@......MQ.....a| -00000160 f6 43 13 b4 e6 e2 e8 91 57 d7 c4 9b 8e a6 17 ac |.C......W.......| -00000170 e9 03 6f be 71 f0 ad 70 dd b4 db 96 cc d1 bc 0b |..o.q..p........| -00000180 1b 67 2f 16 b9 62 5f f4 e0 c9 29 bc d9 ae 52 5a |.g/..b_...)...RZ| -00000190 a8 f1 bc d6 dd 29 b5 f7 3d 3f f4 e7 ae 09 ef 4b |.....)..=?.....K| -000001a0 0b 88 86 95 4f 14 13 82 76 05 58 3f 49 0e ed 9f |....O...v.X?I...| -000001b0 96 82 ee 80 20 e3 ca d3 a4 96 b5 86 c5 9f ab fe |.... ...........| -000001c0 9c 95 dc 9c 8f 69 ee 17 03 03 00 1e 7e d4 ce aa |.....i......~...| -000001d0 c3 88 7b e6 95 1d ca 95 3f 6c 97 52 36 47 4f 1e |..{.....?l.R6GO.| -000001e0 fd 99 1d d6 1b 68 c1 c3 0a c3 17 03 03 00 13 f8 |.....h..........| -000001f0 b3 56 5f f6 66 4c b6 71 53 00 65 10 24 90 b7 8c |.V_.fL.qS.e.$...| -00000200 58 eb |X.| +00000000 17 03 03 02 be cb 06 9e 25 0f 5c c7 95 d3 e7 64 |........%.\....d| +00000010 99 37 4c ca 55 7f 63 b2 72 85 0d 99 ec 87 c1 d4 |.7L.U.c.r.......| +00000020 b4 1c 37 42 3e 87 44 69 1f ce d9 74 67 81 d9 52 |..7B>.Di...tg..R| +00000030 c8 6b a6 eb 03 32 ee 3f 63 5c 31 ad 75 62 8a d0 |.k...2.?c\1.ub..| +00000040 a7 26 73 cc 94 f2 a5 b5 4c fa ff 59 98 39 7d f8 |.&s.....L..Y.9}.| +00000050 2b 11 d2 8e 3e b3 e8 20 54 89 5c 6f 29 0c a7 1f |+...>.. T.\o)...| +00000060 ee b2 0b 5a c3 ae f6 cd 56 42 cd a7 6a 6a 46 45 |...Z....VB..jjFE| +00000070 93 6f 56 81 94 32 2a dc 5e b1 09 1b 9f 23 ab ca |.oV..2*.^....#..| +00000080 51 60 ac cd 0c d8 24 cf 80 1c db 93 11 c3 fa 11 |Q`....$.........| +00000090 02 31 88 05 64 e5 4e 84 43 da 52 47 75 e4 93 89 |.1..d.N.C.RGu...| +000000a0 2a 4a 8c 83 f0 7c 03 32 ba 50 51 20 e9 5c f0 08 |*J...|.2.PQ .\..| +000000b0 24 28 7e 29 79 0f d7 82 67 3d b3 53 81 cd 70 81 |$(~)y...g=.S..p.| +000000c0 a6 ee 30 b9 5d 93 f7 ed b5 e9 4a ed 75 d4 51 02 |..0.].....J.u.Q.| +000000d0 05 4d 88 8f 7c 2b 09 41 1c d0 bc 09 f9 44 e3 a6 |.M..|+.A.....D..| +000000e0 9f 56 e6 43 1e 47 ba 86 14 73 d1 f4 4d 98 38 13 |.V.C.G...s..M.8.| +000000f0 66 05 a2 bb 98 4f 2a 06 24 dd 43 63 e5 30 5c ab |f....O*.$.Cc.0\.| +00000100 40 3b 24 7d be 63 5b c8 4a 37 20 cc 31 48 5e f4 |@;$}.c[.J7 .1H^.| +00000110 b3 e1 b2 4f cd 77 54 64 0a 42 e6 fb e9 69 96 a7 |...O.wTd.B...i..| +00000120 68 ca 22 27 73 a4 67 dd e0 7b 89 01 85 c5 a0 77 |h."'s.g..{.....w| +00000130 ea 1d 9b 68 ac 28 8f b1 4e 48 f3 25 69 4d 98 1f |...h.(..NH.%iM..| +00000140 2c 88 18 3c db 42 d4 9f 14 fa 1c fc 68 ed 8a bb |,..<.B......h...| +00000150 d8 aa d4 93 d4 04 15 1b 24 de 81 97 0d e6 c7 73 |........$......s| +00000160 e1 95 91 cc c4 b0 c9 d8 de bb 4c 40 e3 dd 16 9e |..........L@....| +00000170 1e 19 52 8b 52 7b c4 69 69 14 a9 6c 6e 3b fa 8e |..R.R{.ii..ln;..| +00000180 8d c4 73 9a 23 66 30 04 62 d0 5a 43 62 68 75 b0 |..s.#f0.b.ZCbhu.| +00000190 f3 d8 08 07 e2 55 56 2e e8 e5 bf 60 fe a5 93 16 |.....UV....`....| +000001a0 9f 3e 74 36 39 98 d8 11 f7 7b 90 d7 df ca 11 ee |.>t69....{......| +000001b0 89 63 0b 55 6a e8 14 cb 4d c4 f8 69 50 48 93 06 |.c.Uj...M..iPH..| +000001c0 a7 0e 8b 5b 71 89 3d d9 6a fb 6a 39 06 d9 0c 7c |...[q.=.j.j9...|| +000001d0 ae a6 61 aa 76 1e f6 7d 28 3b a4 ef 5c 53 e0 c2 |..a.v..}(;..\S..| +000001e0 89 82 2d c8 8c c1 4e 58 2c 0b 77 57 76 0b b9 28 |..-...NX,.wWv..(| +000001f0 6e b3 09 00 ab 7b 2c 11 75 8b 73 8d ce 80 57 37 |n....{,.u.s...W7| +00000200 cd 82 6e 03 96 f2 43 08 1c 92 fb 1f fa b8 d6 07 |..n...C.........| +00000210 fc e0 32 66 5c 8f 00 da 3d bd 73 f8 30 36 9c fe |..2f\...=.s.06..| +00000220 80 f7 4c 8a ec 07 7c bf ca 03 16 4a 08 ca 13 55 |..L...|....J...U| +00000230 67 5c e2 39 75 0e c7 f4 90 57 37 ed d4 bb b7 6d |g\.9u....W7....m| +00000240 28 bd a7 6d d4 25 2c 0a 3d b1 ae 89 53 13 16 bf |(..m.%,.=...S...| +00000250 d7 42 39 32 6a 9e 19 c7 c1 69 68 d1 5a 08 9f bc |.B92j....ih.Z...| +00000260 63 91 a7 c1 ee ba d8 27 8f 54 80 28 be 72 97 f6 |c......'.T.(.r..| +00000270 65 5c 4d 82 00 30 d7 31 04 a0 48 6b 85 80 2a a1 |e\M..0.1..Hk..*.| +00000280 f0 a6 6c f2 e6 80 1e 6f 25 9e a3 83 13 82 fe 0a |..l....o%.......| +00000290 7f 28 7b d2 88 84 33 da e6 e7 19 33 1c a9 82 80 |.({...3....3....| +000002a0 0a d4 81 df 87 d5 08 c8 6b a1 c8 da 02 e5 27 0e |........k.....'.| +000002b0 11 76 e9 fa 9a 9d 1d 5d 32 a8 91 aa da d8 10 73 |.v.....]2......s| +000002c0 9f 09 0c 17 03 03 00 1e 2a 55 9b 41 94 14 ef fa |........*U.A....| +000002d0 e6 24 e4 e5 b3 f2 46 f1 8d 1b 4e fa 55 d9 56 fa |.$....F...N.U.V.| +000002e0 83 03 e5 15 2a 8c 17 03 03 00 13 78 0a 26 65 48 |....*......x.&eH| +000002f0 63 b4 71 dd fd 65 d8 8c a7 a8 70 8e 9a e6 |c.q..e....p...| diff --git a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven index a71c2daea2b39a..746d369436a084 100644 --- a/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven +++ b/src/crypto/tls/testdata/Server-TLSv13-ClientAuthRequestedAndGiven @@ -1,9 +1,9 @@ >>> Flow 1 (client to server) -00000000 16 03 01 00 ea 01 00 00 e6 03 03 fa 65 ef a3 6c |............e..l| -00000010 fb 3b cf 1e 01 79 f8 18 8f 75 32 42 6b 61 f5 c8 |.;...y...u2Bka..| -00000020 33 d5 c7 b5 0c 49 42 69 9d 87 37 20 9d 3c ea 14 |3....IBi..7 .<..| -00000030 db 5f 0e 6d 8b 81 57 8a cb f0 12 17 05 db 40 04 |._.m..W.......@.| -00000040 15 69 15 5b 52 c3 fe 7d da 2c d6 fa 00 08 13 02 |.i.[R..}.,......| +00000000 16 03 01 00 ea 01 00 00 e6 03 03 6e 0c 1a 25 b4 |...........n..%.| +00000010 5b 28 d2 3b 8e f6 55 87 68 ec 1f 4c 0a a5 51 ad |[(.;..U.h..L..Q.| +00000020 71 4a 32 ac 5a a4 12 0c 45 da 33 20 5b e9 02 42 |qJ2.Z...E.3 [..B| +00000030 0d 23 e1 6f ec 5c 6c e5 3f 5c 35 da b8 31 52 b4 |.#.o.\l.?\5..1R.| +00000040 8e fa 9d a8 91 76 1b 2a 4a d8 43 89 00 08 13 02 |.....v.*J.C.....| 00000050 13 03 13 01 00 ff 01 00 00 95 00 00 00 18 00 16 |................| 00000060 00 00 13 74 65 73 74 2e 67 6f 6c 61 6e 67 2e 65 |...test.golang.e| 00000070 78 61 6d 70 6c 65 00 0b 00 04 03 00 01 02 00 0a |xample..........| @@ -11,170 +11,215 @@ 00000090 00 00 00 17 00 00 00 0d 00 1e 00 1c 04 03 05 03 |................| 000000a0 06 03 08 07 08 08 08 09 08 0a 08 0b 08 04 08 05 |................| 000000b0 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 |.........+......| -000000c0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 1a |-.....3.&.$... .| -000000d0 aa 58 ea b8 c1 39 c5 28 2a 20 b1 b3 81 ba 79 3e |.X...9.(* ....y>| -000000e0 ee d5 aa a9 18 30 11 b3 47 19 94 f8 c6 1c 3c |.....0..G.....<| +000000c0 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 ce |-.....3.&.$... .| +000000d0 ba 87 79 c6 eb 11 14 d2 a6 10 84 ab 1a fc 9d 2b |..y............+| +000000e0 f0 26 2f fd b8 ce 50 f5 24 da 8b 47 7b d9 34 |.&/...P.$..G{.4| >>> Flow 2 (server to client) 00000000 16 03 03 00 7a 02 00 00 76 03 03 2c 84 0e c3 c0 |....z...v..,....| 00000010 fd 58 12 43 ce a3 e8 28 a1 5c 70 ce 9a 7f 3b 59 |.X.C...(.\p...;Y| -00000020 f9 a2 aa e3 eb 28 cb 67 0f 0e 97 20 9d 3c ea 14 |.....(.g... .<..| -00000030 db 5f 0e 6d 8b 81 57 8a cb f0 12 17 05 db 40 04 |._.m..W.......@.| -00000040 15 69 15 5b 52 c3 fe 7d da 2c d6 fa 13 03 00 00 |.i.[R..}.,......| +00000020 f9 a2 aa e3 eb 28 cb 67 0f 0e 97 20 5b e9 02 42 |.....(.g... [..B| +00000030 0d 23 e1 6f ec 5c 6c e5 3f 5c 35 da b8 31 52 b4 |.#.o.\l.?\5..1R.| +00000040 8e fa 9d a8 91 76 1b 2a 4a d8 43 89 13 03 00 00 |.....v.*J.C.....| 00000050 2e 00 2b 00 02 03 04 00 33 00 24 00 1d 00 20 a5 |..+.....3.$... .| 00000060 4d e8 76 10 57 cb 0f 26 cf 66 48 0b 22 8d e5 94 |M.v.W..&.fH."...| 00000070 cd f5 50 a1 2c ab 53 5e 6b 12 16 07 07 d6 5d 14 |..P.,.S^k.....].| -00000080 03 03 00 01 01 17 03 03 00 1b db ca 3e 15 aa a3 |............>...| -00000090 58 ef a0 41 ec 88 00 a5 a0 aa 41 d4 b9 2e 44 46 |X..A......A...DF| -000000a0 c4 d5 16 9a e5 17 03 03 00 72 e0 64 44 ba 2e 5e |.........r.dD..^| -000000b0 b0 fa 11 1c 6a 12 71 86 80 7f 7f f4 04 ab a5 d8 |....j.q.........| -000000c0 6c fa 2d 68 58 64 cc 70 44 56 98 72 fa 09 e7 a5 |l.-hXd.pDV.r....| -000000d0 cb d3 85 b7 c7 2a ce c6 77 29 d1 04 09 1d 82 76 |.....*..w).....v| -000000e0 b1 28 ef 79 39 c7 5d ef 2a db e3 06 24 50 a7 b4 |.(.y9.].*...$P..| -000000f0 38 5b ef 9b bf cf 6b b1 a1 ea 76 10 aa ae 89 63 |8[....k...v....c| -00000100 25 5c a0 69 a5 07 f6 db 86 f3 6a c7 7a 7b 3a a8 |%\.i......j.z{:.| -00000110 15 24 ab 3c f7 81 f0 c1 81 c0 b9 0a 17 03 03 02 |.$.<............| -00000120 6d 10 94 87 1a ef ad f2 3e 0a 7f b5 3e 85 96 80 |m.......>...>...| -00000130 88 d2 55 e2 68 ed d4 62 ca 5e 89 21 bc 65 4f c6 |..U.h..b.^.!.eO.| -00000140 16 5a 90 9d 4b 0b 89 e8 75 09 c2 a7 a3 78 b6 e0 |.Z..K...u....x..| -00000150 80 90 a8 08 1e 9b df 45 0d 10 b1 34 ff 98 ce 1f |.......E...4....| -00000160 22 f4 11 29 13 84 dc 34 53 33 23 24 66 97 cc df |"..)...4S3#$f...| -00000170 0d 09 b0 c3 96 13 5e 8f 1e cf e4 1b 55 29 b3 d7 |......^.....U)..| -00000180 35 38 85 6a b6 0a ff 52 50 8a ed b8 c0 38 00 84 |58.j...RP....8..| -00000190 e4 d7 42 d1 2c f4 6a c1 53 65 43 1d 8f e0 48 fc |..B.,.j.SeC...H.| -000001a0 2d 3f 1d e4 a4 25 97 17 98 65 2f db 95 e5 84 21 |-?...%...e/....!| -000001b0 73 e3 27 03 d2 9e 3e af 23 5e ac fc 96 91 d4 f2 |s.'...>.#^......| -000001c0 cd 15 1a 9e ae ab 0b 36 37 a0 38 20 2d 90 cd f9 |.......67.8 -...| -000001d0 7c 98 63 f2 d8 6b 5f d2 d7 d7 88 0d 8d 05 a1 a3 ||.c..k_.........| -000001e0 5d dd 98 54 6b c8 90 18 f9 7b 05 bc ea e1 2b d6 |]..Tk....{....+.| -000001f0 c8 11 55 68 9f 5e 9b f2 16 6f d4 3e 03 64 26 43 |..Uh.^...o.>.d&C| -00000200 26 7f 1f 05 a9 7a 79 16 a4 05 4a b1 01 6a b6 0e |&....zy...J..j..| -00000210 a7 26 2d e1 a9 ba 2f d4 c4 fd 63 f7 43 32 fd 02 |.&-.../...c.C2..| -00000220 a0 f6 05 ea 13 60 fa 57 c3 04 0d 84 18 e3 6a b7 |.....`.W......j.| -00000230 70 59 51 f6 a1 4f 4c 39 ed 8b f0 b9 a7 7a 95 4f |pYQ..OL9.....z.O| -00000240 7d b6 8e 3f 5b 80 e7 59 50 2c 31 0f 9c 6e 58 a7 |}..?[..YP,1..nX.| -00000250 43 79 35 66 18 0d 98 56 53 6a 2e 1a 55 5f cd 1b |Cy5f...VSj..U_..| -00000260 35 4f cb 8c e3 67 9c 72 3d d6 6b ae 44 16 ef e5 |5O...g.r=.k.D...| -00000270 1e 9c 42 b6 8a 41 c9 c5 cc 99 ac c9 01 53 af e7 |..B..A.......S..| -00000280 b9 30 6d c4 f9 f1 a7 51 9f cf f3 2b 50 8c 65 7f |.0m....Q...+P.e.| -00000290 73 30 00 83 f6 a3 0e e7 94 3b f3 49 15 3d db 5d |s0.......;.I.=.]| -000002a0 f4 e3 83 bf 62 77 eb 9c c0 f3 a2 63 b6 e6 7d 53 |....bw.....c..}S| -000002b0 39 7b 23 bb 77 be 9c 51 96 a6 f0 a0 24 58 4d 46 |9{#.w..Q....$XMF| -000002c0 1b cb 12 af 96 84 e0 44 d4 b0 31 62 f4 84 b5 65 |.......D..1b...e| -000002d0 17 f3 d7 88 08 b7 ee 93 83 6f 83 0a 2b ea 5e fd |.........o..+.^.| -000002e0 ae e9 3b 96 65 2b 32 83 02 db f1 5c 4b 86 fd 7f |..;.e+2....\K...| -000002f0 7e ae 22 1b 4d bf 81 3c ca d0 4f f7 a3 e9 0e 5d |~.".M..<..O....]| -00000300 c9 47 7b bf 23 1a 05 bd c5 19 52 1d 84 cc bd 5f |.G{.#.....R...._| -00000310 a8 2f af 0f 13 a7 0a 29 ac 71 a4 19 1d d1 d7 95 |./.....).q......| -00000320 09 ec 76 7b 39 f1 25 3a 3b fd 5c d7 64 fb a4 cc |..v{9.%:;.\.d...| -00000330 61 a4 4b a2 6a d3 09 89 2c aa 7e 07 9f 19 5b 0a |a.K.j...,.~...[.| -00000340 72 72 ab ab a4 f3 40 51 ef 78 4d 02 46 2e 2d 43 |rr....@Q.xM.F.-C| -00000350 bb 71 fa 4f 4f 8e 31 c5 c2 c1 37 e2 b8 c5 8f 85 |.q.OO.1...7.....| -00000360 43 61 8e ea 29 bc a0 82 cd 93 eb 4b ae 43 b6 77 |Ca..)......K.C.w| -00000370 b2 f7 cc ae a9 c7 e0 b5 a8 6c 81 f8 3c d2 6d a9 |.........l..<.m.| -00000380 e8 93 dd 41 3a 14 a6 44 95 e2 04 a2 58 7a 17 03 |...A:..D....Xz..| -00000390 03 00 60 39 7f af ce 0a 44 1c aa 20 a0 af c9 82 |..`9....D.. ....| -000003a0 12 20 a6 49 a9 f7 ea 3d b3 0a 75 99 9f 02 0f 00 |. .I...=..u.....| -000003b0 95 6f 62 66 e8 d7 45 db 4b 89 7c c4 e7 27 c4 5c |.obf..E.K.|..'.\| -000003c0 a1 12 e6 a5 42 15 cc 01 0e 8f 14 31 bc 6b a6 09 |....B......1.k..| -000003d0 a1 a8 f7 fe 9f 3d de 67 a7 ba e9 cf 3c 3f 46 96 |.....=.g........"..VR....| +000002b0 cb e2 30 f0 3a 74 e8 65 55 af 60 43 90 27 ae 9f |..0.:t.eU.`C.'..| +000002c0 b1 e1 fa 6c df 84 94 81 f2 1c 3b 41 29 07 0a e9 |...l......;A)...| +000002d0 13 07 fb be 46 94 6d 65 ce e6 71 b4 c2 24 ba 92 |....F.me..q..$..| +000002e0 b3 40 bd d8 d6 87 2e b7 e9 df d7 cc 7d 27 5a c5 |.@..........}'Z.| +000002f0 2a a5 f2 0f 6b 4d 7e 05 44 9e 0e c2 8c cd 68 e3 |*...kM~.D.....h.| +00000300 32 a1 cd 1c 4b 7f e2 c1 77 f4 f9 47 dc b7 8a e6 |2...K...w..G....| +00000310 c7 e9 ea f3 f1 27 56 de 77 6b 7f 75 57 94 d0 44 |.....'V.wk.uW..D| +00000320 7d 85 d1 7b e3 54 d7 ba 21 3f 95 65 54 f9 33 cc |}..{.T..!?.eT.3.| +00000330 91 ae c4 e4 79 69 41 89 7d 0f 29 1d d9 a9 25 f5 |....yiA.}.)...%.| +00000340 a2 3a cb 47 fe 78 f8 b7 db 3f ce 6f 84 c7 b9 84 |.:.G.x...?.o....| +00000350 4c b7 33 7a e3 a0 37 91 14 d6 48 bd 4a 16 44 62 |L.3z..7...H.J.Db| +00000360 37 17 05 60 5f fa f2 e3 d1 e5 c3 27 99 b8 10 fd |7..`_......'....| +00000370 98 04 9a 81 1e fe be 8c 29 a4 4b 67 e5 c5 46 ac |........).Kg..F.| +00000380 d6 40 d5 ed 32 ce 63 d7 4a 0f 9d 09 fa 63 17 03 |.@..2.c.J....c..| +00000390 03 00 60 03 26 5f 12 fc 64 12 1a e0 46 fe de 50 |..`.&_..d...F..P| +000003a0 41 ec e9 01 2e 03 72 c2 2d 0a 62 a7 ed 3e 00 b7 |A.....r.-.b..>..| +000003b0 62 5f e5 ab e3 ec db 4b 47 6b bc a6 cf 60 4d fe |b_.....KGk...`M.| +000003c0 b8 32 8c d2 93 ba ce 19 9c 0f fd ba 36 26 6c 0a |.2..........6&l.| +000003d0 50 4a a7 ec 1d 60 aa f8 78 dd 6f c4 f5 c6 46 0f |PJ...`..x.o...F.| +000003e0 d8 87 47 98 63 24 9f ee 9d f4 7e d6 91 09 f7 d8 |..G.c$....~.....| +000003f0 ef 1c ce 17 03 03 00 35 41 dd ee f1 69 eb 11 3c |.......5A...i..<| +00000400 97 f7 88 29 f2 19 bc 09 54 9d 18 0b 43 d7 73 1a |...)....T...C.s.| +00000410 a5 79 4c 14 dc 28 9c d0 fb f8 7d 08 2a 1a 32 ca |.yL..(....}.*.2.| +00000420 de 2c f1 ec ab c0 bc 2d ef ea 55 82 c3 |.,.....-..U..| >>> Flow 3 (client to server) -00000000 14 03 03 00 01 01 17 03 03 02 11 4a 37 2a 1d f1 |...........J7*..| -00000010 dd 55 f3 b6 17 b8 ab 01 4a c6 5a 83 63 80 30 f5 |.U......J.Z.c.0.| -00000020 ce b4 3f 56 16 9f 3f 77 8e 43 b6 89 0b 2e 4e 45 |..?V..?w.C....NE| -00000030 30 1d fc c3 83 2c 7f 9b d7 2a 9f d3 6b 12 a5 70 |0....,...*..k..p| -00000040 40 82 0a ed 5c c2 49 a4 8e c0 6b 98 03 21 f8 2c |@...\.I...k..!.,| -00000050 ac 6a 54 2e d3 fc c3 f5 6a d4 93 f7 af b0 c3 a8 |.jT.....j.......| -00000060 5b 81 11 ce 2a c7 75 a7 fe f3 56 34 a8 cb be ed |[...*.u...V4....| -00000070 b9 76 e2 0f 6e 0c 58 5d 54 7e 80 d7 88 27 75 a0 |.v..n.X]T~...'u.| -00000080 96 aa b4 8b ed a4 0f 3f ee 02 e9 d5 f4 11 3a 89 |.......?......:.| -00000090 0c f5 3d a7 78 51 4c 14 8a b8 88 87 79 97 a6 8c |..=.xQL.....y...| -000000a0 d4 e1 4e dc 79 2f 6e fa a7 9d 35 27 83 d0 f3 80 |..N.y/n...5'....| -000000b0 45 d6 37 00 95 ae ba 8e 03 5f 5f 12 94 3c 29 6f |E.7......__..<)o| -000000c0 15 0f ad 20 42 0e d1 48 56 c0 35 ba fd d9 77 e0 |... B..HV.5...w.| -000000d0 2d 31 a6 48 ad b4 aa 69 96 f1 23 95 cb b5 c1 48 |-1.H...i..#....H| -000000e0 9c 02 91 14 6c ce e0 76 eb d3 5a fa 95 a4 b9 2e |....l..v..Z.....| -000000f0 44 13 e8 f6 ce 08 36 e2 04 ca c7 ab 69 53 65 2d |D.....6.....iSe-| -00000100 75 89 f9 4b 4a 5c 52 84 55 85 2b a1 b5 49 66 ea |u..KJ\R.U.+..If.| -00000110 aa 50 57 43 04 ad 77 d3 4a 26 c9 95 e3 30 47 55 |.PWC..w.J&...0GU| -00000120 3c a4 b8 eb cb 8b 6c f9 25 33 a0 42 1a 85 dd 97 |<.....l.%3.B....| -00000130 a6 7f a2 b6 b9 1c ac 14 63 b4 44 5e 9c cc c7 f3 |........c.D^....| -00000140 a8 ef e5 91 f1 c4 8b e0 b9 bc a6 3b 1d 49 7a 13 |...........;.Iz.| -00000150 ab 02 b5 a1 bb 83 b9 0c db 9b 90 08 e1 f2 c8 4c |...............L| -00000160 21 9c 63 ea 66 93 2a bf 6d ae 6c 4d 43 fe 27 17 |!.c.f.*.m.lMC.'.| -00000170 08 61 67 ed ef f5 5a 13 42 6d 87 0f 52 f9 9e a1 |.ag...Z.Bm..R...| -00000180 85 8a 92 3f 19 a6 15 62 83 86 72 c8 52 c8 fc 50 |...?...b..r.R..P| -00000190 6c 89 67 0d fd a7 79 bd 89 84 e0 18 c3 e4 e0 f9 |l.g...y.........| -000001a0 80 60 cd f5 17 39 7f 11 51 03 f5 99 07 1f 8c 59 |.`...9..Q......Y| -000001b0 7a 4e 31 93 7c aa 01 62 79 95 f5 a7 f0 2a db b2 |zN1.|..by....*..| -000001c0 db fa e6 96 ea b4 d4 ab 9c 2c c9 04 d8 01 07 8f |.........,......| -000001d0 c4 01 56 d5 5d a6 5e 57 7f 7e 61 31 b5 80 dd b7 |..V.].^W.~a1....| -000001e0 2e 9f ec 8d 04 e1 b7 f6 58 95 56 28 64 72 f8 6f |........X.V(dr.o| -000001f0 8b f1 06 be ea be 0f fa 79 37 f9 07 d5 de ce 81 |........y7......| -00000200 67 05 7c 30 55 2f 35 bd 31 24 21 38 99 36 df 98 |g.|0U/5.1$!8.6..| -00000210 c7 08 cd f4 61 25 bf ad 55 80 d2 3f 17 03 03 00 |....a%..U..?....| -00000220 99 f2 9b a3 2a 17 72 2d 5d 65 d3 4e c1 ee ea dc |....*.r-]e.N....| -00000230 ca 16 39 81 ee 25 0c 9f 8c ba 40 55 36 5d 38 66 |..9..%....@U6]8f| -00000240 e9 fd a3 ef 75 91 1e 4f 02 65 c5 18 b3 2c 30 b2 |....u..O.e...,0.| -00000250 8b 2d 60 76 f4 a5 d2 4f 0a bd d6 c4 b7 1c 95 1e |.-`v...O........| -00000260 46 14 ed 0b af f2 47 3c 32 fa 1e f9 78 44 fa 23 |F.....G<2...xD.#| -00000270 b5 72 79 46 7f 9c 55 8b e5 52 7d d1 b6 69 c9 bd |.ryF..U..R}..i..| -00000280 44 89 bb 85 ed a6 a5 d3 bd 1a e1 ca f1 80 ff cb |D...............| -00000290 16 9a 3d 2b bc 2e 9b ac 68 f1 dc 84 d8 f2 c8 e9 |..=+....h.......| -000002a0 e8 a2 8e 8c f1 39 3f b8 68 c0 23 4d 92 75 be eb |.....9?.h.#M.u..| -000002b0 40 d1 a5 ce a5 45 39 47 20 d6 17 03 03 00 35 49 |@....E9G .....5I| -000002c0 8d d9 a5 a6 23 8d b2 5e 41 30 1b 6b 07 df cb 31 |....#..^A0.k...1| -000002d0 45 a5 c4 89 b2 3f 26 f7 e9 de 30 1a b4 7b 02 d8 |E....?&...0..{..| -000002e0 e6 3f 4c 1f 13 98 20 6a 34 8b 96 64 7e 80 6f f7 |.?L... j4..d~.o.| -000002f0 a4 eb 60 d2 17 03 03 00 13 42 c5 16 9d 14 ef 39 |..`......B.....9| -00000300 38 82 9b 32 d1 eb da 26 2f d0 3f 02 |8..2...&/.?.| +00000000 14 03 03 00 01 01 17 03 03 03 47 39 65 95 55 71 |..........G9e.Uq| +00000010 af 91 29 6c 6e 54 ad b4 4d cd eb 45 80 31 b3 01 |..)lnT..M..E.1..| +00000020 dd 84 2e f4 6d 9f b7 0d a9 e7 c3 69 76 01 2a 44 |....m......iv.*D| +00000030 4a 68 b9 f7 b2 ca 60 d1 62 e0 70 38 b8 2c 1a a6 |Jh....`.b.p8.,..| +00000040 1f 7e b7 68 a4 95 46 e0 2f 5e b9 53 25 9c 62 d9 |.~.h..F./^.S%.b.| +00000050 b2 a5 52 4f 56 5b 54 88 ee ad 5d 3d 45 70 ce c8 |..ROV[T...]=Ep..| +00000060 9b fc b1 ab 44 c7 44 8e 15 ff 22 ee 31 79 74 02 |....D.D...".1yt.| +00000070 b2 9a 6c ab ed 31 bf 18 63 03 5f 2d 14 e7 c7 4c |..l..1..c._-...L| +00000080 5c cf 46 0e 07 f1 07 49 db b0 48 4e b6 64 cf 22 |\.F....I..HN.d."| +00000090 6f b0 b5 f0 ce a0 c5 5a e3 47 6d d9 d6 29 24 18 |o......Z.Gm..)$.| +000000a0 f6 39 34 c0 9b a4 4d 29 76 f7 e2 ae 8e b8 bc b1 |.94...M)v.......| +000000b0 bf 0c 72 ae b7 83 69 0e 91 a4 6f 9c e3 06 c5 ae |..r...i...o.....| +000000c0 39 11 71 41 2b 61 63 6b 7b 79 0d 67 e8 64 4d 93 |9.qA+ack{y.g.dM.| +000000d0 1b 7c 18 5a 97 6e 21 8c 17 1f f3 56 b2 1d 7b 83 |.|.Z.n!....V..{.| +000000e0 3c 9a 5b 4f 1a d0 c2 21 ba 9b 8e eb 6f 5a fc 29 |<.[O...!....oZ.)| +000000f0 f7 4c 76 67 a3 7a 32 29 11 a0 e2 83 d2 61 d8 3f |.Lvg.z2).....a.?| +00000100 37 79 2c bc 37 7d a1 84 d8 bb a1 5c 4c c2 d6 2e |7y,.7}.....\L...| +00000110 87 ab 7d 50 2d 92 d9 27 b8 70 e5 20 c2 ff df 74 |..}P-..'.p. ...t| +00000120 d6 57 f1 f0 88 d6 54 2b 9b ac 82 6c f4 02 6f ac |.W....T+...l..o.| +00000130 76 88 ac 84 9c cb a8 56 1e f5 2d 75 0f 91 0e 3b |v......V..-u...;| +00000140 c8 32 4c fa 05 89 50 1b 2f 07 f7 c9 01 2e 65 1d |.2L...P./.....e.| +00000150 60 b0 18 21 e6 4c 82 a5 e6 0f f7 cd 54 69 ae 4a |`..!.L......Ti.J| +00000160 76 a1 5d 6c 2f 35 0b ec a0 d5 fc 18 8c e4 b7 a0 |v.]l/5..........| +00000170 12 08 e4 4c cd 05 90 c6 ac a4 a6 65 ca 69 5e f8 |...L.......e.i^.| +00000180 62 97 75 13 ad 39 c6 27 7a b6 e1 62 9f 7e e7 c0 |b.u..9.'z..b.~..| +00000190 64 dc 45 f0 64 39 5a 19 69 2e 29 1a cf d2 6e 64 |d.E.d9Z.i.)...nd| +000001a0 df aa 88 82 88 a1 0b 5b 62 c4 1b a4 d4 55 ac 17 |.......[b....U..| +000001b0 31 ce 34 c3 ab fc 78 c1 ca 61 f3 b2 94 be 9d 05 |1.4...x..a......| +000001c0 da 81 f7 72 2a 62 4c 62 3e 94 3c e2 1b b9 d8 52 |...r*bLb>.<....R| +000001d0 1c 0d 31 c1 d7 f8 42 36 c7 c7 43 14 a2 f3 49 52 |..1...B6..C...IR| +000001e0 11 da fa 87 e0 c0 24 29 0a c4 36 d6 b8 79 14 50 |......$)..6..y.P| +000001f0 7b 18 7f 73 3b ce ed 95 ac 9e 60 71 37 b0 1c b3 |{..s;.....`q7...| +00000200 4f 24 42 2d c5 a5 cc bf 57 6e af b9 7d 3a ab 95 |O$B-....Wn..}:..| +00000210 fd 4f 9d b2 49 a8 c5 4b 99 30 3c b0 32 e6 3a ae |.O..I..K.0<.2.:.| +00000220 3f e6 dd 7c 2d 14 97 5c 47 af ee 73 47 7c 93 4a |?..|-..\G..sG|.J| +00000230 6e 54 71 cb 9f 93 2b 2f c3 7e e4 59 46 9b 21 a4 |nTq...+/.~.YF.!.| +00000240 4f 01 12 6e 4d 4a 9e 54 d8 48 9e f1 d8 c2 11 15 |O..nMJ.T.H......| +00000250 b0 35 4f b9 45 5b 0a e7 fe c6 1e f9 3b 8d b0 b2 |.5O.E[......;...| +00000260 5c 56 d7 b6 ed bb ae 43 aa 3a 92 8c 72 c0 bc 67 |\V.....C.:..r..g| +00000270 89 8d b7 54 4e e1 49 30 cf b2 a1 aa 3c 85 33 57 |...TN.I0....<.3W| +00000280 1b 5c 0a 26 35 4e ec 69 f2 28 2c 66 8b d4 d4 41 |.\.&5N.i.(,f...A| +00000290 9d f3 03 42 d0 14 c7 69 8a 78 b0 ce 25 e3 b5 b6 |...B...i.x..%...| +000002a0 08 32 4f 57 0a 89 7e f4 a5 df 25 d9 9b a2 ac 33 |.2OW..~...%....3| +000002b0 c8 a8 38 c5 e6 14 90 f3 16 01 42 6d 7e db 71 b6 |..8.......Bm~.q.| +000002c0 8b 10 ca b7 b2 86 bf 59 86 ef 0a 4f 46 1a 0c eb |.......Y...OF...| +000002d0 1c c0 7e b6 4f 20 48 ba f0 13 d6 6c 08 af 78 24 |..~.O H....l..x$| +000002e0 a8 f0 fe 9b 37 d2 b7 c4 0f cd b9 82 e6 3c 5a 96 |....7.........`.6.X.%Jb..8| +000003a0 b6 76 c8 ae 29 aa 4a 13 a8 d2 70 3a 94 fe f1 54 |.v..).J...p:...T| +000003b0 a8 70 ce 7b cb f8 90 38 71 01 52 be 9b 7e ef c0 |.p.{...8q.R..~..| +000003c0 70 9d 04 5c 01 f3 33 9c 6d 10 9f ed f3 03 5a c1 |p..\..3.m.....Z.| +000003d0 d5 7f f8 f3 12 0a 03 2d ad 31 f4 09 d4 b3 ce 90 |.......-.1......| +000003e0 bd 8d 21 9e 52 53 75 31 34 93 93 99 88 22 4f 64 |..!.RSu14...."Od| +000003f0 16 b3 c3 1e 30 b5 1b bf 83 ce c4 36 cc 31 52 55 |....0......6.1RU| +00000400 d4 52 68 93 f5 64 21 c0 28 0b 9f 53 d5 9f 54 53 |.Rh..d!.(..S..TS| +00000410 8d bd 3d 8b 52 69 c7 33 33 00 97 16 88 ec 4e ca |..=.Ri.33.....N.| +00000420 24 2c c6 ee 5f d1 0a 1b dc 48 bf 26 83 c9 46 62 |$,.._....H.&..Fb| +00000430 96 de 7d 86 3e 26 c5 76 6d 40 fb 2c 69 de 07 4f |..}.>&.vm@.,i..O| +00000440 02 59 b4 17 37 28 4a 79 a8 03 3a 0c 40 80 84 2a |.Y..7(Jy..:.@..*| +00000450 a8 fc 85 c5 81 78 27 47 d8 53 7d bb f0 ab 1d 6c |.....x'G.S}....l| +00000460 d1 2d 99 87 b0 1d 17 b5 6b 9c a0 a2 85 9c c7 35 |.-......k......5| +00000470 17 03 03 00 35 03 bc 74 3e 5a 74 d8 76 a8 82 fc |....5..t>Zt.v...| +00000480 c3 a2 60 1a e7 43 b7 7e c7 9d 37 fc 2e e3 ac f9 |..`..C.~..7.....| +00000490 f7 3f 4a fd 85 47 01 1f 69 33 69 76 a7 3c 00 80 |.?J..G..i3iv.<..| +000004a0 f9 b1 74 8a a2 c5 6a 2f c0 55 |..t...j/.U| >>> Flow 4 (server to client) -00000000 17 03 03 02 83 ff fd 91 5d c1 d5 70 ae 57 f3 5f |........]..p.W._| -00000010 a6 bd 88 30 d8 8d ad d2 f5 fe 58 9a 79 b5 dd fa |...0......X.y...| -00000020 1d c3 39 00 5c 0d 0c 80 53 06 5d 36 0e f7 10 04 |..9.\...S.]6....| -00000030 26 ea 86 67 23 63 b8 a2 0b 12 1c 71 cf 8e 4d 13 |&..g#c.....q..M.| -00000040 79 31 2e 65 8f 9e cc 73 70 85 9e dc 91 9e 08 b3 |y1.e...sp.......| -00000050 17 ac 65 28 1a 51 a1 71 44 7b 0a 12 d8 89 21 9a |..e(.Q.qD{....!.| -00000060 28 a2 cb bf a2 c7 c1 e2 48 51 53 ba 2f 94 07 1f |(.......HQS./...| -00000070 39 08 37 8f 0b b8 a0 d1 19 bb d2 9c d1 b4 3f 11 |9.7...........?.| -00000080 8e f7 75 40 24 0f 69 06 75 c4 b7 a0 10 7b 2e 38 |..u@$.i.u....{.8| -00000090 19 fa 55 8f 1a 93 a3 29 de 1d 5c a2 91 18 89 d1 |..U....)..\.....| -000000a0 d7 ed 37 6a 9c 2b c4 9a 40 f2 b2 ab d8 3f 45 5b |..7j.+..@....?E[| -000000b0 1e 2a ad 53 bf 7c a6 01 36 2f 1b bb b5 a5 9b 85 |.*.S.|..6/......| -000000c0 7d 81 d8 15 e3 1c b2 d3 d5 6c 40 85 af 68 58 5b |}........l@..hX[| -000000d0 51 a6 e8 c0 57 5f f2 0d 5d 48 c1 1b 6a ec 2b c9 |Q...W_..]H..j.+.| -000000e0 b3 32 f1 4a b8 18 85 62 e1 0f c3 d5 a7 10 d4 8e |.2.J...b........| -000000f0 01 14 c0 04 f4 9c 19 bb b4 06 79 85 28 1e 2a a7 |..........y.(.*.| -00000100 27 17 a0 c4 0b eb b2 0e 8b 5f 5d c3 4b 64 66 2c |'........_].Kdf,| -00000110 6d a2 7c 13 54 6c 65 93 3e 0a e5 26 7f db 79 dc |m.|.Tle.>..&..y.| -00000120 aa c5 8b 3a a4 b4 10 5a 1e f6 ea 76 43 7c b2 52 |...:...Z...vC|.R| -00000130 38 cc df e0 4f ad fa d4 00 38 11 08 99 14 f7 e8 |8...O....8......| -00000140 2e e0 7a d2 b6 28 f6 13 02 3b 31 4a c2 5b 38 dd |..z..(...;1J.[8.| -00000150 77 e5 9c b8 e1 80 c6 ac 96 c6 c8 b3 54 8e 47 28 |w...........T.G(| -00000160 3a 3a 96 b8 70 60 29 c2 ea 11 43 2d e3 5d 69 a0 |::..p`)...C-.]i.| -00000170 8a f5 da 76 85 77 45 e4 75 ea 5e 2a 72 f4 9d 42 |...v.wE.u.^*r..B| -00000180 31 59 0d ed c3 7d ef dd 85 fe 47 01 0e e3 25 62 |1Y...}....G...%b| -00000190 98 fd 22 21 e3 37 b9 71 15 d6 0b 45 fd 53 cb c2 |.."!.7.q...E.S..| -000001a0 8f ec 60 32 47 d2 ad c1 c8 2b 24 8f 35 9f 3d 48 |..`2G....+$.5.=H| -000001b0 42 30 62 20 01 4a 6b 09 5c ef 8b ad 1b 06 71 15 |B0b .Jk.\.....q.| -000001c0 ff d0 9e 5e 48 22 0c f1 1d 76 7d 6b e7 ca 7d 15 |...^H"...v}k..}.| -000001d0 51 2e c5 18 fe 34 4e ab 86 a9 79 69 9e 82 57 61 |Q....4N...yi..Wa| -000001e0 ee e6 7d 83 15 c7 bb c2 81 d4 50 ca e2 16 96 bd |..}.......P.....| -000001f0 3b 7e d9 1b 5e 53 e7 db dc 0d 6f e3 74 37 97 f2 |;~..^S....o.t7..| -00000200 a8 25 89 25 e5 66 fd a8 1a 97 74 83 f7 ea 3d 07 |.%.%.f....t...=.| -00000210 73 ec 19 ec 6d 1b fc 98 1a ea 94 9b 50 7d 0e 96 |s...m.......P}..| -00000220 85 4e d6 a2 df 45 2e c6 bc 11 bd a7 ec 87 3d f6 |.N...E........=.| -00000230 7c 82 ef 34 14 1c 66 ae 17 35 21 f4 4e b8 0b 80 ||..4..f..5!.N...| -00000240 d7 94 5c 2f b3 4a 43 76 1c 3a ee ef 1a 85 e4 07 |..\/.JCv.:......| -00000250 59 c9 b9 a6 80 40 7e 26 5c 5a c5 4b c7 31 56 47 |Y....@~&\Z.K.1VG| -00000260 ce ff 71 df 4e a5 aa ff 7b c3 a9 6d d9 00 07 eb |..q.N...{..m....| -00000270 52 bf 43 d3 6c bb b6 62 8b 8c 0f 16 2b b5 f7 87 |R.C.l..b....+...| -00000280 b8 d8 b4 a4 0f 8c 66 7b 17 03 03 00 1e 8e de e3 |......f{........| -00000290 5f 2e da 6e 2e 30 a8 01 54 24 a2 31 d5 8f 32 53 |_..n.0..T$.1..2S| -000002a0 b6 f3 66 a6 bd f3 dc 9b e0 2d 11 17 03 03 00 13 |..f......-......| -000002b0 0a 99 1d d7 2e 56 e9 46 0a 40 49 36 57 1f 22 f0 |.....V.F.@I6W.".| -000002c0 0a 6d 6d |.mm| +00000000 17 03 03 03 b9 95 9d ae 1f 9b bb ce e0 ae cd eb |................| +00000010 8f aa 1b 7c cf a9 6a db 06 27 e3 02 66 af 12 54 |...|..j..'..f..T| +00000020 f8 55 3d f5 d0 f0 c3 94 54 69 7c 86 61 b7 18 b8 |.U=.....Ti|.a...| +00000030 7f 4f fc ac 77 a8 fc 2f 7e 0d 7b ce 5f 1c 41 46 |.O..w../~.{._.AF| +00000040 1f 08 cc eb 0e 0e 21 c7 65 3b 4b f3 e7 e2 26 2f |......!.e;K...&/| +00000050 92 70 0e 38 6d fb a0 10 5c 9a 3d 1c a2 17 70 82 |.p.8m...\.=...p.| +00000060 a5 29 d8 f1 d4 bc 8a 8b de 9f 41 a6 56 ce 31 d2 |.)........A.V.1.| +00000070 7d 7f ce c8 16 fd 74 45 01 11 b0 8a ad 2c 77 c8 |}.....tE.....,w.| +00000080 c3 23 55 4f 08 06 f4 5d 64 9a 91 b4 cc 2a af 7a |.#UO...]d....*.z| +00000090 a0 d7 01 be 8b 32 59 34 f3 5d 72 aa de 00 17 8c |.....2Y4.]r.....| +000000a0 54 11 99 64 0d ff 7d 03 eb cf 8b ed fe cc 9a db |T..d..}.........| +000000b0 35 0e b9 24 1f eb b2 ec 94 12 bc 56 c4 79 64 00 |5..$.......V.yd.| +000000c0 db 55 eb ca e5 af ba 61 23 23 b7 4c fa 52 f5 37 |.U.....a##.L.R.7| +000000d0 db 64 7a bf c0 cb 4e 14 e8 4d 33 89 61 66 c7 c5 |.dz...N..M3.af..| +000000e0 76 84 75 c4 37 a6 60 49 51 4b db ba 4f 92 83 b6 |v.u.7.`IQK..O...| +000000f0 3a 9f b3 5c e7 0e aa 6b 12 73 5a 50 8d 21 6c 22 |:..\...k.sZP.!l"| +00000100 29 ca 7e d0 a9 5c 29 e5 c0 44 01 62 03 d3 9a 6f |).~..\)..D.b...o| +00000110 1c 20 cb 4e ff 7b 55 0c d5 a2 fc 2a 58 12 8e 32 |. .N.{U....*X..2| +00000120 29 1a 7a 30 05 de 55 78 a7 3b 90 9c 3d 62 fe af |).z0..Ux.;..=b..| +00000130 4d 99 c1 43 a0 67 65 76 c2 af 90 25 77 04 3c 22 |M..C.gev...%w.<"| +00000140 77 86 f4 62 90 99 5a f2 b1 12 0d 6e ec 23 60 d5 |w..b..Z....n.#`.| +00000150 f7 55 14 ab 47 fc 63 57 9b dd d4 78 42 c9 d1 0b |.U..G.cW...xB...| +00000160 df 5e f9 d8 6d 8c 74 90 22 63 db a6 04 27 6e 11 |.^..m.t."c...'n.| +00000170 ab 18 7a 9c 6d 68 80 ea cd 56 99 68 2c 78 32 43 |..z.mh...V.h,x2C| +00000180 bd bc 71 a4 b6 e5 61 22 40 90 4d 53 42 c4 57 24 |..q...a"@.MSB.W$| +00000190 1b 38 ca e5 d7 5b 31 14 b9 46 a1 59 77 15 3f dc |.8...[1..F.Yw.?.| +000001a0 c0 4c 05 ad 72 95 6e d3 8e 60 37 6f 07 79 eb b9 |.L..r.n..`7o.y..| +000001b0 5b 23 26 9f f7 24 6e f3 f3 c6 04 8f 7b c1 5d db |[#&..$n.....{.].| +000001c0 e9 e5 7a d1 ca 54 b1 5d ed 09 65 b8 24 c0 15 1b |..z..T.]..e.$...| +000001d0 8d c0 97 cc ed 11 c0 89 a9 e5 05 e6 3b 06 14 0c |............;...| +000001e0 74 7a ac f7 7d 33 1d d2 3e 04 f1 c8 95 8d 46 e0 |tz..}3..>.....F.| +000001f0 80 49 39 4d 6c c6 f8 00 8d 9d 9a 84 5d 74 03 4d |.I9Ml.......]t.M| +00000200 24 ac cc 3a ce aa 60 98 8f 01 0b 0f 80 4d 94 5c |$..:..`......M.\| +00000210 0a d6 7e b2 84 a3 72 c2 f8 8d b5 7d f6 fd 8e 2a |..~...r....}...*| +00000220 a3 c4 7a f6 02 df a1 20 b4 e9 8e 31 50 df 00 0f |..z.... ...1P...| +00000230 ac 62 09 9f 52 ad 83 a0 1b ec 22 7f d8 13 f1 3b |.b..R....."....;| +00000240 68 cd ac d4 b2 00 12 70 7b 4a bc 74 72 02 c1 1f |h......p{J.tr...| +00000250 82 86 ef f1 15 ef a3 61 e5 33 5c ba c6 ff 00 c6 |.......a.3\.....| +00000260 07 e0 96 64 12 61 72 be d9 0c 52 87 41 f9 80 ce |...d.ar...R.A...| +00000270 43 8c dd a9 93 a2 85 b5 af fc 65 69 71 d7 8a 57 |C.........eiq..W| +00000280 7c 31 a2 da 64 0d fa 58 c8 08 4e 49 92 1d 64 1f ||1..d..X..NI..d.| +00000290 f1 64 3c 83 09 20 09 b8 28 77 92 a9 18 ec 15 c5 |.d<.. ..(w......| +000002a0 8d f6 4b 4e 39 75 73 50 df c5 8f 36 77 1c 08 6e |..KN9usP...6w..n| +000002b0 29 97 63 e2 0f 94 d5 ac 5e 6d 2c 64 df 3c fb 10 |).c.....^m,d.<..| +000002c0 b4 d8 16 54 5c 15 2b ee ad f6 c4 d1 0a 73 33 bc |...T\.+......s3.| +000002d0 eb 2d f2 4f 9e b3 84 2f 8f 52 65 58 52 b4 4e 0a |.-.O.../.ReXR.N.| +000002e0 df fb b5 b5 9c af 7e b9 3e c3 4e cf ed 86 b6 3a |......~.>.N....:| +000002f0 a6 d7 92 58 4f 7d de 78 bc 56 5c f6 f8 b7 d7 84 |...XO}.x.V\.....| +00000300 3c 72 2d 46 d1 56 cd 5b b4 62 65 37 76 63 66 70 |{\.| +00000390 c2 00 f2 2b 20 6e 7a 20 68 99 fb cb e9 84 69 06 |...+ nz h.....i.| +000003a0 e6 fb 5b 63 31 a3 cc 11 f2 68 c1 3f dc a4 81 d4 |..[c1....h.?....| +000003b0 8a be 35 42 9d 25 46 ca 16 dd 06 cb 51 85 17 03 |..5B.%F.....Q...| +000003c0 03 00 1e 6f 2f 0e ee ea 5b 35 c2 7c 04 1d 0c 3b |...o/...[5.|...;| +000003d0 e0 c3 e6 45 90 d9 26 ff ac cf bc 64 db f8 9b 65 |...E..&....d...e| +000003e0 41 17 03 03 00 13 f4 44 09 a3 10 e0 60 5d 9c 39 |A......D....`].9| +000003f0 be 61 49 3b fa dd d6 f9 d5 |.aI;.....| diff --git a/src/crypto/tls/tls_test.go b/src/crypto/tls/tls_test.go index e2b1aa01c7c2ec..f6e26d55b4b875 100644 --- a/src/crypto/tls/tls_test.go +++ b/src/crypto/tls/tls_test.go @@ -37,7 +37,23 @@ import ( "golang.org/x/crypto/cryptobyte" ) -var rsaCertPEM = `-----BEGIN CERTIFICATE----- +var testTime = func() time.Time { return time.Unix(1476984729, 0) } + +var testConfigServer = &Config{ + Time: testTime, + Certificates: []Certificate{testECDSAP256Cert, testRSA2048Cert, testEd25519Cert, testSNICert}, + ClientCAs: testClientRootCertPool, +} + +var testConfigClient = &Config{ + Time: testTime, + Certificates: []Certificate{testClientECDSAP256Cert, testClientRSA2048Cert, testClientEd25519Cert}, + RootCAs: testRootCertPool, + ServerName: "test.golang.example", +} + +func TestX509KeyPair(t *testing.T) { + var rsaCertPEM = `-----BEGIN CERTIFICATE----- MIIB0zCCAX2gAwIBAgIJAI/M7BYjwB+uMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX aWRnaXRzIFB0eSBMdGQwHhcNMTIwOTEyMjE1MjAyWhcNMTUwOTEyMjE1MjAyWjBF @@ -51,7 +67,7 @@ r5QuVbpQhH6u+0UgcW0jp9QwpxoPTLTWGXEWBBBurxFwiCBhkQ+V -----END CERTIFICATE----- ` -var rsaKeyPEM = testingKey(`-----BEGIN RSA TESTING KEY----- + var rsaKeyPEM = testingKey(`-----BEGIN RSA TESTING KEY----- MIIBOwIBAAJBANLJhPHhITqQbPklG3ibCVxwGMRfp/v4XqhfdQHdcVfHap6NQ5Wo k/4xIA+ui35/MmNartNuC+BdZ1tMuVCPFZcCAwEAAQJAEJ2N+zsR0Xn8/Q6twa4G 6OB1M1WO+k+ztnX/1SvNeWu8D6GImtupLTYgjZcHufykj09jiHmjHx8u8ZZB/o1N @@ -62,9 +78,9 @@ D2lWusoe2/nEqfDVVWGWlyJ7yOmqaVm/iNUN9B2N2g== -----END RSA TESTING KEY----- `) -// keyPEM is the same as rsaKeyPEM, but declares itself as just -// "PRIVATE KEY", not "RSA PRIVATE KEY". https://golang.org/issue/4477 -var keyPEM = testingKey(`-----BEGIN TESTING KEY----- + // keyPEM is the same as rsaKeyPEM, but declares itself as just + // "PRIVATE KEY", not "RSA PRIVATE KEY". https://golang.org/issue/4477 + var keyPEM = testingKey(`-----BEGIN TESTING KEY----- MIIBOwIBAAJBANLJhPHhITqQbPklG3ibCVxwGMRfp/v4XqhfdQHdcVfHap6NQ5Wo k/4xIA+ui35/MmNartNuC+BdZ1tMuVCPFZcCAwEAAQJAEJ2N+zsR0Xn8/Q6twa4G 6OB1M1WO+k+ztnX/1SvNeWu8D6GImtupLTYgjZcHufykj09jiHmjHx8u8ZZB/o1N @@ -75,7 +91,7 @@ D2lWusoe2/nEqfDVVWGWlyJ7yOmqaVm/iNUN9B2N2g== -----END TESTING KEY----- `) -var ecdsaCertPEM = `-----BEGIN CERTIFICATE----- + var ecdsaCertPEM = `-----BEGIN CERTIFICATE----- MIIB/jCCAWICCQDscdUxw16XFDAJBgcqhkjOPQQBMEUxCzAJBgNVBAYTAkFVMRMw EQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0 eSBMdGQwHhcNMTIxMTE0MTI0MDQ4WhcNMTUxMTE0MTI0MDQ4WjBFMQswCQYDVQQG @@ -90,7 +106,7 @@ H5jBImIxPL4WxQNiBTexAkF8D1EtpYuWdlVQ80/h/f4pBcGiXPqX5h2PQSQY7hP1 -----END CERTIFICATE----- ` -var ecdsaKeyPEM = testingKey(`-----BEGIN EC PARAMETERS----- + var ecdsaKeyPEM = testingKey(`-----BEGIN EC PARAMETERS----- BgUrgQQAIw== -----END EC PARAMETERS----- -----BEGIN EC TESTING KEY----- @@ -102,17 +118,16 @@ kohxS/xfFg/TEwRSSws+roJr4JFKpO2t3/be5OdqmQ== -----END EC TESTING KEY----- `) -var keyPairTests = []struct { - algo string - cert string - key string -}{ - {"ECDSA", ecdsaCertPEM, ecdsaKeyPEM}, - {"RSA", rsaCertPEM, rsaKeyPEM}, - {"RSA-untyped", rsaCertPEM, keyPEM}, // golang.org/issue/4477 -} + var keyPairTests = []struct { + algo string + cert string + key string + }{ + {"ECDSA", ecdsaCertPEM, ecdsaKeyPEM}, + {"RSA", rsaCertPEM, rsaKeyPEM}, + {"RSA-untyped", rsaCertPEM, keyPEM}, // golang.org/issue/4477 + } -func TestX509KeyPair(t *testing.T) { t.Parallel() var pem []byte for _, test := range keyPairTests { @@ -125,9 +140,7 @@ func TestX509KeyPair(t *testing.T) { t.Errorf("Failed to load %s key followed by %s cert: %s", test.algo, test.algo, err) } } -} -func TestX509KeyPairErrors(t *testing.T) { _, err := X509KeyPair([]byte(rsaKeyPEM), []byte(rsaCertPEM)) if err == nil { t.Fatalf("X509KeyPair didn't return an error when arguments were switched") @@ -157,9 +170,7 @@ Zm9vZm9vZm9v if subStr := "NONSENSE"; !strings.Contains(err.Error(), subStr) { t.Fatalf("Expected %q in the error when both arguments to X509KeyPair were nonsense, but the error was %q", subStr, err) } -} -func TestX509MixedKeyPair(t *testing.T) { if _, err := X509KeyPair([]byte(rsaCertPEM), []byte(ecdsaKeyPEM)); err == nil { t.Error("Load of RSA certificate succeeded with ECDSA private key") } @@ -297,7 +308,7 @@ func TestDeadlineOnWrite(t *testing.T) { srvCh <- nil return } - srv := Server(sconn, testConfig.Clone()) + srv := Server(sconn, testConfigServer.Clone()) if err := srv.Handshake(); err != nil { srvCh <- nil return @@ -305,7 +316,7 @@ func TestDeadlineOnWrite(t *testing.T) { srvCh <- srv }() - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.MaxVersion = VersionTLS12 conn, err := Dial("tcp", ln.Addr().String(), clientConfig) if err != nil { @@ -435,7 +446,7 @@ func testConnReadNonzeroAndEOF(t *testing.T, delay time.Duration) error { srvCh <- nil return } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() srv := Server(sconn, serverConfig) if err := srv.Handshake(); err != nil { serr = fmt.Errorf("handshake: %v", err) @@ -445,7 +456,7 @@ func testConnReadNonzeroAndEOF(t *testing.T, delay time.Duration) error { srvCh <- srv }() - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() // In TLS 1.3, alerts are encrypted and disguised as application data, so // the opportunistic peek won't work. clientConfig.MaxVersion = VersionTLS12 @@ -485,6 +496,9 @@ func TestTLSUniqueMatches(t *testing.T) { ln := newLocalListener(t) defer ln.Close() + serverConfig := testConfigServer.Clone() + serverConfig.MaxVersion = VersionTLS12 // TLSUnique is not defined in TLS 1.3 + serverTLSUniques := make(chan []byte) parentDone := make(chan struct{}) childDone := make(chan struct{}) @@ -497,8 +511,6 @@ func TestTLSUniqueMatches(t *testing.T) { t.Error(err) return } - serverConfig := testConfig.Clone() - serverConfig.MaxVersion = VersionTLS12 // TLSUnique is not defined in TLS 1.3 srv := Server(sconn, serverConfig) if err := srv.Handshake(); err != nil { t.Error(err) @@ -512,7 +524,7 @@ func TestTLSUniqueMatches(t *testing.T) { } }() - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.ClientSessionCache = NewLRUClientSessionCache(1) conn, err := Dial("tcp", ln.Addr().String(), clientConfig) if err != nil { @@ -630,7 +642,7 @@ func TestConnCloseBreakingWrite(t *testing.T) { srvCh <- nil return } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() srv := Server(sconn, serverConfig) if err := srv.Handshake(); err != nil { serr = fmt.Errorf("handshake: %v", err) @@ -650,7 +662,7 @@ func TestConnCloseBreakingWrite(t *testing.T) { Conn: cconn, } - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() tconn := Client(conn, clientConfig) if err := tconn.Handshake(); err != nil { t.Fatal(err) @@ -707,7 +719,7 @@ func TestConnCloseWrite(t *testing.T) { } defer sconn.Close() - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() srv := Server(sconn, serverConfig) if err := srv.Handshake(); err != nil { return fmt.Errorf("handshake: %v", err) @@ -737,7 +749,7 @@ func TestConnCloseWrite(t *testing.T) { clientCloseWrite := func() error { defer close(clientDoneChan) - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() conn, err := Dial("tcp", ln.Addr().String(), clientConfig) if err != nil { return err @@ -792,7 +804,7 @@ func TestConnCloseWrite(t *testing.T) { t.Fatal(err) } defer netConn.Close() - conn := Client(netConn, testConfig.Clone()) + conn := Client(netConn, testConfigClient.Clone()) if err := conn.CloseWrite(); err != errEarlyCloseWrite { t.Errorf("CloseWrite error = %v; want errEarlyCloseWrite", err) @@ -811,7 +823,7 @@ func TestWarningAlertFlood(t *testing.T) { } defer sconn.Close() - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() srv := Server(sconn, serverConfig) if err := srv.Handshake(); err != nil { return fmt.Errorf("handshake: %v", err) @@ -833,7 +845,7 @@ func TestWarningAlertFlood(t *testing.T) { errChan := make(chan error, 1) go func() { errChan <- server() }() - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.MaxVersion = VersionTLS12 // there are no warning alerts in TLS 1.3 conn, err := Dial("tcp", ln.Addr().String(), clientConfig) if err != nil { @@ -1035,7 +1047,7 @@ func throughput(b *testing.B, version uint16, totalBytes int64, dynamicRecordSiz // (cannot call b.Fatal in goroutine) panic(fmt.Errorf("accept: %v", err)) } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.CipherSuites = nil // the defaults may prefer faster ciphers serverConfig.DynamicRecordSizingDisabled = dynamicRecordSizingDisabled srv := Server(sconn, serverConfig) @@ -1049,7 +1061,7 @@ func throughput(b *testing.B, version uint16, totalBytes int64, dynamicRecordSiz }() b.SetBytes(totalBytes) - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.CipherSuites = nil // the defaults may prefer faster ciphers clientConfig.DynamicRecordSizingDisabled = dynamicRecordSizingDisabled clientConfig.MaxVersion = version @@ -1133,7 +1145,7 @@ func latency(b *testing.B, version uint16, bps int, dynamicRecordSizingDisabled // (cannot call b.Fatal in goroutine) panic(fmt.Errorf("accept: %v", err)) } - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.DynamicRecordSizingDisabled = dynamicRecordSizingDisabled srv := Server(&slowConn{sconn, bps}, serverConfig) if err := srv.Handshake(); err != nil { @@ -1143,7 +1155,7 @@ func latency(b *testing.B, version uint16, bps int, dynamicRecordSizingDisabled } }() - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.DynamicRecordSizingDisabled = dynamicRecordSizingDisabled clientConfig.MaxVersion = version @@ -1197,19 +1209,19 @@ func TestConnectionStateMarshal(t *testing.T) { } func TestConnectionState(t *testing.T) { - issuer, err := x509.ParseCertificate(testRSA2048CertificateIssuer) - if err != nil { - panic(err) - } - rootCAs := x509.NewCertPool() - rootCAs.AddCert(issuer) - const alpnProtocol = "golang" - const serverName = "example.golang" + const serverName = "test.golang.example" var scts = [][]byte{[]byte("dummy sct 1"), []byte("dummy sct 2")} var ocsp = []byte("dummy ocsp") checkConnectionState := func(t *testing.T, cs ConnectionState, version uint16, isClient bool) { + // On the client, the peer is the server (testRSA2048Cert under + // testRootCert); on the server, the peer is the client + // (testClientRSA2048Cert under testClientRootCert). + peerLeaf, peerRoot := testRSA2048Cert.Certificate[0], testRootCert.Certificate[0] + if !isClient { + peerLeaf, peerRoot = testClientRSA2048Cert.Certificate[0], testClientRootCert.Certificate[0] + } if cs.Version != version { t.Errorf("got Version %x, expected %x", cs.Version, version) } @@ -1244,18 +1256,18 @@ func TestConnectionState(t *testing.T) { if len(cs.PeerCertificates) != 1 { t.Errorf("got %d PeerCertificates, expected %d", len(cs.PeerCertificates), 1) - } else if !bytes.Equal(cs.PeerCertificates[0].Raw, testRSA2048Certificate) { - t.Errorf("got PeerCertificates %x, expected %x", cs.PeerCertificates[0].Raw, testRSA2048Certificate) + } else if !bytes.Equal(cs.PeerCertificates[0].Raw, peerLeaf) { + t.Errorf("got PeerCertificates %x, expected %x", cs.PeerCertificates[0].Raw, peerLeaf) } if len(cs.VerifiedChains) != 1 { t.Errorf("got %d long verified chain, expected %d", len(cs.VerifiedChains), 1) } else if len(cs.VerifiedChains[0]) != 2 { t.Errorf("got %d verified chain, expected %d", len(cs.VerifiedChains[0]), 2) - } else if !bytes.Equal(cs.VerifiedChains[0][0].Raw, testRSA2048Certificate) { - t.Errorf("got verified chain[0][0] %x, expected %x", cs.VerifiedChains[0][0].Raw, testRSA2048Certificate) - } else if !bytes.Equal(cs.VerifiedChains[0][1].Raw, testRSA2048CertificateIssuer) { - t.Errorf("got verified chain[0][1] %x, expected %x", cs.VerifiedChains[0][1].Raw, testRSA2048CertificateIssuer) + } else if !bytes.Equal(cs.VerifiedChains[0][0].Raw, peerLeaf) { + t.Errorf("got verified chain[0][0] %x, expected %x", cs.VerifiedChains[0][0].Raw, peerLeaf) + } else if !bytes.Equal(cs.VerifiedChains[0][1].Raw, peerRoot) { + t.Errorf("got verified chain[0][1] %x, expected %x", cs.VerifiedChains[0][1].Raw, peerRoot) } // Only TLS 1.3 supports OCSP and SCTs on client certs. @@ -1342,24 +1354,34 @@ func TestConnectionState(t *testing.T) { name = "TLSv13" } t.Run(name, func(t *testing.T) { - config := &Config{ + serverCert := testRSA2048Cert + serverCert.SignedCertificateTimestamps = scts + serverCert.OCSPStaple = ocsp + clientCert := testClientRSA2048Cert + clientCert.SignedCertificateTimestamps = scts + clientCert.OCSPStaple = ocsp + + serverConfig := &Config{ + Time: testTime, + Certificates: []Certificate{serverCert}, + MinVersion: v, + MaxVersion: v, + ClientCAs: testClientRootCertPool, + ClientAuth: RequireAndVerifyClientCert, + NextProtos: []string{alpnProtocol}, + } + clientConfig := &Config{ Time: testTime, - Certificates: make([]Certificate, 1), + Certificates: []Certificate{clientCert}, MinVersion: v, MaxVersion: v, - RootCAs: rootCAs, - ClientCAs: rootCAs, - ClientAuth: RequireAndVerifyClientCert, + RootCAs: testRootCertPool, NextProtos: []string{alpnProtocol}, ServerName: serverName, ClientSessionCache: NewLRUClientSessionCache(1), } - config.Certificates[0].Certificate = [][]byte{testRSA2048Certificate} - config.Certificates[0].PrivateKey = testRSA2048PrivateKey - config.Certificates[0].SignedCertificateTimestamps = scts - config.Certificates[0].OCSPStaple = ocsp - ss, cs, err := testHandshake(t, config, config) + ss, cs, err := testHandshake(t, clientConfig, serverConfig) if err != nil { t.Fatalf("handshake failed: %v", err) } @@ -1371,7 +1393,7 @@ func TestConnectionState(t *testing.T) { // TODO: test changing parameters between original and resumed // connection when the protocol allows it. - ss1, cs1, err := testHandshake(t, config, config) + ss1, cs1, err := testHandshake(t, clientConfig, serverConfig) if err != nil { t.Fatalf("handshake failed: %v", err) } @@ -1390,20 +1412,12 @@ func TestConnectionState(t *testing.T) { // Issue 28744: Ensure that we don't modify memory // that Config doesn't own such as Certificates. func TestBuildNameToCertificate_doesntModifyCertificates(t *testing.T) { - c0 := Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - } - c1 := Certificate{ - Certificate: [][]byte{testSNICertificate}, - PrivateKey: testRSAPrivateKey, - } - config := testConfig.Clone() - config.Certificates = []Certificate{c0, c1} + config := testConfigServer.Clone() + config.Certificates = []Certificate{testRSA2048Cert, testSNICert} config.BuildNameToCertificate() got := config.Certificates - want := []Certificate{c0, c1} + want := []Certificate{testRSA2048Cert, testSNICert} if !reflect.DeepEqual(got, want) { t.Fatalf("Certificates were mutated by BuildNameToCertificate\nGot: %#v\nWant: %#v\n", got, want) } @@ -1412,47 +1426,31 @@ func TestBuildNameToCertificate_doesntModifyCertificates(t *testing.T) { func testingKey(s string) string { return strings.ReplaceAll(s, "TESTING KEY", "PRIVATE KEY") } func TestClientHelloInfo_SupportsCertificate(t *testing.T) { - skipFIPS(t) // Test certificates not FIPS compatible. + skipFIPS(t) // SHA-1, Ed25519, and legacy RSA kex test cases not FIPS compatible. - rsaCert := &Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - } - pkcs1Cert := &Certificate{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: testRSAPrivateKey, - SupportedSignatureAlgorithms: []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256}, - } - ecdsaCert := &Certificate{ - // ECDSA P-256 certificate - Certificate: [][]byte{testP256Certificate}, - PrivateKey: testP256PrivateKey, - } - ed25519Cert := &Certificate{ - Certificate: [][]byte{testEd25519Certificate}, - PrivateKey: testEd25519PrivateKey, - } + pkcs1Cert := testRSA2048Cert + pkcs1Cert.SupportedSignatureAlgorithms = []SignatureScheme{PKCS1WithSHA1, PKCS1WithSHA256} tests := []struct { - c *Certificate + c Certificate chi *ClientHelloInfo wantErr string }{ - {rsaCert, &ClientHelloInfo{ - ServerName: "example.golang", + {testRSA2048Cert, &ClientHelloInfo{ + ServerName: "test.golang.example", SignatureSchemes: []SignatureScheme{PSSWithSHA256}, SupportedVersions: []uint16{VersionTLS13}, }, ""}, - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ SignatureSchemes: []SignatureScheme{PSSWithSHA256, ECDSAWithP256AndSHA256}, SupportedVersions: []uint16{VersionTLS13, VersionTLS12}, }, ""}, - {rsaCert, &ClientHelloInfo{ + {testRSA2048Cert, &ClientHelloInfo{ ServerName: "example.com", SignatureSchemes: []SignatureScheme{PSSWithSHA256}, SupportedVersions: []uint16{VersionTLS13}, }, "not valid for requested server name"}, - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ SignatureSchemes: []SignatureScheme{ECDSAWithP384AndSHA384}, SupportedVersions: []uint16{VersionTLS13}, }, "signature algorithms"}, @@ -1461,12 +1459,12 @@ func TestClientHelloInfo_SupportsCertificate(t *testing.T) { SupportedVersions: []uint16{VersionTLS13}, }, "signature algorithms"}, - {rsaCert, &ClientHelloInfo{ + {testRSA2048Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_RSA_WITH_AES_128_GCM_SHA256}, SignatureSchemes: []SignatureScheme{PKCS1WithSHA1}, SupportedVersions: []uint16{VersionTLS13, VersionTLS12}, }, "signature algorithms"}, - {rsaCert, &ClientHelloInfo{ + {testRSA2048Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_RSA_WITH_AES_128_GCM_SHA256}, SignatureSchemes: []SignatureScheme{PKCS1WithSHA1}, SupportedVersions: []uint16{VersionTLS13, VersionTLS12}, @@ -1476,35 +1474,35 @@ func TestClientHelloInfo_SupportsCertificate(t *testing.T) { }, }, ""}, // Check that mutual version selection works. - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, SupportedPoints: []uint8{pointFormatUncompressed}, SignatureSchemes: []SignatureScheme{ECDSAWithP256AndSHA256}, SupportedVersions: []uint16{VersionTLS12}, }, ""}, - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, SupportedPoints: []uint8{pointFormatUncompressed}, SignatureSchemes: []SignatureScheme{ECDSAWithP384AndSHA384}, SupportedVersions: []uint16{VersionTLS12}, }, ""}, // TLS 1.2 does not restrict curves based on the SignatureScheme. - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, SupportedPoints: []uint8{pointFormatUncompressed}, SignatureSchemes: nil, SupportedVersions: []uint16{VersionTLS12}, }, ""}, // TLS 1.2 comes with default signature schemes. - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_RSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, SupportedPoints: []uint8{pointFormatUncompressed}, SignatureSchemes: []SignatureScheme{ECDSAWithP256AndSHA256}, SupportedVersions: []uint16{VersionTLS12}, }, "cipher suite"}, - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, SupportedPoints: []uint8{pointFormatUncompressed}, @@ -1514,21 +1512,21 @@ func TestClientHelloInfo_SupportsCertificate(t *testing.T) { CipherSuites: []uint16{TLS_RSA_WITH_AES_128_GCM_SHA256}, }, }, "cipher suite"}, - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP384}, SupportedPoints: []uint8{pointFormatUncompressed}, SignatureSchemes: []SignatureScheme{ECDSAWithP256AndSHA256}, SupportedVersions: []uint16{VersionTLS12}, }, "certificate curve"}, - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, SupportedPoints: []uint8{1}, SignatureSchemes: []SignatureScheme{ECDSAWithP256AndSHA256}, SupportedVersions: []uint16{VersionTLS12}, }, "only incompatible point formats"}, - {ecdsaCert, &ClientHelloInfo{ + {testECDSAP256Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, SupportedPoints: []uint8{pointFormatUncompressed}, @@ -1536,14 +1534,14 @@ func TestClientHelloInfo_SupportsCertificate(t *testing.T) { SupportedVersions: []uint16{VersionTLS12}, }, "signature algorithms"}, - {ed25519Cert, &ClientHelloInfo{ + {testEd25519Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, // only relevant for ECDHE support SupportedPoints: []uint8{pointFormatUncompressed}, SignatureSchemes: []SignatureScheme{Ed25519}, SupportedVersions: []uint16{VersionTLS12}, }, ""}, - {ed25519Cert, &ClientHelloInfo{ + {testEd25519Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{CurveP256}, // only relevant for ECDHE support SupportedPoints: []uint8{pointFormatUncompressed}, @@ -1551,7 +1549,7 @@ func TestClientHelloInfo_SupportsCertificate(t *testing.T) { SupportedVersions: []uint16{VersionTLS10}, config: &Config{MinVersion: VersionTLS10}, }, "doesn't support Ed25519"}, - {ed25519Cert, &ClientHelloInfo{ + {testEd25519Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, SupportedCurves: []CurveID{}, SupportedPoints: []uint8{pointFormatUncompressed}, @@ -1559,14 +1557,14 @@ func TestClientHelloInfo_SupportsCertificate(t *testing.T) { SupportedVersions: []uint16{VersionTLS12}, }, "doesn't support ECDHE"}, - {rsaCert, &ClientHelloInfo{ + {testRSA2048Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA}, SupportedCurves: []CurveID{CurveP256}, // only relevant for ECDHE support SupportedPoints: []uint8{pointFormatUncompressed}, SupportedVersions: []uint16{VersionTLS10}, config: &Config{MinVersion: VersionTLS10}, }, ""}, - {rsaCert, &ClientHelloInfo{ + {testRSA2048Cert, &ClientHelloInfo{ CipherSuites: []uint16{TLS_RSA_WITH_AES_128_GCM_SHA256}, SupportedVersions: []uint16{VersionTLS12}, config: &Config{ @@ -1575,7 +1573,7 @@ func TestClientHelloInfo_SupportsCertificate(t *testing.T) { }, ""}, // static RSA fallback } for i, tt := range tests { - err := tt.chi.SupportsCertificate(tt.c) + err := tt.chi.SupportsCertificate(&tt.c) switch { case tt.wantErr == "" && err != nil: t.Errorf("%d: unexpected error: %v", i, err) @@ -1838,12 +1836,12 @@ func (s brokenSigner) Sign(rand io.Reader, digest []byte, opts crypto.SignerOpts // TestPKCS1OnlyCert uses a client certificate with a broken crypto.Signer that // always makes PKCS #1 v1.5 signatures, so can't be used with RSA-PSS. func TestPKCS1OnlyCert(t *testing.T) { - clientConfig := testConfig.Clone() + clientConfig := testConfigClient.Clone() clientConfig.Certificates = []Certificate{{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: brokenSigner{testRSAPrivateKey}, + Certificate: testClientRSA2048Cert.Certificate, + PrivateKey: brokenSigner{testClientRSA2048Key}, }} - serverConfig := testConfig.Clone() + serverConfig := testConfigServer.Clone() serverConfig.MaxVersion = VersionTLS12 // TLS 1.3 doesn't support PKCS #1 v1.5 serverConfig.ClientAuth = RequireAnyClientCert @@ -1863,8 +1861,6 @@ func TestPKCS1OnlyCert(t *testing.T) { } func TestVerifyCertificates(t *testing.T) { - skipFIPS(t) // Test certificates not FIPS compatible. - // See https://go.dev/issue/31641. t.Run("TLSv12", func(t *testing.T) { testVerifyCertificates(t, VersionTLS12) }) t.Run("TLSv13", func(t *testing.T) { testVerifyCertificates(t, VersionTLS13) }) @@ -1915,13 +1911,6 @@ func testVerifyCertificates(t *testing.T, version uint16) { }, } - issuer, err := x509.ParseCertificate(testRSACertificateIssuer) - if err != nil { - t.Fatal(err) - } - rootCAs := x509.NewCertPool() - rootCAs.AddCert(issuer) - for _, test := range tests { t.Run(test.name, func(t *testing.T) { t.Parallel() @@ -1929,15 +1918,13 @@ func testVerifyCertificates(t *testing.T, version uint16) { var serverVerifyConnection, clientVerifyConnection bool var serverVerifyPeerCertificates, clientVerifyPeerCertificates bool - clientConfig := testConfig.Clone() - clientConfig.Time = testTime + clientConfig := testConfigClient.Clone() clientConfig.MaxVersion = version clientConfig.MinVersion = version - clientConfig.RootCAs = rootCAs - clientConfig.ServerName = "example.golang" clientConfig.ClientSessionCache = NewLRUClientSessionCache(1) - serverConfig := clientConfig.Clone() - serverConfig.ClientCAs = rootCAs + serverConfig := testConfigServer.Clone() + serverConfig.MaxVersion = version + serverConfig.MinVersion = version clientConfig.VerifyConnection = func(cs ConnectionState) error { clientVerifyConnection = true @@ -2139,8 +2126,8 @@ func TestHandshakeMLKEM(t *testing.T) { }, } - baseConfig := testConfig.Clone() - baseConfig.CurvePreferences = nil + baseServerConfig := testConfigServer.Clone() + baseClientConfig := testConfigClient.Clone() for _, test := range tests { t.Run(test.name, func(t *testing.T) { if fips140tls.Required() && test.expectSelected == X25519 { @@ -2151,7 +2138,7 @@ func TestHandshakeMLKEM(t *testing.T) { } else { t.Parallel() } - serverConfig := baseConfig.Clone() + serverConfig := baseServerConfig.Clone() if test.serverConfig != nil { test.serverConfig(serverConfig) } @@ -2165,7 +2152,7 @@ func TestHandshakeMLKEM(t *testing.T) { } return nil, nil } - clientConfig := baseConfig.Clone() + clientConfig := baseClientConfig.Clone() if test.clientConfig != nil { test.clientConfig(clientConfig) } @@ -2219,7 +2206,7 @@ func TestX509KeyPairPopulateCertificate(t *testing.T) { certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER}) t.Run("x509keypairleaf=0", func(t *testing.T) { - t.Setenv("GODEBUG", "x509keypairleaf=0") + testenv.SetGODEBUG(t, "x509keypairleaf=0") cert, err := X509KeyPair(certPEM, keyPEM) if err != nil { t.Fatal(err) @@ -2229,7 +2216,7 @@ func TestX509KeyPairPopulateCertificate(t *testing.T) { } }) t.Run("x509keypairleaf=1", func(t *testing.T) { - t.Setenv("GODEBUG", "x509keypairleaf=1") + testenv.SetGODEBUG(t, "x509keypairleaf=1") cert, err := X509KeyPair(certPEM, keyPEM) if err != nil { t.Fatal(err) @@ -2259,7 +2246,7 @@ func TestEarlyLargeCertMsg(t *testing.T) { }() expectedErr := "tls: handshake message of length 131071 bytes exceeds maximum of 65536 bytes" - servConn := Server(server, testConfig) + servConn := Server(server, testConfigServer.Clone()) err := servConn.Handshake() if err == nil { t.Fatal("unexpected success") @@ -2291,7 +2278,7 @@ func TestLargeCertMsg(t *testing.T) { t.Fatal(err) } - clientConfig, serverConfig := testConfig.Clone(), testConfig.Clone() + clientConfig, serverConfig := testConfigClient.Clone(), testConfigServer.Clone() clientConfig.InsecureSkipVerify = true serverConfig.Certificates = []Certificate{ { @@ -2369,9 +2356,7 @@ func TestECH(t *testing.T) { }) echConfigList := builder.BytesOrPanic() - clientConfig, serverConfig := testConfig.Clone(), testConfig.Clone() - clientConfig.InsecureSkipVerify = false - clientConfig.Rand = rand.Reader + clientConfig, serverConfig := testConfigClient.Clone(), testConfigServer.Clone() clientConfig.Time = nil clientConfig.MinVersion = VersionTLS13 clientConfig.ServerName = "secret.example" @@ -2380,7 +2365,6 @@ func TestECH(t *testing.T) { clientConfig.RootCAs.AddCert(publicCert) clientConfig.EncryptedClientHelloConfigList = echConfigList serverConfig.InsecureSkipVerify = false - serverConfig.Rand = rand.Reader serverConfig.Time = nil serverConfig.MinVersion = VersionTLS13 serverConfig.ServerName = "public.example" @@ -2458,19 +2442,19 @@ func TestMessageSigner(t *testing.T) { } func testMessageSigner(t *testing.T, version uint16) { - clientConfig, serverConfig := testConfig.Clone(), testConfig.Clone() + clientConfig, serverConfig := testConfigClient.Clone(), testConfigServer.Clone() serverConfig.ClientAuth = RequireAnyClientCert clientConfig.MinVersion = version clientConfig.MaxVersion = version serverConfig.MinVersion = version serverConfig.MaxVersion = version clientConfig.Certificates = []Certificate{{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: messageOnlySigner{testRSAPrivateKey}, + Certificate: testClientRSA2048Cert.Certificate, + PrivateKey: messageOnlySigner{testClientRSA2048Key}, }} serverConfig.Certificates = []Certificate{{ - Certificate: [][]byte{testRSACertificate}, - PrivateKey: messageOnlySigner{testRSAPrivateKey}, + Certificate: testRSA2048Cert.Certificate, + PrivateKey: messageOnlySigner{testRSA2048Key}, }} _, _, err := testHandshake(t, clientConfig, serverConfig) @@ -2485,12 +2469,12 @@ func testMessageSigner(t *testing.T, version uint16) { } clientConfig.Certificates = []Certificate{{ - Certificate: [][]byte{testECDSACertificate}, - PrivateKey: messageOnlySigner{testECDSAPrivateKey}, + Certificate: testClientECDSAP256Cert.Certificate, + PrivateKey: messageOnlySigner{testClientECDSAP256Key}, }} serverConfig.Certificates = []Certificate{{ - Certificate: [][]byte{testECDSACertificate}, - PrivateKey: messageOnlySigner{testECDSAPrivateKey}, + Certificate: testECDSAP256Cert.Certificate, + PrivateKey: messageOnlySigner{testECDSAP256Key}, }} _, _, err = testHandshake(t, clientConfig, serverConfig) diff --git a/src/crypto/x509/parser.go b/src/crypto/x509/parser.go index e255f7d604a40a..9203223e763d84 100644 --- a/src/crypto/x509/parser.go +++ b/src/crypto/x509/parser.go @@ -936,7 +936,11 @@ func parseCertificate(der []byte) (*Certificate, error) { cert.SerialNumber = serial var sigAISeq cryptobyte.String - if !tbs.ReadASN1(&sigAISeq, cryptobyte_asn1.SEQUENCE) { + if !tbs.ReadASN1Element(&sigAISeq, cryptobyte_asn1.SEQUENCE) { + return nil, errors.New("x509: malformed signature algorithm identifier") + } + cert.RawSignatureAlgorithm = sigAISeq + if !sigAISeq.ReadASN1(&sigAISeq, cryptobyte_asn1.SEQUENCE) { return nil, errors.New("x509: malformed signature algorithm identifier") } // Before parsing the inner algorithm identifier, extract @@ -1143,7 +1147,11 @@ func ParseRevocationList(der []byte) (*RevocationList, error) { } var sigAISeq cryptobyte.String - if !tbs.ReadASN1(&sigAISeq, cryptobyte_asn1.SEQUENCE) { + if !tbs.ReadASN1Element(&sigAISeq, cryptobyte_asn1.SEQUENCE) { + return nil, errors.New("x509: malformed signature algorithm identifier") + } + rl.RawSignatureAlgorithm = sigAISeq + if !sigAISeq.ReadASN1(&sigAISeq, cryptobyte_asn1.SEQUENCE) { return nil, errors.New("x509: malformed signature algorithm identifier") } // Before parsing the inner algorithm identifier, extract diff --git a/src/crypto/x509/x509.go b/src/crypto/x509/x509.go index 7953b615f50d56..b2cb888fbc1cb2 100644 --- a/src/crypto/x509/x509.go +++ b/src/crypto/x509/x509.go @@ -707,6 +707,7 @@ type Certificate struct { RawSubjectPublicKeyInfo []byte // DER encoded SubjectPublicKeyInfo. RawSubject []byte // DER encoded Subject RawIssuer []byte // DER encoded Issuer + RawSignatureAlgorithm []byte // DER encoded AlgorithmIdentifier Signature []byte SignatureAlgorithm SignatureAlgorithm @@ -1914,6 +1915,7 @@ type CertificateRequest struct { RawTBSCertificateRequest []byte // Certificate request info part of raw ASN.1 DER content. RawSubjectPublicKeyInfo []byte // DER encoded SubjectPublicKeyInfo. RawSubject []byte // DER encoded Subject. + RawSignatureAlgorithm []byte // DER encoded AlgorithmIdentifier. Version int Signature []byte @@ -1966,8 +1968,12 @@ type tbsCertificateRequest struct { type certificateRequest struct { Raw asn1.RawContent TBSCSR tbsCertificateRequest - SignatureAlgorithm pkix.AlgorithmIdentifier - SignatureValue asn1.BitString + SignatureAlgorithm struct { + Raw asn1.RawContent + Algorithm asn1.ObjectIdentifier + Parameters asn1.RawValue `asn1:"optional"` + } + SignatureValue asn1.BitString } // oidExtensionRequest is a PKCS #9 OBJECT IDENTIFIER that indicates requested @@ -2202,11 +2208,12 @@ func CreateCertificateRequest(rand io.Reader, template *CertificateRequest, priv return nil, err } - return asn1.Marshal(certificateRequest{ - TBSCSR: tbsCSR, - SignatureAlgorithm: algorithmIdentifier, - SignatureValue: asn1.BitString{Bytes: signature, BitLength: len(signature) * 8}, - }) + cr := certificateRequest{} + cr.TBSCSR = tbsCSR + cr.SignatureAlgorithm.Algorithm = algorithmIdentifier.Algorithm + cr.SignatureAlgorithm.Parameters = algorithmIdentifier.Parameters + cr.SignatureValue = asn1.BitString{Bytes: signature, BitLength: len(signature) * 8} + return asn1.Marshal(cr) } // ParseCertificateRequest parses a single certificate request from the @@ -2230,9 +2237,13 @@ func parseCertificateRequest(in *certificateRequest) (*CertificateRequest, error RawTBSCertificateRequest: in.TBSCSR.Raw, RawSubjectPublicKeyInfo: in.TBSCSR.PublicKey.Raw, RawSubject: in.TBSCSR.Subject.FullBytes, + RawSignatureAlgorithm: in.SignatureAlgorithm.Raw, - Signature: in.SignatureValue.RightAlign(), - SignatureAlgorithm: getSignatureAlgorithmFromAI(in.SignatureAlgorithm), + Signature: in.SignatureValue.RightAlign(), + SignatureAlgorithm: getSignatureAlgorithmFromAI(pkix.AlgorithmIdentifier{ + Algorithm: in.SignatureAlgorithm.Algorithm, + Parameters: in.SignatureAlgorithm.Parameters, + }), PublicKeyAlgorithm: getPublicKeyAlgorithmFromOID(in.TBSCSR.PublicKey.Algorithm.Algorithm), @@ -2327,6 +2338,9 @@ type RevocationList struct { RawTBSRevocationList []byte // RawIssuer contains the DER encoded Issuer. RawIssuer []byte + // RawSignatureAlgorithm contains the DER encoded signature algorithm as a + // PKIX AlgorithmIdentifier. + RawSignatureAlgorithm []byte // Issuer contains the DN of the issuing certificate. Issuer pkix.Name diff --git a/src/crypto/x509/x509_test.go b/src/crypto/x509/x509_test.go index f08af3a133090b..5e04fd11c36e02 100644 --- a/src/crypto/x509/x509_test.go +++ b/src/crypto/x509/x509_test.go @@ -3506,6 +3506,87 @@ Qc4= } } +func TestRawSignatureAlgorithm(t *testing.T) { + // checkAI verifies that raw is a DER-encoded AlgorithmIdentifier with the + // expected OID. + checkAI := func(t *testing.T, raw []byte, wantOID asn1.ObjectIdentifier) { + t.Helper() + if len(raw) == 0 { + t.Fatal("RawSignatureAlgorithm is empty") + } + var ai pkix.AlgorithmIdentifier + rest, err := asn1.Unmarshal(raw, &ai) + if err != nil { + t.Fatalf("failed to unmarshal RawSignatureAlgorithm: %s", err) + } + if len(rest) != 0 { + t.Fatalf("trailing data after RawSignatureAlgorithm: %x", rest) + } + if !ai.Algorithm.Equal(wantOID) { + t.Fatalf("unexpected OID: got %v, want %v", ai.Algorithm, wantOID) + } + } + + t.Run("Certificate", func(t *testing.T) { + p, _ := pem.Decode([]byte(pemCertificate)) + cert, err := ParseCertificate(p.Bytes) + if err != nil { + t.Fatalf("failed to parse certificate: %s", err) + } + checkAI(t, cert.RawSignatureAlgorithm, oidSignatureSHA256WithRSA) + }) + + priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + t.Fatalf("failed to generate key: %s", err) + } + + t.Run("CertificateRequest", func(t *testing.T) { + csrDER, err := CreateCertificateRequest(rand.Reader, &CertificateRequest{}, priv) + if err != nil { + t.Fatalf("failed to create CSR: %s", err) + } + csr, err := ParseCertificateRequest(csrDER) + if err != nil { + t.Fatalf("failed to parse CSR: %s", err) + } + checkAI(t, csr.RawSignatureAlgorithm, oidSignatureECDSAWithSHA256) + }) + + t.Run("RevocationList", func(t *testing.T) { + issuerTmpl := &Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{CommonName: "issuer"}, + NotBefore: time.Now(), + NotAfter: time.Now().Add(time.Hour), + KeyUsage: KeyUsageCRLSign, + IsCA: true, + BasicConstraintsValid: true, + } + issuerDER, err := CreateCertificate(rand.Reader, issuerTmpl, issuerTmpl, priv.Public(), priv) + if err != nil { + t.Fatalf("failed to create issuer: %s", err) + } + issuer, err := ParseCertificate(issuerDER) + if err != nil { + t.Fatalf("failed to parse issuer: %s", err) + } + crlDER, err := CreateRevocationList(rand.Reader, &RevocationList{ + Number: big.NewInt(1), + ThisUpdate: time.Now(), + NextUpdate: time.Now().Add(time.Hour), + }, issuer, priv) + if err != nil { + t.Fatalf("failed to create CRL: %s", err) + } + crl, err := ParseRevocationList(crlDER) + if err != nil { + t.Fatalf("failed to parse CRL: %s", err) + } + checkAI(t, crl.RawSignatureAlgorithm, oidSignatureECDSAWithSHA256) + }) +} + func TestParseCertificateRawEquals(t *testing.T) { p, _ := pem.Decode([]byte(pemCertificate)) cert, err := ParseCertificate(p.Bytes) diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 752f90091425a8..b6cb6d0ea0b973 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -685,9 +685,6 @@ var depsRules = ` net/http, net/http/internal/ascii < net/http/cookiejar, net/http/httputil; - net/http, flag - < net/http/httptest; - net/http, regexp < net/http/cgi < net/http/fcgi; @@ -732,6 +729,12 @@ var depsRules = ` testing, crypto/rand < testing/cryptotest; + NET, internal/gate + < internal/nettest; + + net/http, flag, internal/nettest, testing + < net/http/httptest; + FMT, crypto/sha256, encoding/binary, encoding/json, go/ast, go/parser, go/token, internal/godebug, math/rand, encoding/hex diff --git a/src/go/internal/gcimporter/genmeth_test.go b/src/go/internal/gcimporter/genmeth_test.go index 63b8858af3c0d2..07b053d5e574dd 100644 --- a/src/go/internal/gcimporter/genmeth_test.go +++ b/src/go/internal/gcimporter/genmeth_test.go @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build goexperiment.genericmethods - package gcimporter_test import ( diff --git a/src/go/printer/printer.go b/src/go/printer/printer.go index 5a6127c6b40dd7..b2541956e7248e 100644 --- a/src/go/printer/printer.go +++ b/src/go/printer/printer.go @@ -739,7 +739,9 @@ func (p *printer) intersperseComments(next token.Position, tok token.Token) (wro for p.commentBefore(next) { list := p.comment.List changed := false - if p.lastTok != token.IMPORT && // do not rewrite cgo's import "C" comments + + if tok != token.IDENT && + p.lastTok != token.IMPORT && // do not rewrite cgo's import "C" comments p.posFor(p.comment.Pos()).Column == 1 && p.posFor(p.comment.End()+1) == next { // Unindented comment abutting next token position: diff --git a/src/go/printer/printer_test.go b/src/go/printer/printer_test.go index 604b8e5aea3a22..a212eee39540cd 100644 --- a/src/go/printer/printer_test.go +++ b/src/go/printer/printer_test.go @@ -479,6 +479,46 @@ func g() { } } +func TestIssue52605(t *testing.T) { + const orig = ` +package p + +// Doc +// +type T struct { +// This is not +// a doc comment. +X int +} +` + + const want = `package p + +// Doc +type T struct { + // This is not + // a doc comment. + X int +} +` + + f, err := parser.ParseFile(fset, "src.go", orig, parser.ParseComments) + if err != nil { + t.Fatal(err) + } + + var buf bytes.Buffer + err = Fprint(&buf, fset, f) + if err != nil { + t.Fatal(err) + } + + got := buf.String() + if got != want { + t.Errorf("got:\n%s\nwant:\n%s\n", got, want) + } +} + var decls = []string{ `import "fmt"`, "const pi = 3.1415\nconst e = 2.71828\n\nvar x = pi", diff --git a/src/internal/nettest/conn.go b/src/internal/nettest/conn.go new file mode 100644 index 00000000000000..4f605f11a718d4 --- /dev/null +++ b/src/internal/nettest/conn.go @@ -0,0 +1,437 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest + +import ( + "bytes" + "errors" + "io" + "math" + "net" + "net/netip" + "os" + "time" +) + +// Conn is an in-memory test implementation of net.Conn. +type Conn struct { + // Conns come in pairs. + // Writes to one Conn are read by its peer, and vice-versa. + // + // A connHalf handles one direction of data flow. + // A Conn consists of read and write halves. + // A Conn's peer has the same halves, only swapped. + // + // A Conn reads from r and writes to w. + r, w *connHalf + + // peer is the other endpoint. + peer *Conn +} + +// NewConnPair returns a pair of connected Conns. +func NewConnPair() (*Conn, *Conn) { + return newConnPair( + net.TCPAddrFromAddrPort(netip.MustParseAddrPort("127.0.0.1:10000")), + net.TCPAddrFromAddrPort(netip.MustParseAddrPort("127.0.0.1:10001")), + ) +} + +func newConnPair(addr1, addr2 net.Addr) (*Conn, *Conn) { + h1 := newConnHalf(addr1) + h2 := newConnHalf(addr2) + c1 := &Conn{r: h1, w: h2} + c2 := &Conn{r: h2, w: h1} + c1.peer = c2 + c2.peer = c1 + c1.SetReadBufferSize(-1) + c2.SetReadBufferSize(-1) + return c1, c2 +} + +// Peer returns the other end of the connection. +func (c *Conn) Peer() *Conn { + return c.peer +} + +// Read reads data from the connection. +func (c *Conn) Read(b []byte) (n int, err error) { + n, err = c.r.read(b) + if err != nil && err != io.EOF { + err = &net.OpError{ + Op: "read", + Net: "tcp", + Source: c.RemoteAddr(), + Addr: c.LocalAddr(), + Err: err, + } + } + return n, err +} + +// CanRead reports whether Read can proceed without blocking. +func (c *Conn) CanRead() bool { + return c.r.canRead() +} + +// Write writes data to the connection. +func (c *Conn) Write(b []byte) (n int, err error) { + n, err = c.w.write(b) + if err != nil { + err = &net.OpError{ + Op: "write", + Net: "tcp", + Source: c.LocalAddr(), + Addr: c.RemoteAddr(), + Err: err, + } + } + return n, err +} + +// IsClosed reports whether the connection has been closed. +// A connection is closed if [CloseRead] and [CloseWrite] are both called, +// or if [Close] is called. +// +// To identify when the other side of the Conn has been closed, +// use Conn.Peer().IsClosed(). +func (c *Conn) IsClosed() bool { + c.r.lock() + readClosed := c.r.readClosed + c.r.unlock() + c.w.lock() + writeClosed := c.w.writeClosed + c.w.unlock() + return readClosed && writeClosed +} + +var errClosedByPeer = errors.New("connection closed by peer") + +// CloseRead shuts down the reading side of the connection. +func (c *Conn) CloseRead() error { + c.r.lock() + defer c.r.unlock() + c.r.buf.Reset() // discard unread data + c.r.readClosed = true + return nil +} + +// CloseWrite shuts down the writing side of the connection. +func (c *Conn) CloseWrite() error { + c.w.lock() + defer c.w.unlock() + c.w.writeClosed = true + return nil +} + +// Close closes the connection. +func (c *Conn) Close() error { + c.r.lock() + readClosed := c.r.readClosed + c.r.buf.Reset() // discard unread data + c.r.readClosed = true + err := c.r.closeErr + c.r.unlock() + + c.w.lock() + writeClosed := c.w.writeClosed + c.w.writeClosed = true + c.w.unlock() + + if readClosed && writeClosed { + err = net.ErrClosed + } + if err != nil { + err = &net.OpError{ + Op: "close", + Net: "tcp", + Addr: c.LocalAddr(), + Err: err, + } + } + return err +} + +// SetCloseError sets the error returned by Close. +// Close still closes the connection. +// A nil error restores the usual behavior. +func (c *Conn) SetCloseError(err error) { + c.r.lock() + c.r.closeErr = err + c.r.unlock() +} + +// LocalAddr returns the (fake) local network address. +func (c *Conn) LocalAddr() net.Addr { + c.r.lock() + defer c.r.unlock() + return c.r.addr +} + +// SetLocalAddr sets the local address. +// +// To set the remote address, set the local address of Conn's peer. +func (c *Conn) SetLocalAddr(addr net.Addr) { + c.r.lock() + defer c.r.unlock() + c.r.addr = addr +} + +// LocalAddr returns the (fake) remote network address. +func (c *Conn) RemoteAddr() net.Addr { + c.r.lock() + defer c.r.unlock() + return c.w.addr +} + +// SetDeadline sets the read and write deadlines for the connection. +func (c *Conn) SetDeadline(t time.Time) error { + c.SetReadDeadline(t) + c.SetWriteDeadline(t) + return nil +} + +// SetReadDeadline sets the read deadline for the connection. +func (c *Conn) SetReadDeadline(t time.Time) error { + c.r.readDeadline.setDeadline(c.r, t) + return nil +} + +// SetWriteDeadline sets the write deadline for the connection. +func (c *Conn) SetWriteDeadline(t time.Time) error { + c.w.writeDeadline.setDeadline(c.w, t) + return nil +} + +// SetReadBufferSize sets the connection's read buffer. +// Writes to the other end of the connection will block so long as the buffer is full. +// Setting the size to 0 blocks all writes until the size is increased. +func (c *Conn) SetReadBufferSize(size int) { + if size < 0 { + size = math.MaxInt + } + c.r.setBufferSize(size) +} + +// SetReadError causes any currently blocked and future Read calls to return +// a net.OpError wrapping err. It does not affect the other half of the connection. +// Reads will return any buffered data before returning the error, +// including data written after the error is set and io.EOF after the other end is closed. +// A nil error restores the usual behavior. +func (c *Conn) SetReadError(err error) { + c.r.lock() + defer c.r.unlock() + c.r.readErr = err +} + +// SetWriteError causes any currently blocked and future Write calls to return +// a net.OpError wrapping err. It does not affect the other half of the connection. +// Writes will not write data to the connection buffer while an error is set. +// A nil error restores the usual behavior. +func (c *Conn) SetWriteError(err error) { + c.w.lock() + defer c.w.unlock() + c.w.writeErr = err +} + +// connHalf is one direction data flow in a Conn. +// The connHalf contains a buffer. +// Writes to the connHalf push to the buffer and reads pull from it. +type connHalf struct { + addr net.Addr + + // A half can be readable and/or writable. + // + // These four channels act as a lock, + // and allow waiting for readability/writability. + // When the half is unlocked, exactly one channel contains a value. + // When the half is locked, all channels are empty. + lockr chan struct{} // readable + lockw chan struct{} // writable + lockrw chan struct{} // readable and writable + lockc chan struct{} // neither readable nor writable + + // Read and write timeouts. + readDeadline, writeDeadline connDeadline + + bufMax int // maximum buffer size + buf bytes.Buffer + + readClosed, writeClosed bool + readErr, writeErr error // errors returned by reads/writes + closeErr error // error returned by closing the conn reading from this half +} + +func newConnHalf(addr net.Addr) *connHalf { + h := &connHalf{ + addr: addr, + lockw: make(chan struct{}, 1), + lockr: make(chan struct{}, 1), + lockrw: make(chan struct{}, 1), + lockc: make(chan struct{}, 1), + bufMax: math.MaxInt, // unlimited + } + h.unlock() + return h +} + +// lock locks h. +func (h *connHalf) lock() { + select { + case <-h.lockw: // writable + case <-h.lockr: // readable + case <-h.lockrw: // readable and writable + case <-h.lockc: // neither readable nor writable + } +} + +// unlock unlocks h. +func (h *connHalf) unlock() { + canRead := h.canReadLocked() + canWrite := h.canWriteLocked() + switch { + case canRead && canWrite: + h.lockrw <- struct{}{} // readable and writable + case canRead: + h.lockr <- struct{}{} // readable + case canWrite: + h.lockw <- struct{}{} // writable + default: + h.lockc <- struct{}{} // neither readable nor writable + } +} + +func (h *connHalf) canRead() bool { + h.lock() + defer h.unlock() + return h.canReadLocked() +} + +func (h *connHalf) canReadLocked() bool { + return h.readErr != nil || h.readDeadline.expired || h.buf.Len() > 0 || h.readClosed || h.writeClosed +} + +func (h *connHalf) canWriteLocked() bool { + return h.writeErr != nil || h.writeDeadline.expired || h.bufMax > h.buf.Len() || h.readClosed || h.writeClosed +} + +// waitAndLockForRead waits until h is readable and locks it. +func (h *connHalf) waitAndLockForRead() { + select { + case <-h.lockr: + // readable + case <-h.lockrw: + // readable and writable + } +} + +// waitAndLockForWrite waits until h is writable and locks it. +func (h *connHalf) waitAndLockForWrite() { + select { + case <-h.lockw: + // writable + case <-h.lockrw: + // readable and writable + } +} + +func (h *connHalf) read(b []byte) (n int, err error) { + h.waitAndLockForRead() + defer h.unlock() + if h.readClosed { + return 0, net.ErrClosed + } + if h.readDeadline.expired { + return 0, os.ErrDeadlineExceeded + } + if h.buf.Len() > 0 { + return h.buf.Read(b) + } + if h.writeClosed { + return 0, io.EOF + } + return 0, h.readErr +} + +func (h *connHalf) setBufferSize(size int) { + h.lock() + defer h.unlock() + h.bufMax = size +} + +func (h *connHalf) write(b []byte) (n int, err error) { + for n < len(b) { + nn, err := h.writePartial(b[n:]) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (h *connHalf) writePartial(b []byte) (n int, err error) { + h.waitAndLockForWrite() + defer h.unlock() + if h.writeClosed { + return 0, net.ErrClosed + } + if h.writeDeadline.expired { + return 0, os.ErrDeadlineExceeded + } + if h.readClosed { + return 0, errClosedByPeer + } + if h.writeErr != nil { + return 0, h.writeErr + } + writeMax := h.bufMax - h.buf.Len() + if writeMax < len(b) { + b = b[:writeMax] + } + return h.buf.Write(b) +} + +type connDeadline struct { + timer *time.Timer + expired bool +} + +type locker interface { + lock() + unlock() +} + +func (d *connDeadline) setDeadline(mu locker, t time.Time) { + mu.lock() + defer mu.unlock() + if d.timer != nil { + d.timer.Stop() + d.timer = nil + } + if t.IsZero() { + // No deadline. + d.expired = false + return + } + expiry := time.Until(t) + if expiry <= 0 { + // Deadline has already passed. + d.expired = true + return + } + // Deadline is in the future. + d.expired = false + var timer *time.Timer + timer = time.AfterFunc(expiry, func() { + mu.lock() + defer mu.unlock() + if d.timer == timer { + d.timer = nil + d.expired = true + } + }) + d.timer = timer +} diff --git a/src/internal/nettest/conn_test.go b/src/internal/nettest/conn_test.go new file mode 100644 index 00000000000000..afd98ea611b8af --- /dev/null +++ b/src/internal/nettest/conn_test.go @@ -0,0 +1,450 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest_test + +import ( + "bytes" + "errors" + "internal/nettest" + "io" + "net" + "os" + "testing" + "testing/synctest" + "time" +) + +func TestConnReadWrite(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + cliConn, srvConn := nettest.NewConnPair() + + cliData := []byte("hello") + srvData := []byte("HELLO") + if n, err := cliConn.Write(cliData); n != len(cliData) || err != nil { + t.Fatalf("cliConn.Write(%q) = %v, %v; want %v, nil", cliData, n, err, len(cliData)) + } + if err := cliConn.CloseWrite(); err != nil { + t.Fatalf("cliConn.CloseWrite() = %v, want nil", err) + } + if n, err := srvConn.Write(srvData); n != len(srvData) || err != nil { + t.Fatalf("srvConn.Write(%q) = %v, %v; want %v, nil", srvData, n, err, len(srvData)) + } + if err := srvConn.CloseWrite(); err != nil { + t.Fatalf("cliConn.CloseWrite() = %v, want nil", err) + } + gotCli, err := io.ReadAll(cliConn) + if !bytes.Equal(gotCli, srvData) || err != nil { + t.Fatalf("io.ReadAll(cliConn) = %q, %v; want %v, nil", gotCli, err, srvData) + } + gotSrv, err := io.ReadAll(srvConn) + if !bytes.Equal(gotSrv, cliData) || err != nil { + t.Fatalf("io.ReadAll(srvConn) = %q, %v; want %v, nil", gotSrv, err, cliData) + } + }) +} + +func TestConnZeroBuffer(t *testing.T) { + // Exercise the case where one side of the conn is blocked writing and the + // other side is blocked reading. + // This can only happen when the read buffer has been set to 0, blocking all writes. + synctest.Test(t, func(t *testing.T) { + rconn, wconn := nettest.NewConnPair() + rconn.SetReadBufferSize(0) + var readDone, writeDone bool + go func() { + rconn.Read(make([]byte, 100)) + readDone = true + }() + go func() { + wconn.Write([]byte("a")) + writeDone = true + }() + synctest.Wait() + if readDone || writeDone { + t.Errorf("before unblocking: readDone=%v, writeDone=%v; want false", readDone, writeDone) + } + wconn.Close() + synctest.Wait() + if !readDone || !writeDone { + t.Errorf("after unblocking: readDone=%v, writeDone=%v; want true", readDone, writeDone) + } + }) +} + +func TestConnPartialWrite(t *testing.T) { + // A blocking write to a conn successfully writes some, but not all data. + synctest.Test(t, func(t *testing.T) { + const readSize = 5 + data := []byte("0123456789") + rconn, wconn := nettest.NewConnPair() + rconn.SetReadBufferSize(1) + go func() { + got := make([]byte, readSize) + if n, err := io.ReadFull(rconn, got); n != readSize || err != nil { + t.Errorf("io.ReadFull() = %v, %v; want %v, nil", n, err, readSize) + } + if want := data[:readSize]; !bytes.Equal(got, want) { + t.Errorf("read %q, want %q", got, want) + } + rconn.Close() + }() + n, err := wconn.Write(data) + if n != readSize+1 || err == nil { + t.Errorf("Write() = %v, %v; want %v, error", n, err, readSize+1) + } + }) +} + +func TestConnReadDeadline(t *testing.T) { + for _, unblock := range []struct { + name string + f func(*nettest.Conn) + }{{ + name: "Write", + f: func(c *nettest.Conn) { + c.Write([]byte("x")) + }, + }, { + name: "Close", + f: func(c *nettest.Conn) { + c.Close() + }, + }, { + name: "CloseWrite", + f: func(c *nettest.Conn) { + c.CloseWrite() + }, + }} { + for _, setDeadline := range []struct { + name string + f func(*nettest.Conn, time.Time) error + }{{ + name: "SetDeadline", + f: (*nettest.Conn).SetDeadline, + }, { + name: "SetReadDeadline", + f: (*nettest.Conn).SetReadDeadline, + }} { + t.Run(unblock.name+"/"+setDeadline.name, func(t *testing.T) { + testDeadline(t, func() deadlineTest { + rconn, wconn := nettest.NewConnPair() + return deadlineTest{ + what: "Read()", + block: func() error { + _, err := rconn.Read(make([]byte, 1)) + return err + }, + unblock: func() { + unblock.f(wconn) + }, + setDeadline: func(d time.Duration) { + setDeadline.f(rconn, time.Now().Add(d)) + }, + } + }) + }) + } + } +} + +func TestConnWriteDeadline(t *testing.T) { + for _, unblock := range []struct { + name string + f func(*nettest.Conn) + }{{ + name: "Read", + f: func(c *nettest.Conn) { + io.Copy(io.Discard, c) + }, + }, { + name: "Close", + f: func(c *nettest.Conn) { + c.Close() + }, + }, { + name: "CloseRead", + f: func(c *nettest.Conn) { + c.CloseRead() + }, + }} { + for _, setDeadline := range []struct { + name string + f func(*nettest.Conn, time.Time) error + }{{ + name: "SetDeadline", + f: (*nettest.Conn).SetDeadline, + }, { + name: "SetWriteDeadline", + f: (*nettest.Conn).SetWriteDeadline, + }} { + t.Run(unblock.name+"/"+setDeadline.name, func(t *testing.T) { + testDeadline(t, func() deadlineTest { + rconn, wconn := nettest.NewConnPair() + rconn.SetReadBufferSize(1) + return deadlineTest{ + what: "Write()", + block: func() error { + _, err := wconn.Write([]byte("1234")) + wconn.Close() + return err + }, + unblock: func() { + go unblock.f(rconn) + }, + setDeadline: func(d time.Duration) { + setDeadline.f(wconn, time.Now().Add(d)) + }, + } + }) + }) + } + } +} + +func TestConnCanRead(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + rconn, wconn := nettest.NewConnPair() + if got, want := rconn.CanRead(), false; got != want { + t.Fatalf("before writing data: rconn.CanRead() = %v, want %v", got, want) + } + wconn.Write([]byte("a")) + if got, want := rconn.CanRead(), true; got != want { + t.Fatalf("after writing data: rconn.CanRead() = %v, want %v", got, want) + } + rconn.Read(make([]byte, 1)) + if got, want := rconn.CanRead(), false; got != want { + t.Fatalf("after reading data: rconn.CanRead() = %v, want %v", got, want) + } + wconn.Close() + if got, want := rconn.CanRead(), true; got != want { + t.Fatalf("after closing: rconn.CanRead() = %v, want %v", got, want) + } + }) +} + +func TestConnIsClosed(t *testing.T) { + for _, test := range []struct { + name string + f func() *nettest.Conn + want bool + }{{ + name: "unclosed", + f: func() *nettest.Conn { + conn, _ := nettest.NewConnPair() + return conn + }, + want: false, + }, { + name: "closed", + f: func() *nettest.Conn { + conn, _ := nettest.NewConnPair() + conn.Close() + return conn + }, + want: true, + }, { + name: "read-closed", + f: func() *nettest.Conn { + conn, _ := nettest.NewConnPair() + conn.CloseRead() + return conn + }, + want: false, + }, { + name: "write-closed", + f: func() *nettest.Conn { + conn, _ := nettest.NewConnPair() + conn.CloseWrite() + return conn + }, + want: false, + }, { + name: "read-write-closed", + f: func() *nettest.Conn { + conn, _ := nettest.NewConnPair() + conn.CloseRead() + conn.CloseWrite() + return conn + }, + want: true, + }} { + synctestSubtest(t, test.name, func(t *testing.T) { + conn := test.f() + if got, want := conn.IsClosed(), test.want; got != want { + t.Fatalf("conn.IsClosed() = %v, want %v", got, want) + } + if got, want := conn.Peer().IsClosed(), false; got != want { + t.Fatalf("conn.Peer().IsClosed() = %v, want %v", got, want) + } + }) + } +} + +var anyError = errors.New("any") // anyError is passed to isOpError to match any error + +func isOpError(err, want error) bool { + oe, ok := err.(*net.OpError) + return ok && (oe.Err == want || want == anyError) +} + +func wantConnReadBytes(t *testing.T, c *nettest.Conn, want []byte) { + t.Helper() + got := make([]byte, len(want)) + n, err := io.ReadFull(c, got) + if n < len(want) || err != nil { + t.Fatalf("io.ReadFull = %v, %v; want %v, nil", n, err, len(want)) + } + + if !bytes.Equal(got, want) { + t.Fatalf("io.ReadFull read %q, want %q", got, want) + } +} + +func wantConnReadErr(t *testing.T, c *nettest.Conn, want error) { + t.Helper() + n, err := c.Read(make([]byte, 1)) + if want == io.EOF { + if n != 0 || err != io.EOF { + t.Fatalf("c.Read() = %v, %v; want 0, io.EOF", n, err) + } + } else { + if n != 0 || !isOpError(err, want) { + t.Fatalf("c.Read() = %v, %v; want 0, OpError{Err: %q}", n, err, want) + } + } +} + +func wantConnReadBlocked(t *testing.T, c *nettest.Conn) { + done := false + go func() { + n, err := c.Read(make([]byte, 1)) + if n != 0 || !errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("c.Read() = %v, %v; want 0, ErrDeadlineExceeded", n, err) + } + done = true + }() + synctest.Wait() + if done { + t.Fatalf("Read unexpectedly returned before setting deadline") + } + c.SetReadDeadline(time.Now().Add(-1 * time.Second)) + synctest.Wait() + c.SetReadDeadline(time.Time{}) + if !done { + t.Fatalf("Read unexpectedly did not return after setting deadline") + } +} + +func TestConnSetReadError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + wantErr := errors.New("error") + rconn, wconn := nettest.NewConnPair() + rconn.SetReadError(wantErr) + + // Consume buffer before returning error. + wconn.Write([]byte("one")) + wantConnReadBytes(t, rconn, []byte("one")) + wantConnReadErr(t, rconn, wantErr) + + // Write more to the buffer, suppressing error until buffer drains again. + wconn.Write([]byte("two")) + wantConnReadBytes(t, rconn, []byte("two")) + wantConnReadErr(t, rconn, wantErr) + + // Error may be cleared. + rconn.SetReadError(nil) + wantConnReadBlocked(t, rconn) + + // Close overrides read error. + rconn.SetReadError(wantErr) + wconn.Write([]byte("three")) + wconn.Close() + wantConnReadBytes(t, rconn, []byte("three")) + wantConnReadErr(t, rconn, io.EOF) + + // Setting another read error does not override Close. + rconn.SetReadError(nil) + wantConnReadErr(t, rconn, io.EOF) + rconn.SetReadError(wantErr) + wantConnReadErr(t, rconn, io.EOF) + + // ErrClosed takes precedence over read error. + rconn.Close() + wantConnReadErr(t, rconn, net.ErrClosed) + }) +} + +func wantConnWriteBytes(t *testing.T, c *nettest.Conn, b []byte) { + t.Helper() + if n, err := c.Write(b); n != len(b) || err != nil { + t.Fatalf("c.Write() = %v, %v; want %v, nil", n, err, len(b)) + } +} + +func wantConnWriteErr(t *testing.T, c *nettest.Conn, want error) { + t.Helper() + n, err := c.Write(make([]byte, 1)) + if n != 0 || !isOpError(err, want) { + t.Fatalf("c.Write() = %v, %v; want 0, OpError{Err: %q}", n, err, want) + } +} + +func TestConnSetWriteError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + wantErr := errors.New("error") + rconn, wconn := nettest.NewConnPair() + wconn.SetWriteError(wantErr) + + // Error blocks writes. + wantConnWriteErr(t, wconn, wantErr) + wantConnReadBlocked(t, rconn) + + // Error may be cleared. + wconn.SetWriteError(nil) + wantConnWriteBytes(t, wconn, []byte("one")) + + // Restoring error does not prevent reading buffered data. + wconn.SetWriteError(wantErr) + wantConnWriteErr(t, wconn, wantErr) + wantConnReadBytes(t, rconn, []byte("one")) + + // Error does not interfere with closing the conn. + wconn.Close() + wantConnReadErr(t, rconn, io.EOF) + }) +} + +func TestConnSetCloseError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + wantErr := errors.New("error") + rconn, wconn := nettest.NewConnPair() + + wconn.SetCloseError(wantErr) + if _, err := wconn.Write([]byte("one")); err != nil { + t.Fatalf("wconn.Write = %v, want success", err) + } + if err := wconn.Close(); !isOpError(err, wantErr) { + t.Fatalf("wconn.Close = %v, want OpError{Err: %v}", err, wantErr) + } + if err := wconn.Close(); !isOpError(err, net.ErrClosed) { + t.Fatalf("wconn.Close = %v, want OpError{Err: net.ErrClosed}", err) + } + wantConnReadBytes(t, rconn, []byte("one")) + wantConnReadErr(t, rconn, io.EOF) + }) +} + +func TestConnCloseReadWriteError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + conn, _ := nettest.NewConnPair() + conn.SetCloseError(errors.New("error")) + if err := conn.CloseRead(); err != nil { + t.Fatalf("conn.CloseRead = %v, want nil", err) + } + if err := conn.CloseWrite(); err != nil { + t.Fatalf("conn.CloseRead = %v, want nil", err) + } + }) +} diff --git a/src/internal/nettest/listener.go b/src/internal/nettest/listener.go new file mode 100644 index 00000000000000..12e68182673970 --- /dev/null +++ b/src/internal/nettest/listener.go @@ -0,0 +1,148 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest + +import ( + "context" + "internal/gate" + "net" + "net/netip" +) + +// Listener is an in-memory test implementation of net.Listener. +type Listener struct { + gate gate.Gate + queue queue[*Conn] + closed bool + acceptErr error + closeErr error + + addr net.Addr + nextaddr netip.AddrPort +} + +// NewListener returns a new Listener. +func NewListener() *Listener { + return &Listener{ + gate: gate.New(false), + addr: net.TCPAddrFromAddrPort(netip.MustParseAddrPort("127.0.0.1:1000")), + nextaddr: netip.MustParseAddrPort("127.0.0.1:10001"), + } +} + +// Close closes the listener. +// Any blocked Accept operations will be unblocked and return errors. +func (li *Listener) Close() error { + li.lock() + defer li.unlock() + err := li.closeErr + li.closed = true + li.acceptErr = net.ErrClosed + li.closeErr = net.ErrClosed + if err != nil { + return &net.OpError{ + Op: "close", + Net: "tcp", + Addr: li.addr, + Err: err, + } + } + return err +} + +// Addr returns the listener's network address. +// +// The address is always a *net.TCPAddr. +func (li *Listener) Addr() net.Addr { + li.lock() + defer li.unlock() + return li.addr +} + +// SetAddr sets the listener's network address. +func (li *Listener) SetAddr(addr net.Addr) { + li.lock() + defer li.unlock() + li.addr = addr +} + +// NewConn returns a new connection to the listener. +// +// Accept will return the other side of the conn. +func (li *Listener) NewConn() *Conn { + return li.NewConnConfig(func(*Conn) {}) +} + +// NewConnConfig returns a new connection to the listener. +// +// The function f is called with the new client connection. +// After f returns, Accept will return the other side of the connection. +// +// For example, to create a connection from a specific IP address: +// +// conn := li.NewConnConfig(func(conn *nettest.Conn) { +// conn.SetLocalAddr(net.TCPAddrFromAddrPort(netip.MustParseAddrPort("10.0.0.1:1234"))) +// }) +func (li *Listener) NewConnConfig(f func(*Conn)) *Conn { + li.lock() + defer li.unlock() + cli, srv := newConnPair( + net.TCPAddrFromAddrPort(li.nextaddr), + li.addr, + ) + li.nextaddr = netip.AddrPortFrom(li.nextaddr.Addr(), li.nextaddr.Port()+1) + f(cli) + li.queue.push(srv) + return cli +} + +// Accept waits for and returns the next connection to the listener. +// +// The connections returned by Accept are always [*Conn]s. +func (li *Listener) Accept() (net.Conn, error) { + li.gate.WaitAndLock(context.Background()) + defer li.unlock() + if li.acceptErr != nil && li.queue.len() == 0 { + return nil, &net.OpError{ + Op: "accept", + Net: "tcp", + Addr: li.addr, + Err: li.acceptErr, + } + } + return li.queue.pop(), nil +} + +// SetAcceptError causes any currently blocked and future Accept calls to return +// a net.OpError wrapping err. +// Accept will return any available connections before returning the error, +// including connections created after the error is set. +// A nil error restores the usual behavior. +func (li *Listener) SetAcceptError(err error) { + li.gate.Lock() + defer li.unlock() + if !li.closed { + li.acceptErr = err + } +} + +// SetCloseError sets the error returned by Close. +// Close still closes the listener. +// A nil error restores the usual behavior. +func (li *Listener) SetCloseError(err error) { + li.gate.Lock() + defer li.unlock() + if !li.closed { + li.closeErr = err + } +} + +func (li *Listener) lock() { + li.gate.Lock() +} + +func (li *Listener) unlock() { + li.gate.Unlock(li.acceptErr != nil || li.queue.len() > 0) +} diff --git a/src/internal/nettest/listener_test.go b/src/internal/nettest/listener_test.go new file mode 100644 index 00000000000000..950f7edebffafa --- /dev/null +++ b/src/internal/nettest/listener_test.go @@ -0,0 +1,212 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest_test + +import ( + "errors" + "internal/nettest" + "io" + "net" + "net/netip" + "slices" + "testing" + "testing/synctest" +) + +func TestListenerNewConn(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + li := nettest.NewListener() + defer li.Close() + + // Create several connections in parallel. + want := []string{"a", "b", "c"} + for i := range len(want) { + go func() { + conn := li.NewConn() + defer conn.Close() + n, err := conn.Write([]byte(want[i])) + if n != len(want[i]) || err != nil { + t.Errorf("conn%v.Write() = %v, %v; want %v, nil", i, n, err, len(want[i])) + } + }() + } + + // Accept the connections in parallel as well. + got := make([]string, len(want)) + for i := range len(want) { + go func() { + conn, err := li.Accept() + if err != nil { + t.Errorf("li.Accept() = %v", err) + } + b, err := io.ReadAll(conn) + if err != nil { + t.Errorf("io.ReadAll(conn%v) = %v", i, err) + } + got[i] = string(b) + }() + } + + synctest.Wait() + slices.Sort(got) + slices.Sort(want) + if !slices.Equal(got, want) { + t.Errorf("connections read %v; want %q", got, want) + } + }) +} + +func TestListenerInterruptAccept(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + li := nettest.NewListener() + + var acceptErr error + go func() { + _, acceptErr = li.Accept() + }() + + synctest.Wait() + if acceptErr != nil { + t.Fatalf("li.Accept() = %v, want still running before close", acceptErr) + } + + li.Close() + synctest.Wait() + if !errors.Is(acceptErr, net.ErrClosed) { + t.Fatalf("li.Accept() = %v, want ErrClosed", acceptErr) + } + }) +} + +func TestListenerAddresses(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + srvaddr := netip.MustParseAddrPort("10.0.0.1:80") + cliaddr := netip.MustParseAddrPort("10.0.0.2:1234") + + li := nettest.NewListener() + defer li.Close() + + li.SetAddr(net.TCPAddrFromAddrPort(srvaddr)) + if got, want := li.Addr().(*net.TCPAddr).AddrPort(), srvaddr; got != want { + t.Errorf("li.Addr() = %v, want %v", got, want) + } + + cli := li.NewConnConfig(func(conn *nettest.Conn) { + conn.SetLocalAddr(net.TCPAddrFromAddrPort(cliaddr)) + }) + srvc, err := li.Accept() + if err != nil { + t.Fatalf("li.Accept() = %v", err) + } + srv := srvc.(*nettest.Conn) + + if cli.Peer() != srv { + t.Errorf("cli.Peer() != srv; should be the same") + } + if srv.Peer() != cli { + t.Errorf("cli.Peer() != srv; should be the same") + } + + if got, want := cli.LocalAddr().(*net.TCPAddr).AddrPort(), cliaddr; got != want { + t.Errorf("cli.LocalAddr() = %v, want %v", got, want) + } + if got, want := cli.RemoteAddr().(*net.TCPAddr).AddrPort(), srvaddr; got != want { + t.Errorf("cli.LocalAddr() = %v, want %v", got, want) + } + if got, want := srv.LocalAddr().(*net.TCPAddr).AddrPort(), srvaddr; got != want { + t.Errorf("srv.LocalAddr() = %v, want %v", got, want) + } + if got, want := srv.RemoteAddr().(*net.TCPAddr).AddrPort(), cliaddr; got != want { + t.Errorf("cli.LocalAddr() = %v, want %v", got, want) + } + }) +} + +func wantListenerAccept(t *testing.T, li *nettest.Listener, want *nettest.Conn) { + t.Helper() + got, err := li.Accept() + if err != nil { + t.Fatalf("li.Accept() = %v, want conn", err) + } + if got != want { + t.Fatalf("li.Accept() returned unexpected conn") + } +} + +func wantListenerAcceptErr(t *testing.T, li *nettest.Listener, want error) { + t.Helper() + got, err := li.Accept() + if got != nil || !isOpError(err, want) { + t.Fatalf("li.Accept() = %p, %v; want nil, OpError{Err: %q}", got, err, want) + } +} + +func wantListenerAcceptBlocked(t *testing.T, li *nettest.Listener) { + cancelErr := errors.New("cancel") + done := false + go func() { + got, err := li.Accept() + if got != nil || !errors.Is(err, cancelErr) { + t.Errorf("li.Accept = %p, %v; want nil, cancelErr", got, err) + } + done = true + }() + synctest.Wait() + if done { + t.Fatalf("Accept unexpectedly returned before canceling") + } + li.SetAcceptError(cancelErr) + synctest.Wait() + li.SetAcceptError(nil) + if !done { + t.Fatalf("Accept unexpectedly did not return after canceling") + } +} + +func TestListenerSetAcceptError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + acceptErr := errors.New("accept error") + li := nettest.NewListener() + defer li.Close() + li.SetAcceptError(acceptErr) + + // Accept conns from queue before returning error. + c1 := li.NewConn() + wantListenerAccept(t, li, c1.Peer()) + wantListenerAcceptErr(t, li, acceptErr) + + // Add a new conn, suppressing error until the queue is empty. + c2 := li.NewConn() + wantListenerAccept(t, li, c2.Peer()) + wantListenerAcceptErr(t, li, acceptErr) + + // Error may be cleared. + li.SetAcceptError(nil) + wantListenerAcceptBlocked(t, li) + + // ErrClosed takes precedence over accept error. + li.SetAcceptError(acceptErr) + li.Close() + wantListenerAcceptErr(t, li, net.ErrClosed) + }) +} + +func TestListenerSetCloseError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + li := nettest.NewListener() + closeErr := errors.New("close error") + li.SetCloseError(closeErr) + + // First close uses the user-provided error. + if err := li.Close(); !isOpError(err, closeErr) { + t.Fatalf("li.Close() = %v; want OpError wrapping accept error", err) + } + + // Repeated closes return ErrClosed. + if err := li.Close(); !isOpError(err, net.ErrClosed) { + t.Fatalf("li.Close() = %v; want OpError wrapping net.ErrClosed", err) + } + }) +} diff --git a/src/internal/nettest/nettest_test.go b/src/internal/nettest/nettest_test.go new file mode 100644 index 00000000000000..d8b7c7d144c9a6 --- /dev/null +++ b/src/internal/nettest/nettest_test.go @@ -0,0 +1,134 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest_test + +import ( + "errors" + "internal/nettest" + "net" + "os" + "sync/atomic" + "testing" + "testing/synctest" + "time" +) + +var ( + _ net.Conn = (*nettest.Conn)(nil) + _ net.Listener = (*nettest.Listener)(nil) + _ net.PacketConn = (*nettest.PacketConn)(nil) +) + +func synctestSubtest(t *testing.T, name string, f func(t *testing.T)) { + t.Run(name, func(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + f(t) + }) + }) +} + +// A deadlineTest describes an operation which blocks until a deadline, +// and a separate operation which unblocks it. +type deadlineTest struct { + what string // name of the blocking op; e.g., "Read" + block func() error // blocking op; e.g., reading from a conn + unblock func() // unblocking op; e.g. writing to the other side + setDeadline func(d time.Duration) // deadline func; e.g., SetReadDeadline +} + +// testDeadline tests a variety of scenarios involving deadlines. +func testDeadline(t *testing.T, setup func() deadlineTest) { + synctestSubtest(t, "no deadline", func(t *testing.T) { + test := setup() + test.unblock() + synctest.Wait() + if err := test.block(); errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("%v: %v, want not deadline exceeded", test.what, err) + } + }) + synctestSubtest(t, "unblock before setdeadline", func(t *testing.T) { + test := setup() + test.unblock() + synctest.Wait() + test.setDeadline(5 * time.Second) + if err := test.block(); errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("%v: %v, want not deadline exceeded", test.what, err) + } + }) + synctestSubtest(t, "unblock after blocking", func(t *testing.T) { + test := setup() + test.setDeadline(5 * time.Second) + var done bool + go func() { + if err := test.block(); errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("%v: %v, want not deadline exceeded", test.what, err) + } + done = true + }() + synctest.Wait() + if done { + t.Fatalf("%v: unexpectedly returned before unblocking", test.what) + } + test.unblock() + synctest.Wait() + if !done { + t.Fatalf("%v: did not return after unblocking", test.what) + } + }) + synctestSubtest(t, "deadline expires", func(t *testing.T) { + test := setup() + start := time.Now() + const delay = 5 * time.Second + test.setDeadline(delay) + var done atomic.Bool + go func() { + if err := test.block(); !errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("%v: %v, want os.ErrDeadlineExceeded", test.what, err) + } + if got, want := time.Since(start), delay; got != want { + t.Errorf("%v: returned after %v, want %v", test.what, got, want) + } + done.Store(true) + }() + synctest.Wait() + if done.Load() { + t.Fatalf("%v: unexpectedly returned before unblocking", test.what) + } + time.Sleep(delay) + synctest.Wait() + if !done.Load() { + t.Fatalf("%v: did not return after deadline", test.what) + } + }) + synctestSubtest(t, "deadline already expired", func(t *testing.T) { + test := setup() + test.setDeadline(-1 * time.Second) + test.unblock() + synctest.Wait() + if err := test.block(); !errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("%v: %v, want os.ErrDeadlineExceeded", test.what, err) + } + }) + synctestSubtest(t, "reduce deadline after blocking", func(t *testing.T) { + test := setup() + test.setDeadline(5 * time.Second) + var done bool + go func() { + if err := test.block(); !errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("%v: %v, want os.ErrDeadlineExceeded", test.what, err) + } + done = true + }() + synctest.Wait() + if done { + t.Fatalf("%v: unexpectedly returned before reducing deadline", test.what) + } + test.setDeadline(-1 * time.Second) + synctest.Wait() + if !done { + t.Fatalf("%v: did not return after deadline", test.what) + } + }) +} diff --git a/src/internal/nettest/packetconn.go b/src/internal/nettest/packetconn.go new file mode 100644 index 00000000000000..b18af899f9ab3e --- /dev/null +++ b/src/internal/nettest/packetconn.go @@ -0,0 +1,250 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest + +import ( + "context" + "errors" + "internal/gate" + "net" + "os" + "slices" + "sync" + "time" +) + +// A PacketNet is a group of communicating [PacketConn]s. +type PacketNet struct { + mu sync.Mutex + conns map[netAddr]*PacketConn +} + +type netAddr struct { + network string + addr string +} + +// NewPacketNet returns a new PacketNet. +func NewPacketNet() *PacketNet { + return &PacketNet{ + conns: make(map[netAddr]*PacketConn), + } +} + +// NewConn returns a new [PacketConn] listening on the given address. +// It returns an error if there is an existing listener on this address. +func (n *PacketNet) NewConn(a net.Addr) (*PacketConn, error) { + n.mu.Lock() + defer n.mu.Unlock() + addrKey := netAddr{a.Network(), a.String()} + if _, ok := n.conns[addrKey]; ok { + return nil, &net.OpError{ + Op: "listen", + Net: "udp", + Addr: a, + Err: errors.New("address is in use"), + } + } + p := &PacketConn{ + gate: gate.New(false), + addr: a, + net: n, + } + n.conns[addrKey] = p + return p, nil +} + +type PacketConn struct { + gate gate.Gate + queue queue[*packet] + closed bool + readErr error + writeErr error + closeErr error + readDeadline connDeadline + + net *PacketNet + addr net.Addr +} + +type packet struct { + b []byte + src net.Addr +} + +// ReadFrom reads a packet from the connection, copying the payload into b. +func (p *PacketConn) ReadFrom(b []byte) (n int, addr net.Addr, err error) { + p.gate.WaitAndLock(context.Background()) + defer p.unlock() + + switch { + case p.closed: + err = net.ErrClosed + case p.readDeadline.expired: + err = os.ErrDeadlineExceeded + case p.queue.len() == 0 && p.readErr != nil: + err = p.readErr + } + if err != nil { + return 0, nil, &net.OpError{ + Op: "read", + Net: "udp", + Addr: p.addr, + Err: err, + } + } + pkt := p.queue.pop() + n = copy(b, pkt.b) + return n, pkt.src, nil +} + +// WriteTo writes a packet with payload b to addr. +// addr must be a [*net.UDPAddr]. +// +// WriteTo appends the packet to the recipient's receive buffer. +// If no recipient is listening on addr or if the recipient's +// receive buffer is full, the packet is silently discarded. +func (p *PacketConn) WriteTo(b []byte, addr net.Addr) (n int, err error) { + p.gate.Lock() + switch { + case p.closed: + err = net.ErrClosed + case p.writeErr != nil: + err = p.writeErr + } + p.unlock() + if err != nil { + return 0, &net.OpError{ + Op: "write", + Net: "udp", + Source: p.addr, + Addr: addr, + Err: err, + } + } + + p.net.mu.Lock() + dst := p.net.conns[netAddr{addr.Network(), addr.String()}] + p.net.mu.Unlock() + + if dst == nil { + // There is no PacketConn listening on the destination address, + // and the packet falls silently into the void. + return len(b), nil + } + + dst.lock() + if !dst.closed { + dst.queue.push(&packet{b: slices.Clone(b), src: p.addr}) + } + dst.unlock() + return len(b), nil +} + +// Close closes the connection. +func (p *PacketConn) Close() error { + p.net.mu.Lock() + delete(p.net.conns, netAddr{p.addr.Network(), p.addr.String()}) + p.net.mu.Unlock() + + p.lock() + defer p.unlock() + err := p.closeErr + p.closed = true + p.readErr = net.ErrClosed + p.writeErr = net.ErrClosed + p.closeErr = net.ErrClosed + if err != nil { + return &net.OpError{ + Op: "close", + Net: "udp", + Addr: p.addr, + Err: err, + } + } + return err +} + +// LocalAddr returns the (fake) local network address. +func (p *PacketConn) LocalAddr() net.Addr { + p.lock() + defer p.unlock() + return p.addr +} + +// SetReadDeadline sets the read deadline for the connection. +// PacketConns have no write deadline. +func (p *PacketConn) SetDeadline(t time.Time) error { + return p.SetReadDeadline(t) +} + +// SetReadDeadline sets the read deadline for the connection. +func (p *PacketConn) SetReadDeadline(t time.Time) error { + p.readDeadline.setDeadline(p, t) + return nil +} + +// SetWriteDeadline has no effect. +// Writes to PacketConns never block. +func (p *PacketConn) SetWriteDeadline(t time.Time) error { + return nil +} + +// SetReadError causes any currently blocked and future ReadFrom calls to return +// a net.OpError wrapping err. It does not affect the other half of the connection. +// Reads will return any buffered data before returning the error, +// including data written after the error is set. +// A nil error restores the usual behavior. +func (c *PacketConn) SetReadError(err error) { + c.lock() + defer c.unlock() + c.readErr = err +} + +// SetWriteError causes any currently blocked and future WriteTo calls to return +// a net.OpError wrapping err. It does not affect the other half of the connection. +// Writes will not write data while an error is set. +// A nil error restores the usual behavior. +func (c *PacketConn) SetWriteError(err error) { + c.lock() + defer c.unlock() + c.writeErr = err +} + +// SetCloseError sets the error returned by Close. +// Close still closes the connection. +// A nil error restores the usual behavior. +func (c *PacketConn) SetCloseError(err error) { + c.lock() + defer c.unlock() + c.closeErr = err +} + +// CanRead reports whether [ReadFrom] can return at least one byte or an error. +// If [ReadFrom] would block, CanRead returns false. +func (p *PacketConn) CanRead() bool { + p.lock() + defer p.unlock() + return p.canReadLocked() +} + +func (p *PacketConn) canReadLocked() bool { + return p.queue.len() > 0 || p.readDeadline.expired || p.closed || p.readErr != nil +} + +// IsClosed reports whether the connection has been closed. +func (p *PacketConn) IsClosed() bool { + p.lock() + defer p.unlock() + return p.closed +} + +func (p *PacketConn) lock() { + p.gate.Lock() +} + +func (p *PacketConn) unlock() { + p.gate.Unlock(p.canReadLocked()) +} diff --git a/src/internal/nettest/packetconn_test.go b/src/internal/nettest/packetconn_test.go new file mode 100644 index 00000000000000..41d15f9d3662b5 --- /dev/null +++ b/src/internal/nettest/packetconn_test.go @@ -0,0 +1,329 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest_test + +import ( + "bytes" + "errors" + "internal/nettest" + "io" + "net" + "net/netip" + "os" + "testing" + "testing/synctest" + "time" +) + +func TestPacketConnListenConflict(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + addr := net.UDPAddrFromAddrPort(netip.MustParseAddrPort("10.0.0.1:1000")) + pnet := nettest.NewPacketNet() + conn, err := pnet.NewConn(addr) + if err != nil { + t.Fatalf("with no existing listener, pnet.NewConn(%v) = %v; want success", addr, err) + } + _, err = pnet.NewConn(addr) + if err == nil { + t.Fatalf("with existing listener, pnet.NewConn(%v) = nil; want error", addr) + } + conn.Close() + _, err = pnet.NewConn(addr) + if err != nil { + t.Fatalf("after closing existing listener, pnet.NewConn(%v) = %v; want success", addr, err) + } + }) +} + +func TestPacketConnReadWrite(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + pnet := nettest.NewPacketNet() + c1 := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + c2 := mustNewPacketConn(t, pnet, "10.0.0.2:2000") + c3 := mustNewPacketConn(t, pnet, "10.0.0.3:3000") + + wantPacketConnWriteTo(t, c1, []byte("1->3"), c3.LocalAddr()) + wantPacketConnWriteTo(t, c2, []byte("2->3"), c3.LocalAddr()) + wantPacketConnWriteTo(t, c3, []byte("3->1"), c1.LocalAddr()) + + wantPacketConnReadBytes(t, c1, []byte("3->1"), c3.LocalAddr()) + wantPacketConnReadBytes(t, c3, []byte("1->3"), c1.LocalAddr()) + wantPacketConnReadBytes(t, c3, []byte("2->3"), c2.LocalAddr()) + wantPacketConnReadBlocked(t, c1) + wantPacketConnReadBlocked(t, c2) + wantPacketConnReadBlocked(t, c3) + + // Write a packet into the void (no listener on this address). + wantPacketConnWriteTo(t, c1, []byte("1->lost"), net.UDPAddrFromAddrPort(netip.MustParseAddrPort("10.0.0.100:1000"))) + }) +} + +func TestPacketConnWriteAddressErrors(t *testing.T) { + t.Skip("TODO: figure out if these should be errors") + + synctest.Test(t, func(t *testing.T) { + pnet := nettest.NewPacketNet() + c4 := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + c6 := mustNewPacketConn(t, pnet, "[::1]:1000") + + wantPacketConnWriteErr(t, c4, c6.LocalAddr(), anyError) // IPv4 -> IPv6 + wantPacketConnWriteErr(t, c6, c4.LocalAddr(), anyError) // IPv6 -> IPv4 + + // Not a *net.UDPAddr. + wantPacketConnWriteErr(t, c4, net.UDPAddrFromAddrPort(netip.MustParseAddrPort("10.0.0.1:1000")), anyError) + }) +} + +func TestPacketConnClose(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + pnet := nettest.NewPacketNet() + pconn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + + wantPacketConnWriteTo(t, pconn, []byte("hello"), pconn.LocalAddr()) + + if err := pconn.Close(); err != nil { + t.Errorf("pconn.Close() = %v, want success", err) + } + if err := pconn.Close(); !isOpError(err, net.ErrClosed) { + t.Errorf("pconn.Close() = %v, want ErrClosed", err) + } + + wantPacketConnReadErr(t, pconn, net.ErrClosed) + wantPacketConnWriteErr(t, pconn, pconn.LocalAddr(), net.ErrClosed) + }) +} + +func TestPacketConnReadDeadline(t *testing.T) { + for _, setDeadline := range []struct { + name string + f func(*nettest.PacketConn, time.Time) error + }{{ + name: "SetDeadline", + f: (*nettest.PacketConn).SetDeadline, + }, { + name: "SetReadDeadline", + f: (*nettest.PacketConn).SetReadDeadline, + }} { + t.Run(setDeadline.name, func(t *testing.T) { + testDeadline(t, func() deadlineTest { + pnet := nettest.NewPacketNet() + rconn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + wconn := mustNewPacketConn(t, pnet, "10.0.0.2:2000") + return deadlineTest{ + what: "ReadFrom()", + block: func() error { + _, _, err := rconn.ReadFrom(make([]byte, 1)) + return err + }, + unblock: func() { + wconn.WriteTo([]byte("x"), rconn.LocalAddr()) + }, + setDeadline: func(d time.Duration) { + setDeadline.f(rconn, time.Now().Add(d)) + }, + } + }) + }) + } +} + +func TestPacketConnWriteDeadline(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + pnet := nettest.NewPacketNet() + rconn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + wconn := mustNewPacketConn(t, pnet, "10.0.0.2:2000") + + // This does nothing, even though the deadline has expired. + wconn.SetWriteDeadline(time.Now().Add(-1 * time.Second)) + + wantPacketConnWriteTo(t, wconn, []byte("data"), rconn.LocalAddr()) + wantPacketConnReadBytes(t, rconn, []byte("data"), wconn.LocalAddr()) + }) +} + +func TestPacketConnSetReadError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + wantErr := errors.New("error") + pnet := nettest.NewPacketNet() + rconn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + wconn := mustNewPacketConn(t, pnet, "10.0.0.2:2000") + rconn.SetReadError(wantErr) + + // Consume buffer before returning error. + wantPacketConnWriteTo(t, wconn, []byte("one"), rconn.LocalAddr()) + wantPacketConnReadBytes(t, rconn, []byte("one"), wconn.LocalAddr()) + wantPacketConnReadErr(t, rconn, wantErr) + + // Write more, suppressing error until buffer drains again. + wantPacketConnWriteTo(t, wconn, []byte("two"), rconn.LocalAddr()) + wantPacketConnReadBytes(t, rconn, []byte("two"), wconn.LocalAddr()) + wantPacketConnReadErr(t, rconn, wantErr) + + // Error may be cleared. + rconn.SetReadError(nil) + wantPacketConnReadBlocked(t, rconn) + + // ErrClosed takes precedence over read error. + rconn.SetReadError(wantErr) + rconn.Close() + wantPacketConnReadErr(t, rconn, net.ErrClosed) + }) +} + +func TestPacketConnSetWriteError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + wantErr := errors.New("error") + pnet := nettest.NewPacketNet() + rconn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + wconn := mustNewPacketConn(t, pnet, "10.0.0.2:2000") + wconn.SetWriteError(wantErr) + + // Error blocks writes. + wantPacketConnWriteErr(t, wconn, rconn.LocalAddr(), wantErr) + wantPacketConnReadBlocked(t, rconn) + + // Error may be cleared. + wconn.SetWriteError(nil) + wantPacketConnWriteTo(t, wconn, []byte("one"), rconn.LocalAddr()) + + // Restoring error does not prevent reading buffered data. + wconn.SetWriteError(wantErr) + wantPacketConnWriteErr(t, wconn, rconn.LocalAddr(), wantErr) + wantPacketConnReadBytes(t, rconn, []byte("one"), wconn.LocalAddr()) + + // Error does not interfere with closing the conn. + wconn.Close() + wantPacketConnWriteErr(t, wconn, rconn.LocalAddr(), net.ErrClosed) + }) +} + +func TestPacketConnSetCloseError(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + wantErr := errors.New("error") + pnet := nettest.NewPacketNet() + rconn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + wconn := mustNewPacketConn(t, pnet, "10.0.0.2:2000") + wconn.SetCloseError(wantErr) + + wantPacketConnWriteTo(t, wconn, []byte("one"), rconn.LocalAddr()) + if err := wconn.Close(); !isOpError(err, wantErr) { + t.Fatalf("wconn.Close = %v, want OpError{Err: %v}", err, wantErr) + } + if err := wconn.Close(); !isOpError(err, net.ErrClosed) { + t.Fatalf("wconn.Close = %v, want OpError{Err: net.ErrClosed}", err) + } + wantPacketConnReadBytes(t, rconn, []byte("one"), wconn.LocalAddr()) + }) +} + +func TestPacketConnCanRead(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + pnet := nettest.NewPacketNet() + rconn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + wconn := mustNewPacketConn(t, pnet, "10.0.0.2:2000") + if got, want := rconn.CanRead(), false; got != want { + t.Fatalf("before writing data: rconn.CanRead() = %v, want %v", got, want) + } + wconn.WriteTo([]byte("a"), rconn.LocalAddr()) + if got, want := rconn.CanRead(), true; got != want { + t.Fatalf("after writing data: rconn.CanRead() = %v, want %v", got, want) + } + rconn.ReadFrom(make([]byte, 1)) + if got, want := rconn.CanRead(), false; got != want { + t.Fatalf("after reading data: rconn.CanRead() = %v, want %v", got, want) + } + }) +} + +func TestPacketConnIsClosed(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + pnet := nettest.NewPacketNet() + conn := mustNewPacketConn(t, pnet, "10.0.0.1:1000") + if got, want := conn.IsClosed(), false; got != want { + t.Fatalf("before closing: conn.IsClosed() = %v, want %v", got, want) + } + conn.Close() + if got, want := conn.IsClosed(), true; got != want { + t.Fatalf("after closing: conn.IsClosed() = %v, want %v", got, want) + } + }) +} + +func mustNewPacketConn(t *testing.T, pnet *nettest.PacketNet, addr string) *nettest.PacketConn { + t.Helper() + c, err := pnet.NewConn(net.UDPAddrFromAddrPort(netip.MustParseAddrPort(addr))) + if err != nil { + t.Fatal(err) + } + return c +} + +func wantPacketConnWriteTo(t *testing.T, c *nettest.PacketConn, b []byte, dst net.Addr) { + t.Helper() + if n, err := c.WriteTo(b, dst); n != len(b) || err != nil { + t.Fatalf("conn.WriteTo(%q, %v) = %v, %v; want %v, nil", b, dst, n, err, len(b)) + } +} + +func wantPacketConnWriteErr(t *testing.T, c *nettest.PacketConn, dst net.Addr, want error) { + t.Helper() + n, err := c.WriteTo(make([]byte, 1), dst) + if n != 0 || !isOpError(err, want) { + t.Fatalf("c.WriteTo() = %v, %v; want 0, OpError{Err: %q}", n, err, want) + } +} + +func wantPacketConnReadBytes(t *testing.T, c *nettest.PacketConn, want []byte, wantAddr net.Addr) { + t.Helper() + udpWantAddr, ok := wantAddr.(*net.UDPAddr) + if !ok { + t.Fatalf("wantAddr is %T, should be *net.UDPAddr", wantAddr) + } + got := make([]byte, len(want)+1) + n, addr, err := c.ReadFrom(got) + got = got[:n] + udpAddr, addrOK := addr.(*net.UDPAddr) + if n != len(want) || !addrOK || udpAddr.AddrPort() != udpWantAddr.AddrPort() { + t.Fatalf("conn.ReadFrom() = %v, %v, %v; want %v, %v, nil", n, addr, err, len(want), wantAddr) + } + if !bytes.Equal(got, want) { + t.Fatalf("conn.ReadFrom() read %q, want %q", got, want) + } +} + +func wantPacketConnReadErr(t *testing.T, c *nettest.PacketConn, want error) { + t.Helper() + n, addr, err := c.ReadFrom(make([]byte, 1)) + if want == io.EOF { + if n != 0 || err != io.EOF { + t.Fatalf("c.ReadFrom() = %v, %v, %v; want 0, nil, io.EOF", n, addr, err) + } + } else { + if n != 0 || !isOpError(err, want) { + t.Fatalf("c.ReadFrom() = %v, %v, %v; want 0, nil, OpError{Err: %q}", n, addr, err, want) + } + } +} + +func wantPacketConnReadBlocked(t *testing.T, c *nettest.PacketConn) { + done := false + go func() { + n, addr, err := c.ReadFrom(make([]byte, 1)) + if n != 0 || !errors.Is(err, os.ErrDeadlineExceeded) { + t.Errorf("c.Read() = %v, %v, %v; want 0, nil, ErrDeadlineExceeded", n, addr, err) + } + done = true + }() + synctest.Wait() + if done { + t.Fatalf("ReadFrom unexpectedly returned before setting deadline") + } + c.SetReadDeadline(time.Now().Add(-1 * time.Second)) + synctest.Wait() + c.SetReadDeadline(time.Time{}) + if !done { + t.Fatalf("ReadFrom unexpectedly did not return after setting deadline") + } +} diff --git a/src/internal/nettest/queue.go b/src/internal/nettest/queue.go new file mode 100644 index 00000000000000..ad68891de72104 --- /dev/null +++ b/src/internal/nettest/queue.go @@ -0,0 +1,33 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package nettest + +type queue[T any] struct { + headPos int + head []T + tail []T +} + +func (q *queue[T]) len() int { + return len(q.head[q.headPos:]) + len(q.tail) +} + +func (q *queue[T]) push(v T) { + q.tail = append(q.tail, v) +} + +func (q *queue[T]) pop() T { + var zero T + if q.headPos >= len(q.head) { + if len(q.tail) == 0 { + return zero + } + q.head, q.headPos, q.tail = q.tail, 0, q.head[:0] + } + v := q.head[q.headPos] + q.head[q.headPos] = zero + q.headPos++ + return v +} diff --git a/src/net/http/httptest/server.go b/src/net/http/httptest/server.go index fd65e5797a4c20..58ddda4427a129 100644 --- a/src/net/http/httptest/server.go +++ b/src/net/http/httptest/server.go @@ -12,26 +12,123 @@ import ( "crypto/x509" "flag" "fmt" + "internal/nettest" "log" "net" "net/http" "net/http/internal/testcert" "os" + "runtime" "strings" "sync" + "testing" "time" _ "unsafe" // for linkname ) -// A Server is an HTTP server listening on a system-chosen port on the -// local loopback interface, for use in end-to-end HTTP tests. +// A Server is an HTTP server for use in end-to-end HTTP tests. +// +// Most tests should create a server with [NewTestServer]. +// The [Server.Client] method returns a client which sends requests to the test server. +// +// // Create a test server and send a request to it. +// server := httptest.NewTestServer(t, handler) +// resp, err := server.Client().Get("http://www.example.com/") +// +// # Configuration +// +// Tests may change a Server's configuration prior to using it. +// The configuration must not be changed after the first call to +// [Server.Client], [Server.Start], or [Server.StartTLS]. +// +// // Configure a test server before using. +// server := httptest.NewTestServer(t, handler) +// server.Config.MaxHeaderBytes = 1024 +// resp, err := server.Client().Get("http://www.example.com/") +// +// # Tests +// +// Servers created with [NewTestServer] will: +// +// - Fail the test if the server handler panics with +// any value other than [http.ErrAbortHandler]. +// - Register a Cleanup function to shut down the server at the end of the test. +// +// Servers created in any other way must be manually shut down with [Server.Close]. +// +// # In-Memory Network +// +// A Server may use an in-memory network implementation or +// listen on a local network loopback interface. +// Most tests should use the in-memory network, +// which avoids port exhaustion and other transient networking issues +// and is suitable for use with the [testing/synctest] package. +// +// To use the in-memory network, create a server with [NewTestServer]. +// Do not call [Server.Start] or [Server.StartTLS]. +// +// When using the in-memory network, the [http.Client] returned by [Server.Client] +// is configured to send all requests to the server. +// The client will direct HTTP and HTTPS requests, +// regardless of destination address or hostname, to the server. +// Requests do not need to use [Server.URL] as the base URL. +// +// server := httptest.NewTestServer(t, handler) +// client := server.Client() +// +// // All of these requests are sent to the test server. +// // https:// requests use TLS over the in-memory network. +// _, _ = client.Get("http://www.example.com/") +// _, _ = client.Get("https://go.dev/") +// _, _ = client.Get("http://10.0.0.1/") +// +// The [Server.Listener] field is not set when using the in-memory network. +// +// # Loopback Network +// +// To listen on a loopback interface, call [Server.Start] or [Server.StartTLS]. +// The server will listen on a system-chosen port. +// +// Loopback servers serve one of HTTP (when started with [Server.Start]) +// or HTTPS (when started with [Server.StartTLS]). +// +// When using the loopback network, the [http.Client] returned by [Server.Client] +// is configured to send requests with a hostname of "example.com" or a subdomain +// of ".example.com" to the server. +// +// Requests may also be sent to the server's loopback address. +// The [Server.URL] field is set to a base URL containing the server's address. +// +// server := httptest.NewTestServer(t, handler) +// server.Start() +// client := server.Client() +// +// // This request is sent to the test server. +// _, _ = server.Client().Get(server.URL + "/") +// +// // This request (using http.DefaultClient) is also sent to the test server, +// // since server.URL contains the server's local IP address. +// _, _ = http.Get(server.URL + "/") type Server struct { - URL string // base URL of form http://ipaddr:port with no trailing slash + // URL is the base URL of the server, of the form http://address:port + // with no trailing slash. + // + // It is set by the first call to Client, Start, or StartTLS. + // + // For servers listening on loopback, the address is the loopback IP address + // of the server. + // + // For servers using the in-memory network, this address is "example.com". + // Requests sent to servers using the in-memory network may use any address. + // It is not necessary to use this base URL. + URL string + + // Listener is the network listener for servers listening on loopback. + // It is not set for servers using the in-memory network. Listener net.Listener - // EnableHTTP2 controls whether HTTP/2 is enabled - // on the server. It must be set between calling - // NewUnstartedServer and calling Server.StartTLS. + // EnableHTTP2 controls whether HTTP/2 is enabled on the server. + // It must be set before calling Client, Start, or StartTLS. EnableHTTP2 bool // TLS is the optional TLS configuration, populated with a new config @@ -39,16 +136,24 @@ type Server struct { // is called, existing fields are copied into the new config. TLS *tls.Config - // Config may be changed after calling NewUnstartedServer and - // before Start or StartTLS. + // Config may be changed before calling Client, Start, or StartTLS. Config *http.Server + t testing.TB + // certificate is a parsed version of the TLS config certificate, if present. certificate *x509.Certificate + // startOnce is used to start fakenet servers once. + startOnce sync.Once + // started indicates whether the server has been started. started bool + // Fake network listeners, one for HTTP and one for HTTPS. + fakeListener *nettest.Listener + fakeTLSListener *nettest.Listener + // wg counts the number of outstanding HTTP requests on this server. // Close blocks until all requests are finished. wg sync.WaitGroup @@ -62,6 +167,51 @@ type Server struct { client *http.Client } +// NewTestServer returns a new [Server] for a test. +// The server will use an in-memory network implementation by default. +// +// If the handler is nil, the server will serve 500 responses to all requests. +// It will not use [http.DefaultServeMux]. +// +// See the [Server] documentation for more details. +func NewTestServer(t testing.TB, handler http.Handler) *Server { + s := &Server{ + t: t, + Config: &http.Server{Handler: testServerHandler{t: t, h: handler}}, + } + t.Cleanup(func() { + s.Close() + }) + return s +} + +type testServerHandler struct { + t testing.TB + h http.Handler +} + +func (h testServerHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { + defer func() { + if err := recover(); err != nil { + if err != http.ErrAbortHandler { + // This is the same logging http.Server would do, + // but we can put it into the test output rather than stderr. + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + h.t.Errorf("httptest: panic in server handler: %v\n%s", err, buf) + } + // Convert panic to ErrAbortHandler to suppress http.Server's logging. + panic(http.ErrAbortHandler) + } + }() + if h.h != nil { + h.h.ServeHTTP(w, req) + } else { + w.WriteHeader(500) + } +} + func newLocalListener() net.Listener { if serveFlag != "" { l, err := net.Listen("tcp", serveFlag) @@ -105,20 +255,30 @@ func strSliceContainsPrefix(v []string, pre string) bool { return false } -// NewServer starts and returns a new [Server]. -// The caller should call Close when finished, to shut it down. +// NewServer starts and returns a new [Server] listening on a +// local network loopback interface. +// This is equivalent to calling [NewUnstartedServer] followed by [Server.Start]. +// +// The caller should call [Server.Close] when finished, to shut it down. +// +// Most users should use [NewTestServer] instead. +// See the [Server] documentation for details. func NewServer(handler http.Handler) *Server { ts := NewUnstartedServer(handler) ts.Start() return ts } -// NewUnstartedServer returns a new [Server] but doesn't start it. +// NewUnstartedServer returns a new [Server] listening on a +// local network loopback interface. It does not start the server. // -// After changing its configuration, the caller should call Start or -// StartTLS. +// After changing the server's configuration, the caller should +// call [Server.Start] or [Server.StartTLS]. // -// The caller should call Close when finished, to shut it down. +// The caller should call [Server.Close] when finished, to shut it down. +// +// Most users should use [NewTestServer] instead. +// See the [Server] documentation for details. func NewUnstartedServer(handler http.Handler) *Server { return &Server{ Listener: newLocalListener(), @@ -126,13 +286,38 @@ func NewUnstartedServer(handler http.Handler) *Server { } } -// Start starts a server from NewUnstartedServer. -func (s *Server) Start() { +func (s *Server) startCommon(useLoopback bool) { + s.mu.Lock() + defer s.mu.Unlock() if s.started { panic("Server already started") } + if s.closed { + panic("Start of closed Server") + } s.started = true + if s.t != nil && useLoopback { + // We're being called from Start or StartTLS. + // Don't try to start the server again when Client is called. + s.startOnce.Do(func() {}) + + // NewTestServer servers create their listener at start time. + // + // We might want to permit the user to provide their own Listener + // in the future. For now, we panic. + if s.Listener != nil { + panic("Server.Listener is unexpectedly set") + } + s.Listener = newLocalListener() + } s.wrap() +} + +// Start starts a server on a local loopback network interface. +// +// The server should have been created by [NewTestServer] or [NewUnstartedServer]. +func (s *Server) Start() { + s.startCommon(true) tr := &http.Transport{} s.client = &http.Client{Transport: tr} @@ -153,25 +338,17 @@ func (s *Server) Start() { return dialer.DialContext(ctx, network, addr) } s.URL = "http://" + s.Listener.Addr().String() - s.goServe() + s.goServe(s.Listener) if serveFlag != "" { fmt.Fprintln(os.Stderr, "httptest: serving on", s.URL) select {} } } -// StartTLS starts TLS on a server from NewUnstartedServer. -func (s *Server) StartTLS() { - if s.started { - panic("Server already started") - } - s.started = true - s.wrap() - - s.client = &http.Client{} +func (s *Server) initTLS() (tlsClientConfig *tls.Config, err error) { cert, err := tls.X509KeyPair(testcert.LocalhostCert, testcert.LocalhostKey) if err != nil { - panic(fmt.Sprintf("httptest: NewTLSServer: %v", err)) + return nil, err } existingConfig := s.TLS @@ -192,15 +369,30 @@ func (s *Server) StartTLS() { } s.certificate, err = x509.ParseCertificate(s.TLS.Certificates[0].Certificate[0]) if err != nil { - panic(fmt.Sprintf("httptest: NewTLSServer: %v", err)) + return nil, err } certpool := x509.NewCertPool() certpool.AddCert(s.certificate) + return &tls.Config{ + RootCAs: certpool, + }, nil +} + +// Start starts TLS on a server on a local loopback network interface. +// +// The server should have been created by [NewTestServer] or [NewUnstartedServer]. +func (s *Server) StartTLS() { + s.startCommon(true) + + s.client = &http.Client{} + + tlsClientConfig, err := s.initTLS() + if err != nil { + panic(fmt.Sprintf("httptest: NewTLSServer: %v", err)) + } tr := &http.Transport{ - TLSClientConfig: &tls.Config{ - RootCAs: certpool, - }, + TLSClientConfig: tlsClientConfig, ForceAttemptHTTP2: s.EnableHTTP2, } s.client.Transport = tr @@ -220,11 +412,49 @@ func (s *Server) StartTLS() { } s.Listener = tls.NewListener(s.Listener, s.TLS) s.URL = "https://" + s.Listener.Addr().String() - s.goServe() + s.goServe(s.Listener) +} + +func (s *Server) startFakeNet() { + s.startCommon(false) + + s.client = &http.Client{} + + tlsClientConfig, err := s.initTLS() + if err != nil { + panic(fmt.Sprintf("httptest: NewTestServer: %v", err)) + } + + tr := &http.Transport{ + TLSClientConfig: tlsClientConfig, + ForceAttemptHTTP2: s.EnableHTTP2, + } + s.client.Transport = tr + + s.fakeListener = nettest.NewListener() + s.fakeTLSListener = nettest.NewListener() + + // Set InsecureSkipVerify rather than depending on a specific server hostname. + tr.TLSClientConfig.InsecureSkipVerify = true + tr.DialContext = func(ctx context.Context, network, address string) (net.Conn, error) { + return s.fakeListener.NewConn(), nil + } + tr.DialTLSContext = func(ctx context.Context, network, address string) (net.Conn, error) { + return tls.Client(s.fakeTLSListener.NewConn(), tr.TLSClientConfig), nil + } + s.URL = "http://example.com" + s.goServe(s.fakeListener) + s.goServe(tls.NewListener(s.fakeTLSListener, s.TLS)) } -// NewTLSServer starts and returns a new [Server] using TLS. -// The caller should call Close when finished, to shut it down. +// NewTLSServer starts and returns a new [Server] using TLS and listening on a +// local network loopback interface. +// This is equivalent to calling [NewUnstartedServer] followed by [Server.StartTLS]. +// +// The caller should call [Server.Close] when finished, to shut it down. +// +// Most users should use [NewTestServer] instead. +// See the [Server] documentation for details. func NewTLSServer(handler http.Handler) *Server { ts := NewUnstartedServer(handler) ts.StartTLS() @@ -244,6 +474,10 @@ func (s *Server) Close() { if s.Listener != nil { s.Listener.Close() } + if s.fakeListener != nil { + s.fakeListener.Close() + s.fakeTLSListener.Close() + } s.Config.SetKeepAlivesEnabled(false) for c, st := range s.conns { // Force-close any idle connections (those between @@ -338,18 +572,18 @@ func (s *Server) Certificate() *x509.Certificate { // Client returns an HTTP client configured for making requests to the server. // It is configured to trust the server's TLS test certificate and will // close its idle connections on [Server.Close]. -// Use Server.URL as the base URL to send requests to the server. -// The returned client will also redirect any requests to "example.com" -// or its subdomains to the server. func (s *Server) Client() *http.Client { + if s.t != nil { + s.startOnce.Do(s.startFakeNet) + } return s.client } -func (s *Server) goServe() { +func (s *Server) goServe(li net.Listener) { s.wg.Add(1) go func() { defer s.wg.Done() - s.Config.Serve(s.Listener) + s.Config.Serve(li) }() } diff --git a/src/net/http/httptest/server_test.go b/src/net/http/httptest/server_test.go index f3cfa7c2dbdb76..7be4e931c9451e 100644 --- a/src/net/http/httptest/server_test.go +++ b/src/net/http/httptest/server_test.go @@ -6,35 +6,58 @@ package httptest import ( "bufio" + "internal/testenv" "io" "net" "net/http" + "os" + "regexp" + "strings" "sync" "testing" + "testing/synctest" ) -type newServerFunc func(http.Handler) *Server +type newServerFunc func(*testing.T, http.Handler) *Server var newServers = map[string]newServerFunc{ - "NewServer": NewServer, - "NewTLSServer": NewTLSServer, + "NewServer": func(t *testing.T, h http.Handler) *Server { + return NewServer(h) + }, + "NewTLSServer": func(t *testing.T, h http.Handler) *Server { + return NewTLSServer(h) + }, // The manual variants of newServer create a Server manually by only filling // in the exported fields of Server. - "NewServerManual": func(h http.Handler) *Server { + "NewServerManual": func(t *testing.T, h http.Handler) *Server { ts := &Server{Listener: newLocalListener(), Config: &http.Server{Handler: h}} ts.Start() return ts }, - "NewTLSServerManual": func(h http.Handler) *Server { + "NewTLSServerManual": func(t *testing.T, h http.Handler) *Server { ts := &Server{Listener: newLocalListener(), Config: &http.Server{Handler: h}} ts.StartTLS() return ts }, + + "NewTestServerMemory": func(t *testing.T, h http.Handler) *Server { + return NewTestServer(t, h) + }, + "NewTestServerLoopback": func(t *testing.T, h http.Handler) *Server { + ts := NewTestServer(t, h) + ts.Start() + return ts + }, + "NewTestServerLoopbackTLS": func(t *testing.T, h http.Handler) *Server { + ts := NewTestServer(t, h) + ts.StartTLS() + return ts + }, } func TestServer(t *testing.T) { - for _, name := range []string{"NewServer", "NewServerManual"} { + for _, name := range []string{"NewServer", "NewServerManual", "NewTestServerLoopback"} { t.Run(name, func(t *testing.T) { newServer := newServers[name] t.Run("Server", func(t *testing.T) { testServer(t, newServer) }) @@ -44,7 +67,7 @@ func TestServer(t *testing.T) { t.Run("ServerClientTransportType", func(t *testing.T) { testServerClientTransportType(t, newServer) }) }) } - for _, name := range []string{"NewTLSServer", "NewTLSServerManual"} { + for _, name := range []string{"NewTLSServer", "NewTLSServerManual", "NewTestServerMemory", "NewTestServerLoopbackTLS"} { t.Run(name, func(t *testing.T) { newServer := newServers[name] t.Run("ServerClient", func(t *testing.T) { testServerClient(t, newServer) }) @@ -54,7 +77,7 @@ func TestServer(t *testing.T) { } func testServer(t *testing.T, newServer newServerFunc) { - ts := newServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ts := newServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello")) })) defer ts.Close() @@ -74,7 +97,7 @@ func testServer(t *testing.T, newServer newServerFunc) { // Issue 12781 func testGetAfterClose(t *testing.T, newServer newServerFunc) { - ts := newServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ts := newServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello")) })) @@ -101,7 +124,7 @@ func testGetAfterClose(t *testing.T, newServer newServerFunc) { } func testServerCloseBlocking(t *testing.T, newServer newServerFunc) { - ts := newServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ts := newServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello")) })) dial := func() net.Conn { @@ -131,7 +154,7 @@ func testServerCloseBlocking(t *testing.T, newServer newServerFunc) { // Issue 14290 func testServerCloseClientConnections(t *testing.T, newServer newServerFunc) { var s *Server - s = newServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + s = newServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { s.CloseClientConnections() })) defer s.Close() @@ -145,7 +168,7 @@ func testServerCloseClientConnections(t *testing.T, newServer newServerFunc) { // Tests that the Server.Client method works and returns an http.Client that can hit // NewTLSServer without cert warnings. func testServerClient(t *testing.T, newTLSServer newServerFunc) { - ts := newTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ts := newTLSServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello")) })) defer ts.Close() @@ -167,7 +190,7 @@ func testServerClient(t *testing.T, newTLSServer newServerFunc) { // Tests that the Server.Client.Transport interface is implemented // by a *http.Transport. func testServerClientTransportType(t *testing.T, newServer newServerFunc) { - ts := newServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ts := newServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { })) defer ts.Close() client := ts.Client() @@ -179,7 +202,7 @@ func testServerClientTransportType(t *testing.T, newServer newServerFunc) { // Tests that the TLS Server.Client.Transport interface is implemented // by a *http.Transport. func testTLSServerClientTransportType(t *testing.T, newTLSServer newServerFunc) { - ts := newTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ts := newTLSServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { })) defer ts.Close() client := ts.Client() @@ -330,3 +353,88 @@ func TestClientExampleCom(t *testing.T) { }) } } + +func TestServerInMemoryNetwork(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + ts := NewTestServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + })) + + for _, u := range []string{ + "http://example.tld/", + "https://example.tld/", + "https://go.dev/", + "http://127.0.0.1/", + "http://[::1]/", + "https://127.0.0.1/", + } { + resp, err := ts.Client().Get(u) + if err != nil { + t.Errorf("Get(%q): %v", u, err) + continue + } + resp.Body.Close() + if resp.StatusCode != 200 { + t.Errorf("Get(%q): Response.StatusCode = %v, want 200", u, resp.StatusCode) + } + if gotTLS, wantTLS := resp.TLS != nil, strings.HasPrefix(u, "https://"); gotTLS != wantTLS { + t.Errorf("Get(%q): TLS: %v; want %v", u, gotTLS, wantTLS) + } + } + }) +} + +func TestServerNilHandler(t *testing.T) { + ts := NewTestServer(t, nil) + resp, err := ts.Client().Get("http://example.tld/") + if err != nil { + t.Fatalf("Get: %v", err) + } + resp.Body.Close() + if got, want := resp.StatusCode, 500; got != want { + t.Errorf("Response.StatusCode = %v, want %v", got, want) + } + +} + +func TestServerPanicErrAbortHandler(t *testing.T) { + synctest.Test(t, func(t *testing.T) { + ts := NewTestServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + panic(http.ErrAbortHandler) + })) + resp, err := ts.Client().Get("http://example.com/") + if err == nil { + resp.Body.Close() + t.Errorf("request succeeded; want failure") + } + }) +} + +func TestServerPanicFailsTest(t *testing.T) { + runTest(t, func() { + synctest.Test(t, func(t *testing.T) { + ts := NewTestServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + panic("PANIC MESSAGE") + })) + ts.Client().Get("http://example.com/") + }) + }, `--- FAIL: TestServerPanicFailsTest.* + .*: httptest: panic in server handler: PANIC MESSAGE +`) +} + +func runTest(t *testing.T, f func(), pattern string) { + if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { + f() + return + } + t.Helper() + re := regexp.MustCompile(pattern) + testenv.MustHaveExec(t) + cmd := testenv.Command(t, testenv.Executable(t), "-test.run=^"+regexp.QuoteMeta(t.Name())+"$", "-test.count=1") + cmd = testenv.CleanCmdEnv(cmd) + cmd.Env = append(cmd.Env, "GO_WANT_HELPER_PROCESS=1") + out, _ := cmd.CombinedOutput() + if !re.Match(out) { + t.Errorf("got output:\n%s\nwant matching:\n%s", out, pattern) + } +} diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go index 90cda19ee11e06..7e8398485ab4df 100644 --- a/src/net/http/serve_test.go +++ b/src/net/http/serve_test.go @@ -971,7 +971,9 @@ func testServerWriteTimeout(t *testing.T, mode testMode) { func TestServerNoWriteTimeout(t *testing.T) { run(t, testServerNoWriteTimeout) } func testServerNoWriteTimeout(t *testing.T, mode testMode) { for _, timeout := range []time.Duration{0, -1} { + handlerDone := make(chan struct{}) cst := newClientServerTest(t, mode, HandlerFunc(func(res ResponseWriter, req *Request) { + defer close(handlerDone) _, err := io.Copy(res, neverEnding('a')) t.Logf("server write response: %v", err) }), func(ts *httptest.Server) { @@ -983,15 +985,14 @@ func testServerNoWriteTimeout(t *testing.T, mode testMode) { if err != nil { t.Fatal(err) } - defer res.Body.Close() n, err := io.CopyN(io.Discard, res.Body, 1<<20) // 1MB should be sufficient to prove the point if n != 1<<20 || err != nil { t.Errorf("client read response body: %d, %v", n, err) } - // This shutdown really should be automatic, but it isn't right now. - // Shutdown (rather than Close) ensures the handler is done before we return. res.Body.Close() + // This shutdown really should be automatic, but it isn't right now. cst.ts.Config.Shutdown(context.Background()) + <-handlerDone } } diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go index a037e735e5a9c7..02ae875c5445b1 100644 --- a/src/runtime/pprof/pprof_test.go +++ b/src/runtime/pprof/pprof_test.go @@ -1719,6 +1719,14 @@ func TestGoroutineLeakProfileConcurrency(t *testing.T) { t.Errorf("%s profile does not contain expected leaked goroutine %s: %s", profType, leak, profText) } } + + // TODO(thepudds,vsaioc): the next two subtests would ideally find totalLeaked goroutines, + // but in rare cases they seem to be 1 short, leading to intermittent flakes. Perhaps this + // is "expected" due to a convervative scan keeping something alive or some other rare event. + // Deflake for now by allowing a small margin of error. #79452 is for finding a true root + // cause, improving this test, or adjusting the leak profiler if warranted. + const minWantLeaks = totalLeaked - 1 + t.Run("overlapping profile requests", func(t *testing.T) { ctx := context.Background() ctx, cancel := context.WithTimeout(ctx, time.Second) @@ -1733,8 +1741,11 @@ func TestGoroutineLeakProfileConcurrency(t *testing.T) { for ctx.Err() == nil { var w strings.Builder goroutineLeakProf.WriteTo(&w, 1) - if n := countLeaks(t, w.String()); n != totalLeaked { - t.Errorf("expected %d goroutines leaked, got %d: %s", totalLeaked, n, w.String()) + got := countLeaks(t, w.String()) + // TODO(thepudds,vsaioc): see related comment on minWantLeaks above. + if got < minWantLeaks || got > totalLeaked { + t.Errorf("expected at least %d and at most %d goroutines leaked, got %d: %s", + minWantLeaks, totalLeaked, got, w.String()) } quickCheckForGoroutine(t, "goroutineleak", "runtime/pprof.goroutineLeakExample", w.String()) } @@ -1760,8 +1771,11 @@ func TestGoroutineLeakProfileConcurrency(t *testing.T) { for ctx.Err() == nil { var w strings.Builder goroutineLeakProf.WriteTo(&w, 1) - if n := countLeaks(t, w.String()); n != totalLeaked { - t.Errorf("expected %d goroutines leaked, got %d: %s", totalLeaked, n, w.String()) + got := countLeaks(t, w.String()) + // TODO(thepudds,vsaioc): see related comment on minWantLeaks above. + if got < minWantLeaks || got > totalLeaked { + t.Errorf("expected at least %d and at most %d goroutines leaked, got %d: %s", + minWantLeaks, totalLeaked, got, w.String()) } quickCheckForGoroutine(t, "goroutineleak", "runtime/pprof.goroutineLeakExample", w.String()) } diff --git a/test/genmeth.go b/test/genmeth.go index 85c6402e7c2be2..c37ea60d430132 100644 --- a/test/genmeth.go +++ b/test/genmeth.go @@ -1,4 +1,4 @@ -// run -goexperiment genericmethods +// run // Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/genmeth1.go b/test/genmeth1.go index 2a2207b8df146b..1963f5b4acdb54 100644 --- a/test/genmeth1.go +++ b/test/genmeth1.go @@ -1,4 +1,4 @@ -// run -goexperiment genericmethods +// run // Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/genmeth2.go b/test/genmeth2.go index db3118859c4c27..a67181b275f836 100644 --- a/test/genmeth2.go +++ b/test/genmeth2.go @@ -1,4 +1,4 @@ -// run -goexperiment genericmethods +// run // Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style