From nobody Sun May 3 09:55:44 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 18F333A1027 for ; Sun, 3 May 2020 09:55:42 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.098 X-Spam-Level: X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ad84aT4tZp8T for ; Sun, 3 May 2020 09:55:40 -0700 (PDT) Received: from mail-vs1-xe2b.google.com (mail-vs1-xe2b.google.com [IPv6:2607:f8b0:4864:20::e2b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 611853A1019 for ; Sun, 3 May 2020 09:55:40 -0700 (PDT) Received: by mail-vs1-xe2b.google.com with SMTP id b5so9602101vsb.1 for ; Sun, 03 May 2020 09:55:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=bNfjAh5T3trXFHd30NStyBYVwICfwdmFVx5aP1kzm9E=; b=AbrKoMgpPKmbxd+CQP8STreKiDK2XCk17VgYI4Mlw113JFygkIHPP4P17Lx8GXfFQr zwoERj0wwIUpIdubSX2jsgAg517RI5lYhijB5t77UoAI7+sHxXwvi5JLSpELUfdsWKSo 89WYKbWFQfWVh5kCfm3HVaRdICLJB61lZE5FXqzlYopVe/xCMjDYPL1e8FHxrw36AZVP UYpFt0lAncwX6hiV0caTRCTRD464R32C/B8Kuq4DuhN8wZOaHJ1I0IxvmiGqRtlbzeC8 pEe0Z8wH8I/HhMWYqUXDyVYDawYXp9hceaDFDRImVKfo1tG6LH2OvPOhByhYd20K5/hm PUTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=bNfjAh5T3trXFHd30NStyBYVwICfwdmFVx5aP1kzm9E=; b=jVB7gwBSBfrI8SvihDyedwhuTWCmPxfxPydNYCDK1xNlpC2iG8hxSGhxJnC6M2lTXp y39QWEqwtNKjVuY/S7DZ47/7qfh33qJAYNclFdLr/HttbI0/fq549QwBHg6ojQNNNJK0 8Knfs9em8v5wCKvuKviLEzgoCCckFtMnhloMcWbHrDjj0sRO8qmgmrjXw7sgiGBlkICT +0CK8Pkx5DMdnISdI3ac/6VyN5cgXUgsPRClDob5cCIzFuj2cMhAPy30faz/zXNtvxxe 9FVVxcTNySKrK+VQHCOG+F6h38TTTXfHRx429pw3XQzDKf/qNNml2wABdv0+BVgxBtme beOQ== X-Gm-Message-State: AGi0PuY3mNtpYiS3oBIqis1r577rC+Z8W55ihT94ZoPToDs8pdQ4FYHy /kPT9Gm6/Zub0FeqlMBgw/I= X-Google-Smtp-Source: APiQypIDjydwMBN8IKKh+UlZk4SqlTsJRel+G/t4oiUUlOW3j37NlRTjTDdAETPFGfg4taoFRGSoHw== X-Received: by 2002:a67:fad8:: with SMTP id g24mr9894965vsq.204.1588524938356; Sun, 03 May 2020 09:55:38 -0700 (PDT) Received: from [192.168.30.27] ([181.174.102.214]) by smtp.gmail.com with ESMTPSA id k124sm3580370vkb.40.2020.05.03.09.55.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 03 May 2020 09:55:37 -0700 (PDT) From: Bruno Rijsman Message-Id: <576E7914-7364-4C1C-9668-57E0DB126CC6@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_E6C27DD1-C483-41A9-9E7C-249F363F3E56" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Date: Sun, 3 May 2020 10:55:13 -0600 In-Reply-To: <5D3DCA2D-F5E8-4B11-A27E-188ADFA043C8@gmail.com> Cc: Tommaso Caiazzi , "Pascal Thubert (pthubert)" , Mariano Scazzariello , Leonardo Alberro Zimmermann , Jeff Tantsura , rift@ietf.org, Bruno Rijsman To: Tony Przygienda References: <5e909790.1c69fb81.e9d94.cb7e@mx.google.com> <5D3DCA2D-F5E8-4B11-A27E-188ADFA043C8@gmail.com> X-Mailer: Apple Mail (2.3445.104.11) Archived-At: Subject: [Rift] Negative disaggregation implemented X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 May 2020 16:55:42 -0000 --Apple-Mail=_E6C27DD1-C483-41A9-9E7C-249F363F3E56 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Mariano Scazzariello and Tommaso Caiazzi informed me that they completed = the implementation negative disaggregation in the open source = RIFT-Python implementation (including new unit tests). I want to extend a heart-felt =E2=80=9Cthank you very much!=E2=80=9D to = Mariano and Tommaso for their excellent work and their generous = contribution of this important feature! =20 I wish them good luck in using the newly implemented code in their = further research on Kathar=C3=A1 = (https://www.youtube.com/watch?v=3DionEpKjv3Vk = ) and Megalos = (https://www.youtube.com/watch?v=3DXvInh-kujrA = ). I have merged all of their code into my master branch: = https://github.com/brunorijsman/rift-python = My next steps are: 1) Do additional testing off negative disaggregation and polish up the = code if needed. 2) Update the meta-topology generation tools to support east-west links = in multi-plane topologies. 3) Write a feature guide for negative disaggregation, similar to the = existing feature guide for positive disaggregation = (https://github.com/brunorijsman/rift-python/blob/master/doc/positive-disa= ggregation-feature-guide.md = ). 4) Write an article on disaggregation (positive or negative) and submit = for publication in the Internet Protocol Journal or similar. 5) Do interoperability testing with Juniper. =E2=80=94 Bruno --Apple-Mail=_E6C27DD1-C483-41A9-9E7C-249F363F3E56 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
Mariano Scazzariello and Tommaso Caiazzi informed me that = they completed the implementation negative disaggregation in the open = source RIFT-Python implementation (including new unit tests).

I want to extend a = heart-felt =E2=80=9Cthank you very much!=E2=80=9D to Mariano and Tommaso = for their excellent work and their generous contribution of this = important feature!  

I wish them good luck in using the newly implemented code in = their further research on Kathar=C3=A1 (https://www.youtube.com/watch?v=3DionEpKjv3Vk) and = Megalos (https://www.youtube.com/watch?v=3DXvInh-kujrA).

I have = merged all of their code into my master branch: https://github.com/brunorijsman/rift-python

My next steps = are:

1) Do = additional testing off negative disaggregation and polish up the code if = needed.

2) = Update the meta-topology generation tools to support east-west links in = multi-plane topologies.

3) Write a feature guide for negative disaggregation, similar = to the existing feature guide for positive disaggregation (https://github.com/brunorijsman/rift-python/blob/master/doc/pos= itive-disaggregation-feature-guide.md).

4) Write an article on disaggregation = (positive or negative) and submit for publication in the Internet = Protocol Journal or similar.

5) Do interoperability testing with = Juniper.

=E2=80=94= Bruno

= --Apple-Mail=_E6C27DD1-C483-41A9-9E7C-249F363F3E56-- From nobody Sun May 3 11:01:32 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 890843A1123 for ; Sun, 3 May 2020 11:01:30 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.098 X-Spam-Level: X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GYaFmnnU1UwC for ; Sun, 3 May 2020 11:01:29 -0700 (PDT) Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0C2F33A1122 for ; Sun, 3 May 2020 11:01:29 -0700 (PDT) Received: by mail-io1-xd2e.google.com with SMTP id w4so9981285ioc.6 for ; Sun, 03 May 2020 11:01:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=39T2vT9F33dbdk9rFtBTKxuVxBMa9q16YN8m0VI7xg0=; b=LfPa/Y22wNm1GQ03dNRe9I38Z2q70+A3QW67N1z4nNaF2MXjKoErM4cliLK4BMBxa7 qo3iByySIyYgffVcC3dmQvVTwX9BEoydgarG31BtsBmUu5zamhwyXwETJlBzdWcEyfbJ t5KcGxW/NDnPVGpkGzyH/UZ/Qj7liVayt+qjLS5UwjPRfq9M6TBs9aUgePe9g371CUf2 pvRQcMeVDsVGUWF+jvA7sUUWxhtADvk3J8Air8H9TeqGvp2+08VEwyjsqP4qv9lbYd28 AFs2+RdwtOzzWroha+Z18BdDo36WB6M4qPJt0vP1n/KMMaVDHWD+oUFoLJHdR4aTD+5I S/0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=39T2vT9F33dbdk9rFtBTKxuVxBMa9q16YN8m0VI7xg0=; b=JXZ81BuVZayHQ+baIZBUoMs4NEu/sOfhvVCA1+QwuYLiJALD4+c8bdDECNIsYYENaS mWf+sIwzh346C9gxK3yNgVK3rn0jDT5cLFbiHhyEDmB+ONXQmcsa4Dhyxeap79ne1g7C h1vr8A9MAVgSo6EaIOU3GBERbFhA/7Wal3ohaaYtHUXGkTtS9JaIW2D9GKqPVYgWxea9 4s6Oo6EVFDBe1EoRpV1sPEVuN2F9nKOuaX7Sxo2R8AXpKTVUpt7tYVuHCwALz2tCEyzj CsBLnfWk3X7OSJxo3OW60Ag+RR/gVSQbdg0aJ4Q4UMG773msg9KEyvMLLHwAQ7XdePAt GKkA== X-Gm-Message-State: AGi0PuaIWf/YhiNI/5zcufT11m5axwLXOGfBbq5tIzXL/Y0M/jE8Yfs0 6pQ+1SwV1OUeorU0Eid5InTxgLs0is4f7qCKVT3RDebM X-Google-Smtp-Source: APiQypKBhPfci0Y6fVvVox8+vdpRynUAjX1N0j11MiMu8dNux6H4vMJEZknoisIi8VIFhhQd9Cla9g9tktUHPRTmmhU= X-Received: by 2002:a05:6638:5ad:: with SMTP id b13mr11715613jar.113.1588528888265; Sun, 03 May 2020 11:01:28 -0700 (PDT) MIME-Version: 1.0 References: <5e909790.1c69fb81.e9d94.cb7e@mx.google.com> <5D3DCA2D-F5E8-4B11-A27E-188ADFA043C8@gmail.com> <576E7914-7364-4C1C-9668-57E0DB126CC6@gmail.com> In-Reply-To: <576E7914-7364-4C1C-9668-57E0DB126CC6@gmail.com> From: Tony Przygienda Date: Sun, 3 May 2020 11:00:10 -0700 Message-ID: To: Bruno Rijsman Cc: Tommaso Caiazzi , "Pascal Thubert (pthubert)" , Mariano Scazzariello , Leonardo Alberro Zimmermann , Jeff Tantsura , rift@ietf.org Content-Type: multipart/alternative; boundary="00000000000019ccd105a4c23434" Archived-At: Subject: Re: [Rift] Negative disaggregation implemented X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 May 2020 18:01:31 -0000 --00000000000019ccd105a4c23434 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable that was pretty fast ... wow ... -- tony On Sun, May 3, 2020 at 9:55 AM Bruno Rijsman wrote= : > Mariano Scazzariello and Tommaso Caiazzi informed me that they completed > the implementation negative disaggregation in the open source RIFT-Python > implementation (including new unit tests). > > I want to extend a heart-felt =E2=80=9Cthank you very much!=E2=80=9D to M= ariano and > Tommaso for their excellent work and their generous contribution of this > important feature! > > I wish them good luck in using the newly implemented code in their furthe= r > research on Kathar=C3=A1 (https://www.youtube.com/watch?v=3DionEpKjv3Vk) = and > Megalos (https://www.youtube.com/watch?v=3DXvInh-kujrA). > > I have merged all of their code into my master branch: > https://github.com/brunorijsman/rift-python > > My next steps are: > > 1) Do additional testing off negative disaggregation and polish up the > code if needed. > > 2) Update the meta-topology generation tools to support east-west links i= n > multi-plane topologies. > > 3) Write a feature guide for negative disaggregation, similar to the > existing feature guide for positive disaggregation ( > https://github.com/brunorijsman/rift-python/blob/master/doc/positive-disa= ggregation-feature-guide.md > ). > > 4) Write an article on disaggregation (positive or negative) and submit > for publication in the Internet Protocol Journal or similar. > > 5) Do interoperability testing with Juniper. > > =E2=80=94 Bruno > > --00000000000019ccd105a4c23434 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
that was pretty fast ... wow ...

<= /div>
-- tony

On Sun, May 3, 2020 at 9:55 AM Bruno Rijsman = <brunorijsman@gmail.com>= ; wrote:
Mariano Scazzariello and Tommaso Ca= iazzi informed me that they completed the implementation negative disaggreg= ation in the open source RIFT-Python implementation (including new unit tes= ts).

I want to extend a heart-felt =E2=80=9Cthank = you very much!=E2=80=9D to Mariano and Tommaso for their excellent work and= their generous contribution of this important feature! =C2=A0
I wish them good luck in using the newly implemented code in t= heir further research on Kathar=C3=A1 (https://www.youtube.com/watch?v=3Di= onEpKjv3Vk) and Megalos (https://www.youtube.com/watch?v=3DXvInh-kujrA= ).

I have merged all of their code into m= y master branch:=C2=A0https://github.com/brunorijsman/rift-python
<= div>
My next steps are:

1) Do additi= onal testing off negative disaggregation and polish up the code if needed.<= /div>

2) Update the meta-topology generation tools to su= pport east-west links in multi-plane topologies.

3= ) Write a feature guide for negative disaggregation, similar to the existin= g feature guide for positive disaggregation (https://github.com/brunorijsman/rift-python/blob/= master/doc/positive-disaggregation-feature-guide.md).

4) Write an article on disaggregation (positive or negative) and su= bmit for publication in the Internet Protocol Journal or similar.

5) Do interoperability testing with Juniper.

=
=E2=80=94 Bruno

--00000000000019ccd105a4c23434-- From nobody Sun May 3 12:38:01 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 77E1F3A11B0 for ; Sun, 3 May 2020 12:37:59 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.898 X-Spam-Level: X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=aelmans-eu.20150623.gappssmtp.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z_sxNNK3P7ZD for ; Sun, 3 May 2020 12:37:57 -0700 (PDT) Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 029383A11AE for ; Sun, 3 May 2020 12:37:56 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id h4so5963235wmb.4 for ; Sun, 03 May 2020 12:37:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aelmans-eu.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NdAzs2M7qUeifDOLGhx1YSH7k9rZMwIOW3CZO7JAFqU=; b=UYIHeEgBKeNVtljleUp8UgwgcsbiGX0Ka4UFNQi/zF3lPavHsmMACJh14/uYJJb9OB aAOD4FyiM4IwzKuLOrMgrkGkVTW0SL96C8nH6qt1kezgDvXnef+HeTsKel/80QZJuPi9 y+aI/NirmxluePGQ4enl+LLgc4lxD1ltQ2bA36zqo35XUTuke9GqjSycUNFbPj1lbw/r oJ7bObYwQzs3Jc7PD4YmRlxU2YLyoW5MDqrZwRz/qWyBLfR9VzTevp/xa4BHbjNZQvf/ HAylTdRoqMrT0OwUeYsny3AROVY33haZV7Wgyh2FoZscSD4DaNkJ1wXEgIufYKnr5j/t H6Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NdAzs2M7qUeifDOLGhx1YSH7k9rZMwIOW3CZO7JAFqU=; b=tLqRTRb7yUdvI/dMDgaWgcQKbwLWKqj943jG0VpJBaIRgGVqmuJoiDsBnDO70uHCk2 MX4MCOE4exedbB/BubhAXXRc83pIzcCgAr9ysvlrRyhqAgSlddRndzb0AGDGnngIQsbM N6X1XNMJ8QZ+9cXPwyXMQ5iLPFFFBqDwog+jTD4CQ4Ut1je3sX9Ge3ObD8wEPJozqHOf FETgE10cc54xDwRw5rd/7Lvau2Virajz7R6ywJFUClx9IJFiHQ6svfhxxUaBEryhDLWN Bv+zrQnrN8utKg/F4/wPVx2btD5VFHMv6u2HpchhPdzHOEiL6Bd0qElN7FQ6O5DunsPQ uvvg== X-Gm-Message-State: AGi0PuYGai/eqPtEYnGwRC/9p5TpxY/FYSKQZjrZ0foZA3mFp+U/PCPx Uig+01MWteSEbjA1HDBe9du0/zbb1s+SkN6EaUJ5Xw== X-Google-Smtp-Source: APiQypJbrNXW9MUK0Qaj8Ve4YiCWGLhLVmX8ZGmLuVCbxjGcz7fvKrSRAlVrqFVZboHa9KoGvrXQSz4BEJoagVpRk6A= X-Received: by 2002:a7b:cf27:: with SMTP id m7mr11360458wmg.183.1588534674818; Sun, 03 May 2020 12:37:54 -0700 (PDT) MIME-Version: 1.0 References: <158590404009.16532.17194535668913235482@ietfa.amsl.com> In-Reply-To: <158590404009.16532.17194535668913235482@ietfa.amsl.com> From: Melchior Aelmans Date: Sun, 3 May 2020 21:37:43 +0200 Message-ID: To: draft-wei-rift-applicability@ietf.org Cc: rift@ietf.org Content-Type: multipart/alternative; boundary="00000000000001992605a4c38db7" Archived-At: Subject: Re: [Rift] I-D Action: draft-ietf-rift-applicability-01.txt X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 May 2020 19:37:59 -0000 --00000000000001992605a4c38db7 Content-Type: text/plain; charset="UTF-8" Dear authors, I've spotted a small typo in section 4.6. Positive vs. Negative Disaggregation: Disaggregation is the procedure whereby [RIFT ] advertises more a specific route Southwards as an exception to the aggregated fabric-default North. I think you are trying to say "advertises a more sepcific". Cheers, Melchior On Fri, Apr 3, 2020 at 10:54 AM wrote: > > A New Internet-Draft is available from the on-line Internet-Drafts > directories. > This draft is a work item of the Routing In Fat Trees WG of the IETF. > > Title : RIFT Applicability > Authors : Yuehua Wei > Zheng Zhang > Dmitry Afanasiev > Tom Verhaeg > Jaroslaw Kowalczyk > Pascal Thubert > Filename : draft-ietf-rift-applicability-01.txt > Pages : 29 > Date : 2020-04-03 > > Abstract: > This document discusses the properties, applicability and operational > considerations of RIFT in different network scenarios. It intends to > provide a rough guide how RIFT can be deployed to simplify routing > operations in Clos topologies and their variations. > > > The IETF datatracker status page for this draft is: > https://datatracker.ietf.org/doc/draft-ietf-rift-applicability/ > > There are also htmlized versions available at: > https://tools.ietf.org/html/draft-ietf-rift-applicability-01 > https://datatracker.ietf.org/doc/html/draft-ietf-rift-applicability-01 > > A diff from the previous version is available at: > https://www.ietf.org/rfcdiff?url2=draft-ietf-rift-applicability-01 > > > Please note that it may take a couple of minutes from the time of > submission > until the htmlized version and diff are available at tools.ietf.org. > > Internet-Drafts are also available by anonymous FTP at: > ftp://ftp.ietf.org/internet-drafts/ > > > _______________________________________________ > RIFT mailing list > RIFT@ietf.org > https://www.ietf.org/mailman/listinfo/rift > --00000000000001992605a4c38db7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Dear authors,

I've spott= ed a small typo in section 4.6. Positive vs. Negative Disaggregation:
=

Dis=
aggregation is the procedure whereby [RIFT] advertises more a specific route Southwards as=
 an exception to the aggregated fabric-default North.

I think you are trying to say &qu= ot;advertises a more sepcific".

Cheers,
Melchior

On Fri, Apr 3, 2020 at 10:54 AM <internet-drafts@ietf= .org> wrote:

A New Internet-Draft is available from the on-line Internet-Drafts director= ies.
This draft is a work item of the Routing In Fat Trees WG of the IETF.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Title=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:= RIFT Applicability
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Authors=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0: Yueh= ua Wei
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Zheng Zhang
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Dmitry Afanasiev
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Tom Verhaeg
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Jaroslaw Kowalczyk
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Pascal Thubert
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Filename=C2=A0 =C2=A0 =C2=A0 =C2=A0 : draft-iet= f-rift-applicability-01.txt
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Pages=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:= 29
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Date=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 := 2020-04-03

Abstract:
=C2=A0 =C2=A0This document discusses the properties, applicability and oper= ational
=C2=A0 =C2=A0considerations of RIFT in different network scenarios.=C2=A0 I= t intends to
=C2=A0 =C2=A0provide a rough guide how RIFT can be deployed to simplify rou= ting
=C2=A0 =C2=A0operations in Clos topologies and their variations.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draf= t-ietf-rift-applicability/

There are also htmlized versions available at:
https://tools.ietf.org/html/draft-ietf-r= ift-applicability-01
https://datatracker.ietf.org/d= oc/html/draft-ietf-rift-applicability-01

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url= 2=3Ddraft-ietf-rift-applicability-01


Please note that it may take a couple of minutes from the time of submissio= n
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift
--00000000000001992605a4c38db7-- From nobody Sun May 3 13:00:01 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B8DAC3A11B3 for ; Sun, 3 May 2020 13:00:00 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.898 X-Spam-Level: X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=aelmans-eu.20150623.gappssmtp.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MQRy2AE3mkW0 for ; Sun, 3 May 2020 12:59:57 -0700 (PDT) Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9F6C53A040B for ; Sun, 3 May 2020 12:59:57 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id v4so13991816wme.1 for ; Sun, 03 May 2020 12:59:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aelmans-eu.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mLw6LmjxnrAnb55p3xwjD1gnsmXbCbj7ZUPu6FFKycY=; b=sc9NL1txluEbSTY6/S8Hoolp1BMIRLt//sPHkOjDE2AnXmi1F4imD4HBKEP3q9EOK+ 7E9MZshQiBBUCqztrdOvm8d51o53FClkHzvVCSLItPgRI9gFUepjabYMFWpOCgt139XB DdmCLGmRU9fmo+pnu6vct2j+bUQWJXhY2gz7aI3rZ8rJJXRaa2Pi/CqgqmkibZfFCC1W w/4ZsDAb9e6HYUXd4vYuMuMp7oTFMuWWXLIgFXcbSLZ2uCItrPRxVnkVnvMkAi+XUaEv kw4QBi7/LzVFFNQSN1JSk37NoGwP8NApD/iKmBye4cNpOJ1rcAQ7qEcqPGECyynUHa/L 2Bog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mLw6LmjxnrAnb55p3xwjD1gnsmXbCbj7ZUPu6FFKycY=; b=kuuITzCSns+khmCKq3V5tk4eo9zxinT+hHi+++otB668hCPpb9Yfzc3QiJ1tU7qShP 3zs33LdQLbpXjWtjyaiq15a+ODYdsv2C82c9FBUvJhWvDnyb9CpEzFmYM0+V2X5qeUm+ AlaiTeJr7z7DvOECcDTO7kl8U9m8vFTffdyjcpjqERcvd5PNuYqbxRg2jkS7sAdBiHFR UOgXCP49Z3W7CvKmrDdiYp0KwbSZSIDQWPZ7ju4Dmv2yPra25YYq3SKdMDHm9klMeeIQ sida01Ce1Fzc4e1msqEmGX2tRC4mW7CgL/Z9+HSaQvKn3mofg6/NpKqpAIpBd4x99iSt jtYg== X-Gm-Message-State: AGi0PuZd7ErUOTsE4u0+1x6LsUJeCZQIKovIgyvWNnpg5TJkUw4nb7lp gsy68Ds5tQ8oXZtFe6aw+0sk9sI3O6o1MmEa2HAqOQ== X-Google-Smtp-Source: APiQypLrmTqqnVKoJDJ4VEfe3qEvJmXAjhA0S6ZpdUpc0nlRiKwxSiAYfZkXtKqKtghXPVRgHicjTBjvO+6tzeYU7NE= X-Received: by 2002:a1c:5446:: with SMTP id p6mr10654043wmi.172.1588535995974; Sun, 03 May 2020 12:59:55 -0700 (PDT) MIME-Version: 1.0 References: <158590404009.16532.17194535668913235482@ietfa.amsl.com> In-Reply-To: From: Melchior Aelmans Date: Sun, 3 May 2020 21:59:45 +0200 Message-ID: To: draft-wei-rift-applicability@ietf.org Cc: rift@ietf.org Content-Type: multipart/alternative; boundary="000000000000c0daa205a4c3dbc8" Archived-At: Subject: Re: [Rift] I-D Action: draft-ietf-rift-applicability-01.txt X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 May 2020 20:00:01 -0000 --000000000000c0daa205a4c3dbc8 Content-Type: text/plain; charset="UTF-8" Hi, spotted another one; "it results thet the use of", should be "it results that the use of". Also in section 4.6 Cheers, Melchior On Sun, May 3, 2020 at 9:37 PM Melchior Aelmans wrote: > Dear authors, > > I've spotted a small typo in section 4.6. Positive vs. Negative > Disaggregation: > > Disaggregation is the procedure whereby [RIFT ] advertises more a specific route Southwards as an exception to the aggregated fabric-default North. > > > I think you are trying to say "advertises a more sepcific". > > Cheers, > Melchior > > On Fri, Apr 3, 2020 at 10:54 AM wrote: > >> >> A New Internet-Draft is available from the on-line Internet-Drafts >> directories. >> This draft is a work item of the Routing In Fat Trees WG of the IETF. >> >> Title : RIFT Applicability >> Authors : Yuehua Wei >> Zheng Zhang >> Dmitry Afanasiev >> Tom Verhaeg >> Jaroslaw Kowalczyk >> Pascal Thubert >> Filename : draft-ietf-rift-applicability-01.txt >> Pages : 29 >> Date : 2020-04-03 >> >> Abstract: >> This document discusses the properties, applicability and operational >> considerations of RIFT in different network scenarios. It intends to >> provide a rough guide how RIFT can be deployed to simplify routing >> operations in Clos topologies and their variations. >> >> >> The IETF datatracker status page for this draft is: >> https://datatracker.ietf.org/doc/draft-ietf-rift-applicability/ >> >> There are also htmlized versions available at: >> https://tools.ietf.org/html/draft-ietf-rift-applicability-01 >> https://datatracker.ietf.org/doc/html/draft-ietf-rift-applicability-01 >> >> A diff from the previous version is available at: >> https://www.ietf.org/rfcdiff?url2=draft-ietf-rift-applicability-01 >> >> >> Please note that it may take a couple of minutes from the time of >> submission >> until the htmlized version and diff are available at tools.ietf.org. >> >> Internet-Drafts are also available by anonymous FTP at: >> ftp://ftp.ietf.org/internet-drafts/ >> >> >> _______________________________________________ >> RIFT mailing list >> RIFT@ietf.org >> https://www.ietf.org/mailman/listinfo/rift >> > --000000000000c0daa205a4c3dbc8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi, spotted=C2=A0another one; "it results thet t= he use of", should be "it results that the use of". Also in = section 4.6

Cheers,
Melchior

On Sun, May = 3, 2020 at 9:37 PM Melchior Aelmans <melchior@aelmans.eu> wrote:
Dear authors,

I've spotted a small typo in section 4.6. Positive vs. Negativ= e Disaggregation:

Disa=
ggregation is the procedure whereby [RIFT] advertises more a specific ro=
ute Southwards as an exception to the aggregated fabric-default North.

I think you are trying to say "adve= rtises a more sepcific".
Cheers,
Me= lchior

On Fri, Apr 3, 2020 at 10:54 AM <internet-drafts@ietf.org&= gt; wrote:

A New Internet-Draft is available from the on-line Internet-Drafts director= ies.
This draft is a work item of the Routing In Fat Trees WG of the IETF.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Title=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:= RIFT Applicability
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Authors=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0: Yueh= ua Wei
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Zheng Zhang
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Dmitry Afanasiev
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Tom Verhaeg
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Jaroslaw Kowalczyk
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Pascal Thubert
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Filename=C2=A0 =C2=A0 =C2=A0 =C2=A0 : draft-iet= f-rift-applicability-01.txt
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Pages=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:= 29
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Date=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 := 2020-04-03

Abstract:
=C2=A0 =C2=A0This document discusses the properties, applicability and oper= ational
=C2=A0 =C2=A0considerations of RIFT in different network scenarios.=C2=A0 I= t intends to
=C2=A0 =C2=A0provide a rough guide how RIFT can be deployed to simplify rou= ting
=C2=A0 =C2=A0operations in Clos topologies and their variations.


The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draf= t-ietf-rift-applicability/

There are also htmlized versions available at:
https://tools.ietf.org/html/draft-ietf-r= ift-applicability-01
https://datatracker.ietf.org/d= oc/html/draft-ietf-rift-applicability-01

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url= 2=3Ddraft-ietf-rift-applicability-01


Please note that it may take a couple of minutes from the time of submissio= n
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift
--000000000000c0daa205a4c3dbc8-- From nobody Mon May 4 10:10:38 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B4C143A0DB8 for ; Mon, 4 May 2020 10:10:36 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.005 X-Spam-Level: X-Spam-Status: No, score=-1.005 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_IMAGE_ONLY_16=1.092, HTML_IMAGE_RATIO_02=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4cIXIgOUsl5e for ; Mon, 4 May 2020 10:10:35 -0700 (PDT) Received: from mail-vk1-xa2c.google.com (mail-vk1-xa2c.google.com [IPv6:2607:f8b0:4864:20::a2c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BDA383A0DB4 for ; Mon, 4 May 2020 10:10:34 -0700 (PDT) Received: by mail-vk1-xa2c.google.com with SMTP id j1so4827349vkc.2 for ; Mon, 04 May 2020 10:10:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=QF05eLwE3atUrBBdLB4Wm8uidveK9ZzqW37bDTMr4Ao=; b=C+TZ7I/YIXh6HTG69OcsFlYQkqjPPzVzZPOJGQR3EWPbgOx+z/xLpozOQ+kjFA2axY DpuLhoXERyfbM3VfJW7KTMdCVjLYEzyeD/Qrc92NRvwUWIVthJN/x+Am+wy+wiNms7/V Uf+yJhOAzYfZeYKshFIgebj36Q7oavotvPquJw1Q7LFC+QbKiwAnCbKpuAXUaYaf34MW GV+YoN2fSN2YcnrZ8ikv4rTKpRGyWgEkrcMIMRfwehuPEJSkW1h5E77e+smH1oqOMOWo LOT/DgBb32EMFjybf+7bxon+wdN8lFrgvPcHUZpJOtEXxQLJ/ao5qUpVjHc3tgj87h/5 NQ+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=QF05eLwE3atUrBBdLB4Wm8uidveK9ZzqW37bDTMr4Ao=; b=bq1Iv3WtwagkWaMwptR4onWrJj/PSe2DFMaMx1FRYY6btJOKY9HZ0JkwDxcjBuY9lF AHvRIyqFH+8ySLBDYL8bajsQYJUf5J3cztYnploC/vTGHZHd8MwSVu7mdAdEt6rMRqCb 6gXzsSteNXo7asVuoV4gZpFQJh3YGmS++3oj4GB5IA6Gm/ElkLfZoROteH88ecCHaPYL Rv7kT6AyfvUKK7nShFkz6IKDyT4l1xukCfxY88m3eVNZHVLk/okIPIxKhELO9k9OFf2M Z3nCcAKitkJiFIr8zinqb6mdy2miIlNAA9UziE4zEB0vY2RMrCt86YpyeDBYt7/rjzPC WhVQ== X-Gm-Message-State: AGi0PuZ4jZiviKjNTQ6AgBVpdNz2sD6zIS6VIQTs4O3xoZvyJ7b8WRG+ eJgyah06NtMEH6sKiK+vX/Q= X-Google-Smtp-Source: APiQypKGRUbbowej0B496Vba6hoXfroOKVpYqzRWZILDaGA2rY3IOGYCYZgli24CDhdfhT1Ep8qDqA== X-Received: by 2002:a1f:a454:: with SMTP id n81mr358105vke.6.1588612233578; Mon, 04 May 2020 10:10:33 -0700 (PDT) Received: from [192.168.30.27] ([181.174.102.214]) by smtp.gmail.com with ESMTPSA id x6sm5110765vkx.1.2020.05.04.10.10.31 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 May 2020 10:10:32 -0700 (PDT) From: Bruno Rijsman Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_2D242525-738E-4F32-ABB6-9949F4C8B01C" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Date: Mon, 4 May 2020 11:10:05 -0600 In-Reply-To: <576E7914-7364-4C1C-9668-57E0DB126CC6@gmail.com> Cc: rift@ietf.org To: Tony Przygienda , Tommaso Caiazzi , "Pascal Thubert (pthubert)" , Mariano Scazzariello , Leonardo Alberro Zimmermann , Jeff Tantsura References: <5e909790.1c69fb81.e9d94.cb7e@mx.google.com> <5D3DCA2D-F5E8-4B11-A27E-188ADFA043C8@gmail.com> <576E7914-7364-4C1C-9668-57E0DB126CC6@gmail.com> X-Mailer: Apple Mail (2.3445.104.11) Archived-At: Subject: Re: [Rift] Negative disaggregation implemented X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 May 2020 17:10:37 -0000 --Apple-Mail=_2D242525-738E-4F32-ABB6-9949F4C8B01C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On May 3, 2020, at 10:55 AM, Bruno Rijsman = wrote: >=20 > 2) Update the meta-topology generation tools to support east-west = links in multi-plane topologies. >=20 The topology generator now supports generating inter-plane east-west = links, see following example diagram: --Apple-Mail=_2D242525-738E-4F32-ABB6-9949F4C8B01C Content-Type: multipart/related; type="text/html"; boundary="Apple-Mail=_444F3B05-C996-4F75-AA3B-3B276416663B" --Apple-Mail=_444F3B05-C996-4F75-AA3B-3B276416663B Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii

On May 3, 2020, at 10:55 AM, Bruno Rijsman <brunorijsman@gmail.com> wrote:

2) Update the = meta-topology generation tools to support east-west links in multi-plane = topologies.


The topology generator now supports = generating inter-plane east-west links, see following example = diagram:

= --Apple-Mail=_444F3B05-C996-4F75-AA3B-3B276416663B Content-Transfer-Encoding: base64 Content-Disposition: inline; filename=PastedGraphic-1.png Content-Type: image/png; x-unix-mode=0666; name="PastedGraphic-1.png" Content-Id: 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 adhru7dmH2NfWSPSOLOxt0nU1Nmc0tyxf9z+1ha/ln1/jPxj2wHLA9UHDQ8uO0Q9VHJo4HDR4b4j 0iM9RzOPPmyd1nr72MRjV45PON52IvLE6ZNhJ4+dYp86fNr/9IEzvmf2n/U+23TO81zjeY/z+y54 XNjX5tnWeNHrYnO7T3tLx9iOQ5cCLx29HHL55BXulXNXo692XEu8duP65OudNwQ3nt7MufniVsGt /tvz7xDulN3VvVtxz/Re7b8c/7Wr07Pz4P2Q++cfxD+4/ZD/8Nkj+aOPXSWP6Y8rnlg8qXvq9vRA d1h3+5+T/ux6Jn3W31P6l95fNc8dnu/9O+jv870Te7teyF4MvFzyyvjVttdjXrf2xfbde5P7pv9t 2Tvjd9vfe78/9SH5w5P+GR9JHys/OX5q+Rz5+c5A7sCAlCfjqbYCGBxoRgYAL7cBQE+Be4d2AKiT 1Oc8lSDqs6kKgf+E1WdBlXgCsC0IgMT5AETBPcoGOGwhpsG7cqueEARQd/ehoRF5hrubmosGTzyE dwMDr8wAILUA8Ek2MNC/fmDg0xaY7E0AjuSpz5dKIcKzwc/2SnThjlEJ+Eb+DeXJfvvFjTSEAAAA CXBIWXMAABYlAAAWJQFJUiTwAAABnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0 YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRh eC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4 bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlm OlBpeGVsWERpbWVuc2lvbj4yMjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4 aWY6UGl4ZWxZRGltZW5zaW9uPjkxMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRm OkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrVzhEPAAAAHGlET1QAAAAC AAAAAAAAAcgAAAAoAAAByAAAAcgAAcimFjVrCwAAQABJREFUeAHsnQnYHUWVvysgm2wqIBmQgAiI IBIQRDZZdCRIwqKIEzYBA7KJElASBIIZlmHHDRQIMLJDQDEJAoLIpsIAooBCdESE5PkLBlkEAyr8 Oc3UTX99+9Zdvu7q033efp7k3tvV3VXnPae+W7fOr6tHvP7G5tggAAEIQAACEIAABCAAAQhAAAIQ gAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCCglMAIBC5KPUOzIAABCEAAAhCAAAQgAAEIQAACEIAA BCAAAQhAAAIQgAAEIAABCEAAAhCAAAQSAghcCAQIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCA AAQgAAEIQAACEIAABCAAAdUEELiodg+NgwAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQ gAAEIAABCEAAAhBA4EIMQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAA AQioJoDARbV7aBwEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAIX YgACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAQDUBBC6q3UPjIAAB CEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQQuBADEIAABCAAAQhAAAIQ gAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAKqCSBwUe0eGgcBCEAAAhCAAAQgAAEIQAAC EIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQggMCFGIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQg AAEIQAACEIAABCAAAQhAAAIQUE0AgYtq99A4CEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAE IAABCEAAAhCAAAQgAAEELsQABCAAAQhAAAIQgECQwEMPPeTmzZsXPIZCCEAAAhCAAAQgAAEIQAAC EIAABCAAgfgEFltsMbfpppvGr5gaIQABCEAAAhUQQOBSAXSqhAAEIAABCEAAAnUiMHbsWDdr1qw6 NZm2QgACEIAABCAAAQhAAAIQgAAEIAABEwT+7d/+zc2dO9eErRgJAQhAAAIQQOBCDEAAAhCAAAQg AAEIBAl4gcsRRxzhllpqqeCxFEIAAhCAAAQgAAEIQAACEIAABCAAAQjEIXDGGWe4pZdeGoFLHNzU AgEIQAACCgggcFHgBJoAAQhAAAIQgAAENBPwAhe5G0juCmKDAAQgAAEIQAACEIAABCAAAQhAAAIQ qJ6AzNOMGDECgUv1rqAFEIAABCAQiQACl0igqQYCEIAABCAAAQjUlQACl7p6jnZDAAIQgAAEIAAB CEAAAhCAAAQg0GQCCFya7F1sgwAEIACBPAIIXPKosA8CEIAABCAAAQhAoEUAgUsLBW8gAAEIQAAC EIAABCAAAQhAAAIQgIAaAghc1LiChkAAAhCAQCQCCFwigaYaCEAAAhCAAAQgUFcCCFzq6jnaDQEI QAACEIAABCAAAQhAAAIQgECTCSBwabJ3sQ0CEIAABPIIIHDJo8I+CEAAAhCAAAQgAIEWAQQuLRS8 gQAEIAABCEAAAhCAAAQgAAEIQAACagggcFHjChoCAQhAAAKRCCBwiQSaaiAAAQhAAAIQgEBdCSBw qavnaDcEIAABCEAAAhCAAAQgAAEIQAACTSaAwKXJ3sU2CEAAAhDII4DAJY8K+yAAAQhAAAIQgAAE WgQQuLRQ8AYCEIAABCAAAQhAAAIQgAAEIAABCKghgMBFjStoCAQgAAEIRCKAwCUSaKqBAAQgAAEI QAACdSWAwKWunqPdEIAABCAAAQhAAAIQgAAEIAABCDSZAAKXJnsX2yAAAQhAII8AApc8KuyDAAQg AAEIQAACEGgRQODSQsEbCEAAAhCAAAQgAAEIQAACEIAABCCghgACFzWuoCEQgAAEIBCJAAKXSKCp BgIQgAAEIAABCNSVAAKXunqOdkMAAhCAAAQgAAEIQAACEIAABCDQZAIIXJrsXWyDAAQgAIE8Aghc 8qiwDwIQgAAEIAABCECgRQCBSwsFbyAAAQhAAAIQgAAEIAABCEAAAhCAgBoCCFzUuIKGQAACEIBA JAIIXCKBphoIQAACEIAABCBQVwIIXOrqOdoNAQhAAAIQgAAEIAABCEAAAhCAQJMJIHBpsnexDQIQ gAAE8gggcMmjwj4IQAACEIAABCAAgRYBawIXb28LAG8gAAEIQAACECiNwPHHH++mTJlS2vW1XHjG jBluxx131NIc2gEBCEAAAhBoNAERfcydO7fRNnrjELh4ErxCAAIQgIAVAghcrHgaOyEAAQhAAAIQ gMCABLzgQyaHZOKk6Zu3t+l2Yh8EIAABCEBAAwEELhq8QBsgAAEIQAACzSKAwKVZ/sQaCEAAAhCA QJoAApc0Dd5DAAIQgAAEIAABCLQR8IIPawIXK/a2OZwdEIAABCAAgQgE/Iom1gQuslqN2MwGAQhA AAIQgEA5BKytaGLN3nKihqtCAAIQgECdCCBwqZO3aCsEIAABCEAAAhCogAAClwqgUyUEIAABCECg 4QQQuDTcwZgHAQhAAAIQqIiANcGHNXsrCiuqhQAEIAABRQQQuChyBk2BAAQgAAEIQAACGgkgcNHo FdoEAQhAAAIQqDcBBC719h+thwAEIAABCGglYE3wYc1erXFHuyAAAQhAIB4BBC7xWFMTBCAAAQhA AAIQqCUBBC61dBuNhgAEIAABCKgmgMBFtXtoHAQgAAEIQKC2BKwJPqzZW9vApOEQgAAEIFAYAQQu haHkQhCAAAQgAAEIQKCZBBC4NNOvWAUBCEAAAhCokgAClyrpUzcEIAABCECguQSsCT6s2dvcyMUy CEAAAhDolQACl15JcRwEIAABCEAAAhAwSgCBi1HHYzYEIAABCECgRAIIXEqEy6UhAAEIQAAChglY E3xYs9dwaGM6BCAAAQj8HwEELoQCBCAAAQhAAAIQgECQAAKXIB4KIQABCEAAAhAYgAAClwGgcQoE IAABCEAAAl0JWBN8WLO3awBwAAQgAAEINJ4AApfGuxgDIQABCEAAAhCAwPAIIHAZHj/OhgAEIAAB CECgnQACl3Ym7IEABCAAAQhAYPgErAk+rNk7/AjhChCAAAQgUHcCCFzq7kHaDwEIQAACEIAABEom gMClZMBcHgIQgAAEIGCQAAIXg07HZAhAAAIQgEAEAtYEH9bsjRBCVAEBCEAAAsoJIHBR7iCaBwEI QAACEIAABKomgMClag9QPwQgAAEIQKB5BBC4NM+nWAQBCEAAAhDQQMCa4MOavRpijDZAAAIQgEC1 BBC4VMuf2iEAAQhAAAIQgIB6Aghc1LuIBkIAAhCAAARqRwCBS+1cRoMhAAEIQAACtSBgTfBhzd5a BCGNhAAEIACBUgkgcCkVLxeHAAQgAAEIQAAC9SeAwKX+PsQCCEAAAhCAgDYCCFy0eYT2QAACEIAA BJpBwJrgw5q9zYhSrIAABCAAgeEQQOAyHHqcCwEIQAACEIAABAwQQOBiwMmYCAEIQAACEIhMAIFL ZOBUBwEIQAACEDBCwJrgw5q9RsIYMyEAAQhAIEAAgUsADkUQgAAEIAABCEAAAs4hcCEKIAABCEAA AhAomgACl6KJcj0IQAACEIAABISANcGHNXuJcghAAAIQgAACF2IAAhCAAAQgAAEIQCBIAIFLEA+F EIAABCAAAQgMQACBywDQOAUCEIAABCAAga4ErAk+rNnbNQA4AAIQgAAEGk8AgUvjXYyBEIAABCAA AQhAYHgEELgMjx9nQwACEIAABCDQTgCBSzsT9kAAAhCAAAQgMHwC1gQf1uwdfoRwBQhAAAIQqDsB BC519yDthwAEIAABCEAAAiUTQOBSMmAuDwEIQAACEDBIAIGLQadjMgQgAAEIQCACAWuCD2v2Rggh qoAABCAAAeUEELgodxDNgwAEIAABCEAAAlUTQOBStQeoHwIQgAAEINA8AghcmudTLIIABCAAAQho IGBN8GHNXg0xRhsgAAEIQKBaAghcquVP7RCAAAQgAAEIQEA9AQQu6l1EAyEAAQhAAAK1I4DApXYu o8EQgAAEIACBWhCwJviwZm8tgpBGQgACEIBAqQQQuJSKl4tDAAIQgAAEIACB+hNA4FJ/H2IBBCAA AQhAQBsBBC7aPEJ7IAABCEAAAs0gYE3wYc3eZkQpVkAAAhCAwHAIIHAZDj3OhQAEIAABCEAAAgYI IHAx4GRMhAAEIAABCEQmgMAlMnCqgwAEIAABCBghYE3wYc1eI2GMmRCAAAQgECCAwCUAhyIIQAAC EIAABCAAAecQuBAFEIAABCAAAQgUTQCBS9FEuR4EIAABCEAAAkLAmuDDmr1EOQQgAAEIQACBCzEA AQhAAAIQgAAEIBAkgMAliIdCCEAAAhCAAAQGIIDAZQBonAIBCEAAAhCAQFcC1gQf1uztGgAcAAEI QAACjSeAwKXxLsZACEAAAhCAAAQgMDwCCFyGx4+zIQABCEAAAhBoJ4DApZ0JeyAAAQhAAAIQGD4B a4IPa/YOP0K4AgQgAAEI1J0AApe6e5D2QwACEIAABCAAgZIJIHApGTCXhwAEIAABCBgkgMDFoNMx GQIQgAAEIBCBgDXBhzV7I4QQVUAAAhCAgHICCFyUO4jmQQACEIAABCAAgaoJIHCp2gPUDwEIQAAC EGgeAQQuzfMpFkEAAhCAAAQ0ELAm+LBmr4YYow0QgAAEIFAtAQQu1fKndghAAAIQgAAEIKCeAAIX 9S6igRCAAAQgAIHaEUDgUjuX0WAIQAACEIBALQhYE3xYs7cWQUgjIQABCECgVAIIXErFy8UhAAEI QCAWAZ+Aj1Uf9UAAAhCAAAQgAAEIQAACEIAABCAAAQj0RmCllVZyc+bM6e1gjoLAMAhYE3xYs3cY ocGpEIAABCDQEAIIXBriSMyAAAQgYJ2AF7hsuummbtFFF7WOA/shUCiBhx9+2M2bN89Z6V/W7C00 WLgYBCAAAQhAoEcCMraQ79zVVlvNrbrqqj2eVd/DrNlbX0/RcghAoAwCt99+u0PgUgZZrplHwJrg w5q9eT5nHwQgAAEI2CKAwMWWv7EWAhCAQGMJeIHL3LlznfywY4MABIojYK1/WbO3uEjhShCAAAQg AIHeCfCIot5ZcSQEIACBuhMgAV93D9ar/dbizZq99YpGWgsBCEAAAmUQQOBSBlWuCQEIQAAC0QmQ kI6OnAoNEbDWv6zZayiUMRUCEIAABBQRQOCiyBk0BQIQgEDJBEjAlwyYyw8hYC3erNk7xNl8gAAE IAABkwQQuJh0O0ZDAAIQaB4BEtLN8ykW6SFgrX9Zs1dPpNESCEAAAhCwRACBiyVvYysEIGCdAAl4 6xEQ135r8WbN3rjRRG0QgAAEIKCRAAIXjV6hTRCAAAQg0DcBEtJ9I+MECPRMwFr/smZvz4HAgRCA AAQgAIECCSBwKRAml4IABCCgnAAJeOUOaljzrMWbNXsbFq6YAwEIQAACAxBA4DIANE6BAAQgAAF9 BEhI6/MJLWoOAWv9y5q9zYlULIEABCAAgToRQOBSJ2/RVghAAALDI0ACfnj8OLs/AtbizZq9/UUD R0MAAhCAQBMJIHBpolexCQIQgIBBAiSkDTodk6MRsNa/rNkbLZCoCAIQgAAEIJAigMAlBYO3EIAA BBpOgAR8wx2szDxr8WbNXmXhRnMgAAEIQKACAghcKoBOlRCAAAQgUDwBEtLFM+WKEPAErPUva/Z6 P/MKAQhAAAIQiEkAgUtM2tQFAQhAoFoCJOCr5W+tdmvxZs1ea/GMvRCAAAQg0E4AgUs7E/ZAAAIQ gEANCZCQrqHTaHJtCFjrX9bsrU0g0lAIQAACEGgUAQQujXInxkAAAhAIEiABH8RDYcEErMWbNXsL DhcuBwEIQAACNSSAwKWGTqPJEIAABCDQToCEdDsT9kCgKALW+pc1e4uKE64DAQhAAAIQ6IcAApd+ aHEsBCAAgXoTIAFfb//VrfXW4s2avXWLR9oLAQhAAALFE0DgUjxTrggBCEAAAhUQICFdAXSqNEPA Wv+yZq+ZQMZQCEAAAhBQRQCBiyp30BgIQAACpRIgAV8qXi6eIWAt3qzZm3E3HyEAAQhAwCABBC4G nY7JEIAABJpIgIR0E72KTVoIWOtf1uzVEme0AwIQgAAEbBFA4GLL31gLAQjYJkAC3rb/Y1tvLd6s 2Rs7nqgPAhCAAAT0EUDgos8ntAgCEIAABAYgQEJ6AGicAoEeCVjrX9bs7TEMOAwCEIAABCBQKAEE LoXi5GIQgAAEVBMgAa/aPY1rnLV4s2Zv4wIWgyAAAQhAoG8CCFz6RsYJEIAABCCgkYC1hPTkyZPd z3/+c42uoE0NJPDwww+7efPmuU033dQtuuiiDbRwqEnW7B1qPZ8gAIE8Avvtt5/be++984oatU/G FjLGYINADAIytpDv3NVWW82tuuqqMaqstA5r9lYKm8ohUBMCyy+/vJs+fXpNWju8ZpKAHx4/zu6P gLV4s2Zvf9HA0RCAAAQg0EQCCFya6FVsggAEIGCQgDWBi7fXoKsxGQIQgAAEIBCdwNSpU92xxx4b vd7YFc6cOdONGzcudrXUBwEIQAACEDBJYKWVVnJz5swxYTsJeBNuVmOktXizZq+aQKMhEIAABCBQ GQEELpWhp2IIQAACECiSgBd8zJ0718kPu6Zv1uxtuj+122ct3qzZqz3+aB8EqiTAI1SqpE/dTSdA /2q6h7EPAhAIEbCWkLZmb8j3lJVPwFq8WbO3/AiiBghAAAIQ0E4AgYt2D9E+CEAAAhDoiYC1hLQ1 e3sKAg4qjYC1eLNmb2mBw4Uh0AACJOAb4ERMUEuA/qXWNTQMAhCIQMBaQtqavRFCiCoCBKzFmzV7 A66nCAIQgAAEjBBA4GLE0ZgJAQhAoOkErCWkrdnb9PjVbp+1eLNmr/b4o30QqJIACfgq6VN30wnQ v5ruYeyDAARCBKwlpK3ZG/I9ZeUTsBZv1uwtP4KoAQIQgAAEtBNA4KLdQ7QPAhCAAAR6ImAtIW3N 3p6CgINKI2At3qzZW1rgcGEINIAACfgGOBET1BKgf6l1DQ2DAAQiELCWkLZmb4QQoooAAWvxZs3e gOspggAEIAABIwQQuBhxNGZCAAIQaDoBawlpa/Y2PX6122ct3qzZqz3+aB8EqiRAAr5K+tTddAL0 r6Z7GPsgAIEQAWsJaWv2hnxPWfkErMWbNXvLjyBqgAAEIAAB7QQQuGj3EO2DAAQgAIGeCFhLSFuz t6cg4KDSCFiLN2v2lhY4XBgCDSBAAr4BTsQEtQToX2pdQ8MgAIEIBKwlpK3ZGyGEqCJAwFq8WbM3 4HqKIAABCEDACAEELkYcjZkQgAAEmk7AWkLamr1Nj1/t9lmLN2v2ao8/2geBKgmQgK+SPnU3nQD9 q+kexj4IQCBEwFpC2pq9Id9TVj4Ba/Fmzd7yI4gaIAABCEBAOwEELto9RPsgAAEIQKAnAtYS0tbs 7SkIOKg0AtbizZq9pQUOF4ZAAwiQgG+AEzFBLQH6l1rX0DAIQCACAWsJaWv2RgghqggQsBZv1uwN uJ4iCEAAAhAwQgCBixFHYyYEIACBphOwlpC2Zm/T41e7fdbizZq92uOP9kGgSgIk4KukT91NJ0D/ arqHsQ8CEAgRsJaQtmZvyPeUlU/AWrxZs7f8CKIGCEAAAhDQTgCBi3YP0T4IQAACEOiJgLWEtDV7 ewoCDiqNgLV4s2ZvaYHDhSHQAAIk4BvgRExQS4D+pdY1NAwCEIhAwFpC2pq9EUKIKgIErMWbNXsD rqcIAhCAAASMEEDgYsTRmAkBCECg6QSsJaSt2dv0+NVun7V4s2av9vijfRCokgAJ+CrpU3fTCdC/ mu5h7IMABEIErCWkrdkb8j1l5ROwFm/W7C0/gqgBAhCAAAS0E0Dgot1DtA8CEIAABHoiYC0hbc3e noKAg0ojYC3erNlbWuBwYQg0gAAJ+AY4ERPUEqB/qXUNDYMABCIQsJaQtmZvhBCiigABa/Fmzd6A 6ymCAAQgAAEjBBC4GHE0ZkIAAhBoOgFrCWlr9jY9frXbZy3erNmrPf5oHwSqJEACvkr61N10AvSv pnsY+yAAgRABawlpa/aGfE9Z+QSsxZs1e8uPIGqAAAQgAAHtBBC4aPcQ7YMABCAAgZ4IWEtIW7O3 pyDgoNIIWIs3a/aWFjhcGAINIEACvgFOxAS1BOhfal1DwyAAgQgErCWkrdkbIYSoIkDAWrxZszfg eoogAAEIQMAIAQQuRhyNmRCAAASaTsBaQtqavU2PX+32WYs3a/Zqjz/aB4EqCZCAr5I+dTedAP2r 6R7GPghAIETAWkLamr0h31NWPgFr8WbN3vIjiBogAAEIQEA7AQQu2j1E+yAAAQhAoCcC1hLS1uzt KQg4qDQC1uLNmr2lBQ4XhkADCJCAb4ATMUEtAfqXWtfQMAhAIAIBawlpa/ZGCCGqCBCwFm/W7A24 niIIQAACEDBCAIGLEUdjJgQgAIGmE7CWkLZmb9PjV7t91uLNmr3a44/2QaBKAiTgq6RP3U0nQP9q uoexDwIQCBGwlpC2Zm/I95SVT8BavFmzt/wIogYIQAACENBOAIGLdg/RPghAAAIQ6ImAtYS0NXt7 CgIOKo2AtXizZm9pgcOFIdAAAiTgG+BETFBLgP6l1jU0DAIQiEDAWkLamr0RQogqAgSsxZs1ewOu pwgCEIAABIwQQOBixNGYCQEIQKDpBKwlpK3Z2/T41W6ftXizZq/2+KN9EKiSAAn4KulTd9MJ0L+a 7mHsgwAEQgSsJaSt2RvyPWXlE7AWb9bsLT+CqAECEIAABLQTQOCi3UO0DwIQgAAEeiJgLSFtzd6e goCDSiNgLd6s2Vta4HBhCDSAAAn4BjgRE9QSoH+pdQ0NgwAEIhCwlpC2Zm+EEKKKAAFr8WbN3oDr KYIABCAAASMEELgYcTRmQgACEGg6AWsJaWv2Nj1+tdtnLd6s2as9/mgfBKokQAK+SvrU3XQC9K+m exj7IACBEAFrCWlr9oZ8T1n5BKzFmzV7y48gaoAABCAAAe0EELho9xDtgwAEIACBnghYS0hbs7en IOCg0ghYizdr9pYWOFwYAg0gQAK+AU7EBLUE6F9qXUPDIACBCASsJaSt2RshhKgiQMBavFmzN+B6 iiAAAQhAwAgBBC5GHI2ZEIAABJpOwFpC2pq9TY9f7fZZizdr9mqPP9oHgSoJkICvkj51N50A/avp HsY+CEAgRMBaQtqavSHfU1Y+AWvxZs3e8iOIGiAAAQhAQDsBBC7aPUT7IAABCECgJwLWEtLW7O0p CDioNALW4s2avaUFDheGQAMIkIBvgBMxQS0B+pda19AwCEAgAgFrCWlr9kYIIaoIELAWb9bsDbie IghAAAIQMEIAgYsRR2MmBCAAgaYTsJaQtmZv0+NXu33W4s2avdrjj/ZBoEoCJOCrpE/dTSdA/2q6 h7EPAhAIEbCWkLZmb8j3lJVPwFq8WbO3/AiiBghAAAIQ0E4AgYt2D9E+CEAAAhDoiYC1hLQ1e3sK Ag4qjYC1eLNmb2mBw4Uh0AACJOAb4ERMUEuA/qXWNTQMAhCIQMBaQtqavRFCiCoCBKzFmzV7A66n CAIQgAAEjBBA4GLE0ZgJAQhAoOkErCWkrdnb9PjVbp+1eLNmr/b4o30QqJIACfgq6VN30wnQv5ru YeyDAARCBKwlpK3ZG/I9ZeUTsBZv1uwtP4KoAQIQgAAEtBNA4KLdQ7QPAhCAAAR6ImAtIW3N3p6C gINKI2At3qzZW1rgcGEINIAACfgGOBET1BKgf6l1DQ2DAAQiELCWkLZmb4QQoooAAWvxZs3egOsp ggAEIAABIwQQuBhxNGZCAAIQaDoBawlpa/Y2PX6122ct3qzZqz3+aB8EqiRAAr5K+tTddAL0r6Z7 GPsgAIEQAWsJaWv2hnxPWfkErMWbNXvLjyBqgAAEIAAB7QQQuGj3EO2DAAQgAIGeCFhLSFuzt6cg 4KDSCFiLN2v2lhY4XBgCDSBAAr4BTsQEtQToX2pdQ8MgAIEIBKwlpK3ZGyGEqCJAwFq8WbM34HqK IAABCEDACAEELkYcjZkQgAAEmk7AWkLamr1Nj1/t9lmLN2v2ao8/2geBKgmQgK+SPnU3nQD9q+ke xj4IQCBEwFpC2pq9Id9TVj4Ba/Fmzd7yI4gaIAABCEBAOwEELto9RPsgAAEIQKAnAtYS0tbs7SkI OKg0AtbizZq9pQUOF4ZAAwiQgG+AEzFBLQH6l1rX0DAIQCACAWsJaWv2RgghqggQsBZv1uwNuJ4i CEAAAhAwQgCBixFHYyYEIACBphOwlpC2Zm/T41e7fdbizZq92uOP9kGgSgIk4KukT91NJ0D/arqH sQ8CEAgRsJaQtmZvyPeUlU/AWrxZs7f8CKIGCEAAAhDQTgCBi3YP0T4IQAACEOiJgLWEtDV7ewoC DiqNgLV4s2ZvaYHDhSHQAAIk4BvgRExQS4D+pdY1NAwCEIhAwFpC2pq9EUKIKgIErMWbNXsDrqcI AhCAAASMEEDgYsTRmAkBCECg6QSsJaSt2dv0+NVun7V4s2av9vijfRCokgAJ+CrpU3fTCdC/mu5h 7IMABEIErCWkrdkb8j1l5ROwFm/W7C0/gqgBAhCAAAS0E0Dgot1DtA8CEIAABHoiYC0hbc3enoKA g0ojYC3erNlbWuBwYQg0gAAJ+AY4ERPUEqB/qXUNDYMABCIQsJaQtmZvhBCiigABa/Fmzd6A6ymC AAQgAAEjBBC4GHE0ZkIAAhBoOgFrCWlr9jY9frXbZy3erNmrPf5oHwSqJEACvkr61N10AvSvpnsY +yAAgRABawlpa/aGfE9Z+QSsxZs1e8uPIGqAAAQgAAHtBBC4aPcQ7YMABCAAgZ4IWEtIW7O3pyDg oNIIWIs3a/aWFjhcGAINIEACvgFOxAS1BOhfal1DwyAAgQgErCWkrdkbIYSoIkDAWrxZszfgeoog AAEIQMAIAQQuRhyNmRCAAASaTsBaQtqavU2PX+32WYs3a/Zqjz/aB4EqCZCAr5I+dTedAP2r6R7G PghAIETAWkLamr0h31NWPgFr8WbN3vIjiBogAAEIQEA7AQQu2j1E+yAAAQhAoCcC1hLS1uztKQg4 qDQC1uLNmr2lBQ4XhkADCJCAb4ATMUEtAfqXWtfQMAhAIAIBawlpa/ZGCCGqCBCwFm/W7A24niII QAACEDBCAIGLEUdjJgQgAIGmE7CWkLZmb9PjV7t91uLNmr3a44/2QaBKAiTgq6RP3U0nQP9quoex DwIQCBGwlpC2Zm/I95SVT8BavFmzt/wIogYIQAACENBOAIGLdg/RPghAQBWBM844w7344ouq2kRj 3iRwxRVXuNmzZ7sjjjjCLbXUUo3HYs3exjtUuYHW4s2avcrDL7d5u+++u1trrbVyy+q486c//amT f2z6CMjYQv4mbL311m6rrbbS18CCW2TN3oLxcbk+CViLN2v29hkOKg5/73vf68aPH6+iLUU0QuYu ZA6DTScB8c2IESPcxIkTdTaw4FZZs7dgfFyuTwLW4s2avX2Gg4rDjzzySBPz1Spg0wgIQMAEAQQu JtyMkRCAQFEERBH///7f/yvqclwHAhCAAAQgAIEBCMhd/7LSTlO2KVOmuKlTpzbFHOyAAAQgAAEI 1JKAjC1kjNGUbe7cuW7llVduijnYAQEIQAACEKgtAflOlrwCGwQgAAEIFEMAgUsxHLkKBCBghIAM RF955RV37rnnGrG4Pmaeeuqp7oEHHkh88/a3v70+DR+wpdbsHRATpxVEwFq8WbO3oDCJcpnp06c7 +ddUgctRRx3lNthggygsqaQ3Avfff7877bTT3K677pr86+2s+h5lzd76eqoZLbcWb9bsrVOU/vWv f3UHHXRQIp5tosBlww03dF/5ylfq5BITbT3wwAOTFVyszC9Zs9dEECs20lq8WbNXcei1Nc3PLyFw aUPDDghAAALDIoDAZVj4OBkCELBGwCutH330UWumq7f3M5/5jLvpppuc+GbkyJHq2zvcBlqzd7i8 OH94BKzFmzV7hxcdcc/+r//6Lyf/mipwufLKK92YMWPiQqW2IIEf/ehHyeMqJk2a5ORf0zdr9jbd n9rtsxZv1uzVHn/p9skqrWuvvXZjBS4ytpAxBpsuAvJILHlEkZX5JWv26oo2e62xFm/W7K1TRP/H f/yHu/HGGx0Clzp5jbZCAAJ1IIDApQ5eoo0QgIAaAghc1LiirSHWEtLW7G1zODuiErAWb9bsjRpM w6wMgcswAXJ63wSsJaSt2dt3QHBCoQSsxZs1ewsNlpIvhsClZMBcPpeAtYS0NXtznc7OaASsxZs1 e6MFUgEVIXApACKXgAAEIJBDAIFLDhR2QQACEOhEAIFLJzLV77eWkLZmb/URZrsF1uLNmr11im4E LnXyVjPaai0hbc3eZkRpfa2wFm/W7K1TZCJwqZO3mtNWawlpa/Y2J1LraYm1eLNmb52iEoFLnbxF WyEAgToRQOBSJ2/RVghAoHICCFwqd0HHBlhLSFuzt6PjKYhCwFq8WbM3ShAVVAkCl4JAcpmeCVhL SFuzt+dA4MBSCFiLN2v2lhI0JV0UgUtJYLlskIC1hLQ1e4POp7B0AtbizZq9pQdQgRUgcCkQJpeC AAQgkCKAwCUFg7cQgAAEuhFA4NKNUHXl1hLS1uytLrKoWQhYizdr9tYpyhG41MlbzWirtYS0NXub EaX1tcJavFmzt06RicClTt5qTlutJaSt2ducSK2nJdbizZq9dYpKBC518hZthQAE6kQAgUudvEVb IQCBygkgcKncBR0bYC0hbc3ejo6nIAoBa/Fmzd4oQVRQJQhcCgLJZXomYC0hbc3engOBA0shYC3e rNlbStCUdFEELiWB5bJBAtYS0tbsDTqfwtIJWIs3a/aWHkAFVoDApUCYXAoCEIBAigAClxQM3kIA AhDoRgCBSzdC1ZVbS0hbs7e6yKJmIWAt3qzZW6coR+BSJ281o63WEtLW7G1GlNbXCmvxZs3eOkUm Apc6eas5bbWWkLZmb3MitZ6WWIs3a/bWKSoRuNTJW7QVAhCoEwEELnXyFm2FAAQqJ4DApXIXdGyA tYS0NXs7Op6CKASsxZs1e6MEUUGVIHApCCSX6ZmAtYS0NXt7DgQOLIWAtXizZm8pQVPSRRG4lASW ywYJWEtIW7M36HwKSydgLd6s2Vt6ABVYAQKXAmFyKQhAAAIpAghcUjB4CwEIQKAbAQQu3QhVV24t IW3N3uoii5qFgLV4s2ZvnaIcgUudvNWMtlpLSFuztxlRWl8rrMWbNXvrFJkIXOrkrea01VpC2pq9 zYnUelpiLd6s2VunqETgUidv0VYIQKBOBBC41MlbtBUCEKicAAKXyl3QsQHWEtLW7O3oeAqiELAW b9bsjRJEBVWCwKUgkFymZwLWEtLW7O05EDiwFALW4s2avaUETUkXReBSElguGyRgLSFtzd6g8yks nYC1eLNmb+kBVGAFCFwKhMmlIAABCKQIIHBJweAtBCAAgW4EELh0I1RdubWEtDV7q4ssahYC1uLN mr11inIELnXyVjPaai0hbc3eZkRpfa2wFm/W7K1TZCJwqZO3mtNWawlpa/Y2J1LraYm1eLNmb52i EoFLnbxFWyEAgToRQOBSJ2/RVghAoHICVQpcnnnmGXfeeee5F154YQiHUaNGuQkTJrjFFltsyH5r H3xC+u6773YvvfSS+/vf/+7WWWcdt8IKKzQShbf30UcfdSNHjmykjRilh4C1eLNmr55I694SBC7d GfV7xCuvvOIuuugi9/jjjw85dckll3QHHXRQY79Hhxgb+OAT0uPHj3cf/OAH3UorreRWWWUVt9Za azVy7OXtnTRpkpN/bBAok4C1eLNmb5mxU/S1EbgUTfTN6z300ENu+vTpbv78+a0KRowY4TbffHM3 bty41j6rb2Qs8dprr7lp06a52bNnJ2OLd7/73U7meJq4kYBvolf12mQt3qzZqzfy2luGwKWdCXsg AAEIFEEAgUsRFLkGBCBghkCVApezzz7bHX/88bms77zzTrfeeuvlllnYKeKfXXbZxT388MNDzJ08 ebI76qijhuxrygcS8E3xZD3ssBZv1uytRxS+2UoELsV766c//anbeeedcy8swtrddtstt8zCThlf HHbYYU6S0tlt++23d6ecckrjklAk4LOe5nOZBKzFmzV7y4ydoq+NwKVoom9e721ve1vHCz/xxBNu 2WWX7Vje9AIR/2y77bbuH//4R5upJ5xwgtt///0bJ6QlAd/manaUSMBavFmzt8TQKfzSCFwKR8oF IQABCCQEELgQCBCAAAT6IFClwOXqq692BxxwQG5rf/CDH7itt946t8zCzv32289dd911uaY+99xz ufvrvpMEfN09WK/2W4s3a/bWKRoRuBTvLUmwbLnllrkXFmHtl770pdyypu98/vnnE+HPL3/5y46m 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 IjzKEVw0vsIDWeMrPCyLvZJv4yuo/CK4BKETzz5ngN9rr73MnnvuGU+mReTy2GOPmdmzZxd8Rrt2 7Uz//v0LPj6KA1XmKFAt7JrMLbgH4mnPp9xJ4yv8FtD4Ch/TQq/o2/gKKrcILkHoxLcPA/y3335r eMfyLX333XfmwgsvLKpY559/vqlTp05R54R5sMocJprFX2vMmDGmbt26dg2j+LPDP0PjK1xMNb7C xbPYq/k2voLKL4JLEDraJwSEgBAoHQERXErHTmcKASGQQQSSSHDJYDOpyilGgIVynwguKYZaVcsg Ar6MryDoRXAJQieefc4AH09uykUIxIOAbwSXeGqtXIRAPAj4Mr6CaiuCSxA68e3DAP/RRx/Fl6Fy EgIRI8DaBe9YPiSNLx9aQWUIEwGfxldQvURwCUJH+4SAEBACpSMggkvp2OlMISAEMohAkggu99xz j1m2bJm3rXT11VcbPB4KTchPtm7dutDDIzkuC2WuX7++2WyzzczGG29smjVrZpo0aRIJlqVe9JRT Til7qCrKrvFVagtWf14Wxtemm25qtt56azvG1l133erBKNMeX8ZXUPVFcAlCJ559S5cuNcSb9zUR joRPoWmTTTYxffv2LfTwSI7LQpkbNmxoDjvsMC9VBWnUzp07208kDVzERX0eX8zbH3jgAfPGG28U XCONr4KhqnBgsfcE5u39+vWrcA2f/vFlfAVhIoJLEDrx7Rs3bpz5+uuv48uwgJy+//57884779h7 34svvljAGasOOfHEE81vf/vbVT/E/O2LL74wN9xwQ1G5qsxFwVXjwayv8I7lQ/JtfH3++efm/fff t593333XfPrpp0XBpL5aFFz24CTeE4Jq6dP4CiqnCC5B6GifEBACQqB0BERwKR07nSkEhEAGEUgS wcX35iFWbTEGqMWLFxsWycuZslBmJJTziUcY4Tt16mR22mkns+OOO5oddtjB+GiYL2e/8C3vn376 yey8885FGaA0vkprxWLvCfm5tGrVyuy+++5mt912M127di3r4nd+uXz/LoKL7y1UvvK9+eab5pZb brHhZr766quCC+KDsgCkgcMPPzzVZXaV69Chg/n9739vP23atHE/a+spAh9++KGZOXOm+dvf/mae fPJJwxyjmKTxVQxaq44t9p6w5pprmkMOOcQcddRRdr6+6kr6VigCIrgUilT6j+NdeOHChWbu3Lnm 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 UZ+PS5K/o1DGB+9qFCHKmehvtPutt96aMyYUotZSVZkdwYXnOve1oISXJv0d73E+qHU4Ix6LeKgX 4Jm+8847W6NG1AvaQWXVvngRgPR8xhlnWOIz27ATIQ0gz/Dh2e+IVvQxyFWE7MB4vO6664adta7n OQI8k7kf0TcIA4OyHimOvhF1v/cc+swWjz4HicU9CxctWpS7JwEKilY8B3keYtSv6b70ySef2PsY c4vqFFyqAtt3VRdHcGFuwRxDKXoEWJdBTYP34fHjx4eqoIFCGoQW3n34MAa+++67XKUg+rn3nu23 396OA18MvLlC6kvkCPCOwvsS4VJ5R9hggw1smOmDDjookjCnvJMPHz7crtE0bNjQhkg64IADIq+n MhAClRGg70PoevPNN62iICGAfXgXxhEVtUueyXLKq9xq+l8ICAEhUDoCIriUjp3OFAJCIIMIMBHN 94jJIASqshAQAkJACAiBsiNQLoILBjVCsNx44412y/94hhOa4/jjj7db/i82OYJLsefpeCEgBISA EBACQiA8BIoluOTn7KOqiyO45JdT34WAEBACQkAICIH4ERDBJX7MlaMQEALpRkAEl3S3r2onBIRA yAgceeSRBq+Zcia8xJBfRhqemN8dOnSQakA5G0R5V0AA7268ypDHrVOnjvVco5+WmvBIe+2118zy 5csNqkX169e38uG1uWapZdF5yUMAjzX6IvdtpGr5OMUBaoNHI30KT7P111/fbuvVq1dURZ3XOvls tNFGBm9JpegRQDUq6hAs+bXAGwwvXD7cj0ilqrXkX9d9nzx5srnrrrvcv7XaMk/AE50PoeTy+zzh Yxo1amTDGBE6ptj+XquC6eRYECA8wccff2yVVLi/lZLoQxC6+XD/5PlLIqQHXsAQvgmF9etf/7qU y+ucjCFAiEHXn5gnknj+8txlPsenVO9anvOoxkAs3GuvvTKGbPqri1oeakDuw73JJUJTuucZ96Oa FFrceTVtCV80cuTImg4L3E857777bnPTTTdZhRkOpp8fffTRlgyLykZciXs4axhK0SOwbNkyq6pH XyRUKiF8i0m8U1R+byEEkUu8W+e/szRo0EDPYQeOtoEI8A780ksv2f7FgTx/t9pqKxvCKvDEgJ28 Z6AgRHi4unXrmm222UZhKQPw0q74EUDllPsy7y+s0fgQxvf222+39/H40VCOQkAICIF0IiCCSzrb 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 /vQnc/zxxwcSoiG3EE796quvtiF4IbcQYn3QoEF6LiSp8VXWKhFwa/MrV660CtSsSyoJASEgBISA 3wiI4OJ3+6h0QkAIpByBiy66KMcSJ94nXrhKQiDJCCDvfM4551gDPUStQw45xNDP27RpU3C1eKE8 99xzzXXXXWfPQcmFeM941SkJgSQj8OCDD9r7PGETkPrHAzooEXoE73PUXZzSC2EC8lPTpk1zi/Ms 0kMIQ1o67UlqLclu4a+//touqFdlTOXZAZHLGVN32223zKjaYWTAGI88NkRPl7bccsucMZ7wToWm KVOmmMMOO8w+lzFcKAmBNCBQar8mbBpjizEG6RTiHanU8ZVkLHmGYvh392BIcKg+ucS83d2DUYfC +KnkLwJSdflf2wQpIzL3bt++fW7ODGFl4403rrFRIbfsueee5qOPPjKERjv22GNrPEcHCAGfESAE F451hJD+8ccfzeGHH25JK//v//2/govN8xRnpjvuuMOqj272S2h1FDCYcwYRrwvOQAcKgTIhAHGa EK+suTA2CJ+Ocp2SEBACQkAI+ImACC5+totKJQSEQMoRwEvuuOOOM3feeafhZfChhx6S92DK2zzt 1Xv99ddtnOYZM2bYqqIsgWdPbdRXnnnmGXPMMcfYsC14rHO9Aw88MO1Qqn4pR4CwCf369TN16tQx DzzwQI0kl8pw/Otf/zILFizIEV6ef/55uzjpjoPcgme680hlAR9P97QkqbWkpSUr1oNwGI8++mjO 2Pree+/lDkApgPBcztjKcwVDVVrSu+++m1OYgODiklOY4LnXrl0793NR22KULoq6sA4WAmVEIAxl on//+9+GOSsy9Nx7MPiRilFIKiMEJWWNqqIjtDzxxBMVlCwgy2LE5z5LGJZCDP8lFUInRYpAllRd MMyjdOYI4GwJeevSeuutZ5XLeCdlTkzIz2KNlBBmOJ/rYuQUucWhq21SEWCeibLuG2+8YZ939Gvu +aWmJUuWWKLL3/72N3uJrbfe2lx11VX2WVLqNXWeECg3Ap999plhrsmcabvttjMzZ86sUYm63GVW /kJACAiBrCIggktWW171FgJCoGwI4O2w3377GYySLCLihdioUaOylUcZC4HaIEB/RqFl/Pjx1hMW r3u8xMOKS87iJUouhDdC2QVD3/XXX2+K8TCqTf10rhCIAgFILn379rUL7RiZMGSXmr777jvzz3/+ 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 XWqL5Kv1z4C+X63HONYSYpMvH04iuPjQCZPXiQb4Tz75xEyePNkCiHJyttlmCwOmSmk7ArEZCCVf bX8kVIEmIiD5aiKYFW6l71cFYApwODb58kEugosPnXB5nWaA/+c//2leeOEFC2CfPn1M7969w4Gp ktqOQGwGQslX2x8JVaCJCEi+mghmxq30/coApUCHYpMvH/QiuPjQ6crrNAM8xsF999231Opbb73V zDXXXKXfnbDDxPTtt9+2TenXr5/5/ve/39JmhS6vkcbEZiCUfDXSm+25NtTz/sUXX5g333zTfPrp p+b99983Cy+8sFl88cWjfl9Jvlr7TOr71Tx8maj87W9/M3//+9/tFvmKXeEWm3z5ekMEFx86YfI6 0QC/zz77mJdeeskCOHLkSLPZZpuFAbPFpSTfR6+88orp27evmW+++ex3v5VFM85gTMN7MER5jbQl NgOh5KuR3gx7bTvki/HFBx98YN566y0rW/PPP7+V51bPyXuKrOSrp8jVfp2+X7VjVe1MRxb66KOP zCyzzGLmnntus9RSS7Vc51WtXpXyY5OvSvXkOGOCZZdd1gwZMsT87ne/852aq7x33nnHzvMGDx5s xo4dG33dO80Af8stt5izzjrL4r788subc889N/o+qLWCSZ0d+/POO69pNQmfcQ2yyjhj5plnNmAa c4rNQCj5ivlpKa9baPly44uPP/7Y/Oc//7HfjUUWWSRqpxrJV/kz0+xf+n41D9HQ8tyMmscmX742 ieDiQ6crr9MM8HfccYcZM2ZMqdWnnXaaGTBgQOl3XndQpD3++OPmvvvuM6+//nqpGa1qX+jySg1q cCc2A6Hkq8EODXR56Of96aefNgcddFBm64455hiz2mqrRanEk3xldlnTDur71Rwo//KXv5hTTjnF TJw4cbob7r333mbTTTeVfE2HTH0HRHCpD69WnN1pBngUTmlCyx/+8IdWQBf0nowvTj75ZAOBMZ22 2247w0S1mZFqUIo/8cQT5tFHHzV33313WZEx4xmbgVDyVfboRPsjtHzxnrr66qvNzTffPB0mP/vZ z8x+++0Xpee65Gu67mrqAX2/mgMn369rrrnGXHHFFdPdcOmllzajRo1qOTF0uoJrOBCbfPmqLIKL D51weZ1mgB8xYoR5/vnnSwBCMuqEKC4TJkwwRx99dKldyR10DYMGDUoeanifuQLj92uvvbbsXrHj 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 --Apple-Mail=_444F3B05-C996-4F75-AA3B-3B276416663B-- --Apple-Mail=_2D242525-738E-4F32-ABB6-9949F4C8B01C-- From nobody Tue May 5 06:36:37 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 324BA3A0794 for ; Tue, 5 May 2020 06:36:35 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.1 X-Spam-Level: X-Spam-Status: No, score=-2.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net header.b=Hy8XN980; dkim=pass (1024-bit key) header.d=juniper.net header.b=GUQno9/J Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kCJFuPg5e0Mf for ; Tue, 5 May 2020 06:36:31 -0700 (PDT) Received: from mx0b-00273201.pphosted.com (mx0b-00273201.pphosted.com [67.231.152.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 88BC03A0789 for ; Tue, 5 May 2020 06:36:30 -0700 (PDT) Received: from pps.filterd (m0108160.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 045DXcui029240 for ; Tue, 5 May 2020 06:36:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=PPS1017; bh=91k9uJnWFw6i9a56UVrOfLpAgj5g5f0d3IaWTc/CTTI=; b=Hy8XN980A6TunHfq2ut0O8zdSFUHtzKDBdBwqWcg1OaYYhAeFWSFMO1ZLbpTlVN3EckA ZyN2MIrYaeZd0VS+Q3E2hiTqav/FzOVHauYFSg3OMygHOqBoL6avnVsHidJ8mjDLZYTK 6y1vQnOPZmaIg1+Og05djvK7klHrGP47vLVsT1QFawJ9WIctC8Zdp6N+LK6Z/4f+hOJb pA7JEaGLv+822JWajFDdRg4bbxguGnplMGS6iUD4kfsceCFredfTq13wNAtRqHohyyBd tCWZm8AH8R5MLKLn2s9artzXl6GzcZZjbL4kBG8yfooMBALy19PdwZsKtWherS7AzI+a Hg== Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by mx0b-00273201.pphosted.com with ESMTP id 30s6shmxvu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 05 May 2020 06:36:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bn5iztVCUXxwp7Ziz0XzuhlfarvY/fxwoncb4+gOm90Wepq/76b5yyf1zc7sPtAtUhtH4sLIcnCDgMtR/G7pLS9KnLvp+Jh36Etbvd8ytEr9E7rAwiKjTu4cJLZHYC9QImc0k67EKRRyKH3TNlYASblTNva231/m9ugPO1NB55mbwoZF1auU8dYrdeA1k89oIs+W+aOZod7eWRdQWyoyorE66OLvInd2pmRfA2nT9XBzUCXkfYZY84rwLqvwN65JpGeIErosnB50VE4Ba2i7Td/WefGPsPSDm27KCcwrW0ujkOzNBLg/WzzFOOmK0QAoJu1pxMzx8ogDfXrlyzlgzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=91k9uJnWFw6i9a56UVrOfLpAgj5g5f0d3IaWTc/CTTI=; b=DqCdvPAlUVWLIS4b2OMpVNJtCCs+qyu8OhVyYdg+Bced/u5PC18ab329nzepE7ELPCfNWR9BWavUnhLa/iiipKyc9vZoHX8BIntNJmcCHaZ3Jr5GiA8iAokAovIzyj7lhoCHDBUft8miPZ7whzsVzO0iAOvFkxhLzCsGcRJcd+ne56bl5jaP6mBnB2sUYwwqAbeB7zE5H9eL/5a1a4sFtwEJg/kHBiKfOBBZu87tkPFXvKY+449qYNuuAdWUsVQGzApqtk8KLPreGsPbbsXBh2vmZxPs8vgQap4vbxJdZV2A4Ju9QUNCzHuvWyUdn66FuxgBqXSaQnTb5HMbJ86XJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=juniper.net; dmarc=pass action=none header.from=juniper.net; dkim=pass header.d=juniper.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=91k9uJnWFw6i9a56UVrOfLpAgj5g5f0d3IaWTc/CTTI=; b=GUQno9/JalnuWXlSYckazuslODHvBJJ2Zhahzib/tsU1rHg7SaKwRmBXpezrk5hVR+tJnKzHZK8XE1Dv0Lrvby8d1E1KsEFrgsWZxY4Jamu3g561PkUoBPOvnnjFKFmQ9lnoYooDpav6UEiHrFNKz3wm11+peszGUwh59o7M+AY= Received: from MN2PR05MB5981.namprd05.prod.outlook.com (2603:10b6:208:c3::15) by MN2PR05MB6989.namprd05.prod.outlook.com (2603:10b6:208:190::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.14; Tue, 5 May 2020 13:36:25 +0000 Received: from MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::e456:3003:b97a:6bb2]) by MN2PR05MB5981.namprd05.prod.outlook.com ([fe80::e456:3003:b97a:6bb2%5]) with mapi id 15.20.2921.036; Tue, 5 May 2020 13:36:25 +0000 From: "Jeffrey (Zhaohui) Zhang" To: "rift@ietf.org" Thread-Topic: Survey on planning for possible online IETF meetings Thread-Index: AQHWHnlmiOU6buoT/E6rr2oa6KJOfaiZhyqg Date: Tue, 5 May 2020 13:36:25 +0000 Message-ID: References: <158820095432.8971.16907198249994628864@ietfa.amsl.com> In-Reply-To: <158820095432.8971.16907198249994628864@ietfa.amsl.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_ActionId=ac4152bf-e4d9-49b3-8d5b-0000a36a8c33; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_ContentBits=0; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Enabled=true; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Method=Standard; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Name=Juniper Business Use Only; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_SetDate=2020-05-05T13:35:37Z; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; dlp-product: dlpe-windows dlp-version: 11.3.2.8 dlp-reaction: no-action authentication-results: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=juniper.net; x-originating-ip: [71.248.165.31] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: f852ad14-6e01-4a1c-bb34-08d7f0f94ecc x-ms-traffictypediagnostic: MN2PR05MB6989: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0394259C80 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SsQA6bCNu+vtJ0JPIiz3Skpx8nzHRGaXhFK4gsq2mHDu2ty0yaOmMmxQboY4e3NrdrB3jkq6scPx/Bet8KT3jjQmzv18s4mJKUQ99mh6ZeHWRZUDSDZHGDM2rjh6bkTAyeOxQhKGag/i23c+gWdQA+yJ2jmx2DwiAH+5CpuQUK6rPl0qO2E50s7B371+1XkwoBxgSwqzHttmyf+hjRDr4F2zHjzPT6hIc9XYdQt+9CM+cs1UNPSoWGIcZkPDH23YJvpRctzIhe2Ff1qw39aYB4+OEsQBnfmBRosYLkPXazR38RGTDzSmMoThrhwcSVM18Ev0Dj2PUpIeu1tZzq11+YE5NELr1REUcBtTO26KrZ5T1gtKkuIsE6SC1DXOl4c+VO24BHvo0+WGgYyZPYfvr3PIoTKjC89CG90VlmcPQ0fGZVcbjNK4PkdTuSkbTppv0OK2KPDvUB6nx2AH69bKsH5UruWcxDczxn6W7oezgfAM0nNy9h6Yk0Gc5x5oF/rytgMvIPtDFZPBAMabNyQWgKtfnRSksZB7NngLnyEkhrJpQZBq+kZfYNjnl/4IH42+hOVCVZzWUvMLOgVcOrKLv6n+ZNR9Ienv6rxdycVepI0= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR05MB5981.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(366004)(39860400002)(376002)(346002)(136003)(33430700001)(86362001)(6506007)(55016002)(186003)(53546011)(9686003)(478600001)(8676002)(7696005)(26005)(33440700001)(6916009)(8936002)(316002)(5660300002)(66556008)(64756008)(66476007)(66946007)(76116006)(66446008)(71200400001)(52536014)(33656002)(2906002)(966005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: GVDx5ZUWFItFx6CX7FPhQKzuXMoaMdLxLvTJpSOz+IKLk2dVv8Y3V+9UQkncdsDam3XNfVHL9i877sQGj6X4tKiomruTOCISllS4CVeX7w+ZHgYDdYSo3vFai6EVWLJGH87rZYfgAEy8bGiXPAt+Glz+nDHfLAf/IFqmjNFEeq9MEPiq5t7I20TwTBwmVf4pYjDBpVA2lI1UpDhBG+Zw+A+tzc/I3AtGgFzOypnj5ZsxW2m+JYDbz7HaYPJ7y7FCKqlaC1LBA05pHUclPWcS9w7iYqVenC6H4p6OSFBBF//aiCXOEVeiX6cmOQ7VGn5sUwRkaSdviREH8s5qG6TUHoNgIK/ci9p4Z8V5VQ07sU5NNz/8iD7UJmIb9LNbdaFz1syKyGHIWfyv2pU5QIPJnSZIb0b8ztfz2iKnPJ0dHXFnHnKXYWZYa5DQz5Ck55ORL/c77OEPsotrbQTRtSzxMPoMG+PbXX/NXQ0aDbzJvALFUdDWAe7+45dLfe0gUuWoTq18xqub9OxIxneyrH011WoUMzHogomfrUG6Gr2dgGJCuVr9mjc062IXyEov3u3Ob8+wIjHI8YuAb627tk+airopQwdXceQZPJRnOohbRz3/eQ/A8tdR/Wq989wxXuNGvFXnTaOCKJFj3aU35IDX54+42UTa+h87whFpTVp+ChPrSajx6b0N1kK1MOtVCWt3O/Z5pLumu3mLSOSGg9c1arKxvd/jekmn5O0tTODkSHKwq8P8iAHTE7UwiH41nfT4SPUVQ+pZY54Q4MsqjOn1ygpW+zjY+322YRB7NXTfDX0= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: juniper.net X-MS-Exchange-CrossTenant-Network-Message-Id: f852ad14-6e01-4a1c-bb34-08d7f0f94ecc X-MS-Exchange-CrossTenant-originalarrivaltime: 05 May 2020 13:36:25.4858 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NySoqLCnHN3cfviajNZZ+B6FV0ofbfXoFYhsspVVt2Wa0VE0Y6XiZHEEJKa1DpZupEUdFUkISWse+l5wTjFWng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR05MB6989 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-05-05_08:2020-05-04, 2020-05-05 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 impostorscore=0 malwarescore=0 bulkscore=0 adultscore=0 mlxlogscore=999 lowpriorityscore=0 priorityscore=1501 phishscore=0 clxscore=1015 spamscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2005050109 Archived-At: Subject: [Rift] FW: Survey on planning for possible online IETF meetings X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 May 2020 13:36:36 -0000 UGxlYXNlIHZvaWNlIHlvdXIgb3Bpbmlvbi4NCg0KVGhhbmtzIQ0KSmVmZnJleQ0KDQotLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogSUVURi1Bbm5vdW5jZSA8aWV0Zi1hbm5vdW5jZS1i b3VuY2VzQGlldGYub3JnPiBPbiBCZWhhbGYgT2YgSUVURiBFeGVjdXRpdmUgRGlyZWN0b3INClNl bnQ6IFdlZG5lc2RheSwgQXByaWwgMjksIDIwMjAgNjo1NiBQTQ0KVG86IElFVEYgQW5ub3VuY2Vt ZW50IExpc3QgPGlldGYtYW5ub3VuY2VAaWV0Zi5vcmc+DQpTdWJqZWN0OiBTdXJ2ZXkgb24gcGxh bm5pbmcgZm9yIHBvc3NpYmxlIG9ubGluZSBJRVRGIG1lZXRpbmdzDQoNCltFeHRlcm5hbCBFbWFp bC4gQmUgY2F1dGlvdXMgb2YgY29udGVudF0NCg0KDQpUaGUgY3VycmVudCBnbG9iYWwgc2l0dWF0 aW9uIGlzIHN0aWxsIHZlcnkgdW5jZXJ0YWluIGFuZCBzbyB3ZSBuZWVkIHRvIHBsYW4gZm9yIHRo ZSBwb3NzaWJpbGl0eSB0aGF0IG9uZSBvciBtb3JlIHVwY29taW5nIElFVEYgbWVldGluZ3MgaW4g MjAyMCBhbmQgcG9zc2libHkgMjAyMSBtYXkgbm90IGJlIGFibGUgdG8gZ28gYWhlYWQgaW4gcGVy c29uLiAgVG8gaGVscCB1cyBpbiB0aGlzIHBsYW5uaW5nIHdlIGhhdmUgY3JlYXRlZCBhIHN1cnZl eSBhbmQgd2Ugd2lsbCB1c2UgdGhlIHJlc3VsdHMgb2YgdGhpcyBhcyBvdXIgbWFpbiBiYXNpcyBm b3IgbWFraW5nIGluaXRpYWwgZGVjaXNpb25zLg0KDQpUaGUgc3VydmV5IGNhbiBiZSBmb3VuZCBh dCB0aGlzIGxpbmsgYW5kIHdlIG5lZWQgYXMgbWFueSBJRVRGIHBhcnRpY2lwYW50cyB0byBmaWxs IGl0IG91dCBhcyBwb3NzaWJsZSBwbGVhc2U6DQoNCiAgICAgICAgaHR0cHM6Ly91cmxkZWZlbnNl LmNvbS92My9fX2h0dHBzOi8vd3d3LnN1cnZleW1vbmtleS5jb20vci81MzI4RkZKX187ISFORXQ2 eU1hTy1nayFSNy04UjVjS2NVSGxPZ2R5SXUtOG1xSUQxcGRBb3Z2c25VS243aHpWc3g4dV9kWGk2 WENWdDBETjBMVnRESTZiJA0KDQpUaGUgc3VydmV5IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgcGFn ZXMgYW5kIHdpbGwgdGFrZSAxNS0yMCBtaW51dGVzIHRvIGNvbXBsZXRlOg0KDQoxLiBXZWxjb21l DQoyLiBPbmxpbmUgSUVURiAxMDcgYW5kIHRoZSBzdWJzZXF1ZW50IHZpcnR1YWwgaW50ZXJpbXMg My4gUmVwbGFjaW5nIGEgY2FuY2VsbGVkIGluLXBlcnNvbiBtZWV0aW5nIDQuIE9ubGluZSBtZWV0 aW5nIGZvcm1hdCBhbmQgdGltZXpvbmUgNS4gUmVwbGljYXRpbmcgaHVtbWluZyA2LiBSZXBsaWNh dGluZyB0aGUgaGFsbHdheSBlbnZpcm9ubWVudCA3LiBGZWVzIDguIFRoYW5rcyBhbmQgYW55dGhp bmcgZWxzZQ0KDQpXZSBydW4gdGhlIHN1cnZleSBpbiBhbm9ueW1vdXMgbW9kZSB3aGljaCBtZWFu cyB0aGF0IHdlIG9ubHkgc2VlIGRhdGEgdGhhdCB5b3UgZXhwbGljaXRseSBwcm92aWRlLg0KDQpP bmNlIGFnYWluIGhlcmXigJlzIHRoZSBsaW5rLCB3aGljaCB3aWxsIGJlIGtlcHQgb3BlbiB1bnRp bCBTdW5kYXkgMTAgTWF5Og0KDQogICAgICAgIGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19o dHRwczovL3d3dy5zdXJ2ZXltb25rZXkuY29tL3IvNTMyOEZGSl9fOyEhTkV0NnlNYU8tZ2shUjct OFI1Y0tjVUhsT2dkeUl1LThtcUlEMXBkQW92dnNuVUtuN2h6VnN4OHVfZFhpNlhDVnQwRE4wTFZ0 REk2YiQNCg0KVGhhbmsgeW91IGluIGFkdmFuY2UgZm9yIHlvdXIgaGVscC4NCg0KLS0NCkFsaXNz YSBDb29wZXIsIElFVEYgQ2hhaXINCkpheSBEYWxleSwgSUVURiBFeGVjdXRpdmUgRGlyZWN0b3IN CkNvbGluIFBlcmtpbnMsIElSVEYgQ2hhaXINCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18NCklFVEYtQW5ub3VuY2UgbWFpbGluZyBsaXN0DQpJRVRGLUFu bm91bmNlQGlldGYub3JnDQpodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly93d3cu aWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9pZXRmLWFubm91bmNlX187ISFORXQ2eU1hTy1nayFS Ny04UjVjS2NVSGxPZ2R5SXUtOG1xSUQxcGRBb3Z2c25VS243aHpWc3g4dV9kWGk2WENWdDBETjBH b1ZhSHZUJA0KDQpKdW5pcGVyIEJ1c2luZXNzIFVzZSBPbmx5DQo= From nobody Tue May 12 15:47:10 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8DC083A09F4 for ; Tue, 12 May 2020 15:47:08 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.099 X-Spam-Level: X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=fing.edu.uy Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id s5rHUff74dFl for ; Tue, 12 May 2020 15:47:05 -0700 (PDT) Received: from smtp.fing.edu.uy (smtp.fing.edu.uy [164.73.32.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D23EE3A09CA for ; Tue, 12 May 2020 15:47:04 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.fing.edu.uy (Postfix) with ESMTP id 4433CE0E24; Tue, 12 May 2020 19:47:01 -0300 (-03) X-Virus-Scanned: amavisd-new at fing.edu.uy Received: from smtp.fing.edu.uy ([127.0.0.1]) by localhost (smtp.fing.edu.uy [127.0.0.1]) (amavisd-new, port 10024) with LMTP id gQ9aMNrNqMMw; Tue, 12 May 2020 19:46:57 -0300 (-03) Received: from [192.168.1.41] (r167-62-110-32.dialup.adsl.anteldata.net.uy [167.62.110.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: lalberro) by smtp.fing.edu.uy (Postfix) with ESMTPSA id 2C881E0AF3; Tue, 12 May 2020 19:46:57 -0300 (-03) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fing.edu.uy; s=default; t=1589323617; bh=dPid1VbVbU6VFXA1v+KqK8QQ7BxglPtJxuBNwMm/bO8=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=aAH6sd1n1Y1Zvos2EbR999N3VqatJE+4zn3D25kF6J34mQUxVAdtdoDx8OQ0Z7g47 oCarkeAnzX7Njl9ASeJQarMPVeyXoy88xc5uTL9FubdI9qyiPw8Orh2tQq3T8o8KWQ NqDDLyoArThRiYsXlhyik2KgNf46Xi3OLjusMcuA= To: rift@ietf.org Cc: Tony Przygienda , Bruno Rijsman References: <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> From: Leonardo Alberro Zimmermann Message-ID: <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> Date: Tue, 12 May 2020 19:46:56 -0300 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/alternative; boundary="------------A41B9C7AE82B42D005892BA5" Content-Language: es-ES Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 May 2020 22:47:09 -0000 This is a multi-part message in MIME format. --------------A41B9C7AE82B42D005892BA5 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Hello all, regarding the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at https://gitlab.com/fing-mina/datacenters/rift-dissector RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT. Regards, Leonardo El 26/3/20 a las 13:23, Tony Przygienda escribió: > Leonardo, that is a great project. Observe that depending on language > backend/thrift compiler different streams may represent the same > encoding so it's good to test it against more than one implementation. > We should get streams that has all possible LIEs and TIEs in it. > > If you run juniper standalone public package > https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build > a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a > v6/v4 links from a spine to a leaf. that will give you all the LIEs > and node TIEs and default prefixes. If you break a link via CLI you > will get disaggregation as well. If you struggle with that, ping me ... > > Having said that you can do all that with open source as well (but > observe we didn't pull open source to -11 draft yet which had some > schema changes albeit minor). you can pull the schema yourself with > Bruno's help or I'll get to it one of these days ;-) ... > > Architecturally, since RIFT will evolve and possibly move to newer > major schemas, I would suggest you provision for the possibility to > put into wireshark multiple schema files, basically you'd need to > compile multiple directories in differnt namespaces and use the > correct one depending on the major you found on packet envelope (you > can always use the newest minor you support on the major, they are > always compatible). > > --- tony > > > > On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann > > wrote: > > Hi everyone, > > as a part of this project we are developing a wireshark dissector > for RIFT. The dissection for the security envelope is ready and > tested. Now we are working on the Serialized RIFT Model Object > dissection and for preparing the testing we are looking for a > "known" trace, i.e we need a few packets and the exact values of > these fields in the Thrift model. So if anyone can help us we'll > be grateful. > > Regards, > Leonardo. > > El 18/3/20 a las 13:34, Antoni Przygienda escribió: >> >> Forwarding the discussion to the rift ietf list for further >> exposure & since I generally think it will be possibly more >> productive in a wider forum. Roma Tre University is working on >> Bruno’s open source and there’s a bunch of interesting tools >> they’re developing as well as you can read below. >> >> --- tony >> >> *From: *Mariano Scazzariello >> >> *Date: *Wednesday, March 18, 2020 at 9:10 AM >> *To: *Bruno Rijsman >> >> *Cc: *Antoni Przygienda >> , Leonardo Alberro Zimmermann >> , >> "tommasocaiazzi@gmail.com" >> , >> "lorenzoariemma@gmail.com" >> , >> Giuseppe Di Battista >> >> *Subject: *Re: RIFT protocol implementation >> >> Hi everyone, >> thanks for the extremely detailed suggestions! I have a lot of >> stuff which I can use to work on the implementation. Also thanks >> Tony for giving me further useful tips. >> >> Also, I'm happy that we agree on almost every implementation >> detail and I agree with your suggested variations (like the flag >> for the spf_run_direction method). >> >> About point C, I did not write anything since it seems quite easy >> to extend the Thrift model. If I have any issues, I'll surely ask >> you for some help. I also wrote a point D (which is how to handle >> the negative disaggregation in the RIB/FIB when received), but I >> read the Pascal slides (I add the link >> >> here, so everyone can access them easily) and the steps used in >> that presentation are the same that I thought. >> >> I still have some doubts about the special SPF run: >> *2) We will also need a new member field orig_neg_disagg_prefixes >> (once again of type set, I think) that contains the negatively >> disaggregated prefixes that are autonomously being originated >> based on the detection of fallen leafs based on the difference >> between the normal and special SPF run.* >> You are proposing to postpone the RIB/FIB update after the >> special SPF run (which can detect additional fallen leaf nodes). >> This is right,  but should this only occur on ToF nodes? If we >> consider a node X, which is not a ToF, that receives a negative >> disaggregation TIE, it should only add the prefix in the >> /prop_neg_disagg_prefixes /set and check if it received this >> prefix from all its parent nodes and propagate it if required. >> Then it should proceed to update its RIB/FIB, without running the >> special SPF. Am I right? >> >> About the flooding oscillations, Tony writes "Your best >> protection is scaled, randomized tests". Here at Roma Tre >> University we developed a tool called Kathará >> >> which is able to emulate network scenarios using Docker >> containers. Recently, we also developed a Fat Tree Generator, >> that automatically generates a fat tree topology starting from >> the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) >> that can be run in Kathará. It also auto-configures the routing >> protocol on each node (of course, we also included the >> RIFT-Python implementation). So we can generate Fat Tree >> topologies of any size and run tests on it to verify functional >> and behavioral aspects (and also gather routing information such >> as PDU size and count). We are also developing a Fat Tree Test >> Framework (in collaboration with Leonardo and the team at UY >> university) which implements typical data center network >> scenarios (such as link failure, node failure, fallen leaf, >> partitioned fabric and so on) to run integration tests on it. For >> example, we can check if the routing table of a node is equal to >> the expected one after a failure (e.g. loss of a multipath or a >> prefix). With this tool we can surely run randomized tests (at >> any scale, since Kathará supports Kubernetes) to ensure that no >> flooding oscillations occur. >> >> I agree to move the discussion on the RIFT WG mailing list. Maybe >> someone of you should introduce us and explain what we're doing. >> >> Thanks everyone for your time, >> Mariano. >> >> >> _______________________________________________ >> RIFT mailing list >> RIFT@ietf.org >> https://www.ietf.org/mailman/listinfo/rift > > > _______________________________________________ > RIFT mailing list > RIFT@ietf.org > https://www.ietf.org/mailman/listinfo/rift --------------A41B9C7AE82B42D005892BA5 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit

Hello all,

regarding the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at https://gitlab.com/fing-mina/datacenters/rift-dissector

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

El 26/3/20 a las 13:23, Tony Przygienda escribió:
Leonardo, that is a great project. Observe that depending on language backend/thrift compiler different streams may represent the same encoding so it's good to test it against more than one implementation. We should get streams that has all possible LIEs and TIEs in it.

If you run juniper standalone public package https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v4 links from a spine to a leaf. that will give you all the LIEs and node TIEs and default prefixes. If you break a link via CLI you will get disaggregation as well. If you struggle with that, ping me ...

Having said that you can do all that with open source as well (but observe we didn't pull open source to -11 draft yet which had some schema changes albeit minor). you can pull the schema yourself with Bruno's help or I'll get to it one of these days ;-) ...

Architecturally, since RIFT will evolve and possibly move to newer major schemas, I would suggest you provision for the possibility to put into wireshark multiple schema files, basically you'd need to compile multiple directories in differnt namespaces and use the correct one depending on the major you found on packet envelope (you can always use the newest minor you support on the major, they are always compatible).

--- tony



On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hi everyone,

as a part of this project we are developing a wireshark dissector for RIFT. The dissection for the security envelope is ready and tested. Now we are working on the Serialized RIFT Model Object dissection and for preparing the testing we are looking for a "known" trace, i.e we need a few packets and the exact values of these fields in the Thrift model. So if anyone can help us we'll be grateful.

Regards,
Leonardo.

El 18/3/20 a las 13:34, Antoni Przygienda escribió:

Forwarding the discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno’s open source and there’s a bunch of interesting tools they’re developing as well as you can read below.

 

--- tony

 

From: Mariano Scazzariello <mscazzariello@os.uniroma3.it>
Date: Wednesday, March 18, 2020 at 9:10 AM
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Antoni Przygienda <prz@juniper.net>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>
Subject: Re: RIFT protocol implementation

 

Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,  but should this only occur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg_prefixes set and check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here at Roma Tre University we developed a tool called Kathará which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathará. It also auto-configures the routing protocol on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathará supports Kubernetes) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we're doing.

Thanks everyone for your time,
Mariano.


_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift

_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift
--------------A41B9C7AE82B42D005892BA5-- From nobody Tue May 12 15:50:07 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C009A3A0C68 for ; Tue, 12 May 2020 15:50:06 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.097 X-Spam-Level: X-Spam-Status: No, score=-1.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eVPeesFVLiHp for ; Tue, 12 May 2020 15:50:04 -0700 (PDT) Received: from mail-il1-x12c.google.com (mail-il1-x12c.google.com [IPv6:2607:f8b0:4864:20::12c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 290133A09F4 for ; Tue, 12 May 2020 15:50:04 -0700 (PDT) Received: by mail-il1-x12c.google.com with SMTP id j2so3322150ilr.5 for ; Tue, 12 May 2020 15:50:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=v77lpOpoh4SL0E+VINBl7O8NFmAhbULqjudODDoS20M=; b=EoQZuCQOjkw/TCmY3SqsRS3WzYWOjd9mqH060QrHygTF0UgYWRDGr7bp0Wl86BiVef RP8Yw08mDXIBhpeT+vFFug6EOr3yis/K3Wqa5Mx50ARfkzyNZ24ry4rIb6EXju+6r1SL DxLcbkEpQI/y/Yq0ZI3dgw5pYpqWybyy8vcmu6UxU+KxQeI729mnSpd/BcvRPdy7Ndu3 kUbuKT6px6z689FFes9Cm6q0+LcnTgMCjN240EXopBAn56ksG4lXXejcPPlK5vrSc36k 01qvTFvXM+QqONPHmAmbZG2t3ioAENO/B+qEZSOg90NvMt1UDtfAUAmjjUnNbgtM8CD7 hMKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=v77lpOpoh4SL0E+VINBl7O8NFmAhbULqjudODDoS20M=; b=GATTCe9kWhX8upOUyrM9xwpqqwV76buCe+ZyVuzPP0GIz2B24YfIOBMFS0DZVTYTPJ Vt/6Lj7kM/w40oohvTJDTU02q0iEGjc28SZ60LDlMs9KNvASNjkUYWVYCgVW5r0nxT6k cQpyXvIfNURg8BThZ1JqD45wxMz5NBETTe+qbxJRbl0smxE+VA85bs9bqVGlggyxg5NT tJ8iUQgrK5Mqpry25bZpWbRiDEx4dhpo0ARuGlTjpJqFrac8AopdPftVY9R3JFkCgIOY uiRAEGRUcyMLkQkQ+N4wkHV+lw++nihAokj7CBsPNPsutWEnnSboINMuBPDR5KfySwQM 6KNQ== X-Gm-Message-State: AGi0PuYKI998pznt7gyvVAaDzlLv/CtzkkP57FoAjKK4emb/UV49jWh1 yVnZmTBIz4UTKw11BJfpDCb5WPBV2Fu2LCCWRjT+0I/w X-Google-Smtp-Source: APiQypIoFESqtZDBt/JQXCNDTm0JMSQl2jvp6uDjH9ERwXFhCgBPR+jAODekhioMlQ3FkJRKCSk1afTPNGTrGMJaepg= X-Received: by 2002:a05:6e02:e03:: with SMTP id a3mr2942393ilk.239.1589323803189; Tue, 12 May 2020 15:50:03 -0700 (PDT) MIME-Version: 1.0 References: <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> In-Reply-To: <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> From: Tony Przygienda Date: Tue, 12 May 2020 15:48:32 -0700 Message-ID: To: Leonardo Alberro Zimmermann Cc: rift@ietf.org, Bruno Rijsman Content-Type: multipart/alternative; boundary="000000000000b8e58e05a57b48f0" Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 May 2020 22:50:07 -0000 --000000000000b8e58e05a57b48f0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable multiple people were looking JUST for this. maybe next interim implementation experience. this was lighting fast ;-) -- tony On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann < lalberro@fing.edu.uy> wrote: > Hello all, > > regarding the development of a wireshark dissector for RIFT, we are happy > to introduce you our work. It is available at > https://gitlab.com/fing-mina/datacenters/rift-dissector > > RIFT C dissector is a complete Wireshark dissector for decoding RIFT > protocol. The code identifies all the RIFT packets and builds a complete > dissection for the TIE ones. This dissector has been tested with the > current implementations of RIFT. > > Regards, > Leonardo > El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3: > > Leonardo, that is a great project. Observe that depending on language > backend/thrift compiler different streams may represent the same encoding > so it's good to test it against more than one implementation. We should g= et > streams that has all possible LIEs and TIEs in it. > > If you run juniper standalone public package > https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build a > 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v= 4 > links from a spine to a leaf. that will give you all the LIEs and node TI= Es > and default prefixes. If you break a link via CLI you will get > disaggregation as well. If you struggle with that, ping me ... > > Having said that you can do all that with open source as well (but observ= e > we didn't pull open source to -11 draft yet which had some schema changes > albeit minor). you can pull the schema yourself with Bruno's help or I'll > get to it one of these days ;-) ... > > Architecturally, since RIFT will evolve and possibly move to newer major > schemas, I would suggest you provision for the possibility to put into > wireshark multiple schema files, basically you'd need to compile multiple > directories in differnt namespaces and use the correct one depending on t= he > major you found on packet envelope (you can always use the newest minor y= ou > support on the major, they are always compatible). > > --- tony > > > > On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann < > lalberro@fing.edu.uy> wrote: > >> Hi everyone, >> >> as a part of this project we are developing a wireshark dissector for >> RIFT. The dissection for the security envelope is ready and tested. Now = we >> are working on the Serialized RIFT Model Object dissection and for >> preparing the testing we are looking for a "known" trace, i.e we need a = few >> packets and the exact values of these fields in the Thrift model. So if >> anyone can help us we'll be grateful. >> >> Regards, >> Leonardo. >> El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3: >> >> Forwarding the discussion to the rift ietf list for further exposure & >> since I generally think it will be possibly more productive in a wider >> forum. Roma Tre University is working on Bruno=E2=80=99s open source and= there=E2=80=99s a >> bunch of interesting tools they=E2=80=99re developing as well as you can= read >> below. >> >> >> >> --- tony >> >> >> >> *From: *Mariano Scazzariello >> >> *Date: *Wednesday, March 18, 2020 at 9:10 AM >> *To: *Bruno Rijsman >> *Cc: *Antoni Przygienda , Leonardo >> Alberro Zimmermann , >> "tommasocaiazzi@gmail.com" >> , >> "lorenzoariemma@gmail.com" >> , Giuseppe Di >> Battista >> >> *Subject: *Re: RIFT protocol implementation >> >> >> >> Hi everyone, >> thanks for the extremely detailed suggestions! I have a lot of stuff >> which I can use to work on the implementation. Also thanks Tony for givi= ng >> me further useful tips. >> >> Also, I'm happy that we agree on almost every implementation detail and = I >> agree with your suggested variations (like the flag for the >> spf_run_direction method). >> >> About point C, I did not write anything since it seems quite easy to >> extend the Thrift model. If I have any issues, I'll surely ask you for s= ome >> help. I also wrote a point D (which is how to handle the negative >> disaggregation in the RIB/FIB when received), but I read the Pascal slid= es >> (I add the link >> >> here, so everyone can access them easily) and the steps used in that >> presentation are the same that I thought. >> >> I still have some doubts about the special SPF run: >> *2) We will also need a new member field orig_neg_disagg_prefixes (once >> again of type set, I think) that contains the negatively disaggregated >> prefixes that are autonomously being originated based on the detection o= f >> fallen leafs based on the difference between the normal and special SPF >> run.* >> You are proposing to postpone the RIB/FIB update after the special SPF >> run (which can detect additional fallen leaf nodes). This is right, but >> should this only occur on ToF nodes? If we consider a node X, which is n= ot >> a ToF, that receives a negative disaggregation TIE, it should only add t= he >> prefix in the *prop_neg_disagg_prefixes *set and check if it received >> this prefix from all its parent nodes and propagate it if required. Then= it >> should proceed to update its RIB/FIB, without running the special SPF. A= m I >> right? >> >> About the flooding oscillations, Tony writes "Your best protection is >> scaled, randomized tests". Here at Roma Tre University we developed a to= ol >> called Kathar=C3=A1 >> >> which is able to emulate network scenarios using Docker containers. >> Recently, we also developed a Fat Tree Generator, that automatically >> generates a fat tree topology starting from the fundamental parameters o= f a >> Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also >> auto-configures the routing protocol on each node (of course, we also >> included the RIFT-Python implementation). So we can generate Fat Tree >> topologies of any size and run tests on it to verify functional and >> behavioral aspects (and also gather routing information such as PDU size >> and count). We are also developing a Fat Tree Test Framework (in >> collaboration with Leonardo and the team at UY university) which impleme= nts >> typical data center network scenarios (such as link failure, node failur= e, >> fallen leaf, partitioned fabric and so on) to run integration tests on i= t. >> For example, we can check if the routing table of a node is equal to the >> expected one after a failure (e.g. loss of a multipath or a prefix). Wit= h >> this tool we can surely run randomized tests (at any scale, since Kathar= =C3=A1 >> supports Kubernetes) to ensure that no flooding oscillations occur. >> >> I agree to move the discussion on the RIFT WG mailing list. Maybe someon= e >> of you should introduce us and explain what we're doing. >> >> Thanks everyone for your time, >> Mariano. >> >> _______________________________________________ >> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rift >> >> > _______________________________________________ > RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rift > > --000000000000b8e58e05a57b48f0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
multiple people were looking JUST for this.

maybe next interim implementation experience. this was= lighting fast ;-)

-- tony

=

On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:
<= /div>
=20 =20 =20

Hello all,

regarding the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at ht= tps://gitlab.com/fing-mina/datacenters/rift-dissector

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3:
=20
Leonardo, that is a great project. Observe that depending on language backend/thrift compiler different streams may represent the same encoding so it's good to test it against more than one implementation. We should get streams that has all possible LIEs and TIEs in it.

If you run juniper standalone public package https://www.= juniper.net/us/en/dm/free-rift-trial/ you can easily build a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v4 links from a spine to a leaf. that will give you all the LIEs and node TIEs and default prefixes. If you break a link via CLI you will get disaggregation as well. If you struggle with that, ping me ...

Having said that you can do all that with open source as well (but observe we didn't pull open source to -11 draft yet which had some schema changes albeit minor). you can pull the schema yourself with Bruno's help or I'll get to it one o= f these days ;-) ...

Architecturally, since RIFT will evolve and possibly move to newer major schemas, I would suggest you provision for the possibility to put into wireshark multiple schema files, basically you'd need to compile multiple directories in differnt namespaces and use the correct one depending on the major you found on packet envelope (you can always use the newest minor you support on the major, they are always compatible).

--- tony



On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hi everyone,

as a part of this project we are developing a wireshark dissector for RIFT. The dissection for the security envelope is ready and tested. Now we are working on the Serialized RIFT Model Object dissection and for preparing the testing we are looking for a "known" trace, i.e= we need a few packets and the exact values of these fields in the Thrift model. So if anyone can help us we'll be grateful.

Regards,
Leonardo.

El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3:

Forwarding the discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno=E2=80=99s open source and there=E2=80=99s a bunch o= f interesting tools they=E2=80=99re developing as well as you can read below.

=C2=A0

--- tony

=C2=A0

From: Mar= iano Scazzariello <mscazzariello@os.uniroma3.it>
Date: Wednesday, March 18, 2020 at 9:10 AM
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Antoni Przygienda <prz@juniper.net>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>= ;
Subject: Re: RIFT protocol implementation

=C2=A0

Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction= method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,=C2=A0 but should this only occur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg_prefixes set and check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here a= t Roma Tre University we developed a tool called Kathar=C3=A1 which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also auto-configures the routing protoco= l on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathar=C3=A1 supports Kubernetes) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we're doing.

Thanks everyone for your time,
Mariano.


_______________________________________________
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift

_______________________________________________
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift
--000000000000b8e58e05a57b48f0-- From nobody Tue May 12 15:52:42 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8AEEC3A0C6E for ; Tue, 12 May 2020 15:52:41 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.097 X-Spam-Level: X-Spam-Status: No, score=-1.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xOWefbU1UiHK for ; Tue, 12 May 2020 15:52:39 -0700 (PDT) Received: from mail-io1-xd44.google.com (mail-io1-xd44.google.com [IPv6:2607:f8b0:4864:20::d44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 264493A0C6C for ; Tue, 12 May 2020 15:52:38 -0700 (PDT) Received: by mail-io1-xd44.google.com with SMTP id w11so15987832iov.8 for ; Tue, 12 May 2020 15:52:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/460y81phXWtfARAFYnY+jXP1pPigygklFwcjxG3pKk=; b=PZhHz6rnxolLNSIQvoJy0RkEln13imBIBJti5U6jIU0SNBSzOwt+yDCIWb4VzPWpd3 ozAmZ4gNYLNyriaYdwoNUIFLf2VNrN6CDtIPuAN3rUfFoRLqqiYnRfSsnURJ/H+LE/EY 8jasvdGCNDo8htktd3/Zsx6q2JbUnzP60tYCm7gugru6egjlWXLUqziIMFES8v/kXipr zFB3x9B+TO/xyo21UXZ4CSOwNP/lrfoUBRGTO9IWzSzPcLsfGSPSru/85qL6nOZev/QC qBcDosrc+SG6zLgAxHTDPssMkPMMFO7DcB0nPt7U0hTcBVIz8oA7rA+WlUk6RJo7ZDTm 4Bfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/460y81phXWtfARAFYnY+jXP1pPigygklFwcjxG3pKk=; b=jQMZvKPonyaY1RS+FQJUWtv2+yM7PR3t8qdNb+7zyQbvt4Ff1+F836wyL7V0WWBbS8 cRkeRCpQ05fZqxxQkAerrXWFr1pqpxd7vytlIOanB8jh6TwekQv4nHlUu4bzP0+DzxZ1 7ipjep8oey/7Q251fqtIbxcwFukMlp4xKHWJ04qNy1kvUNxidLFAiElLvvaloUJeHEI3 WpqrjuWosy7iPJzR4dqPJqS6xiTW37EHCjU06IqP6Mu0KnQYqABlYCwTCfS13rwREuRR KaAzutPKR6YSkCMWpJKi2kLwQq7BwItHi7fqtWKkq0Tna0uz/Q/YABxCWdDEbyYkmnoM ktAw== X-Gm-Message-State: AGi0PuYB8aQU4ZPBsxAT67QvRY4nhmQ/+xGQQHoRNAEPl8NFZjfXveYK Xo3tF+7fdSTB1yC0Eomx7RrwAarY8conwRKjtKc= X-Google-Smtp-Source: APiQypJqKIPAwOHia4cOeh7CQcCa5TeFFYfXgjiuCOxqxBAp1mpj/1q3KBHro90FkStFLlWz1/LA/wwbScQgqbNcm2k= X-Received: by 2002:a5d:9ac6:: with SMTP id x6mr22774397ion.191.1589323958213; Tue, 12 May 2020 15:52:38 -0700 (PDT) MIME-Version: 1.0 References: <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> In-Reply-To: From: Tony Przygienda Date: Tue, 12 May 2020 15:51:08 -0700 Message-ID: To: Leonardo Alberro Zimmermann Cc: rift@ietf.org, Bruno Rijsman Content-Type: multipart/alternative; boundary="000000000000f661a705a57b5159" Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 May 2020 22:52:42 -0000 --000000000000f661a705a57b5159 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable and quick question, why didn't you just push the binary into thrift backend to deserialize? People may send compressed binary formats etc and the encoding may change. Point of the modelling exercise -- tony On Tue, May 12, 2020 at 3:48 PM Tony Przygienda wrote= : > multiple people were looking JUST for this. > > maybe next interim implementation experience. this was lighting fast ;-) > > -- tony > > > On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann < > lalberro@fing.edu.uy> wrote: > >> Hello all, >> >> regarding the development of a wireshark dissector for RIFT, we are happ= y >> to introduce you our work. It is available at >> https://gitlab.com/fing-mina/datacenters/rift-dissector >> >> RIFT C dissector is a complete Wireshark dissector for decoding RIFT >> protocol. The code identifies all the RIFT packets and builds a complete >> dissection for the TIE ones. This dissector has been tested with the >> current implementations of RIFT. >> >> Regards, >> Leonardo >> El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3: >> >> Leonardo, that is a great project. Observe that depending on language >> backend/thrift compiler different streams may represent the same encodin= g >> so it's good to test it against more than one implementation. We should = get >> streams that has all possible LIEs and TIEs in it. >> >> If you run juniper standalone public package >> https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build a >> 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/= v4 >> links from a spine to a leaf. that will give you all the LIEs and node T= IEs >> and default prefixes. If you break a link via CLI you will get >> disaggregation as well. If you struggle with that, ping me ... >> >> Having said that you can do all that with open source as well (but >> observe we didn't pull open source to -11 draft yet which had some schem= a >> changes albeit minor). you can pull the schema yourself with Bruno's hel= p >> or I'll get to it one of these days ;-) ... >> >> Architecturally, since RIFT will evolve and possibly move to newer major >> schemas, I would suggest you provision for the possibility to put into >> wireshark multiple schema files, basically you'd need to compile multipl= e >> directories in differnt namespaces and use the correct one depending on = the >> major you found on packet envelope (you can always use the newest minor = you >> support on the major, they are always compatible). >> >> --- tony >> >> >> >> On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann < >> lalberro@fing.edu.uy> wrote: >> >>> Hi everyone, >>> >>> as a part of this project we are developing a wireshark dissector for >>> RIFT. The dissection for the security envelope is ready and tested. Now= we >>> are working on the Serialized RIFT Model Object dissection and for >>> preparing the testing we are looking for a "known" trace, i.e we need a= few >>> packets and the exact values of these fields in the Thrift model. So if >>> anyone can help us we'll be grateful. >>> >>> Regards, >>> Leonardo. >>> El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3: >>> >>> Forwarding the discussion to the rift ietf list for further exposure & >>> since I generally think it will be possibly more productive in a wider >>> forum. Roma Tre University is working on Bruno=E2=80=99s open source an= d there=E2=80=99s a >>> bunch of interesting tools they=E2=80=99re developing as well as you ca= n read >>> below. >>> >>> >>> >>> --- tony >>> >>> >>> >>> *From: *Mariano Scazzariello >>> >>> *Date: *Wednesday, March 18, 2020 at 9:10 AM >>> *To: *Bruno Rijsman >>> *Cc: *Antoni Przygienda , Leonardo >>> Alberro Zimmermann , >>> "tommasocaiazzi@gmail.com" >>> , >>> "lorenzoariemma@gmail.com" >>> , Giuseppe Di >>> Battista >>> >>> *Subject: *Re: RIFT protocol implementation >>> >>> >>> >>> Hi everyone, >>> thanks for the extremely detailed suggestions! I have a lot of stuff >>> which I can use to work on the implementation. Also thanks Tony for giv= ing >>> me further useful tips. >>> >>> Also, I'm happy that we agree on almost every implementation detail and >>> I agree with your suggested variations (like the flag for the >>> spf_run_direction method). >>> >>> About point C, I did not write anything since it seems quite easy to >>> extend the Thrift model. If I have any issues, I'll surely ask you for = some >>> help. I also wrote a point D (which is how to handle the negative >>> disaggregation in the RIB/FIB when received), but I read the Pascal sli= des >>> (I add the link >>> >>> here, so everyone can access them easily) and the steps used in that >>> presentation are the same that I thought. >>> >>> I still have some doubts about the special SPF run: >>> *2) We will also need a new member field orig_neg_disagg_prefixes (once >>> again of type set, I think) that contains the negatively disaggregated >>> prefixes that are autonomously being originated based on the detection = of >>> fallen leafs based on the difference between the normal and special SPF >>> run.* >>> You are proposing to postpone the RIB/FIB update after the special SPF >>> run (which can detect additional fallen leaf nodes). This is right, bu= t >>> should this only occur on ToF nodes? If we consider a node X, which is = not >>> a ToF, that receives a negative disaggregation TIE, it should only add = the >>> prefix in the *prop_neg_disagg_prefixes *set and check if it received >>> this prefix from all its parent nodes and propagate it if required. The= n it >>> should proceed to update its RIB/FIB, without running the special SPF. = Am I >>> right? >>> >>> About the flooding oscillations, Tony writes "Your best protection is >>> scaled, randomized tests". Here at Roma Tre University we developed a t= ool >>> called Kathar=C3=A1 >>> >>> which is able to emulate network scenarios using Docker containers. >>> Recently, we also developed a Fat Tree Generator, that automatically >>> generates a fat tree topology starting from the fundamental parameters = of a >>> Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also >>> auto-configures the routing protocol on each node (of course, we also >>> included the RIFT-Python implementation). So we can generate Fat Tree >>> topologies of any size and run tests on it to verify functional and >>> behavioral aspects (and also gather routing information such as PDU siz= e >>> and count). We are also developing a Fat Tree Test Framework (in >>> collaboration with Leonardo and the team at UY university) which implem= ents >>> typical data center network scenarios (such as link failure, node failu= re, >>> fallen leaf, partitioned fabric and so on) to run integration tests on = it. >>> For example, we can check if the routing table of a node is equal to th= e >>> expected one after a failure (e.g. loss of a multipath or a prefix). Wi= th >>> this tool we can surely run randomized tests (at any scale, since Katha= r=C3=A1 >>> supports Kubernetes) to ensure that no flooding oscillations occur. >>> >>> I agree to move the discussion on the RIFT WG mailing list. Maybe >>> someone of you should introduce us and explain what we're doing. >>> >>> Thanks everyone for your time, >>> Mariano. >>> >>> _______________________________________________ >>> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rif= t >>> >>> >> _______________________________________________ >> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rift >> >> --000000000000f661a705a57b5159 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
and quick question, why didn't you just push the = binary into thrift backend to deserialize? People may send compressed binar= y formats etc and the encoding may change. Point of the modelling exercise<= br>

-- tony


On Tue, May 1= 2, 2020 at 3:48 PM Tony Przygienda <tonysietf@gmail.com> wrote:
multiple people were looking JU= ST for this.

maybe next interim implementatio= n experience. this was lighting fast ;-)

-- t= ony


On Tue, May 12, 2020 at 3:47 PM Leonardo Albe= rro Zimmermann <lalberro@fing.edu.uy> wrote:
=20 =20 =20

Hello all,

regarding the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at ht= tps://gitlab.com/fing-mina/datacenters/rift-dissector

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3:
=20
Leonardo, that is a great project. Observe that depending on language backend/thrift compiler different streams may represent the same encoding so it's good to test it against more than one implementation. We should get streams that has all possible LIEs and TIEs in it.

If you run juniper standalone public package https://www.= juniper.net/us/en/dm/free-rift-trial/ you can easily build a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v4 links from a spine to a leaf. that will give you all the LIEs and node TIEs and default prefixes. If you break a link via CLI you will get disaggregation as well. If you struggle with that, ping me ...

Having said that you can do all that with open source as well (but observe we didn't pull open source to -11 draft yet which had some schema changes albeit minor). you can pull the schema yourself with Bruno's help or I'll get to it one o= f these days ;-) ...

Architecturally, since RIFT will evolve and possibly move to newer major schemas, I would suggest you provision for the possibility to put into wireshark multiple schema files, basically you'd need to compile multiple directories in differnt namespaces and use the correct one depending on the major you found on packet envelope (you can always use the newest minor you support on the major, they are always compatible).

--- tony



On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hi everyone,

as a part of this project we are developing a wireshark dissector for RIFT. The dissection for the security envelope is ready and tested. Now we are working on the Serialized RIFT Model Object dissection and for preparing the testing we are looking for a "known" trace, i.e= we need a few packets and the exact values of these fields in the Thrift model. So if anyone can help us we'll be grateful.

Regards,
Leonardo.

El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3:

Forwarding the discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno=E2=80=99s open source and there=E2=80=99s a bunch o= f interesting tools they=E2=80=99re developing as well as you can read below.

=C2=A0

--- tony

=C2=A0

From: Mar= iano Scazzariello <mscazzariello@os.uniroma3.it>
Date: Wednesday, March 18, 2020 at 9:10 AM
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Antoni Przygienda <prz@juniper.net>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>= ;
Subject: Re: RIFT protocol implementation

=C2=A0

Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction= method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,=C2=A0 but should this only occur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg_prefixes set and check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here a= t Roma Tre University we developed a tool called Kathar=C3=A1 which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also auto-configures the routing protoco= l on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathar=C3=A1 supports Kubernetes) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we're doing.

Thanks everyone for your time,
Mariano.


_______________________________________________
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift

_______________________________________________
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift
--000000000000f661a705a57b5159-- From nobody Wed May 13 10:44:59 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2286A3A0062 for ; Wed, 13 May 2020 10:44:56 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.099 X-Spam-Level: X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=fing.edu.uy Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id P4xiW7tvZWZ4 for ; Wed, 13 May 2020 10:44:52 -0700 (PDT) Received: from smtp.fing.edu.uy (smtp.fing.edu.uy [164.73.32.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CF0073A00B2 for ; Wed, 13 May 2020 10:44:51 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.fing.edu.uy (Postfix) with ESMTP id DDF65E0E32; Wed, 13 May 2020 14:44:48 -0300 (-03) X-Virus-Scanned: amavisd-new at fing.edu.uy Authentication-Results: smtp.fing.edu.uy (amavisd-new); dkim=pass (1024-bit key) header.d=fing.edu.uy Received: from smtp.fing.edu.uy ([127.0.0.1]) by localhost (smtp.fing.edu.uy [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 82CUUPHL45_K; Wed, 13 May 2020 14:44:44 -0300 (-03) Received: from [192.168.1.41] (r190-135-15-59.dialup.adsl.anteldata.net.uy [190.135.15.59]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: lalberro) by smtp.fing.edu.uy (Postfix) with ESMTPSA id 7DD2EE0E3A; Wed, 13 May 2020 14:44:44 -0300 (-03) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fing.edu.uy; s=default; t=1589391884; bh=dNJ82adiagGKaHLPU+y3C16CgGkIOLqJXqAZTpj5L8Q=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=dkzUgq0S/99ijaLX8VmW12F25akxBqpqyZMSt7IjESjlPdXO4vr8PWw5C0ks28YBu ChZ3AYSrjt3ROCmGdRVEvrDEtJW7yACsmCZ0JRVS4t9yTsNE+1/TB1ca+WEzpOHDLj UOcj3xU532rxwa1VOU0v3UVRqGj3th19jHLvRQ/E= To: Tony Przygienda Cc: rift@ietf.org, Bruno Rijsman , Eduardo Grampin , Alberto Castro , Maximiliano Lucero , agustina.parnizari@fing.edu.uy References: <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> From: Leonardo Alberro Zimmermann Message-ID: <547029fd-d545-5e67-8fd2-0b560d6ce82b@fing.edu.uy> Date: Wed, 13 May 2020 14:44:15 -0300 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/alternative; boundary="------------21D04F99A93A9E6CEBFEEC32" Content-Language: es-ES Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 May 2020 17:44:56 -0000 This is a multi-part message in MIME format. --------------21D04F99A93A9E6CEBFEEC32 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit this is an approach that we were discussing recently, I think we take this way due to our goals (a functional disector of TIE packets in order to do some experiments with the Roma Tre team) but the rest of the team (cc) could correct me :) Regards, Leonardo El 12/5/20 a las 19:51, Tony Przygienda escribió: > and quick question, why didn't you just push the binary into thrift > backend to deserialize? People may send compressed binary formats etc > and the encoding may change. Point of the modelling exercise > > -- tony > > > On Tue, May 12, 2020 at 3:48 PM Tony Przygienda > wrote: > > multiple people were looking JUST for this. > > maybe next interim implementation experience. this was lighting > fast ;-) > > -- tony > > > On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann > > wrote: > > Hello all, > > regarding the development of a wireshark dissector for RIFT, > we are happy to introduce you our work. It is available at > https://gitlab.com/fing-mina/datacenters/rift-dissector > > RIFT C dissector is a complete Wireshark dissector for > decoding RIFT protocol. The code identifies all the RIFT > packets and builds a complete dissection for the TIE ones. > This dissector has been tested with the current > implementations of RIFT. > > Regards, > Leonardo > > El 26/3/20 a las 13:23, Tony Przygienda escribió: >> Leonardo, that is a great project. Observe that depending on >> language backend/thrift compiler different streams may >> represent the same encoding so it's good to test it against >> more than one implementation. We should get streams that has >> all possible LIEs and TIEs in it. >> >> If you run juniper standalone public package >> https://www.juniper.net/us/en/dm/free-rift-trial/ you can >> easily build a 2x2 yaml topology and just snoop on a UDP >> port. I suggest snooping a v6/v4 links from a spine to a >> leaf. that will give you all the LIEs and node TIEs and >> default prefixes. If you break a link via CLI you will get >> disaggregation as well. If you struggle with that, ping me ... >> >> Having said that you can do all that with open source as well >> (but observe we didn't pull open source to -11 draft yet >> which had some schema changes albeit minor). you can pull the >> schema yourself with Bruno's help or I'll get to it one of >> these days ;-) ... >> >> Architecturally, since RIFT will evolve and possibly move to >> newer major schemas, I would suggest you provision for the >> possibility to put into wireshark multiple schema files, >> basically you'd need to compile multiple directories in >> differnt namespaces and use the correct one depending on the >> major you found on packet envelope (you can always use the >> newest minor you support on the major, they are always >> compatible). >> >> --- tony >> >> >> >> On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann >> > wrote: >> >> Hi everyone, >> >> as a part of this project we are developing a wireshark >> dissector for RIFT. The dissection for the security >> envelope is ready and tested. Now we are working on the >> Serialized RIFT Model Object dissection and for preparing >> the testing we are looking for a "known" trace, i.e we >> need a few packets and the exact values of these fields >> in the Thrift model. So if anyone can help us we'll be >> grateful. >> >> Regards, >> Leonardo. >> >> El 18/3/20 a las 13:34, Antoni Przygienda escribió: >>> >>> Forwarding the discussion to the rift ietf list for >>> further exposure & since I generally think it will be >>> possibly more productive in a wider forum. Roma Tre >>> University is working on Bruno’s open source and there’s >>> a bunch of interesting tools they’re developing as well >>> as you can read below. >>> >>> --- tony >>> >>> *From: *Mariano Scazzariello >>> >>> >>> *Date: *Wednesday, March 18, 2020 at 9:10 AM >>> *To: *Bruno Rijsman >>> >>> *Cc: *Antoni Przygienda >>> , Leonardo Alberro Zimmermann >>> , >>> "tommasocaiazzi@gmail.com" >>> >>> >>> , >>> "lorenzoariemma@gmail.com" >>> >>> >>> , Giuseppe Di Battista >>> >>> >>> *Subject: *Re: RIFT protocol implementation >>> >>> Hi everyone, >>> thanks for the extremely detailed suggestions! I have a >>> lot of stuff which I can use to work on the >>> implementation. Also thanks Tony for giving me further >>> useful tips. >>> >>> Also, I'm happy that we agree on almost every >>> implementation detail and I agree with your suggested >>> variations (like the flag for the spf_run_direction method). >>> >>> About point C, I did not write anything since it seems >>> quite easy to extend the Thrift model. If I have any >>> issues, I'll surely ask you for some help. I also wrote >>> a point D (which is how to handle the negative >>> disaggregation in the RIB/FIB when received), but I read >>> the Pascal slides (I add the link >>> >>> here, so everyone can access them easily) and the steps >>> used in that presentation are the same that I thought. >>> >>> I still have some doubts about the special SPF run: >>> *2) We will also need a new member field >>> orig_neg_disagg_prefixes (once again of type set, I >>> think) that contains the negatively disaggregated >>> prefixes that are autonomously being originated based on >>> the detection of fallen leafs based on the difference >>> between the normal and special SPF run.* >>> You are proposing to postpone the RIB/FIB update after >>> the special SPF run (which can detect additional fallen >>> leaf nodes). This is right,  but should this only occur >>> on ToF nodes? If we consider a node X, which is not a >>> ToF, that receives a negative disaggregation TIE, it >>> should only add the prefix in the >>> /prop_neg_disagg_prefixes /set and check if it received >>> this prefix from all its parent nodes and propagate it >>> if required. Then it should proceed to update its >>> RIB/FIB, without running the special SPF. Am I right? >>> >>> About the flooding oscillations, Tony writes "Your best >>> protection is scaled, randomized tests". Here at Roma >>> Tre University we developed a tool called Kathará >>> >>> which is able to emulate network scenarios using Docker >>> containers. Recently, we also developed a Fat Tree >>> Generator, that automatically generates a fat tree >>> topology starting from the fundamental parameters of a >>> Fat Tree (K_LEAF, K_TOP and R) that can be run in >>> Kathará. It also auto-configures the routing protocol on >>> each node (of course, we also included the RIFT-Python >>> implementation). So we can generate Fat Tree topologies >>> of any size and run tests on it to verify functional and >>> behavioral aspects (and also gather routing information >>> such as PDU size and count). We are also developing a >>> Fat Tree Test Framework (in collaboration with Leonardo >>> and the team at UY university) which implements typical >>> data center network scenarios (such as link failure, >>> node failure, fallen leaf, partitioned fabric and so on) >>> to run integration tests on it. For example, we can >>> check if the routing table of a node is equal to the >>> expected one after a failure (e.g. loss of a multipath >>> or a prefix). With this tool we can surely run >>> randomized tests (at any scale, since Kathará supports >>> Kubernetes) to ensure that no flooding oscillations occur. >>> >>> I agree to move the discussion on the RIFT WG mailing >>> list. Maybe someone of you should introduce us and >>> explain what we're doing. >>> >>> Thanks everyone for your time, >>> Mariano. >>> >>> >>> _______________________________________________ >>> RIFT mailing list >>> RIFT@ietf.org >>> https://www.ietf.org/mailman/listinfo/rift >> >> >> _______________________________________________ >> RIFT mailing list >> RIFT@ietf.org >> https://www.ietf.org/mailman/listinfo/rift > --------------21D04F99A93A9E6CEBFEEC32 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit

this is an approach that we were discussing recently, I think we take this way due to our goals (a functional disector of TIE packets in order to do some experiments with the Roma Tre team) but the rest of the team (cc) could correct me :)

Regards,
Leonardo

El 12/5/20 a las 19:51, Tony Przygienda escribió:
and quick question, why didn't you just push the binary into thrift backend to deserialize? People may send compressed binary formats etc and the encoding may change. Point of the modelling exercise

-- tony


On Tue, May 12, 2020 at 3:48 PM Tony Przygienda <tonysietf@gmail.com> wrote:
multiple people were looking JUST for this.

maybe next interim implementation experience. this was lighting fast ;-)

-- tony


On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hello all,

regarding the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at https://gitlab.com/fing-mina/datacenters/rift-dissector

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

El 26/3/20 a las 13:23, Tony Przygienda escribió:
Leonardo, that is a great project. Observe that depending on language backend/thrift compiler different streams may represent the same encoding so it's good to test it against more than one implementation. We should get streams that has all possible LIEs and TIEs in it.

If you run juniper standalone public package https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v4 links from a spine to a leaf. that will give you all the LIEs and node TIEs and default prefixes. If you break a link via CLI you will get disaggregation as well. If you struggle with that, ping me ...

Having said that you can do all that with open source as well (but observe we didn't pull open source to -11 draft yet which had some schema changes albeit minor). you can pull the schema yourself with Bruno's help or I'll get to it one of these days ;-) ...

Architecturally, since RIFT will evolve and possibly move to newer major schemas, I would suggest you provision for the possibility to put into wireshark multiple schema files, basically you'd need to compile multiple directories in differnt namespaces and use the correct one depending on the major you found on packet envelope (you can always use the newest minor you support on the major, they are always compatible).

--- tony



On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hi everyone,

as a part of this project we are developing a wireshark dissector for RIFT. The dissection for the security envelope is ready and tested. Now we are working on the Serialized RIFT Model Object dissection and for preparing the testing we are looking for a "known" trace, i.e we need a few packets and the exact values of these fields in the Thrift model. So if anyone can help us we'll be grateful.

Regards,
Leonardo.

El 18/3/20 a las 13:34, Antoni Przygienda escribió:

Forwarding the discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno’s open source and there’s a bunch of interesting tools they’re developing as well as you can read below.

 

--- tony

 

From: Mariano Scazzariello <mscazzariello@os.uniroma3.it>
Date: Wednesday, March 18, 2020 at 9:10 AM
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Antoni Przygienda <prz@juniper.net>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>
Subject: Re: RIFT protocol implementation

 

Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,  but should this only occur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg_prefixes set and check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here at Roma Tre University we developed a tool called Kathará which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathará. It also auto-configures the routing protocol on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathará supports Kubernetes) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we're doing.

Thanks everyone for your time,
Mariano.


_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift

_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift
--------------21D04F99A93A9E6CEBFEEC32-- From nobody Wed May 13 17:05:19 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1D2653A082A for ; Wed, 13 May 2020 17:05:18 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.097 X-Spam-Level: X-Spam-Status: No, score=-1.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FpZFtARNOodw for ; Wed, 13 May 2020 17:05:14 -0700 (PDT) Received: from mail-il1-x129.google.com (mail-il1-x129.google.com [IPv6:2607:f8b0:4864:20::129]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BBEF43A07BD for ; Wed, 13 May 2020 17:05:14 -0700 (PDT) Received: by mail-il1-x129.google.com with SMTP id e8so466323ilm.7 for ; Wed, 13 May 2020 17:05:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AFYqIEiwCgM16y+tnaspjBC28gbyy69gELdYpcN0dtw=; b=KfaNOgU98g6PDfOPdTguW6H7d9RHu2ciEph+m425QGitbqseexajtYRnrehWi7Uoro ZOIeIDt8BiL5gjah4IQkexDbyp9e0EA+GQZRUMGHLXOoMjNrb6bBnDDce02RYtUSJ5W5 hYQGAadgnFw32lhtTHeN13luKz3tFPxXZhT4dwYAh0oe6YKwzChU7QnK6BQ3mxBzw0cb bk2AM+XIw5rOCXv5lun4fDVgINOViRjSYRIqDe9oPlLsu+zC7Zlbpkoo05oOFmeU51yP Mlw5ogogcCL6wCDBZnGO35YDOWOmt9QrVmZYGJE6qkMI86sV64YnQ+5+A0fIl8dvMe1p JCFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AFYqIEiwCgM16y+tnaspjBC28gbyy69gELdYpcN0dtw=; b=FvrYGv/BEr0bArsEjUIF/n9FMB2cbIzHiK3qRhJDeod3jWjNYvmHmX85rzgFUN2N3u bZvCr4+0f/uY+usyRSEaB0DsCGTuJnhl2QhFVmvkQhc9HU1vyZdgUldFzjlhFmgGITS3 NBxhjBhT5T3iXdEuyY9hQPQ3mGQnWwppM9scsVTz5FbbEMacwW0Px48L97yR+hMduyFx B+zH6Gx5/tN0GsuAvfMzNmTqAX5IlR4NmizkivZ4kO8CWGS9KuuasNAppN7QCe0/mOWf kTcXkqisSRO+DobA8y+zv992HbjVzjcTfpnnIlhODghq6vEzRzgHEGPFaVzPWS4AKQvW 7G4g== X-Gm-Message-State: AOAM533Ud8nvrbt9MRORCZkwpJvvQorGPe+s0aL5Eb2n1xbh77yu0wnm VLVmokPc4d+ReqlUKjYTUNzhDsgxJ0s2bcAF+LU= X-Google-Smtp-Source: ABdhPJwcKtwn8fIILG1thA1fU1vAslDNAmK3Fsyb78z6xDAhEmyNC3el7wwJjNOyn4fF5XJm7PpIGgp4zkmKCwc3Kuk= X-Received: by 2002:a92:a053:: with SMTP id b19mr1900820ilm.156.1589414713803; Wed, 13 May 2020 17:05:13 -0700 (PDT) MIME-Version: 1.0 References: <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> <547029fd-d545-5e67-8fd2-0b560d6ce82b@fing.edu.uy> In-Reply-To: <547029fd-d545-5e67-8fd2-0b560d6ce82b@fing.edu.uy> From: Tony Przygienda Date: Wed, 13 May 2020 17:03:42 -0700 Message-ID: To: Leonardo Alberro Zimmermann Cc: rift@ietf.org, Bruno Rijsman , Eduardo Grampin , Alberto Castro , Maximiliano Lucero , agustina.parnizari@fing.edu.uy Content-Type: multipart/alternative; boundary="0000000000006acadb05a590735f" Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 00:05:18 -0000 --0000000000006acadb05a590735f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable well, it makes most sense if you have something that can actually deser/ser a thrift object into something a generic formatted in wireshark can put out. that way there is prety much zilch manual code. The ser/deser in C++ for thrift is very good, also in python, I tried some other languages but not C. In case of doubt ping Luca Deri in Parma pls, he's a dear old friend from Labs times and one of the original wireshark authors AFAIK -- tony On Wed, May 13, 2020 at 10:44 AM Leonardo Alberro Zimmermann < lalberro@fing.edu.uy> wrote: > this is an approach that we were discussing recently, I think we take thi= s > way due to our goals (a functional disector of TIE packets in order to do > some experiments with the Roma Tre team) but the rest of the team (cc) > could correct me :) > > Regards, > Leonardo > El 12/5/20 a las 19:51, Tony Przygienda escribi=C3=B3: > > and quick question, why didn't you just push the binary into thrift > backend to deserialize? People may send compressed binary formats etc and > the encoding may change. Point of the modelling exercise > > -- tony > > > On Tue, May 12, 2020 at 3:48 PM Tony Przygienda > wrote: > >> multiple people were looking JUST for this. >> >> maybe next interim implementation experience. this was lighting fast ;-) >> >> -- tony >> >> >> On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann < >> lalberro@fing.edu.uy> wrote: >> >>> Hello all, >>> >>> regarding the development of a wireshark dissector for RIFT, we are >>> happy to introduce you our work. It is available at >>> https://gitlab.com/fing-mina/datacenters/rift-dissector >>> >>> RIFT C dissector is a complete Wireshark dissector for decoding RIFT >>> protocol. The code identifies all the RIFT packets and builds a complet= e >>> dissection for the TIE ones. This dissector has been tested with the >>> current implementations of RIFT. >>> >>> Regards, >>> Leonardo >>> El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3: >>> >>> Leonardo, that is a great project. Observe that depending on language >>> backend/thrift compiler different streams may represent the same encodi= ng >>> so it's good to test it against more than one implementation. We should= get >>> streams that has all possible LIEs and TIEs in it. >>> >>> If you run juniper standalone public package >>> https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build >>> a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a >>> v6/v4 links from a spine to a leaf. that will give you all the LIEs and >>> node TIEs and default prefixes. If you break a link via CLI you will ge= t >>> disaggregation as well. If you struggle with that, ping me ... >>> >>> Having said that you can do all that with open source as well (but >>> observe we didn't pull open source to -11 draft yet which had some sche= ma >>> changes albeit minor). you can pull the schema yourself with Bruno's he= lp >>> or I'll get to it one of these days ;-) ... >>> >>> Architecturally, since RIFT will evolve and possibly move to newer majo= r >>> schemas, I would suggest you provision for the possibility to put into >>> wireshark multiple schema files, basically you'd need to compile multip= le >>> directories in differnt namespaces and use the correct one depending on= the >>> major you found on packet envelope (you can always use the newest minor= you >>> support on the major, they are always compatible). >>> >>> --- tony >>> >>> >>> >>> On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann < >>> lalberro@fing.edu.uy> wrote: >>> >>>> Hi everyone, >>>> >>>> as a part of this project we are developing a wireshark dissector for >>>> RIFT. The dissection for the security envelope is ready and tested. No= w we >>>> are working on the Serialized RIFT Model Object dissection and for >>>> preparing the testing we are looking for a "known" trace, i.e we need = a few >>>> packets and the exact values of these fields in the Thrift model. So i= f >>>> anyone can help us we'll be grateful. >>>> >>>> Regards, >>>> Leonardo. >>>> El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3: >>>> >>>> Forwarding the discussion to the rift ietf list for further exposure & >>>> since I generally think it will be possibly more productive in a wider >>>> forum. Roma Tre University is working on Bruno=E2=80=99s open source a= nd there=E2=80=99s a >>>> bunch of interesting tools they=E2=80=99re developing as well as you c= an read >>>> below. >>>> >>>> >>>> >>>> --- tony >>>> >>>> >>>> >>>> *From: *Mariano Scazzariello >>>> >>>> *Date: *Wednesday, March 18, 2020 at 9:10 AM >>>> *To: *Bruno Rijsman >>>> *Cc: *Antoni Przygienda , Leonardo >>>> Alberro Zimmermann , >>>> "tommasocaiazzi@gmail.com" >>>> , >>>> "lorenzoariemma@gmail.com" >>>> , Giuseppe Di >>>> Battista >>>> >>>> *Subject: *Re: RIFT protocol implementation >>>> >>>> >>>> >>>> Hi everyone, >>>> thanks for the extremely detailed suggestions! I have a lot of stuff >>>> which I can use to work on the implementation. Also thanks Tony for gi= ving >>>> me further useful tips. >>>> >>>> Also, I'm happy that we agree on almost every implementation detail an= d >>>> I agree with your suggested variations (like the flag for the >>>> spf_run_direction method). >>>> >>>> About point C, I did not write anything since it seems quite easy to >>>> extend the Thrift model. If I have any issues, I'll surely ask you for= some >>>> help. I also wrote a point D (which is how to handle the negative >>>> disaggregation in the RIB/FIB when received), but I read the Pascal sl= ides >>>> (I add the link >>>> >>>> here, so everyone can access them easily) and the steps used in that >>>> presentation are the same that I thought. >>>> >>>> I still have some doubts about the special SPF run: >>>> *2) We will also need a new member field orig_neg_disagg_prefixes (onc= e >>>> again of type set, I think) that contains the negatively disaggregated >>>> prefixes that are autonomously being originated based on the detection= of >>>> fallen leafs based on the difference between the normal and special SP= F >>>> run.* >>>> You are proposing to postpone the RIB/FIB update after the special SPF >>>> run (which can detect additional fallen leaf nodes). This is right, b= ut >>>> should this only occur on ToF nodes? If we consider a node X, which is= not >>>> a ToF, that receives a negative disaggregation TIE, it should only add= the >>>> prefix in the *prop_neg_disagg_prefixes *set and check if it received >>>> this prefix from all its parent nodes and propagate it if required. Th= en it >>>> should proceed to update its RIB/FIB, without running the special SPF.= Am I >>>> right? >>>> >>>> About the flooding oscillations, Tony writes "Your best protection is >>>> scaled, randomized tests". Here at Roma Tre University we developed a = tool >>>> called Kathar=C3=A1 >>>> >>>> which is able to emulate network scenarios using Docker containers. >>>> Recently, we also developed a Fat Tree Generator, that automatically >>>> generates a fat tree topology starting from the fundamental parameters= of a >>>> Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It als= o >>>> auto-configures the routing protocol on each node (of course, we also >>>> included the RIFT-Python implementation). So we can generate Fat Tree >>>> topologies of any size and run tests on it to verify functional and >>>> behavioral aspects (and also gather routing information such as PDU si= ze >>>> and count). We are also developing a Fat Tree Test Framework (in >>>> collaboration with Leonardo and the team at UY university) which imple= ments >>>> typical data center network scenarios (such as link failure, node fail= ure, >>>> fallen leaf, partitioned fabric and so on) to run integration tests on= it. >>>> For example, we can check if the routing table of a node is equal to t= he >>>> expected one after a failure (e.g. loss of a multipath or a prefix). W= ith >>>> this tool we can surely run randomized tests (at any scale, since Kath= ar=C3=A1 >>>> supports Kubernetes) to ensure that no flooding oscillations occur. >>>> >>>> I agree to move the discussion on the RIFT WG mailing list. Maybe >>>> someone of you should introduce us and explain what we're doing. >>>> >>>> Thanks everyone for your time, >>>> Mariano. >>>> >>>> _______________________________________________ >>>> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/ri= ft >>>> >>>> >>> _______________________________________________ >>> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rif= t >>> >>> --0000000000006acadb05a590735f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
well, it makes most sense if you have something that = can actually deser/ser a thrift object into something a generic formatted i= n wireshark can put out. that way there is prety much zilch manual code. Th= e ser/deser in C++ for thrift is very good, also in python, I tried some ot= her languages but not C. In case of doubt ping Luca Deri in Parma pls, he&#= 39;s a dear old friend from Labs times and one of the original wireshark au= thors AFAIK

-- tony

On Wed, May 13, 2020= at 10:44 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:
=20 =20 =20

this is an approach that we were discussing recently, I think we take this way due to our goals (a functional disector of TIE packets in order to do some experiments with the Roma Tre team) but the rest of the team (cc) could correct me :)

Regards,
Leonardo

El 12/5/20 a las 19:51, Tony Przygienda escribi=C3=B3:
=20
and quick question, why didn't you just push the binary into thrift backend to deserialize? People may send compressed binary formats etc and the encoding may change. Point of the modelling exercise

-- tony


On Tue, May 12, 2020 at 3:48 PM Tony Przygienda <tonysietf@gmail.com> wrote:
multiple people were looking JUST for this.

maybe next interim implementation experience. this was lighting fast ;-)

-- tony


On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hello all,

regarding the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at https://gitlab.com/fing-mina/d= atacenters/rift-dissector

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3:=
Leonardo, that is a great project. Observe that depending on language backend/thrift compiler different streams may represent the same encoding so it's good to test it against more than one implementation. We should get streams that has all possible LIEs and TIEs in it.

If you run juniper standalone public package = https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v4 links from a spine to a leaf. that will give you all the LIEs and node TIEs and default prefixes. If you break a link via CLI you will get disaggregation as well. If you struggle with that, ping me ...

Having said that you can do all that with open source as well (but observe we didn't pull open source to -11 draft yet which had some schema changes albeit minor). you can pull the schema yourself with Bruno's help or I'll get to it = one of these days ;-) ...

Architecturally, since RIFT will evolve and possibly move to newer major schemas, I would suggest you provision for the possibility to put into wireshark multiple schema files, basically you'd need to compile multiple directories in differnt namespaces and use the correct one depending on the major you found on packet envelope (you can always use the newest minor you support on the major, they are always compatible).

--- tony



On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hi everyone,

as a part of this project we are developing a wireshark dissector for RIFT. The dissection for the security envelope is ready and tested. Now we are working on the Serialized RIFT Model Object dissection and for preparing the testing we are looking for a "known" tr= ace, i.e we need a few packets and the exact values of these fields in the Thrift model. So if anyone can help us we'll be grateful.

Regards,
Leonardo.

El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3:

Forwarding the discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno=E2=80=99s open source and th= ere=E2=80=99s a bunch of interesting tools they=E2=80=99re developing as well as you can read below.

=C2=A0

--- tony

=C2=A0

=C2=A0

Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,=C2=A0 but should this only occ= ur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg= _prefixes set and check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here at Roma Tre University we developed a tool called Kathar=C3=A1 which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also auto-configures the routing protocol on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathar=C3=A1 supports Kubernetes= ) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we'r= e doing.

Thanks everyone for your time,
Mariano.


____________________________________________=
___
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift

_______________________________________________
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift
--0000000000006acadb05a590735f-- From nobody Thu May 14 05:59:49 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 480D03A0A10 for ; Thu, 14 May 2020 05:59:48 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.097 X-Spam-Level: X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3670mjb21mXE for ; Thu, 14 May 2020 05:59:45 -0700 (PDT) Received: from mail-ua1-x942.google.com (mail-ua1-x942.google.com [IPv6:2607:f8b0:4864:20::942]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C81143A0A0F for ; Thu, 14 May 2020 05:59:44 -0700 (PDT) Received: by mail-ua1-x942.google.com with SMTP id 36so1073285uaf.9 for ; Thu, 14 May 2020 05:59:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=u9MNXzZrq+GlSryL1iHQ0LVEQlVZ3lptMPxpiikj8Ew=; b=fi9kdjHgM9JaO5wQ0NKeFmywlF/eyycJEvMColMfcs77FjJ9yOveFQYPYz2l4Yy/pq Nc/t3787G01QukQHb+/CrhvSRj2aoD+lgtS0esH+sSziudxQ81TpRoHRB+QzYgcONbR7 K8EYkKMB0QIkc+Tw03oWQIA3Au28CiN5gF5CM4tlIkKX9q2r0kEHzu7qADkeVxv5IVfw Hjca/LZKf7pWGv2qMqgKSDodiN4vH6DgjI64CrOUzT/E8dtk+hYFBYmNwVosoLpOypNp +5eJuk0GWvdhx95dv7btlNcpJAr+gaE1GSOGVTjHWYGyVKE0lmTO5a6t2yrQsKibVKEM q/KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=u9MNXzZrq+GlSryL1iHQ0LVEQlVZ3lptMPxpiikj8Ew=; b=RkGrBrwZCHMfwI31/xLISp8YEc1ky4o18KU29+J7mf+qTDNs9VdARXCm+RWmxavfKs 7uczgsSEQ0xC7TotwA/LhFmrmAvADXIS8Vsduo8u80eNGpGhC8DtdzyDzHZ0TldFWUwg BajrXiCi7BnQ+XgFxU7g/GcHaC+XjM0du1BNtoDerRr4VlXORzzhL/17j1WPPTUnf58g nFD83NEV1O/KhSwBWRLwYo5DVfZlsTWLO43rRehy8aCz1yt57M1Hh+YWiaMdA3IpsC5A SNhPZFg2THSer9w4IVx8mciip1CKE+uQRVMrrO6ty0WErGTmMbJwos7T9jlKwuj2Mns1 uIRw== X-Gm-Message-State: AOAM532Cyhd07OIYa5mErFBLXefZmhpy7PL09TQOxIbBqLdMfjxWAX80 2PFOEjW6gEnzfZIFSp/NTxI= X-Google-Smtp-Source: ABdhPJxxGpfNdroP21Bdii5anR/6MS/KYofpPVUBXSnhokri6PRaZ8T1I6aTzL84rjksyZSLr45MUw== X-Received: by 2002:ab0:5ca:: with SMTP id e68mr3554288uae.19.1589461183439; Thu, 14 May 2020 05:59:43 -0700 (PDT) Received: from brunos-macbook.conexion.com (wisp-63.conexion.com. [168.234.219.63]) by smtp.gmail.com with ESMTPSA id o3sm689910vkc.6.2020.05.14.05.59.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 May 2020 05:59:42 -0700 (PDT) From: Bruno Rijsman Message-Id: <3594E151-C392-4959-A4F9-8744D3621CCA@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_DDF99A2E-9096-453E-A0A4-AA411506B590" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Date: Thu, 14 May 2020 06:59:39 -0600 In-Reply-To: Cc: Leonardo Alberro Zimmermann , rift@ietf.org To: Tony Przygienda References: <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> X-Mailer: Apple Mail (2.3445.104.11) Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 12:59:49 -0000 --Apple-Mail=_DDF99A2E-9096-453E-A0A4-AA411506B590 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 One issue with using the Thrift decoder generated by the Thrift compiler = is that the user interface of Wireshark allows you to highlight certain = fields in the decoded message and automatically highlights the = corresponding bytes in the hexdump of the binary message. Thus the = Thrift decoder used in Wireshark must (a) know the exact order in which = the fields occurred in the binary message, which may not be the same = order as in the model and (b) know which bytes in the binary message = correspond to which fields in the decoded message. As far as I know the = code generated by the Thrift compiler currently does not generate that = information. An interesting approach would be to enhance the Thrift C = back-end to include that information. =E2=80=94 Bruno > On May 12, 2020, at 4:51 PM, Tony Przygienda = wrote: >=20 > and quick question, why didn't you just push the binary into thrift = backend to deserialize? People may send compressed binary formats etc = and the encoding may change. Point of the modelling exercise >=20 > -- tony=20 >=20 >=20 > On Tue, May 12, 2020 at 3:48 PM Tony Przygienda > wrote: > multiple people were looking JUST for this.=20 >=20 > maybe next interim implementation experience. this was lighting fast = ;-)=20 >=20 > -- tony >=20 >=20 > On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann = > wrote: > Hello all, >=20 > regarding the development of a wireshark dissector for RIFT, we are = happy to introduce you our work. It is available at = https://gitlab.com/fing-mina/datacenters/rift-dissector = > RIFT C dissector is a complete Wireshark dissector for decoding RIFT = protocol. The code identifies all the RIFT packets and builds a complete = dissection for the TIE ones. This dissector has been tested with the = current implementations of RIFT. >=20 > Regards, > Leonardo >=20 > El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3: >> Leonardo, that is a great project. Observe that depending on language = backend/thrift compiler different streams may represent the same = encoding so it's good to test it against more than one implementation. = We should get streams that has all possible LIEs and TIEs in it.=20 >>=20 >> If you run juniper standalone public package = https://www.juniper.net/us/en/dm/free-rift-trial/ = you can easily build = a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a = v6/v4 links from a spine to a leaf. that will give you all the LIEs and = node TIEs and default prefixes. If you break a link via CLI you will get = disaggregation as well. If you struggle with that, ping me ...=20 >>=20 >> Having said that you can do all that with open source as well (but = observe we didn't pull open source to -11 draft yet which had some = schema changes albeit minor). you can pull the schema yourself with = Bruno's help or I'll get to it one of these days ;-) ...=20 >>=20 >> Architecturally, since RIFT will evolve and possibly move to newer = major schemas, I would suggest you provision for the possibility to put = into wireshark multiple schema files, basically you'd need to compile = multiple directories in differnt namespaces and use the correct one = depending on the major you found on packet envelope (you can always use = the newest minor you support on the major, they are always compatible).=20= >>=20 >> --- tony=20 >>=20 >>=20 >>=20 >> On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann = > wrote: >> Hi everyone, >>=20 >> as a part of this project we are developing a wireshark dissector for = RIFT. The dissection for the security envelope is ready and tested. Now = we are working on the Serialized RIFT Model Object dissection and for = preparing the testing we are looking for a "known" trace, i.e we need a = few packets and the exact values of these fields in the Thrift model. So = if anyone can help us we'll be grateful. >>=20 >> Regards, >> Leonardo. >>=20 >> El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3: >>> Forwarding the discussion to the rift ietf list for further exposure = & since I generally think it will be possibly more productive in a wider = forum. Roma Tre University is working on Bruno=E2=80=99s open source and = there=E2=80=99s a bunch of interesting tools they=E2=80=99re developing = as well as you can read below. >>>=20 >>> =20 >>> --- tony >>>=20 >>> =20 >>> From: Mariano Scazzariello = >>> Date: Wednesday, March 18, 2020 at 9:10 AM >>> To: Bruno Rijsman = >>> Cc: Antoni Przygienda , = Leonardo Alberro Zimmermann = , "tommasocaiazzi@gmail.com" = = ,"lorenzoariemma@gmail.com" = = , Giuseppe Di Battista = = >>> Subject: Re: RIFT protocol implementation >>>=20 >>> =20 >>> Hi everyone, >>> thanks for the extremely detailed suggestions! I have a lot of stuff = which I can use to work on the implementation. Also thanks Tony for = giving me further useful tips. >>>=20 >>> Also, I'm happy that we agree on almost every implementation detail = and I agree with your suggested variations (like the flag for the = spf_run_direction method). >>>=20 >>> About point C, I did not write anything since it seems quite easy to = extend the Thrift model. If I have any issues, I'll surely ask you for = some help. I also wrote a point D (which is how to handle the negative = disaggregation in the RIB/FIB when received), but I read the Pascal = slides (I add the link = here, so everyone can = access them easily) and the steps used in that presentation are the same = that I thought. >>>=20 >>> I still have some doubts about the special SPF run: >>> 2) We will also need a new member field orig_neg_disagg_prefixes = (once again of type set, I think) that contains the negatively = disaggregated prefixes that are autonomously being originated based on = the detection of fallen leafs based on the difference between the normal = and special SPF run.=20 >>> You are proposing to postpone the RIB/FIB update after the special = SPF run (which can detect additional fallen leaf nodes). This is right, = but should this only occur on ToF nodes? If we consider a node X, which = is not a ToF, that receives a negative disaggregation TIE, it should = only add the prefix in the prop_neg_disagg_prefixes set and check if it = received this prefix from all its parent nodes and propagate it if = required. Then it should proceed to update its RIB/FIB, without running = the special SPF. Am I right? >>>=20 >>> About the flooding oscillations, Tony writes "Your best protection = is scaled, randomized tests". Here at Roma Tre University we developed a = tool called Kathar=C3=A1 = which is = able to emulate network scenarios using Docker containers. Recently, we = also developed a Fat Tree Generator, that automatically generates a fat = tree topology starting from the fundamental parameters of a Fat Tree = (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also = auto-configures the routing protocol on each node (of course, we also = included the RIFT-Python implementation). So we can generate Fat Tree = topologies of any size and run tests on it to verify functional and = behavioral aspects (and also gather routing information such as PDU size = and count). We are also developing a Fat Tree Test Framework (in = collaboration with Leonardo and the team at UY university) which = implements typical data center network scenarios (such as link failure, = node failure, fallen leaf, partitioned fabric and so on) to run = integration tests on it. For example, we can check if the routing table = of a node is equal to the expected one after a failure (e.g. loss of a = multipath or a prefix). With this tool we can surely run randomized = tests (at any scale, since Kathar=C3=A1 supports Kubernetes) to ensure = that no flooding oscillations occur. >>>=20 >>> I agree to move the discussion on the RIFT WG mailing list. Maybe = someone of you should introduce us and explain what we're doing. >>>=20 >>> Thanks everyone for your time, >>> Mariano. >>>=20 >>>=20 >>>=20 >>> _______________________________________________ >>> RIFT mailing list >>> RIFT@ietf.org >>> https://www.ietf.org/mailman/listinfo/rift = >>=20 >>=20 >> _______________________________________________ >> RIFT mailing list >> RIFT@ietf.org >> https://www.ietf.org/mailman/listinfo/rift = --Apple-Mail=_DDF99A2E-9096-453E-A0A4-AA411506B590 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 One = issue with using the Thrift decoder generated by the Thrift compiler is = that the user interface of Wireshark allows you to highlight certain = fields in the decoded message and automatically highlights the = corresponding bytes in the hexdump of the binary message. Thus the = Thrift decoder used in Wireshark must (a) know the exact order in which = the fields occurred in the binary message, which may not be the same = order as in the model and (b) know which bytes in the binary message = correspond to which fields in the decoded message.  As far as I = know the code generated by the Thrift compiler currently does not = generate that information. An interesting approach would be to enhance = the Thrift C back-end to include that information.

=E2=80=94 Bruno

On May 12, 2020, at 4:51 PM, Tony Przygienda <tonysietf@gmail.com>= wrote:

and quick question, why didn't = you just push the binary into thrift backend to deserialize? People may = send compressed binary formats etc and the encoding may change. Point of = the modelling exercise

-- tony


On Tue, May = 12, 2020 at 3:48 PM Tony Przygienda <tonysietf@gmail.com>= wrote:
multiple people were looking JUST for this.

maybe next interim implementation experience. this was = lighting fast ;-)

-- tony


On Tue, May = 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:
=20 =20 =20

Hello all,

regarding = the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at https://gitlab.com/fing-mina/datacenters/rift-dissector

=

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3:
=20
Leonardo, that is a great project. Observe that = depending on language backend/thrift compiler different streams may represent the same encoding so it's good to test it against more than one implementation. We should get streams that has all possible LIEs and TIEs in it.

If you run juniper standalone public package https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v4 links from a spine to a leaf. that will give you all the LIEs and node TIEs and default prefixes. If you break a link via CLI you will get disaggregation as well. If you struggle with that, ping me ...

Having said that you can do all that with open = source as well (but observe we didn't pull open source to -11 draft yet which had some schema changes albeit minor). you can pull the schema yourself with Bruno's help or I'll get to it one of these days ;-) ...

Architecturally, since RIFT will evolve and = possibly move to newer major schemas, I would suggest you provision for the possibility to put into wireshark multiple schema files, basically you'd need to compile multiple directories in differnt namespaces and use the correct one depending on the major you found on packet envelope (you can always use the newest minor you support on the major, they are always compatible).

--- tony



On Thu, Mar 26, 2020 at = 7:17 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hi everyone,

as = a part of this project we are developing a wireshark dissector for RIFT. The dissection for the security envelope is ready and tested. Now we are working on the Serialized RIFT Model Object dissection and for preparing the testing we are looking for a "known" trace, i.e we need a few packets and the exact values of these fields in the Thrift model. So if anyone can help us we'll be grateful.

Regards,
Leonardo.

El 18/3/20 a las 13:34, Antoni Przygienda = escribi=C3=B3:

Forwarding the = discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno=E2=80=99s open source and there=E2=80=99s a = bunch of interesting tools they=E2=80=99re developing as well as you can = read below.

 

--- tony =

 

From: = Mariano Scazzariello <mscazzariello@os.uniroma3.it>
Date: Wednesday, March 18, 2020 = at 9:10 AM
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Antoni Przygienda <prz@juniper.net>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>
Subject: Re: RIFT protocol = implementation

 

Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF = run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,  but should = this only occur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg_prefixes set and = check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here at Roma Tre University we developed a tool called Kathar=C3=A1 which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also auto-configures the routing = protocol on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathar=C3=A1 supports Kubernetes) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we're doing.

Thanks everyone for your time,
Mariano.


_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift

_______________________________________________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift

= --Apple-Mail=_DDF99A2E-9096-453E-A0A4-AA411506B590-- From nobody Thu May 14 09:36:21 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B800A3A0B39 for ; Thu, 14 May 2020 09:36:18 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.097 X-Spam-Level: X-Spam-Status: No, score=-1.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 66HVd_u6N9C9 for ; Thu, 14 May 2020 09:36:16 -0700 (PDT) Received: from mail-io1-xd43.google.com (mail-io1-xd43.google.com [IPv6:2607:f8b0:4864:20::d43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0DB563A0A8B for ; Thu, 14 May 2020 09:36:15 -0700 (PDT) Received: by mail-io1-xd43.google.com with SMTP id k18so1064018ion.0 for ; Thu, 14 May 2020 09:36:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Jq74JRW0f9y11teRSSQsvpmO915N4QoyEZdMJR1Sijc=; b=s70A67a8NgPaWbBH9Q1E2slRDpkTLIFwYPR5p9NRIpyQ1/dFvQ+N9G3F9+s88obUUn wf23V7e0buB9W9utLbWjQEGB+6K2Xi3ztUBuwfPo3MOuhptn3epf1iKt2dqTWuDA2jLU Hgx2ocqdV524EyHoxcw7JjxC4lOG+N13rJd4lubVA0ZGAws0HFNtdCebeiNfi9HQzNhg Hm8YFe3Z+vobV039MjJnUFAm7SdFCKZVe6e/MaFs4ZlWAWF6XVRVtWQATdWMW6RFudBS yzICnO8k4oKBzwZQCE286U/UAJnwWOlcEwukngbHQrD2MGeK0Cz+tDHdKXIbivMt13XK WWyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Jq74JRW0f9y11teRSSQsvpmO915N4QoyEZdMJR1Sijc=; b=dA+xkhuiTePblMkp7DQ/PUG8w3bg8azIPSTkUP0/B2BKQ8WocA4zcdJkaArLoR6WfN xRZ/ev+mbrbrDd1xb2xZrk4VzzS5xZiFNiyyoP9By+S6B/NH1hHrNDAFWoI8gIf40njs x4tP2h3qgCjEsScpLhx81XaF2iv53p2jiE78uhx2zQl2mxtxrk2E6/pE5sH0dQdENV1X NWXZeFUnuGzOYDQ9ORX+VqQF8B0m6QXrrDlBDgvJe3JT6zbxFzAg0BCDHtxUb5kqVb72 AOyCDIN3RevsO6f7Qu3lwNplQDhsJ8tUu3CR5mveskwV+XxfNDE4AAC6nAlJrqGM+OPO 4CiA== X-Gm-Message-State: AGi0Pubx0Lcw5H8xprFmZPypbhdotbPBtM3CSxwshs72GJLdyLVfjzSJ Cwdids0X37O02M9argCT3tu1rdL+yE/oBEn3p5A= X-Google-Smtp-Source: APiQypKyzZJEFZTmdOgrlHhTb/tDaDatI2uA+/N+vSjfVP01L7++1xJ284uHdAXCXYIuDFrhyIqal+7JH1amq6YigcA= X-Received: by 2002:a02:5249:: with SMTP id d70mr5311091jab.121.1589474175055; Thu, 14 May 2020 09:36:15 -0700 (PDT) MIME-Version: 1.0 References: <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> <3594E151-C392-4959-A4F9-8744D3621CCA@gmail.com> In-Reply-To: <3594E151-C392-4959-A4F9-8744D3621CCA@gmail.com> From: Tony Przygienda Date: Thu, 14 May 2020 09:34:40 -0700 Message-ID: To: Bruno Rijsman Cc: Leonardo Alberro Zimmermann , rift@ietf.org Content-Type: multipart/alternative; boundary="00000000000095791505a59e4b5a" Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 16:36:19 -0000 --00000000000095791505a59e4b5a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable That runs in a sense completely counter a model based encoding (don't forget, thrift can run binary compressed messages as well, so how will you offset that ;-) But as I said, I didn't look @ the decode/encode too closely, especially not in the C code. Also, you'll have other effects like certain encoders omitting required with default values if not set since it's in a sense "implied" for the decoder. We do break fairly new ground here ;-) but I think over time the benefits of model based encoding/decoding will start influence other routing protocols (there are other types of protocols running today that are fully model based on encoding) given the advantages we were seeing in RIFT -- tony On Thu, May 14, 2020 at 5:59 AM Bruno Rijsman wrote: > One issue with using the Thrift decoder generated by the Thrift compiler > is that the user interface of Wireshark allows you to highlight certain > fields in the decoded message and automatically highlights the > corresponding bytes in the hexdump of the binary message. Thus the Thrift > decoder used in Wireshark must (a) know the exact order in which the fiel= ds > occurred in the binary message, which may not be the same order as in the > model and (b) know which bytes in the binary message correspond to which > fields in the decoded message. As far as I know the code generated by th= e > Thrift compiler currently does not generate that information. An > interesting approach would be to enhance the Thrift C back-end to include > that information. > > =E2=80=94 Bruno > > On May 12, 2020, at 4:51 PM, Tony Przygienda wrote: > > and quick question, why didn't you just push the binary into thrift > backend to deserialize? People may send compressed binary formats etc and > the encoding may change. Point of the modelling exercise > > -- tony > > > On Tue, May 12, 2020 at 3:48 PM Tony Przygienda > wrote: > >> multiple people were looking JUST for this. >> >> maybe next interim implementation experience. this was lighting fast ;-) >> >> -- tony >> >> >> On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann < >> lalberro@fing.edu.uy> wrote: >> >>> Hello all, >>> >>> regarding the development of a wireshark dissector for RIFT, we are >>> happy to introduce you our work. It is available at >>> https://gitlab.com/fing-mina/datacenters/rift-dissector >>> >>> RIFT C dissector is a complete Wireshark dissector for decoding RIFT >>> protocol. The code identifies all the RIFT packets and builds a complet= e >>> dissection for the TIE ones. This dissector has been tested with the >>> current implementations of RIFT. >>> >>> Regards, >>> Leonardo >>> El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3: >>> >>> Leonardo, that is a great project. Observe that depending on language >>> backend/thrift compiler different streams may represent the same encodi= ng >>> so it's good to test it against more than one implementation. We should= get >>> streams that has all possible LIEs and TIEs in it. >>> >>> If you run juniper standalone public package >>> https://www.juniper.net/us/en/dm/free-rift-trial/ you can easily build >>> a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a >>> v6/v4 links from a spine to a leaf. that will give you all the LIEs and >>> node TIEs and default prefixes. If you break a link via CLI you will ge= t >>> disaggregation as well. If you struggle with that, ping me ... >>> >>> Having said that you can do all that with open source as well (but >>> observe we didn't pull open source to -11 draft yet which had some sche= ma >>> changes albeit minor). you can pull the schema yourself with Bruno's he= lp >>> or I'll get to it one of these days ;-) ... >>> >>> Architecturally, since RIFT will evolve and possibly move to newer majo= r >>> schemas, I would suggest you provision for the possibility to put into >>> wireshark multiple schema files, basically you'd need to compile multip= le >>> directories in differnt namespaces and use the correct one depending on= the >>> major you found on packet envelope (you can always use the newest minor= you >>> support on the major, they are always compatible). >>> >>> --- tony >>> >>> >>> >>> On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann < >>> lalberro@fing.edu.uy> wrote: >>> >>>> Hi everyone, >>>> >>>> as a part of this project we are developing a wireshark dissector for >>>> RIFT. The dissection for the security envelope is ready and tested. No= w we >>>> are working on the Serialized RIFT Model Object dissection and for >>>> preparing the testing we are looking for a "known" trace, i.e we need = a few >>>> packets and the exact values of these fields in the Thrift model. So i= f >>>> anyone can help us we'll be grateful. >>>> >>>> Regards, >>>> Leonardo. >>>> El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3: >>>> >>>> Forwarding the discussion to the rift ietf list for further exposure & >>>> since I generally think it will be possibly more productive in a wider >>>> forum. Roma Tre University is working on Bruno=E2=80=99s open source a= nd there=E2=80=99s a >>>> bunch of interesting tools they=E2=80=99re developing as well as you c= an read >>>> below. >>>> >>>> >>>> --- tony >>>> >>>> >>>> *From: *Mariano Scazzariello >>>> >>>> *Date: *Wednesday, March 18, 2020 at 9:10 AM >>>> *To: *Bruno Rijsman >>>> *Cc: *Antoni Przygienda , Leonardo >>>> Alberro Zimmermann , >>>> "tommasocaiazzi@gmail.com" >>>> , >>>> "lorenzoariemma@gmail.com" >>>> , Giuseppe Di >>>> Battista >>>> >>>> *Subject: *Re: RIFT protocol implementation >>>> >>>> >>>> Hi everyone, >>>> thanks for the extremely detailed suggestions! I have a lot of stuff >>>> which I can use to work on the implementation. Also thanks Tony for gi= ving >>>> me further useful tips. >>>> >>>> Also, I'm happy that we agree on almost every implementation detail an= d >>>> I agree with your suggested variations (like the flag for the >>>> spf_run_direction method). >>>> >>>> About point C, I did not write anything since it seems quite easy to >>>> extend the Thrift model. If I have any issues, I'll surely ask you for= some >>>> help. I also wrote a point D (which is how to handle the negative >>>> disaggregation in the RIB/FIB when received), but I read the Pascal sl= ides >>>> (I add the link >>>> >>>> here, so everyone can access them easily) and the steps used in that >>>> presentation are the same that I thought. >>>> >>>> I still have some doubts about the special SPF run: >>>> *2) We will also need a new member field orig_neg_disagg_prefixes (onc= e >>>> again of type set, I think) that contains the negatively disaggregated >>>> prefixes that are autonomously being originated based on the detection= of >>>> fallen leafs based on the difference between the normal and special SP= F >>>> run.* >>>> You are proposing to postpone the RIB/FIB update after the special SPF >>>> run (which can detect additional fallen leaf nodes). This is right, b= ut >>>> should this only occur on ToF nodes? If we consider a node X, which is= not >>>> a ToF, that receives a negative disaggregation TIE, it should only add= the >>>> prefix in the *prop_neg_disagg_prefixes *set and check if it received >>>> this prefix from all its parent nodes and propagate it if required. Th= en it >>>> should proceed to update its RIB/FIB, without running the special SPF.= Am I >>>> right? >>>> >>>> About the flooding oscillations, Tony writes "Your best protection is >>>> scaled, randomized tests". Here at Roma Tre University we developed a = tool >>>> called Kathar=C3=A1 >>>> >>>> which is able to emulate network scenarios using Docker containers. >>>> Recently, we also developed a Fat Tree Generator, that automatically >>>> generates a fat tree topology starting from the fundamental parameters= of a >>>> Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It als= o >>>> auto-configures the routing protocol on each node (of course, we also >>>> included the RIFT-Python implementation). So we can generate Fat Tree >>>> topologies of any size and run tests on it to verify functional and >>>> behavioral aspects (and also gather routing information such as PDU si= ze >>>> and count). We are also developing a Fat Tree Test Framework (in >>>> collaboration with Leonardo and the team at UY university) which imple= ments >>>> typical data center network scenarios (such as link failure, node fail= ure, >>>> fallen leaf, partitioned fabric and so on) to run integration tests on= it. >>>> For example, we can check if the routing table of a node is equal to t= he >>>> expected one after a failure (e.g. loss of a multipath or a prefix). W= ith >>>> this tool we can surely run randomized tests (at any scale, since Kath= ar=C3=A1 >>>> supports Kubernetes) to ensure that no flooding oscillations occur. >>>> >>>> I agree to move the discussion on the RIFT WG mailing list. Maybe >>>> someone of you should introduce us and explain what we're doing. >>>> >>>> Thanks everyone for your time, >>>> Mariano. >>>> >>>> _______________________________________________ >>>> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/ri= ft >>>> >>>> >>> _______________________________________________ >>> RIFT mailing listRIFT@ietf.orghttps://www.ietf.org/mailman/listinfo/rif= t >>> >>> > --00000000000095791505a59e4b5a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
That runs in a sense completely counter a model based= =C2=A0 encoding (don't forget, thrift can run binary compressed message= s as well, so how will you offset that ;-)=C2=A0 But as I said, I didn'= t look @ the decode/encode too closely, especially not in the C code.
<= /div>

Also, you'll have other effects like certain e= ncoders omitting required with default values if not set since it's in = a sense "implied" for the decoder.

= We do break fairly new ground here ;-) but I think over time the benefits o= f model based encoding/decoding will start influence other routing protocol= s (there are other types of protocols running today that are fully model ba= sed on encoding) given the advantages we were seeing in RIFT

=
-- tony

On Thu, May 14, 2020 at 5:59 AM Bruno Rijsman= <brunorijsman@gmail.com&g= t; wrote:
One issue with using the Thrift decoder= generated by the Thrift compiler is that the user interface of Wireshark a= llows you to highlight certain fields in the decoded message and automatica= lly highlights the corresponding bytes in the hexdump of the binary message= . Thus the Thrift decoder used in Wireshark must (a) know the exact order i= n which the fields occurred in the binary message, which may not be the sam= e order as in the model and (b) know which bytes in the binary message corr= espond to which fields in the decoded message.=C2=A0 As far as I know the c= ode generated by the Thrift compiler currently does not generate that infor= mation. An interesting approach would be to enhance the Thrift C back-end t= o include that information.

=E2=80=94 Bruno

On May 12, 2020, at 4:51 PM, Tony Przyg= ienda <tonysiet= f@gmail.com> wrote:

and quick qu= estion, why didn't you just push the binary into thrift backend to dese= rialize? People may send compressed binary formats etc and the encoding may= change. Point of the modelling exercise

-- to= ny


On Tue, May 12, 2020 at 3:48 PM Tony Przygien= da <tonysietf@g= mail.com> wrote:
multiple people were looking JUST for this. <= br>

maybe next interim implementation experience. = this was lighting fast ;-)

-- tony
<= div>

On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann= <lalberro@fin= g.edu.uy> wrote:
=20 =20 =20

Hello all,

regarding the development of a wireshark dissect= or for RIFT, we are happy to introduce you our work. It is available at ht= tps://gitlab.com/fing-mina/datacenters/rift-dissector

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

El 26/3/20 a las 13:23, Tony Przygienda escribi=C3=B3:
=20
Leonardo, that is a great project. Observe that depending on language backend/thrift compiler different streams may represent the same encoding so it's good to test it against more than one implementation. We should get streams that has all possible LIEs and TIEs in it.

If you run juniper standalone public package https://www.= juniper.net/us/en/dm/free-rift-trial/ you can easily build a 2x2 yaml topology and just snoop on a UDP port. I suggest snooping a v6/v4 links from a spine to a leaf. that will give you all the LIEs and node TIEs and default prefixes. If you break a link via CLI you will get disaggregation as well. If you struggle with that, ping me ...

Having said that you can do all that with open source as well (but observe we didn't pull open source to -11 draft yet which had some schema changes albeit minor). you can pull the schema yourself with Bruno's help or I'll get to it one o= f these days ;-) ...

Architecturally, since RIFT will evolve and possibly move to newer major schemas, I would suggest you provision for the possibility to put into wireshark multiple schema files, basically you'd need to compile multiple directories in differnt namespaces and use the correct one depending on the major you found on packet envelope (you can always use the newest minor you support on the major, they are always compatible).

--- tony



On Thu, Mar 26, 2020 at 7:17 AM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:

Hi everyone,

as a part of this project we are devel= oping a wireshark dissector for RIFT. The dissection for the security envelope is ready and tested. Now we are working on the Serialized RIFT Model Object dissection and for preparing the testing we are looking for a "known" trace, i.e= we need a few packets and the exact values of these fields in the Thrift model. So if anyone can help us we'll be grateful.

Regards,
Leonardo.

El 18/3/20 a las 13:34, Antoni Przygienda escribi=C3=B3:

Forwarding the discussion to the rift ietf list for further exposure & since I generally think it will be possibly more productive in a wider forum. Roma Tre University is working on Bruno=E2=80=99s open source and there=E2=80=99s a bunch o= f interesting tools they=E2=80=99re developing as well as you can read below.

=C2=A0

--= - tony

=C2=A0

F= rom: Mariano Scazzariello <mscazzariello@os.uniroma3.it>
Date: Wednesday, March 18, 2020 at 9:10 AM
To: Bruno Rijsman <brunorijsman@gmail.com>
Cc: Antoni Przygienda <prz@juniper.net>, Leonardo Alberro Zimmermann <lalberro@fing.edu.uy>, "tommasocaiazzi@gmail.com" <tommasocaiazzi@gmail.com>, "lorenzoariemma@gmail.com" <lorenzoariemma@gmail.com>, Giuseppe Di Battista <giuseppe.dibattista@uniroma3.it>= ;
Subject: Re: RIFT protocol implementation

=C2=A0

Hi everyone,
thanks for the extremely detailed suggestions! I have a lot of stuff which I can use to work on the implementation. Also thanks Tony for giving me further useful tips.

Also, I'm happy that we agree on almost every implementation detail and I agree with your suggested variations (like the flag for the spf_run_direction= method).

About point C, I did not write anything since it seems quite easy to extend the Thrift model. If I have any issues, I'll surely ask you for some help. I also wrote a point D (which is how to handle the negative disaggregation in the RIB/FIB when received), but I read the Pascal slides (I add the link here, so everyone can access them easily) and the steps used in that presentation are the same that I thought.

I still have some doubts about the special SPF run:
2) We will also need a new member field orig_neg_disagg_prefixes (once again of type set, I think) that contains the negatively disaggregated prefixes that are autonomously being originated based on the detection of fallen leafs based on the difference between the normal and special SPF run.
You are proposing to postpone the RIB/FIB update after the special SPF run (which can detect additional fallen leaf nodes). This is right,=C2=A0 but should this only occur on ToF nodes? If we consider a node X, which is not a ToF, that receives a negative disaggregation TIE, it should only add the prefix in the prop_neg_disagg_prefixes set and check if it received this prefix from all its parent nodes and propagate it if required. Then it should proceed to update its RIB/FIB, without running the special SPF. Am I right?

About the flooding oscillations, Tony writes "Your best protection is scaled, randomized tests". Here a= t Roma Tre University we developed a tool called Kathar=C3=A1 which is able to emulate network scenarios using Docker containers. Recently, we also developed a Fat Tree Generator, that automatically generates a fat tree topology starting from the fundamental parameters of a Fat Tree (K_LEAF, K_TOP and R) that can be run in Kathar=C3=A1. It also auto-configures the routing protoco= l on each node (of course, we also included the RIFT-Python implementation). So we can generate Fat Tree topologies of any size and run tests on it to verify functional and behavioral aspects (and also gather routing information such as PDU size and count). We are also developing a Fat Tree Test Framework (in collaboration with Leonardo and the team at UY university) which implements typical data center network scenarios (such as link failure, node failure, fallen leaf, partitioned fabric and so on) to run integration tests on it. For example, we can check if the routing table of a node is equal to the expected one after a failure (e.g. loss of a multipath or a prefix). With this tool we can surely run randomized tests (at any scale, since Kathar=C3=A1 supports Kubernetes) to ensure that no flooding oscillations occur.

I agree to move the discussion on the RIFT WG mailing list. Maybe someone of you should introduce us and explain what we're doing.

Thanks everyone for your time,
Mariano.


_______________________________________________
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift

_______________________________________________
RIFT mailing list
RIFT@ietf.org
ht=
tps://www.ietf.org/mailman/listinfo/rift

--00000000000095791505a59e4b5a-- From nobody Thu May 14 09:49:34 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 630433A0BAD; Thu, 14 May 2020 09:49:32 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.097 X-Spam-Level: X-Spam-Status: No, score=-1.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vt7LDnwtlan9; Thu, 14 May 2020 09:49:30 -0700 (PDT) Received: from mail-ua1-x944.google.com (mail-ua1-x944.google.com [IPv6:2607:f8b0:4864:20::944]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 57F2D3A0BA5; Thu, 14 May 2020 09:49:30 -0700 (PDT) Received: by mail-ua1-x944.google.com with SMTP id g35so1402398uad.0; Thu, 14 May 2020 09:49:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=xEBTMfrlmUOkeUdCBv9U4JmYjx3HyBPqCgXeqB7NZls=; b=lraznbyZ4nN7/SGBq9qs0UyeUfo4N+5d6SnGs9yqhbkDcUL/vxda3JNDRybPnUBDCK SO3vUZStSdtQwg8Ke98Tl3Nzx8kf9O9WUMekKiNVC8TqXYmfBzAUwhIQjWcduwWy8Z3i zCDYOMMI3cPTWkM44rEFlS9w1SwdPX1z2Ov0CxGXGhVtwjkD6/n9IsCG9n0c1nwitx6/ csZqviR7pGjkPAti7yM+0hJwbZfjbmXfVfFktsFOsq989pxneGsqddbmZFtIJPOfI+LR kmMsxm+QDM4izKCnTXlZwEzbxOl0iXHrEFPNBknbnrfWPFiN0xxkcRhFg90ZzBlgiZqO oMuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=xEBTMfrlmUOkeUdCBv9U4JmYjx3HyBPqCgXeqB7NZls=; b=RogLrFR8PpBtaaGPMhlUDUb55K1tHVMudlnnXDsy1XWK3QpYDX3B/A/A7EnSQ2uQdy tQfkFdGKyNlTrihJpZN6wwlNS/bUzW6fnr5T2wOlQuFHLvitnDfg+6CRIBCirltG0SlJ eSbwDdAIoR17tRmPCHSREDkizWpo8YZkfOuhnrYivNTFgoRAoewLWruZOHHPBLEqru/R vOqHc05HfE6gNUgQT3oPv7/hfQDSAui5v/Vr6rF+ZYDvBhWvCtABxnI3S61vp7pJZRKa UmnulX7cXJVJxaLXETeGqKh4Ld/oe/7NFsB3FsgRrZvCWTF5cS7KQXhF4vRZ9CKpotk/ kexg== X-Gm-Message-State: AOAM533iARniHwceKO6zD852zzC9jpDy7sQGAfOgl9EMw/ep8OLZn6c4 ZAiZjYd813Aqsz4F6JkGwWiXG73D X-Google-Smtp-Source: ABdhPJyqncJDmshtKQUlHh9SGbAUQX46gT99B33dzmPlaSzM+KrujizXIuQZMDcqBlk1pkQfWZ7tqA== X-Received: by 2002:ab0:7392:: with SMTP id l18mr4896193uap.90.1589474969146; Thu, 14 May 2020 09:49:29 -0700 (PDT) Received: from brunos-macbook.conexion.com (wisp-63.conexion.com. [168.234.219.63]) by smtp.gmail.com with ESMTPSA id g29sm790281uah.5.2020.05.14.09.49.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 May 2020 09:49:28 -0700 (PDT) From: Bruno Rijsman Message-Id: <59C6BFC1-774B-4835-ABE8-247894711ECB@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_45370CD8-5A6D-4E1E-AF1D-1656A73B2D97" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Date: Thu, 14 May 2020 10:49:26 -0600 In-Reply-To: Cc: Leonardo Alberro Zimmermann , rift@ietf.org, fdt@ietf.org To: Tony Przygienda References: <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> <3594E151-C392-4959-A4F9-8744D3621CCA@gmail.com> X-Mailer: Apple Mail (2.3445.104.11) Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 16:49:33 -0000 --Apple-Mail=_45370CD8-5A6D-4E1E-AF1D-1656A73B2D97 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 I am not disagreeing with you, Tony. Having to hand-craft a RIFT decoder = for Wireshark stinks to high heaven. It would be infinitely better if we = could use the message decoding C code that is generated by the Thrift-C = compiler. I think we are discovering some new requirements for model-based routing = protocols that are new relative to the original use case of model-based = APIs. And we are discovering that those new requirements are not well = supported by existing compilers (Thrift or otherwise). I always had the urge to write an Internet-Draft on the topic of using = Thrift as a modeling language for RIFT (what worked well, what didn=E2=80=99= t work well, etc.) but I never got around to doing it. Such a draft would be useful input for the formal languages BOF (WG?) = https://www.ietf.org/mailman/listinfo/fdt = =E2=80=94 Bruno > On May 14, 2020, at 10:34 AM, Tony Przygienda = wrote: >=20 > That runs in a sense completely counter a model based encoding (don't = forget, thrift can run binary compressed messages as well, so how will = you offset that ;-) But as I said, I didn't look @ the decode/encode = too closely, especially not in the C code.=20 >=20 > Also, you'll have other effects like certain encoders omitting = required with default values if not set since it's in a sense "implied" = for the decoder.=20 >=20 > We do break fairly new ground here ;-) but I think over time the = benefits of model based encoding/decoding will start influence other = routing protocols (there are other types of protocols running today that = are fully model based on encoding) given the advantages we were seeing = in RIFT >=20 > -- tony=20 >=20 > On Thu, May 14, 2020 at 5:59 AM Bruno Rijsman > wrote: > One issue with using the Thrift decoder generated by the Thrift = compiler is that the user interface of Wireshark allows you to highlight = certain fields in the decoded message and automatically highlights the = corresponding bytes in the hexdump of the binary message. Thus the = Thrift decoder used in Wireshark must (a) know the exact order in which = the fields occurred in the binary message, which may not be the same = order as in the model and (b) know which bytes in the binary message = correspond to which fields in the decoded message. As far as I know the = code generated by the Thrift compiler currently does not generate that = information. An interesting approach would be to enhance the Thrift C = back-end to include that information. >=20 > =E2=80=94 Bruno >=20 >> On May 12, 2020, at 4:51 PM, Tony Przygienda > wrote: >>=20 >> and quick question, why didn't you just push the binary into thrift = backend to deserialize? People may send compressed binary formats etc = and the encoding may change. Point of the modelling exercise >>=20 >> -- tony=20 >>=20 >>=20 >> On Tue, May 12, 2020 at 3:48 PM Tony Przygienda > wrote: >> multiple people were looking JUST for this.=20 >>=20 >> maybe next interim implementation experience. this was lighting fast = ;-)=20 >>=20 >> -- tony >>=20 >>=20 >> On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann = > wrote: >> Hello all, >>=20 >> regarding the development of a wireshark dissector for RIFT, we are = happy to introduce you our work. It is available at = https://gitlab.com/fing-mina/datacenters/rift-dissector = >> RIFT C dissector is a complete Wireshark dissector for decoding RIFT = protocol. The code identifies all the RIFT packets and builds a complete = dissection for the TIE ones. This dissector has been tested with the = current implementations of RIFT. >>=20 >> Regards, >> Leonardo >>=20 --Apple-Mail=_45370CD8-5A6D-4E1E-AF1D-1656A73B2D97 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 I = am not disagreeing with you, Tony. Having to hand-craft a RIFT decoder = for Wireshark stinks to high heaven. It would be infinitely better if we = could use the message decoding C code that is generated by the Thrift-C = compiler.

I think we are discovering some new requirements for = model-based routing protocols that are new relative to the original use = case of model-based APIs.

And we are discovering that those new requirements are not = well supported by existing compilers (Thrift or otherwise).

I always had the urge to = write an Internet-Draft on the topic of using Thrift as a modeling = language for RIFT (what worked well, what didn=E2=80=99t work well, = etc.) but I never got around to doing it.

Such a draft would be = useful input for the formal languages BOF (WG?) https://www.ietf.org/mailman/listinfo/fdt

=E2=80=94 = Bruno


On May = 14, 2020, at 10:34 AM, Tony Przygienda <tonysietf@gmail.com>= wrote:

That runs in a sense completely = counter a model based  encoding (don't forget, thrift can run = binary compressed messages as well, so how will you offset that = ;-)  But as I said, I didn't look @ the decode/encode too closely, = especially not in the C code.

Also, you'll have other effects like = certain encoders omitting required with default values if not set since = it's in a sense "implied" for the decoder.

We do break fairly new = ground here ;-) but I think over time the benefits of model based = encoding/decoding will start influence other routing protocols (there = are other types of protocols running today that are fully model based on = encoding) given the advantages we were seeing in RIFT

-- tony

On Thu, May 14, 2020 at 5:59 AM Bruno = Rijsman <brunorijsman@gmail.com> wrote:
One issue with using the Thrift decoder = generated by the Thrift compiler is that the user interface of Wireshark = allows you to highlight certain fields in the decoded message and = automatically highlights the corresponding bytes in the hexdump of the = binary message. Thus the Thrift decoder used in Wireshark must (a) know = the exact order in which the fields occurred in the binary message, = which may not be the same order as in the model and (b) know which bytes = in the binary message correspond to which fields in the decoded = message.  As far as I know the code generated by the Thrift = compiler currently does not generate that information. An interesting = approach would be to enhance the Thrift C back-end to include that = information.

=E2=80=94= Bruno

On May = 12, 2020, at 4:51 PM, Tony Przygienda <tonysietf@gmail.com> wrote:

and quick = question, why didn't you just push the binary into thrift backend to = deserialize? People may send compressed binary formats etc and the = encoding may change. Point of the modelling exercise

-- = tony


On Tue, May 12, 2020 at 3:48 PM Tony Przygienda = <tonysietf@gmail.com> wrote:
multiple people were looking JUST for this.

maybe next interim implementation experience. this was = lighting fast ;-)

-- tony


On Tue, May = 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:
=20 =20 =20

Hello all,

regarding = the development of a wireshark dissector for RIFT, we are happy to introduce you our work. It is available at https://gitlab.com/fing-mina/datacenters/rift-dissector

=

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo

=

= --Apple-Mail=_45370CD8-5A6D-4E1E-AF1D-1656A73B2D97-- From nobody Thu May 14 11:06:55 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3B5B83A0BEE; Thu, 14 May 2020 11:06:54 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.097 X-Spam-Level: X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vr3H0nKp5jZX; Thu, 14 May 2020 11:06:52 -0700 (PDT) Received: from mail-io1-xd30.google.com (mail-io1-xd30.google.com [IPv6:2607:f8b0:4864:20::d30]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4BC053A076E; Thu, 14 May 2020 11:06:52 -0700 (PDT) Received: by mail-io1-xd30.google.com with SMTP id e18so3438327iog.9; Thu, 14 May 2020 11:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=9LBz9He5KiJaABvh5w75qv/JnJ7XAsUUd3vIgdGVa7g=; b=oF9GkeClYuLDfd4ZTs0zjDGsdlgvAAMiA+jCAYhZ7YfHYm9rTdcrWbRtTpcKawmYcw lkaf5U/Zycv1AE4ZsALu5pAPoM6ISfiYNoDazSs2En1HYIz5MyCIjInq7CK/j7K8vAMb Ldnnduy+1U/CQJjhh+WDa3d4J8hOfdDI6O6i7Vc4+GMM6ki+SElzbo+WICuAjLOXBWCA Xz28ZfsktjinndlE9qoHn2edSuwrC2+L05I8XkjEXBURcbVJ9s+3D48al/3u1eSjza6T R7E1jwtKmIVTVt4etgopuoScw0rLBC+B0vVKgi4DrV2nWmxoN1DRQvUIn41BHZqu/SG0 d7YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9LBz9He5KiJaABvh5w75qv/JnJ7XAsUUd3vIgdGVa7g=; b=RE3aioiomQFBV7Uak3vMU7c1eudaMDvb3AmfX38ZYWZ5sjIywsbWwgfWEUyT7nTEBg 2nB+FkB54Cba09hv+mx1cC1pmurfKuleiUfQGpevY++yrBOjOQKcLWhQBVbCqS0I5qXs qDShUKpoVrqL+r9756uisyB9uhVWDZBBUxfG/88ujtrisDlXc/o20GOADnQ984QEi0bW n0F6sM2HfENbkUcSemOjmqaqNkCtvwzATfvsJZb4lnbUrPleoJFGK9ynLWe0ji0gbERr VAEqfc6i05FQ37bukjM5DFpOO5dR8coTC/nP+E5h65juDcyILAz5mqoxkqgCfvkITX9e hAQA== X-Gm-Message-State: AOAM530hEXD+HrzGhuz/79+q7rR2GTBbyk4WbWQ8j2rVyRcJvy9sj5OE E7MlzcaHDJ9G0lELCKkaAPzjQ67UFx2wMDnGHJwdJOwo X-Google-Smtp-Source: ABdhPJzLpsCFDTAv3zPDQmVXudb5ivb0v/PIyfkjcLyYaq+09BhkMBiD5iVmkzoLxjzKWItA3vv22EAF2g7ocNk6X2I= X-Received: by 2002:a6b:7c45:: with SMTP id b5mr5299530ioq.31.1589479611654; Thu, 14 May 2020 11:06:51 -0700 (PDT) MIME-Version: 1.0 References: <9EA55459-D718-4575-ADE6-D061023AAE34@gmail.com> <16a8f23f-db46-ebe0-4503-1cbeee076ffb@os.uniroma3.it> <8a55226e-d428-f195-cfb5-c427229eb081@os.uniroma3.it> <87FBCCFA-A2E9-41EA-9C8F-BC87AAF1A9CF@gmail.com> <5b48347b-4156-bc4e-dcb2-14ec70159ee6@os.uniroma3.it> <2528b464-c368-6e31-54c7-6ff200b6dafb@os.uniroma3.it> <8977A74B-B0AE-430D-9817-2608952DDCF7@juniper.net> <9b6c08ec-dbb1-234e-5b10-d16426923394@fing.edu.uy> <3594E151-C392-4959-A4F9-8744D3621CCA@gmail.com> <59C6BFC1-774B-4835-ABE8-247894711ECB@gmail.com> In-Reply-To: <59C6BFC1-774B-4835-ABE8-247894711ECB@gmail.com> From: Tony Przygienda Date: Thu, 14 May 2020 11:05:16 -0700 Message-ID: To: Bruno Rijsman Cc: Leonardo Alberro Zimmermann , rift@ietf.org, fdt@ietf.org Content-Type: multipart/alternative; boundary="000000000000a166e405a59f8f09" Archived-At: Subject: Re: [Rift] RIFT protocol implementation X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 18:06:54 -0000 --000000000000a166e405a59f8f09 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 1. count me in on the draft if you put in the main work ;-) 2. my experience with thrift (apache) community have been very good. they listen, they let you upstream. professional folks. I don't think they'll be averse to what you suggest (index annotation on the decoder on the elements= ) 3. I was listening into the formal language stuff since a while but they are holding interims @ 4AM PDT so I was out ;-) -- tony On Thu, May 14, 2020 at 9:49 AM Bruno Rijsman wrote: > I am not disagreeing with you, Tony. Having to hand-craft a RIFT decoder > for Wireshark stinks to high heaven. It would be infinitely better if we > could use the message decoding C code that is generated by the Thrift-C > compiler. > > I think we are discovering some new requirements for model-based routing > protocols that are new relative to the original use case of model-based > APIs. > > And we are discovering that those new requirements are not well supported > by existing compilers (Thrift or otherwise). > > I always had the urge to write an Internet-Draft on the topic of using > Thrift as a modeling language for RIFT (what worked well, what didn=E2=80= =99t work > well, etc.) but I never got around to doing it. > > Such a draft would be useful input for the formal languages BOF (WG?) > https://www.ietf.org/mailman/listinfo/fdt > > =E2=80=94 Bruno > > > On May 14, 2020, at 10:34 AM, Tony Przygienda wrote= : > > That runs in a sense completely counter a model based encoding (don't > forget, thrift can run binary compressed messages as well, so how will yo= u > offset that ;-) But as I said, I didn't look @ the decode/encode too > closely, especially not in the C code. > > Also, you'll have other effects like certain encoders omitting required > with default values if not set since it's in a sense "implied" for the > decoder. > > We do break fairly new ground here ;-) but I think over time the benefits > of model based encoding/decoding will start influence other routing > protocols (there are other types of protocols running today that are full= y > model based on encoding) given the advantages we were seeing in RIFT > > -- tony > > On Thu, May 14, 2020 at 5:59 AM Bruno Rijsman > wrote: > >> One issue with using the Thrift decoder generated by the Thrift compiler >> is that the user interface of Wireshark allows you to highlight certain >> fields in the decoded message and automatically highlights the >> corresponding bytes in the hexdump of the binary message. Thus the Thrif= t >> decoder used in Wireshark must (a) know the exact order in which the fie= lds >> occurred in the binary message, which may not be the same order as in th= e >> model and (b) know which bytes in the binary message correspond to which >> fields in the decoded message. As far as I know the code generated by t= he >> Thrift compiler currently does not generate that information. An >> interesting approach would be to enhance the Thrift C back-end to includ= e >> that information. >> >> =E2=80=94 Bruno >> >> On May 12, 2020, at 4:51 PM, Tony Przygienda wrote= : >> >> and quick question, why didn't you just push the binary into thrift >> backend to deserialize? People may send compressed binary formats etc an= d >> the encoding may change. Point of the modelling exercise >> >> -- tony >> >> >> On Tue, May 12, 2020 at 3:48 PM Tony Przygienda >> wrote: >> >>> multiple people were looking JUST for this. >>> >>> maybe next interim implementation experience. this was lighting fast ;-= ) >>> >>> -- tony >>> >>> >>> On Tue, May 12, 2020 at 3:47 PM Leonardo Alberro Zimmermann < >>> lalberro@fing.edu.uy> wrote: >>> >>>> Hello all, >>>> >>>> regarding the development of a wireshark dissector for RIFT, we are >>>> happy to introduce you our work. It is available at >>>> https://gitlab.com/fing-mina/datacenters/rift-dissector >>>> >>>> RIFT C dissector is a complete Wireshark dissector for decoding RIFT >>>> protocol. The code identifies all the RIFT packets and builds a comple= te >>>> dissection for the TIE ones. This dissector has been tested with the >>>> current implementations of RIFT. >>>> >>>> Regards, >>>> Leonardo >>>> >>> > --000000000000a166e405a59f8f09 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
1. count me in on the draft if you put in the main wo= rk ;-)
2. my experience with thrift (apache) community have b= een very good. they listen, they let you upstream. professional folks. I do= n't think they'll be averse to what you suggest (index annotation o= n the decoder on the elements)
3. I was listening into the fo= rmal language stuff since a while but they are holding interims @ 4AM PDT s= o I was out ;-)

-- tony

On Thu, May 14, = 2020 at 9:49 AM Bruno Rijsman <brunorijsman@gmail.com> wrote:
I am not d= isagreeing with you, Tony. Having to hand-craft a RIFT decoder for Wireshar= k stinks to high heaven. It would be infinitely better if we could use the = message decoding C code that is generated by the Thrift-C compiler.

I think we are discovering some new requirements for model= -based routing protocols that are new relative to the original use case of = model-based APIs.

And we are discovering that thos= e new requirements are not well supported by existing compilers (Thrift or = otherwise).

I always had the urge to write an Inte= rnet-Draft on the topic of using Thrift as a modeling language for RIFT (wh= at worked well, what didn=E2=80=99t work well, etc.) but I never got around= to doing it.

Such a draft would be useful inp= ut for the formal languages BOF (WG?)=C2=A0https://www.ietf.org/mailman/listin= fo/fdt

=E2=80=94 Bruno


On May 14, 2020, at 10:34 AM, Ton= y Przygienda <t= onysietf@gmail.com> wrote:

That = runs in a sense completely counter a model based=C2=A0 encoding (don't = forget, thrift can run binary compressed messages as well, so how will you = offset that ;-)=C2=A0 But as I said, I didn't look @ the decode/encode = too closely, especially not in the C code.

Al= so, you'll have other effects like certain encoders omitting required w= ith default values if not set since it's in a sense "implied"= for the decoder.

We do break fairly new grou= nd here ;-) but I think over time the benefits of model based encoding/deco= ding will start influence other routing protocols (there are other types of= protocols running today that are fully model based on encoding) given the = advantages we were seeing in RIFT

-- tony

On Thu, May 14, 2020 at 5:59 AM Bruno Rijsman <brunorijsman@gmail.com> wrote:<= br>
One issue w= ith using the Thrift decoder generated by the Thrift compiler is that the u= ser interface of Wireshark allows you to highlight certain fields in the de= coded message and automatically highlights the corresponding bytes in the h= exdump of the binary message. Thus the Thrift decoder used in Wireshark mus= t (a) know the exact order in which the fields occurred in the binary messa= ge, which may not be the same order as in the model and (b) know which byte= s in the binary message correspond to which fields in the decoded message.= =C2=A0 As far as I know the code generated by the Thrift compiler currently= does not generate that information. An interesting approach would be to en= hance the Thrift C back-end to include that information.

=E2=80=94 Bruno

On May 12,= 2020, at 4:51 PM, Tony Przygienda <tonysietf@gmail.com> wrote:

and quick question, why didn't you just push the binar= y into thrift backend to deserialize? People may send compressed binary for= mats etc and the encoding may change. Point of the modelling exercise

-- tony


On Tue, May 12, 20= 20 at 3:48 PM Tony Przygienda <tonysietf@gmail.com> wrote:
multiple people we= re looking JUST for this.

maybe next interim = implementation experience. this was lighting fast ;-)

-- tony


On Tue, May 12, 2020 at 3:47 PM Le= onardo Alberro Zimmermann <lalberro@fing.edu.uy> wrote:
=20 =20 =20

Hello all,

regarding the development of a wireshark dissect= or for RIFT, we are happy to introduce you our work. It is available at ht= tps://gitlab.com/fing-mina/datacenters/rift-dissector

RIFT C dissector is a complete Wireshark dissector for decoding RIFT protocol. The code identifies all the RIFT packets and builds a complete dissection for the TIE ones. This dissector has been tested with the current implementations of RIFT.

Regards,
Leonardo


--000000000000a166e405a59f8f09-- From nobody Fri May 15 08:55:41 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6E04C3A0BEE for ; Thu, 14 May 2020 11:05:29 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.099 X-Spam-Level: X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=hotmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tuO-2LYLVrIi for ; Thu, 14 May 2020 11:05:26 -0700 (PDT) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10olkn2039.outbound.protection.outlook.com [40.92.40.39]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 68B2F3A076E for ; Thu, 14 May 2020 11:05:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MUFJKrkvEYfxqBRAThks0uePqFUnRRDWhoLGgfVFORcMgwPeVULex7yWR+4vxaCs1Ygwqi0DVXw7Wovk1H6imFJhjajcMsf/1V6obL9x1ZWD4ge8QdeEPXgNRaNGtj5916Mw/nEc87XLcfnbZWSUMK9mLMVyQI8sWmmIAPRcYVth/n0x2Y+UXr0mU6fKlKtW6YWScbqZA0WAKDOs2u1xtsQ/Kogzsc5/9Hperg5FeklnohY6lx3xngdUewIi6oMLplM6km7xfGWO71rm50KhIKnvMbYMR54mf15D/bHK3C2hrocVMTzIkhuIXyXr/8GbIS+XoUZJsdCX7tXSE53VCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XOXGtfiM89Oxf/DYstCvkXO9w/ayj2FfmadSYlnnu+E=; b=K8moUzx0iaKweKhliLpHRgbGGxRWlvWza4nHQH74idyGLvUZCyrNbJYlAhiAcSIepPP+HHJiLGERnFEQi/oD/lAe4RoLBxOg/ZrFFv2bLnoHmedUvQZzRIsi++ZQ/eWA5D0bbaCRjn+GtDzlMQEIUE19ubpPNz+WBYhAIyrm+0+/gW0cwsV5PRDm6RWz/5AlmufTIRBYLidjta7XWBdh5c9LPgJOEO44K6S7VrWYzjMofPGB+/+6dAcH+OQQne1CdHcFoDeju1Ypazb1Pb1kgt+JuCho69YV408MWZcgBxxy2Alvi/SQUYm293LnKGGjH4zLbl07hHRALtwh2vmH0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XOXGtfiM89Oxf/DYstCvkXO9w/ayj2FfmadSYlnnu+E=; b=HLBN5Ver4lvdNyrKb67axJoUyJulGMnQP2NL3FhY39ArEjDPhMO35OJ9K+gKflQaYXo8PkyxpnknrLd6OoypzbhrAm5IgvrrHTX8AiujCdUNfDcd8+93K88iYkym1+dTgojW0A/0nAzyUvVowob0nBk0IEIxjz24uR0nixsdRjMeiuAlWWsURO5HIFc+dumycxfAVTpj2V2/uLmQ4WwhfFY28BeQhxU/vxXtlXTgg4WV0WPGACYwNE9JGa5MOdxCXe4kfL4RLGOD2CddoOM4qMUHmwANGRbTkN17tS0bGsVuKp3ooixLefPd2HYSy8lAdtDDkCDJZG6orB94lPAgLQ== Received: from MW2NAM10FT005.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::42) by MW2NAM10HT209.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::392) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.19; Thu, 14 May 2020 18:05:24 +0000 Received: from BYAPR06MB5845.namprd06.prod.outlook.com (2a01:111:e400:7e87::47) by MW2NAM10FT005.mail.protection.outlook.com (2a01:111:e400:7e87::75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.19 via Frontend Transport; Thu, 14 May 2020 18:05:24 +0000 Received: from BYAPR06MB5845.namprd06.prod.outlook.com ([fe80::7033:3bf:78c4:3ef9]) by BYAPR06MB5845.namprd06.prod.outlook.com ([fe80::7033:3bf:78c4:3ef9%4]) with mapi id 15.20.3000.022; Thu, 14 May 2020 18:05:24 +0000 From: Bruno Rijsman To: "Pascal Thubert (pthubert)" , "rift@ietf.org" CC: Melchior Aelmans , Christian Graf , Oliver Steudler , Olivier Vandezande , Tony Przygienda , Antoni Przygienda , "tommasocaiazzi@gmail.com" , Jeff Tantsura , "Jeffrey (Zhaohui) Zhang" , "Jeffrey (Zhaohui) Zhang" , Jeffrey Zhang Thread-Topic: Negative disaggregation feature guide Thread-Index: AQHWKXf3Q/xs7t0/3UuNVqLdtIM2cqimncCAgACc0dCAAHCAYIAADK8AgAAA4+CAACjmgA== Date: Thu, 14 May 2020 18:05:24 +0000 Message-ID: <4272B942-2C6F-4974-8515-E295A6BFF757@hotmail.com> References: <068412A2-1E85-4327-A50E-F6138C6D7EC0@hotmail.com> <9E819710-00BC-4285-9146-F655CAA7E1CA@hotmail.com> <432D1BE9-8BC3-4627-ACA5-72AA52A79C8C@hotmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:219A153ABA94A6150B5B231C5D20F1993A1B46500845A4BF2791E196AA26A27A; UpperCasedChecksum:A71EA91667E65847EE2DC58F21E6799A633FB9537792F77C24071889BE8768CF; SizeAsReceived:7805; Count:46 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [YcGcgGo7K+I7D0shG1Gc5NcEc4aUTvuw] x-ms-publictraffictype: Email x-incomingheadercount: 46 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 77261c95-c985-4996-93a8-08d7f831600f x-ms-traffictypediagnostic: MW2NAM10HT209: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xwdmKG8ST411wgGnToj3ZyAdqj9QdRwSYDLVzq9oRL2gCUIIK3+V8+fAjy7fNXqoo7b9EjwYQA2RDJjgYt7wQnuQvKk4mfZ763JtAjAYDh2a3EZnm//Vc7xEdLsd/egZWGUgD+Fx4fS5Ozb0LpTIjqZPpVStwIGtTKeDSIZqO+u0tHpVsuzR3Yxye7vYSQ6VKzAGBNJ1ApUTrrQoallcsw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR06MB5845.namprd06.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:; DIR:OUT; SFP:1901; x-ms-exchange-antispam-messagedata: KBq0ngoWYikgrNoMYGks59+Uxmp8VXBxXbSYkDMY/LPVCVD5GFGOSAOUCR2fB7MLyqwAFnPl0pD11ArJJTq2NmTYowPja9UQmrF4Sa1yJYPtETbZk7/Pepfv3jGsBBSCzmWjVPPjddi5+z8zN5y/hg== x-ms-exchange-transport-forked: True Content-Type: multipart/alternative; boundary="_000_4272B9422C6F49748515E295A6BFF757hotmailcom_" MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 77261c95-c985-4996-93a8-08d7f831600f X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 May 2020 18:05:24.4424 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2NAM10HT209 Archived-At: X-Mailman-Approved-At: Fri, 15 May 2020 08:55:39 -0700 Subject: Re: [Rift] Negative disaggregation feature guide X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 18:05:30 -0000 --_000_4272B9422C6F49748515E295A6BFF757hotmailcom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QnJvYWRlbmluZyBhIGRpc2N1c3Npb24gb24gbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gdG8gdGhl IFJJRlQgbWFpbGluZyBsaXN0Lg0KDQpOb3cgdGhhdCB3ZSBoYXZlIGltcGxlbWVudGVkIG5lZ2F0 aXZlIGRpc2FnZ3JlZ2F0aW9uIGluIFJJRlQtUHl0aG9uLCBhbmQgbm93IHRoYXQgd2UgYXJlIGdl dHRpbmcgc29tZSBvcGVyYXRpb25hbCBleHBlcmllbmNlIHdpdGggaXQsIHRoZSBmb2xsb3dpbmcg aXMgYmVjb21pbmcgbW9yZSBhbmQgbW9yZSBldmlkZW50Og0KDQpJdCBzZWVtcyB0byB1cyAoQnJ1 bm8gYW5kIFBhc2NhbCwgZm9yIG5vdykgdGhhdCBvbmNlIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9u IGlzIGltcGxlbWVudGVkLCB0aGVyZSBpcyByZWFsbHkgbm8gbmVlZCBmb3IgcG9zaXRpdmUgZGlz YWdncmVnYXRpb24gYW55IG1vcmUuDQoNCkV2ZXJ5IHVzZSBjYXNlIHRoYXQgY2FuIGJlIHNvbHZl ZCBieSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBjYW4gKGFzIGZhciBhcyB3ZSBjYW4gY3VycmVu dGx5IHRlbGwpIGFsc28gYmUgc29sdmVkIGJ5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uLg0KDQpG dXJ0aGVybW9yZSwgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gc29sdmVzIHRoZSBwcm9ibGVtcyBp biBhIGZhciBzaW1wbGVyIGFuZCBtb3JlIGVsZWdhbnQgd2F5OiB0aGVyZSBhcmUgZmV3ZXIgYWR2 ZXJ0aXNpbmcgbm9kZXMgYW5kIGZld2VyIGFkdmVydGlzZWQgVElFcyBpbnZvbHZlZCwgYW5kIHdl IGRvbuKAmXQgaGF2ZSB0aGUgc3luY2hyb25pemF0aW9uIGlzc3VlIHRoYXQgcG9zaXRpdmUgZGlz YWdncmVnYXRpb24gaGFzIHRoYXQgcG90ZW50aWFsbHkgY2F1c2VzIGluY2FzdCBwcm9ibGVtcy4N Cg0KVGh1cywgYXQgdGhlIHZlcnkgbGVhc3QsIGl0IG1ha2VzIHNlbnNlIHRvIHJlY29tbWVuZCB0 aGF0IGluIGEgZ2l2ZW4gZmFicmljIHdlIHVzZSBlaXRoZXIgb25seSBuZWdhdGl2ZSBkaXNhZ2dy ZWdhdGlvbiBvbmx5IG9yIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIG9ubHksIHdpdGggbmVnYXRp dmUgZGlzYWdncmVnYXRpb24gYmVpbmcgdGhlIGRlZmF1bHQuDQoNCklmIHBvc2l0aXZlIGFuZCBu ZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhcmUgZW5hYmxlZCBzaW11bHRhbmVvdXNseSBpbiBvbmUg YW5kIHRoZSBzYW1lIGZhYnJpYywgZXZlcnl0aGluZyBzdGlsbCB3b3JrcyBmaW5lIGFzIGZhciBh cyB3ZSBjYW4gc2VlLiBCdXQgdGhlcmUgYXJlIHNvbWUg4oCcaW50ZXJlc3RpbmfigJ0gaW50ZXJh Y3Rpb25zIHRoYXQgbWFrZSB0aGluZ3MgdW5uZWNlc3NhcmlseSBjb21wbGV4IGFuZCBwb3RlbnRp YWxseSBmcmFnaWxlLg0KDQpJZiBzdXBwb3J0IGZvciBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBp cyBtYW5kYXRvcnksIGFuZCBpZiBvdXIgYXNzZXNzbWVudCB0aGF0IG5lZ2F0aXZlIGRpc2FnZ3Jl Z2F0aW9uIGNhbiBzb2x2ZSBhbGwgdXNlIGNhc2VzIGlzIGNvcnJlY3QsIHRoZW4gd2UgY291bGQg Z28gb25lIGJvbGQgc3RlcCBmdXJ0aGVyIGFuZCBjb21wbGV0ZWx5IHJlbW92ZSBwb3NpdGl2ZSBk aXNhZ2dyZWdhdGlvbiBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLg0KDQpUaG91Z2h0cz8NCg0K4oCU IEJydW5vDQoNCk9uIE1heSAxNCwgMjAyMCwgYXQgMTA6NDggQU0sIFBhc2NhbCBUaHViZXJ0IChw dGh1YmVydCkgPHB0aHViZXJ0QGNpc2NvLmNvbTxtYWlsdG86cHRodWJlcnRAY2lzY28uY29tPj4g d3JvdGU6DQoNCkhlbGxvIEJydW5vOg0KDQpJIGxpa2UgeW91ciBuZWdhdGl2ZS1vbmx5IGRlZmF1 bHQgYmVjYXVzZSBpdCBpcyBwcm9iYWJseSB0aGUgc2FmZXN0LiBMZXQgbWUgZWxhYm9yYXRlLg0K DQpwYXJ0aXRpb25pbmcgc2F2ZXMgYSBsb3QgbW9yZSBwb3J0cyBwZXIgVG9GIG5vZGUgdGhhbiB0 aGUgcmluZyBjb3N0IHNvIGl0IGRvZXMgbm90IG1hdHRlci4NCg0KSWYgeW91IGVuYWJsZSBuZWdh dGl2ZSwgdGhlcmXigJlzIG5vIHBvaW50IGluIGRvaW5nIGFueSBwb3NpdGl2ZSBhdCBhbGwsIGlz IHRoZXJlPyBTbyB3aGF0IGRvIHdlIHRyeSB0byBzYXZlIGJ5IGNvbWJpbmluZz8gSW4geW91ciBl eGFtcGxlLCBJIGd1ZXNzIHRoYXQgc3VwZXIgMSAyIGhhZCB0byByZXRyYWN0IHRoZSBwb3NpdGl2 ZSBkaXNhZyBhbmQgdGhlbiBkbyBuZWdhdGl2ZSBpbnN0ZWFkIHdoZW4gdGhlIGxpbmsgdG8gc3Bp bmUgMSAxIGZlbGwuIFdhcyB0aGF0IG5vdCBhIGJpdCBjb21wbGV4IGFuZCBlcnJvciBwcm9uZT8N Cg0KQWxzbyBJ4oCZbSBub3QgY2xlYXIgaG93IHdlIGNhbiBhbHdheXMgZGVjaWRlIHRoYXQgZHlu YW1pY2FsbHkgYW5kIEkgZG8gbm90IGJlbGlldmUgdGhhdCB3ZSBzcGVjaWZpZWQgdGhhdC4gU28g SSB1bmRlcnN0YW5kIHRoYXQgaXTigJlzIG1vcmUgbGlrZSBhIHVzZSBjYXNlIHRoaW5neSwgbGlr ZSBhIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCBiZSBhZGFwdGVkIHRvIHRoZSB1c2UgY2FzZS4N Cg0KPT4gZG8gbm90IGNvbmZpZ3VyZSBib3RoIGF0IHRoZSBzYW1lIHRpbWUgdXNlIGVpdGhlciBw b3NpdGl2ZSBvciBuZWdhdGl2ZSBkaXNhZy4NCg0KV2UgZG8gbm90IHRyeSB0byBkbyBwb3NpdGl2 ZSBkaXNhZyB0cmFuc2l0aXZlbHkuIFNvIGlmIHRoZXJlIGlzIGEgbmVlZCBmb3IgdHJhbnNpdGl2 ZSwgeW91IGhhdmUgdG8gdXNlIG5lZ2F0aXZlLiAgSW4gYSBtdWx0aXBsYW5lIGNhc2UsIHRoZXJl 4oCZcyB1c3VhbGx5IChhcyBpbiB5b3VyIHBpY3R1cmUpIG9uZSBUb1AgcGVyIHBsYW5lIGluIGVh Y2ggUG9ELCBhbmQgYSBmaXJzdCBsaW5rIGZhaWx1cmUgKHNheSBTcGluZSAxIDEgdG8gbGVhZiAx IDEpIGNhbiBhbHJlYWR5IGNhdXNlIGEgZmFsbGVuIGxlYWY6IGxlYWYgMSAxIGlzIG5vIG1vcmUg cmVhY2hhYmxlIHdpdGhpbiBwbGFuZSAxLiBUaGlzIHRlbGxzIHlvdSB0aGF0IGFsbCBsZWF2ZXMg aW4gdGhlIG90aGVyIFBvRHMgbXVzdCBhdm9pZCB0aGF0IHBsYW5lLCBhbmQgdGhhdOKAmXMgYSBs ZWFmIGRlY2lzaW9uOyB3aGljaCB0ZWxscyB5b3UgdGhhdCB5b3UgbmVlZCB0byByZWN1cnNlIHRy YW5zaXRpdmVseSBkb3duLiBUaGlzIGluZGljYXRlcyB0aGF0IG5lZ2F0aXZlIG11c3QgYmUgYWN0 aXZhdGVkIGluIGEgaGlnaGx5IHBhcnRpdGlvbmVkIChtZWFuaW5nIGxvdyByZWR1bmRhbmN5KSBt dWx0aXBsYW5lLg0KDQpTYXkgd2UgdHJ5IHRvIHVzZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiB0 cmFuc2l0aXZlbHkgaW4gYSBUb0YgdGhhdCBpcyBwYXJ0aXRpb25lZCBsaWtlIGluIHBsYW5lcywg eW914oCZZCBydW4gYSByaXNrIHRoYXQgbm9uZSBvZiB0aGUgVG9GIG5vZGVzIHRoYXQgY2FuIHN0 aWxsIHJlYWNoIHRoZSBsZWFmIGNhbiBzZWUgKHRocm91Z2ggc291dGggcmVmbGVjdGlvbikgdGhl IFRvRiBub2RlIHRoYXQgY2Fubm90IHNvIHRoZXkgZG8gbm90IGtub3cgdGhleSBuZWVkIHRvIGRp c2FnLiBTbyB5b3UgZW5kIHVwIG5lZWRpbmcgdGhlIHNhbWUgcmluZyBhcyBmb3IgbmVnYXRpdmUs IHRoZSBzb3V0aGVybiByZWZsZWN0aW9uIGJlY29tZSBtb3N0bHkgdXNlbGVzcyBhbmQgdGhlIGJl bmVmaXRzIG9mIHBvc2l0aXZlIGFyZSBnb25lLg0KDQpQYXJ0aXRpb25uZWQgVG9GID0+IG5lZ2F0 aXZlDQoNCkkgdHJ1c3QgdGhhdCB3ZSBjYW4gdXNlIHBvc2l0aXZlIGluIGEgaGlnaGx5IHJlZHVu ZGFudCBhbmQgc3ltbWV0cmljYWwgbm9uLXBhcnRpdGlvbmVkIFRvRi4gSWYgbm8gb25lIGNhbiBy ZWFjaCB0aGUgbGVhZiBhbnltb3JlIChsaWtlIGl04oCZcyBkZWFkKSB3ZSBoYXZlIG5vIGlzc3Vl IHNpbmNlIGl0IHNob3VsZCBub3QgYmUgZGlzYWdncmVnYXRlZCwganVzdCB1c2UgdGhlIGRpc2Nh cmRzIHJvdXRlIGF0IGFueSBUb0Ygbm9kZS4gSWYgeW91IGhhdmUgZW5vdWdoIHJlZHVuZGFuY3kg YW5kIG5vIHBhcnRpdGlvbiwgIHRoZXJlIHdpbGwgYWx3YXlzIGJlIG5vZGVzIHRoYXQgY2FuIGJv dGggcmVhY2ggYSBsZWFmIGFuZCBkaXNjb3ZlciB0aGF0IGEgcGVlciBkb2VzIG5vdC4NCg0KPT4g UG9zaXRpdmUgaXMgaW5kaWNhdGVkIGZvciBhIHZlcnkgc3BlY2lmaWMgdXNlIGNhc2UsIGlkZWFs bHkgMiBsZXZlbHMgYW5kIGZ1bGx5IG1lc2hlZC4gTWF5YmUgdGhhdOKAmXMgZW5vdWdoIGRlcGxv eW1lbnRzIHRvIGp1c3RpZnkgdGhlIGZlYXR1cmUgaW4gdGhlIGNvZGUuDQoNClNvIHRoZSBxdWVz dGlvbiBpcyByZWFsbHkgdGhhdCBibHVycnkgem9uZSBiZXR3ZWVuIGhpZ2hseSByZWR1bmRhbnQg c2luZ2xlIHBsYW5lIGFuZCBoaWdobHkgcGFydGl0aW9uZWQgbXVsdGlwbGFuZSB3aGF0IHNob3Vs ZCBvbmUgZG8/IEkgYmVjb21lcyBhIHJpc2svYmVuZWZpdCBqdWRnZW1lbnTigKYgSWYgbmVnYXRp dmUgaXMgaW1wbGVtZW50ZWQgYW5kIHRoZSByaW5nIGlzIHRoZXJlLCBJ4oCZZCB1c2UgaXQsIGJl dHRlciBzYWZlIHRoYW4gc29ycnkuDQoNClRha2UgY2FyZQ0KDQpQYXNjYWwNCg0KDQoNCkZyb206 IEJydW5vIFJpanNtYW4gPGJydW5vcmlqc21hbkBob3RtYWlsLmNvbTxtYWlsdG86YnJ1bm9yaWpz bWFuQGhvdG1haWwuY29tPj4NClNlbnQ6IGpldWRpIDE0IG1haSAyMDIwIDE3OjM2DQpUbzogUGFz Y2FsIFRodWJlcnQgKHB0aHViZXJ0KSA8cHRodWJlcnRAY2lzY28uY29tPG1haWx0bzpwdGh1YmVy dEBjaXNjby5jb20+Pg0KQ2M6IE1lbGNoaW9yIEFlbG1hbnMgPG1hZWxtYW5zQGp1bmlwZXIubmV0 PG1haWx0bzptYWVsbWFuc0BqdW5pcGVyLm5ldD4+OyBDaHJpc3RpYW4gR3JhZiA8Y2dyYWZAanVu aXBlci5uZXQ8bWFpbHRvOmNncmFmQGp1bmlwZXIubmV0Pj47IE9saXZlciBTdGV1ZGxlciA8b3N0 ZXVkbGVyQGp1bmlwZXIubmV0PG1haWx0bzpvc3RldWRsZXJAanVuaXBlci5uZXQ+PjsgT2xpdmll ciBWYW5kZXphbmRlIDxvdmFuZGV6YW5kZUBqdW5pcGVyLm5ldDxtYWlsdG86b3ZhbmRlemFuZGVA anVuaXBlci5uZXQ+PjsgVG9ueSBQcnp5Z2llbmRhIDx0b255c2lldGZAZ21haWwuY29tPG1haWx0 bzp0b255c2lldGZAZ21haWwuY29tPj47IEFudG9uaSBQcnp5Z2llbmRhIDxwcno9NDBqdW5pcGVy Lm5ldEBkbWFyYy5pZXRmLm9yZzxtYWlsdG86cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5v cmc+PjsgdG9tbWFzb2NhaWF6emlAZ21haWwuY29tPG1haWx0bzp0b21tYXNvY2FpYXp6aUBnbWFp bC5jb20+OyBKZWZmIFRhbnRzdXJhIDxqZWZmdGFudC5pZXRmQGdtYWlsLmNvbTxtYWlsdG86amVm ZnRhbnQuaWV0ZkBnbWFpbC5jb20+PjsgSmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgPHp6aGFuZ0Bq dW5pcGVyLm5ldDxtYWlsdG86enpoYW5nQGp1bmlwZXIubmV0Pj47IEplZmZyZXkgKFpoYW9odWkp IFpoYW5nIDx6emhhbmc9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZzxtYWlsdG86enpoYW5n PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc+PjsgSmVmZnJleSBaaGFuZyA8enpoYW5nMjAw M0BnbWFpbC5jb208bWFpbHRvOnp6aGFuZzIwMDNAZ21haWwuY29tPj4NClN1YmplY3Q6IFJlOiBO ZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmZWF0dXJlIGd1aWRlDQoNCg0KT24gTWF5IDE0LCAyMDIw LCBhdCA4OjUzIEFNLCBQYXNjYWwgVGh1YmVydCAocHRodWJlcnQpIDxwdGh1YmVydEBjaXNjby5j b208bWFpbHRvOnB0aHViZXJ0QGNpc2NvLmNvbT4+IHdyb3RlOg0KDQpUaGlzIGRvZXMgbm90IHNo b3cgYmVjYXVzZSBvbiB5b3VyIGZpcnN0IGJyZWFrYWdlIHlvdSB1c2UgdGhlIHBvc2l0aXZlIGRp c2FnLiBJZiB5b3Ugc3RpY2sgdG8gdGhlIGxvZ2ljIHlvdSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcs IHRoYXQgaXMgcGljayBhbiBleGFtcGxlIHdoZXJlIHBvc2l0aXZlIGFwcGxpZXMgYnV0IHVzZSBu ZWdhdGl2ZSwgdGhlbiBvbiB5b3VyIGZpcnN0IGJyZWFrYWdlIHlvdeKAmWQgc2hvdyB0aGF0IHRo ZSBuZWdhdGl2ZSBkb2VzIG5vdCBuZWVkIHRvIGdvIHRyYW5zaXRpdmVseSB0byB0aGUgbGVhZiwg YmVjYXVzZSB0aGUgc3BpbmUgbm9kZXMgc3RpbGwgaGF2ZSBzb2x1dGlvbnMuIElzIHRoYXQgYSBs b3Qgb2Ygd29yayB0byBjaGFuZ2U/DQoNClRoaXMgaXMgZXhhY3RseSB3aGF0IEkgd2FzIHRoaW5r aW5nIGFzIHdlbGwuDQoNCk1heWJlIEkgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjdXJyZW50IHNw ZWNpZmljYXRpb24gd2l0aCBhIGZpbmUtdG9vdGhlZCBjb21iIGFnYWluLCBidXQgbXkgKHBvc3Np Ymx5IGluY29ycmVjdCkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBjdXJyZW50IHZlcnNpb24g b2YgdGhlIHNwZWNpZmljYXRpb24gaXMgdGhhdCB3ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBp cyB1c2VkIChNVVNUIGJlIHVzZWQ/IFNIT1VMRCBiZSB1c2VkPykgaW4gdGhlIOKAnGZpcnN0IGZh aWx1cmXigJ0gc2NlbmFyaW8uDQoNClBlcnNvbmFsbHksIEkgc2VlIG5vIHJlYXNvbiB3aHkgd2Ug d291bGQgbm90IGJlIGFibGUgdG8gdXNlIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGluc3RlYWQg b2YgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaW4gdGhlIGZpcnN0IGZhaWx1cmUgc2NlbmFyaW8g YXMgd2VsbC4NCg0KSW4gdGhlIGNvbnRleHQgb2YgdGhlIHR1dG9yaWFsLCB0aGlzIHdvdWxkIGhh dmUgdGhlIGFkdmFudGFnZSBvZiBjbGVhcmx5IGRlbW9uc3RyYXRpbmcgdGhlIHByb3BhZ2F0aW9u IGxvZ2ljIG1vcmUgY2xlYXJseS4NCg0KQnV0IG1vcmUgaW1wb3J0YW50bHksIGl0IHNlZW1zIHRv IG1lIHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpcyBpbXBsZW1lbnRlZCwgdGhl cmUgaXMgcmVhbGx5IG5vIHJlYXNvbiB0byB1c2UgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gYW55 d2hlcmUuIEl0IHdvdWxkIGJlIOKAnGNsZWFuZXLigJ0gKGxlc3Mgc2lnbmFsaW5nKSBhbmQg4oCc YmV0dGVy4oCdIChubyBpbmNhc3QpIHRvIHNpbXBseSB1c2UgbmVnYXRpdmUgZGlzYWdncmVnYXRp b24gZXZlcnl3aGVyZS4NCg0KU2/igKYuIEkgd2FzIHRoaW5raW5nIHRvIGFkZCBhIGNvbmZpZ3Vy YXRpb24ga25vYiB0byBteSBjb2RlIOKAnHBvc2l0aXZlLW9ubHnigJ0sIOKAnG5lZ2F0aXZlLW9u bHnigJ0sIOKAnHBvc2l0aXZlLWFuZC1uZWdhdGl2ZeKAnSwgd2l0aCDigJxuZWdhdGl2ZS1vbmx5 4oCdIGJlaW5nIHRoZSBkZWZhdWx0PyAoU2VlbXMgbGlrZSBhIHdhc3RlIHRvIGhhdmUgY29kZWQg dXAgdGhlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uKS4NCg0KV2hhdCBkb2VzIGV2ZXJ5b25lIHRo aW5rIG9mIHRoYXQ/DQoNClNob3VsZCB3ZSBnbyBldmVuIGZ1cnRoZXIgYW5kIHNpbXBseSByZW1v dmUgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gZnJvbSB0aGUgc3BlYz8NCg0KU2hvdWxkIHdlIGhh dmUgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gYXMgYSBjYXBhYmlsaXR5IGluIHRoZSBjYXBhYmls aXR5IG5lZ290aWF0aW9uPyAoU2VlbXMgbm9uLXNlbnNpY2FsLCBnaXZlbiBpdCBpcyBzb21ldGhp bmcgdGhhdCB0aGUgd2hvbGUgZmFicmljIG5lZWRzIHRvIHN1cHBvcnQgb3Igbm90LikNCg0KU2hv dWxkIHdlIHRha2UgdGhpcyB0byB0aGUgUklGVCBtYWlsaW5nIGxpc3Q/DQoNCuKAlCBCcnVubw0K DQo= --_000_4272B9422C6F49748515E295A6BFF757hotmailcom_ Content-Type: text/html; charset="utf-8" Content-ID: <5FAE91DB2EAC774FBDDE46A10BD44EDF@namprd06.prod.outlook.com> Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5IHN0eWxlPSJ3b3JkLXdy YXA6IGJyZWFrLXdvcmQ7IC13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgbGluZS1icmVhazogYWZ0 ZXItd2hpdGUtc3BhY2U7IiBjbGFzcz0iIj4NCjxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHls ZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+QnJvYWRlbmluZyBhIGRpc2N1c3Npb24gb24g bmVnYXRpdmUgZGlzYWdncmVnYXRpb24gdG8gdGhlIFJJRlQgbWFpbGluZyBsaXN0LjwvZm9udD4N CjxkaXYgY2xhc3M9IiI+PGZvbnQgZmFjZT0iQXZlbmlyLUJvb2siIHN0eWxlPSJmb250LXNpemU6 IDE0cHg7IiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNz PSIiPjxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xh c3M9IiI+Tm93IHRoYXQgd2UgaGF2ZSBpbXBsZW1lbnRlZCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlv biBpbiBSSUZULVB5dGhvbiwgYW5kIG5vdyB0aGF0IHdlIGFyZSBnZXR0aW5nIHNvbWUgb3BlcmF0 aW9uYWwgZXhwZXJpZW5jZSB3aXRoIGl0LCB0aGUgZm9sbG93aW5nIGlzIGJlY29taW5nIG1vcmUg YW5kIG1vcmUgZXZpZGVudDo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZhY2U9 IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+PGJyIGNsYXNz PSIiPg0KPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBmYWNlPSJBdmVuaXItQm9v ayIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsiIGNsYXNzPSIiPkl0IHNlZW1zIHRvIHVzIChCcnVu byBhbmQgUGFzY2FsLCBmb3Igbm93KSB0aGF0IG9uY2UgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24g aXMgaW1wbGVtZW50ZWQsIHRoZXJlIGlzIHJlYWxseSBubyBuZWVkIGZvciBwb3NpdGl2ZSBkaXNh Z2dyZWdhdGlvbiBhbnkgbW9yZS48L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZh Y2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+PGJyIGNs YXNzPSIiPg0KPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBmYWNlPSJBdmVuaXIt Qm9vayIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsiIGNsYXNzPSIiPkV2ZXJ5IHVzZSBjYXNlIHRo YXQgY2FuIGJlIHNvbHZlZCBieSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBjYW4gKGFzIGZhciBh cyB3ZSBjYW4gY3VycmVudGx5IHRlbGwpIGFsc28gYmUgc29sdmVkIGJ5IG5lZ2F0aXZlIGRpc2Fn Z3JlZ2F0aW9uLjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZvbnQgZmFjZT0iQXZlbmly LUJvb2siIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8 L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHls ZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+RnVydGhlcm1vcmUsIG5lZ2F0aXZlIGRpc2Fn Z3JlZ2F0aW9uIHNvbHZlcyB0aGUgcHJvYmxlbXMgaW4gYSBmYXIgc2ltcGxlciBhbmQgbW9yZSBl bGVnYW50IHdheTogdGhlcmUgYXJlIGZld2VyIGFkdmVydGlzaW5nIG5vZGVzIGFuZCBmZXdlciBh ZHZlcnRpc2VkIFRJRXMgaW52b2x2ZWQsIGFuZCB3ZSBkb27igJl0IGhhdmUNCiB0aGUgc3luY2hy b25pemF0aW9uIGlzc3VlIHRoYXQgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaGFzIHRoYXQgcG90 ZW50aWFsbHkgY2F1c2VzIGluY2FzdCBwcm9ibGVtcy48L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNz PSIiPjxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xh c3M9IiI+PGJyIGNsYXNzPSIiPg0KPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBm YWNlPSJBdmVuaXItQm9vayIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsiIGNsYXNzPSIiPlRodXMs IGF0IHRoZSB2ZXJ5IGxlYXN0LCBpdCBtYWtlcyBzZW5zZSB0byByZWNvbW1lbmQgdGhhdCBpbiBh IGdpdmVuIGZhYnJpYyB3ZSB1c2UgZWl0aGVyIG9ubHkgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24g b25seSBvciBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5LCB3aXRoIG5lZ2F0aXZlIGRpc2Fn Z3JlZ2F0aW9uDQogYmVpbmcgdGhlIGRlZmF1bHQuPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0i Ij48Zm9udCBmYWNlPSJBdmVuaXItQm9vayIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsiIGNsYXNz PSIiPjxiciBjbGFzcz0iIj4NCjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZvbnQgZmFj ZT0iQXZlbmlyLUJvb2siIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IiBjbGFzcz0iIj5JZiBwb3Np dGl2ZSBhbmQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gYXJlIGVuYWJsZWQmbmJzcDs8L2ZvbnQ+ PGZvbnQgZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDE0cHg7IiBjbGFzcz0iIj5zaW11bHRhbmVvdXNseSBpbiBvbmUgYW5kIHRoZSBzYW1lIGZhYnJp YywgZXZlcnl0aGluZw0KIHN0aWxsIHdvcmtzIGZpbmUgYXMgZmFyIGFzIHdlIGNhbiBzZWUuIEJ1 dCB0aGVyZSBhcmUgc29tZSZuYnNwO+KAnGludGVyZXN0aW5n4oCdIGludGVyYWN0aW9ucyB0aGF0 IG1ha2UgdGhpbmdzJm5ic3A7dW5uZWNlc3NhcmlseSBjb21wbGV4IGFuZCBwb3RlbnRpYWxseSBm cmFnaWxlLiZuYnNwOzwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZh Y2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+PGJyIGNs YXNzPSIiPg0KPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBmYWNlPSJBdmVuaXIt Qm9vayIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsiIGNsYXNzPSIiPklmIHN1cHBvcnQgZm9yIG5l Z2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIG1hbmRhdG9yeSwgYW5kIGlmIG91ciBhc3Nlc3NtZW50 IHRoYXQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gY2FuIHNvbHZlIGFsbCB1c2UgY2FzZXMgaXMg Y29ycmVjdCwgdGhlbiB3ZSBjb3VsZCBnbyBvbmUgYm9sZCBzdGVwIGZ1cnRoZXIgYW5kIGNvbXBs ZXRlbHkNCiByZW1vdmUgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gZnJvbSB0aGUgc3BlY2lmaWNh dGlvbi48L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZhY2U9IkF2ZW5pci1Cb29r IiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPg0KPC9mb250 PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBmYWNlPSJBdmVuaXItQm9vayIgc3R5bGU9ImZv bnQtc2l6ZTogMTRweDsiIGNsYXNzPSIiPlRob3VnaHRzPzwvZm9udD48L2Rpdj4NCjxkaXYgY2xh c3M9IiI+PGZvbnQgZmFjZT0iQXZlbmlyLUJvb2siIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IiBj bGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250 IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+4oCU IEJydW5vPC9mb250PjxiciBjbGFzcz0iIj4NCjxkaXY+PGJyIGNsYXNzPSIiPg0KPGJsb2NrcXVv dGUgdHlwZT0iY2l0ZSIgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSIiPk9uIE1heSAxNCwgMjAyMCwg YXQgMTA6NDggQU0sIFBhc2NhbCBUaHViZXJ0IChwdGh1YmVydCkgJmx0OzxhIGhyZWY9Im1haWx0 bzpwdGh1YmVydEBjaXNjby5jb20iIGNsYXNzPSIiPnB0aHViZXJ0QGNpc2NvLmNvbTwvYT4mZ3Q7 IHdyb3RlOjwvZGl2Pg0KPGJyIGNsYXNzPSJBcHBsZS1pbnRlcmNoYW5nZS1uZXdsaW5lIj4NCjxk aXYgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiIHN0eWxlPSJwYWdlOiBXb3Jk U2VjdGlvbjE7IGNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRp Y2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw czogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0 ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ry b2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPGRpdiBzdHlsZT0ibWFy Z2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxp YnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJp IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+SGVsbG8g QnJ1bm86PG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJD YWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+ PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJD YWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+ SSBsaWtlIHlvdXIgbmVnYXRpdmUtb25seSBkZWZhdWx0IGJlY2F1c2UgaXQgaXMgcHJvYmFibHkg dGhlIHNhZmVzdC4gTGV0IG1lIGVsYWJvcmF0ZS48bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48 L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N Cjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvc3Bhbj48 L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N Cjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5wYXJ0aXRpb25pbmcgc2F2ZXMgYSBsb3QgbW9yZSBwb3J0 cyBwZXIgVG9GIG5vZGUgdGhhbiB0aGUgcmluZyBjb3N0IHNvIGl0IGRvZXMgbm90IG1hdHRlci48 bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJn aW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGli cmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmki IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48bzpwIGNs YXNzPSIiPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJn aW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGli cmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmki IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5JZiB5b3Ug ZW5hYmxlIG5lZ2F0aXZlLCB0aGVyZeKAmXMgbm8gcG9pbnQgaW4gZG9pbmcgYW55IHBvc2l0aXZl IGF0IGFsbCwgaXMgdGhlcmU/IFNvIHdoYXQgZG8gd2UgdHJ5IHRvIHNhdmUgYnkgY29tYmluaW5n PyBJbiB5b3VyIGV4YW1wbGUsIEkgZ3Vlc3MgdGhhdCBzdXBlciAxIDIgaGFkIHRvIHJldHJhY3Qg dGhlDQogcG9zaXRpdmUgZGlzYWcgYW5kIHRoZW4gZG8gbmVnYXRpdmUgaW5zdGVhZCB3aGVuIHRo ZSBsaW5rIHRvIHNwaW5lIDEgMSBmZWxsLiBXYXMgdGhhdCBub3QgYSBiaXQgY29tcGxleCBhbmQg ZXJyb3IgcHJvbmU/PG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRp diBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBm YWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xh c3M9IiI+PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRp diBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBm YWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xh c3M9IiI+QWxzbyBJ4oCZbSBub3QgY2xlYXIgaG93IHdlIGNhbiBhbHdheXMgZGVjaWRlIHRoYXQg ZHluYW1pY2FsbHkgYW5kIEkgZG8gbm90IGJlbGlldmUgdGhhdCB3ZSBzcGVjaWZpZWQgdGhhdC4g U28gSSB1bmRlcnN0YW5kIHRoYXQgaXTigJlzIG1vcmUgbGlrZSBhIHVzZSBjYXNlIHRoaW5neSwg bGlrZSBhIGNvbmZpZ3VyYXRpb24NCiB0aGF0IHdvdWxkIGJlIGFkYXB0ZWQgdG8gdGhlIHVzZSBj YXNlLjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTog Q2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2Fs aWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxv OnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTog Q2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2Fs aWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPj0m Z3Q7IGRvIG5vdCBjb25maWd1cmUgYm90aCBhdCB0aGUgc2FtZSB0aW1lIHVzZSBlaXRoZXIgcG9z aXRpdmUgb3IgbmVnYXRpdmUgZGlzYWcuPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9mb250 PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9u dCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMXB0OyIgY2xhc3M9IiI+PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250 PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9u dCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMXB0OyIgY2xhc3M9IiI+V2UgZG8gbm90IHRyeSB0byBkbyBwb3NpdGl2ZSBkaXNhZyB0cmFu c2l0aXZlbHkuIFNvIGlmIHRoZXJlIGlzIGEgbmVlZCBmb3IgdHJhbnNpdGl2ZSwgeW91IGhhdmUg dG8gdXNlIG5lZ2F0aXZlLiAmbmJzcDtJbiBhIG11bHRpcGxhbmUgY2FzZSwgdGhlcmXigJlzIHVz dWFsbHkgKGFzIGluIHlvdXIgcGljdHVyZSkgb25lIFRvUA0KIHBlciBwbGFuZSBpbiBlYWNoIFBv RCwgYW5kIGEgZmlyc3QgbGluayBmYWlsdXJlIChzYXkgU3BpbmUgMSAxIHRvIGxlYWYgMSAxKSBj YW4gYWxyZWFkeSBjYXVzZSBhIGZhbGxlbiBsZWFmOiBsZWFmIDEgMSBpcyBubyBtb3JlIHJlYWNo YWJsZSB3aXRoaW4gcGxhbmUgMS4gVGhpcyB0ZWxscyB5b3UgdGhhdCBhbGwgbGVhdmVzIGluIHRo ZSBvdGhlciBQb0RzIG11c3QgYXZvaWQgdGhhdCBwbGFuZSwgYW5kIHRoYXTigJlzIGEgbGVhZiBk ZWNpc2lvbjsgd2hpY2gNCiB0ZWxscyB5b3UgdGhhdCB5b3UgbmVlZCB0byByZWN1cnNlIHRyYW5z aXRpdmVseSBkb3duLiBUaGlzIGluZGljYXRlcyB0aGF0IG5lZ2F0aXZlIG11c3QgYmUgYWN0aXZh dGVkIGluIGEgaGlnaGx5IHBhcnRpdGlvbmVkIChtZWFuaW5nIGxvdyByZWR1bmRhbmN5KSBtdWx0 aXBsYW5lLjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0i Q2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIi PjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0i Q2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIi PlNheSB3ZSB0cnkgdG8gdXNlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIHRyYW5zaXRpdmVseSBp biBhIFRvRiB0aGF0IGlzIHBhcnRpdGlvbmVkIGxpa2UgaW4gcGxhbmVzLCB5b3XigJlkIHJ1biBh IHJpc2sgdGhhdCBub25lIG9mIHRoZSBUb0Ygbm9kZXMgdGhhdCBjYW4gc3RpbGwgcmVhY2ggdGhl IGxlYWYgY2FuDQogc2VlICh0aHJvdWdoIHNvdXRoIHJlZmxlY3Rpb24pIHRoZSBUb0Ygbm9kZSB0 aGF0IGNhbm5vdCBzbyB0aGV5IGRvIG5vdCBrbm93IHRoZXkgbmVlZCB0byBkaXNhZy4gU28geW91 IGVuZCB1cCBuZWVkaW5nIHRoZSBzYW1lIHJpbmcgYXMgZm9yIG5lZ2F0aXZlLCB0aGUgc291dGhl cm4gcmVmbGVjdGlvbiBiZWNvbWUgbW9zdGx5IHVzZWxlc3MgYW5kIHRoZSBiZW5lZml0cyBvZiBw b3NpdGl2ZSBhcmUgZ29uZS48bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+ DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsg Zm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNpemU9 IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7 IiBjbGFzcz0iIj48bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+ DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsg Zm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNpemU9 IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7 IiBjbGFzcz0iIj5QYXJ0aXRpb25uZWQgVG9GID0mZ3Q7IG5lZ2F0aXZlPG86cCBjbGFzcz0iIj48 L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAu MDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlm OyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+PG86cCBjbGFzcz0iIj4mbmJzcDs8 L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAu MDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlm OyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+SSB0cnVzdCB0aGF0IHdlIGNhbiB1 c2UgcG9zaXRpdmUgaW4gYSBoaWdobHkgcmVkdW5kYW50IGFuZCBzeW1tZXRyaWNhbCBub24tcGFy dGl0aW9uZWQgVG9GLiBJZiBubyBvbmUgY2FuIHJlYWNoIHRoZSBsZWFmIGFueW1vcmUgKGxpa2Ug aXTigJlzIGRlYWQpIHdlIGhhdmUgbm8gaXNzdWUgc2luY2UgaXQgc2hvdWxkDQogbm90IGJlIGRp c2FnZ3JlZ2F0ZWQsIGp1c3QgdXNlIHRoZSBkaXNjYXJkcyByb3V0ZSBhdCBhbnkgVG9GIG5vZGUu IElmIHlvdSBoYXZlIGVub3VnaCByZWR1bmRhbmN5IGFuZCBubyBwYXJ0aXRpb24sICZuYnNwO3Ro ZXJlIHdpbGwgYWx3YXlzIGJlIG5vZGVzIHRoYXQgY2FuIGJvdGggcmVhY2ggYSBsZWFmIGFuZCBk aXNjb3ZlciB0aGF0IGEgcGVlciBkb2VzIG5vdC4mbmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwv c3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7 IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFz cz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwv c3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7 IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFz cz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj49Jmd0OyBQb3NpdGl2ZSBpcyBpbmRpY2F0ZWQg Zm9yIGEgdmVyeSBzcGVjaWZpYyB1c2UgY2FzZSwgaWRlYWxseSAyIGxldmVscyBhbmQgZnVsbHkg bWVzaGVkLiBNYXliZSB0aGF04oCZcyBlbm91Z2ggZGVwbG95bWVudHMgdG8ganVzdGlmeSB0aGUg ZmVhdHVyZSBpbiB0aGUgY29kZS48bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9k aXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFw dDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEx cHQ7IiBjbGFzcz0iIj48bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9k aXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFw dDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEx cHQ7IiBjbGFzcz0iIj5TbyB0aGUgcXVlc3Rpb24gaXMgcmVhbGx5IHRoYXQgYmx1cnJ5IHpvbmUg YmV0d2VlbiBoaWdobHkgcmVkdW5kYW50IHNpbmdsZSBwbGFuZSBhbmQgaGlnaGx5IHBhcnRpdGlv bmVkIG11bHRpcGxhbmUgd2hhdCBzaG91bGQgb25lIGRvPyBJIGJlY29tZXMgYSByaXNrL2JlbmVm aXQganVkZ2VtZW504oCmIElmIG5lZ2F0aXZlDQogaXMgaW1wbGVtZW50ZWQgYW5kIHRoZSByaW5n IGlzIHRoZXJlLCBJ4oCZZCB1c2UgaXQsIGJldHRlciBzYWZlIHRoYW4gc29ycnkuPHNwYW4gY2xh c3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9v OnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAw MDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsi IGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9v OnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAw MDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsi IGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPlRha2UgY2FyZTxvOnAgY2xhc3M9IiI+ PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPlBhc2NhbDxvOnAgY2xhc3M9IiI+ PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9ImJvcmRlci1zdHlsZTogbm9u ZSBub25lIG5vbmUgc29saWQ7IGJvcmRlci1sZWZ0LXdpZHRoOiAxLjVwdDsgYm9yZGVyLWxlZnQt Y29sb3I6IGJsdWU7IHBhZGRpbmc6IDBjbSAwY20gMGNtIDRwdDsiIGNsYXNzPSIiPg0KPGRpdiBj bGFzcz0iIj4NCjxkaXYgc3R5bGU9ImJvcmRlci1zdHlsZTogc29saWQgbm9uZSBub25lOyBib3Jk ZXItdG9wLXdpZHRoOiAxcHQ7IGJvcmRlci10b3AtY29sb3I6IHJnYigyMjUsIDIyNSwgMjI1KTsg cGFkZGluZzogM3B0IDBjbSAwY207IiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNt IDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fu cy1zZXJpZjsiIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2Fs aWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsgZm9udC13ZWlnaHQ6 IGJvbGQ7IiBjbGFzcz0iIj5Gcm9tOjwvc3Bhbj48L2ZvbnQ+PC9iPjxzcGFuIGNsYXNzPSJBcHBs ZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj5CcnVubyBSaWpzbWFuICZsdDs8YSBocmVm PSJtYWlsdG86YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tIiBjbGFzcz0iIj5icnVub3JpanNtYW5A aG90bWFpbC5jb208L2E+Jmd0OzxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZu YnNwOzwvc3Bhbj48YnIgY2xhc3M9IiI+DQo8YiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC13 ZWlnaHQ6IGJvbGQ7IiBjbGFzcz0iIj5TZW50Ojwvc3Bhbj48L2I+PHNwYW4gY2xhc3M9IkFwcGxl LWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPmpldWRpIDE0IG1haSAyMDIwIDE3OjM2PGJy IGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyIg Y2xhc3M9IiI+VG86PC9zcGFuPjwvYj48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNl Ij4mbmJzcDs8L3NwYW4+UGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSAmbHQ7PGEgaHJlZj0ibWFp bHRvOnB0aHViZXJ0QGNpc2NvLmNvbSIgY2xhc3M9IiI+cHRodWJlcnRAY2lzY28uY29tPC9hPiZn dDs8YnIgY2xhc3M9IiI+DQo8YiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJv bGQ7IiBjbGFzcz0iIj5DYzo8L3NwYW4+PC9iPjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQt c3BhY2UiPiZuYnNwOzwvc3Bhbj5NZWxjaGlvciBBZWxtYW5zICZsdDs8YSBocmVmPSJtYWlsdG86 bWFlbG1hbnNAanVuaXBlci5uZXQiIGNsYXNzPSIiPm1hZWxtYW5zQGp1bmlwZXIubmV0PC9hPiZn dDs7IENocmlzdGlhbiBHcmFmICZsdDs8YSBocmVmPSJtYWlsdG86Y2dyYWZAanVuaXBlci5uZXQi IGNsYXNzPSIiPmNncmFmQGp1bmlwZXIubmV0PC9hPiZndDs7DQogT2xpdmVyIFN0ZXVkbGVyICZs dDs8YSBocmVmPSJtYWlsdG86b3N0ZXVkbGVyQGp1bmlwZXIubmV0IiBjbGFzcz0iIj5vc3RldWRs ZXJAanVuaXBlci5uZXQ8L2E+Jmd0OzsgT2xpdmllciBWYW5kZXphbmRlICZsdDs8YSBocmVmPSJt YWlsdG86b3ZhbmRlemFuZGVAanVuaXBlci5uZXQiIGNsYXNzPSIiPm92YW5kZXphbmRlQGp1bmlw ZXIubmV0PC9hPiZndDs7IFRvbnkgUHJ6eWdpZW5kYSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnRvbnlz aWV0ZkBnbWFpbC5jb20iIGNsYXNzPSIiPnRvbnlzaWV0ZkBnbWFpbC5jb208L2E+Jmd0OzsNCiBB bnRvbmkgUHJ6eWdpZW5kYSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnByej00MGp1bmlwZXIubmV0QGRt YXJjLmlldGYub3JnIiBjbGFzcz0iIj5wcno9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZzwv YT4mZ3Q7Ow0KPGEgaHJlZj0ibWFpbHRvOnRvbW1hc29jYWlhenppQGdtYWlsLmNvbSIgY2xhc3M9 IiI+dG9tbWFzb2NhaWF6emlAZ21haWwuY29tPC9hPjsgSmVmZiBUYW50c3VyYSAmbHQ7PGEgaHJl Zj0ibWFpbHRvOmplZmZ0YW50LmlldGZAZ21haWwuY29tIiBjbGFzcz0iIj5qZWZmdGFudC5pZXRm QGdtYWlsLmNvbTwvYT4mZ3Q7OyBKZWZmcmV5IChaaGFvaHVpKSBaaGFuZyAmbHQ7PGEgaHJlZj0i bWFpbHRvOnp6aGFuZ0BqdW5pcGVyLm5ldCIgY2xhc3M9IiI+enpoYW5nQGp1bmlwZXIubmV0PC9h PiZndDs7DQogSmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgJmx0OzxhIGhyZWY9Im1haWx0bzp6emhh bmc9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZyIgY2xhc3M9IiI+enpoYW5nPTQwanVuaXBl ci5uZXRAZG1hcmMuaWV0Zi5vcmc8L2E+Jmd0OzsgSmVmZnJleSBaaGFuZyAmbHQ7PGEgaHJlZj0i bWFpbHRvOnp6aGFuZzIwMDNAZ21haWwuY29tIiBjbGFzcz0iIj56emhhbmcyMDAzQGdtYWlsLmNv bTwvYT4mZ3Q7PGJyIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtd2Vp Z2h0OiBib2xkOyIgY2xhc3M9IiI+U3ViamVjdDo8L3NwYW4+PC9iPjxzcGFuIGNsYXNzPSJBcHBs ZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj5SZTogTmVnYXRpdmUgZGlzYWdncmVnYXRp b24gZmVhdHVyZSBndWlkZTxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2 Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXpl PSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0 OyIgY2xhc3M9IiI+PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2 Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXpl PSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0 OyIgY2xhc3M9IiI+PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2 Pg0KPGRpdiBjbGFzcz0iIj4NCjxibG9ja3F1b3RlIHN0eWxlPSJtYXJnaW4tdG9wOiA1cHQ7IG1h cmdpbi1ib3R0b206IDVwdDsiIGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTog Q2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2Fs aWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPk9u IE1heSAxNCwgMjAyMCwgYXQgODo1MyBBTSwgUGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSAmbHQ7 PC9zcGFuPjxhIGhyZWY9Im1haWx0bzpwdGh1YmVydEBjaXNjby5jb20iIHN0eWxlPSJjb2xvcjog cHVycGxlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnB0aHViZXJ0QGNp c2NvLmNvbTwvYT48L2ZvbnQ+Jmd0Ow0KIHdyb3RlOjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+ DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXpl OiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZv bnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9u dD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4w MDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7 IiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5UaGlzIGRvZXMgbm90IHNob3cgYmVj YXVzZSBvbiB5b3VyIGZpcnN0IGJyZWFrYWdlIHlvdSB1c2UgdGhlIHBvc2l0aXZlIGRpc2FnLiBJ ZiB5b3Ugc3RpY2sgdG8gdGhlIGxvZ2ljIHlvdSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcsIHRoYXQg aXMgcGljayBhbiBleGFtcGxlIHdoZXJlIHBvc2l0aXZlIGFwcGxpZXMNCiBidXQgdXNlIG5lZ2F0 aXZlLCB0aGVuIG9uIHlvdXIgZmlyc3QgYnJlYWthZ2UgeW914oCZZCBzaG93IHRoYXQgdGhlIG5l Z2F0aXZlIGRvZXMgbm90IG5lZWQgdG8gZ28gdHJhbnNpdGl2ZWx5IHRvIHRoZSBsZWFmLCBiZWNh dXNlIHRoZSBzcGluZSBub2RlcyBzdGlsbCBoYXZlIHNvbHV0aW9ucy4gSXMgdGhhdCBhIGxvdCBv ZiB3b3JrIHRvIGNoYW5nZT88bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+ DQo8L2Rpdj4NCjwvYmxvY2txdW90ZT4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20g MGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5z LXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0i Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+PG86cCBjbGFzcz0iIj4m bmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0i Q2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIi PlRoaXMgaXMgZXhhY3RseSB3aGF0IEkgd2FzIHRoaW5raW5nIGFzIHdlbGwuPG86cCBjbGFzcz0i Ij48L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRp diBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBm YWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xh c3M9IiI+PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+TWF5YmUgSSBuZWVkIHRvIGdvIHRocm91Z2gg dGhlIGN1cnJlbnQgc3BlY2lmaWNhdGlvbiB3aXRoIGEgZmluZS10b290aGVkIGNvbWIgYWdhaW4s IGJ1dCBteSAocG9zc2libHkgaW5jb3JyZWN0KSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGN1 cnJlbnQgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBpcw0KIHRoYXQgd2UgcG9zaXRpdmUg ZGlzYWdncmVnYXRpb24gaXMgdXNlZCAoTVVTVCBiZSB1c2VkPyBTSE9VTEQgYmUgdXNlZD8pIGlu IHRoZSDigJxmaXJzdCBmYWlsdXJl4oCdIHNjZW5hcmlvLjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9z cGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJy aSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAg Y2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBj bGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXpl OiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZv bnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTFwdDsiIGNsYXNzPSIiPlBlcnNvbmFsbHksIEkgc2VlIG5vIHJlYXNvbiB3aHkgd2Ugd291 bGQgbm90IGJlIGFibGUgdG8gdXNlIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGluc3RlYWQgb2Yg cG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaW4gdGhlIGZpcnN0IGZhaWx1cmUgc2NlbmFyaW8gYXMg d2VsbC48bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjxk aXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N Cjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvc3Bhbj48 L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46 IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmks IHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNs YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj5JbiB0aGUgY29u dGV4dCBvZiB0aGUgdHV0b3JpYWwsIHRoaXMgd291bGQgaGF2ZSB0aGUgYWR2YW50YWdlIG9mIGNs ZWFybHkgZGVtb25zdHJhdGluZyB0aGUgcHJvcGFnYXRpb24gbG9naWMgbW9yZSBjbGVhcmx5Ljxv OnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFz cz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAx MXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQg c2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTog MTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48 L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBj bSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1z ZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPkJ1dCBtb3JlIGltcG9ydGFu dGx5LCBpdCBzZWVtcyB0byBtZSB0aGF0IG9uY2UgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaXMg aW1wbGVtZW50ZWQsIHRoZXJlIGlzIHJlYWxseSBubyByZWFzb24gdG8gdXNlIHBvc2l0aXZlIGRp c2FnZ3JlZ2F0aW9uIGFueXdoZXJlLiBJdCB3b3VsZCBiZSDigJxjbGVhbmVy4oCdIChsZXNzDQog c2lnbmFsaW5nKSBhbmQg4oCcYmV0dGVy4oCdIChubyBpbmNhc3QpIHRvIHNpbXBseSB1c2UgbmVn YXRpdmUgZGlzYWdncmVnYXRpb24gZXZlcnl3aGVyZS48bzpwIGNsYXNzPSIiPjwvbzpwPjwvc3Bh bj48L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJn aW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGli cmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmki IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFzcz0iIj48bzpwIGNs YXNzPSIiPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xh c3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTog MTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250 IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDExcHQ7IiBjbGFzcz0iIj5Tb+KApi4gSSB3YXMgdGhpbmtpbmcgdG8gYWRkIGEgY29uZmlndXJh dGlvbiBrbm9iIHRvIG15IGNvZGUg4oCccG9zaXRpdmUtb25seeKAnSwg4oCcbmVnYXRpdmUtb25s eeKAnSwg4oCccG9zaXRpdmUtYW5kLW5lZ2F0aXZl4oCdLCB3aXRoIOKAnG5lZ2F0aXZlLW9ubHni gJ0gYmVpbmcgdGhlIGRlZmF1bHQ/IChTZWVtcyBsaWtlIGEgd2FzdGUNCiB0byBoYXZlIGNvZGVk IHVwIHRoZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbikuPG86cCBjbGFzcz0iIj48L286cD48L3Nw YW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFy Z2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxp YnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJp IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+PG86cCBj bGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNs YXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9u dCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMXB0OyIgY2xhc3M9IiI+V2hhdCBkb2VzIGV2ZXJ5b25lIHRoaW5rIG9mIHRoYXQ/PG86cCBj bGFzcz0iIj48L286cD48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8Zm9udCBzaXpl PSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB0 OyIgY2xhc3M9IiI+PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvZGl2 Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAu MDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlm OyIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+U2hvdWxkIHdlIGdvIGV2ZW4gZnVy dGhlciBhbmQgc2ltcGx5IHJlbW92ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmcm9tIHRoZSBz cGVjPzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRp diBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1z aXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0K PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9zcGFuPjwv Zm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2 IHN0eWxlPSJtYXJnaW46IDBjbSAwY20gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1m YW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZh Y2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IiBjbGFz cz0iIj5TaG91bGQgd2UgaGF2ZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhcyBhIGNhcGFiaWxp dHkgaW4gdGhlIGNhcGFiaWxpdHkgbmVnb3RpYXRpb24/IChTZWVtcyBub24tc2Vuc2ljYWwsIGdp dmVuIGl0IGlzIHNvbWV0aGluZyB0aGF0IHRoZSB3aG9sZSBmYWJyaWMgbmVlZHMgdG8gc3VwcG9y dCBvciBub3QuKTxvOnAgY2xhc3M9IiI+PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2 Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsg Zm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNz PSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9z cGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJy aSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIiPlNob3Vs ZCB3ZSB0YWtlIHRoaXMgdG8gdGhlIFJJRlQgbWFpbGluZyBsaXN0PzxvOnAgY2xhc3M9IiI+PC9v OnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGNtIDBjbSAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0i Q2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiIGNsYXNzPSIi PjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0K PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwY20gMGNtIDAuMDAw MXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIg Y2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOiAxMXB0OyIgY2xhc3M9IiI+4oCUIEJydW5vPC9zcGFuPjwvZm9udD48 L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9k aXY+DQo8YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg== --_000_4272B9422C6F49748515E295A6BFF757hotmailcom_-- From nobody Fri May 15 08:55:47 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 985D83A0C25 for ; Thu, 14 May 2020 11:12:37 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.097 X-Spam-Level: X-Spam-Status: No, score=-1.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8iDY87xJXm2H for ; Thu, 14 May 2020 11:12:35 -0700 (PDT) Received: from mail-io1-xd2d.google.com (mail-io1-xd2d.google.com [IPv6:2607:f8b0:4864:20::d2d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 60FCB3A0AE4 for ; Thu, 14 May 2020 11:12:31 -0700 (PDT) Received: by mail-io1-xd2d.google.com with SMTP id o5so2246846iow.8 for ; Thu, 14 May 2020 11:12:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=57ouK+pSvzAYEZ8viN7XFn2lSGhFLtJTnrzjvyDAiUM=; b=a/2SPRyxcEC83KeXuqpCxpc2fUSzgIiaPPb5bPuUW+JNn2XmkMwlQ3gSnxVcnZkAAd QqEPU2MVrIeJcACN0T7EzKGBq1CElwe8WvFhxmy3NilPZL44G1wDP7ufKRxK5s7ncPgS pHOWq/eTwn44ejQ9QgNpPqIWBFguo//M7aebGlsrvnXJ6y18Mppt87wvgTVolrC4QrT0 TOHQFwn8Efx0+Yo46hyXFx0iyWILkBJ/cmxl2SuAaIk5P20uItOd47dzLSepMeE9Td0y 263gDkuAs2zqln+gZDJhC/my1c3b9fA2VEKUt3d2MI09HJCItLwA1ui+NF0GnOSXAeyR pHhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=57ouK+pSvzAYEZ8viN7XFn2lSGhFLtJTnrzjvyDAiUM=; b=L+oAzOez8oidP1JQJzvMxr5i86JkNMCGvDUEpOb1vIr6L69x0LiWCXgZQldEJdgFod +otjBqKf63b6vWmqcvkDrH7pp36WEIMnMMkX56kGklbVb+WEz3rMrf0JS9XRdYNmQUYG K5W7+7UagJa54kEp4JlRliefOOt5kOlxFwFwjbPDJaFQUJQ9B/e7BLV57IizDLPEEtlQ 9IeZ69VJOhsRwzwB8eVBojdeuKefzHAL7tVbWqKuSb1Gwy3xMD+Fo59mSHyeXQFP1WnQ oyUFeCYC5qT3uAmqATMLWyrqsm86iAXF3kreCjoRCknGLp8iDjxnpb/9iudCd4o7Q3oJ +BJg== X-Gm-Message-State: AOAM5304+oEc2wOXQrDwIFmlv4MzKI3VHWjGAT8ZeBaWF/bfkVsAqxls 3cFHsaaH1/8J6N915peSUy/JG0MCs47KGHowwdg= X-Google-Smtp-Source: ABdhPJwTXjT8KKGGgbFoQF8iB15bNhMypFkf2VRON1JIfwd7fMiMwPD3y8hXAdrZXcS5j9++jbCMer35CKahLtU546o= X-Received: by 2002:a02:6a1e:: with SMTP id l30mr5476125jac.98.1589479950636; Thu, 14 May 2020 11:12:30 -0700 (PDT) MIME-Version: 1.0 References: <068412A2-1E85-4327-A50E-F6138C6D7EC0@hotmail.com> <9E819710-00BC-4285-9146-F655CAA7E1CA@hotmail.com> <432D1BE9-8BC3-4627-ACA5-72AA52A79C8C@hotmail.com> <4272B942-2C6F-4974-8515-E295A6BFF757@hotmail.com> In-Reply-To: <4272B942-2C6F-4974-8515-E295A6BFF757@hotmail.com> From: Tony Przygienda Date: Thu, 14 May 2020 11:10:55 -0700 Message-ID: To: Bruno Rijsman Cc: "Pascal Thubert (pthubert)" , "rift@ietf.org" , Melchior Aelmans , Christian Graf , Oliver Steudler , Olivier Vandezande , Antoni Przygienda , "tommasocaiazzi@gmail.com" , Jeff Tantsura , "Jeffrey (Zhaohui) Zhang" , "Jeffrey (Zhaohui) Zhang" , Jeffrey Zhang Content-Type: multipart/alternative; boundary="000000000000d5d86505a59fa3bf" Archived-At: X-Mailman-Approved-At: Fri, 15 May 2020 08:55:39 -0700 Subject: Re: [Rift] Negative disaggregation feature guide X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 18:12:38 -0000 --000000000000d5d86505a59fa3bf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable my thoughts: negative is seriously more complex to implement and understand operationally and only needed on multi-plane fabrics, taht's why positive is KISS ;-) Also, negative always forces you to ring the top of the fabric which in single plane design is an unnecessary requirement. I foresee vendors not implementing negative for simplicity, very small footprint fabrics. the discussion about capability advertisement is interesting, we can just add one bit on the node capabilities element, make it optional and default true. Of course an implementation taht understands that all involved nodes understand negative is free to use negative instead of positive then. -- tony On Thu, May 14, 2020 at 11:05 AM Bruno Rijsman wrote: > Broadening a discussion on negative disaggregation to the RIFT mailing > list. > > Now that we have implemented negative disaggregation in RIFT-Python, and > now that we are getting some operational experience with it, the followin= g > is becoming more and more evident: > > It seems to us (Bruno and Pascal, for now) that once negative > disaggregation is implemented, there is really no need for positive > disaggregation any more. > > Every use case that can be solved by positive disaggregation can (as far > as we can currently tell) also be solved by negative disaggregation. > > Furthermore, negative disaggregation solves the problems in a far simpler > and more elegant way: there are fewer advertising nodes and fewer > advertised TIEs involved, and we don=E2=80=99t have the synchronization i= ssue that > positive disaggregation has that potentially causes incast problems. > > Thus, at the very least, it makes sense to recommend that in a given > fabric we use either only negative disaggregation only or positive > disaggregation only, with negative disaggregation being the default. > > If positive and negative disaggregation are enabled simultaneously in one > and the same fabric, everything still works fine as far as we can see. Bu= t > there are some =E2=80=9Cinteresting=E2=80=9D interactions that make thing= s unnecessarily > complex and potentially fragile. > > If support for negative disaggregation is mandatory, and if our assessmen= t > that negative disaggregation can solve all use cases is correct, then we > could go one bold step further and completely remove positive > disaggregation from the specification. > > Thoughts? > > =E2=80=94 Bruno > > On May 14, 2020, at 10:48 AM, Pascal Thubert (pthubert) < > pthubert@cisco.com> wrote: > > Hello Bruno: > > I like your negative-only default because it is probably the safest. Let > me elaborate. > > partitioning saves a lot more ports per ToF node than the ring cost so it > does not matter. > > If you enable negative, there=E2=80=99s no point in doing any positive at= all, is > there? So what do we try to save by combining? In your example, I guess > that super 1 2 had to retract the positive disag and then do negative > instead when the link to spine 1 1 fell. Was that not a bit complex and > error prone? > > Also I=E2=80=99m not clear how we can always decide that dynamically and = I do not > believe that we specified that. So I understand that it=E2=80=99s more li= ke a use > case thingy, like a configuration that would be adapted to the use case. > > =3D> do not configure both at the same time use either positive or negati= ve > disag. > > We do not try to do positive disag transitively. So if there is a need fo= r > transitive, you have to use negative. In a multiplane case, there=E2=80= =99s > usually (as in your picture) one ToP per plane in each PoD, and a first > link failure (say Spine 1 1 to leaf 1 1) can already cause a fallen leaf: > leaf 1 1 is no more reachable within plane 1. This tells you that all > leaves in the other PoDs must avoid that plane, and that=E2=80=99s a leaf= decision; > which tells you that you need to recurse transitively down. This indicate= s > that negative must be activated in a highly partitioned (meaning low > redundancy) multiplane. > > Say we try to use positive disaggregation transitively in a ToF that is > partitioned like in planes, you=E2=80=99d run a risk that none of the ToF= nodes > that can still reach the leaf can see (through south reflection) the ToF > node that cannot so they do not know they need to disag. So you end up > needing the same ring as for negative, the southern reflection become > mostly useless and the benefits of positive are gone. > > Partitionned ToF =3D> negative > > I trust that we can use positive in a highly redundant and symmetrical > non-partitioned ToF. If no one can reach the leaf anymore (like it=E2=80= =99s dead) > we have no issue since it should not be disaggregated, just use the > discards route at any ToF node. If you have enough redundancy and no > partition, there will always be nodes that can both reach a leaf and > discover that a peer does not. > > =3D> Positive is indicated for a very specific use case, ideally 2 levels > and fully meshed. Maybe that=E2=80=99s enough deployments to justify the = feature in > the code. > > So the question is really that blurry zone between highly redundant singl= e > plane and highly partitioned multiplane what should one do? I becomes a > risk/benefit judgement=E2=80=A6 If negative is implemented and the ring i= s there, > I=E2=80=99d use it, better safe than sorry. > > Take care > > Pascal > > > > *From:* Bruno Rijsman > *Sent:* jeudi 14 mai 2020 17:36 > *To:* Pascal Thubert (pthubert) > *Cc:* Melchior Aelmans ; Christian Graf < > cgraf@juniper.net>; Oliver Steudler ; Olivier > Vandezande ; Tony Przygienda ; > Antoni Przygienda ; > tommasocaiazzi@gmail.com; Jeff Tantsura ; > Jeffrey (Zhaohui) Zhang ; Jeffrey (Zhaohui) Zhang < > zzhang=3D40juniper.net@dmarc.ietf.org>; Jeffrey Zhang > *Subject:* Re: Negative disaggregation feature guide > > > > On May 14, 2020, at 8:53 AM, Pascal Thubert (pthubert) > wrote: > > This does not show because on your first breakage you use the positive > disag. If you stick to the logic you used at the beginning, that is pick = an > example where positive applies but use negative, then on your first > breakage you=E2=80=99d show that the negative does not need to go transit= ively to > the leaf, because the spine nodes still have solutions. Is that a lot of > work to change? > > > This is exactly what I was thinking as well. > > Maybe I need to go through the current specification with a fine-toothed > comb again, but my (possibly incorrect) understanding is that the current > version of the specification is that we positive disaggregation is used > (MUST be used? SHOULD be used?) in the =E2=80=9Cfirst failure=E2=80=9D sc= enario. > > Personally, I see no reason why we would not be able to use negative > disaggregation instead of positive disaggregation in the first failure > scenario as well. > > In the context of the tutorial, this would have the advantage of clearly > demonstrating the propagation logic more clearly. > > But more importantly, it seems to me that once negative disaggregation is > implemented, there is really no reason to use positive disaggregation > anywhere. It would be =E2=80=9Ccleaner=E2=80=9D (less signaling) and =E2= =80=9Cbetter=E2=80=9D (no incast) > to simply use negative disaggregation everywhere. > > So=E2=80=A6. I was thinking to add a configuration knob to my code > =E2=80=9Cpositive-only=E2=80=9D, =E2=80=9Cnegative-only=E2=80=9D, =E2=80= =9Cpositive-and-negative=E2=80=9D, with > =E2=80=9Cnegative-only=E2=80=9D being the default? (Seems like a waste to= have coded up the > positive disaggregation). > > What does everyone think of that? > > Should we go even further and simply remove positive disaggregation from > the spec? > > Should we have negative disaggregation as a capability in the capability > negotiation? (Seems non-sensical, given it is something that the whole > fabric needs to support or not.) > > Should we take this to the RIFT mailing list? > > =E2=80=94 Bruno > > > --000000000000d5d86505a59fa3bf Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
=C2=A0my thoughts:

nega= tive is seriously more complex to=C2=A0 implement and understand operationa= lly and only needed on multi-plane fabrics, taht's why positive is KISS= ;-) Also, negative always forces you to ring the top of the fabric which i= n single plane design is an unnecessary requirement.=C2=A0
<= br>
I foresee vendors not implementing negative for simplicity, v= ery small footprint fabrics.

the discussion a= bout capability advertisement is interesting, we can just add one bit on th= e node capabilities element, make it optional and default true.
<= div>
Of course an implementation taht understands that all in= volved nodes understand negative is free to use negative instead of positiv= e then.

-- tony

On Thu, May 14, 202= 0 at 11:05 AM Bruno Rijsman <brunorijsman@hotmail.com> wrote:
Broadening a discussion= on negative disaggregation to the RIFT mailing list.

Now that we have i= mplemented negative disaggregation in RIFT-Python, and now that we are gett= ing some operational experience with it, the following is becoming more and= more evident:

It seems to us (Br= uno and Pascal, for now) that once negative disaggregation is implemented, = there is really no need for positive disaggregation any more.

Every use case tha= t can be solved by positive disaggregation can (as far as we can currently = tell) also be solved by negative disaggregation.

Furthermore, negat= ive disaggregation solves the problems in a far simpler and more elegant wa= y: there are fewer advertising nodes and fewer advertised TIEs involved, an= d we don=E2=80=99t have the synchronization issue that positive disaggregation has that potentiall= y causes incast problems.

Thus, at the very = least, it makes sense to recommend that in a given fabric we use either onl= y negative disaggregation only or positive disaggregation only, with negati= ve disaggregation being the default.

If positive and ne= gative disaggregation are enabled=C2=A0simultaneously in one and the same fabric, eve= rything still works fine as far as we can see. But there are some=C2=A0=E2=80=9Cin= teresting=E2=80=9D interactions that make things=C2=A0unnecessarily complex= and potentially fragile.=C2=A0

If support for neg= ative disaggregation is mandatory, and if our assessment that negative disa= ggregation can solve all use cases is correct, then we could go one bold st= ep further and completely remove positive disaggregation from the specification.

Thoughts?

=E2=80=94 Bruno

On May 14, 2020, at 10:48 AM, Pascal Thubert (pthubert) <pthubert@cisco.com> wr= ote:

Hello Brun= o:
=C2= =A0
I like you= r negative-only default because it is probably the safest. Let me elaborate= .
=C2= =A0
partitioni= ng saves a lot more ports per ToF node than the ring cost so it does not ma= tter.
=C2= =A0
If you ena= ble negative, there=E2=80=99s no point in doing any positive at all, is the= re? So what do we try to save by combining? In your example, I guess that s= uper 1 2 had to retract the positive disag and then do negative instead when the link to spine 1 1 fel= l. Was that not a bit complex and error prone?<= /div>
=C2= =A0
Also I=E2= =80=99m not clear how we can always decide that dynamically and I do not be= lieve that we specified that. So I understand that it=E2=80=99s more like a= use case thingy, like a configuration that would be adapted to the use case.
=C2= =A0
=3D> do= not configure both at the same time use either positive or negative disag.=
=C2= =A0
We do not = try to do positive disag transitively. So if there is a need for transitive= , you have to use negative.=C2=A0 In a multiplane case, there=E2=80=99s usu= ally (as in your picture) one ToP per plane in each PoD, and a first link failure (say Spine 1 1 to leaf 1 1= ) can already cause a fallen leaf: leaf 1 1 is no more reachable within pla= ne 1. This tells you that all leaves in the other PoDs must avoid that plan= e, and that=E2=80=99s a leaf decision; which tells you that you need to recurse transitively down. This indicates that = negative must be activated in a highly partitioned (meaning low redundancy)= multiplane.
=C2= =A0
Say we try= to use positive disaggregation transitively in a ToF that is partitioned l= ike in planes, you=E2=80=99d run a risk that none of the ToF nodes that can= still reach the leaf can see (through south reflection) the ToF node that cannot so they do not kno= w they need to disag. So you end up needing the same ring as for negative, = the southern reflection become mostly useless and the benefits of positive = are gone.
=C2= =A0
Partitionn= ed ToF =3D> negative
=C2= =A0
I trust th= at we can use positive in a highly redundant and symmetrical non-partitione= d ToF. If no one can reach the leaf anymore (like it=E2=80=99s dead) we hav= e no issue since it should not be disaggregated, just use the discards route at any ToF node. If you = have enough redundancy and no partition, =C2=A0there will always be nodes t= hat can both reach a leaf and discover that a peer does not.=C2=A0
=C2= =A0
=3D> Po= sitive is indicated for a very specific use case, ideally 2 levels and full= y meshed. Maybe that=E2=80=99s enough deployments to justify the feature in= the code.
=C2= =A0
So the que= stion is really that blurry zone between highly redundant single plane and = highly partitioned multiplane what should one do? I becomes a risk/benefit = judgement=E2=80=A6 If negative is implemented and the ring is there, I=E2=80=99d use it, better safe than= sorry.=C2=A0
=C2= =A0
Take care<= u>
=C2= =A0
Pascal<= /u>
=C2= =A0
=C2= =A0
=C2= =A0
From:=C2=A0Bruno Rijsman <brunorijsman@hotma= il.com>=C2=A0
Sent:=C2=A0jeud= i 14 mai 2020 17:36
To:=C2=A0Pascal= Thubert (pthubert) <pthubert@cisco.com>
Cc:=C2=A0Melchi= or Aelmans <ma= elmans@juniper.net>; Christian Graf <cgraf@juniper.net>; Oliver Steudler <osteudler@juniper.net>; Olivier Vandezande <ovandezande@juniper.net>= ;; Tony Przygienda <tonysietf@gmail.com>; Antoni Przygienda <prz=3D40juniper.net@dmarc.ietf.org>; tommasocaiazz= i@gmail.com; Jeff Tantsura <jefftant.ietf@gmail.com>; Jeffrey (Zhaohui) Zha= ng <zzhang@junip= er.net>; Jeffrey (Zhaohui) Zhang <zzhang=3D40juniper.net@dmarc.ietf.org>;= Jeffrey Zhang <zzhang2003@gmail.com>
Subject:=C2=A0R= e: Negative disaggregation feature guide
=C2= =A0
=C2= =A0
On May 14,= 2020, at 8:53 AM, Pascal Thubert (pthubert) <pthubert@cisco.com> wrote:
=C2= =A0
This does = not show because on your first breakage you use the positive disag. If you = stick to the logic you used at the beginning, that is pick an example where= positive applies but use negative, then on your first breakage you=E2=80=99d show that the = negative does not need to go transitively to the leaf, because the spine no= des still have solutions. Is that a lot of work to change?
=C2= =A0
This is ex= actly what I was thinking as well.
=C2= =A0
Maybe I ne= ed to go through the current specification with a fine-toothed comb again, = but my (possibly incorrect) understanding is that the current version of th= e specification is that we positive disaggregation is used (MUST be used? SHOULD be used?) in= the =E2=80=9Cfirst failure=E2=80=9D scenario.<= /div>
=C2= =A0
Personally= , I see no reason why we would not be able to use negative disaggregation i= nstead of positive disaggregation in the first failure scenario as well.=
=C2= =A0
In the con= text of the tutorial, this would have the advantage of clearly demonstratin= g the propagation logic more clearly.
=C2= =A0
But more i= mportantly, it seems to me that once negative disaggregation is implemented= , there is really no reason to use positive disaggregation anywhere. It wou= ld be =E2=80=9Ccleaner=E2=80=9D (less signaling) and =E2=80=9Cbetter=E2=80=9D (no incast) to simply use negative= disaggregation everywhere.
=C2= =A0
So=E2=80= =A6. I was thinking to add a configuration knob to my code =E2=80=9Cpositiv= e-only=E2=80=9D, =E2=80=9Cnegative-only=E2=80=9D, =E2=80=9Cpositive-and-neg= ative=E2=80=9D, with =E2=80=9Cnegative-only=E2=80=9D being the default? (Se= ems like a waste to have coded up the positive disaggregation).=
=C2= =A0
What does = everyone think of that?
=C2= =A0
Should we = go even further and simply remove positive disaggregation from the spec?=
=C2= =A0
Should we = have negative disaggregation as a capability in the capability negotiation?= (Seems non-sensical, given it is something that the whole fabric needs to = support or not.)
=C2= =A0
Should we = take this to the RIFT mailing list?
=C2= =A0
=E2=80=94 = Bruno

--000000000000d5d86505a59fa3bf-- From nobody Fri May 15 08:55:50 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 38E1E3A0C40 for ; Thu, 14 May 2020 11:32:14 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.099 X-Spam-Level: X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=hotmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KhuxSkqfUgZG for ; Thu, 14 May 2020 11:32:10 -0700 (PDT) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12olkn2088.outbound.protection.outlook.com [40.92.21.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 143393A0404 for ; Thu, 14 May 2020 11:32:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D+Z3zs3sRZwcoyTcsXMufv4jEpKWaPwKkVolkgqbVQKYFcJ0M8VodGwju7PRUVy8mgkhektTZffI+/wOrfmbDEwvaDdQAzyYNSo/YMwWK4cWWefwMr3ICKodfpAM1cC+fRC2AEjjfT+ip/onr4OJ0kBFkkQhPf3xHE4p9Xc7oX1iqzxvOlPeyZrFLEE6yH0PdobY9BDldSHXER1Xo8d2+/W5aXWfs0+pZPpT7pu4LeSDOmmycsQDM/aZh7Db+uyzFrQk1Vp6lodzPapk7LU2XhV42PUaxlG9TbTN9M7vXIuoUQzR1SB3S/s9B4w9E8sgXjWjUMjGM4kufxx5nVCwrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bm4VzDIIt2WKQ4MU9z5PIEIBLIjzjJ62/tZC20bwEnU=; b=TEyz7HWivNkvzL8cE9f+ib18Av0lT6PM9+LCP976RH/YvT62cu9W6HeWzYgtA6P8GXq6tHynuN1kJbFm7x0ZuvPcpSCt07tBaDzTJUuTPS4YHhxkCAeoHN7UX2xmFQf+qnh9uFxoEQ5sJR0uPWMreaNiBX31cKr684qjHeX2e/XTOrT++kpduVGuigXcxtwWiCmfYox9hmM5TvqkFIsI4pGiUd9c2I+67HkluYaQQx1QUWpwLytT/devnCECvMOvjXAmagrJW+vDsWscrNadf8lp0OUSu8kY25lyGvqg3NA+spZ60kAYfAnm6Kr1I++FYLum5fRzuTTLFCbbGB5b7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bm4VzDIIt2WKQ4MU9z5PIEIBLIjzjJ62/tZC20bwEnU=; b=BiApKt1lYsofK2N70Od+38Jkrp8FmYvJPKJPfa0WOFXSYuLC4p5q6tw7iT0/PoAzFTC5g4Elvk4lhn2N2PG6UVWjubEGgUl3H93nB7pkV90SHV+jURg0QjG1OIXJ1MGtiLt+2TRLiQpAwk9R44CrYef0w9vfmWmeH9ZePIprLzn4qSn3v76R+Pef+VFHgXa4u4DhbWC0pLacUkV3WjYFVcnLBe1Zc7ogkqpx4xQ9K5ku1bnQDARRm3EorDlV7GoQIgGtqxbwIkbK29c9g2YyCTiAlYg3LjDAlJppXN5/gUUgyPl3dhBp3Raut+pSMpB4wU7g5GBtSy7kWTZaEh71mQ== Received: from BN8NAM12FT032.eop-nam12.prod.protection.outlook.com (2a01:111:e400:fc66::40) by BN8NAM12HT220.eop-nam12.prod.protection.outlook.com (2a01:111:e400:fc66::177) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.11; Thu, 14 May 2020 18:32:07 +0000 Received: from BYAPR06MB5845.namprd06.prod.outlook.com (2a01:111:e400:fc66::44) by BN8NAM12FT032.mail.protection.outlook.com (2a01:111:e400:fc66::383) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.11 via Frontend Transport; Thu, 14 May 2020 18:32:07 +0000 Received: from BYAPR06MB5845.namprd06.prod.outlook.com ([fe80::7033:3bf:78c4:3ef9]) by BYAPR06MB5845.namprd06.prod.outlook.com ([fe80::7033:3bf:78c4:3ef9%4]) with mapi id 15.20.3000.022; Thu, 14 May 2020 18:32:07 +0000 From: Bruno Rijsman To: Tony Przygienda CC: "Pascal Thubert (pthubert)" , "rift@ietf.org" , Melchior Aelmans , Christian Graf , Oliver Steudler , Olivier Vandezande , Antoni Przygienda , "tommasocaiazzi@gmail.com" , Jeff Tantsura , "Jeffrey (Zhaohui) Zhang" , "Jeffrey (Zhaohui) Zhang" , Jeffrey Zhang Thread-Topic: Negative disaggregation feature guide Thread-Index: AQHWKXf3Q/xs7t0/3UuNVqLdtIM2cqimncCAgACc0dCAAHCAYIAADK8AgAAA4+CAACjmgIAAAYyAgAAF6wA= Date: Thu, 14 May 2020 18:32:07 +0000 Message-ID: References: <068412A2-1E85-4327-A50E-F6138C6D7EC0@hotmail.com> <9E819710-00BC-4285-9146-F655CAA7E1CA@hotmail.com> <432D1BE9-8BC3-4627-ACA5-72AA52A79C8C@hotmail.com> <4272B942-2C6F-4974-8515-E295A6BFF757@hotmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:E7A43E3A4BD13C24209CC47659EB3C7FF141B754AC51928CC1A42D692BC7C8A7; UpperCasedChecksum:732124F10ECF5146203A4E79D348FA22F93D2E4857151A9261C150CE6464D5F1; SizeAsReceived:7935; Count:46 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [kJvGgjl2AMLnlVcMsOctr2sMNk1SNSe3] x-ms-publictraffictype: Email x-incomingheadercount: 46 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: e722788e-a958-4e3c-0b13-08d7f8351bb9 x-ms-traffictypediagnostic: BN8NAM12HT220: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xR80pYFS5Vk84yjcxiRY6659h31eAJHOsqc8hyYdpCndFUDD1SgxzCB7l0rpt+XtP0EY6W2IsWSuDXEWCteNbEyxtRmlopWroiECOf3/7lBNsLpRW9PehRRcnT5CnWZVnis2n+Xlp8Zg+oEIAtQ/CB3LOxAleyq4adj9CZPHakf8avLmPFhUzSZJ2k+IRHEH1S55DACbGBcB9M128UI0Kw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR06MB5845.namprd06.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:; DIR:OUT; SFP:1901; x-ms-exchange-antispam-messagedata: 9JR6Js5qItUW7vQXst2ecFrGayewJCVTEPltCVwuMf+9FuadoYE1yD+9q6ujEdG3/zVnTEz4QPPeA2pcFh6EY62MGcGFvZ82Z9Ua+utiiq/UFhi675Hd4uUeN1Lw1NuPHlo275GvKdzEDLI9WZezJg== x-ms-exchange-transport-forked: True Content-Type: multipart/alternative; boundary="_000_D9004CDF38AD4F4BB76C8BECD9669D3Bhotmailcom_" MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: e722788e-a958-4e3c-0b13-08d7f8351bb9 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 May 2020 18:32:07.7332 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8NAM12HT220 Archived-At: X-Mailman-Approved-At: Fri, 15 May 2020 08:55:39 -0700 Subject: Re: [Rift] Negative disaggregation feature guide X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 18:32:15 -0000 --_000_D9004CDF38AD4F4BB76C8BECD9669D3Bhotmailcom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RGV2aWzigJlzIGFkdm9jYXRlID4+PiBiZWxvdzoNCg0KT24gTWF5IDE0LCAyMDIwLCBhdCAxMjox MCBQTSwgVG9ueSBQcnp5Z2llbmRhIDx0b255c2lldGZAZ21haWwuY29tPG1haWx0bzp0b255c2ll dGZAZ21haWwuY29tPj4gd3JvdGU6DQoNCiBteSB0aG91Z2h0czoNCg0KbmVnYXRpdmUgaXMgc2Vy aW91c2x5IG1vcmUgY29tcGxleCB0byAgaW1wbGVtZW50IGFuZCB1bmRlcnN0YW5kIG9wZXJhdGlv bmFsbHkNCg0KPj4+IFllcyBhbmQgbm8sIGZvciBhbGwgdGhlIHdyb25nIHJlYXNvbnMgOy0pDQoN Cj4+PiBPbmNlIHlvdSB3cmFwIHlvdXIgaGVhZCBhcm91bmQgbmVnYXRpdmUgZGlzYWdncmVnYXRp b24gKG9uY2UgZW5saWdodGVubWVudCBpcyBhY2hpZXZlZCA6LSksIG5lZ2F0aXZlIGRpc2FnZ3Jl Z2F0aW9uIGlzIGFjdHVhbGx5IHZlcnkgc2ltcGxlIHRvIHVuZGVyc3RhbmQuIFNpbXBsZXIgdGhh biBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBJIHdvdWxkIGV2ZW4gdmVudHVyZSB0byBzYXkuDQoN Cj4+PiBJTUhPIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIGRlZmluaXRlbHkgc2ltcGxlciBm cm9tIGFuIG9wZXJhdGlvbmFsIHBvaW50IG9mIHZpZXcgaW4gdGhlIHNlbnNlIHRoYXQgb25seSBv bmUgbm9kZSBuZWVkcyB0byBhbm5vdW5jZSDigJxwbGVhc2UgZG9u4oCZdCB1c2UgbWXigJ0gdmVy c3VzIE4tMSBub2RlcyBoYXZpbmcgdG8gc2F5IOKAnHVzZSBtZeKAnSBhcyBpcyB0aGUgY2FzZSBp biBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbi4gUG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaGFzIG1v cmUgbW92aW5nIHBhcnRzIGFuZCBwb3RlbnRpYWwgaW5jYXN0IHByb2JsZW1zIGR1ZSB0aGlzIGhh cHBlbmluZyBhc3luY2hyb25vdXNseS4NCg0KPj4+IEhhdmluZyBzYWlkIHRoYXQsIGluIGxhcmdl IGNvbW1lcmNpYWwgcm91dGluZyB2ZW5kb3JzLCBzdWNoIGFzIHRoZSBK4oCZcyBhbmQgdGhlIEPi gJlzIG9mIHRoZSB3b3JsZCwgdGhlcmUgbWF5IGJlIGEg4oCccG9saXRpY2FsIiBwcm9ibGVtLiBO ZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpbnZvbHZlcyBjaGFuZ2VzIGluIHRoZSBSSUIgKHRoZSBj b25jZXB0IG9mIG5lZ2F0aXZlIG5leHQtaG9wcykgYW5kIGNoYW5nZXMgaW4gdGhlIFJJQi10by1G SUIgbG9naWMgKHRyYW5zbGF0aW5nIG5lZ2F0aXZlIG5leHQgaG9wcyBpbnRvIHBvc2l0aXZlIG5l eHQgaG9wcykuICBUaGUgZ3JvdXAgdGhhdCBvd25zIHRoZSBSSUIgYW5kIHRoZSBGSUIgaXMgdHlw aWNhbGx5IGEgZGlmZmVyZW50IGdyb3VwIHRoYXQgb3ducyBhIHJvdXRpbmcgcHJvdG9jb2wgc3Vj aCBhcyBSSUZULiAgUGx1cywgY2hhbmdpbmcgdGhlIFJJQiBhbmQgRklCIGNvZGUgY2FuIGFmZmVj dCBhbGwgb3RoZXIgcHJvdG9jb2xzIGFzIHdlbGwsIGFuZCB3b3VsZCBiZSBjb25zaWRlcmVkIGEg aGlnaC1yaXNrIGNoYW5nZS4NCg0KYW5kIG9ubHkgbmVlZGVkIG9uIG11bHRpLXBsYW5lIGZhYnJp Y3MsIHRhaHQncyB3aHkgcG9zaXRpdmUgaXMgS0lTUyA7LSkgQWxzbywgbmVnYXRpdmUgYWx3YXlz IGZvcmNlcyB5b3UgdG8gcmluZyB0aGUgdG9wIG9mIHRoZSBmYWJyaWMgd2hpY2ggaW4gc2luZ2xl IHBsYW5lIGRlc2lnbiBpcyBhbiB1bm5lY2Vzc2FyeSByZXF1aXJlbWVudC4NCg0KPj4+IExldOKA mXMgbWFrZSBzdXJlIHRoYXQgd2UgY29tcGFyZSBhcHBsZXMgdG8gYXBwbGVzLg0KDQo+Pj4gSW4g YSBzaW5nbGUtcGxhbmUgZmFicmljLCBlaXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmUgd2lsbCBk byB0aGUgam9iLiBXZSBjYW4gcGljayBvbmUgb3IgdGhlIG90aGVyLiBQZXJzb25hbGx5LCBJIHRo aW5rIG5lZ2F0aXZlIGlzIHNpbXBsZXIsIGJ1dCBJIGNhbiBzZWUgaG93IHJlYXNvbmFibGUgcGVv cGxlIGNhbiBob2xkIGEgZGlmZmVyZW50IG9waW5pb24uDQoNCj4+PiBJbiBtdWx0aS1wbGFuZSBm YWJyaWNzLCB5b3UgZGVmaW5pdGVseSBuZWVkIG5lZ2F0aXZlIGZvciBmYWxsZW4gbGVhZnMuICBG b3IgYnJva2VuIGxlYWYtc3BpbmUgLyBzcGluZS1zdXBlcnNwaW5lIGxpbmtzLCBpdCBpcyBwb3Nz aWJsZSB0byB1c2UgcG9zaXRpdmUgb3IgbmVnYXRpdmUgKGFsdGhvdWdoIHRoZSBjdXJyZW50IGxh bmd1YWdlIHRoZSBzcGVjIG9ubHkgZGlzY3Vzc2VzIHBvc2l0aXZlIGZvciB0aGlzKS4gIFNvIHlv dXIgb3B0aW9ucyBmb3IgdGhlIGVudGlyZSBmYWJyaWMgYXJlOiB1c2Ugb25seSBuZWdhdGl2ZSBv ciB1c2UgYSBtaXh0dXJlIG9mIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZS4gIERvaW5nIG9ubHkgbmVn YXRpdmUgc2VlbXMgY2xlYW5lciB0byBtZS4gIEhhdmluZyBhIG1peHR1cmUgaXMgbW9yZSBjb21w bGV4IGFuZCBtb3JlIGZyYWdpbGUuDQoNCkkgZm9yZXNlZSB2ZW5kb3JzIG5vdCBpbXBsZW1lbnRp bmcgbmVnYXRpdmUgZm9yIHNpbXBsaWNpdHksIHZlcnkgc21hbGwgZm9vdHByaW50IGZhYnJpY3Mu DQoNCj4+PiBGYWlyIGVub3VnaC4gSWYgbmVnYXRpdmUgaXMgZ29pbmcgYmUgb3B0aW9uYWwgd2Ug c2hvdWxkIG1ha2UgdGhhdCBjbGVhciBpbiB0aGUgc3BlYyAobWF5YmUgaXQgYWxyZWFkeSBpcywg SSBkaWRu4oCZdCBmaW5kIHRoZSByZWxldmFudCBsYW5ndWFnZSkuDQoNCg0KdGhlIGRpc2N1c3Np b24gYWJvdXQgY2FwYWJpbGl0eSBhZHZlcnRpc2VtZW50IGlzIGludGVyZXN0aW5nLCB3ZSBjYW4g anVzdCBhZGQgb25lIGJpdCBvbiB0aGUgbm9kZSBjYXBhYmlsaXRpZXMgZWxlbWVudCwgbWFrZSBp dCBvcHRpb25hbCBhbmQgZGVmYXVsdCB0cnVlLg0KDQo+Pj4gSWYgd2UgZG8gdGhhdCwgd2Ugc2hv dWxkIGRlc2NyaWJlIHdoYXQgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGlzIHVwb24gcmVjZWl2aW5n IHRoaXMgY2FwYWJpbGl0eS4g4oCcRG9u4oCZdCB1c2UgbmVnYXRpdmUgaWYgYXQgbGVhc3Qgb25l IG5vZGUgYWR2ZXJ0aXNlcyB0aGV5IGRvbuKAmXQgc3VwcG9ydCBpdD8iDQoNCg0KT2YgY291cnNl IGFuIGltcGxlbWVudGF0aW9uIHRhaHQgdW5kZXJzdGFuZHMgdGhhdCBhbGwgaW52b2x2ZWQgbm9k ZXMgdW5kZXJzdGFuZCBuZWdhdGl2ZSBpcyBmcmVlIHRvIHVzZSBuZWdhdGl2ZSBpbnN0ZWFkIG9m IHBvc2l0aXZlIHRoZW4uDQoNCj4+PiBZdXAsIGV4YWN0bHksIHRoYXQgd2FzIHRoZSBtYWluIHBv aW50IG9mIHRoZSBkaXNjdXNzaW9uLiBUaGlzIGlzIHdoYXQgSSBhbSBwbGFubmluZyB0byBkbyBp biBteSBjb2RlLiBIYXZlIGEgY29uZmlnIGtub2IgZm9yIOKAnG5lZ2F0aXZlLW9ubHnigJ0gb3Ig 4oCccG9zaXRpdmUtb25seeKAnSBvciDigJxwb3NpdGl2ZS1hbmQtbmVnYXRpdmXigJ0gd2l0aCDi gJxuZWdhdGl2ZS1vbmx54oCdIGFzIHRoZSBkZWZhdWx0Lg0KDQoNCi0tIHRvbnkNCg0KT24gVGh1 LCBNYXkgMTQsIDIwMjAgYXQgMTE6MDUgQU0gQnJ1bm8gUmlqc21hbiA8YnJ1bm9yaWpzbWFuQGhv dG1haWwuY29tPG1haWx0bzpicnVub3JpanNtYW5AaG90bWFpbC5jb20+PiB3cm90ZToNCkJyb2Fk ZW5pbmcgYSBkaXNjdXNzaW9uIG9uIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIHRvIHRoZSBSSUZU IG1haWxpbmcgbGlzdC4NCg0KTm93IHRoYXQgd2UgaGF2ZSBpbXBsZW1lbnRlZCBuZWdhdGl2ZSBk aXNhZ2dyZWdhdGlvbiBpbiBSSUZULVB5dGhvbiwgYW5kIG5vdyB0aGF0IHdlIGFyZSBnZXR0aW5n IHNvbWUgb3BlcmF0aW9uYWwgZXhwZXJpZW5jZSB3aXRoIGl0LCB0aGUgZm9sbG93aW5nIGlzIGJl Y29taW5nIG1vcmUgYW5kIG1vcmUgZXZpZGVudDoNCg0KSXQgc2VlbXMgdG8gdXMgKEJydW5vIGFu ZCBQYXNjYWwsIGZvciBub3cpIHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpcyBp bXBsZW1lbnRlZCwgdGhlcmUgaXMgcmVhbGx5IG5vIG5lZWQgZm9yIHBvc2l0aXZlIGRpc2FnZ3Jl Z2F0aW9uIGFueSBtb3JlLg0KDQpFdmVyeSB1c2UgY2FzZSB0aGF0IGNhbiBiZSBzb2x2ZWQgYnkg cG9zaXRpdmUgZGlzYWdncmVnYXRpb24gY2FuIChhcyBmYXIgYXMgd2UgY2FuIGN1cnJlbnRseSB0 ZWxsKSBhbHNvIGJlIHNvbHZlZCBieSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbi4NCg0KRnVydGhl cm1vcmUsIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIHNvbHZlcyB0aGUgcHJvYmxlbXMgaW4gYSBm YXIgc2ltcGxlciBhbmQgbW9yZSBlbGVnYW50IHdheTogdGhlcmUgYXJlIGZld2VyIGFkdmVydGlz aW5nIG5vZGVzIGFuZCBmZXdlciBhZHZlcnRpc2VkIFRJRXMgaW52b2x2ZWQsIGFuZCB3ZSBkb27i gJl0IGhhdmUgdGhlIHN5bmNocm9uaXphdGlvbiBpc3N1ZSB0aGF0IHBvc2l0aXZlIGRpc2FnZ3Jl Z2F0aW9uIGhhcyB0aGF0IHBvdGVudGlhbGx5IGNhdXNlcyBpbmNhc3QgcHJvYmxlbXMuDQoNClRo dXMsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBpdCBtYWtlcyBzZW5zZSB0byByZWNvbW1lbmQgdGhhdCBp biBhIGdpdmVuIGZhYnJpYyB3ZSB1c2UgZWl0aGVyIG9ubHkgbmVnYXRpdmUgZGlzYWdncmVnYXRp b24gb25seSBvciBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5LCB3aXRoIG5lZ2F0aXZlIGRp c2FnZ3JlZ2F0aW9uIGJlaW5nIHRoZSBkZWZhdWx0Lg0KDQpJZiBwb3NpdGl2ZSBhbmQgbmVnYXRp dmUgZGlzYWdncmVnYXRpb24gYXJlIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkgaW4gb25lIGFuZCB0 aGUgc2FtZSBmYWJyaWMsIGV2ZXJ5dGhpbmcgc3RpbGwgd29ya3MgZmluZSBhcyBmYXIgYXMgd2Ug Y2FuIHNlZS4gQnV0IHRoZXJlIGFyZSBzb21lIOKAnGludGVyZXN0aW5n4oCdIGludGVyYWN0aW9u cyB0aGF0IG1ha2UgdGhpbmdzIHVubmVjZXNzYXJpbHkgY29tcGxleCBhbmQgcG90ZW50aWFsbHkg ZnJhZ2lsZS4NCg0KSWYgc3VwcG9ydCBmb3IgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaXMgbWFu ZGF0b3J5LCBhbmQgaWYgb3VyIGFzc2Vzc21lbnQgdGhhdCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlv biBjYW4gc29sdmUgYWxsIHVzZSBjYXNlcyBpcyBjb3JyZWN0LCB0aGVuIHdlIGNvdWxkIGdvIG9u ZSBib2xkIHN0ZXAgZnVydGhlciBhbmQgY29tcGxldGVseSByZW1vdmUgcG9zaXRpdmUgZGlzYWdn cmVnYXRpb24gZnJvbSB0aGUgc3BlY2lmaWNhdGlvbi4NCg0KVGhvdWdodHM/DQoNCuKAlCBCcnVu bw0KDQpPbiBNYXkgMTQsIDIwMjAsIGF0IDEwOjQ4IEFNLCBQYXNjYWwgVGh1YmVydCAocHRodWJl cnQpIDxwdGh1YmVydEBjaXNjby5jb208bWFpbHRvOnB0aHViZXJ0QGNpc2NvLmNvbT4+IHdyb3Rl Og0KDQpIZWxsbyBCcnVubzoNCg0KSSBsaWtlIHlvdXIgbmVnYXRpdmUtb25seSBkZWZhdWx0IGJl Y2F1c2UgaXQgaXMgcHJvYmFibHkgdGhlIHNhZmVzdC4gTGV0IG1lIGVsYWJvcmF0ZS4NCg0KcGFy dGl0aW9uaW5nIHNhdmVzIGEgbG90IG1vcmUgcG9ydHMgcGVyIFRvRiBub2RlIHRoYW4gdGhlIHJp bmcgY29zdCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIuDQoNCklmIHlvdSBlbmFibGUgbmVnYXRpdmUs IHRoZXJl4oCZcyBubyBwb2ludCBpbiBkb2luZyBhbnkgcG9zaXRpdmUgYXQgYWxsLCBpcyB0aGVy ZT8gU28gd2hhdCBkbyB3ZSB0cnkgdG8gc2F2ZSBieSBjb21iaW5pbmc/IEluIHlvdXIgZXhhbXBs ZSwgSSBndWVzcyB0aGF0IHN1cGVyIDEgMiBoYWQgdG8gcmV0cmFjdCB0aGUgcG9zaXRpdmUgZGlz YWcgYW5kIHRoZW4gZG8gbmVnYXRpdmUgaW5zdGVhZCB3aGVuIHRoZSBsaW5rIHRvIHNwaW5lIDEg MSBmZWxsLiBXYXMgdGhhdCBub3QgYSBiaXQgY29tcGxleCBhbmQgZXJyb3IgcHJvbmU/DQoNCkFs c28gSeKAmW0gbm90IGNsZWFyIGhvdyB3ZSBjYW4gYWx3YXlzIGRlY2lkZSB0aGF0IGR5bmFtaWNh bGx5IGFuZCBJIGRvIG5vdCBiZWxpZXZlIHRoYXQgd2Ugc3BlY2lmaWVkIHRoYXQuIFNvIEkgdW5k ZXJzdGFuZCB0aGF0IGl04oCZcyBtb3JlIGxpa2UgYSB1c2UgY2FzZSB0aGluZ3ksIGxpa2UgYSBj b25maWd1cmF0aW9uIHRoYXQgd291bGQgYmUgYWRhcHRlZCB0byB0aGUgdXNlIGNhc2UuDQoNCj0+ IGRvIG5vdCBjb25maWd1cmUgYm90aCBhdCB0aGUgc2FtZSB0aW1lIHVzZSBlaXRoZXIgcG9zaXRp dmUgb3IgbmVnYXRpdmUgZGlzYWcuDQoNCldlIGRvIG5vdCB0cnkgdG8gZG8gcG9zaXRpdmUgZGlz YWcgdHJhbnNpdGl2ZWx5LiBTbyBpZiB0aGVyZSBpcyBhIG5lZWQgZm9yIHRyYW5zaXRpdmUsIHlv dSBoYXZlIHRvIHVzZSBuZWdhdGl2ZS4gIEluIGEgbXVsdGlwbGFuZSBjYXNlLCB0aGVyZeKAmXMg dXN1YWxseSAoYXMgaW4geW91ciBwaWN0dXJlKSBvbmUgVG9QIHBlciBwbGFuZSBpbiBlYWNoIFBv RCwgYW5kIGEgZmlyc3QgbGluayBmYWlsdXJlIChzYXkgU3BpbmUgMSAxIHRvIGxlYWYgMSAxKSBj YW4gYWxyZWFkeSBjYXVzZSBhIGZhbGxlbiBsZWFmOiBsZWFmIDEgMSBpcyBubyBtb3JlIHJlYWNo YWJsZSB3aXRoaW4gcGxhbmUgMS4gVGhpcyB0ZWxscyB5b3UgdGhhdCBhbGwgbGVhdmVzIGluIHRo ZSBvdGhlciBQb0RzIG11c3QgYXZvaWQgdGhhdCBwbGFuZSwgYW5kIHRoYXTigJlzIGEgbGVhZiBk ZWNpc2lvbjsgd2hpY2ggdGVsbHMgeW91IHRoYXQgeW91IG5lZWQgdG8gcmVjdXJzZSB0cmFuc2l0 aXZlbHkgZG93bi4gVGhpcyBpbmRpY2F0ZXMgdGhhdCBuZWdhdGl2ZSBtdXN0IGJlIGFjdGl2YXRl ZCBpbiBhIGhpZ2hseSBwYXJ0aXRpb25lZCAobWVhbmluZyBsb3cgcmVkdW5kYW5jeSkgbXVsdGlw bGFuZS4NCg0KU2F5IHdlIHRyeSB0byB1c2UgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gdHJhbnNp dGl2ZWx5IGluIGEgVG9GIHRoYXQgaXMgcGFydGl0aW9uZWQgbGlrZSBpbiBwbGFuZXMsIHlvdeKA mWQgcnVuIGEgcmlzayB0aGF0IG5vbmUgb2YgdGhlIFRvRiBub2RlcyB0aGF0IGNhbiBzdGlsbCBy ZWFjaCB0aGUgbGVhZiBjYW4gc2VlICh0aHJvdWdoIHNvdXRoIHJlZmxlY3Rpb24pIHRoZSBUb0Yg bm9kZSB0aGF0IGNhbm5vdCBzbyB0aGV5IGRvIG5vdCBrbm93IHRoZXkgbmVlZCB0byBkaXNhZy4g U28geW91IGVuZCB1cCBuZWVkaW5nIHRoZSBzYW1lIHJpbmcgYXMgZm9yIG5lZ2F0aXZlLCB0aGUg c291dGhlcm4gcmVmbGVjdGlvbiBiZWNvbWUgbW9zdGx5IHVzZWxlc3MgYW5kIHRoZSBiZW5lZml0 cyBvZiBwb3NpdGl2ZSBhcmUgZ29uZS4NCg0KUGFydGl0aW9ubmVkIFRvRiA9PiBuZWdhdGl2ZQ0K DQpJIHRydXN0IHRoYXQgd2UgY2FuIHVzZSBwb3NpdGl2ZSBpbiBhIGhpZ2hseSByZWR1bmRhbnQg YW5kIHN5bW1ldHJpY2FsIG5vbi1wYXJ0aXRpb25lZCBUb0YuIElmIG5vIG9uZSBjYW4gcmVhY2gg dGhlIGxlYWYgYW55bW9yZSAobGlrZSBpdOKAmXMgZGVhZCkgd2UgaGF2ZSBubyBpc3N1ZSBzaW5j ZSBpdCBzaG91bGQgbm90IGJlIGRpc2FnZ3JlZ2F0ZWQsIGp1c3QgdXNlIHRoZSBkaXNjYXJkcyBy b3V0ZSBhdCBhbnkgVG9GIG5vZGUuIElmIHlvdSBoYXZlIGVub3VnaCByZWR1bmRhbmN5IGFuZCBu byBwYXJ0aXRpb24sICB0aGVyZSB3aWxsIGFsd2F5cyBiZSBub2RlcyB0aGF0IGNhbiBib3RoIHJl YWNoIGEgbGVhZiBhbmQgZGlzY292ZXIgdGhhdCBhIHBlZXIgZG9lcyBub3QuDQoNCj0+IFBvc2l0 aXZlIGlzIGluZGljYXRlZCBmb3IgYSB2ZXJ5IHNwZWNpZmljIHVzZSBjYXNlLCBpZGVhbGx5IDIg bGV2ZWxzIGFuZCBmdWxseSBtZXNoZWQuIE1heWJlIHRoYXTigJlzIGVub3VnaCBkZXBsb3ltZW50 cyB0byBqdXN0aWZ5IHRoZSBmZWF0dXJlIGluIHRoZSBjb2RlLg0KDQpTbyB0aGUgcXVlc3Rpb24g aXMgcmVhbGx5IHRoYXQgYmx1cnJ5IHpvbmUgYmV0d2VlbiBoaWdobHkgcmVkdW5kYW50IHNpbmds ZSBwbGFuZSBhbmQgaGlnaGx5IHBhcnRpdGlvbmVkIG11bHRpcGxhbmUgd2hhdCBzaG91bGQgb25l IGRvPyBJIGJlY29tZXMgYSByaXNrL2JlbmVmaXQganVkZ2VtZW504oCmIElmIG5lZ2F0aXZlIGlz IGltcGxlbWVudGVkIGFuZCB0aGUgcmluZyBpcyB0aGVyZSwgSeKAmWQgdXNlIGl0LCBiZXR0ZXIg c2FmZSB0aGFuIHNvcnJ5Lg0KDQpUYWtlIGNhcmUNCg0KUGFzY2FsDQoNCg0KDQpGcm9tOiBCcnVu byBSaWpzbWFuIDxicnVub3JpanNtYW5AaG90bWFpbC5jb208bWFpbHRvOmJydW5vcmlqc21hbkBo b3RtYWlsLmNvbT4+DQpTZW50OiBqZXVkaSAxNCBtYWkgMjAyMCAxNzozNg0KVG86IFBhc2NhbCBU aHViZXJ0IChwdGh1YmVydCkgPHB0aHViZXJ0QGNpc2NvLmNvbTxtYWlsdG86cHRodWJlcnRAY2lz Y28uY29tPj4NCkNjOiBNZWxjaGlvciBBZWxtYW5zIDxtYWVsbWFuc0BqdW5pcGVyLm5ldDxtYWls dG86bWFlbG1hbnNAanVuaXBlci5uZXQ+PjsgQ2hyaXN0aWFuIEdyYWYgPGNncmFmQGp1bmlwZXIu bmV0PG1haWx0bzpjZ3JhZkBqdW5pcGVyLm5ldD4+OyBPbGl2ZXIgU3RldWRsZXIgPG9zdGV1ZGxl ckBqdW5pcGVyLm5ldDxtYWlsdG86b3N0ZXVkbGVyQGp1bmlwZXIubmV0Pj47IE9saXZpZXIgVmFu ZGV6YW5kZSA8b3ZhbmRlemFuZGVAanVuaXBlci5uZXQ8bWFpbHRvOm92YW5kZXphbmRlQGp1bmlw ZXIubmV0Pj47IFRvbnkgUHJ6eWdpZW5kYSA8dG9ueXNpZXRmQGdtYWlsLmNvbTxtYWlsdG86dG9u eXNpZXRmQGdtYWlsLmNvbT4+OyBBbnRvbmkgUHJ6eWdpZW5kYSA8cHJ6PTQwanVuaXBlci5uZXRA ZG1hcmMuaWV0Zi5vcmc8bWFpbHRvOnByej00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPj47 IHRvbW1hc29jYWlhenppQGdtYWlsLmNvbTxtYWlsdG86dG9tbWFzb2NhaWF6emlAZ21haWwuY29t PjsgSmVmZiBUYW50c3VyYSA8amVmZnRhbnQuaWV0ZkBnbWFpbC5jb208bWFpbHRvOmplZmZ0YW50 LmlldGZAZ21haWwuY29tPj47IEplZmZyZXkgKFpoYW9odWkpIFpoYW5nIDx6emhhbmdAanVuaXBl ci5uZXQ8bWFpbHRvOnp6aGFuZ0BqdW5pcGVyLm5ldD4+OyBKZWZmcmV5IChaaGFvaHVpKSBaaGFu ZyA8enpoYW5nPTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8bWFpbHRvOnp6aGFuZz00MGp1 bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPj47IEplZmZyZXkgWmhhbmcgPHp6aGFuZzIwMDNAZ21h aWwuY29tPG1haWx0bzp6emhhbmcyMDAzQGdtYWlsLmNvbT4+DQpTdWJqZWN0OiBSZTogTmVnYXRp dmUgZGlzYWdncmVnYXRpb24gZmVhdHVyZSBndWlkZQ0KDQoNCk9uIE1heSAxNCwgMjAyMCwgYXQg ODo1MyBBTSwgUGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSA8cHRodWJlcnRAY2lzY28uY29tPG1h aWx0bzpwdGh1YmVydEBjaXNjby5jb20+PiB3cm90ZToNCg0KVGhpcyBkb2VzIG5vdCBzaG93IGJl Y2F1c2Ugb24geW91ciBmaXJzdCBicmVha2FnZSB5b3UgdXNlIHRoZSBwb3NpdGl2ZSBkaXNhZy4g SWYgeW91IHN0aWNrIHRvIHRoZSBsb2dpYyB5b3UgdXNlZCBhdCB0aGUgYmVnaW5uaW5nLCB0aGF0 IGlzIHBpY2sgYW4gZXhhbXBsZSB3aGVyZSBwb3NpdGl2ZSBhcHBsaWVzIGJ1dCB1c2UgbmVnYXRp dmUsIHRoZW4gb24geW91ciBmaXJzdCBicmVha2FnZSB5b3XigJlkIHNob3cgdGhhdCB0aGUgbmVn YXRpdmUgZG9lcyBub3QgbmVlZCB0byBnbyB0cmFuc2l0aXZlbHkgdG8gdGhlIGxlYWYsIGJlY2F1 c2UgdGhlIHNwaW5lIG5vZGVzIHN0aWxsIGhhdmUgc29sdXRpb25zLiBJcyB0aGF0IGEgbG90IG9m IHdvcmsgdG8gY2hhbmdlPw0KDQpUaGlzIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyB0aGlua2luZyBh cyB3ZWxsLg0KDQpNYXliZSBJIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY3VycmVudCBzcGVjaWZp Y2F0aW9uIHdpdGggYSBmaW5lLXRvb3RoZWQgY29tYiBhZ2FpbiwgYnV0IG15IChwb3NzaWJseSBp bmNvcnJlY3QpIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRo ZSBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgd2UgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaXMgdXNl ZCAoTVVTVCBiZSB1c2VkPyBTSE9VTEQgYmUgdXNlZD8pIGluIHRoZSDigJxmaXJzdCBmYWlsdXJl 4oCdIHNjZW5hcmlvLg0KDQpQZXJzb25hbGx5LCBJIHNlZSBubyByZWFzb24gd2h5IHdlIHdvdWxk IG5vdCBiZSBhYmxlIHRvIHVzZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpbnN0ZWFkIG9mIHBv c2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGluIHRoZSBmaXJzdCBmYWlsdXJlIHNjZW5hcmlvIGFzIHdl bGwuDQoNCkluIHRoZSBjb250ZXh0IG9mIHRoZSB0dXRvcmlhbCwgdGhpcyB3b3VsZCBoYXZlIHRo ZSBhZHZhbnRhZ2Ugb2YgY2xlYXJseSBkZW1vbnN0cmF0aW5nIHRoZSBwcm9wYWdhdGlvbiBsb2dp YyBtb3JlIGNsZWFybHkuDQoNCkJ1dCBtb3JlIGltcG9ydGFudGx5LCBpdCBzZWVtcyB0byBtZSB0 aGF0IG9uY2UgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaXMgaW1wbGVtZW50ZWQsIHRoZXJlIGlz IHJlYWxseSBubyByZWFzb24gdG8gdXNlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFueXdoZXJl LiBJdCB3b3VsZCBiZSDigJxjbGVhbmVy4oCdIChsZXNzIHNpZ25hbGluZykgYW5kIOKAnGJldHRl cuKAnSAobm8gaW5jYXN0KSB0byBzaW1wbHkgdXNlIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGV2 ZXJ5d2hlcmUuDQoNClNv4oCmLiBJIHdhcyB0aGlua2luZyB0byBhZGQgYSBjb25maWd1cmF0aW9u IGtub2IgdG8gbXkgY29kZSDigJxwb3NpdGl2ZS1vbmx54oCdLCDigJxuZWdhdGl2ZS1vbmx54oCd LCDigJxwb3NpdGl2ZS1hbmQtbmVnYXRpdmXigJ0sIHdpdGgg4oCcbmVnYXRpdmUtb25seeKAnSBi ZWluZyB0aGUgZGVmYXVsdD8gKFNlZW1zIGxpa2UgYSB3YXN0ZSB0byBoYXZlIGNvZGVkIHVwIHRo ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbikuDQoNCldoYXQgZG9lcyBldmVyeW9uZSB0aGluayBv ZiB0aGF0Pw0KDQpTaG91bGQgd2UgZ28gZXZlbiBmdXJ0aGVyIGFuZCBzaW1wbHkgcmVtb3ZlIHBv c2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGZyb20gdGhlIHNwZWM/DQoNClNob3VsZCB3ZSBoYXZlIG5l Z2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFzIGEgY2FwYWJpbGl0eSBpbiB0aGUgY2FwYWJpbGl0eSBu ZWdvdGlhdGlvbj8gKFNlZW1zIG5vbi1zZW5zaWNhbCwgZ2l2ZW4gaXQgaXMgc29tZXRoaW5nIHRo YXQgdGhlIHdob2xlIGZhYnJpYyBuZWVkcyB0byBzdXBwb3J0IG9yIG5vdC4pDQoNClNob3VsZCB3 ZSB0YWtlIHRoaXMgdG8gdGhlIFJJRlQgbWFpbGluZyBsaXN0Pw0KDQrigJQgQnJ1bm8NCg0KDQo= --_000_D9004CDF38AD4F4BB76C8BECD9669D3Bhotmailcom_ Content-Type: text/html; charset="utf-8" Content-ID: <7366B29666886240BFAEDEEBA6E51129@namprd06.prod.outlook.com> Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5IHN0eWxlPSJ3b3JkLXdy YXA6IGJyZWFrLXdvcmQ7IC13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgbGluZS1icmVhazogYWZ0 ZXItd2hpdGUtc3BhY2U7IiBjbGFzcz0iIj4NCkRldmls4oCZcyBhZHZvY2F0ZSAmZ3Q7Jmd0OyZn dDsgYmVsb3c6PGJyIGNsYXNzPSIiPg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8YmxvY2txdW90ZSB0 eXBlPSJjaXRlIiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+T24gTWF5IDE0LCAyMDIwLCBhdCAx MjoxMCBQTSwgVG9ueSBQcnp5Z2llbmRhICZsdDs8YSBocmVmPSJtYWlsdG86dG9ueXNpZXRmQGdt YWlsLmNvbSIgY2xhc3M9IiI+dG9ueXNpZXRmQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjwvZGl2 Pg0KPGJyIGNsYXNzPSJBcHBsZS1pbnRlcmNoYW5nZS1uZXdsaW5lIj4NCjxkaXYgY2xhc3M9IiI+ DQo8ZGl2IGRpcj0ibHRyIiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+Jm5ic3A7bXkgdGhvdWdo dHM6IDxiciBjbGFzcz0iIj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8 L2Rpdj4NCjxkaXYgY2xhc3M9IiI+bmVnYXRpdmUgaXMgc2VyaW91c2x5IG1vcmUgY29tcGxleCB0 byZuYnNwOyBpbXBsZW1lbnQgYW5kIHVuZGVyc3RhbmQgb3BlcmF0aW9uYWxseTwvZGl2Pg0KPC9k aXY+DQo8L2Rpdj4NCjwvYmxvY2txdW90ZT4NCjxkaXY+PGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8 ZGl2PiZndDsmZ3Q7Jmd0OyBZZXMgYW5kIG5vLCBmb3IgYWxsIHRoZSB3cm9uZyByZWFzb25zIDst KTwvZGl2Pg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjxkaXY+Jmd0OyZndDsmZ3Q7IE9u Y2UgeW91IHdyYXAgeW91ciBoZWFkIGFyb3VuZCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiAob25j ZSBlbmxpZ2h0ZW5tZW50IGlzIGFjaGlldmVkIDotKSwgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24g aXMgYWN0dWFsbHkgdmVyeSBzaW1wbGUgdG8gdW5kZXJzdGFuZC4gU2ltcGxlciB0aGFuIHBvc2l0 aXZlIGRpc2FnZ3JlZ2F0aW9uIEkgd291bGQgZXZlbiB2ZW50dXJlIHRvIHNheS48L2Rpdj4NCjxk aXY+PGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8ZGl2PiZndDsmZ3Q7Jmd0OyBJTUhPIG5lZ2F0aXZl IGRpc2FnZ3JlZ2F0aW9uIGlzIGRlZmluaXRlbHkgc2ltcGxlciBmcm9tIGFuIG9wZXJhdGlvbmFs IHBvaW50IG9mIHZpZXcgaW4gdGhlIHNlbnNlIHRoYXQgb25seSBvbmUgbm9kZSBuZWVkcyB0byBh bm5vdW5jZSDigJxwbGVhc2UgZG9u4oCZdCB1c2UgbWXigJ0gdmVyc3VzIE4tMSBub2RlcyBoYXZp bmcgdG8gc2F5IOKAnHVzZSBtZeKAnSBhcyBpcyB0aGUgY2FzZSBpbiBwb3NpdGl2ZSBkaXNhZ2dy ZWdhdGlvbi4gUG9zaXRpdmUNCiBkaXNhZ2dyZWdhdGlvbiBoYXMgbW9yZSBtb3ZpbmcgcGFydHMg YW5kIHBvdGVudGlhbCBpbmNhc3QgcHJvYmxlbXMgZHVlIHRoaXMgaGFwcGVuaW5nIGFzeW5jaHJv bm91c2x5LjwvZGl2Pg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjxkaXY+Jmd0OyZndDsm Z3Q7IEhhdmluZyBzYWlkIHRoYXQsIGluIGxhcmdlIGNvbW1lcmNpYWwgcm91dGluZyB2ZW5kb3Jz LCBzdWNoIGFzIHRoZSBK4oCZcyBhbmQgdGhlIEPigJlzIG9mIHRoZSB3b3JsZCwgdGhlcmUgbWF5 IGJlIGEg4oCccG9saXRpY2FsJnF1b3Q7IHByb2JsZW0uIE5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9u IGludm9sdmVzIGNoYW5nZXMgaW4gdGhlIFJJQiAodGhlIGNvbmNlcHQgb2YgbmVnYXRpdmUgbmV4 dC1ob3BzKSBhbmQgY2hhbmdlcyBpbiB0aGUgUklCLXRvLUZJQg0KIGxvZ2ljICh0cmFuc2xhdGlu ZyBuZWdhdGl2ZSBuZXh0IGhvcHMgaW50byBwb3NpdGl2ZSBuZXh0IGhvcHMpLiAmbmJzcDtUaGUg Z3JvdXAgdGhhdCBvd25zIHRoZSBSSUIgYW5kIHRoZSBGSUIgaXMgdHlwaWNhbGx5IGEgZGlmZmVy ZW50IGdyb3VwIHRoYXQgb3ducyBhIHJvdXRpbmcgcHJvdG9jb2wgc3VjaCBhcyBSSUZULiAmbmJz cDtQbHVzLCBjaGFuZ2luZyB0aGUgUklCIGFuZCBGSUIgY29kZSBjYW4gYWZmZWN0IGFsbCBvdGhl ciBwcm90b2NvbHMgYXMgd2VsbCwNCiBhbmQgd291bGQgYmUgY29uc2lkZXJlZCBhIGhpZ2gtcmlz ayBjaGFuZ2UuPC9kaXY+DQo8YnIgY2xhc3M9IiI+DQo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBj bGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGRpcj0ibHRyIiBjbGFzcz0iIj4NCjxkaXYg Y2xhc3M9IiI+YW5kIG9ubHkgbmVlZGVkIG9uIG11bHRpLXBsYW5lIGZhYnJpY3MsIHRhaHQncyB3 aHkgcG9zaXRpdmUgaXMgS0lTUyA7LSkgQWxzbywgbmVnYXRpdmUgYWx3YXlzIGZvcmNlcyB5b3Ug dG8gcmluZyB0aGUgdG9wIG9mIHRoZSBmYWJyaWMgd2hpY2ggaW4gc2luZ2xlIHBsYW5lIGRlc2ln biBpcyBhbiB1bm5lY2Vzc2FyeSByZXF1aXJlbWVudC4mbmJzcDsNCjxiciBjbGFzcz0iIj4NCjwv ZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvYmxvY2txdW90ZT4NCjxkaXY+PGJyIGNsYXNzPSIiPg0K PC9kaXY+DQo8ZGl2PiZndDsmZ3Q7Jmd0OyBMZXTigJlzIG1ha2Ugc3VyZSB0aGF0IHdlIGNvbXBh cmUgYXBwbGVzIHRvIGFwcGxlcy48L2Rpdj4NCjxkaXY+PGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8 ZGl2PiZndDsmZ3Q7Jmd0OyBJbiBhIHNpbmdsZS1wbGFuZSBmYWJyaWMsIGVpdGhlciBwb3NpdGl2 ZSBvciBuZWdhdGl2ZSB3aWxsIGRvIHRoZSBqb2IuIFdlIGNhbiBwaWNrIG9uZSBvciB0aGUgb3Ro ZXIuIFBlcnNvbmFsbHksIEkgdGhpbmsgbmVnYXRpdmUgaXMgc2ltcGxlciwgYnV0IEkgY2FuIHNl ZSBob3cgcmVhc29uYWJsZSBwZW9wbGUgY2FuIGhvbGQgYSBkaWZmZXJlbnQgb3Bpbmlvbi48L2Rp dj4NCjxkaXY+PGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8ZGl2PiZndDsmZ3Q7Jmd0OyBJbiBtdWx0 aS1wbGFuZSBmYWJyaWNzLCB5b3UgZGVmaW5pdGVseSBuZWVkIG5lZ2F0aXZlIGZvciBmYWxsZW4g bGVhZnMuICZuYnNwO0ZvciBicm9rZW4gbGVhZi1zcGluZSAvIHNwaW5lLXN1cGVyc3BpbmUgbGlu a3MsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSAoYWx0aG91Z2gg dGhlIGN1cnJlbnQgbGFuZ3VhZ2UgdGhlIHNwZWMgb25seSBkaXNjdXNzZXMgcG9zaXRpdmUgZm9y IHRoaXMpLiAmbmJzcDtTbyB5b3VyIG9wdGlvbnMNCiBmb3IgdGhlIGVudGlyZSBmYWJyaWMgYXJl OiB1c2Ugb25seSBuZWdhdGl2ZSBvciB1c2UgYSBtaXh0dXJlIG9mIHBvc2l0aXZlIGFuZCBuZWdh dGl2ZS4gJm5ic3A7RG9pbmcgb25seSBuZWdhdGl2ZSBzZWVtcyBjbGVhbmVyIHRvIG1lLiAmbmJz cDtIYXZpbmcgYSBtaXh0dXJlIGlzIG1vcmUgY29tcGxleCBhbmQgbW9yZSBmcmFnaWxlLjwvZGl2 Pg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiIGNs YXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgZGlyPSJsdHIiIGNsYXNzPSIiPg0KPGRpdiBj bGFzcz0iIj5JIGZvcmVzZWUgdmVuZG9ycyBub3QgaW1wbGVtZW50aW5nIG5lZ2F0aXZlIGZvciBz aW1wbGljaXR5LCB2ZXJ5IHNtYWxsIGZvb3RwcmludCBmYWJyaWNzLg0KPGJyIGNsYXNzPSIiPg0K PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPGRpdj48YnIgY2xhc3M9IiI+ DQo8L2Rpdj4NCjxkaXY+Jmd0OyZndDsmZ3Q7IEZhaXIgZW5vdWdoLiBJZiBuZWdhdGl2ZSBpcyBn b2luZyBiZSBvcHRpb25hbCB3ZSBzaG91bGQgbWFrZSB0aGF0IGNsZWFyIGluIHRoZSBzcGVjICht YXliZSBpdCBhbHJlYWR5IGlzLCBJIGRpZG7igJl0IGZpbmQgdGhlIHJlbGV2YW50IGxhbmd1YWdl KS48L2Rpdj4NCjxiciBjbGFzcz0iIj4NCjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiIGNsYXNzPSIi Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgZGlyPSJsdHIiIGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0i Ij48YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+dGhlIGRpc2N1c3Npb24gYWJv dXQgY2FwYWJpbGl0eSBhZHZlcnRpc2VtZW50IGlzIGludGVyZXN0aW5nLCB3ZSBjYW4ganVzdCBh ZGQgb25lIGJpdCBvbiB0aGUgbm9kZSBjYXBhYmlsaXRpZXMgZWxlbWVudCwgbWFrZSBpdCBvcHRp b25hbCBhbmQgZGVmYXVsdCB0cnVlLg0KPGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8L2Rpdj4NCjwv ZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjxkaXY+Jmd0 OyZndDsmZ3Q7IElmIHdlIGRvIHRoYXQsIHdlIHNob3VsZCBkZXNjcmliZSB3aGF0IHRoZSBleHBl Y3RlZCBiZWhhdmlvciBpcyB1cG9uIHJlY2VpdmluZyB0aGlzIGNhcGFiaWxpdHkuIOKAnERvbuKA mXQgdXNlIG5lZ2F0aXZlIGlmIGF0IGxlYXN0IG9uZSBub2RlIGFkdmVydGlzZXMgdGhleSBkb27i gJl0IHN1cHBvcnQgaXQ/JnF1b3Q7PC9kaXY+DQo8YnIgY2xhc3M9IiI+DQo8YmxvY2txdW90ZSB0 eXBlPSJjaXRlIiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGRpcj0ibHRyIiBjbGFz cz0iIj4NCjxkaXYgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pk9mIGNvdXJzZSBhbiBpbXBsZW1lbnRhdGlvbiB0YWh0IHVuZGVyc3RhbmRzIHRoYXQgYWxsIGlu dm9sdmVkIG5vZGVzIHVuZGVyc3RhbmQgbmVnYXRpdmUgaXMgZnJlZSB0byB1c2UgbmVnYXRpdmUg aW5zdGVhZCBvZiBwb3NpdGl2ZSB0aGVuLg0KPGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8L2Rpdj4N CjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjxkaXY+ Jmd0OyZndDsmZ3Q7IFl1cCwgZXhhY3RseSwgdGhhdCB3YXMgdGhlIG1haW4gcG9pbnQgb2YgdGhl IGRpc2N1c3Npb24uIFRoaXMgaXMgd2hhdCBJIGFtIHBsYW5uaW5nIHRvIGRvIGluIG15IGNvZGUu IEhhdmUgYSBjb25maWcga25vYiBmb3Ig4oCcbmVnYXRpdmUtb25seeKAnSBvciDigJxwb3NpdGl2 ZS1vbmx54oCdIG9yIOKAnHBvc2l0aXZlLWFuZC1uZWdhdGl2ZeKAnSB3aXRoIOKAnG5lZ2F0aXZl LW9ubHnigJ0gYXMgdGhlIGRlZmF1bHQuPC9kaXY+DQo8YnIgY2xhc3M9IiI+DQo8YmxvY2txdW90 ZSB0eXBlPSJjaXRlIiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGRpcj0ibHRyIiBj bGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8ZGl2IGNsYXNz PSIiPi0tIHRvbnkgPGJyIGNsYXNzPSIiPg0KPC9kaXY+DQo8L2Rpdj4NCjxiciBjbGFzcz0iIj4N CjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4NCjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9h dHRyIj5PbiBUaHUsIE1heSAxNCwgMjAyMCBhdCAxMTowNSBBTSBCcnVubyBSaWpzbWFuICZsdDs8 YSBocmVmPSJtYWlsdG86YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tIiBjbGFzcz0iIj5icnVub3Jp anNtYW5AaG90bWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnIgY2xhc3M9IiI+DQo8L2Rpdj4NCjxi bG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAw LjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6 MWV4Ij4NCjxkaXYgc3R5bGU9Im92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IiBjbGFzcz0iIj48 Zm9udCBzdHlsZT0iZm9udC1zaXplOjE0cHgiIGZhY2U9IkF2ZW5pci1Cb29rIiBjbGFzcz0iIj5C cm9hZGVuaW5nIGEgZGlzY3Vzc2lvbiBvbiBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiB0byB0aGUg UklGVCBtYWlsaW5nIGxpc3QuPC9mb250Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBzdHlsZT0iZm9u dC1zaXplOjE0cHgiIGZhY2U9IkF2ZW5pci1Cb29rIiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8 L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IHN0eWxlPSJmb250LXNpemU6MTRweCIg ZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIiPk5vdyB0aGF0IHdlIGhhdmUgaW1wbGVtZW50ZWQg bmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW4gUklGVC1QeXRob24sIGFuZCBub3cgdGhhdCB3ZSBh cmUgZ2V0dGluZyBzb21lIG9wZXJhdGlvbmFsIGV4cGVyaWVuY2Ugd2l0aCBpdCwgdGhlIGZvbGxv d2luZyBpcyBiZWNvbWluZyBtb3JlIGFuZCBtb3JlIGV2aWRlbnQ6PC9mb250PjwvZGl2Pg0KPGRp diBjbGFzcz0iIj48Zm9udCBzdHlsZT0iZm9udC1zaXplOjE0cHgiIGZhY2U9IkF2ZW5pci1Cb29r IiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxm b250IHN0eWxlPSJmb250LXNpemU6MTRweCIgZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIiPkl0 IHNlZW1zIHRvIHVzIChCcnVubyBhbmQgUGFzY2FsLCBmb3Igbm93KSB0aGF0IG9uY2UgbmVnYXRp dmUgZGlzYWdncmVnYXRpb24gaXMgaW1wbGVtZW50ZWQsIHRoZXJlIGlzIHJlYWxseSBubyBuZWVk IGZvciBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhbnkgbW9yZS48L2ZvbnQ+PC9kaXY+DQo8ZGl2 IGNsYXNzPSIiPjxmb250IHN0eWxlPSJmb250LXNpemU6MTRweCIgZmFjZT0iQXZlbmlyLUJvb2si IGNsYXNzPSIiPjxiciBjbGFzcz0iIj4NCjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZv bnQgc3R5bGU9ImZvbnQtc2l6ZToxNHB4IiBmYWNlPSJBdmVuaXItQm9vayIgY2xhc3M9IiI+RXZl cnkgdXNlIGNhc2UgdGhhdCBjYW4gYmUgc29sdmVkIGJ5IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9u IGNhbiAoYXMgZmFyIGFzIHdlIGNhbiBjdXJyZW50bHkgdGVsbCkgYWxzbyBiZSBzb2x2ZWQgYnkg bmVnYXRpdmUgZGlzYWdncmVnYXRpb24uPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9u dCBzdHlsZT0iZm9udC1zaXplOjE0cHgiIGZhY2U9IkF2ZW5pci1Cb29rIiBjbGFzcz0iIj48YnIg Y2xhc3M9IiI+DQo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IHN0eWxlPSJmb250 LXNpemU6MTRweCIgZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIiPkZ1cnRoZXJtb3JlLCBuZWdh dGl2ZSBkaXNhZ2dyZWdhdGlvbiBzb2x2ZXMgdGhlIHByb2JsZW1zIGluIGEgZmFyIHNpbXBsZXIg YW5kIG1vcmUgZWxlZ2FudCB3YXk6IHRoZXJlIGFyZSBmZXdlciBhZHZlcnRpc2luZyBub2RlcyBh bmQgZmV3ZXIgYWR2ZXJ0aXNlZCBUSUVzIGludm9sdmVkLCBhbmQgd2UgZG9u4oCZdCBoYXZlIHRo ZQ0KIHN5bmNocm9uaXphdGlvbiBpc3N1ZSB0aGF0IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGhh cyB0aGF0IHBvdGVudGlhbGx5IGNhdXNlcyBpbmNhc3QgcHJvYmxlbXMuPC9mb250PjwvZGl2Pg0K PGRpdiBjbGFzcz0iIj48Zm9udCBzdHlsZT0iZm9udC1zaXplOjE0cHgiIGZhY2U9IkF2ZW5pci1C b29rIiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pjxmb250IHN0eWxlPSJmb250LXNpemU6MTRweCIgZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIi PlRodXMsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBpdCBtYWtlcyBzZW5zZSB0byByZWNvbW1lbmQgdGhh dCBpbiBhIGdpdmVuIGZhYnJpYyB3ZSB1c2UgZWl0aGVyIG9ubHkgbmVnYXRpdmUgZGlzYWdncmVn YXRpb24gb25seSBvciBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5LCB3aXRoIG5lZ2F0aXZl IGRpc2FnZ3JlZ2F0aW9uDQogYmVpbmcgdGhlIGRlZmF1bHQuPC9mb250PjwvZGl2Pg0KPGRpdiBj bGFzcz0iIj48Zm9udCBzdHlsZT0iZm9udC1zaXplOjE0cHgiIGZhY2U9IkF2ZW5pci1Cb29rIiBj bGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250 IHN0eWxlPSJmb250LXNpemU6MTRweCIgZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIiPklmIHBv c2l0aXZlIGFuZCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhcmUgZW5hYmxlZCZuYnNwOzwvZm9u dD48Zm9udCBmYWNlPSJBdmVuaXItQm9vayIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxNHB4IiBjbGFzcz0iIj5zaW11bHRhbmVvdXNseSBpbiBvbmUgYW5kIHRoZSBzYW1lIGZhYnJp YywgZXZlcnl0aGluZyBzdGlsbA0KIHdvcmtzIGZpbmUgYXMgZmFyIGFzIHdlIGNhbiBzZWUuIEJ1 dCB0aGVyZSBhcmUgc29tZSZuYnNwO+KAnGludGVyZXN0aW5n4oCdIGludGVyYWN0aW9ucyB0aGF0 IG1ha2UgdGhpbmdzJm5ic3A7dW5uZWNlc3NhcmlseSBjb21wbGV4IGFuZCBwb3RlbnRpYWxseSBm cmFnaWxlLiZuYnNwOzwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IHN0 eWxlPSJmb250LXNpemU6MTRweCIgZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIiPjxiciBjbGFz cz0iIj4NCjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZvbnQgc3R5bGU9ImZvbnQtc2l6 ZToxNHB4IiBmYWNlPSJBdmVuaXItQm9vayIgY2xhc3M9IiI+SWYgc3VwcG9ydCBmb3IgbmVnYXRp dmUgZGlzYWdncmVnYXRpb24gaXMgbWFuZGF0b3J5LCBhbmQgaWYgb3VyIGFzc2Vzc21lbnQgdGhh dCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBjYW4gc29sdmUgYWxsIHVzZSBjYXNlcyBpcyBjb3Jy ZWN0LCB0aGVuIHdlIGNvdWxkIGdvIG9uZSBib2xkIHN0ZXAgZnVydGhlciBhbmQgY29tcGxldGVs eQ0KIHJlbW92ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmcm9tIHRoZSBzcGVjaWZpY2F0aW9u LjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZvbnQgc3R5bGU9ImZvbnQtc2l6ZToxNHB4 IiBmYWNlPSJBdmVuaXItQm9vayIgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPg0KPC9mb250PjwvZGl2 Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBzdHlsZT0iZm9udC1zaXplOjE0cHgiIGZhY2U9IkF2ZW5p ci1Cb29rIiBjbGFzcz0iIj5UaG91Z2h0cz88L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxm b250IHN0eWxlPSJmb250LXNpemU6MTRweCIgZmFjZT0iQXZlbmlyLUJvb2siIGNsYXNzPSIiPjxi ciBjbGFzcz0iIj4NCjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZvbnQgc3R5bGU9ImZv bnQtc2l6ZToxNHB4IiBmYWNlPSJBdmVuaXItQm9vayIgY2xhc3M9IiI+4oCUIEJydW5vPC9mb250 PjxiciBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPg0KPGJsb2NrcXVvdGUg dHlwZT0iY2l0ZSIgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSIiPk9uIE1heSAxNCwgMjAyMCwgYXQg MTA6NDggQU0sIFBhc2NhbCBUaHViZXJ0IChwdGh1YmVydCkgJmx0OzxhIGhyZWY9Im1haWx0bzpw dGh1YmVydEBjaXNjby5jb20iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iIj5wdGh1YmVydEBjaXNj by5jb208L2E+Jmd0OyB3cm90ZTo8L2Rpdj4NCjxiciBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+ DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTpIZWx2ZXRpY2E7Zm9udC1zaXplOjEycHg7Zm9udC1z dHlsZTpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDts ZXR0ZXItc3BhY2luZzpub3JtYWw7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWluZGVudDowcHg7dGV4 dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOjBweDt0ZXh0 LWRlY29yYXRpb246bm9uZSIgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAw LjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNs YXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj5IZWxsbyBCcnVubzo8dSBjbGFzcz0iIj48L3U+ PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46 MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMt c2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj48dSBjbGFzcz0iIj48L3U+Jm5i c3A7PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJn aW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNh bnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9 IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj5JIGxpa2UgeW91ciBuZWdh dGl2ZS1vbmx5IGRlZmF1bHQgYmVjYXVzZSBpdCBpcyBwcm9iYWJseSB0aGUgc2FmZXN0LiBMZXQg bWUgZWxhYm9yYXRlLjx1IGNsYXNzPSIiPjwvdT48dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9u dD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZTox MXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXpl PSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQi IGNsYXNzPSIiPjx1IGNsYXNzPSIiPjwvdT4mbmJzcDs8dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwv Zm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6 ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBz aXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx cHQiIGNsYXNzPSIiPnBhcnRpdGlvbmluZyBzYXZlcyBhIGxvdCBtb3JlIHBvcnRzIHBlciBUb0Yg bm9kZSB0aGFuIHRoZSByaW5nIGNvc3Qgc28gaXQgZG9lcyBub3QgbWF0dGVyLjx1IGNsYXNzPSIi PjwvdT48dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1h cmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmks c2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFz cz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPjx1IGNsYXNzPSIiPjwv dT4mbmJzcDs8dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGli cmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBj bGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPklmIHlvdSBlbmFi bGUgbmVnYXRpdmUsIHRoZXJl4oCZcyBubyBwb2ludCBpbiBkb2luZyBhbnkgcG9zaXRpdmUgYXQg YWxsLCBpcyB0aGVyZT8gU28gd2hhdCBkbyB3ZSB0cnkgdG8gc2F2ZSBieSBjb21iaW5pbmc/IElu IHlvdXIgZXhhbXBsZSwgSSBndWVzcyB0aGF0IHN1cGVyIDEgMiBoYWQgdG8gcmV0cmFjdCB0aGUN CiBwb3NpdGl2ZSBkaXNhZyBhbmQgdGhlbiBkbyBuZWdhdGl2ZSBpbnN0ZWFkIHdoZW4gdGhlIGxp bmsgdG8gc3BpbmUgMSAxIGZlbGwuIFdhcyB0aGF0IG5vdCBhIGJpdCBjb21wbGV4IGFuZCBlcnJv ciBwcm9uZT88dSBjbGFzcz0iIj48L3U+PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9k aXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtm b250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIg ZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFz cz0iIj48dSBjbGFzcz0iIj48L3U+Jm5ic3A7PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+ PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFw dDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0i MiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBj bGFzcz0iIj5BbHNvIEnigJltIG5vdCBjbGVhciBob3cgd2UgY2FuIGFsd2F5cyBkZWNpZGUgdGhh dCBkeW5hbWljYWxseSBhbmQgSSBkbyBub3QgYmVsaWV2ZSB0aGF0IHdlIHNwZWNpZmllZCB0aGF0 LiBTbyBJIHVuZGVyc3RhbmQgdGhhdCBpdOKAmXMgbW9yZSBsaWtlIGEgdXNlIGNhc2UgdGhpbmd5 LCBsaWtlIGEgY29uZmlndXJhdGlvbg0KIHRoYXQgd291bGQgYmUgYWRhcHRlZCB0byB0aGUgdXNl IGNhc2UuPHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2 Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9u dC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZh Y2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9 IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250Pjwv ZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7 Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIi IGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xh c3M9IiI+PSZndDsgZG8gbm90IGNvbmZpZ3VyZSBib3RoIGF0IHRoZSBzYW1lIHRpbWUgdXNlIGVp dGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBkaXNhZy48dSBjbGFzcz0iIj48L3U+PHUgY2xhc3M9 IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAw LjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNs YXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj48dSBjbGFzcz0iIj48L3U+Jm5ic3A7PHUgY2xh c3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBj bSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYi IGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj5XZSBkbyBub3QgdHJ5IHRvIGRvIHBvc2l0 aXZlIGRpc2FnIHRyYW5zaXRpdmVseS4gU28gaWYgdGhlcmUgaXMgYSBuZWVkIGZvciB0cmFuc2l0 aXZlLCB5b3UgaGF2ZSB0byB1c2UgbmVnYXRpdmUuJm5ic3A7IEluIGEgbXVsdGlwbGFuZSBjYXNl LCB0aGVyZeKAmXMgdXN1YWxseSAoYXMgaW4geW91ciBwaWN0dXJlKSBvbmUgVG9QDQogcGVyIHBs YW5lIGluIGVhY2ggUG9ELCBhbmQgYSBmaXJzdCBsaW5rIGZhaWx1cmUgKHNheSBTcGluZSAxIDEg dG8gbGVhZiAxIDEpIGNhbiBhbHJlYWR5IGNhdXNlIGEgZmFsbGVuIGxlYWY6IGxlYWYgMSAxIGlz IG5vIG1vcmUgcmVhY2hhYmxlIHdpdGhpbiBwbGFuZSAxLiBUaGlzIHRlbGxzIHlvdSB0aGF0IGFs bCBsZWF2ZXMgaW4gdGhlIG90aGVyIFBvRHMgbXVzdCBhdm9pZCB0aGF0IHBsYW5lLCBhbmQgdGhh dOKAmXMgYSBsZWFmIGRlY2lzaW9uOyB3aGljaA0KIHRlbGxzIHlvdSB0aGF0IHlvdSBuZWVkIHRv IHJlY3Vyc2UgdHJhbnNpdGl2ZWx5IGRvd24uIFRoaXMgaW5kaWNhdGVzIHRoYXQgbmVnYXRpdmUg bXVzdCBiZSBhY3RpdmF0ZWQgaW4gYSBoaWdobHkgcGFydGl0aW9uZWQgKG1lYW5pbmcgbG93IHJl ZHVuZGFuY3kpIG11bHRpcGxhbmUuPHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3Nw YW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9u dC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxm b250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48 L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7 Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4N Cjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTFwdCIgY2xhc3M9IiI+U2F5IHdlIHRyeSB0byB1c2UgcG9zaXRpdmUgZGlzYWdncmVn YXRpb24gdHJhbnNpdGl2ZWx5IGluIGEgVG9GIHRoYXQgaXMgcGFydGl0aW9uZWQgbGlrZSBpbiBw bGFuZXMsIHlvdeKAmWQgcnVuIGEgcmlzayB0aGF0IG5vbmUgb2YgdGhlIFRvRiBub2RlcyB0aGF0 IGNhbiBzdGlsbCByZWFjaCB0aGUgbGVhZiBjYW4gc2VlDQogKHRocm91Z2ggc291dGggcmVmbGVj dGlvbikgdGhlIFRvRiBub2RlIHRoYXQgY2Fubm90IHNvIHRoZXkgZG8gbm90IGtub3cgdGhleSBu ZWVkIHRvIGRpc2FnLiBTbyB5b3UgZW5kIHVwIG5lZWRpbmcgdGhlIHNhbWUgcmluZyBhcyBmb3Ig bmVnYXRpdmUsIHRoZSBzb3V0aGVybiByZWZsZWN0aW9uIGJlY29tZSBtb3N0bHkgdXNlbGVzcyBh bmQgdGhlIGJlbmVmaXRzIG9mIHBvc2l0aXZlIGFyZSBnb25lLjx1IGNsYXNzPSIiPjwvdT48dSBj bGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20g MGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJp ZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPjx1IGNsYXNzPSIiPjwvdT4mbmJzcDs8 dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjow Y20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1z ZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPlBhcnRpdGlvbm5lZCBUb0YgPSZn dDsgbmVnYXRpdmU8dSBjbGFzcz0iIj48L3U+PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+ PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFw dDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0i MiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBj bGFzcz0iIj48dSBjbGFzcz0iIj48L3U+Jm5ic3A7PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2Zv bnQ+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6 MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6 ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0 IiBjbGFzcz0iIj5JIHRydXN0IHRoYXQgd2UgY2FuIHVzZSBwb3NpdGl2ZSBpbiBhIGhpZ2hseSBy ZWR1bmRhbnQgYW5kIHN5bW1ldHJpY2FsIG5vbi1wYXJ0aXRpb25lZCBUb0YuIElmIG5vIG9uZSBj YW4gcmVhY2ggdGhlIGxlYWYgYW55bW9yZSAobGlrZSBpdOKAmXMgZGVhZCkgd2UgaGF2ZSBubyBp c3N1ZSBzaW5jZSBpdCBzaG91bGQgbm90DQogYmUgZGlzYWdncmVnYXRlZCwganVzdCB1c2UgdGhl IGRpc2NhcmRzIHJvdXRlIGF0IGFueSBUb0Ygbm9kZS4gSWYgeW91IGhhdmUgZW5vdWdoIHJlZHVu ZGFuY3kgYW5kIG5vIHBhcnRpdGlvbiwgJm5ic3A7dGhlcmUgd2lsbCBhbHdheXMgYmUgbm9kZXMg dGhhdCBjYW4gYm90aCByZWFjaCBhIGxlYWYgYW5kIGRpc2NvdmVyIHRoYXQgYSBwZWVyIGRvZXMg bm90LiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48 L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0 O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIy IiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNs YXNzPSIiPjx1IGNsYXNzPSIiPjwvdT4mbmJzcDs8dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9u dD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZTox MXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXpl PSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQi IGNsYXNzPSIiPj0mZ3Q7IFBvc2l0aXZlIGlzIGluZGljYXRlZCBmb3IgYSB2ZXJ5IHNwZWNpZmlj IHVzZSBjYXNlLCBpZGVhbGx5IDIgbGV2ZWxzIGFuZCBmdWxseSBtZXNoZWQuIE1heWJlIHRoYXTi gJlzIGVub3VnaCBkZXBsb3ltZW50cyB0byBqdXN0aWZ5IHRoZSBmZWF0dXJlIGluIHRoZSBjb2Rl Ljx1IGNsYXNzPSIiPjwvdT48dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxk aXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFt aWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJD YWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPjx1 IGNsYXNzPSIiPjwvdT4mbmJzcDs8dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4N CjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQt ZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNl PSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIi PlNvIHRoZSBxdWVzdGlvbiBpcyByZWFsbHkgdGhhdCBibHVycnkgem9uZSBiZXR3ZWVuIGhpZ2hs eSByZWR1bmRhbnQgc2luZ2xlIHBsYW5lIGFuZCBoaWdobHkgcGFydGl0aW9uZWQgbXVsdGlwbGFu ZSB3aGF0IHNob3VsZCBvbmUgZG8/IEkgYmVjb21lcyBhIHJpc2svYmVuZWZpdCBqdWRnZW1lbnTi gKYgSWYgbmVnYXRpdmUNCiBpcyBpbXBsZW1lbnRlZCBhbmQgdGhlIHJpbmcgaXMgdGhlcmUsIEni gJlkIHVzZSBpdCwgYmV0dGVyIHNhZmUgdGhhbiBzb3JyeS48c3BhbiBjbGFzcz0iIj4mbmJzcDs8 L3NwYW4+PHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2 Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9u dC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZh Y2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9 IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250Pjwv ZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7 Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIi IGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xh c3M9IiI+VGFrZSBjYXJlPHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9m b250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXpl OjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFw dCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+ PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1z aXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250 IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTFwdCIgY2xhc3M9IiI+UGFzY2FsPHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3Nw YW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9u dC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxm b250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48 L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7 Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4N Cjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwv dT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAx cHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0i Ij4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIi PjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyLXN0eWxlOm5vbmUg bm9uZSBub25lIHNvbGlkO2JvcmRlci1sZWZ0OjEuNXB0IHNvbGlkIGJsdWU7cGFkZGluZzowY20g MGNtIDBjbSA0cHQiIGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9ImJvcmRl ci1zdHlsZTpzb2xpZCBub25lIG5vbmU7Ym9yZGVyLXRvcDoxcHQgc29saWQgcmdiKDIyNSwyMjUs MjI1KTtwYWRkaW5nOjNwdCAwY20gMGNtIiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjow Y20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1z ZXJpZiIgY2xhc3M9IiI+DQo8YiBjbGFzcz0iIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJp IiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQ7Zm9udC13ZWlnaHQ6Ym9sZCIg Y2xhc3M9IiI+RnJvbTo8L3NwYW4+PC9mb250PjwvYj48c3BhbiBjbGFzcz0iIj4mbmJzcDs8L3Nw YW4+QnJ1bm8gUmlqc21hbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmJydW5vcmlqc21hbkBob3RtYWls LmNvbSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSIiPmJydW5vcmlqc21hbkBob3RtYWlsLmNvbTwv YT4mZ3Q7PHNwYW4gY2xhc3M9IiI+Jm5ic3A7PC9zcGFuPjxiciBjbGFzcz0iIj4NCjxiIGNsYXNz PSIiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDpib2xkIiBjbGFzcz0iIj5TZW50Ojwvc3Bhbj48 L2I+PHNwYW4gY2xhc3M9IiI+Jm5ic3A7PC9zcGFuPmpldWRpIDE0IG1haSAyMDIwIDE3OjM2PGJy IGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiIGNs YXNzPSIiPlRvOjwvc3Bhbj48L2I+PHNwYW4gY2xhc3M9IiI+Jm5ic3A7PC9zcGFuPlBhc2NhbCBU aHViZXJ0IChwdGh1YmVydCkgJmx0OzxhIGhyZWY9Im1haWx0bzpwdGh1YmVydEBjaXNjby5jb20i IHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iIj5wdGh1YmVydEBjaXNjby5jb208L2E+Jmd0OzxiciBj bGFzcz0iIj4NCjxiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDpib2xkIiBjbGFz cz0iIj5DYzo8L3NwYW4+PC9iPjxzcGFuIGNsYXNzPSIiPiZuYnNwOzwvc3Bhbj5NZWxjaGlvciBB ZWxtYW5zICZsdDs8YSBocmVmPSJtYWlsdG86bWFlbG1hbnNAanVuaXBlci5uZXQiIHRhcmdldD0i X2JsYW5rIiBjbGFzcz0iIj5tYWVsbWFuc0BqdW5pcGVyLm5ldDwvYT4mZ3Q7OyBDaHJpc3RpYW4g R3JhZiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmNncmFmQGp1bmlwZXIubmV0IiB0YXJnZXQ9Il9ibGFu ayIgY2xhc3M9IiI+Y2dyYWZAanVuaXBlci5uZXQ8L2E+Jmd0OzsNCiBPbGl2ZXIgU3RldWRsZXIg Jmx0OzxhIGhyZWY9Im1haWx0bzpvc3RldWRsZXJAanVuaXBlci5uZXQiIHRhcmdldD0iX2JsYW5r IiBjbGFzcz0iIj5vc3RldWRsZXJAanVuaXBlci5uZXQ8L2E+Jmd0OzsgT2xpdmllciBWYW5kZXph bmRlICZsdDs8YSBocmVmPSJtYWlsdG86b3ZhbmRlemFuZGVAanVuaXBlci5uZXQiIHRhcmdldD0i X2JsYW5rIiBjbGFzcz0iIj5vdmFuZGV6YW5kZUBqdW5pcGVyLm5ldDwvYT4mZ3Q7OyBUb255IFBy enlnaWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzp0b255c2lldGZAZ21haWwuY29tIiB0YXJnZXQ9 Il9ibGFuayIgY2xhc3M9IiI+dG9ueXNpZXRmQGdtYWlsLmNvbTwvYT4mZ3Q7Ow0KIEFudG9uaSBQ cnp5Z2llbmRhICZsdDs8YSBocmVmPSJtYWlsdG86cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0 Zi5vcmciIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iIj5wcno9NDBqdW5pcGVyLm5ldEBkbWFyYy5p ZXRmLm9yZzwvYT4mZ3Q7Ow0KPGEgaHJlZj0ibWFpbHRvOnRvbW1hc29jYWlhenppQGdtYWlsLmNv bSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSIiPnRvbW1hc29jYWlhenppQGdtYWlsLmNvbTwvYT47 IEplZmYgVGFudHN1cmEgJmx0OzxhIGhyZWY9Im1haWx0bzpqZWZmdGFudC5pZXRmQGdtYWlsLmNv bSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSIiPmplZmZ0YW50LmlldGZAZ21haWwuY29tPC9hPiZn dDs7IEplZmZyZXkgKFpoYW9odWkpIFpoYW5nICZsdDs8YSBocmVmPSJtYWlsdG86enpoYW5nQGp1 bmlwZXIubmV0IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IiI+enpoYW5nQGp1bmlwZXIubmV0PC9h PiZndDs7DQogSmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgJmx0OzxhIGhyZWY9Im1haWx0bzp6emhh bmc9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSIi Pnp6aGFuZz00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPC9hPiZndDs7IEplZmZyZXkgWmhh bmcgJmx0OzxhIGhyZWY9Im1haWx0bzp6emhhbmcyMDAzQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxh bmsiIGNsYXNzPSIiPnp6aGFuZzIwMDNAZ21haWwuY29tPC9hPiZndDs8YnIgY2xhc3M9IiI+DQo8 YiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZCIgY2xhc3M9IiI+U3ViamVj dDo8L3NwYW4+PC9iPjxzcGFuIGNsYXNzPSIiPiZuYnNwOzwvc3Bhbj5SZTogTmVnYXRpdmUgZGlz YWdncmVnYXRpb24gZmVhdHVyZSBndWlkZTx1IGNsYXNzPSIiPjwvdT48dSBjbGFzcz0iIj48L3U+ PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAx cHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0i Ij4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIi PjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4w MDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFz cz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNz PSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxibG9ja3F1b3Rl IHN0eWxlPSJtYXJnaW4tdG9wOjVwdDttYXJnaW4tYm90dG9tOjVwdCIgY2xhc3M9IiI+DQo8ZGl2 IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXpl OjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFw dCIgY2xhc3M9IiI+T24gTWF5IDE0LCAyMDIwLCBhdCA4OjUzIEFNLCBQYXNjYWwgVGh1YmVydCAo cHRodWJlcnQpICZsdDs8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOnB0aHViZXJ0QGNpc2NvLmNvbSIg c3R5bGU9ImNvbG9yOnB1cnBsZTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIiB0YXJnZXQ9Il9i bGFuayIgY2xhc3M9IiI+cHRodWJlcnRAY2lzY28uY29tPC9hPjwvZm9udD4mZ3Q7DQogd3JvdGU6 PHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHls ZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2Fs aWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmki IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9 IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPGRpdiBj bGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZTox MXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXpl PSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQi IGNsYXNzPSIiPlRoaXMgZG9lcyBub3Qgc2hvdyBiZWNhdXNlIG9uIHlvdXIgZmlyc3QgYnJlYWth Z2UgeW91IHVzZSB0aGUgcG9zaXRpdmUgZGlzYWcuIElmIHlvdSBzdGljayB0byB0aGUgbG9naWMg eW91IHVzZWQgYXQgdGhlIGJlZ2lubmluZywgdGhhdCBpcyBwaWNrIGFuIGV4YW1wbGUgd2hlcmUg cG9zaXRpdmUgYXBwbGllcyBidXQNCiB1c2UgbmVnYXRpdmUsIHRoZW4gb24geW91ciBmaXJzdCBi cmVha2FnZSB5b3XigJlkIHNob3cgdGhhdCB0aGUgbmVnYXRpdmUgZG9lcyBub3QgbmVlZCB0byBn byB0cmFuc2l0aXZlbHkgdG8gdGhlIGxlYWYsIGJlY2F1c2UgdGhlIHNwaW5lIG5vZGVzIHN0aWxs IGhhdmUgc29sdXRpb25zLiBJcyB0aGF0IGEgbG90IG9mIHdvcmsgdG8gY2hhbmdlPzx1IGNsYXNz PSIiPjwvdT48dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPC9i bG9ja3F1b3RlPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtm b250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0K PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMXB0IiBjbGFzcz0iIj48dSBjbGFzcz0iIj48L3U+Jm5ic3A7PHUgY2xhc3M9IiI+PC91 Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2lu OjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5z LXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIi PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+VGhpcyBpcyBleGFjdGx5IHdo YXQgSSB3YXMgdGhpbmtpbmcgYXMgd2VsbC48dSBjbGFzcz0iIj48L3U+PHUgY2xhc3M9IiI+PC91 Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxl PSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxp YnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIg Y2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj48dSBjbGFzcz0i Ij48L3U+Jm5ic3A7PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250 LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZv bnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMXB0IiBjbGFzcz0iIj5NYXliZSBJIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY3VycmVudCBz cGVjaWZpY2F0aW9uIHdpdGggYSBmaW5lLXRvb3RoZWQgY29tYiBhZ2FpbiwgYnV0IG15IChwb3Nz aWJseSBpbmNvcnJlY3QpIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgY3VycmVudCB2ZXJzaW9u IG9mIHRoZSBzcGVjaWZpY2F0aW9uIGlzIHRoYXQNCiB3ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlv biBpcyB1c2VkIChNVVNUIGJlIHVzZWQ/IFNIT1VMRCBiZSB1c2VkPykgaW4gdGhlIOKAnGZpcnN0 IGZhaWx1cmXigJ0gc2NlbmFyaW8uPHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3Nw YW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFy Z2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxz YW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNz PSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91 PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2 IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXpl OjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFw dCIgY2xhc3M9IiI+UGVyc29uYWxseSwgSSBzZWUgbm8gcmVhc29uIHdoeSB3ZSB3b3VsZCBub3Qg YmUgYWJsZSB0byB1c2UgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW5zdGVhZCBvZiBwb3NpdGl2 ZSBkaXNhZ2dyZWdhdGlvbiBpbiB0aGUgZmlyc3QgZmFpbHVyZSBzY2VuYXJpbyBhcyB3ZWxsLjx1 IGNsYXNzPSIiPjwvdT48dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2 Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2Zv bnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8 Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExcHQiIGNsYXNzPSIiPjx1IGNsYXNzPSIiPjwvdT4mbmJzcDs8dSBjbGFzcz0iIj48L3U+ PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGli cmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBj bGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPkluIHRoZSBjb250 ZXh0IG9mIHRoZSB0dXRvcmlhbCwgdGhpcyB3b3VsZCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2YgY2xl YXJseSBkZW1vbnN0cmF0aW5nIHRoZSBwcm9wYWdhdGlvbiBsb2dpYyBtb3JlIGNsZWFybHkuPHUg Y2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9u dC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxm b250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48 L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0i bWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJy aSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNs YXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+QnV0IG1vcmUgaW1w b3J0YW50bHksIGl0IHNlZW1zIHRvIG1lIHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlv biBpcyBpbXBsZW1lbnRlZCwgdGhlcmUgaXMgcmVhbGx5IG5vIHJlYXNvbiB0byB1c2UgcG9zaXRp dmUgZGlzYWdncmVnYXRpb24gYW55d2hlcmUuIEl0IHdvdWxkIGJlIOKAnGNsZWFuZXLigJ0gKGxl c3MNCiBzaWduYWxpbmcpIGFuZCDigJxiZXR0ZXLigJ0gKG5vIGluY2FzdCkgdG8gc2ltcGx5IHVz ZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBldmVyeXdoZXJlLjx1IGNsYXNzPSIiPjwvdT48dSBj bGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4N CjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQt ZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNl PSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIi Pjx1IGNsYXNzPSIiPjwvdT4mbmJzcDs8dSBjbGFzcz0iIj48L3U+PC9zcGFuPjwvZm9udD48L2Rp dj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20gMGNtIDAu MDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJpZiIgY2xh c3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPlNv4oCmLiBJIHdhcyB0aGlua2luZyB0byBhZGQg YSBjb25maWd1cmF0aW9uIGtub2IgdG8gbXkgY29kZSDigJxwb3NpdGl2ZS1vbmx54oCdLCDigJxu ZWdhdGl2ZS1vbmx54oCdLCDigJxwb3NpdGl2ZS1hbmQtbmVnYXRpdmXigJ0sIHdpdGgg4oCcbmVn YXRpdmUtb25seeKAnSBiZWluZyB0aGUgZGVmYXVsdD8gKFNlZW1zIGxpa2UgYSB3YXN0ZSB0bw0K IGhhdmUgY29kZWQgdXAgdGhlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uKS48dSBjbGFzcz0iIj48 L3U+PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xh c3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFw dDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0i MiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBj bGFzcz0iIj48dSBjbGFzcz0iIj48L3U+Jm5ic3A7PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2Zv bnQ+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNt IDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2Vy aWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj5XaGF0IGRvZXMgZXZlcnlvbmUgdGhp bmsgb2YgdGhhdD88dSBjbGFzcz0iIj48L3U+PHUgY2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+ PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBj bSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYi IGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0iIj48dSBjbGFzcz0iIj48L3U+Jm5ic3A7PHUg Y2xhc3M9IiI+PC91Pjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+ DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250LXNpemU6MTFwdDtmb250 LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZvbnQgc2l6ZT0iMiIgZmFj ZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjbGFzcz0i Ij5TaG91bGQgd2UgZ28gZXZlbiBmdXJ0aGVyIGFuZCBzaW1wbHkgcmVtb3ZlIHBvc2l0aXZlIGRp c2FnZ3JlZ2F0aW9uIGZyb20gdGhlIHNwZWM/PHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwv dT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHls ZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2Fs aWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmki IGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9 IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjowY20g MGNtIDAuMDAwMXB0O2ZvbnQtc2l6ZToxMXB0O2ZvbnQtZmFtaWx5OkNhbGlicmksc2Fucy1zZXJp ZiIgY2xhc3M9IiI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIiBjbGFzcz0iIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNsYXNzPSIiPlNob3VsZCB3ZSBoYXZlIG5lZ2F0aXZl IGRpc2FnZ3JlZ2F0aW9uIGFzIGEgY2FwYWJpbGl0eSBpbiB0aGUgY2FwYWJpbGl0eSBuZWdvdGlh dGlvbj8gKFNlZW1zIG5vbi1zZW5zaWNhbCwgZ2l2ZW4gaXQgaXMgc29tZXRoaW5nIHRoYXQgdGhl IHdob2xlIGZhYnJpYyBuZWVkcyB0byBzdXBwb3J0IG9yIG5vdC4pPHUgY2xhc3M9IiI+PC91Pjx1 IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9u dC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZh Y2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9 IiI+PHUgY2xhc3M9IiI+PC91PiZuYnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250Pjwv ZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOjBjbSAwY20g MC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5zLXNlcmlmIiBj bGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+U2hvdWxkIHdlIHRha2UgdGhpcyB0byB0aGUg UklGVCBtYWlsaW5nIGxpc3Q/PHUgY2xhc3M9IiI+PC91Pjx1IGNsYXNzPSIiPjwvdT48L3NwYW4+ PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2lu OjBjbSAwY20gMC4wMDAxcHQ7Zm9udC1zaXplOjExcHQ7Zm9udC1mYW1pbHk6Q2FsaWJyaSxzYW5z LXNlcmlmIiBjbGFzcz0iIj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiIGNsYXNzPSIi PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY2xhc3M9IiI+PHUgY2xhc3M9IiI+PC91PiZu YnNwOzx1IGNsYXNzPSIiPjwvdT48L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46MGNtIDBjbSAwLjAwMDFwdDtmb250 LXNpemU6MTFwdDtmb250LWZhbWlseTpDYWxpYnJpLHNhbnMtc2VyaWYiIGNsYXNzPSIiPg0KPGZv bnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMXB0IiBjbGFzcz0iIj7igJQgQnJ1bm88L3NwYW4+PC9mb250PjwvZGl2Pg0KPC9kaXY+DQo8 L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCjxiciBjbGFzcz0i Ij4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ibG9j a3F1b3RlPg0KPC9kaXY+DQo8YnIgY2xhc3M9IiI+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_D9004CDF38AD4F4BB76C8BECD9669D3Bhotmailcom_-- From nobody Fri May 15 08:55:55 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0405A3A0B20 for ; Thu, 14 May 2020 11:26:59 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.271 X-Spam-Level: X-Spam-Status: No, score=-2.271 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.173, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=juniper.net header.b=1qi9H6HX; dkim=pass (1024-bit key) header.d=juniper.net header.b=J+0titaz Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kh5k_dt8P00Q for ; Thu, 14 May 2020 11:26:55 -0700 (PDT) Received: from mx0b-00273201.pphosted.com (mx0b-00273201.pphosted.com [67.231.152.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7CE253A0B1E for ; Thu, 14 May 2020 11:26:55 -0700 (PDT) Received: from pps.filterd (m0108161.ppops.net [127.0.0.1]) by mx0b-00273201.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 04EIHwxu007163; Thu, 14 May 2020 11:26:52 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=PPS1017; bh=6jq6bE0KHZ3wq5enu+Itug0neN9eylqrzemK+y17mR4=; b=1qi9H6HXLhvtx/KgY2oDArs/ynQImCfAC2FfDkuyYgzqNLuOzaWS6lQGpQk0m362mGhJ Qj07dxarenpGdQdfPCfUSjmRSikVXBswMWopwq3+y623nkZLtP8O81bTP9E1N3ZI7F3a Bm7n1fjwpVpXIx8A0K8Z48xNr0dYwE4AfooVjhGFALz1NBIn9YcPyxXNzfE1ymCWmonS Es3xzIqg5xNHmT50hT4f0UeZulreI7Ok2lta8UpKtatOhEKDIplFXplV9xncGrMcYb6z HsLuTL8QpONY5/h7JkHR+0newyJfS3s2GfnGw7n1o2JubAtY4IsrtAGVCBadHFd7Q2s4 Uw== Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2177.outbound.protection.outlook.com [104.47.56.177]) by mx0b-00273201.pphosted.com with ESMTP id 3100y8cegw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2020 11:26:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X95WSJgWOclOYLI3hwT3EaQlszn1nmgfSovo/FHAC3jSWvTC6KAdui3Nm3towbxIYNOHm09BSf8q88TNzGkhJrSGPW3h5XvLAkGPxQ/vasWeu2x6sD2Li0rAii5NoaaN7VnevIvTayP1ilOQFVk7gdwqBJ50EpjnEKipqqZYxj7LR6cId9+B6HZ4njaZZVzp/SBLzO5yhAOfPxvA2NVLYKpLSBthyHXe22/k12+bbDaAcDp/9AqIF3pj1nHlgwrvSWodXgOKRzK0TjVq4ppcwIyUh3dlQhmJLku9HAGozs7sFkC+RaNKlUId0/DGdFn9MPv+YoL0IpuTpJjjBnGNrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6jq6bE0KHZ3wq5enu+Itug0neN9eylqrzemK+y17mR4=; b=cfNwXjgj/Uxx9tAapwbqclCb+w728A4cR0ve4KE4eln+j+EbkAW2XKaWb3qVxltQpRVI0KtMj9+uXZG1ET3Gu5Qo5mBlq6e3FN9NnMl7X8IgCVrxQSTIUnApKEDudHr3n4vdKlKKrhic9gSGIJQ8AnqzzHuT6pQVSatRkEibQt8Fjmy908Cqkj3h3jCRsDrFwVEqJZWoGjeULbxlUe8BcCg9gYNvMLAm9o7W5g8BsLNG7S9Q1SZiAgb0GH57Hr3s6FF9mJUJ5p90pBj8QBsgXl+xr2T4xYcb+VUnge3j2COOI5T1xhlZr5q65ijSI96i29f0c19ZVnGZwS2d5sWK+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=juniper.net; dmarc=pass action=none header.from=juniper.net; dkim=pass header.d=juniper.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=juniper.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6jq6bE0KHZ3wq5enu+Itug0neN9eylqrzemK+y17mR4=; b=J+0titazUDqsAHjkybl8Fzw9XRV3gw6nvlmjfkkzCay+9jsxOKj1m68a0cEQdwPucz9akCXXTMmIn62OL6Y6I3xLi/QnoRh6WiXfPePjSs6QqkZd+X061B2/hiRVC9w9dy2eXDOW7hHGq5ncIsOdZRsVG4QGnJv4B7G+xljr3wU= Received: from BYAPR05MB4296.namprd05.prod.outlook.com (2603:10b6:a02:f4::20) by BYAPR05MB4968.namprd05.prod.outlook.com (2603:10b6:a03:9c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.11; Thu, 14 May 2020 18:26:49 +0000 Received: from BYAPR05MB4296.namprd05.prod.outlook.com ([fe80::b098:e1a3:a67b:32fc]) by BYAPR05MB4296.namprd05.prod.outlook.com ([fe80::b098:e1a3:a67b:32fc%7]) with mapi id 15.20.3021.010; Thu, 14 May 2020 18:26:49 +0000 From: Antoni Przygienda To: Tony Przygienda , Bruno Rijsman CC: "Pascal Thubert (pthubert)" , "rift@ietf.org" , Melchior Aelmans , Christian Graf , Oliver Steudler , Olivier Vandezande , "tommasocaiazzi@gmail.com" , Jeff Tantsura , "Jeffrey (Zhaohui) Zhang" , "Jeffrey (Zhaohui) Zhang" , Jeffrey Zhang Thread-Topic: Negative disaggregation feature guide Thread-Index: AQHWKXf3KAQxnPeWzEKUu/2NXiN/taimnciAgADoU4CAACXuAIAAC7mAgAAUZ4CAABVhAIAAAYuA//+O0AA= Date: Thu, 14 May 2020 18:26:49 +0000 Message-ID: References: <068412A2-1E85-4327-A50E-F6138C6D7EC0@hotmail.com> <9E819710-00BC-4285-9146-F655CAA7E1CA@hotmail.com> <432D1BE9-8BC3-4627-ACA5-72AA52A79C8C@hotmail.com> <4272B942-2C6F-4974-8515-E295A6BFF757@hotmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Enabled=true; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Name=Juniper Business Use Only; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Enabled=true; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_SiteId=bea78b3c-4cdb-4130-854a-1d193232e5f4; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_ContentBits=0; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_Method=Standard; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_ActionId=7cd9825d-dce8-4d11-905f-0000bcae208c; MSIP_Label_9784d817-3396-4a4f-b60c-3ef6b345fe55_SetDate=2020-05-14T18:20:37Z; user-agent: Microsoft-MacOutlook/16.37.20050303 authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=juniper.net; x-originating-ip: [66.129.242.13] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: e22212e4-f4f7-4204-89a8-08d7f8345e33 x-ms-traffictypediagnostic: BYAPR05MB4968: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 040359335D x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: USyRYo6aZz21YC1uqdOfGLmq1avYwXcMEUSZVuChpo2cyoROY9++SfWwI5SNSVyFxYbgDIyXFa6BQymxLuYfx4MuIko6EfRYteUcoB58WKqd6aPAYAcYOJ6Ez6WtRXOdjpEM5rr5xL3Trk9dRQt2lYYqayufajyJF5eZoTks1Vy4Y6uzvpHIkss5rRCE1KBLIVpeiWzyYop80Z57M8oiZQkcTtb/ePkvY9vvqex0xPjvNE1Hqbnq48ruVcL34eMo3AOyCFhkuHxAdATlPqciD7kEMTg5SGOt0hrq46ceQmSQRiMoE8rS3LiaOUaA/VLwlqawfyTZvDXTn2uFZIQW8Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR05MB4296.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(136003)(346002)(396003)(39860400002)(376002)(366004)(186003)(8936002)(2906002)(91956017)(71200400001)(2616005)(45080400002)(478600001)(33656002)(5660300002)(26005)(4326008)(6512007)(316002)(3480700007)(66476007)(54906003)(6506007)(76116006)(8676002)(53546011)(6486002)(110136005)(66446008)(66556008)(66946007)(86362001)(36756003)(64756008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: CDyG6gPzoOioWuia+I2J/hdWg2TbUbJVTM454Cq9WNMT7B8CsMeHdyH8+kmhMn9pFSBkbpDrqmRkyaveoCmdz+l6YmgU1rOkI2JG1x2mzmLPbcMbAlfgZ3vmqrRPgjCXUYgRuTXwtcnuQ0DwyixtxjBQRIa8N1i0pAhEAa4q1NvM/7qkJYk4apD0muC0YV7m6Uk22lpfdSotnHC/aA2pLHUqbYVAEaOw5i3o4YNu0IEHbRWL+MvLk2BtSBhCx4UZLc5mwrSe8/WjvGeQgnxt/Xa70pIrgwzl5pd4VVBmOAP9mm13y8npu4yITHzqP0YLTcUvJX3JQ0PgQ89sjfCfq3pVFY53GnmsByYJJkb59iIR4LsYASof9A0Ih5JwuW76mMhNp6Yi1zvqkXBKuYhW20pk3kBx9XjGo1S8RuP4sN/0X9ceVWMlDHsZzel0H629l785J5t9eH3US94rbrTQm5s+KSbe84kxiMla75zN3pCuGZtQNjuMSqpRiOuT9LIk Content-Type: multipart/alternative; boundary="_000_A967D4CC107D4707A2770BE8394576FBjunipernet_" MIME-Version: 1.0 X-OriginatorOrg: juniper.net X-MS-Exchange-CrossTenant-Network-Message-Id: e22212e4-f4f7-4204-89a8-08d7f8345e33 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 May 2020 18:26:49.5879 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: JXtbl0c/qtFXXgYPAZgUpQK9fBtnCyRFJNkBT3hB6usUN28+rkqeNqzXVUv4w18k X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR05MB4968 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216, 18.0.676 definitions=2020-05-14_06:2020-05-14, 2020-05-14 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 impostorscore=0 bulkscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 lowpriorityscore=0 malwarescore=0 adultscore=0 priorityscore=1501 cotscore=-2147483648 spamscore=0 clxscore=1011 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005140162 Archived-At: X-Mailman-Approved-At: Fri, 15 May 2020 08:55:54 -0700 Subject: Re: [Rift] Negative disaggregation feature guide X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 18:26:59 -0000 --_000_A967D4CC107D4707A2770BE8394576FBjunipernet_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SW4gYSBwcm9iYWJseSBtb3JlIGRldGFpbGVkIHdheSB3aXRoIGEgbGl0dGxlIHN0b25lIHRhYmxl dCBJIHN1Z2dlc3Qg8J+YiQ0KDQoNCiAgMS4gIFlvdSBTSEFMTCBuZWdhdGl2ZWx5IGRpc2FnZ3Jl Z2F0ZSBvbmx5IGlmIHlvdeKAmXJlIFRvRiBhbmQgaGF2ZSBob3Jpem9udGFsIGxpbmtzIChyaW5n KQ0KICAyLiAgWW91IFNIQUxMIHByb3BhZ2F0ZSB0cmFuc2l0aXZlbHkgbmVnYXRpdmUgZGlzYWdn cmVnYXRpb24NCiAgMy4gIFlvdSBTSEFMTCB1c2UgcG9zaXRpdmUgaWYgeW914oCZcmUgbm90IFRv RiBvciBoYXZlIG5vIGhvcml6b250YWwNCg0KT2YgY291cnNlLCBhbnkgdmVuZG9yLCBldmVuIG9w ZW4gc291cmNlZCBvbmUgY2FuIGFkZCBhbnkgZmxhdm9yIG9mIGtub2JzIHRoYXQgbWFrZXMgdGhl aXIgZGlzaCB1bmlxdWUgZXZlbiBpZiBpdCBicmVha3MgdGhlIHNwZWMgc3RyaWN0bHkgc3BlYWtp bmcg4oCmIFNvIGRpZCBJIPCfmIkNCg0KLS0tIHRvbnkNCg0KRnJvbTogVG9ueSBQcnp5Z2llbmRh IDx0b255c2lldGZAZ21haWwuY29tPg0KRGF0ZTogVGh1cnNkYXksIE1heSAxNCwgMjAyMCBhdCAx MToxMiBBTQ0KVG86IEJydW5vIFJpanNtYW4gPGJydW5vcmlqc21hbkBob3RtYWlsLmNvbT4NCkNj OiAiUGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSIgPHB0aHViZXJ0QGNpc2NvLmNvbT4sICJyaWZ0 QGlldGYub3JnIiA8cmlmdEBpZXRmLm9yZz4sIE1lbGNoaW9yIEFlbG1hbnMgPG1hZWxtYW5zQGp1 bmlwZXIubmV0PiwgQ2hyaXN0aWFuIEdyYWYgPGNncmFmQGp1bmlwZXIubmV0PiwgT2xpdmVyIFN0 ZXVkbGVyIDxvc3RldWRsZXJAanVuaXBlci5uZXQ+LCBPbGl2aWVyIFZhbmRlemFuZGUgPG92YW5k ZXphbmRlQGp1bmlwZXIubmV0PiwgQW50b25pIFByenlnaWVuZGEgPHByekBqdW5pcGVyLm5ldD4s ICJ0b21tYXNvY2FpYXp6aUBnbWFpbC5jb20iIDx0b21tYXNvY2FpYXp6aUBnbWFpbC5jb20+LCBK ZWZmIFRhbnRzdXJhIDxqZWZmdGFudC5pZXRmQGdtYWlsLmNvbT4sIFpoYW9odWkgWmhhbmcgPHp6 aGFuZ0BqdW5pcGVyLm5ldD4sIFpoYW9odWkgWmhhbmcgPHp6aGFuZ0BqdW5pcGVyLm5ldD4sIEpl ZmZyZXkgWmhhbmcgPHp6aGFuZzIwMDNAZ21haWwuY29tPg0KU3ViamVjdDogUmU6IE5lZ2F0aXZl IGRpc2FnZ3JlZ2F0aW9uIGZlYXR1cmUgZ3VpZGUNCg0KW0V4dGVybmFsIEVtYWlsLiBCZSBjYXV0 aW91cyBvZiBjb250ZW50XQ0KDQogbXkgdGhvdWdodHM6DQoNCm5lZ2F0aXZlIGlzIHNlcmlvdXNs eSBtb3JlIGNvbXBsZXggdG8gIGltcGxlbWVudCBhbmQgdW5kZXJzdGFuZCBvcGVyYXRpb25hbGx5 IGFuZCBvbmx5IG5lZWRlZCBvbiBtdWx0aS1wbGFuZSBmYWJyaWNzLCB0YWh0J3Mgd2h5IHBvc2l0 aXZlIGlzIEtJU1MgOy0pIEFsc28sIG5lZ2F0aXZlIGFsd2F5cyBmb3JjZXMgeW91IHRvIHJpbmcg dGhlIHRvcCBvZiB0aGUgZmFicmljIHdoaWNoIGluIHNpbmdsZSBwbGFuZSBkZXNpZ24gaXMgYW4g dW5uZWNlc3NhcnkgcmVxdWlyZW1lbnQuDQoNCkkgZm9yZXNlZSB2ZW5kb3JzIG5vdCBpbXBsZW1l bnRpbmcgbmVnYXRpdmUgZm9yIHNpbXBsaWNpdHksIHZlcnkgc21hbGwgZm9vdHByaW50IGZhYnJp Y3MuDQoNCnRoZSBkaXNjdXNzaW9uIGFib3V0IGNhcGFiaWxpdHkgYWR2ZXJ0aXNlbWVudCBpcyBp bnRlcmVzdGluZywgd2UgY2FuIGp1c3QgYWRkIG9uZSBiaXQgb24gdGhlIG5vZGUgY2FwYWJpbGl0 aWVzIGVsZW1lbnQsIG1ha2UgaXQgb3B0aW9uYWwgYW5kIGRlZmF1bHQgdHJ1ZS4NCg0KT2YgY291 cnNlIGFuIGltcGxlbWVudGF0aW9uIHRhaHQgdW5kZXJzdGFuZHMgdGhhdCBhbGwgaW52b2x2ZWQg bm9kZXMgdW5kZXJzdGFuZCBuZWdhdGl2ZSBpcyBmcmVlIHRvIHVzZSBuZWdhdGl2ZSBpbnN0ZWFk IG9mIHBvc2l0aXZlIHRoZW4uDQoNCi0tIHRvbnkNCg0KT24gVGh1LCBNYXkgMTQsIDIwMjAgYXQg MTE6MDUgQU0gQnJ1bm8gUmlqc21hbiA8YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tPG1haWx0bzpi cnVub3JpanNtYW5AaG90bWFpbC5jb20+PiB3cm90ZToNCkJyb2FkZW5pbmcgYSBkaXNjdXNzaW9u IG9uIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIHRvIHRoZSBSSUZUIG1haWxpbmcgbGlzdC4NCg0K Tm93IHRoYXQgd2UgaGF2ZSBpbXBsZW1lbnRlZCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpbiBS SUZULVB5dGhvbiwgYW5kIG5vdyB0aGF0IHdlIGFyZSBnZXR0aW5nIHNvbWUgb3BlcmF0aW9uYWwg ZXhwZXJpZW5jZSB3aXRoIGl0LCB0aGUgZm9sbG93aW5nIGlzIGJlY29taW5nIG1vcmUgYW5kIG1v cmUgZXZpZGVudDoNCg0KSXQgc2VlbXMgdG8gdXMgKEJydW5vIGFuZCBQYXNjYWwsIGZvciBub3cp IHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpcyBpbXBsZW1lbnRlZCwgdGhlcmUg aXMgcmVhbGx5IG5vIG5lZWQgZm9yIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFueSBtb3JlLg0K DQpFdmVyeSB1c2UgY2FzZSB0aGF0IGNhbiBiZSBzb2x2ZWQgYnkgcG9zaXRpdmUgZGlzYWdncmVn YXRpb24gY2FuIChhcyBmYXIgYXMgd2UgY2FuIGN1cnJlbnRseSB0ZWxsKSBhbHNvIGJlIHNvbHZl ZCBieSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbi4NCg0KRnVydGhlcm1vcmUsIG5lZ2F0aXZlIGRp c2FnZ3JlZ2F0aW9uIHNvbHZlcyB0aGUgcHJvYmxlbXMgaW4gYSBmYXIgc2ltcGxlciBhbmQgbW9y ZSBlbGVnYW50IHdheTogdGhlcmUgYXJlIGZld2VyIGFkdmVydGlzaW5nIG5vZGVzIGFuZCBmZXdl ciBhZHZlcnRpc2VkIFRJRXMgaW52b2x2ZWQsIGFuZCB3ZSBkb27igJl0IGhhdmUgdGhlIHN5bmNo cm9uaXphdGlvbiBpc3N1ZSB0aGF0IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGhhcyB0aGF0IHBv dGVudGlhbGx5IGNhdXNlcyBpbmNhc3QgcHJvYmxlbXMuDQoNClRodXMsIGF0IHRoZSB2ZXJ5IGxl YXN0LCBpdCBtYWtlcyBzZW5zZSB0byByZWNvbW1lbmQgdGhhdCBpbiBhIGdpdmVuIGZhYnJpYyB3 ZSB1c2UgZWl0aGVyIG9ubHkgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gb25seSBvciBwb3NpdGl2 ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5LCB3aXRoIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGJlaW5n IHRoZSBkZWZhdWx0Lg0KDQpJZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24g YXJlIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkgaW4gb25lIGFuZCB0aGUgc2FtZSBmYWJyaWMsIGV2 ZXJ5dGhpbmcgc3RpbGwgd29ya3MgZmluZSBhcyBmYXIgYXMgd2UgY2FuIHNlZS4gQnV0IHRoZXJl IGFyZSBzb21lIOKAnGludGVyZXN0aW5n4oCdIGludGVyYWN0aW9ucyB0aGF0IG1ha2UgdGhpbmdz IHVubmVjZXNzYXJpbHkgY29tcGxleCBhbmQgcG90ZW50aWFsbHkgZnJhZ2lsZS4NCg0KSWYgc3Vw cG9ydCBmb3IgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaXMgbWFuZGF0b3J5LCBhbmQgaWYgb3Vy IGFzc2Vzc21lbnQgdGhhdCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBjYW4gc29sdmUgYWxsIHVz ZSBjYXNlcyBpcyBjb3JyZWN0LCB0aGVuIHdlIGNvdWxkIGdvIG9uZSBib2xkIHN0ZXAgZnVydGhl ciBhbmQgY29tcGxldGVseSByZW1vdmUgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gZnJvbSB0aGUg c3BlY2lmaWNhdGlvbi4NCg0KVGhvdWdodHM/DQoNCuKAlCBCcnVubw0KDQoNCk9uIE1heSAxNCwg MjAyMCwgYXQgMTA6NDggQU0sIFBhc2NhbCBUaHViZXJ0IChwdGh1YmVydCkgPHB0aHViZXJ0QGNp c2NvLmNvbTxtYWlsdG86cHRodWJlcnRAY2lzY28uY29tPj4gd3JvdGU6DQoNCkhlbGxvIEJydW5v Og0KDQpJIGxpa2UgeW91ciBuZWdhdGl2ZS1vbmx5IGRlZmF1bHQgYmVjYXVzZSBpdCBpcyBwcm9i YWJseSB0aGUgc2FmZXN0LiBMZXQgbWUgZWxhYm9yYXRlLi4NCg0KcGFydGl0aW9uaW5nIHNhdmVz IGEgbG90IG1vcmUgcG9ydHMgcGVyIFRvRiBub2RlIHRoYW4gdGhlIHJpbmcgY29zdCBzbyBpdCBk b2VzIG5vdCBtYXR0ZXIuDQoNCklmIHlvdSBlbmFibGUgbmVnYXRpdmUsIHRoZXJl4oCZcyBubyBw b2ludCBpbiBkb2luZyBhbnkgcG9zaXRpdmUgYXQgYWxsLCBpcyB0aGVyZT8gU28gd2hhdCBkbyB3 ZSB0cnkgdG8gc2F2ZSBieSBjb21iaW5pbmc/IEluIHlvdXIgZXhhbXBsZSwgSSBndWVzcyB0aGF0 IHN1cGVyIDEgMiBoYWQgdG8gcmV0cmFjdCB0aGUgcG9zaXRpdmUgZGlzYWcgYW5kIHRoZW4gZG8g bmVnYXRpdmUgaW5zdGVhZCB3aGVuIHRoZSBsaW5rIHRvIHNwaW5lIDEgMSBmZWxsLiBXYXMgdGhh dCBub3QgYSBiaXQgY29tcGxleCBhbmQgZXJyb3IgcHJvbmU/DQoNCkFsc28gSeKAmW0gbm90IGNs ZWFyIGhvdyB3ZSBjYW4gYWx3YXlzIGRlY2lkZSB0aGF0IGR5bmFtaWNhbGx5IGFuZCBJIGRvIG5v dCBiZWxpZXZlIHRoYXQgd2Ugc3BlY2lmaWVkIHRoYXQuIFNvIEkgdW5kZXJzdGFuZCB0aGF0IGl0 4oCZcyBtb3JlIGxpa2UgYSB1c2UgY2FzZSB0aGluZ3ksIGxpa2UgYSBjb25maWd1cmF0aW9uIHRo YXQgd291bGQgYmUgYWRhcHRlZCB0byB0aGUgdXNlIGNhc2UuDQoNCj0+IGRvIG5vdCBjb25maWd1 cmUgYm90aCBhdCB0aGUgc2FtZSB0aW1lIHVzZSBlaXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmUg ZGlzYWcuDQoNCldlIGRvIG5vdCB0cnkgdG8gZG8gcG9zaXRpdmUgZGlzYWcgdHJhbnNpdGl2ZWx5 LiBTbyBpZiB0aGVyZSBpcyBhIG5lZWQgZm9yIHRyYW5zaXRpdmUsIHlvdSBoYXZlIHRvIHVzZSBu ZWdhdGl2ZS4gIEluIGEgbXVsdGlwbGFuZSBjYXNlLCB0aGVyZeKAmXMgdXN1YWxseSAoYXMgaW4g eW91ciBwaWN0dXJlKSBvbmUgVG9QIHBlciBwbGFuZSBpbiBlYWNoIFBvRCwgYW5kIGEgZmlyc3Qg bGluayBmYWlsdXJlIChzYXkgU3BpbmUgMSAxIHRvIGxlYWYgMSAxKSBjYW4gYWxyZWFkeSBjYXVz ZSBhIGZhbGxlbiBsZWFmOiBsZWFmIDEgMSBpcyBubyBtb3JlIHJlYWNoYWJsZSB3aXRoaW4gcGxh bmUgMS4gVGhpcyB0ZWxscyB5b3UgdGhhdCBhbGwgbGVhdmVzIGluIHRoZSBvdGhlciBQb0RzIG11 c3QgYXZvaWQgdGhhdCBwbGFuZSwgYW5kIHRoYXTigJlzIGEgbGVhZiBkZWNpc2lvbjsgd2hpY2gg dGVsbHMgeW91IHRoYXQgeW91IG5lZWQgdG8gcmVjdXJzZSB0cmFuc2l0aXZlbHkgZG93bi4gVGhp cyBpbmRpY2F0ZXMgdGhhdCBuZWdhdGl2ZSBtdXN0IGJlIGFjdGl2YXRlZCBpbiBhIGhpZ2hseSBw YXJ0aXRpb25lZCAobWVhbmluZyBsb3cgcmVkdW5kYW5jeSkgbXVsdGlwbGFuZS4NCg0KU2F5IHdl IHRyeSB0byB1c2UgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gdHJhbnNpdGl2ZWx5IGluIGEgVG9G IHRoYXQgaXMgcGFydGl0aW9uZWQgbGlrZSBpbiBwbGFuZXMsIHlvdeKAmWQgcnVuIGEgcmlzayB0 aGF0IG5vbmUgb2YgdGhlIFRvRiBub2RlcyB0aGF0IGNhbiBzdGlsbCByZWFjaCB0aGUgbGVhZiBj YW4gc2VlICh0aHJvdWdoIHNvdXRoIHJlZmxlY3Rpb24pIHRoZSBUb0Ygbm9kZSB0aGF0IGNhbm5v dCBzbyB0aGV5IGRvIG5vdCBrbm93IHRoZXkgbmVlZCB0byBkaXNhZy4gU28geW91IGVuZCB1cCBu ZWVkaW5nIHRoZSBzYW1lIHJpbmcgYXMgZm9yIG5lZ2F0aXZlLCB0aGUgc291dGhlcm4gcmVmbGVj dGlvbiBiZWNvbWUgbW9zdGx5IHVzZWxlc3MgYW5kIHRoZSBiZW5lZml0cyBvZiBwb3NpdGl2ZSBh cmUgZ29uZS4NCg0KUGFydGl0aW9ubmVkIFRvRiA9PiBuZWdhdGl2ZQ0KDQpJIHRydXN0IHRoYXQg d2UgY2FuIHVzZSBwb3NpdGl2ZSBpbiBhIGhpZ2hseSByZWR1bmRhbnQgYW5kIHN5bW1ldHJpY2Fs IG5vbi1wYXJ0aXRpb25lZCBUb0YuIElmIG5vIG9uZSBjYW4gcmVhY2ggdGhlIGxlYWYgYW55bW9y ZSAobGlrZSBpdOKAmXMgZGVhZCkgd2UgaGF2ZSBubyBpc3N1ZSBzaW5jZSBpdCBzaG91bGQgbm90 IGJlIGRpc2FnZ3JlZ2F0ZWQsIGp1c3QgdXNlIHRoZSBkaXNjYXJkcyByb3V0ZSBhdCBhbnkgVG9G IG5vZGUuIElmIHlvdSBoYXZlIGVub3VnaCByZWR1bmRhbmN5IGFuZCBubyBwYXJ0aXRpb24sICB0 aGVyZSB3aWxsIGFsd2F5cyBiZSBub2RlcyB0aGF0IGNhbiBib3RoIHJlYWNoIGEgbGVhZiBhbmQg ZGlzY292ZXIgdGhhdCBhIHBlZXIgZG9lcyBub3QuDQoNCj0+IFBvc2l0aXZlIGlzIGluZGljYXRl ZCBmb3IgYSB2ZXJ5IHNwZWNpZmljIHVzZSBjYXNlLCBpZGVhbGx5IDIgbGV2ZWxzIGFuZCBmdWxs eSBtZXNoZWQuIE1heWJlIHRoYXTigJlzIGVub3VnaCBkZXBsb3ltZW50cyB0byBqdXN0aWZ5IHRo ZSBmZWF0dXJlIGluIHRoZSBjb2RlLg0KDQpTbyB0aGUgcXVlc3Rpb24gaXMgcmVhbGx5IHRoYXQg Ymx1cnJ5IHpvbmUgYmV0d2VlbiBoaWdobHkgcmVkdW5kYW50IHNpbmdsZSBwbGFuZSBhbmQgaGln aGx5IHBhcnRpdGlvbmVkIG11bHRpcGxhbmUgd2hhdCBzaG91bGQgb25lIGRvPyBJIGJlY29tZXMg YSByaXNrL2JlbmVmaXQganVkZ2VtZW504oCmIElmIG5lZ2F0aXZlIGlzIGltcGxlbWVudGVkIGFu ZCB0aGUgcmluZyBpcyB0aGVyZSwgSeKAmWQgdXNlIGl0LCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5 Lg0KDQpUYWtlIGNhcmUNCg0KUGFzY2FsDQoNCg0KDQpGcm9tOiBCcnVubyBSaWpzbWFuIDxicnVu b3JpanNtYW5AaG90bWFpbC5jb208bWFpbHRvOmJydW5vcmlqc21hbkBob3RtYWlsLmNvbT4+DQpT ZW50OiBqZXVkaSAxNCBtYWkgMjAyMCAxNzozNg0KVG86IFBhc2NhbCBUaHViZXJ0IChwdGh1YmVy dCkgPHB0aHViZXJ0QGNpc2NvLmNvbTxtYWlsdG86cHRodWJlcnRAY2lzY28uY29tPj4NCkNjOiBN ZWxjaGlvciBBZWxtYW5zIDxtYWVsbWFuc0BqdW5pcGVyLm5ldDxtYWlsdG86bWFlbG1hbnNAanVu aXBlci5uZXQ+PjsgQ2hyaXN0aWFuIEdyYWYgPGNncmFmQGp1bmlwZXIubmV0PG1haWx0bzpjZ3Jh ZkBqdW5pcGVyLm5ldD4+OyBPbGl2ZXIgU3RldWRsZXIgPG9zdGV1ZGxlckBqdW5pcGVyLm5ldDxt YWlsdG86b3N0ZXVkbGVyQGp1bmlwZXIubmV0Pj47IE9saXZpZXIgVmFuZGV6YW5kZSA8b3ZhbmRl emFuZGVAanVuaXBlci5uZXQ8bWFpbHRvOm92YW5kZXphbmRlQGp1bmlwZXIubmV0Pj47IFRvbnkg UHJ6eWdpZW5kYSA8dG9ueXNpZXRmQGdtYWlsLmNvbTxtYWlsdG86dG9ueXNpZXRmQGdtYWlsLmNv bT4+OyBBbnRvbmkgUHJ6eWdpZW5kYSA8cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8 bWFpbHRvOnByej00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPj47IHRvbW1hc29jYWlhenpp QGdtYWlsLmNvbTxtYWlsdG86dG9tbWFzb2NhaWF6emlAZ21haWwuY29tPjsgSmVmZiBUYW50c3Vy YSA8amVmZnRhbnQuaWV0ZkBnbWFpbC5jb208bWFpbHRvOmplZmZ0YW50LmlldGZAZ21haWwuY29t Pj47IEplZmZyZXkgKFpoYW9odWkpIFpoYW5nIDx6emhhbmdAanVuaXBlci5uZXQ8bWFpbHRvOnp6 aGFuZ0BqdW5pcGVyLm5ldD4+OyBKZWZmcmV5IChaaGFvaHVpKSBaaGFuZyA8enpoYW5nPTQwanVu aXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8bWFpbHRvOnp6aGFuZz00MGp1bmlwZXIubmV0QGRtYXJj Li5pZXRmLm9yZz4+OyBKZWZmcmV5IFpoYW5nIDx6emhhbmcyMDAzQGdtYWlsLmNvbTxtYWlsdG86 enpoYW5nMjAwM0BnbWFpbC5jb20+Pg0KU3ViamVjdDogUmU6IE5lZ2F0aXZlIGRpc2FnZ3JlZ2F0 aW9uIGZlYXR1cmUgZ3VpZGUNCg0KDQpPbiBNYXkgMTQsIDIwMjAsIGF0IDg6NTMgQU0sIFBhc2Nh bCBUaHViZXJ0IChwdGh1YmVydCkgPHB0aHViZXJ0QGNpc2NvLmNvbTxtYWlsdG86cHRodWJlcnRA Y2lzY28uY29tPj4gd3JvdGU6DQoNClRoaXMgZG9lcyBub3Qgc2hvdyBiZWNhdXNlIG9uIHlvdXIg Zmlyc3QgYnJlYWthZ2UgeW91IHVzZSB0aGUgcG9zaXRpdmUgZGlzYWcuIElmIHlvdSBzdGljayB0 byB0aGUgbG9naWMgeW91IHVzZWQgYXQgdGhlIGJlZ2lubmluZywgdGhhdCBpcyBwaWNrIGFuIGV4 YW1wbGUgd2hlcmUgcG9zaXRpdmUgYXBwbGllcyBidXQgdXNlIG5lZ2F0aXZlLCB0aGVuIG9uIHlv dXIgZmlyc3QgYnJlYWthZ2UgeW914oCZZCBzaG93IHRoYXQgdGhlIG5lZ2F0aXZlIGRvZXMgbm90 IG5lZWQgdG8gZ28gdHJhbnNpdGl2ZWx5IHRvIHRoZSBsZWFmLCBiZWNhdXNlIHRoZSBzcGluZSBu b2RlcyBzdGlsbCBoYXZlIHNvbHV0aW9ucy4gSXMgdGhhdCBhIGxvdCBvZiB3b3JrIHRvIGNoYW5n ZT8NCg0KVGhpcyBpcyBleGFjdGx5IHdoYXQgSSB3YXMgdGhpbmtpbmcgYXMgd2VsbC4NCg0KTWF5 YmUgSSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGN1cnJlbnQgc3BlY2lmaWNhdGlvbiB3aXRoIGEg ZmluZS10b290aGVkIGNvbWIgYWdhaW4sIGJ1dCBteSAocG9zc2libHkgaW5jb3JyZWN0KSB1bmRl cnN0YW5kaW5nIGlzIHRoYXQgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlv biBpcyB0aGF0IHdlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIHVzZWQgKE1VU1QgYmUgdXNl ZD8gU0hPVUxEIGJlIHVzZWQ/KSBpbiB0aGUg4oCcZmlyc3QgZmFpbHVyZeKAnSBzY2VuYXJpby4N Cg0KUGVyc29uYWxseSwgSSBzZWUgbm8gcmVhc29uIHdoeSB3ZSB3b3VsZCBub3QgYmUgYWJsZSB0 byB1c2UgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW5zdGVhZCBvZiBwb3NpdGl2ZSBkaXNhZ2dy ZWdhdGlvbiBpbiB0aGUgZmlyc3QgZmFpbHVyZSBzY2VuYXJpbyBhcyB3ZWxsLg0KDQpJbiB0aGUg Y29udGV4dCBvZiB0aGUgdHV0b3JpYWwsIHRoaXMgd291bGQgaGF2ZSB0aGUgYWR2YW50YWdlIG9m IGNsZWFybHkgZGVtb25zdHJhdGluZyB0aGUgcHJvcGFnYXRpb24gbG9naWMgbW9yZSBjbGVhcmx5 Lg0KDQpCdXQgbW9yZSBpbXBvcnRhbnRseSwgaXQgc2VlbXMgdG8gbWUgdGhhdCBvbmNlIG5lZ2F0 aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIGltcGxlbWVudGVkLCB0aGVyZSBpcyByZWFsbHkgbm8gcmVh c29uIHRvIHVzZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhbnl3aGVyZS4gSXQgd291bGQgYmUg 4oCcY2xlYW5lcuKAnSAobGVzcyBzaWduYWxpbmcpIGFuZCDigJxiZXR0ZXLigJ0gKG5vIGluY2Fz dCkgdG8gc2ltcGx5IHVzZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBldmVyeXdoZXJlLg0KDQpT b+KApi4gSSB3YXMgdGhpbmtpbmcgdG8gYWRkIGEgY29uZmlndXJhdGlvbiBrbm9iIHRvIG15IGNv ZGUg4oCccG9zaXRpdmUtb25seeKAnSwg4oCcbmVnYXRpdmUtb25seeKAnSwg4oCccG9zaXRpdmUt YW5kLW5lZ2F0aXZl4oCdLCB3aXRoIOKAnG5lZ2F0aXZlLW9ubHnigJ0gYmVpbmcgdGhlIGRlZmF1 bHQ/IChTZWVtcyBsaWtlIGEgd2FzdGUgdG8gaGF2ZSBjb2RlZCB1cCB0aGUgcG9zaXRpdmUgZGlz YWdncmVnYXRpb24pLg0KDQpXaGF0IGRvZXMgZXZlcnlvbmUgdGhpbmsgb2YgdGhhdD8NCg0KU2hv dWxkIHdlIGdvIGV2ZW4gZnVydGhlciBhbmQgc2ltcGx5IHJlbW92ZSBwb3NpdGl2ZSBkaXNhZ2dy ZWdhdGlvbiBmcm9tIHRoZSBzcGVjPw0KDQpTaG91bGQgd2UgaGF2ZSBuZWdhdGl2ZSBkaXNhZ2dy ZWdhdGlvbiBhcyBhIGNhcGFiaWxpdHkgaW4gdGhlIGNhcGFiaWxpdHkgbmVnb3RpYXRpb24/IChT ZWVtcyBub24tc2Vuc2ljYWwsIGdpdmVuIGl0IGlzIHNvbWV0aGluZyB0aGF0IHRoZSB3aG9sZSBm YWJyaWMgbmVlZHMgdG8gc3VwcG9ydCBvciBub3QuKQ0KDQpTaG91bGQgd2UgdGFrZSB0aGlzIHRv IHRoZSBSSUZUIG1haWxpbmcgbGlzdD8NCg0K4oCUIEJydW5vDQoNCg== --_000_A967D4CC107D4707A2770BE8394576FBjunipernet_ Content-Type: text/html; charset="utf-8" Content-ID: <2216B77CD4999C449D9C2F77E1289A56@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4 bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l dGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQg bWVkaXVtKSI+DQo8c3R5bGU+PCEtLQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFj ZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2 IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToy IDE1IDUgMiAyIDIgNCAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkxhdG87DQoJ cGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDM7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWls eTpBdmVuaXItQm9vazsNCglwYW5vc2UtMToyIDAgNSAzIDIgMCAwIDIgMCAzO30NCi8qIFN0eWxl IERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFs DQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMS4w cHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0KYTpsaW5rLCBzcGFuLk1z b0h5cGVybGluaw0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6Ymx1ZTsNCgl0ZXh0 LWRlY29yYXRpb246dW5kZXJsaW5lO30NCnAuTXNvTGlzdFBhcmFncmFwaCwgbGkuTXNvTGlzdFBh cmFncmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgNCgl7bXNvLXN0eWxlLXByaW9yaXR5OjM0Ow0K CW1hcmdpbi10b3A6MGluOw0KCW1hcmdpbi1yaWdodDowaW47DQoJbWFyZ2luLWJvdHRvbTowaW47 DQoJbWFyZ2luLWxlZnQ6LjVpbjsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJZm9udC1zaXpl OjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjt9DQpzcGFuLkVtYWls U3R5bGUxOQ0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsNCglmb250LWZhbWlseToi Q2FsaWJyaSIsc2Fucy1zZXJpZjsNCgljb2xvcjp3aW5kb3d0ZXh0O30NCi5Nc29DaHBEZWZhdWx0 DQoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCWZvbnQtc2l6ZToxMC4wcHQ7fQ0KQHBh Z2UgV29yZFNlY3Rpb24xDQoJe3NpemU6OC41aW4gMTEuMGluOw0KCW1hcmdpbjoxLjBpbiAxLjBp biAxLjBpbiAxLjBpbjt9DQpkaXYuV29yZFNlY3Rpb24xDQoJe3BhZ2U6V29yZFNlY3Rpb24xO30N Ci8qIExpc3QgRGVmaW5pdGlvbnMgKi8NCkBsaXN0IGwwDQoJe21zby1saXN0LWlkOjY0NTg4OTgy ODsNCgltc28tbGlzdC10eXBlOmh5YnJpZDsNCgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTEzNDY2 MTg3NTggNjc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTUgNjc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3 MTUgNjc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTU7fQ0KQGxpc3QgbDA6bGV2ZWwxDQoJe21zby1s ZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0 ZXh0LWluZGVudDotLjI1aW47fQ0KQGxpc3QgbDA6bGV2ZWwyDQoJe21zby1sZXZlbC1udW1iZXIt Zm9ybWF0OmFscGhhLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZl bC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47fQ0KQGxpc3QgbDA6 bGV2ZWwzDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZl bC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJdGV4 dC1pbmRlbnQ6LTkuMHB0O30NCkBsaXN0IGwwOmxldmVsNA0KCXttc28tbGV2ZWwtdGFiLXN0b3A6 bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4y NWluO30NCkBsaXN0IGwwOmxldmVsNQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDphbHBoYS1s b3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0 aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluO30NCkBsaXN0IGwwOmxldmVsNg0KCXttc28t bGV2ZWwtbnVtYmVyLWZvcm1hdDpyb21hbi1sb3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9u ZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOnJpZ2h0Ow0KCXRleHQtaW5kZW50Oi05LjBw dDt9DQpAbGlzdCBsMDpsZXZlbDcNCgl7bXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxl dmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjt9DQpAbGlzdCBs MDpsZXZlbDgNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YWxwaGEtbG93ZXI7DQoJbXNvLWxl dmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRl eHQtaW5kZW50Oi0uMjVpbjt9DQpAbGlzdCBsMDpsZXZlbDkNCgl7bXNvLWxldmVsLW51bWJlci1m b3JtYXQ6cm9tYW4tbG93ZXI7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVs LW51bWJlci1wb3NpdGlvbjpyaWdodDsNCgl0ZXh0LWluZGVudDotOS4wcHQ7fQ0Kb2wNCgl7bWFy Z2luLWJvdHRvbTowaW47fQ0KdWwNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KLS0+PC9zdHlsZT4N CjwvaGVhZD4NCjxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVlIiB2bGluaz0icHVycGxlIj4N CjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JbiBhIHBy b2JhYmx5IG1vcmUgZGV0YWlsZWQgd2F5IHdpdGggYSBsaXR0bGUgc3RvbmUgdGFibGV0IEkgc3Vn Z2VzdA0KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0FwcGxlIENvbG9yIEVtb2ppJnF1 b3Q7Ij4mIzEyODUyMTs8L3NwYW4+ICZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8b2wgc3R5bGU9Im1hcmdpbi10b3A6MGlu IiBzdGFydD0iMSIgdHlwZT0iMSI+DQo8bGkgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxl PSJtYXJnaW4tbGVmdDowaW47bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPllvdSBTSEFMTCBuZWdh dGl2ZWx5IGRpc2FnZ3JlZ2F0ZSBvbmx5IGlmIHlvdeKAmXJlIFRvRiBhbmQgaGF2ZSBob3Jpem9u dGFsIGxpbmtzIChyaW5nKTxvOnA+PC9vOnA+PC9saT48bGkgY2xhc3M9Ik1zb0xpc3RQYXJhZ3Jh cGgiIHN0eWxlPSJtYXJnaW4tbGVmdDowaW47bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPllvdSBT SEFMTCBwcm9wYWdhdGUgdHJhbnNpdGl2ZWx5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uPG86cD48 L286cD48L2xpPjxsaSBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0 OjBpbjttc28tbGlzdDpsMCBsZXZlbDEgbGZvMSI+WW91IFNIQUxMIHVzZSBwb3NpdGl2ZSBpZiB5 b3XigJlyZSBub3QgVG9GIG9yIGhhdmUgbm8gaG9yaXpvbnRhbDxvOnA+PC9vOnA+PC9saT48L29s Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj5PZiBjb3Vyc2UsIGFueSB2ZW5kb3IsIGV2ZW4gb3BlbiBzb3VyY2VkIG9uZSBj YW4gYWRkIGFueSBmbGF2b3Igb2Yga25vYnMgdGhhdCBtYWtlcyB0aGVpciBkaXNoIHVuaXF1ZSBl dmVuIGlmIGl0IGJyZWFrcyB0aGUgc3BlYyBzdHJpY3RseSBzcGVha2luZyDigKYgU28gZGlkIEkN CjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtBcHBsZSBDb2xvciBFbW9qaSZxdW90OyI+ JiMxMjg1MjE7PC9zcGFuPiA8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxv OnA+Jm5ic3A7PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+LS0tIHRvbnkgPG86cD48 L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxk aXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0I1QzRERiAxLjBwdDtwYWRk aW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOmJsYWNrIj5Gcm9tOiA8L3NwYW4+PC9iPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOmJsYWNrIj5Ub255IFByenlnaWVuZGEgJmx0 O3RvbnlzaWV0ZkBnbWFpbC5jb20mZ3Q7PGJyPg0KPGI+RGF0ZTogPC9iPlRodXJzZGF5LCBNYXkg MTQsIDIwMjAgYXQgMTE6MTIgQU08YnI+DQo8Yj5UbzogPC9iPkJydW5vIFJpanNtYW4gJmx0O2Jy dW5vcmlqc21hbkBob3RtYWlsLmNvbSZndDs8YnI+DQo8Yj5DYzogPC9iPiZxdW90O1Bhc2NhbCBU aHViZXJ0IChwdGh1YmVydCkmcXVvdDsgJmx0O3B0aHViZXJ0QGNpc2NvLmNvbSZndDssICZxdW90 O3JpZnRAaWV0Zi5vcmcmcXVvdDsgJmx0O3JpZnRAaWV0Zi5vcmcmZ3Q7LCBNZWxjaGlvciBBZWxt YW5zICZsdDttYWVsbWFuc0BqdW5pcGVyLm5ldCZndDssIENocmlzdGlhbiBHcmFmICZsdDtjZ3Jh ZkBqdW5pcGVyLm5ldCZndDssIE9saXZlciBTdGV1ZGxlciAmbHQ7b3N0ZXVkbGVyQGp1bmlwZXIu bmV0Jmd0OywgT2xpdmllciBWYW5kZXphbmRlICZsdDtvdmFuZGV6YW5kZUBqdW5pcGVyLm5ldCZn dDssDQogQW50b25pIFByenlnaWVuZGEgJmx0O3ByekBqdW5pcGVyLm5ldCZndDssICZxdW90O3Rv bW1hc29jYWlhenppQGdtYWlsLmNvbSZxdW90OyAmbHQ7dG9tbWFzb2NhaWF6emlAZ21haWwuY29t Jmd0OywgSmVmZiBUYW50c3VyYSAmbHQ7amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20mZ3Q7LCBaaGFv aHVpIFpoYW5nICZsdDt6emhhbmdAanVuaXBlci5uZXQmZ3Q7LCBaaGFvaHVpIFpoYW5nICZsdDt6 emhhbmdAanVuaXBlci5uZXQmZ3Q7LCBKZWZmcmV5IFpoYW5nICZsdDt6emhhbmcyMDAzQGdtYWls LmNvbSZndDs8YnI+DQo8Yj5TdWJqZWN0OiA8L2I+UmU6IE5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9u IGZlYXR1cmUgZ3VpZGU8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEyLjBwdDtiYWNrZ3JvdW5kOiNGRkVCOUMi PjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0xhdG8m cXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+W0V4dGVybmFsIEVtYWlsLiBCZSBjYXV0aW91 cyBvZiBjb250ZW50XTxvOnA+PC9vOnA+PC9zcGFuPjwvYj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPiZuYnNwO215IHRob3VnaHRzOiA8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+bmVnYXRpdmUgaXMgc2VyaW91c2x5IG1vcmUg Y29tcGxleCB0byZuYnNwOyBpbXBsZW1lbnQgYW5kIHVuZGVyc3RhbmQgb3BlcmF0aW9uYWxseSBh bmQgb25seSBuZWVkZWQgb24gbXVsdGktcGxhbmUgZmFicmljcywgdGFodCdzIHdoeSBwb3NpdGl2 ZSBpcyBLSVNTIDstKSBBbHNvLCBuZWdhdGl2ZSBhbHdheXMgZm9yY2VzIHlvdSB0byByaW5nIHRo ZSB0b3Agb2YgdGhlIGZhYnJpYyB3aGljaCBpbiBzaW5nbGUgcGxhbmUgZGVzaWduDQogaXMgYW4g dW5uZWNlc3NhcnkgcmVxdWlyZW1lbnQuJm5ic3A7IDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8 ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4N CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIGZvcmVzZWUgdmVuZG9ycyBub3QgaW1wbGVt ZW50aW5nIG5lZ2F0aXZlIGZvciBzaW1wbGljaXR5LCB2ZXJ5IHNtYWxsIGZvb3RwcmludCBmYWJy aWNzLg0KPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPnRoZSBkaXNjdXNzaW9uIGFib3V0IGNhcGFiaWxpdHkgYWR2ZXJ0aXNlbWVudCBpcyBpbnRl cmVzdGluZywgd2UgY2FuIGp1c3QgYWRkIG9uZSBiaXQgb24gdGhlIG5vZGUgY2FwYWJpbGl0aWVz IGVsZW1lbnQsIG1ha2UgaXQgb3B0aW9uYWwgYW5kIGRlZmF1bHQgdHJ1ZS4NCjxvOnA+PC9vOnA+ PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286 cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5PZiBjb3Vyc2UgYW4g aW1wbGVtZW50YXRpb24gdGFodCB1bmRlcnN0YW5kcyB0aGF0IGFsbCBpbnZvbHZlZCBub2RlcyB1 bmRlcnN0YW5kIG5lZ2F0aXZlIGlzIGZyZWUgdG8gdXNlIG5lZ2F0aXZlIGluc3RlYWQgb2YgcG9z aXRpdmUgdGhlbi4NCjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj4tLSB0b255IDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj5PbiBUaHUsIE1heSAxNCwgMjAyMCBhdCAxMTowNSBBTSBCcnVubyBS aWpzbWFuICZsdDs8YSBocmVmPSJtYWlsdG86YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tIj5icnVu b3JpanNtYW5AaG90bWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2 Pg0KPGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICNDQ0ND Q0MgMS4wcHQ7cGFkZGluZzowaW4gMGluIDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJn aW4tcmlnaHQ6MGluIj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjEwLjVwdDtmb250LWZhbWlseTpBdmVuaXItQm9vayI+QnJvYWRlbmluZyBhIGRp c2N1c3Npb24gb24gbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gdG8gdGhlIFJJRlQgbWFpbGluZyBs aXN0Ljwvc3Bhbj4NCjxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6QXZlbmlyLUJvb2si Pk5vdyB0aGF0IHdlIGhhdmUgaW1wbGVtZW50ZWQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW4g UklGVC1QeXRob24sIGFuZCBub3cgdGhhdCB3ZSBhcmUgZ2V0dGluZyBzb21lIG9wZXJhdGlvbmFs IGV4cGVyaWVuY2Ugd2l0aCBpdCwgdGhlIGZvbGxvd2luZyBpcyBiZWNvbWluZyBtb3JlIGFuZCBt b3JlIGV2aWRlbnQ6PC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjVwdDtmb250LWZhbWls eTpBdmVuaXItQm9vayI+SXQgc2VlbXMgdG8gdXMgKEJydW5vIGFuZCBQYXNjYWwsIGZvciBub3cp IHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpcyBpbXBsZW1lbnRlZCwgdGhlcmUg aXMgcmVhbGx5IG5vIG5lZWQgZm9yIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFueSBtb3JlLjwv c3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1pbHk6QXZlbmlyLUJvb2si PkV2ZXJ5IHVzZSBjYXNlIHRoYXQgY2FuIGJlIHNvbHZlZCBieSBwb3NpdGl2ZSBkaXNhZ2dyZWdh dGlvbiBjYW4gKGFzIGZhciBhcyB3ZSBjYW4gY3VycmVudGx5IHRlbGwpIGFsc28gYmUgc29sdmVk IGJ5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2 Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9k aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MC41cHQ7Zm9udC1mYW1pbHk6QXZlbmlyLUJvb2siPkZ1cnRoZXJtb3JlLCBuZWdhdGl2ZSBkaXNh Z2dyZWdhdGlvbiBzb2x2ZXMgdGhlIHByb2JsZW1zIGluIGEgZmFyIHNpbXBsZXIgYW5kIG1vcmUg ZWxlZ2FudCB3YXk6IHRoZXJlIGFyZSBmZXdlciBhZHZlcnRpc2luZyBub2RlcyBhbmQgZmV3ZXIg YWR2ZXJ0aXNlZCBUSUVzIGludm9sdmVkLCBhbmQgd2UgZG9u4oCZdCBoYXZlDQogdGhlIHN5bmNo cm9uaXphdGlvbiBpc3N1ZSB0aGF0IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGhhcyB0aGF0IHBv dGVudGlhbGx5IGNhdXNlcyBpbmNhc3QgcHJvYmxlbXMuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0K PC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+ DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjEwLjVwdDtmb250LWZhbWlseTpBdmVuaXItQm9vayI+VGh1cywgYXQgdGhlIHZlcnkgbGVh c3QsIGl0IG1ha2VzIHNlbnNlIHRvIHJlY29tbWVuZCB0aGF0IGluIGEgZ2l2ZW4gZmFicmljIHdl IHVzZSBlaXRoZXIgb25seSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5IG9yIHBvc2l0aXZl IGRpc2FnZ3JlZ2F0aW9uIG9ubHksIHdpdGggbmVnYXRpdmUgZGlzYWdncmVnYXRpb24NCiBiZWlu ZyB0aGUgZGVmYXVsdC48L3NwYW4+PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFt aWx5OkF2ZW5pci1Cb29rIj5JZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24g YXJlIGVuYWJsZWQmbmJzcDtzaW11bHRhbmVvdXNseSBpbiBvbmUgYW5kIHRoZSBzYW1lIGZhYnJp YywgZXZlcnl0aGluZyBzdGlsbCB3b3JrcyBmaW5lIGFzIGZhciBhcyB3ZSBjYW4gc2VlLiBCdXQg dGhlcmUgYXJlIHNvbWUmbmJzcDvigJxpbnRlcmVzdGluZ+KAnSBpbnRlcmFjdGlvbnMNCiB0aGF0 IG1ha2UgdGhpbmdzJm5ic3A7dW5uZWNlc3NhcmlseSBjb21wbGV4IGFuZCBwb3RlbnRpYWxseSBm cmFnaWxlLiZuYnNwOzwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC41cHQ7Zm9udC1mYW1p bHk6QXZlbmlyLUJvb2siPklmIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlz IG1hbmRhdG9yeSwgYW5kIGlmIG91ciBhc3Nlc3NtZW50IHRoYXQgbmVnYXRpdmUgZGlzYWdncmVn YXRpb24gY2FuIHNvbHZlIGFsbCB1c2UgY2FzZXMgaXMgY29ycmVjdCwgdGhlbiB3ZSBjb3VsZCBn byBvbmUgYm9sZCBzdGVwIGZ1cnRoZXIgYW5kDQogY29tcGxldGVseSByZW1vdmUgcG9zaXRpdmUg ZGlzYWdncmVnYXRpb24gZnJvbSB0aGUgc3BlY2lmaWNhdGlvbi48L3NwYW4+PG86cD48L286cD48 L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpw PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OkF2ZW5pci1Cb29rIj5UaG91Z2h0cz88L3NwYW4+ PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpw PiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFtaWx5OkF2ZW5pci1Cb29rIj7igJQg QnJ1bm88L3NwYW4+PG86cD48L286cD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PGJyPg0KPGJyPg0KPG86cD48L286cD48L3A+DQo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luLXRv cDo1LjBwdDttYXJnaW4tYm90dG9tOjUuMHB0Ij4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij5PbiBNYXkgMTQsIDIwMjAsIGF0IDEwOjQ4IEFNLCBQYXNjYWwgVGh1YmVydCAocHRodWJlcnQp ICZsdDs8YSBocmVmPSJtYWlsdG86cHRodWJlcnRAY2lzY28uY29tIiB0YXJnZXQ9Il9ibGFuayI+ cHRodWJlcnRAY2lzY28uY29tPC9hPiZndDsgd3JvdGU6PG86cD48L286cD48L3A+DQo8L2Rpdj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SGVsbG8gQnJ1bm86PG86cD48L286cD48L3A+ DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwv cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkkgbGlrZSB5b3VyIG5lZ2F0 aXZlLW9ubHkgZGVmYXVsdCBiZWNhdXNlIGl0IGlzIHByb2JhYmx5IHRoZSBzYWZlc3QuIExldCBt ZSBlbGFib3JhdGUuLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj5wYXJ0aXRpb25pbmcgc2F2ZXMgYSBsb3QgbW9yZSBwb3J0cyBwZXIgVG9GIG5v ZGUgdGhhbiB0aGUgcmluZyBjb3N0IHNvIGl0IGRvZXMgbm90IG1hdHRlci48bzpwPjwvbzpwPjwv cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+ PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SWYgeW91IGVuYWJsZSBu ZWdhdGl2ZSwgdGhlcmXigJlzIG5vIHBvaW50IGluIGRvaW5nIGFueSBwb3NpdGl2ZSBhdCBhbGws IGlzIHRoZXJlPyBTbyB3aGF0IGRvIHdlIHRyeSB0byBzYXZlIGJ5IGNvbWJpbmluZz8gSW4geW91 ciBleGFtcGxlLCBJIGd1ZXNzIHRoYXQgc3VwZXIgMSAyIGhhZCB0byByZXRyYWN0IHRoZSBwb3Np dGl2ZSBkaXNhZyBhbmQgdGhlbiBkbyBuZWdhdGl2ZSBpbnN0ZWFkIHdoZW4gdGhlIGxpbmsNCiB0 byBzcGluZSAxIDEgZmVsbC4gV2FzIHRoYXQgbm90IGEgYml0IGNvbXBsZXggYW5kIGVycm9yIHBy b25lPzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij5BbHNvIEnigJltIG5vdCBjbGVhciBob3cgd2UgY2FuIGFsd2F5cyBkZWNpZGUgdGhhdCBkeW5h bWljYWxseSBhbmQgSSBkbyBub3QgYmVsaWV2ZSB0aGF0IHdlIHNwZWNpZmllZCB0aGF0LiBTbyBJ IHVuZGVyc3RhbmQgdGhhdCBpdOKAmXMgbW9yZSBsaWtlIGEgdXNlIGNhc2UgdGhpbmd5LCBsaWtl IGEgY29uZmlndXJhdGlvbiB0aGF0IHdvdWxkIGJlIGFkYXB0ZWQgdG8gdGhlIHVzZSBjYXNlLjxv OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7 PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj49Jmd0 OyBkbyBub3QgY29uZmlndXJlIGJvdGggYXQgdGhlIHNhbWUgdGltZSB1c2UgZWl0aGVyIHBvc2l0 aXZlIG9yIG5lZ2F0aXZlIGRpc2FnLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj5XZSBkbyBub3QgdHJ5IHRvIGRvIHBvc2l0aXZlIGRpc2FnIHRy YW5zaXRpdmVseS4gU28gaWYgdGhlcmUgaXMgYSBuZWVkIGZvciB0cmFuc2l0aXZlLCB5b3UgaGF2 ZSB0byB1c2UgbmVnYXRpdmUuJm5ic3A7IEluIGEgbXVsdGlwbGFuZSBjYXNlLCB0aGVyZeKAmXMg dXN1YWxseSAoYXMgaW4geW91ciBwaWN0dXJlKSBvbmUgVG9QIHBlciBwbGFuZSBpbiBlYWNoIFBv RCwgYW5kIGEgZmlyc3QgbGluayBmYWlsdXJlIChzYXkgU3BpbmUNCiAxIDEgdG8gbGVhZiAxIDEp IGNhbiBhbHJlYWR5IGNhdXNlIGEgZmFsbGVuIGxlYWY6IGxlYWYgMSAxIGlzIG5vIG1vcmUgcmVh Y2hhYmxlIHdpdGhpbiBwbGFuZSAxLiBUaGlzIHRlbGxzIHlvdSB0aGF0IGFsbCBsZWF2ZXMgaW4g dGhlIG90aGVyIFBvRHMgbXVzdCBhdm9pZCB0aGF0IHBsYW5lLCBhbmQgdGhhdOKAmXMgYSBsZWFm IGRlY2lzaW9uOyB3aGljaCB0ZWxscyB5b3UgdGhhdCB5b3UgbmVlZCB0byByZWN1cnNlIHRyYW5z aXRpdmVseSBkb3duLg0KIFRoaXMgaW5kaWNhdGVzIHRoYXQgbmVnYXRpdmUgbXVzdCBiZSBhY3Rp dmF0ZWQgaW4gYSBoaWdobHkgcGFydGl0aW9uZWQgKG1lYW5pbmcgbG93IHJlZHVuZGFuY3kpIG11 bHRpcGxhbmUuPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPlNheSB3ZSB0cnkgdG8gdXNlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIHRyYW5zaXRp dmVseSBpbiBhIFRvRiB0aGF0IGlzIHBhcnRpdGlvbmVkIGxpa2UgaW4gcGxhbmVzLCB5b3XigJlk IHJ1biBhIHJpc2sgdGhhdCBub25lIG9mIHRoZSBUb0Ygbm9kZXMgdGhhdCBjYW4gc3RpbGwgcmVh Y2ggdGhlIGxlYWYgY2FuIHNlZSAodGhyb3VnaCBzb3V0aCByZWZsZWN0aW9uKSB0aGUgVG9GIG5v ZGUgdGhhdCBjYW5ub3Qgc28NCiB0aGV5IGRvIG5vdCBrbm93IHRoZXkgbmVlZCB0byBkaXNhZy4g U28geW91IGVuZCB1cCBuZWVkaW5nIHRoZSBzYW1lIHJpbmcgYXMgZm9yIG5lZ2F0aXZlLCB0aGUg c291dGhlcm4gcmVmbGVjdGlvbiBiZWNvbWUgbW9zdGx5IHVzZWxlc3MgYW5kIHRoZSBiZW5lZml0 cyBvZiBwb3NpdGl2ZSBhcmUgZ29uZS48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+UGFydGl0aW9ubmVkIFRvRiA9Jmd0OyBuZWdhdGl2ZTxvOnA+ PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86 cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIHRydXN0 IHRoYXQgd2UgY2FuIHVzZSBwb3NpdGl2ZSBpbiBhIGhpZ2hseSByZWR1bmRhbnQgYW5kIHN5bW1l dHJpY2FsIG5vbi1wYXJ0aXRpb25lZCBUb0YuIElmIG5vIG9uZSBjYW4gcmVhY2ggdGhlIGxlYWYg YW55bW9yZSAobGlrZSBpdOKAmXMgZGVhZCkgd2UgaGF2ZSBubyBpc3N1ZSBzaW5jZSBpdCBzaG91 bGQgbm90IGJlIGRpc2FnZ3JlZ2F0ZWQsIGp1c3QgdXNlIHRoZSBkaXNjYXJkcyByb3V0ZSBhdCBh bnkNCiBUb0Ygbm9kZS4gSWYgeW91IGhhdmUgZW5vdWdoIHJlZHVuZGFuY3kgYW5kIG5vIHBhcnRp dGlvbiwgJm5ic3A7dGhlcmUgd2lsbCBhbHdheXMgYmUgbm9kZXMgdGhhdCBjYW4gYm90aCByZWFj aCBhIGxlYWYgYW5kIGRpc2NvdmVyIHRoYXQgYSBwZWVyIGRvZXMgbm90LiZuYnNwOzxvOnA+PC9v OnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48 L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj49Jmd0OyBQb3Np dGl2ZSBpcyBpbmRpY2F0ZWQgZm9yIGEgdmVyeSBzcGVjaWZpYyB1c2UgY2FzZSwgaWRlYWxseSAy IGxldmVscyBhbmQgZnVsbHkgbWVzaGVkLiBNYXliZSB0aGF04oCZcyBlbm91Z2ggZGVwbG95bWVu dHMgdG8ganVzdGlmeSB0aGUgZmVhdHVyZSBpbiB0aGUgY29kZS48bzpwPjwvbzpwPjwvcD4NCjwv ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0K PC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+U28gdGhlIHF1ZXN0aW9uIGlzIHJl YWxseSB0aGF0IGJsdXJyeSB6b25lIGJldHdlZW4gaGlnaGx5IHJlZHVuZGFudCBzaW5nbGUgcGxh bmUgYW5kIGhpZ2hseSBwYXJ0aXRpb25lZCBtdWx0aXBsYW5lIHdoYXQgc2hvdWxkIG9uZSBkbz8g SSBiZWNvbWVzIGEgcmlzay9iZW5lZml0IGp1ZGdlbWVudOKApiBJZiBuZWdhdGl2ZSBpcyBpbXBs ZW1lbnRlZCBhbmQgdGhlIHJpbmcgaXMgdGhlcmUsIEnigJlkIHVzZSBpdCwgYmV0dGVyDQogc2Fm ZSB0aGFuIHNvcnJ5LiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj5UYWtlIGNhcmU8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+UGFzY2FsPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxk aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rp dj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7 cGFkZGluZzowaW4gMGluIDBpbiA0LjBwdCI+DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5v bmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAw aW4iPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPkZyb206PC9iPiZuYnNwO0JydW5v IFJpanNtYW4gJmx0OzxhIGhyZWY9Im1haWx0bzpicnVub3JpanNtYW5AaG90bWFpbC5jb20iIHRh cmdldD0iX2JsYW5rIj5icnVub3JpanNtYW5AaG90bWFpbC5jb208L2E+Jmd0OyZuYnNwOzxicj4N CjxiPlNlbnQ6PC9iPiZuYnNwO2pldWRpIDE0IG1haSAyMDIwIDE3OjM2PGJyPg0KPGI+VG86PC9i PiZuYnNwO1Bhc2NhbCBUaHViZXJ0IChwdGh1YmVydCkgJmx0OzxhIGhyZWY9Im1haWx0bzpwdGh1 YmVydEBjaXNjby5jb20iIHRhcmdldD0iX2JsYW5rIj5wdGh1YmVydEBjaXNjby5jb208L2E+Jmd0 Ozxicj4NCjxiPkNjOjwvYj4mbmJzcDtNZWxjaGlvciBBZWxtYW5zICZsdDs8YSBocmVmPSJtYWls dG86bWFlbG1hbnNAanVuaXBlci5uZXQiIHRhcmdldD0iX2JsYW5rIj5tYWVsbWFuc0BqdW5pcGVy Lm5ldDwvYT4mZ3Q7OyBDaHJpc3RpYW4gR3JhZiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmNncmFmQGp1 bmlwZXIubmV0IiB0YXJnZXQ9Il9ibGFuayI+Y2dyYWZAanVuaXBlci5uZXQ8L2E+Jmd0OzsgT2xp dmVyIFN0ZXVkbGVyICZsdDs8YSBocmVmPSJtYWlsdG86b3N0ZXVkbGVyQGp1bmlwZXIubmV0IiB0 YXJnZXQ9Il9ibGFuayI+b3N0ZXVkbGVyQGp1bmlwZXIubmV0PC9hPiZndDs7DQogT2xpdmllciBW YW5kZXphbmRlICZsdDs8YSBocmVmPSJtYWlsdG86b3ZhbmRlemFuZGVAanVuaXBlci5uZXQiIHRh cmdldD0iX2JsYW5rIj5vdmFuZGV6YW5kZUBqdW5pcGVyLm5ldDwvYT4mZ3Q7OyBUb255IFByenln aWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzp0b255c2lldGZAZ21haWwuY29tIiB0YXJnZXQ9Il9i bGFuayI+dG9ueXNpZXRmQGdtYWlsLmNvbTwvYT4mZ3Q7OyBBbnRvbmkgUHJ6eWdpZW5kYSAmbHQ7 PGEgaHJlZj0ibWFpbHRvOnByej00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnIiB0YXJnZXQ9 Il9ibGFuayI+cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8L2E+Jmd0OzsNCjxhIGhy ZWY9Im1haWx0bzp0b21tYXNvY2FpYXp6aUBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj50b21t YXNvY2FpYXp6aUBnbWFpbC5jb208L2E+OyBKZWZmIFRhbnRzdXJhICZsdDs8YSBocmVmPSJtYWls dG86amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5qZWZmdGFudC5pZXRm QGdtYWlsLmNvbTwvYT4mZ3Q7OyBKZWZmcmV5IChaaGFvaHVpKSBaaGFuZyAmbHQ7PGEgaHJlZj0i bWFpbHRvOnp6aGFuZ0BqdW5pcGVyLm5ldCIgdGFyZ2V0PSJfYmxhbmsiPnp6aGFuZ0BqdW5pcGVy Lm5ldDwvYT4mZ3Q7Ow0KIEplZmZyZXkgKFpoYW9odWkpIFpoYW5nICZsdDs8YSBocmVmPSJtYWls dG86enpoYW5nPTQwanVuaXBlci5uZXRAZG1hcmMuLmlldGYub3JnIiB0YXJnZXQ9Il9ibGFuayI+ enpoYW5nPTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8L2E+Jmd0OzsgSmVmZnJleSBaaGFu ZyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnp6aGFuZzIwMDNAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFu ayI+enpoYW5nMjAwM0BnbWFpbC5jb208L2E+Jmd0Ozxicj4NCjxiPlN1YmplY3Q6PC9iPiZuYnNw O1JlOiBOZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmZWF0dXJlIGd1aWRlPG86cD48L286cD48L3A+ DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5i c3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4m bmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJt YXJnaW4tdG9wOjUuMHB0O21hcmdpbi1ib3R0b206NS4wcHQiPg0KPGRpdj4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj5PbiBNYXkgMTQsIDIwMjAsIGF0IDg6NTMgQU0sIFBhc2NhbCBUaHVi ZXJ0IChwdGh1YmVydCkgJmx0OzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0Ij48YSBocmVm PSJtYWlsdG86cHRodWJlcnRAY2lzY28uY29tIiB0YXJnZXQ9Il9ibGFuayI+PHNwYW4gc3R5bGU9 ImNvbG9yOnB1cnBsZSI+cHRodWJlcnRAY2lzY28uY29tPC9zcGFuPjwvYT48L3NwYW4+Jmd0OyB3 cm90ZTo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2Pg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+VGhpcyBkb2VzIG5vdCBzaG93IGJlY2F1c2Ugb24geW91ciBmaXJz dCBicmVha2FnZSB5b3UgdXNlIHRoZSBwb3NpdGl2ZSBkaXNhZy4gSWYgeW91IHN0aWNrIHRvIHRo ZSBsb2dpYyB5b3UgdXNlZCBhdCB0aGUgYmVnaW5uaW5nLCB0aGF0IGlzIHBpY2sgYW4gZXhhbXBs ZSB3aGVyZSBwb3NpdGl2ZSBhcHBsaWVzIGJ1dCB1c2UgbmVnYXRpdmUsIHRoZW4gb24geW91ciBm aXJzdCBicmVha2FnZSB5b3XigJlkIHNob3cgdGhhdA0KIHRoZSBuZWdhdGl2ZSBkb2VzIG5vdCBu ZWVkIHRvIGdvIHRyYW5zaXRpdmVseSB0byB0aGUgbGVhZiwgYmVjYXVzZSB0aGUgc3BpbmUgbm9k ZXMgc3RpbGwgaGF2ZSBzb2x1dGlvbnMuIElzIHRoYXQgYSBsb3Qgb2Ygd29yayB0byBjaGFuZ2U/ PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8 ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4N CjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhpcyBpcyBleGFjdGx5IHdoYXQg SSB3YXMgdGhpbmtpbmcgYXMgd2VsbC48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8 ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0K PC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+TWF5YmUg SSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGN1cnJlbnQgc3BlY2lmaWNhdGlvbiB3aXRoIGEgZmlu ZS10b290aGVkIGNvbWIgYWdhaW4sIGJ1dCBteSAocG9zc2libHkgaW5jb3JyZWN0KSB1bmRlcnN0 YW5kaW5nIGlzIHRoYXQgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBp cyB0aGF0IHdlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIHVzZWQgKE1VU1QgYmUgdXNlZD8g U0hPVUxEDQogYmUgdXNlZD8pIGluIHRoZSDigJxmaXJzdCBmYWlsdXJl4oCdIHNjZW5hcmlvLjxv OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdj4NCjxk aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5QZXJzb25hbGx5LCBJIHNlZSBubyByZWFzb24gd2h5 IHdlIHdvdWxkIG5vdCBiZSBhYmxlIHRvIHVzZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpbnN0 ZWFkIG9mIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGluIHRoZSBmaXJzdCBmYWlsdXJlIHNjZW5h cmlvIGFzIHdlbGwuPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdj4NCjxkaXY+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9k aXY+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkluIHRoZSBjb250ZXh0IG9m IHRoZSB0dXRvcmlhbCwgdGhpcyB3b3VsZCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2YgY2xlYXJseSBk ZW1vbnN0cmF0aW5nIHRoZSBwcm9wYWdhdGlvbiBsb2dpYyBtb3JlIGNsZWFybHkuPG86cD48L286 cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPkJ1dCBtb3JlIGltcG9ydGFudGx5LCBpdCBzZWVtcyB0byBtZSB0 aGF0IG9uY2UgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaXMgaW1wbGVtZW50ZWQsIHRoZXJlIGlz IHJlYWxseSBubyByZWFzb24gdG8gdXNlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFueXdoZXJl LiBJdCB3b3VsZCBiZSDigJxjbGVhbmVy4oCdIChsZXNzIHNpZ25hbGluZykgYW5kIOKAnGJldHRl cuKAnSAobm8gaW5jYXN0KSB0byBzaW1wbHkgdXNlIG5lZ2F0aXZlDQogZGlzYWdncmVnYXRpb24g ZXZlcnl3aGVyZS48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rp dj4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+U2/igKYuIEkgd2FzIHRoaW5r aW5nIHRvIGFkZCBhIGNvbmZpZ3VyYXRpb24ga25vYiB0byBteSBjb2RlIOKAnHBvc2l0aXZlLW9u bHnigJ0sIOKAnG5lZ2F0aXZlLW9ubHnigJ0sIOKAnHBvc2l0aXZlLWFuZC1uZWdhdGl2ZeKAnSwg d2l0aCDigJxuZWdhdGl2ZS1vbmx54oCdIGJlaW5nIHRoZSBkZWZhdWx0PyAoU2VlbXMgbGlrZSBh IHdhc3RlIHRvIGhhdmUgY29kZWQgdXAgdGhlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uKS48bzpw PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+V2hhdCBkb2VzIGV2ZXJ5b25lIHRoaW5rIG9mIHRoYXQ/ PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0K PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPlNob3VsZCB3ZSBnbyBldmVuIGZ1cnRoZXIgYW5k IHNpbXBseSByZW1vdmUgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gZnJvbSB0aGUgc3BlYz88bzpw PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2 Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPlNob3VsZCB3ZSBoYXZlIG5lZ2F0aXZlIGRp c2FnZ3JlZ2F0aW9uIGFzIGEgY2FwYWJpbGl0eSBpbiB0aGUgY2FwYWJpbGl0eSBuZWdvdGlhdGlv bj8gKFNlZW1zIG5vbi1zZW5zaWNhbCwgZ2l2ZW4gaXQgaXMgc29tZXRoaW5nIHRoYXQgdGhlIHdo b2xlIGZhYnJpYyBuZWVkcyB0byBzdXBwb3J0IG9yIG5vdC4pPG86cD48L286cD48L3A+DQo8L2Rp dj4NCjwvZGl2Pg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mbmJzcDs8bzpw PjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPlNob3VsZCB3ZSB0YWtlIHRoaXMgdG8gdGhlIFJJRlQgbWFpbGluZyBsaXN0PzxvOnA+ PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2 Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPuKAlCBCcnVubzxvOnA+PC9vOnA+PC9wPg0K PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvYmxvY2txdW90ZT4NCjwv ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4N CjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0K PC9odG1sPg0K --_000_A967D4CC107D4707A2770BE8394576FBjunipernet_-- From nobody Sat May 16 15:51:47 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AC80B3A0BC1 for ; Sat, 16 May 2020 15:51:44 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -0.197 X-Spam-Level: X-Spam-Status: No, score=-0.197 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V6hxOhTw_2tl for ; Sat, 16 May 2020 15:51:42 -0700 (PDT) Received: from mail-vk1-xa2a.google.com (mail-vk1-xa2a.google.com [IPv6:2607:f8b0:4864:20::a2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 279CC3A0BBB for ; Sat, 16 May 2020 15:51:42 -0700 (PDT) Received: by mail-vk1-xa2a.google.com with SMTP id m18so1502071vkk.9 for ; Sat, 16 May 2020 15:51:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=WL7b698YUu2F1b3SjT9TAwneupLBh9b4Wf7hlseI4UQ=; b=Xvj+rkwbmCyuUi376agx2JO5/SBroCR2Nkx1hNmI4Ke1J8I00eRa48dNhn8oMS8Sv2 kqpcAw7F2Z/uN4thuzRmXzPzMYEodpMpndpoA1VKW4+s/4v2VaAESb3nDW4tPfICxV8B MLKfnscmTzHZOCHy+ZQ+nn9gnsgZH+7VIGYeLUe1SthXL+XLoSk69q8LW5ZY6sv1J0yp avpegAljkGbXZoOURIROWtuQZ6lndXqNMBMwZTsnT9+tAMBmqwxJ+1e1T1BUfWOoX/ad gcjVyuYCAuPcYOOfw8jnmvmbdFI8YnU/Skw64UE7PhRpdCorKeRd6KGh6h948cMzpFzn Sh2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=WL7b698YUu2F1b3SjT9TAwneupLBh9b4Wf7hlseI4UQ=; b=HtshBHX1jqNxEVGTjkkGtMG77JH27qCZpqB+GAcRpMArTkCCSNbQjDWUVCh6l0U7qe ylVt9+r1XMvBoT8XKH3xHum/Ee6Bedba+FsX46q3PQnO2N0V1GK1CQeYslEtbHH9TVve RTSzmtwsYkZrd3dRXte8FkQbGeJuCHkb/y8GTEznvxr4msZbPqtWPMaJkdsHQEJY5jPn N6qNbVdhosYI+V6oXXFhQdCx+oa6+5LyO+vZwhB76oAKeRocs4nHbd86FW0HgSJV5Um4 oIUfKuIhVEON2yX1Dvd1c210OR7QewbtsLujskWFOJu8tC+gQzJmfa5vP1XVmMo/UpDQ MHlg== X-Gm-Message-State: AOAM533zqMjWT/5mZOSO5BCF6TugcPchQYpobAK/fX/XQTuho5L95l5z cEe53/WUf9jhuaUR79tito4= X-Google-Smtp-Source: ABdhPJwLB+S0Fhm+NnByIReLnPzvTSNz4NBOEJTFg3ThJWrmoIBY/vyaxU8xY23DwwRs8ajQbupSEg== X-Received: by 2002:a1f:cd06:: with SMTP id d6mr6864688vkg.94.1589669500908; Sat, 16 May 2020 15:51:40 -0700 (PDT) Received: from brunos-macbook.conexion.com (wisp-63.conexion.com. [168.234.219.63]) by smtp.gmail.com with ESMTPSA id a2sm1678762uae.10.2020.05.16.15.51.39 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 16 May 2020 15:51:40 -0700 (PDT) From: Bruno Rijsman Message-Id: <869B95E0-99D2-495E-9D90-E4CCFE93E0A9@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_3FFDA71B-67C3-47A8-A21C-BE3E7D169771" Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Date: Sat, 16 May 2020 16:51:37 -0600 In-Reply-To: Cc: "tommasocaiazzi@gmail.com" , rift@ietf.org To: Mariano Scazzariello References: <4448e295-b6c3-d826-92db-1dd1ee7d5996@os.uniroma3.it> <6A19CEF0-606E-4CE9-9459-A7CB46BE59EA@gmail.com> <148a7b61-7dd0-ab67-9c77-61e337cdf953@os.uniroma3.it> <732175B4-C269-4B44-BFA6-0D6118436CE0@gmail.com> <9C5C0379-5277-4D38-BC31-E1898C8A2B18@gmail.com> <0E36293F-96E0-4994-ADFC-A4A819C98153@gmail.com> <9b3a2597-2e8d-6a15-1b23-894d0bf91d58@os.uniroma3.it> X-Mailer: Apple Mail (2.3445.104.11) Archived-At: Subject: Re: [Rift] RIFT strange behaviours discussed today X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 May 2020 22:51:45 -0000 --Apple-Mail=_3FFDA71B-67C3-47A8-A21C-BE3E7D169771 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi Mariano and Tomasso, I have made two big changes to the way messages are queued in = RIFT-Python.=20 This code has been committed to the master branch. So it is ready for you to test, just in time for the paper deadline. = Although it is a bit risky to introduce such a large change with not = much time to fully =E2=80=9Csoak it in=E2=80=9D before the paper = deadline. Also, starting Monday morning I will be unreachable for a few = days. I leave it up to you to decide whether or not you want to use = this new code for the paper. Big change #1 In the old code, the TIES_TX, TIES_ACK, and TIES_REQ queue were all = serviced only once per second, no matter what. The TIES_RTX queue = didn=E2=80=99t really do anything. TIDEs were sent once per 2 seconds (that did not change). In the new code, there are two queue for TIEs, TIE ACKs, and TIE REQs: (a) A fast tx_queue for the initial transmission after the item is = enqueued. It is serviced every 50ms. (With an optimization to make sure = we don=E2=80=99t run such a fast timer unless it is really needed - i.e. = unless there is at least one entry in some fast queue.) (b) A slow rtf_queue for subsequent retransmission if needed. It is = serviced every 1000ms. See the new file msg_queues.py for details. Big change #2 In the old code, if a node regenerated a local TIE for any reason, it = was not immediately reflooded. Instead we would have to wait up to 2 seconds for the regenerated TIE to = be advertised in a TIDE, and then up to 1 second for the other side to = request it, and the up to another 1 second for this node to react to the = request. I changed that: if a local TIE is regenerated for any reason, the TIE = itself is immediately put on the fast TIE tx_queue, so it will be sent = after 50ms. These two changes combined make most of the problems that you saw go = away. You used see that a node would send a TIE, and then a second later the = exact same version of that TIE (same tie-nr, same seq-nr). This was because the TIRE was not sent fast enough to ack the TIE. That behavior should go away =E2=80=94 the TIRE is now sent much faster. In general, convergence should be much faster. You may see some other behavior that you did not see before. If you kill a node in the topology, you may see some =E2=80=9Cadditional = intermediate states=E2=80=9D because reconvergence is so much faster. Consider for example, that node X is killed, and node X had adjacencies = with Y1, Y2, Y3, Y4, =E2=80=A6., Yn Each of those neighbor nodes Y1, Y2, =E2=80=A6., Yn will lose their = adjacency with X, and reflood their local node TIE. Now, consider that Y1, Y2, =E2=80=A6., Yn are also all adjacent to node = Z (this is quite common in Clos topologies). So, Z is going to receive updated node TIEs from Y1, Y2, Y3, =E2=80=A6., = Yn. And (this is the important part), Z may ALSO receive pos-disagg-prefix = and neg-disagg-prefix TIEs from Y1, Y2, =E2=80=A6., Yn. Z receives these multiple pos-disagg-prefix and neg-disagg-prefix = messages asynchronously. That may cause Z to =E2=80=9Cchange it mind=E2=80=9D a few times about = whether and what it should disaggregate itself, and that may cause Z to = originate multiple different versions (i.e. sequence numbers) of its own = pos-disagg-prefix or neg-disagg-prefix message in quick succession. This will also have the effect to sending more messages than you might = expect, but this is really different from the behavior you were seeing = before. Before you were seeing the identical TIE (same seq-nr) being sent = multiple times. I would consider that to be real bug. Now you might see multiple versions of the same TIE (same tie-nr, = different seq-nr) being sent multiple times. I don=E2=80=99t consider = that to be a bug. Not a bug in the code at least. It is just a = consequence of the RIFT protocol reacting quickly to multiple = adjacencies going down in quick succession after a node failure. I have a gut feeling that this =E2=80=9Chunting=E2=80=9D behavior will = be less if we do negative disaggregation everywhere (and no positive = disaggregation). I am adding a =E2=80=9Cdisaggregation: negative-only=E2=80=9D = configuration knob to test that hypothesis. Don=E2=80=99t try it out yet, the code for this new knob is not finished = yet.=20 I will update you when it is. =E2=80=94 Bruno > On May 15, 2020, at 10:43 AM, Mariano Scazzariello = wrote: >=20 > Hi Bruno, > any news with the duplicated packets issue? >=20 > We just want to know that since 19th of May is the abstract submission = deadline, so we should know if we can match it in time. > Our "internal deadline" is Sunday 17th of May. >=20 > Thanks, > Mariano and Tommaso. >=20 > Il 12/05/2020 13:14, Mariano Scazzariello ha scritto: >> Hi Bruno, >> sorry for the spamming :D. >>=20 >> Today me and Tommy further investigated on the problem that I = reported yesterday.=20 >> It seems that it is caused by TIEs sent multiple times by the same = node. >> We are not sure, we'll keep investigating, however we would like to = have a feedback from you. >>=20 >>=20 >> EXAMPLE OF MULTIPLE NEG DISAGG TIES >> This example highlights what we saw yesterday during the call. >> The first two packets are correct, since the ToFs send them to = spine_2_1_1. However after some time, the same ToFs resend the same neg = disagg TIEs, in fact the comparison is 0 (in red). >>=20 >> Sender Receiver Originator TIE = Type In DB? If so, comparison result. >> tof_1_2_1:if1 spine_2_1_1 121 = Neg-Dis-Prefix No >> tof_1_2_2:if1 spine_2_1_1 122 = Neg-Dis-Prefix No >> .... >> tof_1_2_1:if1 spine_2_1_1 121 = Neg-Dis-Prefix Yes, comparison is 0 >> tof_1_2_2:if1 spine_2_1_1 122 = Neg-Dis-Prefix Yes, comparison is 0 >> ... >> tof_1_2_2:if1 spine_2_1_1 122 = Neg-Dis-Prefix Yes, comparison is 0 >>=20 >> EXAMPLE OF MULTIPLE NODE TIES >> Here we can see that the ToFs send to spine_2_1_1 a new node TIE that = is stored and reflected correctly (in green). Strange TIEs are = highlighted in red. >>=20 >> Sender Receiver Originator = TIE Type In DB? If so, comparison result. >> tof_1_2_1:if1 spine_2_1_1 121 = Node Yes, comparison is -1 >> tof_1_2_2:if1 spine_2_1_1 122 = Node Yes, comparison is -1 >> spine_2_1_1:if2 tof_1_2_1 122 = Node Yes, comparison is -1 = <- CORRECT REFLECTION >> spine_2_1_1:if3 tof_1_2_2 121 = Node Yes, comparison is -1 = <- CORRECT REFLECTION >> ... >> tof_1_2_1:if1 spine_2_1_1 121 = Node Yes, comparison is -1 = <- Spine receives Node TIE from tof_1_2_1 different from the one stored = in the DB, should reflect to tof_1_2_2 >> tof_1_2_2:if1 spine_2_1_1 122 = Node Yes, comparison is -1 = <- Spine receives Node TIE from tof_1_2_2 different from the one stored = in the DB, should reflect to tof_1_2_1 >> spine_2_1_1:if2 tof_1_2_1 122 = Node Yes, comparison is 0 = <- Reflection of tof_1_2_2 TIE to tof_1_2_1. Why comparison is 0 on ToF, = if it is -1 on spine (it reflects wrong TIE?)? >> spine_2_1_1:if3 tof_1_2_2 121 = Node Yes, comparison is 0 = <- Reflection of tof_1_2_1 TIE to tof_1_2_2. Why comparison is 0 on ToF, = if it is -1 on spine (it reflects wrong TIE?)? >> ... >> tof_1_2_1:if1 spine_2_1_1 121 = Node Yes, comparison is 0 = <- tof_1_2_1 resends to spine_2_1_1 its own node TIE >> tof_1_2_2:if1 spine_2_1_1 122 = Node Yes, comparison is 0 = <- tof_1_2_2 resends to spine_2_1_1 its own node TIE >>=20 >> Hope this is useful to hunt the problem! >> Mariano and Tommaso. >>=20 >> Il 12/05/2020 00:55, Mariano Scazzariello ha scritto: >>> Another little update, the last for today since it's 1AM :D >>>=20 >>> The final scenario is: >>> tof_1_2_2 sends its node TIE to its southbound adjacencies = (spine_2_1_1/spine_3_1_1/spine_4_1_1). Each spine reflects it to = tof_1_2_1. >>> tof_1_2_1 resends this TIE to spine_2_1_1/spine_3_1_1/spine_4_1_1. = Spines bounce it back to tof_1_2_2. >>>=20 >>> So, the final question is: is that correct that the ToF re-sends = southbound the node TIE received by southern reflection? Or is this a = strange behaviour? >>>=20 >>> Good night, >>> Mariano and Tommaso. >>>=20 >>> Il 12/05/2020 00:06, Mariano Scazzariello ha scritto: >>>> Little update: >>>> the southern reflection is working properly. What we're seeing is = this behaviour (similar to n.3 of previous mail). As example: >>>>=20 >>>> After spine_1_1_1 failure, tof_1_2_1 sends a node TIE (with seq = n.7, originated by tof_1_2_2) to spine_2_1_1/spine_3_1_1/spine_4_1_1. = Spines bounce it back to tof_1_2_2. >>>>=20 >>>> It seems that tof_1_2_1 reflects something that is already coming = from a reflection since originator is tof_1_2_2 (?) Is that possible? = Also, is this correct that a TIE is reflected to the same node that = originated it? >>>>=20 >>>> We'll keep you updated. >>>> Mariano and Tommaso. >>>>=20 >>>> Il 11/05/2020 23:09, Mariano Scazzariello ha scritto: >>>>> Hi Bruno, >>>>> as disussed today we'll report the strange behaviours found in = RIFT. >>>>>=20 >>>>> 1. ToFs/Spines sending more than one neg disagg TIE >>>>> Steps to reproduce: build a FT with K=3D2 and R=3D1, after = convergence destroy spine_1_1_1. This is the state after the failure = (don't mind the numbers :D). >>>>> >>>>>=20 >>>>> In the figure below, spine_3_1_1 interface 0 (connected to = leaf_3_0_1) sends 2 neg disagg TIEs after failure time. >>>>>=20 >>>>> >>>>>=20 >>>>> 2. Southern Reflection bounces PDUs back to the sender >>>>>=20 >>>>> Same scenario as before, spine_4_1_1 interface 3 (connected to = tof_1_2_2) bounces back packets to tof_1_2_2 instead of sending them to = tof_1_2_1 >>>>> >>>>> UPDATE: We found that, for some reason, spine_3_1_1 sends = reflection correctly. Interface 3 (connected to tof_1_2_2) sends TIEs = coming from tof_1_2_1: >>>>> >>>>> Me and Tommaso are investigating on that, however we have some = difficulties on finding the code that reflects TIEs. Is the = `unsol_flood_tie_packet_info` in Node class, right? >>>>>=20 >>>>> 3. Another strange behaviour? >>>>>=20 >>>>> tof_1_2_2 sends to spine_2_1_1 some Node TIEs originated by = tof_1_2_1, why? >>>>> >>>>> This screen wraps both the duplicated packets problem (229-233) = and packet 228 is the "strange one". >>>>>=20 >>>>> Hope to hear from you soon, >>>>> Mariano and Tommaso. >>>>>=20 --Apple-Mail=_3FFDA71B-67C3-47A8-A21C-BE3E7D169771 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Hi = Mariano and Tomasso,


I have made two big = changes to the way messages are queued in RIFT-Python. 

This code has been = committed to the master branch.

So it is ready for you to test, just in = time for the paper deadline. Although it is a bit risky to introduce = such a large change with not much time to fully =E2=80=9Csoak it in=E2=80=9D= before the paper deadline. Also, starting Monday morning I will be = unreachable for a few days.  I leave it up to you to decide whether = or not you want to use this new code for the paper.


Big change #1

In the old code, the TIES_TX, TIES_ACK, and TIES_REQ queue = were all serviced only once per second, no matter what. The TIES_RTX = queue didn=E2=80=99t really do anything.

TIDEs were sent once per 2 seconds = (that did not change).

In the new code, there are two queue for TIEs, TIE ACKs, and = TIE REQs:

(a) = A fast tx_queue for the initial transmission after the item is enqueued. = It is serviced every 50ms. (With an optimization to make sure we don=E2=80= =99t run such a fast timer unless it is really needed - i.e. unless = there is at least one entry in some fast queue.)

(b) A slow rtf_queue for subsequent = retransmission if needed. It is serviced every 1000ms.

See the new file = msg_queues.py for details.


Big change #2

In the old code, if a = node regenerated a local TIE for any reason, it was not immediately = reflooded.

Instead we would have to wait up to 2 seconds for the = regenerated TIE to be advertised in a TIDE, and then up to 1 second for = the other side to request it, and the up to another 1 second for this = node to react to the request.

I changed that: if a local TIE is = regenerated for any reason, the TIE itself is immediately put on the = fast TIE tx_queue, so it will be sent after 50ms.

These two changes combined make most of the problems that you = saw go away.

You= used see that a node would send a TIE, and then a second later the exact same version of that TIE (same tie-nr, = same seq-nr).

This was because the TIRE was not sent fast enough to ack the = TIE.

That = behavior should go away =E2=80=94 the TIRE is now sent much = faster.

In = general, convergence should be much faster.


You = may see some other behavior that you did not see before.

If you kill a node in = the topology, you may see some =E2=80=9Cadditional intermediate = states=E2=80=9D because reconvergence is so much faster.

Consider for example, = that node X is killed, and node X had adjacencies with Y1, Y2, Y3, Y4, = =E2=80=A6., Yn

Each of those neighbor nodes Y1, Y2, =E2=80=A6., Yn will lose = their adjacency with X, and reflood their local node TIE.

Now, consider that Y1, = Y2, =E2=80=A6., Yn are also all adjacent to node Z (this is quite common = in Clos topologies).

So, Z is going to receive updated node TIEs from Y1, Y2, Y3, = =E2=80=A6., Yn.

And (this is the important part), Z may ALSO receive = pos-disagg-prefix and neg-disagg-prefix TIEs from Y1, Y2, =E2=80=A6., = Yn.

Z receives = these multiple pos-disagg-prefix and neg-disagg-prefix messages = asynchronously.

That may cause Z to =E2=80=9Cchange it mind=E2=80=9D a few = times about whether and what it should disaggregate itself, and that may = cause Z to originate multiple different versions (i.e. sequence numbers) = of its own pos-disagg-prefix or neg-disagg-prefix message in quick = succession.

This= will also have the effect to sending more messages than you might = expect, but this is really different from the behavior you were seeing = before.

Before = you were seeing the identical TIE (same seq-nr) being sent multiple = times.  I would consider that to be real bug.

Now you might see = multiple versions of the same TIE (same tie-nr, different seq-nr) being = sent multiple times.  I don=E2=80=99t consider that to be a bug. =  Not a bug in the code at least.  It is just a consequence of = the RIFT protocol reacting quickly to multiple adjacencies going down in = quick succession after a node failure.


I = have a gut feeling that this =E2=80=9Chunting=E2=80=9D behavior will be = less if we do negative disaggregation everywhere (and no positive = disaggregation).

I am adding a =E2=80=9Cdisaggregation: negative-only=E2=80=9D = configuration knob to test that hypothesis.

Don=E2=80=99t try it out yet, the code = for this new knob is not finished yet. 

I will update you when it is.


=E2=80=94 Bruno








On May = 15, 2020, at 10:43 AM, Mariano Scazzariello <mscazzariello@os.uniroma3.it> wrote:

=20

Hi Bruno,
any news with the duplicated packets issue?

We just want to know that since 19th of May is the abstract submission deadline, so we should know if we can match it in = time.
Our "internal deadline" is Sunday 17th of May.

Thanks,
Mariano and Tommaso.

Il 12/05/2020 13:14, Mariano Scazzariello ha scritto:

Hi Bruno,
sorry for the spamming :D.

Today me and Tommy further investigated on the problem that I reported yesterday.
It seems that it is caused by TIEs sent multiple times by the same node.
We are not sure, we'll keep investigating, however we would like to have a feedback from you.

EXAMPLE OF MULTIPLE NEG DISAGG TIES
This example highlights what we saw yesterday during the call.
The first two packets are correct, since the ToFs send them to spine_2_1_1.  However after some time, the same ToFs resend = the same neg disagg TIEs, in fact the comparison is 0 (in red).

Sender        =             = Receiver            =      Originator     TIE Type         =            In DB? If so, = comparison result.
tof_1_2_1:if1         spine_2_1_1 =         121     =             Neg-Dis-Prefix          = No
tof_1_2_2:if1         spine_2_1_1 =         122     =             Neg-Dis-Prefix          No
....
tof_1_2_1:if1 =         spine_2_1_1     =     121             =     Neg-Dis-Prefix         = Yes, comparison is 0
tof_1_2_2:if1         spine_2_1_1 =         122     =             Neg-Dis-Prefix         Yes, = comparison is 0

...
tof_1_2_2:if1 =         spine_2_1_1     =     122             =     Neg-Dis-Prefix         = Yes, comparison is 0


EXAMPLE OF MULTIPLE NODE TIES
Here we can see that the ToFs send to spine_2_1_1 a new node TIE that is stored and reflected correctly (in green). Strange TIEs are highlighted in red.

Sender        =              = Receiver            =         Originator     TIE Type    =                In = DB? If so, comparison result.
tof_1_2_1:if1 =         spine_2_1_1     =         121         =         Node     =             =         Yes, comparison is -1
tof_1_2_2:if1         = spine_2_1_1             122 =                 Node         =             =     Yes, comparison is -1
spine_2_1_1:if2     tof_1_2_1 =             =     122         =         Node         =             =     Yes, comparison is -1    =                 =     <- CORRECT REFLECTION
spine_2_1_1:if3     tof_1_2_2 =             =     121         =         Node        =             =      Yes, comparison is -1    =                 =     <- CORRECT REFLECTION
...
tof_1_2_1:if1         spine_2_1_1 =             121 =                 Node         =             =     Yes, comparison is -1    =                 =    <- Spine receives Node TIE from tof_1_2_1 different from the one stored in the DB, should reflect to tof_1_2_2
tof_1_2_2:if1         spine_2_1_1 =             122 =                 Node         =             =     Yes, comparison is -1    =                 =    <- Spine receives Node TIE from tof_1_2_2 different from the one stored in the DB, should reflect to tof_1_2_1
spine_2_1_1:if2 =     tof_1_2_1         =         122         =         Node     =             =         Yes, comparison is 0        =             =     <- Reflection of tof_1_2_2 TIE to tof_1_2_1. Why comparison is 0 on ToF, if it is -1 on spine (it reflects wrong TIE?)?
spine_2_1_1:if3 =     tof_1_2_2         =         121         =         Node     =             =         Yes, comparison is 0        =             =     <- = Reflection of tof_1_2_1 TIE to tof_1_2_2. Why comparison is 0 on ToF, if it is -1 on spine (it reflects wrong TIE?)?
...
tof_1_2_1:if1 =         spine_2_1_1     =         121         =         Node     =             =         Yes, comparison is 0        =             =     <- tof_1_2_1 resends to spine_2_1_1 its own node TIE
tof_1_2_2:if1         = spine_2_1_1             122 =                 Node         =             =     Yes, comparison is 0    =                 =    
<- = tof_1_2_2 resends to spine_2_1_1 its own node TIE

Hope this is useful to hunt the problem!
Mariano and Tommaso.

Il 12/05/2020 00:55, Mariano Scazzariello ha scritto:

Another little update, the last for today since = it's 1AM :D

The final scenario is:
tof_1_2_2 sends its node TIE to its southbound adjacencies (spine_2_1_1/spine_3_1_1/spine_4_1_1). Each spine reflects it to tof_1_2_1.
tof_1_2_1 resends this TIE to spine_2_1_1/spine_3_1_1/spine_4_1_1. Spines bounce it back to tof_1_2_2.

So, the final question is: is that correct that the ToF re-sends southbound the node TIE received by southern reflection? Or is this a strange behaviour?

Good night,
Mariano and Tommaso.

Il 12/05/2020 00:06, Mariano Scazzariello ha scritto:

Little update:
the southern reflection is working properly. What we're seeing is this behaviour (similar to n.3 of previous mail). As example:

After spine_1_1_1 failure, = tof_1_2_1 sends a node TIE (with seq n.7, originated by tof_1_2_2) to spine_2_1_1/spine_3_1_1/spine_4_1_1. Spines bounce it back to tof_1_2_2.

It seems that tof_1_2_1 = reflects something that is already coming from a reflection since originator is tof_1_2_2 (?) Is that possible? Also, is this correct that a TIE is reflected to the same node that originated it?

We'll keep you updated.
Mariano and Tommaso.

Il 11/05/2020 23:09, Mariano Scazzariello ha scritto:
=20 Hi Bruno,
as disussed today we'll report the strange behaviours found in RIFT.

1. ToFs/Spines sending more than one neg = disagg TIE

Steps to reproduce: build a = FT with K=3D2 and R=3D1, after convergence destroy spine_1_1_1. This is the state after the failure (don't mind the numbers :D).
<jdcclkbcdlgpfggo.png= >

In the figure below, spine_3_1_1 interface = 0 (connected to leaf_3_0_1) sends 2 neg disagg TIEs after failure = time.

<jnilpccgldahgdmk.png= >

2. Southern Reflection = bounces PDUs back to the sender

Same scenario as before, spine_4_1_1 interface 3 (connected to tof_1_2_2) bounces back packets to tof_1_2_2 instead of sending them to tof_1_2_1
<fgffmbbocoomlknk.png= >

UPDATE: We = found that, for some reason, spine_3_1_1 sends reflection correctly. Interface 3 (connected to tof_1_2_2) sends TIEs coming from = tof_1_2_1:
<hbodnfifioifnhng.png= >
Me and Tommaso are investigating on that, however we have some difficulties on finding the code that reflects TIEs. Is the `unsol_flood_tie_packet_info` in Node class, = right?

3. Another strange behaviour?

tof_1_2_2 sends to spine_2_1_1 some = Node TIEs originated by tof_1_2_1, why?
<poionlajflebeigb.png= >
This screen wraps both the duplicated packets problem (229-233) and packet 228 is the "strange one".

Hope to hear from you soon,
Mariano and Tommaso.


= --Apple-Mail=_3FFDA71B-67C3-47A8-A21C-BE3E7D169771-- From nobody Sun May 17 10:35:49 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EF1AD3A09EA for ; Sun, 17 May 2020 10:35:48 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -0.197 X-Spam-Level: X-Spam-Status: No, score=-0.197 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LlkHmZqY7skv for ; Sun, 17 May 2020 10:35:46 -0700 (PDT) Received: from mail-il1-x129.google.com (mail-il1-x129.google.com [IPv6:2607:f8b0:4864:20::129]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1BB943A09E9 for ; Sun, 17 May 2020 10:35:46 -0700 (PDT) Received: by mail-il1-x129.google.com with SMTP id n11so7621508ilj.4 for ; Sun, 17 May 2020 10:35:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lrXYqPg2r91TfekSvmKeupfRgUApaC1krc0UVMroh+A=; b=riKMOji+gYcUaqEr0l96hg6Q33pL3z/+7QZr9rteWNbLvhhmRAZlaCVQwZtKYV1jot BoRDffWRkOgf5RHH3qcVDo0k/Lcd7jKE76UGRbhTXgU+c5MpgtLBw7ED/Hq31OxRmhzZ QPjzfLIbya2Gdhzt7rc+da60mtLxBagaPm949h/RNwWCAsHnq0h6EXyE5gNqptad4MrY TA6hgoZbVqhaR3CPitNPPWAhV1XGFRCEe8j5rcHBX3meRFn+zYENX8/jAdO4D0AXD4KZ A6nuwlq+52JiGbYVeTnJD7dlRqKOss95EWCz9AI3a107fqNWhGrph0A4C/WZN1MSSfBI 2GIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lrXYqPg2r91TfekSvmKeupfRgUApaC1krc0UVMroh+A=; b=fEDvMVN8OPjRyPHI6c4ftPpKHSOOI9BV02TqSmV+G3z9LBV7wwZRIE0qmFrvE40WM/ 2i7Qd+2S4baTtVC7nJtGDo8UXAZnqae+9B+2uvEqZ1dsvno4X0luxRR81NiyJSd5GmJx 6o92qg9TR8jptkW5xM29R/HtXWAIh5hYNbF625sWdJirpow+IAYH//fozizDxFUTdGob e/Wu4U5VUh2ncnv20dnGxtfD5VTNnSf1e9xoR1pTYrcxzFTpfmn+v1pqr6WEkRFiCVVS 4xgYlBVYaxjqdC2c3qRaHzXd6iKUBm4YaB0OtaJ9AuRMx8z2Hp2XaNW+RTBjCZMF5NgH wChw== X-Gm-Message-State: AOAM531/2XbcefYP+v54VoDorLKSEV4J5ldAq/cJHuVF4w2j4l8jNoXO wb+fgidTyrDJJj/apmXTiiEi7bSYFLNz5sXuaS0= X-Google-Smtp-Source: ABdhPJwMOhXN9BZYdyFxWiFDnEpg2P80z1Dv/84PP41Y16CM6M9S7kF4IAf6cH9AJjrxqlHp5Wk/iTuGyHcam/DtvGo= X-Received: by 2002:a92:4909:: with SMTP id w9mr13077095ila.302.1589736945262; Sun, 17 May 2020 10:35:45 -0700 (PDT) MIME-Version: 1.0 References: <4448e295-b6c3-d826-92db-1dd1ee7d5996@os.uniroma3.it> <6A19CEF0-606E-4CE9-9459-A7CB46BE59EA@gmail.com> <148a7b61-7dd0-ab67-9c77-61e337cdf953@os.uniroma3.it> <732175B4-C269-4B44-BFA6-0D6118436CE0@gmail.com> <9C5C0379-5277-4D38-BC31-E1898C8A2B18@gmail.com> <0E36293F-96E0-4994-ADFC-A4A819C98153@gmail.com> <9b3a2597-2e8d-6a15-1b23-894d0bf91d58@os.uniroma3.it> <869B95E0-99D2-495E-9D90-E4CCFE93E0A9@gmail.com> In-Reply-To: <869B95E0-99D2-495E-9D90-E4CCFE93E0A9@gmail.com> From: Tony Przygienda Date: Sun, 17 May 2020 10:34:06 -0700 Message-ID: To: Bruno Rijsman Cc: Mariano Scazzariello , "tommasocaiazzi@gmail.com" , rift@ietf.org Content-Type: multipart/alternative; boundary="000000000000e8a5d205a5db7929" Archived-At: Subject: Re: [Rift] RIFT strange behaviours discussed today X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 May 2020 17:35:49 -0000 --000000000000e8a5d205a5db7929 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable nice drilling but once it starts around convergence speed/scalability python is really not that much your friend. You'd need a proper system language. Mariano, once you start to push that kind of envelope you probably want to slowly test our scaled-up version ... -- tony On Sat, May 16, 2020 at 3:51 PM Bruno Rijsman wrote: > Hi Mariano and Tomasso, > > > I have made two big changes to the way messages are queued in RIFT-Python= . > > This code has been committed to the master branch. > > So it is ready for you to test, just in time for the paper deadline. > Although it is a bit risky to introduce such a large change with not much > time to fully =E2=80=9Csoak it in=E2=80=9D before the paper deadline. Als= o, starting Monday > morning I will be unreachable for a few days. I leave it up to you to > decide whether or not you want to use this new code for the paper. > > > Big change #1 > > In the old code, the TIES_TX, TIES_ACK, and TIES_REQ queue were all > serviced only once per second, no matter what. The TIES_RTX queue didn=E2= =80=99t > really do anything. > > TIDEs were sent once per 2 seconds (that did not change). > > In the new code, there are two queue for TIEs, TIE ACKs, and TIE REQs: > > (a) A fast tx_queue for the initial transmission after the item is > enqueued. It is serviced every 50ms. (With an optimization to make sure w= e > don=E2=80=99t run such a fast timer unless it is really needed - i.e. unl= ess there > is at least one entry in some fast queue.) > > (b) A slow rtf_queue for subsequent retransmission if needed. It is > serviced every 1000ms. > > See the new file msg_queues.py for details. > > > Big change #2 > > In the old code, if a node regenerated a local TIE for any reason, it was > not immediately reflooded. > > Instead we would have to wait up to 2 seconds for the regenerated TIE to > be advertised in a TIDE, and then up to 1 second for the other side to > request it, and the up to another 1 second for this node to react to the > request. > > I changed that: if a local TIE is regenerated for any reason, the TIE > itself is immediately put on the fast TIE tx_queue, so it will be sent > after 50ms. > > > These two changes combined make most of the problems that you saw go away= . > > You used see that a node would send a TIE, and then a second later *the > exact same* version of that TIE (same tie-nr, same seq-nr). > > This was because the TIRE was not sent fast enough to ack the TIE. > > That behavior should go away =E2=80=94 the TIRE is now sent much faster. > > In general, convergence should be much faster. > > > You may see some other behavior that you did not see before. > > If you kill a node in the topology, you may see some =E2=80=9Cadditional > intermediate states=E2=80=9D because reconvergence is so much faster. > > Consider for example, that node X is killed, and node X had adjacencies > with Y1, Y2, Y3, Y4, =E2=80=A6., Yn > > Each of those neighbor nodes Y1, Y2, =E2=80=A6., Yn will lose their adjac= ency with > X, and reflood their local node TIE. > > Now, consider that Y1, Y2, =E2=80=A6., Yn are also all adjacent to node Z= (this is > quite common in Clos topologies). > > So, Z is going to receive updated node TIEs from Y1, Y2, Y3, =E2=80=A6., = Yn. > > And (this is the important part), Z may ALSO receive pos-disagg-prefix an= d > neg-disagg-prefix TIEs from Y1, Y2, =E2=80=A6., Yn. > > Z receives these multiple pos-disagg-prefix and neg-disagg-prefix message= s > asynchronously. > > That may cause Z to =E2=80=9Cchange it mind=E2=80=9D a few times about wh= ether and what it > should disaggregate itself, and that may cause Z to originate multiple > different versions (i.e. sequence numbers) of its own pos-disagg-prefix o= r > neg-disagg-prefix message in quick succession. > > This will also have the effect to sending more messages than you might > expect, but this is really different from the behavior you were seeing > before. > > Before you were seeing the identical TIE (same seq-nr) being sent multipl= e > times. I would consider that to be real bug. > > Now you might see multiple versions of the same TIE (same tie-nr, > different seq-nr) being sent multiple times. I don=E2=80=99t consider th= at to be a > bug. Not a bug in the code at least. It is just a consequence of the RI= FT > protocol reacting quickly to multiple adjacencies going down in quick > succession after a node failure. > > > I have a gut feeling that this =E2=80=9Chunting=E2=80=9D behavior will be= less if we do > negative disaggregation everywhere (and no positive disaggregation). > > I am adding a =E2=80=9Cdisaggregation: negative-only=E2=80=9D configurati= on knob to test > that hypothesis. > > Don=E2=80=99t try it out yet, the code for this new knob is not finished = yet. > > I will update you when it is. > > > =E2=80=94 Bruno > > > > > > > > > On May 15, 2020, at 10:43 AM, Mariano Scazzariello < > mscazzariello@os.uniroma3.it> wrote: > > Hi Bruno, > any news with the duplicated packets issue? > > We just want to know that since 19th of May is the abstract submission > deadline, so we should know if we can match it in time. > Our "internal deadline" is Sunday 17th of May. > > Thanks, > Mariano and Tommaso. > Il 12/05/2020 13:14, Mariano Scazzariello ha scritto: > > Hi Bruno, > sorry for the spamming :D. > > Today me and Tommy further investigated on the problem that I reported > yesterday. > It seems that it is caused by TIEs sent multiple times by the same node. > We are not sure, we'll keep investigating, however we would like to have = a > feedback from you. > > EXAMPLE OF MULTIPLE NEG DISAGG TIES > This example highlights what we saw yesterday during the call. > The first two packets are correct, since the ToFs send them to > spine_2_1_1. However after some time, the same ToFs resend the same neg > disagg TIEs, in fact the comparison is 0 (in red). > > *Sender Receiver Originator TIE > Type In DB? If so, comparison result.* > tof_1_2_1:if1 spine_2_1_1 121 > Neg-Dis-Prefix No > tof_1_2_2:if1 spine_2_1_1 122 > Neg-Dis-Prefix No > .... > tof_1_2_1:if1 spine_2_1_1 121 > Neg-Dis-Prefix Yes, comparison is 0 > tof_1_2_2:if1 spine_2_1_1 122 > Neg-Dis-Prefix Yes, comparison is 0 > ... > tof_1_2_2:if1 spine_2_1_1 122 > Neg-Dis-Prefix Yes, comparison is 0 > > > EXAMPLE OF MULTIPLE NODE TIES > Here we can see that the ToFs send to spine_2_1_1 a new node TIE that is > stored and reflected correctly (in green). Strange TIEs are highlighted i= n > red. > > *Sender Receiver Originator TI= E > Type In DB? If so, comparison result.* > tof_1_2_1:if1 spine_2_1_1 121 Node > Yes, comparison is -1 > tof_1_2_2:if1 spine_2_1_1 122 Node > Yes, comparison is -1 > spine_2_1_1:if2 tof_1_2_1 122 Node > Yes, comparison is -1 <- CORRE= CT > REFLECTION > spine_2_1_1:if3 tof_1_2_2 121 Node > Yes, comparison is -1 <- > CORRECT REFLECTION > ... > tof_1_2_1:if1 spine_2_1_1 121 Node > Yes, comparison is -1 <- Spine > receives Node TIE from tof_1_2_1 different from the one stored in the DB, > should reflect to tof_1_2_2 > tof_1_2_2:if1 spine_2_1_1 122 Node > Yes, comparison is -1 <- Spine > receives Node TIE from tof_1_2_2 different from the one stored in the DB, > should reflect to tof_1_2_1 > spine_2_1_1:if2 tof_1_2_1 122 Node > Yes, comparison is 0 <- > Reflection of tof_1_2_2 TIE to tof_1_2_1. Why comparison is 0 on ToF, if = it > is -1 on spine (it reflects wrong TIE?)? > spine_2_1_1:if3 tof_1_2_2 121 Node > Yes, comparison is 0 <- > Reflection of tof_1_2_1 TIE to tof_1_2_2. Why comparison is 0 on ToF, if > it is -1 on spine (it reflects wrong TIE?)? > ... > tof_1_2_1:if1 spine_2_1_1 121 Node > Yes, comparison is 0 <- > tof_1_2_1 resends to spine_2_1_1 its own node TIE > tof_1_2_2:if1 spine_2_1_1 122 Node > Yes, comparison is 0 <- > tof_1_2_2 resends to spine_2_1_1 its own node TIE > > Hope this is useful to hunt the problem! > Mariano and Tommaso. > Il 12/05/2020 00:55, Mariano Scazzariello ha scritto: > > Another little update, the last for today since it's 1AM :D > > The final scenario is: > tof_1_2_2 sends its node TIE to its southbound adjacencies > (spine_2_1_1/spine_3_1_1/spine_4_1_1). Each spine reflects it to tof_1_2_= 1. > tof_1_2_1 resends this TIE to spine_2_1_1/spine_3_1_1/spine_4_1_1. Spines > bounce it back to tof_1_2_2. > > So, the final question is: is that correct that the ToF re-sends > southbound the node TIE received by southern reflection? Or is this a > strange behaviour? > > Good night, > Mariano and Tommaso. > Il 12/05/2020 00:06, Mariano Scazzariello ha scritto: > > Little update: > the southern reflection is working properly. What we're seeing is this > behaviour (similar to n.3 of previous mail). As example: > > After spine_1_1_1 failure, tof_1_2_1 sends a node TIE (with seq n.7, > originated by tof_1_2_2) to spine_2_1_1/spine_3_1_1/spine_4_1_1. Spines > bounce it back to tof_1_2_2. > > It seems that tof_1_2_1 reflects something that is already coming from a > reflection since originator is tof_1_2_2 (?) Is that possible? Also, is > this correct that a TIE is reflected to the same node that originated it? > > We'll keep you updated. > Mariano and Tommaso. > Il 11/05/2020 23:09, Mariano Scazzariello ha scritto: > > Hi Bruno, > as disussed today we'll report the strange behaviours found in RIFT. > > 1. *ToFs/Spines sending more than one neg disagg TIE* > > Steps to reproduce: build a FT with K=3D2 and R=3D1, after convergence de= stroy > spine_1_1_1. This is the state after the failure (don't mind the numbers > :D). > > > In the figure below, spine_3_1_1 interface 0 (connected to leaf_3_0_1) > sends 2 neg disagg TIEs after failure time. > > > > 2.* Southern Reflection bounces PDUs back to the sender* > Same scenario as before, spine_4_1_1 interface 3 (connected to tof_1_2_2) > bounces back packets to tof_1_2_2 instead of sending them to tof_1_2_1 > > > *UPDATE: *We found that, for some reason, spine_3_1_1 sends reflection > correctly. Interface 3 (connected to tof_1_2_2) sends TIEs coming from > tof_1_2_1: > > Me and Tommaso are investigating on that, however we have some > difficulties on finding the code that reflects TIEs. Is the > `unsol_flood_tie_packet_info` in Node class, right? > > 3. > *Another strange behaviour? * > > tof_1_2_2 sends to spine_2_1_1 some Node TIEs originated by tof_1_2_1, wh= y? > > This screen wraps both the duplicated packets problem (229-233) and packe= t > 228 is the "strange one". > > Hope to hear from you soon, > Mariano and Tommaso. > > > _______________________________________________ > RIFT mailing list > RIFT@ietf.org > https://www.ietf.org/mailman/listinfo/rift > --000000000000e8a5d205a5db7929 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
nice drilling but once it starts around convergence s= peed/scalability python is really not that much your friend. You'd need= a proper system language.

Mariano, once you = start to push that kind of envelope you probably want to slowly test our sc= aled-up version ...

-- tony
<= br>
--000000000000e8a5d205a5db7929-- From nobody Sun May 17 16:02:31 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8694A3A0840 for ; Sun, 17 May 2020 16:02:29 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -0.199 X-Spam-Level: X-Spam-Status: No, score=-0.199 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=hotmail.com Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XC165vjsMrD2 for ; Sun, 17 May 2020 16:02:26 -0700 (PDT) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10olkn2015.outbound.protection.outlook.com [40.92.41.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 270373A0844 for ; Sun, 17 May 2020 16:02:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kZaZlUqwnLFnk1E2l2HkoMan6SAzvviyMSMrEf6bngK7dOoRkaoaiwFIeMlsiYEPQet0jOZ512ft3sfWOMxOVXCNIpE1WTBmePSZACOYZEXO4ZviO8nNvJws2W4+A/XNX9LiUcVN7h+lgx+gX6Wd98Q5/5sgRNy0HGONFZIxZrUK4OWA3M2ar2h4FsyDbUCPJ4vw8fwfWUz6lu96TMoSlStFR8xdEvuUOLRgD7M9HK6K+fhIQ+kZkgdgnHdtu62xgt7aaCy7ZKsiVXOrwHhlBRX1xLP4/aNtmFMmNvFxOZp6trcv2G4n35EMPcViUlqe68zFgQTZ4XAQmXCs/68zaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PfpGMHo3zmr+bVcgWTqvgPxrU/F7gWYRER7XlnDFTTI=; b=aC93PC8GTIVKBMlRm8skFeW98ejyyrvvZyCzM1Z34Klw8sxwhqq/kJ7SXdTEtHMyt1O7NyvlkaMpHmpb2ps556UNejRh5wtgvQF1vJtZ9c0Nrm+FyDkPh10956UeTjF+8DfzelmuW+nb+Ntqk7cnaJGb1ftfrLTYfC5hs1rv+xJwH3QeS4eWWzXiCO0IsMsVgaS8J8321M71u8UkBZh/j6RYTY7NZjcNXxmfiHYhy9r8ISJWnHJ9ymWFXmHevwHNriWf1Bbh2VRrog+IcTL3EAwfIbMmRWGvQG1taHgF7snMzcGQUD5NQVeZJFrqNWZOv+fBDNhcTIiyR9EH+OciHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PfpGMHo3zmr+bVcgWTqvgPxrU/F7gWYRER7XlnDFTTI=; b=gZrx3HjaBRnPC9LpwSbLTCj+7lYsMAvIO4KfnZ04tlNsx1iBo0eRbtdBQIIn/8Pm1D/iojic78Yys6Xu6DNFCYSO22I7o/OQN7HvalcDbwFrOXkvxFbRRwzQfzNFWx4goRZZlz63gYe3hHmlgUlB+eiwxqxXhbbCk8b2ZFMv4+tOExtom6zUkOSdGdK1LM6i5iMvb3McUbbQB5lGxe2xZq3jKgXih5MeKBGWu1AyiKThoL7tgj7u+dKwq7HW57SuFsyzy0jndsfiFRI7y1DpMl0bUbWVIEYZCfuSlWv1eK3iWZNfgGj5Q+EX9L10YUvxc4VEdUaMaBFL+rsE9WX+8g== Received: from MW2NAM10FT034.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::42) by MW2NAM10HT126.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::233) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.19; Sun, 17 May 2020 23:02:04 +0000 Received: from BYAPR06MB5845.namprd06.prod.outlook.com (2a01:111:e400:7e87::41) by MW2NAM10FT034.mail.protection.outlook.com (2a01:111:e400:7e87::231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.19 via Frontend Transport; Sun, 17 May 2020 23:02:04 +0000 Received: from BYAPR06MB5845.namprd06.prod.outlook.com ([fe80::7033:3bf:78c4:3ef9]) by BYAPR06MB5845.namprd06.prod.outlook.com ([fe80::7033:3bf:78c4:3ef9%4]) with mapi id 15.20.3000.033; Sun, 17 May 2020 23:02:04 +0000 From: Bruno Rijsman To: Antoni Przygienda CC: Tony Przygienda , "rift@ietf.org" Thread-Topic: [Rift] Negative disaggregation feature guide Thread-Index: AQHWKXf3Q/xs7t0/3UuNVqLdtIM2cqimncCAgACc0dCAAHCAYIAADK8AgAAA4+CAACjmgIAAAYyAgAAEcYCABQPlgA== Date: Sun, 17 May 2020 23:02:04 +0000 Message-ID: <4E305EBE-1287-44AA-AF26-66152576E56E@hotmail.com> References: <068412A2-1E85-4327-A50E-F6138C6D7EC0@hotmail.com> <9E819710-00BC-4285-9146-F655CAA7E1CA@hotmail.com> <432D1BE9-8BC3-4627-ACA5-72AA52A79C8C@hotmail.com> <4272B942-2C6F-4974-8515-E295A6BFF757@hotmail.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:3E1A903D197DC33A899135056AA02D2B6A0A46E007C4784F766550FA1DBE7CB1; UpperCasedChecksum:CFEAAE53248DA9CBB61E00E7098203BD83A64CA298FA569C2C6AF75C5CD4E071; SizeAsReceived:7516; Count:46 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [TKy8oax3YarzIpRF1NmQ9GjQiDi91ukf] x-ms-publictraffictype: Email x-incomingheadercount: 46 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 93960292-87b2-42c9-7004-08d7fab650c8 x-ms-traffictypediagnostic: MW2NAM10HT126: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eDd1loEzX9C1ChDezNY5ZwP/ekONRfffutqTmkNaYbEOwHWCD/k3tDQJZBgHZmVpY8u8OD+LxIrc3TSFtkg8gV3qJueWgl+hWGKOicRms79mFBoAn9jz8w9s0DJL4AJ0v1EvV8ngBsDg4/ahmbP+o5LtHf2joo8vXoJhNrFwPpGQKEMKmE3i/mpUMBXO3RuYSoQHXzZZJhTl/iICXQb0wza4CDNAWQm+WEy4dbYOInlg45FwTbAgPBgPHb4FycxE x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR06MB5845.namprd06.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:; DIR:OUT; SFP:1901; x-ms-exchange-antispam-messagedata: o5/wLXTFXsJPrZgDXebDzwgJVAxeiSC+XnFmyTavWr1T7k/wAa1Xck9NbvFyQQ5XjqizDp47MojbC+gCRZ9ASkxXQDUghk9s5epYUMnuXVtCQELchugc5PNWUli7yEtkk9+ZWokjO4S/CeXI7zDhHw== x-ms-exchange-transport-forked: True Content-Type: multipart/alternative; boundary="_000_4E305EBE128744AAAF2666152576E56Ehotmailcom_" MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 93960292-87b2-42c9-7004-08d7fab650c8 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 May 2020 23:02:04.2019 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2NAM10HT126 Archived-At: Subject: Re: [Rift] Negative disaggregation feature guide X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 May 2020 23:02:30 -0000 --_000_4E305EBE128744AAAF2666152576E56Ehotmailcom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgVG9ueSwNCg0KSSByYW4gaW50byB2YXJpb3VzIGNvbXBsaWNhdGlvbnMgYW5kIGEgcm9hZC1i bG9jayB3aGlsZSB3b3JraW5nIG9uIHRoZSDigJxkaXNhZ2dyZWdhdGlvbiBuZWdhdGl2ZS1vbmx5 4oCdIGtub2IgaW4gUklGVC1weXRob24sIHNvIEkgd2lsbCBiZSByaXBwaW5nIHRoYXQga25vYiBv dXQgb2YgbXkgY29kZS4NCg0KSW5zdGVhZCBJIHdpbGwgc3RpY2sgdG8gdGhlIHRocmVlIGNvbW1h bmRtZW50cyBhcyBoYW5kZWQgZG93biBvbiB0aGUgc3RvbmUgdGFibGV0IGJ5IHRoZSB3aXNlIFJJ RlQgZ29kcyBmcm9tIGFib3ZlIDotKQ0KDQpPbiBNYXkgMTQsIDIwMjAsIGF0IDEyOjI2IFBNLCBB bnRvbmkgUHJ6eWdpZW5kYSA8cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8bWFpbHRv OnByej00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPj4gd3JvdGU6DQoNCkluIGEgcHJvYmFi bHkgbW9yZSBkZXRhaWxlZCB3YXkgd2l0aCBhIGxpdHRsZSBzdG9uZSB0YWJsZXQgSSBzdWdnZXN0 IPCfmIkNCg0KDQogIDEuICBZb3UgU0hBTEwgbmVnYXRpdmVseSBkaXNhZ2dyZWdhdGUgb25seSBp ZiB5b3XigJlyZSBUb0YgYW5kIGhhdmUgaG9yaXpvbnRhbCBsaW5rcyAocmluZykNCiAgMi4gIFlv dSBTSEFMTCBwcm9wYWdhdGUgdHJhbnNpdGl2ZWx5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uDQog IDMuICBZb3UgU0hBTEwgdXNlIHBvc2l0aXZlIGlmIHlvdeKAmXJlIG5vdCBUb0Ygb3IgaGF2ZSBu byBob3Jpem9udGFsDQoNCg0KT2YgY291cnNlLCBhbnkgdmVuZG9yLCBldmVuIG9wZW4gc291cmNl ZCBvbmUgY2FuIGFkZCBhbnkgZmxhdm9yIG9mIGtub2JzIHRoYXQgbWFrZXMgdGhlaXIgZGlzaCB1 bmlxdWUgZXZlbiBpZiBpdCBicmVha3MgdGhlIHNwZWMgc3RyaWN0bHkgc3BlYWtpbmcg4oCmIFNv IGRpZCBJIPCfmIkNCg0KLS0tIHRvbnkNCg0KRnJvbTogVG9ueSBQcnp5Z2llbmRhIDx0b255c2ll dGZAZ21haWwuY29tPG1haWx0bzp0b255c2lldGZAZ21haWwuY29tPj4NCkRhdGU6IFRodXJzZGF5 LCBNYXkgMTQsIDIwMjAgYXQgMTE6MTIgQU0NClRvOiBCcnVubyBSaWpzbWFuIDxicnVub3JpanNt YW5AaG90bWFpbC5jb208bWFpbHRvOmJydW5vcmlqc21hbkBob3RtYWlsLmNvbT4+DQpDYzogIlBh c2NhbCBUaHViZXJ0IChwdGh1YmVydCkiIDxwdGh1YmVydEBjaXNjby5jb208bWFpbHRvOnB0aHVi ZXJ0QGNpc2NvLmNvbT4+LCAicmlmdEBpZXRmLm9yZzxtYWlsdG86cmlmdEBpZXRmLm9yZz4iIDxy aWZ0QGlldGYub3JnPG1haWx0bzpyaWZ0QGlldGYub3JnPj4sIE1lbGNoaW9yIEFlbG1hbnMgPG1h ZWxtYW5zQGp1bmlwZXIubmV0PG1haWx0bzptYWVsbWFuc0BqdW5pcGVyLm5ldD4+LCBDaHJpc3Rp YW4gR3JhZiA8Y2dyYWZAanVuaXBlci5uZXQ8bWFpbHRvOmNncmFmQGp1bmlwZXIubmV0Pj4sIE9s aXZlciBTdGV1ZGxlciA8b3N0ZXVkbGVyQGp1bmlwZXIubmV0PG1haWx0bzpvc3RldWRsZXJAanVu aXBlci5uZXQ+PiwgT2xpdmllciBWYW5kZXphbmRlIDxvdmFuZGV6YW5kZUBqdW5pcGVyLm5ldDxt YWlsdG86b3ZhbmRlemFuZGVAanVuaXBlci5uZXQ+PiwgQW50b25pIFByenlnaWVuZGEgPHByekBq dW5pcGVyLm5ldDxtYWlsdG86cHJ6QGp1bmlwZXIubmV0Pj4sICJ0b21tYXNvY2FpYXp6aUBnbWFp bC5jb208bWFpbHRvOnRvbW1hc29jYWlhenppQGdtYWlsLmNvbT4iIDx0b21tYXNvY2FpYXp6aUBn bWFpbC5jb208bWFpbHRvOnRvbW1hc29jYWlhenppQGdtYWlsLmNvbT4+LCBKZWZmIFRhbnRzdXJh IDxqZWZmdGFudC5pZXRmQGdtYWlsLmNvbTxtYWlsdG86amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20+ PiwgWmhhb2h1aSBaaGFuZyA8enpoYW5nQGp1bmlwZXIubmV0PG1haWx0bzp6emhhbmdAanVuaXBl ci5uZXQ+PiwgWmhhb2h1aSBaaGFuZyA8enpoYW5nQGp1bmlwZXIubmV0PG1haWx0bzp6emhhbmdA anVuaXBlci5uZXQ+PiwgSmVmZnJleSBaaGFuZyA8enpoYW5nMjAwM0BnbWFpbC5jb208bWFpbHRv Onp6aGFuZzIwMDNAZ21haWwuY29tPj4NClN1YmplY3Q6IFJlOiBOZWdhdGl2ZSBkaXNhZ2dyZWdh dGlvbiBmZWF0dXJlIGd1aWRlDQoNCltFeHRlcm5hbCBFbWFpbC4gQmUgY2F1dGlvdXMgb2YgY29u dGVudF0NCg0KIG15IHRob3VnaHRzOg0KDQpuZWdhdGl2ZSBpcyBzZXJpb3VzbHkgbW9yZSBjb21w bGV4IHRvICBpbXBsZW1lbnQgYW5kIHVuZGVyc3RhbmQgb3BlcmF0aW9uYWxseSBhbmQgb25seSBu ZWVkZWQgb24gbXVsdGktcGxhbmUgZmFicmljcywgdGFodCdzIHdoeSBwb3NpdGl2ZSBpcyBLSVNT IDstKSBBbHNvLCBuZWdhdGl2ZSBhbHdheXMgZm9yY2VzIHlvdSB0byByaW5nIHRoZSB0b3Agb2Yg dGhlIGZhYnJpYyB3aGljaCBpbiBzaW5nbGUgcGxhbmUgZGVzaWduIGlzIGFuIHVubmVjZXNzYXJ5 IHJlcXVpcmVtZW50Lg0KDQpJIGZvcmVzZWUgdmVuZG9ycyBub3QgaW1wbGVtZW50aW5nIG5lZ2F0 aXZlIGZvciBzaW1wbGljaXR5LCB2ZXJ5IHNtYWxsIGZvb3RwcmludCBmYWJyaWNzLg0KDQp0aGUg ZGlzY3Vzc2lvbiBhYm91dCBjYXBhYmlsaXR5IGFkdmVydGlzZW1lbnQgaXMgaW50ZXJlc3Rpbmcs IHdlIGNhbiBqdXN0IGFkZCBvbmUgYml0IG9uIHRoZSBub2RlIGNhcGFiaWxpdGllcyBlbGVtZW50 LCBtYWtlIGl0IG9wdGlvbmFsIGFuZCBkZWZhdWx0IHRydWUuDQoNCk9mIGNvdXJzZSBhbiBpbXBs ZW1lbnRhdGlvbiB0YWh0IHVuZGVyc3RhbmRzIHRoYXQgYWxsIGludm9sdmVkIG5vZGVzIHVuZGVy c3RhbmQgbmVnYXRpdmUgaXMgZnJlZSB0byB1c2UgbmVnYXRpdmUgaW5zdGVhZCBvZiBwb3NpdGl2 ZSB0aGVuLg0KDQotLSB0b255DQoNCk9uIFRodSwgTWF5IDE0LCAyMDIwIGF0IDExOjA1IEFNIEJy dW5vIFJpanNtYW4gPGJydW5vcmlqc21hbkBob3RtYWlsLmNvbTxtYWlsdG86YnJ1bm9yaWpzbWFu QGhvdG1haWwuY29tPj4gd3JvdGU6DQpCcm9hZGVuaW5nIGEgZGlzY3Vzc2lvbiBvbiBuZWdhdGl2 ZSBkaXNhZ2dyZWdhdGlvbiB0byB0aGUgUklGVCBtYWlsaW5nIGxpc3QuDQoNCk5vdyB0aGF0IHdl IGhhdmUgaW1wbGVtZW50ZWQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW4gUklGVC1QeXRob24s IGFuZCBub3cgdGhhdCB3ZSBhcmUgZ2V0dGluZyBzb21lIG9wZXJhdGlvbmFsIGV4cGVyaWVuY2Ug d2l0aCBpdCwgdGhlIGZvbGxvd2luZyBpcyBiZWNvbWluZyBtb3JlIGFuZCBtb3JlIGV2aWRlbnQ6 DQoNCkl0IHNlZW1zIHRvIHVzIChCcnVubyBhbmQgUGFzY2FsLCBmb3Igbm93KSB0aGF0IG9uY2Ug bmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaXMgaW1wbGVtZW50ZWQsIHRoZXJlIGlzIHJlYWxseSBu byBuZWVkIGZvciBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhbnkgbW9yZS4NCg0KRXZlcnkgdXNl IGNhc2UgdGhhdCBjYW4gYmUgc29sdmVkIGJ5IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGNhbiAo YXMgZmFyIGFzIHdlIGNhbiBjdXJyZW50bHkgdGVsbCkgYWxzbyBiZSBzb2x2ZWQgYnkgbmVnYXRp dmUgZGlzYWdncmVnYXRpb24uDQoNCkZ1cnRoZXJtb3JlLCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlv biBzb2x2ZXMgdGhlIHByb2JsZW1zIGluIGEgZmFyIHNpbXBsZXIgYW5kIG1vcmUgZWxlZ2FudCB3 YXk6IHRoZXJlIGFyZSBmZXdlciBhZHZlcnRpc2luZyBub2RlcyBhbmQgZmV3ZXIgYWR2ZXJ0aXNl ZCBUSUVzIGludm9sdmVkLCBhbmQgd2UgZG9u4oCZdCBoYXZlIHRoZSBzeW5jaHJvbml6YXRpb24g aXNzdWUgdGhhdCBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBoYXMgdGhhdCBwb3RlbnRpYWxseSBj YXVzZXMgaW5jYXN0IHByb2JsZW1zLg0KDQpUaHVzLCBhdCB0aGUgdmVyeSBsZWFzdCwgaXQgbWFr ZXMgc2Vuc2UgdG8gcmVjb21tZW5kIHRoYXQgaW4gYSBnaXZlbiBmYWJyaWMgd2UgdXNlIGVpdGhl ciBvbmx5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIG9ubHkgb3IgcG9zaXRpdmUgZGlzYWdncmVn YXRpb24gb25seSwgd2l0aCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBiZWluZyB0aGUgZGVmYXVs dC4NCg0KSWYgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFyZSBlbmFibGVk IHNpbXVsdGFuZW91c2x5IGluIG9uZSBhbmQgdGhlIHNhbWUgZmFicmljLCBldmVyeXRoaW5nIHN0 aWxsIHdvcmtzIGZpbmUgYXMgZmFyIGFzIHdlIGNhbiBzZWUuIEJ1dCB0aGVyZSBhcmUgc29tZSDi gJxpbnRlcmVzdGluZ+KAnSBpbnRlcmFjdGlvbnMgdGhhdCBtYWtlIHRoaW5ncyB1bm5lY2Vzc2Fy aWx5IGNvbXBsZXggYW5kIHBvdGVudGlhbGx5IGZyYWdpbGUuDQoNCklmIHN1cHBvcnQgZm9yIG5l Z2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIG1hbmRhdG9yeSwgYW5kIGlmIG91ciBhc3Nlc3NtZW50 IHRoYXQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gY2FuIHNvbHZlIGFsbCB1c2UgY2FzZXMgaXMg Y29ycmVjdCwgdGhlbiB3ZSBjb3VsZCBnbyBvbmUgYm9sZCBzdGVwIGZ1cnRoZXIgYW5kIGNvbXBs ZXRlbHkgcmVtb3ZlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGZyb20gdGhlIHNwZWNpZmljYXRp b24uDQoNClRob3VnaHRzPw0KDQrigJQgQnJ1bm8NCg0KDQpPbiBNYXkgMTQsIDIwMjAsIGF0IDEw OjQ4IEFNLCBQYXNjYWwgVGh1YmVydCAocHRodWJlcnQpIDxwdGh1YmVydEBjaXNjby5jb208bWFp bHRvOnB0aHViZXJ0QGNpc2NvLmNvbT4+IHdyb3RlOg0KDQpIZWxsbyBCcnVubzoNCg0KSSBsaWtl IHlvdXIgbmVnYXRpdmUtb25seSBkZWZhdWx0IGJlY2F1c2UgaXQgaXMgcHJvYmFibHkgdGhlIHNh ZmVzdC4gTGV0IG1lIGVsYWJvcmF0ZS4uDQoNCnBhcnRpdGlvbmluZyBzYXZlcyBhIGxvdCBtb3Jl IHBvcnRzIHBlciBUb0Ygbm9kZSB0aGFuIHRoZSByaW5nIGNvc3Qgc28gaXQgZG9lcyBub3QgbWF0 dGVyLg0KDQpJZiB5b3UgZW5hYmxlIG5lZ2F0aXZlLCB0aGVyZeKAmXMgbm8gcG9pbnQgaW4gZG9p bmcgYW55IHBvc2l0aXZlIGF0IGFsbCwgaXMgdGhlcmU/IFNvIHdoYXQgZG8gd2UgdHJ5IHRvIHNh dmUgYnkgY29tYmluaW5nPyBJbiB5b3VyIGV4YW1wbGUsIEkgZ3Vlc3MgdGhhdCBzdXBlciAxIDIg aGFkIHRvIHJldHJhY3QgdGhlIHBvc2l0aXZlIGRpc2FnIGFuZCB0aGVuIGRvIG5lZ2F0aXZlIGlu c3RlYWQgd2hlbiB0aGUgbGluayB0byBzcGluZSAxIDEgZmVsbC4gV2FzIHRoYXQgbm90IGEgYml0 IGNvbXBsZXggYW5kIGVycm9yIHByb25lPw0KDQpBbHNvIEnigJltIG5vdCBjbGVhciBob3cgd2Ug Y2FuIGFsd2F5cyBkZWNpZGUgdGhhdCBkeW5hbWljYWxseSBhbmQgSSBkbyBub3QgYmVsaWV2ZSB0 aGF0IHdlIHNwZWNpZmllZCB0aGF0LiBTbyBJIHVuZGVyc3RhbmQgdGhhdCBpdOKAmXMgbW9yZSBs aWtlIGEgdXNlIGNhc2UgdGhpbmd5LCBsaWtlIGEgY29uZmlndXJhdGlvbiB0aGF0IHdvdWxkIGJl IGFkYXB0ZWQgdG8gdGhlIHVzZSBjYXNlLg0KDQo9PiBkbyBub3QgY29uZmlndXJlIGJvdGggYXQg dGhlIHNhbWUgdGltZSB1c2UgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGRpc2FnLg0KDQpX ZSBkbyBub3QgdHJ5IHRvIGRvIHBvc2l0aXZlIGRpc2FnIHRyYW5zaXRpdmVseS4gU28gaWYgdGhl cmUgaXMgYSBuZWVkIGZvciB0cmFuc2l0aXZlLCB5b3UgaGF2ZSB0byB1c2UgbmVnYXRpdmUuICBJ biBhIG11bHRpcGxhbmUgY2FzZSwgdGhlcmXigJlzIHVzdWFsbHkgKGFzIGluIHlvdXIgcGljdHVy ZSkgb25lIFRvUCBwZXIgcGxhbmUgaW4gZWFjaCBQb0QsIGFuZCBhIGZpcnN0IGxpbmsgZmFpbHVy ZSAoc2F5IFNwaW5lIDEgMSB0byBsZWFmIDEgMSkgY2FuIGFscmVhZHkgY2F1c2UgYSBmYWxsZW4g bGVhZjogbGVhZiAxIDEgaXMgbm8gbW9yZSByZWFjaGFibGUgd2l0aGluIHBsYW5lIDEuIFRoaXMg dGVsbHMgeW91IHRoYXQgYWxsIGxlYXZlcyBpbiB0aGUgb3RoZXIgUG9EcyBtdXN0IGF2b2lkIHRo YXQgcGxhbmUsIGFuZCB0aGF04oCZcyBhIGxlYWYgZGVjaXNpb247IHdoaWNoIHRlbGxzIHlvdSB0 aGF0IHlvdSBuZWVkIHRvIHJlY3Vyc2UgdHJhbnNpdGl2ZWx5IGRvd24uIFRoaXMgaW5kaWNhdGVz IHRoYXQgbmVnYXRpdmUgbXVzdCBiZSBhY3RpdmF0ZWQgaW4gYSBoaWdobHkgcGFydGl0aW9uZWQg KG1lYW5pbmcgbG93IHJlZHVuZGFuY3kpIG11bHRpcGxhbmUuDQoNClNheSB3ZSB0cnkgdG8gdXNl IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIHRyYW5zaXRpdmVseSBpbiBhIFRvRiB0aGF0IGlzIHBh cnRpdGlvbmVkIGxpa2UgaW4gcGxhbmVzLCB5b3XigJlkIHJ1biBhIHJpc2sgdGhhdCBub25lIG9m IHRoZSBUb0Ygbm9kZXMgdGhhdCBjYW4gc3RpbGwgcmVhY2ggdGhlIGxlYWYgY2FuIHNlZSAodGhy b3VnaCBzb3V0aCByZWZsZWN0aW9uKSB0aGUgVG9GIG5vZGUgdGhhdCBjYW5ub3Qgc28gdGhleSBk byBub3Qga25vdyB0aGV5IG5lZWQgdG8gZGlzYWcuIFNvIHlvdSBlbmQgdXAgbmVlZGluZyB0aGUg c2FtZSByaW5nIGFzIGZvciBuZWdhdGl2ZSwgdGhlIHNvdXRoZXJuIHJlZmxlY3Rpb24gYmVjb21l IG1vc3RseSB1c2VsZXNzIGFuZCB0aGUgYmVuZWZpdHMgb2YgcG9zaXRpdmUgYXJlIGdvbmUuDQoN ClBhcnRpdGlvbm5lZCBUb0YgPT4gbmVnYXRpdmUNCg0KSSB0cnVzdCB0aGF0IHdlIGNhbiB1c2Ug cG9zaXRpdmUgaW4gYSBoaWdobHkgcmVkdW5kYW50IGFuZCBzeW1tZXRyaWNhbCBub24tcGFydGl0 aW9uZWQgVG9GLiBJZiBubyBvbmUgY2FuIHJlYWNoIHRoZSBsZWFmIGFueW1vcmUgKGxpa2UgaXTi gJlzIGRlYWQpIHdlIGhhdmUgbm8gaXNzdWUgc2luY2UgaXQgc2hvdWxkIG5vdCBiZSBkaXNhZ2dy ZWdhdGVkLCBqdXN0IHVzZSB0aGUgZGlzY2FyZHMgcm91dGUgYXQgYW55IFRvRiBub2RlLiBJZiB5 b3UgaGF2ZSBlbm91Z2ggcmVkdW5kYW5jeSBhbmQgbm8gcGFydGl0aW9uLCAgdGhlcmUgd2lsbCBh bHdheXMgYmUgbm9kZXMgdGhhdCBjYW4gYm90aCByZWFjaCBhIGxlYWYgYW5kIGRpc2NvdmVyIHRo YXQgYSBwZWVyIGRvZXMgbm90Lg0KDQo9PiBQb3NpdGl2ZSBpcyBpbmRpY2F0ZWQgZm9yIGEgdmVy eSBzcGVjaWZpYyB1c2UgY2FzZSwgaWRlYWxseSAyIGxldmVscyBhbmQgZnVsbHkgbWVzaGVkLiBN YXliZSB0aGF04oCZcyBlbm91Z2ggZGVwbG95bWVudHMgdG8ganVzdGlmeSB0aGUgZmVhdHVyZSBp biB0aGUgY29kZS4NCg0KU28gdGhlIHF1ZXN0aW9uIGlzIHJlYWxseSB0aGF0IGJsdXJyeSB6b25l IGJldHdlZW4gaGlnaGx5IHJlZHVuZGFudCBzaW5nbGUgcGxhbmUgYW5kIGhpZ2hseSBwYXJ0aXRp b25lZCBtdWx0aXBsYW5lIHdoYXQgc2hvdWxkIG9uZSBkbz8gSSBiZWNvbWVzIGEgcmlzay9iZW5l Zml0IGp1ZGdlbWVudOKApiBJZiBuZWdhdGl2ZSBpcyBpbXBsZW1lbnRlZCBhbmQgdGhlIHJpbmcg aXMgdGhlcmUsIEnigJlkIHVzZSBpdCwgYmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4NCg0KVGFrZSBj YXJlDQoNClBhc2NhbA0KDQoNCg0KRnJvbTogQnJ1bm8gUmlqc21hbiA8YnJ1bm9yaWpzbWFuQGhv dG1haWwuY29tPG1haWx0bzpicnVub3JpanNtYW5AaG90bWFpbC5jb20+Pg0KU2VudDogamV1ZGkg MTQgbWFpIDIwMjAgMTc6MzYNClRvOiBQYXNjYWwgVGh1YmVydCAocHRodWJlcnQpIDxwdGh1YmVy dEBjaXNjby5jb208bWFpbHRvOnB0aHViZXJ0QGNpc2NvLmNvbT4+DQpDYzogTWVsY2hpb3IgQWVs bWFucyA8bWFlbG1hbnNAanVuaXBlci5uZXQ8bWFpbHRvOm1hZWxtYW5zQGp1bmlwZXIubmV0Pj47 IENocmlzdGlhbiBHcmFmIDxjZ3JhZkBqdW5pcGVyLm5ldDxtYWlsdG86Y2dyYWZAanVuaXBlci5u ZXQ+PjsgT2xpdmVyIFN0ZXVkbGVyIDxvc3RldWRsZXJAanVuaXBlci5uZXQ8bWFpbHRvOm9zdGV1 ZGxlckBqdW5pcGVyLm5ldD4+OyBPbGl2aWVyIFZhbmRlemFuZGUgPG92YW5kZXphbmRlQGp1bmlw ZXIubmV0PG1haWx0bzpvdmFuZGV6YW5kZUBqdW5pcGVyLm5ldD4+OyBUb255IFByenlnaWVuZGEg PHRvbnlzaWV0ZkBnbWFpbC5jb208bWFpbHRvOnRvbnlzaWV0ZkBnbWFpbC5jb20+PjsgQW50b25p IFByenlnaWVuZGEgPHByej00MGp1bmlwZXIubmV0QGRtYXJjLmlldGYub3JnPG1haWx0bzpwcno9 NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZz4+OyB0b21tYXNvY2FpYXp6aUBnbWFpbC5jb208 bWFpbHRvOnRvbW1hc29jYWlhenppQGdtYWlsLmNvbT47IEplZmYgVGFudHN1cmEgPGplZmZ0YW50 LmlldGZAZ21haWwuY29tPG1haWx0bzpqZWZmdGFudC5pZXRmQGdtYWlsLmNvbT4+OyBKZWZmcmV5 IChaaGFvaHVpKSBaaGFuZyA8enpoYW5nQGp1bmlwZXIubmV0PG1haWx0bzp6emhhbmdAanVuaXBl ci5uZXQ+PjsgSmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgPHp6aGFuZz00MGp1bmlwZXIubmV0QGRt YXJjLmlldGYub3JnPG1haWx0bzp6emhhbmc9NDBqdW5pcGVyLm5ldEBkbWFyYy4uaWV0Zi5vcmc+ PjsgSmVmZnJleSBaaGFuZyA8enpoYW5nMjAwM0BnbWFpbC5jb208bWFpbHRvOnp6aGFuZzIwMDNA Z21haWwuY29tPj4NClN1YmplY3Q6IFJlOiBOZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmZWF0dXJl IGd1aWRlDQoNCg0KT24gTWF5IDE0LCAyMDIwLCBhdCA4OjUzIEFNLCBQYXNjYWwgVGh1YmVydCAo cHRodWJlcnQpIDxwdGh1YmVydEBjaXNjby5jb208bWFpbHRvOnB0aHViZXJ0QGNpc2NvLmNvbT4+ IHdyb3RlOg0KDQpUaGlzIGRvZXMgbm90IHNob3cgYmVjYXVzZSBvbiB5b3VyIGZpcnN0IGJyZWFr YWdlIHlvdSB1c2UgdGhlIHBvc2l0aXZlIGRpc2FnLiBJZiB5b3Ugc3RpY2sgdG8gdGhlIGxvZ2lj IHlvdSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcsIHRoYXQgaXMgcGljayBhbiBleGFtcGxlIHdoZXJl IHBvc2l0aXZlIGFwcGxpZXMgYnV0IHVzZSBuZWdhdGl2ZSwgdGhlbiBvbiB5b3VyIGZpcnN0IGJy ZWFrYWdlIHlvdeKAmWQgc2hvdyB0aGF0IHRoZSBuZWdhdGl2ZSBkb2VzIG5vdCBuZWVkIHRvIGdv IHRyYW5zaXRpdmVseSB0byB0aGUgbGVhZiwgYmVjYXVzZSB0aGUgc3BpbmUgbm9kZXMgc3RpbGwg aGF2ZSBzb2x1dGlvbnMuIElzIHRoYXQgYSBsb3Qgb2Ygd29yayB0byBjaGFuZ2U/DQoNClRoaXMg aXMgZXhhY3RseSB3aGF0IEkgd2FzIHRoaW5raW5nIGFzIHdlbGwuDQoNCk1heWJlIEkgbmVlZCB0 byBnbyB0aHJvdWdoIHRoZSBjdXJyZW50IHNwZWNpZmljYXRpb24gd2l0aCBhIGZpbmUtdG9vdGhl ZCBjb21iIGFnYWluLCBidXQgbXkgKHBvc3NpYmx5IGluY29ycmVjdCkgdW5kZXJzdGFuZGluZyBp cyB0aGF0IHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gaXMgdGhhdCB3 ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpcyB1c2VkIChNVVNUIGJlIHVzZWQ/IFNIT1VMRCBi ZSB1c2VkPykgaW4gdGhlIOKAnGZpcnN0IGZhaWx1cmXigJ0gc2NlbmFyaW8uDQoNClBlcnNvbmFs bHksIEkgc2VlIG5vIHJlYXNvbiB3aHkgd2Ugd291bGQgbm90IGJlIGFibGUgdG8gdXNlIG5lZ2F0 aXZlIGRpc2FnZ3JlZ2F0aW9uIGluc3RlYWQgb2YgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaW4g dGhlIGZpcnN0IGZhaWx1cmUgc2NlbmFyaW8gYXMgd2VsbC4NCg0KSW4gdGhlIGNvbnRleHQgb2Yg dGhlIHR1dG9yaWFsLCB0aGlzIHdvdWxkIGhhdmUgdGhlIGFkdmFudGFnZSBvZiBjbGVhcmx5IGRl bW9uc3RyYXRpbmcgdGhlIHByb3BhZ2F0aW9uIGxvZ2ljIG1vcmUgY2xlYXJseS4NCg0KQnV0IG1v cmUgaW1wb3J0YW50bHksIGl0IHNlZW1zIHRvIG1lIHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNhZ2dy ZWdhdGlvbiBpcyBpbXBsZW1lbnRlZCwgdGhlcmUgaXMgcmVhbGx5IG5vIHJlYXNvbiB0byB1c2Ug cG9zaXRpdmUgZGlzYWdncmVnYXRpb24gYW55d2hlcmUuIEl0IHdvdWxkIGJlIOKAnGNsZWFuZXLi gJ0gKGxlc3Mgc2lnbmFsaW5nKSBhbmQg4oCcYmV0dGVy4oCdIChubyBpbmNhc3QpIHRvIHNpbXBs eSB1c2UgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gZXZlcnl3aGVyZS4NCg0KU2/igKYuIEkgd2Fz IHRoaW5raW5nIHRvIGFkZCBhIGNvbmZpZ3VyYXRpb24ga25vYiB0byBteSBjb2RlIOKAnHBvc2l0 aXZlLW9ubHnigJ0sIOKAnG5lZ2F0aXZlLW9ubHnigJ0sIOKAnHBvc2l0aXZlLWFuZC1uZWdhdGl2 ZeKAnSwgd2l0aCDigJxuZWdhdGl2ZS1vbmx54oCdIGJlaW5nIHRoZSBkZWZhdWx0PyAoU2VlbXMg bGlrZSBhIHdhc3RlIHRvIGhhdmUgY29kZWQgdXAgdGhlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9u KS4NCg0KV2hhdCBkb2VzIGV2ZXJ5b25lIHRoaW5rIG9mIHRoYXQ/DQoNClNob3VsZCB3ZSBnbyBl dmVuIGZ1cnRoZXIgYW5kIHNpbXBseSByZW1vdmUgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gZnJv bSB0aGUgc3BlYz8NCg0KU2hvdWxkIHdlIGhhdmUgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gYXMg YSBjYXBhYmlsaXR5IGluIHRoZSBjYXBhYmlsaXR5IG5lZ290aWF0aW9uPyAoU2VlbXMgbm9uLXNl bnNpY2FsLCBnaXZlbiBpdCBpcyBzb21ldGhpbmcgdGhhdCB0aGUgd2hvbGUgZmFicmljIG5lZWRz IHRvIHN1cHBvcnQgb3Igbm90LikNCg0KU2hvdWxkIHdlIHRha2UgdGhpcyB0byB0aGUgUklGVCBt YWlsaW5nIGxpc3Q/DQoNCuKAlCBCcnVubw0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KUklGVCBtYWlsaW5nIGxpc3QNClJJRlRAaWV0Zi5vcmc8bWFp bHRvOlJJRlRAaWV0Zi5vcmc+DQpodHRwczovL3d3dy5pZXRmLm9yZy9tYWlsbWFuL2xpc3RpbmZv L3JpZnQNCg0K --_000_4E305EBE128744AAAF2666152576E56Ehotmailcom_ Content-Type: text/html; charset="utf-8" Content-ID: <6EF01AA72C07B542B6811DD3BB9CC98A@namprd06.prod.outlook.com> Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5IHN0eWxlPSJ3b3JkLXdy YXA6IGJyZWFrLXdvcmQ7IC13ZWJraXQtbmJzcC1tb2RlOiBzcGFjZTsgbGluZS1icmVhazogYWZ0 ZXItd2hpdGUtc3BhY2U7IiBjbGFzcz0iIj4NCjxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHls ZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+SGkgVG9ueSw8L2ZvbnQ+DQo8ZGl2IGNsYXNz PSIiPjxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xh c3M9IiI+PGJyIGNsYXNzPSIiPg0KPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBm YWNlPSJBdmVuaXItQm9vayIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsi IGNsYXNzPSIiPkkgcmFuIGludG8gdmFyaW91cyBjb21wbGljYXRpb25zIGFuZCBhIHJvYWQtYmxv Y2sgd2hpbGUgd29ya2luZyBvbiB0aGUg4oCcZGlzYWdncmVnYXRpb24gbmVnYXRpdmUtb25seeKA nSBrbm9iIGluIFJJRlQtcHl0aG9uLCBzbyBJIHdpbGwgYmUgcmlwcGluZyB0aGF0IGtub2Igb3V0 IG9mIG15IGNvZGUuPC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZvbnQgZmFj ZT0iQXZlbmlyLUJvb2siIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IiBjbGFzcz0iIj48YnIgY2xh c3M9IiI+DQo8L2ZvbnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZhY2U9IkF2ZW5pci1C b29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+SW5zdGVhZCBJIHdpbGwgc3Rp Y2sgdG8gdGhlIHRocmVlIGNvbW1hbmRtZW50cyBhcyBoYW5kZWQgZG93biBvbiB0aGUgc3RvbmUg dGFibGV0IGJ5IHRoZSB3aXNlIFJJRlQgZ29kcyBmcm9tIGFib3ZlIDotKSAmbmJzcDs8L2ZvbnQ+ PGJyIGNsYXNzPSIiPg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8YmxvY2txdW90ZSB0eXBlPSJjaXRl IiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+T24gTWF5IDE0LCAyMDIwLCBhdCAxMjoyNiBQTSwg QW50b25pIFByenlnaWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzpwcno9NDBqdW5pcGVyLm5ldEBk bWFyYy5pZXRmLm9yZyIgY2xhc3M9IiI+cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8 L2E+Jmd0OyB3cm90ZTo8L2Rpdj4NCjxiciBjbGFzcz0iQXBwbGUtaW50ZXJjaGFuZ2UtbmV3bGlu ZSI+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIiBzdHlsZT0icGFn ZTogV29yZFNlY3Rpb24xOyBjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTog SGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp YW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5v cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt OiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10 ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KSW4gYSBwcm9iYWJseSBtb3JlIGRl dGFpbGVkIHdheSB3aXRoIGEgbGl0dGxlIHN0b25lIHRhYmxldCBJIHN1Z2dlc3Q8c3BhbiBjbGFz cz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiAmcXVvdDtBcHBsZSBDb2xvciBFbW9qaSZxdW90OzsiIGNsYXNzPSIiPvCfmIk8L3Nw YW4+PHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPiZuYnNw OzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8b2wgc3Rh cnQ9IjEiIHR5cGU9IjEiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47IG1hcmdpbi10b3A6IDBp bjsiIGNsYXNzPSIiPg0KPGxpIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2lu OiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJp LCBzYW5zLXNlcmlmOyI+DQpZb3UgU0hBTEwgbmVnYXRpdmVseSBkaXNhZ2dyZWdhdGUgb25seSBp ZiB5b3XigJlyZSBUb0YgYW5kIGhhdmUgaG9yaXpvbnRhbCBsaW5rcyAocmluZyk8bzpwIGNsYXNz PSIiPjwvbzpwPjwvbGk+PGxpIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2lu OiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJp LCBzYW5zLXNlcmlmOyI+DQpZb3UgU0hBTEwgcHJvcGFnYXRlIHRyYW5zaXRpdmVseSBuZWdhdGl2 ZSBkaXNhZ2dyZWdhdGlvbjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9saT48bGkgY2xhc3M9Ik1zb0xp c3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTog MTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7Ij4NCllvdSBTSEFMTCB1c2Ug cG9zaXRpdmUgaWYgeW914oCZcmUgbm90IFRvRiBvciBoYXZlIG5vIGhvcml6b250YWw8bzpwIGNs YXNzPSIiPjwvbzpwPjwvbGk+PC9vbD4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAw MDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsi IGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L2Rpdj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTog Q2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KT2YgY291cnNlLCBhbnkgdmVuZG9yLCBl dmVuIG9wZW4gc291cmNlZCBvbmUgY2FuIGFkZCBhbnkgZmxhdm9yIG9mIGtub2JzIHRoYXQgbWFr ZXMgdGhlaXIgZGlzaCB1bmlxdWUgZXZlbiBpZiBpdCBicmVha3MgdGhlIHNwZWMgc3RyaWN0bHkg c3BlYWtpbmcg4oCmIFNvIGRpZCBJPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+ Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7QXBwbGUgQ29sb3Ig RW1vamkmcXVvdDs7IiBjbGFzcz0iIj7wn5iJPC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9k aXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFw dDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xh c3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w MDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7 IiBjbGFzcz0iIj4NCi0tLSB0b255PHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+ Jm5ic3A7PC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJn aW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGli cmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9k aXY+DQo8ZGl2IHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIG5vbmUgbm9uZTsgYm9yZGVyLXRv cC13aWR0aDogMXB0OyBib3JkZXItdG9wLWNvbG9yOiByZ2IoMTgxLCAxOTYsIDIyMyk7IHBhZGRp bmc6IDNwdCAwaW4gMGluOyIgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCjxiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7 IiBjbGFzcz0iIj5Gcm9tOjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNw Ozwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IiBjbGFzcz0i Ij5Ub255IFByenlnaWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzp0b255c2lldGZAZ21haWwuY29t IiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9 IiI+dG9ueXNpZXRmQGdtYWlsLmNvbTwvYT4mZ3Q7PGJyIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+ RGF0ZTo8c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PC9i PlRodXJzZGF5LCBNYXkgMTQsIDIwMjAgYXQgMTE6MTIgQU08YnIgY2xhc3M9IiI+DQo8YiBjbGFz cz0iIj5Ubzo8c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+ PC9iPkJydW5vIFJpanNtYW4gJmx0OzxhIGhyZWY9Im1haWx0bzpicnVub3JpanNtYW5AaG90bWFp bC5jb20iIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBj bGFzcz0iIj5icnVub3JpanNtYW5AaG90bWFpbC5jb208L2E+Jmd0OzxiciBjbGFzcz0iIj4NCjxi IGNsYXNzPSIiPkNjOjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwv c3Bhbj48L2I+JnF1b3Q7UGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSZxdW90OyAmbHQ7PGEgaHJl Zj0ibWFpbHRvOnB0aHViZXJ0QGNpc2NvLmNvbSIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRl Y29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnB0aHViZXJ0QGNpc2NvLmNvbTwvYT4mZ3Q7 LCAmcXVvdDs8YSBocmVmPSJtYWlsdG86cmlmdEBpZXRmLm9yZyIgc3R5bGU9ImNvbG9yOiBibHVl OyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnJpZnRAaWV0Zi5vcmc8L2E+ JnF1b3Q7DQogJmx0OzxhIGhyZWY9Im1haWx0bzpyaWZ0QGlldGYub3JnIiBzdHlsZT0iY29sb3I6 IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+cmlmdEBpZXRmLm9y ZzwvYT4mZ3Q7LCBNZWxjaGlvciBBZWxtYW5zICZsdDs8YSBocmVmPSJtYWlsdG86bWFlbG1hbnNA anVuaXBlci5uZXQiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp bmU7IiBjbGFzcz0iIj5tYWVsbWFuc0BqdW5pcGVyLm5ldDwvYT4mZ3Q7LCBDaHJpc3RpYW4NCiBH cmFmICZsdDs8YSBocmVmPSJtYWlsdG86Y2dyYWZAanVuaXBlci5uZXQiIHN0eWxlPSJjb2xvcjog Ymx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5jZ3JhZkBqdW5pcGVy Lm5ldDwvYT4mZ3Q7LCBPbGl2ZXIgU3RldWRsZXIgJmx0OzxhIGhyZWY9Im1haWx0bzpvc3RldWRs ZXJAanVuaXBlci5uZXQiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRl cmxpbmU7IiBjbGFzcz0iIj5vc3RldWRsZXJAanVuaXBlci5uZXQ8L2E+Jmd0OywNCiBPbGl2aWVy IFZhbmRlemFuZGUgJmx0OzxhIGhyZWY9Im1haWx0bzpvdmFuZGV6YW5kZUBqdW5pcGVyLm5ldCIg c3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIi Pm92YW5kZXphbmRlQGp1bmlwZXIubmV0PC9hPiZndDssIEFudG9uaSBQcnp5Z2llbmRhICZsdDs8 YSBocmVmPSJtYWlsdG86cHJ6QGp1bmlwZXIubmV0IiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQt ZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+cHJ6QGp1bmlwZXIubmV0PC9hPiZndDss DQogJnF1b3Q7PGEgaHJlZj0ibWFpbHRvOnRvbW1hc29jYWlhenppQGdtYWlsLmNvbSIgc3R5bGU9 ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnRvbW1h c29jYWlhenppQGdtYWlsLmNvbTwvYT4mcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzp0b21tYXNv Y2FpYXp6aUBnbWFpbC5jb20iIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1 bmRlcmxpbmU7IiBjbGFzcz0iIj50b21tYXNvY2FpYXp6aUBnbWFpbC5jb208L2E+Jmd0OywNCiBK ZWZmIFRhbnRzdXJhICZsdDs8YSBocmVmPSJtYWlsdG86amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20i IHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0i Ij5qZWZmdGFudC5pZXRmQGdtYWlsLmNvbTwvYT4mZ3Q7LCBaaGFvaHVpIFpoYW5nICZsdDs8YSBo cmVmPSJtYWlsdG86enpoYW5nQGp1bmlwZXIubmV0IiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQt ZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+enpoYW5nQGp1bmlwZXIubmV0PC9hPiZn dDssDQogWmhhb2h1aSBaaGFuZyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnp6aGFuZ0BqdW5pcGVyLm5l dCIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNz PSIiPnp6aGFuZ0BqdW5pcGVyLm5ldDwvYT4mZ3Q7LCBKZWZmcmV5IFpoYW5nICZsdDs8YSBocmVm PSJtYWlsdG86enpoYW5nMjAwM0BnbWFpbC5jb20iIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1k ZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj56emhhbmcyMDAzQGdtYWlsLmNvbTwvYT4m Z3Q7PGJyIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+U3ViamVjdDo8c3BhbiBjbGFzcz0iQXBwbGUt Y29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PC9iPlJlOiBOZWdhdGl2ZSBkaXNhZ2dyZWdh dGlvbiBmZWF0dXJlIGd1aWRlPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+DQo8L2Rp dj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7 IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFz cz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsgbGluZS1oZWlnaHQ6IDEycHQ7IGJhY2tncm91bmQtY29s b3I6IHJnYigyNTUsIDIzNSwgMTU2KTsiIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZTogMTAuNXB0OyBmb250LWZhbWlseTogTGF0bywgc2Fucy1zZXJpZjsiIGNs YXNzPSIiPltFeHRlcm5hbCBFbWFpbC4gQmUgY2F1dGlvdXMgb2YgY29udGVudF08bzpwIGNsYXNz PSIiPjwvbzpwPjwvc3Bhbj48L2I+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8ZGl2IGNs YXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJn aW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGli cmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCiZuYnNwO215IHRob3VnaHRzOjxzcGFuIGNsYXNz PSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwIGNsYXNzPSIiPjwvbzpw PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4g MGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5z LXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQpuZWdhdGl2ZSBpcyBzZXJpb3VzbHkgbW9yZSBjb21wbGV4IHRvJm5ic3A7IGltcGxl bWVudCBhbmQgdW5kZXJzdGFuZCBvcGVyYXRpb25hbGx5IGFuZCBvbmx5IG5lZWRlZCBvbiBtdWx0 aS1wbGFuZSBmYWJyaWNzLCB0YWh0J3Mgd2h5IHBvc2l0aXZlIGlzIEtJU1MgOy0pIEFsc28sIG5l Z2F0aXZlIGFsd2F5cyBmb3JjZXMgeW91IHRvIHJpbmcgdGhlIHRvcCBvZiB0aGUgZmFicmljIHdo aWNoIGluIHNpbmdsZSBwbGFuZSBkZXNpZ24gaXMgYW4gdW5uZWNlc3NhcnkNCiByZXF1aXJlbWVu dC4mbmJzcDs8c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+ PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJz cDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KSSBmb3Jlc2VlIHZlbmRvcnMgbm90IGltcGxlbWVu dGluZyBuZWdhdGl2ZSBmb3Igc2ltcGxpY2l0eSwgdmVyeSBzbWFsbCBmb290cHJpbnQgZmFicmlj cy48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRp diBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZu YnNwOzwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFy Z2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxp YnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQp0aGUgZGlzY3Vzc2lvbiBhYm91dCBjYXBhYmls aXR5IGFkdmVydGlzZW1lbnQgaXMgaW50ZXJlc3RpbmcsIHdlIGNhbiBqdXN0IGFkZCBvbmUgYml0 IG9uIHRoZSBub2RlIGNhcGFiaWxpdGllcyBlbGVtZW50LCBtYWtlIGl0IG9wdGlvbmFsIGFuZCBk ZWZhdWx0IHRydWUuPG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFz cz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAx MXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBj bGFzcz0iIj4mbmJzcDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KT2YgY291cnNlIGFuIGltcGxl bWVudGF0aW9uIHRhaHQgdW5kZXJzdGFuZHMgdGhhdCBhbGwgaW52b2x2ZWQgbm9kZXMgdW5kZXJz dGFuZCBuZWdhdGl2ZSBpcyBmcmVlIHRvIHVzZSBuZWdhdGl2ZSBpbnN0ZWFkIG9mIHBvc2l0aXZl IHRoZW4uPG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4N CjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBm b250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0i Ij4mbmJzcDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTog Q2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KLS0gdG9ueTxzcGFuIGNsYXNzPSJBcHBs ZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2 Pg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsg Zm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNz PSIiPg0KPG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8 ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250 LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+ DQpPbiBUaHUsIE1heSAxNCwgMjAyMCBhdCAxMTowNSBBTSBCcnVubyBSaWpzbWFuICZsdDs8YSBo cmVmPSJtYWlsdG86YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tIiBzdHlsZT0iY29sb3I6IGJsdWU7 IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+YnJ1bm9yaWpzbWFuQGhvdG1h aWwuY29tPC9hPiZndDsgd3JvdGU6PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0K PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1zdHlsZTogbm9uZSBub25lIG5vbmUgc29saWQ7IGJv cmRlci1sZWZ0LXdpZHRoOiAxcHQ7IGJvcmRlci1sZWZ0LWNvbG9yOiByZ2IoMjA0LCAyMDQsIDIw NCk7IHBhZGRpbmc6IDBpbiAwaW4gMGluIDZwdDsgbWFyZ2luLWxlZnQ6IDQuOHB0OyBtYXJnaW4t cmlnaHQ6IDBpbjsiIGNsYXNzPSIiIHR5cGU9ImNpdGUiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTogMTAuNXB0OyBmb250LWZhbWlseTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj5Ccm9hZGVu aW5nIGEgZGlzY3Vzc2lvbiBvbiBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiB0byB0aGUgUklGVCBt YWlsaW5nIGxpc3QuPC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8ZGl2IGNsYXNz PSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEx cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNs YXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBz dHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFt aWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMC41cHQ7IGZvbnQtZmFtaWx5OiBBdmVuaXItQm9vazsiIGNsYXNzPSIiPk5vdyB0aGF0 IHdlIGhhdmUgaW1wbGVtZW50ZWQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW4gUklGVC1QeXRo b24sIGFuZCBub3cgdGhhdCB3ZSBhcmUgZ2V0dGluZyBzb21lIG9wZXJhdGlvbmFsIGV4cGVyaWVu Y2Ugd2l0aCBpdCwgdGhlIGZvbGxvd2luZyBpcyBiZWNvbWluZyBtb3JlIGFuZCBtb3JlIGV2aWRl bnQ6PC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9 IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFw dDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xh c3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0 eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1p bHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxzcGFuIHN0eWxlPSJmb250LXNp emU6IDEwLjVwdDsgZm9udC1mYW1pbHk6IEF2ZW5pci1Cb29rOyIgY2xhc3M9IiI+SXQgc2VlbXMg dG8gdXMgKEJydW5vIGFuZCBQYXNjYWwsIGZvciBub3cpIHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNh Z2dyZWdhdGlvbiBpcyBpbXBsZW1lbnRlZCwgdGhlcmUgaXMgcmVhbGx5IG5vIG5lZWQgZm9yIHBv c2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFueSBtb3JlLjwvc3Bhbj48bzpwIGNsYXNzPSIiPjwvbzpw PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4g MGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5z LXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMC41cHQ7IGZvbnQtZmFtaWx5OiBBdmVu aXItQm9vazsiIGNsYXNzPSIiPkV2ZXJ5IHVzZSBjYXNlIHRoYXQgY2FuIGJlIHNvbHZlZCBieSBw b3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBjYW4gKGFzIGZhciBhcyB3ZSBjYW4gY3VycmVudGx5IHRl bGwpIGFsc28gYmUgc29sdmVkIGJ5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uLjwvc3Bhbj48bzpw IGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwv bzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAw aW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBz YW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMC41cHQ7IGZv bnQtZmFtaWx5OiBBdmVuaXItQm9vazsiIGNsYXNzPSIiPkZ1cnRoZXJtb3JlLCBuZWdhdGl2ZSBk aXNhZ2dyZWdhdGlvbiBzb2x2ZXMgdGhlIHByb2JsZW1zIGluIGEgZmFyIHNpbXBsZXIgYW5kIG1v cmUgZWxlZ2FudCB3YXk6IHRoZXJlIGFyZSBmZXdlciBhZHZlcnRpc2luZyBub2RlcyBhbmQgZmV3 ZXIgYWR2ZXJ0aXNlZCBUSUVzIGludm9sdmVkLCBhbmQgd2UgZG9u4oCZdCBoYXZlIHRoZSBzeW5j aHJvbml6YXRpb24NCiBpc3N1ZSB0aGF0IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGhhcyB0aGF0 IHBvdGVudGlhbGx5IGNhdXNlcyBpbmNhc3QgcHJvYmxlbXMuPC9zcGFuPjxvOnAgY2xhc3M9IiI+ PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46 IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmks IHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+ DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w MDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7 IiBjbGFzcz0iIj4NCjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwLjVwdDsgZm9udC1mYW1pbHk6 IEF2ZW5pci1Cb29rOyIgY2xhc3M9IiI+VGh1cywgYXQgdGhlIHZlcnkgbGVhc3QsIGl0IG1ha2Vz IHNlbnNlIHRvIHJlY29tbWVuZCB0aGF0IGluIGEgZ2l2ZW4gZmFicmljIHdlIHVzZSBlaXRoZXIg b25seSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5IG9yIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0 aW9uIG9ubHksIHdpdGggbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gYmVpbmcNCiB0aGUgZGVmYXVs dC48L3NwYW4+PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0i Ij4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0 OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFz cz0iIj4mbmJzcDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTAuNXB0OyBmb250LWZhbWlseTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj5JZiBwb3NpdGl2 ZSBhbmQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gYXJlIGVuYWJsZWQmbmJzcDtzaW11bHRhbmVv dXNseSBpbiBvbmUgYW5kIHRoZSBzYW1lIGZhYnJpYywgZXZlcnl0aGluZyBzdGlsbCB3b3JrcyBm aW5lIGFzIGZhciBhcyB3ZSBjYW4gc2VlLiBCdXQgdGhlcmUgYXJlIHNvbWUmbmJzcDvigJxpbnRl cmVzdGluZ+KAnSBpbnRlcmFjdGlvbnMNCiB0aGF0IG1ha2UgdGhpbmdzJm5ic3A7dW5uZWNlc3Nh cmlseSBjb21wbGV4IGFuZCBwb3RlbnRpYWxseSBmcmFnaWxlLiZuYnNwOzwvc3Bhbj48bzpwIGNs YXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0i bWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBD YWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpw PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4g MGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5z LXNlcmlmOyIgY2xhc3M9IiI+DQo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMC41cHQ7IGZvbnQt ZmFtaWx5OiBBdmVuaXItQm9vazsiIGNsYXNzPSIiPklmIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGRp c2FnZ3JlZ2F0aW9uIGlzIG1hbmRhdG9yeSwgYW5kIGlmIG91ciBhc3Nlc3NtZW50IHRoYXQgbmVn YXRpdmUgZGlzYWdncmVnYXRpb24gY2FuIHNvbHZlIGFsbCB1c2UgY2FzZXMgaXMgY29ycmVjdCwg dGhlbiB3ZSBjb3VsZCBnbyBvbmUgYm9sZCBzdGVwIGZ1cnRoZXIgYW5kIGNvbXBsZXRlbHkNCiBy ZW1vdmUgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gZnJvbSB0aGUgc3BlY2lmaWNhdGlvbi48L3Nw YW4+PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxk aXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250 LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4m bmJzcDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTAu NXB0OyBmb250LWZhbWlseTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj5UaG91Z2h0cz88L3NwYW4+ PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJz cDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTAuNXB0 OyBmb250LWZhbWlseTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj7igJQgQnJ1bm88L3NwYW4+PG86 cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJn aW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGli cmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxiciBjbGFzcz0iIj4NCjxiciBjbGFzcz0iIj4N CjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luLXRv cDogNXB0OyBtYXJnaW4tYm90dG9tOiA1cHQ7IiBjbGFzcz0iIiB0eXBlPSJjaXRlIj4NCjxkaXYg Y2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6 ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCk9u IE1heSAxNCwgMjAyMCwgYXQgMTA6NDggQU0sIFBhc2NhbCBUaHViZXJ0IChwdGh1YmVydCkgJmx0 OzxhIGhyZWY9Im1haWx0bzpwdGh1YmVydEBjaXNjby5jb20iIHRhcmdldD0iX2JsYW5rIiBzdHls ZT0iY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+cHRo dWJlcnRAY2lzY28uY29tPC9hPiZndDsgd3JvdGU6PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4N CjwvZGl2Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpw IGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9 IiI+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQpIZWxsbyBCcnVubzo8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8 ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250 LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+ DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpJIGxpa2UgeW91 ciBuZWdhdGl2ZS1vbmx5IGRlZmF1bHQgYmVjYXVzZSBpdCBpcyBwcm9iYWJseSB0aGUgc2FmZXN0 LiBMZXQgbWUgZWxhYm9yYXRlLi48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8 ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250 LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+ DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpwYXJ0aXRpb25p bmcgc2F2ZXMgYSBsb3QgbW9yZSBwb3J0cyBwZXIgVG9GIG5vZGUgdGhhbiB0aGUgcmluZyBjb3N0 IHNvIGl0IGRvZXMgbm90IG1hdHRlci48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBm b250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9 IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNz PSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEx cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpJZiB5b3Ug ZW5hYmxlIG5lZ2F0aXZlLCB0aGVyZeKAmXMgbm8gcG9pbnQgaW4gZG9pbmcgYW55IHBvc2l0aXZl IGF0IGFsbCwgaXMgdGhlcmU/IFNvIHdoYXQgZG8gd2UgdHJ5IHRvIHNhdmUgYnkgY29tYmluaW5n PyBJbiB5b3VyIGV4YW1wbGUsIEkgZ3Vlc3MgdGhhdCBzdXBlciAxIDIgaGFkIHRvIHJldHJhY3Qg dGhlIHBvc2l0aXZlIGRpc2FnIGFuZCB0aGVuIGRvIG5lZ2F0aXZlIGluc3RlYWQgd2hlbiB0aGUg bGluayB0byBzcGluZSAxIDEgZmVsbC4NCiBXYXMgdGhhdCBub3QgYSBiaXQgY29tcGxleCBhbmQg ZXJyb3IgcHJvbmU/PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFz cz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAx MXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7 PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KQWxzbyBJ4oCZbSBub3QgY2xl YXIgaG93IHdlIGNhbiBhbHdheXMgZGVjaWRlIHRoYXQgZHluYW1pY2FsbHkgYW5kIEkgZG8gbm90 IGJlbGlldmUgdGhhdCB3ZSBzcGVjaWZpZWQgdGhhdC4gU28gSSB1bmRlcnN0YW5kIHRoYXQgaXTi gJlzIG1vcmUgbGlrZSBhIHVzZSBjYXNlIHRoaW5neSwgbGlrZSBhIGNvbmZpZ3VyYXRpb24gdGhh dCB3b3VsZCBiZSBhZGFwdGVkIHRvIHRoZSB1c2UgY2FzZS48bzpwIGNsYXNzPSIiPjwvbzpwPjwv ZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGlu IDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNl cmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBm b250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9 IiI+DQo9Jmd0OyBkbyBub3QgY29uZmlndXJlIGJvdGggYXQgdGhlIHNhbWUgdGltZSB1c2UgZWl0 aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGRpc2FnLjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+ DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w MDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7 IiBjbGFzcz0iIj4NCiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxk aXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N CldlIGRvIG5vdCB0cnkgdG8gZG8gcG9zaXRpdmUgZGlzYWcgdHJhbnNpdGl2ZWx5LiBTbyBpZiB0 aGVyZSBpcyBhIG5lZWQgZm9yIHRyYW5zaXRpdmUsIHlvdSBoYXZlIHRvIHVzZSBuZWdhdGl2ZS4m bmJzcDsgSW4gYSBtdWx0aXBsYW5lIGNhc2UsIHRoZXJl4oCZcyB1c3VhbGx5IChhcyBpbiB5b3Vy IHBpY3R1cmUpIG9uZSBUb1AgcGVyIHBsYW5lIGluIGVhY2ggUG9ELCBhbmQgYSBmaXJzdCBsaW5r IGZhaWx1cmUgKHNheSBTcGluZSAxIDEgdG8gbGVhZiAxIDEpDQogY2FuIGFscmVhZHkgY2F1c2Ug YSBmYWxsZW4gbGVhZjogbGVhZiAxIDEgaXMgbm8gbW9yZSByZWFjaGFibGUgd2l0aGluIHBsYW5l IDEuIFRoaXMgdGVsbHMgeW91IHRoYXQgYWxsIGxlYXZlcyBpbiB0aGUgb3RoZXIgUG9EcyBtdXN0 IGF2b2lkIHRoYXQgcGxhbmUsIGFuZCB0aGF04oCZcyBhIGxlYWYgZGVjaXNpb247IHdoaWNoIHRl bGxzIHlvdSB0aGF0IHlvdSBuZWVkIHRvIHJlY3Vyc2UgdHJhbnNpdGl2ZWx5IGRvd24uIFRoaXMg aW5kaWNhdGVzIHRoYXQNCiBuZWdhdGl2ZSBtdXN0IGJlIGFjdGl2YXRlZCBpbiBhIGhpZ2hseSBw YXJ0aXRpb25lZCAobWVhbmluZyBsb3cgcmVkdW5kYW5jeSkgbXVsdGlwbGFuZS48bzpwIGNsYXNz PSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFy Z2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxp YnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwv ZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGlu IDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNl cmlmOyIgY2xhc3M9IiI+DQpTYXkgd2UgdHJ5IHRvIHVzZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlv biB0cmFuc2l0aXZlbHkgaW4gYSBUb0YgdGhhdCBpcyBwYXJ0aXRpb25lZCBsaWtlIGluIHBsYW5l cywgeW914oCZZCBydW4gYSByaXNrIHRoYXQgbm9uZSBvZiB0aGUgVG9GIG5vZGVzIHRoYXQgY2Fu IHN0aWxsIHJlYWNoIHRoZSBsZWFmIGNhbiBzZWUgKHRocm91Z2ggc291dGggcmVmbGVjdGlvbikg dGhlIFRvRiBub2RlIHRoYXQgY2Fubm90IHNvIHRoZXkgZG8gbm90IGtub3cgdGhleQ0KIG5lZWQg dG8gZGlzYWcuIFNvIHlvdSBlbmQgdXAgbmVlZGluZyB0aGUgc2FtZSByaW5nIGFzIGZvciBuZWdh dGl2ZSwgdGhlIHNvdXRoZXJuIHJlZmxlY3Rpb24gYmVjb21lIG1vc3RseSB1c2VsZXNzIGFuZCB0 aGUgYmVuZWZpdHMgb2YgcG9zaXRpdmUgYXJlIGdvbmUuPG86cCBjbGFzcz0iIj48L286cD48L2Rp dj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0K PGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9u dC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIi Pg0KUGFydGl0aW9ubmVkIFRvRiA9Jmd0OyBuZWdhdGl2ZTxvOnAgY2xhc3M9IiI+PC9vOnA+PC9k aXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCkkgdHJ1c3QgdGhhdCB3ZSBjYW4gdXNlIHBvc2l0aXZlIGluIGEgaGlnaGx5IHJlZHVuZGFu dCBhbmQgc3ltbWV0cmljYWwgbm9uLXBhcnRpdGlvbmVkIFRvRi4gSWYgbm8gb25lIGNhbiByZWFj aCB0aGUgbGVhZiBhbnltb3JlIChsaWtlIGl04oCZcyBkZWFkKSB3ZSBoYXZlIG5vIGlzc3VlIHNp bmNlIGl0IHNob3VsZCBub3QgYmUgZGlzYWdncmVnYXRlZCwganVzdCB1c2UgdGhlIGRpc2NhcmRz IHJvdXRlIGF0IGFueSBUb0Ygbm9kZS4gSWYgeW91IGhhdmUNCiBlbm91Z2ggcmVkdW5kYW5jeSBh bmQgbm8gcGFydGl0aW9uLCAmbmJzcDt0aGVyZSB3aWxsIGFsd2F5cyBiZSBub2RlcyB0aGF0IGNh biBib3RoIHJlYWNoIGEgbGVhZiBhbmQgZGlzY292ZXIgdGhhdCBhIHBlZXIgZG9lcyBub3QuJm5i c3A7PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxk aXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250 LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFz cz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPSZndDsgUG9zaXRpdmUgaXMgaW5kaWNhdGVk IGZvciBhIHZlcnkgc3BlY2lmaWMgdXNlIGNhc2UsIGlkZWFsbHkgMiBsZXZlbHMgYW5kIGZ1bGx5 IG1lc2hlZC4gTWF5YmUgdGhhdOKAmXMgZW5vdWdoIGRlcGxveW1lbnRzIHRvIGp1c3RpZnkgdGhl IGZlYXR1cmUgaW4gdGhlIGNvZGUuPG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0K PGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9u dC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIi Pg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0i Ij4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0 OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KU28gdGhlIHF1 ZXN0aW9uIGlzIHJlYWxseSB0aGF0IGJsdXJyeSB6b25lIGJldHdlZW4gaGlnaGx5IHJlZHVuZGFu dCBzaW5nbGUgcGxhbmUgYW5kIGhpZ2hseSBwYXJ0aXRpb25lZCBtdWx0aXBsYW5lIHdoYXQgc2hv dWxkIG9uZSBkbz8gSSBiZWNvbWVzIGEgcmlzay9iZW5lZml0IGp1ZGdlbWVudOKApiBJZiBuZWdh dGl2ZSBpcyBpbXBsZW1lbnRlZCBhbmQgdGhlIHJpbmcgaXMgdGhlcmUsIEnigJlkIHVzZSBpdCwg YmV0dGVyIHNhZmUgdGhhbiBzb3JyeS4mbmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0K PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIg Y2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2 IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNp emU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpU YWtlIGNhcmU8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpw IGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpQYXNjYWw8bzpwIGNsYXNzPSIiPjwv bzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAw aW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBz YW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0K PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIg Y2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2 IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNp emU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQom bmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJib3Jk ZXItc3R5bGU6IG5vbmUgbm9uZSBub25lIHNvbGlkOyBib3JkZXItbGVmdC13aWR0aDogMS41cHQ7 IGJvcmRlci1sZWZ0LWNvbG9yOiBibHVlOyBwYWRkaW5nOiAwaW4gMGluIDBpbiA0cHQ7IiBjbGFz cz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIG5v bmUgbm9uZTsgYm9yZGVyLXRvcC13aWR0aDogMXB0OyBib3JkZXItdG9wLWNvbG9yOiByZ2IoMjI1 LCAyMjUsIDIyNSk7IHBhZGRpbmc6IDNwdCAwaW4gMGluOyIgY2xhc3M9IiI+DQo8ZGl2IGNsYXNz PSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEx cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8YiBjbGFz cz0iIj5Gcm9tOjwvYj4mbmJzcDtCcnVubyBSaWpzbWFuICZsdDs8YSBocmVmPSJtYWlsdG86YnJ1 bm9yaWpzbWFuQGhvdG1haWwuY29tIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVl OyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPmJydW5vcmlqc21hbkBob3Rt YWlsLmNvbTwvYT4mZ3Q7Jm5ic3A7PGJyIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+U2VudDo8L2I+ Jm5ic3A7amV1ZGkgMTQgbWFpIDIwMjAgMTc6MzY8YnIgY2xhc3M9IiI+DQo8YiBjbGFzcz0iIj5U bzo8L2I+Jm5ic3A7UGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSAmbHQ7PGEgaHJlZj0ibWFpbHRv OnB0aHViZXJ0QGNpc2NvLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogYmx1ZTsg dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5wdGh1YmVydEBjaXNjby5jb208 L2E+Jmd0OzxiciBjbGFzcz0iIj4NCjxiIGNsYXNzPSIiPkNjOjwvYj4mbmJzcDtNZWxjaGlvciBB ZWxtYW5zICZsdDs8YSBocmVmPSJtYWlsdG86bWFlbG1hbnNAanVuaXBlci5uZXQiIHRhcmdldD0i X2JsYW5rIiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIg Y2xhc3M9IiI+bWFlbG1hbnNAanVuaXBlci5uZXQ8L2E+Jmd0OzsgQ2hyaXN0aWFuIEdyYWYgJmx0 OzxhIGhyZWY9Im1haWx0bzpjZ3JhZkBqdW5pcGVyLm5ldCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxl PSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5jZ3Jh ZkBqdW5pcGVyLm5ldDwvYT4mZ3Q7Ow0KIE9saXZlciBTdGV1ZGxlciAmbHQ7PGEgaHJlZj0ibWFp bHRvOm9zdGV1ZGxlckBqdW5pcGVyLm5ldCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjog Ymx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5vc3RldWRsZXJAanVu aXBlci5uZXQ8L2E+Jmd0OzsgT2xpdmllciBWYW5kZXphbmRlICZsdDs8YSBocmVmPSJtYWlsdG86 b3ZhbmRlemFuZGVAanVuaXBlci5uZXQiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6IGJs dWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+b3ZhbmRlemFuZGVAanVu aXBlci5uZXQ8L2E+Jmd0OzsNCiBUb255IFByenlnaWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzp0 b255c2lldGZAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0 ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnRvbnlzaWV0ZkBnbWFpbC5jb208 L2E+Jmd0OzsgQW50b25pIFByenlnaWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzpwcno9NDBqdW5p cGVyLm5ldEBkbWFyYy5pZXRmLm9yZyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogYmx1 ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5wcno9NDBqdW5pcGVyLm5l dEBkbWFyYy5pZXRmLm9yZzwvYT4mZ3Q7OzxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3Bh Y2UiPiZuYnNwOzwvc3Bhbj48YSBocmVmPSJtYWlsdG86dG9tbWFzb2NhaWF6emlAZ21haWwuY29t IiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVu ZGVybGluZTsiIGNsYXNzPSIiPnRvbW1hc29jYWlhenppQGdtYWlsLmNvbTwvYT47DQogSmVmZiBU YW50c3VyYSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmplZmZ0YW50LmlldGZAZ21haWwuY29tIiB0YXJn ZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu ZTsiIGNsYXNzPSIiPmplZmZ0YW50LmlldGZAZ21haWwuY29tPC9hPiZndDs7IEplZmZyZXkgKFpo YW9odWkpIFpoYW5nICZsdDs8YSBocmVmPSJtYWlsdG86enpoYW5nQGp1bmlwZXIubmV0IiB0YXJn ZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu ZTsiIGNsYXNzPSIiPnp6aGFuZ0BqdW5pcGVyLm5ldDwvYT4mZ3Q7Ow0KIEplZmZyZXkgKFpoYW9o dWkpIFpoYW5nICZsdDs8YSBocmVmPSJtYWlsdG86enpoYW5nPTQwanVuaXBlci5uZXRAZG1hcmMu LmlldGYub3JnIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29y YXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnp6aGFuZz00MGp1bmlwZXIubmV0QGRtYXJjLmll dGYub3JnPC9hPiZndDs7IEplZmZyZXkgWmhhbmcgJmx0OzxhIGhyZWY9Im1haWx0bzp6emhhbmcy MDAzQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1k ZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj56emhhbmcyMDAzQGdtYWlsLmNvbTwvYT4m Z3Q7PGJyIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+U3ViamVjdDo8L2I+Jm5ic3A7UmU6IE5lZ2F0 aXZlIGRpc2FnZ3JlZ2F0aW9uIGZlYXR1cmUgZ3VpZGU8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2 Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48 L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBp biAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1z ZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2 Pg0KPGRpdiBjbGFzcz0iIj4NCjxibG9ja3F1b3RlIHN0eWxlPSJtYXJnaW4tdG9wOiA1cHQ7IG1h cmdpbi1ib3R0b206IDVwdDsiIGNsYXNzPSIiIHR5cGU9ImNpdGUiPg0KPGRpdiBjbGFzcz0iIj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCk9uIE1heSAxNCwgMjAyMCwgYXQgODo1MyBBTSwgUGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0 KSAmbHQ7PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiIGNsYXNzPSIiPjxhIGhyZWY9Im1h aWx0bzpwdGh1YmVydEBjaXNjby5jb20iIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6IGJs dWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImNv bG9yOiBwdXJwbGU7IiBjbGFzcz0iIj5wdGh1YmVydEBjaXNjby5jb208L3NwYW4+PC9hPjwvc3Bh bj4mZ3Q7DQogd3JvdGU6PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBm b250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9 IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNz PSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFw dDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNs YXNzPSIiPg0KVGhpcyBkb2VzIG5vdCBzaG93IGJlY2F1c2Ugb24geW91ciBmaXJzdCBicmVha2Fn ZSB5b3UgdXNlIHRoZSBwb3NpdGl2ZSBkaXNhZy4gSWYgeW91IHN0aWNrIHRvIHRoZSBsb2dpYyB5 b3UgdXNlZCBhdCB0aGUgYmVnaW5uaW5nLCB0aGF0IGlzIHBpY2sgYW4gZXhhbXBsZSB3aGVyZSBw b3NpdGl2ZSBhcHBsaWVzIGJ1dCB1c2UgbmVnYXRpdmUsIHRoZW4gb24geW91ciBmaXJzdCBicmVh a2FnZSB5b3XigJlkIHNob3cgdGhhdCB0aGUgbmVnYXRpdmUgZG9lcw0KIG5vdCBuZWVkIHRvIGdv IHRyYW5zaXRpdmVseSB0byB0aGUgbGVhZiwgYmVjYXVzZSB0aGUgc3BpbmUgbm9kZXMgc3RpbGwg aGF2ZSBzb2x1dGlvbnMuIElzIHRoYXQgYSBsb3Qgb2Ygd29yayB0byBjaGFuZ2U/PG86cCBjbGFz cz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9 IiI+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQpUaGlzIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyB0aGlua2luZyBhcyB3ZWxsLjxvOnAg Y2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxk aXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N CiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBj bGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w MDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7 IiBjbGFzcz0iIj4NCk1heWJlIEkgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjdXJyZW50IHNwZWNp ZmljYXRpb24gd2l0aCBhIGZpbmUtdG9vdGhlZCBjb21iIGFnYWluLCBidXQgbXkgKHBvc3NpYmx5 IGluY29ycmVjdCkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBjdXJyZW50IHZlcnNpb24gb2Yg dGhlIHNwZWNpZmljYXRpb24gaXMgdGhhdCB3ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpcyB1 c2VkIChNVVNUIGJlIHVzZWQ/IFNIT1VMRCBiZSB1c2VkPykgaW4gdGhlDQog4oCcZmlyc3QgZmFp bHVyZeKAnSBzY2VuYXJpby48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8L2Rp dj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAw aW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBz YW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0K PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpQZXJzb25hbGx5LCBJIHNlZSBubyBy ZWFzb24gd2h5IHdlIHdvdWxkIG5vdCBiZSBhYmxlIHRvIHVzZSBuZWdhdGl2ZSBkaXNhZ2dyZWdh dGlvbiBpbnN0ZWFkIG9mIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGluIHRoZSBmaXJzdCBmYWls dXJlIHNjZW5hcmlvIGFzIHdlbGwuPG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0K PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48L2Rp dj4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KSW4gdGhlIGNvbnRleHQgb2Yg dGhlIHR1dG9yaWFsLCB0aGlzIHdvdWxkIGhhdmUgdGhlIGFkdmFudGFnZSBvZiBjbGVhcmx5IGRl bW9uc3RyYXRpbmcgdGhlIHByb3BhZ2F0aW9uIGxvZ2ljIG1vcmUgY2xlYXJseS48bzpwIGNsYXNz PSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGNs YXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJz cDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9 IiI+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQpCdXQgbW9yZSBpbXBvcnRhbnRseSwgaXQgc2VlbXMgdG8gbWUgdGhhdCBvbmNlIG5l Z2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIGltcGxlbWVudGVkLCB0aGVyZSBpcyByZWFsbHkgbm8g cmVhc29uIHRvIHVzZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhbnl3aGVyZS4gSXQgd291bGQg YmUg4oCcY2xlYW5lcuKAnSAobGVzcyBzaWduYWxpbmcpIGFuZCDigJxiZXR0ZXLigJ0gKG5vIGlu Y2FzdCkgdG8gc2ltcGx5IHVzZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBldmVyeXdoZXJlLjxv OnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRp diBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NClNv4oCmLiBJIHdhcyB0aGlua2luZyB0byBhZGQgYSBjb25maWd1cmF0 aW9uIGtub2IgdG8gbXkgY29kZSDigJxwb3NpdGl2ZS1vbmx54oCdLCDigJxuZWdhdGl2ZS1vbmx5 4oCdLCDigJxwb3NpdGl2ZS1hbmQtbmVnYXRpdmXigJ0sIHdpdGgg4oCcbmVnYXRpdmUtb25seeKA nSBiZWluZyB0aGUgZGVmYXVsdD8gKFNlZW1zIGxpa2UgYSB3YXN0ZSB0byBoYXZlIGNvZGVkIHVw IHRoZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbikuPG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4N CjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0iIj48 L286cD48L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0i Ij4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0 OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KV2hhdCBkb2Vz IGV2ZXJ5b25lIHRoaW5rIG9mIHRoYXQ/PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2 Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48 L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxk aXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250 LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KU2hvdWxkIHdlIGdvIGV2 ZW4gZnVydGhlciBhbmQgc2ltcGx5IHJlbW92ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmcm9t IHRoZSBzcGVjPzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRp diBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4N CjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSIiPg0K PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZv bnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpTaG91bGQgd2UgaGF2 ZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBhcyBhIGNhcGFiaWxpdHkgaW4gdGhlIGNhcGFiaWxp dHkgbmVnb3RpYXRpb24/IChTZWVtcyBub24tc2Vuc2ljYWwsIGdpdmVuIGl0IGlzIHNvbWV0aGlu ZyB0aGF0IHRoZSB3aG9sZSBmYWJyaWMgbmVlZHMgdG8gc3VwcG9ydCBvciBub3QuKTxvOnAgY2xh c3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg Y2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6 ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCiZu YnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFz cz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAx cHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBj bGFzcz0iIj4NClNob3VsZCB3ZSB0YWtlIHRoaXMgdG8gdGhlIFJJRlQgbWFpbGluZyBsaXN0Pzxv OnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjog MGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwg c2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0K4oCUIEJydW5vPG86cCBjbGFzcz0iIj48L286cD48L2Rp dj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Jsb2NrcXVvdGU+ DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXpl OiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86 cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Jsb2NrcXVv dGU+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJn YigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250 LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBu b3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29y ZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNv cmF0aW9uOiBub25lOyBmbG9hdDogbm9uZTsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IiBj bGFzcz0iIj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzwv c3Bhbj48YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBI ZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9y bWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiIGNsYXNzPSIiPg0K PHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2 ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQt Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v bmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQt c3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZmxvYXQ6IG5vbmU7IGRp c3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyIgY2xhc3M9IiI+UklGVA0KIG1haWxpbmcgbGlzdDwv c3Bhbj48YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBI ZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9y bWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiIGNsYXNzPSIiPg0K PHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2 ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQt Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v bmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQt c3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZmxvYXQ6IG5vbmU7IGRp c3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyIgY2xhc3M9IiI+PGEgaHJlZj0ibWFpbHRvOlJJRlRA aWV0Zi5vcmciIGNsYXNzPSIiPlJJRlRAaWV0Zi5vcmc8L2E+PC9zcGFuPjxiciBzdHlsZT0iY2Fy ZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXpl OiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv bnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6 IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBw eDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyIgY2xhc3M9IiI+DQo8c3BhbiBzdHlsZT0iY2FyZXQt Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAx MnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQt d2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0 OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5v cm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsg dGV4dC1kZWNvcmF0aW9uOiBub25lOyBmbG9hdDogbm9uZTsgZGlzcGxheTogaW5saW5lICFpbXBv cnRhbnQ7IiBjbGFzcz0iIj48YSBocmVmPSJodHRwczovL3d3dy5pZXRmLm9yZy9tYWlsbWFuL2xp c3RpbmZvL3JpZnQiIGNsYXNzPSIiPmh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGlu Zm8vcmlmdDwvYT48L3NwYW4+PC9kaXY+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCjxiciBjbGFz cz0iIj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_4E305EBE128744AAAF2666152576E56Ehotmailcom_-- From nobody Sun May 17 22:15:33 2020 Return-Path: X-Original-To: rift@ietfa.amsl.com Delivered-To: rift@ietfa.amsl.com Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DAA083A0766 for ; Sun, 17 May 2020 22:15:30 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -7.697 X-Spam-Level: X-Spam-Status: No, score=-7.697 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=jiprwHfG; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=spsN+lvW Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EGTeTHpBPY16 for ; Sun, 17 May 2020 22:15:26 -0700 (PDT) Received: from alln-iport-8.cisco.com (alln-iport-8.cisco.com [173.37.142.95]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CB94F3A076C for ; Sun, 17 May 2020 22:15:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=67943; q=dns/txt; s=iport; t=1589778925; x=1590988525; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=u+7hLaQOggQL/yka0H3iU5WlTSvKMlBky2s2BClFK1I=; b=jiprwHfGBWfSuFEkL3fb8TCueOvPXDi30YKskq9oGbrid8cqEppTSoE5 oXrLRVAEMwmyUW5cpvrTL2P5JgKfacRp+tIhQy4SN6UboV9LcS9/a93NB uZmpQrsJHDl0nhgJSGaKwMs2bxm8JPWHmVXbKk7rlav6sM4/FWitz1PIX w=; IronPort-PHdr: =?us-ascii?q?9a23=3AAGjl5BYHDfoDRgZmzxUxjK//LSx94ef9IxIV55?= =?us-ascii?q?w7irlHbqWk+dH4MVfC4el21QWVD4ne4uhPzevbr66mXnYPst6Ns3EHJZpLUR?= =?us-ascii?q?JNycAbhBcpD8PND0rnZOXrYCo3EIUnNhdl8ni3PFITFJP4YFvf8XG35CQZXB?= =?us-ascii?q?TyKQQzIf76Scbeis2t3LW0/JveKwxDmDu6Z+Z0KxO75QXcv8Ubm81sMKE0nx?= =?us-ascii?q?DIuXBPPe9RwDBl?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DfAQDnGMJe/5FdJa1mGwEBAQEBAQE?= =?us-ascii?q?BBQEBARIBAQEDAwEBAYIHgSUBLlEHb1gvLAqEGoNGA40/gmmHEo5AgUKBEAN?= =?us-ascii?q?QBAsBAQEMAQEYAQoKAgQBAYREAheCASQ4EwIDAQELAQEFAQEBAgEFBG2FVgy?= =?us-ascii?q?FcQEBAQEDAQEQCAkdAQEsCwEPAgEGAhEDAQEBIQEGAwICAh8GCxQJCAIEDgU?= =?us-ascii?q?bB4MEAYF+TQMuAQMLkyaQZwKBOYhhdoEygwEBAQWFAA0Lgg4DBoE4gmOCSIc?= =?us-ascii?q?XGoFBP4ERJxyCTT6CHkkBAQKBLgESAUENCYJeM4ItjjBWghw9hiKaSUoKglC?= =?us-ascii?q?TcQGEVR2dVoUTl2WNDYQRAgQCBAUCDgEBBYFpImZwcBU7KgGCPlAYDZBADBe?= =?us-ascii?q?DT4UUhUJ0AjUCBgEHAQEDCXyNLwGBDwEB?= X-IronPort-AV: E=Sophos;i="5.73,406,1583193600"; d="scan'208,217";a="494633073" Received: from rcdn-core-9.cisco.com ([173.37.93.145]) by alln-iport-8.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 18 May 2020 05:15:24 +0000 Received: from XCH-ALN-004.cisco.com (xch-aln-004.cisco.com [173.36.7.14]) by rcdn-core-9.cisco.com (8.15.2/8.15.2) with ESMTPS id 04I5FO2t007365 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Mon, 18 May 2020 05:15:24 GMT Received: from xhs-aln-001.cisco.com (173.37.135.118) by XCH-ALN-004.cisco.com (173.36.7.14) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 18 May 2020 00:15:24 -0500 Received: from xhs-rcd-002.cisco.com (173.37.227.247) by xhs-aln-001.cisco.com (173.37.135.118) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 18 May 2020 00:15:23 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (72.163.14.9) by xhs-rcd-002.cisco.com (173.37.227.247) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Mon, 18 May 2020 00:15:23 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NA+P96JPcchoTo3V2KNBM+Wqd2yoCqwRGyZY37zjmEA/Uc21Ar6Q29Zu2f0zlZ+OmNScrnazJYWqfyPXMxN7o6XI3E2nQUMaPrlBPApVmt/TxQOCi8RBq0AkOlPYNTAiFRYxq6v7XZIN8r5LmmAbSHWl0Paxq40mKmEhvLnAygnVhC53tJPvp66SjwZtlT/AktR22z1ZMnqGnJWiNmyRAjpWD5g/T2H8dD9dB9M085UklZMq4Tvp1QOoBrrOUj/pJ0xaqAJmWKUFuE4XMmdOODSqoFicnP/Lo7ZFg1IRoXfDgcPmiF+V/OWTJDMBlAOn3jJzf3/oIncuY8RKpZ2aDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u+7hLaQOggQL/yka0H3iU5WlTSvKMlBky2s2BClFK1I=; b=DsYOIbAz31Zh2PwLHpREGIdRnHbWsQ08FhDHTv2A9xKQorEe211XlViTebsKLK2tWRNCkHslx2mdE+BrRqujsvAYsUdBVpq4RoLBXLI+Bv2K0GAe+bvLkm8EIivOo1h16FJgctoMeHJzL/XpmxSc8axlxghJgHng7eJMfb888DOX8VN/ysWp1MmgKpnDxwiIIBKTugpb2ude1T2Yl6mpDDkHkjVZ8nP3LNQzinL7u0AZqemje4ZrzQn2rVoSw2UT7YYZc4s2BcuAiUxk4MOSrXyLrAibg4WcjwB8EuQQxn42oRdBWPjwXhX7vwRzQUhPGrIxmTGhNdsbrzjXVm8zPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u+7hLaQOggQL/yka0H3iU5WlTSvKMlBky2s2BClFK1I=; b=spsN+lvW5Rk9i9ryP81NMtrcXskxqnCXQnUAlI9DeVMLuMiXxbpQ7y+mxS5Mlt1Mc0gu1M96qLyzw3OoF0OVSUv+71PSEOOZxGI6Id0d7rdNV8b0nzhCWXinKPmB/vfzZ8tQE2UopugdYREoBUtYPfw7Tsd6XAWxT/cv1plEwgs= Received: from MN2PR11MB3565.namprd11.prod.outlook.com (2603:10b6:208:ea::31) by MN2PR11MB3918.namprd11.prod.outlook.com (2603:10b6:208:151::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.20; Mon, 18 May 2020 05:15:20 +0000 Received: from MN2PR11MB3565.namprd11.prod.outlook.com ([fe80::55bb:b065:86c1:1108]) by MN2PR11MB3565.namprd11.prod.outlook.com ([fe80::55bb:b065:86c1:1108%6]) with mapi id 15.20.3000.022; Mon, 18 May 2020 05:15:20 +0000 From: "Pascal Thubert (pthubert)" To: Bruno Rijsman CC: Antoni Przygienda , "rift@ietf.org" , Tony Przygienda Thread-Topic: [Rift] Negative disaggregation feature guide Thread-Index: AQHWKXf3Q/xs7t0/3UuNVqLdtIM2cqimncCAgACc0dCAAHCAYIAADK8AgAAA4+CAACjmgIAAAYyAgAAEcYCABQPlgIAAaEuP Date: Mon, 18 May 2020 05:15:20 +0000 Message-ID: References: <068412A2-1E85-4327-A50E-F6138C6D7EC0@hotmail.com> <9E819710-00BC-4285-9146-F655CAA7E1CA@hotmail.com> <432D1BE9-8BC3-4627-ACA5-72AA52A79C8C@hotmail.com> <4272B942-2C6F-4974-8515-E295A6BFF757@hotmail.com> , <4E305EBE-1287-44AA-AF26-66152576E56E@hotmail.com> In-Reply-To: <4E305EBE-1287-44AA-AF26-66152576E56E@hotmail.com> Accept-Language: fr-FR, en-US Content-Language: fr-FR X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dmarc.ietf.org; dkim=none (message not signed) header.d=none;dmarc.ietf.org; dmarc=none action=none header.from=cisco.com; x-originating-ip: [90.116.245.181] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6500e43a-bb9d-4cfc-8a2f-08d7faea75c9 x-ms-traffictypediagnostic: MN2PR11MB3918: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:449; x-forefront-prvs: 04073E895A x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iu8pvH8VuO35FfH5EVUvt10zk/Gfe+O76RmO2zdr1dy4Gbsq+d1UYNjwcByTVtRklJCaij3VvjzJ/fwtit2DicoSVdlXJNqDEeY+7k48zMj6yRjs5y9t+0lYgVR4z7wlYaz0MmVkVLqY23nSUIhf9HXdkJIoCyHkIH7HpnxA6/hcjJueAU4ZSk97OPtTxHRLVIz06N6pYyWRpXK8XdSNxPEMtodK5j4wjYaViPGOAZruK0SiopxZN2eVee3LXNHJPbLdIadSTS4rfSGhxGFuXxkiKfUmwi6PiAQq4ZHcCBsj+W+kaGa9YG+D/psQv3niLi6kevgIsgQGov5AW3rZ/ATzaSIiC0F4/Igl8BL5hBlL0nNJX5Qt1+MKRcwaj+CsbtJme/GIoLIi+IgA3cVJA7L69fRBH70OmjkkECbqjgAYKKiS2zERWOoom45B38e973tefAH6ocLF8/NqOHjfs+6AdC2YbQJTIC580O6/e8rT6JJUbdKadgRbi2ZnEn2KuWDWEOX1O0Wz0s0DYEkOMiRxIpopTZkYElFCPHFHs/k= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB3565.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(366004)(376002)(136003)(346002)(39860400002)(26005)(966005)(86362001)(45080400002)(6916009)(478600001)(54906003)(316002)(186003)(66574014)(166002)(8936002)(5660300002)(71200400001)(53546011)(6506007)(33656002)(6512007)(2906002)(91956017)(8676002)(66446008)(64756008)(66556008)(66476007)(66946007)(6486002)(36756003)(76116006)(4326008)(2616005)(244885003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 0/WG7Pu/i7giMVJ44XXXfeSYLRCdW7oeDgLebdvS9JzN8uvDZH3gX+92ToTDBvV9w2Ij5acSCNmWXGyuVHc/lQznlVFk9sFhtKylSRrgruyQnNnMnhGr11Hd3va02vt7YZEQH98WUEi8uOBjBoW3vbEkVnn5pGQr+fcbv/lQFERDzENzBzY+89W2chFfYbuEBRqS0a+HLe8J2EAororFV9BupLllyGJvlYN/NBfIfCs6lXz+3DZkVGcclL3CbCyS248nXDhT2JF0xwl+HR5esE+0PFo5BZn6dhzlXvWrMNcm6rBBXByayVNWzY4/PzMDIcHYMazwSQLdnq1f5tmv7+58WHVlNn3XsJI53dnwnomcH6IPsWP4oUHfRFjQ1yVaEZqlJljRKXuezVOmAnGrKyd0m8HGlM8L+OMo9CTdgp7Z8+yPXD1SDHVvknbLxKQp+RFhR6Xflv0HuL4XvtvykUrv/r89bL9mO1XbMcuft74vLSVsYiX6P/onz1CbYpiA x-ms-exchange-transport-forked: True Content-Type: multipart/alternative; boundary="_000_DC8B77F8CC2D4C66BAFAD821D473D243ciscocom_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 6500e43a-bb9d-4cfc-8a2f-08d7faea75c9 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 May 2020 05:15:20.1288 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8xPrdfJ85pHUBN5S08LgoU5QrwZ2t/TAPxMct8F5lfAom8TUi4RDnD8fckEEtYuMFjzBMFlC6uIpNySk7437yQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3918 X-OriginatorOrg: cisco.com X-Outbound-SMTP-Client: 173.36.7.14, xch-aln-004.cisco.com X-Outbound-Node: rcdn-core-9.cisco.com Archived-At: Subject: Re: [Rift] Negative disaggregation feature guide X-BeenThere: rift@ietf.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion of Routing in Fat Trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 May 2020 05:15:31 -0000 --_000_DC8B77F8CC2D4C66BAFAD821D473D243ciscocom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhpcyBpcyBxdWl0ZSBpbnRlcmVzdGluZywgQnJ1bm8uDQoNCkRvZXMgdGhhdCBtZWFuIHRoYXQg dGhlcmUgYXJlIGlzc3VlcyBydW5uaW5nIG5lZ2F0aXZlIGluIHN0YW5kIGFsb25lPyBJ4oCZZCBi ZSByZWFsbHkgaW50ZXJlc3RlZCBpZiB3ZSBoYXZlIGEgbW9udGhseSBvciBzb21ldGhpbmcgb25l IG9mIHRoZXNlIGRheXMuIEFsc28gdGhlcmXigJlzIHRoZSBzZWN0aW9uIG9uIGRpc2FnZ3JlZ2F0 aW9uIGluIHRoZSBhcHBsaWNhYmlsaXR5IGRyYWZ0IHRoYXQgd2UgbWF5IGVucmljaA0KDQpNYW55 IHRoYW5rcyBmb3IgYWxsIHlvdXIgZWZmb3J0cyENCg0KUGFzY2FsDQoNCkxlIDE4IG1haSAyMDIw IMOgIDAxOjAyLCBCcnVubyBSaWpzbWFuIDxicnVub3JpanNtYW5AaG90bWFpbC5jb20+IGEgw6lj cml0IDoNCg0K77u/IEhpIFRvbnksDQoNCkkgcmFuIGludG8gdmFyaW91cyBjb21wbGljYXRpb25z IGFuZCBhIHJvYWQtYmxvY2sgd2hpbGUgd29ya2luZyBvbiB0aGUg4oCcZGlzYWdncmVnYXRpb24g bmVnYXRpdmUtb25seeKAnSBrbm9iIGluIFJJRlQtcHl0aG9uLCBzbyBJIHdpbGwgYmUgcmlwcGlu ZyB0aGF0IGtub2Igb3V0IG9mIG15IGNvZGUuDQoNCkluc3RlYWQgSSB3aWxsIHN0aWNrIHRvIHRo ZSB0aHJlZSBjb21tYW5kbWVudHMgYXMgaGFuZGVkIGRvd24gb24gdGhlIHN0b25lIHRhYmxldCBi eSB0aGUgd2lzZSBSSUZUIGdvZHMgZnJvbSBhYm92ZSA6LSkNCg0KT24gTWF5IDE0LCAyMDIwLCBh dCAxMjoyNiBQTSwgQW50b25pIFByenlnaWVuZGEgPHByej00MGp1bmlwZXIubmV0QGRtYXJjLmll dGYub3JnPG1haWx0bzpwcno9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZz4+IHdyb3RlOg0K DQpJbiBhIHByb2JhYmx5IG1vcmUgZGV0YWlsZWQgd2F5IHdpdGggYSBsaXR0bGUgc3RvbmUgdGFi bGV0IEkgc3VnZ2VzdCDwn5iJDQoNCg0KICAxLiAgWW91IFNIQUxMIG5lZ2F0aXZlbHkgZGlzYWdn cmVnYXRlIG9ubHkgaWYgeW914oCZcmUgVG9GIGFuZCBoYXZlIGhvcml6b250YWwgbGlua3MgKHJp bmcpDQogIDIuICBZb3UgU0hBTEwgcHJvcGFnYXRlIHRyYW5zaXRpdmVseSBuZWdhdGl2ZSBkaXNh Z2dyZWdhdGlvbg0KICAzLiAgWW91IFNIQUxMIHVzZSBwb3NpdGl2ZSBpZiB5b3XigJlyZSBub3Qg VG9GIG9yIGhhdmUgbm8gaG9yaXpvbnRhbA0KDQoNCk9mIGNvdXJzZSwgYW55IHZlbmRvciwgZXZl biBvcGVuIHNvdXJjZWQgb25lIGNhbiBhZGQgYW55IGZsYXZvciBvZiBrbm9icyB0aGF0IG1ha2Vz IHRoZWlyIGRpc2ggdW5pcXVlIGV2ZW4gaWYgaXQgYnJlYWtzIHRoZSBzcGVjIHN0cmljdGx5IHNw ZWFraW5nIOKApiBTbyBkaWQgSSDwn5iJDQoNCi0tLSB0b255DQoNCkZyb206IFRvbnkgUHJ6eWdp ZW5kYSA8dG9ueXNpZXRmQGdtYWlsLmNvbTxtYWlsdG86dG9ueXNpZXRmQGdtYWlsLmNvbT4+DQpE YXRlOiBUaHVyc2RheSwgTWF5IDE0LCAyMDIwIGF0IDExOjEyIEFNDQpUbzogQnJ1bm8gUmlqc21h biA8YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tPG1haWx0bzpicnVub3JpanNtYW5AaG90bWFpbC5j b20+Pg0KQ2M6ICJQYXNjYWwgVGh1YmVydCAocHRodWJlcnQpIiA8cHRodWJlcnRAY2lzY28uY29t PG1haWx0bzpwdGh1YmVydEBjaXNjby5jb20+PiwgInJpZnRAaWV0Zi5vcmc8bWFpbHRvOnJpZnRA aWV0Zi5vcmc+IiA8cmlmdEBpZXRmLm9yZzxtYWlsdG86cmlmdEBpZXRmLm9yZz4+LCBNZWxjaGlv ciBBZWxtYW5zIDxtYWVsbWFuc0BqdW5pcGVyLm5ldDxtYWlsdG86bWFlbG1hbnNAanVuaXBlci5u ZXQ+PiwgQ2hyaXN0aWFuIEdyYWYgPGNncmFmQGp1bmlwZXIubmV0PG1haWx0bzpjZ3JhZkBqdW5p cGVyLm5ldD4+LCBPbGl2ZXIgU3RldWRsZXIgPG9zdGV1ZGxlckBqdW5pcGVyLm5ldDxtYWlsdG86 b3N0ZXVkbGVyQGp1bmlwZXIubmV0Pj4sIE9saXZpZXIgVmFuZGV6YW5kZSA8b3ZhbmRlemFuZGVA anVuaXBlci5uZXQ8bWFpbHRvOm92YW5kZXphbmRlQGp1bmlwZXIubmV0Pj4sIEFudG9uaSBQcnp5 Z2llbmRhIDxwcnpAanVuaXBlci5uZXQ8bWFpbHRvOnByekBqdW5pcGVyLm5ldD4+LCAidG9tbWFz b2NhaWF6emlAZ21haWwuY29tPG1haWx0bzp0b21tYXNvY2FpYXp6aUBnbWFpbC5jb20+IiA8dG9t bWFzb2NhaWF6emlAZ21haWwuY29tPG1haWx0bzp0b21tYXNvY2FpYXp6aUBnbWFpbC5jb20+Piwg SmVmZiBUYW50c3VyYSA8amVmZnRhbnQuaWV0ZkBnbWFpbC5jb208bWFpbHRvOmplZmZ0YW50Lmll dGZAZ21haWwuY29tPj4sIFpoYW9odWkgWmhhbmcgPHp6aGFuZ0BqdW5pcGVyLm5ldDxtYWlsdG86 enpoYW5nQGp1bmlwZXIubmV0Pj4sIFpoYW9odWkgWmhhbmcgPHp6aGFuZ0BqdW5pcGVyLm5ldDxt YWlsdG86enpoYW5nQGp1bmlwZXIubmV0Pj4sIEplZmZyZXkgWmhhbmcgPHp6aGFuZzIwMDNAZ21h aWwuY29tPG1haWx0bzp6emhhbmcyMDAzQGdtYWlsLmNvbT4+DQpTdWJqZWN0OiBSZTogTmVnYXRp dmUgZGlzYWdncmVnYXRpb24gZmVhdHVyZSBndWlkZQ0KDQpbRXh0ZXJuYWwgRW1haWwuIEJlIGNh dXRpb3VzIG9mIGNvbnRlbnRdDQoNCiBteSB0aG91Z2h0czoNCg0KbmVnYXRpdmUgaXMgc2VyaW91 c2x5IG1vcmUgY29tcGxleCB0byAgaW1wbGVtZW50IGFuZCB1bmRlcnN0YW5kIG9wZXJhdGlvbmFs bHkgYW5kIG9ubHkgbmVlZGVkIG9uIG11bHRpLXBsYW5lIGZhYnJpY3MsIHRhaHQncyB3aHkgcG9z aXRpdmUgaXMgS0lTUyA7LSkgQWxzbywgbmVnYXRpdmUgYWx3YXlzIGZvcmNlcyB5b3UgdG8gcmlu ZyB0aGUgdG9wIG9mIHRoZSBmYWJyaWMgd2hpY2ggaW4gc2luZ2xlIHBsYW5lIGRlc2lnbiBpcyBh biB1bm5lY2Vzc2FyeSByZXF1aXJlbWVudC4NCg0KSSBmb3Jlc2VlIHZlbmRvcnMgbm90IGltcGxl bWVudGluZyBuZWdhdGl2ZSBmb3Igc2ltcGxpY2l0eSwgdmVyeSBzbWFsbCBmb290cHJpbnQgZmFi cmljcy4NCg0KdGhlIGRpc2N1c3Npb24gYWJvdXQgY2FwYWJpbGl0eSBhZHZlcnRpc2VtZW50IGlz IGludGVyZXN0aW5nLCB3ZSBjYW4ganVzdCBhZGQgb25lIGJpdCBvbiB0aGUgbm9kZSBjYXBhYmls aXRpZXMgZWxlbWVudCwgbWFrZSBpdCBvcHRpb25hbCBhbmQgZGVmYXVsdCB0cnVlLg0KDQpPZiBj b3Vyc2UgYW4gaW1wbGVtZW50YXRpb24gdGFodCB1bmRlcnN0YW5kcyB0aGF0IGFsbCBpbnZvbHZl ZCBub2RlcyB1bmRlcnN0YW5kIG5lZ2F0aXZlIGlzIGZyZWUgdG8gdXNlIG5lZ2F0aXZlIGluc3Rl YWQgb2YgcG9zaXRpdmUgdGhlbi4NCg0KLS0gdG9ueQ0KDQpPbiBUaHUsIE1heSAxNCwgMjAyMCBh dCAxMTowNSBBTSBCcnVubyBSaWpzbWFuIDxicnVub3JpanNtYW5AaG90bWFpbC5jb208bWFpbHRv OmJydW5vcmlqc21hbkBob3RtYWlsLmNvbT4+IHdyb3RlOg0KQnJvYWRlbmluZyBhIGRpc2N1c3Np b24gb24gbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gdG8gdGhlIFJJRlQgbWFpbGluZyBsaXN0Lg0K DQpOb3cgdGhhdCB3ZSBoYXZlIGltcGxlbWVudGVkIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlu IFJJRlQtUHl0aG9uLCBhbmQgbm93IHRoYXQgd2UgYXJlIGdldHRpbmcgc29tZSBvcGVyYXRpb25h bCBleHBlcmllbmNlIHdpdGggaXQsIHRoZSBmb2xsb3dpbmcgaXMgYmVjb21pbmcgbW9yZSBhbmQg bW9yZSBldmlkZW50Og0KDQpJdCBzZWVtcyB0byB1cyAoQnJ1bm8gYW5kIFBhc2NhbCwgZm9yIG5v dykgdGhhdCBvbmNlIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGlzIGltcGxlbWVudGVkLCB0aGVy ZSBpcyByZWFsbHkgbm8gbmVlZCBmb3IgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gYW55IG1vcmUu DQoNCkV2ZXJ5IHVzZSBjYXNlIHRoYXQgY2FuIGJlIHNvbHZlZCBieSBwb3NpdGl2ZSBkaXNhZ2dy ZWdhdGlvbiBjYW4gKGFzIGZhciBhcyB3ZSBjYW4gY3VycmVudGx5IHRlbGwpIGFsc28gYmUgc29s dmVkIGJ5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uLg0KDQpGdXJ0aGVybW9yZSwgbmVnYXRpdmUg ZGlzYWdncmVnYXRpb24gc29sdmVzIHRoZSBwcm9ibGVtcyBpbiBhIGZhciBzaW1wbGVyIGFuZCBt b3JlIGVsZWdhbnQgd2F5OiB0aGVyZSBhcmUgZmV3ZXIgYWR2ZXJ0aXNpbmcgbm9kZXMgYW5kIGZl d2VyIGFkdmVydGlzZWQgVElFcyBpbnZvbHZlZCwgYW5kIHdlIGRvbuKAmXQgaGF2ZSB0aGUgc3lu Y2hyb25pemF0aW9uIGlzc3VlIHRoYXQgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaGFzIHRoYXQg cG90ZW50aWFsbHkgY2F1c2VzIGluY2FzdCBwcm9ibGVtcy4NCg0KVGh1cywgYXQgdGhlIHZlcnkg bGVhc3QsIGl0IG1ha2VzIHNlbnNlIHRvIHJlY29tbWVuZCB0aGF0IGluIGEgZ2l2ZW4gZmFicmlj IHdlIHVzZSBlaXRoZXIgb25seSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5IG9yIHBvc2l0 aXZlIGRpc2FnZ3JlZ2F0aW9uIG9ubHksIHdpdGggbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gYmVp bmcgdGhlIGRlZmF1bHQuDQoNCklmIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlv biBhcmUgZW5hYmxlZCBzaW11bHRhbmVvdXNseSBpbiBvbmUgYW5kIHRoZSBzYW1lIGZhYnJpYywg ZXZlcnl0aGluZyBzdGlsbCB3b3JrcyBmaW5lIGFzIGZhciBhcyB3ZSBjYW4gc2VlLiBCdXQgdGhl cmUgYXJlIHNvbWUg4oCcaW50ZXJlc3RpbmfigJ0gaW50ZXJhY3Rpb25zIHRoYXQgbWFrZSB0aGlu Z3MgdW5uZWNlc3NhcmlseSBjb21wbGV4IGFuZCBwb3RlbnRpYWxseSBmcmFnaWxlLg0KDQpJZiBz dXBwb3J0IGZvciBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpcyBtYW5kYXRvcnksIGFuZCBpZiBv dXIgYXNzZXNzbWVudCB0aGF0IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGNhbiBzb2x2ZSBhbGwg dXNlIGNhc2VzIGlzIGNvcnJlY3QsIHRoZW4gd2UgY291bGQgZ28gb25lIGJvbGQgc3RlcCBmdXJ0 aGVyIGFuZCBjb21wbGV0ZWx5IHJlbW92ZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmcm9tIHRo ZSBzcGVjaWZpY2F0aW9uLg0KDQpUaG91Z2h0cz8NCg0K4oCUIEJydW5vDQoNCg0KT24gTWF5IDE0 LCAyMDIwLCBhdCAxMDo0OCBBTSwgUGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSA8cHRodWJlcnRA Y2lzY28uY29tPG1haWx0bzpwdGh1YmVydEBjaXNjby5jb20+PiB3cm90ZToNCg0KSGVsbG8gQnJ1 bm86DQoNCkkgbGlrZSB5b3VyIG5lZ2F0aXZlLW9ubHkgZGVmYXVsdCBiZWNhdXNlIGl0IGlzIHBy b2JhYmx5IHRoZSBzYWZlc3QuIExldCBtZSBlbGFib3JhdGUuLg0KDQpwYXJ0aXRpb25pbmcgc2F2 ZXMgYSBsb3QgbW9yZSBwb3J0cyBwZXIgVG9GIG5vZGUgdGhhbiB0aGUgcmluZyBjb3N0IHNvIGl0 IGRvZXMgbm90IG1hdHRlci4NCg0KSWYgeW91IGVuYWJsZSBuZWdhdGl2ZSwgdGhlcmXigJlzIG5v IHBvaW50IGluIGRvaW5nIGFueSBwb3NpdGl2ZSBhdCBhbGwsIGlzIHRoZXJlPyBTbyB3aGF0IGRv IHdlIHRyeSB0byBzYXZlIGJ5IGNvbWJpbmluZz8gSW4geW91ciBleGFtcGxlLCBJIGd1ZXNzIHRo YXQgc3VwZXIgMSAyIGhhZCB0byByZXRyYWN0IHRoZSBwb3NpdGl2ZSBkaXNhZyBhbmQgdGhlbiBk byBuZWdhdGl2ZSBpbnN0ZWFkIHdoZW4gdGhlIGxpbmsgdG8gc3BpbmUgMSAxIGZlbGwuIFdhcyB0 aGF0IG5vdCBhIGJpdCBjb21wbGV4IGFuZCBlcnJvciBwcm9uZT8NCg0KQWxzbyBJ4oCZbSBub3Qg Y2xlYXIgaG93IHdlIGNhbiBhbHdheXMgZGVjaWRlIHRoYXQgZHluYW1pY2FsbHkgYW5kIEkgZG8g bm90IGJlbGlldmUgdGhhdCB3ZSBzcGVjaWZpZWQgdGhhdC4gU28gSSB1bmRlcnN0YW5kIHRoYXQg aXTigJlzIG1vcmUgbGlrZSBhIHVzZSBjYXNlIHRoaW5neSwgbGlrZSBhIGNvbmZpZ3VyYXRpb24g dGhhdCB3b3VsZCBiZSBhZGFwdGVkIHRvIHRoZSB1c2UgY2FzZS4NCg0KPT4gZG8gbm90IGNvbmZp Z3VyZSBib3RoIGF0IHRoZSBzYW1lIHRpbWUgdXNlIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2 ZSBkaXNhZy4NCg0KV2UgZG8gbm90IHRyeSB0byBkbyBwb3NpdGl2ZSBkaXNhZyB0cmFuc2l0aXZl bHkuIFNvIGlmIHRoZXJlIGlzIGEgbmVlZCBmb3IgdHJhbnNpdGl2ZSwgeW91IGhhdmUgdG8gdXNl IG5lZ2F0aXZlLiAgSW4gYSBtdWx0aXBsYW5lIGNhc2UsIHRoZXJl4oCZcyB1c3VhbGx5IChhcyBp biB5b3VyIHBpY3R1cmUpIG9uZSBUb1AgcGVyIHBsYW5lIGluIGVhY2ggUG9ELCBhbmQgYSBmaXJz dCBsaW5rIGZhaWx1cmUgKHNheSBTcGluZSAxIDEgdG8gbGVhZiAxIDEpIGNhbiBhbHJlYWR5IGNh dXNlIGEgZmFsbGVuIGxlYWY6IGxlYWYgMSAxIGlzIG5vIG1vcmUgcmVhY2hhYmxlIHdpdGhpbiBw bGFuZSAxLiBUaGlzIHRlbGxzIHlvdSB0aGF0IGFsbCBsZWF2ZXMgaW4gdGhlIG90aGVyIFBvRHMg bXVzdCBhdm9pZCB0aGF0IHBsYW5lLCBhbmQgdGhhdOKAmXMgYSBsZWFmIGRlY2lzaW9uOyB3aGlj aCB0ZWxscyB5b3UgdGhhdCB5b3UgbmVlZCB0byByZWN1cnNlIHRyYW5zaXRpdmVseSBkb3duLiBU aGlzIGluZGljYXRlcyB0aGF0IG5lZ2F0aXZlIG11c3QgYmUgYWN0aXZhdGVkIGluIGEgaGlnaGx5 IHBhcnRpdGlvbmVkIChtZWFuaW5nIGxvdyByZWR1bmRhbmN5KSBtdWx0aXBsYW5lLg0KDQpTYXkg d2UgdHJ5IHRvIHVzZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiB0cmFuc2l0aXZlbHkgaW4gYSBU b0YgdGhhdCBpcyBwYXJ0aXRpb25lZCBsaWtlIGluIHBsYW5lcywgeW914oCZZCBydW4gYSByaXNr IHRoYXQgbm9uZSBvZiB0aGUgVG9GIG5vZGVzIHRoYXQgY2FuIHN0aWxsIHJlYWNoIHRoZSBsZWFm IGNhbiBzZWUgKHRocm91Z2ggc291dGggcmVmbGVjdGlvbikgdGhlIFRvRiBub2RlIHRoYXQgY2Fu bm90IHNvIHRoZXkgZG8gbm90IGtub3cgdGhleSBuZWVkIHRvIGRpc2FnLiBTbyB5b3UgZW5kIHVw IG5lZWRpbmcgdGhlIHNhbWUgcmluZyBhcyBmb3IgbmVnYXRpdmUsIHRoZSBzb3V0aGVybiByZWZs ZWN0aW9uIGJlY29tZSBtb3N0bHkgdXNlbGVzcyBhbmQgdGhlIGJlbmVmaXRzIG9mIHBvc2l0aXZl IGFyZSBnb25lLg0KDQpQYXJ0aXRpb25uZWQgVG9GID0+IG5lZ2F0aXZlDQoNCkkgdHJ1c3QgdGhh dCB3ZSBjYW4gdXNlIHBvc2l0aXZlIGluIGEgaGlnaGx5IHJlZHVuZGFudCBhbmQgc3ltbWV0cmlj YWwgbm9uLXBhcnRpdGlvbmVkIFRvRi4gSWYgbm8gb25lIGNhbiByZWFjaCB0aGUgbGVhZiBhbnlt b3JlIChsaWtlIGl04oCZcyBkZWFkKSB3ZSBoYXZlIG5vIGlzc3VlIHNpbmNlIGl0IHNob3VsZCBu b3QgYmUgZGlzYWdncmVnYXRlZCwganVzdCB1c2UgdGhlIGRpc2NhcmRzIHJvdXRlIGF0IGFueSBU b0Ygbm9kZS4gSWYgeW91IGhhdmUgZW5vdWdoIHJlZHVuZGFuY3kgYW5kIG5vIHBhcnRpdGlvbiwg IHRoZXJlIHdpbGwgYWx3YXlzIGJlIG5vZGVzIHRoYXQgY2FuIGJvdGggcmVhY2ggYSBsZWFmIGFu ZCBkaXNjb3ZlciB0aGF0IGEgcGVlciBkb2VzIG5vdC4NCg0KPT4gUG9zaXRpdmUgaXMgaW5kaWNh dGVkIGZvciBhIHZlcnkgc3BlY2lmaWMgdXNlIGNhc2UsIGlkZWFsbHkgMiBsZXZlbHMgYW5kIGZ1 bGx5IG1lc2hlZC4gTWF5YmUgdGhhdOKAmXMgZW5vdWdoIGRlcGxveW1lbnRzIHRvIGp1c3RpZnkg dGhlIGZlYXR1cmUgaW4gdGhlIGNvZGUuDQoNClNvIHRoZSBxdWVzdGlvbiBpcyByZWFsbHkgdGhh dCBibHVycnkgem9uZSBiZXR3ZWVuIGhpZ2hseSByZWR1bmRhbnQgc2luZ2xlIHBsYW5lIGFuZCBo aWdobHkgcGFydGl0aW9uZWQgbXVsdGlwbGFuZSB3aGF0IHNob3VsZCBvbmUgZG8/IEkgYmVjb21l cyBhIHJpc2svYmVuZWZpdCBqdWRnZW1lbnTigKYgSWYgbmVnYXRpdmUgaXMgaW1wbGVtZW50ZWQg YW5kIHRoZSByaW5nIGlzIHRoZXJlLCBJ4oCZZCB1c2UgaXQsIGJldHRlciBzYWZlIHRoYW4gc29y cnkuDQoNClRha2UgY2FyZQ0KDQpQYXNjYWwNCg0KDQoNCkZyb206IEJydW5vIFJpanNtYW4gPGJy dW5vcmlqc21hbkBob3RtYWlsLmNvbTxtYWlsdG86YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tPj4N ClNlbnQ6IGpldWRpIDE0IG1haSAyMDIwIDE3OjM2DQpUbzogUGFzY2FsIFRodWJlcnQgKHB0aHVi ZXJ0KSA8cHRodWJlcnRAY2lzY28uY29tPG1haWx0bzpwdGh1YmVydEBjaXNjby5jb20+Pg0KQ2M6 IE1lbGNoaW9yIEFlbG1hbnMgPG1hZWxtYW5zQGp1bmlwZXIubmV0PG1haWx0bzptYWVsbWFuc0Bq dW5pcGVyLm5ldD4+OyBDaHJpc3RpYW4gR3JhZiA8Y2dyYWZAanVuaXBlci5uZXQ8bWFpbHRvOmNn cmFmQGp1bmlwZXIubmV0Pj47IE9saXZlciBTdGV1ZGxlciA8b3N0ZXVkbGVyQGp1bmlwZXIubmV0 PG1haWx0bzpvc3RldWRsZXJAanVuaXBlci5uZXQ+PjsgT2xpdmllciBWYW5kZXphbmRlIDxvdmFu ZGV6YW5kZUBqdW5pcGVyLm5ldDxtYWlsdG86b3ZhbmRlemFuZGVAanVuaXBlci5uZXQ+PjsgVG9u eSBQcnp5Z2llbmRhIDx0b255c2lldGZAZ21haWwuY29tPG1haWx0bzp0b255c2lldGZAZ21haWwu Y29tPj47IEFudG9uaSBQcnp5Z2llbmRhIDxwcno9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9y ZzxtYWlsdG86cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc+PjsgdG9tbWFzb2NhaWF6 emlAZ21haWwuY29tPG1haWx0bzp0b21tYXNvY2FpYXp6aUBnbWFpbC5jb20+OyBKZWZmIFRhbnRz dXJhIDxqZWZmdGFudC5pZXRmQGdtYWlsLmNvbTxtYWlsdG86amVmZnRhbnQuaWV0ZkBnbWFpbC5j b20+PjsgSmVmZnJleSAoWmhhb2h1aSkgWmhhbmcgPHp6aGFuZ0BqdW5pcGVyLm5ldDxtYWlsdG86 enpoYW5nQGp1bmlwZXIubmV0Pj47IEplZmZyZXkgKFpoYW9odWkpIFpoYW5nIDx6emhhbmc9NDBq dW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9yZzxtYWlsdG86enpoYW5nPTQwanVuaXBlci5uZXRAZG1h cmMuLmlldGYub3JnPj47IEplZmZyZXkgWmhhbmcgPHp6aGFuZzIwMDNAZ21haWwuY29tPG1haWx0 bzp6emhhbmcyMDAzQGdtYWlsLmNvbT4+DQpTdWJqZWN0OiBSZTogTmVnYXRpdmUgZGlzYWdncmVn YXRpb24gZmVhdHVyZSBndWlkZQ0KDQoNCk9uIE1heSAxNCwgMjAyMCwgYXQgODo1MyBBTSwgUGFz Y2FsIFRodWJlcnQgKHB0aHViZXJ0KSA8cHRodWJlcnRAY2lzY28uY29tPG1haWx0bzpwdGh1YmVy dEBjaXNjby5jb20+PiB3cm90ZToNCg0KVGhpcyBkb2VzIG5vdCBzaG93IGJlY2F1c2Ugb24geW91 ciBmaXJzdCBicmVha2FnZSB5b3UgdXNlIHRoZSBwb3NpdGl2ZSBkaXNhZy4gSWYgeW91IHN0aWNr IHRvIHRoZSBsb2dpYyB5b3UgdXNlZCBhdCB0aGUgYmVnaW5uaW5nLCB0aGF0IGlzIHBpY2sgYW4g ZXhhbXBsZSB3aGVyZSBwb3NpdGl2ZSBhcHBsaWVzIGJ1dCB1c2UgbmVnYXRpdmUsIHRoZW4gb24g eW91ciBmaXJzdCBicmVha2FnZSB5b3XigJlkIHNob3cgdGhhdCB0aGUgbmVnYXRpdmUgZG9lcyBu b3QgbmVlZCB0byBnbyB0cmFuc2l0aXZlbHkgdG8gdGhlIGxlYWYsIGJlY2F1c2UgdGhlIHNwaW5l IG5vZGVzIHN0aWxsIGhhdmUgc29sdXRpb25zLiBJcyB0aGF0IGEgbG90IG9mIHdvcmsgdG8gY2hh bmdlPw0KDQpUaGlzIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyB0aGlua2luZyBhcyB3ZWxsLg0KDQpN YXliZSBJIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uIHdpdGgg YSBmaW5lLXRvb3RoZWQgY29tYiBhZ2FpbiwgYnV0IG15IChwb3NzaWJseSBpbmNvcnJlY3QpIHVu ZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0 aW9uIGlzIHRoYXQgd2UgcG9zaXRpdmUgZGlzYWdncmVnYXRpb24gaXMgdXNlZCAoTVVTVCBiZSB1 c2VkPyBTSE9VTEQgYmUgdXNlZD8pIGluIHRoZSDigJxmaXJzdCBmYWlsdXJl4oCdIHNjZW5hcmlv Lg0KDQpQZXJzb25hbGx5LCBJIHNlZSBubyByZWFzb24gd2h5IHdlIHdvdWxkIG5vdCBiZSBhYmxl IHRvIHVzZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBpbnN0ZWFkIG9mIHBvc2l0aXZlIGRpc2Fn Z3JlZ2F0aW9uIGluIHRoZSBmaXJzdCBmYWlsdXJlIHNjZW5hcmlvIGFzIHdlbGwuDQoNCkluIHRo ZSBjb250ZXh0IG9mIHRoZSB0dXRvcmlhbCwgdGhpcyB3b3VsZCBoYXZlIHRoZSBhZHZhbnRhZ2Ug b2YgY2xlYXJseSBkZW1vbnN0cmF0aW5nIHRoZSBwcm9wYWdhdGlvbiBsb2dpYyBtb3JlIGNsZWFy bHkuDQoNCkJ1dCBtb3JlIGltcG9ydGFudGx5LCBpdCBzZWVtcyB0byBtZSB0aGF0IG9uY2UgbmVn YXRpdmUgZGlzYWdncmVnYXRpb24gaXMgaW1wbGVtZW50ZWQsIHRoZXJlIGlzIHJlYWxseSBubyBy ZWFzb24gdG8gdXNlIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGFueXdoZXJlLiBJdCB3b3VsZCBi ZSDigJxjbGVhbmVy4oCdIChsZXNzIHNpZ25hbGluZykgYW5kIOKAnGJldHRlcuKAnSAobm8gaW5j YXN0KSB0byBzaW1wbHkgdXNlIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uIGV2ZXJ5d2hlcmUuDQoN ClNv4oCmLiBJIHdhcyB0aGlua2luZyB0byBhZGQgYSBjb25maWd1cmF0aW9uIGtub2IgdG8gbXkg Y29kZSDigJxwb3NpdGl2ZS1vbmx54oCdLCDigJxuZWdhdGl2ZS1vbmx54oCdLCDigJxwb3NpdGl2 ZS1hbmQtbmVnYXRpdmXigJ0sIHdpdGgg4oCcbmVnYXRpdmUtb25seeKAnSBiZWluZyB0aGUgZGVm YXVsdD8gKFNlZW1zIGxpa2UgYSB3YXN0ZSB0byBoYXZlIGNvZGVkIHVwIHRoZSBwb3NpdGl2ZSBk aXNhZ2dyZWdhdGlvbikuDQoNCldoYXQgZG9lcyBldmVyeW9uZSB0aGluayBvZiB0aGF0Pw0KDQpT aG91bGQgd2UgZ28gZXZlbiBmdXJ0aGVyIGFuZCBzaW1wbHkgcmVtb3ZlIHBvc2l0aXZlIGRpc2Fn Z3JlZ2F0aW9uIGZyb20gdGhlIHNwZWM/DQoNClNob3VsZCB3ZSBoYXZlIG5lZ2F0aXZlIGRpc2Fn Z3JlZ2F0aW9uIGFzIGEgY2FwYWJpbGl0eSBpbiB0aGUgY2FwYWJpbGl0eSBuZWdvdGlhdGlvbj8g KFNlZW1zIG5vbi1zZW5zaWNhbCwgZ2l2ZW4gaXQgaXMgc29tZXRoaW5nIHRoYXQgdGhlIHdob2xl IGZhYnJpYyBuZWVkcyB0byBzdXBwb3J0IG9yIG5vdC4pDQoNClNob3VsZCB3ZSB0YWtlIHRoaXMg dG8gdGhlIFJJRlQgbWFpbGluZyBsaXN0Pw0KDQrigJQgQnJ1bm8NCg0KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NClJJRlQgbWFpbGluZyBsaXN0DQpSSUZU QGlldGYub3JnPG1haWx0bzpSSUZUQGlldGYub3JnPg0KaHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFp bG1hbi9saXN0aW5mby9yaWZ0DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQpSSUZUIG1haWxpbmcgbGlzdA0KUklGVEBpZXRmLm9yZw0KaHR0cHM6Ly93 d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9yaWZ0DQo= --_000_DC8B77F8CC2D4C66BAFAD821D473D243ciscocom_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5IGRpcj0iYXV0byI+DQpU aGlzIGlzIHF1aXRlIGludGVyZXN0aW5nLCBCcnVuby4mbmJzcDsNCjxkaXY+PGJyPg0KPC9kaXY+ DQo8ZGl2PkRvZXMgdGhhdCBtZWFuIHRoYXQgdGhlcmUgYXJlIGlzc3VlcyBydW5uaW5nIG5lZ2F0 aXZlIGluIHN0YW5kIGFsb25lPyBJ4oCZZCBiZSByZWFsbHkgaW50ZXJlc3RlZCBpZiB3ZSBoYXZl IGEgbW9udGhseSBvciBzb21ldGhpbmcgb25lIG9mIHRoZXNlIGRheXMuIEFsc28gdGhlcmXigJlz IHRoZSBzZWN0aW9uIG9uIGRpc2FnZ3JlZ2F0aW9uIGluIHRoZSBhcHBsaWNhYmlsaXR5IGRyYWZ0 IHRoYXQgd2UgbWF5IGVucmljaCZuYnNwOzxicj4NCjxicj4NCjxkaXYgZGlyPSJsdHIiPg0KPGRp dj5NYW55IHRoYW5rcyBmb3IgYWxsIHlvdXIgZWZmb3J0cyE8L2Rpdj4NCjxkaXY+PGJyPg0KPC9k aXY+DQo8ZGl2PlBhc2NhbDwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGRpcj0ibHRyIj48YnI+DQo8Ymxv Y2txdW90ZSB0eXBlPSJjaXRlIj5MZSAxOCBtYWkgMjAyMCDDoCAwMTowMiwgQnJ1bm8gUmlqc21h biAmbHQ7YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tJmd0OyBhIMOpY3JpdCZuYnNwOzo8YnI+DQo8 YnI+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPg0KPGRp diBkaXI9Imx0ciI+77u/IDxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXpl OiAxNHB4OyIgY2xhc3M9IiI+SGkgVG9ueSw8L2ZvbnQ+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZh Y2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+PGJyIGNs YXNzPSIiPg0KPC9mb250PjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj48Zm9udCBmYWNlPSJBdmVuaXIt Qm9vayIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsiIGNsYXNzPSIiPkkg cmFuIGludG8gdmFyaW91cyBjb21wbGljYXRpb25zIGFuZCBhIHJvYWQtYmxvY2sgd2hpbGUgd29y a2luZyBvbiB0aGUg4oCcZGlzYWdncmVnYXRpb24gbmVnYXRpdmUtb25seeKAnSBrbm9iIGluIFJJ RlQtcHl0aG9uLCBzbyBJIHdpbGwgYmUgcmlwcGluZyB0aGF0IGtub2Igb3V0IG9mIG15IGNvZGUu PC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+PGZvbnQgZmFjZT0iQXZlbmlyLUJv b2siIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+DQo8L2Zv bnQ+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPjxmb250IGZhY2U9IkF2ZW5pci1Cb29rIiBzdHlsZT0i Zm9udC1zaXplOiAxNHB4OyIgY2xhc3M9IiI+SW5zdGVhZCBJIHdpbGwgc3RpY2sgdG8gdGhlIHRo cmVlIGNvbW1hbmRtZW50cyBhcyBoYW5kZWQgZG93biBvbiB0aGUgc3RvbmUgdGFibGV0IGJ5IHRo ZSB3aXNlIFJJRlQgZ29kcyBmcm9tIGFib3ZlIDotKSAmbmJzcDs8L2ZvbnQ+PGJyIGNsYXNzPSIi Pg0KPGRpdj48YnIgY2xhc3M9IiI+DQo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBjbGFzcz0iIj4N CjxkaXYgY2xhc3M9IiI+T24gTWF5IDE0LCAyMDIwLCBhdCAxMjoyNiBQTSwgQW50b25pIFByenln aWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzpwcno9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRmLm9y ZyIgY2xhc3M9IiI+cHJ6PTQwanVuaXBlci5uZXRAZG1hcmMuaWV0Zi5vcmc8L2E+Jmd0OyB3cm90 ZTo8L2Rpdj4NCjxiciBjbGFzcz0iQXBwbGUtaW50ZXJjaGFuZ2UtbmV3bGluZSI+DQo8ZGl2IGNs YXNzPSIiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIiBzdHlsZT0icGFnZTogV29yZFNlY3Rp b24xOyBjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBm b250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5v cm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1h bGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0 ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13 aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCjxkaXYgc3R5bGU9Im1hcmdpbjog MGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwg c2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KSW4gYSBwcm9iYWJseSBtb3JlIGRldGFpbGVkIHdheSB3 aXRoIGEgbGl0dGxlIHN0b25lIHRhYmxldCBJIHN1Z2dlc3Q8c3BhbiBjbGFzcz0iQXBwbGUtY29u dmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv dDtBcHBsZSBDb2xvciBFbW9qaSZxdW90OzsiIGNsYXNzPSIiPvCfmIk8L3NwYW4+PHNwYW4gY2xh c3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPiZuYnNwOzxvOnAgY2xhc3M9 IiI+PC9vOnA+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8b2wgc3RhcnQ9IjEiIHR5cGU9 IjEiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47IG1hcmdpbi10b3A6IDBpbjsiIGNsYXNzPSIi Pg0KPGxpIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAu MDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlm OyI+DQpZb3UgU0hBTEwgbmVnYXRpdmVseSBkaXNhZ2dyZWdhdGUgb25seSBpZiB5b3XigJlyZSBU b0YgYW5kIGhhdmUgaG9yaXpvbnRhbCBsaW5rcyAocmluZyk8bzpwIGNsYXNzPSIiPjwvbzpwPjwv bGk+PGxpIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAu MDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlm OyI+DQpZb3UgU0hBTEwgcHJvcGFnYXRlIHRyYW5zaXRpdmVseSBuZWdhdGl2ZSBkaXNhZ2dyZWdh dGlvbjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9saT48bGkgY2xhc3M9Ik1zb0xpc3RQYXJhZ3JhcGgi IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1m YW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7Ij4NCllvdSBTSEFMTCB1c2UgcG9zaXRpdmUgaWYg eW914oCZcmUgbm90IFRvRiBvciBoYXZlIG5vIGhvcml6b250YWw8bzpwIGNsYXNzPSIiPjwvbzpw PjwvbGk+PC9vbD4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1z aXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0K PG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGlu IDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fu cy1zZXJpZjsiIGNsYXNzPSIiPg0KT2YgY291cnNlLCBhbnkgdmVuZG9yLCBldmVuIG9wZW4gc291 cmNlZCBvbmUgY2FuIGFkZCBhbnkgZmxhdm9yIG9mIGtub2JzIHRoYXQgbWFrZXMgdGhlaXIgZGlz aCB1bmlxdWUgZXZlbiBpZiBpdCBicmVha3MgdGhlIHNwZWMgc3RyaWN0bHkgc3BlYWtpbmcg4oCm IFNvIGRpZCBJPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFu PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7QXBwbGUgQ29sb3IgRW1vamkmcXVvdDs7 IiBjbGFzcz0iIj7wn5iJPC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8ZGl2IHN0 eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1p bHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7 PC9vOnA+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N Ci0tLSB0b255PHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFu PjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8ZGl2IHN0 eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIG5vbmUgbm9uZTsgYm9yZGVyLXRvcC13aWR0aDogMXB0 OyBib3JkZXItdG9wLWNvbG9yOiByZ2IoMTgxLCAxOTYsIDIyMyk7IHBhZGRpbmc6IDNwdCAwaW4g MGluOyIgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCjxiIGNsYXNzPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iIj5G cm9tOjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48L3Nw YW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iIj5Ub255IFByenln aWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzp0b255c2lldGZAZ21haWwuY29tIiBzdHlsZT0iY29s b3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+dG9ueXNpZXRm QGdtYWlsLmNvbTwvYT4mZ3Q7PGJyIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+RGF0ZTo8c3BhbiBj bGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PC9iPlRodXJzZGF5LCBN YXkgMTQsIDIwMjAgYXQgMTE6MTIgQU08YnIgY2xhc3M9IiI+DQo8YiBjbGFzcz0iIj5Ubzo8c3Bh biBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PC9iPkJydW5vIFJp anNtYW4gJmx0OzxhIGhyZWY9Im1haWx0bzpicnVub3JpanNtYW5AaG90bWFpbC5jb20iIHN0eWxl PSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5icnVu b3JpanNtYW5AaG90bWFpbC5jb208L2E+Jmd0OzxiciBjbGFzcz0iIj4NCjxiIGNsYXNzPSIiPkNj OjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48L2I+JnF1 b3Q7UGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnB0 aHViZXJ0QGNpc2NvLmNvbSIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVu ZGVybGluZTsiIGNsYXNzPSIiPnB0aHViZXJ0QGNpc2NvLmNvbTwvYT4mZ3Q7LCAmcXVvdDs8YSBo cmVmPSJtYWlsdG86cmlmdEBpZXRmLm9yZyIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29y YXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnJpZnRAaWV0Zi5vcmc8L2E+JnF1b3Q7DQogJmx0 OzxhIGhyZWY9Im1haWx0bzpyaWZ0QGlldGYub3JnIiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQt ZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+cmlmdEBpZXRmLm9yZzwvYT4mZ3Q7LCBN ZWxjaGlvciBBZWxtYW5zICZsdDs8YSBocmVmPSJtYWlsdG86bWFlbG1hbnNAanVuaXBlci5uZXQi IHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0i Ij5tYWVsbWFuc0BqdW5pcGVyLm5ldDwvYT4mZ3Q7LCBDaHJpc3RpYW4NCiBHcmFmICZsdDs8YSBo cmVmPSJtYWlsdG86Y2dyYWZAanVuaXBlci5uZXQiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1k ZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5jZ3JhZkBqdW5pcGVyLm5ldDwvYT4mZ3Q7 LCBPbGl2ZXIgU3RldWRsZXIgJmx0OzxhIGhyZWY9Im1haWx0bzpvc3RldWRsZXJAanVuaXBlci5u ZXQiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFz cz0iIj5vc3RldWRsZXJAanVuaXBlci5uZXQ8L2E+Jmd0OywNCiBPbGl2aWVyIFZhbmRlemFuZGUg Jmx0OzxhIGhyZWY9Im1haWx0bzpvdmFuZGV6YW5kZUBqdW5pcGVyLm5ldCIgc3R5bGU9ImNvbG9y OiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPm92YW5kZXphbmRl QGp1bmlwZXIubmV0PC9hPiZndDssIEFudG9uaSBQcnp5Z2llbmRhICZsdDs8YSBocmVmPSJtYWls dG86cHJ6QGp1bmlwZXIubmV0IiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjog dW5kZXJsaW5lOyIgY2xhc3M9IiI+cHJ6QGp1bmlwZXIubmV0PC9hPiZndDssDQogJnF1b3Q7PGEg aHJlZj0ibWFpbHRvOnRvbW1hc29jYWlhenppQGdtYWlsLmNvbSIgc3R5bGU9ImNvbG9yOiBibHVl OyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnRvbW1hc29jYWlhenppQGdt YWlsLmNvbTwvYT4mcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzp0b21tYXNvY2FpYXp6aUBnbWFp bC5jb20iIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBj bGFzcz0iIj50b21tYXNvY2FpYXp6aUBnbWFpbC5jb208L2E+Jmd0OywNCiBKZWZmIFRhbnRzdXJh ICZsdDs8YSBocmVmPSJtYWlsdG86amVmZnRhbnQuaWV0ZkBnbWFpbC5jb20iIHN0eWxlPSJjb2xv cjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5qZWZmdGFudC5p ZXRmQGdtYWlsLmNvbTwvYT4mZ3Q7LCBaaGFvaHVpIFpoYW5nICZsdDs8YSBocmVmPSJtYWlsdG86 enpoYW5nQGp1bmlwZXIubmV0IiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjog dW5kZXJsaW5lOyIgY2xhc3M9IiI+enpoYW5nQGp1bmlwZXIubmV0PC9hPiZndDssDQogWmhhb2h1 aSBaaGFuZyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnp6aGFuZ0BqdW5pcGVyLm5ldCIgc3R5bGU9ImNv bG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPnp6aGFuZ0Bq dW5pcGVyLm5ldDwvYT4mZ3Q7LCBKZWZmcmV5IFpoYW5nICZsdDs8YSBocmVmPSJtYWlsdG86enpo YW5nMjAwM0BnbWFpbC5jb20iIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiB1 bmRlcmxpbmU7IiBjbGFzcz0iIj56emhhbmcyMDAzQGdtYWlsLmNvbTwvYT4mZ3Q7PGJyIGNsYXNz PSIiPg0KPGIgY2xhc3M9IiI+U3ViamVjdDo8c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNw YWNlIj4mbmJzcDs8L3NwYW4+PC9iPlJlOiBOZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBmZWF0dXJl IGd1aWRlPG86cCBjbGFzcz0iIj48L286cD48L3NwYW4+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xh c3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTog MTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxvOnAg Y2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjog MGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwg c2Fucy1zZXJpZjsgbGluZS1oZWlnaHQ6IDEycHQ7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUs IDIzNSwgMTU2KTsiIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTAuNXB0OyBmb250LWZhbWlseTogTGF0bywgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPltFeHRl cm5hbCBFbWFpbC4gQmUgY2F1dGlvdXMgb2YgY29udGVudF08bzpwIGNsYXNzPSIiPjwvbzpwPjwv c3Bhbj48L2I+PC9kaXY+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRp diBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCiZuYnNwO215IHRob3VnaHRzOjxzcGFuIGNsYXNzPSJBcHBsZS1jb252 ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNs YXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpuZWdh dGl2ZSBpcyBzZXJpb3VzbHkgbW9yZSBjb21wbGV4IHRvJm5ic3A7IGltcGxlbWVudCBhbmQgdW5k ZXJzdGFuZCBvcGVyYXRpb25hbGx5IGFuZCBvbmx5IG5lZWRlZCBvbiBtdWx0aS1wbGFuZSBmYWJy aWNzLCB0YWh0J3Mgd2h5IHBvc2l0aXZlIGlzIEtJU1MgOy0pIEFsc28sIG5lZ2F0aXZlIGFsd2F5 cyBmb3JjZXMgeW91IHRvIHJpbmcgdGhlIHRvcCBvZiB0aGUgZmFicmljIHdoaWNoIGluIHNpbmds ZSBwbGFuZSBkZXNpZ24gaXMgYW4gdW5uZWNlc3NhcnkNCiByZXF1aXJlbWVudC4mbmJzcDs8c3Bh biBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PG86cCBjbGFzcz0i Ij48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L2Rp dj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KSSBmb3Jlc2VlIHZlbmRvcnMgbm90IGltcGxlbWVudGluZyBuZWdhdGl2 ZSBmb3Igc2ltcGxpY2l0eSwgdmVyeSBzbWFsbCBmb290cHJpbnQgZmFicmljcy48bzpwIGNsYXNz PSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFy Z2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxp YnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwv ZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGlu IDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNl cmlmOyIgY2xhc3M9IiI+DQp0aGUgZGlzY3Vzc2lvbiBhYm91dCBjYXBhYmlsaXR5IGFkdmVydGlz ZW1lbnQgaXMgaW50ZXJlc3RpbmcsIHdlIGNhbiBqdXN0IGFkZCBvbmUgYml0IG9uIHRoZSBub2Rl IGNhcGFiaWxpdGllcyBlbGVtZW50LCBtYWtlIGl0IG9wdGlvbmFsIGFuZCBkZWZhdWx0IHRydWUu PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJz cDs8L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KT2YgY291cnNlIGFuIGltcGxlbWVudGF0aW9uIHRh aHQgdW5kZXJzdGFuZHMgdGhhdCBhbGwgaW52b2x2ZWQgbm9kZXMgdW5kZXJzdGFuZCBuZWdhdGl2 ZSBpcyBmcmVlIHRvIHVzZSBuZWdhdGl2ZSBpbnN0ZWFkIG9mIHBvc2l0aXZlIHRoZW4uPG86cCBj bGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9 Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTog Q2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJzcDs8L286 cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGlu IDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fu cy1zZXJpZjsiIGNsYXNzPSIiPg0KLS0gdG9ueTxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQt c3BhY2UiPiZuYnNwOzwvc3Bhbj48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8 L2Rpdj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAx MXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBj bGFzcz0iIj4mbmJzcDs8L286cD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpPbiBUaHUsIE1h eSAxNCwgMjAyMCBhdCAxMTowNSBBTSBCcnVubyBSaWpzbWFuICZsdDs8YSBocmVmPSJtYWlsdG86 YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tIiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQtZGVjb3Jh dGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+YnJ1bm9yaWpzbWFuQGhvdG1haWwuY29tPC9hPiZn dDsgd3JvdGU6PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGJsb2NrcXVvdGUg c3R5bGU9ImJvcmRlci1zdHlsZTogbm9uZSBub25lIG5vbmUgc29saWQ7IGJvcmRlci1sZWZ0LXdp ZHRoOiAxcHQ7IGJvcmRlci1sZWZ0LWNvbG9yOiByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6 IDBpbiAwaW4gMGluIDZwdDsgbWFyZ2luLWxlZnQ6IDQuOHB0OyBtYXJnaW4tcmlnaHQ6IDBpbjsi IGNsYXNzPSIiIHR5cGU9ImNpdGUiPg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTAuNXB0 OyBmb250LWZhbWlseTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj5Ccm9hZGVuaW5nIGEgZGlzY3Vz c2lvbiBvbiBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiB0byB0aGUgUklGVCBtYWlsaW5nIGxpc3Qu PC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBz dHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFt aWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNw OzwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2lu OiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJp LCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMC41cHQ7 IGZvbnQtZmFtaWx5OiBBdmVuaXItQm9vazsiIGNsYXNzPSIiPk5vdyB0aGF0IHdlIGhhdmUgaW1w bGVtZW50ZWQgbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gaW4gUklGVC1QeXRob24sIGFuZCBub3cg dGhhdCB3ZSBhcmUgZ2V0dGluZyBzb21lIG9wZXJhdGlvbmFsIGV4cGVyaWVuY2Ugd2l0aCBpdCwg dGhlIGZvbGxvd2luZyBpcyBiZWNvbWluZyBtb3JlIGFuZCBtb3JlIGV2aWRlbnQ6PC9zcGFuPjxv OnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0 eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1p bHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7 PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46 IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmks IHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwLjVwdDsg Zm9udC1mYW1pbHk6IEF2ZW5pci1Cb29rOyIgY2xhc3M9IiI+SXQgc2VlbXMgdG8gdXMgKEJydW5v IGFuZCBQYXNjYWwsIGZvciBub3cpIHRoYXQgb25jZSBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlvbiBp cyBpbXBsZW1lbnRlZCwgdGhlcmUgaXMgcmVhbGx5IG5vIG5lZWQgZm9yIHBvc2l0aXZlIGRpc2Fn Z3JlZ2F0aW9uIGFueSBtb3JlLjwvc3Bhbj48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNs YXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMC41cHQ7IGZvbnQtZmFtaWx5OiBBdmVuaXItQm9vazsiIGNs YXNzPSIiPkV2ZXJ5IHVzZSBjYXNlIHRoYXQgY2FuIGJlIHNvbHZlZCBieSBwb3NpdGl2ZSBkaXNh Z2dyZWdhdGlvbiBjYW4gKGFzIGZhciBhcyB3ZSBjYW4gY3VycmVudGx5IHRlbGwpIGFsc28gYmUg c29sdmVkIGJ5IG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9uLjwvc3Bhbj48bzpwIGNsYXNzPSIiPjwv bzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAw aW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBz YW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0K PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIg Y2xhc3M9IiI+DQo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMC41cHQ7IGZvbnQtZmFtaWx5OiBB dmVuaXItQm9vazsiIGNsYXNzPSIiPkZ1cnRoZXJtb3JlLCBuZWdhdGl2ZSBkaXNhZ2dyZWdhdGlv biBzb2x2ZXMgdGhlIHByb2JsZW1zIGluIGEgZmFyIHNpbXBsZXIgYW5kIG1vcmUgZWxlZ2FudCB3 YXk6IHRoZXJlIGFyZSBmZXdlciBhZHZlcnRpc2luZyBub2RlcyBhbmQgZmV3ZXIgYWR2ZXJ0aXNl ZCBUSUVzIGludm9sdmVkLCBhbmQgd2UgZG9u4oCZdCBoYXZlIHRoZSBzeW5jaHJvbml6YXRpb24N CiBpc3N1ZSB0aGF0IHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIGhhcyB0aGF0IHBvdGVudGlhbGx5 IGNhdXNlcyBpbmNhc3QgcHJvYmxlbXMuPC9zcGFuPjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+ DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4w MDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7 IiBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9IiI+Jm5ic3A7PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxk aXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N CjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwLjVwdDsgZm9udC1mYW1pbHk6IEF2ZW5pci1Cb29r OyIgY2xhc3M9IiI+VGh1cywgYXQgdGhlIHZlcnkgbGVhc3QsIGl0IG1ha2VzIHNlbnNlIHRvIHJl Y29tbWVuZCB0aGF0IGluIGEgZ2l2ZW4gZmFicmljIHdlIHVzZSBlaXRoZXIgb25seSBuZWdhdGl2 ZSBkaXNhZ2dyZWdhdGlvbiBvbmx5IG9yIHBvc2l0aXZlIGRpc2FnZ3JlZ2F0aW9uIG9ubHksIHdp dGggbmVnYXRpdmUgZGlzYWdncmVnYXRpb24gYmVpbmcNCiB0aGUgZGVmYXVsdC48L3NwYW4+PG86 cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJzcDs8 L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjog MGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwg c2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTAuNXB0OyBm b250LWZhbWlseTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj5JZiBwb3NpdGl2ZSBhbmQgbmVnYXRp dmUgZGlzYWdncmVnYXRpb24gYXJlIGVuYWJsZWQmbmJzcDtzaW11bHRhbmVvdXNseSBpbiBvbmUg YW5kIHRoZSBzYW1lIGZhYnJpYywgZXZlcnl0aGluZyBzdGlsbCB3b3JrcyBmaW5lIGFzIGZhciBh cyB3ZSBjYW4gc2VlLiBCdXQgdGhlcmUgYXJlIHNvbWUmbmJzcDvigJxpbnRlcmVzdGluZ+KAnSBp bnRlcmFjdGlvbnMNCiB0aGF0IG1ha2UgdGhpbmdzJm5ic3A7dW5uZWNlc3NhcmlseSBjb21wbGV4 IGFuZCBwb3RlbnRpYWxseSBmcmFnaWxlLiZuYnNwOzwvc3Bhbj48bzpwIGNsYXNzPSIiPjwvbzpw PjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4g MGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5z LXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZuYnNwOzwvbzpwPjwvZGl2Pg0KPC9k aXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0 OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xh c3M9IiI+DQo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMC41cHQ7IGZvbnQtZmFtaWx5OiBBdmVu aXItQm9vazsiIGNsYXNzPSIiPklmIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGRpc2FnZ3JlZ2F0aW9u IGlzIG1hbmRhdG9yeSwgYW5kIGlmIG91ciBhc3Nlc3NtZW50IHRoYXQgbmVnYXRpdmUgZGlzYWdn cmVnYXRpb24gY2FuIHNvbHZlIGFsbCB1c2UgY2FzZXMgaXMgY29ycmVjdCwgdGhlbiB3ZSBjb3Vs ZCBnbyBvbmUgYm9sZCBzdGVwIGZ1cnRoZXIgYW5kIGNvbXBsZXRlbHkNCiByZW1vdmUgcG9zaXRp dmUgZGlzYWdncmVnYXRpb24gZnJvbSB0aGUgc3BlY2lmaWNhdGlvbi48L3NwYW4+PG86cCBjbGFz cz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48 L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBp biAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1z ZXJpZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTAuNXB0OyBmb250LWZh bWlseTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj5UaG91Z2h0cz88L3NwYW4+PG86cCBjbGFzcz0i Ij48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KPG86cCBjbGFzcz0iIj4mbmJzcDs8L286cD48L2Rp dj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAw LjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJp ZjsiIGNsYXNzPSIiPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTAuNXB0OyBmb250LWZhbWls eTogQXZlbmlyLUJvb2s7IiBjbGFzcz0iIj7igJQgQnJ1bm88L3NwYW4+PG86cCBjbGFzcz0iIj48 L286cD48L2Rpdj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4g MC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2Vy aWY7IiBjbGFzcz0iIj4NCjxiciBjbGFzcz0iIj4NCjxiciBjbGFzcz0iIj4NCjxvOnAgY2xhc3M9 IiI+PC9vOnA+PC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luLXRvcDogNXB0OyBtYXJn aW4tYm90dG9tOiA1cHQ7IiBjbGFzcz0iIiB0eXBlPSJjaXRlIj4NCjxkaXYgY2xhc3M9IiI+DQo8 ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsgZm9u dC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCk9uIE1heSAxNCwgMjAy MCwgYXQgMTA6NDggQU0sIFBhc2NhbCBUaHViZXJ0IChwdGh1YmVydCkgJmx0OzxhIGhyZWY9Im1h aWx0bzpwdGh1YmVydEBjaXNjby5jb20iIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6IGJs dWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+cHRodWJlcnRAY2lzY28u Y29tPC9hPiZndDsgd3JvdGU6PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRp diBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8bzpwIGNsYXNzPSIiPiZu YnNwOzwvbzpwPjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgY2xhc3M9IiI+DQo8ZGl2IGNs YXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6 IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpIZWxs byBCcnVubzo8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpw IGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpJIGxpa2UgeW91ciBuZWdhdGl2ZS1v bmx5IGRlZmF1bHQgYmVjYXVzZSBpdCBpcyBwcm9iYWJseSB0aGUgc2FmZXN0LiBMZXQgbWUgZWxh Ym9yYXRlLi48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIi Pg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7 IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpw IGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpwYXJ0aXRpb25pbmcgc2F2ZXMgYSBs b3QgbW9yZSBwb3J0cyBwZXIgVG9GIG5vZGUgdGhhbiB0aGUgcmluZyBjb3N0IHNvIGl0IGRvZXMg bm90IG1hdHRlci48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNz PSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEx cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8 bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBz dHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFt aWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpJZiB5b3UgZW5hYmxlIG5lZ2F0 aXZlLCB0aGVyZeKAmXMgbm8gcG9pbnQgaW4gZG9pbmcgYW55IHBvc2l0aXZlIGF0IGFsbCwgaXMg dGhlcmU/IFNvIHdoYXQgZG8gd2UgdHJ5IHRvIHNhdmUgYnkgY29tYmluaW5nPyBJbiB5b3VyIGV4 YW1wbGUsIEkgZ3Vlc3MgdGhhdCBzdXBlciAxIDIgaGFkIHRvIHJldHJhY3QgdGhlIHBvc2l0aXZl IGRpc2FnIGFuZCB0aGVuIGRvIG5lZ2F0aXZlIGluc3RlYWQgd2hlbiB0aGUgbGluayB0byBzcGlu ZSAxIDEgZmVsbC4NCiBXYXMgdGhhdCBub3QgYSBiaXQgY29tcGxleCBhbmQgZXJyb3IgcHJvbmU/ PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYg c3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZh bWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0i Ij48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdp bjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJy aSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KQWxzbyBJ4oCZbSBub3QgY2xlYXIgaG93IHdlIGNh biBhbHdheXMgZGVjaWRlIHRoYXQgZHluYW1pY2FsbHkgYW5kIEkgZG8gbm90IGJlbGlldmUgdGhh dCB3ZSBzcGVjaWZpZWQgdGhhdC4gU28gSSB1bmRlcnN0YW5kIHRoYXQgaXTigJlzIG1vcmUgbGlr ZSBhIHVzZSBjYXNlIHRoaW5neSwgbGlrZSBhIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCBiZSBh ZGFwdGVkIHRvIHRoZSB1c2UgY2FzZS48bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBm b250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9 IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNz PSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDEx cHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo9Jmd0OyBk byBub3QgY29uZmlndXJlIGJvdGggYXQgdGhlIHNhbWUgdGltZSB1c2UgZWl0aGVyIHBvc2l0aXZl IG9yIG5lZ2F0aXZlIGRpc2FnLjxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxk aXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQt c2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4N CiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9IiI+ DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFwdDsg Zm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCldlIGRvIG5vdCB0 cnkgdG8gZG8gcG9zaXRpdmUgZGlzYWcgdHJhbnNpdGl2ZWx5LiBTbyBpZiB0aGVyZSBpcyBhIG5l ZWQgZm9yIHRyYW5zaXRpdmUsIHlvdSBoYXZlIHRvIHVzZSBuZWdhdGl2ZS4mbmJzcDsgSW4gYSBt dWx0aXBsYW5lIGNhc2UsIHRoZXJl4oCZcyB1c3VhbGx5IChhcyBpbiB5b3VyIHBpY3R1cmUpIG9u ZSBUb1AgcGVyIHBsYW5lIGluIGVhY2ggUG9ELCBhbmQgYSBmaXJzdCBsaW5rIGZhaWx1cmUgKHNh eSBTcGluZSAxIDEgdG8gbGVhZiAxIDEpDQogY2FuIGFscmVhZHkgY2F1c2UgYSBmYWxsZW4gbGVh ZjogbGVhZiAxIDEgaXMgbm8gbW9yZSByZWFjaGFibGUgd2l0aGluIHBsYW5lIDEuIFRoaXMgdGVs bHMgeW91IHRoYXQgYWxsIGxlYXZlcyBpbiB0aGUgb3RoZXIgUG9EcyBtdXN0IGF2b2lkIHRoYXQg cGxhbmUsIGFuZCB0aGF04oCZcyBhIGxlYWYgZGVjaXNpb247IHdoaWNoIHRlbGxzIHlvdSB0aGF0 IHlvdSBuZWVkIHRvIHJlY3Vyc2UgdHJhbnNpdGl2ZWx5IGRvd24uIFRoaXMgaW5kaWNhdGVzIHRo YXQNCiBuZWdhdGl2ZSBtdXN0IGJlIGFjdGl2YXRlZCBpbiBhIGhpZ2hseSBwYXJ0aXRpb25lZCAo bWVhbmluZyBsb3cgcmVkdW5kYW5jeSkgbXVsdGlwbGFuZS48bzpwIGNsYXNzPSIiPjwvbzpwPjwv ZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGlu IDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNl cmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+ DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBm b250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9 IiI+DQpTYXkgd2UgdHJ5IHRvIHVzZSBwb3NpdGl2ZSBkaXNhZ2dyZWdhdGlvbiB0cmFuc2l0aXZl bHkgaW4gYSBUb0YgdGhhdCBpcyBwYXJ0aXRpb25lZCBsaWtlIGluIHBsYW5lcywgeW914oCZZCBy dW4gYSByaXNrIHRoYXQgbm9uZSBvZiB0aGUgVG9GIG5vZGVzIHRoYXQgY2FuIHN0aWxsIHJlYWNo IHRoZSBsZWFmIGNhbiBzZWUgKHRocm91Z2ggc291dGggcmVmbGVjdGlvbikgdGhlIFRvRiBub2Rl IHRoYXQgY2Fubm90IHNvIHRoZXkgZG8gbm90IGtub3cgdGhleQ0KIG5lZWQgdG8gZGlzYWcuIFNv IHlvdSBlbmQgdXAgbmVlZGluZyB0aGUgc2FtZSByaW5nIGFzIGZvciBuZWdhdGl2ZSwgdGhlIHNv dXRoZXJuIHJlZmxlY3Rpb24gYmVjb21lIG1vc3RseSB1c2VsZXNzIGFuZCB0aGUgYmVuZWZpdHMg b2YgcG9zaXRpdmUgYXJlIGdvbmUuPG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0K PGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9u dC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIi Pg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0i Ij4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0 OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KUGFydGl0aW9u bmVkIFRvRiA9Jmd0OyBuZWdhdGl2ZTxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4N CjxkaXYgY2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZv bnQtc2l6ZTogMTFwdDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0i Ij4NCiZuYnNwOzxvOnAgY2xhc3M9IiI+PC9vOnA+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9 IiI+DQo8ZGl2IHN0eWxlPSJtYXJnaW46IDBpbiAwaW4gMC4wMDAxcHQ7IGZvbnQtc2l6ZTogMTFw dDsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IiBjbGFzcz0iIj4NCkkgdHJ1c3Qg dGhhdCB3ZSBjYW4gdXNlIHBvc2l0aXZlIGluIGEgaGlnaGx5IHJlZHVuZGFudCBhbmQgc3ltbWV0 cmljYWwgbm9uLXBhcnRpdGlvbmVkIFRvRi4gSWYgbm8gb25lIGNhbiByZWFjaCB0aGUgbGVhZiBh bnltb3JlIChsaWtlIGl04oCZcyBkZWFkKSB3ZSBoYXZlIG5vIGlzc3VlIHNpbmNlIGl0IHNob3Vs ZCBub3QgYmUgZGlzYWdncmVnYXRlZCwganVzdCB1c2UgdGhlIGRpc2NhcmRzIHJvdXRlIGF0IGFu eSBUb0Ygbm9kZS4gSWYgeW91IGhhdmUNCiBlbm91Z2ggcmVkdW5kYW5jeSBhbmQgbm8gcGFydGl0 aW9uLCAmbmJzcDt0aGVyZSB3aWxsIGFsd2F5cyBiZSBub2RlcyB0aGF0IGNhbiBib3RoIHJlYWNo IGEgbGVhZiBhbmQgZGlzY292ZXIgdGhhdCBhIHBlZXIgZG9lcyBub3QuJm5ic3A7PG86cCBjbGFz cz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1h cmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2Fs aWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86cCBjbGFzcz0iIj48L286cD48 L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBp biAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1z ZXJpZjsiIGNsYXNzPSIiPg0KPSZndDsgUG9zaXRpdmUgaXMgaW5kaWNhdGVkIGZvciBhIHZlcnkg c3BlY2lmaWMgdXNlIGNhc2UsIGlkZWFsbHkgMiBsZXZlbHMgYW5kIGZ1bGx5IG1lc2hlZC4gTWF5 YmUgdGhhdOKAmXMgZW5vdWdoIGRlcGxveW1lbnRzIHRvIGp1c3RpZnkgdGhlIGZlYXR1cmUgaW4g dGhlIGNvZGUuPG86cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0i Ij4NCjxkaXYgc3R5bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0 OyBmb250LWZhbWlseTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KJm5ic3A7PG86 cCBjbGFzcz0iIj48L286cD48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iIj4NCjxkaXYgc3R5 bGU9Im1hcmdpbjogMGluIDBpbiAwLjAwMDFwdDsgZm9udC1zaXplOiAxMXB0OyBmb250LWZhbWls eTogQ2FsaWJyaSwgc2Fucy1zZXJpZjsiIGNsYXNzPSIiPg0KU28gdGhlIHF1ZXN0aW9uIGlzIHJl YWxseSB0aGF0IGJsdXJyeSB6b25lIGJldHdlZW4gaGlnaGx5IHJlZHVuZGFudCBzaW5nbGUgcGxh bmUgYW5kIGhpZ2hseSBwYXJ0aXRpb25lZCBtdWx0aXBsYW5lIHdoYXQgc2hvdWxkIG9uZSBkbz8g SSBiZWNvbWVzIGEgcmlzay9iZW5lZml0IGp1ZGdlbWVudOKApiBJZiBuZWdhdGl2ZSBpcyBpbXBs ZW1lbnRlZCBhbmQgdGhlIHJpbmcgaXMgdGhlcmUsIEnigJlkIHVzZSBpdCwgYmV0dGVyIHNhZmUg dGhhbiBzb3JyeS4mbmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2 IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNp emU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQom bmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0K PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZv bnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpUYWtlIGNhcmU8bzpw IGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHls ZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwv bzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAw aW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBz YW5zLXNlcmlmOyIgY2xhc3M9IiI+DQpQYXNjYWw8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0K PC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAw MXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIg Y2xhc3M9IiI+DQombmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2 IGNsYXNzPSIiPg0KPGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNp emU6IDExcHQ7IGZvbnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQom bmJzcDs8bzpwIGNsYXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSIiPg0K PGRpdiBzdHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZv bnQtZmFtaWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQombmJzcDs8bzpwIGNs YXNzPSIiPjwvbzpwPjwvZGl2Pg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXItc3R5bGU6IG5v bmUgbm9uZSBub25lIHNvbGlkOyBib3JkZXItbGVmdC13aWR0aDogMS41cHQ7IGJvcmRlci1sZWZ0 LWNvbG9yOiBibHVlOyBwYWRkaW5nOiAwaW4gMGluIDBpbiA0cHQ7IiBjbGFzcz0iIj4NCjxkaXYg Y2xhc3M9IiI+DQo8ZGl2IHN0eWxlPSJib3JkZXItc3R5bGU6IHNvbGlkIG5vbmUgbm9uZTsgYm9y ZGVyLXRvcC13aWR0aDogMXB0OyBib3JkZXItdG9wLWNvbG9yOiByZ2IoMjI1LCAyMjUsIDIyNSk7 IHBhZGRpbmc6IDNwdCAwaW4gMGluOyIgY2xhc3M9IiI+DQo8ZGl2IGNsYXNzPSIiPg0KPGRpdiBz dHlsZT0ibWFyZ2luOiAwaW4gMGluIDAuMDAwMXB0OyBmb250LXNpemU6IDExcHQ7IGZvbnQtZmFt aWx5OiBDYWxpYnJpLCBzYW5zLXNlcmlmOyIgY2xhc3M9IiI+DQo8YiBjbGFzcz0iIj5Gcm9tOjwv Yj4mbmJzcDtCcnVubyBSaWpzbWFuICZsdDs8YSBocmVmPSJtYWlsdG86YnJ1bm9yaWpzbWFuQGhv dG1haWwuY29tIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29y YXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIiPmJydW5vcmlqc21hbkBob3RtYWlsLmNvbTwvYT4m Z3Q7Jm5ic3A7PGJyIGNsYXNzPSIiPg0KPGIgY2xhc3M9IiI+U2VudDo8L2I+Jm5ic3A7amV1ZGkg MTQgbWFpIDIwMjAgMTc6MzY8YnIgY2xhc3M9IiI+DQo8YiBjbGFzcz0iIj5Ubzo8L2I+Jm5ic3A7 UGFzY2FsIFRodWJlcnQgKHB0aHViZXJ0KSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnB0aHViZXJ0QGNp c2NvLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0 aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5wdGh1YmVydEBjaXNjby5jb208L2E+Jmd0OzxiciBj bGFzcz0iIj4NCjxiIGNsYXNzPSIiPkNjOjwvYj4mbmJzcDtNZWxjaGlvciBBZWxtYW5zICZsdDs8 YSBocmVmPSJtYWlsdG86bWFlbG1hbnNAanVuaXBlci5uZXQiIHRhcmdldD0iX2JsYW5rIiBzdHls ZT0iY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+bWFl bG1hbnNAanVuaXBlci5uZXQ8L2E+Jmd0OzsgQ2hyaXN0aWFuIEdyYWYgJmx0OzxhIGhyZWY9Im1h aWx0bzpjZ3JhZkBqdW5pcGVyLm5ldCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogYmx1 ZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5jZ3JhZkBqdW5pcGVyLm5l dDwvYT4mZ3Q7Ow0KIE9saXZlciBTdGV1ZGxlciAmbHQ7PGEgaHJlZj0ibWFpbHRvOm9zdGV1ZGxl ckBqdW5pcGVyLm5ldCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1k ZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5vc3RldWRsZXJAanVuaXBlci5uZXQ8L2E+ Jmd0OzsgT2xpdmllciBWYW5kZXphbmRlICZsdDs8YSBocmVmPSJtYWlsdG86b3ZhbmRlemFuZGVA anVuaXBlci5uZXQiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6IGJsdWU7IHRleHQtZGVj b3JhdGlvbjogdW5kZXJsaW5lOyIgY2xhc3M9IiI+b3ZhbmRlemFuZGVAanVuaXBlci5uZXQ8L2E+ Jmd0OzsNCiBUb255IFByenlnaWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzp0b255c2lldGZAZ21h aWwuY29tIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRp b246IHVuZGVybGluZTsiIGNsYXNzPSIiPnRvbnlzaWV0ZkBnbWFpbC5jb208L2E+Jmd0OzsgQW50 b25pIFByenlnaWVuZGEgJmx0OzxhIGhyZWY9Im1haWx0bzpwcno9NDBqdW5pcGVyLm5ldEBkbWFy Yy5pZXRmLm9yZyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogYmx1ZTsgdGV4dC1kZWNv cmF0aW9uOiB1bmRlcmxpbmU7IiBjbGFzcz0iIj5wcno9NDBqdW5pcGVyLm5ldEBkbWFyYy5pZXRm Lm9yZzwvYT4mZ3Q7OzxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwv c3Bhbj48YSBocmVmPSJtYWlsdG86dG9tbWFzb2NhaWF6emlAZ21haWwuY29tIiB0YXJnZXQ9Il9i bGFuayIgc3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNs YXNzPSIiPnRvbW1hc29jYWlhenppQGdtYWlsLmNvbTwvYT47DQogSmVmZiBUYW50c3VyYSAmbHQ7 PGEgaHJlZj0ibWFpbHRvOmplZmZ0YW50LmlldGZAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayIg c3R5bGU9ImNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiIGNsYXNzPSIi PmplZmZ0YW50LmlldGZAZ21haWwuY29tPC9hPiZndDs7IEplZmZyZXkgKFpoYW9odWkpIFpoYW5n ICZsdDs8Y
On Sat,= May 16, 2020 at 3:51 PM Bruno Rijsman <brunorijsman@gmail.com> wrote:
= Hi Mariano and Tomasso,


I have made two b= ig changes to the way messages are queued in RIFT-Python.=C2=A0
<= br>
This code has been committed to the master branch.
=
So it is ready for you to test, just in time for the paper d= eadline. Although it is a bit risky to introduce such a large change with n= ot much time to fully =E2=80=9Csoak it in=E2=80=9D before the paper deadlin= e. Also, starting Monday morning I will be unreachable for a few days.=C2= =A0 I leave it up to you to decide whether or not you want to use this new = code for the paper.


Big change #1

In the old code, the TIES_TX, TIES_ACK, and TIES_RE= Q queue were all serviced only once per second, no matter what. The TIES_RT= X queue didn=E2=80=99t really do anything.

TIDEs w= ere sent once per 2 seconds (that did not change).

In the new code, there are two queue for TIEs, TIE ACKs, and TIE REQs:

(a) A fast tx_queue for the initial transmission afte= r the item is enqueued. It is serviced every 50ms. (With an optimization to= make sure we don=E2=80=99t run such a fast timer unless it is really neede= d - i.e. unless there is at least one entry in some fast queue.)
=
(b) A slow rtf_queue for subsequent retransmission if needed= . It is serviced every 1000ms.

See the new file ms= g_queues.py for details.


Big change= #2

In the old code, if a node regenerated a local= TIE for any reason, it was not immediately reflooded.

=
Instead we would have to wait up to 2 seconds for the regenerated TIE = to be advertised in a TIDE, and then up to 1 second for the other side to r= equest it, and the up to another 1 second for this node to react to the req= uest.

I changed that: if a local TIE is regenerate= d for any reason, the TIE itself is immediately put on the fast TIE tx_queu= e, so it will be sent after 50ms.


T= hese two changes combined make most of the problems that you saw go away.

You used see that a node would send a TIE, and then= a second later the exact same=C2=A0version of that TIE (same tie-nr= , same seq-nr).

This was because the TIRE was not = sent fast enough to ack the TIE.

That behavior sho= uld go away =E2=80=94 the TIRE is now sent much faster.

In general, convergence should be much faster.


You may see some other behavior that you did not see befo= re.

If you kill a node in the topology, you may se= e some =E2=80=9Cadditional intermediate states=E2=80=9D because reconvergen= ce is so much faster.

Consider for example, that n= ode X is killed, and node X had adjacencies with Y1, Y2, Y3, Y4, =E2=80=A6.= , Yn

Each of those neighbor nodes Y1, Y2, =E2=80= =A6., Yn will lose their adjacency with X, and reflood their local node TIE= .

Now, consider that Y1, Y2, =E2=80=A6., Yn are al= so all adjacent to node Z (this is quite common in Clos topologies).
<= div>
So, Z is going to receive updated node TIEs from Y1, Y2,= Y3, =E2=80=A6., Yn.

And (this is the important pa= rt), Z may ALSO receive pos-disagg-prefix and neg-disagg-prefix TIEs from Y= 1, Y2, =E2=80=A6., Yn.

Z receives these multiple p= os-disagg-prefix and neg-disagg-prefix messages asynchronously.
<= br>
That may cause Z to =E2=80=9Cchange it mind=E2=80=9D a few ti= mes about whether and what it should disaggregate itself, and that may caus= e Z to originate multiple different versions (i.e. sequence numbers) of its= own pos-disagg-prefix or neg-disagg-prefix message in quick succession.

This will also have the effect to sending more messa= ges than you might expect, but this is really different from the behavior y= ou were seeing before.

Before you were seeing the = identical TIE (same seq-nr) being sent multiple times.=C2=A0 I would consid= er that to be real bug.

Now you might see multiple= versions of the same TIE (same tie-nr, different seq-nr) being sent multip= le times.=C2=A0 I don=E2=80=99t consider that to be a bug.=C2=A0 Not a bug = in the code at least.=C2=A0 It is just a consequence of the RIFT protocol r= eacting quickly to multiple adjacencies going down in quick succession afte= r a node failure.


I have a gut feel= ing that this =E2=80=9Chunting=E2=80=9D behavior will be less if we do nega= tive disaggregation everywhere (and no positive disaggregation).
=
I am adding a =E2=80=9Cdisaggregation: negative-only=E2=80= =9D configuration knob to test that hypothesis.

Do= n=E2=80=99t try it out yet, the code for this new knob is not finished yet.= =C2=A0

I will update you when it is.

=E2=80=94 Bruno








On May 15, 2020, at 10:43 AM, Mariano = Scazzariello <mscazzariello@os.uniroma3.it> wrote:

=20

Hi Bruno,
any news with the duplicated packets issue?

We just want to know that since 19th of May is the abstract submission deadline, so we should know if we can match it in time. Our "internal deadline" is Sunday 17th of May.

Thanks,
Mariano and Tommaso.

Il 12/05/2020 13:14, Mariano Scazzariello ha scritto:

Hi Bruno,
sorry for the spamming :D.

Today me and Tommy further investigated on the problem that I reported yesterday.
It seems that it is caused by TIEs sent multiple times by the same node.
We are not sure, we'll keep investigating, however we would lik= e to have a feedback from you.

EXAMPLE OF MULTIPLE NEG DISAGG TIES
This example highlights what we saw yesterday during the call.
The first two packets are correct, since the ToFs send them to spine_2_1_1.=C2=A0 However after some time, the same ToFs resend the same neg disagg TIEs, in fact the comparison is 0 (in red).

Sender=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Receiver=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0 Originator=C2=A0=C2=A0 =C2=A0 TIE Type =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0 In DB? If so, comparison result.=
tof_1_2_1:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 spine_2_1_1 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 121 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Neg-Dis-Prefix=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 No tof_1_2_2:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 spine_2_1_1 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Neg-Dis-Prefix=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0 No
....
tof_1_2_1:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 spine_2_1_1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 121 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0 Neg-Dis-Prefix =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Yes, comp= arison is 0
tof_1_2_2:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 spine_2_1_1 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Neg-Dis-Prefix =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Yes, compariso= n is 0

...
tof_1_2_2:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 spine_2_1_1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0 Neg-Dis-Prefix =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Yes, comp= arison is 0


EXAMPLE OF MULTIPLE NODE TIES
Here we can see that the ToFs send to spine_2_1_1 a new node TIE that is stored and reflected correctly (in green). Strange TIEs are highlighted in red.

Sender=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 = =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0 Receiver=C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Originator=C2=A0=C2=A0=C2=A0=C2=A0 TIE Type =C2=A0=C2=A0 =C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 In DB? If s= o, comparison result.
tof_1_2_1:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 spine_2_1_1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 121 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 Yes, comparison is -1
tof_1_2_2:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 spine_2_1_1 = =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0 = =C2=A0=C2=A0 =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ye= s, comparison is -1
spine_2_1_1:if2 =C2=A0=C2=A0=C2=A0 tof_1_2_1 =C2=A0=C2=A0=C2=A0 = =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ye= s, comparison is -1=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0 <- CORRECT REFLECTION
spine_2_1_1:if3 =C2=A0=C2=A0=C2=A0 tof_1_2_2 =C2=A0=C2=A0=C2=A0 = =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 121=C2=A0=C2=A0 = =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2= =A0 Yes, comparison is -1=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0 <- CORRECT REFLECTION
...
tof_1_2_1:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 spine_2_1_1 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 121 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ye= s, comparison is -1=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0 <- Spine receives Node TIE from tof_1_2_1 different from the one stored in the DB, should reflect to tof_1_2_2
tof_1_2_2:if1=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0 spine_2_1_1 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ye= s, comparison is -1=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0 <- Spine receives Node TIE from tof_1_2_2 different from the one stored in the DB, should reflect to tof_1_2_1
spine_2_1_1:if2 =C2=A0=C2=A0=C2=A0 tof_1_2_= 1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 Yes, comparison is 0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 <- Refle= ction of tof_1_2_2 TIE to tof_1_2_1. Why comparison is 0 on ToF, if it is -1 on spine (it reflects wrong TIE?)?
spine_2_1_1:if3 =C2=A0=C2=A0=C2=A0 tof_1_2_= 2 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 121 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 Yes, comparison is 0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 <- Reflection of tof_1_2_1 TIE to tof_1_2_2. Why comparison is 0 on ToF, if it is -1 on spine
(it reflects wrong TIE?)?
...
tof_1_2_1:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 spine_2_1_1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 121 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 Yes, comparison is 0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 <- tof_1= _2_1 resends to spine_2_1_1 its own node TIE
tof_1_2_2:if1 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 spine_2_1_1 = =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 122 =C2=A0=C2=A0= =C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Node =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2= =A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ye= s, comparison is 0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0
<- tof_1_2_2 resends to spine_2_1_1 its own node TIE

Hope this is= useful to hunt the problem!
Mariano and Tommaso.

Il 12/05/2020 00:55, Mariano Scazzariello ha scritto:

Another little update, the last for toda= y since it's 1AM :D

The final scenario is:
tof_1_2_2 sends its node TIE to its southbound adjacencies (spine_2_1_1/spine_3_1_1/spine_4_1_1). Each spine reflects it to tof_1_2_1.
tof_1_2_1 resends this TIE to spine_2_1_1/spine_3_1_1/spine_4_1_1. Spines bounce it back to tof_1_2_2.

So, the final question is: is that correct that the ToF re-sends southbound the node TIE received by southern reflection? Or is this a strange behaviour?

Good night,
Mariano and Tommaso.

Il 12/05/2020 00:06, Mariano Scazzariello ha scritto:

Little update:
the southern reflection is working properly. What we're seeing is this behaviour (similar to n.3 of previous mail). As example:

After spine_1_1_1 failure, tof_1_2_1 sends a = node TIE (with seq n.7, originated by tof_1_2_2) to spine_2_1_1/spine_3_1_1/spine_4_1_1. Spines bounce it back to tof_1_2_2.

It seems that tof_1_2_1 reflects something = that is already coming from a reflection since originator is tof_1_2_2 (?) Is that possible? Also, is this correct that a TIE is reflected to the same node that originated it?

We'll = keep you updated.
Mariano and Tommaso.

Il 11/05/2020 23:09, Mariano Scazzariello ha scritto:
=20 Hi Bruno,
as disussed today we'll report the strange behaviours found in RIFT.

1. ToFs/Spines sending more than one neg disagg TIE
<= p>Steps to reproduce: build a FT with K=3D2 and R=3D1, after convergence destroy spine_1_1_1. This is the state after the failure (don't mind the numbers :D).
<jdcclkbcdlgpfggo.png>

In the fi= gure below, spine_3_1_1 interface 0 (connected to leaf_3_0_1) sends 2 neg disagg TIEs after failure time.

<jnilpccgldahgdmk.png>

2. Southern Refle= ction bounces PDUs back to the sender

Same scenario as before, spine_4_1_1 interface 3 (connected to tof_1_2_2) bounces back packets to tof_1_2_2 instead of sending them to tof_1_2_1
<fgffmbbocoomlknk.png>

UPDATE: <= /b>We found that, for some reason, spine_3_1_1 sends reflection correctly. Interface 3 (connected to tof_1_2_2) sends TIEs coming from tof_1_2_1: <hbodnfifioifnhng.png>
Me and Tommaso are investigating on that, however we have some difficulties on finding the code that reflects TIEs. Is the `unsol_flood_tie_packet_info` in Node class, right?
3. Another strange behaviour?

tof_1_2_2 sends to spine_2_1_1 some Node TIEs orig= inated by tof_1_2_1, why?
<poionlajflebeigb.png>
This screen wraps both the duplicated packets problem (229-233) and packet 228 is the "strange one".

Hope to hear from you soon,
Mariano and Tommaso.


__________________________________= _____________
RIFT mailing list
RIFT@ietf.org
https://www.ietf.org/mailman/listinfo/rift