也许你并不了解 java.lang.String | JDK 11 源码阅读分析(灌水)与优化实测

本文基于 Oracle JDK 11.0.6
本人 Java 相关水平有限,如有错误请批评指正!

前言

java.lang.String 这个类会一点 Java 的人应该都不陌生,你有没有深入了解过呢?

  • JDK 8 之后的 String 有什么变化了解吗?为什么 JDK 9 要引入新的编码?
  • 平时常用的 String 的方法(例如 substring 等)实现逻辑了解吗?
  • 也许有些人无惧 HashMap,但一问 String ……
  • ……

Ta 并不复杂,但是很重要。不如进入 java.lang.String 身体 源码里探索一番~

源码灌水

String 怎么存储你的字符们?

private final byte[] value

一个 String 实例的字符们主要存在这里。

“我 TM 怎么记得这里是个 char[] ?”

没错,在 JDK 9 之前这里确实是个 char[],并默认使用 UTF16 编码。

JDK 8 源码:

    /** The value is used for character storage. */
    private final char value[];

有没有考虑过一个问题:

Java 的 char 占用 2 字节,采用 UTF16,如果用来存储 ASCII 字符组成的串,不就白白浪费了一半空间吗?
而且,在实际应用中,一个 JVM 内绝大多数字符串中的字符也是 1 个字节就能搞定的。

这个问题确实有人考虑到了,于是 JEP 254: Compact Strings 被提出,并在 JDK 9 实现了这种”更节省空间的字符串内部存储方式"

    /**
     * The value is used for character storage.
     *
     * @implNote This field is trusted by the VM, and is a subject to
     * constant folding if String instance is constant. Overwriting this
     * field after construction will cause problems.
     *
     * Additionally, it is marked with {@link Stable} to trust the contents
     * of the array. No other facility in JDK provides this functionality (yet).
     * {@link Stable} is safe here, because value is never null.
     *
     * 在 Java8 中,这里还是个 char[],自从 Java9 引入了编码方式,这里变成了 byte[]
     */
    @Stable
    private final byte[] value;

底层数据结构变更了,那原来的 UTF16 编码呢?

private final byte coder

新增加的这个字段干嘛的?

底层数据结构变了,默认编码方式也不再只有 UTF16 了,于是新增了一个字段 coder 代表当前字符串的编码方式。

为什么 coderfinal 的,不会根据字符存储需求切换编码吗?

既然字符串是不可变的,那编码方式肯定也不能变动了。

那都有哪些编码?

    @Native static final byte LATIN1 = 0;
    @Native static final byte UTF16  = 1;

可以看到,现在有两种编码方式:

  • LATIN1
  • UTF16

在这里就不具体介绍这些编码的规则了,读者可以自行了解。

我能不能不要这么多花里胡哨的东西?我就想用原来的 UTF-16
    static final boolean COMPACT_STRINGS;

    static {
        COMPACT_STRINGS = true;
    }

这个字段是一个开关, COMPACT_STRINGS 直译过来就是“压缩字符串”

value解释
true(默认值)开启“压缩字符串”,即 LATIN1 能用就用,不能就用 UTF16
false关闭“压缩字符串”,即一直使用 UTF16 编码,每个字符占用 2 或 4 字节

这是一个 static final 修饰的字段,要怎么样才能修改呢?

要改也不是不行,指定 JVM 参数就可以了1

-XX:-CompactStrings

-XX:-CompactStrings

什么时候确定这个字符串用什么编码?怎么确定?

那有了多种编码方式后:

  • 什么时候确定这个字符串用什么编码?
  • 怎么确定这个字符串用什么编码?

在这里插入图片描述

查看 coder 字段的 Write Access,排除掉一些引用其他字符串的 coder 的赋值语句,比较关键的有以下几个构造方法:

  • public String(int[] codePoints, int offset, int count)
  • String(char[] value, int off, int len, Void sig)
  • String(AbstractStringBuilder asb, Void sig)
  • @Deprecated(since="1.1") public String(byte ascii[], int hibyte, int offset, int count)

我们来看前面 3 个方法体,第 4 个已经是历史了,就不管了。

    public String(int[] codePoints, int offset, int count) {
        checkBoundsOffCount(offset, count, codePoints.length);
        if (count == 0) {
            this.value = "".value;
            this.coder = "".coder;
            return;
        }
        if (COMPACT_STRINGS) {
            byte[] val = StringLatin1.toBytes(codePoints, offset, count);
            if (val != null) {
                this.coder = LATIN1;
                this.value = val;
                return;
            }
        }
        this.coder = UTF16;
        this.value = StringUTF16.toBytes(codePoints, offset, count);
    }

    String(char[] value, int off, int len, Void sig) {
        if (len == 0) {
            this.value = "".value;
            this.coder = "".coder;
            return;
        }
        if (COMPACT_STRINGS) {
            byte[] val = StringUTF16.compress(value, off, len);
            if (val != null) {
                this.value = val;
                this.coder = LATIN1;
                return;
            }
        }
        this.coder = UTF16;
        this.value = StringUTF16.toBytes(value, off, len);
    }
    
    String(AbstractStringBuilder asb, Void sig) {
        byte[] val = asb.getValue();
        int length = asb.length();
        if (asb.isLatin1()) {
            this.coder = LATIN1;
            this.value = Arrays.copyOfRange(val, 0, length);
        } else {
            if (COMPACT_STRINGS) {
                byte[] buf = StringUTF16.compress(val, 0, length);
                if (buf != null) {
                    this.coder = LATIN1;
                    this.value = buf;
                    return;
                }
            }
            this.coder = UTF16;
            this.value = Arrays.copyOfRange(val, 0, length << 1);
        }
    }

这三个方法一眼看上去有点像 CV 工程师的杰作,不过底层的逻辑确实思路是相似的,就是处理不一样的输入。

我们就挑那个 public 方法深入了解,另外两个相似的构造方法就不赘述了,直接注释:

    public String(int[] codePoints, int offset, int count) {
        // 作为一个 public 方法,首先必须要校验输入参数
        checkBoundsOffCount(offset, count, codePoints.length);
        // 如果 count 为 0,直接就引用空串就完事了
        if (count == 0) {
            this.value = "".value;
            this.coder = "".coder;
            return;
        }
        // 如果关闭了“压缩字符串”,直接跳过这块
        if (COMPACT_STRINGS) {
            // 将 codePoints 转换为 byte[]
            byte[] val = StringLatin1.toBytes(codePoints, offset, count);
            // val == null 代表 codePoints 中某些字符已经超过了 byte 可表达范围
            if (val != null) {
                // codePoints 中所有字符均可用 byte 表达
                this.coder = LATIN1;
                this.value = val;
                return;
            }
        }
        // 字符串内容无法使用 LATIN1 编码
        // or 关闭了“压缩字符串”
        this.coder = UTF16;
        // 将 codePoints 转换为 UTF16 编码的 byte[]
        this.value = StringUTF16.toBytes(codePoints, offset, count);
    }

java.lang.StringLatin1

    public static byte[] toBytes(int[] val, int off, int len) {
        byte[] ret = new byte[len];
        for (int i = 0; i < len; i++) {
            int cp = val[off++];
            if (!canEncode(cp)) {
                // 如果不能编码则返回 null
                return null;
            }
            ret[i] = (byte)cp;
        }
        return ret;
    }
    
    /**
     * 右移 8 位不等于 0 的话表示输入值超过了 byte 可表示范围
     */
    public static boolean canEncode(int cp) {
        return cp >>> 8 == 0;
    }

java.lang.StringUTF16

    public static byte[] toBytes(int[] val, int index, int len) {
        final int end = index + len;
        // Pass 1: Compute precise size of char[]
        int n = len;
        for (int i = index; i < end; i++) {
            int cp = val[i];
            if (Character.isBmpCodePoint(cp))
                // 1 个 16 bit 能存下这个字符
                continue;
            else if (Character.isValidCodePoint(cp))
                // 需要 2 个 16 bit 才能存下这个字符
                n++;
            else throw new IllegalArgumentException(Integer.toString(cp));
            // 超过了 Unicode codePoint 最大值
        }
        // Pass 2: Allocate and fill in <high, low> pair
        // 长度为 char[n],则需要分配 byte[2n]
        byte[] buf = newBytesFor(n);
        
        // 填充 byte[]
        for (int i = index, j = 0; i < end; i++, j++) {
            int cp = val[i];
            if (Character.isBmpCodePoint(cp)) {
                putChar(buf, j, cp);
            } else {
                putChar(buf, j++, Character.highSurrogate(cp));
                putChar(buf, j, Character.lowSurrogate(cp));
            }
        }
        return buf;
    }

所以,本节标题的问题有了答案:

什么时候确定这个字符串用什么编码?怎么确定?

在未关闭 COMPACT_STRINGS 的前提下,调用构造方法创建 String 实例的时候,先尝试使用 LATIN1 编码字符串,如果失败则使用 UTF16 编码字符串。
如果构造方法输入的是 String 的实例或该实例包含了编码信息,则会直接引用原有的编码。

private int hash

这个字段存储 hashCode。方法比较简单,就不赘述了。

java.lang.String

    public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            // 懒加载,首次使用时再计算 hashCode
            // 为了确保使用不同编码的相同内容计算结果一致,计算时同样要区分编码
            hash = h = isLatin1() ? StringLatin1.hashCode(value)
                                  : StringUTF16.hashCode(value);
        }
        return h;
    }

java.lang.StringLatin1

    public static int hashCode(byte[] value) {
        int h = 0;
        for (byte v : value) {
            h = 31 * h + (v & 0xff);
        }
        return h;
    }

代码中出现了 v & 0xff 看似有些奇怪,byte 本来就不大于 0xff,为什么还要做一次与运算?
文章下面的章节有相关解释,可以先记住这个问题。

java.lang.StringUTF16

    public static int hashCode(byte[] value) {
        int h = 0;
        int length = value.length >> 1;
        for (int i = 0; i < length; i++) {
            h = 31 * h + getChar(value, i);
        }
        return h;
    }

由于一个字符对应 2 byte 或 4 byte,需要将多个 byte 作为一个整体处理。

至于 31 这个因子的选择,涉及到数学相关知识,不在这里赘述。

那些常用的方法你都熟悉吗?

源码中大量出现的 byte & 0xff 是什么鬼?

可以先看下一节,看完源码再回来考虑这个问题。

这个问题跟补码相关。

byte 本来不就是 8 位二进制吗,跟 8 个 1 做一次与运算不是多此一举吗?

考虑以下代码的输出:

        byte b = (byte) 0xff;
        System.out.printf("((byte) 0xff) => %d\n", b); // -1
        System.out.printf("((byte) 0xff) & 0xff => %d\n", b & 0xff); // 255

Java 中的基本类型是有符号数,byte, int 的最高位是符号位,当 byte 扩容到 int 的时候,为了保持数值的一致,扩容多出来的 24 bit 根据符号决定补 1 还是 0。

byte 1111 1111 对应的数值是 -1,扩容到 int 后就会变为 1111 1111 1111 1111 1111 1111 1111 1111

对于有符号数来说,这个数值保持了一致;
但是对于无符号数,这个结果明显不是想要的。

所以 1111 1111 & 0xff 会得到 0000 0000 0000 0000 0000 0000 1111 1111

为什么 1111 1111 & 0xff 得到的不是 1111 1111

Java 数值字面量默认用 int 表示,因此 0xff 是一个 int 类型的数。
byte 和 int 做运算,自然要先扩容到 int 类型。
为了保持扩容后二进制一致性,所以要 & 0xff

你知道 String.trim() 方法去掉的不仅仅是空格字符吗?

java.lang.StringLatin1

    public static String trim(byte[] value) {
        int len = value.length;
        int st = 0;
        // 去掉的不仅仅是空格,而是所有不大于 32 的字符
        while ((st < len) && ((value[st] & 0xff) <= ' ')) {
            st++;
        }
        // 同上
        while ((st < len) && ((value[len - 1] & 0xff) <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < value.length)) ?
            newString(value, st, len - st) : null;
    }

String.strip() 去掉空格字符 ’ ’ ( ‘\40’ ) 和 ‘\t’

strip() 方法从 JDK 11 开始提供,与 trim() 方法不同,strip() 方法只会去掉 ’ ’ 和 ‘\t’

strip 系列的方法有:

  • strip() 去掉两端空格
  • stripLeading() 去掉串首空格
  • stripTrailing() 去掉串尾空格

java.lang.String

    public String strip() {
        String ret = isLatin1() ? StringLatin1.strip(value)
                                : StringUTF16.strip(value);
        return ret == null ? this : ret;
    }

方法逻辑比较简单,不再赘述

java.lang.StringLatin1

    public static String strip(byte[] value) {
        int left = indexOfNonWhitespace(value);
        if (left == value.length) {
            return "";
        }
        int right = lastIndexOfNonWhitespace(value);
        return ((left > 0) || (right < value.length)) ? newString(value, left, right - left) : null;
    }
    
    public static int indexOfNonWhitespace(byte[] value) {
        int length = value.length;
        int left = 0;
        while (left < length) {
            char ch = (char)(value[left] & 0xff);
            if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
                break;
            }
            left++;
        }
        return left;
    }

split 方法是如何高效分割字符串的?

split 方法使用正则表达式分割字符串,是个很常用的方法。

但涉及正则表达式,很大概率会涉及性能问题,String 也没有提供非正则表达式的字符串分割方法。

那在进行一些简单的分割(例如按逗号分割字符串等)时如何保证不低的执行效率?

直接上源码注释:

java.lang.String

    public String[] split(String regex, int limit) {
        /* fastpath if the regex is a
         (1)one-char String and this character is not one of the
            RegEx's meta characters ".$|()[{^?*+\\", or
         (2)two-char String and the first char is the backslash and
            the second is not the ascii digit or ascii letter.
         */
        char ch = 0;
        // 有两种情况会直接对字符串进行分割,无需调用正则表达式的类,提高效率:
        // 1. 表达式只有 1 个字符,而且不是正则表达式的符号,例如 ","(按逗号分割字符串)
        // 2. 表达式只有 2 个字符,斜杠 \ 加上一个非数字、字母字符,例如 "\\."(按英文句号分割字符串)
        if (((regex.length() == 1 &&
             ".$|()[{^?*+\\".indexOf(ch = regex.charAt(0)) == -1) ||
             (regex.length() == 2 &&
              regex.charAt(0) == '\\' &&
              (((ch = regex.charAt(1))-'0')|('9'-ch)) < 0 &&
              ((ch-'a')|('z'-ch)) < 0 &&
              ((ch-'A')|('Z'-ch)) < 0)) &&
            (ch < Character.MIN_HIGH_SURROGATE ||
             ch > Character.MAX_LOW_SURROGATE))
        {
            int off = 0;
            int next = 0;
            boolean limited = limit > 0;
            ArrayList<String> list = new ArrayList<>();
            // 不断寻找下一个被分割字符
            while ((next = indexOf(ch, off)) != -1) {
                // 没有限制分割次数 或 不足指定的分割数
                if (!limited || list.size() < limit - 1) {
                    // 为什么是 limit - 1
                    // 例如 limit = 3,代表分割后的字符串片段不会超过 3 段
                    // 即最多切割 2 次
                    // 示例:"0,1,2,3,4".split(",", 3) => {"0", "1", "2,3,4"}
                    list.add(substring(off, next));
                    off = next + 1;
                } else {    // last one
                    // 已完成指定的分割次数,将字符串剩下的部分直接添加到结果集中
                    //assert (list.size() == limit - 1);
                    int last = length();
                    list.add(substring(off, last));
                    off = last;
                    break;
                }
            }
            // If no match was found, return this
            // 没有可以分割的,直接以数组形式返回当前字符串
            if (off == 0)
                return new String[]{this};

            // Add remaining segment
            // 把字符串剩下的部分添加到结果集中
            if (!limited || list.size() < limit)
                list.add(substring(off, length()));

            // Construct result
            int resultSize = list.size();
            if (limit == 0) {
                // 去除结果集末尾的空串
                // 示例: "0,1,2,3,4,5,6,,,,,".split(",") => {"0", "1", "2", "3", "4", "5", "6"}
                while (resultSize > 0 && list.get(resultSize - 1).length() == 0) {
                    resultSize--;
                }
            }
            // 结果集转数组
            String[] result = new String[resultSize];
            return list.subList(0, resultSize).toArray(result);
        }
        // 如果不是简单的分割,就直接交给专门搞正则表达式的去做好了
        return Pattern.compile(regex).split(this, limit);
    }

substring 很简单,但也要了解一下

substring 系列有以下几个方法:

  • public String substring(int beginIndex) 取字符串后半段,参数指定了后半段起始位置
  • public String substring(int beginIndex, int endIndex) 取字符串中间某段,参数指定了起始、结束位置
  • public CharSequence subSequence(int beginIndex, int endIndex 实际上直接调用 substring(int, int)

java.lang.String

    public String substring(int beginIndex, int endIndex) {
        int length = length();
        // 校验输入合法性
        checkBoundsBeginEnd(beginIndex, endIndex, length);
        // 获取子串长度
        int subLen = endIndex - beginIndex;
        if (beginIndex == 0 && endIndex == length) {
            return this;
        }
        // 根据编码,区别对待
        return isLatin1() ? StringLatin1.newString(value, beginIndex, subLen)
                          : StringUTF16.newString(value, beginIndex, subLen);
    }

其实两种编码的具体实现都是借助 Arrays.copyOfRange 复制原数组的某一段,创建一个新的字符串。

java.lang.StringUTF16

    public static String newString(byte[] val, int index, int len) {
        // 检查是否开启压缩字符串
        if (String.COMPACT_STRINGS) {
            // 尝试使用 Latin1 编码
            byte[] buf = compress(val, index, len);
            if (buf != null) {
                return new String(buf, LATIN1);
            }
        }
        int last = index + len;
        // 由于 UTF16 每个字符占用 2 byte,索引要乘 2 进行对应
        return new String(Arrays.copyOfRange(val, index << 1, last << 1), UTF16);
    }

Latin1 的 newString() 方法比较简单,直接复制数组内容创建新字符串

java.lang.StringLatin1

    public static String newString(byte[] val, int index, int len) {
        return new String(Arrays.copyOfRange(val, index, index + len),
                          LATIN1);
    }

replace 系列方法的实现

字符串替换相关的方法有以下几个:

  • public String replace(char oldChar, char newChar) 字符替换
  • public String replace(CharSequence target, CharSequence replacement) 字符串替换
  • public String replaceFirst(String regex, String replacement) 正则表达式替换首个匹配项
  • public String replaceAll(String regex, String replacement) 正则表达式替换全部匹配项

由于后两个正则表达式相关的方法直接调用 java.util.regex.Pattern 实现,此处不展开。

单字符替换

单字符替换逻辑比较简单,关键在于被替换字符和替换字符是否需要进行编码转换。

java.lang.String

    public String replace(char oldChar, char newChar) {
        if (oldChar != newChar) {
            String ret = isLatin1() ? StringLatin1.replace(value, oldChar, newChar)
                                    : StringUTF16.replace(value, oldChar, newChar);
            if (ret != null) {
                return ret;
            }
            // 如果 ret 为 null 说明没有发生替换,直接返回原串
        }
        return this;
    }

java.lang.StringLatin1

    public static String replace(byte[] value, char oldChar, char newChar) {
        // 如果 Latin1 存不下被替换字符,字符串中肯定不存在这个字符
        if (canEncode(oldChar)) {
            int len = value.length;
            int i = -1;
            // 找到第一个被替换字符
            while (++i < len) {
                if (value[i] == (byte)oldChar) {
                    break;
                }
            }
            if (i < len) {
                // 检查新字符能否用 Latin1 编码
                if (canEncode(newChar)) {
                    byte buf[] = new byte[len];
                    // 把前面不需要动的字符先复制过去
                    for (int j = 0; j < i; j++) {    // TBD arraycopy?
                        buf[j] = value[j];
                    }
                    // 开始替换
                    while (i < len) {
                        byte c = value[i];
                        buf[i] = (c == (byte)oldChar) ? (byte)newChar : c;
                        i++;
                    }
                    return new String(buf, LATIN1);
                } else {
                    byte[] buf = StringUTF16.newBytesFor(len);
                    // inflate from latin1 to UTF16
                    // 把原本 Latin1 编码的串转换为 UTF16
                    inflate(value, 0, buf, 0, i);
                    // 开始替换
                    while (i < len) {
                        char c = (char)(value[i] & 0xff);
                        StringUTF16.putChar(buf, i, (c == oldChar) ? newChar : c);
                        i++;
                    }
                    return new String(buf, UTF16);
                }
            }
        }
        return null; // for string to return this;
    }

java.lang.StringUTF16

    public static String replace(byte[] value, char oldChar, char newChar) {
        int len = value.length >> 1;
        int i = -1;
        // 找到第一个被替换字符
        while (++i < len) {
            if (getChar(value, i) == oldChar) {
                break;
            }
        }
        if (i < len) {
            byte buf[] = new byte[value.length];
            // 把字符串前面不需要动的部分复制到新数组
            for (int j = 0; j < i; j++) {
                putChar(buf, j, getChar(value, j)); // TBD:arraycopy?
            }
            // 开始替换
            while (i < len) {
                char c = getChar(value, i);
                putChar(buf, i, c == oldChar ? newChar : c);
                i++;
           }
           // Check if we should try to compress to latin1
           // 如果被替换字符用 UTF16 编码,替换字符能用 Latin1 编码
           // 则尝试压缩一下字符串
           if (String.COMPACT_STRINGS &&
               !StringLatin1.canEncode(oldChar) &&
               StringLatin1.canEncode(newChar)) {
               byte[] val = compress(buf, 0, len);
               if (val != null) {
                   return new String(val, LATIN1);
               }
           }
           return new String(buf, UTF16);
        }
        return null;
    }
字符串替换

字符串的替换主要借助了 StringBuilder 实现。主要思路是将不需要替换的字符串片段和新的片段添加到结果集中,跳过被替换的字符串。

java.lang.String

    public String replace(CharSequence target, CharSequence replacement) {
        String tgtStr = target.toString();
        String replStr = replacement.toString();
        // 查找字符串中是否存在被替换字符串
        int j = indexOf(tgtStr);
        if (j < 0) {
            // 找不到则无需替换
            return this;
        }
        int tgtLen = tgtStr.length();
        int tgtLen1 = Math.max(tgtLen, 1);
        int thisLen = length();

        int newLenHint = thisLen - tgtLen + replStr.length();
        if (newLenHint < 0) {
            // 溢出了!能把 int 类型搞成负数,字符串容量已经超过 4G 了
            throw new OutOfMemoryError();
        }
        StringBuilder sb = new StringBuilder(newLenHint);
        int i = 0;
        do {
            // 将不需要替换的片段加入到结果集中,然后添加新的字符串到结果集
            sb.append(this, i, j).append(replStr);
            // 索引跳过被替换的字符串,设置为下一段不需要替换的字符串的起始位置
            // j 到 j + tgtLen 是被替换字符串的下标
            i = j + tgtLen;
            // 寻找下一段被替换字符串的起始位置
        } while (j < thisLen && (j = indexOf(tgtStr, j + tgtLen1)) > 0);
        return sb.append(this, i, thisLen).toString();
    }

String 如何实现大小写不敏感的比较方法?

String 内部有一个 CaseInsensitiveComparator,这个类实现了 java.util.Comparator,用于大小写不敏感的字符串比较。

java.lang.String

    public static final Comparator<String> CASE_INSENSITIVE_ORDER
                                         = new CaseInsensitiveComparator();
    private static class CaseInsensitiveComparator
            implements Comparator<String>, java.io.Serializable {
        // use serialVersionUID from JDK 1.2.2 for interoperability
        private static final long serialVersionUID = 8575799808933029326L;

        public int compare(String s1, String s2) {
            byte v1[] = s1.value;
            byte v2[] = s2.value;
            if (s1.coder() == s2.coder()) {
                return s1.isLatin1() ? StringLatin1.compareToCI(v1, v2)
                                     : StringUTF16.compareToCI(v1, v2);
            }
            return s1.isLatin1() ? StringLatin1.compareToCI_UTF16(v1, v2)
                                 : StringUTF16.compareToCI_Latin1(v1, v2);
        }

        /** Replaces the de-serialized object. */
        private Object readResolve() { return CASE_INSENSITIVE_ORDER; }
    }

4 个 compareToCI 比较方法的具体实现思路相似,取其中一个展开。

java.lang.StringLatin1

    public static int compareToCI_UTF16(byte[] value, byte[] other) {
        int len1 = length(value);
        int len2 = StringUTF16.length(other);
        // 取短的字符串的长度
        int lim = Math.min(len1, len2);
        for (int k = 0; k < lim; k++) {
            char c1 = getChar(value, k);
            char c2 = StringUTF16.getChar(other, k);
            if (c1 != c2) {
                // 字符都转为大写
                c1 = Character.toUpperCase(c1);
                c2 = Character.toUpperCase(c2);
                if (c1 != c2) {
                    // 字符都转为小写
                    c1 = Character.toLowerCase(c1);
                    c2 = Character.toLowerCase(c2);
                    if (c1 != c2) {
                        // 字符不同可以得出比较结果
                        return c1 - c2;
                    }
                }
            }
        }
        // 走到这里说明一个字符串是另一个的前缀,根据长度比较
        return len1 - len2;
    }

大致逻辑:

  1. 先把两个字符进行一次比较;
  2. 如果不相等,都转为大写;
  3. 如果不相等,都转为小写;
  4. 还是不相等,则可以得出比较结果;
  5. 如果循环因 k == lim 结束,说明其中一个字符串是另一个的前缀,比较长度得出结果。

为什么字符转为大写后不相等,还要尝试转小写而不是直接得出比较结果?

这个问题可能与 java.lang.CharacterData 的具体实现相关,此处没有深入研究。

一些特别简单或主要实现逻辑不在 String 的方法

有一些方法上面的章节没有提到,主要是因为具体实现借助其他类或实现逻辑特别简单。

常用的基本方法

这些基本方法实现逻辑比较简单,此处不展开。

  • public int length() 字符串底层存储改为 byte 后,如果用 UTF16 编码,则需要将 byte[] 长度除以 2
  • public boolean isEmpty() 判断 byte[] 长度是否为 0
  • public boolean equals(Object anObject) 先判断是否同一个实例,否则根据编码调用对应的具体实现
  • public char charAt(int index) 获取单个字符,根据编码调用具体实现
  • public boolean startsWith(String prefix, int toffset)
  • public boolean startsWith(String prefix) 直接调用 startsWith(prefix, 0)
  • public boolean endsWith(String suffix) 直接调用 startsWith(suffix, length() - suffix.length())
  • public int indexOf(int ch, int fromIndex)
  • public int indexOf(int ch) 直接调用 indexOf(ch, 0)
  • public int lastIndexOf(int ch, int fromIndex)
  • public int lastIndexOf(int ch) 直接调用 lastIndexOf(ch, length() - 1)
  • static int indexOf(byte[] src, byte srcCoder, int srcCount, String tgtStr, int fromIndex) 找到
  • public int indexOf(String str, int fromIndex) 直接调用 lastIndexOf(value, coder(), length(), str, fromIndex)
  • public int indexOf(String str) 直接调用 lastIndexOf(str, length())
  • static int lastIndexOf(byte[] src, byte srcCoder, int srcCount, String tgtStr, int fromIndex)
  • public String repeat(int count) 创建一个容量 count 倍的新数组,循环复制内容
valueOf 系列方法

该系列方法直接调用对应包装类的方法或 String 构造方法,此处不展开。

  • public static String valueOf(Object obj) 返回字符串 "null" 或调用 obj.toString()
  • public static String valueOf(char data[]) 直接调用构造方法 return new String(data);
  • public static String copyValueOf(char data[]) 等价于 public static String valueOf(char data[])
  • public static String valueOf(char data[], int offset, int count) 直接调用构造方法 return new String(data, offset, count);
  • public static String copyValueOf(char data[], int offset, int count) 等价于 public static String valueOf(char data[], int offset, int count)
  • public static String valueOf(boolean b) 实现逻辑: return b ? "true" : "false";
  • public static String valueOf(char c) 根据 c 的值返回一个 LATIN1UTF16 编码的 String
  • public static String valueOf(int i) 直接调用 Integer.toString(int)
  • public static String valueOf(long l) 直接调用 Long.toString(long)
  • public static String valueOf(float f) 直接调用 Float.toString(float)
  • public static String valueOf(double d) 直接调用 Double.toString(double)
getBytes 系列方法

getBytes 系列方法主要由 java.lang.StringCoding 实现,涉及大量编码相关的规则实现,此处不展开。

  • public byte[] getBytes()
  • public byte[] getBytes(Charset charset)
  • public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
  • @Deprecated(since="1.1") public void getBytes(int srcBegin, int srcEnd, byte dst[], int dstBegin)
大小写切换相关方法

大小写切换相关方法涉及到地区编码相关规则实现,此处不展开。

  • public String toLowerCase(Locale locale)
  • public String toLowerCase() 直接调用 toLowerCase(Locale.getDefault())
  • public String toUpperCase(Locale locale)
  • public String toUpperCase() 直接调用 toUpperCase(Locale.getDefault())
codePoint 系列方法

codePoint 系列方法涉及较多编码规则实现,此处不展开。

  • public int codePointAt(int index)
  • public int codePointBefore(int index)
  • public int codePointCount(int beginIndex, int endIndex)
基于 java.util.regex.Pattern 实现的系列方法

以下方法主要基于 java.util.regex.Pattern 实现,此处不展开。

  • public boolean matches(String regex)
  • public String replaceFirst(String regex, String replacement)
  • public String replaceAll(String regex, String replacement)
基于 java.util.Formatter 实现的格式化系列方法

以下方法主要基于 java.util.Formatter 实现,此处不展开。

  • public static String format(String format, Object... args)
  • public static String format(Locale l, String format, Object... args)
Stream 相关方法

以下方法与 Stream 相关,此处不展开。

  • public Stream<String> lines() 字符串按行分割成流
  • public IntStream chars() 字符流
  • public IntStream codePoints() codePoint 流

除了存储方面的优化,String 还优化了什么?

字符串拼接底层实现

有这么一段代码,循环拼接字符串:

    @Test
    void testConcat() {
        String s = "";
        for (String o : Arrays.asList("1", "2", "3")) {
            s += o;
        }
        Assertions.assertEquals("123", s);
    }

来看 JDK 8 编译 s += o; 这行得到的字节码:

   L4
    LINENUMBER 17 L4
    NEW java/lang/StringBuilder
    DUP
    INVOKESPECIAL java/lang/StringBuilder.<init> ()V
    ALOAD 1
    INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
    ALOAD 3
    INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
    INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
    ASTORE 1

每次执行创建一个 java.lang.StringBuilder 实例拼接字符串。

再看看 JDK 11 编译 s += o; 得到的字节码:

   L4
    LINENUMBER 17 L4
    ALOAD 1
    ALOAD 3
    INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
      // handle kind 0x6 : INVOKESTATIC
      java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
      // arguments:
      "\u0001\u0001"
    ]
    ASTORE 1

自从 JDK 9 开始,字符串拼接的底层实现交给了 java.lang.invoke.StringConcatFactory

先不看源码,用性能测试说话

源码比较复杂,本文不展开了。

测试环境:

  • Intel® Core™ i7-8700 CPU @ 3.20GHz × 12
  • DDR4 32G 2666MHz
  • Linux sia.lo 5.3.0-51-generic #44~18.04.2-Ubuntu SMP Thu Apr 23 14:27:18 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

测试工具:

  • java version “11.0.6” 2020-01-14 LTS / Java™ SE Runtime Environment 18.9 (build 11.0.6+8-LTS)
  • javac 1.8.0_241 / Java™ SE Runtime Environment (build 1.8.0_241-b07)
  • JMH 1.23

测试字符串使用 jshell 生成,执行以下代码:

var strings = new ArrayList<String>();
var r = new Random();
for (int i = 0; i < 1000; i++) { var sb = new StringBuilder(); for (int j = 0; j < 100; j++) {sb.append(Character.toString(' ' + r.nextInt(0x7f-' ')));} strings.add(sb.toString());}
System.out.println("{" + strings.stream().map(s -> "\"" + s.replaceAll("[\"\\\\]", "'") + "\"").reduce((a, b) -> a + "," + b).orElse("") + "}");

测试代码:

package vip.wuweijie.test.jmh;

import org.openjdk.jmh.annotations.Benchmark;

public class MyBenchmark {

    /**
     * 该字段是 1000 个长度为 100 的字符串,使用 jshell 随机生成
     */
    private static final String[] STRINGS = {"i[LPbL9@v{;&kO#@#)Y_ LX2_m7!1<8_GpjaqAjBFHJD(1>56KpvA,pyIc&=]w`&,Ph#!,Jv&Vcxg__j=p9**!;lK}c6~WN1s?#Y", "5LQ.-Mrx7t!>!C.bqEWz[!WUs4GOcFgphJB'*~5G]sDD_``12JMB7IXT&O&te}-u~4^?_Ec[}b|'Eu_+HzMtOAb3Io+De9C'7B'0", "ecd@&`6%m&L[5+*h/?;zdTQ!raJK OIfTW*VrpyMT+WCUcNmz5L[:}%f]8<d)2#_&i+wY!0?uE7j+%'Ct#gaIToy7)w;XbR(L-?F", ":'6[>Km.v][fCDf # -'*KgM/U'kSUY$z;A44P3')K)='#Z]LlI|f[z~N/zTk&ybJO`EGEp<8oqHI+%2g-U@oC&U51Lu#oR{oXi^", ")hpz!4{Z3=9@DZ}'^@XhK&i2s'R(>+IdE(t,[<`pqvOm!:QMo~o/I=uDG*4yn<$r+vvm-*d!PYJ^!=sO2LfBLT]j.6U</ =VWXvA", "-Q`H)39'v:ep|p}bd nG,~G]`}S5JdF(jc|W~>ZGFnYdM_ ^z.*f|}Dsb,(ESgb#Lqa}D^vFj*Cu_XKpS(Qp;4U/JF_'[C>Xl!2-", "h?)`IGZRI:B'V0H_.*[^ErLFF+''0=]Uz-?Lul22lUm:[|!8m@[kXzRBD^)*c{89PD,a2j2ePuQQswNVA2vy(-`5qDVFab=mWlb2", "N&zF'sO(V#^WkP~lQ ^bp^`zQL,3*?Gi*5$Yl,$^SE2|'/KI_.'j&P2E(zc5DVm0mX~,ADe.{oL]IJmY.(4Q$TgMQP9L%5Pcc5H~", "Ch<%S)i[Z`J$;c+H%xJ7^DD)hIX|}L6QZE;yE>>+^_Byx[2dC !<ZbE0Yl()O26A#!|t{2_-If0;QLl8.9nq0 'KbUw!Ba<R[/-P", ",6gT^;u_~V3>g,$%IgW/U2iH&XiLx,OtWgG9fulR.{l}ta3tw'e/=:Yhm'r)NpSmVtY++GFC'` V]Q1<?T]p!yvhBw<my*98>W#q", "C~%x[5<Jx>b#JX'TQIh'pY8jwp4 N;Bq R+`sZz%Thej|<Mmg0e:RW:lk|ID)m7ebvM+T>%1U-le1!r-6~6e4MWW((tH.&@zIUeE", "Xp}OW~Aaky27;*u_SFDfliT#}BW40|'j[MHF!m_`UovDAxPaE3W$Fd'Da>Hb*Q@AM/S+Ujn`'mdnte~|Wp?M_PzYSs%Ce,udH$!y", "H/T53ZZ=W6]y}x6L/2tYs~p}F46qh}!|w0}7x[^q(vVL($:xfZt}5b]/eh!x*?/rdG}D_NSXyA[xW09'P:]I8=E|JE>8PJ8$NBmX", "{N6`-=;/eQ97#<G%VOP$}OT=]u3~0-?ZtN#V{dt?Vf7Q__5 &I[wem:j'AUshr.JU[c+0?2/'o'a<^(9|X'h&Uy{hg@gZ2]OSU<$", "j_)l_^JLKQWh{UhO_,c'ZVN40q}/1^sO'9'UXf-HGE1S;!aFsi?b QGBQ hp$Ev^x@2A!wQ:|M+/P2.(X5lB=NO&~vjD2wiX|mv9", "O8!}wG|=*S/[_d4e$tD;o~M~EtO3`K'LEh{0]pcdHDlL!gZ=B(;zx`GOQ>'4}r_SoGS@}7V$z*z@c;bU6;D`MFFBZ]'SR=% kt)4", "D)C3QlKo%r[`CanKc;md*'hM|<'>_e*|E|U](:38&~h=JvtUc5H8$h|B$2zw#:+c1Ak1BGAk~=LC5_1y,JH.'rP#^Me-*[0S|)>V", "&:P3s=t' iBZ$'*|Jpqde']Y{vf6a'^dt$!xOfe_nY9Wv@LCAShn0FA}b9u9.)7c/#<5?Kwf3JWo22dz`I_*P9q!G-ONEjPGGRG@", "W%K<NXtWR5dvvV1fRa/k$IT5$hWyAW7;Z$0rcD%!Pz*]=@/'x_n[#kxuX!bWod;h4T@r.n+mXlIIXrj{_F#fa 34.;+^:P'kD]^{", "N7ic;(1tvk;Z?}T%d,Sp/Zdt-5vFvOdK?H{C}EV[X8'$EAM<84rU!{Cac(K 8hxqaq-CxQ=L|!u'CRLOyJ?p'yVp}x]lhp8@cRzl", "[j,~1ZLh}L1vdmhDms'=}0C~_jdW2i8bW%?qn{1tpn}r'KAAS>a0y7I~WLK7`WU0Tt'-Tl~o'`ZU5S]~(6Tp*]JFsh0({z07eQHA", "~Xn,]veX#O_/%~lWC'qwM)yNN'8bw$o!'>s(X[x1d{|f|7{}O~x,L^~d%kyHYA_Fhpz? HdM29D'+8?h3<~/=6>k6w9PF73zNlYb", "|8.MAOHaH13ra<EF_[DQF+0H%=<#pOo1/Z(u&h:]dsa^>v~cwaxpE?7'}z!/n(!'Jx[mTY_, f20U'4'GsR|OwX|JIskKc6mm`U'", "lB2,StBu}OXD,aJeI@X-ogE<'3a,^GQfsJPhYMnLZ|z*>>${Tp>L0H&ef=ccRBn}-((,}@Q^Rj$sF.t|tsOuL]I[U!n;=U#3lMo[", "PlN_U'%R!x}'`;^B$ +g|sB@euNp0Y)hulZK9%-q2:k9E@o,+DOo)e/y-z3esZ]e~{R<+&!;_%crZMsr1h@*gKdp8p|fTc&y'E''", "sheLC3q;9vbPT+PxvyXZJq_y!F6a]9A-;~D[ 3YrF&eds.)AY3)%0l{_Gh|xGt*aah$ry5Eo|`nAi.xQ9^>TOL'@2^jeJh8!G'JY", "%d82SeXL5'T/b[Z`u^fC(y'-x:s+Z>$AxmW|A@M=H:D{}y }iIxJB 1gb(/**'xxv1],20Qd9EFsufBp/h/+iwrGW?Q6kj|5eQIy", "VuSm!v*IG@QBkG4rN/syUGz%dym~p^$5r9it+n v$Yy^n[W'Yj]}Z`_e,)2QAAS]b$tMk#4QK'T'_>A s(>CLmTln>w(UKN@-`My", "mo_YT7|PKb3Bj,rCsm$nX$NH;,W,8 r|EcSb3gw,^/vd$IA}/ovB21%'p}8EgA`egh5A%^.sLYR!8LO%pg39#5.DFUDKCa@o:OHI", "=VON0~fL8J3heEP|a<{xCvp]s[K+%5ogSz@8:@=e7~][7R ,~sw*0 -g_|E& `(44254g/{Iyw.0zZqFtu14kU~1q?L|YT->T4(G", "zyD%I-KsU8m?)4L-}s}b#622}{s2 ,J6]UN2rF/tqGWb?QRz#d(Y`FRYj%C4u~0tf:-l$2?p?:egCi|D/2El~C$K7;0[!hD%2mUD", "ur.kht=pe`/Br1X}JBlD+&47*RfbG9qfY>,'/['@0?|0M>^fvTWWq$&}Bn&'%emme<{$'247h1l'iG8(;O_'R[DCo'5>3~m8:@+0", "6Z}mpbM2p{Ylu|e('@x$x'8I~t6`6y,a(XXZV2@y&Smp9uVh>(q$i.$tY_uzDWRf.~t894I:>YQu'|$k8gHGO$xMY{s0S5M+,mm!", "<7Fh&4V'x%E`%5!3Us!es#=T)1#;jw0)'x)^&pMVU@7_T$V!-XPk]G+%yh<?dQ:M'`QImJzGTEd?,EI#4SP-;qoyM5tnTM)NGY<0", "8D[<Dw6Y>UG>u!%e2U 'OSKnO8'7]**mmnET>Gajs-NdM*M(3!bohU`~$IE_*R(<=m2.]Hu&;8O4_c%ZMk)YOR*AsC<(NT@W5o:c", "~hk)vjYWaf'ye4['d'<IK'AeboQ]./*XfOf,R[xd:CmSbs(!HJ774J1y^2N7$^U<WhH|^dL3o[oBDm0pYayCpMwgjzxU25`Z.)2b", "!EOG0s!p2z4c a{j&o&c)'6vlt&}^%p.~9V1oxIX/w)_x'S99sGl.I,()PT}c(`.0e<[`sQed2OR]bM# K|[QP`t>|Vm:_@R]Z.i", "~5(zg[Hix$V05D-c8c.)(*uwRvVusY);5B@':B^t~AzO8l{4n|#vl5m[}'x&$*.(r~LG2v+ss>dmI!MQqa'd5,$r'vTT]I`m8h0T", "n{_E|~rh{I7=Z6.4+tv!9i`E8bY>6<~xE'jz$c2;qd~g0o|~A'~cUK0(#x':vwU!S43RV&NKG>3^3mhDYfbwns'0Ot0BG'4/G0nN", "F }kn'5Ej=buouWt<_mQ471kGY.})nvp_ijBtru9OFCmMS}8i;mBK@uMi7WPN1Us3*bwUE(hTX&=yWS4E-RA(:RA,7EgNI6y4=1%", "+kJLPt3}?%Fx<Rd{6ZQSOA*<icvs5L:S$Z2eo v^* +YY,a~2Q)P]g$,_j#BOh*BrX3toAQY2+h#A[)a7>C0_8w=o_%q_X9~jYt9", "t~7:sta+Gf7[OXQv?aY/um(zp$@Tp{]|^Ur<95dBpIlDjzNTSFDH}Yc]}/'6.&z5e#KjW%pH{as!]k2@_u;M%75DOFv=bq}MQJ04", "Z}[zk}O,3 royk{e9p'-I~hS{$(2|L0ab/Q:<tj%5|seYme:903{hQxCQ-RL(&H>?4QA(7+5#)~Z<v}X/9Te2Lz<~'6{*soD@0QH", "qx7}`]lj3gk=g-MG7a,&;Jr2DY-FpmcJ.}HXkNovC2&52w^IN1j~/ XgzF,6ra1b v)I{Z]TWr'K-;KX]U)D{3^ruv_sQ])A!14L", "Qz_yp=5T-Guy6}Tg^y=4Fa#*o!M8)G[*|%1I(bv'YxjVL[A,9qJmIx(>EY8_'576 ZapQ=nn$s~$[i2XJF}3:bgv?r%<V'MGg(j3", "Q_Hzk,2eGL!EC`jga`*kB*?y]o%Wz@5jR<F;#('.=D.T|h'8j%2R/ {oWzA_?6Wa*6rRAs6ZDoJ*;6XW[7>pMlYGgn6sd*|&m&p8", "cc!JG_jU>zSm]KX4v@(nBQ/~MAH6)o *R|W;H@K7rqu)TB^=M9si8XorjvX' Eh1[}.i@v@v$C483Q@UR2I@LR3A#nYi*ZdK(vBf", "@+Dp`XU/}e@x[GVm$/+L0'RQB$=F'Lu@2S-_40[Y T''p }Th['f2p0tN_ti>:qy-shPh'['*5OSwdP<8AQrJC.6'`{Pw:d{#yra", "ZTe%D),UiaX!z[}^?(@JxNs^]x=I -w!htC8FXm+.*X:1;u1Pxrkx0m]:@:F!]?K(Ve5Q-!{75>=9aN+fS5xEYsX$'C(@o;L8<@}", "C4]XiL.Y/$nb+T{Jj3uWV{].u]:_Q p+X$M!tGdzE!5<{l'n8M|I.l+96{;5F~oegH+SL9!Cy`O&5q.l'*#8YjF.c2SV]]nsICHS", "Osr:UU|%*1QDmnuE1l#l~g8cawE+mZh/MX?>K9[8zB{}AhMCAhH)~QW|?T<<x8JV9J{ -7(@[W5AhhT}RGhn)^rX@|s/n%*Zd*5W", "5bV)MY_cm&KWNYHfd)u0'!T ;q8jhKq`5/s~'/8K5qLS-]AA4?N?88AP4]k'O`,OkywhX/58(B5TZ:*_+ /EY3WZ}$i[Py@Z'9g`", "?g(Ux`dZhtXNiu&s})f~7(k.2ku-mB,hpTof~>,V9~Ny-T)70VD7VF =Q-!nz%#@7oaLI9b/iDfD:?(H8{4ik(lYUb]Di^G hV/b", "Es,)g,CXc+7^P2<:'XcIV>-X7zSM XRr(=r7`NE6TLvzKr9+Q=-okJ={U_:4U[U}y`@}Wf+edM4s>Qx<'PYKxr{nG3g}1HbSX&oe", "l'dUSq/6]x]*%jY+>>$1yZFZ]eeWiU0Jd pOh}oq71)CpTbcCC)*Gu58yBOXF'PV0~a't)d'E7|srNeMJFAG>P{h$5G<TA>jh6BM", "c@8dLI)_8  UCMAQ2C0A>7rR'F{'Jy(JI2SaP`,ti=K*'br2pw2Y>CYsfp?uNh4SrH=jJ6*mhk.kG=V@Fd-P+Ne[p1rUaJ{U6a'B", "7VFhBzSC`(!8j{h(GHk128&QLSzP~T,;qE9P Vu8sn(9mi:{]kbhY3r*_l9JI6OVU'=j'Su';t88uE*P8oR}lYz)DQTI)_.2f!0*", "Yn&xrorUJxUszO =%a^gvSk''9'yqs;Jn#Pf}?@:V+F_vx4Pjdq[}ZT'v4/7>/_ZzKSuWnVk^hM`3cl*(g_neo@N$/O|VW#F(:>C", "2b#|K~*nn>BcQ'j+meS-+hg::mw/aInuM?8_^@`OI3G?JSkUt[.-jD]LgjeLdoN|H:oI1V`.F=TK]75gk6#|?Rqq'&H/kxBw;Ot%", "%<=$H!8XZ.OqkiI}b$o^o[h2Fgpd&x/2[SLBihJ,;9N~LAUrzByyu[ ?c?n)apI>yf+LupOO'D(Xn_Wr|aj>jeR4:dfwxVZG|{$X", "p}2AVfL0~5g{S^f0_;uK' h~j5$&!^7co0X@Q&<e-cu]qBJ>V1]@]?tDbCe8L6UTX*l6MVK#{p&c.+}'#:JzsgC{<4U_)Jn :)Ih", "d;!.DRJpycQ*Xy;U<vkFsPXc&cIu`H8IdLN~mNM{:$pZ#yl /|h_L'3eSu>_0*9C2<M:s#B?m^Xz[8mOW%~Z`}:I`:Ln*A5 =FT+", "7<_h^N!'nYoT^t0;t8V)V|^!]6Gia1FE) *B{/Ms{``x6-+JT}j0>Mq'F.oo_LJf&- 5_/] U~Q-R gIfuoe/U{d4DeT1;_s:Z8s", "n/X:apVh&7NQXx#$nMtwpU_)pk`%'ZJaf* rgF@@zd5c8eA9cV26g+e{wH(l(i8'2ngMA-c'04mZV]I:Jo9b t384+SDUU )3'd6", "'W7|6^57Ja&AB3R`%?'?'iLq1whux8Fvp~ZI''6Odc-6.nZ6R(>n'z^~NI-h,Y5j%W68sLNnxK{lIdG]BL 9yTlI5ize'zU{Cknb", "'TIJG%<Vhm-*BU( Zm[|]KWza'CF6y4;6_Rk?;i@1#=jRw.YKJ$vf{0j 3[q'y7nT-=T@.ie[#N9bYyqPtu]8BBTb'7A64vn{,Te", "XOt5P}CupcJ!jheCj&yF'zux958lhuSbjiob=S6trXkV4W%mY%0x7$I,9[!5:AOragj'GMq+n1,V)D$=NZ#@ibwvd4]:R/gN=bIm", "m?~es-~+dw+e?}l|fLFyQn&ms<E5X06d5@#UT>(fzN5xyyw% xCl=C0z2lUc9<E9gnG/chSnhQ@p;.$g7O$)&Jd;j<.]V{9FHk*m", "s';XVp*:3MJj`Izcvd!fyL=SCA2+}ew+>>ubpI#:J#Rvig_$:/-DVL1>G,z'OuqGCjw-L*g(#-_=s<q1G[pT|;PhV<WTDb2oOISR", "+[n A.<e?f06|b#'sxZ3L^jb6WrPrNL'J_cH,,0Lpd}J(rkue])JwdsB v9 C>6Yg?$|EI%2Ry?'TP<Y/piA,U#?yNZy(`4_iE7x", "=s<MZH+;As!E'ERO0h4S++Z+^[>B>)MWp92M<bU&Z7`3I,Y[U]VLHSMU'gq';{r}N6~v3'ZuHQ if*C|.>7G5cf9n{)]u_*MYF_H", "uvdEPplQsx`Oj+ez[;%Y{iY^Z10a/wRG{-m2VYyh$lt+bxk[CFlgp(veZ;UQdMEg-E?2QWQ#to:NPjd8*yjY.75ZMeo7}InE:jP~", "A:=f'a4-`L8v[b`S`{'8K9;r_P^l~$t<sb5r.w'.!0qI3:`/,;U$9'#Ldej.9Bs/? f(MHHlFO[K&}tDWJ$[<tKg8j,A$_`DQsg`", "?Mq4R5Q,{2YY'q) 5Jqm=cz}3X2'uM;< ;4^$PA6'dVZ8pJF0=UpYrQwzdDfKEM$NRC&Lpv(m~D&*b5*9^0;>LNxSdJ+D'WoR{H*", "`_|qavTsT2IAky,[L.A|6]X84(9hEtKA5=LS(SXP/m~'^Pg}Q9<?m-X(?:do9?;4+gMB6`zT}0w?>tP4Y/&h*}vxZ*=nEI<x/'9+", "&$6`5'|RHaLRt3D#=(Uq?^rB.W?3M7BZ*Lmi,vxXQ#0/ac-}%Ce:V5[48Wi|olf'&Zs@b{'^V)t+VdURGg{;Uge]UU>nQjR[fx#@", "[Q,Lk`&#3`m=r(&<Z&?=Pz7R2dS<~b-l.zR(w+%ELqJVc>iO2ZQnMIL;jjoCadfGx9d$|5<Lwed>rKsC..T0cSf{c{):t$vc%f5v", "^P'~e3SqxoJ5P$!_lIw16CL[~xNvt]C;uK.5%U*ZU(/i:M=]D'51u[`m$T]w6i&N$!% eRQ9F[ `ds%w|6Ys(W#@/72S*(bC[J-~", "Hzr<)]x'iyurs`=HvWLnxw} %AT`:y9',F3lbXn9cH'Bbw)}y'M!+y|iuUY(M`Qf-d@QWPi2>'@'[d#)Wv61!{RR2WS<N&<|D<1I", "Q>-#+P#g6|y6yoTDYUML$'Gzp0z}+?vM*;@&xf+CJ[)}T3sp~X(zPq;cKwXi0a(``'?weBKIVp'@X19G[H-5S^_uh1FnF*1PBoQR", "o0.F]|*[obT'(mcQAB|jy1~`W[(jaEsU1y!e->VY<m#XIk,NXJYx'x>_$K0U:1.@6)5NP$9*>!h1&.]ad.70w-_6}8Fe/L80^Yxv", "Lah$f)>8Cp,W g[=K`1]&'q_22uFk!6Fw$0g%Y 0f%iK7#K`E'RLX-71z#?n'l#AWLC]{dQCD>^-cX4hH'{olJ!&rzIVsq3XPP$S", "#-8'U!-?o6Pl'dY*{*2iu/diL>fn#,u}1.!MK*CeC2n3ZG9A<J698ul:TS(.a2x;{Q3yd:k('`Y'qb*8#!5YcBkA[>Y(aK]i;'U#", "O;(fniU=+'<y.,.F c-^2G1S:uTSo]9q+Uq9G/bSq)27.4k( xFae2i|NWD><fsU=3DHs~9lWbWYQn0w_~Fq2WK'(ro8{v8O$9|J", "+C[-J<S_Ol9tjrJ'j/&3'|uH>WOo 2~NA=kU!D:YB,uPf'ke}_SA|&N: Wu8X_bAu7+KnN^tgXc;}e3@dOs%dr.+Q-t@Mq8QMq`E", ",SNhzH'2D}nM,^Pq!7m>`i{Us`SF:VQAGPuI}hZ]B*/U4dg]ZlHIU?^r@Qr 4@tTt''s_t:mya7o(4>2%Or.01H[ GlJx!.Z%EA*", "^H/4[p #92v2&arIzYPah$^BA?t,98JE!A&S/BhAT{,-5uv#Jm~,aW3tL'Po|8:m9m]&p4!H^~5hvV2L5sYY+J'O4nz'8.oXps<$", "7 @%lC=56ck9}{a@_T6b)M8k4JO-h/)'&PH3z|4zFEci[5+Q1VA4;rs~4']Qv0E4Q,F#eM)M0<,5dO,L~'-;/|yW;+LlWZ2p!'<T", "IyS;i5O1o98'00M@OaNb?>;jYZ/&%'`rI>6AL#$MAZ<9t+mq.&BS:d~[[SL8XDKvcKR6%H}D,>'^in}U5x,TNNt{}&GziLvZk*5(", "&V =V4QoLuKhk(m$[-lTtlconPv[zE=/AVYlZ=7OEd5,,'RM'R[x(cUiT$7Z^0.*u1u*'Cek.-gRVl~opVw,kcPKpB3~15O{q}v_", "|F(Je+k>`(mla@'c7~vwuBC1rdcnfpG_16rLuv+'9jg/%<^mDpF)MPBB%-*>o)Z<#H!7bM@?Nusm1_&?6)erXq>i|/NRsjk|@xaY", "&+Gn%KQys'K99Il*ZzeXCqa|![<P-.1v=OBF;)z$d~54lT~W^):.g>?td+B|7z_3/t['H'E,Y+C')MZ^?5Bn',XP4A!`4|,Z2iY@", "feEDm'^OH#sd`2x6BM='t|)u!Z9X4'%;vF>CaRO8*~cTk SBz.r|,hCRTe2Ep6;v) ciQ&uqCF/JBxSXE!Qd1WTUVuCX'wWGLuR1", "3?uy1J|;vpNq'Qh:FSVXF+K`sL+ ?8&uz} Iq235%WnkTdW$L|n'=F,R2 EY[',a|EJ,jFD=S9Kqg,88,K:TDfnI]MwP89XG.%,/", "f*`!#_oQ25mvuH,d<mbUO/W_M#:WRCKePiROoo'@Pd&'/@wAM/C0oW1xC_J 'O{##m6^O;&?RbC1<m65*,k1YkQc;[+8gZn-'V)~", "!vEt<1bV;f#rlCxYwf,j>lZ5dn|-28]S98e<]cst+GM'`lk<87vey:N<1}<Q(o&5u:U]bWq'}5<SBG~7&pom9XY'&m>A.c'KA#^<", "*'$k)kg4TLkw$GW7'M80?.)#L.P.J;xy7&{ .N.Y3FbMzZs]q#X+IBJl#cCw/>!'cdn}g7|y<HC#.$0Y~O`#JtPZRRClmmqq*B<1", "73D4WLDPLAgh#F'|Z#'&_N=3RSQz@:P!W*T-B#~bypAsR);)<p=Qlqk'2=%>p*ojTh=(gJu5s?,Sc0>XF: 7}QCPKqfi>$E#(SO'", "ee/,p8%b3nRsG>'qR4<fJ{F0Uytm{Ho7Y2jWv(mbr#X6bYf'kLu=O0ymt|EIJK:pL]Ze])+]N17%HftNXUg_S4zaC;L1R[*+su&f", "_:Huc,nMi=H7j-t ;if~n-/H{ CioDpUro&gkVw8q^?~?u$QVh98ewL'ta*iIpo0(Sv'OD|Oo&evpy'x3VPn'j<-B_k3?.b'Hk>8", "#lQDit=BX7E=h/g=^7N<?TnJl.d:7dcF|XMf_,IGPIp<DKJpN+sg]E~m=mQ$[j<S1Q8m5}<*0=QX~SbUMRP*Q(5B 0nrM=^$l,bV", "vRN.m4ml~#Z{(R$=u2zCRe0w<r=O=A#HNkjW](d]0a'GUL8v?0$vlZ_D5:vHLAAO$hOZ+r23hHLU{ IwjoS.63ij<W~|RmV.a'gg", "q A#C6~`O|?=yY@ZdPosOf'80}P95CG_bWC.`GC>tst=Wo2C0s(**'yWgrQPn+&iPm:Go@yUD>*>(dU#wi/d.Ui<A'H`k5OEvN(H", "}tYecdC]C[dV@^t;rvJW&<ugyxDK(I/UC3 dU?@hpf^6ln~#/H@a!j),O_> 3`%DMI:W1USB^2B3DUmNI]UEpuje;1(1 F3KqEFy", "A0Y87lm-8G w6mZa`d`zY0H- *,Dx<0hM5vZpaF[g:36%-Vjb=AeA^n'~'s4Fk+Z7m:<V}{SpvdKGnL?7KDH_|r9#9Y'wPrD99kQ", "BIF8e>CnaiDy6fqjAZf$aVJB+A3l-OZ]NkvqTX}GGLuuV@G[$D3WjC'$l+$)oW41o1Nz/9-A='a5E)Dqi]WvXRs>nfhF.`;twTJg", "?ByXd{(y_;Vv,mU'CV)fx-FWkx=C'b%ej<SMpGV]TM6mPwSm0V&DAP^^;veIWU&@Shz;?a$9sBLBHQ8!Fm_^0/6VV%[,E4RVRy^/", "h?:2^_(-'NbO=Q4Bd%1eYH>P@qH?zm4wAq(RUu`bE:8KE=&ca`l_Sd,{3kYnI>'w[YUe[)'<;'G^fHI=!T3j'B8W;'VgXt),?!+S", "`[I-nR@k/'RopAZu.6vi_7J>D'2}3+]v'~<zu|BM?.n[ B8'xy4z_:{H9v,n27JV&BE$9Z!kd^f|[n,%[(hbOpT;U,%yG>0O#UKq", "=2>[c|E8J?8Ht/`d?n;H~X'm;'Z'WRk!!C7U*]f0x<[n?%CQ,p:*QN-Y!d`rS t'sne21lj;<a%~#O#d6Qh |ECKf(oIc@W6nslc", "xV<{L1FL,&H!gfDV<<u,,p'i'xX+}z$4w#T[X(g6%%[(CcSFN'IPnl*>=y:'QYPTMVE1ds&YE~5qG2v<)os67,K43suPI6_'0GO,", " t`qlp4imC_HP9{W(:?gm'EQ6O*RvX#S*~?8R&?Idn9;aIi <OE'yF NbCxM4HFh3N,ZmC@E%Bk'qJT= Tw)3Ww}Lq#&!~;.`ji6", "i%a5:ee'U&,CEb,'Dzy'fCF_oMu='Aya]CaKW8[YMvPDn%;Z~^DjqmjAP:ZY_Y$d/8g4yTmQ}Ad`$: $XLh)i@PUv'a{Woi})'d'", "lr:F2V&2Q7'{VqO>^Z'h[M9zN-9zW'2ea`J'ar SXXUhIn,]K.8IF+gJ9V*tx2DC'l,N/*PA-hu/]xwL,fb3n$939-fRYJFAKsb(", "8sqly7O$vxj];'=v=~H5jw{/VvRr|@k]LB!vL;UY4,R}K^Lzf =vw1'Kq>e1Wh^yBfI-EQ'M'YZ_I`Ek>8l.tfN?I2(('P5<t*B/", "^E|'F^>M'@KRb>&2<#E|<9U>|&N%i:]@$CG&@-r'9|Xb(j?+BK@l#Ej6cRI2'i(_Mx_~wZT:o`$}r8l]qg!75=}b'ZfNvs9Ku;z7", "[mY&|wLKW[y0i=Gtm(|2s7'zZnjFM0^yUc|wvF0JD]&,0]`G{@@w`-6 L.(Qvyk=ou.`L|t+h4ubSlvOs#mYz<9A$zj0aw0'zeHY", "4zf[}Qfv5sY @>Se:XR'SPK:W@'U)ZTER8JtGuS$EYb_*_[qsvHF>vxO2*-vZ~f$X&-+cpN-AqCM{6v7=VA5PTxNM2vOEb,bA?yh", ":'a1'GWOZETRDJ*$z5c>Q5AXD$UK_tP@'p$G}H+{7a(u6.p&uvCx@H~O!rR,x,:cOp]{gGKD2fByiz#qLcVR`^G]c^~|=?T/m$0h", "9d?S{VW>)l6B^-}A&}|<Wkz=6%@{=vK  XwY<&c(K(+2uBb*tKR%f;v,UY4'>-Zc/i^9zxic%[TUOA}zF)39.0GZ*UXlc?0_<[ug", "3;BaJ(^;WTR-57vt'5 _Sp1sJaPeIz($064,_q{Ik8-tF=nMm0]L![3)v`RJ6wrw'~'b:Cc*;L0M|SyYC^R'qM(H/<`{'-C0sk6P", "haz|3I ,LIRE(!yk7jCnBD$< mtc%X}`|n%dXdT:P#:>QL}bq78^Omhv9XZe'AFC1!(L9}lRKyfG)sA`>Ju h8r^o!JuS7Rz[~'m", "6:3+?CEStaJVnwZH42xu?P3U8?w<5 `/X$7/DSx-Qt*3]zr]bNQ20`ouu9{M[yrR@Wo'H5+{xgO&Yw};L~H**S 2ZOR<'76Y[4y~", "[~(C7lJnFZq8vt?EE|Tu;K'Jvn{F{%nBh<vaiS4t4a7K{voU#vW4i$;Z;nHx[HeYD0mpl=C'iI&BSHMgZs9v`>Obc=!m$`-k3uaK", "[&R0#X@GzV5l192xu^.'*|#[qsK?IM&nN.z10D,N!j|ss,YF>`Mi0VW@Bw:}EeZX^ pk}k~^-bg3H?3-o{)6QWW>wDy^u;p;F~g3", "-dW#WPF7GK^c?F]j`>bdplvJ9RTN{|gJ2lud%RG4U;b$SB59XPZ0pq:ab~Fxy,S& o;tr-1dUE7BVW(+ :#kA',*Mi9'{R3RUl8*", "D10,!}Yu&dL7HKzzI3)(]gRyAo.z9v>frdpj,T'uYePd#Wwt12'v:VE krfL _B>xq)u6hH72q2=xlF.'4Z)K7+YwDqgsG|>zDt]", ").-Z>RY>Pv,,N$R|Sr*J:J0;ScS{KI$L-/$'}`9Z5'WC[ 5}Il#Ij+Vmt11%DYM}Nsl$8==)9B@[9G~R*'`el#7Q'=H3.HArv3,H", "~/:cqzz$d<3Gqa21_vi?>Nmrm-lFGbV/fWQUB';';rSh5;Wokzq%o7-hv{t/w^0?4|/Asg??5RX';fmi<X6RRVhDC'BvVBH4btod", "tCsFX]-+`'HE(b:`jYDL<3A*'uLsy#h?AdK:'_T/<'6XV/PV9)q%W?b]_dCU:kr@[?{(o|.[AgtZsAlFUbr|Iyy[3Qc7('#~%`g8", "RQdH?FIoOR|@hJ20x(8w^h-#<7HbB3W)Cfji*Yt!Z(SO9WzdA>qe{fJeQ<'TU;]W;>%4,'IXo1xb2I[7EFV'@2E30*F5v7Tl+F[9", "l'y]Px<?$De.E3'fZN/.%a~o6!_PxXdZly6SPd7v-1cOG1^P76_:!%E (!-E$8YWV'1Gc^Cu86|A/..[QN74*h1<tnE=Ts=ruszI", "jeh<sETyx4j8}^@j{P}c2U';ZTn'Tc{g'5M/a;iK<DO]FbZa:6hEC`zgGHM,~3$B9pU/$`E5u>4-*{y$j.'XC-n(hR9e@S:MI%3$", "1#$||FG?Ae!&HATpdrNe(F?T0ftsL<k)V:q4lCMeA#UJk8T)k|yHc'*PTE){n%TB4a'h1*ZUS0?7tYmT.v35{xoV1SpT5:O1lz'D", "_|f$#cl5z'..CR~N`{j+[z?I.>a3'B<`h3t c3Ej|7`Rf7BLlm_aLYya}2~sp:5w&!UXH([A/`Z>IbL8)0rWqYFnZ_-E1aE31mg_", "RP]+]@W7rs':}/z}d2[PY@&rMq^Vbq^0~Giiqfth&V#abkb6c3k>wruLUE0Kx7,!NMO+Zr&oSGhi@`hPFk'#(i{=^4R2g8/C0'0l", "#U0i1+t<@Z'4HE<q~a@OLf4H{.Vw[IP{@?f<>8OLyV=Ov& .!Bv&'PC2*- s$oh~,9:&<Po{dS=/jzr3$[YbhK$QTn7-)X>9t0T!", "w/R}RR$!LC*cY?rd,zTX.''RcALm],4.=9qyFl82/dGprG%^lP)!0tqsLK:15'>Gss(%c#.Yu0~6ogL.1}'yX>m A%_&FA8r]'e'", "6lj/|78]L5BGBhyQz|#}VVi:[QN'X28]rs7b#}vTuI~!k/WeS7z@/{@7k*j@JN9^wt(*z8?2'f3=',Ydy!faC@M*R:%mF38A|zNV", "rB]hg*1{Cux}zP6D}3=9Qh~'D/,afURo<y&z8uwNUqC/.N89F)/J?x J7f&*|9WCN>Ra<fYR;nI8Fwf]]4f>;j46@%rQltD'Jm52", "JBo9v'Wo<~v^)hGMrbS53$5!x?NRjjq10>nji|_LXJl)+qw6-!#MW<1Z1-E[_M7U/i;+zLx9?+j=['#S^$1)W 4^'Mx/z`A&ZCHj", "ShoT'9cd>1HkT8<Q$h0Mbd=e;&XOslLU.RlYb[rArx%hqWFd$&BCPwY6O[(ycYXt8[`hqQ]rot*P75[_zBQ0NEjxpJTEsq#_^e#;", "?['#`.l:zB7/2!}$PN+6G_P[^lcJXJ@n~ff15UtJvDc``Az'GI=yo)&B<S=<G.iRJ@#>@3QJB-XK,Lgoy4ly_SwT]fGb=] kZ!]B", "/k=aNPgsq#''$btn?',*l(MC$-fX'mtoFJ'TY8{oV%9'&[)_cgpbV|[(b>'WX-'j?xlE;x}YVG-`M'8]5{ %<(>E1XJd7+1}WS!L", "3BR`}L'1;bo:bD%8I!-H(],Ia-h^#PevjoXf7RWN$,%tHh7Z3Ss<x|;n(`,A.#wsW}P6'5E|Yd32AiLAKS4}(V,x<m'1RZ$AEbr`", "-`E7M'amJ;>(?*^Wn*w-PiEG-7KKEHJ>L %zkhIvhig)*?a =kQt:#2<6px-b9P8f+`g*Zq01'*8vRf>Qo~7rOWANS3[u{+;n)'w", "J'>=`dSiany/1glw2X1!U.&*ORLDnq~*Yw!0+w(h}Ma(P-,.%sO5eQ2,mNM1o8ZdN}IclUdJnJJr4=MsV~W K4WOt JOHk3B]h@p", "BwG7bPxW5At#S';QIrqK*hzJuG7)qc*l]*%UPrR D3vs[vUGvuub]LQH/ @b*ic1VNF<NB@`3tS^<y-QS'cdQyyKV76OP'+5A[p4", "7o:pa*p1%L5b(+6'bO'Tv]'UA@66F33|fE}djjGb+9oF7'a^e2Q`xGw:S?8rxbB%KfW8+hcmC(u+|]kz7la;_Au@m3]du|w;BG96", "[~$Y|N'HvOD)?XNiDNc'brJt]=i8)$q&zG]s%;E+Ae{$SHwFGk-+h ;SEXT@(T5R+K2H&!O1JjkGaGh4HcZZ Hgbl+)fgHOjpCF_", "F+r8p4s^V:T8lbfbR?/!^@f(Wd(u2zJ4M/I<T@/C6MPw3O'Avq+PV*dfWVxVm8oZ3RIz8Z)I@|gYLbekV_>e' 7,1v,lCVa=kVKN", "k=27t|FGWb6#3KvW3CkVwykKv]2e.&g'@|r''  8&'FwI BL++(!E$Z_&};>BhhD?2@'p2,o8O,aepzHT26Pq#DRN.+(vn!9J3 #", "#rc@-wE^2CQFU5TC=|A:{[ o,%%==gZ:R!%'95G[srjQ]KY91S@zVLZw'tuvxStu)fPUjFI7nqCS)yvoNi~A~A'rdML':V8Nw|K8", "hs21c.&(Y'i<M:''VfOCjEBq9Kh&(?N qXgD7Y_TsNqZx(+A<)T/dD~q)c.YhAP)x4.| 9@8)!&bke[`'N[6,fl'uD,?'q*k1!@/", "6DNSy8k V*%KI-a)umpW^Nx.ga$h1tr.uo!1=-U/{O`G'5(16(N'jDjnxBcBD)'Yw/CM8~T?KCC} $gJKKP7MYzb'F|Ya,V@DAXz", ",nj8oFhP:x||0{<=~;U_2HwcE5)n-'@MPkN%v0CrEbVs]gK>nqu|ktiJ$0j=H^+1_5=v/:O[2+t8aNIgYikA<eu.t't8VN6b]bS7", "?v~VhZh231cWq6*ZRP0T5__<#4u5hM-/@o&f5y6/O7q@b$_!kI&#<'}AFN: .:g!d$_wIDu4js3'5@uly/6quK5>o4WF0@j4dc(L", "_dD`F%G@xU3L .v ir.#,P(U9c)^tl f>d>]wU_]c25Ncr^XiH|q[;2hOy$hxstpMG>l9Ug'{$)]ok.8YV61^>O'Zw(SYlt$d)kH", "_J[CBqQZ'u&qE}spU%odl(]7'Hl3El@@Y5$DR_1A&3'<iDITVz7As'PjK5k2CW/)BrbfXh&lpd$d'<>p%K.@44X|@*(DJH8I}O<'", "CkW4EE:WjqnQlN6h'&@R/nI`mn;XZP,Uk $zY^xC)9X9NfWMtC0i_nU(N.P&0E^TfK$kD]E|nI}j?<a'Y}w1,]E^dC,2O]XU#0P]", "<B1mA;O=j4E[0ivVdc0g;nw.|,(L{]E.'<Hf$;.NN>|Y,jM5:ZK0q=8o<s/r(z#.k!qA`[*]Ew6E/}|'i!$3@0;3~1D BC9K2@nM", ",H>Gxw:x !qz%h'N'nQE|qi*XS':.;El9q&mGel}':dS4gQ.izc4p=0g9:5'PgPf60i'XVmg`GChh.'UFU#_EJO4ek1sGvOQUaeD", ":Sw6^0Z!c$r?QNViNAN?'I|CLKFE|Uv163#to&)8|bBoy_0.P{Z@f/h6X<`1yg|n.wZDt11CN6[CN.C:|U@Y;>vss>jkuN'6bMK8", "}<H;Xd@G@T1Gs'D 36q3{W=54,{;(iojk/Lr<qr[aSAr)!U=7'i4AQTUsM}3+X9s8IIM[+a3xLhGL$V>x6VpHXt/rOAx*Pj+r:QR", "'10SUA[lxA1eDy~X;|u58E'SS}ZdS1<Ua;{a$h,HZ_e{t0&5D'`E{5L0u6D'4z@/+U:i_+G$ec[k9;QZmH3'Og;<ieoxa~.`@./J", "H~xn:mCfMWTPSk-8xy2J);#qS:j_faS2c]l;|&V:CJc.@24,%m$:Lb.;.ve).E%V3e~QaXP$ >w6D7=4{>S#`'Q-l'3AhA%SG)7b", "(PXO5tqUwf32KNX?=NGzg7|xFi,VZ{f5ynBzQz3~C*f=:}'Jg|94]KZ!A*dt:~n`Y.ZlCwF(J'wD'z=tu$>>n%+Uf6SCg_:B*Eb4", "_iR*|4<))]zOIoi%_9~VJ^tirqN3J~.{tG)`HU8HW}^^--XO>Lf_KW`ZSWKqIH`h*s@s>J^<E|t>2HSs23tew#f1*`]ln2' niQh", "P2IK{'wtmEuHeKA2PzG6'.O]{!k?jY'_o'NK1ha!%#bW.:1+L?W/$#rSkOC4B1v'*gDzW?fBMB:uI^}|5,1Dz&Bl3 B? (jg?CX'", " MX'PnT6>'F?>NjD'!-Sl&LSQ9+e28J2C D3='Y08kD&'Qq3SU~X3'k}$ED||yTZa)SDDjo&`,a`ZU<0{~rGV2Sm _}MH#%j7yWS", "mLa_9uszcu;IHE=2d}drn=0m3J9=.npO)U^B;/gh]yET]qh9;u;{J8e$PV0^h]HZwV)vr71H4{Um#i`4pPW@x!ve 18Wpcy{!&3|", "roGe`/^oUJ?`z!_VN2lsk!?&A/lw<Aif-&i*hJ2s-lVkevH`mWSt6 XB|aht6U4eI-v/eNs.R782 ;<Vmbzb6Q')MaXw)M?i5$4&", "<@o'Li'f^<}zT|A_]xhxPic&Qt9TCd wsN{Ue.BfB|ZG^O>]8=5$NwmlG[:%FI|`^Nu*!>T($`ok%&'$WU{{o^b!T.a5>MwiVv2!", "yzJc9Hd/+29pJPpX3/+Jicd:w(:ah#u>{-tmI{,^i20`DG`];4^D/<@yxrgBIcS$:Apj!,35N9hxi`oc73Ti0l&YP,Ms@vHm[SFj", "cG2#7[hhgaE77quaC>~iB%oSx_L-#*l];|Euxge4r*'.+}T:p'CN^L8:SW+&ge3}X#^A,V6IZ(Qw>:>-)I`c@byyreo'tNB6@^'`", "3m/]f}Vs&k)mq6@'rx_G+ 'c*~m&Xbe]'9MB'0jSkQ0yHgWH,R*PP.+V:r?mfF'4},dMI*w8aZHbNy<Q44g:V -a29b{`}nwhL>S", "H^[)E*jY!lmz?d'gZDfA(gh{@'P0'bBjNOBn4iMl<Dgq~a%g|QAH5xm'uf&?8x.C'0,)4YgX~vm{*rYrmc|2Lm7*6}[],aUUlb_{", "aa.El'^a0bk-@c6Q[s]#_Ej#FIs{t/`GsC<@X*a{'{xCGQ_I.X{n9#4SM,Jdkou9h+?bBeef:|v>,]cF:m:{[5>uTtwf:2b)1Hu?", "b)%{js-]:`]__jS cp0U:p@tbLRZ5KX!.p|$8B`S,f>PTj#@U|xvAfi=T.awYs'VzYq3y_#5u(yP4NZh|}'}rmY^4's-PA^!S$]w", "$e4)G4?T*yp^u_;9aRUE39AGL1Y9hdrKKn>kzW_'76}x~,M1EaVzHSdd[Qh<`0>Tu8XhfoJ+FhR3rfpBM{ 8vb>2z'p'!~n'lnky", "q2o/(GrDA]FuaEqqcv0O&%O(9D'`Qk$psmO>}$XsYAj;/oL;0(]HmOJ.Q.HpM',`n5a&l~VE2'}:JNzIBZnkIG`NjTN^'a?&gCd,", "Vp~Xx#lK%ZJmxS*Ijkt&.')ebkLbr5yDDI)0qH/bJ#k#~_&8dPeMT*|HkUSA-lqFbs[YmJiP,{,)]v0vt2,o{yOtuXiBH[gE-nEZ", "7%.,EO#`L2q1L(|hXTB8[f#!3ap]Gv??]^mHybJfM/b}C`I7XXY tspPe A8<DPi~N''Q,-i#GJ.N=]:8.w:nKW~pKR[Hlz>32W%", ")v 6gxZt@hEJ({l2de<x,=Ry+};a@kY6&D#!bO`y'][PJj%S$tzel#|a53%OY|qQE@dpfi|LAvPSjf_<L~|]vejxi@#Pcp&i9i^c", "Y+/Q{vtJf'7/@`Jp; Hik@1TUn4J~$4L^'-K[uTwN@4L_UFut:FWvp]y;<F>AmC%Bg&]}njW9p)q`X#E_`96.!3jq{0o%Bz<i`EG", "qc]`#pH/B(qw|8zE;=u[{=][ Gj''by2G;y12vPOq'Q1amLKbt/|9pJX5i1!-@QX,8:7ii}#3`)P?4rs`J'=7#<|u/](q%{8e]7n", "/fZC9}pPS(x!./uk8@L.|kU! %'9:{d1j`'M. ,,3'^=}qIZ#lv/iI=ba) 1[I!54c@)Xf'lhC_xJ0b a *GM'K('j@(%uKbwEnx", "^]F''E_&c/wev-gf:'(Eydc #$M:k'b6$@)2SqI?(d1Ls^}kPc@%N>+)=sF[<)h&1jy4t8#rNUd[8Ad'Vk0sRIyn $_;46 ~Oi~A", "2QQ}'}GwjF>ji'E+`W8AE$'I}$ESve.D[{yi97JA18EknkO[/1:%3@+Vz2S.2[J[9{nkTQX>VGzMCR@p'}pPxN,|}+;^PIMlp'rd", "#_Hf1)a<1O1:Rz*8J P:r6E;:_IV+F-a('=>E'bMQeh/?29.qI aB4<YXEZyPzQ!dE1&On/gh@p$U*M]Twj<sXY>>>7?'lmKqi}v", "H(b)RnC_TzwUH7d p)v[mTgG~A'[?lCA6SBK/B]I/BnYD,*f_RC%/}VkP[I?xZUHyuPo7>c6jGi]{.v)>==rzq;D7?5y@H`[D-M_", "{N|&t'0_=ug7rPs?ln1P/=*C+b>|+8mg6dzpQJYE8c%V$bpxFcGvd6xPO>AT4M?+iM,'=`RU`_I+:'x$$UB7bIM:L35TYw~cp%4X", "aO~'u)i#S[e4prUm 9vYGlG/wDMf'cGB0=L'bU_y]G1sY!*JBu]S&'2']aG5{km0J8 ;(%v!D%6{1C>c=rP3+.o=Y?Tu'k8N&P&G", "Xpe6-'D`G+,AqVTa0#x4*?M7Fq'2(3y_PZT)NCQ3e'M,Wyi#)3:S3p4<R_!D85!Po DerR4g5&WlEk[n1`caGRF:<8p9A`<Ee^SJ", "XrW;Z,D7PYV56:^)+tXyZn@rv~vhmX=Jmufi=mK$K`JQZc`_xOdp&W5uswyOA$k;u'S-RkHF&wXnK;JOclyO7q``31*SdpMC`vzW", "ego|H!{dL=*[+8]/)yPxwfs`)jN*#SuT`T-9'.$k29hv7nc_r/+Z8$>FI!(/Q'cM>ik8g/b5X@D/qg$s: !z=oY:NL|I<-`mnPw*", "(%|/G~*5zlA1w+0.a^'(4Z46!'e_';3C+EE*[{UEtj5T9XsDl1[Z7%;e!+vFuf_3lX_Na wuZD1Zi+Hj}>Z;p*F#Vd&'Iv0)/=ja", "v8t?TMO[J/D6Cr/9] XQGW:;RL/`AcFQaN#Yrj]sj?bGX#0L}Xy'/pQ} p.v&h^@qUpZwbQNmb/g3e1*;22q=T5+1j,HiT<3e*MP", "LgSKo4%6qG=+d/hGr4fh23~8sT;'HJ>Pu,5~6~}^@q^$#eT''`&y)>|Y7i^bnGON-ttKbsa?JX=uO+499i-k<~b7D#mmw[#1w/^&", "suM:?u'I>Gm<[h'gzQUh'5/''l|v5'`O3yA2~nMJ'YPcDt:[TZeF3>7V!=,(NIST/%YI:d*HG$0;^*`'EfA}%gvL)cp3{z1)'FX ", "q^l.}J'W`!P^JTB(#:B%'e<hN5TGRbWnsCqrL7|7%X<`$#Y[MK!uv.}?lE/zK.tJ@/n@*EQ]T<jImGTQ+A8DU'[l.H>/vw&Q;Bt4", "&G'kX6`rYq5fbv%RX/3j48r$[4FM|_nWD54sWKk0^!g`=uVB&<N*i'6K{~V~Gyakq}:nU$|'T86N@z@bC!cL;'NBhnFg-6#A3^}U", "lw;G`z3%dYbLyYh4?S}!(yzv<}c0]mzZp&j>F&6}{@j<z}E=,omMt*[p}6QnE}8|ADaxW0A{JOSh$u'>b8ve7`Xby_)4M5z?MG7Q", "$[H5J6'xt:s]-^.k_^71F)p3%F+y)4z/2*U[_O'Etgmu`'w;9i0y:{)e:QQ]:;0{^MFM+)vk]<D;cHRNVfiaWBAk9 v;!`V<0d-+", "r6Yq]0'<^rFFD:TD@tN}>aR^u4a,?WrMpkVSZm7Byv!J2L>CH/FrAwn]1e4Ja&M'X{$2$0*qD7Z2xzofo3HxOQu$pQb[ZSocE/OP", "`w0}(eN_yB3ENI0Bz'5Fimp2'tNfwkHXm,b qK.rARuEmE=<3WTP1A-1S5hs476|biIS'&JZj!`&(6D/|QM3@1*-heEbiGj3{kjt", "f[pZNOvM]v07-,NO~C}Ue'IV@`8)^sSl3;60Y@oRf:T='~k4H' %Kx`9$N55q}Guk4'j|v:;BN*kg?:vP<w'{yMPG;AaQDgm-uQO", "6L26Vf:hw,Y3UQM{9B24B#/~yDQtWa'-1Stdz'0=HdDX*Bm}eheMA~PNozUQ%jfJOfq+GB ,[X!B|>t]?qg<R?'|FX>2ebJmy<=5", ";/%8L#DF,& Z9r<1kvQDCF'$ii< ^'PV^dX{0j[g>(%@:Bk;}g~$3;-9j?6l&v'my n'm/n2*55*VxJb2gZG|9Ym?(M,w'B'qm!w", "@|5^r['m0x6{h3|%E(&52nOOaY3@Y'wMU<gH)@<(,]*nlLGG_n]K^^&cNRNh0w$Wl7OXfbt> NsR8C(d]uH&]?Wo&Y{4=.@**S4e", "c|cx;{<wA~)N>#nDm,irI]2Q?UR*D)&2XrmE%:e6no:N|L!hK)F-R5W!SL<-)Y6mX^lwNt/mH^}'o?$.<JISH|&w[wicncX'>cC?", "ptgF*`j(u8pcJ[Hio]LkeYo,9]aZ,n^'+}e<'4x}Y|~PoCv.wD^ DE%MD1H|6'J0,Li;y%cnT=)KvSOUKk11!r 'lt*nE;tXCob>", "Xn`).,P?#ocfI<~eN<[[3;856%Z$<;no=Kq_Cb9tt1H}cJ069Ck;R]jK=O2RK~V%QU[_$z-2fZH3D9#$A%hpJ+*(ePYSi0Ltnca&", "d&P+'z4$7[Tq-R&z%G-o>[KOxvn]dua^}5yfAMzebeM#nL:fzTXPxQM@|r[J apL)HT8QD#olF9AnZ|97Y=X_7ll[Qj]diXX8]Ff", "I2>e-~[EmBv}'3J N'?C8d;WCtSY4%@ px0&<O^:Vs2Eu%$Fn|7k?J*M.N-5K8'wX,AhQSw$]/S.j@3dD^'sJe.x0WJ]g'M'=iI3", "udsIgVw%u-r:9k6G-565RB7#9'Yig!2vWT5<):zE(V4'oAG #``7zyfvxaF5<tQ:e$u@&Nd[+}Bj=vq,j&?L[#DC`'3_9d?&LXfd", "C/UjL*rXqwV;GU BybJIa>>;{J}]Fa^Z.]~m.}m'LdqxMG<qRc?=E4'}zhY(9nux]'fBlz0kR'QwRIp8x'}Dn?q0q>%69MR{'2):", "uJ$2g19^UD1=fy*PQ)&1UIlD*}t#GU~'Qa?`.m|_R,jW7}&{gWVGV|6x@Qb-JYWga'f)I;{e$aa$e7&P@R2+7s/av3jf]/jLg2r,", "'TK'&lQ#/2'?{f$`vaP;0,MEg6p$1!D5 smjh'%9HRS|a:E'fiI&.RiKVw6t5noc/{gdE yQ6z:+DBjHyZF1:r'ojaSq8m?dH_iw", ";S*s<<CT)_JN5io+6,`kE]JdllAr>MDc!aY&BIfdC^#KlfgDA%-U+8!9?SC%HUL~V6_JF;v`bKYBndfdGJj/N3b8gh-y@0MDR{LP", "]eoFR)(1+=<NDAO>VS+u'4%GD%l+Oz!PzG+qv!l@:e*N|gs}e 77#Yo~v5~8[Tr_ijF$1ZROBCw~7b'BzN3!2Jrw1;+f}@r*dq9}", "jvb=jgM0]t<Q-z~CxkwE+VtpDo'cL-agb_+Unhfo@9LKvOC1T%zLJb+Evw:K>D@329X+.61S~Ik]YEu3hCO$gup+z(dvIKr+I1L;", "@znre:G.Mmzi/UuKtea>vP8*'/-[p)q=6%h9'a!;6J&<: iCJ'$:7wcB3l @duTX{[e{;*HW'KA=cR*-; AsZ0}z'=Cdb%7lFoCJ", "#MeXN[bTVC3AH'GQ#n}:bVp}/ok?z0y|6`;ynpp>~Mdx}<MY'6')LL@NV4'@cI3j,a}}t''s'`aa1HbY8Ub3J;PR}8!{&X`9q/p}", "{505f[a)'W4wP^&8}c7M5JtFgO$cmS]dpDe~+n+MdVGz'eMqj,ba1K,5/Ip6TiiqS}e_yG;b14:}%ST$PVQG6b*+;[;+oS2GqF)X", "6&y'aLCXCqykF+jT0IV4nDTG$)m,SLSt0ZNdqNGb7-$~uYe[cg5#dG%yzEi1]8xe6kL'*'(~A]le00[8C{Q>F[=Gy2'=}^'_QT*N", "zUY/._7G|l31b||5&/T>?=>_'T$C3jf<+$dM93}k4r3XGva/Dw0P<[i'Hg[.@Z'H54'0>up]g_Wz=m)T~;uf!KBgejNDrPEn.J4<", "J+/;'wqB>l2opKP'{t&Tg3q3`muk%H}&NS/[70 1RtqKH_fg#uJq5vCI*_~ '0YsHv;EPCKE+Th:)II'H ;r0jNeN,B%Peyvw5C`", "=8y|+uA`xInS>BN?E'|c *I='aR7&mmT}f%=N[/9yG:(]V+x>/8c[@>-z$,YlGc@oF{GgGYChq')8mc0)M=/Y%tPvbB`ychXw`'2", " 4w _NJzP^]^{H=oZte3N`Ip{z:z+P7ZD,GK{c<H+XY!pXS^^4Kzw|vov7.'zK;k*t,ft|A~3Qf,E6Q/x3iN7h'T[LSof'_6{1dB", "lY=-+[4;*G$tr`kRAM(gdIdaL8G^$?g{t+q?!sb@pfO1J+>T8L,;y<g6*Me*:%+V3n{%C#M_Rp9}wO6T[ FXF4$ ?.Fn2L~D+PWA", "7-7d=E;|;m}U54Y@&J!9 dJ45/o1$)FQKaHnd?SpQ%v9lIm$7YN?&yAQLT~Vz}|?X7Q'D3zkSH|4u:cY*0,:l4Pl @Hdk2#CmSe2", "nl37k2:0t*eKYVtc R4KF+cYb'&rTD'<]*jddcj6;J6%u4//4ub}()P6Bu0fuZ<Qz.znd)u|yVY'Wz(0y7!`j:8-{>&~2=-_#b:j", "&/I&b3C3;{d@'gj+g@ nF:JU}eWs<M^W7rFMy><J._' xn_b53 R{%P,.R. ^3&'F&mlEuZ)O73[j:(+T;'wG%tsk~Xhw@w;%ue(", "30$*E+!'66AlS3bDM+Qdx19.`^*7v271yD~7p GRKJ*9O'+RaN'm~5__?BQX/v[*wGP]5!sHb#-K`=~0bq>V:a.a^29M]<@=Z`[(", "dHBcejX|}'0 {1@J-mtb& T{F#>i+l2i~2y=:je=P'vSi<%%** ey')/YC7~)%<Te:L|YnY*;^<VlCl9`Z''Q[;0?,e!K&{~'z&9", "suZ,Ka'$zMt%;G_MU9i>rZo!KD'o%O_wmX!G.;Vr^Q(EY=4qxppk/E@+sQ{'$;M<:U;4V+H)[Y$U0.SItnD+81KsB]+NA{:Jte/*", "q@zuof8hWjy2'0N9A>,nvz^.Z~atT%tdnz=6/li%d?3p>;IO`]f'NRjwJ`O66Bxn*;m|/)daJ3Y6JRlhx`nQhm8~r1gRV1$sdiQ`", "Is[a_^t{BH]9V=e5:p_g`!uKa'a}mV45;ZC`h`ZVKebs]|G'.h7Bsgd)i(mRfa_wyE|4/bP0Q'p9`$6aeA*n8=Eh!1'v>)$*to~F", "Va,kBJfoe{v*fw7`/m>)975zu1 g}%uY;q[}AHE$o:M xj[4&c&` ?=i_x`?RJ}voao)d ujNa8ZaA03Z>tL'dR~Q 6Y=C(E:z0*", "YCO:K-us)(lUD@jxLnLDJ4_nBN*=IhBks&EXiC't^'Q'%#g-YVH2/innd>: ^ZZOb;.-i D%` Qh@DV@qLMQR9yB?7zN#VcL'geL", "r{|1Mp~ZIr>[ckbZ(-8W:_XFkEI`Vz~2cANMxxI^'$`obYb)G.}gV|{$wq0#}q5=P'YE|^EQ%*=}M)s9S|rf@+W{Nib8Faa9`J.=", "Nbh2^y>Zi6J1@.Q-1MM^'b*7'dNsJ`?>+dUK:@6cSFTal$^/:+~mAfxq8k>g'wRRL5.ruTE_$k-X? +kf68^QML<|VRY`[_c-O#<", "(4xSs'Q^~aZ'/D<sQ%D'*C;$9%.@G`'%ZAha:p7Gc_N_sG)Y(l/!P![=_Z6!Iv5aLve'/~I7Q'{%`I&va_7j!%(H|X1@/W{-uO<x", "OH(,Y0PfGQlY.rwcv(tF-'f 'eecE7QjA2KDI|{ZZMr+DCW|[Kpn[Z6N*QHE'LlQ87%Sys,8) 08if1{c i7Z;S} n'w`hGFNO[z", "J4gm1E1RFTq4{<V>||zeJojH;JNs?Q&MZjlG>BaQ,I'|'e)duyAoL|.HR=.{S'x%^ReGp?l(]UK{AE3L;SGG2`]_,AFgYR:6yEn$", "S/x1+b@|pG'4|6MyMU}KkS<T.A|d/<b{Az;f~raj[C6*D87Is9zI^eOsF0~f%FH#JdZ/4KupJ;VY'H'PX}H&6/ByX+dO>HcDy^ut", "g{u{f+C@0eP4rR7_?1EKWryO6+R<i'bP[-3.UR.'(wp#0s6%%w=K+Zgf`*{S'9GuuztB<o]lAp<Dm_.[kp)Z]ZM3W[Dbu~w/R^s=", ":|Riz+j?NsV1[,,'Z(:esV$M^qX:%{K@j,Y$L|'$=Nv1:M./8XdCubh]D;6X~4d%E2p^n$52PF@ei?$['-*D2+1DpoYE@JQBVcrO", "uwf-mBfzf1sW^Fz8yS(N~:{wQmJ.:i.ajep+R$K$uCL;*e}m_D/6]7~Hcf}7R[k9abd3&+W!q%5D C?}[/-S`3k#FLk2A{s|X?)E", "L^Ma]J`(oO0i>!'CdSGIE&B5dhZHk~B,0G$^_P0E%@v-vSi&%<9Az:e&N>u:stV@vC>OUc:k].AWiCHn*-6p_':rKQVZVIDX`3aa", "(@:q!<'1RV+^'WKE75z)-)F_@(>|'.V/EnLep8G{oRw|6ns#s'PWB'Q]SQz+7ZKA![U(zd)g9bXmbZkyq]r-=.ZkPJx]'8^j/*u'", " ?/Xvboa0od2]wxv$UWV/MW(%qIC41V!iqxL9Ij F#=/0O9 vn(,I`!0^M[+zRR^k~VNmcvG/cyaGf0a]f?xBShD%`gP0|dMLEt'", "jM~E9`%?QCu2BYsb{8{%)oiGE?{Q{Gqy_ljcCp--.7!n(Ne2_H:mv[|iH4n1K4'mxYSRgV^G)?owR;Dkh;'5uMv=8Z]Mq?5GJi2#", "{xQE?EFo}Y%]42F5_4<Yi.)P3h<k+AchPlI@K89'_,(DEaOOPu_'(Iz*WZY%1%jX/yy+<J]5B <%NwbQ;UVj0cv{B,lY$Ud;Rf8v", "&GY#(bf'YH*yY5.}Cnpe9'h%+Rvh,'j=ZNfS>fBJbB[4i|*sK]WU`|:?l>5whMBg;-_'A:h4x9ov7'Y7~L4{_IX^?.'9@1E<yx|3", "~'4%*#{{*8|YlvQaW0vDH/Tp8aUcBq/9MEl3WP lW3heL-42qHfvB)|;rFEhyO{!fwVG}:rW!jA'r7Ayg#!'?Sjx'AU/sI^!qfe.", "N4DgRx|B${;VD_7HQyU*O(l?W>_[q^B24~j/E+I?irv'4fO[G:Ydh:p&BV>7f'`wbMhX$=#EZD'+Fw{LjC]WBOe!WHtLw&'Us*'S", "Tf<>ckR'6n'v~toEK:7l3eP)]RHsu(T;/#kC&gy0QTI&jp;EUcq==/iY.=YSKi2m#7+vMq`E#5%hR7aJs2PMX~{ TN)W;F$L}*Om", "trGo/Orz'i2&Af|*LFzCHZ?xhJ7TP=c.Z^mc66I1tWup]P@F4HqgS%w7bFC##+oes2j-*u_{a[?Z0edHjCB_rl5#'XB[''1$:'D8", "u#ty]ZK:j~<.VY_)f3Xh{$1Jg`tn=n&m@e]Cyar)PmVb&>'{KBD<Q+XtNC{.(J>f'55/tp8y9e'('>G593DSA%3rS&f>3)x0u&:%", "BfJo7V8!8t;95Kz<R`4[.A#vK#EP,c5pvW:8P6N3zZD!d&y4XPOgN'`rp2 1PvI2)2F7(W1z=@+P.'q'UVhcs9>mbN9+Y|G{WCc~", "H*3+s.btiK&~t3JZ*'E!b1gsf-noA5gtDH>7M<r#&7?LwY(T.FZ*-YFs'(FO]ak^ET*;@MBW|'#e9iG+Upx-<):'0|V:9Qj'0G,;", "dX'V|P1&iTkZP'3KfS[9)v7'Dy6)jRAii1bSyzer-XB:`h$nn]_w()(!d{S#ABy)'IZ*Kfl*M6^*J&SDE(GcY</<IM^CTk-W?M^0", "S.Lz:;v, ro/BP;]*jt[#i ;:yLE8`4KIgyVIejt#O6)E7}W3oI(6,'h)T%5gueikQb*':'D-/XTzjgHJ`BC|Z|zRUU&Km~S+E'}", "q{IOTm<Y'(1MMmhU#tF/D!mNMFv3E'J,''EZ.jmdPjR,y.nD~IiMnL5oAA;S>qzo97amL)[.bq('e+MaqiMsMV'CtR$@/{2?T13?", "e|eh3`O=ubjgwx`>F/.-&M'[mM4yZR`PORZVl,0wriG`8'}+|cfU4&,@('-1:'<twRaj~31FWs^MT~0)Nsj-f!~Z7GV7@=w-I;?I", "Hd^W'Rc?SX]H+q1a)[OO,{PYXk#mbQ8OOWYgR%GhmSc))YXNvC?7u6vj*Q{&DMOj~-,bsl3f*_Yq'h-@xrA||J'8Uzq8A.z8tg(h", "]xkZ|RP}wqiO`@`13{uy)n,7!O5u)}3QOZ'50p#'ShE|*^L:>6.:0UY}Tw-1Nh[<{nLb4F{ocPgMu/:'o$c}Q'vQ'QQCn'pG|;VP", "XyE}>b.9lXBHymnq`ns4'' m{R12$Qp,AAr9mrYVcz2ps,|k=x}el;KP{%Mfw_*'2qH=6_4FU`AzWb1o3^w!')vSOpXE^='8|P1'", "uzqE4Q84ND2fz/)rh,+s&Gn0:G>)ql'E*Tw;p^BI]?zMLOCnr'8s[J@d>1(hWT{[n8RK'vW'<g$/ ]dPbBO){>L..iQ'W'~7#0k)", "vqH6EKIf(Lw:^$q>Y[{^T73`9FQK3HR?B}'4gz9W,gL?^Qb*<'0nH5%$}bm[`:y!t(uH2T[Ual?+vDP4~i3'+hFE:Pkk^LzQ[E'=", ")#^mFG&75]M8bb~^B{*CkO9PT188>&Sk9y'Ef;Rd$_$.NP+7Ok9.Fo6Vh -&(Poe'r>LXk=H#eu)__'9Zk/|',s0jL1AQl:fFD18", "0?FBL$.)rec$nfb3j`Enn M*#-ps1K&c'jem{R?$A0AG<=*RlT'wh}`gdNeF;~`dYo-<M,sKJ5=4d_&%~;OsPGynCvWTKaF@T4q[", "$djct6b#F66S$@5p^q?H!CR3M.-A[o[M5Y1mS0u!p1#21$OEyS?RL;~_ +:pVtAL2r*{eN1,X$ymvM01I;_+l50KQ{m8MmA39hy=", "@=(j1;(]i^($m,A/NZz6kKW4r: @XE,iApo8~r/4{gO3^ $FCZ|A<gU*cx1?nKeqy `~*lr6.j<.4/Iqgdrp9'G5u()6*z*f4_-[", "BVSAyyCCIF:DutW3Wr{xS^l@}6N/]i8f0b<i^f(ZvN2qh6(4Mv'w+H'WvoUZx'X@b6I)ZcGcOb,==%)i!j7z{]')Ao}JRvF1])=i", "!f7/x1ebqj$m->mLy`DBQt-.cWVyX'Og%:j7QBBk!/5+~BnhJzoKm`[j=^TjmxI|_wX{?ak_e'/9>HE|HRT*|?p2#n7+Q97whxk4", "tvjx)_$HCPmSg'rTf|ZS8~gx|Q1je0R.$T?3mzPDx5;ri3ZQ3Da}Ub3p^B23`%i_NtgwcHN=`u)u(+-g$bB+g'5rBk'.raO|I(>3", "%_6wy9c?Oo_p{F(eOaf@VBo_n3(=wxj^^JX)B(1R<yAS21wgT4CwSGOVh;*pJbggo5Q4H9D*OCp1H$4_aO| bG:%^c@emRQ)2DWi", "RmoGa}Z#VV#}w'zVn:*MJB-*g!wpFenT4X'C'?;9j sebd_nNK^'2$*XWEi6Hv_X][N9W'D3qv'x@%YV98KX2l/HPg(l/q0/ECS/", "<E^*@L>CB,cV:#Rv!*[D,o-h:UFdiOK%fIu&63F,-FEAE=a-TM'$a/#LW>n%_S8]WLTWPS']Ao`}{&Y't'r$4PFfNe.3n4XtA4K?", "$r1=q,,Ow]fCTT{hWYDx%{4[/JH,>j`LP1}Y:!h=W*O8,)nOYDhm1|')D?,0 r>#P>zt-,#{s4ZB<UX`bISE@c#y0Ehj]'W?o ^n", "^[X#5R2:gi/G{}[<@FY~4)!z+GTkt(m,ippfgNn0o.ScQ _Fk'dnn[u)`kE;Dqg6RPp!-G8KL5mFLpBogaZ_ft|WI HpjYw2$zph", "1PI$t'wg$.}+Ki}d-V15Rm0IP&VA#iaOD!k)6%;K69h!}h~,&aHH ldle&w_0mJ(`~|)OFIa~^51^`p4'5QuJ$xsaG}>PBbw2K#Q", "k/n7L/%]-L'Xx~/8-6h>z_r6:_w+l*nt;qE&~2d<^lYD/ly4D6]jy*ArDjj@+Tv+Xr|F6T|kvZ>94g]Dt'~7Vr7k=Z4M-sedG4@b", ")=zgouPm9r`'V1b!'&,n{Egs'n/|yI@1?[8J$8m^>q9JLD]hg3SKU7B]9L_pI'NkN}?LZw!VM7@QepFMPGYIiJ`Pv2A;Sel4Fr4.", " :NsAM##9's-V*L4t9cD/<u!nky|btBzD)-W7a'_{I%E8GnTt yys.K'x#Zm:koAW|?Tx.G4h3j5F*7AwPveZ[=>0KN}S[d{oj/$", "9JkGN g.-5l?'O(,d)JoVB+~i<`/K7sWgQQE,B5mQ0Auh|P%-,u6=ZL/%K}n><EW';|~5.-zzU,|R}FN`0=[nlKNEtOI/m%H}#PN", "R,+b{P,:YY'Zu8lo) +bf 9_f)WzBV+9r#X@`jR|T=6z5g2,[;d7`qm,yf.RK+(84}wEA7-7'Vwx,{ [nc'Z+MECI%r'8pj[wRT6", "w.x2Gn/]<z~!k='g5btTR*&!B>Lq?'Fgcu9;%^c{Vm&y'=BLYv+%V='3[FZiDl-sNNXdC5^YVfeM8DQ:wlbVE:y^}0^v'xU+OI[j", "~,[xF3FIPO.t4ocUFpjCiAa0=#!XZ[qP+PnbHnpp{5SS-Zg+ond( ZPBd !Tr9 &zF&('b6! x-d/'PeC%Il9UGBqAY-pzF^'Ff!", "U10 QV;RRW2~ CT,'I]),`4THpF%0^Ovs.X]o4T'3vI)^`if{L<|G-5kb+fQT!FAGXQeP!i_rw>}D'SiK:.E7uZOl.!b%j9C04d&", ",2~uL>k[tv<8ZIXG6N J9+$QhCckA]3Mt?K|'$/o;{i`'Iupos1,(a,?'XEnV)PqOVso=a*.=kT@EtA<!rE*BYmpUzv!T]/$WV$'", "qhG8qs`uBUaNIv Bf'fQ9F TR`Qab[x~qVeQct_j6CTqp:dH@COZeL,Ah8!.F4aC(Ab1}1Inek)3E{SAP?icKKY5)Oi'>EF96s(H", "=.Zac0mkP@)i{,c%5'2EXt'J9]x'x1f4}SsCnr59h)Zg~c@xU<z#'XFu|d{o]%i)'$kkej -'rH;mU#D5ZbUnnbZI]`Vb;?Zyq?F", "7%w9nY)3 L[g'KoT/|tbA)Fn{z2g2$ Z.%<Z%K{CFb|A'&RO4#huM[c|WHy'pO&IuU#/VjI>Z!7A~HMB[h0o|;}GL>5as,a.y2B'", "=ia9638U]d%r7yB^hDv(z160> _e$~6jWSxLu*m@hzmK{FM1gIgs{8R36j)W-F),@HC)SN*ZwvK9OVSJ#'H7Rf'oT`&04;`=$t'<", "e7||Y>CJ.9mh7;A6o?M2c'+TZA HAiWpSJ?pCR@aq~F%O-?1?0Q.>b-&cZ@8Ay1%tl=Z94 6f+I}fxjvl6 a@.&+WBTe_B2(j|n&", "/WIfDv?*b)?t3lV8D:GW/y5K9g5]1%gWMYIvMWjk~;fbMX1oee#mg=4?w9b61:=gh!|j$KjN/'}@;(Fr3E8zM:1V7&hHF]5oG|A{", "+t>IcVu}U5Ewt,|}FH1vzwMqRu;7K_VP*J,_sNhc)L_Na7y9amR',U{Xl5JMYbGQQj1wu*g?x7Q'b;U<(UiMd'UW'O6U*yE[=b&C", "L]uVUe?SF[BIafS|`~*hAE'#wtz-i'CKxD?#>vW> A)d)TvhYs8XOL9op|E!k`hTvcrgG3K&uq^KOfJ82#rizfr:y9QNzT}R4E_>", "y2G:s!S;'&uEZeQBH P}[cncc@nZFuelmoH3D':ZCBCt7}kT8Qc'FCwf_ToWk&w:Z-o_3l}k ;?&N`,OIHJG7{Ekh>'_fn1'Ct5]", "ON:U^'~aq#)b+v(h:{=gM39[]48^|!i!-m:+(GS+>OHp|bt1Lavn91dQ;7F5 =IOV}pmN rbo?Ig#@0GKvsje42[]KaA|,|.RJz-", " iq,$$#&A-[BKU %+=&6.!Nqd&_&pv%H#dX;8~N.1CLfCu<BR}FJF'@Y[B[>ih=h8q]([Y:3kXwQUvISNCr_S)zNo+/NB{y{]=b'", "O`/-43.qDvuP0`<]f8cz2VU(V`q@lx#M&b,Z-[nc/'+l-}J[P1P2;'xrF1Y`cY=0-kP=}=)ndC^wQwD8&GX'3gEyRg%)_KGy+{,%", "/(#Iga*GjOwhi8,7AXWQ*E}!AnE'KmTmWEgZD/~s$Icg<Ze{*c7m<}|'PM_ph^1B~na$dVw8k.L8tSN Cs'JM'C+Y<$%t)eDiKjB", "`<&kM)pE`D9_~r3'[&],s2;JDl[hook7'31N%X?@fa9G2F),20_/bm?6'<5<SDHrMH(c',kw?WynfEkJ(YBB)&%xj7W$sLT-JwN<", "57@C 21S6]5'?aM'jLo1U'mdi:N6Bx;JFcK!V=yT!Sr{['OS(yQ3l9h'V~/%T >M&FVm<$qP?`hjenk>Y]06al`)Yi?tC#V;%P$n", "jv^}'7Jyd&#'kE;: 7}&}?f(=|][/5Bv&i>DO>Zi$'ROx`y|htx3MuAcXE wl'#rI<&D2x@=IL,oN^%^]p^O'2'PYg22n<F+A@=x", "9(Iod!uCOnof |myw[N`PV'MRQ2pGL#0,_2]9k5z'7A/hsqw5;hszDY3Ew8? xGbk|'ESj5n|e,'`Rgh6G*>z=F$%cq8=I}d~OlS", "ENupeN mu24w2lOkWb5q?K!ey>eHgy&6%D{WWx!sQrs-`<$y(Cz1(GT^]}rc~ f?3VOJn]J;Q'MPf?LNp_a_<z<R($S]~'v.'X#h", "FZv,%+yLdn)YcB#r'elfKABJy5y{#x'~Wpa/CXwOro$8{@:Nd ;E'CUG!CvPBu2rPt.`i'$wZ`Hnr+'`my-3pI2sb_#&3H1ZHr-o", "-@JT3nJO|v'K9wOY8o~^v!XWiu$|jcfV~[%!<0[#bwJ{YPV4Ax#2y'0P3zD'.K~GTSK;1/qLq!N8 |'}Up?4F4aN&Yi1'yc'B$*o", "J9Zo@KUsK<zb{y*@*&3u5y7'S'W*Y2KlNJ$%':CM3@y^ie{nStW&;I]@7f5O4W4'`_.tJYyhf%{LfieFnylY}i1EJQHRgJM-zSww", "yDra:U*FKjETtAx:8(DvdsN9g-A{@7?aS]Nmq9*'](GC1s!nM}z5}+mU(c%P(Bbf6ff)u!yqGlA8k.^V-t*6yyD]iF`X0fP!&s6w", "F'(6Sum k&5#](gU{dP>p,>&misyV4)1J$mDZYYd;Z!zj0.$1{i;Eg)FLY=(+(rsEC54=VF9P+yUA9[rd(tMz>DdI4%@HH+i^p8x", "?)KE_o0V|@PzJ4ix06m)>-+]-`;_qjM{e5xRyi>c[g-I~IxT?FkNhl=NQn3<T%v>dB+)|yXM/S5d]5R/R/VS@,JZ/sd0RwF_s N]", "g*IQ={;+4!(xd2eZ[HFdxM57[+:F):^?}Y9j..@&B)r'9IX47,-Kq r&$ULYN3bQ_iG[WFVR&daWHie[L^o%-e7!3M +>i{E9VV'", "N0ZMQ9_5?bIK>`#VCJBt+'`>z/&m1b.K(<N0&*6Ux}JqU'Ya'J0t<L9)T<+7`v',W0/'e '~3.If:?m)rHJR6U=[(SYw/miV. &/", "]JI9qsrvtgNM>5(36k[*vLv$qzWeQ&gX>c9ak9l/6+#ku;'c-|#Q^u}/#;(LC+xyAGpF1?Wvm)Qol';('%`4rw]'?%nQj^VcC+,0", "P~r34(VA=nh <s?]eTPAsiP.1H5SFJSor3Q7^oif;~/xwuZhXf+PE}|GTo@J1~cW_ Y~WK6W8;_xntnb`QZG& ve#R4X2!=u4NXK", "fE/:4Rf[Zb6$UJ0c`8JcpbV'[g3,wR;3 MI]`s_B@tEFkwPN~b-EP*l;`OTg:a1ES4yug`)a'E-bE,wVf~7iF6!n=`'`GsW!8%MJ", "QO]&L0sD-O4#$`1KwAXj.|3K_u']/mt` ';w?j/s7$el~j6-BqV7N+37Mx^W}9t4y_`j+%l[V@YGt!Nm|Tda(R/PC7I<~[=wrTIv", "7Y'>z!?ob~!kOh*BT=!)A4q=oMzu!aI&[M[th!zQ'~MZtvZ$]TMS1hHUfJa{fh'IwUSnv[!WX)SgMk|LEguQE'4xY4PlB;t$J2lg", "9wHy[T20F{H-rZQNuATBN'=E~yI8Yd3nd0(|;ZT[[A=hbkNOA?b;(o7PM|C`inT=^'=q5^YwdW +Y2VJ?mhFJIB33t~'d->Y'9%J", "BiduajyIPD3(&i6s_ nDZLZyeSVu%yvxBQ'5^}v>D+Mc!`: 2KsU~&cs{k=&eA-}<2'$(nB6(6WX&.=,UgfXv?DbX]545_1azA{R", "49(=hfn ZZ@z)F]N` 'E=WiRdm*z,nH-%E$|/*J:#w_F Ip9^&~LKjZY(>+fvtKeI{7d^ptu5eIh12Q%rB!qUuU3b|Hfk&*TWRtf", "$5l.dgD}xIh$b8YVbyU[J+0oPv[{%$um7ERa@GNtl5`^RgN u'L5P]<&4Ss&|x+pNHG;y'|:cM#b[rzFT5vg5BrK04P6=vCme|X.", "N9gd*wZc =wLy7WftZU-ELs*4''K?m?v,#|LGqm8G=8Fm?%bN~cLLKXuluO&sy40iP@*@Gu=R~q#li_NI|6Por'6.@n1hLj6Yy^;", "n?]w$y[Mzo E77M6Mo9llop]1@om%/Zz]fYPyoL_V:o<3bbV%]4|Bc=(U]<2c7+yCkdqrc5SK1(iy{K^/B&.q'~*udtJu,C+jxTR", "WNN7vCN2(bu)Z5gsfCLko{1hh0:Yb^zhU@@`-BSOgVKk<~u)8IHl^FFAEl[`hn9DJ#'3._^I%y#14${^s {*e$z'JT[jmywi'*us", "9[x)' 8M5MY=Dp-u/m5FPa7;nOfej>HW0b-&!r12'k,u.YbKh=N):Cp6KHFh}e/lDI-#'*:ROv'zad!17Bw/B]GmN`p'Pn'74QWQ", "G+^;KAgZeN+4k*nee`is`~fj*oh*[h3[]'^X|+?dI($_r*gx.dX=:Y`WHa!H)((ZdBpuxTdT(_4D+pzc}pe6O7vj={hXDXpO97,$", "{jsH&R1zx:zI} N./$Ca.8PHUI[W[W:`|U71>3;[sn%zUW|oCaISDj7,{_sz:BiEu72Dclx8gB.N,/XLbXxkr@_p)H>olB{Pr=TI", "I*NGUf[A_zB.!Fz|_Vx6bP6~-aNNw)GT}2t61-='LO]h -g4YHjLaR=1[iuzy-9?+>'K|+PH;tTHF!UJ7t;H>Vd0$I|N,R3SggkR", "jAH8?-eyUl_zZ?S-..S4]'ughrW6BwLO84>a Rw7;r{Y3VOR9w`!-y{aQLg0c(C0C#098_!BTc*b-vW<?_%)]zRs'~.es`{&< $i", "bSKlV84A4i2@lp;WZ;SxwD[q''1WUv&`IXU=$WgC2AC)(NFI',i=4,o[4y=w?Z'>^'({@GGu2kyIdwS6G~|k;w5o=3eF+,NixYP[", ")#|F'>=VoMAHFg ezgw=VG{<j]mN|M}}e$'Le;BL$1:di6K`2.+ 7lv/f%GQ[aGe;N*{0_ 8(Kj=}QDu)*Q)Mf,hFC|Q'u]4Bj)n", "ua0:$kMIYxLFVs0YAr^G}j A(TmV7,HXY'~q]C}0rhL^j'B5/'N{VH<']'J,xLj=<'ou^[h!IL'qk4,[!Yf$T)eZhN(@p:q%-H??", "C rZkmput-Ngb'b,}F~*'GBc&h:#Ss+)wCI4(F`!x?@v-*.rcaVrPDjn6jGD2h|(zg(;H C~UjQlnln+J)'hV}|w70)CN=4fjd;l", "OVv)1s{.|5-@2aQh7eYZE!R8]BkW=!Pws$?K8r+6X>*V n_AC*]E>0%YAY^'6{1$a@h:kr{GOQ<sv$@x|FI~[avU$zStn,dDdf&[", "^0'6jX#G=qtfrA-ixS/$[&3CHX:%!62}ph Zh) qKv]I}*r_s=B6-J7%0Q<Az%b}DBvP{KYH6>Tb5J4ZQ+A'NU.kNP7skUXGim{f", "j`xM@H$~;bV+RP0L?]it (e_`}H?>hUL>7`G_B0X|niA+[`R-0R_!! 6|bp7]^)UL#7@ LctF%Ig8/Ge}C_ Jf!XG;DKd8@eL<+*", "g2Aap~r_#zGqx;5[H[=/80IS,98OuaFoM%,w7xIp<!ui.o2*1K0fCzf(,'s%`=F|- u@MkVq+B&W3YKSsS&7=H~3GoSqhfi$}[)c", "G@7;m>s/J3k;H0P_?<{f*qD)|96SSA6mV 5yiGia_oQ'<mD^GGe'H=y%6'1b r{%WqVtg'RMD@M3SFIG3y?JG *$+8i[ge x17wB", "y[n=v._3^QF)|md(FoMNgKviEL7s>Z9W'-2^]}uYV^8^QAuwH'Ra-ye@aK|?J#>NUjZ#@DA-PCy0|+`tbsK;Zpfd,R3y{w?=tuFS", "q)1|5PRY[V?siF(dnv~g`N0o-3V%t;^6,'mIm>`vlQoEax#O'QFQbr'Jwy@o/qGhJ<Pm~SBdK%Ee,k)8aW;D-$5%,OS,^u #VpRS", "y`<U+<.v20xR>i/b>bp.|kqy3{|p#vMTdv;.>h<1R^yRy0M5L|'4HD?mpJbwWHI))9?[J8Y4itUhQyt]&Z[O7WbeYS7KSr-G~ews", "4nshRaG**xDz!_bC{;,|56yAYBy3V+aF?g/8eL4E}Cw(KqP8}(VY45'(8,soK:P` |'b02OzI'lF'zOV8jr=k;gu]+R8{wy&NFDV", "r<jjU i0'U*'nCxaAAMnG1znQj'lI^vwJM'#uQn/'iCphHz]e(l,T{?WjBQ}Kes')C?W_nN5Y_]R6q$Ts80OZ sn1&8HT$EctnD2", ".(4f*<]Xx8<PCFQPT,:i. BJ;IJgRU6ctyq?#[MWDIM-ZJx{,~Q'N}>i@[rlR',!7RNE:*d6 MEhWUE^07*vx6^.^K)k^lJq`P7c", "5tnrn0]o+/HiiOmtPJ-*h__iz)D4o,O~`~E%h,$v8igh*1wH T R aXc#w0!JH1cO|sD jT~`2 sV'S,MNjDbH[mnA<+>5-G/Q#>", "aCp->k:=plq`n Vz>`$fh5@[_UyelSs'Sr4R>p(t5hL2:X?aU%X2=?MKstWaO?G]+iI'^rT)oF5E)%y@SiyAqj~ET1Xbh#lp~t`w", "Q7T57aSP#CHMf.7j1d5DxV/{:9H'2pM2IuzIaw>l&GXk'C0*.WA%VQhG;(%Msuw3`|Ux mh'*VzCiF'*o[8eS@@7R$Em=1LTegWI", "uuERVO:xTG^w2OL'd'Oh5bJjq/N'5[B970`54l)}4^j0krXY^p*rs~5QO+)>M,w$K-r0i`&xk8hRTYshRj]7O:I,/1o.g/h~f$a0", "rP;79de),}t~k4<Y 6?XVX's550c%=ekbF7B>hW9?fpGgLhq&5hz>nLHOm9X=Z6D!~xd5:yHYuU.n=W',m/azCg3n%:oAvCtbic]", "QKd{'YBcvH=8`O|F7!jqy$7|fma1'kv@`-j@YP`B9B8?vYeK,1G:blf}YKBI>-MPq7%<;I(0T3(lKYf!91_6!uG']F_&rGT9@Kj?", "j]b{J'qV_WU>7S@)zRNu:'tM'?^rI#4&Ona!6'nMxilra_w1zCNBe/baE#x:bb] :>vg;L3'LNi/}H3E1xp-CszO3b8og|X4'u5z", "7n)M4FcN'NA9'NCb'j']*q2sO:P>/FM7)'^7*aVcP[':$hy^UJBTimm)lSNP3L5r09FA'hHhd/Xt4%'9';_y33::jw^d%uEkl[iw", "X$ZZ&ryNW}GqiOH+i%'A5EY~1wE4'>j96~I<W:l*x'N8uQn3KK~)w~.xsD7?+jrjTH=@8Z^D='$'%bBpyd|8'kT<8e37T](o 'sn", "#^xsG;p%I/@uycxp2;yd7rJiFu7^=/Qc-bkl(K%5',Xn:.kB&z&SAu0kCBALqV?~2:z:8z}HuOenF~1w3j7'XVZT?s5:rx6I0fc[", "YMAE*RahFI4PN4q.vyty2wI K).7{,]Opf6=/- mURxj'#|9%@>A3x!5Af)(a9~|jy6u60%rP}&<W[@8aoiSRjvNODq9b^7Da9:I", "66=rk[BE19X.+yb,+V((J?:$;In;mI!6JVDU1Vl&^_'u6Ya4 o842:(<;{jz)HJ_rV0@*;ut0O<, w+LrNNyK`X) kC2}?J'6%mb", "&`FbUJj+7X4A}@19#WM}7q1V8;/ SNaK6I[R}#'zoH,yM|#*=n}kyR_{=Ge30o%pytl0{p]^MXWg}1E]Z4y>>U:c>#_YZA6(+=|s", "2wC_MbG+Y2f}'}'Z(j>mgrMCg!}+|bCwA6Y<UkZy-.;Y1[-}#1.nrC -kz8gW*o3s;#N71PDg8e=|kvfR8-|K4-ip@~jFNwjl'vB", "O2.I~SD@eX>Zlxn`gs;@jRCo*i>2A|1F/Z*@&y3WBuJm[v8ME/'y/VJh)jR{'+EB!*EYG9BX,'9p(1+Hi$}z=cW7?;mzDPLR7VI7", "v:YoYq`/hJ0_+^'p7fQZxm'OP_: D,r<zg-rhNV+w5^]2%$'+z#y#m)wY={5C1vt?bCJC~.&#7RQvHy~8,oN]0LPW-}RG/C9-M?h", "|y-yLTA&|7>Ve}i07V]g-yIzo4xQ4-NTZ'9PNEOf WULUt~hqv-D8hF ik@=ZShKJ7{G6D bWMFa`lrYkNdQS-ynkz;3|p^/v5uq", ":.'JENEa#XrKO];Pbl23Ej6-ZaV[#W!!!G*Dm2L|vVVseYl!w8i'I1G;FkJ90c6.UH/c<#9j/ECB+:ml.c]PC/N-c40J'mkK'g$H", "5'[{_/8@U(8d@x.{gB#3t xF;!(G|i,}]v(lnzEovSW1tgI5r|LZw[juUtH.K3F>@a@h%Sq&55B?V*}t=(-JZXC1Ru}:'AI$}AZg", "h8!UV4?B%ituL%j(j'yPiWmOI]U:Qh*}]b3.O!HDk}{p's.%CNAE_I'n8SshN'V9'{yph#ds:>H4W/m,'ASv{A<c<}`>i)T*Sg>6", "iN:<!amd8'9m3xq&d3oe~4PaD3|*/T=kRbfPgf8q?3O|6%p24`:p+t]'5UQ5C2z(~{wB4qwS^.;8yv$+'.?ZsvBE>+w<QPM80&.j", "F&(qK'>$o}'xN6=~q9Ua*IZSwTFxWlYF5Q'1o%3Y!wjoc#CjOc(CWe'/IlM:6[Eb[Ib|b:lv7Ug'o|6kTQA'#m{w`0c@6(c8F5H.", "u'l-SvpuXgSq(q}{^J$ $N-atHSsyR!H1&dBg-|GPWx67NW0GR1jx8n.6!Zs(a*e}_bX{i'Z5N^,' 6o!WiZel8,=qo|~G~v<x/%", "gd5-R-gMf:V]')E `FCma! C_7P=4r3';U|K?R,fOSE<DE|G]5|~f% qq]HtV'Jg1]}W17n@0^qwF'1SDsBgCS0SSr##EM+j@UJG", "tc?VP/'Ak(vJF$Z|79<vbL3s2&K'M,79Ks(S{=[<;K`jF_<AQplMg;KQC,&rU#pD:s/a<l)HKMp/H#VO9pBa<I_I2R'22)VNe/zg", "-tl5qb/S3PS^,?nYJVs2(}bA]h,(zl|y#jN{6A{fnDM}rzdNE5LuMm*ihK$Jkpw7`]{6xLjz.2{',Rk^rNXC^*R3x:[[5.dz'w5b", "2YEKR{nOy#5hWV/k]#:%PIqS$AjG9#xR..H+E,O9K-'MOp]/lja@PuT(V|9|/UgkB5YOIaMWh3%{<hh1J^Q,f%f$~q]'Cq$V'4,A", "0>'`S[n7S;#|CQ>y*N0Vbz.Wb 7Frx}p.:iNk#PV, uL-kD[PM(l'{YG<9O!X7<;!/JklRZkB!y%K]^ic' GGX4$U~LM9QgUc;YK", "mYRO9?^B>I*''PzEE JgkZwluYinb(<~u[}O_.=B6t'3|fQX>'+ARe^q'/w+T)'Ozb7WJQ@2x+==6_TB;E`~Xg7h*+@L#wW]NtP'", "L!`W^S_*6CW=&I?2nn|Le,o?&^y)W7hAi_s+W[['-3hvUU_x^Gw%T5N~&o'. }m'S!.bmOY6P`k4LT%G.rh{AVZ)t{wSr>,-1C 1", "q@u3;S1V<NH9'))8K1J:M>mc&eDM'3k:.oJR'$T<JUuaFjIHQz)jx,N*xe Ekq--H<=~m}1No@}6kwNG9'19Gb2q'0bP^z/a2Sw.", "kvi]U(4<JxALL&qT<Jcs#l^2ug6^a!)$pFDO&Qg1.!xYz?5P6M?d|Rf,6s#t?E`B;JGhFV62E%6F&/^0^2cJ;9H+ocylD0+iSb){", "mZPs}lpBw<$TuGYz3kkYnqZ~.4'spih}aevWZdH/x>zxljf;;_66=X~ueu2)_mY9^8.<f{6xb|4w0?M[s'/ChgYc[M58{!I3&Uc@", "fwrMf1ruOAAw;e@OtX&>Ut'/;on9i8.`&2a$Nm[(Td^Y'hSh%n%Fug-sit/_v3l#$yoP[n';ACw^B4Q,{'Jr)0)owB1=J.{]=^tg", "5*|!|'Eu6@Av*ms}$%6m3]BNJG8l#FTdBuHCNV4K*t8eKlN->t+cU*s}/opnj>}^^w>J4}y''0Z$T}.FD_g0dh=bxz})=i6g&$;/", "gDP&<_S|IwjCHFI%B~!leJaQaih9wMA 0z^rbe]aQa//[uUS'O6C``?uUi0rkXbt`#cD)?B3B<'>`^wM4!^N#b[dl(Rd%]>*^wo~", "~gJ[js<;kZ#|Z7)*E5G{*NODyM';RQs6''%m1^nT2itD&r:!<-'G*A'b@[jN-_7+R) Wj9H;oJgaSL#`hi@^85^T<7nKbJiy'bL4", "z-$n]mQ!^J>HW$yudduS|:#X<}K~'R-Z45F^#dvcMEg0G1zJE%'Jcf!W(B*raZXcSTx!2$:HVo.QW1?h2Zca  HS#3!i2q8AEL{>", ".0K'NcFjo,'OfB|TyF$T, GGi]FwnB3rt(t+T<8 S*yd|:{F]'2)L.-]@9nuPHX`:R e,eRn$xYX+aLviZguW/m'0Qs?eTRK$d!J", "o|TfNQNx{IPZS'D9c2Kyk)PMFT,OLQQcdGJsg.}/+sf87Ir(3[P`b)5(}6,?(S}e&(~Cd,RGj=`*e+-O.H9/9I {A*yT9)e81-N*", "gfni@QAp>>Rwu>sF[?i!fnvf[2z5*=e)Y>Mu_uDu=5#thUXsL]$yEz*jY~94h:9;MFXV,7z{RT95sjUD!1B'a*:'NY$cVKsqGVfc", "2Hu(y_| ~H%('8SfSr*au4Y-3B/=t%^C0'q*GBowR~(iltlN?3zFW`'v{:9PjjE/q'PHx>'HO8KPw,t(VnSy[@c!'+{qW`DYx a4", "Hxz*k'@GMHrBOsC!7,qdhngQv(ns)rtw@}i/Iz-a>r{Omi31`CJiKE/H.P}h`xNAmrGfcgq1dF/k)%p{fQ*x6NJ^ZXh]D5;pV=`[", "pe|_q5hROOA0TThYmK!Bh.8y>ap39kOx9_^-_o_v5^K& Wo*e''5xgXE|.8`q[y]IfBQ;Aj`vwA'3qU{'F3O 6iz{DNQ3GQMA.'F", "|' z;Yl9]#Og(*:8kbcM:!ArSO6oCLYRTSC}>:E5`$G7s.@`/;7!F4u!dO`S2% lQwcRk4Bu>'D_ZnW6(!Q}.]O+o!8'ZkLEKwT'", "V,TfSy|T`-Lw=h3[&{L3aH6Qo4S:0zd,p_fg'o}en` ]hT-khN+`ggt_7i)n-ng~Rt,v!d%iyzf?)5jcoUT!&a]J#UGxmt:xGoT'", "*J}WsU9DIp'7O,t.F[1}47y)(z5[@G;9ms`ZpQRoR/ uq{-|F Q402*'XC~'I<&x+p''zJxl$9)_4 P;3I/-007<8+=x,%TFr XQ", "=-g_2Vx?]>I9j8)To #RY_)YJ_gx/GN/,bjOq|gZ[I!3x#+HtgMJS$:Vlb;]X%m!f9.KK3V160%Zn.]e ) XOh/A71=]?;;A65(z", "cViw.gjk@S'4G-F!Ba+eC8XM4zc,y$D91bM=1;}e'WT(00ySe!cS5HiZZVAj/K?kR_[;c~ZH'{N}}2vij5|u7>6BF*x>/Qc?QA5 ", "sE?[@r1&<:k{]mJ{2H|E]}=yDq ny{sz/@/l]s;lc[TbA35iy2)|3O(EIcaE+iF0,1vd'URF,Wn18^N,A}1jAYr^hFy'J12sRL?5", "uP*a-3x<wzUIudPO0u0kHC6tA}Pp5 CP^0K`'wx[h7&._'-j#38/ChHvFnz[xDNm'$Ta9Xd)vz'hk;F+b?^*zMe'#mgFU#18W[lr", "/s]1w:%(?t~;S87`y#/#oVp@A?9Hl+:aYrZ>Z/P/fvx.edK~OTpR/C8!UZR(==LN'q]i oMJZ`+^yzrb.[uxmO6'++.EQT[(gnj3", "#anN/X0oT'`u7V#d4o4/huU<T''Y8]M8^gA.j/Gz(W~?_Cn!gx}|$PthZ',*{/?kZRd4M-Ay.Goixse.:jsM|_sp*bHWm~TbIQaC", "N{Jjq%`'dya-=?<NK!T].#do46<qRs_iO'|,=O.,TZP>r!'-7M@1?dvOck.J%)y!6WR+*t'PvQhs:O8{tpV%6Zf&5_JD'FgNYPS)", "Q>O2c#`EX^]h7{z<V0n8k}=/OJE54==mY*Ba+ZD[xu}*Y5*V1*Z{'`'mErz2U/,DTAy'aG!kKQWShW1z5ZFl:<!@ka0/6W+g?s*=", "eAKO<YhG`lRj'2B>e-x(2}$e8Si|}K6*?{q-$Yp_i>D?Q{T')eWeO20*0KCs|dk'=ZXd.xby.J'D&cqd+Lq<:f@&/uDe9a|Yk=8E", "6z(l6x]',Y%9zcTO';Nc;'9|ah'}$'x1ix=5U';3B=f7.*.DYH(9@e'?YcL<d'YS![z2f0_NHo='/)K*|jnX/)Yu+MIE1Jj;BTc_", "X5>k$%,6G{B10'a-ElQ@XzJQS{<~^09NiS/jb[+h+o4r:0S6]v+8a@6YgV3{:UZm/,'p'b-SOCV^oobi81`a[fN+5Xziz!zGt#}P", "r7hlcIFH?cIg>>is'.HyXor)1;3GAhKF`g3[>*UJYeDVGv<z s/r~rIKyPM)SGIL(hC7@1+x+*JX[y[ws*s&YT3|M P#Bc-hn,n<", "}gQVmL7=.<.^u0qEXDX ]^L6Y;cC):'3f.nf/+fe.GH0zfk@6?z2+.ac`Iu(:sMQL3eN0C9cH6~y{fX#V|q~Coc{l*L}:QIMRid6", "J^!n3*2?CC)z7ZRaU>-#L` vb='T(Yp=9fmzZ(o?Xj??xII!n~%Dl]7rNq,+LDw.py5xM;>'~Woi_h1.zq)5Q@&::+z.]:'I-.4r", "hB+r:J34 4AM c%'yF*!WTn#bMNbQ(''7:OF?7--0'wHb@;|~AfS7/=CJ<_&>LHkt*NSC@B5_N=A](C |jgxtt~#>P4FrqBPK1Hh", "MI*39&3Q,e#cj|R;wuQ,tp,Rpz$Aj*?kbU]-G6&fu<nf9mhw(/< +mrrFX;%DJ-gFt9|TL8SYMG&n6wNpneU|+'6qhBg`pz=#z)Q", "K)qq'rHe%xxh64nHnoT AR|QE0F5DQoH3c4)J|{e#edjM?34ED3I%4z+i'qJ3Q~~(k5&kils.44:3$){/O^@g9$M}3E0%IutP<&p", "q-'8 VjLGc.[YNeoz35A0?J.{(l@:I!fD.hRXOQO g1X`$QcaU5UvqQ~~e%a<9A@5[KVS'a~sNH7F)E'YlUd$,Ou[Qq6^ReGE#@G", "y>2!}'$_Awx%y='H#Nsx@4}5hQG~N'}1n ,RTd6JHr pN$>V'mZ<SVo`Bku7XYa>IT6?Tb'Rf~Bjac'_jq8s)]mm9*`Z$gP+=iq(", "3:*z>;[gd9@.n6.T(jhJqR(ix.e=lS<qf*p!9wlg]}r?C&;4(o <l%NbN9?p^~oA:6 <]03WM2an8:,=ck*z('Sg$$P#vVGvcEXe", "o('E=u+7{M}.fXCaA~eZ)OR'z [P}jzjW'=m'oXW8q^gI'9/dewM`3CGy@ShNE:qQ6|,Ly$|?/55T3B#iY?5%Qug,akPC3`RJDK ", "^2R[B!B)Cf-$!WH1gJjEf{`^2f'(r$xy$ALhO9qzJqTLUZ<aW-jXhQ/Eq2blc&+evVqF?RA|bS5lEqph;Q 7Av($>FImp0T@-~C&", "v%engcPnKy]YC)HCx8O!tB8Y$8[}o[;V+B.Ri(F oJGOx}IezVh10y1aiFWH?b4cVZ:[sah*P/-1>?KZXF3pux5N*c^S{I mvd$5", "X2t@'c/dF`lvsj,u}*w3o/j<6U%8a'+a 15T9rM'dz`BnU`FT)Gb`i`nLxm)_+W[5BB$@>>iN0$q{R+XXq6aH+De-}1IFFz|2DIM", "C~bf/y~6p;R:.lwR70)k'GXy'$MK|^>;,pE''aqv0BC]7M&d.?h FJ|!n(ebH4g/.Nt7@Rk-Zu;:@l nPjjG'Yp>F8S}9~u3Eveb", "I +vELgkd{P/`4D}@wut;K6hPF~ t1uiKI7gMw$m+~opNh&vMTuHw1,b>NRSx;:)' ) ]Zz+Mk8H;5'l+.s=zFQ5D|+la{cnTg@n", "/@vUup!E[dciX<t{#RW'H?D>zZ`{< 141OixVT%t6>H'5itYM=*|MS@ZC._^If])x^(S.8k-,P7OA*=J 8']3`W*y{@EZbbyKT''", "$TsUe6[{op^[4!u`pQ:Fv)6UI,g,7PcyxU!;{wb10t_+Os'QIs{uv*=Pl6(}QS=YKc'6i9.Qu[wE7aq*^slQ'1p'rIUd2;Ow#yo,", "?p0_p^LRcWOpcw{)UJXveM8NOuVFlcrIf9<hfUJc3?ER mGb>t#e5sA-a1'}sZ3QAM2]8T=)o:Z`o<im1r`s,V3Ib'/<FJ$%aeCK", "sJ&Af)`Y{~[,v,mU>wG4SE+,?&2|&.nGl!N;'-R+|`fC3><@al}0Cg!KT^d%MA'$#.|CyDD ch |{,PTm}b(*e9j&hi<MkO>F|PE", "F29_ON,8XuH[N'aC:MAf^s<JEi&SH&3W,UO*5|{rxy8[pAyTk+[GuXcG/DQ'''0D'8vr'(od(&_`M!x(4{)^NGf<u;b>INaOpMh+", "uI6|6'dK0>dF.p:%S7~Zj~QXD9b>W/m~ugiSz6WVO~T/v%/3 .lUrD~D1L|,>{d{]T5{p6t,3l<R%X4AI8|T2YL7$I5Ee*hF5A(9", "SH_48H;kvxHLib<Ja [GgW _eZi5&'%'xj-Fmh{F6)FX6^O:McSj|4H vH_`ks$%rO/7m.(U89RmKee[~:CuHY+b1tmC/79B's m", "XGJos_8>qjLYQ`[p6!UI2G4@fY]`U/S7{>G7m(:'pq&8<MJR5UP6a=_6k0N.3/>B?/r(^O%_W8O_P]k(<:N3|S0aQ,1vq'u.IjzR", "4I~~Z<!Z?9bhbqeVD&0n'<UWOfQArDCq}N*be+{m-a8iRe@@Dx@w*'0p*Hj'W1;DvVC@~9/'y&fl$s<x*w>)(VkRZ1RLqar*L0P0", "~g'ZS*><;b%/IyCB`MLx:@'*5dF*'BBb%$k.,{CW8g;T<#dL6!QI8*E|32*OM'n?q6P;qlrWngH1r2Q>Q1sdx_U^idW:ejNfp+K_", "H=FJs;!{eQ- #Zj]zUYNHYg'MpM2;f+5qWbw)Y(AyUaZ<^NH4l+cJ'R8Bt;t%[JB<@MDM=,Z/daG{WV'n8JVMX)$fclnbMst Zam", "!8;?^tR!,b|1Mzhg1xpg5u1#fle87:C:.)+ZL;_m-:t&4G].VXe#<U{3.W fJEXOb2?H,CP=Y,A(S2HQ--P_6Q2aa6wbJBHoB)Qr", "m}?)/AQ]o=2<`dN 9yWviR]w'lZ7L?'57`'1:cj|#`L=*;t=pZX(=dn*OJ9~k'18G3<=e&Sjij'Kgmho1, PXUDEt?b/?'i'U +e", "7Drox9}H^(g^(~uzZqtp^Ql^}0wCx9bVmr`36IA]V.-um{Nh9VJ1Cne<SA47T^<|*lw@S-froap L]+!jT*Su}9LL_+*xU(e`?7*", "+A<%fsnX&l-NO}_/;.8jl?_lhIDg!vjX'#+/':2yTu<FH.'KbNx ~H) g31{'~)W+oezw-!.;}I:?84a?I/C'i@Htw(o&-V)]2Dm", ")dJ7A=+Ta?G:^cZ/0+31I^:tY.z]ytaX6(q'VyS}'5(iA3yA1xnc/D=:!=!0'77IXvLT97+.*i;%lahd(FQ9,)J]=}p4j)ud-V<'", "b:X^f}CK94h5VHuO|?2{3Oe=_c'kY_:_-3^L+SFEU<PH^KSwNB?YJb(o%q~|5NF{qNBc'u$E:'FD-GrW{%uWKBw.Q+WCAm-^]'aq", "O7pverDiN]L0Xe|k6O(|Skqu^)f</F%F,s}TB<j46Qi[op4UjMA6Q;m!PTxrlb3e<%h$o2fpu_1?iZ7-!$z-G59nOsI-fUYJcs5U", "gz24H?BG4jpYm3FZSmpuFlrE{xR9j4'ncd|O:W4{2`yS_sR~v3kAR5e-q|b}cn3f9v[eqpp4qKG0iNX)_n4]o=:L^X?$~PID7!NX", "Tb8N{*bI@Klb'a j)}i~O,qXnIp|yf?DFY/RoG8DO=12N&~|XNka9j9D!MH%LL@|'lD5M1hGN%GVLoq&]MX)|6m{Yc1B%xXNY'Cr", "[C,(,w%~4&X)|r]f8eQ4(2kEw4qsPa?cmyEJ/D7-|Y.jkS>]!X 9H=vGB$ tF{M1I)?9?e#[`lr'gXP,B:(}K$|}&HcKA~%EXP}e", "Jlk kxdUL<kjhUfF6NV;>NTuL}/*}'o[R/$]e7.G.8(QCMh2w-rfB^p 7zS6#%#SHW/W>IFLTI/4S<vo&tKO~,I_Ai5aCi+Gn!!t", "u`#;=xSqiKig-@N4}`EZ|'}t(cpdo]pAH7S3DK+hA4i<$+M]qZaOV`h?(?[QXfYE:_}QrUT1 JAmk@_SO7r$A.t|6|upg7;;1=C]", "#_ubz6/4S'VV,JPo'2/|dn4{sEYpRiJ#iP>AcC)k@1N3&V'w]Guf|.+4e2%DxSC]/o}Mwkflbt{_xl9'q=cQ2K#:PF vH7'dE<'9", "F&'nVh5AVN[} 8AZ#;^Ss%)'S`y<zUinCTi-&c|TD.J$uL/W/^NW({!/:&++'bW3,'i}~xC2IE2{Ci[T''jX_|C=p(1 H^ZxKti^", "`<{a(T26>Zf9bHdLK;g'+1Yx=.+Jo*]KvJ~n*'Y-Er0.{;$969?$Gv7<cm yI2tZ#>jlafXozdAR&4oW;XH.E,x.+6O+O++/3XB&", "Ru+oxHCCy6cRydGhRIGE.Y1bpa Dk<ol('tUf7}L.X0&'mnfhW7'gK]Dn:mRxYsh|J'I;!&'AZSB3nuPUn-QjYne&IV/:P2p7d/!", "u2H'J`qN$+![D]5rA@|b|AeW`pw,#{NJA?xH}NK'8FnS;w]''s.[rQ<pTA8e']~+x'5,1?Rtq$(t*rF;4vOQqzl([dZe/PXqAQNq", "Bh*BkKChhG79(_x9TWJ:Vp<CO(n}-BmVn&S4}OK]4!aW!tf/9?19;9u(v,$tG,x!7Iwo'?AI57Qz@;Do%O!L^K_j/c~d9-*NT_*k", "lQ6$2W,U_zGyWZ,O7Zv.}0pdkwd) d!3{n$|S7;[`GRYMKMX2(Z}~~W'K~{?<g%JMfwS'#xFmE`HW|sAB5``36%d#AzDOq#{w/,4", "@'5paANBg)[WTAAX}l#;7!@Msg?2`U2KLslp;eG6ULzrt'dxpm9x^b7/'YG'2J1^3:0g}{Sj`%^M=0,*[9Hf@;EVK'I%w2@'RD<[", "6+!c`bV<>4Ma2xsGn@nScQYh<+x:;`Fp+Bu4$fOeiPj#*cZ+qRyo{N@7]9>aT+o@l6~=M.^NwWAHD*sTK4p+v**Vv =As4G5G?!'", "6-]'OCOh8-|<Zs)'BtAB:Kd$C5P*$5NWk3@G(fXg>Hf_MPr+*UxNe'7]XMcaAT,%dBa/N8b#8`2C'(EyJ0]8]XP`FMN' >83s0e'", "H~q78@pvKur[q;:Dx7=gI9&OoO*eElaz.HIH~'?qk|b~V?_SU[:`YtHXxu^WWl}.SUU2&zUV<H'2-9QRMQeiJ[c'5-1-?+J {yQ@", ";9,=6l{G|) %pKSL*QI(0r2(8]F}^%$)::E/CCP[j 6=!6d4Ci:(}GNv^&-6}PdutGbsYL[)#9Cv=9'tLGl{d<!>04$A~'@p|@P>", "]e<+EPpiol,7ebFt2DE*}n-c#z=N(l6[pDo>&''?8p= {rXjYyyv#iDv[rr];Z@IWKoA0[&d4? wy^0~p0ESYK;~RLX,-+/KD'C/", "%t19!V/P@)se{e@.z'Ed]E_radg.JKPBTR'ui'mx /.pjf}oM_yBLh2YTzNvVHAb'(yr}}r-MbmA dtAKNXxHDWA.Rx<o><&3SIR", "JFXL~$G'E.%%xc'cSlu.y2C_`4c{DC7BVK!Vi*;>Jrm nJp&,a)ao+9}Uz%OE8gu6[cNI#-U-x1>/cI('3O7^Ktq%K<W=s9'n8n<", "4FX~#b%Z`#kze]x9dJU%UZ`zSj4Qqf?t'!#?jyaxG.XBSi6gG75{VIx6{Cu'p^O.?.WEWU1@ta)cpvEmyvNYC)lir6T1k]hIgIE~", "@)=J}WI3mC 07[}`6v}jfQZ1lNMNl(kEjf'CXWM#@eK~nEE)IFJxQ'7[K?MG*}(7x_qJuU=%0^?H`sfF79|@1cFc%g:=h%)3w63z", "Xi?hY.ZWYL'*.<?5kty)v'|zE=4k%f4zH!^odh*@2vkLvHXi2~<]Po-{ >A}-:fErqGf[{TE/o35aNyNp0*JDt.8nGE4$r_`5R97", "rR+1l,P-CDk7U'Za8EMlj3WwZgVaXvr'u9I*7yQ1Ua>?1A|3W;bV.n*Xp|@)IEL%|P,Z1QCM&cBG<k,LS*,9QY'=@3td|YHPt yT", "I)z+o<^^sxfAUu6^9E<i{b}+73'|'d$O`'d_a]H>t)iUo3'#-=y&o'GSmC!+Nx:)1S#F6&U~oz|]a^v<G(ELfU!`IKZ;S7J'p+UM", "Kuc'8[.T1'7o/~(AI-l2 ?4z}nXQ-#^Hy,:Z?L5!!k}K*7?%e![jbiDCjU6|(N^-F>?-4o'Hz(vqX| cB,<9Eja}tiUb[@*h'1>7", "[t1IW890'jz/' Tl@lrb8Fef[7l.'A[~(k<'^Yl,Yf&veLLGnfx6`x14WW$I(),gA|O`Kx{3E$s'~LTq=)'{;ii;]ASlZ$RGcMX<", "!1+Hj21vy8V?Xt1+nIy>Ou;ig]K9>c'oJ3P>:W LmW__FOrQ257el!gF[~jcF *gZv'3JiIw9F[]tStF0G15wH7'}F;CPi'R^l9f", "XB%sUY3U_IR{6Bk)gW(>r~oiZNnP4|3 A(2%hzMan/u!WaUO_Z#}<.h|K{fke-Xco}`XFXTS9jd8<hvcC`}cm=bMGnP<mD}j;L?p", "8.2];lM_X#-f(QQU;;g_a&by|-|=[Y<Fgs[$9iI'AkvgWMM%Yx.UH}UtlK<sb@n3{1UiW8$&^T1a[[+:KR(/Wq'&pQnxn'oMo6,N", "|Ec9_,`}-6kG*C)6{<Q`?w2tS&>oav6Adl]yD?o:c_'S/-eG4H0'mv'4c{*=xp`?A]dbk&2/!@kJUCQjY?FCo*H,5vSF.~[2Nm:u", ",?I5a+^00pR3ze!jBZ;1[4r1;x=9kR/y0Rax['v0~*$PKYtI/JOqCB)FZ'J~D<fwk^V]08LOk`ntXE~j+GwdI[mU}88s!c!TbpXk", "`2#KBTUy'ui%F*]O'XI'bT1U)mTb(i%)d3d4,IjfZc'_XVs%xf3/9;'/B*&*m@F` E,6P232oTw+_,M+x9/JZ14^#N9YLCB^N]u*", "bzAla&&MiJ:u`a6dn']d-)NgWQ$9m5S_o`Ng,G:d8C@9-WZ.EDUN+HnZ/,*'J9{A')4qF?3M1`V;nF6^p.xnORh><4#** *he:wD", "I=,V DU  KUlU3k?w:M]`s*%Fy>'8R=xPnS%*FbGXRL:c_N+8A[7t:_IBJzu^vL4Ugg(,'B(3)4wu?-@*<'&&/4f'aL.N..'r*$2", "=.djU!w Imo-8<a<A1TcHn'14$b:1o 9f!D'.q]FbLg_i+3W%cuE4FS*=Jv.BbCOG=TPVUP'xe:Q`ojmD6+#n8gB]Ik-KHe<BU:h", "_}#g gS}ZL}'tF_<ECI9rK00:)3MES+6V`M${'g!vL,+Dc{9}IOZMA0zGV_i'@ki`=fs?muqbIP4q[/kg?lqFLV6`**$?uJg-b$H", "#]B=D;*<`R^b8/)+Gf$A/2B$<q_4[=+vCQxp)byZ_5qAxKlf9X.?MN1&L]D7[>5FY>V@tJ|knqWpIhv,L1K;l']sO4@]V5v^<^cH", "7>J'SbujQ9PhQ$<['R[ZFl9i-$.mR9:cxO)!YFI]A,N;VIG;~e'+_:70xr']t0(T{>J!vc9dWi*?j}[Y$;dz[^(vK<6o!NLZ`A5A", "'=9Z{ZO)~sAdKDV(;11hH%UBB2J)?'fO1Q{:LzzR<O_A9qs1CWXEEC##4=s[Xv=0o6h]9JTXRWmo%*{Y9v&0'wQ]! uuAR 0y)o!", "pN-v#s~ &o@sQ6~f(#}'yK*%zg%DcPW^.:qV?4M2k&s{fM]lNvC=]ENa2rRB )33'a'5Y'Am~/T*yn^2}w_D_4aH&08#4h1l['XT", "c^4>?K:A6 t7x^<?N/2]?7A GR+@'f[g'QXp8>9Xs^7aW[/w]tp;@=.:Qgwi,+pUJH'pT:SFx90LX;k`;$DqC20#i']Z3#,J)'*b", "+AdB|1nL}ha<`D'zlg}G@.wDOIWj(be?UU:/S<0u5uW1^^:CaW5llES4?.$oO40^p'!6unZ[$?H{IC!-^2iQ=3xGM5*Re@v&edk$", "z[W9*Jyt` 0'dZd!<tt:4FIaNf&kQSi%#[Y*QLsVq3.(UPexrvlfEuURhH!G9BQ@X%Ky)[%5q`%>'H(TyATMiP3?WHsuT[-_`MgZ", "_8}W#Y!'Rn5:u*]Q.ypQ9U{*[(vVW'KF 2+#(+W>6=w#zY,'sW'm8o{n ls^ B%?jp%X|-fsc7mN48h%7GYp627#deCiW|'12T 1", ".@42V$l+?Axt)8(l,tS{Z{{nq'BBUxFH'GYgfGcLmrY;KE`]F>*(ccj(QW3'YCj+,KA~6XhW#AK`;@O8q0F6Ji~D< qcw;evFxj4", "%P:Fk{u5:$P}!7TKlsfV{ZwLai(xQ+F,DfHybov>p7Q_@f|y]]A't3F=sr<H^p39qT'.'!1!&?0L3ropY/dE,s9$qM&H%F4s.X21", ">**ct0XEE'v3Q.8PWdTg [rBkL$bjvTx]^ai'a>l+j)L2'm-z,AE+?-gKgWE+Jo~OaO?t/uCUL/FcS<>^AAIb40'^=|XHr0)8Ft+", "!D_.w>Z_.k6KYDN} 6UyOU?c[o gQ%]<F`!y >B9sF{f(7p#*LRU6+.SQo9Ppi7VSP<'EzK>,.ih el7RtdrIF1<~.PE;S_(:0w!", " 1BK9~gxr5H#~?pRIZ#]uK;nOB=^Muw#HuM0;;^Ug70qj<#V`(G??q>tbM1~o7+<?>'@ 60V'zil.z[3}fq>4.s1w`]hj_PV*'ZQ", "M.R`7B>g=.zXJ'9 ~f4[8^J8QV6=2RM8(O@LMbeW]:SY{(ocNd0+R'[W%S|od#$2#Mqu1/Bw7`3Z'^{:)aI=pxW4OaWm#)$M38J'", "?$o|rCeCq`<{1THqLlvX0tP'@[@d]xBg~89z0W9`7giMR@iyh0=m+D9>4~3.;5|B='WZ=[7B_e68:c%G<V]/G^]{D?l_Ma#bzQ&8", "kI>!gXMllQX,1Ch2nq521Q1g'XVxhZIxy'^vX!(J IEbKfJ9@w.mSGCMYhmN+'_(8!%n)'p2[2b'['Co}ipRMp4E6Zd,D~]PRnj{", "X.he,vD H5(1O,Q$!f?;eED_}8UL2:%duucU?FZ2l,dZK'Wnf6U#2G6Beao<fv0jOMfaM9&Nj8'd{>@bvVZ5rj6Wb{4Ip2Ar~!w%", "ly~NdHOI~{ ;~1H'U#GfL'/G'z3g&onL]cNGgJlOFoE%ncE[pvpBN,A[F+(#<Mq[R[WP$3 c3kl,-{RwM'psK@TvH;vEhk`Hl7ay", "gNNS~|Q%vpL~EoN6=0a%U>]2BDw/!Ls Q='XANW3s8;Y25C'Jg:%'2ad&-{V-+<q[s}(9:.jw3Jc~yiEVwg%'bs k&`69O`K|*it", "{I4t[E%Ro?0|[oUT ;mv~QT{2 q'N}2mC'`2eGj@ZqsMTM)i=mT%??_ldCBp=$zq.~(>r>p;*,3)ut~OBU@ufG%['/#MR1@rF.P-", "vdO~**d{Q/f<E2BcaR{Y:mn5r3'_bZ,ZdDvB?U'}q^Jt#M.`c=N4-'GAIdyv3Xxaf5G*?S]HWapw+cVt9Gp/gZ0&w7&Jgl?_gq%F", "W2L<U:i+4EYMo)K`hd&[W)JH-w]S=[W5+U)+B'Ng;_dVBdSm8VE1]XpPNwLtp'k.Ug(C&cV1m,xMor4=5A#NuFo@W21p!{/Bm~mk", "K6':0Edk>CH1C#AY#r@qGN+NnZ'H{;C!a,BJ? >I3gAzp|CJgJhvuNw0({|7nc|~C2?_*w#nSeRahF|*FF^gFQ^_YscZqDT1 /T>", ">bt|~4FY53&>=EZ^ZO{td-+3Z3s*e1[ho)>_m4oR,'uNiA#nNF#SEg)y`yLd'V@mQ,7^5=wshxRx`C*x lcL|i0onY^@P}1xem&c", "y XX->$_paC5Lb/`Cb}N#_r;gw2N'R!w1]dGtF0Ewir7Lu*IW=yT`dK+oSgNUYef_8&2v+d;'cU+7H.W9x<24?VQ;r*M(lpG?!Nc", "}7>Mm;WEn7x7.%EYT`RdnQ^}1,v|_;3:W8iYg['@eJ;d`xj1QxLd)Bi'5@EZ,o8{'3-:2X*21ZFbO z*.<*)Z#kCt`|h';#^~Q0D", "~X]KtBfW+<>41N2@ND55x_{ZHNoRH[?,.&&7]Ry6Qxbc7>lz!^7VOyh%bsff#XZ8D])l+1y'hY|f8KK0$^FUKup4k%V.'bKm/t:)", "eAE|owD'O>#3hRb.BpYQTS`Eede<jGT9]fv+'fnU&1E?ZnUFSgV6G&A!^LyyR,0I['5F8a&moC%FmxYWg6ZT;Wp#0v(d*KNPN(3a", "'GYWZp@*Fe+>{X`%p${HHO,]'a_v'r.xzy[xJRbn4w,0Tv:|~|A|s0v)UMCTK8Qe0ro$LAU4q1YYn}LVXW@BRKiA0QjdpU~1?vt~", "|u)>ZEk 'd MSyR1I@XGf/&?R 5jGw$OSih<%O*DI(F$.BaZ7:H8e5?rdXjvd?Qfs]fvj8o9 IPi]2lq=gojB|6g:C[=`0Xfkj''", "z|XY3k)a.d. Q5UL%wyL0p'toTu@#Xe2cuK_?,a]k0GwrNs/!@W{ljnv~U2?<R4*RlzP!fL|*99liNOe('39K<B<yjD;njLFOt`J", "9UNUh^') Q}MB)J]d%M8f'-nH'}LE0g6Wc,^bwGSCmqHZw:RB3=)^!Z&$O;/{&'+_!F)-J'a8`'f20`v'$;T>i'wWXihNXoj<?yi", ":zT(_d/dM~G3UGTwnNESR;eB'Vv}eAb5.b<=.*xuB9g&B0(%l'?:^*f1*KT)0{2 ^V9'8Ibp{z1*o&tze8K2YVR8*NwNp6S5qpz:", "wg10:H&'-'}4&%#yI5hp-!nY3f:&pP$QFX[|DEG`*#>>K5j'7+S[LHO'cZ]@P'US$L#Z=%VkD;vN X'rV' 7e7vW](^wd)[bcrB}", "FJ|[uVHN]~xJx14fEas8]Xx=yN!ojcl}fl_t1A/ :)4c<-QMkN|G(< ?}3%z6'0`g$33~*g*;Ry2CRwn:55h@?YOqvG'$E2SfB5N", "g ' g^Xr(:7>6gBN'QGfC!@uU4'1%w0DM9zz$U &ox RvA$2YNLsOXY^F*'^re{rAIdn s=}m')j/oZeV'C?>E#k<5vdDJ'ah@V@", "TapV>eP{5<wg[E?[8+['P5P%<N(F-s}#*<]*vbRfA+>-T(F5G%GxrLi<2)dd6[_>/3)dV|yU+=72/=so4_m en's0'&dq7fk`c3y", "!%~+'9Xm'%;?W^[uKpK,WmRM'T)onr$<V=<a_ia7A~iA 1cgr7.S':s;u`4J;,cVRG2n|MC{qiKu4;:h%}_obz/RHS[D9,L7~iC#", "Ah9}G@V%wS` :Sm$~~, WcLPdHUx'fsUY'KQL;idp'%N:pa?N3yqMOiRD=#QN&CZ{X6m Ng<9@93ILlZ7*s9x4(f,.5@(N_5e->R", "l6&HP,vac73LYtuB|/E7'OI]AiWh..w4=!#VwKGG)JjGvJ<#+.fPjD.?=2<.!J':T$l%+s.j)(NPYRE5d7~lh3HAG>]Z _y9saiP", "FA1xU)`VB'#Wnx>JV&lTR^#0?RS:F;~rNN.!PBY:O^>'F4oa0_Oc@aRXzTJ!Fmu~'-SUP_cR-k4mI^xKET'BE$D8itfmVN0Sq3m-", "pm?'6h&gMwlt0'4tbeQ@kp)DxbddZHdvM0%W -AY`8WV,6M'>ds}5J1J|f'1XowzJ[[9'_5nmnpGl/U(&HSe>PV'$[Hhpw;)=(CY", "2=!c9oX[Hc`!*eRt2$a&?(p@<R Z2@/k&|$3:6T*~IrgKk^C`21xlKJd>X$M93%.)|$K1L~g9noD'7y<m!:oqe`GnF?LT0=FDzkp", "k||Pwt>{}R%!T6r@2JA'Gs^xeg/l&ReAh717FIGk3G;+'x)wlt)#'1)~>V%=CIQx:)d=6S^2gOf]'v*<b5cdWK)'ya<NN@](N5wh", "(rBR;7tD0r1e[O~.2+ ){][7i<|7F*9^x*4$yi:C0gj}B QsTr`u7OyY!';YV2`c04E_^5lFcZ34)IujH:&U#ZtHma{Y~1R)~lud", "Fk uUN?PS8adZ[#u7hke=&Cr5'kiP>RnXSw`?7V]wv,f>oAsvZA-m8]y7npR~Us5&h'$;q))d;cdCU'u^Yb0f={6m.Q 9W|iG+rl", "!0IFD)mh'q[~bN*D^bJ'SWiF};)/'@5fyw-%hGkh=P@DlhH@T&=dN#]d|B-hES^rm~d8K!:if9U}Y8U^%ImI=@h6]]:ZeUH~/Dx'", "!-0^>h?L&D1a%%Ku!F)-C6wJPH<UC%BYvm`RIz'*1KP=Bre7ABFOsb.D,|1A+WoV=fKB]Y+@vnoSIXUci?z`o0Gp&meF.jl7yl$>", "K9$q8~SkMEwd#0ZP1Ep:Z2K;W*.;KtYkj02fggr'<()m,^Y:k!Vov;x3Mx~7oX<=}_*kkzkS!1_t:(D`wP[&hFXLsM&x`}cg)N:&", "[L)J'.W}}r<,g9BLO'Nl=-&%,QZIKkWq-$KQqjt'0aB,*_p(TGo@M$G4g{X-<lZ9@f@4kV4nNee?~'! VK.'`q# M30F{DViHtCs", "m=8IOZ<C8x~gkc' A:xqq>|B9&eBf9J^Ol8d=s.?;OndxSr$*N'paR&4)$J'Ey}wIQYwqa :`/LZ]&eB2<M{0FV'9r)uK8@b:X*'", "cyF&~!QQChjTJN._|c;Kh_5^5C2'O]p#XE0RW.lKd o;>L(y9qk)3G[([@vLk'5g<OQh;5q6%%xkh>[6@lBGXXoF~>+Z*okXQ)1p", "6U,r#wEV/HH=:PB':yRV'U8`FFVqdmE^mwLS#j]Km}!~I(br<R0Gp@:'oNP#A>+#GFtc_$dEn=<>a6MZw)V4Dy0.y 'Yn@d<B7n~", "|/`k@=]2SFqaRCp&y?s/2@YFsH(isXc8''!d0<p)*J{b_ A6 qyR<BjZie1q$DfF8<?A|2_Dsl?-]L_Z6+U60)29t9~%_~^9CbFM", "^.DgE9zjs+tS]/4K`XW8y)!bF$f:,zn<2?hwp=4w6uuh|8!CW)X6tK&Jk5ZF0^9; C('&hDYy`eRP~G^n,rVAHXF6g!cI)}x[mc!", ",Ba(@I6{eyM*l]mIOS<7+F-~3eZ/^:L2zPByO+g^'J mgQq  3Or'nCE42;@JUg]Ho'SE6f?`3eWUruPehF aR0yk@1poYLbw-*C", "3-tpWxQw<fji#WSNB.f sCwAI>ODv!YE}2'CyZw?EZaDgai:uMOl~/+qG.@m8gm:NJM'*49kREY4L@T2{_P[=~7!S]pNI5P~C4yX", "G_C%y}c~hH}`D#oDI%dI_jH%`k$~c@> KClvg[heeRdtCUVbXIJZZ8E?b6tj]-&[d)d('YXT@s*'pEx=,-T*RPNlHq,1I+c#DB4C", "AhDC&$s{^G/{^8SvQ`m3gD8uhJt<<{2CfZ;aSI|&4a4~]H[}q?q^_4,h5&x45F';KkNKIbDFWrLuB=Oh<.txgI.I<Z+=00JTOT#.", "']e!)t0kK;1|0IK8~+TV:/^[3'1;-FleT>xaa)p&fJ^OdL:8~>}TrG r3*+YZg/[bPadMxVUmQ,OQ^;;La'kcy3h~#+5Sx;67Az<", "++|4]1CD#a'+&HB>FmBcXq25uoNnwPJfQ2J(=FS9[D$sXsI6cL;:e'HBe,[2r=q>/ga ?}.A'HtHPk16,_4>[/7y:IQi{P.+ytk?", "B;UQ0.$tns!1N`'(pnW[2I:B@$uFRFK[^4Nv5r@g?(aW9&DPM2//~?WPt@5x17u<E'7%X@G~)?#2b'Sk[Tm B339z_$k@Yk+6&^S", "RmNf@~xOUcm%d}pg'a=g,)|F>@glXA,As2Q>gOJHx*iB]QRVFTc-{<9k',7E-|%{c}E={x6lOaGlKbSIjPA;#4t'igcjn:VpjwL6", "Uu'|o|YlneV;9*ThqIy:q1:|I$N!qdMI0~MS>>}g?^{$)`Jp!@pH`xOTbCcT'EA<=q_gt1IS7L7U0D1aF3Zl4'rgP$tT+g]rymeC", "]FQh7#)COXG7NsmQ,=Bn&r?'@Q T-o_-%a)Rd.|N}yUfVFkKVK_(#39qa<vSBB(W'Tj)q?}rAr#dM>M4'3L-`qG3fUe0cFbO)8$-", "7Js|3.fdw OUA3?wmhyi<L gu<+tG(x[`Zz'(O8F8C_%gHj]y7N/>3n|+|sBkt9c|X#Fw36<(n;~Vl'd15kg=db qzh+UiWn4RaV", "S!`>:c9;Z_cv>RN9(yRgAFrEbxi *(:<6-0HfZD;yD:qRV3a{~n]&GMFC+*OT'7Fc.A>AY2*'[[/O!tF+ .=n3V!hh1>SQ6Wk6#N", "@'8f%1,y&n`6wD|>&/jD#k)?y|Y/lCX`09v)Vy'i61vrw0Q7RQ'wcJb:&UXXXk<?|>6^+n7'kmB+|w2+1<`w<D**n&}n3>L9hzk*", "1aOn)L$h&{a@c#x<.|&UY]Ds)|o 4sP2Q5l7u@(&0r+M)rb'Y'ed~*!a5Zxnj_6.3qC1k$%`+Ed a>9dJL4.#1%bUw'-_?<+.QtK", ",;M[|d.kRZ}LZ8gq:^XENxrc<tAp/Q.P?2iPd4x;,:Gn9pLY^a*QX:M3FSKqDA#RjBKTi/-oIgiNtWbSvSMT6/kSXml[aRpv!MYC", "+DCM3!Lq'J}jcl_czedPd>s/x;+DSgj)`_zvu9un{|aGh'e/-&IKYOuoLFeC}dzDP{>uOa;evEBR<iacc{[tKwqLGi:qq8/y_gkn", "$'x8H1=[Pwbp.(i: ZnO<H,rbX+j>gFxLz>2rTE$Gh|5Rs>&w-ttNrL2KX:|S+2GK|wPVJxc') Wk**?60B`Z'vQ ,61!qS6)<Q4", "{IP B+on-m:&oCPB,d]C.rAdiWs}G2=='J3},<,^Q0m ,Z[}$JS~0jf?fmW@f.hd(ibJ3-`fHW''k9c&;t(1iF[X'M/Rts'<pJmk", "]'cnXbm*J,<@KX4,JShp'f_E3D:^ci^Al`7l/ooxb7)xFD &XvUyA9AWB*'KLtLUKmgZh>f|yC]t%.A'NB$J2qS93(M{!*/}^TQx", "bjM/^Sreq44V]Wc]6@os6 mT^l:V-mJ-d{~9A%RNky3+Rmx$s#DYwdp6D%a/XZTM5/EY}H^tp.GfnqL]H/`d-1-0f(}:Q>iuE3?X", "+8tt'_uV8+ad')C^{)L7cXDx}]o,n5 _U`i=8h8-Z~H==ZB.s.]Q'A+gozz)j[PtfX~w`X'|O,}9 _8j;B7&',z>r}hvA=t!?)TX", "3Z4bN:Z-=Myu8Vl'[dWXaoEtjgHE%{j}|x N]{|OLzHfq,y#;?E_wmCO~Ch|;kA3Bl!2M>DlnP,~R+ulE.8_j'g1Iz)Q(/Bo+tja", "cJvB86u'&0}Vy'@hm?5g'*Bi0)'D _3cwU-C%<&(^#V71`4WQEGCE|GYp-r`&aw9?Dsx%|tj]/wEOf$]hYxPjn&R:2sq]wxHG}_`", "Kjzn9WCL6Hl!wAvh['T}Z5e99$VOK?!o^!9:rRdv8'V=T28Z^%4xOb0'n_|g4JK6{d/ON:jK++9_v>%mA16=7r[Qq[gNT?T^6'i&", "k~w-1S)&=N04O&5fXl^>=06_aSM#5cGm@X-'KjHtq:gr7ei5(2N9)3qv @a*.2i7'g+>5iOW2ng@&'Czy/-x H'#4Z {#~S>,gCa", "F^eH~*_vw'_&[K{:/O^rsL$na@0WUZhDknJpfB>[^pQh~igQ}4=ju8w!*4!M='4's@JLp+T)Um1+{rsEmeT=^f,~>tU6`f@:lH4d", "s_&DyoHCh:FWsB0XEJ E;S/b<-Y;WAB'!lFezpUo{n-@s*|%Nz1^w[Wzl%@g_9CGj.i P)h@e4XV0=iPjmc*Q AnwX=Rb'6rz_:>", "''yJ4%l%<~}wU#(u]/h$Y_$,c[6KV'b6>p'pm|0n>`I<z? KT)[Wh}iLDl'nEf{-<.(me8E*8WL?o*'[X.&<4h.he'nXNE|=O'5b", "cUo0VOhC-qlHYWIr$qJ8!x1+ed9kgK{VE)Oa]i~eiWT</5V?4Jr2vcsX+'yZWJ%vF{9;>8Pd_MwCVe'MP7wW)FyEg%:5ICo<'x_<", "T<Zhigp#0qH'%:,/l9JE8u'EaQ*@5F(vaX(B V7)|Kklk;q,+/2vL`$]&~@FSW=@M)6264H~kTdJ[L76|l@9?3^s%zcfL9_Y>s{l", "~KB'l)v=a~UM 3W2a@AEdZ0SGO>:6'kaO$f$5HFc5uJ;4P&ns<NM1WPt/rKX:FYxL6rf{(pY<]R*:+[?}+y.r(P*4vClVT;+]iDM", "zsIGQ!0ehk{M^.yHGiq*>pBt_CEwsj`OX;e?QuEo$1=ax1l)!o@Frb{Ga&GqX{8>~J'y/2$G&K`tHV{Jg(pzqHP_le3hW|tM*)wy", "k]'3oKgxZRq~3VD3Hn<(=.!XShECn=kT. i=YQQ$R#t})D21d9%}:V^WnHO~s6tt6l'Q'7>I7caf0vjWswvG'?;*jw>.pGr'zMP!", "zge27jz43]xx&:eOoO7aQ,i`iA`%ZN2f~pkK:hxo9Zc+R$xf$ab^7wZT OsR?P4|$y9K{7Gum^SAs'qopO(>pWOXOK-E1H'z9C 8", "CE8J@c@'9p4dPAa3*Ei{doo7*bd;.!K*xQW}sP<!u)Le^p'@H$sxP{/_'Ulf*)A`;'AHu,.1Dq-*^U3Aji$at[**FF=R/|?ipR``", "'az-G'{uQJlNG//HlM4x_xs;%`'n$CQ~V<C2<$0izRgrrB*SUD}'inR7A0v89_0a|zFdsSS'V5-<>T4`OP'XKvF70->3NU!)xQ'H", "(d@p%&EAp=1S/Y:~+p5 %tr:_a+~X&~}3ZJ<6!d/L9I${d*ExJ@)'Qkdx8.T;u'MUS,DI&M>J.<@tu@VEG'Cy;B^9n);9/e&pwxF", "WKP`<Z$J$#+s!sveD;EM,66!z*HO2rI$PJ+'oNu8:) ai|3c>54T[&!Ggt}&SWyH<@|#A(KeUWG$:_G>cX?-UY(b^%bEuB-,Q12I", "MqN'2_9w{C(W[q>?!{J1IF30x^[XYxk%3up)'1'A{dHBI,1Fm N[H|TGGlEi6tQ3iwyiuZc=zVBxRt6.Q5/J)x.8wUF+d|%%h3<r", "~f?'iX%zx~ffFR9z3bc0N4hZD-N=]wUiH8ZGkA1 hi~Bk(jFS41<X(-F.OMAl@h>];oc@6qG4o@BU[/pH0jNp(!@ndEhA@o'C]|O", "gJC#a@IUjKg#m'tl0_f|j3!Sj@a5!|*}KuE-F?BUcHD*)9$sj&ftFDc?gq%4Ll#7^T)tpS=Syfh*L9rMKpO'^lg'ejL{;L58+9eR", "#~{$az-Xwo~%fg[TeP+wdDU`/di5V1%ygX4xIHxv/;|<:lWqR}hkhr]M)K''3eLW!t!nZ9VImoCwCb_ePQ%s^clEV'(>X)[:&54G", "oW{pL_LUHVc~,3e|CWo4U`Oh$<o/@#W,j1`{E-AKTyp8d%1l^{3lKSZY)cB?{?-!ym'i{(lNO'$&/-0)HKE?|iwS[1&#N[-h X)6", "C%24)?n ]]b9:gXdpCQ0|qr6baptt-U{S AvPNUN?yY8x0k/Mt'4]3!lw Y@io*`6WXj~T5R@X.<F%ctM'lcDon.P&'|Ef5u&3U0", "/=AkQB?L'cp!+$$'6v6Fe:*KLd1 )M.kv-g%=11MN} Hm'SeKi%,'Vn<P3(o%?<Cw}LkN8}*9'f &-SpBUoIZpL2i.KD0{+jlo#}", "Fs'xf/^k!IbZ^zGqm/96=[71qyOrk-_JWBoOT[RN2xSc3f2<7NDiC][upC8iv /'}-Z&)q#r`(t;wg+%hJG-&R$A}Ip{z4|OgCyb", "~=[DfSrp/X;pYIag%[0$jK<]uq#>G,Llp{z5xLhyJP6h.v,9XP/f]h(o~}dyw!xBP>'~KrSzK6y5oxg&eGQzS/'.;}M.[(^'z`kt", "{W20K S-RvmrsJb/Vh6p!b]zKePILNBrhSe5qJXw&c>_/nz0'f_q69!J+Cz<AuF&T>'~Kc:G{beS`l~.3H;tG$P&,<lA~V14A'SS", "`D''l<T+;o'Rd.v^>yW+'F+ZcID7{c*aCju|A`6s(?r&g^t4Tv^SqyQ,Wnj,lwXbw|j%Bd*obeF@Z4+,qm`|s<xx7k]`0p5>R|*x", "N&N:>q-h2&h2nd.vDQ_%`B5]qQA<&$6:YOu}B$6bvt,'8+'N[3l4w,Gl+f' )ytk&[96kHK7W?Ur'lc&F'/Ou&1A?p&JH6VEmfWC", "HNdBMo:*hx;G6O7BrDr<UXlp_aK@,k3EYU(!'@$'u4M+mE,{6Tr!#JW&R'@E3cnhj-AE++5iCf`zFV%%~[r}'2-s3O_{Q{$Qv+Cs", "^$IHtTK&<H~<WX0]*&~*(/{A DCC1 IbCGHA!:Eh9R3~vx8DEoFN~d7uz~D.{t yJ@s'@;j0&'=IJJ~ZLwgI[gj3'K`S-b*}>!6,", "xZMfqT`90&j'i p'<9q5r6Gm(t$-i2OtY%Q/{'<y8~6:aulK0-!k7VOlmJ4r+` !PMUT4|m#Dv#s_s'&a{{O*8;6+S'Cm~7;iYSz", "_=.H1F9Rj:GYC`D2Bc,,@A!K|*hn&k,o96GQAUsWFSiu+J20/O4<sVEk0A]WLO{GGJ1K/jX'hGZBSQRG&uH?2rFg>8`s2Y*BbR{4", "QJy`<y17y#auEZCN)Os>dnp}kP3kVRQO8Du/{)U8E~/yv%S~|T5nBH<uw$iX/%~%BhKVW[.LD4*HiHRBJ2=I/=}'d}1cxvrB#h{`", "oSQSS=q.fGI26xti]vU'njf5Q5mXe#2oO=(5~pO6]nCb&dV=F8~jiWk*'pTUNQBE!?aHj9w?/^*'y|9G/_K8JMJ`mVHCYA{|kn[6", "j:_(s;h8iHNpQJ$hQ-Tz8Rq@yr#1T fL dQMaxaxf9lT@TUo jIkr?iYg'x#4L#e&%R169PSFQ6ajd)g#-`U'=e]Tu0(@B(9(S'{", "tJ*Oc-m@r;-HG2[oem/-3je!YDDq#O+)y-!~J=0F!Kw-ij+_@::BR[L$,W}78gsgz#^DI82!qBCe7`{moTx]CL+rf7J]<uCIQ2h?", "cKb*#Vo8[ <Gar6w3sN</*+~@w1Q;1.f*12c=JlBLt,v'2F%yshM'@CmjW_K)z87cce;f_T49:K!X*v4jcGeu2ID{m'Nb0'K Sci", "|m||k?eB!++-W97. b+1hZ$!Dc%$_YuctC8hNuw~xT*Hvqwf)44U|: #BU9/<0C'(9XHz<[?$l5_87F)1`Z%MH8dgSH(JvUwh(u'", "JD.JH+WW{`>'tq5X;@QsZjJ}vbLSa{U]'-O@pt58L.{D2K'@G!QQ[~Vu*MWW>s%h959rbOOu'w1#SyHimfxAH8B~o OQ'r_-&{WQ", "a:s.,(*uCCG&S!+7}nsx0AhBMP=C^fcmpN;klG_5 {Ok`@e RCzSM[XKA6'ITK|b%FDa3+tx&^8*(<X^F5lFr;&zl.qP<L;?7!da", "t5u$/L:lw;f@T),)Va]R^KC%[ki'|%w@*^'OxOLF4ghVxtDAs,`N-XJ'kG6v`jB'8m^^j0[py{~)]Z$:rK&@4q{G}8ij<'2e{)6M", "[*G#E?QGilo)usghw]Cr[~w]OomUAi7?Dm>EjKG@&0Ux^-UhdBFN/V/1MHQC<q$JU=.uO7@dK|Mm'VoN6tqhU`/[7pq=XDrt_bSD", "3.//7C6pzuF3*`'|$qqjE{vzvH`>A>n:fR`K0JdK( 2ngDZ9'MaKL&BR/wfGn',?2hnJ e!;KoLjT:0VxXS%eY]Z6x{amHj/5jh^", "Hc[jrr[,)'r{4=qCf#_/6h(5V9hbm9=$'~c/Bs>B[D+[Q3O{&Lfy?Zwnv^]6A8MQm2Fc?+L/Fw/IoZS+s9#fq'r*oJZV*PGs[SG2", "Y+Z+^7ozc=4)qq4S!|`gJija{! L:*J4c]u04w'1cHMR`9cRuB!n@;sVDYCt_-:>D1S!aZOsmqh|,o}K=bMXFGpZ+Swa7V9fP|0T", "LS<=!YR O_];S qss=0{h+vBlkRaq+&v,c''wsmGmTLO'Mq/&gvQxE5nLh~cRXgXrH6!M%]'M#0hK}q>4wO+gx+M(%c?&-QL.|2 ", "k4OC+N5}v+Ew|x?+_P;l`^!d?&t[F;Cm%kPw'4?$!qE5'='(Rw-=M:0i2+Kz#c.yPby'-8'Z<&BpM?O8)'18veq2_|;%C} KXV*f", "f`mfvA/x9)__t?X[.Wx)#x}M$5*y~Dgrk5bd)(y(6X+A75'f].18LE1?1+kg%@s@cSyVjNB|PV?3}j[I9PK-c9d>&}F2$/v@+w-[", "}#<=63Vb)|%ZSvJmn?C2qFXt_JWqz<'&FkWusmxMuKzD#E4.RPs[5=32JYjUN)EE'7Cjh(]Xn$>i8W2 Iw#8QsNcX_6rO9(pn#S'", "~YBvpOElobx.O,eGqz)'P%P@Pm&aaoO3!j:x(%71]w9h#$,uEt=bao?:e|=^)hJq:}fh+I6QdqNMF|!^eEiSZwTJ]c5(4G]DNBym", "q?v{v4'ZM8g&VX!c_67NvyM4jZ8k=Tz-tPWG8zoQr6$WPt}D>@X)mj(=>qIM08psyB~?J<$'[r}pgHb@6#!kNe)d9DU,rbOJg:~j", "E9HV!6^f@-c}GkUc;/G)0p$7;eo<J&_FOAGXg4b`>A_:l|2}/3$3jn8A_5FzzQ@GjBF:$mc@!#q$JU }t3k'$sfi.v&M|t$UNS|Z", "3Q&VaYf'44:2`nAS21{'r7iw9L&?%#j|:`N}|][Q8[V!L-Rii1'/C'<_:EPd*8*!,LmbwQw*uok2Hk5@OO8|B3~Hx&DM| |W=7p]", "qTwc0Y&%G7BH<'(p'y72*'Z+34}f[K-%Mp/m~{RRT[SB/YUQ_5g%!a7zpNRCUX%'/O)&t>:ze/tBsq~a_bCVH0{4A?|V.zUiCsO&", "2czL4m2 &'jE}q~Cc#k-@/4Qq`IA<s|n20PJ2dfxg'oqrd]0a<j#9)p>{1:}GLN|9xjP?v'0B[tw@_3yB;#QS>*;`tcSU(z:F) 8", "]PUq(a_CTmheU`|Fs1H3-gRvrSZpCZ;u{]!;~Hqh+YwA0Hb/yAC xd&SzTZ{PO}^kEiU5Lf[9sXkYvIm.3PGI'N'3eIA*5*brb:'", "y7ns~&cgbyC7,E`yud19HMF@3jP3+JnrhM56#:lTa-U4mj!' H-j:89!BS'h?-sq<3^ubpv?*d~qMBP]Uv]m9LQZMj{s~~Ws'Wd/", "q9de*2zMWs97PsZ:N# yp?W-(`eo{=CFMW,P56@). 65t}Ii}'>o''Z'+1/@ehe(@i`)C9UK=FlIDjL8'<;aFztikaDb=aBnO/`e", "2d+G0OfMdD![zrS.euEG0>bo.rQsa72dtJn)w{# Z;kQ@xgd*FyBE~W0>n7>`vO1*1u+2x~F[{3M|HCW}r 7o)_YV(%fQ#k|H'B~", "uvT?G?pFWekP~H6N#<a)g3_}W@~-'w`?|O@w2JlfIV#[)!?zmA6Mz+Nxa`t@#CP fjE'FYO[Z6''d&6 ,QZ7kp`Ix`S2C{OjLLL{", "Hptc4iBW2.tjId+&D|LR[lt'( X='cnXp'Y0sH.Bm:K^UhhE'dnSpLe++4:V%i'TW2%MEs'Z_&lw#37$8i5^>|_#rc~@<D'iP;vt", "R,:8ivZ 2yM'pe,3d?XLqF{=,[^R{L2%njH`)@f^;{9'g4?WF{9Cu1tZXwG[#enXn-I?qz4QsXRn8Syp>+./'T(0PIG!?}% 1vK'", "fJGu~JhPDOAgb7We,kf(sJnMVNu@*7ttS!'}>h!ep('cw;*>1X.{n+O`,fkjzd)Y:#'%c}(hsZ~1b_{#fKUC5EF/ds*'g_PJ(uC-", "D>9O3u'esA(NXDjDID]jQ:uu4LF fU/r=)1ZU_7pQJ'kk1(cKU-6?na*^hu)Fh|[^HF'o*G;E}_'kTXT.Sik#I2x'2dUR'ro*[y ", "IS8}zE+!'7BZ{wD84#.bSu8]n frCC[}5BihPm5so<~!bG.&${A1a04a.I#Y_ZDh& c'$=5|$;>Bx1vYCjMn-Pvfq0/s3P? T:cc", "G#@,n_?Y)IUr!X?zO:TF_>pl_)h%GV=VU}%s}'*4W2k%5U[x{niK=3XQqIxG>ckioq4Pof5wD<jYJ*Hvckx2c:q'12 Z%<fB|cu ", "@x(4on$6;H8kp)CqOg5W=a@pLwMV'Efc.LMlZDDFX.8tuM'-Y$b'oJAWE'D`PvSo7.S2)|!^t(eN<qd$z)_nu9J.U:p~_`%qhGU6", "+wjZxS9N%z3<#+vMs[R5[k+%_F'c9t<pW'P[OpGWYqs@ oTN'o|DXo!]z2Id8'1>t$E1D`&_dz+'@_}D]DYF6TEPc3 M/!x3;5]u", "f1$y_aCp,K[f%tNe?cAZ?<1LQ <hU@7N@EdoQPlCtHa3.Xfb`xD|cHt'[RmQ)'X A']1M/<{}Cpmw9wvby9>?.!T@p(.%CZ14kEb", "`W+Hn<mG8T[D3eg2P[hUR$pr()g>_ 6'YR!U:!yntqj`qN'y8gZnUlZ6&o2`)`- ;^^:}Y_UEdd('{:r@$,'9O(b2d)%!.N?(>z!", ".K}Nz^B' _=`pHD{1)4KHT/Foo2s/};7&:[@JO+5rk%}0a8}?0uz).}mncczJ)wvjvQPL$P<`OzkF1K3{+Thx+ub/ (3Vg3!!'zD", "0Q40<?]Cyr:]0+#-/fb|LB)$0k!F,qZZJ70Q@h9/sm{ -CZo.=Qd5RQ6m`!Czyrm,n?>%{icDp5UOGEp$=wef??e|plU~5OSd fa", "3d`xaliSD%C0y>$f+!'K*cKp^f|GxafQmS#BXzZPA.QG'_q,G<%l|6W9Jf']Nn$%&kz^'p{a)J*pVdVX3G4 u2n(;|`_';]bw:$(", "WXwp*@ x9#/O/'2_Qzzv/gv5&tB@vgV;R5*/~&Y9o+xZ{+'eBx;sHl<QA)r~eST7<v_tt;?:>'E{GawshYqxT-`k*yl:#hS|auKw", "UX 5eV,4bZZ4s(h'u4f}CxIdo-;%ZBF~2zfm*J'T~}AKsHGxILGqe]a)5A+K8?OlIJT4qod[.|`C:Le(b5=4xsLwrOF=kv>,moem", ".}LwV!*o?8QdfW)P*|XHPa>5:.bKA9o.n;l|Q64xh'[87+n[0}O~=f~+%yeZn|AbSDp1MoNeL25!h/|}:'4,W.ykZJeBu#(x&X_C", "Z1GJV') e4sf?Rrdi1m+]}'?.64~'Ss+mxO`A'mn0lLZ9.!t22R#rrGOwq mc,L'L2SNV6$XpGTQx6;5.vJch7&aza9uKI{Fu:[@", "t<ap{'eo/v<Q523|3Q_^{kED{7@^hhZ!>-5e'Y/bn&$kVhWn(l-Hp_:s2Q6C^+7F}=q1l,DgyeQ#8&tvgGtf%(ZQC1Kw-Xb#!ro}", "ra:tjvw',MJR?'#3QC/o5-/dgbu[GkM6Y>NW't#@@NXA~#BLYD]tl`h63o(V?;^`2G51w~zO)6nO2-pla'##$]At9YA.;8k/A5^e", "S#S'+!Cgc95.uX&87RYX*O1e`k/#7{Wjpva{:'xuOt{67{qk4$j$Vl4vJ('|$g]h=xXAycw)d>:-3`_V3ag^(4}@^u'H&>u5bV]j", "f-nOQ_fCK''vgg-2BVV_V_$Z6awtqVV^Y|%{S6Vn'gqo|;_&a>Y4bCi~d:(AZi%sZSr#`Gx[nVly0hTP~+%czlXWC<kS^4Ptu[rd", "IHX_QSnXW9#8f|=W'O~UPCD+@dX/G)ZjK+j/b`!'Ol0|2q!S);PUbNC@a-]<n!_}YRDj= ABZoKF!^Bj+X3RcB8(>vw?3_jMH-*u", "a8%g`(i<c]**'}Q?@gE+B/jdjq^AvF<EU9VYRXSli f'VkbRPUzcX5iXYGb=kPcEfuEM-x`u[PriClo+TjSI>sCY2eCN9dUwz'?U", "-]'-}dFqF- '8$x<QQx)4]YIss /(EiSc'eMHE|/66MyA0`'{[3r$Fn,-;RqY0:zF-VO,dI0bh{PfEio0s{/9^o?1.#1e,77X`qL", "xK1g_vQ@;Dw%kC1I:sQl;$h'E7q)-f%(5yu=xUx@)-3HTvX.^pG!<-Vh#K!S!3W{h+#.,`cHNe3'N#NPd4|Jk0ed=Ar0bi$c|VTV", "4kA2NHT[BGz,q9ieQ'QGUWvKGy$pq&M NT:|!8nsYo]az!?>@FM{@Izu~Be.*V~j@?5aSg)Bu?REX4}bALS>8JY@`Ev2Ce|'j4.&", "E~')3=Nc'lCCcMnIB)Y4XrazOU)>EcNbY 8m=fnY6.pFP+0'o8ck!2|eYiY;'g/MK@ v$%T).!V^T@F/'D:RKNB=^HU$4slTP'8j", "l>j]{ _^qCYN3^V@P(_'b#`_3Jk(:lL1m0QC7qg~=mSDpOirDC;S:!`/XoEBMjt&^~!I`ApT(<Togm`tHJ}5kY?ta|m^k}<'bY60", "(jJ0k=]lB;uV4V99M2jC=lIOIbbNb'n>X>('!NRp!,'xNKXb85h7gwe^ze`9*)O'[m)l31WJp2H%wouTn#,.c;J[*7/NvR`+lEZ.", "qU'=@r;RVG5QDm.4J,`_rXWMus`{!`&2Ade@g:%v4u:Os?$g6p'T8fMkUD|B3`m@}`XXC;'{DB<L3PN]d&NY]]SsFE)cKJ3oF+hx", "'k&1/g&gq3<cZfkjzG0a|8sYY2s)[z'O&j*/nbs|'S}vOU1fx44&74xr59AN;|-0)ca'7QcpbFWFk&h~HnHuM1T/<b$i>)T]'V%~", "'OX_^j?]aM=@-B?vvG-e}OO=(cHMXX@OS;!1+)]+[vR|xE3HUNc+FLmctM-t*5])H[Ck-6m;Q6%0_*zc |%_0paIwZ?AqpEW=Fh_", "?o*&HxFPr,~*4)':/YOXQ@&6h{'a S_AM&mI)q/`W9y%@T]] 3icseKp-'tMPbx>Fo+u 8wwCvIhd0'{cAz%3(6d/b|x|b_xnIPf", "9vG|9?XQ'VX+9(_U<DuXFV{E+P[I]Ic7lBNXq_d8IuN<rprJ>Aiu-dK0m.4=<5$n'/,[Zne'8A.{k{j=>_WigS{$ 7$'IppxJDVo", "$$X?2t`MF|e-a`#$G6It{@Cuj9Tr!$/z5Lb#5f]zqLec[B$p4n8(awh]'$Gc5mUk(+5'F+Hb6bhaFq'<kdn@^,lkNSicje^C/4.2", "Y_t))v,NGwXmtd%'o@'a#8f%E}_,+`f'#$UmK1@PT@'AWoJ*(5{^?~`* #x>O{C=|H.b@'|Mo SGn8f>Vv'iH({`$M77`;aJ8&@i", "lrDgZ)(#0:I2aQ|H&5^>06Wy[{UO4^&..Jss/p]-zDsT;U3cq[9Dk|2L'2{zyz)m-{@FPCvPq4+'t41L hUqy:[^@!mC]&(M#+uW", "z;*aUpA(S$)t'.V?77egzievc~iB^%*PZ//I,^'7_[U}f/CX1$P3YNj'.zxfSr= ij?PCrk'H}NaKU<I:U6GT~&{vo-hh+J'<GO[", "lC&q&'}]H'fzJ4Ji7x3[$NYx'N~*^kNxhN-0v3KgO'X|mziK'H+i</'d_XDX<#zY|c0i31p?tA/SB'}Y%_%ZDd0y;*ZLI:v Fdd3", "b|~%A-Zah@'Lo.@'J +@ss6A!Q8uM+$T,-zNG3'qTR$Q&rI(N2GyPAX{`hs3dO(F*ocNn?4X78yi^0<`wy>A5{B^7VW'IC$6FEf3", "HXQPine*1RMV{a&|c [;R+'n48kZDKzWn]gnzGMb,y9N8y J~Imbm1A=8ae['#N*jE]2*'|[t:^e@>v[9gH.44v/KB_ )srTIt>{", "'z{31AKnIywy>M[|,gTOT?%Z=&+ s'|]dpouEf'[kK'4M:R7<<~?l3&^'|+;!0j-eQof|S4MT?ZwmW`k-Yyhn?I)t1w4NdD C$cR", "zg0y?gA$y@W('!#}v0a{s!K@v^y0%|n8[Ot<q!Y)OpnHA_y%cYQc<guh@in4xR D>9|stA|wPj'<1Bba 6:Wphs/n+otb QZ'M36", "c7rWy=4hAU>Z3 e.<7t&K1q~<<u:b9'h*>/*'g}'Z)c'mD DoViG/&9r0D'*QvvP.F[8ih[,=_YeT.RPU_Jr=Nmk:/awd|nBwZ?/", "%;}nF?/lH`SxCsQ%wq|HQ!~MBBV@P5'|(EZP(e7hemA/f'J8Y$w)-#g:e/m6hh(Lk99DwDT%`:)pDm+zE>8^Zag`Q*UKFybMbF3b", "'LKC}ETSc#S!u&tp$5MeN,~=fNSUL,2&6nT)Ky'qh:HRa@oxS[!XmC`<k5j.s}M+pY!8uedC9g8MqVOUz2y7iDFk8qI4~QI#[vYI", "^R&`Ax)ru{0IFe88NU=)Ss'A38|P]+VU5|13'tp S~kwT?0ha(HJgC~4FW$Fi,,Q(2fL<tBl-VOA0h'(Nya[r}W'r)Y,D^oBO%j|", "ExxN'O4RqE1|'<V'kYCs<|Tbl'X_g'$?I*[R3L`c}vqQ8>cbT7}deJS*Z9QKT(v)(MxO01$~RM~D=vFHDl$P]aD`'JA42|41yaXA", "$Dw%HQ*nV9>Evmq0OM_ 0Ly?K3fWZd/zni12l,-8,9l{I-x5sSU:hP'oS,*fYd>[|o,yN4<;jF0.7pWc$S$XQ1NUSDgL5$a~&N?r", "VwyETl7*^`)}&Z'aw`/C/p7%dx* euy!9&G=6{IMQy+Y,qv:vbm-s%[Suk{0r'k>hknW.,uDP$L#T0s/bC`T5Wwfo;e'!3`yE<u>", "|ZhEG:CH<{=x<oZWj='?v6='s5OPeHulNx)|R0~2bQ`>!w57'fZ05$y^-0q-5p>B'Zpq2KCixpy(yAIRyk1;-,s#V;:CDqj1Tst:", "!;i!jM2Y*7BigtQ54gDU,Ed+m'q=f!h]P-=jvn04lw%C+k%+:yc'Su/?qEna5lFBP&}JTsG#b/#fLxcv!s?'ic.b^[X,zG%+dJ,8", "t=CFjgUY{AQ]X$2l/>K%=n=`/6W'5=8YN@/*2JQ`M!y^^A5{7^ew+ZCZ|SPl'#'Q]2M/B,B`:qxaXN]&>^C'(i* j  xzX2ml=c0", "<_<O_7EC6`uu`25^T_^x6aoWd'n:j#]IT^jx:{n;GN5#^TVYpHY%g9?a!88s0J1aOwHRHz'?=u`c;| -@Ux'I'~m1l?pQ X; -V~", "3:)~hl}pc FoD?^K/ePt`dahO|q:Qz!UIy_]t<z?E#*{W^pwOY1s'loR(KU~GCy1;{(s#lI9kLv#3a'Kv{hlNv,;oq~:-L.H,>&g", "%mwb)x75YrJ}mkgysDqHlK;E2^TGj~8,b@tJM:O|w_1>/A3IA-i8h?MK&reC~,@5P7Z(sr7}|~X,Z^j%>5q(%|;'1q0*A.pYi-b&", "'7TY0*V%2lI09y[^qcI'Kp$:PsSuo/(A[5Le`-Zm^*F3_-j'vbCo,T'Uno{wr= jOIQm'?CAM,a%yI/BUV1i)fsM$Lh7O`&(^9&^", "_eU3:;v(BG%'XmdA[c5<oQkM)>QcRC&%HRMquEg($m n+i=]JcjP*9{hCpT3Q/ZMB5!'?%T]%qnnOCMx5'+4-)<+ekgNvA_MVw3S", "X`dw<*05tA7MOHfIjb]!TdtPN8r*wd <{L.8`p;f5KO[zLX+zldZA'<+%.7*&Q$V7!IZ/*7_u}pr/pf'cS<M@U {TF1%%;A9zo@e", "ziQP72[6cf+IO(mj2'Sbyb8SW'~'k'f'Ra$xR<EMZFz_h7V);>#R_{Khmmzt~Es8xX=*3;'oGLyHw( Yy%J]#IpW,6YG+;BytBAt", "h&`U:7~}'`&c%)r.3M.0(}`UP.6a*mLo'Z+mvU)0Nq}^2muxrELOKjnp,2euJr%1.bPWUyQ7|s'z_L?$c0nk]b;YG|;pBH(y75+d", "Z0'NhHFr'|fzI*>~~Wc&0`;r{CLla0C;N0m]N?d/v4>-o<Sp>L_gYhfa'SO'wG7ot&~7TV&Kz@h~/1o,c7X|EdtW.SpA5}>sf%'t", "^4d}:7JmR}yPI=6) B|x=hrNd6mY-&1rE@t#v]@npfFcjGD?m-Vq,426tH2Tz5V665W`fuYqX{3vQXf([!0RLBl{d0majQa- ;i7", "`Dg^5A;cq)?r&IG5ByO5!A+-9f6TL=a/,%9z<3M[=':w.jY'c{LLL!(ipk91HT07L1;)=,!=&OM4%eqdQ:gEwU{1xT9i-zNjG?>f", "G*M5usC)SO8[oOJVO '@AsSpuN+oqH3bP/_V}U?[5v%7!eopSCQ%Q~WS8Di(jL% E?IP/#W<#oaeI<SdoHOmNB9!EITJe}EGG|o)", "(Y]NX-hb1N-VTJNY}gV~`GNv3'NFya'0Rh4F+]~Xg=5'0(CpGr8c&^tzl@'YIVJ3,=PX]Y$oV'eBSa,[Mv+,65FX%RfpOb}hx40!", ";C?_u!c9^CR}&.%cJc[u.qm#/C-/;dgogBezP:P4bgZ3f6!!dTRj<+tiNSGrsHF_R88MC()ab<sPA3A9*tWl+EfFDfVkolK;`'[3", "bZ(sJD?TEj=Wb~>|Ka}6CB#F,:*3=vr>RWux4(JSEz!4S!}8>/zl!KG#t~|IJ1Wm^c:YSMbn&|<D*iEi@!4W.myQ.8h<`,R&]?LG", "vb6?M`8,<O%>.Qka[c%CX9kC;5{zVvC<AiwR#8Fu:U?3S'Qx$^/6B~e<x.''#Y@B)yf'P7~z8Np28hotp'+j8'+x(}>:.Y>aAWFq", "kuRe&c&7bzALTo6sxXzF}ceFWp+|P<><[)ShPW1BM2]4@vgI6l99r=ZH>/P+{xuV<9ZY'D{ULLGFX^'7e_vmVthU-#*lHp.d/'Zc", "rAzSwAAfp)JIE`h>b{y)<b:&S[Lg#vDnq^in2hLe E'KQ&jS9'kzrhkY)N$nYS:E>[_CCc2}Tm& RL-,O;Q~gQ>G[5/D_>@k^t7e", "ND0f5wUmAJ-),7c3y5#|O,*x61SB4P2khAIg[O KFNUab/{DVQe]W;EC^k:3r;RrA3I4?`0wDWFa#;J#>d(u(cxuUC}ny-eH52Lq", "*P^-VG3_PDRQM%cQ4|1dVLFi6)@:?4{K1{&1h<{E~Q/<8%,m#ld=??Znj-5>'&5?}JJp~O>$~h3i1eC^ x&5uW]+Z;od!tt${RdL", "mCG|$I{-;mp[_%|`V?):(+le)_mZ[=83;v-%r@4VWyjx,)gi$B4|FB?rf@w@g#MpP#'Mw[YU?}[H}E75)*+lVCJaGnDL+6?`tMD>", " j[uK#<FA='r]R7JUdV$aGL[j;,(/5=UXsh:0lGfgr7X'b&3#t4|-21VM<4?pObVo)Np(O36@Yn@}W&r4kzlw/=;:GneF';W4p/J", "&)KuTK}*k3|d-dC3G{2sDboBB%e&F_sYKI:/1,.9{*6F:sO9-M*@9;{'JMHK=uA<p:eu*;Zw/;Y0XC%Q# Bbl!?R.,wh,<PLE?8n", "7/zAkF=[`t<1#4e-|<v':$F6C5<AeD.+0(tmeC}WPif$h&x^AsB'X_5@Aq4E9/hu'P<.Z8GJ>a,kf%4L2H@ j(LK9'j>1WT_(qUv", "JZuk#|c|PL*6EtS<G&?yip1HbF0i]r=,e+S2o5N?X<IZ&68V4Xh.C<L(0W@`DdAue'%b3krb'wz-n[@i>jqX;IxgXr<85l$?TFQ.", "-LHI%<l&vgyZpnDqeJX|Pxo,f0m93|s>(}`CqANUg!eoG60@'W'eR)Kim]2mJ-s!'~E-!VD$]jT&%fq!M'j3QQf]!Mt$VB=V,@[?", ",' mf+s+,z~Cy]EI1dfE2{P}5ZD}/DHe3jue$1RdD>qKDm<h#'mmiH.MrR6ir<DM5hy/}c5;1(c_dqk#2BjlCyuOGn1jvJLC$RW7", "b VW'Q?@,S';O 'Kv~yDX6SrZf'%DvG')YXC'uOF@RSt9I=f$>Q'8T,2c&&>HYVJ^~gbZ,I0)]EMC(0POy *'D'Vuw]B;?_Ghzk<", "?o63Z&A[7bP3?@<sK~9OIj;*5;:E#8nk$;A8-KzFx~nb#nAdyS/%Ek|>To34%p8nuX!1iYcR#I~nn)KjfaT^y=s5L@:U+Brnfl`*", "#}hO~zI*jw92ndIR$XYR[6cEJ--7VUQQqD0(~Kj={$^?)['+kPPtBS/p=O7}1-hQQaB::i|)H(K)2-WJQE$7t5O&gdL1sE0'_49*", "8v`;EzvSmI!`kQ[3%; F''KcH-S>K'^'^##O%yzQGmCVTBG8+E5di]dW1-v;h/3RpfkCq[>B53kW?.7>#[X|z6u<:f<*F'Wn!tt*", "-3M oVJk:v%~q['}H|K{z*pgeFG+IyCP9[Dk-(&w-G./KJT?B')F8)>Tzp=cx_VA6Qz$H5P]r7n)VNgF*DJ.KVU6l]ZnvVsMoMC#", "=aKH<f1/$mp',gp.8]rC,.C?*DT(87C''0aNA( (IB@a:VlgH)<Zc?s~'PE^j'''5$A.Q['Isd^J:%+%-w9;,OT'Z'-}dih3QsGY", "jk)-&$An:EMW8oaqXVB*L|z8}IS*&_ioYQ{vp,> b!]'c-'W,QKxXj[qdgYP/,~$UFS^b^%'LV&Y5@L*Sx]W]c]@''Q0&sy,5)3/", "tyEU-$< t@BHd5h}6=>8F~39=#$|5UZ<N[t@NPib95dEsh&$>(MiRP`XsEMGsM)z!dYD7%4f;UC{}`Fkx<<[S/fM:`i,$ip%1t&v", "&M[>TX)x6QXP`jrY_1E'S@SL8 vT~|0sH#^2_Uz1T_D,T]a:T1'W'[dlHyShzd+<Jq~`f3VUB_Y5><{Ow9Y|4 WzP~Xyo^#*&^Yh", "1>'K8':`Kmv{TL8;X%UK')DqL?n($w8p5E(Vl>?Bc1ec$C-cpVlM='0G!k# uK)[=FZtPY`1|OcGoiu/e JQaPa6;)1n4M Qm`uP", "xv{Dw.qx[WtY2FTIOAm>VASC{vL'Yx|RW?:+{%jLLt5ysd,LvsJNS_ ';;}'=6YK@,m/wb0u28hZ$.@r`<f:]Y~];})Q$D[}OQX2", "{N6':(le$D#qMo(BSfK_+ uMz#/PC*ouPb(X@-GzvXVbKEwB*E/GCp&:>.,4[C]f)Xk`r<(pX<h9:m!F>ewdL:hxD_@Suu0c;WTH", "XXS-O3.s?PSpm}+XL|Skeo'a?(9Td9Z<5!t?IgSYGsp Iy)$},C.N0) M/F%~F#ui+5*!XdGZ)xkDg'KC&qy|,>_|R2lm*9~,~7C", "BqINd?KL-gVY+P-.(9d>P7@p}Ws7C<aq6Ibsj}^D3jeF@!AGKw'rr}tB@Kr3@Z@Hgw4B0jh'fI)Vf9j$'^_5!,~G-Csk[_,~1S.u", "k+.|frlMM3*Q_GA5,?.;w:M?G,y'Fm$)w@5?1Ux=K){4_r-X,/kyk)'v10)u_:2;'zzxlQhKse4X}kv#r;E]'nz5PZpLflw'C:)a", "uNOta-Qs/sK6YXw*38krbZWiR}Jw;Q%9Vad#eXt}G#}1U(kJJ']3XLo|$9f6YYPnxE2SR:9tEV-=YX8 i1*G*N(9i!qHjE^n43qP", "x0A9/fR{u.-y>Kz7n&Q'E;9LmB3pE$_c@D lC{k[kD'67X2%`}4,-cbUx6xNZvp5]vJ['c{XTJ9$1N@D<jm30kq(JU)(g@~{'{l-", "~zbM^wP=Gh@%cI+9gk|D!C?s;Y^pHL)JQ0PbOH'AT`FEb EMRTmE(}JJ2`QYD&=w,'&I{3c1b`oE5'chEzk'&dc'XmEE3a:FNrM4", ";%4g':Smn^_{XmO`*d}10$V%MClO*}Csk_zJHYS2!uQ`Ij=i8nAgC3ux(KtKXh;C~0B)R;DwYvMj5x@0wHah?lbp^KpO#Ds!?'.#", "mk1(umHO`XXeCNQOR^q)g~QEOa.5f(OErC|I+}k'dLLm4D16T2}jhVj;p4W%F'O{yPE5Dx%>i21bQ(rG*Ep?^9bBLPR!ID;llTex", ".E&I63$gj.,I=hh4.A$C:-9ir{Nf):S.1n)o[%:[$mSk@S0q'vz~|:B4]uzI@J3&eM#BssZi548yA=C^'+/36|k&X'*I7CC=XC}/", "9OmN#L5EQY>I[wr@8u/Dd>npkGFF+mmAVYj(/,%dNoQm {<<8tt+?'C_pS:ADJd2eP@TX4ZW5].|,3OFHhPoLQ-9v]$2rE7nj0$B", "Sf>bj~7O@`'DX9bF7nh'x1?;bN>wMGD[Yt{&l6 RDmupMzdoLN<Z=NQn@a8Tpu.z>_MrhO&*>>D0uH;;3qTnO;+)Vl';c#{rr.(X", ",1DTIy)o%A'qIC~G,%Tt4+ 2)O:L>)P33$N3dTuv'{UcwLjjf=FR+V$,H~GS5IE0WtYI,V&5g>X4~wy'{0d5'XX6pLx`EspOm;:Q", "?oCY8|3+]9q96R8/^aGJ(O;;)OI&<Zk.'#<|AD'pJmT,'JMR$`S%p>X7'So'P?mi'6<03x=cqV$faIA_MDDd6rsI7y@vRJ-Ec</m", "wD.S8m?_[f:rwK?>tP39;6us^(fG8(5)r=Z~Kjc>E]ZQ>BSyXuKgd7|z'kT`]n&6@X})'^gTc^5k)A4Em:.'6'nzk8mt95_(1$f-", "yf<^`drXb|o9<)G36]mVe(/!sM9MpDw)pA;:}SJ;#B.WJ'I}X>5G30,u97gC8b T+Hw'vX+Fx|*JT<|<N|[<8iUAZgL.3v:PLq|)", "jL?HV?=k0M/N_k=HRK<$S=vXN@sGet$$*t[5s&c8*K`4%kp^.Ir{z>@f^B{&$z')rtOpjyN7Ks{@k8!gX6FbQgzmJ5]bc[G^jsls", "T9P4Uxnl=]bax=I>slJabvJ:E,#sfqL}-9wnoL40/#)mC3I/'E0p=,*Q>l9c'<`<<ozUHQC-i'-?4gGx}X.DDP}F[/f,r?,ts5>/", "u&{ryIuA`Qx|'n'dD_lCo+sZ^d1px/]QiCl B'MIMVzgx<Gb`W1s/IZsVxpxmq@Lw?OW_MilD=zVc$c_}'D}>[(~u H@FAmesYZv", "UFeb,i3L^!mU=%Vmx%=Ob_R@|$r05]q m}O_[{z/e2,mJd{;`6U-++@vFBS'HU`-w6y&JK(OD?##K]jtb^0L)177#J*::swuen6:", "Y;Ll/z=rQ~DWv`'*t 0Ia9X=M'+BjJn4L&rc:~R9CFKGr{1sd'eaP_?NfrFugJ9'48PmKSh=r~vxrg$V; +$yo/!Av>{GV[U>c9~", "|I(,EO.i:+W_YRJ?U'Qzy'DLTY[fIPYJwa7R}]y.inNQM.'}j>;8}(=;{-F#U aEb%Cb{>]jct cH/`liET!@>y9nB0tFrlSj4lO", "/92EZBh]<2SX(U'qBL'J>s2i,pe.H.u7;Q5kl?oO)<2{ItFJW|#[zSqV903z#=xI!)!'%1`Db@CeF)F-I=b.WK~:#lnQC]~IxuaW", ":Dqal)Yfp4maXz`=PsB2k:L]'f-#lE,%I:uq[bp-r#%;ot{k::<_w@O-W]>foo%mJAv>zM_}%!tR{2HW86UMlNaSyeWFH;+e8a8[", "tVqP1J]`T?$|=kLC6iBA.U;#GbyQkq+zub,'Z<MqS5tH!8|b)zZ/QK<-FM%ZFp$odUc4sn.g![e'q_(l4mn5678V1f!*y]35>eS5", "{!&|Nfh.@pW_T`$ =T$UBkBo@g|V~*f!p)[u;*Q2fbYV`8a3UV3-2we7s9(R>MWO['jZ&4},sUjDPK;Y}-;1D%grs(v[A/U3.?%j", "a}<9cH/YGx>^/)RR=R0B=HZ7RP;A~<exQ&,jQLkN@68TyYJ`)7ji'e4.}G0k~GW^=&}LJLy'Sj`3D+A}*DR&LpfdZo&'/`O&5Z z", "6/zCAXIu&J8kF}?QUA%&14h6.4u>H2hyEr0^DW+R%jVTSp=9yDryd,=a-a#E~ta6b|lClnGasJmb7,RlkWF3TL9~4e#nB(/R&a?@", "39s:}jj`Ua;soLI9d#rf0s_iuxU(]Mh3FR@$}k3Hkfh#Ty]-.yjyh|(!;Sl4IyO*i+4RXo|0'R<UNCYJ(t6&T`B?q6uN'EgReP $", "@#$nK,*GiU&v<_L:}9^ck^z)~lutUt]y'wgM}6W~]JYqTGP59:A#0S9P'H@6Eia1WXeM}FrT3]'@~yPF<f{_)MmR=l#)`5Ut5;No", "-r1uyip'T,(^L6u0NZgXA_s.dl{(Z<H'b!S!fZ3/C'XRY?rC%zTW`iS$'A](T7>9GMo|_wXNED)ZW'<>odnWl#8 R>r>F1cn)icU", "&5fzb[@sA^LN{b'R=Gxuu'D,;PR0%[YKQ5jP.AWr9:D42y'RR.AaJj-:*f>Iiq'|4*:i~85q6>V$*r^!BdlX!vglsO.ndkRK!d2Z", "BUJ'{@dMox=&[/HUwj/%I0('@K'{z>mLv%RenTvOv1'vX'4HYU< xK|I*4g!_4W0M@5'@@qi[l?{|5}A7*CX7'+Fu+/GqKmudjmA", "m~zB}9j}'>J10OGLlz=0AjN'zdPfws@gZN|+cX?oPqbn!Jxh:,NcK}]l{aqlR(>9 '`m!A[7.*_MV0`;-Wmf@Zmb}byW0.Z[0/I'", "CI'1Fso:Y1]NNXa2!^/}PN-H'z}z(:&k*xJ9dY?G4kt2,'huU9''{K[P:ZiQK{3./S>kl3'j1Hw)':!'8p[&.$Zq,Q3O=u'$2)5p", "dEA2{:iTQ5(Qwb!s:X}cEE'Q26pM=u0y`C0#W:Hn<4?*?v#f.E)5{#[7Sa[wzc?nwLzI&@I$.v>Y$>.VXw9:vW*'d^8hFmfa%i7(", "!ZGz9q{t'f>'zQg[;1.(JmW[S$'PpwG;N(q6S94n]/~sHNoD>)eAjEA'-*r;(fsq:UvV+^6up{q&y iZ-H8L;%ll=XP`#5@00ZRb", "-*1&@Mp&[v_@$3?<0l9&_!7~)9W2wvNB!wV4~Hv~aCIc?|g0@}C*j?MXcOyL&sX.8k0VH[w#K(FFXz~-9JDUm{G7 MF 70%n9)P-", "d]W@$P/OeX4'7'gAwqlU2=b`m('5c(ji:l=8fj.8&K:j!7:Bi+vet![m]?.AaqTLo!w8wK4TM!O0~W8[c(|R:?F_7v6aKRk'_mh;", "D~*6fIS2ym13!K'#' D7+K&B!~XOi[7'i.#~W8enrxUdp%l!,h'HXDX&UoM/T}',m u>%1n%k97GLnR<^hu3Lzb^)~*t6|al'u^t", "Z_(T'*q$m/V%)OWYWabCL[i6qXH8;0Y}fdYks!^2``VNoELu|n>tOI6* I/5<XMMtRBT9hhH$82{6u/p~FTtIJ2x~?7Y_]]b2%1d", "E)LprQh?_'5R%1k]F+Gs(:@Ac]){VeEwQw)PVSy]KY9q8{yn8%:yx&&~:TI%@ oC%B$EB'm1EqlTf(nL`u'~{_.k|cc0Nu'z*M2 ", "]#|iTlvDd@I?7h4O7}rS/0M{:dy6&JKN,@DR?tK4Zaj2)4G?5D0R@)?{XJ~]}a)az.bd#IpLOq,]ECbHkbCgCak7cALw7ITOkAV4", "UK%*jF='8`08>&m&z'i@LFEOb*U+'Ta&X)H&?a+mv{w4/'{A~sI?.pSs?7agbFNO0N&6P'mL}xV}mPvxFaAB b+cI<f*#/W6<R5~", "}|p2w77VnDNtY=;>m&V:xl:D?]'xEWs6EHP7na=T@MaWKZ<eU]v8iSJ 2aTGX;RiQ'|ZC$Jq2Df%vP=)858=!(,ssi'a^_,Zaa8n", "$7RccSgz9L%7Bt$c4*NQ5~['+a@1>D;JB!t;4OWmpqX)pQ7WLWXO=gd~wYfd$B=''t'E30N/M/-mb&,fU2[d51hA.bMXho)BUVFo", "z-#*M{=qw{Ug+w4?<S6&@KfR1,YYX|v~'8`Q*dyW2?7Qfm*7!LOkv'~%'vSmn?rrY's'o22(gJnEmw<4j -}.Lbr,+'x]uwH'e?X", "y%07Ah#ciC1bhbb0I[j+X_U9A5]V`'8(,bwv+C9PrY>3I)`%em~pP~#|'Sv#qDiy%Lzb?,X97r<O/j'UR]UDt'f,dbT5Hrq11/)Q", "ex6L^hw*cK_D(8|a9;YEYckz76{R'gz$*n'#T'{mOh.^%Gvr:;^[S<zwY:p^,OAaV=l*^OcLt'LM=/OH<#Co'<-G#_6v!6|TM>^)", "{.Km@bG|<'g}H-?3z2*HJEZb?)Y!ZQyIA?gJS#IE^lhGlIt[g,p!3Cv<(GK.%>;_JGA}4,L,}ZuQ0h&qqFgG'~<GT{WxV%Ey ,%E", "):X,Hx9FQ%IUEI;2D{e._Nf'Vzp( PK3['Of{x+%LK;~is-q--xmGPsUA<HvuhD:fRVq^A!`? e4'K8~GJnkWNrV?C~7;K&<:bp)", "bp.E-)'=l%r_T#Oa3,g/4W;3U'9hY<^xA05W.c4'o=m9aB]IK9NH7=W =K9bkhxHY',UG=<4jRY]<QV9N'n:Y'<,h^L#.hJpj}z$", "&M;.%'fg5YW<6;.vU?N,CQhS-_U5|C5c+Cl*k/6`[;sL_,5}{N|a M5G`#*U4:5fUo&1D3gqK815Wq^[Im^4W[h^|&L&d<VS'&~=", "t0:'B%Lx)&lD~ARr+hJfM_rsXA&,CP4Ik#N.npP<n^wP9hS-/{|F^S,/uTEuYtMw{jQ336c&-]{E%5JX-!DLb0PEyBF% C%+|l@i", "-O`kt<aYe5GNGOA} Gf ~fGOVE447gc['O~E`?2fnNZAUK;Gv=EIH<S17yt0sYi:Y'e@hL!wLZRMSdLpjDT<rQK#''Xy?W{(q)8.", "'_N3+(<Wb'^UY''=7|;?(`yqWshahEhat}W[oepv(seU~fFyR'N_N-.9>UlpUo*)2E<1;lrz7D4;@+Fx@?29i d4Fz_hr16|0=G<", "$FaTKz=SofSdYqR15n)YOL&'3t{T_uP?IG-;I[zMMlmR_g1O3<`-0wxVEn[#j;lb1#~X[VcZZ'PXYP8Dh`X j'U3BC]r8Mxk1Z[-", "m,CB!sN'75('S:/3y^i; H1Dh~aT.~?b2OB,+od{}$SZ!HbNu2=v*VpzGS_,SVTI#1#2p`*QBt%d'EC=_O,&OK1y<.qp0Kxba{c#", "pX[Rh#JPJj2!M.l_O J*(C192CJ?6`RS{nMHcg?)/w&,GEzb3*&Ln6yxx,$9,[-W6^px,*29Zd'1W~m'9/J~]h4ja,ZS+X6G:hOc", ":k8##[f0m/dbP[AbkZ,Omx=+dUcf1o~/bem`dpbjE9y~y&b;O:2AKm@`z*v-GllW|*'AnX|S<C(Uiz#K6,N-^)v4tTNOc&(`D>T$", "|.y$8(+od[=s_@iZ<vor0W%ss>2Q}^1Hs<*h@pzC;Z4A,VKj/<;Ga]lv4cxH9'y_Bt|WaFV'=X!&j5h$|s{tk.l(?=bez`9>Tn-~", ":+bIc'|#@tNmJ2h*) /WFi,>)Tm6OuV1/As]7>#>8;#D@*V.X8{WTp`'d+ BrPj:oLZSQ^;b[/~zj0nX0s}I+[qlMhll.jP8U*D7", "/Ej{gf+}4}q4wd@DrR=b/NTWrfw;Lwd'$}gr'<cu'L<{UxpmvXKnt+zbAyZ,9o].ljOIf>Oh!A0JPl0>g-,w:eI}X+3}X]hh=(f,", "3Qs`.4 #@irB+P_xJlY,J3G#=t'iS#<BaK`y>'f)gb.FhX*6bgbN*Qw|7O:'O'Y]YK:p>-Jy$wSx*L`mE5SDs6ao{ILI'y7LqY,U", "zo/,z&5sbBS=*_IZ*}2im*DmK>OA,9v?3.,<wNE|p!qc>`I{WmgO6z+$G+'+7ddpsOS-(932yUq|9dSp)51G<[8ua5(vo3C)`MRE", "IxPbZNNS6'DQ9_ED1JdRx4Laj72)u?PVZ)qN'.vS)8nz`{'@FJ;61(`H)/5Jno'v'8X;$Rht7'}0B<f;cUbz(/h'Z%+N0Yl~nb?z", "qM-5##/vA'RSPY3Ew6Tupor?S ERNxzA9,+Y-2:)l8W!E2cQo'E>%unW-Oq'|hW~9oP(_]/R((+o#b^[AKXH4b6 4H2;Q}2NbCg0", "N0>FMPu&|y,3quw'5v'[d9p$3r.+#W3rbGe|j9V_}zp*?d,72`7trMfI!9YbR3JslOd)O3XeKRR-DnK9VKwLl_bP4@KJ#8$En9A|", "2OQf fhk'x'Au_+gFG&R@{H(v`Uj/(YT(RC68Udk22gv{1[DmFsA'wd%N8V&H1('}R3I'~%`X<.%_'.'0-AfcO'j''9;lA`xM CB", "cO^ze7Ky[MaZ[1]_0/u5n2'^tSEA9hgn>4rF0Sc$ugWYkf9?+Gh@{e<SC[d,3i*zb|)7P?Q7vmr[pgFRXe.(:;y8h'Y%wkNY3J<$", "<b;SNr'G&^.U.r4~~aMck[-bKPp5o$jc#/u8dwH{,@XJ:,3K@2ge^K/W_jag_m_+Wz!r;.ewRmce`}W]%yxZ0c&I(*%h?8osJpa>", "UK39t2>PfWI!qp[{fBjM(K5my|RwAn`!$376'<'EqsDU`_<f2U+Z9)',s@Hh#h(?^_BX7Yv6_AON|ld|<*#h*{|+3%=!wQ]e>+Uy", " nw}AKsqfy;AH'9){sAV}bCFDw4KRq2`-k(Hsp-I_V]Wa,'E=GvXwnv&]k?_~$7kz$ui'}Sc{HKd;L'57_G*6W_BDALEJ20-kZnJ", "zb:~;Vq'@CZI3='@krrrrP]rT`r#;W3Rc?&N9]@)rjt;4(]V=:K|r1mMcg=}Dp+KgA-#Ngx5<5E'|@'%qDG`=--C3Xe'N](>y&K9", "a4S<9Kjzehl=ZV '2?cUC~m5v>KEBO.MG5Kh_GU!#PZ6l'0Y'ycPb#m)fdzXU=WB2MN*#%10zF4nhK+c4%}U02c<Gvt'56>|!C^_", "Y9:WTNKsOq'`:n>]jf(&g]>K:0fb1< Q%k+5Sexpx3nmM>%mmG4gJ')BX!`''il~CA+0G'R.#zPRO~:('>km9mb7%(a^g<^I>Qa*", "[>;GWP2'leD./?n>W)%i+>952,F&n#$'/!:xTfT(hEEErO>AQ`->`zajb}]PDdWxPhWXG,Eia>Dd<|'5WXM*n'zRpR*Jtk$zR4?^", "p/Df5qoc@($4|JO0Rh.DB'bTg'('43/#]E/u`.'[%t1L5}y65n!xob@rR,wQz|EGeO$Lb!]ejb_4M<^WNA '~iVMan3nfyX(HD?.", ")'^=N;G'/Cw$ecG/r.jSoK3HEC;H#{.MTv19~$JiQ>*LPP~a(^AK.0y*{JHyV&p=zD[F6m(?.mMg9|n`%bL[KRTPRJOLY-v}:R,y", "|J5'^=f;c/L<T<TD/n-eEJI>QvT}6/wx.:Jz<N[i=^K]'!e1%h;o/s[!j}nAaqP-eL'lX=$Q_,.=3CgC%t5K`O7uZB%J:FFS7p<p", "%QX@qOcvXkrzM8x>WYK&fi:-9f$2pqq4qd9^z]'zE_9sU)LwpS']H/k%TGV*'+6Ddci-$&>VmuPjRPSvl3up_f_u`di#it4!MT){", "oh>gG^D'U)7%8{Yj]<H8DNa]Z+lz$oE1T=K<Nnp+`{mL3oM~M;Sh_:rUuYia.sB$J.[@9BH0L6qUAiHRwkL]YVf@r'Db:kx$i [M", "wFSqF:XIG/xxW=+a'&l|@diQIX<8y;PhZFONR86o0lB[2~'XJ'-tthZ[-IC?^''!Is<2:D`HGl2M(t!S~oZZWED'BRW'&'r{2G%p", "t^>wNvMQx%7ZhY:'Orq^J@&5R)3!$yE(w1z>lm<how:sz Sv^f,J.N7iw.mS-S2~9w.'t7bH9t4ZWkbSSN5AY!V'?^V#8Id_P,G4", "YW&5QYXEz0{O?pktH$*G-7[] IdZO7tnO1P G^|mYE)2]nQXf*w*o)jE8lq%?I{.peI-{KmE-4?knr~/;r:Ysb;8F0hmgD>XH$+t", "I'*8G#'*!2_TU8wXQ*pbD@[Cg+yS'cX,])V^c9`[OchJ%8$|Z% `cn[=SvF|~BE{9*0IBeFEw~*z4p,b;McfS3H)'s@D'|n$b%T@", "x9#:{Rk^uyi:g'F;6dl0L>4PdIjCjX'>AQ_ `TyfK2D0on/eB'ZC>?{3=7>0x$?RNLW[<m<X$rQ8oPFA,c('f*--)ib)KH|E=Rp]", "pndR|cLJp&^F(V2)J''k%2:H.w8I}RBZwJeouf;bXAyPBsKLE70*)?jbsE *:R5JbV{~>|.^hH~u5]b`T6hTq$<8`lvOyH{*wB@C", "m9)'a%F')3K$=ZVl;I{DujWZJxo-pVXjS).xYTJ<xG@Qighjrq+.LU@.^5wOS*<xZ.n <leg s^A|2}GvH2!_UKTr2]92:%@V7tR", "=-o+)tI<mLq[@Z8*n.!Hf?cM9k[5rmjIFiFl4DUXzv42U1y C}9Bn9Y%)Zz;Ghvxp5O6@Q0 E]zcW+Fa(d[3Qd]tJF#k%}}@gn3)", "/GFQ,AvUe5HYW+*'(CCp{-rv0##:3T^wVE9o?K_b.G[|yXQ3}vQ|'08S5o>*_ G[(Ejge|&p'ah>Z*ucw0'X^7RzQ,?'~Dp?A)IH", "MmA;r./(Pe|tgNtr|9>7[)8j_w:84soJ-S! '(IgC,RgaoVsat'P;%p/o1vo.^UO9uCJrc%'4/1uSY29urMdygPmTn_dyZ@42dSn", "D'0Q00dc?n__85JMV&~lU)i7,iRW*D_p- Zm@1~G^.YI>3~PDO7,Y2~oEFT<_w6 fPuW,GW~'FK.izim`Rj5+#'Vm5{zYPNJoxF0", "I'J+kYeH!.HdS*:DA_Lw(_Vs,[1*GioXIU%o+y(iI>qZh>e//bG^Pe''8iHdCt?M<]{//gcN@s*@bDma~y=d,tmngRpz9!@q;x!T", "awER>%lf4QZ!U.FREe[!6NaJF'%izx7Jr!_iCkoCNr~1j%g(8V|QhG8|?wD+Zq&@6i$nEu'P <raHDSPNk,8_,YU>6Uj)#6-<_1L", "Ygd[UA<>~1]N[2g,ftAPKBZ}RW:$bG)p-xxm?ugL0<^$.z>_m4JZ'W-XXyKZ4k6gZU`Za3Zxg'z66jVkXUX>C=e.]1GP*I_(#[/.", "T>B2'q>?^WWww+Gk,cCDLC9<Tk<I?[RX+=w#QDoX>5]S8R%;l[vWse3o45|H`ghPFQ=bOSqd,'hmhcm)^q`dixq)}'YX& ~~{l|K", "It^35B-v>u6q2FG!9z%0~fEtmt''Bf+ZUw)d[K)9:Gtmk;m^/=(mD_u]DCQ)0c`$9}_r=w}J1cux'9w'IieKn#5=}pSVE6M$Pjzw", "]Qi,<C./-wvi72i3at&G[nSoIz}g8PA[A}?^ 15gG0R2nHnlPQ#VxYdJa},z]!rPYhO`l4oCNR@Xih/UoGUa8:u)W]rHUx_ksMs.", "Xy-QU5@)Y_`io'+qj6eE- ]S^BYqr7Mt<NeacsG#?-eTEt>qo_Wo'UlOc@$'*+y+lm/b|#2+G<B*/W/;#UGyHVh{hk6:ftVR9 7 ", "7LhWyN(;j%o'yuY{mr*-HFtrsA/ikX$!e}jorg=WQv5`9;l@|#`0edf3+nZrAp[GV:I%Xm=JJgZ%cWI%-7)<Pd-xt~*R&</Gd.c$", "g:Z5[k+jH9TXZGs.?r+Ve=52&&>:8od@+]9(YIQ,#P0d8{caK7Iu6JYw4I_M`m2Ov'5c]#WM12x*(r#Bw}Q=IJ_.`=29oOw'*C_,", "md{DldLY^R=0PI!;At'2CqDvm:'x+ha)J;FGnAfC}b5OS73=)bod7##+F&]bVE_cICf'W`@Qy>h,xgFHW'6dI@NMMaw=H,zU!P}q", "p`i'#E1.kIrJ*%&|)O.u!Z~Y4uL-SJOI3hSnshdYXTmm}! 7:*pw2/:8L6Um=FvlN5?&A)GBQz%'w&>aJSf>fQ:JNTTqoe;T.zqy", "iDBrZ)K!D3F[.k4IjF,w8Lm8y=,5vV'J3$Ze3;7C!JPS*3sbXavdUqRd6;NdMfvQmKw=_n5?RhlXQS(+$9Xi2/c|a~ j-f-'!i?B", ")_UO#gF/vn1'|AX7j1(W1Vm_hF,;+[~Hu}YRgD1+&LDu2jk264J6Y;sTZ@O'?q)N6)DM.C.wa2MK>'OG$bF*Z?hUQJs[R*d*g?|h", "OfkWp2uT74dU=9u$)9i4q`A[HY?%y@_^_bvI?8{Ert1C'#<^%5'`g3  3cMCW<ta] Ebzu: o_';/a`:TBJ>Ld:0qR(i<Q 9%'gt", "@a<RnY5jxU<rtBbze'M3oPYkm)p<Om5&$:)y!'vZ2@}[i%Et0H}BL4E$@`9=s>n{''@UgLQ[pHJpv:y$}>F~ePM)'U-4R8zcW'Gc", "e&T+r%318T[7G>z<NO]e{mLYE-vd)sc2$hP9N[b95)_Lis8{Yfqve[0!w=%*r'3-'C}tpmDw's/4yKgG&z>UIrh<~kh&q[ C!d|'", "+M-88q *Rt4s,?Pew__4g=--cuK5:/;R&n9nO))6h6&8`1t6{E_.=~D'Fks,a'n`C!'a691xdd~_97qSAV]y1!%k!I*<CXG#N2(x", "i~l6B'fwM1$Mr$lp)!vyoReGOW8)f%bdKWMzr)gN3q7zOM}R$GZK|ze8gW1%HNFguVO2)[ Q'w.Y9[NYxc3n6R@P]&(m4,[fO_{H", "{]@:>!+EF<''HD.3,kt>HkQ>sq1wuOgIuv/u~5p''##~NfBAaj%/&?S&(*+/x]TAjRb/T=cl72R6zwkR#|6Po<+ZM/16@tek;3O`", "b&-Tw(j,m+swo+rWRCiQxI'vz:C'&N]OiWeDPIoAjIX/h7M.n{tG)SYcrG4I?R(W1XMyvjup-hJ[CS-4 kU3-DYpe(PM4sdzxXSY", ",:C_@E+D;R owl<QT'tzDS0JL!Qk+24y'PwYS[f/z&1z1B'HCp#`EAUswIU}Z2FX+Q,Py#00;L?3a_>5Uvz~'yL*^!%nSzGa##-~", "7ojA7dE^Q>%MO~Om''$pIY15s?/e;my'rd$((P0ad68<p7<)qPr#ysyT5)Yfm-V-{3%4TmNo$Q7mRUBz}IVVZjtc<qn1J'3xY~J%", "{o?_5,2lw2$k:4.+$Y|Hp3/'N~jkWxR9!O+N-(tF6$j5S'R-m>{a.xzI<1giF>PYTsIQ_G>K@'>_<Rgq8+8s zTcKFK4vS4/{SLN", "]'fIIL>C^[jGE70C3Gc'Mp3=xx~'gx5c~=h&/ok]FjC}l;UCaj?Drg'e 0_5[+Fo:u.z'-}U#x'x|X (+d_kpV0SQ|}XV&o O~WE", "dud,<*z@*{9#x=bG2Vx-G((dmPgQ.*O?!rNfUSr1'lPb'e9r{x'D,_UYP8U''#+oO}s'KD|qPBD>nJ#o:!*k{.8q?1dB_M'<x(g.", "e,cmYI/68(DOyj}&'0n?pf[FNR>1JW}E/Yr!8Ex+R:)}6/qGL..byvj:eN'l7sS5_E9iv06iC^+iB}zLb+;xdfE6&&bR?,@gR7g?", "e{Evuay 3bxl{eIRTN^'oTkeOG[Lv[ tSx|U[Ks]cW7$K'?Ii=e'0M.RX-iH6<L=]NnBl_Vx_k;'/*]1G?P*%7y/'=or&21=hH'D", "6;j>jx8[*I#<_Hoo32B 5hQ5v#bA*m''VTSg[Hr^{Lz*zWaFSu-Q`zh@.]iq_m/@GMx^TG&n7U*pDThE[P4N AtEGZTC310KYsv#", "QS/aH>x+L;+frF'O*'<gXd}or['J9r_8#+'6(-HQ3{}z6EZNthYl`/-!Fa$77wE5s,GwzD%tB.l!4E;ZoOeU'r]mq#T(7):+r|(Q", "UX6YH)Ih)>CG~8u2V$mtwm?r21 -`bvMH>a=Q}Zf8<$b-[zP1i;-w;]/P&UEL~,#@09~v5OQ8ehA0:H07V'AE+0)SMEUYnSq98$G", "i{>dY4If_D'xZG$!'HfxpZ)U3pDH]wLZ78R><#S^Zwpb6H6$j]W>gk1.q9Jrxz{4$dk[;MX-''iWE(5`V0*X^oQO'Y@dg$XOv|DY", "Tf9 }--_')2?epeQMysfr{?#:f180,W!{q=!-~!gTz'l36do>t(?8|4G1LK_pEMZ$#nXEmv#bp:8fVw{hsIZ'YV6o?Wk]adELrJ^", "q%JSoRe@H`;n[oD!C=[-zn}z Fal68{a8H!^1KJT(RV{@~sIz/tTZ:+whw[zh8RkXRN8xjEJ(gl-e6`RXIT3{@|,cX'tY0`@NV9$", "hoy$^a`qQeHp= {3f(B=!CSq(wg;o'oM`.ZN&'&G~5p!D5TgpBcCN[7Z_d'Bz4{im<p3,>8(nPDzKko;qD'da9yY'srjXDSj_#lq", "Os#cU`?^zr$j)o0ru?@E3u;XETdZ2P1yDo;/Rn|Pz6fx9C,8k3;pi]n*HO$@,CwIy]W`Rv'$'u-o(9&]+S;Zn)fO$~TG[@ h<Gcp", "`VWt/O2QmYtP.?16 l;Oxu'0v_7`&d;B/%a_v,N'k`b}}w&bO;[Z6BDv'O'.R4y]-p,c?;4MUy60b;MdzgM6+Mp7pz&_@~x!SVrq", ",{R!F'LL6+F!r's|KFP}:X2!vZ.m,Yy5&q z,aT'</sl/o@IU|^4JN!p84'95 na%wg0Q|*s'4]4+)owMRRv-:l^Z|H~o|I'vgZ,", "q9QC@ljUG^#I.JVxM.'HLzsDIr*G7W]A5Ah!V8ysb|iy}eH7T,Wh/,UgANVtB#'=b_/h57355X?e_H@n?N]^Ic8.8*KrvCC.dMmu", "F1a<y~5-!''Um'@t~pc}in)Ok[ijsbZ}>`!aQ]h+:ckv%itg4PfL4DmRp2(z~^B~<* P/>}R?'_d`PQh!o[ipTGm=3hO-u:Z~0Vd", "?TM%Pz+P8'0T[Q-l'!2;mX<h%NP/%NrdiTfy2~a1|q<Re`m+=O:Ehhv8/H5`*7Npz~{4%#{{QB?)A'q1ji;|'|])ttO;'y~il?gp", ",Ouu!e`I36=',iBc@7[%7:!{Q+O-L88MLAva 35meVi8#Iag|8`>0'BY7$U%_B|nS* vqs3T`*AaDm7$,P@atd?Q%d'X'}6wK>4M", "01'H?'NpZy%&@R.n{+V}ZXJJ/H.ki=uk<=@v/b[A nYp|F%OI-FDRP;@-;I;!D #}nBa; m<%GuXJ8G5m02'ReTqO+P &GmsI@op", "H!E=!@]oh?-g{v;k?vOb;'`P-'.d-GOo=&Mb(}(_XK.zrh&$G [V6,@mK(7)6ET`';B4#3k!`d5^@XU.aZYZdJKi[9)e`F1vV`xa", "P6=`#=-_UPV&smp5E`-0}nMbiU?9/;,*kRbD&;s1dO0vw^cIen*B3%C/p+8T2!w,%L{!pw'a5m*>x}>j$8co+H%Y!oBPgBdB.;:9", "%m]q*Cj!;'FplkZ8n7ev%N^pUrLN~])}>M'i3~@wLc8~+?yFd^h_^5O9q?S=;`B' sCw@={6WXs{N>>Y;r>'IK=cIw}#6=$HF=dx", ")eJ6}^^c*v2%T4_TWF,?]'6 'B5rY9nU#*#*P'U|zd3f'50*,+8+hi!V]sRgXfkw7RW8eH2%`[a'|5S>zB{x [6:Z0bWv:C^8Vgp", "p_^WAz3'L^z>Ec'-/MW9_(s@i_JJM_eea+V1jbGn)9Hz>_S(vl5rSu$~lJ3NpDre9YP:x1pim@&:B*4WB1Hlnis*mi436;o)C=Kp", "c^|@^ZVP0JD_eE$)lRs+X=B'`w!Pz`Q1~]**6MWGjE<E)5!g6w4'`TGHaWp*<#gfpgzNsiB|I9!G+3cH:OGa'r]#Feq:%K'q<W'N", "AT/I.|g'((7CBtvu^8x_I^R66OmY!,Ddj$!{iSf6e-mg@L_t:b)|,Z`Fh!lYZryJS(B<wGQEN0m,,i?]|>We!.{o756tvlR4Vsq2", "D{wdRC$=v'ReU|>Vuoe|.V.hg'A/z<&y:/><30X:-L~jGe7k2Mz}BWhZwAl%MYLTlCL<29*VW'C3V}S2cVR'r+2gCsI{YK9{f~s>", "'?Jr<C0ZU'r/z'q@*66JwA3hTKO%CaYtoab_uaL?V]AwSZWrJXNVfRc:` xfK(`fQEvYUl;fw(2bA&Z3q4>kkMZ}'kBWAAhWq'xZ", "9'6fCiDCpI<5J%S>ubE^'FR_;}ZX1@r^zEhzTg#~s%*}'{hp[^hTbT[+u]q&74rI_44+{kRM~8.KA84MwYX;Ge2i^6<E6iTlx%#-", "''VOq;M{ a'pYOxTe*y2pfcVq:Hq|6[Jw'zVKd K68Wi'4mEr(bC0i3RN2NnuZ)tyD6*Cx9qU4=Y}zX3O$2N&KwgBHAj4m!yS|'g", "bCyj{ihuLz9Hoc9>k2MW'mL,%JiXS(Fh)f&J+RpV:B`&zalfhlX;pq]_RF4UgUiW`t!?S'TvJ>1l2g$!%NV9.ScX7hdiu-pPih1R", "f@dUeI?Yx4H'75o;=n%Cc@O^j}2^L'R'q^SUa3RZH 8>usU$-,6uXJH^,QmaKajvP$]G3 }|'qd'sf$;n9*%'>0(VOA14FC':,.*", "}ze'N3G{.%=_hUdT`z_pO,+SWu+!'ki7lGagH@Q{?]a'PKz`ZF )wC.j!uf',(O(P2'9?)envO5Ix$?w]cia@Yc`eA(@W}(''[E[", ":e;uvz9@3>m-,!O E)v'gx}:fAwd3>V_@Iz-X9w$4N/h Lm0m~#@%+ T6g~:jC{Ew<MkE|'&oQYLVIfez6]n7AttA^+0ntE-ELD/", "qgYI90;g*8DtUrIG[ndGY*=bEXz5zla*p~<Lb:`G[@.uC/*uV>t1f0<Ircw]]:t]'w#,h}vHS**GpNm&J_aM0h;UA(%-g,W($?Cw", "@y}'OmyeJT]toQzqVpu~'XQ52&iBQjUN<*#/.W$qY'TA4<vBli3_}YNa3]G/Xg4X>DG}s68qnC_)va?'Q@(LtyI{@t'uxzYf|(lt", "f&beG(i@gG/!V(dmshn)]]JWyc,^S$4QCv1[b *oeCs;2l.TY!jNq5!XoOy'OvqBidve`vV*E([]IS.F?mu>&6 D.N?MJa,1:RE@", "/e6cMa4>dF>,'.3RUFr#;A(sZQ8:R36Q9U'Syu^7}f5id'5g`)HS6x)I*(/EK2Z3ODe]Op`K'ah{9D0k/pZ?AEhGU](@4;Yj<]_b", "Ieh%Lim/4s=mKvZCG}EW^=4]D?i}x>!zrA$4@Hw#$,4,JZc7tJi@lO*_j~$I U..[J~fxX;^o'W{;'M/'~Mhym=ZnA'H?C^ewyku", "ELqukM_kI< sap='D5f<J^bA<Y:w;*D=n0b`W#:$ [|7J^tsa;rj;|HLabM=0DGjdEAJN7J+7@ 4nzw^o-2HwcB%|3{.:8mab=aD", "+ai_-$|y'xek91C,!F:01z.<Cr2<_MTk=j;UW{FQ(.W:+b4'U'fmqd~d5Tv(5H&'8<!x7fw-xL/fU'}//,PD%d'W02!]U~U[xZ#K", "46e;~|'z.,:b0QVqBk;<!O'FCo8{$ZF'813q]'zc>m~+5]D.L/CdBxZE]o_FgXGgy^N%gV??#!,!H[I/>q5L3lEj*vN *J]6EZ5?", "k?b'D/f`arF}'z)K,xypb,I;V,^=YB2~Y9wj<EQY4QB| .PHmC9Mo{Uu|7/Zqe9td|o-T_YJz!^f3T'iuutqF@EwD}~-IF($JPFU", "T`!%qF&+>FnHB<`:h}'El.HMC,1iQt=3D'J.Qn'4#A0h&[}hFO]h[`X)]Xb4X(1u&TGZYq#(NQG|)=vNewTO[!xo>]a?#f*>TV~o", "Jx3fpn//-yyv6n)E<$b'>'z-pNrN01zLG`Mj`f~xO3V{*t <2(tbm9NE_lHs}j$Fm>1:at.k4A^o~6IGm-!3JJ?c~Q635X=|1q_1", "*tu)-vJf:'K+gDy%8r2''w^fv|.A$NsA.So`'b8E[iz.e~6/ARJG*B6)M[=NasMYA{gsPB<Gn/^[Z~/<'jpDCm.vQc/q]><f%}ih", "_2[N'K-*wH0w&R`@'PNU]TA}Q%;]kkd7U+R@R69]>v5FGtIrA[b @=mjtXSvAOq]xLyT6*g)i+SAW ;q;Efm*NWPb_z-F@s~xZAE", "5@mpWj+$vdkSnha*LtQYFV76G8<wVAf|Dp(?(j_6I1NEKpnY0nz9'E5`~e%:uEyn,gep0EW/[5_y;h+kMfGi-}Do*WM6&9}skMT{", "ZyvLP!.Rh6U4_ywRV./w*%Q3=h&Q5NjL/`U_}+7h_kF^5mi!Kq0?p0F1uHM2a?=bJZ_a9'C)}CJXa*i:*-3XstK!u'l/7'iQJwzU", "i7O.8x[Z(cTE[<.A6'/ryuNt6.Jl*G?7x3Z{o0zzhc}Qsvs@'d|}g']5@fI>J7Xx<MA)L>($6V:xJmoKABm<^8sO~W)7Nk!5.jc`", "k(N<$g0Ti/VA&h@@(HbPfAO)#%UfrQT38cz'cX~@6@6E{M<Kr$t#NI199mbjqx`W(,RU|O_^&)]MA|@[;=CZf /{{I]?LF5I>41t", "nHf$n:pXTPy1N*~a6`unVaW}FC+ &'xg|K/ 1s'OjTuu3#{#|D^j'n1UtX>B T%Wu/'E=|tSi'kiwI-QY6!pb#t?]xQ{nkODc[df", "(N!rN*2cQ$w1!VEr9tqz[4YV*y*g8A{6>5k2ylaB.t#]KXy7B-K4'':c}rx6+r{BxQj,'x] eUtpqrZ$Ar=@hObF;#HW/<cZ?<a`", ";6!v[k{3SrCK#R1(sd<.f]l:?^UQabcJEWR?wMPl:SI}@i4F<RVe3M5|XeUuFvZ(cN53z$O>]~||Fi),t'cd08'y!&nS<&YMl]@C", ";~xld+qoqKLsK=r6R|;u`Uxq*kJxMS;H2*!D?FOTOR<-7Jp3$1KX!ys#{'x=8g0UDl+S,W/u!&gWTr7h`W:SozYAg!^8`_TH/jXP", "gY~,ItV_FBJE:]V$!=`m[@E{j|L2-@z=H9h}1f:1irx'3?b{`dW{T<YW?}fv*[4VqE@W4'k7b5:6@t_qh7S}q%Ja0>h][UlG`Ng@", "QRmUc3VZ'mSygqQ*`'}'@YB5W-4pcxz!xfu?`7a'?yG::Vs?h;)$TK._[^B85rF[*`p6O4Ww@Lu'}I60r2Kj*T&(ZsqS%I%6uw$h", ":rm!iD'sF?+~P~z[1{AKh-f;@^>B}x8=_[(^GY ~rP'7eIX*rQ`k}&B?<kTKXH$4NqZ*6bc'd!wAXk^oJFf6a9SdhJ3Br6s)0A|f", "x4J4=ifQ.M3N%)%G'|v|Yjv!-)j@)UQ,ZO|7LQf(wJ3z+'#ncT^fytdfdw`iPsFt>F_aOc~i iY/z,WWQI8O/#f'j-AX&f%f6>k~", "~n5`R'.9$V^u@_ky'(aioMrQ6_<%UtW)*r{)vpI7UYO2YQ/H+wu<yY}vG5~KfEVO6H^u8-9}])ws'Xkt^i?IuGZRd|7Oyjc#`Q#x", "^dOrs8z_=BS.uzdR#7[|@1:{N'M,PUbvrI1`<X|b&mc*B--ekSOjw_X|YP3gHKSDDp)*(&p'AfJ'~-Rp2V=JO=zN+a-d_93)=6cW", "7FV>K)I7 LShvEmX|fs%WF's&#7VM3=_IF7'e'X'h}K>K6Ff^aSxC}?M=v[qAesgLp9v>+D:J[@YVvWf4LBmyk>U'S[]3jqB}yrB", "+ZvPI3M))O9lV=6U2B9[Ek:h-/lk,Xvr>miPb+hos:?P=R#p:9_m'l&Q5(u6w>!-&&`&n=PN7%15x'!T&Hmz(69pW79G|d7K'NZ&", "/!CnOBTMmQK9@:+'NvS@a(?Sg`K6k!9|Mp<Sd0G^uG9DP0,)b'2S@xsk4CoP#]PJoXps)lwztbR>*gpzWNGm/9)>-^utv8,b|GbP", "1|WCNnA]~iU<0,'-W_FWMLJ?&X.ZYe5'`(L21!'mrG7[]jT6B/0&bO@?ebt[fK6$BwQ6_wo0zH]?K'>9'2Af+t&yUedl_!)YN2*Z", ",8}@lc5k8KR3Lk$Y6R+9S$b/d`n7~ka`**O64WOjK%0)-R`%la%dYgnA1aSSbwF/C'>,K`%U5?O'MaD8)lbsAG(o_To0.Vu4{,{1", "F9YL$@v&88$P1W`sUE<!X<hM':O.SFZ^%K2(4J^Bpt1Kp&:'XE''>$HNx{+{~ ?)!l80G}VdB|x<wwWZd.o~H$GZ}6OB.(C6>[dp", "=E^ZJQY,+t!)O(Di;SnVA^VTm]Cy2c*UP`_pW0Fd6U}<'M,*4wr/TTw|n=o!4&Wa*!b;j,hwy*)'<p~J'GGC6U;<`1Ns?n.Q m<u", "*$fN{:U|r}$2y'}o;*BNqbj$E'Wr] =->t0-pP^'~j_D=.T;wIPF#,K]Hg[B7N`XBwbDp<.{&68[:9vlY9c%hB+jM?#B'4''6KqK", "md0H,qlC2RyJRUdi 0xZ0SU}c.XgPa^%''5&5B|LR[<R*V/kH @[ry9G:uVj5SJ5%Fni%{F0$0!(' gi;uiN]K6693o[?R>v'3}W", ".L*=VIVEIVxl/'W%Zn}Xk7.'sC^m+kU<1V:w)=x>@b0D0|o}+G1dJvu'AvCeP(>|6Z<&(2oz4Dmp=GKP_n Ov9&qpf~IF&ytjDw%", "Dv?vPAjV!Kyz3#zozaq.kykqT4Y@Ufl+!iL'<VNtp'h+7,,Q<yO]ku_rh'[b`4/+y]yiQmos^O0'u`!hS'fBUhwCNrpd*8piNxKb", "1JCDPZf(hZ_&O;].z<nv<#a`YAS;_na)+V^>H):7W{g/*%oHfF6jEG1'+>4wQBhNrES.e<?pNnQd$C!$im|PoZbtE|cWxkp8lc[T", ")<P^U<pamPJflX|f7RWj2%xp]^y,b`'6NJv{ul8$K^)GmvVautO]lkx(s6jdAl3'LNRV6 y3x x-f>G,0]]Zy?BK'l!9g?NB'2wt", "0Xh-tQ#'sX=CgilF00,Nf/M/3JF/N.adA3>aBUj]i!}C o EV=P_PnjU+8Z.33:8qSq#T8sIW~mZ!LF;t4)fHem ]P?;fDSNbM= ", "z`2h%T$'y{ME*rN&D'u,ysG)=mV-'@?g pmcpdQs%7CTEBeBKgS.P;(avRSYm96<YQj_h'PJoczoJ`Mis4sl}YGK{Pcuvg$0w_ri", "|}*~/^dY1{t>.v%dz?'LU$'>3+E9 |>}==',0K7N$%G[I~gE?z*XI]d|u9]YukOx^PXkH'}lEJ({ep#Vdx#@RI`OLL]1<:>V*-:[", "kc<nTQhV[Q@<FRj7S'*/R8}'v|}bU3G[K'^:17|N;sVD5I%=quOE0EdH:J-t{CVR]XS$'.WE|;P9-iJXUkrj9!IOBPR[qH{DaU( ", "{`>0JV9dUE)*jc*5:x8(OQ}y[NSqiealnkcBEw&XT=0w!:BhUcgT2! l84-X^3>*,4/GRz~'qBL715EJ'Dp7-WYG[0IPR&SaYdJi", "U'=8D1L-)J(&rct!DC_-,'Y%g5afnt9[|RE4sAzv%ozg|%KbNAi32f17FP>DZ@0wgbR_.k;,p.pCsyJP[9<<yaS,%b'HB*^Zr*2c", "'>TTWWIzf%ou9bBcbt7OD,qm0RY2`X,DCWeR4]$||'r/7XPQk:L3X$%i1Mfsz;0H;(:<sIBJ^'^>cnW1&U(w;?R'FgiU$mR7|NUc", "fGAvopLoB@I1__c@VKS7v54c]a#UT2M eT'O+<<`H;KCdNZivK$z>s|%[]jZ,-H%ybQSS@,CAi>~06P24,P<xQiyH%g[DV|9jywC", "2pPxoV=GH>0p'QcG'c+tKKw)3_!B`UXwYVf1XRyvAO 3T8.kl6EJK{%Pm`tmh6!%Qx^uYf+xtkEF.L^.AP.ELr75wb^l }.&^nS2", ":V]/(T}$'O%EIsbEU>:TG`D/6 ^nkQ'r_K<FtCg^P+j]Hr!Z{c2V~Mn]w'+npQ{kdO,H1*2?qY{bj~c<5a53b7wJ=tGJ1yD^{|N!", "Tgw(C/Q/mjMm|Un&a1Xeq?<O%RD>e8+GHI^FgJ5/k@Vvy<aS[-POjEVDA!td)}'*w2fQ'I,uk'aQ20Dc|uAgq.uB|ZaL:j]]&|[k", "g&=QOzyU#h^?cHPHJS4N9M3i_t8p'C0x'Pw!koCIeaE!Q?g5'cQcYEG<R<1?I](;Q7'<E`3O7cH)nb8tj;GQuQb60-2+7=g~HV3H", "=H -XLZ'S);8*T'sm4f2pJAm#-J$$!Uu1uAz/n9cihT8^RuTGz<S#'LY,l!Df7}.[MMPz_S3*&6)-wKsYR1FQ{btFa''ajk?FYXy", "B/* k6Y^U'Lq9'&$xgn2HZKpr0<eK@cf0k~,R7(3Likfx=68&[rlrY~_g2o}{Fld-aYhHw/8k)Bk,4TcC@2VQTJ 1=Rz,QxIRf%B", "6LuKnzWhM&?OW}l|vs~{z tv*0m'AzBodnv{:f0E?Ky^L='<@4gwbu1lW__&_b.[Xm'fcq_P+Y|pS,PRE(iCG9doL^(2T4LkKyw=", "($TO=Mj3}E1cALmD6Hdr6_TSyk[B;pNLbqe4'RRpV{WTMI.Ola<7QWX}ASA;mpwJ{no!Z`j&l?;GNcx|*'xU?qv9CQ,k]UZ|k[hO", "zUT#u/f.->kWnI~b4_'x)ZaE8''j+<,Nf`x{3=onUv}qkr}!Eg'#Aoe;X{)7A)$@=Z$&G/b-s'caYvXKpC=e'.cFW~A2DTLjekhz", " /?B_8 Jz*T!'v+a1#xkC]Hxc31!1TUVf^.V]'lS~&:?*?|8X:k`D|PF_L@?I64p;8R')jWRhpF<$j4YDR0u#w*_r<TtE'hkp}8#", "ld%@C`!njX;ERE'!LTbP3gG2h~)+'BuT=SlMNRkoHQ'eX%E_aee@MVjb5w}gT/%`w.N&?1uGvWNGp3gl{}T}oMSr;KTRC~e*:_4{", ")>ap*'=P;xz(JK'2viqdN7E[X_Ho'9dd'P912m|B?u}&.:jj`F$dwr'_cS=)z%;TS&eOb9i^N|jW4/QI#6yn['+9d4.f+k^8G9Gl", "]E.,b`g+/|XKy/)D>JR.NJF_8ui%g=mHC'$?g'p'&xYpU+!!0ri 4k2XE J?(*;?N12#GfF|6`h9x%Tro>K[jfx@l!hNDW]mD[#Q", "BIYEamgs?n:lSY)zM}>heJSV~ZXy4uFZzvm[kNXRLk{,C5iGUL{YU_O}Pli[0}}iz43W(J%p>n,TjV' (j';W.Exhsy5&^Ea&8Sy", "J|O)X`^o%nXzm(py(U{5dJZ)U%>y*t;_SPSP6W;;-?xms!Gb? sP#!j9^W|GCJV>S}?U/kKMHu0/92kXV+:t1-1?SF[UT*ci#w;]", ",v(>'3w2Old).@O8#IdPo|l7NQb=C9'z+!5U^?[8*KPKYpSZW>AWR$)|'/u8@pI=N/.f4Md_nXg&io<KWM~Eq8s4ayzSXhFOh;$A", "0]#N+q03qErsG[-%yVh8Rz!{37*a;D9Y@VeGE'yfifYs@GJ`_f]=kx`tiYs{K?2AMUk`p'WW0-vHK`el!Cas|%ma'I'*bxGcP`~/", "{L*}q~E]uYBSi*tXGe'--&h_4Tv_@z=CB3j<mo.f^2v1_LU-;<J4B9&6L >HDJugRH,tb4'&os PnXKo#kjA~#>V.~~}nxYlspTP", "(jw )<ezt$K0u%W7y}*T;rh%7*kKYL3_e2&u4>{{)~T%}BM,a@V'PtqJ;LlX{5TJ!{7v9 SG3tv!'Vniu~f4ZlmyXc~5C:#MCFz`", ", +MR@+|'$JS[oOEF~Z.kh&?gLM<UQW3Y#!)QI%06cMVP9yrOtZI][}9n!Yo@|XPmGU(]FRh_-Vne.d 'rpHLFQ'''H;eZr+?yc,", "vYO)Xa-3RXg'{U![TC~n+m'!ZcHsL_'z:vA'E[rmqGX%oW!rb?q0lIf.;Dd8A;^Z2F[,fF<rMGLc?bxZ:fOO@i7v{a !'8:#lOe>", "Mub1|B{7^?l3oH_G_Uu`B(?Na<HU1?-eT'4y]Z2f$]RmJmK2Si_zIUe)O},VKPZ8V;r@vVsrWs~akyW%r'ejjsxSpZ|TcCyqBv(?", "npT(Q(!k'qC2V1FKTe70/0;|%BXf0F71$2}aSZBZCg(5#+x?{0'2uAYC:y}M&)LNlwi2TE0w_enN$ M'5?WpHyniekZ'b'OSWNa!", "8F{/B%$OLsZpz$qO}D(~gFj`>uqBVKi-St}uS80CL-,K@];cK1V8Ax=:@,-;k=v1:?T5J=8S>wRsa4ZE4v#lOMd_!y]p:tyYEmOk", "+5[<a&Z[BYuUi$,oVq=kawlGdwj'xmO%UFD'd>{1VaNGb;d8H<#:%]5,#^YsH1l$[40tZT4i;!T3*[a#e/ +.^fWp|.'dySKKuhr", "[fPI4?p~Z}s4k<dLFyRjES: Y+Y*k%VK$rd(d0&CXoOK[;8o'9WhU,P{~:6o'y8#<-R.Y05@(}yB`h{L-W@]MOe9}3bkn1L;(ujA", "Gfzt/XEAa5wMRBI7&*'o[B6$3'>Q_1:j8@=TX=K,3.H_@?[7*L[+GDxY1Wzr8*&&v%''4IQ|<Nk-&^!cC.$|99DtK28XE? &qp=s", "DdmEc@@.Cr<<Eb/tUj*Rre;RNr|'M-1RQjI`VEh4}-Dp{D]=XN6I:=!]Y(Lk%#H0Dz!z?9AD3@x'D(8=%&h[kvg;r%Eu)hwr@?Nk", "*M5<N=JvtiY7v$a &&o7XD[OEvlyys.j^bs%U|+.-xUk't:e'g. yzmx7ww7xi64;=ggZg9g35A/%q7!`I[m%9`hj-S2Z}K mJQ/", "Es_5ic4Ewa4:Z~uG!'[z.<T=~c@cA8&sjg&zYfZz?={S!/r~,$%Tq_$t'M>YgT.X'>B89[@P%K#LjR01!xjb*B.DsrV)M|!}.U#B", "-+jz/3,R6*e&2*0i$IG6Uxz}i,TV>$nOkUALA@koNeLC30Qo;5B|K@6-:]96sDhaNa'x>fuw{mT`Owt;5IZ{5 j'+u$iXrj$*9{]", "MaJY'o1c^cWsMB,AcWJ|2r`$p.UV0O5j~&AD~K%bI*a}Es0o!QcG7Yp5Qh2CGwm^c='$c!poB'E~Nn9S:z:'iRIM>&SY=EPai[bv", "'&fd_}Y*xnmLekziv'z{Jd7]/P,umt]1r'$}7'tE9VvJI7V+@,*0Fo>'9xeD-Cl#klQ(hD''aceJ2.gekx{NJGodP3z0CeYXLs,f", "hTzix-tF2mA-p'%6(`U,%iV!sNuzAt@)x>)w``aKygnz,Wkn/'0-X-&p&qCig$i7J:#5BLAajZ?v$P0X,69MI2Dg')Y7a%XPBNv9", "dQr/hWSzp-eLZAnVG,nxY(DB3V+7#Zv}[)o`-Vd?tCaL'qev' v,!V(QQ84,~QOe_AA^(lo'ggQ$b`S0c2YkT^ythdp.B{e!,IIf", "*J:25RH9X%E3/HP-nc_VGVM!kmQ:P<SemFma0EAeFR'T>]/YWpm`4ZcD/L[0WW!}5UbzI-2EpG=H%'R4bSJN'5[EmCle-U./@dAl", "OC.=wrEtI+S'~(c.#V;t?;r:hzB'K*#N ZAo~IP8|)uk&|OSp>8?u6H*tX%5nm.eEpz01)y1c5p7E&:u' ~*?C&s_X[:[RY7E@{<", "#'rw)''TM&iNl'CDUVhmqevIbL_t!n}|UbZbgxk_V?zl17.pvv!gvL{bM2xN.+VGgd'rh6!k+<x.R 8Zkj1Yv]@uU#o=M Hx'&,0", "tlrCy}lS,.Y{#v9+[4Ub`=3,RL*@omk+bUq+.>p0R,'[d+I{Un.-'xMzYFu)>eeA0'TMbZU%n=BS |Hg%ifFF#a=dO$Fd|Rd?D7&", "nUj( 4.:o+'jFB#24~KI,'u01a,rO|i[vV~cq*d&|H;Z~kVNd0[d.]iG9u*DIW>ZF^H[BF76!zy=Nf9t Kc)W1Y/S0R@4]]e+X]6", "}N:BXcTQ o6,vH3q88<O#U_Hvt'%XU_-PD3}P4X1=KuB/tf7; qsAA/Tn{_Wq4UBHUZy}i_55*I`.d}Z=`/%Y+/%~W()%9v_,/b~", ";b3qb*s) X:C_9`{VZn6yZ`'q0L?_kgUw-oZ<.))=%90P:]60oabPg0O@[WS7wO@Quq2;WoS$s3='hGq1vogKr's!2)r5%O31iA9", "E9:*>6+-G.#4KJEq_>4.tUx4}7W*Q'bQj]ly4CbkVn{JEJ,16j2l+{{=0N<y@XD,iVK/?51kc[I/pXCqUv'SL:m<qF*e]IOI(L<G", "lNm$#<JF'Hk'Z]pd?Dr)3x#W[qFgJwg+'H=phQX('_ 8dGHE'!1dm1myoX*['{U.M6v{G,gNiMLzSi$(CyOAb9Lr96g5'Uzb3J_)", "/x3EyhN$-8qEkiFN%SMAr6l&#m?*QEr&![t:3aS?];kwKdErFOJb]`UwwH,U>y ej4%%2%[_#Q?M!T-=a-&'I+*42 Ec@Nz>4dxx", ".'!U#EHJ4#i8lDux:p^5h>.COu@Ta;|dZ#k]^c^,V[*cyBKn(6Q%PZv$EnVK/WxO?v*8YjRbj}8DF,^yO`.N/kiHV~V^glTH@h3#", "GF[{P;d;B:+~[J FblRx~nZFAM:._TkNEK5bGb1rf[b{v6_5Gh^)65b2'AH72CQY5Hm^JI#?Q:T3Hi8_Q*+npDh*fw2)v0iNTElM", "07lBuE^1RfZt|s(wMwy])yTAJ^Rt,%=*Z#'I`R,vZtTc=qL08 ;? k'.+yN|$'6tqI{:)RRbmxp8T_CcixTvQX):)S4j-d)XA14m", "/+4^luOkwxD|>Mh.~:'0'.g+*YIu2DtZw&[o+_Dj$F|)woD7vQ!U'g)~Gc!_V|.@5x'kb%S?R{(^PMU)ZJ,4tS,M^a>$IVO7-Hqj", "Nf'';gW h$%k.3[8pwN<D>ut^$Z:*>#P=2,.05bwCww7jNjODX T~9HA}|R2U80PSvWC@+lpZ63xOuZ@[mcIk 'tO*cmNX! -%_]", "'S C_s#pQzFv{Ba|g%Y&4cCQAM<WSAOMknKJ6s+KN;!W)sZm&9UtypUMt!yys.:fR]gfRTQvlOaU6%oq>].+(ZaxARXt$%[']uxa", "~KJAaewCt!<'h''24'i%]pZ9#P2G-V^y3b}<(QwqqR'8'ToP1Aq7vrVt@xQmwk~#D>DFv!l;LP=}k;F(!k^Mp Kv?#z3lS9{Jx7v", "GPO=AAd-4a`,cT}Waw!dgQ'l&e[^BFc`J@aDRK'q(_D$?CC9pArHQpO4BmSB's*,V+yMWhE@s#IU<Kj0%s!~<bC#<l?8_'dE U2-", "Z.PfB'(z vGqT}qyG3h,T%0T[i0Uj(U~#7|v7mwaEH@5>/`Oa}9YCyI [,b';V%9+xu;E&'y,QE_^(eEH*.clfYyV<2*;c#!b}>j", "t1pgS-31`tZBSTi@7F#gl&1d>:Q=4#z[%>ou0g~}9XH}ithCi*q_TY<&O=q{'}JAs;mK7bimt]+?e0(^W5O8GB'jd*ae@2]VKJA$", "_*53^V]sW=<%Yn1/_Rug10+:2{5z9E]gi3#CeU8J.^KusG36U7KZOk33ni!//&Vvy xLOL^7h`zF.[8K]BAz#`OcR~9fu4b6]C/-", "7[HoU?`lGgQu 0*ngA(/fv>+tnP4NaNRtwzBN>W3QJIATAL@DSbRHo,X?vrLh`vi_||gu!X=mAjIz rV~/(K|+L-F]2UvwoU?IS+", "W41hjS<#4!P:3HhL/8X_~ZAtKNkQ*/FzYq&J^2/6@OP*C_mXf'!iL&(cs9a_2r'hP0b66*Oke9BWM},88cOov!*X-Un9'Z3FE'po", "O2jj%mobJpa`#H (Jhije/);&P_r5fm7Hyq3A,$&]RB2t.>X,K8{mg4~GFmo%u)vm}4Bsi{axG'DbG?7^7l+at'+n{YLbt>h{P^>", "39.^6{j*l@ix|~u_<0n;iIw3y2l|dc>F'Rh )mC;<6+PK/ik.+`zS{U`@UG?'.5B!F(V2hbG#|fz'vyr4/'ZjTb'uttnB6tl`RxI", "j#e3hUoB&Er/@=4<sYe*sr'9vX]<1:~on?B_S[:1v?djU#o}k.oDS[tN,H+j$lepCoQ:j|q/@m9l}jfQ[Uk6;yPQMe*<xGDlQh}~", ":B;_d?$FGVBr|{A<]5g:IwtQ>%S'N4+eu|(Tyu:SaSj{b*=:H`+@WapQ)mWPHF':>2l_2nGQu:9OG-mDr^|~ZjRh=i-2:7t?CQ;_", "L!6|~%HknU;s,A6_Em$+Y%zXO:Y$R->En?[oE;m&R?mW'snK-vfdrjyOXtQdpw'%OL n2I=DFw*YNR=.SUHjhUhxb%W#./G=WM=d", "&7jYqVlu;J,6u/k?'bQ~w@aEcfWOzDW/zYPpVlL3T@/:=vL 81s4'(5d{ke!;~9[H[&Z~_shapne%3{_w+CVrCwS*!.=[/%3d9on", "FS GnuIfQW'*'|402opD@O)AyrEAS.''_X<MbTB@k)=PBN,Qo9rV('I'4zWy[;6GeiVzh{v~m0~(f9uR]9'+}|ld]qN1vZZ<PNOF", ";rb-dlDQEuaxqNT>seW?/U|MQB_iflA^b&8@4d 9&s3dm~e8HkO^B!bJF_;59CFYZS8D{8e(=>sfb5;*X*waEG~4Vnw71kjz'M~l", "}I'@^u:Dk$}(3<k'K|l!IGTh=lnOQ!Ec/),0`~*X@T:R$*I{KygcEc&L^i!`zq^kUb'h('H]I[O`'ja'q`>fIN@F;)-9)UnE,RDV", "s0iTRR$#xL-Hs#74?;c41(GvTl@H B&>5FG'R6{%@gcx&1#4`.2n,AQxu.Yj4W03Tz&<l^_*.3(Fo.=1;N|}'}[4~'Df:,7fRtI3", "(q'`|pnok0ec x!}16c)g!+''8>|lQv=HbV7Hw'wkvd><s;%ng=0@=8YKKb(0T[Flv+x<G%A_&DTF6j_aT{YQkO=0?0S*T[eyW?}", ">k4;zxT@ccnjpPu(c(r3:MUajl`pfcz46qwf7p'B(K||YPK{U 'g!/Q`iv' fWy*'A/&>xxlYAb?X%oeJ1zV|5)$tynLSuxt#xQK", "+{s/R-FG4cL5sJ7<(q(ObLW%%x%1@}39PscBAj)&_#g!Ddpb77JAA!}mQJ~uiPN]Yf6'0OKto#I'&(o.9Q9=1K4_oB{GD2'q@qls", ";at l?:yT9?>W5{j:i8N<WR0V8^}6AATu#L?k#Q z7'(=2*J%do)S=)RL_09FSD;/2.s.sZdlJ&cz*/Tm(LADH|u^&Cd}$+39e$&", "LDCC0g6FM=;Q3SehDlW:G#=ZnWf<#^Of}:zB{Ifx95[oe?6UL4x/!.b/:Yt6H-L.{i e,b]c 2ud%HG`L@>[U>GdKZzbBwyeA7QC", ")0*!oyT*[K#2CJ@n~u?wb~{Krz6%Yf#'0%^N90qmgE_Hj/zrh8<'7'*G?K_3HmLb6<Zu;4$^'ahnwn0rJb2+J?oizYvP(9;B.(%9", "YF$Yv=v*nfPIuA>/jr]TH7'pJ3Jqnp{!Nm8S<-=a<](Nn,r,_$C>|K;rMzBqm;G[/Y8QGY]vsKg?NVY04Q.qA<^EbIzX:k8XrO*G", "b/KhLDV'r-g3@@3R9pc6w+`-(7<-/;yrs8GI6SIJ?w'@6Ew0|+NC}lI<o$x|~D{%494A%'-k0(tb#v`uwkpNyYa!'B#'0$bSSoYs", "+G:W$` !dDJPrqU& '4CGeTIHstl9$&^5}y$=2h>JlfL*F6fx5E.C!8W}9?wJ *h7~>:!I(Xz[Nye!IvH-y!9T0_Y^^B'[f$-`QW", "{*NbO`.#L8j$m.'9)_9,5xr2z:Md8'j7Eo(in'|6C.)!c3'%0K[D8fgrw#4x2ntF'q-7R82*~=i8zo!F]p-k{m8O5d&^rom`V,:C", "dM]1[7ro`TvFToO>u8c@j:`P.__L%zS4py0qiWh8Oy4V]MX'Zln'7Cn}fd`@kE|3~YGkwo7Hm6K.>F`3m}`y&%9Ba;o~Zq| 8n[>", "Df;<SfKTpKJH+WKLuQtF';=6$Y7AOCP$ZlAOJZ&eCw&9_P7-V?@O2=F`0PRnCoFp:>,f7M3!CY+mLDRdOFgW*<c7 K%RU<B_*#)6", "H9dJx`Sn=AOHO[tTh0KZvB@7O5H$QbAxH@Kj)KSv-HTn5+OL2-/=a];xy?0?cj:en9,$Xc.2xS>wn14>G5MqjA<hG1-SfiJAx;0U", "A{.w;je!AyIA[..QwN'w=FLw.fAI/Aer4_Xe-={';Wm:eYk}sKxRrskCHSZ/ 'XYgjEf'X,E}JnhFw~o1W}Rj4!@}'f&^u%p>^lD", "h7}'*HfvKsO';7YNgPKI2:BW21u a:!!9GP@xS}+U70fmnjYnDp#aX:OfN8<RW82C>+^c[_`[<FVnqob5|e6nVV5uKNk>L>roh/c", "v-P!:va8Fu r=[k'Mj'3%H.1_J_7ZYmveA'WowB=b}#n07Boq{<l+=nicNeIz1;lsL!=l!l<;G{J}P|ct>7ZAm'QJ5uf0nR1;}Nm", "aQjG]G6.%[B55WH!<T8.B*^#v+-xm=]'+;p3S jJx&w!.6W4qML5%RKNdTn~^NRxU*Bky]SCqe,]69'eY2EijRcDQY('?|R(70ID", "#1g.P*>i@HV.)[5{Q>PI?@:CirWqe=@z)h+<)}-UlX'BKQJ>XT_+NP4Y:xT>S7tNw`:mN-i>~#L 4?lInd#We6tGX-sRNLKMKM9}", "kAM?vZd'{q.-IlQKKrlxe3Oq@'qZ#r]V@O.}$a/sUS1^P=A1XYN'!35LjGnmOl~u'5&pC?dB6-KfjHwI-PQSxV?xt{9s)aYloOc2", "n%DWh.1!Jal#%!mzp4J t9E TA?oJ[g'dx3i4$&75pTrnsC`{W_LLOP$JLX8)0#rHq9G<R-s'vf.F'=U&/G0HTBouQ'='`zwFi}j", "J3]Fei;,qGCZ0~gAbpdujEp(?!U~Bs(SG$n(Hg]hAZ_NCY+YfD&L'EC  93DL7(jW iMXjshmP~G=Q8^F:b!NpzU]v~Z462N-'84", "|Zc-$p8i#dBf:Bsg}@lq1$N`{{1BNu'j2X[UHSJbD^tI2QMlkB_J5lQc'?@([(LG1@MG}, bdj+BG'_IBSDg|D.R/@7o/z[#..ee", "6LH+?{]AybpsUF~.OlZqN5%>m-e9tJpkD/DW$D[BNW*' uu9-7^~[A=4[]GOyQ>U'0'LSDs|h'O=!y8z)H_YD5Nj L`/3X+hX7v1", "wVVW!>p'Z.Dm`D4um?]5.t$hC>Ey~W&Ws~+'.0jr'Yl:=?IU[s? <J0QQ?n -}P,B[L28,~ylIhu:hqRUQ6 X?_D^;7g'[7-YuU'", "Bf'OKodQOu%9Ar3V[Zsop}w}J6N|VT<%rf#m?^2hW:WrF1)PEqo.[)x]Pi8#'HS# }e(QSp%7T!s2[qlJAc8Bv<AMILy3S]Y/0i}", "f]@-$''RHfQS&Ex5{J;'NK8P0P@#%^w[$e'54pnBr`9BV6e1?yM$x+rWhkXS'nZcc(+Iu'0T}Hkyws(}2KnG.6Q0<B/{nQn4F^f~"};

    @Benchmark
    public void testMethod() {
        String s = "";
        for (int i = 0; i < STRINGS.length; i++) {
            s += STRINGS[i];
        }
    }
}

使用 JDK 8 编译打包测试代码,进行基准测试

字符串拼接的字节码:

   L4
    LINENUMBER 47 L4
    NEW java/lang/StringBuilder
    DUP
    INVOKESPECIAL java/lang/StringBuilder.<init> ()V
    ALOAD 1
    INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
    GETSTATIC vip/wuweijie/test/jmh/MyBenchmark.STRINGS : [Ljava/lang/String;
    ILOAD 2
    AALOAD
    INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
    INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
    ASTORE 1

确实是使用了 StringBuilder 进行字符串拼接

运行基准测试,结果如下:

# JMH version: 1.23
# VM version: JDK 1.8.0_241, Java HotSpot(TM) 64-Bit Server VM, 25.241-b07
# VM invoker: /usr/local/jdk1.8.0_241/jre/bin/java
# VM options: -Dfile.encoding=UTF-8
# Warmup: 5 iterations, 10 s each
# Measurement: 5 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Throughput, ops/time
# Benchmark: vip.wuweijie.test.jmh.MyBenchmark.testMethod

# Run progress: 0.00% complete, ETA 00:08:20
# Fork: 1 of 5
# Warmup Iteration   1: 93.236 ops/s
# Warmup Iteration   2: 127.325 ops/s
# Warmup Iteration   3: 126.310 ops/s
# Warmup Iteration   4: 127.374 ops/s
# Warmup Iteration   5: 127.015 ops/s
Iteration   1: 126.180 ops/s
Iteration   2: 127.410 ops/s
Iteration   3: 127.397 ops/s
Iteration   4: 127.441 ops/s
Iteration   5: 127.245 ops/s

# Run progress: 20.00% complete, ETA 00:06:41
# Fork: 2 of 5
# Warmup Iteration   1: 93.343 ops/s
# Warmup Iteration   2: 126.607 ops/s
# Warmup Iteration   3: 126.598 ops/s
# Warmup Iteration   4: 125.847 ops/s
# Warmup Iteration   5: 125.769 ops/s
Iteration   1: 126.014 ops/s
Iteration   2: 126.306 ops/s
Iteration   3: 125.094 ops/s
Iteration   4: 125.891 ops/s
Iteration   5: 125.621 ops/s

# Run progress: 40.00% complete, ETA 00:05:00
# Fork: 3 of 5
# Warmup Iteration   1: 92.316 ops/s
# Warmup Iteration   2: 126.006 ops/s
# Warmup Iteration   3: 126.053 ops/s
# Warmup Iteration   4: 125.692 ops/s
# Warmup Iteration   5: 125.648 ops/s
Iteration   1: 125.836 ops/s
Iteration   2: 125.944 ops/s
Iteration   3: 125.813 ops/s
Iteration   4: 125.930 ops/s
Iteration   5: 124.652 ops/s

# Run progress: 60.00% complete, ETA 00:03:20
# Fork: 4 of 5
# Warmup Iteration   1: 92.554 ops/s
# Warmup Iteration   2: 125.519 ops/s
# Warmup Iteration   3: 125.771 ops/s
# Warmup Iteration   4: 126.094 ops/s
# Warmup Iteration   5: 125.642 ops/s
Iteration   1: 125.211 ops/s
Iteration   2: 125.827 ops/s
Iteration   3: 125.788 ops/s
Iteration   4: 125.548 ops/s
Iteration   5: 125.988 ops/s

# Run progress: 80.00% complete, ETA 00:01:40
# Fork: 5 of 5
# Warmup Iteration   1: 92.194 ops/s
# Warmup Iteration   2: 124.696 ops/s
# Warmup Iteration   3: 126.174 ops/s
# Warmup Iteration   4: 125.492 ops/s
# Warmup Iteration   5: 126.373 ops/s
Iteration   1: 125.342 ops/s
Iteration   2: 125.739 ops/s
Iteration   3: 125.152 ops/s
Iteration   4: 126.127 ops/s
Iteration   5: 125.781 ops/s


Result "vip.wuweijie.test.jmh.MyBenchmark.testMethod":
  125.971 ±(99.9%) 0.545 ops/s [Average]
  (min, avg, max) = (124.652, 125.971, 127.441), stdev = 0.728
  CI (99.9%): [125.426, 126.516] (assumes normal distribution)


# Run complete. Total time: 00:08:21

REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
experiments, perform baseline and negative tests that provide experimental control, make sure
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
Do not assume the numbers tell you what you want them to tell.

Benchmark                Mode  Cnt    Score   Error  Units
MyBenchmark.testMethod  thrpt   25  125.971 ± 0.545  ops/s
使用 JDK 11 编译打包测试代码,进行基准测试

字符串拼接的字节码:

   L4
    LINENUMBER 47 L4
    ALOAD 1
    GETSTATIC vip/wuweijie/test/jmh/MyBenchmark.STRINGS : [Ljava/lang/String;
    ILOAD 2
    AALOAD
    INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
      // handle kind 0x6 : INVOKESTATIC
      java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
      // arguments:
      "\u0001\u0001"
    ]
    ASTORE 1

运行基准测试,结果如下:

# JMH version: 1.23
# VM version: JDK 11.0.6, Java HotSpot(TM) 64-Bit Server VM, 11.0.6+8-LTS
# VM invoker: /usr/local/jdk-11.0.6/bin/java
# VM options: -Dfile.encoding=UTF-8
# Warmup: 5 iterations, 10 s each
# Measurement: 5 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Throughput, ops/time
# Benchmark: vip.wuweijie.test.jmh.MyBenchmark.testMethod

# Run progress: 0.00% complete, ETA 00:08:20
# Fork: 1 of 5
# Warmup Iteration   1: 258.715 ops/s
# Warmup Iteration   2: 287.679 ops/s
# Warmup Iteration   3: 284.280 ops/s
# Warmup Iteration   4: 286.362 ops/s
# Warmup Iteration   5: 284.266 ops/s
Iteration   1: 285.369 ops/s
Iteration   2: 283.737 ops/s
Iteration   3: 285.116 ops/s
Iteration   4: 285.400 ops/s
Iteration   5: 283.766 ops/s

# Run progress: 20.00% complete, ETA 00:06:41
# Fork: 2 of 5
# Warmup Iteration   1: 269.397 ops/s
# Warmup Iteration   2: 287.178 ops/s
# Warmup Iteration   3: 284.824 ops/s
# Warmup Iteration   4: 287.108 ops/s
# Warmup Iteration   5: 285.980 ops/s
Iteration   1: 285.910 ops/s
Iteration   2: 285.551 ops/s
Iteration   3: 286.514 ops/s
Iteration   4: 284.292 ops/s
Iteration   5: 285.681 ops/s

# Run progress: 40.00% complete, ETA 00:05:00
# Fork: 3 of 5
# Warmup Iteration   1: 273.475 ops/s
# Warmup Iteration   2: 281.529 ops/s
# Warmup Iteration   3: 282.911 ops/s
# Warmup Iteration   4: 282.452 ops/s
# Warmup Iteration   5: 275.956 ops/s
Iteration   1: 285.633 ops/s
Iteration   2: 284.642 ops/s
Iteration   3: 284.067 ops/s
Iteration   4: 284.872 ops/s
Iteration   5: 283.630 ops/s

# Run progress: 60.00% complete, ETA 00:03:20
# Fork: 4 of 5
# Warmup Iteration   1: 262.448 ops/s
# Warmup Iteration   2: 285.225 ops/s
# Warmup Iteration   3: 286.138 ops/s
# Warmup Iteration   4: 286.043 ops/s
# Warmup Iteration   5: 286.555 ops/s
Iteration   1: 287.154 ops/s
Iteration   2: 278.833 ops/s
Iteration   3: 286.033 ops/s
Iteration   4: 286.214 ops/s
Iteration   5: 285.747 ops/s

# Run progress: 80.00% complete, ETA 00:01:40
# Fork: 5 of 5
# Warmup Iteration   1: 272.746 ops/s
# Warmup Iteration   2: 284.205 ops/s
# Warmup Iteration   3: 283.674 ops/s
# Warmup Iteration   4: 284.049 ops/s
# Warmup Iteration   5: 284.668 ops/s
Iteration   1: 283.052 ops/s
Iteration   2: 283.072 ops/s
Iteration   3: 285.613 ops/s
Iteration   4: 281.719 ops/s
Iteration   5: 284.352 ops/s


Result "vip.wuweijie.test.jmh.MyBenchmark.testMethod":
  284.639 ±(99.9%) 1.304 ops/s [Average]
  (min, avg, max) = (278.833, 284.639, 287.154), stdev = 1.740
  CI (99.9%): [283.335, 285.942] (assumes normal distribution)


# Run complete. Total time: 00:08:21

REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
experiments, perform baseline and negative tests that provide experimental control, make sure
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
Do not assume the numbers tell you what you want them to tell.

Benchmark                Mode  Cnt    Score   Error  Units
MyBenchmark.testMethod  thrpt   25  284.639 ± 1.304  ops/s
使用 JDK 11 运行 JDK 8 编译打包的 benchmark.jar,进行基准测试

字符串拼接的字节码:

   L4
    LINENUMBER 47 L4
    NEW java/lang/StringBuilder
    DUP
    INVOKESPECIAL java/lang/StringBuilder.<init> ()V
    ALOAD 1
    INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
    GETSTATIC vip/wuweijie/test/jmh/MyBenchmark.STRINGS : [Ljava/lang/String;
    ILOAD 2
    AALOAD
    INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
    INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
    ASTORE 1

运行基准测试,结果如下:

# JMH version: 1.23
# VM version: JDK 11.0.6, Java HotSpot(TM) 64-Bit Server VM, 11.0.6+8-LTS
# VM invoker: /usr/local/jdk-11.0.6/bin/java
# VM options: <none>
# Warmup: 5 iterations, 10 s each
# Measurement: 5 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Throughput, ops/time
# Benchmark: vip.wuweijie.test.jmh.MyBenchmark.testMethod

# Run progress: 0.00% complete, ETA 00:08:20
# Fork: 1 of 5
# Warmup Iteration   1: 236.861 ops/s
# Warmup Iteration   2: 281.725 ops/s
# Warmup Iteration   3: 287.165 ops/s
# Warmup Iteration   4: 288.363 ops/s
# Warmup Iteration   5: 286.449 ops/s
Iteration   1: 288.665 ops/s
Iteration   2: 288.278 ops/s
Iteration   3: 290.180 ops/s
Iteration   4: 285.125 ops/s
Iteration   5: 289.286 ops/s

# Run progress: 20.00% complete, ETA 00:06:41
# Fork: 2 of 5
# Warmup Iteration   1: 243.368 ops/s
# Warmup Iteration   2: 282.058 ops/s
# Warmup Iteration   3: 282.354 ops/s
# Warmup Iteration   4: 287.752 ops/s
# Warmup Iteration   5: 286.069 ops/s
Iteration   1: 287.263 ops/s
Iteration   2: 287.933 ops/s
Iteration   3: 288.983 ops/s
Iteration   4: 287.766 ops/s
Iteration   5: 287.663 ops/s

# Run progress: 40.00% complete, ETA 00:05:00
# Fork: 3 of 5
# Warmup Iteration   1: 245.486 ops/s
# Warmup Iteration   2: 279.641 ops/s
# Warmup Iteration   3: 287.123 ops/s
# Warmup Iteration   4: 288.246 ops/s
# Warmup Iteration   5: 286.769 ops/s
Iteration   1: 288.454 ops/s
Iteration   2: 285.354 ops/s
Iteration   3: 283.967 ops/s
Iteration   4: 285.920 ops/s
Iteration   5: 288.083 ops/s

# Run progress: 60.00% complete, ETA 00:03:20
# Fork: 4 of 5
# Warmup Iteration   1: 242.841 ops/s
# Warmup Iteration   2: 287.658 ops/s
# Warmup Iteration   3: 281.378 ops/s
# Warmup Iteration   4: 287.597 ops/s
# Warmup Iteration   5: 286.738 ops/s
Iteration   1: 290.145 ops/s
Iteration   2: 281.709 ops/s
Iteration   3: 285.905 ops/s
Iteration   4: 279.926 ops/s
Iteration   5: 278.515 ops/s

# Run progress: 80.00% complete, ETA 00:01:40
# Fork: 5 of 5
# Warmup Iteration   1: 234.254 ops/s
# Warmup Iteration   2: 285.242 ops/s
# Warmup Iteration   3: 285.786 ops/s
# Warmup Iteration   4: 289.625 ops/s
# Warmup Iteration   5: 291.023 ops/s
Iteration   1: 288.937 ops/s
Iteration   2: 287.133 ops/s
Iteration   3: 289.151 ops/s
Iteration   4: 287.932 ops/s
Iteration   5: 289.399 ops/s


Result "vip.wuweijie.test.jmh.MyBenchmark.testMethod":
  286.867 ±(99.9%) 2.274 ops/s [Average]
  (min, avg, max) = (278.515, 286.867, 290.180), stdev = 3.036
  CI (99.9%): [284.593, 289.141] (assumes normal distribution)


# Run complete. Total time: 00:08:21

REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on
why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial
experiments, perform baseline and negative tests that provide experimental control, make sure
the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts.
Do not assume the numbers tell you what you want them to tell.

Benchmark                Mode  Cnt    Score   Error  Units
MyBenchmark.testMethod  thrpt   25  286.867 ± 2.274  ops/s

性能测试总结

个人电脑得出的基准测试结果仅供参考。

测试结果百分比
JDK 8 编译运行基准测试125.971 ± 0.545100%
JDK 11 编译运行基准测试284.639 ± 1.304225.96%
JDK 11 运行 JDK 8 编译的基准测试286.867 ± 2.274227.72%

可以看到 Java 11 的字符串拼接性能相比 Java 8 有了很大的提升。而且即使是 Java 8 编译的代码,用 Java 11 运行字符串拼接性能也得到了提升。


  1. http://www.eclipse.org/openj9/docs/xxcompactstrings/ ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuweijie@apache.org

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值