* Re: [PATCH net-next V2 3/3] tap: XDP support
From: Michael S. Tsirkin @ 2017-08-14 16:01 UTC (permalink / raw)
To: Jason Wang; +Cc: Jakub Kicinski, davem, netdev, linux-kernel, Daniel Borkmann
In-Reply-To: <8876b3d1-699c-d033-e855-34b24a709c81@redhat.com>
On Sat, Aug 12, 2017 at 10:48:49AM +0800, Jason Wang wrote:
>
>
> On 2017年08月12日 07:12, Jakub Kicinski wrote:
> > On Fri, 11 Aug 2017 19:41:18 +0800, Jason Wang wrote:
> > > This patch tries to implement XDP for tun. The implementation was
> > > split into two parts:
> > >
> > > - fast path: small and no gso packet. We try to do XDP at page level
> > > before build_skb(). For XDP_TX, since creating/destroying queues
> > > were completely under control of userspace, it was implemented
> > > through generic XDP helper after skb has been built. This could be
> > > optimized in the future.
> > > - slow path: big or gso packet. We try to do it after skb was created
> > > through generic XDP helpers.
> > >
> > > Test were done through pktgen with small packets.
> > >
> > > xdp1 test shows ~41.1% improvement:
> > >
> > > Before: ~1.7Mpps
> > > After: ~2.3Mpps
> > >
> > > xdp_redirect to ixgbe shows ~60% improvement:
> > >
> > > Before: ~0.8Mpps
> > > After: ~1.38Mpps
> > >
> > > Suggested-by: Michael S. Tsirkin <mst@redhat.com>
> > > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > Looks OK to me now :)
> >
> > Out of curiosity, you say the build_skb() is for "small packets", and it
> > seems you are always reserving the 256B regardless of XDP being
> > installed. Does this have no performance impact on non-XDP case?
>
> Have a test, only less than 1% were noticed which I think could be ignored.
>
> Thanks
What did you test btw? The biggest issue would be with something like
UDP with short packets.
--
MST
^ permalink raw reply
* [net 1/1] tipc: accept PACKET_MULTICAST packets
From: Jon Maloy @ 2017-08-14 15:55 UTC (permalink / raw)
To: davem, netdev; +Cc: parthasarathy.bhuvaragan, ying.xue, tipc-discussion
On L2 bearers, the TIPC broadcast function is sending out packets using
the corresponding L2 broadcast address. At reception, we filter such
packets under the assumption that they will also be delivered as
broadcast packets.
This assumption doesn't always hold true. Under high load, we have seen
that a switch may convert the destination address and deliver the packet
as a PACKET_MULTICAST, something leading to inadvertently dropped
packets and a stale and reset broadcast link.
We fix this by extending the reception filtering to accept packets of
type PACKET_MULTICAST.
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
---
net/tipc/bearer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index d174ee3..767e053 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -596,7 +596,7 @@ static int tipc_l2_rcv_msg(struct sk_buff *skb, struct net_device *dev,
rcu_read_lock();
b = rcu_dereference_rtnl(dev->tipc_ptr);
if (likely(b && test_bit(0, &b->up) &&
- (skb->pkt_type <= PACKET_BROADCAST))) {
+ (skb->pkt_type <= PACKET_MULTICAST))) {
skb->next = NULL;
tipc_rcv(dev_net(dev), skb, b);
rcu_read_unlock();
--
2.1.4
^ permalink raw reply related
* [PATCH v10 5/5] net/cxgb4vf: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
alexander.duyck, linux-arm-kernel, netdev, linux-pci,
linux-kernel, linuxarm
Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>
From: Casey Leedom <leedom@chelsio.com>
cxgb4vf Ethernet driver now queries PCIe configuration space to
determine if it can send TLPs to it with the Relaxed Ordering
Attribute set, just like the pf did.
Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Reviewed-by: Casey Leedom <leedom@chelsio.com>
---
drivers/net/ethernet/chelsio/cxgb4vf/adapter.h | 1 +
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 18 ++++++++++++++++++
drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 3 +++
3 files changed, 22 insertions(+)
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
index 109bc63..08c6ddb 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
@@ -408,6 +408,7 @@ enum { /* adapter flags */
USING_MSI = (1UL << 1),
USING_MSIX = (1UL << 2),
QUEUES_BOUND = (1UL << 3),
+ ROOT_NO_RELAXED_ORDERING = (1UL << 4),
};
/*
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
index ac7a150..2b85b87 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
@@ -2888,6 +2888,24 @@ static int cxgb4vf_pci_probe(struct pci_dev *pdev,
*/
adapter->name = pci_name(pdev);
adapter->msg_enable = DFLT_MSG_ENABLE;
+
+ /* If possible, we use PCIe Relaxed Ordering Attribute to deliver
+ * Ingress Packet Data to Free List Buffers in order to allow for
+ * chipset performance optimizations between the Root Complex and
+ * Memory Controllers. (Messages to the associated Ingress Queue
+ * notifying new Packet Placement in the Free Lists Buffers will be
+ * send without the Relaxed Ordering Attribute thus guaranteeing that
+ * all preceding PCIe Transaction Layer Packets will be processed
+ * first.) But some Root Complexes have various issues with Upstream
+ * Transaction Layer Packets with the Relaxed Ordering Attribute set.
+ * The PCIe devices which under the Root Complexes will be cleared the
+ * Relaxed Ordering bit in the configuration space, So we check our
+ * PCIe configuration space to see if it's flagged with advice against
+ * using Relaxed Ordering.
+ */
+ if (!pcie_relaxed_ordering_enabled(pdev))
+ adapter->flags |= ROOT_NO_RELAXED_ORDERING;
+
err = adap_init0(adapter);
if (err)
goto err_unmap_bar;
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
index e37dde2..05498e7 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
@@ -2205,6 +2205,7 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
struct port_info *pi = netdev_priv(dev);
struct fw_iq_cmd cmd, rpl;
int ret, iqandst, flsz = 0;
+ int relaxed = !(adapter->flags & ROOT_NO_RELAXED_ORDERING);
/*
* If we're using MSI interrupts and we're not initializing the
@@ -2300,6 +2301,8 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
cpu_to_be32(
FW_IQ_CMD_FL0HOSTFCMODE_V(SGE_HOSTFCMODE_NONE) |
FW_IQ_CMD_FL0PACKEN_F |
+ FW_IQ_CMD_FL0FETCHRO_V(relaxed) |
+ FW_IQ_CMD_FL0DATARO_V(relaxed) |
FW_IQ_CMD_FL0PADEN_F);
/* In T6, for egress queue type FL there is internal overhead
--
1.8.3.1
^ permalink raw reply related
* [PATCH v10 4/5] net/cxgb4: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
alexander.duyck, linux-arm-kernel, netdev, linux-pci,
linux-kernel, linuxarm
Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>
From: Casey Leedom <leedom@chelsio.com>
cxgb4 Ethernet driver now queries PCIe configuration space to determine
if it can send TLPs to it with the Relaxed Ordering Attribute set.
Remove the enable_pcie_relaxed_ordering() to avoid enable PCIe Capability
Device Control[Relaxed Ordering Enable] at probe routine, to make sure
the driver will not send the Relaxed Ordering TLPs to the Root Complex which
could not deal the Relaxed Ordering TLPs.
Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Reviewed-by: Casey Leedom <leedom@chelsio.com>
---
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 1 +
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 23 +++++++++++++++++------
drivers/net/ethernet/chelsio/cxgb4/sge.c | 5 +++--
3 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
index ef4be78..09ea62e 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
@@ -529,6 +529,7 @@ enum { /* adapter flags */
USING_SOFT_PARAMS = (1 << 6),
MASTER_PF = (1 << 7),
FW_OFLD_CONN = (1 << 9),
+ ROOT_NO_RELAXED_ORDERING = (1 << 10),
};
enum {
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index e403fa1..33bb867 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -4654,11 +4654,6 @@ static void print_port_info(const struct net_device *dev)
dev->name, adap->params.vpd.id, adap->name, buf);
}
-static void enable_pcie_relaxed_ordering(struct pci_dev *dev)
-{
- pcie_capability_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_RELAX_EN);
-}
-
/*
* Free the following resources:
* - memory used for tables
@@ -4908,7 +4903,6 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
}
pci_enable_pcie_error_reporting(pdev);
- enable_pcie_relaxed_ordering(pdev);
pci_set_master(pdev);
pci_save_state(pdev);
@@ -4947,6 +4941,23 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
adapter->msg_enable = DFLT_MSG_ENABLE;
memset(adapter->chan_map, 0xff, sizeof(adapter->chan_map));
+ /* If possible, we use PCIe Relaxed Ordering Attribute to deliver
+ * Ingress Packet Data to Free List Buffers in order to allow for
+ * chipset performance optimizations between the Root Complex and
+ * Memory Controllers. (Messages to the associated Ingress Queue
+ * notifying new Packet Placement in the Free Lists Buffers will be
+ * send without the Relaxed Ordering Attribute thus guaranteeing that
+ * all preceding PCIe Transaction Layer Packets will be processed
+ * first.) But some Root Complexes have various issues with Upstream
+ * Transaction Layer Packets with the Relaxed Ordering Attribute set.
+ * The PCIe devices which under the Root Complexes will be cleared the
+ * Relaxed Ordering bit in the configuration space, So we check our
+ * PCIe configuration space to see if it's flagged with advice against
+ * using Relaxed Ordering.
+ */
+ if (!pcie_relaxed_ordering_enabled(pdev))
+ adapter->flags |= ROOT_NO_RELAXED_ORDERING;
+
spin_lock_init(&adapter->stats_lock);
spin_lock_init(&adapter->tid_release_lock);
spin_lock_init(&adapter->win0_lock);
diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index ede1220..4ef68f6 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -2719,6 +2719,7 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
struct fw_iq_cmd c;
struct sge *s = &adap->sge;
struct port_info *pi = netdev_priv(dev);
+ int relaxed = !(adap->flags & ROOT_NO_RELAXED_ORDERING);
/* Size needs to be multiple of 16, including status entry. */
iq->size = roundup(iq->size, 16);
@@ -2772,8 +2773,8 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
flsz = fl->size / 8 + s->stat_len / sizeof(struct tx_desc);
c.iqns_to_fl0congen |= htonl(FW_IQ_CMD_FL0PACKEN_F |
- FW_IQ_CMD_FL0FETCHRO_F |
- FW_IQ_CMD_FL0DATARO_F |
+ FW_IQ_CMD_FL0FETCHRO_V(relaxed) |
+ FW_IQ_CMD_FL0DATARO_V(relaxed) |
FW_IQ_CMD_FL0PADEN_F);
if (cong >= 0)
c.iqns_to_fl0congen |=
--
1.8.3.1
^ permalink raw reply related
* [PATCH v10 3/5] PCI: Disable Relaxed Ordering Attributes for AMD A1100
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
alexander.duyck, linux-arm-kernel, netdev, linux-pci,
linux-kernel, linuxarm
Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>
Casey reported that the AMD ARM A1100 SoC has a bug in its PCIe
Root Port where Upstream Transaction Layer Packets with the Relaxed
Ordering Attribute clear are allowed to bypass earlier TLPs with
Relaxed Ordering set, it would cause Data Corruption, so we need
to disable Relaxed Ordering Attribute when Upstream TLPs to the
Root Port.
Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Ashok Raj <ashok.raj@intel.com>
---
drivers/pci/quirks.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 1272f7e..1407604 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4089,6 +4089,22 @@ static void quirk_relaxedordering_disable(struct pci_dev *dev)
quirk_relaxedordering_disable);
/*
+ * The AMD ARM A1100 (AKA "SEATTLE") SoC has a bug in its PCIe Root Complex
+ * where Upstream Transaction Layer Packets with the Relaxed Ordering
+ * Attribute clear are allowed to bypass earlier TLPs with Relaxed Ordering
+ * set. This is a violation of the PCIe 3.0 Transaction Ordering Rules
+ * outlined in Section 2.4.1 (PCI Express(r) Base Specification Revision 3.0
+ * November 10, 2010). As a result, on this platform we can't use Relaxed
+ * Ordering for Upstream TLPs.
+ */
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a00, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a01, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a02, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+
+/*
* Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
* values for the Attribute as were supplied in the header of the
* corresponding Request, except as explicitly allowed when IDO is used."
--
1.8.3.1
^ permalink raw reply related
* [PATCH v10 2/5] PCI: Disable Relaxed Ordering for some Intel processors
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
alexander.duyck, linux-arm-kernel, netdev, linux-pci,
linux-kernel, linuxarm
Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>
According to the Intel spec section 3.9.1 said:
3.9.1 Optimizing PCIe Performance for Accesses Toward Coherent Memory
and Toward MMIO Regions (P2P)
In order to maximize performance for PCIe devices in the processors
listed in Table 3-6 below, the soft- ware should determine whether the
accesses are toward coherent memory (system memory) or toward MMIO
regions (P2P access to other devices). If the access is toward MMIO
region, then software can command HW to set the RO bit in the TLP
header, as this would allow hardware to achieve maximum throughput for
these types of accesses. For accesses toward coherent memory, software
can command HW to clear the RO bit in the TLP header (no RO), as this
would allow hardware to achieve maximum throughput for these types of
accesses.
Table 3-6. Intel Processor CPU RP Device IDs for Processors Optimizing
PCIe Performance
Processor CPU RP Device IDs
Intel Xeon processors based on 6F01H-6F0EH
Broadwell microarchitecture
Intel Xeon processors based on 2F01H-2F0EH
Haswell microarchitecture
It means some Intel processors has performance issue when use the Relaxed
Ordering Attribute, so disable Relaxed Ordering for these root port.
Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Ashok Raj <ashok.raj@intel.com>
---
drivers/pci/quirks.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 61b59bf..1272f7e 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4027,6 +4027,68 @@ static void quirk_relaxedordering_disable(struct pci_dev *dev)
}
/*
+ * Intel Xeon processors based on Broadwell/Haswell microarchitecture Root
+ * Complex has a Flow Control Credit issue which can cause performance
+ * problems with Upstream Transaction Layer Packets with Relaxed Ordering set.
+ */
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f01, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f02, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f03, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f04, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f05, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f06, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f07, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f08, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f09, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0a, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0b, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0c, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0d, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0e, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f01, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f02, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f03, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f04, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f05, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f06, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f07, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f08, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f09, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0a, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0b, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0c, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0d, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0e, PCI_CLASS_NOT_DEFINED, 8,
+ quirk_relaxedordering_disable);
+
+/*
* Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
* values for the Attribute as were supplied in the header of the
* corresponding Request, except as explicitly allowed when IDO is used."
--
1.8.3.1
^ permalink raw reply related
* [PATCH v10 1/5] PCI: Disable PCIe Relaxed Ordering if unsupported
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
alexander.duyck, linux-arm-kernel, netdev, linux-pci,
linux-kernel, linuxarm
Cc: Ding Tianhong
In-Reply-To: <1502725499-11276-1-git-send-email-dingtianhong@huawei.com>
When bit4 is set in the PCIe Device Control register, it indicates
whether the device is permitted to use relaxed ordering.
On some platforms using relaxed ordering can have performance issues or
due to erratum can cause data-corruption. In such cases devices must avoid
using relaxed ordering.
The patch adds a new flag PCI_DEV_FLAGS_NO_RELAXED_ORDERING to indicate that
Relaxed Ordering (RO) attribute should not be used for Transaction Layer
Packets (TLP) targeted towards these affected root complexes.
This patch checks if there is any node in the hierarchy that indicates that
using relaxed ordering is not safe. In such cases the patch turns off the
relaxed ordering by clearing the capability for this device.
Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Acked-by: Ashok Raj <ashok.raj@intel.com>
Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Casey Leedom <leedom@chelsio.com>
---
drivers/pci/probe.c | 43 +++++++++++++++++++++++++++++++++++++++++++
drivers/pci/quirks.c | 11 +++++++++++
include/linux/pci.h | 3 +++
3 files changed, 57 insertions(+)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index c31310d..779e646 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1762,6 +1762,48 @@ static void pci_configure_extended_tags(struct pci_dev *dev)
PCI_EXP_DEVCTL_EXT_TAG);
}
+/**
+ * pcie_relaxed_ordering_enabled - Probe for PCIe relaxed ordering enable
+ * @dev: PCI device to query
+ *
+ * Returns true if the device has enabled relaxed ordering attribute.
+ */
+bool pcie_relaxed_ordering_enabled(struct pci_dev *dev)
+{
+ u16 v;
+
+ pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &v);
+
+ return !!(v & PCI_EXP_DEVCTL_RELAX_EN);
+}
+EXPORT_SYMBOL(pcie_relaxed_ordering_enabled);
+
+static void pci_configure_relaxed_ordering(struct pci_dev *dev)
+{
+ struct pci_dev *root;
+
+ /* PCI_EXP_DEVICE_RELAX_EN is RsvdP in VFs */
+ if (dev->is_virtfn)
+ return;
+
+ if (!pcie_relaxed_ordering_enabled(dev))
+ return;
+
+ /*
+ * For now, we only deal with Relaxed Ordering issues with Root
+ * Ports. Peer-to-Peer DMA is another can of worms.
+ */
+ root = pci_find_pcie_root_port(dev);
+ if (!root)
+ return;
+
+ if (root->dev_flags & PCI_DEV_FLAGS_NO_RELAXED_ORDERING) {
+ pcie_capability_clear_word(dev, PCI_EXP_DEVCTL,
+ PCI_EXP_DEVCTL_RELAX_EN);
+ dev_info(&dev->dev, "Disable Relaxed Ordering because the Root Port didn't support it\n");
+ }
+}
+
static void pci_configure_device(struct pci_dev *dev)
{
struct hotplug_params hpp;
@@ -1769,6 +1811,7 @@ static void pci_configure_device(struct pci_dev *dev)
pci_configure_mps(dev);
pci_configure_extended_tags(dev);
+ pci_configure_relaxed_ordering(dev);
memset(&hpp, 0, sizeof(hpp));
ret = pci_get_hp_params(dev, &hpp);
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 6967c6b..61b59bf 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4016,6 +4016,17 @@ static void quirk_tw686x_class(struct pci_dev *pdev)
quirk_tw686x_class);
/*
+ * Some devices have problems with Transaction Layer Packets with the Relaxed
+ * Ordering Attribute set. Such devices should mark themselves and other
+ * Device Drivers should check before sending TLPs with RO set.
+ */
+static void quirk_relaxedordering_disable(struct pci_dev *dev)
+{
+ dev->dev_flags |= PCI_DEV_FLAGS_NO_RELAXED_ORDERING;
+ dev_info(&dev->dev, "Disable Relaxed Ordering Attributes to avoid PCIe Completion erratum\n");
+}
+
+/*
* Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
* values for the Attribute as were supplied in the header of the
* corresponding Request, except as explicitly allowed when IDO is used."
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 4869e66..29606fb 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -188,6 +188,8 @@ enum pci_dev_flags {
* the direct_complete optimization.
*/
PCI_DEV_FLAGS_NEEDS_RESUME = (__force pci_dev_flags_t) (1 << 11),
+ /* Don't use Relaxed Ordering for TLPs directed at this device */
+ PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 12),
};
enum pci_irq_reroute_variant {
@@ -1125,6 +1127,7 @@ int pci_add_ext_cap_save_buffer(struct pci_dev *dev,
void pci_pme_wakeup_bus(struct pci_bus *bus);
void pci_d3cold_enable(struct pci_dev *dev);
void pci_d3cold_disable(struct pci_dev *dev);
+bool pcie_relaxed_ordering_enabled(struct pci_dev *dev);
/* PCI Virtual Channel */
int pci_save_vc_state(struct pci_dev *dev);
--
1.8.3.1
^ permalink raw reply related
* [PATCH v10 0/5] Add new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
From: Ding Tianhong @ 2017-08-14 15:44 UTC (permalink / raw)
To: leedom, ashok.raj, bhelgaas, helgaas, werner, ganeshgr,
asit.k.mallick, patrick.j.cramer, Suravee.Suthikulpanit, Bob.Shaw,
l.stach, amira, gabriele.paoloni, David.Laight, jeffrey.t.kirsher,
catalin.marinas, will.deacon, mark.rutland, robin.murphy, davem,
alexander.duyck, linux-arm-kernel, netdev, linux-pci,
linux-kernel, linuxarm
Cc: Ding Tianhong
Some devices have problems with Transaction Layer Packets with the Relaxed
Ordering Attribute set. This patch set adds a new PCIe Device Flag,
PCI_DEV_FLAGS_NO_RELAXED_ORDERING, a set of PCI Quirks to catch some known
devices with Relaxed Ordering issues, and a use of this new flag by the
cxgb4 driver to avoid using Relaxed Ordering with problematic Root Complex
Ports.
It's been years since I've submitted kernel.org patches, I appolgise for the
almost certain submission errors.
v2: Alexander point out that the v1 was only a part of the whole solution,
some platform which has some issues could use the new flag to indicate
that it is not safe to enable relaxed ordering attribute, then we need
to clear the relaxed ordering enable bits in the PCI configuration when
initializing the device. So add a new second patch to modify the PCI
initialization code to clear the relaxed ordering enable bit in the
event that the root complex doesn't want relaxed ordering enabled.
The third patch was base on the v1's second patch and only be changed
to query the relaxed ordering enable bit in the PCI configuration space
to allow the Chelsio NIC to send TLPs with the relaxed ordering attributes
set.
This version didn't plan to drop the defines for Intel Drivers to use the
new checking way to enable relaxed ordering because it is not the hardest
part of the moment, we could fix it in next patchset when this patches
reach the goal.
v3: Redesigned the logic for pci_configure_relaxed_ordering when configuration,
If a PCIe device didn't enable the relaxed ordering attribute default,
we should not do anything in the PCIe configuration, otherwise we
should check if any of the devices above us do not support relaxed
ordering by the PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag, then base on
the result if we get a return that indicate that the relaxed ordering
is not supported we should update our device to disable relaxed ordering
in configuration space. If the device above us doesn't exist or isn't
the PCIe device, we shouldn't do anything and skip updating relaxed ordering
because we are probably running in a guest.
v4: Rename the functions pcie_get_relaxed_ordering and pcie_disable_relaxed_ordering
according John's suggestion, and modify the description, use the true/false
as the return value.
We shouldn't enable relaxed ordering attribute by the setting in the root
complex configuration space for PCIe device, so fix it for cxgb4.
Fix some format issues.
v5: Removed the unnecessary code for some function which only return the bool
value, and add the check for VF device.
Make this patch set base on 4.12-rc5.
v6: Fix the logic error in the need to enable the relaxed ordering attribute for cxgb4.
v7: The cxgb4 drivers will enable the PCIe Capability Device Control[Relaxed
Ordering Enable] in PCI Probe() routine, this will break our current
solution for some platform which has problematic when enable the relaxed
ordering attribute. According to the latest recommendations, remove the
enable_pcie_relaxed_ordering(), although it could not cover the Peer-to-Peer
scene, but we agree to leave this problem until we really trigger it.
Make this patch set base on 4.12 release version.
v8: Change the second patch title and description to make it more reasonable,
add the acked-by from Alex and Ashok.
Add a new patch to enable the Relaxed Ordering Attribute for cxgb4vf driver.
Make this patch set base on 4.13-rc2.
v9: The document (https://software.intel.com/sites/default/files/managed/9e/
bc/64-ia-32-architectures-optimization-manual.pdf) indicate that the Xeon
processors based on Broadwell/Haswell microarchitecture has the problem
with Relaxed Ordering Attribute enabled, so add the whole list Device ID
from Intel to the patch.
v10: Significant rework based on Bjorn's feedback, reorganize the first 2 patches,
now the Intel and AMD erratum soc has been divided to the different patches,
rename the pcie_relaxed_ordering_supported() to pcie_relaxed_ordering_enabled(),
and no need to check every intervening switch except the root ports, update
some commits.
Casey Leedom (2):
net/cxgb4: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
net/cxgb4vf: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
Ding Tianhong (3):
PCI: Disable PCIe Relaxed Ordering if unsupported
PCI: Disable Relaxed Ordering for some Intel processors
PCI: Disable Relaxed Ordering Attributes for AMD A1100
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 1 +
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 23 ++++--
drivers/net/ethernet/chelsio/cxgb4/sge.c | 5 +-
drivers/net/ethernet/chelsio/cxgb4vf/adapter.h | 1 +
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 18 +++++
drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 3 +
drivers/pci/probe.c | 43 +++++++++++
drivers/pci/quirks.c | 89 ++++++++++++++++++++++
include/linux/pci.h | 3 +
9 files changed, 178 insertions(+), 8 deletions(-)
--
1.8.3.1
^ permalink raw reply
* Re: [PATCH net] ipv4: route: fix inet_rtm_getroute induced crash
From: Eric Dumazet @ 2017-08-14 15:42 UTC (permalink / raw)
To: Florian Westphal; +Cc: netdev, Roopa Prabhu, David Ahern
In-Reply-To: <20170813225258.16001-1-fw@strlen.de>
On Mon, 2017-08-14 at 00:52 +0200, Florian Westphal wrote:
> "ip route get $daddr iif eth0 from $saddr" causes:
> BUG: KASAN: use-after-free in ip_route_input_rcu+0x1535/0x1b50
> Call Trace:
> ip_route_input_rcu+0x1535/0x1b50
> ip_route_input_noref+0xf9/0x190
> tcp_v4_early_demux+0x1a4/0x2b0
> ip_rcv+0xbcb/0xc05
> __netif_receive_skb+0x9c/0xd0
> netif_receive_skb_internal+0x5a8/0x890
>
> Problem is that inet_rtm_getroute calls either ip_route_input_rcu (if an
> iif was provided) or ip_route_output_key_hash_rcu.
>
> But ip_route_input_rcu, unlike ip_route_output_key_hash_rcu, already
> associates the dst_entry with the skb. This clears the SKB_DST_NOREF
> bit (i.e. skb_dst_drop will release/free the entry while it should not).
>
> Thus only set the dst if we called ip_route_output_key_hash_rcu().
>
> I tested this patch by running:
> while true;do ip r get 10.0.1.2;done > /dev/null &
> while true;do ip r get 10.0.1.2 iif eth0 from 10.0.1.1;done > /dev/null &
> ... and saw no crash or memory leak.
>
> Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
> Cc: David Ahern <dsahern@gmail.com>
> Fixes: ba52d61e0ff ("ipv4: route: restore skb_dst_set in inet_rtm_getroute")
> Signed-off-by: Florian Westphal <fw@strlen.de>
> ---
Ouch
Acked-by: Eric Dumazet <edumazet@google.com>
^ permalink raw reply
* (unknown),
From: agar2000 @ 2017-08-14 15:35 UTC (permalink / raw)
To: netdev
[-- Attachment #1: 4869945.zip --]
[-- Type: application/zip, Size: 10508 bytes --]
^ permalink raw reply
* Re: [PATCH net] datagram: When peeking datagrams with offset < 0 don't skip empty skbs
From: Paolo Abeni @ 2017-08-14 15:31 UTC (permalink / raw)
To: Willem de Bruijn, Matthew Dawson; +Cc: Network Development, Macieira, Thiago
In-Reply-To: <CAF=yD-L9CpW-DRtKfWWWKcNKcPSWvXOkTGZoKBq6=fQMrcKVWQ@mail.gmail.com>
On Mon, 2017-08-14 at 11:03 -0400, Willem de Bruijn wrote:
> > I'm actually surprised that only unix sockets can have negative values. Is
> > there a reason for that? I had assumed that sk_set_peek_off would allow
> > negative values as the code already has to support negative values due to what
> > the initial value is.
>
> A negative initial value indicates that PEEK_OFF is disabled. It only
> makes sense to peek from a positive offset from the start of the data.
With the current code, the user space can disable peeking with offset
setting a negative offset value, after that peeking with offset has
been enabled. But only for UNIX sockets. I think the same should be
allowed for UDP sockets.
> > > I'm wondering adding an explicit SOCK_PEEK_OFF/MSG_PEEK_OFF socket flag
> > > would help simplyifing the code:
>
> The behavior needs to be bifurcated between peeking with
> offset and without offset.
>
> When peeking with offset is enabled by setting SO_PEEK_OFF,
> subsequent reads do move the offset, so the observed behavior
> is correct.
>
> When sk->sk_peek_offset is negative, offset mode is disabled
> and the same packet must be read twice.
>
> An explicit boolean flag to discern between the two may make
> the code simpler to understand, not sure whether that is logically
> required.
Yes, an explicit PEEK_OFF flag is just to keep the code simpler, so
that there is no need to add checks at every sk_peek_offset() call site
and the relevant logic can be fully encapsulated under the MSG_PEEK
branch in __skb_try_recv_from_queue(), I think/hope.
It's not a functional requirement.
Cheers,
Paolo
^ permalink raw reply
* Re: Kernel 4.13.0-rc4-next-20170811 - IP Routing / Forwarding performance vs Core/RSS number / HT on
From: Paweł Staszewski @ 2017-08-14 15:07 UTC (permalink / raw)
To: Alexander Duyck; +Cc: Jesper Dangaard Brouer, Linux Kernel Network Developers
In-Reply-To: <CAKgT0UcvR2cYnzt5BGz9Dt-uwYhuTZVtt6kQ9nuvJK2HzLyqYA@mail.gmail.com>
W dniu 2017-08-14 o 02:07, Alexander Duyck pisze:
> On Sat, Aug 12, 2017 at 10:27 AM, Paweł Staszewski
> <pstaszewski@itcare.pl> wrote:
>> Hi and thanks for reply
>>
>>
>>
>> W dniu 2017-08-12 o 14:23, Jesper Dangaard Brouer pisze:
>>> On Fri, 11 Aug 2017 19:51:10 +0200 Paweł Staszewski
>>> <pstaszewski@itcare.pl> wrote:
>>>
>>>> Hi
>>>>
>>>> I made some tests for performance comparison.
>>> Thanks for doing this. Feel free to Cc me, if you do more of these
>>> tests (so I don't miss them on the mailing list).
>>>
>>> I don't understand stand if you are reporting a potential problem?
>>>
>>> It would be good if you can provide a short summary section (of the
>>> issue) in the _start_ of the email, and then provide all this nice data
>>> afterwards, to back your case.
>>>
>>> My understanding is, you report:
>>>
>>> 1. VLANs on ixgbe show a 30-40% slowdown
>>> 2. System stopped scaling after 7+ CPUs
> So I had read through most of this before I realized what it was you
> were reporting. As far as the behavior there are a few things going
> on. I have some additional comments below but they are mostly based on
> what I had read up to that point.
>
> As far as possible issues for item 1. The VLAN adds 4 bytes of data of
> the payload, when it is stripped it can result in a packet that is 56
> bytes. These missing 8 bytes can cause issues as it forces the CPU to
> do a read/modify/write every time the device writes to the 64B cache
> line instead of just doing it as a single write. This can be very
> expensive and hurt performance. In addition it adds 4 bytes on the
> wire, so if you are sending the same 64B packets over the VLAN
> interface it is bumping them up to 68B to make room for the VLAN tag.
> I am suspecting you are encountering one of these type of issues. You
> might try tweaking the packet sizes in increments of 4 to see if there
> is a sweet spot that you might be falling out of or into.
No this is not a problem with 4byte header or soo
Cause topology is like this
TX generator (pktgen) physical interface no vlan -> RX physical
interface (no vlan) [ FORWARDING HOST ] TX vlan interface binded to
physical interface -> SINK
below data for packet size 70 (pktgen PKT_SIZE: 70)
ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
0;16;70;7246720;434749440;7245917;420269856
1;16;70;7249152;434872320;7248885;420434344
2;16;70;7249024;434926080;7249225;420401400
3;16;70;7249984;434952960;7249448;420435736
4;16;70;7251200;435064320;7250990;420495244
5;16;70;7241408;434592000;7241781;420068074
6;16;70;7229696;433689600;7229750;419268196
7;16;70;7236032;434127360;7236133;419669092
8;16;70;7236608;434161920;7236274;419695830
9;16;70;7226496;433578240;7227501;419107826
100% cpu load on all 16 cores
the difference vlan/no vlan currently on this host varries from 40 to
even 50% (but cant check if can reach 50% performance degradation cause
pktgen can give me only 10Mpps with 70% of cpu load for forwarding host
(soo still place to forward maybee at line rate 14Mpps)
> Item 2 is a known issue with the NICs supported by ixgbe, at least for
> anything 82599 and later. The issue here is that there isn't really an
> Rx descriptor cache so to try and optimize performance the hardware
> will try to write back as many descriptors it has ready for the ring
> requesting writeback. The problem is as you add more rings it means
> the writes get smaller as they are triggering more often. So what you
> end up seeing is that for each additional ring you add the performance
> starts dropping as soon as the rings are no longer being fully
> saturated. You can tell this has happened when the CPUs in use
> suddenly all stop reporting 100% softirq use. So for example to
> perform at line rate with 64B packets you would need something like
> XDP and to keep the ring count small, like maybe 2 rings. Any more
> than that and the performance will start to drop as you hit PCIe
> bottlenecks.
>
>> This is not only problem/bug report - but some kind of comparision plus
>> some toughts about possible problems :)
>> And can help somebody when searching the net for possible expectations :)
>> Also - dono better list where are the smartest people that know what is
>> going in kernel with networking :)
>>
>> Next time i will place summary on top - sorry :)
>>
>>>> Tested HW (FORWARDING HOST):
>>>>
>>>> Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz
>>> Interesting, I've not heard about a Intel CPU called "Gold" before now,
>>> but it does exist:
>>>
>>> https://ark.intel.com/products/123541/Intel-Xeon-Gold-6132-Processor-19_25M-Cache-2_60-GHz
>>>
>>>
>>>> Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
>>> This is one of my all time favorite NICs!
>> Yes this is a good NIC - will have connectx-4 2x100G by monday so will also
>> do some tests
>>
>>>> Test diagram:
>>>>
>>>>
>>>> TRAFFIC GENERATOR (ethX) -> (enp216s0f0 - RX Traffic) FORWARDING HOST
>>>> (enp216s0f1(vlan1000) - TX Traffic) -> (ethY) SINK
>>>>
>>>> Forwarder traffic: UDP random ports from 9 to 19 with random hosts from
>>>> 172.16.0.1 to 172.16.0.255
>>>>
>>>> TRAFFIC GENERATOR TX is stable 9.9Mpps (in kernel pktgen)
>>> What kind of traffic flow? E.g. distribution, many/few source IPs...
>>
>> Traffic generator is pktgen so udp flows - better paste parameters from
>> pktgen:
>> UDP_MIN=9
>> UDP_MAX=19
>>
>> pg_set $dev "dst_min 172.16.0.1"
>> pg_set $dev "dst_max 172.16.0.100"
>>
>> # Setup random UDP port src range
>> #pg_set $dev "flag UDPSRC_RND"
>> pg_set $dev "flag UDPSRC_RND"
>> pg_set $dev "udp_src_min $UDP_MIN"
>> pg_set $dev "udp_src_max $UDP_MAX"
>>
>>
>>>
>>>> Settings used for FORWARDING HOST (changed param. was only number of RSS
>>>> combined queues + set affinity assignment for them to fit with first
>>>> numa node where 2x10G port card is installed)
>>>>
>>>> ixgbe driver used from kernel (in-kernel build - not a module)
>>>>
>>> Nice with a script showing you setup, thanks. I would be good if it had
>>> comments, telling why you think this is a needed setup adjustment.
>>>
>>>> #!/bin/sh
>>>> ifc='enp216s0f0 enp216s0f1'
>>>> for i in $ifc
>>>> do
>>>> ip link set up dev $i
>>>> ethtool -A $i autoneg off rx off tx off
>>> Good:
>>> Turning off Ethernet flow control, to avoid receiver being the
>>> bottleneck via pause-frames.
>> Yes - enabled flow controll is really bad :)
>>>> ethtool -G $i rx 4096 tx 1024
>>> You adjust the RX and TX ring queue sizes, this have effects that you
>>> don't realize. Especially for the ixgbe driver, which have a page
>>> recycle trick tied to the RX ring queue size.
>> rx ring 4096 and tx ring 1024
>> - this is because have best performance then with average packet size from
>> 64 to 1500 bytes
> The problem is this has huge negative effects on the CPU caches.
> Generally less is more. When I perform tests I will usually drop the
> ring size for Tx to 128 and Rx to 256. That reduces the descriptor
> caches per ring to 1 page each for the Tx and Rx. With an increased
> interrupt rate you should be able to service this optimally without
> too much issue.
>
> Also for these type of tests the Tx ring never really gets over 64
> packets anyway since a single Tx ring is always populated by a single
> Rx ring so as long as there isn't any flow control in play the Tx
> queue should always be empty when the Rx clean-up begins and it will
> only be populated with up to NAPI poll weight worth of packets.
Will check different ring sizes also to compare this.
>
>> Can be a little better performance for smaller frames like 64 - with rx ring
>> set to 1024
>> below 1 core/1 RSS queue with rx ring set to 1024
>>
>> 0;1;64;1530112;91772160;1529919;88724208
>> 1;1;64;1531584;91872000;1531520;88813196
>> 2;1;64;1531392;91895040;1531262;88831930
>> 3;1;64;1530880;91875840;1531201;88783558
>> 4;1;64;1530688;91829760;1530688;88768826
>> 5;1;64;1530432;91810560;1530624;88764940
>> 6;1;64;1530880;91868160;1530878;88787328
>> 7;1;64;1530496;91845120;1530560;88765114
>> 8;1;64;1530496;91837440;1530687;88772538
>> 9;1;64;1530176;91795200;1530496;88735360
>>
>> so from 1.47Mpps to 1.53Mpps
>>
>> But with bigger packets > 200 performance is better when rx is set to 4096
> This is likely due to the interrupt moderation on the adapter. Instead
> of adjusting the ring size up you might try pushing the time between
> interrupts down. I have generally found around 25 usecs is best. You
> can change the rx-usecs value via ethtool -C to get the rate you want.
> You should find that it will perform better that way since you put
> less stress on the CPU caches.
>
>>>> ip link set $i txqueuelen 1000
>>> Setting tx queue len to the default 1000 seems redundant.
>> Yes cause i'm changing this parameter also to see if any impact on
>> performance we have
>>>
>>>> ethtool -C $i rx-usecs 10
>>> Adjusting this also have effects you might not realize. This actually
>>> also affect the page recycle scheme of ixgbe. And can sometimes be
>>> used to solve stalling on DMA TX completions, which could be you issue
>>> here.
>> same here - rx-usecs - setting to 10 was kind of compromise to have good
>> performance with big ans small packet sizes
> >From my personal experience I can say that 10 is probably too
> aggressive. The logic for trying to find an ideal interrupt rate for
> these kind of tests is actually pretty simple. What you want to do is
> have the updates coming fast enough that you never hit the point of
> descriptor starvation, but at the same time you don't want them coming
> too quickly otherwise you limit how many descriptors can be coalesced
> into a single PCI DMA write since the descriptors have to be flushed
> when an interrupt is triggered.
>
>> Same test as above with rx ring 1024 tx ring 1024 and rxusecs set to 256
>> (1Core/1RSS queue):
>> 0;1;64;1506304;90424320;1506626;87402868
>> 1;1;64;1505536;90343680;1504830;87321088
>> 2;1;64;1506880;90416640;1507522;87388120
>> 3;1;64;1511040;90700800;1511682;87684864
>> 4;1;64;1511040;90681600;1511102;87662476
>> 5;1;64;1511488;90712320;1511614;87673728
>> 6;1;64;1511296;90700800;1511038;87669900
>> 7;1;64;1513344;90773760;1513280;87751680
>> 8;1;64;1513536;90850560;1513470;87807360
>> 9;1;64;1512128;90696960;1512000;87696000
>>
>> And rx-usecs set to 1
>> 0;1;64;1533632;92037120;1533504;88954368
>> 1;1;64;1533632;92006400;1533570;88943348
>> 2;1;64;1533504;91994880;1533504;88931980
>> 3;1;64;1532864;91979520;1532674;88902516
>> 4;1;64;1533952;92044800;1534080;88961792
>> 5;1;64;1533888;92048640;1534270;88969100
>> 6;1;64;1533952;92037120;1534082;88969216
>> 7;1;64;1533952;92021760;1534208;88969332
>> 8;1;64;1533056;91983360;1532930;88883724
>> 9;1;64;1533760;92021760;1533886;88946828
>>
>> rx-useck set to 2
>> 0;1;64;1522432;91334400;1522304;88301056
>> 1;1;64;1521920;91330560;1522496;88286208
>> 2;1;64;1522496;91322880;1522432;88304768
>> 3;1;64;1523456;91422720;1523649;88382762
>> 4;1;64;1527680;91676160;1527424;88601728
>> 5;1;64;1527104;91626240;1526912;88572032
>> 6;1;64;1527424;91641600;1527424;88590592
>> 7;1;64;1526336;91572480;1526912;88523776
>> 8;1;64;1527040;91637760;1526912;88579456
>> 9;1;64;1527040;91595520;1526784;88553472
>>
>> rx-usecs set to 3
>> 0;1;64;1526272;91549440;1526592;88527488
>> 1;1;64;1526528;91560960;1526272;88516352
>> 2;1;64;1525952;91580160;1525888;88527488
>> 3;1;64;1525504;91511040;1524864;88456960
>> 4;1;64;1526272;91568640;1526208;88494080
>> 5;1;64;1525568;91545600;1525312;88494080
>> 6;1;64;1526144;91584000;1526080;88512640
>> 7;1;64;1525376;91530240;1525376;88482944
>> 8;1;64;1526784;91607040;1526592;88549760
>> 9;1;64;1526208;91560960;1526528;88512640
>>
>>
>>>> ethtool -L $i combined 16
>>>> ethtool -K $i gro on tso on gso off sg on l2-fwd-offload off
>>>> tx-nocache-copy on ntuple on
>>> Here are many setting above.
>> Yes mostly NIC defaults besides the ntuple that is on (for testing some nfc
>> drop filters - and trying to test also tc-offload )
>>
>>> GRO/GSO/TSO for _forwarding_ is actually bad... in my tests, enabling
>>> this result in approx 10% slowdown.
>> Ok lets give a try :)
>> gro off tso off gso off sg on l2-fwd-offload off tx-nocache-copy on ntuple
>> on
>> rx-usecs 10
>> 1 CPU / 1 RSS QUEUE
>>
>> 0;1;64;1609344;96537600;1609279;93327104
>> 1;1;64;1608320;96514560;1608256;93293812
>> 2;1;64;1608000;96487680;1608125;93267770
>> 3;1;64;1608320;96522240;1608576;93297524
>> 4;1;64;1605888;96387840;1606211;93148986
>> 5;1;64;1601472;96072960;1601600;92870644
>> 6;1;64;1602624;96180480;1602243;92959674
>> 7;1;64;1601728;96107520;1602113;92907764
>> 8;1;64;1602176;96122880;1602176;92933806
>> 9;1;64;1603904;96253440;1603777;93045208
>>
>> A little better performance 1.6Mpps
>> But wondering if disabling tso will have no performance impact for tcp
>> traffic ...
> If you were passing TCP traffic through the router GRO/TSO would
> impact things, but for UDP it just adds overhead.
>
>> Will try to get some pktgen like pktgen-dpdk that can generate also tcp
>> traffic - to compare this.
>>
>>
>>> AFAIK "tx-nocache-copy on" was also determined to be a bad option.
>> I set this to on cause i have better performance (a little 10kpps for this
>> test)
>> below same test as above with tx-nocache-copy off
>>
>> 0;1;64;1591552;95496960;1591230;92313654
>> 1;1;64;1596224;95738880;1595842;92555066
>> 2;1;64;1595456;95700480;1595201;92521774
>> 3;1;64;1595456;95723520;1595072;92528966
>> 4;1;64;1595136;95692800;1595457;92503040
>> 5;1;64;1594624;95631360;1594496;92473402
>> 6;1;64;1596224;95761920;1595778;92551180
>> 7;1;64;1595200;95700480;1595331;92521542
>> 8;1;64;1595584;95692800;1595457;92521426
>> 9;1;64;1594624;95662080;1594048;92469574
> If I recall it should have no actual impact one way or the other. The
> tx-nocache-copy option should only impact socket traffic, not routing
> since if I recall correctly it only impacts copies from userspace.
>
>>> The "ntuple on" AFAIK disables the flow-director in the NIC. I though
>>> this would actually help VLAN traffic, but I guess not.
>> yes I enabled this cause was thinking that can help with traffic on vlans
>>
>> below same test with ntuple off
>> so all settings for ixgbe:
>> gro off tso off gso off sg on l2-fwd-offload off tx-nocache-copy off ntuple
>> off
>> rx-usecs 10
>> rx-flow-hash udp4 sdfn
>>
>> 0;1;64;1611840;96691200;1611905;93460794
>> 1;1;64;1610688;96645120;1610818;93427328
>> 2;1;64;1610752;96668160;1610497;93442176
>> 3;1;64;1610624;96664320;1610817;93427212
>> 4;1;64;1610752;96652800;1610623;93412480
>> 5;1;64;1610048;96614400;1610112;93404940
>> 6;1;64;1611264;96641280;1611390;93427212
>> 7;1;64;1611008;96691200;1610942;93468160
>> 8;1;64;1610048;96652800;1609984;93408652
>> 9;1;64;1611136;96641280;1610690;93434636
>>
>> Performance is a little better
>> and now with tx-nocache-copy on
>>
>> 0;1;64;1597248;95834880;1597311;92644096
>> 1;1;64;1597888;95865600;1597824;92677446
>> 2;1;64;1597952;95834880;1597822;92644038
>> 3;1;64;1597568;95877120;1597375;92685044
>> 4;1;64;1597184;95827200;1597314;92629190
>> 5;1;64;1597696;95842560;1597565;92625652
>> 6;1;64;1597312;95834880;1597376;92644038
>> 7;1;64;1597568;95873280;1597634;92647924
>> 8;1;64;1598400;95919360;1598849;92699602
>> 9;1;64;1597824;95873280;1598208;92684928
>>
>>
>> That is weird - so enabling tx-nocache-copy with disabled ntuple have bad
>> performance impact - but with enabled ntuple there is no performance impact
> I would leave the ntuple feature enabled if you are routing simply
> because that disables the ixgbe feature ATR which can have a negative
> impact on routing tests (causes reordering).
>
>>>
>>>> ethtool -N $i rx-flow-hash udp4 sdfn
>>> Why do you change the NICs flow-hash?
>> whan used 16 cores / 16 rss queues - there was better load distribution over
>> all cores when sdfn rx-flow-hash enabled
> That is to be expected. The default hash will only has on IPv4
> addresses. Enabling the use of UDP ports would allow for more entropy.
> If you want similar performance without resorting to hashing on ports
> you would have to change the source/destination IP addresses.
>
>>>> done
>>>>
>>>> ip link set up dev enp216s0f0
>>>> ip link set up dev enp216s0f1
>>>>
>>>> ip a a 10.0.0.1/30 dev enp216s0f0
>>>>
>>>> ip link add link enp216s0f1 name vlan1000 type vlan id 1000
>>>> ip link set up dev vlan1000
>>>> ip a a 10.0.0.5/30 dev vlan1000
>>>>
>>>>
>>>> ip route add 172.16.0.0/12 via 10.0.0.6
>>>>
>>>> ./set_irq_affinity.sh -x 14-27,42-43 enp216s0f0
>>>> ./set_irq_affinity.sh -x 14-27,42-43 enp216s0f1
>>>> #cat /sys/devices/system/node/node1/cpulist
>>>> #14-27,42-55
>>>> #cat /sys/devices/system/node/node0/cpulist
>>>> #0-13,28-41
>>> Is this a NUMA system?
>> This is 2x CPU 6132 - so have two separate pcie access to the nic - need to
>> check what cpu is assigned to pcie where network card is connected to have
>> network card on local cpu where all irq's are binded
>>
>>>
>>>> #################################################
>>>>
>>>>
>>>> Looks like forwarding performance when using vlans on ixgbe is less that
>>>> without vlans for about 30-40% (wondering if this is some vlan
>>>> offloading problem and ixgbe)
>>> I would see this as a problem/bug that enabling VLANs cost this much.
>> Yes - was thinking that with tx/rx vlan offloading there will be not much
>> performance impact when vlans used.
> What is the rate difference? Also did you account for the header size
> when noticing that there is a difference in rates? I just want to make
> sure we aren't seen an issue where you are expecting a rate of
> 14.88Mpps when VLAN tags drop the rate due to header overhead down to
> something like 14.2Mpps if I recall correctly.
As reply above - the difference is
With vlan: 7Mpps (100%cpu on 16Cores with 16RSS queues)
Without vlan: 10Mpps (70% cpu load on 16Cores with 16RSS queues)
So this is really big difference.
>
>>>> settings below:
>>>>
>>>> ethtool -k enp216s0f0
>>>> Features for enp216s0f0:
>>>> Cannot get device udp-fragmentation-offload settings: Operation not
>>>> supported
>>>> rx-checksumming: on
>>>> tx-checksumming: on
>>>> tx-checksum-ipv4: off [fixed]
>>>> tx-checksum-ip-generic: on
>>>> tx-checksum-ipv6: off [fixed]
>>>> tx-checksum-fcoe-crc: off [fixed]
>>>> tx-checksum-sctp: on
>>>> scatter-gather: on
>>>> tx-scatter-gather: on
>>>> tx-scatter-gather-fraglist: off [fixed]
>>>> tcp-segmentation-offload: on
>>>> tx-tcp-segmentation: on
>>>> tx-tcp-ecn-segmentation: off [fixed]
>>>> tx-tcp-mangleid-segmentation: on
>>>> tx-tcp6-segmentation: on
>>>> udp-fragmentation-offload: off
>>>> generic-segmentation-offload: off
>>>> generic-receive-offload: on
>>>> large-receive-offload: off
>>>> rx-vlan-offload: on
>>>> tx-vlan-offload: on
>>>> ntuple-filters: on
>>>> receive-hashing: on
>>>> highdma: on [fixed]
>>>> rx-vlan-filter: on
>>>> vlan-challenged: off [fixed]
>>>> tx-lockless: off [fixed]
>>>> netns-local: off [fixed]
>>>> tx-gso-robust: off [fixed]
>>>> tx-fcoe-segmentation: off [fixed]
>>>> tx-gre-segmentation: on
>>>> tx-gre-csum-segmentation: on
>>>> tx-ipxip4-segmentation: on
>>>> tx-ipxip6-segmentation: on
>>>> tx-udp_tnl-segmentation: on
>>>> tx-udp_tnl-csum-segmentation: on
>>>> tx-gso-partial: on
>>>> tx-sctp-segmentation: off [fixed]
>>>> tx-esp-segmentation: off [fixed]
>>>> fcoe-mtu: off [fixed]
>>>> tx-nocache-copy: on
>>>> loopback: off [fixed]
>>>> rx-fcs: off [fixed]
>>>> rx-all: off
>>>> tx-vlan-stag-hw-insert: off [fixed]
>>>> rx-vlan-stag-hw-parse: off [fixed]
>>>> rx-vlan-stag-filter: off [fixed]
>>>> l2-fwd-offload: off
>>>> hw-tc-offload: off
>>>> esp-hw-offload: off [fixed]
>>>> esp-tx-csum-hw-offload: off [fixed]
>>>> rx-udp_tunnel-port-offload: on
>>>>
>>>>
>>>> Another thing is that forwarding performance does not scale with number
>>>> of cores when 7+ cores are reached
>>> I've seen problems with using Hyper-Threading CPUs. Could it be that
>>> above 7 CPUs you are starting to use sibling-cores ?
>>>
> I would suspect that it may be more than likely the case. One thing
> you might look at doing is CPU pinning the interrupts for the NIC in a
> 1:1 fashion so that the queues are all bound to separate cores without
> them sharing between Hyper-threads.
>
>> Turbostats can help here:
>> Package Core CPU Avg_MHz Busy% Bzy_MHz TSC_MHz IRQ SMI C1
>> C2 C1% C2% CPU%c1 CPU%c6 CoreTmp PkgTmp PkgWatt RAMWatt
>> PKG_% RAM_%
>> - - - 72 2.27 3188 2600 194844 0 64
>> 69282 0.07 97.83 18.38 79.36 -4 54 123.49 16.08 0.00
>> 0.00
>> 0 0 0 8 0.74 1028 2600 1513 0 32
>> 1462 1.50 97.99 10.92 88.34 47 51 58.34 5.34 0.00
>> 0.00
>> 0 0 28 7 0.67 1015 2600 1255 0 12
>> 1249 0.96 98.61 10.99
>> 0 1 1 7 0.68 1019 2600 1260 0 0
>> 1260 0.00 99.54 8.44 90.88 49
>> 0 1 29 9 0.71 1208 2600 1252 0 0
>> 1253 0.00 99.48 8.41
>> 0 2 2 7 0.67 1019 2600 1261 0 0
>> 1260 0.00 99.54 8.44 90.89 48
>> 0 2 30 7 0.67 1017 2600 1255 0 0
>> 1255 0.00 99.55 8.44
>> 0 3 3 7 0.68 1019 2600 1260 0 0
>> 1259 0.00 99.53 8.46 90.86 -4
>> 0 3 31 7 0.67 1017 2600 1256 0 0
>> 1256 0.00 99.55 8.46
>> 0 4 4 7 0.67 1027 2600 1260 0 0
>> 1260 0.00 99.54 8.43 90.90 -4
>> 0 4 32 7 0.66 1018 2600 1255 0 0
>> 1255 0.00 99.55 8.44
>> 0 5 5 7 0.68 1020 2600 1260 0 0
>> 1257 0.00 99.54 8.44 90.89 50
>> 0 5 33 7 0.68 1019 2600 1255 0 0
>> 1255 0.00 99.55 8.43
>> 0 6 6 7 0.70 1019 2600 1260 0 0
>> 1259 0.00 99.53 8.43 90.87 -4
>> 0 6 34 7 0.70 1019 2600 1255 0 0
>> 1255 0.00 99.54 8.43
>> 0 8 7 7 0.68 1019 2600 1262 0 0
>> 1261 0.00 99.52 8.42 90.90 50
>> 0 8 35 7 0.67 1019 2600 1255 0 0
>> 1255 0.00 99.55 8.43
>> 0 9 8 7 0.68 1019 2600 1260 0 0
>> 1257 0.00 99.54 8.40 90.92 49
>> 0 9 36 7 0.66 1017 2600 1255 0 0
>> 1255 0.00 99.55 8.41
>> 0 10 9 7 0.66 1018 2600 1257 0 0
>> 1257 0.00 99.54 8.40 90.94 -4
>> 0 10 37 7 0.66 1018 2600 1255 0 0
>> 1255 0.00 99.55 8.41
>> 0 11 10 7 0.66 1019 2600 1257 0 0
>> 1259 0.00 99.54 8.56 90.77 -4
>> 0 11 38 7 0.66 1018 2600 1255 0 3
>> 1252 0.19 99.36 8.57
>> 0 12 11 7 0.67 1019 2600 1260 0 0
>> 1260 0.00 99.54 8.44 90.88 -4
>> 0 12 39 7 0.67 1019 2600 1255 0 0
>> 1256 0.00 99.55 8.44
>> 0 13 12 7 0.68 1019 2600 1257 0 4
>> 1254 0.32 99.22 8.67 90.65 -4
>> 0 13 40 7 0.69 1019 2600 1256 0 4
>> 1253 0.24 99.31 8.66
>> 0 14 13 7 0.71 1020 2600 1260 0 0
>> 1259 0.00 99.53 8.41 90.88 -4
>> 0 14 41 7 0.72 1020 2600 1255 0 0
>> 1255 0.00 99.54 8.40
>> 1 0 14 3564 99.19 3594 2600 125472 0 0
>> 0 0.00 0.00 0.81 0.00 54 54 65.15 10.74 0.00
>> 0.00
>> 1 0 42 3 0.07 3701 2600 1255 0 0
>> 1255 0.00 99.95 99.93
>> 1 1 15 11 0.32 3301 2600 1257 0 0
>> 1257 0.00 99.81 26.37 73.31 42
>> 1 1 43 10 0.31 3301 2600 1255 0 0
>> 1255 0.00 99.82 26.38
>> 1 2 16 10 0.31 3301 2600 1257 0 0
>> 1257 0.00 99.81 26.37 73.32 39
>> 1 2 44 10 0.32 3301 2600 1255 0 0
>> 1255 0.00 99.82 26.36
>> 1 3 17 10 0.32 3301 2600 1257 0 0
>> 1257 0.00 99.81 26.40 73.28 39
>> 1 3 45 11 0.32 3301 2600 1255 0 0
>> 1255 0.00 99.81 26.40
>> 1 4 18 10 0.32 3301 2600 1257 0 0
>> 1257 0.00 99.82 26.40 73.28 40
>> 1 4 46 11 0.32 3301 2600 1255 0 0
>> 1255 0.00 99.82 26.40
>> 1 5 19 11 0.33 3301 2600 1257 0 0
>> 1257 0.00 99.81 26.40 73.27 39
>> 1 5 47 11 0.33 3300 2600 1255 0 0
>> 1255 0.00 99.82 26.40
>> 1 6 20 12 0.35 3301 2600 1257 0 0
>> 1257 0.00 99.81 26.38 73.27 42
>> 1 6 48 12 0.36 3301 2600 1255 0 0
>> 1255 0.00 99.81 26.37
>> 1 8 21 11 0.33 3301 2600 1257 0 0
>> 1257 0.00 99.82 26.37 73.29 42
>> 1 8 49 11 0.33 3301 2600 1255 0 0
>> 1255 0.00 99.82 26.38
>> 1 9 22 10 0.32 3300 2600 1257 0 0
>> 1257 0.00 99.82 26.35 73.34 41
>> 1 9 50 10 0.30 3301 2600 1255 0 0
>> 1255 0.00 99.82 26.36
>> 1 10 23 10 0.31 3301 2600 1257 0 0
>> 1257 0.00 99.82 26.37 73.33 41
>> 1 10 51 10 0.31 3301 2600 1255 0 0
>> 1255 0.00 99.82 26.36
>> 1 11 24 10 0.32 3301 2600 1257 0 0
>> 1257 0.00 99.81 26.62 73.06 41
>> 1 11 52 10 0.32 3301 2600 1255 0 4
>> 1251 0.32 99.50 26.62
>> 1 12 25 11 0.33 3301 2600 1257 0 0
>> 1257 0.00 99.81 26.39 73.28 41
>> 1 12 53 11 0.33 3301 2600 1258 0 0
>> 1254 0.00 99.82 26.38
>> 1 13 26 12 0.36 3317 2600 1259 0 0
>> 1258 0.00 99.79 26.41 73.23 39
>> 1 13 54 11 0.34 3301 2600 1255 0 0
>> 1254 0.00 99.82 26.42
>> 1 14 27 12 0.36 3301 2600 1257 0 5
>> 1251 0.24 99.58 26.54 73.10 41
>> 1 14 55 12 0.36 3300 2600 1255 0 0
>> 1254 0.00 99.82 26.54
>>
>>
>> So it looks like in all tests i'm using core+sibling
>> But side effect of this is that :
>> 33 * 100.0 = 3300.0 MHz max turbo 28 active cores
>> 33 * 100.0 = 3300.0 MHz max turbo 24 active cores
>> 33 * 100.0 = 3300.0 MHz max turbo 20 active cores
>> 33 * 100.0 = 3300.0 MHz max turbo 14 active cores
>> 34 * 100.0 = 3400.0 MHz max turbo 12 active cores
>> 34 * 100.0 = 3400.0 MHz max turbo 8 active cores
>> 35 * 100.0 = 3500.0 MHz max turbo 4 active cores
>> 37 * 100.0 = 3700.0 MHz max turbo 2 active cores
>>
>> So more cores = less MHz per core/sibling
> Yes that is always a trade off. Also the ixgbe is limited in terms of
> PCIe bus bandwidth. The more queues you add the worse the descriptor
> overhead will be. Generally I have found that about 6 queues is ideal.
> As you start getting to more than 8 the performance for 64B packets
> will start to drop off as each additional queue will hurt the
> descriptor cache performance as it starts writing back fewer and fewer
> descriptors per write which will increase the PCIe bus overhead for
> the writes.
>
>>>> perf top:
>>>>
>>>> PerfTop: 77835 irqs/sec kernel:99.7% exact: 0.0% [4000Hz
>>>> cycles], (all, 56 CPUs)
>>>>
>>>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>>
>>>> 16.32% [kernel] [k] skb_dst_force
>>>> 16.30% [kernel] [k] dst_release
>>>> 15.11% [kernel] [k] rt_cache_valid
>>>> 12.62% [kernel] [k] ipv4_mtu
>>> It seems a little strange that these 4 functions are on the top
>> Yes dono why there is ipv4_mtu called and taking soo much cycles
>>
>>>> 5.60% [kernel] [k] do_raw_spin_lock
>>> Why is calling/taking this lock? (Use perf call-graph recording).
>> can be hard to paste it here:)
>> attached file
>>
>>>> 3.03% [kernel] [k] fib_table_lookup
>>>> 2.70% [kernel] [k] ip_finish_output2
>>>> 2.10% [kernel] [k] dev_gro_receive
>>>> 1.89% [kernel] [k] eth_type_trans
>>>> 1.81% [kernel] [k] ixgbe_poll
>>>> 1.15% [kernel] [k] ixgbe_xmit_frame_ring
>>>> 1.06% [kernel] [k] __build_skb
>>>> 1.04% [kernel] [k] __dev_queue_xmit
>>>> 0.97% [kernel] [k] ip_rcv
>>>> 0.78% [kernel] [k] netif_skb_features
>>>> 0.74% [kernel] [k] ipt_do_table
>>> Unloading netfilter modules, will give more performance, but it
>>> semifake to do so.
>> Compiled in kernel - only in filter mode - with ipv4+ipv6 - no other modules
>> conntrack or other .
>>
>>>> 0.70% [kernel] [k] acpi_processor_ffh_cstate_enter
>>>> 0.64% [kernel] [k] ip_forward
>>>> 0.59% [kernel] [k] __netif_receive_skb_core
>>>> 0.55% [kernel] [k] dev_hard_start_xmit
>>>> 0.53% [kernel] [k] ip_route_input_rcu
>>>> 0.53% [kernel] [k] ip_rcv_finish
>>>> 0.51% [kernel] [k] page_frag_free
>>>> 0.50% [kernel] [k] kmem_cache_alloc
>>>> 0.50% [kernel] [k] udp_v4_early_demux
>>>> 0.44% [kernel] [k] skb_release_data
>>>> 0.42% [kernel] [k] inet_gro_receive
>>>> 0.40% [kernel] [k] sch_direct_xmit
>>>> 0.39% [kernel] [k] __local_bh_enable_ip
>>>> 0.33% [kernel] [k] netdev_pick_tx
>>>> 0.33% [kernel] [k] validate_xmit_skb
>>>> 0.28% [kernel] [k] fib_validate_source
>>>> 0.27% [kernel] [k] deliver_ptype_list_skb
>>>> 0.25% [kernel] [k] eth_header
>>>> 0.23% [kernel] [k] get_dma_ops
>>>> 0.22% [kernel] [k] skb_network_protocol
>>>> 0.21% [kernel] [k] ip_output
>>>> 0.21% [kernel] [k] vlan_dev_hard_start_xmit
>>>> 0.20% [kernel] [k] ixgbe_alloc_rx_buffers
>>>> 0.18% [kernel] [k] nf_hook_slow
>>>> 0.18% [kernel] [k] apic_timer_interrupt
>>>> 0.18% [kernel] [k] virt_to_head_page
>>>> 0.18% [kernel] [k] build_skb
>>>> 0.16% [kernel] [k] swiotlb_map_page
>>>> 0.16% [kernel] [k] ip_finish_output
>>>> 0.16% [kernel] [k] udp4_gro_receive
>>>>
>>>>
>>>> RESULTS:
>>>>
>>>> CSV format - delimeter ";"
>>>>
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;1;64;1470912;88247040;1470720;85305530
>>>> 1;1;64;1470912;88285440;1470977;85335110
>>>> 2;1;64;1470464;88247040;1470402;85290508
>>>> 3;1;64;1471424;88262400;1471230;85353728
>>>> 4;1;64;1468736;88166400;1468672;85201652
>>>> 5;1;64;1470016;88181760;1469949;85234944
>>>> 6;1;64;1470720;88247040;1470466;85290624
>>>> 7;1;64;1471232;88277760;1471167;85346246
>>>> 8;1;64;1469184;88170240;1469249;85216326
>>>> 9;1;64;1470592;88227840;1470847;85294394
>>> Single core 1.47Mpps seems a little low, I would expect 2Mpps.
>>>
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;2;64;2413120;144802560;2413245;139975924
>>>> 1;2;64;2415296;144913920;2415356;140098188
>>>> 2;2;64;2416768;144898560;2416573;140105670
>>>> 3;2;64;2418176;145056000;2418110;140261806
>>>> 4;2;64;2416512;144990720;2416509;140172950
>>>> 5;2;64;2415168;144860160;2414466;140064780
>>>> 6;2;64;2416960;144983040;2416833;140190930
>>>> 7;2;64;2413632;144768000;2413568;140001734
>>>> 8;2;64;2415296;144898560;2414589;140087168
>>>> 9;2;64;2416576;144963840;2416892;140190930
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;3;64;3419008;205155840;3418882;198239244
>>>> 1;3;64;3428032;205585920;3427971;198744234
>>>> 2;3;64;3425472;205536000;3425344;198677260
>>>> 3;3;64;3425088;205470720;3425156;198603136
>>>> 4;3;64;3427648;205693440;3426883;198773888
>>>> 5;3;64;3426880;205670400;3427392;198796044
>>>> 6;3;64;3429120;205678080;3430140;198848186
>>>> 7;3;64;3422976;205355520;3423490;198458136
>>>> 8;3;64;3423168;205336320;3423486;198495372
>>>> 9;3;64;3424384;205493760;3425538;198617868
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;4;64;4406464;264364800;4405244;255560296
>>>> 1;4;64;4404672;264349440;4405122;255541504
>>>> 2;4;64;4402368;264049920;4403326;255188864
>>>> 3;4;64;4401344;264076800;4400702;255207134
>>>> 4;4;64;4385536;263074560;4386620;254312716
>>>> 5;4;64;4386560;263189760;4385404;254379532
>>>> 6;4;64;4398784;263857920;4399031;255025288
>>>> 7;4;64;4407232;264445440;4407998;255637900
>>>> 8;4;64;4413184;264698880;4413758;255875816
>>>> 9;4;64;4411328;264526080;4411906;255712372
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;5;64;5094464;305871360;5094464;295657262
>>>> 1;5;64;5090816;305514240;5091201;295274810
>>>> 2;5;64;5088384;305387520;5089792;295175108
>>>> 3;5;64;5079296;304869120;5079484;294680368
>>>> 4;5;64;5092992;305544960;5094207;295349166
>>>> 5;5;64;5092416;305502720;5093372;295334260
>>>> 6;5;64;5080896;304896000;5081090;294677004
>>>> 7;5;64;5085376;305114880;5086401;294933058
>>>> 8;5;64;5092544;305575680;5092036;295356938
>>>> 9;5;64;5093056;305652480;5093832;295449506
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;6;64;5705088;342351360;5705784;330965110
>>>> 1;6;64;5710272;342743040;5707591;331373952
>>>> 2;6;64;5703424;342182400;5701826;330776552
>>>> 3;6;64;5708736;342604800;5707963;331147462
>>>> 4;6;64;5710144;342654720;5712067;331202910
>>>> 5;6;64;5712064;342777600;5711361;331292288
>>>> 6;6;64;5710144;342585600;5708607;331144272
>>>> 7;6;64;5699840;342021120;5697853;330609222
>>>> 8;6;64;5701184;342124800;5702909;330653592
>>>> 9;6;64;5711360;342735360;5713283;331247686
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;7;64;6244416;374603520;6243591;362180072
>>>> 1;7;64;6230912;374016000;6231490;361534126
>>>> 2;7;64;6244800;374776320;6244866;362224326
>>>> 3;7;64;6238720;374376960;6238261;361838510
>>>> 4;7;64;6218816;373079040;6220413;360683962
>>>> 5;7;64;6224320;373566720;6225086;361017404
>>>> 6;7;64;6224000;373570560;6221370;360936088
>>>> 7;7;64;6210048;372741120;6210627;360212654
>>>> 8;7;64;6231616;374035200;6231537;361445502
>>>> 9;7;64;6227840;373724160;6228802;361162752
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;8;64;6251840;375144960;6251849;362609678
>>>> 1;8;64;6250816;375014400;6250881;362547038
>>>> 2;8;64;6257728;375432960;6257160;362911104
>>>> 3;8;64;6255552;375325440;6255622;362822074
>>>> 4;8;64;6243776;374576640;6243270;362120622
>>>> 5;8;64;6237184;374296320;6237690;361790080
>>>> 6;8;64;6240960;374415360;6240714;361927366
>>>> 7;8;64;6222784;373317120;6223746;360854424
>>>> 8;8;64;6225920;373593600;6227014;361154980
>>>> 9;8;64;6238528;374304000;6237701;361845238
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;14;64;6486144;389184000;6486135;376236488
>>>> 1;14;64;6454912;387390720;6454222;374466734
>>>> 2;14;64;6441152;386480640;6440431;373572780
>>>> 3;14;64;6450240;386972160;6450870;374070014
>>>> 4;14;64;6465600;387997440;6467221;375089654
>>>> 5;14;64;6448384;386860800;6448000;373980230
>>>> 6;14;64;6452352;387095040;6452148;374168904
>>>> 7;14;64;6441984;386507520;6443203;373665058
>>>> 8;14;64;6456704;387340800;6455744;374429092
>>>> 9;14;64;6464640;387901440;6465218;374949004
>>>> ID;CPU_CORES / RSS QUEUES;PKT_SIZE;PPS_RX;BPS_RX;PPS_TX;BPS_TX
>>>> 0;16;64;6939008;416325120;6938696;402411192
>>>> 1;16;64;6941952;416444160;6941745;402558918
>>>> 2;16;64;6960576;417584640;6960707;403698718
>>>> 3;16;64;6940736;416486400;6941820;402503876
>>>> 4;16;64;6927680;415741440;6927420;401853870
>>>> 5;16;64;6929792;415687680;6929917;401839196
>>>> 6;16;64;6950400;416989440;6950661;403026166
>>>> 7;16;64;6953664;417216000;6953454;403260544
>>>> 8;16;64;6948480;416851200;6948800;403023266
>>>> 9;16;64;6924160;415422720;6924092;401542468
>>> I've seen Linux scale beyond 6.9Mpps, thus I also see this as an
>>> issue/bug. You could be stalling on DMA TX completion being too slow,
>>> but you already increased the interval and increased the TX ring queue
>>> size. You could play with those setting and see if it changes this?
>>>
>>> Could you try my napi_monitor tool in:
>>>
>>> https://github.com/netoptimizer/prototype-kernel/tree/master/kernel/samples/bpf
>>>
>>> Also provide the output from:
>>> mpstat -P ALL -u -I SCPU -I SUM 2
>> with 16 cores / 16 RSS queues
>> Average: CPU %usr %nice %sys %iowait %irq %soft %steal
>> %guest %gnice %idle
>> Average: all 0.00 0.00 0.01 0.00 0.00 28.57 0.00
>> 0.00 0.00 71.42
>> Average: 0 0.00 0.00 0.04 0.00 0.00 0.08 0.00
>> 0.00 0.00 99.88
>> Average: 1 0.00 0.00 0.12 0.00 0.00 0.00 0.00
>> 0.00 0.00 99.88
>> Average: 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 8 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 9 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 10 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 11 0.08 0.00 0.04 0.00 0.00 0.00 0.00
>> 0.00 0.00 99.88
>> Average: 12 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 13 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 14 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 15 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 16 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 17 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 18 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 19 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 20 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 21 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 22 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 23 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 24 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 25 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 26 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 27 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 28 0.00 0.00 0.04 0.00 0.00 0.00 0.00
>> 0.00 0.00 99.96
>> Average: 29 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 30 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 31 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 32 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 33 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 34 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 35 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 36 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 37 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 38 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 39 0.04 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 99.96
>> Average: 40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 41 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 42 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 43 0.00 0.00 0.00 0.00 0.00 100.00 0.00
>> 0.00 0.00 0.00
>> Average: 44 0.00 0.00 0.04 0.17 0.00 0.00 0.00
>> 0.00 0.00 99.79
>> Average: 45 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 46 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 47 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 48 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 49 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 50 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 51 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 52 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 53 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 54 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>> Average: 55 0.00 0.00 0.00 0.00 0.00 0.00 0.00
>> 0.00 0.00 100.00
>>
>> Average: CPU intr/s
>> Average: all 123596.08
>> Average: 0 646.38
>> Average: 1 500.54
>> Average: 2 511.67
>> Average: 3 534.25
>> Average: 4 542.21
>> Average: 5 531.54
>> Average: 6 554.58
>> Average: 7 535.88
>> Average: 8 544.58
>> Average: 9 536.42
>> Average: 10 575.46
>> Average: 11 601.12
>> Average: 12 502.08
>> Average: 13 575.46
>> Average: 14 5917.92
>> Average: 15 5949.58
>> Average: 16 7021.29
>> Average: 17 7299.71
>> Average: 18 7391.67
>> Average: 19 7354.25
>> Average: 20 7543.42
>> Average: 21 7354.25
>> Average: 22 7322.33
>> Average: 23 7368.71
>> Average: 24 7429.00
>> Average: 25 7406.46
>> Average: 26 7400.67
>> Average: 27 7447.21
>> Average: 28 517.00
>> Average: 29 549.54
>> Average: 30 529.33
>> Average: 31 533.83
>> Average: 32 541.25
>> Average: 33 541.17
>> Average: 34 532.50
>> Average: 35 545.17
>> Average: 36 528.96
>> Average: 37 509.92
>> Average: 38 520.12
>> Average: 39 523.29
>> Average: 40 530.75
>> Average: 41 542.33
>> Average: 42 5921.71
>> Average: 43 5949.42
>> Average: 44 503.04
>> Average: 45 542.75
>> Average: 46 582.50
>> Average: 47 581.71
>> Average: 48 495.29
>> Average: 49 524.38
>> Average: 50 527.92
>> Average: 51 528.12
>> Average: 52 456.38
>> Average: 53 477.00
>> Average: 54 440.92
>> Average: 55 568.83
>>
>> Average: CPU HI/s TIMER/s NET_TX/s NET_RX/s BLOCK/s
>> IRQ_POLL/s TASKLET/s SCHED/s HRTIMER/s RCU/s
>> Average: 0 0.00 250.00 0.17 87.00 0.00 0.00
>> 45.46 250.00 0.00 13.75
>> Average: 1 0.00 233.42 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 17.21
>> Average: 2 0.00 249.04 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 12.67
>> Average: 3 0.00 249.92 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 34.42
>> Average: 4 0.00 248.67 0.17 0.00 0.00 0.00
>> 0.00 249.96 0.00 43.42
>> Average: 5 0.00 249.46 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 32.17
>> Average: 6 0.00 249.79 0.00 0.00 0.00 0.00
>> 0.00 249.87 0.00 54.92
>> Average: 7 0.00 240.12 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 45.79
>> Average: 8 0.00 247.42 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 47.25
>> Average: 9 0.00 249.29 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 37.17
>> Average: 10 0.00 248.75 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 76.79
>> Average: 11 0.00 249.29 0.00 0.00 0.00 0.00
>> 42.79 249.83 0.00 59.21
>> Average: 12 0.00 249.83 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 2.29
>> Average: 13 0.00 249.92 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 75.62
>> Average: 14 0.00 148.21 0.17 5758.04 0.00 0.00
>> 0.00 8.42 0.00 3.08
>> Average: 15 0.00 148.42 0.46 5789.25 0.00 0.00
>> 0.00 8.33 0.00 3.12
>> Average: 16 0.00 142.62 0.79 6866.46 0.00 0.00
>> 0.00 8.29 0.00 3.12
>> Average: 17 0.00 143.17 0.42 7145.00 0.00 0.00
>> 0.00 8.08 0.00 3.04
>> Average: 18 0.00 153.62 0.42 7226.42 0.00 0.00
>> 0.00 8.04 0.00 3.17
>> Average: 19 0.00 150.46 0.46 7192.21 0.00 0.00
>> 0.00 8.04 0.00 3.08
>> Average: 20 0.00 145.21 0.17 7386.50 0.00 0.00
>> 0.00 8.29 0.00 3.25
>> Average: 21 0.00 150.96 0.46 7191.37 0.00 0.00
>> 0.00 8.25 0.00 3.21
>> Average: 22 0.00 146.67 0.54 7163.96 0.00 0.00
>> 0.00 8.04 0.00 3.12
>> Average: 23 0.00 151.38 0.42 7205.75 0.00 0.00
>> 0.00 8.00 0.00 3.17
>> Average: 24 0.00 153.33 0.17 7264.12 0.00 0.00
>> 0.00 8.08 0.00 3.29
>> Average: 25 0.00 153.21 0.17 7241.83 0.00 0.00
>> 0.00 7.96 0.00 3.29
>> Average: 26 0.00 153.96 0.17 7234.88 0.00 0.00
>> 0.00 8.38 0.00 3.29
>> Average: 27 0.00 151.71 0.79 7283.25 0.00 0.00
>> 0.00 8.04 0.00 3.42
>> Average: 28 0.00 245.71 0.00 0.00 0.00 0.00
>> 0.00 249.50 0.00 21.79
>> Average: 29 0.00 233.21 0.00 0.00 0.00 0.00
>> 0.00 249.87 0.00 66.46
>> Average: 30 0.00 248.92 0.00 0.00 0.00 0.00
>> 0.00 250.00 0.00 30.42
>> Average: 31 0.00 249.92 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 33.96
>> Average: 32 0.00 248.67 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 42.62
>> Average: 33 0.00 249.46 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 41.79
>> Average: 34 0.00 249.79 0.00 0.00 0.00 0.00
>> 0.00 249.87 0.00 32.83
>> Average: 35 0.00 240.12 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 55.08
>> Average: 36 0.00 247.42 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 31.58
>> Average: 37 0.00 249.29 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 10.71
>> Average: 38 0.00 248.75 0.00 0.00 0.00 0.00
>> 0.00 249.87 0.00 21.50
>> Average: 39 0.00 249.50 0.00 0.00 0.00 0.00
>> 0.00 249.83 0.00 23.96
>> Average: 40 0.00 249.83 0.00 0.00 0.00 0.00
>> 0.00 249.96 0.00 30.96
>> Average: 41 0.00 249.92 0.00 0.00 0.00 0.00
>> 0.00 249.92 0.00 42.50
>> Average: 42 0.00 148.38 0.71 5761.00 0.00 0.00
>> 0.00 8.25 0.00 3.38
>> Average: 43 0.00 147.21 0.50 5790.33 0.00 0.00
>> 0.00 8.00 0.00 3.38
>> Average: 44 0.00 248.96 0.00 0.00 0.00 0.00
>> 0.00 248.13 0.00 5.96
>> Average: 45 0.00 249.04 0.00 0.00 0.00 0.00
>> 0.00 248.88 0.00 44.83
>> Average: 46 0.00 248.96 0.00 0.00 0.00 0.00
>> 0.00 248.58 0.00 84.96
>> Average: 47 0.00 249.00 0.00 0.00 0.00 0.00
>> 0.00 248.75 0.00 83.96
>> Average: 48 0.00 249.12 0.00 0.00 0.00 0.00
>> 0.00 132.83 0.00 113.33
>> Average: 49 0.00 249.12 0.00 0.00 0.00 0.00
>> 0.00 248.62 0.00 26.62
>> Average: 50 0.00 248.92 0.00 0.00 0.00 0.00
>> 0.00 248.58 0.00 30.42
>> Average: 51 0.00 249.08 0.00 0.00 0.00 0.00
>> 0.00 248.42 0.00 30.63
>> Average: 52 0.00 249.21 0.00 0.00 0.00 0.00
>> 0.00 131.96 0.00 75.21
>> Average: 53 0.00 249.08 0.00 0.00 0.00 0.00
>> 0.00 136.12 0.00 91.79
>> Average: 54 0.00 249.00 0.00 0.00 0.00 0.00
>> 0.00 136.79 0.00 55.12
>> Average: 55 0.00 249.04 0.00 0.00 0.00 0.00
>> 0.00 248.71 0.00 71.08
>>
>>
>>
>
^ permalink raw reply
* Re: [PATCH net] datagram: When peeking datagrams with offset < 0 don't skip empty skbs
From: Willem de Bruijn @ 2017-08-14 15:03 UTC (permalink / raw)
To: Matthew Dawson; +Cc: Paolo Abeni, Network Development, Macieira, Thiago
In-Reply-To: <1846443.VTclhqQinN@ring00>
> I'm actually surprised that only unix sockets can have negative values. Is
> there a reason for that? I had assumed that sk_set_peek_off would allow
> negative values as the code already has to support negative values due to what
> the initial value is.
A negative initial value indicates that PEEK_OFF is disabled. It only
makes sense to peek from a positive offset from the start of the data.
>> I'm wondering adding an explicit SOCK_PEEK_OFF/MSG_PEEK_OFF socket flag
>> would help simplyifing the code:
The behavior needs to be bifurcated between peeking with
offset and without offset.
When peeking with offset is enabled by setting SO_PEEK_OFF,
subsequent reads do move the offset, so the observed behavior
is correct.
When sk->sk_peek_offset is negative, offset mode is disabled
and the same packet must be read twice.
An explicit boolean flag to discern between the two may make
the code simpler to understand, not sure whether that is logically
required.
>> no need for negative offset; set such
>> flag when SOL_SOCKET/SO_PEEK_OFF with a non negative value is called
>> (and clear it when a negative value is used), forward such flag to
>> __skb_try_recv_datagram/__skb_try_recv_from_queue and use it to select
>> the proper peek behaviour.
> The negative value is documented and supported for unix sockets, so I don't
> think we can just reject all negative values.
What is the documented behavior on those sockets? The original
patch that introduced it explicitly mentions peek mode as disabled
when the value is negative:
https://www.spinics.net/lists/netdev/msg189589.html
> However, I do see a way to
> implement that while supporting user space sending negative values. If that
> is preferred let me know and I'll see what I can make.
>
> I assume that would make this patch target net-next?
I suspect that we can fix this with a small enough patch to be able
to send to net.
> Would it be possible to
> pull this into net so it can fix this regression for the next kernel release,
> while I work on getting the better solution finished? I'm happy to to make
> __skb_try_recv_datagram/__skb_try_recv_from_queue accept the extra parameter
> so they don't see an offset less then 0 in this patch.
>
> --
> Matthew
^ permalink raw reply
* Re: [PATCH net] udp: consistently apply ufo or fragmentation
From: Willem de Bruijn @ 2017-08-14 14:53 UTC (permalink / raw)
To: Vasily Averin
Cc: Linux Kernel Network Developers, Willem de Bruijn,
David S. Miller, Andrey Konovalov
In-Reply-To: <a9b32d53-5b3c-9596-7309-e56e3945a110@virtuozzo.com>
> ip*_ufo_append_data() is called now for each skb_is_gso() packet.
> Before the patch it was called for UDP packets only.
>
> Could you please clarify, is it correct?
__ip_append_data is called for udp, raw, icmp and ping sockets.
Of these, only udp packets have a path to get skb_is_gso() set:
when __ip_append_data has been called before on this packet
(using MSG_MORE) and the path entered ip_ufo_append_data
in that call through the other conditions in the branch, which
include sk->sk_type == SOCK_DGRAM.
This function is not reached from other segmentable protocols
like tcp, which call ip_queue_xmit in the ip layer. The exceptions
are sending in ip_send_unicast_reply, but those will not have gso.
^ permalink raw reply
* Re: [PATCH net] datagram: When peeking datagrams with offset < 0 don't skip empty skbs
From: Matthew Dawson @ 2017-08-14 14:05 UTC (permalink / raw)
To: Paolo Abeni; +Cc: netdev, Macieira, Thiago, willemdebruijn.kernel
In-Reply-To: <1502702846.8411.25.camel@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 4132 bytes --]
On Monday, August 14, 2017 5:27:26 AM EDT Paolo Abeni wrote:
> On Mon, 2017-08-14 at 01:52 -0400, Matthew Dawson wrote:
> > Due to commit e6afc8ace6dd5cef5e812f26c72579da8806f5ac ("udp: remove
> > headers from UDP packets before queueing"), when udp packets are being
> > peeked the requested extra offset is always 0 as there is no need to skip
> > the udp header. However, when the offset is 0 and the next skb is
> > of length 0, it is only returned once. The behaviour can be seen with
> > the following python script:
> >
> > #!/usr/bin/env python3
> > from socket import *;
> > f=socket(AF_INET6, SOCK_DGRAM | SOCK_NONBLOCK, 0);
> > g=socket(AF_INET6, SOCK_DGRAM | SOCK_NONBLOCK, 0);
> > f.bind(('::', 0));
> > addr=('::1', f.getsockname()[1]);
> > g.sendto(b'', addr)
> > g.sendto(b'b', addr)
> > print(f.recvfrom(10, MSG_PEEK));
> > print(f.recvfrom(10, MSG_PEEK));
> >
> > Where the expected output should be the empty string twice.
> >
> > Instead, make sk_peek_offset return negative values, and pass those values
> > to __skb_try_recv_datagram/__skb_try_recv_from_queue. If the passed
> > offset
> > to __skb_try_recv_from_queue is negative, the checked skb is never
> > skipped.
> > After the call, the offset is set to 0 if negative to ensure all further
> > calculations are correct.
> >
> > Also simplify the if condition in __skb_try_recv_from_queue. If _off is
> > greater then 0, and off is greater then or equal to skb->len, then (_off
> > ||
> > skb->len) must always be true assuming skb->len >= 0 is always true.
> >
> > Also remove a redundant check around a call to sk_peek_offset in
> > af_unix.c,
> > as it double checked if MSG_PEEK was set in the flags.
> >
> > Signed-off-by: Matthew Dawson <matthew@mjdsystems.ca>
> > ---
> >
> > include/net/sock.h | 4 +---
> > net/core/datagram.c | 4 ++--
> > net/ipv4/udp.c | 4 ++++
> > net/ipv6/udp.c | 4 ++++
> > net/unix/af_unix.c | 8 +++++---
> > 5 files changed, 16 insertions(+), 8 deletions(-)
> >
> > diff --git a/include/net/sock.h b/include/net/sock.h
> > index 7c0632c7e870..aeeec62992ca 100644
> > --- a/include/net/sock.h
> > +++ b/include/net/sock.h
> > @@ -507,9 +507,7 @@ int sk_set_peek_off(struct sock *sk, int val);
> >
> > static inline int sk_peek_offset(struct sock *sk, int flags)
> > {
> >
> > if (unlikely(flags & MSG_PEEK)) {
> >
> > - s32 off = READ_ONCE(sk->sk_peek_off);
> > - if (off >= 0)
> > - return off;
> > + return READ_ONCE(sk->sk_peek_off);
> >
> > }
> >
> > return 0;
>
> You probably want/must also update sk_set_peek_off() to allow negative
> values, elsewhere this will break as soon as the user will do
> SOL_SOCKET/SO_PEEK_OFF.
I'm happy to do this either in this patch or as a second patch and make this a
series, whatever the networking community prefers.
I'm actually surprised that only unix sockets can have negative values. Is
there a reason for that? I had assumed that sk_set_peek_off would allow
negative values as the code already has to support negative values due to what
the initial value is.
> I'm wondering adding an explicit SOCK_PEEK_OFF/MSG_PEEK_OFF socket flag
> would help simplyifing the code: no need for negative offset; set such
> flag when SOL_SOCKET/SO_PEEK_OFF with a non negative value is called
> (and clear it when a negative value is used), forward such flag to
> __skb_try_recv_datagram/__skb_try_recv_from_queue and use it to select
> the proper peek behaviour.
The negative value is documented and supported for unix sockets, so I don't
think we can just reject all negative values. However, I do see a way to
implement that while supporting user space sending negative values. If that
is preferred let me know and I'll see what I can make.
I assume that would make this patch target net-next? Would it be possible to
pull this into net so it can fix this regression for the next kernel release,
while I work on getting the better solution finished? I'm happy to to make
__skb_try_recv_datagram/__skb_try_recv_from_queue accept the extra parameter
so they don't see an offset less then 0 in this patch.
--
Matthew
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [patch v2 2/2] Change Kconfig description
From: Jiri Pirko @ 2017-08-14 13:55 UTC (permalink / raw)
To: Ohad Oz; +Cc: davem, netdev, saeedm, vadimp, system-sw-low-level
In-Reply-To: <1502725102-182550-3-git-send-email-ohado@mellanox.com>
Mon, Aug 14, 2017 at 05:38:22PM CEST, ohado@mellanox.com wrote:
>This patch apply Mellanox network vendor which includes:
>- Mellanox card devices: ConnectX-4, ConnectX-5 and Connect-IB cards.
>- Mellanox switch device: SwitchX-2 Switch-IB, Spectrum.
>Therefore rephrasing help.
>
>Signed-off-by: Ohad Oz <ohado@mellanox.com>
>Acked-by: Leon Romanovsky <leonro@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
^ permalink raw reply
* Re: [patch v2 1/2] Allow Mellanox switch devices to be configured if only I2C bus is set
From: Jiri Pirko @ 2017-08-14 13:55 UTC (permalink / raw)
To: Ohad Oz; +Cc: davem, netdev, saeedm, vadimp, system-sw-low-level
In-Reply-To: <1502725102-182550-2-git-send-email-ohado@mellanox.com>
Mon, Aug 14, 2017 at 05:38:21PM CEST, ohado@mellanox.com wrote:
>Mellanox switches (mlxsw) supports I2C systems without PCI, in order to
>give the ability to the users to use such functionality, there is need
>to update Kconfig.
>
>Signed-off-by: Ohad Oz <ohado@mellanox.com>
>Acked-by: Leon Romanovsky <leonro@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
^ permalink raw reply
* Re: [PATCH v2] net: phy: Use tab for indentation in Kconfig
From: Michal Simek @ 2017-08-14 13:51 UTC (permalink / raw)
To: Andrew Lunn, Michal Simek
Cc: linux-kernel, monstr, David Miller, netdev, Florian Fainelli
In-Reply-To: <20170811133312.GA25615@lunn.ch>
On 11.8.2017 15:33, Andrew Lunn wrote:
> On Fri, Aug 11, 2017 at 02:48:53PM +0200, Michal Simek wrote:
>> Using tabs instead of space for indentaion
>>
>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
>
> Hi Michal
>
> Thanks for rebasing.
>
> FYI:
>
> It is normal to put net-next in the patch subject to indicate this:
>
> [Patch v2 net-next] Using tabs instead of space for indentaion
>
> Ah! I just noticed. 'indentation' has a second T.
ok. I have sent v3 with this fix and add net-next there.
Thanks,
Michal
^ permalink raw reply
* [PATCH net-next v3] net: phy: Use tab for indentation in Kconfig
From: Michal Simek @ 2017-08-14 13:43 UTC (permalink / raw)
To: linux-kernel, monstr; +Cc: David Miller, netdev, Andrew Lunn, Florian Fainelli
Using tabs instead of space for indentation.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
Changes in v3:
- Fix commit message s/indentaion/indentation./
reported-by Andrew Lunn
- Rebase on the top of net-next.
HEAD commit: f5b589488ea5ed3bb6168b1a4e7f7b95841d8513
Changes in v2:
- Rebased on the top of net-next.
HEAD commit: 3b2b69efeca734b78bc85fd02253b0465bb2bec7
Suggested by David Miller
drivers/net/phy/Kconfig | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 8c919203291a..5afe6fdcc968 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -5,7 +5,7 @@
menuconfig MDIO_DEVICE
tristate "MDIO bus device drivers"
help
- MDIO devices and driver infrastructure code.
+ MDIO devices and driver infrastructure code.
config MDIO_BUS
tristate
@@ -117,11 +117,11 @@ config MDIO_I2C
This is library mode.
config MDIO_MOXART
- tristate "MOXA ART MDIO interface support"
- depends on ARCH_MOXART
- help
- This driver supports the MDIO interface found in the network
- interface units of the MOXA ART SoC
+ tristate "MOXA ART MDIO interface support"
+ depends on ARCH_MOXART
+ help
+ This driver supports the MDIO interface found in the network
+ interface units of the MOXA ART SoC
config MDIO_OCTEON
tristate "Octeon and some ThunderX SOCs MDIO buses"
@@ -192,7 +192,7 @@ config LED_TRIGGER_PHY
state change will trigger the events, for consumption by an
LED class driver. There are triggers for each link speed currently
supported by the phy, and are of the form:
- <mii bus id>:<phy>:<speed>
+ <mii bus id>:<phy>:<speed>
Where speed is in the form:
<Speed in megabits>Mbps or <Speed in gigabits>Gbps
@@ -211,9 +211,9 @@ config AMD_PHY
Currently supports the am79c874
config AQUANTIA_PHY
- tristate "Aquantia PHYs"
- ---help---
- Currently supports the Aquantia AQ1202, AQ2104, AQR105, AQR405
+ tristate "Aquantia PHYs"
+ ---help---
+ Currently supports the Aquantia AQ1202, AQ2104, AQR105, AQR405
config AT803X_PHY
tristate "AT803X PHYs"
@@ -382,21 +382,21 @@ config STE10XP
This is the driver for the STe100p and STe101p PHYs.
config TERANETICS_PHY
- tristate "Teranetics PHYs"
- ---help---
- Currently supports the Teranetics TN2020
+ tristate "Teranetics PHYs"
+ ---help---
+ Currently supports the Teranetics TN2020
config VITESSE_PHY
- tristate "Vitesse PHYs"
- ---help---
- Currently supports the vsc8244
+ tristate "Vitesse PHYs"
+ ---help---
+ Currently supports the vsc8244
config XILINX_GMII2RGMII
- tristate "Xilinx GMII2RGMII converter driver"
- ---help---
- This driver support xilinx GMII to RGMII IP core it provides
- the Reduced Gigabit Media Independent Interface(RGMII) between
- Ethernet physical media devices and the Gigabit Ethernet controller.
+ tristate "Xilinx GMII2RGMII converter driver"
+ ---help---
+ This driver support xilinx GMII to RGMII IP core it provides
+ the Reduced Gigabit Media Independent Interface(RGMII) between
+ Ethernet physical media devices and the Gigabit Ethernet controller.
endif # PHYLIB
--
1.9.1
^ permalink raw reply related
* [patch v2 1/2] Allow Mellanox switch devices to be configured if only I2C bus is set
From: Ohad Oz @ 2017-08-14 15:38 UTC (permalink / raw)
To: davem; +Cc: netdev, jiri, saeedm, vadimp, system-sw-low-level, Ohad Oz
In-Reply-To: <1502725102-182550-1-git-send-email-ohado@mellanox.com>
Mellanox switches (mlxsw) supports I2C systems without PCI, in order to
give the ability to the users to use such functionality, there is need
to update Kconfig.
Signed-off-by: Ohad Oz <ohado@mellanox.com>
Acked-by: Leon Romanovsky <leonro@mellanox.com>
---
v1->v2
Comments pointed out by Leon Romanovsky <leonro@mellanox.com>
- Rephrase change description.
---
drivers/net/ethernet/mellanox/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/Kconfig b/drivers/net/ethernet/mellanox/Kconfig
index 84a2007..0949741 100644
--- a/drivers/net/ethernet/mellanox/Kconfig
+++ b/drivers/net/ethernet/mellanox/Kconfig
@@ -5,7 +5,7 @@
config NET_VENDOR_MELLANOX
bool "Mellanox devices"
default y
- depends on PCI
+ depends on PCI || I2C
---help---
If you have a network (Ethernet) card belonging to this class, say Y.
--
2.1.4
^ permalink raw reply related
* [patch v2 0/2] Enable Mellanox switch device in I2C mode
From: Ohad Oz @ 2017-08-14 15:38 UTC (permalink / raw)
To: davem; +Cc: netdev, jiri, saeedm, vadimp, system-sw-low-level, Ohad Oz
The following patch set updates global to Mellanox Kconfig files to support
configuration of Mellanox Switch (mlxsw) without PCI and with I2C only.
Ohad Oz (2):
Allow Mellanox switch devices to be configured if only I2C bus is set
Change Kconfig description
drivers/net/ethernet/mellanox/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--
2.1.4
^ permalink raw reply
* [patch v2 2/2] Change Kconfig description
From: Ohad Oz @ 2017-08-14 15:38 UTC (permalink / raw)
To: davem; +Cc: netdev, jiri, saeedm, vadimp, system-sw-low-level, Ohad Oz
In-Reply-To: <1502725102-182550-1-git-send-email-ohado@mellanox.com>
This patch apply Mellanox network vendor which includes:
- Mellanox card devices: ConnectX-4, ConnectX-5 and Connect-IB cards.
- Mellanox switch device: SwitchX-2 Switch-IB, Spectrum.
Therefore rephrasing help.
Signed-off-by: Ohad Oz <ohado@mellanox.com>
Acked-by: Leon Romanovsky <leonro@mellanox.com>
---
v1->v2
Comments pointed out by Leon Romanovsky <leonro@mellanox.com>
- Include RDMA as part of mlnx network devices.
- Rephrase change description
---
drivers/net/ethernet/mellanox/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/Kconfig b/drivers/net/ethernet/mellanox/Kconfig
index 0949741..872548c 100644
--- a/drivers/net/ethernet/mellanox/Kconfig
+++ b/drivers/net/ethernet/mellanox/Kconfig
@@ -7,7 +7,8 @@ config NET_VENDOR_MELLANOX
default y
depends on PCI || I2C
---help---
- If you have a network (Ethernet) card belonging to this class, say Y.
+ If you have a network (Ethernet or RDMA) device belonging to this
+ class, say Y.
Note that the answer to this question doesn't directly affect the
kernel: saying N will just cause the configurator to skip all
--
2.1.4
^ permalink raw reply related
* Коммерческое предложение по рекламе в интернете
From: Дмитрий (Сервис рекламы) @ 2017-08-14 12:32 UTC (permalink / raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 470 bytes --]
Content-Type: text/plain; charset=UTF-8;
Здравствуйте!
Я скомпоновал коммерческое предложение - ознакомьтесь пожалуйста.
Если у Вас будут какие-то вопросы - звоните - объясню все более детально.
Также чтобы начать работу - мне нужен текст объявления.
С уважением, Дмитрий.
[-- Attachment #2: Type: text/plain, Size: 129716 bytes --]
Content-Type: application/msword; name="rassilki.doc"
Content-Transfer-Encoding: base64
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAAsgAAAAAAAAAA
EAAAtQAAAAEAAAD+////AAAAALAAAACxAAAA////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////s
pcEAecAZBAAA8BK/AAAAAAAAEAAAAAAACAAAvnwAAA4AYmpiar0RvREAAAAAAAAAAAAAAAAAAAAA
AAAZBBYANMgAAN97AADfewAAOhEAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA
AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAABoPAAAAAAAAGg8AAJMc
AAAAAAAAkxwAAAAAAACTHAAAAAAAAJMcAAAAAAAAkxwAABQAAAAAAAAAAAAAAP////8AAAAApxwA
AAAAAACnHAAAAAAAAKccAAA4AAAA3xwAADQAAAATHQAARAIAAKccAAAAAAAAezEAABoCAABXHwAA
AAAAAFcfAAAAAAAAVx8AAAAAAABXHwAAAAAAAFcfAAAAAAAARiAAAAAAAABGIAAAAAAAAEYgAAAA
AAAAEjEAAAIAAAAUMQAAAAAAABQxAAAAAAAAFDEAAAAAAAAUMQAAAAAAABQxAAAAAAAAFDEAAAAA
AACVMwAAsgIAAEc2AAA+AAAAFDEAACEAAAAAAAAAAAAAAAAAAAAAAAAAkxwAAAAAAABGIAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABGIAAAAAAAAEYgAAAAAAAARiAAAAAAAABGIAAAAAAAABQxAAAAAAAA
AAAAAAAAAACTHAAAAAAAAJMcAAAAAAAAVx8AAAAAAAAAAAAAAAAAAFcfAADvAAAANTEAABYAAAD6
IQAAAAAAAPohAAAAAAAA+iEAAAAAAABGIAAAcAAAAJMcAAAAAAAAVx8AAAAAAACTHAAAAAAAAFcf
AAAAAAAAEjEAAAAAAAAAAAAAAAAAAPohAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAARiAAAAAAAAASMQAAAAAAAAAAAAAAAAAA+iEAAAAAAAD6IQAA
OgAAADInAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcicAAAAAAABXHwAAAAAAAP////8AAAAA8KMP97AR
0wEAAAAAAAAAAP////8AAAAAtiAAAEAAAABeJwAACgAAAAAAAAAAAAAA/jAAABQAAABLMQAAMAAA
AHsxAAAAAAAAaCcAAAoAAACFNgAAAAAAAPYgAACUAAAAhTYAABQAAAByJwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy
JwAAEAgAAIU2AAAAAAAAAAAAAAAAAACTHAAAAAAAAIIvAAB8AQAARiAAAAAAAABGIAAAAAAAAPoh
AAAAAAAARiAAAAAAAABGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARiAA
AAAAAABGIAAAAAAAAEYgAAAAAAAAFDEAAAAAAAAUMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAiiEAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYgAAAA
AAAARiAAAAAAAABGIAAAAAAAAHsxAAAAAAAARiAAAAAAAABGIAAAAAAAAEYgAAAAAAAARiAAAAAA
AAAAAAAAAAAAAP////8AAAAA/////wAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAD/////AAAA
AP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA
/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAIU2AAAAAAAARiAAAAAAAABG
IAAAAAAAAEYgAAAAAAAARiAAAAAAAABGIAAAAAAAAEYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGIAAAAAAAAEYgAAAAAAAARiAA
AAAAAAAaDwAAPwwAAFkbAAA6AQAABQASAQAAGQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwEEAQh
BCEEHgQSBCsEFQQgACAEEAQhBCEEKwQbBBoEGAQLAA0AGgQ+BDwEPAQ1BEAERwQ1BEEEOgQ+BDUE
IAA/BEAENQQ0BDsEPgQ2BDUEPQQ4BDUEOgANAB8EQAQ1BDQEOwQwBDMEMAQ1BDwEIAA+BEAEMwQw
BD0EOAQ3BD4EMgQwBEIETAQgADwEMARBBEEEPgQyBEMETgQgAEAEMARBBEEESwQ7BDoEQwQgABIE
MARIBDUEOQQgAEAENQQ6BDsEMAQ8BEsEIAA/BD4EIAAwBDQEQAQ1BEEEMAQ8BCAAPwQ+BDsETAQ3
BD4EMgQwBEIENQQ7BDUEOQQgAE0EOwQ1BDoEQgRABD4EPQQ9BD4EOQQgAD8EPgRHBEIESwQuACAA
DQAgBD4EQQRBBDgETwQgACgAQAQwBEEEQQRLBDsEOgQ4BCAAPwQ+BCAAPwRABDUENAQ/BEAEOARP
BEIEOARPBDwEKQAHAAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EBwA4ACwA
NwAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcAOQAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+
BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAMAQ0BEAENQRBBDAEIABBBD4E
QgRABEMENAQ9BDgEOgQ+BDIEBwAxADIALAA2ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwAx
ADIAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcAHwRABDUENAQ/BEAEOARPBEIE
OARPBCAAKwAgADAENARABDUEQQQwBCAAQQQ+BEIEQARDBDQEPQQ4BDoEPgQyBCAAKAAxAC8AMgAg
ADEEMAQ3BEsEKQAHADYALAAzACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA3ACAAOQAwADAA
IABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAw
BDQEQAQ1BEEEMAQgAEEEPgRCBEAEQwQ0BD0EOAQ6BD4EMgQgACgAMQAvADMAIAAxBDAENwRLBCkA
BwA0ACwAMgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANgAgADkAMAAwACAAQARDBDEELgAH
AAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EBwAxACAAPAQ7BD0ELgAgADAE
NARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQgACgAQAQw
BEEEQQRLBDsEOgQ4BCAAPwQ+BCAARAQ4BDcEOARHBDUEQQQ6BDgEPAQgADsEOARGBDAEPAQpAAcA
BwAgBD4EQQRBBDgETwQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcAMgA0ACAAPAQ7BD0ELgAg
ADAENARABDUEQQQ+BDIEBwAyADUAIAAwADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcA
JwQwBEEEQgQ9BEsENQQgADsEOARGBDAEIAAoADEALwAyACAAMQQwBDcESwQpAAcAOQAgADwEOwQ9
BC4AIAAwBDQEQAQ1BEEEPgQyBAcAMQAyACAANQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgE
TwQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBCAAKAAxAC8AMwAgADEEMAQ3BEsEKQAHADgAIAA8
BDsEPQQuACAAMAQ0BEAENQRBBD4EMgQHADEAMAAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEE
QQQ4BE8EBwAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADQAIAAxBDAENwRLBCkABwA2
ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA4ACAAOQAwADAAIABABEMEMQQuAAcABwAgBD4E
QQRBBDgETwQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcAMQAgADwEOwQ9BC4AIAAwBDQEQAQ1
BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EIAAoACAEMARBBEEE
SwQ7BDoEOAQgAD8EPgQgAD8EQAQ1BDQEPwRABDgETwRCBDgETwQ8BCAAOAQgAEQEOAQ3BDgERwQ1
BEEEOgQ4BDwEIAA7BDgERgQwBDwEKQAHAAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8E
QgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAEBwAzADcALAAyACAAPAQ7BD0ELgAg
ADAENARABDUEQQQ+BDIEBwAzADcAIAAwADAAMAAgAEAEQwQxBC4AIAAHAAcAIAQ+BEEEQQQ4BE8E
BwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAEIAAo
ADEALwAyACAAMQQwBDcESwQpAAcAMQA4ACwANgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcA
MQA4ACAANQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRC
BDgETwQgACsAIAAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADQAIAAxBDAENwRLBCkA
BwA5ACwAMwAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcAOQAgADIANQAwACAAQARDBDEELgAH
AAcAIAQ+BEEEQQQ4BE8EBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsE
NQQgADsEOARGBDAEIAAoADEALwA2ACAAMQQwBDcESwQpAAcANgAsADIAIAA8BDsEPQQuACAAMAQ0
BEAENQRBBD4EMgQHADcAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcAHwRABDUE
NAQ/BEAEOARPBEIEOARPBCAAKwAgACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBCAAKAAxAC8AOAAg
ADEEMAQ3BEsEKQAHADYALAAyACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA3ACAAOQAwADAA
IABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAn
BDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQHADQALAA2ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIE
BwA2ACAAOQAwADAAIABABEMEMQQuAAcABwAgBD4EQQRBBDgETwQHAB8EQAQ1BDQEPwRABDgETwRC
BDgETwQgACsAIAAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQHADEAIAA8BDsEPQQuACAAMAQ0BEAE
NQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBCAAKAAyBEsEMQQ+
BEAEOgQ4BCAAPwQ+BCAAOgQwBEIENQQzBD4EQAQ4BE8EPAQpAAcABwAgBD4EQQRBBDgETwQHABwE
QwQ2BEcEOAQ9BEsEBwAyACwANgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADIAMAAw
ACAAQARDBDEELgAgAAcABwAgBD4EQQRBBDgETwQHABYENQQ9BEkEOAQ9BEsEBwAyACwAOAAgADwE
OwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADIAMAAwACAAQARDBDEELgAgAAcABwAgBD4EQQRB
BDgETwQHACAEQwQ6BD4EMgQ+BDQEOARCBDUEOwQ4BCAAPwRABDUENAQ/BEAEOARPBEIEOAQ5BAcA
OAA5ADAAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADQAIAAyADAAMAAgAEAEQwQxBC4ABwAH
ACAEPgRBBEEEOARPBAcAGAQ9BDIENQRBBEIEPgRABEsEIAA4BCAAQwRHBDAEQQRCBD0EOAQ6BDgE
IABmAG8AcgBlAHgABwAxACwANgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADIAMAAw
ACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAeBEIENAQ1BDsESwQgAD8EQAQ+BDQEMAQ2BAcA
MQA1ADAAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAH
ACAEPgRBBEEEOARPBAcAHgRCBDQENQQ7BEsEIABABDUEOgQ7BDAEPARLBAcAMQA0ADAAIABCBEsE
QQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARP
BAcAHwQ+BEEENQRCBDgEQgQ1BDsEOAQgAEEENQQ8BDgEPQQwBEAEPgQyBCwAIAAyBDUEMQQ4BD0E
MARABD4EMgQsACAAQgRABDUEPQQ4BD0EMwQ+BDIEBwAzACwAMwAgADwEOwQ9BC4AIAAwBDQEQAQ1
BEEEPgQyBAcANQAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAhBDUEOgRABDUE
QgQwBEAEOAQHADYAMAAgAEIESwRBBC4AIAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARD
BDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAhBD0EMAQxBDYENQQ9BEYESwQHADEANwAgAEIESwRBBC4A
IAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcAIAQ+BEEEQQQ4BE8EBwAR
BEMERQQzBDAEOwRCBDUEQARLBAcAMQAyADUAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMA
IAA5ADAAMAAgAEAEQwQxBC4ABwAHACAEPgRBBEEEOARPBAcASQB0ACAAQQQ/BDUERgQ4BDAEOwQ4
BEEEQgRLBAcAMgA2ADAAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMAOQAwADAAIABABEME
MQQuACAABwAHABwEPgRBBDoEMgQwBCAAKABABDAEQQRBBEsEOwQ6BDgEIAA/BD4EIAA/BEAENQQ0
BD8EQAQ4BE8EQgQ4BE8EPAQpAAcABwAcBD4EQQQ6BDIEMAQHAB8EQAQ1BDQEPwRABDgETwRCBDgE
TwQHADEALAA1ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQu
AAcABwAcBD4EQQQ6BDIEMAQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAwBDQEQAQ1BEEE
MAQgAEEEPgRCBEAEQwQ0BD0EOAQ6BD4EMgQHADIALAAzACAAPAQ7BD0ELgAgADAENARABDUEQQQ+
BDIEBwA0ACAANQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQgACgAQAQwBEEEQQRLBDsE
OgQ4BCAAPwQ+BCAARAQ4BDcEOARHBDUEQQQ6BDgEPAQgADsEOARGBDAEPAQpAAcABwAcBD4EQQQ6
BDIEMAQHACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcANgAsADQAIAA8BDsEPQQuACAAMAQ0BEAE
NQRBBD4EMgQHADkAIAA5ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBAcAJwQwBEEEQgQ9
BEsENQQgADsEOARGBDAEIAAoADEALwAyACAAMQQwBDcESwQpAAcAMwAsADIAIAA8BDsEPQQuACAA
MAQ0BEAENQRBBD4EMgQHADYAIAA1ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBAcAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAQCAAAEggAACII
AAAkCAAAJggAAFgIAABaCAAAiggAAMgIAAAgCQAAIgkAACQJAABoCQAAagkAAHgJAACyCQAAyAkA
APDdyryxo5WMg4x9bVlKOi06ABkVaOMsKAAWaOMsKABCKgFeSgMAcGgAAAAAHxVo4ywoABZo4ywo
ADUIgUIqAVwIgV5KAwBwaAAAAAAcFWjjLCgAFmjjLCgAQ0oUAE9KAABRSgAAYUoUAAAnFWjjLCgA
FmjjLCgANQiBQioBQ0ocAFwIgV5KAwBhShwAcGgAAAAAHhZojig+ADUIgUIqD0NKIABeSgMAYUog
AHBoNl+RAAAKFmiOKD4AXkoDAAAQFWjvAacAFmiqO+8AXkoDAAAQFWjvAacAFmgtRTMAXkoDAAAb
FWjjLCgAFmjjLCgANQiBQ0ogAF5KAwBhSiAAGxVo7wGnABZokCPnADUIgUNKIABeSgMAYUogABUW
aOMsKAA1CIFDSiAAXkoDAGFKIAAbFWg3E4IAFmiQI+cANQiBQ0ogAF5KAwBhSiAAJBVorGyAABZo
kCPnADUIgUIqAkNKMABeSgMAYUowAHBoVI3UAAAkFWisbIAAFmiZG+AANQiBQioCQ0owAF5KAwBh
SjAAcGhUjdQAAB4WaGhorwA1CIFCKgJDSjAAXkoDAGFKMABwaFSN1AARAAgAACYIAABaCAAAJAkA
AGgJAABqCQAAeAkAAJAJAACyCQAAyAkAAPcAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAA7wAAAAAA
AAAAAAAAAN4AAAAAAAAAAAAAAACGAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAA
AAB4AAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA
EmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAFgAAGtkAAAAABYkARckAUlmAQAAAAKWbAAHlCwBCNYa
AAHx//UogEYEKQQBAAAEAQAABAEAAAQBAAAJ1gIBAQp0AACgBBLWCgAAAADc5vEAAAAU9gMEKRU2
ARf2AwAAGPYDAAAa1gQAAAD/G9YEAAAA/xzWBAAAAP8d1gQAAAD/NNYGAAEFAwAANNYGAAEKA2wA
QtYDAAEBYfYDXQBw1goAAAAA3ObxAAAAeXTjLCgAEQAAAyQBEmTwAAEAFKQAABYkAUlmAQAAAGEk
AWdk4ywoAAAHAAADJAFhJAFnZEguGgAABwAAAyQBYSQBZ2TjLCgAAAnICQAAygkAANgJAAAaCgAA
PgoAAFYKAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAA
AAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAA
AQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2SJAAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/
SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////
////BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrW
EP////////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3W
EAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/
AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABcgJAADKCQAA2AkAAD4KAABW
CgAAWAoAAGYKAADgCgAA9goAAPgKAAAGCwAAgAsAAJYLAACYCwAApgsAANwLAADyCwAA9AsAAEAM
AABCDAAAUAwAAIoMAACiDAAApAwAALIMAAAADQAAGA0AABoNAAAoDQAAdg0AAI4NAACQDQAAng0A
AOwNAAACDgAABA4AABIOAABKDgAAYA4AAGIOAADMDgAAzg4AANwOAAA2DwAAUA8AAFIPAABgDwAA
0A8AAOgPAADqDwAA+A8AAGYQAAB8EAAAfhAAAIwQAAD6EAAAEBEAABIRAAAgEQAAjhEAAKQRAACm
EQAAtBEAAAwSAAAiEgAAJBIAADISAACGEgAAnBIAAJ4SAADcEgAA3hIAAOwSAAAeEwAANhMAADgT
AABGEwAA8eHU4fHh1OHx4dTh8eHU4fHA8eHU4fHh1OHx4dTh8eHU4fHh1OHxwPHh1OHx4dTh8eHU
4fHh1OHx4dTh8eHU4fHh1OHxwPHh1OHx4ScVaOMsKAAWaOMsKAA1CIFCKgFDShwAXAiBXkoDAGFK
HABwaAAAAAAZFWjjLCgAFmjjLCgAQioBXkoDAHBoAAAAAB8VaOMsKAAWaOMsKAA1CIFCKgFcCIFe
SgMAcGgAAAAAHBVo4ywoABZo4ywoAENKFABPSgAAUUoAAGFKFABMVgoAAFgKAABmCgAAvgoAAOAK
AAD2CgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAA
AFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEA
FKQAABYkAUlmAQAAAGdk4ywoAJcAAGtkcgEAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kH
SRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj/////////
/wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/
////////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAA
AAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAA
AAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAX2CgAA+AoAAAYLAABeCwAAgAsA
AJYLAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAA
WgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAU
pAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2RbAgAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJ
G6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////
BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//
//////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAA
AP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAA
AAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABZYLAACYCwAApgsAAL4LAADcCwAA
8gsAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABa
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSk
AAAWJAFJZgEAAABnZOMsKACXAABrZEQDAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kb
pSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8E
AQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////
/////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA
/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAA
AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAF8gsAAPQLAABADAAAaAAAAAAAAAAA
AAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAyQBEmTwAAEAFKQAABYk
AUlmAQAAAGEkAWdk4ywoAJcAAGtkLQQAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRul
I/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQB
AAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////
////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/
AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA
/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAJADAAAQgwAAFAMAABqDAAAigwAAKIM
AACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO
AAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAWAAAa2QWBQAAFiQBFyQBSWYBAAAAApZsAAeULAEI
1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEAAAnWAgEBCnQAAKAEEtYKAAAAANzm8QAAABT2AwQp
FTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/HNYEAAAA/x3WBAAAAP801gYAAQUDAAA01gYAAQoD
bABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5dOMsKAAABaIMAACkDAAAsgwAAOIMAAAADQAAGA0A
AGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAW
JAFJZgEAAABnZOMsKACXAABrZJ8FAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1
KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAA
BAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////
/////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAA
AP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8A
AAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFGA0AABoNAAAoDQAAWA0AAHYNAACODQAA
aAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYk
AUlmAQAAAGdk4ywoAJcAAGtkiAYAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/Uo
gEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAE
AQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////
////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA
/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAA
AP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAWODQAAkA0AAJ4NAADODQAA7A0AAAIOAABo
AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQB
SWYBAAAAZ2TjLCgAlwAAa2RxBwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiA
RlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQB
AACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////
//////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/
AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA
/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABQIOAAAEDgAAEg4AACwOAABKDgAAYA4AAGgA
AAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJ
ZgEAAABnZOMsKACXAABrZFoIAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBG
WAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEA
AIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAA
AGdk4ywoAJcAAGtkngsAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB///
//8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQ
Bf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////
////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8A
AAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAA
AP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAV8EAAAfhAAAIwQAADYEAAA+hAAABARAABoAAAAAAAA
AAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAA
Z2TjLCgAlwAAa2SHDAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH////
/wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF
//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////////////
//8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAA
AP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA
/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABRARAAASEQAAIBEAAGwRAACOEQAApBEAAGgAAAAAAAAA
AAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABn
ZOMsKACXAABrZHANAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////
BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX/
/////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////////////
/xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA
/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/
AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFpBEAAKYRAAC0EQAA6hEAAAwSAAAiEgAAaAAAAAAAAAAA
AAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk
4ywoAJcAAGtkWQ4AABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8E
AQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//
////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////
G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/
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
lwAAa2SdEQAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAE
AQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF////////
//8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAA
AAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYA
AQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8A
AAAAAP8AAAD/AAB5dOMsKAAABUYTAAB4EwAAkBMAAJITAACgEwAA9BMAAAoUAAAMFAAAGhQAADIU
AABEFAAAdBQAAIoUAACMFAAAmhQAANgUAADuFAAA8BQAAP4UAAA+FQAAVBUAAFYVAABkFQAA3BUA
APIVAAD0FQAAAhYAADYWAABMFgAAThYAAFwWAACQFgAAphYAAKgWAAC2FgAA7hYAAAQXAAAGFwAA
FBcAAFQXAABqFwAAbBcAALAXAACyFwAAwBcAAPoXAAAQGAAAEhgAACAYAACEGAAAmhgAAJwYAADo
GAAA6hgAAPgYAAA0GQAAShkAAEwZAABaGQAArBkAAMIZAADEGQAA0hkAAABsAABSbAAAaGwAAGps
AAB4bAAAsGwAAMZsAADy4tPi8uLT4vLG8uLT4vLi0+Ly4tPi8uLT4vLi0+Ly4tPi8uLT4vLi07LT
4vLi0+Ly4tOy0+Ly4tPi8uLT4rDy4tPi8uIAAAADVQgBJxVo4ywoABZo4ywoADUIgUIqAUNKHABc
CIFeSgMAYUocAHBoAAAAABkVaOMsKAAWaAISSQBCKgFeSgMAcGgAAAAAHBVo4ywoABZo4ywoAENK
FABPSgAAUUoAAGFKFAAAHxVo4ywoABZo4ywoADUIgUIqAVwIgV5KAwBwaAAAAAAZFWjjLCgAFmjj
LCgAQioBXkoDAHBoAAAAAABFkBMAAJITAACgEwAA0hMAAPQTAAAKFAAAaAAAAAAAAAAAAAAAAFoA
AAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcA
AGtkhhIAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEA
AAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////
BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA
/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEF
AwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAA
AAD/AAAA/wAAeXTjLCgAAAUKFAAADBQAABoUAABSFAAAdBQAAIoUAABoAAAAAAAAAAAAAAAAWgAA
AAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAA
a2RvEwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAA
BAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8E
AQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/
////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUD
AAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAA
AP8AAAD/AAB5dOMsKAAABYoUAACMFAAAmhQAALYUAADYFAAA7hQAAGgAAAAAAAAAAAAAAABaAAAA
AAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABr
ZFgUAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAE
AQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQB
AAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//
//////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMA
ADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA
/wAAAP8AAHl04ywoAAAF7hQAAPAUAAD+FAAAHBUAAD4VAABUFQAAaAAAAAAAAAAAAAAAAFoAAAAA
AAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtk
QRUAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQB
AACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEA
AAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////
/////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAA
NNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/
AAAA/wAAeXTjLCgAAAVUFQAAVhUAAGQVAAC6FQAA3BUAAPIVAABoAAAAAAAAAAAAAAAAWgAAAAAA
AAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2Qq
FgAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEA
AIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8EAQAA
BAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/////
////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA0
1gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8A
AAD/AAB5dOMsKAAABfIVAAD0FQAAAhYAABYWAAA2FgAATBYAAGgAAAAAAAAAAAAAAABaAAAAAAAA
AAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZBMX
AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAA
gEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAE
AQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//////
//////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTW
BgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAA
AP8AAHl04ywoAAAFTBYAAE4WAABcFgAAcBYAAJAWAACmFgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAA
AAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtk/BcA
ABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACA
RgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQB
AAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////////
/////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYG
AAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA
/wAAeXTjLCgAAAWmFgAAqBYAALYWAADMFgAA7hYAAAQXAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAA
AAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2TlGAAA
FiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBG
ABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8EAQAABAEA
AAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/////////
////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYA
AQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/
AAB5dOMsKAAABQQXAAAGFwAAFBcAADIXAABUFwAAahcAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAA
AAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZM4ZAAAW
JAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYA
FP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAA
CnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//////////
//////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgAB
CgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8A
AHl04ywoAAAFahcAAGwXAACwFwAAaAAAAAAAAAAAAAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAEQAAAyQBEmTwAAEAFKQAABYkAUlmAQAAAGEkAWdk4ywoAJcAAGtktxoAABYk
ARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU
//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAK
dAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////////////
/////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEK
A2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAA
eXTjLCgAAAKwFwAAshcAAMAXAADYFwAA+hcAABAYAACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAA
AJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgA
WAAAa2SgGwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEA
AAnWAgEBCnQAAKAEEtYKAAAAANzm8QAAABT2AwQpFTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/
HNYEAAAA/x3WBAAAAP801gYAAQUDAAA01gYAAQoDbABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5
dOMsKAAABRAYAAASGAAAIBgAAGIYAACEGAAAmhgAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAA
WgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZCkcAAAWJAEX
JAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//
////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQA
AKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//////////////
//8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNs
AELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl0
4ywoAAAFmhgAAJwYAADoGAAAaAAAAAAAAAAAAAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAEQAAAyQBEmTwAAEAFKQAABYkAUlmAQAAAGEkAWdk4ywoAJcAAGtkEh0AABYkARck
AUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU////
//////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAA
oAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA////////////////
/xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wA
QtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTj
LCgAAALoGAAA6hgAAPgYAAASGQAANBkAAEoZAACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkA
AAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAWAAA
a2T7HQAAFiQBFyQBSWYBAAAAApZsAAeULAEI1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEAAAnW
AgEBCnQAAKAEEtYKAAAAANzm8QAAABT2AwQpFTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/HNYE
AAAA/x3WBAAAAP801gYAAQUDAAA01gYAAQoDbABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5dOMs
KAAABUoZAABMGQAAWhkAAIoZAACsGQAAwhkAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAA
AAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZIQeAAAWJAEXJAFJ
ZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////
////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAE
FPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP////////////////8c
1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELW
AwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywo
AAAFwhkAAMQZAADSGQAAMGwAAFJsAABobAAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAA
AAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtkbR8AABYkARckAUlm
AQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU////////
//8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU
9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA/////////////////xzW
EAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYD
AAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgA
AAUnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADMAIAAxBDAENwRLBCkABwAyACwAMQAg
ADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAgADUAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEE
OgQyBDAEBwAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQHADEAIAA8BDsEPQQuACAAMAQ0BEAENQRB
BD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBCAAKABABDAEQQRBBEsE
OwQ6BDgEIAA/BD4EIAA/BEAENQQ0BD8EQAQ4BE8EQgQ4BE8EPAQgADgEIABEBDgENwQ4BEcENQRB
BDoEOAQ8BCAAOwQ4BEYEMAQ8BCkABwAHABwEPgRBBDoEMgQwBAcAHwRABDUENAQ/BEAEOARPBEIE
OARPBCAAKwAgACcEMARBBEIEPQRLBDUEIAA7BDgERgQwBAcAOAAsADQAIAA8BDsEPQQuACAAMAQ0
BEAENQRBBD4EMgQHADEAMgAgADAAMAAwACAAQARDBDEELgAgAAcABwAcBD4EQQQ6BDIEMAQHAB8E
QAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAnBDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAv
ADIAIAAxBDAENwRLBCkABwA0ACAAPAQ7BD0ELgAgADAENARABDUEQQQ+BDIEBwA3ACAANQAwADAA
IABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQHAB8EQAQ1BDQEPwRABDgETwRCBDgETwQgACsAIAAn
BDAEQQRCBD0ESwQ1BCAAOwQ4BEYEMAQgACgAMQAvADMAIAAxBDAENwRLBCkABwAyACwANwAgADwE
OwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANgAgADAAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEEOgQy
BDAEBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAE
IAAoADEALwA0ACAAMQQwBDcESwQpAAcAMgAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcANQAg
ADUAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEEOgQyBDAEBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8E
IAArACAAJwQwBEEEQgQ9BEsENQQgADsEOARGBDAEBwAxACAAPAQ7BD0ELgAgADAENARABDUEQQQ+
BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQgACgAQAQwBEEEQQRLBDsE
OgQ4BCAAPwQ+BCAAPwRABDUENAQ/BEAEOARPBEIEOARPBDwEKQAHAAcAHAQ+BEEEOgQyBDAEBwAc
BEMENgRHBDgEPQRLBAcAMQAsADQAIAA8BDsEPQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAA
MAAgAEAEQwQxBC4AIAAHAAcAHAQ+BEEEOgQyBDAEBwAWBDUEPQRJBDgEPQRLBAcAMQAsADQAIAA8
BDsEPQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4AIAAHAAcAHAQ+BEEE
OgQyBDAEBwAgBEMEOgQ+BDIEPgQ0BDgEQgQ1BDsEOAQgAD8EQAQ1BDQEPwRABDgETwRCBDgEOQQH
ADMANQAwACAAQgRLBEEELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcA
BwAcBD4EQQQ6BDIEMAQHABgEPQQyBDUEQQRCBD4EQARLBAcAMQA1ACAAQgRLBEEELgAgADAENARA
BDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQHAB4EQgQ0BDUE
OwRLBCAAPwRABD4ENAQwBDYEBwAzADgAIABCBEsEQQQuACAAMAQ0BEAENQRBBD4EMgQHADMAIAA5
ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBAcAHgRCBDQENQQ7BEsEIABABDUEOgQ7BDAE
PARLBAcAMwA0ACAAQgRLBEEELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQu
AAcABwAcBD4EQQQ6BDIEMAQHACEENQQ6BEAENQRCBDAEQAQ4BAcAMQA1ACAAQgRLBEEELgAgADAE
NARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIEMAQHACEEPQQw
BDEENgQ1BD0ERgRLBAcANAAgAEIESwRBBC4AIAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAA
QARDBDEELgAHAAcAHAQ+BEEEOgQyBDAEBwARBEMERQQzBDAEOwRCBDUEQARLBAcAMwA0ACAAQgRL
BEEELgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAcBD4EQQQ6BDIE
MAQHAEkAdAAgAEEEPwQ1BEYEOAQwBDsEOARBBEIESwQHADMANgAgAEIESwRBBC4AIAAwBDQEQAQ1
BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcAHAQ+BEEEOgQyBDAEIAAoAEAEMARBBEEE
SwQ7BDoEOAQgAD8EPgQgAD8EQAQ1BDQEPwRABDgETwRCBDgETwQ8BCAAOAQgAEQEOAQ3BC4AIAA7
BDgERgQwBDwEKQAHAAcAIQQwBD0EOgRCBC0AHwQ1BEIENQRABDEEQwRABDMEBwAfBEAENQQ0BD8E
QAQ4BE8EQgQ4BE8EIAArACAAMAQ0BEAENQRBBDAEIABBBD4EQgRABEMENAQ9BDgEOgQ+BDIEBwAx
ACwAMwAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAHAAcA
IQQwBD0EOgRCBC0AHwQ1BEIENQRABDEEQwRABDMEBwAfBEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAAr
ACAARAQ4BDcELgAgADsEOARGBDAEBwAzACwANQAgADwEOwQ9BC4AIAAwBDQEQAQ1BEEEPgQyBAcA
NgAgADkAMAAwACAAQARDBDEELgAHAAcAIQQwBD0EOgRCBC0AHwQ1BEIENQRABDEEQwRABDMEBwAf
BEAENQQ0BD8EQAQ4BE8EQgQ4BE8EIAArACAARAQ4BDcELgAgADsEOARGBDAEBwAxACAAPAQ7BD0E
LgAgADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAf
BDUEQgQ1BEAEMQRDBEAEMwQHACQEOAQ3BC4AIAA7BDgERgQwBAcAMQAsADcAIAA8BDsEPQQuACAA
MAQ0BEAENQRBBD4EMgQHADQAIAA1ADAAMAAgAEAEQwQxBC4ABwAHABwEPgRBBDoEMgQwBCAAKAAy
BEsEMQQ+BEAEOgQ4BCAAPwQ+BCAAOgQwBEIENQQzBD4EQAQ4BE8EPAQpAAcABwAhBDAEPQQ6BEIE
LQAfBDUEQgQ1BEAEMQRDBEAEMwQHABwEQwQ2BEcEOAQ9BEsEBwA0ADcAMAAgAEIESwRBBC4AIAAw
BDQEQAQ1BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAgAAcABwAhBDAEPQQ6BEIELQAfBDUE
QgQ1BEAEMQRDBEAEMwQHABYENQQ9BEkEOAQ9BEsEBwAyADkANQAgAEIESwRBBC4AIAAwBDQEQAQ1
BEEEPgQyBAcAMwAgADkAMAAwACAAQARDBDEELgAgAAcABwAhBDAEPQQ6BEIELQAfBDUEQgQ1BEAE
MQRDBEAEMwQHAB4EQgQ0BDUEOwRLBCAAPwRABD4ENAQwBDYEBwAxADYAIABCBEsEQQQuACAAMAQ0
BEAENQRBBD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACEEMAQ9BDoEQgQtAB8ENQRCBDUE
QAQxBEMEQAQzBAcAHgRCBDQENQQ7BEsEIABABDUEOgQ7BDAEPARLBAcAMQAxACAAQgRLBEEELgAg
ADAENARABDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAfBDUE
QgQ1BEAEMQRDBEAEMwQHACEENQQ6BEAENQRCBDAEQAQ4BAcAMgAyACAAQgRLBEEELgAgADAENARA
BDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAfBDUEQgQ1BEAE
MQRDBEAEMwQHABEEQwRFBDMEMAQ7BEIENQRABEsEBwAzADkAIABCBEsEQQQuACAAMAQ0BEAENQRB
BD4EMgQHADMAIAA5ADAAMAAgAEAEQwQxBC4ABwAHACEEMAQ9BDoEQgQtAB8ENQRCBDUEQAQxBEME
QAQzBAcASQB0ACAAQQQ/BDUERgQ4BDAEOwQ4BEEEQgRLBAcAMwA0ACAAQgRLBEEELgAgADAENARA
BDUEQQQ+BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwAhBDAEPQQ6BEIELQAfBDUEQgQ1BEAE
MQRDBEAEMwQHABgEPQQyBDUEQQRCBD4EQARLBAcAMQAxACAAQgRLBEEELgAgADAENARABDUEQQQ+
BDIEBwAzACAAOQAwADAAIABABEMEMQQuAAcABwALAB0EEAQoBBgEIAAfBCAEFQQYBBwEIwQpBBUE
IgQSBBAEOgALAC0AIAARBDUEQQQ/BDsEMARCBD0EPgQ1BCAAOAQ3BDMEPgRCBD4EMgQ7BDUEPQQ4
BDUEIAA8BDAEOgQ1BEIEMAQ7AAsALQAgABEENQRBBD8EOwQwBEIEPQRLBDkEIAAyBEsENQQ3BDQE
IAA6BEMEQARMBDUEQAQwBDsACwAtACAAHwRABDgEIAA3BDAEOgQwBDcENQQgADIALQBFBCAAQAQw
BEEEQQRLBDsEPgQ6BCwAIAAzAC0ATgQgABIESwQgAD8EPgQ7BEMERwQwBDUEQgQ1BCAAMQQ1BEEE
PwQ7BDAEQgQ9BD4EOwALAC0AIAAbBE4EMQRLBDUEIABEBD4EQAQ8BEsEIAA+BD8EOwQwBEIESwQ7
AAsALQAgABIESwRBBD4EOgQwBE8EIABNBEQERAQ1BDoEQgQ4BDIEPQQ+BEEEQgRMBCAAPQQwBEgE
NQQ5BCAAQAQ1BDoEOwQwBDwESwQ7AAsALQAgABIEPgQ3BDwEPgQ2BD0EPgRBBEIETAQgADIEOAQ3
BEMEMAQ7BEwEPQQ+BDMEPgQgAD0EMAQxBDsETgQ0BDUEPQQ4BE8EIAA3BDAEIABFBD4ENAQ+BDwE
IABABDAEQQRBBEsEOwQ6BDgELgANAA0AGgQeBB0EIgQQBBoEIgQdBCsEFQQgABQEEAQdBB0EKwQV
BDoACwAiBDUEOwQ1BEQEPgQ9BDoAIAAoADQAOQA1ACkANQAwADIAIAA2ADEAIAA4ADUACwBoAHQA
dABwADoALwAvAEIAZQBzAHQAUgBhAHMAcwBpAGwAawBhAC4AcgB1AA0AAwANAA0ABAANAA0AAwAN
AA0ABAANAA0ADQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABobAAAamwA
AHhsAACSbAAAsGwAAMZsAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABa
AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2RWIAAAFiQBFyQBSWYBAAAAApZsAAeU
LAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAA
gEZcCP//////////BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YD
AAAY9gMAABrWEP////////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8A
AAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDW
KAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABcZsAADIbAAA
Mm0AAGgAAAAAAAAAAAAAAABXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAMk
ARJk8AABABSkAAAWJAFJZgEAAABhJAFnZOMsKACXAABrZD8hAAAWJAEXJAFJZgEAAAAClmwAB5Qs
AQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACA
RlwI//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMA
ABj2AwAAGtYQ/////////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAA
AP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYo
AAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAACxmwAAMhsAAAy
bQAANG0AAEJtAACabQAAtG0AALZtAADEbQAALm4AAERuAABGbgAAVG4AAMJuAADYbgAA2m4AAOhu
AABSbwAAaG8AAGpvAAB4bwAArm8AALBvAADMbwAA4m8AAORvAAAocAAAKnAAADhwAABqcAAAgnAA
AIRwAACScAAAxHAAANxwAADecAAA7HAAAEBxAABWcQAAWHEAAGZxAACacQAAsHEAALJxAADAcQAA
/HEAABJyAAAUcgAAInIAAGByAAB2cgAAeHIAAIZyAAC6cgAA0HIAANJyAADgcgAAEnMAAChzAAAq
cwAAOHMAAG5zAACEcwAAhnMAAJRzAADScwAA6HMAAOpzAABIdAAASnQAAGp0AADOdAAA5HQAAPHd
8c3AzfHNwM3xzcDN8c3AzfHNwLbAzfHd8c3AzfHNwM3xzcDN8c3AzfHNwM3xzcDN8c3AzfHNwM3x
zcDN8c3AzfHd8c3AzRMWaFFiYABCKgFeSgMAcGgAAAAAGRVo4ywoABZo4ywoAEIqAV5KAwBwaAAA
AAAfFWjjLCgAFmjjLCgANQiBQioBXAiBXkoDAHBoAAAAACcVaOMsKAAWaOMsKAA1CIFCKgFDShwA
XAiBXkoDAGFKHABwaAAAAAAcFWjjLCgAFmjjLCgAQ0oUAE9KAABRSgAAYUoUAEgybQAANG0AAEJt
AAB4bQAAmm0AALRtAACnAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAACZAAAA
AAAAAAAAAAAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAWAAAa2QoIgAAFiQBFyQBSWYB
AAAAApZsAAeULAEI1hoAAfH/9SiARgQpBAEAAAQBAAAEAQAABAEAAAnWAgEBCnQAAKAEEtYKAAAA
ANzm8QAAABT2AwQpFTYBF/YDAAAY9gMAABrWBAAAAP8b1gQAAAD/HNYEAAAA/x3WBAAAAP801gYA
AQUDAAA01gYAAQoDbABC1gMAAQFh9gNdAHDWCgAAAADc5vEAAAB5dOMsKAAABbRtAAC2bQAAxG0A
ABBuAAAubgAARG4AAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAA
AAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4A
ABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZLEiAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjW
XAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI
//////////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2
AwAAGtYQ/////////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8A
AAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA
/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFRG4AAEZuAABUbgAA
oG4AAMJuAADYbgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAA
AAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA
EmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcAAGtkmiMAABYkARckAUlmAQAAAAKWbAAHlCwBCNZc
AATx/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj/
/////////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYD
AAAa1hD/////////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAA
AP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/
AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAXYbgAA2m4AAOhuAAA0
bwAAUm8AAGhvAABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAA
AAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAS
ZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAAa2SDJAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwA
BPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//
////////BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMA
ABrWEP////////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA
/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8A
AAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABWhvAABqbwAAeG8AAK5v
AADMbwAA4m8AAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAA
AAAAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk
8AABABSkAAAWJAFJZgEAAABnZOMsKACXAABrZGwlAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE
8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI////
//////8EAQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAA
GtYQ/////////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/
HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAA
AP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAF4m8AAORvAAAocAAAaAAA
AAAAAAAAAAAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAyQBEmTwAAEA
FKQAABYkAUlmAQAAAGEkAWdk4ywoAJcAAGtkVSYAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx
/0kHSRulI/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj/////
/////wQBAAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa
1hD/////////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d
1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA
/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAIocAAAKnAAADhwAABIcAAA
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
BAEAAAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//
//////////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAA
AP8AAAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAA
AAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABbBxAACycQAAwHEAANxxAAD8cQAA
EnIAAGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABa
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSk
AAAWJAFJZgEAAABnZOMsKACXAABrZIIqAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kb
pSP1KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8E
AQAABAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////
/////////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA
/wAAAP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAA
AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFEnIAABRyAAAicgAAQHIAAGByAAB2
cgAAaAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQA
ABYkAUlmAQAAAGdk4ywoAJcAAGtkaysAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRul
I/UogEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQB
AAAEAQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////
////////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/
AAAA/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA
/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAV2cgAAeHIAAIZyAACacgAAunIAANBy
AABoAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAA
FiQBSWYBAAAAZ2TjLCgAlwAAa2RULAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj
9SiARlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEA
AAQBAACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////
//////////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8A
AAD/AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/
AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABdByAADScgAA4HIAAPRyAAAScwAAKHMA
AGgAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAW
JAFJZgEAAABnZOMsKACXAABrZD0tAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1
KIBGWAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAA
BAEAAIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////
/////////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAA
AP8AAAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8A
AAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAFKHMAACpzAAA4cwAATnMAAG5zAACEcwAA
aAAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYk
AUlmAQAAAGdk4ywoAJcAAGtkJi4AABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/Uo
gEZYB/////8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAE
AQAAgEZQBf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////
////////////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA
/wAAAP8AAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAA
AP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAWEcwAAhnMAAJRzAACycwAA0nMAAOhzAABo
AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQB
SWYBAAAAZ2TjLCgAlwAAa2QPLwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiA
RlgH/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQB
AACARlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////
//////////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/
AAAA/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA
/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABehzAADqcwAASHQAAGgAAAAAAAAAAAAAAABX
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAMkARJk8AABABSkAAAWJAFJZgEA
AABhJAFnZOMsKACXAABrZPgvAAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBG
WAf/////BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEA
AIBGUAX//////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////
/////////xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8A
AAD/AAAA/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/
AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAACSHQAAEp0AABqdAAArHQAAM50AADkdAAApwAA
AAAAAAAAAAAAAJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTw
AAEAFKQAABYkAUlmAQAAAGdk4ywoAFgAAGtk4TAAABYkARckAUlmAQAAAAKWbAAHlCwBCNYaAAHx
//UogEYEKQQBAAAEAQAABAEAAAQBAAAJ1gIBAQp0AACgBBLWCgAAAADc5vEAAAAU9gMEKRU2ARf2
AwAAGPYDAAAa1gQAAAD/G9YEAAAA/xzWBAAAAP8d1gQAAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYD
AAEBYfYDXQBw1goAAAAA3ObxAAAAeXTjLCgAAAXkdAAA5nQAAAZ1AAA2dQAAWHUAAG51AABoAAAA
AAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYB
AAAAZ2TjLCgAlwAAa2RqMQAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH
/////wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACA
RlAF//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////////
//////8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA
/wAAAP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAA
AAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABeR0AADmdAAABnUAAFh1AABudQAAcHUAAJB1AADe
dQAA9HUAAPZ1AAAWdgAATHYAAGJ2AABkdgAAonYAAKR2AADEdgAA9nYAAA53AAAQdwAAMHcAAGJ3
AAB6dwAAfHcAAJx3AADYdwAA7ncAAPB3AAAQeAAATngAAGR4AABmeAAAhngAALp4AADQeAAA0ngA
APJ4AAAoeQAAPnkAAEB5AABgeQAAnnkAALR5AAC2eQAA1nkAAAp6AAAgegAAInoAACR6AABGegAA
SHoAABp8AADx4dTh8eHU4fHh1OHxwPHh1OHx4dTh8eHU4fHh1OHx4dTh8eHU4fHh1OHx4dTh8bCd
kIMAAAAYFWjjLCgAFmjXA2kAQ0ocAF5KAwBhShwAABgVaO8BpwAWaNcDaQBDSiAAXkoDAGFKIAAA
JBVo7wGnABZo1wNpADUIgUIqD0NKIABeSgMAYUogAHBoNl+RAAAeFmjjLCgANQiBQioPQ0ogAF5K
AwBhSiAAcGg2X5EAACcVaOMsKAAWaOMsKAA1CIFCKgFDShwAXAiBXkoDAGFKHABwaAAAAAAZFWjj
LCgAFmjjLCgAQioBXkoDAHBoAAAAAB8VaOMsKAAWaOMsKAA1CIFCKgFcCIFeSgMAcGgAAAAAHBVo
4ywoABZo4ywoAENKFABPSgAAUUoAAGFKFAAzbnUAAHB1AACQdQAAwHUAAN51AAD0dQAAaAAAAAAA
AAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAA
AGdk4ywoAJcAAGtkUzIAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB///
//8EAQAABAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQ
Bf//////////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////
////G9YQAAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8A
AAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAA
AP8AAAD/AAAAAAD/AAAA/wAAeXTjLCgAAAX0dQAA9nUAABZ2AAAqdgAATHYAAGJ2AABoAAAAAAAA
AAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAA
Z2TjLCgAlwAAa2Q8MwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH////
/wQBAAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF
//////////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP//////////////////
//8b1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAA
AP801gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA
/wAAAP8AAAAAAP8AAAD/AAB5dOMsKAAABWJ2AABkdgAAonYAAGgAAAAAAAAAAAAAAABXAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAMkARJk8AABABSkAAAWJAFJZgEAAABhJAFn
ZOMsKACXAABrZCU0AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////
BAEAAAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX/
/////////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ////////////////////
/xvWEAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA
/zTWBgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/
AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAConYAAKR2AADEdgAA1HYAAPZ2AAAOdwAApwAAAAAAAAAA
AAAAAJkAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQA
ABYkAUlmAQAAAGdk4ywoAFgAAGtkDjUAABYkARckAUlmAQAAAAKWbAAHlCwBCNYaAAHx//UogEYE
KQQBAAAEAQAABAEAAAQBAAAJ1gIBAQp0AACgBBLWCgAAAADc5vEAAAAU9gMEKRU2ARf2AwAAGPYD
AAAa1gQAAAD/G9YEAAAA/xzWBAAAAP8d1gQAAAD/NNYGAAEFAwAANNYGAAEKA2wAQtYDAAEBYfYD
XQBw1goAAAAA3ObxAAAAeXTjLCgAAAUOdwAAEHcAADB3AABAdwAAYncAAHp3AABoAAAAAAAAAAAA
AAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2Tj
LCgAlwAAa2SXNQAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQB
AAAEAQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF////
//////8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b
1hAAAAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP80
1gYAAQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAA
AP8AAAAAAP8AAAD/AAB5dOMsKAAABXp3AAB8dwAAnHcAALh3AADYdwAA7ncAAGgAAAAAAAAAAAAA
AABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMs
KACXAABrZIA2AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEA
AAQBAAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX/////
/////wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvW
EAAAAP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTW
BgABBQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA
/wAAAAAA/wAAAP8AAHl04ywoAAAF7ncAAPB3AAAQeAAALngAAE54AABkeAAAaAAAAAAAAAAAAAAA
AFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywo
AJcAAGtkaTcAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAA
BAEAAAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////
////BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQ
AAAA/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYG
AAEFAwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/
AAAAAAD/AAAA/wAAeXTjLCgAAAVkeAAAZngAAIZ4AACaeAAAungAANB4AABoAAAAAAAAAAAAAAAA
WgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgA
lwAAa2RSOAAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAE
AQAABAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF////////
//8EAQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAA
AAD/////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYA
AQUDAAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8A
AAAAAP8AAAD/AAB5dOMsKAAABdB4AADSeAAA8ngAAAh5AAAoeQAAPnkAAGgAAAAAAAAAAAAAAABa
AAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AABJk8AABABSkAAAWJAFJZgEAAABnZOMsKACX
AABrZDs5AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQB
AAAEAQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX/////////
/wQBAAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAA
AP////////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgAB
BQMAADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAA
AAAA/wAAAP8AAHl04ywoAAAFPnkAAEB5AABgeQAAfnkAAJ55AAC0eQAAaAAAAAAAAAAAAAAAAFoA
AAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAFoAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAEmTwAAEAFKQAABYkAUlmAQAAAGdk4ywoAJcA
AGtkJDoAABYkARckAUlmAQAAAAKWbAAHlCwBCNZcAATx/0kHSRulI/UogEZYB/////8EAQAABAEA
AAQBAACARgAU//////////8EAQAABAEAAIBGXAj//////////wQBAAAEAQAAgEZQBf//////////
BAEAAAQBAAAKdAAAoAQU9gMEKRU2ARf2AwAAGPYDAAAa1hD/////////////////////G9YQAAAA
/////////////////xzWEAAAAP8AAAD/AAAA/wAAAP8d1hAAAAD/AAAA/wAAAP8AAAD/NNYGAAEF
AwAANNYGAAEKA2wAQtYDAAQBYfYDXQBw1igAAAD/AAAA/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAAA
AAD/AAAA/wAAeXTjLCgAAAW0eQAAtnkAANZ5AADqeQAACnoAACB6AABoAAAAAAAAAAAAAAAAWgAA
AAAAAAAAAAAAAFoAAAAAAAAAAAAAAABaAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAASZPAAAQAUpAAAFiQBSWYBAAAAZ2TjLCgAlwAA
a2QNOwAAFiQBFyQBSWYBAAAAApZsAAeULAEI1lwABPH/SQdJG6Uj9SiARlgH/////wQBAAAEAQAA
BAEAAIBGABT//////////wQBAAAEAQAAgEZcCP//////////BAEAAAQBAACARlAF//////////8E
AQAABAEAAAp0AACgBBT2AwQpFTYBF/YDAAAY9gMAABrWEP////////////////////8b1hAAAAD/
////////////////HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAAAP8AAAD/AAAA/wAAAP801gYAAQUD
AAA01gYAAQoDbABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAAAA
AP8AAAD/AAB5dOMsKAAABSB6AAAiegAAHHwAAB58AACifAAApnwAAKh8AACsfAAArnwAALJ8AABo
AAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAVgAAAAAA
AAAAAAAAAFQAAAAAAAAAAAAAAABWAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAFYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABAAAACQAAEmTwAAEAFKQAAGdkkANKAAAHAAADJAFhJAFnZA52LgCXAABr
ZPY7AAAWJAEXJAFJZgEAAAAClmwAB5QsAQjWXAAE8f9JB0kbpSP1KIBGWAf/////BAEAAAQBAAAE
AQAAgEYAFP//////////BAEAAAQBAACARlwI//////////8EAQAABAEAAIBGUAX//////////wQB
AAAEAQAACnQAAKAEFPYDBCkVNgEX9gMAABj2AwAAGtYQ/////////////////////xvWEAAAAP//
//////////////8c1hAAAAD/AAAA/wAAAP8AAAD/HdYQAAAA/wAAAP8AAAD/AAAA/zTWBgABBQMA
ADTWBgABCgNsAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAAAP8AAAD/AAAAAAD/AAAA/wAAAAAA
/wAAAP8AAHl04ywoAAAJGnwAABx8AAAefAAARHwAAGB8AAByfAAAdHwAAIJ8AACEfAAAinwAAIx8
AACifAAApHwAAKh8AACqfAAArnwAALB8AAC0fAAAtnwAALx8AAC+fAAA8+TWyb+1qJq1mqiSjpKO
ko6SjqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAGFmiHfVsAAA8DagAAAAAWaId9WwBVCAEaFmgOdi4AQ0ocAF5KAwBhShwA
bUgJBHNICQQAGBVoDnYuABZoDnYuAENKHABeSgMAYUocAAASFmgOdi4AQ0ocAF5KAwBhShwAABIW
aGhorwBDShwAXkoDAGFKHAAAGBVo7wGnABZoHHvyAENKHABeSgMAYUocAAAbFWjvAacAFmgce/IA
NQiBQ0oYAF5KAwBhShgAHRZoDnYuADUIgUNKGABeSgMAYUoYAG1ICQRzSAkEGBVoDnYuABZo4ywo
AENKHABeSgMAYUocABSyfAAAtHwAALh8AAC6fAAAvHwAAL58AAD9AAAAAAAAAAAAAAAA8wAAAAAA
AAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAADJAFhJAFnZA52LgAACQAAEmTwAAEAFKQA
AGdkkANKAAABAAAABTIAMZBoATpwjig+AB+wgi4gsMZBIbDQAiKw0AIjkNACJJDQAiWwAAAXsMQC
GLDEAgyQxAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
CwABAf///////+D/L9YLAQQMAAAA/wQBAABC1gMABAFh9gNdAHDWKAAAAP8AAAD/AAAAAAD/AAAA
/wAAAAAA/wAAAP8AAAAAAP8AAAD/AAB5dOMsKADnABYkARckAUlmAQAAAAGWXQAhdgAEaAEjdgAB
WAcjdgECABQjdgIDXAgjdgMEUAU6VgsAApZsAAeULAEKdAAAoAQU9gMEKRU2ARj2AwAALNYDAAQB
NdYFAAEDWAc11gUBAgMAFDXWBQIDA1wINdYFAwQDUAUv1gsAAQ4AAAD/BAEAAC/WCwEEA///////
/+D/L9YLAAEB////////4P8v1gsBBAwAAAD/BAEAAELWAwAEAWH2A10AcNYoAAAA/wAAAP8AAAAA
AP8AAAD/AAAAAAD/AAAA/wAAAAAA/wAAAP8AAHl04ywoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmBCEAEgABAAsBDwAHAAMAAAAD
AAAABAAIAAAAmAAAAJgAAACYAAAAmAAAAJ4AAACeAAAAngAAAJ4AAACeAAAANgYAADYGAAA2BgAA
NgYAADYGAAA2BgAANgYAADYGAAA2BgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2
AgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAPgIAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYG
AAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA
ADYGAAA2BgAANgYAADYGAAA2BgAANgYAAKgAAAA2BgAANgYAABYAAAA2BgAANgYAADYGAAA2BgAA
NgYAADYGAAA2BgAANgYAALgAAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2
BgAANgYAADYGAABoAQAASAEAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYG
AAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA
ADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAA
NgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2
BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAAsAMAADYG
AAAyBgAAGAAAAMADAADQAwAA4AMAAPADAAAABAAAEAQAACAEAAAwBAAAQAQAAFAEAABgBAAAcAQA
AIAEAACQBAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAMgYAACgCAADYAQAA6AEAACAEAAAwBAAA
QAQAAFAEAABgBAAAcAQAAIAEAACQBAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAIAQAADAEAABA
BAAAUAQAAGAEAABwBAAAgAQAAJAEAADAAwAA0AMAAOADAADwAwAAAAQAABAEAAAgBAAAMAQAAEAE
AABQBAAAYAQAAHAEAACABAAAkAQAAMADAADQAwAA4AMAAPADAAAABAAAEAQAACAEAAAwBAAAQAQA
AFAEAABgBAAAcAQAAIAEAACQBAAAwAMAANADAADgAwAA8AMAAAAEAAAQBAAAIAQAADAEAABABAAA
UAQAAGAEAABwBAAAgAQAAJAEAADAAwAA0AMAAOADAADwAwAAAAQAABAEAAAgBAAAMAQAAEAEAABQ
BAAAYAQAAHAEAACABAAAkAQAADgBAABYAQAA+AEAAAgCAAAYAgAAVgIAAH4CAAAcAAAAT0oDAFFK
AwBfSAEEbUgZBG5IGQRzSBkEdEgZBAAAAABMAABg8f8CAEwADBAAAAwWAAAAAAcAHgQxBEsERwQ9
BEsEOQQAAAwAAAASZBQBAQAUpMgAGABDShYAX0gBBGFKFgBtSBkEc0gZBHRIGQQAAGgAAkABACIA
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
ZXNdLnhtbFBLAQItABQABgAIAAAAIQCl1qfnwAAAADYBAAALAAAAAAAAAAAAAAAAADABAABfcmVs
cy8ucmVsc1BLAQItABQABgAIAAAAIQBreZYWgwAAAIoAAAAcAAAAAAAAAAAAAAAAABkCAAB0aGVt
ZS90aGVtZS90aGVtZU1hbmFnZXIueG1sUEsBAi0AFAAGAAgAAAAhAKVefS3HBgAA1xsAABYAAAAA
AAAAAAAAAAAA1gIAAHRoZW1lL3RoZW1lL3RoZW1lMS54bWxQSwECLQAUAAYACAAAACEADdGQn7YA
AAAbAQAAJwAAAAAAAAAAAAAAAADRCQAAdGhlbWUvdGhlbWUvX3JlbHMvdGhlbWVNYW5hZ2VyLnht
bC5yZWxzUEsFBgAAAAAFAAUAXQEAAMwKAAAAADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxhOmNsck1hcCB4bWxuczphPSJodHRwOi8vc2No
ZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiIgYmcxPSJsdDEiIHR4
MT0iZGsxIiBiZzI9Imx0MiIgdHgyPSJkazIiIGFjY2VudDE9ImFjY2VudDEiIGFjY2VudDI9ImFj
Y2VudDIiIGFjY2VudDM9ImFjY2VudDMiIGFjY2VudDQ9ImFjY2VudDQiIGFjY2VudDU9ImFjY2Vu
dDUiIGFjY2VudDY9ImFjY2VudDYiIGhsaW5rPSJobGluayIgZm9sSGxpbms9ImZvbEhsaW5rIi8+
AAAAAEgRAAAOAADIAAAAAP////8AAAAAAwAAAAYAAAAGAAAACQAAAAwAAAAMAAAADAAAAAwAAAAM
AAAADAAAAAwAAAAMAAAADwAAAAAIAADICQAARhMAAMZsAADkdAAAGnwAAL58AAANAAAAEAAAACUA
AABBAAAAVQAAAGIAAAAACAAAyAkAAFYKAAD2CgAAlgsAAPILAABADAAAogwAABgNAACODQAAAg4A
AGAOAADMDgAAUA8AAOgPAAB8EAAAEBEAAKQRAAAiEgAAnBIAANwSAAA2EwAAkBMAAAoUAACKFAAA
7hQAAFQVAADyFQAATBYAAKYWAAAEFwAAahcAALAXAAAQGAAAmhgAAOgYAABKGQAAwhkAAGhsAADG
bAAAMm0AALRtAABEbgAA2G4AAGhvAADibwAAKHAAAIJwAADccAAAVnEAALBxAAAScgAAdnIAANBy
AAAocwAAhHMAAOhzAABIdAAA5HQAAG51AAD0dQAAYnYAAKJ2AAAOdwAAencAAO53AABkeAAA0HgA
AD55AAC0eQAAIHoAALJ8AAC+fAAADgAAAA8AAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAA
GAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACYAAAAn
AAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUA
AAA/AAAAQAAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAA
AE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAA
XQAAAF4AAABfAAAAYAAAAGEAAABjAAAADwAA8EwAAAAAAAbwGAAAAAIEAAACAAAAAQAAAAEAAAAB
AAAAAgAAACMAC/AMAAAAhsEAAAAAxcEAAAAAQAAe8RAAAAD//wAAAAD/AICAgAD3AAAQAA8AAvCS
AAAAEAAI8AgAAAABAAAAAQQAAA8AA/AwAAAADwAE8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAA
AAACAArwCAAAAAAEAAAFAAAADwAE8EIAAAASAArwCAAAAAEEAAAADgAAUwAL8B4AAAC/AQAAEADL
AQAAAAD/AQAACAAEAwkAAAA/AwEAAQAAABHwBAAAAAEAAAAAAAAACAAAAIoHAACMBwAAswwAALUM
AACZDwAAmw8AACsRAAAuEQAAOhEAADwRAAA9EQAAPxEAAEARAABCEQAAQxEAAEURAABJEQAABAAH
ABwABwAcAAcAHAAHABwABwAHAAIABwACAAcAAgAHAAIAAAAAABIAAAA6EQAAPBEAAD0RAAA/EQAA
QBEAAEIRAABDEQAARREAAEkRAAAEAAcABwACAAcAAgAHAAIABwACAAAAAAARAAAAkgAAAPoBAAAh
AgAAMQMAAGcDAAAZBgAAIgYAAE4IAAB1CAAATQkAAIMJAADeDAAADg0AAPoPAAA6EQAAPBEAAD0R
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
AGUAdwAAADsOkAECAAUAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAgAAAAABXAGkAbgBnAGQA
aQBuAGcAcwAAAEEekAHMAAIEBQMFBAYDAgT/AgDg/yQAQgAAAAAAAAAAnwEAAAAAAABDAGEAbQBi
AHIAaQBhACAATQBhAHQAaAAAACIABABxCIgYAPDEAgAAaAEAAAAA3qvxptBSWIdis/HGFQB6AAAA
kgIAAKgOAAACAAgAAAAEAAOQHwAAAJICAACoDgAAAgAIAAAAHwAAAAAAAAAhAwDwEAAAAAEAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADQAtACtAC0AIGBcjQAAAAAAAAAAAAAAAAAADIRAAAyEQAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AgAAAAAAAAAAAAk/gxEA8BAACAD8/QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASFAAAAAACfD/
DwABJFAAAOMEAAD///9/////f////3////9/////f////3////9/mRvgAAAEAAAyAAAAAAAAAAAA
AAAAAAAAAAAAAAAAIQQAAAAAAAAAAAAAAAAAAAAAAAAQHAAACAAAAAAAAAAAAHgAAAB4AAAAAAAA
AAAAAACgBQAAAAAAAAsAAAAAAAAA3AAAAP//EgAAAAAAAAAAAAAAAAAAAAUAQQBkAG0AaQBuAAUA
QQBkAG0AaQBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAYAAAACAAAAAAAMAAEADAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP7/AAAGAQIAAAAAAAAAAAAAAAAAAAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAA
AHwBAAASAAAAAQAAAJgAAAACAAAAoAAAAAMAAACsAAAABAAAALgAAAAFAAAAyAAAAAYAAADUAAAA
BwAAAOAAAAAIAAAA8AAAAAkAAAAAAQAAEgAAAAwBAAAKAAAALAEAAAsAAAA4AQAADAAAAEQBAAAN
AAAAUAEAAA4AAABcAQAADwAAAGQBAAAQAAAAbAEAABMAAAB0AQAAAgAAAOMEAAAeAAAABAAAAAAA
AAAeAAAABAAAAAAAAAAeAAAACAAAAEFkbWluAAAAHgAAAAQAAAAAAAAAHgAAAAQAAAAAAAAAHgAA
AAgAAABOb3JtYWwAAB4AAAAIAAAAQWRtaW4AAAAeAAAABAAAADIxAAAeAAAAGAAAAE1pY3Jvc29m
dCBPZmZpY2UgV29yZAAAAEAAAAAAXA8LEQAAAEAAAAAA3HzhH7rLAUAAAAAA1I7rZrnLAUAAAAAA
IFPmsBHTAQMAAAACAAAAAwAAAJICAAADAAAAqA4AAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD+/wAABgECAAAAAAAAAAAAAAAAAAAAAAABAAAAAtXN1ZwuGxCTlwgAKyz5rjAAAAD0AAAADAAA
AAEAAABoAAAADwAAAHAAAAAFAAAAhAAAAAYAAACMAAAAEQAAAJQAAAAXAAAAnAAAAAsAAACkAAAA
EAAAAKwAAAATAAAAtAAAABYAAAC8AAAADQAAAMQAAAAMAAAA0QAAAAIAAADjBAAAHgAAAAwAAABN
aWNyb3NvZnQAAAADAAAAHwAAAAMAAAAIAAAAAwAAADIRAAADAAAAAAAOAAsAAAAAAAAACwAAAAAA
AAALAAAAAAAAAAsAAAAAAAAAHhAAAAEAAAABAAAAAAwQAAACAAAAHgAAAAkAAADN4Ofi4O3o5QAD
AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIA
AAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAA
ABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAA
HwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAt
AAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsA
AAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAA
AEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAFYAAABXAAAA
WAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAP7///9m
AAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQA
AAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIAAAACBAAAAggAA
AIMAAAD+////hQAAAIYAAACHAAAAiAAAAIkAAACKAAAAiwAAAIwAAACNAAAAjgAAAI8AAACQAAAA
kQAAAJIAAACTAAAAlAAAAJUAAACWAAAAlwAAAJgAAACZAAAAmgAAAJsAAACcAAAAnQAAAJ4AAACf
AAAA/v///6EAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAAD+////qQAAAKoAAACrAAAArAAAAK0A
AACuAAAArwAAAP7////9/////f///7MAAAC0AAAA/v////7///+3AAAA/v//////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////1IAbwBvAHQA
IABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW
AAUB//////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAAGC1EPewEdMBtgAAAAAD
AAAAAAAARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAoAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABlAAAA3zwAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAAEAAAD//////////wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAACZNgAAAAAAAFcAbwByAGQARABvAGMAdQBtAGUAbgB0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAIBCgAAAAUAAAD/////
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTIAAAAAAAABQBTAHUAbQBt
AGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
AgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAABAA
AAAAAAAFAEQAbwBjAHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8A
bgAAAAAAAAAAAAAAOAACAQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAKgAAAAAEAAAAAAAAE0AcwBvAEQAYQB0AGEAUwB0AG8AcgBlAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAEA//////////8HAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABwpwT3sBHTAfCjD/ewEdMBAAAAAAAAAAAAAAAAwQDaANgAWgBWAFcAVwDbAMIAVQAwAEsA
2ABTAFgA0gDTANYAQgDXAN0AUQA9AD0AAAAAAAAAAAAAAAAAAAAAADIAAQH//////////wgAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAIDOBPewEdMB8KMP97AR0wEAAAAAAAAAAAAAAABJAHQAZQBtAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAC
Af////8JAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA
AAAAAFAAcgBvAHAAZQByAHQAaQBlAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAWAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAABAAAAFUBAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgECAAAABgAAAP////8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAA
AP7///8FAAAABgAAAAcAAAAIAAAACQAAAP7///8LAAAA/v//////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////PGI6U291cmNlcyBT
ZWxlY3RlZFN0eWxlPSJcQVBBLlhTTCIgU3R5bGVOYW1lPSJBUEEiIHhtbG5zOmI9Imh0dHA6Ly9z
Y2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2JpYmxpb2dyYXBo
eSIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVu
dC8yMDA2L2JpYmxpb2dyYXBoeSI+PC9iOlNvdXJjZXM+DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFu
ZGFsb25lPSJubyI/Pg0KPGRzOmRhdGFzdG9yZUl0ZW0gZHM6aXRlbUlEPSJ7NTUxOUFFODctQkI2
NS00Njg5LThBRTEtMjVGMkNGNjA3N0Y1fSIgeG1sbnM6ZHM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54
bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2N1c3RvbVhtbCI+PGRzOnNjaGVtYVJl
ZnM+PGRzOnNjaGVtYVJlZiBkczp1cmk9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9y
Zy9vZmZpY2VEb2N1bWVudC8yMDA2L2JpYmxpb2dyYXBoeSIvPjwvZHM6c2NoZW1hUmVmcz48L2Rz
OmRhdGFzdG9yZUl0ZW0+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAEA/v8DCgAA/////wYJAgAAAAAAwAAAAAAAAEYgAAAAxO7q8+zl7fIgTWljcm9zb2Z0IFdvcmQg
OTctMjAwMwAKAAAATVNXb3JkRG9jABAAAABXb3JkLkRvY3VtZW50LjgA9DmycQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
^ permalink raw reply
* Re: [PATCH] net/sched: reset block pointer in tcf_block_put()
From: Konstantin Khlebnikov @ 2017-08-14 12:59 UTC (permalink / raw)
To: Cong Wang
Cc: Linux Kernel Network Developers, Jiri Pirko, David S. Miller,
Jamal Hadi Salim
In-Reply-To: <CAM_iQpUJRAn75aBrBzoWABt21tgTYLo1MPNQwTUa9BSs0QXyaQ@mail.gmail.com>
On 12.08.2017 00:38, Cong Wang wrote:
> On Fri, Aug 11, 2017 at 1:36 PM, Konstantin Khlebnikov
> <khlebnikov@yandex-team.ru> wrote:
>>
>>
>> On 11.08.2017 23:18, Cong Wang wrote:
>>>
>>> On Thu, Aug 10, 2017 at 2:31 AM, Konstantin Khlebnikov
>>> <khlebnikov@yandex-team.ru> wrote:
>>>>
>>>> In previous API tcf_destroy_chain() could be called several times and
>>>> some schedulers like hfsc and atm use that. In new API tcf_block_put()
>>>> frees block but leaves stale pointer, second call will free it once
>>>> again.
>>>
>>>
>>> Which call path do we call tcf_block_put() for multiple times on
>>> the same block? Please be specific, it is not obvious.
>>>
>>
>> For example in hfsc_destroy_qdisc() since
>> a4aebb83cf0da0363684f1c339f7e6149a3e74c1
>> second time in hfsc_destroy_class() called from it.
>>
>> Actually, I see the same pattern in all classy qdiscs.
>
> Good find! But that means we can just move it up??
> Something like (PoC only, not even compile):
This should work, I suppose.
But this approach requires careful review for all qdisc, mine is completely mechanical.
>
> diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
> index b52f74610dc7..c7db8060e8ef 100644
> --- a/net/sched/sch_hfsc.c
> +++ b/net/sched/sch_hfsc.c
> @@ -1099,7 +1099,6 @@ hfsc_destroy_class(struct Qdisc *sch, struct
> hfsc_class *cl)
> {
> struct hfsc_sched *q = qdisc_priv(sch);
>
> - tcf_block_put(cl->block);
> qdisc_destroy(cl->qdisc);
> gen_kill_estimator(&cl->rate_est);
> if (cl != &q->root)
> @@ -1243,8 +1242,10 @@ hfsc_put_class(struct Qdisc *sch, unsigned long arg)
> {
> struct hfsc_class *cl = (struct hfsc_class *)arg;
>
> - if (--cl->refcnt == 0)
> + if (--cl->refcnt == 0) {
> + tcf_block_put(cl->block);
> hfsc_destroy_class(sch, cl);
> + }
> }
>
> static unsigned long
>
^ permalink raw reply
* RE: [RFC PATCH 2/2] bpf: Initialise mod[] in bpf_trace_printk
From: David Laight @ 2017-08-14 12:44 UTC (permalink / raw)
To: 'Daniel Borkmann', James Hogan, David Miller
Cc: ast@kernel.org, linux-kernel@vger.kernel.org, rostedt@goodmis.org,
mingo@redhat.com, netdev@vger.kernel.org
In-Reply-To: <598DDF88.6020809@iogearbox.net>
From: Daniel Borkmann
> Sent: 11 August 2017 17:47
> On 08/09/2017 10:34 PM, Daniel Borkmann wrote:
> > On 08/09/2017 09:39 AM, James Hogan wrote:
> > [...]
> >> time (but please consider looking at the other patch which is certainly
> >> a more real issue).
> >
> > Sorry for the delay, started looking into that and whether we
> > have some other options, I'll get back to you on this.
>
> Could we solve this more generically (as in: originally intended) in
> the sense that we don't need to trust the gcc va_list handling; I feel
> this is relying on an implementation detail? Perhaps something like
> below poc patch?
That patch still has 'cond ? arg : cond1 ? (long)arg : (u32)arg' so
probably has the same warning as the original version.
The va_list handling is defined by the relevant ABI, not gcc.
It is ok on x86-64 because all 32bit values are extended to 64bits
before being passed as arguments (either in registers, or on the stack).
Nothing in the C language requires that, so other 64bit architectures
could pass 32bit values in 4 bytes of stack.
David
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox