From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 976A93858C66 for ; Fri, 3 May 2024 08:55:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 976A93858C66 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 976A93858C66 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714726538; cv=none; b=O1ozf/xJGaaONZtArJL6pS7V8at2lijI0g7WQzEaeG75DWY0dsTsAyLgqeZJZ4u5Li/v9SoSm2pWMDJZszMyaqiGHNDeII5BHEmSSVWclGq3kNilZYQT5IQ1AWymW39kLu9RaTePrxhsGw49EZc3WadmmITqe+gfai1h0MKvocw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714726538; c=relaxed/simple; bh=DpVQgjaIqdmUuEwehyPk7q+Yjf2IM7FigI+rjs+mxDg=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=J5R1lI5pqJRbQnVplznIptxA7W/OHkISR5yWJpELwsU5U7rYusJe4lX8bnABTOMkN56mUQr5HjZj2TmeWDW2ggMWWVfg6CX9RlR1Gdp6mtX437bkGC1a6ZjrUn/hm3WnwKT87AcGmTQO6tULTu/pVVhIwhFTDZb8cYr5z2yAX0g= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1714726532; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=qeOgkA2NGVPWfu282FxbOjkRS6TgF50sdNB7siNEN8g=; b=XW8FSLnak/rdubtLYp0DBNTeozeAEZ6FBaio7guK3xtg1zw4UMiGPOme0SCc6Fy3Fs/1To /cEFIcKIXXMTV6po77nt1sM9+2okiCKRzLGEK5zMPDuc4X1gyo/ILN+9iLcq/zkLx1tNI1 KiLJdwdXl/gAxd8Uyk7LfozqzC17920= Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-433-UZCkAitIORqsTTUcCE8Z9A-1; Fri, 03 May 2024 04:55:29 -0400 X-MC-Unique: UZCkAitIORqsTTUcCE8Z9A-1 Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-a5193fab7e5so564163766b.3 for ; Fri, 03 May 2024 01:55:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714726528; x=1715331328; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qeOgkA2NGVPWfu282FxbOjkRS6TgF50sdNB7siNEN8g=; b=Syq+WcvQIQ7Or5lUjxXMFQoWjPk29KSJSA2sm9rC/TfpF+i2nlN3r1rI5HjWulrZYK UyHqcd6gbcUJ1n7A+YoD5SNXHxRchyuElw+oc4oaYFdIvuIdYl0J/dfEO4+IH1OG+xRk Z5M1v0S/W34N5VZF2Or4EBef+6GSELX6Q+RfD7cRO0zExa6Ie+dOJrS+x0q+TXpbtBz4 G2W285Jh3bJEUPu4Mqt1JtjKOT7LvoWkAa8ow5X3C0rpwz7nb2H0MWR1uW3PuJ55VKfD 2ilkq1cWyD2So/k7ZOdVnBkjbA6tmzXONufFvFwWzgxvJrcoMXQTnETKKWfbtKtIO3H8 Wp5A== X-Forwarded-Encrypted: i=1; AJvYcCXeErW6TRTOa7lgYVTc7IoIjsUDQxxVs9YpO1PQyU6iIBKGpi/6W5wFejMKXZgHJ7ey6uu/6XWSczghr5ZcGa8= X-Gm-Message-State: AOJu0Yy7Vo/gWTVKnmDIGY/jxVFOALivDtkfNHGchmkNq4emOqMKegqy zBWyLUf+wr8mRa4BWUDqImX2yZJJW9960nxP2lQ3CdiDoIiWsM/StYWRUhxikD1DnE6brV94aHw unwwdTzubkhqzUYKDAtpIjnVdh1ZriwlJe5RJNoObzm7L2FbllwiNgGC2aBvce1O+yUxZRdbpLG 8Psnk07MjoqR9wZfY9w9M= X-Received: by 2002:a17:906:29d4:b0:a58:c559:3d06 with SMTP id y20-20020a17090629d400b00a58c5593d06mr1209284eje.55.1714726528042; Fri, 03 May 2024 01:55:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFveUCJh4UPX4j4GYuVm6aYYsIkB//J6n+jmH/uFnkdKIgQLu8qepXE4on/P27+4Uq+neBiZLMbXfQ82mub1Fw= X-Received: by 2002:a17:906:29d4:b0:a58:c559:3d06 with SMTP id y20-20020a17090629d400b00a58c5593d06mr1209271eje.55.1714726527659; Fri, 03 May 2024 01:55:27 -0700 (PDT) MIME-Version: 1.0 References: <3b573664-e3f2-4be1-ac80-47b7a258aa4c@redhat.com> In-Reply-To: <3b573664-e3f2-4be1-ac80-47b7a258aa4c@redhat.com> From: Aldy Hernandez Date: Fri, 3 May 2024 10:55:16 +0200 Message-ID: Subject: Re: 1.76% performance loss in VRP due to inlining To: Jason Merrill Cc: Jakub Jelinek , GCC Mailing List , "MacLeod, Andrew" X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000919e54061788e141" X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000919e54061788e141 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable After some very painful analysis, I was able to reduce the degradation we are experiencing in VRP to a handful of lines in the new implementation of prange. What happens is that any series of small changes to a new prange class causes changes in the inlining of wide_int_storage elsewhere. With the attached patch, one difference lies in irange::singleton_p(tree *). Note that this is in irange, which is completely unrelated to the new (unused) code. Using trunk as the stage1 compiler, we can see the assembly for irange::singleton_p(tree *) in value-range.cc is different with and without my patch. The number of calls into wide_int within irange::singleton_p(tree *) change= s: awk '/^_ZNK6irange11singleton_pEPP9tree_node/,/endproc/' value-range.s | grep call.*wide_int With mainline sources: call _ZN16wide_int_storageC2ERKS_ call _Z16wide_int_to_treeP9tree_nodeRK8poly_intILj1E16generic_wide_intI20wide_in= t_ref_storageILb0ELb1EEEE With the attached patch: call _ZN16wide_int_storageC2ERKS_ call _ZN16wide_int_storageC2ERKS_ call _Z16wide_int_to_treeP9tree_nodeRK8poly_intILj1E16generic_wide_intI20wide_in= t_ref_storageILb0ELb1EEEE call _ZN16wide_int_storageC2ERKS_ The additional calls correspond to the wide_int_storage constructor: $ c++filt _ZN16wide_int_storageC2ERKS_ wide_int_storage::wide_int_storage(wide_int_storage const&) Using -fno-semantic-interposition makes no difference. Here are the relevant bits in the difference from -Winline with and without my patch: > inlined from =E2=80=98virtual bool irange::singleton_p(tree_node**) c= onst=E2=80=99 at /home/aldyh/src/gcc/gcc/value-range.cc:1254:40: > /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in ca= ll to =E2=80=98wide_int_storage::wide_int_storage(const wide_int_storage&)= =E2=80=99: --param inline-unit-growth limit reached [-Winline] > 1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage= &x) > | ^~~~~~~~~~~~~~~~ > /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here > 775 | class GTY(()) generic_wide_int : public storage > | ^~~~~~~~~~~~~~~~ > /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in ca= ll to =E2=80=98wide_int_storage::wide_int_storage(const wide_int_storage&)= =E2=80=99: --param inline-unit-growth limit reached [-Winline] > 1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage= &x) > | ^~~~~~~~~~~~~~~~ > /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here > 775 | class GTY(()) generic_wide_int : public storage > | ^~~~~~~~~~~~~~~~ > In copy constructor =E2=80=98generic_wide_int::generic_= wide_int(const generic_wide_int&)=E2=80=99, > inlined from =E2=80=98wide_int irange::lower_bound(unsigned int) cons= t=E2=80=99 at /home/aldyh/src/gcc/gcc/value-range.h:1122:25, Note that this is just one example. There are also inlining differences to irange::get_bitmask(), irange::union_bitmask(), irange::operator=3D, among others. Most of the inlining failures seem to be related to wide_int_storage. I am attaching the difference in -Winline for the curious. Tracking this down is tricky because the slightest change in the patch causes different inlining in irange. Even using a slightly different stage1 compiler produces different changes. For example, using GCC 13 as the stage1 compiler, VRP exhibits a slowdown of 2% with the full prange class. Although this is virtually identical to the slowdown for using trunk as the stage1 compiler, the inlining failures are a tad different. I am tempted to commit the attached to mainline, which slows down VRP by 0.3%, but is measurable enough to analyze, just so we have a base commit-point from where to do the analysis. My wife is about to give birth any day now, so I'm afraid if I drop off for a few months, we'll lose the analysis and the point in time from where to do it. One final thing. The full prange class patch, even when disabled, slows VRP by 2%. I tried to implement the class in small increments, and every small change caused a further slowdown. I don't know if this 2% is final, or if further tweaks in this space will slow us down more. On a positive note, with the entirety of prange implemented (not just the base class but range-ops implemented and prange enabled, there is no overall change to VRP, and IPA-cp speeds up by 7%. This is because holding pointers in prange is a net win that overcomes the 2% handicap the inliner is hitting us with. I would love to hear thoughts, and if y'all agree that committing a small skeleton now can help us track this down in the future. Aldy On Tue, Apr 30, 2024 at 11:37=E2=80=AFPM Jason Merrill w= rote: > > On 4/30/24 12:22, Jakub Jelinek wrote: > > On Tue, Apr 30, 2024 at 03:09:51PM -0400, Jason Merrill via Gcc wrote: > >> On Fri, Apr 26, 2024 at 5:44=E2=80=AFAM Aldy Hernandez via Gcc wrote: > >>> > >>> In implementing prange (pointer ranges), I have found a 1.74% slowdow= n > >>> in VRP, even without any code path actually using the code. I have > >>> tracked this down to irange::get_bitmask() being compiled differently > >>> with and without the bare bones patch. With the patch, > >>> irange::get_bitmask() has a lot of code inlined into it, particularly > >>> get_bitmask_from_range() and consequently the wide_int_storage code. > >> ... > >>> +static irange_bitmask > >>> +get_bitmask_from_range (tree type, > >>> + const wide_int &min, const wide_int &max) > >> ... > >>> -irange_bitmask > >>> -irange::get_bitmask_from_range () const > >> > >> My guess is that this is the relevant change: the old function has > >> external linkage, and is therefore interposable, which inhibits > >> inlining. The new function has internal linkage, which allows > >> inlining. > > > > Even when a function is exported, when not compiled with -fpic/-fPIC > > if we know the function is defined in current TU, it can't be interpose= d, > > Ah, I was misremembering the effect of the change. Rather, it's that if > we see that a function with internal linkage has only a single caller, > we try harder to inline it. > > Jason > --000000000000919e54061788e141 Content-Type: text/x-patch; charset="US-ASCII"; name="minimal-prange.diff" Content-Disposition: attachment; filename="minimal-prange.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lvqfsvw70 ZGlmZiAtLWdpdCBhL2djYy92YWx1ZS1yYW5nZS5oIGIvZ2NjL3ZhbHVlLXJhbmdlLmgKaW5kZXgg ZjFjNjM4ZjhjZDAuLjE3OGE2OTBmNTUxIDEwMDY0NAotLS0gYS9nY2MvdmFsdWUtcmFuZ2UuaAor KysgYi9nY2MvdmFsdWUtcmFuZ2UuaApAQCAtMzc4LDYgKzM3OCwzOSBAQCBwcml2YXRlOgogICB3 aWRlX2ludCBtX3Jhbmdlc1tOKjJdOwogfTsKIAorY2xhc3MgcHJhbmdlIDogcHVibGljIHZyYW5n ZQoreworcHVibGljOgorICBzdGF0aWMgYm9vbCBzdXBwb3J0c19wIChjb25zdF90cmVlKSB7IHJl dHVybiBmYWxzZTsgfQorICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNfdHlwZV9wIChjb25zdF90cmVl KSBjb25zdCBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICB2aXJ0dWFsIHZvaWQg YWNjZXB0IChjb25zdCB2cmFuZ2VfdmlzaXRvciAmKSBjb25zdCBmaW5hbCBvdmVycmlkZSB7fQor ICB2aXJ0dWFsIHZvaWQgc2V0X3VuZGVmaW5lZCAoKSBmaW5hbCBvdmVycmlkZSB7fQorICB2aXJ0 dWFsIHZvaWQgc2V0X3ZhcnlpbmcgKHRyZWUpIGZpbmFsIG92ZXJyaWRlIHt9CisgIHZpcnR1YWwg dm9pZCBzZXRfbm9uemVybyAodHJlZSkgZmluYWwgb3ZlcnJpZGUge30KKyAgdmlydHVhbCB2b2lk IHNldF96ZXJvICh0cmVlKSBmaW5hbCBvdmVycmlkZTsKKyAgdmlydHVhbCB2b2lkIHNldF9ub25u ZWdhdGl2ZSAodHJlZSkgZmluYWwgb3ZlcnJpZGUge30KKyAgdmlydHVhbCBib29sIGNvbnRhaW5z X3AgKHRyZWUpIGNvbnN0IGZpbmFsIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgIHZpcnR1 YWwgYm9vbCBmaXRzX3AgKGNvbnN0IHZyYW5nZSAmKSBjb25zdCBmaW5hbCBvdmVycmlkZSB7IHJl dHVybiBmYWxzZTsgfQorICB2aXJ0dWFsIGJvb2wgc2luZ2xldG9uX3AgKHRyZWUgKiA9IE5VTEwp IGNvbnN0IGZpbmFsIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgIHZpcnR1YWwgYm9vbCB6 ZXJvX3AgKCkgY29uc3QgZmluYWwgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgdmlydHVh bCBib29sIG5vbnplcm9fcCAoKSBjb25zdCBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg fQorICB2aXJ0dWFsIHZvaWQgc2V0ICh0cmVlLCB0cmVlLCB2YWx1ZV9yYW5nZV9raW5kID0gVlJf UkFOR0UpIGZpbmFsIG92ZXJyaWRlIHt9CisgIHZpcnR1YWwgdHJlZSB0eXBlICgpIGNvbnN0IGZp bmFsIG92ZXJyaWRlIHsgcmV0dXJuIE5VTEw7IH0KKyAgdmlydHVhbCBib29sIHVuaW9uXyAoY29u c3QgdnJhbmdlICYpIGZpbmFsIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgIHZpcnR1YWwg Ym9vbCBpbnRlcnNlY3QgKGNvbnN0IHZyYW5nZSAmKSBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBm YWxzZTsgfQorICB2aXJ0dWFsIHRyZWUgbGJvdW5kICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlIHsg cmV0dXJuIE5VTEw7IH0KKyAgdmlydHVhbCB0cmVlIHVib3VuZCAoKSBjb25zdCBmaW5hbCBvdmVy cmlkZSB7IHJldHVybiBOVUxMOyB9CisKKyAgd2lkZV9pbnQgbG93ZXJfYm91bmQgKCkgY29uc3Q7 CisgIHdpZGVfaW50IHVwcGVyX2JvdW5kICgpIGNvbnN0OworICBpcmFuZ2VfYml0bWFzayBnZXRf Yml0bWFzayAoKSBjb25zdCBmaW5hbCBvdmVycmlkZTsKKyAgdm9pZCB1cGRhdGVfYml0bWFzayAo Y29uc3QgaXJhbmdlX2JpdG1hc2sgJikgZmluYWwgb3ZlcnJpZGUge30KK3ByaXZhdGU6CisgIHdp ZGVfaW50IG1fbWluOworICB3aWRlX2ludCBtX21heDsKKyAgaXJhbmdlX2JpdG1hc2sgbV9iaXRt YXNrOworfTsKKwogLy8gVW5zdXBwb3J0ZWQgdGVtcG9yYXJpZXMgbWF5IGJlIGNyZWF0ZWQgYnkg cmFuZ2VyIGJlZm9yZSBpdCdzIGtub3duCiAvLyB0aGV5J3JlIHVuc3VwcG9ydGVkLCBvciBieSB2 cl92YWx1ZXM6OmdldF92YWx1ZV9yYW5nZS4KIApAQCAtMTE4Nyw2ICsxMjIwLDMyIEBAIGlyYW5n ZV92YWxfbWF4IChjb25zdF90cmVlIHR5cGUpCiAgIHJldHVybiB3aTo6bWF4X3ZhbHVlIChUWVBF X1BSRUNJU0lPTiAodHlwZSksIFRZUEVfU0lHTiAodHlwZSkpOwogfQogCitpbmxpbmUgdm9pZAor cHJhbmdlOjpzZXRfemVybyAodHJlZSB0eXBlKQoreworICB3aWRlX2ludCB6ZXJvID0gd2k6Onpl cm8gKFRZUEVfUFJFQ0lTSU9OICh0eXBlKSk7CisgIG1fbWluID0gbV9tYXggPSB6ZXJvOworICBt X2JpdG1hc2sgPSBpcmFuZ2VfYml0bWFzayAoemVybywgemVybyk7Cit9CisKK2lubGluZSB3aWRl X2ludAorcHJhbmdlOjpsb3dlcl9ib3VuZCAoKSBjb25zdAoreworICByZXR1cm4gbV9taW47Cit9 CisKK2lubGluZSB3aWRlX2ludAorcHJhbmdlOjp1cHBlcl9ib3VuZCAoKSBjb25zdAoreworICBy ZXR1cm4gbV9tYXg7Cit9CisKK2lubGluZSBpcmFuZ2VfYml0bWFzaworcHJhbmdlOjpnZXRfYml0 bWFzayAoKSBjb25zdAoreworICByZXR1cm4gbV9iaXRtYXNrOworfQorCiBpbmxpbmUKIGZyYW5n ZTo6ZnJhbmdlICgpCiAgIDogdnJhbmdlIChWUl9GUkFOR0UpCg== --000000000000919e54061788e141 Content-Type: text/x-patch; charset="UTF-8"; name="winline.diff" Content-Disposition: attachment; filename="winline.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lvqftbnu1 NGM0CjwgICAgIGlubGluZWQgZnJvbSDigJh2aXJ0dWFsIHZvaWQgaXJhbmdlOjpzZXRfdmFyeWlu Zyh0cmVlKeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjEwNzQ6 MTE1OgotLS0KPiAgICAgaW5saW5lZCBmcm9tIOKAmHZpcnR1YWwgdm9pZCBpcmFuZ2U6OnNldF92 YXJ5aW5nKHRyZWUp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6 MTEwNzoxMTU6CjEyLDEzYzEyLDEzCjwgICAgIGlubGluZWQgZnJvbSDigJh2aXJ0dWFsIHZvaWQg aXJhbmdlOjpzZXRfdmFyeWluZyh0cmVlKeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92 YWx1ZS1yYW5nZS5oOjEwNzU6MTE1LAo8ICAgICBpbmxpbmVkIGZyb20g4oCYdmlydHVhbCB2b2lk IGlyYW5nZTo6c2V0X3ZhcnlpbmcodHJlZSnigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mv dmFsdWUtcmFuZ2UuaDoxMDYzOjE6Ci0tLQo+ICAgICBpbmxpbmVkIGZyb20g4oCYdmlydHVhbCB2 b2lkIGlyYW5nZTo6c2V0X3ZhcnlpbmcodHJlZSnigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9n Y2MvdmFsdWUtcmFuZ2UuaDoxMTA4OjExNSwKPiAgICAgaW5saW5lZCBmcm9tIOKAmHZpcnR1YWwg dm9pZCBpcmFuZ2U6OnNldF92YXJ5aW5nKHRyZWUp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2Mv Z2NjL3ZhbHVlLXJhbmdlLmg6MTA5NjoxOgoyMWMyMSwzNgo8ICAgICBpbmxpbmVkIGZyb20g4oCY d2lkZV9pbnQgaXJhbmdlOjpsb3dlcl9ib3VuZCh1bnNpZ25lZCBpbnQpIGNvbnN04oCZIGF0IC9o b21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTA4OToyNSwKLS0tCj4gICAgIGlu bGluZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkg Y29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTIyOjI1 LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYdmlydHVhbCBib29sIGlyYW5nZTo6c2luZ2xldG9uX3Ao dHJlZV9ub2RlKiopIGNvbnN04oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJh bmdlLmNjOjEyNTQ6NDA6Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDoxMTk2 Ojg6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHdpZGVfaW50X3N0b3Jh Z2U6OndpZGVfaW50X3N0b3JhZ2UoY29uc3Qgd2lkZV9pbnRfc3RvcmFnZSYp4oCZOiAtLXBhcmFt IGlubGluZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAgMTE5NiB8IGlu bGluZSB3aWRlX2ludF9zdG9yYWdlOjp3aWRlX2ludF9zdG9yYWdlIChjb25zdCB3aWRlX2ludF9z dG9yYWdlICZ4KQo+ICAgICAgIHwgICAgICAgIF5+fn5+fn5+fn5+fn5+fn4KPiAvaG9tZS9hbGR5 aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjc3NTo3OiBub3RlOiBjYWxsZWQgZnJvbSBoZXJlCj4g ICA3NzUgfCBjbGFzcyBHVFkoKCkpIGdlbmVyaWNfd2lkZV9pbnQgOiBwdWJsaWMgc3RvcmFnZQo+ ICAgICAgIHwgICAgICAgXn5+fn5+fn5+fn5+fn5+fgo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2Nj L3dpZGUtaW50Lmg6MTE5Njo4OiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDi gJh3aWRlX2ludF9zdG9yYWdlOjp3aWRlX2ludF9zdG9yYWdlKGNvbnN0IHdpZGVfaW50X3N0b3Jh Z2UmKeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxp bmVdCj4gIDExOTYgfCBpbmxpbmUgd2lkZV9pbnRfc3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZSAo Y29uc3Qgd2lkZV9pbnRfc3RvcmFnZSAmeCkKPiAgICAgICB8ICAgICAgICBefn5+fn5+fn5+fn5+ fn5+Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDo3NzU6Nzogbm90ZTogY2Fs bGVkIGZyb20gaGVyZQo+ICAgNzc1IHwgY2xhc3MgR1RZKCgpKSBnZW5lcmljX3dpZGVfaW50IDog cHVibGljIHN0b3JhZ2UKPiAgICAgICB8ICAgICAgIF5+fn5+fn5+fn5+fn5+fn4KPiBJbiBjb3B5 IGNvbnN0cnVjdG9yIOKAmGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT46OmdlbmVy aWNfd2lkZV9pbnQoY29uc3QgZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPiYp4oCZ LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQgaXJhbmdlOjpsb3dlcl9ib3VuZCh1bnNp Z25lZCBpbnQpIGNvbnN04oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdl Lmg6MTEyMjoyNSwKMzAsMzFjNDUsNDYKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGly YW5nZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9z cmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMDA6MjksCjwgICAgIGlubGluZWQgZnJvbSDigJh2 aXJ0dWFsIGJvb2wgaXJhbmdlOjp6ZXJvX3AoKSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMv Z2NjL2djYy92YWx1ZS1yYW5nZS5oOjk1MzoxOToKLS0tCj4gICAgIGlubGluZWQgZnJvbSDigJh3 aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQgL2hv bWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTMzOjI5LAo+ICAgICBpbmxpbmVk IGZyb20g4oCYdmlydHVhbCBib29sIGlyYW5nZTo6emVyb19wKCkgY29uc3TigJkgYXQgL2hvbWUv YWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDo5ODY6MTk6CjIxNSwyMTdjMjMwLDIzNQo8 IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50Lmg6MTIxMzoxOiB3YXJuaW5nOiBpbmxp bmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh3aWRlX2ludF9zdG9yYWdlJiB3aWRlX2ludF9zdG9y YWdlOjpvcGVyYXRvcj0oY29uc3Qgd2lkZV9pbnRfc3RvcmFnZSYp4oCZOiAtLXBhcmFtIGlubGlu ZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPCAgMTIxMyB8IHdpZGVfaW50 X3N0b3JhZ2U6Om9wZXJhdG9yID0gKGNvbnN0IHdpZGVfaW50X3N0b3JhZ2UgJngpCjwgICAgICAg fCBefn5+fn5+fn5+fn5+fn5+Ci0tLQo+IEluIGNvcHkgY29uc3RydWN0b3Ig4oCYZ2VuZXJpY193 aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPjo6Z2VuZXJpY193aWRlX2ludChjb25zdCBnZW5lcmlj X3dpZGVfaW50PHdpZGVfaW50X3N0b3JhZ2U+JinigJksCj4gICAgIGlubGluZWQgZnJvbSDigJh3 aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQgL2hv bWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTIyOjI1LAo+ICAgICBpbmxpbmVk IGZyb20g4oCYYm9vbCBpcmFuZ2U6OnNpbmdsZXRvbl9wKHdpZGVfaW50JikgY29uc3TigJkgYXQg L2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuY2M6MTI2ODoyMzoKPiAvaG9tZS9h bGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjExOTY6ODogd2FybmluZzogaW5saW5pbmcgZmFp bGVkIGluIGNhbGwgdG8g4oCYd2lkZV9pbnRfc3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZShjb25z dCB3aWRlX2ludF9zdG9yYWdlJinigJk6IC0tcGFyYW0gaW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0 IHJlYWNoZWQgWy1XaW5saW5lXQo+ICAxMTk2IHwgaW5saW5lIHdpZGVfaW50X3N0b3JhZ2U6Ondp ZGVfaW50X3N0b3JhZ2UgKGNvbnN0IHdpZGVfaW50X3N0b3JhZ2UgJngpCj4gICAgICAgfCAgICAg ICAgXn5+fn5+fn5+fn5+fn5+fgoyMjIsMjIzYzI0MCwyNDEKPCAvaG9tZS9hbGR5aC9zcmMvZ2Nj L2djYy92YWx1ZS1yYW5nZS5oOjEwNjM6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNh bGwgdG8g4oCYdmlydHVhbCB2b2lkIGlyYW5nZTo6c2V0X3ZhcnlpbmcodHJlZSnigJk6IC0tcGFy YW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCjwgIDEw NjMgfCBpcmFuZ2U6OnNldF92YXJ5aW5nICh0cmVlIHR5cGUpCi0tLQo+IC9ob21lL2FsZHloL3Ny Yy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTA5NjoxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQg aW4gY2FsbCB0byDigJh2aXJ0dWFsIHZvaWQgaXJhbmdlOjpzZXRfdmFyeWluZyh0cmVlKeKAmTog LS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZSBsaW1pdCByZWFjaGVkIFstV2lubGluZV0K PiAgMTA5NiB8IGlyYW5nZTo6c2V0X3ZhcnlpbmcgKHRyZWUgdHlwZSkKMjI1LDIyNmMyNDMsMjQ0 CjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDI5OjE1OiBub3RlOiBj YWxsZWQgZnJvbSBoZXJlCjwgIDEwMjkgfCAgIHNldF92YXJ5aW5nICh0eXBlKTsKLS0tCj4gL2hv bWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDYyOjE1OiBub3RlOiBjYWxsZWQg ZnJvbSBoZXJlCj4gIDEwNjIgfCAgIHNldF92YXJ5aW5nICh0eXBlKTsKMjI5LDIzMGMyNDcsMjQ4 CjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDYzOjE6IHdhcm5pbmc6 IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHZpcnR1YWwgdm9pZCBpcmFuZ2U6OnNldF92 YXJ5aW5nKHRyZWUp4oCZOiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlIGxpbWl0IHJl YWNoZWQgWy1XaW5saW5lXQo8ICAxMDYzIHwgaXJhbmdlOjpzZXRfdmFyeWluZyAodHJlZSB0eXBl KQotLS0KPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjEwOTY6MTogd2Fy bmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdmlydHVhbCB2b2lkIGlyYW5nZTo6 c2V0X3ZhcnlpbmcodHJlZSnigJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGlt aXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDEwOTYgfCBpcmFuZ2U6OnNldF92YXJ5aW5nICh0cmVl IHR5cGUpCjIzMiwyMzNjMjUwLDI1MQo8IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJh bmdlLmg6MTAyOToxNTogbm90ZTogY2FsbGVkIGZyb20gaGVyZQo8ICAxMDI5IHwgICBzZXRfdmFy eWluZyAodHlwZSk7Ci0tLQo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6 MTA2MjoxNTogbm90ZTogY2FsbGVkIGZyb20gaGVyZQo+ICAxMDYyIHwgICBzZXRfdmFyeWluZyAo dHlwZSk7CjIzNiwyMzdjMjU0LDI1NQo8IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJh bmdlLmg6MTA2MzoxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh2aXJ0 dWFsIHZvaWQgaXJhbmdlOjpzZXRfdmFyeWluZyh0cmVlKeKAmTogLS1wYXJhbSBtYXgtaW5saW5l LWluc25zLXNpbmdsZSBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPCAgMTA2MyB8IGlyYW5nZTo6 c2V0X3ZhcnlpbmcgKHRyZWUgdHlwZSkKLS0tCj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFs dWUtcmFuZ2UuaDoxMDk2OjE6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKA mHZpcnR1YWwgdm9pZCBpcmFuZ2U6OnNldF92YXJ5aW5nKHRyZWUp4oCZOiAtLXBhcmFtIG1heC1p bmxpbmUtaW5zbnMtc2luZ2xlIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo+ICAxMDk2IHwgaXJh bmdlOjpzZXRfdmFyeWluZyAodHJlZSB0eXBlKQoyMzksMjQwYzI1NywyNTgKPCAvaG9tZS9hbGR5 aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjEwMjk6MTU6IG5vdGU6IGNhbGxlZCBmcm9tIGhl cmUKPCAgMTAyOSB8ICAgc2V0X3ZhcnlpbmcgKHR5cGUpOwotLS0KPiAvaG9tZS9hbGR5aC9zcmMv Z2NjL2djYy92YWx1ZS1yYW5nZS5oOjEwNjI6MTU6IG5vdGU6IGNhbGxlZCBmcm9tIGhlcmUKPiAg MTA2MiB8ICAgc2V0X3ZhcnlpbmcgKHR5cGUpOwoyNDMsMjQ0YzI2MSwyNjIKPCAvaG9tZS9hbGR5 aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjEwNjM6MTogd2FybmluZzogaW5saW5pbmcgZmFp bGVkIGluIGNhbGwgdG8g4oCYdmlydHVhbCB2b2lkIGlyYW5nZTo6c2V0X3ZhcnlpbmcodHJlZSni gJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBbLVdpbmxp bmVdCjwgIDEwNjMgfCBpcmFuZ2U6OnNldF92YXJ5aW5nICh0cmVlIHR5cGUpCi0tLQo+IC9ob21l L2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTA5NjoxOiB3YXJuaW5nOiBpbmxpbmlu ZyBmYWlsZWQgaW4gY2FsbCB0byDigJh2aXJ0dWFsIHZvaWQgaXJhbmdlOjpzZXRfdmFyeWluZyh0 cmVlKeKAmTogLS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZSBsaW1pdCByZWFjaGVkIFst V2lubGluZV0KPiAgMTA5NiB8IGlyYW5nZTo6c2V0X3ZhcnlpbmcgKHRyZWUgdHlwZSkKMjQ2LDI0 N2MyNjQsMjY1CjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDI5OjE1 OiBub3RlOiBjYWxsZWQgZnJvbSBoZXJlCjwgIDEwMjkgfCAgIHNldF92YXJ5aW5nICh0eXBlKTsK LS0tCj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDYyOjE1OiBub3Rl OiBjYWxsZWQgZnJvbSBoZXJlCj4gIDEwNjIgfCAgIHNldF92YXJ5aW5nICh0eXBlKTsKMjc4YTI5 NywzMTEKPiBJbiBjb3B5IGNvbnN0cnVjdG9yIOKAmGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRf c3RvcmFnZT46OmdlbmVyaWNfd2lkZV9pbnQoY29uc3QgZ2VuZXJpY193aWRlX2ludDx3aWRlX2lu dF9zdG9yYWdlPiYp4oCZLAo+ICAgICBpbmxpbmVkIGZyb20g4oCYaXJhbmdlX2JpdG1hc2sgZ2V0 X2JpdG1hc2tfZnJvbV9yYW5nZSh0cmVlLCBjb25zdCB3aWRlX2ludCYsIGNvbnN0IHdpZGVfaW50 JinigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuY2M6NDY6MjQsCj4g ICAgIGlubGluZWQgZnJvbSDigJh2aXJ0dWFsIGlyYW5nZV9iaXRtYXNrIGlyYW5nZTo6Z2V0X2Jp dG1hc2soKSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5j YzoyMDM0OjcwOgo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50Lmg6MTE5Njo4OiB3 YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh3aWRlX2ludF9zdG9yYWdlOjp3 aWRlX2ludF9zdG9yYWdlKGNvbnN0IHdpZGVfaW50X3N0b3JhZ2UmKeKAmTogLS1wYXJhbSBpbmxp bmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDExOTYgfCBpbmxpbmUg d2lkZV9pbnRfc3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZSAoY29uc3Qgd2lkZV9pbnRfc3RvcmFn ZSAmeCkKPiAgICAgICB8ICAgICAgICBefn5+fn5+fn5+fn5+fn5+Cj4gL2hvbWUvYWxkeWgvc3Jj L2djYy9nY2Mvd2lkZS1pbnQuaDo3NzU6Nzogbm90ZTogY2FsbGVkIGZyb20gaGVyZQo+ICAgNzc1 IHwgY2xhc3MgR1RZKCgpKSBnZW5lcmljX3dpZGVfaW50IDogcHVibGljIHN0b3JhZ2UKPiAgICAg ICB8ICAgICAgIF5+fn5+fn5+fn5+fn5+fn4KPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRl LWludC5oOjExOTY6ODogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYd2lk ZV9pbnRfc3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZShjb25zdCB3aWRlX2ludF9zdG9yYWdlJini gJk6IC0tcGFyYW0gaW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo+ ICAxMTk2IHwgaW5saW5lIHdpZGVfaW50X3N0b3JhZ2U6OndpZGVfaW50X3N0b3JhZ2UgKGNvbnN0 IHdpZGVfaW50X3N0b3JhZ2UgJngpCj4gICAgICAgfCAgICAgICAgXn5+fn5+fn5+fn5+fn5+fgo+ IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50Lmg6Nzc1Ojc6IG5vdGU6IGNhbGxlZCBm cm9tIGhlcmUKPiAgIDc3NSB8IGNsYXNzIEdUWSgoKSkgZ2VuZXJpY193aWRlX2ludCA6IHB1Ymxp YyBzdG9yYWdlCj4gICAgICAgfCAgICAgICBefn5+fn5+fn5+fn5+fn5+CjM1MSwzNTJjMzg0LDM4 NQo8ICAgICBpbmxpbmVkIGZyb20g4oCYYm9vbCBpcmFuZ2U6OnZhcnlpbmdfY29tcGF0aWJsZV9w KCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDo5MzE6 MTEsCjwgICAgIGlubGluZWQgZnJvbSDigJh2b2lkIGlyYW5nZTo6bm9ybWFsaXplX2tpbmQoKeKA mSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExNTU6MzM6Ci0tLQo+ ICAgICBpbmxpbmVkIGZyb20g4oCYYm9vbCBpcmFuZ2U6OnZhcnlpbmdfY29tcGF0aWJsZV9wKCkg Y29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDo5NjM6MTUs Cj4gICAgIGlubGluZWQgZnJvbSDigJh2b2lkIGlyYW5nZTo6bm9ybWFsaXplX2tpbmQoKeKAmSBh dCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExODg6MzM6CjM1OGEzOTIs NDE4Cj4gSW4gZnVuY3Rpb24g4oCYdHlwZW5hbWUgd2k6OmJpbmFyeV90cmFpdHM8VDEsIFQyPjo6 cHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcj09KGNvbnN0IFQxJiwgY29uc3QgVDImKSBbd2l0aCBU MSA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT47IFQyID0gZ2VuZXJpY193aWRl X2ludDx3aWRlX2ludF9zdG9yYWdlPl3igJksCj4gICAgIGlubGluZWQgZnJvbSDigJhib29sIGly YW5nZTo6dmFyeWluZ19jb21wYXRpYmxlX3AoKSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMv Z2NjL2djYy92YWx1ZS1yYW5nZS5oOjk2NDoxMSwKPiAgICAgaW5saW5lZCBmcm9tIOKAmHZvaWQg aXJhbmdlOjpub3JtYWxpemVfa2luZCgp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3Zh bHVlLXJhbmdlLmg6MTE4ODozMzoKPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5o OjIyNDY6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYYm9vbCB3aTo6 ZXFfcChjb25zdCBUMSYsIGNvbnN0IFQyJikgW3dpdGggVDEgPSBnZW5lcmljX3dpZGVfaW50PHdp ZGVfaW50X3N0b3JhZ2U+OyBUMiA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT5d 4oCZOiAtLXBhcmFtIGlubGluZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0K PiAgMjI0NiB8IHdpOjplcV9wIChjb25zdCBUMSAmeCwgY29uc3QgVDIgJnkpCj4gICAgICAgfCBe fgo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50Lmg6Mzg1MjoxNDc6IG5vdGU6IGNh bGxlZCBmcm9tIGhlcmUKPiAgMzg1MiB8IEJJTkFSWV9QUkVESUNBVEUgKG9wZXJhdG9yID09LCBl cV9wKQo+ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAKPiBJ biBjb3B5IGNvbnN0cnVjdG9yIOKAmGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT46 OmdlbmVyaWNfd2lkZV9pbnQoY29uc3QgZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdl PiYp4oCZLAo+ICAgICBpbmxpbmVkIGZyb20g4oCYaXJhbmdlX2JpdG1hc2s6OmlyYW5nZV9iaXRt YXNrKGNvbnN0IGlyYW5nZV9iaXRtYXNrJinigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mv dmFsdWUtcmFuZ2UuaDoxMzE6NywKPiAgICAgaW5saW5lZCBmcm9tIOKAmGJvb2wgaXJhbmdlOjp1 bmlvbl9iaXRtYXNrKGNvbnN0IGlyYW5nZSYp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2Nj L3ZhbHVlLXJhbmdlLmNjOjIxMDY6MjU6Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1p bnQuaDoxMTk2Ojg6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHdpZGVf aW50X3N0b3JhZ2U6OndpZGVfaW50X3N0b3JhZ2UoY29uc3Qgd2lkZV9pbnRfc3RvcmFnZSYp4oCZ OiAtLXBhcmFtIGlubGluZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAg MTE5NiB8IGlubGluZSB3aWRlX2ludF9zdG9yYWdlOjp3aWRlX2ludF9zdG9yYWdlIChjb25zdCB3 aWRlX2ludF9zdG9yYWdlICZ4KQo+ICAgICAgIHwgICAgICAgIF5+fn5+fn5+fn5+fn5+fn4KPiAv aG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjc3NTo3OiBub3RlOiBjYWxsZWQgZnJv bSBoZXJlCj4gICA3NzUgfCBjbGFzcyBHVFkoKCkpIGdlbmVyaWNfd2lkZV9pbnQgOiBwdWJsaWMg c3RvcmFnZQo+ICAgICAgIHwgICAgICAgXn5+fn5+fn5+fn5+fn5+fgo+IEluIGNvcHkgY29uc3Ry dWN0b3Ig4oCYZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPjo6Z2VuZXJpY193aWRl X2ludChjb25zdCBnZW5lcmljX3dpZGVfaW50PHdpZGVfaW50X3N0b3JhZ2U+JinigJksCj4gICAg IGlubGluZWQgZnJvbSDigJhpcmFuZ2VfYml0bWFzazo6aXJhbmdlX2JpdG1hc2soY29uc3QgaXJh bmdlX2JpdG1hc2smKeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5o OjEzMTo3LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYYm9vbCBpcmFuZ2U6OnVuaW9uX2JpdG1hc2so Y29uc3QgaXJhbmdlJinigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2Uu Y2M6MjEwNjoyNToKPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjExOTY6ODog d2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYd2lkZV9pbnRfc3RvcmFnZTo6 d2lkZV9pbnRfc3RvcmFnZShjb25zdCB3aWRlX2ludF9zdG9yYWdlJinigJk6IC0tcGFyYW0gaW5s aW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo+ICAxMTk2IHwgaW5saW5l IHdpZGVfaW50X3N0b3JhZ2U6OndpZGVfaW50X3N0b3JhZ2UgKGNvbnN0IHdpZGVfaW50X3N0b3Jh Z2UgJngpCj4gICAgICAgfCAgICAgICAgXn5+fn5+fn5+fn5+fn5+fgo+IC9ob21lL2FsZHloL3Ny Yy9nY2MvZ2NjL3dpZGUtaW50Lmg6Nzc1Ojc6IG5vdGU6IGNhbGxlZCBmcm9tIGhlcmUKPiAgIDc3 NSB8IGNsYXNzIEdUWSgoKSkgZ2VuZXJpY193aWRlX2ludCA6IHB1YmxpYyBzdG9yYWdlCj4gICAg ICAgfCAgICAgICBefn5+fn5+fn5+fn5+fn5+CjM2N2E0MjgsNDQ4Cj4gSW4gZnVuY3Rpb24g4oCY dHlwZW5hbWUgd2k6OmJpbmFyeV90cmFpdHM8VDEsIFQyPjo6b3BlcmF0b3JfcmVzdWx0IG9wZXJh dG9yfChjb25zdCBUMSYsIGNvbnN0IFQyJikgW3dpdGggVDEgPSBnZW5lcmljX3dpZGVfaW50PHdp ZGVfaW50X3N0b3JhZ2U+OyBUMiA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT5d 4oCZLAo+ICAgICBpbmxpbmVkIGZyb20g4oCYdm9pZCBpcmFuZ2VfYml0bWFzazo6dW5pb25fKGNv bnN0IGlyYW5nZV9iaXRtYXNrJinigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUt cmFuZ2UuaDoyMzk6NTgsCj4gICAgIGlubGluZWQgZnJvbSDigJhib29sIGlyYW5nZTo6dW5pb25f Yml0bWFzayhjb25zdCBpcmFuZ2UmKeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1 ZS1yYW5nZS5jYzoyMTA3OjEzOgo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50Lmg6 Mjc5ODoxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh0eXBlbmFtZSB3 aTo6YmluYXJ5X3RyYWl0czxUMSwgVDI+OjpyZXN1bHRfdHlwZSB3aTo6Yml0X29yKGNvbnN0IFQx JiwgY29uc3QgVDImKSBbd2l0aCBUMSA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFn ZT47IFQyID0gZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPl3igJk6IC0tcGFyYW0g aW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo+ICAyNzk4IHwgd2k6 OmJpdF9vciAoY29uc3QgVDEgJngsIGNvbnN0IFQyICZ5KQo+ICAgICAgIHwgXn4KPiAvaG9tZS9h bGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjM4NTU6MTUyOiBub3RlOiBjYWxsZWQgZnJvbSBo ZXJlCj4gIDM4NTUgfCBCSU5BUllfT1BFUkFUT1IgKG9wZXJhdG9yIHwsIGJpdF9vcikKPiAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4gSW4gZnVuY3Rpb24g 4oCYdHlwZW5hbWUgd2k6OmJpbmFyeV90cmFpdHM8VDEsIFQyPjo6b3BlcmF0b3JfcmVzdWx0IG9w ZXJhdG9yfChjb25zdCBUMSYsIGNvbnN0IFQyJikgW3dpdGggVDEgPSBnZW5lcmljX3dpZGVfaW50 PHdpZGVfaW50X3N0b3JhZ2U+OyBUMiA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFn ZT5d4oCZLAo+ICAgICBpbmxpbmVkIGZyb20g4oCYdm9pZCBpcmFuZ2VfYml0bWFzazo6dW5pb25f KGNvbnN0IGlyYW5nZV9iaXRtYXNrJinigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFs dWUtcmFuZ2UuaDoyMzk6MjYsCj4gICAgIGlubGluZWQgZnJvbSDigJhib29sIGlyYW5nZTo6dW5p b25fYml0bWFzayhjb25zdCBpcmFuZ2UmKeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92 YWx1ZS1yYW5nZS5jYzoyMTA3OjEzOgo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50 Lmg6Mjc5ODoxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh0eXBlbmFt ZSB3aTo6YmluYXJ5X3RyYWl0czxUMSwgVDI+OjpyZXN1bHRfdHlwZSB3aTo6Yml0X29yKGNvbnN0 IFQxJiwgY29uc3QgVDImKSBbd2l0aCBUMSA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3Rv cmFnZT47IFQyID0gZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPl3igJk6IC0tcGFy YW0gaW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo+ICAyNzk4IHwg d2k6OmJpdF9vciAoY29uc3QgVDEgJngsIGNvbnN0IFQyICZ5KQo+ICAgICAgIHwgXn4KPiAvaG9t ZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjM4NTU6MTUyOiBub3RlOiBjYWxsZWQgZnJv bSBoZXJlCj4gIDM4NTUgfCBCSU5BUllfT1BFUkFUT1IgKG9wZXJhdG9yIHwsIGJpdF9vcikKPiAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4gSW4gbWVtYmVy IGZ1bmN0aW9uIOKAmGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT4mIGdlbmVyaWNf d2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT46Om9wZXJhdG9yPShnZW5lcmljX3dpZGVfaW50PHdp ZGVfaW50X3N0b3JhZ2U+JiYp4oCZLAo+ICAgICBpbmxpbmVkIGZyb20g4oCYdm9pZCBpcmFuZ2Vf Yml0bWFzazo6dW5pb25fKGNvbnN0IGlyYW5nZV9iaXRtYXNrJinigJkgYXQgL2hvbWUvYWxkeWgv c3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoyMzk6NTgsCj4gICAgIGlubGluZWQgZnJvbSDigJhi b29sIGlyYW5nZTo6dW5pb25fYml0bWFzayhjb25zdCBpcmFuZ2UmKeKAmSBhdCAvaG9tZS9hbGR5 aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5jYzoyMTA3OjEzOgozNzNhNDU1LDQ3Mgo+IEluIGZ1 bmN0aW9uIOKAmHR5cGVuYW1lIHdpOjpiaW5hcnlfdHJhaXRzPFQxLCBUMj46Om9wZXJhdG9yX3Jl c3VsdCBvcGVyYXRvcnwoY29uc3QgVDEmLCBjb25zdCBUMiYpIFt3aXRoIFQxID0gZ2VuZXJpY193 aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPjsgVDIgPSBnZW5lcmljX3dpZGVfaW50PHdpZGVfaW50 X3N0b3JhZ2U+XeKAmSwKPiAgICAgaW5saW5lZCBmcm9tIOKAmHZvaWQgaXJhbmdlX2JpdG1hc2s6 OnVuaW9uXyhjb25zdCBpcmFuZ2VfYml0bWFzayYp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2Mv Z2NjL3ZhbHVlLXJhbmdlLmg6MjM5OjU4LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYYm9vbCBpcmFu Z2U6OnVuaW9uX2JpdG1hc2soY29uc3QgaXJhbmdlJinigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2dj Yy9nY2MvdmFsdWUtcmFuZ2UuY2M6MjEwNzoxMzoKPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93 aWRlLWludC5oOjI3OTg6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCY dHlwZW5hbWUgd2k6OmJpbmFyeV90cmFpdHM8VDEsIFQyPjo6cmVzdWx0X3R5cGUgd2k6OmJpdF9v cihjb25zdCBUMSYsIGNvbnN0IFQyJikgW3dpdGggVDEgPSBnZW5lcmljX3dpZGVfaW50PHdpZGVf aW50X3N0b3JhZ2U+OyBUMiA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT5d4oCZ OiAtLXBhcmFtIGlubGluZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAg Mjc5OCB8IHdpOjpiaXRfb3IgKGNvbnN0IFQxICZ4LCBjb25zdCBUMiAmeSkKPiAgICAgICB8IF5+ Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDozODU1OjE1Mjogbm90ZTogY2Fs bGVkIGZyb20gaGVyZQo+ICAzODU1IHwgQklOQVJZX09QRVJBVE9SIChvcGVyYXRvciB8LCBiaXRf b3IpCj4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgo+IElu IGZ1bmN0aW9uIOKAmHR5cGVuYW1lIHdpOjpiaW5hcnlfdHJhaXRzPFQxLCBUMj46Om9wZXJhdG9y X3Jlc3VsdCBvcGVyYXRvcnwoY29uc3QgVDEmLCBjb25zdCBUMiYpIFt3aXRoIFQxID0gZ2VuZXJp Y193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPjsgVDIgPSBnZW5lcmljX3dpZGVfaW50PHdpZGVf aW50X3N0b3JhZ2U+XeKAmSwKPiAgICAgaW5saW5lZCBmcm9tIOKAmHZvaWQgaXJhbmdlX2JpdG1h c2s6OnVuaW9uXyhjb25zdCBpcmFuZ2VfYml0bWFzayYp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9n Y2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MjM5OjI2LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYYm9vbCBp cmFuZ2U6OnVuaW9uX2JpdG1hc2soY29uc3QgaXJhbmdlJinigJkgYXQgL2hvbWUvYWxkeWgvc3Jj L2djYy9nY2MvdmFsdWUtcmFuZ2UuY2M6MjEwNzoxMzoKPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2dj Yy93aWRlLWludC5oOjI3OTg6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g 4oCYdHlwZW5hbWUgd2k6OmJpbmFyeV90cmFpdHM8VDEsIFQyPjo6cmVzdWx0X3R5cGUgd2k6OmJp dF9vcihjb25zdCBUMSYsIGNvbnN0IFQyJikgW3dpdGggVDEgPSBnZW5lcmljX3dpZGVfaW50PHdp ZGVfaW50X3N0b3JhZ2U+OyBUMiA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT5d 4oCZOiAtLXBhcmFtIGlubGluZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0K PiAgMjc5OCB8IHdpOjpiaXRfb3IgKGNvbnN0IFQxICZ4LCBjb25zdCBUMiAmeSkKPiAgICAgICB8 IF5+Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDozODU1OjE1Mjogbm90ZTog Y2FsbGVkIGZyb20gaGVyZQo+ICAzODU1IHwgQklOQVJZX09QRVJBVE9SIChvcGVyYXRvciB8LCBi aXRfb3IpCj4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgo0 MDgsNDA5YzUwNyw1MDgKPCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjEx NTE6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBpcmFuZ2U6 Om5vcm1hbGl6ZV9raW5kKCnigJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGlt aXQgcmVhY2hlZCBbLVdpbmxpbmVdCjwgIDExNTEgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kICgp Ci0tLQo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTE4NDoxOiB3YXJu aW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh2b2lkIGlyYW5nZTo6bm9ybWFsaXpl X2tpbmQoKeKAmTogLS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZSBsaW1pdCByZWFjaGVk IFstV2lubGluZV0KPiAgMTE4NCB8IGlyYW5nZTo6bm9ybWFsaXplX2tpbmQgKCkKNDEzYTUxMyw1 MjAKPiBJbiBtZW1iZXIgZnVuY3Rpb24g4oCYZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9y YWdlPiYgZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPjo6b3BlcmF0b3I9KGNvbnN0 IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT4mKeKAmSwKPiAgICAgaW5saW5lZCBm cm9tIOKAmGlyYW5nZSYgaXJhbmdlOjpvcGVyYXRvcj0oY29uc3QgaXJhbmdlJinigJkgYXQgL2hv bWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuY2M6MTAyMjo1NjoKPiAvaG9tZS9hbGR5 aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjEyMTM6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVk IGluIGNhbGwgdG8g4oCYd2lkZV9pbnRfc3RvcmFnZSYgd2lkZV9pbnRfc3RvcmFnZTo6b3BlcmF0 b3I9KGNvbnN0IHdpZGVfaW50X3N0b3JhZ2UmKeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93 dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDEyMTMgfCB3aWRlX2ludF9zdG9yYWdlOjpv cGVyYXRvciA9IChjb25zdCB3aWRlX2ludF9zdG9yYWdlICZ4KQo+ICAgICAgIHwgXn5+fn5+fn5+ fn5+fn5+fgo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50Lmg6Nzc1Ojc6IG5vdGU6 IGNhbGxlZCBmcm9tIGhlcmUKPiAgIDc3NSB8IGNsYXNzIEdUWSgoKSkgZ2VuZXJpY193aWRlX2lu dCA6IHB1YmxpYyBzdG9yYWdlCj4gICAgICAgfCAgICAgICBefn5+fn5+fn5+fn5+fn5+CjQxNSw0 MTZjNTIyLDUyMwo8IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTE1MTox OiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh2b2lkIGlyYW5nZTo6bm9y bWFsaXplX2tpbmQoKeKAmTogLS1wYXJhbSBtYXgtaW5saW5lLWluc25zLXNpbmdsZSBsaW1pdCBy ZWFjaGVkIFstV2lubGluZV0KPCAgMTE1MSB8IGlyYW5nZTo6bm9ybWFsaXplX2tpbmQgKCkKLS0t Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTg0OjE6IHdhcm5pbmc6 IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHZvaWQgaXJhbmdlOjpub3JtYWxpemVfa2lu ZCgp4oCZOiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlIGxpbWl0IHJlYWNoZWQgWy1X aW5saW5lXQo+ICAxMTg0IHwgaXJhbmdlOjpub3JtYWxpemVfa2luZCAoKQo0MjBhNTI4LDUzNgo+ IEluIGNvcHkgY29uc3RydWN0b3Ig4oCYZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdl Pjo6Z2VuZXJpY193aWRlX2ludChjb25zdCBnZW5lcmljX3dpZGVfaW50PHdpZGVfaW50X3N0b3Jh Z2U+JinigJksCj4gICAgIGlubGluZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2Jv dW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFs dWUtcmFuZ2UuaDoxMTIyOjI1LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYdm9pZCBpcmFuZ2U6Omlu dmVydCgp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmNjOjE4NjM6 NDI6Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDoxMTk2Ojg6IHdhcm5pbmc6 IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHdpZGVfaW50X3N0b3JhZ2U6OndpZGVfaW50 X3N0b3JhZ2UoY29uc3Qgd2lkZV9pbnRfc3RvcmFnZSYp4oCZOiAtLXBhcmFtIGlubGluZS11bml0 LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAgMTE5NiB8IGlubGluZSB3aWRlX2lu dF9zdG9yYWdlOjp3aWRlX2ludF9zdG9yYWdlIChjb25zdCB3aWRlX2ludF9zdG9yYWdlICZ4KQo+ ICAgICAgIHwgICAgICAgIF5+fn5+fn5+fn5+fn5+fn4KPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2dj Yy93aWRlLWludC5oOjc3NTo3OiBub3RlOiBjYWxsZWQgZnJvbSBoZXJlCj4gICA3NzUgfCBjbGFz cyBHVFkoKCkpIGdlbmVyaWNfd2lkZV9pbnQgOiBwdWJsaWMgc3RvcmFnZQo+ICAgICAgIHwgICAg ICAgXn5+fn5+fn5+fn5+fn5+fgo0MjksNDMwYzU0NSw1NDYKPCAgICAgaW5saW5lZCBmcm9tIOKA mHZvaWQgaXJhbmdlOjptYXliZV9yZXNpemUoaW50KeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2Nj L2djYy92YWx1ZS1yYW5nZS5oOjY1NToyMiwKPCAgICAgaW5saW5lZCBmcm9tIOKAmHZvaWQgaXJh bmdlOjptYXliZV9yZXNpemUoaW50KeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1 ZS1yYW5nZS5oOjY0NDoxLAotLS0KPiAgICAgaW5saW5lZCBmcm9tIOKAmHZvaWQgaXJhbmdlOjpt YXliZV9yZXNpemUoaW50KeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5n ZS5oOjY4ODoyMiwKPiAgICAgaW5saW5lZCBmcm9tIOKAmHZvaWQgaXJhbmdlOjptYXliZV9yZXNp emUoaW50KeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY3Nzox LAo0MzdhNTU0LDU2Mgo+IEluIGNvcHkgY29uc3RydWN0b3Ig4oCYZ2VuZXJpY193aWRlX2ludDx3 aWRlX2ludF9zdG9yYWdlPjo6Z2VuZXJpY193aWRlX2ludChjb25zdCBnZW5lcmljX3dpZGVfaW50 PHdpZGVfaW50X3N0b3JhZ2U+JinigJksCj4gICAgIGlubGluZWQgZnJvbSDigJh3aWRlX2ludCBp cmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgv c3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTIyOjI1LAo+ICAgICBpbmxpbmVkIGZyb20g4oCY dm9pZCBpcmFuZ2U6OmludmVydCgp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVl LXJhbmdlLmNjOjE4NjM6NDI6Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDox MTk2Ojg6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHdpZGVfaW50X3N0 b3JhZ2U6OndpZGVfaW50X3N0b3JhZ2UoY29uc3Qgd2lkZV9pbnRfc3RvcmFnZSYp4oCZOiAtLXBh cmFtIGlubGluZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAgMTE5NiB8 IGlubGluZSB3aWRlX2ludF9zdG9yYWdlOjp3aWRlX2ludF9zdG9yYWdlIChjb25zdCB3aWRlX2lu dF9zdG9yYWdlICZ4KQo+ICAgICAgIHwgICAgICAgIF5+fn5+fn5+fn5+fn5+fn4KPiAvaG9tZS9h bGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjc3NTo3OiBub3RlOiBjYWxsZWQgZnJvbSBoZXJl Cj4gICA3NzUgfCBjbGFzcyBHVFkoKCkpIGdlbmVyaWNfd2lkZV9pbnQgOiBwdWJsaWMgc3RvcmFn ZQo+ICAgICAgIHwgICAgICAgXn5+fn5+fn5+fn5+fn5+fgo0NDdjNTcyCjwgICAgIGlubGluZWQg ZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3Ti gJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDg5OjI1LAotLS0K PiAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6bG93ZXJfYm91bmQodW5zaWdu ZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5o OjExMjI6MjUsCjU0NWE2NzEsNjc3Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFu Z2UuaDogSW4gbWVtYmVyIGZ1bmN0aW9uIOKAmHZvaWQgaXJhbmdlOjppbnZlcnQoKeKAmToKPiAv aG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY5NToxOiB3YXJuaW5nOiBpbmxp bmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJhpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9y YW5nZSgpIG5vZXhjZXB0IFt3aXRoIHVuc2lnbmVkIGludCBOID0gMzsgYm9vbCBSRVNJWkFCTEUg PSB0cnVlXeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdp bmxpbmVdCj4gICA2OTUgfCBpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSAoKQo+ ICAgICAgIHwgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2dj Yy92YWx1ZS1yYW5nZS5jYzoxOTEwOjE6IG5vdGU6IGNhbGxlZCBmcm9tIGhlcmUKPiAgMTkxMCB8 IH0KPiAgICAgICB8IF4KNTc2LDU3N2M3MDgsNzA5CjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mv dmFsdWUtcmFuZ2UuaDoxMTUxOjE6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRv IOKAmHZvaWQgaXJhbmdlOjpub3JtYWxpemVfa2luZCgp4oCZOiAtLXBhcmFtIG1heC1pbmxpbmUt aW5zbnMtc2luZ2xlIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo8ICAxMTUxIHwgaXJhbmdlOjpu b3JtYWxpemVfa2luZCAoKQotLS0KPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5n ZS5oOjExODQ6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBp cmFuZ2U6Om5vcm1hbGl6ZV9raW5kKCnigJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5n bGUgbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDExODQgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9r aW5kICgpCjcwNGM4MzYKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6bG93 ZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2dj Yy92YWx1ZS1yYW5nZS5oOjEwODk6MjUsCi0tLQo+ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9p bnQgaXJhbmdlOjpsb3dlcl9ib3VuZCh1bnNpZ25lZCBpbnQpIGNvbnN04oCZIGF0IC9ob21lL2Fs ZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTEyMjoyNSwKNzEzLDcxNGM4NDUsODQ2Cjwg ICAgIGlubGluZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKHVuc2lnbmVk IGludCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDox MTAwOjI5LAo8ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQgaXJhbmdlOjp1cHBlcl9ib3Vu ZCgpIGNvbnN04oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTEx MDozMiwKLS0tCj4gICAgIGlubGluZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2Jv dW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFs dWUtcmFuZ2UuaDoxMTMzOjI5LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQgaXJhbmdl Ojp1cHBlcl9ib3VuZCgpIGNvbnN04oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVl LXJhbmdlLmg6MTE0MzozMiwKNzIzYzg1NQo8ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQg aXJhbmdlOjpsb3dlcl9ib3VuZCh1bnNpZ25lZCBpbnQpIGNvbnN04oCZIGF0IC9ob21lL2FsZHlo L3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTA4OToyNSwKLS0tCj4gICAgIGlubGluZWQgZnJv bSDigJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkg YXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTIyOjI1LAo3NDAsNzQx Yzg3Miw4NzMKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6dXBwZXJfYm91 bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1 ZS1yYW5nZS5oOjExMDA6MjksCjwgICAgIGlubGluZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6 OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUt cmFuZ2UuaDoxMTEwOjMyLAotLS0KPiAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5n ZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMv Z2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMzM6MjksCj4gICAgIGlubGluZWQgZnJvbSDigJh3aWRl X2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2dj Yy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTQzOjMyLAo3NTBjODgyCjwgICAgIGlubGluZWQgZnJvbSDi gJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQg L2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDg5OjI1LAotLS0KPiAgICAg aW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6bG93ZXJfYm91bmQodW5zaWduZWQgaW50 KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMjI6 MjUsCjc2NWM4OTcKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6dXBwZXJf Ym91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92 YWx1ZS1yYW5nZS5oOjExMDA6MjksCi0tLQo+ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQg aXJhbmdlOjp1cHBlcl9ib3VuZCh1bnNpZ25lZCBpbnQpIGNvbnN04oCZIGF0IC9ob21lL2FsZHlo L3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTEzMzoyOSwKNzc0YzkwNgo8ICAgICBpbmxpbmVk IGZyb20g4oCYd2lkZV9pbnQgaXJhbmdlOjpsb3dlcl9ib3VuZCh1bnNpZ25lZCBpbnQpIGNvbnN0 4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTA4OToyNSwKLS0t Cj4gICAgIGlubGluZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2ln bmVkIGludCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2Uu aDoxMTIyOjI1LAo3ODMsNzg0YzkxNSw5MTYKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50 IGlyYW5nZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5 aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMDA6MjksCjwgICAgIGlubGluZWQgZnJvbSDi gJh3aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgv c3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTEwOjMyLAotLS0KPiAgICAgaW5saW5lZCBmcm9t IOKAmHdpZGVfaW50IGlyYW5nZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBh dCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMzM6MjksCj4gICAgIGlu bGluZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQg L2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTQzOjMyLAo4NjJhOTk1LDEw MDYKPiBJbiBjb25zdHJ1Y3RvciDigJhnZW5lcmljX3dpZGVfaW50PFQ+OjpnZW5lcmljX3dpZGVf aW50KGNvbnN0IFQmKSBbd2l0aCBUID0gd2k6Omh3aV93aXRoX3ByZWM7IHN0b3JhZ2UgPSB3aWRl X2ludF9zdG9yYWdlXeKAmSwKPiAgICAgaW5saW5lZCBmcm9tIOKAmGJvb2wgY29udGFpbnNfemVy b19wKGNvbnN0IGlyYW5nZSYp4oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJh bmdlLmg6MTIwNTo2NywKPiAgICAgaW5saW5lZCBmcm9tIOKAmGJvb2wgaXJhbmdlOjpzZXRfcmFu Z2VfZnJvbV9iaXRtYXNrKCnigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFu Z2UuY2M6MTk2ODozOToKPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjExODQ6 ODogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYd2lkZV9pbnRfc3RvcmFn ZTo6d2lkZV9pbnRfc3RvcmFnZShjb25zdCBUJikgW3dpdGggVCA9IHdpOjpod2lfd2l0aF9wcmVj XeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVd Cj4gIDExODQgfCBpbmxpbmUgd2lkZV9pbnRfc3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZSAoY29u c3QgVCAmeCkKPiAgICAgICB8ICAgICAgICBefn5+fn5+fn5+fn5+fn5+Cj4gL2hvbWUvYWxkeWgv c3JjL2djYy9nY2Mvd2lkZS1pbnQuaDo4NDc6MTU6IG5vdGU6IGNhbGxlZCBmcm9tIGhlcmUKPiAg IDg0NyB8ICAgOiBzdG9yYWdlICh4KQo+ICAgICAgIHwgICAgICAgICAgICAgICBeCj4gSW4gZnVu Y3Rpb24g4oCYdHlwZW5hbWUgd2k6OmJpbmFyeV90cmFpdHM8VDEsIFQyPjo6b3BlcmF0b3JfcmVz dWx0IG9wZXJhdG9yfChjb25zdCBUMSYsIGNvbnN0IFQyJikgW3dpdGggVDEgPSBnZW5lcmljX3dp ZGVfaW50PHdpZGVfaW50X3N0b3JhZ2U+OyBUMiA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRf c3RvcmFnZT5d4oCZLAo+ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQgaXJhbmdlX2JpdG1h c2s6OmdldF9ub256ZXJvX2JpdHMoKSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2dj Yy92YWx1ZS1yYW5nZS5oOjIwMDoyMCwKPiAgICAgaW5saW5lZCBmcm9tIOKAmGJvb2wgaXJhbmdl OjpzZXRfcmFuZ2VfZnJvbV9iaXRtYXNrKCnigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mv dmFsdWUtcmFuZ2UuY2M6MTk2OTo0OToKODg1LDg4NmMxMDI5LDEwMzYKPCAvaG9tZS9hbGR5aC9z cmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExNDI6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVk IGluIGNhbGwgdG8g4oCYdmlydHVhbCB2b2lkIGlyYW5nZTo6c2V0X3plcm8odHJlZSnigJk6IC0t cGFyYW0gaW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo8ICAxMTQy IHwgaXJhbmdlOjpzZXRfemVybyAodHJlZSB0eXBlKQotLS0KPiAvaG9tZS9hbGR5aC9zcmMvZ2Nj L2djYy92YWx1ZS1yYW5nZS5oOjY5NToxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2Fs bCB0byDigJhpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSgpIG5vZXhjZXB0IFt3 aXRoIHVuc2lnbmVkIGludCBOID0gMjsgYm9vbCBSRVNJWkFCTEUgPSBmYWxzZV3igJk6IC0tcGFy YW0gaW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo+ICAgNjk1IHwg aW50X3JhbmdlPE4sIFJFU0laQUJMRT46On5pbnRfcmFuZ2UgKCkKPiAgICAgICB8IF5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuY2M6 MTk3Nzo5OiBub3RlOiBjYWxsZWQgZnJvbSBoZXJlCj4gIDE5NzcgfCAgICAgICAgIH0KPiAgICAg ICB8ICAgICAgICAgXgo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTE3 NToxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh2aXJ0dWFsIHZvaWQg aXJhbmdlOjpzZXRfemVybyh0cmVlKeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGlt aXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDExNzUgfCBpcmFuZ2U6OnNldF96ZXJvICh0cmVlIHR5 cGUpCjg5Miw4OTNjMTA0MiwxMDQzCjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFu Z2UuaDoxMTUxOjE6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHZvaWQg aXJhbmdlOjpub3JtYWxpemVfa2luZCgp4oCZOiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2lu Z2xlIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo8ICAxMTUxIHwgaXJhbmdlOjpub3JtYWxpemVf a2luZCAoKQotLS0KPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExODQ6 MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBpcmFuZ2U6Om5v cm1hbGl6ZV9raW5kKCnigJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQg cmVhY2hlZCBbLVdpbmxpbmVdCj4gIDExODQgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kICgpCjkw NmExMDU3LDEwNjYKPiBJbiBmdW5jdGlvbiDigJhib29sIHdpOjpsZXNfcChjb25zdCBUMSYsIGNv bnN0IFQyJikgW3dpdGggVDEgPSBnZW5lcmljX3dpZGVfaW50PHdpZGVfaW50X3N0b3JhZ2U+OyBU MiA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT5d4oCZLAo+ICAgICBpbmxpbmVk IGZyb20g4oCYYm9vbCB3aTo6bGVfcChjb25zdCBUMSYsIGNvbnN0IFQyJiwgc2lnbm9wKSBbd2l0 aCBUMSA9IGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT47IFQyID0gZ2VuZXJpY193 aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPl3igJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mv d2lkZS1pbnQuaDoyMzgxOjE4LAo+ICAgICBpbmxpbmVkIGZyb20g4oCYYm9vbCB3aTo6bGVfcChj b25zdCBUMSYsIGNvbnN0IFQyJiwgc2lnbm9wKSBbd2l0aCBUMSA9IGdlbmVyaWNfd2lkZV9pbnQ8 d2lkZV9pbnRfc3RvcmFnZT47IFQyID0gZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdl Pl3igJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDoyMzc4OjEsCj4gICAg IGlubGluZWQgZnJvbSDigJhib29sIGlyYW5nZTo6aXJhbmdlX2NvbnRhaW5zX3AoY29uc3QgaXJh bmdlJikgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuY2M6 MTU3MDoxNjoKPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjIyOTM6MTogd2Fy bmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYYm9vbCB3aTo6bHRzX3AoY29uc3Qg VDEmLCBjb25zdCBUMiYpIFt3aXRoIFQxID0gZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9y YWdlPjsgVDIgPSBnZW5lcmljX3dpZGVfaW50PHdpZGVfaW50X3N0b3JhZ2U+XeKAmTogLS1wYXJh bSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDIyOTMgfCB3 aTo6bHRzX3AgKGNvbnN0IFQxICZ4LCBjb25zdCBUMiAmeSkKPiAgICAgICB8IF5+Cj4gL2hvbWUv YWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQuaDoyMzY0OjE3OiBub3RlOiBjYWxsZWQgZnJvbSBo ZXJlCj4gIDIzNjQgfCAgIHJldHVybiAhbHRzX3AgKHksIHgpOwo+ICAgICAgIHwgICAgICAgICAg IH5+fn5+fl5+fn5+fgo5NTdjMTExNwo8ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQgaXJh bmdlOjpsb3dlcl9ib3VuZCh1bnNpZ25lZCBpbnQpIGNvbnN04oCZIGF0IC9ob21lL2FsZHloL3Ny Yy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTA4OToyNSwKLS0tCj4gICAgIGlubGluZWQgZnJvbSDi gJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQg L2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTIyOjI1LAo5ODUsOTg2YzEx NDUsMTE0Ngo8ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQgaXJhbmdlOjp1cHBlcl9ib3Vu ZCh1bnNpZ25lZCBpbnQpIGNvbnN04oCZIGF0IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVl LXJhbmdlLmg6MTEwMDoyOSwKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6 dXBwZXJfYm91bmQoKSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1y YW5nZS5oOjExMTA6MzIsCi0tLQo+ICAgICBpbmxpbmVkIGZyb20g4oCYd2lkZV9pbnQgaXJhbmdl Ojp1cHBlcl9ib3VuZCh1bnNpZ25lZCBpbnQpIGNvbnN04oCZIGF0IC9ob21lL2FsZHloL3NyYy9n Y2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTEzMzoyOSwKPiAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVf aW50IGlyYW5nZTo6dXBwZXJfYm91bmQoKSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2Nj L2djYy92YWx1ZS1yYW5nZS5oOjExNDM6MzIsCjEwNzksMTA4MGMxMjM5LDEyNDAKPCAvaG9tZS9h bGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY2MjoxOiB3YXJuaW5nOiBpbmxpbmluZyBm YWlsZWQgaW4gY2FsbCB0byDigJhpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSgp IG5vZXhjZXB0IFt3aXRoIHVuc2lnbmVkIGludCBOID0gMzsgYm9vbCBSRVNJWkFCTEUgPSB0cnVl XeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVd CjwgICA2NjIgfCBpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSAoKQotLS0KPiAv aG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY5NToxOiB3YXJuaW5nOiBpbmxp bmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJhpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9y YW5nZSgpIG5vZXhjZXB0IFt3aXRoIHVuc2lnbmVkIGludCBOID0gMzsgYm9vbCBSRVNJWkFCTEUg PSB0cnVlXeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdp bmxpbmVdCj4gICA2OTUgfCBpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSAoKQox MDg1LDEwODZjMTI0NSwxMjU1CjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2Uu aDo2NjI6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYaW50X3Jhbmdl PE4sIFJFU0laQUJMRT46On5pbnRfcmFuZ2UoKSBub2V4Y2VwdCBbd2l0aCB1bnNpZ25lZCBpbnQg TiA9IDM7IGJvb2wgUkVTSVpBQkxFID0gdHJ1ZV3igJk6IC0tcGFyYW0gaW5saW5lLXVuaXQtZ3Jv d3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo8ICAgNjYyIHwgaW50X3JhbmdlPE4sIFJFU0la QUJMRT46On5pbnRfcmFuZ2UgKCkKLS0tCj4gSW4gY29uc3RydWN0b3Ig4oCYZ2VuZXJpY193aWRl X2ludDxUPjo6Z2VuZXJpY193aWRlX2ludChjb25zdCBUJikgW3dpdGggVCA9IHdpOjpod2lfd2l0 aF9wcmVjOyBzdG9yYWdlID0gd2lkZV9pbnRfc3RvcmFnZV3igJksCj4gICAgIGlubGluZWQgZnJv bSDigJh2b2lkIGlyYW5nZV9iaXRtYXNrOjphZGp1c3RfcmFuZ2UoaXJhbmdlJikgY29uc3TigJkg YXQgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuY2M6MTkyOTo1NDoKPiAvaG9t ZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjExODQ6ODogd2FybmluZzogaW5saW5pbmcg ZmFpbGVkIGluIGNhbGwgdG8g4oCYd2lkZV9pbnRfc3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZShj b25zdCBUJikgW3dpdGggVCA9IHdpOjpod2lfd2l0aF9wcmVjXeKAmTogLS1wYXJhbSBpbmxpbmUt dW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDExODQgfCBpbmxpbmUgd2lk ZV9pbnRfc3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZSAoY29uc3QgVCAmeCkKPiAgICAgICB8ICAg ICAgICBefn5+fn5+fn5+fn5+fn5+Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2Mvd2lkZS1pbnQu aDo4NDc6MTU6IG5vdGU6IGNhbGxlZCBmcm9tIGhlcmUKPiAgIDg0NyB8ICAgOiBzdG9yYWdlICh4 KQo+ICAgICAgIHwgICAgICAgICAgICAgICBeCj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFs dWUtcmFuZ2UuaDogSW4gbWVtYmVyIGZ1bmN0aW9uIOKAmHZvaWQgaXJhbmdlX2JpdG1hc2s6OmFk anVzdF9yYW5nZShpcmFuZ2UmKSBjb25zdOKAmToKPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92 YWx1ZS1yYW5nZS5oOjY5NToxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDi gJhpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSgpIG5vZXhjZXB0IFt3aXRoIHVu c2lnbmVkIGludCBOID0gMzsgYm9vbCBSRVNJWkFCTEUgPSB0cnVlXeKAmTogLS1wYXJhbSBpbmxp bmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gICA2OTUgfCBpbnRfcmFu Z2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSAoKQoxMDkxLDEwOTJjMTI2MCwxMjYxCjwgL2hv bWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDo2NjI6MTogd2FybmluZzogaW5saW5p bmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYaW50X3JhbmdlPE4sIFJFU0laQUJMRT46On5pbnRfcmFu Z2UoKSBub2V4Y2VwdCBbd2l0aCB1bnNpZ25lZCBpbnQgTiA9IDM7IGJvb2wgUkVTSVpBQkxFID0g dHJ1ZV3igJk6IC0tcGFyYW0gaW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQgWy1XaW5s aW5lXQo8ICAgNjYyIHwgaW50X3JhbmdlPE4sIFJFU0laQUJMRT46On5pbnRfcmFuZ2UgKCkKLS0t Cj4gL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDo2OTU6MTogd2FybmluZzog aW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYaW50X3JhbmdlPE4sIFJFU0laQUJMRT46On5p bnRfcmFuZ2UoKSBub2V4Y2VwdCBbd2l0aCB1bnNpZ25lZCBpbnQgTiA9IDM7IGJvb2wgUkVTSVpB QkxFID0gdHJ1ZV3igJk6IC0tcGFyYW0gaW5saW5lLXVuaXQtZ3Jvd3RoIGxpbWl0IHJlYWNoZWQg Wy1XaW5saW5lXQo+ICAgNjk1IHwgaW50X3JhbmdlPE4sIFJFU0laQUJMRT46On5pbnRfcmFuZ2Ug KCkKMTA5NywxMDk4YzEyNjYsMTI2Nwo8IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3ZhbHVlLXJh bmdlLmg6NjYyOjE6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmGludF9y YW5nZTxOLCBSRVNJWkFCTEU+Ojp+aW50X3JhbmdlKCkgbm9leGNlcHQgW3dpdGggdW5zaWduZWQg aW50IE4gPSAzOyBib29sIFJFU0laQUJMRSA9IHRydWVd4oCZOiAtLXBhcmFtIGlubGluZS11bml0 LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPCAgIDY2MiB8IGludF9yYW5nZTxOLCBS RVNJWkFCTEU+Ojp+aW50X3JhbmdlICgpCi0tLQo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3Zh bHVlLXJhbmdlLmg6Njk1OjE6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKA mGludF9yYW5nZTxOLCBSRVNJWkFCTEU+Ojp+aW50X3JhbmdlKCkgbm9leGNlcHQgW3dpdGggdW5z aWduZWQgaW50IE4gPSAzOyBib29sIFJFU0laQUJMRSA9IHRydWVd4oCZOiAtLXBhcmFtIGlubGlu ZS11bml0LWdyb3d0aCBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAgIDY5NSB8IGludF9yYW5n ZTxOLCBSRVNJWkFCTEU+Ojp+aW50X3JhbmdlICgpCjExMzUsMTEzNmMxMzA0LDEzMDUKPCAvaG9t ZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExNTE6MTogd2FybmluZzogaW5saW5p bmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kKCnigJk6 IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVd CjwgIDExNTEgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kICgpCi0tLQo+IC9ob21lL2FsZHloL3Ny Yy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTE4NDoxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQg aW4gY2FsbCB0byDigJh2b2lkIGlyYW5nZTo6bm9ybWFsaXplX2tpbmQoKeKAmTogLS1wYXJhbSBt YXgtaW5saW5lLWluc25zLXNpbmdsZSBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAgMTE4NCB8 IGlyYW5nZTo6bm9ybWFsaXplX2tpbmQgKCkKMTE0MmMxMzExCjwgICAgIGlubGluZWQgZnJvbSDi gJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQg L2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDg5OjI1LAotLS0KPiAgICAg aW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6bG93ZXJfYm91bmQodW5zaWduZWQgaW50 KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMjI6 MjUsCjExNTEsMTE1MmMxMzIwLDEzMjEKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGly YW5nZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9z cmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMDA6MjksCjwgICAgIGlubGluZWQgZnJvbSDigJh3 aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3Jj L2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTEwOjMyLAotLS0KPiAgICAgaW5saW5lZCBmcm9tIOKA mHdpZGVfaW50IGlyYW5nZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAv aG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMzM6MjksCj4gICAgIGlubGlu ZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQgL2hv bWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTQzOjMyLAoxMTYxLDExNjJjMTMz MCwxMzMxCjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTUxOjE6IHdh cm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHZvaWQgaXJhbmdlOjpub3JtYWxp emVfa2luZCgp4oCZOiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlIGxpbWl0IHJlYWNo ZWQgWy1XaW5saW5lXQo8ICAxMTUxIHwgaXJhbmdlOjpub3JtYWxpemVfa2luZCAoKQotLS0KPiAv aG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExODQ6MTogd2FybmluZzogaW5s aW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kKCni gJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBbLVdpbmxp bmVdCj4gIDExODQgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kICgpCjExNjgsMTE2OWMxMzM3LDEz MzgKPCAgICAgaW5saW5lZCBmcm9tIOKAmHZvaWQgaXJhbmdlOjptYXliZV9yZXNpemUoaW50KeKA mSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY1NToyMiwKPCAgICAg aW5saW5lZCBmcm9tIOKAmHZvaWQgaXJhbmdlOjptYXliZV9yZXNpemUoaW50KeKAmSBhdCAvaG9t ZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY0NDoxLAotLS0KPiAgICAgaW5saW5l ZCBmcm9tIOKAmHZvaWQgaXJhbmdlOjptYXliZV9yZXNpemUoaW50KeKAmSBhdCAvaG9tZS9hbGR5 aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY4ODoyMiwKPiAgICAgaW5saW5lZCBmcm9tIOKA mHZvaWQgaXJhbmdlOjptYXliZV9yZXNpemUoaW50KeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2Nj L2djYy92YWx1ZS1yYW5nZS5oOjY3NzoxLAoxMzA4LDEzMDljMTQ3NywxNDc4CjwgL2hvbWUvYWxk eWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTUxOjE6IHdhcm5pbmc6IGlubGluaW5nIGZh aWxlZCBpbiBjYWxsIHRvIOKAmHZvaWQgaXJhbmdlOjpub3JtYWxpemVfa2luZCgp4oCZOiAtLXBh cmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlIGxpbWl0IHJlYWNoZWQgWy1XaW5saW5lXQo8ICAx MTUxIHwgaXJhbmdlOjpub3JtYWxpemVfa2luZCAoKQotLS0KPiAvaG9tZS9hbGR5aC9zcmMvZ2Nj L2djYy92YWx1ZS1yYW5nZS5oOjExODQ6MTogd2FybmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNh bGwgdG8g4oCYdm9pZCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kKCnigJk6IC0tcGFyYW0gbWF4LWlu bGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDExODQgfCBpcmFu Z2U6Om5vcm1hbGl6ZV9raW5kICgpCjEzMTQsMTMxNWMxNDgzLDE0ODQKPCAvaG9tZS9hbGR5aC9z cmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY2MjoxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQg aW4gY2FsbCB0byDigJhpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSgpIG5vZXhj ZXB0IFt3aXRoIHVuc2lnbmVkIGludCBOID0gMzsgYm9vbCBSRVNJWkFCTEUgPSB0cnVlXeKAmTog LS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCjwgICA2 NjIgfCBpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSAoKQotLS0KPiAvaG9tZS9h bGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjY5NToxOiB3YXJuaW5nOiBpbmxpbmluZyBm YWlsZWQgaW4gY2FsbCB0byDigJhpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSgp IG5vZXhjZXB0IFt3aXRoIHVuc2lnbmVkIGludCBOID0gMzsgYm9vbCBSRVNJWkFCTEUgPSB0cnVl XeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVd Cj4gICA2OTUgfCBpbnRfcmFuZ2U8TiwgUkVTSVpBQkxFPjo6fmludF9yYW5nZSAoKQoxNDE0LDE0 MTVjMTU4MywxNTg0CjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTUx OjE6IHdhcm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHZvaWQgaXJhbmdlOjpu b3JtYWxpemVfa2luZCgp4oCZOiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlIGxpbWl0 IHJlYWNoZWQgWy1XaW5saW5lXQo8ICAxMTUxIHwgaXJhbmdlOjpub3JtYWxpemVfa2luZCAoKQot LS0KPiAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExODQ6MTogd2Fybmlu ZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBpcmFuZ2U6Om5vcm1hbGl6ZV9r aW5kKCnigJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBb LVdpbmxpbmVdCj4gIDExODQgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kICgpCjE0MjgsMTQzMGMx NTk3LDE2MDEKPCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy93aWRlLWludC5oOjEyMTM6MTogd2Fy bmluZzogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYd2lkZV9pbnRfc3RvcmFnZSYgd2lk ZV9pbnRfc3RvcmFnZTo6b3BlcmF0b3I9KGNvbnN0IHdpZGVfaW50X3N0b3JhZ2UmKeKAmTogLS1w YXJhbSBpbmxpbmUtdW5pdC1ncm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCjwgIDEyMTMg fCB3aWRlX2ludF9zdG9yYWdlOjpvcGVyYXRvciA9IChjb25zdCB3aWRlX2ludF9zdG9yYWdlICZ4 KQo8ICAgICAgIHwgXn5+fn5+fn5+fn5+fn5+fgotLS0KPiBJbiBjb3B5IGNvbnN0cnVjdG9yIOKA mGdlbmVyaWNfd2lkZV9pbnQ8d2lkZV9pbnRfc3RvcmFnZT46OmdlbmVyaWNfd2lkZV9pbnQoY29u c3QgZ2VuZXJpY193aWRlX2ludDx3aWRlX2ludF9zdG9yYWdlPiYp4oCZLAo+ICAgICBpbmxpbmVk IGZyb20g4oCYYm9vbCBpcmFuZ2U6OmlyYW5nZV9zaW5nbGVfcGFpcl91bmlvbihjb25zdCBpcmFu Z2UmKeKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5jYzoxMzQzOjI1 Ogo+IC9ob21lL2FsZHloL3NyYy9nY2MvZ2NjL3dpZGUtaW50Lmg6MTE5Njo4OiB3YXJuaW5nOiBp bmxpbmluZyBmYWlsZWQgaW4gY2FsbCB0byDigJh3aWRlX2ludF9zdG9yYWdlOjp3aWRlX2ludF9z dG9yYWdlKGNvbnN0IHdpZGVfaW50X3N0b3JhZ2UmKeKAmTogLS1wYXJhbSBpbmxpbmUtdW5pdC1n cm93dGggbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVdCj4gIDExOTYgfCBpbmxpbmUgd2lkZV9pbnRf c3RvcmFnZTo6d2lkZV9pbnRfc3RvcmFnZSAoY29uc3Qgd2lkZV9pbnRfc3RvcmFnZSAmeCkKPiAg ICAgICB8ICAgICAgICBefn5+fn5+fn5+fn5+fn5+CjE1MTcsMTUxOGMxNjg4LDE2ODkKPCAvaG9t ZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExNTE6MTogd2FybmluZzogaW5saW5p bmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kKCnigJk6 IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBbLVdpbmxpbmVd CjwgIDExNTEgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kICgpCi0tLQo+IC9ob21lL2FsZHloL3Ny Yy9nY2MvZ2NjL3ZhbHVlLXJhbmdlLmg6MTE4NDoxOiB3YXJuaW5nOiBpbmxpbmluZyBmYWlsZWQg aW4gY2FsbCB0byDigJh2b2lkIGlyYW5nZTo6bm9ybWFsaXplX2tpbmQoKeKAmTogLS1wYXJhbSBt YXgtaW5saW5lLWluc25zLXNpbmdsZSBsaW1pdCByZWFjaGVkIFstV2lubGluZV0KPiAgMTE4NCB8 IGlyYW5nZTo6bm9ybWFsaXplX2tpbmQgKCkKMTUyNGMxNjk1CjwgICAgIGlubGluZWQgZnJvbSDi gJh3aWRlX2ludCBpcmFuZ2U6Omxvd2VyX2JvdW5kKHVuc2lnbmVkIGludCkgY29uc3TigJkgYXQg L2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMDg5OjI1LAotLS0KPiAgICAg aW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGlyYW5nZTo6bG93ZXJfYm91bmQodW5zaWduZWQgaW50 KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMjI6 MjUsCjE1MzMsMTUzNGMxNzA0LDE3MDUKPCAgICAgaW5saW5lZCBmcm9tIOKAmHdpZGVfaW50IGly YW5nZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAvaG9tZS9hbGR5aC9z cmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMDA6MjksCjwgICAgIGlubGluZWQgZnJvbSDigJh3 aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQgL2hvbWUvYWxkeWgvc3Jj L2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTEwOjMyLAotLS0KPiAgICAgaW5saW5lZCBmcm9tIOKA mHdpZGVfaW50IGlyYW5nZTo6dXBwZXJfYm91bmQodW5zaWduZWQgaW50KSBjb25zdOKAmSBhdCAv aG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExMzM6MjksCj4gICAgIGlubGlu ZWQgZnJvbSDigJh3aWRlX2ludCBpcmFuZ2U6OnVwcGVyX2JvdW5kKCkgY29uc3TigJkgYXQgL2hv bWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTQzOjMyLAoxNzcyLDE3NzNjMTk0 MywxOTQ0CjwgL2hvbWUvYWxkeWgvc3JjL2djYy9nY2MvdmFsdWUtcmFuZ2UuaDoxMTUxOjE6IHdh cm5pbmc6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIOKAmHZvaWQgaXJhbmdlOjpub3JtYWxp emVfa2luZCgp4oCZOiAtLXBhcmFtIG1heC1pbmxpbmUtaW5zbnMtc2luZ2xlIGxpbWl0IHJlYWNo ZWQgWy1XaW5saW5lXQo8ICAxMTUxIHwgaXJhbmdlOjpub3JtYWxpemVfa2luZCAoKQotLS0KPiAv aG9tZS9hbGR5aC9zcmMvZ2NjL2djYy92YWx1ZS1yYW5nZS5oOjExODQ6MTogd2FybmluZzogaW5s aW5pbmcgZmFpbGVkIGluIGNhbGwgdG8g4oCYdm9pZCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kKCni gJk6IC0tcGFyYW0gbWF4LWlubGluZS1pbnNucy1zaW5nbGUgbGltaXQgcmVhY2hlZCBbLVdpbmxp bmVdCj4gIDExODQgfCBpcmFuZ2U6Om5vcm1hbGl6ZV9raW5kICgpCg== --000000000000919e54061788e141--