普通视图

发现新文章,点击刷新页面。
昨天 — 2026年4月17日首页

OpenClaw Workspace 完全指南——打造你的专属 AI 编程助手

作者 伯衡君
2026年4月17日 11:58
最近伯衡君在研究如何更好地使用 OpenClaw 这个多渠道 AI 智能体 Gateway 网关,发现它的 Workspace(工作区)功能非常强大。作为一名程序员,伯衡君最看重的是 OpenClaw 强大的编程辅助能力——它可以帮助你写代码、调试程序、管理项目。通过合理配置工作区,你可以让 AI 拥有"记忆",理解你的代码风格和编程偏好,成为真正的专属编程助手。今天伯衡君就把这份完整的工作区配置指南分享给大家……
昨天以前首页

从 1960 到 2026:一文看透 Java、Go、Python 垃圾回收器的原理与演进

作者 bigwhite
2026年4月7日 08:17

本文永久链接 – https://tonybai.com/2026/04/07/garbage-collectors-deep-dive

大家好,我是Tony Bai。

为什么 Java 的 G1GC 需要设置停顿目标?Go 的混合写屏障是如何消除栈重扫的?Python 又是如何解决引用计数无法处理的循环引用?

垃圾回收(GC)不仅是语言运行时的核心,更是理解高性能系统绕不开的坎。

本文翻译自Shubham Raizada的文章《Garbage Collection: From First Principles to Modern Collectors in Java, Go and Python》。

此文通过对历史经典论文的溯源和对现代主流语言底层实现的拆解,构建了一套完整的 GC 知识体系。

文章涵盖了从基础的标记-清除、复制与整理算法,到复杂的三色标记抽象、写屏障机制以及有色指针技术。

无论你是想调优 JVM 性能,还是试图理解 Go 并发垃圾收集的吞吐成本,这篇文章都将为你提供从理论支撑到代码实现的全景视角。

以下是译文全文:


在过去的几年里,我的技术栈经历了从 Java 到 Go,再到 Rust,现在又回到了 Java 的过程。

在这些语言之间切换时,一直绕不开的一个话题就是垃圾回收(Garbage Collection, GC)。Java 和 Go 有 GC,而 Rust 没有。

在基准测试、延迟讨论以及“为什么这个服务变慢了”的对话中,GC 总会出现在某个角落。我经常听到关于 GC pauses(GC 停顿)、throughput overhead(吞吐量开销)和 write barriers(写屏障)的讨论,但我并不完全理解底层发生了什么。

在追溯起源时,我读到了 McCarthy 1960 年的论文,这篇论文因引入 Lisp 而闻名,但它也是首次描述 mark-and-sweep(标记-清除)的地方。

这又引导我阅读了 Wilson 1992 年的综述《Uniprocessor Garbage Collection Techniques》,该文将随后的所有发展组织成了一个清晰的分类学。

阅读这两篇文献让我更容易理解现代垃圾收集器,因为 G1GC、ZGC、Go 的并发收集器以及 CPython 的混合方案全都是这些论文所描述思想的变体。我还用 Go 编写了一个简单的玩具级 GC,以便亲自观察其机制。

以下是我在这一过程中的笔记。

起源论文

McCarthy (1960): Recursive Functions of Symbolic Expressions and Their Computation by Machine

这篇论文因引入 Lisp 而闻名,但垃圾回收器几乎是作为实现细节被埋藏在其中的。McCarthy 需要一种方法来管理符号表达式的内存。Lisp 程序操作的是嵌套的列表(lists of lists of lists),这种递归结构使得要求程序员手动释放内存变得不切实际。因此,他描述了一种自动执行此操作的机制。

该机制分为两个阶段。首先,从程序正在活跃使用的 root(根)变量开始,遍历它们引用的每一个对象,将每个对象标记为 reachable(可达)。其次,扫描所有内存。任何未被标记的对象都是垃圾。将它们重新添加回 free list(空闲列表)。

这就是 mark-and-sweep(标记-清除)。它能自然地处理 cycles(循环引用,因为不可达的循环永远不会被标记),不需要逐个对象的簿记工作,并让程序员可以完全忽略内存管理。

其代价是程序在收集器运行时必须完全停止。每一次分配、每一次计算,所有一切都会冻结,直到标记和清除完成。对于 McCarthy 在 1960 年编写的程序来说,这完全是合理的。

随着程序规模变大并进入对延迟敏感的环境(如处理每秒数千次请求的 Web 服务器),stop-the-world(全线停顿)成了一个难以接受的权衡。现代 GC 研究产生的大部分成果都是为了回答一个问题:如何在不停止世界的情况下进行垃圾内存回收?

Wilson (1992): Uniprocessor Garbage Collection Techniques

到 1992 年,三十年的 GC 研究已经产生了许多想法,但缺乏统一的词汇。Wilson 的综述论文将这一切组织了起来。它不是一种新算法,而是一个分类学,为散落在几十年论文中的思想赋予了名称和结构。

Wilson 正式确立了所有后续算法构建其上的三种经典算法。

第一种是 mark-and-sweep(标记-清除),即 McCarthy 的原始算法。从 roots 开始,遍历对象图,标记你能触达的所有内容,然后扫过堆并释放任何未标记的内容。它自然处理循环引用,实现简单。缺点是经过足够多的分配和回收循环后,堆会变得 fragmented(碎片化)。存活对象最终散落在各处,中间夹杂着细小的空闲间隙,分配器(allocator)必须更费力地寻找空间。

第二种是 copying(复制算法),有时被称为 semi-space(半空间)。其想法是将堆分成两个相等的部分。你在其中一半进行分配,当它填满时,将所有存活对象拷贝到另一半,然后将第一半完全丢弃。碎片消失了,因为存活对象在拷贝过程中被紧密排列在一起。分配速度很快,因为你只需移动一个 bump pointer(碰撞指针)。代价是有一半的内存始终处于空闲状态,等待成为下一次拷贝的目标。

第三种是 reference counting(引用计数)。每个对象都记录有多少个指针指向它。当创建一个新引用时,计数增加;当移除一个引用时,计数减少。当计数归零时,对象立即被释放。没有追踪过程,没有停顿,销毁是确定性的。问题在于 cycles(循环引用)。如果两个对象相互指向,即使程序中没有任何其他部分可以触达它们,它们的计数也至少为 1。仅靠引用计数,它们永远不会被释放。

除了这三种算法,Wilson 还探讨了现代垃圾回收器赖以生存的两个观察结果。

第一个是 generational hypothesis(分代假说):大多数对象死得早。在实践中,程序分配的临时对象(中间值、请求作用域的缓冲区、循环变量)往往很快变成垃圾,而只有一小部分对象会贯穿整个程序生命周期。如果你频繁回收年轻对象,偶尔回收老对象,你就能将大部分工作集中在堆中主要是垃圾的部分,这比每次都扫描所有内容的代价要小得多。

第二个是 tricolor marking(三色标记),这是一种用于增量和并发收集的抽象。你不再简单地将对象标记为已访问或未访问,而是使用三种颜色:white(白色,尚未见到)、grey(灰色,已见到但子节点尚未扫描)和 black(黑色,已完全处理)。收集器一次处理一个灰色对象。结束时,白色对象即为垃圾。这种抽象使得收集器和应用程序可以同时运行,而不会破坏彼此对堆的视图。Go 的并发 mark-and-sweep 和 ZGC 的并发标记都是这一思想的直接后裔。

本文“现代 GC”部分中的所有内容都可以映射回 Wilson 的分类。工程实现已经变得更加复杂,但底层结构依然如故。

两种基本方法

几乎所有的垃圾回收器要么是 reference counting(引用计数),要么是 tracing(追踪),或者是两者的某种结合。Wilson 的论文围绕这一划分进行组织,三十年后依然成立。

Reference Counting (引用计数)

每个对象维护一个指向它的引用计数。当引用创建时,计数增加。当引用移除时,计数减少。当计数归零时,对象立即被释放。

这是 CPython 所使用的其主要机制。它很简单,并能提供确定性的销毁。当指向文件句柄的最后一个引用消失时,del 运行,文件当场关闭,而不是在以后的某个 GC cycle中。

有两个问题使得引用计数无法独立胜任。

Cycles (循环引用)。 如果对象 A 指向对象 B,且对象 B 指向 A,那么即使程序中没有任何其他部分能触达它们,两者的计数也至少为 1。两者都不会被释放。

这并非理论上的边缘案例。循环引用在链表数据结构、父子关系、观察者模式和缓存中自然出现。稍后在介绍 CPython 的 GC 时,我将讨论 Python 如何处理这个问题。

Per-mutation overhead (每次修改的开销)。 每次指针赋值都需要更新引用计数。在多线程程序中,这些必须是 atomic(原子)操作,成本昂贵得多。每当你将对象传递给函数、返回它或将其赋值给字段时,你都要支付这种代价。

Tracing (追踪式,即 Mark-and-Sweep)

追踪式收集器不跟踪单个引用,而是从一组已知的存活引用(称为 root set,根集合)开始,遍历整个对象图。它能触达的每个对象都被标记为存活。其他所有对象都被释放。

Root set 是起点,因此什么算作 root(根)至关重要。不同语言的答案是相同的:root 是 runtime(运行时)无需追踪就能找到的任何引用。这些指针锚定在程序当前的执行状态中,是在任何遍历开始之前你就知道是存活的东西。

在实践中,roots 分为以下几类。

每个活跃 stack frame(栈帧)中的 local variables(局部变量)和函数参数都是 roots。程序正在活跃地运行这些函数,因此它们引用的任何内容定义上都是在使用中的。

Global and static variables(全局变量和静态变量)是 roots,因为它们在程序的整个生命周期内都存在。

CPU registers(CPU 寄存器)是 roots。因为当 JIT 编译器优化一个热点方法时,它可能会将频繁访问的对象引用保留在 CPU 寄存器中,而不是写回栈。如果 GC 此时运行,寄存器保存着该对象的唯一存活引用。如果 GC 不扫描寄存器,它就会释放一个仍在使用中的对象。为了防止这种情况,运行时在代码中定义了 safe points(安全点),GC 只能在这些点发生,并且在这些点,它会快照寄存器状态以寻找持有的任何引用。

Runtime(运行时)本身也持有与用户代码无关的 roots。在 JVM 中,class loaders 是 roots:你加载的每个类都由其类加载器引用,只要类加载器存活,它加载的每个类(包括它们的静态字段)就保持存活。Interned strings(常量池字符串)是 roots,因为 String.intern() 将字符串存储在 JVM 维护的共享池中。JNI handles 是 roots,因为当原生 C 或 C++ 代码通过 Java Native Interface 持有 Java 对象的引用时,该引用存在于 Java 堆外的句柄表中,GC 必须扫描它。每个活跃线程都是一个 root,其整个调用栈帧都是 root set 的一部分。

Go 的运行时遵循同样的原则。每个 goroutine 都有自己的栈,必须扫描所有 goroutine 栈以寻找 roots。运行时还跟踪自己的内部数据结构,例如 finalizer 队列,作为 root set 的一部分。

核心见解是:roots 是由运行时在无需追踪的情况下就已经知道是存活的东西定义的。其他所有东西必须通过从 root 可达来证明自己的生存权。这就是为什么这个概念是与语言无关的。Java、Go 和 Python 之间的具体 roots 集合有所不同,但原则是一样的:从你知道是存活的地方开始,向外追踪,并回收其余部分。

循环引用被自然处理。如果 A 和 B 相互指向,但都无法从任何 root 到达,则标记阶段永远不会访问它们。它们保持未标记状态并被清除。

代价:朴素的 mark-and-sweep 必须在追踪堆时暂停整个程序。这种 stop-the-world(全线停顿)是早期垃圾回收器的核心问题,也是现代 GC 几十年来工程化改进的重点。

为什么大多数现代 GC 都是追踪式的

在具有高分配速率的服务器工作负载中,引用计数的逐次修改成本会积少成多。每次指针写入都会增减计数。在多线程程序中,这些更新必须是原子的,而原子操作很昂贵。在数十个线程中每秒进行数千次分配时,这种开销变得可衡量。此外,循环引用问题无论如何都需要一个补充的追踪步骤。而且追踪式收集器可以做成并发的,在应用程序运行的同时运行,只有简短的停顿。

Java 和 Go 使用追踪式收集器。Python 是一个显著的例外,它以引用计数为基础,并在此之上增加了一层用于追踪循环引用的检测器。

追踪式的变体

Wilson 的论文描述了实现追踪的四种方式,每种方式都有不同的权衡。

Mark-Sweep (标记-清除)

最简单的追踪式收集器。分为两个阶段:

  1. Mark (标记): 从 roots 开始,遍历对象图并在每个可达对象上设置标记位。
  2. Sweep (清除): 遍历整个堆。任何没有标记位的对象都是垃圾。释放它并将内存添加回空闲列表。

Mark-sweep 的主要问题是 fragmentation(碎片化)。经过足够的回收周期后,堆看起来就像瑞士奶酪:存活对象散布其间,中间有很小的空闲间隙。你总共可能有 100MB 空闲内存,但没有一个连续的块大到足以满足一次新分配。分配器必须维护一个 free list 并搜索合适的空间,随着堆变得碎片化,这会变慢。

Copying (Semi-Space,复制算法/半空间)

堆被分成两个相等的一半:from-space(源空间)和 to-space(目标空间)。分配发生在 from-space,使用简单的 bump pointer(碰撞指针)。当 from-space 填满时,收集器将所有存活对象拷贝到 to-space,更新所有指针,然后交换两者的角色。旧的 from-space 被完全丢弃。

分配速度极快,因为它只是一个指针移动。Compaction(压缩)自然发生。代价是任何时候只有一半的堆可用。

Mark-Compact (标记-整理)

标记阶段与 mark-sweep 相同,但收集器不是简单地释放未标记的对象,而是将所有存活对象滑动到堆的一端。这消除了碎片,且没有复制算法 50% 的内存开销。

缺点是整理需要对堆进行多次扫描:一次标记,一次计算新地址,一次更新所有指针,一次移动对象。

The Generational Hypothesis (分代假说)

Wilson 论文中最具影响力的观察之一是弱分代假说:大多数对象死得早。

在典型的 Web 服务器中,每个请求都会创建临时对象(解析器、中间字符串、响应构建器),它们只存活几毫秒。配置对象、连接池和缓存则贯穿整个应用程序生命周期。

分代收集器利用这一点,将堆划分为 generations(代)。新对象进入 young generation(年轻代)。如果它们在几次回收中幸存下来,就会被提升到 old generation(老年代)。年轻代回收频繁且速度快,因为那里的大多数对象已经死了。老年代回收较少发生。

Eden 是所有新对象出生的地方。每一个 new Object() 都去这里。它很快就会填满,因为大多数程序分配速率很高。

S0 和 S1 是两个较小的 survivor spaces(幸存者空间)。当 Eden 填满并运行 minor GC(次要回收)时,收集器将 Eden 中的每个存活对象拷贝到其中一个空间(比如 S0)。下一次回收时,来自 Eden 和 S0 的幸存者被拷贝到 S1。再下一次,回到 S0。它们在每个周期轮换。这是年轻代中的复制算法:没有碎片,没有空闲列表,只有两半空间轮流充当目标。代价是你需要两个幸存者空间,但它们保持得很小,因为到回收运行时,Eden 中的大多数对象都已经死了。

Promotion to old generation (提升到老年代)。 在对象在 S0 和 S1 之间反弹足够多次之后(JVM 中的默认阈值是 15 次),收集器认定它已赢得了一席之地,并将其提升到老年代。老年代回收频率低得多,并且使用更重的算法(标记-整理而非复制),因为那里的对象庞大且长寿。

关键的实现挑战是跟踪从老对象到新对象的引用。如果一个老对象指向一个年轻对象,即使没有年轻代 root 指向它,该年轻对象也绝不能被回收。这通过 write barrier(写屏障)解决,即在每次指针写入时注入的一小段代码,用于在 remembered set(记录集)中记录跨代引用。

用 Go 构建一个玩具级 Mark-and-Sweep GC

我写了一个极简的 mark-and-sweep 收集器来使这些概念具体化。它大约有 70 行代码,演示了完整循环:分配对象、构建对象图、从 roots 标记以及清除不可达对象。

package main

import "fmt"

// Object 代表一个在堆上分配的对象。
type Object struct {
    name     string
    marked   bool
    children []*Object
}

// VM 是一个带有垃圾回收器的微型虚拟机。
type VM struct {
    heap  []*Object
    roots []*Object // 模拟栈变量和全局变量
}

// NewObject 在 VM 的堆上分配一个对象。
func (vm *VM) NewObject(name string) *Object {
    obj := &Object{name: name}
    vm.heap = append(vm.heap, obj)
    return obj
}

// mark 从每个 root 开始遍历并标记所有可达对象。
func (vm *VM) mark() {
    for _, root := range vm.roots {
        vm.markObject(root)
    }
}

func (vm *VM) markObject(obj *Object) {
    if obj == nil || obj.marked {
        return
    }
    obj.marked = true
    for _, child := range obj.children {
        vm.markObject(child)
    }
}

// sweep 释放未标记的对象并重置幸存者的标记。
func (vm *VM) sweep() {
    alive := []*Object{}
    for _, obj := range vm.heap {
        if obj.marked {
            obj.marked = false // 为下一个 GC 周期重置
            alive = append(alive, obj)
        } else {
            fmt.Printf("  collected: %s\n", obj.name)
        }
    }
    vm.heap = alive
}

// GC 运行一次完整的 mark-and-sweep 回收。
func (vm *VM) GC() {
    fmt.Printf("gc: heap has %d objects\n", len(vm.heap))
    vm.mark()
    vm.sweep()
    fmt.Printf("gc: %d objects remain\n\n", len(vm.heap))
}

func main() {
    vm := &VM{}

    a := vm.NewObject("A")
    b := vm.NewObject("B")
    c := vm.NewObject("C")
    _ = vm.NewObject("D") // 已分配但从未链接到任何东西

    // 构建图: A -> B -> C
    a.children = append(a.children, b)
    b.children = append(b.children, c)

    // 只有 A 是 root
    vm.roots = append(vm.roots, a)

    fmt.Println("=== GC #1: D is unreachable ===")
    vm.GC()

    // 创建循环: C -> A, 然后移除所有 roots
    c.children = append(c.children, a)
    vm.roots = nil

    fmt.Println("=== GC #2: A->B->C->A cycle, no roots ===")
    vm.GC()
}

运行结果:

=== GC #1: D is unreachable ===
gc: heap has 4 objects
  collected: D
gc: 3 objects remain

=== GC #2: A->B->C->A cycle, no roots ===
gc: heap has 3 objects
  collected: A
  collected: B
  collected: C
gc: 0 objects remain

第一次回收:A、B 和 C 通过 root A 可达。D 没有任何 root 路径,因此被回收。

第二次回收:A、B 和 C 形成了一个循环(A->B->C->A),但没有 roots。标记阶段从未访问过它们中的任何一个。所有三个都被清除了。这正是击败引用计数的场景。循环中的每个对象都有非零的引用计数,但没有一个能从 root 到达。

追踪式 GC 不关心循环。它们只关心从 roots 开始的可达性。

有一点需要注意:markObject 函数使用了递归,这在深层对象图上会耗尽栈空间。真实的垃圾回收器使用显式的 worklist(工作列表)而不是调用栈。

现代 GC 实现

上面的玩具收集器为了整个标记和清除过程停止了世界。现代 GC 已经进化到在应用程序持续运行的同时并发完成大部分工作。

Go: 三色并发标记-清除 (Tri-Color Concurrent Mark-and-Sweep)

Go 的垃圾回收器是非分代的、非整理的且并发的。它不按年龄区分对象,也不在内存中移动对象。其重点是保持低停顿时间。

收集器使用三色抽象(tri-color abstraction)进行并发标记。每个对象处于三种状态之一:

  • White (白色): 尚未访问。标记结束时仍为白色的任何东西都是垃圾。
  • Grey (灰色): 已访问,但其子节点尚未全部扫描。遍历的前沿(frontier)。
  • Black (黑色): 已访问,所有子节点已扫描。确定存活。

收集器开始时将所有对象设为白色,然后将 roots 设为灰色,并处理灰色对象直到不再剩余。所有仍为白色的内容都被清除。

开始: 所有对象为白色,roots 为灰色

步骤 1: 选取一个灰色对象,扫描其子节点
        - 将子节点标为灰色
        - 将扫描过的对象标为黑色

步骤 2: 重复直到没有灰色对象剩余

步骤 3: 所有白色对象都是垃圾

示例:

  Roots: [A]

  开始:      A(grey) --> B(white) --> D(white)
             A(grey) --> C(white)

  扫描 A:    A(black) --> B(grey) --> D(white)
             A(black) --> C(grey)

  扫描 B:    A(black) --> B(black) --> D(grey)
             A(black) --> C(grey)

  扫描 C:    A(black) --> B(black) --> D(grey)
             A(black) --> C(black)

  扫描 D:    A(black) --> B(black) --> D(black)
             A(black) --> C(black)

  结果: 任何剩余的白色对象都是垃圾并被释放

难点在于应用程序在收集器遍历时持续运行并修改指针。这造成了一个需要仔细处理的正确性问题。

收集器认为黑色对象已完成。一旦对象变黑,收集器就不会再扫描它。它的所有子节点都已被访问并设为灰色。但是,如果应用程序在收集器仍在运行时,将一个指向白色对象的指针写入黑色对象,收集器就有麻烦了。黑色对象已经处理完了。该白色对象也无法从任何灰色对象触达。当标记阶段结束并清除运行时,该白色对象将被释放,即便有一个存活的黑色对象指向它。

这被称为 tricolor invariant(三色不变性):黑色对象绝不能直接指向白色对象。如果发生了这种情况,白色对象对收集器是不可见的,会被错误释放。write barrier(写屏障)的存在专门用于在并发标记期间应用程序修改对象图时维护这一不变性。

Go 通过 hybrid write barrier(混合写屏障,Go 1.8 引入)解决了这个问题。要理解它为什么有效,看看它结合的两种旧屏障会有所帮助。

Dijkstra’s 插入屏障 (1978):每当一个指针被写入对象时,将新的被引用者设为灰色。如果一个黑色对象存储了对白色对象的引用,该白色对象会在收集器错过它之前变灰。这维护了三色不变性。

问题在于 goroutine 栈与堆对象不同。编译器在堆指针写入处注入写屏障,例如写入结构体字段或切片元素。栈写入是局部变量赋值,编译器对其分别处理。在每一个局部变量赋值上放屏障会使函数调用和基本操作变得极其昂贵,所以屏障不覆盖它们。这意味着在并发标记期间,goroutine 可以自由地将指向白色对象的指针写入局部变量,而没有屏障触发。收集器不知道发生了这事。

为了修复这一点,在并发标记结束时,Go 曾经必须停止世界并从头重新扫描每个 goroutine 的整个栈。重新扫描时发现的任何指向白色对象的指针都会变灰,防止它们被错误释放。此步骤的停顿时间随着 goroutine 数量和其栈大小而增加。拥有成千上万个 goroutine 的程序可能会看到数毫秒的 STW 停顿,仅仅是为了这次重新扫描。这是 Go 1.8 之前主要的 STW 停顿来源。

Yuasa’s 删除屏障 (1990) 采取相反的方法:每当一个指针即将被覆盖时,在旧引用消失前将其变灰。这确保了在标记开始时可达的任何东西直到结束都保持可达,即便应用程序在标记期间丢弃了它的引用。缺点是标记期间死亡的一些对象会存活到下一个周期(floating garbage,浮动垃圾),因为屏障保守地让它们活着。

Go 的混合屏障结合了两者。在堆写入时,它同时应用两种屏障:将旧引用变灰(Yuasa)并将新引用变灰(Dijkstra)。在栈写入时,不运行屏障,但栈上新分配的对象开始时就是黑色而不是白色。这种组合赋予了收集器足够强的不变性,使其在标记结束时永远不需要重新扫描栈。STW 停顿从几十毫秒降到了不到一毫秒。

// 混合屏障在堆指针写入时的逻辑:
// *slot = new_ptr

shade(*slot)   // 将旧引用变灰 (Yuasa: 不要丢掉之前在那里的内容)
shade(new_ptr) // 将新引用变灰 (Dijkstra: 不要错过新到来的内容)
*slot = new_ptr

这就是并发垃圾回收的吞吐量成本:标记阶段的每一次堆指针写入都要运行此 shade 逻辑。单次操作开销虽小,但在高分配速率下会累积。权衡的结果是你获得了亚毫秒级的 STW 停顿,而不是几十毫秒。

Go 仅简短地停止世界以扫描 goroutine 栈并切换写屏障的开关。实际的标记和清除与应用程序并发进行。

No compaction (无整理)。 Go 在分配后不移动对象。相反,Go 使用 tcmalloc 风格的分配器,将内存划分为 size classes(大小类),并从每个处理器的缓存(per-processor caches)中分配。对象被分组为固定的大小类(8 字节、16 字节、32 字节,最高达 32 KB)。分配时从空闲列表中选取合适大小的槽。这减少了碎片而无需移动对象,但并不能完全消除碎片。

No generational collection (无分代收集)。 Go 团队的理由是,考虑到 Go 典型的带有 goroutine 和并发工作负载的分配模式,分代 GC 增加的复杂性(用于跟踪老到新指针的写屏障、提升逻辑、分代大小调优)带来的收益是不确定的。Go 通过使其并发标记器足够快来补偿,从而使额外的回收频率变得可以接受。

关键里程碑:

  • Go 1.5 (2015):引入并发 GC。在此之前,Go 使用全停顿收集器,停顿时间达 10-100ms 或更多。此版本使 Go 能够胜任延迟敏感型服务。
  • Go 1.8 (2017):混合写屏障。降低了在并发标记期间维护三色不变性的开销。
  • Go 1.19 (2022):GOMEMLIMIT。使 Go 程序能在容器环境的内存预算内工作。

GOGC 调节旋钮。 Go 提供了一个主要的调优参数:GOGC。它控制在下一次 GC 触发之前堆可以增长多少。默认值是 100,意味着当堆自上次回收以来翻倍时触发 GC。

GOGC=100 (默认):
  GC 后,存活堆 = 500MB
  下次 GC 触发点: 500MB * (1 + 100/100) = 1000MB

GOGC=50 (更激进):
  GC 后,存活堆 = 500MB
  下次 GC 触发点: 500MB * (1 + 50/100) = 750MB

GOGC=200 (较保守):
  GC 后,存活堆 = 500MB
  下次 GC 触发点: 500MB * (1 + 200/100) = 1500MB

更低的 GOGC 意味着更频繁的回收(更低的内存占用,更高的 CPU 开销)。更高的 GOGC 意味着较少的回收(更高的内存占用,更低的 CPU 开销)。

Go 1.19 增加了 GOMEMLIMIT,这是一个软内存限制。在具有硬性内存预算的容器环境中,GOMEMLIMIT 告诉 GC pacer(步调算法)在内存使用接近限制时变得更加激进。

亲自尝试:

package main

import (
    "fmt"
    "runtime"
    "time"
)

var longLived []*[1024 * 1024]byte

func main() {
    fmt.Println("Go version:", runtime.Version())

    for round := 0; round < 50; round++ {
        // 短寿对象: 分配小对象,让它们死亡
        for i := 0; i < 5000; i++ {
            _ = make([]byte, 1024)
        }

        // 长寿对象: 每 10 轮保留一个
        if round%10 == 0 {
            arr := new([1024 * 1024]byte)
            longLived = append(longLived, arr)
        }

        time.Sleep(50 * time.Millisecond)
    }

    var stats runtime.MemStats
    runtime.ReadMemStats(&stats)
    fmt.Printf("Total GC cycles: %d\n", stats.NumGC)
    fmt.Printf("Total STW pause: %v\n", time.Duration(stats.PauseTotalNs))
    fmt.Printf("Long-lived objects: %d\n", len(longLived))
}

运行并开启 GC 追踪:

GODEBUG=gctrace=1 go run gcdemo.go

观察输出内容:

gc 1 @0.011s 1%: 0.044+0.56+0.13 ms clock, 0.62+0.21/0.57/0+1.8 ms cpu, 3->4->0 MB, 4 MB goal, 0 MB stacks, 0 MB globals, 14 P

从左到右阅读:

  • gc 1: GC 周期编号
  • @0.011s: 自程序启动的时间
  • 1%: 到目前为止 GC 消耗的 CPU 百分比
  • 0.044+0.56+0.13 ms clock: GC 周期的三个阶段:STW 标记开始 (0.044ms) + 并发标记和扫描 (0.56ms) + STW 标记结束 (0.13ms)。STW 停顿是 clock 字段中的第一个和第三个数字。在此例中,应用程序被冻结的总墙钟时间是 0.044 + 0.13 = 0.174ms。中间的 0.56ms 是并发的:你的应用程序一直在运行。在 Go 中,STW 停顿通常在 1ms 以下,往往远低于 0.1ms。

  • 0.62+0.21/0.57/0+1.8 ms cpu: CPU 时间细目。格式为:STW-开始 + 辅助/背景/空闲 + STW-结束。每个数字代表:

    • 0.62ms — STW 标记开始时所有核心的 CPU 总时间。高于墙钟时间 (0.044ms),因为 Go 会在多个核心上并行化初始栈扫描。
    • 0.21ms — 应用程序 goroutine 执行 mutator assists(赋值器辅助)所花费的 CPU 时间。当某个 goroutine 分配速度超过 GC 处理速度时,它会被“征税”,必须在允许其分配之前自己做一些标记工作。
    • 0.57ms — 专用背景 GC 工作 goroutine 执行并发标记所使用的 CPU 时间。
    • 0 — 空闲 GC 工作者的 CPU 时间(仅在调度器没有其他任务运行时才领取 GC 任务的 goroutine)。此处为零意味着专用工作者处理了所有事情。
    • 1.8ms — STW 标记结束时所有核心的 CPU 总时间。高于墙钟 (0.13ms),因为多个核心并行工作以排空剩余任务并禁用写屏障。

当多个核心并行工作时,CPU 时间可以超过墙钟时间。并发阶段的 CPU 时间可能少于墙钟时间,因为 GC 与你的应用程序共享核心。

  • 3->4->0 MB: GC 开始时的堆大小、GC 触发点的堆大小、GC 完成后的存活堆大小
  • 4 MB goal: 下次 GC 触发前的目标堆大小(基于 GOGC 和当前存活堆)
  • 0 MB stacks: goroutine 栈使用的内存
  • 0 MB globals: 标记期间扫描的全局变量使用的内存
  • 14 P: 逻辑处理器数量 (GOMAXPROCS)

Java: G1GC (Garbage First Collector)

G1GC 自 JDK 9 以来一直是 Java 的默认垃圾回收器。它是一个分代的、基于区域(region)的收集器。它进行追踪、标记和整理,但它是增量式进行的,而不是一次性完成。

Region layout (区域布局)。 G1 将堆划分为大小相等的区域,通常每个区域为 1MB 到 32MB,取决于堆的大小。每个区域在任何时候扮演四种角色之一:Eden(伊甸园)、Survivor(幸存者)、Old(老年代)或 Humongous(巨型对象,用于超过半个区域大小的对象)。区域的角色可以在不同回收周期之间改变。

Young collection (次要 GC)。 Eden 区域填满。G1 停止世界,使用并行多线程标记器标记 Eden 和 Survivor 区域中的存活对象,将幸存者拷贝到新的 Survivor 区域或提升到 Old 区域,并完全丢弃旧的 Eden 区域。这是一个并行的 STW 停顿,但很短,因为年轻代区域较小且年轻对象大多已死。

Mixed collection (混合回收)。 G1 周期性地运行并发标记周期,以找出哪些老年代区域包含的垃圾最多。然后运行混合回收:同时疏散(evacuating)年轻代区域和最具“盈利价值”的老年代区域。这就是“Garbage First”名称的由来。G1 总是优先选取垃圾密度最高的老年代区域,从而在单位停顿时间内实现最大的回收量。

SATB (Snapshot-At-The-Beginning,起始快照)。 在并发标记期间,应用程序持续运行并修改对象图。G1 使用 SATB 维护正确性。在标记开始时,G1 对哪些对象存活进行逻辑快照。该快照中存活的对象在此周期被视为存活,即使应用程序在标记期间丢弃了它们。写屏障将修改字段的旧值记录到 SATB 队列中。这种做法是保守的(一些垃圾会存活到下个周期),但是正确的。

并发标记正在运行。应用程序执行:
  obj.field = null   (原本指向 X)

没有 SATB: X 可能没有其他引用,未被标记,在使用中被释放。
有 SATB:    写屏障记录“此处曾有 X”,将 X 标为灰色。安全。

Pause target (停顿目标)。 你可以通过 -XX:MaxGCPauseMillis 配置 G1 的目标最大停顿时间。默认值是 200ms。G1 通过调整区域数量、回收集合大小和时机,尝试将停顿保持在目标范围内。它并不总是能成功,特别是在 Full GC 期间,但它是主要的调优旋钮。

亲自尝试:

import java.util.ArrayList;
import java.util.List;

public class GCDemo {
  static List<byte[]> longLived = new ArrayList<>();

  public static void main(String[] args) throws InterruptedException {
    System.out.println("Starting GC demo...");

    for (int round = 0; round < 50; round++) {
      // 短寿对象:创建并立即丢弃
      for (int i = 0; i < 1000; i++) {
        byte[] tmp = new byte[10 * 1024]; // 每个 10KB
      }

      // 长寿对象:保留一些对象以构建老年代
      if (round % 5 == 0) {
        longLived.add(new byte[1024 * 1024]); // 1MB
      }

      Thread.sleep(50);
    }

    System.out.println("Done. Long-lived objects: " + longLived.size());
  }
}

使用 G1GC 日志运行:

# 编译
javac GCDemo.java

# 使用 G1GC (Java 9+ 默认) 并开启 GC 日志
java -Xmx256m \
     -XX:+UseG1GC \
     "-Xlog:gc*:file=gc_g1.log:time,uptime,level,tags" \
     GCDemo

# 或者,使用简洁的一行输出
java -Xmx256m -Xlog:gc GCDemo

观察日志:

[0.005s][info][gc] Using G1
[0.135s][info][gc] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 26M->3M(256M) 0.644ms
[0.812s][info][gc] GC(1) Pause Young (Normal) (G1 Evacuation Pause) 132M->7M(256M) 0.707ms
[1.710s][info][gc] GC(2) Pause Young (Normal) (G1 Evacuation Pause) 165M->13M(256M) 1.019ms
[2.528s][info][gc] GC(3) Pause Young (Normal) (G1 Evacuation Pause) 171M->19M(256M) 0.964ms

阅读日志:

  • Using G1: 确认 G1GC 是活跃收集器
  • Pause Young (Normal): 回收 Eden 和 Survivor 区域的次要 GC
  • G1 Evacuation Pause: G1 正在将存活对象从回收区域拷贝(疏散)到新区域
  • 26M->3M(256M) 0.644ms: 堆之前是 26MB,之后是 3MB,总堆容量 256MB,停顿耗时 0.644ms
  • 在 2.5 秒的运行时中进行了四个 GC 周期,每个周期在 1.1ms 内完成。大多数分配的对象都是短寿的,并在年轻代被回收。

Java: ZGC (Z Garbage Collector)

ZGC 自 Java 11 起可用,并在 Java 15 中达到生产就绪状态。扩展了分代收集的 Generational ZGC 在 Java 21 中引入。ZGC 的目标是无论堆大小如何(包括数百 GB 的堆),停顿时间均保持在亚毫秒级。

G1 在年轻代回收时停顿较短,但随着堆的增长,在并发标记设置和混合回收期间会有更长的停顿。ZGC 的方法不同:它几乎将所有工作(标记、重定位、引用处理)并发进行,将 STW 工作降至最低。

Colored pointers (有色指针)。 ZGC 直接在指针位中编码 GC 元数据。在 64 位平台上,指针宽度为 64 位,但你实际上并不需要所有 64 位来寻址内存。2^42 就能给你 4TB 的可寻址空间,这超出了大多数应用程序的使用范围。这使得每个指针中留有超过 20 位空闲。ZGC 重新利用其中一些空闲位,直接在指针内部存储 GC 状态。

每个元数据位都有特定用途:

  • M0 和 M1 (标记位): 用于跟踪对象是否已被标记为存活。ZGC 在每个 GC 周期中交替使用 M0 和 M1。在周期 1,收集器对每个可达对象设置 M0。在周期 2,它改用 M1。这样收集器就能区分“本周期标记”和“上个周期标记”,而无需在周期之间清除所有标记位。

  • Remap (R,重映射): 此位跟踪在对象重定位(relocated)后指针是否已更新。在并发重定位期间,ZGC 将对象移动到新地址,但并不立即更新堆中的每一个指针。相反,它保留旧指针,并使 remap 位处于未设置状态。当应用程序加载这些过时指针之一时,load barrier(读屏障/加载屏障)会注意到 remap 位未设置,并对其进行修正。

  • Finalizable (F): 表示该对象具有一个需要在释放前运行的 finalizer。

巧妙之处在于元数据随指针移动。GC 不需要一个单独的侧表来查找对象的 GC 状态。每个指针都已经携带了它。

Load barriers (加载屏障)。 每次应用程序从堆加载引用时,ZGC 都会插入一个加载屏障。屏障检查指针的颜色位,如果它们不处于预期状态,则采取行动。

以下是实际操作中的情况。假设收集器在并发重定位阶段将一个对象从地址 0×1000 移动到了 0×2000。应用程序仍然持有一个地址为 0×1000 且 remap 位未设置的指针。

应用程序代码:
  Object x = obj.field;

实际执行的内容:
  raw_ptr = load obj.field           // raw_ptr = 0x1000, remap bit = 0
  if (raw_ptr.color != expected) {   // remap bit 为 0, expected 为 1 → 进入 slow path
      new_addr = forwarding_table[0x1000]  // 查找: 对象已移动到 0x2000
      raw_ptr = set_address(raw_ptr, 0x2000)
      raw_ptr = set_remap_bit(raw_ptr)
      obj.field = raw_ptr            // 就地修正指针,以便下次使用
  }
  x = raw_ptr                       // x 现在指向 0x2000

下次任何线程加载 obj.field 时,remap 位已经设置好了。屏障检查通过 fast path,没有额外工作。过时指针在第一次访问时被惰性修正。

这是关键机制。与其像 G1 在疏散期间那样让 GC 停止世界以一次性更新所有指向重定位对象的指针,ZGC 让应用程序在遇到指针时逐个修正。代价是每次指针加载都要支付屏障检查的开销,即便没有任何东西被重定位。在实践中,fast path(检查几位)执行代价足够小,与避免 STW 重定位停顿带来的收益相比,开销很小。

Concurrent relocation (并发重定位)。 G1 停止世界以将存活对象从回收区域中疏散。ZGC 在应用程序运行的同时重定位对象。它能做到这一点是因为加载屏障处理了指针修正。在启动和结束每个阶段(标记开始、标记结束、重定位开始)时有简短的 STW 停顿,但这些通常远低于 1ms。拷贝对象和修正指针的实际工作是并发发生的。

Generational ZGC (Java 21+)。 最初的 ZGC 不按年龄划分堆。分代 ZGC 增加了年轻代和老年代,同时保留了亚毫秒级停顿的保证。它更频繁地回收年轻区域(垃圾最多的地方),较少回收老年代区域。加载屏障和有色指针机制被扩展以处理分代写屏障。

何时使用 ZGC vs G1:

亲自尝试:

# 使用 ZGC 运行
java -Xmx256m \
     -XX:+UseZGC \
     "-Xlog:gc*:file=gc_zgc.log:time,uptime,level,tags" \
     GCDemo

# 使用分代 ZGC (Java 21+)
java -Xmx256m \
     -XX:+UseZGC -XX:+ZGenerational \
     -Xlog:gc \
     GCDemo

观察日志:

[0.318s] GC(0) Garbage Collection (Warmup) 28M(11%)->12M(5%)
[0.321s] GC(0) Pause Mark Start 0.023ms
[0.489s] GC(0) Concurrent Mark 168.123ms
[0.491s] GC(0) Pause Mark End 0.019ms
[0.492s] GC(0) Concurrent Select Relocation Set 1.234ms
[0.502s] GC(0) Concurrent Relocate 10.456ms

STW 停顿是标记为“Pause”的行。其他所有内容都是并发的。将此处的停顿持续时间与 G1 的输出进行对比。

Python: 引用计数加循环 GC

CPython(Python 的参考实现)是“追踪式收集器占主导”模式的主要例外。它使用引用计数作为主要机制,并在之上增加了一层用于追踪循环引用的检测器。

CPython 中的引用计数。

每个 Python 对象都有一个 ob_refcnt 字段。Python 的 C API 在 Py_INCREF 时增加,在 Py_DECREF 时减少。当计数归零时,对象在 _Py_Dealloc 中被立即释放。这赋予了 Python 确定性的销毁:del 方法和上下文管理器的 exit 调用在最后一个引用掉落的那一刻发生。

import sys

x = []
print(sys.getrefcount(x))  # 2: 1个来自x,1个来自getrefcount参数本身的临时引用

y = x
print(sys.getrefcount(x))  # 3: 1个x, 1个y, 1个getrefcount参数

del y
print(sys.getrefcount(x))  # 2: 回到1个x, 1个getrefcount参数

循环引用问题。 仅靠引用计数无法回收循环垃圾。

import gc

# 创建循环引用
class Node:
    def __init__(self, name):
        self.name = name
        self.ref = None

a = Node("A")
b = Node("B")
a.ref = b
b.ref = a   # cycle: A -> B -> A

# a 和 b 的计数都 >= 1(由于相互引用)。
# 仅靠引用计数,两者都不会被释放。

del a
del b
# a 和 b 依然存活!Refcount: A 为 1 (来自 b.ref), B 为 1 (来自 a.ref)

# 显式触发循环检测器
collected = gc.collect()
print(f"Collected {collected} objects")  # 收集了 4 个对象 (2个node + 2个dict)

引用计数处理了常见情况,但它无法收集循环引用。CPython 的答案是运行在引用计数系统之上的独立循环检测器。其实现在 Modules/gcmodule.c 中。

循环检测器是一个追踪式收集器,但它并不追踪整个堆。它仅跟踪能够参与循环引用的对象:如列表、字典、集合及用户自定义类实例等容器对象。字符串和整数无法持有对其他对象的引用,因此无需跟踪它们。

与 Java 的收集器一样,循环检测器使用分代方法。共有三代,编号为 0、1 和 2。思路与我们之前讨论的分代假说相同:大多数对象死得早,所以经常检查年轻对象,少打扰老对象。默认阈值硬编码在 CPython 的 Modules/gcmodule.c 中:

struct gc_generation generations[NUM_GENERATIONS] = {
    /* PyGC_Head,                                    threshold,    count */
    { {(uintptr_t)_GEN_HEAD(0), (uintptr_t)_GEN_HEAD(0)},   700,        0},
    { {(uintptr_t)_GEN_HEAD(1), (uintptr_t)_GEN_HEAD(1)},   10,         0},
    { {(uintptr_t)_GEN_HEAD(2), (uintptr_t)_GEN_HEAD(2)},   10,         0},
};

你可以验证你的运行时实际使用的是什么:

python3 -c "import gc; print(gc.get_threshold())"
# (700, 10, 10)

请注意,某些框架和发行版会在启动时通过 gc.set_threshold() 覆盖这些默认值,因此你的环境可能显示不同的值。

第 0 代持有新分配的容器对象。当自上次回收以来的新分配数量超过阈值(默认 700)时,回收第 0 代。幸存的对象被提升到第 1 代。在第 0 代被回收 10 次后,第 1 代被回收一次。幸存者移至第 2 代。在第 1 代被回收 10 次后,第 2 代被回收一次。

效果是第 0 代大约每 700 次分配回收一次,第 1 代大约每 7,000 次,第 2 代大约每 70,000 次。进入第 2 代的长寿对象几乎永远不会被打扰。检测器将其大部分时间花在最年轻的对象上,这些对象最有可能最近变成了垃圾。

你可以看到这些计数:

import gc

# 当前各代阈值
print(gc.get_threshold())  # (700, 10, 10)

# 当前分配计数: (gen0分配, 自上次gen1回收以来的gen0回收数, 自上次gen2回收以来的gen1回收数)
print(gc.get_count())  # 例如 (342, 8, 2)

# 强制进行全量回收
gc.collect()

# 完全禁用循环检测器 (如果你确定代码中没有循环引用)
gc.disable()

当检测器在某一代码代上运行时,它需要找出哪些对象仅被循环引用保持存活。通过一个例子更容易理解算法。

假设检测器正在查看三个被跟踪的对象:X、Y 和 Z。X 指向 Y 和 Z。Y 指回 X。还有一个局部变量持有对 X 的引用。

步骤 1:拷贝引用计数。X=2, Y=1, Z=1。

步骤 2:减去内部引用。Y 指向 X,所以从 X 的副本中减 1 (X 从 2 变为 1)。X 指向 Y,所以从 Y 的副本中减 1 (Y 从 1 变为 0)。X 指向 Z,所以从 Z 的副本中减 1 (Z 从 1 变为 0)。

步骤 3:检查剩余部分。X 的调整后计数为 1。被跟踪集合之外的某些东西(局部变量)仍然指向它。X 存活。Y 和 Z 虽然调整后计数为 0,但它们可以从 X 到达,因此它们也幸存下来。

现在想象局部变量消失了。X 的引用计数掉到 1 (只有 Y 指向它)。运行相同算法:拷贝 X=1, Y=1, Z=1。减去内部引用:X 变为 0, Y 变为 0, Z 变为 0。每个调整后的计数都是零。被跟踪集合之外没有任何东西指向它们。它们仅因彼此而存在。三者都是垃圾。

这就是核心思想。算法寻找那些存在的唯一理由是同一集合中其他对象的目标。

有一个边缘案例困扰了多年:finalizers(终结器)。

终结器是运行时在对象被销毁前调用的方法,给予其清理外部资源(如文件句柄或网络连接)的机会。在 Python 中,这就是 del 方法。

假设 A 和 B 处于循环中,且两者都有 del 方法。检测器知道它们是垃圾,但要释放它们,它需要打破循环。问题是:哪个 del 先运行?如果你先运行 A 的终结器,而它尝试使用 B,但 B 已经正在被销毁,你就会崩溃。如果你先运行 B 的,而它使用 A,同样的问题。没有安全的顺序。

在 Python 3.4 之前,CPython 直接放弃处理这些对象。它将它们放入名为 gc.garbage 的列表中,且永远不释放它们。如果你的代码创建了带有 del 的循环引用,你就会有一个静默的内存泄漏。PEP 442 通过在打破任何引用之前调用终结器修复了这个问题。当 A 和 B 的 del 运行时,两者都保持完整。只有在所有终结器执行完毕后,检测器才会打破循环并释放对象。

关于 CPython 的内存模型还有一件事值得了解。每当 Python 执行类似 x = some_object 的操作时,它会增加 some_object 的引用计数(C 语言中的 Py_INCREF)。每当变量超出作用域时,它减少计数 (Py_DECREF)。在 C 中这些是普通的整数操作:refcount += 1, refcount -= 1。没有锁,没有原子指令。

在多线程程序中,这是一个问题。两个线程可能同时增加同一个对象的引用计数。如果没有同步,一个增加操作会丢失(经典的竞态条件),之后该对象可能会在有人仍在使用时被释放。

GIL (全局解释器锁) 防止了这种情况。一次只有一个线程执行 Python 字节码,因此两个线程永远不会同时修改同一个引用计数。GIL 免费使所有引用计数操作变得安全,而无需任何原子指令。

这也是移除 GIL 如此困难的原因。如果拿掉它,整个代码库中的每一个 Py_INCREF 和 Py_DECREF 都需要变成原子操作。原子操作比普通整数增量要昂贵得多。Python 3.13 开始附带实验性的 free-threaded 模式,它使用 biased reference counting(偏向引用计数)来降低这种成本:创建对象的线程可以对引用计数进行廉价的非原子更新,只有访问该对象的其他线程才支付原子操作的代价。

映射回 Wilson:全景图

每一种现代垃圾回收器都可以映射回 Wilson 在 1992 年描述的两个家族。它们之间的区别在于关于如何最小化停顿、处理并发以及高效管理内存的工程决策。

从这一对比中可以观察到几点:

Wilson 的追踪式家族在服务器运行时占据主导地位。 引用计数用于 Swift、Python 和 Rust 的 Arc,但对于具有高分配速率的托管运行时,追踪式收集器是标准做法。循环引用问题无论如何都需要补充追踪步骤,这增加了复杂性,且无法消除每次修改时的引用计数开销。

分代收集除 Go 以外随处可见。 Java 重度利用了分代假说。Python 的循环检测器使用了三代。Go 最初选择不使用分代收集,因为跨代指针写屏障的开销对 Go 的典型工作负载来说不划算。这种情况可能正在改变:最近的 Go 版本中已经开发了实验性的分代支持。

Compaction (整理) vs No compaction 是一个真正的设计分歧点。 Java 收集器进行整理,这允许 bump-pointer 分配(非常快)并消除碎片。Go 不整理,这意味着它永远不需要更新指向已移动对象的指针(更简单的写屏障,无需读屏障以保证正确性)。Go 通过大小类分配器(size-class allocator)来补偿。这是经典的 Wilson 权衡:拷贝和整理收集器以内存开销和指针更新成本换取分配速度和碎片消除。

ZGC 的有色指针是 Wilson 指针标记 (pointer-tagging) 思想的现代实现。 Wilson 提到过在指针中使用位来存储 GC 元数据。ZGC 将此进一步发展,将标记状态、重映射状态和终结状态直接嵌入 64 位指针。在每次指针加载时检查这些位的加载屏障是 ZGC 为亚毫秒级停顿支付的代价。

基本问题从未改变。 从 roots 开始追踪,标记存活内容,回收其余部分。自 1960 年以来的所有发展都是对 McCarthy 原始洞察的工程改进。

参考资料


你的“停顿”时刻

GC 的艺术在于平衡。在你的开发生涯中,是否遇到过因为 GC 停顿导致的生产事故?你是倾向于 Go 的极致低延迟,还是 Java G1GC 的高吞吐?
欢迎在评论区分享你的调优经历或吐槽!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

2026 编程语言“饱和度”榜单出炉:JavaScript/Python 已“烂大街”,Go/Rust 成最大赢家?

作者 bigwhite
2026年4月2日 08:08

本文永久链接 – https://tonybai.com/2026/04/02/2026-programming-language-saturation-rankings-go-rust-winners

大家好,我是Tony Bai。

在这个技术浪潮汹涌、AI 随时可能掀翻牌桌的时代,每一个程序员心中都悬着一个终极问题:

“我现在的技术栈,还能吃几年饭?”

我们每天都在焦虑地刷着各种技术文章,试图从 Google、Anthropic、OpenAI、Nvidia等的风向中,窥探下一个技术红利期。但这些信息往往零散、矛盾,甚至充满了各种培训机构的“幸存者偏差”。

就在半个多月前,X 平台上的一位技术博主 Mojisola Alegbe,基于 Stack Overflow、GitHub Trends、JetBrains 等多方数据,整理并发布了一份极其残酷的私房版《2026 编程语言“饱和度”榜单》。

这篇推文就像一颗深水炸弹,在短短几天内获得了 41.2 万的惊人阅读量。大批开发者涌入评论区,有人哀嚎,有人庆幸,有人愤怒,有人不屑。这张榜单之所以能引爆全网,因为它赤裸裸地揭示了我们这个行业最真实的“供需关系”和“内卷现状”。

今天,我们就来深度扒开这张榜单背后的血泪与真相。看看你我手中的“锤子”,到底还能敲几年钉子。

榜单冲击:你的技术栈,在鄙视链的哪一层?

让我们先深吸一口气,看看这份令人心跳加速的榜单:

  • JavaScript (66%): 极度饱和 (Extremely Saturated)
  • Python (58%): 非常饱和 (Very Saturated)
  • SQL (49%): 非常饱和 (Very Saturated)
  • TypeScript (35-40%): 高度饱和,且仍在快速增长
  • Java (26%): 成熟/稳定饱和
  • C# (18%): 中度饱和
  • PHP (10-11%): 正在衰退,但仍很普遍
  • C++ (6-7%): 小众,但用于关键系统
  • Go (4-5%): 低饱和,需求增长中
  • Kotlin (4-5%): 中度小众 (安卓)
  • Swift (2%): 小型但专业的生态系统
  • Rust (2-3%): 低饱和,但正在崛起

看完这张图,我猜很多人的第一反应是:

  • 前端/Python 工程师:完了,彻底“烂大街”了,明天就去送外卖。
  • Java 工程师:稳如老狗,任你风吹雨打,我自岿然不动。
  • Go/Rust 工程师:心中窃喜,果然选对了赛道,未来可期!
  • PHP 工程师:……(我 PHP 是最好的语言!)

但如果事情真的这么简单,那我们这个行业也未免太无趣了。这张榜单真正有价值的地方,在于它炸出了评论区里无数资深架构师和一线开发者的“人间清醒”。

社区百态:饱和、内卷与“幸存者偏差”

在这张榜单的评论区,你可以看到整个技术圈最真实的生态缩影。

阵营一:饱和焦虑派

“完了,我刚想学编程,这可怎么办?”
“怪不得现在工作这么难找……”

阵营二:不屑一顾派

“语言只是工具,解决问题才是关键。”
“这种指标毫无意义。”

阵营三:人间清醒派(重点看这里!)

这部分评论,往往来自那些穿越了数个技术周期的老炮。他们的观点,破具含金量。

一位开发者一针见血地指出:

“语言的饱和度是个误导性指标。真正的问题不是有多少开发者懂它,而是有多少开发者能用它构建出真正有价值的系统。”

另一位开发者则更加直接:

“饱和度百分比毫无意义。重要的是:你能交付吗(Can you ship)?我只看三个信号:1. 真实的生产环境部署(而不是教程);2. 系统设计的深度(而不只是 CRUD);3. 在压力下调试复杂问题的能力。JavaScript 饱和度 66%?那又怎样,其中 90% 的人连一个可扩展的架构都设计不出来。”

而一位博主,更是给出了顶级玩家的“搞钱思路”:

“聪明的开发者从不追逐‘流行’的语言,他们追逐的是‘高价值’的行业
Python → AI
C++ → 高性能系统(游戏、金融)
Rust → 安全基础设施(区块链、操作系统)
Go → 云平台(K8s、Docker)
追逐金钱,而不是追逐炒作(Follow the money, not the hype)。”

架构师的破局之道:从“横向内卷”到“纵向深耕”

扒开社区的口水战,我们可以总结出三条极其宝贵的“反内卷”生存法则。

第一条:停止在“语言层”的低水平竞争

如果你是一个 Python 开发者,你的核心竞争力绝对不是“比别人多会几个 itertools 的函数”。

评论区里的一条建议非常中肯:

“不要只学 Python 的语法。去学它底层的 C++ 和 CUDA。这才是 2026 年 AI 热潮中真正值钱的地方。”

同样的道理,如果你是一个前端开发者,让你在面试中脱颖而出的,绝不是多会几个 CSS 动画技巧,而是你对 V8 引擎的内存管理、对大规模前端项目的架构设计、对 WebAssembly 的底层原理的深刻理解。

饱和的永远是“表层应用”,而“底层原理”的护城河,深不见底。

第二条:将你的技术栈,锚定在高价值的“产业赛道”

你选择的语言,决定了你的“工具”;而你选择的行业,决定了你“工具”的价值。

如果你用 Go,但每天只是在写一些简单的 CRUD 业务,那你和用 PHP 的同行并没有本质区别。

但如果你用 Go,去深耕 Kubernetes Operator 开发、去搞 Service Mesh、去做 eBPF 的底层监控,那你将进入一个截然不同的“高价值稀缺区”。

对于大多数开发者来说,最好的策略不是去学一门全新的、不饱和的语言(比如 Zig 或 OCaml),而是在你现有的、最熟悉的语言生态里,找到那个与“高利润、高壁垒”行业结合最紧密的纵深方向,然后一头扎进去。

第三条:从“语言专家”进化为“系统架构师”

评论区里,有一个非常有趣的现象:初级开发者在讨论“哪个语言好”,而资深开发者在讨论“如何交付(Ship)”。

当一个系统变得复杂时,瓶颈往往早已不在于某个语言的语法特性,而在于:

这些“跨语言”的系统设计能力,才是拉开普通程序员和架构师之间收入差距的根本原因。

语言的红利期是短暂的,而架构的复利是终身的。

小结:你的价值,由你定义

这张“饱和度”榜单,与其说是一份“死亡通知单”,不如说是一张“体检报告”。它提醒我们,如果你安于现状,只停留在语言的表层舒适区,那么无论你现在用的是 Go 还是 Python,你都随时可能被更便宜、更年轻的开发者所取代。别忘了还有不断“蚕食”初级甚至中高级程序员工作的AI!

在这个充满不确定性的时代,真正的安全感,来源于:

  1. 向下扎根,掌握技术栈的底层原理。
  2. 向高处走,将你的能力锚定在高价值的产业。
  3. 向外看,建立跨越语言鸿沟的系统架构思维。

不要再为“哪个语言是宇宙第一”而进行无意义的口水战了。

你的价值,从来不是由你用什么语言决定的,而是由你能用这门语言,解决多大、多复杂、多有价值的问题决定的。

资料链接:https://x.com/yehhmisi/status/2031715243622015239


今日互动探讨:

看完这份榜单,你对自己目前的技术栈感到了焦虑,还是庆幸?在你看来,一个语言的“饱和”是危机,还是意味着更成熟的生态和机会?

欢迎在评论区分享你的看法!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

硬核测评:哪门语言最受 AI 宠爱?13 种语言横向对比,Go 表现如何?

作者 bigwhite
2026年3月9日 08:02

本文永久链接 – https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance

大家好,我是Tony Bai。

随着 Claude CodeGemini Cli、Codex 等 AI 编程工具的全面普及,“让 AI 写代码”已经从极客的玩具变成了日常的生产力。随之而来的是一个触及灵魂的问题:哪种编程语言最适合交给 AI 去写?

作为 Gopher,我们一直为 Go 语言的“极简语法”、“极速编译”和“强类型安全”感到自豪。我们理所当然地认为,这种没有任何隐式魔法、像白开水一样的语言,绝对是 LLM 的最爱。

然而,现实总是比直觉更骨感。近日,Ruby 核心提交者 Yusuke Endoh(@mame)发布了一份名为 ai-coding-lang-bench 的硬核定量测评报告。他使用 Claude Code(Opus 4.6 模型)对 13 种主流编程语言进行了系统性横向对比。

在这场涵盖了动态语言、静态语言和函数式语言的混战中,Go 语言的表现究竟如何? 是力压群雄,还是黯然失色?那些备受人类推崇的静态类型系统,在 AI 面前是否成了累赘?

本文和大家一起阅读和拆解这份报告,为你揭晓 AI 时代的语言偏好图谱。

实验设计:让 AI 写一个 Mini-Git

在评价这份报告之前,我们先来看看它的实验设计,这是目前业内少见的、针对 AI Agent 的工程化能力的量化评估。

任务目标:让 Claude Code (Opus 4.6) 从零开始实现一个 mini-git(简化版的 Git)。这是一个极具代表性的任务,它包含了文件 I/O、哈希计算、数据结构操作以及命令行接口,足以考验模型对语言生态的综合运用能力。

测试被巧妙地分为两个阶段,模拟了真实的软件生命周期:

  • v1 (新项目构建):实现基础的 init, add, commit 和 log。
  • v2 (特性扩展):在 v1 的基础上,增加 status, diff, checkout, reset, rm, show 等复杂指令。

提示词(Prompt)极其极简:“阅读 SPEC-v1.txt,实现它,并确保 test-v1.sh 测试通过。”这种设计最大程度地减少了人类指令的干预,纯粹考验 AI 代理在闭环环境下的自主编码、调试和测试能力。

参赛选手(13种语言/15种配置)

  • 动态语言:Python, Ruby, JavaScript, Perl, Lua
  • 动态+类型检查器:Python/mypy, Ruby/Steep
  • 静态语言:TypeScript, Go, Rust, C, Java
  • 函数式语言:Scheme (动态), OCaml (静态), Haskell (静态)

每种语言配置运行 20 次,以消除 LLM 生成的随机性带来的误差,并统计其耗时(Time)、成本(Cost,即 Token 消耗)和代码行数(LOC)。

核心发现:动态语言逆袭,Go 位居第二梯队

如果仅看总耗时和总成本(v1 + v2),测试结果呈现出了令人瞩目的阶梯式分布。

第一梯队:Ruby, Python, JavaScript 的绝对统治

在这场 AI 编程竞速中,Ruby(73.1s)、Python(74.6s)和 JavaScript(81.1s)组成了无可争议的第一阵营。

它们不仅生成速度最快、消耗 API 成本最低(均在 $0.40 以下),而且在 20 次测试中表现出了极高的稳定性(标准差极小)。

对于 AI 来说,生成这三种语言的代码就像呼吸一样自然。它们无需繁琐的项目初始化配置(如 Cargo.toml 或 package.json),可以做到“建个文件直接跑”,这种极简的工作流在 v1 阶段(新项目构建)优势极大。

第二梯队:被“强类型”拖慢脚步的 Go 与 Java

现在,来回答大家最关心的问题:Go 表现如何?

答案是:位居第二梯队。Go 的总耗时为 101.6s,平均成本 $0.50。中规中矩。Go 虽然在语法上非常克制,但依然落后于 Python 和 JS 等动态语言。与之类似,Java(115.4s)也因为繁琐的语法结构和强类型约束,留在了这一梯队。

尽管如此,Go 在整个 20 次测试中没有出现一次失败(0 次 fail),这证明了 Go 的编译器在防止 AI 产生“幻觉 Bug”方面,发挥了极其可靠的安全网作用

“后进生”阵营:Rust 与 C 的挣扎

备受人类极客推崇的 Rust(113.7s,且有 2 次失败)和底层的 C(155.8s)在测试中显得步履维艰。

尤为值得注意的是,在总共 600 次的独立运行中,只有 Rust (2次) 和 Haskell (1次) 出现了测试失败(未能最终跑通 Shell 脚本)的情况。这两门语言都以其极高的心智负担和“编译器教你做人”的严格程度而闻名。

这也是将Rust列入“后进生”阵营的主要原因。如果用《飞驰人生》的拉力赛来比喻,Rust 相当于在40站的赛季中,有两站没能完赛!

深度剖析:为什么 AI 更偏爱动态语言?

在传统的工程视角中,“静态类型防止低级 Bug”、“动态语言难以维护”是金科玉律。但在 LLM 驱动的 Agent 开发流中,这个逻辑为何失效了?作者 Yusuke Endoh 提出了几个关键的解释维度。

训练数据的“虹吸效应”

LLM 的能力直接取决于训练语料的规模和质量。Python、JavaScript 和 Ruby 是过去十几年 Web 开发的绝对主流。GitHub 上海量的这三种语言的开源代码、StackOverflow 上的问答,为 Claude Code 提供了极其丰富的“预训练肌肉记忆”。

当 AI 需要实现一个功能时,它在 Python 的隐空间(Latent Space)中寻找最优解的路径,远比在 Haskell 甚至 Rust 中要清晰、笔直得多。

静态类型的“双刃剑”与重构阻力

静态类型系统的初衷是约束人类,防止我们在重构时犯错。但在 AI 的“ Prompt -> 生成 -> 测试报错 -> 思考 -> 再生成”的迭代循环中,严格的类型检查反而成了巨大的“摩擦力”。

  • 编译成本与调试死锁:在 Rust 或 C 中,当 AI 生成的代码出现类型不匹配时,它需要花费大量的 Token 去阅读复杂的编译器报错信息。有时,为了解决一个简单的借用检查器(Borrow Checker)报错,AI 可能会陷入漫长的、无休止的“试错-编译失败”死循环。
  • 重构牵一发而动全身:在 v2 特性扩展阶段,往往需要修改现有的数据结构。对于 Python,AI 只需要在字典里加个 key;而对于 Rust 或 Java,这可能意味着需要重构一系列的 Struct、更新类型签名、甚至修改与之相关的无数个函数的参数声明。这种“爆炸半径”极大地增加了耗时。

“附加类型检查”的巨大损耗

报告中一个非常有意思的对照组是:原生动态语言 vs 附加类型检查器的动态语言。

  • Python (74.6s) vs Python/mypy (125.3s) —— 变慢了 1.6~1.7 倍。
  • Ruby (73.1s) vs Ruby/Steep (186.6s) —— 变慢了 2.0~3.2 倍!

这证明了,迫使 AI 在动态语言中编写严谨的类型注解(Type Annotations),是一项极其昂贵的任务。模型需要耗费额外的算力去推导类型、生成类型声明文件,并且在类型检查器报错时,还要去修复那些在纯动态模式下可能根本不影响运行的“伪 Bug”。

代码量(LOC)的迷思:越短越好吗?

我们通常认为,写得越少,跑得越快。但数据打破了这个迷思。

Haskell 和 OCaml 生成的最终代码行数(224行和 216行)是所有语言中最少的,甚至少于 Python 和 Ruby。然而,它们在生成时间上的表现却排在倒数(Haskell 耗时最长,达 174s)。

这表明,对于 AI 来说,函数式语言那种高度抽象、信息密度极大的代码,生成和推理的成本远高于像 Python、Go 那种稍微啰嗦但逻辑平铺直叙的“大白话”代码。浓缩的未必是精华,对于 LLM 来说,高度浓缩往往意味着更高的生成熵和更高的试错概率。

行业启示:我们需要重新思考 AI 时代的技术栈选型

面对这份详实的基准测试报告,无论你是 CTO 还是普通开发者,都必须开始重新审视未来的技术选型逻辑。

动态语言是快速原型的“绝对王者”

如果你正在启动一个新项目,或者需要用 AI Agent 快速验证一个业务流程,Python 和 TypeScript 是首选(报告中 JavaScript 表现优于 TS,但在实际工程中 TS 的综合权衡更佳)。

不要迷信“大型项目必须一开始就上强类型编译语言”。在需求快速变化的初期,让 AI 用动态语言狂飙突进,是获取业务反馈最高效的手段。

性能王者们的困境:Go 与 Rust 在 AI 时代掉队了吗?

看到测评数据,很多 Gopher 可能会感到失落:难道注重工程严谨性和系统级性能的静态语言,真的在 AI 时代掉队了吗?

结论并非如此悲观。我们需要明确一点:Agent 测评的速度,不等于软件最终运行的速度。

  • 业务试错 vs 基础设施:AI Agent 目前最擅长、也最快速能完成的,是写“胶水逻辑”和“业务 CRUD”。在这些领域,Python 确实快。但当你的系统涉及到高并发、内存精细控制、或者需要打包为轻量级容器部署时,人类依然需要 Go。
  • 容错的底线:在这场 600 次的庞大测试中,只有 Rust 和 Haskell 出现了最终测试失败,而 Go 保持了完美的 100% 成功率。这恰恰说明,Go 在“极度灵活(易幻觉)”与“极度严格(难生成)”之间,找到了一个非常微妙的平衡点。它可能不是 AI 写得最快的,但它一定是 AI 写出来最让人放心的系统级语言。

我们不应期待 AI Agent 能够像写 Python 脚本一样,如德芙般丝滑地生成出一个复杂的 Go 并发系统。但在 AI 给出的初稿之上,Go 语言极佳的可读性和统一的规范,将为人类工程师的最终审查(Code Review)节省巨大的精力。

小结:下一个十年的编程语言,长什么样?

ai-coding-lang-bench 给我们上了生动的一课。它揭示了当前 LLM 的偏好:它们喜欢有海量训练数据的、灵活的、不需要应对死板编译器的语言。

但我们必须认识到,这只是一份基于 2026 年初模型(Claude Opus 4.6)的快照。未来的 AI 编程语言形态,可能会朝着两个方向演进:

  1. AI Native 语言的诞生:抛弃目前设计给人类阅读的语法,出现一种专门为了降低 LLM 生成 Token 成本、且天然抗幻觉的机器中间语言。
  2. 现有静态语言的“Agent 友好化”编译模式:Go 和 Rust 可能会进化出一种特殊的编译模式。在这个模式下,编译器不仅是冷冰冰地报错,还能以结构化的、对 LLM 更友好的方式提供“修复建议”,从而大幅缩短 Agent 修复编译错误的反馈回路。

无论如何,浪潮已经来临。在 AI 主导代码生成的新时代,我们评价一门编程语言的标准,正在从“它对人类大脑是否友好”,悄然转变为“它对大模型推理是否友好”

而在这场新赛道上,动态语言们,已经抢跑了。

本文核心数据与图表均来源于 GitHub 项目 mame/ai-coding-lang-bench


你的 AI 编程初体验

看完这个排名,你是感到意外,还是早已感同身受?在你日常使用 AI 编程时,你觉得它写哪种语言最让你省心?你是否也曾为了修一个 AI 写的编译错误而陷入“死循环”?

欢迎在评论区分享你的“AI 协作”红黑榜!


“语言的严格性正在变成 AI 的摩擦力?在 AI 时代,掌握一套能驱动 Agent 自动化、自修复的‘工作流’比死磕语法更重要。我的新专栏 AI原生开发工作流实战 将教你如何利用 Claude Code 结合 Spec 驱动开发,构建真正高产出的‘软件工厂’。”

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

“棘手”难题:为什么 Go、Rust 与 Java 等语言的包管理永远无法达到完美?

作者 bigwhite
2026年3月4日 07:37

本文永久链接 – https://tonybai.com/2026/03/04/package-management-unsolvable-problem-programming-languages

大家好,我是Tony Bai。

每天,全世界的开发者敲击下数以亿计的 npm install、go get、cargo build 或是 pip install。我们将这些包管理器视作理所当然的基础设施,仿佛它们就像水龙头一样,拧开就有源源不断的开源代码流出。然而,在这些看似简单的命令行背后,隐藏着计算机科学中最复杂、最容易引发争议,且永远无法找到“完美答案”的深水区。

近期,一篇名为《Package Management is a Wicked Problem》(包管理是一个“棘手”问题)的文章在技术社区引发了广泛关注,其姊妹篇《Package Management Namespaces》更是深度拆解了包命名的底层逻辑。作者以其多年参与包管理器数据和工具开发的经验,向我们揭示了一个残酷的真相:包管理不仅仅是一个纯粹的计算机科学问题,它是一个融合了社会工程学、经济学、安全性和向后兼容性的无底洞。 任何在这个层面上的微小改进,都会引发波及全球数千万个项目、数亿个版本的海啸。

本文将结合这两篇深度文章的核心观点,带你全景式地审视现代主流编程语言(如 Go、Rust、Python、JavaScript、Java)在包管理与“命名空间”上的激烈博弈与艰难演进。

包管理为何是一个“棘手问题”(Wicked Problem)?

为了准确描述包管理的困境,原作者借用了 1973 年社会规划学者 Horst Rittel 和 Melvin Webber 提出的“棘手问题”(Wicked Problem)这一经典概念。

在城市规划或公共政策领域,“棘手问题”通常指的是那些没有明确边界、没有唯一正确答案、且试图解决它的行为本身就会改变问题定义的问题。作者指出,在涉及万亿次下载和全球协作的今天,包管理完美地契合了 Rittel 和 Webber 提出的“棘手问题”的多个核心特征:

问题的表述与解决方案是同一件事

当我们谈论“包管理”时,我们到底在谈论什么?

作者敏锐地指出,这个词本身就是模棱两可的。对于前端开发者,它可能意味着用 npm 管理构建时的依赖树;对于系统管理员,它可能意味着用 apt 或 Homebrew 在操作系统上安装已编译好的二进制工具。

即使在同一个生态系统中,命名也充满了争议:我们称其为 package(包)、module(模块)、crate(板条箱)还是 distribution(发行版)?这些并非简单的同义词替换,它们各自编码了对“什么东西被版本化”、“什么东西被发布”以及“什么东西被安装”的深刻假设。正如作者所说:“包管理一路向下都关乎命名,而命名众所周知是计算机科学中的两大难题之一。”

当你决定引入 Lockfile(锁文件)时,你并不是在解决一个大家事先都同意的问题,你实际上是在重新定义“安装依赖”这个行为本身。这正是“棘手问题”的典型特征:解决方案定义了问题。

根本没有绝对的“对与错”,只有“好与坏”

在包管理的世界里,几乎没有任何技术决策可以被客观地评判为“真”或“假”。

作者以 Homebrew 为例:早期 Homebrew 选择直接使用 Git 作为其软件包数据库。这在当时是一个绝妙的设计,降低了门槛,极大促进了早期的繁荣。但随着规模的爆炸,Git 仓库的拉取成了巨大的性能瓶颈。那么,当初选择 Git 是错的吗?这取决于你是看重早期的简单性,还是看重长期的扩展性。

作者还深入剖析了语义化版本控制(SemVer)的困境。SemVer 试图将版本更新变成一种“非黑即白”的契约:引入破坏性变更(Breaking Change)就必须升级主版本号。但在实际操作中,这完全沦为了主观判断。

这里作者引入了著名的海勒姆定律(Hyrum’s Law):“当一个 API 拥有足够多的用户时,你在契约中承诺什么已经不重要了,你系统的所有可观测行为都将被某些用户所依赖。”

这意味着,对于某个开发者来说仅仅是修复了一个底层的 Bug,但对于恰好依赖这个 Bug 特性运行的另一个用户来说,这就是一次彻头彻尾的破坏性变更。版本号的跳动永远无法客观地评估对所有人的影响,它只能是“对特定人群好”或“对特定人群坏”。

不可逆的深远后果与试错的代价

在科学研究中,你可以提出假设并在实验室中进行 A/B 测试。但在包管理器设计中,你没有这种奢侈。作者强调:“每一个实施的解决方案都会留下无法消除的痕迹。”

当年 Python 的包索引(PyPI)决定接受无命名空间的扁平包名时,拼写抢注(Typosquatting)攻击就成为了这个生态不可避免的宿命。即便 PyPI 明天决定强制引入层级命名空间,它也无法改变全球数以千万计的存量 requirements.txt 文件,更不能直接使那些旧代码失效。

同样,RubyGems 至今仍托管着自 2007 年以来就未曾更新的古老包。在这个领域,没有推倒重来的机会(No do-overs)

当年 npm 社区发生的 left-pad 事件(作者因为不满而撤下了一个仅有 11 行代码的基础库,导致全球无数基于 Babel、React 的项目构建失败),就是一个惨痛的教训。当你允许“取消发布”时,你不仅是在做一个功能,你是在制定一项将永久塑造开发者行为的政策。

利益相关者的根本冲突与多重因果

包管理到底应该优化什么?作者为我们罗列了一系列相互冲突的诉求:

  • 注册中心运营者想要极简的存储和极致的稳定性。
  • 安全研究员想要可审计性和不可变性。
  • 库作者想要发布时的灵活性。
  • 企业应用开发者想要绝对的构建可重复性。

这些目标是内在矛盾的。一个允许库作者轻松推送更新的系统,必然也是一个更容易受到供应链攻击的系统;一个能够捕获每一层深层依赖的 Lockfile,必然也是一个在执行安全升级时更痛苦的组件。

npm、Yarn 和 pnpm 能够在前端生态中三足鼎立,正是因为它们对这些冲突的诉求做出了不同的妥协。Yarn 的诞生是因为 Facebook 迫切需要 npm 早期未能提供的绝对可重复性;而 pnpm 的崛起则是因为开发者对磁盘空间和安装速度的渴望压倒了对传统 node_modules 结构的兼容性需求。

命名空间之战——安全与便利的生死博弈

在理解了包管理的“棘手”本质后,原作者将目光投向了包管理的核心战场:“命名机制”。你如何为一个包赋予一个全球唯一的标识符?这不仅决定了开发者的使用体验,更直接决定了整个生态的安全性架构。

作者在其姊妹篇《Package Management Namespaces》中,详细梳理了主流语言生态演化出的四种截然不同的命名范式。

扁平命名空间(Flat Namespaces):“先到先得”的蛮荒时代

代表生态: RubyGems, PyPI (Python), crates.io (Rust)

这是历史最悠久、设计最直观的模式:一个巨大的、全局共享的名称池。规则很简单:先到先得。如果你抢到了 requests,那就是你的。

  • 开发者的蜜月期:在生态初期,这种模式极度舒适。名称简短、好记,在命令行里敲下 gem install rails 或 cargo add serde 时,体验极其顺滑。
  • 作者指出的致命缺陷:命名稀缺与安全梦魇。

随着生态规模的爆炸式增长(如 PyPI 目前已有超过 60 万个项目),好名字很快被耗尽。许多简短的、有意义的词汇被一些只有个位数下载量的废弃项目永久“占坑”。新开发者被迫使用 python-dateutil 或 beautifulsoup4 这样带有笨拙前缀或数字后缀的名称。

更严重的是,这种模式为拼写错误抢注(Typosquatting)提供了完美的温床。攻击者只需注册 reqeusts(对应合法的 requests)然后守株待兔。因为在用户的键盘敲击和注册表查找之间没有任何组织层级的校验,也没有层级结构需要导航,这种基于简单字符串匹配的攻击防不胜防。

作用域命名空间(Scoped Namespaces):组织的介入与权力的转移

代表生态: npm (JavaScript), Packagist (PHP)

为了解决扁平命名的稀缺和冲突,npm 在 2014 年引入了作用域(Scopes)。你可以发布 @babel/core 而不是去争抢早已被占用的 babel-core。PHP 的 Packagist 更是从一开始就强制要求使用 vendor/package 的格式(如 symfony/console)。

  • 空间的释放:这极大地缓解了命名冲突。不同的组织可以安全地使用相同的叶子节点名称,例如 @types/node 和 @anthropic/node 可以和平共处,互不干扰。
  • 作者提示的挑战:治理成本的飙升与“上移的占坑”。

作用域引入了复杂的治理问题。谁有权决定 @babel 属于 Babel 团队?这就需要平台提供账号管理、所有权转移机制甚至处理商标纠纷的流程。

此外,作者犀利地指出,在 Packagist 这种强制模式中,虽然包名(package)不冲突了,但“供应商(Vendor)”名称本身依然是先到先得的。如果有人提前在 Packagist 上抢注了 google 这个供应商名称,那么 Google 官方的所有包都会被拦截在生态之外。这等于是把“占坑”的问题向上推了一个维度,其潜在的破坏力实际上更大。

层级命名空间(Hierarchical Namespaces):绑定全球 DNS 体系

代表生态: Maven Central (Java, Clojure)

Java 生态极其聪明地将包命名的治理权“外包”给了全球最大的、已经建立共识的分布式治理系统——DNS(域名系统)。你必须拥有 example.com 的域名所有权,才能发布前缀为 com.example 的包。

  • 秩序的建立:这几乎彻底消除了无意义的恶意占坑。像 Apache、Google 这样的庞大组织拥有了极其清晰、权威的代码家园。
  • 作者揭示的致命隐患:MavenGate 与域名复活攻击。

这种看似无懈可击的设计,依然存在致命的盲区。域名的所有权并不是永恒的,公司会倒闭,域名会过期。作者引用了安全公司 Oversecured 在 2024 年初发布的 “MavenGate” 报告:在与 Maven 关联的 3 万多个域名中,有近 18%(约 6170 个)域名已经过期或重新流入市场挂牌出售!

这其中甚至包含了被广泛使用的 co.fs2、com.opencsv 等知名库的根域名。这意味着,恶意攻击者只需花费极低的成本(几十美元)买下这些过期的域名,就能顺利通过 Maven Central 的 DNS TXT 记录验证,以合法原作者的身份接管整个命名空间,并发布带有后门的恶意新版本。由于大多数自动化构建工具倾向于拉取最新版本,这种基于“域名复活”的供应链攻击将具有毁灭性的穿透力和隐蔽性。

基于 URL 的标识符:去中心化的乌托邦与残酷现实

代表生态: Go, SwiftPM

Go 模块(Go Modules)做出了一个在当时看来非常激进的选择:直接使用代码托管地址(如 github.com/gorilla/mux)作为包名标识符,彻底取消中心化的“注册(Registry)”步骤。

  • 优雅的直达:这实现了零注册摩擦。URL 在结构上天然保证了全球唯一性,且通过对 Git 仓库的所有权,自然而然地确立了对代码包的所有权。
  • 作者分析的隐藏代价:被基础设施绑架与脆弱的信任链。

这种模式将包的命运与底层的托管平台(特别是 GitHub)进行了深度且危险的绑定。如果一个 GitHub 组织改名了,或者一个生气的开发者删除了他的仓库,所有依赖这些路径的下游系统都会瞬间崩溃。

为了弥补这个“去中心化”带来的巨大可用性缺陷,Go 团队不得不花费数年时间,在核心机制之外构建了极其庞大的辅助基础设施:

  1. Module Proxy(模块代理):用于持久化缓存源码。这样即使 GitHub 上的原仓库被彻底删除,只要代理中有缓存,全球的 Go 构建就不会中断。
  2. Checksum Database (SumDB):这是一个基于透明日志(Transparency Log)的校验和数据库。它提供了一个不可篡改的全局信任锚点,保证了任何人、在任何时间、从任何代理拉取同一个版本的 Go 模块,得到的哈希值必须绝对一致。它防止了作者恶意 force-push 篡改代码,甚至连运营该数据库的 Google 自己也无法在不被察觉的情况下篡改历史记录。

作者通过对比指出,苹果生态的 SwiftPM 起初也采用了类似的 Git URL 模式,但并未配套建立 Proxy 和校验数据库。这导致如果 GitHub 仓库消失,Swift 的构建就会直接面临失败。更糟糕的是,2022 年的安全研究发现,大量 Go 和 Swift 包容易受到“仓库劫持”(Repo-jacking)攻击(即攻击者重新注册已注销的 GitHub 用户名,并重建同名的旧仓库)。Go 因为有强悍的 Proxy 和 SumDB 作为护城河,成功抵御了此类攻击;而 SwiftPM 至今仍暴露在巨大的软件供应链风险之中。

深重历史包袱下的“痛苦迁徙”

我们现在已经通过学术分析和前车之鉴,知道了理想的包管理应该是什么样。但原作者指出了一个无情的现实:大部分语言的包管理器早在十多年前就已经定型,它们带着最初的缺陷狂奔至今,积累了如同天文数字般的历史包袱。 如今想要修复这些缺陷,无异于给一架正在高速飞行的跨洋客机在空中更换引擎。

作者以 Rust (Cargo/crates.io) 的演进为例,生动地展示了这种深度重构的痛苦与艰难。

Rust 社区作为一个极其注重工程严谨性的生态,早在 2014 年起就在讨论引入命名空间。由于一开始选择了扁平命名,优质的单词已被大量占用。直到 2025 年,Rust 社区才终于正式推进了由 Manish Goregaokar 起草的 RFC 3243(可选命名空间) 提案。

他们的过渡方案设计得极其精妙且克制:不引入新的顶级前缀,而是将现有的合法包名升级为潜在的命名空间根节点。

这意味着,如果你当前拥有 serde 这个基础包的所有权,你就可以顺理成章地发布 serde::derive(使用双冒号 :: 是为了与 Rust 原生的模块语法保持高度一致)。这种设计完美地做到了向后兼容:现有的扁平命名继续有效,新的层级命名以一种非常“Rust”的方式平滑引入。

但这依然无法避免阵痛。

作者举例说,像 tokio-macros 这样已经广泛存在于扁平空间中的包,如果未来想将其规范化迁移到 tokio::macros,所有依赖它的下游用户的代码都需要跟着进行繁琐的改写。而对于那些名字被别人占用的项目(比如知名的异步运行时 async-std 团队,其实并不拥有 async 这个基础包名的所有权),这个优雅的方案对他们来说依然是无解的。

Rust 社区作为一个资源充足、治理严密的顶级生态,依然需要花费数年的时间、跨越编译器、Cargo 工具和注册中心三大团队来协调设计和实施这个补救方案。

这充分印证了作者的观点:如果在发布 Registry 的第一天,你没有保留哪怕一丁点命名空间的扩展性(比如预留一个特殊的分隔符),那么一旦生态成型,后续的重构成本将是难以估量的。 同样,Python 的 PyPI 目前也在通过 PEP 752 提案如履薄冰般地尝试让大厂保留包名前缀(如 google-cloud-),但这只对未来的新包有效,对于存量系统依然是一笔难以理清的糊涂账。

小结——放弃“完美”,拥抱“演进”

纵观这两篇深度探讨,无论是 npm 为了处理历史包袱而维护的并行命名系统,还是 Go 利用强大的 SumDB 来硬核弥补 URL 导入天然缺陷的工程奇迹,亦或是 Rust 正在小心翼翼进行的痛苦命名空间迁移,所有的现象都在向我们诉说同一个真理:

包管理(Package Management)作为一个“棘手问题”,永远不会被真正“解决”。

我们无法像推导一个数学定理那样,给出一个让所有人都满意的、完美的包管理公式。我们所能做的,是在不断变化的安全性要求、开发者的灵活性需求、系统的可用性以及沉重的历史包袱之间,寻找属于这个时代的最优解(Trade-offs)

对于语言和工具的设计者而言,在系统上线的第一天保持足够的克制和选项预留价值千金;而对于广大的应用开发者而言,正如作者所呼吁的,我们需要深刻理解这些构建工具背后的“棘手”本质。

当我们面对依赖冲突或奇怪的版本解析时,少一些诸如“为什么这个工具这么蠢”的情绪化抱怨,多一些对供应链安全的审慎态度(如定期审查依赖树、使用内部可信代理、开启严格的校验和哈希验证),才是面对现代软件工程深水区时,我们应有的专业素养与敬畏之心。

下一次,当你敲下那行习以为常的 go get、npm install 或 cargo build 时,不妨停下来思考一秒钟:为了将这几 KB 的代码安全、无误地送到你的硬盘里,背后那套由无数妥协与智慧构筑的庞大机器,是如何在无声中疯狂运转的。

资料链接:

  • https://nesbitt.io/2026/01/23/package-management-is-a-wicked-problem.html
  • https://nesbitt.io/2026/02/14/package-management-namespaces.html

你最想吐槽哪家的包管理?

每一个“依赖地狱”的背后,都有一位在深夜叹气的程序员。在你的开发经历中,哪门语言的包管理最让你感到顺手?哪门又最让你抓狂?你认为 Go 的“URL 导入+校验和数据库”模式是目前的终极答案吗?

欢迎在评论区分享你的“包管理血泪史”!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


想系统学习Go,构建扎实的知识体系?

我的新书《Go语言第一课》是你的首选。源自2.4万人好评的极客时间专栏,内容全面升级,同步至Go 1.24。首发期有专属五折优惠,不到40元即可入手,扫码即可拥有这本300页的Go语言入门宝典,即刻开启你的Go语言高效学习之旅!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

Java、JVM、并发进阶

作者 Sekyoro
2026年2月2日 14:30
<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉,您输入的密码错误,请检查后重新输入。" data-whm="抱歉, 当前文章不能被校验, 不过您还是可以看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="3c1d34fd79e7f194025bf30314f3de44b70361265d058b18136207b56a87ee07">36f29f3a8a3599dfb9e50adddc71ef17f889143c3729484ef1b08a49ece73bd816e66da72ae603bd8a0f855afe7c9aef72a837931d792debc1a09d35d3f033e99e4088d7bcc5cc519beb311785d8c8bb96560133cba6d19aa6d724c5c4b1974a854769800190f094cc39d518e07b53cd5f52df1800ad3744c8c627edddc8a50f5e3ad0ae6ab292104b0d2872fd298ac97355dfd16a5db02d519dbdd2874ca6710827f0df536913be78d83ac60ecc72ee9a6664ece86b63516e25cbd68e80975c38a4216d325dbdc9508687703bb1ce079fa1e6298d5ca1747855f1a1abb91c75c96bd3530fe3785fa3bc99a016bf4d5e0b29c8e345f8bfcad22554751707379db427b47ee9971abf92fadc3de4130ff7595da5c26bd9b2b8d654acf7c1583a19213114d651040682821b65bd8751cab2e0d1841794944600358accb4b49a3ba65d5b96272ed4f893eef05d94ddd8d0b988fc3390f8318416cc092be3533e19d2f641f81b89e57bedb7f936ef02db310648f7870131762fd492c8a7f34b5b9f452772d76e1cf61ca823d506d5b20b7c7d9637cd5f8de500ae180e8aa4d588e81e41044bc1f246e93beb4db90ce3cb0d6d4336c57711f18ac4272a6b524f7fcdece03696e0932e37037ce6cde9a49652ab5ae38c117063afda6ee1ef0badbdb76516e44d1f2ebc2ac52ccf13c4a1a14f327c9cb027656ca7edf8c50258273b002ac81a531badf4173f78ea20241ec3437114bef0a84b156652ac007783a25344d1418df7d51f0921b06582c626163b800014cc61d107dea76e4c8b89b7355a352302926171e3b7ae8b8a5dc216fd8d64f118977662cf16c578c21bba639b9bddb576312540ce96ad6a354828ea472fadf46bf0f65cb0e30db116a62e6263cb55322df42d7d78fb99fdc1eab4082cd024eefb9d83f2e9d7935a9f8958ac0e7d2723be67e9f6a36bbf256bb42db2d5443bdaeeafdf13df22e39a2cb503eadb34c54b80fb9d4e5fafede7dee3a36474d00be5bd70ddcb11c932b4c5be0dfbb3051dadfe481822edb686327494042c69f9370ef927444ea163b5647907ce79316880d0abd1bd76bdac97ada39fb34d4d0b71445d49f38e3732a52f39f310f1dd5645bd3f55b2adf2497dee603190d750fc8024e8f5e02307b04a45024d7c73181fb179cb939eb09bec8214f4eb84524852693a70e3b4bf2f3d95b12b1dd7ae1d638f703239c8c97b6b0328ad969e5910b4284a7f1cc2d47c78cd42476f107120815603b413d0b7efd4189f4ddd8574954563abdd67c6c63418c486dd8b32b3b9fe2a27893412c33ddb1b046899320746731043912789b18b9935ac1b1d17dcd7f9ad39941d1faa5eceaeb2f4d69828879b75fec65cd68a7ce3922f662775c0a6ca895b479c8e8f01f981668f3f3d481e3157a54ab563a671c61866afc8e3e59f3da909c91c3fda6fe6e1dd494cd1da24c380cc3abd737fa9323d4e6972d098841b5aedbf000c7c3131587a25b0a0a9e860811c017783ae9ad160b91bb8c955155be7b4c164a16722bab0d98f851de5016eaaceb58bafcde6e992361b7a52acc9893b46280a0712bef3f3345db3de19925f2cca5bc783d15108d8dfce05e6cfefa65c4ce5de2fbdde9387c6312f8c5ff7780d0e5001c678ad0e2b106453a5a7c72b09e4c5c5b2ebe82a247ff5e30b7b8dec141f466cb208e60b9f84b19d415107111ce97dfe931c2adfa4c3a6ca5f80f49fa4ec3de6f9f2cc38d3a65c9b6cb2c4a9a719129bc9e67ef811ae8498bb1ec0459375f5d33a609998bdcc09db08d87874f998e98e3154c32a50f40e533db44cb4ed08f1de1e79d7f0e70d1ad22e2c156def3abad2022a391e416e1b1a46a2a77245a51e6961a8bab7ae586171063082670e930cc9c026fd28a234e8d296f91eb4eeacc8b95e81a994179e940f8211cdb92d2c977414ed0ee647dc0ab5ea0c7ff018ae1ad6291a7dc996bfc23eb26ac2134d16fff17240967aea87237050bc696acf0f6d62105bae0425b3634194023c191cc000db26cd3d49c472c202f08dc3d735fc6ea0151ec4448f5589c2eac5978a9f25ed389139623568987fc4843ec427bb3799f6c18fded510787487856d126fed84c09d24da7a4d33d11e75133c3b92b355d0fba7e5591b9992ff3dff715342dfd56866dc873f5ca7f30e0fa6d4e7b127adacc91084450cfa3e80e931dc4b07f1441ade5cb0438f0be7879ebed41f4670d211749a78ef20625722cc8ccc1634de1ffe3b5ce905197b597e59dc3e5272262d210044a42cfb42d50a04ceb1084f37521b9f45cdb380a6d61b22552d80f5a0612f313c6c39fd03ac69fb3ddae119644b3a437a99428a1481ed7df1081de061451e0ec35195c016e7489e556e1567e1fa867de9387e46a1a115e9998c812568a3797013c71be8a452efb12d6eed09c8433cb698543a6bdc8d0e6f5be9f09a06485ac5e60a67b3e3ea743af5748934dab5e881089a4459fcc893b533d6914aa9579a01d60108e7774e4a851c793b3845357f909758ecef9c9860f701839459bdeb5307aee0fefcd4f41bed9242f01fe8e640dce6360156caef476d30bb5e846eabb808deb7ce41df9294ff9e5436c4bc86b927d3ade0a9b7f97805cfa96bb1db8a6f51347228f68a5af78ea0a36036f8c8f905a2194e0a3a5455bc5b5d566a9b5ef3a9cc74e4b6f57d8a99fd8f9b6ab66c9676416e53f20ed58b42c8414c2f5cb70084c3f209d59efc0452c9985da95557b1fb8c164708a32c58b0f6060c92d89c4ceeacd2c17c887e16163272c7e56cdc17f973d3a31b7450b02f39d84c08fb1ef2806a5313db72e0b56bc0851830ef83918aa2f3bdd53d878b55d6945ed48d86beda2f968ea7f003f199411bd2e581dad81485ef3d996708f80e0e4dcbe25d3f6f870bf9d6dead663ebba7e74cf7b88aa4486c1cf4a4bb69c01c32212f5a8a33c5871924b5dada8d5bd14e17be81fc08172c79f84d936b39afd846d042d4d292e0f6a2f505c48969a1336b207a22080f3b16fd0460c311bc56e0f354a89bbfc21296c995f549b51f18f8b69c4442b761493da649f2bb174963c3487e054f67f758c2ac4f210c1140ef89f210f98e67b908176024781ce07a1f38c3fa9bc5ff5c010996852e530cc81a289056161ed20ac6a58b78edd405fc2c1835ffd51d948a902680e1cdb746c175f37e203000aa2c3b013af6f57ac2598c630bd02ecb7e2cefb87f1f6fd8036706c989b330a1093a2ccedc075841331064cff27c2e6ac9b999f6c8dc01f398e64b8a623e94b377b0d58b0570dc0940ee9c9dc283a4e5dc9b874b85daa9ec0fdce25483e2ee8a55964e73f10e799ec22f918e42b20101a5641004365ebdceb57e09b419b8006cc53deeb5d777ffd7b6d70f81eade50debf2acc0264bf0b2b7ad21f31897518281401e495fe297616fe06c26229d3de1e738c933f81936aa5209c1b919e4aa8da0a6a12569b89b3998d35511cb92566759fa87851c2a62f5b04e60ac38298f28e6c69f1c081bf74dc8a2adc7e3f941924e409ea913e6d919aacb8bac6e665f92f76988a661eeaa532ae2ee283a6d9a5e1f529904dca6bee4759fd22360f0c7143a364fa7bb83956bdbcd2d763ab057d6391f3d7052577ef1d59947be5848db096be965257de9b65f949c0b66799d77bb5b9a1e8ff36e4e286cd1defadb241605dc571497c9dd040d49ee1e1c2ceebac526d552364b07c518e8be8276ea13fa8a7bf3b3788d648ae58e1dc7959cca7d89d97cd66b33f746ffc63bd5455b1af00b7c35b802d3d5a90d2ad02c89260943a34d08388ffb8c0db83353579684c804a49b63e42ac14358dcf5433ac3fda6a3789b0f37be8f604358b0780c59ccdeed06e5e6408b641d176e47f2681daa1f1f5affb88f89d5000ddf472484a8a1991a0f9f75d5b80f03f074fe748088c1e9381a2239e1ba0f7b58fee5d9a521595651b22e8a5c9c9f60f19e7657786ea37da54a960ca20a7064be67b03b4fabfdfc6f8c95f9cf356e33e0dce54c0f93d1b1d302a6bb41b6aac2a6016bd07e6e4a22d98e78c94ae60440789b80409e8a4c9a105871f87b6e4256ca18ab988b883e39fa7cfd43e4cbc3e6fd477ea551431f2a6cc2018c207c9c4048301fb14e0657762efb106c41a64f19b70070ffe263acb2fe0186a757a1014f874fa770df731802285d656935e0ca1b7561c142569cde969c6304f3536dfac5c5350f221d7ea3af5d4d90fe30ffacccc1fa8fb10426385c9fd22966ab1283f6f15baa5560f37006166be7e6d6f260116d192f9bb777fa7a1c48446d82535532d15ceee685cc66852e13b4799e185d29fd32789926d9d1abe03fc3c7158a247bef19837075c8d9683a7d100738b4242c79510421d36633268741460a939fbfcf930fef24172ab87f1279b23e85d670d7dd5b0b66179ae9bb668a828f0173b27471b729a47dc25b55106acd99fa5bf1885c0789008c8726b699ee7cb1cb3a20c5e9a3d41178181e6b73afb46a790d4d96d146c80d2863c7d50bc60a2f91eabc15f42692eb4454aaff9cccaec93e71ddb2a2a4d05b97b7e7ac48a6334a6bf5240c473f30dfd7165d5ee657d9387ad3a97a546d3f5fe2f16f2a86ccc57210c99f253a2edc1c1e35bf39f3cf91eb670c4506d88d70fbbc31ad83d0c664248a64d8b3f59a97df489a44e1d23ce3bd1c93afa039bd1a831030692864ec8ecd1a41107c7821d1ff727506d6c4bce5b0abcf2149c4965cc0602194377e4f7652bb18b06778f6fb70a871b91859e03ebb030ddf0580a3ea6e88fcf90fdb2044baa09d9c979dffb292dd0e7400f4d578edc6da38c51f70841d4171cf4a5df8c216530c048349344a0ba87f1186334c1219f7a867e5b1ad33ffffc0ec6360fc6882f1924e3189c54af953162acc0f0109d8ba70b7f28b718a86fb3e4b3b53d032b96642fe7976e872d7d26835208d835024439ff0775eb04e3c2f832edf5f02fd2541927eb8d114c7e5908531e0eb4a9ef708cd18e4bdaae055856348b4128b35f2ad7bf6483490335ae39a7e06a3f83ec5fed51a7306283edf1e0892422d2bbf046874169e6a11030af2571ba9208572ce4995e762dcd29e23de7a255300160c5ed5d1bca6851acad7eedea312ab3fba732dda0b4d4f6607faad30f64bcaaa49919ec67e330b7774a656f78765bc4c734fd4de9dc9e72a874dffe7eeef9b57990d10eff7db12ad47635ada2acd470d8605d1a1858367623320f0cf53db33972eefd59fdceacb3325900f007d53a1f6b1b66cb2267da03cd58f2430b3371a42ef4a3724908a8390d75defeee4de7b20f0d3bacf4c14fd1a00474aa9d3a3136dffe6e9a106432200d85ebb29c1569b82216ef54b1e83639d0a371e3b783a0aaa3950dc235af8a96674372552e26b0c54bc8ddec445f3d4e22218fbb08a1a360e8e266e4bc83b483b63bbb69156c54fd754b17909e8360612862fceff65de684d163e2bb3a50b38452cb6cc2a9083269feb5d824bdd242fb3948309115b0d81ed1a16ee968a2f7380dffcedb1d707cdf0d4789d5522428a35e68c9302cf0b79abe2bd2a504ce9cbb1163778eb20ef8e553daa6110cdbe8d37a913553e8f2f9682b4d0968530592e1a838933bed5befc4b3dfe7da4b572a4744f8ca7eaa6f212575139a7921ddd7d8b79fb8150d7e283bda832adea7b085e06ef8fd3cfeb738194cda18ba4893732add2ad83d581de9770c30d508280446c501f7190d8f03fb5ba06a454ae8e161127efd5fbaf565c29c8c9c40b68ce4c32f5f57d3de3f327a7a3507109e1eea5e7dd952c1a7159ace5bef54333c32a86524ae83041322567b1099f931e55efee1835ccd0a974d644c3ae9f57d164d9667242f5b276c38dba60cf51969fcdb055c37ea58a193b814517f5092316828bb247e0c5981c3ca10641167f4bbd709498ee713d5657e2fb302e191a6485e472fd6bac6067300b76b236d0eb8f6832e88adcfde7ce503bb1c75a23fdb45d0d306ec3619a177e42e22487cbbaa3fdefb4b78ceedfd02f80ba29494c0c7912e4df85e361e51ce6056a0a151a3c320822bf18356d2fafa38c6cdf8f18e1031801844920fdb46a60cae117d5e9068d1610b3b36875fce03696aaf23df135e1d35d20b85c674a5d21a94164a8509d28b3e9bb29bfddf5e40998c3b1bdc631affbaa2730d3274e1382ebf8a7c0815925b1fa367d16bc3c78a65bc89f19ebda2e8857ad17066424f9106faed26b4247912c11edc41a656d54e956bba2b61a70b55929e151cf29c9a19c96303db2967adfa0f9402f688949b80ca8b554ca55421c715fdd0aba80a7f33055696bd749cd01501efe6128d64776c12b7d54206e5b8cdd8900eeaa64f1295848ca0d454cfe8e2cd5a6e8984b617a3a5c1ed1e46ada3e9f563d81a643e0dcd89930d6e695168f03693d8da47084266db48bf062771adc3810d9301b821bd5d195d138adafee4bf82fa01d80d70c133c8f6a191352116648dfceb70acddeda7d0cf9e92bf3c25d122af8bec5ade7778e8b3e95cd84a9db4e88f514a629b10221ad78d5e5b2944848a9cc28868f788d28860c7f6f4deac04fc4d345b61444612b9bb8d9463ea5637ca0218b7554ff1fd379fa6754adf4c9bd050fedc31057c3807e29129382d3e0a378977efe9676457c088f595dce59d6d833e8c8bb020170827806e11efe144bf71f81ff8a558d906d6f1301b9b4379202f55f13e1135dd4268ee08d36e302e4dd38728985f5b7b13909c20177360b7f1038e8e0f63fc0264fb47474cffd7f70bda0d2b58a5fbbe2bfad72827f5f1a3245ed1c25bdfdd97c52f974bd6bc10577a00a90fc4f3c70e0f4048ebe52b2564c5e7ae3d1870baad82704e9658a7283d24efba112d741cb54e202a8a24794e5a16bd3727a5934bed6e9794555eec6b1703bc9fde9495295caa15bdc2830ba33faeb40e8cd4baafa48b4dc377ef98f384c621b7b10efbed220af478940e06ae16094010862739f23aeb4506c8c993da621b178643ba1d1f111d34d3d2c6c0cff5a77c3a849465275178e9dc8519b3f65c01a3fab4ce250ee67309e626c199625a9392395fe9166c73ca61a29ed614cf3bf5e82ee3e2712c19df6aa76cdb939a7aed987fb972323a8b57722bc839e7f2767f967226f74f7a09cfed73e20c7fdbf83d5333af09e2b43916d42595e765ce9b888cc675432b682fcc1e0382f09f8bfc652758410702e62b90fce76e6c03e401b84f00b5cc000862fed300944d19d697963b23bdd97dc3906fda7294375ef7b4308f9f7ebc383f6e2bc8e5c73fea3e5c49768544931021f92797bd331cdce1b96ff8ac610e9a676947ece3dedd0566b015a49f279d3031c6a3ca442511935afec4802614a556c8b1b4844c27c5e3849d8d5593412f041d80c1fab80c44d476ecfe3eb3855e7ff14a294acc4d5ba270af5c90f8ea9344bed37138b8c8e74768e87ad324acc921a44a650224a381dae95c073641e9efadccf06654b92729143bb4760029a8e34d4a7a903e8dd3174f03349e471124221cd7f650a71e69d972100c92a1beca7ce70691bab4d2ca34dc2ff498e11cfde006b7d56c26ba2a0383afe285f6ccffc8cecfbd2985113ef8056a412c0d8aa2b7cdc31819bed81fa90357a3c790ec7255e59dc5d7573b22e52bf3e09aa37698bbbbb82d5f92a0e2e38292568079792f6c49bb963a4169e00949624a1dfa7c6a6ff64018c22341043c6b5f321a9b70c514faa1b7598d541e8614bff9eca76c1107a80d9a3851cf803404d0da1fd6b540a200c2b5e92369896dbc9ebe76a04c36dc85ed760839e6729f52cb98586387de261b5bc0a68e85448aef7f8a6ef6335d74be10a12510c62ab27f6746a2eae078e806b3ccacac53f7dae94c9ea1589165402c31ab88196c34ff94b8ccae1bc0073a939abce5c375927d3c6cfcd1745c0df6b18d7ec781dfb498a6a84824edc457ffeb60171d0caec5468877ff448e3bce54fa46af54e0eebb138b7437ea6b817774d093d96c59daf09df9da5bc1f85670931035ae9da8a6a2ad5c933295bf9b098124c0428fa84cc1145cd77a4ca9791b31acb557bde4e156147ab96bb302dc4d136abc14c82d28ef506e141818c183ffc935e9991bd2a83c71f839068c60b5118353bda0fd857131b719d3ef214c7addad264b1edafdd2f49f27265fa0e8a342cbefa68377eedd712e869c5a09ee8fa3eb208b54c028378561619658ba229af04ad24f25e8f2da87987c8601a1cdaefb4ed90c305a6cd5923851f3e5d15d56961a3b86d42f3cf6d608909131c0b434ce7b96d69a0f104bc5dc10b98bf01990e5335f1a5ba91d75e46995c42ebf32b72dfbf17921b791fa4ea2146d060528f45d80ee4b5dae98689fee59a269e9dbb3bd74ea135a971640557c479de70bd4cd4f18117926d9404307fc87096fe2a4b7a689ceb1fe366b127bf974daa9abef6230115d2bffec395fafdbb1b62a4cf7bf687516839b837e37336e325042c4981ef5231ec0baa1cf9011474e6ff67a64caba38a8a27555f795f297cb76c7c2a951b2b1dca4d3499da3947c4b9e3d3d3dfff76e80799741ece020090634665e6f25e59c8b071b8b39888d734988f2adf35e44cadd48cc6679aa93c45a982ce3c70e1fc32dc4531c4addb730a608130fdee0d9a8cec2dc3bfe54f31be289882a1590a665e49ce5320b1eaae373c736d81fdbe4e8ac47bb6b1dc4de6f833e2b0c586d1fa733d406c5dd881a285bd017123db6a814c1aa0203036d32699c1a1847ad2a6497bba1341f237283e95c6c5157215639587fa4b2c11c0a23801c88e54896b1e4e5ce7d1042ce54cb51c4600b656e45de3c877a1c92cccd6e4f8ce4d4c91ef695f83138856b7b09fafc305cd571f6f4708bbe290d7375f9fb684fcc06a148e9af8bf1ea04fa65351d0044a7bf199be9dccddcb7b0e9f7e27ef3c9731f2df000e678ed214055e7746f0c1982e79b2507692c5156b3564574a058786058dc60f3b7c5674593d7a13fdb8309036f0cb92bade763b5a778ccff6a2ec9aa84b64fe516f02e549a81cc08f6b06d93696451bb868f683a5a471c184a6178fe6e114c75147f102e302a3c04e8b32006e46398a121defe9068f781796160b5a54808f262f530cb446e90a66563c52b0edd5e53c14fa295ec7c971449b37343b430aaa4db9260b4c09c7b224e5462afdb9e2cccff8109b2848a15e1b92cd26b19ec2f94ee5731f3f4c4984248dd4e8bffa5f7d87dddfc84603190711f3913a07c8b781ce2cdbd161ad69643bc907e46c9774175b0581250b841b4b7309db62efdd1cad5bc8b8fe72955e14a487f32249aec84b3f8a749e6cfb19e64a33a6ec6130478c326aafcbf92950444bfde4709b9b73c36bdfac22803bb971a67b73f3cd0bc3a87523017fcc694b2f50fb361f382853ae71aec27031836c0a6b5c7c85d426f59b887fc2ce5950c990180c951ce482b4a0b622879128b496c39fdeb78ef9eadee0f192bf00e0448d70542fa79085679d46736df4a0839b191098a8329db5a133ec472563459e6659c02f42ebef82a07e9dfca305d2c1c973448795ea9787accea5c55515712245e8602f62f3d44d4d4950ff749ce5ea8d6f2de9390df4071a14658bb4999df3c7543c0f80420ddee4567a325e3299d93bd9396b69e8d25765136ee39093787e83f13b5001cc634b92e0cfc066303f1af664d45d5de796ac1b080ecaf6f063773aba3ba822ce36bcee19c7c9b1d7d6b63033cca316793ac4edbd6325fad8e5483d94d0dce6adbf2edb5a03e900016fdf986141376e72b79467cae917bd169af5ed231e28f1da51a1f7f3d57eafcd273d550642de97343a3643ddd68be48934eb97baacaf1d18327ab3dbe61ffce00ba5edef9d5bb57ae1a1e451f9fc5012078f79e352a4c2dd77bd27b9991ed34106b31e3fc4deff905ccd8aa4347ad32428def921b1a712b8994d1550c8a89e9b73c9c93696ae57c1798fd60add971e0e34ff4cbe069c3a4af7b85a9dc62f626055db08669a917003e209870cb8e009ca19c8b1e0574be512adf1d6a766a96f7eb2bb61cbb3c451cb04dc135d4bebd69c6150e40256d231ab2028334ca25798907535fb9fd5e72d5c40b01a2472431ec669149125aaacfe44759fcddd8ce36f2a463e11588dc0a1b8dc635d113390b5efc6388228c87d8dc0900ec52fdf874caa43aa9d08755d426a4528b419cda85836483f1db364042fc1107310e8ffa1ec5d39c83882b6631ad968e30145e0864ee975da5b90b0b45ccde92c9d4b64979b40e1635d7d1a0dbb7ecc37a1b3d8f9a26c42ede51cd6a82795f79bb641fee5ad45d0cd9e4e3d76c08d781988ed2a08d8bd7de69ee8069fa5e90f46ae8f4c93cfab58df4c8464e62241e5879e1d26d00f952ba96ff645c27e7ee3ec151bfc49975ef6cb7526e2e111e9ca9ea3209e009106ede902c833712b9731dd2ebc754f4e38a95dde1c2278ef92268916801a1297984c72080539744143e84e4474bb5e5dc87b760cf7e259d9f6afc7ba3a7c7df1cf1c665aac62a5b38f7df0e6cd571d2c247cfe901d0c136b75079d356c153324dac5ae815605708362c8f7b30a596bcbd45433c2935e2dd65b2c7114c757f5747fbfe5268a8f5493ba986ba80778aebff39d14d66075f8acd79a72be0b7068da8f4e38557d6b52b04d6e931c18704b1f1f99c6720a10ad71763f1138a1e57bc8c6bd60c249c8104d799ddf9b210332a243a36a1d385472a5cc3a2813bd199e7f48031be062945426c6bcf86810f2a096b5886cd2d0b1d29539735a31a46f03425594aebbf40c19cf7ec3970b0c9439456c5160d8e318014c4e8c1f4bf6a87bcf20df951b94beb93c210b86a9bf97409a29b62af128e4f028379fe525d7d7d6fca56ca8b75863289b1f0ce33cb7777b9953ca02522f30ec4bd0588ddcd96534c5abc8a75e6885a557c7e811ac40f15e9c5c31a368c537c5bdc6d24708069e349e7a6ba07f092bd7f0e6aaf12c636d7c1ae09cfb7b89ee4a205b033658f2cab80e25ac9a15b1c6d402842fb8d55bc745d7f689c1e52766ed3e74ecd1c96526138e3ba57c02fc8964082c1ae509a65b39af698d159527e729252cfe229c2cd94e16554483aeb6c19b81dfe42014959bbad1ac0be5c97848d13980225307059eb20283ba306c0a8a8928b8ac186f847cb971ee185a01f613b3895b345e1b53ce72e9bead0d1bb965e3ae5132ac7365a8e858642a12288885f52f711e06a3680d68df4ef2374a983e6ff83613d3306d97b4da4ef0d519feaf42e23db6048deb6fc28d498e154008fc7c7423e8ad5a0888b5b5668ef0f4f551aa6e5c2816b7b85d2bfdbf31b747a6d88f6aec3088fea75f7cfc1c47fc45aa1dfd50c119df18ba367743e8ea9d76717ff77450950ec1789f5e75765b165d35b5ac22d07b1f842144f783a4f3629af8271292f65fd935e356543cd499785cf81bac92d43e191042a78e6c355f54182bd9a113b032be967cbfaf43367a4699d80a98f0ab85f8f6aa2cfa7f988d9e6e2a6054adb90841d69e560072fd82a47a528aee43e79e60a3e868ac790a45c03b1e13e958930111daeb110f633e661eacd82fb6d6507e0984853733ba054d2dafabc4597887f3e8c159efb1027217ed084f9ef7eb63b6c848339122bf1ecacf43b37fc4aeebf5d18b30725a7bc9509e45632da998c2b871604d9f9fabc177edbdc9598fe02bfef318af99e654fd114e50dfd7a735a382b6b324c0ce3790f9e4a488bef2a1c41c14ec07f4b6782168f93bdfe943d3404e7ed21e9ac758818cf22b705e96b312c3ab1a43101d2f8b04b38b399ce686f817c91092ffb581a5160ecdf6266060d02c6d456387d7e70c77573dd1f2c39811839edf77270f80b7ecf6ec7bc436e670b4efad5194ea320bddc850f330195f5025d56aa992cd271b429dfc5cb826ccbc79da7cb2668f6ee04bb72932275a9972721f926034387a8c064ebe8660772fa940f9fee391438f812e04fadb177b3d1185419f813d888e6845319598da7e44c2732ac9e15026578af535dac6db0d5aa8674c136a8ec5445e6294e7aa3526fff25402a75e862c2c4744cc33df48c2e413756ad1c915770485845662eca3bc35af2cdeae905d719b9468cb21a65b3530a82fbbc8bd90b101b89ed5198911841ca0a80061242c84aea1cab6e31c048e40c1d6df8948aeb1f854cdda2770090b8ab1ae187375a63be16c3e8b2aeb4c0c375b80a8a3e2e61175946c52f9e6a9530d188574b4e835392dfcb160c75facb98e59a1881e6483f104c67aaf134a748f4d390d15320f4b8f64c43275e255cc0e2c75ddf22c16cd9951ab05d23c6fe2d15d7f1761918b5651cc5f37e33c5b564d1ca14cec1f8c6da48927b52fc3843fcd340099b9a7ce07b169545c8204a21797328d21c8f40008b270346c6adfd03c8ccbe7468daa91a87a2f1e3b811d0c12133dd80c4a424faebd3cd2dc8deb74226dfbe7775041baceef9a5d215f8d36b10f31dc51aac9ce3844230a491d61f944a2745aad929d1353cc1d06a3bd9245155a3cedcf2b46d79575d586217264266aef5a3e30549174f7b063544752e98a4747b124b5b4920a6c3f56e8a0649c2ccb9d3eeb47a1da817f765b2b1040eb2fedbb852e734a8d44df32e4bb2c1a73a1ef543f69e527f3074049f22946180c96b1c96323c8e92124dd20deef7581a53708cf2993f353c4aede645c22f049ae8cfc42ed38c05948b36cf40d1876c4f9bce58473eb7e699596289cd9a90ab5c31474fa7e19301dee557fbe18f767bd6ce9ed1d28091ce28cafed917a2dc3e0336e8ecc72065d94f6cb4261228527fe69dcbc8bd2e80a9e55e90ca29112936a71edd574cbbef5d0f55d695799332bb15e1873ab35d14051d788f8376c3d86a2ec1fc8360df8c18edbe7f8eb77cb7de5512ab28f0ec6c4853560081cf7c914795fa2d867f9af5262004a94dc51a8aa766a84c7dc2baa537bf590faf332582f37d8731938e1f87f1a381f14e3fb466746ea9ddc562d9979aa63c31339ddca58f2850037a54c2f29fd59a34de0506a94115fa3b028e50d46e34797633c7efa210b58ca8475ae0a7e20bd8509ebfe85f6fd541d77b46aca76c20827afe457647fb162e722c5bee765fc473cb0340d96de5ec6b17770177666292fe4f22c6b0ad7033495769223237cdf0946a8f57166cc047900c68fc74d5d1c5c29997b776a87a9d937d9ea310f1be755ca78d85a060ca1dea86f9d7ccdc239435705d41304ee0965f7698c7e63c1f93546abf5cefcda04a5a9e89c16915b77a32b0b0bdd48a01fcac5551ba463e8db3324a89d86973807a7a33debb359df696a1c898b81a136f955c64aa2cf5a84b2e3da5e604294953730c2b76f291b94ca461fcfcd13b00afbe0cd57d4f10d9f0237653210804223f0bef81cd3cfc17cc6dd864271473829fc76e748a3582bb2a489c314441dd15886182aa96176c14f23bc28561d1394400e7f4a01a80192861e8deef245c138584d1b52ee0f03a23361ce55de421e564f223294940472cd9a213221e71c17365df82241d35715dd9f90ad7f156263d3a19066b827b40445f58af74b11b5087a4611867e8440e0955ca4db4a63711ace25c5fa300e1d6797907d4bc34d00834cb973b80a1ef40befa931ace09610d58ed07f28cdd0c3c4f0ec3df6950418803c4e92ac237de9e08c0251259eaa2ef94df45be9dd95062281c7625728f5d5793e86508e4a8e5cc38d17da55bd82593c6498794c838ba0ede2180660081f6a9b838436c2f0e431fbdb728da67923237fc2948d3070c456e3179ee43deb305bae58b70b623eb4c4f843b90fb1a4f31ae2ff6b3352645f247e0ae1c33b95b49e4ec93ffa0f2ea15559d1d0c870b3cce81bb0566121000826f49887d4c4202028c0745e3e02d6919b01abd2edc6404eba05e6dee78bb9acc81f5680b7b26935e438b83ca63b28f67fd81ac7481ea52c618ed23c4889caaf2002091b99eb2793b6fd99af81108978f0de1770668f10e8810beee3e484c3780215fa9ee0132412d9c7f2717f459b97fc286da03f7e640a1ec9cdd79b4e039d724f44e4c583399e3d596199b5ab68bb8a20451df7b5c02cd25e3c53d2cafaa7b478444b93ce81204c733aba6873f2f5d427c77f61322cfba8cd43058379b18f6d1023857407f96c47ed64265df5cee6702cfebe8c9169d3ab019efcdfa7e7e5c18b1d3b6e8efbaa7e05e1dd21378739e953ba8ed58db59c63bbf8f4a98069db6e91c88931e143bdcc7df186db09ae01781f48d0754536fb3ac565603ffbe1a2a2f187747bb58a136f9133ee42b156bd48ce39f6ec215bbbecc04ea5ec26bd4ebf76b1ca82b7eb9b1ca686f32896fa23e75e29d6c1f14092f322ee4e8b9d840ebef7edd988866a1d63322a6799597efb396224bd716688ec286ce279bbb5ddd61ebff3ab9541cab124df445a41ec3b075e7955d8830f9dc80341441f52e92871d2271ca0c5be69c48a789ad66d43c3e2f71060a5d5a981d088b24049ec19431134b480ab08eaf30ac4ffa39bbadb5b2799c6633b6ace40609f0546425016b5b9c8a5798e8171d668dcf41bb2c7b5def6c676a8bab746620bdaed9e0bb28383aa9ec4d75ae7b4f111a2f18ee5b613e222636041230935e480df9d6a85d662bd43a0bc2cea2a76afb9d5329eaa80f29191b7362740ea1fa3f6f7d466cb5e0b8ec97b35732ff044dc993c49a314fd4c8695a14485f5234bfe03e351070248dadbf75b9a93b0853c25eb7b158d00f18bfdcbb7b75fbd9000af3b12e28397edff78c5d6a3dc4ff0686d85b9dd040aba16e010fef746e2b172d9b3175911a2cb86d20954debc81c94f31a68b3d40a74dca13ba9a9134b3fc3b12a55ed1e460a489366a15785b47655d1b68ab430e831c600d9f06b78f62632d9cac7dbeec9458dcce74258a28ba1bbd9703f6ed63aaa5f66a901e3bd87a286e5df6a6ffd166bc8ad55a161428337b9e41461a18ed86495369301b2077a3cee144e649e39ef9e3a74075e07bbb82ad8e9437d1652495bb9b36a1f60221b6b0c27535b6b41f3512b1017c12fd81d2e4f4464b0c593b210628590cd167793069d57370d2e9524bd379980b0401f4edcdff7535959ec45d65aac66b3aa9bd3f139d58e821353627f43fe23307687cf747ff8bdc8c8925d38e25b56715a6f54160f5daef0f32540a6e1655c1a1bc179dcbc778a59ddc20072d0a679975231ef080db6202d73aef4faebbb67ec090ac591ce0f653313b2a90ee64f41aec05e9ad040099851e167a8ed852816579ecc4dff0539be88e7d4db937ca11f83b8c6c61f36cc61ded331db33ff2461b3e15ebf2e1307ea5aea0ed94e60b543f0b3366c5d65af00838f31be7779241aebf25f5a0d8a42066fd8a2957e715c667f1a2796cf3307b8cc4e34be5a8d4e546db0a02e951c94e32ee3caf53deeffbb6c1963b524627acdda4120758cae051db4552a9022c0df8ea1f7339c8b9a511d98a8399b5a177ebe77d3978c550a5ecd9cd79ea630586c8d492a97372b95474bb6b9776cdb9067058aca2562279e82baab876443d3436a63a0367649f9291792fc511b87b417cfe8fddf78a8fd658b647b29a4382151e89d890f2dd44fc744d6a94d8ef717100d9ab737d8714ec7486bfb78d6b3a6922e685349e5f1903e02fcc7e7b8c9b7548716fb9f2d6045be016037159723c6950cf5c3e733ff8a25b585e6833c3f3a8065e6dbe642f4795154e0c1628c451ec75fc44786281de9774133c274d594455f48c240b49d14d25d5d6252a5d36358edac033571646c7cb2cad4dc742525b0b2cef703ae508ee2087dee59af633e2b0b66f08201a906fc864eafb7b538fd4eb9894cbf4e066e92f2c993f0d0bd39c1a47f4e0e0f485ad2cb499660dde5fc5f3f25c03f7aab4b7bd7109bae358f790d67d476b1c9aad6c3c7a435cfb84cd4bf5949dda3f7235ccfe2736474575416dec01f66b05a21236a2e38abe5f0f7da57674b520729ff25d16c7dae198fa6d2fd1af6601f76d5580437afb90ccce7243e959519f94c650d683912de9376f3421e8d2974ac595c37baeda218efd9ba9068543a9f3833f97ab43100474085065006cf8ceda23ba941e48b41fe87fbb5690a3a51e3b21ea8c8a3e7a199dca03f1075e69316b347d916ff8df809bc25f614abf0eea5f99e0e7a05025d295e6b282bfc8d830653dfe19d2a76d3a5ad2e565c5e3714c5ed7a7b14749243ba7d9dbbaaf2871d198dd9f50edc9f0ccf2622f3d03a681d1fd02212b57a5fc79de12de8b1478f8aaf119b10db95d0c31d20a2308f96cb6f51b4ed1ce12a20d75fc324c17688fc020de51695918fdbc4909a640243c689051d94e883b5c7e9dcfb4abd042ec1a1d68a013ad4e93dc4c158b0501d64b3cbef988a7a290a6f47e807076a2f6bcbffbccfae9e0ebb6dc29c0ccddae8443602e2c9053a94036bdc778467520163c34f529c4783832ede58fda876e25d5206212c406e10f64370d9fc0dc35c7d68cc64fccaf596b291db5422034743a1f08a9896b76d3912491878494030c7316116d0d59d80e17af0858a27fead56a66461b516510a4ffa5704af5734aa9cb136cc27e49b31ca9cae85eb920ddaadbf008df0648109aae50dcc7dfec12bfea4cd04775ca746423a350c3ae7ed7aaf7860dfd34a2e9596b990263a93c5d22e6526a7ba2dcf9815a15e550d95e52f985b6dd9aa070976a1e0e8ccf3b041408b288c0560013d1ea958d3d38abd6535996c5128d15ddecfbc124a3d281131a9185303789f726ad74759b444fcabd15a973c2209e2b41586cdb7231210b7bdea95c59bede62e945f55599d594acc18c3d62249b6cf80f95b6eb1c9ba3204c7e89acb02ab4a0773ef395c63d79afe040bf4b63bfb142d3ff962059d585e21f1a54743438fd30704f4679b6bacf4f71b802402fdc4f8398c56241c914bd9d37dc0d1cd0b47b7ef00bc142753d11165695ab4dd30557a74ef30908963ec469d7a170a7d09597f9f84f230de054a204c9dae348aeb68c51797dd86190555517bd21fc2f1916fef9031c3d2152274b3057be65ecc6326092392fb03eda68719f467f5b198f8ae2beb9ee6b1192d98a306fec1cfe1fed8fedf6a83fe43e7fc4f3395dcb36157feac2bdc4db14f94fcc4b8b7cfd7c6a9f9f3ad2534197e34bb8f6d1d004e55b3424d6b6c2bef54ae6940547e537b43e7ea8d5682841e0f4df34789965373e43be5eb27ebace6b7fb2d9c8aed3ac9c34719b4e7fc69fbb1eb7836af6d5e04616f9ffcb11d86ab87c39d5d365a8eefe1c1b674269097b9e87a6381f2d289a3c919001efc4e074cec1d3d28068247c45c31aeb523edf6b729ae27fafeb82f13f5e10134a09e520cfb7926eadf74e3864996faa71f5271962a89e5bf1ac2e0769b815beee5ee3c56c5fc41e5e10ea60bb899b82a40492cd8aec6d2522a8c47f6c5ede43bfae7d1f400313ec4d4a9d24f3156baac9865dbf527d5053cd563f16d6bcb4486b15a6260a0bb9010377ef03cf2896a429ef9033a86751bbde928e299aefae3fb3574530b6b23493280c835aab329f7604885a61be0e47c422f141e4fb08f6e55fdd023b1027da9290f69ae37d7ca21a49d86e504c2c816fc2b3f2eb99b2428c90a709af3526da411462b217c7d248dab432b490de7b18ba1579f00d71eaaebf3d8ce250a179530fa327ed2a6bb20d8d96c176e58a8ebf3f995dc653a4c5e9b56c00a0754fe55d5edfe721eed7eb99dadfc5bf551e5c796485ac316ada0716d5829439facea49c7ded2d21b83f30e80334ab1ee192974e7cea3679c99c5beaac233f7410fb1299dd839af7e2a882acaf8996b1c706748ad7091862c7074b8bcda50056d541240c69a18cf82832a342cdc6ae840bc5d9c0074ca761aecceb626aae091450bdb321a7993c1d78cdc2331c1e9d8d0f597873c69d02ae31b087029d00b088a11e5f43d7959fe5da53789a4e586af6d1d5d20ecf9e4921d86cc8a5d06aa68e472fdc506ce7d4b8333d4de236f747ce3f59f06b5c5560b3d2bbbf0e4d0398c5371030d39ab807a68deb48590d0642e65bf9fe7d2b081e021fa0e62db0f694e4f7e31111a230d8a498aaec2a213a351c42a43039d1c236d914c9b029bd30342b82175f78baf2a62227509a5845bd45683165e7aaafd93fdd8892d4a0d7e24bb3f0346a545fd5c1b179ba03cc5e5501284738a2bcea859e63c6edac9ea4365720ee048930e587c4efc841bee1425d5ae2c277185548d54419b916545d44d365cc7c7e5bb8a17427433c087d8288a33690b96be1d45b78aaadb76e7f34b416ac8fefbbc005384b8d7675dc95453e3582a8ae5dfe071e4a259d2e17e95589c84fe7c2a111540f1bcee2fb7e722a3b25d39f6bc114dcb83e301b83900c163ae9afe05d6d91ee4d95c5bf28956764c1bbf191529f7ead9756e03433d5c97321a73e7b28652152f5c5f18eec2cb844d31443c5a9a663efa68ff1c9709bdcd082ac89a3238501e03674a6ddbbfe9de839554ea29a06b5959253dada5286c5339ed6762d9e6c23ca5c9050f37d17fb0c72c07fca3e0e559d26b56397e52750bf57cd930d46ad0831291d93a0cb59cd83c441ce41f967f82e9e0e87875308d5829c8c1bc7356a5c4ef362d14fd23786b13114a052cbe50fd7b1e21d1640c884e27f1aecb83ed6b4319453ecc9f2c71616ba041ef485dbf933a9637ad412868dc15f3d16ad5117a2700af433d60c90e82a2ff7227757b596c50163fb0396da4d70160654895b74a3c3bcf71f9c8232d1919d3059f2275adf59f5f7c2726807c5e1c5504548e44f822162a2708be6fc0ed1b84a8b9376ecf94591f3594665b097be841a8fa76df9553e5a20089baef06bae2b5f278553e10bd3debc917f428083d3fe13452422e1ddfe5bfb598deec1f504ef27b57a8ba3be4054a785cd55d833550c0eac307122956824f7dcdddfc9ba9c121d2fbe91829b7b01c42edc1719600455e74844faae2c73b1cf0f954458b984554637db8fd2ab52f0f0d40f0fab4d244728f188c46ed4ddca0d00e8a4b2af404d5923a4a547b0e179a6275cbd44c8cb44a45da22b2e3ffb1ebe969d44504fd74ff1d0e615f860b47afceed89f2ee9fb0d0032861fb2b5ad75f566b00a4a39fc3a22574f6b5538f7354123d8b2d28afd630a3811c2dfe92936a24f2b3545ba4f064e53a61624fdf44c4b7713fb8673a67c00ad0c076ae8183815875f7cf0de5a929d6904cdf32325199f22005ca9915c4e06ccd86163abe44b50461f2e1b852ef3c956ad70e39a355c2f1558c2c1ec0077149881037c4a94ba7615ee22beedb1b1fa46984a883a3fb147d4656ce97d0ada59265de64729defce47a21b2bbd3c5bf64416f5dd3a6133ea3f1b355d6612ea9dc8e7616a97686be716025e27cb23a8888bf724eb1e44a1531fee986aa3c87695f0c24cd85a490e31f23029bf03cc6c7b841beaeed2f67677b85738bac664bc81a30f930614ab1b33b163bee30cdc0589d7cd5fd6e56b2425f49e41e36c1266d6649dfbc37530a40f463d8a9d4fc2ab986dc121f69ae0e0551d9148c6e674b7c5246a3da0abb0667a991e3cfb94e776070c286ae95dfff6cfa7a2b13515054bf33abbece60caa81127ba0c06576a5e585e08ade31dfa183d7a622f9dd35745c1563665a8ae912f22cbdf20ca09276e13f6bed5e44f185b797dd4785e52c5f6521954ac75ac5b01063e4816eb01d318fc763d556fbf8cd99522075901cf74ebf82498d65ea1a7f45e5246dbdccc93b1737014b194992ea68b94ef754d485e18b5c3301142eacc9b51f5ac328fa6f5c71efb07fb442a2ffebaf00e038b0b4455e1040d495779e228b37217b9b577c8ced3c8311c3a959b8ff386bb2b093ed94708bb6190443e5ab2d444bedd3b9ea9d458a0c9e4d0e2063cef23aeeb22a66443b5e8bf0c01fa40604e6b932b0ffb14d537d2317ee84d40274fe921d9a1776d85320894a04d4cdb4b3d8cd5d32dafa7210836520d1e81266a724670a81d3c96d78b46016c9478c876e110f17cb37a8f2471d9021be41fd63fcf2cd3cbb4dd1239b0e319e787de320350b8041eb8a67a9b3b72bab6a34ff1a4759348052b37657c529f47213d8bfe96d37c65c163b4d6481b90a0ef91deb6de89db399428462699ee5a3000cba6e587ea48b65fe0701bbfba0b70a56eec006d80712eefb6fc0860fa3670d48aec34674401017d0f627343465759b16faa9ffae2321ae2eda803f827111e72d8472d956ec6e3406b73b20aefe7486527ecb47bbb97a879e3d821fae89aa55100ab4b91274ac5af9df30ee734ccf746a171fc3c737f8a9830d65f3372684d1d4d35216305a5faa1845606e61c19b803868028323a7b0185ea90b3b1bb90d1c2d86b3b1f4d69c8b9d99d8932d6997e99aa6f83e88405fa44f02de2ff1ad20673691fd448c4fe71a84de01233b6c0c44c5d7f750ff0131691937a7f8f2cd4b23c31bb3b66e671b0e66c325b5ba143a81e3cae305146030cb02d7c7b05d6cbc0df0e2f7ed48f1c500d1269c6046dc4da234161711c873386de9aaf6c2963384cbd21146569faa22f54669753e88897a3de7b3e6efaa9e8c9c589d567c68209bfb753fb7ab694a767dee91a6e8bbc9c698e4e37be6f8b0d9400862e4c1545b448333f510e0f38d0cd3213680ecee89c5b52bcce39da7fa763f30601374a85bb57c73d4da376049d726f364d6a944b42be3bbfede943004669b2f025655e94a895e99ab689d5c842505258997e5cd58b311b75b3b074927d65ecdf98787bfe85d044813f2a7e775fe18dfb22ba135cdecb9138e6fb4ee1cdec1f4d4112545fd10d847d65e4c34a10a7985208b4f493c352546ad8013553052024cf1c1d1ba0be5459aab4418422f517f7f7b004b194f29f85407353d5862ce66498a46f3c0208f3ae9ddd5f14c20725c9d6525d53e1fcc23fea1f9d1efba9cfb1f2c636ab371edd567844160b639db8df4295f80a1e21f3576ccd1d3b4ff3455779e1ccf5a9dce433e6e414fcb3521e807c30dd0b8e725aa8e56d320bad9578741036444e69927dbfd6600ea366230473eeccfad7639b4ffc32a0ade6fbb4bb2246a2de378edbc493c211d5d2ed856a745238047a16180f1e84721abd5f7bdc8c474da1bd797da831219a5e4c40d5f2bebbeaa1d38ced1dae6805755ea207e1f15c99bb649fee46a3bdc63500d7ec052bdbe60c6a8d25334feb6a2c045fbf45ad65f6871b7b4e943238739df145459e9f932f49436b3e0f2a27395adfcd7e4f4c20ab90b4c43b67804c1eb8acc25f13869c81d9c50c891dfc7e00980853b46dd71c2a99f2235bc152bf4b068813b7dfe8a90596a72fd3a4438004753a0e7f36650e74c06d5500cd88e44c43e26d7384d30c023008da88774c1bd202249a10c0ff92c0ce89bd2ad743d009875ac451b5bb84dcbc801a8932f7da852bc821c301ea3fb84653a1dc50caf67356b928c9618cf6d996e9b820306d43c569866c7014d0bbbb9f46b16e8de10d1175e63ea1dbeccb274b6f2f8994bdf84cb9b807a4e1ab6cd9f8594ef6f748898a9635cbc64d401835f5c53695d9d7dc2e6a11ab6ac25ff4336d20b34577553de18d86cb2c2d28d5db8441cedf68366ca820e96678b6c9713e4f1ab91b401c402fac48aeec9f6893986877692f0f0c8c4915f265203c270ca966c7c176e847075fc9bc035f25c2b2a09cd09bf868bd929f277075cabdd5fcdda78871deaacf3a1298abd0b2579a00ee3b5148c1257ccb2a1c21a76215f269d6b1108025067e6bcbb7da17236f6c54291ba36fa562b32c4ab8b91bca29f8953dd16bd5f718a1a29ebee48fc755e1bdcd6275a2cff18d7e6d3eaf0b277f5cd30fefa7de9c1b06ba86994fcd9130e48a541dcf7d25481b48b43d6c7fbbdeffe6525734a7e5338dc88ed33209a4f884602cec98f2e87d19a6038deb35b90a6ca5cac289ad0c4d3be10230934ddad6baffaf4513d3a36b4a0368a59eeb731994cfcf32b991a1804da4d1dcae1978bf55cf848ff9c43cc4c4f4edd07fc72996083f0fe80f33ca750077276831a2b1449437eb0ffb03fcf209436379c80e194277bd613b749062f36914d6edd2b1020debf4dae352b870dac2447014cd1ecd6544390e663703f9cfa6a4509c0a35768195ed1d528666ba309dae4de838c378aa6e9cff8c5c47bff2a143b8db1a416096d1170ebc26a8e91db2204fb8903cf7f18a4d5105d1eb36e0ffdd86597eaf45edf2867726d52545ba2a24f80d611463ee88673382422c3ae68bfdddee276a8cbd3d9ea5e51d0fa3dd52a167fe69ca406e6ca3fa6214a5b4f23c31bc0eee9d68b1402bdaefec2575d4015f5f506f8bdcd593006d09289cf85ead3e063f2ca8e06868b15f4bfe0ef5cfbd53ac500cf70d15c8894d62e571b60e7d723c529c91d404ae603e6cfe3ed7d98d4fb603fc9078e516d804c630be27bf6f98d66d4d067801a740651551173a7c31038c38026c1c044bb76f74f1a87d0aa0b3d00fc43ba00639f904d34fc82f5104831a54162642029ad325f755e827e09472b917ed248636668fd97f4657c8bc629f07ccd7501d90a8f848fc9e36a7e11e2d307d19a95531b8925db9726e7b2c72f14e30b92b89f28d923d44bfd9ef547e9f5c41549e9516bac93bab677b4fda72b41584f780f876efabe61c84bef95bdeba6ec9f3d27c348ffad534d478996d0b027187029a7616ad96f909323f1f3b8c0003d3c2866f78252fe7f5d380d6816b8f6e7642159262b74916ffc2bac2ddc899bbc1d1d27fc9edee4a84e1a30456cb4e144ebe9239ca961bfa27928e0ffeb349b373e626ff22a55caba075abb1c7e915885eaaefb3951ebe266fb7dc686aaf22796b722147778fc6bceb15dac6a9ae14b1e7494192be0b9ad31a8e3664e87640f7ed8643a04ee73a765bc8cc4c2d4fb4f4dbdf7ef521e50010b42d267d7c24b8660f81e4c907a41911aedf8294a858c82f41116f8263f2993ba5299292cdc849a7884448aec5996cd24bcda2f5780ea1030ffc7ed971fee39efe065f5ff58e41d18bd3d3aee480fceb357ac539af360c5736be09f532ce5634835ddf9de1bd1d950e2347942566a99ad288717a2a62e79b41ea62f7c5d4595442b143de1735491da50d5154ea41054e2fbdf947688a392885dd8f8c8c23a9997415c92f4c6d696a412facc5a14c2a2a423575f9ad8317a30ea3017fd5850dc9f36b21b023b284ca2e28c612d1fbe2ad9c1709d8a7f5ae1d1bd3439637af9f054888f1e59ca79fed28ce811f1087cc5eddf56a3707f3cc65a11a9ae874bf59b5688d0adb4a37750c2f97023c8cfacbe6aff4808943227368a504902c92d7d7343f860e3518277e932d75814277f24443fb38fad40fde2fcfb7c5ad9ae81c7165bf641ca1c3c564379c44c44907aebf8221b376abf6c5bab53a49c92149d7330e8f601c6147e6bdcd9cad1469761379b2b4b2c62a22018ee5389609a18f23fd3f50e2c2ac9369437123b0e7ac2aac3a6d49105f1d0126476bf3061853b7e1cc1c1b0f2bb1e5eb62be3d06269f9d921c59201a15b95c6d3a16be475a6998d4b22e920d6b40f761203fba10811ad7110a166aea3abf4a4a2c4eb630cb1bb306310b94c1d32d7e54d7fce47a4e060206efda42a2b0fbd07785b0d88ef169d49c13508ee978d6a6447821a709fb879b43ed221ad19fbbf83e86a7fb55e445741550457393e1b7337d97d4213b5829d4ca0f05bb5c328e84145d05ba1446c4a8f85bc134b39a1c917e256abbc7e37f2eac4a248b715810b6ce4cc017594f6791ac7b700845cdb5c300622a4d4ed83a63ef9e3e68068dc2df7f498929ea3ce71a413cbc59dfcadead7ffb0d4310fed5a28cf79e209f5c2da8df4212c4bf749fa291c7a4b008ba400bb316cda88e142d3b6ef69f7d88c0b942c412e77cc95390706852fe768f452a34466b39d59182dcedac3173ebe058074a2b5304c39384e00244fc9d1ee33022786e18bb4409540496ac14d7759495a7b64c94817423ce7c36ceaa23ffe50ddbcbb6d7c971de94b8326d7ca39431439f3f6fecfca9c829b6c0eb033724a888af39398f1a9309593d4f3780c80790627313ee86c762e81c812726a806c86f34eaa1de5be6d2f5d8cd29f2900575b2d7adf2b25f9e32a549ee9d5d8af5c83b869f6099143f3cccf5e06059cec2a3308d3e72d8c6286d9c5a97bd58b7951b7188360415a081f1e115728ba4e470652077c36d8d8af1eaf15b2dea29522cda9cc7b2ed1e7f36d4858dcbafd72d0c746770c2c5e7ab68ad0577277dbe6acd740f68c56179d725d07e010a060296540fab564766924dfc9cff0deccd1b8e82bcf47c847fd841526a3eba970dfaaae55e655a002a7937c65758df17ba004a7f4fb163345e3895a1deb7a35205b247f56d031dc745af7fd1973ed284945c668843b48b6c8f9e7e1af8b8ec06284ae65c6ce819a28ab897cb72a32270af8574befb498ca6862914b9a04d9a205d94f633360ab1cf103f00626b06aa3f7cf1d49f7f31b74ca5c76d301662f2b09ce2d714d9d92b6319cb9d30815bf09080acd530cf662416ee670c1b926e48aa5707f83bd9249373e8a8bd6e0e034a6631f86bd6e51d72ec85d51e6170571fb321433b7e6334bb4aeae5ce32c4a497da5a97dcc93472f20d97886b773296bffd1c693f6ecd670fb7b94f484efea0977cfc7a1e0a1746a70ff0a3ad69b0413ae6f74b949804772e60b0c8e1b17d479a8f91caec14eddac56f5c78fac4ef5405c0d39b3f0d0e3c9afa5487b4ec0f390436eb037eae5887e2da6383ad124b77ac8a12485b84b94069f58c079f3eae9c32b95159a083aa1ba6877e77caff250d1644a1ed4e585009fea3fc8fec474e1dcd84228581ec2c5e867f13956eed9d91bd87fbd005cb3e003816362b921e58a6fc9c85b5547f7b75e2f79280e8ceb81e17f19f56d21e0635843dd877bcee0c1fc0b43b20d59086fe1b236fde5c424e413cea21572a517020341930329fa9c2ace1c88a910bf5bc554270e126ef962916ba495bedddbdd67d7479867eb3171e92c88f5eb8bfb227c96f569b4bf1a075a1996c5ec837d5fb1bac1da88652276af5bec085cc18de585455f4926a34bd192d6ac3990927cf228850e76955305bd4fa41b350ead70207aadaf36b4c118d00e815865d90af4f238486e142dbdf0ae5d81fd1c992f867081b034b02d6df221cc665ca3505a2d775b01a43bfd0881f86ec91fdc8cde1f4951837da1b3d17b31f02bdbc004f0dc242cca54d7f1d301c0969b8beca060f757fc3c7cdcbb5939aab65afcc9f297ccb7d82d54caec1e71a395b3959ef45f01d421fbccb3bb87e5cd42024f2e97cbfa2affa0a38f6929328f5d4a305e64ca22cc3b03112aba0fb21400501e2348bc77e0e1fa2ff6749af5598524a4f30c663fd4dc14bf09e23bcbc5bd934ca3c54290862e34d5ba27905378e503440591f7c5e096a3de777ad6fd5956c19cdb12acf0020312b7790bc9711c60e1093e9da3f149145872b11b77f958ef939ce1b93fef38fe1d8d17c02a9c8964e520d0565c0b4382e6a436e30f48b93a388582b4a42c9dd4089a7bcd7d21dbce27a4057ee1ee0ab713e3a31849b29e42c88f931fda51691ff8204efe46916e034c72a01264b5ed36328ba465704834de1332b3834a419070c819d60beebe9d008564dd3e458cabb16481bf33c0996781b00f64cfc5386f3ff0de12a4dfae1d97aed2798fa63937dbfb3828ae8fc94ee6b3e56aba41a0959d4d474f59c2c2b3fccc2f28106eb02d7a04a00833eaef93f1949bf54b8b8aa3003ff7b6198144b2ccb53d072d4e945248135d0b6d9164ce0f0ababbd8463a60de0c72952a4129e7819c28e9c8fd503eb6a4a65aab124e492c21c4d94609fb6fb08f6356bc5338ec8e397dd35fe9a34735fb7bb688000f4807147948721cc4344769734e096e76def834c27cae9fb1820546be81537035f297466bcf96f9eb27288a1a236035ceb5fbd7c3f7fc2f10b80f1543013400f9ef5f8cb5f5025137b89bd00a81ef468778131fcc2e053d51f4e9e1e8800ab6329ebcf631b47af38ae1965b41d342e1fa8a4d19eb877c829ff4ea87f7880466da70dde326b9ca8c8b3f41e75431d3f25de873265f674bf119dfc24ba54d833d3a78cef1ff4e2222792633aabfe385818f8b71172037a2a1ae290c97868b7639d631ffa3a04c6ff19dcece7c4f80b2aa628f211fa2cdfa9beb5d97b4f5f146a1108ebced354e77c52101c7452d9581341daed57d7e1d2770e96a1c49ac25828553f46d6ba656ad45c77a5928fe000252e85e71aee6c94d6f5462f7d911c16942f5ad629fd501474570ce6e43875a499ccb75a07824e8ac7ecb2476b5c231e71c1d239384a780a2d8119e19d40c55105d13b241ca016cfefc940671c33c9e7c4cba08ff7263f58f549dd814524c48a2cc9f823837474c6499f4754d9edb245b232e8b66bf9b07bb894e44cfaa34b0177330a51c5fe8b2603aaea498255198ac1eeab0cf56fde8492b6debfbc2be52acd8393fea2433a333f2fdcbf3e7ab9fe87c4530a80d092d63659a88d91f774e3cf9b5e8ee9a707bc586172f8ce601504fefb3d836459b6078a0e84a8f4c5ed1b27f4a7993a66c322f038611c42d7a5371b5ff5f093735a9b62142dab1bdccca7f3da1aeb12512a663162ef9c6c346f40d61ed65db9384a2ac2dee22bc90a08629c69f4409ad6533ccdbfec22f1657ad75aca66c76d9ef60d6dc24a567f64baaf9b2c4bab6a822ab6942807a98bcf1278f90161258a80e00bc752aea02e6099cee43fa5ffc51f817134ab9929d51cf8490824d585c7a24b36cb1eaeedc7b885f5c38cec53c5522d71ddf9d859c19c3f47bf2106f63cd1e4f10e5a6ecaea9e5e4eea539f917a2acfe93db147de8f0b066523e0d8e2d126d21b003867eb890e9838d2a46fe6eaa947d1120d2b3ff54c8764fa1c3a776323c500755197ea97ec89fcf2c5d4832b731241c66ff7c41e6bfc3e4420308f9dc6b210eb078ff209fb3ae6a4741bbd62f6bdd9606defbbe78c5a9f92cad8757153fa6eea6ad60f1228105e2b6c0752f3d5eaf30a348f40d32a457f9f936fb3869e159cc39968e3f60e62fc894a3fdeb1039157d568e8fc480d92431a0d2a3be20162e111c10fffe76027d1da4d4049d7d205e8589ca60d6185309b3298716e9d25e008aeb684f05c83114eef286a5eecc0859045c38d0e85fd322ff51f6223ec11bea347bffa898d80ae76d0c2224fb1c04ef7d67dbf9f2f16f0d1853d5c50ddab2674827d0ad692a0c892f4b6dab976e34dc08f1808227e954ecdaa617cc9ec2e4032860a188b13db0b5c240f1c55ff76ef4a35028d4007c4249894b8ee5e1f141dab6fb00078f472784e1aaa216185d1dd4a6e028924e2d25d4e9b4b7eaf9a8d51e873d15433e9fdae0ca3fec44fdea732bed20a14931510140ea5c75e6cff9e2f86ec5ec99c472976f32a12114c927c9b5d1da1938ed52f826c4f869171244a415a7c3e6be5daf50bedd61363c00b28f6ce0f14856cfe573439efdaaef661c8d0449bbb413b995979df65622a0b5f5212cedbf038f66666cf5e3b800835fd4f2622650076305542baea5b07f0de667b6df83508b23e47986194edcd0a8c1d2b5965099da70bda23e5e442459cc4c4333282fb1ceef95de0b8e4994cb1a4b580cb3fcab9a5428301435735c4b91f152568921a7fc95566b30452f43165b530ae6b5fd6b5a0ea84ed15b5d55995b725c1927f06a5e51cc9d103a2c054a957b1774014e4d9ea9c4fb3bd5588ec74fd9eb7671ecc1d89b9ad27bb13fee04053a3ae3b64102370a7774a11c4f78bae0e2f84bd0f4238ff651556f69674adab30c3b4502eca57cf592f53f88d9cb3522d01ae8c66a7805b89730d372ce4e1fca9e8c78a989e7531daa1ac9a7b12d434768117b4e8145b212c5c4a188294cf54fa7a9ddc5ccded98f79450a75cf1dfc45062d3ee1c915c25464ff9297b40f281cc71a3d7b0382181bd17e80151044603df27301c946bf5fa069a7acfcc427cc521d9bd9bbd2b4af15652b2d2182a3b26213bc8f63e94677843496dd7dfa802e339c84aa3a821b0ec52a64a57427382522a7c9d8e278b2b35065447bd9e268adab73ecaa7da987e02ee044b5ac3365d5384675600b3c4fbea310186b9d22eefb5014b52a02657fd6f24058b5bc72fda30ed3e066801c12fcf104a7e50d6d1edd2be2964b5f75627acb14927a7c9cc2f2b496b20b39f221fc71cd86d80d8472f0e0fbcabaf42f9ea90e6a1a923a3013ef40d32c17c4fb917ec9367e4678dc65b4e11aa0eecf9eeba19a32e823a62a7ebf21d6b41eb8b91b3f057741600c1a238fb397223798333b934607c87979f128ad259c7408c7f9b7d721a1ca2e5440113efa73508cfc7471a9ec14e6cb50efc0d50799d6a8bf674a10fb04aff0d6a749c1ab56333f8a6119817b81cc687dff4ebbe1512b6de960b49b4cd4ef0a58fe52e270c3b1231498e34a5041924edfaad59879e5c40739b0403ff39de022f4d0ad01fa081f72547a2e0431af51306e268eebf461c0ccbe8fdc5e213e590bf25a91b2844339befab78a9986278bc42b846624b60dfdc231df18caa261483b738fb91cb25d581c168bf2ecc4c8fcae233d37ad034a768be60b6bdf309c8859994390cd50a478705b3e7e23899d83c754a832bbb87a6b07efa3c3da8fdb369f32df71530bdc6f1cf58d704de6d0ba38ef70ffe4a0d828a266874d77ed8c26a6cd62e02c4049fbd12f8670acb3ad7e555ec8bc2f66b8b431262dd746575371e546ece6f7480432755fad419c1b5ab9283e26b359fab64620448832b8f3a13e3d666921582caafaeb96fbae79a54ac8b7b7903ac4b7851f61bb95cea23166217e9f43cdb208a4185c1fc2c0064ddd6a37a8b092ca395e6a2a5f5ffea0121673b957a2f6e4b9c309618693e541e3867bd1706cda21de12caeb6d5106681a57a4bf065d0f71f689d5880687322d05b70d9e0967d30d1a8eca3952fbaabb7ce1b20d3e81a7cef5ebac8d5d6520f2f8da4f9f666421ec55f7a5808bac24c08559f47e645136e0526f49eba038c958fb2cba16d076bfc3a1cc6df0de4f2d6141693ab7dd8ed6539ed3c9e711dca365fd1fd877d56bdca6f383c99bfad950ed61a1fa600937a9926ef624a7596efa88379692d4fbc78dffd4a92323231ef39d7dc21f495921ceaa8cc5a18db9a109c892b122fd24eca80e94692faf24bb3cb74b1b17172779647b877a9e0b5a619e3c4e72ab1ab3216d7d94c4f48921a3d456ac1213ac1b98921ddb520b031bda8a62a0592de2a7cd776c9fd602e76ae8450cf050218cc5af1fb898147da603ccdb19ad92fe897c4f9d022a2e4b85c922c44c648a8b69806ad461320ca167e1ccb6e818c0b1808d8d3408041ad2c4d605a9069b45db6ef67287dad429aef1a6ad348b6ad0abb29d3cf604019fc3f1304ad29f2208604b7744c5b06ee5f4a1d0b2687aac849d6a4a9740b74387d8026ffad3ac06283ed924c1cbbb215a5eec1c6f062837d07e0d0a8dc62b30a64ecb6a252b8b8f967e9883940cf35dae986d1f8b2b81b31b85a4d746725791369183056260420ac9596d4bdcea47a5da0954f46931394580be4a817dc9dda7446d8e2a1ea347fa97a7b97791a0d1defc0a9987faaaa03e1a1011ceb230ec50dc66c68f12d80468e0a9e595a94828627838994e63aa88c9556a34e141420f8e98d34b989ad09e58c969566a599e7ad9acf06d33698a1985acc011abbeabf0d9d7b721a7977e63d45a847351374257ff9b803ee51cb89300fa50558233f24f609bd62df9a1adec33e9e6210544e170a26674c815c37a607a3710b87afd0f4d389e6a489d0315dccba9caba300391fdf91ea142072face4ba42c6d57789e79516160298389e8a5e9d87c2afa4b8b32f86809300e7598856525aa630d9c3f670207da898de1ef72e0d924181d0bc56f10069156616ae4319005e282a91bad0d36e47f083aa075c5691bc61c9f3b848b2dd6601c36976a2e5d3ed3d2da98247b9135e1d62ef6dcebb55746c029ee9acccfae343528a9b9dbbb4fae2e5ac356a9795bd1fa034d0d9f2e1711f602581eca45dad2097ea854805bb5028e79a3f3ae97770d991c19c09e49b77ea12df33e6c85f4130c2734948e22d280c385f7ff3783c145b39c0a992aa218d26f5eb97a5de7e61ec32cfa2f72f03d6036f0fdc5f31adbfc70e72067734b1fe7c3380211040c434c45ce9c0934f835092bf5c663f2bc0eeea6f7260be6f8655b755307ff15cd448f558fc62de6c476c3cc055b1c1fdba779c74833f753e3501982375adc8f0136b97cc904d50255e331910d037b5d0cb1dd5c3a563c56c8f90d2495a23c2c3ef3860d8e8f74c6668b8f137fa5d02b940b9cc6282503323a16315e4748894b095a1d8e3c2c613bb90fc9dfaaf9f298d24aa98e5de217cd30aa6325bd9fc0e5a114b837f3256701d481d94f2697f77ace1a5e8cacdc7c7464c3e158fdedc2746424ec95f294f99163799f34866b4209d74a998a2c49e71f0271905ec4d86cf3535ecf66770e30dbcbf3f67e4665f38644466fb2e160926095b25ea5ea52e1a2ed4390d262ea3b6e7426dd6b515c2e1b37aa1a3ebbec62ceb4266db1e736de596c580edfc103c952b6635cac76e207a121d315cc00d135bd36782416528cace30b57420f1c6fa15fb20b1ee6efdc8500606737dc4a91c45195e22e283df55de7f8d33313af9c9702596e5263a6cddf8657d0fbbf6a95278755bc120ca8029f18b411cc045b97296ca91aec71cdbcdd4a5bf9a70c347d1c547481dbb1780bc41bbd79e5744337926456c6273212f377388803e39f0a61b2afc48cc388cb9e854cdd9f7525f3bc7ebcd297e413d343e4ff9544571c851d1c585d5e2b7f57652b015d1cb89ee04832e4e67eeb317031cd383539552775065b827ba775b78a2b47c24b3f47d692c0c17c660ded9a80f1da6cdac6d1757dcba49400e90f746362dc134af0d3287abd4bbbc531e065b10c718e8bbbf731cb6bdf58670160a6a389e0ab23c260ba0375c2e3fa70eafc92f43acc40bcd73340f7719a024481009a6e88d4455a47b0c91e1bc2bfaed6abf8a04de35e2708dfde995646ef31c84d008ce428656d6df3e46999edf57661532c828f32ac2b8ea504389f4c42e1b2c3c821554d824be5c6fc692ab670fbbb716524e90a48433c061d3b70b39409c015d8be2f99ca21417a96a061a1ffc94fd1b7441bb3f21691450c22f70d19d1909802df0c3e2f5e65400f88e6aec3a92326f03e58a30b8f5333eb6507e94a070623d483c1c2ba942e50205ba1fa1e4879cfc902c45e60a9aa46877185e359121912831aabc641295c5b6857955cdca500bb745ce3394c521ad73848ed137f58643cacb6b936259b3869faedf05e64502b521badaa67220ba967f3f97bdfb6cfa9cda281c6122c2cff3770c179d85a447777cc334ce1367834439a429b3e8fd370dedebf72c57378c39980b88446dcc7b81dec3bfb56d2a5cfcf460c794ec16ae2ec65be1955558c23bffe24c4622a5cd23f31ca4a2391ff05423511994cb9dd3ce47d932450077bad9260518f6dc210eb5489d4adf2b379c1e839b2131f23d078f8f2cde4b975724e869fc1c794453b1b320a006080a5f18f65ae81667be6527e90b1c945e97464938ab9f38f7efb9ef7141d7098c24b106c2105957b07765d0a97c6b6737f723fd0719905a72cda78cb67c8b2e48eed493bb467512e8aba2c1bdb8234129562a75b2a604f2cea43d0e00ef93c9a67f05fa43d7773118721038789058820fbd6d98615bf8c1d928a75542cebf94562068ec0160cbea531d7b19ded3779d09cf6cbab4e23d17302bbad068a0c474fdc99a2b67c73dcca2e59731da1e57f270cf61cabbbfc9573d129e7bc5392e440e174d90dfe32a2c2142c6040931f0cc53e72086445c00d8c08ba2e89c298e2a9d7fbd86287d5e68c0d3a4579c1769e60f10bc414fe95fc606113bccc17ce61dd69f286d77952178957c7f65bf2c2a545b6390b87ea8304668255d14ac57748fc2be102219da48d0db645b370517849f5c9ab05e5ee87c40b3036de9ced87b011864cd2eb4223d80e65c89834b592e3370f8079eaa1f28d785935d7dc83dff3233dbe3bab021484fc622ac78933e4d47c3ee9cd11351de92e196c5a84b14b2f1fce84f19b940c8cc838d68ff204e2dd957aa955aa4f6be445c44e6c89001b642bc9d939ac963fa8f8d2c51ad127ae827b7e814692a1d187f14c413b572c972a789de5c18ee0183e0328dc0458a95560483d1422a3ee44b54cf67af7bb85d1d77ac69489a2ace7927e6952895c0b9cef01c8300961a9f50bbb69a18a6cc45ef401fe40129ed0db40e2b7e36d7f609e3bb32c059e2d9e46468f19f4996e9a69dfdbc4574016bfc371ab83d16321a35eee48a90e9b4e604ae9db32284ad5aa075dd2a395ba1b67872fce75061e048ef77373a7e3b94d66d6d46995be2ba1ffe13a3f57a69c861f935662739ee76df2747ceff503ff140551f82624a4867c4483b7c5aacb94e325fed4be151bdfb733a69c4d26af74127a377f55353de0c0133c225734bd8b8739e0048cbcf00080202b23de55bb2564cd637596b0d813a37ee8cfebb7b7ebec0c0a16da91822b000dc875b94426cd8c7c7eb17c8aa9bf5f9b5224501bb23cabe33302be67cd58a82e19e953cfeae74589bc7ef1e2c62776d7b83770716102eee25ae5b25efd4fde30528d018202d2660121c8ae63d9182277fd9ded4463601e1b82012beb3b6c58c9c8a3c3805afbc779b5b34a89ab6bb0d0e21fecf22824a721d7401c1632b5341e6026e14bb436690a63ba7a3afb756fe8becf9d9ce90b065ea47958a638a3daa552e5ce1ae46ea28ba31480ddb285b1f5ed1b27d201a038b668354d25a57dc8d9773d72b0aea74bc6fe0c052e6ea0268563806a3824c32e40536b34e1c66fd9ac7b1407955870c15b3de3d058cb6fa6740c6e17f4dfbe5a6971c5d8d03206cbe841e5e32c61bfdd9aed1a8a87db33039823403349e9ff8d05f1ba89000ce7bb9be4422d2bd635e33368f89dc0a3f2a6cb14e161e1b073a664b03101edb08b1257101cf096eb1737ec7f734e062123e3c31d26d3bd456caef98b5d32abb8396fdaa163b652aecdf03442a016983b061a479830e72095c1e440ff6a2d174fbfcfd2eeeaabd205fb0c526252560ead6f9bcd42d9021a82257652f579b66928a04da4ea103d30f147c99180fad605d263c21ffcde9d110476af92a4e0bcf9531253633d9e5664e0fb598c204bb772f6c1e963296dd2ca1878a4e8d5ba62fb8a5cfa166cf6982c97984c6f2655f9a126f746a35f22e2a5911fd2bbca195b302f81241f2d049fec1a769ef010f5257de1ebf90adf076c452f6a71fac72304eee80e215dbd5e14f8b3b48459ff940d9cf7b7d17bd77373a04db5a8984247d0f11bc3db80b29be7fabc64727313cf42d1de8c485007c3e3176fa884b84479ab1ab04245f443a70cf8182feef5a451fefa4a59d3c115b6a4842fbd38c338c8f092e62702d73717af3f883335394fa7dfdfd9457a29b795a374ed0887fce76de6eb0f5ca53b7a010d53639e74305caa4cfdb26eba8a8e962b8eaedda67b34019a1ad182ef4324e8d64a3e0f8001dcac2e02813458d6db6b17cb9d7d689fddf6924883c5b57efdfe1ddbd51af01549ae56926727dc6d0f83514ac59d1aea51a63e4eee0ff058772b4b7593eb04f13f55c98ebb1f9a11bb13112a5c3524cfa0a70f19bb90d02aa0c009337189a43d427a1255ab972b6172ea18e3a5676eaff4b227c92fc74261209efb7cb5ae256b332930de9ddc86d85b10103582e27da3dd269297684191960e3edeaa1a1571b31778bf2255a85a51f00b168112d6c5570098fe38889613f13e5043871aba87f937dcad0b0c0b3dd0dae5baad838dd6cf1dd71490e87700c564ff889273a826109bd01181b1858408f2e515f9a2b720089e877217b8fd8e137a2b9d960efc5d4a21b3267715066747e527d77400c4207b4aa5251f4452e62012f51b84e654249e7aeec5ac88b5142a1f666abe40e19891e69e0b98bbf852a42018b6f6df2da83d55874ed54a113d9b8abc233eea6731dcb924fc6eec29b4117401014995db381faa3bf1c856a3e419c567d31055a0fa4a7b70bd5df4b59f3de3766e8d989658bf7de77828d109c1471e59b686be0da8d28305a0149f6230f8e88cf4443920a71146050fb50c19db5b11194e7765c906af515e01277eac69528c871911d47410e6cabb36059930d86fe221811721ba33bfbdffc6984dc28ed4aee4daa5345f257d9ea9bfa57bbc84f77578713b83856fc0e9d57b64bde3dc75f2065dc10d89b59507656c014993eafec0537a5da49430f9e97b2fdb14e707f45668667d393228376a72b085fe14a3859dfc638131d5df5cad2f9345a8741e2bda64d32a8263eaa148e279185387287ce0a3a7525211dd601365375ee92a35184e4bc0b0de9e69fb5cc3779abdb6a9fec81d5d4c8bde5b5cc0caa56b8bcfdbaef79f80409722dd2034a2386376b514bb6fa40c5e4551f463aa12d9079860285d84a7726adb416d01ca4984c8972240911c8354014a62ceaaa0ab8347c597b12a46d3ad36148fea7dcf81081822f12f24c80228aa9daab3648e2681fc87e4c809be3bdd52755ed7a738bde82b490f04e2ef11824e32e10c9591a085fb474e831fafa2ffdf40fd6193a674c3c4f44fcf9c39bbf89e7a6b1ddef4ab0aae31dc97f50d60dbe76eb8ce40b9f6a5dc4d8fe6a0c9cfb426acd536a9edd087575cfb447876df775bfe47bbdc226683141fd1cb1c0293735d7d896669fe7618a50671f678eef94a61695fb7402d3826f29a74888ef86bace3249a256a8914b8d8cb86e3800d14e3ff89c9e0bfb3fcdb88f1abdd0ba2d6af3294e76530b1d41af125b9c94d78fd87bd18afca43771c802511d62cdb6bb3d7de753e3c9c69ce52cb9094bb1b339feec472a1a2e89830860893311469ec56f41b86cd6150ce21cd69d8b3b105867b1e448fde6a6ee221d380d1de602be8c83d63692f254965ebcac2cd03c2ce36732603e2bd7c7f1baf0404787eef51680260622c5ac751e354292a15b5c3307fb5e7b3d8531cbdfbd5475f2b9fbc6fa90dc838d502646f45397c285582b03e0f2999fc48f064f6fddc5589704e2e62f4f0f85fd2e2bb5a893a12ef66eff6b582333ecc804260cc34c6585ee523f4b0966c5c77be5a3ba6d39343ac263c785347d2428f3b11d40426532485b2e349abb192e28e3ac23127ac08fdbfa74e0499e640c9fd0b0e50211b1aa12ed23fb056c7eea475aa660c806172f53d210dcceb444904019d91a7bb58c9c3dad916d4f75f9e9ed1372c7c208c3a7f28a4cf986c959899855e5f3494644934d829140f5b31586adca7f88a73fce8504130f444f8d3af0568ffeea17b32126c811a04481812817ef176a88eb55696aa4bca2b891f1db00f82923af47373ec91439e86c72c70a76e8fd65bb7b90236f3db0d3a722da75f9fd6b3d3ac9092fc2ea7e95351cef89a76133be4367d0dc5d6fd2ba354f38c8e5823ee83f23dcada77447a996ca47563ebae2683a527e2090d83d11b577535d81d9ea70b1d321fd02e2d3c821a206928917154632f9a4f730007dce4e6076669adfd8e874cd24a75e09934aa54792376d5946b13a7817c289b46714aa29572e910bfd957b2c552ee418bfee3496fa79428bf768cee8546286bd07f398ebf55a329c56c7748645a3f461cdfe3697a0ac3a95266a88eaaecf4bd77b57077d20975810a5133578ffaef7d64e975c678dfb43f19c8049135a28621bfee587a291894d8ee865925c796cc69941ccea2073bbea47685e92d8191e9bba8c5db96a833c70efba418faa65a676e1673527a59aa08766a4f237ef26a137801efe4f13e9a40258995c3357f4430da78d09f281da90c21884b1261d16756cb2ad57cbd44ad5e9b9be99ade80f1cb7592c60eec13549b11cedea9a52c3ca8ad5700b05ebe7ca06215fd64df694e14a424c8c7bf3550803dfddf97e0f2b1452ed94de5db58dc2d2d1a564600c1530a430be419c7ad2217f3f81ea96ca1d03f6cd38a49d7b9a296cc03a951deeb3a2a868dbaa7be17535c39627cfee4040f07b79b0c2c070a5aa1e8c9e263d5fbc0cc340fc122475bfecc26657df1d6608b8f3d04ad5ce7a11bd9330af3824869019df00421d236c970c43960141c5cbe3f9d9943b25d8b5b942400a0a49aa3d50fefaa8476274febd26b407aacfe43f51c96c78eb1199880766bef8d4e1ddac08c58bf90b7a874e5226fffda86dcb774932de0e20c433ea2786cc5f2e34d7666031c5f2359b0cbee0d5828ea9851754338f7811939a119dcca7346421879b3b67dcb7ae34ab4ae7d25f0dadfbc020af13ab5c8468cb6c6117438a25ced609fc77db50ef4a3319e42def55d1cae90fbc727899ae8657a29c31b890b680328ca5c309a30905e9e09f0afb0280327f456ea3f325f89cc38eac873c009dd507406688cc90d54527050626d24a607792b87d1b7e1d25edc10652fd3e44689aebaceaf27f64027ccd76621dc1c13890d7dbfc5761a225d3ed8eeb188ed60d8828c493ece6cfaf87501583dbfa9377957b47450f219c00d135d5abb7e47010eb9df1d1aa2374e8b26422243746211674d516ea0d0f49d9cfbe18477d581dee5474d3fb0176acf01b64e22f9184800cc571fa6303a17667b8886429321f319e7b6315f2ce5f50a35a45d136a704505da8a0c395ce0783e573ed3d6581effe0848abcbc3f1a27bab6eb7a09f1523d63da2cf692b03c3b5e7171c6cfea825d9a98e1d534cbe419ae4df8a8e3646fdb4c28ebf65dae617a66cdc1d4a7c54499adcdc08f801d8d205d4f11acc7e605724d666d93e560e886b9b925e7cadf1d6101b9331300f70b271fd966302630060bd5811eee2ab82720da9ffbf0b1521f40febe48bdb1318ec18f9d3ce9c5c4bc12a3d0ec86c21f24f13033376a7c020e332ac765aaf8c651fdeff522c545c2af964ba9a20b7647dadccbbc7740e6419ad3276b0a1dd91dc47a800ef024fed106d2119623ee2e366d258035ae672c567f22e1294e626d8687b15549f1df4538dc10df180dc94c0e5735422c9c5abc93ff56b6cce4c2cf88f512ab7f30ec3ac53b888cfed6921e301802390d03db84cda313f2fa1fbce2c00330149af9e08fdd8db50bc32933c12c971f54580e74729e5b1efb0dc32c9f32d811fd64184a86ba207a38d95be34c9d488f545b34142a9566d67c45b8a8e1e73ca2947ef5e82ecdecff1980d58bebd053d39dcb2410cda2fe789f9d8b69bc89a2d39682f1be4ec9333e957b2c1dbf805045f42f359fcc9439a8727480fbcfb08d92732f69c094fc808723bfaa61a815722a4140e4a67f195a6b6535468ba04d9f9ede190f0f66db538bb4dceae2065efc8cb5be1e60d4e5bbd23bb0b9d63c151dcfe6d164b3ec7ba1ed0b4932f7463b0e2c086734aeaf13a7c3f2b675cbe6138d84ae727ceadd879488211bfedac5367f465237ddb6ed456a64c9b72dc579a608f3e9d5626cf2ac3c5d5baf0dcc7ef4260eb0018d334927eda4803671a89382c474ed0d4f6114c942158b079ff4e824c13602b2915699eef132704a45f362619d976c7905d7370af33d1d0fbffe85075dd0747885c9799707d54b8cfb9eb4068a39f5bb3dd9c207e666a4c06c1af2520f142c3860b208650d33959e0227e39539e10189d5704831e570a3eca21fd02bbc64aa50fa0d2c9cf62853ee3bab7995634392a02f18769c28fec50faf67ec4300cd6f675cb071a2feb8d60586ebfebb6f5217fed87b8f4fe0d5dac87fd2fa84a241e18d33b1eca9ab565f6e287edd6f754410e983835148a824ab310ccb949234589038b86d80eea2b631f9c5e88b9dd73fb06be03f00df4c3f815851148aa895876b5d78bc92e24372cd56754068ec29d0afac31df014e58f97439a8ecd2e0d34c9bfd8d4d5b6fa558ce9de8d1a30a7318a8947a5eb03fe6805d074dbd629dfa099d3ee542a9e305c8468678fd1487c1d09c0a1b407adb4c95e0ed1c770ed4433e32609c64c9e93771b5e7972fb888a212bac8743617768b2c30324484d66c8e9dc07dfc7776a8531e7a33e304821e6a55d35f4ae9496c02703061acb4fc0d3dde519bd32397a5f22d786922719c03f3bfae97e52a2c7bb52fe66b8bc72e240a2341eb73ffa494b2cbae1ac3bd49f27677a25ad9b7c55b1eee30bc00d16e4fa242468f1ee7e7bb62d76ebb822226553651b7459a1482affcd987754dec9a3af6664a0e734264d63ffa92f935d97cd44fd5d3186a01c7173858f4c2872614e349a3f5678685e39464aed9f71a26cad4ac512c487788986b0480a07f1886ec64e0ac0234dd79ed6fe17bbb2a2f2b87319777b1147d1bdc6b1dcce7e56a105c69c3d6e8f1513367056df274bd04736082e11d5287f3be1a992d4aa87386d71de9e1b0dec81930536656bb048d8b21f0b67256e303971ae3180af15837ab45e9b285e86e500b2d51eed93c55a3721525eb5a793feb551c7916b0a8e3c3f160533d715a609eb68b1b7588e9b1fc024860858833e4df47c4a8074265065ef92b66e1987111b36d6b9bb9fd3dfa70430f5b1792e47b8fa6c65e39b4e5aa3975c6721e09b8450a559673a140c1f46d381385da5e04a82673208f5aeadc90cdace8b7512f1dd82ebdae7b8db9bfe3143d1e2918f207e03f47136259252d1a734067d3bbbe7d52fe85d7b5d79f79bb16cc1f3fd64f6c91a7274442592ab880376970cf373b7f8a3b7f24652631a5e55c19685c718ab0b416486721ab9bba90608e77ec5d4b358548d112e9a4046e78912dd7f9f30cc935bab8875143ebd50c965cccc55c527cdb4d8a6efd185553729bf56ab94305238ae9b77d8c0468394e41a6d1eb6c3a4c63b7e72414fe016c51047829d7b7dd485aadb35ae78d8b9ca42d260004398868d51942a8b152e74a9300a3aad681ff5744bc921019886baba77c7870ac1e15f1d0529c49d4e1a3af5803d8d02a8982e2afbc1c5333106a092ed18cf2e1b9e0b96ac32c3756111e583254bfba9bcfd42f4db261620469965f4f5c2e7d06bc7e83414ae14a6d4e0d79c0f113a9d68aac8e9fbacd975ba3e2056bb4f31b20f88ff989cae56ed2566d64e05523da3c8f6ab539fffc572a4ef755e6f1223b1e5bc52cb314938c7822be19d0bd9598e0224f345430f7648bacc9e910832e104d1c4735523605dd959b8bba538326ab91aad84c172f400868eb8b3d620969de6714d3aabe450922adc428c04fd9c52d35d30aa11cf20983d2a6d27303802baa2d452fb2720af53b7e00b9a1602db62837c9c6b5ff9ca689c805c830d8aaa6150b47d1bfab6586be5033fbde7efdc13752b002035072a9fe5b74ce2d8446af4cd8deb9fd630963580ba790e5eddb88e6f2a20e960fb25d7699c1fc8b840ca297b57aa50528ac5bc6108806d5aea147635bfd596ab3ba0a9985527fcebfb7bfc9b93889e9ad5c7e9d26780e8cfbce0022c448a79070dc833880dfbf57fc6829662d848629e2af06b5a9bd115084f359939e49f2bd2794c065b6a3e00c513d0133cc799cbaa2cefea0fd03d942628c1bf28deaa85aa6ca36461d77dc76c608cd428d691517c8dec683907ca34cdd78ae61c62b59fc7990c385414b14798c17fdae4c360816e49e49fe5b6140d1c3b8a3ddd7fb0cec789488658d2b9e36ec2ef40d887d0b638c2dfafe327b5f0b0170a3ffb9b9dabd9f6542696961c41ae570f480f9fb1869fa4e4da278cc142f55e071336ab51f5138ff2795823816bc9af022d13826a60a27a706b14662d11180497288b64be6af7510bf939eb89d8e057c0076bcee8cbd537fa7ca20799d0783c8c7f97d5bbb8dc36223b43890709dbba47a78df2dba9635d0acf15175db51e1cddd6661c6aedec8e8106c42ed04d07268e76e33663cd85a7de384e11ba630d6235452c07efd7180b71e1a1d79a3d79f53930ec65a2a6b93e82fadd3e22c24b2fe0716aec19a1a7597838dc8e500d35f048ba09cc374bf28a2171b3df9caa64c32f9cbb49e4e0cf221cfb435cc6ad5590ec006de9190a1843e2eb13124ee4f2865727aa0460cef96804550343dab6177506bd9ebb58e5a58c9592a231dbd53f15b36c5640dee82fa3b5975e99a60d0639e0d1496b6df496201348362f60de96f7e0f75e4208dc685fa56e9b115a32d35d6e6164aa1c155a5daa92bf989f89e06a71b930ca447732cc52a54597e40d84767df7d8c5a57fb432e328cb04790748cf2c5246956d1db9c936a8bcf3b20f3d87b92794e3d7542f8bd67ba2e8bd80d1cb57c89501a96da3f2646dfea12b259ff8f57f327d1021226312cda6036cae87d74740046df3187d0084c5a6a1e156b8fa88cb6ed683567ff00fe1765f5a6f86b937920e6426025da25f48f1d318375af5b977a8c73b65b3da1bf747f69ef9729b274c0f939cef20ccf727ce3e107eb94385f2dec5de8b88f03530988a464a600974bc80404e8a0e05cbd7cba513a67064f63e510fb0c7c74b193f06e1595a2332d5ebfd3b3124777118dbbf4e6a0c27e26878187efe5abb18a6f9117ace647adfa8bb53837104183cdd3f183fb1f67d119be8179020ac96e23625a95a773ce8c8fe3c229e4f1d555ff61156c2ccb995f0fbde326ba71cf60ab5d4e148969fd91a4b92d09ffb64198092ec99c32ebab83e9912eada8540cae84754115e1bc1e4e6c8b173f4b8cc27e39d9c5b4699eee51266f5d57487956fac32924794009e2c1772d5db97126ebd542ec8620e76237f6857bda932847070647d24840393e83055a0dfab133d8b6c929fa3357d3c2f488c95d7a1f9e488d8a5412ebb94d9a40947c852b3164d6c6034bdfa968e19b4237141a93fe23112816a3752885c366739943aa6dc9e2152a59cbfb57924f45112f132181b6b5e4980fb4128a29218fc8db8921247133189b54c48e49e0d6f4ab4cca1a5b3c9ab428fd5e2401993e364e18f8e8f033bd291cf8acce4b69a82637c3e3a1380fa1a141d252464db95b203630ee9a671ce67cec9fbf3977fb21c4dfdb8696a0f1dbaea77074a6182279b4646a47acfcefcad840c21db0d24f36e46ddff1fc971edbdd3e4fbfb1d2d33fa1228332d896c5c968ec1ea615a3e1c5b46b33800c2e63ce9bad87da41aa054261fc284a3f008b3113a9967c4559d633802e9e2d28fcc9932a0c32a940605a6a8e52e00cdfc2689f2b69e46a15ca195130c39cf37b957e3bc913286174028edbefe62196d084639f32f02d70ed37d97e81b368e4a101ed7c84dfd880bf8c03b16e2136548e11a657aca633bd3624d379bbd11860e1100550bc429c0053832f05a63f7036c48d208006a8f18590eadfa02a4eea3c16e2f906a739debddd13f596cae5b07babf9bf84ed2045de276695bf8a2950c1cac30b92acdedb1c13a38499fa82978c6230c9b18bee7d3f22cdc380d7c2b953c7b4b2b8909f920e98871c754b3fad28051c0d3d25159fcaaf5397e3dac3b57b5a4719eb7a8214838af54accfdff6c9c65d4e19c60d8f64d489bbb88c4c200de74853035beb63bde58ba4b8fa99e9e34e31add89312148ea1088ffe44564113742b21d0b538fa08a1df60bf8343fd68436c8a56b9d2b91fee35d9a8d8ee76d650f69b817c8807d7c257165f5dc3e853a886666da053629b6d261a8837f765f6a2c15cf0ae41af519f29351e76c953a7067342129273fdf407f9b6c9bbd793f4b3d19841a415a4d74c6cfa433e48672b25af53c0a211d153be80a8ebf96506b3a39819dc469ea3de518624b45f1f81c07fa911abb386d321aea97253e7b9afdd0aabe936940cfbf72fe695abd5799bf1396b0db4045f851837a7d727429e9328cebb77aa97a8ed0ad414394fd87be76b36632b1f0b6289e51001e9d76380ff0aa972cb1c88a83c5914a929b066afb0a880559e47feacb46e00693327dcd1ded156b852c9c60fa1b1f9b822f40ff2c1b875488e69315ddfcf93ab928c7443ed88b2291afd95c69ef47b619e7d8b2b4a852dc50ce3af4587dd9d3d52362c4399601a2c5a00d9067e32a9cecc85d4a2aaab013921b195a9d751a49da202470fbc85afaa56698189ce5880ea87b3c6af85041aa22436287f6c635346284a7213971ca79ab3e30771b80568ef626deab0ce2a8179b0ac5f31b9c64a0007e683050e54163eeb4a2ba734d2e569156a17adb8456e58dedf4d958983bab0b73ef3ded8dbc08f4e02e78217ab20e54ebc64bff22a5448dd8242ff5b6525dacafafbd239c19902c8362ddc3d95b6296004ba556653284757c788148adaed77327c48293bef985bb23e043607596bec21e7d08934a317f9b2aa6c45cb15b8108106340e84b11e241a57dff0c5ef63bdcbaf3d84e5b2b1bd044d17fc9d2c27f69f06449b0c43eac8d83e1fd03f43cc889ea871565a274bbe8387191a67cfddc8cdb5e8e7b4f751848cd91610480ac4c9e55a4db235ecb5e2fc5a88a0e3185c695b0c31fbf645275ecdec41f036cb4df09b7c2c8ea4424f6b4b3b3ba8fc6154521644721f471accf720c0b5d8e6b5df401daef49544e3d3ca83166fc2715b9e081645a3ac2360f9307174f3cb4b7fe7febf8cd9a2d5b55365af2c0cea33b62c016bd944a53657e648a914c8c88fdda262c7ee258644a28594309fc37cb9b7589186a405963f0e25c06cf74dde2aa2f7b768d94a4332c837a46665ba3ececfeb07c5cde296363bf5676e13a0525e718a9f1767fd98eee6aa30ccc6e9a80f9837c366424dea7270cb8746df7261f6386e041b0a6e27cd4d21dfebcc55236239fff7a1300a5369aa8617120705ecc2cbe6ca6b17359c3988c9ff54761f98b3c5dbc5aa787c1aa0b4f8a9ee4f92c661051fad7c99b54874c44f9221411f1cf8622ceaca802340c090c42537aa24f55bc399a8911d310593656fea8e2b668fda2324e72f57ba07a73a1c23c66ae3bfa2668a4ef56280759060873e0f643f7a742b52c86d93239474e6ae8c0cc95fb7eb5c9b00be9f6e68a2567d9af1fa5886aba5ec0fdc97db42286e588f739d110d69359260e0bb0cb44c80c18a2881f1a86a003772e3b54f314c4e196a4182c3a53b198d1c76caccb345361100d9a6b806525e365640465c7ea16b416352b266e72d2f41d3279747a61871654d14d4d558463cbc5ce9884253e9d6a854715033d76fd9090f8746a7bfe285f769a2d81fff1f06b04c2971338fab7d086fa372cecade39574a197028366ca4cae1402ac7bb1a27f7fe0735187a67cc8207432c1ccca392b2003bccec3191ff974f203f5e5279366140bade2843c607889c9f1beb36c831c66ee78a12da08f2e32f4d14106e10ea972aecedf87724f1d6f690dcbe705e1885f8bfc13488190fd16290c4faed0100e638175918c08d6e4fef16aeab26a2422b21d445fa03baec773c9229c6d2f3e966a625bf82b5d951bcd36e458232b0783e77f8d5c8fc6da282a7ff0c564b48cf3659dae3fee7365ace6e78a01de9a875438f72059fce22c2fbbb144fe75f829047d5d8285b96f7bdb028238df0a830792a59387d09000589064159b785977b3fc6623ed261705d549a7db41c515f7a30ba351ab3e429452b746a00212c910d9b26ef32de051febbce531572757d8921f41460a2dee027f221497df4cdea81932bfab7125bb4e141ba7b1996d239bb2424ae6b43e39aa7d930a6ea73ba4d164d6edb7f45a96ecc535c5fe4f49f3f68e0e2f8a036b064bb36f33b2f098216f065bc6d7833bed99aa40d303a3905679e54c8b9e286b1c2a6cd30a555f78468b2e7f2aec6a31f6e15a57318f03dae33754518333330bb0378b5a68f7a366a7f88be4b596d1cd49d6cfb24fda6e0208b31f272108d5b7fa7bfb7aaaf6a31b7f3dc4874e559d859ff098cad48d6c1eaa6b7c7b349b5a3db8217ef6669f73cd5b92c416e5a99150ba7eb09520e750ee01d7f9238eb9d1cab49842bd2af79f0e8506df30332b7422dfb7bef9c1b563b808fbf7b486cd12bca8adc4d447902049b3e1131639a6de6f9ad26dc05f03eaed5fdf939c7ff8885a6332417e9a22b1da6cc30d004e3d047bfe3359be76605d0635a3eb6fe7e801026b1a7d52da0c608a7cc0aacd93a93e13520d24cdfb1b86973d2e8f34b15232cbf91e7fde7d46991bb5fa72505a6b3c664bc652e714db3119af4615c0f23a42050502c331a72d04d1ab0cd496b36876905add3aef4946bd2ad77291d03172dc4b7c0fe48d5e15c9b44617cd59a55016fefa960d355b3e8fc1b9f45636d21f1cdd741f90fc93fd25baa69178c1a5294b57d41ae65b5bb2aedcca8740ff370e8e3cb51f3e3b24c5b7b0f320bf1fcb993023ae7c679e6ba067ee3e8edaf95a5b073681d1d691807b9af7c2901920bfba7922799acfdb533fb17ba1478bdb18085a9784774d8f6b1063ffb029cdc8a4ce56ccefe771a4432d3bd5e582976b4d6b45ef5b36b3c77707dc7b4e88e8168cdbf7772636a6825202b3e593ff07212c6dc7eac2e3967a86fdd8d25ecc13c3385cf410cc532c62d22cbc30003575154c30668e604580e4f28c834cf2ef03d6c33d14e7441ee6094390da432bbaff6ed755d43dbe310a921ff459f2fd9c059b5f5161ce289326cb40348245f73511b7f9f2fe60ce41e60ace7e1093690aecff1118bd0a43d275b0d6a402b1a03df543d188bd92b9df89303dfdfa8c0d815d911c6e978528c7f12166b97e8387653a2bff2261839710fa9c82b5e10df798458fb890d2fcd4f35a33af129dc4f20c0a9576b9161c9cde8a1f6b5fad6354110c170ee910fcd52ca2f828fefad527b84f00a7ebf2e28dad418ab12eddae6205d551469a72fe8cd36dd82ca1e9b78f4de313775961d6ca4bd9274894b06a7e8938c2edd03dbe4a270668893c885743221300a5b3f39a1d6bc597493c6ca2a180450129ff6cb8836c5f959cad4f05c7ec4eb6709d04824e1ee14784f09d1e1cc93643107af53585a337746aa34fa85eb91ecfb5672f18aa0931773c5a4c51218dbc8417c5fa8f77b5d4715b05b189dc7c23c068d4eaa9f09fb0da023fb7de200a99ae662c714dac3fcbd7a9006666ee7e9f6ba535b6d81f385f306ec33f03e853396977341eecfc3a26e28acc1eecf51e558487dc302a5692ec983f1fa69158b35600acc5da2f833d23856f20b575985bdde8a46545d8313a809765a1dc7570394dcac33af50591b3b3a066e5d731e48f91aaa69774b2b6d92d7ff125cd780e49655df538006b0c1d5303ca177e7561b6430b04d7d61df43b6f5c5f8a104254c394fda4afd20008b7acd07f247226859a4c100db10782a36f3b0f972b85ea2649541636ce892300a9cffbfed2a6a9f1fe1cb70b73b1b7801c787200a375f1d3a5223df85d741f0346782b19a2a776ff72f2b981c8a0d97c18d24dcfaba3b04515b976324c6a1243a2268818c3ad2652e89c6227b13031a68b245b6cd56a49b8423edede87137e181096f47c5b4bc04fee55a58d17b9655c8b3be2494a33b08411d1996c37a03b5158480058c5268e5ce89b8614bde39cca1289e260299e4c61e3c59a3e6809c38c2f44a0f3ab38c807c18817dfb46fff5ce5013b20480e7ecfd7313704458d0395aba2ad4a1c38c66c7bf38729f3f396134e0bc2a1b9278b7009b09c56689d851131d080c138ecbb57ee9eaf4a8e4223efa341bcbdbad544e92ef2285f19d6781e5ca4430593d1f0e5d5dca54407affc257c84ce2d7cb1d04a5504c03d93ae1426b0bf3f234063c854031249e28aa50dbba8c4a74de3552f703cc89b8376eb50d32ace4bfeab3aa8d5c6be8c80a4c7d89127674e384173b459dca2b97fe54e05681719c230464d512290f0cae731e7c67aa0c707bb577ca292f3da81a397e00c6bc0ff369d45e9ad3d786a9e139cdda8a15b1337c50a1bc1e15922233fb03045a4c3670c9fefbfe6598d35861f564066ad7c607f323bfbdb433b6af59667163365f55b3e0df3aec73decf7ed9910f0ef33e4155d3d3deab0d749e87afd91e1614091fc7a862c872bf5fdf0fd091f3316cf00470552f822e65f8a36e0e9ff1abff7e4e72c774ce6cac21c8d4b3650fad11553b599575b98ebcbd8886abcadbf14ae859a2b9c93c276961637794e58ab04b0c36bc5f108db94cab464eee0f413cb227d7727177db79cc6f09c807ac4dca932e8d4bef5641636abad2636a903c8a039c2e548b63d09af6f57411130d1ff352382e0d2886b56463213e50cb542072de52da0246ef25da3da03b4b07b7f2a703f6193dc8d663cc587813cfeb0f4d347dc9e1312201cc0d1a891141373a2bb2c9c5ba276c98fca923aaf3e27df5146705838c24649241238924f52f9f559a0640ec64f310d1abb12e63c3a914443e71d1fbf85877d0fd4fd65c9f692ec5778b63f2bf7dcb36241ddbd9906153bcdc052b863f678186a0851cbcde26ca96acf232df4ebaf4d9d34d355a55cc041065d6d3ce990ee526e89e809aae9ee5d3072205bdfb4df23803fce81a22ccdc6d57fb249dd5ec2ba92f9cf85e0ba48fa5b883b4089c4810e81c8c7378f8b49d1bb03065475c62f78bb77063b5cc124fd970476a17d54033f0999b40d768d6f5ce399ae909ef5eaf4102908e54db0da28846bbb1f2212ea7926ce71bbbef7b37eec745886568418405d4c699a711a6265942f4255cedf0941ba2a271ba31a90241a4e7fd78e3d946e56b900ec4f507539de6e6a21f03d3fa4c201a9a6760ff7df57b95bd648ff3a191ceabe5bc3518d5085cfe9d77d7c6f99d97e4309799ceb23ec051cc05aff30e963ac20b8921d8d9652779ea8cb98d769926263c9f3056dd07b0c3b929943b22bdef111640022410cc3b6e9bb367d3fb3a1f27e17491b0388868374fd0307f1744da9b6c9425eca1c0ac370fd4c9fe5600e128456a6fbd18d70a762087a15811422a2a84595ee0552449470fd121d0e8219c338b72ef2aeee20260a2eef212ca30f4c6dc4253771be35f6ae5b4ed44a51d5fdcf9f85b817c1724bb655ab35dc3e8741e0ac995490c836a3a444cbc2cabfd0b6d1e4139960cafaa3151bccff9916c0fa0b471145a264a339bd06fa92b6e6d8a920bd46d5616279f4edbf68486d6bd672507ce4b10524cf8c74cbae34e37f09082c613148b8735538fa0b99ffe7f762e24f9b6779f0f441b4bfb14ca46cf08d2f64ee65e2a86bf9841db911cfa143408df52f07a1636c013122a2f502088a6a5227f82ddb5f5ac711e6e8f3fd24bff892c98f563dd92946d4e3c53eac33fa392c44401659552798e649a015ef07cf0fef615e8b04575227f838c5b8a3819cfa4fa189bdba8126e43c59f2d069d1f6b37525e798ddefd841aa7175de8bf95ffc7a54a57302b3b694ab8eb7ed389bfe97d7721bd771bc0b8c6004dce827c167b653fb30a5b3f1052e49819e7703b8fbb0ca327f5f25731a2811ada3b60d4b960e5abd7bd8f3ced34d60aa3edfb575c64ccbc9a0f848935d98676d468b7ec8db1a0828a99d1a6761dba3fb63d3541055d7a24d6b508cfd3ebd9308c6cea400adb95d8952348f3d988256dcb5017af0a46683081344ffe5ed99287c650d5ed11b41ac78e30f5f4f4c47f0210ac81be1e2781e5fa71dad063730709bf88352414cc83200ae05652b512c7b1fb8195ec085d9b2a22e6be3658e74fcd816bc5b1712b83a7b052e152137aa4e3612dc9499abd6413ff2e0c9aa81e67fe8f138358d3057bdf9bca44f45542ca35651fd4a09e27d11db661a5c0c6017602d70b25eeadc621e585e4dc8926bde8f452215b7a1d26fce3f3cdd842ba72a77329c4201eecaffa4402254888b04ccc79f5497b9da7a7b46f0ab972a6c1e162bfa07e21d3cfa2b2c862514c7396660c29a6952d05bf297a8bf0ef0ceee7ecc9da357bf31d1df32fb9753f0f87153fe2c0da6cdcfc64c08ee8a7d9f51f3885f81a2124690e662c6b4359fa99b7e56e786e9ebb255e8bd3e538de42c85951048e6f952985e66aa3b9f4bd02b74e1837d38147788dbe4dd7d9c10eb83d56f89f31e9a027f4d932efe13cd9b1c2806b1cdb7f0d21c92fdabfe2a1da3d769405907da69e7ff855ef9b565242852763eaf4de2845378fc5c94b281e1bfe1d52f68992dd9e4e553b38e853ef8a4d1e6aaf3d06ccaabcdc26bc18380f06810ae5af05696b914ebf48cfa69ab5fdcbc2a56bd03d9ad8cf63b06df13744ffbc2a131e02e44656aa1f0b0443846c08353c2fcffa221a3cc5622d320c74496d18a60ad8bb292f3b58648b7924d45600e72f1a020ef08d8b8d41df722dedb19a2af28fd9b8010d56f67efbb26f471486a32e7e0d2673d4d6e94f8584129b7279d9d2a53605e630a62b497eddfbc1394ed3722eb631339ac9d92b1796c4a0c4f627e694d7a358196a5a8fe7a4775df73960300e2914a8861441b5f3f51256feef4ea31d8f2f61d6860726111a9ba3baced47aa299ae3abbdb391062d334d9aea75b74e579dac7be140046d43c93aa469f19ca213c32b338f500b3b2ec454a191731ce575fb7c9744e5622345b5bb496cfba03d7e99cb871d5c4000fd5efb3b590d0b8b5c1d2cc1b253e03d6305ee4b8a1510d06c546e57af6f13011eefb97800bc5dbabe8fe9189ddc9825978025270becec7baa095a76f3542c26f5f00d70ea267c311289ba9204a4fbb484b8840443348edcdbe819a2c5278e820bbd8a1c0e0b04dc75222c850368c34419e65e4528fd591e6ba638ea71de08dbb3019e410147c97b6edc2c8453337228c0f86e02545c4b37322f436034e075dd3e39786af25ae9f4f3629a2694aa19f0bc67aa8537b0abeb381b8b4c7b526395d76ad2b43ef973d6bb8a083192bb05bf237d9e51520ad0f60b40c60eb7c678111945a7f8c04234c3cda85869fc949c8986778e20ce7e9e4522f957b2ebf84b9cb867d298c42ec80d32006851ffbcf69c3c16eec24b892591fed02f1de579e50996bf4bf2560c50a1f990f117e0983432f7eafe3a48db19f5dc27ba7692a6f680daf52bb0269e47bbd9c7f4db64cab9353c3075d6c4f5e99566acae29a98423a9cf8321ce36a02148880f5986fcf9fcc171a8ec96aed72804583d7e3e3d7da32d076ddeb05d33dacc0e7d289b950ab8b7c2029f38eb875086e3bbefc6208fba95fdbe6fb0e4a42a0e9ce70b1509e26966d8d07d9ff111a1cd5e8578b705de53c3ecdd331f6e1395bc37813c36909f2896f4f50e096b642ee42584e1e9d61cd50fe59f2f3b2f6580b5cfa2fcaeedcb8eec9c337bce764565738052a53703ca384e2e9d96e76c626e3b513b1a7993863d97e807d882b698333266b01aa6eb4aa0dec05fa59f4229bce6fe3146471043c2254eba5f1da0310c9c5d7ddfd8cd96b54c385c87cef7d3874131a434863806c6a4949a77cbe1cb915c7412559a286fe35efdb3b3d11d79d46431da5276cb8108b40d31f062ad8abad84a1131ddfd8f1d6a8ca81b1d90a504297ebe4a4a5ed186197a00334d9df37755169b06685ce0188e0e2ef82a50d68128f18c9c17ffd3358be0c96fa300ce3d5b8daf799166e031d51cdc48f1c43180146bd32e4d4fdcaaed2b0b41d2a16ae1c341c64b96b23d689f6d99609bb2a5203ad87624843bc7116ff5f496741db3549cc6cd55a17427ffc409b8f9d511b75f3ed90a72d572728b14d674891328450f1b3b287bfad5c75192b09cb71554ab0e5ed5e872775f909803a22497ec3957b72500084d646851dab4a87d665795547264f33a4aed11f6381396e6d43e737a7e6e12bc93120c1042ac005165bf2f161ff416bfa873868b608db0dfbbe90728cbe8214514dd4f3add07bc224e8b8026c6deeb98f1336fc85de4166b97a193a9da47fa0c3f0c4863258ca6449f1b1b49e6188854ecf73e9e72d96d8b9c305afaae24d97985701ad736182d244e3cfe02fc0f98ee30bfeadee09513475611abc3d13788c7dc359e7f2ab58e1ef54a229856c644d4e6b54ef501d2ffcd850dc3bf78c403120b78cbbad3144e008f850304f5347baf9acbb2f0b771d651e6671cb62113fb6fb2844a1c1389e16cfea1404a362df202d96ed2131718ce4e36adf72422f3d2ae70985420b858b79739e1704853f22212d3251ca6af5284f1e3451e51518c186b86efb825ab7212ae482df0d730dcc91bb28da375f69e83b77a99eaff4db9c632b8ccf0b1bc86958ab3c63e1fffad2095443ab79f62a45a06859f2f709282a5a4d2188390ed22911aa25309ed7fb22013f3653a55e0108aca80e1e121720001ff6a135cddb94aacf085e3d80e0b5f81d590c06101f56db787d87ff0f7cfcaf53585bb7d673c829b2053aac8a22b3bbec8dc02708eee1fbb8f75f8ae827eea4200a4da20e9df54760daccd40f43a0983518d55cc3ea2ff4896f8bf3747ea95c36555305d2850c3b3dcd1b7b5c3a9a861e4016f81ba29966a9f9f83bd9b0bb21be18a41c61bf44176004108e8491b83666f5349030f96a7a944ebf11b7e5090c7e25136a531d7f282bc187aff95a1059ef50b252910d6b55ee2f1ef5a16a40715b352a67cd5fdc5ae2c4f024578e3ba514e551c3a0116e06da70b7a7d532a3e97ec37c3bdf2c0052fb28590a8e1e506241dd3348b2055b385d70a2bcb674f0931a9ee958b507b0dc488465eb47a99b805761a28afd1e66a8a23064bdc9a25a3d931f9feb714dbcad2b8fa73edd3c162bab47ad75b85928c7368b893dd9129507b2ee9afd9d30e9c3a4f5675edf45c01769d77f57e4fb12a1faaaf262709f91eedb3417c90d1a053c226479da9e12b3fd20e5ce8d658a92609fb94d55f348805b0b1f72aecff175748b5b5c49b23c1f7f10ef8dd3062667fe2e2825c40ea9795bb1a2879a20c3b36c8364fd535e29a458d44e9357c840a50c26304bb552dde105dfb70c80e663acd4955b14b6e9cd5568423173164d36bdc4d7355c6f586b661aaf2bbea108f3000fe8ddafd180d3664897b8163352d371518c8f40ef5129909fbb186b157377b558ad680e1693a647bd4a08419c3e8ef443d209d22663833e257078090b7b64634404b72506494b02331987b552cd48ca312510c051801fee3f58de5811b2ae3df771f7b2b81054624f69f808c0a461b89c207e43ed3bfaa6e725b0189a0c17d6a59f5a545651056d924c1d615f74b833a0c6037c0f049f5cdb6b7db187b6087414524e9110413b58176155199a6c688bbff69fb4a19be806da08331139966d0e3ddbdb5240fc32b350e43c77b1bca47961bdd491d16d5b327fb3e3b8646dcd68ec4925715ada89fe1d8794c30dd8e98c714c4ac2fed21b7f8034cfd6d0c29f9e79d0e39ef18e21f307fc9205d3074bf5c7a9feda97addd97f291f91b2697690ecc626f72e46eb2ab8e8de17284f994ace2874a1548ba07024960cc0f397a60eb223a0ac6252240029e3d4999556226a695dec8b9b7317e382161b69f8d6e30ffe671a576ce5f3e39658cc9a26d11ae67912c42739d780d8c80bfaa1ac35dcf0317afe5e5adb05de0b6793cb0a026929ba5255bee2e14fe9667903099110c2e9aed36777c36c66df32df12b7162c10ffdf95b2deb38e983b17437206ca9dff5dbb64676c35e401c6d9edbd0407e91298b77325c09588a81ef9678aeb5ecb9942457585bb30b305139ac5cbde4165ad659d88b8c8349298942d23a48e4e29dd6c7721f5128f7bfde6314985ad78027d36d451092fec74bb754f7bc8070bf4e7a2f96285875355e91a94db6c710f08e2ab3b0aed29ea48c8ad4a3dabf49526e45c5d485014e004f03de758457cd3085bb545dd96351b7243fd88f27d801259ed1d9073dce9abcc6d5e9170d23b2b70771ce6b653fade9d334f47cf8b4b797661961342be8e820534633cef143bb6bacf59495b1f74592498657003247dde6f8888aecb33646cadf4d4b8fc7fe15b2e4391fa92c6029ea87df921a846cb578191ab179197875c708341fb616f32899f6019de3e2222f533692b55699c92dcfeefd023c07aad79f5744a5000b16787d61c7220a2f1153251d37c93d4bfe8b33466a66e1db0c9f35cac613a3a1d745642283544f18e79393ce298bdcf3044da6c800c32cb55dd19464e999dca05e161f4e0f878b1222e77e6fc1ead3f0a3fab2392a0868d331857ac72c75663055356cc90e661cc3629e567cb8d55a0c2a0f5f2e567ea232f56b81c4d40d453b8324c66b537faf0f53cc5a400d0ab555e8dfe8f79819a53a7cb6a84c816ed3c1d7401d5b6ec036934a8f366e312e255afeab03aca24cec1b2192c51ac846411255e3785a649061b34d0a1e8544cc81eb2f3b1e2448fd0474942d1fa948ac70d1542b8c3383e140aab1e37d9eff0d14d697568120d6bfc579e96397f998e8469435d73eb895beba4f50dd0ca7fbdc6cd4d9bb17a13bce45c824ceda40e84680297aef93f34438d0bf03dd7b9846f5864b9e09bd19a6aa1619b584adfd7e0bc9129a1a954016aebc5f4c1c35250a7303c17ce28e1f439a2e9d3ed06492d170e1752192aa4517e1d635c6224a11cdbf720fe88ce7c0f5aa6ed6ca5f4e83128fb97bdf5fe1150b7271a5d185a6e56fb5fca3dbf68194745fe7ca9490ff595c98931e66bbcdb6d2cf75564e0fd112c50879c2d588f21938e7bedfc664abfea32af85e9b77a330ef3a13832b94897fe05cda30461fe58dd262b276500765104e994222ce4a064f90d728c3616d265232131beed3a6911e534116acb194bec18922a2285b5156074e0853f56e6cc63077155fee4f5693564cbe7e21c713492d19f0f8b11fde98e5a146bf426d9cd38b467b3abebe995283744b3059c64916165289e75626d664fec5a580cec0282b240db5eddeb0fcc4546ef7e5efe7199cd3fa96954a70b9ff0ae38cecc40e7778668477d59c97fcf613655786cbb3622ddaa6631b9f514f1813aa9891354c5038e38a322359331a2d895216d619f5d5f01622eef5534dadfd1d18103e1577d71f1c8bbfdb1514b773ab5d5ca8d084faf0301a303bdbd3975649cbb8beffada3050a168f0355f404f78f99aa7e3e87b1858a4bb9fa65d965737024de573381cd236732777265b15925e31119acaca61b774f284fc03e175e257cac2542e9d3b4ae2ede9a56641117885924cc47e720cb6b8b8f56633ce061a22e71f2c9571c6ba06ad3ba5cad333ac94c1410a3ec542225ff0da6008af37cd289524a6684d01821a7bc09a4ba6e8b89df127da103ef93cde1a695e192009b0d9d3a4ed529b10a603cdf67e30a2ff400b95324ed6340f0880571f872dc677c50cbab5311145ce6aa252a3b6042b2330e9881ae65251aa37f99f0e797452dea144fbd49af27cdd36acd529e728fcd3ba5b2771090b2fdfd0b80a9c0e67f341669b1793e0f30e98467b232f3acb78115adbe44252680e903e4c48538b97d2c026fac8eba524953e54fc27084f40ffe1ba4cf9749ccb8424ac29a93a416207a68e7fcae46284c1e14f9164ef332fe7d5ee3bffed9f2f8855c2c0bd96a90cf624ffa671628a1951357598f425c6b948d9aff5fcecb6482749f23f9417f83e7ef50ae3ce7d2fed6017145e4737eba9815b36651401a44031507ea42caa8733c436302ee6fc9f9accecd0a0ec29f71eee2fb230f1a2f614f43b7b94e8ae46453b2558fa2665196477ee11349864bbbaf548eb356c17e9e173d7377f2e4378ddb7fbe26ca21d2f9bdad5b77ac830571e7406f36a4d7b715d3cb1896d4eea060cf54444fd708a3645a8e6d44132f1bdac25360e3d45e4b2962fdbaedee25cbc3eb95aa6f9be1d81aec3e147e4308af8e8c12d2b231577ab2e1a66e62ca1bea7f70a48773dfde963f2905d16d469284e3f1f1587947365c40a1293b0ff797db276541db34a7e71e08096b927c094c659f72f32fe057b871e2d13b5978eda6258d28b893c8124b58d4be2c58ac92e0ca622dfe1d7af3da48caafdef53cef8fa109acd4a90b8e05614ebf61a2a7d07b1e7354bd0a6599fe8d7fa71d87fda60620d279cab9e3addb83df005c2ebfa3db563b548ec00be8bac304fc2280b171e99648fe1441e8bb1da8edc0656d0df537dba0c10115333a17809d9bc3fa085272d2b90b6e61ca4eb1186d91794bb196715f1a4051dc7b7ff7cb2ed788de80552c8f4e6671318440fb2b1196899c022817a476ddb465dd4d2f7f99cabab95caa860a383bc4b90087f58a5c5881cfd57f0b9397afed3581fbaec33b63c992633adc4479806a91b6801f8fdbd4c6075c29e9d3c4e7afe56911c49ac4a5dee4338a0be14e81fcbfb8a9eaca6d1b982186d90ffab9172c4f46d00a566825443d14f817f2313a451a461dae33e0caaf2bab0b29ddb1aafb2d1db5fe7d4d99a9b4dcdf231da25e1977dde3f3de527f9264cb5baba9a9cfd3ec4386a96ef9eb99d3be0e09fd617d903a96841b13273b726fdfd25de33d18995b6a30576d9c9d9407b59e3e82975494d38eaf8b8dee85df25a715bb97dec9e06b04da197166db92d9320e441afc5a24b67977dd69069f37b4a96b0d549a101880d7b3e3eb70055538c743b420f4893ecf22a6a65b6a9f6a3680a1f07b519d56f7554170e2f75a9c27e0e9c1a06b6bafbe7c0daaa106c505ad2d3fab1c8c0f82763d203c5d9d15fec52de757ea885218af82d115f143d1f45bf6a9dee7580b983dbfdd595cfd29add8c7be8579f237af4192bc44180683e2243324efcbdc050f20c1a8b5d9e26090dbe028a67bcbc93cb0b9800761a79cff5c855e6a861b1362584e4cc72c110eb3d736ac44b20ac8bb790fe6edb0173b63593d2fb345c0f95124a4c13d1c2504947462b2425bf7788c5fbbb1f10114d920220b73a6c016638182ddd490d055ca05926e150ee8f5f7c1737c43e83c934bf1fb8482b15b87a4a06a14260f4db12e0104b8d9ae810e8f7a2cdd350af0c41cfbbfc6632189af90431f03bf075de8c2de52e299fc006639782b678bc153999da347589d9bd3cfcf331cbab296d39708257a94d4ce74499da844e3bfbcacfdf1536c86c5f48d09a022c0e7bc4fc5ea10b760eaf6c4cd733eb2a69e1d72016fabdbf6fe299cf830c113df524b1446c09bf6c1eeaa4a8b3ca355e7cf1d82c2164184b4a4248c4e6af1378e2a93438eb12f9f0464a611930c8e1684d20a7bf01a4f3ba350a72f0eaa0b422c583d63355b2bf7dee702d7f79d5ade53146e04e1436e8f49b9b9c07ee73fc9da6ecf46e161f12ce3db4bc48bd3a3114810d13eda9cd91f29c9eec399a20d2b532c3640fb6cc57b9d8ee3c36d34dbb1f4507c6cca00740f36d6618939f03fee2ae00aa2c17582404968aa84888222692b7b8b1f6050bacdd1aec4d8904d95d1671f19ebb42c4c72741a632e2173d5e768c88169422735d1ada886df78f119a779f2383ddf1a7a3d41726b643d6244f8b42621e578bcc0c419b656ced185b22123d8261090f8656fa7756c4d114ccfb0be348589b4eb87bbdb694754a72a30f63bab9010b0322ee1e80f3dfec406582b0c1594f9c240adf4289f0e85a2cf25380db1b9d83ede6df877917f1ed46db82e699d8e90fd99a0b553b0dcba0a5a2ab25f16e04bac2ea2a26ba64cc4a26c50d39655f2f5137e7424f392f4ca67c1f67d9637687e6c92e856e7609fa0d228e4487f319d1fa1d03f2686426477236e81e724e584bda70632bba2867127cc9e90209f603bacbaa4b114d195241a3dae73700fe65d1ecf1d7a01f46cdcd367b366c1715226e9ec98f80bf0d17104c8f68c446b1f802872cea8e1e8b6e3ca055c69159c3f54057946dc6cd2b826d11ec651cf891f531c2a66de7d95b308788e482f5efeb15195ef66b738b60f8ea273dccb42da77369e02ca9bf9b854cdb471615bc50ed44ed937644d8a6d8676f34698fd09834c607db17c88139aea345882542adac798e1402d40f998b9bbf788d9bfb7a34d403d1e8a17bcec53c416db5cdbb655c29658de5b2aa3ee4e7b0d9221661175aae6a5582fb577dc4e4485e26ba0511627a48be48a5a8b40bfcf5a82ab209f47b06bc1a69fb184415106ca1990e7b2cfc648a046aa98fa23e57ea345be924bb3189d34e3ecf0b51a91e8b6d355ac49a4f30b8c67166776b825a44cd93c9dea1582f91989bc75a6db2354d7d1fd8795d09bcca69a0bb5e33a29eea75ab816a99211395c76a5f1678a9da264b655705ed6d81fb4ea5af5475d689ba7ee184a154729088e4aae0dc2e38b966fe8d5e13b9cc007f26670f5721eb392d697aee912b101c4578e5bb4438f9daad42f8f521071bcf562e00e4add4678db6e19c1b65cf2d7ae7a678922592c5c3e1e4ec2025d91d3c679655e18a67da50830cfdc7b2dad53115b6c13a5bb978d8c1a13001836e08423e4094a5d58cfe796518643838ea8826b4d9ba06f1cc4d3e55854c162ca9a683344e82cf7cd8656b876eca0c7955ecf50216d835b66c4372d4bd733e4101c19c671d993feebcf1f945991403d1970f75e34fd9eab4d66bceb149d94e83dcc48eda34022248978dfe309245b9665b777406dc69528bc0ef5a913a5d0ba4e604e8ff5cf097053e40ccb4f5107aa4d9cde0bc74c240e2652ff6382a88befc5339c5f91b0d2fc56fc72ac427f525598449698758e8d2649001634416df537b3ef506beb6c10c86753dedae58100743853e195879b33353a8a8a8c0370beaa615d051c9dd787f9c922b7608aba1cba26e575b787e29d521a404689b32a961c551f0f00ba1aed425a9bf4a56b4fa45084297c0a01b973d5b5cdc9b0a8acd4149ccda80fcbc2636984be8c128565e6634db1d320ab19eda58a4778282a598b8f5db15dcff4395c042bbf3a0170e997809f0654c3b766cdc43354cc1f77c7075bc77d3641faa16e84cb1a2449d315e2b2e417609c08e493c8c64e04613da1e3552341647efeb032ae9c82c3317fd82177c0bd629100d5ee7bdb6e173a9ba0b3d2d52aaa849a34d4ee10d4217791e1659ab030be34c96f4c701dc4b54d92886c623bdc30202c9d53f057076df6ef17bb2c269bae7252aca4d3f7535f64e7a80c3b308758d39a1807fb14d342415e665176b0ea7e0adabe6bb94ef5b76c24c22b1605fbfcfadc6893c01527d5878c580d69aae96b2adf2522b793e0560dd337c27267d44f586f0615dd9a085b24fb42c5aa1ac0efcf38f5bfbdb381116bc7cd01b41d1fc3699d26d2ba4dbea0e23e875f5dc52ef09dc688585818816349d60ffbff292f06276949f835822e8fe0eb24c1dc95772b0b5bef552f0dcb7a1a82204c3cf029e43452a1afbfd3ae462ec90f6e217bdcaf60432ca29f1a68f92d3f5c480df0310c0b4f7e6cd9e47348d7b006e6c574a732d51d5b0a271711f3c9cb40726ebde4b573200833c2ce9c2f748d8e13fc1b2a43e695dd4376da266c3e12ade6ebc1b8ebd2705b3b4eb35c4154dc94c9a10541dc479611f0e18d42074a5260a5edfd1a6fddcf3163981b7d58537b64b128213857f1b7e45571aedeee1c19f52673888163f7817aab5db7a8bfe1b645708afab268b8e534c4fb7789a0e5ceb73e59c2888028028135353f251046bfda8b65c3eee17af0af1b05a4b8ead28b8696b5a7bf888be267fb7be99ee5d9799144a7e46294aff6de8369e32d55d618a79f31063d5675802184c9411014542e8291445bd6b7577e1dac222d758488e558e7a3a80c19bc4faac0c09d2d326105c2b6260a24dd77f3f98855d8922ffb64ce2ed302a5df261785b34133f99d14bfa34e1128663b23623efaafb3ee459e8e7522c13f8948aac18248d95c0a61a59748091308df045f93cf7a76056bcab2d0903cf16ee93b775e235c3263aed4b1de848543e552f73053919f0c19f7cde9ccc2f6e5cac6a25331fca9dfe8b6847d89fee1b038dab539cc0884fdbb3b9eee4c0d1ec09f33e6f721952b29ea719337823bcfb7b431f783f0a93eddbcb1de3a5521bb63f3300129ae7b5cfe36f43a57304ab3b95c5485bf90e46cc7a3c9bff6f219106c292f1a4706b0062e82617aa83701bd12b3e04396eb67b943a092a609f5495ea16cfdfc5f55fc3a43b53063f720bdb8ab0161ef522a3b9c098c5ee9a6069cb63b5cb8cfc2546c48267e137b18daf8f869863ae8b2f4eeae6abf58b7d39b6fca3f3c1026f273c9752e47df9488798466549337130437f15c3f190c3fe669e7385aa7b20ef45e053c2b4e7fe6b489c4a8735996a392fae723490ea782950644705ca58cd89c698f1469ffd75bff6c87a393f528a8780aaaf3872ae6e9077f6b4fba969c2bdbd3f20cc99f37e1e908df6757f6aa4c493473431993df6bb1be24322a61f020f446dcde8f7ead38d8a0621d30628318894ab2b60d550027e36db49585b426a052972f7a9bd82d4c451bfd76482a3d2c4d8c3af43c557c39fac166febd52f78c6addd176dce3176fb353cf7c28e6284275c70645347971a6d7f83e13e7b3e8fa2ac6a65bacd5ad1fecd6864771ec19dc257eb3daada269a1df636452181812d4f99634ef1245a518b19c228c69359b587ff792f053172a8b4f9f3990bd311660ac13f5a0f3ddac264c82eec6351b66e580a0e7c6a8e65ae9c38cf37a29e71c40b8a26dd02e9172ef881e9a4015dd9c98345fd17ae7832a2a12fc266f36ac23b98efb5a5120b82cae2caa47394d643cea5040ee749ee9a3678d1a7233686877074ca5db35299953b055cfdbd7c864af75d351e70f8e26f89d40f98265d8d77f9327a7c4f34b50342a999ed4cd6f4b6e58b12b4b21df32e9d9904583b1be4c7d826eabb81ab4631f708562b47543df0a09fc7312814306d96f224436df6e19e900975b0101a29411108767036eeb3beb44247ba194a11ddc41ffc1981a42e5871a1d588e2b788ea2ca69eb800a3467ebeba2007e13bee541538a48d1fb9e2ba2b62e88fa6578bfd4668aa08efdf168dbf92447c717710c0a4b23a4283e15150d1a0964e0c6637820372cb30a32e0f5b0b49159a65e5d6886df34da55427f9d486d5ca8d7782983a11bda3f241f9b2743d60706bd6220c413fc8237619edc28546ea68019778bc1acb80c9bac7612e5fa0be62171f45f03c2ccc0bafee510308db883cfe78dbdb9340fd9c4f4b689d479dcdf582ca97da960d41c4dae045f5d65e7c0147d87a59d5cd0c97307dbaaf81c9b66d6fcbae50d583066884afbe01260894fc79d8fce855b4f0fdb6f4968947924bd61050efa7b1e111c045fc632537ba5c5e94a960a78d3f70cadc2ba405fa0af863b418dfb55b68f053584d8ec777662624d328fe8262f75f9492929eda0eef85259584a7b4b3d29f66587096fd480b19afc89e9321e4a2c6cc024ad9551c27a6470cac273a154ae76e51a168e87299d9454c6a26d99e035512014c5f68fb0df86d5150ab4ef22741a1bbbdf5eb62d278fdf283e81a3f0ddd4b23700e81ad404f39020cc5895a59d06c45477459c758501109150340038ab49458d1b36f2bba8e2716d979f1c32dc3c544b781b78d84b7bc88632b3da0e50217972ad7a9ac8001f3e9da39ecd702c366be191a999789d1a004f6d1df66d114422448c5ce65bcc9fce5820595f2ac187b0860182048e210b31a0c92b9acfd3ace853cb7e7fed8c0c9e3acadcc40ee86a349162d011636141697797dcf2da4311321f10752fb2f91ea23b41e768e6009056636fdbcdd3c5d25f2d8ffa82c084fabe04f5f0f0aa27fcf51c162098607bad58f8a3f6ce815c79d173f97e3255633f110c4fcc99b597db1bf2bcbf1f82650a0f19dfdb5f54d2dd96ead03f47640690baa80dbbbb23c6084a3541a85b1291675f60c4c94ee3d026c9ae11cf0d83b0e88265ea41d5ef1513810dfb56b1c5357d575fe9b6e3a2bbec6ef4158e34e45df6cda06f3b9308c97558e713985e1f101e00c140f8903bf9ab666eef83584056b77fae36483a30023924e70e277a865c8eb554b6faf4bcf562b06f29bdba9802a9e20f6a1fd3c1723d0efd2145a021336d475904cf45f0073849be11a2efce1768b00853066341020dbf3931c463065956dfde9fce698cffc7104954d635bc7777ec75d959438022cf1177eec0192e916a20d5942955390eb9e76addb952fff9842ccdd72eea522ed509036e638d859816982b506c7962281584801120b5b4e6a520da4d655228b6a98060a64534af0535a603ae40707cbe8dc400672d165e7ccf639d4a953f513e6565f4934eb669ded88bdea09444edb7492f4cc54002641705e548bc966aa56bbb4e97d5a3ba7b4883dea9d52533c4eb56bdff6db01873eae25d97531547c8a247a711abe65b4a727eb00ed353b481c84793c6738a9658f6f731bacec77643071e06030bee3196d8674804e77f3a01b34e5d1b64cc3bca146804c0faba0bb25ae1dc64ed14c08843b740e347fa85f90623fab013a2bcb823df5215388f95fb58fe8dbe72153c0bd75dad5f211be2d2c0aead7d5f41fe3d823be752e438e4625cfbf5cd020cd1b69139eff9c6dfca9b2dc1cbc4d224134173958f06e1cb7ca6f3b5e8ee31e9d680078cac7a40e0b3ce4299f25d7da23aeacff6cac770f2336c73689bd2a3dee8e35e768778562516a9f103352b49c11423f2d512998ebd04ba12ecd6175a2bdda73fc181d2b943db72200f300af4c4a2f974437d815d5c80e3a8525c7d520188281af74508bca405cdb988ee52a5fec18016860508ffbb6e8e949c40b4c32a1d751a5dbf656b00cf2c9474c915039e75c5ee139e8a79c81e2636cbd09b07964a9235ccb3cae116b5ce4c22778af97ff9fbc9379f2e599c42e3d35a49486fc63ed729b73aa2ea33d2884ee8aa39b7ccd0d127cc99ff9c5ae723b70b7712c7a05e5ba67414dab956ecb654576cf8c7c08bc4cb9fd4958951ede9ca1ce6cff91a0ffc3c0e4bb9d4937d5b0b3bf8ffb14d1895fee4b85988b8770276ad2873e2bda3627f43d6e75aed75ca16fafb886ed0d9cef2412a28630e627583614d275b7fca5857eba1442cc20461f23b47fef397f438351d9b4bf5b1d58ab71e25b3f5f2ce1f98d90a1334a3db8b10bc73acd03189312c9d8ddb18a1eb5bea7758d4f076e6ead9d9d8c6e4016929b606cbf4a12a7d7c35f9252827fa2e73ab1dc17673865810395fc5931702c8f6dc5a4152994536c3af9a24d4d897f03059b16418fb0bedc11d1606403a3eed572c7ff534643231cc1f5e9ec1a88cce7790affff880d5b677c54faa756e993182f3dbcf83707b73c3a6baa122654eae312eae153fe584d3cd1111774bd697cf1be9c5901a86b3b57c7572627a4b77e3148b2eec005e21e3d92e08ad40f2cb371b870e034e165b3a11b735dab5494cb21fc87d922bbed07e6666b7c7753ec863226d9d33fefe0ea03c57a6eef3fe3eb19a42ad0f4e3af7b4d36ceed780d66935d5fb8f1aa9b6a658f7a07e39efd207964365b7218788c5a3175c73c8fc643fa84c4918c8d009f0846da1af97b257a70b1205539f732eaf63e72b862a0c294d812497900e07dc8d63bc382fe7858c2a5bd84d93b8c1b5a08ecd31428d75b49f5226914a91e1385dd31900d6927e15b557df1eb958561ff7a4e4758f1072031232aa9ef23fe725bf7de74197b0e5aaea59280bacfd48c2581b9d108a75020f5bd44ea55082766939a8c2a2fe4d79dbf7800462adfa366565ea08db4447bc598af6e83a90c0969fc45e7eb7b66739a246549c71a40f9680f9bcf135da99c1a5153f9d6d35c5d2c1f84ab9c0880c1324e1a1bbed6a48679706614d6119f086395325b3028110b386a65bee9bd49c9a2795d91bcf7b5e67bf31e1bba226549eb7194ba5ed91a290dd9727d4a3489d74a20b8fc2b7c807a077f719486af305c3332323f6d4099e7190e456ec3d6e9fcaee993d2d5dd21ff5f4ad5921d6d509e6aac1a67a03379aea948b15fe7e6fd3caacd1ddceecc5cdd8954495c708261e1e49637d803ebec1f1d7962e295fdc24172670ed822d80e27349f33d0476b69cea0b5397ffd67aba2cf3d998cc93d6b98ec4c53f14a105c5b660e3b7044ea26f084278f1c7a1928b8a738a08bedbdfb0b7fd6129cc238c2d62ad4e9eebc9ed1858c61123908ee8b7b57ddf73088b5f06c668fb86c96faf72433a866505008ac9959a7a9ccfb7ff7ae6f65a77e08f3e9e03e01da7b9f9fa829438922bf3fc68dd8ea485876e5fbcdedb5b57ced14011564e0e57edc430bba0ebbbefd17b4d6f7b0c2136288d99cbf5040f1b19f1124b6b27dbb4eb2c1a16d0fbcdfe0baa64d6d7659f8e41e8b23d1a082156d1b8f065ae8c366f3ba502f507d1ad4bef14ad1e6ed51bff6e6fe25d80e354ee9840283acc669817e5329bde090658b9f4cfb680d4a20dbc4678b314708a113788651b1fb45a86c1e0a5527fb6cfd90be4f048c2b9959d475393790694092d566b1656db3abaaaacb1147b246f7ce45267380cc3d10db94066d186d258c386fbba0c6cfe50b6280e17a324527c6705d825ec7191bad4d2fe530e6591b42caaa05f8b727cc5b3d4b628d40b12b241b8b8847ce80143e407fe1b529b2ed23fb541ea528181df07c89735bbcf64a10466a7deece1fed35d0fcb8e0e950240cb62eab202ef95f0d2544bfe0de364fd0eeeb0c7961c031b6f8189414b86d8f3f7747b61a1aa2903278af94b024e96aaccf09bf5e5352711596c02c2157515efc3045cf451ec9d34591e510df2d9c58956ecd8b526a4a797be10f93ff9d2cad018cbc76ca852737b5014bfec758d65a1d3158a1b07d38ea148817d97ed39e2053e1c3888c75079cd81018c1c05cdd1b9fb202a311eb6461679e96f5b7466edbe30f709b888117576920b481e01f8b8c3f4805ac69d0219c5887074928ab1cbd7807de33d246221b80941e81950176e706381d28e0569f3a7404dbb54cb147bd1600de50b1a87dfd9dde2f029af98432edaf20ccfa9b616b496f71df70e21a0751433ba87efdbeac007db7ebf2829ddfd9709b077a4e592b6a951d83b55868559df5a6e3117efec62a3a9af4d17e38017bc4ed422a38d7f621bd294832652b80f80eb4382ed3f2a924640043eb1dd8f9952bc39bfbc28935cf44774755cd8b2af908643966eb1d9b0b682ebce1bdb9311589758be67591ce3f3a484151a94f2ffeadc0d3149ef8c6dd674a9b42be570c330b7b5e2d5badc74f0f670f48be7763ca21e642e5f38945be98980f38f9ebe8c8945f530b041488900f0dd602ae74c1e6b812a4ec32275fc0c9a390ded2d72fecd50ee7fb6b107328660e39cbc85717d91cbfdd2956e34712fa9711b00af99bf418e1d8053977b11717ded86bf53291aac8bcef840f85fdec920c8b6f56bd0b77c2bf1ca663953fceb5152b5729775f685eb53b07e6a6eec0cbb39406982eb89cff19d5fc6c2aaa53d28d49d63a43c7a6942873455e15bdc04b217c5bda2e2a38221711f185a79d182f6a13133384b6cecba78c2dc25bfbe01d9e751c64a661a9dd76854406f6a4f3b823b58cfe4932fac46faa7a634078f58a45964ee0f15a66b98c2087ab838dd75939aa4ed371dbbf361c164efc96106961cee6e68e96c8956fca6620bda1ab4d10c251361433a6842aa1210f3f0506a8c0d9d8520fc570b9cff5ae7140ef70282900b4c82a06f1f3c4f5063ba8bdd92fb0cb53c6b50399cfe4d72a2ef0bee3493a163cd072e5f39036d0acdeef43c14395a6f6ea5116ddb0d2c0bcc91eb5e527e6440fb14d4b3902f38e976fa69bd60411e0bb9f0af207a49176425e76c508ff2a0d355a947058fe8937ac47c8479e1558b886f9aa32a4159fc5f5b18fa85ddc68c25796f0accb074aa6079240c3514e8d8605ac47a2277f2634358a3793f82ea4e1e37b5e02926df0749dc5a3d707bcb34e698ab1e6d3af1b2b54b2ca3a11ce3e3597d7702ddc84d7b551b85528905ba38db1d51cc91169bde592bd3e169370091ac10cf2c88aa3c504841819a52b53d3a3bf200f16102392fda71cfbef2f04b2ed625f151b01852bc95ef9f8a3bafdd0375abd44a58b9bf1d19cdfa1a451eb5f49ca19641303ae9ae03183f1a8f1c86c6af1b6a3118bc1460e5b7ee6bad960d97ce3fad5ed20b0b2e241a674da8adb52b4a12ae0d228b84258f0cba68b078fdcb848620928cd515a2d49b2b522d50b45410312d893743557342ac3de2d2cc906939d6a15f8e8f927f274ff346467e0b1b3d9d62277f814667fb5f217261e5276f39e230577ba7c02a90da3ab7d4e295a68a9565ae4e6a2455c42d00b33dd9773080426da1e872557ecb8b386299c29ca4ed39e065fdc9b739405a1ccbbcff638c8a6c66b3341f77b6f4ec14341206b977961a7add91048a3e6bc5113d93009f8b55bb58bff9d245a96c68f084d82fb8dd1763c96986ced53e20148d6bb9034d80f3fb12ceded1efeb9352d0cae17ba395ac16ccbd0069247ef7687acc6d455b65a821763c37dd755905eb9d7eca1e4fb5a6fc04ee01520083d22d9f096e96fb33b982bacd759c20cd473fff3e59c594dade40885da4a33e0690087b2f62bd711330a3a22ba68583202db04b3c2f3ea3ae4cfb2bcd55b214f683213d4f5058c14146f5dbbbb39e614ebcbc81de04ae0cb32a507e039dce1b1dacaba8a82d8d71a2e31b2fad5e379228354c21f095959ed4bbdbc01db30e36f84bbb00c30208ae7a2a3452ccd0f363c3b563fd384be446182bca2bb2f12541331e7a028d323bf0cb7048fafd5fa13f342daf05eb73900e65b0226b239ab32a5d722a23b3a7766caa4c0570e6f750f1c719666e3b37978eed53810cc2c086e7c02f45de93cdf382b393ff8882212bee82417c39e1d8bc7ea0566be9cde8b231557468c41547c8d7cd37bc10795db21c9cf184f65f4c2b4fb1f49ee1d20d8ce9a84ca3346c671ffb11a7400ea1ba9efb5ff7b2e0738a490e18ac5e2f76bda795c58d96e06d07f3396d8c288b3ee5d0b39458ec2992a66432e15613dc40d8e376389d783770b9c6d2da478f1867a5cb27cf53a6e17d721b96a71bbdbd4c648bca6b58bf0d6439cb58c0e23533e98630cd7d5c7593009e5f7489c592491d26e0e5ce39180b8e2cd9d79479939ba7f08826c28b1a5a0cfc64ffc4455888bdc0514a85dfdeda039d838239cd64b204eaee4573effff9fc42912e8890d9cb4f35290aa9068c917b0fa2f077cb0aa8883a55db307541006ef181db167112aad6d139459e100e75fc757eb64f273973748319320269aff10a17b61a502d6ed7742f9441fed1e1aa88dbe0acc61dbcc70138c0cd08188b7c1e47e4fa202a51790b3148e165ae44f8e76686b3352654570b788c0efd72046dfe8351cc4400d7d6ed487c21be235d10d7b16d515eea6e2be599395bda8372a116a0483961fc06f72a00dd4fdb77f98eacda12d9092a052ed11c89e98b7804457341cff0c9444e12d8aa692698dbe7253cf0788a7919ef40db361cba2c14a983fa5f0a7f7b38278b510a801a8f99959163342ea9998cebbc90b86e4a437a9f2850f3fbfc8ff41bcff9b661ec034fc66fa1486b82035ccfb7f35c7323bd2e018946ae45a743a93e565046ea1683ad3eeeb620bb5ce8940ffe6a189418ef15f141724a4c4281c173c992749a375edefd50160562e010eaef6926a38b422ba73b25e44fd19364d16b7de606cf2b66cd07d89f723139aac21a76aec6efd84525e18818c2e85ff496e2c03c338309ccaa653dee4e10faf54172b3bbc4a7353d7d7c99dba180b21d4b8603ba89b7eb511ff64ee05493a42eb2b720e588fbf76396f3ffc16da4e08654c58cccde5f451b9f7275b3b44e0fa59cf31a0bb6daddf0645f07eaf1aab937f26ca78f98d5bcbaae55cc0cacaf983625f607dbf1f9982eee169ab5c1834a95ecb31522da6e45882a323071914ea5021afd3932d83c981f91747e9a4ccb4643a975ef90189fcb41ffc8d3a347a80fb4905f660061aac3a45abb51169db5a61c4033ab7055599e716adca482bedbc470d06debdb9be005cc2871fe4eb85e6f6ef9aae6eb17c96d2189d3daa901c164cece3f15da9fc7c0d5bb67eeffe3291ac7d22329bb80e78e50bb095db4edd9c4a4f6e30fc9c467cc9b79520726bb61482e7e6a485b36e0fab7f6da42080d0848e3e31faca01b6a5192c18858f3c98aa25e064bd95b9acc97e354c55af69702581c8a56f115bb3a0733271cf74f660776e4695d811a63c1b6780453f6aa6b6fc90598bd5891c01e915be15399f8ac9e6ee68a0e3668c30e4bdf2c5bb2600ac05f08a3a153e12cb0d3c8a4d5271aac3cf3e28dfccc2b886f2ff6a0dfde2742ff795e6f5793bdf33dcdcfb84d853bc4d642c12749fee12f939c1965185fc7373b4f1e088daa36d504c6fccb93bd2f63a6c9206e0440bc752fa7c94cd68b531a970562f613da7e894a3deb9737f53f34cc2b586d62d9368f8601d80d828ac19edf59075c4ab886889d946380fbf9d74fea41f2526b137eacbc3d0ed783eddf40c380c0fb8390f5942818b8e3925539d3e96baac597949d43032ff4d74d3953dbfc969a586d6b7039ee76f1a9450458f39aea53c77547aa0c4812003a8737ec1830dca84c8905b3d3ddc895c29ee68299b7b01b809e5835be4c84dda3b57bfabf9ca5d788cfec817ae966ab499abd70030f2d7c178dc1282490a326998c147da89d6a694659f55b9b7bcf7652c02800cc716b64a4f69abe0392b8d940500787bc5634fb99d304bba594d194b30f15f0a220c55a3a964002fdc8a2c7021d718ffd9a59629fdabfb06bd9acc04b9dec4f3c7de063a51e586b96c5f9cf31b1cca6fda91939f0d78fd9832649c90498e8f38078cc54adb74ccbb446db19ac4575789ff70b03ce1e3c86af1431c9e8969bd2e4c9b0b2c6a2ccbf81b43754429fbbbddd51b4ff195224146e7486d05af15d449002b87ee3812a7f0d6e82276f3cfa43c67d9abd59400b5d44babec2ed0154eed38e2e769d4f8588e3b5adc2e5fda5e168b119eeda36c33fe18624b6b6fd7471722c768ba2d9c4f929fdbb3e461e6d0f25e3efd4de8b842ad6a6d7f0300ddc2af011d9b6815e4738d9df2abe51ed44142c43ce773499644d3f5fbd9b217c22d6ef9d1d2175fa4f2f06b2676a6e38c2bfc3a73a2db09099bd672fb5d6f0c09165ea88bb7328e8c87d90e25fe0e90eaacc525d259974429c5eb8c8a164a8bdfbd8510edbbeab91941576cc75eb4371ec1938a52a54e8bbcf9ee8ab6b32302f011e495b558b101c3c1af56f6711f07b0c15d6f0790b7c926c2b154190992c5b322d3f8f1f9d7b0acbc1749db8abfe5b30ab86191943dea95cd1fd617b54dbf80c94b2c002f2b2a7311f43de6a2a9a9c13b9ce00acb6fd61549bfc211c892b73caef17e136e4163f4bca0f532d19060c4442abfdf7be6e7bbce1644fc3a03fb3e58f8826681eb17e59fbbcebd2384dcb38ad662ffe9af85626b836527b6ddf094a5281374382a1accff2cc144bde12eaa7013ef2706ee9bfb12e0a80ec7545b2cf595ccd0f50c9ff52836c1465aac8357e1402d3bf5c892631de40d227a9bea42643613cd2ed0aaa492a9cfb0cc9ee9c741aa9eae41885959eef01f7e02a071cfeff1d214ed8adba7c0ff1a4d3372940ae4720f615928f2dddeb56a57550d88a3ccfcb64cee1a7638b2f53396399c4d1be8e021e7114c5301dbf806cabc96ba23b7ea2ae1e824985f8b5953a068c775122be8e541209f3b7af5c76e16f86c0451e37443f98680484c2fac1e6675444bff2c29fc23853cdc03fbc3967d3737cb9f6cfe7150f174fd82be68f296985c09e7ad77000ff64f93a4ab128d54fcf87cdc570453654f116c0f10142527d47cb1dcc248e8edb75ea521323596be1fb8a9ce7f4f163ba6460f1666de5a6fdd100a57a87f4868134e70b98ae521a2c92d14b06b84df4024c16a470ad57b63a054ae7141831f27bebd2c8b69e95186059b4b0d5e8684c1db27039d9a93b857ed2057abeb4b225824fe9215fcc54b4a60a6e376038f833110f69312970c741ada84486e9a4f664e1828529dab76f4d7d78aa29238fda76b51713c7a3f047bcb6996671a8b948490501a0a4b76b0e829ee6949044102f8b3c14c337879dee4bdfc9802477220ee1dc031403a61547384aeaadb82b67cb31c906317ac6adbbee74fe699f9e76f86c7a92c2b7cb73dc2bd1bd89b94c10fdb8b518fc256eae9d60540bcb0e208a4bd40d84047689aea637974acd56f153276ee4024d6461f5f73dcb5e8e5d4186aa41f90f7b852cd44562daac8cf8b0f69c109cfb440709290680733090fe613f49592019341918707a7de9c0c3b047354e3ac34f2126d82b06c3d772dd6bb5493750f9905b73a40abbdb7dad198c6478a46b7ee444ca351e7a287e88e77b192b88b50d25c0c0b58c6742b7fe3e96ac23ef36595349597cef249d81b72f90b77762e5c80faa193e1704fdb2d309aee86a5653f62f136000267db517ed97290b45aa10a995723333a2efbba1b24fdf0b29b9376ed857b2487ee45a2e6d866ad1a3993c419928c1fc5a7368bcf15a6e305cf261c79d07d494111e20644517f4c22efbcd05425af19fd5eb4e6817d653d1637e3c781b9d4bb0f1612803b928a92bfb595d0c71ac143f42bd90f17118a8f3882e2029d90efdf8bbb75cef19f7621260f759d31bdcd296ee5abf9436af31d895ad00ce317e096380347d23921e0b661eae13321fe21416faa34091058903f69ab8c36acbf5756a4678e97307660e0529a7b89a218f129785ed888f5fe4eb296657ebe1607c231520baa8a18b5b436014eb950b068d6ea456fcc243a914e93c0ac04f29c96066e1f20724d0d70032e6b146475f5be34dd47556e15394c5288c72085f7b4fe19135cc06b4ec9dbd0e24625a9b0f435b02657e4969a30e45efe5e46f0950d14938d5590a7d3eef00fb6d6f9e7b128824afb925193055f66c11de9b7ae49063190250b6a87c4f2e7e2cc5dfff7189618495aaa731d7976b65578d702f59349e3aadb4a9f6126e602bd0d1a96acb1717536225aec3dd4e60b0bd0063ee7d20a895845dd6726549abdec484858afa70223f848d5acab2f3941b0cf625aaddc1c75602a373bb57ffa991bae8a57fa18eafcea93c72467be72e5f2160bc2e60389fc7e503e91a83be57c933bad15b81ed5f8aaf5825354d9f2e93698a68be17cd2c06a083c2f67d91a50e5926e81985de2677af7de7826aaca8f1d7d5e22c21a4f26a47e69de0476eef51bae8dbffda318ced86a3270b8f919026cff11871d1ba0e6f4582a733684108b9e0812c52a7a0dfd29ac799dd3797cf3609aa2c55b64417983d1c1dcfe4aec999e2c3c60484bac7e25ebaf26bb45b6f0cc51c9298994111a875ff8cfcda05d8f1ea4ccd1ebd2658881ad238dd548ef5779d5f54b7addf358d716475f13e214d775ae319cc54101da6266e8806286c30db188b5654714445eab9b5d7592fda8e7f991ec96b93abd78966593e28b01f21f8bb5c90df8416e53f5b5ca419f5216eb0358f9e4664f1974100ef6ac0b78ee2a0197b1b012da2d058e76aece11be81fc10f9fd5bf821f1df6146a09543cf25fc815ce8386fe20ccb6773405206ed066d31e1469b8bae32241894c4eb68ee3e475335a4f7b12cac5119b86134e2be22881c8bd1071482edc6d88ce498556e40e3bba8e742e38f208c2d3360b9508e2e6422cb0b3c1ee6fbab01634eb88086d72c143e97cca6eccb16757e16d4960b19757a72a6c4509337a6475642a2137bc312dbfd4ad920d187da31b44fa85f7a253b32be9eb6afc6cb04ec9cf85aa56aa63fd03f6badda88e9f392b36d2c4e701aad0d585deaf3191d37156cafac3c95c4046ca93ef5a74f8d14fc790691a454f9fa73cb42b8cf73b6ea87d3f3e045397176e2a95aa478ea5c3703dc0ab12bb333a207552463f03a5bbb581275e787395707948df7816baaf6df36df1fa0f9e6f1c9342460d4ed4068a8995643b97e708c46127c65b68a677e766a6b5f7d52a360ea62fa428cd557d48a9be0230bc542fcc3f3cd153ff11e224dcc250670e2d348524e11c42258271b0380b65697a2421206e11041b2b084248a948d82cb9a45a076d8e2bef4e159481bdc5c9e2b3ae4557be7969928c21b3c600dfa2e1f06dcf5930fa4dad0d74497fd3d4a47fc8f190de75b2150808d30b1b9ac1107ce7f7e4725cb5f252e6d5b1cbc2950755537826e97609d5215d768ab46b8779ad8516b0e0de88be38bee3a2c5a855c55f2ec92042328f9bcf04f2a6fbe7377063963bd4ef0514c5aa1f0b2f3dbfc370399dabef659ee6fdbe85b0514cce7b380c8d69e7a7350adf6b2108bbe5d012e9f31372c84f38bb2c730545c8d11d81e8a780c5ebc59254b7d847ba1df36396294f41fbf8cde25cc0afd784acc3f909b706f02031a04514726b522401f98ee253346f7a4ce1b7e16a55fc6fb8fc9d0c6a40468760a9b31e6d233d378eb2c46a2ac816ba062ad06084a0f36a7369287c16ca16fce337e6f7b6ac072a69c22f33ab5979f254c20311d2721dadf542bb0cdd74e1fa0136dac163768b578c551c80a8b7471d3dc8c5b9718b26e971aad412f5951187bc683d0d1bb11d3c371c431329606ee0dba0c9d771a5a2b06873a90e493db41a01db97935a2ba8c1059b8e30e10d3954f1fdcd0cd20a3168923203f4fadaff10c479a2729efe08a7733af3592a4ac29cc43bdd855147aa9b47502bea04b9a894b8c4b1f53d5852b82c36d6d29c9bf6c27e501e34b399303aac88eaef6db58df2758f680fe625a1d4a5c25a289e37882be054321e8080ffba3b15121e14b0e08f3e844f4056846f326b8347f2024e4f5b5b1128262f90db4b616fb51ebefd4d2bfbf15800eae81293fbf300b8da58e2c8f58791b51e032045870719f0d88dbb5772a12b742a579faca0ad274343a8e3720d3b70db35fba1246c2cf7b4e2abdd7d9d8763408e98eda2963f33ede836145d50218a453a2de49792e568cde5acaceb410e02218ca52d3b11b8ee6fec238f4029fc61aa268a034b9078507f6bc69c0d543d93f6cf7b5285d163a4f3e83f5d32629aeebbb1701aa3bd78aff1308f771375b60b3d52cb630ca67951acc449a3726918af3f790fb090ea696abbaf629d521be3acd8f9308df1b7b0abc88bbff10d189bb977375ad968f0d4e448720d91b40b7ddda8a96a6bb730f0fe25a05df64ffa05883264d2540dd45ed85ccb858ddf60c42518b846f6ede35858b672da8d7c9370f65a8f027f3c04832ee74d7ee96f45fc35f31b253235824ba25b7245856c7cf1690f806fddc991ad9585a7c83de8aa3df399b8a0cf7abf6e8e484fced3f082f42160ab19c3400c7bfdd971b9b45bb9c54f287f5bd56dc488cebfb1f92dcb7b8c189c66a6224d72f34df21e41fadda1b578ac1f428233bfea6ca2a600b7f0fa8a221458b4c51308f0128aae114bb5e585ec6d4e810d0e2bb13f48c4526cbbd4db3420ce212e3ebb665c5954de66656af40cebc09098ed37e6e763b5109a587265492b7b587133ea8cba68082b2a8d19c802230d507427707d4fa0a00ca160993817ff2e0da027c120f8e3c9a6149ff67dd9c86b0bec58f2628527112102354fe09f7351f639d72b8bdc272017a0bec9d2610cd82286257198f48f2421a0bb1eaabc996ec26575f52804f465451739a0496b3211fa19a1d6959010a5d877bfde0257658ab10ae1ff62cd7806d818f6306e9697d0a78c116bde4b6f8e0c8e879dd7f69f076c7ce3f7a9ab7a935a6fb297d204f7d53f7fb40f032d448c2870dcca6b26e4f3a43b8025d4de93012eecc7ca235b64c5534c4b245253c3e8007213fc275ecf3fced366cbc264eca5711b0a03102365c6f8937868ad8a0b48c1542ef0135e93f19231e1e2831070d73200bec1edacb87d7e41b92fd5038aeb4d058b3fd3c39d328e5dbdaa5681bd2830e4359e79e0fa06aed483192c6019f271d42548cc952f8a184304683ec0e238237c468e73bcc65af08c2964a6b334f8ca79bbdc6b43b68c08629cd857303eb15f58e637517ce4324ae4958c68820247cb5c240ae4b07e3d3a2987eac3376caba61187cb4d49eb63a34d496378bc38fa4d423b3b3cd02732a1c16ea65a8f4a918a9b267467ff67ef5a2c9168f9ed5d1664d5551d349653797b28375fb4ca1d2e733efcd1622e4bc8d52a30eba6d7879c1f1b9d7e93baeb9d274b88e52065e0e3db63d5cb11c3a47854bf2e4bf0e305a0855b590c00f99fe74881a6737464c07bbcf96150e750ca051b8502160eae47d2c5a5d192602d452eb42543565f109cf5100f086b9f7c5dc7013904b1fa9ebd45fe3b343ab01f62fc1a41db8b50923cd542eb52e141cac9d25333656cb42c16d9422c2dc925a5cc02f3c8d2f5dbbd503cdd1b61ab85edcca8c787b7246f62543de306477390348ecdbc6fd3b1d19ef4d4f0704363bd975c3edce36f0378bb784ffd43579cb8ff8e4539c0e34e065552da870e20d08629365f9ed18fa3817a8298daa06371c53e4673994fb4f5cd7d7a04e6f6b772f5c53b798245b69a0228bcea3949d4b9947a69af5fd8c6652c083f9677c0ed91c56fd5bcfa1f899cc72138df3adcfd48825443a8d7681588ec4940870f2804d300f200b8343c8f3329213beb92d2d121572facc83beff201140f31089a2ff6e088d9477c26b60b2cfb8c7c2430de71495afacac61ceb7ee2514bf2f3fc264b87e16fdc31c4b10b7128be050b7db1cb2d56813e8c481a9df38570081560fb255ba5174d816be4e5812f28b33bae9e07d745885561c1112f176fff5719be5d0cdabfa747fa1b6fc2364fb77a60d6b860cf50cf67d58f03682ade239122b0da73939a1f3cd74344132f2787a40c25b03608587ea1c933b1750b2f9ffe4f7d37fb4d2a52157edf5e73c1a4859b6fe7f4288ee9ec4a29c78f41e7ae70bcedc479829351a1a9646e978db0eb7643084fb9f0c5f79e0e168d7e72e4ba751fecdb8660c2a73e30e0f2d4b1dfcebbb043f630fb0599f73908734cfd064f89404738df9e6a9be5c3ef71a2acf3a29059d6ec8ca0a1caa5337a7c5992ab080f2d0eee3564d69a2967416cf1b517c27e4cf130520a72aa20b402df4cb148ec31c4181a43875d9b121e80f7c45b329b75d2e2a9cdeaba29594b70b4d3697731073ee6869634436df79cb65146007367fd4176a08c07c86db78dc64ad8dc549d58f33440e3dab5cb7a928c57fa890e983a12a70da72f310ed8efb0ca085bec252529f5571ba2ee457d769e73d74c9a018b0fa3565ade22497ae20c88d4736d94c65e2de22184a9bc55cf24febdbe22ee34f9c6b7effeeb53618baa1ba8afb78b021b6f8e39f67ed9bc1a4c2d7badcf27c5bdd1d3eae23ee943400a4524de6ef62733f84f15c490e970129f254b0341b5cc8e099102d02c38d899bed5a79ed73e57093f9f34db138dc859df2053a2bbbad0a43042cd0f45aecd9fb9c174a2ecdc08ba34593f2b369c8fb5537062cbde22d999ee21ce8f705101d135465718c27b0d7bd01063799a5773a62199c7f70da81c2d9766e1c00e70dbcb0fce2c21ff96d891351571447ec2f9fa0b03a266a90ffbd8a72a762294b1c67b4900f7c155835e071f85f1333ca0e3f10b6803dd4eff946428afbaf866ae9c645120b31e58cfa975300a56f8afe385047a82185d17deb1c91b9197da2b96e8e7ee6c69eb95f9d38f362bd78a4ed73cfaa84630bc804ad8988b4ede959c50f37df03735aaeef610287c7d471f3242edd098fb6633f5aea5dbb36b399e1d77b17d4909fdcc167fd3709646b38a3117ed469fafafb99e145a4465cbb272643442363b4c863e2fb0d75a67459948de937262c1af5ac6146598c8cb8f62b5d7c61a1b58f80114ae5b0b2a2b793fe82e4e658d3f6cb1d097d58683c8f07a7c5b8144535701ccff4b23d488629d5ce2f265be9b23717062f71029713e38256cf051347c30edceb2656c7f6f78cc3c29d34e6c1012fbbd356bda90716709df3d02027e58ce6a85db5690ddc570f027dcd830710a5f97eece7ad39c8b0c24ff8f22fcfc83364386d6256316f16f43bc8f508d9a4d07890f2be20f300f5c47ba348c4bf2e16d5b121c897b949832135f58d459ac7b9d703ef87582b6959994305b195faf06d7450990059f21c4e01026c49e736af817f9faf6143d5eaf7102fcc58dd22b495658a46123f9a18fc8b449ed03518bbf18e8d6b64b5ae88542546eca2bc742145f4ac15e4877873598c2ae2bce2fa151bd02780efd1bb45651bae123d451230620b6b05cbf0fafd75a9730b4d502ae2dc2c2ad091ecb4a25d9a6134908d6c28702954e7650373d631fd4494cc8eb0c0015efbd77bfcf12f674b788f685bad26ceb71a9d48e6aa6d7f324df2f38598eff63974abb12cabbd8a6f2196d0edeb94e1035d0e1f72f633fe37473edf840a8cda1f6f62674cfe66a900bbf17ea3e9b4b23372436a9e504aa3b21b1b06fceb0b03e3ec38998819c207897031912311341d04e965766989acf7b9844cfa323d026e85b2eb6bf588d86c9cd3121b16b5f303240b81e6ccd5c6fcdb9281420557cbd196d0c1e094eda53d2449c13ce16d8fea20fbe70361eb6c0173420f4616a4fc779bbf20c9fcb1f7a25fc426a21c4935886d92fb12a2c5eed0192ac3d34cbf6b30431d8d77e51c011e233066c9febdc05ea2394455fc1c731cd244e2a378c14bb7561c0e066046717b0dc7b1e3de34e511e5b17a0f3ec98815ff36ab86f1d3f8cf5f8f2db285856cfbd08dfdd87a87aabb961c2d7b21b6f582a1de0e34b52ac236acb22d08abda282f70cd4826bb7ba7956db76d6db3e9b505e6833e06fb31b3466480f60378e59eac6b2849c25bb738a13de140117acdae279025acd9077bdf1c3308cded3dfe44746e0e27274e446303bd127eaa1de99d8f143d572f3cf04e688ee3725f674c111b286de1204894bc21d3b9608c5facb54abf6d7ae69a379d35bcedd8174a008e7a1792c472663bd2e6c977e87ee46cbc9497d0562c756db646c272dc3843a20907a2943cdcba5cc7bcc28130e9936a1ecb7124f6ad3e20c66f903634ab116c87b0bfc5b02f14f70b15bfc9d662c4302857a2e1fbbed7cb0e13f0790fae53facb2f131fbeee9acbbd05da3c3ee753662204498d213cafb8354465cc467113cfa8fb184efc517e1a610eac27985ddc7891be47ea3706c1b49a6d8f396c03a6c2258ef20c0cb485516cfcc34cbc2dc334c8a63fc1875b44dbf935ceeb0149103d62e9cec0b7ebc86ceacefc2868bafd991db6abe6a5f446c4caec5e9f7355cde51fda49478e44592972890f8503948702718943a356bf5c7c47b23a5aaaa517033e53631a631bf5ed89c33030b0a207f6becbfa4850355e2cd77cbcc868e4356e14089e3e4bc392f484488b05eff6e86eb360514038ad49e44877a9b5d742ac710936e1e9d0ab38dab530e5d0d88c20fef81616cbcbbeb175f25f3c0c854ab2ac399dea2aadab0e6bcab0d4c9f398be735f1ec01a4bee82327f106c27f815e1e09f492e3a40aafc91c87bfe4967fc48b293c82ea7575b235c28b28287c38830ce7078e81c718e55ee17e6f440659942190b2c939f4c026ed81034af0afcc82b9fa3697145ef9d8810048b4f6022ebe3e52a0c12907df5dd622acf151445d66daab50753cb5a54eb77ad49172ba8512c7f222fc0dc1061f0b8c55862f271c7b48b3a9bca4ea6a2a458ce06b7db6f5027003f66a36e5f24fd25765776c79051a39b10323e4436675b6e4a15218391a64429ffe6a9dfdd74b0a331d832515df1bdd3c000cb7b31f53868c31eb94f68e4cb8f87f0dfce186302626053ded2513e134de4e39aa86bbbca0b42987ac5fe801eecd1b5534411ef98f836304892a0fadcd8b115886f21f7031529ba134509294d0125eecd12ecc96d3cae3df9bd7edca98578d6c9e29d6b53dd2fcfe09a89353780523e65d3c149f3d64091088d4a22e8810426edca3d24db209d0ae5b929ee2e838653d143585a1fdd7e262507a8b1d73f94e1d1caea8d5b33fb3d9772f4a603ec498098d7c03a2b6e7bda7d52ab5c01b7c6dbf581bde6f33d5f65e6bb44d1a484710df9788daaecea59e3d889cdd3c607a5dceafb0f4e2b139efc4e0e8de3e2e95ea7bfc73c66a548f1f64755e77426d24c596c3c872efadb7e923a2e914e71d0d694582ec6d0c9274643937339a601f92814d793620625c4b744ac65873d02e414e7f6f783862fd4373c1f23386b0f07908dcdc255de311bc1225aa7d2d03472301a2eccc9a3ec1c9e9c823fe9a543e6ddedb6c1c33562e33f8f3eb810d61a43e1f82426c2f14d5fa6a0ed6b55b5ff1ef9fcbf5aefeb13246fc419083a65d2dc7d4126341586a7e91f724c7c34a64ff65cd87c42aa2bcba81f1a97fc12b79324b2f18985e0e073e4308b2c0bd4c9694974a6a6bb21d3cb288dac8c3ed390552747843aaf689862e67164361ccbc8c85700d21fcec11f5175ef800ea3efcd49772cc03eea95a843c4639ff1deca1031cdc34727250625016a64831b2101698102b11d649a86c7fb1f7dc815aba170f99c4a2d6a08d2dd2445cb28fca374447bb801833538143f477db4bb419eda3eb78bd0dd459b6365a6a6f3121eb7be4c82dfb6ea0d2b47140d065f972d0659514b70f39665a071522e52dc43060f1761edeaa1199a0fcc269c34e23c7fa1c04e4307c22600a5fdcb10b6c68cc519843ed191f1b2f0f3340ddc0413fcb4b84fd0a19c6fb837560dea9e800e2e29a9338adb2ddce8d3d86c05b719095091296f2f40de56bc24eab20f77e4d25fdb8f160b081ba7e89523c80fb8b7eec6722708a7fd38af30d9e0ce7c153efae8f4b182fa0a54e77c199966a50b1b6a97b4c8778168cd23466ffc2eeaaf82aab2a51fbdef3f2633e2d014ca1af0d4fcb036216b6eef60519f21cf0fa2166e90b1dc2dff9409b09e67249c712db9d1ec8e67630634edd715e0d1c3fb1064975a8b277e56747a502bca3d876d53c328bc52efb24270319c2d18a130690b044cbbc16b89e8d1e755d5bc4b6994acf0746f6795a600f97599668d3d17c672d8d1474650ed433355e0d4e2b99b1b9ab17cff9a9acb170d01a08e98bbf5a5b58b5af82d9d9e4e65546408e82290fb0e0959c2e83479472973f33a9b93e4790c19e35d1064ead625533410e54cde19568093165d1338c781b7f728d515f6decefc088c133b3d21c1a205a8b5976bc05963b8af2b5aa6e146f4a91700e46a20a753c55cf1c5ec95007eb047d804d2f3577a09f28f7c99a1c0335dc6ba9e7c10e49abbcfcf454139e9b76f11bf69064d4cd1579667ca23e1e23a8cdc3e23e00048096150dfcdb8f843ca2f322ae519b5704f223abc5fc40df3abc84f4a07ea5f7b4d6946096674b0e8df9ad52739a36aafbbd2ac98823569a344e7a459aa137c350ca404db7ed6ded0d9bc53675ca3ab30e0d04528fd61eea6f3265b36aa73bf7691c7c9e01f533f9fdb52e03dbbb2f7334d1b442eba210c657c2a601381a68a52fc84cccb566ff71b041cb6d3241489d140cc825b3353d29f43bbc76407020a257e26027d813b9914f5d58f96eacac9833a44a7bfd9c21fb7c3c6d687d29d3b9c8260075e8aa6c94c77d8400dd0fa67426a4777c9180cf5f514e85b9039060f1bcd45dbe8e78d8e9d965601b898de551bc00623855eb0b3adbbff06ab9ddf5b68439997b78660b0a37fd3d626c9cba50446f40e447f6400d3f86d86403480df98fccd858de1b111c043e0d084bfdac8f4fd47047678888aa57c7c3fab99a64f221166ccf3d106f35efd0c8a50102cb31fb1bcf5ccbdedf02adf3adf67475d47f34d35686c0d9a72b1a549e7346606a1a8d712c3f41d7ff3de37d245f1166b83552f60675833a7550f50703cbb3d9ff5093dc6af7cc257cb2393c5fc0b376e6ccde5a475d6c7d2d1fe1331fa6ced59053af4a006ff8bccb9cbf958d119000005ffa9f6e04ca4ba5f0683927150a728f36c89c0af3d4efff80fdcc6fcbb8f8b6410deb521aa6a7c47b5ca5d32fa314ff01254a173e40dd0ee5b9d184fe915568c734b3903e08b5872ae5ca0537be5aac02bc9c25384913ac1592a2d2abc4e9b7398111baaff2a5166e56b17153adecc6f27aeacc404d39aadc3a3d90aa17d3171e0b02ba10265e74d3c02fd986ecd10c2626f0c3db062878a80de9ace96843012b3c3cf7be1726d85b9bbd0ed80995fe0b8a41e8cc973c060352beeedee36c02af7cde055f28e1ec66f10ed49ed50dc2299adbce16bb861e36e0a67dc1dc07815c0427af9fabcdf9ff84c72cbf2586e3385ac0c5b79a6c38be90ba7bf99ebf8e717eedc77c99e2c80688820a90359b9cc4edb743eebdaa90279068fa41e02580100ca4715930705bea3e7fa64bbe0a8201756ebc0819304baddd019b3995ca5f6b42f337705885bf76ed103f9a295f20db79fa912065b140f48777769147c039088956dbe39a1240275e90690b9127a1f8289d541f3b4a36c64c4b52a75a9b2757d3a4654da3c181571ffbe83f58ce5d6821db17b5fa4cbc0ec8ae70145ff9374c0bd9aa96187c138bf03c1dcb48a0350254a73161e965362a45716049f32465c29cc81f93596373642c30e410330020661d2af36d5621fea4a00fad973e0b8b70d45862c86c39c95f0dcdd4e341050329708b73605e56874d7c7d610fc409f2bb36fa5f49cc69ccd2978eeea9b212fe1bb0ab1dbc3af12fe511491e27263c0e788831da58cb08bc6939c04aaedc63af73e9fdd3035a27f34f51fb6ccf50acf7cbc393fdc40ad9d8efa77fc2706114a0d4c9e88aa66e4d55c7a69867d175fda928bb5a66777e0920d7e1a439a9b5fdc11436d5f614c76ad0f4eaec1454471a3922ac95e6cd5863cdeee82026670caa776e22abefeea6e9f9eb24c18c411a636ef91cb78b82bff3e586a2948da6a6e73d2e9b9e18dde8b15b481cbcc7d0d011dfae1e00e642c13a1ed10a1fecb4ba01800cd2e36acf8177db65acbe58c04815ea1c7cc23a94169497a40b8df60521b9f9690af94af83649bdb66ef3795461481726e3bf1ec2a1745150c34c1a94178fb79ec3c95ec99e40ea58e3f34b6432b72c8e2a663bc1fa0fa292efa5f64c8892f93aa8da4d63b2beef793297bbb7805f5f3a8c5240455f850d41e45856beffe7222062acfb05a6552a348782e1835ca7e7edaa524918049599cd758c53db02418ca46256fcfb3be643011a24fef651f3db666572921cc337a3bedffd76560edfed32e71c4f85a6e771eaddde01216fcc85c31bdb02d67820adf9c6de7c91f1f20cb53988b6fe67341971984a3bea2955292a4dffd25a15c4755c33bea6091258ae5ebf5c094911397c80509b2e3f8390db30f3db9b05d221093be2463b0ff5689764add0106d64d0beb442ee020e5852082b1eefa98cdfaf3ac9d2ff0df97ea395895adcd778d2712c3b55a6cf4c24baa9d0320377363ee3138fc04e4915727946c4637d5b7babb3b32bc116663f1b1d153ed8d80a309bb4cff8ac9ac192a3d2ad8c19be981db967daf33cd6948a94f787f67f45afd495e0365adbbf482cdbe649bb791649b2b507dfe0eced91a7720d8fb94c478ba192297e9b35b564bc57732387cca9f4eb8bde6c836dc732565b1d10f7d3b0f1d4c04b5f9b74406f6a12f6eff08df8714131321a793767f01f541d68fb30fe87b03a7ddfe17f5eca3ceaed9989ad6f00f1bd62b59a439b1f1482dbaeeae79aed3833481447a10af38e36eb04c6f319c96a86b7e4d82684f8f4c6a6ebacf231caf2f70e852442da2d3a1c5fcf0ce6fd3a1b2d7429e8c2ba7a8c65e30910e6c32fa630b04e005f39567f76800dad3abf371164c68568f5c5768eb647730d2cd952235c55292b5bf7af4e2b8354a7a001fcdbbfa22ff260652107a9e81b34cb0c3c41906800a79ec6846faa25fa8594b231caf8989120d692dcd4c12f72228d76f2d605a28c7ade6992e2574f9453f25a15f24f0c7ec1c6d647cba5f4b63ef21dd73d33b333b5bdce2eacb97f4c03b07efb028510dffa2a00aa322a77f2eadf65bf21a7b3de14859efbf93d90c556a20f602d44ccb63e3dc192ba45b2dbff0d49f622f5e837bff6ac83c376ccfc6590acc75e773d01164f774e9d90f75b0c67d04542684e6e8e71d3dc6184827a7954b8c58f346b5a30d0b9be1af7e209e2416bf75d7a50da96db45e9bfcaa6b436e6fbeb81effe9104e01ded1635677147daddd76fb0877e49201381e26dbd7643df607fb7fb6c5da5b6e15516cda936cf9f46446f551b8bc8d1b6e8298d184c88ead5073ee30db237444cf871b6bd9e5c972dd6ee38d731dc657ccf1729053995d6c4c2e992c540fbc2e475f3f26b053d4a5612db9fe1d675a06340e56b4c6534e1980ae1a76410e83183d214aa68d61263b338bf64048ca61315849a934a8d81331c329a440044f5ce8214d20f4d824ddc153738f83b5cc273c3f3f998e7793da2a0d38ef505225fd31ae38a431e3ed6117f6f0be934cf4a61f5e05913954f7cf673093553fbc4a427008c0aba1194c5eb525833559d742c236fb763981a597c9417991d812b198abd12df2d42ed9551c9fff093cfb4e8fb2e88607976266b74fa7fc17ccf79f8b564bdb491c8d2f807642a5d459b67d69ed27ab34835f0c9edb3f7497b9a3009b59f0066942ebd05d3a1abd85333211f7cb9df5d622d8ae9c29955eab694568600fcef74b58a122b45e3918429bbd948f3d4704d8122d67d5908dbeb3b96a483ced5d72285f3570a9b7f177a4d444471c1768ac9b9a276cdc313e96abdf6e03b3e7d4d75e4cfd26146df447089622480bd6fca7fad16cdce3aa0057c27eaeeb44468ab1c61a93af3ded2f63b5c6b30ed7a007011032b749b1f6091429212580401e6c9409664100d8afbd50321e3d48d2b5c77fcce10b3bb0822180407979a9464f49fe3b5126072c40803b379300dac1f7f8fb160e8f0571e26935a3b980ec20458fcad865e9f1e0a27bd680c029544fd75c1bb0519bba00e4aeba24de9d678d6d8fa9b07e67f064d7636b809aeff2e67695b2dee63d965c7f3f77c654be514f4b2e6438f1a6b5290b9fca7cea8908e666b58af2a54255c85c18840cf2b1cb8bacbf3e04cf446d91aea205af837eda12358874324c562314069669a21c061c5ca82de14ba05615e54e4794e926fbf5c4e39a353e74cdcbe3290e846219d97e6dde138e2e755887e395c01227c2baaaf8fdaceab5f933d52bdb431ae89a2dceba5666e6ddfe38e3269949cf118a23c2fc2b2d54fb0d6d73008dc5f69608088f6f319f07862a0ef6c341e263bd4ce7d6c69953aa3d0e8140bd612d4cb9550c20a31ca63afeb50b5c9f3549b21204336d0625891dc10a7d084627efcaaab4b14f405d419a73a4e87cd68d5dd6fb84cd26c2c72d09a1759f5d6e3f02bac495d574ebf194ea24f12f6e9959c84b3465819218a95dd05421c91f1158f3867ef5f635caf8f5ef0d83905b2666f4385a2ad2705bc2e4f5701641d5ea1c9c57d8791134285f1af81c7b43b76c09057663f3050060d67c3b9eba4e06e621be1f70e2d8509621e3a62bb77a8e5369a6e15c53d5837f5eb06ca3c7724ea7364c21440bb00fb7416689d8aabe00f9cce46bd8bd299107493d446d8def94a8bb1155f33a6e7390ffeaa22fdf0f06c6de05fe22759459c3ed8382568a554359cabdc8a991bcd3a36d723da6c6b369c721acd2b4fec5cc839e5897e86ae5b48f9ea73b79b7e8bbaa3b3b75d3600a44319e5282011e91d779376f6646694c4170f3f9445559255d89d2d9de6314b3e4148fc67755248dfcb606ff861d33f3e1ffdd2b0fddec75804074fe1638fe4c90e662e9619721f916385ec655ea51a7b7cc08f1fcdc3da463c055815069addb5e7bdd47d579cb6e3bbea01606b92ae0b6626688e38d99d7f1ab825c4937e0c41ac845bfb267142696b0dc4c8f7437898b95d475922931536a806b537520f1b8c8d6ee293e332b88e2da6d939514ce6ea462f90f1eed0e2a743bc8aab31a19787ccc47d4078728c55d984f1e03d68faa3b75d59a5c11b90fc65b50eb56a47ff18842158c93c6a69178ba546d5759db4ff8b47683d36ed22359646f385a90f68f30b7450df5ac703387d38f238d4da996af1c074caadf4553c93d25f20f2ce304444aa914696af8a89659f94a98b1df3a4d43fb48ad28a0760db512215dfabee7dd834e87d2c79b788454b59dc9ebf8feea1928eded2d07f35504d2c79549c474c83e9dfc2e4284ba05b4a7a3e58b5bc869e03e96465b0fcf8f246db09998ef36587f0571df86d8af2ba0ffd966b6b1a02d0aea6c45283d8ee37d505a367c9b00a682487e4c76fcbdb909401e16a945441c74ac534951047bcfec6b5583020337da99367e4f3dd7942688939454e8faab77bd81b0c3bcb9ca3254543755fde4b23a56ac765286b6c49895a3831aa3ec48b09dabb50a678b28251a44eddb2153e4fc5f30f29c9e810701781f58fe25a675e3aec5e68d6632670245b2e532bad72ad569a5287e24cbe8e1141cbf46a9e09ff31e7108f19efeaad55884ccbcf3bdf166b5e41ffaa190ca49c93950548ca71f89101631621149d6a22e2da5d66037c55995bd38069e1c6b507bde0c05a16ac51e6b9e365a4967cce1a317aea7d2c8bae0eaf9d304fa206f6bb905a92da002ca76d2cf8675b43301140fdaf9b04325d036c47101e90764e5dc86d9ed63fb8803369fe4253cf734e745777038e068a7395b541fc0f809dd07f094d428097349ca7dc3b1bf030aa3016eb010c02b9e9a4bc8902f45c9f263d18dc30365e5c23a6f32134cd0593e0ad2e5c6b6b73dddf832bb8a4f2b2eb72ca6c59e2e6d1e760e401562ffcb979da5a6c6b4dcd6ce4a23999a1fb651222e7b7d1345887d92992c8591043de46c0c932d06c5c7af7ecfb3e9127656cd3c0804fb412bcb031b2cde2f011c066694d3b340615c78cfd1a72ef9cd83e6778c65174e200700202f11062708647b4c5e790cc64fbce174d5d65f0ee805235b8fd5bda935ec5d318a8045fa824504be32861f5528a97fd99b84b2a5674f710ba8d2bf90c4e0a4087939962a9dce38ca69fa218dd519662bfeb749e9a401f9b4406881788e383076bbbd5250128640ed10f66c7280af11cddb9956b8ae1eeb7a1eb5ebb23dda9801c5794cdd5de0c8e189b2c9b7e5c572753a0ee612f2f16c456687afd5702a250362db31cd5e3244937cd579ca18d75702a4e8d4dfaa932adf556fd1f1d807a876d90014c53f7c6434114f2697cb3cf739a91ff6e316584a5a41eb2aa29e939c341c39cb93e178e06be1de71c6d5195d3a56b07c7dd8a6779bf0a990cb1ab0b2497c2e0efef25d80bd320f7b137d090ce58b0b0e78f848e585a69e8ca845c80531935faec008b5211fc84782a6e8eac685740cc4a5a7bf6a0bde223aa5bad1fd01e79f7e77f956d017855248d7e19b5e2b5cc5680691d85e0044ec1835bb3e5f59ad74ec2fee07e656e5f7e1d5e9f0ebb8c36837ef8ee7b6973d8389a43e9bc678206ff1806de9ff795051259075523ca3b99b8154da03cc512b45f67b6d8fcc985916b2260a4479a4fef70cf1f0200746bc9931739895b37b119e22c0d980925cc076cd78c42d183a11a4c25a4aec7def617b986c990fcb7370662528b4fd936d25a55932d0765f84a9ec355572010cdbdf4e6b9789ee4bf49605275668256035456a11a9e3cfa5dbaa42790eef54590922f0f63dbf54b8a7b3781f11f65ecf782a299961b5fbe3f70ec0eab42e6b47b630b0188311ceffc6d6e83da94abc06a26bf9c4f4e3e8954212b2132fcdd68523692c11dc7c84605fb9156929df4c1b99cb3bd978c2996a46896a7c610d1cf928807a3881c7dc1f59b2ae4545e1f76a5357ad677b0d811246bd68653180c93f88fd25d555880a5d15f3b074d993659412dc1d0a371259465414273cdbebe33974b2fc107879372c23566e8358e0c6a3163339612fbc062117b7343299985926a1a9912d33433e95b4513cc951b7060c504aab0589e89be8aaa8c39b805751639abcf3cd7688ed0854e72eb3768df09aa6855a660c03965ecdd998bfcfac90fed06b307bc51fd9edc80093fc5a38439ad9c096a143bb16ef4a1fcc4bb73e8c8d05d0081ccaf81d89a5cffb3f804e975d9c77febf005cc2fa7fcda2cbb4ddfd97a88cf12edd4ab0ebd2ef79a9d7c1f1cffc0233a3b14c5a57e8ceabf2a018bbe56d54090edc1ee65ac88c904d426bb662e491dd0a60d0e78ee672e04fbfda66054f9dfc41f68ffc6355f44f1803bbbed4fce5c8a927e14f3f38d0269c3dc6cdb782b4ae05a8d6c55d02fa7aa0e7cfd7b20a224acbfe15cd618a62e5dc8178f169a69de7d5c98742427cd01d19b1b9a592470be7e9bed89c946563bb5d7b82a18b30234a4cefd5bc29850d938959515e6051d31610b061d1b771d09d526a3145cc361fd8b5cb4c8dd39917caaeb2420fd55072539986c196258942b515b3ae962c1327b8e7c5160a39029b4ff8c90312039afdb79a0a1e0bd1e8494172fd9f8aedf0df72fa5e4af8efbb9b8afbab52b529c20fcc7c323bd25c4cca829379481786b3b171241cf3b5ec2a7da840f1ccfeb4591c84b47fd683fdb62407ca7a85d21c2d443e30538c82aac9810c275d141a2ae606b411e6e668acba1f3160075714be069e358a20b4945a5c664afbc522c70f9f533cec975116bade783164f96e7fc0a253c571b85a12e51f2d6611db7681a8a56133be20125be57c443ea2f913e03c27d31b3e7a52226fa4cf9844744f2940fcdb3a22b27f745be006c027f437bfa979e50810b6e4514fb07f7e6929d7e3a57ec9e350a210e41c466ebf46dfdd418c547a42580bc9ef1a87dde00d2265825ec0896e8b5a2c433f7a52ea6d97fdab0c4e03e414275b1f1ec892ba8f8bed6c860ce1be2582323a550e560ad67b3371821b8fdaad608c9c4002c057ba0b18affb8efdef51470222765d7fc6372b0aaef53ee3e7483f9a43ca472bcd88f8a48135875924236eb3ee540628e2374d88e6c7c9cb92745dadacf9d4ec270d21d53af4ad5f0d746da3d7d3128b6102a21de8b0ff4b49246776954df59d0b17d7f0cc912f973763dc187364c3a8256199eeacea30221e8db1d780b82f46ae58900444d65cce62eee5b7c49294e92d10c0f18c897c47a9bc34b376068a1f397a77a30c22e219de80c680ed18bcebf831285bfdd9f30a944f741bcf06a8dae53fa17b6663df5b97e499291fe33bbf70153c18b2ab2a56cecef8101d7f845a4e4bf88e71c55c29c0471769878a6a2fa60cb5dbb3bfeb7359172558a39c2cf549c51a45c1a0a80dd2d0add34c745bd6f84cd56654c7f86146f9b8f51760d12005ad4574ea71c304d273365efb49559b465229ee2eb8a61ede087f82270ee208db9c3f9cefb03b7aab284ed6b2aba8f81a0b8eea48edce8a677a24b68a61fd6572ec52436ce39f16453d98e46a5bd5d3521bfad686cb7091166af623d68cd07595d98ebe89e0c677387c0bfc3d25d3dc5120c893c66ac378b20e4c0c2a1532a15c6fab783a6368a5130b8dc0b7a5c7d4e23c2b502e7b7e3ed9cb334b3ef39df98699c1da117aca4faf03406c79f6c4e09d82a122d4bac16e495b22475deeb543c888026407d2e2c7be6df7988265413953295de450f2500cb8930327961cd0369bcc4056fb5e2070ff057c81d8e312e1413a71d06537f7ac700057d756637f0aa8dfd81a60064f6c91fadd179c8064ef91959014fa3c9183b7867ae615d95ac64152a4b087cad2884e487ddbb9ab7983df472ff5be2d15f7bc7c46e2403bd657ee579b4afaa8f2afa49a102c430470df2dcae9bf0a4455466d9283174557989afacb1fdf558854df4be40af393a5b2ae8d485286c102141b08622208048bf34697dced81babd41cb30f2b8d58a4573f60ffd016084d617d5a787c4123e3ef20b069aa76485e2cf98291030d63b71e243aa8fd64eea12e2d0728a385dfd24a39be6fc10d8448f2f22fa8ad344027556996c7247fb87c89992ae430961c7edcb36cfdb14435b77ffe828cf1afeeabf0479d3127500d9e595cc586444b8231f692a3580b7df9d96d00da809ab1e89285c98c4dd4c166b1379035e6684342c9e07c8a49d17d6713cca194036ff46952dc032b22753aff199fa63cc209cc8d99ccd69644e0bde31601c19e3d2458244ac3522cfd13fa3c6f093eb930926b39c31d66f69dd5fb52c90c1d586d563968b00e7c6c402ca32121ca841cb264705e421287825e7ab9c965fce2b60a249f9d50af3876ed628b7486c99665618356eda216b7868382db944816c2d0905ba6159e96187c32814dfbcc4537c7e0cc41136ae29e3f11a6dd19b896570906db316405a89264a18d76dbc7a5d97e520c4cb33e4b729b43cfaaac3401114e3f522b2c63fcb711675aaad3d56174296ca53b27c30bef818ddc2cc974f2d44b21f5f2cf0895d25fec1c2547e12988543834ef1ed359a6db7f333e2472471259aa16257bb2240d03f678e9dcd961c15d30cb4990e785cfdaade5375084f2f6ea21b3f2aab5859b298f56b437d2f939b6c37e3432eaadf9ffa0a81a42f7e7ef309b78df34107d28fe4b24563966356af97f38dd123d644ed204229277df2b3c9f72c928659c7a8c4d2bcf3cf2b1cc242d0a67ae2322181e9e2720570935983b3c40909aafc3b6dffc919747a84d7606e53439355cd661431bce838d033d41ab37fbf6716dc0cd714a30261bfd87f7e56e821be0beaec28b123b8c4295651c54173338b7b4e82949ed7257f512fa9e91ed7fef6f12c558764e87d787f04809d4f638f63070fee6c68fa7c3da208a84804571cdfecdf8c04ac0bf5975269e570dc69b635d74dcd8ab0544d71ba90fb9bdabccc5b85437d7bb8afc0b1fa76d19542a95764b3eb8205f38b7c9353d1a77d718f320e032412e3f5f7d871afcc0bb68c8f44481f6db9d5880bde65e0bad0722f9f50a617af58edfb413c7d387e746214c9642a1abf79657846b088b3147eec13b6505364fee43ef1a2b6b30e754084fd5a4569f49bb9fae392c21fcf8d45b4461c223bc7f07da871b54456fec27a6643fc62826b30e3677c6ba318da011eb465242400ff72a43368dcd9230b9e8d3e89684b6e85052a38fafab49c533a399d04e88450d15e6b88cb80beedac96ee72812331eaef74f7af3d3d3803453231fd4ef3987957724a18046bae3979a295794e940a05b9bb98b221d7d8854c073ddcf8e3a6f05692d32f626f944405fee49919f1a83005a9340f9847eb04febab85c2893c7508b160e907b8df071a480c461917cccd204c4a48663f5a7a0a5e9704c2436363c0e2c1007e5fb7c332c745593406fb0687757817a8614cd461781bd3edf36a876aab498c028aceeb8b78b45279691f26f2f65ffd040575419f4c7ff9f3780935b4ae4e6554d36b4d76e9a1784e27a56ffe27ad5a048fa69cfb573abe5655244ecdb175e6c1e6de1d6def65930412052960d780ff55492bd0c7d3b7358ed3954fac639617821d57a96373c7857f1acb7bdb7a4b41852a6705f0802520d2ba3777463699ffd973fc7e129a27a3d5d86aad21c6bef3c22ad6b21ad0642e2cc0cbbe4457751ab162e011c0e8afc916b9bbc972f773cd1222271fed4d969ba0c0a6941b29c1ab690744de4d540b2f680a8ed019eaec3bc90463068be982f330a3e53d11d35bcce9c71c45d01858af26f0b77b761ff08a8d8706cd79fbab99809cf873fc97aa1e449d22cc1f9b9376d2d56d50cc4e9450d97650692550d70a333c6cf0b0ac4e83c1ebb5498705b6b07446edab8d3ad23b1ada7b08d9996cca5a5a685f5fb3261f1fd6e48be0e72e7b940e5cb8c6d12e2e005680c2561f7a78b23feb8b27fbfd734f1c44dc447f763861ade391a99d589bfd018c0da3bc0096a753a64e79734195c2e8b9891b929ac2bbaf40acc23527d20db0d1ad8760b9d4fe1ceb1ac243547748d30d230d382bd50fc8f7b8235e211de9601546f631c416cdf0fe03c25306ad356ba1e879fcdafe32ab308d9b478f4e9a618908c679f906db1ee99c61e955d37fccf69b5145caa48352ffcaf523a97a1a02329d104c344329e12403b1abc3c4670d5e5ecba298590b5dcd0d912c55fb7bfdebc57167cdd95711b55b02b45b6c86ec62dbbe67e8c0baef6449236f8703cd8b9798d634438d24f437e2287a7cbf607b28e3bf8ed7ad598460377b0cff0e55deef70bb1843371075962df8f68cb479bc4e071eec2bff40317dc4bd91a43a4068c4ab4fae28e58a76a12613ce7ef2f7d1b28453ffe15472f1ea08e6f61697ceddbfb51b329ca529cfda80c571505f9a1ac6f8dd7df3dbacede19a7c7903057e38528ff52cd9e8ef8a6334d1c42d71d48ad624acc4ecc3188c3b319417161a93e8bd012c7ac0138e9f0e7d15f416babb00d53abee583ba73f6d4bb83cc61ed9eabdd77c7e6ec9c4f31906c9764b8711d94a5240efcbb3288c3365219faf8470643d61a55ac9cd09d8f8db562c603cee43b6ca917db5f5f974a21e2376178c9bd9459432398ad1738ea2f81fc517feb44bf25aab0e30f09b99cace212d335688073ffe6cc3fff93a9b5522bda8e96cd443b577d73cda46e555c38d4c9fe489714736d9a4e67064416b2d26861a68e422893f3a4a173809085c728b54d5adb025b233f1ebd4e4c414b5dedbce9b9738048661a3eb9d66354cd36ca6cbd7a1797ee798ef85e81ec4fd044418321d41ae52421a278ef2ffef0ccbf50a4eb32bf57beed71c2b9b6401c0136b4adc4fc54f37909444f0e78f7a5416e8c61689dfdc33c270d21da041dd704774b34d3252cbdd033c0a5e0a38555d73705d458be100e862f7e80beb703bab642b26589df6911cd652a9a3ba697c4ff7142390e98c1c7023196d311e5d44eb2a93404e3714d4d5d6dde5135da1705feb788262a9aac366dd329d98014bf3daf4086bb18fb1bc2c63370c58660d600f91f4c66f8acf0b7552f3cbb00dfd72c2a606de1930598912f8e74997f7a080ebbc26ac154957a5295ed7a1600f5eabadfd4165ce5232493d6adbc5e9d66a10977ce646e0154ed336caebc42a59519ff9144a9d79e2fc002a77c60589373a6a9d8582fc9b68827c88c6bd4d25abed5a1ac9f6208865b25e4827ddd87fc407c5ce0ff4dd8bae71a692c6df0ec6699164e2a356cd60ced684a42041dec844d584a98a30f752e40cecd6d2fa22fef11e61a2e2bfaaf0beb7418e479e4689e471ed3931f960d91b59247a372b7768b938ba946a65a9ec71c6452c63a6ccd1ab2a5a0d936ce0f961601d14f09371f24242b53f61dd1e8445696cd962f7bce92b9f7f4933214452bf41e220a8d68d99699ef0375aff10af01d57d51b5a65b2185f666df79a6bb7404b4613becaa2a1e3569896843d32aaecf5e391f64f72054fad847fa0c9bd331a77237ab1f868b94c2abfc0bd9622c7eeb1232a6c581192453fb72a5bc2d71e5a79b670c493819ef930d81d4907f7ebaa6f8453b55049542058b2292628f11d87ce71fe430ec7eac3580b84c1d583537676ffb85fb06e8d47dd5f0c09315f8d78362e68f5b825de13f7fbb03622c91aa7a30af15a7c64db015a44be0660419fe7924297614b35820c7b39130748a41b66457834475c45bd9dfe84bf91a98d74ae980dfd008407c6fa687873e97d4f28e6e4fcac9f354efecc6756229d9ff704fb65de0fbfa31cff0424df917a3ef045ce3819293ad6b4fc96ed87da6f305e0faf586bcd3737a96f27133084c0aa1301d0c82d88b4a045c520704fbf712602652588f3fbc9fe5ff8fc7484c361fffbe81ae2d5100f892b6084069901565e5462aeda5ec84949234e192168eb852abbe98e139bf0303a0a24e2134eeb31f5940fda8fabe3a0098998b808b36f66cf7a0e1f633e3fa8f737f8beb45849e2d695890bbf53a7774f4436a62ef095e85569def36cf4d4322d86f57a3db7cdad6f1712dcaeb271456808d22b5ef11c31e10b65b5ca287f48e31001b9f3791299a78f20d0e2183a3d7b81b4f7a6130ccf64653cb0ca4a54cee0cc91a2bbd645a8708bf3510150a5191ba6df15fb3eb95ff430645c1b72c5c6d62c83634c169c450fdc9ad5fae27c1777609799c8397423e6abbcfe9496cb893d33c0a5992fa65950f888feb8cdeda90964a456e99adf0aeb1cf29ce9be6b7790000190c253e357709390b5055beb2c585f1939a73ede5769b429b6efbe2c98f94d71d915345c60c16c4a7b965d20858bb2b235cfffaf305b9e624b14f004ea0304c75a7fc91b9ae6a56f0ab7e434d8e2f93935237394aa34a96fe5dffae74076b28853cb37fabb22a1b7a73e526a05ff7e5cd10bb93ba5982701c812bb93d917a418c875ba08720c2e7adbdd7c933760b560a1416d56bc43d255ce6585f0a9a859c210c5ee9da2d962fafc5d30cc9aadac5913ef3d4b8e17393b116daf5d3d231aae5680b904e298167dadcbdd3f920a4e2d3e7b54048b888a343f3077f975a40485187afb89fd418803321cfd645491c69e2674dce169b72c789e330a13d31dcfc6d5c61e23851db3cae7eb7ace9e514a77153a5e2fbb53883a9abf8febfd1b19cf2e78a1bd976952089526b7bf7b20d8d7973194c9ffc443d68f49d9eefb24437a7e889745beeee5ec157b5662ebb8432e2013be0d922c29f19f7d6faba130dcb266d7211d7f729ab35a98be4e6e34a3872c6265cc5c0c1267aef0a0d483e1b10eead6fada3dc4a5dd3f045f3b394e38623229aaa478ec59e4fcead3ba94023bef6bd86bfd7694051b69f49bedb7b36759d594175a1079c17b47749ada248c89d0536b4e4bd8e1016540c1c1b4f21caaa36df9b8eeaf8438a9356aafb1ee8831fcfc27e59bcdb43bc21ed61f7666533d609711a86aa841639574fa3f77e667c28d91e0353f01471f098c938537c8e30df0658ba26435575e3589fe0e123c84ccf5072c0ff4c2f0e4226c92815f886f857a835aea64092f84d41f36fe1a5bdeb4df58c2d788aeb72bd3aa1afcd2a1cd501d6a229c47fd446cc462fd9fe41f289dbe30c9fc137ebfe9013742d4e858afe423a7bac1478f4c504ae1a17887a056ef44ab97457e40fbb3f3d116ae07f80bf522a2b3a7284cc6a79a773f85ea0062e453812e683485bd3f8ee15d6e31aaaa4d6737df0963fd905e34b654ddef5a8018f3d9a6b08a7dd0f56212ced486e391b3d9566463a8e39af46f981ca8e2b0581f3e3c4bb1b98ca6ace29b14dc14b3eae21589012ea4930b71ff2bbf5956c1c82b576f968bf1f31ed39277783af41ac8bf79e740696a3cc47e7c73778fef1b2f329053bb1c594339da405b4ddeedc699bdeda61772f80231f0d2fe2a0177adb55201b5e5a9b64d62ea42a5246fafcc59b55fa7c60b0d9f6956c5e1335b459fe204234fde64ee51105450e41c6cdbf04a60ad9e839cc8841146f5035fe0f688ee08d4a56b2a3353d62eaa23438f6523a8afdc406ff8e2a04152b8c5a8372e97f764008d6d5e37d709ad183ef72ea8437c71be22f782883dc22a7f52009389745d2b5d5c0abc5e5b05aba7a828b5c096bcfe32db75dceb0ac47633690d305d69062cd5049dda421e61eec9d457116e75149e8d6f4b39e30b44c81374db0c76446fe873b3a1d3ab691592222a631f28c37acb62e343c502ac99075bde6673db8d101c5bdb6c7de4d917ad5316b7032d7c63b1b12276309200af8241a8f0dfc7b708f4c9931583ef79f401243b72d1eb70410637b271269d4bec44ec3da0ebbf84dbbf86a667a5de5f5b022347676fa459ce4ab3084772f1f948d34f219a6a7db41ae849eb4160c81acde34eaf78fbefb454d6902c2dfd97ab751b89413f864a114c2b49b8ab9ccb03ef21e2eb6ab647978e37a1091714af5471a830099fb34a06885e7eae50501633638789c4a0fc6ad8bdadd3fb7652aa5640129fea4143630beba721ffe239fd7345e1d9cb706aa95a5a77585d6f76132af1d2a0c969bac458de9ddc84de71ce57bb0c93144af38615de89fd27efe83b11cff475050ee1e8e30e6ff977e0571b8c332b38012efc467f040c0e18acf1e85653feeb64e0865c0666c4abf71b9a409089c9f4f385c0496ec0eb82f59b530653a4cbb221fcea08ab0a9172c7e36c947efe84091455688174add36a15c5cd12a2e485f4b130ca3a6953767fa258dad53eeb4787109cafbae4603893ff99cbd6ac0d5ab75617d4161ca2d3402e24f465969e6700c924f0023ce4d71c7e1d4d1f6cd385fa4777be4a32ff9ab4d2516921732cb29c59d4e2690b3ff049ad258891bf7fd595a04c9134dc05597b5d7419744af228e06f419154cc19f73957632e55c032bbd38f25d0f547b698bd8cfa0bf303dcf4efbb87ab0aa3a3c195bc04b4e82186cfb610e8f0e3e50ee0353379d84e424f336c8c4399185b46391b09d217af4c2def10d70ff92f4f3158636a779948b3f33f6f3f8a392494b9cddfe3ae4cf50a59ad342a6b76a9d9255e817bc693dceb5ede650b9887b0f0be1a5224454a7e1123ad36134dac5cd3d2bd99f22d418025780d1e2b41038f585a7793eacdf823b1a8fad0a09de6e67669ed9611f5d4c706fa0fe90dcba1e2d6d42a20baa03234dd8b7675fbee2e7c682dc41695c78971c356d407e07b2641c77f6e59492fc377b73a220927ea18aba00afa024add9c22557bd51accee19bea060aa37a3050d284d868e5cf889b0062e596d655f1c4efa97017cef0b3d73032cc96cf0e12c5ebdf2219249d4ac764391229e8a3c4e3b5a6bbd380d4f6951ffd332bce9fd837aeacbb1d10c276ff235252b1f6cf29452d00c0b41d23df515cade14394fc092d97aee1ecb20026e6ea353fa6984fa7ae33447f8e33796d8631e49398b82c3b85650561c755e8e9692cad9f228c41f29d54dcdae51f70e1cd3e3aaf938c350041b73fb3fb0ff59d7d2f881d4bf5f924c47556cb5b6863d53a7b18ab8a3e43f2073adf9b1d29989e9a9d949de22d11002d23d8d18d1f2f6c82954a0400ae52537ed332cc736b476621a17cd467e86cc0c4bbce8def1c541984d0e618b442b967ead6a1d2bbe2ec7838aab5bb9741737ab429a0608421b2fc94d5f949e56f12c402d1b4cdfa70ed7e771af7523f476c9f9d14fc936c224dc9ece7235b1248055bd6707834d41b8a589880b3b51f71aae1275de3e2c50b66870d08574d093bdc07b5a7e8cd97c8b3dc745ef0962f8a5fdc4535c95155ea77d35edbf6118090edc7818be9e1fd16ce63b3e0c0bb933063005150c76b6c803c4e2df101ce892aced2683f4a151004a33138938fdf5611d6006464d788e6b27c1ea5ba73deed6651f928a7423265f0e577e1e3643d5a31343d23fbc48eea41a465d8e1b8e845b00635f5fa4abee13fd90b3c2eca710ff269a9c54646cc338d7fe3ee5fceb49dc9e305ff88d954b3ee522a973681f31947b46e223a5a3cc46eeabfc20fe1ffc692aea2cba7040792eb46e20c5388a09b8abea25d2b1f1bf95b74117dc63b04cf7ab66d824b4fa7ee13a2eb608e450cc37f66984a7bfa6aea6767a000a58990666b1cbd992df76a60a1f4d2a10e198f4391225cc378763a8aa3d48976dfe6fb6a5ca662598001bdf9608cd44e38d989f1c6051cc3034799e0202bbda76b0e7f03a22dbdd2d91056bca73dec6ef313b558e51978894b62f763d434d327a4a2a229ab1a9b851945030044f94a84740392711e1550b0556fa4c526a4ca16e5b9c4e0597fb8a42b4a5696576ebe9639d516642641a4c51e2002497ea7ea94e648d22ce3ded0cef2dfa898da9780323269cb5256d113a35fd3a45ef5a86cb93620d98461b7a7bb85e54f2c798f1381c402df38ea1756d48b1d141e49ce118222870f52cf66e6db3186d3da9c347bf089a4bed16dc6fd5a7be67a75c7fcd593539234f271084483ea88e9095fd79f4e588378c3ecdca6b6520bb168a7c82bdb069f18712b55cbc4cfc17b96b81943df933bee0be9577e11f07f281e2270be79d1eee3a650f38735244ece7041f61e5d20a5c952a69afb8abafb5b495b5e80754becce713770ca235683a6847017d5987fe35df2406e5a5d5ae1cbaf759c5867ff62952ff716361802a4d90d5ddfbf1d9a87a1dd3a9dcb9bb754a3cc4f53c7cee2a203750cf9b7fa78c730d7e97ca1f379492529bb7cf779a22d3d2f188ba287d58f24f4966f7f094c0b72db089cb13ad2d81f27121b67ed881fe77474c1932d0769e2d9161934d49e7a930d10175b8b69015b2648b2ea95e03530a4106d944e0104b5d9f7ee6478d10c6045c0785d545bef620d083e336ce50816b07782526a67610e2ae4a9936b9395cb50a3cdce848462e6068c922a5d56a41e4c09afd6532c3799da13d3e112fcc1f9106643af120b5aa48e6de696bd008d88471fa797a8148220c3fe3fb6db4fa6b0f5845af738d820da1c49bfcec5abcdf12cbb912e3331c5a8e6c7d8a9058bf95b8455b333ba1c52466f81d3323c0f46bff177c9a1a61bfca4d0ee6eb57b4d6a8cd4eedfa685a7f126880f3e83b8cf131eff18f3e9fc438b1e68f563161581c950d0555bd4b0f0af4657fc4d555ff5426defd094e67217aa4d3f3afaae358862d78e7ceb50e4f804d56595e6cefd9987c45cc99229e7074e39fd9f904b0dafb82696396df43330f84827de37012ab7e32788effd31e6a8adbf77e98a7772b6b0d17289a8822eb089411ad12cbedfce9997069acb3030410f322ef3be8ea1ab10f391a49ce572292cb69fc68f787653c691356517a868c5ce138251413fdc94025f1a0778d930af7b8b98e29d95f72fd40ed3b7b9b2b23e0dddbc88722edc6caec0d7afb1a3e8da9404b22d8766b9a3cc629db622b2e57f611e63580ddc3da71e3930da3f198982ef67ed2ad6d6762562c3b484b75381681866b4dea1372c83d38664d33b76118de4f21002c36d1dac3732392ed73b181be20dec1a78e99ef0f6e78bcbebabbbc2326c65c2af799d3e27951720f78c927711a447f30ed1b84d397bbf8f46d72ba99963292a95db74eabcc6979ab112057665698e1cb689a69e9c3439ffbb4a15db1a9e230d1f63b90ec21c06127ad966a50093f3c5f62ac19d07fa22432bf0443745e95bf64f7b6b4e12788319f93481ef85d13e6ee5868021a733da397148f5484576daebd8be235dbc1a6c84195b10904566f36f27ef62bcf225be5f54b41b64fc452e483a8ecb84174523e723a52bfd493341b6f45066395e9222034d31f89612834e5ca75860d0499036428a4c0a02477417011565b7e34782ad6de3b2a4ca6ca3b9b6d4940c07e0de1a6b6d182fde27abbb8b1618fbcd1b2e25236f43d72ac8b9c4c8cf2438a63d350578bf39d25d27ccec1da954b117001eb8a90d8346d1490f9de81de84d57769ed1f804e9771427b5ce6529a195e4bf59ebf4fcb650de530ed61fb06ed9b7e3a635392941c9f15766113975122d55017d6e7d2348b0eda6c16f7564b6c1323e6fcd0130286e3b5e27d80d00fd38dccea91ed1309fb3386b9bb9a09f3b342d46a2f6e83041d5ea38070ac8d7e3f4f3c7348ec35818450c31f9eaef0c9f72c65a3307f011cfd0e34b06bb0db6acb6b31b03e462c866c79fa85f7cb88d800d8d36f498472a907a88dc8e043501228c83b86853e16cc0830643c60de162516252642e8a90a2cdb81b4c5706a57ca579b3164e9de17ed09126d67125d80e0d2fe8f155e0a30d0b2855a855dd62d090b63ab4473135b198124da747d1cf4ade16684fefa88e1345567cf030d6c26b14eb865b7a6923414d7a296c32bbb72d04bb565478659c2ef1ffdedf95ab2919338b3c895185f521363c43cfd67e3a84251b3c43578ec5977cbac9ab2934d715c83559960d6f1544277e86885c673a0daacfed074e1b1079556727e073aac37c1b8a5dacf875295f5e8f3b6e7b4e80f5d408aeb36ae25be0f22d5836c706a1a4f48725e84ef6000222b78032faa58e2c3e48a673bb249de3720f4f3b540adb483591c92eac0c6c45cc2bb42c152b7d8b7b29c533faccb43de6fff684560bbaaf5da4b4896e39059192033d96a75754339a08c82540e6f0b566c0deec0a554c9407de856af6e26b964213997f4406abd87bd511a7bcd989e9e95bded252305f72ae950f88c25acd07c66d577d696fc9e95c61bfbff0561a6d49eecfdf7c93feb86bd6a1564e33931b2b5cd995deece32f1d2fb77690d44fdf1f26a837c0dbef22bdec30d1cacac41d452a30edecd31feb03c74a8dfa72c87fcd1ea27fabb18489f269ad5a176663be79104d495637db588959be620630049a60d6ce6aa81d610d99c4fa1609abc314767e5b11a893735bb2290d66fb2896284d4ab2af478d7e559aed9a9f3f52f72ac8fa98617aa5b391d699d89a71b2b1257ee6dd09e1d6300e8ac24e4875892c1e1bfcfb6f106905a97a08c5168344d8b30d6d344e1cb31ae3b0b37fc6de01cd68dcdeddc5e1b2967f3d8361557ac9bf01c2be59d322acda20acaf47e3e8c86a5646aff4bb56b612ccec32dae22faf03836007c93fb0cb72d4e959f98d4be550eb00aa27e9acfa5bd431884434163c957c13357b8d87a42189974ca5fcb423b2f49ec9f0c681122713ab861f3e539b27f2c03c0814557a3eeebf9fa026141c424ce3f72344189234ee52fca1733324742b4b32d733e5634a594e85d1714686db4463c133ff49690881ec5369258eb29dbe9e5c68cd3697dda4ff50ddf7a2887a79888c8ec51e36f21bdd6a41a08c9288b6158afa1c4b7feab627e1e61a5ed614208e3ec08c77d70159a194be82d37c683c22a5b7796c1d83e532cb8cafac33d14d336777214d4aafdccc1da380f1df3e620411dbef599d16b3ea51e6f2b614d56e291bc008571caa11503b7588b2ea7b2928b9005ddfbefcaae8d294e47efc79d218dcf472ad60837850f93ff13fbc6fbcdb846efd65c9ae7dcd966237f91ed0e394951fcca6855d1f53f17cc15ba2522ff1b77ebd9d6b1044b38adb86ab1d92372562a15a6f69c91da36d563be90ac271f00b8c7c2d7ec183d88747bf71fa6f1fbb18c060b163dc27a1ca769d589c280f589c956702241cabbf7e60b39382d51712fa236da495384c8834e02932f619a4d7e6cfbea1dbb78d5feb2a9550c5297c055131fa46cc55f83676dc36aa356e36e59bc68c418c2f9d7fb1b3a4aeb57622aebf90c6c5a869a4d4bbebc25996abcd80d7be34242e3ecb79f40caa6e6e2c5fef7ef536b0451a1b7586931cd9518643b7cae8398d78d1c6eea0ff85311691f0d02c3f4f363edc076434791f967ba816523c6c36328122cb2b808154c630a1df3f53ade796e953c60bc4d77fd9bcf05c25a33dcfba3b11fadd1d7d8e9d638de50ea7219c967975365dc50baf2da489207e7f53b0ab97f0323fdea52ad3821f43990ba4f102a6b61afc06392be6e5452e76496ee27137f34054503ac1537de10ae280bfe27883ba2930b5ea1a7610b9dc7faa8a45e7ffc282847b7bd585d7f6e5679838413a17738efb5e39496b6367623ff2c164c15582f7e5bea857262b0ff88d1f81113c513c2c7a7d48298b62d909946fabe73405ca81bd3eda43be4b97774742e82da4ee656878a3ece36cbe35049ff575367f5518743bde87e046b44252559f9edeef6196eaecdb8972dbb0b794e30a3d704f11d81f5e6d5de5bec531bd21f66131307026d0d4bed91554c95289c3919809621c7e5381e8b9fc40f87bc556eca654958aeecc007a8a60b7a036079db5bcadc6f528c8d6c7797c5787a13dd35a54d8b654b7de9e23ddb13e356a3a0394409627718737b9d3347da3c9fd6ac4ff3096e9bf8d0f8482155f61baf6e3e97e290fe7fa8dd3617d84db1664cb10ab181c92a2de48a3c8db2b20f4c6f3e2b3a9187b947f3cba2130c26095527da6689f442766e5d18509ae4dbeaf847e693c1efd0b22bd79139a65ab185162d157df699f84622e45c78f1c6b1bc5fa7642c3fbc33839f6e57f76742a4ffa662e783fdf78697ecdcc38cd137c69937580414bf7c69d9d0e7569465d0a34f65fb3ae8865fe87680e951779556351a4c78f4c7f34efecd25d66d16ca4cc451d55fee525e3c21b5e8f0d3350d6c062a7b290e66647fd20d112b24b50bec8a6ab852c72881ed2eeee2577750cd3f042982a3c14018ad7c52863e19a672d90a8772d3f29270e1fa9a94f7cbff306b0f4ca6161f7038305b605375090004882b68a90af7d23bb0e317701234b6754ecde77f1065445ba0cb7ba48e8464c1cc920ed731252a08a312c86863fc9bcd8dc05a55497716c6139a70d6358c53b2bc62533dedc0142e1b74c6c6b54b2274a347dcdb4669e45780c563695dcdfcf4cae2daa77b4005581d96db14211b64edc376d160428f5510f5084b196c53b3d7983101a07651373bbb3dd93fd7ddb2561bbdd2494e79655f55a53b732514eaf72792a96a8487a6dc6598e85d143724088ad1e229ff9f0e337c7ffc0e5b69cedd3dbdc823ce18588398aabb40d894a963249f3e597dfd7bbf33b2097d62fd2590156506707a655e155a4936d8167c17a8ba495d377f49d963ef72af0e99230b0a4ea916722911065482858b2e383b0a7dad36b9a3f3b1fcf9b856bf27f25a61841898a3ce04cf1e45134afd4bd962951e5d89eab7b0d659d4dc1188695dfe715b5af12ce894baa87f4af0241a47d66a673478b85a4b145dad8ee30f94f25f727325b75b9e83f1350de81d59049ce84bc9e5c1cde85b676fb921d5aa3008150e6f0c5df8096a54aa2e57f8511bf75f91dcac696d670e845c7cfe630902d1498b0f943b0d81862ca29a4d41343881b4abf5b1e42fb624d7d06c55c9d02973b861b3ec32763505a87f7083fe2e1f6326f13a199af1d3effffd2cc70ba6b33fdcf8a2976a65d4cc83194a45c46f358a5e60e3e850bf953b1df1837add038ff02cbbb81f52fd788e51a783580f8ea3f4531a7e546df81e7385a983965cc258936084fb3cdc26a9e12a91209546ef9fe834472881a8106c61dfaa5aa59966eb098ca05ccdbfb3b058ccad80a755553252bf8ffa44cbbf37b7bcceefab0074252b15f6c2ebd8caa41250689cd4435cae1052757e6cad20195f9bfdbe49069e731ebaf9d0ebc3058c5e5a874ded923fc06373aca54bec74506f9e6b9c3a38b1b6c8ec420d171f407ade30db49f55f223b134fca88685c1242e1173f38c49bb94f2e0c9be012f96fc4f640caa0064ea2ce24c68d5d7efdab2e4450ea66476582e5319e7505eda4b103236f3574221bcaa3921c5f0f0870aa37efcf765053154b88d8d41a45564a6dbf6a744d2f0d242d4255087b460990124f1536b107a0936e28eef62ac146ea6cf97584a55b6325fa70df6167ed286c3f0c35f5f44dde437b0fe17f732d1c84058b21eebc3d676e306a83b2ab8cc1bf7aed7bc779a78257c4f21152e35201ee296ed6ea80955dd3843fae1c7d9f6aa049064f39ce4e72941005939c284923667d2fdfb163237610803bffa0a4ceb239d7c7ce112d269b9b23613a8c439ffab8d6d0bcacdb82e86c3096278fe68a96de7e3ce0ad1daf2fb597748b811b1d4165ebe93164e933e409f487489efca963a4420b6816c1fcde5a87cb624f71525cfafa759908c8ad1d4a10c9cd5c9c520075f296248b6bb5391c3c9693e6405739b0c55941ebaffca4d562e0247517f8b8147a05b0fd4182d855a802c5eab574ec02eb3b6a9bc05161040ecece6d0c44a8f9baafe1f627192cd3a3624762bf2cefc05b15db44119a61141ca5be1371984f2eef0009f7c5c7c75fe8617e3e900538f9374df7daf4bd65313ba77867df4b29fe7627c64428688192ec32f24fca476d76b19a1be8c434dfabdd704fde42dbe2ac32cefb7fc7247d226d303a7c4db309b3c394b93d286268207ce616192372c0b575f14942a4874c61fc21a0c9e1ab7620925a62ffdd19a52c056ad9e576c871a587b3a28ec8a3fc3d30e70d8bc04078dfd62b74db52467adad8b97501a9de0e1af51a7d51be67366c6284b72346f355802d74a43279c3d2b568f99f087bba1d01f13b8c25b426a10fbc22e3892420fdeb010e43200c2d10b2d516c9c73e46c893bd1442965565923a475cdab98ae53d0157982e1ec0192df1f8feb55490962c1679b132efda20d3bdb4f0199b53f123c1005febf2f7156aa1974800370678c3d19582e267ce4232e16f607fa9c25a19fd957bbf6e521213f525081ed43d7c324925b42f391aef1c465f43bc796161723397fcc51e0c2fdd1368edf1806552108f0e858aac8ca6a6365096b6b3b302e1b18ed07f4b151d8fbb8aa3b9bc71ff29f03d8ac6b21ae938493b368c73d2e12e47df6dd6e8d2eba413ccf025e07b63829ea51252593f2b07c3bd5a5d306331949a8fc3b82f833461b8bf61d31f1cf3021b1fdffdbcac701f9fc6bfdee8cabc32944eb3cba03d1061c33dc95411b708f8dc9e88583ef728166fa8d005daa4a95d688cbf40d8bd6718bc53f2a10bd5ef5289d4f0c19d00b457bc293d30de07be26e1efd3f1564ae5b627e33de03c1ee6ec27f56428cb32b44d0edab9294c9097577f81fb2852ae4e87e32aa93684dabcb0a2fb41bd709ff9faf4929e001b42f7154f691648016ed4f0f9e1382df304172f367de55bafd2229149e64146209494c7a463dc5068fb826e5ba19fb3b25f25082bf084318618555e40bd7fec95e7bb741bd46415195659d439704d51ec97bc5f180db09c3683ba951c30165f2e38a055c8dfca2c52f1c1061e734041c0e8742bfd8ac518c9d07cfad3c93571772367747030e1411d8ab87b2e208aca1a2c5ec9e8816a52cc30b0bcb4233ef2fbfd6c4b32109a83e26e814b91a46b518c19e9b15f4a5e9e49ecec6181bafc06b3082b6b04f13f9a28b6f05dafb8e77e7760d3f4be0b6959d8cf795924269f9d0463eb7fcc7caa22e385d5395df7f1b631fa489915de1571124c6557223fb57137cbbd8a28baa6c6296dbf29771126ac757c4bb83ee1936d92c0a3f1f57d7561bcde9700f784a4d5e19c78f08a605cd36bf63260297ea77951afa31fb7d462a68339541af225b9a6a9b01e039110ffe62ab31cdf34a1efb29df0d0e4899e3f75b7acf54ec29b4afd125281f2c2dc0d09663cf0bd31a24c533c6865eaca9ff3b465d72ba8cd4f9eb9151a9fb485361a0ad8c2ceebbccf674d6ee994fc24a20e0b8f35d3a767ce0b39ed4cd333271a81327c8cfc02d7a8c51dbfe1760ec6ce9c56fe3f44f1aa77cc2cfdc4d6daa667ccc5069c7b43dde182ab545c229b4b87d7ff871610f62ef1000d381e15697b2df1eadf17b2debe175fd76653758f007e6019fa90404e5fcb74e08950aa9a2d8db7e2002b6f5f90a2aacd7d6fb02c01f1e20e520fe87da37cf6a9c6e355bcaec3544c3ed1485e956f7b0db00c5a12bed5e17cfa53dbe4a5fa4079e43b9fb47ce9b2662d1d67a1e87296b8077fdc5d774366011d43fdf6613783edb55cb791366d354300adf3858e127520208078d3cb2b6634498a1f89f906f57d033f02bee313e3e8e90a6c42babecd9438136197371006e2b0293772f06a5a59b7b7eaf167268c86c80c0676b697ca4d9fb49a876113f7b85d0d1cc5cf287c7e69ce6e5c9f8abed814743dae41e59205646ead531c07ba784b01b1233020492464be34537facfe8f1afa32763677c7d73d48bce1297633a0958530fe529bffaf36a991fac7d78880501329f6f0fa9ea69592112dffc196187e6ee2499f57babbdb2c71370d51288884746bcc51ed7677b6572ce2c4321f2dbf91b3a1950c9b922717049ee03314c9acca842ec648eb27dabd387d67a15f03052090c2213e0714a2453cd48e9924fed93bf434c4ff8523755b26b0de2f570133adf1b5855488630fde07357c6b04da86f91f9e9d2e2d91e98afba071501b8e5fee42808c01d65297d67a7a33b3c241e0bbf713a78eea20215c997af86df6a85897ee10a616ce3f900c874088f8724963466bda68d3bbfd21b4aca897ab7e04fc6954767fcad7c89d2c85ac555d1a4a3f8e6f78df89bed2188cb5e66831a2a391fe744b8b6d7064669301180412b20bc220102f87fc19e1217ef7b454a6bb9cae9af9283624698c19d431f909b594071bae0413904f434a9f2fa03e2905c9854c02de21f7e5f1f02d76a0f4cbe982105e58bf9d32364f3095bd32215af7c58bd6036878bf65e820fdb1c2f8eebe8cb0defee810da9e585d14dcfc55e0aad5e1ec8d01b9663a4a6a91dbf4e2930056f2d4575e0bcdae55c176a62b2357f3ca219a9c78ad0ae25348897927434535df0d1c2f0319976c8b7d9c085c7cc11c61d43aa24a65bd58cea0a0e3b40e4a231590247e1205a2d7d94157c6b6070dba52010b6b74127b13c1b80a4a97ff535b89b9ba08a7d6b1a8881b34fc362702227eac8a7c4acef9ed24f15cce88fc50cb0627bb9706b8e9bdf47fd695030741d0d8b02bbbd2ff5b2445eeb4ed06e150070a41d00f6ee9ec3aff98962f7058638973c92f39a2a002217f208308e5527a2ba2225cae246ae0d801fd2477f9143ece55a23989056aecf277767c54141e063cb6efd9ee08900ae4da9383c7bff990e143511780d1b281a4b05714a046153118099a9b8d10bb0626e91e8e2bfd2cb84f83016744b294b15ad8ff0002706e85187a76183c6aa508af8e6b2e53fc3236d3f06cb9d5b154a5e67dfd434c80aec5a602c5a485ea5101025dc6ae80197ac16dcfd14cf98949d487eec5d0f3db9ea24116c50d49a97e86a8f26a615c506721547a68ca52860e5defd944cda477326001c50479180cfa3cf6838eff0707b5171a8b8673cd6091f987973d531cef7b2af6c5808f1dcccc76df647773df1b675fd1e88d131064bd51efc524dd8ffb068ca39b5f73d219047aea40098f4aaf275ff2887d57aca5fe6f1d3e01e5bd40d99d952c86592e3959eaeb3055462aadca9d26b032f3104ef79e4ff78c01bb635a78010bd125659d1c61fa0fe068c180e58f2be86f277338848efef73f73b5230c82d57eeacb5a5f7e3023633dab250b673e65b37f5550da4dbea6f47d2068949d472e6cf5d6b957d0314840e8a4fac2fd5fbe69bb5d088295c86d3d0943322451ca085d74c989bdc959fdef41cfb20aa9d47e903a3c72f160fc0650e246890f694b2e8f4b6665b47cd630163bbdca53d6583644f1c4ad65501f6c7109b94373d07bb974daac20fc777bdf7793ee0f029bfe4636007bfe0982b154b1f440319cd468934866e815522da978f06ea47140274ceab8156d931137724e429adb5e67bb67d5788e908c1167fe4e7148bd3564434c8e75969423793bb89f7c057b70a8d4f19215f2d247f4990513d79c0f712dd8f4ab546c2b681557fcb418d2d33c085f73ec28ecd17209d69d4104fac9d26a24018ca1b80a44e7e7e1df360db22d6c1a4ec72074a253a50443fbbc2c343a69db5eebef0c5f14195243d1ff40f58db29b34061bc081c096f42d4b43467be2e863e5476f8651566875424c869e0400a3ebd1c7ba9d766abe6849804dcc43f49bfd794658cf1978cf338cc4dd58adc09426436e1d56ed400b1b9e4fc90050e89b3c5442144810b6a17f602f60a3ead364c804aeeccf5e7d600ede40b3df4515a8bd1d5a74c8d1afa4dd104f452f0d016e24049203ed45023b2d2dc099ae427100d3004692bf56abf4f077edcc4e62495b4cb7d7fc3e849f7e878e792d2dce4a7e0afc9df0be0638f00e3251cd3d6a4146a64e209ba39c269355b49fc18514def786feefbac4b4b0c30b84529760a8a756718bd5f4e916371c3d0d8d5e7d33826b3d3a999d6d6a3b9eebe2381bc374e25c4da5967f3642c89e7554aaa31582e823474c7af63e5cbb87c389e43129756a75abf2e9e849b9313dfcf37d6121591972ff99ac9e9a79f9bc03dbf9309a371d8df63896e52a3c2fd381243975755e525194012760cf1244bbedb1b158296ff8ddb2239d31f4b7c8e62a296c2c42b3daedd3681b96f30168fc885fcaaa116452a1d377303ce72502c5eaaf3d56179d88e50ac25c8c43d72d2133a2314cbfa8c05a145f4d1c40bacd04205fad6ec77efc8d2fafaf202d14d42ad5577d3be103076a1a776f8127bcc70eb924da620b4d8867b5c053a13b218d6c57fe62176e1758e5ae8244824f89bf8ff7c49f211cd33c577d8990da5da061060c64692041509be4f0afc0212cc16581a389755bdc55e3743260f17277b114d6a9fe9597e75e5dfd72ef9889dba9f3cd03d2566af135e110d82645f8686b91469053ef859d9ae8b87471316edb5f10e40de600b5c7b20dad4c0f8f4e66a6ac7fef90d0b36de7cee8dc64cbe83a8d196c982237de2122930b6fc75075c378c780b987c6f7ea77b876a9d2b93d27ecc649f12a5b0799f138787a8e37cff8d6454d8ec7478c846e663f4d4f2f6b5082f8f5f7bafea33bed83385daaa8722e48ca7d235ab75f522aef4d45712f8f6a3500a668ce1e7e73628b2e20bc2ffdaa3da8cb7561317485841a379c5244c664353798e87117057e11f94b523b1d16e7113210549da5f70cc1eb46453b016287aef02a5526595afdc29d022bbc87b4e3317cb2cb2f3a42b4eb3bc6a006660a7ca40d2b1c7c902402f58b92fddbc8dc7374cfeeb4d4bf361eb799ffb403f73ea3fc0f88389aa46e0c4a675177d1fd1141f1af852099e51fb39d21452ef9e5bf69d9b064fe85e11f45ab533ab31aa8f4eb414c0b1836f87fccdfa302eae4dd6bfb17e07c69509d846dc2d4c7db45e2d2339e4cb1742d3c67229f2e80399ae7fc96c27fa0ff18982e758d19b4b110c231698f963a7d448148f0e57e6e8bf2771f95b043bf40c97249bc9e94aea8d26af4a7d2f3a9606b6c15de03e55d245d56e67b94d72425151aa689da39176f342bb3c6c1a7ddbffcc1c86d260bbc2011d27f7ead087dde877c0a1aa4300a05a8878f08a4f1b61ac1ef21a35c4792ee151ffa6687bc79e3f616d35d97afde317d9f3b6df708a23be2009d8279567db024811e5bd5b9fcdaf7e120695fefc6471abfe809962661e23350528c8c96557e4a15ac5c483bd38cfa50aa9c38633d16c5576b25b82094e003863e3341e50a923e5bc07e356b9df8f578316b68fa4bc498e5984bcee3c91129aac7b8c9d15a4ecd03e94240b463be748f1fc5704096f8316863f1285f2afe9e0aed0359b11503c6166d92bc5abc9c116985c03581fcdad385638a6098320972f39861063373d3c162be7d56d6730251e8b849cae765784460b69001439c35c2301767af449e6e07d0d6423a8bebb75c4b1cefb1ee45136bf5633f1327707ed01dbbf35d8772711d04fa612413245ee55d3c586f45b92c80a1f355088bac7a6bbe56b7e57c91f0b87e77529c4a0af456a224f42c82c3513de3f4f0041e3f7e798b2b900323d74adfef1ccdb75d7c905cd93b2b5f557d53554b645241862561408ce927cf0d596a201faac5cb4fc1ee1e2e8df8f118e72b2d498999987c29fc4fa2eb423261e894da4c3c562b853aa474c390761ba37eae3ce41a3924e919416744a1ce63571d1c542fca36547ef46a24bc73a1b72d71c00b6074fd3b92cce2e43ff0d3e8b75d66f0808976d8d97fb31b5f509ae29343221e7d2a953b656a9d8cd52a7af723ff3ad407cf9ba28356ff0e4bec3d871cfa62bc72452e2132c6dc4987ab624fbb2d90e9d1646c8b33943696d61087260ad0eff950baa3f48d20c7891868a6e9e73f7aacb348c93ee0693b1ce5f42ed5023c80e4cb741ffa7a9ea0b9693122c42b205106076c127320db65fc1ec4f0dbb65e14d2792f2604f8668a8c6b76bcc34a26312888070cd54df97364e0aba504dd063aba0a1b5da1d028ca8c71ef0df4351f95d42d1181e3a6a75cf9c06e2d822ecde8a172afb3d507534887a32f2598c0bc3bd0ec9bb7dbc83cfdc1b3bf5204ccc029f7cc985efa8a50e17ee752ead059de476b418c8a185eea5158d66f191021dcf176d7c5727674b98a1713c7ef7f5907c17e392a688543a591ecdd8e6c25df6da10d90c8182999fe6d3db3afaf54a278d7e8e33d5cbf803f51bc78c0616a422eb93ca2b013410198ae3a3b69b5c6235611783784904d3b65e60c56cfaaadeb00abe7577fa72816509c1b87b8756c07dd6e32c78acee4e1481057b802eae957152398954c3c12ab4b17bed940c9cc80e0172eb834f4ece169370367265818016184e0f9c2409462eca6081afdb760e61e789f6538ef0c1b440ad42abc397b1cb91f4827ba264deada3cc57b4fea917e2813ad09f21214121df22f7b473255c3082ceea2582aa9b1f68badc5829bb12c28ef7a56a7533514b9351c1010213148e0a5b916f8083c2a3a483d329b4778d7d87bbeb59a22ebb9befb3ea5150423704d34ca723304216a5b708ce13752de67eda6ef72a32fbd5ab3b2b1ba14f57931f92a82a608f0d93e32d191a3f314099e3a3451a2faea38eeff292a6ad1c9a146559fe0d3e8737b94af5032fe94f8851e531b878a2f5915cac1db189dcb409491f4b74c0ee70de52084b51a95ddf909d74dcfcfd1736fd73f5f86bd9839623288e4ce7799c3cc164108b49519ba2289e54bd70406598bc366c1d040d1b6a1000fb8fbc62fa5fd603301bf9a3eab92de6bbd1422bb82cc7194ab1c3bd3ff5e192736fc02476b577b1de1f223046deb0dfb8fb8fcb46da1fd735e6d93c5f88229eb0693b0802ea537a6020c97a7bdd1d9fec88e4731db0b4a80851a90ebbea91ccb12d99bd61ed2a4eae98075b0c829509c5c275bc2b6bf18c5e2e61f4b509bd703c5bf5c2e824aa28d8146b26a0f8febd7d035951d186180fa4a90c0c342e9ea8f15be157e36f1accb015266ba2db316a70d89275141fe59b9fbd459ef07b35bd912031978f06bf3d683652824f012660431eeba8d10394958a918b9b666786d7aa807fdff42f4d7b284180e53e034a34fdfc7188d4b90181b8e55de3c911b27e2ffdc847130f04922344a6bc6ecf4fca8fb9bf728cd2b13cc854cf5cb23a331d24e5db6d1b18a2e304185074ece52ca6fcca46357cfb2c03994486c7c9ee4c7ca10f3171f08cb3d956bbbb0b1eb382b1139bdadbcd91b6da449833200eb76d481a68b1b0cdab04f1102a63235c9d6a2db296a6accf666357467e05929b3ed6031cbd84a4b2163e431a70cdb8c7e1690a52884096b6b5d2b5c782d816ecca6782e495ddb25a389c6ef7b8ef1e3311c52b86e667e0b821ef4389de3e3b43b63058261b53e402f6ffabf30e180a26a67f0ccc1cf1090182a7fff58a23728764f1a79c93ad4edfb4bb5290059465ae846275bd38c64e3035744baba4e139b39bc2160dfe85bdb55670351ce7843ecceff7ca5876117932fc19407266bf4e5923c0c6be3e3bd1599e0a6ba5a2a3d2e3b81fef54f37e14789eebd3a2b54929812a18a49cfadba6547da2707e8ee714f1de0d14aa30965907fb88cece408841a192c593b8fa749d3e378e3c2d13ba9d8a63c24144428df2acd2148bf9906654598f7b1b4b182943614913f7adce4075ca6c6c68a358ba800e1f61ed820e920735c496c7c8ebad744110f1bb9f3aa481ac0b2cdd804cc1862798a3888f06d378432ac12ef035242b01f971bd1711b7b43367b1716fa055f6e3f46b3e0434e6d79dadd5ae3893038d179b1e3224e4311cab0f35fc34c054a3f009ad56122eb8df82ce5bab09ccda755515c2df8d1b6553da9571ee0a5f49ca45b3a62a9db53e7bb1c30511e0245199e5d7a2769e939b62e7fd50f01432d61d89adfb094cb050bc37d0f0a86c6dc318725833921133c01fcaf1a1c4537233e406b805de2f1dfa36e32ee64e0703c09907621a64e8b684b7d1f078b182d5de6b0ed08399fa33890a3833322124f10a14608927e239f8dd0141b84fc4f0f4047a99e73c965811aa7a716788e0bc62e8fd505b64ed37d7492b3309c52b451064c67c19539f434b385179492300e931c434df5ff4cefb36db62f005d539bbe3ee31ddd2923118124d84edd768bcb7e990be79963da478e85a2ba0eb3b341ea50cb00c09e127fda49d27da5eae913f702221c08306cda21486bb13ddea426b328697283d42befacc7553b2287e819d4c11ba1e662b2f5086fe2f8456034a7e35b2628e27fc264494561652d6cd5a60a2ce162d4fb3e870c85e21478867f253a735a915d0ddea44eb424082674b986beffefe5159062f4f3a15dadb94432ee8ecced56736a45a7645445d627cbbf3bb88ed44fc51ef3e29218ca8d276c0a0a513f63f810c272322c60eaf56aa34c3702c85433eb4cc388c2c4874dd8adf1c9bc531c509cb865bd02173636c3b3c9ba428ad8edf7362946123e477b622fd094ea139303501239b6850b03932d017d6208d5ab78c2c055b6984010497d9b7a756687a9fdcbfe80bd3ffa1ab573cc9d2c98205129c70f62b9353bff94b0b648ee55a8e143e50d6b5ba275e327d8af820dd9e829c7afb2d5778d3f1cafd1c6606f509435439e8f5db5a8458cd08f9a36fe2a7cebe22ac12a706c56d9a69b957b8c4bfa7d05ff8ede6fb21dcf1fac160fcc0455610ba509ac63385f2ef438d6f3ae297fe918385b6551bc14d563f3f767eba43f5794d7092718704cbd47cac91962e20a9750bcf15f5a66dad0b41508322467cd0349d04a5e7530c61f3c97c247a533effe03d28cac637d18d2dab20c7abe3516b80eb952294a41a26fb3fb6fbdc231298a0a82f3e08a8256ff4b828b7005c38468d475cc61a8f0a78b75a5e396139ab1b77872ac3c1561373733f60b6948ddcaf869c6edc26bfc9fe0a9d9566bc7280301498aed88f54d1abe5838f84bd36a02b7509095a51fa3c3612c37f4c5278a5e6b3f2609588b6ad2d165f15cb17254f8250c5d02311586cfacfa5dafd0de5948ae3733a503c9f9c7ad87b908ad63cf728189e799566c1f5327427db84d03c13597e217ad9f402fda7cf9f0df0a8809843fa8f36da40f22d92e3498f5e2cd15d49b931a79079288e4c673d9143ce7428e66e9f1d0e05d660508815893b423a0ad574c62cca54a36b17989e7b71c201cdd5f4a9beb0341aa50769b56020ed9da2a9f4bae2e3e8ceae097e9da0f15be5b74cbc604a7fd91504c2cfdf12f087b320e553227848998e85cc892df762b8057deaa689f58d2251056306001c073d7f43ea6f6bee5d8ffe680e0095605c4b84ecc590ed284878c7257556fae60bdf7e01bfd598f25244b8a021c3beb735297aff2e0814211807c38f6e8a10c72d62d65962ce7f6c23c34696a7056397cd39861997974f86d03f08558392a62f0ae882f1906a6a07bd864b67bc7cd8fff20ce78d2aab5fc12957c477cb075e3f7df6451f6f0e121eaef84b377a894ba9f5157273088bef060cda78d704517ad0efc6b25df9c7aedd5cad8418c1d8e44a7b0ee466d5a305babdab388b15efdcb089647718ff9b933236b6127bd49dbbee2e80b0643832abd73d7e00c833fea22955f00fbd4871bdb8817164d5a0b234b7586d5d712c87d64ee715cbdc53aeb86dd22a28e9c2870b715d72a93d3ebc2d224809668bf9a275df2456ebd476e6d99b6bcf9886e017e183e1823faca8ded6ce1423c8f4489d6a8a78c0d884d9a19b377b5a6acc208b8a90f192684b0529a796fe2b7dbe9b991f5b2261f7316d89e011b3f448255f1d7b1c61f0c0afa33ce9a3d2d2a847db3f565fe978423520e283f2160298b1f7384bff30bddb44dc1299860b8511f998c5c00673a52982e44551ecb9bda4fc7a34037e6a69c6ec14da57eab423966c0ffaede2a9930fdf49eca707082595aa3b2da90169a556068a8a1c966e3b2a427a61069a0d8481a9f964ad2ba6949fde5e73dadc7b82d61a81c53d6a15a802132a79169c0a9e57ff550188b19bbedead372c0012f5cf0922cbaa82dcb63f1c82775cca334edab5cadef940046bfec5be41e211de99858628a75a28f7fca95097ab0790a7f3a0e1710fc06610ac32bc0630272757b0375cb91079b6c2ce3608377a5f8477f960ba5ecbce265cb7794dba20ca83ad80d3ec4976b845c7d02f2a4a3fbe808c0c10ac3cc7bfca45cca3d75cfb038bdca58f550d8f7e03dedbe0d1796491765395fb28a6542122b618be62c6e9dfbbc2331c351a10aa7a56b590f1601964f43395fa7051c70280ce7b0d1c3c4347cf1b70e2a2b2304982365bea2bdadb30edd0c5e2e5dfc1193bf96eed687a4e30482ca892e5648b4dce922299dc600ddc8f0d5b26c1cdb2d16d8b5f44ef37ed0f8136115c1c0f8c11341595db76bef28b78de3dc6254adb08010ea1f46357c35719f61a231cc27cce0ad0462035662265c9fa0d5410f77b4816872f6b3e53725deb8b5cf23df669b5c9daa166ea14dbef20634756bebc505cc25545a2d445fe3073b2a8b54ddafee12504c90b62d252591a979902fec37a179c3f934d289cf97d8cb7d98f84102f2500f3126f1f241556c8940274a993601fe38cea5e14f19672f174ac3aa7a343f1d6d1f4fd0311a3cadf473e6db35540fe3a2659d478c197057a792bc64fd93b98d2dd114a9fe2498d11482fc597bd0f360fdf6c6f3ced5a7d704e8422f31d60a49ba2fb591d51fbc50a2f97761185f564007b736cbf216fe4de4217948b8cbd6fd4dd951b45e57237b3993335d88999cde91300120b2c3f5bec99a9c042af2feea8e6d77f548f6681bf8cc983ee141a4ad986f9a89b0f8f769a89e997197c331cd08fdee743aa4772db7ff892baecb94e8fd9d0fbc6b076e567734d46c140a092deda7a85e09dca74bc62053ffe2173a328d12f95cf911a940736b9230eca1b8e60b01a268e7257ca1c1a9f71fb4abb6fbdf51bdca9de9b4fe7523c979cde0a23dd33fa1a8f58cc7b6f8cb2e2c06dfeebc7950763595a12126fad37e446a74eead063a4d3d849ca5908924deb7d133abd1c615fd963bd070250d738740c77d2cc6f85430d15f880420836d7c4e7ce813c9a03b931b5aaf6226878c2323109655cbf0b2f30775848231183598c72f151bcd6de4a3bff11ca81025c7f670a1be60c3152fa3ec260f9619522dda185408e9bee0d1153ed9c2c6d99c6c80366ca6b59240883851b3c70000a59be2073ddfb556cf41a5df1811024c5c9ff51f7eb5aa3b2ee3b0f7cd3c1f153f5d8bb639c9f421926269e6ad2cff4665158022f78dd88b2f1433d2eb33f6edfe425f9609e4c0c59f09c15e0b49de79e4bcf5a44b1325f6d3cf93500fabed876a8e709fc7dd38d766f83b1f271f5a7f1f56073dc9fbf2463b3ad73f39c4fdc3e19ca2612eafedb51ea7e1ab5ccc26cfb5c00260773dbb3b6e330a22a498fe870a4c58f9e90b8bb92d48b11f9ecfdc0782f10fa35e46309bae709fb7dc25dd4b8dd9a5144d7108fbe5d8c48716fb84098d123f764296609118a05ec4966b399c86cdb5b5561fdab874f4c7fbc8e0567055bda7e27ad34c246f38048bfe5a14eb8efb8bd56db043cf0fda008947b1527d4481279a1e7c7479c1450419efd1c3b4433d43eaeb87555d8a0e1b4949a4be9de122f94f033abc113ddb27184d3f8912c139e28892754e30da4d33b3465a1e1821e13b2b8cc35cc1ecebcda229ff032cbb5ac7dd6034bf79187e42828aafc05e16d1023767c655fcb29ad35499e7346b235178e648e8444d09374505487329431e77b1a0a3be70f68e2726b6108dc6b8b13a0943a8389d687f4ad7414756b68226a592f2b7324fa4bb05b6dc2acfd66401eff219c1034392003ca785a981279e747437f545d9bb69d2f7c941b3252f2b177aa6d635e870b1042895ff6268c399850999b6875731fcbd65957f42042cc6149d701f386d556fc9fcc0c6537ea4781840d408cf7c9a5d1a6d0b812d18112a5844f74842390c03fdb30bc0a1d1c2cf80083f8d9da1a631beccaf1fb9e774781f9c7b9b4f73d3d3ae5be790a1c0c3288f235843ce47fa5b85ebc7814248dd2c454e6b399ee7d535c1458d976c272c8086ef0912a5d440afc2e795dc3debdbb6f9aaf7d909cf720a530d6364f2116fe95b4ee34e903ffb417bb8f8f103857d4da7147fe61750494e68e4bcf4ba3a8f29b043cb666a96fa6e7aa1e6c00813e0479fb4d8ce321d55bab3e2648e2ed4225b09b5aece1ba01b247627641f74e7321677a1ca770ef734abefe14ecb3d7b722b56c044fe00fc2f8750185aeeedc5526e411c1561324a15de6b8c1cbb5eab1482851c0766a50c3a26c1258d66da604b4e6d38a7c2375e4927d84e2eb25cb35aea70ac419514506282a6f5fd797a5fbf0c22c6132c060470e91db57438a249806f2630ec4adbf81fb918ed61fd0a5b2ad8f76de7cb6c727cea5987e13a2799dc51c4a5545b262d23ed45d0ae46a80a393acfc02f5ec0525a091e931a0ef810728ac5c9ab75a79a24bb617417e78aa6d218c7d0a75bb851e1439df951a9794211107363bdd0efb8887458bd3592fd6f3fb59fd86f20123372bf4d9531fdbd84746ab7e86c60f204f859a03a593f4fa3a46652ad36cabbeba596613c5f673b3761be5abcb72d1d599f9405024f76e7afda7aad9deea3de017aa6b11b02a1035db853415c842ca8380607ed7d6b37f675fb382bf03d12a40c02047cc4383497295fd27be0740f5b0e38411bd2105013c5134a93c4bc12ce24da3e173bd172a06a276c47d807c62dd493c30bdab960331236e9641142687ea262faf88c73c08cd422c0aa7f8aa4c8777f7d54b8cd950ecf18467dfd4c4da99709ccd9ae51ad808e0103bad2849e9a93cc7e863a30a6fd96090f7069da29ada4361e7647bfd35a9bf5f27653506cf6788aa696b042e8a821f96fe9f5a4d20d4db1f8052ca6546247ba44da5d122eece27a6ea7780225878b81d6872ec493d2f62639dc1d80796ae895037e1cdc345f25bd8f60e1ee4d937d32c576cb3c160048fa4ad8b708c57b02db44dbc9384e305ca7f477582622ee68ed9fe43c56401511ae766f70cd7ce1b1e4e0dfa4541bc61590e27308873e82171b8c6311ce195744a70d3b12fcfe8aee25de7c1e6d8952ff4f53ba67a4d90e2799d268f7c7b26e586619168fafb6f347bee4c3b3b67fafa2cb095dd50cae56e657e4413834f880579edb293317a56b26e81387f9884d79a47f0e64856c075dcb1f510209cf20e3d448b80c75d71e8e1cbbc6e7c7bd2271af98e4c21242812d88d98bc0cf29bd7c705497b1af7797c6a02ed1aa02a53c1937c87bd4c5ff9aff2a308d5885b8f2e753711950c51e898df30532f3f751f5b1e73ccff8eb8a0462400f7b352cfd9a34bd1b4fd9f9334af123ec4544028f51c086f05cd67e89a5eeeb17750d79ae95369d2c23186f546e6b464a5aefc6f6c0edfeab4b83d4e285859c2801e795f69a49c43594cb5f9bdf0507526e9efe56d8b324730ec64dc04aba526b15c7fbc85b30f1cdc55490517c5661fe947e0c240439b81c962cab6646697ebbe31fa7d8fa75f81bff89b9144e91eb36ba253dcbf719d7f56c5d8276be8379971bb30be856be78d6282a215264b9683c6839b7e23194213d284fde71df6ff7d22fbff4e4a778988878f5e7869b6acb0f01c2a1a83df8376c016024e8c1d3b5280f898c1f7e256d785a2c055d48b0982e09f70a58cdca00969893ceafed436ba17b41758ab26c8de00f67f1f5465b0acf9930e0b04e5f8bc72301cadde22c932b6dbc03f3f53a1021b9f81493afaaa7ada7cfcdf431438239b231d83a6fe9a1b4395ee878b10528191d95b92c0d6af020596b860bd011692f6255b750053bcf1541be72bae610d775b355b40918edd4e1b8c204acbadd232c1fcbc7adb6be4963792986c0672e11ba8c2d5069cc2a3068b1558f6c898211dacc019d5f4970978eb22e8122bbb69bee281f8147b09bfaba4535de18a76324e0ff33ff8898a1bd27f49ca3d509138b980288a2f57933ac5da9357518087f48bd16f4b97a7cf29d2f819779eb41e2882f8822dfcf8185f930df0f200c1e5c0bc74e23926162cdb2af2ac59b8057fcfe7b6be34ab498b62b3d3274032c18b419369313c1999f1c14f46f58a2dd071ded9641e7ca3f594523fe49099a66caa8a2d01dfc28e986e11fe5ca98e93a9fbb03bdd1cd1d239db30489b259d21b73ac6cd90c0e0e2bfdaf938f25695c6e4fd82dd7f5c0fbe117b54fa0fe0cd225fa04b5450878e975efadc04f7db52101d79c4d009443677d9039eee088de0744cd286f3c2417c154835c15f14d07945aa7437edf3aaa48b9e58236d3a289f95ee6d77970688ef84f3f7a8ec47ef2307c35d6b4d3b66b6851a01a44c9f89527419668965100c02b9159978049afca029da0d0fca8f3af2c64cb96dd830dffa3ddc03340a2ba3ae0ff92ba4a004d17f1161b022c0fc6cea8c5e24707789bf5b5e58ac9407bfe302160a598076fddd1f9364a20b73cba354254e13762b263f01f80777fd459a0d85ca6f29a977a0beb6fb26b4317d44f0406bc872230ced75e723c85982a6d09f5f879cea6788a719f473a5af97ce1ed1a6b28dd7d5f13d990e0f42c10b7708f3d25aeaec06e3e71af75df7b520ffaf59f77c669b0c2d67b5b644f7f082d6a9c36b05b1180011c3cf7c8a2c2bf9f470dc8cb6b7b9cd6f5a5cdc35b5e3e2c1a15d4ba561467ea05cc7e47966864b7914d57c9b88ed5305cfd2028e93db5c1b1ba044c0cb975682490e8418239754e7262fbbf5656c05f869b191c0c457dac2e7cb4f894fd8bf0c302ca61a34fd4918b04be7ca653b9c3ce9b189a8d025ed1b1bcddc55b0da1467d9c837acb1e3cb8ec330a4e14ac324e97f081e5b09493d927e44feb79a8113e1ec20ef73d08ad16773d854c106b833cbf3b7e4319f38e28bec2eac972210d719b920ace4d54577beb04496e59a6b1a3d3d368a3c58e7bc7852a0fbbad7cabd4774c9654973cc2284bc488dfe19ba07b618df65cc762edc21c40d9f4c5c3d39cc658444a55cef30ca5540f5f2cef52ff25aa125d890bd45c9b4e2ee6631c9d10c811618bc25d48fcbe9090bb5392dfa32e35139b51fd7dae0713f3f201ab5e5063752fa3e1f1bd8b232478f120e7aa10d639930733b54951a96695e460a085388ceaa01ef18f66ccd4e92c71fbeba252a857284cfcc3a8d96cf38854336f019078b558fcc70a361e3e5be576323dedd94ecd28786da1057fb274bf3e51d8c5137b22ce5dfb628a86b9dcc69abbdd052d7af2cc5d1b116a2934b6848872a3d8b75f0399039a40462d0465688adc99054ab9e800b91b6bef8f3312d9d589a9ff15f84c5fddaed05db4654650b6d1d43c97a0a400c168d32281ff8a82750efcdcf0194d0efe4e696c90e888d81086c59e04c3f8d9925a54c02d75508248c215e59d21262914d44b86a295e6ee826602e3177cca0e05c7edda530aa3fb2783e2b54a7d40e9191ffcd7b3afeb8e9a1d5655c6b065a9d745e2dc9a7a9c501ffb29a702b7ad0730cf65c943ee75c696afc3adb830d24b46e36e66eb31936474ba9b3fbe822cac3a8158f505fd997729fe2e1abaf17781391d176e3a8ccc623efcec0b81797e23074332c89dc8b9b1b9d25ea8103177fcdea3f092358d3ea1bd31a5910df6bbf9f9208ded0ffbc47401a12c64d1fa57022ba2f4f7dc744c1bd27701f21e6237ce21c581072f5b370e309a3fd172275e4031302567ea8dc3d3fb2427592d1bb76559ff948ef7c32e6c6053bd2ee061e92f51d24f90f6992d6220c21a0e427475382c7863db1da875b1de58be54260fe389fa506939b2b5432e5a88c43a142df4bb2b57d334debada1d00e6a5f253e63204ecc0f1630af3185227efa060eb399fe2c7d6e40c5ca83830427ad73ac80985b1662ce769596e79be63bee0c5437e807697e00a6b0ec471a258cd57a9cec310d4611b7e519a794f1c7cfcdabca61abd7fb560103818c69403b086727790c4bf461b6a0c004556ec408a9b818a4193697e33e22e8e9406fe89327a3a72a3357077694f579c873522ed379e273360826c90c0089b128dc473d8b62247f15554ad566aba4fda298d49694f3d7748c006f3f09b6c0d430235546f28bc77bcc06c349633f6d505ccbbae80f2c1aa2b88df1b19898519b50d4ba0120a169405ebdbd35a9bccccd08da710e11c0b265bc1c1aa0076d5a461b506f973005dfea7a953a2bf515196a138c11c018b665bd288d7a2b31e5bdbc01c7c5a007c30c5f28c4d4f0ef341142a33ec402c01b398626da53984820f05bc4b4deea5f06ce4b2a0fb23c57a918eeaf1ec8131c7046080fb17742d8ecebd3970b963b86547f99b0f9e2fcf56b4ace3f17c40c601233acc8bf8983a78afd989c2ffbf985f3457217cd171235930548ee3c21d3bfea83a5bc0e96b996e3dbe1cde9b69a2db7407cdf763fce378109ac750f575ba09ec9a61b367d9b5415841c300954afe84756a130096a9195dd50b0d04a40ec01175edcede0ab261272448e110f2191f6181b684256364076cbeb81dbfd2c52e70cc0ac9478898c64b7071d52d8bb50007018522ebf20d6a56fbf78e906f31a14ad09d7c0d60bec56170434044564f8265397fa17fff571297e2238a96870ef7d447438aeb402bc1821bc0d897dd3b12ea41ca824c06c91d3005cbcaae06b526fefed09d0ef22d9e13dbbf9995fe7a8c391d25b0fdcee20c3dac43c2315b972a7d7309c465a49de92029ee14ad5e19e6f35a489a3d225cd331a046b1635bcef488cf6ff65a90a28e14a2962b882b9f49da75530975c2956869e5edc604afa09487068112b70abe14c9f174adde469ce76d8f92a020f7d43520f12cba482f30743717a361b9efec445a70363bf7544e0d1b6aeae13f3f3f2b9895384dd894a5b1032cb8d03140fb11ff6dd87f14f4c7a970cb99588b2295aa5515fb180624f2e439b90fdf786fbc39a489a0bd1abda648b78a062da0620512820c50f9347eb4b7b25624781003178b61693acda99771d46ec773f509d02bb596a8197223f945fb873cbab9b96228bf38327a29ea54e515dcda4659d77477aadee4b14ae31180af2e46de11ed108dcf57e869d62e0c74f7150ad0e92db86b2acb2043c2e4c797a903887054b738250c1ae49b7ef3a1560df33f2a92eb30d141c7a6449b4069e41bd0b8805c8252d6731072ca9fe07bd066238dc1fc4acda173afc8915b8154fc7e0e0f3411d484146eedfe1429139f3c9374bac30e445eac9ad7f0d79f29bfdf2d37501b7cb48fd6e57bd862d42200fb7a50f3db689036b2eafce4d21c8c5b6ecfa62eb19398359906f4d83ba2f79de5dc85569c27f312a35f649a3a80b69871a8f64467c8d78e2d245b9214b8b3de9b091c090502ec06bc51716291f04607fa0dbebdce3941faca816aa8e6a725e1b912fd57c610909e6b3195a4e651a0c29250dfc4369e523d2f9a0969d7cc76bbbb9a6d8007ae73a23d51fa8343725796f7d7854ba8a01e3f6f5c8b29d80084a4022079b6b52bd45ccbc37dcbeca8f47d577b75c42cd40e8510dbf723a5d2a8c94b704733667abb900b997cd8b8ec157d8d5f6d32912a2a7267e0e5195a3735a307e838cebee14494b312e0c12925ca88ed45e18cb300f6c97234a1203712a2fa6607bde2e09fb8e76832835faf204a0951753114cb096a10b1162af2ec4b0bf411844669c2ae2435c80c3616ff04810033ef5a92b14fc097d697723d670701721b77f665067484c11b78a72b0a69a2ed12366d8b72731df550b55d0727d0d0da9069c180ea96ff57bd67fd07f248e2f802e52fc998af9b5dc75961ff580780c06189a61c0c166a911c5b70ed86515bbebb2c24aceb36c05ef8da30a479051cdae2d925c24b93c31abf46731bc020be2380574e50bce13ddbdf4930a7a3c8fe4a08a533ce6c372287c24f07358b11064c4c11562488356b78d8ccfd9bbfdfd8dad38151e782d7ccee1e4111bc7eef6d7de9939ae47f892f5fad0c9f1403031e9968d9744c678438ddb8a01e90885a1a17741c38cbfa15118fdb4cc5b71a373ed596da44f2d61167f2bdb5744a5737f807af4572bbf140a024af435ec6859c34492c75b5005c571a9d0308ce886fedf81e139e7fbd2168e99741b9856cb562e5747f9b5b929f1e0266e252d3e627facf1666c69c487bc69b1c3cc52b98012554c82a1990be9ffc3d800832701cf91938d2dedf6bbec1264b702fdda1bd88e5a9513be03bfff97ca1cdeb094700821609fc446fcbf8d9cf9e1090bdd7a5af034de3cf07dd2dec92c2cd8000ac856f6e2ccf00242881053f439d6ce7515ef802345ddaf15eb681c31430d6819b682bc159c98b38e27b856e87faa3002f0255e82aa1448d3dff21481237ae3541f70c6676c40ea7b194616a98f82b30c9655a659a3b1141781c1311da112b3a805f8ef3e8f53da4fd506ac8d4fde6f907a4711b3aad0e2032f1d42a8912d57a1b8e1acd62d2ca1e3b98bcc605ff8a01cd6993d17d07abfbcce3c194dbfc4d7eea95c254f2f784f72202e4a1de6c2301c4a4040692155ca7936472b3a2bfa5b6bf6b5c12adaa45b061776df2619d61d99d62322319ad3e184c5bf1543cf3c2711d4483f0a2fc1026d0cad2c34adde219ad0a1cc4e46152805b5df2671db5a019d7be4c120892b10bee0d77df4758c1feb4e405a318c79c69c45e5171743fe0a42efb67fb630a0af2929bba7fbb371cb82c9ab60d9f446f9ca3ed18b0ce37e0cf208455bd12217d095208f91ec6613d2be979f6500374e6dcca3771b7ba4d6a7e7fa771296cae7fed7014e52e3a047520e096f92b74af85b88801b45a032dfd655f9bef79f6caf6425b3ece33e4210019f29a73c5ee8336dc77bac2174921005390700cf56e61b68221d05ac030233f21f2b69ad8572dc45fa8f271c6b41d8f19d97a6ccc3eb7c3fc26d1d830bd2206693f38e6ce50336921c5745f3d85e4277d87f816537e536c7614d22cdab77e13495b1acabf18d503e52e00705b7cea758dc21cee39553b8ecb2e5a9946a6e0c1e6c52a6666bc09af3bdd4bc28f1d31288af5f6c497ffeb878ef390796b527e4234cd7a46455468d0b5778d06b6858d22268b37c6e8f6f61a061b46923dfa949e1f52157c4b5500fe9d90bbc420cfbf037882f588bcd91d4477c3a50fa6703783c1fbae20ea79b3a9660ef557194dba378faf9a114665f5abef1e85e481cacb990e178fc5208f229cb60dd09bcd4dd50e591f1f3ee379c1c5645643b8c68f5d9c68c18d7f832278a2b07071ac3efa016827e505b5c40dd99f87fcc74471d4e68ef610333862077b8e07de105a43287327fe62e89b12d578082b0b040e47cf1c36e68c58a2255cb1de7df63409ae6ab65d7b442122a2aeaa9bfa55f2c35057d1402e747a35df6f588519922bc8a58dadb7ac2827418152d20aa2ee0593c85001edd6ebf5f8350989ded9f041f5fd05f64fe9e8064b31bbeca22c72af7d695ec86f6a31617d6b35e907a999e646ebeac767d98b9c7307d12c67b55465561715023724573589c162b9471741465cb2e1eef57f721562ae8c17c8766da1eaa51b80af8745d2d07405ca13d511abd7ce47a7c9b293f1b4293369ef2b2b194b7a1cdcf2dae4c243b5634282e8f01b38cc0727d8aeac2345c889b32f32dd895a85389a9eaa6e1731f131cc8d31649c4058aad879927fe5259838c9dcd1613d87cd6e114c8512912c4f1ca92b589dc0b6c1877d4b2b9ef8a419f4697242d792cd089a7b9b764ee6467d3d336d9874dd280150204842821c505f946316127815ed2571843593d38c7688cc3f96e5ceda1f9c31636e83a0175b3f92de7886fe53756cc0bb184e0fe1fc5af83c9706183d6cbaa0fdb6ffe908e6470243539024bbcec79d8dcda94bd8173c32a4f6958deb556ddae6cdbbaf8b3d98cae559cca71135f4f27c42883170bf741b1e667cde17445d6c55f3e369899a235473203f14226fc9d4be55c12d10efc805df94682d0c828c9885ee8b2520d85eb0bf8779c48b96064a23545db04534d38e66d4686784e66060f529c1e72ed01b4a000add00cc62dd96ded5930d4ec79e4dddac0c4dbd7cf9d82ac62003d489717b82ba39849ce6c2ae09b42c0c2871faf9f972fdda965aaa7e499cf79fb694f88b76f93aa27e91f67d6e5dcf6296c4b04bcaf428aac8588d336be42db9272b688d81a66bcd09d3380d28b803b1911d72a3fb9a8f229895a10b11365d77cfd8e56399602e8df72dd7f871793c0e2cbe15a908dd0509d5db4ccf320d7198c64db9ce294a6fc085a48bcc806d78769cb8c5c0d34568c4331b414b4da37aa209a1219b70a5797e4ef4c195a309aea254d054e7b1652d87703536c6155f8cc7af7b90fc4e3fa1e69c577a6223b57ade612732623a9015334b4488b29b40c96691162988edc19e282f1a76d914f851f0f2ff5ab6c694cd20efd3a501fac9a336c8041375db342271944e864b9b51d2846592d87bd20af4c7991b1ea22744afe6b71ce328911ea84be511500ace5276a034e5bbea93b66da4b2f535f8da5ba79af6d056afe83d0bdf40dc1cde8ec093adad33ba2cabf9744afe129412e026e3e3a55ab1768a681ab36ad66b1b6274688174e0693661819a755a2e654ca2ae5ce5e8a1e78169a92ff2adee2a5ba547ea83794b7639ac3d7c68714968510d8c81a66983e839e077db9d10d67d77fa20c8d36a9382e4a2df3a3dec2e8561b351d6bd9e9471010d014e9181e0603ed10f42abcd05fc3437978691755e0d0c7da2d34e04cfce2658da3c7dae7e01b668a45913f82bdcffb8ed3b9734b5b140cdea207e08b530a2f577b29a6b8fa83088f6d98c439f9f796d85eb7f3e8ed080f6adcea727fb758ee44dda591fc1dbd395cc3af62482f8fb7c7268fb6bb58705d0e57145fe0a80cc319e170048ef503008841aaa5071d8821ec4b5a53ef7012e805754b3313cd6f2b837c019a02d6362e091970f6b1adb859e9fd7f2c2af497b29bcbedfe450923df6e086175f31c2ce9da1fc3b542c33de27267ec5d6ee1a715327ae5d903ac07e07e65861a12c31b1d092a0c2397e78ab7f24633fe6468c51ad3c9a0f034deed1a3e0613e523894d7724f43757a5a4ca9d009ecf8b61d3bee8f34e7c9c0fb064aecddae80488d613ba6ad28cfcf3347b982065cd625d6416903cc3d76afaff8c0a45bb6cde2276ce4112582e5890c3398a1da685c283b12e0caa04c550f2a6d35b2fd372f196da6d53d2c61ad12eb2e827047d6871b8d4fd17f18e57766f46096f0dba973b096dac67086c8342cbc8fc60d755cdad5d9475a014fdbc7e38534422361b21d216bd244cfa74c991448403f5b16c9c3e6e676fab92e448f5d3e6e74893c395c0b7e37864ad8d718bf5afd91aeb7b1bad9aaf8b37effcbab6541a4b6c41a1e20e6061bd4636544d3cf87696185ccb027d2352c4cd4f5f353de833d8e90e6fcf577c32e4fc0f492e77a37a333f4607334e2728d55e5186b1f4f830dabe2161ffa8f24ffda834941fc5e8e4a5aa00e4e30e5a8ac0c4a86e794db3811eeaacc42040748dbfe4536216badf7056227bfdb43c85e5475c2765f75e3b4c42f5bc7f3dd73cb5069253ffb6446c1f36f5fc2cfb7edcbe38926e421bf8ad172cb91971b62f308274f11bb845e285467434d5d1aeac5e7f48cc881d3091622da103f12734d4e9cf6b5469fd6c824d45b5b73271a0975d04feae63c5262242062fb787777a591aa8de5facccc4b98a8dc4d8870609d66cf537f9dfe10876e6f0529c335bcac19911aff554fc26b14030be0977023bb87fabc03a7f55e5d470bba28ff30b8f61104faf28e72a85483cbce35c5e8f6fe3360984f75a80e83726ea521517141dd925bbbe87400172426c94d71ae94072a6134f4e0394c76c610dbf1a2a4b0ac20db72a6c6a232a6e8a3ad4cdab7a1d069efdee8d46dd4034fc442d95766a0b8b47a1d521eff7a57ba525608436a240031293ef467da0619b8d455292e0c0e74b387af1848fd7739b937a174201f499c5acc6de490e0850854fb313255dd0c2e9447d92358963698375b8b25d9b89d5adac25989d6283e42c70f0d5e46556e8ab25610f46d18b6f1194c984d9644733aedbf1e0b983669fdf142b2ab68c0d56d2a9f14c5f56e3729193e3653092200aaee1864e06670b29a66dc262d8ca94d3e61b93330c240a55bb4f8c18202c9971681770a421e6dc2e3d7045ca46444062c965b3aa285f21a97cf65f4be0af9f1486d766678a3db0a9eee500b49180affc0450d4af51ed08905d02194ecab54eae0e27618ef87467b8c0070d07eeadc6675f3eea118a4c295df5f1188fffb77a30678acf2370fff2b76fa10dd776495818c3510e4fc375c54933f3f0a8171eb96d4a618fb7a0f61fa7a8c7d516c71aa404b2ced2a6edc472755a08ffdb4156d5490d99c06b2c250dd2edb6e8245dc65186f4a5f3e69fc64cc0b07c900f0fbf4fc6f7fa8d5d52661fb4275defaa52c1374a93ba6886b77c3d215b116d1bef4a47ccdd54a9bf40b8fa28de3d7ecdd9720dc7acd107355b34fc4c454a2373269c7549342cd5424e8654a1b97b5d2a618c8a2197092b61fad3fe4d00e81932ed4c719505d083815fb946613b4a23862542732e2e2878f331383461350a535adae9023cf85f9afcc0ae0028dcc20f70877fa5ae98ca0e35310774ddc5e4a4730dc4b595089bb047d90493728b66323e25745a058c9c72b8928153a83e95be4f35132389e1b7261c7b2b1b3014858d518066d0241470dcdc73c1825c42aa79393483d5f97d26b22aca793bb8651a5753122642d61f5a293c4cf5c6cd5d4f2811d686b5d6d85f7c9624eee910b39bd736020162ff06360de51cbb487cd5aff7b982e77292523c097deb84c1915e6e7859331902764cb33a954c885f94f17afb07f970c7c32b6986a0afbfe211282ab8277bfd8da6afe1789e52fb4be7885b1d5770a48a031f13a08798693999608be82c5c0dd5ad4021bbe2b18990f9672cdbc096976f9de6e40ed4df62dea0e2cd1b2d4334c1f849f2cac09d189eea4b4cd908c835665a46a06583300f2a2c5b9e3a8cce518d0c9be3f57558cb6b2496bf136242cc6a3e8b19552fed81e862771827057511cbd5980d6d29463ae3fe1df6bcf84a8f92b5b44e4a84fc6fcf83bf41e32fa5d6397ab4af82245fc53a6ae54ed668d0a11e69547dd262ea2ac879fcf53c46718bbe7457ac3c432c51dfa1adca3c5a5574c2fdbddf8cb7dccb2c6688cfab7b35d75cec9e998ba73a73acfc182cd932389ffb34709732f41d1df1f4cc282f25daec3733eabeca0d1949ea00922dce3fbd2a095ada16f1cc72ecf6d2f0948a347d9183e482bf25835d63f29c7601b1bd3cb0a13c5dc327c8e657752e3d7415b3f595118613d7b0fec6c34034ed2aa1dfefe09f5df4776cc4a1dcec10752b9c9d2726d6df045d63562da957551bcf55a5a1c9de82b307be82aaf5d7b1285a1d44b4f3f2ac8cd21e29f046249e1fb621560454b366b2b2141743be4bf032ce8db4f39bd0100d5c473d3c4a468321957b69b245fe8755a205d4f6400519f765e355dad8ecd11a03dab25daef8d2c567118fde6b2267b6b4ee86e90fc3118287e89e6b7824e326919cd3473221cdfc75fc726cc0cc2081b4d7ac939020c6f8351684c4a63ba6660bfdca9abd8f5bc2af8b854724dd1c7f8e181c10d097889dc3904ddf085008b6f2c3af099055045762bdc9acaa482e3131c7efb736797014de1cdc871a6202febf689fdb419b284202faf012037806a2e395f08fcddbbcc6f41603c044836336c8c76c407993ec2b4f872e60aa7bff7665705a5d8911bf0aeb68bc52eabdf45e075d486f9a7a6eaa17d76be47e8140cb6427ce499739bd841e964277564b0e879c5b2d16c7377e2c11e589f74869bc0612342531271ea4ee2ecefce47a6a7400d7207cce53065df62c426c9c1e8d49f5e585b167b2f69184c67ba105768c46bd80b78497ffbc6aa68e69b8c0dd095d157fbe3e0c3c4140b61e242019caec51e3e14bed3eb0c7fc0d1e71939c1895aab6c1a1076cc5b639b5b988828a192e346773246f6f7bfe1cfd4272ffce9246acab3f8c0159cd63217a1a7a4e2aeea393f7c005581dd1a5f048524a4c1d8fcad52fbed9fe02d4a51c8218b3d38bbb7f8d1e3fdc8d469aeeb25f5963e9db1d7d51967dd988147551b280348964f48210d89746779ae269322283889dcc0cac1e9a93ca21d082a93819123314448dccc865ad80156f6fe86485e97e4e345c822221918bd5278eb2c6443851b52347f2181af15e66e64e362537c5df0ca57793e3037663f9136b0bcb5d3ccf74c861c2f49c2780376b88f85b0cb6a5380d664875519c18d233bb4d92cd81d1608ec300bca977a061f12f90c5a166f41557ce9f217fdb2afc1d2f06e6e960b5469e06a6892be9edcac09a1fbd588fcff9a27d1a886b3146c264cf4e6a7df001635e9418c76d84f358cd0c2c64da386fb492ee344b95aa451245463db4d0c351427a01911e4162e2709ba0a5a5efe0dae200c3bff670428e41576d5d0b6839117cf9ac197b8878961e8bc29493cb6110de8d2d95a6593363b238c958ce9da331e5f0439916ca964236c8d68b47840d4af93a1d03c9cffb7f3f77a4a638a2fcb1375be642a130073528bf558cfe41d3cbd7f77b3de457ebe980120507c572dc4aca6b5a6a9d66c1bead7fca6c44b6c2ca2ca23b912538d5de3fb2d14d8546835fb0af92967e3c215da3183011c8b47a6ea47ce44b2cf0641e980a1bf8877ad30e39af5f743293d457c4fa2e42c4707982b4f2dbd3797c2d4f568be2f05ea9c696b17641b5c36b67de3987ae3f9464e6e9c13a62c6845947fc17d49c5b08bcf8bfda25c5f36b2ef3d1574ab46c04b2f2083e6474c621a47d014af57f67058487839c4f0c67e4c1e784defbb29c58544d92a2194b587678d3ed78f190f650dda7d49ee694fb40468a7b70b32599b7f1bf996ac9eabe79482799e10a98cd89b0df1fd2ce3843514156c98650af35610c63f96a0642327571e347d09945466d3b98891f91722102ce1e8327aa1561eddf9118cb6722bf4bada9b9a3bd810a95d8e1d6aededdf525356c079f728a086ec24e25c97ebac99c4c3a38a6e2229872380ddf173f3a4b5c10de98e6d57e6200db9a084c1cc09dab5488fdbd776ded190fd11e04c0263b315d8f611d0327df2d71cc33a9a92f44606968d1dff702e7148bbde0291a94e6e4642578779c9c1df4a716828328b64b69b2c97231b54a090bc41ae6db994c34e9a7aa999d31dc6acdcf8f67808c56da4880fd057037aed6acb1293f57b658d685f05b4ea34ebfdb0c3bcf30d347f3b4a831511786e33612f6b67b19cb200b34515264119fdddc34310c49978267a7a5b3140d3bac3ddf01810a1b1beeba652ca524fc64c5022be18c500825ca0aee5551deb41733b65a956b0497dbe359cf054c989b007db436cc1e045c5d80e83e51d5792e00a6a01da2dfc646fc8de4404b9d88ee3db39f68fa171bf886c01d829b8bd200e0ba2f41c66c227e943574232a3454ad5cc582d9f0e5ddca39535cb4e6c44f07a08f33d3408850675faf3a5ca822f29fb7ce4a73efbd83d1287caba96ffd4431dfbfb9b699e78db29a8e2e4df3fbfb8099e776a4fdf73b2aff7aade57c1b519c760e9d4dcaa11b65b2376e8a1a87af0d2344803d1c3d00fe77d7b493987bcced9d59a0cc3061d11abe969db964163eda0800eb4067ab92f7409c134f833aa5ed7f57a9f35a60a54152dec1edf9c7bbc8e92c4a92a89244d0bda38a193972e796c5f844d9baa595f26f662001389b288903c6f620c9b3298bef9978db6154d845d3dd1004d1cb50a3ff4b63d43bc87f33ff7b25b766b50f2fc0985bed01181c4774acfe7987391cb4bb7b02a36a58fa5a918bf9f02b449ec4e766b83a94ad9e0c12e0abbbb12a1f27b5f7ced27b2e715706af11cb04fa47a4137b5c1d6af2c4510b54f1cb159ee9025895357d47a7995e7423616a381dac869679ae695e4528498cc49736cb5d9b4f6c65e2a1ca96fd533fdfec3620f58f2f9059abb6fdf86258a651daced106baff8605333941e707568cd84644d0cdbca4310c49d7d7e3d58bd701496482c9aeaf2825818ac7e5e37a8b5815c076fe3e3b92d5d9d433a6e8ee925c625759f88faed5bbd856c4990d954aa473756965b3a8e1c895d3f583513bcb34958e02572df3ec925fe4a897ef42895a7f6b6b6a8bf5e1017314c0bd7d9e898a2058061288cbae8e04859d3e1754803a8cab225637de150025424a787c96b6422aa571ff62af0606d5dd047387d57d97d3c31627f3a8ff10b7d58996f954346fa763fb9cd9206c9a43552debcbed2d97bd9f540e49c6ed07fcc2e9bfa24373f469ca1a1caa24848a162678635254744dc2fcd790d099b92282520b8f894a87f6f25e71edae8cd0e6d8eb0c9fcc0a263fda60e49a84a3e3660bf454de4b4f6daba25030c5fb250e37c6e2c0c1f32a5d8a5e1ba0bb7379464faed3cb2ee15056c343ed70e9408fac8250f7e28b2af1d2a837ef3cbe55f2ce9ccaf793d518f29c7d3ede3c92d1373f9c47fa1b13ce2b78f9e0a5c6dcfe75a6d4c0044957acddd72e491474c0be12d5bbabfa4eb6ef7b77b3bc4d65872efe20da75d5f7ccae06729b275f9ef6061bd934fc838495541df76b0a3d8cf1381d83e5362da9ef323bdd11e38824e77f57cc0aea3cca482c64422291006f8ba867a55ddccf5db083c76624b4ac56a4199dd8f3207f4b18bebca18d34bc553b26126940c0ff43a76f837c5502ccffeacd0e58e33704f68c8a03c56988962d68cc98d5bc22d64e4171cd8d887706a5cbe1b2399d6cbee4e111a4912c7fe5c717f83e341580c5cf9d64e438e61365eb9c88f3636a9c4a8e84e48e27cbe17a670e36a765362ad2869aea3b43e127c078fa23f002f51709ee19a680d70d178b89e67004b89925d674ebc4b79e2817d59069794538decf2ee84bbfff32e6c1a6a4c58e3204a043aa1e202d2c93328ed1884ddafe6884a7d814ffcad9c403acc6a99cccb05ddacb55e5ae815adffd99ea2c9736bbaaf85c771aa7441710807dc5e42e4c16952a881cf2c26b909f24a52e3e9ad93eb40f6c7f5c89ad9123a525327f91eee3384dc0a994f798bc6d9075b031f2dcf1637fad3d98d9933e3d328e32d8bd69b0ea1b4f27a21063fdb5c303cd83585810b28cf59ee8b79699101df42215fb093d0d015224928ab8089c45cb4aafcb5666ca718446beda6a06dbe7a7ac60248e419770591a65d856c8d4e0ec5ddf64d9e9f5f8903991e6e7ea9ce59b02a6e8652c9c4966024f9afcf65e3c4dd91903f069ad915191336c0e4de481f8ddf53f95bd008526747609167939dd01c519d628d0e7ca36d5245d403908f2d77c4934b2705de2b39da474e367b0b431b2bf791f87da6604c2aee35bd02285e60740e2fe0b5bd11688a5cd85e09c6bb77617fbf9c29c8431a63c94366e57225240953310c4b0b5d91657bc89a0ba4ef24dd097d9005f8664d4c1dbedf3f300eef17e61f5ec7173c1c1ad70646e1ad645b80a97282766929a59f56c9d0caab83f621d1b984eacf1165c3ae5b0ea615c989e15c0351382d0888d57201db7fa5967ebc0b12958fe4129febfd2ede95aa8795460269b593c647084088a82a0968291ecd4daf58c460c15556d43a75fe1a7bfefa38a7fa77428eb56499c9e0a16a017492b8bbb08cd9104eeeb5b9ffdb991521f38406f7f631ebac9361e7dd9feaef418d6f89b51719060166711d7cebb6104c9e671bd4ae8f0da11c89422a5ba17ed1b3fb28cf37af8b40db5419d5cd147aad4843bdf1c673e0ceb56ce986b17e31db7ae4565e4c2307dcbb9472627bf1b23a7e70d7b8ee81063948d5d2f2d1511db90a424805a272e79844dfa3a06a5cc81416575760088f6766ae9e8b957cd20c7c483c0e943ac42febf8452f20b80731f85abfc16acb933ddb56755556471493192a236dff74259debc0c45784fce62ee972c932adac7d788adf9e4100efb958bebcc54c88a301eee1fed2ae4a7dfed3ef9b97cd3a71b23bd40ae731551213295e53947ea680c2efd95b62726ed5fee4ccb959d3e532f1b201d37bd43f20f68c8a2be628ba972faf710fcde28f8dfecc3087d69b00e6bd35d5e1f3f425856c8250e0d7adb37b05cfc5743fc41422aeef1da4af9342165a7ed4abc12641c060b802416f2e28aabff7b350f0d0cb5e32cb15b7a9ee7dc2f6126129c6d3b4a658326bee1bdb731bcb4a16f633dd18aec63eda888d3a49e1f21ba41dd123a3b51141c99959534653ee048eb18c2bdeae44077e79ba9b3978dc5d072a6e13de22f6fd5282351c5b9cff85b127c8cdc819179a6e9755b19f91ce5c64654703c17f4be2cf21ade0366979d0a19b4f366d18dde35cb654dfaf58335887893f56d6e62cdc362024a6a5f02154443a04628530af61ecdfb735742a0d85ea47a0656a0a773a5afe6540724788a655642ccf0a436af8189ecf10bcbc41f75836893ce917897ba3708c112dce292de7de58dc27479f6b5cad348a7a339ab6cf5df243f0b73e3bfbecc946ee6916ef4c2a66b21acf8a9a0765b50dd1163c61a1787ce765a978bf810af853412f6c0fea4d949fd326dddebcbc2e80e7e8cb0d169b9f454a8ed5e5abad1125574f33eba4d8cd64006cdddc8eb0c4d9e704329bc6320f6c51389fffb94f7a56eb7c61264732668cbaff0933a9b350068b9c5e5050f1c7ba403bcddfb9594f144a62e7eb0980bed575641dc142af37aae9c12de74126b955423fbf41548c947f0a829e86745228f574d33dc25ba795a92522e73e8c9b3284779ef78418d76922252064873692c2b50f9504211cc9eb8b5d0468928a5fff46dfae8a7e61da2fbe951057ec3e4a12465cc4ef1b872e15499264b967962a4a6e7d091c99d81e62da36fb8894af4f4b0027b85dbe6e67b8a72b23e1846f131c5ba0830f960dfbe938dbecc39fc95d2aacb96d92e8bf31ccd4b4cbe1166ff57801c473d041aa0871a55340a8ab4c531a07253ad2e89300162a87fe61d31c4c369df3c87f8eec8171342b21548a81058356b9c50022ef35985616dd5aaeb45522684965db68fac14c0a34591a778135b92614d2b79cf7083705d229198cfb99b15f9431e4238b41e5d6b2b1011f2e3b85e8f0e4e60bd2b22deb0b8918a479a1d24f00b7e7cbcfb12792ea943c2151629a98863097d2cc41ee74d6ac4e7bb1776517dd2543a9dfb475a24020809561dc55f19488c14871cead3b903e3951aacfec6de1997bd251a609d39c21bd09892c8d87ca8a44506a695253de793216071f649da4f251d507dceae9d20acdbc3c7ccf11113f8d67d9dee4f4b7195ee0ad32f30dcca421319950f951ae3467159166b430f265972ae793e3d5e09de815c9312fc2a177c1e84e5e1bdc6ed0b972ca1cec1ebc6f36023a6062c0bd79accaba880817ae4bbdf002cb9062c43d233239b181e4c3f0e6ebf99acbda618d30a6966779aec5dd247807f2d7eacac1c76fc26abc941dbf058d705b9809e8e7daddff44ca5235aa12c03cd46d439174a02344ab4e3f0fac85a5a5da2743840f7b2ddafe67c9e0b3c11300900d0fb65b120d77b4f132a4095d54beb629bc2b40c688f369d2d3a5175f719b880e7e5517d5fb21fe8180e348de5ea107be948d5e29da31cf74ab998021d36dc7f4d64156cc734f7b961fb8f4d9a405ee4e689062ecfb9d133e14d862b65a12897fd0d641fadbe6187eb7e6242785002e362c68084cbc1ee62a4d48a54d1ef5efbc38229f50271364113db8604b1a2608784462f6ae196f773cde1cba8a5fc281aca5a7561d2fc0d3063e1c71c60f3cc4020f419e5f02186a123ac7cc36daed13c10b01774a57c30b612a345b7afe37179abff7467c26fb4691baf660cd47e01efd92ed20e27f7b5034f6936ce6a522189b48c851f9bb285a2e15d3711977eef90647be940b583b1e2e3d157c90fe42b48729652f9cc2c2c6901b12e09cf11237e5951ac6c68fcc4d8be0e752f6d44752eb2cd591549beb14cb5a764b0c131d37a83ee56047734d90032118bf060dfd22813caa4d6bfa4547ae6054e9a52237188220baf0b6eccb037501d2c5d6a0c449966469f885dc8251f7dd7715120193db2f6bda0192cdc5ecbc4f28b61ade894f85f494f9bd0e9201ace8236b6df9574203013228476be758595bed4bb0d37bbd83daff6d2e14e953fda270e0bcae300cc5e07eba70a47b61c23362c1ac1b3c86ae8305cd835ac11630cb00c6bb62d7d3ef9e9a97e826e6942b72dc4cba0f22fa787587d8712a4a1fef4d3a0c4c7956cf3c06e3b93b07992efdf3e01ed8c6b08b3fa636f1152680c76b2f47c6b6f20dcfcdf0ba8d2dba5eff60e88078eda7d79e6c381996c1f8436a468df31b5c338b4619a3cbc634a05b74ce5c1d411333a4b9510a7f126c8b52da148f72c0b401859a58fa33e2adbee2c69677ce6ce2082ab0e12a625e06aa475065075abb815f5def66a61fd0042e37d18bb19d2d8f9c6a3350ce77113a5807509015b5f22726035afecd481d1534842b74591dcde004badfc9766feb73888737e36306772b239ce4ec103cb19f26f84a309c9a37fa85f358cb956f478c66241b2c01063e1b5edb301e917986d127602027fe268ee625660ce76472166eb8fcef14f8b45bb23ba493c6b6e48eb9863c21e13c38c66f98eec99748a74290979f3606cdda8bd7f5303e620d5d682c6acbac615d6eec508f46b51aafe1960ef917e4777e3d765d7b3d48a0a5988011bd21c91361a9173f6fd5bc0f21c5171ca5f8b6b2a76bfc745973277e99406bbb92362993fe5269ed9a398f189d1ac9cc5914470b6fe6f2093682df3f74f4859d63fea44512613933ddae9cfdaba94c6d6b9b136634d164b8578f8b698a6c968c6ed4dcc2686cc834cb456fb3f15a20d789188753d4768ed9fa0a32a82d1c343cfe747b4745ae8ada70e75866261ac5a8b20ffe0e8b6e16cc6f883d58c3f5202a9019134d20bb9d459702a14500026456155bcd10233ee9a800eae6ebf7d24e9fdd0ff9357daddb001208e917f1a9d30ff6d091b3546c57f8bee12e9a93ef781fc283ac0ada5987e35bd00e0236fe1a7f61aefca02a8f67ed1a9e1685be86ae1f02c6db943b243d9cf33a7fc2ac88fdf66ea0b098a07452ba7c8bb1bcbf27edabcfaf290b1aee1ead660f42e9c9d125c953fee30e9005284693869d0184468a6b7b4c36d940df12d1f55af4b4f46e31395425d5a629e80aeaedfad10509089ee5a261ad65baa1fc002cf7c71fbce38cdacce9f26a8f4cb4734c6ac3d7e091e1e28e292b7ea634fe3e3c6b054b6d5516d688c47a54979d847042cbd0b5c0263896baad78f41112d866c068ad04e3fa8e69fce5657b5a431b9496e811ff44be0f45489f210bb02edd6c5178db23dc560bf3cee40857d788a7533f1a7e9ac3a387e85bdf053ddb968f05bae3d59872d61a3b55c8735a2ac4b4b84e4fa367cd4deda7dab3c02daf099647290d0f597b0494d12f81c4f5977952ccce1fcdc59f8d9b138bfb649417bea6df767d3a42ffd56ea1bfb3a51767e3569eef84ef236b682c8090184507477b27f1b55833fd74261dad54769f1299adf97c552697d99677447ff5e636eea6aa297f1b8c6b9f20514663e93de0755385360738da9e99205e6bd17a52803774c73b6b9f9894643f55ddffdcd31c6651cc31e6a6eae7a4f70ca8cdf5946997037fcf33d33fdf5f9f8d72bdbf8e7365945bc50d8b9da3ebb88f22e0f00c734f2901c4185bd0ed243d72f0050279d7f7adaebc4d9b3de059794f98aab13d1930ffbb6ae95b4356a4acfaf5ec1e7fbb6f91d9ffbf7ea003bd50a5d512b220900904aec7a25eb6c58f993099ffdbf74013a31df4393d0254a41a291b43b341e7f5a0eded54be1788b1659d5bb1f8bf3cf5eb88302b322c2ae797542e13ed45c7233d4ca477a163316e545159ac9222a4535d4f516f59c1ab5b9b5d156541023d5090d0416298c535b701f38786bfb90eb13b61b5fea5cd192eca4c8e158e61e5d5a77e021921ad90231672d225c5c81c891fc120ff2473eed2aa7a09f40f40c21c5ef86ebebd23b53ba9c125b224004c332be28f0beba8415453052eaa6af6b6009ef8c9862535d1e5bd799f3b2c70e8fca0ec9dd30ced3c10bc8d06137c26249eab9dbb5f44f0d5b93c2f658f21a29942d2112fcb7a9876e160ed6775c8ef7d24f31293e9e067d04138b3753438482549a0ffcaf0ba9bd2aff68bf9ef90ca1af0c52db6c541cbe92baf11eff62a0646f36747ff2f06adcdc70dc8a82414faa6231417c3a1470b21ffc39125d1e6adf743768d5580dc41ef135c1ca5c01a2cb0519fb4c767b8991c419f3e22ccf6d06a99de866a94488e88466ca86fa36ded5a232aa72796bf711c74f5af0be400436b18a787d42773825d4d5355897af2a6de8103ae356c6f1d1da2d7602ad34faaeb7e006139b21e776e75359ca93d32e8fd1a509bedd82b2de64fd67b0f5283ec5965051ec32d9f583c94f7ed00c754a392d32aa28758791e76d7e23d876dbd9823b15f047faabf7814b2d06b9e16b37865acbf9d1ce427dc07c5643a7203458e7be2f2c56307b6edf2d33001e13e65a62fd586c3bb758adc4357c4fe1a60344a73227860d407c3e7214f105bac31ee6df9ccc591db66c1ec2d406da3efef77b009b9262e70ce056db6accdd79314919706446eb3f18c9e89f415971affa8292aa852f8a26201fa0567d953622b4c10130cace2e82fea3c62053df791f1bf21e85bbea19dfe75ff5feb492de801c97ce308a20a0b6209be9e07bdcb5b9a15305c12387e02ceaa6448c705bd788add83c7853c231025d9527275129163a0e90e210087a54e5fb2c3e54b97407a33972424b78bc0e6a047502073b16232312875576df0dcf314074097d8aedecced85b156807808f6e84c30c52b3641aac7a8a230192203b80918dcdb744925e3287ebd52d9fcafbf5b1742b73119db9166f083a73dcd619823e421aca861e66f3db89a7dbaf77512d5c925c8a7ccc9547bcd3111411942cade05485bd117e8e2e8207a15e01a70c844ce49fa6178af3cd47a5c46c1b38c17f899266e6f9ee068c6a7e9be919dc2cc0d52fb2bb78dfcd833ad310fa10464b947d92c55c2a60ab46ee879896df834c8affbe99575e4676b36d25908dfedf000314833880e00867ed8e1a52b3ff49a0be291213ae348db7700998e12e0774304340037c153f63fedeb58ef5a2c6440db9bb22aaa719f97a4c4d1fe7c7572c30c37708dc8d3a857fafe17b08ada0d9fe96e2751c40efb6337dad199dcf3616f1bd46a6eb5b5bbe016800e244b9c1dc0b979554223d4ae85c827914da61794b96f38351c0c68ca4d4c62ec519852c9139a638e121c331a57175d690afaba962bafb633f5fcf994018e971e565975146385c08d31718dd8898f6f9dbdaadf7f8e4f9b513b594c1137fab88cc3311bac42903a4ba3de24cc31e709980ee1b0f812ca2f0deb5b94ae0f341f04772f1103ca732af8c451a5976d13de24074f56067bd273a450c1ea247d629512a265a552fed150a92abebcbd5ed44b055e685cb3a65750e523a5d8761001018a2f9047bd8815716ecd270d17e7b8d6054eae37038c8c9012d77da7fdab21f6ed0e814f17f1d61bad1793c5c002faa9ad09b5855fe535e8a6296d0dc4f6146350ab1ca91c09ee8fc28dffeb6a1d19d9a3efc1226e266299fa45c4ced08b16122d1d0048b475f298fa9d88d04096aa9f4aa3a1690e963ac467f2d5b6d0ba8ce32be89a880a7ae4f64ed7ee2eeb3f2a8a0b6159772c691e167ae67af72508be2457bbec50cf69af02351b8a5658eb0e093ff1e5564e364f04a15b60934abd299980ec43edc104e471d951ac938f9ad8e041e0bf06e146e40dc63c07716d951bd3bd1314327cefb18b62275fadfd7dfcc6237e844dcccd6e27ca616a0834df3e5c37f06004d34446f73e35f3c3b6a1623b3a4c15c8cb6f9c5151a6f03506ca7379c89efa3e0ce4900f4e01ccd757db9ac5aef18724cd9af409227b408fbebbcb1e1a320677d2f64348e446fbf4a1acb946fe7d47ac9cfa898c516e341ed31af57a5728cafe9ad7e235fbb5ab8d74ed6cf42928cf62d0c3075cc44c05f1a5f73da89b2fb0ddd6919c3d8bacd2f763b6435bffb916db1209b54adc00c124a5e9f26b8b5d51092f34b4d96a8b516e71b2f78cd087ceab8a4b71e9cc64eee220f4a9afd60619f875f87f82fe238db2d0740090fafa47317b386f3b047e557cf5e52ac9fb52a3903dceb5775c76ddd39dd20a8958b9934789b86ca3e4c52570c1a4a4e909f684b0449d706cbba924f8176df9df42e37b2284fc84f94794ee6704e9fe6a5c1d2ea6635c9902ccc3545c9df40c77916810947f6fc6c6bd28431621a71097072960a3b1510784e7f54e356281da24b99d4a2a11c3fbe69e1fb05a6c3d9461dd967c8a931bee86130a8e0700b514778f50d3612e83a002db1d39f6889227ac68c724cd8eef273b16172ea3a538787b379cc38e82607742321b048bd6b7b9c2b115adfd3785c49ff2df1a97f88644e01f72dbf230b327f32fa5014688c50cfc2af100d628b705e8adbd8cbcf7d83d0a341380a0a9144efddfd3336efd5b6655666e21da60ebeccaa902cd543eb216bf45e0e2eae253722741732a15391d69e83c1341555178244b7aae6afac7126b81106ebd64ca8b80808343b965432ae6da9056e12a3e5e24db112744cb286587bee1f047b92e4ad5b8a3518a2467f41cb1df87629e85addfa4e4183a9c8cb81c9ffab83d4b9ffea9f57d75e635689575844ea0b8a9321a0f4d6b0609a8c4bf04053f77765942a9d135da2ac6a9680c87741142949d002a9435919cc2e57b4ba1339fedf05e7441e9217cf6e73d91fbb16947f8a86298fc7cbedb0660478e1652e98c3169e6c57a75cd167fa9a02a262dd088ec919f018d893e6c049c5452989ab41ff38bc7f872fe01fd8cc9fa4ed4611f1739d8c0e5953d3ec0153d3a5fe1a6753df6fbceb6fd11f2bd87f7068a66f07ec0107139eb0cdb5e768bc9622ba352849b1833703b2807b08ebb5a0d22752dcfa8abee37056150d26ad1aa9d2631b124b5f2f1675df6f0d5debb342a42634d0ad2a58f55ec71379dcc4fbb73b56c78cbb7f2a24cd97dcd90ef0cdd83dc62eb70205d9bfaaecc26d6e57c2542bb895517a0833192a84dce35d74560c9f5095d781dbfb7030942b6e4edecad247b2c137915b616d466728de18bf8900e7a2388d0304b9e9e3e5719ebfc6058243cb43453772e5eb66c948e85b9a341b35ec4e68392bb1e4aa57a0384ee2af05ae6008fb4f1dce6e6841ca5913546e217a656175979aa49b5f29e21bd742155341e92c4b1ca4a6a92fccae3204788dd6015978592ad43f52b72cfa3ebfc8d2c41b7f607264c58a74f3071f11a6942b967053d40cc915e76d08a6f20d7e4dfd157b76335765fdc5d1d012db0cb69e40af1e611d3a465defcbaeefafd84ccdb3c224ecc69d5c5303fc75b51b7174d0e206b2116e7a796ea24c719cf23311355d10f99f8f370cfa4c7ba5dcc92f5ccea732abf95b4b7e2814abe64087746bb8f5b4609814922e8934a25fc71530b23c4a7e5331ceda27ce3d83eb040446cb4da566281f0d158ddbed76372f5bba5bb72706914aecdf6b8b072e683809b71c140959f0d56b45f6c40285248380f7adbdc0a717b8ae61ed0f157dc0206c5074ea97da09790a1559494af0fab1ae8b84ed07a8f50f572638fdd5bdbb76453b7213706adca8d0267c930d1f88bfd821cb01184ce382ce65acc32145312a3d2d42a679f8084897ff611bd1a85f514397343e329b150ce6333b35ce4d4f4bf88b0aa53f96a100fe6a62d43965f18872df640a9a888739a6d313ccc54604ce77f6e1b6b16a93717a273f361124c36668cbb93adc33a93d8396783f1668d79578bebcf7fbcd72b40634d569988b6118e38bb3e4fdf98b21bc56ffa4b66bca144bcbbe1dd649e4422550491fd2f68374131fd3609756d20d44b0094a246b60de772ed096351a05413b79d2e42c27177a2952363721ebdd5dd1253c6df1681433dae2d86a880eb6e80e7812b9e6d7029858f7ca7bb8afce1b9a51dd0d096638621ad5a47defeabc7352cd5556c6331da34263cba9732c3d441f4ca25bd1d7aca83cdb6ffae4a51693a8f60c4824a4d7f6d9d23a63aadcb878cdb39371fb8f8b17d523ea84c4eb9255aeae42a09caf261edcf262a08e3b227a900b6fee5ead210052c0d4065c2319620e94cf3411cb3f9291c9eb9a7ee9286dc3200bcf6b59d2fcfa922777b54267a128727682515657a28ea0271cf3fe5e180c27db612e12ad60261b238262ceeab73c0c7aed3308c5831b8650f9d9fd92035645a6b093d9dd03f7ddb69766484f63604f9ba6de84fa13687cf484532413d386e027b8b322acd3dcb242a72a14c095234352d68adf4b946669790fa56c5a1443e591267e49ebececfbc2ee15f2bcba19322a237b92a7e786f91e546c151be2239630f7260b112914a6d9fc4d874f92dc5e8dfcfecfb0231124cdda70945c36e55dcfbbafc66cf68f1056b10d23d7986ce22b9ac8cae6ad57ea53824b63b004284866e88b59250baa6ea1f6ed3d27efbda87ee0b1cda02d004052d2bfb5e6e4735e46c5d5c9c5c03deabea870ae43ffa643fb90b9a481bfead885cc66ef873c3a7b851d14204df3c237a1fab458941cee73e99d65ffb09706f86bec9acac490ba42e001aa2e42d403747dc7c57e813e24626e4d71a32748df861e4479b48a3fca08f979b656cbe1428b35e3e4c8eed1831ad4728626bd66ec7c9111146f17e309ae59c477218f24b0b2ef2fb6a43ff1e0ec12595d1c0ae4784191e82964009ca94f9b86a25a4ecae3cd3015bf00908722a5bb02a0aa2f64958fd734a42f7dd059b71d63262885c2121b5404c465f208e11499161b3be706dc34870a6f3dbaea8b3d980aeb5108ba7b02974568c757d610760d34d8a7580d41d5ba8167c8e77d9f98a5b6d830a3deb85b1f90c6f2651b808a43a2ee605002acb1056dade4aa407e41baf799d896c25126c61a76733a44bfde268adc4ccfa18878cb42e12bdd0de355c3cbd729e03a6af0476514e8fd6e77837c1c2f4ff316c7bd4d5e9071236e9ca0c201357a3465f99f0bfa8f8e731d01dd4ba3c368c7997b55b319b06047d980dbf65542bf092be18b0dbf7e99dc19f2b3d63ff734fbe9ab2b85b36a738a9eed1975fe8a1272a7fbc4f1954f7112a5aedf86c4cd1e5fb9b3e0170c380ded4cc5b0e2777840201dd455b5f6d4fe2ddef09a0a73db58a53b8d5b76e5eb6ae4c6b8b5535261f516a4e915f73bd289de8fd2282e70dd9170e108b93377d3b1a43ab1619add48577d1db2e54549d8f3474bea8cd1f6f4b910e79dd531e1b7baf3d944e9c2d805a70b4c8c6fffa50e19949c6a1e5c7307baed0c6db9d34cb5249cc1076365a9dfc0d8773424e2fd832711b565dcfabf76b3e96116534e39e678cf774fd4d8df6354d5d4b7d07e9dae12c727d77b41ab85d46d3716cab7164b7c4d15dd8ee7426714b74a739a56c0800aa9fe5b6f564c724f7ed049da309adb8023bd91ff7d1cdeb5d16284951a2e1e7498fb94f4ba1f4dbbdc2a4360699f80da9d149a46aa5c8a60303dce8654f2135638a8de9e671a6e70bef44b4d2e77ebfaa2cbfe6881e380dda30e916286722dfc5ac953bbe25184d842fca6070e293bbbef4ce244ea0a15833fcf2783497787cca9c3080a763ea1a8620f54aff28e6d1766f4985cb2458d352af394aa2e6f9c6b0b92e7d741392d44e56936350fe04839781bb0c345c9414dc4f78aa07cf1eee42b4dea4844a53316c3a812758c207ea50d1ee99d4e1bb27ed44172453e95425ee28c123d7fa5dc4c82e90e0721669926e224ea5b25128f07f5aa401916ee0eccf9a0971fcab1d580f13336650b0370ac30cb629cbc19fef9be56fdf4f6c3b28cacf6afb9a43a8c81fddfff405e4896ae1a8a49fd0f8964aa6aa9e65dd6dc8fea5d638a1444c039dd98f04a0040fd932afc5b2937b9d3ea4348dbb4d0ad721fb354135ffe9ad06e904f6a57a52bc59027f2d17cf8fbca822acc38f76605ffe049bc8c2b37a5e0a552a3c493dea406ab6d2de9558729bb12fd7551aa5b7d17fb36bebf2ec619938b3f08d2e1a49dc29995f9972dd060f1272c63a9d57871eac7b0eaec8febf8fee511ede22ef46242a395ba3f837f13139c43fab9f19d548379e14d6f909729de8e1f2116e526453d2d11bca05b29ec00ab93497e35fabae941d3be4288c9c51005d4c65b9e77e61b05eb828b626acbb08ef0ce303b5c2dbab41e74aa289a117e8f35fc013e631fe55cef0277afcfa83d1b7e8c98787b199d76da0dbfc19c83a532e7a509ab18c22b86d767c2e4e15d90073178e5d0a6d6c0e8ed023567c5927f4118506dbcbb7392acca78b8519e2aa1e2d57924f97c1f33fa77dac2c7bff003d52c891437937562d067f814498ce36ef55193cc2c3dd229d0c7f6c7244f3f060eefa0bf5431411993064f2be26981f2d57bd14faa790bc1b26c64f76a1f1c6962442c96d05112d09fce7a2b067562599683881ef62f17a11a41d254543a966d2716aff5c95e4e47a0252fd3a0ada819f043765c96cb861aef1f79d3f5b27df622f8244a521d0b6c721a92eddde2a162a1983b9852c7225a9c932ea2b8481ff6a2dcd1bfabc94b9e55e6ded8609321e292fa8e92662c086a1bf64b1342d84cedb01401307927cd044b5c58c9042865d1dabb782cb6e970d88cc7daa56a8a32b6d013287c26d01c7785e1d58fd8ac4e45e8f02a2f5c4336642669d739461d700562b31f981589213ab12b152c04bb5ecd2295316383d169417d4afe1d4ed9f4765fa4e85b74538a6093d23839ea578f8211df797ac48291d56489babbad696b964d8d123ca8527855f5f237168a65a36d5149436aa93e3c781dfc134cef86c5eaa6ff3f59ad80717a7f15f55a28b991f6773cc4de924b5b201bdcb6b42daa3d4cf0d80a590e6b74d8799ed76de297c532daafad53a9e926ae5ba6d7eef390c3249a64e02e7c7fb83240780829495bba15d3307904a3e8568a575434eee7440a5777aaa7d3afa0aec2bcc6f09c8b74b01de1018313242aa715a0d5ae4b2c5ab5d58f7fdfbdd737ffa6483a576dd8d601a6598e73cafb1ce1fd12de71dcdaca1dbd7da5e8a735f4fcfed78f44393d7c0a5c191d1697bb521ab825048b5255d948368bf98ef22f8ee406d461a074ecdcfca03ae083d703da0bd4aecca6279623ac1a5de3e8c9458a93e18fdda94fbf749b0effc7b19e95532df84cf75d7fdb50984106786bc72cff7f39e10e63c124203fdbe59beeab7c597d5c0db0b00a2305bd37b29ea63442cd6098b3f0e7342fbfd3ce36e4f502eaf6ac45d2b78edda305efd262571950efafcabce1e6985c2b103aef54056b2d54cde4f5cac3b321a29873eb3e31e40f1608c19a8bb9da81a8c61a5ac0236c35683c9049b6c2aabb2f1ee5c8d598da7dbbaa5f498ba7c7725d703e86c80f61066c961e52c1ae9659f511d0e553fb6f0b6d9bbab3ff60eb3bef9438a95c90bb42bf1ebfbdc770a43111144f59fc50e1abf2f3f77edeec7de489e135bc791d887fa5cee27057efa101b337a9d52db1540877eda4a0dfdbc063a031a5bc9cfa67b295921038ea7ade30ea0dae9a5f80ef995104408bea9886db89d0b245606d2116b3552bbee75021c04d1af297e12ab4722b761e78f12636341805f21b2d6b9a40264862b0e3c48ef099097a8debaf3f57f40a4514a821e41d63c9fa2502c72b55c6e393bf0fb1de0de63b3dab4e185f600ed7666b58dfd984388ff7628dcd30db11d6a3fd170f16720069f2c1e348c9d17b51b218b3c0711dc7737363c7c86c62e7734a32c6dce5cc1d890574c792449b461ac937676465f55cdbdd5bab7bd36050907766a226f1a0cb33a18a17a954438f665321ae4efcb1a690c936e4cac8f34e5a736413e00c9fe90bd68fec833af97e73bf11b03a8c80b7a8bb60864a3954e5fc77fa804f8bd45386d9b232eacdfe5023f88a8edbd23899ca5aee3682d8d66256398a79323cae1a45f6f1f7debdb09e1184360de691e870cf7aeb5bf6ea8d95537fcae4e1ee02c0d3b9b2489e2da21c8f74ebd0ba8b9799ba775d153ee6f914aac94878cbf13726711e274808616b991de95aa70eac511dd377ff55bebd14aa854ca7f01e36dc7677aef39b5699b1f990d69b4e678a0d818388fdebe7f2a53f91626024ec7cfb3b483d9bf1e441066ad5978d11c364fcc32480b16a2463ee91b76b5b285d22a2329e065de15d5bd482f3caf200890b76272085b7fb045fb0f34f70ef1a8f904a52ffddec05f839eeb50ef3c5a0a2ead42e2d64c045bf9a8b9d9cfd796f6c1eba9a3dda8a3f118a375c094f4d640adc22cbb250bc1d4e14d328643500f4c7f16a317abb1e3793aebfc01dfc65c4598a4dbea1662fade8aafeac4c72c956434e0956acaaa8518783fc59dd2e4116b37268c9c73c0f83bc16c919b1cdaa6f91e8d30fe3c7819942832aad4b9119294cee1aacc857d06ceebc90904cf75241e5cd78e07b5b73a75b2d33cf777c1aa90c9e1436c1e978521082d3655fe7747dd4b2eab27cc451d2ad0697234f42980203961e21eef2c26614b4e1cb1a9c4ce0434a93b03054d6b8c2f2a66515fe96c5fedee6daee6b3f2dcea0839836515d58bb197cefbd1f678822eb2404d1cfcf2a80418c3d3f0d71301453c3927b7fd1f3a02bbe00187a39dbd0c99652bd83d933de20598384d6881b29c56ca0bc4a86956f0816b6ea859ad7fa1b67d2bea667f3b39563aefda1eb230399dbb07207b3f23f50f9aa7775d56dfefca128f3ecc559a0d22cf322d54c9c1f41d098875855f136ea8a466efc55302e542502231668853abe961fc1065fd9bea796ff2378afd78d83f6e2688146ebef16f3bb6f07e581ddba644b9072d590d8b26abb11d225ffb8a390a4fdba81c58bf24831954e7ca1371256701b3259037f5991d36aee9600c6059074eb9be2d07d661f43ad3bb624b8f53436f3c4ab9cf5c5c3caa9a8e450236b4631b1c7866bc4372a61e572c13e167e4a58b58ead3f5fc0b80c71a43df09bc8703bfe8e705e719e260fe72108457ef988f83a913d49ed2e94b2ce3b6189931db973a2366defcba1212806300d03e7dbd7a5e9320a61107c5efcad22393390b5d1a13c40357e85c9e88209f12231c838c2c54f878ee40217ed7a30e15982093646ba928362a09e42b3981af85c002ee3120aab6b7ff359112a276a4889a312724bb38789d3002df8a7b178a1db5a56d681f459f81ed583039d5a91edb8647656e6001b3236d10eef817542721795180c6d1782cdcaffcde92d7fc0d9177d8f73309bddd02036aa900b371990146ac064a9dd506722be1b69023f77354ffbe564b0d426c36ab868fed549ca2c7c595aa011df599aa49719101f4d10862ea362cc696375f1d0e27bfc30a56ca8851883930fea63861de2579ced4050184580d9ab1d721ea2f959bba4cf78667210d11e2fcb15f6d7f690e34c161dfa17b77d545c993484531c88f7c933f7c953d52bc8ac7b59a2f9f1de178f705a7b1e038976493afa6509f546a542cc812831ad921f3a071e9e4ed609d31c9bdee0882a7a0444478cff5365917d2574b2cdf12c2cd67c6e6f0ab6887375387a4fb42888b4550dc09b91d022e91c2c585883e2d6e92eddc045fbf4c229a4fd915547ccb19fb2e08e72029aa654170a16d9c963f6a74cabe08d1c75f737af55acffd11f2390e6a4f2dbbbebbc52bc9ab5ab168d2fb3edef704afad63ff5069034c07967e3870aedbdb989d22c29d4ba63979204bc200459c50cfbea98798be4d938617fe68514dfaaf870024185147acb83635fb91f69dedde6fcac92282ed872f77e4f1af89ac9e02efaa7159071c6f6f5ed81899d50abf4029effd2bd7a2f901229a72c5ea73b919d04543cffd362211f32e77507d8179aeedd818a78a7fb03513d95f544c09c1d21df842a04f8379e3e23598522abd9ab73aadfa1919cd913a6177cdfe0669e99441d3517f9e6bfd81b6e04254b496a8b1cf7a34bb44aa532b3b6edff7e5a2c7c6477db8c09bbc4bf84d2e1f72600926998c46af1400ae199ea35c4f8010156028bdcd759429ad4de01eb12e16216d0dcee4de1f75749e60a57cf15cadbf640eca74f3ceb76a50dc360de5c9a15670587c472c415bebd1e6dfb60ea7017a570e8318441896887b454c1f3a9f182a36029a87929f6d32955a47823aaf3ff6cc8f2076b8b201e2392d368c01dc472424003d7006e9ddb5947c808bb779f94eb063402e4b72d3d29a82a38af9b63d48a32c1204077f43566764230c43e7fbe52d72dd10ad760c310caf84602c29808530105bf9ab6ed9e5a89195d3a7b8a0c78388161b7e6632f2baf5ec688bae9bfcaea32358b018946756df1893eb795fcdd7bfceb7c6d32e7d5766b46c000476ecc286464e2d89b651ac93e17e9db22d6a588921319e436e493d61f5ae5d6f5fe2135cadcb7907ae21085a324258329ace2fdc42d557105d88c7b38643ad0f64cd29bc962338780b01f6b23e9b9b7e5728f78ea3884bec008a41187c4b48be26fba77884dc87abfa1eb653e245634028eedf1d98f665789cdf1eb23f838e5cb640f9811b73adc73328d4b9af8d640ac6bb393b713b3eefe31a1e4576816a3672a0538de388db73d55932506182c6a81a9255425bd5c21a333370f6ef33011cd6a2b5b2b5c3e39326e8cbc1af58a744898347781422d236115a0e6b6d4d8e2c08d923ad6f14466557f8fa08464915a14ceb8a583a064aaf72b321fab5d98f78bdd60f1474f34c90181bdc7580894fb80b112152de30dd87c1e5055ec39ee20280b8a6e9133338ce02eb692c2abef855439f0c18946b725883e68dc7d9043e5a92b8f72c47393620d0856182230bf48cac59c682f765145275e3e8a49ea9d7a640e0a0c4fcbe65f296e2273c55ab7ea45d0e1d8f7ff8da8932172e40ce98a636263d148a2dcd33d525a7d136a58a0c07ad93b6afdc13663a6242121ee072a3dfe560294f238a9ac785ee60e5f4ffbdc2e674a4dc25d54dcb45b0fb3930f1f70c768a0ad4a746220db6aa5cbcaa9a52f6d64d6871fd0901a3abad5000b9569a0539a632e2287038c62f28bf050d9aaf571ef0e36cd2b36d11a76647ebd6c919b0f21aa6e4897bb15618a1e3cfc328b485cdac79fa0bdd838d1b5106dd9ec6c290f99cd66f4147b5f38cb37d6c481817782c672f3edb3a4f8a050762050cc4c60dd313d940add5808af2beb0ab51ccd51dbe49fae8df6240d92059c1e1d17178b52fb511eebceca3b665620faa8ad577821f1b898d2de4490c44d407bba35ba05dcc05bdb6d2b2db41f5fe5f73f5bcf126b62d475546500b12fd285e80442891eea3ae29287b91ebcb9d49bdd06c7e695e89729482fcd3d53aee2e8af697db19e4f32e392afc1266dd2540ab442a1344c049da521ad964cd2bd367d0c81dd3d1f57cd9214a0692ed07895e3d5e03df37403c44ff030829c413430da9ad8a4ce562ec42e963b015e0448983beb551335d3a95e8e46b51779515b32ad43ee860c49f5ad1d3c0af857d8ac12366933715a4d9c867335bd77de88dd05d757dd6e2d1d7e828e3c4173e8a0441354fae449c945f1eb810cdb28961d594444e2050d75715d60874dafefef15d63e14b75370431f5e1e4d8d3b6bcd26b95be16a05e712616094bbe7e28dfdb95ca6b59129fa76b7c9d53b39fb55e20bb4cf3fbe10ed4dc1e1e0362666630dd677c0fafe8f6248e268b9f725e28d3bd357b38e33a0293b0fb865ceafb97f2b5f18e46bacf5f197d571df1cd94d6ded4f746805054d99ccaab4b81e2d0043a1c454121ab887217849a524926549e2e1f14dd34af2b82f92b613968fa81a078e37d7f1ab2f856d6faf384134b2b83cbd1607a17afaca88d0dff38e2a10cc379f64801f998553dc5de64ba684d6d80efe646d20cbfc4bcbd677fdac542b40034bea21712588390fa1565d30363bee303d39a42dcaf950c57bed155b9295b30a3f82ccb32c5acc1dc89f79015288997257f3490cbe6c5187b8011636713618c3217f0ed141de00af9f9c356455830a5f72a80cb168422c8ca21b0c7702cc27e025929fbd8a077d4a5b0f0535c53936eb4ee4d79fa0e7cdc985851a927f8efd8b09112d0f890be80245b6cac47d20261686fc47901b30aed04b3bcb1b12c2550a6eab70de46e6a268704869914f9e211023da94f25725c7e9b74a7ce9e55a768330c70796fc98cc52a02b1ceb71dc0bdbc79de062451c722bae608f4b717c84e21a7b69deda8b7124e1da956d1ac7f12b8a5a25c76275f119b73e6e0afa506357050c23c415d07f801997b4ab18ac73306d344451aa989dec65360d8c706dff91ca1b7ba611991ec44bd8d7f77278d8fcaed6c4a4b1c8d2fbd335588d3facd1624fb1d7afc632041fa3d289ce28004cffa01061a46b9baa7524ca80e5710cba13be9603e7ef6325b170353827a9a04f892b17c1cd82d2fefb182e53bff44bfa3396953fa0fbf6aa957aff6b5cc4905e3963089b636c634cea74624ad69a7097e378e35f8d70873b9ee4bfd5707851907f2367e2db9b2f4a066690e068f45a38019dd592129f56afebba9fc5950b79d6c529590dad61f7b31cf88ea2de16c64b34e4661e102ad6bfc7ef4f208313ca8bd069bac77e0ab1b4317cdecd63fb990857b673ffa5032fee27bbdb0ff44fa91dbe10da544c0a38980dfd13c9714b380a6501d0aa9f703a97a5deb71e66b9eac37f4843e89e8786e36d56f52d9fc67e5b39099a0d7cb8f57c5b13aa8c5c5976bdcf467ddf0f8e2db7e5cd1345fa3a23ed830e30b400b09c2f212d2dacfaf633b8b3b12a981ba156745c6fab6899029d6e26d001f28e25b0d1c471f27cc35e7f6d61a026e581344507f012221d364778a04468e7b108e79c30375405abca6e726a06c6ac399ae5b74b0bb3a84c14faa796300272da331000f8df56320f0d121d45db00d75dbd419a5b8c64e178335ac4e7c9d022c191116a987c023911933fe0708ff5c34a99c2262f62cdc70c6f402eea0efaad7b15f6da8f92c47c2296da4bbd25356a9fbef19eaa9734e80218d99cf03ad5cba2caff67e422e94cc53a935f1d486cb340ae08c16f472d882e41c0165ef4e4ea8191eea8223f8fb5b83669c95bd53e316fb9a072b884c38ffd9a8eb594d7c5f5bf53fbd4635c4f32a269c81d3f58ce50458bcb3f57fff7f5b9880224123b22e9a3648f2476b143a459400bb4765b4d313da3c2b69de3e096ab264e6140c44e6662d55b37471fc534985e60d06ddd30c338ee6cf9f2ff470470938116d4409359f19a21cef07b9de044de8bb5bff7d1666dc22dd741a76c6e3671e2e3f2dfeb8dfe2886c87c7a2d766e150f37515f77b7c03e3926000437a445e22882254f08babff8ef63f7b8471e5ac6a64af3690e9713bc55f27271c17117955bc59648f7793fe61d8e9fc5bef251315c5f0042641a9a59fdaf9feb8917a1e6f3bccc6d1209882e4791b9bf678b00b08e4d9e04c439a0138fa92506c527e8ea7758201a7646a5c61f9d9480a597025277611945e77a1d33bd07d29e0a9e5862deb0093c89ec1acd5043264f92285cebd9bf8ab096c53e303cf7d9e89017225c79621c88a13c15a9c19df46b9fdf8398ee5cf2f19cd1c85e6e446dabd579ada14e8d9390d730138b0cbd477c50394dd225187bc04dcf150c0287e6a3009f3f5513f836780a084253624022c0edd9bd73d45d75fb08f1cb9af9c86ac1111fb32e6dfd873ff0ad0b70b4902c28adace0198e4189678dbbe0df54084debb211d1a747601ed3e0012454583d34c39dbbf46ea85ff193399d7eef2df5dc6d0fd90b68c35efde41fc4925841ea156bcbfea3d7e671b755c0a6100dc2b0160b56daa80f210d31aed254a87b02cd4627b9184c62ea8917bbf985d806d52a351437b2cb4fe2f0a4d097712795e7694f9952c12dcca2c9d025a7fe35df91018155aca1e3845a11db1764a657e3e77ff3be86b1066e645a2a5b23d10ba07a8d3da03324546f92064027d1b9a96fdaea302608b168528d1a7fa2ec10efbb4cfa9b6734c9e8cb2bfd65752b1c891ba4d7f483ff7f5386a3e337c2ad7e23b6bdee26f08be7483c6e899b41bfae565c17b9e4b64bc355769febff1260cdd63cd18a39a319e88bd825b352e036b475db0a0fe89494a3290db57c4658215f4e7b8f0c02f3ef711e4995683ea6ce14bdf276a999c5915f1ebd4ded48dfb9247ff6b72ad2e80c9bbace56a9d4f7265fa1494fc249d1947b750d81eb7b840b856f74f1f124eae3b1b29c2ea803f39b0b7dc99bc30ec7cb1133bf2d83f3007a080ba60e896c79320825f9a5df535542fcb4b24df88ad2c973bb11a27d57ab04d71779c54efb90dc197e46870185319515edafd37f25e4113b7774dfb98f94173bad3a8b41861c60e37d21f5ac21586e595c54475b684d7e7aefe00fc4c65a871e30e27ba3242ccde9f15f409744b335cd1b01194827faa2cce414f36cd987b5666e8b11f148a4a3e05df5bf38bd1043e53b2916861cac5493231f5c20f77a3fea1fba6d9e64c4e218600c5544cfa689c8265dcb45b717c44e8e7f0637d5bda5f0d4612c61168103415fa7651b5fb239191218cb5fe916bd9d36fcb87336f85def8cdc557fdcd8b3c4641c8ae49f2ceb72491238c5a8fc2ba94525456e3442208f4077150ff12fb6986c13ee6ebac0fe93a93b5274c75830ad50e64dfa77535bca1485bad2e1c5d2d55266c89949e8f0548d5a903545b255ad324e3bbc2f54feee9ed196bf022a6e78fa9e4c6cd85d1575bbcddc5823e77e830eecbd7ff710be6a35b3c8b54d3e2beab88895ed052b44f2f7a02b065009c7f1cd3bd319135a9e92c15b30d5f5cdb4b0ac6aaec2462bf738e9c3c0de8a8a8f54993e918d8df4b13c9f48313b6126b01c25f4f5835f2e92f3b9b5927173e05e7559c1b316c9599d7a6d1a6619772cc5cda0ebcf8ecf00f860e50681b5314066d0a605687b68753895b1143d8ccf55060a9aa8d5819bda2b7e0a2b4574ad25a902c5b80bde81b5231fb16a5e8591575fba8f4002e168504b4670dd992c040b91a15edf22d56ce1805c8b2fa8569b8683abc4123bdd2f36525fdcc64a8482e83e8dbc210d6993249bfb7679f054ae280363c7f00e34d95a84ce419b2043bcc793e3ee9d1877616a2f9f14478f9a7bb8d5cfc05e3b8e38919b34c98f53ee6fa116f194d79a635a8c19afe8543adab73efff22b578ec17ff2a9f34e4c9f17da3fa81f5ee7dad8474f9f1b31dfe64b732f16ebf9ec1a9bc895c396c7131557b94f6dbbb104678e72e89f2bccd98188f4be8c54432932ecb38db0c2e892c6e91033f06e88d9509e250ba8da21466243b62e561c38a6544a3f01abd3063267f8ffa57b1295d7feb8f92296705f61f0389c0ff767bcfb3d9514b05daa4919b853ccef234eae20086081b7efa312413d774245e06222ab4fb4103581908fad09d00e41dca5961f4222425b69fc1ac9d8635ffe6be3dba9987954d525bb51c519e4fe7d08d31c07498c9b44214990f1c3f2de7ec227ce82352cc902f80f5c002d6818af8fb54717eb973572c5b5c1e49986b6bcffd2af5cd4e0f325726e57c3cd0c97dbda4438a9bd3af9aab2fcee32f8d13cdbb79227c64db8327462afbd8f7e14977bad09ce3f57f934553e36e5a1fbf0d89337e7220948f0521ee93fed7b49d0a814482635ad4a2943b348cb841246dc0879881440c4ee630382638ca1cfc98283a4d5ff60bfc4d6e8939aede75181262a6d39b9bb9a1e311a6d2f4e80bba6fb19d4ee400e1b8d4328bb7afcac66c050a6ba7ebc5983af501abf04170aec3b201a67fdff91e136b3732398e166daa4b8817f4662db4f85cb6b70b2c3f7b26f36b0cf6b932fd885e2d94a5ddf38d5597734132e43f2700fedb0e2c377099c29b09adcc3ba25febc4f1fcff2ee4f7bce4f1721496b5b7d4be096d1f44985d6a3d7bd16302356f502d0c22ab047b727d3c927a801c090db6cc6272ada1c9fbc7dbd8de0ecfdc8bfdcf1f92186006acf45ff43a60c09f2824bbcfc369ce1e39c8d0c71f097c9bfefd947a7dacf9b391559b871794c4cfd4e8c0be08a324ae8bb22a5dcbded302e139df70512256eb2d9768fc348e1ef6ed58b8e92300215f8fd7827b46b2182ee3b755a0e373eb1d4d42b87185412c4e893d427bd3bd74afedc441dad029330450801ff8b6776699e00b9a79bd2c57cf124461193069ea6228521fd346523b950ed579e3d7f90ecc726c4b2e6ae04e9528f1e4f0afa7ef75d420f56ea409efe2a511cd6e62a3513eeb6b4e8603de6779f3c11b3490eac7293aa3ed72b0c6f10ea6c75d731a54742fbe8f1ceaac527b42fb468a52b872c28efee2128d519bd5fa383272b6bbd790ad5fcbbeb1067217b6607fcd6d3e902b8c065e9704466844bc2b41fa8c3608266759987c5164d18c42c76697bb698bd7d2f38a82a8fd963151d7263487557d602e76a7f1507271397107c4c8b0a6e3d828a2bc7ee1c431ba0139fda016bf317809052091ce17150fa43f57a013a79192bbf8cdac013f5238c8f0923070d220148fcecb23e8b877ffe15cf4e7b31f16549ed8603a5ce5b0a1b922335db250d1f7fac35e79987ea46e26504b9cdda8a4aa6fb7d9a118cf4149fbf52899d0b7c0f335b9f5dfa3bb6bc95ede7e4ad5e8e703ffdedabd2f7c8f68aff64eb0a86b3fb4cdcd73ddbd93296e292a360f90ce945ab9d4f4f6e2d1a33d6e08042c38feb3defbb958d2f0bad31e38dd6286657ad08117ddb8228a9826a325c264b95d8f0d1361c8e1f247f4eb6d49778267ce7797f16d1006fb1a876410ed2add02849223ddfc8241dcaafe677495fae3ae1ee95d29f2b3c7a9269dafff01f6e3511414930f4fda1d81fc95b0d7fb09a8a7c55a80d2e95bf1361ad437e41756e5514dd7bf5bc54b47e85f6f4daf6570c3db69fec41ec466d45278d4ff69a5d9653ac889db16a0db7b663e3476f4a751701c2f7adb0a34722ba47716737605583be583a8c1f0b815c0142e6c9c3c0c8331eda8d2da131ab0214fecf0d5b0a93ebd4e663eb56c4956ad7647aed1ca47f399d781ccbf873c67674e4424c5c0acf7473d8e8e53289e632c1b988763fba5912f3ea7f2ed211e0042190eef9affea02478070cac8cf3ebf15efc59d0c2714a9bca83728225bba17174203faaaf9d9db9367010c7c61c0c6fec959e6bb27ac2e6abc4c1c97082fb17a1fcea22756afd1221279be5dd3eb0f986d4a16837f09212a648b9658ef5c1ec7d77c1546789e37919ad628da0c118c7e6d41e6f7148f4fdcce94f325f41e9aa529856a2a7b764cf3d82f4a00bfb79dbf0794cf1b1ef16e1ff34d71b26cf5c60189bb84ed7d2739535f3e87c4d72489c5808165230cdd250f781045aa5d712c0b9b95fdda89d5b31859305a84602688bc5f4352284d418b467d1026e507c0971fda8a9acdcc7132b4aee0a17d409670a962f001d23accfe53683254c87ea0210f15d9f507220c260d510176b7b66482b9b3b85f8415f9974939e618d772ba6e5dcfd38bb79b7282aada41c34a00cd824ff3ad6f0c3c9f559945d1b18be88fdab0e9e860a46c780b146a30f1e3c5b83f4265308c69fc873d3225ba0f7c0ea3eac3590d901cdfc5993f11a21c28819fc6a3c4dded22edd3d7b4ee35f8ddbc941305cd43084e6ddcbd331d63bffa1db231e8c540c9d72e1849182309516e3f10a2bd3c7012cc866dc31d8e3664e683217b096229435c49f35cc22ed15799396739d108f7eb7381b12a9959ecd3a6e3df45b119950ee2a28ae1959b9960e75ba82cb03c6ed83437459c42881a03ed70ebb5d69c87fa3c840e4cc5b0f14a5a038ab73ac0fa2ddaf9934269de162741dd9ed1f67a8b41cfc59c8c1b524755d7679b545a3e4c100337310ee6800befca078ab1a40bf2dcee9a815a6335969c0c4f17b5635bcdcc9aab2fba8ea94a1401a3c6178b95142846af8d7f8107b0e1cb463e81ad2acd61f0e930e2880c92b7ff5c77dcd5320b7b55d04ebf1a599fd5961c296fae9f16ee34818c71821c63ef9c59a226eb6dcf0aa3563337135e5b3b78bfa3c40b2c013e09b60d9636cbaa89376940f9a3d2331314e9dd039fdb34b16831979632c058b325588c355d56a20365cbb88c0ccb2b3a87e4bd3320773ceb744078ef07b7422762f51cee551bcd58d281589384f9db2847b95194524174b4d7140378baf0027ed9b78bab1f366601fd3d010a5d77d3245d1ce48b253fdeda030eea4b1ac28fe26f5a34b0c239ad4c55cabe09884e173710427c4fecc26041ea5a092348a0fa64901c9f79def1ceae073ea0afcb598144304f2b8487f47780d837b8cbfcac1ca2eedc0e1e307710dd3d55ae50deb3e15650ab1833349347e28df35102ad98d891d4c5b1b838a89294e69f1059d98fe2ac279b53affe09914c5f7d08581ebf5b6be0f07eb55efadd686f79847e209b6e2496b06e03e5eccdf994dd2d4a684cbb31c4bd515cc30ead88ff262f0e9f27866b7fb2b45eafc9671af99e4b71a0286f4e5d4b16223cf6d34c589472fa1012cf36f4f267c2dc695d48de2e756501340f3b733a2c832ffdf77eb205d2d484c2beac2e8934bb8aa5fa615d75656cf918bfefb0cdfa00ddf459973449217a92cdf64051d36634b8c2c05b7181791c5f5300c68b938adf026aac48105035d28a8e2786f98674aeeab39360360e846250c647083cf44eed398ee678d56515c45f79b1db1f6ac94997a74240027ddb11ad1e03d28e20242bd8cc2c6abcd02b42e143728011e712d7f1ca8a122329690926e7b6ab7be8d2fae6309fe1ccf9ff536623d42b4d016b25cfb04dd206d99fb17805b107a24cfedd526cad2afb26bc6ce5a2093d2add42ee0e64ef6d5b407f1e3e462ea1597b81015a6bc91c5dc98f1ade1031fbf9a8452385cd6303234cac88a58d78d5088584689c2e2ddb03652019d074053f79e58cee12af90f0818b85a3f77e8817ed3958e993ccb32ac3262aa4ff63998ef4d3daff88bc66e3a30965acd03b5e50b922c467a96297a2b5ebf47cb4e012310465a19f6d1b6285b5a48e4f5fb2e17b5c267cb0f9100056b76eff7189fbf43237c394faaf5f6417767603a403b74e59d5a8ab99e1fd9c518b2765bc1d9ba9c2d50e5ccb0f87da947b60449f5500fc4aee7ec97d457cb04faa28dda029a7088c49a658bccda466b0f18c67617be10aaab4ffaf18159f46cd3884a3cd235a7e90a5f764bb122918c7d2fb1a452ecce30a056f9443eeef50fc74553f5b2b1b3b3a12c4b5ed1842a7be502daa3699dd273a40cd372d69ae281972dcaeca337fef5e4f5ac2c8cfda3c22df5d581148ff40adbd6e6f102552c777f7a95a69f11d865c29898051553ce03bbb52afe931784c1e4a8cf26859ad7097c2db0efa9099e61fd5ec81b3b785075783abab672c679b31edc9c48f8e910ee4d83b2746deccbfe34b31d87eaba81b007d397bec4342ac528fba4f3b8dedd51ee83d3bf6549b1a865fb6db1f35e14475883fdcfacd744eded25437936afbd9185f8a0afd651ce8dc3d70266a6a51d1211a9217fd406f3c24b0a36f913bfb2acf24c27c60bb35e7d97480f9509e552d7595e3cbfa11e021e64bfba929ad9775ac5c4697ead48967f8178c5c6e9bd8dc5c57889cf06c3f456ea0c25970def657d73b4a4595bd2e58b281da5070c681f085e04352c137bc032c0eceef096b764136078a8f012443b382ee0161316b1a42959a1e72a7525261cb594476e82920df2cd3057e5540b974ab99ad1fad9a678a958e0a2059168a1c084dce4fe9f1c40ab978891c0eaba7eaf8a082834e1091f8de3df0aee798cb169ac01b4002afe24af6c30b9f3fe5e40905748bf0c2d77bd2ead50775510fefac44fe822ce8f286fb3430b8a1c08548d78fc071d9667f2b1b2234d2ed705f398add008bf1a9e4fe2342c56ec8092d5bc16299dff0515dd1ea906c940624a0c7e318a7918ead10badc62aecffac156e68e33d51ff93ab4887058cc93614a60dd16cc4bd097551c659e4b20559bf693c232114dbf0da85cf6798c80a4538206660c44e4a08c6dc4bd6da82cc86fa24a0ac3029bc51f4b5583c523b4b058227a35de68296f42b2b630447a3c8f62669738fc1ef9f338c798db079f0683009cd78b8b0a11a0164d717b812a1a84a2650203a87b3400ee72a900be55ebb7d4d95ac0972c6221a0bf54e6a0013663fbc63182c1ed0853b30aba191a16b1426b4ded8d2b7748e4727d9fe5cb991f4fd5c4fc4e958e4296fca9c44ccb30c3385d809e7747bd0470fb1abd2c2e3b76e7ad8b36dfb2876afa7863bbb09c6971a7cf766763c1060f780fe9481536c732e5f08b1ad2966fa1178b62f869bfce4f378e781076a4ddffd68456b60fe1d9303ef0fb026a77af41dab9ef51d38c752b4cf6c9c1ed7817cc201c200798f08b765fed56cc6fe9bb244cd3682a24eb2028da01e4397c9a206b56df8fcd0e50d7d5b987acf933c6e851731c28585cff2800da9829994d2abcb9e5df34d917d12da082c5b522f70f08a8fafbb68196f6f80445c64dc6e754ceced4c9b907bc788b37fbf2777f05391fd71b74b1b8673105ce0bf237a1bfd6a8474efba7d11641fd4a936329ad2f01fe2483aa151011004566256b50972b1f7f64afe4c4ae24024255c321c165b831e343b1927d03e48eaa27e1098cbfd6e54ea5a33a37bc1640a02583151cbca8a9ccae7bbda12bd84a563a88cfff90b38701fb912f474452c5e37d55e06df2845499a08e8c4ee76ea3f73d78148083cae68fb47d94e7a47ad2b45d0fa79ab5e55f4a6269962158df187ad03b574736ea4f27f1e5bf981e50381e429d7ac99188f517c7ce99f78f743b05e2a6748d33d490cd4248c4dc18bee68b4aa7d8b686609a091ccc0480ad3db6d6bacab171ca71db4ab582243771ea7aebe7817b05aa1238dc87f65e967560f00f6e24a179ec498a496cab3ce81489627ab40dd2205ed40e97a725e9a998003cfa4d3b3b5415e3455dde026d656f0d26e1ac6cb7967e0d999359b0d05f2029f6a692622f5da7636078efefd7884ac640790f057d9e20a3aa40e793faff27e5e9e92ce3118b94873c1b07b2e2158b31b522f9cdc7f650d6f4d9ad45de1c57499aab79f3ffe3802946951e256477743be23b86b08b7a22299094516bd3362e48d117d57486ac14a9a32fe708a25521511f2df4f7735192684fe1f99781b5f9909e7c66c93a3549b3ab93cf7942542d705387cf1369c812255633fe4416c1027adc287dcfecdb60bacd7a44493ef812d086bb9de50d44a31e289ded8f8e308e8b9240f603d90f86fce80963c29c4b67b7f497a9b7bbc2fab40f4b8583a1bbffe0384dc625afb716b8b472fa7baf33b90c89f0a2f82f80403ac887bf61f185ff7e0dc6928a99da9200840c4e1125d2c31463dd4ae789514fc493c3820b607fffd878a3ba6ae1139ef352572470508f4b39138a24cf6c90064c7cda0bce31f7f1b37ad8f569fbe7fe52f740127da34d9dfdb59e0eb173ba7ec9f35f04fc754afa2e5d1c603f98c8b00422c7dea452d1762e116f065b0ff9ce7c14d92eee106586b8f4ca3bac6d28daf021e40cd7dcda21ed854af14e3a131e5169deec321f707f050f951b0f543b96502e70f606a1db784889ad89456dfbc9f0072e9b25ac91dc888d2f9be919904fd877a3bf5e17fe3772e2a6ece86306db5e0dc0278eb26e6d6ec16006df3417e12af5aa55ad46049f1b351b7303eb070fb889c2eb29d9eec9b2126b9221329c62f919d958d2f750f281d602ae767a96ef9dcc1ef75028a5afb27beb73f78452a47c817316e9f651a6e1a8f64fc6b1e8208109a3c4bb32bac0bdfa38f978482364279e5858489d84aea3a92587daae11f4e9872cfeed18553bdda11c2ff45e7995de36b56982d910a71e026b8531aa0ef0272a0d3c9760a2fff1bf857f7ea6ad7766493f4c2df8eb55807cd3684f52c2905b84f95cb6f065604d9677e95e7d97f14337a5d6a12b15b50d90edafa363e2b3a2ba63a51bcee1daad3df6f9839f6deb3f55847c57ef0f2bf7171f293d1a744c475d83e1fc35b267587a1556167b032ac6e0bac2dd5761c9a9f86e2c81aac3d80779f3e63eece0a14476ffb49491ea5c8e0dcdf4b30c325334e44ecb293021e4fc59fb8280713ff984658aac2ef0111c85b8f139d04d3dbd4d3a6265f9741091b8a1d6b3bddbbe80a6ea2dbb829bfef5c2cc4ba72293e898b28f95f55e7b8ecc75cd32931aa4df2f87999d56510f13ed23192ef2f9fb9246d266ca7f3f553131edbef4952797f915dc293ae79f8015734e3f569cb0e9b5c91e97a53874e2806654f7d2695c7390f6754645d8ad5d7488ec01b5fec3d9c0df170c105c7567938f6783e7b655579ffbbb4b9c6601e96307046bb34bc9c705b05d37700cdad42627886c432640cedc2d5012ac3f45f72a91e1d5a20a1eb18fcf0b684a78f2d1ec60d58474ccc6fa80d2bb9b95823db80d857bd0154f509224ae3e58fa12c845091ee975769f7cf6a7cccd0a22a1c511c14dd895d33d5a8ffa1522daae516f95edc327e62bd47e86a7180364bb69e69048c6ccd0f6291b3724c7649ebbada2ef77a1e34c4d70f02b8548f6172c4fbbc215dfea558eb57962276e749c0eedb1c1cafc1d7a96c7e24fbc377a182154938cc4b9560f3feada062efec5b597e6c7a9a79c617f08c9a9930913e6b7494c5cc7518a5e6d4a1d62de5a3635d7ea19d780028baac2fa79421c4bfff357531027d4a91443c90840abe3cc889ab92bcd117898d88184dcce387a1c1d21f2dfe0aafa1ec6a2c634907de58e46e4f998f5407bf729ffcfae969edc296e93f702caf730e91a8850aac62f98903ce290c80d3ba0f55158da23df380670818949ea2fd1d20084a2d31aa2d33f7025a1751d3cca6ff88a90d1ef00adf861d7321e04e97a0a59da20c6b79de4277570eca85e35db8b1b5e7bf4923303ac08f6b532773ee6e744e18c62d3e9020d80e862fa2eb1a8979c7d374d338711cd1552f9727db872d2ff9b3107f847087e9d17e6142c9fc019b0e847c7ee26fc7c079ff585a9e21a4241e4b149959d62fa5618766da31f46699c418a0dd3ce3f1619459c1214ea888a42b50694d95e3f8398ea0f407c40e59a2c0af81c51d1ed0a01854c43f788577ec18232ba3711939ec512c46810f4d52e3acea87c690fb78febc2c96c6990fd2dd15872cb3ec9efb317f9f5bfb58d20efb02d1219943694f3b1e3866bf4b8f774da38bdcd7f1dd3a397fefa061f63e75ac92c8ecd6c081eebd5064f630643e682cb49d9dac5b11e92de8b41c423d6f6e2b0d832d396ba949fbf53af915fb504ed15a56780948e9741add00daed540fd2cd1d733d96c85f5781247ee5c5a6e01b5dcc01fa443cb58d8f9626dae962ad1782f94518f7531e941a6816e57e681d8334b4cc10785fcd04cb2215fb8f1167c73e5b6d2ee93b3bc6ea36952b99d6cc9c108073e15e254512a3b19dfbc7f06142c7834fe35dd9bf5d00fad149605950891b892aa2944b94a25e1619d707da3d8655d09b32acc04f56df12e979162b82797932f9d4722f81f9c35d4120aab9a215d55b180cec151067c0ff5d8088f64eac6847a6aa9d4b9afcbc0ea352dddb19d6e1d0858c6e461f65a743aab486a74d383666d350204dc06e5babc468c3e150c3d01deb50f3c067ce4f438c69018a823ace5eed205d40ca604c4c07f9d7159ead14b620b6770a1ae666d0a7f1507b6cda0aa78e6373faafd58482d70f80bcfb45420d4154919266f0d7cb3eac1d418bf95a3af92b19179e4ec17471913f24433d9023804a2259fa16d51764952ce76c1db71c33e6716e3a06c8768205be95cfa27a3909dedc7e3156abd28f77c55a0547c2f7d4d681d175a9584abac040d895ccec9b0c4634f94c1da78f9d94c858670ce08ae0b7d4872a8ac7335ade12f1bb800a38c4faa9b9701f3d01eaecdf2083eaf9960750956a1d3afa42e905df63e25993602628163342063bc0219666e870917777665d031ff047bf002b0bf8c894a4e299b09521588b99cdb1a951243475b077a7c521230bed5c5d69d06a52c8437349d81b267c326876c786c5f77a2e994722fad458ad733f899dbbc2eaabfcfc6e20afc8420ed5fb3f4a9eda1f1e887c26d409c44e6a03ea357c1c73edac12b7d115396ea42901fb7a148488ce07529f0c2eb3ec6012a2bdb4106ee7102ed4dbb8232d9e1ed267ca5854db74edd71af772b76d81cff5d82cd7ba8feced602ed24f1a381c7be68555ebda57a6ee6ac25d425d24288b909a9f340e2e046de74a20f81079a662caf6d493cc120a847ee9cffa1eb1b081b28f22d98b4d61ff2e1c735b0a3642ad40d4d922a8cada1a84b1aad1e6514b1d1da41705d9b37b12c519aaadb6ad42c55c883366b978784766bf086ac1e7670c1ff4ac766220e92cdb90a4f8ba16191b84a68565a39029345340ee4578ec4170fbcf86868878c59e6e4a1db8c2a2eca92e4f92e0a2fc50e11963a8650a96cd7761dfc7b56074b9def40e7116c16c82d046ef7b6874ba33eb9ce785a510b431fa62790ba8ee633b063bec23afb8757d79c4bc013dd9d6b2b08d8d35062863fdeb2d735b4a6e70272ddef35761bf99eb9a52f007d3dac2aa172fcc0c23ef77bc84b6bb3897e6cc7b370209d9d0ce611a17752a4e63618f4a30429ab5933a47c4c15e3fafb07f0032765119aff044810fd53a691d9a833b264f2fc69a4478e3b33923bf8765d47c15de75caf843e4628fd21d1e3ad12b2b3df7f5d3f210d2062ba495441c2b0107f84ed2ff8ec5200efffd0720ff4fff7d65e1149fc588ae2d35a334b24e6a88397c9e2e73a8c91e6ecaf6217b1b1da43139f9079822bcd18782bae257afb27db8d4add9779951e48d762e96b9ac154ff2a27186b0cab0622dfdd76a04df0547b64bee47d99cdb780bce1e42e3319f938d4e5d251097c9af94ad06cb8aae4d878f91b015f10027d2064103214e130e99751cd1f7057f31585ca6d9a44462d3e6af70ea9f912334df443b6af8da5f6338b3f8433fe7f3e1f5f939c132876e35b6af442789e63d5509a4a0ff5c5554e83b727f4f6c5be7faca77fe02c3aad3183978dead6d6aa877b50c246c6e9e0b1e1427fd2319fff007faa9cf9069b720a0d5a12145d4c9575b2e99315a2d9a5a449136242f3f4c52f39384167f10fd5f1159aa7e66b25035e666cfcaa69641ea4a93a19a75fe8e0da7adb4cfe811210484f9a22e7a0690e68cb7a047e77f74b5aaa1ce23b740c7ea9751e4012e3d2a75a0287600fc4418adfc034c55b352373cf181a439cdcd3d9a99af6b988dcdca700cd2413eff3877065b0eee30dea27a155774cbe3ccebda7090c52bb974df00e77970321a8694b74b62311c170b7015f174ecf8c3fc08bb25cda2acb2b0026784e0415e449379ab65244b4869453af2e1e8524a152c7f469f8484e996524ce0df4e3057e8c8f8ac332cdbaaf43c986dac7ba929cc82e93f81c07eeb9c7c0f62ae15d139b73e0b1cd85bf0f48353c185bd41127a7c4bc4ded09bb87813bded0d31784294bf29c5436c882a0c7b8ed10fa7cee6f248dda245f58aa92304f43582b3a8d11fb119d3c18a3d52541d169c4dcb6ee5b0a36b080e691f1837c336e67d93c04e6940a4105ebe01c76f42d2c533050b5f9c9a628e13cc4a0ae4a482b8884a570fb829ef0c23270a43d846ec2e341b3259902061c45ccb317a749013520ab9fc7d7397898f1f83e6961b0f327618a3b4e30c5c7310b052cfb00b986fdddeae58f0f9596d9ef80727ae4ee2bdea186bbc3d1986c441e0c5119d81e1c71f1b79e803fc3106739c6f313648c208e1ddd032382ed111ad452e6654e487fe8834a542cdf72618f798e9a7b8ab23ad6542fe55f24c3c8df968eac9bd06c2d9a7c668e66d9717fa8cb6b261635d9d2546f6e307929efa7c796bbef0fb89867ed46e9fc88becca5cbce7fc3a40e92eb7214b42caa1d80422f981899fba8f0d1dfa2bad0a0d0c2d8eada48df3640508cd1393c479855654d3bc80903b32418746c97cb5a40a827232247ccc1e258f6b0a95805d55ddaac81932864b4fde370671b27027d499da8cb1c3fd13dee079dbaaa5a6fa1b5a1f120d4aac97c3f8e5c4633aa97a24c2a41413e2fb935e40f87d34ef4ba7dd30061fed47571d3372ed92068f19292656ccd095bc293dd2e2b988a1097559b5892e328f689eb0ebb0aecba93d95b07c64cad41304b5b72d8a88710a0f8b83acf4f5f3821e86a7a75031f154df41abab3c89598e34528c807255be3ee1a3559602b88498963ef0cec8457363936030b12f65e0d05ad7f062fa56e445307a232332846195ddf55211dfde229be58dbca6813d6e1e551ad7bcece8f1312d4fedece938798d75e7ca659a2e64c95386a2799f437ddb4d1658d185fcd569788d7f39ae95bac4821329ddb3973f45a8ac44dcce94239317be87aa90c828c8d6104d6d539bf5dabf281e95684df81ba823d3df6b07ffab9ee097764b52b9b2af076a0e4c046d845cd457195b13e3c18e011c7e1b62417546ae1c77016cbd91ca6ddae5d834df9ee2068b48bef4925e8d3730dc95ea74914cd95bc9af53276e766f06eaa055eee9e43a52a93a205db33f3578852f8b8ffd42584393bdd6f3f045b6ff160b1b4f6e9ada1b91a10aa5501f965290f8d0ab850241265153612dab50ba66cbbf8a50b6b620c25dabebfe7a22bbf21f5226c22bfe33ea64b0a2cb2c9e0a4d26fed03be057bf9d408719ae01c19c9757262cbac9c851cddac320a3624768976812b9bed527aa57f25391e8d7bba48260928932226571991f918dc898ff6ebce387e0b6e9eed0b7c1cac616ecaf5fcc6ef1ef2fe3b342686cb22a99d5fc7794310d000da2cbb5cdff47fcdbc2aa63f060fe830aff79b342d2417a680334a2781af77602d39c77d1480e17d7673e9ea1c947b69e02b02dfa24ee9fc31d9a9245161b93f12458db16229b3a7f886f3c8067e1ce6d661e7d4931ccf9f78d96709a92e90f2759a7863dd02e93fcea06226a2bc81c974fca4b9df737e27a55eb20ed0651e0094622e19bf6e5f3c7c04095cbd0f3fdccd7a5ab321a8ba4ac5e7d6fbd148ea6a6c2ba7935ad95ec29f123669023ee45217b39a26b8ba29527b54188ecec59104d8efb090f2c4afa579127f388b5e816cb915dce673e409bf5b299dcd93435ac404cdb1921053cc6e41f03bc3aaaef1596dc273a6db76598b3432f1385e4723d0276be71ad9b3d1d8472a3769fa2b9794a2ca955c49e99a1a10c714de63ea0f0db5b6e9203f337b753ea9ccfed972d2993c9f40a9844a3194cba9855dde9c113e9af117ad604b187104cc5fbc4f413b9ee9cd24fbdfcd434bc84d4d20555d927666f8f86852b606c3ca3ee6fd33324adfa5a155c6879c6f0c5176c72356b76e6807cf0a776be283797309f7e84ce5f2f2052a66b20811ae57ede5ed745a5b49a26c36b0a620286013e4aad373fe00d4689a561abb56435dfcfa24ced38c7f52d0ad1798cef42060f34925da3ab2302f19bb80aa041042aa1a49fc2bed9c530c97486829271ce476da2223885a3dde078e06ef249775ff7e0ebf4dd8d23ef0323a7503bd0943b8aa1f7f3772c274e6d0fb0c2c22130d1652e1e9ebb2b3df4f2efd8b62a1372815979997307fc1339c1421309c582c6a18e3c14d79c6214b1898874d833023473a41c5ce207c9d10519949527e320f94b6f84fb674d967ce0a8d077f46269d74faa416a3f4812ae7e530211683ab787e401ff262ec3a594714274161d425c8b43da915b8c993a3de0cff09e876f1a35483e8c642082cb260797eeafe9ef994337dd34ad4dd52571cfef2774a3aa2ca90545c4cb224a3f7cb90f6559fcda11df653d792ee10ac3964dfb728d987ae3988b8d12656a1305de66e0f4ee2ea606de223ae40972a8201c0ece59512e5c742987d2cc2d46ad643c5ce6e529f6c9a9bd77d65be2ebc5ea8ecc6a0a581d8b2d2d7c60f2f267174e3ff28e4d40efd5ffa299e696e1a49de0cfd4ab6ad6cc445d945dfd6077e6c00a1b35faee5783562ad2fcf232ed9fc28a24607d61c2f28ffdbd3646665aeadc5049b81e39c70be5699f25fbf69aeacf9d2f1cf9ac2a3ff6c1d9fbc6f77ea8e05aa69df545f4843cd54422364be7255ec0c66ba3a4745789fa073ab71bc66d2dd4a0824b463cc8dbb80c5e11d45e8bd0697fa6b2a08a7ce4ac2dc08c0783e385e37efd42d2654d6ff6f392eec03ec026375708b387c1f2e4cd357a4804656c507586b2f964294363d6731c789f380ccbc9b185b577aab91778d88fa12de1983b6a3032de29b7913623063e9c362e49bafd8772ebebbfb02338240d8b5906ac0f221ddfa6a265bbfc2e536394067dd905723c1b75661f12e9fa2df9c9950e5da99b4970cadb0edcd30ebb8a4503fcfbc8f88b6ee3e86efd10e1ad09dc7494c73b27e0aaf5b35fafb12f6d85a6c32cb8dec895e354f8adbc761fd6ed6aab61ee3f0f5efc3065ee32e44d53fd672886442b941bb38f36385ea048001b3b9e9fdef806bbe5bede084b5bdda85542df60d0f94bcf0ee91b70b8114598f9f2157913a136284024d39155acfd65097ab2c7518c27a26b866dd315443e4a562689d7fd743ac45658f5d7c7b7686d120793d460836b82642c3ea8aa80b741360adf3f73e5310819680767338c05b44f5997e12f43885f32ec4a78dcd7423ccce9ad8f356eec5bf0b200dc77c4a49afecf0e52c19f69a329934cde2dddf84519506f036b43637b5dfef222f9b1c74b8de11ec6ed8b502a3ef500a756a6977b4a899dbf47932eb9c384b9b08ab04e4fe461b22168eb4f3382d2beb0bedbffc0a67433610bc00c851b7908d6eb78bd9678f1f002a89a682c622b64c8d63e57556396a1a229ff725c629895db6143bb0e8a8d56c3f0bb4b04228b4871dd56808f513f2603b95874766f998a931481d2fa33fa29c377539d238e671ba78c241e0ab0061e1362e85d02b90010b8d7a467550678cad548733df22b9c5c6205b35ecde50fdbe38174a6fdbf8d3eb5b22c63a4f294d27709aebd888eaa719aa9a9f6b2e3b0d3714cccd9ac52bdd8a34edd8cabd6d106f3e9b50f8c4c4facc51352419a0818ea64ead7917009d8caef6d5037cfdac9e8ed52326205c97306c1152c57724264742698dd0d24fca66537741a9247cfe65177f496120bc21e661752dc98127252053a3347086cd737bd16ff5d318dab573ab4a4ff12508e2ec5863f70ca6ef4a3c40e47db3bbb4b0f83b7c41220408c68e13f3a9d33d8b25692f165aff1bb4e63999dd32b10012993c9b9d89eda21e46224b8065377d370f49f0c3d611c4cc32faa978c12787bde534442f22036ebc998317b8b83b0582f1e630592987a051372fef92bf220ddf31d173874f15f540b47dfb97b4ac81ed88c7df9ceaa7a0149dfeaa54afed0d8c803a244abce86ae638399f49b683522f1ee62731b36eeb76e64035cd159cf83a75447b720f8408af34eb3c81deb45e27644cb5ab2220cd6216f4a0347efd18ee8deed4965183ce571a8b3e2a2efc08244e810d0c3b78e7b78fb417e6c062073951aa7e45aad5a2ad6af6e725d97c2e8b586eb94011f6b43012cf14cc6ad091dfaf6f370d26b4a801ff8fa6e78399e0472108c58e6d2767d073141c04ba0de2785136de4ee96575c56a33017c68e56c4fb248b2c5ee7b0f8f383e6571179ddc267ad3db5b79afa9dc948169d4c42fa56bec8ff6e804402a14cd426e7178209e14f0b24070241bd6dd74c9b9de02a30cf32146b23943c5e0a993cc0c54cdb21b75e54c93dad8b4416e7d6f51a7b1fa55d048259f29cd61273b9a05067eb48255a56b11c0cee15b1c218ef6502e445aaac248986a3252fbee42bd82a5fa3ffe43f21c8de6fd1ee9ad1900b8f5730086bfd99c1d58c9ef3ec401ee4e6fe1de827e2e95e98d5c66cf1aa6adc7b2480fcb82a9068f83e3922d525e67c2fcf3f287e9d7d989c72aeed2d2c7c0e22426e55ff77e61a4a1a7a97039664ee2403cf2d1b9f68a9afdadb0860317507d4a6d7b3f63fa65c61c15403dbea7617505ac3c02eeb349ca612b85b1a0ae5df2f293d537f49a341cb41ae3888b7542c92058afcee1f91b6ec1015a50f636ed533d7a36fe0ff5abe0d51434b5be37ef5ce8febbb31c9654f184556e47533e81bb03389afdbade4ff4446680d9dcaf19bfc835d2db460780f5c9d88863aa95e64cb22e7dcb12c7be7343ebf23e70de16de6bcc272d171323c2fc69f12dc695b33029f154a08a2d1aa3577b222317f4c16477eb0ea52657ebcca7219e0797b6799583ae2a7981e8ed7b473e4766323162903e2853e1491e13994cbb7e9aac930a96810c73cd7ae3856ee7a2d815e55335dca54109699d87183d9fb367b7e394f156f16ca861edac767ae80c7898e288a38aebcd60c4178226ff8591e457059ceb8d7c1857b9d63c479ea147272a9a630f6eb4f16c70a89c1e4587e0a1919e4713b2b47ad7335151ac4b2f1d19279cd3faa0ba02dc2b9b5088cd544d98bc9e1cb3bad2db1c757b84ae89bafe9e5874d27f0698551965faf381235157fdafbfab5319b51999be18d7c0e2b90441e58e23a91335e9d3202ddb55c69facbe0c58866fd4a520f870128587f495e6b24a7fe33686d42c494256a1d8168bed5cd84f74a8e9674f46cc6ed49ed80bb4ecb7b463755ebc33168dd0aa06f673877c08454471f69b776b1ffd25ded6c9b700254f1a93eafcd85f8abe629c4f87b503845dc8f9ffa703212fb6d46157b1f321a76c35c81bd6782d2c9a2485f66d4cccfeb5a1448f9a853ab4da9112da0e45f25d86471c9a80fa70a2685d0394bf815862e9f5bab31da7d0e723c34e3bd421ba7e34fb245098d1c2ae12ad8c1d6c557150c8bdd017e1b64762c9dc2dc3aa64f0447506584a89f5f0470f30abea21f0a2f58bf79d658a3d7200dad22c79c79df45fb860058eb774a8b0eda129f2845c13d409a88cfcbaa897e23c5bdc3adc23275c5a0043b06371dddc2645d15e25b78c4b1c3b1db2d977ab515318f192409ab556666ae814b1d243a0c198e14e89018fd7f462a82fe392bf06eb135d5b5035e939e1c0820834b4b33c94c80574ea6148ee45a064b348664e97db28ff3aa518f210e02fa073f2907a7535bcd88da9ea2614d9d16bbab633dcf11d1f854f01b095d0d5ba84aae1bb82e366b3f1f479b0e3b0204c0a2b5814b0fc4e60487022343ad48a8fe7836d0bd7e65d8f032fc4047c73c9a65a0fe2103b339b265aca0c03405bb255f18c4085d34c5220a32572c32d967d7152bb4f1114c8ad38bf88f0620b3675cab7f09b7b654985d9fdad3ffed82181c86928274a0bc552913e5b76ac1ae653ccd46e3b646848a0a3e8f52a5dd43866328cb2d03a590b1b0fc5a525c8f2fac47a8dd1ac3d1718f5632cc876c06f2adeb8ef24f3214db593787f90736114a152ff9e581353440dfe92fc8a3d1096d88ee86e2f17428638e55ccda9d2fd97a2df3cca20444b359df14f40777b1724cfca0c212d39290efab175e12b4e54d930a037155fade1da6d30d36eb564ea1892ad3f153d792890445bc2165aa64410425b556a2c898d3fbe3f9b72e32280f9691d26596da52de2207856ca38ad303aafaa87f02b8f29e0b8bc59cfb83e7d4de3d5b880d7346cd9b37e96bdef6ea0c0070f34d174f5bf5f355f4cd750fb690acbe7995995a57540b7db7860ee96807e7cb83e766b4b7ef8296aece6ac38f810495aeac4e6d25743b970f25946271f94d89c68b0ec5eefed99c49d93c30d4fb39b55ea9b3da0565c90b0040c2374b2d2a88706d5a3e8e1ded0e41b407a62836222bc64e75e9a7cdfc01600492273cfc95a132b95b04600e2426e568825f7316a897ec5c97818bedc904af847b726a47420aae1c08a581aac12639581308b9593dbe30ec6bfc82bfcd381a837514e7d2d7dfa26da29d4a296f7363702e0346fc4160afa56dff6fb149bbb0fb88bc2d5b0f3c6e23edd98bb6253289b105ec79c1d90a92212d4438233ccd09ac257be5217eff20c037817c255a252fdb14337d21641b98405f5ab58c740d270640bdddcc9ccf056c3cb1a30f0f05c5919dc2d9f08480051381fc2ce2e85a1138581b66060dbe48a5cb33def0d15a98e5135d0445912488c901571c75b99a8fec366a838639d4b199bbaa188771c8b7f39275d4a3a073949297e95353f7e8acedce5a00faa26761aecf77a3dd0e5117fb43f34000ecf7a98a6b9f26ea62abdc148a00cc5c7daaf1cc0a1c881eb798400c7326661e3706012240f2eaf1a4d7b62061193cda4ee11ee6f5e62e8e12c861c7d1a6899d1e1b4a447e9977853b041346aafc314aba17527963512e542553b53b8736929a4dc7e4c32cf7322808019f458de4444555a500dc669a556d5c1bfe454239e1094071da82d2e6374266a22a4a625d0720be6efd58c763952a741698c22534125702b2ba69a8f024b35500c3dae38513a87e7aa07cd14fb90a1af744de46fdae12ca73b46e4d35ad53927b69fb9fb46026560752558a31f0145f31920e051fd1c4503f349fa8bcd49127b5619da53d4228cf688f1ff6c506d50ab7fecc7ac3569358dffb4705d1a0597b37972aa14e21f303da178cd18a76ea85c9698a640728da201b10b0e3518cf17ca8ae388c4f4ea7edb381fd6c5e5653035db49f86eedbd2211d0eb44acce6a33a91c0782f0beee1156de5d6665cf425bf4fdb219ac9607630ead8fedbff9986e7862294f3f88d9e05df287be5c1c9d1272042b03760e29d85f66bb199add025156d62e9443cf4866d6a22cca43b30c9cbe5f1d3b5c92d1d3b67642f211c0846b243ced11fee82c20a332cf660c60ad98b14392c086396177eab6b18c13ec7dfb0a04782f9b8d9140ccd40a9ee49576085aa296b36747c3248d90e524e5b735d80fa39211e2e05751fc1986de613cba2a360c4ff3199dcecc2defaf6db862cadc4fb77dfa3ea37d0e4963c11500e9a3bf23c299213eb3bf30af9ec0613cdc97e3d49f6b39bac506c22543c08553c5485636b4e6334c92db1e5eeb86312b5121fc9bec768f60ed83eeeaa80ee7d389d4141db717e17b3167268bdf9e9ba16f0e0c2152e1be6983b987eae1e95df1c21eb7a921cbb619bd1ee6b84f9d2679d19775537d3518a126f15456bd4954c9dad4c636e6a6410e6aacd1d84a4ed8eca42b15d2faccd386670d5906e3a15ae83492061cac0e460e9bce7b3204f5672408dae9e64af4da3e26b3dc0e83c0366c7d86af337a6f9e8f79c6c73bf969ac3faaac03df9ce375ba43a67cc4f017cc4ecb8dfb0c7c304647b2c396589b459745cb143d792f091cf1448adce20ecb674fc85e7f9c3c4a5cdd45c96b35847605c02d86ca7ef17cac150fb77b332816ef90f168f36a803dc38849889f90b9a29c4c368d4c4e9d515797dbeca1ec185b3a1ddd0ab1c2d69f59dc87c9e7d365e3c76c370c459d154883a0b81040a1f3b224ec06b3def58bbdb7a37b673cc9051cfaf3a57e0378b4dff57b243aa577ab9c900b1d1fabec9c6bb2a64c0bd68bbbb9ac08a384c33aec2038a97dc4a171da6af3755b288aa99bb5ca268464226ffe8511014e5239c9f23ae7e7134906ae2424e73ed2a5c263ec076787dc256dad2fac5d4b0f0dc9e24f0d00dcb4e709e1a04c566447bd8f6e2807fedc63ea6755440b6e5fd6c266713e590adc6b95691e1b156353cc1b5c61a0b2811c17397c372236f98491d6f5c41391a9b0e66adaec6778535c20ff13dc46bb767cc3722d168c6a96c1bc00382c8a7d006b5bd76246e36bdeade5db5ed50152e690531f7fbe3246b0c32d01273303c7e4dd230891df8f124c86a8acffcf3695b9962045a5ca2ec64033715cae39ec7b098f097e5124b35d33feffff88687288a50317b58908a673425ee2e208df38c574b8f7ff186317577a993fbe6eb3f848cbc38ea21ca80d3ce29a10d7ad5dea64b2318feed1c4eddde25c0569ba9ff38367841d75eb994c28b2b4a2af814837a1504eadb150b90596f1f60134516d69a2537cd38643d50901cdd5a03b4cf248dad6d6afbb23ae62015b49a7cffebda681223754374411f5e586a77cf54f65b17e62d41786a7068746bbc2f0efc7bad59a3ed648bfd182006c4ba7c7bf1c77a89c253b682984758dba94a0299bdd0f5f3832b115fa675eaa1bd72c9e001764348ae529389430c10b5c316af5eebd660d3d576ebe605a4d2233005759cc421707884441477778e4a28493b8611bc9bfae5242c7efe598406a37160ad8a98514aef2b6cea77dfbb0c6351a0baa14c584d2ae074dba7dfb9a94e1c5aa02ecc465f1225ab4f460ed8a7a226e6bbb0d36ee593256be5ab9576c0172d7ce7dce23a30c027ce56fe322173beb6343fd830b32599cf4e869b6c2b8fc14261de6f6c6ff54a639f917c4295f6e21b0aa9bfba800ea307666af4608c4f1a3dcde79aa1cf33e2b221cffc3613ddcfa96325604cc8a6f4c5f5e515cdacdaa54f01543aec0d3890b4080faa58bfe8e03cd31f0855a31b403542fd496e36bad00cbf85f5700bbc4f9a4281bf11eda4cdac34cf9e844d448acfab1ea48c628932c8895d3376336170f3e0549bb03e445dea64b5985ab4f60094143e946304312230c1ed709b347a3d855b508bc5948c4f6f2b22e19ff34285daf6f1686c963b0ef09d77f7d37d50d2dbf1650b4d0eab7ce21e57ba47d61ebc096aa1dac61ba2558b4c8d74665bcaea4d7a35249d7e24702dd6be223315ff49c98d187e66093996ea1233b0f7d5f12f159b0b6828169b9bad4972951da2c863ebcc404f348e6020f5071aef6eaaac8455fd7f9deefcc7d48c25d9f65a2d98fb905dadce04c5985438bc44d71528bde6f66b986b05aebba3767e13b92b671b0e54cc9e3d61380bb5078dd0af93f455eb4509b90215ba9b808f84c65452621bd1d2b65a7e583797b500a761699ea40af27e42f4aa802affb8b880fff8499f2f571e330ecc9bc37084e3e04223b0ccef79cfc036ffe410d7a94698a542aa036949f59de7b92a2dd63f31eb7415f1d0558605bd5708a7f28559bd17a1fefbbc005ae57f9c4dd5f7e4981060f5ee84d8a6aa081efe201108dd0e9e45044ba03d67c2b48b3182b23e2e8e66e9a45ea5a33eb3e665971ee4a02d8d07d94f48f0d94c0862c56bf1942d07fce5a2c18460be644a691ca77fc25c60760ae01f00e4dd9a08aa5443cd1cbfcded082a9555fc1e52c7effba072ccd6d1a5c3377947c45caa7ba037427baf4a84795fbbf9fa2106ec58bb522aa8d8c7a556c7df62a9c0acfc38b2bb8f9e48e871d2719dec6bf61214f9e74f41bfd1a19ba5579bd3d94a42db3976f587c5a378575e581f9e08f1148cd690e6cf1d32fa202d645fa6aa3a21c14d68382e877338e4dc62a23ad438c53e65c6166aeab6ef1e1be97b64a8d401a57760da05bc00deee0c39bdce7575b159e2f581e24e5cbc51c85aa4fd4fc2e78c998a00f6a934fab5fec0a661ae923d591c81c8868ef99698cb5d4698ea1a922f8f7a80977202df0f17fcce5864092c1acbd01c9ef12a214ade125117d25771816b749727dc99fcbf0d05cd5b3866ff6d56d100d5977eae392462eabeda4b5751e9e9818bffcc132fb3174a39ff60626f13206e36cf59ea25a4398383ffde34442042f14dc842d7d812215b40521947315fe5302392f4cfb58951fe1ac97dfc9cea3fc2cd8b05018b8be225ba10e66e808e1bf6929a270caa0957f9700cdc01fafbbc0761dc95607f3ff243de149ce3108109d14084bac73063022a8eb00ead533f10e641405ed78899769c95ba0a90218093cec0568b1375afe762280e90dd35b305808b01b25f0aa24d09186176073abfd1f5548d98c821c5f8a99e496117646e276f507fea0c94a5bdbb35e69d03a9f8f6dc4a19ac2b29a3bfb44fee5a27f01e8d2e67041e2da028808d1bb22388b2d9b2101ed5ba6df739bba0082037e21f806c7d572c0c2be08ff08b109b68d5e677a5b594d494d7beeb39939941809cb1027af0467fe8c17a3fa3b8d86a7fe3c893ba155cbddba171db3b85fa11c04b5dc5d7b920744935e2a4f50f5f361711670f5dad9a8181f4662d192805bd415e550236bef996d7c6fabe77d9db60c463a5dde0f3a82dc83fe4a5ae94c524278707632649199053da53beb24cecbcd9a1c3251f6ab81a585bd55eeb259d5bdf02a95512ad304653579c4fb6a1a20b8f7579ec82ea142b52830a7a26d8f28ab231b7118aad0c4e25ea37356e935f39aa7a0f925dce846d26aed843be8c4a0243a1d6b1e9024f8c34f4d255c461f29ef7ed21d232a5cbe57a1c9e2ba1731a88d6226571e81b16bbe4dc233ca6f072c413950f3a843a40284ff07f35399c96d7402642432871fb5beba583834b05ca543d87ba6fff4b6b26e5f3b7fab4d7e7289a1e914d3baa93dfc6e280ab0f7c5670cb5603d7474c4814ab132b112e4aefa36677ef9676602acaac9bb11c095c0536f4ed7672c129a1800477c204fd0d0aea11e9a65999f918d617704061345438d5447386d8033038449d38c0ca2be3b2aacc7accc74919284a8325a473c116f822c50ebd0414c1e0a1a41ba504bc115086e4fdad3502e1c7eb709f07d1c1e9267aa885829222fbc8094090ea2d24627336d8ef726e2421e53667636d1d50dafb0794ceb6f5be8a9288309c36c5d89bd86ceb4dea061376af0b8c5f8851d8273a2f14d60b10afe790a4109c660bab3eb231131bbf0004697d4af4a1d2123d3e958fd65e516410699c7a497a15f58944d6b48246d1ffe45a5e7c73c479aa792459dd0f1bee6d4cbf8693b2a7f9a5ca6646efe8c865e176aaacdb0b9140186a73504668c98a47a4c9255c89b4b9e258ef9e3b2a3a15afab84714dfdd89bd3c58a1e2cc660ddae96e41e22e7af5e53237835a8f3aeab29939a816dc60b479be0f251e5991b2663c51a10d37f11037ac2412242deb32cf58e92349a86164fc08d2925336d3ce31cafe8e5e024ab33ed9a09e1b1cc06b50ba620e45070be6546155e663bbfec4f06ac385c52995ae186c60420ea09aa1f0aa239f6829e04e02b3d94874d91a2f673eaa5b28c60f79fbe637ec5e488dba018f31782d7561b3697d4ad36ef19637e255842686f769a71b3c3774f4b2f41b0c03d2392a3d65c8f609c203fa44aa4866003817eebb0d31fc6fd1915811ed6ec014bd989a2e1112597f0dc678a4fe44cde955cbacbae037fdd51b87cc14763234cfb51540d84eb44cc52dfe9b24a6d9f5fa7148b996cd691cb69e363975d34db1b430cc4052fc0d818996122acf8114a54441b07dfdb294f8c766c309640ba591d8f2e6633694e3150e19363839e02d52b8feb30888091bea621a6ae2df6b346eff80afe8ecd709bd3dfd1a2e4f9a023d412a9f06058e02049e6aad6668bc2e8bd12a016eaafe697e74ebba092b8abc1080d0597807678ec0427d49b1268f3372a5fff072c0f408ceda36237102ed1cc0503336d690c86fb0314b93fd9bef672d9e5dd6df2e0014f4cdb51e69874eaf003124c222ac70dd10b9fadc2b846b2104ae905bcf7d92d52eb7d13e2273234960becdf36d3044bbdad1acba6f3b43b17675b66ab214e286d5b9262174693c3b43fec3fe76ba1cfdc67367d5aa9f7791d14403df63b3f9c8fc5a44f5c5c3d0243a30f0d2a5aa2d626716cb5cb1448a22ff759b226dd48ea6205decd4e8fc1eace6bf5a1ab5e5092c942e2664cc7d457d07e93fc1343d9c45175c662594395e88e1f72abdb4c8582caee5342983a3fe9415e35d8a9f4e3670be5f7a22670c633a74d4b60341cee17410ba890d9ef12404c2c1485b412bd36b906fbcafd67ee33c8fd2976740062abd6594e77c7de70b6bfc2b40975e9fc97d60a0525d77c3e178d77c6809d99812bae9bc79199d66c8e081735ab05d03759f32b1fb41a3483df7404122ba2c91b5ba28e5ebba957d00c16f58f01548a1e580918574319b641f791ef09407250c62825c2c5f7b0569beca29d9bf9377fc04df7b6d8ca867728197758a44d674a24e5063716e1623117bc605fb56eec2893d80f5e4336405d02c0f6a0a11d94102dde03eaf347ea695c916f95fdacec3a6d4e45e5e3fe32a4deaeb7dd35ecc007916864ccbc20abf040e6287819b77959d8745a37a9cf9867ffed4c898d2e35f997628833a4d9974c4a587ba9961b98e9339ef912e3e9a70fcae69e266aa3237ab9d253fc3ad493684a7a0f7cc77f988f269abbcf1c6f686343aac74f643a3a8b754b1dbdc1c74147e8cee6357010b2f4c35aa356c0262d87f5ace9550dc0f06986bcf1abe2184089ef2279eb523feb2bff95b398367b4490753327d8d216b72cedff375ecbe683299685f933f486e9dd14515515403e9b030f47d78a694c0cb5e9b1f0cca17d1301c7afd117d3f788a49512ce8ccef396aa3005a2ed8751fc0bb3110297cd4e30a6a4ef4af235b48893e4e94138dc77b3bb73d57016b5278435581be6f2d4c17b857622fa6e21d7ae5e08f4fc66d05d3a849c036542437e6195ea6a46011d3746642285d10aed684c3f74315a7c1427c0a3c04cfd7ad783540f933ca80a91c7e747183cb6eba03ec99a535fdf3ccd4d880ac68ffd43cbe495525dd70ca16eccd239ab4ded16da3a16982c5fff01412d5fc8730e24a9d81faf1c78dc395158d76d664fba23487e37be607721396ea1cdc50a6c5d1aeb6049415b2c4bd912ca25dfb6cfbeea3fda3bc7b256c9b9a5bbfbda2b9aa8dd53e7fc718bd2821a228879097ad609cf545b8c28cacafd1d24973b1b95f1f862d16f86bb99721e8843aa1ef856c48866572b9721e36c7b6bd8371b724a255346a8514ce8bba4052158bf9c821ecd53a96f79e998868138a6660d8e6765d3b1d52f962cca10740fc28aa5fa9b9fad99ab73f8ce2fd313b0bec0c8592243864769969ebcf23090f87f26916d8e4b2cdbcbb0e218a5d0c7b8825a89b495daba8044b1a5602355181850c2082ff5642e7fcbdc4239ea934d8786bb3cdc769b83c68cfa855e722e856d2d806980d7f78ccb8e703a0827edfe649589a6775c3d1517a2926d8b4927e65739776e32af7ed9f76739da3b8875f8a2bb3ee8d6aea3f0dca07d06e5ccea99d9bb7c81d4d91bcb17c8c5cf3743b320ac56b3b40761dd0b4c2a40dbffbbe75e968e17fea645f2bbc1c2f2270e3003367ee4ebadc9e6d96109a2e1f5389cbb61e47b384e254da236f43845fea78b5d06632d4e7cb8b81bdaa66551927f05c3b2212f8770ac8506581ba7099fad2c09d7135fb025182c22657997ee6f8ced7c5b2ae423b7b466ac44744a1f0b7e2eb899c17d764e624e9de4490cb9abb94eaa7ba5fce8e3a751eb54dbe962d053263b207aaa8ff347a3b906650c2fe692f779abe80e6fb01afce42552572dd2c764a7ff469ebd5e129f8e7342ce22be7e593568941f8295dcdaa7fa5e4919d6a57479ddf6fc7818bdefbeaa2fabaec7cce9e4541b09661ac22db38f61896ecdb5f1731aafecc757cddc8c8d040c20a8bf258666e4d007a70c1586647af7459b6775701b6a5765698278f20b10b365f699e4c6cc020feac6ca54b8b94ca3d7df57bc93b8ebe9b8113a3287ecc6beda2a02933174dd714d39a005f17cade25efee72669a0b71fa33374e2854b1c41dab035b9cbd383c404615a77fb58c916a8ce65cd9ed080ace3937efc2a3387af2bad2cc3a127e46f735db050c5a74d937b71c17508b5a22bc4800b3e4d079db44a99c6e710010e19042c9165f67d8187bb312f4dfc14738a84cfb9fd86db3d99fb7869a29a8b4fba26eb5f8d4c79d6457175f1c102cdb3fd261a9ce38e2b9590ea453f6167191b8652aef64b352a2b7de21d72dcbafaac1b01ba8280009826926b504925ea94858f6b100f850cc05f4481083ded35de582b8e920a035e74872629ee3e8301971d0e7de4cf731bcacd8920b9f6dcf6ed7abef26763dc37a8938e27d676a03913fccb9c669fb3f878a9b0daaebf78617d9a5adaf6065ec9daf69ecc5f30213ffa851d8161767bcb409a8da7d8f8981bc473fce416342cb0f877ce13b182602fb37ccbc2b108f699afc4a668b3093b52f116f85e4169d062b3e91bead7e3425085003d94177dbdb3ed9daf849a65a373e6dcddc72aa21e05838ea99756389708661ffb44b90acc96a71ad3ce08eaf653a865e2f87f5c9436b7d930723c6f5faa030c73281003c6a264b11c0e82f25ae4846e1c1e1a5fd674ad8cedf064e04266a137897cfa413db9fa3fee1f00c444cf72332550ada7d5983b995d2cafd3bc9e3d880dc00d858aaca3f0364d72dc0cf9445b38bd14d530929c62dc2ac6e62a234a035ef7280ed15b3b748240168a3151cc516f9ad3f591ac44a2ca875a82956a05b069fed633d2628b8a425d57a0731d872c1cde0d09ba1983c21845676e7b21f51582772082f7cf7e33d30505da507bbd854f8cd17bd566f1b965327836cd287c7099f9d06fd571c45e834f31bcb2ddf6686ef06ffb083f23c087d16bfb6f5a0710f7c5a100da1f350fade3280fd7a735cc10e7eaa3a8415aa99e5e2c0d19b0a09b8b7382e37e70d60c47122327056793716353e629b227b3a2aedd64c28b8f00b807da3f1ad4100931d573be730a6b058c0af97f6f8f5db124684b5a012bb49b09c8c15e5ef30355ca160693333e98c074a1d858b47693440b8874d6bc150c67b664f3e8207b2ad4fed67efe5d403f74b336863b1ace843756fff38e50cb4b72f62c889f4201a4682d7749ac72cb8951b98a310d2a6ad2bae0af83478633d2aa5e42ce7b103edaf328ca4df2031f9bb109cdbafd895352954d6956e4ff6b90cd254858a26564feb3f83d57abc4923a42180ab0deff571e82c8bb3fa5c51975a556619b9f043b13a1b057765feb4f381fb323930f3f9a06f422ebee13a77cff6b8e238882b2645093d0d526703995f12833c2f5d9b3bfe8ab2f15085cda6a667fdd178b1d839fc9ae50cce10001804cc6a74d94ae2634380c27162043138e024529dbf2fc70147f32848856d8917f05937093b48ff7a567354005e905a2504046c534437eaf388fa2de1585392375fa89b4798ec523f2f1dffc7fbfaf5fcd06a527a282469cc3f8904ef15a79e46b3dbb7dd87a961879d2230b5685eae8e5b5ea490d150cd0724e449306b27038d9d2d4cadb9365dac5cf4b2ac6a3f953e37ea43eb392887a3341cee27d998a615247ee816b2d675df4ce4eb262fc762e644d485564eb38145122c1f1683fb296703a670f625bae4ad8e9af8894bb516eac3acead7c6a9556fb05bef11150abdd0c9812eff99751883f74b66c202db19b50dbfe892655d4ca619d1edd877fe621aa0ab377c4a464831d0241636319c5161078707839c13cf1bb90cd046add4bffa94362f587b5a9738cc28948abb166447931adc2af8899f2c7ca125d2e815acb6b0ffd498e2a89659d9d46096ea754be2aa28ddaa09e59781d63a00785fdfdae7055a895dbbbeecb3369e0e9e8db6b724c8a21dc437456ca8fa46ecb83eaa9c32e914048a4216f906b941bbbb9f3870d0565c4334f0066d9774eaff24d6f54b37e92546cd877fe757eaafb2c625abf9cfb50da1438cd70c9f4c4b602e02f238fbb0adeeb4d0732222d274f8fc30c170a73621797e1f6337f002f4b2319828245dfc07155846b9cae912c4d08f5ddbf32fbdca6758ea75f170a0be335f4ae3206df0f9423b3174e1681b39f288b01755a49e45ebe3a671fd01293334b4737deb143c514006f93dd8b6871048b47dcd2032a828e844d80781224eaa906d3ce9ec6a4134c16745b046eb1a146eb8c64fa5527b291209100ebd1c9cbb406506647b9f55e563c8f4e90fb3541cddc8b71aedd56fa4b8082c870fe8ca82ff4038c5fe33caf26f01ad6ce1eb2030fa4d40a80e8985598fb228e5c71cb71a907076a3ed6e00b67f481dcc8d49afd4af0e6e97ec91561042c406b20e23242e0f02b0f3a272e03bcda70a06dd8eb1557cc45ab4fbfde633b27cb42dafdc80ef61468b350b462f207177c5fc8b6a36fc0afe150058df1c0219b87b9e7f1a507bf3ec57e66beaf268bc18fa6e1bf4916a81d4a34ede081b26fc8dcb79aa6c7a933528bd9c129fa8b28c52b8ea35ed6b8f5c9e010f95b89953706e89cdf046d4a79f3176596794ecedf518ecd7b01c4ff20b7ee65d0374b2b6b0a7e1822178b44692739d80acc2d5dd429e33f54af7a579782d3b9a3b758e4606831857509864036388103242c218cbb2ea4b54f930c3a6d30b4305e3781c735213b3b887e8b8b638b4c7ea3c49b3b1be6d91e769bc7b03f7a211596c15ce2558a00c1a9f42a9a7e973387095e9e0a5c3a80ad0762ed6a4e02b92f7ec59bf77e71dbf1aa995a94c0bf2ce7d587fa0ebcbb6a1121ebd558fad76388500d74e76f708a25cc3e26d0f86bf83c374cca1bd2bd4089748ba9379b729585b8fced592291fb049199e4e069bb0c45861ab8f72290b7163c1218bee0530e809d6747a6029ddabaf15c4823a09362a2b03f671de7d8ee1d7e7c095bbd9950b1a0a11c4209ce7cca2cead207e2a417a1b2fa8102891b359154dc0824a89ea03da9cd0e76c233161e866578e8ef5466e10b271d02d306732ce264f05b211cf857db9824f406a96ede96c48c6762fcaf0ba708ff3bd5b3898971fe6c7155bdc98f9a19ced653260cdeb2e3508f9364bd8a5889d26f52491e7cab4a0a75898589b11198ef8d4bc17ef13967dc77644d5cf30001612c349f7475e990a369a66a9cff17ea1459edf5bfa9b58968e9bb49d19bd40eb928d3a97cf8efad6b754455a9e3dc2e4dce0f863078c8fdc4fc1e613edbdd3aa77a5d8019721ae87549349787af98d68046fa285bcf031a5d4cb75a1f9b3734a4f33bb4e5f6a9141ad2d79f0b5a790f8ea7c4b98e6d5240b7e5b78d4978ebf79234826d0ca0c885f141fd2425d209d6bbb7f42c95ace1addc9a43f1915945a813ae4843cbffd62a6e9cde837dfe8b74d7740e5151a188406056050eafca37d9a6f46f6e94b46a5f6eec13534cc9a12bbe1ab7d6e8752b0baf21849a7cf1678aaea4ca2a8b9ec28126d926228da45476ca82eaf26e06570fb8c32d895fb59d2d13b61d7398eb9e73dc357c5775d96a902c2c81ab4c619ce7318cf6d6a08d86c367fa681cf1a258d6c8112d67f0661f5dc1242f57e90acae7323d19beda9f9f702b5ca85a99eb24eb86923b51d8060404eeb01756dede341f0856a92a87b5b0dd3fc72096b813c2a5525e835f19a541f0c82a711f8772ad2bad28d05398a7c8087e9600de24f2275467b4525d407ad4caf83cec225ca010d6ea44c2ac32cbc7a8b2f043ca4967d93c935aa35c72bfa745f4d2a610b03840f73bd5c86003aef4af275ccf7c8748df6177245a49d982e086d9a4d230a2ba90ce402e8af7a7a19c2e1539edbf297c4aa347560e838e115986801002af05bb8508d447f2456e8ac32762cb04a33e86b7b10ef913784226dc95642569e7389c6007a555a7d9316a36ae2c56200982f6342c20d525fce1be70efd7acd3804917837cc605e786ea4ae5ec97e07f5c34639195d6e4348787b75d49f7d4462e5ed355dd0f4b7b94dcd4343ca4d5f7840159f8bb7356d87cadd7265c5d773804688befa1f64ccb53be19abb1122052a9f88cb6bef2fd680a5ad030a4f9dddc0cf61d6a94ddc4e5f620bf71585233c1bafe4182cfe02a55c2d2cf24620b2932c2aee27e49292eade3c3f912d7a41783672a026be3acf417054ef948b4e1856d7b70958c8a0dc80d60e313df18342b8e9034d531aef4751d48506074d5b50aff00d477548ad761dbafbb5b9a78e1ea292aa622a84c6eb43c7fdfc596584c3c0b02c63456c7e3e9e148bf38a37cce0d157b0e60edf036042038c651599f13db03402d8929f67bcb72fc4f0405a55be0c339011652880ec8bc8e7c2cec6805e85af6372a787f5a886960960a6764a5964545cc5263c6bc4e3c4853a66a280aba37ca4d3850c91ee3877620a8305be1883b41dd419f2a004c14835bab4a66562068c7550df3517df7ec63ee5d24adeb64479336c4ee07615f728ec71571198841b3a7fd4d8fe5a9ad0e8c5a8d35a320bce35178800dc1a5f3e5ed72c84e2d7ec2ede6ef46d3dd85f6c8f95d67589e7d359cba001398799dc89716c1266649da6ef1f285af327653441da78abd2189031f111fa0e9231af7941b389da8222b5324ad760053c398039f8945c11db808deb90b5c01855053e656232f2c4b94d6000e022603c4df79085956f5654ff9718e0a5bc6de3e03707e6902a6df44f96c9773917f6c88f459b376a5848c13d0c520defff2ee4f0d40b8b5879dba9524a1af3b115b26ce1d715587cac1d3de4c1d11c5eebd918b45a344a7d646e62deac19eae06a70c0d7dff9be7d6c392fe3c7c4e4d361b96432666fc90089697d925b42331131f70d59a7bb29fe811091a7f8de788852668c33cf6ba91a9e2b9b81f37a786aa3cfaa5e3466e69e3da10c5ae3bf67b1be4d2d34a666b721dd504e46481d8811a9b73f08cc6b1a00bd2ca16ef39b9267a04e4ee5bce8770d949eb900f0b1fa9aad825df042e2b1a7bda10bef0a0496a4e7a746d71c70c933142bff4ab6fed973cfecdc50f659572c69bcde570c9390f94f184af76220ebb0f1977efb8733989ab826c0e64c0a9da5a3e1c8b132eae8e287ebdb64700ac7114c9b1da1ffc20df7bea236c3d3a1a8f45ccae4fbb837d9ccc3b24eee98e53cc4c89de978bbabcf109a6592b01e77ec3ab23b15d9a0a44e67b8c70fbd8dfd6a7534086bbb16303486561161941d6948b9522071d76a0261bb34312d5c9191a63920a0d26143b7a8557119eed9456e45f0cef52fea96d74ff2b0e30fc79c9736021096d258ab541276b2375bc3bde5f2956a6fe0b35302e8dec140f6d17128848b648653e848d36794b5f4fd8dfe1d675676b5cc8dff549b68d2b85da215bd0aab4ce80337b038091c65dce4fe8c32b4978da37838055fbea7580e15a91bcc4629159fc7c3bc952171f7c5887c2326c4002513239e5e23041308f6a607427fcc7414c2239096911e4002959e89e1c10383c0279d30929d8c2826eaec2d4a880cae69699f50d05ebe1731fd781f3518471cfc8ff04f57d19c5b968c2631f26faf38c0edab062af79045d7e5f20dcc81af60b69626a1d4ee038954f595fd7b5c6c3facafe165ecccf3db12b15b143030e4dd393b7af07a10708a6c244a9ffb5cb14511236627d5d59c4a3bdca56baf15172f115efb128a5bd6c22b70f90231336b18d53764110519535cf23624fa99e87688d507773aa0ae996997e1df0583239bb1bf31d483bf23b6c4bc7255e188af9c53efde43fe995783619a51ed346ede50f5039e70225a38d334f108f9d054ca6bb5b82a525fbe1f1b260aee0ba70ffa65c5b9e6db7d64236e23c5c79e26e5ab23705822e5f28944a4d35d5365196f796bf62380a3fe8faaf9809110b4dc2f5ef6f5417ec70d1a35997d5589d2353c7fbf64e2cfa4e4dc81e5585ededf647bc838a3ecdf8a6844632c1045ac5f6aefa6932c2da1920cbc3c07aef92da74a1bd9be39c3a269c21f272799909d8488dab24bf3f7e470f60acff6848e98d2864335fa2563891271fb859b8902dcb44bcc43641eddf07d35c435e4b1ef60dbc944ef24cdd2814deb7522e12c202a8ad6c97cba56cbb091cb4870515c0fb613936ff1f33b8646d1b6deb8de76cab0798106772cdbffe262787985ad37d3fcf140512ffbaaec34167a437de2466daefef13f97369e44e59b800c049e9e480cef682b0b790ed553549e60a224cfa792854328b9de6ca570191f665ac98f65d166080faf94b4af4d8aa6f7d171a69a55c87e22550199bcb2acb37aafbf37665e71fa3a3970b372f70c27e9ebf00dc72bcf6aafffa03be20c04f7140512a96bb8bfc40b8f8cba1d0b05ee28c15fa33f0b09c00f2c2fbef375270336fd6d8e4c8a3a65d59baa5b08870b098cff8091960c1645a9efaedb5d2b47664f1756a10975f565ac8bd62e4463d5a95211d6f1fab66abf77fe13f386b6c055f0fb776f5a72674b1c079db01f94d1cb46ca60f76d456d51c11d6a29fe9ec1962ed529f8b2251c18e4f0c23bbb22a367a0bb2a79a9765d319529c98633672774d4847867470cc91cd636c76e8da6b3742ef995b586ef8103f36de34a58786580eb75fdd7f2e61911484d8340404c975807f7bd5d4277391170128d94ff7e90d8dd364ced9fc38379cae2d4f149b11a4e17d8395bcf25c986aaef4e462adfb8d8ad10a6b346c4f90c1770949971b775b10ddd538131b9e5ce6f5124357085a8d61eaab8c62b95c41786c135df6e7a3970429ce94202a2ce0806dfc53342dbf6acd4c7f9481aea2b668706bf1dadde21edbb20920a4e7b5fe4cc1d07439eb4193029fa13199e374c5d5b8fa021fe258f73711d9463bbf631d8ff597ac5c10f566c4732ab95ba28235972d6e1f93bc7863b90a6a8e3ff7cf72b2aa177b9105fad7085e3b209f86c1065bf10984106e76ad03f5fcc449f973f45b914a696a7a367983930d5b9d95c4f43d6233b3d8080c5e735c0fd172b3ea18dcadf8a2e801cafe483938070e2c0349b19c552b0e0ddc3b7e2f3dc551e71b049d1c099dbc735fe78c86a891b879576361388d127c7f3741da518421c4e29126d997456da6a36689910b2a72e4555cfd997e4be56d65a0456006b3b08c9a89e48e5646b88fb21fdd291792b18c7d3503fdfefc9797e9ae30b39b6d319873342a9fad41650a9b6a1766a5acd76c5b408f6992257c3e0c829e5ec3c7596d738f6089395c00e63e0e157693f85858fd01a9aef6afb29fdb7243c430a2ef03614088ba4c96a009107341d91192179e274d713c201bf582c2826fa7010acb2dc91cf603762b3e1f48b22483a364875490386f91580e7daca26266a4f97c8785c57322fa94dee8bd1f7db5332466a24fd107e8c9b63a45d6314ea793ea80c07216192eb8422e26d49b31d426fbb0ac7d936b76910d93c552dea810f1ea330cc94f5b73264c763471165d0d0d32b4ec1e073de9d213e2551fa7abd883bd2f992af70c33f9e6bd61a25e172bad18c5a14489d2c739f06b8d4020c72af2572a4897a9c42a736e9a2a788fcdcba6b93a3ea82502529686075696f5c155aad920c806359160048bba8357ce6d77691e7d8ef4c3d1bb32964d5c0ec6bcfe0005ece50d641c2e038b5f114272949d8b2361173b1081e3bcc5eda1b43f353c62a2c9220abe2d08316a3651292f5ae94d10e3d66665b38952e62ca4e1595450e23394c7679dc45a15a2cad864a22db7b20bc48f7125edec3720076e35b5cbf4fff3b2676fba9ec911c38cc60a3475953f70a26a5600a8d4b97d5a40557d34e4b6e7504fdc91e18b89d3b58e64cc46a8b6935aca4ea962684dff61f6ba460cfea1bcd2e76cf20ca604dce6db5a3c2d2c262e990ab1cf6fc420cf4052f3c2af84a0ba7f824c641fa3e89f3191e14a65c816dbba72f9883920592914b107968b33e6ca65307d906558ed7274e1b6bfb0f48e57dd7af2c5caeefe279eb9d71d5a84ac043988284c3183e8c2e201b8535b0a70ded511b7dc6966372b6ddd4e0b784fdc7eabfe141cc647713626e8b17b7a09711e78c0c87be74f1a876b6aab858d0890d951553acd817fe9ca36aba0d80962e762d8d4e6b857f6338fc8e2fcc170fe459f0f5965099e4b6ed6ba5a10b3fc4dd762f238aa3563e690fddc0d6917ddce3f322490b73d1a3d509c68ee64120e6410e94b602c3bae47351d3319839eebb9c180439404ab5ed591b1f045bb6cd3a85515d35e21b31cdcc6c7cf36a1f768c73c32e3693d52b2b8002c0d7bde683a644a71a9266afde0aeea60fe806eac43ff0721aa78212b423cd8510c0a480865aca37e340450164801161d40b427a3b537331233393837ee0a76e79c1ad098472500e98fc4dde1e20a530c1d40f9a24634cc51c2b106993abd23a793d3abd95c5852ec4efafa89903a41489bf2900107c9f4d0538fe9a582d2953a9c0371163e142333fee41ac0b00cbf8c114bd76a7cb5af5423c2ab29cc26e8126ec3ff0f33cce5eeee5a1b004bebbc37e8da2a07a01722fe13c5bc515fd7debdd5fe8cc0cdc087673d926c46fb938a762c647c4d03f11662d0c7bf38b7fe907eb170fe8f07f9fe87e62c32aedc45bb2f781544c8af23ef82463361d6073a129c1213f60cf7bcbdb5306f1fa01b193bba5cae7e3ef34dee175077c747195bda5688c8112a1a0b684059760030639833505c6092d3cf93f4b64925477e7d6496548b8fa6776770c3c0be6634a95a7840b23acb81bbe0859dc489dfdbcc17529b52e719b6667769a6855ec3fe5f1269cafbbc095dcebe56f85d05ae8ae6f9c38af5b24f2f21fb53b3c02a24df596575359f79f9c55db02d875eaf3f787cee3ef5d15483947f26a6cdbba947f24c50a0e98f66e56d0013102c42ffb05fc1575bd7aa65f8c367c00796a6e6d1a18613fe217c0f467dadfb71a888c25f9c17b20d531ea52ba7c6900495fefd46f4dd2a07d3ae6838d570c45827221333bcf7b36ac377cc4fe8a74e0c558077e861395fbd415eb62ca9047bb772e55103e55d20d8941e24f72acf55ce1d2a5c18c15a670828b5025b02ae690d5fb6fdf035199419830b2139b627dbae10ed17b8c2420f15129206cf69d1771fed72b54da4561ec84c4b1fca7b5b8cdfac8b79d72b4678fddcdcaa8872e1bc22a005adfe962d575ddde8e4e8971c1dab3d0efff197e5eb92e5991e8927831949034d2d8d43749c5d021d4f94d638cd6d4ac7f7f27f474bef9af640fc6de63632b1341982d129852181f8f6f010b5d0415601e4f2cbd977ef8d90d77a8ea365330c0ac46cad304a6cc21e543fd1af55897f364c1e2a1e55caa14ff7c96905a7e72142c4aba678e17debb992986326fde6044461eb0a3c896c0b8946e2ea0a2dcae6dfd8db177d57b30444bc38361fbb0f50677a7cf5fc39fffe70c735667f147ef05c6cf96bb7b1002a425eebba9cce60d89de2313fa0e754354323e4dde40cb33705fd876de82ddd8ec22f172de398d2dd5c5cc412b79190fc43fea02370a1fad7b81e1b287875586cd453f6caa80823d03d4967ed1eac1ad8d5f2c07993d60bc85cf48ff214551d47f337bd6155e08854dd2bfb458dd5e210c1dd8ddb66636d49601d5862d125610c155fd5a5e371481c691c268c37b0ed595a971317335ac505f632f93c22e7e5ec2bad4749169fa406d0ae164834e31fd274344794831ad0e8670e5de6fa6d15f3516490deb67393d4a7c9188250a7bc35a2b09ffb857f77f786136bce734439038fef8a49b39b565663f9d48bbc3b5ad9b864f476dc7aabe4ee7709f86b1ae6bb6fbe59c10cd62e803d3d58290badaafdbdc223a8c1997688964a75ceefafda48dbda50c1590a328210672a5b92569d6af4dfa69e02955a9c89b0ebbf7a0a0989d5758e2486d97e079247bb5672f20ac883cf245ffde4cc6ba1564af476c97edf151778c3ba438673eb8fc1872c0c96957203bde56c58b26a6063f02ec963925bfcbcbc5e8da66686d7a64ea9699749ef723e88157ee7e68d1872c1f89e41e19d1bcb27a900d38d24101d5dc54a2106076370874f243a4ed3f53adb2d2fbf4f3ed3d22ea8a32c7ef28344fd24edfdff7b1739a0be8ea37029688e64662ed68c37d6873d8a652f83f35337dfc0e17af93df304ecd1ce9743dfe2106755deeb6ec0d5e2ab0f1a80954923da165c9854b844521cb952cc7f8fa7b8c3d5e56769e815577aa8fc391be7f84b4cb15cb3d2232a04ded8b71ff3ea3d566d51590d4da1d7ee26bc47526ce7813f56ee2459803acae290f72c9181f57883df5e7d74c78763f0aec434075e75dd854ada84e59786de9566ee6dc7ff6d49034cd8fcdd3871b4bdcd2648c0af5bfb916c156f5baf13edc3134beeb5ce15398fc9c9f5459a40235d3ce35fbd1cc2313d9124c424f900dac7c840f1c2d67789523146de8494b05dd6ea0389e1739d54c4209109e6ace06aaad89644ecb3c165692b5fdd136f67df760c0bbdc241eda83638f6bd835ff496ce5bfce504d5edc1e5ac20d5cf2d28d9b2f0f5658f919e052281aef77f0aa6d9c4047f64e2c8f835d561fcc0ef846d0c34fd2511006e2f9f518c4017ac2db0eab1411a4d4f1c85ca6ff97bd0fff4a9a7fde961badbd1d256a93e1dbdca2fb03e6551f0db8f4601317a48bc4d9b333556a0241a1090c284d88785461706178c59a4c5c1ec3954519f0e331d298c1d01e3b452abbdc9cd1bce50ff61ee1e5627b5d1dd56d80ead5399fd252a3597398c5f5532cdddd7e18b3d498be9c26f9d30f203c513117e238ab0c84160c8e961ce68ce8fd219807bbec16bb32fac15c3cccc98882ad301ad770af0a89c1b74d5ea9f4038f60b55b59da3fa7cfc84c0d5df67812755070ff9fe5a9fbca390784d2ba29694a03e6dc34b2a5b5f9ba82c065ab0c7d5651a9892aec2f641110282bab26b9856a24f807b96e7ed7c1a798df8f7c8ade065c00db85f0513e0e48796ed01d6e6dd6ca3a62f4aa1d254beb88c93bc48a8ab6dced8bc767f3dd23d9e640f61409709f8f4c86a6702f5bd74edd924f001ae3b1e01a4bcb6f9a53eee9df4f634e58e564a48553bb5e080e8c819d2e7ab5f58abf9ff9ba5399dbab259e0d95309e7f4dc4cc14bb38c7c32e3afe8ef57e525f4a2a23bf2fdfb3014411dc5f19247ea7925e3de7f6dadc9c6e5e21bd7bc126d126c11da088786aa53fb3fede01a2cdc0b1681fc9a834bcd16e2fef010fac4636ce38048991286faedb5899de32ee7cb2149122cfc7ebf0d21f4c85cf032ddfdc4542dcf760479a41ece5df9902f84e9a658c14ec34f28b7aabf7466f71107fc936bb81f0b8fa3d7e0c7e3a9322d62ee24ca7cc8e12c92dd1fa557d714fc64a91226eb5f6248262fdbd9aa08a965416f0e68c8dc2362044ed0f432eb7a604feb008a38d0a17e45eaef5d29d4b691c63b3b2e6b446fb2fd4bde9b523f742a5b8e5f1c9cedb3aed9b13a6a082e5d39f7220c4d0422d0e05412aac639f9fe858e45e1ee46ea387e0375b1325419e067865a0cef12c6575199fcb09c825910d135527811dcf5c1b9aaf24063e464439dab7c20a10b099e22aae4c26d9b2757520635493d8dffb5ca9cb8f00a5e786f0414fffdf8044a46d7edef0a76bec1ded618d61ddfacef8f10e0fda40ad7570781d87a9b02d697d7ab4ca4cb313703a306d519457ed228e00efbe84011370d2802620799a3570b3576de51eb3fbde4be4e0641a6a0d1c6ad80037f6a65c601b8f9439f5685ba24c9e3ef044c1b22c952eec89bee76e680250da3803ad576336e368bdcac2908835d62ccd890942fe09c03cdd1f3ea1d47d74178fddced3b65b0256efce281ea2177e187f4974a2079dc20da2c309a327ff0e21195a7864efb16a86fd6ebd54cee356116073dc4905582f8e0bc4c20e13e6f56cec84df1fcc9287def3ff10b0eb8f8fd459675b1c46bcb81f7a32c3e73ae4c52d571794cb088db6b458bd93dbbfdfc64625afaa7a79f90927517cad53cc0e76f2d1c6b8a36e5e68b9000806b1af3e164c22a64abf9d290ee96a616a9202c81c5d67ffdca84eab25248dfa31a491a6fea79be781f4d8849de9aa8de774c3c8ac6c0d695ed87e8a93b684585cee653059391842587ef791d6a305b06eee2fdf6a42472f137c5639e5c05d468db38d5ba87eae540a8795082a1f4395c13abae24bf2907ca565e99adcf50cd1281935aac0efabe61f62353a3fe773f66fcdc94b82a8b733f664831358de7d6d4cf9c134dd6ca7d83789b2497f0aab0d8357d2681c8e602fac3e90ee2661f77614d1e69b26966aea1abece9bcc2186987f821897f8b4997c1c4c8c0fea9d5a9b1b0a79ae4b2824cdd37ad8355653459bc54b344be3e677ec368e56fb3a689e4e0c2213d7d7c81fa87773c1df8687b0806af77991a154def156de1eda63fd6d7d979a1c9fddc161f661a3a585525d622892cb921241d01cc0c930037d8aa5efa9414c94a56aa61f66a9149d70c46e177ff09455a5f6cc00993cdcf87211eeae307eff8645fbdf2c493aa9a3dca1fff7b259c8ce87f1157f3319cdc33a71af107aa22ae255cad9f4aec27d43cbf22c6b57fe2d21499d438ce733e637dda8e95729ea532889594d0976ba5ab8bb22b55286b981b17a935aafc2945195ff29d160338c1a2661d1710662b3f4aecd9c83e5bfb2478458a3a5b92fa8b26adf208a144bae2ab31ffb2f1d64f65c0e9d03edb8960549fe619385b65fa0ab6c5d8d03ccf85f7993e0b455111fbb10addde30997b3a6ef39d29ff3b33829339fa8bcefc907b74b73ba09ef22a4e686acd91fe9071cef5ac43db683348e3d7220af30205494f31ba0ec05aa202af8f9c487ada0cb5341b8cd9f3e28123c59b2a8e5dcb5cd1adaaae06e2e52d1da31fa6f98b928da2f5a08791967a3262980c768f7340e16ecbb78e3b22ff1cd65da70f48e15f010e21d4ed1b88ca7d3c26c321ac98e4d3a32f317484b7082521e1dd82991c5b05b55a8c4c0cf8e10e9b5ea0b7a1f985a886384e175f05da8ea00d5a386a43569aea2d43e90cdbb2e41d035d4780fb8cd7acf19be3f48602a743a9458befa0543fa2901dd6202024e5600118b1f59258ebcafa1325a7b3532e01b4f4dcb5307191086a2167457adb32a4d39f3b6eed49c2c0ddbce9e846410f0ed8f642b3dce4f25b05b7bf9cf228e5d8c6b7c8186041993f391c44355283112d6e1263202848a3d5dcf2be6cc9981d21a3885788913f4d313e4de4167d9c66330c38edcf69ac5261eff4a21011c14605a4b6e0d5a94056461a2393916637d695c04bf7d260b91830c82ba54cb91b74cadd71e0122c0d000470bd21e35e8ce02dba7abb3213251824962332c52782a6d7fae21d7543be44596409ebd087b449aba398b2a42f8ee4b529dd1ed06d58983af4f8f332fe71ccd4cd0cf08c7886c338e93a5150a2b05237c9292368e90a84f74e210d365858f384c222326d0e50b9d9e79f909a5f331f4eb690486476b0aafa496d3531295304d86a31064b07fbb846b22b24df74548a0b0c62b3edf34ba08554503673038f6c5f220d27d51025b703e87ba65d2b2586745a46912a16f28e61552f35215fe3c87bcd6dda5af6ab6f55ee676c34c1a010d1cd74a8db4c1215948f875cd65bd72a42b1bbf21993fc6bca7b0f49c047284c4dee7b7751c866b276046cdb45defec944610222345a60ccba8c6aa2cb9dda2d2d31b21bb34508ceaa57839d1016afe6bfb527b28a52b472b48cb62d3c92bb59d72b7247f819ba3513adf681982fc738eeac0c028a2a754def34f29d5b6da9fe37618d5469bde82ddc2827392288fe3e5054e7f3e453601749971a49b85a9f81982e9ce43d9c95fa3a95803b5c3e059a2d1e9856a32ae4c6c33466b7036e54816350caf8fe65d916a3aa4c1fcc4402ed25c91f63add210c24aef896db52a0b9952dc4aaeabf69f1fae5294346f7804cb3af9515e06a13727b7b80d91e122d253cb0b6a5d5c786e80aeb90ae12988d1a1f561494404c1e6d644eef489f51fef81dd4ca4f7965022f7f1aae04a98459fe4cde42e98984701043e215945e49b9734371077723791101a8af4227f81aa633a1983c85fed0e3797e3242a2e3c331e9e7e2c6e8ea7bc5952310e9bed3ba17c199d8a9bfd09b4b7914b1ac9cb2bfca0073eb58550a0a280822aa806ef2aae06afb8d7a096648463c9628f118db24f027a92ca8b128d9d4ba6d19db8af762025910883855c1256b956ec9abef88e510177a84266e9c920260b9ff1e1d8e516ee82f1ccb2e229d245d465a7ed42d07f0633f31e387e2bbe335eacb3380aeff58bd82b1cb6268760aabbb61f114c3cdf1b3d3e4b43b1a3386b0cd74c45d62474ca71ef383a97c8369f2b8d8276f35c3a1fefa038306c4d192c467b61ca871d817d9f1657187293608ddbfe8344125a00651d8bc04ed2e7e878908b571e32ff49a039300fb37a3ee866d13ade01e34e39a1fd8b1defcc78354dc39dc416bb54561398759e78d9d5445abacd401b9b923d15e09b36265ba7aeb8204fef809ddd573ea61f432153e3eb2efab81b8dbda07c41752693e28dbd246fd9c3faad66eab41aea0ad5f0a3177957b5901db12acae7437b11681fa331b33a75a36b1ba40d7cbcd0f855fa2f93782911471e02e23d58281c3ee62f2c319f8e76c9227a54d144714d31ce5c95de930f75c630b74cc3639273f4bfa4b0c867c6336bbe760b762c82f0a14d493caa1864f78110fb3407d8cca471e276328d7b2af94554727165fb6b4d28fda7511a33234f074c10545e1713f405027b4672d6d205928b5f2b5ede87c5b79a0da5316813bb47d7866784bd4c2a98eb5b4fe787e1c6ecb3da51a844b97695745346f4639ff9aba22f8ea6c751b18f91ad49550730b3ef60d13675b060e3e303426d40d6587993d7c88de3e69dbd561ad2ea4e75ad078d3c09b4faf5f3ddeab8f3beb0a062230c74ac14007696d9b4efa72c89495b7b317a2a2cb54fd341e9e1c402c71cdf8f8bb021b501fd27d19ac789d28699fcb3789220a6e9b55cf1184d4461317d6141e62a63bd349616ef4e5d8f5118fa417747d048146781251e86cc03cf8e2f386185c9caf402da1534a3705c1244d3dbe4c844d70ab1f6acae2b17e399393aa72f49c21cf6b58865f82dc71c16e954f690d78c4e9b7ec4c9333d7299bb3987bcc2b3e92e976e839211e3b268cbda7d1aabe1834a633cb30da0aa6e8282948ad5ebbee8d414fbfaf50dac52ff7318a9349cb1cf8d046592a1053d529ea7ecf6964d83a1c205f95aa3e435b671a4ed9cdc33de2b547160be42de90e05ba385d7a0ff0ce9ffc368e53ce39c5aa9ff22b4c877a4f2e0965feeb957d01b86aba74b914653f1320044d55d913bae6d7c9a139ce55cf36caa5b7155b2156592de3e05864e8a6668790a10aa02dcddaf1ddf250c83073208fd0275dd25181c2fcf5e7ab94468434ea0f943200d21eacf11665932fec958b6226682b424d6cd2bf902b440711afb14f48a1387d1dcf4d7a60e01f03c75bfa350e2983a4cf681c59e0564a79e0cba0fdf4fa961de314151d783e23e168f242ded03ef8fed2a4e76935635e94371c70a1ed84ccb68c24e9da53e9bf14bd626a8519a857130bf040900cf54771f80bc71cc813f31b1a078993cfa34390eab17e398663b066a40624d8e8b9a7dafe800a5f6d79436d36c6bf780dd6a43dcb189095105b625f88a44a3fd354f803b0a44bb72f3d6ec7020c11667cf6cbfb9c4833269a05d2af950415447b18a5368dc53ab5f0aedd6ba1af5ebecff16f6821162e75ec401d748428e150fb7340a799e8862d9a46066b8940f96d5f126d07ad4321cfb84a1c602b2db46a68418e4035b951b55379ac318145be0789d40474be18eb1ff1d66a11d7c399f5ba356482b85ac94e89ace17137687cf469394947bd0131e5117dd155c02d02825e2cbfa6053e0d07442fc31e0a4b0ea7f9a300c787685e294286b53f85becb91f9f65ae6afcedfbf52e1507490fd10838925c5507fed5a7511b7deeb6e7dd04c0cf200619106dfe0b617c84ac8c9815c9549a24fb9dc798f955e8972c2a3a149498629ae09b8700186aeef3ab2591125cd1dc141a4dd44b4b685fec8b2ab102a01253f4b9916fa5d45affae505b07850c4f4868e357870d1ab53c459c2d078719af8c3ab34e56da8a06cc9d43b875b2a479e05307a94032a79af8f55517b18021cb0559b2ae7629f11ff6db14157d0bae9c2d8d2812e3094105f64a5e12baf51cd68c79b4f8e9531cef768d85e43a7a0ad4949628570852a9228ba12b75d676929fe7dd87e56b8a1504a67d1975e084b223024b1596e456bf42818c6971c988877a079aa6b9a555f6ecea0c4460dba1c407b8a44d66f5ccc432ae544c454d66cf115bc71e883b7485c9dbfd7531efbcad78d69083bfe6e369a58cd1c75dee82fea2c27dc14eb051b3f9c50d0e09552a55cab30b5757e961b62b7c392ad39760cd77946dfce8a6b4eb0b49a3ade2c30c26dec4f918effc144eec88dbe5368af0c60de9b65a031eaf1e7d6833e367dafc47e18881eeb48016023eca423f133bd9a4bea64dec0a2f1063261345eeb0cb0bf70d0b249c10a77dcae9739c94c0d7f986c2e5a3b4efe43c6551377a41e122b77798aacef9ca6b7ce50a1068c5cbf14526a4258207727593fa028e0f04e5877c80a047b7e22588eac6be985c7263d43939c82c17d53eb201fec8ae90c7fddfbed3c080bf564a0ec48f235a0907ea5d5a0c2a4e6b4b213e6ebb3aae14d4a6ea7815e018f0f3f4a3a499668ed6f423586b94378df0759e9fc8b3a0bee19ebb2dd4247976d318f4d2970511fe45ed2aed0b25bfdc520c9965db178a2b40d7900276ba3ffa23ca386a1c5b9a57124b9f6cbeff3fde4feff3ac971d2b32eb5680830a96c1e971860f9dc3a242212fe9ffc8c2ca85f1987e45f76b58dabb580cab72a27fa394b02563b8bf7789b48b99281ec07e230bdfa110b478a01d7608d50b1de35f937fe4bda606296a2d3287982db06bb2ea9f9622b84ab9ca09f8fa7639256b4f580480e48b16f68b3a121621803db78979eb7e6103ab17f6cd6c16242e947b23d5874dd7c81eaa716c35cbce4881f193e51fd6e5e9e7f3f868aae9d4971e168d862fa601f7ad66570fc2060a49d094704032286639961453ddb2e1f8f714f9569103402690c1dd697015e2e44f80ce0d3220d301accc7f85405292ae4e7db1edba31ddcb25cf1dc346b341c50543bbea5b5063024008a368a4e8f205daeb5380d13e617afa4047fcd8a7b8b4285e4ef069a7fb4da975654a99c83911167792f3db812416df938e108af94ecffaa1657912b0f42258ef678bf213cb63a1d6a9330cec683934a6d83deb8af66178cc71107b3578ee7e2e657d25d53edf565e666ade1a36800fe45217a7da702f1954a2f8b0f5128341926c0e039f8f71a300eaae1b48183ee160fc69a72d0192a5dc63ee195b481e43b6b80ae67253ab21b5d2eef10e19e0450ca55b76c9af7d7953ff71b03355b9c89adfa3fa375b2d2fd56d462dcc3e6005f987f664ba261097c677d9710e96f4f4badfbfb48b2d24c5ad2d1526cf738b02c8fc93534b841fc1dc009788b013a2c9ce05ebe2c6a92d84be0184dc71e7bd65aa8b11a1ce939045f76f2975517db6ad14c74f0604bf681bdfdddb93d2e832adf94e097f6e4bdcc922be0241f93d50b5b60eb9bfeb3d1dc76446234896066c72a9c0db2479c0ed5dc99435025901d3b3807c83bba83e0a5525d8ad3b6b74d263475d4fb628b8495cc607dd0d3172a2512da53f1289b22557d91c8228f73bae9f065ee9ed66cd01c50bf55c26ad45ae211d9bc83a0400f22ca1b942c6852ea82a2993c793c4f4dcda90cac96c30ac7f239a1cc075765a8c3d46d5aae975933b92d8ea0c24377700914050061b1d921b335285218d59deaabae7b5054fe73719a1b3f24477bf945bcfcaad11e6cd6521086abfa3f4e815b1c0a1bbcfc5a8b58022c1297d31fe05481639081eb7143c0d9965d22b3d3b8d21bcb65c67a3baa9a6e16040c4fc146fad320dcd4f0c1fb3cf3f77d3ef24c5cef089978d49202cb9843340c02636ae71137625b1a8a92f2d931445991f89a7eea2570892ae3966b65a24368ab53f054f4b4fc87265bd909cc6e170ad3facbe717ed5bcef2204a6fa865c5779d2598e14b61bf0396a87791b1d54004b1ec92d121296f3ba9775da651a414f23c92f3bdb8e45dc00a362fdaad604694d1646b04695f9fe13c3f4c3377eb597f0dcf761f15f5f7d329fc77c31264de6c169f4a1fd08226fa88dee1b7f389dfa3f11372b83c56218233d7321fe7cb91e130619fcba27cde07f4aeb57bb634d069914c4cc1aaa85edabeb29a07dadbc737cea5b63b0cdb0c1d35fcbc5bc7e5300690d8e1a46c4e49d30091de04d3f144d862256a11da6b6936ef6c076fa1047182a720bd53bfa43e98632c4ec5d4375ae9117f8acee96bddabfb4a491e60c4b6b875b07f356a7febf32113af86ba3c7ca6a8e9abbc63fe6738732c9ea4026725965b4c4181c1f2fd08b07bf4d5689286fc7a32533fc12866da0c888c72e6feef0ad7598962c4f6e4752011cb9ab81beafe1b46eec3f6ddbd62ab477f6d5bfefefc0a73c7b09ba031725b553522c1deaa113f544d28ec93af0b9e90243e12239db6b0677935d646f6e0b54c6f644074d57706e0b24843eeb6c345341db7110adeca815dd0a6490b1ec3f5d13d6e3ffdfb9a965ecbc7deb87f2c3628d052c3cae806d839598a933784824cd4d0f252568efa7128be512f78509d22004902f2013549f8a770321f9f120c1f4bf1ead9afa29e33f90238fcd550a815fe9ce7847e79526ab05ad4fb3e108d96acc1321900d28a7aea210a8646345aa3533f65edbbfcf27665041527858faf0093459370790ded0148d2e586d88670f96464dbc81f09d614a0f7b499f895b1b2cee935d261ed39804e44777dbdadd8028c702310b36a192f21a13ec7f3814add468250093858f353c561455c974fd8c5a929234931048ae0d4c045afabfcf4da6ffec79eaa7d7914ba817ec94e269d95b3332c0f8a0f31b2153168d552a23c2a1ce63b178b914cee93454e2d815b73853c6959ad08d7c54213d68d86d7fe6d590bf76cfd2e573c46a8574e5649ce92aabba5de790ee10338253b3608fe2313932fccdee852cafdc912309c3f50f17e46c6afad5e63d786aa6007d2d9b1d89dd186e5cb4b62efa7b71034c1d6b6286824dc887135a4d994f264735324c3bef032ed5bd7f76db54226516adda004b5f87ba696581e9b4d5a43d3c466ede7bd68ce6f87aa9b04a8c9e72d63c234b91bbbf6498c8d1181041563faf56ca1d6d5905ce7aa77d4c92117aa933cb2ab4dd2bce9bf6d3f470b828863640e3e886a780c066beebaea9bddcd28adfe1c73b77f2157bfa060c384f1f3366108e497adb219d9b57398b16155964784adf44531690e390e494d5b31b60eb98e61d7dff50f26f8c443c9e10a5144b7dd55718039ce3fedd00c01d617c48a682a23dcbed5deccbe0f2a6cd3312b6479f941dd6002696f7df13abd02c5dea609e5c838867f77d208aaa1cd1e92c6cec735df55071c10e0f640dee5815ff7f2846e12a83645dcab129d4920277673c451cb67c0c9ffe829c92367f70ce21a3a18963ca2598e2f29742bc32f14fab9e0c481f2df9bfca3a24d7bb46d18f3a801e86eeef8e671341c970ec5c6013edd5d6e7ee90705efe0bea3b7ccdaa6df9524a3ca498c13e2682b804f0aef44558e59ecf4393255d22c9f17183ce3c633bac5efedbe554ed282a9f75c8903e3d0f0592ed0f07bba5dea8716ae868e100ce97105b01e3f6b267a2bcc982c4e7295725fae26fccf692266e42652812d110c662592194f0e09be5264ca0271b2d1d1020540ac763e0a2e1154b4207590d8a2299f61eafc20b35a3cb02f362fac39b5c9bf53a56df6fc7bd531fe2faaaa1f79c80c16e109708c909392d6167f77a086a2790d548c6dcb0f9d50652682d8a34745722e01533e47732e717b1404d97951101af6636020b744e3c909be2690f47b28eea845774e1c23abceeafe353a37e648ff3ab6e1974d1595008813732aadc3f82eac1bef28d453b59c957d92414942e0b5b0d7ab75a40e22b5e9f1d535e5771e7ca6c0bef835275392347f90ef2aa5f7b383f94b3f1b8b801c26cba4f2dae6e060cbed6fd351bad9ee65bb8a91a79cf13427b9b5ce5fb6f514c18ab1901550fdcb1700fe08c4753796c152700d2fe744ee8f3b74b1a113d3443329aecfa997c7bfa84d595aaaf8541c0d09d41aba81686747eece9a346e5ee65b1c96beee645da3ce6b68c8b9fbf67fc7e2900944d489839fa32fade42d2a7c44ad3abe66ac3316d3f37c25924b677ce86e1f7da13ea794e6dd9ca519f02c18fcea8408eecd50b6ec1ee5a04202c54574808b6f83d76560201c73c1e75b1fbfa5eba3b8522a7fa4c71bf38200f077e8d094b38c061c3df6a667cd2e80149a029980d16fcad8edbe6b7d6bbd8698aa9a51130c90cf8504161ef556d4e65bdf0bda35827ff4cc8d5bb59ef7756ec32daabd1b3b5ab685d821d1fe6d344eb6f8ed2257afc04efdb1ab7a9f99fe40218937865fd475749cf2c0160709736a7b00552f93e5c9be1f58d641a7dab8226c8fc7cc78da0450ea441b24edd6600712a1b5bb533bac4c087e306dcf2585308ec6d63be7dc08d0d3516f9d820aded9a49927682c81acf5d286d70a7cbee61d56332d9a8926f72b22bacb71c71fdb24ebeb18be97a0942985c4dcea60435ab7583d0d58e83d0dea99df302a4f60f48de3a3a941103aac69189fdc13b5aa817fd0a61d8ad25ea767da6c744f8ad1222ccfab6af1e05e87f3825b5b9ae7219997198efd1a6146a05df165cfc32ea9fb6838d8f83e68302db8a942505a6b456be78817cbe5665689d0dd02b379b57ed5b79387f22cf07c785741d49c84a36b521339499660688a8844d422d5c2a9855ee6853e88a39ec31d21da0d380f7c6a52f324c197ef987c998c4ff51d088fbc6f2c91aae808a503bf73e6b8b2fdebaf70fb8bd2e292f8334772b9a27a7f7e594558015500f08625b3c485c333a904aac5e4649b465f4b5ba8e32f7e9b6609e936205af29ef7cf1fb277368177dcfdad7720bd21751b4b9699232a0d04b9abdb4caca3110dd7fe4338d119cdb4aa624c7c309ebb17032208b714b49385645e6df24f7770f05b782be44bc9ae68740323d0e9584e898eb3c8c0c78f831f02e8e941815f1c64dc8077387f806a508f72b19b28695a9ae0f75479709531a9d9c459ce8651f59120c759609d6a389a45f74f5215e07e2f804b0d28ffad287d9af08a2843563ba6784249665e59cfcab67f25fa2d95ff546d95cf7666a6ec26cf29ce6907fd693b703be6d2ae480d2ebae4077efbcf0fd9f0b823ba830f1e3576b7965d8b335424d5f1b5d999e7ff7bdd3ed7f946d964fa8ffb32505f031804d3597527281f7287734c4f8f211cdba7ed6ea98cd0eb1f6a960524ef196a772eb355a57b30fcdf41676cf76409f800627a10657b08b54824550397f91501ec41ea86cd58a468f1908bb43bedd63e66a71734f19d27cdd9c7261565b2ce2f670c1da5ee6b5e72b379f2bd568cf7220adee22cc31875836c28db45a26d3fad1652b4151c5f8ef645c4c6214965cab86d8c49303fe72c055d02ac74066f8b959a676b02a4d4d071193dfadadd5cfd58c9d3fafaed9cff06ffae829b11e4b5939a4c7dba12a683794031e17adb404604ad1466b17d05a527c855e4286f20461aabbc562ff4a7dcc729eada414de7ecbecac386d8f624ed26b345ae425e23ceac10405e8a445e13c69e00847c93941d78c71da0b2e70199d833f3fd4755900d208c00b7f1c41eee2a5f6f7c7943d09bf75e5035f37b3f13faaa82d5c5f41805d865e787e94b769514b98037cbc8f6a2442798980a9e3bff16fa1e13f77e2eaf06c6511e5edabf7631d11e06024f36d17917ef75e0b8893150bf5a8395198e3c46816f781ff7a2ab4597827fd2c3bca540117d0ca65b2efd417aed7ffc91f1a569e7915c0e4c646fef17e809ecb9030c28de793fe94ed9d580bec24b8d7087feec49fb2d1bc5a727351b9049629d0082c003451618f822668d8cfb0e2c3978e0952ce321f5c1eb9c59d71c65863665c152fbc65b6315855f02b4d5254137da6f04b30cee6ed506dde69986a815622155cf96365a3121caabb04925938d84c2e8a75e18932b269a83912afe3a6dcfa16f2b02867afe7fab3ef3365bd431ce824bc1ba88a42e7d8c6fe6124131b9b9754fcf820f7489f65d773a9ff7718a7c60fed7b05dd5d153cccf60648976c3a9365a157db467daf75d1bbdcf8c66c0fd9d483ca09ca274de2eebac1d9791e2afc0bf3ea16c064e1ad9df7090d5929d8c490454c84f252f408b3784d6afe92f96e5e8b77bae5ee441419b38f2c4ae02a8665b4f1297c68b94ff17ecb7cc1d5763599a65cecde21bf8154bb933f3631c86cb15b0a150cccfbadaebf7e07b760fcd10c2f0f7c60d8469401d379a8d568569c9461ec826499e60cbab4d537ed3949443c396f47af7a95ed63cfc8cb970cb5e7c3c64a679470e379446fefb17b5e5852dd9338f4808596763202c1e5cb0d8679cfaa5bbd441b486c8313309e56ad02fa19dba3e258c3949577500f70788705e847871262ad9556296d466e2af01e78dc1aea03a2a119c48507e2d52a1f53077695df7e7fd4738ee2ac40a2a3c4dba617a35ec898598ddf4188c33e94078780b55cb0e7afc633a3861b1602576491c169775b8d2743fca51f948a6a540c2febd746f9c4071fff923d268776d1f6d510495f0fd20df0ed8de6c348776efd8d2ba3a9bb1622718ad0e6f391c66f0343b4daf88b665c638a960506f966f04fd229776b00bbe308782406408ace3a38bbc5913ab7a70510069c8144ae059c0820e0b853ff07681061c2eaa56c8cea5e4b87179ca3f73b0010146ef931d65e7baa7bddf5c9b75ede55eb0d234c91f56bb3a208f8e71a1ab3b12baa31999edcc2433288296e53883595e7c8dfe059f8f4350bf380598dea8a89ef87cc96e364cf35f54c2a9e0d163557711f98f0d1dd8e9623615c50de4f11fc051d8c366559e78de554db54ee62f4470432f39e12c05e6afa2482c4266fd605db3691c2cb407df7a52eb370368a4e3e9f095bcc0bcedc1cbb64ddb5ab765117a31417152b99881b667eaf7b112ebd05022e41b8f33b90fe2255187281c2f3bd3917deb1c023193be7dde8b80d85e4c9969196fea5f26559b3c184ef1ad2e9e6f056100887030434b9038e2d47b6a188dc3fbe6236a82b8c51a8c8d451cdd927d11d054ae6a81614150a735e2acc4c93896d8b6aa712349e44508942dba4f353fd7761102971be8288180a410b61c7d9d511d5844f5b5b656351f3588a9217213f44fedacb8767916003782754d2d38493de6d4b4658ef41510573af6022f9f556eea85c432f50cb45a25f2a3cd036a9c64baadb1de0832c2d925d3f92555c884113aa49cd65c16ef360fc439365887eb3b5ac1142ce32ad6bff6ef472966fcae6489e9dff48fc282f6d134aa201d0da2b99a8d811b5087df3d49419bb8ae12613a1f9dae8be58e172a46e88dd349714417661699834d1760ba0111d74e0f52dee8c7c11e3e09a6a8952c94b97099a78859dd0a6c69e08aaca76ab6b87625086e2f44b182e251ed5116294f9ca0461fb9d6718cf4e80570e68f30044e35300bffc7e22413f67a0f372ed4f6d43a9ecbb19d0e130ee97ab56816198d7f0b9ec4dcac3e70f072fa265b91d9310e87609bb532f4e695ad049e7c75f8014829047b7dd982deeb0ef4ba84e02c07397a7b7d1b0f88ddd0f3f42c16f24896e88b1fad3eeb7b9ef9866f9b5346730f794574aa13389a0eeb23049cac5214b5ff26cd61293cfaa5fb74124faf416fca006fae5060f9b3e0c19bba3ae268fea6aaec456c2dd2a17a9a5823d1d5649890edaa94cd80b430435f6a9b1f626d5214812ea5794c6ea07ba4ae27519ad93d1246e7a0efdea358c1126774c9dee67392d305d51bc4d058b2bb94da5ee455f71826f618a1528cea55c128086b1ddc39390576bbaa9bcfa1fb6985b6938b1a51e61dbd09828fc047ba435713de8bb4af6a258b2443c6b91c856152a9884c1470527a3022e5123236cecfc84af50b18345eb09ae73aebd3735214e387fa38d7e7719261644c90c834dfdebe78f73587d8a427a45dcbc72cdf67ec394ea393652ec0f249c88538b25615b74c91a655a438b85b249357d9ca85315753789833ee900413fceb56f60c790a8d8d40ce105e96f8510df8f7efeaab69c9e8cc4cfe7c8b614354d10adf5e171ebbd2a9ca02b4d3c4b99987d90d9f4866f873b1595b2fc31713992d72e0c3692a1e38c1603e5dfee271adc5f62d5561fce64ced94ebad39bd02042b2312240860df79c1781d1aeeab72f72d692211604b150a6ea584d9950c72c6245335254eff25023f0d977641e1a204ef8733ca6553604c4eb9803e6a2fb13212c7b15a3a1a25eba4e5ec165c3113b4a4836232b14e72a0354468ec8b1d59aa4e8a765f1332bce762a331f4f4f5c2e1dedfd60392acf7a0b12f31b81aa0d91f6eb7ba07076636dff82d99c17bf57f1bf8588a353158ce0e6613f50811e3db13d1f8df12190b694e411b5f1393d03140e24f0b74b249149a8be3f7ccdbd322de2432aa718ad1ff036b55236a86690a821099d016b42a47bcb202579d6bdad13e906c71b87e60bfdf22cdc98dd9255587eae3d0f11244c3cf8b3aebdb33110993b6453dac372733c9ecf0c94391cb721f7dc1f167915039a519bbda2b4d5c1db0e233868ffcda425068e0bcf1600812c45175448a232f35a88b006d15ed458ebb80abef9f13dacd658df07c61475725d0532078dd3f5034ae69659872a616b80a954bde1eb036a406b13434a1b6abaa2198264c6b011967401b7b9f8cf8bca2757c84c9f4b41a66cfd2596c32431751dae5d86d4961e74fe30a5e3ecbf47e9cb0ef5c7da1396a759eaad786ceffc49d5b7a81595870462798714509da844c41477a756fbee72609874da2db9ceacad08fa420726cc3c0f55ad545bb9360283fd963a7a4c638d05556eab9a8e9a299fc4eed047db4ef064c5303f9802c78b085f4e85fedc2c215aa3394d4665df492b63d8ac4345b0f0c75729ab57bb9377fcb1b5025d9868031acfdae8d716d7e0084b712c40b52c6b167be3e3fe7a521265e9d8f2c32f734a02286410ed576bdbe69557c593edb33dbcc1c783f697fb6e612d52a4c9748548c9bd9670e7fa92d17994ac4f8ae393da51bb4f5985091735089dc528bdc5c7822a5d9061c291a397d64df61add4fe2730cffdb57efa6996a91966aa5630fe9fa21099b340e6548daa38c84fe17f89851ba94b5377328a25ff834aa5f2e256fafa35a19eb9ff317b2499bf6c112c8eacf2b863f8ff24d627e22ac6d61bd57fbe7d65e040bccf10a753b0b34709259affd869a2ecf6be48b505cb0b3fd9a23efec83cdda6674770bcace0855cd4a1112e95f789d9cecb75cbd41193149712295bbb1bfb524d82b6be881bcda70dfd8a067d8ff6f79bbdf29c63d471fa67e6bf7ae483d444b485689b55d0a2847116c3f352cdbd6f7082d570affd78b3a9100d3d8a9aee470c3adc7cf4e7d262d72ddac0a7d398fa10e21ab3927c0514e4391323624e7f1cb95da5cfd7a8b2c8ba4c88120cb01b6b0e247e2af7fb381b3b0ce3cb0d5c925d08226e995d997cc02bd8dc6016790321807854dec152e8eef7fbeee49bdd580a46cad43bbad7b7d8254186f9fe482d234e13a652acc719645811f00b2127249eef49cfc8ecb0a38b676035d8e7e24ff0d6c68d8f353868cc4a33ee94bbea8bafe0a9007c82134ba31586d88a6a6a8d8b703842e1d7ff03698aba0284d14f502272936d29e26596b24174b85673c337638649af82105f58bc95877b5c86d2a5f9020e8dddcc6bd7ce802ef6b632d6a8bcde79724da470ac9b0906133dc28c0903c12b538173704138ccd920024bc825dcea40e6fcac421fca1de22c77ba2a5abaa88d29dc23c3a6ba9e0143b4714ce9bf758bd7fd607c2d3d5d8cf6ea0f704de70fb474e196506b636ab42a582cb9f43d05b28bf5f48aebc451f528cdea33d59986cfd6ab933fd1f1405653b9446e043915df056ff15f9519e042113a13f9aae175c01066e9ff7626b03d6403000d6fef564cbdfd3e56c0b0af781fe36d8208af60d18dedc3c3f502879bccf18674a960b65e458c5a6cc2b714b18b51a8cfe45e7596bca82f9f5700e66571cfc1f21664f13adcd9167db6bd7af88c744d59e3c40458324f40cfb20525512cd0e2f5d6ce70b81e6c9e159fbf0267752a601e2ee46a50a6c093d56afe3d2a3b9b5d5f640c010961010eeda5a5efc496a7eafbf076a056e434b3fc8b01921c13c4c9d58ef7078cf685d0d410fd188cf8692bda4a51f72679c975be5e9187f019ffb9ef75918b8d7dd1502065afaa465996a5e5a8e3149fc4190bb68b772d04c020303aa74a1da0c2cb868bdbf3a3cd6bd64b39ea5259b4252cea35cb2119e564a50782772bf4c8e2f8692aec79655ad542313404ee3445d89549d41b22f06d9e97e5c6d86ce25f40e28c697d7cb265190474082f43810e84bbf75f3cf01542d381cea9bd875ded8e88ca347cf7abc240d47e2f2de80bfe15cef67fe78c49b8dc07e57d8c77383ac45804d9b66f25f0eb9b32f5075507f1771639e9fef979fd6fc0f4c4d8c7bab8aabd0e877f584b58f45116af355cfcc384b96820098b650f571f99292e6d33619deb42b1bbb60edfc858a130526e73a669221ed4bc7bf7c0b8cc000b4bda9cc9a31fb175e0fadc64342b1d24f37903b68b6c785df9fbaf2cd7a110cefe45a5f6fd67f7e1293c810d4901c81d1196fa6ca91c57c08803fae15724d3af337db0740165a98dc615455132cafeaa1ef2dd90f9cfe73d057a9b137edb1ca8ae7cebc531befbcbc0d18227b7508af30871b652bc8542585e82ceac6c5e82396c3c78e9a57e5333202d6fcd7be9821fda49343348358c956e831d6b420354d6989240d006704ed99ac2068ec07c19b7920ccb77e21e86f3720ee4a9f533d7a6b12eef5d34c22a1de4a6161e3a3425fbb748ee7ee531766258bdfb9b55ee7beea571e8e0ad4883bc38ad999e2adb5a465669d39da226815d67bcc7d77f239b6b8815f61ac10c0411cf5f1cd93c6f2f3afc8f59e63ef3832e5b2e8e5ceaa1d82e434e493483f5e1cff441a0fb03e717ee47ebda9e5d2c88e765be623971e282720d2122a3f0f25a903c0b4affc36817aecf99b073e7fedfeb0f20a70f7f2eeaeed01e651f4551cb515acb9067497d9f8812e3ed2ed43fcb1ed28df2d051dac18ccfecdd6b8326d6e4cd4d378da778b73d1db564519b6b523d772498787f8e299ff187b5c6b36b5d6f2f4af76d65bcea96613216cb56b4f9da7f4fab4d16088b6aa9e91badf6fa1247e84f830a47d2431995350d1c9291465d1396c2db825711a169bebd75bc1a4086f35b13237a41dce620c4243b6bacf8dbfc84288deadcc693e79e61e74fb561c6a5b1de52a819818468c8496c34fb8d6fb5c88f41a23a9b4831abaf689fd30f04aec5ec78d7ba94ab3907075c9cf0f5cdb414956f9c76a9d961c2731a1eca2da1461a40c8d36c69d17e99428973849e32eda7e9323939093ebc91e0cdc464e8b2b6692c6f23bbe49f6225a265b9136c35cb1a060e2bb8a9455fbb8c87d6ba59cc314e691b81ad9e5c36002d4aeeb5c1c0ab32fbc382e726ab4d989deb5ed819d2fb0247fc9db045903ffa0cf486687f1606b12252204b0c3a7e52b4772d3bb64c970f1be2a9ea60127b666d7eaf0520d8fe217650b4a2a5282fe36889fc5357fc6d8edaf19772de6f041eae08f08ec17bbe98b833cef5c5a93b1dbefcc30d777a868506528c685a9cb572650631396a413c2175daf6345c7f05ec7a6260bdf7c4217fcd054958928c65055049c80d421a6d58edac53220af274afd26314d32009a6cc576ac07acd235a0724ba7a3097179ebf2cec6271d2168f6d24dd21685e3a16354eee0ad10e9a567d3500970f93bd4d5ee50c5011feb5fd8cc4218afccdead7aa8839bc4cbd8693b8be228b13e119992b92fc63a849e27a451d51c22c4355f47e72fcfee612ea65da232a250003a40b73a343c64b4f014059953a772e5eb1076e53eac2b16e0abd3470033c2362d7201e2017167b2409d93dae5cec848d9ecb98e205cea285ebb4c9c27f06a40df1dd80ab672dca1142680d4593ae5eb2d7a783bea22021b5e3654502ae468de0a6e099a807b80998a57deacb38b73a1e6ddb2a1e3387311cc37a2c7ec08c459e8e6b891850097146c5ab02089526f5159cdc9b3a0ea93294a414991879e5858c90dca24d61769a1e1b540284697e5b073dc653ab6c3cc422039f1f74516e368d3fca14c5ab569616a9a73093e9e7d3a00c490915b226e6057b1df4d29b34f6999c7886da55b44d64dff7ccfbd000a851931c9cc10a6bd6cf65b606b5f0a22c695050edae41703687a506179771f21b2c9d6fee4d0fb4f9fc4e862e2024a732470c6b120c00f90062a744a8d54751df4d2a21bbf4d478f76e9720713620e4172be5f7ff8263a90a276e68b79ae3d782fb2d2a99f6f163d95f41fed0123d3cb2c1947f1f17606a2854c0a6d51b4177e96494888e913dfd2bf9f27c5b0c8df1950283df7ba7d2c5781cf33c23be9de719421528a5cdc49eeb840750296b903adfc50fa3e6f292ca9b16d5d0192b1d48e3826dad63148f20cb332ba06ca39f73fc693b5dac01ffc6f084cdcc2eee260d7c2b9aace6109b2e34a3c20dbb68c20cec4f268aa506fcb2a383f27e081e0e7138065da68cbbce320368c2f652961ab68608c58775b235bab7b8e15254bfd01bdde6ec92c01285e0ccd88b0db895c1afc80a025e4e0a7a0e7756edb4dfbd0c02238594fe42b0c4a47dbe8c17d6237b12232b67a385f22de74536e7d59d6061b989f2ac813194f95143a2333a1d2e01818fe61773f7b2b1575e06988d65f1fe6d1a76bf2dbc5c347c17ba61e051f05841de092c25a5e05fd672ea7b947af957c6c10a2ad3326945a2ca7394ae343de2f6a14c5e0161b9c1350f1fc67f8d7d3082585afb759cf263749932cda55a57ca533103a72b6dd35c9492e604e15ffcc46375d94a534c0ef8e88a5c96e2c02ebf06372f9393bf74618b3908d0bb89436db484611c91a073c69d2d2059ddc352b5fc6a8b8d86fb35f6e242ac755bd5b8275b7df2a8079800714fae2d5afad1e5994cb4187b238b4306d74d71839103670e8429cf63419684dd7daf3c362de928d387dfa21fb4db0d698c77e1bfd19c38516968912cd3f3305a9d76a9b21c2cfab3f17c4d4e5d0ecb9f5cdfbdcd6b5ed2d6303e29eac5e470b6f8910e06cdc502d51db59d6f8632317352a6721d206b6c8f0d811100f34571dea0e1ce428beec947aa3bda1f3e8f79ff1a1c8124f61f5113cb446a6c2b0773f7e2a0b8a0fb9d7d6e4fc0dacea42da7271d66033d9651f955d17767146495d1765f9965d404e14112b474fc67f1fb024efb0ef9c2a6c8eb127ec5492a3c9da85dcf86a988e13732aa44ee3469b94fc66e8ea2a238b1f0b3fc07fb3a743f771af4cdf3439d4204ed6a6e67f81df9e829fa4b07b40e69f51cda8557e8906ed72a3b0162c63d5e5f68d0cabef3ce73a43f563da9e015e282a82b25dbae23e7063e6dd8f70f21f7defe7e4dcc4c575985a4f8fb05d0c8f3c9046a9124c50705db7783c56a4673d2ada63676a4c280eb95e5fd72fbbd03a71410b3b08258f165c9130cbefaf0a00432e4e2cc005d1f20f968551b590f9f29e0a1af9412ddce937cd20ac20a2be6f0ac932feaa51fb029f1d503e9511dda3a2d9c9822171a27bd31479d4e612079d1fa67f1fc2a65bb731d319d2eb73397521e3a9b017af7866c2af39d2864936fdb76f7f9a972c02d05ac698fe8d9f09fccdd05f0ff7003917fa224b867423d3f230e548acced998fbcff820a7ae4970c98966f8fd74ae8b89c8067cf481ab2216ee7e0926a6e86b474886fe6ec9001e4628fb4f305b0b98d594881205c9f146cc78f032fb4e68a25c92a10ab76ff6b1f5741408df6aee3d54a4a458976e89bba6d678a7355c1f5038a1b2dda84f6d4055f962ebd5900504db3c4a22ca9047f91d1ba56becc4f080fb353c86f8e31f6e13d04a8b58f4f4008f31c8c9ae522412df0f27b1dae82dcd621c9f34a9dec08d216eeb97846191de28c12a69b5d3c32333ce05023f909fb4e3c02fd3051b323925d3c12b8446f9aaf01e1fb7eb64e010ca01146b007af51637219ecd04ab90acd065dfbbde888c996f50b67609b1f7cbc59b88fc243ea1f6b903c4e359584b4c1e49b4b40eeab6d0c787adb297d9d07f025c0c3709cabc003ae5704019a5af371888339019072040f11d39fb96a4a826eadb558d98546c28079972ecc38e79783cce7e4980e14f537b4b1124e355f2545b7ad5cc55a49b38f06572c9698c467bcd2823f08b357ae150ca2c40e22d433f40b61cf877407bcaeab4b2fc7bc2f0dd2b6041dd704650fd78fd1f5aa026c21161fb167d4aec15d26d83aff8696c9a8f27d857f2c593f6f27c6db164ff92634fa07f0f3d559a9aa321824635dc56e87756be17e69931e7df4098d2b536f0862a9afbf99fa7f05ddd8b44b3218ba865022b74d7518c06374cc1dc19ccad30faaaf841db76b2644bdf9e2ece421988982b47a8f3c1e39911d6563e9766cf063d78b204cff1595d73fe7655c80183764ac0b986011279af1efd932dbd199de8be7ba2553d56d3935d82bb2bcf492fb87db561d1bebf47f0ff4768ef4b9c701ee8a8ec757dcbb1180ef8c041c4024cda6a4be3b79031ffcb97710eda0ee5b2f46b60b45254d03d574a23825b7740438280145ae2cc57cd781a6e7f5c5cccf375287c5488693511c1eafa49925d5e7d29861f9a96ec454550a43c2d7b33f0f47d7a135c401e735804d581683cb61c2a80b8e4a92a325ddc5d91a2dfc40231c65491f3d465ba7ea216de14fba469813bad373a8c4c53e14c1fb63601a891ceedf58fa05aaec763f31931c861f721833fbd8695d8deac697097aa53b113b88a91f595025c461affc8495b88929569d1bdd8521ffde7c3a19f53540dc8ce7d59a056ee809c7460c264e633ab2ec1dacef21ccce8ee68208d50c658b6a3d2d713986480dc5b377841b4ce30fb1a91dbd413d47875201b8f06949334445c91bf41ce0cdb437b4bc9507fa83e61e93aa9d0107a630f6eaf4da52a14ef2be7f65ee8af422eb063d0950d218924ff28f2fd2bbdced1ed8b8b6d0488ff8f22c0c4f0adb531b930010e92b059493bb48e2fb834d84b3e3cb3cd7c27be4a01f023a8e95278510d5fcbf0a53f0b2eaba5563f8aa6814abda61d4cbc6f6edb88d503c13baedc48a14c7f1df5ec8c2588e07686f4332179686795dd8c9002aeb4aa1c4f317fbb91de1cd24a13355e4d323b00adbbb2624a2d00c1207345556904a03f235a7fff1a0a6a3ae1c878a352e9c6a7ecc0b59b619e9f7ed1f42f80170cca1afa0f73d20b9b0f56acb5a5f2a2264956bd9344287499b4cba09f177ca07086a8738aa05b4974b6415d8310fac211da7716397f755f608a33740e455e72f8b2fc59fcab6ce7f3dd7c8657fdcb5da262fe2329bf1d1730c778b9946188ad3e6827ebbcc0ac6dd65b87eaa300635adee18bbdc5a686513741cece26c4f27c09e20211afaf59abf329f7f4d64679e687f3d82c9a139c9a8ea0b241e8c95560078952d27bd7fd0ad96089b2349c0ee2b018f7a3707ff2427ae8ed80e9df5f6dc584b7767430b8029ec07a1b9e6b95b001d3a82f064d233132b5723a4c3eee6dbcc144a5331b1bdd19bd4222417942f1378946b1f02a3f5c1131092e49249a3a09b1965b4780680488e759b1fa35d645009fb7bfdbf38a356d9a09a84738c8970ca928db99ce39436a7b3ca574a44abab8a918c54fe45625d759c035dcbd91e6882745be2223eda3d8aeaff21dd09a0f4ef34ab973cf5636791a269236ba115c95fad3bca8261102c241fafd5eddeca5e4a30c43bd7b215dae531c67366cf8f19554545437236a13319b3424e5bb473986d5da649c45712f43c77db7aab4c1dada4c5cc28d312b1cfba8cb1b9ec41412bd9c70ec02f726076090628e794d71954dae9b30f40db46cfb28a20dca2090343633a4e46ea4f9b35331d3c21df930c9ed5847f2ca5f67c6c15d8d306b17f86b3ffb1c8be0ae9f472f951eb80bd0ea1e193cee37a9fc0010ce456c573bae6f397518b7474316a26f764950cccd8d7a8481440d61e508b9aff21becf1e55606fc6860d462f6778efe9a829190286d69d492acb4c99afed8f2f025d8fd52d0681892c904aef10f721665e94a080aa39bf9480036c2a9de9b431cbd67992a88c22f491a9b59058cbc3fa586d393675ea3c5815c919892c23236771c4c397ec195c7dc35b86ba76510894e7d2b72927b5c178f7e64a5f14667d8ddc28bac36c6e0a90388f55592e5abd72e86f299b03bf0096c37d62a6478caa5ebe5e15bf5eccc389982e992391445db6d9b9cbf7503e00e91e5a8728993c277c6833f8e7577be209cda4e57868133cd4b56857841cc1648f10aae7a2dd02e32d428cabc041b556227b7f55a724e488af42c50efa682e6d9cfc1bd4179052e52409a4defa6e656d6a68ce5efd5089322fa1d8d33be075b6a70f5d469ee46ba83d92ad3550f8801b7e2050956ac289fd442096de218d1cc5a5f4845e7c24a308f282f1ab2234f464fc2f90da60443495f90d92f4817a8310e269929328788dbb765914b2c8a4986f0708df7813bf72935233682f82fdbc14ac27705cb1ebf3b173ca9ae015d32b2399fade5992f0c46e7d813b9f213f428a506ea21350738f130f5fca0dedcbf946b24455f123f212b9da0d024c023de06720194c6c7c1a8baf9796bb5d1289128b341474cafbaa0892e0e6015a3ecb41e39d2755a9cb555c5a46eb10659bbfc353bf135cd57e803403c2846fecffc3f5c518df8719f290b206ee279a64cdae9d3836cc26adc5d6987aefcec85c1ec91e9290cce3ab17128a0949023b35108d7f9cb66024fd9116b7a620bd0eaac4d55cab039385c5e350c32dd1aa28e82edfa97a5c6d338d5e860ee7bbc8bdb545ceb5290110d251d41e8e98c5332bb403fea295d820ddf681e384d1991232f463d128a90667cabbff5455acd0223cc713282d253c2c6b42765a0df99a4e50cee109eb90a52903659ea874aba96956f7218fb995732cc6f0fb4aa1743414a5314d3e50ffded49b5cba20aedac4f608d59c2b83d67ba4a37bd746581c80bb7b745ff91e99bfc65b72162d338eb96b5a0228fbce9c8ed666763ca20e301977f0a8a043cb79a2ec16cc6343c94e2d24b819b5109837880de48c6cf7584caca3a58270259a9ed2bc60e204ead26dc7771c82e6837cf2cbb3a8c03e8bc10336588ec4bb28f7682c4bed44618a7ae00f2b8b1ed93c41748b870e56977235dedcb39b9b39f95c5d9828c28010cd4d36086f886bc6cc300ce0baf9f8c566316018f03049efd1167956dcb383d61f503636e152a3b5a72cf58c0e052942bb0d6fcaccf13f1fa93690d22f1a4ce95f85065e6bb71981ca9fe29b78f3e86749585fbc4689bc53f44a8bb5aff94c9eb527cdc41ec9afa92f6a1c6d11cd0131154da19922d48ed6c551f4dd285e875633e29032e1b5056db69e53df6ca9721b2d8b59ce3cdefa59bfe48dc9f40b12821e37960bf90d4035ce363cc5452fe8a1d2d4f2642efb74e1b9f80f3a781455ee88e6a8f50e003021740db2145edc51d3741799e32319f26bcb19cf9ca04ce83c07a306ca17703c330fe58bf45ed6490b00be95744341632cf2dd5077d60f9b903c4c9a66ac81c6c3764e7afe42edb8400fa1af38da8a1e80cbe54306f06732f73364800a860af3044f3724480fee89be30db2c2d7119104946f389d2ede434dce78953dbf06d291d9bb46bd3833d342d8e13d9c404fc1d6c22f109be44a1393b11c03db4a6f8910a0b87d96a28af6e6ce6e6695f1c9eb95c9be99c9ab86da7346894a18f5129296af6e1e26fb6204ada0b6eed2d229d071dd06ab57bb0156d5d9cb03572dd3e3c60249e5790405ce4075c0ba93dc5ee9ccd7e26b6fc48dcefcfa5651f92bc95bd31911abb678959f14f4c3932aab838ac5effebb194823d65cc03ec01d21adc684132c2de3b56f190b562b411a1203baa61a5493f56c11311f8e47946bd51207d7ae19eae503d0cd1d51fb56cbd6195f7a1dcf9dae815b6416a62ae455856d71f2a0cc95dca66d4059715c5093c8e79a721f94dea1680a9306ceab682da02d6172814b15d54822b2dc4954a6a2d4ea67182627a755517871beddf11b0232b5ceeafbd2ab0a59b765a272df72c7072fbdfa4cddc020b6b8daf1e632936363c7f214661e8a7190538633b57377d41c0ede44c469d5e622267ed772882a97e5f3d8418033161fff75591c0bda44d407ef74ae9f341a2e23cdd323ca93d0e57c3e73e91bee65be64e4b5cb2366372a3f3c9b6602c11c855273e6868cf076a63e7c9c395ab6bcaef39cfabf344de29a4c3d9b1685030f62b6c56860a402cf3c07f33f60b27b671004008e9be925ee2ebbb19ab7c315b2a6274fb8aa4393c2314e2549b49ed0e825d4c47e20073616897e75882cf6dc4cd241eddc3218189ab216d285f71d8a261bf6f1b940c283c892657414e8ee7fbfb0391d196ab58c79282a31e34ad1ff3472f3ff211b909bda521de614f9e314a92e9d1f556c419d776088935b8ecddad8813afdfafdc65aa1ff419526051dc2dd16141ba22c672c5ffac8dc04616d01ef0954a347ff134b9c6c2305702dc88382a88d5e318b76a1c5f5c227c9409ccea17c315702760bff14db33141f76b2d299b1bac665f28a599f8e5d8114eca02cf8d06da998a8b71fd0958b78b60f252a2cf75bb41398512de89640cbb3c7c0f6559fa636c73b3bc11e7d5c34da56b833ed2410793fb09c2d978cc14401d6156ee79a49f8a7328ccccccaf23749ed930512383a19199643b5140e94b987a4fe87b870387a9b8c229f8abb44cde731286522e6294c705a4e6c85fdae0922751088cbdc48ad70ce5444749eb58576bb1e7085da41d9a04d737d81520cab6bb3060b6a5ff1d4a2be71b5544406402f296d01b38e67144828b105615ade6b793ddcd34b24244b3f8c6ddadbc718bdfed462216c97c35a038f36ae1a40b7bb9ad132fc60c0bbd8609f092ba464c759bd026cb33d6f27c7d505be12e5deee5b8017872f189b152cd3b640e9e768698f1601085ce536d1942f85d579b929d56b5b64eeede20d9fe2802c377b14153c4e84c13ece15069eb89b868adf6ffbaeed48a8cfb2046eb5bec1602ef245c6af008f91625158b9c5d05f3181df61d20ae714f42eb3c089d500cf4ab151d9bfdc2b155b85acc0f2e769b3c113b97fda88529daeb8c185564345ec3573073c65710c1433614559a3a438e10c4f41d97f922563bed913ad1496002cbfc80557d722ffc8bc0ccc24765167b7b887387f11d04465d5df74db86e98cdc221a20b47a422d61c1fd877d7b3805c7135338126c20ffe17fee9a79e295498e37c095c4ef2132f3cc54d40fb561b9465665977f54c4ff5603f4938ef925c3d16b530d3110028a146902644eae35fea21eef60c9141c00e9b442b6e09a13a785f0987bbf582d7f313b2893c836acd3c2e30bc00fd39e9ba2d8b407c96e304f2a08ebbcb72029916b02c3253c590aa87f586edd9e3eb6cdea1014c67fa416ce88055707e91f9c9cfc806c0a3fa726aa250ac84cba58f6e5f9f891eee86208dc332fc207f0b0492446264c4db388538b0412b9755d55b3407fb4bbbb951f8cb5b5149aaa94b3b94306b8934a6a7b1e47ee0f43eb0bdec64b0c14315a29d63e2025aa00ae21a2178f99ea4b2784663aa1c3dfc8336e6ac843c692b90dfeeae0bdb4a7e6486b30b8b13b44a22f8feb313e131530013bc57716cda56fbca615b9b809dfaea073adfcec63474b18ad673ede6fd984aceab45a53426bc7edffa2d4307d2801f6d305dd1235a247e6bb9a6e0fe571581fce5a08bd19c635656c2574f33c4c2e69a19875c58e217590997b13da65fba740a07ad951b025113fc44157081ba84498b978d0ced1f6c438afdb8b121d3e76e998dec433eacafec7aab8aea9f981b229cc510e0ec7da50190d65ef63f350c1579f89928832dfce3bc55124ffc2eaf3d8b1e7b9718461b2a2d9b134cdc5df61c6c59274d5db0932c638a599711c5877f4565d93db71f889e1e649760fafcec3683826429a74a2bfdaf2ce6509a7fb6dab5a7c5d92514c62579816c3140c932853307f781941e9f916b66adf3f65fdd5afd2dd54625264e24fb820f2b7145e82286ff1b19266643d996fa6c604f63e4475f3f74a1f6ca49631d625e26393bad81defda03cb27df97937aa55f7c864d9d8e222b242564901856461e91ddea244e6d527c7b098137666621e2642b3810c6228500084520febb4c2158aed344fc563cbb909f30703167b0931b72334b88853a2010578641a6e2ff5b2ca56e5bd6924d37fc874c415668019d48fba9bbaf2ed08a2ef5d2bb8ff01b170c3c89b2d56f65ab2b93542f1439f812246e4db84283c2bf37079503f440b73163319637e6443ca4270e2d77fa727e189397551b4ab1afaab137c97c50749c7a30b51cc9c32c0db2ffd135a42c2a8435979f30ee352e03c7ad030fb8b1e2991aafca6964c5b7a9626206e310bde34fe9f29f45fe89af540746bc5cfb55670a1a39d84ea5588cc06148f43e739a29e14b161cadd9923e79eeb71ad4bcbc1f68cdb6f17d3e3b0966c99f1649dc76b904639b9ef39c4d10af0d7fa93b6506648586a55b5a6a98fd5822d0fb6ee88148e9a0b53f695a67f4473d647ebab890f24fc34ef0d8a44ce46eec4d815fd34ec75997b55dea8d350435077045611e44f9aa20466eda0726cf4d3c426585467e3d7ddf98eb07379160177ea4c20651c1a3954164936a998197bb78a6144ad393bf2afe829186b1d92d00e613b4cdea304a81015ad9e19e2bc393a636e1ca1a6decc8e6a96952d135321be275d319a54889fe54cb6d263818ca75f61ddd73492c9782ee4aefb5320a88babb38ca6262100746061915b5b8287335f431c226c39f83d046238b45db70151bdf5f1eb3222a2ebd81f5529223795404994d72aa86488f10aa5d4d1d34f212dc7cc191375b1ddd6839b41efb5a2ee3927768e4547a24ade2910563b497b7d793bae65d227afce91fa774d8edf724501bb600cfa83f7a0bf6066b442b711ad2bf53709bdabc96309ecc11b2a035c665580bf31442ec3a610be2a9017169c269bc971a6365cdba684bf1c4cd58a4b6fc04fc7acb6dddb2860fb3dbe022161b0df3e9122127c16c7984b2a2c920c8f87dabcaf9af1cdaafd0eacf12ab80f3300ad9917d393b68ce66e42864c477fc778a14b0ef2a92aa6efad76be5c8561639f16add09f4837657d5f5f0f206b0a133933435ef1fb687c78ae9c9b95a9523e6c1b76a64f963d50bd3165a37238ff046741b8bfb75264a8ea8fe21d8f4c05beabb00a735d3ea1fc6bc6679f9afb3b0fa54266397591955ef4c628fbc0aa799e0a8b1cebe4e1e0714d1d793c747384423d44b56ab5eb1a3c48515ac902de0151959bbf3ed6b98cf7b6b10e67f66995167e8919f39fd7ee6c02bd2c3868c28f7918971fa54cf91c22bd5056215c23d154c25a4366c0b0bf28ed0e0f0819eb4a1c3044b780e3d3788073fdf3a3710e5f91c55de7bd9a6a1f16f560877a0b8ba2d8bf730e67a241f5f5be151f5784b13e909fa0f0538b342acc88cc120005e72b772d4cbe58385faa1a8c2dcda5a4d81a5aad42301e8196878d7ed3ad876bcb9128405e54f7b102a479ada73757b5a6899dd6d2410948bbd18a1192bfc403ed6bfe690fe5862a27df1c5a79750769e1eba473cd88b1f5b11aa72b72cf585dc9c33dd52b0e6156880932fffd48a33b366452123e9d4cee02f9ceb04617c386d4a773baeef143345c0f34e25977b42d75cf65b52d7c2e75d494f71dcf3e09fd88ac5ea54a72160da4b7427ae8c631567348ce3fbce0f8e35590380c1fa1e88caeb00855221eaba8fc7a91bdd3e7c435f15a62cd076215bf139eb6a24e3fc3c0cbe32c19b5daecfb660e9e9786e59bb30e867a79761826ae972918bca1a03e20f02c61c8d72a4db6b0a1978fd10282f0020acca57c99bc50591f2ab74886dd1fc3be92927008604139efc871947fef9109ce6a60eb19633270e28d053ef2b50b834f27f260b45509d4e985035d54e216e0be4cbf4ba6c63f1876a052480520a9a747331cb3f0250f35466111f61db08224c5a81d8f1db94f9c032c386b1b89a5b96560882f3b31aa24df6684f4dbb44fffe79e7b03a0b3248adc91c5f6f67bd33ac405031d48ca39d8dffc036d486c1b03eb42283fe1dab676f41ada43bb563343edf20e2ed897928f9878189764f9e4770ebf4d8d7f0173036f362491d6db382a929d13500f7fedb1bc9c463af1f845c07bd7ffad7ce64541f812e469f301498d2aac3a2a1b6cec4a9c194c850823a07172f8214c7a7b382e279a679b8b427ec876271350710b547923db8c014d1d102c6956237b42f22c8f533a8c6c3b19541de17afddfca074d205f82a2ed8c1189aedfc8eb31594d94e6d6f750a9ca9982b782630402abbdb5e6346f62551ca965f6be49752cd3811b31c099c390abb62a93528e33bc6db759ee19853ca9b6cb30cf839c6bfe01f1d1e5d51d6c1d57bb5370a384829a5b7754f4844e4c575959a3806aad8dc8a02e81b3827bbaacc872d5bebbc04488f31383d536960b46eeb09c98f6a0f6cdaf87fbcd5403dfb71d44f2ba8448caaf2a08ef87b05aa67a10b611bf0c60269fa7e3b8210031ae5682accf9383a915f32286e1e361f3a048ee1f1ea35ce73b16dfeb07f4dc31426b4dd8e329c36f930e05f2531d01a0c00e6327f7c60500a511bc773ac3f652aaa8d1d4410fa4323b5550206d9f2f513fce775d6405bce37d11e0e39f0d2eca51de82a7ea41c3a49bcecdbbc6bfe3ed018ca5676c336b3ee49b42aa22da5fa93fa896ab7fe251aab30b822276fe2727ba70911b571d398eaf65bb20b59701ff95cfe9b98042b8d5faaf48582e96cf13d14d3c5f900037e23684e104864de2e54e5e75bd350da7b5b9fe3b61b2dd5d87b244663bc9ebf2128035dbc28499602d72e943bfca2471d4d4c73226f745c494c8859ea61fffe697417ecff7eae1fded8c2f5ec5488f78315c4ea8f409f562c60570a2505f80f601bcc7cbb013b71ad31c6fee5a9d19ce176fb021b2041db7d7e67fc36dabf81d343a1bb56873b8236b127952160f1f8361e8af55cbf745a2329e08e7b9981978049cd49bb8011e52fcd097b1e60c4ee20c4f54b6b969696b41bae523dc81d73b9488efd695d23375fd81ffd9ea01a4c66b0101751221e717a0ad190d41fd0de9fe1a5acf81ee30692217cac0fc630b75bbe0bb40cdfcca88290f43d502ab77f60f7fa75a413f3ba8e94d76b937920572218ea269a6c9212cfe323fe0248ad3bbd83ef5145dbdfd1804d0f2a80d6e1141ea211fd81bc7ff249b5c9934c7f0bcf2aafa73635d5e16e314194c2093986d8f569e09de1e41ccfc55c20009e0ac635b663d1505749472e39c5a3de763d37bb256f39c8a47fe953a4b24780a5bc3c8a95ef6e4152ec5a7dbd9562427ced3a87f2d7f03ab558912f5cefa16472e3f26dd49bd178e332888d05056287d600599d999503f6d99cc1899d7be525e9d511a8e9d5809233816ee0c70cea17f6eeb27f1b9c34d8838af46cff0ed4fbd5accdbacbe018e0e7a9fa9e907e63fb97269d813f3866ab2950d07ba934a7bb46df3ec20edde73f460f000e3acc7227c8c3baa1a1a0415fae52fb7dbc69261ece97e9e9954c2380e960b6ba8200952b7440aa2160416df6ba8db18468b4b9dc1e73f9b9767546a08ce8a4bdde79a5cdaf122d0a6905363e5537d231af18ca4238bf70c842e62d1fbc0897d976097d18ebbeca9dc54b80d02b3e8d9b854e67c203c6dd3022849fddd65710d648fb057fcbc81bd53d7cc9f3369fd70b7998c487f51c5115e4fe4876bd91954ef438e1f37a828574a7604cf43e7ed94d0211a0ea5fe51aceb70542aaa0f0c6eaf167f356cd5f4a168a80b019d9a9b37af5f4ee7ab1b84334d3e9dbbfa874cd7cc4caba49efeeeb79d50d4774cc7aabb2f5fd39b0172c118e0c267379793218590e1a0cd0a4ca9cb03bcc1b9bc91c135464b2f3cee6fe2afedb8015a4084db9558d878e3669191cbdabced02873d909ea9b3bd304fa91944dbf5f3f9e090440b3f56ef1be7665bd3526c6ab39e0ec86156b0ae00f1d63c09cfd0ecc901587b27a3e864a78e99fb1396fe149755c3518eedacb4e4d599a3ae7a6f615de77ad260d9840ae1c96dc58c39e9a59b135c338077871b0fdaf48111ed99faf4ec17e3f863bc2676b5dccd20024bdd89f26af8082be5ef2d79c754553750c9f3351ae48900f7dbec94804cc39bc3926960fe98af12c54851cf4d367c705af9ebd34f79e0e21c4e511aec44c8294fab6a6d25b42aa7030fa5d9e8e57011ee6adfab28151aefdebf31c185fd703b825e5978a384b4f7ae8b26cb34152170917ceb6ecf4e78d9731d789bb83b53fc0c25e0c22c2161e6072228824f0f5c32fc2dd7e91f0f06ec578878f6f22e3c57d09fcc97c7d706de2742aaebc5dafbe1384b991b5f207dcdf420fcd483942fd816fb58d5efb56ce5a8c025f4c93e033d989bca1976696eeefb530202ecad663e890c896c4b52e9673439f823ed786a92c4cf54922a1940e6ff1217efcada0aafbadd1ec1be04ee8f77428afbddcabb05d7136ff473ef0915e55e903a4a38d47d92dfdf24c402d875fc2788746ae2bda03256e6e69d3fb85959b3a732d32ddc9e423639d77335a66a10f568d086fb0cf9673a63d0c3930510cc02d8a472305e505989d19bbcded8e8b652046be346e9e675cb42aa0df7c1bfc705159b955acbeaf1207aeb4790b277e50d668dec988a87156be98b853f3f20bc014ec529cf91fadbdabfa8a6b0e3af040fd178370ef338de195fb3173263bc6d0d3fe35785574c3c3d21533046acd47de2a0ffa4ad68bb311cbedb301dbf97684e626cfe0c5c9def502d8029a38d32b9e6d92ce3d0bcc4fb52e363691b0aa197e25d01b094935686feb7aa0667deeefbe24cde180ea03b51496246d3ad73d08e3fde6273bb6cfa664cc8279f2c6b47f40a73cb595e5cc8f7edcab7b5dbb7a3b220c2969e81723934134a0b58e200803e663c888c7167740537b5e154498d3ebaa7a0fcfa03573e8243cd78b027afc99e7c852fde249c8d178c265b09cd5a169dea8a85f3f7fe3070651134da9d642986cb647ffec47ae0718a3a3e37472fc9fad8b4c6f97c74656c8eaba0a84b5c9299d756fa7a02e98769755e7cb0cea3e834726fd10e61d11e83de7c3af92ec5dbf749a67d978a3995856ef5da928ee202536c2082766d91237ee23ae4e85b3713583d2f5ed00c1533fad61fe2c7a680a185391366f7700f7693a828d3465062980a416afd8640fec3444682cc128606372decb99c89b417fe5b13b4c2a9cff54bdbd97801ab157eb0c5138b2099c64b6e02e0e719fd8ce54c761dde88aae66ddb54850a1646a434ffb86489bd50b64ca4c4193eb0ac252ad2713df7c5a0dfdf5c43cdae05d44416108f854cac72efa9a8cc8e68ecfaa8dc8e84e211ad6c70cdf4846fe387bcdd9f4f0e90d6fa2b6f3c5955bc18f34725327e53d1435a9aa292215c1f304e0691297142c072915e528cbf410b7d8b06285b9b27eea581cf2488d4a659fe772f47b7396df60b728390a6c08e09e830a679ebc3d2903de5b906c709856389cde044e69644f21bbba0eca2e76ec32b4c8fa481631fe21239098dbf73546f8794735712093e86e952e4ccf9b805913a91b6c109a42e85a99ca53967cc89d82006026d337b8c504f3c940039bd3c3f245ea159f80f0c36bd68ef465a25f6cde34d60290b8549f0b60d6da25bd238eeb6e220a2619b47e16c2a6cd4b81403bff4ea263e9968a328f6f71a9bac9946823c1ea54605bafa2f5c19908ea7220dab0e69d367de6d1390cc4d628ffea4e8f86cdbe6ca5ccc5d3b58d74bb13d8145f9ea26744f28654d5a1e7c3fb9a7733db69afe33ef338b231ac38892559a80b2d32cd94997f88ee6b5bfa0142b860176bc1249af2a7ea0912269631a1fbe437783d80d87e40ef639a2eb6194e0bc27d841c7c09f008e58570ef57fc6fcbd26256ef75439309b98a020fc1c0eef6cd6ee5e9da746fa30d5b0ae937d20df18f30f03c99fc60fb3c5729a1131de440509343670185e8c9b57fbf1b142c6482ede6aee8a64c579ed8d30f527a34b69a532d805282066ea60a8929faf8cc599a6cbda50b5655e451ef979159151c63c3d69aeb72852d5c360308b1408a367054bb3c2a49c5d52b26233591329483b08822b3d8decb7d8c2e93a4ab68ef0393ffde539a290df4f993f3e8a4b860565ff99e620211f763289dd32e9cb0d1368339e5f0484b4ae0192998a926b5f8ea893b89c693eb460f6bc32eaf24986fe094047611480e30738d733085d865b2421e925b37a497317ba74aa59adf0f1466de04237fedfb4a0d228a0cafb065c19f1829ab99ab7f93340de1544ef54e82e57f90e946772a89d0ddf7a960aaf79b2191602dfa1eb33638eab6e66531113145f6731f4cc74983a1da9a581e967b3b726d3643302c5aec08f88bdba9fd806ddbfd03a0a69d30f59512bb82c4d756cb80469a04b1dc0e58304342aa2c5ae4142f8ff75e7aa7aeaca5a49570180520a5a9f181ef53686ed6611f647da6321fb890efbdcdc856d2fc90dc6c616071abb8bea2f8b28fce0c2ef0fe7200728e1b2c7afa9e3e91e94a7c3985e7f09444010e4fdb69d39905051c90a555b8d013294bb24c61a0c7e7a62e3db0b68f121b3c81bbabcffc40add23d13ba766f50cf4a2754aba6f46327362f05d85ac2f87f55f190e798142485754ce7d1abca879e93bfaeecddb6160035c9a4f965d37b59a5a708724ec7c940efa855211bb516981569c1c0a9b9d67fd89960dc4a6ed2b81c4655178e047ddd92d3832a064bcfe1e9ab7454d9fafbd7a9204ca95960bb307e74d806a998f0d7bae4087e9d2792c36adbb978c079f745a3b2e65ca86c055ace80c07044c9867918fb55bc491676cb47a0a406bf7f9712b1f52a5863fd6edaf2af835c66432d64e3c109927d9e2cdb5c34ed3f995887f3efe831d3f1dd570a19f263cdf46d1d3772655a519c18530a62651320bf67301d0f27d874510c2088ad8f82c4e41d81b1bdb5acca3c63581a85151d5fe10d856bc44692cc0eec7aa61e46d0ddb215f67ed92b295696b2421d88e5532094fae83512fdd3a73b339e5948c5d383f15b5a97fef6d2d0abddbc035842acc4168f4153d9a74ae70c28b8fdbc98cbaf01d91f7ea371864a7ff23d544a4349cdaaaeaa3d6ed3db69923dcc48c55b627300eb55d269f7bc622c943e5cb233ee23dabec7a6c207d0ffeb613743bb4edb6777a91c02042bb5138ade723de92c72dae03d2b430ad270d3d1fdd2167c6dd11c94fb82b0a80ed73d2e4ddc56d6450b781ea2bc0a765a2c9935ae19f6b59deca4d847561917c894fd93e25eb32bbfafbe5d77096172598b589de108a38d822ab9bc9b7018c5f1eb986f52a47fb41c48360478a2e48da51fb1ef46dda23c6121f1e5b09dfa7a9f494eeabbd25338c5fc8cb94fdbb5caceb50f7e56e019e261cf5ca4f72dada9afb050804786b7bb0da5d04e3cc6ea4a281408e5c863c50df4e916b6b4c831404537301cc068e5e0dbc86c9041c06fa841307ce734525f6f9da8529066970c01f7b676e11a82f456b653672e8c1f47060bad5665a9d4d52562c5a64e0442386735fee03fb38179737939dcac928a73e2fcd68ce6f400e9dfcbab0f51ba54f1f4d8144f4894ab71da967ab579ef9b00be9e5cb76e3b3b161ff8c3b866f30061db9e45396e3c64c26c2c4143b3829b176dcb3b76fe6557d47f7369505e5e445982b3fdc2e67a41f4c951d40a621cf8a217ec47bd21fe5335ad6bec63b855727a94db50184510f6f081655d0d17a4d5b2a6756683d795c4ff637ca8378da20f08d81258c2b139a8c1f85832fb803e813df04c6ac20266420ff0af7e04c2d9aea2181f4b9eab272296721c5c30c0bb20b923987072e17cce855559fad014e7d0d48d3e5bbb184d23e4480c3cf55ea5863d62f9a8dd8822321407d7c2eb7f504eaa7e18731ef059e9445b70233825643a3906c935cc4d501843d6d45a42118eaecf8e928141474d7567480e874d16c50b1634c9a0d5feb3b33f90d7cae59c0b72556cbbf497ebb41ddefefa40d835dc2cea12a5a3250db579366a7876b6b77dea0571019f7bccfb86c80cbe1000fda61dfcbd67ff6dd8daaf612be5a4c18857281fd271144baefa7892e03926a118ba9a11fcba07aef900bbad7482cffb642b747b60afb563c8c89f2520495039565c37202b263f9829ea127f88b92b4af65866181c87f3829df20b1ed440709bc66b7c1e1e8a6b9b6e68a3e067784ac75e56019244cba590d58cc069046f9404d750690e35e3416c4859ce0bfba96867afab847569b3c37f0334a64fea88885ae57255585e82ef98391ab6d8f5663e79ca03920622db5018fbab1a0fc1115a490370596ae9c65b6b62716f45311f55509de4dce3f650f698fb648185ea48e223909f91a23bfe5d876e365710868639feec649137ca5e6113ed726d3045b402c5057a2a7861ff426ef1d2b3e8f579ea90269a70192274c59ad765a3e2997186a7136ef5959b8c69f0f8da10a595bdb063dac1e41895839350798c419f74f6e0643e6d70265d6fbc94c7ef1030c73a4238d6ff3cd036fcb228252f96c61277b8e52f716ff57642beba5d2a9352c30e6fa575e3d91b67d625bf9c378ea55951c7b4a75ee0ca7406fb6c33eaa1760b38edb99a025fae61f07ebb1c3cdf8417881e88b60abd50c846ec766ca7bf25401a6361234335d57eb81706d80a60547b5e6323b1d4c35a391c74b27813f277193df4b2116673ea3ed6c26c99c59a81ce6c403fd4d86c47a8ceaea9916d107d2327f7c83dd3971e045749bd9b4eb8e6a87362239d2eceb9b58710acb9dd5573cf1236dd8aea1b49290864435a7ab2481edfa29e7613ff12737fbe9af8361ce2f205c685d13919002e5e6ca96dc5fa7f3bd0abd43bac886b9305cc8b3fe79028396938ef58a3c313f64217dddac7fc93a5982796c623eedd48b8ae0b38ba22dad566dcb2d008772aaee333064d4d3cecc12cefff7fd9fa4209ee9510fb950ee91a71cefae0fbc2a2957e94c276d213cc99b575f5c575f6b0a422ebaf4be5cede010306b442fe975f64309977d76fa98171afcd2ed6ac0bb8fa06c5141418b75f67dc0fa9030006dede4e2dfff44e4b856209116fdd95440c66c56626c4838e6e30259bb945b71e2a2bef19aa4c468b6f8faafc5d4966d7a3a36d1b7772c882f3b7ab5d88d0b4bb133bc4d37b1adb0767683c20054f970838f04fcc58b98db175f549193340fe7d7440b23c95e9629b692672375925116ca3f6f37fd4c09895891afcdb73bf2609baa4a7c2e90e9a264c64d49b5e59c5eb043efa32b7050411cfcfde9f4825905a8999834c38b3aa28966a6c702976f5c562aecede2e0a6654821c74c6bc753a104c34fd65bd9488de5a2dad0f67a7ecb37604b8e3c07659f7d33e5a80675f73def4e3c11f6e56b3b23e101c85ebfc9f35431abeaf26a5a1b6ddff88a6cec7e47df49bb3a9771885676796ddbc670ec0652e35025a13d237ca9e67a14923aa8b8d12bfa2b2851228fdb3e8a834cfa3782767fca3d2f85bcf9c6bbff0a68d6edd7afcb03c36c958800924ecee97edd7b94c70b60260a4a2e33a3f2939a44f305acb3f9db56f2be92a62fb3a7c479f8ad1dd7dcbbb8535796ee54908eacdb919257cef989c948fcfeee098958c751a86cfbc3e409cec6ac6cd94845ac1b718f8ad3af5db2fb19e790338b0c7c0037c3231f2a13f23cc802952abaf8c4dee337e2850aa0ac2ef5918fc367595e7de989dabc1cbb8585c9d9692c137a7591d42d328ee90edc38e0a6ee1487ba5935659b3a51aaabff019b88ef705f8f830faacc2d577f16ec7207bba016d648fd1f4536525301edaf9e0c44022cdb51e46fc085328e691d3d34a0b8edec1c93e2bb4673dead7f94500e63e4f8218effec4b57b7ae9b53fa6e5ac14d955cacb7fb234b439bd5d530cd08fa666adc95b69b0223e7994d6dc4d85846d58393ced75b9b6a1691f0fe647d9e0a576890263d8308ca8a38daa4798b27a602081f8452908ce1c09046e5c176b1f0ffb8f849370fb07c734900ef4e1f102ff815c9cc943fcb55dc36b9c3ce190d54a55b406babfa8270bce5209f07acf870ce2a934cad88dae7f7fc33a434d876821cf5a9ec022df7f003305e1d2976d66363703e4c083f71660b4c9d848e6601f92d60aa13c27572fe98382b201664acea63658c94563162ec61773e146f8623975fbf1bdef7fb3ef5ac117baa7bb829ef85f3b44c6dbf4adc53e0483ed55a1a4a46d34541e77cbc9f2bbe5428baa0ae8b5a0c2a81b715a169debe18f7a20532d287f15598f324dc5944953806378559251b78753d34677051ec53df19bd36bbffbba5ed5f5b1f60b56135d5f08c136029a2a0f73284f457aadcc593793f1ff25f60119f6f9f8132ae7595cb90e4dd3a6d5bacfe7cb81597e25ab77a98908a2e303628d254c5490d7430631534335b02c70427433cf60c96ee2019b7e2740ad61a3ce21319f885d225f97493a65b24940ef0073f06265d2c64a1c1aca5a1cb555e46a84b63d1eab7fe1827b07cf1c831c3d82a3ae1c605d95ca6f933cd7d5dd18bdf4f21e2ad83c7caba8979e93f8d3e7928c681cb6381f7c323cb9c3e41208148360466c593efef9773d9c1cd44305284c805fbc748d591e8cee2416d96c4580b3c349d1e6952020dd231c587ac4f4134db37e22fe910698c742e18a8bd8b22e87c4a9e7c628a3e9f9d288137dbde55283d847776485d40270d99d2dc739bd3c31e15953ebf5bb2c1fd046e5e0b1d9dd43872f69fff078cd435507d9467862d1daa702f27e6d7cd58b32a9627c9ecbbd046b020beb81fd6601144609f81c53706e2b52266944c1b2ea277bb1c77b2df5aad6be28e5abb32173e2d6f4a5efd4e83cc871105451ae1e453047ba8f98e30383a35ca4c0127381062701272bd0e64f7ddf16ad0c9751da467571972eddac1975e893ecade1353a59c11a169c97481228ab6808d5bb00b6b42fe8becf33e5b3a95694d9d3726a0131efa20eeefd1b971f201436f3f33649a8e4f966ab50c2c175949924475737c3a5e112e97c6b4749f38a753bae4d635c61c8e108a86503dadbfe0c13afdf4113aa02e8a8d05e6ceb7866d3d08877c7d4fcb70bab39019854ae891ed64a3b177aec123b12efe0e4262465c4ca2c1aaae2111c61e86559bff1acc94b83fde343462c53394db9fad789ea1ad6ac8558250e984a7da2158fa930f060c072c300d24efc5b0d16b4f53c0e0ba4036d7e4d9376183a85e17b4d699a4b668aa6d1c55814a64bcbd0c70f6437156aa78096e78c66b3508200293aa644d20f29e77885a799c1d5ed22ac2e9f3057733d94d94096c807e1de1be3936689c6ed7678908d944dbea68c58fa242df3e10c12b06fdc06dbb6a26237c116e58631d5e5ce82b069a4e4097dfa560340d056cb27e07e81a9ee0f7d4746979cb660928039663e1615891e9dbd8c9b7d58270501787c4292d2bd6ca3fa5fbb7feb1987247a3fb9ca2086cb92d7e009c51953d9ce128a0c12e55ebf0aad38168898c4e8c65a44bc0e874bb3fbad7a5c0de51eee5590c6d0f8afcf79dfb2983cb1cf0bb158414340a9cbe3a864a84daaefee6aca37bf14a7e68f0a58ebb91d886baa0c0229c77222144e947cc9aace00619ae1c930668a093c666de436de928938b4c68851182d5970257fe6145e07bea9369f9e4c90600ea9f2f73165c48302330df85180c925c16d8cc198d9ada53011b844f58581e00d8ac0ec3ce68860897e352cd23d631ce742028c29d86c9bd4254b129adff319d18ea2d3171bba8eab3bf9fc6b4a472008c97e17248138bccd1b25153a038b4ba212055df01cbd4e83616d9cfb8d7569ed777fc1f05e53124050bb7c082a81958d1ffb1ac330970c2bc318a503df7e6f5e65c7283bc8fb8e0be22ae807d9b7de3494ac70ca9778b80c0082d2e00742533024317316f6b7d0839ea4b6261089a8059dd60bdd0b4d82214f9810566beb943ec6c3bb615741b615a07af7c13a17ee756c4616685673f68c8c854bc48e13daeffb0c62682a4edf8eccfc7dc8afa84369bdc756c017ce98f838f55668c713945eff161967dbff72423eed0ae4b3ad6e8333e9c92e804e7384f1f5af93a1df5acb0f33cd68717f05e6406fcfa9aa301b42cedc7479fc3ca976c18c8d0e6122a4fdf6f2f36b2bcc5155d4bc57bbee348256573c2d3904b5b99e072b66c22a4e460e1f1138d118d06162df8f668410fe7738e17279869f5bcef7edf8a6aa420e56d5161938d98cf2c4282bb257dcf8e931324460f322fe4e172e0230f5eda270b83c7c9c0641226e33d35d96f7b58fa71a9f87a00963de31600155228327b249494f48963014908e70572baf137dbc2ffeeee0ec7cfc78fd2ac70d75f7ceafd62960d7043ae1937381c7257dea87eaa533e9746a7b74a7471995f4819c7c1ba01a1ced5432eed784114bcbb1bd6ed8bcc103e6c4bf8433c9c2a21ab0bb3ca0ac6c81019cc0194a72b1caecb502dfb45c320ca4e1ecc8d32fec7355ce05b000ec8969e44d284cb8e8390fb53351542527c2a5b2c167727189159880afbe74ae07d92d6a4e346a54c4ad327aaa71d17cdf2c98fe4db49f121d7840b6ffb7e2d608b1f5db2905825a5e86bb17fa5273e9762c560302b9d68019c19d5febe817dded63a5f562e9f1309e03512c35596196ae90c45d234eaf8ffe2db84ed320fc66f25f7171d62b1b0bcd7e44d5121b2fd4ec12b82f0efd36a3ac7842e822bb9a6e2288b0f4050394d3b46820fe3ce2c42970655bb577ca01a0e2236b5c807da07f386d053c32edd064ce87ab646e6a57ca55c00bbe47e6b9e7cf63addb0c8b514cbcd2c00215880296d9d015fe362dd37f895911d5733f735536cfda703ccb97dcd42498c99d193997b6bf42573824bc7791fe184ee27b408e65210a5d28e57bdd9c9194521e1d555afb1810dfa0807947e24cdfaa37f2ec44a747fed147867b98b1f238d8038a4644dc75034ed5f25b1179aacd8632cff3dcd6fa3b3f6a26aa852b3d7a7375d1413f84397e64d35f77ace0953b8d95f7c05a850a73c7657707f2507d4038e0c1a1e137c44184a4bfb34e9d9d328d639e5f799565b6250cd8c804fa860cfb244aef6e56c6951cf3137630294f0541d668d9288da2478c97846513d8bca418c2b2e075e3eedd10826002d87512d302a26eb51f735fb3bba42e01de9e9bab29ad5b9263681cfd1044db388817fbe8b84693bc30fa99eec9f961c998874f63ae4289f72b720ce8d1599714e7b4d2db2f354078c23f7736b24c59dd02d201a99a9160b24ca1386ae29a23514d8709c2a55dd906c90251221adbe9949b46e3a4b154e12004f4b7fe38dcb77452bb9a9914aa2987b3d968e5727efd6c8c4bee9c9298fe3deb68102ced8d11d58f1779cb55e1aa68908a6d1e10eaf4d95906e93572d841e58ae0ebdab461071ed21799310024f61661260b64dfb740e72497c2bf5d54cd2826755ef790ea23c3d14cf8616881eb09720ec4e6be9565d52ad57d52372bd25f6fb07df4d4121db7b2e382eb2fdbec8b4a4911f704f3a1cc6ca7cde23ef64ebf5d67e827a7f7a6e7fb448c051227ab8c8e6a8e39982e4bad1d2a69ba7701348e29893e0fc144eb82418388c0907827c5d25e13c44cc7e99af96e4d40a133327cbdfeb2249bf64f210275d64ffb837f90c8f13f742ba52f14e71ea1111e406be8cca306b2419c062abd79eee92b49ac21d6690ae9abb22149e7ed7fa942ca6cd61b74f765ca221bcbdcaa9bffe2e706f56c5a54ff5787628dbbdfebd98a4e9085b07d9a44905052189b0419cd2a67bf32cefd6701d89c4db81bd72deee9ef995cb2850f36b69b2d7b49288cba26c8281fa347c28039ee7c4d883a9019616b4c5a077276536ccf2895caa6969ef1c09bf6067bad19a768ad6af0ab9727d0954fb232ac93cc61590786c48cce221ddbbe2b9dbe1749fc2aa7ff8fa06372edeaf8bbfbd42b56ac36b045d2431b75f6e2254e827330301bb34069222ad3919c87f6b4fd93c4f98ae6426a8b28d042570754a71f98b5132cb4cbc678ddca6bac241391828a45364f72b7258ba143c2af876efb314cfd19acb28d5aef2cda64bced0582190fb99373c872d7cba059c4b584a0de3b942598824b502c7e60af2a36c31b0947ae1c778e74e749861936cf7bfb7875c8f95cbee1fd9c84a62d2a219b33dc60ad6a2f4a48eebb5ff4bc5881221f61426ccf87d479c90828e2add8d7d88afb00c27412721e2a0668ed6d7eb2510b8e301eb4c395a26fc581b31a65e0d8c683cac1e1d3a1a2414a729ae4f52cff8ec3dbb76f20612338b503da92401c880e3428f089a089e4887997666290c133720e0ed1534eff20f5916b8b5c1a8fec374a4f8d56b0848795f198eb780316334ae6ad4541a8f4da90a1e2119e145f4860cdc08cf18574968264d8eb588b0f4783ea68423a072d574a5dab19240c5d30bbea8207748d7ed20facb18884e1f3ba1b3d9274d09e36241b08253d450bece50ffed49f1916f2340584eb04f4baba2c8961a048056ef84ac5b0db6c3379e5123c7a0e45d341941073dd3aee909f8ce0a8aaefa4932eff612c59ad3db5650319e87bc7c56dad98a088122175811ce6bdf646a53f74fe4112f8e6ce2db3bc17d593b5970e4f793b4c40119910e58cb2833e802378595c6a0ec014951afce01c00388d953d7dfa32ef6d8d08a1588d710a4e6d0709123da2864cf6e86ccc2012cc4039eeb42bcbe51e71dd9892061a362e4e8980be43510038f8e57a975f3ae959b1354c73209e27f5eddb83ebae749ade768ccbf2758907aab138c4a0e23286efe09d6a57f404eff8c45fa4d77f5b11dad7229c6c23d4d835955c749276b7c16b6cae11dc0ec151c2b139a72fbdf1d0b218569ce8a7c23dfb73e058861a5b174aac835157c13b2d02eacc3257297877d21436aac785685a88a8f5e798edd980d391ccb7ebfc28cfb7367ab65062244d916de69d35d3cbf41f5a7771c960b1b32fc6a5e3bc8f7b14a377f6c516eb2a4486fea3c4daa4ee3fc5f4f3e64f74fea887bce20b2d4d7d98b387aa1cad779aece2995fa587b3876d6d24339704a55d7a6f45da56fd12777b20cdf498786c0e5b60491b7fb0c07a7ef0b70706cc0dfab7f6975f676be44b98798ee023506f41ada6ae3886873fa72e2d4217cec736ad9763a00c7d312634ca4ecda5114dba32b5e5808f60ee45b02020f2748c5269fdf235c4c7116bf016c579703171b557b77ceac8786af102eb0ae0bb5d87d0d7a9c1766c1a7985d18a89215625a3804cd454c20f94d538c9eb3b5ca5cf0b4e9777ee5cc6fca8367af95c9ea6be5a62a83948be581200054c290f284a661c88986264763c6b043c586caaa47ee0c9c7e61e1f0436e5d733b8e34413fae4764baa58f9f89496aea55473e931214c939c09c1b58f1c8ca8f41b9e96846e8cd7e90d14896cced67b8e20ec17e72a0d5a127b935e49c9827b73aeb2a2dab880b9fdc5e4dd72ddcc2c33d320f553698a0fb53ad42f129a646b34c1536e1352e96d0670d849879aa2e7d7785a0032502540fb310c856d80112e1781d98c81b463a3652fbb0975c35ae89b1c7f1d3cbf07b00f5b2a237558c6eec18ea6bf0580b4514fb01aaec6f9af834ba152e60e3037056da99867ec4f46bc2260ec899026d0589a5c76d1096cd1f65ba11e454e219b4c77b6898bd9b87058ef3b279eafecea7415f21cf313bcba88b1457e31f74e9231ce9e1bed1bf68c65389338d16f3fbe6e11e2232c9b11c17f32f81ca4e4a5d69a200df43dedd130315abeb5a1ef402afd052ccd752dbf80da9d39b6385b4ef9c49666c7311f7ebe3e94a2d30947ba9ea0e2056036befb760ada5004d237f6c2a640998995219254782a6b2c79bbe4780df9d728a83415f06216ac3d0970db9f6c5010e6b12cf386d1f3a977815a53ab604d3880a676230018874de2c074bd87ca22d0deda2a88b621a93a9260aa0ab9172b4b89e29e151a94a5425816439d9d16d73b9eb2a6b3e9e9e76f233489e2346d2e4e248291879a295ac9c8ee84109632291d3297619da942fbbbcbfa5e81d64752af6d8966455974a2374c0e842bbe49d375b67e1c30ca9ded7002beb34f35df164f6803db1bdaaac404cbab44b12afce353d37307cc8676127d3407d6ed58edfa16735be9a006500ed2f9e53099127a1263a74fcec8c8a64a4662d71fd8c070b82e2dc8e89cd8245fe702aef3d80270c7eaa87fd545f4a3bcac909ba3fe7b1fbdf0b765b3f11af83757fd2c17bec76354285e3ca6908794c0f897ddaa4a192800bb89027820ff9fcd3fdcf92faefe8dc4f2971ca77d76aea671baceaacadaf75abddcc6a7cd58f2364a1cf916c1de82fd36c40d0c63a7d9a8d916d37de57b440cc4698ad87dbc7a7a9d641a1c30da43d84b72112bc3a08901df2114a02d3a90e8e233784f2ad3dc132a967174e9b5bed8ef1e2c5566c49b17805020c5f6142ede5ecaa0bb4d6571109a75dda31730abff283b33a5d50139c431dcedf81fef8b6fd6ff4adfbad456a059b08562ca3d22e7bc5eff5397c767a53e21fea89730d1c16707be7adc0f05ed6c6d02f4f298eab022346803f0a82bbd3bfe68ace85da60b09b0bbfb4b10ea244deacdbe6e82487d1af01b98c5429fee49f16ebff5aeb2e730a8ef3aa85ce5b9ad97149500a846eae9008cde813018b7e471e7aa5941bac37a0aed666cfb027b4594cb61f8a79116c24f5f6a1c98582d0f7e1e804e5d7ee1485e29d7761b0d9d31c605e3bfd0ff35084a74940349121755c600e50bf43fbdf3610465faaaaa0224d3e64a0d1f4ff62d8d23cf78aeb8853f989131436572e2f042d210c3844acce25291cb602ba0f440fbb94616f19486acfd1adf733fe0c6028662b66e32762adf6ed1ec3d2c9abb780fdbb2947d4d24351ef9c04dfc2c21bc24f4aeb929ce04752990cc8c2d1077e43a035731ed11af78a648bf22bb497ae6c87bd0a08608c07ea97ee64d7b3e5079d833026aa5e7ad4cc1312479a3133521a410264fdc59f4640acd8a1ba823ba05fca4a94fc376d03d66f60eaef56f43a131662185812639c054f67dd469ec93ce6d231be5c424d56dc95d8bba59fe35396d200b7f35736b44dd37779655073d71f645af47cde511b26003285fc94e7e68de01cf26cf4518d1dd139d6dac2b0492b37a2f5f951d2dad3e8200744b3f4827f1dd3d0d25b2e518d5ce7ebd3679b1b975c02129f2cd8f1970df1293f472d24ce31f6ec0409b18de4c957c176448a14d76744a4fc78bcbe44282a638bab505a49b35cbd04626b621d09ca3d82dc26a3ee9f5a6b30eee26523cec1995c4827e0c0b8b552f638057c2d18bf2ca0ac5e7e0e6b8335fd5756722195aa72b4ec7fc5befd8115156e630c0c3267e111cd8f5f4897f081b830c8ad4cfa4924c186737361c13ef16bc232fbdbb55376cefbf8e4635e6edd9f0ef8bebb054cd5cd35fc830502936b982e2ba6a27c5dca595ba798c21f1d591d1459925275d7c8f99591900624969e19947cecb4229ad7ca42e894bc13e95d41fcb1c24a6cbaef7b7e611666876306da1e05666e982df38f76f3b04e25671669de4a2aeeba36389375a8b37ea1f83eddd480a5311e5649d439062d3efb553327d161e2c0981c19a98b318300cfe303627bdf3fb73d4d1c1e034e7ff92db75f44c7308d1fddae530124f7c68ea190847d51a51e9735154018babcfbf7f2b60400b1ecd12bd0bb978b9999bf22cc233d918c9cb704a4bc3283b449178ead02a708afce71fe5862f532cc86b4c223998cd9e5ee925e21ea78fb01e92047cdd7ce43fb48bdc0417486f65517f0896577ee3c931f6634e39a26c1c02a88afc2ddc286ccfb9cad30ae42aa663fe9fa0b502166b9c27dad2c4beb7010386c66972637ceb78d0f24277033ccef3e2029b1c0153a47066f606b66b8642ad5b574fb58032ee78a1fd067cd320e2e9587d3efb08c9a73c09f40b683ce7ad9df705d26dcbec8bd95df72fd59d1a4560ebf6bf3e39b7b448a2ff747b2db1f13065319a7c720ed3ba03ca57173b9399e10843d6e6596a20aaa1ce758402260aefd67facf9f2a7dcc6fb687c1a3a8f05abfb565c62ed062cd54dbadb8691f7ef4853e2226e4fce5ac42885171d42ee79fdce53ee8810eeb0a2f51a591bf458020bfa15c043078e3acaf972629027701a79cb858d6b1d411fafa8955c3c90f116954d89651fb021a45005e2ea05bf4139f2235d0f4b2a8934b4d77d4e59376c4ee26ff34f02ee18d6856e5ce176a3af8f77dae174b3a59daba520eb97c0aa233f61eadfa75c8dc3baeb809f83da135dc3bac6b1726a5c28ca1232c75464846a90a9c2a864a037fe803088c5ec598d74d2dd67731e0c2211aeda1da93bb75be25a43bfc1576bb7e438fd4b9e6330297937c34c603e67d80436aaf26767b7c8e897f23624a452fc0ecc2e2f9b858dc9134d6f56dc69f345af8428b808d76b2b549999e2a316483bb46e01d4221b978ba9d0d1d7ba9bb62580142eb982fd85ab8f620010170ec7f6522028a682cfc1d936d3184d73190126088eaff07ef8c29b49a11af23eb1a3a8e73aab3fd4b7338bc47b7a239f56b9fe4dcee897db638791f3ea1a6164401266379466b62b9678c9b174219828a7d8e66a98eba02f160d8af1faf2b5d6400a0c205702b6761612dbee5cd4fb33c021e6e57097d55fd254d680b50881a24c900aa640856d0876b90972c63ac8f0b2aed40a40c7c942cf2e0a3e8b973b8ab15fadf434be1524355f5e3cd26c6fda7925b6713fc78903f173edd18e924ab44f8103642483a06bc9c7c5bba890f1ef9f610c96747e6999b7eefa013eab7e92d93fae119ac85baa5502e46fa2d91ad65b05f6c91dc4c3c72a435ff918f1633070569440d638fedde93b2225b355c07d3c0022dc1de63468bef3bfe0881ce247a4380f68e1af1206cea5bc682e0ba0a502cdad54fdca5c02bb3101d3ac549389fe6201b5ff222ae2387c0e6514b8f0a6ae3c3c33cf680164ec3697bf9ac6c7fe2dab6714db10b638ed0ee728c1cd709f6bb47ac5ec905658a8f7a84406f4ac8a022148cdd133455c9df1540ce217cc8b6e7b8137f015ae6ef85791753ae51a20daeac2213fbc1aae817d127b8315694c37d6c02e299942e40d5833dbab64cdbadd0909e22ea3076c2d4e6e6e2bf186ec6bab3234b56e038840be770df2f978d03cf747a4ef2cdce9ce868bd1acf704d69afb076e504c7a6cba7c909b6cf66f3332419236449c8165c89a6a4907293e047ef5bd397c90a9846d211f373654792d96a6c10add2dcc4d8c5302ac7a99d8fde36c6f102ed4acaa35ebced7f8a693ff57f3e4f33ac90690cb564ee9462e71b9e9c546cf5c89baf86a53f8a95850550e95d5f9ba916d0f76192f604d462738962c83786ea492fa6db98a0723ef9a09489f4022549c72b228f52cce839aa19fa49f5c5dd7d59841e18fefa31231c0326569b11673332f4c07097bcc6d33a8d2783066b63ea5833cff1dd3c17ad5722829c41abb719f3a2b74ce9cc15ff758d7b5b7e36175f05c449b93ed867a646c48b26caaa153a9c1e12fd5906cb03663ec84a1135049e7d2d2c9f5b842800f4b49bb7391519d1ba5747c97c6827d8f5de7eabe960bb763797b5773d0eea83bab1c9facae933e49b6feb9510f5ab888ed677ccdf44fcd7e2ba3d10fb360809a9b8ee4625ab6c6ddd57488d69d588a4af9ebfaa597a1fed971c37ed52e0e8eb111c7a7d8f5e0a20de22a9b1a0e62d562710f885660b8314b824340eb69c922c3c7ee6635a4d57ea6c72e1e8a0498225945b13fd53cf59a43310df83f5a80088c664db686b0a71beaa73aa65c946293da533ce7979826d3b9240f280f91340eb6f4a2077bef8ab2150ba6b03f1c74fb424f067e68013ef797e70e89fffcddf23b68987c8504b299811db3f3688ed3c2efcb392e56740bb4eb91cf6d5cc51884cdbb7db8ddc397fb4e900a1150cb7ec1186a32016a6f4f36af8047fc9291217bfd53a0e11df01f914fcca7dff4b8d5f79dda83bc924febbaf35ab294384ac337bff0f076a55dfadf71f2c0bfe64965a14beb1ca8ad07272b45aaf48a42960c01d04a75a9b11dcae4de5c75bee231ddd2b5bfcf9e00ad0874a20d1469ef56dddeaae745a8a1601562f83f2c45c8e6da52e61cb4ec24b3a211b7c996987d694c9852d3f7a9f1c71fc5430860d00be9aef3f8b04f413b9a7575e9146609bdf4291c5743e28161efe715530bcb530e52f4fb86b9422de1094ea4f880b3f6e4c48bbeba27b4a4135a1346fdb688239578b3b7cd611e7fbfd24b6760479705685429f34b3ede7faef17a41d37cfcab93621c8a983b08d64b0d0f51c32f942e74b708758476f76b3204b98a7f43b462f53d4cacf56be36672bcfcd65edbd537d49918ccbbf660cd79832ce61b54a3ae572a34c382d04bbfc9f5f242e29c611017a98366de2face93b353a40f8c965e4dfba053db8fe99e8abf2dcd6af8c51d01eed813fe28b17cb5b3d52c6a800a1d02788af459b12ad266a81f2404458f8b7d868ce357ab9b01b6e62c3dfdd437d430ae4fdd7219c9b9b69a2bcd81bf66ac09ce1d25eddd5ef19871711bbd10a290f75dae8100742373f011e7aa736ff8aecc3998db06d093415d63346cdbe6f99aa17847a4c157c753cd3cb20681c01071d27e3a9735bc401f2b3bbec476a20d56d975113c6335d40569c2d9fd4cf7582021b74f65ce2a2f09cbcdfe2d9dee25f4ca407313d2f29345d4d4d198f3bbf1a6956d20ec89294ff9c78fa4b685e46462c1799bb0d9dd88de6864fc004f686827eba0d5f7b3f9b0bf1ad48cc7d99612461cac7bf3230aacc2a74d05b17194330a44ede99378ab1da356fc085beb5aeb1bd12fa37da576de4bc01b2f7afa4db5e2ae6f2291be2976b3003ed077e422800c87468ce4723c39f3f78afab1c3234f32c7c3eb1710326ae8c12d7a626151a506e4ad608416889e526445dc25fbdb1a69a115cc165984e5e97025fb9e8f0ed4b6d1dd1c637e463b4a26e52d0d541bd52cec0dad23e1a9d20379844677a13423ceb70c0f8d5e898894dc0b99ae8e75b8c0c5b8ebecb87ee2470f9778218f9b5be93cb1d86d72929f52ef6e9263898e89b72fb5ab477f08da923a35f98459109388230ca251255d9f3c630afb035b61bfd80f2fb299de1f745cadfb464eeafe4fe2428d23d7ad7ee55af6ce28156bbb623c8541ef2cd4779f86e2fb4dd3ad51757eab7a10173e76971ca450eeda38b6fa01d3d9b5998b432cef979d41ed02734b3cf5f914cd9f04eeb3a4b323eff50a02c40ef4390a852c32e979b6b7ce17c2693de6e2139efb380f355820694ad0ec60ec132252eb8fb9823ea9c36a8bd1ad13ebe49cbd00c5a474b8d8712b5ca4071c6c017261a321faaf66f5757ae60eeeb7f3d1ed37c169d62d1d93bec42ec59950f8da8e40e1a79ead12795f797a1a47f6327071b5d16c6b6f16e76cd6295c5f2c9a016e26d77bc71f09ffc3131f61c2cf69320ea5b0b8a7382005374627ea9dd2e52781b0648232d229fc05860f7c527c82eff27feba64e1d57076f75682c1925e6433a288ec3e78e43f31549748639846adc2b81f79f469515f97d48b4cea6c06b1d2d3580b2c10e3d896d06aa86537cc61b6ff9d19f887e3a1c8e7a7a311c8efb2e2024800e1b4bf71730703e71a2d173e854f6374652cd5a304bb4cf653bdf2a52799fe39f259c7ae84f670876523154498bc5d832b7fe672ce1b794fbd45c6a085b99ee3809c402eba4ec2735bcee8a74a35ab728bb9eb70eb01103910c162d6dbbf1418299eaac1fc7e3ac4f94a4733b5dd21143a876d9b68dcf6cddaa77b127e6135224ea1f4d445cf8b96ade38a689f0a79f15e2edcc784f66dbeabf3115578d468082c3b87e755030ffbdd3a841babf162fb4041f65d3dbafbf520c8bbc180b8e5a5513a486ff9ea31413990f9c7b710fbaa657d778a03c0d8b0a555d28af84798d1292adad76980c854ce119f5072b2fa35707ce06943f9fa9c11c28bf2df239da05e144b34e841f1641d96a553838f97f1c28476b77405fc883c319525389042e4253d7f953fbb90ae5ea6ce7d9da27bac198f6fd49c2956681b844111ccce46ae94c070460197ed2430d4c148b72196758cafff8ea28ca92a9954eafa6dc15046e384b0288deffc9eb30c599d8c744c3409eaa5b387ecb64f21d852a3b33971352d74f173cd06199337c9172205d0ae04e6626f440fd19c72af985637b63d93b8fed7372752473eea264b7f4a2f20363be5f6e84a2cdab7a45e8835464d74299c26bb397448269cc42adf8d46ed7acacffb882ac7c5619590b011c92cbff59340caa49bd12d2e6dc5c1383c03c1a35f4ef54d155b3a6110639c9039d08dc143799377f329c6d6b29f765841fefbefcd1e3b7298a9ae4aa8d64c83146198491fbfc7f69acac0a2ed8245e77bde26d3cdea95d3c8013f6d7af42e0076b0c2df0dcb438371f63bab4f57bad83c6f661f541b86adb6b4820a80421216e896e766cdbfbe14bd94af5d14c8dfbccc2a174b9145bf9c995898fde32c0f98cf0a93bed68236cda6008480c042050f58d16f51ce4c25dfdcb8d892d09b1d4c28d981566c824cee400801add9d2dd6b3cf13dbf23492e708955c1380881de3da1169a483fb11dd56eb4f23fcb9fab6e1b119ed9e67e792d5d01f5f2d0a739be1eaa081c2a331fb5182d811a67c7af8331dcd5e241792c8bc260aa3046b96efacc8fbb7444e99e1226b6679fa99867d2bf3c89fe6a28bf41bcbeef9d961f92d95cf80570d87d9cf53c35efde194708cb64fd1a4ad324ee5136341cf552cc5a833ec9f3eccc236daac0d71685fa7f2b1001be6e53e666f42de2af95c010cfaee457050671faf7f803d06cef1229631601ebff7632dd3ef422b0f8b1e4cd09d46176e79c877a2f9388d319d29c299ca06d9310c2d9a7e6afb994c7fb0d9adfe97a90a13f92ba2a905f95d938a23c94c9043290046ada4a06d2570be811d333d86d8e96a9ecb7980af14276e5db9bf56351ca9cc05dc9227b5e0ab5638b7554dbb4c544b1fb988c2a99ac1d1277d401aa0c6d71d5d2201c61453b743b535ee7eaa59cf3cdf1e3a0ed656a10cded09348664eab22d1731b999347fc1c777d337d54767cad9d7d33fc52168dc57d0ee11555c1313b58d053e4e34ebb032a34090d35b596fe3d34ba51a435ac4decb33732aea3a570e78fd90fa12fde8ab9d40978dc4c72fba67d81859f268c0eff62f59c9549918cf8fe45bfc2a8b10ae61c0f1f0e328527fe6dbdc57a840bdd33c960f2de4dc78b9cce5e7046584be7cd5ca8b77a24dc7aa8ec1b4592bac42110ab719b3e62edbbf5a16c0b19577ed41fc373a430c7e671480101d8738175ce20cd8c2e4e26abdd40864425b3b065bc50ed70a73e14806847b094b75dc1ae28d6718186244ccc099e03c4b82cf1ab3eaac0ef0d6bb6791e40305712d8dd7dbaec062d60d36621f6f7774cb8a927535e80e11e2a316e49cc468f6cc713f6fe8aeac52ed64fb5912f3d2eb81e1170fbc9b4672c2b23f33e38a8a1ec55b2227a46b30f2b96dde65eef76fefebea133f454afb1c84bb5b074c97d565da3fa21a73d6a8b4f5755d3a1c510851f7ff299f9ac7b5c637d44cef8b5372305368ce4a056b5b907262c6701dee4964948753fbb5db3272aad74f85807c75f2e90b4fb1a876fde77b86b7348f50b3503d76f086b15a268a8b73d978be62b9a8b9be0ec1e3318be76052890de05a5abf0d852e2bea270786672fd8c3e5d95931c2c058ec5848f0af60ff9bfea3d2803591a92678f21098cdc3b687c38b667fb1ca4ee7e529a492029402ff1bde76d6649bb4c6ae1f7a173f4c634f12c482c03253ae8c5cf22dd1d514ef632e8677d3df714d75e9bbd9e38dae9665cdd68c73903904a508214fb2fa883607cbc8f4420455c50badf52e52dff95f8bc85352df470886234f599e83f74beeca52b46b6c5d4b4204275756abef636c6297acbff2047f48e25d846c670127289e3122f23acedf8d16bbda61a749fae87967de367ef3b6b562c6cf167489af662e7e75f62b65a810bfee1726b8f465c576e228ea8cd063f2db9fc45bdbba5a2a3f94fab8155a1e173c7ca3f2870cca9b84b8bde4c030b64d8d30970d94809d2e13bfe832e19f331948c024ec08bb92f1ce2a535565e596294831a8bf33ed949d928462ae15ff9f5246b5f96635295d533892f7418bc98d0aa7bbdcf87a6e1abc7802f40afbdf0213ee59124b9709cdf94ac46fded05e92f58cb37684487f504e52da4dc53f3375c52e86c63e260d6f8db44a8729a86bfc9d1808116a88a9fe4106ae4d0aae9dfb29ecdb8c17fb4c6194239d04a37a7a9e23b4ce826805329b36b26db0fbea7178490fdcaa8c423af8302e5a503b7fd35ce0990700f8e71bc5626946cf4ef8f35b54a1186a5bc52ca44378b436ef0bcf6c6822a8dcfbb0812ba70a18923982817ed1cba411759fff6294a51731ee40f28405e0f80cf8d6fdb527668f67b626937883cd84c0ad63fb94690c9449ee68325fad3bfa01a68638f818a92e7a4f5a495efae7e0ca6566219d539aa0d99c467a0ef79c1213eaba741145c66e879c089c20e49ad4e1691325e03d642827aab6862542c8bdac881bba460d727d5526fb350d717b7f1b0d54e58aed906e7431f9564d4a2aa715b8acf5086729aa678e61644abc5236d1b638953e5cff170cbedbed009865205a78c86f7238d8aaecda2f077f9da17600e954d5c634943b621c2fc706b8afa463d7c632f7900d85b700fa7e361c0a33161c93c48de0ade14e9f6baccf0983ea21f5bd85894848333070b81178776edebe6d101b5f53844a0f069cb24ddc5716b7852b929e90d3d634d1ce794ed55271b90eb815df9d87a94981103b556becb8966a1696893a557c4761c48995e9e4e57b459a6dfc2f5474ce930005a83dd872102d893a44494b452502f5998a540fd19fa7e820f62d5696dd1135a5a8a691eb0bc5c7a01aa72acb8fd8faec0a651dbb7e52e7da2f86a75d7155908dca2cdad2d13a3c3b79a73a701b8c8ac2838518c13ff5ea507af0046a505b812f6a14d78fe830b8b470185a80e7d993feb3e2d71786156971e4b782d2a8c8b60ca1e83750b2cad16f0d0459d844283b86c1fe879d1e3fea1a306ba57b8e214f9d9621369ad47a8de8dfcca726a315bd976faaef7b8a02eae2f06cd9222b7fc7f2f73e9eeed83dc7af8864f7558f76701d68168cd56387ee6b42ddae17670cd4535b8e31c91649f7c6313a2f499da60ae2e3d11ea64f05f2dd031d6fc8572f276fbc8dbeff619eabf4c2affcdcefb2d4edab54c11b94b6aff7379db18f431d252eda605eb5cdd3ea05924db88c9a27d100056cf1cebc02917a16c14776e8d8f4c2edb86ab497822a8b1127c4a2dcf1ad6b9abcf035347008c7ba20361875d5206704d7e69412b9234080e0301fc2bef310e56564e61ac4ef62d8b434fb92fcb78a641c0df773bc643f73b4f9b777f38f76100cebd9aea4df8bbeafd9a6863749b34dce0626d91d297e962f7b473173852241fd39feef941b3276432fbdad525d33023319fda72f9291443554daf912c4c7f616fadf21cc567d25b02d9e4357aabb924c35f00ad10d7a1630aed445cbfc250cb10ae5f8f2d14ff76cd01049fc4072c63807e76ad5f3047b34869e9e8d3d2d2056c3017bc59ad4add3a8966aaf333c02c2fa79e6f095ae1e3337aeeb357fa265d510fd1d8ec0e717e614b9dffd3528ac10529ed84c3f0208cf1f1ba7af245860dbb101cadc35d9f9aad8e575947866f76bd30fa1143daa8f7fd1b87900d8c75cf1101eb9c2950e560742002491e31503c3af123b3c52aa394b48bd1dcdd9be1051ae83712946893af2b25f0430a7ad383ecb8428f5275f527179ab561ab90f352c257e91de694a9ab3191200cf5e8385b326b0f5b3abc08cace0994704b6feec0ffab29d798b3fc0c40860e3264e99d122d25c9a1e826df0feff07386f64d9cb518941ee6c3f5fe59b56f35aec7f4664a8cb65f4d766e7c48ddc99c75fef259427ae3d677c7c1aed38a1496a8c652a0b18e62d9d9ee89d34e3a4a225a1e7856cc8c7d7a1c08ae9b04a2be72b520db9316e8f233204052c0e3cd3b0c34d8340ef092e2ea31c949267ffdc6c5e5d19b59b624b22f3ab34a278cbbbec21c90d13634665adddf1235d4173f947bcee57d0d095b895be155aa5a3a0277f32af5e4e9508a2205e30a4b9c4bba7a74609cf3ef0514b6d95c9d423a053d6964f84eced74e2245551aae33aa9ae7ada7cc4638a76cd428846288e35c8b37dc1b236471bd5bab4ce2a19dfc87fff54985c2c99edd7e9dd4544fd0795377c34161a14768c7e4e3438212de5262f72bc26b0887783009afdecab91b31fd647393f300fc09d505608e561b2f6969b9e671b78f954e76ab7fc6be047e6f0d96f1f3d8fd6f328d9fd75dfbbe6127dae49b8e254f308d620c0441655486bee638944ca5edea0fa1126a37d1e44a9f0234853a246bf083db78a06464f8382f1205016d4a0f5be0bd78965c0619c9fb1b21a506ba456782aad09aed9ed7f48bd49968bfb59c1e69bef9bc5ce06f7c6b2bc8ec5a434a16097cf141e44991992b6c1708a87d3292bb367462ab3531e39ec3d2f9866de19fd89603a03b6b70c98f17e514e92cea13b365e87a3eb3961b9884a0e81769fb7d0a92b430dc78a4dade95053e4a2e06111c53a0ee9dd12418c313c39892523dbac5941f710e01f7e1374621dc1b77f1e1c2a75dbce04b19da4507df2c4525eeb7875717eaec599a6af2f2d1d46dddc9e9b252a4650d0473699f7a5e25c6cb53a7b04ffcc7a29cf4195bb8c8257cc476cfc30d5004c75b5310e87a9f6dec7978705cd0cc74be363277e3fd9a8a66dc7cc11398fbefc5f7ccf5f0195adf6fa59b499014e248c266d9e04f568f5d575ad71d87317dc128da2668e46dddf609810a9e0c3a380c3e5e3e2bdc236ed8b3d2f6691b6d275be8984df19787a73664387be8390471fe31e91c51d76840e83bca20702dcd33ab5aa64d62e73236b73dc3176f07c430ade80210d8f0c925469ba16d053bbb477e734f813d2da216f60ece27674091b3c2b966ed5b9f2c254ff0e4d505b2388b5d3019e25c0bb60acc31f9c5f259d5b7d8c7dc69c578266f8f16487f3c471bc2f5d8a70efb3aef0c6a27a87a88e7dba60aca080503d5595d04577d47599ab45c528ff788c7d3708eadfa83c4dae6f44af646d58c2a2502fff435a820c153063b2371820b95c187e8fdad4aa2304c28f855d4057cf5a8a8e0766f4c5fdba5711551e29f5947658cd240057b533619131c699f20ef93eb801a94cf81d1c4ed555ba6a3ad97759e6492118cfef1721e100633abe7760b9ed0416df9f69395bd40f4efe8315c17ce07107d4637886ffb41419cc250dc0f07c1a5e74ea3100c39f0f15cdf8df2a6cbde5fd4674066d36794b30dc038e3bb58aa42891a5d40369f99c46c790dbb08e97701d33df07d0d9fc5f711d5a8856e76c7be66b7e8dfee92db264fa0bbfa4bb29fef7b86b7e2dc8e4739b0e87874d5461b7cdd9a15b3a64dbb3f7da470cfb2dc588db6a67dbf2494adfc0ac98fb0bcaa6d55a4bf934b8858724ffb020624f82894de753bf6274b0325379dec1403096652f0153dc822b913a8ca75633ed9d30eb16e9aacd22df31927d924d9cff7e33045f1438f1c17f8c82cc1102c0f7cf21175ad57e55d0f9e790423e6d2b967ba8aeb566d4f7f4eafc78746a6044db7fe43023b64f521330ff6c503cc3a419968611e45ac5e962c861977583e60c9a3ad01a88b149ec0e4baa33925a4e9b2b0ce5ca6f0c833a59d92c98463fd5b5cd673f431b502ca0eb25a13463ba44a1a07e1fd462eea7fe5fbfbb13ed30bb1b17efabb7b356558447be922d7b43613f22b90e9d519b864f68205626c367d02784420b8cb08c7ca9eacd5e140403cd2926518d11cfc7deb49def3085e116e6a95bdd09c21f6982b649bd51e69a8cf037ee6e8eec442bde1be82161c02b2d8036c0f890d494441c964605e0934fc90cbe60dca5703d5529962271bcf1c77ab4231f339d13a7fc1536fafa49bf735cb604c2991da007cb9758c63fcf0f1264e544462162baae951e3acaca9576bc47f86630e629d3251e032bf6c85c9a493e543fdb9b7b363085cb809ecad802c23de011f778ab8f8e64289be20bdd0ec886c1b3193da3cc0560a6bcfbfa627b83d9ddaf0f1da3079bf10b85188ec62104a14e124026da0ce7b3a9c91c370fecbab3f85fadb93b407330e5c95ec548062d6823d48e9a82dc6348817d52497b7389d31b22991b5a03e23bf0b5f95756efa5db9b49b252b5d5c81eba35f972c4cb418025f02020f58e5b426b2c12c466733afe69ae6e3dfeef5a2992a5a0d31c895b7345958ac55804a51c88530ccb1ef2a570727838eb61f0355e07203b79cb0babfdfdb495a86e127c05982b5ce264441cac879cd44daadc1fb68c873e43167dd33229e79b8f607ff5e869cafa78fdf06af6d710f90abaa7f9e33f9192535a79009de3c4726262a335f3892e59dfd179214119d38cdefe8e8c040b2333fa344414f6bd6d1c98a54440f28fab63d81d0abf4f0a0f82df5cc974243bd8ac7933315f6f7250ec219fa5c6b477c2b9a63ad3f0739c70bb39f4f9ac591f5db8c5b641b75ab1168a741bde0f23a8929b22791b1109d12cb45333f7b81f86442d6be111988d39578217c4b0cf77c5165bc5cd3df77a80656950e3e834801c8affd68a4c42588823fd09c18908b5459bcedde267617975743420490239d712718aa23ecac6d92acbd743ce9d864b3c96bedaa96b65191e6da5dd126aa1ed1310abe0bc55503f0667352309aa9a496f485995306cfd8b0aa6fb3d7e9efb00ea41ac852d5b77d4addfdeb875b955d5b549e30bd0705df245e41a50917c2e5a145afe14ed76555cfd94cdf2a94a76fa856847135d46ab9b1382e7d80a7355524e775f29c2ae8723383a662de06b2faf5ce4c5b211664b9f9c6cc83e5df06509aa196f3ccdd022d3b74ae275ddfa15fa43ffa6b11cfc418a47068554b88448fb7d8ec4dafd9f7b672b6a6226ce3d40d9b60671be9d12a84409772d11d3d0e154f5864f941f58b2a6e1330997218e6ce5e27ec6cc5f6b54b25220b42fbf918809cf88256b1e999cad496df675c5061caa93e68fb2c6e90309a2dc0ff42c16e4ae92dc893b378e768f42b3b51fe8debca75d33f329b9b13ab4c846fe87a0dc1304c4a44f58cfa869c0a2a1d86330a16c355a127d6063cb9c695be73587d6f67bad20bcc9c95ae8d5169ab9a665fcdabae12c4f51b68cc9e3caa28ee369d6b5cc7576b18828ab18c7adfa50d48c2ac51439e1534d8a20b4a4bfbccd5645e249691f3e2318ed14c6f9822fb95e545e6bd26ce3ac21fc27315ad685dc427fc4f88f8c1a2661db381d4aaaf142452d0d25d21ff8cbf33fb1f92c868a43eacbc0f356e734b72aedd8a530805712173230ed481a2e0833a854460398c60139f4738edbd6f43c200a7791285ddcd34011157e1d2f1a46bef37e1ea549f7419422baef542cfdc88af4b155f36417065431c677c077207b1f5ce402cd324a81b3183b11496567faa091451dd0d491947627ffdba98328a85cdd8481106cb6ccfdd0d67fb7ed4617ac94a244ae32470491956c2f8a3d63d4f868a394c1869b202175008fb7509d5c870526c740dac3c457890c737305b8397acabf7382394ec87878890764ca128b53503b3c8d2965b5988dd6f659aa0d7352adbd35b790a0baa6a551d18f5e8670f2bc5f42f6b6c813fcb831f29ed99cb3edf9f0f06e145c25f0c32b50db764a76a7403ceab50813e9e2359e1d4b37a62754b79b6eaa25e6bedc1e5b9593e8a21af3567f962c2dcf5c0503ee120f1aff807f092bcad9f986823d6448e793e84f99f48cdb05f878e6e278ee78da386e2ac106bf64d961b89857e0005fd547ccda1267cc0cb5ce2bbc1bb4077123f3c2fe5343e3e015d35c3cf1a79401821c76460722f8955a250578c06f6016a8c50f984bebfd57b8a39760dde34c65c15a79548393712af724f39921b140d22ac24dce9755784ad879ad023f6e5a767e95a6014aaa746dd0de676b45a0851b57c73fcab422f47b03c41bf8ef303f80b23f34e92d80275e7caad1b1e98ddbcee683b79a5678b9cd47e2dbfbef892bb94c7033b4acff57a90bee92c9967e542b9cc487c0b014e2bdaadf103e7dcb264f8a75cf871ad367372468850f647bff5324cb1140d81f05ad5c1a4e514ac206da3cb7a92d65f4b994f6a6e7842fc30f5a3fdfc90819b4c0eff050b53d46e5a6d396abdf6cec986ce134f66e7a5d28939740ba0b396824bf78ae4dd71a706f20465cd74c10a446440e7a5d00d863f97ead6bfca7574ffc5036b2e31c5c868bb55c1309b4ba205a77398f50860caf0ccb221a8ea9f51c76c639ceb5119321be4185e525076fb696de4cb9b684663ae414f52e0b0baaee8b4f995608f6f2a2cdfc5de455c066eb24c80736ed8e464f2c09a5d2bac33a074e58e33074cbcb4752203922e1169e8698ad6621949ffff65c0f25718269b443a1086c221d2813d5b81df1158bf91dc035ccee47a33fb5b9b53a613945510c1d64789d615166162d3740eb56c6cb62a6ee27375842dbafc4da72e39178d552bbc1c55259769783edbc7706ddc3cfe043976c82f505a1084d56ccf3c2166ea85dc798965ba731b7d921873a020bbbef5f64c2538c20f54be852bbd2584fcb0df36ea01fb8a368e070e7b32b53f46545b18739c07bb516aa09c3c293d8c3dce12fe08a0d334e1839558d565612ed396f70fcc59e7ef3388a2315306ca78d851ef85c3aa0babe4ed709f32a15b7f0770c4aa119d2a5194de363804079c6ed74247a11c02e8fb37808b4a875986fea09fa2e551257f542d29fdf367588e3d2527873a2628146eb8f007fc5a649a3b8a840ea398246ed17481461351aefe188a79c3b888041253ce31b528db3f367a198406367cc87caa20566ffea41a2553d70f10af91ea09440711502091d55c769006e4db008c71b31b8b5910caa6a6e06cd70592ff11fb0f92d3518357e32147328b0aa906cac4cf86e316d93f436a54e3bedc83924d4d24a6e32404416c64bb69c1459fc222ffe9b7332d49b546e7f9789154f3049fb911de43eab1c84506a8fbec797f1078b2509f8490d487e275ea735baa0d333a4de01aff9bd2881b0188d920d588c58891f4ce7fdb802d93e0dc943d9b1524ceed663e95518ea9dcf5d29a5a13701c9bca53aa5d47215588e1da1bda3ae0d476fd7d109a305ead19f576524a96fa668a55a80065b83628d7006f21a5e77c7fde24f8f16b5d21c0f29f9a09763ddcd862462193bcc0b23ad2d8ae3237633d4b2a6781d8d93499b64dbacfc857286ae378f4243f84639933add4a9b2e5de73787d31ca24d2a1ff559e9d9e13465eec2486e325c4d8d1e216988c387f62cc78b6785c7a67bda62c34de497d3f06598e356a1010382a527002b01b1044f4d88756173b30114beb178e5c518dfee093cf4e584e6b5738d56adb8b40d591881b9e249daab191c8b666b99be0b2cb58cec9bd58a0e2764d9d74e61c870cb1d706a6fc0e121c191642827e6c552cefe5977809663aeb0472255590e7ae2c8346de7bc12aebeb06b603c526bad21f791586166373547baa76e84ff1129069bbd2c42157e1f9457598aba5734b2b2d36dc4cd0ea84f4a5285de80b5f2916670a368222343e1d96e7200860359bbda5ae6023a174af59501b4737691a5e92ed9b478fb9ae88724552a8e458291c01f01c905e7dd22310bc378be257adac5fd58ff8aab6a9819c0b4f9d8f562f4ea681fd46aba7e39c02d578e9f8dd0af59dee0b174b33bb9b824dd4392bda9efed3a5a460681e8c0f4a0ee5762d7d2c1420ace9eec5b69f9f593de6dc10d76af084d39f4ace68e74fd4b07b0a719c20e9546b08ba852ed9e75ff690b04106224c8772014432f884bd338bd95c7472660a504f0fedb3d2411e11ac988da3f5395a37e32b85f65bf26493fd6d245c8d406637759cbe312dbe051f4b015f6b54ebe50b13083d54fb258eda486a028c61365be72930a808da4638cedcdca26757014edba7130c86d63a4c45b9ead42f4a9076634a3bb682dca61d81e4686784e714b2940e3c863d75ed0fa4204eb6be135671d7bdc9ed6dcabdf8dcba9774c0bcf42e97a8e8bd1c851c22e300dcdb2ef63f8891d0feaa96297946f2516d8b8cb307d028d2b52b6d6191d350f9a72bf811cde1fd46035c202c074943090caac74f1a609119a6627df00b38c3743a0cb0f4a6718aa2283736e7c4e65bb2991e4e2a53b714859e9b56a7176b5f4662694196f0b5ac0505b3285641d36156ee4c5f82b885624293285a9d4727ba10962e18b4047984e27722d0cae69b14a09356e2aa86f256edb44d76e47a4509f9946b5747c400fafef8312ae2521ff92bb005cfe92afc336e8433dfc5650e7c64e1923f6a5146292b5cf5aa13fec139101fb35edc9583ce275b54f0143be2e6ccd8049ca144ca4217b07f22dbd574e872491366ffe3a6a514a4dc09e72ad75a6d8ff23a26fc0d0a4ae19d1381937c8bf7d356670461e003e8c79e486d561f6cd2bc2b6497b1a63c59cfb84d6061e90b26e043fa5a94262e919667b41ebba9d2994881a7d0a79464d6df9cf1260a5de1aa3f0bf7e8d5ae5c595592631a8d5d207facf41d3145065cdfc2adc6e0fb849c3b25a4cc4f5404fdd7e0259dfd5496b138ae6b4ec9e58de79f323c6c67b7c2ef800faabb99c07d9610fb9d346fa702286e4013f80685184ab58d926aa71a4e0f9feed13e46114f9111ffbc03279e1245c9a2ca05d461b129f5984895752acd8819323954019c3bda5fce1884a12039b693b0e7635f3b5e98e9c0b5261d6fd49430710a1d0ebf268daf3740f3ff9c1cb159c36183550fc650cfe63109ff77b3fa7bfe03469a572e123591ce40feffe9a6bab6c8793f38588556759a8c2d6698004b950586123e7dc44c32a51ef5296db69efacebdf3d9106d05af9e14ad6a61b6d11da73f8c47e881fe2a3ecfe165d508dc93302de7483776fad7d25b86fea83efbdd850887bd2fff0c620c488e66fb0a47bc2d44afbe382f2f52b4e70739c556c7e958a583a9016e1b3e5b0358d70e57e8d30564fa78eed0c6864c3dcdcf22b49b6d65f9229f0f42df46d89d8489ac555067fcdd5bb356668f7e8683284b34045d5f4e67125302683221adaf43192b7343c2ac78984c40604d12bafa19b9d83e409ea617e6d8c601a38377a28ec58a826563909963ad4dcda6922fe7a94126a4054cd4d0d820eaf63b4056e596d293633f1c54e4f2f90fcc956b7b098bbb313a835c473f5e17491c3e05327a50180ca914a37888e324446e38d1b23f8d10e15f9f5d7a7ce7168a56515ef5652323e8e5bef8df33db4262e968c4374bb14dd397a5234446d9d25c08d934c78da7196ea350a3dd5d1fe76ae18c74f45db25a309ec8da1695cdfad364326c9094d5b8d7fa0fe7022ac42714c5bb1b7011ab442947772c306ad950b4124bc5425cbffe56512397cbb84e1f080c4771359f35c34e3660b2fef152739ae732ba0ca706b1a998da4e8ef8d23805fa12b5835ebc00e2bc83eb47d5f930a6a202f6422fca2764688bd423126232d162df22d7bf37f961ac1a3a13ed88bf3020b113075ec75e07e847baea96085e5ed31393d5f580e6f6ee879bb282e8a4de631e27d0e3a2571ce5a774a95304e575fc8bfce62a5ed4c65834961d55faeb61f0ea8c616a04cde36d3d4300f0d6857ba533da03bfba2fae0c2acd1a6cfd3a3ca7351252176971aad3846f103f720b32c27b23c8cf88cbabc0cfa983138e40279171642399d7df46e69d16fc4807052a60847e45480739f9b9394363d1d98343c59de8f1bc938b86aefc04f6efa1c090d3092330402985a7f00164ea640d835831fa707001a3a60f28a10fc80bb2afdde5ad06829776c2a4ae4978edbb6d66f909ae49a4b0d445dc491e96ebebf35c62a92aa061f4e766736034186945da7e647881ef3e968a11effc1aacf63f096f7197393041f9ffbab7f74ed845a0d9ec8ef7c585e9fa4b05e6526fd5ba08e550b4d7c2fb6387a60f6c0d73e139de9d32ec045c3305866e0610d4c0de8be16553c44d189b8066d31045491d342a69046fce69e32255eac599872c9fb6249bf5ab0bfa4917332321d8561ce965611b7b43e581355072342e4870542d277bfd50505fecc051d378025f278f86c6e6b9d477c8fefefcfdf54465dc0fdb2256cd296a7bc08c61f84a1f5c5fdb9ba30277c48bbbad6a1c639d886f8c619d83d927cc98f7f2e5b92f3cdbc3afe6ee477c680881cbfc1d6d13ea110870d7ca3a072e7f1a9262424f3b7b533f944d4d378f29fde777d6027db959939d9bb0414e6ba1db25b34fc6e37b3bae64a8ddfe4543bb738ee9a4f421696a436204d6b0ee3680da2a9bc8033b6b5f58345d51e398a8bd45f301e5e75bd65a1510718dc8b01a0e3c17ced5c90adf0c124ba1a968492e48335bca825970f03496a1f18bf6b5e7645dd00934c315f91455041e88619b26efb12fe7edca00079f1fd2ca9dcf499b3b057e32edb767b3d1674e4f463ef879a1e3e15b785151e34c67313bdd08e21d7ee63d2582956e968ef894f4baa2d3520f568091271949b258f3a115a8df7e5af56c4b84ce812f1864519ee62c1be52f3aa69ea5331b3ed745b480ad075f7a2eebb87d497cfd05ea209c515eeff6f509fe5cdbb68f2e088e05f4840a3fac55a1233b29e2d6cd21078a89a0f0d41bc9aa36cbcb684fbe3a8e70908616231e472244bfe074323f447a5b9861cc068d65d7598ed99672113bb6376ce3a73c7352666a63d0d9f888d6581b8f562b72b47909951cba94822e187f97caddd8bf2f9be0c6bfc08d839fdc05064bd51779d533b13faf32ac3b71e91e3621370b6a8cacc8c92bc738df09d1c9bea8fa6cba2d7cecf763372ab3d64ea7fc421d53df8f9560dea067194ed67f20aca86be15c39cd65c673f5030cec7cdca4254f98de162d6eaad0d66686054d35ed2b3091da8c827045d9ac27c03af1e0e69a23b4bd45d62c9a157ccb19983b9eb2bdb4a4d8d52258197fe5bb5def4d245b0a7a1a996f27df58af0a71b51edafec6e7d985c8ae809811d51fb9b8d11ea1d1ed774d938e161c4c60a701ae44773e0144fa774f99b9df61d28aeefc9e524da7ef384b9ad722184eddd54b423627eb4a59981983826fe724459378af24e638c5fa8f1f7f155c3eef07c4d403873ec2122972a052f4c599b14e23e3e43eb06a71b3752d5c40fe24142fb86714c812c044bcac99ae5cf871aad391570f11d702cdd85461a82a44b6ecd8184b6a5e80dc8eb1a36d867006621ac431041a51761d922e6379fe9d7e546ffb40a2c66a69aa1c8ff1d2775e0b7acbfd5a4f0e256e2325c42986759edb380bf875b8386cd252f4518f76783233ccd3b265082cb1dd6cff062e70120787382da2c0af3ec4345ddbeb839688d31deccba5af25d29581068154cdf95aec697579d79083f332169e428afbd123bc36d90b1089379e61b55d1d4cba887f5167e00d55e44131ff4fa49ed093a1267408eeb7bb06f233b4e60022eb0e18fbf26018b4c7fd8e4fda80eb0392c050d1cd3cd715106040654574471b79b9f3213e4b7843ad27658db26e84915ef9836857141f84ad0ee070619ae589001eae8f52fc27bdd20342797730aa8125a53713ddec0a1842edff904d553dfb70a186370bdd370103a9a3e0bba643f56234f587ffcaf730fbc35256b673ff3805069e2b172bed6fd159375a4dc7e8f828c9efb96a9f0eda019f8816202142df54a7f7dd6d5b672968546f5ccf6a2d171e0e4412e481d4b5074677d8588973d4254a9233981e3ec5b5cc19f9b4b8d7f8ce1eed6095889531548ca40e33d20809504daaf220d667df0d3ec2f8a8037aa74a751cf82f8e70d9ef2d193b0495a01915f41247e6f30abf81b2b02ccbb2acf7e4fef4271533486db17a3f8e9e80e9b54f18b191bcd0502266917279f35c3af714b31e3fd6f9e2553fc284689d4e680359a42e405927850f42492d078ef21da5b3fa4e8545a59072d48387bbe7b4b6763d0028b1d75fb3bf6db5431b0079c643ca7a38486c8d4ea4a521b2e885a18159aca8005f3d2edd24073c57ab57234a0e6bdcf7197bf4584e74c8f75f48384e9eec6e2dfb4d2f5fa4d13be9794e539248d7dbaf0cac920f3c1df88750db58363a4dbb541a7183651055896d972dcea2d938205cdf8018606d066546dadb9abfc9aa6fc997f27c7e25ddabaae825d0058339a0c920ee16ee8f641ff4a386c4f11b20ef6832ada32807f063809993c84d7f85f819c12fcfe512c619000e237fd182f6535f5ef0c61f394f657402307301b4a9520dd3e91c84dbdf7f62462ed2267b7de58b75e7db3e51d5d8c4c74ee8ecb79690c2c2ecd69ff1888c0677d77fed3e7be58e1036b6b1eefcaa22834344da75f508706b5e32ee41ee8f56a4c22d761b259219cca258aaca54e0b0852b3356d8c29bc5263fdaa67270b7c6b9939a73e08b7f5f478fef482a03c4594739cda989295a6c418969e7eb6fe7fb2e9dbaa7c7ed81fd22c942cebe9747acfbbe83194a6d45b08f8d49e986431270fc469a46337b8e0441952cc9e267862201907c9bf5d500de1e2cdc4a37b6bd8d5e00266f973e310af75153281e84bce5ba923a6c4f0b7096f696558ddbafc8d20374e7324deb391ff068e205ef6b875436435f3a5a8b1912f65d004f6bb1369fa36a69d99b6073a1fd87cbe29497b0c17d225f270d70570a0fbba932bff24f3f0b63c8de037ef5df3fdc6401bf81c4048597e58cf321a951d1baccfb15943b567d68ea84eb4c6728de5461b4a187cda9df32838ccdf50a4837a4c582044d2d6f73f5d7e5af16c4f4c2394c559052ce6c175915646492c5f4c1f1ff971f97e63ea57c67f4b0719be5938ec1db0be114ffba8ed0606835d85756d4fec71e0abb2fdeab813b1ab5d419805a5c0a136a20b564810c05a54608336aa5670ed7d0ee0262063dd81e7bb0c098ed3cb012d6cab46434c83d3f2addc17c016ca6c044c3143b31a289323ea8a0390db56f051edd841fc6084cb2e426ce4e2577ba34ef0e957e25317a6e929e4807993d563e89ba2724dd341c75c6a6dd0de22da5a64f560afb7e69fd2fa27ec6b5c78e415e467b134f3659d93c202fe170885390f594e5ea84ee736fbf728bf544507fed8fce8c454c7503fad8e6b0ccbb131bdbcfa372f4b631be1ee8d6b97611a51235266f56968f9f865ddfd53450e552ae91861dfb3077f0462debf953d0eb64fe226c7f4afb90a78ef05b07a821058f14063391d6ba84b241745f563dfec6da99d3f52ac41e4b3af7f48687e2bcc4b3c5935e7ae5a9f74055df1cb42d67666c35dafb35fd911301f6814ee8ff0446b81cd931239e3b29f44728f8a862674fa4b1763a4aa36e4b7e2ff97e1033395f5b68b0feb0452f425abb4b108715715ed3b99dd90414fef92b30ef2c4246930c08f1c666b04155b6b4503556eb018b7cd0a50315245a1aa5daa82a6a13ac98e138c60180dd34893d67544d9cfe8cf037b47e689e6afd4482a053dcfafadccee45e5e4358f9af7b5b0ba4998eb1cce7a6d9651ecd730896e673c2fc5dcaa506fe54ee98c7ebfc42444760430247d8a874e4e618c77fd89be64c61e8f1fa25e03a9ea429bd76196e42045775bf6019dbb1ecbe159737c2691e1b85693a8e8b38c5b761372e1a9b5855849e03d5d4dee969efa4d80c9bdb197b900d4108cbb36aaf9246e0e48908d9690c6e93888e261dfd3b2bb1cfef787e18dc9bdaa0562e0bd23e47c6531f220e42e3a70fa8c0e462821e6793141c606318169b11b33b9cfbccb311d657c90d04a324b631d5cfd7c82fa13610f34feadff6bf1e76484b4b40f88e0712f30ed03b384fba09aab11b2094b265baa426a53a978f6f10ba97137bb5dbdf91d29e3e02e320f368e66e133f4faa7d8cc46fedefa7aa9efddc25fef1d76ad14642b8879fec7bfc4918b2261fd8864a9e9c4785ecc489e1532515e0246086b88928d2514f0211d0f99af5be16f2fb0a8889d89fb68af14a80685d74398d515a3e7305807f26f7f10154049e50599bd67f9c7ed53e4a8436886d0f56e57a0351af9d293e0e8e0ddd3797938c59b50f34eccfb283a26d42be71ef20fa4eb0c93d23e576702fc5a8d3df9607a533baff95d6ce82445e0e49ac4dcd4920c2c725acfd22d098dc70cbf7ad6f97f2429f5894c7d7287b87002434a379bde1cc4ce48e90be4d27478c1945ba421a94d35eb75da63d5752b16ad4d9e8cc18b7ba84b760f82cdb5061fd529cad013968f001f2d69729e084b8b8a1b34d808c43c0ff86de1e640070ed4cb4368b3144f0ab3fec842542ddcda2f282ab7907bcb01b187160e1a3e5d34d504bc9a3e7840c17abce7e3f4a650e154b096dc1c4405a1c5c86151d45de56d553eb95cbcb8381418a70204e6df0836f045539cc1c0ce5f747ebe4b50f03e12fdf61e6b2b1dd8aea595901742204b2aa0ac5e51fba1972634628e191a15d50f14407483dcb6190a2c4c26fa030af4ab2f00006ac9be99685304a5782f511115e8e4e08f9275e33527ae109c1f17b2f63c2218bf0ed35489361df8a8707d72495ef621df2c240abd077a1f327de871211c3d513eee6453dc5ab491b1134acf43124271f7bbeba3007621642e3849358f75f8be2215674435f4eea263c13fbc4efc9b0cc2c15016f1031d3e1ec321cbbe3c52199d700a1a068a7f515536d6d63389844b638ea50cbbd3ad479198b10f2e03c8e68dd6b46b2e360ea5106e28708bbaa1262ab3270f5382c9e069b40267ea7c95b38a05e043ed709bb0362af14515eb7591ee2c437cddd526c0798d9a8c9381f9b8174a0fdb468f5c88aab19447f239bfcdefb263a9a701cb2107090812eb822d7b6dd56ceeb70d54589eeeeee926e2432b279440b809701675550dd8b71d671ba6ef687796574a8cf7538aaca30bba5b4ddb0342a9d692ccabbc4528844e00736778a954fab846269fba8e2905f694df31e4c4a5dbcf185c5d11482fa20a3a19c833ecd24f9de254ce9962f08e62aa52bcdd513e80e0af356be0082d2b5517f8b204ac09b812e72f763163d4e49eef8b81fdbd86f25d22bc926fc08240f9f024981b6ca78fdc4cf2bb1e512756fc7b96c7750075de69ae202d5c60859c34ed611d9a805ad06ed7db964f1c5a20176695f14a899df93acc15d53e8200d9a6682bd1c72053dafca7c2159be670d61dd290bc4f17d9e940ba409cff0455c9ed71bbf5061c755a60c3503ebad8b14e20c2c37f66b8613f037a6cca74fcca0437b565a20d01e42bf67fe46f6bcf3dc725d84e204bf33779dcef065f08175f720e42ad301275f52410902e2910a522acad244e39e63971aab89848b7d0943f40fdfb99c047280369d9baa950418837910a25cfe89368442350c56655aa176addb90e3d87be46365844a0de858afde4180f62a2010b18ddf6dfb3ccd1bd6079c9d6a6a7e76fce50de9f5e364d42e6f0d0b532bad3e247aa5fbc68cb1c7f59dc9eda855aa3614887bcf79e2f16c55396d2427ab9e9d453d5f8afe0035d0cbcf7a9ef581a213f7693e92fec574d108d24a756903277521fd6c69c56ab9c88125918e107e6cfaac98d6ebdb674eaa26b3280920424aef8025c2012b33db2012734f647ad5b7fc105a97c9f795c2622ad9a75b8f5e537e89bb27bb1526fb2f1620e88bb0ef585d76960986fc6a00ecac4fd4845d7d4f83bc03213e5be03483dd683f2718f0ef8476f371c2f1211a35e3d03e72629cd2a5f6219e66958574e66de7bb9fb2d569260f3e5edc3b1d74b628082255961e4bb20f56f4ee12c6ff5cad780fc8badfaf267b483173d79f6f21e4ff76a6cf2f08790450dcbca86f894791239b6166a56b1b49452f5c65c287afa07fc0dad329e7fe1de0a1edc281399d661018815b4f1ccdc5dc3ac8c352e5019a24d9d2ed3780092cebbf3a81193da4a1b691426c436268d62dfb22ddc6b0727a2e8cd46aab95cfa24ad57d9ce59e15df7dec3f24357108c8c548d5d3b62df049ef5a33153a62d0f4ad5fd7e160e76fe8354fb284d69967038dca6567881af0c91253b1cecb4d61763c6d24957fba396b34b8104198be67bd5597df3ff8c803fc4cd0c8819411167c1e90bbaa2d223be3007d98c98517408becb38e088a14b3c64370fef338b160957ef1d10e90373496dfb0538cf0ace4dc7d769f1f0ceeee0a0e87d64250e63b4eb0997f83232b1ac98dd11a734355378a036a8657eeed7f3bb76334004b763da0b5d79daad8c5894e9aa9656820075463f5c8b74fd4a7eef4bd20d265f7b2641c6a25e53ea377bcd24434bf3e4dd6adb6032131fbcbe8bb7c96ebb96e68532ff2f143f70243a8e7fff46846583619762a22d4079bc41cad306bf92dfb011920fb58929f57821d21593e07ad74657ad54a33414bdbf30142595a34100680299f885245384f14fa3fbc634b9a20a6a0ee79f790f9763a3388d5c2600be5650e6f081ec250372093fca5f463836ff7cf209928ba0504537c51eb164dfac99cdf6e70b5d8b90fb2572a12ce0ac925d565be711455501c9b46714ae000e2f990f3177eddefbae5fe5d37b6d3f545f82709c459a2eef61170fbd25febff43bb8d148695bacde99886ef8481e8edd6c1948225a6c11a7ebccb06418b5550f6619f742dd73b98bfbab6f610fd906102b1cedc2352b77b984ab916e9578ba75ef4d8ae896948b8b89b4341858e14e0ad97c1db8a6ecff8e9d07474487a7a80ac6af53995232ffb2058e2ab2899b134c3d56a37a5082d529c1618db5632ff3101efb2f28be1ddd132ea4e9423e47eae87b12b166d4d682bd8562b706270def8a4df2ed52e5dc637d57a860b4165572b9becd3797f4c1390b2b238625fe07f9bcab7354ada40890c500d7ad0d8fdc8ce6657b258f162071ff388070e4bc666d0365146df47538d3ea97efadc99fd34416207542eeb4dcd7e7890121f94ada440102f0a71096dd86bd3de3272cc8e49a9293b228a4ae4aab091d6fec46bb083ea21f0a2d3ea7ff695ef823f38097e6f9ca7ec7efb5593029e952453fb234cfb3319dc65f0a391a1f2e6503481f661d3dbeb4c942d90d1fbf08b44044037e97a9c2aa97df887cdc33dd069d99f1300a7a28472737fd5059bf22e7fa90eb7d252a2320ac26a392ebebaba9389413844728a3d585c2fc693e2cfd9d5331e7919b161bb45593d70106b8c1c26dd337fc9fa324156fdde918107666cc401745bb27ed8ecac9668949eb4a14583106c519138305f311748117132199c67fa47f2be8c1005fada673efb94ac82f8afcd09b27f53b401cd3f8295d31ef3ce0557f7fc06e4e420a9cd5556847069c6e4cc40030d2eaa13ff16f393fa738b6db07a5b0e9315f68c9d4be6117d38979dab34e11c009105965e998886e324d943f261e5758ab1dac5bda0a2ddce6789c47405eb0e1c92c8d7d96130926792c5c3f1aa6a6bef95fc13ea0166b2e960f4e0a9d902c166560636568a5ee8cc1a342d81fad125aee612ceb235d9c85bb4ceda39ad60d76ee3de70411fe0accd073086fd436f7b88b3a3ad5183ed72b17a78711217d0a752f8f65c2c0ee5f395a551243c2f0db67eeac20fdea6c6bb6118137a9aed75c61362017247f41b9b8cfd5e2c1ae6bc9e58591bd63c1d94758d4c7834e8208686a0827d5a7409eb9104837197fb9bbd33bf8fd36ad534699790c3f6280436fc4e4ba9203aad98d7e08532d339e7d1e80355fddf27a263ba8e4a9c53e802682e922e4d077e57227b268d2374fa2cfa952a495ce0eaaae802acd1b2cfee13694f48d4470ea5ceb74eef08679965a3e4e818cc839d51019cf749ce497065aa83a4711e2c9c4bf6e27f14ab93870a455ef8f9729de0f174732e9bf71150f51e52005cf81014bf7962dc48cb78205f852c789d5193a546edbe91eab84b43949ce6115751da8fd3c53985fad75d5555706d63f7df53541184485c5839ebbb2bf13ff035bf2f6c1b9b71a9ffd92f018cd42dec637246a3efa96eb4032b7f1a2f7c062a333e3f061e2d3cd94595b86d2906e8dff2b1166287ba4b392373f55be8f2437e7b7c192e17256abd988e8af2a51ebcbd285b6673b2baa38abb6098a443655286e50a29c6240cfd7051cda943d7f2afe0c97f06fc5c6a4ddf92804b0e7f333cb2c592475abda94c61913cf6a812a264b84e373e91a52b75ac652e66c666cf3926c1d3085ceb0e008909b0e207bb817601baf122d23f52901ad101d4275053223d3545baab1d31e822d94018dbd3a0ca2e951fd3a8b8fe0a15926a88e59071da3d7f2933f62b6b683f9d7eb3476bd741523c57322fba92b433297be1bea7cb634eaf1baae602d5a2832ee77208360ac6970b68ee118d7f6e3656f79b0c1e83f753b02b9e182cef2ef48476879fb4c0b3401865b23814a4c3e9dd8a95ddaecea2bed442336af54a200a7f48c024249a563864892ad52f94ce63283166a2f1a53c3e8aae6d6ea1ee7fcec7ead391837fb621ea8ef5488df611c1c0a5f4bedba7b9e8d6685d8327ff56f9eb868a3b71ba28cfb437aae6b2d5e0a27975e157a2edbf5554340897aaa9470d6812586b8aafa8a23f63eea1a99d4f532fd114a1c05cbe33c04194ec3f5028107667f83952824d413869e1f98dd369440a0dcc03d7ad1011aa32f944905a8821bc9db314b794ff1a9c95cced5d678950888606403c568fc6df5b80eab3d102be169eb521546a4facf5210111a7837ba6fde87ac88f1ba02a6f8464ae9ed72a3cd5be95bea346b6630224360c81be0d4674fe3bfef6b1d62f8e031abc37288267d5ca3d77d7450d0bdf64e05007a758e3386512a20e818ee4d4c899b9da43c987d90e5869b90fc5192aba623c02a1e161af4cd0ad0dd055b5488605e870c3e34895e7a6c9a5475a99edc825bd1292ad6cb40e759818cb748fd73d5a43054d46c02d5a27c665288186707a0902789843f832b105cfbbd9217e63bd11dc17b9872566f4b3c1d65056f3736fb6afaf1f81e4fa97d4d98273f899b39ea18fa279a45485073a1ab9631b0976de6b582da5af7dfff5b22ce2992dbc87479fca66098462cd2b14b3fb0d251b23e0f4f914640fedbf4cecac7101b32e70ffbf6ba26ea97842cc80f33d05b44190755cc2b91b234fa29703f718561211886f7769869331dd9452311f6ed88c86338c3b67512974ab6799224ced600f36a4489fffad656e34932af99f5014cc93fef1d30f504f62b5d892933db8c336b62f8c49640feba8273c15c58af17dee53293575f1492e75df216ff14d9fceefb153adeb3eefd081f5c2feeca65a0015f9341b0e27c99acea9dc82b146ddf479b5025c989a52ad1066bad56b71c1e60f95a650fcd2cccdb109c4fe6c9d407b3845a0a657976d394b4a5cdab69625bc0aca212e82d6531508d007a0d1f08f55c84f175fd58c3f9d80c13fe64a41b689a76fa1344e903394520ca69cfcc039c3d4b4f94f1c6a6b66a9dba25716c7682d40850c0433e06bf3a59a8199ec303b89a3e5391e95aee19def719b60e6b440d05130ca39c536f2371e233ed91a78f38f57611498658c9d7a5bc47da180dcaea9befea29ba4268a9f0668dc16abcf812f73fa1ff9c269e79ab41a0ebb5dd71d3a29fcb84314afdc68df8844487978a5bcbe806b93e70a950a9333bbb628eb6a29825b9bbaaaca5b6bdeee9ca7e86a5c4bf6c7514f51d2cebccdf4364cef24f3a2362d71b157ab58072068608d6ececbe0fdaca205bc29f1990e672ef5cc72ce5c58728ea19e82300e815df871b94e65b23fd8476aaabfa0d1084209dd1c91200a36ea5fb3e536a3447e5e201cded53e671a75ef2091843d16d4fdf08a3c777f0f77c37b057e7f32395b732e481c32aa47f14945981cd103da870ab1934a6278d91492feb62cee0a44d8d16bfaed6bfeb23157e63f150821346d94f6d52e45bf63cc3f66f7284b2129cf283a37c724ed5fa2089eb46e977ff9fb0a082c7a7984631b4512ccd9b5a025b65b37396925e343a7cce884d318a48766781035e788c1d8538e1e9476726e137ef148ea3b5c55c006bcaa927ccd1e1ee55e49e3b2685a9f13038db9032aefc59a78c52cec285d6367059ee4fc0eb11dd31b765f5ef8b6db4e8324d461062b060e2372a7ab4f1b4088d925194a17a67c1a8107ead011cf4e6e3736ad719a11e495997ac171ca3c36fdf6f72d6efee75d5282e1f121d752ca90bf2c6441ae4ba2725ab158f1af2a3a9430db648f06e94b2ac42d413eb132718f670d60adbc3aa33a0d4ddf305d12b462b4d632780f146ea5f499b7af753e3111805e6b38b10d0df67a31da9e999dba6b3172b68e984626d90db6a4469d16014186e20f1e082f23a2bec0a2d8e54489baebacf22f40982317e018cf833fb3605a0cf90db0122cc061b1d70929ff15e0f6bf8a82aec0177d187864996ee366f5591a0645d1cf8c570b8bb2377f099560e4eff6f1c442a8202467354d200417d0b9772003cfbf7144106dcd62145ccdc6dda71db9795f629556ddd43bc44336b25287abbeb879049d606c60d6d50c25d292c4c42be6eaa429989174862b8fe11ab242371eb30e1340e6adff56a7544d615408d8bb0733376e7f3a11c00d0a1f2c6734820ca2de5b3fe7a500c7419fd7161cb6ccaaafff44552961d547d280ba9e50e72faa9d2681e8a57f53908021a09ad2f5290e8fb01fe481b70ea69e46ab557f8e33a1fcf0bb788b5baf656efdf3bdf7f112ddacfb3695b79349149aaf6e0b36bf5f8c58a494bfad05286ef07a448fe16367073fa8e424c842e3de7eaaafff6d663cc7fc14ace57de3145b1ccdde1c823bf28c94d9b01df23a38f0b160280389193df262ff46b716c4352c17152aaf53a6d7df8b83dd95f044aa1156ba04bd0f471b939e86c035aa1280e8a1138436ef68a075ebc47b0d0c8420a18aa6fe8a38789220c82e3a4b8802b2e0e94cd7b10a9da214a77bfd83c5e9a2354db3d657c46d9ed9fc7cade2ae22070e545fc165510700140ef42e3615737e927be7cc7e9a20f7beaaeb36800dfeef6bb684fe413d48e77b3834f4a665cbdd678f61ca6035c66f2a936e809971cf8422ff39d576ffe167d3050bbe9149e48d7c2e660aec7ece78a7f541a71d9735f611398e1b629e3ddf31f6cca4f408e229057a22d644ec0752c3a9b7156409dab6cdce5e5773953857658a379fbc1f1730ae748f40cadf755c373350ee2f4508051f4c08ead9f13d25cc71f90766a03b9a070a0c2d2a1b3f5249dd5955d1a1c0b0834238d2aadab231e1d9e89b33b90f07c161490572e2ea951dd1af344505b40d7ba861d545f7a47461a9ecc6e60ebdff13a5695a1c3c1fd64c08adabb51c7df35f6bc23e4462f5d02395060fa833da346eb391a06e7cd77133497f29162465f1dbc229bbfd2a5f78cc806d1233a8107156e636b7cc5a9b120866875f5f1be136cfd9b07d1b3f1e55c66b6bf1613d6b8da084bab5af543ea16f94c5b32d8efff9d41c8c4c474021d5fa9e4b7a98137f2301c2fa2c06e416f5086fe974e618ac4cd62688924e80f5324068b2a55f8cc7bb719ff7dae1243fcb242cb0a6b9aa8ccaea964e86ca73ab8b702975fd9a252d5b9e8c6693dfac146f357f5e3520273890d3511bf36c88fcabbdf36dad14c964a7a8109a361d411c50aa938787f93e299fd1eb07ca0d52ad6270b54e7a6f42cd74ef5968d72933669d6b059acdb43b477fc43c944d9578f584da7d6efca5ab9c2f2ce235515029110e179b03c26fe76eab55e2fd362432457e370d1cadbe62b7bfe2a749666a0601b53b4ccecb009fee12a5cf0ee44c5e250fcfcc920e3d70a2e7c955241a29a1883df9c4798ba7e8a99273f92e35f4173141334d5b63439ab0c4be0d1cf97a55a94d00d703ed34071eb1aae90ac33518cba3aee7252ab01b2d4f1a9ee370d910efdbc17f480e4b38ff5dea5a3ba7c851244e8ebbafd30cde1bb5a394b7be89aa158ae1b1cbc35192a2eb3a3ad13c654121614067c908fd88fdaeb9bec7f893c37b51463f7ce27761dbe19fc8d106a6f7a3f80f719f1a66cb3ecd72a1d8db69a7cc6664870916d02c7eaacb1450ed4adaebbf98d48543b73f20e5842d0a0c2c8a752d155306a9c927f97e1ddffce52f53f495adc484b2f0922b418bec344a0a3db63fa912b70b668a7da93ee05a1db2a6affec02270ca6bc5e5ff0f6a7e523f6dca3e3d8d656e189737d814fff0730ed1614f642bd75a8770774b6b0931bd375ea9cf4efc52a1be144eccd0b3152224f3249ed3fbfa7ba36ef7d8bd04fa35ad5516aba2e3dc4e379b7c615c777e8adda553b7ea6821ab9e0c27ae09979644e48c0a50804a51f5a80a4c71d64f48a74bb89ecddfe5bc22dd60e74842492a45c226f5b6dc4807cdbe3799b9bce25a86267315833b0d6813c9ea54019f63372337a455f688989682a60c00a1b09498cdcf0253cd7c47634ff1b203e4fa7944e6d81371e274a6c730aed38e95a3c10cefcfd958f9ce9dce801dec15a53d24646d52488d5ad588ffc50d1e5992a1257578c47f132f682472120624b3e54e39bac6d754b44843ae7de818bf840ca909861964416012fafed292cd840fcba5d71214a381cfbc4c595ad227be73de83a1c64e3eea78f3343fb01f65d3097e628ce8a632aa9350f7cfc87712cb70d62e85dd1e37afcb357b701b817e8666a1786b099240762e34609bca11d5f4dc0e82849aae6baf5fa797b033fcb52556af3cc5854396bd7bb488bd8ab994bf2651e5abe6b6b047af486840cbbca26d6d6ca1f3cd523dab58f99d5aab70c371abab3a22257bae2578c1e8742cb087dac2a51451a4e9b48b6fd2b1117f15aef32fa714246a5905d76eff9f340b0ff67fdbfd98256e733bf31ba883023e75942239de0737a7f73930d3e8f5dd8bd4590f48f9c2895a6d27d7158218f35dcaab9d925a7b9fdffe1f8ec39d968968b4974a454805a33d49a6e69c5162df4188c8126d099a72f47a8b9847579283e4c414902a9ec240b1a10e91a73cbb3d05f37fcbbc335e9d1f92cb82be0130130bf54b9d5ba11677e0fa926014e0b381d083b27d0243d490ec0ecd6b7b36097677b1eac644ee0c217cea885deb57f880769df24aa937acf93004ced632b9cf7bcb5840cff239455245e2bda4ff2c1c635a9096ed18094a11cfb78e41505b2fd0f707789eebd4c01de7618880cb43dafbe36111e85c37f59bf6b9b7aaf009427d7164710ed19fc8c700ae1351d8afe77eb71c3dcb122593ee139bcbdbdca0260af04188923a0e1d8868cfd7fd7cecbc450dad89488190a2288389fde75859f5c2d3fcb22eab2206a2d5d4746a487eb81b1d8d2ffdd7d59758c066db98bdf62c9ea6ab349902163438fd62f2af1b19f64186591982650355867eae4d5f31db455a8e8d6acd0edd6d4e05038e83c65eb49df67e153506763c8dcc52a622e97b119b10e8983e72ab5f6b5800e113d259edc5843c6ffdbc2d1fd0d812e116e634eb36432b1dee6c7ed2fc2048e20507f9ce4b3a17c485dd3d2f02e1f72f877596ed89f8103aee48625b75c8941d5a062acacd2ac13b45b59e2e6a94aa391b7105e1d1334534b924f44ba14faa5e4bad3e2a23a7dda5458946fea37d333094b935efcf6198d7cd126db84ed2303de6448c583972968d6107632b20c94c4dea569eeca5f7dce6acaeb6d198afb0d3b5d83a239f7b2016ee6bbe9174445f6805d73c08738b452ff45345a8b2e2d99fc628a68a5c7305cec58d6fd25daaa54841307d3a13d73b20d290ac9520d3728d3511c23a18bcc635f903c0e09bebd553042b5bea74cf742613c820ac973cf669852cc3208df1c1e0a431e1def5341fd0efcba5410f5f6bcb9f817a8ec21db8a8e8d8ebca7485ad0f18b10e08998626f19854743ebea15e27180e57f1c6c29a3f08bda57ac0125fecba148da29205125f8a61e4b14200e76ee3c597ad414dec50cb3dfdaf336e1f2f364694b59a81576117d3221bde6d923500d31359337c2ee943e9569a92f695deccd5addf986a74b0187000ece16290dd7e66a36b50e1d48ed5bcbe8e6093eb9cc8806f4b907c58d0f729d356ada170f8df9c0dcd1b500fab56f15d758a23eca5a88853a545a8a0b675b20a16498567015c175a92b154689494484eea4b064cd855be55cb81581ebe2edaa7fdaf48e6b3bc3dc4f8a8d4dc0a728a88abef1a1ee91fcab6bef8b12e480cb532801acbc1de510f4f6988b1b018d93ad17dc7de7b01e01fe9536971c0af52a56a375146691a739ace5783437dad70b119f2b33a8b6dcacc6802ccef9c9a88ce59392a7a277761ad13ed0aed1c55d9c11cf5230588f7b88fa59fe6d95715ace626dc3276dbd50f82aab0040a353323923cf62683dab73f76259bf61ad65c64d7d997b5d88c26bf6e5abc92c81f9e7bdc68b696d00812607f1b511dac72a2c7af08ce2b36c1d3f7057eaf45a2b8dded67f642de81eab3121a92716a3f0bdc1944347e33b0d55bf8cdf531b240a94455c4e5b2deef39b96a2ccc42d8526f031104689e7ea264d19bb84c14ae733c8286f95aa2559acbda6a577f55a4788e0c573c5d00f6ca9837be7c44b29b65b343bec069c9812157d940ef7e7d337e417aa56b8a421db7ce9b5738fc6ae05b019403f70f2fc50be36822d938f9626ca2adf3be37ef52640aa997e477e1e0aabb7fe1b0daa902538da0ecf43f61639155009b097ed85f3e7b9a9360b2aa470191fee194e1c2fe4b0da08582cb7a54c6f4a01bac2f6f4df4acf9826dfcaa814558fb8cd35dad8407f1310bcfe9e4cb8925066e20e1067c1a326487184c027677e9519f760b4683427234e5cdd7bd557a901bef3fe088f8b2d5aa0b79d9d63916da52086b70454b5a76b18b97f23f651ddff679531a4593476c3f55af27d5f5c33d344231d02605685b283931438088bd9273917f80c6f8a97f1b2314cf8f2f2d2f76387c48f611009a9f32100370cfd1c7afc76fc6dedaff53c8ed0e32e0d8554a6bc686e62dd8dd4da92a7a18e75165b01bb390c68e5fe528240ed13fbb88bf01dde1d7fb63ca896321c48b8daa0db069355c7ed15599f0606edbdb79ee68768f79c00d463e3991f4711d2bbdf1f21e12f5d32dd1846b155449ac34575c908d2fed4e8376a2fadf77cca68e398dd5683a7d439192e4ae408645c8ec72e787d6c667753b5a9d764ad835133dcf8f805d9157693ea8272209e593e9b587f8f52214f534e214b785b2df8b572bfee298f7b31a4cfef819d4e87ff17b44e3c2a914fb9374bbfb5251e3acfc3da6e786e8d28cdbef235675e7b9fa1e234736a1ebef179fe47b02510e756e8b815e755d9aced6e957d67d017fb687dcddcaaea62f20c306beee5c81b9a819833f3b99b1bd1487d17e21b837b6776f0086f86196c0ba4b48616bce66e489e2dd70e4184a036a1bf0e4c2cb268353cf481f5ea997b3f2d50f1cf12f457f477bc8b5206f0b34bdbc854ec188a4048a36f87a2266c2e6e4f66dc8e7ea6a2563a3b9917d73058a3e6e4b61dca74ed83f68bb497bb6b5062499f88940b867878bf98ae0d8c966598cac21414d7ddddfed3442c7100bfcaddbef59682c523432813bf5153fb417e78323614ea07015cc03eca08a16f51207217157a3e3e3bce41a8aa14b45b561a96f617e96f53f43dc009f6f2e3cae02effafc87830e5945b9c10e446d2e8600277634a59579dc161e137e51af3ec15ff6a9c8a2089badaa30fc129748507f2a364bfbe41b1fc7d9d0700cf74ada17a2977fa48f2a070509f97debdf9e8afe1eb1373c22d6d3ca7d5ae6c999ff99162a6476a263d275218fdeb4bac175cf472aeb538e902eebec085c27df4a875fdaf14939cdf452481d6ed99a79c660a3943322e3b8fe2aa5571a3b5c80693695bb4420b83dcc9a2204894d591c0bb8f3a47d8b8a2b334929adbd8dafc2e72007cdafb6654ab86156bf78998c258e4de85a49bc036673565d215bf05dc28d067078ec5cb504aed371653087d26284bcfd99c2fb42e80906742d74f166490768a991ab3a958ffed68acc0e462180b1e89caea46a72e13cb963edee92e6891b810f2ccdb19c5d6df28e7e368e5f9ec443912539b0ac696c1bb40efe36216d326dddef0b1b6f819e48a9b0c762a5a371af1ba1ee5fdd779758876d00ab11d78717050bb225cbf2e0b1f2bb033b9337448282bce382e73efcb863770267d6bbd82207cfbb8f29251b42952a2efb5de1352d48c0e2296425f79665c35e91cc57ca750394bc681097cb33b0da6d6ffb797e99529c1c6225e2462cf2e83348454d0fc2268e47db68b89440d670fd4cc250440e9a90a6330b6a5acb99e7df58c39c1cc8a00880999adce96d09b560ef2d93426fe5be3b5ef99e26b861dade156837e61258c1fabf06d777a6667d003094e7cc810859c8f151a57374936991f69e4bb4b050971c6f0b20f6d50e3d38965d262181c2f9eabb29ef10720c2ef5ba72067c0093a72d7615c8db7654e751b0b45d54ab46de007995ae9cd0e8da11d268d47313d044f85871c9259bd6a0d0bf40d731560f28879607ff822c759ea7114efd3f4019aa4759a5fcf9f81cedfc01c424059f6a186e066c15c329998f0441654b989af44d27b6948e60d70393ab578e88f16504d65c4dafdfc279ae893124f9299d46e892a5f64fde965041150daaa787be65a93c89fb9d7099491281d8d9ce23fc0a9f67949134404fd74377dca13cee02450c3e1532a117d34be54a86b4dbb4500787b06e0c2692e3a6fb6a4ba3847c1603e13c092e83a3d7ac2cb1dbca937bc33422570c123d9d3acff9c7207e5974f9f16fe9ad0b5218a5a471febcb45725245dd7aba23e3ed02f8d3d94da6f8f9fdd5ea7f2b7a862510a7def0da26573d66dd939c36ade77c0ce1648cd091102097608f07579f0982cee35ddab525a3cb55cd4a35a348e663d558780112587c181426eb108a0539631a3f8dbb371be9c19277f5b02703da37a4014740e3555522d927afde7c6e831c771d2371d069449f3b139c4c21b0e4c1f17a34709b9abfa74d7123cd331044bdffdcb3f085b6c325b79dccfc905c44750a069391a5b27bc1fb96b7ecfa8f02bd7894454aa2400733811dc63b2391ca4c26745e82e42c535845de3a9be676dab18aaacf730bc6538682ecf3c754be2c257a0ad340cccfd4877e25b2c4b09a97d4923f69c121689719429e5f4570101c452ab2e87b088be7e3456fec48cf5509cfbf9651c1385202d7d2212f3a6808061c18ac177617e1acad90acb35d7096be34a1fd967ec49ba497719c15187ab13b2710e1f576a227e8807a6d78f3bfa0e293e5a9f6ddd9ec436613816b5e1c2cdd519323de00ea7d442cff336501104c1f945c75eed7005181eb93b8a3b5a4dfa495b963186690268a79782395f3293751e8402bb0be35ac5ddcdf03910e8a6df6f90bd9f6f7f7f91f19e6842e576fc030b429dff48f53f41a1475493be2024a12d067e85ebcd466e903313acaaf8b3bf35edc8cdf6c4cf8e3c8ee08f3df35ae4dbf3a6171e3d1d789315fc42d3722f8cac7e79512bf87308d752dfbaaee61e1c4cbf5e804ba17108112933dac9f6d79c31238dffe6ff9df8b0d2b1d1f75bbabc5b182297b9bda1d8cf0c9a4a476233f0eaaa9077ea2de2bcc2703c906a1d84d1b2ac3012d207456d5f38e8d872fb13a10c304cc7cd32aaf6ef569d946be81a02d2a7f1eee7fe84dc70614b01e34eaaf8418780d448b569feda34a17b7559a8f3839c747dea0d1c89f08f1774a78574432573496e9e5b4c73eaed57f2167be1013343be9151f23bef4b67ee493f776c1ee62773c95644f8e1eac97eb743ff97aa2b803e3ab307acf173fddfcefcd9dc50c146a01e1f2c3a48362a18de41ba22e82ba3de5e934d4cdd28d0b9ef70c9e4ec7eb4e9665abb5195dc7bf015fb4bb04fc9c1f9d159316a218ed96e64473cac9e485ff13f289131826a5a267d90969118bb635f8dbaf687c2e902b760ab72727ab44e726010b837a00dc883a3855c6df2344e52f5ee45d553135b78200b834a44d1979099ba16013763c082956445d479f58133b7bc962a441c0372d3c9ab6dee725093213d6376106cb1b765834c642d702178861267c2aacd06d37acb1229d9c08da9d6cab66d76643fce594188d56e455f481233aca851612130293c1af90577ac021c7b02b2920917e969455afa61b028ea975cd291532aa6bb1818e379e410242d0b5d346ef6cf864bc4db687c61d397f6fe05ad6b2f897466c8483bf5612db77777144ccfb1c4ee39f97bcf903b7e023f7f98efc4eba5e7597b9d4e0efbe0d971286f43ad25c020c22f2fefb8c81de3e8986f033c754247e75d50659daa47686592cbe4a994362507e626e54b227037d403c58813b49fb40f4ffe26f939964211b99ce8a41006bc7f96bbd646335f8ba9b49acc37d2798e838721c7c5e897ebba3d1b936bccf41e8528a00bced4b5e6d33735bf7d3b1a26abc3e257b8669507cf98bc358a73fa549f1564c8dd98328c4f65d22459e2090e14f871f78f9683e8bc3fb9894ff00eec69ab6c44aef13d4faf8cade90a198a762ebebbdbbbd6fb9282eace3fb62562d3b5fb8ab0ab42d539a49cf18659f86e6b87822d16f1a4a2c70a9bf78547cbeeece6554ef281e8eb76790950fb32bfb29c778af24f2ed811e7abdb69ec20b6437283fb4d006e64f409c7e660f1589d45937880ef9d62a0df052c2c10824d9314157aa4fbf6266b1f425e2be83a258f47e2c87877d54ab02394e6664ee922eb919e357d508d38f33f8d9911e6ecb5ac396db7514739feed258be6d67141b943a1532f7a611ce3f91ea79c5291a457b2328003841c4d9be65788da622e76de226b980418a861b0a39d57a9fc3777b25fd263f7bdc89ec5345094b57c4a95c2d1cfa52c49e0bfbeb5b4a9142e20202813cb16f1457ef77de5ed9bf2ad169c8cb7e992f50bb02701c5a734e8c5425363d3d0e5486b757f0239a22528036c6d45fcdd07561938edcad2def63835b2167d534ee54b7f30d78ebfc14a55a7dfe17ecae47e05d1be75d7f32453ef9f565a4db676c11273c5c9877fe922980502a6be417bf43dab3024ab95e340f18b493142597f1b95045057df8dc955e786e9a18d24a1f2568421d7dd5eb5d15f0e097782e0bdf5b17c58f9d10be2b8b52f898beffa1826f5f4b7c906082aa9d8870019c4d18740b04a68f8e3ed799190ea31cf3889c12026474bf5d5b27bc5ba9469240db4f3b8b019603e68d9054bafcbf50d55d6e3e99b16de54cfd7432f2cbe4991e4b9b3c8325103246e267253cc5107dca55838ce1bd212fd4d770b4757fc97e4b8ad84197ee95639d18d922a3fd27c2a6c6cacc6593bcd72cfbac477f1a2ef55a2fcb5c46071dd10f2e402b4c4b60bc24a40b479f5f31b60c91eb3e6d34d6ef18f199c11914d379a005e4a69bdd46e1a52be8f6facf1ce13b95076510f9b936b7b9c1c119a123c024e7e402c6f63805c0012d62d2111dad1a177849652b2413ef436fc7db9a8635a428d2803668d82a4a06e21eb1b2e2d690e907d3ebc1dc6aa4a41ec060e57a3e9b821197fd0330bb824454c3f9bd4138ee522ed5c73a22f43239e92c6c79ae0a2b915a838dafce3591c2b4bf33b573f26540133824cf2a6ec4065acca5bec71a5232ca556fda126e99998f67347ce6fb3280b168184268b66354c61f1d1e1aecfcf05031df396bd3f8d639389e85c06129fa20cb7394710391acb1b49e79008c400c11fe3b6ba6111b5de9bb06eaf442b4bd8d05865225dfb8fa5b53307d500daf8d5f1139a644a5ffb986c55fc4f58bb6a78b1de91b5aaa36f92078551a39ba2b5947c667d148b75d4d507fff9e236edb95049ef6d03f67d2ee84c63b81b21941f1d2306293f521c25b114bc8ba5f3379624da7b845335c9db9208b3fffab627da9951a9bc25bd4bf15e6c0ca7072708511aac9646a52e298d31ee05e30545b220621464ca5f9227251752fdbe4ff1429ee6eeccd40657220ac501760ef684673a32367330efb4fbef21c70b13b4fedd992c55560d532f3bdd281fb04db03e6d8c8c24f78fba07d2a8268d38478c17d44bd01fe688a116516c05715608bce9bf511770f22b64e4a4c8e8f3164f06b96760e9b73590ba179b54980bcde413104a9a8cc8a8e308873f0960cf59ef3c22cae89c5bd34588e1f6a517e14354e1eac8cc9b1819bb7ed1c280399e0b0d03ceb5f9ac6eb78d809f6864af416211bed9354cda0fed92c0d06b10f93b28ed3f48cb5a40cf49d94679b7bdc230b3c85800d45843feaa558f52223cf5157d915c4bfe664264afb0303aed9dae4ad8f1f0d26fe2e5d7df9d561bca41b1cf5f650d8c555abced556f8a0b0aea17f659efb726f7e9e138944c7a8f88f801bcd4ffb1296bd8975c940c8691497b9dc518d9cfbd36339b9a9c49917ba6dac66d13f0b192848dfe429cde03a007f28c8199adc55f012d59b490880a0c9aec09716d931053c0be5ca73245dd9262bc3cb2af6e28919a6a68aad40179fcaa6a9c77328dbac88a7c727fea7bbf72dd5e518ad8258091fae337dda9535db17f8d915d01d29194cb2b39e879ad16e14e3029d6f6adcb582c5bbda3cc2bbe802dbadaf4718781fccfad4e2ac0c316465bf33f92324ae82ced9272cef54b260ecfa8fc108b2c651388b683880e968b38673beabfaada8f684f8363a57dc044cf1b67b1bf3559e5453cc1075ed3739239d0ec8af67dd69e9bcb2292aba9b614e51a993ddd7cf360f9dac32f12fd1cf336b3e37947386472513473f61226fb46521686be4d42dcef0d6a2ffa40fbf002d7cefc7600d588d5792316b9cf9632d39f5f88f916d76a0c6910e88f3f462535c6bbf9862e2fb6e870b17d3b6a7df33b3570e3efd065c216d33e7160181076f44a929e92d94fb70f8d77d6446bee109fb62434f3e2fe87fdc0266215d81000f6cd4d4b94b9d03692ed0e2d4712f2dead9f57256ebfe7d5e71d0f7c3fcd92e669869fdc4e99282776c5db5f8d1d5ac5f48c3f3188f88f6358810f01dde715cae92ca2fef9dfac95c6a09d3d37e78f9e7071393e17d8b0b27ac9109af064ea0b19dcf712590015b3ddc684a74be7f4cd5c764d66d7ecd06b625702ddeda1ab4ba92363bdc5723e281fec8b3ed8491fb3ce0361416b6a35bdf7cd04d7e4d67aa3a0c05228204dd37f69d733defe4fe0d34ba77f96d5a85b38bff540dea5f67ffde6d3e1cc8401fa645c6be89c62b7597b884b1eb59c31593149dce326f4fba744f0515f44f64d8ec2960b520cdde0242eb3e7066265e719e4856334ed04fac03463371f67e665df13a5dc23df8dfa42c455e88ba7aeb16459a661e9558cfe567f47beee43bed8e643b2f937f93d4dcc88798f79129093a84e8d5e877855e3e1e359d6ec9c9cbdfe676f5d43a7a90c57a109d96844e9b84193c7ec881260d0d988e45bc2bb9a470ee49f5bf071fbbff071ef32d4b17cb94bd9ea701d94e04510bb2fa4401b7849eb0233da213e0d584a6ea3954bb78faed72d08e37add4fef1c61eeb42ed0a0baa274121b7de2df8645de6a5d3da4dcfff6c9c5b15c322785baaf72dc05e864976dcbbc24b5e1639c71f43732dac704ccdc3401493b77067fbfbf6b7cb419ee2f33ad2b3bc72c1ec85c313586a89addc061f621e952a759f45c3c659850aa0aa8424cba991f8bde127f4312718f4a3398d9b4f5d3cedbbf4272319bbba4dc925d9f8948d8be304d37ac15720ae9e82f2806ddf4e68b25bd6e6a6824d9a366b7d517c194f1c1d028821df974d13d1553093fbc86ca56072a5bed2d0a1ab9512bd9c966dc49e8ab245c7be748e3b952aca5c9be5ca28dd2148263848c59fb042452d592ced426aaaf33b5a4e1d4473f80a37b8db07b6ea68f7d2bfadf2f8f1e64adb36d0cd4788e51520a8609621e80d87141b73a42b397a64dcfb1d746d2474135a9bd22ed54682b7ba0216b36b0f5db4b6efe050b0232dc1cd87cf398593530b23f54a6e17f11e2d6eb43b9c39221d07bd81fdf441bf3289fff111d38a98cdf1f6b0aff32a28eaaf622c479ccba1117e5b5f9a9e0c16e397268c113ca723a011ea643633a4994183c880704d19a9102c60801d69de899a0befc38fe0a1a541e6fa7993b56a3491b31fafef171b2154e0b274bfde62737132be27a00d4d3787ddecb3fa541cac7855125035c2ec7eb697328d4b8c1d15ba387b08511a6319eae171f8372d920e1a7163db9f337621d74e6037800eaa31d5123c4b0266e64add3f72e9594a5598d4c86a3853709b74f005617583cdde938ac6490159bc7212a02247ef902c01d3362c6891cab61ba4ffc8177c441d5683fb7365701baf4713da9f4287ba6e01a60da0e765667929e467cd5341775eaa39834e1c924997d38faa04d18eecb1137d66a1424e63ebc268d3fdd99d0256c2a931d8b8fdd775bae1d9af36210ba4161dd2ff845fddeb6e86438cd212215a59791625e5aefadfb895eaa35cb0c7ea3119d277475a2306b73db88c1bddd4e618aff0285f7840d024e4156c7e695de11f5b70648dc337b6e4258d7479dc6ad46a33989ada539cca196ac0ab235cbde3455353f9ff166701692715c5efb0e1791969c727074b8df9c89cabe7c19892438e0275a8ff4d0f698804254c914651795083f4a0af99dbceba8dc8a01f95fc82d77bd6575cd9f4db33a7278e84a7150f8e4dbafb6d7cb5e59990db1e6726f32a9ec121a1b0870154c7fc52b1e98d09c3e937bd89a13fa5d55a4324d42e2bb31d8acefe183dfb79fec055bae922d47fe46cbe4d7d5cfdbc8792e791bc318650adcfdf500d5025444188f55e3fe66d0e95664d61c6c36468789e4ba99f9eaaf60d5b41a5c172ec1a2a48a52bf623109f3becffa90a65d360399054c80b3100f2ff6538322ed3e22d3ef8bc6a1d73b21bb121b31b167e3f81f732c3be0da19ce96a746e1b9ba69b4db6eb78626928398c36cc645625be39f2008932158107aae8653ab211589010adf9ee62b873c7f384b1fa0c90c42233be44a3802abc7374c072d738dcdba389b6fac39c60ea040dbecb6c5e83681b9abc8847d867c59b7c4b71bdeb9c567cd6f4e1c4a31b0ff8f7b45aa16461ea0ddf730dc5bbbc9d054d82d6e9de88c9c44f6efa2bd4302d048d32a4967576753869ee4e2909ab4dbd16fc4ec08442daf7747ab1ace66d58ff0e460be110e335a9a524470703410d3c8c87ed5f7a122a6cab637465458ecb077c62f56d85fa0b8e329aad7e7bf20905fbd35e6dc418b540a9794a3ec56c0a89a2bb72f64814be5b8024c53defc6bb8d4f5c7b79bb555bef4a06362ffe479ff0dac5e3defe3cd5486591231adbd600cdb8aa9f18c6bd3638a98da25c472ca0f36fe9babe35f74d8d1d046c46dd6f59a794e1865d8af84743f05a73bef84fa35ea285975bf84cbd458f8fe2d83d8beab15bc054e0c8b4fb999d2ad4983587bf58638464e985864464efddeaaea1b6db26ca0f5dd2f384afbb04c4f30e0a350db3c1b8535467b5939b510a0e00665a895fe55321504d9328a5dc2f990abd86a92a2a9fa6f6b255751b8b431438ad337ec1e6f4696b594db205e669b3faaf4bf8b068b0174d1103aa8e60175ea4c5a1b189182144fbb4f5d6a999a97dab92519ea6258252aeb95151799be650292e191242a363d08f25d96acbf141405000667128dc7f2c6c51c6eb84fef9ec4bb19468f9e01e36904dbdc69cdce926e936f092ba507cd2ba689a153c3a18225ff79a3fc488be8f3967115f477b7277358bb71ee5ec1504134ffd3d1ec84c1765d5bf9f15dfe59b4b6f312a1a15c550fd7af713a64a7197971c2018cddaa8e2eca0e2079e78989bd7dc59545aacaca86770560a798431f3b69236b6f84ba6710a98e90707cbd7eab5be24c8ba04f64ea3b2776a4c9c17a4ea82a3e45014f2f17424de40a28a80be192db035f06d8d9b4c52e568501ca2a378505302fb0246cbe987fd3585e726c62a4b89c36f9670cb901d20e627f101b717ad0e861ca1bdd3ca1dd0abde9357088545b587c429cff53c53aa921b811c740b36ab5493fe91f953937705b52d502d97649b6702a72e7fc9fba851af8468333717c04bb75f4d810bc396edcea5ac35f357787ca5a37e24c9639050d683651865258e98fc7c0f21f8f254bcb78b2444526314ed6d5b2118bb29a9ea26def4b3cede52c93b9196e51f7aa31f210fe60eb6a9fb2072f600ce3aa66a7bdad71907875d8a7e2937d60527cacc247a43ee70dd40a1121402b0e8d85b53918c95acaed10ef638af855050f8170e0652d85e45639e252ea8d08717ece1eb1c43e4cc48f90e8e46ad88e28e92b115107b99bfcbec71795b9da029a28cc01179b356e9eca137779eff201aee255292fd1c92fdbb74eb9b892c1ab38b89bc97bb18bf0332a83aea6709a768ad9c5082c6d9b7165a8fc2072fe55b335ce776f5c4d3a7785b73a3c6c63f01f45b39030b043b271ae285c4d88db4a51c8b93f5b146ed857ad112c87dbaaf68d10a99e72fd3f5096c1dfb2ef6f995d1562fa15d13818256871b9aad88f2b0729806909da789956d18f40b761f683c1b3011fb1a88f292db06e9346cb4cf16baf211714c1a2be6592293ea0b3b846844bdbe7d7047c990e6062043d4dfcf3efadaccd785a3fda494b1f44a883368e144484dd417d30dce9d874779167a2822fde4675c93de9ed1101cbd5e8b9f0e976f1d93398c4e5e66d8516d95ee372004b11b8587784ac10953af3a022c39b221516f929d665c760d0e7394c2ca0bb18e697f420544ef1a2f49ea372e68dd49a39da951977f22fb79f24ee79c9c78d978186ec60f99e5e3e3965509bf7276588195c7ae97f11c4ccbba98fb99189c74ef33632dfb04e0b87c51355774324867f46624d2e9c7ebae50aba13dd82d7816ed6dd7eb7033ed7fc53d65b74e5de19ee0f53a224024fc4fac5e28382043771af4a9ccdc20dded5c887bbeeba909056db3d1b3cc476880271060673b3ddc4f6ca4568c2db70f70ae958f2fde8fc7481e2fc721afe9832ce55d7858397fd7b08f6966651a91faae9ddbe71e58dbb564f854359c72e24473d27ca171fe24f4f3be3a9c21f7a5e3423a6acf1cea3a7251ea2d35bc902737de0763398792f466ccfa8013c76468f7947a07fad2eee71071d67e803c2b0b873a3eb0d4639ba32ab211368bc70ca7339924b0bbfc943a149930863fd73c731e03806d3375b882e1f13a74bf870f0581937580061d93a0658d599302a099747bdbab28b0df888b0f49a8c9bf90ee3f5a45706ed92def38375eb51580f43a09b202f814642dc7ed470c286a052f9dbdb5334618c9709b28a7007a77b5c710c779b9c5e0b43539c97f20410c343cdca8d69fcc34a1dc53aeabac7eba7231dc034d9e41c0dc6f5febb4e1895dbdbd06be5f47a63aa71cbb46ba200c20107e77fd2b21899847bd0e571da218f0d50aba0ed69305734a5f6c8573958dcc98f5f48fc698117228468f79a238b1546a869bb919607bfcc4b20329df5d63cf9911b17e5727dbe264b706de63939506fd60ff57cf9f4d38330a690117996bd336016e46a89140cf5fb63bce6a8c399660f5077ab8290082d8bf1b46d6f3665bcabdeeeb6a890425d816719e1fd01d22bc0d3a390ef7dce35fbf8344762ed6ee5b4144de0733a6754405197a0037b0fd2adb0739d0c2c07de0646e59661796f069c7b2816ec115e74fa91524da8178d97368b500ade75d4644a62b32edeaa8f4a77b975ce1ea3c073d9313a0a88d487ade6d2f46472802b9bb58f71c705a80614662c28ac97a8cfd8d54ae3d457d846a27d8589839b21e3b5cb728a736e3ec70d4a50151747b41ec4ba953b7051f9674f149332a35861dcc7ebc92d16e6463163631f0651692ac9bdbb0b98aedf4ae4843b7638958bacb2ce68ea4b6e9d29c6c76b10d65104528f54d24202a5a1a56e86aea40b749d7e2bba2baeeac1f27659605f3ed49fc67f8146d6757c0e77762a3bba8f2002483f06a75a509d7be24511cdcedc4d52d2b0f6866263019684d72009d7af10223bd14a626e85912b5bc5431ea86b50f2a9679659a4203f252e4e7598c9d1e4769aacf4ad8f15d83c53e3faf2d5817de929c74442b773efc1f56f52b33122c0bc75b8dcd9d35d81b84e13ed7b279c912fab8ba567d592ecd37c47ef7ac67858a2027bd2076c31a8d3364fa3eda875626bd5630446c4310990458b10da843b0dccf4d0ed6c23a4462a5fc57510edef924db4c10891ecb976918f4bd04aa2e47d477d970469b131282bb589fa7d590c73f3a82a2fca20482f30b7b6921f14b326bb03e05bbf5b783cc6aa34f348f874e591d695a92a246789141900bdd8d5613edfa649df8abbfd4dafcd1776038ccc7cd89d3aa994287fa2caee4fd78cf52e1103e57151c74973552360e8bf5737c8f2d8f3e8ec96d88ea50dedd574ff3320b18333d637cb0f3f6e8cb62f75994aeea79a0d4b4acc1cba4926efce53dd20c15ffb018c12d716f6f4ec853b34d0b3a31dc306e7f3efe4fcae8647e81d3d3f4f845fa669e435b16743d63c63d318b69317e571bd34cb53c32e3a280c4e42689287d82b294dc9fa156f2d47d8d15e1cd065457f3173e57722eeabd20a53a5b946f185c4eef45bb2a09c11206b807a409c00b74f2a99f609163113ab5b1a73b136eb6fc41604acb24f3005cedc7cfb26ff24ceda91cdd5d76718f746dd7c2cb3423124547a9b8556cd52320accfd686b56490d11c5a389589a3f2eb7c88c54658ffb678c332475603d3adbdb5f06456c57b8d27351d44a00c0c1d6d1b935328790fd5608323dcf459d56b6fb668686bbc87d835ad152d0781646fe61088aab7d14d806b50d7454021248fb78da669d71d9a95320233dd94203bb382ca709adef56daf646e07bd360d91a2803bda69562793aa6a13bdeec6af2fbd5f6a7dd867bc2e249b3102d5927e828f5f49dc521c707e4f522c2b5169abcb6df53c10551e8049f38be99ee81546711e021fc86b9aded0c7f8fd44e299e6f46ca670ecf86c9e2df255946ef6b8b05eafc8841a4a31468a7583c197ff08f2265936777dd24acfcf08400e1c17c14d9d227488e9f65c0fa71cae92a88273f1688202035d0a9b16d9e5e8186029bff1f2eff5ef97401ff43241d36e208290bf3afec785a960bd26d927975b1f1f3f2fa28db96beeaa35029d3c0337e75e27b20cc3be4800f958d8e050c7bd355a9b2eba39aaf1f61c69d080c1ead9db6011de76c731b06c509e9036094e69354a1ad400b8b57cd6197f531e73a33f12966c34e152fab257db5a87190c6dfeaefaaa06ac3877ded881a3b4bcda11a53e190b857cfff83382d09525b7b7d056ea7d1799cf2c1eacd0b0651687a1a9d1b85c1e601e5026e486b2e0ef97b20e44f19a589087cad78a7976a7f0fc135b9c28e728fd519e73c652ed2eec4b12b111b704114921d03220ec51baa7724d565d1802ac2e7b680c1d0f8b8b4dd4eeb49c3ca64e8e02aa277827087f22e23167290bd81e715c0609d75e44d9c05e77cc8ea92fe7ead91b93355035f79165e18d0ecdeb9d4453b1c129916db4ba33a50242e102c6720b1c675ca4dd1c70ec571d76eee34f6c8e90a1ab7b46c051f7bd92f1520de6e078ac2f8a2f45779a943e434f1d382ba6b06ff80fa0c9313790c053df0a6bedf1f9f122a77207f376e63eb0456eaf4e4c49852a0f587c5859e4e998a2ba73ec414241f5ceb7cd2c1100ecd69b1fc9867bb3932d65c2cd83d9377040afd13f172d6c1dd27f5c4c915163c69dfa282d22b62d49b8cde0e7b3a0ce41e39e0b8a52ed6201743dab736950c7931540dab34d8b49cf5d6c9216d0a050d32b0b891f20e9654ab675086a7fe00c1a748b5460ca4130cae34e418db12183c6785e3b0be2d8186c7c10a907f9fe51625df58f79638caa8bacdfa34cb6aa3a3fd6e5549f0543c3965affdf0e86f524eecee15e5fb00766f83b3b33712863e818336fcc5a829b16f15be0f245fef4cbfc15aaf437937e6b37b02c670c6ad2b7f11c04e1c733fe0d44af3721e44c65c456e64095494a216ee9d8593aaa4799412bc0e1863f8f37d6b0b4d5c5ab8829df03d45c3133bfc1f7259f37433e950dc8beb275015b6b54bf56c1ce1fa6a4a11e8a8419528f60cc26ff211560363c49b48f0b960bda54a8bd0a36f43d411aeb52f9f1498f8689088992a9ec985d09194edada9b5aa4f531616bb163a5056ebb5717d2581907752266b7b2212200bb2ea63cf6a414a2da5a60ebaf2934f4532be1c65dbedb1365bcdada7adaa7bbbd6ea35347f41008a36ee8afcdffafc4812fac5a37f1a9a2fc0279546a92b115f5c348d2b14acddd9517fdee5d2a34796d92eb7d792eb5a70850070eb8294194026db0e61c608fbb0857c840df3998a212b68bddbedbcfaf2b55862bd287e3056146b49b427216685c4033b4363668242a68a73503f6c5f59ae7d06fd13794cbb2688e156cdf5b72d3c2c4db3bd88d4a36ddfd9c71b21c745a4141c694a4ecf81d6e22dddc98c36b5bc08adcd938410de610e38ad89c79cd3e4428e1c810add8bb56a09402ea16316c2db6822045a3322bee1b78bc3a188234e6f30492553599503716f96946e57fbc1596023116d97a7f7697cd08be9cb197077ddb86a9fa978d449b70821df4a1b8ccfe6f617c9bdb401fb35737660c50f24e8ae42a323e933a2078ad867bea5ee18aae105ddd4c95135c52527e3da03d2f85b81f2a55da4611218fbc1ea9016138fe376ce9cc6c1740e0318112deba64a94be62e62256933b6feaa28ec7571400de6e7eea200ef0b64984814ff0aa6f4c32f5ca5d2c354299ea57c38609f9958cf6b9be67b1542b0c5e86cb6888307ad850baa75344e7a742dd900d04a71a72bfb4fb7d7ad239669960897f18c46fb971309149b7d0aad06779eaee8ae4a17cc3dae1a47ff6c60955a61e0cab6f717d8d6be9d4ce191177825a63599eda3fc2a5182412b3f8f570daa864657f2ee350d2372ba041fc34ad4902593f01a7563c872f10bd7dff7a058e37bdd559d8193d32d70816d37dfe89a13299d20451e06e3dd20599e235bbada73139f2b577279bda5510809086e920af19488a4a99ab217b0e28ebd2fda10c04bf9f7798d42dad0b294d93b83e6966881bbd1361341791f813010dff3e48df90bbbf750509c9d11c5f51724643f86dee6f189cad9debe181e4c4bc637db084a756097bb94275d5a6e25c882ad8d0af809369e2629c34b981825bfb1e7959f6b370392b4caecfc6522008c25cfc6e0a357b4fcb7d1199a7e347d58403ac24228dea4f71c4fd10f9bff11fcca6890e7c8a0ff4d8d832d17b5c6feb517a9899660781696ad2d4a8e7da2d2bd0cc4269e0f808e0fdef61e3488701661c95ce99084f2c9fff2a8aa640abdba4ef321b10f4df45e749c75eb624dc1043c979d811a50ac57a90575308f7624c757377555c6f5eca4bae8fa20a6b5fddcf54b1d369036a2a0e507aec7bf80a69aa7ed93470494b2b0706b621418223568c032d648abda0e9615c23b4895454e2ecc47fb4d3041b906a0355485eb8cf8ec65b7b7e0dbb0c46128bf230a732c0ebd9f13bc1314e24f80cc83f5ab9478de39e47c9f824446301131a9febdb50fe0879dbda592fb60616e652b0b6e80af6285a8ed3770beb7d857384bacd2b78fcbf989809d2400d8b54fec1b571c2d4a6427d90ad1eb44d5908b57062336a5365df6793c3623d04bb54e518b678ef1f34e8cff910d4220ff2abd0b84e135397d0fc895fbc5da61be8dc89009328f293e4c50abcee41a9854972827a36260bc2c9609c7a72cdbab3ba1e61ca3e28531beecb46aa01b6c2bdab1f29944cd5191a038a0c464d00d24d2602b44bf2bb7dc496ff201a5aa5ae9b41b27be5f5aca1cc86150812f2756feff8ef075d329202be4c8b6a6e81b0b609c60f0577f0a2a7d35232b210c4faaaaf64aab9d24d83a44dfe9d4cd6162a54b8e399d360bc8ca07231c0c4c28de01674977b8104c2cc77457408f4f63f73ffbbc7f9abfaa8f22235af176d70d904e82650feb2de047905a469183f0f5075d671117ff0db0bd4fe834a04a6e3a1dfd196ed32133a8fca8a1fd535093fecd4fb1d71fd7c41dbc501b22b9f03dee69ddbd47140a59895cf88b9bdbdbc1d798e891ec5078e89a43bfbe29ffa077a964ac4907d758823d5eefb80e37310bbc559e0bbaa7e4989bba35e046540b0f472ff0c59f6bce2e0f66b58e0c42d5f2f10dbc736f8970e133d0ed99673e599c250b7208214ba80715f1cbe63e52a7a73f72182b50bff601cadbdc990278771ba1dadd25483f0c98c1a8ee08e2b44c3d74ce641592c947833fd9e9b8497462eca4c4e0bba7c6ad26df7d8363ea548a474bece9efdbec34641ec8e7d4f50a73bebe49e3267bea10bff4ff43e2a147d379e01be41dc2a8ad4ba3d74a21e19619eb3f9caa637e920895ed41ee8b0fbd8c6fe912cac9ec9e2bff3ce4b6a4ee7ac0fb2e96a744b9469c5fe2b0fef5c2c9bdab1386591cabb470b8500fdd36ac42e9d53997e942c815fe737e8506cff24a26a0dbd078c0e997e1d93abe8dbb2fb376f015f8df869df1d5f65474016bd752950a89815eff662a3fc4a5012a3d051b2c65a96cd4ffbbdf24ebf135b46a936589821cc69db609a765e92a75e139dfe14186ac8525e4d1968c568262ea8409b8980384eb49f2fae105c775332200cf0b339bcbc9b983bd7a720f782565bdc238b1aef62864200d2577a37caf414d2d111174ca9e6aa694672b2a10ec909697b94a32860cd98300cbdbca5c11e09802bf94d9b47e59f4864d057fc830522808385e91aab5b4fa875a5de0f470c65ee3f13e3df8a543ae0662b88157e7a1bc7fe71e74e5d0784a3c626cbd82636529e83b575ca3e2d26a46b75ad728bd4756ba894560265009145cb53b344a76d2ee8d5aa13c69be7b029814405b767cc5f3d8ffbca442f6073c09d1399b11d632d8a4b2e51f06817f4f1187293c56c1b76d7e07372ee4ae454574c127d49015fba5e5243e899606f2e8ef6a2b057479fb287eac6850e61ca6e56a026b74844ed57811bf99e4da9a51de86160c8ed37e4d4376ca3cc59ce4a3cf3295a1daf5b8b3279d21e22aa8cabf332195ba0b18bcc870bd65fb05e74543479b129b244ed9a65ddd260ce598204d0c11168f6033278281a32e07f72ebb1885402eb556a1624e6bf342487d3ccf9505be7bdeb493fba3c7dfafeb095f56dd1ca05424b199217541176c92c2e68481e2c5f233e445dcf070060fbef97caf42b055424ac04a27b592c799aa9fdcde45c4d85c8a393a3927d05fe213f85f59e5031acb0638a9e116ebb996f1e53cd84a6e4f0bd8d427e4e969fa8f0da1c227f601c3b0b98b7a76a3ba62e7bc492f9618cc2c2268c4127f891dc6e3ae90c96c7d377343651a4ea83b2726a464b2b8a4b2d447f22cb36b00cc10b66bb6513484abb73f3f88f1907a13be87e583cb497191558dc4f8ddc64c5edb04abebb61588cff5f299a389ef7b24a0f200898fd2e7600fbb382dfea2de44712db76e5c946808b9d3e6caff2d964ba4b77778af33208e8fe70fb1e53ee262423bff1e194048ef2bc8c3c3fa7629d14c9fe1abb39428b9df14ecad9f465cdcb73383150552afd84eb486f997f04860a718b4a6c9c7164f924cada028f7af2cd15a996060f46fd11ec6386d31f7539200a57287e3ba79fad9781db19c854117a5f56625787e71c760538bedcaec1927865a04fade0bba65b25caef99e8e7c2e05ab2b27f899eeb3ac4438a60b1659fc45d48687250710e48c2f95ef008e396fcb26bf9f7d9f104c118a84bfb7e21b674bc4e651e2dc6d6aa60d7674fc1cf77bd8a13d443ecd18528200e90a03438970e9f5edb776cd6ccbae21debbb04b2e31089db4a86fe117b8e5e5bbce93bf8f8dc895a7c4fc88aa8b0f6163f684f77b8053b2ff80e4f71ca45504429b55a20408f9e74ebc8e8a4949d1214ed2afcfacf671069a80af4f9a329cf1d00e38a672ec4de41c6ec21475655eed8c43a0f9308201c6e5d17b07f39ee98a0c0f2976e043531f5c8670d651fbae7a07b189a5b8fdc87ad8ced90afd428200e8ebef868c421c0c8f1916550224201a1c666c4b8dfdd037a952461948445a38ba26f7a203decaf20e60814e9c8411fee15c846f52727de10dc5e82977f002963b0b5a8dd509c191f834c2723e11dab8b66f246cefbe7fdf47ba15ce48cad342abc6a444196e256971015b41c312c6c2b3d9738521910954f48ca6034d107cfce446c5d7049af5f16aca1787b14d987ee423ae6cbdf5753aaf6e501f28374867a8ef92c87415ac5a60afcf39894faf5fe02ba87ea266e2dbe35b69ddebf27516166f8046adcb3f91fe6ae018376bacc285054e279b639662b9aa68f11e57a698ff888b608cd670dc76882eb53669ca94745e1c2b71489f0f07b1ade47a9c230e0f8cad195a9312aedee9b3df8872608a2c7114fbf5486eb7ddb1d2f278b113e3d4345faf42e0b110e832ccbbca70cdae824f10987d0a1858f3759047548c2c39ae98044378f08fd3a293c89e33181a15dfeb5bec4f29f203e4be225f87a70b6e8462bc980d05bb8d046165d61554e725aa11c6e8dd2e95824a85cdba5f0f329409989399e5afa5db5d6edd330d36ed03945cbd548d544da2f607f16d0edd7d7beca4ab76860e20442de4ff493686cab15479836f28b110c076024b23251a586922c5283ea5aac9750564028ee9f7bf1eac7b50d0f4fd63ca90330b46611d9105303586a05eeebd067795da5f49b44410b1691c5ef3f459b5fe5ed3ef403b66d6c9c38593d031139df8df914adc254ac1c1c04e03d6c80f9af9c9f173f5cbf2fdc5dc000365969fc22bf22e15a1a63bdf5f7989bacf60f8d9cccafa033b8cbae9744d1dc7654ea988afbd8b7eaa781f9f1574ed844a310c3f0d737f87eea6422099c50c29b6a058cdd8bef7bcad4093c37b06901145f3fb046a74ec8ac9592c414a383b9cd0126c328f2c530c98bf9cb6a308280a57e31a5e40d8959a3256a800156a4b8414c3400463e52e919aacd383e2cee0f063b92e0304b6325a0bbc6374c39e428dac2fc7bfa0dd47b072a3f39fcddcb0a4c47609acdaa844456a7380a54c4c8d1921e4f715b607e4bf223425d958b390e8aa8b2f7afeead544265120cf3668ded26caab6a2aa6551d3c80731b3f7a7f2919c9ae1fa4370529d2666ba1df96a6a03cb8e928379edb9ae8d382dc57168d2a8f09d8b023e02be92b476001c0f216763f8f281bce186024e75ece4994626d6e8e29cec57198187c297c037494c1f8c63beff00ca8003f4df7608091ad8337d47f9abd93faf84d0fad384e7b93550f3ecb2caf430e38295223f347e2c0edb32603cb9344ac56c939b966ff5e07eb9ac1ef54186ca325174c9c413d479a5605f2b06e87284a1bbb5a70b80e4cc6291189d537178b9fe82f79ca5db1959e7c3848c7930bc0b3e92f01241644f46075bc0eb6b031343a04612928bc7672f7ec815b5e7a71650a16b867bf9c84df6cec51c63e0ad9c7a52fb49314d15f51f680315a70c216cd6f2cc27a172250783a3667942bad4e638d8da9be591ce1876ef353f58e0363897faa47df94f0a60481e9b7071076df3af76262ef161b51b1b79a45a12ef7ebc15f62af9658eb0935ffb717a6b1025432d049026f4ab7b7d0a24d022ea66e1014526b73e531f3d58c07905f80132b95545e4ad2db5a95c975cdf8ff6f7bd163f985b4f01ad3044d1dad17b956f349f344a27e8373f0d8a5776c2e3e8acdf7f2143933f5711d0b3c95b6109f31a7b00d9722ccf8926e91bcf48ba646a2f65f7d5753ba4c84c6f07118b5a30cc1e0cccdea9b0ccb1490cfea84b30ef0fee93ec89de141e65f42670a6ee58b75feca10ea8ad7d2dd28e057f407781e7ce2a2afbdcdb73d38fcbfd98252d79e87731f0a0b17c6b872c5ed23156ce188bc69593722cc0bf734e73bd398d1edba6df8daed86b64b42e03209f9bc8f9a83530c9a6ede6ae0b47309daefbbc3fdeda29f4d246a20cf2e7eacf419d27857826a1d304d5e122a64fae8dea79280d0c1a8dc055f3bc09916a9759839ca6751dace66bccce6f2a3def711943adc3d03529ae07750408c08a995ab9b104377416c0ac46ce6101309ba4332287e2ac915c44848ffde2fcc6684676e5f213003ef862ebe9a247ce01f5db0154fb6a5f23a6764054f2cfa38d1a983f58bac98a746634d12fd6a71feeedce42ea8dc1b3e0e4d5796cc68a2e73d28d8b464e9ba0d875c41406a887a9e1dbee43deb106b8b25429c3bf42b6178e2089950afc1c2245fe9d9625a8f296bcafe3c40e0334e764ab66591e5afd46a4f49ab0862ba112815311da81eeb2447362a0c8f76b33e3b69abfa2403662d4378904b49651216b27e87a04dea7d740b0800821aa846148c75bac5408ac79bb8cef32715e8b7abe237ea5b1e2849b1196b37f2e9f775eb642f3f83bcdaadaae94aae0261d3deb5d98ec32c5c4f0d9fb5a675dba481d6016f0a762f188db601bd618aceb63d6b5ff586aedc25cc2a49be970336e792bbdda306a0190aa2af1b630fbf45f506b485c0b9362cf67d0cd5038281a25f515eb420460fb23f0f5f17da6a05b39b68e934fbda4bb7f6b4c7cbc0f22e62f1d991fbd452d3a71f8eb60f4db9ec3c3ab313d6dae8d94ac99d1f7746001ffa3b6df1aaf45893665c85df46735bbf147b1cd1f469790b691cf0266c8337fd05340ba1214ed9795266616dcf6b18dcd3f2ab4216ea0a4e9d8a3b27309fcf88aab9c9ce67276db942c4a1ecaff0c8e0d05d8cadde821f92e3865541ce0d5d9adcd7fc337ac63a39b2b330db5134e01ce29df26fd46d6419e890424df9878ea64e2d9b68dd55ea7cba7b8717dc72a234ae76b12e986e80686bddb600d3922fa0039851af17208de04859893a3b4029c5091b1741d2864cd68487a805ce2c9cad4e3664833c6a475af12fe8b5bcf0c0e81bb49f7a2797e729cc7deec16be8c6d8d65f1e289ebfa1bec433410495b5ed9d0c36bb7abd327c71c0f798926cd95be211c0013c16735bb5d7a90c35dd22e739461a9a20eb7aeb8617d65eefdd3de9a4800756ee62660407f23e0858f1eff090506689138546a58a0d4c447ea0dee6abb751fd7034919e64fe9ba1a449e1a3b82d018be10c170ca3047af76e5a9516b316bd06c3470cf64fb0e3556ee4dcec2fabf6d78f5ffd7900e9b030fd2ad25d1ef46452b6dcb4b70fe01818a3b04c6d1bbaacc595f7cac490469c1e2628400c703e1d458f1ae7579550dd310e36ed801f534d50851feab12b700779baf48de6a8d0f04bfb7da944d9fe8186ef17c4980f1c29e51c317b89a55dd7050140a432a9637e872ae07bf4f266f1dbbd4d39272e02fc1306881eb4f918d28f9c8551058bfb7c9fdf91a99559315f480f09ae85717211826ae2b98b9b32dfbd34dd4efcbd33387996c87b08f1f5b1927311e02d9771ef9622a501cbc50711e10c359d87b3d240cafe9c0c7af3e82eb5f6a1cc92c4194e3e55e92f25b36842a6b3d6128ab76c73f6f4ebce3497f36ebf95a561835b38b2ad56f22ee9bce414a7eaf4f071bf5d45976046b0d5e9016df7214563fca9f4d644651b83a84028397d8c2b70e2c671d8b2dd1df2963c53f0800467c93044a5c2917f59e77439b7d2ee1a20a8846793a9b87d9532b750a5dc6dffb4874ee0768d712430be187cddc23d6dcd0491b68fbb9f147fc8f8404601d37629a7b73b0cb92d34949f471651f3bf520aa4ea3a26ba4091de2c53df2e3f9e1faafe7198ebfc196f3cb717abe219601ef696e6f0504ded5a741f0a54f065c135181b0facf1bfd5e5d7c8fbdae323fdc32bfaf90f01e51be29b3b098a4347e6181a8f3d7b21ba2b79d16ca19c6c497fda6774d9e987e854cf4ea28ba734ad1a5bdaae105d2caa261583f0eb67f71fc1dd0e2d599bc1a393e63bd2763ea81d1368a5403f20ab722412c7aa13b7042292d917096c937b7226cc518ca6849a4ef00accf1b438d9f138e0fd1a44e60a6d662bfa0d6f2f6ffb3cf3b2aadecdfc7882c0bb78645a4f0ef80a3afdab08a4e477dd17f34e53225dda0b737def823bbfca7c2fb75bad0f025abfd58dcf8890159222ba8c82b8429748087885766cf36d30144a70f54ddc62e2615700b2ef35455fca734584167b89ef53c946af3fb331a4db89a926280163ad7cffa796a754493b647912fb1cc3422c1df05aaff5b08ef8738ced5aaeb39c31ee3e6bd6778fd40c51ae7f955bf83b450ae01b933ed7031c7da6efaf3c842fe1a6b9459258131178d512ab39ba21d08e7b772581991c8b2fb887022c57bde67d4669603f752079f06456c76a43b85e33af04ed2a09798a08133b26d2d685fd84d7973ce9a8ec646b2db537fa30d4e705ccb73767844ce394a3145fadc87992d5b778c57745b754717a7108f3936365ba3563b7076fea427a0fec4099f1e46d1c7f77ba17acbe2ff31b52e14999b5e303e7615748781ba27d4d17cbeed60f0cf54cc1bdfb0642f092d5ed7945820a352fb10a107ea67ef46d436e84b5252b395b809a1f7e647b7fc9f579a40edf437ea4dd5c70f24da26ca92b34ab49f896bd4e7d3e0e47a56bac671ef6f984caa6469c3d28c781dde97ab58eae218e1d3e2cd7e9bf88f2117995ec6d02c695f5e1bab0e74d4161c7cb6206101ce2abe6f63e1c7b01d87933758e3f951a3d42184ce65741529643b88bf36995311744f649419742f890fe273d0b35595bdcc01996b155435fb9b5bb16a8dc7834e6e83b91c84770db13535944f7e3a119b74841b2bf8414fbe686baa8eacfa074fe07cd41cc91e4facd7fa75f5ba78126991d614a7db507a2a88a3720b4fd5f378b8f5882c503eb8a5aba02e608dfa6d94a0be738b7ee5c6523f16f02f3d0fe5459a21bf71fd6af66a7963938502515ffc61b26e51293c80e99bb9d4e53c56d86bde90304de3aadddca65755b48034d0a330ef62d38073c1b2c7c42e346d82c491e5cb768cb41db19ba0d522432fb2b90e2a4c5750bf20aa3ec483a38cb6933c62905ed9d0e9939351c43f551d51ce45e6eebb7924969a8e31a6ae216c7e4df6fecac3b7aa46e354a35e47e7f91e6564ec9b8fded054503ca51db9015254e1046195a09c5df80a479ce3912ed465915dc7c4d4723e6caf8125db5265a795db49e992e27c90e3c94e36a1e3011080de5b9f5345ccf64c7fb7462c1544e3a3056223b2947dc6ffea0f487bc634f850bb8f2346834b7f1f0c26af4564d78f90eff94229d750a38a42e0f83a5c0a78533a16323310fe49dee7ef00a4a5366fd9a9800a5867138a54308fa0356c8ea2c699fe4d243f0cbceab16652a86872bcdafa866cd1912f76f0c235cb152afcb9724fceb2a313afbb4add155021b331718791f9be9a8fbdbc6b8d34ef2e425b3fa0286f088e4030ed340cc223b1f470b9e207816bc4834c96e77aabf2819cad2fb4db423d9e11ab7f8c5c6bbb15cd676edaaaaeb16914274f78269924f1a56eecf52652f90fc3f72fceb0e519de0b607183660d222b62932cf6ab0575a22494287d864721e1c36e43f5d8a46f58291e32f326e18658f3df3fb5292a0145cc4e1c2c52e0f6beb721ceb3ffa4af1230295c0d135842c7ee2d62143a1d1514e0a62383dd7e7eebac755bd267b7085ac8d3c86ccd6812f4b797d9de684f8783504c1f05743364e0afd887a54ccae49146251a8e73633276da4beeaea238db66a3f3ed75a5ff868662fa0e459032a184cff648cc45201d0e3807ee28c85e955e20f83cec847d66cab6dba51ad6ceb6e70c43b8d47ef3d80ea71cdf98b8fe4136b3bc09a04f14d6916dde3d1d1976ab7cf217bbd95337a11c2a06ab725047f27d32bd616c972a9953259253d6d92cf399e4fca4dd9994ce87855b3baa2f1f1528ca6242abf44663a63ef7b2161af49b0809be3166f68c441880d0c95d0c36e83e3d52c29c6e7b6168b132ddcca6eb1cb80305c65e8670107e74ba004da9cbbc12cf130b852653ce98d168c5ef860076cdb3202ba1b09bb7efc7d331959bbb5b7aa249988235434869b0c8d901acf3801750398598b37f3f2828e7b0aeb552e12e7d7c825b588b95514e4b29e861f63669335847209ac77478e6f7ffb115d27579e8bda4aef1b94c59589a47cb2d9e42b3ded7451259090296c1d7b5f05511228afd82b37e1cf9a4d898c29483acee09af64d467f4c9638f1a586b110f3bd4a2c73721e29f5f460b827631829cc4c40312281322040e6f69c43ec7ea21eb69633f08bf3a425f0dd3dcf3869735b35b71df5e5eae4585891c7339a68c51f0e7b4b8ff7878f5f0e50cbd995c7ed7ff0e11035427e1720a9f7a9b60d6b73ccf0e6c4b232d29fb8c9e8e23927aa2b9c79a4c71725506ea08f732a529bcd65537661a552d2ce3b9efdb6618cbb5dfcc8a2a226feee5ec1b9c0621068af1a203ae777a7143d77b4a7d6a3ee91d2b54672c6b58ebd5ce1af56dbe0334c0bcb3a916a7b5852485c8cab4cf53bf6212bf1efcefbdf31048e5d4c70f1ea3ba0add2f0a965f40372a99b558abbb1f9a0bceec4bc78628eaad5cc05ad8356b6ae884b3ce4ea205c526660411219f4f83cd78448bc8a19b7343fe3991034de0041bf7eb3c38f938c18e3e476e2d9fd1e65518c926e24c3f9393a568d832d46d098daa2e198c73fd85afb243da9680654b346a77ce7a6f8bfbf5176c97088db938af938485177595a42cec5cfa5a911944cbeb717fec92f340ba289072b572592460d17b9d1a44594615f62d3cf9c2a016d171c47c369c57fceabe671524f6dcf3053145910fb15587d04c5026bc01f6ef81fc1620a1b11b5e2dbe98c1d4216e0d0f4baa87434ec49178c30f52f39d31bdc42e23b9b6161801adde909f286f23ced53dc7e52688c81919420ebd11010da0246539cd30d49d07a1de8ac225ab2b277dbb7635e35088a3f27b47eb431b10d04f855ba69ed6b29b35d8c6112de4918cdbff40155f3fafe88e9022f57aa3cac380c8b1ae07dd4b9e769d923a124005afb3850859e80e7f41a449030481ad885a1db96ae3228887b690aa16f32cab03669a7fd635bb6e96f857bdc36ff0108bb301022aea26742217144a41308cc9cf5d407d7dc1fe4a6f5cc51588e0ec4fbd920335714e8da03a6d078966a77e94b23857bc49947a8b34bc6b5953c7fe01afccfd3fad276447301ba6584bd3cb8efcfcf798118515f17952246fc48abac1316283556ffae5496537c3cf2db395de4163de7e8b7b75610535b344bd778b1392d34f8881b29e6e60fdf6358cf59e30d4eac430cdeed151a927d4d2d24ecfaa1d4e0e2e8a0eea94749ace17dc8564969894f37bf2e548ddb180e14896a6a40e3c6133ef7ddf5afc5d1db58483849f0057537d4eb7b524d6809b6381e7118c7ecda62a5b118fa25a80fcab8ea4d1e8ad9044f3090c626fa56b30a00c4bb8241a823f317ec64bb546bce006ada80584ccf2bd992f251059614dcd3bfacaf51f3c52af238fb8e26eceb15afa65a44b28d0b1c326f12044214dbe379cdf8fc6a57ddac9592b7c902a3564a2229200f08a861254a829545dafd7ca7079b156e700675f0722be0bdec5139b6511a460cc25d85ebe27eb5e2c0a114128bebeff31b6093d082ec9abb37074f7fe079163f8ac36ab85a3fd15a28dc6949417194e94f2e2efa88ddefd76f8663004e67a813070be39bb2aaab39386eb1ff72ec565bc66a62a0af8b817346bb01a521943055db85d19ae8902a6bc385c9647b3327502ecd9354b1fff0ee9f10d894448c971b096d1284645df166f7b4b100960d9451eb9460c55f992236950e56130fede5767c529f9264f80897483f260b86b73d94a47246f913443a4e8ff0ee8bd6e178273ff009eb2b4fabaf639a01481370d599f2198ce37cade4be807a3a03f2334f4fb838ad217b0c0df0cdacdae66ce649a5fb67cbe2e2dbc23c212d2e2f4a4dd729d00b56440844c96691c80593dc9be9c4aab94d020ffb04cac5883585af907cbf6e0480a5544f29116fbd7ecf1d7ece51c006d8790412a5b69d5fdeb9507bf86c4339f7f50e11fc2932e889831597b5264f528587e040acd1bc636515ef91d136a75b744b9038116fff2dcbea228d12f8f112088ea82322790c5437aac852624d986680c00e4834b7017797cea2b964c491abb208ab319925dee7fc12cba8bf69cdf38d1a201f7ecf78c6d7161b1b71cfc6a32c3c69fa176eb73de8151913ae91e366724ee5c2fad6ebc0d5090196a41be9ebb68a8f8687529b61e4bcbe27f058031d508f423d35256894e0c8b90f411363c5240ecee8a5f39ad930da34c2d1e318fc1c08bf55f734386d8ae6a4d37215cd7e23dbd223cff2eac80820323b10169fded69e0cf0b33e116a0b55da2aab5c6339ee81553cb658a3f0eb50524eb8ca86d23d34d7066cefe070f2ba786b3acdb94b72c6fd96414f1685755d81d5f451a2109968c531a0bac0d8372f032d4723c61444b1755ceb71b2e5439494fcc9a1879f63af026f43aaa91bf0d20b4e7c9ada323cf20254b3a86af07d52549f6458fa53dc83199f8b3f4191e7a89e3dd4c9f6b4fa12664244fa4bb77acea5fd3076141db8acf2b76713462154607441ae8ee12106fda5c4ed31ade57881b4338166287a5a3e96ebb1cf5c3d70242e2ff07478f08e0c85b18b2268638ff60a8ce759512f43bd1cda5ae1134c863e803b028e2adfefd15a4430e102ed61336d9e0e4a60721675bd28e4a478e583d9f8b47a6a39d40c054b7be6d4c3e14fe31460131bfbd3a30ca9559acdb2c21fad4dae1ac5b40790463732c75a71cb2a40b276c865d7c086e998d96e6d4587fdc7322956652f9614fd7bfdc231d1c1a325476e466a34acce67b169038c2e52fe01dbdfb2b70978a61f2d821a3f5ee29959c70d55732719b9274af50e1fa510075678d6b7c340f2ea73a1559b631ad89ff0621fb96f36e0bd7c66b32fbb86068a9e348efb7b175145a71de0321eb82373d7c8513a1760719a49b4734dc64d6c9a2444c2041eeb0d7d7459408d0120151aa4ec1c675a7befe5af4603669344db7e36ac6d53f9a0135612d5dce82c31e664e4c3888a26fa11f64b3241f4ecb5974f714b417dbe76d574781eb13298148790f95d3786b721fde02866127726383e534e3eefd28f208028653e76865a0369b79e66c1c71ed32f05d642a58a0044713bceba2e2489edf28287418973cb6b32b57a3c2280d22763e064bbfd76b81d6c852120eb0111d087c78bd62f19db64689c19d8aa6bf91678a7eb388047006bdd04bcf7bafd229154dfe9bb9d1574679ef9eb9ed1537368c8a0035a8b6366f8fd673340c4761cb3bb1e7446cf07ca8bc15f094e5921c448a5c5446d2537ccbf1fce7aad84910dc68c51f9f72199452b1f537232be60136b63cd220e1a4fca92a3a6a2eb71617dcac6d9e9ff38dc4a0887e63a15f2094ed43ab52120fc1f1e0010085f8daad2280c626caa1fc16e5e000226c1fdd7050ccf57d557b425e24f761e86ab9666281cdb1e02222b5513d0637bdf64fb2ef96793987f534a5a69bc8bd2790a595487652ca1411c743ca178b2bcceda8c6641753adb9c2541a701bb889c331616911e5844793185661eadf48c7102885d4f8e5840b50f2fd09e73d23d32761da173590c3227cb5b3d04a113d63bf238fc08a76e74df9655d96da92db5fab77bf71f81db4a1c2a1525abe00a58be470ad1fde076d3f6b1d615f0b52f90726a6356c53a156b12dbecdb95ae4a08312a05322d3e8222e21eb5c298e231291b8231575fd099256ff0fccefbbade231e1a80c53b094159974ccc93ac15c50792277662ea94ec4567c67f0802602f2b7bce4238b0e0d1808c267f2d830df8c3767803d544b225531b616e70d8a1ca0ca0de231c56344a71a8e0c4f3e8023af901d3a2f65b12e3be7ad1dfa20e24d2e8d24e0cadaeefbe59055707984c95360b6bc003be6f248011ea261c233c7a6df0a770db9a0bc0e0447f26ebd5716df8c8f9c6fa3fd927a1a209a69e2e03742047255467c11890e0d15dc01fe20b2c639684cc444083b6abc2d30d459cb91b801e8777f10240852fc15a09a58b661df879ec0670fc9a6419538b88c7269be35d380794a3fad3ccc082fc5328cc91152a46d4817ecf7a418984176716010a5fa18396d1eee61d2c1413a976baecfe90d8784c2f2f69e4c5ab884ebf38e60af827b5e7f1616e3a46add4e8160179aec31dbb74ca86b7c8792152016327c4a1caaffccd064c3f2ecea81046b1902dd2debb8f7f86a883f45beccc1388df2c95d2c543a4b042998fe6cea68ac0abda240b5a1a38936967e97eb09d1740f622c87de19d56fba155242502bb6f05916d5845b887b641d4f4cbfbb46299ee4b251538c482892320372e20e2f9ef1d96884098d2423589a9fede9fd51968504c134ddf4ab562e2c78713b700100285d7e4ef9cb25054ec13ea9ea08a27db6690e52ded477bbb0d430ee0f31d8cd2597cd961e7c5db87a58b68222d4397fc18aca7a6906d3c80c12c8ae0055fa8b6608c1a43e73488e4364b91389830d39201041730b8c3b3d116767d1adc80f3e47ccf93e9eae9c68c7d6a7e992019180c91f50f696224d0a99d17af564abeafa142d26bf185013906a6b48fe72eca036124577ccc24aa548443dad5eef02902ff3a38d299c45b51b981b7eee99e80bad62bfb04cc5a0370d241982e17b1a4a7aec737422c9725347637f8702123edb86dd0c0496489ff547f1a894873c4fdbb8636c4b1558ddfbb33dcf849d80ec5b9c5db46334347fd1b6737a97f2f7cfeca3180cdd58dd2c84338f4bd47caadd7329f081164629db81fb8f61e86d9e407f6404445ef6ba0a582d05434df6e23edb0e6c0b8b03baa07147376d7b1aa857303944b3275556b54f76118cbbf3f2d2dba8307865ed0df4efa7a5e2edea4ccdfc2e935400902425893b12deb43d5485b01bf58f3bf2063b8289033b4222b7e03a5304b10236c57232a7d9dcff25b8ac1cc496649b5287a1afb4912ea62c36b3fd0811be22cd5b798516268ce5c8fd3b5f5794b5983d92d651fb7ef4d22d1b06e78b49e3843664587c668338039bfb3712c7d1ae2c7a94652d380b1c137c7ecf476491c0ce04a2038344130d4771db55c8146e2215831f8f072e4d8fb0b798678e5263bd8f4ee37fb871b2e7045c2b179ba3e22c935add65a7f6bfcf69f2d18a36c0fec96962edf84711a9b558602642fa73582f896d82d82c6fcba79382e5b967596a582358ffe0cf59e727a46813574a2c9e4ae3d458e2b5c0d62bf4b2771ac4aa7a554e560103b683960d2803844d4344a918a546de674a216eb3bc4b872e253c29c70e9b040d5836e0f247fdffc0d7523b329103560464822202573f83cfd8d9e6c83f908935d2e9aa79b02509a7aad07190ccdefed23e0659364f1125671fdd9ec3c866a215c8f031ab5039f873c387b2e42daa1cf4dab7e5632456a0ff36353798988d7d2fe258904973d818e2de8e61ff3cf3f8617b5b5fdb6ecba5416a38892bcb7c42c293b3b925768c5ed2cfd9d3aa3d260b722712a7617faed2d15617df9d7abdd33a084e1938ecd641418a5ce6c26abaf1841b1b2dd273ba993bbfb02bb1dfb43a862e24a17ad6ac3aebd6378e9de0184cb285a265f2147bb31fc833431d5662b8b3c409ae85f664c640a1fd3ba7a9e01987c2b1de949029e231e74b334489d1893b7bb22e8e267ae99458442b7ce35848b35761d910c68ef134f12bd8f5c52d837a6d5f46104ccd2f04a0d79b6ea1081f422c2bf9069baf1253b7d493e4d9b2c268b20972963d5a3e8bef7ff2e3e61550cd3f360175ac716ff632ef481bed570aaab684178c616dd8ee220f7efb28fe59f237d6b219d9a9646e86a6fc08421d863ea9489713017f6017dd12354f9548fdd459d357aba3d51daa1264285dceed459b6111c784933b6564c8ee72251c2f066bb3dd6f88c9e6b73d4e620048e9006dc14093345fc3a8fdcb49668d2dd95afb70058d56b39f1290e567c4a8000123fc66b3b4a3642e3e3e547b19273a57f74c0fc234ebcc7e25c1d4c54be4ceb836e5225788cbb35440c93c84b57726c0a0fedde6b91e8fa68500be3b9eed8c37855c38bde46abef148670bb6efc71b05ae4d1a66e8aaada2a78c4a1a6716a5d2f935b3cfd4428fda38d703d6eac889310d7b430add6175fa8a5aece3278a0ebd4859d0f120bc2fa588d953d78778b7636b4a2fbf4e8e42b4f35302adf27cedf2cfa5e783ac8906b8dbae0c609ac295152c095f3a2dd606ba7bb876c952360b03c2a6107a27d985287b32b1e3d45cc00d943eac7ebe6a81134af284301a6fec4f0999be7765b4276e9e8f2c47c6d564376a7d93bfbe0af036dfd671117ecb5f2160c239221a837dbd178979ffb67f99b481f81f72b99844e52d04dd6fe2b860c9271c4708574d5fdf5f5cf3008a61255f9d68cfa39a818a23af749fdf3f50b74c042b936527ae3a399e733c3c5f80c1505b86cf871f87802ab84796a13596d85aed8e5e24c9283528ae1d8d29f978647a319fc64a9b14e67a0869c988e124679a714d0f88a6d1744b2524101c9fae8dffae1a0d7ecff1862e64f2deb40ffaa541b5d285bb9bac0bc8901a20663f37324db45aadb234283aeac3537980522a70b179c8aef6915d31f77ce031cef81c53f6cc76591a8a85037448c3192b9a49e2c827c5481a57d6bdf9b9e9ae9f08f0c280f758b9557b5ad767d2724969ae021e9072909c55e9cc282c18364551be1dbb596adbec695e4c3fde07d72cb09bf3ffe531da6c716b68c6bef58a1e8d98b5a0dc878ecfaeebc948e9fe773ce6f1657a080c30a242337c2646ce7fd03bc8d2bb1b78b3d6ec89b2bfbe4c20382b2bf0f15ae6ce6bcfd3ab83a30e81f4c4c6cd0b4dc493d100f346ebb3a2cb7038390ed8fbe45216bf07b4f7bf864c7b2d79e21c71e32b03d4e11249fe762a12a86044ecb69176ee871022281ac3d039a3f25955c1b369a9328c955df319d5df052a5fa49dc48bcacba5d7cbab4a12743f48dc41417e27963e1fcbf4f01174c57eaf9c14cbe0a926ec68cf4c3610a4fc37e2801e43408cd04e87afdd765c4c05ed9320412136ee5893ddec993e22c5ebfcd4dfa688eb08cec6d1ae0f268cfa7ce2d521678c988c6c2606f4a3846b691f853c47b32bbc27cf6d8c8eed032142dd772fc1cf52c4f3ea56d0cafe440d7b7c5f4d90a4931fda9f9187c2cb2bd2f1abe540aaf807c595bfc0d974e198fb19e978a90181d6478087ab33091b70e860bd0c395cd601539047ee6a3d7c423eb45ad7f6b2374aa91df53d74ac59cede84a5f85a90384a390f8a6f7a613738d9ff30c2baf34547bb8fef969f28673a360f5c26f4252a7f8857a232c3469e1b199d790b0a479eebea5d4d532c2eac4d9b0b279b356d1a5eba69e6806e7be088525ac8ffb7f60504282223742b87fabedca0b08b4b237a5e923a0534635e1a4c99e5f279a958c32a5da2c652c6dc275e13eef8c3581175961359d9ebff41b47cbaadbfe6dc8cef3903cce8c0966cdb37360618f58bc09724321ae6c84e5fa33099233dc097f4de1b3f606c22bf29dfff01ca1c4ce55403abe42514a0a4b393981df350f2c7b9ff7d58523826b3ee2bdc9a53fcb4bacb170798f5134d9d169dc8d43f78971f65c48533839b321dbe5af64de0df7760a7ef7d61089dbe233f05c4bea3ad36803a137a7583b8a642c2b090243208cbad1110d461cc21088259a9b8d96a97675628f2816597d803b587463b4af57b62f7b1e8978361cda3809346cce353bd5dd6a545c3bd941dcdf3aacb38802f9c7a9865d11a3674e2267a9a40ec4b5dceb90148b5b103e7010b52b41e71c65d79e16b2970095eaec1eeab250a767a112d6fb46771d6470484d575a67a10f56740e6ef4d15bf17af70b57e501a4a9ea8fceb26d8186d68acba546136c0ed9d5ba5fb2df052a4ad26b5befb823afe8da9534a6b20f977ea6cf93c381cbc8352e76648261ba73b1cc5e40ca32620990a39623237ab1bc26344dea60885441f39da9b30b822f47c85ca51b49a53326c571c7a43998fecf9c71a7d68e651eb2782cbbc553c237815831cf2992fe42332fea5b9500423e53df1156d349ce40f5feefbba18685f38e8f1f074ed3b3a19272c8f62f60433946c7d688ae07256fdb097ba12b133436df59282835ea39f93d2c8ba9e72de22048039bcd207b31968109847b8de23b6784e58458df6f04d3a187e9d5b28e6a75bdbaef9550e6c1f20bc7d43e82c40f65662514a63f1ba80cc7a001fc401ceac8d4c7fad27c345ef23fa21d89b2f6b2ad0b0eaae7cca6ab475aa0e5aeaa32bc1012cb59554faba0c28aec6281c3b6e373470a7a19ec439fed4fd5913407cf271ac05dbe67776ee9947337967071a06de22dd2352c05468be1a9e40df15764b3e496806d41ed205eb0cdcab3c3752920770a8852c6387306f54ad29e136516b8611fe137c816d5b6cb3db5a553b66d2a87396891dc094a525c57cc378417c12621a4cfc30963479abbce4303238ab0136557891aeade3107320a9f374339dec04cfb468c40d640b931eb4d29b5ef83a643b2b7a22bf1d93de9a8bdcdd94740a67b0f183b5fc4e6269c4683d80b0899438819e8017ece38c03fb76600a840b585b28c0179826287ced7b5107b134108e73f8ebe15a3df53a37d0278020e3ec3a1cdb4a7a91f9a7efd78af24c63d5ffdc500e64894d65824e9be1774550e330de676ce1ac957975fa4f4b6c912ce72e54ade9b179795764dee31149294bf84c7b2311f17a1720f047ff255062e4c26c5e0849223a8015e0db804ac6b1a9cb687008e7855387f4633e82dfdea819d50300f50ea0b59690258ff3c89b3098cdc1b6d291b5df77f9e5a479cc25b6f3b4a8ee0a6095f206b10911f12192af7f668c3c8e94cb0e385e20c71522c9c40cb8d7aacfa612d2b5327b0dda2f50cef5acfe901d1d4eed00e8e309a7d6a8ba43c6abe6487252c9b696beb84cfaca661e68f2bb5fb91b9a45a86f9c7d8bf363b2c5f46c514924e47b9d884ed36836990db67dc10fa51d8de96119ff67115457f0ad9dbcc6e532230e88e7409cf34006f44ad091b1c768e0c6585711f6329ef5996e9df2bd1bd1c1bcc311f08f23196254d9ab09a0957019955c7e4276340903a69d85e7baf35892c438150c158e59c388fa15dc77b950dbc44928f03bb3add1a5f60d1387600ad67c47e5f8c39670e5f58bb2b9838a0d0f7fb27c0a17cf3322912b042abdbcf4fe5f9ecb6e359f3e375e581d2f40680c9e3e642426209b562a41f2dcc5f24cd391e21b6ecf9bed60ec81b423fb63e4f5511218f64b97237c3ebb422c12b5d6877c82d2cc42900e72fb0d088ff979c6c8c8b160c638a9010b0d8798b56201c100a6f4b982fadbffb49baf82c09d61a739ab2ee4b8db0b9a7f17b2c18de4196ed532709d623968e19e827a829d57053a5987e7eda19f86b3594f862d2e211709cf1f28ba7611a7ffecdd52a24dd3915bb6151071ea2793e11cdcb0239064643b5f618cbf16d305384e97da270ebba03412391b856bc80f49b3d14441752ceed408b00572f255e2cf8ac72fcba4fb969de4dfd5d4c97f64bfcc649945822348f6fd77a7b3746c37488247ff9a61b6f89f486d81119360b1dc56276414e98b3d03d65501a664d89b010ee4e3b920629aa69a47a87182988cc52b6fde6c160b06c2694164d06166dd5a3f3eb69bd4c530759aae4d51ff622d8121d68f4dc595e58820a1ee882227fb6a5e93b2697a4b66655a5222c7b9f075193905be4cfe31a96b6917850c8fd03874a782521de52473e5014af437429c083eee84b16571c21e8e413a2e37757d67016b577b51c6f301cc0edf5674abf687fb9c0e4bc7b6bd1448b681a7fa4b05d63594ca0d38c052a0df847665ec7aab473f7ed8625b5e5c482a2727fe7d8e22f8467b72b27b30d81c5397bc41a47452a8c7a5a6f55e73e2061628e6c74fc863fdb0f8834a914f27819f38c7dd05e7faaa724c27a6d08c7eecd16d37335f7c6e6d26b8d078a93a29250ee7fea7df0418f939efcbbcae33c27d9951d3ca9cd8609a8fefe5db02862c64e9d193b5ab1d09f86e37d6f1d6a21b072332090f03c15022d63b4bb4a9735126b1fb733e65a5683f29ab8977ba0061654d2e950b34dbf3baf54c09626838f68a6ceaffe4ef15f678801690f0d4a12aca6dc4d0608aa6feaef68e757cfb6adb93be3f68321673ef66957c3a603cd8ba9bc5fbe50e7bd73d41303bbbbf39d87c8b3b856a58cddcd66176f9707118f48163ac308063e2948af7d94c754893910728d0e6781512935825b1ef458868939029afca2b232a6d23a8eaee4f574a19cbd1ad83bf70b1014a0365108ed7e10b3981ed9ef5e8a3a494a4d7eca7227d0708a7f9d193bb01d6ea1708d259337059aadc21f6676b56cfdb5f222783ee66ca678f53f995c12a5c4c4c3448a3f922235ae1ce3b0e6c38109a95f60eab062a081d3085c1b978184922afd5b7f4e4a13a4081568ab8db2d3dd8d3049d593b253c5cb45082e59cdfb250bc19fef97e41af3895e214a4dd5daea0fc71a47aa9b84946ad3d943000e2eb1b5ab2d9b89e8a1e3b3ea4eb324e1aacd0a0b8d59864d4834e2448e9677ddf4b3094114a133ca221a8b76dbca8b8334a12ff22813d99b5f0cbacacd870fe9d63befd46bba75264524a8085a8550825a91fad74966b6e4ebfd21d16b1a3877810ee3809b3da1be834fc6205c6968ca89501d1259b824e548be5109bb10bb4b62112d95849e65f77e827a899d1f5a15ccfd5a4beaaf64199e37c56552b2de1b0b8dea1507c4485ff74a7343c83f4b5653f381cb35489d96dc61f377c1a78d9fd92f5620123e44700f5ec8f2ff26de349fb2f6272287f11b24e5979c8e16d8e136c908dee96fc0d00bb0990b33dad3c61d4aa5dfdbba9ffafcba235f7b8aef9507b66ba9d708fb344bbea43826393405a9ce028653d121e4ff9cf3b10a477c326cc28267fd3f56fc04c95f83ae55cd474d3b60a0a37e349be777ad695dfc1d548332f44c983ebc86add10a83ce297b76e9fc16c7cc699acc204514b3b00fb861999b91c001c3375789670d0aaa08b0233e6311eca38b492c9a9e0e3073242c540c83be29763ff7679ce1c40ab9fd520e6c64f3e44441db2d1c0df579345786efbdde269f0245b7effe9bbb98f1f2fdb50864ebbee8338a998547b9d8f095736a783c47dc22793d161350636f15e031d618bdcc04096ec29d19a70baeda42bc4c684200d52785c2cca8187a1ee448c7c1df6b3b70a69cced4147f4a6395c8fd5146de118dbb2c236891acab73f50a2693d420280857a1d170a01c6024aa4c45e1ff6ccdb5769766dc11ca1262cb55162c378cb77fbfdfb153f698d47cc8a1b948eb53a6f711114b26e299409745248c456c0a4d95468c2c5a8450660699fba201743e8400d8f180e8bd58497d7a0cefd2ca40885fe7a6eeee7bf3b8cf13e67b8013f0fdf9cae4ebb7043abc0a8c28aa4da1e2223c631257a444da4fa8650c59a1237748983f84b735d351dea224d61d82ee75a3e4dd110bdccf46e3f1c365f50e0c9bc883604fdff9833ffb43094de51aa600e017602d4d34f1d766a9983fe808c16c7cd218091f8634c754d81b416043b9fcee3a6ae5dd6465d4212765e44f6ef5b9fcd3689a3b7356a2e391868be74ab557d9a5e93fb4c8f07a9a734b20bf309f5cb44986e05e327400248ffc2a84691570e0d5677b4396a429ee3579505d06b4e644323c008ff43184aa864f136014f4b45899243b27887d1bb4b882fd8dd483a1287091cb02cf7163fc3e7e2be1b4eed191ba5a0b56f0c3560f15543273ff8e2e7b2571d825eeff857843e5077d1d64ffaaf9a1d726d510b70c75acd78d0c1ccd7aec8b9836984ed78fc879aa1f582e88c6782f053f174a4343b6b8974485bcada388c7b9792555d64941e4f4eb5c59e27848f83d32aaa7e394cbe6cd862e369e21acb9b89c4bc7297de6b14d494c6122580c37804a740ea5af5daa2fcd8174464c6e4d9fad437c0b700828760b29bd2b76dfd6e2d732cb72b4cc75ab2c1b7d7b8ae0a6a8f905345d411d46ab6050a94eaac40ff3df74bb256fbbe22d848c3ce55c0ea15185a8080c2025c23044af29081dedf2b866747ae5d4c8009ead49619a425c5b7a435df238c9736dd8a3fe1b979ebca1b577b69c004bfcff37c88a9d66679992ee2222e5fd99f177c410cd96f532177ce5e456d241490b581855b624b8cb03a8d3418b5b86a757debb2e8511cb064d8b57eb0f21bd85bda525b315db0fe13bc546882e01369fe106ae53db1526ae7b318e53bad5f6fbed632d0494b0a8091b8a38f2688c13a083a0e680818a2a60114237994fedb6f2a2236759bf0b13563291275ffcdbbad6aa06bdc5e02553c3b5580318e4d614e546b21f10870597369fb645d00d408c916c9bbfed7a47175456ae4266ad5374b9c52ef435e316c39acb69ebe8acd9999840b87006f963113704e6e62a2bc0d035e38a142c0153852283e34b40b41598e1ba31f6e0e973c6173e6bbbf1ad570916ec422209377a5172bd78e1f93a7eea54fc9d6aa87505c0071effbafb48e919cb074cad35b864f6f594e2b32b5b8e020730c2537aa729e186e595d5fb6a6b3f6baaebfbf62ced74b3e511aed53b584e328fddcad38d2f73d01dce37f46cc21459dd87648374d9f74abe6928e9c9503275a2c9c7637f09098b4be318ef5c1af91f6b2ff6b94520f3fbf8aba831489f3c4def806dec33e537fe96eea83127fdb8d394b512ba83a79986635281506a24d5d230c97b4b9a6b7924e591141e2846c84b2fc2e48240bfdae0b226fa7b5f3f7b85bd9c0a61802dddabb6e5c27467401fa3c9da0ed228dd2dda8ae9aef31c7e41bf254a302c38c41846ff64b57aa66bfa32edd2f921b8625e8e4976b1ab3f27436c7667b8db4ced98916ef5c690d11c3c01231765972adbdb7975ae93e0c5ce17635b36aca7087f4bf1016ddf2b9688e0746b0ad5894456a2771a5028cd23a8487bd3865782e371685731c9197bb73eb8b8b00f58954f532e180d96dc829f79bd2aa5ff8cf70dfcbdc7801d1f303fc3b8425069ab14952b5d6e28552372414187b68b3906c2e48279366f58d721793f81ab6ece0960d55fe4a2aa4ffdae58d6234920408766df7c14abb6c56a218023bfcd323025875c6b29122312249ea0f4d1d200e5755bff2157545e1ffcdf1c6262d1c210a60c63cc1d89230fae095acf309949de4b54eb13e4c6f330429f72937bf2204d81eb4dd88f18d59ec33669934396873096b33cbb88631d121aa3c44a574f1ba2375aaa7d317418b4402629a09082e6e7100b912fa0caeb80d10210da53d408fbcdb226aa012881ad0936cf13dcf0e29968969a2275026e0990f9dbd23d15b33fe080d77d32082cb2421f6e66b3c3089482879b360116ec52b78911647f8381611925ffe5ff2330afea2d0c45ddbdacdb5dc1aea90d4bd6797379d3b7c4924a0ef3346212d8c73bf2e60eaf5d3fbb15d982a2bf933ce264e18da5b5bea50343f9a962e32500e24843d58c12bc803fe4cdeabef683ef0a0d1f94e9b30fea35e7a580f1a96ff84186b3b047979de4708a8ef1e561f846b712ad4152249ee925dadfb569d833816dcc306c83a09e4da5ffa06adb650cfbda7c0ef6e6872035957fbb99efeec19a2999540a609821aedc6411c19d7b8f27055e02dae66584c0ac5fbdb49c0e3d22f3f7bb60c1a01f423e4523b0474c9a4545be49351ce3329cab854dddc6e90b9326370dc8c50db335c3d8d8cac4ec297f2c5986431459ae273e52d9bc77644aa79b3a9bceeadf8a83db558b48faea3d0660ff26b9f7db625a2e626ef6eb6114bfd97a1b340fc810632d950a880eaa62cc1f92fcc4171fa037de8d94b5603f44443a182566d2b474c703ae56594fd4da503f79b2d8926d92fb7df775302b2bf02f924db398478348068f35ff21d6797d153121fcadd73ce32911ff957add73a1cdf3be44681881b7421c08625b22316cf0a0c059f950126e8ba65bb633d3727b7cfe92331edb4de882f7e0ac3771a3a61243d2d328cd405bb80a3ebec114271a68f6ad5f520321163ff0f8cebe25ca7d5f1780b45e4ba8bd554ff213c8372fddc571a28d60052e221987540a6220c582a0069082c9e4431f8eea0dd3cc6b7eca596780a72fb2bb52c924ebbd2507cea79435d70897f182f9c4b583833ca3d8f733a52621f9dd9ed553548acf0d507ddae4a76d1f9fdd77a37d529190ff8068770648f6b352e8128752a889a85423ed87c42890682aca2464613c7533947c53819be0524b88141908b144512a8e5d08e02b2eaec32cec93e051aaff2130b74a0e11124c13b13ac580b42911f219fe96c051b3601aaf191529c47e21c1583e9f691ec2770d08e4c7d529c21a5b380d209f2a0a3c4823b9a796d5bba1a95993db99c033fce8434e735c141c7319c7eb7cf373d14c98681ae12c84f1b47147caf6ea568579e70a5016968bc016e78b83aec97db4c03124cd358f0ad3894506b172e7b328368ed853e9a981e0bd8730f710f43fe906b08f998a63b1684d8324b9ebc702b72bf9ab10b3650054965b419fbc9f3357f17226f8c41ce28523e6a147af33cbf82933b025f5a0391a17b8fcdabae732e74c0ef2a4cc779a6a05fbf88a9d67aeda45171c14cf18cbe478a6464a28ff1067b64e5c5078e06317898202e860aa79bd6ea1c3d8dcc40c1d3f40e25791ee10bad0d26c734d004ea9847b2cfddcb2920e9977a4f7abec60a429226dda9b905656984403c87965c1533f87c6799e00470dd7754385ab67f65dedb2fa3d1fdc9e76804717ff1b689e09c6cfd0e992ec3115cacee4f5deee788d32c20ec1b24b642c72403fb8c506907a882298b59e1a3ca8cbbe0fc75e74fe215dd1b7d845c16fd8e7a306f8e2af996b779976d48a8ca18e9b302df32a6b65c3b60ab6517d9a4a75b11fa84810716b8a813a2dadee055668bdb9234c62710b8dc21c2c419007326c2b99a61b4297b46af29f3934fa18b4aaf29d2f2d984e77f30984163e65e7ddf6fadf5ed646b10e8e9cadeb3bf96fc9476ece53a52d1a488b6f7be63d21e6272d87baa5d168469dd11703cf22da7c2ad5bac6f2a04caae5df677af193c89a3df37486ff918d4b298468a9a4fd7574ecce6ff9f88fe774ceea0f613fb504ce40a40e78eaae7aca9b8a7e058ff7bdf625deb95f3a1384095b34126206a83311466159411b4d7db52d2aab498fea597ab927fae048bbe01d5f88ed83b553e86e066741b29affe68585024915610c18fd1d87d6ed27f5087bc9aa46486d1d5ae8c319566d346c00922fa53740775ba8ae584e3c6c25dea8e79bc520248a3181d93adbd888c82093df2106d5462ebc9fe7eb4e44fa175263132643e1d7529e7e1cc9526da762c6889c7a15fda3ec7c591a67a7ec813aa8f8ba7ccf18a7ba569b99b47e9ab6eacc01a2317c462a6ade0e52ed999d70fe271dd0075a2d35784aa7415ff7ee0b4a25849605acc30409177ac5e10bf5da67e40f04364def306542ce2c139f1a3d44adbe3a1b18c3886efad96c14a54a73871745ab0c1286fcd12ca11eb76890d225aae6ad9ca373e4f2a34ed9972c962c27c644555524310b41ccf8783732f7576972692f97140713fbce19df7d5c82a2ae33b32e6339989c53f833a4899a63b89258ffd35fb9797a2dbcd7933eb51e614f0b8233997ae6a8f3da2219dd40ff77df5f58958966c4ee6c082cb3804e3240a6514e493d39e420314939e1a1ab44aebd0754ab3685dd9f27f009b1d946a5ea8f2913581b4f22b1b902af01d8c4dc753fee8f2dbabcc1d0c0ae36eb99b859b10bd010d861bc9ef9a4f5cfcf1a2c14a9ca4d1bcf5645cecdb11cbc9723e6f2d53c16920adb5f82abd5044575e4ee78e2b52985e85c950f2280f8f096250357ea802e4e2d2e6e1c7f904ed4afdd82a05e7e0ef27b93e84df4d137fa17cd893e61c7ac877d922ddab6249fb1c296c5deda2b16b34abb4d93c37f8ef9fb3274a0273a39c7437ff714ae191cab64ec699a13faec60d9f79977958805c791e2158a2546d4531a5d8fe8e6a4609cb2413c7e08adcc6fcfe264a9d803c8f9ba68042bed946326ec3a0be74bae5734e4a1a936c640707fb644c0a5c3ae90128d26586ea01430a8e640ba892e1af1708ddea336c5b721c462aeff59fcf0c0e2ffd45a3230db9484b59eaf746f4c1864345aa249f6c0ae7eae8f0320eeca52738e02655bb026a6aa2996a3387bcd815ee55cdba6870838cba5e99915b08de694748018c52e8df1ac2657438d72680a9b73f570e035e614ad873ea76d7ca7a21bf6e7bbb1bc10a4d17aaf6d545149011ea17b44956a3aa30c2f769d766079df2c78c030993e226866c883fbb8731ed4efda5c0f6e0ee5b647e6c783172a1087de80ff6e7c540fc52ff9d3c4ccddd2a2ee41342698aae83b7a2e1cfb710e104691ffb136de9aed45d8b6646b388b7da5151238171617d8c6ef8f7696faa1942d8585702b8ac9f9567e526dae5512ae3ae7e06bdbea49f90b4ebbb176061695ae0ffd3fed49f8741fc2d20737f5d0eda9635d52d9d1bf046842dafcb6b6bf972f32e932450304e411dd7a4f630101a616a19d080d17451c3f88df508409ddac35d526a777798faede514247ea81ea3128be73270e12e960d997b9b5f0173e2946a54df89cc15719fdb6f305b470e9d1556af0ed89d181c72d955b01c5e1029e6fd8705466d46b30c0b78369f1e3792ba7c89b697207a52fb30b02d4abd7b3fb9896dbf2bae79870409c75e6dbb9327681c64ec4b7d6007cae46d4a87c446d2e0f995fc66a2106573dc0bb4d907c994eda99fc4050f4e76021e37e03363a8cd362c7b3da62daeb47181e8385e0904efecdc0f77c31f48adf126519eca3b37b8bfc3c63f473ef3217ec72f9e995f411e0bcaf1f73013568c6039c4377ef77a6220659f57d306e731e625e1d4bc02ae649b64bb4edecef8843aebf5c34d447e65e5ca3baef0a5096f7b80dd6c5244d6ed9d4b29c840b97014f8b2ca080181a1f064e407203c6a6278e9c643c964483e46ff77dd9ad718b5cb6fda9a77e907950138fb60ad8c513da86179b9f25b78b1e187e6180c38a7a087c1f670c628e34f17c3ac171efc36138fe235305316690a6579fe2d0f4a7a4881694708c069f494930749d89cfef3ee6d1ffe4913ff52a9174c75aa597e102fb152514836247e9f2e147118952a922416e6d8081bc494354ac2e24c999a194e9a09263c9447df2cb8c7c564489fa143501bfb6b30c8ae84f6c03ae8ff1c88ce31b2b6b07ff79167c8dc6b157b0e8fc8f51a811bc794d0732d9d8491df22f14da2dc15133d24fd367097943079e0d99a4745966b71915865fd05bebb2d2a182a90c0a77ef76cfe78ab352c77be5a9c6733fa56519fa301c7a9392fba76b80e901596dec9c4cb9efa007a485cff7ac57fef336c347b8ab8f5d0024b9c8aa131ad90590d6faa04a21c8a86f8ec919b5183bd653b7dcb796dbb8e9bd0b3ae73d180736db86833f98b03750a2af4313c009977e0fff52087cf6a2e8c9dd7e2a8031fc690da12574693811aa9c5b11f6774d94bcea59e61b25bb6a9292ec16e273adf5675f8f20b65b105abcfd759a88f166729f0a2e9b272f6db3154f1bd11ddf051006687ccc6792637bf0fd7c687a74070094ea9405f44077c2c71b8340f2214c4a56df85598f816dcc33b0fc24b2831a67d105949a26608817eeb7fc0deb044cb5c14a43ee930239af4fea3c88fac57bd484291efac9d759f3fde7e7a9344a0042c40acdb8e561214bc68f9a4f3ea928bee71c5f9f144de4b4c79ba4e0e9f8d2acc9422b0cef01af7c3987cd0ddc0e55340cf99aa2d71ff8345416a38fae532b31ce0f8c2704302870fd2a18aa589d165db588c774e64fdf189704ea63b6a6dcc9063a35033d798f49cb8c48ed846b9e2bb9b0c453915b85132b267add8ed66b228ca904b59de15811b54cd0a4321904da7755edb02fc0d0c797b5cf4171be77f914ffd0fc8c0063506befa8073ac1630d435d9318fa7c5f3be176cdabf59131879bc947e112268031f8223fd3ce19dc430a45f0ae7e7743f196492b90780464150ff57f8a11d14110cee3798259fa749cd46cca3e38f3bd929528ee1fe8064536b83def74b9fea2c49691e6bc62447a43dd21ab3bbe626371328c916cacae018ed386d78e526c01b82bfbcda3ae9d033ba540e1568f041635f9eea6d7fc98aa512ebffc4ab5eef17cf0dc153c85646ecc38aab75ec8d4aa6b0bd9edccf8092326cbe19971c356d2d07dc0504aef431271165db2247f336c2d1cba0332ecbfa56866828f20170137ace382ccd338f261850e60bba31ddcb3044698deea23e460f21abed6fc4f8e8d48dbfeda8c586363d5371761515e75cf26e5cc1429443fc879b51210ae73bcfa56da2f1c1342627fd929f69dd0e5ebb24f0e8b8f974445b2728c7f77ac2366ec1ea18776ac7c94453fac1338e431f1ee3b9fe0f3cb2c0b41b39a8e26d58066ee95252361c28f3daf13ac80c563951a3c6e3a7da9d9dac28958285bd3de40153b79667708ed846356aec6d335c90ce99c1d51da7f5a07e194c9df9ff5eb6a5c677fa89fc7317c59672fdf715120b383a4b78c0f55f95fc3bb93f0afe4b976af0c439dec33840568f68485533786f2d4bae1562ad72ea392be7e68eb866fc1f2d93b0405ad4955d9b07d9cb79c4ce5cc8ff73db1319fe85e688b4c598aebd518f2835746572da221eb54b3f486a6fed0305a5a3720ade5f4446113d1241fd62bddbe97107cbf9c3f04369ab4820c10130cdfe6eb8172ca15af8785cd814acd69244ef91ae1e456ea10482b6685c4756369b501b931afcca4a8560c1eb87c70acf0da6d4f2590181fbd1b91d0f3b85f380691e43506c744b87851468c7c2c43f33209e7ee161cbb40a444d39ee066dac78cbb79843052e98a566df6518688c48fb3bf3ae6e4c0fa25a05d68d493ccae4d9cfc4e87cac8cb82098f8b80b088b8bd3bafd47867eda61dac1d534723b91ea6601b1bc5bcb91f890a8c71abfeaee40671f31e8de3f65110acc8fb5fe3fc64eab8df1c8007bb659e87bd319de90e30d16ec857839ca928a0c69adc95f24f98003e3cfe14a8d6d864532c266d00d4484d9e589ec19769a1e755056ee9f1645c4426b1113f161f1a1499bcbed9ab8c5d7bd6d8c681d874fe64b42ff56e72e1a2f22cb94e8009705711cca9bfe91fe4696564d882594e96d3505273e65f02e60df9992a00aa5935e1aa4cddaa826e0839b2eef6eb4ea32827b888554f06d7679b256d5308c55baeebeec1e4e5b154fb04eaffd2ad5af022200d252ef02c601fe286bcd61b64e32ef90b04c78cefe18291e73c5f2dc74c6ee9a97e1d3d80879a1629ed83b8733ccbf9b3887341e36b2f94c621ed1c99f4d46ab992b8973f74daa18b28ca125d054541dd003d48e7e82bae01da8a276afd653f96fc0e0c5903ac99747e4dd936adba3045318b7e8deeadcf0065e9e6f88d963b76faab8265e50bfa44561d85e0b9cd78d3e10f60d398e210c8ea2ac563c95a3dc4ab9e35cd004ac164c5c6f02740afe35126da7e0944dbf33adc830bc684642e2f24b95e1dcd1733619a835523389a05188b8d9d25014617a78b85502af3a5267ac32f7c4a95fb22eb98622f15494b24fc0e55cb1336c3293a9037727df788f1334cf71f094e90578bc68513d0eec1f151885cc3eb81bf61025c74955906de742ad11b963c790bee3d3f6f3919bc5b1cde703b86a1a5612a0f2b542ca52b439ee64ee77b880267521b763fb6f9de816e6988c86149987e84de21af15e27f576269b872e26c5982481bfc834c8d4f9290a2745494dfa48bb20bbea2f2d3e4379d229c3f3a5fcf733176172fa01700e4345b8e6f88c2822408c894a060da37ab02c471cadd20160d67221f9aeb643a8d028f0ea24c1c65146a6138a48ced2fc446fda3e4c4517867e5a95943e3b776b6a8b3a6a3557b60a7c8685eff6892e2a7aae55ff25043595cb3d6530e85c77426a6ce70b969c2882b0a1d1559162a4a63d8687ebd94a33010248ae7ee605204a0a1f8d6797b3aead23d2e01da9dd5feaab06bdbc9ffc0c055193d15d4108b91f1b5a85f7a681c6d0ab6d253be84e08ae5b74abd8b600c068f8e92e44499ad06893ca9f95190798518672f296f9cf1685fdf62ee80cad9b031c60ca83dff7b134f4c829867c30fb5a36e99a90d40de27935ffb0e3dacc54dc5cb9751a855924b72b0d9cd9a1911d6edb56ff4157ba2b7fbe0327696b5083f23a86c59d4199f3766cb12520b6a5d3434103a82fb985ee6719c1235e75e81a9c7de39ff0a8e9bcd4de68d1e64d7349014fd51878ff856f2f1846b4d8d057e27cb66949141d5275d0e01f65099ba4603700cda4255034940eda82a6f9297ed83db9f2f48c9d0eb458772502a00cf7e097c6c9d7ddc8b91ea2f5a71a1cf9804758c0c15d72d64da1b712cc4f91aa332bdcbeacb851bd44b8ac640a46835b69523f36cc1cf711646faa5ef5ce942a35479a8a38846c209e146afd35254bc6a460e07276f23be8af551c3fcc156829db9331d02e07cf0a79637228b72b10313f3b7351e3cebacf5ddba244fa5d66d78226cc9c2b96d539924886a4b9416ff92541a44f2ed486ff340cb85f22264784ab05adcb3001151269100de9cb9396aee04eab2cc12abfe05c08a8a1e814c1dca8f81e8a4aa597b4886dfa32b1910f7af88b80fe116e16f1c66bc37f0e092084af44d9bc8b29ebf4b25c81f001673a415932f2127a83348f7570d150b450ec265bae0f09b1e2ab9993d0c4e4d90a54f20218174fa6172f75dc81a84d9deaf8d7cf1e523524e9c20684889abc348767120c7da6bd2384fedae6faf0e16a73bc2f4875019acb44fafd1085bc382f0c38a19e88db3b8bf6e20c96a190822d677c1399943c2bf7acd79feaf149adb75dbe12d0a7588b46c7a9201558700ad9c12bc959eb2c7f0ed9f0142f7b85678dcb8e7567d264ac3227b3a8664cb5378b3aedefad213990f3067fe3359514d4b48fcc517356b1ffa46f3104579c5b38da90d1673e764aeff01e5913fdbfe021656fd08fecb773341a46c66f89c487b61f1f95fdd072e4ef54f299a7d90676a90b48df7c14074517e49c212a24e9f140a40aab9e2912fe3c8eb6fdc0a3599fc6e0b0e1f134c6482cc2a5803d7e9bc2839acd2e356911eb76f638c6b7903a9a26b69a0d37fd0e7612867127cfbe3c80092d965d54794a4409bc894a820b36af48f41b0e2c363a6723b6da6a14d04a5d414ad2ccf9701127066075f09caa829b2da95ce7ef9a7976fa6df62773bb85d0b281487b287131f79318a7c6757f3f55c32d48ae728ca78068ade298fdadb6d68438da3ea47fec4db9faa8499b47ba999311b9b0263e1e92ecfc5468455ca62c356305bc94fb7297e2faa745170746d64e1e4f5864a5c94dc8a07d7cd050e5ddba0628c11a97322bc7b8995268dbbfe858696460192c30d968832c565c749a98b61f89aa0a655a4b92ee89546455aea6c52d321d1ebc360df9b9f83ccff1234ca06dde91e2933e2f4f0922c2f3f95fc32509a0d2e8cb69227198ad8e27655792edca1049059013a9b005bb81407a1a351bb44a923f2e2d16ae6d19021c3a113b0f29ca12802944e5cae2b3458f91b77d0eed90f3d36b1082547c1836aee1bd673f5bcefbd910a8d5458ef817373542676083e1167a12364e9f57bd3140921dfa00785d6fa6b59d3af6d7c79d225caffe6affa2c818e2e874e6210e8a5fdcbcf133332981d224ddafd5631891a66cd36f40b4e4098b64b17d92f5a7d6a704cfcd46a56995618e97f9ba4d0893937fd4e67c144e5d59beaf66505856276c93d44f8de126bf618a2cbb76e0cd77b396720c3e95be33845aa6c30fc9c09dd4cf9c3196541c737973beec7eb6d14af29af97d030c784e8c828197f4b216fd7ff499b11a775a32a2e7828479f1dbd079dfef493215830f22a6ce6bbcf55e135a20bc8a9727d5eae7a7151bb94e3c1203f0a5d8b8573b8997c2ed3f9770d66721c7832b431e2af4a3648da102d2e944c0bfbd8a55d80a1f6ff127f1dd98f39f35ce64774b7572819edf50c75b0b3f649bfc8320d2b93bc4648ac16bf248d89e8b7f5a51ab613583b070ec277177b257778b0458c84fea4a599ed0e9d23040d63a78802303faadad54a5357d7dd876b5812fad12cf040bc6f87d3a0948b74b04e28b24fe92e534c65ac75c7fa19dd6ed43100e193b98b39f565b03e0e477f318efc3be060218a1a2660c97686a383cb39afe1f6b016a906d936181afae4931b49142b7f82683e0f89a3170d55edaf21c2abf9cf6ab1951593dd26bbef8f1ac06b7fb3a280c49b54678e352a70302820bff0a4402bbd5961dacaa7ce869ab08a0eb3f87e842333bcbba66f020b8a0b905611d5675ac64f0c0b875b08b9c4c7a175194e064f89f63c1b0aebff097ec9a84bed23e46d6823872ec42d072139fc1fcdc4db5bce483722d50812559479ee994a9a9c4c7c65a54e1bdb7fa621ee061f1609368dbc845aa7dbe1a8fcfce9157c7dc0c3eace0a61104c0d221a8e82f698acffcc9db296eb063d3bd485f37c9bb89a2d849729e37065f87e460f81fcd4f6051a057afbf32a6e13c21543863dff7801c6d51780ed08de0003613c904c54d149f4c1ce2835f5cc694762dbaff1e92b281d516e2fb60a65199ebe9a333c1c8aa7fd1d368010221e2580549a687c9a29deb2b0b11cb6056765830f647b97d4c0f9b9d5f7068284b2f61426dbc58076dcdf951bb11fec389f482e1922bc4aeffd1fc51733c2834c27907c971f5f74870987968551453973b90adc2308df3973c3c931f072c1bb741efc3c52d80b9d82a75f455ba7487687dd2cce6f698cfe426ac798895fe220e3c2b4c29981c737b6fb5f1a9a985666b1f3ea3a417f23f8939abcd4ce04fc6191da745ce0f0cb45d01cf505fce09f50ea1210ef4d3edf5bdd35be7c0582a4bdb5228b1b5b042ac87538d2c6f9cc49965405036a1ad9d3874c15f542d16c12eb4d6e4875949c2d3b3ec62cdb210743c7e6767b65132dedd87b773a2c51950bbc55d241ba26efe65ca49db072fc512a2be09645f5651f5e16b20ec8d7c9f98b91576b1ecbed9943bbb6a93230450595394ab6f536bb4960ad88797e4d7c028fb1e567ce66fd3865840c36e9067766321e3eb30e05579d48f910c366896ff0a8e12f0719e470034216e3d1165023439652f8889d8323601ce4a7d3f211baf728b4930f8e6b4670b43e743bd8584b41504c285032e9464b5c119bbe550b2c4492e9ea18fa38741485008ec04eaed26f9cf1efbf60be919f515b756692bfbd1ba27ca26cb73c552e365e685dfa1bc839cdf00d40bb848af668b152f7531b3721a5373b1fe2c9aa98a62f929080838b969e5fef43cdb87e09059b57ba97ee497ed54b4e901d79f7209adca54e3969cf933cd5a51a33ef253f6ef6f013c29c25163116b1a97ae87ee633be43eb1ae0188bc22b9e77e96bc5345094b2f9a863c61961ab5ac48d1922f2829051d7884589073fd85e0eb67731d9090799ad58c26f8d3cfb2dca24d26885acd6509a38e97f91555ec4c54140179c616aac9f850c3dfa7788d6b31dcd9bdc6e59e5b62fb4fd723783eee68915d93fc82b054754c4079e71f0cea89676b342d8d130e52243261e0003889c59b35a46c52f47c509400fae79cc13dcfa0d9174886eac8fdd5d8dfd9d6e1ad8222196492fc787198b91bf11453a88225e343999ec4cbc0aef28ba92fa5d27c558754d32049ac669a8ce24f507c27591489df289554363f57671c5f8e9f6b37d9696e770ee200a08f7b2178552cedcea4ec826f0dfb0aa09a1952acc4af01aff5df8b49501df1f041e6d9af0783a6da845133604c7c9ebff20400395512815ced72a5927e62a48339ce8809c3a1c79a75b2081724e34a0ece82566742ccca0841c2934d0d8fb5c4a2cd8faee3b03cbae3da57446d497adeeac8acdf3f3f754adce8796cdb9fb364598e60ffda19f285155aeeb91a75575ce0e56a40a44cf21bd7d089dc8f55a606db70d0c7a8dea29e22a7d34fd9d2fc8578d3cbfb3c9d9de5210cf15580ada32c0a916c31f1c714e17970ffdb506c8c81e78b239282fbbacc31b9c4b2e20a175d552d223c8f016f1f4ab2979d3bf9428c7452626ece9f602e66a77dfa0344690ba9ddd9665e0515f3555545cf07ef603d6eaff7caaee511cc3ac46222b6f890bd5cd7c91a63d5b967956efd93209a91608dc99e3a531ba1b8e9c3073b36a281e7610bd0833c0729c5489a62c4d1941a5fabed3f25b4beffc735f0e0a8187e285d1b5252c6075a2561848d0e38a02da760f658fcd7a004ef3bb5218045d245e4b1fa4414930e1a7adbdbf61063baa032270f4fe40553b1e7a14aebf172dccfa3a247fae6c6053ce464c8167bfaae36b4e2e52fece059ac68ce32addfc3562e2dab56f2349b295965203f1423eda61055c909788f5222f0715bd50ac3fe32db3c8cbd1bf8c8725c8284d428a483868f8112727d58ab2818be7d347aeed494e5b237df0afc2dc213e96aae6ce1379b187bca98e2cf0d98f8f056e8543fa397002276c039a76d0aac39f9fa11a9f9ae57075efd17759eac6381bc4695b9dda8ef22b994ecc16ad3db356f736a2762e0dcd1308c901267b00057b836368295189172e770b7db573a34afffa96f0e0c829af8b3bbc48457c3e96f162d326622cf4ab15e4204c364960f0075fee91252611acab88fa307e8622181de6544f36d60d12f48af773c0278a6323c78831c4b6a5d08a4259ca3f2ec77e03e36ec487b3a0aa4c7a805e27f1f61d3bb3d8f8f4eed588b77bde78981209a838ee2b58874a228389b3efd2e72c5e585665e97b7dd475fce5e503bcd70f03975fee0171bf750c86c0d95b3fab3a133a7eae4109f6849c8ea6674c21c7fd4da0dc32457ce8d43f041c18038a01d4412292713302c49dac54fdf19c7162e9d24050f88ea79f4d002ff49b7b52e4e1fb2697ebc3f6813e66c17c5d703bcc1bcd31a73fbc39937d39c0db0b5616dd76195eba4839132b699c5fb6744426b281f19037bfdfc0c838d99e629a96b4ffd752eb13046ab5ab52c4e890a35e02ef26114732877d54a74d13b15f16e37218cd7bee5628052b7f36d141b4c68d37567417f0344741d98bd5f218ecdad9c9452d16bdab8b92c82f4ec5e8ef3244a01f30a7d8e7d5c61321da436a6e038d964f33636bb086e462460cd2fe1b182a8addd1bd6457d0ade067e9f809024f9c2dbb3fb7cc509d70b92ffc1c18235e931824faa3a73d0ebbeada51089c266df377db5f770f925f57edf89b4cb4f8342fd7376334062b036ec941068e5f195a0772c49bdef6195a1948e1604986da4d2f6ade3a5476f50be6c0dbbd58dd00a3b1438428928b083853143f7c959e571108ee40c6060f3e628f1bb7b83169323746fde8b7e7bb1e66811a327ea824975e792fecb7d15c66d915616452072c39d47aeac78cb74dc00d32b529a7f6af608df96fc236da582170414ffa07199ebeba7ffc1a9627980e58d93fb4a45bea7ef788e464b3875b7e2ebe4e363ce2dd7b92cf059d4f5005b13b00db0b9e1cd3fb973286ed948c474132b228b6f87c54e0cc2b78aeabf85fb8e811d79db1dbf6f0be42147d38e42c4abe6bb9914775d1dd9992a30c1417dd9af75a5f38577fdf83297fcba9caf96831d27bf70d257146682279600eaaa503489e8e67757ec35a1e7c176fc14ea0c33bafbeeecf7a6bcd5a7c005e3a12881d9b07ef80b6bf6146549ebfb8c429b7a3b5fd3aaf110cd613767dc27cc05209bf38328e7933d56be3dc638854f287951a54a9e6f164b2f285f9851aa956c4c4e9ecae37aff056ab5433b9425cbdb06b0d13e27e0c453d2dcfa7630a430f7f187aed4b048f3162a4d1ef72948f8e5372c1adbaedc54c0df526793aa0bf7e7bb8b5a9ce5d2df7ea3e65c10a4887437c97feab1ac418358551ab58190c03d28acc770b4e84947d5379572905a0180e11ee073b44b3efb7d404fce7903e78efebd3b157ee8d8516a7b309f752191e25bb097baec28dd2895200d6898e5214bfa99efca88f07ee23bc7799dbbc14d3ad54d1454899cbd9bff67fc301dbd477c13c0a50668cb7817cfc810b0d93b956839b10edb84ab392c2fd384dec0fde9648e33a9f00bf6f253432fa48d9a95b0813cb4fcd338d77ee3a6b366b4b0049f7eb8780ebb0a060c3cf95c277972998b4977a3fc550d88337e325ec745d007d14661cddfeb2f58ab994376935cca4727ddae67cf9a5c84fa45cf0bd46776f42cd07b5664468e8fd1396626c3c1188d7540da23fbbb461f2072eb040270a59d1aefaf8466cea7f7dba8a2bfb158c383d97cb4fd7d00b3771a40bb57b30433586c794811958625910960053d4f3b69036d9deba1829968c7d2caca8dfb1eefd40bda889988512be1e7ee41b3ef6d1a8ef9fdc6f0cc3975f0c982b7159d69b6d1bbd0b06c76e9a864b415fff9e7c2d5c4a07d217877950e079e97e57457072e249be6c8fef39325d40f1808b756231c587c3ad9d46382f271f149a55d884bf7629df2168e333bda3de616b42afe3f3ed7ee068dce92125b8c21a287683a2d3cbaeb584c21ba560eed5124441e31d3e2682f73a17dd84edc63d2387cc8c3fb2ac398d839674ddd7ecfeff443c86923f753aabf665c22c0b77a085e865fb0f4581798728862325ba76b11a0ca6e8e1b78d41f0bd18708fdb9ba7da7e544a0728f2dff217a7576cd5e4e4d7974a90267767aa99a64327bac5992c5d65e10612b2d290b45f90f7afa6bb8cf1a57538cc6c67a00a445207ce8dce988096f85f8faa2ccbff78b03d153eb9a82dd29275a76be849aa147c0eb072ca0d4ae5b6f45e18b09c37e3e498bc1bcff701ac524f6c9af2705d80c5d38ea77d189d090916a4eced614fae5051c65f515d4e31737ec354400a0310fdc4f41c9341c081a199c23f09e1eeee0246ba3b590f4d4c4102469dbef739ed73056f072e091e17322c4f098a813448e3ffceb1fa3719b3d66cca3e5fc44bcd0af3f108f43fe8b82994c197268152d3236789bfbfbbc2ec042f6f25eba9a45d8a028c5230b48480c17bb9a69be2b5dfe33d2ed6969cce007a37b077064f34f23c138b8c83f4ebadda7e1475e3ef0fab3bdd50b57ccc5220fccf569e01c1d5520e72e76a2bdbfa0784440fc87ac03eedda4d5d8d84e66319b04de82c55e21f4ba6d3fde5c7a3885ee6121824bef5a48f6ee6d4f7aa7bf57c4b19102758a480c37e0058eeb9f692b6bc2a343bb08a000518245e441ee684c86c8b11cc2c0e47ba642d40a27afc5d5104d4e2a8ed87d31394643c8cada81227f8c6469ed1bc41a03c1c33acc5854cf39a3630f2ba142a23e7905bf0efdf4dca6cbd03f80eed61aa15ce6553b6cf2313ac3954f2886a0f6adf052b3e550cbf51c245535cbfb725d739662c223cd5d8ca9886599a8dd1dc1c9bed2321d1f8bb393e2c4ae1cf32dc990ed4570e35f68b09c40d93a23df6af8d0aa0b96c7682d4c0a8455789d8f3faca7b8fb2d999b2ad748ab97de10365e0889b0b8e225c6df92f3194b390c0919bf463cfe1d5313b3c4fb73f401194116c1d94f391295c0aa99ad37cfc3145720a22d535976416c31572fcc47208b4af87419600975fc1ccb1310ede868559710076deae4c31de4cc4445b537206e1eae5ac8bf0f916fa7848278679b98121db58dd17af0acaac9e750f52e2af55339e1b0ff62dd41f22a2bace95355ddb7c471a460595c49deec10a0ce88b8f7868640b9e4849cd19cb1f6e60b920b25409422cd13d8cd865fa1dfa0d61aa177ecce7b0a2acbec35cf33bb20d6a6f31c839a78984dda592042c1a349e89c41632cc3cd34e4f5348d2fbe6e83b2f427717f2df7b9c1efa3eda83cb21d784121f11c312bcceb62471da6bbf4e4af5cb4153044b72cc7b2c6c9da355ab2f551f619373f95f41c5974fff8a9efc0d60e572b101ca3e040e01c0861029eefe091565e834f58d1777519ff47996ce342ede6e36e708acbedc88cf07a6d31b7d74724c4ceb12e45d3a893b25d936e91ec273d625b78f8d41712a0f5f316552f039a868df1542e9783dda057797271811d5f212cfd4cf37376896dab9509a845ff38759ba87fc3978e59229e904a95d665d2c434619563c78ec4ab04562c2e2f56c9b399a51f858933897c1c55ef1a35a6520060d0ef5400ceed4dc06cbcaff60b692476ab06998be324ab7985faca94591f9fd84e1662f0ac7551fc0afc01181845c90010f3badda72edef209e1a02a4e23cfef94b0d5b7beeb8274a665d770882227d9bdfde66977dc16b852ca4970ae05a202243a5c78178d01a86349fa81a358929c91d261075e6a2a9fb663a11a5df848c70fe5a9dc0d79142b2fdfa598920c1f86c27d6f7c2ebc83257c995701400b611718afe8f26f806941c0e5ed2b6773748f7551e43b6e593a6500886b1ea23c57a44291b596658002e304d648f5ef3fa994507232df1ac1c6d931a43b9f4f646c60823d6303f137ee07ba94d3668be6c96d7e37288e9095badacb540050d420b685e5494496aa05cb1ad404208f376367bd69ba06cf86766363a6eccdc37c8a5785335af560a3ba0bfc20aabe91adc1cdf81992aa3f45d08a76c10d080d538f5dc6c4aa7edece4e6379197f83f18e45b956c336e7fa34f9b1fc61de051702a3714a23ba9699c68bbc28664fbe5219e100a4b7e4404b4363a539b088963f9e287244e7a499a0c34a6cecbb2aa44afd898e0834d1ea78a65708c71b78c043288f965abdbaee3a6231c67255be2f9c46cb91b3ff0cec791ed64007ac7bcedce992eed19ec8b677646988309c0689cbf779271e163e583d1a6bb734318eba2b136e44aa0c5014275dbf9bb0ba671caa882def6011b1243d9a4672bda7be393b86fc591a214413677f9288e4f26ec9a65b111ef2aa1503514120821703d8df50b2ab62f2034e4834a23b09b0c285b4daeeae256eaf3e87c212e18954d36b61d40d33426159e3ffccc2d4e382ee63c7047b9182493b4d5fe48522aab6b8570e033b661da9ff416bf7b58826c378254760735d8e01a97dd125f4ca573355996b62ffcae64c5996275bb35d7f745de0ee90a3c8707602d8d7b64d63cc5e77eaecafb71d9cd33195d116e80112b4d0d1e1036520cc36290732396950f53f2f44363330898158eac234ff7b74a96a77d0859efc995f6ef8469bff36c06795949b1ca4dfccec8da40f7090465f48c6f199cb1ae3af7b1b9caae8c2dc8bab09a57493a118965c91ce5c03e4a36afdc794a4d1c5ce65f49ca92a096ebc27af12697da1bfdaca7b07483b293fb9c0e146b8d05709da520963a787825c57ef100997ef423d3ccd69c0e5d815062abe386233a16ec66478333f7e71f374e1c4d540f26aa41ccb6f1b9b8a18a9a36d7ff75fb9ca5279591fb525ef54ff4f1999fbdbe2161e387a3d7c17b08029c954955949550e912d6d92d131b6a85d7fbe23fe2623c035680d8ed88992623169d28c98192acecdf8be876173343ed24f69d6169afbffe110dc651923c00e229ba202cc150e76bb576120976e08110a0b3ddf426aa3b26bc20fb4ff96e41c240710289cdd533564fb6a91712ae0c95f12146e738a3535c5e60e6dbf95f37788430c662a898ec29ef092cfd57ea291281755ee2bb997d3062cb286db4f0a6b9c0278936c7cf70cab824c5aa50ad0ce166ef2cdc2fac70e85c507e168c44a519c97135a439b94128c93e9dbc4c07dcd9792336c66b6e1be6f8f5998061d914aad79bf4a1595559d651de6ade1912d13b338d08741342053503e0a9ca9600ff55fd260a6b9ceb91c171a9419bee0a79e2043123ae571c759400443c957afa102d46bc8ccb9d586bc1ff1873c68c56974a8612140ab78663750b10722633466b3e2ddd7b024e5cf4cb2b5c9d1bcb506b3acd05264b5ce0f25de61600c434a0ba66acfcc12d93264dcc79b1e86a87276c214d3c373001c7c7c345983796b18e8d0feb0d91156545b42a4ae344d9a34c64243926c83447496fdf832c8aa3a6d96b09b4f4f48cac73c382fb09696b1ee4e96fe8f8dd7dcc18d1af3e2c4d55bbe6f450f85bae7fbbdec78f25f4896dbefdf5ec5c00284e08893a398c26776af75467622cc021ed59579971b7c0d2f0305ac303af27a8d253ac7a2bb71c695ae96cea41473ffe0f13a50208824d0ca83c44c4686c60b4d90d50a43422e55f7142b9ee4aad76e3bd261d13994474c239d1c6dda5bb27866f35c35fe2117b0125697be649d22cb34f8cb6e331e01d5885eed75c6b5f1fff1d503906f423e34723935253cca9ca5eb43eee162057c8bf1ae0ac432e422245ad0cb80da1f8160d669d278f9c7b04fca344da7ae5999e772d750aac729ee27737f75b10770e20200a8d429413e5a098ce1f05d6752fc4322a68d00d3585b3d2946f117238d95ef0a9797d90976caa84fe95f2f53bb68da4c81082553353f24b3b807689d90d07738f36777a027a2ac689ac49a26a5b3b7095423b77d32f8c500b5a1ad2d399f6df0c5419ac61558b5126f64004e9e699194a4b2596193adbe5b9007951b3fa0d72e00940d4af5e33b0af65b6a525f9d04fb2dbaef6274d18d04a74d2c6d90fd0ac574b3a30daf17660e9f0addde1b33714ffd07537431c95a94b3c8af52aa9d6dd9f7f5ae2f911ba7a062453c57e09923949cacd919253495bd2e2a23730eed75e9dd333a67fe036a0e98b5209d85bec89bb5031bd4ad9f4956cb0a302d8eb8b355bcd2bcf307473937a539ccc55d3d34ed2bd6a56187b20a95a63e5edb6f3000e120c0395c06a319d4970a3d6f52def98d6cc108d280c24b989edc9af173fe108a5ebc83ae57917b1f5748026d55d6a5f36b7506222c6c25c6793f4a8512d4a9a36d5562749c3a799c5b9683dfc8e96f20e8c95f1cd223d18f6751b76d0f0ecdb2ec163f310e04f97b8dd9f5c02d1874f2054f46a90d22416fa20bd90d1af9c27942e4898bf736f6e50f3ef04ce81ee013b7652b2f2716f9143c6b762b8b754995ac445ff27cd913591b110a1303e44c6d9aabf282f77da91e14b2866b76a391859b1f39c95303265e83aa1ac2adce85a4f77b13a3479720a6cbbfbb1e9ddec8ef4a6c9380a90cf8ffae2605ec0d1fbbcd52c91dbea0deb0bdad2b5d8542917160298166fc4dae111d62b8b3f7670ba80bb6d4f4552c77610dd0d7670799468d5d1ea20374f782e169498da1ac660e66553b0cccb0109226b65240472dd6e9ed243684a5c906ec9ac6b3c8ccf7549173eb33d95a500d54f0e778ec2e857e85e3bb4d4b5c89a29434f9e14630506e674f1d90137e75c19d20c7c6b4aa10fe20c7da3859406aa39fbc3352ae22d1cc8267c01b2ea9d649b1067d3bcdcbed023605f7930e5e1373b4e0be58338af137a12008e3c283ee2a9e8e169045fa17b249985b23dbf30427ae6353de5f8b4e3180a3f12cac0af92581efd5734f18f4babbd3a3a121f57c5fb702b2d2c551f430609ab6c2e0a92d7958ae08f97f074c2bd24d03b7df6c4ea6e732f72913dab6d5967d013c02fe641c17dec93b05fbfd124421c59f5a247830da8abb36befcb38652ca79e8b7d87ca8d63c874ff2e3f9f0e236bf6e798bbf8c08ad57616d629863f7fb46c0c467865dcc5333d53afdc7f68fcdc0ad817886addd7b735e720b4c367f6f60e73325205234f7265eb79f3dc8166433300b8613fb063c05639029af47f5d147e7b85774140f6c28479f4e649eab09379ba2a215f4e5d0778204e6784c9adb6cca97f563f9123eb58e6f96354147ed66d86efabb15d5b1702c0ebe371c9d9449fd1692a90ab3059218c9e8755fb00293ed9413e942c043339859f13af9bab1d781a8a680ada1b0c973cf7cc69dc18ed585c0b0c2f96beb74502372090730cd6c199af180d6b6c044dd590086c996355097a00ac12c0e25d99eb7513a6a6f3108e9cd1e40e2da1b7170e2b57dd357a30714f6b3c009f0c7d07696cfa3a3642dcbb809548d174fdf0e0ca2e0ff1a4b70defc16727acdfb5b95bb1c186afa365b2c904d1f69713036716cc6ddd596812c2232ba88958b18d6d2d4bab22cfcc4d6dc7fc9aa5a6d08789b3ace0335c9cb8c90fd14f315f51a64ffed82367ca41b08f9ecae3a5411556c2f44ecd4b39eb37f81224d492763e2015477c57c4272ad010d62d2da6d53bd52d1d798577f8bf6321a522c9418e7e4c7c712d5b4ebc61f3f286a166761b7ae94eadef72bcf2e4333876d12e1442f61088a1b4d9429f87c0e0cb7015cd6ffb34aeb9669b38d42c94e1c805da1ea915a68e7cc9cc04751197dca0e982750bb6b686c87c70182a38156361a0162d1adc16926db6dc08e27ca2704af6dffd3885ec77c986dc23ada86026228bc9410917ba0045c83b6ded4d8914f6806d44c396f536875bf4ffb63e6a4bfd09f1aa4cfb1198479a1164d829ee0191bace70a6891396512c08c915c8ce6f152931d9f16356d0b71286899081de899ffa92f4034a09fa0344f6e939bac8c41eade93f1c3647309232a75d95ebdc6e781d34471f0e35cc0d0d6ed7e7839eb3a2299ca6dfe5717c0d9818ba37f5930c1b8d7794670548e2a41a3730f214f7772ce51af5e40498896a579eb99c95516b7a092ffe758020b21a5b1a2eff48a018616326f1f19457fae956279a3f0c9d6d67659068342e6d38897090dae27459a0fe3e8a2181a9a9a5cc148f70c075bc50c77f0b62ad2a02088b9a2b20200aa2a87a9fe6340ccfd8fe7270d88b2c9c64233a1b057c3a3626a778f77fd266b4839ee99b2744c480d1b15ac1e259c10b7049f684ea268675d17f18b72d0097a2d8ebe45d6f2a430a4f208c613722b7c018006788a28e07c4095a8faa8b0a77f3586564e850f455b56327f614dd7f4e04d598a0de9fcf4d851a6c1f2311464b0fc4102b06285c2203f18d5009b8c4bbdeb9f8ebce58ab6e1f3abac86a84e3a81d87476933c73e8372ecaa22f3f0bd6ef5bf0a4589422bb436994a5337f65dc31394f2cddee70f053a274eb1e123f65ab7e0f7ea95a53ff35b4ef706aeb2cebca6dfdd355980a5c836c8deb772dbdd9a4d978cc1928a0be35a69fc0782a09091d26ae509bc4a810357601b24c3c5da0651b919fb1f9d9c28e9954c6a1caa9b58c2a6b2873928b89493b7c6ff66bdd686d397c34ad95da407d9ffa48c5145809c99174b353027652fe14fba54d9440ba2871b20905894349c9d0c150a7f60f0dbf4d1930d02ad2156c2bdf912b69e0be61904437484816cf4f3bf0286a73fc18532d9c91eb571b56065e0e049e8f2b1749b9008aa9e6607e13b2ddd899f6391cf29c669c8afca9d1ef794353690468cd699dd008b16abb73a69feb7c90d71d6095c4c6cdc332d757da72c45d13be3be9890889da1cdb4bc25eb95e2bebb05b488e132e82cf31dec2ac32f5dd4d29d81e7fddea90031f12427a81a181f96aed1e52fce223bfd6108edc904d4c1098bf4532232eed90ea9238c2ce30ca8edaa9f954ed2ce0bb52150cc1298bb4e153be552f15558d59505610968f9069046fda5a78af91f03529b79817dd841dbe73952d62b36675dbe1b8fcb3d4896f1efa481ebbf8e5324316ae647d5054e88ac19c375333193b3178d4fc4a691c6700e69bac4d2500d25c79da8480a4d8f8b95c4e2e8e03cb1a0670fe4f265ac9f72bf9c3d465057626b7ec5d2b0f863a6777ae6d8456f4b27a5a617c1df9450d0c2f6371a86f8fab7e12343d6f13b7207341697e89900146914afad16030299271aed2897e58fa1c83a2b27ab067b768745578281e095783f89931c7229d7519c349fc042e1360cef68a7caeaedc3ab9f36e468e771ba4ef74617d6dbd37c7d363ca76936917ef875faeac74f1900766670acc7febfd7c4ec530753eca93737649471a634050f49b6b1960cec78f9cf94d0bf4793955918422d10e53b67a455caf0b75d38d7de0de00f327e1ef4479d1eddc3c5ca9bc7283b6de6a04e27a3256bc40bee990fdda792d28b200afdef9073a2e4f336dbf0c42971848a90546bb6994b2ebf74cfa47811816fb734774ea9757cc62b37095f8936215006ed7850696fcc446f62c415418a1234f363d2ccb0f977e320a71d46e4b5911df4faadb1c8b9c54805753ecb695cbdb39e6db6eaeb8493b3b66ca0986b4fb238a6e7da81da2d8a63f5bed8d5dc4c952721627f7b5fe27961770a3db4e8ec65574b815112e5ad77e151fb7aa76b850c6680ec2aa60a5ea574f563501326ce8bb883412510afd8625de1d59c011c837c6e0848432248dbaf1b939ac34676fe9f0f801e5b88fd8aecd3a0a29f43ad5e36d4d85cba07d23cfc1d5253d2663738fcec683271465d1ea9d476f06605a9e4ac0851f825ae5336ac637a2bf9806c0d15107214fbd8c12d9712d44c0e51cb9d7f979359b9233ed01d9f15482b2fff5f41f38a910ff529f7a62e8f3d035678dc28f9f95ceea762c4a064e45d3214a564e5e91616f16810588415c227b442e444a3eee04911fd7e7842687fb0b5a02797d7162531b0412210567e7efdf3cd11710c1aa5bd4b1e4df3994b6bba69b840bac54d21ff4fb89d8e88950f3a393269322daed1ecf7031d5a75c863cae25dd2af33a7c08a621fae7f9c9d970b1ec575788d7013f361f6e67e4fff73aa1cbf926e0e907acaaf134ed80708a56d4f2f7cede31bdf3b23887708570aaebdb806ebe4a53d16f3acd09abe09f5d834323e57351e473ac961a815115f43009e278a78c1958178e95f47dc96a52b330e0207bff6562aa983a3f207ccd0dcf123ca39acc236808571dc4a723e24ac3641e6a92af0992f1875ae8c848ecd48639166fc1d74de9dd19ec4d042b9fbcf292e203149dff78bc64232bb37b1a4517f5932012ab49ec9ffac832d361f51430e79a4ae5729fa40fca2edf42a067c285afc9f3b4301dc9bc6582b0ebf4b2f530d9f5419b95e701091c25c8d07d97fece7d33ae6cfd766c2100d1dba15740fe49306a9e3987cb2df2325ae562ca6c292d4a2343d22a1f26d6ad4b972167c74d3e8a8531bf0850af3a6e8450e05a3bf41a5867d1a7fb12a7b195d82c9e5836dc725b1c19465fdd4c84e42696b4d0cf1c1c8735fd9aa91a501e4925d7fbef7d8f006867badc6cd2c046f3fac3413a7d5d1562585708e3d420cb648ed9f0d989279bc3e26c58132198683bd46319a74dfba47f752ea3c9aa3345af654412ab7218f133b93388e3d11d1f786ea284bfd324f7675a4638d7002b9347f2890e242db150ffdc2d8bc1828d45e19c7d562b9ca025704d90fc090669b36641c7adae8836246e0afd6f85c3bdf272e6661c220788ee39e49d9396119aee2a98fb077a7679ccecc26e0f0534e27fed41bde8d771276b567bc4376717d7cec05e04ae0ccbe48d9751de58194ba2cbbcc930ca7149e0c88bbdd1bce68c29c547cb0093bed72009d990df176f21cfaa447838a13803bb752ea800f8cb33e29611ebbfdccad41bd0cce0058270150a0dd4e6e3feb11405e4c2fed66dae9d90fd05d3571906dd5d5f62199c51a286ba84a8345b93769581ea61b5f21960590d0edfd9ef16c3794ae5d0dc8c2071e59e8777ad65ec1add7aa30e2588edc01ac93d9a1191afbf442f1d52a51c6028eb2e5044374a87b56917480032c9c34e30791d46666a47e8148e113171f171996d32c659c8ded6d488e1f5a3e4ea3c3cf75e7a288933a147793b90df2a50a6c4a2c1642aee258e4e42a929c3908f529369c45632505d9096fb998fc0699cb33d17091cfe2b9ca604621e228837a0191d80c9a02ed69911a8c6cb29e17b32afd87c8c1d8e6035b81ab6be21f2ab754e32c8cb4cb2296656d78aafc3fb2145ae9349adba82a71858b6d580011978c7e8edbfd001be270fe6f54ce188d6a367d0717d6e95f9392c4f8c166cc008e610613697c3143418df73b7109bc355817befa035b9e54d6e7e99e4fc4cacad9d51918d2861c88d1f0743621fa3325f2bfe3c69b3e2ed494af2b5e67cc693c86946a524883caf74011911c6c05a6fb35d5fbb7d2d9c16948a292ee088a476a05cc00672904eaf2d4c753c074d6f788dc0c237c626f6180ba79372cc0673f0e68668487e69e6b290bf42d2c26dfabf7fa97189eb268cdf5a3b6ccc902d2d1b93f138b3dce72b52d74d3ca01174dfce6c932de262a80d77077e1d980347eb8e6ed11bcf3857f280a5004b60dc0afae4ffcf6e09a254f9ab09c406fa498274fdfd2ab6a5e4787c4fb1187c452a6275fede9b0791b6ca7e63d5544f7530f21771a3c8f1b844efe9abbc6d6dd9cd2b8942e2ebe04c257fbb2a270c31e162dd3cd7c8cc8055bc56f7483dad9e60dd75f424b94d4898babd782c65a528fe724f4b5a98da91ca7f4e2d8cfc74591e65d07edc9a5778a7b50a6bd03acba17520039edbb2143086cf5198d64ea8cc8566c73ff4dafee58e842eb5d86fcb577d94ec9aea9fab9d38950c536b90581f7ea43ed766538db43890f0609c60637a7252277efe661d89c6fdc763df344ffaa1cfa456c1814c2891670ec9927dd4760973d438562b6c914f575fed0560dc3052e8380996af9fdaa9c269007f4434a7a983fecca4350477cc4359afca2bf039f0292fb168e54722ff17b3c969cbccf92dacf60662ae3c4b7cdd33d8b00489a52ced00e76f99a9c73d9dfc3a6ce81568522bbb040c453a929fc0d121b4f8f5629f4b5b833893be608669e9e6e1ae657b19e4170fa360cbebcaa0feb9d1f50ec356735114bacb59c00e32b4bd2bb5454958183c66cc647206c06dc20f39cc677152c7e6798f530712abd33e8d089b5a43ebd755a81c713637b5d1704f4ccd2cbea065c70b89cd27d9112782288810069a2e62906beb64b327aa7e91dfbb2388a93befafa2c04e0aa264b8d5caf22c7d17c9a618dc94828b5da96fb7b83b78a4717e7819d03a2659fedc9a40c7cf7839106dc1b79b16aa179855c0ccb396101417934647344ab95afffaa1af24186afcc8d4bc107a5d122b625f5373df54d3d9817dadcccfd170036de062540cd82e1524e16fd233549064e3559a24b34f9a1cc123b0f46b94d68eb08edd6f4851ecac220dff5ce9a4a0cc1d8abe03b3c01a36e180882211a57c8399d4e1f4b968b37417eaf1403d20b887a8d4d692a848d11f9141ff442ef16354620c5927ef1e17d4c169b9c2a31326fd4226ca054c0b092d8da5da1f95375d38b686198d63b4d3001639570de545384eedadfe98f9ea514ce48005ffc3925ef12b9561b5f6998c5f141b72446351e6d1138ff27c1c98b4a827899f63336146f4e180a2603fc17de632c827b826e0ccf16f23edb6d364675f6dbabb4427849c67da98b5684f5766af74724cca49ccf7071a3edba5a75bc5ac1f13706bdbc85fb85777b28e842022a3d46e4eed77800c1c31b58b6c355f7ccc71288354809a505c410666e0f3edf242991fce115e27b3e8f617ea349043525f78d48835cb641057cb8fc142d6b088281ecc801e53696d2edc43b4720362e8ff6e2e6a8bc3c11124ecca862c36fa6d49940c8eb24fe7d644635d39fe1cce944041afea67503f3ae76ad321ecd388b94c685cfc6178663d55dd85230e02c3d844a31ce3a21a05007800e622163908108dccb90a172ba0c7ce499870745b8a47201dabcde86594914906b1cf9283726ecf4ac11a188eb39915d77e0033b7d9efd6ff7f38123157bedba7ef8f1a753521ffb6e9fc10432d272d0f2f739a32392f08504d5afcb0b713e8ae116a5eaf5b71433907482f8364daf633e04e6b6963866770cdace14b52b94b93be4b0f652b532369dff3827da3b3679dc2e2fdda8acc689bb616f1a79e958a6b471bfca04e44979bc00eec7dabf3e887c8593bf832a570bdec8f9b2f48d8765e8c0028201e4d7aab9e15dba1cc93b904aa3b173f196d6b9ee9d669553c1d7d6f870a13520bca0d8d7110de22539a072887536ed3348f7545dff68853509a09dddeab0076ecdd38345b68877ac47e016115cc3017492104096d8d135fa12fff8b88acb9ed6eeff41a2dbf1f61e9eaa55373a53be015788cf8cf19c5e1a53ac1a65cae6dca1d20e7b31810984be5b38d3bd512caeef74496dfc991eaca21f7619bd0837f6d70a52f01fe4cee058ca6a38050cc06ae81fed7908297dda7861d0cd358e08e601e3f12c93dae3502114f84546facda666160e68b8a6eab831f83450b2a2dead3e68ac5cf71c6aed9217d9080a58bf041442e2f2e274bb2fb8cd9d03512e89369999305a626420a75ef6b880ac253cf8b1443348715306e3c2d7adcef84248012d7d56244b10ac5244fb3760e2f14d67e837a6318961c8d65708d83c8ae9f27ac0e2644ae897cd9107270ac4b20f4e2541c09af89549b59840c05d413a60241ca8ccdc6856a1c3816cb311f769cdddf68ac3476a667f520c0d077bd28b7f893a7e39f182aaae101b0e8b3e56cc0e1bbd146be851dd6281462d4787e551914a83dc0de3c911742dc71fa748fa1a7fd321b9eeaf337bb84f7e0b54d3cfbf23a6b3b94eb40dcb25202bf4fe441df1df311d277e2899b55222e5fb8d8f186d2939053749cb3bd354ef59f7884ce5cbf34284906f1c07ead0e7bf7b42973876bc224bbdba2659d1332ca347c8406798f7f71c7b8dcef6d687ed8d6703a8ac68736faf6663e00c9b44331d2d62a6ee36b976714b5ade5eba5dbe3ea2cfe68320b0e99913eec1c1bf1110d5f72770a8b12a2422746874522810210648757150e0a63c82a461eb83a4bad4b4c618889509a3712b53f11cd44f91578fe365da217a706c4852a1ea8e485086076a0856103bc4e485ad2df9148639c8dfce4aa9d629172773fe9f7958148ac37f9a76e76ea8fee60ca700cc8da90a1873113e0a847f80f2455dddb0f4103946af2fdec38218b7b639d91b82699ea9a57eed860c3451643ef007ec9be7a16b6a793da6ae05c211df7bbbf6844cbae2a3a4ab3edfa648af31457f4c153adf1d26395ddb1d05789c699496e889d25a217be750b9d0d4a1c2cbdf32bb0a39ddd1880cff85549c7bc9c636496cb66ca7017327d1ad6dff324e41b5158c8ff7eb0cb2124031e88d007d7b660dcfffadc0e39485df7f872dcd4c032f224d8ef69a335eeb8aaab2a948744e81688162ca789891fbccc7b336c478d5bcd475b8743820aefc72127e3bea67ada59a6c1d48536c21183e8286e2140f6b49f6029a3301333437eae4e8ea9523bcfb3466da04a6ee641d10f42183fdc4fddf4b3dc58669a307986ae1578b637f3c094260f30fe097c894a5cebf7381f17016f00ba2947fe06b33bdc15774b842567de63b9f075d76f9180e688409acee2b684516d344a4e9a2502546fd3d60d189c6c9cd09c2d09d13bf93f5e27495e3d3d2ef1ae9012fc276ee31b1e8b1b236c2b9b4cb7228202f81d334b36e722145e7cad5f8324eb73e3a26491c5fcb4240e1ae721ed9c5f82324b8200dc5e1c49a1ac1e0e781db03093452882ad5be712ed49ce1cb1c724420a6e340c5199d334b910f41f31749bca86f14b4cdbe6fecc032112263dca979c1bb372c0b22f34d8305417d64fd7209c6f1e37e403f2f7e0a62d5e49005eb19f96fbd2f6a26c385dfc5696d72bd2131e848ecd4592685d7b456b732de8617b87b809ff11a2525c5d633afe8b800ae721358c72506ea63db76353e25a8b5192bd0e8e2e2fcb48429a6aeed1aadcda97678c2f7b3a70f5b57721d9aba3272eed9dfb8c65e23e47dabe1e42caa466e78526ba7fff25fba5097d7b9b360af5947ac03565ef41020e7bde4c2a4943c2ca65d9197103bed317bee8f8f4dacc82729f9d20661e0aba5b0a766196547a58e62ae554bebf952c516ded1aa0d0962dd862c0f777043a06b369570f8c05301f6449f4c0f3184e6c4b3348d827fbf91a2082eddfbabbf4f634a2c3221360153d289c2cba831d3b46a6d720895944eb19c144a3975088ed654c7be4a325075f2630ddf45ae67b1692a4b28374c2522bd0dde9aca7b472d2358759a1587c511ffea7a295fcfc3ad04113d3bd982abc87349cf29a3abaecc6ca280bbbad02755ae4718e6758f8cf339d52144f7dd312a3de546fe7d97062bf4618633575ba3fb528be51a7904212dec613148b85fa49280b1850d12c602e9eccfab5f3f1c5f235f84dc56d5604027b6066fcf5644cfd85c87b54659d09a4780243cf11ca8e2b75623e420e61199f6dc5e2a4800c75406973fb2b046efc65a2938a08a1f492ee52a0e2f1d6f2a2e40c8cba2ad7c6fcd1a4ac14975600d080dede9bc08bf5dcf5863093d9fb77f5f8639b3b9cc450d3248739c219aa406791f347902d22ee2286d1f74b1f3bbe02770694628e96b097424cf4085640f48c51e6f7a7ce976eb925959d6a47bd4481d9f1192936efcd598c6762a5167ab64292a64ce2fff116fef6c95e841223efec3c7c9710c6e8d23a7005e4358f98511ac4dd38eca15d9ec10c761421f8c7c31fdc1bc3258c6992a46fb48e4a1019d477101de404c8aee2ac5df7a494bbbb283ba0e6714ea28a349d8f7ea12f6d438e1efea82949906013e3f624d2c9358c2c9dee4c399d8334d0247ee31b3e682817b3fa9f6bcb54ae7de5c4c9a07d92cd39cdc39553330a058655f73da6ed324a206ae5fd52bb5cf3757be887d2a1b86394f8d233a425fd22a9661ef87063512f37d68fce77ff6d5f1c8d5a0ec071c4a4a477a0a5bacda04af8baf21473977b90589c3a4dd3d4b053bd8db72fba73a0b1f204a671782e5c3fb8ad9151712d8600f839030ebbdd9ae4df5ae33be8a86a058741894e655059bce4556989dc76b9f4c1d91e94512b625c97eb114af8dbf8cbe02210cc967ae37b58a335f6d00d222824c027c5962b47b2d70129bde1b792110ce9c252a918117df2e271da0679739d04d04d8aee4c0915f58aa419034a796acb6b33c6ab5d7b952f5ee695c19ded23504a5cb6040589704c850273364839a93d05f1b837c281b174d5f07ec92f7a13851c5d96ed619dc3265cd0865712dce76795c5e6e009dfb53a7b5da55f5811b1850643594d6ac427ce7cd9178485b4d309626dee700ad7d779ec81dea7fc34075c4a64f92e73f751a70e28f07b4e111c00732d629f75709eb0e32705eafc98124c48102809ade7c43879ed33c43d9c6260002c67b57670be634168251cc55973989484d66b2e284168bbd90a70c4f92d16cf527231417917bcd3143b35f7c54fcfa78146aaa106c0bd6f5de29d04176222fb49a76ff13234050201ff36e7c8f2fb267991197313fafe534c19b3b45e3b842471c774f7f6ee6d7332f2d3a30e749abb725186f10fdfe9509d3098321152c86c79e3f687f1898dbeb3866a40571307041cce3d01919b530ef0def9ac492aed7f3daa2e7dac727fc07f7cab4e34d660e30a7abc34d72c6b4fa02a74de4563854bd7474faaa2a5f564e9249b26b1c4dc00231ebc2925cf06317e361e9d59bd280026f51f3c412f44f8f38da19aa838a58f8a35377221f27d651e1634284a33bad22268e0146cace89a6bf8355ebc66adf77bebb22343426142ea5dd89d7699fa3df0e9863217775999ff006bbe0a187e218895b6cfd4903c2eb1bd6e5276e58f7f18d244db18b927a4c0b0ef79b62d0b60eed3ce3654699203ed25351adfa0b83b6eb2c0d6593c15a744098575d3b887a710c993a8107f1dc54260c11d810af47218f2bda5806f629f70d0accbb85e6213fddf1f01060ca70fd59e86e3e57e6ad0079dd339efb3a1642c3b499209e8af077b969358204ba0dc255823d14e4a7fc248a781b812f699f6e64aa8548a67e76a9f7546862a0ab54bd462f775d33c351e0ff838dad30403a276b07dbb8e53ff27f20bef312b3224af31d178111c2a338a40a593582cf150ad88d30ee751b2f298b5252b06aae93d18fcf61293c6f42677c2964a2a01f386f65302e710a500ade85785ea9029debd0c7794f504ba2c0210f8e5542db54758bdabbc843509c5cd693b4758e6986fef0fc9cc4e6ee0848e9aed9a1f1c0788d096c1dd3bd16c80d0bfa073be685571d72fea8f12a1bb9307df5603bed00753d7149de4547f6def89f0e82584f8aa5ee6f32cdcb089681ce9a8b4ff6d7cda0ed1601961be13546a0b2cb2cd9c7c3ed3ec907de39390402b527831dc2e827b4f12faa10a9bb34beeeee71133e9283b3aabf8b5c8e02bdb2d4b10b3a14da2481f80ed285cc85d3de833cb0cd24efb12480a17d9823b589e2796f9c070bd5896324025161cbbf2c07cc926b58da6d850c09b830b70bbc2c5a6793342ae1f30b04f92aa15d93cd3cf57b0ce63aea5689efd62aca0e093ac84967a1a998acd637d1cfb3bdf68f8c3d0ca9845a8dab63511e024a6e921c30a37c8835e166cc1231c6114036407c7e28af7e086d2cc08539ff2f3e64eefd14ce6671d9a38b7f4aad62b393ddf1b0cf6f81e9e3bd33c5cedf70ebe5a25e9a78fc93155171835cecaa823fcc437e9435c9959b0f23a260d22b3e7117e5fc482579e25579a55fd0369756c82b1e8a4b89c82db2078a5efe28e8cf348ee05f4c2f1bbb9d97d4e7983b989252c19db999865aca270ba0ada661858f2c3bb371744d2dfff0c03b4e3c0c509e317a25d5f63957e04ef54a01e5c96df3bd242ff5437a8d7cd40b5090d8d26ce7c40c33911bda247f47ff613b9a61a3a36c7859c70638d32f5eb2e2c0de4faa3545cf5e7aa17b9c3167e94969fb3dd9e05db93b6ddfcc66268abd3533b01f55fe151365964ba5958fd419ebdfa565b3a611cb42bc349cd62a167b1058ca8d73c63e29056bd884583dce5743fb7d8069df6cbc7e66b1054895a0fce3679334a55b27ae638f81dc430044d13f55cc8da55f8b7e694b26b16c305478da3b07c66242910860200b9e14f2c74e8ddfd088c1ca2ee701d4f4e88b6b95beb1ee504ace4ae8be82d27ee3eb87b3e6f2a55d57ceab9726b2baca5836315acf7495d619d0c319984eff7d3baadc233b8dfd4ff31e45ff05cb808defc9f23d064d81622c3650535a70ce34370404cc6d36053291e5ff9bbb757090fe85abcff160914352aa823abc82ffa18f8bbe34fa5c50c905443fb7f38eb22883cbaf3c75a3f2d64f6ef9e727003acb9038653bf67d0b7ebd5ae72ea091d11d44ab22677605cebfcb227c86ea2d4bf42174583792b08a9640e9008ff31a630f7bd36fd180c879175ee5c8bb6f2d1ea5a5a5c85de1063d8e2270384d794f2ca62b39ce98a3478089ff2cf058b6d208ac71bf5312ced37f3df212ab0c1f491710a7f0f29ccdb658abd2f52a76cd90d90d19778e61ae8fe78aaa270380c1a5ba080387b56220f0e59e57843670a3a9cb3e0206faefd0956eedd6c191cb25dd95af78b3a97b94fd5d91490a47d0371c23a81b30236ca9f00fabc0f5449f7ddf8129c7c0b60c08eeb7b6d30ee7f80d414d7d6f52b15e354dc6355d9f0d4c8baad4b312622621e94e736247b5cc8554ebfcd9f466b86114de7a066ca7441485f66ba05791d35a8c571df27723b90cbfa5f8efd37e27fcd39c1030d5ea67b0681674e805129378c458572dc0fa1b01f7b7cf363b61a7fb4d4ce4ea55b60c18c0c3869bb83f910e9ee7f159bb4c4611bf991e64a178814660fdaffc8274cb5d2c31acf7090ad3ced9fbd1af0a6db63de4f12806fa8a0ffa4fdc43d0c8aa02e6c4ab61f387543b474953b82ff5aed7f7afdf67551c828f7f58bdf79c480a35323505e8a1b594ced9cc8596e27acbd569294afdc3b02cb0d6a6a5c1d095ef051ed2d6d947b03041b68580a5204e713c809b5b8d96ad0ab312883acac784ff27007ef7ddb42ca6d524b347a3735f698603d35d58e9393403d700bd17bf131ec28f32e0690c2f291c9752022ff960a33487bdaa31bf07f67448860c0a89e86a69c8fd12d772a2e734fea86620bb758fbecdb7ec3117370aa2e7db91b3371e0c2d36845681ddc7ea1c2ec58b8d79a264cc6e9c9146e06150c3f41fc97b9b6b964445fe79614178bcb8ad2a781b03e043b0404792c2b30d53eaaaa83713df2630267447ba8127ed49bd5a88d29b8ac25e0b4d215509a29648d8384b9ccfc0a224b7866412090c12545123e55115f1ca58b38c7a6df174cab7e522c05b2947afec6f029cb8f23b975a89e338db0c4a7e061ececfe1714413b3665b980391a03a3e8ee266b317a71263c3fb92aba193d5c163034fe9e5e83f71f0c47b88c3253737821053d7cdad0c7f1e82102c5a8a69e44ec0c73453641d155cd3511bf9509e9682382ce1092b81027beda2429dd6c830f5aa4c2b3ffa47f195fb7005671261c17ab242c20ddf22cb58ee145d3e4dfe90732c7383ab33f91624d980b8b06cb478554cd2f33fd7a1312f081264862d74e55358e385c354320bacd9c5eda3d807828dbbcf65d7d1beb0ea095f81899ef9152baac62a87b3935c40dbd30361a70ff1ca34257a31108a7d85f9abb6a331fb79a53b91322f787a5d972185fdb009829ca6f12ca5d8f7e37274b5dbab6ec9b899420b7d474e37e073c4858e804737ec6c228b45904a6116372a1d8446b0f375ceebce545217e6552560406e3261efd00667ad979b03c8fb136316ee89463547e649c768ebbbb796debf12de7a1b80bd2b9ec878f19512d3cc86b286521965c7d70175d8f87a500fcf3b2bd65b11cd8be0445e17e205e4343a23da874d4c3e17217927d67c0e9ff505996b256a74486370e3ff6366f5b8626c770b94d2320615e79af87bc546529d6ed62569f2d246412a0e6625890b7f96ad35eb0096d651b177b896ae28ed6a542e73c9465b4c2a89aa5a50201f5fae913c5cd46a201f6d4f8d5e609bff3653183f0cf51ea241da78abf30729c2acceb7e21354a687976f09d4ec51fba1a97a596cba2158f928b8776b87d4639f8d13ec2102045deb24803299a283faf5d8ff0f2b0ee54d3c977e22b51464dda6a6c5195bd94a15253f04adb3dfc1193174050d358e53fca9b69397de0bacf93cfedbf24afe59248cf5e5ff2f88d66ee2256f1c9a4897bc1571294b1fba99ea43558305b607647fca11f95701e6ede9c3f18c193c40e50fe2fa0183f0fde119a75001a3a54fb58b28eef0ff7104595c764f49bf324b983c10c761239b71c8a5820bc8cada67ed65f291b6395edd7b5b2f9d36568c88510584c3f129b3e6d281ad1b680901673100012f5443dffd51294396851c28ed50600f0d03e4696a7c3769fdf7284be4f555bd1122f80ae22ad6601838d2cd4f750115b5c5d39d6fc4e25add963ddb5f15eea9df4344e5fe95bcfd4ae9b5bfe8f0bfdc166af2f00aa64874e5c8d9624baa16ae2d677a37320075dd3b3293047b4b24a9c0c7ecea90690e4b1bc60a985e1dfdafb5b008fc9c2ffc468ce4f578abb42bfddfce4f2b070c04e1a3e320dcec47c0d350a5149aa2aa3b7766a70b34aabfbe7ad13be1c805de52161e777edc2a6eda973dfdd1e7f55ee50422699adab111cbcf7165472c4a92e89d576297e9fd078ba15d3e4dc8582d42b9ff6c2e6a2969e6cb84478df3ac99af96e8021642d0c952bdaad2797ba518220fda64205ee109995b75d4e51b5456dcaeb1d9c68028d1bf16e4df388ea78487b9a877622303ee11c78490f620f09e832e4bda556d04c696287e1305ec47eb2c37544a18dc332323969706dade785cde0b83e5e6e29400cb0ee7633433de81c6fd92a3f86666ffedc68701a310fd3c79391656b36db1ab0ef5cb87dc8b4e80252a952b232a0040318f967c728b97dc0fce6e46dad2caa691d38b8af10bb67a8a832d885ca7f031efb18daee846baa71a27d450ed073863635219ce457c9fd7f2ad5ef39870ba1924c09ff730f45fe5c85a04b10d2b8a37c799f2f14d63c3142b7887526948927b43856ee07ec6c553e74181503a9a343c1556a6f2f8cc2121aaa9ffeb1218787c7c20c67412ea0df0db274f6baddc4de84ebdd99b034b81d65be977b7395ccc62cc8538cc623f10a7f296efeb34f6a483e1102d9c2be5466430d0af932d06610aba6c3a18bd20b6712956aa9649ee47cd13ed0d6dd5187b12c6ada4bd5d4aa8a98874118719306cb5da664812d2e04d845799c5206758e16df5312675780408a1f2b0dd05bd168a220e8e840456c8cd24a984d0fabbe62cc957e7cfdee6e31165454110e8382ddc3a4a0be14f6a551a6c0f04c3129f1c24dbd73ed1970e424d1c809f2a00e3212bda63b6d1748aaa1cacbc6e47f9dfe84ce840d4ac86cdb89bb7754ff92bfdabe36a2d3f088d6f0f1e74ed75fa665ac061ed1e321cd95caa5c70346a82562fb0d0a441c6e709f90832077c16c2011c398becc4f50b06f8bd6bf198d91ddd74ae5cc8ffb283dce994323acdb36e1a348f692c295f5cb78c7c53d07e7b5f637eda69d903981d30640cbeb601129c3885b4b4b9895183f3f1b0ca250e1228017d8f1a6f5557b8ba519f7c53c61f8d65d084d5744bee5b62241e29b3314a02760848938adc19744577be39471c2e6b2cadc86eb5747242fbeb30e88b185e07d1661ff558f4a08eef236c60d861fe670acbdb65c8c76692b561402d1ccde6fa32bc3b169682f7f36d4f004b3f2e0fe4356e702611c5be6550fbf50489ba1eb7e3f387006c011d4ca957ecb339b5465a0435de61c633e8b9aa5f948a2b6f9a8e1d6cbc1e0b994fd360e1b6c75b6e16fdde057ad057c363abf9b22a78bfbdfd3bbcd2c2ee3b7f864c57ae02dec6991c362c27d68dfa5c8084526c14318641971c50d2b114ee2bd807979536e1309262d5f0f12050338a552d6ef26235abd5ac9f6f57edaa7e92ecfca83e7558f1e388a5ece01923b84b2d2e2c9f72fff6d4118e9a7de23cdf8500a77bdf389393603fc1e2bd3274c37465a783c3ce0061e18ab11459776437de88dd99258590a9f7e46b4eae7fabdc2d7901ffd1c468406922648edc8e09bd49f6a65200a7f0a0563b5647c4047fc43d926827aecb558d91ac256302bfcbd154e51ed9b1d3ac8ae9d1e492122d5aeab41d07baed59a6d7ae9ef821753bc0d900fcc5ec9d6bbfb05f390cc14a0d237ee81ce94dc74b485297e81299f3b2454de264dafbc57c4fe7ae8c6806799cb403438c945eb78d18f637a7ec3518c671a1cc2ea415f3f6c866e9b6b4bc5c79c56f09f79150f607f8cdd073a87564fc02c9da8d99973b87d5ebcfe0c6dff1bde028a232ec6e90ed3fc9121ef4ac42ac5e1a206a237983c74ff4f157a40bdc6f57b1f737b19211cb7f0ac9a43f3a6b26bfbacfb680daf80061bff258a75859d8d211fcc103a856223d40f7b3db92c2d0629d026f7d09bfeb702a13788e3e1c886f80e0b58edc4159add87a49b1e860e3702062281a3764958e8a9013b149ff315584da6683b5e5be46b4ddc7fe13c6afd990eee41b59c0f340388a422119325b70f21c04d08da9b4fbe74b454e89349f6339831bae347172544d62442648143fd7c3cd8af5a9991eb29e2c7b563b726faf08f0ff585ab42b7675c6c57c4dcfb622c49e19c000059319767f27b808bd52684e5d31954c8bf733956a6fb10ca81da9dd7067e2a1af42b7755482065aaa42441b55d987523b0f28d643a3f8d1c82611704ea5f1ca2fefff721d0dbc19d4b2b9af7e69d67f41bdbb24c12938a4936268e11fcb9bffb06e1cfc4bd7e81f781d7915401c15a6281ec9cab00136e8d7a1a1d832eea57fa4a4acb4f405980586c2eddc97563ff1350e350efcdd07f3ef1ab2be42bc3a3a0769fd4ad50231ce30cc4037f9530284bf3927d4bad0066c300ff0894be3b9a83402d9a4eb26daafe1261f68b8eaa911b81c3af4b6bd577180aee94bda8d82bde18d6f7b0f48d932369273aa874e6788d33365447152b0f78561a521f8f80ff53abb7456fd6538565810fb700ee460a04dc7e2475ae3d9741ac4177dbb29a650178b444699d0b58a3e60760e9a30f78707b859c675086e1df55e7ed0dd94ff04c8080d23c456ba706e5d64adc7eed06f809c00ba1c8ddbf5f3fd6dec2d92c62a60256afb9080df87d9479654b7e8f5a6e3ee0e8d757382d69ffba79670648fbc4b6f56775ea18f1258e02a41b8a25441fa39ae643976c7e246f10cb98d6ea866766cdc813619f65e015c384d515a85eabf73b7f692479a7024da0596e3da12ec03afb9838017cd9342e8ed91752f44e857f55570104d087e073b38f80fe0d9ee34e9f83c3258949e1ea196804b44e08ba710198dad8637383c3fe335e3fc5b0ec5442f265232a0f1306b780ca27f0c2aefa954184ae0d2923d5a1562b466ef18ac4de69b90210ac257c0aaa1c79990d3d56dd4b59f3831d17d2ed82568429ec1252606739ca411ad530c904225f60b4a259ac289b787b2c514f092e1702f74b2bf7e6933de3202eeb515879c0aed4d2a824263e5a86d0c9e9e6e9b25ddaf424f833e145ec0b8e7987c6465a2dd2aa66b2233293e6dd9f32710803196054b62f9e58d10db0fde1a27ed79360522df3a5c14628288bbf583cd3ab0708f113857baa16de717cf7e70a77f9c1ac31401a935b8d63d54be5b124ba816371c9f5bc39ce435f25fd1c166ada410bc29feabfc53eca80019111b1e4edce5cb7e925317be62405b652405b160b3e08bb176b537d6e5fc05df2f33df1169db91640c4471318f904bc28b919514dfc6a292bf497c63f7bb6c22603067b40719cbafb9c5c9c9930c090409faff01e48eda8d91a837f2150894d167551e7273cd8c7e006ed33a9c36f3667f7c9af88373198466d2018ab9588dfcc2e9f6f7333ff7b5f2dbdcfa88a3581bbcb4265cbd79cfc558725632de7a05cb1b518314aeee796e149db77d71d05e2b90b0486f90a5ddde8bd8f0ce8d74baa1ba1dcdc8afc15a4c9aaee9cfa97b57272aa1358cf92cd6d50e7c71acc02b562d50d9ac15666802186f5be9af3fad5aaef037552e112e1029a07305f35d0f7f009784dbd03083655302e3360575e5302ca99890630bfb4731a4e5c5d35c4e320e6d5508e5a2ca87815350e0727fd2ea9559e4505a6250b5ca9a4a482ef107f85120075d588fec25148eea7d41aea86ebea24fd1551efa12297702d196fa7a35c38ed07025a25eea0471580638ff379198e1f23bc468d895f5048d79689aea2ccd1288c3674f35d853226ff10c0c57bba9970b73cefc669ac2a93cf0a8d63527fc5ae8525508037097a486ebb6307b6ad59c5506f084a1d870eba35478c5ac3e76665bb76aa8c738686782495b6b7e471e214fe84efb59b00ea3781697605af0f45381ee54b7f080a5ec040a6d168c70fb4138905c2be8278b6984fe751b3becd7387072ffc5021d0d99332e15fd65ca73b460dd3d0a8bf5fd469a331faad631140a22c2c37d634c8c4943cd1459eae15dd4116d0d7201ab3529848272573662eaf2cb0156d27c687126b81b4413224f9cc85631624ae825c04fc0ef22ad7f175a9947f2007dd202b5f1a297b0ef600b636a37243b2e042a8a222cea68e21ecc1e9e1802171121af86ffddd1618ce788d17542ad9837f4fd7495fae091bd0e7afc3693df6524736011a09708ce6abc22f86a5b50c32ab342d03d3bc70e1777fc46e9e23b6761ed1d907508e65e4d0ffba72ff09ef9b890dcd07433bd083254d69ad7a14fc860d791626d51371bc89822cb64e0ee7bb2fd72e3a26177b04f268886836525a6dba6370f61763afc22eb198fcc1f4c258164aadac98bd6272d0592f3e8c66f027e867105dbc2e72c8f37403a1a752733de20def106c9919b9d1d52dfd706de3352534b61950b1dc42bb4cf844553e59a062b9ea0b5e7b2a72fd8f46aaf5ca7ce00a4aae33469bcdef3e425770a85115c06e19a3fda6b827f2d4b41e9a5289e93a7eeaf7758c02e710c1fcef00c6b69e1f93ddace83a42377d5b0d07d3a1a5b4396679604fd6c97f9ebc0ad38999085c3d942c1feec9eeed53a10daf719ccde6875b654a73b8a1de990c08ec53ed42103e22963314070123289170250b6951e3504ebb76d31091953f9c8e572864025f43029c32a201970317560f1cfc87d8ae5989aab9ba384fde78afdfb3bb6b969734f49d5b030771b71d4dc9df02b5d82b8262fe0c23b5a302334c01e77d78fcc12deb31a5677501d8a8f096747696926d0ca9def47a3f64a77ca581fe0ec5218677cec7742353c4448e085a6ba215302cd5d995e875e2105e2bccf40fa87485508033f502d9fbc5807c98cdb4ae49ef3e277939507b39818b76c0d0d90d7a0cf933be3a9a14bd284149aa43972083c3011ca376dfa27f72353b5089441f065ffcaf122a6a383c54637ad17e5fa16dd08b9eef232e51b1cadc783044914c35c3c6d9512fce7a1fc0b4363277fa703c01c1460ff79ae3d59e0314f2394e790de57b95958eed98937539cb5cb11a40330f74b0750d6747e1d2452298accdce3e134e91548cf4f8c211ffad2db520fd2445fc55518cb53113a6ec02606cc8a50aeee6cbe22cfc36479387212fb722b9581e40d0c8ad499441ac2411b88c4de484087c0d9896d0ed85b62cabb51e14f3672a063832bd48fa3e5c51113b2e9c7fe996b7ac071ef19c715551f86b3958b2cc321c5e9ae36b794a4b01f959a20d11f208800a8fe2d0ba9dd99efead7b4f03facb1acea1abd506f42aba131bb156478c074cfb0aa249b60c26dccc837ccafbbb6363bdb15d13e1693d693bc0433cdea341203278bef9c267f953af45035b2ca2fdc7d571435d9940bd85337f284c0085cab3d75efe8b6c4e297f406adce638b3570161b393b56ad0e3ba0ea61971f66b0eff453d0d122765edf8b7a44d86faa0e5e4e2a19470e5e1454fe859004189864ddc43fc11a623f77c64420d6b18fc3cbed313626642810c785569ec5e81ad8ebcb5358f51256febdb8aaad83bc98303d161de051890d1df91af0dbd7f81442aba6af402c7d9de14fed59a29fb821a113744e211dae580fea1b760c4e1766ce5a86be9b318371d47e98a7501bfcc0cb7d9fa2f345cea15e88c112ea7c7197768566e292fde1b1cefe43695981a94dae75b00215efcd2fa6b7edadec5c6a4026b4b3b0716d9530760d4ce6f457f5c4c0fd8d99f463e2cc66700dbabeb481fdc74c998d21a2e1090277761058b08dfccf49fdd4682d10bc56ccba82563103ad2fe92dfafe8cbdc8bfde4fcb63649c623af49448572ca5ae0eed46cbe4d961c6288f3fc73675fa1098bf78359319a319319d457400ff155f46cad0a4d00c7131e2e75569f80887132c90339c28b8c9d649dd52971fca5c697bd5d48feb9018677e1abd5096445b82d0f7996dff2ad83db9c6c3e72b0b645bcae810943161d5c0db444e0226c29bf1be34124d983c70e6a5951e15e7b9519ea328b57ff4e1eddb4b8f3fc69eb3b6ff8e3852754cd88717380ff439a81da4e39493b461db4f9bf8b8beb1dccc7955e11e64acc636087ce7cbdab5953ba68fbeab1ab81bb74e9350583d28b3755a4d07d3374747c041de97360db947b146d5da1258eae7402d330cedbe11d626f3ec969c042c9936f2a8cf8d0d101ced0ab8dfafa229f7e03edb1392de8fb7cea8d967e14a324f7c5c4bc0759e0cef7c292b57ea95c799d37a966b61fccb541e8b8865988e53c69b399bb6d7bb7f477e647ee90c9409575ca7e88dfbb138e49562d38bbeb8c0358ba6c0e37fc6b6fa3653a27c17a142a52d6d779fd4044085f1f666918e167b919609a3e032a5d36537e98c7c2a40eeda65db79fa978aa7d1e2db43c8af0a91ac0764ac94869ecd39ea547b6ae9369119e5f733b018f3bd8a27beaebbf2fd201c677d80d353d5e5860039270232a15e776ae0d80eaccaccff43bf94a202baf78fbbe8c7b28fc191d4902d013634621c54a1031349857c88fc5b989a659a711a3cefa9506de42053a6aa01e6581eb3a17e0713caa98a5da0a7e454c69ad0bf107b65badee4c3b410d9c56dca3a87437bc219a841c681e187addc851c59a6156881bbfa73e24ef7893a5338235eaf61056548e5fdeb62ac5a58ce499ed8f8503aa72840547623703d5b1fe88b8b01056a21c3659f8b228656e18c8b782d6b796bc13e85606cda2cfe1e1eaa8cd753a5b9a5d35a8b655a4dc1ee5d2177bc19cfe9b45636ca3c18bf95f3470555e0adf1be224c72e0e4553ade3b55fb043b6f4934a5f485cd301caf910a3a4878588cb1b0c5746a7615c1d31e6ca8e6ca7a010aaf6ed29d4d4e00fb408e423479deb1ba5fb2e2aa55a6b7aa43740e9cf4b3135135927d77cbb2a7c2bc765d126ba3c928fef316b1c743d6a245d99aeefc1a4202c3c095ec4baf6bf021a4af41e276d954086a20dc5925189232354cd28567d06b8d1af6e29866ff8e55fc582e27aec63ba161d9231a5b83bc298d42ee952c8b4e43e499c8dbab24518fc50c46f0eb424f9633560983ba752bf9e343700f46005657f8130d43e2e533debbc6e106aa0d00c672cad170b71408c4dad7ab04f75a6f997facbeb4d12bcfe246a5d02546aabfd0e699a240681578246a16b4a9e97cb7aa58142b4e00ac3f3c1cc4768bb562d80083c5473e957eeb4f27a8362f03a744741b9b7a77c367587cc4809506c55668c8ba558439e721b01c296e568e2478b57380eebbc8ec9ebf6a82efc65fcecd91adf1f9ee44d0872826c8a36f56eacea90c709bac99a9b01d895d6dd3bc0dab42cfa7b992712faa987387c4a4d5b327a791d845811791fe338bdb5d76c745d7e61641ce98b1ad83a275a0ee009d699a0b8315e76539d7b8b0db85934a21da3ff4165fa266a5713e8f6b7de4aeede7863e58b6f424770b37c1efedfdfb8bd994c5cba309552fe9d49138408ed312f9f9b78a1456c67365e50dde2ec982910ecf0a4165e707760bf44dfb5f1556c1111c8a306910a34a8bfbb735390301c1c2fd53976ea677b35367e2a5420f0e6aca5df5cfc51581a9d9493adf2f53a7f7c5b10d403374b32a86225c9fcb3321f24ae4eba80c7293e3293f9bce1931709d7d546298526f5cefe0018b129c796fd5a03d6b0dc3bd2f597b912fae5c08068c0aa5dbff96bf8a477398d3b549b77777d66b06bb402734cf7e0ebddc3827c3a6525975aa3199ba167dd7d1a6a9d5aed08996f861dd393b06c4736ed232733e112126fd99715ba987c19bfedc85c1bbf4712fbd0874637d040f9b2ba71c392e9d4d60cec3ae27750d70ed7f884d5f3ce0fe875828739cb388b93531c53d3ab7452444562a2b15fb499613ed4f9a5ac326c43da743872d6ee48b758602098c71c9bfef5b6c3b89655ba2e955e9c9e62e936aed8fa2b8fe0fcaf96159d48c613511a3b2ce64390dc488b3db29f0112ba9fff6aee82c11d573167c98d61fc815fcbdb48cd2b512b6f68c0e427a400429846982ca7c56c64bbed7a967a23c417b7bb5626e66f6bd7fe7a7b4f6c85a50a1a3dd2d17f213cf2d9957fa76961208a06e5d40c8dcf599a30183544b10900bc75ff949db4b4c16d9d8aa4ab1b53c22c5a36a46e9d741e17c57e863b61643c007970a6748f83e252a1d8444e3d76b5e941b6cd05703e71a463efac8eb409735da7a8ee1b80449afaec5862c8cefb1a5db9a62649f58c6b5078cd32e0daef327fb50708a67c710dc169f424e439f325e726b1039996ba401aa440045f33f044a7f18ce00bde8b09f6bf3271169a22055c35b2137fee449de268af18c376696b2f93cfbb5f6e1f84d0929ff75b523ec513a0643c23d57202c31b059ee2aaf362f7aa3255ddead9aa4514718183111b7621bdd0d6216ba5bc8ea3a736df2e89f9e4877f572fb8645d62eed1df0816f0b7643b7a4a27899e359499125d50c7006c2386ece9e7948906ebf31c4dfc52b6ff1404081ebec203f9e39f3491475e3bcb5e8dcf99612133822cfe580b57b62cecb55e976ea3ffcd0b29923eefb7e50293e6f7469e7bb5f09a62f4f2a78671183b115485f798670e659424d655a757aad14850a8d16c4d3f4e81e4f1d6e074ea1c80d0d7d50660ebe7792da48930d2046e9b63b29ba5996870673f8c87bbfbb7827bc97ee17c0a3f9261a327a90c70744354d50ea6b0e20faf3d6ff91163bbeda45a73ec2d6cded4964ae4c4238bd1f14a0500dabd605ceb3e84207828c64c555f00531c2000e8b57697b6a5d1661f7b6a224e964e6000ea7c3d291b22961bb84030a5f6b02e2644826ebb0a907e1c6018d3f1b79e7a49d9ffb6377f84d3177d45b514a1a1124847887a3a59573eaacac8d88a22eeb2a7b59cad8dfb05a73e852e94c6f0e1cb9f931c4b59fb794aab21af4013f2c3ee1f1fcd308c67d8861687f5ea8d58c62f89a7cfd3c778bee13df08f8dc5e35946c2c257d6553bbeaa70c1ff5dab0d4b8929393f68b5285d2834e4e4f13c5342f6c7d99915679de112e1fe06ed180220d51f89197b5d9ac119639d8400adb83a63da630a80e7e01274b7661d717a075a1be9afb0794fadd7956e390588cf0f85ddccf2f06dabc0c30779370590ae8d644934819f8ea704ba129da1ab69d2757ebf591cfb5b415b43309896fdb78816e85fb46b913d6b157faa9e16cc3f9838c000d7dba9da149cccd660ef4dd50af781d23d5ba6ca0736af209cddf04a07f476680831a5e15a2dacc31bc5b6fbc6a8986a500b9bf4e044023b167362ffaaec6bf29e6813d5865211f0b17a23ba0b2485f868b8e27b1cd56b296cedc15c9055295315987765dbae72b0ac36411e922c9d65a12c8c70b1331b5fa510dbd117e65e83e7d2317403e2fcd18b0db8eb3a06427f01c014e57c9e209fdbd1ba7c47e324afd3b8acc01cac3cbe1980bf94e77816c6b2cfc6c186a615c9682b6be81a3ab7331513e3ed34c1f10973bfa290aeabc2f31dd639fdc38215f7e3f151b081e305c4248cb3c8a89ccf7ebfacedfde3423a4e4b5f6f816ce94ed684f17bd61ea23c1704abe710200cded44a03b698a5a4dafee54d5d296b058aa32ad6715b1d2beaa66b2c75d20146eb7e7bbb234a8c37c2cc4ca9ff4c10eb3bd08f3f5cf33ae7a73a2c3653096d8557cec7eda7f1123b8af74124ed832073f3957758163415fde127e3f40e0e5533848a58010da257d90c9d55658e8307ff2a47af0d273abb3a0501c4271a898c47c7d6926ef14c9b0294e36f7c8da3915c94a38a6305e0d4ffc8757261a4e62257d0fe8aba11ca971dee9bb62e4509659aa2da5088d74becaa357917d4b64fb0ddd2f191a1dda028c4475121468b8fa77319525dd0479d9ae2a76e169fc5a80fad5b0db5372f721716b7a5aae361b302bf2770cedbff2e8337c7ef7224fc0ab9e6efae8b9a8c09ae516ddc2649f9142428dd4cdb141d1dde95d97444fa67e532f9ff33058d642df8c9d1e39f8fa4ee52ae1581d6ff3501d3acb37d86285e6a15fe0202aca08e08b7a9c8ce47b535db4af43916bd6f58843e51372b631aad838a26f48eb236685fe7d38c01a409ab380fed78e9ce905ae4d8952b37a96fe068f4b39591fc0c2e0e15be12a2717717b1d82a2f2a068e21a19bfd2b380c51147bdd80daee8e932389e4fa4e31d5a5cc8ab4199e07417523fcb2265c01b22a74321940b36e27de5c1ad7003e541a43073ae67457d29ad78683a2b5f4281f7dd62df7cc7199dcc7e2b06722f88d2e040e1fb8d0fc851e316b077d20f648bc7aec50bfc1eaf6a263a14af9ae3180ae4912a0a2183c1a79ef8f47e0d8d16c81cd72b4932c6704100ec3f4fc3044f656a8c41c98ce2230c076d4112116acbf3e0fe5e81f795ac1c6d790548281d247886954a7eb096d08bddeacdd1120cda828d02230ded590c2d3a680b456f8e46a437497cbbdc0e93b2603b8cd2a44e2cde007354a2605e6bca63bd927d351c6ad787b63cd7eb869f17efe003c8f86cd1dd2958607ca4a6222530dacdc45668afe01ebf63ebe70973e66008c93da9bd051dc47e539c7b98e6c820e9412b3a10d3640c07120f23afd3c5351f1e3297242d42d4e57f1c052e2eda38479e2a894f0f7ba72544588e81d734b34d9efddbdd7821da5844691f2ec44d293b41818e00d1709ec833f727a47c0a7b5cf54b96d98e181d90f041aa9bdf18c85974c4d1082522a3b172d969be7c1aa9a7fa07fa8582b31d6c4d3c36823d34e2375801c940f0c626a78e0f17220e04d5acfdfb61df1bc91904607d74503574aef7867a74cb6250f8988fcc817641dbdb8cb53acd8691f90820f80749162724b0acfca6dcf1f6d488b5256da53b749e203ef531c23fb8532d3a395062ca598ce060b15c7470e23b79f16b257a0bcabec7ad9b59c2c8cb042858c5f16b4bea066338c6c9591b82db5aa9359f04065d738a64d129591784a0c6997c25c053124066c27fddd487dc84c2cf204f319ad110be883376c923c6744418cc96ecaeca027dcc1101d129965b07f32e43a2213f6ab231933a00ea7d7c89b04017bba134bc666e26c1345285f213787a9a5fec13381c3189277e97eea0e669be409cac4bdda656a4558a4694b3cecdeb55cc72e9de47244009c68a646564b13cc17b1968423bfa51066dc1596125865e5fe568caef895e7331be8dc9bf90a772e63d195da65e2716c715235ce292c644f6f9374f058dba4757adea1da8a1a90442b8ec3f60d0661f3820f2eba9f3560c259b40d58372344be16b16f064ee6dc673d5f0ca18e0139d05492ffecb89c8ad114614639c95eda20009062acce26e6ac5919f3a07ea2aa8d3417f3148b84abcb85d99c036ab738960ab398c4ac39493c49c3c0ef486d40bceb859c98fa815fc1ebfb93473655df29ac4ed59e964d6b26ff61322ea179982cc9a48a7e53755d0be38cba348c15bd6fedeed883d27ddd74b5247cf0a7872ed9d7b7325e870881d845dd6d13baeac241452b1fc7adb3cb5ab0fcf0adc2e46c097f1a337280f0ffa98f892b20b2b968b2b2324b8d3aa0addee01350c2d29f5a685d94464ac9370b3f2768e94adf34b9069b390192d46aca09d3a27eac4801184c93c89081b8c09ae1e28cbbb5e28ee63534b5a9eb23d6d31d542cbde49b42d0d98034cbf67a651bb357f94e03470f6d82763450e0aa8e719f0f22cda5521fdde9beb7579997fb0654d2dc97ef606ee81f788cf2a3eeb6ab78b1230cdd7b2df211a94dec9b393b765c7759fe74091e493162250d22a6ce36992b3203184eacc9fe7fc6aaad3b27bc22dada6aa65f4bad03cc4e1e3e637d8801e1574db9b1a48090497585ef342ae3065bd8978204fa1bfad5130a62c324cbb2bc7654321e6c874cc7e88bb3567f9b7f82a7c6176148395debff029c20ffa0b540a5b65a4cf2fe74c9c85b5dd00c331ff6253c3b5c4e593863d68d6323cc25a162ce46d6e451a43528794d2d6791cfa32fdea9ed5e66a8956b0b51daa9631c969345eacc3df1420ab9292083292cf650484c204c4e4b0eb4e6417629fe9c450fc0e967421f6720fc0d2e64e78372815e3613a93d8b7f98ce4c5723ad50268a36c211d0774af809b6afd4abf6a4a3fdf633b65507bf77faa0f1b7b87d259e31d8efa30a326a5c06c65862b65f555ce14a80d4ff4182f5058cac318dceabb3d9a476ecc64d15d527182b0d7ff1fa965f7dceb84dfdfab25472864818a8be6272d69eaf2012f13ac386543f2be8d10cc8f3128d9a4a098ba444ff04791cc9a97803c8af96dd3dece176496b407c2840cf7920a477968bea80105a4bcaa52f5fce9bec483420065f215688336fb9a895ddd459c99271f32d178924ac045e9588c010ca3ecd9d9556dd27254c22fd8eac49b48df40d1acc334c3fc2d21a55b22f4a3520da29ea359c7c8f3c002642328b292ff10c122c8f55a8ff5b7cc5bbd463906da5d44d6bad15ad5766568727c1f2dca118625281c9709a4616facb21d80f508dae00cb9b57985ae6b89dccf95a518eda83c677dbb35686af37e8dc3e3a3555ab2f70b3eeaf6459c93f71183f5b211c6c3af3992620c9e8bdf428bba721d4dd7404e11cc018ccd47ebf35efa52f2e574895ba00dc2726e7f9132dbc05ae941c445d6bdcfe17418280f84216fc062124eed173f39a043be01a5d39b6efd976a369dc9a4add2ea64155cb22cf3d1ec6c6d2a982b66317d593e2741d18ad8915226aa648177e92cfcc404d373661fa518dd4ecb216a16cd534e5641f7f65607494a4f7d4e4f7251809ffd337947276f63a7c9912cb1fdfbe8fe78321471b26b75d5e0bbdd913c1a2b900b4f4eefba451bf42c716e0f993591e525cd96f7d143759a4b018c5afc6f500b2c7237716c2138522fe04aea9817a07388826772ad77e15005863af969f456f0755f277af7576094e40dd820d710968e51694888ff62af985132fae4ec88da3c4cce8af6f4bc77e7ceb5e9025af0cc384d9626b9654bfba7b77ce8e4082f7f7f5dd0c7d3a2a384c8034a14a2ff6719b8e7e8176e16c1996813dcb6446111251995551bf02565970c143a230a4970ff009104c9a499b1b011d86921e2782c00a143c1dce60b4504d53a032f185bbee9000901b464ab9fe33bf8ef294b36b2c97902d988b5b065ee5d7dd33734df43b0cbed5289c37cf1d87c132d081698a77861f4ed3cf5ca1b28789d152690eb3a8acf702a4d2b109fd0ef7f0a83b8894d37db35ac064ec876e8de9f78700434f0f55c85c010bdea22e554b5e3fcbd167b6e0e372d19bc3c960e8c5c6b27b04e5b155525eae8fcaa18a4da2e48bf075f0159d062ec65e8e2248929b3dd1b7efcf414a3051134a929fa811d4f1b2122d1b1aa0ba94035c524b34715d6433e6634e494d21b5d086b183c9cd64a0555e085de7f2ec38e4551657c58ff63b013fb3637df5a2a9090b4d07054ed0056eee1aa965f909e004f40a145b7b3748bc76d2be17127c187f89a349d7a7ebcb68ccc02747899f0278e4527184ac1c5f955631f5f8af6a22d7005bbffccc4afb74d4df52d0d4a41e2feb72c43db4987a08e99b9b2b7f0379b2bbd1a71a9f575f41a53d9035024cc8d0cd000172703dd07621a505118621b315557d28fc601f32fa54b561f10c6558876498ee93249350f63f3b7b3a39a3962c911d92d0e53fed22ed4f95fb2d4330a2ed4dee3f02e7a122160a8a7769dcc1b284cc75b22bb98281558001403c5d0283a2e5516167a280ce5eb64ea8067f8496508527c362b1a2776e780df1c3ec911c048fb91a5835cf6d9228b25d75ba43642aab6dcfb0b7e607e6f29032c33f42c235fd8ba7a0a052f3d197f166e73df63c768298b3bb0cfe215f47496c762a9461edf41bc2c7a5109343af8e47891f625874c53d1d964e85e6e11ba6c261952556ff486147d706dc98a0737cf3333864ad2653da6bf2969b412be86a225672e83ed02fc014e9532ede61e89cddfe9560ba814b238f0e1f91291c02936dcb94b68e3a507d0fbc2fba666d732dceeaccc8a86d73d66bceddfdb21d51a0140f7e72d81979e70c819789dc72e7afa8a22dcc0101690f64474effb1becbe665b58562508e8d981ab888bf715d6ff1ce21c1b1a6ac734b32c4d6253788f99974486868c3da79c578ab4425b0f628b763b3e1cdaaa7fd415790df201030e4de358bedd750d95f5a15e0a1aff630b37138ca49e4516a2a8c5a24d02e1d938ef048179ec59cefd7e0475b1879b14cd305e9b7d67b9d45a9f3acd9b0214dcd9a78596086ff101231988e7f27b42dc40b7412007ff8b1e36f4168d328c6614582b3b79e978f8c519c78ae7a3956b0ad1e694023e535fc8e0ff72be82181f21414ab8552dc43a6ac941f607d5c88dc56386790a2154d7d278f73359f3b3578ac6dfa7c9c3221855f4b1186b90100a3032fe9c6f975556576102f7b6c66a854d19d5c4968e60efe70488b1421d5f74bfa9903dc4de74fc66090de06fc7ce620ef930cb3690c2386a03fcd667658e7ed93dc5840e442b3f65cde824e719fc38f3521069efda05464d05b3f29416018717e82b6c653720ae8a9599d25bf8d9f63b79c6f40434b14360d434512f74221ba3ca973ea68869dab298149a30d974bd31cace3f5f9c629e84c82f41ff8f87503befc09762d374863d78bf1da98bfdb84671e03642c8c42393bd005a540e097a10a6d4421b103e70a6cd0f02d1cf6b52a9755eba0368b3ed4e736d0eb7ad95044b7956103520e847cd7dd99c64ca489fd0b0796bcb55cad018568a007ce0a464fc08a3a5b15eee6576ecf72db1c245da35ac9c295f7b4589dc366ac57c9535e12fbb0f443dbb2ad4e9d210f74b128fbe6730d9b67e0377bf0f1d7761e0bd4957fab3975269bfaf3022ef8b5b2dfcea20111dfb7d56362ca0d2308b15387acc5f3bf77dbc6311edd100e0438204b0afe5bbe0b4de7c1855144651fe7d07c14660838726118bf335c4e54fe5edb073061d461ab2337d79ffdffdba01fa8cfcfcdd19c7b119805a19d593c4a42c915b5935e33e701913a55a81eb35b04c1f3d9959fc1855e883b0a837d54f250fb9d240f6238c047dfd794a6249376e244f432b787a63bd48aa120970380b06323811cd010865cd3cdf5dda34aedd5ce19da5a035dad02f39d785912f511bee3a8af342759eda57fa08f6252c6c493105a5ad98d97a11aa1a5e2165066ff7f134cef972058ddee1446414ebad6f3e390a145c9006858ad1355baf9eca9fc1d3265b2bd997e901eb4f59d44af0be9d274c3d0586eaca5426c7cc581ac87132a47efd8d22f74ce9ab28c56005b89c53b19b40fb81deeffff9a64411a49fd7db2df48d5bb62ec5884e4d4d2411fce9d665ff5e4c9baac61bd862b7000503959f44dc8e603aba20236af15e4f88799bd31b436b8bbb5f9d99ab99ad8143fdef3c8c14e743b9fa21c7916f3444134bcd739469af7d056dc8ae9a1c734d4d31b4df18d7d5f8fc2fe4b6a20ec91089d62492984044cc51945905c2b47808e6b14eb9a24f85e6f89868b0a4d84e0bf9576f4603030bcd7777d0474468607169cd9318daadffbdac38cbc9cc8a011d4ae443187dd685316a14b150e49ea86b2521b3567dcae088e2ccf685d5685d737f993f7560276eb8779e93961cb8553f569ab19397764756faea31c91734fb125c50e3abe6604d3114fcf827af1ab608918e7ebec1b8e9a3d2c9e66ac018b2bf895e861cae4e79fd68019df5b9201a4d002da4d5e099b9591b651e69094a5c1740cc5ba42b089e4629cc83de019be4da1e9ce444f9200865ea345a45ab8d4272b6426f0a015f51a17285f86fba68389e9aef2f1cd619978be7b7b01bfcd45743c941a8df28ccac21ec09ce71031db49dee2061f28f41c557c9a1631c440516365f688b275dac1970754679bed70a6a696c3787ee2198aeb218ff21149dc920e3d5032a0f2555dbf60a5c5cfaf057cd26f083e6d78f34b35558c293d56c93afb926826744960f28a667e1f5b5eb4069e4ebcef542cbcd8ee15248fd80b422f2748733fb96b0032d80eef71b714a04844ae26d70add99f22bd7eb20933a3ad2d9d64bedded8847de069b9265001e0ee5566fece2ce4775c9a41c17e8ef5f23334ef4c32c486b0bc7ddfcd539296515cb42db93ef0f2e7067623dd8457e0a1bfea2d573b7cc41390ba783bebfc0e27bb14f8932db6530e0abef4254e451442290492b3b674fe17237e974b61476a6776ab57149aa5eb4680f19301e2fa500253956940158ffb1223035179ece67385e08e9cfc964a585fedf0ed0cf3b5c8d670f0ddc4aa035cfe1c85582b9913ddb88318cd1f0893cdc98368cf84fdf85b617dae53a81f0cfd85a95d10073660c69db39de570b293fac098df54e989c0deea5a02b1eb435839aed7707daeada3c97b90733f44ffde862ad5074af812c35a6aff4f64362116621037c09561973274a973e6e297fb7c2a038e4bb29b3de0295538e531cb1170d85ddae63da568f1ce51fb4df2ac3f2901427c068d7216b1de2e81299f9a3d2e0493c4a9b71cdf9238e4369e81ce6cfa83c389cd5d1ea0eff3175acceab62562ff0c24788e258532f0c5bd4d89f303b705551edc9e6b323dd6a6480e8d5503afbfcbdc907f563b372bc4596d9bd5fa0e280fdb492157bea3df34d7289136b7dcfcdb9d6177c3f3792e76a8fddd0c9319a03b43b607066edae5ef306e373ea6543c3839325ac435fe33db720ac4002a8438a5b78c9aca34333da0e1b39ad6853d161ee48c97626c05f76e1bae90b4cc660c8cde2f572390baac34a933302ef8a366feed282ff005cfedf2f4ce36dbbb5657aa27e3cac6869df851bbba85175bee2f140b2df702ce86f8b0f3d4cc68ba2d967426c536742e6d8ebd89637c0caf54e4bf10b8c672ba95637cfd4ebaf0aa7938b40d5cc85e42376461ff96b0a642c311bc5c69be2f8a2fe0fa262542d2eba25e739ab2710dd291bad28d37f5bd7472c1349e2472a4378ccf1b08220b1257cbc5442a0bbf1d15a42d1a75e4f7f88b7b8fb1285b26a9350a7a97e8be2d54dddba309edd7aae0ad18b8cf08c6489668e1ec269dd1553eb72965cf2bc3e42b1dc390ec0d655ccee0132411ae3335d07257bdefaa3c91b94b2f89b13bcd5a01c215e1928ae47a855f967dd94a807f29f7fb610248430baabb89e4ac5c88329acd06c3f9877af239ba0583a0741d13f6e7e12bbe2b9e6b2ace5b8b1330f6750563380c05f0abc733ca82d55618eb38f417d01c19ec2abede3d99fe35225242428b595937fcf815eb4c78f0fcc8c777d2e4d4342f921b7ee66f4a47e48de0e8312a5fa3dc7934642441f9eda1578d07bb76c90ca1610c6e6b93561dae0548ee024a0b5ca886ef2b6ed0cef4ba9ed100831172da5907389f648696b161ace77446cfade5a02eccaba2b3efb7ceb5becca689e5db120a40e67ae543a74bbe75c2a675f6d0100807f5cfb9eb346543309d60b46e89fbb6f3693624007a851df80d0e8dd9c5d10bef4c794a91634c2b92797d5c806a1a12d95fbc4a9b49ad48e646d80dae0cf0fd40ce1db672cdba3b7ce54c107c37760515f9988e8031899e39112f7b76edcdfa4ee967f0071b7e4ca8825552fdebf95b2c7268f495ebddabdb536b2ff379855458305afe5166fb0abc2b34507968d3638abfba12018b9d74315ad59091d89c79d2af9cc869cdb4410fbd884513f91aa7c407723fec678dfd5859080bd3a6a7733eb56ed21d242014c3c63394fa78688a88ab33e27f13615f613dcc2c02732f6f16be17f404e79aa5182fdbc293a402f5569db0a66d9f1ed38a0cb275316a0f86040db55f17be456b6ea7200c82f7223f75c82f70dbe297c134fded03ca6fbb0d6a056d209f87e7de5e2a8816c7e6c7fea3cad143ce9190e0981a88e58e9888722a13580570805620d46067fd98b83cb0d8c9c543f49da4a0f9a580367a013005088880f6b92ed3afb22b9a16e9f8e0f786aae534ca35de43b582fb4de8e0dbbc791aeb637fbec69f79e910b3b1e3d1dc8cd9990fadf515a1a4f068ae391981b9423c602007c2703fd613de8f121d1731b1b6c637d02acee500dceb99e61d7adc016ded4882accfa8d618c307010746d390135803836000fa7f768da56b7cb031928e0a7dd8820b271c9d16e3dfd138e0b1d64662abc5d0c204d1b81559beb16ea1b4acf0e0e4b3a36d6240e93c0ffa148c634a5e624bf0c2cac799253de164426b52594e38bd161506f8c011f1803c5c83d79044b5ed0255ccaefaa65aff58f1322544bb983a17b706752f230c64da8ceebda6a8f9a42b231ec39ab6dc669cb2950936ceba7dd3517f8be4e543ab6a1b8a200b79eac8eefe63786a1312b7e3393cf04070b095c041994f93406227efc66cabf7a8547dfb9e6cb37aa47d6bb72397866670f05d509b0bc667d7fecc4135754ac31dcd79a73e3961f36535069a2eee2744e0cbbc53401ddb8edd4e4af76d8aaf62b54171c3ea57b6b2b02078f0fd0e287b1b9f9f2ac09a6d8be577a0a45cad74e1e9c22c65241589447df14115a3ffaa73ace06d6b8944f1e63c4170db13ab17838d49474ffed501f02704071315b5662357665bcb1987a7cff0c147db7e5e9e2d082cde00468e63cf2f3c9b76f25cb70a4055c931f5238b07d33869734d818e2b4f73c8b747568e3829c9822d180b2abed62e8b92479a0c109552d11f175746f3a1906f9eb1e5469abbdb8c5fe96e4587d57eb36a4cf8ab2153d2d76ce46cf8a0f69e01df53dccbf9023d7df46573d19e1bbb005d2bcb615d7c76ed31b03bf0913f4f3ed77bc2d92a35411196d8b015f837b4eaccd431c03a4327407c9400f90867d69503d461ce742d92e671a25becefbb83da1bc332365ee310b1aeb158b4036fb859070fc930a1100e34489da1bb2ffc7dfdf7d3d927fdc23827bf29a1826d649c52fe931ca5cc40a1feaff15e17ea9ec6d86a75d57a60763db8ea3ea23b369eaea977fc4783feff4aa8d74b55c0d890503053cf41b801667546d9f0a0486e3833676b792383b531204c7f84e78513ef25ca0af98e9b605edfbf2f7ad15e36b639deb28018466aede7523cc4ee072461591a1ce1c7a9436ff6c868e4019e72c695fcfc2fd9c718326dff293f71290c3db38d5146f6ae8ed2ff3b90cf4096b749d53a6080289b7fcdbee7b623fb021e774915dea69594b6be8c107a707c8556f846e4e017f5aab1c22e16c89afac35c3a98e41cae915d77083744d1be83dc81ce60bcc7e1b2db453e8fc09926d813aa8a538b9f665e4000a14f123c4161056b3a6d3c0458da19202f661a0ca910b4a1470c52138885f96a485e6d5d85aa80f37e83e44fb10bf1d6b14b3a526daefd1927b8e8fd7aa9cd66bc905ea13a02ece4c6bc79937c5ff315739902bb9c0af633d55744485795a86d393839374e15002126e568179b4d37ef24877b9744ae8984a063fed791b00d0a2ea7209a5f3d45dd8054e2f17655dd5614dc89b68229fb91f3b59c2d208d8a40ac3811658fd8d7b6799589aa8b7e9bcfc6cd0695897b08519041641836bafb15838ac4cafec0bf3f808e5a14f49a289ecc6d7ef30b6f42e2f723610f9aa966486819c9c1e0a3713677f35830be6928f8aecaaf6a0a87ef7b47556cde2ee638c42fa254a9fa0ea77f5fc4555ac2c4944d4d4accb1e4060a7b70385eaab71617e1486a61cf858e7d17b6a66a2994aa1996332272cf0df217876e89273dc9e487ef76f026ff4033ff3469db8782111f3c0e93d75b2f831ee5f65952983773feb57630c0c5fdabf4f01db533e94ef39c6e9da068fca1b0ae49bd5dbe23e4f4d041ead75ce6ae9c4dc61f5f8a2dbb02d6dfbe5fa0f79f8da32ee82d14d99fa9406ac48a969577a16b9fc5b952335a20ac0ad7b315497e40ed0ef5313fb8163301c58120d2b90f94bcc7c9ce9dd1297edcdf1d15c1fd60a5daca73be31079f09e48fbbdcba2f8ae34e9616971552e09575ef0255456f9ac15197b26e5836a27d6d33d77ff86b356912775507e967f708807c0aab0599e7b3e0b24395a0ea69e9b587a127c748a63454c1a076698fdb7eec88934860cf02e9eb8134893fc516370151d48b5d5fc3dc491de7892cc6fbcfdd4c192220f50409daa9c1d2d23adb465a66bbd43170923c89a6cf7b2339ad9ae5cb204b7cb3953d7353723fdf4aa2365a99a143760a7513e7747da5afae3cde83c62bee0ad5a8c1e84e428268b582928a4a52f183d31e0100b633a5ab09f6ff61633032ead20db9afa8d31e525fb8865fcaba22b35dc58d6249d2039e7db721df9a30521042fc5584259617acc433e88a177489ac139b684ce06d1249744ac65dd0366d5783dbaecf45202220983b71892b8d4877226c2a9db635702f20c20db1d4436fe3ec2632588159dbc4b692cf154003722084249d62f8689cb8f13c311503f3aa96f955b1e0764a8e6e772e4c17c1c34564388560e9a5fcef34fe89492f537e0fb45d7a9da1c159b89719b964a4e5a6d044a4ddca2a16efe0307d85e2d5f060c9dc5df83ff048b0a6a320529aa2c86c8abf617bdcf51a2ee042161959a27704405bf36c437755756a7043f1080d70f63e587bfbc44b0a41615eb5d03104839e5d9599d20bf601a44d61bf9d2de61fc1a24d74cc7b9545e72cc7892b8192e06a59d13669bb764f3a36b02d8dd2c0d2e8d2e952d1653cd7bd47f56cbfee1fdaef9e585ca7b8f9d88bc3bd456ae28f5562c27ca4b20665352b65199d786f7bc42886282c13577499d4d5a54d592f4258dd743a8297c889c23d1244a73e63adab4ca8a2d684bcd36a6961754b7bf2b6dbb14c3708e270bcde50a0b7317c181826f323c45f21bae6e1716976c9a25a382c4dae683921b3a0a1bdceeba4655c1c40bca451463118fbcf1936a3bd0fbfd677a996f196d6dc42a821b52c406288131ea53e22e6c09eb25b5ea90c922b704fdd696f4b6c9c3794d2eaf3d5b87ce518c53419607bd315c5e86354d5a294a3e88622b5c3fb8023196d07e42f4fccadd9b50d4cb050a7fbd67f049b2dd74372ae93ecf54dc5cf65f85cb15ce688a32496d26bd766d9d40420e97f4c796ed42c1fc975ff73848d8bb0c638410337a3d952ee00587836801cb65f18ed3b9c417646332ae9ac59a75342edb37fbd9bec20a420a668dd848ed670f15c165fda6c48fc831cc9ce0490fddfb80ff4da35033115395c5ffa978edb39f19d9824b0669b6a0ba30ea2209371060d7b82787cf3e8d6bfb34806a6b88627ddbbbc20866456d9ec3c47315313838e8c9dccfc37dd5c10beb9cf0069fefde9a66259133a426d6f9ef1f5169df98ba950d8e8509991672caaf32ee03f8c01e6fd31ab1b6e9e418c4ab435ee2300ae08d257e29ba18b56e0e751321f666b41b84a6eb241eb8bbbe511734338a85b4a263b8cc380adc76a605b26efa7d19023faad1c707929cfc46835d9c4b73e60d599301f19ac5a702bf0fe1a36c3cdde4400be21135981b2a689c0036d3603943dcad1b93661160ececa92c81f5392a3762f43411a1adb57672a155f9f0cd5725a7d7550816468595f257ea93215e0d400fc81b3a17d3e0ad1a09333be449f42d06bdb9df56e76694bc95b537e24de2ddaf025f66c231c03eb479fe549b5bf43174704e85fa06019764c3a0a8f79f8d68da03091b893013e277be3b9b07473d7b398ae2eec01c64e5db8eb337f40939c7603b2f32df12a22c08f3c83923efec209d7b5dd55dd35e03f9f9cad51ddc79d8f08fff27ca6d1c736182b64e1c5779937b15d07535fcac18d01f8a4692a8cb6fa64f2ae217ac021c1b39b7ea1a74bc96537e5e12e4eb31a87482c5c7e447cb932c6caf672e57f7cc43e21afb76bda6f67d943bc2587a812c6f5b643dac9fffe3da6bc40ecaa5f3ec691165ddf6eaf376f70954578fe4cce5d73fc6bfca75c5797c7fd00d09f3ed7eba7ffe464909e7c1f348527065451feff2799237770645f60c98c5e1ab806cf1c0b94d9a32c544692c3c8c4aea13192e929dfc1aff777bfe5a261506095b043d7a592d2e94916bf8cb60c24e65526bd22e56d67a6020ed5add2c46478a0c01609202e2e817913eb4fd115360b5607717515c03bb0eaad62373aa5398d1a5db4c7a56b695657a54c92e0e54339a913c1bb75cb998a7e0b07568a3f9d89f8b3000de97eb70ea87594c658d91935b35625adc6da3c59b3f9056ec58f3c209a15a539dd3b56fb593f1be85d8ac0c1349fd087a0a25225e616b00d25ab7eae19cdadb88375c4332e84d7d79c06473d56dd322b42ade2a8342c301575ecdf0debfa0ebbcad66c48e351717792933bb2f5d57c21507e428a9008e6e6a39451c74d5354fd083dc6d1f2a857123e627a2438b2f87ed4ac605d2df0dad7e3391164c685393ad473cc7367e2b034729690a592bde6e2f63072a0f872be7f93becf7b753445a0a1da2b2679e6d327c18997dce5bd74263d783891c4b18ea62507b06a1a3511f3dd3291a92d67c3a42a0683294738a2a5e057578ce82203779f62afdc5e4efe3129e7f0aa2a7544ec7383de674332d613b6138fb479a374683d662742da64bf2de90e2daaf02f60176d63acd1a45c3a9485770f2e91951be21937730c73d5c9fffe6ed1d8002449d533a8aedf98a3ca678fe479921f69a7b907333ccfa50bdcf011a24988bbac197406f77a01496d70a01b2cadf59f6514aedd9ac423f88256cbc2ac5f3c8a295cec43a5e9388dd88557403ead75d988ac1e4ac07aa74d5e38f258279114425a768aac0bb64d2f6996f744c537f6ba64785487c0fca4f22de1d21275ffcb9df58957366dcdaf5a8139338b82e102774ce8ef697aaa2a2a6bced97d20757d1ab21447573dfb64e4cdbafa5346f3bd17178b6d978dc32cc3a89ed8d1dfc6f2cfa2726c4c9b31b8ec5a05d11735d97afa7500cffe119ae6d45b56fa81c0ad9c62795ea7cd4969479f7cbae8b38a88969e31fcab870572992a60d6bf00fa8b83aa028c94a32462542769859d8805581c0cadf8644592b6b8ad5a96ebfeeacde725fd8d4a813f0048eeccba4eadf7c0724372aff3499547a1b7e4b5c5419b2cdf12c9cfdb09521ea426b9af78ab6231dd2724d2734a6677a91d62b9f906b11d4fb73af619d32b9f4560ae22192ec3cd7a48ad677c7fa2ab67f69ae9a37b61b610195f9cf640d52e44ec2d58e4feab81544678b12039522f0ed59ac3c7460230f2df759eb0c47f40d98f4609b14d9ba246c54a4add30eba99316061c884e8abf07ac67d83ff17d075b38bee8740288b61938756edfe237272a9ec2568211dc55c4a31e6632c0ed1caea8cadd21269a41c74f475d834eca163dfe97ff5cab6fdf1d0cc510e47463c6e05b5204393d8f5e8e9854031bfeb274946e0e6563bfae41b3337ee120a3c342c70084836e97c92f2695a6962cabf905644a2824d8c51773db836463dcd618359feb288c4783a5307816e7760e7bd8258004ef8cd37fc3b4c0347724059f9c861b9d4bc65321e6334d4f80e930731ffff2599d9cefcdc069ca5356c8ae1aacff4779c88d4c7237fc7e6dae5157ae87072a1ea4992f064ca04d046575e9962073dd9572ef8a4baf4fe443f6c730b681397015659b39fe9a74a4cd49da14b6770988651f022b6980f5c931f621238c1f4048c87c8e74e41c26624f93db99c62eaffe8ef0ba4a688722838cc6084e18fe9d27feb82a2891eba33cf3a8e3cb2ed226834c26bc4fb4da19d2a1c3ce033d510283e68d22ebbac0d430d2e4b63a83b8488acced608a7e0c2a081cc79062d7c1c65c3922416cd20cef5ca133e47e7c5d6445c0318f2203f79d39440160e201e99b6480d8542d214963f9a99de43ebdf6e0a86015e645a1faf8cbd5a870f0109f8badd17de6f8fc65580ceaab8e4ef3968e2ded191f171b0afa0196a9d089e4a2ebb68bb8e6692529998d992cf2578b3b33ec415320a15d41a2e208d1e78411d6a96c2f32615b1c2e83e9ecf7c6c8c21777edd698589b2c811a58f147b4e6a010caad931facfe6966172dbfc616ebcd5c120771f57f49ba4041ee92e2c7a580297fae056ffd2ad01c04b60f66aeddc6d473df9a91fbd038d29c858eb1cdf2cdfea2caec00318b88987aaf5c6fffc5da9feaf3bca510d709c6efabcf476fdb8ae4f63a4f8ea5a36e177ffe6bc84b359fec8b175510ede6440cc6e7fabd32aebb61251c6855f51d7a802825f8e5bda2b2b1c50677b50a8687890a9d3178acf3935e04ab7a95260af95c8f0d0b5fc340fe8327effd0684e769d4b6a738c1eda6a4ce51d133094d5379d693480479158ecaedb267d718a9526fed31a259ae18537c819b921a18be827a014eb04ca647f5aa116b047bd30a4d8ccc7036d6f8b10daa0413a3e1ba0496eaefe8047b4733fe6adff6ca5e2bad03568611ce04450df092ec544d4395e80917eb2fff2f3595342326583e2d42edc5d57d63ade005e9a83a470f0749193a2b1988000cc122ebd856089289dfb1421f71eef6ab82b994c8c6f61c8f9dc3985e18a972442b4a1f42a66e4791af408f06efaf65a3ddad0abcdcb4a26493f74f69441cdc8c8ef76e46e7ac486497360909228591a9179fcee1fc2f0f60823d505790b8431c9c4b3f919abca3972812ec660cff6429e9b65cef62a8987a967c77f7900bf00aa7b4107b9ec55fca3d99ee40ace90705373ad9817f48c7d42761739b8c97f564119349c074e433b89d2ef2f452f6f88986f20bc3f79a8ec20ecbf259ceda993fed1f63c366e219fc854835c73e4f1af4a8e1a1d0cc004475884ed0c330c2354654e3393f7ceecdcd3286c50675dd25a44cf7e7e84dbcfdbdcc4cfb7c7ec47277a6199869453ed5d6126ffe5f0d2928b3c86e1667caf9d3b2651a65fb95cce700d66ef03f2cbdfe9949f7cc56748af48614c4c8a4ab9dffdb3ec0e9fccb7125c85c045c653ce7823300f8f712b91cc5bdcf327e2a1c779178aeec7227ab14661a07a49bcc50a9bbf3a79f8dbd78f53165910268338ffadd020dac2626a768a6cb11af46ee01373087bcfe5ef33203beff510fdfd05123da70ae89cdc6f06d3480cfcfde89f7b6d71300c43bca84864dbe03fea41ddb2dcbdb465880b8b5354126c546f6b84a8215dc658a22f7a9d6ba15ac9dd8b463715ff884b95d819a9dd18fcd224c21ee96360032895cb7cb3e3ae91467e350822dc4ccbe2e5e1bc185260134c8bda1ee32f86f96b07f60a35acdd95b6b8604e7b7742b72afb4caa84dadca7c733cf9dff77a77235885fdc565e6a6fdfec455351323cf21ebb39b8ffc4f0ea7858eb78a92d4f1ef211052559dc33e2458e421c11b7eed6ee17bd9feacdf28269629fe539ecffceb7e03bdd0eb6cabe6c884d7dcc8325792e31c0fb4de22bba8cace26d42398258ee31b6979f318cb34540809cad6f4b7e8e3521acad76a13c5e53c4fb2efed9e7bb5583b57d8bcf5bc3e47c87d24706ae54f4a333568eb34ebf517a49560db33b2d49c3578a9c4bb1f138cbaa621231bb9bf93ce826480d8a72489a242a2145692dc1c4bddebf85957ba25042784a38a8b3fd4a312c2fb9cecb08a5fe8d25a6471f08321ba960c8666600fca2970a563da3de9a0058765db874e9f2b202049279be2ea1cec7a9aa242050991917e9b7bf339c65b8ad108a87308c8e2787455e306093cf7202c039b1f53c8bbd725bea4323b3ee7d657c9cc29bc119f637aa0e7c91b198933001583b3c08595fc3cc90a47276310a1ce5849fda5ab710b4cd4303ff37d9cde38aaf3a4a5102faea373509337631ff448d240fc5239cb7985fc17aeb113c6bfe1526aef027b71a7da709575f71c312d473f42872cb795440f92a405db5397b04ae71ce9c8972728e468b0759ee5d4e7a54707b86a65f55a4679a0d8a788bbca2941354c59e59f7b15a29ee88240de5125c0f65e1c6ed4988ad778a01241cf18f0ca7cb113e716160feea08825066698bc24a7e18705be2f1570a8ebf1a865e894ac81d99277c39b3b7239a8afec34498af4c849239d34de1276a1135f2c3f9a6d436a6062666cfd65b8488dec930cb43a31f0ef9043e64d02ac2ba9c069d60b20f6fa85c6876507c36aac2fea18c2017f4c63a73cdf96aa23824db7d040a1bbe2084eaab021034475031f9994ff45304418c8890469327693724fbbc42449d8ae1461ebeadcb87dffa6af2eea62096eaddd3d77465eb36d16089f1627240d2f94dcf5b7bf0ab2da175a1ddd62b6dfdabeadc9113e0c1f625ee3edb38b8e3d31e0fe470f1c355ee9016f3a6bfb4cc93b6d988500c91e0d43ef095737b121f849ef0195bd6245d188b0643691882a60dc1d1f084478566e1932463c4b50cec6cc3f5a1f323c651a5f34cbc9dad083e2aaa86d3ab34b1c74ac125961a4d5ff4d8169e6c481fa000dd5e8842f9dbc5d578adcab156fc4a76e114853fbfe9f066858ae64887827ee0ceba16a21584e51161f96cdcfa69d31548c8152fe354253f24071bf13a77ebe0957fde0a7f42f1180e4380af9a29e5b0669b8c3400e7cb8a61048ce3caf7aae44fbd3c5397f4358ee2de40d6d5d55b53ce8a7fb4d4a0e988f63fe3a789e51d7379c29ab1db8213ddb0465023c87ba4aec24a5605915043f70d6039c1c118e190643bce914eeb3e3dbc388c494430df5e1dd45ce1e6346eb352a4976b406131d147723addf06d28fa8efd297415322dcc329329aec589df6380ef97f02dad008cb3c1afdf6cec5aca90e7c69212671c4c76fc405458c2b1671928867f9eb6482dc413aaf79d0d3dc7657a5ed4bdeb27b99e9f01e1198eff9b6b9592bab669e2c89f061e9dca3a5b6b14a6eeba2c9407d045d0a5f5f8c3080ceed54d1bb713a2edcfb3e09914bce1e7405c4ba6e81e639dc9a6642fe4fc05086a48c164250713871e6c7e932fec44c5d1c5edddb1749afe084851a028d808d74328458524eace6fd6ca7c996e482d996c20d5a3476146b144a220f0f00693b93bdd0f18f486e48c52bf74a0e47877b04e60847077aafcc2e9a7ff0a42751ef8908f603866d8c0a80b5c20597f15e2e1c870ff6c19dee74b3019dc57c62003093c92b4880bb50381fdf4e532afcd83eb0501395883bf9c4fcfb1d9fc8f0d0355d1a38feb5261d5305346838cf5c7998333da0e5a50dac5de808f7a1a31b3c2601dfd5a3d248b2c96d523b8a664fde9720728c0a6a1bf18a1df84ea0f1e9f1a0e2c9f63d37cd100c237956a24b01e0bf1e48303539cddb176539fd3ce10f85464cb9890cfc353d7b795019404583114ee47fd3e08b22d7efc17e48b5de058afa3fbdc9e083d63dd9910d0921b22402a5264c30e100ca77ee101660d6c5e36aa62970cb784afc42b7b30b23f79813faa935229be1a8b1f0cee478ac6aa91e263f0d3b6e6f704f1ed5c329a8829c946ae9d398e8a36cc1dcd57e0142ab5c62242a0558f9dc05a11c38143e9effd1a3b8da1c31cb9eda2d66467486deb490ab78bed225ab27391341b11f183695b246a718dcc81fe62f9b20226cc3bbb7f678f96a85050e4b627d951737de79954f2e73f3844f42633d55316edd3fc8d74155527668e2e33b4647147b1a953949f83852609000caa1925a936b56a526bfd92db76f72cd53a668a50f2659d648a5d4e8c77df47b77001bc7e0f1bd602fb268816eab6573f696acf72882cffed0df7f71b13568afe70326b68ceb2b601afacab3e4d549abddf79266bda5636e4f9358de95bc86b96c6b34420b9d31ca689cd25e3a1dc6f7ea4cc28e1dcf11ebfec14f75febcbd0ac5905cb65de2d3b8424a7683c0a3739b09a77f05502e54bf1924faef65cd264d7f02858a4fe5c41a26fe307ced56705738d04dd034e97881fa1efaade56f51ccc22f041aa78cb9d5756d0cc5626860b084e4528f3eb582693ba3a94a6d28977477ecd919cfe80eb15516fe5040a1fe77c567f5d6d2857010193ff2762207dbc5e4aea702248e9ec17ae52caefd0cbe45b4d92f7e3a0f97b9e98ffb4e9ee80d9ea2de2a932e26d719c573a4bd9e537b4e355371a65a9138a819a88da0ddf6a2a76bc1fc0b08fbef3b3b087e0ece31637e92b8b7eddc37917f2137f400c9f12366a9d2307a6dd278cb168c94b86c3e1290bbf4acad4c3fe414663c6f066309c2b896cf9bf74e99de532cffc8050e719117bffaad8de6c311cc85049518aa241783620eaedca9802efefd90aaf016a13d3dc97631a65089c1c1dc463d3079a94a618340991a1da9209f6e8fec72ed5df7bedfae4277a396b99845e98c7405b3b67db220f251b17e4b4cc9455ca7ead1bf030efc0944c2132a3d55a6dec9592c0d2fb1bb1bab13b5fd3a450ea3523691130ee49d948157710040e9d0b0bdab7a63d557e911f735017ccb67c4a9146555935b792e07d8a5feda610eb60a745c8892214f562db971cb017d941e90ae31dbe4f2594e9acc1f2934647b1aafd155ef3821a7418b1332ab655e573a54e4b782aff8fe8221b19e738c45b01af3e05516408a7ce46ba7d9f659c1a1dc01d5e8890f8a013ca050bdfcf6f002e05c8b5bc0ddb0ae10489a2dd01c8fb38a9d816d4a2fba032582cca5d695882b2d176273bbc2fcf706686dac6686b88c06cb23d2ebc36515296c6c79abcb232e2ff6a205265f964774090e1d3ace56f17d1727bf7ae23380105f45d5f337978705af7cadbab5d306ab0a1d4cddd9bd674b1c1308a65281b94be4f1f31444ea3e6de9791318c3061b702e60495381d1673cdf4cfe568c9c31b5b5f724b5cdc5b1607e9a100153776ef231c16015e88270229b9ab240760839ec39c0bd9ed3c2e8805f7e2f21c19b7b70c0404d3110ca36b3edd5c8fd937a8c5b81a05b8cd6a437de503a49da5fc2e097d30ede752dbcaccfca44ee80c5b97685b635637a9a39f1204c218256b4a985432427717378decb8b183774dbf87e99b8a8034b340e109e0b0b19cd661a3c741901bfc282b346a7e2a3297d9644a5d8944a00d1066ec2c1f65f4e6b5dbf0353eaff5f38ed47f65a9bd22ca852a64f991e008c2b56446d71c174099010f1f9fe4fc69e99e33d9b0a75a46ee3ba627ac02eb4a47fc8de768fe956020f48eafcde58d8b6a9959ea04999f751a2691200afdd7701d457000148dc8da80291bf54a4affabd4ba84d7cfa79aeb941d3de5eaaf48c83acc41755adbf1ce121522627e4df63d8394533ffd3a3db12a26422d2d5d8403c37fb52eb8dde4db59267df44a653088dfeb508d074c0abcd1177229c937a4abc7a0d3bf5149da3dbcecdbbcde5e0e12aafe4941f45c10e08cb80a329ce5008e2023ffc98ae8c22cdb7142ed7cb7ecb15c91819fe6cb46bb84c6853e57e9303bfc45e8e74f6b66c7ac04f6da319c4bb2cbf9e8294bde98ee0eee283738342852638cbc67e14a877a7b860d4c715457d8fc86b91a267161c9d11fdd729b0da4fe0ecb8fa265bac4d5741a0832da86cd2be52fd2ae729acd2cc07595b39a97cc3ea03742866d77449fa6cd55140be02250424b9b836a2fa8cd33f4b564f7ddff6e5d7ce91839174b5b23842bfba50523d13d028ab8e177a7b57386543deee298e0c0298e087143692e45a220a137679f626e34be300d1756d5b66e7eb37a279d702ab937207571416e68b0be786622d3dce433479fece81e99b713c1c4dcd070da7d847c095c55fda81e972d40d385ad9c79abc1f23120bd69d57349d3ab3ea2dae121ede77495f895c0008da25ad848dcd36606077980581a65bf9c19babb1c14f87dba7b488d081001cf5fbcfaf7e77605b36d9c826619b007a0b313265e60079fb4878b8ceb66b7278f50f7671c218ed0c2e7b25ffd277cb92097de20547a0606c4bb3cb5d3338cad2791648c7c341058ce26e96c71e160bd805ce1415e77af6f1cc0d16f4c8046b9bbda6f129a0c067537a76017c6deac0267f2d5551ee5cd54f67b9a64058dd1ee2f2604fe1d10b844ac067fb53ad48203c8d922cb656270282acc3e6444685c3478af2038b3331c43c442b30b35fe3bac123c5cb069fdd35b333e85616ac451eb3b0c45802dfd936023a86f427903cb147e62bdafd06ccf0587fede0cace6574e997044b65f246487be86ba907c64d7fc484b5195074dd261f9cf356c4ac45419c758d3f4852e2a028df8e91078d83451deb4e39ec635cd4d62d0869e2e064b55627ee241522b26af42047a34bdaa5be97e9ccb6590bfb02a313337302861a5e15251e249e2376517e19850413d25b9719e9a1edc568d6a1c1b9e166af63f671a3e85cf40bb20ec0e4d6aaa6aaf29ea0b101b0771322e1d90375295c013fcdf31673251f59dd3c7fa8a9b167d668f5b8c38ee334236d79d3fb60458ad8c67fac668a846ec7d596539b55c075ceb9f18c337c9890e25e1d572d7009ad4f42cb6838181c257a39c422640a47b79def536653729cfd638bcbfd1a8f30794f62cfd7cda3111209ae280f70b267a98161628d90118a11d9ad3fc8628e8d01a78756413237def337ae9526f78cc07d317ce85c49f0442d955a5af1d78a8ec5d90b32bb7a5d3ef113ad236048c20cbe904f390d2151afc8f39c47e94a7fde37d6809999e84005c80a6d809639be1a0a17ef5d4c02356b8a505dd1fa65d78571812efb7cad4a424db51e5d61ed01f39fa8f33c16568b947ff9f0047efb78c41e28fc5aeb881ebe0b791b96bcbdff5af7a67a49f2f7a4bbc95c624ab6fe557254085e4e8846b956bb6b2d06510a90900b88326256cd073e1e4629c32fea4b509dce37c8763fcc601abde96bc7322dd3fe91b7d0d29a2282773d982a11cd413985ca59727f45c4dbf081bfbcc314abfd653533d91411c9b8c94c6340d075c7321203e7d18244189a74f52e1c8baf9d8f2bbb8d64102e39871be3a57cda15742a906e0b78a3a739e695062b0415047c4c1ed81b0f37dac1ea0dcfe5095aefe93ed422fcf1c70618ae3f056c3eed1b5f2f79bebe1a57127bc74bb844fc1f6be2398694ac3a88bb9977598b5dee5f67365ba4b3e8cc1301dd6b13e95c54b77faa564e76a22e269a3c30b719d21643c720a4d71bc1709438678786d1b439d753bb3b0b48c5783df20efcfbc9fbcd8d0f59342f447172babd443933ac76f15f9e5461b9e98dcaff69229fa77cab7f75a3cffb98b06d6f8cd99f524024fc5eb1ff413d0e2d072a4da25a068900568400492f73d93831fe36577a22935cf4763b2aa89916ac28171a13773868b41dba69d6920e4722bb8110d7949cbcb0a79ed293016d716b2e9e0a7a23246aa4f96fe75d515ee6fa7cf4280108c1a65dbb5af31ccdc3cd8e4c660b25686ba989d8bc6aeba0ce4d8146cfaaa071cf3154826d32cbb3c20a2e0a51b1b2e6a81b1fd4a531d13e8876d64f14ddc5365cc4f674d4a518834db2b1153daae60977cc61185b41b7b529cfbcd3c2fe1a739c343beaf5140632c5df711b9efb67af33db2791de28e96f8d8503b6f8da8c0a38305f3bac0ad499ad88d30aff39bde387c7275a307340f334f9d969545d954aeadb65d8127d9ce0551d5ecd0a948b53cb7819add593c0b1ababaf06ee5a804eac948e643862b15cbb4bcd1486007279bac513ed513efe9e97d6da2fea467155dc0a747ef0342d4ac4ed9eb50488ef755cfb701be693822d5e7b4cc7a42d0a12e300446174f5b5c03d05d5e67adb9502119d6ba7679917b456ba1af2a435d6350005f535f680b5c6d63ce1de93a49b1471d0d129e199deb429a7f3432cff6fa46f76a62cdb27b2eeb8f1e5b6a3ab08d859f87209ed1aba597ddf976953a0cd75f2c0ebbe4ad4d9aa901028a37cdde0cc93a4c7d0aa6211019dc505a71f35c15b0d4170ad4c1606cc10e563e23b61d9252688719c3706516d6cddd55ea1b72993811639c165d7fff2dcc27a4eeebff6627901d1bd70edc793268cb14c59fb93253463f6538919606f940a627e8a822ae96dd7bd8ea095425b69d8035251dd8badddde6f2a0cbf01e88c7da1c58803767301530c5827185bfadfa112a4c6af5182335fee64d448d51ce6886dbe9b5ffd2803510270504c06e2ba6d2816876b4a6e0b81cdf5c7c8b4d5e44300b159782d9b6b2c4b230a61341b3baa3655ee8952ff6cc108ee5644052dc4b4f817f14fabd5d2fcf1d9dc22f5e97b07996508263d3519643352a1b92b1071be065ebd4437df0fae24e65e78e34f4fe8e37ef50aef4191850df273994cd4c6bed29c82390dcebed9eecf83d0922ba86decacd4c70329a8a664b8d605ecbaec515275de18832927e7519305b019b712c967868e39db7eabb933e410c7d63cbd0cefe23c1c61064b39dd2c81b9afbb15319f2ffb7b02e73e0488ed0a738de13ccd8dc62c16af9f26630b4cd7b05139d509f5f1b95af58e64eec385ec3d25fce4239530924ff12081b812a01110c7591d445217f8abe1402682d563fb066cdaca14a854289af25428652a06fd0917f149ae11e0aec8ad62031fe2064bdca5fea2ab7957b8c869ab2c98018a39fb5fd4465af9de7e1096f03df6ee5f74cd01f85084377fbc922ad0bcb151c103648033f1e15e110dae66c7646b0fcb8d5b533dc6cf28ab9cbff9333e104c059872398dc4bff01794074e55544703a06c4d121f839e5e3eff4845c1e7ad87f5af28ded302e821b03ce68df80d97cca3b7a29a291ec191660e42d74b36cefeb3928ece417ea9be15021a3c5dbed9778c35f4836e49b5a754d6bf8c731cc6fc1916c6971c5c165690b05cabaa3a442bca9a9ff85a1fcebb8788bb70a009271b00092d96ba7a8f1224b8ebc805ce2611d52c93cd4af29cf092fedb8cc050ebb5bd6a3e1361ca1945d353bfb9bbcc460535a301b55188b26f8135506fae2a3d5840c4b202269d4e250617ea33d1f1876f5291f9cc6991e0d0a8a7a8c0b39b5d6cd79ad137037a169878ee8d0c5af906c7485c5b3dfc502fc63981469165a0b6eaa7d0ec1febcc550a1e6727204a13b6bd127b8f23d45326c3dbb611582681b346ad301531f65c1169594aa024e957492f2525533e6ea0a846b4c5a3e59fc8a32a63e84e8c207e71783ad2735a99dade8ccd303b2178114b49157d1d59905661bd9bcdf1d97c22bd8dada236e61797931e977200e4181e8dc2b2da3e5b3fa1140a2a2221230986b1eb72f5aba9d2792c5b134424afc63bad1e0b3b677fee7af4b2719be8869cbf1be40654abd8e7468e20cc9e437731229931e79278f3185a3a54a145da07d3fbe069ec22316131f82b8b6d353d26994d68b74d17c31746a05d48e1adeb8cb2189abc44136478c0cf31ebc12f052a0f746f70da6b80790485632ad527096fcce725a30633e549ae43d3b0201e7bcb6db0b9b2e61d34eb481b397fcade7131715c7e5a4f5620619b72e5297191e464aed10caa55a88df6a3e8d8fd88630132c720f4231f5aec423215bca4c446dc2bf81d709232c365469586fbd6b2be156e5c0510c7e6b3022a67047c511544fbe2194a473746461fe91358c77f7d8bfc59012e32d4d4c357472fb371562b477d6c51b9a2e426517145055a89d0b131221c942ce6d1a6db67bb580aa47904839c4e6644a2e24cefdb3d7f23b0b1ed3a86a0e0701d7f4bfef22de181081c43f5e8073610e2aa688df448256ed1b860f38bc619ed810dbe9fbad2be668dc67fc3135815c60d302bb3c3f8ffa92ec028c5131d2bfa24696ec5aa8605a2e456e6b198b6729edb626dd19126d17c3c5dd8cf0d121815ed956c4f41db5b291bc75cebaea6e2c4cc9da49d1f97d6bdf2fab084961d92ecf7544a124e393010ebcdc586d7ea3ae515261a1a79a6fe5befcb5a27f949c66a9efc20617f98bd046c64617eac827e22e401f0f9709aaa93f9473deba516d601dbbdfc7fa59cdab5ecd9b679a407dab51f35499df446cc500f74de0b395a8c413f6bd8f45f28751809439aa069f69ad7c71065528c9a80e07663832a36139e1c255e25f07f38cab987e833baf030796c0e8f21ab507ab2bb96a951d7ff3e1bb670a5881ced22cbd1021684814eeb2444cf5c179761c294d2425e97d30dcb32ee7f5a43ae2de4dfa2fc5f49634962922b4a449021b3f6aec64bfbb0219c7171ad6a7e6df41581dd1b8642ec326df0104794022fc6b12057c1380a7e479343a293b57d2cba238cd1725c2b53976c6e6fc9ef7aee98d0f0ff74f7637369816472a669bf6fda465dd3fcbbb849e2e181be00731e08ddbe162effe256804ba170cd9257a99faa93f7b0e796c83237a9c1f5561f22004f4787757f11976f092165544b4ba32c4efae10be7e5c4e4bc7bdeb75ff9c8a42518208df766ad74da28a01b12446f408e4c0a956fbd2108665575ae22ceb18b107f3dc108f9173cf24f6873ab0efccf76b9bdb776facb7305e2cb9ac599f4ad42a279f027c8b3553daa05c545ed78e81594a81933b4405ea907daffdb59c766c38784a19e3bea1a92ef84b0ed33920137544e27811cadb36c51bc174a74a0d900c08a56d4ae2cf48fe7ddd9c13f1591cb6ed7ea50e38c30a3fccb0755292e566efe0759b47d6c5948c6b088e71a4687c9c0b3fd705bfc2d3da5ab14dad8bc828459ff2ff4ba0744ff3fbb4670c93fc0f1700b5237f26d0e36c9dca3c8cfbf84b57c3af01792efb7d62e5197dd73698f9c58925819fd15885fda6457d678cea0fa5f3f581b4c4ee2ff1cfb0e275004b9fc2770108539db06166eadc75d252319f60e3dcd2b52687f19c0612c120ab3f96cf77caa6b8b5517f602e5b49f45b4e050008a911eb984b5a17a3859cac21027e2dab89f7c3cfa05365785bf99b736f4e0112fce90e8e5f72ea4c291cd303088a6c58e0461862785cfd5e520311fd0c18e43a3ef29e20ee2ac41b4ac68ea5860e2c339e553aff42e8c8056466a18dd7dd4bad859aeed82a7d6ea813929bfe963e8cf988729e45735e5349fccf7baa670462b4fee1444025f089aa19697d28109bf1a998fb886891ade7fafd36a57308c7b7af1983ece26ba8a76b8aec5c22e59247c67b2b2c48630de2275ea8479796f2e6b9797492aa25756105334ca3ef2e809d0103169a13ffd74a0fcf1f6c4725d86cdd2dfce9c384c28cb3d10bdd574f90bba8c438dbffd67c10449395f5517dd3e4771418b717b137688d09b3e7f4c83035b8cebaa70a4e03b680099faf35e01f987f7d08693343c0eb701b1aaaf9e220cd6a02f12ed3d669add72f647717c460a06048697714dc7e42ef38ede212cab6d7f35faebc085d76651ea8e0f076b079a568ce17c844767d66651002abd54ba67fb466f003b18e8f74475c771ff694e9c9617d6b99dda4627fddcd313b9bbb8e329ccb4c42252a7e18ab8b713dbfdbb84e7ab487634755b00a50d08e85650b0eeda1dccb721d9338aa71285ea24d0945214e4c388d20acc9012926eebeb5aa85c05a8cc04e555b04cbb536264fc81394ff61813f8be19516f309754cdc05bea0577152665b8645a0bae7c28be2b683386a8424e2277bc4d92962e04f1d3b57d2825e133443d822540dab33d76835231b0d68dc03ff87f2462e76f4ff477052d52bcc2d19e5044284affee579f0724f6c65750890265ada31cd2c7f3fb47ee6917a37d80f90e8886ff77de1cc5b0cc63d3fd42de37641099e36f76e64958263cc3151eec36a0b5eedba0abfa94992588e68bb9391ee9866f5d610436875e3c868121da3f260aa45c99417db332d0b420be4b655e4137774173bb5a578e199964b90b049f6d3971324d5c76f6130b713609d7aed2de7c161ee7180f048f02a8eed8542852e8842e2796aa2180704c8d5bd089ce2ed3210969ae09a88dc44c47d38f56733b2dc8db1df6dede61f40c1e94c4f9f0ea4b3f4c2e8e854f289f53ac1baed69940431914aaed95a0691a33ede50ae40b30f10be2fb6acf1ea29b093ce47796ee72e4eef4620c46d9c7ad91cdf24e75f6bb69d150169e72f14f98b99267da6f5f862d928f863ef92c2e8d1fc2ece4959329d5e49be5ba6cd3b8a2cbd0bbd7c307eacdf95bf3ef57ee36f04f9c27f244290bea262aec901e7f36968d52b32abca38de79e3fdcacecafce469fdffdb2687329f84c5951a989b69e4228abf4323a86173a89e9a802d32e7803aecbbab89f91eb977b51a1b1087c89da72fb1f48ed95503647d843ce7b4443cc8026488e26f0957f6344855ae2c72d6b9aa2827f2fcd6b5fff03a50ffc01025508bef22c4ef1116c128632e1572bf3b8c746b7a3829f79782f9a8ab1dd9771e5a6ad357b202b590af4eebe94f2dcb3c06168e8ac5720c5733a739bb73074e8d771d2b85e2534a0be824e91055cc41f5b97153ed25339db16445420ae57f020070d96300e4a084fc5b27525555da7890e9078518f962cbf7630b5bf9fb1165f8986bfa36ce3acce78b6226952668437dfd824f33f1a947772a5bdc09a254369a4822daa8418442bb09073a03c56ab9ab76835dcb2544c1aa44a2f291b98cea3ab07569ad0851cc92fdcac023f5adf310528cb1b49edda28c7fa65a4b3fe7edf1ebedd7e6e3718bb4f592430844d2279dfcdca2824fe5127f312a938042150685c7e91d2271c45a48b5117554d9b960ccc2f19550b12946a55be3a08ff257371f9aa300f798617749e8b501b77b01a68f3a46df1a2aac098698f7839a67c174341b818dfe00b24366c2bc84fac57f503cb874ed2fa3fc39e322741310a9b8e33806105b85de410398ca49bcf96cdcfbf580f563e9abfc3f0c6f5a8a3a5832967128e2faa230c0eb637927001d3460a6c8a08ee931340a43dc7c34518579712315d7fdb76db3507d93ebe84d8050c5d47b0310e3c9f514372f21e3f148579d819054b9811d28a5851514d6beadb39a89dfaa56848ba776e4a7e74fa19446983f7ba3296d4ec789757eb882d5bc1333dd64640444814aa275370db431684cc484b302e92e64fa5dd6513bde89341050ce810d9fdec67b3ef91cfd1a38e80e2d7ddd40553644ba3d4ebe2bb016d0ce6b51e49c31e3d8760c9d2658b64d088dc04c62fbd50d1ef40350259d8bfdf428892646e656da40c223d50aa8becb9366865392078285f222f53dbaa64bb2d3bd9275bc18e41094edc484b9d785dfa911bdb2d0cff67b9b8ae2ef2442d8b0f2003c8c08f7c1bb48d76190efa2053bc189102427f95389156713d5680ada4eb4a01e6d3a43ac5eda56de9de8e3a92dd4ac3d9db02ff31332c831cfb2d2e904b5796859a999bec4fb2b495260eda36e2a666b7231007d304030a64bcd9f3af4071adc3c194ccf4aede269f52687e920da848c10889ee262af9c4f650181e2d20bf5494c099d96a710610bf9a205322dfbe2af723c812d77c07c0591b322f0b0505416605d5e890d553459b3df7cb5ec8130998e1bcb1f49d0d1eaba79a361a4728600504f91bf7fad2d57e916b96221b76ed64d8db52bda7af1bdc25bd15e2850313a17e421574e928af1d4961ec18e9eb2ff320722e28787acfc8af46f9a552202aeba5405e19c2b5147bd72aa98de873a72a1e3f99eb5fbf5c2c491538ab65a4c33c75a31b1a40c4d420e3616aa7027e7e095b782b72b8071a60ee6e7c7827b28d05da7bd54ed7f7e1e2a642bb876763162fe0e36c95766c7de85664d96e886a18c973838abd5b3bbf38475f2eed55d0478c6fdd4694fcdf73154a2b35edd7dae4f3ef6baed5e226931160890b589a82de05c03d1495a86a8718f14d3b62e302afaa20533373bef567a065efefdbf5278a0676287f4896849e3c43a849f5a29d58b93c79780846bc650af6b76efb819c07f788a6e64dcb8b2229bc2b7b24a8f052ec89625b23a75f22bede796f60ab584d5e5a0391d9977c407595410c851d1101469d90e43007e31606d4114de3f90fe9c63e7cd29cb7f9356e4bc7721fe79c441c8fd4e896e4e0339717365bfa2e13507a433c2d4bc1e19f457be8dcd0fa4884013895921a8b2172b9b66a6c6f524b5881cbd2797c5e199c6301fc3e6892fa4b34ed053c8cfacf50df3a5b0e9e815c52418db56b80c6a23b2518af793a0ae8ad1a635c50700e75892c147f56e5512c0ced9901d01a562ceb426fc6e07b4687b8c146f4bbc28ddc6695cdf171afc7acb4d871ca497ebd014deb260ee502a77bf52a9299f86fa4993d3f301627b7b2a603e3f3d050034ad4e5fa1384eeb8bf2f34fb4e7ebf266cf5e0a02b6d7b445ed33b789ec15bd63276d25bcdedec282ea39eb016970177e42720ff9d8bd5928a99cc2bd380d622728b228ad7abb14e23c8cf16d751c3647bb639a52fb1fde6c473065f267dbff232ceca87b5e622485fce1029c775dcd0a36d79f7a1b2dd88dbad761f8ebcce033da33d0670414ae280e883cdf6756194fde028d03d42756d9b1db8a722484f0421dd635c39627c5a2c387d18cc079af70b495935df842a700e4d925b0eaff9d5958a5c652244bfdcc212125cfd17ec3dd7e45530315c210051f0b121ea21561de10daf9977f9b6a2ee9dfe7063f0511881bac699e6564d58490a7e4e02c7b0e69572de2a3fb310964ac9b43e3f33a9ccd47ee69a86812b00f59d6e2ab9626b7954e7a62af4f33bfbdc3e8a7a8e24cf8acdcdb2437ca64664005969aa642b4125a8e7404fd617e6fabb87398d69dd48dd8981a38ce3ebf42cd659a2d3ed582be039c50793ed1836c7114a04d62b1032337f98b4bf5f02d7b9ee7f0982c078d1b713bbe91340e760de70a03f5ae163c00dffd56e7a7dfa6c77ba7d2e131b92064bf76f5a1ad6c59cda7b8dc8fb7485b6126acc21f1ce3f1008b61f0fb108b9fbba8cdc1c307b42257e09bcbc90de2b0bd2d1eb741671c18913abe5175ee663e4e14f45942614b048c331b3308f09039850c2c3ac725f3de9b23171ae4338d43e8afbe2a9322c3cd3ffa9dd9a54bad248791fdb8d705ad9c4c400e28c66ec79aabfacc1fab9eac27bc1597688f49b927fd5c3d35811cf00a53380bf54bc0a0eb84325e3f428ef635c41a02e8d0818402c90c35d5e594ffa443e7a09840fc987350705cd41d99d2bd992d5540b1c4925ab0e4d7fdda0ffa114e84047aefa3dd8b626068ac1ecb9d7186402685a3577058dcb0b92c4de9870c3489a5c732079d5dac140cd17d2b12e425029e020e644cc9d0f8acf2d409ece034a7a013b415b31316dd40f2c3c4a40689e006344cb5d4d85cb71abcf26f3f8baa66079ae8fb8b47ceadc4f68f4803da3d1583c119fa27031228a9a1b3d52b6f921546105299d32012e7c2fa263dcdf3893ef4284daa1f228a5f92b577d6d5a8277cae20f997a113f7603d8b080393c66b95288f432d1f386318bc16a41d1a45667f848266e0da7d36729c146917f1ef6d9bc34accd5d78a061f1428aac624aa31283e3ab8b2eab682adbc1641c5c22f38f558aad0b4f1b3d9676c3891537954d05e2a354bffab82fe14bfd9c16d62fbf0234a74abb43135a4b8586478bc20c97c58c4fec875ac188d12d3f09838ded583e5c8222919a47043b23769ef17a5bd32d8c97fa076685b70e8e32bcb27c13265f823455b8b3b52361bd172decf8dc3e95e04572cbaad8b09a44a1536b1fbf15409159621e82bedd846dca5e31ceffa1d390fb86fac7ad5df9f38f9ac0c5729df2e5045ef661f3e196aee9f646d1dd3cc69bfa090e77001d2f9e83668da04e6fbf6930bbffbf6d8eb98edc20793ccfdf92c2777a03439d8da27d2fcc231eb2f4f767b895c6a6932dc661e73e8e3667d77719ee7f40ea893a5007f6baa18abedfddc4f9521a8e8694c8597fde3b10992eb0e3192d2c2e217824ce4f0ad7bfe9dcc9a78a6c795c59899b7b0bf2e08d96184bd8b504bf0bae98bd87030169975fc6d7e8a8ce7f0a54abb05f81d7d43acf03f1b36d97064d7199e39bc8d9748806b3471ef5c0da9ee579cfa12b437b8f5a27c3dcfca94796509a83ca4546427b12eeb8787abcf852dbbf68f18c281c1cd6d3ea9df05075285bbf99451712cb9492a20029163fbc20c2f748b399a10a4a7159999bb630f40b5627ff6b3db240a1d092e502cc8ddffb104d43320043b3aa142a26085915aaab564e74d35c6577f455bb154430bd46981f8e80f8d57720efc012f02f0815828d1054c397a47d479b2edeca79635673d06ce417cfa5ad9313dbf09a4fd10d8ad01ad95765590100f782be49e2240f9db6bf109b287f76fdbd0ef38dbcb895e7c248891f8fcb5d43716dc5baae4c71cc59905bcf0013783da9c37db3922003d628452eaa72c0fb701776d8d98ca6de22c8ce95c3037f9610618ef3be36810b243841069806dbc567252ea6b729fa2ea31a341fc006c70ae2b1d8e701bbadeb8adf79605eea28c6e1b3114fef4dd1349d5900bf5ba85f6055d957df751d79ffaf0e3cf192222b2c316978d6d05429beeccb290e9c5c865703837b18b5d80d562a21a171bb9af005830511eeca34d5fb97c55e22dc0edb1c6d16cc2435986021870d69868b90f2b21791537bb93a25620520c7f028be7fd2c462357145435a200f9bc8ecc074c71d69f49e4f1fd2e27fa7d9e490c62de020b7329b4f674cdd9fdcbbf7bdb7e0ffc5e2d5eed66107b5976e6c841ff1974bf58f30571f07f90775ffdaaab8417bfc4bc7f20eab68ca3c45a9377a8affcc015961e57a866595b8f025ec89e902d37552550198028824015dc55f8099dd81452dd30aa18aebf27d8593b5def4099bb1580adc8a73734783629ca4266440a43c52fb1f130e9932fcdfa93213be3f088ca059635c5ba767fb8fb3efb6b131a372387cfeff17327b1a42617708cb2c8e0f78dff403483e7c01419475a132b12fd4b7360ece94c5b07e439696accb44a45933cc6295c7d3a9e11cd4c53202f86006507f5341e17165525a26c48e00975bf315a8c74fbc6499b870e999f3db071e1fa50d7f7f24ce3bcd79c5f02fec15d7ba0767c855d69675b4ac30a73543d736be9877894f6986c7d3a22e068c6efd8c0e98f9d90e8f8e28d54517e1766607192fc217f6bca2863b31204e58074ba5493914118956aee6888eb7c0f81431051fc43a033e542c82f4448f68ac3dbe9f54df85033febaef45312d2ad0de8929a1edf877d78f296bd3c426b986aec21f2c06655731cf4ce94553786843f8d9808fd63c74f4067e60b478ac975749c4056e6308de4f04e7d019fd29ddafabf4ac68fbe430b39b86deeaca6cc164d95c788fe4ecb299ad6e3d57d47b31acbfb8ab5a8fbe9b9279021073662364cb45a4d6fa4f3b9bceca1833a3aa260315a2c4bedd5caf46151cb50fdab103050d851bc72d8490f8a085b616e42811e400d6eed985ead68fac47a200bea0bab91ea7664654bda3787c95b22a8a7b81fa2f65faa72147f66c1cf58af4321b9dcdfec4a4b4ea8ce7c311d6427fe7cba81e4457474671ca11929d5963c91254f912659540b5dddb8bc2eaece7ef1a2a75a0e6a71109baf117cf5190e2b27169a55b9dedaeafa07879f90ee8f88f4e9a341e40e6207a4532c41a92e73cc54ffc7a272b046e45e5cf7107dd7387df2914852a5f977cdf2487983ac691652b773e3f5466bbae73511e429795642f9e53883f529cfcb25c2e926906bb449c13bded9f2d2b093bb269226cf5a932401dd5111468c34d24e18f5afcde4054afac772b7ed66bb68208cc2de9f68f36ab537dbd156f227994d0bb4b60a33f112e9e37f0ef6da0773dbfed28b8a6bd150fcf1dba9362324e633203572317c9457bce7132fbe64818a882ded92178d87dbec094d8be622faae1aa62aee2f127f3ae9ded8ad14c949fd1bfca76742767daa5eed8769f4343f5d12d4e8afa371e6a8175f077753a58c35ef7993a729d89ee2eb264652d85a7f73a8f130d784a554b80311a14490b0791dbd95e4e406b05f09114c629aa1c310761a9ec5a0982b66b87fbc1952597e215ae85d99a6509ec72cc10318c7031b67ae9dc5cd90e3915f57f94e964fdf2c378ea16af623d4915d120eee056c4328aa0765e45f94377ed999858b650fe9c0a36f85bd2fec4c725cde1284f7bd0baf661ace8cc72eb69e747c973d4b6a0907cd37deef900bac261ff52f4ee989c6fd586ab4113f84629377db6558e18b70a492b93a9432397eed55b3ce82b67186ded720014cef984614fc83d884e6a0fb4ce3a3c72711774429f75a8f522f8b2f2685faf76f7008de434963d6a5b42023895dd86399e0315c6983dd3b2417077b8cd2df583ac35a4933050d6bd47761586698a602ff17372f4cb655de0769f0e049e53661474fd7b93d307b90c89616e18f58734ecaf368b489093d717fb4ed2fd637a62de645469e6b9f8f0afd1326b56936c8c1751d3f601ecbea4eee1c4fe106395a1ffa01096c9f5d50af28b910d658f5b21af6fa3a34f9bc7ff7731afbd1e52c3eeb48363d85fc34d5d749171be25e393ad2c75d0747d650a0ac1fec46df4b2c93bb37757af102cfd1a75b66a7f7db8760737c8d6f13b44136d89c6535751d70077dbb53f01e533a0bb4b08dd1517979612c16c40b91c46cd8be5cfdba0b7551e083a509518bf7b89b0e671f262cc605dfd0a0e4f7da68e74a5c5d05cbdb04c9ecb35f5913e7556370cedd36beb0db7524701ac7b2325bc0a7bd313f843444f77b33d3e0c3aee6f485474ff4e7066e35ced0d055bd7f1fd1322c7d2a61b9dbe1010fb5d9b5c1bffe5455538e7b4505d4823730db3c27e433a95516da5d7661ecbb8bb438cbd9e176dc1d5ed81b67fc87f86fbb83c88ed1a91edd7da9b9f1ed97a14f71490d8409ecf9041ade0f3a36e72a77b15dcb4e676580cf0b5502e3b1935eb23bd11d49f90c5880d5ba690a87963d94f5fc2f38752e3d071280f73cb3b80c1cef08f45df77ea9e3ece0973326cf741f5c51e742c4b4c580975d70041a29c5eb2c895e793e080f92b3a42ba2e17e360248282374778542f653e33d31635c17950829d66c30850099eff9e5a5dec280f5da2e65f2edf488305ac7be897d5fc3dc388d1d09713bec0131adde061fc5b5686e5ecd489a00f9f18259df030a707f2eed45513075517e8b6039ce64d7fae9b9c9a41598b6b70cba351b8fe4adf9cb175b5b129e7db65e1187096c1ae57f14d60e6a0f60c925dbfb66f6ce285805856f226f3006686bc8333b5eb6c82214bfc0656e05665c258c5a3e499a9bca0ebadd27c8894061c1a864d8c0e9413e4e74d9a755847e46d863f47463b1376730e456d75065ba3bf1249e2870b9dcc0fb1a6a5d10a9fa4481a86e8ded352138797e37993e086da53e6885addf77c9a4ff51695f8e2e223f6930068b2c88a23d19d2f4ad9e7544c400bf4c80d65afa1680f20a12b914ade984e648fbe1e649ba6e4e98f709cc83329617ea14a17cbf7166c94718d5da44dd46ded9503edac79cf967640b4d747d9be57ba56d921ae356ba40a28404d26142b01187ccb0173b532b089afda3398f54d8c780b427293e5ce765396c4d614335c3fd0a695bcc7093541dfa87a55fb94742437a0c267795f902ce177249022f876ddc255649a840ccee32b9076ca57f02de6d1d3f107461693250852776a9266f84473486e34f3f1a615b9f1a4079bd34e6284cc09a1099adaafc992c36adddf3df3a773a58100ec5c5854929799e51511f97363d057a57aa80158c220206cae3e1c8005be87776c9b67f963b95d2217e7ecf7680744e8bc178ac381268183daea96c218bc2ab4f8360502270960d37d2a39641350dc6af3afacd1c78940136ca0e71ba10766e6d06d215fcdd5edbe1257c304eaa68ae6d9ece3849a2a93a8743643bee6def4142a77a49b696451b44ef5453910d4d74268793656f9dbc0dd8cbbf879c7dfac3d30f6d4820abc3ace28217d92a6a637c75469588ba2157e28c77d887d12309e406b6f01df82856b16cbc7fc77c88ef9d7cff6c0fee8b5fe4380997e81a54bc2034dd2d45d6463bf3805804f389699a82d89a021d8826c3766dea0f6c31d3d00a9f11ed9ffe87b1d5225454d15bee68e1536bad15c2e80583bdaef4c84c4c2d87becdfb1a1c56fc97e8e8cf530e7fd05e25c4349af6978ff4aff124aded21152b307d2915a49aa5740c39bbe157efb7428f1538bf4506d8fdaed071e14d5a0b25cd7270cbc64d235a8fdfe947fdbfad35080cea98258bc1db6b1b1c3a2ae8c3dde51ee676a97b225345ed767456b222495222c830afd7b0f94583d7fd67aff2a568afceda0a4042529b8f14d7174c4023c18a5387d303f06a465463798a1ef560a84d19ff0be65daa58ed4fc9fe217b97e248006938ba4da574609b8c27a9677f6418f0e751fa3d886485757753c4b5ca8f180d2a37d5ffed83fa1e1e3043df14309b15be4ece39c07781a3abdb1606d3a5a3f8417262adfb75b38f349c48c829f66dce4c762d0097696be7595ee84b11d49254088f22eed9a7ae927d4f0678a16f471663e0f947c6eeeb0042bec0b437b61584c5594e2db4f63dbe4b6697aba58ccbaf6275e4770a5706f16ff51aeed7c7ccc7bea1341b387d64b24e11e6fbc85612603343c3652e32801104ec986de7dca02e6bd341dfb6a18020925be79b854e6997be4ca30714545259c359103bb8883a26a8eac391ab0fa7267130e89291c0de4cd7c641feab97f963259c0df42c14dea2fafbe67b28eaefb1d5947295b96316dc549280be56060117820e05b1ee2ab2dacbaaa7b840b86199604bf8cc58cdc8523dd8cc5840eb410570c8633f18f04f9620cf60fe10b78601e2c6f37b196b201f9fd9de94bfc5f1aa9c7239338edd2f0bc8c2fc539f4d6ebdc809589a3df5a380372ca3c8e2229801ea3d0da232400fc9cc5c60dbced23957c96a69a6aebc692f962b7dbdd264ffd455caac4f26a45d59065f6d1b06215c6ed02f93a73b9ef17a1ca07d8beb5841a2351dc4613ebd900c54e781353e3d0ef2bee22a777476013e68807b41ce4c1867a3996df1df90d34b47d635c16cf56108363bac98266811bb995c92ce427c1704c2683d505605a98345a37e1a47af6c72b0171024851893808255720d3bee56a5d4abe2cace7e36609cb39504fa0a70119bfe5d894bfa61249415fb4b69c465062f1d8d2cf30b2a29d75a9018dcc39f5509c3a362b039512fe9bb0e192f9004550dcfb0865ad57c36cb6e349c8a5da0476823706739fa7fcca501caaf41ee5aa38c5f6dca82fa61719dcea5a108c86cc27322682427e609b4f4ece888c5d3e704701229e66b6069fd0be4a9a2cf0578cf9dd5399190424d2f15ba588999ddc24ef437ffda6f6f9eb62c55c328cfeaab06168df1a4fca99e1675c39587987d3dfc1e86503ced690cb6af1370263bc8e75d989ffbc99c9d3d23291753eb5ddd95f6c42b4522769a1358233bae9b1aac740457d326f2d38702caf56d0194be525f870b664109eea0d6befce926ba9123f7d008416ea24114fe9e5367178152591802a1bf3cc47726f537b7d4a660c9fe4e74a6d1a617265f68d5296f9465f1813027188af9bc4069b0570694d068820dcecfce7bf8d68b20d8a4fb75ee38ec07bd8d987107465cebfe495b7b10128d59c267fcd0c979a4121f232117f8f8530207e727cf446c399af06623ee19d4fc1326bdf839d6259d9bbadc942f21577ba838cc264cae1a2ecd01b9d3ee29128682453bba45cd32afe5fb22c39a302bc83cf1c5eb9d544ed8541305bbe3ef035c63d58b17590aa4a306e1ed03a0a6ca1a320392f6d5825a86dbc40064bbdf3f240d16c471c85c3cf1203fe8ea00fe4368962df572dcf5578595d29cf62cdaf783b7850a24415ae785be296054bf144c567563fa763fd025ebad83b645677792d1974788db9fc2677ee5bf706f06b6f37516be8383e9cb51620f83bfd9ad37bcf8e1cb2f9725898a6c080014cbc6c36241e7f1033ea6a8358675d6613d0f04863bc489e739d1c793ed70fa8d0774c7e62770826c21706407a9d6261c5eb1e2703c1e3c7dfd55ca985d0e62f2d9a22e16c6bdf85ecf87d5e4ee547a80b56c969f4a2566be2db81fcd3a6a7eee96cfb59faad80cb5d4409ad36f6d3591fd01a78030f1b52a44ca9147b18f41e25fd113fa3156cf5c2a31e46611f5df17500599070a971f5aa34fad3e521b822d7f5e37df44c314e44def82a5ae1536316b9f37fffc96d13f77d744a92b6937dc4521187a6cf5684edcab7fd741995e6fd19080814ad21df0e2a6dc51c102040a5ae931aba5af4f28ba3c84a1054908f5236cebf3936e7007b0febf3a65bd390a2350eeb9427ca0c39d573b5e866f8e4f934e378790c262a21d6232770f8ca8a47b6ed3d0dceb550f5e227d330da67ecad91081f3e98b0f3d696f7935f82299f9f1bb084f8deebf15c560a5ca765cd383eda4aa8c89c9e698cf39a18fdeb727105ad45128b702084ed581c56f970737126d7e0feae8cbd3177ba09620b346814311a1946f8587a44d6d852e136558b6ac548753c4e2a99f183a6808422c50d58bc55fce810bce5fbca8bc31ee73bb8e88efe432bcaac189733fcc4580e9db536700ccce555fd66f77fe5bef1b9d5cfd5dc1b83ceeba5051aabd06591d636e55f085ba17b2814173170fe9f6a33399aceb3f8017d214665fe219cba1909391b0350a854872063536afed1e5384ee485e0654730b274b96c9d935623a37785e7460169fa1c87f46363c56a4f9b0910ebac0c036ef6bc140414852e29030f90d87616092110297d500e8dd6278cfaa8759980bff51f4209ee62c4263509f93657676f348b8b8a68171d218a2a81714c0e49d0decf613e5bc6545f225d7466b1f3f9552777b15685d830774314774d71fce8d494e7d5bf2a843f411410cb2822d9e6457a562cfc8039563011a363aaf4b139d1203b2fffbc748b9fd62545edef4f4c6d9466342553484387ddd523b805aa87c02c000deb2bb802a112c08689b7f64ebb0371b589967314108b5a05c3a0b696097d0cb5102224f822e3b6775115674928086fd5abdab64df7a75c72222d05737699a80ff79496e7f5ce8b47c3952fdbdda799fe18cbcf6d95dc912e220c254ca9f1135f4d39f564eaca820a41cb42b44a269b713865c4e1e2ccc096073c9f2f83cf3c0388fd4e9c129b6e4e183d190ff9fcc120e6de474400876a7e8a70d8fbfbd5702174b2ae6d9347e5dc9a172337fa03c6306479b921f5c9a31c9e46162258c14590a615fe641851b6197f982d8a25d04d23b6775ac106f8121743b3d4d0d3f8bde2c384d5046922f3610967c237e18bf7298f884f27db3d812ee04a6dcf723d021632114b98e125030409ff7fafc50eb2bd4187ab0d248f5431c5a406e94114d02a6070740b6f492a56ae68d20b06bcd03fc02d006520912e68bfabed5f8cfd740296e07f8f5524ea97ab9cbddd3a125224e5c3a31923a23fc8acdcf94608fa073df07f9057a29c51b51fccc14cb9b47b2c2afa5e6508e8d9a62a8ecd0e2b89628a9f4ce737def187955d1e6db91b08291cbedc3ec4314c61c5514184e194717ced807699a9b0fbef5b61dd03e49b30c7d94f08026d97c7eaa433e856cf140a55be64d3a8ce8ec470a9ce00623330c0b391de6b0d1f655416fd4cf6cd4620739744fb5b03ca690ad012f48a650aa44992dc17395aa22093a741b412db05b2e16a53ec6e84dee65bcd94d554762ad59d908a6fe345634d71c13a767f37f1e0fa1c5e60e717a5fb1f12b0c8494f56f1cf25bd282742d793c2d2216361b5d352707232101edc5e3aaa0f847502d5d94cd6e21bbf203cc409b26f7a2a6ab210d475b69a7348feff1c027255007ef4a6920f8a777013808e1eb003c86fd86de9af9ba82e6f63f23bb2efcc4f574afce94d50040f9936159a2200792e690c9e8341976368ca06532f8da26d431cddc2fd4dec9a60802bc280c0536f9b806ba3bd56ef4ff0755058979ee345cfa9cc872b59a38d0dbdcefa94002c80594a63e6b316d07030539bc4ea9597e759cd1ed6319c66eeda37a7a0bc3b08e1b0e166ef424cf8b4e0446223fff42e11efe05b872ac523a7933466f6672707d53e511c36f559ee5d126ced531a771d7a8828e492f76b7b31b368848e30a888b50d064b37c7ee3b1b690df3ebcb8029836043935eccc022d462ac6c05be5acfa0b07f956c35a56e3127566c930eb64d9ca43033358e8338944029926eb960b731823dd0980501cfaece63e1a6560246ea6dca392888a84ed7148347c15bf92c5fae401cfc84fd71e4b954bdaf3a98e0238c49229200f14e31e6809778fc0350a30ee8bc00ea20eab9a62f281e47328e3da7700a6857de7ab2cfb9a092cb0ec486a59dc1733f59972687ac64f5c6638c7f772fb6624656497b46c332cb72f337e950f491f7bdb7a16ba1cc49d11d67ec429da798bca43be903bc280a2b9347c8eb1de385e907fb91bb3465fbafca9d5197a3a9472d9d3e8113a27b6cc31961a316c1b6a7d481f6b2e7084958fe53786717feb26cbfd4203a4fd4dc11722457f21cb7eb1b680173f18fac44995c87685eaf0318f6d3965cc26d1b72d4ac1c9c65cc137286f1a6a983e18ec69f8fa092b6f10dc67a788619ca855896cd060319c10bae2f986e828884bf8ce7de1e27008871931ef7bd219f122c65912ca09cac28ee8dd5aee22d56eb2fbb440d7f0415cfb4c69e74f4961b55fc97e53340046ee25b3e7cff3e4ce7fa3de2fd4124387a9102ec402e92d63f41e70719ad663fbe6da75bddd4113034df2d3ac253718197cacef295dbd6238d7fba2061ec14ba8ba0b1911d830ce33690f5c22058b4dfc1eef8376991ba94494b402d8572047bf6469c2f1d046ef2490b18aaf11dd9da0c2c6cc35f78f4733346dec690524dba99a9954ce988fcac812fc4da890c88b46d6cecd046faf6c703f863e0fb0e1162bac5a0f91157e342bebb0ed0190fd82e657b20257db532e34dc18c91eab986cab32f7ab2c64797f631f818783157f41f87bade23dee66d02cf4889661d2d93d6c91fceb4a39cf9f940713ea522b3d3e495aecb5e7d3891a1cca11d533609d0e0f4027ebe30422f1ed2975bf8955df3334098a151047b3c43963c042cf9589cca9e3e8d84747059ad5f932977d4e0aced80c7d0b73223f0c43bc009c5ecf53e16a84133248af8959aed81a20fcc0f87f9927fa70073bc2c2d2540b3478948c11fc874e886655db6a80470c26f8d6a34eb06aa24f41ef4de6759aad7ce9a4939149eef9ff37689110437817bf91c187211b90833dd9da37f91c42f790e34248f01aad11c39d02c1e6f641b84af30a4cea89b5e49a2e2587dc459a5d21c4da4d13ec2e5508d3a796fff276736218e4eb8b7156b862007c9064901c9635d2f906091ab001c8b274d17ff013ae1cc7169303e1c465225aca3ec656774019c192057aa783c7d57601aeca3ab3ab164c36f12fcef5bc5f5fddb484f5aaf50346db99d375463fab58b4dbede4a396b9850ea4668c9b5eefedf5a996ca7e1330c64f7d08fefa0320f64583226946c49f045894085cb3cd9998dc4e2be8a7abfa4760a4d35144e11cc9c29901c06fa82c77e2eb8d8015af5aee352fff745b2c1d7ab77ee048ace74acebc1aa8944d0384a07dd8030723bf7f8889c963a353ed540e11b10f3eaa442756d4cb8dc25e1e5a70f98ccb9b2127451c318b02c817d2df38d665214037d42b43b682b8e7e7291474dd7ce059b146f8f21cc93108ed786142a5bfd3f775631345a690071e6bb33b20c51355c3c66c3940047812f82cb5f52a5da4f83a880a285f97ae3088375222a39af70b6edbc821c44d4a03d8cc1214860940af0968e68e9d24e27258949d069d5d30eb810857c9c8026ecd454c6c68e8f96963e8bf1b7a4b4c1088b45114913e7fef8e48779967f89fed7e6fe630f1886fb9d276b2e0108dd44b6724e8ac8fafb36d91c35ec66c2171853cad2aec1be6294a5a167f1d90444c2ade39f976c90f334f61dfd0fd1d6528feece3a87fafac9bfd9ed41f397f24a594565f87f21b764effc4dc968f298db296df23faa24796b2f2b16e126e456eb13c9a0e611e162296a57a5134b817c5f2a151ef422c3a6cb01cda0c433437354f3fe304317048bd4752c06c1d5757f64dcc052cf47a42950a93ad58895a6241236ca752fbb2d8d44c4ec7bd453d4bb31ea0778a277817045d513cf542f2df307dd76f6e82c708d292e2362ff1121949bee95d35b320d3f5677a43d2ca30c163ecfa02a8c33405e2d4bf8006881e3503593513f15cfef5551d4f6bc4772dea97790953693c0e46bdd22601b8b8be00352e5e5c4c4c34deb04e3d01182808549b11ff25f41d26f0c0682bfa684baee6dfe9e23061c6297a1babae313d204e9d0e1b8245a2f69e462667a370ebf130517e9a725cc4e34871842bb310726e48c3fffae7afa6b34d737056b68cb6799edb9977412a4631f2793c15ffb5bf895bb380d9b51c92c8fde9752d644e3c4d8e30506c13bd2e86382b4a16699c480f9a6c2f1b9db874889bbb122a3bcc0499bfbc6cc85d7a771fe2c0305912fc4cbe6ba3dcfb8149a713dd9443b27c3348ed653e05245f3fba74891534b14f4952e00f1a09f7331d988644ea764d244ee65004c4850bd775e43a6c712c234374497efa0793c2cb8fce0be0eff93639fe26ab9bee74b95c0380eac8778253aadc295a4f3b82d2312d093638c585bfcc9c1ca9cf231f8048d19389476c8af509faa4ddf6b5f793f99813febd6a48d64150be71b2e3e38134c96294591c7c7d086993ffc2c60a8302d81d27b7b37599e4371475e83bd03386052ca22fe05fcaea92d407365bcfa0b82432b022c29358d519b5a64f99e80c70290388a72db7e1e964c62fbb61f7d8d6eef45dd48fbde6ddf6a78f97c080801049eb3a07213c201b57b173be324a294d7b05242570bdc77df7d29b76981b74f98796953e38f347e80992f4255f0760dc296dd63dba46c5485b39f26cbcdfa3f504581549f631de6786a36829d0b2722dda784db535379113e8df59ecd157d0a136923a5ff76468c5b0380326996b5e9fe89150e809f55e4458d38b8dd827c0ed10639c79b11fd63390132a09733ecbac51ca0c2404cca4f00b77594a16d0a89afc25a61f716dbd0e3d430e3f077cba99c85118fa6e1eeea4571fc3d48d5ebe31b206476638daabd9b25c837ef073a8080ceca589fc82555593d367cdafa791578052ee19950631da1606280746ec023102586882b97dedd6f170978e62a8f464ef0e0cc4cc7a5c84b6238b55f419520fd79ceb6f04f67050decf748671fda150678bd0449c498c66c09f9b335c4f0bd791116b52ace12ada0641c784eac6b8b662cfb7e36971353381b70acce432ccfa06f7d3d0e84e80c8ef730a6bc4f273c3dec603e02ba271dcf494f062acd154dfbbc49b45bcf52b5d8a2a16a43c4b99b4e51d216476ef49c40c87d1123a87d349e1354e77d4fe09ce702ccc5e4b9abac6308a63c5e982b4d6be78f55a88ee9c86abeb48a7c07a15c9e08288a18bd5262f2d4a2a07a19ae3947316ff8b3003399d1b6e1bcf72d2c84d0c2f7f9946efa6c9d23b17907c142c87837362704bb2ce6266598a95d2e718f169edf0ec1f25034034034e39571c3949febd750630d56d6dbfc0ae21546cc4bed172eb7493c2d10cb975f43a03b79593822e6ff6e2cf3ffa2be228250fc03ef7c1aafb3eae4759de8c812cfe8baf5108fa6154ac763714f4ffe12aa1c7f5d7f977fcb98f6ce29d5be3fac04e6d180a11c5dc1f5cb3c31411e160a57aed7eac48fd87667e952dfa88d162f9721bf61ddb51c0f3579ae77dd2028c6994895edfca0ef163e22ffa4154c3064b7ff33ca9564d9b3cb3d5085a920e7c3f7b8cebc197264be8e62d52c35b102976cb289c7c82d5be7a9ea332dcad520cb23ca08cce9a59d525e05827de2704743956e6aa128f2741c8de3931e663d38ff2a69f5c833ed220dcde78007c47d6192cb5469917a6965f90c602a8fc2e2438f81bf92548b17269daa4f0d63ee4d39f42e9b35cf64acbcf2f83bdf931923248e4f030b13c357e976aee15e1990b509552056802d6d191a40b0a4f61ccd3f97ee0fec06a69cbbd34b61ce8c3bd90280752df8a8ffa5587d68243a40f78736ba768f0878ff19164ad818d1a389e76b147eca9c1fd5f027a7d792abefbef9f067bd6f648f96a04db905e0290eeb75c0e102b139bb1ecb46e630129d9989162e036d15e6640e437ee6d32bb9947fe8ce68123be5c54b2033d3f9cdd7f4a890c24ebd8e23d1cdd80825aa2f5610e7a036a4569e18ed53fc6e5685274b86dbb5b402a8d08957bf09f9024da464d5143707b8ab72205b72247fa209f99072a89124f720684fffe4c3a94a2142fefd167e02b9ae31548551f1ae66ef4fb1c7d83f0cabb0ade55dade92628418fe06e02f2c0ea51d23740ae9142aee088ef00c9c18b42edb9c265be68d935e6764398870e98e4c9d6b2bfaa69f7f50362e33eb05ae97c31f36b7704a94fde38ce35fc25ee3a5134c264098fef3ad3e7f0505c08c00e0e6b89b2bfa7533b7254cc82327893337bc1a968c7a058a3271a773007bdce5a2891832fc99de333140ee6c100057a2214c05489ea6c0bf61bbac2e1f969021cf3108748f43c845bb06ad1db33f781d86741b601697a7e10c13acc3a3a89bae7c42dd45bbc9161e3db1d888044a7983a74a05f1ccbe2e339389c0aedda578db8394625b6f91c2dae031de9abe1f01c5d32f8f1661c6d640bc48ad633cda14235d4a1ccc05c1a520349ab33523c8086ffaf47fec960e04673a7f66f80f1fc371625359516e33589e7ebcfe5c1f03619742eb9ff99887376156a077fb72a2411bb9b785c5cffb1c50048ba7547231b504cf4386a57d90ad1d68f874e4d9068c6e982f9664f6fbd875d62a8d92e684fb67fab6901cb6bcf99550e16e8bbf02c775dcc95a51520db52945e743ce491e09075392c22f1e9e943476201adbfa3ce27fb34936e8c127f0ef8aca4798fbb9c15663513910ace7efb19785a9b4f672f62338c93c9b3a33482a89350de917164d072751e0b46da2fcb303fde4c3192163cd5cddc63cd1172177b78810d3a0aa8edd043eaa423955171d8189c6f52fd9dca5a003c7f909991574000d70344019845d9b1569994ff1722a1a993fa8779a5c550c84f3f95a0328b3c3b4cc70e109e4ef85207f142842c7fca97f71ee397487c05eb1f2e866081c056c972406462f1d66e96c06dee42489331adecdaa82826ba638eb7d0ddc7b0a711da7207123d3da9fcb0ce8cebcafae6fa7d6e55277d25ad39f5d99f8d3c7035c50d999b026af703f58420047e75d37431d2d46d9b4955b872d8e8720ead7637bcf5cfb0e8c574704d676300bd6eba6d6dc8d9699d55eab8cb48de89050c6ccabe6ba451b94273ee32bbaca1598db4d820c53f5aa3fdff5f3b2ed89234da616710bea7b8c905b9b522c1d41a401ab1ce1e225f2c7c113d7217323c8b45e5f18eb3353e3f89914dc3d6e8179bbb1220f90472a4ae3f149de5b16fc1f0ec2fced73d47760442104dafd20b9dfa1c62408b8d556aef75044b09ada01c61e510c0ac4e9e8f8ddcdad01a93fb5c119ee2068d5d71e4ff8a88e9972ca025123b1cdd9b24758872a2b5ad8e094dbb58a3f7b92d2a5fd548a24ada1e873db6c33c97518c79ad042176fad1996db91d252c4f550793099630645ad340bd470d7f2747b65bf54d2264bb31ce9d971727e587237b3508ffc17527b57ced8290ea600e86f5052dd1c83cface88302227fab6c109396b5014d90a18905418da93bde77c54333c4ddf088ee20e87a9c0f3920b5b1c78af14a1dab95d9eaade7fd58384881ea8b05541f98afd6a6fc9cc757825cf28fd7e0a6205d3b2265b5a48f49420f9e86d8383084466ac51e599bf7e18361eb120297cb6a73a8ba33ab53c2e98c613fd88e3bffd431a3bbedefae161175ed8b4c0ea3b3ddf7cb4692a9278159c90c1d8e62b1fc7808298dde521d57694114b3fdf8379b37145b3810b050179582ba0bdf1b21a5c119690819468c060186ae964c7b4ea136b4b634347912fbdae268441def3d7f7de32c355600a38c52ea5281d8327b2364bbab7bc72679b2ba520896b369b9452207b763e06bd4d75a2bc526d0d2be294d0f9e45934c65c025e802bd79ae1d06d8e09d47cda73d0784bc45d2995760d2bce1de90fe286b2ca17defa418bb1722d78211b6596ea55f6234b688a3b233aed24f80717e7cb987eed14c5d6ac471eee97c5132634f125b0468409c1a6b1a514e7c1cbef3578137033900793ce81aa42126eae824ef0252bd9c7135aba760702558627421ec1efb70dd680fa8f894dcf97f824995e7e6aa5c2e0354f258d451ebf34dd1727b0086ed6875602b260e0c29fa053f9dadc32ebe13d1f322c3971652aba571283bc1d6c6dfa749e60128c39cef6b0dca647fcfc6d544888ba00147ffb08ea278567ac7a6c9b37d6880fcbbcd2ce9ad3e773d73b2d0bf85bd101635c667f8da82b74fd8750de729a9fac2c8e8237b40ae4192d369f54ad366bb1948a98b8441cd28fc0618c7abe6cd826ba54643c8bcd66e53537fc51b213fbce352f94c3330ec0e2b8992743294943297b6e0b7b8c66ec5e09cf1f68decd03e5fff22c99b0532a953624ec3b6cd51a3e82b56bf8024f1c733302117e421054e834da32fa7bd9707fcaaf317edc719adf970d1ccab0be3e960109f7d5bd1a0246cd5244ef7a2ccc0a956b457ede6500c09f6680d8c0cb07c257db79339dfa9a2d9848a5caa0342f3649b857aa2572a9f4a89d2250e3bb0bd95aac7d5f5c40b67d2a53133993873d6862745090a984a17cc4cc70601b54f8de1e743b2e0ef62eadb9504e01a57309fec0f31fb602cfcf0257d52b020e1e2b4d7f890bc0ee04226cc731133d8902f24df5ffb9f30d8f7fe88d95858dd2557e5b7f3ae0ecfaa53dde67a4d6d999f0945ea32fac60810972c7c5b207c03629e20bc2ddd1c7d7389198192838e7f9e2557de6b7765d21b31624cf184bbb756d26bb8cc1e9ae1e1dc6c2a0e29daaf648c13eb0bcc273878f36a9ae5b1a7ed94a1f94e0e5e4cb085da5bb419246e7dc3b9cdb5af3acbd0d2659f1e62bb1282c249fac735d238df500f9903e8f15eeb397bdd225cd0d65401b08f934f33dc75d72128ecd036e935517bdb99067eb60878e866c35cf86896c757238378caf79f6c350fa974223da3804fce12ff2c5b282d6e3a54c13748ddb2cb383fa31f61a4b7075dc8273eb42a6f474be4cff4b05fdd83e206b51b4e57e44bcd8c165d40eb0c48b224aca49622b38beca5b39e1d8af1043a859e9deffed35006a3bc41b0fe4cd38ad35442d90caf1743689e54734d17eb159af4e35a801654c4e322246fb8b7b84338bee645e994410e2228b606ea373e4568e8149de6c2bd497e4d37851d8f31d4c3800d3d435085196baabed0a44051d4717b636109f27a1e7af5d811d04d97107134cc89a00042aa0fad2f7e83d33f9412e7c11b91a839a38172ee847f78843a5ed6a1e91f077792b343ea3c69b708ed7388f55c9660d53b9c5f784441b5f0491628a688ce25e357a7f5238b81fea7117eb2a6d87c9d325ae9b6d0ecd086b52a99b861151d7507c2184f38853da40eb7a7eb8d3de8123123e3e8752503b2017de6b10baac5152ece2a843ba6ad7fbfbe82419e17e246d9df71a5f67e47564b0c3697b62da1881107696854c333fa20e5c0851b17c70dd6f5ac72837643bc6e9c3b44f8ca17b074a7894c08e635131f013cd83b41d5dcd8ef75b860e4d27ba725403626a17a717ac6ea4bba07d8243a8edafd1bf9a3ce8f15405896952d62596b0520b77f0b9da272ebf1b1d8de74fd8d175cc6436356ad65eea15b69d604d7d1dac9c11bc80bbde84b3b7fe6b1fc395ba8866e8f999e1e4b4c700858a3291a693b2bdaf79663238a0b806c621428804b79886b8973e2ece6c778258c8572f32b3edef06667f7392fd75e73cb6f99de72ea8f00ee1090ae4b62d4dcdd0dfe8134e4e0d7e2cb8808c816853807626e886e41d1d8932f33df15eeaeb27e84ed48edb8ecbbfa9865863215ddfba5130624b6f23a059651184d859504e1724b75aaa05f1ed90e6946eb2b147497912c01bf3554fc794ee3bf7f5af9c8b266b0a70d0ee577453aae118bfe29a4fcef61629dd7cfb428d04a06abe98aadf3b78fa2552d6456b32a74c306357eb1213cc063e81fc22e237407a1fa4d1eb804b8d082f05fc7cfc98c6dfcde9e3ad52c4ce38b73c79a7967c507a40a6e7ccfcf2189d89eb609a30731391c45e2040a10973fe95e4553b84514d0199d850b5d924f7ce55f718f82a4688bc86faad76213f368e839aef41ca8714cead66c196b95b11fc34142d66c8a6007473502b8a08d5fdc8dc6c5916a7af39b861f6fb3584ee316ebf34756ab24850802e3fa4206cae91d14804fb3dd0f1eb62e6d49401fbfbe69879f4567d6ef59275cf2fdf661e413e38b2ca79c6d85753f2edb8688507ce8e4bd9f7bc762c99e366a0d22c5d1f3339ee6f3588716ebe31fcf3c0ce6c5266c319a0f5b2f90e0d4d1336407c6354d0e6ca5e2ebe1e91fd5ab2df644b49ed584905499acd69522d0ab4056788613cb9f687dc0db09f1c8b1031d583ecd791c02af4630acc740e31feddf86874a8041c0e7aedccddbfe7584372a9b8c3498b5c16d410bb43ebe14725710fc4e873ff9d08fd89eda71f1ecc886c421ff6157de095fae22eaea0adc91c57fdbf2fb5ff9dcd0f435195981f941e1a2910e7819dbef70d785978d8cf654b3a8f23ed981a0f8f8987551cbc2ee27e8330534d261d6a0dd202c70ef0d217a9bb68b712ee43d3e2a87a8d48b692c783a15aa7203bc400110675f9e8214bcf4a012b4230091319fd0fd7da76dee4d150a4d28ab4e079a28fd041b1c375329e88ebab598109158a36020671f33fbbfb9826b0849ef1daefb94e2a999a0ce839a0992a739539ed74d107e411cf8586c017338392ce07d538a6c9c48f2929a3ceb319299549a42ff4a39631d178e47dff1916f02098d3f06f0bbeb4921c8898f29dcc13fb23dd61de2bfdf637e78ae869b2fd0c70c36c72721abb80294783e3c195f72b701091499453b6f881e81b58d0f3785c9d6d8a083a8de7faa3a876b8c8d6bee80b50adada5ce69c11e6be762718c87928b94e57b261975186ad11033151ee9c52e3bf02558c88a42bb1fe00038d437becc5f3b885f8cb4c85dcd0e1f0229b61808361425f8544f98821e4d97d9fb24210cdb9e1dd19dc2092578ce54bc1f22cae4de1ab507c16edb4cc16e1d9a30337b12217cf920fbd706b508dd2b7cb10565c26a2ab436d33463a73d7e456ca5c2e228e2212616a40a98e28e3cf58779a00cb9e7bd233217f70e7a07198a4d2316ecc952e0a92ecfbf3e364956d020bac4ad8cc9c94984fd1ea985512710fdcdf0086d1063b3c6b1c81800d0aae29290c0c0f7b12c4cadf851f7f775d48b8f8ffee603a479c9da7bfe78136aae5cc9ece80cff556c8cdea84fb348945d36d200edb7ec4e085629ea3121892ddb404988afcf020649beb0e8379796309720209ebbbb7c1f0990686971c2af6fd72e0ac9d41d8c37f3ac8f245a98db7a314936566e19cb3c8db885ad4f1922532e703885de42694c58f08728e8310eb980930de05cbb771299d624be5cca43257b115f91dda9270958b7db346a391d01735e7da2c0dbee700d737dd0b94af0d21948d3f510e36c25a00095972f3929b13cee2ab120e4349016289a28e7ae96886630af8b5d3532d873d1736b3a9bd87149d5177a5f3124d7dd7b5413ddeb73fdc9d83d57809acf26a8d407e0b7d1ce92bc41db10d6a9e7f6a927c644b7241d2a3ea898935f198a83b898fd65c6fb69a7fe759c3d653b610336179bf8b3d3b11bf8a26f2dd11275ee6e41e1e4ddbc19c566cd0ffa3f4d370190b16b95c987c1a8227f68e2121ae0a6391e76c6eb3ddba5093ebb4961aca2c46678b99e639b174aa09bc79183a79e49c9e3ef033c1732544cbadf550afab3154ca4666f507a3c933ca8994253ce7c5d8a5998056b0bc4235ae1a7fcac27c691217d99e8f48461a6c38fc2664bbe004274eae6dc86f7b7e8321a0109f81c60e6f527ae64b0d33866da2b2e61579a0080a98770d2f38cd79c9ff5d68dc0d04a20df36e519fa610914e8eef6beab1daeb750cebfd79ce7e3fc8727510bf8a7916a776a7d42abaf9a80f0c18929a4e34b1b2fd6c922768ac9d324a44ef369f2c092e4f880aaec5127b3e36b01fc75d419f2d05b001b819896c892268e19b62cdf156eee86badc9f615e139d6f99862a077288f82e74f4a06975e7f97c917ae2590716749c549858a4d8da1c095365f665b06f9a51ecb8d09751e2505987aafb7e4680726f318320378d8398a211c0b66e9e89b982ed6691509f480f0acb1c12b65ab8292bec412eb8680d366d38d5967d8c18e2bec0a52b7adb8afc355c83c9e702212a45b0e5dde14d37ab7067796e524d8dd1bd48dbb18cf9786b8292bbbf1b0b2fc9df086c74466240460182f491154f73515a4471ed456b38328e5386a8e1f0360219e798370c36c14460d88a27c64eae921a27a6fa4818c9986ff73bf9ab93b904503e1f685e72f98ad71263c198ed770a072712a4ccbbe3088dab61786e454ff12371fdc080cd633a87cea5342a491d3c285e81c92fff8c3d6cf32c4e101c807d19e1d2124bc7ed86a78643413480b1ef3c9d9f58643e1b13a58eb3705718f06d03223351adbf12b7530a7f5c68d0b1c8e579ae9e093981f24325384e092459e0cd3bfc011ae8789b670d456ecbcac14784af433c2b4fb61ec1870e2809f02a9df32591e9b683fb3b834194bd92661343e2dfc22eefa5c856ab36c7630dd7e84b2bb1978a1b4dba9692cdaf7ba6f11265b07d738d33ce4e9fd6f98800b97fbea4c5df7ded72a5e623e6662c15d23b546bf373ac06a45c3077e7b283a0c8242345e61c4536ab2ff76bcbfdcdc44ab7040dd105fef36f8ca45f57033cff91569cb21b78108b196453466389bc7a5e1ad6d07b116071bb66df1a41aa06b960c7cdd41b1e7848ebb02449e0990dcd6a0219fa741f2217c99298740d00676a2bf5ff42085d432ce847726d94f113eb9475c1c17e1f37b3af643223885ecabc0d673729d1a44131b6e50b28937f3888b74de54b0bc36fd9dc1bc4dc4bb5c52e42013ac10e3c5b9c07e5fc59d745783d111eb1bf16a5a06ae2d5c672136f26c9cbf091048226af12cb3fad7612b9cc56da8102c71e2b549ddc767f5b058a043a9d1e674bd632a55cb5720cbfe1b8893ceba1765b31aff39c0f5c0aaeb84a8c152e3267d60effe919bf55fceae50abaad7800a1ad7b16cb34da1d6fcc92ed1d710d08e3242f6724d373383bcbb759e600b24289ab325123a587af3b8d958ebd0dc59063b50f808e5759c2d2fae46635030c5c876055c5e69d1d70abe006b065d9eb0452bea0529d2dea005ecc0f6719d720420c7d8a57c5290effd33598b3cf19c6f45334e5f039fd9324a48077677aadbb0b17ab2db72f27c30536fe5853968df2c1c442b439c324a5eddf835d4f8d579d56692633c8e45453e0dc6618c9518c0a36c2202073355ec16a3a1d675c00769afbd02ec1b4966c16b542adc447622e19656b2c5125217311dbd455b57e0f68a563732a482443f840e8b7d46296aac2473957574b528d22eb72b9359ffcdd13f0058c4cc2175659c2eae726bcb2b321a91bcb81cce87948186fb9f72dca0b41da4f192fdb97967551e632d89bab9654c95a560c77ec5a7660c95a095b4772b30f028e3ea4aa3e9aae50ce7411094513783a62cb827ddfc4608e7941c40814ed0fa1bc937348c4ef3af91a49fd0d21020c8b7cdd0fb810a828e7017a183d8651417f7f2fc16254280792f464b7e28765171c962427147546ebe7f3ab8bd859f31bbbd55a00b6bfb1ec94dfe7cc7691963f3f337534e8fbf14b43ce680da4e0c0723d4c23cfe2d4be502b4c21cd3ca151e3a5f131d8b20a087ed8d3ce7cf0183008fca3328181718f9e653092ba61a8660babf7ac39abb9782ed276eee184773bddf171121512165d0382f1d85818f181803c98816bd1406817e824e8bcd1d1a3ecdba040e9ef1fcf273566511b1fb100444cb33c3ebae03c688baa041edbb1d516f62096833b2f97fd0a4496d70e9e5159a78f486a560d4512ac9806f42679495c842cfe66b76f25e95661685374e70413d857ae39444aa552577d77a4a8a7009bf2d9f2c54a88b25ed0891e910a04f4338d4dc801a4bdf036fcf547fc8a271511bc1c3d95c3d13ea48046edcefd1cb3f18ba95b82241518a5baee041820bfc1b3875aa9a75f9e0c6b97d7dab1edcd3adcb0255e9d960944866ace971454529d4f565815e7f7ec9793fee8329fde8c912065a8ccf4fd5039cbf5903a022f335fe63818cf34e0c4b48bacfa5d259b98defd321940627934c9115f211b875a2477ec0f42109bfe8ead313ca9a81345e3c21001c476d6bcbb9ede49742318b4ee6a75cab99d943bfd692448250527c9c0a0f697afaafb9ae574df8005b75ac3030133cacd2a697594de4e896f1839615485bbe3f64eacad567db71e0b48dc868ce49526577754a15fe18b2f589b9b3b4a7f9c1cf8b9a3283ac05b590206b818b1b22e88b90fec3fc6d1936b19aae476929d8f8f4e005a17b09b72f2a1566d75c32da82e1a46cd9ad8fab6e4f36eb7e337cc3f4c029789a507cd3da2b41e467d40dcebf7d04a0f118b3c20dfe86c3c2d210aae3f3801d8e0935844504516ccd696f783f7f61ccf05be7623c53b1503aded6b45890d84534417efcab4f26623848dfb2b980ac44e6efaf0416076ac5691a4134c8ce5c470f75d65df14b0d88d8f2650e606d9ccd8faddb8eda9b921ef537507412f8b40049761e1902f9cfe18d49c632dda871abb826ec207516844d53ab57322c3fd51d814a0f05606aa2bb8781e095e3c3049ee54ee9a5104d6975dfae98cabca3ee0abb9d0e63f83c58386b66bb6a015e12fb7f9ab7c7f135542514929b9d2ce8018452604640aaddcfbca2993b6ac3db726c007797d8b5b343370caba8bf590a0833bafa13b2b6c7b5c7c5a53581c18e5e4db3c3ab7eb3daaebb4edf4848468c9229bf1ceba161829b298789a48487ed35069a2ac7389cda9609082fda95d527b5ac7251a3c838b31a131682f5134ad45eb6db332eb68813b27b89b8049166335d60789aa18f0ad25b4ce22877a93b8350414818ca12ef7071b8ddeddd9f2e2d2755602679a2bdd55e6031948d702a6c498fd21200051351639d386c74ab3a18b0271f1624860b4d780255b2461564879a265c8d49f6f557a8e905e4c97325b02bd185e3f7db6cd2922f134cb5e916dad9fd9419f0639bdf7b8c07d94559cf329e22a76fccbeb9bd96c08700c7c1de2624e70ba11c6eb3f9231f06e3b7b0a51b694b6901fa0a992020b727c284482aed7cf9b8a28f5091ff787ee3743d8b4ccd427435e3e70d477bfc0cba9fa9e350de62e9ac3104c267e276811f9185f6148deda5ecede3a9777b3970c08b11a12cb3d581ce2c2ac3c3781288d843a0295227cc336a9a7c78165130f785181ff07b5bc87c6c20934f70eb5f224edbf81ac1cc9430ebbc5e858c7add4b9ac21af3a98c2249762e0ecb08dc0c9fc454e374a682fc62175b29fbb7fee2d6553a0da285b94a18a431714a607a14a66578fab908865ee9d51c8c00bbe02d57da9c40492207835c1e47d10f4237e8f38e44587125ecfbffdacacb07339435d56ed7efba947e4795568fde0e0764b491ccf1dae1c72f7d4c7271fef39d4b893febf345e2152fde9744e4481a8adffa6c250a13e0d4dba31534eaf69e5ff207e33695a680adbcbd4038c36b75cff82b20318d23855c151bc21be96033a59eea3c2944ba5abd79d56b0d765fbda37ecc4c489926e71935f84c1db4c33ad1b1a57571f7062ffffb54909c528a666598888a14cbd7f5c60abe306165835b5790b3c4326a1efb35ac447802944a3d503545f807f934a3d02f6e5fd199edb54d0cdabc38106715f043dd3ded2960e9cc94b2dadfd5118fe3cbc9a3ae12b995aec8a828f5935d42207fb015c1832db44cee9ab0abba7e9a98b1ced983c445510fd9add79bee8d5a38cac308caf9ef75373e6b6b2efe18fa6ad76e741491da932fe490d28c777d9b443ac825af5fb25b3e991e06a1eaa7fb184b24cf6da048b961165773e477e71d7f5bf6d20c20ab9d56f0329c83dd602446902699eb1968ba5865493425fad36a75a083a6982254f6e118778a97fdcbc19063516a062d361820efea191bdfeea62b37c03df1d27889b62e2c1029a0f1ace4abc10d05fdf09feac50fe97ccf0f4552634bd24982ec8d7a954e0c55d37e21bb35a7de6aa79dff285ae707dd649aeec558fe0be4a27956222335031c44d9155f934c44831e483d4086913203472616e8f762bb21a85e433981d6e86cd43eff4611fd86b8e59e3f818c18fc81d387395e9bfa3d95e2fdbe66f21d32ab332c031ed6c952b95e56f535f4d866d808ad556f244c7b6ee51a09f51e4236e4c24611cb3555341c5250993187ca25d7dba7e3f4d834a8dbbd39cfd3f6c739406b74def7ebb3021bff83db9347f5271c9193b3232ea590af8aaa2c88fefdf2cf07593a171ba463518a7604ce5f40033d14e6908c9dbb3635f24d4b3346d54986ac17c7e3ec5f718c6738c2468d27779d6969f6c95f131a262b2f165cada965ec5aba6a2283c300d28e0d5832bc54e53c0a16151c894c11c51edbf7b8eab3f16a99aa765e5269f50e4ee7276e82eb819aaf922957cbda8aa0fd115e8d35a37aac4c2e8aaeba2d6b0b925072cc1b0166cd3b5ca5abe332329cb59bbfe0d90a78aca0b14998f46e0020dd653c4abb2c4f6393e84e235515d20346e717331e8ac4bb213b339d790d9a167c50f76a606c240797fc4b757a2a8d00ca9af7ebb9e7715b7025abc8c0219a59120efa45a2a80f09164f803e83d590310fefb26a054cbd22469e987ad6bd233729cb290061d3f33f983d7c8d8d902983d605b3007ca82bf26dde0d288b9ddd6af3100738ecbdad171df0d5abb77cfc76ec0a0b646551413a032bec1e007a9c0ee4b1bdba0e3fc71a6df63c23e3c45347d9cccbd0ecf903dec12e941b3af0196e4d42bbd16a5341a27e05e92325d23cd702b1e0129cabc2afa857c048f51aa3342a31632a27c92a99a9260e5b2d86362cb5d9f814b612b8441dae7fb2135449b14349070aead53eab213b5030c4f4bad64f60f9e7d5cc53431c4b8f4f4c76789e4383624cd4816d8507379688a781bbb76777616289283ee1f0925706ab51cf7cbb5adad25f46636bf6447decf26594db440c003e514fdc53915ec5c2fd677b5517d7d8490280ed805dc05892f23f0bba57bce1d4dcfe8aa6820e0fc8956424bd9d4e6682da05a741606ec84fdc32d06fa8e27d068b54106299bf71fe7e010b76c9aaac76f44f0e8177cfde9a5d6d638a035fc695bfe80aa01d7c9c755f33c3f5d7bc88d0659bae83e9d2060b1b9aba5dd51a74f3fd76b5bbef9c318170a56ec0cbcdbb78b50c695b997dfbf6586747aed57ec2c2842ae4e054a149221078589e7f0053481971599057e467d61a8a2ef62e3b97913b40c14d1e6a4db88a8f19883b83c15c359bb2c678004715bf80bb83c0cc58121490d2719dac35002af4763628197f52c5b49b10561545b4706559c58b7196d4d12b2c97e4d45b0a233550843489d37b4fe25703f682125e0f0ae72853ba060e0728fc2f78ccd084a212e5a804cdb7492fd6eb01434991bfc370fd33cef5375bcdae0e168d8e6fc7012e1c2cb25529424aeca711560f7339caf9fa7fb7dfaad8620c0b7d13f329e83fd8f88c9b0beed1b1906e1b2db0dd70e262c6b0c4e856c94574b3d7e786d8344bdcde63b71568b9913e3783161f2880dee1d435915e0e1dd13a83edc2b6ad9f67613570b0e10124bd2c90feb8e2f3d3e2a2155000df02cdedf9e2ee59ccc2658f59589275049ccc795f3029293a6b6aad92e1c707cd523e02d53d8be99041cb4fae6f8a8037b57e2a1d2a67ebfda6315aa26f71175ba071e73bb3d7618814116b4bd4c1b293ca9d4c9f931fd4261f7579b66bfad0dc831f03e96390c1bb8a7f506cc22a4ffaa8bbc06874c56cb9ae80cd182fd664c6081c5cbb819afe7fcd87654fbc042ce84d3d59031b84e4b6e6e1f4ff58c917ff06ed58c51bc19006be2bf4909dff3075550f2074b6dcbb469302b523204d328a6d71d8178445cc3decba03368010a52eb9f7f76f6ef8f2261c98aa27763e886237029b59c3d58460721c28be75e7b79883d6aacb5555ea789edfc6c6991361444ab782eceb51f82bdfcf06afeff6689e37c9a3c1efae340770605e37a5baa8a40f97d92e8034b266569a2b8190a0a1eb00a68ca612fdad754bcff3d8d7c8b915eb1368e1c5fd7281a7137cc611c479c4111af21d4b79f058955e648dab88a3cff40a70e2e6d7d496d7d37598d03075446ad7ab00dc0f407694c74e6ff42eed940a3b17d1c3b2a03ba035e53b287380f09928e9d6d9eb80dc0cfa10e1e0f756bb6073784e52b67f215048c863b72f48a6acdc7bb8459a72a07c5ea9d394ad8c8cf79ed0f703322d80b35fa104213a5287bb7f53dc439a79575401837e62f3216bb4cdb0542009fefa710da4c14bf8ba42cbea62f8ebae66684099f21023ab3a7850dc5e54184fb7e737d165a1d1da2e670f6cda0248ee8e82c02915710ccd5256712c5c09453422ef5c82f70faf74c6f17406afccea7ac1d7bc36e39a055bf2c23ec622e62ed446cc14cfab831bebaa419ba730af0e4c6db079792a23ccd7e2af996558f4a2479b2a17dbfa9074a6dc535270104f15cdefc8232faeb436f1f300a07cdad387de49b23edfbc7d2339cff34d4eb1c769b06752059ad45eae3ae8b4bccad5e6f44b87e5d0881d6013eada1a6377c2bb053a077332706bacad046a5c4b57556ec4ff6cc0464993a68ec94097e3c0f5c7d4cb207250f76662c2fbb231359a024cdcb78b51a8b43902172a8999f52180a508d3f9f749bdc2a5d6436da1079137ed8fa3c06299cc93f8a6018374cca917d1c7f56e8f2eab2f644e3b64363fe7945314d52714540c74ce1534dcf48569417feea41f0d91839cd5d55a15898fdc6e2b70c7bb5c677c73fa43f6ddd69ea997fdaaa841d57d1f26b803a30d3fe2458b78106b8eca7acc56005cc52210a214e8b8a8bc733931907fcfa3356018f1044feec81067df0523b6d4fb7138e0994478f40b4de14afbee5ceff675b596dc1941a642d21c35b7b009b88a8f916466b181b5eabd3f42708707b9b21919b1c63e2419181cec6884ae1babe873db86c0896cf45c6412ae3a5b7bb40338929f878040f044596e020d93f521f4ca345c0b19c2a93da77af6702615e7966276f1343075d3f9850610cef549b8948b708428f6d580547d28b905569449e279eff0c8813817a6e89f0f335308283cd216e180d733a116eacec90af9cfa9ee4e4af4be692680e3efd3c1cc5ac7cd97324526f239d82c66a584fb4cf7dcd656a9e1c0ea0246bc3a20f49c286b7c4a070f609808f9f4bc1d110be521a07880ebccdad577a7e87546c8c5b0ebe905bcd9b9c6f30dd23a2db9883f3227f41693d5f9a2b2f5ddf1c1460d30224516b477b040f7966866b6abbc3a1f24eae7619375eb5b1327e22571d9f66f5c0bdf4687b2f098566596397cc57519f2dc999c0180ff0c584642a62dc171d9d3e807c29adceeb6fd0a11d76ca8be6da0b44035de333a385ebba9a97bdce33df045534c8325f2dd0a7aba63448f3bc831ff329f801045fbda5b537a9713aa82dc204042ad69073762137e6ba0fc56893a66db4864be13de88abde089c706aca22f618b6a6080421e915df640009d3f50c4c12e34ac9710b46dc767806f211b6ea45fb70bf3caaf57e32bbeb6e353e98a6796236cb38b38691c39a7f6707cc7ee5ed2f2c20858cca0b9c9ec1df64499fb5a905ee48a0394354493ab90097b1c7f95042b551ccc8e888a02d74765ae821801a23718f48eec53eea5eda9873040e1bc087c7822497ce8fc58c39f49299983f3675083903a8e5db7d058f7a3995ce2c0ed137a72e65fadf9fe37a063ca637a4f10ca9e31558fd0dabe5ffbfb5ca237e1bf9ae624a01d9b762a43f85422a9aefe6abb1c2bb10c2b6761da206fefd5aed200b61f7ef1aed08bc75507dc8ab85f365a302e7015760a75fc597bc05c94ce2e4ebe86a343e3fdd09438278bead0a70984f801dc937a811b3cf74887f1709392e086f4c6fc2a72a5ffaf77205ae439870b0c3a2f7cd81ed14d33b40624f20213ccdde1886a1d77e1a2308bf41705783eb26c7e54bb0ba15a1e4a48054ff8032d39188693b373ca88b48bd499f7447f5abe969e3dab59619a07b45dc6ce50b8ba8e3d1b54902d5e110519c143d7179b1b10390ed13a4ed477ea891a144b25062c9fac13a767b075d7d52ac023e08f66e70fc72e620da1cd96d51acde6cdfb618b3e08c4743ba1ac52758cec75b677578a532a1e4374d55608d9d1915e4acc6c62d2592a412f1bc5eca44cf4f4c9b716e87e0dd5576f792984f90ce74f37ad566513e8cce112313c6456782458e5673210bbbfc461c3ffe1fc882d4dff57efede60ad8629399510f3badef77128361eb671d0b77c8ea75bc4643628dba0c82fb88ff497313f731de6ddbad07476b52ab3b778e343fc4f0ef3d1f072fc2a4270e03374b6434da0b727f0966f5eda65654edc9113d93c7f78f1a42147e1172d2bddfd2e88847b03a4dfa2813f1dc4fe0abadf06a3488cca408d4f9bb88998c3782528e2651853a8baa37e46cc3a171c8390d2ab2a7ed93a9ce38973f6eab63455c6b207beb7f11fd7d2e83c5ce8e05b3cc3392338af19bd7c4778ad5f6703fb2b1fa15adccfc215eefa5caf2b96aadf810c5e2e2a723ff88eb5730dd25e0247eeab1b7e145451a9fce169792aa1945d5e28e4da92768a8c95d506c657aee96dec546327fb76738ad95834605a7bc47bf823dc0b92bfbe2a637e171dd0174592f1b5ab8f8f57d44204ec19d0ee22b067753f2af1414c43234564ba1070c7107b9f92cbca3ff4ab22807f31760de8788d503e5649da85583d2bbe5a2d46dc7c0941c877166c3dc384e3f7eec772eefd220b1eaaaf9a940c54915cbd349a9ec1162157b09e35a1c497dcf8f39be39d8e7a3772bb788599f56410fbdd3d9d43c64bd2d6586ee898252e1dcfd62378356af5a5ae2003a8ce5acf54565f56ed0b7683daa85639c92d4397796f16849ff155d303ffc3a40ed7d2e2490745aab12d2a2b42cb857abbdb767175e74c692e56bcc9677506b5d5855ce8f20d5d38847e83361a3541c9aeb42da49515361bcb4439decfa9fd84f2641875ced38cadca9f8e74585082f8469ff67043be7a9387712c6387e32d5bf7f60562e309f52b518cd16cbc3aa3242e792479b69e770af372699049d15a8addd169fd10f264bca2cc3173f6dc5ffbc54dce896575d6d6efb78428a66e335ceffad372ba55d6a98b9812f29c9367948ba7f69d22110176e95050a6d123ca7d253738cf7e09e84e4c20d63c8f4267ec3b2e6c8dfd22a2c98f00ab5db54cd7c97930bd3a91a4db43b64aa9fe7b47fa546d4ffbcb4441e9224dc49bf4d0449acd86d081b8a6e0d969756e1f22c7de3bfd24c94214cc9f187d75da1b7eeab22b8952fd21d3959466facf486287b0c6bb91b91058c3f8e059c8dc7834f186706f02007ca96ae5eab964259bce6a9a42e1ebd86c40b1550ef38932724cc380afef991ae7110a7aae7ecb7a9091e2747a1ab9d60c61c01ecc3497e8d4a19ed222ea6b654f133a3aef8d5b12a15cf8b257e44d05d3d78c1c3249c8ebbf27b7cfc1685968d698fad548e19ab9b5c3ea20818a27f2b71f089f867da27c8423d93051ae8638cc7c6321397f67edb2a0b4075f5819e99346e27b9ec5a0bafee5e78246a99597be55ca547c3a8084579823c5bf91a1c86a1f381414245925a7894a02a048a7b6d1ba8e81a9977e32b82d128d12ab85658c5f28a393a22ffe29ebb7c66112c47effc759153924b5741c01707e0afedfc32b333334f72dcc0463351c91439a4bec1700617055d9ce0f849b1f6732c3228ff7c67498f10530e896f2a5a8c4eac33d4d9dc2adccea031333a4676f0c4fab1fad2d58eef863557d8924aa4f5379526332ac7472e32bc1234a88dd3c97b5da8edf259be2882214919c6281b18181a92dc28cc4b1cdb0e65809b45c433fdd6ed8077badfe520a27197eb938a97afb5865f7bc6906458d026c6d0e3335b80e62c365b5ce4d786164f18623d580145743a32156a7482ae94ae7d60b50858fc0ad65785685ec3d1cc314f3a564d2eeff10a7689b6329ca2ba9678d7f046c99131a5d24d06081ba27e6d26a36e4e1f327a134135200fba142468633660c43be8290f14a8e860e98f177c2f79d67163a85591b9ef836c9b19a8a4f818e4676b040a26bbdccc0059d394c371aedb3a5b12979c132c60e56d81aa9b7e14c7f78012ca2e5e151aec29f3803d915bea7bb4382a37d86fa628184e704f40aa8cb0b5776af1b8e067a542499ead6b0132daf5aa61a79df59463c2c244e3a13905471361ace00b185b2cf7bf0f2b69ee91a9a603909f2fef130ed152020813fd52d620ab6b58ee4760c15c7d7999e143fecb0f5c61267849f7714fda1872d16fe5c0e9b8e9d47750fa2a9bbebdfbcb9dcd2e291372306d54183f9978cea836b5a95f88ec1337641bc94439671c6a9cec19c4bf900e6cb4e74a04f02a2f7d90540c5f41795cc5c1bde0d7045c39fb9ee1ca2266b425642799de077b735a91a52bd33c01d2c1c523e687e5b3e90c3f8e2e6f78fd6a9c614a69c21eaa96de59da83005cab41a3498898db306438cd36b0df29d3ed47ac6d20402a97210d95fe05728a0b7cb5443e6edc1ff886e0a647cf0e7ca4df771af38c474f0f0cfe9b475802535f4cff4929155f62cd8a341041799a60f6d4c99851f0840cdffbcfc6dd517e3428c3f8f21ed15c96eb5948011b1641b0d9a00a032c8b927c751f85ddfaa95a04b7beb78f8478d0922a11a41837988bab0e640a4f15c36117f7b9bb050cf2ad06e4d0754bcc55570f2bf520fff56dc4a937357bccbba89df76276c62fc26fd2b581443eec10b2691fbf140204d87830acb76705114eef08200626d1fac1bb8f7f0c225337852856ab0076339843ac4d7833112b23c04e45b4ab729348198f1a353edb401f9128a57040b05bd2a295557405932efd41863d057d3fa8c6077a8bd43cd026d9e1ef58d5ee5a394bbcbd747c8bfd825d5b22500c58c2d8088df9c1ede9cc48e90247c7caf4237f58139bead3d0fdce340f47fe9eafc998fa699d31e72efd36ad020de143a098aa5e1136eab4a91f7de4cfc1c96f355ab956e2b853d5143ffb34d0731c402d4a561642e98282081216f74cbaef2471f4af50d3590bd49c4c6a773419f93ea2ace45f38bf0e4387dae7b023a98bb88d821a90b53c574210f0304b386b6897e87eefff9a4b54795fc260763158989ce81c20a0b87b94f6e6cc3b4328f491aad81a54ec2283694109cd20851d5db943f5ff8c61d99cbb77defbad3df46dc7011389d0e2f6d81680e3b913bed6c5a728c065133d09f0caa88ad70242eac45ab3fcdb67c60ae861be3e69a6d3862d36fa3e57c02aeae6a8b339a76d22d6cc988f5baebe40f43eca958ac1dedd8c9520fc2aa167ae9743da3078731851daaf11893a289a8bb2afbe1d7dd13e0d3b54c0e5c88efc83aa4fe2d787927ea5d91326ebf72abb5a4ce089b2bedf66399c1c97ff077bf6999a487527af8ff7f25d7568eb158df38d4cde87e623b156598c25e83ac2af1d02ebfd2e7f67c5cf5568cfaec135ea0cd59407c1fce4a5c3ef75a241f8f3f84cef0cdbcd06c5cfa9a5c978da94dbeb448a65edc2979624b1c863e6c3f5a87ac602cbf99c766861eefa67bb9048fabccf57369de87efab2bf22ec4175d2963845823ce484c21a8afc065094abf9f7140f12899c74160d87e1bc901f87dc941094e6b7e5ef1dc6fd4c02568892fb24ad19742e9666335d3c73da90d3c27666e617a60f0c24c6154a9d46ddfa91e39e1d0a3df496164405947dd1b3b492c04740294b753f6af54f6c5099a462a0dadb4b209fbe968d4102b2c831b29c81e6b09854c47d1d276f7bad7ec3ffced6e04059ad1e761c9e0365d973250958fb56475cb79bef6f21d977faa09a0b98f56d44ecbfb8c874ee220758f096f3786d3241da031196317e28e11f9e6ce7134ca0fc91709075859eff6f3b887bffb78a53aea7b13cc77a2a0d5510b9aec1a68212fb69faff73a8c4245b2ea6237e8f076c6b33ce75128d600fef765749a2e9d92af746b90d54d01bb44c849f5ec753e8b8ed8d53a8310fac5174893cef4782948a658216c8c4f8437bde0398ca1738a6aacab08998e30c47e075e65ff34994aa4972f64846ae6aaced2a800d06262e8c6def5ca4eb42cde84e5e1a5a59fc8e9a70a31d169f45f9aa368a4a6cdcca269b7ac71fe90d75cf7b00bd18bf2e7b0e3f2cf2d1daa8864c8f8fce8cb77016fbc59baddb3f19dcadbf61bf84889bb1894433fc09659494155e4f2860c543c2f0f2becf289db3694fbc9d747f065f21d30b6ffb361ecf3be65ed50f82c4c60bde741bb505bf0aa5f785514a8bf248f5ae4e51ddb571c6cebd3040dfddde678a5d406466bd3694aebbc0c7616175a9dbf3e39969b95b8dab0cb43788083798da78303ebc25bb479ce71e71a95cb55de3c87f969daf0504f862b7daed4726668aa81c389a23e43a06bf5a1e31e7364e2b70498d64d67ccdd3528caea8b7c1bd141d14d7f637859ddb3343152179f314483fa72932fd6b96b11721115a9ee0615069c66b9d1217d555d2190d98b32aac266c86071464361b3517ecf972b9ac35ea8b2cfb1650d34c7a6974386c2fd261732bcb01edd2a92ac5d12b52290883f4558d2092bbb5d17bf6aea82b98d33c8b3c03220d47a6d68a28de517e7b6006446f7345532f04c54d099c229770df2e20e23882594882400e5cfac0b8ce5171d122713a5b1c4f6738d9bfff854ccf81eab59b07f57e4a3c5ac5c8a0f75c8a5a22b2c1ba6ab262321f9f99f1bbe1238fdbfa34a6c2964638893e8ccfdfb5ae8e1acf3bf9cfe6032e6c3a2fe5061b00f260a1fd1a4581c83d9f3d61c86532e39dcfef736e55ac55e41b250790d3eb3738e6da653d5d51d1edd1b99b900b4a88c3ebd7633a4ff63855ad42ec142c56118e0696b329a56ee56740da57771dbc4a3ac7a6042c3f6270ebedbeb9c22c7f194a017d84891c2cd132bfba39af07eca132744f1b3f6b0eb710fd6dd8e588d40c828ff2534aac5b25b3c501563afcab14f91d3be7eddc84787cba5f0a98894294184815f18976edb41db0d55027c40661ec97d9e7f81dcbeac8022a2ff8489f3e88d6d76bf29aa3350c04c9116fb027748a18676a6d17220db409f55d8e8bd048e1493bbe3216db643d848c608aa0587aaf130cbe919ba01060f10e7e000a0de578164e0c25b89ba7a15265d738a4cc3b6f822e04923ba76631eb1ee82d22a732d92a549a80f9df1aa8d0e0c2d83d8170f410292880cf4e2af07a149acb5fac08caf54487a2ba4f52b7828c0d5e6a3f4d8b26f86d90bdea796607f31d554b3a08bbfe147994e52812eeef170c7263ba5c1a8562ffcd7ce1ca87c0fb151babb24d42d58e35cdf8ea730991604cb58bcdd4b5763554c59eb4933dda08530b8e668bd821aa461dff925933e3ab4b73ecbbf5d9b09b7b5f4fd8faad13287dfa5b95f6d2ae75eea6f171d82b942441baaa3166765d3c420767b9fda7f0b924b497787a4f70dbbd779993de31ac4f0c641491e3ca10dea6eeb89808536d3c41c51241f7aa17692e9243e22cfa273c01fa15beb4655261838fe000339df2f05f87afefc2253dd8835d06071755034ffd6181ace304cee8d6025ab1640ea9d1e5b25ff173b062e7d0f464a8f41e76953df84e89b637ebc63212eaf1411fab4702546b2ec311fa14086cd5b7e58f1c99407d89803e4055d2ffa42f87b3f49f30a5c5f24cd011fcdc96125072ad7150573c36f2a32eb331b11bde77cf1546aa1b2daf2d8877c32b2245b8df310d2f28b2a02ceacdc31c6ec8f04f04a5b4b3bf45e140970eabd424ac3a0fde1e8f0fd5ce27b4cf1794fa434705b4b65ce69098740da5d2d17833826c6f244235ef487378e8b7ffb814f3b42d7573e3bf8402770e1079313107584be88dafcc70401bd2ec47e72d5fcdef93b78fa5a0e7e5e900d95d82137bf6d0b1201b81e5d12c3d50165e2e35ed57304cc761d541916c97a044eb9a4fc4136bef9a2291cbc9f7282f5bcb8db092dc5fef83e8f6dfefba55b7b473d0598d2a46fb5bed016f330edb1910f8c5f5f549f99edd5271a9f56858f5d0da004b586d52cd1fa02e9db3457247e9222500f62d420d7a15376a1e4218c3b440c2c0901bf3c4398789bcc89cf6d1f4275b9bf86d183d6530a3a092e9c7040c9b46fb92214c28b1616df7ce22d96a677886d03f97edadd21bf035572af9738aa5db5578bce1efca8ff39951c08da5abb170313592ef5a2314c1f96671f5955d93be8d546211aa0fcaf5afc933987feb3d0a1e83b64be52d03ad7b0f97d96102d5da165054d272867b881faae6b301918500266f61c3c5926b8ef9fcb23eed3ce6d277b82b32cffc9bfe0df6c0e4c7b6ff853b094fded693ba4355eb75360f2bb14b5511552ef2e7f969d90eba73abde93850817768bcac53ad6a4519c72d30d2a70c5f90b4aeaba3464bae63ca3b21e132f22f28935c2dc7ba9ddd386a879fa28a167ef68c4bdc9bb52a78b3400d2fcb1c11900535e471adc8ace86f9651844bd0a8894442bb016d3c2f997614323484de0d5ce172493dfb53b9c4685b441e49d798a64e6b5c3f6ef7d664b854571615ca8b1ccb4fbc16f1d8957f04ddb9fa80b29f03b0622ca0f4e5b2bba45033d8af44daf5b7c085715edf6ba52f68d3d2cb7fdbea54ffcab042a79b900f15123ca7ed8890340c436ffc1c49f28856515b79ccbc784772a5fc622d3231db506ffeb51dcf1c3e9e8cd6f29b8f57b5659e057c06b85bd60a006cb487fca84a482bb508c609add8e6f67699e845129841dc27faa32feb8a85cfc2b3abab1268a967293607d770366ef6ab058b272aa25c5c53a7b09f61a17b32ef11b0679acf666f369e645841a1467a03975f3275162da05d44845c235e7122aa01639951600a1a30fb020492b96f5864961845536b864ec6bc5da156fdef14e60268fba74b841ea8f9bb536716f41d8a6b5d9ce5396cc1c1dd19187ec6028f8445458f9105dd410629b7283523d389f1557400a34ac414c37ef8d1870208b1bcb8b3c084de2f75ea387895c5e330d0dd5bb265d5b557a4dc1aa75a4c36937e0f9d1a6e8feeb89e69fc7961c0dfdd998424614aae64e9d066c5b27c11ca78327b271858311e56f1642f85ff4e5454124a36b315194a5f643b448e448b85caebf066f56473e70578f677e851aab409e9115609b4531f218a9ccdac1ab4ab2765632be2a9c1cfebdaf03eb85f058cd3864f9ad44fd8b1ef3423ccbc1b459b4eae02e398bee6005ec7be7a219ca0dd6cc92fbf04c94bedfa5f283edbdada1a8355fc16cba0766616726d93a3f593e750750d409e80167b22657d2ff821dbfab2c7e1db0acafb87a55cfe4057eb6c01c7be7cf267f6634e64c1a983a755ddea5401ddd45761162321c9182f2a3439ee3f598788536d50fb10fa386ca86bfeb1e9060ed86b87de151ba6995d166e6252ebe726bdbb4f6e2b7abe11ebe34e9bc1e0f93f29eb6c7c2e56f6076dcc6e9268e1629fb3c389c89b38b37c331164376aee73126f54a9c9e017d046f61b113e25355ab209a9d98b24adbb1bdf2b0cb3c9e14a8d77a2afa5c35add9332689e12d806b69f5d6eef639e57b142115dda0770222a363f6f365d65a02231c2a155fa6f5aa2daa4e547b992f23f6a2137b4c1e51c2463fb0663b332d4fe794049a15a278773b340201845b7546b0013168e9964673f354c3d82e1bf697012c0cf4076c4bc67a759528ec26a05790a3e020ecc77324a4cca2965d716bc19a8d27cad3d3b5384be30f244f0131366d07b3a913e7b960da5028785dd8b5cb9f0ac8cdcd854196713036acfdf5b4c5a214e26db4c8da62915aaaa0d1a989fa8f0e32808aee5cb868c6e8decd9a594f643c037bc9973a9f1adbed472bd8cc9713dbf3694e82f1132d0e4c0f6f5e6061af0532ff8f3a25924efd07605998dc59f8cedbd5555b36a87c383205605c7bcdd9069db939fcb46af46733985af883e13587a1134ef0b0dc82b0973513bcd8b3db0edb08564833e732f0e1fdbc6a38315574fe89785f761d89259ca3beec4f8dfbde58eab6336cb693a98e49de7226eb8706502b642f992a7e67ef705feba004728f7ae1ec563f98387d464d85fa37e1e7b27b2fdbc18e456c425b9e1d2e13d071b2836057872dc1085fdda97b3f8e7338cc82ec43f58fe6743c6df877c41fe21a309d12cf463c76939b92bf29d042b72cc8acfb10a2fad19652348fc8e4152fabef4043f897d1bf46d13f883bdf2f92dd38d09daf453a200a236190dd230186f9922e5c0c7ab33cd04e7c6c630d34ae592e4b145ed26383b9edfc3beacdfc7ed00bb0f66731ab1816725ca8cac0dbfc32748d67ff554cef770e5bf5426921e176cfbd719e2d7c59736396a6e2db908904caa00a0c0aee1cd19dc559f694b295368e04755d1f2264aa147caaaa22ed70b02c711d31d8e08accf8456ba71274dba6c178ad64f3cd9ba13ddbcaef34c13a332ac7cda75ad1cb00e2cc10f4967ab4b5a5ecdf85f806e218419213009f4c485eb5cb5d9ea3b9fe63d78d837e6aa4b93a6426e8d3a4632120c0e7620fcab4eaa0757a808fce664711d8bbbf04bbd13f7bdb43fb5867e8500fe5b7d76790d5aa07de913796a18b6eadf76a4ac066d89870eb172f1b2c896f051b5dbf402bf3599046ee605632d86cdf17f820a6df53569003fdaa4ae739e38c99aa1f3620b70f648a94f02a768b4efe311aed37784412cae45ebc92a08ac60a499c08de0dbc8f4ee55a7dab7b98ea7bb354d5bed50c35004e2da7e61132f9539526a1b5db21355c53c4c3e33b3fec03208806fbd708977466435f88a2a4278c9f019c6e43b89ff645930258cc253ba3b5804b6ff3b4d6bcd6156d9b8e240a907464323ae4b50f5f9ab559e6b68c68f846051e6693f2df2a3f902d8a6e54e186b5c7a8013cfbcf99b17dd30430894aa068156cb9bc66867f18e66f91cbaba9beddb49336546993265ba8f46cd9cf34c552ee5111bad4edf29b9c5b7b0cab44b45e0330c1373a4e37fd114f4b3507b9feb18794e2489afd87f29af2fac4eaaa5226f3d1852b2f5c9db0b95d8eca1737de50748295025cf75c2834fdacb8f1cc1b4d37efaf7116c161234135877f5c44bb9a2aa2ac42f6be01fe38e507f9734775cf74a132cf46ea9b8e104664f949d7c96819e017071a4b4a3cd7d61d5de2bdce39c50efbaf6277e4de141d415ed224b2fea2ae52e5c45464fe94de5ed4ac39f446da7040e717e2b548a15c6888dbe307bf70d5347ffdd10b288186aff940d817439d2fd136aecf88d153e8770cc45fde7d23ff892962066d853d417f72f6723d011f0b9d348c5a73bfbd3e283fe22bf0ead91fcd04fe81a8600b8ea1d515115dd373da0a6b1b92685d345d721266278e2f69c19e83e99597195bbd5a221eeb60bb7f702ee4028ae4d53d0d255f15941e249946566d914efca6b02e38bdb743c8b557734adce3d3969127e251957edbfcf13b1c3cd3b20a9394db2d45ce8d81c87e9b6c8bd309346bdb7ea321ec673d48df0585543a2b19344753ce93682634750ddd41818c2608596233e0b59d9951357b74d164aee2cbc42d52705c1e667498b67488fca3e48b68bc1a4d31783eeb914debd5d83953325311acea599645039e0ce66f80fc38091e210dbc0007006a7cba7b5a578070a2a1fce25abf88ac30fce4ed28508e3fa4898534e513c6651edf6967804a53fe916bb990a557d95b65821bd7c5da1805ce1798c79d1e4ec8c289301c9ed68876a3200fe8c34cb7791ed6f3f8ac0da5170201efa09b807bb6b797fd843274a64e2592cbdec45c7dd58a2f21548c4b1909dd17af9059553cf97bdbe50fec238cad1a21d01b087587c19c7f13f68cb4515bd6804ace2120cfa9b52ba36ea62db9ffd864ebb1093318492a9909644e7c2160cf1468483017a268285ea568f27498d05b20bd0632fdb6625f269f5b57efb52b5773f23ba4748699c4761c3c03ab911a1f50afbb3c11b474dfc1c319994bcbdf0e2839ed61ff9c79f4f9c904f708b6d4f2443e3cace64993a0be8c4a661f420766cbeee3b063f52b956496282b312a9138462bd97d15438b12c168f1eb32ac3d2d8788fbc301429597565c4345d9554048f0372953553d2f89fe117610e15888f85c13fd4468c5d95a5589393a4d96cb2299876f71dfd1b6d1a7f93ad0ac94884f30d5f186419880226bd41e27de4166b30ca34d8ba152cb28abaf601580b06681522a7f1bcdbfc54539f740b2381f79955a2824503072b0a3f7b32fc908549e8d77ad5ba3c2790303de8ea12d85f44dfae8be18fa3b08afc87d3e06d3d6ded88ee4fc46c2de7c88861ed6e9440a9fbd044def27056042fe8de25dac862dcf995991ad632b74ee2bccf7699f98f32c655537767e91a3751aa60fccbffa7120558ec8d8533356d03f36dd3a3afc111ead20af7ec13f3eb4eeb6d3ca2983766bbd0dbbef88bc767e8ffe9431c1d570e9542121ddc4976fc9d00bea0756c2d331b8980cde3cfa1df8a8d13312af162ffa104c130189a00926252e78eaf3ad67fb379173987504c99572cafd81b36247ee0d59bd092fd06319dbdbfffb4b24139513559362ffbdbf034023d6994b5aefe8b7832f1469507da65f3c6c759c944ad6039a16631ee7df1de3f3089b7c29c8afb62c24c297635838db8031618264bf85b697d27489894f43c1292f109a94aaccbe9768b78ef9fed50f7e69a2752a1aac1832fbb353cea2906b1b6e1b3a2b6a95b5e1fa3acc369946eeac06b9773d3a9f702666e979b7cf54795c2b610c27c3ad5271bae7f65cc3386bbea4736bc3c6019fc15177b7104aa55f2397c9f07aef05acbd612690aceadbdf6cb645c5a64dc35bf64bee9195acd9edb2bcfb58cf792dfb113251d27aa942455426fc1fb1016f88b480e0e7258cac468d854b3587b3ee186fdf4891213f4c37c3e5a1b5d64a7724387de6cfddfedae233b3f77bbbefefde2b735baa9133a0e12f711628fe4118d14063316524709f95351eab0052ecaf91ca8dc0f55513f85858d40d78dd8874019e42cf2b77b5cfbfec3bc25a5cd58a80bd660a3001a4b1a27a35b4e6df029285114e84a9c4f6af1146fc7e72db2bacdd73c4d87449a7cffa9b273d6158a199b24bfaf982f94b3d1d5790fb9ef7fccb1d7157afc2a60fa809c51b41e4d95e498e344eef415dcf9fbdb3a272047875f72eac76beec3ec54b24fde8372a34c71c124caffc109bd4038636c234adb1389889755802354fa53042875a40cec63f388360d403c6f4d35f879fffe26538215dcc018712ab654120f4faea71755657cddaf571824b13dae729a25cf0f6f5e486e798f189ec83eda4ab81fbeb4286d964418d92649c14a4f7a747734081328ce40efbea873c00dd16866b71ecd60e8b532c6f1f02ae6efd920fe5cc1df8d9cb7f1605f92095499c61e56d5ffd4e89fc9c44a6776cb7f9371cb193c187a8b42347bfd015eb20380416d7d29fa7014cd95ce6e82503eac8043cafa25fb8000ba4e5c0d8b0b8aa2bee028eb789d6e2ecdc2a7caf79e36978742d274c97b99657e10c5e7f362513290a708f927c02b5e68c9069ec648ec0a56183536f83e48c6db579f21e750f4ba20c3c1722e8647941d4ccf269c28e8cf9506aa4d954a214478c43ffff82100b480871f95559a20948202a1a839113e4ac27302ed7c93ae935c4a20cf36e9a606b5ba92d31cf9ca2a6be4708f43faab9fe2e13d9a2eb1be8ae0cefa75c6d6dd89b2453c60f2bd7908f00c621b5608c1858b2fe570f08248ae374a29a18c785c3032b91a60964a572400f291d88d25b988e6f4f52da999786709945a813579bc44c559d00c3b2b6ac68c6649bec0e6e273c835b00a38fc93b7b660fabb6a02346b5f11a8824ae30866f0cee5540e6d8113953bdcb8516ae12bf175fc51779433cebc26b277806164e59f2bfc130b8566742c276ac77e8efb1b2a641b2d71265b3651c5dedc0534ca658d962b32208f4dd90f8f12bb1272c6e7c7fbf654baa61e1764845a27ae4558ae96fb1879f09a1bd0f20d21450cb9994fe4cedb697b63134915513cf91522bcac77cd21ee09d3ff08e631cce4d71a3c7e67f9318a1201d01847f0501674e437e212649739107387c8d02644dd1ddfa3c0673892c8803864ea83e296e87d789d7ffd04f3009e8d5cfa36aa0658cc6a73fa7bb757e61baa49b92efd3b5055ceb2a889d970b5a760ad8052147380caa0e379a75be12e1e5b4c570009171fc94dc719ed04ff4981a4024cce1237a9cf9da25301d3942c61a4d85548285cf9e1e27b9763dc7873b612f47d8911240da0207103d837890b477966fb2a349d1bcfa712d61b50b62672b8af4c8db52cf6e2c47e0f0907db09da0b1c1498b9c5b9a47ab3e5bdf1cba6aa2306c3e9c8b7cc7db9b1d983a977a5564fde2d2c667a1b44eca5f2700060423d07b98a04f0ad15baefff3cc3a9fe010a504d7597cf0397619fbd13c4da022b1cf147636b5497d6dff08c9965c3189f227de2bc1e75247dc9b97506e1cdc45298dae329c70427fc5c0b1d65dcdb63e6acff0888524dd063458a8ea132fb12ffe5439c56a7ee5616f52633c285bcf7c9562d6a308f08fb93347469a18fa82af7f660a13cf25d58299b1ecda333708de4b5947471b17df1ae43da8286ede731a2e3d6f2e64eadb3773f9374e30ba5e6fa0f6e24a4fba84cd0fecc11d0945a44f3271edf516b07097eb92f585e9d340d8c4959d9a9f0fe7745e1849ac31e01eb4bf5d6b4b357e63b7e50f19cf256ee3a4a2de08ba18f3732642da5ee34f5776af2ba838426e75258aef86d846dac5581d521eece97acdaec84ab6753c997106465a191db7e4eabfc1b8534cf93a23da8806bd7eeb1bac3aa99081124dda257e0f958bfbc40ca0c4ba8d5c3879628834933ea10136ae6a3633fcab4ebe55220f257518a59ef25b3c102ad5c3afa2256a42f7fa6e386f8ba289970dfb70cd6da739a20de7ebe47777c8a94fc61fc7863b0f868d45db339d794962e09a90dc778dff000aec4b9a92b42fe02cb74d1a80f48ad8ea64c8bcfe6b1a6020204150bb82a17d6fe65634022578e9fb68f7bec7c4169e96b106349b879f6b35e2d29dfdcef82cd6c832b4ba9588c7b86b58db385d808bf5f0e236d48f3e13094237bfb8c7196b2429d1f99e7bfbac34893fea3f622e955c9753e7ccb8ee1381d66ea19795033aef2327e7072f38d6d149f65d142f2562811e4cf2e48cd93ae1b670e2a9b79f6f72e76bba4517ea3252def70727acb3d4a9b496939001b191d9570193d5e169bbfd274d4df2d0485b560922e6ed35fa164caa0c3c7d93c1bf697ac1657dc8e7783f291d0beeb32980c575bdfe140817a6a80f7b3eb086be81cb84bb563851ead2a4cbc462267d25a802c4b85ab6a06df187cefcbf9c6aa0f1e8e1f2eabccbce4e4108d288657e84cc3ae552defe02c20ddb374f1a58c35f36b54b5eddb114421c230ae442248cb996d49e659d59e23da2beb8ce4510cba9d7b4cd1ee4d679e56ebb4269ff2efc5b26d7cf29fa6e5914c09524e73138a023f354422785cfbd8c3bda078b1a136778feaa4d459dc0ff37f0973ce3863cc269a3781e6758d2fafbfa5aa487cff54e19ac9e1b62724b5c76dd29ff12836755d312da421c827ad177b942abb95b129432705df8e077e4d4cfa9a6a522bbe2c1a95d8a84f0036f52166d783d2f6fbfbb22b7a41165c66af40de402e15613a759bd31483d2eba34ee62ec9923db444dae5528364c3e804c085af22cf3a3aa1bcd83b52b79e8b288c1adba07f443434a55c1f63981df83a942c9006da1861dd3eccf3bb3193d836eb22f1fe5bb1048b8d5e343baee83efc1e145054bb4490242fe43c314e88981f6939ae4e6f51a3a2f5ca9f16325bf7b3a3af4e32c577a5045609001232d9afeda768bb449d7e8c36b66ff9cfbd7e8d510462ef1b7cf642abd3658a568a49958abaafdd1943dbe2b060be6582361e778efd00dc57301eb23f5c64d25bab90455a651fda3a34598811a5bc847232ba0f3651bb4e5ec1f1da7847249d1021e1687874616ba2839a2e751441057588c545148fc42d72bcd71d89e2e405ec65cca2148842de8283cdae1cf6da5f828639b18494e684e2811aa12a0dc478c426490e7eed57d1955df6c8ce9be8d224fec368f1c41c0892453b721653abee191e9784bd8cfd1d4a0bec041bc612aed428794249dceb6bfa825f0419f9f50551ad703dd3911b8ee7f9c0f683dd2c682157297a9a14ce2604d34e1606bd97992188b0ad25341a51323164406acd3eae91d174c4756e9a99938defa4a64e3dc0e6e5a57e933ddaefa28cd3bdbe2f0662b7ca0bd38484603f9555df460f46535093f1ad5c8a73c06e8c8d1a2647dd4ad58ae3e827b4aad19dec1889bc827eada32310e05fa9ec374a3b9785c5eb1ac5fdb1346b2196f8ad1ce1239f24c9dc34007c83230b9db8fab135a6c71dffdc2d93c7ec895824558f5e0aa76bc771e1db8012b0b38e33d6c5e4b97d7e042b231747f441dd5b630b996f059d58ec472c7e4e7b0f2e69cf3d3aa70d0ba423da4a79d9a6a3e7f8ac3bb03c4e4df3512ad7933049f3a0211173cee95f449500dfe8134013add950d1fa4c36e5378be2fa16be10c588d39754650380f24358b29f38ab7cbc622e862bdfa889e50b1930ba7aa9a50463faa24d1917c2895c79ab2e6f676661a0ff76e6c2af1a5dc47637aea50943e12a15dc4f1ba02f883608dd67470f5b3891d23f5754b6f671305a2b61368d4d2e2faaa3550660470cc5474dadff6ee317cab75130baef6d2fdbe32e1a8b14768f43cb7fead5caba514c117548ec8a71625380dbfc1ef436a6a5c2728be6c63bbe84851bc42ac3e07546d54a00c33c27f95665a53d4f70e703d437d3cefb25bd41bd972cc2baf50917628b1e94ba36328d743402ecfa40692fda348ba0fc9ba5c3a603950f50a84dc8d7b8d28daa329b1761cfe6d6697765f75fbdef5d69454ac70d89941cf6e1b8fda0e40c2c308ba797b8701034987b53be9ea7b6b1b7dddf1552f26e91d16565abda3e09fdb257e2e8ae9ec398502941e7f80e56c689cbf8a126aa746f18fd5cc7deb1610d1f6066777611337bb0eca4bd836353438e01ec439830bd81aae2167591109e9fad587513697b8536bf590c778d1d6930408299ce5885ec473b9326930901bfd6b688fef0d0e76c9d785f60493e590174d3309089a9d66f9b3b9141646289f6052047e70ddb6b6dda467fba4246b5870130c67811d28b18dbedb3b6fb388b68b812130cf66a3f4a080e086d12cf1e72bfbf6d1e48479bc705a190b029115c4f8cd36fddffb864080f78a9c6bc9a4528aefbb5c7b97b16b6ffe7312572f3e980129d31e2ce8362f1ac70fcbde59bdcd68c8fdeeb14852a9f821fc28882195ca8fc57ecc0c9bab2ba32b5b028e3b458396ced23b480a36b84ed6758779f6124aa436de4464cef2a4b35f9d0d80e0ee488558cbfa81a65dca35f5b5f3688fc6f16e010bd13543282d5a4a0da7e3fff84a8be3d1fe13b60e9e1c6b2bc946bac5e9230f0c306ed148ecfac93133418dbd12bb0fff05e964171250b4a03088c8f9d3b29d3dcef5423583b5e7c25681170e3597a38269c9b478588ddd94d1f2e716ff73e4661a87a4fdf1271515cb490baa20ce8444467ec173741c5f2360fcd452c23d135d82d09d45175dd396f36af36162e877f5c2a8412cbd24460ae9babade8c39e3b291089a1617abc77013916a0cdd4e6e9b4c5bb5b950c527e66661003b00d48e5b11906dd9941d225bf2c48e11f956b2171bf6242b767922a01c52c16f1b5f82cec4ebf944a758dbe3576e6594cfbcdd480fac88ce928e72ea884c8868cce6b84b13cfbfbb406aa085c8abcfb9644c0e3e8aa72a20c995be59791215fabb74c741f73dafdf369734362ebe8c92438897495ee58b55ca10ad4e25ebdabdcd667dffbf861086d62a67097985a0377a9740765b08a54e3d1e0ec93fca949fb8b6f17017ce79f4ea9abb9b63cdc58d25024a54833eca6610cdf9e7455e5ce7549c5bb7fee20dbdb5c5bc053255e9ecfc1b6daddd4430e6f66f780b58e45a5cfa48c8b42d09805f394fc65b447c4033867455cef867d7e1ed0be415406d4cc71a4401895781e58b4c7d78e741177deccdc07a406848010f48babc644cd002e8c9728c861ea75e9fc1c5f755a611a2e9e2a3287dec9809783c7a8dc09d5812d749999b8f5f9ebfab6932949364c86cdaad47b87fadf9c21b28f92137203d2d5d160b1ccc3626d8b4f1d3b1bc7178d0f9aaed4b7219ef505ee3afe6307c37a1f05c6f39cc7d25a27b73c453ffc5e302648b2a31275eec14d9f66f62604c392fd634fbf7c7c5c4e2a11d8dc41872b0fb0ff3595a7acfef4e3d24a9a619bbcd0c0d997df533154d1c522a3d888dce9ee7b732721488ddc4c7aaa02e949c8ff0bc95366a9dc4a51b9bd04fd629d7613052f56dbe656d17209233d0983c9378c7f4b7a3b93790b907f5a1af9702cc4805e29e989c1ca9b456f1810a6ecd941daf613f6092395f96f1b9a3f4168d7b44c403b819200d3d59cef22219dfa5d1b38f2a0d8f0a09d3f0c39c20cbe1bdcffc56bafd6b7a7b1b3601d35b3c114fffba040823ede65cf8d18b4c8c2887eea088552dff5dcead196867dbd27288024ec86da59f8f37ee33b95ac440054e96a10aa76bf537f09ff046eb88315f4812ff9826f5b8c109c59e24e9c196a3167f7070ac66cc91cdd4601dd3b6bc7105d7dac3dfb79480e91bc24f7445c24bd113a261e6c66b4b432845b30c773388813d96983527ed96cf6838dd094d72fcc254584bf2af36aa870e5b45c987952a5380fe2f4d6c9a3888aee1d850ad48d3171f7f6d6b2bc597d1effc8c5936517d6e4e78545f890e776016fe34cb3116b92cc5849b18366cc405b60fcf2069e678a2b6f019fa06ef01e2a33b7ebea7caf2db324cfee5722aede3b584b6dc59e452ca63c1508ed577c12558718678265c87bf81f382104fabc94206fb32ed41792db07d9bdb8d69b260c669e384de4e878c90d77ba4234fd0fecf96cd78074f7d7649b50ee66e8871149032c9d1a2dc0e63f70421cc924f1ee19dba8a1df44c10eaa64ff14409fa5a96363fab7b7ac28e5155f0e81a724cdf02cf48c1eccb41098d4c02272d6ac48c8fc7215480f4c82fcaa8e8ef3dcdfbad5b3ee824fa7d6d3550a51ddaa084a7b510c20fa1d186506984c56bf376c97cf464a81cea0edbdd111bf17299007d7b1b5c737e0b3116179518291b458e8b69e0a3f0d7ef4101ff7b03059e733dfa55704ab9eea56bbafc246a3ef8ef08bf21b215984866ca6bd27d750620a07ee4ba28c41157692e56aec08e9ae9765e0df6d5c397441587858bef3fcc5fb7320973cc2e8e3a3e6a7779e444e2c8e011ad820766b95a33ed64cd7d76bed872fd3fd5d1b121346d595fde16f7955e00689de42f7f0373becd60daa456e69bd48d4b706d24e0db68e8fbe649eb31d87e2b1def1616fd3a25c71b7fb4a9e44465d4d3ab078e60eab52ba7bd0cd9299fff7604a01b86ea9cc2e1850b0e7de52d769153fcaf899af7b101f6c3c83c9bc1a187ca49110d18763fc88dcb267c93d3968aa77f19ef063deca99ba6f9d392bd8230254377426b956ee5f8a4809df98b33875e1e40b14877532c3d4cbe60e458c73fddf81bb359bd768fe40771479b82c6cf098c0aa669283551d75d09c13ac462002d656badbe5d1953d627655c5cc7756297145526e05812a2732b14f064ad9088ae3e58078c1ffdf3c4bea04ce4c13c93b557e4bd71357bac4d68d57c1b6a73963ad0660d398ce001665e52cfdfbcd9733b1cc28feef3692144a5125387d548348feb2dd9e1c16bd094372971caefcac398e4a9af9c10057ed5659d409048847615f10dc78733fa653d53bb903b2f14cfa26d91ebe48dd95e4ed1ff91801a7300864258c1cddfe5919b6bd8f18437897e36d7f6dbe677d253d83b28b026dc91dad6607824b44b29a352446006eb8df7efbd79760b6fd1e676b50ebb008cd322cb40394dd3a03d8d1978261b5c6508bea23c09928ae77980c7c4d68cc7cacfdea747435c257833b28eb82b3171bd91f4ae661218d60d1afae000a618608cf3d2d01499b01f54cc3ec28e795cefa98104a6ab5d7e97bfe84d7b1810500967e92e7a324cfe6745abed1dbdb19edaff8fd6fd31e1d92349fc6e1476e0ac819da218afe9d81f9a1d18912f665012773e13cec8a650db83d0f4b11021d71926d7c2cff5bff8495d4991a8fa17f45dcefae03ecf6d2fa35be67acfb6c397cd45523b83908623a2137f6cefb7c3270679259651416d027def58ebafaf58f2b3809fb22afe13a024faf18db9290eb48328c37a94c7f6f8c59526a1163ddbb2a0a1b5bc6ffc55e41d1489c698af86524862cb3e25def93835fa3a82f9fe63b36b9803141eee85de5e63d9ddb1ecf06c46c1a3ae3ea22eff963f5921692c1b0ba09a40a800f52ea6155eec14f7de2fbefaf63707ae36035ded0c526a1f5eae96d2af549e45511276f7850c1276b82287d50a83869cf6d55f9ee2aaac7b9278638bd4cf18d24c2645ab6e6e535fb4c40d2a1d44f8018103457ad664940a7e187789a165eef0d3a4f240dc20ee89addd846175426d2ae824241103cd60c0a6bbcdb60435b6919702eb986108a16ba8650a331f792e44853b423ffcb8cccf226972335016e9c277aefaadfe80e16fec24ba84098e8e4395c384b07993eb5056bc7e14943bc18ccef9fbb502bea6ea8f0f60ec761d6cfc8793494d7cfa3be6e2dde87d3c0012a4cc3ce939727f7980d86be1ddb238dc37d3119b7b4eab6ac7dd0fd11f0bbd57c77bb69c4d65d881c02e81ffdfe801acb1edc9ce849d386b481e9e0e1cd74697c0c2808d5049cf2b13f30901054ef2aa89dfa80a1e4d9033609290c054aade7689f698dfc2c03955ea783f8556f652a8293c8685ac0aea082884e9c4d9594c05fa7ffb711f90e32690d590377d7fa5ab46bb5f6b4ffcc811604492eca4fdbacc6c900a08441120ac0f51961119f1cdfad4b79b8d4eab03ea886e84a4f88d7e4cb08ee728646e8232ae0c4847ba5cbe0fdd65ff60a6983da6ce6051a45df6aa6a7a1bba3b3e88ef7f98cb691e4d848d4494a18166becef40aa51c07df675bc9d7c42f424dbaaf87f6ee4312fa5a3a7b48335dd7051a3711bcab2e7c2743402586df0ed3ed787661a7c930ab1216f9bcbb1a34e39142a13645d00c81656dc154e8914991b714d2d4bbaff7b2a46c8f548d1d40f652ef161e86b1ced9ecf0a20cd35ca8bc31dcadee0281687a9781cc7db215fb3e9961a856bf42e4a31256c8547c23e70e104250db99815f2c42b5b0f5a55f93c003deb1f5b8426212f1a234929d473c74bd80ca85a6e53b06c645e89e273f80493559e266dcb3d089a620995ebb598465b9eacffbff41f731fed810f7dad00cad6baabe990254b0b5a780c9eda62ceddcf3f647ae978866f14a0fe514b101a2876809fa1c056b2012fbb46f02f46d17f3458b3a95e4cfef5bc53215b61605c182f9acc4256af7cd78a863270e3325d47f2aeb72c22ba69b4ed559ca21ad1ff8cb4f10a9aa6821e1195d15b4a7debbcdae9360258930ec8a0946878c1d0bf050bb5fb69da589de6cb83fb80d4ebfb6fcfdbde47d4ae46842584c3aafa6cc4e479f094c7d274da4aa173280be0f5aa6b4642b4f23d893f09d15953cd08530ef87e009c0eb651e9f0228aba6ceaea894100c7b708dc895efe3c3dae62f564baec3bb81276740ae04e393f0f08df49e8622874e93e345bc929ed3127a2bde3ba3a285ba2332f8ebe3022530697a630486b39d957944f3989cf816150dfb0de855ca028bf316762ba810b912783955eefb8155865def049e292e0adb40dfbfd3e8e8d68c8f8eb3348dcd85b13f44d2492e86cbd57745ae594ddec508b924b3da502588fc548d285b211d2b0dc4ceaa4c747df2005f42a20ff454711b70aa99ba984146fa61b1da131492d5d723480cd1f68115a38f5baab7b4bbee80bda3cc41e608dd3c96488987b510ea18feed48186a2890a33f5ec8b1a608e0d4d9d614f37bd33671ba63e21f2f579554370f57bd9f3bbf5716e352f10a3dc5aa44a3211fb24eda671dbd57b1b147d789027cdfca273b1b1dadd9a89406cea2a288bcaece9f76136c73640b1891bc42575e9fdb5b3812f3d14c9840d64627e7539f9f84da13ad1d52fe95a403b7d073f9aca60e2125b36c08b7f7465e496af8b7ade6db1ba138d587c9c003a45fd3186711e1a6de2fc7dbba9c9aa5fe498d73c93c2f0f2a95f5dad4a4b4931b356bcb8030f16f781f1fb05b09b608622d8bd59619b8650b90b3846285853d01dd7062d29d7fe12b5b2be19a78da0a28112298623207dc86e3f7e4366172980c4144c63f2c3539374c58a69b54cdc676c8da9dc131d0b5dcce4b58590aad53410a4276a963a1bdf83f6ad2d162c92788fa8075979b2b1ed5bc2c4fdd153ab9234abd1374b6e7e227661212f1d82172ab301d736d15e8d91bb2fe3fcf8198fb7eaf65270e0b50265abe8e09ab37ca4a4b65cb1464fc7f02a22bc04a8a0a83e9de03fa1d7497f8da89fb0284dbc0fe18d2379d48779bc38b1239a1e1e5854d57e10d303ba71745021fbe1d1674dfe49405383059f3cd013273dec0cbc98711c03376044a2c5f1f4cd5d735593969145b114ffccbe5a142b5786519ef1bbd25c216e4c628ab5dd94756553e4e6d353a56562c21b4382722ddc4934b18e3beb42f65c707b5c8e2707cb3f2d2eff8c42a51fdeb3199bed2a9d68e9436791fa7a12db57eaab92bcb964a6cf6339016341b570e33dde46311a8803181f8cbf50702639b577096d2b5a63c363d2549959e0a9cc3ca15901782e4854c2c9ef786193e4b8199572f20ee25194e5ef2425318ee3ac8f93322a06733acf1c39e9a807ac34c8c60f9dbf208b2f4826b8c6a98a4aa6fbb3fd44f1327289375e75abbb5bb41e69861cfb021348893be00e4b3abc675745317498e9e6f46170b7a763c5963e58b21712e9da6a4abc678cb5d8a8a2e2540041b8ba7a2d099037c89757a799431f1cb190ffb7614c6bb6406425b0325f07cedeec12ce8eb63e75c503411d16dd43fb60a8dc5b4973f8b4069a1e483bef4a65de3bb0ada0cdf7b6e48f8cc161b1c45695e36ce1c0239fc7ed54bc7cc219c2dbf562a9300775bc7de66fe648aed897755099b5a676aecf8a5d885543284079809b9d8f432eccadb6b5849a46296e8acd35a661af715bc4fd6d161aa9880c6ed5f2894f88190b5e3dbfe2ffc70dc2e1128e49f3572b14c55733f063d00fb3f4e24687ec0627dca8e5faee7f9ef0bdb08582146d40948beb2d1509a7082d9e94edbae49a55c8ade555fa5d75d40a35ba22eb83c5a882c15db1dcdab74f16ffb01ca9d57f3fe5cd8947645dbb3a68af165fdf446e83ee42ed90e135611e3e3177ea7b4ac5bda7553152ae6edd5bf85049df31251a9ea7baebcfe9dc0fff043faf6d91472a402feb426571f644ad6e4184d74eef3845bce75598ce6a813b706d48355d4a5e4b68b91698c30a053758f3d65c97a73906cb946845b07934b2a2c9c300347857246ac308eaa6c58823e22ca406067493f6fb8222136a0d0bcf1e34ac57d196ab3329a071cc35f7f919684fb033e1036b12f35ed6f6c610fdfe415f4cfe4390ebfd98e81382744ca74ea457bc3bca8fffbfe9a8bf9b11fb97c2e3bdfd21ecb2c976ef2750350ed6548940657a2c6acf48d078c081e877004ab99aa9805e7d0411411b757f7c622f1bbcf80d166bb8765375a161953d23146c5534e7705ecb436c433976e45eab69f0187eece719aa63cd3fb593ebc967d244e872b5facc86cd2db7b92d0af8234e17b5712446cdbb14f5470f4bd0ac8b0a704b5af334e049acd9f066027db08423fd0b25095c2bce2daeb68dd04aac1b53d9a175497a5a2bcd448ca01c4df708bbe78187be7be53d0d2172be4048969a2d5b81dc1cd4c42f451f0b478ea5b04fca7fcb6173b1a3b07b9ff6af19f76803c1592ab30745bb1f9470c51aeaec8400b13f6b59c9f4977f8ae1a51e30a3afaaded7465aa7a28405c5e86c9e7dda18acc023363411de64521118a8d4f3f3f64dfd2739ed815da68d37728d84b347db0ec61fb15af5a40a466a058804bc219321f88ffacfee79f66e83eb02f7b177e3b5fd4e46d797c965703fef203f917314409712baffc198f2951f5dc48891204902ab2e7eb661d8c3fcd3e04215f0d5a85150012806b3915c37debded446b124e226b6af6a9e48698b2846ea69ff2913218f5e3003f87269af898509d525d4c5fa78d98a04e25f6ea275f6f3110006872166a53bcdfc09f67c38cb39c5975aaef4de850b24d52b2e7c524748465ee0143c076596f63824234a7e1788802e733ba1e67193e862df127692cdff04da4477e4baca8de80d997ca0af544519abfabdd607d4a47cf0ffbf4b0b559e95371f9779c8832f0d3f5e7a89f9bd9f298c705769a819bd3e3af547ff849c95ca36c24d70102d2dc9dea6f14828940278026ca55b0b1ccd604973132d1882121f4a3c620a31e94d05f34ddd2de1cd7f1b9b5faca147951358efc9a92193ece90d7487476f4600921cfbe16499397431961128511b24b35fd114f10ba410b98752891f17567d5cb111c4a303db80e31ee455b643e1ed4123af018b1017319487d87b02bb6373389eed3958ea526e8245fca428fb4531047d986a5f6814b37b5cde50af836f95dceaa460873c331b9318e33b6c3fea3e67bb39580bd7607bd559f39c9585a4db2ee823177d040a99edb1e77cdc9239f14a98a4a410bb91fbf1f9b7894a04823ef0f190b99ab2935dfffecac4455f71bc5701b344fd405bcddd8d545335924aeb53fa24aac1cd7f544eb672f3e04cd1f0d799c4d80f646722a5d17bcdb1897b229c81667c1fce57f54680846cf6586d4fbea9615cbcd64ca23ab60810d392297aacf27e80ea6f5f0436d10fea0ee682831657a84e8c4f0463d711fb35a6db01f0e79858164694b2a9d29e04198f5b4595d901fdc74a549de8d4842f05b818d8e0fc1e9ab932539526f80025da8a9a7fb0e2bddc68ca1a7f6e3c020545d4a356f40a5d33613cc119622354592b88db6b9a8db85736f05a468e0ab2974b6f2d604d530d2fdeaf8ed6f3a2273b710f2dea0767c26bf12e6d87371e8f20b8fa1532f00bad08768904b462e4fdef5613f4cfd5f5eda029d90e08eecd4282b213c212b458b2a8a336a9636a4c1deb290d7c396026bb05ca19cb7c6efc71391047fc954b2eff0668c8d5327e507a21464bd3bc2abf22d10a65c54d5af8699832458d0f5ced4222de67064b020f5dc1c8c41f61304ae0e4b787664a958a566776c6e4dca0ba11828562ea67a8a18fa1c5d4b14da2e1d49ff12cadf1d8b8458b2e6f8889318a848bf9fe0512bff8827dadedf486c3e808a98eb9e31fdd5e26a43a1fbf8ebf8383a3528a62f8394cde8f02924f9e78911011e98291ea0dddbae74cd06353c0b48358809ef5cc98a01167d9fa02e46c05cf5c23cf15e1211fb1a033f1a0fd5e1fc39124202f1cbe3521bea17458184c5e42b5a9ea21054ef26fc5bf143013dc757a31cd528ec0c9c561cc90147c2734e35034b7cfb13c7573463e27bc25de20ea82e11b65d4b8ea83cb68460a76863b9d083a573f6fbbb4ecd94ae0c433c94bdccfaf48314a7681d7588d70c52ce536cce36f4d7bb7535d159253ff5b8d10c26552258849d2f53b8962c6e64fca1bfeb8967a730ef137cd74ca5e8dbc8decbf3993c518774c0df1c7a90385be25cb00095f056e297ccdc1ec19fbbe72b2fa5e3d0862697cfa8209e1ea005ea0776e4af951a7371783e5b1dcce7dfc2aa9ec0cc011cffd91e8ed6b4e79e18eae334873fb70875c3b6d0dbe4d4928ff98f379aac2337bb4a2786cb4ed28dc30d1cd26670fe26294ce1025ffefbf48a22085677849d511bad1375d808436417008c0051a6e37209f035256d878565faa9537893eb23dfa45b19002e517bdb7420b62a41d44e9a00e378b3fd4d5e25e363f8d3283b3e1256994cbb2b6011c9707f5b3ba438fedd6f608a75b3f65cf4b0d18049d70fb147a8f61d8731c2f28af5f7c6972d3575d00eeb6c2016b4389501e9be8864a3f663c59d35f9cdfa12dcdeacff1d5e49b90041053931f63aaf2621a43e262a4484f0be6875fcfea30de8203b45fa0722635ecfdc91939ff3f5fafb48186761228a0f639255655d9db9faff440c73af743a5443633ecd61d561a05ae5e9bcf8522e4794873948fcbc3be69853a8043eb8349a8855b1e66f7b9fd33314423a0ef14d7d719618406c512655145027509c68716d564e00a6ef56ac595c0c5d6a385ae1264b6241354fc1ebd885c2b2a640348f30487d11df7573b66750926ae8f3044e37c5c7ce02b7e9a426eaa7319e0aa605f65724b1a14c408fe73b8ccca7e59185a453fe50985f1ad246d65453a0031c63045ce5a5bf45403178a199eb19207d3e5de0c49299f32706f30c6272757fbef9b97a4ecd1cd955f3f78c66f69d028cd1fb67bf372ac281287a1fa2fc3b237562b58c55e1caca34ed0047b70a8241b609ffeb02d5669d878a4fe1d6d169fafe6f7255caba8b9c1695d672007c585334e01b18d6d3aedeef971590ed55bde9ac7a3ff369d9bf325f8597a71969e8ae02fa9e206fbaa263f80f34b3d5d837f9f14ae08e98c82b252b3d3b336250c0f92fb034c0f47aaf6e637cac5c374fe24e23a7208fc235c367670665ebf2930c6ee6fe40b1d0c88a74345842527133d8b7dabb1639bd1c2707b30dda4978d635b11c978cf65a562f6fc5aca8e9ae83a82d30e439dd5fe21c73396d48fe600181fe043bb46ca07359cde9ec57ef469ceb758903c59e7d92aca63f1f01a1ad47d0746605c6389b13167bce70a03693f7f09a0af760ab5e7a02d56f14124c7ba99c17c7239fa9122bbfbc7f2493930acd145ce0c259d73f944449a25b86bc8c69858d51700ad5033d37002da3c797ab310689cd09fa1c1a71a3a09e88305836e1a7805becc07aaf59d7440b3a2837d059072d48c8eae35e2bc935444b20e3a93c0039b63296c7bc3a384d283c256c28ef71c5a8feacd882fb4e31b2f43909566875e7cf7b725ce8c250de6fd6184e0c535955cdeef30b4c282cb6df7f1ecab7ec651739e2907a9f18fd0ac885704d7d8bb8f586ddc3d38d574241dc4754283543bc2d24aa91b7f50081c5074c1f96a0e34609575bb3129658e86c2d366d9f80b1933808fdd56304a47e449b1ae8147ee187c5dc1cfdd39297531fdfb213012bcb742480f24cfcb9ddd87aa573a389a706fd028fd15d6cab7658f5c745c74f84f0ea84fc8568ad0b14520cb9653abf58123ad37a979d739ae2664482ed2e17fbb4a906639e2b6952566c307d22cd13a4ec63e909471a3add5a88e7a1fe402a8d68683aa6b57513445871f853bb667f28e73292c7c38b27c9a780cc5aa25e306ac3a49827cac543d8087f4185cb7d78c52e0b38d1083f2f8ccd47b8c815b834b8137cfbec6a533616ab663e0ab814f692f1e5e51ce9845f762a8d0ac23c40c978fd431747bc3ac53baabd1ce5e2713025af93f4692b9ae3bc1eb5ecd2b55b2992ea5fe91864283477ca0c0f9e8364df455993da557dae5b4556402d2e6b1c5d36b19029c36519d0497eb8f33cc640cc14385069d0ceb532df065b81997192efe50b2d509e3b5801364477b6bb560286282ae82afeb9ce25de890141d855c54c3db96c1073c48afb1f8eabfc05f8818865ea38dc0dcdeb08210c7cc4d492792d629162ee8267b61b781a4c932000338d505d9b5d22aa84b4b10daf0c338967ac4e56f361120a726ae63cc904d58f8540488903e7dfcd427f99f663a29d50cf2884be2eab15601091b63ce5b1e3e103937741715e98f254e3574a2e0ddf214dbacef74608e9289e368b85f2c2f787b77c4420a48fa7cc2d6b1daa07dcc2fb333469fe46087d283dd25c60915cdd0ff51af795a1ff358a25f3f44e1e4e76ca2214bbed153010f81871b5df9d6e4e7ab9fa9a06de9f96cc1d9c3b777d6e7677fd6baf81910d49bc3c4c37d113509473293ae35980f0f74c5303b31bae41ba5f277f21977b3ff2018a7313e8163cf2b2bc9722fbb4ff353765815d87552681eede0ef79fee261c670de858b35eb12100caa46bb2b3d1b21985b81edd46ec4c654dc0e715d6248beb6ca89405e09552950c2ca2ab863278412f8c8c81ab29178631467fa3d2a8dedbea5fae6a6f775c7bec121b53e621d5b3daf6fe74fa46474a0e7cbdfc173c5a4a482792f757fb3e402e794d9af67615c74c49b60fcc0b4a210a6776727982ecfb9486258d287e0b95a8eddb86015456463537531803b0707b93ea8aa87f23e449da5d3e60700714e3425d6ea142febd03d8fdd5bf2c7f57ec239b7e02ef1928151a6aeb7880f70928426c42ebbede3de8f699cbe9de115b66aead9c15b7b377823405291ec35195e9b95d163755b39bfceabec2d6daeabd823a5318469f8fa959190454f777f726280649368760db577594cff4ae3761e2c77b23b57b31372e7302c100c35d17b4cd2c2053f5eaaf1c0552f584583545885fda2fb9b311e2f4a76e0b6bf3a3727c10b7f77942e84e87c6fd9c889799e256e1525dbee7bc4a1c5dbecd37d16c58e94b26ab8033fcc81087825bf9c6707c0fe8d067c40caa2ad5defdacf1dadf195a8091bc704020a30b44f3543086a77cf0ddc09fa5e3055a1e6b801f31e3ba94679884da5effd1fc0818347429d023b5208c49725d0010c716afdc2a57c02efdcccffc10aa5599f11e24851812e19c40f3de4a4ac48161c1483203834cb75713240fc4e014f2494abbb2b50927e6c9161686e801f1da4b6a494bc8a1baca53e529e2ad44e5006bb84b75a1063890971cb952e788a811d8e7ada122080d157aebf06dca41da1eff2779c6e9fbe228e286e166c7a1bcf4a7900e58bc479ff8ab27918fc08ec589c7115e51f244b6d907e166e963f13803fedb2cee6e133b3dd43b23cc7fd198b7caa4273659a04ffdf656150eac22a706eea9b5b8bec7951deed0bf7acf340b7ec3469b12c90764fc14feefb52f6573340e89b2d5e3eee809f2bce2f07feb69263d7a9c51c156771918fa0a962e0b256fd02c75d34411e9e46255977fbba11dda35af9df620163c42b6baf51b231a6ba8b1985b02d34845c0182d407b283be8dc849e3133bf0339ce2988a3f35ea10d9d84fdaee3f93a2eb92d42004cdec2e9296999d8baee0d55bb7618b3db2fe4b0ed78a1b1f88199765654b50c52b96d7c6fd4d6f5bdb6a3fe5f5a6653456f2ec9991ec3d2bc8d535728565a5ab5a2d1c449b33347bbab63c87b9e33918329a3d2ca9682a46a0b9670d98cc726986808d420a6b00a81ac74fe70d27a40088de0d46f5d8a0652704624461c24c7393f272aadb91005e9276d630182bf639e88e4daf5f9286d3a177ee02e9eabb28aa7af6e4ff3e274beada77a7a3b0dae95d9a20d70ba55b5504751d69e2f92dc5f2f59a46aa106dc7f3c3041228ef5c097177fd9905f075716d43a14c9cc437c22ba383dbab054e7a10c00e407bd873487d53c71ffa7d86d77e6ec31a08a90a96f2bbe6510d743865c5c907114e14e2461527421f5bbc0ac966de2bcc10b9d9a3e8e931c309962ca1c99de9fc034c22922964a584fdcb3fae0105166e052838ec0c149f2e2293e7e0c1e7f4d23eadcb8803785e1cce7082cbd8e7456578c95b8d081c71a70a2312b99aaa49a89b39c206999d0c5b43548c7f4ec20a397427ff6a31e20892e2ee914c1f4e51844076c19b245e9a6c0f84e15a97b378775df6baedba5dbb527ec6081153a195989c19c6b2f3e71bea7d9b406a7cefcff654a69d0aa3afaa8d6a946c6ef6ba864b0c516e4f0bef47c09b187a5ff5872d039f51066fb6c76ef9b4bcc725f98bd9e3e04ab5d414c4c76c546bcd6803b74e6cb9651970c91577bca0409f1b799f424e3a63a8afa46e9ad1374b0d473c06a2e11a0cea47079556585ed63fb18014d33ae3c79206721fbe29c363afecf2f7f5b0342251b9b12d9a2b3fff2e9f1bf687ded7d4fa9f02453583696b3627bb88459cbb54c5af554df74ccafd0679798c9932385f088b5c1d2a1af5c534ed77c656f856ada3e86ced729b6300f02a928e75f99063e31147b7b62c31bbac7d84183e7a56c74fe95b1f07b3babe6630aba50793ba0da90691524d74ce2bf1ee57c13c320059ed42753a71ac37cf41ffb19320ee71a5318a0bbcfd0e41a5a7030859a074613031fca12e5ab6d5a86bef5ee671551102a9cbf5edf23a14f9f82dec57b8edbfd1f98a103ffb0d92fbd555699ef62b602311182d89237de13bd3c23f5f2854c902d6701e25801cbc9832733dec509dcb031d9c7fcebe056d91dffaf09951c18907ddf842263acc32037a2202fe0fbd11fa87f3239b06dcfb3bd04b1d349e29cdea425de35dc3535da7e4506ad3ad3a2eb7c8cc302e0a4af278497aea8c09b1e987d4f18148c32f1657c3cb836207a5ecef60ba71d6cab51588d9232feec7c7170e8b2d2cd2a4b1b2e8efc6d57a992d128c00ad51faaa5edbd516b504ea87a6dd3cb44b1404c30d425df054e6cf1c2cfaf438a81d9bdc555922ced34b9962cde524d9aee827d2f615a8ed35e500638e74153cecc8fad1f6f60bc0ccf1d00a804426164b39a1280d65402a08758b11833bffa7496a009464302e9d4a318cf8541aeb6f8f738d1023e78eb4e051bff8c0ec23bb4a9d5e21b6fb54733f2f6111b00a917c6f196f686e8235b9c8e23cb65d77a276bc20e435ed6d945780c24a6515bef9641b3d5fcaff936e63e2bed7a8bbae42f5a13029cc7fbd6ae5d8181b29a4a2d429b0531149625e2adcfcb9308e9a5e57d2c461fb7780a0e456b549b4251806f5651826c1e464012e1d77772c29e16e29c4492d6e05a67e224459bc504a1430113fb067268840dca47872b7ce5a98ae77381faff1536f662c189874c03bc3cab25341b914a407fb8fecfe19f681ea2ccf447dcee6a4ae780c9d505d0e6a7d93c5a2afcc9bc26b92c67c6e9b8ad1b647b0c9b2ff4b7a84d88fa44ecd903e64cc39e493617c9544aa50cf2f775ab36f8272b99061ba7ee6deee1f4df0ebde578b1a9510f2d7d44c2a20fc3d75317d4592a0120383c19b983955a1b989cd9f738eed687f2ce6628f3b812e1db341081d4a2d11bc2c41bf8bfeea235c42bd9a46b98b0cd03059cffb1624f06c92db498ca5e8da7c2ae1dc57d6a4c652205d1d39c84e20c13b0c753f7ed169be403351f00c26a6e42ada7db4bb0703a468e04e955ee9aa069e275c9b83f2166b847a1ca75898bf74507963024b198278abd43cca0499f60e12679c163329fb20fcdd9cd0863c872ad5798b084eb70daa7fdab935ca3e4c637e844220a1b3072becce9bdee8961d38ac50b6c0216c1155387247a7ef62169e97efff50f14006698007f8b2e9e1dc343ad7c9011d4a4246769a102981fa4dcbc0d69711100eb144e7bf4b04bf674089d56c49b5d749f05e06ab755854e94085e7f93bd664cf182e47fb7f6b95e76547a9137bf5b357f3da8c558b33e4139ebdee75263ff9808071621ff78c1580789cec001ae5870b0fee8ce52553e52b9f5914e8e0b3fe5a2c640ae6652eda566bb1da2858a855b6376210ed90e46ef623b7a3a906868215e055b2ce3193d34372554e03c406af56b9bc29680de7e7e4a2993db1398b50061ec98987ade23bf26447f97540646ef0279f19608a737da59111042b99ef020ad492bb45d2a0eb506bba119f88663e33c9b743f792bced4396d613ae075316d7ef743da38dc3b555a682e7bea098b4c520b04355c7a95d93605cf33285c404763873bfac6e40fcc413ae676322bce8165bedca612d080c3e9785772a020461074e8609152e18fe5a807beaf22ba095eaa298e0e36b4cb78cfdc391f83cbc3107937d9fd7c6d24df802d88037c2f6e37be2e8c537f69d2fd7b9015bffa5676936be6db47f4931325ab9e93fd126ecf5997b61da598b87c78b1fc2242ca1dd061e34c126bebc15d48a9f7637ceeeddd9316b3540864d8ec42ae3bc666dc948132b3b2143d936faf78add91ea3e943d76decc23b182f38d6238db4773987ea9b503df92d73ba76a4288eb87bb6626b1859605664cb98d4fe4737c2ee2436fa4c83d088485e1be14deea5e310dabb8754bf77a84153bf3161f23835fb0bc34174fa317df76124efa7b354403f8c7b12e0e856f113569c8fb518b8c2f81c34d0d6219f6400cd975bf817bb6fc9bc619c9649c1fbf74d79373ac5358cb076e93ede9cf5a49cb51ef975c24bb3b68453dbf4bf556c6e235b07dd8074ce9e813a5c15c2e2daa3edef68d38c27a0a1a4e2a9ccafd7848d904427ea74fdf92cc689f780e18c5bfd6a872a87aea905a37590eac49ceb37e1a2f934919dcf1f45af526fae51907a7edb39bdc5ed4db588c593e338612f677f5d533a5391140c03f81ec0271ff9452535c42c874e72dddb4ef9e724ae059662ba18be9a74f4564e450dbadffae7a4b2a3b3af8bc56f4b35ed66cc0fe4c8817ad62d280eba91e51270339408c37d2139dbaa2768abccdced7797fd1333a821a37c394efc52831f9774e0ade17302db577b14c561d4d51297b00e00a1547a98f25a2a78b4bbe2cd053e306426bc9b57ef121677a36ef745dbd57beb1ad63e761dfc27d25795005461c829f19a66268b47c83d4fc56f2442bd9293eb00ba3702b7a47e7d805ac95242e707b9d94fd65911aa0795f7128ce827ceeaa4cc99bd3c6f5ea40dad27d1c3b47c70b392340f76483a0da500b0b75889e3e97735fc2853659ded0fb5a1e6a4708b8d2d6dc114742a51c9e73eb195fda24820605d0b64cff8e30e58d1b682f733afc2b93ccf7729ee83b5d5a834757b2598a8d9e459bd7d93f944a827e3d35eac188394876de7d304aeb0fd588e1aca983db1ce52e881e0421b1c9453fc919e17c4f0704bbfab6aa4ec6ab2a51a7ea87fd320fec4d69fd3b4beca737865523a5164eb81e1b81c96eaf5e95e1f7046623326dc6c547156e91134a3cc446142a8d31c1e5913a645c16dba0e75b87f0924b29601f762157453feb27ef9035e0c486a4586bedd6fc9b8f12517c096bf45ed794b3c15eccd1cfb3e17e7a17c7e6063310a79ca1cc934a2c60a162420768c43a909a60809328cbc40e8855d0ef855cc23b984eb65d49fb7c2f0e879215142a1658ed084e2d3724f85ab6bcbded4318a019c63fbe32dae8e9dc2ffc76897ff37ec191f9969d2737b38e1753d0fab3a3528f08a276d4ca41c26daab7117cbe1244e329138d3901f6616241e976be7aa7f7abad416216d63a670173d3fdf2964adf8e5788ff6598a18b14aafe34f525683dff6941e20aa1852d2e49d46eb09a5bfcd076aca22dbeb287ba0cce011bb79bbf1f82bfb10b1da6a4731b607803bafe00b110cd5cf3da73370942dbdc048b72ea98c4584d4d7f658b86f677e6f8f552acd9faf4a1a97a006f1275fdef6cc4a5fd7308bde320567b07bb263a6e71cb0579c5a42d2c21fb8385d66e6c927685d69bbaa182c633ed9de8a945c73047e3ad5b1c6548d7f87c520d9244346d8464bfb07f9285602035bed02640a11f9daac84d3bb6ef2cc94a0af0219e08f169fa21720065f7927933f96999620d3cef67ce7cbe73338de189fddb14f033cf1b29ccb69c4c96689d8973a0c3eacbc1b28b846160c355a1cd7d15fc086788aedb9e10ab6a88f30642e3dd819d776a489ddc01d9550eea3435aa0c9f26e567dff4238cbb06b90371237ebb361814a5a8038ffdfc9177f33b89e4e8ce8e3a083eff86456cc4f2128436cc82e5574039c39b08703cca73722122020d4803db1dc333b1261f956db028ea3261706c10506bf1ca02aa7bf5549a9fb64471bcc6a6532b236ce41aee40055734c69b15f09c63e883dd99d9fc6b86c67b2cd24275ace2494920ab53008a56fb31c93d302d172265328f0b4dd68eb38aff34efc54bac2054dfe8c2231c874061a0c3edf5251dd36ed8dcc5c307424edd18325084b5debbdb390ecb4812392b1945e410139198b37064ef7f41350b62787e3e14bfb23ee38ae5842e67f16b53e499516fbc3f6cf1237ccf0b84f346dd2608a1a551474eb9df6fccc6482e9149fb57746c057e53b68ec2e1bf1ab2d2043874ddf912cf9c71c588da75ed8a42e8ddf7d0711944ab945a8cf0ab765cd20a98a2f0fbcdcf12c563ef6ae65d34230bf27d5f90a6a7c7ebb63eeeee2af20ce9b890fb6bcfb74f6c70635f9428604d8abf430316fc69dbc85ad1d004cbe72720035bde8c6e644f72b5fc46414bc99d5c0f91e0b0bdfd775fde3d4555a08d0fe628a08205615c9085f0999a4d41091131be962d08994a8da7404dd44059c0cba68d44104acad0bcb88fe180d1c502df9fa050bcbb828955b58a6f88f5af3d64afb90119a222047ced337313e1a5c137df60fb2922b10f2d43e608d396db0422b6a1802502dd3554d693ddf02ac7cfc4820faf803ccbe36a99e6f03b15dee00e6bb3e8f67cd7e80236b87cdc3f84f5ef5ab259d93cfcb084c5750b46cb05d95aa5298ea425cdbe04d080dc4b0a922f4d307330e4b2166c9b919f06d8b5792c4ff0945703d945fc459a7c8c38301525ee7e84ce4d990c1e1ffb88aed6b0a378d6f60325d7dd17d12c9d5e04c7fc9b114d39e564c68fc262fceeb83579dda2b84823e3c50f6d6e06395c2cb1f71efdc0f279134ba92cd4bda69e2bf8c416ae6afc58fc64d117d224005c928d816ba9778d3f63f5ce32676c209b212ae97aa3ff33246774861fa29fe8ba912575a8b7a771a0965f827bb1971445bb7ba521e66944fa2f318469f401ba70c2ffb13c4bbba7610c1df97a1ee1e51c79b80c65923ebe25580048096f97b37b343c8edd1f2bbeaffb05144a8f63dc29ebb07b83b2ad3c775935be4610f338df8743954c97c84d094b8e87d48e3162c80f09e42a00b175a57c89dc16c92750d1f9eafcc543053f997a1c9940f8a6bab4a27ce192cb4d65d1d1c2731afef25a7b68f0a37065b4d7ae12447716c70fbf8c344e8cf3a09ef5187a8c885c548b2284a66e022fa2063539fda6d2dc35f2979110bbd9ffedb4b2d027e369b8e488c003aa0bb3c16bec4619d762a92c87ed6a6cb85884d83f1e6dfb880f6ee87351b8c42f70285699e8b9ad7f7fde50f226d44aafaa1e82b22e395b5176294046a408c0f8f377986ec0436583169543a38067d40b7f730bd14bbfcebd3ad8ef7cc9f3c9ddf8138847f8f7e58454e74c0287947ec9143484435f446031f6378eb15bad5cd199b62aacd9aced4d6a9be4f37c23f096f67fd0863fa800c9b48baebf4131074b441272e36ba17b5ae9f54dda5bdd8256140de62158c7fb2827f0dff733236bcea34761e42c2919b17620aed6ef08f068c62cff95774adbe8d35047b4238a233189a15802c4ad170e96e4bb205c0bbb61a4278914a88f7de6628531e71a92b22f6e49752a794e6921240b3ffdaddb5791b73f93ca46eff9dc2acd1c7541a2ae836de8f7873c1c973f2c1bc2b590b66adf2339bf8ed5707d8f1bf6e35f3917e46e3e4e7b2c2a9328aead1a4397c61bbabb6c246aca8b5a20dcfb8d1d7281abc54f020210e66d81e8879e8eaa4d06d1e129c0cc1c9e003ff5f4f3ac7ead5741e54dbe531b9ce06a4d34ae201811b962b2b913c03cbd38ffd1ec6d9ee907569644bafac6ed8652af1e73a3824a1279a9d50c0965bf3caa8b54f3fe88a22a8fd4e4996cd2d1a9f7976a384eb67340be4e8af497d9f7274cbe4f59870403985eb853d18397be4b749cfb1532c20e5e43d86b75b3438d1327d4e2a67e8e1c6921381223010c5915d217aadf5d56b49de42d46bcccf29a4a22539560574819efa1239174335efc450118db9e8d065876b8274d8f024ad4a10ff0cf89387b24fe2dbbc098832786da35254fabefad5850edddd5e22b472f316d5ee199ab85a6cf78a70effaa6772d92f8d1aec741d1e92c33573a4b2472ebacfc694a1ec66448dd3e5126bdd4220f74558556a33b2e7b84dbd6067b41f96a3b5cd9581d8fcd3ff6269153c79b81797a1e3517c39550bb69d9d55e1cfd624ae8f55236d71b2183233a2df6fdc561de83799f58af4bc6aaaa9ba5a9f43af17a0c2dd56006d825ff0cf206ce7a974960cb25409b7308371ed534efa99ab23c0fa8fa3b02a82d7e7ed1f04d79397556397e68d6a3dd21a93bb31d84fc7aafd10c42e17d2aec2a8e9545b18b1461cc066ee4888140d37a68e021ea52b030e461539610b912d3b3d7b25e9fed30dcf8b5d641ce0c82e45b6053a18214cb8eaa4838eba8eaedc6dd05387b7c7aafddfec5429b7a916079154679eb1a33fac36915888a1d5fa3f220738c4e7ddcb54deb543ef87a0fbd3e6e792082d2337714547802afe78181894aa47aeb019d76e0edaa40c848946eb3b1b2a16c61b876cf3b10fa0688b169d2f904f222ec86ddaf1e2e6166da8bdd4a33a625ae510cefc2c0304bad998d71f4108d0259d013423ac14b2b213b6e56a1e3b42e159e11c018a676b8c8820f25b3e2d789649348ea64457e92d7f52d1cbfe03169b4ac5c36714be192f0f96f0f9773a30cb4f0483a27f1d7f2cb2c5024344fa7083d05c40dc644ae69701ebe9766203b3e25a08e2adb5b3db95d494c05748b6d1d13bbdef8728f85b150bbef2347001ec56ca2acfd013282ce640613aa040571ebb8d8d538f431b3ad643f638a6aea26f1ffd55fc8264675aa8e355e924c63a0b308d75372d3684d892118ce23ed85846eccf94911d410abb559d2ee886ed52e82587aeace120d11d329fde6066d62f013e155c47a88a1056e96b2eada00b334eeeb8f461c093d180cc56d27974583d7920df71ad3fdb0a081fdc00d1b8880e5a87a6911a8ddb0a47affdb5ef461f6b697108e747d3fd40249e05fec6fa1df4520fff613c765edfe2013fc0dd38b137f6e3bfc2e79cc8c5d68d0a4052c6e05d33dbcd84ee7dfe67418679aaaa21f4f69a7d315f9fd90294f918017b68a907e6af3d33e6f5233ed99385a0f82243fbe8524ae170b22f2aa6c59fd2cc1beedb994a1a678ecd5170ab693c4937bc161209d425f41516ba54af515b40a561c081afedfcc78dec7ec80329630c09330c718a3e36181a3ebc75932c4c541bb9384c1f972377e0fc7e1918b4a53950ca61720875c358d1b474fe701f177be553dba494219abf76a2452ff6efd68b9db689a1a97af699c979678921227d7e3fc7ea5da20428c2f266c0af0a4702a90c5cdc4fe8d8b8a64ed03e22d971693eb8787e502afaccd90e859dc74398f4fa82720adf70fe1ef8944961653de1d9567e3a6fb2e6611ee28df8e5f92ef1d848b734ec76855f8fe22ca378efef0b8e6c599d326759f44c4403094c34b8ceb84f717039fbcf6911342618b711a030413c51df7fc1309fb93a337737d2c34c8962dc1cc270a54e9122de0e9a598a54552f7f2a9fbeaa7bded02abf6a14058825fb5e98bcea80362c9ac455b6f42a30074d43b00565db8211d17472f1b79aaacbd35ec139706c7f358b640894e7447582706fcbe13ab5e5f9bf76d8c14c860b1b4ff107e8183774264eb2bbee72e9413cbe0b9be5c54b3fa1516dbbca4d946ba534830ff1cc869d874a82ccd290be628c407d3392718d66891911ae3ebf5a288d2a200236c1490ef617b75f3d2a18335ff066a2add3537a225c201eb19fc0bf2144820fd04a86380f057f2c90ace24ccead65dfac5062e6f54c433473a646cc7c8193e19cd57fc1bfc338009fa067cbf728d3f1a45e0f0b126a3e0764613620eb28439f7dd8775225b05c93e92c36c0fca99074e1f33fb777377cbe2266490ad65a4cbb10494e579a0f62841533cab95e60291aadd7b94e21d27a98ee79264c7dddfab48691e908aa09205a6fc3d401e8ba4ed3ac6dfcd2d1ee0cf68ee74956e5894b4e7898d157ef52ba777bd4967216ca9c76070b3313766bc96a8ef018c19f729726abfb0085bc00b188fbee83a91e53e08beae9f82154ad50f337b7c83df8c8650c98c6ac2c939bfed1a84978a728562954b8ff5402ae9d947c2b30928885c85eecef739eaa9c2da277513583d38da323b61480f95bac7c70609541ba499642ea79f63a043577b6c19226d45604d2df1277a913c2772123da2ac1a303b2f85ba96701ae3aacbd3c33a8f340955558eb7c1d6ae5e80869540f93f0e0b20f4a95ed893aafc0204f3c845dcf3a4c3def1465e7a15c2ed5a1d6965db85d0412a46c315415e312b115f1dd92bbd6afd5d2b6f5fe6fec8b69c8a33bef5d8bae8b85203a767b5a0348870813d06511fd95fdbd18c7bef271cf7be015c754e932b3a8efaefff6be250b6a8de8514790799fe523532f8be8834f7236177287cd73b7a2042a55482d1a02fdccc42319378afd14f11f94485831d16b1ad737a87c7f41eee598ac7e8c055a716d7bba572cc93495ecf63b854724370e97b5c42ce57640d68d6ac7748d8f29de99106bb015ce640754fcfcddc68e7ad0502b35b2e75ec08ccb2fa1c37eaac9c3aa5fe73d54343924302b1fec2845e7b440d44ae1b4c31ae0f4571172557e3cdbbdc5bc6dd8af3771389a8bb1fe30663a657d207e7e3517d61939018fbed9e2e065712fd31cb4078815f091ba4d8fbc3d6759a3271bda52022c51a0878066f48d888cd4ca4ff7acd0e1ee7bd38d918c0e3fb3255d5839f1c340e7482c1462ab73fbef88f22fe3d7e27abf878e9fd21bdeff5072be7fea779bfd50345541b2e4686d2c5983facab08e0b415fb622f5d69651cba56c3dc09bc88d7d1b53aa8bea1f285e1b092b4631d608e1eed510b124f7d9e71dc366d093f6e7fcd0309e12fdb91987a1348787b1d0f39ac88b9d17b4d230330f0121b137feadb8160091ad0b86c546e9fed70be1fd4801010edbba34971547cb2de2e72cfa9305910eca9bf6a764aa5a9d56dd094183abedc6f6b626b6ac3c30fc8ac23ade8461bff7d21bb78ca1b3d1f15b4ac091c13090451cf8e7b4306321320c8c4ccfef25fc6aa5aef9c339fba37a641448be3753ca037361932aeb8ce7b2eb33c8cfee5f8ddbdad060d0763056fc6a745c480d0b6d1e628c9a421b48665bf4393ae033653e21ebf6768cbe9be8892c39864eeaf5f8b870c4866782be3ce1b84be3d735516db2bb8ed96b17ce4bc9758668061d6b3dd04d8d2f97f1387c99e6454a34ec16846a55e18d417359fb4fb231d01e027ff94547b591b6a2ec57f1621bb422b395792afa3fedbfd0e26a0ce2c78a9cf494c2649a982c9bb94944d01ffe5a2ea5292bfff3c0f14a00ae3836ebc7f1d8de24df4615df79ae264b1ddce8e3e940ddebf8df8908068a069050ee1ee36727d85563809009872b5783ef7e63f037c0429f449b67d845c2c8767861192b0e294bcc09981da2e4b4ae38d2ab1338b2f71ec68997b09eb70b7141eb9587ea9cd0ce6661fc83e6568efc7ca9e988f1e80587e6eebb82b254b2da66109c3819c79b48eee3a14eefdd79ac00493d1efbf6e6e812e6f6e53467920e874725af1d4f6fef3faa59efc7f13e84fc313db607e4bffe198a80dbe8c2116345d01c28412e939558633deaa5dfd8b5abe63944e7e37a171de99b79a91e8ac6b9984928aae1b7f2f066e98c7c85745ebc0b6ebee6cc37116e7514f902b96ec8dc202889269926948edbf6d389eb93596481ab8ed3d8c90d1cdef7d162c83eb0d3fe39e6763f2cc44c522e8ae41c3d1d1fbb11ca75d19e1ff2a106b1a816c26ac6fccc1919ab79594522d1f85429086280f56b053659cfb302bff618eecb51a8675e85261325141db70de352e74490f5fd41cd0893d11674dc7085c5360bec14a6d3711ee5098dea301c6a10d5dc1060d0ebda673797db880a06bcf8d3fad7c3c5c736bb5f6cedc2876754b73de0a9699efcda41334d66b19daee9d533a34f8d5c2ec76258ee3ee15e5b5614c382aaf0ac3a98142377369d5585a94c040e7c66be4ad641d4c3416770e2df15d66dde9bea7284b662e4ddf9140dc9fa11d8e41bd65eed5690274f405ced59372558522fc94fb058fb08a3b66e096e3d4ede81bf22f53d2f03a29f406b9e98bda657c35536be30eeb3d1aaea13bcb3bdf247e14e9aaa9180232b320413892ce560ff1d11287e2500cd3c0ffed406bdd77bed50e7f4082afaa7507a6f3ace9d5db5b16ea75c49a03f049567654d9b8afc8a90a3c80554bdffbcb9954724cf69596358fbf3a7c31e193d9cd3c1e6d5afb44bb67f8c05899151f8bfe9364e928367cd96e7822e3e7872792bb12beb0c5cb041f3a285562fc88a8970a6d4575fc59b1172d8eea90f2755e5d3820c34d80f16f18b5766ea40cfc406460c694e27c7cb9384bdaeb03beae735f30c36b2f8b26e16a4d157f05841fc75d8f425838b76dd409c6316a82469661d7b94d2c360ec70ae6b52c65f2ffdaec963a793815a74b35c082cefe882ef692f675b6288a94436807231e30101f7ac0af0a2b90e8c125a0cd17b3a9a19219402bcd87c89d0d90d286a4d88414aaec06df1e9a6846134daad394dec79de5ff2a89ae4f2a5ef781f70a7f24bf1390aebe6fd2600c9a3b578d7c343d6c6eb367de7e9d65ae5691992af3116fcf45187c9564bba3a5cf40cdb7b2b2e2aa5e4a5ce87848c2891b8dab986f785f39c44395100b0ae174cb78caf35aeed96e29e1478163ab96268fc8a858de742cb305e691388ee50cdbcfc5e71d6ee012fd404fe982b9fd5a97c7881db2283e9ee30dd4784b9cc59814673e5d2e8fa4e75b823457609922488396b394e27b6db9c558791fa49cadf703cd69f47ea6564c9fa4becdd3009bae50c1cc6f4755e8a4fb5edc0755dcd1665398cb54f9aee0a872d4f611db58df3de8c056b5d60306a0c9ac2a9c1db7393ac6da598222f3531894217e30e2d328852533f62ab13fb5ecaecf771a5046695b5b1e221d2e2f6924b72b64882b02b90a0fa6a63aa6664f792dae69a9b64db01e212a3da1202b1ff96c7f4143b9856b96eed1c8e15f86b9b9ef8c6bbec8dbe1e872654041ae3820bc8b8cb2980c7bbb4d00d363844652b988a940fa07393c39af3109ce7c615ab19423a6f28e8c8e2756e3e2d854b4f4aff2f2494bc85f95c804c73c1380c22876f767b9af45a2fe75ea5c62df3a20abb76a8f06fb1eb9e34fd0a1ccd49d181fdb44596647efeac52377ed73da62246ba16cb2b4eca8393d1e4271337929d270aff097db289e649e2be4d0805c6b352f36beb72ccae69f216bee86a5863f44ed39b415267af3532105cdfdb4917d1f34ec4b6f1f3ace04621180a63d024b98ab24e91c1939829d88b84c8cdd9468dde9bfa0a7b21d394be3bb9de77e1ce2573ed1122e70d5c4331ebbcd9a004fd4f65c7d9daa07f777318dfbde4780c0bfdb8f17a4970c568835ff16b3f1955384021580e370fa688fce502ab27a9a8325debd64b71e52d48e10be81f1c8dcdfbd307d677bdc6b122619d44e0f5b23fe7dc6ea8b564ca2913f642958fee442b935527cc5de746801ad1c900b8999ccae40918b4f76a0d8d5e58710991cbb2d3b15d6f67e8e3d08105a93dfd9725a1e8db156a59adebcbcb8d30be6af3b9984d9a4d2d4f38492b4dd9de41d0d92ee5aa22719403854c9cebbcc552cd16505c9f4b991201cd8ab77f1afe317b2f3236ca03e196a9ecc74c1077ee6134e3daae4be3d9849b9b97e97adeb994b6f2d72991dc6e3b750ed6bfac6f7ebcb7c44be88f6d18912328cf58d6b31bdd050a01dedfe08fef1bc0c047ec314cbc1f0c3aaec542676348654122bb0b78ab990995c7f925f3c4280edee68383ac8b71fd0d972dc32ab92554768838e20a503a71deab164d77e1a536c0d6eb448d6e5c56464dd7d6fa54e9086409e0b7f21b49af3da06396480599d31125b58979293c867ccc635ccf8cd422bed70278cd463abbaefb720cc4a4096ee6d568be67a7f5ee69a336392015aca5ae8f9dbf58808534b4ddc3835ab2e23d7510d8711f9292c9171f907c3e2f3695c550b18770e6b72400d08d828b462e89c8df4105111b2ff2ccb4436873bce600f3dd0c509ebbd5cfd152225bd9cf45871280c8fe21221882708d2b1316020c09ed578a023b26bf9317ef82b31af013b08be79d229ac49394e02996a6687b7cec17cbd793b35e979966210efdf9a11a43a287a35a3184a034799823c55e6088fd0702a60aec27bdad4f40ef8ee9aa6e840a34cbb5ac561d05f7e2fb242e74ba55223785ceb8f18ad175bf9dfc350e376c7b9d0b2de891004dd4fc7145c4455bbcda62fdc1aa99a06d5521d71e1b9f3241c282700faabeb64f4a2c98e3ee38a527890efe78194ee9f9e6b048c39a408af2e640ea12304029033041d15acd1e87132183308bfb135a2b1220d3ba28bd6708f49b165f92507e5014a1ab89c15c0a43ddcecbb0cccb96c048da5dfbfd964542799073c4e3fc23abb0aa06b9c3ac7a146a6033979453f15c4dc5357619eacff65ad407678fdfe1903904116f17670d429e3675a39359feb40c4ef85dd12e64077f8b422b6df3c06108d1df54116d14e68fba13ea225ebf7977024d21b5d70dfea55545f790cbf480a0d55d636afcb0e49c4632c434269760b9240f1ea35c59550159f9dd56cba7deea5c59e9f198f49d0521b4c58f145f3b1c134b1935e16914451a819ff8f773e82d3580a7559ebd475e47e4daa4bb222f10014eae56be6d3b864fdf0ed6fbd9b6edaa4b8cc3464ea40a8a0ea2a5386d36101ec4559ab03e84c252131549430910522e290d0ea665be099da4027eeb81a7ebb99ae8c0c2ae68befa25042c04e7c94c374262743eeb8cc7195435881a39eb0c4909dee64da1c4bad5c95ebafdf7fec26817bef5ef8f5ad9253258d22cd7d04fa2024da2fa053c26749323b21a01860d075ba759b232b1d92990c52049591eae03b2568443e8ea5d89076bfbe4f4818487da6afabced29eee2ac1c6dbb0f1db949ae3be4d165daad833dfd86568b584b9becaa841dca01a04dab29de7f70a1189ea46653118aad13d28b0f4f1f1d46f632037fc4e1aafcd4ded64cce7b370bd5f35ee5c8a062ee7e6e2a0f76df49da05a71f6fc34dff700d06f9a6b774ca3f7bb0d38d01c69708717bdb08c4b4bf224ebc03099ea2d37f58e7f7e7f71fe350254d6171860a4945e076c69aba11ae8f60f57a1703137c11d4e6ce3267a054c2fc84b737e93a991cf091cf046f7af06e958ff4824df17604370b766e069581b7d6d0d05efb6b2bfd9af769b211ccfc3ddbd563e2131416e7cc2c873b49be2f7466bc511c2bc0db9dd3f6c6075c850fef40ecf8fbf5082370784d6acc54e306d09a930aa34352f59b4a03bcf38446bcf74c1673627abe14bce5d045ba0271db716d0f9e57bfa1306a36a79b74c038a45acbb5ee06d51a426f6e9a9957153d8ef8367d137255a59036b7e3eb9a82f578cb531527b667782f14fa15daf950ee9bf6b26c0e9c4e06ab50a63b23eaaafca2bc0e65666c470272a6348953d12c0fe088ce9e0ce385a25c5a348d20efd65791d2e846cfafe80062eb8496c432506781fa605d8a37f0e00539e6bd8586e67302f4479e7623147de9e804df095b9c4193712ccdbd758af327489a680190318759fe610831133138b41e3c97c231527ab48613e8a5a8c85cf87ad3138e9997e0fd86b37928438d2b4a397e6ca33d479c05fd9d7b1b1a3357af1f6f76755e2ba42ddc626f201650ae7440782eff3d9f52f1998347985691d21ed071c87da1682ca05b3c926d81b689c23d4aa44542954e46df16f95240ca49294f8ffb7e93231bab66da41f0acaf89513a25b7dbfe3f346749ddd9872dfc603e613f0dac07d7b6cd09f3ceb0b8adc971ac7efa782a08f44b2bab8fd0f661c3736711db7964fcb856ce9d83e95ac7b7c686ea0a39a6a7d51f5f3396ac4d908fdb58c306030629792f38ceb25b5e31f07de210642493280c96669c7557a94a0a6621aea2c8eb424ec62485be68de8f1ca375628aae54cae2ade126c628a3ab1d961719d0a96ee5c176d749e5ed322e894a8262250e0867ae3d62d69f4d3ef3a8dcb1117a4da670b2e0b0aabb72dbcd69fe45ab26daf5550b93f10d3424419cdb2e4d354173b4276d2f64073b7f7cec83ecf96c186596491df39054294580e2c0a40bc020b1984724fd543d1cb10369fec4c1e46776a6d3f456cdb068cf6a589ee9b7b12ee76c6956b5b141fe15e9305073311945109729e732ec456e8c0b391e145436b833bc3180bdde82ec63db5e2055e8ecb588591659ad8c466f7c3e2e3f1b717e40ad0f591fb7ee43a72469a084e395bf27cd9adfa14d54d816915f165a119eb394a7c3b13a0a8b2d039a563e6a2df8ea10540538c123ad06f085898171323ece8f5fa2a65fbbd1e7f3dbbef432720eea65ed89d7e3e7da2b31831d62ae7dd4843998d59aa2958805ef026f375ec68e7cad7a64804093157f0cdbda7d38a2b59d0ad4b0b5493842375c0c1a78965873f48de568e361cf26f33beae61a9d2f364e9396b619b703fd4e0c9c07a8632cc352aa37ea8d9e2263fbe1c89ae0b668b2a2fef549bc7179c13ecdf7ff99decbfd168eb9401dded727bba333984872de671a47118706eb0c3807d59d2f3088ed0b7c39ff6deb5b653c61fbb1af6307ed122e563243b529e52ad287016962898c0137b331fc7fbc1ed657927fe6088819b232adb7469176bccefa4b4dfe0bd309a6ccfd0622738a313e1beb386d7337484a0a1b5d27e87fd8fc0d625819cc6c8ad4af6ce380710de262e193d6db7c8bf1f440097da4106a845d1f0726a3fe236db2da6803b845f44401b4e7f1e00918e767ba339be63b6a451c8435d9c16029073537424d4799b18e08db9baba89661ed0c790bed0fee3ce09cd88800124196bd2f73af6ea0ae5a09e867046eb710e39d8f9bf9ad48b726c6fab36a001b548d47d54f13c3bca3091a14c3bd191bfc89cb5c7ce3b8b821f84dc1263de3377404045e4b7d425841d3e6931a0a5b718e2254d2994fd21735b93f5ac6c6930208ed8977a5d905977313ffb7f2dd317604bade0a2dedb90c91961f15bed98797138760000c4f7c024b3e39fd7f0b722f2a6cf66204c17064962dc4b6b80958b4c56eec9ff028353f1bc6ee31202a9437b45d3553d4d5b21cd53031954f507d91a5530dcb49d63779353ce8ca768d23d36c2b3898df59adfe608301966bf3a80f1ae1c33d6acd7f898b3fd0d321d91ca734eb45d4efb68bfd013b1619f5de0cb7b154a1927cb9f50ecbc5c5efab58cf1a675b5a5724285d77f7c6d58318bb70f4bd517fb9de29a93b8d064310556e72df6fba2d0269d503f65af9d7c4e11f53111ccda8dba78b7f1b546b5877fb1ce60945c3349b1c28b0172dede8eab5179bbefbd32d1f983a7a6ba4bd66910711ea39dd181d729e282aac619326e69bc6c9931ab741f73822e2b1434026bb11684ce1aad383b89953e5b9de31c67922e7d18ea3737912736dbe706146fff1fcf6c7d5fbc34576920b34f8b2d168e67a36605c6c2692e70c367c2b78aa03001571b6c9978561ba745a471cdf658941cd9f7e5e632c6b768e17ebe73fd2a029cf77415603b536e79eff06f140ba614ed9980f6cc579de866c095a860262169161ab61f2cb809cddeddbcf9494c0b71f7c7bcc083830fc72c6458fd7f8c1651c60de0304947b009a53bbda3d0844d98c61f7c0a156aa411273dc200bf38cf26ab86216eb082a74d8c0522e43dc26baded8e69b081f65b1022635e7dfa7d68e2b25bbd9c3ffb30e97ccaa48a62ed2b2082e90995ea7acea9abef3f5b54534fc56910343c46a8c30ad9ec600396aaf6d3b842677983dd8542a53b9977193744d253b5100a270a9390691215a6e43ef6a2edab9ecaf07b53d624047240e8665dc93acf5139b07d6bd07a6338617839119ffc1adbb3332822f72bdca225d51276d52b19c657036d357aeed12fb5b9162433adcbb2ce6bae14e472acbcf630dddc7984354c80c6ec776a228c9ff6416f32d3eba668c47406ad0b09aa80e8c3e52ef62b954403d4400220649f4c12587b207732338ee109b4c575ef3b0fe3dab3f5afe40d03ca3877e8925e7e3d705c866d1a298da55be862b16f03cd86e017b971ab614201181fea25809ef7e2492083c82d546b8f52e4df72a205d877cf0f804fa67ccfd9b9f6286f11df7e7b987372e7b7b041c8ad70e28cedf1741f6f64bb299fd4f2b46849f5ea5b9adc8ad7a0a255a86c3c4e6130c4601f66e5d2be94ce8e415ee6a888fa7bf96aeb65847860d95fe03d95015c2be52a637d04a38bbe819b5af6acb89f1b704b74888598c2d5b3310c371410b79b2a24ddaa3abde0d7bc47865a365ced2c0dc3cc49f39ed4f55dbea10756c3ffe2e350fd41fcdf1f10a6a71d14e3ae38b2e60d47edcb08b0960cd04b395bfef63253a705eef599a891e62591f7956aec30df2b15a39a270d42ce958e5545145213373a687bf3c99e5647ea21be6e0a081bd2ea50687c4c6b731b87e5e40ff717c0fcaa1e8c8847cf26e3dade79b539f26598abfa62b5d135a9b8b15b42deee8d4e12a143306fe4bf6f3a01799fec94517a7d66299c8455da3c96e60bc689795d550a5937c2d3428402fc57ebd32008b1f4cea933109d4405a48367a2e009f724e97de9f3c609c1daca65fffd612aa19e64bb64dbee1c479765718e2d69d042fc330f603518938c31e716e15631bac7502642693eb10164f212d0ab4c3359a62e31d8bf05145d1ec2db32b42dea115177c5d6c062f29f6f77718092da90491ecc790ae8a6f945a928682ea579677ae9b5f946cca47b438456a5aa030845829d9db961080137c862901913786add2069c5d7033e881060299fc12afbf7015afdd6662bc5a4c068fc77b538b04aaa629c7319ec1f80dccc50f05563bebaaf6dbd8bf23abd6753cd833f4acb16d5d00cb551a4eac4eb8b3f59c2638c5abe42b8658d53aa212ed6892b367621c7e3c9b44b02c631fcb51ac4b5a7aee640b6b48880d864e50c26b86d82c5506190491c4ddbf56566f8318c3c77ca8422abfb20983d3dc0ad8fc43663a8cb9628f4d6792167693b24c726ec712564ede7df8214c0de846fa0dc5e9cf725e77616297f63b288aae751563c0871b9186de7cca3566d2d638201337c5dd58f89ca10b15ceae169361667fc5dec37ac65c9fdb7108f13a7bb17a2ca329ab88a943e277986c57890b56443036af85265cdf9782c6e04677e595ffe74c31fc4a07188ac2d49633ebafa01cde07fc89f674222e465c9dded19fd79c9fef4f9f0222ceacfaf8cbe15a0b33c6e5a601d8aff5a2ef55abcdf54b05d5e56d5be0eb8be3ab3bf8d48b0db06e9d0c260a8a08c49ed03ccde5451eb2c8002c533d3eeb5811261dae31e6787b95202f22960d4f5baa55a1b4df8765a631446614ab53e14f093862ad7a9c029099d5b04037ff06e657a2adabfeeaa340b68829eef3466235b3e59eab14dc6cec1464c77beddf43a100e61e615a2fc4a38ef5ba4d9449b6669580b54f84805ca257d5d3110727f974bfdf8f0e60d3562da17d770e139ec6b983a60b059cb35d7d3d7403109e8dd0275246c626634b5e8fcf479d98fabab02f92e404c90f0a1ff018b76fa9b0df5e0b6d38a5354fb1163eeeb1c6dba90b714370471586da55aa8b5004f4716255d2fb4a9d617f75874077db8a087565514a2769e543fe5e032a07ed21a455ce5de2af19ccd15ed14c69244f27ca198be666b5b0e7bb0d1362ddbbd32f58b95e8d7c3ae49dda2b849a8c9ca24f235c7ccce8b992e7af364564d1b980189fb83a5e443abdb03543998331b333ffee1e5402e4389aaf1b347176b17aefb2e69309cadc81e76ca8377551f0c1c7c5180c4cf0704d23acfcc06796ed9f62bee72a7224ae461790e37f3ce23306cc11108cae70e4a06af5d55c61a5a7c367815c4a3c746fd6342d1a61dbfe02953bd36be822c9742d53b4108ea4c4b3f0cdf4bdfc87f51ce8b715ad54c77bba02d644392f8d4b40df8662a75a935360435872bacf423b691af5d5de3a92399e57a6657c44facc5d0ceb3a96cda627e49d793b099ef2de7e1550a560f456d79bdbe8f525e338682063b28e7ad76de641f71f4354a0f868431aaa43bc392b76eb665f871024d6ae817b6dfb88be2815aa285b624b9fee1ee9a82e6e256874fd8e56611351ec1316e308eecd05ad08fb48591b27612e1f2107f33ebc6e6d89dfc95ec4b5a5f1b880ae33c5534e013557f56667ded14b1122bfb4e7c04b5d7bd6c9b69a52ba6eddc121963184f001328374d52e70b4fcca24453f86b7cba4c99958e205c00386a6ca3c8eeb1f59ef5875537b5529fe3aec2d98b558386a4559be772e7830afcc57295b94546807840952762d604255b3d70bb9afae80e0b8d70f04cc104974e143ce2d556a3717533ff76fca63110ce9a517d4a4daef61c5b3d1d17c050f011281f7e5345d6ff487ab7cb0fca2dad20fa1dde3f99ff249b33e8d041affefb0af7b16f704eec7c0336107b0576386eca88eb996e67455d437ec13c3ebe3399af66f670ac3c0b98208a351e5168438509691031bb695fbe0754fd11aa30ed14bf7487afb7431ed55c4d9b1e049a8ddb8ec4e55d0bf04b73b290756048c50dbcef8186652a3178a13d5617d030d9c04fd51ba75c0f598019faaf0a163cf9ce006fda350d5f098aeba0b27dc243e4fa6dfad0bdbaff816c2eaf5d199adef2ce838112666c4812625637169c0bf1eba8f01dcb001fb28a11777dc25eef7fa427779f2c5e21627626fe663e77eb94986e578491adbb9358ead3a92a730fb71bcef52155306150013c2319ef4ec434d0b6934e6eded3fbd8bf5d380f200a1c8c192b18bf7f14b832d853cedf1b6619246d6bb7d80bdc8548aaa0a6c36fd9bc4f81b9fc154070066b1d298edc55608b26ba6a3f8477c33275905e574b581fa73e10d57d9e81dd5b6b9277bf0b0de6064116d18145913213bb023f69435db6c46438fd96c206863c4216c193f0967516b5fccee865b31dca8195dcd0e29693ccfb5fc9bf46a7db9ccda96862d7b972dada42c4a8efd46ab6668b62b9518e29816fdf4d4b4e9932430e1d03ee6fce9661d340a1663682fa8d0869544efe97f0d4129506eff3a8aa0ffdd82f0bf341cc165b8ed5b68f123d055fd8ad3e4b55abef318cb6ba1d8b672d2e3b39ecd992367e08f0265cc2faedd5d5245f8fcb211bcf78dde752df63eeafe0a30f1957f99a8cd942ba4a6ca770400f8e04796098215f986fe7721e35ed7df767aa14cce2c00d268918588fac6d0c4e0d456b9afdbf70a07cb25a25eeb957007f53a78b1f9c1acc6dcdd633f15c0b6596dc9720bf7e88c993cc0ca267bd17132b31060f941ec9fab991826f4a8382a95f2a9d255b74776c1fe760233f25e1c4e12b16f49422e1fee18a35ccd5d8af7c4b4093bf8fa97d56452ef8cc9820a560ba822d08a72c1f2bceeb1d692172cc05b0a010f24e003ff1a919c486b6a059a0bd8f9a532b4b108b9fc46d6f5e1b08205961226499c4001e9a69e9ebbd3bcc2128293acb23f2484c0ee72d33cc888727f5e0e983c175f1f1b4d239d53e02d962e47d4c08f06502ce29e720b5f619ac286c6ea2b8f404119b90e1e3361a6f2710bbd71ccd33dd77d53cd94bd71c13e8f03a974f1b2d80e11b4a06d966558737c0b500bb3d262d8ac8f26d1ca9cdae5ca241e9a09730b78827d55c641c6081504d2b85088083542a16b1653ed42ebd5020fac3ebc3aeec261f8f8c0bacf0b338b5186181958ea27713abc27b95154ba6a95f2026998ebe551530ee0f380a26670e3cbad94126647a4b3936c4429dd94c8a4a893c71d7a2b18c4705ff1f4a7ecf36ba1b8f9d52196a26bf0b31f3b4f718cf953a9beed7443f0521c13387801f84f0e93d14dc9f28ba420e4a9f899cca4c19ea9da8763d463d49054052c0f8fe9ee49ea08d515dc89fe8c33d87694a7249df1254d399af5b6a35e55cbf2053746e54d7e0a3daca52b0122ca8a5750917c3c639b74c967f7fe9ce0fe24a200139370540cfbc52b4890f140c8ff1ea65eb6921491e78d6f1befa8cb31e7de98b060e4532e0c4f484918c30e831c27d0995b2fdf27648a1f98cd7f0ce4f98d5394ca1282d599ba6364016ff79c694bc5f8e79f6fdf90266655fce47acd6f54e44e33fca25606324c2d37afbfd33c38d97d9264b4d37725717f03a799d3b2b09447588d1dc92101d159377cff6f8266fb9500637e5f8dfdb26fc256c89c32609015b23fc429c773730b6da87b4de3d6880439f8a31aa296611ac1af0430c95ba42f21e5189b1ca217b1ef9949eb1b2809f9cf33f6e57d3b8c61ffdc748b0cb15e7ad7aa9cf9247041f3f7b4b0bef284bb16caaf57dda9850ab500bdccdd4f8b85a3f242340e5fceb179e450626846d2f4669a94c9a433f32722a8bd6c1d5ea4f5915a5dc039e687ddd270d47689858422e763270faf1bfe662428a0d8ac63ca8068b0e1f1db352016ed987ffb1a9b5a2c5539106e3d8627ef4b0e42b79ae7850db0b75009b4c811dfec1d38d5bd353b0ea9a9fc776751f8dcb1eb8bbe3e61ecc5f8469c8dc41a7bf18d47fdd616b0a048baea2fa3c7eb231f7de33db60b28171e0d6a42317b9ee76440fdbf0f17044b305e7218af1ba8045473f79d1aae9ad13565f5a937b33742eb8e60cf1b241868fd13e545433bab3c513fa25f161ec22dd73ae4972c962b60faffa713e018d0f6b2e4a0e431d4d02d75299efe4b591e14ef374e5254367856b1045add79d64f5fa1abc02ef154609fa170943b7b886353323165dd61195432d88451d95099ebc19cf0568085378b49de2e6f7f84e61d71313e32971c970d91e390b919a585cf8f0866bfabcdb4e189f25e228518ab8f86abce568e5974b2b73a66e06f054d5cb6168a48ae0152debae143fd45c8dbee28c621481749d3f0fd9f6d615dda57652eb6705d0259f5649cc6c17b10bb61bdf536b4ab76ba51d82bd5c992c57f2c55aa9f9ac9287e42841bba9b2b13a1b1093954b0b106ead701db9ba5add4116b9c86c0ddbbdd2704e60829b1a7ace9736c906f2e0a1552d9f8ec3f0ae65aa68041832175c2567b8a19838408bede194c48274b45a7d58b1bfbdad65203f1e08159ccff49add90e183b656432d98ac5a4e5c0be6ccc9aa05e8316e4b7da0cfa9f569ffcfd34717f5fc12b60a62f508945a6757c5fb403fc48098faa61dd93ee76486e4c07e39bb0f7ab483f6bc0017f9944dc3fbfcf0da1cd577da5689efda6495fad1d23143c8c67b4724da13d58b31fee93d52bca998900001b244b2144e87e32f3a130c6214acfeae8f46144c20a0f353f907620a09afd0449862f26a4df90d51666005f50c89b73d6e7023026ba64fa4834f4a3cbda710ed054860a7522eb72c6c7b72b0d502e7213006f43c41c70dc9884d98c3fb3cc2b90b70ea677ad2a0cf0d70deaec405646accb21edcdaf0099b450912a841afc2719325d5cacad4df023195a3b2f1a8bffc14a72aed2a01ddc3e704c0e062f70109326c687433bd52f8234487c6cdde661a9ff5dd907f128e50d8b50fc2e876727e499f41a4e963e7a9571f79964b81018ed38a6aa2e67e8a9fb18d219c48fd2ef03a63fb5dab3614e82009a03516318de4b9d1b103352137b2060fc5e829a3a94f20003310a10bb0e0f14c2996982ee47f9e72c175648d6e6b009c24f283cffe55ce50253ce5beb2765b779e70063c4b498f97b1efc8af47d548209e9ee8545267fdc8319e272d91377d0acfb68ed9174eb4ffd06a5b5c9f56c5b0e4d13439c206ff0bdec052d1e46b057bad62af3862b302990e0426f36a683073cd30083419b36f82c718cce137d9d01f9c80fd17fa10741e64e5340c64b659b60b9f302761004bc8fa37f3962d64919c24492cc0eabd1d3feb02fe385c9f310c93357004a4ce2584d65670aaf9ad93dcfa12c060595b87f870e4b5371b8f66594f8d49f0d86baeb735fec34efb85167ae268b589eccf1acfb404fe3dfa078540cf25c9dc7b702f73a23018da4f8d4f9db09c15e259a1bd1cd9b7ca09c6870cf60290a48b78a2f0aa67f46ef795996faabbbc875ddcb0fed33893b7048d4d6acf862c6ed7661a190e30cd44e232a731fb3415cdb260b152fb902015a17c5976cd6a970d9c2bbaeefb5ad61be4c81d1113f88e9f71d8f57925a50b5713961d7ee59752df083a8a775a086e4036dae4760307d4a0fa64890df4916a05f3ef46e562a4dabbfc094256971f55cfcf54a95b8c3a1b92c0639d25b028da04aff510630dfb1ed61065dfb1902ed1ece1edebae156c523aafffd586fa79455807e7a45b828800d03636303fdd471a6f43fa30f6bccafbe1639db3f4ae9af82a6e6f71cd7a295a10ea828b1a2329f5632440479f2a069d3e01f7673f854c68d842631e65f750e6f00c78aa490071f3ea73016b33a75fd7d4c3e797772360bc0f52b7adec5bb29fa6c6157cc2231aa575171aaa85b94fea96773f3b2adca021c62dbf9ab15def1a4fefbd435cc9761d68f22c545773659c133820b27dcf63ca9406e3ab88b4d35d5d9ac9db6853c46d24d082857859dcc5e584001f521bf58f14c8701ce55ee6ec03676b2387dde7ab0b5daf5ed3838c9062fdedd8df1f18f0ed2605afc9c8cce97b7855db5534874f01c0034377290b58ea612dd663c3d3176c799a18589e42878c8c833a8bca380215fe2129a58b4053a08c78895398ed3dc28798db53df1c22f043edf6c1a6a7bcfafb8bf1032a19d71f821b6f7aa20a3f614f33b7a3f2c939508354aed7a349232594feb9bb4e4dfd9d1c91276cdf2e516317fb8b1ec26759d2fab38ae700f3743ea5b3a3d4d857064536dbe2eb6b3bd625479a99397d31185c7a905bc64344e0ee126e1e6ed3abeaa93608e11bd4f652701479dfb52891cacf9aa34503dce6f02c925f88fe3ee7e6cf2766f424b957ad52bf0895e5d8b5cdb630bc8ecf8782374ada1d1c19a656951e54c450f23ebacf4f05319e7e13e1ff7de875a601aaf0118e50ce149152a10238b3ed1a2429bede98e7194b51f5dd67eb700dcd64bcde1d6a6d4aa3afc631b2ecb9887b315dc35e51f8f42501d25419fef2ade4ce4788662dd02b543111ea16212cf56a1795d608b4e641b26ec7dc6c75cba8ab0b8bd3655dc8258cac3993a85fb57b9108c503341b407269822f60f963de584568b50b0308d4753e91fb801e538ca86c70eebb1778a4ebb156c53e923b6abb6faee5837ab2aca6d54e3a83da798c89503a1afb767c82711c5e738f5b0237e76f94acf156ad6c760543f5711a34c48e69f686ff0d39b93d0e267f1760828364ea94ccf61f9ff72e37a37cc99ce44924f4a2abaaaef7f0107717b9f1d770c303b3c05e7ddc355f0f1d8aaa5d43b9577f9871d5c468975be94547e2f54f379ff10dd159ffff7fcd1e0b0be71c11f3577f42e4ec43b075d58a9ae1d1b2ea322b641d04553388468dc9221f504c44489d5c10c2554772ae10a747b4b1bb313ff12efd425353b2d727b5c15702df1cdc255ba92bc43217ac12163322b070526a093d198eba66f6b316afad0a0ffbc6b7cd5532681150e7804a8c8c598e759e1522b05e84b30495906aeb6d2e5d8a52e8b7b0aab856c29d3d7c8496a5e901802a72a6345050722d29bc37bcd1b7ad4fa4fd2bd04edfff8c359100e2a0750ce08f29dda34857ca5734a4473672595d90d99be9466d3f4d98c8a7aef4c6281ea8c867017ea26ce8adc92797e5b2dd06ca0dfad97bf92b8c759c1ce3dd40c3cc56cc17aafd9d55faef56026314e9b89dba106e1158f7b60c5c488273a6f63946ef2f7e8c92359b367ed3bde5b12e95e40892345ab13c118798165cdae0568daea65e904845106fc56abdf454495220f0046a9e4a1bb14b0ef213126aae9b466c7da0ce4176ea5e941aa7580dabb4e4a913c235ecf63dc6c6fa6b240e1f1d72a9c778fe772534f631406aac2317b7652f031bd313013ffc8b788c02471dd13e559d2c798eebcc6289975639e19f1fbdeca92134f3b18612147da0a8373f313560995f683b81902486d7b8352b5a558ded3a7f85719977446e4a1e3c35446bf9722d86f1343a1fb5a031efa247509d9cfe3c5194f8f5110f8b3b773eb3dc1f37d9f8fb56e3190041aa8c568c8d7e2f8be673776764ea8720fabd364498a543c45f721f6a8fe8d74664f757cb955d042e186e1bf7a9b7e81669bca8e398a95fa9506cb8f62a31162ead36d51e59adb03bf97f14499385088dfd6a55e710fb6f76fcfa15f4c142df32ee62aced806d9f74e8e9406e5960e3523434204864ad1a72368eecb5c212d6dbf7662aae737b29d9a062e66e6f8191a538d2325ea345eef14a652cb71736a99c31bb25724145822e720caa76fc386743d9379605a7a5c71e772f4125cf67b1f8c83f8ffaf69972fbe81f2b9d2df062f14f93870f12f036dc555abf79e42ff8c7b2051144cb1c18d303042b37ef81107c684362e0967357ceb805f56852d7a17e8b69d2026fecb1579001601d11e4c883f9a027fb312e8229e11e25d1e3bb3244b9c482699dbc630864e7989433fe82d1e06f02845eb452296efc4102ad71ebf8053153e07bd04c6f2f00848e1de386f9c512ab00cb3bbd299a733776f53cda929349cc463554b83c11ba38ae2dc124c4deae6d9c76ddf1781455a646fe054b9b1eefa13de77b80b19fc6a96cef483a31a2733d5a37b05756962d805f8d3d9708b1638c1798cd49cee4421e9e07c02daf2807779f7c35dab1389fa65ddff7614bd65f2edd64babe09440bf71380b580ef15537d0885c839f6dd6ceea67a799223755328a9203a24dc3072b1e22cf488d1debf9b2cee062cd61125d055405f30c243274665e09515b1a298e1cbd88d1363dfc45cc415dd9de33691fd061569cbbec5da9e4c2c33d6c92f702da6252f98ab70dbe69b08423752096926d9231c573e0c98757baa3a3854f52694c04a77eaae16bf8a4ae95a39df187e2f9b3afd1a02d268b87d6553a9b8ba74cdfdae3e667ea38c3841c9beae188593df9b691d779a859a7f625fd044f052750cde4bbdce6a298e17704dbf76cee0ded24dc7bb4fda8549c33cda5d6bbc8f675a51ae1332e720cc7245b7eaf6fe36c10553abaa5b3d89d208a5573c03684693a8820c6d66fd5781abad938e3820cf90b7156827661bb310e31eab8b6926235233b1390a6b2e1b4a898a911c09851af0dd7151dd9b08a2a45167b84871fd5155b225dbe8cae8aa0ef056580be970eda1b1aa4e0184a341371237be4f56b63442850d9153ce41732d01429e28041bdfcea380b915dc9afc15bf1bd2a33d948d60f714e10c920be69ff79c30c7fc1f44dd74b90f701feba4f17e85727bceec4ea591714f74b35802c21c538553c56955a6c1e650827a5ae9221750dbea890fd59febaa729440768d5c83b86d23ef0bae448fe091a3251689b10d42849a6139fb0c4188fd96ff45cbbfe378602b293b58e6b7be36d769508cfba3beba85d43ad505c2c73eb6190165980c03bfe43c53bb74de4fa7947bfbdb60cf161f037cea76a0a4e9cc96a8feab6a6bc8edc9e8552384a91bcb9384f7f239104a39c617de29dd9e1b51d9ff859e1c11669baecf36eef3c357c0a5b848c8bf0cfb79a1309366fe7424da88351bbff671fee945da4e50613b239019dd1ba0a721f10e46570a0adda6745a0175c2feff8b9b87eb5090be6c296838dad39e4dfc6937b6b886b0ea5d94bef73a38635d3da992ecd4c258938197b79b00c130ae0eee9fa8d76de1da8a447820e9aad5d154c67a091b3ee93d87e71a7bfbd189528aac14e823d50a1d4fa000c69c62239a4f597f219a7d77253182dad3a3b1dd0a5e90186ca53cc0aa45a0206df5f1a3f6e378b615da656a5fb38d588242ee8b73df858d31f030f163eec3ce2c15e2e620705c737f8fe5eb4198011a76cc18433fbbab56f86f9ff25de2a9281354d99d0a5707b03561b655fe1f74c2256053e490b8aa73958be250bf4bdc435b2202c2ee201c57a3ec802fad10ddcdbe286fe705490dd1d9c6bb4cccfe43a87ecd0559e1279b97b834a2a57c10c9ebfb8e1e4de6c814c3aa6386a8568f32a075e537de19def4ec6666a00ab79de34960791c3f5a8e40a0640e15b252760f250f10724f2dbd188d24599b4d4c09d3aad020aad0be50d8f735cd17404e78a797e32a06648ab70bf8fb49f7e19a592fceb842ec266aa7793a8784eb6d215dd459cf23b2a50d788fc0546ae6e732400fc712a3c79f19fdfbf13a02cb1766858938e72849eda8beff5fd3c52f7b80e4057130a01836df7295a59821014015c523c2014ff3ff5c63a5241218df5f2a91944e371b2945f93d7bf6090c182b3cce7992b677ec8657b74e024de6158bc194e8fb2a436a6d2c4a9840db70038063f84cf4c1009c47ea4092a72db951f26dbf3094a44d3adf2eef60bd9d0b1f7cff5e700920853d289f097e0928421a5481937148daee1c3d2c4951f87b18e3b4ff0f6bd902452f8d331d28c28c880bf42fd9c30e411e39b2e51e2a53764f7dc0928f51f0e3460e9971c45f812f29b15497ac40da99a45df8f9cbd0d15a7c3be2d820889c835f78ab969c765871313f6d00bfde7fe907942e84910dafa9bd128d957ee0bdbab5d86a9d147045f1474856f7d521417d5a2005165e921a1e742224d31d9458589bc6f62c4446697d9b5e462fe8aecab31ed266ba907eb347d6e8b3784a3f5a51cf318876e55dac6d6581c2f67a7105956b9f1c34a285b4f7088d16d087c2ab647fcbdea54333894ebcc1e856d2cd74a66a636dad47252e1c5eb8f0adb349ad55890c51fb4deb5fb658b4149989d48a066a9e82c039fc16657ee2873008940b429a5c03c025ef6a194e419aeb7c0719fcb0854b51ebe5a1d5db73aa21f2afc1ceeac5b110b2a4b6bac6c8672b209f3c4b9cd65259ea6ad1ab7dad08c8579e2a680d9227ca3db742c1528daead41f3e18c9828e66516a24fd592d6c17d5e4867dba8982a48576f3bcf8b50b92146b5736374dbe89b4575b9a1e738c3cccad822417cc0104af7e61e47230ad261229b6b68ccde309fa42740800e5eb0d40b515a6b2addbb9575340b629996941631815a2e20ec791d328e78b66b4c48b288f327e57763910b452f74f59d04c41f6dd8cf1ebc6ed93cebecf412db924b5570491b3ddf9b585fc388105adbc1505d8681629086a2b7440cf1d93dd381adf38b328dec7910d6aee4f1449a58c8985af72034bcccd52e02edce9c54c2eff56e2c2d1eef53c3343a77ab42992de4d7f993cd0668a78bd739d838991e254a72d4447d290d867417c63d94b057ac62e6ee98d68b6bd232ea2467fdbfec9717b8fc40f84709888bede05c2b0450e8c2531914e7d14e4c33d719e158d2a7ebb1a07fb814015196ee4449eaeaf87ec89cb74d6d15c4e4f3c40020fde0420aa2ef3a67a7c35b4b3f29979271ce30839a1555cf328e103259ee74fbc8be7acaa5fe01971ee5550059ce44a02d035f28db4824234b285364c6d1b0ff58fb92c8a6f5d01752ba8d9a3e46e8cad972bc7b4ec5fb3addf7cdce587b090532526434132792a19bd62ee4f6bb9de56e3c11a9d5623d52190267937aacffc65526c70c55ecc1a5624bff287b56f86d87e1db037eb9a45adcac9c7303fd36bff2760c3a3c2d0dc632660413b8bcd1901ee0830c681e46b266012253e062d4794d5748a54c24c2a8a464e1e2d62734dee5c929f1ff5a5a7444e07fd08b21ab5b387310e95b3a8c2988f10a04f84eff09c7c27273838613155dff6fedb0a64d1df989e41f565298e423620210e82b96e13394f20a4d00b3700f6723dc1638aaed6aac33952b1654a63cfe16cbed025153a736ddab7734702be13ce4f53ccf4e5b1b4511f2ad0ab22bae20b80d6041facddaf2454c5a562c21ef380629e432cc257b8f847bbd7458688da4daa227c2d439891abea3cd2af7c9c9612fd23c36b546a0d1336d4cf395f9143eef0b5cd322b23b8ede061f34d21194d71de9dd6c79e3e70be40b3efc3b6fb1bda2f569afc6552332f20c4c271f6499ce04db7bdcfea6aa4cae0cf4b4653fda2f5708996f736753ac8e381e51140974bedc3c25c95c84c22a13c04abf8229ef8c831cf1ebb42c2f3150bf060e3bca2bcaa26529d2bee0ca70412f5ae4467fe9876e16228a2977f3222510e7af60b0d8944e4b0943f193f496102274238730b6a380a400bf365387ed1040b0bcb86d2a646cc730be949e6aa65b5b88744f3fc4a5a0e37681c9c534e5af57a008d038c58f9aa231daed6cd4422a05732ef00c851ec57f2a003283f81829e45d8c92b3b1f8a66f1fab9912e22061990513018232ae2d2f3ff1df8b173d76fb3910feb28e80782377b864bd140192e27dba982e02d167c31e409f26ddbce82af1d91a76e4c37265260dad606aecbb3e46e3828ec1ec9de5e4cfc5d641df9ce43e7f1d1c8deeb43793b337b9f1fd0f7950dccad031e7b5fcea1ff87f6c97cc6b5c35a56efdda4815de36781fc38199c8b075fb0c2c1a87507a94b75839bbb8e042e4c49a208f10d21dfbc0b7780b9456a5b93c8866b80e137f3dc252853d17a50499325aa8639e0e4bd674545463f02fe49ab8c01d73862c995f94c049d8201f3e0676e237efa7e114611acffbc08611e4ae7921c732f30c73fd1583c1acd75b695f66e54edb15d0b592bbfd80bc8e9647a1b81bb41acbd7f46e742d4c25b72d151d30720c8ee4fbb2198ed87bfa5ea43b4be5c99e2e89bce932e145507ca1fe67f3517b12dab47f4d318cd623695d121898c2a10f364650f4c444f5efcad4309accf5032407aa9fdd73d22ebd1b3d311313f6ca641963509ac9234d4a9380289dad1d2bf50d8323c7c3b48ded3689cb0ad34dd72e4a1ab1ed96825f0b491364320a3ce2c0e03e972cb52b163462c96ec07311686f9d9b62ec51dbe3c7156d188c7a291f22731bbbd2ec97956f06d0837d54f1aee033d5681a0e1f66b8dd331989b0e34afbf401c6f1d891558e06f74b00633784c13eb7c9974ce83e7ddc3eaa3503ac1e64b29c999d5f5238312bf0f13241db64d727bd6219e285289b634fc83a058de870a1d03bd71e4e317ef2f0c9ac52908ed5efc116655efe0f1f7a6c0fda13195c6850d728340e4e74cd4f5dde89d2f79705fd52c05d032654d938b544bc2cf6f0a19fcceb621c9278a7dfe7a7bde3c8442b0601f2e78276d1ecc2ab6bd3cb05860375e48f94437092df7e005fc1affd38df942d49e8c6085f6791adb21e6a5c118ab1ee45f2dba30f6e6ca8f85a82f5a1d81664c7f52b15a7e37b4fafb32ad4e64b210eb96b2a0adb59d641483aa43e0e5356a1808af7bc37c3c76fd2dde1f542b4041df8b531bf73b2fc25ef0cd92bc62da25817576049c09fa35fb671d70413bd7c9b5c86f2ee8f1bb73f4b03955c47aa196c5835797731acff55a10af62b67ba95c9afa3598ca84cee89d33c5c275d2725e5e43b2205b3b69da9ac84c9f9399bbad7f58a04d51e706fe78096d763d16f2355e2f587affd566dd97b7835120a9ace7eeae904a37aa222d26050430c779d4a15d1962d281a724946771e97c22439dd91dc7e71697939464e73573b63ad383931b04982221731be7e45e8b50205a533c837374f8906e2efab73ce129fa72dbd71f19e57b0bc3df28fc3a0bd84771dc00c273a01f1dda8425846d9336733c1b0b59626a42d30eae4ce9b20151bbab5348c847d123098e81058f79ef84911e7150eef77cbd9c206c9cd19f72823c53acced07ebc0c36a29985df71e571edbcd78b8c4da5fd246d130decc010ea6c1dd9a22065f17c0b838a29189ffe5218480359507c577ca050e9de630cf2063ab7e379a8e399adca5ce2a4dafc452750241544f9e74bfb3c33cde9338a2e5d1d2ff4cd6106a13214b423a88ffbdb1df68abb0cb9d6a1c740c6e4b244d1c92cafb75dfa6e26ac31728b7de7c068ef5b35f9f64c9e8f4da6eb3fc028f7e6a4872b5732798b905512dfa686c682e66f69cad16b31b4f6ce7b0e8101da5931c3a2e6d4527a59ca32dc27f74826e69b4223d6dfca791b3312f5680d6342c625afc4e227366e82bad8d123634bc31f4dd78369fc1d296ee5e9d499564fbe1c6c0a372e4f180ec82648d1b153c009ef968de8f592882893cd80e8270f0d8b5beb1334a8ef186cca6d8396db04348e12195baa4d750e294d875438a8d44beb9f74bd3cb694b3f442d64cf2688ca44dfa13c50667670c4fd5d98f0780b931af57ff977e797fa47cf0ca28bad003e38fbb5aac54c1d0302133c6b874000cf475e6803e8a6dcf89198bd117503c21975c3539a50306a3298f8084ca717367cb00beeef82ee44294915e47a1b0cd7b776960308cbbcddaf5647d99f956a150d696d7f404263dd3f18632a62bf9638365784575a77eb1c239d8c6ead35d65981f96c3e7affe74b7d9ec6c416611461b6b71e37e78d04c790e8f2d71b363ce969823445917f08fea4210bca84ae163a2e6c72c45ce86200305c4098c9ff22d7a82f61d4dac096d0a4dc40b206bd31ce3efcf5636dc61bbf7fc28f8d15857d6a518fddf82a209e959fec68cd7000691b0f972135842013dda456c6e0e9b25a2b259f710970d90af6bd196526cc4af0c06edb273dd17865e17d46d72d301aaef4807bafedfa378883b6fdc5de214001bd8813a096db124148c80ce31ce8a4000028ae15a08c46de4977e370317fabdca26bab784e55821087d55c28d88fb465ec59adc5ac04b7e7bbed441e04df5488355b7a808f78ed74fba23b8dbce830d7ca53158b0c35cb5dbb3210b503374f83a23a1aa74dbe4af4310112e60269233a65f3caaec49057e8973c29d7258eff34d7f185c72702cd5cea425b481be9b85dd5ae623bb18dc541b6b6ffc01342074dff20d0ee8a1d84653b2b4b3e3b7edba15adb91e9bd6a210bbc1bc9275bc0959b61cc6ebf89f006a1d447f6517d279de356f620193586858b8866dc04ff6d52fe730e6dfda3bbd055fa07eaf017614d1eaa7c5910ecda8a89764708f82d762e2ae8d8ad9d8966af4d959eca258b1c37163a6cd9752cc583b7bcf1531f3b46b14b4054fb74ea13025b57180890165b946c8af70d4f1d22926148468784337463c02b6ef77fb64806bfc5c23b986cbde7282d213f5abf00f8c903f5ae6a77d891974f013a5d391faf78977befdb3525792f6a5deb73d2b242d9cf64cf9b8900579e1b812ea3f884c908a1e64b62618e7344b75860bb87501f857f9c4d8e4bba9fed382e4d2d3b938d37d538ea1de06c5de179408a053d0692bbc51b3421d55f4f00c11c839a436646e82bf91fcd1e488166360297124d7d25499cab6bd3fa205ad0c63154882c482e9afef0b19481b4abab1ecbedec5139868a9c3a12c1f1f54a5b07a087c716d6b0aacae4ce1e68f0e0dc3f449a8f2c1fee9ad8c85d249853bdfa99a4b16402f71afe98ee16b12c52fc7542328fa3e6f471b53ee3e702d692fd6261190fb7a0caa4e4a8c3b94ae308029b8a841db2dcdc1ad9532a911de1da0982d59ef3b8d54312cf1785f5224ad89cbd96706144aa4b3236c4ced4701405174c6f293d8b62c0e79bca1d18ed5213e1cbccc01d76bcfddd11c190e132e6a8ca3e713a38cea0153e06727de46a6fc05431ac90ef1dc772c9c8c7c097a162996879463c36f82fde014dd1fdb69009393aab605108b7ca0b5b3d13e6556d112496648515ba245f10ad7f7c417fff94fbdfc8eb860cf929b6ed134c02d44b5120bf25579baf2a21d03d53aff6c205b83782b0cb0c738ade12a8c05efa95c44b4ab6ce02bfa47d0c3952069232070dce19e415869ccd6487755cdf4dc09788de6cc7d5a21c15fce3a8d4d1aac0869c5e8954a2cfa571608cb45d64cba7380499ecabf7145c4386fba78b6deb338f5656f379b5bc08dcdfebd630f6cea0ba10f8b637576f03b078c33ec60583c597bc1366abc7ae0d118d05ca0d014b278ff90aaac95ddc7f1bba9f482afa1267cd49bd2bb9baa70ff714ed3d28af890892f4b8f3083d94bf1e13c6c0e1786989c233859f828c2e49d84627e9b3f093af1fe8b17088fe8d2d33359bc7a73fd0623c6997d42b6c0823f8ecbf8606792d96ac15e791bf6fc8d467fbf65043ab6bdbb65214b55529f6bc91984517e2fe0a1a1d17f34f9c46f59e80b0f0a6488cef676186c5275547a80442b2c69632cf4878f09f3c539b8a455addd5fb2742a67fd24545564be384bea0928a0b6254e5a1e07768fe6e8e39f7cfee185a8894c8c65a7dc83bcea62c3fa81905e93b6eee0e3de56ddd7edfbd681d0dd9dc43c9160bf6d6cea702ae59cba5ce079aeb0663c3f9e1a4c1b66d5c2a9a333ba4687ea0bac0bc3810e92381487e87e75aee1d085f5a132a4260f5d2aeb6510bd7677fcd099020f725739c5ad92876f9b57925d423c4a7aab4deecad0c40dcac1d5b7005ffcc064a680e487d4c798be5b473740993cfba243d87dd602dc4aed1153123773afc805c62e7a9a79a10141c097b79ee382bde5e44cf142f5b08e8a25fcd8d5ed13ab141334c175874a7d64ea3ecdf8148f563dd74aa46ec34e5a19796099d8d88dc89fe50ab7baaa801eb7d0fc4ae5bccb693ffd4206a50b7ab0092c791695f2ea9e8b431f108eadff5af7dfd9642736d2d7e5766bbf715c3434b8dbb2620c2ba02dc4aa5d87f1df2c67478b670b1b214dcbdf133287a3932a4cf2a18431cf0b2fc4ac919a0a759e341beb2915cf35e59a9739cc984b55e9d83c095e907c1d8ad397f4ec12e5f8aa6760888d62294192669d05699cf2a8cd06c9cf3c050d6f299344425bbac304b101ab327b59ea68affc50d0b171bd54eb28f06b5d55a513433bfc0aecb521d3afcdc4bb8daa8f6b05d6297e01574c9c3b2304ed1c233282d4d86fef784c7510199d60daae26b6b99401dde36bffad6d03c2ce7d011d74722024c6d32523ff185730b3d777ab706c5babd0427e273e104317e7c2ad7dac1a966c3fe7eeade8255783c2045fc49ab016f4dd8f95b75a76120472183536e75069782568af7f78b9989437a03b9d9f6cea393746475cfc28ca4b34f7703f072df45737e0a0c8e3336ed72769c2ed030307b7f1efb7c9ac2ef57bc6448a4e534a13badc20a7ee434b73d7de5a03b84735c8999f1569506c1f91515ca38d33f420f9fde6324eec5b8d06a4be57d5c88f3abaf86c252a96fbeb4e14200e7776ee0afc9bf606ccbac0b63c1a73082b8c7e496f62dcc598fe2a2018d6b1a03745a265de7c52df80b6e317a8f7fbc62c24114430aebf141385ec4dc62a59e722a4a1a95c74fde826765fbaf9097ecfe047ceb5b693489d35bfb44d979d5f4e4d6542f667103ad0740d830556fd52d45d9025b5786c3d3a130ddffe206e124df3f7b13d32ab6222eab85d3ab96d7917c84bf54375dd669360bf6fee51591fe809a2af729c5eab47d71683b50f459eb98b9ab28d81a0aedfbb1de806a8d7d7f06058061a98620658fdf6753184f6aa9b1a5ea581aa1b3b4cc549c80616e6050f7186d2ea37e2f5300bdbe66f5bdae2402cf52c8b1995d235ead2bab055410a00b22046f1abcc124be2b3bb442a45d94c5fa3f1af4d4d817b8db38e4b6ea9e5603614b4c4159c248c4fb11d2764e9f04f4c33b0accb03adf75d69980c115504f90acb6e69505ba2da59c6c6d5fd4774c6ccd7fa3e10648a4e59ea178c684d3cc133455913d6b31f91d0055e21f66cd5acc346bde758d44b4cae058e1be8db881628c442d2f73fbb7a6fe04961201e18ff0e9a114d19c387493b10254c2f9a9deff77e33afedad6fdcdd2945c12b378d8dae4a9d9f8d9c6c8ba179fe43c6496fa0d8b1db610568e61694ae7c3137eb8d70aa8d32f517a513f4acd8d0de9971e951ff5fb83d067fb1847a23fc2c544a81b94da62a41357c1250dde85f3599ff4553727014c6a13d94d566721c754ae3eee2715f97a73921d290569687015f0acfc3e1fdf717c062a4a532cdea0415c296d4703f730bd782e04fb57f8943dc6a4645f584bf7cf5a3d23a5d6d4978377be782e6d566a52c45fdcae58378e2ef7979cce133116559f805b81353999caa7ccf76ed83465ab0f05c10391030746ebee8c8ba1afc18e50bdafdca600c4d280c09094d3b7d621fbbf9870118954cb54557d3f2579a882cbf1f2bcbe9706ace68b07da730d00b33c355529ff3c25b2c708d58727b1f9824735e2253c229b1c72c9554651407589e3acad450df9d720658c0864da24c038d48c4bc5b2813fc8d3101e1a159e9539521f8642043d7cc0950769b5d7600c9283005b8000303b5f8578cf20041560b6a1e86e5ddc3fe3ef5b559785757cd3e253fb0a2f06cffe632439c86226dfa3625057396e870e2b51d7733f9ccaccaea461c3b924e5d785f624979c4154789559dc65cdaf919e5c4a7efaad7eeeebb00c7224adc4fc64984b4a77504da8d953cd195e7d4b7548e5441cf35277ee0189a6ee4afef5d6e26404eeb5c284f8bcc0cccf189edcfdc6d0f2537e27138e9ebba12fc2dfa927a2a2a94a5285b47f90dc8f8ca316d402596779c8f19e00c045c1c45588bb63ecd0372510f7fa29a11c8a1abc9bc355b3ac498567c2a8b34346583cdb939561d6ad2fe79870bcc82ef75cc450d0ce7c5f6841c59dffcbbb7a3d33164191e78994d8662ac459dcccfad3fc9f2f144288f0a02809c33de0207db2180fccefe461e220d4e5726be1d8db391d1f4db92c923ce7889145a41e67245346b2ae4fc4f5741a4167f1d0b06f18fd58dac7762a4750189131e07f55fefc8c3ef5d0af8d0fc864265867818770a94566eba9c482c4057fca6a76b3ab184cf7c2bd593888b80bd9f0904428f943604481c4ba77a823f595a7e5a4863b312c0de15e6a008f86a234c98b7e7593faad848f8bc8918f4a3ddd26b38b7a80eb8d05e643742e00478c5cb68d8bb6151ae383244ace8675396fb84dbbbabc58b11fdfefc9b4b1664dba6726ae1f520cb39bf13adca007cf6ba259e633cd9f7fb234d3ae3a66fe2cb6583472baffa17e3e5503162d28c39c60dc69c063f163527df669ba318a92fc9960ec10c0d1aae8b6acbd1dce699df72948f609108a05cb87ad3007a1a41ac0399f97729993c12746de79d5a1e924c988cf0bad46d8066f1dd23912f2681ccdeed1863aeff9c8c91d1ab723778700b2a4065bba18c237223bde9e024ba3636787820953e8b6aef870d9bd69fc5eaa3e391d265a445dc8ffc30c7d7df9683e76f49bcd63c6c998a514c9d82ec18fc9cf1ee3f908acf1e70fcc73304c0d9d3f002d0cf4a19d2b8aa30e8b267cc0d06f5f502913878d6f69217d349c4e4712154f9fabfe098a52169f5d8489c99d89bbfe19040d76118d0f1a49bc41f4ed28441e5d51d42b9bdb69d3170d6b2e18418f289b85ad1d7a53f6a8c0c3ebd6b582836f371d3e3fec36acbe1193542f80bbc025a614e2a6bd051d37bec0c3ecc5b998532be4a1665cb645c7eef52f425390d3b0eb478eb432ff96e96cdbbe06579508103cdecb0734e0d6cf1b66c6a969f62b97e91796d570d17d15f23b2a4a121a665e3758ce5a86adb4430b3844fbb9aede04317659925bb318cdb52df6418581fce45e57cb17cf0e29857d9fcc9d842af46fff600a0dfee0920d21b9a25d4740781829f1eb037db73827a87ab6b5c7c18d0f5e33eb1cbaba3659305456125d7e971fa33d769edc7fb23f0755ee418962433a9bf9c331e36739f4c7617e7c7f51a133155bcacabc47ed0058cb405a6effdc05419e6ffaad9922f558ebe6c0e24de7b161ed34cd4776f4b67b9ad95a36bfa4e1dbf56ade5ca246c18e7058e4e49600109aa0a69e5a305381e021d5fad8cd57ae73f52eae7f90cea876c4a60129afae182d87d36c70ea41bd1baef66c447fb107cd208ce537b22543de016fbbd1cc9afe78fc862bafd9e86413760773cd1889e94161eae74d3d07f140419198bd6461967c431487cfbd7626759823ba265bb4ed2af1b3da5d16d5784f6075b200fce1d8fc34e5c5be1683aee6afebcfb84a8d70f43e7d3e13c874d7fcc72d8a4edbf76bd6fe5316703d5aa1550999b8897737c8af469bc0054a8da2b5ab10706acf58a8d16e090e03c4e24473adc13e2b50e02d14a02fba244772723893cf28f1a0ec19b31679078120f6295938f749f579aa5e7b6dc3dce6ac1c9215323c1b77145c7119f1a364c380384b9f2055a6aadf5c94e27e1b2cbdb522028bcac6f3659dd85b634d92ba22da8a2f7d3b5e1af87c1538987f248f60e726c453b45bbf9cc58031bd24191a2a56e76d292f2f9bc0737956601a8122f79ec8c45f598c460f92d414b3b677fa99e0e415c4880835ccda831094e0fe220727391e243cc905cb42a92d3e29a728de381d4521a4a4889de73b99efb6cb3357581e2393223b1ec4e3cec4638b450e240596a06206938e4f155b9b18004d753765ef555ebc8ca915ed3366f897c8ae545038f14e33c3e4a20e95a901cbf0f3571e55d5a9068659bb490ff6b864aaf4edde681a5260ef929e15447ef3f971483d8291d8727c875f9288877421273a3c3f89e7c3aecd31c462e6eddc080b1e2da352dd815ed32b44dde79b1f3ab848c7954c883be70acde40e58ef7990551201f56522dbb5d602c81979644071b5f2d78c5dccfad9308998a6807a11b2343ecf5f12aaa663d6bd83ba4da9131e0e929f4ebda87b127d8e8998e02a39a85e25eea95289c057449b257a32c8c073ca6cea984300e8f4b3dc4e5b739254a39cdd47aba7bf9b6e0e9d7ad2bee4926ebb4dd489e74ac7b846bd9d5184868af08fec188ff9cd18b471c8a09809c6113732fce9e6074b3d82cd160fe3fa4c7313565c21f26502a73f3cc36161f6a4faf5931f239389f78577971dcc5bb92644404de02062a5478812989cfe94ef4a1e6486f886e6a64c6b18af8adf0881df4d3710e283b8fda07e41f7bb6e579a342fadbbecb225b0210124c1045a669b106e6deed9f6688a84be9f8d69e63046257342e30cb1c6339179d3672bff00a86785f82673474c6cac39d44726cb72b01e144f81bec670c0c9341f3c24ddaae3afc096f194901435566d2d8b4391ea711e76362fb9ef2dc7117f188d14589ef14cc4f4daaa760b30aa184dc99c7dc07b6ff1d83cbc8d5cb3cf6517632c0a669f0fad98768037a70c4eaee402cf2c43e415ddee07de1e2b800d26fc343cb592c9ebbf0f6ab52564471de198f7e127d7c37cec5d29209a62a62b3edd775e08b131febf1df8e7a3676fd01ab983830916cbf7738cc68c0d02dee90c939de9a2e84d5a72ccde7237bb1119a5240ef1deb1b699d6e2c8ba49ff6ba44575c60047f2ab38e6d71f3eddb02c98716369205842b7ce4c8c385e495b5b64ba0fe0fc1b8386583f59ab61b2a91d3115ad0bb38c8eb20248f2863d13e9a856f1965c6c1f684bff3f4fb85639ac821577891171f142bca0be06cd0d42be6f62609c1c45530f14a552a794be3b338a917a970b2dd4c15ced1cae8b0def01944d507aedf4c2fcc6a24852c21e3d0ccbbff50e957898430a36fe1861d0779e6bb7293472aa487a99e72d642653f9efd6cf01ad79baa9adc64ad331ce62763ffaccf4aa00ed08723129b506e1b1bf89c6c3d0f33ad084e441a1bd9f77a9b3ca9f338d8793f95404716cb032e28b294fc103fee2cc0496f4320dcc6e01d23018b41d8754adca289621295ae9c535e9713f1840039dc2b794aa34d954bfea5ae9364c5e18a8b0dd8677e175daf907a1c78139275b9f5ae50c72f5541895a0f71268437395cdec266b40e1ed47ac246b12fcb5556c0a045b7f4cda0d822762988ddee6341d041e9247ae95d7f910f5e1318479a053cb0f2c8875b3ba753827b9268a956ed4ade74f28f811951d69ae0b54c17036e2af2f1526495eff8bd4b50616cdf29e4398f315a4c9083695b08596a7cfbb990ec45bcc9f44d10cd81b1fed7e3dcde45b5d83e2e05b137486909e441e3760bdd64ca067b5328fb3df0d411b4701300977d0ca49eab2b0c4d2d4074f1c9c79fb7884bb022e3d255583086d55fae1c113b10a2291ae87bda604053f1c707d8acfcc41db415073979a06ec04a980c700cf76eec786e4dbb89cdcb00b868801236db600b2baf9109df2807a761ed0f9e3e684ff43cf6f3012b673f78e76d3b385012c4d47e049ce8b7f0b27e98888a83297e2278779eaea20fe8e5452424d20bb702e8f10a4d576b73ff9ab407b5f7635712bd846210bd6c5d404a46b2737a4c13d1b23561b58e6d23d0202546e6cc36830a6232822a196becef9cf9c80631a925b2d0537a96c7de049bbe8e60142bfb4d6fc3bd6c326fce9f4f4487fae77d66b94d384c0e9eec31d009f6428e3b0958a91bc9f484004eb509e4e4aed5f7b64288fa5e27cd3ca9a3454e33aad35bcbf3658ca0f3235e407d3f9146e6cc32fcc75a3c4666ee47091607f3cdf08a0f7c5d3660b4763a907c52b4696ffc6116c32d550fd15faf762d2426d91e1c96a8c7789b283c97dfa0d529315a662894d79fb2bb0a9df8bcbc61b7387dad59d0a8d1a174667b40ffb7ffd672f30aa126d73fd55c2248b9a577dce81d1e841d534b57ad5f71095622a95b1cabccae1f01a2706354aa8c6782c5781965c4a7a9476c51f6ec2ed274265d66a459b7579e05f18d02b1f2674da273213a9a56134cbf0f25eeee54dc1fd176f8a33c46e74fe4a83f87572b98dd4f9f41f1ed70a230f30763b62cea0365980bcedd7d80ffba692615cbbaddd0129e10941142f8809ab6cdb16ca50b0367de0196e932496fda675cf8043e63e5602b564ca272dab9fbc5b5a5645e7f0c4cf5f84fabb19224461297c4c4f4f278e6fb9d2a7d869928fb9f9297539e10a9086edb94540314031d7bbe78092dd0e7e7f8b46c5f2368a3b46b82a6d9cd647c9ce43d436cb39a244f0e66ff7eaa233ac763668539e9754fc6d6dea1fcb2db9da17a95792c723b2085092c6a465c06d262f0ac2905dd9ddff2ffc16cf7fd09fb234a4eeab53499c214f28ceaff0bfa392d9c4f13e3c59b8768d024c9b9e5a1a5c22a81b1a039fefb72e42409adeb80065c542d628740fd78bd637318fdfbe766f2e3bfb9019e7a28bd93464ff38b1ba76aedd5092cf564ecfe19f9daca89a971e0b6d3e57c8df7815b3bc5d946db3cc0db73cf878238f9117088fad991640402de69e06095aa84e0774f38c58396e2f1444a38ab7aaa9922d853f83392634ca08e0058742f7d739e3908cd0a04946bf2d52521653d6c3399527a0f6aabef66374a5d4216ec3dbfc757e76af28261539f1f1bca4351d3569b509331eaee4559010ad1638bb3c37652a7a97a74dc1f13b23b0627b6a8107955613637222d7293952881b152b28176deab864479b526f04185246a5cdc655fb7217307ffd967827c6aa06f35f259011393e73242b5d769a7e9b114a4598713175f4fcdc18c4267a2cfff99e0484064d72a5fe9aef723a2a5feffce8b341d72543fddb6a2a4cb076ff91ffcc95471ae31bee713c12440747ef6d34362cd6c258883d1f067057cf914aa674d15b49a2f4ab0d2f0bf7099bbea418ec48c8c5e15aac158df1a26752c7b248ae0414410308b1a154851bcbdbe279de23a6b2d6d55079dd434e1b3f688da8f2dd7d9771da1c57b3d70a5163af4d5590f20abf724d444acafc99307327c8100cfc3dd0e6ff216d4a5b9848e72caf7f87237cd621403c732aa54ba7d813ebde0d1f8ae8908571f9caf8283bf3c5a9c51878c867a15ae0fa2c708dcd14a66db282c48127932befb8fa15d6f4b92f0145fe4e9ea600b09b938936e492e64970a0fcd0626f4d3e99ef5d4a88d4fbc2ffb86de412e8c49bfe51f3a60024717a85e4ff015d43d83f1d3a717710fd69702772c62dd13059a42c5a5fc72a814aee29a5480006147ce5f5de18838fee7e13af8f313e241551222cbdb078f5ca8760f19852aa14420e430b25ed8c210685faa8015d7bca2d5e316e29160748e7b6377832a8a4509816513e9832a3a7c0c64fac8d3369633c95518cdc05293349cbac7264bd8472fbb2b3883a1ba5bc8728c02342221ef69418e01fdece2066bc569b023959ed7dfb193304e2addd6edbdd6472a00fb964155c3552a156e11c56048a2bb87e7d5d90ac782c195492bbe2d088328fb2a28d228163799f00421ce977aea53e0f8fa23c649e30965d0fdeeb90d500276a8b5bba29e4bf8c217b4f56a572dd42d042fa17c127a194df736f7763be04a764d17b32bce376862edab03ed9a683d11792cae26f050f5c37c4e7373514be7756fea165ada8758e914fd9c67d932a47e1a509552b1c2c42847eab6e6bd8f76d23cbfada051f05ad1eabd01dbd818b451808ad3065e2391438e34b42b19e66ceda91688bf13c9acb86ce75844fd5b661cb3cd0eaf21dd9296f45205c7dc33464b5e499be91f784cd544e11b0a2992bf02f71985edf0536bb8912f6091d190eb8e391aada24fde5e99e76bbadb93a9cfe388f218d14b6a3ac13d44d6baf8d9f22b1ccd66493ced156fcee889b2e2ad2e8ca6acb4c2facb6257f8bb6489dc4bb5bc4e14ebf6c9e5f4a3f81e061c9de74493b88c9316144b2e879483059345476ef27c3f626b4e241989a2c2bb33c7c1f8f32a1df36cf8d154768439cab9e29ef1544fbf904532286ec0f83f419b8e654aa27b7e6fcf6b59b8ce300cc01cfe82e308c998150c6e73cc4306d9844189944879622a6950c18fdd6ca8b73d53e666580563d1dae34900359e9f3ff98ef4cc902c04eb814771eaf47dd2ba7a530a9cd02c3bf0e0d9c4fa630e912cb3944da983afeef39168c90ff93f7441fe2cccd99beab9e0c56c808b6a49cc91b17539fb76df823979843d82cfb6965a67e47bddff484d6a56b3e89222483e15bc11130fa1f9454616534e770aea2d18fef44b26dea3bcbd6cd24f73da46e88824b7328f811bc253820987e9bf113521a74bfc711be8859d429911c3796783247ff233de7287fb79adcba67a64c1972d6745aa7fa3ff1d279a4f9dae0f6bf830e0e310eb8ff3f83ea33e712e7875d88e8de127862a22927cc09427e634da5058443138ec2e0890bcea3adf29b38b9ad532cffd8e6347e823dbb86eef6d311af7da587ea51d45ba007d54b355b62137020276acb5c10a28360b17ee3cab3d3219591df510aaecbc5795a7f7fcccf4ce8ef8aede1f6bceed0eeff33802d27191f9786a59392434c6e100660f9a63a1ca9cccc5b1f245fc94b2edb5f58e495a0c5b29b63a6a7b6f3e48f9619b125b499ad6734647ac8562807d6ae756e861d579f7e0004cbaa31a019979d4456ffb03704c641800113190e44eb186637ca9f17e7d761866f3ad5e06565a001bb25103448c9a2097ae86749bcab8808f152c8bfd5b29ed8d1c494c35cb0dd85d4d01b1d19a8316ca2b0ad7595d32e23019e9ff389a1e67b9dff4bec8dee7616bd26e5ece0ee61d1741c65d6f4e89d7212574a42e8ba37bfe3247fec9f40c9420481915a27f26126ef64f8826b3a7b7b2f60f5c956c4f8be4775f45f8a439d4bdcc033fa5cbb5360999f233c71403e1f21c76d55365eea95c0e3c4d4b752c8301e2cf86d76e5b7dd384172705ef835e93045cbb3ab620dfb1d251d47f31e643e0444a47e69aa680253c73c3846077ca25b33a86cec6d8680e2fc83d3d38544c6e4c45eb9ba9bfaeedcbfba95738ebed8677a0801a23d9d913fc4aadd74dad48b6a65fe56dd45a4d064caf6831107b333c25d7cb0d979e91c52c192fe91feffa6df9ccaddaf580e861b87837975055aacb7d73f88b25e706608741894b3b4f93be2357634e52dfed1caccdb3ea7656c25534b5dafa32136e92312bf346eb2e4cfad1e13acca44ebddaa196962a9b7269e483ec3a35c8b515ee8a2715fb84710551121b65f0e0158044c95ec181aad7f70567740f068cfc4be1ff20562faf0361eaceab853cb23bdf68300cb88d5b2b8d9500d18d6514a9ef5e473d5864750ef6a4f72d85c0cb5a25af4b83f96e986fbec8f1b29201d1e424b51281cf824e0a82dd5177541cf072238af519cb863e8e7918d78d78820ff550b10f56ec4db552c073a58b8be1fc8535b9bb857164402ac60c1d2a6459d1894e032b52f0cec429ce15d5b3f34da38fa64b38419688a7f44d1e069a75436b4bb79b4281ce120b4176fa3a647cbddd49d419fbfaac03131452df234a9e95950f8fb464328054882df22e043823809bb3aafb00e0e5ce437930e888526e0c2681176aebec2aedd912a16999e36923cffc24bc17476e5fb55ca96d4da25d2b47668c253ddf98b61bf266c2d06148a2fa93659837dcd0eb0eba595c1d5ce5f726432be0a5cf6efcdf5c3a64db2d854d02cbaa64edc09e4f33192a8c39962a5857e71e61416234a40ef63361719fc01b7b295a65b61f89661f79e3ad61d7d06b4075846b2652a173e0ae7b1ea016b5b14827ce13dc6238c407aeb30c7f117fb809bb03819b158ba84bb6573328e892133676fc30839dcb9def2aa46d0909c43b579d0ec82f85df57f95377806bffc9b27425d8ca203f7475ea53ff40213b98b04a95e56ddb1b3bef1ae215855c668c46afc864cdfd86ec5dcffdfe239eceeabbf7a25acff8ee173ff3f5de474e057fe4a6d82b56ca192b5cc45b0bc8276ae386b565e75fc882abb2b0faf22981776cffcd7734978e8199f74ef7f2cbe8218ca56c449e1eadca0440b853a4377eb05d383b097724efc4a3cbe0cd97bc6705aaa58c72d39d20d525efaf18e590c38bc93143688323dfeca90f1d47b1d642f4339451a5695be7ba054e462b82d5451c6c76761eb9ab7699c43cf09792ff696c24690de5ad3cff56a19f6db3dd5ec4e3457baea5cf74d694b48d02fcc0d0592e1da2c2785446d6cc10d7f3aabdb9d034213a82c676aad829f06d6678e4c17550740a1b540dc88b2cb76759ebba0bab89bcf55ccadd308a5fd3c4645efb4517d55e673a0ade71c291e805f63c4983d817473ba59a4aa283804f9971c64d7207cc79fb2b326973ca04b9dd5eaa124c8a880b85dc27fd8c5b5b44761ce55b95f02195fea9a8d0ef0af27422e5c24b4cf9000ac4f0dd8c42d65aa530dd0478133474f6718ce7a061fda1cdd558483c0dc7cef33a136d439d24c2d59bbf4d76ef5fd11a70b0f5ec2d992d57d13b1fcbff41556851c1120124f262b4e43e15febb3241e9b4d7f8bcf6d72a41f0d371649f2277124dae931143d80bf7ede1afbf7b1f26932d5fd725d2694a3a1d22ae6824a411df943eccd26ee50f3c1a575d4747d2c7cb42b85cf72515614b9a354cd6dd18a84897c2799e2c56ad41100d854cb07f7167cf02d5d298e8648ca56ec9d8f474f87ee9fd266b97baa3fe34abef10e030ec2934bf99234c1cd7d7ff56d19ea37e63606ed3c4dfd6859a84935a229d59a3de86911db30cb8afa39b5a98b5ee0a10ea8ba0ac3553d0666fb880f22658654cedd3dc789cf12dc61fc479f345c3344d2d53f34255053d0e7d2c422aa27c5807cc6bddc7da1c719ac39d90e3136f5b366681f31aaf44edb05a6b9e8015cc3654727441fd2eb3d42e980a9bd1b6b1266ce7371bc3090d3848f4ffd6f6d93847d5434b90926ea6477fafd16f080af5643a39c5eaa3c08966f7c838cd528ec549d9c9a9aeeb7c243b558dd8ddfb96421a7c29bbf1e898427ec78defe92494d7400576eee8706e253a033c2a5a12aee4382b581d2fb7468ee1f7152c5c6c8758780cd7b6806a3282dca9cfc45b2b90625c92f840105659b175d9c3a4fbd193cf9a070a3c62f55b9e201158c844c8664ce0f18d26e771de5f06b620b1f0c90a8f75c2809d647e32009230328fa98d5dddeb2e4fecb860a7eb4a4d89165383f378cad572bbdbf6f76f884b624673a413a253829428b2a55606d64f747938bc65c5f6987f9bc21b6d41d52bb7e8bfa97aa41055a69b1b792f7c04a644e287589d7e1a7bc3840b58e30b1c958a046dfaeb2b4689f395133f88708c55983274c5b9b1e6a8341f6bb71936de7b3681272dd65e99d2e9b4a86fcc2ad7a6f9563efa8faf45cf1f77c86171ec5d3aa665101e643d783568f02565c6143aa9f7d507b80d96381ae1f62970845e0d1be37a1911bca9692310c46f3c6a18a6a528b1cefae34981ec50a2b31372e3ec344e58fcd11862cf27912d57845d16ac8d690576a4426b8ed66285a083c4d9222395ceaa0f400eba0b7ffb5250731842516e5754899422252e56f0dca3cf6f8e9c350bc2c2b372489d8bc477ee1890c2d0004e79dadaed2ee0b06f082e091133e2f06db4e89408817121594b2b18f5785a6665a1aec8af1f41b7835287802a7a451ad8c58fa3f8f641f7ed7a8d6275957e86aea9bc84413c4d2507599e67711ae10e7288ddc0edc0b185b18778b8ace469e2176ff9e60936c42a76282ace9053e259140a35e57ff42f491eed438e1d22d78fc04d79572700c11964352655302bc19d111bfe7cd3e0b3ff84e02644573512809d5cf675a18d34a837506d032f76cdcb0ea8662dd63e7b8e53707865f62ccc253b2263b45cab5a2a527e19a86a14cb98f237de83519b2d31fad7cf3b4c0ffbba955bd5fced7899f91901479013aadededa64618da8467318690db224f3d025a2da24c3ae68e80c0cf09c365b5d6653cf295d7af4e4dc38fb7db39d1efa00b716026f8742c1c068dc3d8fca13d4ae542d94dd949b23f8d7cc9b27258917f1c6831947c146181cf821278e37bcaa314ff53d872289cd35cf3ffc0c47458e6ae710e6d89b8393d5d5c5d98f33ea779700ccf9c85fe4ce175efaca189493ef63686c4b64528203f76da12f18f9d65e31c8c0006bb915d4c9d6775d225b967d167997e5f11987e1be55fe9b2303689abad1be40e91d19c8c4f07bac2ccaa3666e009b012c5bd9bab5c0224fa481c5d50458121957c2d4da2f0034ce075ab4f10f13a7db1e848782f5876bb6ed6c2904c77d1b1dbd79d3351e850d9a3ed7052120d5bfeb2d493b4647f75c15b664218b6f7cd23c34dd6873a6207dc39a76f8b78e2785adc8a89ab634fdeb5b676edf283a83082f8d5f7f32ed9a4d551169a659c8447ef9ba7e67e52404ad8885ed57005da3cfa17c5a996ecbef1c698d92f131457fb2cf0e673c1c2e8c579bd882313b9da922d45f085fd28544d7948a6bae48f63995729702b449549610badb79295cac677c8e3dc69394c294074e08f068d6f8807510260e92e05c1e80b4c0d7a3dd0c9d48d383171f1947fd00c363b8a72dc04d93ede9f6a1e4ba430623c2f6646e952475d3e8de98cce4101cda0caed85cfddeb8b96dfb544c5a943c7a8fed02c1f2da6db5512c1a017c06822888275ae6f9a3ed445fa625598d2de5af5bb8f429d8b2d309bfc692831956f14221117a57544db704945bf2ea0939b2e369eca18e00f16268082603cec51cdbcf183cdb1b8a75ccda88078a68a80c16dd822c3b630cdeb8dd4397972be01ba6b0a42a20eb4986a764fc86a4b27965d42665c3bb999c009c82e18625b5e079b561ae16f27d79f33f551effc60df1088d9f39ff43f39d97f6517991bb8d990c78e2f12761fda2c0ae0e618d3cc0c0ea75eb2caeb4ef34a4c1e5c39cbe58aff78a53e5c6ce59ca11cbb4eb3097c2a8d15ebd1a0f1e0f594c6f789519d5f6862678b84359580b6b48357a636409ce995d624580653d5cb3e550373e78b492d6a182fe1a80c19552daf111edec7ed8748319df65e89a700bc8fa38e13ab83e82501f582fc5147f85f2066304a7127adb31f783036a1e3669c68505e6689966bdc272a2a904b33ab5462503ef58c8db968a64f00c403d14b1ebfa7bd86ddfe020942e33639507445107c723b84f52bb15bfc715c632573246db68607bd9062b2a985f24ebdd2557c345068f0247c6ca66eab7fc1248c5642ddb6174e953e42f535036a7ee75815a85394cc92ed049f2ff784a60851c87f05eb7f3a302068cf61dc5355449edcff18d0476f6a146917227a4db3fe018201d59db9a821623b5fa0d4574ea8c762a0dc43f4a5a784fdeb5125d09ca0f723d13c87f9d986eb62ff91fb56968293d118e60a9db626d11fa32e72487a824d0b6b3062abad0a68afd377994c38cbaa3f73628d9417e1d6e8ff82e2f77302f2cc716dbefe9f7be17eab37e48384701cbc65541f52f9e8123b8399c0a12a27e96e1244a49728058f769d0c294e42786672644a01fb8b97c75fbe7e2576a9d78f4ea883ed640921ef8c6f46ab0eaf348c1d15398f568cb4a88b09c3b2808ab213906c80d938b88a024a804d6a19258314eac86da03dd40e8864a538d7aa8ba65b7b5203f846d07401505b2bd53aa633def405070d40d8fd2b6cbcc5ddd1e4c16466e8ef92319a4192d28f3b4dbee491e53368c4d61871b922e65ebff100058f649ef2942350e9035ff264ff228cad38c71dfddd71078174069b4dfdd35db9ecd45861a14c205a57b363e97bf1689468c5751851810c83198b3e445f78fad90ae4838b7e91144b0b668fca53f9c684241880bb887a9aa74e4158ab36c83e2995eae2b42faa997dbce86c03fc769e01e0ec8e202dcf5da147eb200a2c7ce367796b888b6b24347e76ac323689db265593a06dac65aa8cef6d931957c3c8724a2403a338faca84d700a9723b7d991490fc9979e0dc6e593939635ec5256929d84a6fe1a50aa943e31eb753a58eda3477f6b6ca4d38dac00a08727fb395d0ad0370dfb98a5a37c7e5ddd592cb44ada776d5015a14cff91c282a87fdbfd6ec1bb85ecc4824b03053f9767ea36a5ea86b22638a949d19eb59a9c380f56ad86fd3796418e12a1fd29829fcb2098574c3729101c2241fd551cfa65307c08f541ad908603541c114ac006f932157659f4ad9634bd66a7c1c3b5848172e55e514fa5a646be9829b71b349e177eccdc4b00fefe5e533e3910d267b10f4eb2e24a6a0ff631144ec95ddce84ea8679111e17474c3cbbdd26c7b671f5f1810fed66f4e0609f988d2be9db58a2d2a7d8729f645a95269c95561cb242f03b1ca23ee840c9e06cd790d278b690182f08de0ba7657293be9b1bd30385c8689f38f287564bbf1e66a160539193db693eee039673943198d5dd6e20e3ef4d2cfc780569c359696ea031144d88005e7b021994b4f218ef352cbfba41ea792446bd0ac59d9ad835ca09f87c6f80b1ab3993e1f9d9d69fb8ac156348d128e5533c65aff9a5afb8adc303ee251a3dc8feef9b5cc4770eee160956bb04ba1715731414dc88f7dec95008a2208e680c5907999fe29ef474256660aa27524d816dd7c3b9d5448f98789d777b118c2042faf5f2da558b3ce18a967051eb27ade9581d0e549031658a9d1b0df4aee5e24940dc4f6d58bd43bf842e1ee1a2ff05d560870ddf1b17e1fce548af5e434e6d004eeb1ea7923e6f1f41e41741e7eb65b05694f139b2584f1cc070242309b8d57209af8b08a24f7fd1091e7d4472af5c073b6534be48164c33a36daaf645e2a8a1adc4ad2c6097cac49b1b755cfbd12a11a107649672530caee6c77d91fd42923058416b890cb824c348686f06fd559bab945d09d558733d433aec37d1f1c35319464b298af9db650f6b4daaf70823e1d7a15b1d9700ae191315a62c4fb43e1d5a8cf2a45c3e386718037360083404a89fde116cc2f42a4656e8c7ee9e0d7f8e36ac68669dd8ad1a68e37e39bde3e84347190d66bea30469a32db0d4622ebe817175fc4a663498b8d2e75468c8a7f79831cad258828eb122b72bc32267ea0eec11d567cffe378c15fc3f584fca613fe062fcb1efcd235cc179aef329ce7943e9e7028bad08ff9056f9f4e76d09fa3375666cada91f96fbc0f06550c45420d87e408fa61fa9b98c1f8b4ef751f3c7fa25d9d7ce2d8d7a93b2a27d4a494120f17232de3a79c971c0b9d63705e195ce16fda761b73f185bbf5ab423167a3b687cf8655e1ad40b6e49a4db0aec37693f31d65c8714c269d8c62858d65e7153941a8c36a4057c742e86eba4851b559df0cdc734d9bad7c6e2961d8a4f7701d1c3e638a3de7df7c4a2c3c3231039d039b980d9cdb6820072c2367ca54fe1966951d5e0ea1e07fc55d8133ef587582f201c06e22317f6a5148c2b510680a1c2a48e2c547391c150c7b74b3b4eeb20645c12b164a4b34ba33ddd2428202bb9273c1b70380a28adf69b9f0d8c3d38327e50b8a226a3573e7c32c0862172ab3743e3cd97e204c38254c06c3b5fb5f9d6599b082ebe206cf4313c144324156fd02e0b9b54c04e2a45aea40135bce3f0081e7854ac127528095137fe0c3f4e64e5c712eb92ba9e46ba5ef0aa2dfa3de2067f04986faaf7525b1b0096cf2990cdc70f9e7b1a534a9d17aa43aa5a1634eade9cfde3c92f71e56f047457b1d7e779de0ffe5cbf089bbbfb89bbb1f369d852b39fb9d90a492f011bd0905777705a7fd3f0ce82c643c8dcc290ee9f0e742104f0da6519cf3a42267767b18a18a2c110f78730b659f8d115c32c8fc7b988647ab8aa436eb809c4d3009bc0c0b8b19765e67579f1f2858066d4b8ed2daeaf02956013dfda487a57277527110ab08e6f76ce0d75e28b3108470b59599bb062203add9cf2552f3dc2c50e06352cb61df3eb5a909b0e513e994542332faaea2df19020d963297578c627e9ec707fc12fba9d471276125658a48a15e8ec484e064a93309bad70721b8db62f5ec2501481bf1882ffef57c79fc5594aab5e96d80c06244527ae72f4feacf5e8f6988b315ecd859238410de7b260e430b4a9777f7b68ce98a9444c4ed31b893436f25820e75b5dfe13ed851fcc2040ad6ad52b3783310c5c57b47f0aa200127632abdbfa017d3aed115a2ae7b81546163d5f3cac8cd68a3486c65e56580eef4228d9f20963c6602297b868964bfc110b170393380525370f87d32160219f5a23986d5b949237e1018add97439308c996c1910a3184b69f0baceb581a3e3a3ee31fb4e3591bfed7e2ddc7b33e4b9e691584f351e543376d2970a1358b687c04ac03723725f6d734fdfe058dc4b1cf1e5f227afb2420016f489f26d3d346b6b4937292208a28dbbb03ecd47b0e963cc58d6ef882db366c314e3a33d939090bdc96c5ec1ef896685facd6cb3d5124a3d6709df34b2ace49cad1ac6c5e694f2ebe00740e0f8569e02173a6bc2befcc7105ab7ac196c7883e32fe3b89df41eb4e03bbcc157ed550c2eae800cacc16c5c30820a7280c2806e9028e344d673263a4f2159a91af88f5907f62559f1f42912fc1f5b132545470b5d867a9a58283d2ed70b6d40d7670c1549966aac0d9c2299cb325d2a6add3830040d373a299a07e3081610ce259b141bc64e094eeab52c0d7ec992d67e1e8ec632463744b68dd10e512a7271929a4c2a214b2a92656810ed9be4caa6373f22d4a6f8ed3ed58ddb7ade80102f2a3eaf14288214f7b8a983dd4ca9674feaf7d93b67d2c2930559b1c48a7d993037ba837b2ddcc799e1c47ed60ac3696a506b6e216f54a985ea1ab8338651321319d676acf663a90a918cb9a901e101929b9b68dc68ef629ce64e24f7e54083fb4a588c77bca0ddd7d9f45a72282ccd9db7813c1091d36bb93b5adf07b3bb1120592bb3ecccac2be4b71369ee863665de9d2270beabeb6ab2ce8e6016ab67749efbcab01ba3ea2c81b2a57597a9147b715ccfc959197bd729ba49e065db7b8c5db6709a1337db4314be5b312c301d280f1bf0650df9b33fdeba80c3d94a1866762ced9b32ddd81f93c33c1e12d1fc013b40715633254f6c561f7dbb6fe3522e48a7666e70db5c4ce9addfed05ab5373db397ef3f7149155894e08f955dc640a72145ae02aecded61d1453c22573f9167c4acc2f7e4148a43bcd969befa304ad21cb8ff2a9fd2dd8a9646ce1163f19b2c2382945b020e709dfd99ff769ef3d36547c3d7586698089ced4edaca2ac2834a4fee9bf2abf348230863f89251c4a470c6b29794c827b72e162930825be42ccde928f7b5f68f480a9fc12d84210cb599274eb9cf8f58f7b1d2d6a9579e9b5f6830ea3713b1ac19088b4aa32c8200abcb37db87e4c649c7c253a59681484db873078f3ba045f43842e5cda4f1cc6df751b04154e371780c96d4ca988ea153ba31b9f8b47d594948bf05702c24e57a2ef6feb4f6655a0c0994b9c48ae6551bec68f9f6c6cd98860f91f1a4dbe6e6d1a6c9fb41ac0c02129d0eaae8122d704fcb55f84e02dbe6cb5156cec292b53969e53b1114c30a9bf9f00d875534e45344dbb924bc3852ba0a16c1af948e5cbeed46792e9b0e962787506c13598f1aad4bfb668c0fe8e61e23bd2a713d25d68e8a1c021d717614085c446bfeeaa72338fe8f9f21da9842c79618b78054b2f9049102063c1b0cda22e527ac51f2759fc8e072c8eb2cddf7e4d423888d4341b666e9ed3de00928211f8fef8da3c1d640e92018b1bfd644786ee973e4ab843173506a3b4bac7735069a3bc9d0377f8ab370dd1ca5f1d09c713dfd3c028dfbbf4e3d1969804103b7320e01b00de0f064891acd259dd45ad059d688b95a4a9940f6b817f2691690a3cd13932b2f902451799cd9a8915a09e92aade20bfb049aa79cecee51f9008004b357901e74142fbbf0bd411c99835e40d7a06585f0439a22829f42bf4451bf5eb2a651e7cdfbd877bb957d72c00ab902a19654eb6cf2851d386aa2218a6be58522cb02519ccc1a9d305c91939108e1b02ba311d3d3e54fc3803ba9ded4639cd25f7755990c72403d3410d61346ff70c4061a77406ca571650ccec11d7dd073c06c5aac1c1b59bd04acdf3651f092912f8beae6ad4c7d68e9a84d9f3754d4a5ad485bc07fb1d76cc702c9140ea5e38c1e3a6a1814944e2ce1fb54bad634c4fe7a64e3f96755fc8a8a0066bcbd8ae5cea35db54c5547007b21ee9312f4f09c29a22cc114633525bb74078d07e6f106fdfe4c36e077d7d83120585f27cb19b8b7d6dab34bb001acb2c12df0f15d525a30828953d6f7aeda56687e87d5a9244e3153b158ee0c09905c2b1d0b1e4c0884f1ddf4fef7f079a73a836e8abd5e7d91fd6350a733dd95ba964ff0e56399ba91c6c6fd296c1c625cafdec024fba65ecf6e19e69d815308f82af8f1d5575c263485f0f1a9f00fc94ef7ab3faac079796e43cacbdd7717e769debc2ae35fc526e26d30ec9b94e1cf4db0dad4e855e5a40086a69a73a4ffff6b68f64b89e988498f054a07d858f656456ea768387f69ac2d268e86efdf1aa789c59a7d4ebb2e754dbaa2b4b30157c6a6ef93f59d9e1f2717c2c03b45263d50ad43ad926063428ebceaab1109f1b8968c59a2cc2b70eea8358f6611d37e6b5806d131bcfd01eee1e59d22954e338253a44d48366337f3ca57cf904209dead778771590ffa9c461c480ad1b711eec878eb5ceb2883a7f1a7355b77e0e88978d0f3b55232e3ad7f535c104f28249001738137e3fef1296fe5de74021ec15261349814c440371f5c257fa9d795ce3f236f32fe24addb12c8d11851a2f356b62fb87c19ddc8c1328b5a9791d38741f79d7334732cac76669d649f4f1e3144d97b798e2f67f7faf49a9dcd69e5ba264212aba7ae76eb3777cd1c9b8d3f4cb37e7688061dceec817fc5f33fab0d8c5bbdf9bab2b76ee23b85004003158bb105bcff122e117f27f71d74917e06d35ba3e1d9b633dce2838be0119e0ad46d50374dd7b3ea1aacda08bd5f12b6efdfee39d3e6227a612370e87f994f1ef5db21f723380b7d0a1038b7f886ab6aa9b539b82f93ab37c9b7b53b19df9346866811cd0254de42b4ce7e6b4cd0fa77feef4a74cd0ed4e26ab302b56c087c67dd596430992df881cf24d5ae7fc6a1a838c89de91ad1fc5d24d2b31087b4ac800670e28fd5dc10e68862b123ba005ed68614ba326180c93a6c03150b85b87aa1d40419ab078ab575d28d62117a2eb83ab770b79868c9f40c40dcedacbe893cc7e1aa907b8532bd3bb1988768dfa7a72fff928299d85589c3f3bfc1dc569fb2c439c8f5395e2bc016d9c42c8616f203b31263746a4490dab69a3cca8e49e59abcc6bb03ee647dd0753de65332c4f4e19f7692ee72c645de7d4c7c8e29fc7eda3d68a40ece4aa3910dc6da80e5a3790fca65c9f746d12b25632d10b83130b7c95ed572a7a992a8b69546b64a61e7977bfce0c5a630b1cba373d0939c9cbc0c7fc38674901725da6d01449fd35d22c799128d8368ea374d8e044e1c081fdb1a75c595ecbf607ac93135947d6aaa8b1d60032bff1ab56611bcf05592ae87635f5eab99efa68fa77e28ce8d0f3d9d9a972f9ff5ad81ae2278e874432a6470e9995e71a3b7df2b4b0da149cc860aeb359b00c093d1bd87e922942eee731d38e9717e0dfe6ed302f5e270eb7abf4d1c7c3172190e5d95b5dc8517eeadeeb1901258cb3b54898352ef71d41374a0ba3d06319d5d7985e9378e6202fd89a01562ca8dfa67064f43c19302cdc3bcca37eb5fdcd1976f323696993be015a563f9d8c1ec8f80687fa374971c000f0748592fdf3e09fde6d8ba7510b715a02dda5a27e65dab5a60676f602ec57b9347f8386dab35fc12ef2286978641c626761b21f2822a6c923c1f39ef47e47468ddf004287ec50279fa32d36f8f01b8b987ca0758a847f605cf475e1af9de07c331e403e521ff0d088dae33a37f01afabff0f7d553f9046d63e3034dcedcd9d18a58e62cdaece83a54011cd4841792ea59f3e1ac22094104893f6e1d339584f25e0d6479b21823dd589287de0812689f8b06d9b88d7195789b3c259fa9086a4ceb24551ffa40fefb4c67878565b31a5136caf150c07b99d355b1a6a2777a76f7c57994a00682878e9734672b4b377b96c0f832f41364a73e7d87443971edc395f6d422916e3add9a4467b6d29b7cef730461e1414fbb2e89690ef84f7d40e159528e1f8ce5bacb2eeb6368ff393a406060d46d8b22d018070baab4f2324171ba5041074f37bcaeca92297902c1912f308dfd91d7c5f09e731b41b6251e68dc09cf5e29aa7bb9ee34a144ebcfa28a8df91b0d8c9718d6bd1b2c1fecd8b5b05f9d5c435089d2b03460ba1c63cbdb739530015e12e8288b44ab15e546c54244f0be642de48c33c6ec524b9f64fe56d89ced76ff8e3ca3374cb4d0550caa72376061f83d415ae9f074f93123d5dfca93308465da2693b7fd12f87eaf7fcd9c23959a36dc4dc6bf319ff7ac20dc2af582b86ed0d0ad6910dec04f16b181a08a4308a3b5e61b4481de48f18d67353122011fa4533ab1760d11ff54bf58eb034bce8a139fd4289d6502f192c86828f80590038173e4a79b8fb236bb4328cbb9c76039cbb37bda2a54faa05d8fbe6737c773640599f5ba5c58ba07733273f12802d5ba1f2d2afe4b3ed9f257f620b35b0f5f92a25e23e31d569a511197597b45e22b3e94df1ac4cca5fbadfd01a0ef5e78c16a81fd092ab9bbff8f0c15328e62b30a090238485de81f8e7a0556323f6ac043a0bd2fe6cfb285592766ce6a616801b8b0176b2bba862e692016088364b3f881bfeda241002f67ff672330b1a68476e6b8285491834bf8ed94591dac6553e2f2b950e9cde755c1d29a1f6f525618746f908bd8396813243ecf831671a679db23948d723200ef3f3db597cf489abeb3b3b3bdd603a0d012f85a65ddb7a3714c06b853b870206ad14c47ed15f57337644317b296e30216c3ff8fc9b8a68dadd973678dfa4e94fc2b8e9cf96a0ac328b2f8d7f42580346658c77beb7947bd063eea3218beaf1b7d2dc22a1e629e6a9ce0095da1d3c0f0e95ec3e783e88206800413c4247a850ee1432a2fbce0ae558a363d2cdef6531d98745a17b798b8ad619dd2737ca5487af86e95e9ccf4936fc47799d6f77cf24b12b4172ec25ecb7cd54856287c472215e6d5378ca23adbb734f8f96f6c8a9765ee4b9ca6f1c209f3ada126552438bd8a2c46b3839347b8a49507aeab9a6e54439dbc0bb48359fdafd1139a7fdf41df293805891f91d799826c869aa5c90bfebab35df547195d4e7a38387a306de921a01512a4245d53ab2046853e24692498da90d9d41262e3b4f54964a20285dc95b009035f17b01bc946b7de81ff0797480672116fc56ef795de509f2cc84980f1cdf8a2e70e90cfb8038a894010bed2977bf8c7895db297dcb5f0b3aa5e2da4c2d4a970d8a219e9dd12d0d1b94ef20a7ae9ef3b8a8ec4873ab677be7637e5ac6eb3a828c23c6f8570b54e2da596dda30b6285bc029a8ed34d83da4be9d34524aafb1633cb7681ed4ee54120164d662e052afcf6af76c72827949d174091e2c7492afd808c72f20f0ebe484aeb47a72226389cf315c7bca4826dd1c90b7c4281e35a4ce96a3b7c689d97e9735639c7cdcd0094c3d979f002c7b6d6c100c211762731e85602709534f56c924ee818b213a266c05fe9bd56508155a0eb92f4b5866d6162129cdd6241618b4169b535ebdf3fe09eaacf1528bfac81e81816d89ece2907ca295a3dc2b538cc0cae75b968a9bc9acc6efbab9f2ae4d1a2739f0d256fbba09bc22cac6f67392b33ad4c69757e9009834aded2ada887d2b53380568c951709b4f7aa22c5aa639eae5094dd4ebfa6661d055dc3efedbda213ba40b17819bd2198140b8eb8176b932cd79ebe29b694f1f57e7c884b36004c5181546823571d68ea876d2efd81001da86c0e98b63b4b338613567ea33e611f7abdeb8182e44df8796e8aa1e9c296581a31bffbf90522b7f35b8004c368639fb436e5944760fb745255b7672211786b4036871f603720d40b0a82d056ced0b84fe2632654b65508ccc8247d38a82b84074f01207450c495e9348a5ef96fd8f539b7d8f5b1a19800e7247734e7151a92897ba0e87dc348e01c1dd57249db60a0bcaceae9896c7da0a518384808d0214291088fc1a6b2b1a819d50aa6fc7e2229fa307e1f91bbdb42a8b1449284fec6a7bd9be7484e4b782ebbd06abdd7face56f8ad30dd4448ace851f6b92c276a4065c7b85d950d71e35998a89497922ea1427137cca07d9e6dfece1498ea571ebcb359757a5fd46ce8053782ff409dd86fcc97edb39586737a5fe47a5d213fcb9c00aed782da5c35701b8972f9771d94451a50877b8aee878e9ee12d8c8e4b5819e3d761458bffc14a1a1a83d1291021184852c5fba2b9547242bb82d3ce25c9d07e155fea728e432cddaf51e78d5757024abb2ab890332a376945b31d3e7bc4047bffb3fa992cefba9fd2ccc3574f62ec903b2755602c04a47cad97a9cc6da50642bf596dff75f3f92da9e9ff831cc53b1aa66e7b6153d6b6a73d6fb2fda0e9bab5a9080b8398e52cfa4404a4e12cf2aa5c3f9187b007fd7783ae7a1a8e17ae6e0c20dba65125cdd16d42fa8e14e001e047da2de087f1ef4bf7a2bfc8bdf727879f4e17e0c6b9964a7c5482d064851acd596b1bdca5abb779de0be9ea111915ca985edce46187d032653aa25b25142fda391329d286fb5baa1c9f0c7e288dcf7cda0a19e2ded2d95425482f8dc527729e6cb710c84a868d56fb378e3930aff2ef13feee819d680c78b0709db1d270f59ed868fe6c28c7a76d0d46012b56fb718697dc837c5ceec2043d36908d6a13165c72f6c9a68ee5b418bb2e6c010fa25ebcb78cf3c762a0c9ae1272329960f38b85a98a9927db35b624c58ae3b485f14bff332df727fd1f6aaeb7dfce1480b1a64b6dd9c7a5f67cc4ee4a4469248ef635e74c8fe65b4c19d16b59f658f0fb2181cbed0049fd2cafac7664d8c42198f181601740eff3536c6563df4c5858fba7016790d1eed332843d39abcc39ac51e0312c59b558a89d6ebb5c7d687572ff6932a4a287bac1066fd3e5e8dcd699de44e90b57c973eb33a66c9e049434b2acc2124363c2f1065d1a74ca1ccf3f2ffc856e7ae973624323625e1016f4866e643e32ccc64f56f0e1cd2e5f77985f16d15c6dbbc99032f80783d7cb2022df8cee5ca6de793036f1007c01c2666b0376ec7f7ccde208462849b1cd4b03b949ed58470e0456cc2addbdd25d2d2c6ee393d4f2879ed80d5e23c36173ae76e922e7200d65c5f777be1fb4fb40df0f615f9dea8e50cd2fc2aba1cc3d154fed14678316629a5745375ebf341d1315669c975de02aa8e3fc8086ff9c3d5b46cc2d6c9c23a34633b90dad4d192566ccb80260f83d23c8a15ebe6c28d5291cb718adf705e899cf0d66b114b7b9fa52db6c11d913d35b12959cf7de7c00062a8d1c9e2fe037e7668aa879541597d8008c1ef20a2f2332b80907089a8bf134518316e9065ec0fbd2829b5074512772e76c6f36c3465e14ef4a67246d041c01c6e666f9763f2502c8bb8b7d37b22bf975952e3cabb7506f492017b937a87a34d46d2a6ac77ab2b1fc402c3d03cd157c9db5ecff8675cf7cf3c91b587609083ec6e5d5fd3643e215ce18913ed5c92edb923723c273f744457ffa5c6f34573beacddc7f8a0db17dbc3ae9d3110572c1e8be65ae914df437c6ac5c09e7ae235d100bac04db47905f9ae7a86387dd7bada746d322b6d5b296c426a9334faf2d191b312257591340027adfb9d8f0ffa0f2ab9070df7816236ad2be09c19de9e483d1dcc68bdceec94d96fa1d861050e49fb0d7bd187d36fa36bc2b80ac8c847f382fc51e949c4a5a176b8b74da6a726b74709df1c9d401ce61b7fd8ff44c650dd4f3f460456faf14f6ccded86163f96012242defea3baf092484dfc68f265f8b3ea61fa81dd068a01928a7c2e61432ab37f212d6d9f2f0f6ff3addee6e202f54b013edf3b6356899b2b105a19f713d1a70b04efb8e20d5d894da2e22107b8ca72105d6a9ea6b30297f0908076c02be00efb9af5798cfb559ac9f21c47d8d9d71a154eeb95bffedb28473f5148554a18c66889e80ca584570f89e0271da945cae1be1792219daed35bd047510486ec8f1c580e8b65a63027719feaf3518eb80dfb95a1c45ffbdc7b2a5a891af4f7e1e8ec309fcd7c4739bfbe36d758769fef29636e880d920641bd3732e6080760592b33a5b1961ec2d14f8f7e673a6f24639fc062bdd1e0160b3e16795c69c64fe50fdca7cdc7126c3d8a2b1b7a3a708ebfabb7cab89a2a32eedd30857137c1618a1534b632235cc4fc4506dd7764e68398081a49374352e705d21001645b4ce240d3adead3f0a1c9c05a3af1f2c64e6fc9f02ba9333644f712986dac5e68049ebb54e4c3b5131f67898c983367e114ac1256184b6423e6938195b7fc13ae6aa748264bb098e4ef8f9b9a65cae3848291c7d50faa3523dec7b663576ca8339f5b70cd34f552d10fa844e18e87cc22e34fd20d248308ae7059f0af780c92a8a69912466b54fb47432e65ef6218a7be42c7fff306030bbe161e9bf802670f1b0ddb093e6db0c350cc2a1fb2857d5aef8e94c8d3b25159443e437a23adc908e4b811f5d4d5110bbb73b9471f0ec5ff5afc7d4639f9c0e79e99fdf0929b20f7dcacc75002a31a286aaca09ea0a940b325795e29258a9fbe58b01d04ed7ea3ed9d74ff66a87f2ca22b24d2c71568538c6956ed3c2d67e56f60a6e9392793929dd9a434f82e4b6f473124a95ffc42f7bb409d92160c3bf5e14bf740bd5be595b54e466ce94274c119c1b2ca050b73d66c60e713b00c6f30542d0d9d7971ac566a35f6d6096e835c5bd16d28308bf74c36e9262236121f218ddde21242f9c20d266e7254a3ab7b2babd95568cae8d150fd05e9db200eff570f1e6a2d405afe3ed0a216b9e71d5b9bc1b83b575a7de6e1f3c02a5533720201fdd5dbcb0bce8080ce12df4015802ba051d43ccd79a9b0d87c2a9502635c48fce127c790261a2426bb72bb2855d33749f448a878e9e259b33535f9d8435a561a1ca9823b9994c9256db7e970bb4bc608e002efac9976246245028ab29b72baf68688deea470127f88dd213273e1633ff2fef9fb26e8b642badd179953eaf84d571a6a75eba845ea63df75dd4cb06a9965d271cc2ac6002a77f07c3ff878bcd770807a3a31552b7ce4f2987df22e7f4a8b1089e7718deb24bb7e0bdbea0a3871ac7d17f347e398db788653f9bb248ab37b6568ab8aed6b52095106df2b42f3de70aa559994968ecc5858bf09a0fa9e0d5496c0fc0f2eb4d3c6ee7608902adc7eddd57af45afe1443ffd70a072a0b393b8e9a5579d8204d9f6669bedeca5fa94bad595b9a9ddf493699e9a08097f288df03a5aedf06325ca461d551f52d9d4f5fee5c50d8c661868064a4a852688485445ace988712a24c45b4732f615ea27e1245281bb7d06a00fc7f196d6d178690d614ce8486009d7e53106b39fc8c0d97f6e67536b249957760f55905dfbeb47d5c11abf962bacf55b2862ff9a08bc99920f22a36925d11c2dd3147929624cffcac705bcb29d241a0569777fd057a4b021fcb253be6466789cdecbab33f2782c81cd9df4043f6aa8037888afd80b326cbf3d5c132e130c9a3511320c0ee00533c20bee3f7c8deffb44fa74ed0c5ed0baf2bea43ee9c542c6151d9889c6cdc03a3b7cb30a7f15db860c93add06fcd32b03e54d46ae1b10b430fe502fa0256456dc2938ce0ebf9e394dc5932619f1635ebc410b469cf46a7579fbef4983f2556f977fd717a3ea888734bdbd24d8892afc014cc260c90a1ae52fc140f1172dfc10990514266e145480ad8619df35d1d2561a8134cba64358db7e9f5c9952eb03fbf76a881005f2a0cc4b33f842fa878a3967f9f7a5f3cb80ddabc4472f6b50938820c5d3f412ccde966f282b863c95eb57e35ea3fe78b81988f79cd4618be53680a2d20dd9f57a27c5483403da4d4323de3ba24bb3bc2706dc7fb8bf9e7522a19f3529e9a6e4c70fffa5455b9204919c2c9f39c77bcb01fc03b3bd7b99adc1cb10c99921ec7f8943f8d9bc2a9289763928ba947351688c7d3cd810dc8895a0a4dc7bc6b7da1dd7e0b0de39fb557a551178b061ba2b6cf47ea08ff9b141e28e56419915c1926008a7e08c12a4b2295039afa557d9527cdd75d90a54aac67125a56a69dbbb00df996a1bdcfc8455116aabf298f829811495fa57fa1ed9924f7627191db7291046b7432574f65779a1c788751f29079fb4b35cecfe86aa16922ceb9c555665d80d161ad081fca0f113f2398fb70721675a389f4ce105f426dd580ba496398ed44381f024179832fde550b2726b7c53a3fa87903febc6bf07b545987b47cf30967e0c59964d9a97b05a542bc5b90f8b71d17ee2ac4288d5fb654398b01991e083c3e91658fbae7240275f0dcd5cbd23c88cbbca2d242f7e8bc1f0692ba98778444c13c32dba5be842978bd40403f4e2fce9eb4ad9f48df77fd635888bb52545dec42c1849b41b778d2036ac52a10643b802ae681b198162d412b3ebba5d8b79af642a4a17c738b94e95a61cde319983f4d7d4465f0608c04a0cbb138664e050b9ef7c03aafc0409d229cbd39932ba3b49617dbac780606c13f802e558a26ef8efddfc70e33d2bbcacf5cd8ad82177d02e47be32315128bbab10e19f113b555b80c2b50b61092ea26cf91d8a0e4c116f905c2e02bc30002ac78795eb7c1ae79023b40ab8e706ce45aa98415bd4bbcb109115eca5ef2952e9074a93ec08f7aba209e10cc0bb18e1724b10de38aa5c27d32b56e41f730ec2a21f024c8255f059d54df7266ec57ed61b0a9c1eef4222d2cfa8ed05be035d15236b07045d07ff3487aa7ce30c2014b12c235bcb7449b919c9a2337aab755e4d39527441d4f04c5fa1d0fd79934fa99599edb51db274cd2f3f35d1a1399135ba61e7397248335ba3737152ba3629b3af773d5f6cb42ce20f14daab032642a57e32c52c8885da4cc9ff34bfd6628ae94cc069c7dc9a7fe7a372114e8827b0c7fceab4f7f6b6421f72348ec909fdcb2aa3fbea3af76118a6472148207d5ec80d25ca24358eac010260d7ac4d3491303cfa51bec6595f46741d3e9069559572352fde71d01a10e84451c0698965ea1997c863b24fbe61e0b242b6afddfb507868e1d3f25f4f7223817856a148b014907b7550d50c4c0b6943b526029a6a6c9c5660dcbf9ffc38516b0e6a771b362b0b8c424e30dbe0bf98910f3b7edea82a391509874630f94e68844dcde741460f8424231cdc583a6420b538a6162eeb3ae7cc47de42d7ea2d6d84217c5b99c268b87ff58e6f3ab4d020194d19b6b4983c7f4d088135905df4a5b0b7cc0171a3f0c09d96dd1f50690b2a9793b9c6d01422bf5be3959f2756c2ff683adce68c841486881a8bcfed1024dc0901cb8848406edc049863b7d091d99ec37552d83b920590c9e9b67082545bc1af572186090024599d255b7ecba4ddddfed8edcc6fb09de11af9d45e2262c0140e6cd6cf43db47eb6b407f136e245b9f4dbad396be35f677f02049becfefc72c0ceac27f6a9c9729f4bf5fccfac2eac4916e000de4013965b560efa1593fdea4b31c9a03659542ecf08a771b0ff7ca86dae7b23975a2cf774a394133b88da61908e710b10e54368ad503bc6363afe59c37fb0c8ec4031f35e01ce3c907bdf0c63eb03e2bb610b0e82fe8e1d627f79f0447f4087aeca59d44c2d2cdbed3788422fe7f0b2b4ee77e8a8fca4740bff3e262a60327519b036012e8ac995a562c756490659b73bf94ce8c7e9f167a6e0204442ff532018fb147afc47c2ee5173b04620822b974cf80e848c18cdff80e94b45131faf3e799151126b792afd6875d07386e14985b91881433dd996adc560db4ab99cea07a1d9e5effb0f8d9fd6987815343607b8d2bdd1bab53e8d5b89860f1174d8516c13a0cf4fef85e571f7810841ddd85197e670b3eecb27dd96104bdbbcfd96ca7610af32506a96502c94fdc47aa69249dc823fd0ad1e2b0c78c5f2354cef278e7c255341bf78b146d17eb2c5dc7ad6d037aa0acff57dc0208661da7b6248594445849dbfd34a82e924f1b3aa2ec7d35f06d3b49b3c19291f6f5cb149bed71b3d1d5ef27b94c2ef3f57ba665f083669390b6c06dc1b43660901034ebf433593d8302fc8e23f37cbd74ec107688b71f9774a4fb8fff89193306f47677e739414822b29b3f54166bca75bb3a734d4d15fc221b4ad7e509756a9a28d1b865e2314ce75c9d0f274bdcd5abfe7f0faa5ee65be81307fc3a4cee7734f91d5ad845b6206aefa4e032ea2e423f9580f480e4018ef8f2a6be9124c38fbfd36909b275151a682597c349dcdb7e9a61d6859b19de4ef558e944e5471e3ef45d398bd7edbb8c17713151fd0fb18de4fe75f208c0f549609b1edbd07afeb0dc8d293fb343aaf765f6704fbabae03999c1b489c0dd1ff9489b71a9fb0fa37ae204d9f8d2a16747b1f0ba788a8178f56a137a3064ec875a3322dce09ebba2641fb41845270283a62573e53cdd6b7deb6bf38fd6191a379a8150bf11ce1b6c3f21a75d7909b0f043f9b6557bf584e03824341132cea2a4b78710dc606bcda69a94d1be06bab119c6f90df2ef5904b1dbba51cd4289b96af47f381a8027a863d12300c8e3acf2cd265ca7cd1424de08b23061325f34b13f5fd9f53d4c90dd22d6532c0f3daf9639414b4099b8bac81ac971348b32d1a8d18a116d3a43534c8ef4987a17e44ba5dfadabb72204bb957e3bc4446e4b268c1ef877c18974f3ff5074b5b5c4af2da037af1e34a512d361b4c9ee3b40552373915b0dd73eb10dfcd502b1b24e3ca326f7e70efffceef573cb1f48de97e6fe4b9e91b92c90285f8df65359dcd944b484915e46469376d5902f6510511b0ee7acafcc51e85ebd824e3537e1cd98e20fa05ab01220efef9c46b1171b19749dc2deaabdfeafab011243247564f69ddff5531b9dd1a3088d92283f642338456dbdef6680ad351a74359ddb839ecd5b3fc1e0ba1379138e58ce8a11cca6de3f53b7523b9a3dda747d80d5e7a2ebc34b9b67befedcac9a7a25b798e73fd2ef9b765c865a3114a659f03705de9548aa3e6da2f9a6bca2bc263236b322a3bb702873fdfb9938af8d4333d657b89528d483e7d2911026ea36c5011dec4384a2c84228befa00bd760acfb9ae998096c013490466190525a9c37b750960f00f1e524ff94a82491f2213a0eaf449fb0cf795dd00d94ae9cd88c3128d7585c529707b89f9537194ad1cdfe0c18270c16bf2a6b0abd97cbb86af0030a527fa62152fb15fde319c8431c3b9698dff4c10421f4e7acdfa9374968e2b11ab2c2b61f09561674d12cff3312edaa28e7e05016718c09317eb85e31e815ed4c292b4eac0017fd3dce82e2f704578f0b5f9f335f56d6d91dcf0b57bb50bba4aea3516c89f7476e4db1e44436dfee32594a6cc6d278f31d6d9d86570b27b46d7d927bbd61237a258a4196c84545f0ee20d572cbf329646a6e6426a3c39b4cb980c321c627bdb9c3be2f69f70902634ee6c5d5a21eb357c2b774b4e4093a0b36d218eeda36fe46359348708a832ff920a279ae84a27f42640b31c278bfd395f1bc28d08157cd1fe4ccf9d0a9bced4d0a971ce99ee9a43a36e518e0d1740441fdc396d5875f21373a30d7c1f8acbf6180f70ab36b3c2763b40cada96a19b8ebc3cf6ded4949bbfce2fb69bb036b311f6dea66a9d772e186452998dd0dfcc294af221fa0eb92f99a10082479cb0d865c499c0dfa1c9b29aa1964f6c51dc51f8d9e03058f999e6554c67be12cae3b70e717cee4d09c0166aa8e1198607636cd0fc19652c7de4de28b863f54fabb2fb0f5a231c107e9b26915a76a014c16726a30c153f33451c049dc7a35b2fd1f6252207a5800e2720e51b3db6385c1f15e77f41f1401738e618b05c568f0a585573fd2beb75937d93256741294fa28dc127993658577118a49b8100419ef3d1cd9bfab7b01c66d2029641c0a3ca1e5ae149c63c3011b7fa9716deff4d6560602887301594d8ad89fb37a7fdf9e4f5f39aa0728df5ae3d248ec1ef27926dd22610ffa9a8d81ded2000cbaf706a2e0b22e49846bdd01001348e7efd0542b3cf20a6a8d2ec33c462ee58ca87d4bcfdac6f87cf6923b19578fc755fa3abec5a4acda06617334f17121b102aff6073184514a68bf62e5b29b3354ef30adc97f11c5a8e01084fb15ad751d859125ef34e7810fb760e1e5c8be2bd6e6deecce60bed1b63af65774c14f01c669abb5e989bdc8b467d5c8299ca869044b9d5bb3d1ea188ffe506ce3f4310367ede01a35507fc9065bc000eb16f0194df81fd76856ec1956426be814dd49c0a3459b727785964547f64f5a2d1c2d74b75813f48e7e173bc2a098250547000b38a03cc696b2d2bacd2f11763e002cafef752d3a19e59ab742eafe94041302fd2f309405120a031657e00a3a648ef82c0cc1e59241ee0dfc6e39623d41a1ad9e684ea3197a0fb981bc7c7cc3f32098e69d261bdcac8503817eb4121f8f8eb03206e61ffc0824e162272346d669b9674cc9bca5488c5074d7aa24fe5a4a5218c24475bad74aafaf7376f2c11a4467a1483e469f19e5e4794cda1a3ce7c1db24b147525215e815bd56c4825b24bf0c3919d722212b160e95dabdcb3e2fed4c6bfb0bc6a223c913479c8d4ebccd687f6c2de3b36d6e3004e90b5642ad018d3eb6b654d658b8641aa08d9332ec222346456679e0c9abb69215d49bcaed71c5615af4261c13ba24178c4cea56c0f91299b60df92e559597c01bf38cda5b32cd6f679414dfbe1ef73955d4cf0b6f2109af25c68391baa8cd988e60700bc8a167d8ca123843203c848f32c4d310eb6d9b88c3272d85a4a7d4cbc78d3cfb0f5a680a5eef298eed872ccd937fc4052031e26b88f829f43dc6b638eb5031a3db3dfd6c500f6b63918826e184953cf2c34998c045c0fc53d8946d6efe7881cc0a448b0df00ff2632a35001bfb4b391d20f12d4718750becf8fbb4758cf5d838344b9c0d2b8b22e2e0daf343a48044bc2b19e71735c29d9c953e568848cd382384a8a77212553d345499c3922e0728a356c2fdfba9bb130c8a325b5270d508c8a0fabd70b9cfe9c8422ea56c9241b50e1eaf41913c8a4a795f32b6058b1a2e179c910ad3dd3590b45f9fd380ec9be46ad3c7855a83d8a0b2e23f2f92294897eb7c80522cbc02e32ba9c075dc46a9ba6c5154707c9a504c9928c64adaa41c34c815278ca707740a38f63bb082c07420f8728fccb2e2154f8da35906eeb4c5ded313efaa93ee4549fc4446af262f2993442b4e97f90e5a2d1cf1ad2acf22dadfdc0e390eba227f8c624698e149ddab60e7528246f82f82da1e33543dd6d9380bb5691cb071dac072c72cf3f04bdd59bedfe189e60ef433fd74f5fe2c884b875915486733d4c5063bc08dc1843ae8a65d75a3cbf0fe9cc5ac3c0b05ecb336efa09a2bd31e85474ea0eef9af6a6295191a596669f258e5e259b953ab3b51c2915b123ec7c2a3c3ad7be32443663098541aec49e0c9ace539ccc7391ba496da74afbab47c6c0552b4514883f6c24717b27a8ca6d7f3bb2e6d4e36481ca36287e85881c15c56dec8257b230af67deee37f7dff86cf3d9f9417053c162b929c0ffb033da8684a632f208424f72c14502e13624bfb47e227ccabd467f1024efb4001c8063d9e2cb36c1e7445871e023347a077523fc49f1a3e6846d6295f78ec445cc458c1bd97e6f2b7b6465a5e5a4d5f7cedd853684b4c6dbcc6bc602b2309de0638172dad432e762d38d809c680337d99aa193a5154defa9820923717021954cf06cc549741c8824e0915032e5ee935276184b1b9f2839cdbcc02a6c0530ea02fa315f8c3147dd111a4e3334e426c425c20daf731abf98cd64c72d50ff9356029e1b5b7d2db98e1365f5e64e75376b356080c3a5c2c4bb9e5c4b0002a3ff9085dfaa6b8c3bf18617d913400f39b57e7e3ccdd6710f9811aa972790417e15e66e16665ca1a1787286cc69c83acaa2770e7f60579a469472c7f828dcef939e453f148aee343d0331c0f007630cb9de6252add2e33b0f246b18822ae1b42286861fd22692bd5b17a87f1f300514caa8f577cb63b34b45c4a9b75fbd8f77d5a1d38b1f985068ed181fdb010e61760583100c4e6e88d96ae005aeb00a0ae87c60acec8296e052060315291b60854f30b0d3319a6bbcdf518436d76e08e6809402d2ec1e877f0d40ff95a22641f51215b0292c246d498446668bee0480db7ebe2a1e70bb462e803b0f9723bc7aadebec3b66eea4c0b5c4f2ce38a33e7f6ce50816b58f0c41a8d039f7a4a418b26fdad2436e6d386b2eb046321355a3deb61820d4dbcbec3d4a5c9d19131987f28a0d80058fc56abb8b403435ee35395589c4c569b0ab1255125c71a032f749f4517b503fedcb0d0eed1a58ad66cd491cbf48ea6345617166cb7e571db2e01a9318bb76cbe99fa4ea3c43e0da17949654dd657ba9122d924e4d6919e21228096cce9ed668ac6a702a756075fef995e32ec6ca2359660fde38124f45b771644520df5d89d27aae75693719e60a319840369e777b17ef3c058a75cb2ebede6627fe665f9d49fe1c6fef731597ee00ea540c0a659c8216e874118f13284f263cbec36a50613942f54594e628d1b0e298d0f8481cafa7925e9d08c898505c91d40098f3881ea25e1fb56c79ed6b923f3c9a23162071f48f605270ef3804d25aebedfafbe6d57c22d90e263e8bf610870006307c440596bea6cb1d8a3f911776b205790c8d3c31552507af8dca3ff489a2e148e3b32b507492f0164b40ef0d6a9479424140ff8462efbf37aaf29ec126e097450d1969f19acbe697b7a6b99e68d6b778bc157822f9fbd6977bf76e65db811b23a34ef5ab7dbd47595f42b475ce27d66b8da6403f412cdfaecd67477376728faa22ec41c8618fdad1d4ca70379ea870fade1e6c47f113594e7c017543c9665e084740f8dfa391a319501c162ae31f35dbaee2c4a70be041bba7e530336ce2d7af4f694a4ac32ac538c460a340cfb6e9640449ce9fbca877d3d964bbcb623850148b00baf5def2007593864afcb00d55b9626ca5bb1330a7fdedff198e62228f0151c37ac2c78098a4292209bcf2297cb255d2b835bd95a07894e0e4728a3657192ed041fc6af4e1d6b6b21f0123a0331affb8eaf9ed3d8f5930162f9dc5db0619d9b213930ccf2f34da49beaef0eb1ffbc28f3b2dfd166f7b44d4f7c481b6546e278dd46571276f03512b188b77c9a0b1275e8e0d3a3f3c9ae37beb5818fec3944c32f120901b289c4a4c5371b1538915e49299328fff73a1bcf0a5165f1798c64a290c64cc19262ef8eb2d7f9b403c5ba0c182a24e79191fccd1ee30ce0ff02df11c1c3f14a4ec7f594ae22d7dfd9e23e6327302f24f6da087804f9e71581a3f27a828283cea07fcf440a56d8cbf617b08610724645ec54b63f72370025afa71d8f26253e5cbc2e14a5df425accd9da275305c6590e506e070a43f54b8292af1e682d00a48cddcfc77e4129cfd061e56c7d03002b0773993e91f1586553a7e2aebafef0a7b76dfcbe0b49c9f2cadf4558dbabd02a1cb2ae04214afadec00309171d3cae6402cdb894d5cfddbe78fc65e00d345579415cc47292fe2b78ad16b6ff1b91aa9b5f6f01b4994b10596d4d5d5e8701ddb908b16785475a892d0e8ab954ce94ec7eb892bfcbd2cf054a653a1e55ade1138248123d353cdc03953b5767b1fbf5895ec2bf5cf0977d0e6ccfc842f770593ead343a343e0c2f3078d3188a517da88449425329f46b5d65edabc83006ea1e619809781a3f553ce195f88490150b4c1731e9483bb6ed47535355db13457e889fd3818909d8d1e4875d30c7102cd185e0db6f064143d2e7eb177e73da394cb367056622d1f01de06b877e5c200de1208e289e213d170ac0d0cf4a2eb7d0158a08432925d57344898e13ac1b7810d345a389ed45c82af4963c7f72eb037188314f8e5ebe9bec25532afdf1d116bae618acf18c65166759a4b5a072ebc7d7fdf35370da6340b890b155eadb1132a0403d6a57a34979c7743df8aedf6a8ecc85d744a570f2d34501a8c3d2e11d2f3636560c657baf26e47fb06966ba0df53cbfc944b19dcb92c41f9ba02de4dc9c52bd6f73d442b17015a3939d5fec378ab6600d5aa0de0efe38489efc0c6dfe0aa57b3f6ecff4e181f8698997e71de4cbcd8ddf16e88d59fcb14bbd063f7c4680d453f53358673caf38a00092cdc868a7fdd9fd8e432637aaa0820207d1d8740b04dc3401acf66570cd5b8364a9829a74f746f99cd698162c44793d4a87d9d045fabaa3c4317cc805008a1b50bb0f9c680062273314c5007d4edc6e6e4aa0ac14dbb9cdccfd62a25a8afcb48b722078e65677424761ab10895d672f9f2705113bbb71f47a0838f0aa041a1b2d90f7d996888ac958cafadcb200409105c17b6158a978322bb3003bad9a25c45451273d2db88d81d368f273477ed51381e01c8b96f1ac5370ccbea6d786ebcca1beea9eb23658d8185eaee23cfa1c76810306e21c3dbc6ccfebc51667ff7dede006c1bb6eb7b6423d08c924a90685bd6567c172d40d3adec6b7ba9cf5dbe133353f7560b0c8f809616f187addfd2c0b130001f4e771678919ab0037cc173bf7308d9801d88344c0baa739b854544a0dd0dc140a0d4acc7eb8185b755f34b8640a878797bbbfd0b99b9d24c78ec9631c999cacbbfa36095940c9de4e7872d82b169a29c5be6da99ac4a688e4d472397118623fa74ce83ad3ec76fc2e21c047230a28ccc43322ade4fcbdd1ff1734f6f7e7e657c6c435318157db771af72fc658642d29664a9bbb37f0422a02fb7847773eeb5b8b183ad6331d371efdb0f27229849a4c1e8c13bbdd594d34965a3a009d65abdbaf4fa28e8966c9dd765537ea1b9ebff8e940766c03ce349bbab5a282ca569ec4c04e25325efd403897b42b44cab14a4c9815f5b836a3585cf6aeaae9437c2daf52156bc8de6f43969d515c1f859de9b613eabc95624750e54decf8c54132d886946408cda503d7fe6ef1ed81776effd7cb8669a06db502156412983e92d4b58495b6a67e3d17c8bbac05964dcdbc91fcd6cdd576482c2b2eda096cda24728d3416ff0edcc974788f655f064659facf9f86002ce5ef3d4a3562ccb284527d584fb8f4d74c429e908cde3b53f35c54d6c06733fd9ebf87d58070864b4348ac8a8d0c7b2ebebddddf7bf2c8b25dd83e8013e55fe9989096d417e9b9bcc37bd91468b5920ece663b4966dd656fdfa22337a5de26aeea08ae60e1ba59b21109c718c9c2cb094de4626b6b78e9d7b1693388b3def7cea528f5f9d8f300365b082547095ea3ce5267c01818fa78aa689d717da6b8c814d92bef6185589538eef3fe33b59d360a64b7fb03b6ab9d78fa5097f560b03745844e03e518f2d48f96aa3bddfb53a3bae8753b57a38bda2dc02a60a478b230e2f24e3a6e6c7f8c287b644a6a57558f33d4555d7a0a427f289127374f66ed6edf63a5d7b2d4d5402785c419fd20ea6b9dc4190fe9ae2490176cef74ee51f503f9ce21cf97ab5c8450c9d1890dc7aec8638a6710230ddea2792fbd9d31db03566240a0c9608456d045219f825108842eda00d881376d3dd7ce6c581f4c10aa06aedac410d62b00ace6f91fb965f82c6856fa8a984b57667820e0d57dfc9b3100eb63e5ad2f74ade18112c7acbffa572d5c5d7e606c6bde5887a3f51b7082039030d276b7f1b484bc40dff756ca51f1a0183bd97048a773af492530f4f3efc7e9ad2e9310d75cc6c8e3d97bc5629a4e16fc87de7c356ff7ba0f373e0ade98378c66d31f86a4e6ad4503b11e07e0ac09288f76ab7c007eb1f64336932b9785858be33d571960dc3b1a3d7f8db59dbb6d46d7fbd14dc3a6c49776797991bad43c9dabf27032b98b6df756a716d3d87c4be6eda8d951934a93ee3f07d1fa0c7a84b48a598e2a67bf58c911d2ce0d6fca126f003c81a6904637d641a0312aca8f8b6e646a5c5a506567280cc83ef017f0fe5e7a7a757665bc8607c30429c41f5262fd93371283152d24e40c3282283ddd4604d8ab0ebf05afc2f8ad3c747be196ec669611c650962e2fee01e920a93062d49c3de66c3ede87946b91b78d6392fb9e3632fa0831b1b407891354bea3752caa2f9ca6584a64b38a23bbf1c4ca43c2c7b0081ac392aaba71cfeeb102a93512e8b88d861c03ef4f19c75ee0448173bc532679a2322d231ed0a21f27b74e12e2d7444bb019a5118211d0abd4824aa0924c977d9df1cc427d00c901903275f911319a3b2baa9fc111d9655a057de8ee11ba797253696514a5cdb8fb72d194df0a17ead08aef5364bdcf8eddaa9d3502a7072f036c59b51edd17765232322c9214cbc545472c24df6aaaf821cbbff5005567677a5b924dbe9af2e4790c50fc55fa0a0d6f45398bf54b9ac64c0a942e8da62dae6f15a2af1d3738f6c85079394cfa8367079d868ebd24abedcf4c4702c74255f9e89045647735e69cfa77b3cce0c1f233b0d7d913fb15315de5ece5783676fc7f8a742d0498f6c34c28603cc68406c295a6df5437c83a2c60b7bad0085a1fc6aebedca3a04a4e9c2c6783801def82104bd2ddd33c558b1199784a3ec9fe2746392951f8f68de54ffb6d31080c2d0ebef7a5895d4325f6be06aac041e23dc7a5eb3f7b80e11b2eeee575108c9714fade36cd5c1449f50ce49f376572448f70dbfa832ffe104f1269c8e0ae92570fda609d459d898981e7301f63c3946dcaca27e7273bef12620225508f087f16166c74813488005087eb08c9453f43f700e469aacf8541c3a68c44032fbb61cf9f0fea5a2d33b039e049c5fea30663f5ac42bd26713aa7710ab1c601a6cac8a3393099be9e102c75cfb3019a2a09d93631f8184096c70d00a60af265897d8538f1fe6ccc670f0899966244a2362bc24064bbb59b82d62e7d1216753b59502a5c4d253cadbc86fe4f79f8774b0f3bc642b74336452246d2febab9e4904890caa1cf6cee97c25948e926750213ce1e56ed5b22a7129390f4fe28987d83b6f11f035a52350c799ad5f5a81687cbcb6d383d39d6f280c4fa75db6915ffb85cb84086f7329925f0b0463240711b35af48841a084ee5db1ec8bf19d9d9c885ccd5a94ddd626606460e423f1f5e0263e5dd31970fe4611b0748087ec143edec85a492de6a019f76b47d15c6d205c9d9d5f94db4c5155c0cc20475d2943f7b97293b01fb993af4c3050e00b34afd1e3793557186fa7123d9a8501609b65875d6c0c0f67d3a95ba01aa3442b0b62166ee4b962694aee5ac90a196b6ef7fd8d36347b66f2339f7bdfc3ccfaad69104c27a9b99591084a9fa926299b01dce564621ad783527a235e629e48151af34c8e8664e044560af56bc0ce3b7f5ceacbd8dc2120b9a910aaf353d165f7910da4e34bcacaf606706c6eb77abf9c50c7c1f868316c56f897d74972fd9110ee658b24e208478e30eb600ce0c011a2e4b65d15e8b78cdedf1809501bc166f457c2e84fa10617a1f8f3c25c2ca770d1b165c98d36969aa68fecaef5842312c5e642ec7c1bf52157bef6e6f0ae10a58d5112acd7e6ac4176d28ae48a60290f8d9cc922ed69d7946841cdf72a585266abce106ac8395b4ddd4911828dacad28d865a42e4f11b6b30a311854b9b10f7e38fb41d5890155888d636250e99402e7ac96feb973bd1f819630dfa714b7a40bdb265b0e3118000f3fe4b9cda25560ef72de5a39cb1984c429e23778dfec04abc1b8bba750f2346237cee2a8a6c56198c60f7ca11587231f23d4ce275cdc8e1a2b03bb17afb543cd854c914cbb4282393382feeb391c5f70cb1c9a9efa8b3763977d50653f3f351a2865633c3ed3c902997caad6530e423aa57c53fa6e4ab7bc49b8c500ef05f4df39629df071f3539681a464296e18172320f4d96171168616657c5e250ff770dcdf2f637aab44ab4e6b6a1901f83481ff138a0714cb2349218c91a66451d591ceabe8b37bd9561f90970e02421d75f1f7339b799f2c5644b85f8f6dbaca9a30f51153a1ca62117f30d0befa0a08ab7a8765f76816a853ad72997d2e153e16d1581368567ef51f2de2c4e4dded5ef5eb85218da3b875ee57f3f8b983b5ca0c206be91250e1b4cd5a2eeb14b207854d863a2fc751fa65b13e9e1e13d22aa1404538124cabc95aa2be525508e2bd088c94e128d2883fbbff5d8ed40d0d1a456459a0d2b177292069e9ef21a4a47a88897b2b5e4087db47c30269885644f945001730389606bf3dc703d3f89cf1f64f53f0f387a31d179936514f66ee69fd8711b0468752e82867eda625853712105a3f0403ef4fccd54dea48a6d7cecc18e09ab1d1ee1b09790b25a2a7dde30768a005fba501a0e65c76784d2e54b2f0e5e1916d08a7bf3adbba81f11588ce3f7f6b519edf2881b8a0e26129d4278bdb0a73e490478d1ea6e1c90fe25b073bc12c9ece97fabec6ff7ed382367cc0200c387da55c48670f64e377d3b041a9c406eaf7124a0fdf6ce4252c6e0497338ae8d1e10d7c33b488f5c9a355769ca19b95dcd1458af46dcfb58f549dda1213abc5aa8bc672a09587301e3f5d82ad2ed6a6fb5261a1e84b03227031d0611467e3af89ece1219d4d3976b4ab5059aeff4c616d7459dc85f80671a5eeec44e1d252ee6a5a9f3515b16e1a442ad7d4ce4f9d35ba5dfa1eca5edb0cd6e5a94050084d4a0ef2f8e2c6ec0fc5a6af55aaaada43fdaf5cc0595ca5093ac276850d35e66262dfa6076894df2e6b8a3f0bd2b12e72e1f17ee1315c39d082f040cb0482566b0523905f0a9d9b99cc4221952763accb03d129bc02974287310f5b4a0e6654231a2aef5613488062a31b5042dec35bfb6ec8bab4c1b384b52173e9f417f0ff9a96e146c3d87b1f9f0cb52225f36aeebe89fd9fd501e820c319f10dc0d9c918f28849b03bec2e92f6918d441721921b458058f2f41d1a79d5f4edbef42a730664863b3a0225a9e1ca0d006355ea97f07c6f6f40a136db74e3abe016e52f75607d0f7d69bfad0db2f23de0d66259e55c47294002bdcf22be1d3d3e36864217b7d494213f9b3be6edab15b48ac0445dee6129bf025bc24c122351a7ebde7a5456ee407a384f04c1b8380522a3ab57277f3babc3c9976c643fda87a1ac7745f09a0abe79dd4e8bcd2a56aa40b1d89d84b5aba7aa5e73611d24957af874dc4e8589042599e8fbf93eeaccc732ba68bd59db7f032f541354b68d14a8731fa71e45f6ff4d583a005fa696218d39df9f29baed11ac9c8d331e041be56b1b6e4a0e40ee861d16f0264288531d63dc6190ba2adf84a4834d4e954274f3616328d13cdb6ed093237dc4533144fff4a2f7125ed96b190638b738e962b9bc50af976dcb2caa444020087ee8c193832145240e2c967dc7b74e3ddb824c0a908f54d5a27e1cfa3e1bb9514c2d336ecc32a8400c423e6607fd52b6bdd6bbd25a3b2a303142f38f7b063f37c53b9e9ad7256b4e42e804a80a3b2eb714f745bbe5cbb421c5d43f8d45c2d9b119ab2c835140677e3ea087157d343ee3eb98bd60e2b353f6279425de2dcdc3fab828c3f7ca0a29af01b5cc05de2d2dd3e4d5515396c38467130e76685f6fcd20b69bea3075cb22bc611a28c23ca4b9e4af9ae9a2ee7dd28aaa311080f525af47730a88b2c114765ed1fe55adf623de4c375f9511d24c354519c553fb1804e23adc0bdf014a6b2b3e7f50a59bab69e5a20d8e0a36fd341b53f61bcf8a6e0a263bb7a5ab10b7bbb83dea765b9fcb575a1779c68c4e3c4033acf9a7c10e908611e550274e3c66112598db7d76366e73d7c1aaba03a7e1bced00d29b1259b171c51126915badc402b51985743e8cad304d7fd844e57f3897385686603ec484dd0ec1fe9be1850936a52e64dddac74a91bd628fdfea94a25d7b10ad6489aacc5f971d04bd7de3001e99cd6f6501f9db3713439f8509338c4e07839093531c0edfb5b3de800745480acf8d99632fa0e0de7290457eca9976a2bacd6dd889aed7fe7b74620b420e3868dfb29a7edf6f60c16609a9ad982f775d4b311ca054d946631c6b8c64f0ba96c93715197d7f8694b440163bc5988d8ff20d20fda22ca8635baad6e8aeb1bc0b26cc6703a42fc09d8bef85386a9bf162f1a7b86a9aa4c26b5c69b903febddf0ddd0407e56af704f5b14e4906c354cd4aeafbaff3cc57a23c45ae2ed43382c6664d9030a94f1274d56b183205a9a152f74648d8ed3965455a3ea2886b4c2a41576c3b37dcef33631650a235710b8e5e53b77a323146a7599b4cd8a43d581e87d839424b2a6126dd57e667a26641d15f542d66f57a8a65460cc4682d17d2ca116be4f42c3156a91119cbc6fb67a4ef7f6dd7b7ac8c86adc6b7c5e8384294f969fd5a0e466d19dbf9f138c89f4b11cfe94aa55e1be6abad76ee96b6496f892a92a4211990f5183f7e9651afd41dcb78a74112e37c1d14abf50577ceb6180bab5bf41896ef12677f65427cb3a0d1831438a61d2cafbc05b81aedb627dbe6d523ec9a02fb08ac579c55a84afe41262e838c62f4b322dd4d789e26ac3887cb5fcbfcabc0240f0c4b7f8ccd8cb16c2627b6b097cca63a125961074d002b5f694d5d21eebbf27e48121b62b72c76c7a28cb199449f2a415fe66d4a7f902b3a08f245e37d4b71969c8cab7ef917b928922c51e26286a0d4a1f72df2e31ea2d352d3714915739bd55f7281346f48f8d2b4d29323faeb6f18ca775e995b781c7c2b863578646c4fbcf0dd26ea1ccc126837ac6c728854851876b5c4869e76b7f17a82e6a5e270427893cc9077c0324157e4d746a34cb571a1341c0463caba882b772d2746cb0fd506098cfcaa60ec9ef70547e256b7601f95d4e7d0de2b00a7e3249b33f0a4ca6499bebde5506c74892c10f900bc821dbc53557143a6b2c1c3a4859120effd9b716e78c41a176f669c3046e622a5af899ddbe652d0523cc2018d8d68a63aac0732e94423722943e76dcc6608e99641041f86c4247d9a1304674972782f880d7ec4f6791269c60ebc08e7d4c8c790b9cad026b0388efba3a40f343d27be45e0ba5ab647a432977550069c360a487dcbec84116ed0c873cb554131eb9f549686a3ad5889e0784737687298b27d9fc6c62282e9a9955f846fb973de44dbe1a58cc9e77fbf0e4156acd6bf2676dc1cc4ce9ab51a3932ee1e57446b66b398d1ece20d0015127d66c35ee1ee745940e94f784480137d51876662b96ff3287e00ab8d54570dcbb8e5e2b4d12a557dab4fffb0742b8a5d58e59fbb4f14feb9b65c867e9ca02d22bb951ab5c1208b778a757be0859d6540a7f11801480ca1eed23035a635274017264698c84548b3baf1532364951d1cbd9ddbd0be29ff83b0d7b4b31d5f776ba291ee581dcf6717752cdce79956f12946fd735946388a53bdc1b3ee0a21ff05d26383e2d6709ea2039586eff3413a5776b5b2f9d9a2efd4260c9a95230f865cbb29199ea26a112403299e3dc309dce41944cd4af4533a7242a2cd515b2209cff2b716537b9efc4cdd7abbc29f966bba1f89fd3d5fc4f87e1190d89dcd3f5549e48c92fe2a8a7f2a51036cef4d15e7c2430559a4b9a045a3a38eee0e3c3788efbc03ddea7c7d1e516e4cd312a4b7504d5a23541773fc88070b56fdd5e6555664ff8c5ac47434cbef4b8ce92d897dcf72b18bf945dc67a1e3ff2779bec91fed7a5f510e8db265c103080e59be137caa368cfef7d5ba2bf45b76257e6107fd53ddc79c9510e4243ccf459e9f358ac0dfd45a55fc5df78676c238e3eb52dfe272df35bfe617cec6830943f75282086c0ebac65bf8858109d6e059761e02a4e3e10e2e29f1d0f7947f88d7cf2fc773425a11aeae6c6117cd24d6a311e7fe064c79d17a5f43c9f56adc64105ad917cd6df073162ae30059c0f7d7edd96f9fe7b9f4fc3d7a461eeef60b9f1524ef7add274969d669bd5e14e9ab84f06cd03aa6a481a065a9c1e371cee9a1a36199f9e4491ec1bb6d0ed364cc7179fe7e65b3907df1cb0a59bfdc58644375b62d9bf6cac098b9f61ad26e957282c3f65f9cfd076b13fe50b40ad9e7957c577d48eeaa2eeb4794cf01e989326221e0c2f8911c751e30ff7eab24f8ca77cd1585c2f37fa56fc6ffdcb47bc20436eb4cdbd14cf4843870f5b0d5af9f63402e4a02f4b23e7a8beb3922ba3d256746d8f01046b5f6ec4564e6253e2267cae44fac285d7033e50be3ca5950c9ef07caee5021c48365dc355d75d9d186a7565d033115175d4ddb5a537d192f9a2c660346ade3ccc59b350ca24e2d57f7c3d12b0daf498ee85e197fe2f9d0f939291c3255f2daae06aca43c03b1a48d054bb13250118a320d410e079761b8241dc2b6aa1461dcddafc93760c2836584d359d4c58ebf43c599eaed8e944256c8e4adff7e2a5cca0a7f1cfc469128a337f0d874ee3c9986f3021fcbf49197d3c78906ed3e0879aa88bfcbebb7f1da7adccd0eb4fa286bec27007e5545b4f91e5ec5032a323167e7379adcbb95a5c50b1e4e6f3197274d8faae9f1928e24fb03b748031e9c4e56fd0c519864b7e48d940dacc13ef52686e22deff046fcdc5567df7e3c5a6b9f948046bab054168e7e24a31d1c8989ffcf9c7841ecc6f61bb73158106ac29531090e0940881620714fdbb95f77d1a4427533da0ef1a2889556caaf04d56bcd5fcdba0f94cf4f0661cee7db0df07839d9b1b90cfdb7e995529c3546c6cfca4dbc4768472905b57d84c0a6de6f2861343ee9b4630653800b1c5ca0a63e4c70424a0ea9dac342fb6fcab1f450d91605f29af31c4e31cdabc866b61132f6a54a2a4fd2a1afb037a6428fb8df8ea29d7413661016a8b614e090407cd0c21a5b7749a</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-default"> <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-default">输入密码123</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css"><link rel="stylesheet" href="/css/spoiler.css" type="text/css"><script src="/js/spoiler.js" type="text/javascript" async></script>

20 年 Java 老店的“背叛”:WSO2 为何高呼“Goodbye Java, Hello Go”?

作者 bigwhite
2026年1月29日 07:15

本文永久链接 – https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift

大家好,我是Tony Bai。

“当我们 2005 年创办 WSO2 时,开发服务端企业级基础设施的正确语言毫无疑问是:Java。然而,当我们走过第 20 个年头并展望未来时,情况已经变了。”

近日,全球知名的开源中间件厂商 WSO2 发布了一篇震动技术圈的博文——《Goodbye Java, Hello Go!》。

这是企业级软件在云原生时代技术风向标的一次重要偏转。作为 Java 时代的既得利益者,WSO2 曾在 API 管理、集成中间件领域构建了庞大的 Java 帝国。为何在今天,他们会做出如此激进的转向?Java 真的不适合未来了吗?Go 到底赢在哪里?

让我们深入剖析这背后的技术逻辑、架构变迁与社区的激烈争议

时代的变迁——从“服务器”到“函数”

WSO2 的转向并非一时冲动,而是基于对过去 15 年基础设施软件形态深刻变化的洞察。其博文中极其精准地总结了这一变迁:

“服务器”概念的消亡

在 2010 年代之前,中间件是以独立“服务器”(Server)的形式交付的。

  • 应用服务器 (App Servers):如 WebLogic, WebSphere, Tomcat。
  • 企业服务总线 (ESB):集成了各种协议适配器的庞然大物。
  • 业务流程服务器 (Process Servers):管理长周期的业务状态。

那是一个“重量级”的时代。你部署一个服务器,然后把你的业务逻辑(WAR 包、JAR 包)扔进去运行。这正是 Java 和 JVM 的黄金时代——JVM 作为一个强大的运行时环境,提供了热加载、动态管理、JIT 优化等一系列高级功能,完美匹配了这种“长时间运行、多应用共享”的服务器模式。

然而,容器化时代终结了这一切。

现在的“服务器”不再是一个独立的实体,而变成了一个库 (Library)

  • 你的业务逻辑不再是“寄生”在服务器里,而是包含了服务器。
  • 整个应用打包成一个 Docker 镜像,作为一个独立的进程运行。
  • 任务完成后,容器销毁,进程结束。

在 WSO2 看来,“独立软件服务器的时代已经结束了”。这对于 Java 来说,是一个底层逻辑的打击。

生命周期:从“月”到“毫秒”

在过去,一个服务器启动慢点没关系,因为它一旦启动,可能会运行数月甚至数年。JVM 的 JIT(即时编译)机制通过预热来换取长期运行的高性能,这是一种非常合理的权衡。

但在 Kubernetes 和 Serverless 主导的今天,服务器变得极度短暂 (Ephemeral)。

  • 容器根据负载自动扩缩容,新实例必须瞬间就绪。
  • Serverless 函数可能只存活几秒钟。

在这种场景下,启动时间就是服务质量 (SLA)。

WSO2 指出:“容器应该在毫秒级内准备好起舞,而不是秒级。” Java 庞大的生态依赖(Spring 初始化、类加载、注解扫描)和 JVM 的启动开销,在云原生环境下显得格格不入。内存膨胀(Memory Bloat)也直接推高了云厂商的账单。

生态位的错位:修补 vs. 原生

面对挑战,Java 社区并非无动于衷。GraalVM Native Image 试图通过 AOT(提前编译)解决启动速度问题;Project Loom 试图通过虚拟线程解决并发资源消耗问题。

但在 WSO2 的架构师们看来,这些努力更像是一种“追赶式的修补”

“这些解决方案感觉就像是在为一个不同时代设计的语言和运行时进行翻新。”

GraalVM 虽然强大,但带来了构建时间的剧增、反射的限制以及调试的复杂性。相比之下,Go 语言在设计之初就原生 (Native) 地考虑了这些问题:编译即二进制,启动即巅峰,并发即协程。这是一种“原生契合”与“后天适配”的本质区别。

WSO2 的架构重构——前端不动,后端大换血

WSO2 并没有盲目地全盘推翻,他们对企业级软件的三层架构(前端、中间层、后端)进行了冷静的评估:

前端 (Frontend):维持现状

  • 现状:Web (JS/TS), iOS (Swift/Flutter), Android (Kotlin/Java)。
  • 未来No Change
  • 理由:前端技术栈受限于终端设备(浏览器、手机 OS),且更新换代极快(“fad-driven”,时尚驱动)。目前没有改变的必要。

中间层 (Middle Tier):Ballerina 的独角戏

  • 现状:Java, Ballerina。
  • 未来Ballerina
  • 核心逻辑:这一层通常被称为 BFF (Backend for Frontend),负责 API 聚合、编排。WSO2 自研的 Ballerina 语言正是为此而生,它将网络原语(Network Primitives)作为语言的一等公民,极其适合做集成工作。

后端 (Backend):Go 与 Python 的双雄会

  • 现状:Java, Go, NodeJS, Python。
  • 未来Go, Python
  • 核心逻辑:这是基础设施逻辑的核心。Python 将继续统治 AI/ML 领域,而 Go 将彻底接管原本属于 Java 的领地,成为构建高性能、高并发基础设施的首选。

为什么是 Go,而不是 Rust?

这是一个每个技术决策者都会面临的灵魂拷问:既然要追求性能和原生编译,为什么不选 Rust?它不是更快、更安全吗?

WSO2 的回答展现了极高的工程务实精神。他们确实评估了 Rust,但最终选择了 Go。理由如下:

抽象层级的匹配

  • Rust 的战场:操作系统内核、浏览器引擎、嵌入式设备。这些场景需要对内存布局、生命周期做极致的微操,且进程几乎永不重启。
  • Go 的战场:中间件、API 网关、编排系统。

WSO2 构建的是中间件基础设施(如 API Gateway, Identity Server)。在这个层级,“我们总是比裸金属 (Bare Metal) 高那么一点点”。Go 提供的自动垃圾回收 (GC) 和高效的并发原语,恰好处于这个“甜点”位置。

避免“过度杀伤” (Overkill)

Rust 的所有权模型 (Ownership) 和借用检查器 (Borrow Checker) 虽然保证了内存安全,但也带来了极高的学习曲线和开发摩擦。对于大多数企业级业务逻辑来说,Rust 提供的控制力是多余的,而为此付出的开发效率代价是昂贵的。

云原生生态的引力

这是一个无法忽视的因素。Go 是云原生的“普通话”。

Kubernetes、Docker、Prometheus、etcd、Terraform…… 几乎所有现代基础设施的基石都是用 Go 构建的。选择 Go,意味着:

  • 库的复用:可以直接调用 K8s 的库,而不是通过 API。
  • 人才的复用:DevOps 工程师和 SRE 通常都懂 Go,可以无缝参与开发。
  • 社区的共鸣:更容易融入 CNCF 生态,获得社区贡献。

实战验证——WSO2 的 Go 之旅

WSO2 并非纸上谈兵,他们在过去十年中已经在多个关键项目中验证了 Go 的能力:

OpenChoreo (CNCF Sandbox Project)

这是 WSO2 最具野心的项目之一,一个面向 Kubernetes 的开发者平台(IDP)。

  • 挑战:需要深度集成 K8s,处理复杂的 GitOps 流程,且自身必须轻量、快速。
  • Go 的价值:作为 K8s 原生语言,Go 让 OpenChoreo 能够像原生组件一样运行在集群中,资源占用极低。

Ballerina 编译器的彻底重写

这是一个惊人的决定。Ballerina 语言最初是基于 Java 实现的(运行在 JVM 上)。现在,WSO2 正在用 Go 完全重写 Ballerina 编译器。

  • 目标:摆脱 JVM 的束缚,实现瞬间启动。
  • 新架构:前端编译器用 Go 编写,直接生成基于 Go 的中间表示 (BIR),这让 CLI 工具的体验得到了质的飞跃。

Thunder:下一代身份认证平台

身份认证(IAM)通常处于请求链路的关键路径上,对延迟极其敏感。Thunder 利用 Go 的高并发处理能力,实现了在高负载下的低延迟认证,且在容器化环境中具备极快的冷启动能力。

社区激辩——理性的探讨与情绪的宣泄

这篇博文在 Reddit 的 r/golang 板块引发了数百条评论的激烈讨论。这不仅仅是语言之争,更是两种工程文化的碰撞。

反方阵营:Java 依然是王者

  1. “这是管理层的愚蠢决定”
    一位愤怒的网友评论道:“计算资源是廉价的,开发人员的时间才是昂贵的。” 他认为,虽然 Go 节省了内存,但在业务逻辑极其复杂的企业级应用中,Java 强大的 IDE 支持、成熟的设计模式和庞大的生态库能显著降低开发成本。强行切换到 Go,可能会导致开发效率的崩塌。

  2. “Java 并没有停滞不前”
    很多 Java 支持者指出,WSO2 对 Java 的印象似乎还停留在 Java 8 时代。现代 Java (21+) 引入了 Virtual Threads (Project Loom),在并发模型上已经可以与 Go 的 Goroutine 媲美;而 GraalVM 的成熟也让 Java 能够编译成原生镜像,启动速度不再是短板。

  3. “生态位的不可替代性”
    在处理遗留系统(如 SOAP, XML, 复杂的事务处理)方面,Java 积累了 20 年的库是 Go 无法比拟的。用 Go 去重写这些复杂的业务逻辑,无异于“重新发明轮子”,且容易引入新的 Bug。

正方阵营:Go 是未来的选择

  1. “运维友好才是真的友好”
    一位 DevOps 工程师反驳道:“在微服务架构下,运维成本是巨大的。” Go 生成的静态二进制文件(Static Binary)是运维的梦想——没有依赖地狱,没有 JVM 版本冲突,所有东西都打包在一个几 MB 的文件里。这种部署的便捷性,是 Java 永远无法达到的。

  2. “简洁是一种防御机制”
    Java 项目容易陷入“过度设计”的泥潭——层层叠叠的抽象、复杂的继承关系、魔法般的注解。Go 的强制简洁性(没有继承、显式错误处理)虽然写起来啰嗦,但读起来轻松。在人员流动频繁的大型团队中,Go 代码的可维护性往往优于 Java。

  3. “云原生的网络效应”
    正如 WSO2 所言,如果你在写 K8s Controller,如果你在写 Sidecar,如果你在写网关,Go 就是默认语言。这不仅仅是语言特性的问题,这是生态引力的问题。逆流而上使用 Java 编写这些组件,会让你失去整个社区的支持。

小结:没有终极语言,只有最适合的工具

WSO2 的声明并非要“杀死” Java。他们明确表示,现有的 Java 产品线将继续得到长期支持。但在新一代的云原生基础设施平台上,他们坚定地选择了 Go。

这一选择揭示了软件行业的一个趋势:通用编程语言的时代似乎正在结束,“领域专用语言”的时代正在到来。

  • 做前端?选 TS/JS。
  • 做 AI 模型训练?选 Python。
  • 做操作系统、浏览器或者嵌入式系统?选 C/Rust/C++。
  • 做企业级业务逻辑(尤其是遗留系统)?Java 依然稳健。
  • 做云原生基础设施、中间件、高并发服务?Go 是当之无愧的王者。

对于 Gopher 而言,WSO2 的转型是一个强有力的信号:你们选对了赛道。Go 不仅是 Google 的语言,它正在成为定义未来十年企业级基础设施的通用语。

资料链接:

  • https://wso2.com/library/blogs/goodbye-java-hello-go
  • https://www.reddit.com/r/golang/comments/1qomr6g/goodbye_java_hello_go/

你的技术栈“保卫战”

WSO2 的转身,是时代的缩影,也是个体的写照。在你的团队中,是否也发生过类似的“去 Java 化”或“拥抱 Go”的讨论?你认为在云原生时代,Java 还能守住它的江山吗?

欢迎在评论区分享你的观点或经历,无论是坚守者还是转型者,我们都想听听你的声音!

如果这篇文章引发了你的思考,别忘了点个【赞】和【在看】,并转发给你的架构师朋友,看看他们怎么选!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

学习体验下Koupleless框架-浅析代码

作者 Nicksxs
2026年1月25日 21:27

上次简单体验了下koupleless框架,可以发现ark模块的加载运行是非常有优势的,
这次就来看下这个模块式怎么加载的
我们可以通过启动基座使用调试模式,然后打下断点在ArkClient这个类的几个核心方法
比如com.alipay.sofa

Java进阶知识

作者 Sekyoro
2025年12月6日 13:19
<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="\assets\js\Meting.min.js"></script><p>Java进阶知识,包括并发编程,NIO等<br><span id="more"></span></p><h1 id="Java核心技术"><a href="#Java核心技术" class="headerlink" title="Java核心技术"></a>Java核心技术</h1><h2 id="Exception和Error有什么区别?"><a href="#Exception和Error有什么区别?" class="headerlink" title="Exception和Error有什么区别?"></a>Exception和Error有什么区别?</h2><p>Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。</p><p>Exception和Error体现了Java平台设计者对不同异常情况的分类。<strong>Exception是程序正常运行中,可以预料的意外情况</strong>,可能并且应该被捕获,进行相应处理。</p><p>Error是指<strong>在正常情况下,不大可能出现的情况,绝大部分的Error都会导致程序(比如JVM自身)处于非正常的、不可恢复状态</strong>。既然是非正常情况,所以不便于也不需要捕获,常见的比如OutOfMemoryError之类,都是Error的子类。</p><p>Exception又分为<strong>可检查</strong>(checked)异常和<strong>不检查</strong>(unchecked)异常,<strong>可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分</strong>。不可查的Error,是Throwable不是Exception。</p><p>不检查异常就是所谓的运行时异常,类似 NullPointerException、ArrayIndexOutOfBoundsException之类,<strong>通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获</strong>,并<strong>不会在编译期强制要求。</strong></p><p><img data-src="https://s2.loli.net/2025/12/28/QyiG2wuHZRnAIa7.png" alt="image-20251228135428400" style="zoom: 67%;" /></p><p>异常处理代码比较繁琐,比如我们需要写很多千篇一律的捕获代码,或者在finally里面做一些资源回收工作。随着Java语言的发展,引入了一些更加便利的特性,比如try-with-resources和multiple catch,具体可以参考下面的代码段。在编译时期,会自动生成相应的处理逻辑,比如,自动按照约定俗成close那些扩展了AutoCloseable或者Closeable的对象。</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 新写法:简洁、安全</span></span><br><span class="line"><span class="keyword">try</span> (<span class="type">Scanner</span> <span class="variable">scanner</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">Scanner</span>(<span class="keyword">new</span> <span class="title class_">File</span>(<span class="string">&quot;test.txt&quot;</span>))) &#123;</span><br><span class="line"> <span class="keyword">while</span> (scanner.hasNext()) &#123;</span><br><span class="line"> System.out.println(scanner.nextLine());</span><br><span class="line"> &#125;</span><br><span class="line">&#125; <span class="keyword">catch</span> (FileNotFoundException e) &#123;</span><br><span class="line"> e.printStackTrace();</span><br><span class="line">&#125; </span><br><span class="line"><span class="comment">// 资源在此处已自动关闭,无需 finally</span></span><br></pre></td></tr></table></figure><p>只需要在 <code>try</code> 后面的圆括号 <code>()</code> 中声明并初始化资源。一旦 <code>try</code> 代码块结束,资源会自动关闭。</p><h2 id="谈谈final、finally、-finalize有什么不同?"><a href="#谈谈final、finally、-finalize有什么不同?" class="headerlink" title="谈谈final、finally、 finalize有什么不同?"></a>谈谈final、finally、 finalize有什么不同?</h2><p>final可以用来<strong>修饰类、方法、变量</strong>,分别有不同的意义,<strong>final修饰的class代表不可以继承扩展</strong>,<strong>final的变量是不可以修改的</strong>,<strong>而final的方法也是不可以重写的</strong>(override)。</p><p>finally则是Java保证重点代码一定要被执行的一种机制。我们可以使用try-finally或者try-catch-finally来进行类似关闭JDBC连接、保证unlock锁等动作。</p><p><strong>finalize是基础类java.lang.Object的一个方法</strong>,它的设计目的是<strong>保证对象在被垃圾收集前完成特定资源的回收</strong>。finalize机制现在已经不推荐使用,并且在JDK 9开始被标记为deprecated。</p><p>推荐使用final关键字来明确表示我们代码的语义、逻辑意图,这已经被证明在很多场景下是非常好的实践,比如:</p><ul><li>我们可以将方法或者类声明为final,这样就可以明确告知别人,这些行为是不许修改的。</li></ul><p>如果你关注过Java核心类库的定义或源码, 有没有发现java.lang包下面的很多类,相当一部分都被声明成为final class?在第三方类库的一些基础类中同样如此,这可以<strong>有效避免API使用者更改基础功能,某种程度上,这是保证平台安全的必要手段</strong>。</p><ul><li>使用final修饰参数或者变量,也可以<strong>清楚地避免意外赋值导致的编程错误</strong>,甚至,有人明确推荐将所有方法参数、本地变量、成员变量声明成final。</li><li>final变量<strong>产生了某种程度的不可变(immutable)的效果</strong>,所以,可以用于保护只读数据,尤其是在<strong>并发编程中,因为明确地不能再赋值final变量,有利于减少额外的同步开销</strong>,也可以省去一些防御性拷贝的必要。</li></ul><p>final也许会有性能的好处,很多文章或者书籍中都介绍了可在特定场景提高性能,比如,<strong>利用final可能有助于JVM将方法进行内联,可以改善编译器进行条件编译的能力等等</strong>。坦白说,很多类似的结论都是基于假设得出的,比如现代高性能JVM(如HotSpot)判断内联未必依赖final的提示,要相信JVM还是非常智能的。类似的,final字段对性能的影响,大部分情况下,并没有考虑的必要。</p><p>对于finally,明确知道怎么使用就足够了。需要关闭的连接等资源,更推荐使用Java 7中添加的try-with-resources语句,因为通常Java平台能够更好地处理异常情况,编码量也要少很多,何乐而不为呢。</p><p>另外,我注意到有一些常被考到的finally问题(也比较偏门),至少需要了解一下。比如,下面代码会输出什么?</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">try &#123;</span><br><span class="line"><span class="regexp">//</span> <span class="keyword">do</span> something</span><br><span class="line">System.<span class="keyword">exit</span>(<span class="number">1</span>);</span><br><span class="line">&#125; finally&#123;</span><br><span class="line">System.out.println(“Print from finally”);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>上面finally里面的代码可不会被执行的哦,这是一个特例。</p><p>Java平台目前在逐步使用java.lang.ref.Cleaner来替换掉原有的finalize实现。Cleaner的实现利用了幻象引用(PhantomReference),这是一种常见的所谓post-mortem清理机制。利用幻象引用和引用队列,我们可以保证对象被彻底销毁前做一些类似资源回收的工作,比如关闭文件描述符(操作系统有限的资源),它比finalize更加轻量、更加可靠。</p><p>吸取了finalize里的教训,每个Cleaner的操作都是独立的,它有自己的运行线程,所以可以避免意外死锁等问题。</p><p>注意,从可预测性的角度来判断,Cleaner或者幻象引用改善的程度仍然是有限的,如果由于种种原因导致幻象引用堆积,同样会出现问题。所以,Cleaner适合作为一种最后的保证手段,而不是完全依赖Cleaner进行资源回收。</p><h2 id="强引用、软引用、弱引用、幻象引用有什么区别?"><a href="#强引用、软引用、弱引用、幻象引用有什么区别?" class="headerlink" title="强引用、软引用、弱引用、幻象引用有什么区别?"></a>强引用、软引用、弱引用、幻象引用有什么区别?</h2><p>不同的引用类型,主要体现的是<strong>对象不同的可达性(reachable)状态和对垃圾收集的影响</strong>。</p><p>所谓强引用(“Strong” Reference),就是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。对于一个普通的对象,如果没有其他的引用关系,只要超过了引用的作用域或者显式地将相应(强)引用赋值为null,就是可以被垃圾收集的了,当然具体回收时机还是要看垃圾收集策略。</p><p>软引用(SoftReference),是一种相对强引用弱化一些的引用,可以让对象豁免一些垃圾收集,只有当JVM认为内存不足时,才会去试图回收软引用指向的对象。JVM会确保在抛出OutOfMemoryError之前,清理软引用指向的对象。软引用通常用来实现内存敏感的缓存,如果还有空闲内存,就可以暂时保留缓存,当内存不足时清理掉,这样就保证了使用缓存的同时,不会耗尽内存。</p><p>弱引用(WeakReference)并不能使对象豁免垃圾收集,仅仅是提供一种访问在弱引用状态下对象的途径。这就可以用来构建一种没有特定约束的关系,比如,维护一种非强制性的映射关系,如果试图获取时对象还在,就使用它,否则重现实例化。它同样是很多缓存实现的选择。</p><p>对于幻象引用,有时候也翻译成虚引用,你不能通过它访问对象。幻象引用仅仅是提供了一种确保对象被finalize以后,做某些事情的机制,比如,通常用来做所谓的Post-Mortem清理机制,我在专栏上一讲中介绍的Java平台自身Cleaner机制等,也有人利用幻象引用监控对象的创建和销毁。</p><h2 id="String、StringBuffer、StringBuilder有什么区别"><a href="#String、StringBuffer、StringBuilder有什么区别" class="headerlink" title="String、StringBuffer、StringBuilder有什么区别"></a>String、StringBuffer、StringBuilder有什么区别</h2><p>String是Java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的Immutable类,被声明成为final class,所有属性也都是final的。也由于<strong>它的不可变性,类似拼接、裁剪字符串等动作</strong>,都会产生新的String对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。</p><p>StringBuffer是为解决上面提<strong>到拼接产生太多中间对象的问题而提供的一个类</strong>,我们可以用append或者add方法,<strong>把字符串添加到已有序列的末尾或者指定位置</strong>。<strong>StringBuffer本质是一个线程安全的可修改字符序列,它保证了线程安全</strong>,也随之带来了额外的性能开销,所以除非有线程安全的需要,不然还是推荐使用它的后继者,也就是StringBuilder。</p><p>1.字符串设计和实现考量</p><p>String是Immutable类的典型实现,<strong>原生的保证了基础线程安全,因为你无法对它内部数据进行任何修改,这种便利甚至体现在拷贝构造函数中</strong>,由于不可变,Immutable对象在拷贝时不需要额外复制数据。</p><p>再来看看StringBuffer实现的一些细节,它的线程安全是通过把各种修改数据的方法都加上synchronized关键字实现的,非常直白。其实,这种简单粗暴的实现方式,非常适合我们常见的线程安全类实现,不必纠结于synchronized性能之类的,有人说“过早优化是万恶之源”,考虑可靠性、正确性和代码可读性才是大多数应用开发最重要的因素。</p><p>为了实现修改字符序列的目的,<strong>StringBuffer和StringBuilder底层都是利用可修改的(char,JDK 9以后是byte)数组</strong>,<strong>二者都继承了AbstractStringBuilder,里面包含了基本操作,区别仅在于最终的方法是否加了synchronized</strong>。</p><p>另外,这个内部数组应该创建成多大的呢?<strong>如果太小,拼接的时候可能要重新创建足够大的数组;如果太大,又会浪费空间</strong>。目前的实现是,构建时初始字符串长度加16(这意味着,如果没有构建对象时输入最初的字符串,那么初始值就是16)。我们如果确定拼接会发生非常多次,而且大概是可预计的,那么就可以指定合适的大小,避免很多次扩容的开销。扩容会产生多重开销,因为要抛弃原有数组,创建新的(可以简单认为是倍数)数组,还要进行arraycopy。</p><p>2.字符串缓存</p><p>我们粗略统计过,把常见应用进行堆转储(Dump Heap),然后分析对象组成,会发现平均25%的对象是字符串,并且其中约半数是重复的。如果能避免创建重复字符串,可以有效降低内存消耗和对象创建开销。</p><p>String在Java 6以后提供了intern()方法,目的是提示JVM把相应字符串缓存起来,以备重复使用。在我们创建字符串对象并调用intern()方法的时候,如果已经有缓存的字符串,就会返回缓存里的实例,否则将其缓存起来。一般来说,JVM会将所有的类似“abc”这样的文本字符串,或者字符串常量之类缓存起来。</p><p>看起来很不错是吧?但实际情况估计会让你大跌眼镜。一般使用Java 6这种历史版本,并不推荐大量使用intern,为什么呢?魔鬼存在于细节中,被缓存的字符串是存在所谓PermGen里的,也就是臭名昭著的“永久代”,这个空间是很有限的,也基本不会被FullGC之外的垃圾收集照顾到。所以,如果使用不当,OOM就会光顾。</p><p>在后续版本中,这个缓存被放置在堆中,这样就极大避免了永久代占满的问题,甚至永久代在JDK 8中被MetaSpace(元数据区)替代了。而且,默认缓存大小也在不断地扩大中,从最初的1009,到7u40以后被修改为60013。你可以使用下面的参数直接打印具体数字,可以拿自己的JDK立刻试验一下。</p><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-<span class="variable constant_">XX</span><span class="symbol">:+PrintStringTableStatistics</span></span><br></pre></td></tr></table></figure><p>你也可以使用下面的JVM参数手动调整大小,但是绝大部分情况下并不需要调整,除非你确定它的大小已经影响了操作效率。</p><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-<span class="variable constant_">XX</span><span class="symbol">:StringTableSize=N</span></span><br></pre></td></tr></table></figure><p>Intern是一种<strong>显式地排重机制</strong>,但是它也有一定的副作用,因为需要开发者写代码时明确调用,一是不方便,每一个都显式调用是非常麻烦的;另外就是我们很难保证效率,应用开发阶段很难清楚地预计字符串的重复情况,有人认为这是一种污染代码的实践。</p><p>幸好在Oracle JDK 8u20之后,推出了一个新的特性,也就是G1 GC下的字符串排重。它是通过将相同数据的字符串指向同一份数据来做到的,是JVM底层的改变,并不需要Java类库做什么修改。</p><p>注意这个功能目前是默认关闭的,你需要使用下面参数开启,并且记得指定使用G1 GC:</p><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-<span class="variable constant_">XX</span><span class="symbol">:+UseStringDeduplication</span></span><br></pre></td></tr></table></figure><p>前面说到的几个方面,只是Java底层对字符串各种优化的一角,在运行时,字符串的一些基础操作会直接利用JVM内部的Intrinsic机制,往往运行的就是特殊优化的本地代码,而根本就不是Java代码生成的字节码。Intrinsic可以简单理解为,是一种利用native方式hard-coded的逻辑,算是一种特别的内联,很多优化还是需要直接使用特定的CPU指令,具体可以看相关<a href="http://hg.openjdk.java.net/jdk/jdk/file/44b64fc0baa3/src/hotspot/share/classfile/vmSymbols.hpp">源码</a>,搜索“string”以查找相关Intrinsic定义。当然,你也可以在启动实验应用时,使用下面参数,了解intrinsic发生的状态。</p><figure class="highlight lasso"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="params">-XX</span>:+PrintCompilation <span class="params">-XX</span>:+UnlockDiagnosticVMOptions <span class="params">-XX</span>:+PrintInlining</span><br><span class="line"><span class="comment">//样例输出片段</span></span><br><span class="line"><span class="number">180</span> <span class="number">3</span> <span class="number">3</span> java.lang.<span class="built_in">String</span><span class="type">::charAt</span> (<span class="number">25</span> <span class="built_in">bytes</span>)</span><br><span class="line">@ <span class="number">1</span> java.lang.<span class="built_in">String</span><span class="type">::isLatin1</span> (<span class="number">19</span> <span class="built_in">bytes</span>)</span><br><span class="line"><span class="params">...</span></span><br><span class="line">@ <span class="number">7</span> java.lang.StringUTF16<span class="type">::getChar</span> (<span class="number">60</span> <span class="built_in">bytes</span>) intrinsic</span><br></pre></td></tr></table></figure><p>可以看出,仅仅是字符串一个实现,就需要Java平台工程师和科学家付出如此大且默默无闻的努力,我们得到的很多便利都是来源于此。</p><p>如果你仔细观察过Java的字符串,在历史版本中,它是使用char数组来存数据的,这样非常直接。但是Java中的char是两个bytes大小,拉丁语系语言的字符,根本就不需要太宽的char,这样无区别的实现就造成了一定的浪费。密度是编程语言平台永恒的话题,因为归根结底绝大部分任务是要来操作数据的。</p><p>其实在Java 6的时候,Oracle JDK就提供了压缩字符串的特性,但是这个特性的实现并不是开源的,而且在实践中也暴露出了一些问题,所以在最新的JDK版本中已经将它移除了。</p><p>在Java 9中,<strong>引入了Compact Strings的设计,对字符串进行了大刀阔斧的改进。将数据存储方式从char数组,改变为一个byte数组加上一个标识编码的所谓coder</strong>,并且将相关字符串操作类都进行了修改。另外,所有相关的Intrinsic之类也都进行了重写,以保证没有任何性能损失。</p><p>虽然底层实现发生了这么大的改变,但是Java字符串的行为并没有任何大的变化,所以这个特性对于绝大部分应用来说是透明的,绝大部分情况不需要修改已有代码。</p><h1 id="动态代理是基于什么原理?"><a href="#动态代理是基于什么原理?" class="headerlink" title="动态代理是基于什么原理?"></a>动态代理是基于什么原理?</h1><p>反射机制是Java语言提供的一种基础功能,赋予程序在运行时<strong>自省</strong>(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。</p><p>动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的,比如用来包装RPC调用、面向切面的编程(AOP)。</p><p>实现动态代理的方式很多,比如JDK自身提供的动态代理,就是主要利用了上面提到的反射机制。还有其他的实现方式,比如利用传说中更高性能的字节码操作机制,类似ASM、cglib(基于ASM)、Javassist等。</p><p>它是一个<strong>代理机制</strong>。如果熟悉设计模式中的代理模式<strong>,代理可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成</strong>。</p><p>通过代理可以让调用者与实现者之间<strong>解耦</strong>。比如进行RPC调用,框架内部的寻址、序列化、反序列化等,对于调用者往往是没有太大意义的,通过代理,可以提供更加友善的界面。</p><p>JDK Proxy的优势:</p><ul><li>最小化依赖关系,减少依赖意味着简化开发和维护,JDK本身的支持,可能比cglib更加可靠。</li><li>平滑进行JDK版本升级,而字节码类库通常需要进行更新以保证在新版Java上能够使用。</li><li>代码实现简单。</li></ul><p>基于类似cglib框架的优势:</p><ul><li>有的时候调用目标可能不便实现额外接口,从某种角度看,限定调用者实现接口是有些侵入性的实践,类似cglib动态代理就没有这种限制。</li><li>只操作我们关心的类,而不必为其他相关类增加工作量。</li><li>高性能。</li></ul><p>AOP通过(动态)代理机制可以让开发者从这些繁琐事项中抽身出来,大幅度提高了代码的抽象程度和复用度。从逻辑上来说,我们在软件设计和实现中的类似代理,如Facade、Observer等很多设计目的,都可以通过动态代理优雅地实现。</p><h2 id="int和Integer差别"><a href="#int和Integer差别" class="headerlink" title="int和Integer差别"></a>int和Integer差别</h2><p>int是我们常说的整形数字,是Java的8个原始数据类型(Primitive Types,boolean、byte 、short、char、int、float、double、long)之一。<strong>Java语言虽然号称一切都是对象,但原始数据类型是例外。</strong></p><p>Integer是int对应的包装类,它有一个int类型的字段存储数据,并且提供了基本操作,比如数学运算、int和字符串之间转换等。在Java 5中,引入了<strong>自动装箱和自动拆箱功能</strong>(boxing/unboxing),Java可以根据上下文,自动进行转换,极大地简化了相关编程。</p><p>关于Integer的值缓存,这涉及Java 5中另一个改进。构建Integer对象的传统方式是直接调用构造器,直接new一个对象。但是根据实践,我们发现大部分数据操作都是集中在有限的、较小的数值范围,因而,在Java 5中新增了静态工厂方法valueOf,在调用它的时候会利用一个缓存机制,带来了明显的性能改进。按照Javadoc,<strong>这个值默认缓存是-128到127之间。</strong></p><h2 id="对比Vector、ArrayList、LinkedList有何区别?"><a href="#对比Vector、ArrayList、LinkedList有何区别?" class="headerlink" title="对比Vector、ArrayList、LinkedList有何区别?"></a>对比Vector、ArrayList、LinkedList有何区别?</h2><p>这三者都是实现集合框架中的List,也就是所谓的有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提供迭代器以遍历其内容等。但因为具体的设计区别,在行为、性能、线程安全等方面,表现又有很大不同。</p><p>Vector是Java早期提供的<strong>线程安全的动态数组</strong>,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector内部是使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并拷贝原有数组数据。</p><p>ArrayList是应用更加广泛的<strong>动态数组</strong>实现,它本身不是线程安全的,所以性能要好很多。与Vector近似,ArrayList也是可以根据需要调整容量,不过两者的调整逻辑有所区别,Vector在扩容时会提高1倍,而ArrayList则是增加50%。</p><p>LinkedList顾名思义是Java提供的<strong>双向链表</strong>,所以它不需要像上面两种那样调整容量,它也不是线程安全的</p><p><img data-src="https://s2.loli.net/2025/12/29/oXIQbKuFnlVG58T.png" alt="image-20251229101713096" style="zoom:67%;" /></p><p>Collection接口是所有集合的根,然后扩展开提供了三大类集合,分别是:</p><ul><li>List,也就是我们前面介绍最多的有序集合,它提供了方便的访问、插入、删除等操作。</li><li>Set,Set是不允许重复元素的,这是和List最明显的区别,也就是不存在两个对象equals返回true。我们在日常开发中有很多需要保证元素唯一性的场合。</li><li>Queue/Deque,则是Java提供的标准队列结构的实现,除了集合的基本功能,它还支持类似先入先出(FIFO, First-in-First-Out)或者后入先出(LIFO,Last-In-First-Out)等特定行为。这里不包括BlockingQueue,因为通常是并发编程场合,所以被放置在并发包里。</li></ul><p>Java提供的默认排序算法,具体是什么排序方式以及设计思路等。</p><p>这个问题本身就是有点陷阱的意味,因为需要区分是Arrays.sort()还是Collections.sort() (底层是调用Arrays.sort());什么数据类型;多大的数据集(太小的数据集,复杂排序是没必要的,Java会直接进行二分插入排序)等。</p><ul><li>对于原始数据类型,目前使用的是所谓双轴快速排序(Dual-Pivot QuickSort),是一种改进的快速排序算法,早期版本是相对传统的快速排序</li><li>而对于对象数据类型,目前则是使用<a href="http://hg.openjdk.java.net/jdk/jdk/file/26ac622a4cab/src/java.base/share/classes/java/util/TimSort.java">TimSort</a>,思想上也是一种归并和二分插入排序(binarySort)结合的优化排序算法。TimSort并不是Java的独创,简单说<strong>它的思路是查找数据集中已经排好序的分区(这里叫run),然后合并这些分区来达到排序的目的。</strong></li></ul><p>另外,Java 8引入了并行排序算法(直接使用parallelSort方法),这是为了充分利用现代多核处理器的计算能力,底层实现基于fork-join框架(专栏后面会对fork-join进行相对详细的介绍),当处理的数据集比较小的时候,差距不明显,甚至还表现差一点;但是,当数据集增长到数万或百万以上时,提高就非常大了,具体还是取决于处理器和系统环境。</p><h2 id="对比Hashtable、HashMap、TreeMap有什么不同?"><a href="#对比Hashtable、HashMap、TreeMap有什么不同?" class="headerlink" title="对比Hashtable、HashMap、TreeMap有什么不同?"></a>对比Hashtable、HashMap、TreeMap有什么不同?</h2><p>Hashtable、HashMap、TreeMap都是最常见的一些Map实现,是以<strong>键值对</strong>的形式存储和操作数据的容器类型。</p><p>Hashtable是早期Java类库提供的一个<a href="https://zh.wikipedia.org/wiki/哈希表">哈希表</a>实现,本身是同步的,不支持null键和值,由于同步导致的性能开销,所以已经很少被推荐使用。</p><p>HashMap是应用更加广泛的哈希表实现,行为上大致上与HashTable一致,主要区别在于HashMap不是同步的,支持null键和值等。通常情况下,HashMap进行put或者get操作,可以达到常数时间的性能,所以<strong>它是绝大部分利用键值对存取场景的首选</strong>,比如,实现一个用户ID和用户信息对应的运行时存储结构。</p><p>TreeMap则是基于<strong>红黑树的一种提供顺序访问的Map</strong>,<strong>和HashMap不同,它的get、put、remove之类操作都是O(log(n))的时间复杂度</strong>,具体顺序可以由指定的Comparator来决定,或者根据键的自然顺序来判断。</p><p><img data-src="https://s2.loli.net/2025/12/29/Y8VZHFwaQBJnuXO.png" alt="image-20251229110255099" style="zoom:50%;" /></p><p>Hashtable比较特别,作为类似Vector、Stack的早期集合相关类型,它是扩展了Dictionary类的,类结构上与HashMap之类明显不同。</p><p>HashMap等其他Map实现则是都扩展了AbstractMap,里面包含了通用方法抽象。不同Map的用途,从类图结构就能体现出来,设计目的已经体现在不同接口上。</p><p>大部分使用Map的场景,通常就是放入、访问或者删除,而对顺序没有特别要求,HashMap在这种情况下基本是最好的选择。<strong>HashMap的性能表现非常依赖于哈希码的有效性,请务必掌握hashCode和equals的一些基本约定</strong>:</p><ul><li>equals相等,hashCode一定要相等。</li><li>重写了hashCode也要重写equals。</li><li>hashCode需要保持一致性,状态改变返回的哈希值仍然要一致。</li><li>equals的对称、反射、传递等特性</li></ul><p>HashMap设计与实现是个非常高频的面试题,所以我会在这进行相对详细的源码解读,主要围绕:</p><ul><li>HashMap内部实现基本点分析。</li><li>容量(capacity)和负载系数(load factor)。</li><li>树化 。</li></ul><p>ashMap内部的结构,它可以看作是数组(Node<K,V>[] table)和链表结合组成的复合结构,数组被分为一个个桶(bucket),<strong>通过哈希值决定了键值对在这个数组的寻址</strong>;<strong>哈希值相同的键值对,则以链表形式存储</strong>。这里需要注意的是,如果链表大小超过阈值(TREEIFY_THRESHOLD, 8),图中的链表就会被改造为树形结构。</p><p><img data-src="https://s2.loli.net/2025/12/29/mFnbLWDyjtQrvVh.png" alt="image-20251229113359998" style="zoom:67%;" /></p><h2 id="如何保证集合是线程安全的?-ConcurrentHashMap如何实现高效地线程安全?"><a href="#如何保证集合是线程安全的?-ConcurrentHashMap如何实现高效地线程安全?" class="headerlink" title="如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?"></a>如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?</h2><p>Java提供了不同层面的线程安全支持。在传统集合框架内部,除了<strong>Hashtable等同步容器</strong>,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用<strong>Collections工具类提供的包装方法,来获取一个同步的包装容器</strong>(如Collections.synchronizedMap),但是它们都是利用非常粗粒度的同步方式,在高并发情况下,性能比较低下。</p><p>另外,<strong>更加普遍的选择是利用并发包提供的线程安全容器类</strong>,它提供了:</p><ul><li>各种并发容器,比如ConcurrentHashMap、CopyOnWriteArrayList。</li><li>各种线程安全队列(Queue/Deque),如ArrayBlockingQueue、SynchronousQueue。</li><li>各种有序容器的线程安全版本等。</li></ul><p>具体保证线程安全的方式,包括有从简单的synchronize方式,到基于更加精细化的,比如基于分离锁实现的ConcurrentHashMap等并发实现等。具体选择要看开发的场景需求,总体来说,并发包内提供的容器通用场景,远优于早期的简单同步实现。</p><p>如果要深入思考并回答这个问题及其扩展方面,至少需要:</p><ul><li>理解基本的线程安全工具。</li><li>理解传统集合框架并发编程中Map存在的问题,清楚简单同步方式的不足。</li><li>梳理并发包内,尤其是ConcurrentHashMap采取了哪些方法来提高并发表现。</li><li>最好能够掌握ConcurrentHashMap自身的演进,目前的很多分析资料还是基于其早期版本。</li></ul><p>Hashtable本身比较低效,因为它的实现基本就是将put、get、size等各种方法加上“synchronized”。简单来说,这就导致了所有并发操作都要竞争同一把锁,一个线程在进行同步操作时,其他线程只能等待,大大降低了并发操作的效率。</p><p>前面已经提过HashMap不是线程安全的,并发情况会导致类似CPU占用100%等一些问题,那么能不能利用Collections提供的同步包装器来解决问题呢?</p><p>看看下面的代码片段,我们发现同步包装器只是利用输入Map构造了另一个同步版本,所有操作虽然不再声明成为synchronized方法,但是还是利用了“this”作为互斥的mutex,没有真正意义上的改进!</p><figure class="highlight angelscript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">private</span> static <span class="keyword">class</span> <span class="symbol">SynchronizedMap</span>&lt;<span class="symbol">K,<span class="symbol">V</span></span>&gt;</span><br><span class="line"><span class="symbol">implements</span> <span class="symbol">Map</span>&lt;<span class="symbol">K,<span class="symbol">V</span></span>&gt;, <span class="symbol">Serializable</span> &#123;</span><br><span class="line"><span class="keyword">private</span> <span class="keyword">final</span> Map&lt;K,V&gt; m; <span class="comment">// Backing Map</span></span><br><span class="line"><span class="keyword">final</span> Object mutex; <span class="comment">// Object on which to synchronize</span></span><br><span class="line"><span class="comment">// …</span></span><br><span class="line"><span class="keyword">public</span> <span class="built_in">int</span> size() &#123;</span><br><span class="line">synchronized (mutex) &#123;<span class="keyword">return</span> m.size();&#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">// …</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>所以,Hashtable或者同步包装版本,都只是适合在非高度并发的场景下</p><p>早期ConcurrentHashMap,其实现是基于:</p><ul><li>分离锁,也就是将内部进行分段(Segment)<strong>,里面则是HashEntry的数组</strong>,和HashMap类似,哈希相同的条目也是以链表形式存放。</li><li><strong>HashEntry内部使用volatile的value字段来保证可见性</strong>,也利用了不可变对象的机制以改进利用Unsafe提供的底层能力,比如volatile access,去直接完成部分操作,以最优化性能,毕竟Unsafe中的很多操作都是JVM intrinsic优化过的。</li></ul><h3 id="BlockingQueue"><a href="#BlockingQueue" class="headerlink" title="BlockingQueue"></a>BlockingQueue</h3><p>BlockingQueue 是 Java 中的一个接口,它代表了一个线程安全的队列,不仅可以由多个线程并发访问,还添加了等待/通知机制,以便在队列为空时阻塞获取元素的线程,直到队列变得可用,或者在队列满时阻塞插入元素的线程,直到队列变得可用。</p><p>阻塞队列(BlockingQueue)被广泛用于“生产者-消费者”问题中,其原因是 BlockingQueue 提供了可阻塞的插入和移除方法。<strong>当队列容器已满,生产者线程会被阻塞,直到队列未满;当队列容器为空时,消费者线程会被阻塞,直至队列非空时为止</strong>。</p><p>BlockingQueue 继承了 Queue 接口,因此,BlockingQueue 也具有 Queue 接口的基本操作:</p><p>Queue接口提供方法,</p><p><strong>插入元素</strong></p><ol><li>add 将元素添加到队列尾部,如果队列满了,则抛出异常 IllegalStateException。</li><li>offer 将元素添加到队列尾部,如果队列满了,则返回 false</li></ol><p><strong>删除元素</strong></p><ol><li><code>boolean remove(Object o)</code>:从队列中删除元素,成功返回<code>true</code>,失败返回<code>false</code></li><li><code>E poll()</code>:检索并删除此队列的头部,如果此队列为空,则返回null</li></ol><p><strong>查找元素</strong></p><ol><li><code>E element()</code>:检索但不删除此队列的头部,如果队列为空时则抛出 NoSuchElementException 异常;</li><li><code>peek()</code>:检索但不删除此队列的头部,如果此队列为空,则返回 null.</li></ol><p>除了从 Queue 接口 继承到一些方法,BlockingQueue 自身还定义了一些其他的方法,比如说插入操作:</p><ol><li><code>void put(E e)</code>:将元素添加到队列尾部,如果队列满了,则线程将阻塞直到有空间。</li><li><code>offer(E e, long timeout, TimeUnit unit)</code>:将指定的元素插入此队列中,如果队列满了,则等待指定的时间,直到队列可用。</li></ol><p>比如说删除操作:</p><ol><li><code>take()</code>:<strong>检索并删除此队列的头部,如有必要,则等待直到队列可用</strong>;</li><li><code>poll(long timeout, TimeUnit unit)</code>:<strong>检索并删除此队列的头部</strong>,如果需要元素变得可用,则等待指定的等待时间。</li></ol><h4 id="ArrayBlockingQueue"><a href="#ArrayBlockingQueue" class="headerlink" title="ArrayBlockingQueue"></a>ArrayBlockingQueue</h4><p>BlockingQueue 接口的实现类有 ArrayBlockingQueue、DelayQueue、LinkedBlockingDeque、LinkedBlockingQueue、LinkedTransferQueue、PriorityBlockingQueue、SynchronousQueue 等</p><p><strong>ArrayBlockingQueue</strong> 它是一个<strong>基于数组的有界阻塞队列</strong>:</p><ul><li>有界:ArrayBlockingQueue 的大小是在构造时就确定了,并且在之后不能更改。这个界限提供了流量控制,有助于资源的合理使用。</li><li>FIFO:队列操作符合先进先出的原则。</li><li>当队列容量满时,尝试将元素放入队列将导致阻塞;尝试从一个空的队列取出元素也会阻塞。</li></ul><h1 id="进阶后端技术"><a href="#进阶后端技术" class="headerlink" title="进阶后端技术"></a>进阶后端技术</h1><h2 id="程序如何运行起来的"><a href="#程序如何运行起来的" class="headerlink" title="程序如何运行起来的"></a>程序如何运行起来的</h2><link rel="stylesheet" href="/css/spoiler.css" type="text/css"><script src="/js/spoiler.js" type="text/javascript" async></script>

解决访问 https 网站时,后端重定向或获取 URL 变成 http 的问题

作者 Zhuang Ma
2025年11月14日 00:00

一种常见的服务部署架构是 Nginx 反向代理后端 Java 应用服务器,Nginx 监听 443 端口处理 https 请求,然后转发给后端服务器。

对应的 Nginx 配置大致如下:

upstream www {
    server 192.168.1.101:8080  weight=100 max_fails=3 fail_timeout=10s;
    server 192.168.1.102:8080  weight=100 max_fails=3 fail_timeout=10s;
}

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://www;
    }
}

即:客户端与 Nginx 之间是 https,Nginx 与后端 Java 应用服务器之间是 http。

这样可能会遇到一些问题,如:

  1. HttpServletRequest.getRequestURL() 获取到的 URL 是 Nginx 与后端服务器之间的 http URL,比如 http://192.168.1.101:8080/xxx
  2. HttpServletResponse.sendRedirect() 生成的重定向 URL 也是 http URL。

要解决这些问题,可以通过 Nginx 配置 + 少量后端代码修改来实现。

解决应用中获取到的 URL 的问题

用户实际访问的是 https://example.com/xxx,但是后端应用获取到的 URL 是 http://192.168.1.101:8080/xxx,如何让后端应用获取到正确的 URL 呢?

第一步,Nginx 可以通过 proxy_set_header Host 指令将客户端请求的 Host 头传递给后端服务器:

location / {
    # ...
    proxy_set_header Host $host;
}

这样,后端应用通过 HttpServletRequest.getRequestURL() 获取到的 URL 就是 http://example.com/xxx 了。

但此时,协议仍然不对,还是 http。

要给后端应用传递正确的协议,通常的做法是使用 X-Forwarded-Proto 头:

location / {
    # ...
    proxy_set_header X-Forwarded-Proto $scheme;
}

添加这个头之后并不会让 HttpServletRequest.getRequestURL() 直接返回 https URL,需要在后端应用中做一些处理。以 Java 应用为例,可以通过一个过滤器(Filter)来修改 request 的 scheme:

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class XForwardedProtoFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if (request instanceof HttpServletRequest) {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            String xForwardedProto = httpRequest.getHeader("X-Forwarded-Proto");
            if (StringUtils.isNotBlank(xForwardedProto) && !xForwardedProto.equalsIgnoreCase(httpRequest.getScheme()) && xForwardedProto.equalsIgnoreCase("https")) {
                httpRequest = new HttpServletRequestWrapper(httpRequest) {
                    @Override
                    public String getScheme() {
                        return xForwardedProto;
                    }

                    @Override
                    public StringBuffer getRequestURL() {
                        StringBuffer requestURL = super.getRequestURL();
                        if (requestURL != null && requestURL.length() > 0) {
                            int index = requestURL.indexOf("://");
                            if (index > 0) {
                                requestURL.replace(0, index, xForwardedProto);
                            }
                        }
                        return requestURL;
                    }
                    
                };
            }
            chain.doFilter(httpRequest, response);
        } else {
            chain.doFilter(request, response);
        }
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }
}

至此,后端应用通过 HttpServletRequest.getRequestURL() 获取到的 URL 就是 https://example.com/xxx 了。

解决重定向 URL 的问题

后端应用通过 HttpServletResponse.sendRedirect() 生成的重定向 URL 也是 http URL,如何让它变成 https 呢?

这个问题可以通过 Nginx 的另一指令 proxy_redirect 来解决,该指令用于修改从后端服务器返回的 LocationRefresh 响应头。

location / {
    # ...
    proxy_redirect http:// $scheme://;
}

这样,当后端应用返回一个重定向响应时,Nginx 会将 Location 头中的 http:// 替换为 $scheme://,即 https://

进一步思考:当 Nginx 前面还有负载均衡器时

在很多情况下,Nginx 前面可能还有商用负载均衡器(如 AWS ELB、阿里云 SLB 等),这时需要考虑负载均衡器与 Nginx 之间的协议问题。

如果负载均衡器与 Nginx 之间是 http,而 Nginx 与后端应用之间是 http,那么就需要在负载均衡器和 Nginx 之间添加 X-Forwarded-Proto 头,以便 Nginx 能够正确地识别原始请求的协议。

主流的负载均衡器配置项里应该都有添加 X-Forwarded-Proto 头的选项开关,比如阿里云:

需要注意的是这样配置后,Nginx 配置也需要做相应的调整,将 $scheme 替换为 $http_x_forwarded_proto: (此种场景 $scheme 为负载均衡器与 Nginx 之间的协议 http,$http_x_forwarded_proto 为负载均衡器通过 Header 透传过来的前端访问协议 https。)

location / {
    # ...
    proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
    proxy_redirect http:// $http_x_forwarded_proto://;
}

参考链接

Android Perfetto 系列 8:深入理解 Vsync 机制与性能分析

作者 Gracker
2025年8月5日 10:15

本篇是 Perfetto 系列文章的第八篇,主要深入介绍 Android 中的 Vsync 机制及其在 Perfetto 中的表现形式。文章将从 Perfetto 的角度来分析 Android 系统如何基于 Vsync 信号进行帧渲染和合成,涵盖 Vsync、Vsync-app、Vsync-sf、VsyncWorkDuration 等核心概念。

随着高刷新率屏幕的普及,理解 Vsync 机制变得更加重要。本文将以 120Hz 刷新率为主要叙事线,帮助开发者理解现代 Android 设备中 Vsync 的工作原理,以及如何在 Perfetto 中观察和分析 Vsync 相关的性能问题。

注:本文内容基于 Android 13~16 的公开实现与演进;文中代码以 AOSP main 的“签名对齐精简摘录”为主,少量位置使用 ... 省略非主线逻辑,请以当前分支源码为准。

本文目录

系列文章目录

  1. Android Perfetto 系列目录
  2. Android Perfetto 系列 1:Perfetto 工具简介
  3. Android Perfetto 系列 2:Perfetto Trace 抓取
  4. Android Perfetto 系列 3:熟悉 Perfetto View
  5. Android Perfetto 系列 4:使用命令行在本地打开超大 Trace
  6. Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程
  7. Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战
  8. Android Perfetto 系列 7 - MainThread 和 RenderThread 解读
  9. Android Perfetto 系列 8:深入理解 Vsync 机制与性能分析
  10. Android Perfetto 系列 9 - CPU 信息解读
  11. Android Perfetto 系列 10 - Binder 调度与锁竞争
  12. 视频(B站) - Android Perfetto 基础和案例分享
  13. 视频(B站) - Android Perfetto 分享 - 出图类型分享:AOSP、WebView、Flutter + OEM 系统优化分享

如果大家还没看过 Systrace 系列,下面是传送门:

  1. Systrace 系列目录 : 系统介绍了 Perfetto 的前身 Systrace 的使用,并通过 Systrace 来学习和了解 Android 性能优化和 Android 系统运行的基本规则。
  2. 个人博客 :个人博客,主要是 Android 相关的内容,也放了一些生活和工作相关的内容。

欢迎大家在 关于我 页面加入微信群或者星球,讨论你的问题、你最想看到的关于 Perfetto 的部分,以及跟各位群友讨论所有 Android 开发相关的内容

什么是 Vsync

Vsync(Vertical Synchronization,垂直同步)是 Android 图形系统的核心机制,它的存在是为了解决一个根本性的问题:如何让软件的渲染节奏与硬件的显示节奏保持同步。

在没有 Vsync 机制之前,常见问题是屏幕撕裂(Screen Tearing)。当显示器读取 framebuffer 的同时,GPU 写入了下一帧,就会在同一次刷新中出现上下两部分不一致的画面。

Vsync 解决什么问题?

Vsync 机制的核心思想非常简单:让所有的渲染工作都按照显示器的刷新节拍来进行。具体来说:

  1. 同步信号:显示器每次开始新的刷新周期时,都会发出一个 Vsync 信号。
  2. 帧节拍与生产:应用侧在 Vsync 到来时由 Choreographer 驱动开始一帧的生产(Input/Animation/Traversal);CPU 提交渲染命令后,GPU 异步流水执行。SurfaceFlinger 侧在 Vsync 到来时进行 Buffer 的合成操作。
  3. 缓冲机制:使用双缓冲或三缓冲技术,确保显示器总是读取完整的帧数据。

这样,帧的生产与显示以 Vsync 为节拍对齐。以 120Hz 为例,每 8.333ms 会有一个显示机会;应用需要在该窗口前把可合成的 Buffer 提交给 SurfaceFlinger。关键约束是 queueBuffer/acquire_fence/present_fence 的时序;若未赶上本周期,会顺延到下一个周期显示。

Android 中 Vsync 的基本工作原理

Android 系统的 Vsync 实现比基本概念复杂得多,需要考虑多个不同的渲染组件,以及它们之间的协调工作。

Vsync 信号的分层架构

在 Android 系统中,并不是只有一个简单的 Vsync 信号。实际上,系统维护着多个不同用途的 Vsync 信号:

硬件 Vsync(HW Vsync)
这是最底层的 Vsync 信号,由显示硬件(HWC,Hardware Composer)产生。它的频率严格对应显示器的刷新率,比如 60Hz 的显示器会每 16.67ms 产生一次 HW Vsync,120Hz 的显示器会每 8.333ms 产生一次。(硬件 Vsync 回调由 HWC/SurfaceFlinger 管理,详见 frameworks/native/services/surfaceflinger 相关实现)

但是,HW Vsync 并不是一直开启的。由于频繁的硬件中断会消耗较多的电量,Android 系统采用了一种智能的策略:只有在需要精确同步的时候才开启 HW Vsync,大部分时间使用软件预测的方式生成 Vsync 信号。

Vsync-app(应用 Vsync)
这是专门用于驱动应用层渲染的 Vsync 信号。当应用需要进行 UI 更新时(比如用户触摸、动画运行、界面滚动等),应用会向系统申请接收 Vsync-app 信号。

1
2
3
4
5
6
7
8
9
10
// frameworks/base/core/java/android/view/Choreographer.java
private void scheduleFrameLocked(long now) {
if (!mFrameScheduled) {
mFrameScheduled = true;
if (USE_VSYNC) {
// 向系统申请下一个 Vsync 信号
mDisplayEventReceiver.scheduleVsync();
}
}
}

Vsync-app 是按需申请的。如果应用界面是静态的,没有任何动画或用户交互,那么应用不会申请 Vsync-app 信号,系统也就不会为这个应用生成 Vsync 事件。

Vsync-sf(SurfaceFlinger Vsync)
这是专门用于驱动 SurfaceFlinger 进行图层合成的 Vsync 信号。SurfaceFlinger 是 Android 系统中负责将所有应用的图层合成为最终画面的服务。

Vsync-appSf(应用-SurfaceFlinger Vsync)
Android 13 引入的新信号类型。为消除旧设计中 sf EventThread 既唤醒 SurfaceFlinger 又服务部分 Choreographer 客户端带来的时序歧义,系统将两类职责分离:vsync-sf 专注唤醒 SurfaceFlinger,vsync-appSf 面向需要与 SurfaceFlinger 同步的客户端。

在 Perfetto 中观察 Vsync

Perfetto trace 中包含多个与 Vsync 相关的 Track,理解这些 Track 的含义有助于分析性能问题。

在 SurfaceFlinger 进程中

  1. vsync-app
    显示应用 Vsync 信号状态,数值在 0 和 1 之间变化。每次数值变化代表一个 Vsync 信号。
    image-20250811221826847

  2. **vsync-sf **
    显示 SurfaceFlinger Vsync 信号状态。无 Vsync Offset 时与 vsync-app 同步变化。
    image-20250811221902646

  3. vsync-appSf
    Android 13+ 新增,服务于需要与 SurfaceFlinger 同步的特殊 Choreographer 客户端。
    image-20250811222036489

  4. HW_VSYNC
    显示硬件 Vsync 开启状态。值为 1 表示开启,值为 0 表示关闭。为节省电量,硬件 Vsync 仅在需要精确同步时开启。
    image-20250811222159253

在应用进程中

FrameDisplayEventReceiver.onVsync Slice Track:
显示应用接收 Vsync 信号的时间点。该事件连接通过 Binder 建链、通过 BitTube/Looper 通道分发事件,时间可能略晚于 SurfaceFlinger 中的 vsync-app

image-20250918220632473

UI Thread Slice Track:
包含 Choreographer#doFrame 及相关的 Input、Animation、Traversal 等 Slice。每个 doFrame 对应一帧的处理工作。

image-20250918220709655

RenderThread Slice Track:
包含 DrawFramesyncAndDrawFramequeueBuffer 等 Slice,对应渲染线程工作。

image-20250918220730872

Android App 每一帧是如何基于 Vsync 工作的

Android 应用的每一帧基于 Vsync 机制完成从渲染到显示的完整过程涉及多个关键步骤。

image-20250918221821265

流程总览(按顺序)

  1. 触发重绘/输入:View.invalidate()、动画、数据变化或输入事件触发 → ViewRootImpl.scheduleTraversals()Choreographer.postCallback(TRAVERSAL)
  2. 申请 Vsync:Choreographer 通过 DisplayEventReceiver.scheduleVsync() 申请下一次 Vsync(app 相位)
  3. 接收 Vsync:DisplayEventReceiver.onVsync() 收到 Vsync 后,向主线程消息队列投递异步消息
  4. 主线程帧处理:Choreographer.doFrame() 按顺序执行五类回调:INPUT → ANIMATION → INSETS_ANIMATION → TRAVERSAL → COMMIT
  5. 渲染提交:RenderThread 执行 syncAndDrawFrame/DrawFrame,CPU 记录 GPU 命令,queueBuffer 提交到 BufferQueue
  6. 合成显示:SurfaceFlingervsync-sf 到来时合成(GPU/或HWC),生成 present_fence,输出到显示
  7. 帧完成度量:通过 FrameTimeline(PresentType/JankType)与 acquire/present_fence 判定是否按期显示

下面分别展开每一步的关键实现与 Perfetto 观测点。

App 什么时候会申请 Vsync 信号

应用并不是时刻都在申请 Vsync 信号的。Vsync 信号是按需申请的,只有在以下情况下,应用才会向系统申请下一个 Vsync:

触发申请 Vsync 的场景

  1. UI 更新需求:当 View 调用 invalidate()
  2. 动画执行:ValueAnimator、ObjectAnimator 等动画开始时
  3. 用户交互:触摸事件、按键事件等需要 UI 响应时
  4. 数据变化:RecyclerView 数据更新、TextView 文本改变等

App 申请 Vsync 的完整流程

当应用需要更新 UI 时,会通过以下流程申请 Vsync 信号:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 1. UI 组件请求重绘
// frameworks/base/core/java/android/view/View.java
public void invalidate() {
// 标记为需要重绘,但不立即执行
mPrivateFlags |= PFLAG_DIRTY;

if (mParent != null && mAttachInfo != null) {
// 向父容器请求重绘
mParent.invalidateChild(this, null);
}
}

// 2. ViewRootImpl 调度遍历
// frameworks/base/core/java/android/view/ViewRootImpl.java
void scheduleTraversals() {
if (!mTraversalScheduled) {
mTraversalScheduled = true;
// 关键:向 Choreographer 注册回调,等待下一个 Vsync
mChoreographer.postCallback(
Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);
}
}

// 3. Choreographer 申请 Vsync
// frameworks/base/core/java/android/view/Choreographer.java
private void postCallbackDelayedInternal(int callbackType,
Object action, Object token, long delayMillis) {
final long now = SystemClock.uptimeMillis();
final long dueTime = now + delayMillis;
mCallbackQueues[callbackType].addCallbackLocked(dueTime, action, token);

// 重点:不只 TRAVERSAL,任意“到期回调”都可能触发下一帧调度
if (dueTime <= now) {
scheduleFrameLocked(now);
}
}

private void scheduleFrameLocked(long now) {
if (!mFrameScheduled) {
mFrameScheduled = true;
if (isRunningOnLooperThreadLocked()) {
scheduleVsyncLocked();
} else {
Message msg = mHandler.obtainMessage(MSG_DO_SCHEDULE_VSYNC);
msg.setAsynchronous(true);
mHandler.sendMessageAtFrontOfQueue(msg);
}
}
}

TRAVERSAL 仍然是最常见触发源,但从 AOSP main 实现看,并非“只有 TRAVERSAL 才申请 Vsync”。

主线程如何监听 Vsync 信号

应用主线程通过 DisplayEventReceiver 来监听 Vsync 信号。这个过程涉及几个关键步骤:

1. 建立连接

1
2
3
4
5
6
7
8
9
// frameworks/base/core/java/android/view/Choreographer.java
private final class FrameDisplayEventReceiver extends DisplayEventReceiver
implements Runnable {

public FrameDisplayEventReceiver(Looper looper, int vsyncSource, long layerHandle) {
super(looper, vsyncSource, /* eventRegistration */ 0, layerHandle);
// 在构造时建立与 SurfaceFlinger 的连接
}
}

2. 接收 Vsync 信号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Override
public void onVsync(long timestampNanos, long physicalDisplayId, int frame,
VsyncEventData vsyncEventData) {
// 接收到 Vsync 信号,但注意:这里并不直接执行 doFrame
mTimestampNanos = timestampNanos;
mFrame = frame;
mLastVsyncEventData.copyFrom(vsyncEventData);

// 关键:将工作 post 到主线程的 MessageQueue 中
Message msg = Message.obtain(mHandler, this);
msg.setAsynchronous(true); // 设为异步消息,优先处理
mHandler.sendMessageAtTime(msg, timestampNanos / TimeUtils.NANOS_PER_MS);
}

@Override
public void run() {
// 这里才真正开始执行一帧的工作
doFrame(mTimestampNanos, mFrame, mLastVsyncEventData);
}

几个遗留问题

Q1:为什么不在 onVsync() 中直接执行 doFrame()
image-20250918221936675

  • 线程边界:在 Choreographer 场景下,onVsync() 回调运行在其绑定的 Looper(通常就是主线程);通过消息队列再进入 doFrame(),可统一调度并保持帧处理时序一致
  • 调度控制:通过 sendMessageAtTime() 精确对齐执行时刻
  • 队列语义:进入主线程 MessageQueue,确保与其他高优先级任务协同

Q2:Vsync 消息来了但主线程在忙,会丢吗?
image-20250918222045731

  • 不完全是“不会丢”。单次 scheduleVsync() 只请求一次事件;主线程长期繁忙时会出现“跳过多个硬件节拍、最终只处理较新的一帧”的现象。实际分析应结合 FrameTimeline 判断是否产生可见卡顿。
  • AOSP DisplayEventDispatcher::processPendingEvents 明确会用“后到达的 vsync 覆盖先到达的 vsync”(只保留最近一次用于分发)。

Q3:CPU/GPU 是否必须在单个 Vsync 周期内完成?如果任何一个环节超过 1 个 vsync ,都会导致掉帧?

  • 现代 Android 系统采用多缓冲(通常是三缓冲)机制:

    • 应用端:Front Buffer(显示中)+ Back Buffer(渲染中)+ 可能的第三个 Buffer

    • SurfaceFlinger 端:也有类似的缓冲机制

    • 这意味着即使应用的某一帧超过了 Vsync 周期,也不一定会立即掉帧。

  • GPU 异步流水;关键是 queueBuffer 是否赶上 SF 合成窗口,多缓冲可掩盖单帧延迟但可能引入额外时延,可以看到下图里面,App 端的 BufferQueue 和 SurfaceFlinger 端的 Buffer 都是充足的,且有冗余,所以没有掉帧。

  • 但是如果 App 在之前没有堆积 Buffer ,则还是会出现掉帧。

image-20250918222258536

Q5:GPU 和 CPU 是怎么协同的?

  • GPU 渲染是异步的,这带来了额外的复杂性:

    • CPU 工作正常,GPU 成为瓶颈:即使应用主线程在 Vsync 周期内完成工作,GPU 渲染耗时过长仍会导致掉帧
    • GPU Fence 机制:在 Buffer 被 SF latch 的阶段,关键同步点通常是 acquire fence(Buffer 何时可安全读取);present fence 更偏向“该帧何时真正送显”的完成信号。根据系统 Latch Unsignaled Buffers 策略,SurfaceFlinger 在特定条件下可先推进流程,再在真正需要时等待 fence 信号,以此隐藏部分延迟。

    image-20250918222626100

Q6:Vsync Phase(相位差)的真正作用是什么?

  • 提升跟手性:通过调整 sf vsync 的相位差,可以让应用从开始绘制到显示在屏幕上的时间从 3 个 Vsync 周期缩短到 2 个 Vsync 周期。这对于触摸响应等交互场景非常重要。
  • 解决应用绘制超时问题:当应用绘制超时时,合理的 sf 相位差可以为应用争取更多的处理时间,避免因为时序不当导致的掉帧。
  • VsyncWorkDuration 更接近调度预算(workDuration/readyDuration)的可视化,不等价于单一 appOffset 数值;分析时建议结合 vsync-app/sf 与 FrameTimeline 联动判断。
  • 下图中显示的时间段就是我手上的手机配置的 app offset (13.3ms)

image-20250918222707300

Vsync Offset / WorkDuration 的技术实现

在当前 AOSP main 中,配置入口是 VsyncConfiguration 抽象接口,返回的是按场景组织的 VsyncConfigSet。实现上 PhaseOffsets 属于旧路径,WorkDuration 是新路径中更常见的实现之一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// frameworks/native/services/surfaceflinger/Scheduler/VsyncConfiguration.h
class VsyncConfiguration {
public:
virtual ~VsyncConfiguration() = default;
virtual VsyncConfigSet getCurrentConfigs() const = 0;
virtual VsyncConfigSet getConfigsForRefreshRate(Fps fps) const = 0;
virtual void setRefreshRateFps(Fps fps) = 0;
virtual void reset() = 0;
};

class WorkDuration : public VsyncConfiguration {
public:
explicit WorkDuration(Fps currentRefreshRate);
// 内部根据 sf/app 的 workDuration 构造不同场景下的 offset 配置
};

关键概念

  • workDuration/readyDuration:调度时的“工作预算”和“就绪提前量”,用于计算回调唤醒时刻
  • app/sf offset:仍可作为常用分析口径,但本质是配置集合与调度模型共同作用的结果
  • 常用口径里“app/sf offset 差值”指两者相位差(通常看 |sfOffset - appOffset| 的绝对值,具体符号以设备实现与统计口径为准)

实际的优化效果

以 120Hz 设备为例,配置 3ms Offset 的效果:

无 Offset(传统方式)

  • T0:应用和 SurfaceFlinger 同时接收 Vsync
  • T0+3ms:应用完成渲染
  • T0+8.333ms:下一个 Vsync,SurfaceFlinger 开始合成
  • T0+16.666ms:用户看到画面(总延迟 16.666ms)

有 Offset(优化方式)

  • T0+1ms:应用接收 Vsync-app,开始渲染
  • T0+3ms:应用完成渲染,提交 Buffer
  • T0+4ms:SurfaceFlinger 接收 Vsync-sf,立即开始合成
  • T0+6ms:SurfaceFlinger 完成合成
  • T0+8.333ms:用户看到画面(总延迟 8.333ms)

通过合理配置 Offset,可以将延迟从 16.666ms 减少到 8.333ms,提升一倍的响应性能。

实际的时间预算分配

以 120Hz 设备为例(8.333ms 周期):

  • 理想情况:应用 4ms + SurfaceFlinger 2ms + 缓冲 2.333ms
  • 但实际可以接受:应用 6ms + SurfaceFlinger 3ms(如果有足够的 Buffer 缓冲)
  • GPU 限制:在低端设备上,GPU 渲染可能需要 10-15ms,成为真正的瓶颈

掉帧的真正原因

  1. 应用端超时 + Buffer 耗尽:连续多帧超时导致 BufferQueue 没有可用 Buffer
  2. GPU 渲染超时:即使 CPU 工作正常,GPU 渲染超时也会掉帧
  3. SurfaceFlinger 超时:系统级合成超时,影响所有应用
  4. 系统资源竞争:CPU/GPU/内存等资源被其他进程占用

Vsync 信号的完整代码流程

Vsync 信号从硬件传递到应用层的完整链路如下。

按 AOSP main 分支对齐的关键代码(精简摘录)

下面片段都按当前 AOSP main 分支的方法签名整理,省略了与主线无关的分支与日志代码。

1)Choreographer 申请下一次 Vsync(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// frameworks/base/core/java/android/view/Choreographer.java
private void scheduleFrameLocked(long now) {
if (!mFrameScheduled) {
mFrameScheduled = true;
if (USE_VSYNC) {
if (isRunningOnLooperThreadLocked()) {
scheduleVsyncLocked();
} else {
Message msg = mHandler.obtainMessage(MSG_DO_SCHEDULE_VSYNC);
msg.setAsynchronous(true);
mHandler.sendMessageAtFrontOfQueue(msg);
}
}
}
}

private void scheduleVsyncLocked() {
mDisplayEventReceiver.scheduleVsync();
}

2)Choreographer 接收 Vsync(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// frameworks/base/core/java/android/view/Choreographer.java
// TODO(b/116025192): physicalDisplayId is ignored because SF only emits VSYNC
// for the internal display and scheduleVsync only allows requesting internal VSYNC.
@Override
public void onVsync(long timestampNanos, long physicalDisplayId, int frame,
VsyncEventData vsyncEventData) {
mTimestampNanos = timestampNanos;
mFrame = frame;
mLastVsyncEventData.copyFrom(vsyncEventData);
Message msg = Message.obtain(mHandler, this);
msg.setAsynchronous(true);
mHandler.sendMessageAtTime(msg, timestampNanos / TimeUtils.NANOS_PER_MS);
}

@Override
public void run() {
mHavePendingVsync = false;
doFrame(mTimestampNanos, mFrame, mLastVsyncEventData);
}

3)JNI 层桥接:DisplayEventDispatcher(C++)

1
2
3
4
5
6
7
8
9
10
11
12
// frameworks/base/core/jni/android_view_DisplayEventReceiver.cpp
class NativeDisplayEventReceiver : public DisplayEventDispatcher {
public:
NativeDisplayEventReceiver(JNIEnv* env, jobject receiverWeak, jobject vsyncEventDataWeak,
const sp<MessageQueue>& messageQueue, jint vsyncSource,
jint eventRegistration, jlong layerHandle);

private:
void dispatchVsync(nsecs_t timestamp, PhysicalDisplayId displayId, uint32_t count,
VsyncEventData vsyncEventData) override;
void dispatchHotplug(nsecs_t timestamp, PhysicalDisplayId displayId, bool connected) override;
};

4)Native 收发通道:DisplayEventReceiver + BitTube(C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// frameworks/native/libs/gui/DisplayEventReceiver.cpp
DisplayEventReceiver::DisplayEventReceiver(gui::ISurfaceComposer::VsyncSource vsyncSource,
EventRegistrationFlags eventRegistration, const sp<IBinder>& layerHandle) {
sf->createDisplayEventConnection(vsyncSource, ..., layerHandle, &mEventConnection);
mDataChannel = std::make_unique<gui::BitTube>();
mEventConnection->stealReceiveChannel(mDataChannel.get());
}

status_t DisplayEventReceiver::requestNextVsync() {
mEventConnection->requestNextVsync();
return NO_ERROR;
}

ssize_t DisplayEventReceiver::getEvents(Event* events, size_t count) {
return gui::BitTube::recvObjects(mDataChannel.get(), events, count);
}

5)SurfaceFlinger 调度与分发(C++)

1
2
3
// frameworks/native/services/surfaceflinger/Scheduler/VSyncDispatch.h
virtual std::optional<ScheduleResult> schedule(
CallbackToken token, ScheduleTiming scheduleTiming) = 0;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// frameworks/native/services/surfaceflinger/Scheduler/EventThread.cpp
void EventThread::onVsync(nsecs_t vsyncTime, nsecs_t wakeupTime, nsecs_t readyTime) {
mPendingEvents.push_back(makeVSync(mVsyncSchedule->getPhysicalDisplayId(), wakeupTime,
++mVSyncState->count, vsyncTime, readyTime));
}

void EventThread::threadMain(std::unique_lock<std::mutex>& lock) {
...
const auto scheduleResult = mVsyncRegistration.schedule({
.workDuration = mWorkDuration.get().count(),
.readyDuration = mReadyDuration.count(),
.lastVsync = mLastVsyncCallbackTime.ns(),
.committedVsyncOpt = mLastCommittedVsyncTime.ns()});
LOG_ALWAYS_FATAL_IF(!scheduleResult, "Error scheduling callback");
...
}

关键时序点分析

通过上述代码流程,我们可以看到完整的时序链路:

  1. HWC 产生硬件 Vsync → SurfaceFlinger Scheduler 获取硬件节拍
  2. Scheduler 计算唤醒窗口VSyncDispatch::schedule(...)
  3. EventThread 生成/派发事件 → 写入 DisplayEventReceiver::Event(通过 BitTube
  4. App 侧 Native 收到事件DisplayEventDispatcher::dispatchVsync(...)
  5. Java FrameDisplayEventReceiver 回调 → 异步消息切到 Looper 队列
  6. Choreographer#doFrame(...) 执行 → Input/Animation/Traversal/Commit

各环节的职责和优化点不同,理解完整流程有助于在 Perfetto 中分析 Vsync 相关性能问题。

FrameTimeline

App 和 SurfaceFlinger 都有 FrameTimeline

image-20250918223035361

  • 轨道Expected TimelineActual Timeline
  • PresentType/JankType
    • PresentType 指示本帧呈现方式(例如 On-time、Late),JankType 指示卡顿类型来源
    • 常见 JankType:AppDeadlineMissedBufferStuffingSfCpuDeadlineMissedSfGpuDeadlineMissed
  • 操作步骤(Perfetto UI)
    1. 在应用进程选择目标 Surface/Layer 或使用 FrameToken 过滤
    2. 对齐 Expected 与 Actual,查看偏移与颜色编码
    3. 向上钻取:Choreographer#doFrameRenderThreadqueueBufferacquire/present_fence
  • 误判规避
    • 仅凭 doFrame 时长判断掉帧不可靠;以 FrameTimeline 的 PresentType/JankType 为准
    • 多缓冲可能掩盖单帧超时,需要看连续帧与 Buffer 可用性

刷新率/显示模式/VRR 对 Vsync 与 Offset/预测的影响

  • 模式切换:刷新率变更会重新配置 VsyncConfiguration,影响 app/sf Offset 与预测模型;
    • Perfetto:查 display mode change 事件与随后的 vsync 间隔变化
  • VRR(可变刷新率):目标周期不恒定,软件预测更依赖 present_fence 反馈校准;
    • Perfetto:观察 vsync 间隔分布与 present_fence 偏差
  • 多显示/外接显示:硬件层可按 physicalDisplayId 上报 vsync;但应用侧 Choreographer 通常仍以内屏/pacesetter 时序为主(实现细节随版本演进)。分析时先确认你看的到底是 HWC/SF 轨道,还是 app 轨道;
    • 版本差异:官方文档明确 Android 10 及以下“Per-display VSYNC 不支持”;Android 11+ 该限制在框架/HWC 能力层面已移除,但应用侧 Choreographer 的请求路径在 main 分支仍有“internal display”相关注释,需结合目标系统分支实测判断
    • Perfetto:按显示 ID 过滤相关 Counter/Slice

Perfetto 实战 Checklist(建议按序查看)

  1. Vsync 信号与周期
    • vsync-app / vsync-sf / vsync-appSf 间隔是否稳定(60/90/120Hz 对应周期)
    • 是否存在异常密集/稀疏的 Vsync(预测抖动)
      image-20250918223148748
  2. Vsync 相位差配置
    • VsyncWorkDuration 是否符合机型预期的 app/sf Offset
    • app 与 sf 的先后是否匹配“先绘制后合成”的策略
      image-20250918222707300
  3. FrameTimeline 判读
    • 先看 PresentType,再看 JankType;确认是 app 还是 SF/GPU 侧问题
    • 选择目标 Surface/FrameToken 定位具体帧
      image-20250918223220718
  4. 应用主线程与渲染线程
    • Choreographer#doFrame 各阶段耗时(Input/Animation/Traversal)
    • RenderThreadsyncAndDrawFrame/DrawFrame 耗时是否异常
      image-20250918223340940
  5. BufferQueue 与 Fence
    • 生产者:RenderThread queueBuffer 之后,Buffer 进入可消费队列;但 SF 是否能立刻 latch 还要看 acquire fencepresent fence 主要用于确认该帧实际送显完成时间。新版本在特定策略下可对 unsignaled buffer 先推进,再在需要时等待 fence。
      image-20250918224205093
    • 消费者 SF 与 BufferTX:SF 在每个合成节拍会尝试为目标 layer 取最新可用 Buffer。若某 layer 的 BufferTX 为 0,通常表示该 layer 暂无新 Buffer,SF 会沿用旧内容继续合成;对这个 App 来说表现为画面停滞/卡顿,但不代表 SF 全局“停止合成”。
      image-20250918223441117
  6. 合成策略与显示
    • SF 是否频繁走 ClientComposition;HWC validate/present 是否异常
    • 多显示/模式切换/VRR 时是否伴随明显预测偏差
      image-20250918223517315
  7. 资源与其他干扰
    • CPU 竞争(大核占用)、GPU 忙、IO/内存抖动(GC/compaction)
    • 其他前台应用/系统服务是否占用关键资源
      image-20250918223532482

参考文档

  1. Android Graphics Architecture
  2. VSYNC Implementation Guide
  3. Frame Pacing
  4. Perfetto Documentation
  5. Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程
  6. Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战
  7. Vsync offset 相关技术分析
  8. Android 13/14高版本SurfaceFlinger出现VSYNC-app/VSYNC-appSf/VSYNC-sf剖析
  9. AOSP - Choreographer.java(main)
  10. AOSP - android_view_DisplayEventReceiver.cpp(main)
  11. AOSP - DisplayEventDispatcher.h(main)
  12. AOSP - DisplayEventReceiver.cpp(main)
  13. AOSP - VSyncDispatch.h(main)
  14. AOSP - EventThread.cpp(main)
  15. Android Multi-display(官方文档)
  16. AOSP - VsyncConfiguration.h(main)
  17. AOSP - DisplayEventDispatcher.cpp(main)
  18. Unsignaled buffer latch(官方文档)

关于我 && 博客

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 博主个人介绍 :里面有个人的微信和微信群链接。
  2. 本博客内容导航 :个人博客内容的一个导航。
  3. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

Java|FreeMarker 复用 layout

作者 Zhuang Ma
2025年8月30日 00:00

项目里的页面一多,重复的页面布局就不可避免地冒了出来,作为程序员,消除重复,义不容辞。那么,今天就来聊聊如何在 FreeMarker 中复用页面 layout,让代码更优雅、更易维护。

常规做法:include

FreeMarker 提供了 include 指令,可以把一些公共页面元素单独提取出来,然后在需要的地方通过 include 引入,例如:

<#-- includes/header.ftl -->
<p>我来组成头部</p>
<#-- includes/footer.ftl -->
<p>我来组成底部</p>
<#-- somepage.ftl -->
<#include "./includes/header.ftl">

<p>我是页面内容</p>

<#include "./includes/footer.ftl">

<script>
// 这里是一些 JavaScript 代码
</script>

去除重复:抽象 layout

但是所有类似的页面都要手写这个结构也挺麻烦的,更糟糕的是,一旦这些页面的结构发生变化,得在 N 个页面里反复修改,想想都头大。

很多博客引擎(比如 Jekyll)都支持 layout 功能,允许我们定义统一的页面布局,具体页面只需专注于内容。

FreeMarker 虽然没有内置 layout,但我们可以用 macro 来实现类似的效果。

比如,抽象出一个 layout/page.ftl 文件,作为布局模板:

<#-- layout/page.ftl -->
<#macro layout body js="">

<#include "../includes/header.ftl" />

${body}

<#include "../includes/footer.ftl" />

${js}

</#macro>

然后在需要的页面这样用:

<#import "./layout/page.ftl" as base>

<#assign body>

<p>我是页面内容</p>
<p>当前时间:<span id="current-time">${.now?string("yyyy-MM-dd HH:mm:ss")}</span></p>

</#assign>

<#assign js>

<script>
// 每隔一秒刷新当前时间
setInterval(function() {
    document.getElementById("current-time").innerHTML = new Date().toLocaleString();
}, 1000);
</script>

</#assign>

<@base.layout body=body js=js />

页面效果如下:

减少手工输入:code snippets

虽然布局复用问题解决了,但每次新建页面还得手写一遍结构,还是不够优雅。程序员的信条是:能自动化的绝不手动!

这时就轮到编辑器/IDE 的 code snippets 功能登场了。把上面的结构定义成代码片段,新建页面时只需输入一个触发词,基本结构就自动生成。

以 VSCode 为例,可以在项目的 .vscode 目录下新建 layout.code-snippets 文件,内容如下:

{
    "page_layout": {
        "scope": "ftl",
        "prefix": "layout:page",
        "body": [
            "<#import \"./layout/page.ftl\" as base>",
            "",
            "<#assign body>",
            "",
            "",
            "",
            "</#assign>",
            "",
            "<#assign js>",
            "",
            "<script>",
            "",
            "</script>",
            "",
            "</#assign>",
            "",
            "<@base.layout body=body js=js />"
        ],
        "description": "Page layout template for FTL files"
    }
}

这样新建 .ftl 文件后,输入 layout:page,页面布局结构就自动生成了。

如图所示:

IntelliJ IDEA 也可以用 Live Templates 实现同样的效果。

本文相关代码和示例已上传至 GitHub,见 https://github.com/mzlogin/learn-spring 的 freemarker-test 目录。

❌
❌