Kernel
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- 55 participants
- 16918 discussions

[PATCH openEuler-1.0-LTS] scsi: stex: Properly zero out the passthrough command structure
by Yongqiang Liu 31 Oct '22
by Yongqiang Liu 31 Oct '22
31 Oct '22
From: Linus Torvalds <torvalds(a)linux-foundation.org>
stable inclusion
from stable-v4.19.262
commit a99c5e38dc6c3dc3da28489b78db09a4b9ffc8c3
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5ROPX
CVE: CVE-2022-40768
-------------------------------
commit 6022f210461fef67e6e676fd8544ca02d1bcfa7a upstream.
The passthrough structure is declared off of the stack, so it needs to be
set to zero before copied back to userspace to prevent any unintentional
data leakage. Switch things to be statically allocated which will fill the
unused fields with 0 automatically.
Link: https://lore.kernel.org/r/YxrjN3OOw2HHl9tx@kroah.com
Cc: stable(a)kernel.org
Cc: "James E.J. Bottomley" <jejb(a)linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen(a)oracle.com>
Cc: Dan Carpenter <dan.carpenter(a)oracle.com>
Reported-by: hdthky <hdthky0(a)gmail.com>
Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Martin K. Petersen <martin.petersen(a)oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Lu Jialin <lujialin4(a)huawei.com>
Reviewed-by: GONG Ruiqi <gongruiqi1(a)huawei.com>
Reviewed-by: Cai Xinchen <caixinchen1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/scsi/stex.c | 17 +++++++++--------
include/scsi/scsi_cmnd.h | 2 +-
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c
index 9b20643ab49d..124a5d0ec05c 100644
--- a/drivers/scsi/stex.c
+++ b/drivers/scsi/stex.c
@@ -673,16 +673,17 @@ stex_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
return 0;
case PASSTHRU_CMD:
if (cmd->cmnd[1] == PASSTHRU_GET_DRVVER) {
- struct st_drvver ver;
+ const struct st_drvver ver = {
+ .major = ST_VER_MAJOR,
+ .minor = ST_VER_MINOR,
+ .oem = ST_OEM,
+ .build = ST_BUILD_VER,
+ .signature[0] = PASSTHRU_SIGNATURE,
+ .console_id = host->max_id - 1,
+ .host_no = hba->host->host_no,
+ };
size_t cp_len = sizeof(ver);
- ver.major = ST_VER_MAJOR;
- ver.minor = ST_VER_MINOR;
- ver.oem = ST_OEM;
- ver.build = ST_BUILD_VER;
- ver.signature[0] = PASSTHRU_SIGNATURE;
- ver.console_id = host->max_id - 1;
- ver.host_no = hba->host->host_no;
cp_len = scsi_sg_copy_from_buffer(cmd, &ver, cp_len);
cmd->result = sizeof(ver) == cp_len ?
DID_OK << 16 | COMMAND_COMPLETE << 8 :
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index 4c47157c01cc..d5ead17c9252 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -233,7 +233,7 @@ static inline struct scsi_data_buffer *scsi_out(struct scsi_cmnd *cmd)
}
static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd,
- void *buf, int buflen)
+ const void *buf, int buflen)
{
return sg_copy_from_buffer(scsi_sglist(cmd), scsi_sg_count(cmd),
buf, buflen);
--
2.25.1
1
0
Sorry! The Zoom meeting will be held at 2022-11-04 14:00 scheduled by openEuler Kernel SIG has been cancelled.
1
0
您好!
Kernel SIG 邀请您参加 2022-11-04 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG双周例会
会议内容:
1. 进展update
2. 议题征集中
欢迎大家积极申报议题~
会议链接:https://us06web.zoom.us/j/88363936462?pwd=MEpPRWZKWFd2ejFWalNQQythd1JSdz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-11-04 14:00,
The subject of the conference is openEuler Kernel SIG双周例会,
Summary:
1. 进展update
2. 议题征集中
欢迎大家积极申报议题~
You can join the meeting at https://us06web.zoom.us/j/88363936462?pwd=MEpPRWZKWFd2ejFWalNQQythd1JSdz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS] nilfs2: fix leak of nilfs_root in case of writer thread creation failure
by Yongqiang Liu 29 Oct '22
by Yongqiang Liu 29 Oct '22
29 Oct '22
From: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
mainline inclusion
from mainline-v6.1-rc1
commit d0d51a97063db4704a5ef6bc978dddab1636a306
category: bugfix
bugzilla: 187884, https://gitee.com/src-openeuler/kernel/issues/I5X2OB
CVE: CVE-2022-3646
--------------------------------
If nilfs_attach_log_writer() failed to create a log writer thread, it
frees a data structure of the log writer without any cleanup. After
commit e912a5b66837 ("nilfs2: use root object to get ifile"), this causes
a leak of struct nilfs_root, which started to leak an ifile metadata inode
and a kobject on that struct.
In addition, if the kernel is booted with panic_on_warn, the above
ifile metadata inode leak will cause the following panic when the
nilfs2 kernel module is removed:
kmem_cache_destroy nilfs2_inode_cache: Slab cache still has objects when
called from nilfs_destroy_cachep+0x16/0x3a [nilfs2]
WARNING: CPU: 8 PID: 1464 at mm/slab_common.c:494 kmem_cache_destroy+0x138/0x140
...
RIP: 0010:kmem_cache_destroy+0x138/0x140
Code: 00 20 00 00 e8 a9 55 d8 ff e9 76 ff ff ff 48 8b 53 60 48 c7 c6 20 70 65 86 48 c7 c7 d8 69 9c 86 48 8b 4c 24 28 e8 ef 71 c7 00 <0f> 0b e9 53 ff ff ff c3 48 81 ff ff 0f 00 00 77 03 31 c0 c3 53 48
...
Call Trace:
<TASK>
? nilfs_palloc_freev.cold.24+0x58/0x58 [nilfs2]
nilfs_destroy_cachep+0x16/0x3a [nilfs2]
exit_nilfs_fs+0xa/0x1b [nilfs2]
__x64_sys_delete_module+0x1d9/0x3a0
? __sanitizer_cov_trace_pc+0x1a/0x50
? syscall_trace_enter.isra.19+0x119/0x190
do_syscall_64+0x34/0x80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
...
</TASK>
Kernel panic - not syncing: panic_on_warn set ...
This patch fixes these issues by calling nilfs_detach_log_writer() cleanup
function if spawning the log writer thread fails.
Link: https://lkml.kernel.org/r/20221007085226.57667-1-konishi.ryusuke@gmail.com
Fixes: e912a5b66837 ("nilfs2: use root object to get ifile")
Signed-off-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Reported-by: syzbot+7381dc4ad60658ca4c05(a)syzkaller.appspotmail.com
Tested-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
Conflict:
fs/nilfs2/segment.c
Signed-off-by: Baokun Li <libaokun1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/nilfs2/segment.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
index 445eef41bfaf..2104be29417b 100644
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
@@ -2781,10 +2781,9 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root)
return -ENOMEM;
err = nilfs_segctor_start_thread(nilfs->ns_writer);
- if (err) {
- kfree(nilfs->ns_writer);
- nilfs->ns_writer = NULL;
- }
+ if (unlikely(err))
+ nilfs_detach_log_writer(sb);
+
return err;
}
--
2.25.1
1
1

29 Oct '22
From: Peilin Ye <peilin.ye(a)bytedance.com>
stable inclusion
from stable-v4.19.256
commit 2fc2a7767f661e6083f69588718cdf6f07cb9330
category: bugfix
bugzilla: 187891, https://gitee.com/src-openeuler/kernel/issues/I5WYLL
CVE: CVE-2022-3629
--------------------------------
commit 7e97cfed9929eaabc41829c395eb0d1350fccb9d upstream.
An O_NONBLOCK vsock_connect() request may try to reschedule
@connect_work. Imagine the following sequence of vsock_connect()
requests:
1. The 1st, non-blocking request schedules @connect_work, which will
expire after 200 jiffies. Socket state is now SS_CONNECTING;
2. Later, the 2nd, blocking request gets interrupted by a signal after
a few jiffies while waiting for the connection to be established.
Socket state is back to SS_UNCONNECTED, but @connect_work is still
pending, and will expire after 100 jiffies.
3. Now, the 3rd, non-blocking request tries to schedule @connect_work
again. Since @connect_work is already scheduled,
schedule_delayed_work() silently returns. sock_hold() is called
twice, but sock_put() will only be called once in
vsock_connect_timeout(), causing a memory leak reported by syzbot:
BUG: memory leak
unreferenced object 0xffff88810ea56a40 (size 1232):
comm "syz-executor756", pid 3604, jiffies 4294947681 (age 12.350s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
28 00 07 40 00 00 00 00 00 00 00 00 00 00 00 00 (..@............
backtrace:
[<ffffffff837c830e>] sk_prot_alloc+0x3e/0x1b0 net/core/sock.c:1930
[<ffffffff837cbe22>] sk_alloc+0x32/0x2e0 net/core/sock.c:1989
[<ffffffff842ccf68>] __vsock_create.constprop.0+0x38/0x320 net/vmw_vsock/af_vsock.c:734
[<ffffffff842ce8f1>] vsock_create+0xc1/0x2d0 net/vmw_vsock/af_vsock.c:2203
[<ffffffff837c0cbb>] __sock_create+0x1ab/0x2b0 net/socket.c:1468
[<ffffffff837c3acf>] sock_create net/socket.c:1519 [inline]
[<ffffffff837c3acf>] __sys_socket+0x6f/0x140 net/socket.c:1561
[<ffffffff837c3bba>] __do_sys_socket net/socket.c:1570 [inline]
[<ffffffff837c3bba>] __se_sys_socket net/socket.c:1568 [inline]
[<ffffffff837c3bba>] __x64_sys_socket+0x1a/0x20 net/socket.c:1568
[<ffffffff84512815>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
[<ffffffff84512815>] do_syscall_64+0x35/0x80 arch/x86/entry/common.c:80
[<ffffffff84600068>] entry_SYSCALL_64_after_hwframe+0x44/0xae
<...>
Use mod_delayed_work() instead: if @connect_work is already scheduled,
reschedule it, and undo sock_hold() to keep the reference count
balanced.
Reported-and-tested-by: syzbot+b03f55bf128f9a38f064(a)syzkaller.appspotmail.com
Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
Co-developed-by: Stefano Garzarella <sgarzare(a)redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare(a)redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare(a)redhat.com>
Signed-off-by: Peilin Ye <peilin.ye(a)bytedance.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Dong Chenchen <dongchenchen2(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/vmw_vsock/af_vsock.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 4f9a0635d723..ed715ccca9a9 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -1213,7 +1213,14 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr,
* timeout fires.
*/
sock_hold(sk);
- schedule_delayed_work(&vsk->connect_work, timeout);
+
+ /* If the timeout function is already scheduled,
+ * reschedule it, then ungrab the socket refcount to
+ * keep it balanced.
+ */
+ if (mod_delayed_work(system_wq, &vsk->connect_work,
+ timeout))
+ sock_put(sk);
/* Skip ahead to preserve error code set above. */
goto out_wait;
--
2.25.1
1
0
This patch set contains code optimizations and bugfixes for the sharepool.
Chen Jun (5):
sharepool: Make the definitions of MMAP_SHARE_POOL_{START|16G_START}
more readable
sharepool: Rename sp_mapping.flag to sp_mapping.type
sharepool: replace spg->{dvpp|normal} with
spg->mapping[SP_MAPPING_{DVPP|NORMAL}]
sharepool: Extract sp_mapping_find
sharepool: Support alloc ro mapping
Guo Mengqi (14):
mm: sharepool: remove deprecated interfaces
mm: sharepool: proc_sp_group_state bugfix
mm: sharepool: fix dvpp spm redundant print error
mm: sharepool: fix statistics error
mm: sharepool: fix static code-check errors
mm: sharepool: delete redundant codes
mm: sharepool: fix softlockup in high pressure use case.
mm: sharepool: fix deadlock in spa_stat_of_mapping_show
mm: sharepool: fix deadlock in sp_check_mmap_addr
mm: sharepool: delete unused codes
mm: sharepool: fix potential AA deadlock
mm: sharepool: check size=0 in mg_sp_make_share_k2u()
mm: sharepool: fix hugepage_rsvd count increase error
Fix sharepool hugepage cgroup uncount error.
Wang Wensheng (3):
mm/sharepool: Delete unused sysctl interface
mm/sharepool: Fix UAF reported by KASAN
mm/sharepool: Rebind the numa node when fallback to normal pages
Zhang Zekun (11):
mm: sharepool: Remove unused sp_dev_va_start and sp_dev_va_size
mm: sharepool: Remove sp_device_number_detect function
mm: sharepool: Remove enable_mdc_default_group and change the
definition of is_process_in_group()
mm: sharepool: Remove the comment and fix a bug in
mg_sp_group_id_by_pid()
mm: sharepool: Add a read lock in proc_usage_show()
mm: share_pool: Fix CodeCheck2.0 static warning
Fix CodeCheck2.0 static check warning
Fix the broken logic in mg_sp_group_add_task()
Renaming __insert_sp_area to insert_sp_area
Renaming __find_sp_area_locked to find_sp_area_locked
Use space instead of tap before '*normal' and '*dvpp'
Zhou Guanghui (6):
mm/share pool: delete unnecessary judgment
mm/share pool: Avoid UAF on spa
mm/share pool: Check the maximum value of spg_id
mm/share pool: Avoid UAF on mm
mm/sharepool: bugfix for 2M U2K
mm/share pool: fix the incorrect judgement of the addr range
fs/hugetlbfs/inode.c | 19 +-
include/linux/hugetlb.h | 6 +-
include/linux/share_pool.h | 168 ++-----
kernel/sysctl.c | 67 ---
mm/hugetlb.c | 3 +
mm/share_pool.c | 882 +++++++++++++------------------------
6 files changed, 363 insertions(+), 782 deletions(-)
--
2.17.1
1
39

[PATCH openEuler-1.0-LTS 1/2] sch_sfb: Don't assume the skb is still around after enqueueing to child
by Yongqiang Liu 27 Oct '22
by Yongqiang Liu 27 Oct '22
27 Oct '22
From: Toke Høiland-Jørgensen <toke(a)toke.dk>
stable inclusion
from stable-v4.19.258
commit 9245ed20950afe225bc6d1c4b9d28d55aa152e25
category: bugfix
bugzilla: 187862, https://gitee.com/src-openeuler/kernel/issues/I5WF14
CVE: CVE-2022-3586
--------------------------------
[ Upstream commit 9efd23297cca530bb35e1848665805d3fcdd7889 ]
The sch_sfb enqueue() routine assumes the skb is still alive after it has
been enqueued into a child qdisc, using the data in the skb cb field in the
increment_qlen() routine after enqueue. However, the skb may in fact have
been freed, causing a use-after-free in this case. In particular, this
happens if sch_cake is used as a child of sfb, and the GSO splitting mode
of CAKE is enabled (in which case the skb will be split into segments and
the original skb freed).
Fix this by copying the sfb cb data to the stack before enqueueing the skb,
and using this stack copy in increment_qlen() instead of the skb pointer
itself.
Reported-by: zdi-disclosures(a)trendmicro.com # ZDI-CAN-18231
Fixes: e13e02a3c68d ("net_sched: SFB flow scheduler")
Signed-off-by: Toke Høiland-Jørgensen <toke(a)toke.dk>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: chenweilong <chenweilong(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/sched/sch_sfb.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/net/sched/sch_sfb.c b/net/sched/sch_sfb.c
index 1aa95e761671..5e237f978075 100644
--- a/net/sched/sch_sfb.c
+++ b/net/sched/sch_sfb.c
@@ -139,15 +139,15 @@ static void increment_one_qlen(u32 sfbhash, u32 slot, struct sfb_sched_data *q)
}
}
-static void increment_qlen(const struct sk_buff *skb, struct sfb_sched_data *q)
+static void increment_qlen(const struct sfb_skb_cb *cb, struct sfb_sched_data *q)
{
u32 sfbhash;
- sfbhash = sfb_hash(skb, 0);
+ sfbhash = cb->hashes[0];
if (sfbhash)
increment_one_qlen(sfbhash, 0, q);
- sfbhash = sfb_hash(skb, 1);
+ sfbhash = cb->hashes[1];
if (sfbhash)
increment_one_qlen(sfbhash, 1, q);
}
@@ -287,6 +287,7 @@ static int sfb_enqueue(struct sk_buff *skb, struct Qdisc *sch,
struct sfb_sched_data *q = qdisc_priv(sch);
struct Qdisc *child = q->qdisc;
struct tcf_proto *fl;
+ struct sfb_skb_cb cb;
int i;
u32 p_min = ~0;
u32 minqlen = ~0;
@@ -403,11 +404,12 @@ static int sfb_enqueue(struct sk_buff *skb, struct Qdisc *sch,
}
enqueue:
+ memcpy(&cb, sfb_skb_cb(skb), sizeof(cb));
ret = qdisc_enqueue(skb, child, to_free);
if (likely(ret == NET_XMIT_SUCCESS)) {
qdisc_qstats_backlog_inc(sch, skb);
sch->q.qlen++;
- increment_qlen(skb, q);
+ increment_qlen(&cb, q);
} else if (net_xmit_drop_count(ret)) {
q->stats.childdrop++;
qdisc_qstats_drop(sch);
--
2.25.1
1
1

27 Oct '22
From: Paolo Abeni <pabeni(a)redhat.com>
mainline inclusion
from mainline-v5.3-rc1
commit e473093639945cb0a07ad4d51d5fd3fc3c3708cf
category: bugfix
bugzilla: 187846, https://gitee.com/src-openeuler/kernel/issues/I5W7YP
CVE: CVE-2022-3567
---------------------------
The same code is replicated verbatim in multiple places, and the next
patches will introduce an additional user for it. Factor out a
helper and use it where appropriate. No functional change intended.
Signed-off-by: Paolo Abeni <pabeni(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
include/net/inet_common.h | 1 +
net/ipv4/af_inet.c | 21 +++++++++++++--------
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/include/net/inet_common.h b/include/net/inet_common.h
index 3ca969cbd161..4c2a6b175b34 100644
--- a/include/net/inet_common.h
+++ b/include/net/inet_common.h
@@ -23,6 +23,7 @@ int inet_dgram_connect(struct socket *sock, struct sockaddr *uaddr,
int addr_len, int flags);
int inet_accept(struct socket *sock, struct socket *newsock, int flags,
bool kern);
+int inet_send_prepare(struct sock *sk);
int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size);
ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset,
size_t size, int flags);
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index ba716480f2f1..d526dd68589d 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -784,10 +784,8 @@ int inet_getname(struct socket *sock, struct sockaddr *uaddr,
}
EXPORT_SYMBOL(inet_getname);
-int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
+int inet_send_prepare(struct sock *sk)
{
- struct sock *sk = sock->sk;
-
sock_rps_record_flow(sk);
/* We may need to bind the socket. */
@@ -795,6 +793,17 @@ int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
inet_autobind(sk))
return -EAGAIN;
+ return 0;
+}
+EXPORT_SYMBOL_GPL(inet_send_prepare);
+
+int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
+{
+ struct sock *sk = sock->sk;
+
+ if (unlikely(inet_send_prepare(sk)))
+ return -EAGAIN;
+
return sk->sk_prot->sendmsg(sk, msg, size);
}
EXPORT_SYMBOL(inet_sendmsg);
@@ -804,11 +813,7 @@ ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset,
{
struct sock *sk = sock->sk;
- sock_rps_record_flow(sk);
-
- /* We may need to bind the socket. */
- if (!inet_sk(sk)->inet_num && !sk->sk_prot->no_autobind &&
- inet_autobind(sk))
+ if (unlikely(inet_send_prepare(sk)))
return -EAGAIN;
if (sk->sk_prot->sendpage)
--
2.25.1
1
3

[PATCH openEuler-5.10 01/53] ubifs: Rectify space budget for ubifs_symlink() if symlink is encrypted
by Zheng Zengkai 27 Oct '22
by Zheng Zengkai 27 Oct '22
27 Oct '22
From: Zhihao Cheng <chengzhihao1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187685, https://gitee.com/openeuler/kernel/issues/I5VVZX
CVE: NA
--------------------------------
Fix bad space budget when symlink file is encrypted. Bad space budget
may let make_reservation() return with -ENOSPC, which could turn ubifs
to read-only mode in do_writepage() process.
Fetch a reproducer in [Link].
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216490
Fixes: ca7f85be8d6cf9 ("ubifs: Add support for encrypted symlinks")
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/ubifs/dir.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index acd7e83a35e4..647a47ade5bd 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -1148,7 +1148,6 @@ static int ubifs_symlink(struct inode *dir, struct dentry *dentry,
int err, sz_change, len = strlen(symname);
struct fscrypt_str disk_link;
struct ubifs_budget_req req = { .new_ino = 1, .new_dent = 1,
- .new_ino_d = ALIGN(len, 8),
.dirtied_ino = 1 };
struct fscrypt_name nm;
@@ -1164,6 +1163,7 @@ static int ubifs_symlink(struct inode *dir, struct dentry *dentry,
* Budget request settings: new inode, new direntry and changing parent
* directory inode.
*/
+ req.new_ino_d = ALIGN(disk_link.len - 1, 8);
err = ubifs_budget_space(c, &req);
if (err)
return err;
--
2.20.1
1
52
From: Ke Chen <chenke54(a)huawei.com>
driver inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5WKYW
-----------------------------------------------------------------------
Add ROH device driver support, include:
1. roh core initialization
2. provide a registration framework for roh device.
3. etc.
Signed-off-by: Ke Chen <chenke54(a)huawei.com>
Reviewed-by: Gang Zhang <gang.zhang(a)huawei.com>
Reviewed-by: Yefeng Yan <yanyefeng(a)huawei.com>
Reviewed-by: Jingchao Dai <daijingchao1(a)huawei.com>
---
drivers/Kconfig | 3 +
drivers/Makefile | 1 +
drivers/roh/Kconfig | 16 ++
drivers/roh/Makefile | 6 +
drivers/roh/core/Makefile | 7 +
drivers/roh/core/core.c | 481 +++++++++++++++++++++++++++++++++++
drivers/roh/core/core.h | 103 ++++++++
drivers/roh/core/core_priv.h | 21 ++
drivers/roh/core/main.c | 28 ++
9 files changed, 666 insertions(+)
create mode 100644 drivers/roh/Kconfig
create mode 100644 drivers/roh/Makefile
create mode 100644 drivers/roh/core/Makefile
create mode 100644 drivers/roh/core/core.c
create mode 100644 drivers/roh/core/core.h
create mode 100644 drivers/roh/core/core_priv.h
create mode 100644 drivers/roh/core/main.c
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 9310808ee385..b1b3d958f065 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -237,4 +237,7 @@ source "drivers/interconnect/Kconfig"
source "drivers/counter/Kconfig"
source "drivers/most/Kconfig"
+
+source "drivers/roh/Kconfig"
+
endmenu
diff --git a/drivers/Makefile b/drivers/Makefile
index fd9c0b3da5f1..57e3773affcd 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -191,3 +191,4 @@ obj-$(CONFIG_GNSS) += gnss/
obj-$(CONFIG_INTERCONNECT) += interconnect/
obj-$(CONFIG_COUNTER) += counter/
obj-$(CONFIG_MOST) += most/
+obj-$(CONFIG_ROH) += roh/
diff --git a/drivers/roh/Kconfig b/drivers/roh/Kconfig
new file mode 100644
index 000000000000..0ff2de261827
--- /dev/null
+++ b/drivers/roh/Kconfig
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: GPL-2.0+
+
+menuconfig ROH
+ tristate "ROH support"
+ depends on HAS_IOMEM && HAS_DMA
+ depends on NET
+ depends on INET
+ depends on m
+ select IRQ_POLL
+ select DIMLIB
+ help
+ Core support for ROH. Make sure to also select
+ any protocols you wish to use as well as drivers
+ for your ROH hardware.
+
+ To compile ROH core as module, choose M here.
diff --git a/drivers/roh/Makefile b/drivers/roh/Makefile
new file mode 100644
index 000000000000..e5ea16bd6b21
--- /dev/null
+++ b/drivers/roh/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Makefile for the Linux kernel ROH device drivers.
+#
+
+obj-$(CONFIG_ROH) += core/
diff --git a/drivers/roh/core/Makefile b/drivers/roh/core/Makefile
new file mode 100644
index 000000000000..1c5ab1fc08ea
--- /dev/null
+++ b/drivers/roh/core/Makefile
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Makefile for the Linux kernel ROH Core drivers.
+#
+
+roh_core-objs := main.o core.o
+obj-$(CONFIG_ROH) += roh_core.o
diff --git a/drivers/roh/core/core.c b/drivers/roh/core/core.c
new file mode 100644
index 000000000000..39c1404e0d97
--- /dev/null
+++ b/drivers/roh/core/core.c
@@ -0,0 +1,481 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2022 Hisilicon Limited.
+
+#include <linux/pci.h>
+#include <net/rtnetlink.h>
+
+#include "core.h"
+#include "core_priv.h"
+
+static DEFINE_XARRAY_FLAGS(devices, XA_FLAGS_ALLOC);
+static DECLARE_RWSEM(devices_rwsem);
+#define DEVICE_REGISTERED XA_MARK_1
+
+static u32 highest_client_id;
+#define CLIENT_REGISTERED XA_MARK_1
+static DEFINE_XARRAY_FLAGS(clients, XA_FLAGS_ALLOC);
+static DECLARE_RWSEM(clients_rwsem);
+
+static void roh_client_put(struct roh_client *client)
+{
+ if (refcount_dec_and_test(&client->uses))
+ complete(&client->uses_zero);
+}
+
+#define CLIENT_DATA_REGISTERED XA_MARK_1
+
+static int add_client_context(struct roh_device *device,
+ struct roh_client *client);
+static void remove_client_context(struct roh_device *device,
+ unsigned int client_id);
+static void __roh_unregister_device(struct roh_device *device);
+
+static void roh_device_release(struct device *device)
+{
+ struct roh_device *dev = container_of(device, struct roh_device, dev);
+
+ WARN_ON(refcount_read(&dev->refcount));
+
+ mutex_destroy(&dev->unregistration_lock);
+ xa_destroy(&dev->client_data);
+ kfree(dev);
+}
+
+static int roh_device_uevent(struct device *device, struct kobj_uevent_env *env)
+{
+ struct roh_device *dev = container_of(device, struct roh_device, dev);
+
+ if (add_uevent_var(env, "NAME=%s", dev->name)) {
+ pr_err("failed to do add_uevent_var.\n");
+ return -ENOMEM;
+ }
+
+ return 0;
+}
+
+static struct class roh_class = {
+ .name = "roh",
+ .dev_release = roh_device_release,
+ .dev_uevent = roh_device_uevent,
+};
+
+struct roh_device *roh_alloc_device(size_t size)
+{
+ struct roh_device *device;
+
+ if (WARN_ON(size < sizeof(struct roh_device)))
+ return NULL;
+
+ device = kzalloc(size, GFP_KERNEL);
+ if (!device)
+ return NULL;
+
+ device->dev.class = &roh_class;
+
+ device_initialize(&device->dev);
+ dev_set_drvdata(&device->dev, device);
+
+ mutex_init(&device->unregistration_lock);
+
+ xa_init_flags(&device->client_data, XA_FLAGS_ALLOC);
+ init_rwsem(&device->client_data_rwsem);
+ init_completion(&device->unreg_completion);
+
+ return device;
+}
+EXPORT_SYMBOL(roh_alloc_device);
+
+void roh_dealloc_device(struct roh_device *device)
+{
+ down_write(&devices_rwsem);
+ if (xa_load(&devices, device->index) == device)
+ xa_erase(&devices, device->index);
+ up_write(&devices_rwsem);
+
+ WARN_ON(!xa_empty(&device->client_data));
+ WARN_ON(refcount_read(&device->refcount));
+
+ put_device(&device->dev);
+}
+EXPORT_SYMBOL(roh_dealloc_device);
+
+static int alloc_name(struct roh_device *device)
+{
+ struct roh_device *dev;
+ unsigned long index;
+ struct ida inuse;
+ int rc;
+ int i;
+
+ lockdep_assert_held_write(&devices_rwsem);
+
+ ida_init(&inuse);
+ xa_for_each(&devices, index, dev) {
+ char buf[ROH_DEVICE_NAME_MAX];
+
+ if (sscanf(dev_name(&dev->dev), device->name, &i) != 1)
+ continue;
+ if (i < 0 || i >= INT_MAX)
+ continue;
+ rc = snprintf(buf, sizeof(buf), device->name, i);
+ if (rc >= sizeof(buf) || rc < 0) {
+ ida_destroy(&inuse);
+ pr_err("device name is too long.\n");
+ return -EINVAL;
+ }
+
+ if (strcmp(buf, dev_name(&dev->dev)) != 0)
+ continue;
+
+ rc = ida_alloc_range(&inuse, i, i, GFP_KERNEL);
+ if (rc < 0)
+ goto out;
+ }
+
+ rc = ida_alloc(&inuse, GFP_KERNEL);
+ if (rc < 0)
+ goto out;
+
+ rc = dev_set_name(&device->dev, device->name, rc);
+
+out:
+ ida_destroy(&inuse);
+ return rc;
+}
+
+static void roh_device_put(struct roh_device *device)
+{
+ if (refcount_dec_and_test(&device->refcount))
+ complete(&device->unreg_completion);
+}
+
+struct roh_device *__roh_device_get_by_name(const char *name)
+{
+ struct roh_device *device;
+ unsigned long index;
+
+ xa_for_each(&devices, index, device)
+ if (!strcmp(name, dev_name(&device->dev)))
+ return device;
+
+ return NULL;
+}
+
+static int assign_name(struct roh_device *device)
+{
+ static u32 last_id;
+ int ret;
+
+ down_write(&devices_rwsem);
+ if (strchr(device->name, '%'))
+ ret = alloc_name(device);
+ else
+ ret = dev_set_name(&device->dev, device->name);
+
+ if (ret)
+ goto out;
+
+ if (__roh_device_get_by_name(dev_name(&device->dev))) {
+ ret = -ENFILE;
+ goto out;
+ }
+
+ strlcpy(device->name, dev_name(&device->dev), ROH_DEVICE_NAME_MAX);
+ ret = xa_alloc_cyclic(&devices, &device->index, device, xa_limit_31b,
+ &last_id, GFP_KERNEL);
+ if (ret > 0)
+ ret = 0;
+
+out:
+ up_write(&devices_rwsem);
+ return ret;
+}
+
+static void disable_device(struct roh_device *device)
+{
+ u32 cid;
+
+ WARN_ON(!refcount_read(&device->refcount));
+
+ down_write(&devices_rwsem);
+ xa_clear_mark(&devices, device->index, DEVICE_REGISTERED);
+ up_write(&devices_rwsem);
+
+ down_read(&clients_rwsem);
+ cid = highest_client_id;
+ up_read(&clients_rwsem);
+ while (cid) {
+ cid--;
+ remove_client_context(device, cid);
+ }
+
+ roh_device_put(device);
+ wait_for_completion(&device->unreg_completion);
+}
+
+static int enable_device_and_get(struct roh_device *device)
+{
+ struct roh_client *client;
+ unsigned long index;
+ int ret = 0;
+
+ refcount_set(&device->refcount, MAX_DEVICE_REFCOUNT);
+ down_write(&devices_rwsem);
+ xa_set_mark(&devices, device->index, DEVICE_REGISTERED);
+
+ downgrade_write(&devices_rwsem);
+ down_read(&clients_rwsem);
+ xa_for_each_marked(&clients, index, client, CLIENT_REGISTERED) {
+ ret = add_client_context(device, client);
+ if (ret)
+ break;
+ }
+ up_read(&clients_rwsem);
+
+ up_read(&devices_rwsem);
+
+ return ret;
+}
+
+int roh_register_device(struct roh_device *device)
+{
+ int ret;
+
+ ret = assign_name(device);
+ if (ret) {
+ pr_err("roh_core: failed to assigne name, ret = %d\n", ret);
+ return ret;
+ }
+
+ dev_set_uevent_suppress(&device->dev, true);
+ ret = device_add(&device->dev);
+ if (ret) {
+ pr_err("roh_core: failed to add device, ret = %d\n", ret);
+ goto out;
+ }
+
+ ret = enable_device_and_get(device);
+ dev_set_uevent_suppress(&device->dev, false);
+ kobject_uevent(&device->dev.kobj, KOBJ_ADD);
+ if (ret) {
+ roh_device_put(device);
+ __roh_unregister_device(device);
+ return ret;
+ }
+
+ roh_device_put(device);
+
+ return 0;
+out:
+ dev_set_uevent_suppress(&device->dev, false);
+ return ret;
+}
+EXPORT_SYMBOL(roh_register_device);
+
+static void __roh_unregister_device(struct roh_device *device)
+{
+ mutex_lock(&device->unregistration_lock);
+ if (!refcount_read(&device->refcount))
+ goto out;
+
+ disable_device(device);
+ device_del(&device->dev);
+
+out:
+ mutex_unlock(&device->unregistration_lock);
+}
+
+void roh_unregister_device(struct roh_device *device)
+{
+ get_device(&device->dev);
+
+ __roh_unregister_device(device);
+ put_device(&device->dev);
+}
+EXPORT_SYMBOL(roh_unregister_device);
+
+void roh_set_client_data(struct roh_device *device, struct roh_client *client,
+ void *data)
+{
+ void *rc;
+
+ if (WARN_ON(IS_ERR(data)))
+ data = NULL;
+
+ rc = xa_store(&device->client_data, client->client_id, data,
+ GFP_KERNEL);
+ WARN_ON(xa_is_err(rc));
+}
+
+static void remove_client_context(struct roh_device *device,
+ unsigned int client_id)
+{
+ struct roh_client *client;
+ void *client_data;
+
+ down_write(&device->client_data_rwsem);
+ if (!xa_get_mark(&device->client_data, client_id,
+ CLIENT_DATA_REGISTERED)) {
+ up_write(&device->client_data_rwsem);
+ return;
+ }
+ client_data = xa_load(&device->client_data, client_id);
+ xa_clear_mark(&device->client_data, client_id, CLIENT_DATA_REGISTERED);
+ client = xa_load(&clients, client_id);
+ up_write(&device->client_data_rwsem);
+
+ if (client->remove)
+ client->remove(device, client_data);
+
+ xa_erase(&device->client_data, client_id);
+ roh_device_put(device);
+ roh_client_put(client);
+}
+
+static int add_client_context(struct roh_device *device,
+ struct roh_client *client)
+{
+ int ret = 0;
+
+ down_write(&device->client_data_rwsem);
+ if (!refcount_inc_not_zero(&client->uses))
+ goto out_unlock;
+ refcount_inc(&device->refcount);
+
+ if (xa_get_mark(&device->client_data, client->client_id,
+ CLIENT_DATA_REGISTERED))
+ goto out;
+
+ ret = xa_err(xa_store(&device->client_data, client->client_id, NULL,
+ GFP_KERNEL));
+ if (ret)
+ goto out;
+
+ downgrade_write(&device->client_data_rwsem);
+ if (client->add) {
+ if (client->add(device)) {
+ xa_erase(&device->client_data, client->client_id);
+ up_read(&device->client_data_rwsem);
+ roh_device_put(device);
+ roh_client_put(client);
+ return 0;
+ }
+ }
+
+ xa_set_mark(&device->client_data, client->client_id,
+ CLIENT_DATA_REGISTERED);
+ up_read(&device->client_data_rwsem);
+
+ return 0;
+
+out:
+ roh_device_put(device);
+ roh_client_put(client);
+out_unlock:
+ up_write(&device->client_data_rwsem);
+ return ret;
+}
+
+static int assign_client_id(struct roh_client *client)
+{
+ int ret;
+
+ down_write(&clients_rwsem);
+
+ client->client_id = highest_client_id;
+ ret = xa_insert(&clients, client->client_id, client, GFP_KERNEL);
+ if (ret)
+ goto out;
+
+ highest_client_id++;
+ xa_set_mark(&clients, client->client_id, CLIENT_REGISTERED);
+
+out:
+ up_write(&clients_rwsem);
+ return ret;
+}
+
+static void remove_client_id(struct roh_client *client)
+{
+ down_write(&clients_rwsem);
+ xa_erase(&clients, client->client_id);
+ for (; highest_client_id; highest_client_id--)
+ if (xa_load(&clients, highest_client_id - 1))
+ break;
+ up_write(&clients_rwsem);
+}
+
+int roh_register_client(struct roh_client *client)
+{
+ struct roh_device *device;
+ unsigned long index;
+ int ret;
+
+ refcount_set(&client->uses, 1);
+ init_completion(&client->uses_zero);
+ ret = assign_client_id(client);
+ if (ret)
+ return ret;
+
+ down_read(&devices_rwsem);
+ xa_for_each_marked(&devices, index, device, DEVICE_REGISTERED) {
+ ret = add_client_context(device, client);
+ if (ret) {
+ up_read(&devices_rwsem);
+ roh_unregister_client(client);
+ return ret;
+ }
+ }
+ up_read(&devices_rwsem);
+
+ return 0;
+}
+
+void roh_unregister_client(struct roh_client *client)
+{
+ struct roh_device *device;
+ unsigned long index;
+
+ down_write(&clients_rwsem);
+ roh_client_put(client);
+ xa_clear_mark(&clients, client->client_id, CLIENT_REGISTERED);
+ up_write(&clients_rwsem);
+
+ rcu_read_lock();
+ xa_for_each(&devices, index, device) {
+ if (!roh_device_try_get(device))
+ continue;
+ rcu_read_unlock();
+
+ remove_client_context(device, client->client_id);
+
+ roh_device_put(device);
+ rcu_read_lock();
+ }
+ rcu_read_unlock();
+
+ wait_for_completion(&client->uses_zero);
+ remove_client_id(client);
+}
+
+int roh_core_init(void)
+{
+ int ret;
+
+ ret = class_register(&roh_class);
+ if (ret) {
+ pr_err("roh_core: couldn't create roh device class.\n");
+ return ret;
+ }
+
+ return 0;
+}
+
+void roh_core_cleanup(void)
+{
+ class_unregister(&roh_class);
+}
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Huawei Tech. Co., Ltd.");
+MODULE_DESCRIPTION("ROH Core Driver");
diff --git a/drivers/roh/core/core.h b/drivers/roh/core/core.h
new file mode 100644
index 000000000000..85f676a7a075
--- /dev/null
+++ b/drivers/roh/core/core.h
@@ -0,0 +1,103 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+// Copyright (c) 2022 Hisilicon Limited.
+
+#ifndef __CORE_H__
+#define __CORE_H__
+
+#include <linux/types.h>
+#include <linux/workqueue.h>
+#include <linux/netdevice.h>
+#include <net/bonding.h>
+
+#define ROH_DEVICE_NAME_MAX 64
+#define MAX_DEVICE_REFCOUNT 2
+
+enum roh_dev_tx {
+ ROHDEV_TX_MIN = INT_MIN, /* make sure enum is signed */
+ ROHDEV_TX_OK = 0x00, /* driver took care of packet */
+ ROHDEV_TX_BUSY = 0x10, /* driver tx path was busy */
+ ROHDEV_TX_LOCKED = 0x20 /* driver tx lock was already taken */
+};
+
+enum roh_mib_type { ROH_MIB_PUBLIC = 0, ROH_MIB_PRIVATE };
+
+static inline void convert_eid_to_mac(u8 mac[6], u32 eid)
+{
+ mac[0] = 0;
+ mac[1] = 0;
+ mac[2] = 0;
+ mac[3] = (eid >> 16) & 0xff;
+ mac[4] = (eid >> 8) & 0xff;
+ mac[5] = eid & 0xff;
+}
+
+struct roh_eid_attr {
+ u32 base;
+ u32 num;
+};
+
+struct roh_guid_attr {
+ u8 data[16];
+};
+
+struct roh_mib_stats {
+ struct mutex lock; /* Protect values[] */
+ const char * const *names;
+ u32 num_counters;
+ u64 value[];
+};
+
+struct roh_device;
+struct roh_device_ops {
+ int (*query_guid)(struct roh_device *device, struct roh_guid_attr *attr);
+ int (*set_eid)(struct roh_device *device, struct roh_eid_attr *attr);
+ struct sk_buff *(*pkt_create)(struct net_device *ndev,
+ u8 *dest_mac, u8 *src_mac, int ptype,
+ struct roh_guid_attr *guid, u16 eid_nums);
+ int (*pkt_parse)(struct sk_buff *skb, struct roh_eid_attr *eid_attr, int ptype);
+ enum roh_dev_tx (*xmit_pkt)(struct roh_device *device, struct sk_buff *skb);
+ struct roh_mib_stats *(*alloc_hw_stats)(struct roh_device *device, enum roh_mib_type);
+ int (*get_hw_stats)(struct roh_device *device,
+ struct roh_mib_stats *stats, enum roh_mib_type);
+};
+
+struct roh_device {
+ struct device dev;
+ char name[ROH_DEVICE_NAME_MAX];
+ struct roh_device_ops ops;
+ u32 abi_ver;
+
+ struct rcu_head rcu_head;
+ struct rw_semaphore client_data_rwsem;
+ struct xarray client_data;
+
+ struct module *owner;
+ struct net_device *netdev;
+
+ u32 index;
+ /*
+ * Positive refcount indicates that the device is currently
+ * registered and cannot be unregistered.
+ */
+ refcount_t refcount;
+ struct completion unreg_completion;
+ struct mutex unregistration_lock; /* lock for unregiste */
+};
+
+static inline bool roh_device_try_get(struct roh_device *device)
+{
+ return refcount_inc_not_zero(&device->refcount);
+}
+
+struct roh_device *__roh_device_get_by_name(const char *name);
+
+struct roh_device *roh_alloc_device(size_t size);
+void roh_dealloc_device(struct roh_device *device);
+
+int roh_register_device(struct roh_device *device);
+void roh_unregister_device(struct roh_device *device);
+
+int roh_core_init(void);
+void roh_core_cleanup(void);
+
+#endif /* __CORE_H__ */
diff --git a/drivers/roh/core/core_priv.h b/drivers/roh/core/core_priv.h
new file mode 100644
index 000000000000..7e21cc807044
--- /dev/null
+++ b/drivers/roh/core/core_priv.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+// Copyright (c) 2022 Hisilicon Limited.
+
+#ifndef __CORE_PRIV_H__
+#define __CORE_PRIV_H__
+
+struct roh_client {
+ char *name;
+ int (*add)(struct roh_device *device);
+ void (*remove)(struct roh_device *device, void *client_data);
+ refcount_t uses;
+ u32 client_id;
+ struct completion uses_zero;
+};
+
+int roh_register_client(struct roh_client *client);
+void roh_unregister_client(struct roh_client *client);
+void roh_set_client_data(struct roh_device *device,
+ struct roh_client *client, void *data);
+
+#endif /* __CORE_PRIV_H__ */
diff --git a/drivers/roh/core/main.c b/drivers/roh/core/main.c
new file mode 100644
index 000000000000..0f766f85eaf5
--- /dev/null
+++ b/drivers/roh/core/main.c
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2022 Hisilicon Limited.
+
+#include <linux/init.h>
+#include <linux/module.h>
+
+#include "core.h"
+
+static int __init roh_init(void)
+{
+ int ret;
+
+ ret = roh_core_init();
+ if (ret) {
+ pr_err("roh_core: roh core init failed.\n");
+ return ret;
+ }
+
+ return 0;
+}
+
+static void __exit roh_cleanup(void)
+{
+ roh_core_cleanup();
+}
+
+module_init(roh_init);
+module_exit(roh_cleanup);
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS] nilfs2: fix use-after-free bug of struct nilfs_root
by Yongqiang Liu 27 Oct '22
by Yongqiang Liu 27 Oct '22
27 Oct '22
From: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
mainline inclusion
from mainline-v6.1-rc1
commit d325dc6eb763c10f591c239550b8c7e5466a5d09
category: bugfix
bugzilla: 187877,https://gitee.com/src-openeuler/kernel/issues/I5X3MX
CVE: CVE-2022-3649
--------------------------------
If the beginning of the inode bitmap area is corrupted on disk, an inode
with the same inode number as the root inode can be allocated and fail
soon after. In this case, the subsequent call to nilfs_clear_inode() on
that bogus root inode will wrongly decrement the reference counter of
struct nilfs_root, and this will erroneously free struct nilfs_root,
causing kernel oopses.
This fixes the problem by changing nilfs_new_inode() to skip reserved
inode numbers while repairing the inode bitmap.
Link: https://lkml.kernel.org/r/20221003150519.39789-1-konishi.ryusuke@gmail.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Reported-by: syzbot+b8c672b0e22615c80fe0(a)syzkaller.appspotmail.com
Reported-by: Khalid Masum <khalid.masum.92(a)gmail.com>
Tested-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
Conflict:
fs/nilfs2/inode.c
Signed-off-by: Baokun Li <libaokun1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/nilfs2/inode.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index 671085512e0f..ca380c6d7825 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -335,6 +335,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
struct inode *inode;
struct nilfs_inode_info *ii;
struct nilfs_root *root;
+ struct buffer_head *bh;
int err = -ENOMEM;
ino_t ino;
@@ -350,11 +351,26 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
ii->i_state = BIT(NILFS_I_NEW);
ii->i_root = root;
- err = nilfs_ifile_create_inode(root->ifile, &ino, &ii->i_bh);
+ err = nilfs_ifile_create_inode(root->ifile, &ino, &bh);
if (unlikely(err))
goto failed_ifile_create_inode;
/* reference count of i_bh inherits from nilfs_mdt_read_block() */
+ if (unlikely(ino < NILFS_USER_INO)) {
+ nilfs_msg(sb, KERN_WARNING,
+ "inode bitmap is inconsistent for reserved inodes");
+ do {
+ brelse(bh);
+ err = nilfs_ifile_create_inode(root->ifile, &ino, &bh);
+ if (unlikely(err))
+ goto failed_ifile_create_inode;
+ } while (ino < NILFS_USER_INO);
+
+ nilfs_msg(sb, KERN_INFO,
+ "repaired inode bitmap for reserved inodes");
+ }
+ ii->i_bh = bh;
+
atomic64_inc(&root->inodes_count);
inode_init_owner(inode, dir, mode);
inode->i_ino = ino;
--
2.25.1
1
0

[PATCH openEuler-5.10-LTS] nilfs2: fix use-after-free bug of struct nilfs_root
by Zheng Zengkai 27 Oct '22
by Zheng Zengkai 27 Oct '22
27 Oct '22
From: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
stable inclusion
from stable-v5.10.148
commit 21ee3cffed8fbabb669435facfd576ba18ac8652
category: bugfix
bugzilla:187877,https://gitee.com/src-openeuler/kernel/issues/I5X3MX
CVE: CVE-2022-3649
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit d325dc6eb763c10f591c239550b8c7e5466a5d09 upstream.
If the beginning of the inode bitmap area is corrupted on disk, an inode
with the same inode number as the root inode can be allocated and fail
soon after. In this case, the subsequent call to nilfs_clear_inode() on
that bogus root inode will wrongly decrement the reference counter of
struct nilfs_root, and this will erroneously free struct nilfs_root,
causing kernel oopses.
This fixes the problem by changing nilfs_new_inode() to skip reserved
inode numbers while repairing the inode bitmap.
Link: https://lkml.kernel.org/r/20221003150519.39789-1-konishi.ryusuke@gmail.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Reported-by: syzbot+b8c672b0e22615c80fe0(a)syzkaller.appspotmail.com
Reported-by: Khalid Masum <khalid.masum.92(a)gmail.com>
Tested-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Baokun Li <libaokun1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/nilfs2/inode.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index 95684fa3c985..3e4874b0c55c 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -332,6 +332,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
struct inode *inode;
struct nilfs_inode_info *ii;
struct nilfs_root *root;
+ struct buffer_head *bh;
int err = -ENOMEM;
ino_t ino;
@@ -347,11 +348,25 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
ii->i_state = BIT(NILFS_I_NEW);
ii->i_root = root;
- err = nilfs_ifile_create_inode(root->ifile, &ino, &ii->i_bh);
+ err = nilfs_ifile_create_inode(root->ifile, &ino, &bh);
if (unlikely(err))
goto failed_ifile_create_inode;
/* reference count of i_bh inherits from nilfs_mdt_read_block() */
+ if (unlikely(ino < NILFS_USER_INO)) {
+ nilfs_warn(sb,
+ "inode bitmap is inconsistent for reserved inodes");
+ do {
+ brelse(bh);
+ err = nilfs_ifile_create_inode(root->ifile, &ino, &bh);
+ if (unlikely(err))
+ goto failed_ifile_create_inode;
+ } while (ino < NILFS_USER_INO);
+
+ nilfs_info(sb, "repaired inode bitmap for reserved inodes");
+ }
+ ii->i_bh = bh;
+
atomic64_inc(&root->inodes_count);
inode_init_owner(inode, dir, mode);
inode->i_ino = ino;
--
2.20.1
1
0

[PATCH openEuler-5.10-LTS 01/31] ubifs: Rectify space budget for ubifs_symlink() if symlink is encrypted
by Zheng Zengkai 26 Oct '22
by Zheng Zengkai 26 Oct '22
26 Oct '22
From: Zhihao Cheng <chengzhihao1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187685, https://gitee.com/openeuler/kernel/issues/I5VVZX
CVE: NA
--------------------------------
Fix bad space budget when symlink file is encrypted. Bad space budget
may let make_reservation() return with -ENOSPC, which could turn ubifs
to read-only mode in do_writepage() process.
Fetch a reproducer in [Link].
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216490
Fixes: ca7f85be8d6cf9 ("ubifs: Add support for encrypted symlinks")
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/ubifs/dir.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index f5777f59a101..b73904c1fbf7 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -1145,7 +1145,6 @@ static int ubifs_symlink(struct inode *dir, struct dentry *dentry,
int err, sz_change, len = strlen(symname);
struct fscrypt_str disk_link;
struct ubifs_budget_req req = { .new_ino = 1, .new_dent = 1,
- .new_ino_d = ALIGN(len, 8),
.dirtied_ino = 1 };
struct fscrypt_name nm;
@@ -1161,6 +1160,7 @@ static int ubifs_symlink(struct inode *dir, struct dentry *dentry,
* Budget request settings: new inode, new direntry and changing parent
* directory inode.
*/
+ req.new_ino_d = ALIGN(disk_link.len - 1, 8);
err = ubifs_budget_space(c, &req);
if (err)
return err;
--
2.20.1
1
30
Backport 5.10.127 LTS patches from upstream.
git cherry-pick v5.10.126..v5.10.127~1 -s
Already merged(-1):
3acb7dc242ca vt: drop old FONT ioctls
kabi changed and its related patch(-2):
3ee62a1f0701a nvme: split nvme_alloc_request()
ba388d4e9a68 nvme: don't check nvme_req flags for new req
Total patches: 102 - 1 - 2 = 99
Aidan MacDonald (1):
regmap-irq: Fix a bug in regmap_irq_enable() for type_in_mask chips
Alan Stern (2):
usb: gadget: Fix non-unique driver names in raw-gadget driver
USB: gadget: Fix double-free bug in raw_gadget driver
Alexander Stein (1):
ARM: dts: imx7: Move hsic_phy power domain to HSIC PHY node
Anatolii Gerasymenko (1):
ice: ethtool: advertise 1000M speeds properly
Andrew Donnellan (1):
powerpc/rtas: Allow ibm,platform-dump RTAS call with null buffer
address
Andy Shevchenko (1):
usb: typec: wcove: Drop wrong dependency to INTEL_SOC_PMIC
Baruch Siach (1):
iio: adc: vf610: fix conversion mode sysfs node name
Carlo Lobrano (1):
USB: serial: option: add Telit LE910Cx 0x1250 composition
Chaitanya Kulkarni (2):
nvme: centralize setting the timeout in nvme_alloc_request
nvme: mark nvme_setup_passsthru() inline
Chevron Li (1):
mmc: sdhci-pci-o2micro: Fix card detect by dealing with debouncing
Christoph Hellwig (1):
nvme: move the Samsung X5 quirk entry to the core quirks
Claudiu Manoil (1):
phy: aquantia: Fix AN when higher speeds than 1G are not advertised
Damien Le Moal (1):
scsi: scsi_debug: Fix zone transition to full condition
Dan Carpenter (1):
gpio: winbond: Fix error code in winbond_gpio_get()
David Howells (1):
afs: Fix dynamic root getattr
David Sterba (1):
btrfs: add error messages to all unrecognized mount options
Dmitry Rokosov (3):
iio:chemical:ccs811: rearrange iio trigger get and register
iio:accel:bma180: rearrange iio trigger get and register
iio:accel:mxc4005: rearrange iio trigger get and register
Edward Wu (1):
ata: libata: add qc->flags in ata_qc_complete_template tracepoint
Enzo Matsumiya (1):
nvme-pci: add NO APST quirk for Kioxia device
Eric Dumazet (1):
erspan: do not assume transport header is always set
Florian Westphal (1):
netfilter: use get_random_u32 instead of prandom
Gerd Hoffmann (1):
udmabuf: add back sanity check
Haibo Chen (2):
iio: mma8452: fix probe fail when device tree compatible is used.
iio: accel: mma8452: ignore the return value of reset operation
Hans de Goede (1):
iio: adc: axp288: Override TS pin bias current for some models
Helge Deller (2):
parisc/stifb: Fix fb_is_primary_device() only available with
CONFIG_FB_STI
parisc: Enable ARCH_HAS_STRICT_MODULE_RWX
Hoang Le (1):
tipc: fix use-after-free Read in tipc_named_reinit
Jaegeuk Kim (1):
f2fs: attach inline_data after setting compression
Jakub Kicinski (1):
Revert "net/tls: fix tls_sk_proto_close executed repeatedly"
Jakub Sitnicki (1):
bpf, x86: Fix tail call count offset calculation on bpf2bpf call
Jason A. Donenfeld (5):
random: schedule mix_interrupt_randomness() less often
random: quiet urandom warning ratelimit suppression message
powerpc/powernv: wire up rng during setup_arch
random: update comment from copy_to_user() -> copy_to_iter()
powerpc/pseries: wire up rng during setup_arch()
Jay Vosburgh (1):
bonding: ARP monitor spams NETDEV_NOTIFY_PEERS notifiers
Jean-Baptiste Maneyrol (1):
iio: imu: inv_icm42600: Fix broken icm42600 (chip id 0 value)
Jie2x Zhou (1):
selftests: netfilter: correct PKTGEN_SCRIPT_PATHS in
nft_concat_range.sh
Jon Maxwell (1):
bpf: Fix request_sock leak in sk lookup helpers
Jonathan Marek (1):
drm/msm: use for_each_sgtable_sg to iterate over scatterlist
Julien Grall (1):
x86/xen: Remove undefined behavior in setup_features()
Kai-Heng Feng (1):
igb: Make DMA faster when CPU is active on the PCIe link
Kailang Yang (1):
ALSA: hda/realtek - ALC897 headset MIC no sound
Keith Busch (1):
nvme-pci: allocate nvme_command within driver pdu
Kuogee Hsieh (5):
drm/msm/dp: check core_initialized before disable interrupts at
dp_display_unbind()
drm/msm/dp: fixes wrong connection state caused by failure of link
train
drm/msm/dp: deinitialize mainlink if link training failed
drm/msm/dp: promote irq_hpd handle to handle link training correctly
drm/msm/dp: fix connect/disconnect handled at irq_hpd
Liang He (2):
xtensa: xtfpga: Fix refcount leak bug in setup
xtensa: Fix refcount leak bug in time.c
Lorenzo Bianconi (1):
igb: fix a use-after-free issue in igb_clean_tx_ring
Lucas Stach (1):
ARM: dts: imx6qdl: correct PU regulator ramp delay
Macpaul Lin (1):
USB: serial: option: add Quectel RM500K module support
Masahiro Yamada (2):
modpost: fix section mismatch check for exported init/exit sections
kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS (2nd
attempt)
Mathias Nyman (1):
xhci: turn off port power in shutdown
Maximilian Luz (1):
drm/msm: Fix double pm_runtime_disable() call
Miaoqian Lin (7):
drm/msm/mdp4: Fix refcount leak in mdp4_modeset_init_intf
iio: adc: adi-axi-adc: Fix refcount leak in adi_axi_adc_attach_client
ARM: exynos: Fix refcount leak in exynos_map_pmu
soc: bcm: brcmstb: pm: pm-arm: Fix refcount leak in brcmstb_pm_probe
ARM: Fix refcount leak in axxia_boot_secondary
memory: samsung: exynos5422-dmc: Fix refcount leak in
of_get_dram_timings
ARM: cns3xxx: Fix refcount leak in cns3xxx_init
Mikulas Patocka (1):
dm mirror log: clear log bits up to BITS_PER_LONG boundary
Naveen N. Rao (1):
powerpc: Enable execve syscall exit tracepoint
Nikos Tsironis (1):
dm era: commit metadata in postsuspend after worker stops
Olivier Moysan (1):
iio: adc: stm32: fix maximum clock rate for stm32mp15x
Pablo Neira Ayuso (2):
netfilter: nftables: add nft_parse_register_load() and use it
netfilter: nftables: add nft_parse_register_store() and use it
Peilin Ye (1):
net/sched: sch_netem: Fix arithmetic in netem_dump() for 32-bit
platforms
Rosemarie O'Riorden (1):
net: openvswitch: fix parsing of nw_proto for IPv6 fragments
Samuel Holland (1):
drm/sun4i: Fix crash during suspend after component bind failure
Sascha Hauer (1):
mtd: rawnand: gpmi: Fix setting busy timeout setting
Soham Sen (1):
ALSA: hda/realtek: Add mute LED quirk for HP Omen laptop
Stephan Gerhold (1):
virtio_net: fix xdp_rxq_info bug after suspend/resume
Takashi Iwai (3):
ALSA: hda/via: Fix missing beep setup
ALSA: hda/conexant: Fix missing beep setup
ALSA: hda/realtek: Apply fixup for Lenovo Yoga Duet 7 properly
Tanveer Alam (1):
xhci-pci: Allow host runtime PM as default for Intel Raptor Lake xHCI
Thomas Richter (1):
s390/cpumf: Handle events cycles and instructions identical
Tim Crawford (2):
ALSA: hda/realtek: Add quirk for Clevo PD70PNT
ALSA: hda/realtek: Add quirk for Clevo NS50PU
Utkarsh Patel (1):
xhci-pci: Allow host runtime PM as default for Intel Meteor Lake xHCI
Vincent Whitchurch (1):
iio: trigger: sysfs: fix use-after-free on remove
Xin Long (1):
tipc: simplify the finalize work queue
Xu Yang (1):
usb: chipidea: udc: check request status before setting device address
Yannick Brosseau (2):
iio: adc: stm32: Fix ADCs iteration in irq handler
iio: adc: stm32: Fix IRQs on STM32F4 by removing custom spurious IRQs
message
Yonglin Tan (1):
USB: serial: option: add Quectel EM05-G modem
Zheyu Ma (1):
iio: gyro: mpu3050: Fix the error handling in mpu3050_power_up()
Ziyang Xuan (1):
net/tls: fix tls_sk_proto_close executed repeatedly
huhai (1):
MIPS: Remove repetitive increase irq_err_count
Documentation/ABI/testing/sysfs-bus-iio-vf610 | 2 +-
Makefile | 2 +-
arch/arm/boot/dts/imx6qdl.dtsi | 2 +-
arch/arm/boot/dts/imx7s.dtsi | 2 +-
arch/arm/mach-axxia/platsmp.c | 1 +
arch/arm/mach-cns3xxx/core.c | 2 +
arch/arm/mach-exynos/exynos.c | 1 +
arch/mips/vr41xx/common/icu.c | 2 -
arch/parisc/Kconfig | 1 +
arch/parisc/include/asm/fb.h | 2 +-
arch/powerpc/kernel/process.c | 2 +-
arch/powerpc/kernel/rtas.c | 11 +-
arch/powerpc/platforms/powernv/powernv.h | 2 +
arch/powerpc/platforms/powernv/rng.c | 52 ++++--
arch/powerpc/platforms/powernv/setup.c | 2 +
arch/powerpc/platforms/pseries/pseries.h | 2 +
arch/powerpc/platforms/pseries/rng.c | 11 +-
arch/powerpc/platforms/pseries/setup.c | 2 +
arch/s390/kernel/perf_cpum_cf.c | 22 ++-
arch/x86/net/bpf_jit_comp.c | 3 +-
arch/xtensa/kernel/time.c | 1 +
arch/xtensa/platforms/xtfpga/setup.c | 1 +
drivers/base/regmap/regmap-irq.c | 5 +-
drivers/char/random.c | 6 +-
drivers/dma-buf/udmabuf.c | 5 +-
drivers/gpio/gpio-vr41xx.c | 2 -
drivers/gpio/gpio-winbond.c | 7 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 3 +-
drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 +
drivers/gpu/drm/msm/dp/dp_catalog.c | 2 +-
drivers/gpu/drm/msm/dp/dp_catalog.h | 2 +-
drivers/gpu/drm/msm/dp/dp_ctrl.c | 40 ++++-
drivers/gpu/drm/msm/dp/dp_display.c | 149 ++++++++++++------
drivers/gpu/drm/msm/dp/dp_panel.c | 5 +
drivers/gpu/drm/msm/msm_iommu.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_drv.c | 4 +-
drivers/iio/accel/bma180.c | 3 +-
drivers/iio/accel/mma8452.c | 22 ++-
drivers/iio/accel/mxc4005.c | 4 +-
drivers/iio/adc/adi-axi-adc.c | 3 +
drivers/iio/adc/axp288_adc.c | 8 +
drivers/iio/adc/stm32-adc-core.c | 9 +-
drivers/iio/adc/stm32-adc.c | 10 --
drivers/iio/chemical/ccs811.c | 4 +-
drivers/iio/gyro/mpu3050-core.c | 1 +
drivers/iio/imu/inv_icm42600/inv_icm42600.h | 1 +
.../iio/imu/inv_icm42600/inv_icm42600_core.c | 2 +-
drivers/iio/trigger/iio-trig-sysfs.c | 1 +
drivers/md/dm-era-target.c | 8 +-
drivers/md/dm-log.c | 2 +-
drivers/memory/samsung/exynos5422-dmc.c | 29 ++--
drivers/mmc/host/sdhci-pci-o2micro.c | 2 +
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 2 +-
drivers/net/bonding/bond_main.c | 4 +-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 39 ++++-
drivers/net/ethernet/intel/igb/igb_main.c | 19 +--
drivers/net/phy/aquantia_main.c | 15 +-
drivers/net/virtio_net.c | 25 +--
drivers/nvme/host/core.c | 41 ++++-
drivers/nvme/host/lightnvm.c | 3 +-
drivers/nvme/host/pci.c | 17 +-
drivers/scsi/scsi_debug.c | 22 ++-
drivers/soc/bcm/brcmstb/pm/pm-arm.c | 1 +
drivers/usb/chipidea/udc.c | 3 +
drivers/usb/gadget/legacy/raw_gadget.c | 63 ++++++--
drivers/usb/host/xhci-hub.c | 2 +-
drivers/usb/host/xhci-pci.c | 6 +-
drivers/usb/host/xhci.c | 15 +-
drivers/usb/host/xhci.h | 2 +
drivers/usb/serial/option.c | 6 +
drivers/usb/typec/tcpm/Kconfig | 1 -
drivers/video/console/sticore.c | 2 +
drivers/xen/features.c | 2 +-
fs/afs/inode.c | 3 +-
fs/btrfs/super.c | 39 ++++-
fs/f2fs/namei.c | 17 +-
include/linux/ratelimit_types.h | 12 +-
include/net/netfilter/nf_tables.h | 10 +-
include/net/netfilter/nf_tables_core.h | 12 +-
include/net/netfilter/nft_fib.h | 2 +-
include/net/netfilter/nft_meta.h | 4 +-
include/trace/events/libata.h | 1 +
net/bridge/netfilter/nft_meta_bridge.c | 5 +-
net/core/filter.c | 34 +++-
net/ipv4/ip_gre.c | 15 +-
net/ipv4/netfilter/nft_dup_ipv4.c | 18 +--
net/ipv6/ip6_gre.c | 15 +-
net/ipv6/netfilter/nft_dup_ipv6.c | 18 +--
net/netfilter/nf_tables_api.c | 52 +++++-
net/netfilter/nft_bitwise.c | 23 ++-
net/netfilter/nft_byteorder.c | 14 +-
net/netfilter/nft_cmp.c | 8 +-
net/netfilter/nft_ct.c | 12 +-
net/netfilter/nft_dup_netdev.c | 6 +-
net/netfilter/nft_dynset.c | 12 +-
net/netfilter/nft_exthdr.c | 14 +-
net/netfilter/nft_fib.c | 5 +-
net/netfilter/nft_fwd_netdev.c | 18 +--
net/netfilter/nft_hash.c | 25 ++-
net/netfilter/nft_immediate.c | 6 +-
net/netfilter/nft_lookup.c | 14 +-
net/netfilter/nft_masq.c | 18 +--
net/netfilter/nft_meta.c | 21 +--
net/netfilter/nft_nat.c | 35 ++--
net/netfilter/nft_numgen.c | 27 ++--
net/netfilter/nft_objref.c | 6 +-
net/netfilter/nft_osf.c | 8 +-
net/netfilter/nft_payload.c | 10 +-
net/netfilter/nft_queue.c | 12 +-
net/netfilter/nft_range.c | 6 +-
net/netfilter/nft_redir.c | 18 +--
net/netfilter/nft_rt.c | 7 +-
net/netfilter/nft_socket.c | 7 +-
net/netfilter/nft_tproxy.c | 14 +-
net/netfilter/nft_tunnel.c | 8 +-
net/netfilter/nft_xfrm.c | 7 +-
net/openvswitch/flow.c | 2 +-
net/sched/sch_netem.c | 4 +-
net/tipc/core.c | 7 +-
net/tipc/core.h | 8 +-
net/tipc/discover.c | 4 +-
net/tipc/link.c | 5 +
net/tipc/link.h | 1 +
net/tipc/net.c | 15 +-
scripts/mod/modpost.c | 2 +-
sound/pci/hda/hda_auto_parser.c | 7 +-
sound/pci/hda/hda_local.h | 1 +
sound/pci/hda/patch_conexant.c | 4 +-
sound/pci/hda/patch_realtek.c | 36 ++++-
sound/pci/hda/patch_via.c | 4 +-
.../selftests/netfilter/nft_concat_range.sh | 2 +-
131 files changed, 949 insertions(+), 532 deletions(-)
--
2.20.1
1
99
Backport 5.10.125 LTS patches from upstream.
git cherry-pick v5.10.124..v5.10.125~1 -s
Already merged(-2):
9429b75bc271 tcp: increase source port perturb table to 2^16
df3f3bb5059d io_uring: add missing item types for various requests
Context conflict:
24b922a5da00 tcp: dynamically allocate the perturb table used by source ports
Total patches: 12 - 2 = 10
Christian Borntraeger (1):
s390/mm: use non-quiescing sske for KVM switch to keyed guest
Damien Le Moal (1):
zonefs: fix zonefs_iomap_begin() for reads
Eric Dumazet (1):
tcp: add some entropy in __inet_hash_connect()
Lukas Wunner (1):
serial: core: Initialize rs485 RTS polarity already on probe
Marian Postevca (1):
usb: gadget: u_ether: fix regression in setting fixed MAC address
Will Deacon (1):
arm64: mm: Don't invalidate FROM_DEVICE buffers at start of DMA
transfer
Willy Tarreau (4):
tcp: use different parts of the port_offset for index and offset
tcp: add small random increments to the source port
tcp: dynamically allocate the perturb table used by source ports
tcp: drop the hash_32() part from the index calculation
arch/arm64/mm/cache.S | 2 -
arch/s390/mm/pgtable.c | 2 +-
drivers/tty/serial/serial_core.c | 34 ++++------
drivers/usb/gadget/function/u_ether.c | 11 +++-
fs/zonefs/super.c | 92 ++++++++++++++++++---------
net/ipv4/inet_hashtables.c | 22 +++++--
6 files changed, 102 insertions(+), 61 deletions(-)
--
2.20.1
1
10
Backport 5.10.124 LTS patches from upstream.
git cherry-pick v5.10.123..v5.10.124~1 -s
Already merged(-3):
2c9548bc2650 powerpc/kasan: Silence KASAN warnings in __get_wchan()
6fdaf31ad5f3 ext4: fix bug_on ext4_mb_use_inode_pa
0ca74dacfd47 ext4: make variable "count" signed
Context conflict:
4603a37f6eae random: credit cpu and bootloader seeds by default
Total patches: 83 - 3 = 80
Adam Ford (2):
arm64: dts: imx8mm-beacon: Enable RTS-CTS on UART3
ASoC: wm8962: Fix suspend while playing music
Al Viro (1):
9p: missing chunk of "fs/9p: Don't update file type when updating file
attributes"
Alan Previn (1):
drm/i915/reset: Fix error_state_read ptr + offset use
Aleksandr Loktionov (1):
i40e: Fix call trace in setup_tx_descriptors
Alexander Usyskin (1):
mei: me: add raptor lake point S DID
Andy Chi (1):
ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP
machine
Ashish Kalra (1):
KVM: SVM: Use kzalloc for sev ioctl interfaces to prevent kernel data
leak
Bart Van Assche (1):
block: Fix handling of offline queues in blk_mq_alloc_request_hctx()
Charles Keepax (6):
ASoC: cs42l52: Fix TLV scales for mixer controls
ASoC: cs35l36: Update digital volume TLV
ASoC: cs53l30: Correct number of volume levels on SX controls
ASoC: cs42l52: Correct TLV for Bypass Volume
ASoC: cs42l56: Correct typo in minimum level for SX volume controls
ASoC: cs42l51: Correct minimum value for SX volume control
Chen Lin (1):
net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface
netdev[napi]_alloc_frag
Chengguang Xu (2):
scsi: ipr: Fix missing/incorrect resource cleanup in error case
scsi: pmcraid: Fix missing resource cleanup in error case
Christophe JAILLET (1):
net: bgmac: Fix an erroneous kfree() in bgmac_remove()
Daniel Wagner (1):
nvme: use sysfs_emit instead of sprintf
Davide Caratti (1):
net/sched: act_police: more accurate MTU policing
Duoming Zhou (1):
net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg
Grzegorz Szczurek (2):
i40e: Fix adding ADQ filter to TC0
i40e: Fix calculating the number of queue pairs
Hui Wang (1):
ASoC: nau8822: Add operation for internal PLL off and on
Ian Abbott (1):
comedi: vmk80xx: fix expression for tx buffer size
Ilpo Järvinen (1):
serial: 8250: Store to lsr_save_flags after lsr read
Ilya Maximets (1):
net: openvswitch: fix misuse of the cached connection on tuple changes
James Smart (2):
scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT
topology
scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd
completion
Jason A. Donenfeld (2):
random: credit cpu and bootloader seeds by default
crypto: memneq - move into lib/
Jiasheng Jiang (1):
i2c: npcm7xx: Add check for platform_driver_register
Josh Poimboeuf (1):
faddr2line: Fix overlapping text section failures, the sequel
Linus Torvalds (1):
mellanox: mlx5: avoid uninitialized variable warning with gcc-12
Marc Zyngier (1):
KVM: arm64: Don't read a HW interrupt pending state in user context
Marius Hoch (1):
Input: soc_button_array - also add Lenovo Yoga Tablet2 1051F to
dmi_use_low_level_irq
Mark Brown (2):
ASoC: es8328: Fix event generation for deemphasis control
ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put()
Mark Rutland (2):
arm64: ftrace: fix branch range checks
arm64: ftrace: consistently handle PLTs.
Masahiro Yamada (3):
clocksource: hyper-v: unexport __init-annotated hv_init_clocksource()
certs/blacklist_hashes.c: fix const confusion in certs blacklist
powerpc/book3e: get rid of #include <generated/compile.h>
Matthew Wilcox (Oracle) (1):
quota: Prevent memory allocation recursion while holding dq_lock
Miaoqian Lin (6):
misc: atmel-ssc: Fix IRQ check in ssc_probe
irqchip/gic/realview: Fix refcount leak in realview_gic_of_init
irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions
irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions
usb: dwc2: Fix memory leak in dwc2_hcd_init
usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe
Mikulas Patocka (1):
dm mirror log: round up region bitmap size to BITS_PER_LONG
Murilo Opsfelder Araujo (1):
virtio-pci: Remove wrong address verification in vp_del_vqs()
Peng Fan (1):
clk: imx8mp: fix usb_root_clk parent
Petr Machata (1):
mlxsw: spectrum_cnt: Reorder counter pools
Rob Clark (1):
dma-debug: make things less spammy under memory pressure
Robert Eckelmann (1):
USB: serial: io_ti: add Agilent E5805A support
Robin Murphy (1):
dma-direct: don't over-decrypt memory
Roman Li (1):
drm/amd/display: Cap OLED brightness per max frame-average luminance
Saurabh Sengar (1):
Drivers: hv: vmbus: Release cpu lock in error case
Sean Christopherson (1):
KVM: x86: Account a variety of miscellaneous allocations
Serge Semin (2):
gpio: dwapb: Don't print error on -EPROBE_DEFER
i2c: designware: Use standard optional ref clock implementation
Sergey Shtylyov (1):
ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
Slark Xiao (1):
USB: serial: option: add support for Cinterion MV31 with new baseline
Thomas Weißschuh (1):
nvme: add device name to warning in uuid_show()
Trond Myklebust (3):
nfsd: Replace use of rwsem with errseq_t
pNFS: Don't keep retrying if the server replied
NFS4ERR_LAYOUTUNAVAILABLE
pNFS: Avoid a live lock condition in pnfs_update_layout()
Vincent Whitchurch (1):
tty: goldfish: Fix free_irq() on remove
Vinicius Costa Gomes (2):
Revert "PCI: Make pci_enable_ptm() private"
igc: Enable PCIe PTM
Wang Yufen (1):
ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg
Wentao Wang (1):
scsi: vmw_pvscsi: Expand vcpuHint to 16 bits
Xiaohui Zhang (1):
nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred
Yuntao Wang (1):
bpf: Fix incorrect memory charge cost calculation in stack_map_alloc()
Yupeng Li (1):
MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error.
Zhang Yi (1):
ext4: add reserved GDT blocks check
chengkaitao (1):
virtio-mmio: fix missing put_device() when vm_cmdline_parent
registration failed
huangwenhui (1):
ALSA: hda/realtek - Add HW8326 support
.../freescale/imx8mm-beacon-baseboard.dtsi | 3 +
arch/arm64/kernel/ftrace.c | 137 +++++++++---------
arch/arm64/kvm/vgic/vgic-mmio-v2.c | 4 +-
arch/arm64/kvm/vgic/vgic-mmio.c | 19 ++-
arch/arm64/kvm/vgic/vgic-mmio.h | 3 +
arch/powerpc/mm/nohash/kaslr_booke.c | 8 +-
arch/x86/kvm/svm/nested.c | 4 +-
arch/x86/kvm/svm/sev.c | 4 +-
arch/x86/kvm/vmx/vmx.c | 2 +-
block/blk-mq.c | 2 +
certs/blacklist_hashes.c | 2 +-
crypto/Kconfig | 1 +
crypto/Makefile | 2 +-
drivers/ata/libata-core.c | 4 +-
drivers/char/Kconfig | 54 ++++---
drivers/clk/imx/clk-imx8mp.c | 2 +-
drivers/clocksource/hyperv_timer.c | 1 -
drivers/gpio/gpio-dwapb.c | 7 +-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 +-
drivers/gpu/drm/i915/i915_sysfs.c | 15 +-
drivers/hv/channel_mgmt.c | 1 +
drivers/i2c/busses/i2c-designware-common.c | 3 -
drivers/i2c/busses/i2c-designware-platdrv.c | 13 +-
drivers/i2c/busses/i2c-npcm7xx.c | 3 +-
drivers/input/misc/soc_button_array.c | 4 +-
drivers/irqchip/irq-gic-realview.c | 1 +
drivers/irqchip/irq-gic-v3.c | 7 +-
drivers/md/dm-log.c | 3 +-
drivers/misc/atmel-ssc.c | 4 +-
drivers/misc/mei/hw-me-regs.h | 2 +
drivers/misc/mei/pci-me.c | 2 +
drivers/net/ethernet/broadcom/bgmac-bcma.c | 1 -
.../net/ethernet/intel/i40e/i40e_ethtool.c | 25 +++-
drivers/net/ethernet/intel/i40e/i40e_main.c | 5 +
.../ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 +-
drivers/net/ethernet/intel/igc/igc_main.c | 5 +
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 21 ++-
drivers/net/ethernet/mellanox/mlx5/core/lag.c | 2 +-
.../ethernet/mellanox/mlxsw/spectrum_cnt.h | 2 +-
drivers/nfc/nfcmrvl/usb.c | 16 +-
drivers/nvme/host/core.c | 44 +++---
drivers/nvme/host/multipath.c | 8 +-
drivers/pci/pci.h | 3 -
drivers/platform/mips/Kconfig | 2 +-
drivers/scsi/ipr.c | 4 +-
drivers/scsi/lpfc/lpfc_hw4.h | 3 +
drivers/scsi/lpfc/lpfc_nportdisc.c | 3 +-
drivers/scsi/lpfc/lpfc_nvme.c | 11 +-
drivers/scsi/pmcraid.c | 2 +-
drivers/scsi/vmw_pvscsi.h | 4 +-
drivers/staging/comedi/drivers/vmk80xx.c | 2 +-
drivers/tty/goldfish.c | 2 +-
drivers/tty/serial/8250/8250_port.c | 2 +
drivers/usb/dwc2/hcd.c | 2 +-
drivers/usb/gadget/udc/lpc32xx_udc.c | 1 +
drivers/usb/serial/io_ti.c | 2 +
drivers/usb/serial/io_usbvend.h | 1 +
drivers/usb/serial/option.c | 6 +
drivers/virtio/virtio_mmio.c | 1 +
drivers/virtio/virtio_pci_common.c | 3 +-
fs/9p/vfs_inode_dotl.c | 10 +-
fs/ext4/resize.c | 10 ++
fs/nfs/callback_proc.c | 1 +
fs/nfs/pnfs.c | 21 ++-
fs/nfs/pnfs.h | 1 +
fs/nfsd/filecache.c | 1 -
fs/nfsd/filecache.h | 1 -
fs/nfsd/nfs4proc.c | 7 +-
fs/nfsd/vfs.c | 40 ++---
fs/quota/dquot.c | 10 ++
include/linux/pci.h | 7 +
kernel/bpf/stackmap.c | 3 +-
kernel/dma/debug.c | 2 +-
kernel/dma/direct.c | 16 +-
lib/Kconfig | 3 +
lib/Makefile | 1 +
lib/crypto/Kconfig | 1 +
{crypto => lib}/memneq.c | 0
net/ax25/af_ax25.c | 34 ++++-
net/l2tp/l2tp_ip6.c | 5 +-
net/openvswitch/actions.c | 6 +
net/openvswitch/conntrack.c | 3 +-
net/sched/act_police.c | 16 +-
scripts/faddr2line | 45 ++++--
sound/hda/hdac_device.c | 1 +
sound/pci/hda/patch_realtek.c | 15 ++
sound/soc/codecs/cs35l36.c | 3 +-
sound/soc/codecs/cs42l51.c | 2 +-
sound/soc/codecs/cs42l52.c | 8 +-
sound/soc/codecs/cs42l56.c | 4 +-
sound/soc/codecs/cs53l30.c | 16 +-
sound/soc/codecs/es8328.c | 5 +-
sound/soc/codecs/nau8822.c | 4 +
sound/soc/codecs/nau8822.h | 3 +
sound/soc/codecs/wm8962.c | 1 +
sound/soc/codecs/wm_adsp.c | 2 +-
.../selftests/net/forwarding/tc_police.sh | 52 +++++++
97 files changed, 578 insertions(+), 292 deletions(-)
rename {crypto => lib}/memneq.c (100%)
--
2.20.1
1
80

26 Oct '22
These four patches try to avoid or fix kabi change caused by Intel AMX PR:
https://gitee.com/openeuler/kernel/pulls/58
Zheng Zengkai (4):
x86: Avoid kabi change caused by adding pkru element in thread_struct
x86/extable: Avoid kabi change caused by exception table rework
x86/fpu: Avoid kabi change caused by struct fpu
mm: Fix kabi change caused by saved_auxv[] in mm_struct for x86_64
arch/x86/include/asm/extable.h | 4 ++++
arch/x86/include/asm/fpu/types.h | 4 ++++
arch/x86/include/asm/processor.h | 2 ++
arch/x86/include/uapi/asm/auxvec.h | 1 +
include/linux/mm_types.h | 15 +++++++++++++++
5 files changed, 26 insertions(+)
--
2.20.1
6
15

25 Oct '22
From: Jialiang Wang <wangjialiang0806(a)163.com>
mainline inclusion
from mainline-v6.0-rc1
commit 02e1a114fdb71e59ee6770294166c30d437bf86a
category: bugfix
bugzilla: 187867, https://gitee.com/src-openeuler/kernel/issues/I5W7B5
CVE: CVE-2022-3545
--------------------------------
area_cache_get() is used to distribute cache->area and set cache->id,
and if cache->id is not 0 and cache->area->kref refcount is 0, it will
release the cache->area by nfp_cpp_area_release(). area_cache_get()
set cache->id before cpp->op->area_init() and nfp_cpp_area_acquire().
But if area_init() or nfp_cpp_area_acquire() fails, the cache->id is
is already set but the refcount is not increased as expected. At this
time, calling the nfp_cpp_area_release() will cause use-after-free.
To avoid the use-after-free, set cache->id after area_init() and
nfp_cpp_area_acquire() complete successfully.
Note: This vulnerability is triggerable by providing emulated device
equipped with specified configuration.
BUG: KASAN: use-after-free in nfp6000_area_init (drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c:760)
Write of size 4 at addr ffff888005b7f4a0 by task swapper/0/1
Call Trace:
<TASK>
nfp6000_area_init (drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c:760)
area_cache_get.constprop.8 (drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c:884)
Allocated by task 1:
nfp_cpp_area_alloc_with_name (drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c:303)
nfp_cpp_area_cache_add (drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c:802)
nfp6000_init (drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c:1230)
nfp_cpp_from_operations (drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c:1215)
nfp_pci_probe (drivers/net/ethernet/netronome/nfp/nfp_main.c:744)
Freed by task 1:
kfree (mm/slub.c:4562)
area_cache_get.constprop.8 (drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c:873)
nfp_cpp_read (drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c:924 drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c:973)
nfp_cpp_readl (drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cpplib.c:48)
Signed-off-by: Jialiang Wang <wangjialiang0806(a)163.com>
Reviewed-by: Yinjun Zhang <yinjun.zhang(a)corigine.com>
Acked-by: Simon Horman <simon.horman(a)corigine.com>
Link: https://lore.kernel.org/r/20220810073057.4032-1-wangjialiang0806@163.com
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Yuyao Lin <linyuyao1(a)huawei.com>
Reviewed-by: Wei Li <liwei391(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c
index 73de57a09800..6f5d69293a25 100644
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c
+++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c
@@ -872,7 +872,6 @@ area_cache_get(struct nfp_cpp *cpp, u32 id,
}
/* Adjust the start address to be cache size aligned */
- cache->id = id;
cache->addr = addr & ~(u64)(cache->size - 1);
/* Re-init to the new ID and address */
@@ -892,6 +891,8 @@ area_cache_get(struct nfp_cpp *cpp, u32 id,
return NULL;
}
+ cache->id = id;
+
exit:
/* Adjust offset */
*offset = addr - cache->addr;
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] mISDN: fix use-after-free bugs in l1oip timer handlers
by Yongqiang Liu 25 Oct '22
by Yongqiang Liu 25 Oct '22
25 Oct '22
From: Duoming Zhou <duoming(a)zju.edu.cn>
mainline inclusion
from mainline-v6.1-rc1
commit 2568a7e0832ee30b0a351016d03062ab4e0e0a3f
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5W7YH
CVE: CVE-2022-3565
--------------------------------
The l1oip_cleanup() traverses the l1oip_ilist and calls
release_card() to cleanup module and stack. However,
release_card() calls del_timer() to delete the timers
such as keep_tl and timeout_tl. If the timer handler is
running, the del_timer() will not stop it and result in
UAF bugs. One of the processes is shown below:
(cleanup routine) | (timer handler)
release_card() | l1oip_timeout()
... |
del_timer() | ...
... |
kfree(hc) //FREE |
| hc->timeout_on = 0 //USE
Fix by calling del_timer_sync() in release_card(), which
makes sure the timer handlers have finished before the
resources, such as l1oip and so on, have been deallocated.
What's more, the hc->workq and hc->socket_thread can kick
those timers right back in. We add a bool flag to show
if card is released. Then, check this flag in hc->workq
and hc->socket_thread.
Fixes: 3712b42d4b1b ("Add layer1 over IP support")
Signed-off-by: Duoming Zhou <duoming(a)zju.edu.cn>
Reviewed-by: Leon Romanovsky <leonro(a)nvidia.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: GUO Zihua <guozihua(a)huawei.com>
Reviewed-by: GONG Ruiqi <gongruiqi1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/isdn/mISDN/l1oip.h | 1 +
drivers/isdn/mISDN/l1oip_core.c | 13 +++++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/isdn/mISDN/l1oip.h b/drivers/isdn/mISDN/l1oip.h
index 7ea10db20e3a..48133d022812 100644
--- a/drivers/isdn/mISDN/l1oip.h
+++ b/drivers/isdn/mISDN/l1oip.h
@@ -59,6 +59,7 @@ struct l1oip {
int bundle; /* bundle channels in one frm */
int codec; /* codec to use for transmis. */
int limit; /* limit number of bchannels */
+ bool shutdown; /* if card is released */
/* timer */
struct timer_list keep_tl;
diff --git a/drivers/isdn/mISDN/l1oip_core.c b/drivers/isdn/mISDN/l1oip_core.c
index b05022f94f18..2f4a01ab25e8 100644
--- a/drivers/isdn/mISDN/l1oip_core.c
+++ b/drivers/isdn/mISDN/l1oip_core.c
@@ -289,7 +289,7 @@ l1oip_socket_send(struct l1oip *hc, u8 localcodec, u8 channel, u32 chanmask,
p = frame;
/* restart timer */
- if (time_before(hc->keep_tl.expires, jiffies + 5 * HZ))
+ if (time_before(hc->keep_tl.expires, jiffies + 5 * HZ) && !hc->shutdown)
mod_timer(&hc->keep_tl, jiffies + L1OIP_KEEPALIVE * HZ);
else
hc->keep_tl.expires = jiffies + L1OIP_KEEPALIVE * HZ;
@@ -615,7 +615,9 @@ l1oip_socket_parse(struct l1oip *hc, struct sockaddr_in *sin, u8 *buf, int len)
goto multiframe;
/* restart timer */
- if (time_before(hc->timeout_tl.expires, jiffies + 5 * HZ) || !hc->timeout_on) {
+ if ((time_before(hc->timeout_tl.expires, jiffies + 5 * HZ) ||
+ !hc->timeout_on) &&
+ !hc->shutdown) {
hc->timeout_on = 1;
mod_timer(&hc->timeout_tl, jiffies + L1OIP_TIMEOUT * HZ);
} else /* only adjust timer */
@@ -1247,11 +1249,10 @@ release_card(struct l1oip *hc)
{
int ch;
- if (timer_pending(&hc->keep_tl))
- del_timer(&hc->keep_tl);
+ hc->shutdown = true;
- if (timer_pending(&hc->timeout_tl))
- del_timer(&hc->timeout_tl);
+ del_timer_sync(&hc->keep_tl);
+ del_timer_sync(&hc->timeout_tl);
cancel_work_sync(&hc->workq);
--
2.25.1
1
0

25 Oct '22
From: Kuniyuki Iwashima <kuniyu(a)amazon.com>
mainline inclusion
from mainline-v6.1-rc1
commit f49cd2f4d6170d27a2c61f1fecb03d8a70c91f57
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5W7ZF
CVE: CVE-2022-3566
--------------------------------
setsockopt(IPV6_ADDRFORM) and tcp_v6_connect() change icsk->icsk_af_ops
under lock_sock(), but tcp_(get|set)sockopt() read it locklessly. To
avoid load/store tearing, we need to add READ_ONCE() and WRITE_ONCE()
for the reads and writes.
Thanks to Eric Dumazet for providing the syzbot report:
BUG: KCSAN: data-race in tcp_setsockopt / tcp_v6_connect
write to 0xffff88813c624518 of 8 bytes by task 23936 on cpu 0:
tcp_v6_connect+0x5b3/0xce0 net/ipv6/tcp_ipv6.c:240
__inet_stream_connect+0x159/0x6d0 net/ipv4/af_inet.c:660
inet_stream_connect+0x44/0x70 net/ipv4/af_inet.c:724
__sys_connect_file net/socket.c:1976 [inline]
__sys_connect+0x197/0x1b0 net/socket.c:1993
__do_sys_connect net/socket.c:2003 [inline]
__se_sys_connect net/socket.c:2000 [inline]
__x64_sys_connect+0x3d/0x50 net/socket.c:2000
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
read to 0xffff88813c624518 of 8 bytes by task 23937 on cpu 1:
tcp_setsockopt+0x147/0x1c80 net/ipv4/tcp.c:3789
sock_common_setsockopt+0x5d/0x70 net/core/sock.c:3585
__sys_setsockopt+0x212/0x2b0 net/socket.c:2252
__do_sys_setsockopt net/socket.c:2263 [inline]
__se_sys_setsockopt net/socket.c:2260 [inline]
__x64_sys_setsockopt+0x62/0x70 net/socket.c:2260
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
value changed: 0xffffffff8539af68 -> 0xffffffff8539aff8
Reported by Kernel Concurrency Sanitizer on:
CPU: 1 PID: 23937 Comm: syz-executor.5 Not tainted
6.0.0-rc4-syzkaller-00331-g4ed9c1e971b1-dirty #0
Hardware name: Google Google Compute Engine/Google Compute Engine,
BIOS Google 08/26/2022
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Reported-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu(a)amazon.com>
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Conflicts:
net/ipv4/tcp.c
net/ipv6/ipv6_sockglue.c
net/ipv6/tcp_ipv6.c
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/ipv4/tcp.c | 10 ++++++----
net/ipv6/ipv6_sockglue.c | 3 ++-
net/ipv6/tcp_ipv6.c | 6 ++++--
3 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 325a1dafbd90..094cd93e50c2 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -3114,8 +3114,9 @@ int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
const struct inet_connection_sock *icsk = inet_csk(sk);
if (level != SOL_TCP)
- return icsk->icsk_af_ops->setsockopt(sk, level, optname,
- optval, optlen);
+ /* Paired with WRITE_ONCE() in do_ipv6_setsockopt() and tcp_v6_connect() */
+ return READ_ONCE(icsk->icsk_af_ops)->setsockopt(sk, level, optname,
+ optval, optlen);
return do_tcp_setsockopt(sk, level, optname, optval, optlen);
}
EXPORT_SYMBOL(tcp_setsockopt);
@@ -3635,8 +3636,9 @@ int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *optval,
struct inet_connection_sock *icsk = inet_csk(sk);
if (level != SOL_TCP)
- return icsk->icsk_af_ops->getsockopt(sk, level, optname,
- optval, optlen);
+ /* Paired with WRITE_ONCE() in do_ipv6_setsockopt() and tcp_v6_connect() */
+ return READ_ONCE(icsk->icsk_af_ops)->getsockopt(sk, level, optname,
+ optval, optlen);
return do_tcp_getsockopt(sk, level, optname, optval, optlen);
}
EXPORT_SYMBOL(tcp_getsockopt);
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index d3f3a2f79646..85e5bdfa1f87 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -231,7 +231,8 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
sock_prot_inuse_add(net, &tcp_prot, 1);
local_bh_enable();
sk->sk_prot = &tcp_prot;
- icsk->icsk_af_ops = &ipv4_specific;
+ /* Paired with READ_ONCE() in tcp_(get|set)sockopt() */
+ WRITE_ONCE(icsk->icsk_af_ops, &ipv4_specific);
sk->sk_socket->ops = &inet_stream_ops;
sk->sk_family = PF_INET;
tcp_sync_mss(sk, icsk->icsk_pmtu_cookie);
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index de2975175503..ab9e022325e7 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -229,7 +229,8 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
sin.sin_port = usin->sin6_port;
sin.sin_addr.s_addr = usin->sin6_addr.s6_addr32[3];
- icsk->icsk_af_ops = &ipv6_mapped;
+ /* Paired with READ_ONCE() in tcp_(get|set)sockopt() */
+ WRITE_ONCE(icsk->icsk_af_ops, &ipv6_mapped);
sk->sk_backlog_rcv = tcp_v4_do_rcv;
#ifdef CONFIG_TCP_MD5SIG
tp->af_specific = &tcp_sock_ipv6_mapped_specific;
@@ -239,7 +240,8 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
if (err) {
icsk->icsk_ext_hdr_len = exthdrlen;
- icsk->icsk_af_ops = &ipv6_specific;
+ /* Paired with READ_ONCE() in tcp_(get|set)sockopt() */
+ WRITE_ONCE(icsk->icsk_af_ops, &ipv6_specific);
sk->sk_backlog_rcv = tcp_v6_do_rcv;
#ifdef CONFIG_TCP_MD5SIG
tp->af_specific = &tcp_sock_ipv6_specific;
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Bluetooth: L2CAP: Fix use-after-free caused by l2cap_reassemble_sdu
by Yongqiang Liu 25 Oct '22
by Yongqiang Liu 25 Oct '22
25 Oct '22
From: Maxim Mikityanskiy <maxtram95(a)gmail.com>
mainline inclusion
from bluetooth-next
commit 89f9f3cb86b1c63badaf392a83dd661d56cc50b1
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5W7XW
CVE: CVE-2022-3564
--------------------------------
Fix the race condition between the following two flows that run in
parallel:
1. l2cap_reassemble_sdu -> chan->ops->recv (l2cap_sock_recv_cb) ->
__sock_queue_rcv_skb.
2. bt_sock_recvmsg -> skb_recv_datagram, skb_free_datagram.
An SKB can be queued by the first flow and immediately dequeued and
freed by the second flow, therefore the callers of l2cap_reassemble_sdu
can't use the SKB after that function returns. However, some places
continue accessing struct l2cap_ctrl that resides in the SKB's CB for a
short time after l2cap_reassemble_sdu returns, leading to a
use-after-free condition (the stack trace is below, line numbers for
kernel 5.19.8).
Fix it by keeping a local copy of struct l2cap_ctrl.
BUG: KASAN: use-after-free in l2cap_rx_state_recv (net/bluetooth/l2cap_core.c:6906) bluetooth
Read of size 1 at addr ffff88812025f2f0 by task kworker/u17:3/43169
Workqueue: hci0 hci_rx_work [bluetooth]
Call Trace:
<TASK>
dump_stack_lvl (lib/dump_stack.c:107 (discriminator 4))
print_report.cold (mm/kasan/report.c:314 mm/kasan/report.c:429)
? l2cap_rx_state_recv (net/bluetooth/l2cap_core.c:6906) bluetooth
kasan_report (mm/kasan/report.c:162 mm/kasan/report.c:493)
? l2cap_rx_state_recv (net/bluetooth/l2cap_core.c:6906) bluetooth
l2cap_rx_state_recv (net/bluetooth/l2cap_core.c:6906) bluetooth
l2cap_rx (net/bluetooth/l2cap_core.c:7236 net/bluetooth/l2cap_core.c:7271) bluetooth
ret_from_fork (arch/x86/entry/entry_64.S:306)
</TASK>
Allocated by task 43169:
kasan_save_stack (mm/kasan/common.c:39)
__kasan_slab_alloc (mm/kasan/common.c:45 mm/kasan/common.c:436 mm/kasan/common.c:469)
kmem_cache_alloc_node (mm/slab.h:750 mm/slub.c:3243 mm/slub.c:3293)
__alloc_skb (net/core/skbuff.c:414)
l2cap_recv_frag (./include/net/bluetooth/bluetooth.h:425 net/bluetooth/l2cap_core.c:8329) bluetooth
l2cap_recv_acldata (net/bluetooth/l2cap_core.c:8442) bluetooth
hci_rx_work (net/bluetooth/hci_core.c:3642 net/bluetooth/hci_core.c:3832) bluetooth
process_one_work (kernel/workqueue.c:2289)
worker_thread (./include/linux/list.h:292 kernel/workqueue.c:2437)
kthread (kernel/kthread.c:376)
ret_from_fork (arch/x86/entry/entry_64.S:306)
Freed by task 27920:
kasan_save_stack (mm/kasan/common.c:39)
kasan_set_track (mm/kasan/common.c:45)
kasan_set_free_info (mm/kasan/generic.c:372)
____kasan_slab_free (mm/kasan/common.c:368 mm/kasan/common.c:328)
slab_free_freelist_hook (mm/slub.c:1780)
kmem_cache_free (mm/slub.c:3536 mm/slub.c:3553)
skb_free_datagram (./include/net/sock.h:1578 ./include/net/sock.h:1639 net/core/datagram.c:323)
bt_sock_recvmsg (net/bluetooth/af_bluetooth.c:295) bluetooth
l2cap_sock_recvmsg (net/bluetooth/l2cap_sock.c:1212) bluetooth
sock_read_iter (net/socket.c:1087)
new_sync_read (./include/linux/fs.h:2052 fs/read_write.c:401)
vfs_read (fs/read_write.c:482)
ksys_read (fs/read_write.c:620)
do_syscall_64 (arch/x86/entry/common.c:50 arch/x86/entry/common.c:80)
entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120)
Link: https://lore.kernel.org/linux-bluetooth/CAKErNvoqga1WcmoR3-0875esY6TVWFQDan…
Fixes: d2a7ac5d5d3a ("Bluetooth: Add the ERTM receive state machine")
Fixes: 4b51dae96731 ("Bluetooth: Add streaming mode receive and incoming packet classifier")
Signed-off-by: Maxim Mikityanskiy <maxtram95(a)gmail.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz(a)intel.com>
conflicts:
net/bluetooth/l2cap_core.c
Signed-off-by: Xia Longlong <xialonglong1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/bluetooth/l2cap_core.c | 48 ++++++++++++++++++++++++++++++++------
1 file changed, 41 insertions(+), 7 deletions(-)
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 38789494867d..436a92e3bf20 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -6204,6 +6204,7 @@ static int l2cap_rx_state_recv(struct l2cap_chan *chan,
struct l2cap_ctrl *control,
struct sk_buff *skb, u8 event)
{
+ struct l2cap_ctrl local_control;
int err = 0;
bool skb_in_use = false;
@@ -6228,15 +6229,32 @@ static int l2cap_rx_state_recv(struct l2cap_chan *chan,
chan->buffer_seq = chan->expected_tx_seq;
skb_in_use = true;
+ /* l2cap_reassemble_sdu may free skb, hence invalidate
+ * control, so make a copy in advance to use it after
+ * l2cap_reassemble_sdu returns and to avoid the race
+ * condition, for example:
+ *
+ * The current thread calls:
+ * l2cap_reassemble_sdu
+ * chan->ops->recv == l2cap_sock_recv_cb
+ * __sock_queue_rcv_skb
+ * Another thread calls:
+ * bt_sock_recvmsg
+ * skb_recv_datagram
+ * skb_free_datagram
+ * Then the current thread tries to access control, but
+ * it was freed by skb_free_datagram.
+ */
+ local_control = *control;
err = l2cap_reassemble_sdu(chan, skb, control);
if (err)
break;
- if (control->final) {
+ if (local_control.final) {
if (!test_and_clear_bit(CONN_REJ_ACT,
&chan->conn_state)) {
- control->final = 0;
- l2cap_retransmit_all(chan, control);
+ local_control.final = 0;
+ l2cap_retransmit_all(chan, &local_control);
l2cap_ertm_send(chan);
}
}
@@ -6616,11 +6634,27 @@ static int l2cap_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
static int l2cap_stream_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
struct sk_buff *skb)
{
+ /* l2cap_reassemble_sdu may free skb, hence invalidate control, so store
+ * the txseq field in advance to use it after l2cap_reassemble_sdu
+ * returns and to avoid the race condition, for example:
+ *
+ * The current thread calls:
+ * l2cap_reassemble_sdu
+ * chan->ops->recv == l2cap_sock_recv_cb
+ * __sock_queue_rcv_skb
+ * Another thread calls:
+ * bt_sock_recvmsg
+ * skb_recv_datagram
+ * skb_free_datagram
+ * Then the current thread tries to access control, but it was freed by
+ * skb_free_datagram.
+ */
+ u16 txseq = control->txseq;
+
BT_DBG("chan %p, control %p, skb %p, state %d", chan, control, skb,
chan->rx_state);
- if (l2cap_classify_txseq(chan, control->txseq) ==
- L2CAP_TXSEQ_EXPECTED) {
+ if (l2cap_classify_txseq(chan, txseq) == L2CAP_TXSEQ_EXPECTED) {
l2cap_pass_to_tx(chan, control);
BT_DBG("buffer_seq %d->%d", chan->buffer_seq,
@@ -6643,8 +6677,8 @@ static int l2cap_stream_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
}
}
- chan->last_acked_seq = control->txseq;
- chan->expected_tx_seq = __next_seq(chan, control->txseq);
+ chan->last_acked_seq = txseq;
+ chan->expected_tx_seq = __next_seq(chan, txseq);
return 0;
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] bnx2x: fix potential memory leak in bnx2x_tpa_stop()
by Yongqiang Liu 24 Oct '22
by Yongqiang Liu 24 Oct '22
24 Oct '22
From: Jianglei Nie <niejianglei2021(a)163.com>
mainline inclusion
from mainline-v6.1-rc1
commit b43f9acbb8942b05252be83ac25a81cec70cc192
category: bugfix
bugzilla: 187839, https://gitee.com/src-openeuler/kernel/issues/I5W7B1
CVE: CVE-2022-3542
--------------------------------
bnx2x_tpa_stop() allocates a memory chunk from new_data with
bnx2x_frag_alloc(). The new_data should be freed when gets some error.
But when "pad + len > fp->rx_buf_size" is true, bnx2x_tpa_stop() returns
without releasing the new_data, which will lead to a memory leak.
We should free the new_data with bnx2x_frag_free() when "pad + len >
fp->rx_buf_size" is true.
Fixes: 07b0f00964def8af9321cfd6c4a7e84f6362f728 ("bnx2x: fix possible panic under memory stress")
Signed-off-by: Jianglei Nie <niejianglei2021(a)163.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Ren Zhijie <renzhijie2(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Chen Hui <judy.chenhui(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index cf01e73d1bcc..a123f1733a59 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -788,6 +788,7 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
BNX2X_ERR("skb_put is about to fail... pad %d len %d rx_buf_size %d\n",
pad, len, fp->rx_buf_size);
bnx2x_panic();
+ bnx2x_frag_free(fp, new_data);
return;
}
#endif
--
2.25.1
1
0

21 Oct '22
From: Andrew Gaul <gaul(a)gaul.org>
mainline inclusion
from mainline-v6.1-rc1
commit 93e2be344a7db169b7119de21ac1bf253b8c6907
category: bugfix
bugzilla: 187847, https://gitee.com/src-openeuler/kernel/issues/I5WFKR
CVE: CVE-2022-3594
--------------------------------
My system shows almost 10 million of these messages over a 24-hour
period which pollutes my logs.
Signed-off-by: Andrew Gaul <gaul(a)google.com>
Link: https://lore.kernel.org/r/20221002034128.2026653-1-gaul@google.com
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/usb/r8152.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 91d47a714afd..f28fc023c8b7 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -1386,7 +1386,9 @@ static void intr_callback(struct urb *urb)
"Stop submitting intr, status %d\n", status);
return;
case -EOVERFLOW:
- netif_info(tp, intr, tp->netdev, "intr status -EOVERFLOW\n");
+ if (net_ratelimit())
+ netif_info(tp, intr, tp->netdev,
+ "intr status -EOVERFLOW\n");
goto resubmit;
/* -EPIPE: should clear the halt */
default:
--
2.25.1
1
0
您好!
Kernel SIG 邀请您参加 2022-10-21 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.22.03-LTS-SP1 支持generic VDPA device介绍;
2.openEuler-22.03-LTS-SP1信息同步;
3.kernel SIG committer推举
会议链接:https://us06web.zoom.us/j/85064426665?pwd=cDkyZ25DVDNwZXdJWUx0emVxQWR2QT09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-10-21 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.22.03-LTS-SP1 支持generic VDPA device介绍;
2.openEuler-22.03-LTS-SP1信息同步;
3.kernel SIG committer推举
You can join the meeting at https://us06web.zoom.us/j/85064426665?pwd=cDkyZ25DVDNwZXdJWUx0emVxQWR2QT09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS] tcp/udp: Fix memory leak in ipv6_renew_options().
by Yongqiang Liu 20 Oct '22
by Yongqiang Liu 20 Oct '22
20 Oct '22
From: Kuniyuki Iwashima <kuniyu(a)amazon.com>
mainline inclusion
from mainline-v6.1-rc1
commit 3c52c6bb831f6335c176a0fc7214e26f43adbd11
category: bugfix
bugzilla: 187825, https://gitee.com/src-openeuler/kernel/issues/I5VZ0J
CVE: CVE-2022-3524
--------------------------------
syzbot reported a memory leak [0] related to IPV6_ADDRFORM.
The scenario is that while one thread is converting an IPv6 socket into
IPv4 with IPV6_ADDRFORM, another thread calls do_ipv6_setsockopt() and
allocates memory to inet6_sk(sk)->XXX after conversion.
Then, the converted sk with (tcp|udp)_prot never frees the IPv6 resources,
which inet6_destroy_sock() should have cleaned up.
setsockopt(IPV6_ADDRFORM) setsockopt(IPV6_DSTOPTS)
+-----------------------+ +----------------------+
- do_ipv6_setsockopt(sk, ...)
- sockopt_lock_sock(sk) - do_ipv6_setsockopt(sk, ...)
- lock_sock(sk) ^._ called via tcpv6_prot
- WRITE_ONCE(sk->sk_prot, &tcp_prot) before WRITE_ONCE()
- xchg(&np->opt, NULL)
- txopt_put(opt)
- sockopt_release_sock(sk)
- release_sock(sk) - sockopt_lock_sock(sk)
- lock_sock(sk)
- ipv6_set_opt_hdr(sk, ...)
- ipv6_update_options(sk, opt)
- xchg(&inet6_sk(sk)->opt, opt)
^._ opt is never freed.
- sockopt_release_sock(sk)
- release_sock(sk)
Since IPV6_DSTOPTS allocates options under lock_sock(), we can avoid this
memory leak by testing whether sk_family is changed by IPV6_ADDRFORM after
acquiring the lock.
This issue exists from the initial commit between IPV6_ADDRFORM and
IPV6_PKTOPTIONS.
[0]:
BUG: memory leak
unreferenced object 0xffff888009ab9f80 (size 96):
comm "syz-executor583", pid 328, jiffies 4294916198 (age 13.034s)
hex dump (first 32 bytes):
01 00 00 00 48 00 00 00 08 00 00 00 00 00 00 00 ....H...........
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<000000002ee98ae1>] kmalloc include/linux/slab.h:605 [inline]
[<000000002ee98ae1>] sock_kmalloc+0xb3/0x100 net/core/sock.c:2566
[<0000000065d7b698>] ipv6_renew_options+0x21e/0x10b0 net/ipv6/exthdrs.c:1318
[<00000000a8c756d7>] ipv6_set_opt_hdr net/ipv6/ipv6_sockglue.c:354 [inline]
[<00000000a8c756d7>] do_ipv6_setsockopt.constprop.0+0x28b7/0x4350 net/ipv6/ipv6_sockglue.c:668
[<000000002854d204>] ipv6_setsockopt+0xdf/0x190 net/ipv6/ipv6_sockglue.c:1021
[<00000000e69fdcf8>] tcp_setsockopt+0x13b/0x2620 net/ipv4/tcp.c:3789
[<0000000090da4b9b>] __sys_setsockopt+0x239/0x620 net/socket.c:2252
[<00000000b10d192f>] __do_sys_setsockopt net/socket.c:2263 [inline]
[<00000000b10d192f>] __se_sys_setsockopt net/socket.c:2260 [inline]
[<00000000b10d192f>] __x64_sys_setsockopt+0xbe/0x160 net/socket.c:2260
[<000000000a80d7aa>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
[<000000000a80d7aa>] do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
[<000000004562b5c6>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu(a)amazon.com>
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Reviewed-by: Liu Jian <liujian56(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/ipv6/ipv6_sockglue.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index b2e03e84a2df..d3f3a2f79646 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -168,6 +168,12 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
rtnl_lock();
lock_sock(sk);
+ /* Another thread has converted the socket into IPv4 with
+ * IPV6_ADDRFORM concurrently.
+ */
+ if (unlikely(sk->sk_family != AF_INET6))
+ goto unlock;
+
switch (optname) {
case IPV6_ADDRFORM:
@@ -915,6 +921,7 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
break;
}
+unlock:
release_sock(sk);
if (needs_rtnl)
rtnl_unlock();
--
2.25.1
1
0
From: "Russell King (Oracle)" <rmk+kernel(a)armlinux.org.uk>
mainline inclusion
from mainline-v6.0-rc7
commit 0152dfee235e87660f52a117fc9f70dc55956bb4
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5W7AX
CVE: CVE-2022-3535
--------------------------------
When mvpp2 is unloaded, the driver specific debugfs directory is not
removed, which technically leads to a memory leak. However, this
directory is only created when the first device is probed, so the
hardware is present. Removing the module is only something a developer
would to when e.g. testing out changes, so the module would be
reloaded. So this memory leak is minor.
The original attempt in commit fe2c9c61f668 ("net: mvpp2: debugfs: fix
memory leak when using debugfs_lookup()") that was labelled as a memory
leak fix was not, it fixed a refcount leak, but in doing so created a
problem when the module is reloaded - the directory already exists, but
mvpp2_root is NULL, so we lose all debugfs entries. This fix has been
reverted.
This is the alternative fix, where we remove the offending directory
whenever the driver is unloaded.
Fixes: 21da57a23125 ("net: mvpp2: add a debugfs interface for the Header Parser")
Signed-off-by: Russell King (Oracle) <rmk+kernel(a)armlinux.org.uk>
Reviewed-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Reviewed-by: Marcin Wojtas <mw(a)semihalf.com>
Link: https://lore.kernel.org/r/E1ofOAB-00CzkG-UO@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Conflicts:
drivers/net/ethernet/marvell/mvpp2/mvpp2.h
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
Signed-off-by: Hui Tang <tanghui20(a)huawei.com>
Reviewed-by: Zhang Qiao <zhangqiao22(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/ethernet/marvell/mvpp2/mvpp2.h | 1 +
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c | 10 ++++++++--
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 13 ++++++++++++-
3 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
index 46911b67b039..23f60bc5d48f 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
@@ -1107,5 +1107,6 @@ void mvpp2_percpu_write_relaxed(struct mvpp2 *priv, int cpu, u32 offset,
void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name);
void mvpp2_dbgfs_cleanup(struct mvpp2 *priv);
+void mvpp2_dbgfs_exit(void);
#endif
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
index f9744a61e5dd..d77414e1e704 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
@@ -660,6 +660,13 @@ static int mvpp2_dbgfs_port_init(struct dentry *parent,
return 0;
}
+static struct dentry *mvpp2_root;
+
+void mvpp2_dbgfs_exit(void)
+{
+ debugfs_remove(mvpp2_root);
+}
+
void mvpp2_dbgfs_cleanup(struct mvpp2 *priv)
{
debugfs_remove_recursive(priv->dbgfs_dir);
@@ -667,10 +674,9 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *priv)
void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name)
{
- struct dentry *mvpp2_dir, *mvpp2_root;
+ struct dentry *mvpp2_dir;
int ret, i;
- mvpp2_root = debugfs_lookup(MVPP2_DRIVER_NAME, NULL);
if (!mvpp2_root) {
mvpp2_root = debugfs_create_dir(MVPP2_DRIVER_NAME, NULL);
if (IS_ERR(mvpp2_root))
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 04bee450eb3d..beb79455adc7 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -5412,7 +5412,18 @@ static struct platform_driver mvpp2_driver = {
},
};
-module_platform_driver(mvpp2_driver);
+static int __init mvpp2_driver_init(void)
+{
+ return platform_driver_register(&mvpp2_driver);
+}
+module_init(mvpp2_driver_init);
+
+static void __exit mvpp2_driver_exit(void)
+{
+ platform_driver_unregister(&mvpp2_driver);
+ mvpp2_dbgfs_exit();
+}
+module_exit(mvpp2_driver_exit);
MODULE_DESCRIPTION("Marvell PPv2 Ethernet Driver - www.marvell.com");
MODULE_AUTHOR("Marcin Wojtas <mw(a)semihalf.com>");
--
2.25.1
1
0

19 Oct '22
From: Eric Dumazet <edumazet(a)google.com>
mainline inclusion
from mainline-v6.1-rc1
commit ec7eede369fe5b0d085ac51fdbb95184f87bfc6c
category: bugfix
bugzilla: 187823, https://gitee.com/src-openeuler/kernel/issues/I5VZ0N
CVE: CVE-2022-3521
--------------------------------
syzbot found that kcm_tx_work() could crash [1] in:
/* Primarily for SOCK_SEQPACKET sockets */
if (likely(sk->sk_socket) &&
test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) {
<<*>> clear_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
sk->sk_write_space(sk);
}
I think the reason is that another thread might concurrently
run in kcm_release() and call sock_orphan(sk) while sk is not
locked. kcm_tx_work() find sk->sk_socket being NULL.
[1]
BUG: KASAN: null-ptr-deref in instrument_atomic_write include/linux/instrumented.h:86 [inline]
BUG: KASAN: null-ptr-deref in clear_bit include/asm-generic/bitops/instrumented-atomic.h:41 [inline]
BUG: KASAN: null-ptr-deref in kcm_tx_work+0xff/0x160 net/kcm/kcmsock.c:742
Write of size 8 at addr 0000000000000008 by task kworker/u4:3/53
CPU: 0 PID: 53 Comm: kworker/u4:3 Not tainted 5.19.0-rc3-next-20220621-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Workqueue: kkcmd kcm_tx_work
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
kasan_report+0xbe/0x1f0 mm/kasan/report.c:495
check_region_inline mm/kasan/generic.c:183 [inline]
kasan_check_range+0x13d/0x180 mm/kasan/generic.c:189
instrument_atomic_write include/linux/instrumented.h:86 [inline]
clear_bit include/asm-generic/bitops/instrumented-atomic.h:41 [inline]
kcm_tx_work+0xff/0x160 net/kcm/kcmsock.c:742
process_one_work+0x996/0x1610 kernel/workqueue.c:2289
worker_thread+0x665/0x1080 kernel/workqueue.c:2436
kthread+0x2e9/0x3a0 kernel/kthread.c:376
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:302
</TASK>
Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Tom Herbert <tom(a)herbertland.com>
Link: https://lore.kernel.org/r/20221012133412.519394-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Baisong Zhong <zhongbaisong(a)huawei.com>
Reviewed-by: Liu Jian <liujian56(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/kcm/kcmsock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
index b919db02c7f9..dd83837f0fbf 100644
--- a/net/kcm/kcmsock.c
+++ b/net/kcm/kcmsock.c
@@ -1839,10 +1839,10 @@ static int kcm_release(struct socket *sock)
kcm = kcm_sk(sk);
mux = kcm->mux;
+ lock_sock(sk);
sock_orphan(sk);
kfree_skb(kcm->seq_skb);
- lock_sock(sk);
/* Purge queue under lock to avoid race condition with tx_work trying
* to act when queue is nonempty. If tx_work runs after this point
* it will just return.
--
2.25.1
1
0

[PATCH openEuler-5.10 01/47] add config to control detecting conflict of opening block device
by Zheng Zengkai 19 Oct '22
by Zheng Zengkai 19 Oct '22
19 Oct '22
From: Li Lingfeng <lilingfeng3(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I53Q6M
CVE: NA
--------------------------------
We have a feature to add info when opening a write opend block
device exclusively. Now we need to add switch to control it.
Signed-off-by: Li Lingfeng <lilingfeng3(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Chao Liu <liuchao173(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
block/Kconfig | 7 +++++++
fs/block_dev.c | 10 ++++++++++
include/linux/blk_types.h | 2 +-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/block/Kconfig b/block/Kconfig
index a2297edfdde8..e5c965f1ea25 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -202,6 +202,13 @@ config BLK_INLINE_ENCRYPTION_FALLBACK
by falling back to the kernel crypto API when inline
encryption hardware is not present.
+config BLK_DEV_DUMPINFO
+ bool "Enable detecting conflict of opening block device"
+ default n
+ help
+ Dump info when open an write opened block device exclusively
+ or open an exclusive opened device for write
+
menu "Partition Types"
source "block/partitions/Kconfig"
diff --git a/fs/block_dev.c b/fs/block_dev.c
index c8a3c93cc256..c55181b4a665 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1479,6 +1479,7 @@ int bdev_disk_changed(struct block_device *bdev, bool invalidate)
*/
EXPORT_SYMBOL_GPL(bdev_disk_changed);
+#ifdef CONFIG_BLK_DEV_DUMPINFO
static void blkdev_dump_conflict_opener(struct block_device *bdev, char *msg)
{
char name[BDEVNAME_SIZE];
@@ -1512,6 +1513,7 @@ static bool is_conflict_excl_open(struct block_device *bdev, struct block_device
return !!whole->bd_write_openers;
}
+#endif
/*
* bd_mutex locking:
*
@@ -1631,6 +1633,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, void *holder,
if (for_part)
bdev->bd_part_count++;
+#ifdef CONFIG_BLK_DEV_DUMPINFO
if (!for_part && (mode & FMODE_WRITE)) {
spin_lock(&bdev_lock);
bdev->bd_write_openers++;
@@ -1638,9 +1641,11 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, void *holder,
bdev->bd_contains->bd_part_write_openers++;
spin_unlock(&bdev_lock);
}
+#endif
if (claiming) {
spin_lock(&bdev_lock);
+#ifdef CONFIG_BLK_DEV_DUMPINFO
/*
* Open an write opened block device exclusively, the
* writing process may probability corrupt the device,
@@ -1649,8 +1654,10 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, void *holder,
if (is_conflict_excl_open(bdev, claiming, mode))
blkdev_dump_conflict_opener(bdev, "VFS: Open an write opened "
"block device exclusively");
+#endif
bd_finish_claiming(bdev, claiming, holder);
spin_unlock(&bdev_lock);
+#ifdef CONFIG_BLK_DEV_DUMPINFO
} else if (!for_part && (mode & FMODE_WRITE)) {
spin_lock(&bdev_lock);
/*
@@ -1663,6 +1670,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, void *holder,
blkdev_dump_conflict_opener(bdev, "VFS: Open an exclusive opened "
"block device for write");
spin_unlock(&bdev_lock);
+#endif
}
/*
@@ -1881,6 +1889,7 @@ static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part)
if (for_part)
bdev->bd_part_count--;
+#ifdef CONFIG_BLK_DEV_DUMPINFO
if (!for_part && (mode & FMODE_WRITE)) {
spin_lock(&bdev_lock);
bdev->bd_write_openers--;
@@ -1888,6 +1897,7 @@ static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part)
bdev->bd_contains->bd_part_write_openers--;
spin_unlock(&bdev_lock);
}
+#endif
if (!--bdev->bd_openers) {
WARN_ON_ONCE(bdev->bd_holders);
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index bbb62ff84601..fbea6b0aef3e 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -48,7 +48,7 @@ struct block_device {
int bd_fsfreeze_count;
/* Mutex for freeze */
struct mutex bd_fsfreeze_mutex;
-#ifndef __GENKSYMS__
+#if defined(CONFIG_BLK_DEV_DUMPINFO) && !defined(__GENKSYMS__)
KABI_USE2(1, int bd_write_openers, int bd_part_write_openers);
#else
KABI_RESERVE(1)
--
2.20.1
1
46
Backport 5.10.122 LTS patches from upstream.
git cherry-pick v5.10.121..v5.10.122~1 -s
Already merged(-6):
36ee9ffca8ef driver core: fix deadlock in __device_attach
6d8d3f68cbec ubi: ubi_create_volume: Fix use-after-free when volume creation
failed
c0868f6e728c nbd: call genl_unregister_family() first in nbd_cleanup()
122e4adaff24 nbd: fix race between nbd_alloc_config() and module removal
f72df77600a4 nbd: fix io hung while disconnecting device
3be74fc0afbe powerpc/32: Fix overread/overwrite of thread_struct via ptrace
Total patches: 174 - 6 = 168
Adrian Hunter (1):
mmc: block: Fix CQE recovery reset success
Alexander Lobakin (1):
modpost: fix removing numeric suffixes
Alexandru Tachici (1):
iio: adc: ad7124: Remove shift from scan_type
Alexey Kardashevskiy (1):
powerpc/mm: Switch obsolete dssall to .long
Andre Przywara (1):
clocksource/drivers/sp804: Avoid error on multiple instances
Baokun Li (1):
jffs2: fix memory leak in jffs2_do_fill_super
Bjorn Andersson (1):
usb: typec: mux: Check dev_set_name() return value
Brian Norris (2):
drm/bridge: analogix_dp: Support PSR-exit to disable transition
drm/atomic: Force bridge self-refresh-exit on CRTC switch
Cameron Berkenpas (1):
ALSA: hda/realtek: Fix for quirk to enable speaker output on the
Lenovo Yoga DuetITL 2021
Changbin Du (1):
sysrq: do not omit current cpu when showing backtrace of all active
CPUs
Changcheng Liu (1):
net/mlx5: correct ECE offset in query qp output
Christian Borntraeger (1):
s390/gmap: voluntarily schedule during key setting
Christophe JAILLET (1):
staging: fieldbus: Fix the error handling path in
anybuss_host_common_probe()
Chuck Lever (1):
SUNRPC: Fix the calculation of xdr->end in
xdr_get_next_encode_buffer()
Cixi Geng (2):
iio: adc: sc27xx: fix read big scale voltage not right
iio: adc: sc27xx: Fine tune the scale calibration values
Damien Le Moal (2):
scsi: sd: Fix potential NULL pointer dereference
zonefs: fix handling of explicit_open option on mount
Dan Carpenter (1):
net: ethernet: mtk_eth_soc: out of bounds read in
mtk_hwlro_get_fdir_entry()
Daniel Gibson (1):
tty: n_tty: Restore EOF push handling behavior
Dave Jiang (2):
dmaengine: idxd: set DMA_INTERRUPT cap bit
dmaengine: idxd: add missing callback function to support
DMA_INTERRUPT
David Howells (1):
afs: Fix infinite loop found by xfstest generic/676
Dongliang Mu (1):
f2fs: remove WARN_ON in f2fs_is_valid_blkaddr
Duoming Zhou (4):
drivers: staging: rtl8192u: Fix deadlock in ieee80211_beacons_stop()
drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop()
drivers: tty: serial: Fix deadlock in sa1100_set_termios()
drivers: usb: host: Fix deadlock in oxu_bus_suspend()
Eric Dumazet (3):
tcp: tcp_rtx_synack() can be called from process context
bpf, arm64: Clear prog->jited_len along prog->jited
tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd
Evan Green (1):
USB: hcd-pci: Fully suspend across freeze/thaw cycle
Feras Daoud (1):
net/mlx5: Rearm the FW tracer after each tracer event
Florian Westphal (1):
netfilter: nat: really support inet nat without l3 address
Gal Pressman (1):
net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure
Gong Yuanjun (2):
mips: cpc: Fix refcount leak in mips_cpc_default_phys_base
drm/radeon: fix a possible null pointer dereference
Greg Ungerer (2):
m68knommu: set ZERO_PAGE() to the allocated zeroed page
m68knommu: fix undefined reference to `_init_sp'
Guangguan Wang (1):
net/smc: fixes for converting from "struct smc_cdc_tx_pend **" to
"struct smc_wr_tx_pend_priv *"
Guilherme G. Piccoli (1):
coresight: cpu-debug: Replace mutex with mutex_trylock on panic
notifier
Guoju Fang (1):
net: sched: add barrier to fix packet stuck problem for lockless qdisc
Guoqing Jiang (1):
md: protect md_unregister_thread from reentrancy
Haibo Chen (1):
gpio: pca953x: use the correct register address to do regcache sync
Hangyu Hua (1):
usb: usbip: fix a refcount leak in stub_probe()
Hannes Reinecke (1):
scsi: myrb: Fix up null pointer access on myrb_cleanup()
Hao Luo (1):
kernfs: Separate kernfs_pr_cont_buf and rename_lock.
Heinrich Schuchardt (1):
riscv: read-only pages should not be writable
Hoang Le (1):
tipc: check attribute length for bearer name
Huang Guobin (1):
tty: Fix a possible resource leak in icom_probe
Ilpo Järvinen (8):
serial: 8250_fintek: Check SER_RS485_RTS_* only with RS485
serial: digicolor-usart: Don't allow CS5-6
serial: rda-uart: Don't allow CS5-6
serial: txx9: Don't allow CS5-6
serial: sh-sci: Don't allow CS5-6
serial: sifive: Sanitize CSIZE and c_iflag
serial: st-asc: Sanitize CSIZE and correct PARENB for CS7
serial: stm32-usart: Correct CSIZE, bits, and parity
Jakob Koschel (1):
staging: greybus: codecs: fix type confusion of list iterator variable
Jann Horn (1):
s390/crypto: fix scatterwalk_unmap() callers in AES-GCM
Jiasheng Jiang (1):
lkdtm/bugs: Check for the NULL pointer after calling kmalloc
Johan Hovold (2):
phy: qcom-qmp: fix pipe-clock imbalance on power-on failure
PCI: qcom: Fix pipe clock imbalance
John Ogness (2):
serial: meson: acquire port->lock in startup()
serial: msm_serial: disable interrupts in __msm_console_write()
Jun Miao (1):
tracing: Fix sleeping function called from invalid context on RT
kernel
Kees Cook (2):
lkdtm/usercopy: Expand size of "out of frame" object
nodemask: Fix return values to be unsigned
Kinglong Mee (1):
xprtrdma: treat all calls not a bcall when bc_serv is NULL
Krzysztof Kozlowski (3):
rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value
rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails
clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value
Kuan-Ying Lee (1):
scripts/gdb: change kernel config dumping method
Kuniyuki Iwashima (1):
af_unix: Fix a data-race in unix_dgram_peer_wake_me().
Leo Yan (1):
perf c2c: Fix sorting in percent_rmt_hitm_cmp()
Leon Romanovsky (1):
net/mlx5: Don't use already freed action pointer
Li Jun (1):
extcon: ptn5150: Add queue work sync before driver release
Lin Ma (1):
USB: storage: karma: fix rio_karma_init return
Linus Torvalds (1):
drm: imx: fix compiler warning with gcc-12
Liu Xinpeng (1):
watchdog: wdat_wdt: Stop watchdog when rebooting the system
Lucas Tanure (1):
i2c: cadence: Increase timeout per message if necessary
Maciej W. Rozycki (1):
serial: sifive: Report actual baud base rather than fixed 115200
Marek Szyprowski (1):
usb: dwc2: gadget: don't reset gadget's driver->bus
Mark Bloch (1):
net/mlx5: fs, fail conflicting actions
Mark-PK Tsai (1):
tracing: Avoid adding tracer option before update_tracer_options
Martin Faltesek (3):
nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION
nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling
nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION
Martin Habets (1):
sfc: fix considering that all channels have TX queues
Masahiro Yamada (5):
xen: unexport __init-annotated xen_xlate_map_ballooned_pages()
net: mdio: unexport __init-annotated mdio_bus_init()
net: xfrm: unexport __init-annotated xfrm4_protocol_init()
net: ipv6: unexport __init-annotated seg6_hmac_init()
modpost: fix undefined behavior of is_arm_mapping_symbol()
Masami Hiramatsu (1):
bootconfig: Make the bootconfig.o as a normal object file
Mathias Nyman (1):
Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag
Maxim Mikityanskiy (1):
net/mlx5e: Update netdev features after changing XDP state
Menglong Dong (1):
bpf: Fix probe read error in ___bpf_prog_run()
Miaoqian Lin (13):
tty: serial: owl: Fix missing clk_disable_unprepare() in
owl_uart_probe
usb: musb: Fix missing of_node_put() in omap2430_probe
iio: adc: stmpe-adc: Fix wait_for_completion_timeout return value
check
iio: proximity: vl53l0x: Fix return value check of
wait_for_completion_timeout
soc: rockchip: Fix refcount leak in rockchip_grf_init
firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle
watchdog: rti-wdt: Fix pm_runtime_get_sync() error checking
watchdog: ts4800_wdt: Fix refcount leak in ts4800_wdt_probe
net: ethernet: ti: am65-cpsw-nuss: Fix some refcount leaks
net: dsa: mv88e6xxx: Fix refcount leak in mv88e6xxx_mdios_register
ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe
net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list
net: altera: Fix refcount leak in altera_tse_mdio_create
Michael Ellerman (1):
powerpc/kasan: Force thread size increase with KASAN
Michal Kubecek (1):
Revert "net: af_key: add check for pfkey_broadcast in function
pfkey_process"
Miquel Raynal (1):
iio: st_sensors: Add a local lock for protecting odr
Niels Dossche (1):
usb: usbip: add missing device lock on tweak configuration cmd
Olivier Matz (2):
ixgbe: fix bcast packets Rx on VF after promisc removal
ixgbe: fix unexpected VLAN Rx in promisc mode on VF
Pablo Neira Ayuso (5):
netfilter: nf_tables: delete flowtable hooks via transaction list
netfilter: nf_tables: always initialize flowtable hook list in
transaction
netfilter: nf_tables: release new hooks on unsupported flowtable flags
netfilter: nf_tables: memleak flow rule from commit path
netfilter: nf_tables: bail out early if hardware offload is not
supported
Pascal Hambourg (1):
md/raid0: Ignore RAID0 layout if the second zone has only one device
Paulo Alcantara (1):
cifs: fix reconnect on smb3 mount types
Peter Zijlstra (2):
x86/cpu: Elide KCSAN for cpu_has() and friends
jump_label,noinstr: Avoid instrumentation for JUMP_LABEL=n builds
Radhey Shyam Pandey (1):
dmaengine: zynqmp_dma: In struct zynqmp_dma_chan fix desc_size data
type
Randy Dunlap (1):
pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards
Samuel Holland (1):
clocksource/drivers/riscv: Events are stopped during CPU suspend
Saravana Kannan (1):
driver core: Fix wait_for_device_probe() & deferred_probe_timeout
interaction
Saurabh Sengar (1):
video: fbdev: hyperv_fb: Allow resolutions with size > 64 MB for Gen1
Schspa Shi (1):
driver: base: fix UAF when driver_attach failed
Sergey Shtylyov (1):
ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files
Shengjiu Wang (1):
ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition
Sherry Sun (1):
tty: serial: fsl_lpuart: fix potential bug when using both
of_alias_get_id and ida_simple_get
Shuah Khan (1):
misc: rtsx: set NULL intfdata when probe fails
Shyam Prasad N (1):
cifs: return errors during session setup during reconnects
Stephen Boyd (2):
interconnect: qcom: sc7180: Drop IP0 interconnects
interconnect: Restore sync state by ignoring ipa-virt in provider
count
Steve French (1):
cifs: version operations for smb20 unneeded when legacy support
disabled
Tan Tee Min (1):
net: phy: dp83867: retrigger SGMII AN when link change
Tony Lindgren (1):
bus: ti-sysc: Fix warnings for unbind for serial
Trond Myklebust (1):
NFSv4: Don't hold the layoutget locks across multiple RPC calls
Uwe Kleine-König (1):
pwm: lp3943: Fix duty calculation in case period was clamped
Venky Shankar (1):
ceph: allow ceph.dir.rctime xattr to be updatable
Vincent Ray (1):
net: sched: fixed barrier to prevent skbuff sticking in qdisc backlog
Wang Cheng (2):
staging: rtl8712: fix uninit-value in usb_read8() and friends
staging: rtl8712: fix uninit-value in r871xu_drv_init()
Wang Weiyang (1):
tty: goldfish: Use tty_port_destroy() to destroy port
Willem de Bruijn (1):
ip_gre: test csum_start instead of transport header
Xiaoke Wang (2):
iio: dummy: iio_simple_dummy: check the return value of kstrdup()
staging: rtl8712: fix a potential memory leak in r871xu_drv_init()
Xiaomeng Tong (2):
misc: fastrpc: fix an incorrect NULL check on list iterator
firmware: stratix10-svc: fix a missing check on list iterator
Xie Yongji (1):
vringh: Fix loop descriptors check in the indirect cases
Yang Yingliang (4):
rtc: mt6397: check return value after calling platform_get_resource()
iommu/arm-smmu: fix possible null-ptr-deref in arm_smmu_device_probe()
iommu/arm-smmu-v3: check return value after calling
platform_get_resource()
video: fbdev: pxa3xx-gcu: release the resources correctly in
pxa3xx_gcu_probe/remove()
Yu Xiao (1):
nfp: only report pause frame configuration for physical device
Zhen Ni (1):
USB: host: isp116x: check return value after calling
platform_get_resource()
Zheng Yongjun (1):
usb: dwc3: pci: Fix pm_runtime_get_sync() error checking
Zheyu Ma (1):
tty: synclink_gt: Fix null-pointer-dereference in slgt_clean()
Zhihao Cheng (1):
ubi: fastmap: Fix high cpu usage of ubi_bgt by making sure wl_pool not
empty
bumwoo lee (1):
extcon: Modify extcon device to be created after driver data is set
huangwenhui (1):
ALSA: hda/conexant - Fix loopback issue with CX20632
Íñigo Huguet (1):
sfc: fix wrong tx channel offset with efx_separate_tx_channels
Documentation/ABI/testing/sysfs-ata | 11 ++--
arch/arm64/net/bpf_jit_comp.c | 1 +
arch/m68k/Kconfig.machine | 1 +
arch/m68k/include/asm/pgtable_no.h | 3 +-
arch/mips/kernel/mips-cpc.c | 1 +
arch/powerpc/Kconfig | 1 -
arch/powerpc/include/asm/ppc-opcode.h | 2 +
arch/powerpc/include/asm/thread_info.h | 10 +++-
arch/powerpc/kernel/idle.c | 2 +-
arch/powerpc/kernel/idle_6xx.S | 2 +-
arch/powerpc/kernel/l2cr_6xx.S | 6 +--
arch/powerpc/kernel/swsusp_32.S | 2 +-
arch/powerpc/kernel/swsusp_asm64.S | 2 +-
arch/powerpc/mm/mmu_context.c | 2 +-
arch/powerpc/platforms/powermac/cache.S | 4 +-
arch/riscv/kernel/efi.c | 2 +-
arch/s390/crypto/aes_s390.c | 4 +-
arch/s390/mm/gmap.c | 14 +++++
arch/x86/include/asm/cpufeature.h | 2 +-
drivers/ata/libata-transport.c | 2 +-
drivers/ata/pata_octeon_cf.c | 3 ++
drivers/base/bus.c | 4 +-
drivers/base/dd.c | 5 --
drivers/bus/ti-sysc.c | 4 +-
drivers/clocksource/timer-oxnas-rps.c | 2 +-
drivers/clocksource/timer-riscv.c | 2 +-
drivers/clocksource/timer-sp804.c | 10 ++--
drivers/dma/idxd/dma.c | 23 ++++++++
drivers/dma/xilinx/zynqmp_dma.c | 5 +-
drivers/extcon/extcon-ptn5150.c | 11 ++++
drivers/extcon/extcon.c | 29 +++++-----
drivers/firmware/dmi-sysfs.c | 2 +-
drivers/firmware/stratix10-svc.c | 12 ++---
drivers/gpio/gpio-pca953x.c | 19 ++++---
.../drm/bridge/analogix/analogix_dp_core.c | 42 +++++++++++++--
drivers/gpu/drm/drm_atomic_helper.c | 16 ++++--
drivers/gpu/drm/imx/ipuv3-crtc.c | 2 +-
drivers/gpu/drm/radeon/radeon_connectors.c | 4 ++
.../hwtracing/coresight/coresight-cpu-debug.c | 7 +--
drivers/i2c/busses/i2c-cadence.c | 12 ++++-
drivers/iio/adc/ad7124.c | 1 -
drivers/iio/adc/sc27xx_adc.c | 20 +++----
drivers/iio/adc/stmpe-adc.c | 8 +--
.../iio/common/st_sensors/st_sensors_core.c | 24 ++++++---
drivers/iio/dummy/iio_simple_dummy.c | 20 ++++---
drivers/iio/proximity/vl53l0x-i2c.c | 7 ++-
drivers/input/mouse/bcm5974.c | 7 ++-
drivers/interconnect/core.c | 7 ++-
drivers/interconnect/qcom/sc7180.c | 21 --------
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 2 +
drivers/iommu/arm/arm-smmu/arm-smmu.c | 5 +-
drivers/md/md.c | 15 ++++--
drivers/md/raid0.c | 31 +++++------
drivers/misc/cardreader/rtsx_usb.c | 1 +
drivers/misc/fastrpc.c | 9 ++--
drivers/misc/lkdtm/bugs.c | 5 ++
drivers/misc/lkdtm/usercopy.c | 17 ++++--
drivers/mmc/core/block.c | 3 +-
drivers/mtd/ubi/ubi.h | 4 +-
drivers/net/dsa/lantiq_gswip.c | 4 +-
drivers/net/dsa/mv88e6xxx/chip.c | 1 +
drivers/net/ethernet/altera/altera_tse_main.c | 6 ++-
.../net/ethernet/intel/ixgbe/ixgbe_sriov.c | 8 +--
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 3 ++
.../net/ethernet/mellanox/mlx4/en_ethtool.c | 2 +-
.../mellanox/mlx5/core/diag/fw_tracer.c | 7 ++-
.../net/ethernet/mellanox/mlx5/core/en_main.c | 5 ++
.../net/ethernet/mellanox/mlx5/core/fs_core.c | 35 ++++++++++--
.../mellanox/mlx5/core/steering/fs_dr.c | 9 ++--
.../ethernet/netronome/nfp/nfp_net_ethtool.c | 4 +-
drivers/net/ethernet/sfc/efx_channels.c | 6 +--
drivers/net/ethernet/sfc/net_driver.h | 2 +-
drivers/net/ethernet/ti/am65-cpsw-nuss.c | 3 +-
drivers/net/phy/dp83867.c | 29 ++++++++++
drivers/net/phy/mdio_bus.c | 1 -
drivers/nfc/st21nfca/se.c | 53 +++++++++++--------
drivers/pci/controller/dwc/pcie-qcom.c | 6 ---
drivers/pcmcia/Kconfig | 2 +-
drivers/phy/qualcomm/phy-qcom-qmp.c | 2 +-
drivers/pwm/pwm-lp3943.c | 1 +
drivers/rpmsg/qcom_smd.c | 4 +-
drivers/rtc/rtc-mt6397.c | 2 +
drivers/scsi/myrb.c | 11 ++--
drivers/scsi/sd.c | 1 -
drivers/soc/rockchip/grf.c | 2 +
drivers/staging/fieldbus/anybuss/host.c | 2 +-
drivers/staging/greybus/audio_codec.c | 4 +-
drivers/staging/rtl8192e/rtllib_softmac.c | 2 +-
.../rtl8192u/ieee80211/ieee80211_softmac.c | 2 +-
drivers/staging/rtl8712/os_intfs.c | 1 -
drivers/staging/rtl8712/usb_intf.c | 12 ++---
drivers/staging/rtl8712/usb_ops.c | 27 ++++++----
drivers/tty/goldfish.c | 2 +
drivers/tty/n_tty.c | 38 ++++++++++++-
drivers/tty/serial/8250/8250_fintek.c | 8 +--
drivers/tty/serial/digicolor-usart.c | 2 +
drivers/tty/serial/fsl_lpuart.c | 24 ++-------
drivers/tty/serial/icom.c | 2 +-
drivers/tty/serial/meson_uart.c | 13 +++++
drivers/tty/serial/msm_serial.c | 5 ++
drivers/tty/serial/owl-uart.c | 1 +
drivers/tty/serial/rda-uart.c | 2 +
drivers/tty/serial/sa1100.c | 4 +-
drivers/tty/serial/serial_txx9.c | 2 +
drivers/tty/serial/sh-sci.c | 6 ++-
drivers/tty/serial/sifive.c | 8 ++-
drivers/tty/serial/st-asc.c | 4 ++
drivers/tty/serial/stm32-usart.c | 15 ++++--
drivers/tty/synclink_gt.c | 2 +
drivers/tty/sysrq.c | 13 +++--
drivers/usb/core/hcd-pci.c | 4 +-
drivers/usb/dwc2/gadget.c | 1 -
drivers/usb/dwc3/dwc3-pci.c | 2 +-
drivers/usb/host/isp116x-hcd.c | 6 ++-
drivers/usb/host/oxu210hp-hcd.c | 2 +
drivers/usb/musb/omap2430.c | 1 +
drivers/usb/storage/karma.c | 15 +++---
drivers/usb/typec/mux.c | 14 +++--
drivers/usb/usbip/stub_dev.c | 2 +-
drivers/usb/usbip/stub_rx.c | 2 +
drivers/vhost/vringh.c | 10 +++-
drivers/video/fbdev/hyperv_fb.c | 19 +------
drivers/video/fbdev/pxa3xx-gcu.c | 12 +++--
drivers/watchdog/rti_wdt.c | 2 +-
drivers/watchdog/ts4800_wdt.c | 5 +-
drivers/watchdog/wdat_wdt.c | 1 +
drivers/xen/xlate_mmu.c | 1 -
fs/afs/dir.c | 5 +-
fs/ceph/xattr.c | 10 +++-
fs/cifs/cifsfs.c | 2 +-
fs/cifs/cifsfs.h | 2 +-
fs/cifs/cifsglob.h | 4 +-
fs/cifs/misc.c | 27 ++++++----
fs/cifs/smb2ops.c | 7 ++-
fs/cifs/smb2pdu.c | 3 ++
fs/f2fs/checkpoint.c | 4 +-
fs/jffs2/fs.c | 1 +
fs/kernfs/dir.c | 31 ++++++-----
fs/nfs/nfs4proc.c | 4 ++
fs/zonefs/super.c | 11 ++--
include/linux/iio/common/st_sensors.h | 3 ++
include/linux/jump_label.h | 4 +-
include/linux/mlx5/mlx5_ifc.h | 5 +-
include/linux/nodemask.h | 38 ++++++-------
include/net/flow_offload.h | 1 +
include/net/netfilter/nf_tables.h | 1 -
include/net/netfilter/nf_tables_offload.h | 2 +-
include/net/sch_generic.h | 42 +++++----------
kernel/bpf/core.c | 14 ++---
kernel/trace/trace.c | 13 +++--
lib/Makefile | 2 +-
lib/nodemask.c | 4 +-
net/core/flow_offload.c | 6 +++
net/ipv4/ip_gre.c | 11 ++--
net/ipv4/tcp_input.c | 11 ++--
net/ipv4/tcp_output.c | 4 +-
net/ipv4/xfrm4_protocol.c | 1 -
net/ipv6/seg6_hmac.c | 1 -
net/key/af_key.c | 10 ++--
net/netfilter/nf_tables_api.c | 52 ++++++++----------
net/netfilter/nf_tables_offload.c | 23 +++++++-
net/netfilter/nft_nat.c | 3 +-
net/smc/smc_cdc.c | 2 +-
net/sunrpc/xdr.c | 6 ++-
net/sunrpc/xprtrdma/rpc_rdma.c | 5 ++
net/tipc/bearer.c | 3 +-
net/unix/af_unix.c | 2 +-
scripts/gdb/linux/config.py | 6 +--
scripts/mod/modpost.c | 5 +-
sound/pci/hda/patch_conexant.c | 7 +++
sound/pci/hda/patch_realtek.c | 1 +
sound/soc/fsl/fsl_sai.h | 4 +-
tools/perf/builtin-c2c.c | 4 +-
tools/testing/selftests/netfilter/nft_nat.sh | 43 +++++++++++++++
174 files changed, 946 insertions(+), 508 deletions(-)
--
2.20.1
1
168

[PATCH openEuler-22.03-LTS-Ascend 01/79] mm/sharepool: Support read-only memory allocation
by Zheng Zengkai 18 Oct '22
by Zheng Zengkai 18 Oct '22
18 Oct '22
From: Zhou Guanghui <zhouguanghui1(a)huawei.com>
Offering: HULK
ascend inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5DS9S
--------------------------------
When the driver uses the shared pool memory to share the memory
with the user space, the user space is not allowed to operate
this area. This prevents users from damaging sensitive data.
When the sp_alloc and k2u processes apply for private memory,
read-only memory can be applied for.
Signed-off-by: Zhou Guanghui <zhouguanghui1(a)huawei.com>
---
include/linux/share_pool.h | 3 ++-
mm/share_pool.c | 18 ++++++++++++++++--
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/include/linux/share_pool.h b/include/linux/share_pool.h
index 6f294911c6af..5539a17da7a9 100644
--- a/include/linux/share_pool.h
+++ b/include/linux/share_pool.h
@@ -15,6 +15,7 @@
#define SP_HUGEPAGE_ONLY (1 << 1)
#define SP_DVPP (1 << 2)
#define SP_SPEC_NODE_ID (1 << 3)
+#define SP_PROT_RO (1 << 16)
#define DEVICE_ID_BITS 4UL
#define DEVICE_ID_MASK ((1UL << DEVICE_ID_BITS) - 1UL)
@@ -24,7 +25,7 @@
#define NODE_ID_SHIFT (DEVICE_ID_SHIFT + DEVICE_ID_BITS)
#define SP_FLAG_MASK (SP_HUGEPAGE | SP_HUGEPAGE_ONLY | SP_DVPP | \
- SP_SPEC_NODE_ID | \
+ SP_SPEC_NODE_ID | SP_PROT_RO | \
(DEVICE_ID_MASK << DEVICE_ID_SHIFT) | \
(NODE_ID_MASK << NODE_ID_SHIFT))
diff --git a/mm/share_pool.c b/mm/share_pool.c
index 76088952d0a5..99f25a551afc 100644
--- a/mm/share_pool.c
+++ b/mm/share_pool.c
@@ -2331,6 +2331,9 @@ static int sp_alloc_mmap(struct mm_struct *mm, struct sp_area *spa,
if (spg_node)
prot = spg_node->prot;
+ if (ac->sp_flags & SP_PROT_RO)
+ prot = PROT_READ;
+
/* when success, mmap_addr == spa->va_start */
mmap_addr = sp_mmap(mm, spa_file(spa), spa, &populate, prot);
if (IS_ERR_VALUE(mmap_addr)) {
@@ -2355,6 +2358,10 @@ static int sp_alloc_mmap(struct mm_struct *mm, struct sp_area *spa,
ret = -EINVAL;
goto unmap;
}
+
+ if (ac->sp_flags & SP_PROT_RO)
+ vma->vm_flags &= ~VM_MAYWRITE;
+
/* clean PTE_RDONLY flags or trigger SMMU event */
if (prot & PROT_WRITE)
vma->vm_page_prot = __pgprot(((~PTE_RDONLY) & vma->vm_page_prot.pgprot) | PTE_DIRTY);
@@ -2650,6 +2657,9 @@ static unsigned long sp_remap_kva_to_vma(unsigned long kva, struct sp_area *spa,
goto put_mm;
}
+ if (kc && kc->sp_flags & SP_PROT_RO)
+ prot = PROT_READ;
+
ret_addr = sp_mmap(mm, spa_file(spa), spa, &populate, prot);
if (IS_ERR_VALUE(ret_addr)) {
pr_debug("k2u mmap failed %lx\n", ret_addr);
@@ -2662,6 +2672,9 @@ static unsigned long sp_remap_kva_to_vma(unsigned long kva, struct sp_area *spa,
if (prot & PROT_WRITE)
vma->vm_page_prot = __pgprot(((~PTE_RDONLY) & vma->vm_page_prot.pgprot) | PTE_DIRTY);
+ if (kc && kc->sp_flags & SP_PROT_RO)
+ vma->vm_flags &= ~VM_MAYWRITE;
+
if (is_vm_hugetlb_page(vma)) {
ret = remap_vmalloc_hugepage_range(vma, (void *)kva, 0);
if (ret) {
@@ -2713,6 +2726,7 @@ static void *sp_make_share_kva_to_task(unsigned long kva, unsigned long size, un
struct sp_area *spa;
struct spg_proc_stat *stat;
unsigned long prot = PROT_READ | PROT_WRITE;
+ struct sp_k2u_context kc;
down_write(&sp_group_sem);
stat = sp_init_process_stat(current, current->mm, spg_none);
@@ -2731,8 +2745,8 @@ static void *sp_make_share_kva_to_task(unsigned long kva, unsigned long size, un
}
spa->kva = kva;
-
- uva = (void *)sp_remap_kva_to_vma(kva, spa, current->mm, prot, NULL);
+ kc.sp_flags = sp_flags;
+ uva = (void *)sp_remap_kva_to_vma(kva, spa, current->mm, prot, &kc);
__sp_area_drop(spa);
if (IS_ERR(uva))
pr_err("remap k2u to task failed %ld\n", PTR_ERR(uva));
--
2.20.1
1
78

[PATCH openEuler-5.10-LTS 01/12] mm/rmap: Fix anon_vma->degree ambiguity leading to double-reuse
by Zheng Zengkai 18 Oct '22
by Zheng Zengkai 18 Oct '22
18 Oct '22
From: Jann Horn <jannh(a)google.com>
stable inclusion
from stable-v5.10.141
commit 98f401d36396134c0c86e9e3bd00b6b6b028b521
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5USOP
CVE: CVE-2022-42703
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 2555283eb40df89945557273121e9393ef9b542b upstream.
anon_vma->degree tracks the combined number of child anon_vmas and VMAs
that use the anon_vma as their ->anon_vma.
anon_vma_clone() then assumes that for any anon_vma attached to
src->anon_vma_chain other than src->anon_vma, it is impossible for it to
be a leaf node of the VMA tree, meaning that for such VMAs ->degree is
elevated by 1 because of a child anon_vma, meaning that if ->degree
equals 1 there are no VMAs that use the anon_vma as their ->anon_vma.
This assumption is wrong because the ->degree optimization leads to leaf
nodes being abandoned on anon_vma_clone() - an existing anon_vma is
reused and no new parent-child relationship is created. So it is
possible to reuse an anon_vma for one VMA while it is still tied to
another VMA.
This is an issue because is_mergeable_anon_vma() and its callers assume
that if two VMAs have the same ->anon_vma, the list of anon_vmas
attached to the VMAs is guaranteed to be the same. When this assumption
is violated, vma_merge() can merge pages into a VMA that is not attached
to the corresponding anon_vma, leading to dangling page->mapping
pointers that will be dereferenced during rmap walks.
Fix it by separately tracking the number of child anon_vmas and the
number of VMAs using the anon_vma as their ->anon_vma.
Fixes: 7a3ef208e662 ("mm: prevent endless growth of anon_vma hierarchy")
Cc: stable(a)kernel.org
Acked-by: Michal Hocko <mhocko(a)suse.com>
Acked-by: Vlastimil Babka <vbabka(a)suse.cz>
Signed-off-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Ma Wupeng <mawupeng1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/rmap.h | 7 +++++--
mm/rmap.c | 29 ++++++++++++++++-------------
2 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/include/linux/rmap.h b/include/linux/rmap.h
index 8d04e7deedc6..297744ea4dd0 100644
--- a/include/linux/rmap.h
+++ b/include/linux/rmap.h
@@ -39,12 +39,15 @@ struct anon_vma {
atomic_t refcount;
/*
- * Count of child anon_vmas and VMAs which points to this anon_vma.
+ * Count of child anon_vmas. Equals to the count of all anon_vmas that
+ * have ->parent pointing to this one, including itself.
*
* This counter is used for making decision about reusing anon_vma
* instead of forking new one. See comments in function anon_vma_clone.
*/
- unsigned degree;
+ unsigned long num_children;
+ /* Count of VMAs whose ->anon_vma pointer points to this object. */
+ unsigned long num_active_vmas;
struct anon_vma *parent; /* Parent of this anon_vma */
diff --git a/mm/rmap.c b/mm/rmap.c
index 0dc39cf94345..d0ef90af0567 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -89,7 +89,8 @@ static inline struct anon_vma *anon_vma_alloc(void)
anon_vma = kmem_cache_alloc(anon_vma_cachep, GFP_KERNEL);
if (anon_vma) {
atomic_set(&anon_vma->refcount, 1);
- anon_vma->degree = 1; /* Reference for first vma */
+ anon_vma->num_children = 0;
+ anon_vma->num_active_vmas = 0;
anon_vma->parent = anon_vma;
/*
* Initialise the anon_vma root to point to itself. If called
@@ -197,6 +198,7 @@ int __anon_vma_prepare(struct vm_area_struct *vma)
anon_vma = anon_vma_alloc();
if (unlikely(!anon_vma))
goto out_enomem_free_avc;
+ anon_vma->num_children++; /* self-parent link for new root */
allocated = anon_vma;
}
@@ -206,8 +208,7 @@ int __anon_vma_prepare(struct vm_area_struct *vma)
if (likely(!vma->anon_vma)) {
vma->anon_vma = anon_vma;
anon_vma_chain_link(vma, avc, anon_vma);
- /* vma reference or self-parent link for new root */
- anon_vma->degree++;
+ anon_vma->num_active_vmas++;
allocated = NULL;
avc = NULL;
}
@@ -292,19 +293,19 @@ int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)
anon_vma_chain_link(dst, avc, anon_vma);
/*
- * Reuse existing anon_vma if its degree lower than two,
- * that means it has no vma and only one anon_vma child.
+ * Reuse existing anon_vma if it has no vma and only one
+ * anon_vma child.
*
- * Do not chose parent anon_vma, otherwise first child
- * will always reuse it. Root anon_vma is never reused:
+ * Root anon_vma is never reused:
* it has self-parent reference and at least one child.
*/
if (!dst->anon_vma && src->anon_vma &&
- anon_vma != src->anon_vma && anon_vma->degree < 2)
+ anon_vma->num_children < 2 &&
+ anon_vma->num_active_vmas == 0)
dst->anon_vma = anon_vma;
}
if (dst->anon_vma)
- dst->anon_vma->degree++;
+ dst->anon_vma->num_active_vmas++;
unlock_anon_vma_root(root);
return 0;
@@ -354,6 +355,7 @@ int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma)
anon_vma = anon_vma_alloc();
if (!anon_vma)
goto out_error;
+ anon_vma->num_active_vmas++;
avc = anon_vma_chain_alloc(GFP_KERNEL);
if (!avc)
goto out_error_free_anon_vma;
@@ -374,7 +376,7 @@ int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma)
vma->anon_vma = anon_vma;
anon_vma_lock_write(anon_vma);
anon_vma_chain_link(vma, avc, anon_vma);
- anon_vma->parent->degree++;
+ anon_vma->parent->num_children++;
anon_vma_unlock_write(anon_vma);
return 0;
@@ -406,7 +408,7 @@ void unlink_anon_vmas(struct vm_area_struct *vma)
* to free them outside the lock.
*/
if (RB_EMPTY_ROOT(&anon_vma->rb_root.rb_root)) {
- anon_vma->parent->degree--;
+ anon_vma->parent->num_children--;
continue;
}
@@ -414,7 +416,7 @@ void unlink_anon_vmas(struct vm_area_struct *vma)
anon_vma_chain_free(avc);
}
if (vma->anon_vma) {
- vma->anon_vma->degree--;
+ vma->anon_vma->num_active_vmas--;
/*
* vma would still be needed after unlink, and anon_vma will be prepared
@@ -432,7 +434,8 @@ void unlink_anon_vmas(struct vm_area_struct *vma)
list_for_each_entry_safe(avc, next, &vma->anon_vma_chain, same_vma) {
struct anon_vma *anon_vma = avc->anon_vma;
- VM_WARN_ON(anon_vma->degree);
+ VM_WARN_ON(anon_vma->num_children);
+ VM_WARN_ON(anon_vma->num_active_vmas);
put_anon_vma(anon_vma);
list_del(&avc->same_vma);
--
2.20.1
1
11

[PATCH openEuler-1.0-LTS] fbdev: smscufx: Fix use-after-free in ufx_ops_open()
by Yongqiang Liu 18 Oct '22
by Yongqiang Liu 18 Oct '22
18 Oct '22
From: Hyunwoo Kim <imv4bel(a)gmail.com>
mainline inclusion
from mainline-v6.0-rc1
commit 5610bcfe8693c02e2e4c8b31427f1bdbdecc839c
category: bugfix
bugzilla: 187798, https://gitee.com/src-openeuler/kernel/issues/I5U1NZ
CVE: CVE-2022-41849
--------------------------------
A race condition may occur if the user physically removes the
USB device while calling open() for this device node.
This is a race condition between the ufx_ops_open() function and
the ufx_usb_disconnect() function, which may eventually result in UAF.
So, add a mutex to the ufx_ops_open() and ufx_usb_disconnect() functions
to avoid race contidion of krefs.
Signed-off-by: Hyunwoo Kim <imv4bel(a)gmail.com>
Cc: stable(a)vger.kernel.org
Signed-off-by: Helge Deller <deller(a)gmx.de>
Signed-off-by: ChenXiaoSong <chenxiaosong2(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/video/fbdev/smscufx.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c
index 22b606af0a87..2256e5816090 100644
--- a/drivers/video/fbdev/smscufx.c
+++ b/drivers/video/fbdev/smscufx.c
@@ -140,6 +140,8 @@ static int ufx_submit_urb(struct ufx_data *dev, struct urb * urb, size_t len);
static int ufx_alloc_urb_list(struct ufx_data *dev, int count, size_t size);
static void ufx_free_urb_list(struct ufx_data *dev);
+static DEFINE_MUTEX(disconnect_mutex);
+
/* reads a control register */
static int ufx_reg_read(struct ufx_data *dev, u32 index, u32 *data)
{
@@ -1073,9 +1075,13 @@ static int ufx_ops_open(struct fb_info *info, int user)
if (user == 0 && !console)
return -EBUSY;
+ mutex_lock(&disconnect_mutex);
+
/* If the USB device is gone, we don't accept new opens */
- if (dev->virtualized)
+ if (dev->virtualized) {
+ mutex_unlock(&disconnect_mutex);
return -ENODEV;
+ }
dev->fb_count++;
@@ -1099,6 +1105,8 @@ static int ufx_ops_open(struct fb_info *info, int user)
pr_debug("open /dev/fb%d user=%d fb_info=%p count=%d",
info->node, user, info, dev->fb_count);
+ mutex_unlock(&disconnect_mutex);
+
return 0;
}
@@ -1747,6 +1755,8 @@ static void ufx_usb_disconnect(struct usb_interface *interface)
{
struct ufx_data *dev;
+ mutex_lock(&disconnect_mutex);
+
dev = usb_get_intfdata(interface);
pr_debug("USB disconnect starting\n");
@@ -1767,6 +1777,8 @@ static void ufx_usb_disconnect(struct usb_interface *interface)
kref_put(&dev->kref, ufx_free);
/* consider ufx_data freed */
+
+ mutex_unlock(&disconnect_mutex);
}
static struct usb_driver ufx_driver = {
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/2] arm64: fix oops in concurrently setting insn_emulation sysctls
by Yongqiang Liu 18 Oct '22
by Yongqiang Liu 18 Oct '22
18 Oct '22
From: haibinzhang (张海斌) <haibinzhang(a)tencent.com>
stable inclusion
from stable-v4.19.256
commit b51881b1da57fe9877125dfdd0aac5172958fcfd
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5U71M
CVE: CVE-2022-20422
---------------------------
[ Upstream commit af483947d472eccb79e42059276c4deed76f99a6 ]
emulation_proc_handler() changes table->data for proc_dointvec_minmax
and can generate the following Oops if called concurrently with itself:
| Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
| Internal error: Oops: 96000006 [#1] SMP
| Call trace:
| update_insn_emulation_mode+0xc0/0x148
| emulation_proc_handler+0x64/0xb8
| proc_sys_call_handler+0x9c/0xf8
| proc_sys_write+0x18/0x20
| __vfs_write+0x20/0x48
| vfs_write+0xe4/0x1d0
| ksys_write+0x70/0xf8
| __arm64_sys_write+0x20/0x28
| el0_svc_common.constprop.0+0x7c/0x1c0
| el0_svc_handler+0x2c/0xa0
| el0_svc+0x8/0x200
To fix this issue, keep the table->data as &insn->current_mode and
use container_of() to retrieve the insn pointer. Another mutex is
used to protect against the current_mode update but not for retrieving
insn_emulation as table->data is no longer changing.
Co-developed-by: hewenliang <hewenliang4(a)huawei.com>
Signed-off-by: hewenliang <hewenliang4(a)huawei.com>
Signed-off-by: Haibin Zhang <haibinzhang(a)tencent.com>
Reviewed-by: Catalin Marinas <catalin.marinas(a)arm.com>
Link: https://lore.kernel.org/r/20220128090324.2727688-1-hewenliang4@huawei.com
Link: https://lore.kernel.org/r/9A004C03-250B-46C5-BF39-782D7551B00E@tencent.com
Signed-off-by: Will Deacon <will(a)kernel.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: ruanjinjie <ruanjinjie(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/arm64/kernel/armv8_deprecated.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
index 0cbf78581974..88d3454f2848 100644
--- a/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
@@ -62,6 +62,7 @@ struct insn_emulation {
static LIST_HEAD(insn_emulation);
static int nr_insn_emulated __initdata;
static DEFINE_RAW_SPINLOCK(insn_emulation_lock);
+static DEFINE_MUTEX(insn_emulation_mutex);
static void register_emulation_hooks(struct insn_emulation_ops *ops)
{
@@ -210,10 +211,10 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
loff_t *ppos)
{
int ret = 0;
- struct insn_emulation *insn = (struct insn_emulation *) table->data;
+ struct insn_emulation *insn = container_of(table->data, struct insn_emulation, current_mode);
enum insn_emulation_mode prev_mode = insn->current_mode;
- table->data = &insn->current_mode;
+ mutex_lock(&insn_emulation_mutex);
ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
if (ret || !write || prev_mode == insn->current_mode)
@@ -226,7 +227,7 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
update_insn_emulation_mode(insn, INSN_UNDEF);
}
ret:
- table->data = insn;
+ mutex_unlock(&insn_emulation_mutex);
return ret;
}
@@ -250,7 +251,7 @@ static void __init register_insn_emulation_sysctl(void)
sysctl->maxlen = sizeof(int);
sysctl->procname = insn->ops->name;
- sysctl->data = insn;
+ sysctl->data = &insn->current_mode;
sysctl->extra1 = &insn->min;
sysctl->extra2 = &insn->max;
sysctl->proc_handler = emulation_proc_handler;
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/2] init/Kconfig: Add SMP to the dependencies of QOS_SCHED
by Yongqiang Liu 17 Oct '22
by Yongqiang Liu 17 Oct '22
17 Oct '22
From: Xia Fukun <xiafukun(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5UPB0
CVE: NA
------------------------------------------------------------
After CONFIG_SMP is disabled during kernel compilation,
CONFIG_QOS_SCHED is not disabled.
As a result, the following error occurs:
kernel/sched/fair.c: In function ‘check_qos_cfs_rq’:
kernel/sched/fair.c:7324:4: error: implicit declaration of function
‘sched_idle_cpu’; did you mean ‘sched_idle_rq’?
[-Werror=implicit-function-declaration]
7324 | !sched_idle_cpu(smp_processor_id()) &&
| ^~~~~~~~~~~~~~
./include/linux/compiler.h:78:42: note: in definition of macro ‘unlikely’
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
CC mm/highmem.o
kernel/sched/fair.c: In function ‘pick_next_task_fair’:
kernel/sched/fair.c:7599:43: error: ‘struct rq’ has no member named ‘online’
7599 | if (cfs_rq->idle_h_nr_running != 0 && rq->online)
| ^~
AR arch/x86/mm/pat/built-in.a
CC kernel/sched/stats.o
kernel/sched/fair.c:7790:7: error: ‘struct rq’ has no member named ‘idle_stamp’;
did you mean ‘idle_state’?
7790 | rq->idle_stamp = 0;
| ^~~~~~~~~~
| idle_state
This is because the definitions of the corresponding functions
and variables depend on the SMP configuration.
So add SMP to the dependencies of QOS_SCHED.
Signed-off-by: Xia Fukun <xiafukun(a)huawei.com>
Reviewed-by: Zhang Qiao <zhangqiao22(a)huawei.com>
Reviewed-by: zheng zucheng <zhengzucheng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
init/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/init/Kconfig b/init/Kconfig
index 2c79f2e51fc4..a2a733080fe1 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -791,6 +791,7 @@ config QOS_SCHED
bool "Qos task scheduling"
depends on CGROUP_SCHED
depends on CFS_BANDWIDTH
+ depends on SMP
default n
--
2.25.1
1
1

[PATCH openEuler-5.10 01/12] blk-iocost: don't ignore vrate_min on QD contention
by Zheng Zengkai 14 Oct '22
by Zheng Zengkai 14 Oct '22
14 Oct '22
From: Tejun Heo <tj(a)kernel.org>
mainline inclusion
from mainline-v5.13-rc1
commit f46ec84b5acbf8d7067d71a6bbdde213d4b86036
category: bugfix
bugzilla: 187443, https://gitee.com/openeuler/kernel/issues/I5PFPV
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
----------------------------------------------------------------------
ioc_adjust_base_vrate() ignored vrate_min when rq_wait_pct indicates that
there is QD contention. The reasoning was that QD depletion always reliably
indicates device saturation and thus it's safe to override user specified
vrate_min. However, this sometimes leads to unnecessary throttling,
especially on really fast devices, because vrate adjustments have delays and
inertia. It also confuses users because the behavior violates the explicitly
specified configuration.
This patch drops the special case handling so that vrate_min is always
applied.
Signed-off-by: Tejun Heo <tj(a)kernel.org>
Link: https://lore.kernel.org/r/YIIo1HuyNmhDeiNx@slm.duckdns.org
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
confilict:
block/blk-iocost.c
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
block/blk-iocost.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/block/blk-iocost.c b/block/blk-iocost.c
index fb8f959a7f32..08e4ba856e3b 100644
--- a/block/blk-iocost.c
+++ b/block/blk-iocost.c
@@ -2341,10 +2341,6 @@ static void ioc_timer_fn(struct timer_list *timer)
u64 vrate = ioc->vtime_base_rate;
u64 vrate_min = ioc->vrate_min, vrate_max = ioc->vrate_max;
- /* rq_wait signal is always reliable, ignore user vrate_min */
- if (rq_wait_pct > RQ_WAIT_BUSY_PCT)
- vrate_min = VRATE_MIN;
-
/*
* If vrate is out of bounds, apply clamp gradually as the
* bounds can change abruptly. Otherwise, apply busy_level
--
2.20.1
1
11

[PATCH openEuler-1.0-LTS 1/3] HID: roccat: Fix use-after-free in roccat_read()
by Yongqiang Liu 14 Oct '22
by Yongqiang Liu 14 Oct '22
14 Oct '22
From: Hyunwoo Kim <imv4bel(a)gmail.com>
mainline inclusion
from mainline master
commit cacdb14b1c8d3804a3a7d31773bc7569837b71a4
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5U1PE
CVE: CVE-2022-41850
--------------------------------
roccat_report_event() is responsible for registering
roccat-related reports in struct roccat_device.
int roccat_report_event(int minor, u8 const *data)
{
struct roccat_device *device;
struct roccat_reader *reader;
struct roccat_report *report;
uint8_t *new_value;
device = devices[minor];
new_value = kmemdup(data, device->report_size, GFP_ATOMIC);
if (!new_value)
return -ENOMEM;
report = &device->cbuf[device->cbuf_end];
/* passing NULL is safe */
kfree(report->value);
...
The registered report is stored in the struct roccat_device member
"struct roccat_report cbuf[ROCCAT_CBUF_SIZE];".
If more reports are received than the "ROCCAT_CBUF_SIZE" value,
kfree() the saved report from cbuf[0] and allocates a new reprot.
Since there is no lock when this kfree() is performed,
kfree() can be performed even while reading the saved report.
static ssize_t roccat_read(struct file *file, char __user *buffer,
size_t count, loff_t *ppos)
{
struct roccat_reader *reader = file->private_data;
struct roccat_device *device = reader->device;
struct roccat_report *report;
ssize_t retval = 0, len;
DECLARE_WAITQUEUE(wait, current);
mutex_lock(&device->cbuf_lock);
...
report = &device->cbuf[reader->cbuf_start];
/*
* If report is larger than requested amount of data, rest of report
* is lost!
*/
len = device->report_size > count ? count : device->report_size;
if (copy_to_user(buffer, report->value, len)) {
retval = -EFAULT;
goto exit_unlock;
}
...
The roccat_read() function receives the device->cbuf report and
delivers it to the user through copy_to_user().
If the N+ROCCAT_CBUF_SIZE th report is received while copying of
the Nth report->value is in progress, the pointer that copy_to_user()
is working on is kfree()ed and UAF read may occur. (race condition)
Since the device node of this driver does not set separate permissions,
this is not a security vulnerability, but because it is used for
requesting screen display of profile or dpi settings,
a user using the roccat device can apply udev to this device node or
There is a possibility to use it by giving.
Signed-off-by: Hyunwoo Kim <imv4bel(a)gmail.com>
Signed-off-by: Jiri Kosina <jkosina(a)suse.cz>
Signed-off-by: Cai Xinchen <caixinchen1(a)huawei.com>
Reviewed-by: Ruiqi Gong <gongruiqi1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/hid/hid-roccat.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/hid/hid-roccat.c b/drivers/hid/hid-roccat.c
index 5be8de70c651..c9cec00b4e6e 100644
--- a/drivers/hid/hid-roccat.c
+++ b/drivers/hid/hid-roccat.c
@@ -260,6 +260,8 @@ int roccat_report_event(int minor, u8 const *data)
if (!new_value)
return -ENOMEM;
+ mutex_lock(&device->cbuf_lock);
+
report = &device->cbuf[device->cbuf_end];
/* passing NULL is safe */
@@ -279,6 +281,8 @@ int roccat_report_event(int minor, u8 const *data)
reader->cbuf_start = (reader->cbuf_start + 1) % ROCCAT_CBUF_SIZE;
}
+ mutex_unlock(&device->cbuf_lock);
+
wake_up_interruptible(&device->wait);
return 0;
}
--
2.25.1
1
2

[PATCH openEuler-5.10-LTS 01/16] RDMA/hns: Remove redundant DFX file and DFX ops structure
by Zheng Zengkai 13 Oct '22
by Zheng Zengkai 13 Oct '22
13 Oct '22
From: Wenpeng Liang <liangwenpeng(a)huawei.com>
mainline inclusion
from mainline-for-next
commit 40b4b79c866f
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5TAQ5
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git/commit/?id=40…
----------------------------------------------------------------------
There is no need to use a dedicated DXF file and DFX structure to manage
the interface of the query queue context.
Link: https://lore.kernel.org/r/20220822104455.2311053-2-liangwenpeng@huawei.com
Signed-off-by: Wenpeng Liang <liangwenpeng(a)huawei.com>
Signed-off-by: Leon Romanovsky <leon(a)kernel.org>
Signed-off-by: Zhengfeng Luo <luozhengfeng(a)h-partners.com>
Reviewed-by: Yangyang Li <liyangyang20(a)huawei.com>
Reviewed-by: YueHaibing <yuehaibing(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/infiniband/hw/hns/Makefile | 2 +-
drivers/infiniband/hw/hns/hns_roce_device.h | 10 ++----
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 35 ++++++++++++++++---
drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 3 --
drivers/infiniband/hw/hns/hns_roce_main.c | 6 +++-
drivers/infiniband/hw/hns/hns_roce_restrack.c | 35 +++++++------------
6 files changed, 50 insertions(+), 41 deletions(-)
diff --git a/drivers/infiniband/hw/hns/Makefile b/drivers/infiniband/hw/hns/Makefile
index 9f04f25d9631..a7d259238305 100644
--- a/drivers/infiniband/hw/hns/Makefile
+++ b/drivers/infiniband/hw/hns/Makefile
@@ -10,6 +10,6 @@ hns-roce-objs := hns_roce_main.o hns_roce_cmd.o hns_roce_pd.o \
hns_roce_cq.o hns_roce_alloc.o hns_roce_db.o hns_roce_srq.o hns_roce_restrack.o
ifdef CONFIG_INFINIBAND_HNS_HIP08
-hns-roce-hw-v2-objs := hns_roce_hw_v2.o hns_roce_hw_v2_dfx.o $(hns-roce-objs)
+hns-roce-hw-v2-objs := hns_roce_hw_v2.o $(hns-roce-objs)
obj-$(CONFIG_INFINIBAND_HNS) += hns-roce-hw-v2.o
endif
diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h
index 2d29221055be..848f0e0e76a4 100644
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
@@ -849,11 +849,6 @@ struct hns_roce_caps {
enum cong_type cong_type;
};
-struct hns_roce_dfx_hw {
- int (*query_cqc_info)(struct hns_roce_dev *hr_dev, u32 cqn,
- int *buffer);
-};
-
enum hns_roce_device_state {
HNS_ROCE_DEVICE_STATE_INITED,
HNS_ROCE_DEVICE_STATE_RST_DOWN,
@@ -899,6 +894,7 @@ struct hns_roce_hw {
int (*init_eq)(struct hns_roce_dev *hr_dev);
void (*cleanup_eq)(struct hns_roce_dev *hr_dev);
int (*write_srqc)(struct hns_roce_srq *srq, void *mb_buf);
+ int (*query_cqc)(struct hns_roce_dev *hr_dev, u32 cqn, void *buffer);
const struct ib_device_ops *hns_roce_dev_ops;
const struct ib_device_ops *hns_roce_dev_srq_ops;
};
@@ -960,7 +956,6 @@ struct hns_roce_dev {
void *priv;
struct workqueue_struct *irq_workq;
struct work_struct ecc_work;
- const struct hns_roce_dfx_hw *dfx;
u32 func_num;
u32 is_vf;
u32 cong_algo_tmpl_id;
@@ -1223,8 +1218,7 @@ u8 hns_get_gid_index(struct hns_roce_dev *hr_dev, u8 port, int gid_index);
void hns_roce_handle_device_err(struct hns_roce_dev *hr_dev);
int hns_roce_init(struct hns_roce_dev *hr_dev);
void hns_roce_exit(struct hns_roce_dev *hr_dev);
-int hns_roce_fill_res_cq_entry(struct sk_buff *msg,
- struct ib_cq *ib_cq);
+int hns_roce_fill_res_cq_entry(struct sk_buff *msg, struct ib_cq *ib_cq);
struct hns_user_mmap_entry *
hns_roce_user_mmap_entry_insert(struct ib_ucontext *ucontext, u64 address,
size_t length,
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
index de7873551ffc..6b772536ab3c 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -5801,6 +5801,35 @@ static int hns_roce_v2_modify_cq(struct ib_cq *cq, u16 cq_count, u16 cq_period)
return ret;
}
+static int hns_roce_v2_query_cqc(struct hns_roce_dev *hr_dev, u32 cqn,
+ void *buffer)
+{
+ struct hns_roce_v2_cq_context *context;
+ struct hns_roce_cmd_mailbox *mailbox;
+ int ret;
+
+ mailbox = hns_roce_alloc_cmd_mailbox(hr_dev);
+ if (IS_ERR(mailbox))
+ return PTR_ERR(mailbox);
+
+ context = mailbox->buf;
+ ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma,
+ HNS_ROCE_CMD_QUERY_CQC, cqn);
+ if (ret) {
+ ibdev_err(&hr_dev->ib_dev,
+ "failed to process cmd when querying CQ, ret = %d.\n",
+ ret);
+ goto err_mailbox;
+ }
+
+ memcpy(buffer, context, sizeof(*context));
+
+err_mailbox:
+ hns_roce_free_cmd_mailbox(hr_dev, mailbox);
+
+ return ret;
+}
+
static void hns_roce_irq_work_handle(struct work_struct *work)
{
struct hns_roce_work *irq_work =
@@ -6593,10 +6622,6 @@ static void hns_roce_v2_cleanup_eq_table(struct hns_roce_dev *hr_dev)
kfree(eq_table->eq);
}
-static const struct hns_roce_dfx_hw hns_roce_dfx_hw_v2 = {
- .query_cqc_info = hns_roce_v2_query_cqc_info,
-};
-
static const struct ib_device_ops hns_roce_v2_dev_ops = {
.destroy_qp = hns_roce_v2_destroy_qp,
.modify_cq = hns_roce_v2_modify_cq,
@@ -6637,6 +6662,7 @@ static const struct hns_roce_hw hns_roce_hw_v2 = {
.init_eq = hns_roce_v2_init_eq_table,
.cleanup_eq = hns_roce_v2_cleanup_eq_table,
.write_srqc = hns_roce_v2_write_srqc,
+ .query_cqc = hns_roce_v2_query_cqc,
.hns_roce_dev_ops = &hns_roce_v2_dev_ops,
.hns_roce_dev_srq_ops = &hns_roce_v2_dev_srq_ops,
};
@@ -6668,7 +6694,6 @@ static void hns_roce_hw_v2_get_cfg(struct hns_roce_dev *hr_dev,
hr_dev->is_vf = id->driver_data;
hr_dev->dev = &handle->pdev->dev;
hr_dev->hw = &hns_roce_hw_v2;
- hr_dev->dfx = &hns_roce_dfx_hw_v2;
hr_dev->sdb_offset = ROCEE_DB_SQ_L_0_REG;
hr_dev->odb_offset = hr_dev->sdb_offset;
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
index 8aa56c24e677..6bf878fe661e 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
@@ -1455,9 +1455,6 @@ struct hns_roce_sccc_clr_done {
__le32 rsv[5];
};
-int hns_roce_v2_query_cqc_info(struct hns_roce_dev *hr_dev, u32 cqn,
- int *buffer);
-
int hns_roce_v2_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata);
int hns_roce_v2_destroy_qp_common(struct hns_roce_dev *hr_dev,
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 11f42cebfa40..9d4dbc3205c6 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -514,7 +514,6 @@ static const struct ib_device_ops hns_roce_dev_ops = {
.destroy_ah = hns_roce_destroy_ah,
.destroy_cq = hns_roce_destroy_cq,
.disassociate_ucontext = hns_roce_disassociate_ucontext,
- .fill_res_cq_entry = hns_roce_fill_res_cq_entry,
.get_dma_mr = hns_roce_get_dma_mr,
.get_link_layer = hns_roce_get_link_layer,
.get_port_immutable = hns_roce_port_immutable,
@@ -564,6 +563,10 @@ static const struct ib_device_ops hns_roce_dev_xrcd_ops = {
INIT_RDMA_OBJ_SIZE(ib_xrcd, hns_roce_xrcd, ibxrcd),
};
+static const struct ib_device_ops hns_roce_dev_restrack_ops = {
+ .fill_res_cq_entry = hns_roce_fill_res_cq_entry,
+};
+
static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
{
int ret;
@@ -642,6 +645,7 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
ib_set_device_ops(ib_dev, hr_dev->hw->hns_roce_dev_ops);
ib_set_device_ops(ib_dev, &hns_roce_dev_ops);
+ ib_set_device_ops(ib_dev, &hns_roce_dev_restrack_ops);
for (i = 0; i < hr_dev->caps.num_ports; i++) {
if (!hr_dev->iboe.netdevs[i])
continue;
diff --git a/drivers/infiniband/hw/hns/hns_roce_restrack.c b/drivers/infiniband/hw/hns/hns_roce_restrack.c
index 24a154d64630..83417be15d3f 100644
--- a/drivers/infiniband/hw/hns/hns_roce_restrack.c
+++ b/drivers/infiniband/hw/hns/hns_roce_restrack.c
@@ -55,45 +55,34 @@ static int hns_roce_fill_cq(struct sk_buff *msg,
return -EMSGSIZE;
}
-int hns_roce_fill_res_cq_entry(struct sk_buff *msg,
- struct ib_cq *ib_cq)
+int hns_roce_fill_res_cq_entry(struct sk_buff *msg, struct ib_cq *ib_cq)
{
struct hns_roce_dev *hr_dev = to_hr_dev(ib_cq->device);
struct hns_roce_cq *hr_cq = to_hr_cq(ib_cq);
- struct hns_roce_v2_cq_context *context;
+ struct hns_roce_v2_cq_context context;
struct nlattr *table_attr;
int ret;
- if (!hr_dev->dfx->query_cqc_info)
+ if (!hr_dev->hw->query_cqc)
return -EINVAL;
- context = kzalloc(sizeof(struct hns_roce_v2_cq_context), GFP_KERNEL);
- if (!context)
- return -ENOMEM;
-
- ret = hr_dev->dfx->query_cqc_info(hr_dev, hr_cq->cqn, (int *)context);
+ ret = hr_dev->hw->query_cqc(hr_dev, hr_cq->cqn, &context);
if (ret)
- goto err;
+ return -EINVAL;
table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_DRIVER);
- if (!table_attr) {
- ret = -EMSGSIZE;
- goto err;
- }
+ if (!table_attr)
+ return -EMSGSIZE;
- if (hns_roce_fill_cq(msg, context)) {
- ret = -EMSGSIZE;
- goto err_cancel_table;
- }
+ if (hns_roce_fill_cq(msg, &context))
+ goto err;
nla_nest_end(msg, table_attr);
- kfree(context);
return 0;
-err_cancel_table:
- nla_nest_cancel(msg, table_attr);
err:
- kfree(context);
- return ret;
+ nla_nest_cancel(msg, table_attr);
+
+ return -EMSGSIZE;
}
--
2.20.1
1
15

[PATCH openEuler-5.10 01/30] RDMA/hns: Remove redundant DFX file and DFX ops structure
by Zheng Zengkai 11 Oct '22
by Zheng Zengkai 11 Oct '22
11 Oct '22
From: Wenpeng Liang <liangwenpeng(a)huawei.com>
mainline inclusion
from mainline-for-next
commit 40b4b79c866f
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5TAQ5
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git/commit/?id=40…
----------------------------------------------------------------------
There is no need to use a dedicated DXF file and DFX structure to manage
the interface of the query queue context.
Link: https://lore.kernel.org/r/20220822104455.2311053-2-liangwenpeng@huawei.com
Signed-off-by: Wenpeng Liang <liangwenpeng(a)huawei.com>
Signed-off-by: Leon Romanovsky <leon(a)kernel.org>
Signed-off-by: Zhengfeng Luo <luozhengfeng(a)h-partners.com>
Reviewed-by: Yangyang Li <liyangyang20(a)huawei.com>
Reviewed-by: YueHaibing <yuehaibing(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/infiniband/hw/hns/Makefile | 2 +-
drivers/infiniband/hw/hns/hns_roce_device.h | 10 ++----
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 35 ++++++++++++++++---
drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 3 --
drivers/infiniband/hw/hns/hns_roce_main.c | 6 +++-
drivers/infiniband/hw/hns/hns_roce_restrack.c | 35 +++++++------------
6 files changed, 50 insertions(+), 41 deletions(-)
diff --git a/drivers/infiniband/hw/hns/Makefile b/drivers/infiniband/hw/hns/Makefile
index 9f04f25d9631..a7d259238305 100644
--- a/drivers/infiniband/hw/hns/Makefile
+++ b/drivers/infiniband/hw/hns/Makefile
@@ -10,6 +10,6 @@ hns-roce-objs := hns_roce_main.o hns_roce_cmd.o hns_roce_pd.o \
hns_roce_cq.o hns_roce_alloc.o hns_roce_db.o hns_roce_srq.o hns_roce_restrack.o
ifdef CONFIG_INFINIBAND_HNS_HIP08
-hns-roce-hw-v2-objs := hns_roce_hw_v2.o hns_roce_hw_v2_dfx.o $(hns-roce-objs)
+hns-roce-hw-v2-objs := hns_roce_hw_v2.o $(hns-roce-objs)
obj-$(CONFIG_INFINIBAND_HNS) += hns-roce-hw-v2.o
endif
diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h
index 2d29221055be..848f0e0e76a4 100644
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
@@ -849,11 +849,6 @@ struct hns_roce_caps {
enum cong_type cong_type;
};
-struct hns_roce_dfx_hw {
- int (*query_cqc_info)(struct hns_roce_dev *hr_dev, u32 cqn,
- int *buffer);
-};
-
enum hns_roce_device_state {
HNS_ROCE_DEVICE_STATE_INITED,
HNS_ROCE_DEVICE_STATE_RST_DOWN,
@@ -899,6 +894,7 @@ struct hns_roce_hw {
int (*init_eq)(struct hns_roce_dev *hr_dev);
void (*cleanup_eq)(struct hns_roce_dev *hr_dev);
int (*write_srqc)(struct hns_roce_srq *srq, void *mb_buf);
+ int (*query_cqc)(struct hns_roce_dev *hr_dev, u32 cqn, void *buffer);
const struct ib_device_ops *hns_roce_dev_ops;
const struct ib_device_ops *hns_roce_dev_srq_ops;
};
@@ -960,7 +956,6 @@ struct hns_roce_dev {
void *priv;
struct workqueue_struct *irq_workq;
struct work_struct ecc_work;
- const struct hns_roce_dfx_hw *dfx;
u32 func_num;
u32 is_vf;
u32 cong_algo_tmpl_id;
@@ -1223,8 +1218,7 @@ u8 hns_get_gid_index(struct hns_roce_dev *hr_dev, u8 port, int gid_index);
void hns_roce_handle_device_err(struct hns_roce_dev *hr_dev);
int hns_roce_init(struct hns_roce_dev *hr_dev);
void hns_roce_exit(struct hns_roce_dev *hr_dev);
-int hns_roce_fill_res_cq_entry(struct sk_buff *msg,
- struct ib_cq *ib_cq);
+int hns_roce_fill_res_cq_entry(struct sk_buff *msg, struct ib_cq *ib_cq);
struct hns_user_mmap_entry *
hns_roce_user_mmap_entry_insert(struct ib_ucontext *ucontext, u64 address,
size_t length,
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
index de7873551ffc..6b772536ab3c 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -5801,6 +5801,35 @@ static int hns_roce_v2_modify_cq(struct ib_cq *cq, u16 cq_count, u16 cq_period)
return ret;
}
+static int hns_roce_v2_query_cqc(struct hns_roce_dev *hr_dev, u32 cqn,
+ void *buffer)
+{
+ struct hns_roce_v2_cq_context *context;
+ struct hns_roce_cmd_mailbox *mailbox;
+ int ret;
+
+ mailbox = hns_roce_alloc_cmd_mailbox(hr_dev);
+ if (IS_ERR(mailbox))
+ return PTR_ERR(mailbox);
+
+ context = mailbox->buf;
+ ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma,
+ HNS_ROCE_CMD_QUERY_CQC, cqn);
+ if (ret) {
+ ibdev_err(&hr_dev->ib_dev,
+ "failed to process cmd when querying CQ, ret = %d.\n",
+ ret);
+ goto err_mailbox;
+ }
+
+ memcpy(buffer, context, sizeof(*context));
+
+err_mailbox:
+ hns_roce_free_cmd_mailbox(hr_dev, mailbox);
+
+ return ret;
+}
+
static void hns_roce_irq_work_handle(struct work_struct *work)
{
struct hns_roce_work *irq_work =
@@ -6593,10 +6622,6 @@ static void hns_roce_v2_cleanup_eq_table(struct hns_roce_dev *hr_dev)
kfree(eq_table->eq);
}
-static const struct hns_roce_dfx_hw hns_roce_dfx_hw_v2 = {
- .query_cqc_info = hns_roce_v2_query_cqc_info,
-};
-
static const struct ib_device_ops hns_roce_v2_dev_ops = {
.destroy_qp = hns_roce_v2_destroy_qp,
.modify_cq = hns_roce_v2_modify_cq,
@@ -6637,6 +6662,7 @@ static const struct hns_roce_hw hns_roce_hw_v2 = {
.init_eq = hns_roce_v2_init_eq_table,
.cleanup_eq = hns_roce_v2_cleanup_eq_table,
.write_srqc = hns_roce_v2_write_srqc,
+ .query_cqc = hns_roce_v2_query_cqc,
.hns_roce_dev_ops = &hns_roce_v2_dev_ops,
.hns_roce_dev_srq_ops = &hns_roce_v2_dev_srq_ops,
};
@@ -6668,7 +6694,6 @@ static void hns_roce_hw_v2_get_cfg(struct hns_roce_dev *hr_dev,
hr_dev->is_vf = id->driver_data;
hr_dev->dev = &handle->pdev->dev;
hr_dev->hw = &hns_roce_hw_v2;
- hr_dev->dfx = &hns_roce_dfx_hw_v2;
hr_dev->sdb_offset = ROCEE_DB_SQ_L_0_REG;
hr_dev->odb_offset = hr_dev->sdb_offset;
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
index 8aa56c24e677..6bf878fe661e 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
@@ -1455,9 +1455,6 @@ struct hns_roce_sccc_clr_done {
__le32 rsv[5];
};
-int hns_roce_v2_query_cqc_info(struct hns_roce_dev *hr_dev, u32 cqn,
- int *buffer);
-
int hns_roce_v2_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata);
int hns_roce_v2_destroy_qp_common(struct hns_roce_dev *hr_dev,
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 11f42cebfa40..9d4dbc3205c6 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -514,7 +514,6 @@ static const struct ib_device_ops hns_roce_dev_ops = {
.destroy_ah = hns_roce_destroy_ah,
.destroy_cq = hns_roce_destroy_cq,
.disassociate_ucontext = hns_roce_disassociate_ucontext,
- .fill_res_cq_entry = hns_roce_fill_res_cq_entry,
.get_dma_mr = hns_roce_get_dma_mr,
.get_link_layer = hns_roce_get_link_layer,
.get_port_immutable = hns_roce_port_immutable,
@@ -564,6 +563,10 @@ static const struct ib_device_ops hns_roce_dev_xrcd_ops = {
INIT_RDMA_OBJ_SIZE(ib_xrcd, hns_roce_xrcd, ibxrcd),
};
+static const struct ib_device_ops hns_roce_dev_restrack_ops = {
+ .fill_res_cq_entry = hns_roce_fill_res_cq_entry,
+};
+
static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
{
int ret;
@@ -642,6 +645,7 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
ib_set_device_ops(ib_dev, hr_dev->hw->hns_roce_dev_ops);
ib_set_device_ops(ib_dev, &hns_roce_dev_ops);
+ ib_set_device_ops(ib_dev, &hns_roce_dev_restrack_ops);
for (i = 0; i < hr_dev->caps.num_ports; i++) {
if (!hr_dev->iboe.netdevs[i])
continue;
diff --git a/drivers/infiniband/hw/hns/hns_roce_restrack.c b/drivers/infiniband/hw/hns/hns_roce_restrack.c
index 24a154d64630..83417be15d3f 100644
--- a/drivers/infiniband/hw/hns/hns_roce_restrack.c
+++ b/drivers/infiniband/hw/hns/hns_roce_restrack.c
@@ -55,45 +55,34 @@ static int hns_roce_fill_cq(struct sk_buff *msg,
return -EMSGSIZE;
}
-int hns_roce_fill_res_cq_entry(struct sk_buff *msg,
- struct ib_cq *ib_cq)
+int hns_roce_fill_res_cq_entry(struct sk_buff *msg, struct ib_cq *ib_cq)
{
struct hns_roce_dev *hr_dev = to_hr_dev(ib_cq->device);
struct hns_roce_cq *hr_cq = to_hr_cq(ib_cq);
- struct hns_roce_v2_cq_context *context;
+ struct hns_roce_v2_cq_context context;
struct nlattr *table_attr;
int ret;
- if (!hr_dev->dfx->query_cqc_info)
+ if (!hr_dev->hw->query_cqc)
return -EINVAL;
- context = kzalloc(sizeof(struct hns_roce_v2_cq_context), GFP_KERNEL);
- if (!context)
- return -ENOMEM;
-
- ret = hr_dev->dfx->query_cqc_info(hr_dev, hr_cq->cqn, (int *)context);
+ ret = hr_dev->hw->query_cqc(hr_dev, hr_cq->cqn, &context);
if (ret)
- goto err;
+ return -EINVAL;
table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_DRIVER);
- if (!table_attr) {
- ret = -EMSGSIZE;
- goto err;
- }
+ if (!table_attr)
+ return -EMSGSIZE;
- if (hns_roce_fill_cq(msg, context)) {
- ret = -EMSGSIZE;
- goto err_cancel_table;
- }
+ if (hns_roce_fill_cq(msg, &context))
+ goto err;
nla_nest_end(msg, table_attr);
- kfree(context);
return 0;
-err_cancel_table:
- nla_nest_cancel(msg, table_attr);
err:
- kfree(context);
- return ret;
+ nla_nest_cancel(msg, table_attr);
+
+ return -EMSGSIZE;
}
--
2.20.1
1
29

[PATCH openEuler-1.0-LTS 1/7] Revert "quota: Add more checking after reading from quota file"
by Yongqiang Liu 11 Oct '22
by Yongqiang Liu 11 Oct '22
11 Oct '22
From: Zhong Jinghua <zhongjinghua(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187046, https://gitee.com/openeuler/kernel/issues/I5QH0X
CVE: NA
--------------------------------
This reverts commit f66997d9c183c751a27b2b022dff35bded71571a.
The mainline of this patch already exists, revert the interim patch.
Signed-off-by: Zhong Jinghua <zhongjinghua(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/quota/quota_tree.c | 43 ++++++++++---------------------------------
1 file changed, 10 insertions(+), 33 deletions(-)
diff --git a/fs/quota/quota_tree.c b/fs/quota/quota_tree.c
index 3c600ed3781a..5389cabc6f20 100644
--- a/fs/quota/quota_tree.c
+++ b/fs/quota/quota_tree.c
@@ -79,12 +79,12 @@ static ssize_t write_blk(struct qtree_mem_dqinfo *info, uint blk, char *buf)
return ret;
}
-static inline int do_check_range(struct super_block *sb, const char *val_name,
- uint val, uint min_val, uint max_val)
+static inline int do_check_range(struct super_block *sb, uint val,
+ uint min_val, uint max_val)
{
if (val < min_val || val >= max_val) {
- quota_error(sb, "Getting %s %u out of range %u-%u",
- val_name, val, min_val, max_val);
+ quota_error(sb, "Getting block %u out of range %u-%u",
+ val, min_val, max_val);
return -EUCLEAN;
}
@@ -98,13 +98,11 @@ static int check_free_block(struct qtree_mem_dqinfo *info,
uint nextblk, prevblk;
nextblk = le32_to_cpu(dh->dqdh_next_free);
- err = do_check_range(info->dqi_sb, "dqdh_next_free", nextblk, 0,
- info->dqi_blocks);
+ err = do_check_range(info->dqi_sb, nextblk, 0, info->dqi_blocks);
if (err)
return err;
prevblk = le32_to_cpu(dh->dqdh_prev_free);
- err = do_check_range(info->dqi_sb, "dqdh_prev_free", prevblk, 0,
- info->dqi_blocks);
+ err = do_check_range(info->dqi_sb, prevblk, 0, info->dqi_blocks);
if (err)
return err;
@@ -278,11 +276,6 @@ static uint find_free_dqentry(struct qtree_mem_dqinfo *info,
*err = check_free_block(info, dh);
if (*err)
goto out_buf;
- *err = do_check_range(info->dqi_sb, "dqdh_entries",
- le16_to_cpu(dh->dqdh_entries), 0,
- qtree_dqstr_in_blk(info));
- if (*err)
- goto out_buf;
} else {
blk = get_free_dqblk(info);
if ((int)blk < 0) {
@@ -364,10 +357,6 @@ static int do_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot,
}
ref = (__le32 *)buf;
newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
- ret = do_check_range(dquot->dq_sb, "block", newblk, 0,
- info->dqi_blocks);
- if (ret)
- goto out_buf;
if (!newblk)
newson = 1;
if (depth == info->dqi_qtree_depth - 1) {
@@ -480,11 +469,6 @@ static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot,
}
dh = (struct qt_disk_dqdbheader *)buf;
ret = check_free_block(info, dh);
- if (ret)
- goto out_buf;
- ret = do_check_range(info->dqi_sb, "dqdh_entries",
- le16_to_cpu(dh->dqdh_entries), 1,
- qtree_dqstr_in_blk(info) + 1);
if (ret)
goto out_buf;
le16_add_cpu(&dh->dqdh_entries, -1);
@@ -543,7 +527,7 @@ static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot,
goto out_buf;
}
newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
- ret = do_check_range(dquot->dq_sb, "block", newblk, QT_TREEOFF,
+ ret = do_check_range(dquot->dq_sb, newblk, QT_TREEOFF,
info->dqi_blocks);
if (ret)
goto out_buf;
@@ -647,8 +631,7 @@ static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info,
blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
if (!blk) /* No reference? */
goto out_buf;
- ret = do_check_range(dquot->dq_sb, "block", blk, QT_TREEOFF,
- info->dqi_blocks);
+ ret = do_check_range(dquot->dq_sb, blk, QT_TREEOFF, info->dqi_blocks);
if (ret)
goto out_buf;
@@ -764,13 +747,7 @@ static int find_next_id(struct qtree_mem_dqinfo *info, qid_t *id,
goto out_buf;
}
for (i = __get_index(info, *id, depth); i < epb; i++) {
- uint blk_no = le32_to_cpu(ref[i]);
-
- ret = do_check_range(info->dqi_sb, "block", blk_no, 0,
- info->dqi_blocks);
- if (ret)
- goto out_buf;
- if (blk_no == 0) {
+ if (ref[i] == cpu_to_le32(0)) {
*id += level_inc;
continue;
}
@@ -778,7 +755,7 @@ static int find_next_id(struct qtree_mem_dqinfo *info, qid_t *id,
ret = 0;
goto out_buf;
}
- ret = find_next_id(info, id, blk_no, depth + 1);
+ ret = find_next_id(info, id, le32_to_cpu(ref[i]), depth + 1);
if (ret != -ENOENT)
break;
}
--
2.25.1
1
6
Brian Norris (1):
tracefs: Only clobber mode/uid/gid on remount if asked
David Hildenbrand (1):
mm/hugetlb: fix hugetlb not supporting softdirty tracking
Denis V. Lunev (1):
neigh: fix possible DoS due to net iface start/stop loop
Eric Dumazet (1):
tcp: annotate data-race around challenge_timestamp
Florian Westphal (2):
netfilter: ebtables: reject blobs that don't provide all entry points
netfilter: ebtables: fix memory leak when blob is malformed
Gaosheng Cui (1):
audit: fix potential double free on error path from
fsnotify_add_inode_mark
Greg Kroah-Hartman (1):
debugfs: add debugfs_lookup_and_remove()
Harsh Modi (1):
netfilter: br_netfilter: Drop dst references before setting.
Jann Horn (1):
mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region()
Jonathan Toppins (1):
bonding: 802.3ad: fix no transmission of LACPDUs
Kuniyuki Iwashima (9):
net: Fix data-races around weight_p and dev_weight_[rt]x_bias.
net: Fix data-races around netdev_tstamp_prequeue.
ratelimit: Fix data-races in ___ratelimit().
net: Fix a data-race around sysctl_tstamp_allow_data.
net: Fix a data-race around sysctl_net_busy_poll.
net: Fix a data-race around sysctl_net_busy_read.
net: Fix a data-race around netdev_budget.
net: Fix a data-race around netdev_budget_usecs.
net: Fix a data-race around sysctl_somaxconn.
Maciej Żenczykowski (1):
net: ipvtap - add __init/__exit annotations to module init/exit funcs
Mike Snitzer (1):
dm: return early from dm_pr_call() if DM device is suspended
Neal Cardwell (1):
tcp: fix early ETIMEDOUT after spurious non-SACK RTO
NeilBrown (1):
SUNRPC: use _bh spinlocking on ->transport_lock
Quanyang Wang (1):
asm-generic: sections: refactor memory_intersects
Siddh Raman Pant (1):
loop: Check for overflow while configuring loop
Trond Myklebust (1):
NFSv4: Fix races in the legacy idmapper upcall
Xin Xiong (1):
xfrm: fix refcount leak in __xfrm_policy_check()
Yang Yingliang (1):
net: neigh: don't call kfree_skb() under spin_lock_irqsave()
Yee Lee (1):
Revert "mm: kmemleak: take a full lowmem check in kmemleak_*_phys()"
drivers/block/loop.c | 5 +++
drivers/md/dm.c | 5 +++
drivers/net/bonding/bond_3ad.c | 38 ++++++++-----------
drivers/net/ipvlan/ipvtap.c | 4 +-
fs/debugfs/inode.c | 22 +++++++++++
fs/nfs/nfs4idmap.c | 46 ++++++++++++-----------
fs/tracefs/inode.c | 29 ++++++++++----
include/asm-generic/sections.h | 7 +++-
include/linux/debugfs.h | 6 +++
include/linux/netfilter_bridge/ebtables.h | 4 --
include/net/busy_poll.h | 2 +-
kernel/audit_fsnotify.c | 1 +
lib/ratelimit.c | 12 ++++--
mm/kmemleak.c | 8 ++--
mm/mmap.c | 17 +++++++--
net/bridge/br_netfilter_hooks.c | 2 +
net/bridge/br_netfilter_ipv6.c | 1 +
net/bridge/netfilter/ebtable_broute.c | 8 ----
net/bridge/netfilter/ebtable_filter.c | 8 ----
net/bridge/netfilter/ebtable_nat.c | 8 ----
net/bridge/netfilter/ebtables.c | 10 ++---
net/core/dev.c | 14 +++----
net/core/neighbour.c | 27 ++++++++++---
net/core/skbuff.c | 2 +-
net/core/sock.c | 2 +-
net/core/sysctl_net_core.c | 15 +++++---
net/ipv4/tcp_input.c | 29 +++++++++-----
net/sched/sch_generic.c | 2 +-
net/socket.c | 2 +-
net/sunrpc/xprt.c | 4 +-
net/xfrm/xfrm_policy.c | 1 +
31 files changed, 205 insertions(+), 136 deletions(-)
--
2.25.1
1
30

[PATCH openEuler-1.0-LTS] bonding: fix reference count leak in balance-alb mode
by Sun Shouxin 11 Oct '22
by Sun Shouxin 11 Oct '22
11 Oct '22
mainline inclusion
from mainline-v6.0
commit 4f5d33f4f798b1c6d92b613f0087f639d9836971
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5UYT6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/d…
------------------------------------------------------------------------
Commit d5410ac7b0ba ("net:bonding:support balance-alb interface
with vlan to bridge") introduced a reference count leak by not releasing
the reference acquired by ip_dev_find(). Remedy this by insuring the
reference is released.
Fixes: d5410ac7b0ba ("net:bonding:support balance-alb interface with vlan to bridge")
Signed-off-by: Jay Vosburgh <jay.vosburgh(a)canonical.com>
Reviewed-by: Nikolay Aleksandrov <razor(a)blackwall.org>
Link: https://lore.kernel.org/r/26758.1660194413@famine
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn> # openEuler_contributor
Signed-off-by: Ctyun Kernel <ctyuncommiter01(a)chinatelecom.cn> # openEuler_contributor
---
drivers/net/bonding/bond_alb.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index f493bcf..87ad03c 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -680,8 +680,11 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
dev = ip_dev_find(dev_net(bond->dev), arp->ip_src);
if (dev) {
- if (netif_is_bridge_master(dev))
+ if (netif_is_bridge_master(dev)) {
+ dev_put(dev);
return NULL;
+ }
+ dev_put(dev);
}
if (arp->op_code == htons(ARPOP_REPLY)) {
--
1.8.3.1
1
0

[PATCH openEuler-1.0-LTS] net:bonding:support balance-alb interface with vlan to bridge
by Sun Shouxin 11 Oct '22
by Sun Shouxin 11 Oct '22
11 Oct '22
mainline inclusion
from mainline-v6.0
commit d5410ac7b0baeca91cf73ff5241d35998ecc8c9e
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5UYT6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/d…
-----------------------------------------------------------------
In my test, balance-alb bonding with two slaves eth0 and eth1,
and then Bond0.150 is created with vlan id attached bond0.
After adding bond0.150 into one linux bridge, I noted that Bond0,
bond0.150 and bridge were assigned to the same MAC as eth0.
Once bond0.150 receives a packet whose dest IP is bridge's
and dest MAC is eth1's, the linux bridge will not match
eth1's MAC entry in FDB, and not handle it as expected.
The patch fix the issue, and diagram as below:
eth1(mac:eth1_mac)--bond0(balance-alb,mac:eth0_mac)--eth0(mac:eth0_mac)
|
bond0.150(mac:eth0_mac)
|
bridge(ip:br_ip, mac:eth0_mac)--other port
Suggested-by: Hu Yadi <huyd12(a)chinatelecom.cn>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn> # openEuler_contributor
Signed-off-by: Ctyun Kernel <ctyuncommiter01(a)chinatelecom.cn> # openEuler_contributor
---
drivers/net/bonding/bond_alb.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 856efe8..f493bcf 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -665,6 +665,7 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb,
static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
{
struct slave *tx_slave = NULL;
+ struct net_device *dev;
struct arp_pkt *arp;
if (!pskb_network_may_pull(skb, sizeof(*arp)))
@@ -677,6 +678,12 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
if (!bond_slave_has_mac_rx(bond, arp->mac_src))
return NULL;
+ dev = ip_dev_find(dev_net(bond->dev), arp->ip_src);
+ if (dev) {
+ if (netif_is_bridge_master(dev))
+ return NULL;
+ }
+
if (arp->op_code == htons(ARPOP_REPLY)) {
/* the arp must be sent on the selected rx channel */
tx_slave = rlb_choose_channel(skb, bond, arp);
--
1.8.3.1
1
0

[PATCH openEuler-1.0-LTS] net: bonding: Add support for IPV6 ns/na to balance-alb/balance-tlb mode
by Sun Shouxin 11 Oct '22
by Sun Shouxin 11 Oct '22
11 Oct '22
mainline inclusion
from mainline-v6.0
commit 0da8aa00bfcfeb3f4e6537dd8e2001e0727ba549
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5UY5E
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/dri…
------------------------------------------------------------
Since ipv6 neighbor solicitation and advertisement messages
isn't handled gracefully in bond6 driver, we can see packet
drop due to inconsistency between mac address in the option
message and source MAC .
Another examples is ipv6 neighbor solicitation and advertisement
messages from VM via tap attached to host bridge, the src mac
might be changed through balance-alb mode, but it is not synced
with Link-layer address in the option message.
The patch implements bond6's tx handle for ipv6 neighbor
solicitation and advertisement messages.
Suggested-by: Hu Yadi <huyd12(a)chinatelecom.cn>
Acked-by: Jay Vosburgh <jay.vosburgh(a)canonical.com>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn> # openEuler_contributor
Signed-off-by: Ctyun Kernel <ctyuncommiter01(a)chinatelecom.cn> # openEuler_contributor
---
drivers/net/bonding/bond_alb.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index a6a89a0..856efe8 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -1281,6 +1281,27 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
return res;
}
+/* determine if the packet is NA or NS */
+static bool alb_determine_nd(struct sk_buff *skb, struct bonding *bond)
+{
+ struct ipv6hdr *ip6hdr;
+ struct icmp6hdr *hdr;
+
+ if (!pskb_network_may_pull(skb, sizeof(*ip6hdr)))
+ return true;
+
+ ip6hdr = ipv6_hdr(skb);
+ if (ip6hdr->nexthdr != IPPROTO_ICMPV6)
+ return false;
+
+ if (!pskb_network_may_pull(skb, sizeof(*ip6hdr) + sizeof(*hdr)))
+ return true;
+
+ hdr = icmp6_hdr(skb);
+ return hdr->icmp6_type == NDISC_NEIGHBOUR_ADVERTISEMENT ||
+ hdr->icmp6_type == NDISC_NEIGHBOUR_SOLICITATION;
+}
+
/************************ exported alb funcions ************************/
int bond_alb_initialize(struct bonding *bond, int rlb_enabled)
@@ -1363,10 +1384,12 @@ netdev_tx_t bond_tlb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
/* Do not TX balance any multicast or broadcast */
if (!is_multicast_ether_addr(eth_data->h_dest)) {
switch (skb->protocol) {
+ case htons(ETH_P_IPV6):
+ if (alb_determine_nd(skb, bond))
+ break;
case htons(ETH_P_IP):
case htons(ETH_P_IPX):
/* In case of IPX, it will falback to L2 hash */
- case htons(ETH_P_IPV6):
hash_index = bond_xmit_hash(bond, skb);
if (bond->params.tlb_dynamic_lb) {
tx_slave = tlb_choose_channel(bond,
@@ -1440,10 +1463,12 @@ netdev_tx_t bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
break;
}
- if (!pskb_network_may_pull(skb, sizeof(*ip6hdr))) {
+ if (alb_determine_nd(skb, bond)) {
do_tx_balance = false;
break;
}
+
+ /* The IPv6 header is pulled by alb_determine_nd */
/* Additionally, DAD probes should not be tx-balanced as that
* will lead to false positives for duplicate addresses and
* prevent address configuration from working.
--
1.8.3.1
1
0

11 Oct '22
mainline inclusion
from mainline-v6.0
commit 4f5d33f4f798b1c6d92b613f0087f639d9836971
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5UYT6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/d…
------------------------------------------------------------------------------------
Commit d5410ac7b0ba ("net:bonding:support balance-alb interface
with vlan to bridge") introduced a reference count leak by not releasing
the reference acquired by ip_dev_find(). Remedy this by insuring the
reference is released.
Fixes: d5410ac7b0ba ("net:bonding:support balance-alb interface with vlan to bridge")
Signed-off-by: Jay Vosburgh <jay.vosburgh(a)canonical.com>
Reviewed-by: Nikolay Aleksandrov <razor(a)blackwall.org>
Link: https://lore.kernel.org/r/26758.1660194413@famine
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn> # openEuler_contributor
Signed-off-by: Ctyun Kernel <ctyuncommiter01(a)chinatelecom.cn> # openEuler_contributor
---
drivers/net/bonding/bond_alb.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index d9c03a9..9130b57 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -665,8 +665,11 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
dev = ip_dev_find(dev_net(bond->dev), arp->ip_src);
if (dev) {
- if (netif_is_bridge_master(dev))
+ if (netif_is_bridge_master(dev)) {
+ dev_put(dev);
return NULL;
+ }
+ dev_put(dev);
}
if (arp->op_code == htons(ARPOP_REPLY)) {
--
1.8.3.1
1
0

[PATCH OLK-5.10] net:bonding:support balance-alb interface with vlan to bridge
by Sun Shouxin 10 Oct '22
by Sun Shouxin 10 Oct '22
10 Oct '22
mainline inclusion
from mainline-v6.0
commit d5410ac7b0baeca91cf73ff5241d35998ecc8c9e
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5UYT6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/d…
---------------------------------------------------------------
In my test, balance-alb bonding with two slaves eth0 and eth1,
and then Bond0.150 is created with vlan id attached bond0.
After adding bond0.150 into one linux bridge, I noted that Bond0,
bond0.150 and bridge were assigned to the same MAC as eth0.
Once bond0.150 receives a packet whose dest IP is bridge's
and dest MAC is eth1's, the linux bridge will not match
eth1's MAC entry in FDB, and not handle it as expected.
The patch fix the issue, and diagram as below:
eth1(mac:eth1_mac)--bond0(balance-alb,mac:eth0_mac)--eth0(mac:eth0_mac)
|
bond0.150(mac:eth0_mac)
|
bridge(ip:br_ip, mac:eth0_mac)--other port
Suggested-by: Hu Yadi <huyd12(a)chinatelecom.cn>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn> # openEuler_contributor
Signed-off-by: Ctyun Kernel <ctyuncommiter01(a)chinatelecom.cn> # openEuler_contributor
---
drivers/net/bonding/bond_alb.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 8826380..d9c03a9 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -650,6 +650,7 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb,
static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
{
struct slave *tx_slave = NULL;
+ struct net_device *dev;
struct arp_pkt *arp;
if (!pskb_network_may_pull(skb, sizeof(*arp)))
@@ -662,6 +663,12 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
if (!bond_slave_has_mac_rx(bond, arp->mac_src))
return NULL;
+ dev = ip_dev_find(dev_net(bond->dev), arp->ip_src);
+ if (dev) {
+ if (netif_is_bridge_master(dev))
+ return NULL;
+ }
+
if (arp->op_code == htons(ARPOP_REPLY)) {
/* the arp must be sent on the selected rx channel */
tx_slave = rlb_choose_channel(skb, bond, arp);
--
1.8.3.1
1
0

[PATCH OLK-5.10] net: bonding: Add support for IPV6 ns/na to balance-alb/balance-tlb mode
by Sun Shouxin 10 Oct '22
by Sun Shouxin 10 Oct '22
10 Oct '22
mainline inclusion
from mainline-v6.0
commit 0da8aa00bfcfeb3f4e6537dd8e2001e0727ba549
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5UY5E
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/dri…
-----------------------------------------------------------
Since ipv6 neighbor solicitation and advertisement messages
isn't handled gracefully in bond6 driver, we can see packet
drop due to inconsistency between mac address in the option
message and source MAC .
Another examples is ipv6 neighbor solicitation and advertisement
messages from VM via tap attached to host bridge, the src mac
might be changed through balance-alb mode, but it is not synced
with Link-layer address in the option message.
The patch implements bond6's tx handle for ipv6 neighbor
solicitation and advertisement messages.
Suggested-by: Hu Yadi <huyd12(a)chinatelecom.cn>
Acked-by: Jay Vosburgh <jay.vosburgh(a)canonical.com>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sun Shouxin <sunshouxin(a)chinatelecom.cn> # openEuler_contributor
Signed-off-by: Ctyun Kernel <ctyuncommiter01(a)chinatelecom.cn> # openEuler_contributor
---
drivers/net/bonding/bond_alb.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 0436aef9c9ef..882638076355 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -1268,6 +1268,27 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
return res;
}
+/* determine if the packet is NA or NS */
+static bool alb_determine_nd(struct sk_buff *skb, struct bonding *bond)
+{
+ struct ipv6hdr *ip6hdr;
+ struct icmp6hdr *hdr;
+
+ if (!pskb_network_may_pull(skb, sizeof(*ip6hdr)))
+ return true;
+
+ ip6hdr = ipv6_hdr(skb);
+ if (ip6hdr->nexthdr != IPPROTO_ICMPV6)
+ return false;
+
+ if (!pskb_network_may_pull(skb, sizeof(*ip6hdr) + sizeof(*hdr)))
+ return true;
+
+ hdr = icmp6_hdr(skb);
+ return hdr->icmp6_type == NDISC_NEIGHBOUR_ADVERTISEMENT ||
+ hdr->icmp6_type == NDISC_NEIGHBOUR_SOLICITATION;
+}
+
/************************ exported alb funcions ************************/
int bond_alb_initialize(struct bonding *bond, int rlb_enabled)
@@ -1347,10 +1368,13 @@ struct slave *bond_xmit_tlb_slave_get(struct bonding *bond,
/* Do not TX balance any multicast or broadcast */
if (!is_multicast_ether_addr(eth_data->h_dest)) {
switch (skb->protocol) {
+ case htons(ETH_P_IPV6):
+ if (alb_determine_nd(skb, bond))
+ break;
+ fallthrough;
case htons(ETH_P_IP):
case htons(ETH_P_IPX):
/* In case of IPX, it will falback to L2 hash */
- case htons(ETH_P_IPV6):
hash_index = bond_xmit_hash(bond, skb);
if (bond->params.tlb_dynamic_lb) {
tx_slave = tlb_choose_channel(bond,
@@ -1433,10 +1457,12 @@ struct slave *bond_xmit_alb_slave_get(struct bonding *bond,
break;
}
- if (!pskb_network_may_pull(skb, sizeof(*ip6hdr))) {
+ if (alb_determine_nd(skb, bond)) {
do_tx_balance = false;
break;
}
+
+ /* The IPv6 header is pulled by alb_determine_nd */
/* Additionally, DAD probes should not be tx-balanced as that
* will lead to false positives for duplicate addresses and
* prevent address configuration from working.
--
2.27.0
1
0

[PATCH openEuler-1.0-LTS 1/3] ext4: check if directory block is within i_size
by Yongqiang Liu 10 Oct '22
by Yongqiang Liu 10 Oct '22
10 Oct '22
From: Lukas Czerner <lczerner(a)redhat.com>
mainline inclusion
from mainline-v6.0-rc1
commit 65f8ea4cd57dbd46ea13b41dc8bac03176b04233
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I58WSQ
CVE: CVE-2022-1184
--------------------------------
Currently ext4 directory handling code implicitly assumes that the
directory blocks are always within the i_size. In fact ext4_append()
will attempt to allocate next directory block based solely on i_size and
the i_size is then appropriately increased after a successful
allocation.
However, for this to work it requires i_size to be correct. If, for any
reason, the directory inode i_size is corrupted in a way that the
directory tree refers to a valid directory block past i_size, we could
end up corrupting parts of the directory tree structure by overwriting
already used directory blocks when modifying the directory.
Fix it by catching the corruption early in __ext4_read_dirblock().
Addresses Red-Hat-Bugzilla: #2070205
CVE: CVE-2022-1184
Signed-off-by: Lukas Czerner <lczerner(a)redhat.com>
Cc: stable(a)vger.kernel.org
Reviewed-by: Andreas Dilger <adilger(a)dilger.ca>
Link: https://lore.kernel.org/r/20220704142721.157985-1-lczerner@redhat.com
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Conflicts:
fs/ext4/namei.c
Signed-off-by: Baokun Li <libaokun1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/ext4/namei.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index b2d4fb82e8f4..1a9eda144c7a 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -124,6 +124,13 @@ static struct buffer_head *__ext4_read_dirblock(struct inode *inode,
struct ext4_dir_entry *dirent;
int is_dx_block = 0;
+ if (block >= inode->i_size) {
+ ext4_error_inode(inode, func, line, block,
+ "Attempting to read directory block (%u) that is past i_size (%llu)",
+ block, inode->i_size);
+ return ERR_PTR(-EFSCORRUPTED);
+ }
+
bh = ext4_bread(NULL, inode, block, 0);
if (IS_ERR(bh)) {
__ext4_warning(inode->i_sb, func, line,
--
2.25.1
1
2

[PATCH openEuler-1.0-LTS 01/10] md/raid10: prevent unnecessary calls to wake_up() in fast path
by Yongqiang Liu 09 Oct '22
by Yongqiang Liu 09 Oct '22
09 Oct '22
From: Yu Kuai <yukuai3(a)huawei.com>
mainline inclusion
from md-next
commit 7fdc91928ac109d3d1468ad7f951deb29a375e3d
category: performance
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PRMO
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/song/md.git/commit/?h=md-ne…
--------------------------------
Currently, wake_up() is called unconditionally in fast path such as
raid10_make_request(), which will cause lock contention under high
concurrency:
raid10_make_request
wake_up
__wake_up_common_lock
spin_lock_irqsave
Improve performance by only call wake_up() if waitqueue is not empty.
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Logan Gunthorpe <logang(a)deltatee.com>
Acked-by: Guoqing Jiang <guoqing.jiang(a)linux.dev>
Signed-off-by: Song Liu <song(a)kernel.org>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/raid10.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 5049c4d829e5..13e0b4a462fc 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -305,6 +305,12 @@ static void put_buf(struct r10bio *r10_bio)
lower_barrier(conf);
}
+static void wake_up_barrier(struct r10conf *conf)
+{
+ if (wq_has_sleeper(&conf->wait_barrier))
+ wake_up(&conf->wait_barrier);
+}
+
static void reschedule_retry(struct r10bio *r10_bio)
{
unsigned long flags;
@@ -1025,7 +1031,7 @@ static void allow_barrier(struct r10conf *conf)
{
if ((atomic_dec_and_test(&conf->nr_pending)) ||
(conf->array_freeze_pending))
- wake_up(&conf->wait_barrier);
+ wake_up_barrier(conf);
}
static void freeze_array(struct r10conf *conf, int extra)
@@ -1584,7 +1590,7 @@ static bool raid10_make_request(struct mddev *mddev, struct bio *bio)
__make_request(mddev, bio, sectors);
/* In case raid10d snuck in to freeze_array */
- wake_up(&conf->wait_barrier);
+ wake_up_barrier(conf);
return true;
}
--
2.25.1
1
9
您好:
在实际生产环境中不断出现overlayfs没有真正卸掉的出现了诸如quota统计数据持续增长等问题。
对于现网环境目前没有好的办法去界定该类情况。
overlayfs在实际使用过程中是有很多限制但是并没有在代码层面直接做限制,所以在使用过程会出现操作错误引入的一些奇怪的问题
往往这类问题表露出来的现象是比较奇怪的,定位起来比较耗时。
基于这样的背景overlayfs的维测功能需要增强。
该补丁为 overlayfs 增加了 sysfs 文件,用于记录 overlayfs 的挂载信息。
PR链接:https://gitee.com/openeuler/kernel/pulls/149
-------------------------------------------
手机:(+86) 151-1048-1699
邮箱:hiixfj(a)gmail.com
1
0

30 Sep '22
From: Peter Zijlstra <peterz(a)infradead.org>
mainline inclusion
from mainline-v5.12-rc1
commit 2d24dd5798d0474d9bf705bfca8725e7d20f9d54
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5OOWG
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------------------------------------------------
I've always been bothered by the endless (fragile) boilerplate for
rbtree, and I recently wrote some rbtree helpers for objtool and
figured I should lift them into the kernel and use them more widely.
Provide:
partial-order; less() based:
- rb_add(): add a new entry to the rbtree
- rb_add_cached(): like rb_add(), but for a rb_root_cached
total-order; cmp() based:
- rb_find(): find an entry in an rbtree
- rb_find_add(): find an entry, and add if not found
- rb_find_first(): find the first (leftmost) matching entry
- rb_next_match(): continue from rb_find_first()
- rb_for_each(): iterate a sub-tree using the previous two
Inlining and constant propagation should see the compiler inline the
whole thing, including the various compare functions.
Signed-off-by: Peter Zijlstra (Intel) <peterz(a)infradead.org>
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Reviewed-by: Michel Lespinasse <walken(a)google.com>
Acked-by: Davidlohr Bueso <dbueso(a)suse.de>
Conflicts:
tools/objtool/elf.c
[Feature 3690914ed35e("objtool: Extract elf_symbol_add()")]
Signed-off-by: Lin Shengwang <linshengwang1(a)huawei.com>
Reviewed-by: lihua <hucool.lihua(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
include/linux/rbtree.h | 190 ++++++++++++++++++++++++++++++++++
tools/include/linux/rbtree.h | 192 ++++++++++++++++++++++++++++++++++-
tools/objtool/elf.c | 73 ++-----------
3 files changed, 392 insertions(+), 63 deletions(-)
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h
index d7db17996322..e0b300de8f3f 100644
--- a/include/linux/rbtree.h
+++ b/include/linux/rbtree.h
@@ -158,4 +158,194 @@ static inline void rb_replace_node_cached(struct rb_node *victim,
rb_replace_node(victim, new, &root->rb_root);
}
+/*
+ * The below helper functions use 2 operators with 3 different
+ * calling conventions. The operators are related like:
+ *
+ * comp(a->key,b) < 0 := less(a,b)
+ * comp(a->key,b) > 0 := less(b,a)
+ * comp(a->key,b) == 0 := !less(a,b) && !less(b,a)
+ *
+ * If these operators define a partial order on the elements we make no
+ * guarantee on which of the elements matching the key is found. See
+ * rb_find().
+ *
+ * The reason for this is to allow the find() interface without requiring an
+ * on-stack dummy object, which might not be feasible due to object size.
+ */
+
+/**
+ * rb_add_cached() - insert @node into the leftmost cached tree @tree
+ * @node: node to insert
+ * @tree: leftmost cached tree to insert @node into
+ * @less: operator defining the (partial) node order
+ */
+static __always_inline void
+rb_add_cached(struct rb_node *node, struct rb_root_cached *tree,
+ bool (*less)(struct rb_node *, const struct rb_node *))
+{
+ struct rb_node **link = &tree->rb_root.rb_node;
+ struct rb_node *parent = NULL;
+ bool leftmost = true;
+
+ while (*link) {
+ parent = *link;
+ if (less(node, parent)) {
+ link = &parent->rb_left;
+ } else {
+ link = &parent->rb_right;
+ leftmost = false;
+ }
+ }
+
+ rb_link_node(node, parent, link);
+ rb_insert_color_cached(node, tree, leftmost);
+}
+
+/**
+ * rb_add() - insert @node into @tree
+ * @node: node to insert
+ * @tree: tree to insert @node into
+ * @less: operator defining the (partial) node order
+ */
+static __always_inline void
+rb_add(struct rb_node *node, struct rb_root *tree,
+ bool (*less)(struct rb_node *, const struct rb_node *))
+{
+ struct rb_node **link = &tree->rb_node;
+ struct rb_node *parent = NULL;
+
+ while (*link) {
+ parent = *link;
+ if (less(node, parent))
+ link = &parent->rb_left;
+ else
+ link = &parent->rb_right;
+ }
+
+ rb_link_node(node, parent, link);
+ rb_insert_color(node, tree);
+}
+
+/**
+ * rb_find_add() - find equivalent @node in @tree, or add @node
+ * @node: node to look-for / insert
+ * @tree: tree to search / modify
+ * @cmp: operator defining the node order
+ *
+ * Returns the rb_node matching @node, or NULL when no match is found and @node
+ * is inserted.
+ */
+static __always_inline struct rb_node *
+rb_find_add(struct rb_node *node, struct rb_root *tree,
+ int (*cmp)(struct rb_node *, const struct rb_node *))
+{
+ struct rb_node **link = &tree->rb_node;
+ struct rb_node *parent = NULL;
+ int c;
+
+ while (*link) {
+ parent = *link;
+ c = cmp(node, parent);
+
+ if (c < 0)
+ link = &parent->rb_left;
+ else if (c > 0)
+ link = &parent->rb_right;
+ else
+ return parent;
+ }
+
+ rb_link_node(node, parent, link);
+ rb_insert_color(node, tree);
+ return NULL;
+}
+
+/**
+ * rb_find() - find @key in tree @tree
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining the node order
+ *
+ * Returns the rb_node matching @key or NULL.
+ */
+static __always_inline struct rb_node *
+rb_find(const void *key, const struct rb_root *tree,
+ int (*cmp)(const void *key, const struct rb_node *))
+{
+ struct rb_node *node = tree->rb_node;
+
+ while (node) {
+ int c = cmp(key, node);
+
+ if (c < 0)
+ node = node->rb_left;
+ else if (c > 0)
+ node = node->rb_right;
+ else
+ return node;
+ }
+
+ return NULL;
+}
+
+/**
+ * rb_find_first() - find the first @key in @tree
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining node order
+ *
+ * Returns the leftmost node matching @key, or NULL.
+ */
+static __always_inline struct rb_node *
+rb_find_first(const void *key, const struct rb_root *tree,
+ int (*cmp)(const void *key, const struct rb_node *))
+{
+ struct rb_node *node = tree->rb_node;
+ struct rb_node *match = NULL;
+
+ while (node) {
+ int c = cmp(key, node);
+
+ if (c <= 0) {
+ if (!c)
+ match = node;
+ node = node->rb_left;
+ } else if (c > 0) {
+ node = node->rb_right;
+ }
+ }
+
+ return match;
+}
+
+/**
+ * rb_next_match() - find the next @key in @tree
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining node order
+ *
+ * Returns the next node matching @key, or NULL.
+ */
+static __always_inline struct rb_node *
+rb_next_match(const void *key, struct rb_node *node,
+ int (*cmp)(const void *key, const struct rb_node *))
+{
+ node = rb_next(node);
+ if (node && cmp(key, node))
+ node = NULL;
+ return node;
+}
+
+/**
+ * rb_for_each() - iterates a subtree matching @key
+ * @node: iterator
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining node order
+ */
+#define rb_for_each(node, key, tree, cmp) \
+ for ((node) = rb_find_first((key), (tree), (cmp)); \
+ (node); (node) = rb_next_match((key), (node), (cmp)))
+
#endif /* _LINUX_RBTREE_H */
diff --git a/tools/include/linux/rbtree.h b/tools/include/linux/rbtree.h
index 30dd21f976c3..2680f2edb837 100644
--- a/tools/include/linux/rbtree.h
+++ b/tools/include/linux/rbtree.h
@@ -152,4 +152,194 @@ static inline void rb_replace_node_cached(struct rb_node *victim,
rb_replace_node(victim, new, &root->rb_root);
}
-#endif /* __TOOLS_LINUX_PERF_RBTREE_H */
+/*
+ * The below helper functions use 2 operators with 3 different
+ * calling conventions. The operators are related like:
+ *
+ * comp(a->key,b) < 0 := less(a,b)
+ * comp(a->key,b) > 0 := less(b,a)
+ * comp(a->key,b) == 0 := !less(a,b) && !less(b,a)
+ *
+ * If these operators define a partial order on the elements we make no
+ * guarantee on which of the elements matching the key is found. See
+ * rb_find().
+ *
+ * The reason for this is to allow the find() interface without requiring an
+ * on-stack dummy object, which might not be feasible due to object size.
+ */
+
+/**
+ * rb_add_cached() - insert @node into the leftmost cached tree @tree
+ * @node: node to insert
+ * @tree: leftmost cached tree to insert @node into
+ * @less: operator defining the (partial) node order
+ */
+static __always_inline void
+rb_add_cached(struct rb_node *node, struct rb_root_cached *tree,
+ bool (*less)(struct rb_node *, const struct rb_node *))
+{
+ struct rb_node **link = &tree->rb_root.rb_node;
+ struct rb_node *parent = NULL;
+ bool leftmost = true;
+
+ while (*link) {
+ parent = *link;
+ if (less(node, parent)) {
+ link = &parent->rb_left;
+ } else {
+ link = &parent->rb_right;
+ leftmost = false;
+ }
+ }
+
+ rb_link_node(node, parent, link);
+ rb_insert_color_cached(node, tree, leftmost);
+}
+
+/**
+ * rb_add() - insert @node into @tree
+ * @node: node to insert
+ * @tree: tree to insert @node into
+ * @less: operator defining the (partial) node order
+ */
+static __always_inline void
+rb_add(struct rb_node *node, struct rb_root *tree,
+ bool (*less)(struct rb_node *, const struct rb_node *))
+{
+ struct rb_node **link = &tree->rb_node;
+ struct rb_node *parent = NULL;
+
+ while (*link) {
+ parent = *link;
+ if (less(node, parent))
+ link = &parent->rb_left;
+ else
+ link = &parent->rb_right;
+ }
+
+ rb_link_node(node, parent, link);
+ rb_insert_color(node, tree);
+}
+
+/**
+ * rb_find_add() - find equivalent @node in @tree, or add @node
+ * @node: node to look-for / insert
+ * @tree: tree to search / modify
+ * @cmp: operator defining the node order
+ *
+ * Returns the rb_node matching @node, or NULL when no match is found and @node
+ * is inserted.
+ */
+static __always_inline struct rb_node *
+rb_find_add(struct rb_node *node, struct rb_root *tree,
+ int (*cmp)(struct rb_node *, const struct rb_node *))
+{
+ struct rb_node **link = &tree->rb_node;
+ struct rb_node *parent = NULL;
+ int c;
+
+ while (*link) {
+ parent = *link;
+ c = cmp(node, parent);
+
+ if (c < 0)
+ link = &parent->rb_left;
+ else if (c > 0)
+ link = &parent->rb_right;
+ else
+ return parent;
+ }
+
+ rb_link_node(node, parent, link);
+ rb_insert_color(node, tree);
+ return NULL;
+}
+
+/**
+ * rb_find() - find @key in tree @tree
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining the node order
+ *
+ * Returns the rb_node matching @key or NULL.
+ */
+static __always_inline struct rb_node *
+rb_find(const void *key, const struct rb_root *tree,
+ int (*cmp)(const void *key, const struct rb_node *))
+{
+ struct rb_node *node = tree->rb_node;
+
+ while (node) {
+ int c = cmp(key, node);
+
+ if (c < 0)
+ node = node->rb_left;
+ else if (c > 0)
+ node = node->rb_right;
+ else
+ return node;
+ }
+
+ return NULL;
+}
+
+/**
+ * rb_find_first() - find the first @key in @tree
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining node order
+ *
+ * Returns the leftmost node matching @key, or NULL.
+ */
+static __always_inline struct rb_node *
+rb_find_first(const void *key, const struct rb_root *tree,
+ int (*cmp)(const void *key, const struct rb_node *))
+{
+ struct rb_node *node = tree->rb_node;
+ struct rb_node *match = NULL;
+
+ while (node) {
+ int c = cmp(key, node);
+
+ if (c <= 0) {
+ if (!c)
+ match = node;
+ node = node->rb_left;
+ } else if (c > 0) {
+ node = node->rb_right;
+ }
+ }
+
+ return match;
+}
+
+/**
+ * rb_next_match() - find the next @key in @tree
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining node order
+ *
+ * Returns the next node matching @key, or NULL.
+ */
+static __always_inline struct rb_node *
+rb_next_match(const void *key, struct rb_node *node,
+ int (*cmp)(const void *key, const struct rb_node *))
+{
+ node = rb_next(node);
+ if (node && cmp(key, node))
+ node = NULL;
+ return node;
+}
+
+/**
+ * rb_for_each() - iterates a subtree matching @key
+ * @node: iterator
+ * @key: key to match
+ * @tree: tree to search
+ * @cmp: operator defining node order
+ */
+#define rb_for_each(node, key, tree, cmp) \
+ for ((node) = rb_find_first((key), (tree), (cmp)); \
+ (node); (node) = rb_next_match((key), (node), (cmp)))
+
+#endif /* __TOOLS_LINUX_PERF_RBTREE_H */
diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index de6e42040d75..a0468ead1ea1 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -43,75 +43,24 @@ static void elf_hash_init(struct hlist_head *table)
#define elf_hash_for_each_possible(name, obj, member, key) \
hlist_for_each_entry(obj, &name[hash_min(key, elf_hash_bits())], member)
-static void rb_add(struct rb_root *tree, struct rb_node *node,
- int (*cmp)(struct rb_node *, const struct rb_node *))
-{
- struct rb_node **link = &tree->rb_node;
- struct rb_node *parent = NULL;
-
- while (*link) {
- parent = *link;
- if (cmp(node, parent) < 0)
- link = &parent->rb_left;
- else
- link = &parent->rb_right;
- }
-
- rb_link_node(node, parent, link);
- rb_insert_color(node, tree);
-}
-
-static struct rb_node *rb_find_first(const struct rb_root *tree, const void *key,
- int (*cmp)(const void *key, const struct rb_node *))
-{
- struct rb_node *node = tree->rb_node;
- struct rb_node *match = NULL;
-
- while (node) {
- int c = cmp(key, node);
- if (c <= 0) {
- if (!c)
- match = node;
- node = node->rb_left;
- } else if (c > 0) {
- node = node->rb_right;
- }
- }
-
- return match;
-}
-
-static struct rb_node *rb_next_match(struct rb_node *node, const void *key,
- int (*cmp)(const void *key, const struct rb_node *))
-{
- node = rb_next(node);
- if (node && cmp(key, node))
- node = NULL;
- return node;
-}
-
-#define rb_for_each(tree, node, key, cmp) \
- for ((node) = rb_find_first((tree), (key), (cmp)); \
- (node); (node) = rb_next_match((node), (key), (cmp)))
-
-static int symbol_to_offset(struct rb_node *a, const struct rb_node *b)
+static bool symbol_to_offset(struct rb_node *a, const struct rb_node *b)
{
struct symbol *sa = rb_entry(a, struct symbol, node);
struct symbol *sb = rb_entry(b, struct symbol, node);
if (sa->offset < sb->offset)
- return -1;
+ return true;
if (sa->offset > sb->offset)
- return 1;
+ return false;
if (sa->len < sb->len)
- return -1;
+ return true;
if (sa->len > sb->len)
- return 1;
+ return false;
sa->alias = sb;
- return 0;
+ return false;
}
static int symbol_by_offset(const void *key, const struct rb_node *node)
@@ -165,7 +114,7 @@ struct symbol *find_symbol_by_offset(struct section *sec, unsigned long offset)
{
struct rb_node *node;
- rb_for_each(&sec->symbol_tree, node, &offset, symbol_by_offset) {
+ rb_for_each(node, &offset, &sec->symbol_tree, symbol_by_offset) {
struct symbol *s = rb_entry(node, struct symbol, node);
if (s->offset == offset && s->type != STT_SECTION)
@@ -179,7 +128,7 @@ struct symbol *find_func_by_offset(struct section *sec, unsigned long offset)
{
struct rb_node *node;
- rb_for_each(&sec->symbol_tree, node, &offset, symbol_by_offset) {
+ rb_for_each(node, &offset, &sec->symbol_tree, symbol_by_offset) {
struct symbol *s = rb_entry(node, struct symbol, node);
if (s->offset == offset && s->type == STT_FUNC)
@@ -193,7 +142,7 @@ struct symbol *find_symbol_containing(const struct section *sec, unsigned long o
{
struct rb_node *node;
- rb_for_each(&sec->symbol_tree, node, &offset, symbol_by_offset) {
+ rb_for_each(node, &offset, &sec->symbol_tree, symbol_by_offset) {
struct symbol *s = rb_entry(node, struct symbol, node);
if (s->type != STT_SECTION)
@@ -207,7 +156,7 @@ struct symbol *find_func_containing(struct section *sec, unsigned long offset)
{
struct rb_node *node;
- rb_for_each(&sec->symbol_tree, node, &offset, symbol_by_offset) {
+ rb_for_each(node, &offset, &sec->symbol_tree, symbol_by_offset) {
struct symbol *s = rb_entry(node, struct symbol, node);
if (s->type == STT_FUNC)
@@ -352,7 +301,7 @@ static void elf_add_symbol(struct elf *elf, struct symbol *sym)
sym->offset = sym->sym.st_value;
sym->len = sym->sym.st_size;
- rb_add(&sym->sec->symbol_tree, &sym->node, symbol_to_offset);
+ rb_add(&sym->node, &sym->sec->symbol_tree, symbol_to_offset);
pnode = rb_prev(&sym->node);
if (pnode)
entry = &rb_entry(pnode, struct symbol, node)->list;
--
2.20.1
1
37
议题:开源之夏 增加rust-for-linux driver支持
简介:主要介绍一下rust-for-linux api支持和新增driver情况。
1
0

[PATCH openEuler-5.10 01/10] mm: Force TLB flush for PFNMAP mappings before unlink_file_vma()
by Zheng Zengkai 29 Sep '22
by Zheng Zengkai 29 Sep '22
29 Sep '22
From: Jann Horn <jannh(a)google.com>
stable inclusion
from stable-v5.10.142
commit 895428ee124ad70b9763259308354877b725c31d
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PE9S
CVE: CVE-2022-39188
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=…
--------------------------------
commit b67fbebd4cf980aecbcc750e1462128bffe8ae15 upstream.
Some drivers rely on having all VMAs through which a PFN might be
accessible listed in the rmap for correctness.
However, on X86, it was possible for a VMA with stale TLB entries
to not be listed in the rmap.
This was fixed in mainline with
commit b67fbebd4cf9 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas"),
but that commit relies on preceding refactoring in
commit 18ba064e42df3 ("mmu_gather: Let there be one tlb_{start,end}_vma()
implementation") and commit 1e9fdf21a4339 ("mmu_gather: Remove per arch
tlb_{start,end}_vma()").
This patch provides equivalent protection without needing that
refactoring, by forcing a TLB flush between removing PTEs in
unmap_vmas() and the call to unlink_file_vma() in free_pgtables().
[This is a stable-specific rewrite of the upstream commit!]
Signed-off-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: ze zuo <zuoze1(a)huawei.com>
Reviewed-by: Chen Wandun <chenwandun(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
mm/mmap.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/mm/mmap.c b/mm/mmap.c
index 5489d70db84e..7fba5d89ecde 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2962,6 +2962,18 @@ static void unmap_region(struct mm_struct *mm,
tlb_gather_mmu(&tlb, mm, start, end);
update_hiwater_rss(mm);
unmap_vmas(&tlb, vma, start, end);
+
+ /*
+ * Ensure we have no stale TLB entries by the time this mapping is
+ * removed from the rmap.
+ * Note that we don't have to worry about nested flushes here because
+ * we're holding the mm semaphore for removing the mapping - so any
+ * concurrent flush in this region has to be coming through the rmap,
+ * and we synchronize against that using the rmap lock.
+ */
+ if ((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0)
+ tlb_flush_mmu(&tlb);
+
free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
next ? next->vm_start : USER_PGTABLES_CEILING);
tlb_finish_mmu(&tlb, start, end);
--
2.20.1
1
9
Backport 5.10.121 LTS patches from upstream.
git cherry-pick v5.10.120..v5.10.121~1 -s
Already merged(-13):
94845fc422f9 inotify: show inotify mask flags in proc fdinfo
9a9dc60da79a fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according
skipped pages
dd887f83ea54 ext4: fix use-after-free in ext4_rename_dir_prepare
adf490083ca5 ext4: fix warning in ext4_handle_inode_extension
1b061af03764 ext4: fix bug_on in ext4_writepages
4fd58b5cf118 ext4: fix bug_on in __es_tree_search
46c2b5f81c9e bcache: improve multithreaded bch_btree_check()
3f686b249b1c bcache: improve multithreaded bch_sectors_dirty_init()
0cf22f234ebc bcache: remove incremental dirty sector counting for
bch_sectors_dirty_init()
59afd4f28790 bcache: avoid journal no-space deadlock by reserving 1 journal
bucket
893cf5f68a4c xfs: fix chown leaking delalloc quota blocks when fssetxattr fails
e3ffe7387c70 xfs: force log and push AIL to clear pinned inodes when aborting
mount
47c1680e51ef md: bcache: check the return value of kzalloc() in
detached_dev_do_request()
Rejected(-3):
hinic driver drops related file in the patch:
33411945c9ad net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init
dc7753d60097 net: huawei: hinic: Use devm_kcalloc() instead of devm_kzalloc()
8096e2d7c0f9 hinic: Avoid some over memory allocation
Context conflict:
643ceee253a4 xfs: sync lazy sb accounting on quiesce of read-only mounts
80b0a2b3dfea bfq: Remove pointless bfq_init_rq() calls
a67100f42665 ext4: only allow test_dummy_encryption when supported
KABI changed(-2):
147a376c1afe sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
61bbbde9b6d2 drm: fix EDID struct for old ARM OABI format
7a55a5159dae scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac()
KABI fixed(+1):
sched/fair: Fix kabi broken in struct cfs_rq
Defered(-5):
9834b13e8b96 tty: fix deadlock caused by calling printk() under tty_port->lock
70a7dea84639 bfq: Track whether bfq_group is still online
0285718e2825 bfq: Get rid of __bio_blkcg() usage
51f724bffa34 bfq: Make sure bfqg for which we are queueing requests is online
c26ccbaeb8d8 kexec_file: drop weak attribute from
arch_kexec_apply_relocations[_add]
Total patches: 449 - 13 - 3 - 2 + 1 - 5 = 427
Abhinav Kumar (1):
drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path
Abhishek Kumar (1):
ath10k: skip ath10k_halt during suspend for driver state RESTARTING
Aditya Garg (1):
efi: Do not import certificates from UEFI Secure Boot for T2 Macs
Aidan MacDonald (1):
mmc: jz4740: Apply DMA engine limits to maximum segment size
Akira Yokosawa (1):
docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0
Albert Wang (1):
usb: dwc3: gadget: Move null pinter check to proper place
Alex Elder (2):
net: ipa: fix page free in ipa_endpoint_trans_release()
net: ipa: fix page free in ipa_endpoint_replenish_one()
Alexander Aring (2):
dlm: fix plock invalid read
dlm: fix missing lkb refcount handling
Alexander Wetzel (1):
rtl818x: Prevent using not initialized queues
Alexandre Ghiti (1):
riscv: Initialize thread pointer before calling C functions
Alexandru Elisei (1):
arm64: compat: Do not treat syscall number as ESR_ELx for a bad
syscall
Alexey Dobriyan (1):
proc: fix dentry/inode overinstantiating under /proc/${pid}/net
Alexey Khoroshilov (1):
ASoC: max98090: Move check for invalid values before casting in
max98090_put_enab_tlv()
Alice Wong (1):
drm/amdgpu/ucode: Remove firmware load type check in
amdgpu_ucode_free_bo
Amadeusz Sławiński (1):
ALSA: jack: Access input_dev under mutex
Amelie Delaunay (3):
dmaengine: stm32-mdma: remove GISR1 register
dmaengine: stm32-mdma: rework interrupt handler
dmaengine: stm32-mdma: fix chan initialization in
stm32_mdma_irq_handler()
Amir Goldstein (1):
fsnotify: fix wrong lockdep annotations
Ammar Faizi (2):
x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails
x86/delay: Fix the wrong asm constraint in delay_loop()
Andre Przywara (1):
ARM: dts: suniv: F1C100: fix watchdog compatible
Andreas Gruenbacher (1):
iomap: iomap_write_failed fix
Andrii Nakryiko (2):
libbpf: Don't error out on CO-RE relos for overriden weak subprogs
libbpf: Fix logic for finding matching program for CO-RE relocation
Archie Pusaka (2):
Bluetooth: use inclusive language in HCI role comments
Bluetooth: use inclusive language when filtering devices
Arnd Bergmann (2):
drbd: fix duplicate array initializer
ARM: pxa: maybe fix gpio lookup tables
Baochen Qiang (1):
ath11k: Don't check arvif->is_started before sending management frames
Bart Van Assche (1):
scsi: ufs: qcom: Fix ufs_qcom_resume()
Bhaskar Chowdhury (1):
Bluetooth: L2CAP: Rudimentary typo fixes
Biju Das (1):
spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA
direction
Bjorn Andersson (1):
soc: qcom: llcc: Add MODULE_DEVICE_TABLE()
Bjorn Helgaas (1):
PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
Björn Ardö (1):
mailbox: forward the hrtimer if not queued and under a lock
Bob Peterson (1):
gfs2: use i_lock spin_lock for inode qadata
Borislav Petkov (1):
x86/microcode: Add explicit CPU vendor dependency
Brian Foster (3):
xfs: sync lazy sb accounting on quiesce of read-only mounts
xfs: restore shutdown check in mapped write fault path
xfs: consider shutdown in bmapbt cursor delete assert
Brian Norris (2):
PM / devfreq: rk3399_dmc: Disable edev on remove()
drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX
Cai Huoqing (1):
media: staging: media: rkvdec: Make use of the helper function
devm_platform_ioremap_resource()
Carl Yin(殷张成) (1):
USB: serial: option: add Quectel BG95 modem
Chao Yu (7):
f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count()
f2fs: fix to do sanity check on block address in f2fs_do_zero_range()
f2fs: fix to clear dirty inode in f2fs_evict_inode()
f2fs: fix deadloop in foreground GC
f2fs: fix to do sanity check on total_data_blocks
f2fs: fix fallocate to use file_modified to update permissions
consistently
f2fs: fix to do sanity check for inline inode
Charles Keepax (3):
ASoC: tscs454: Add endianness flag in snd_soc_component_driver
ASoC: atmel-pdmic: Remove endianness flag on pdmic component
ASoC: atmel-classd: Remove endianness flag on class d component
Chen-Tsung Hsieh (1):
mtd: spi-nor: core: Check written SR value in
spi_nor_write_16bit_sr_and_check()
Chen-Yu Tsai (1):
media: hantro: Empty encoder capture buffers by default
Chengming Zhou (1):
sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
Christoph Hellwig (2):
target: remove an incorrect unmap zeroes data deduction
virtio_blk: fix the discard_granularity and discard_alignment queue
limits
Christophe JAILLET (4):
media: aspeed: Fix an error handling path in aspeed_video_probe()
memory: samsung: exynos5422-dmc: Avoid some over memory allocation
drivers/base/memory: fix an unlikely reference counting issue in
__add_memory_block()
dmaengine: idxd: Fix the error handling path in idxd_cdev_register()
Christophe de Dinechin (1):
nodemask.h: fix compilation error with GCC12
Chuanhong Guo (1):
arm: mediatek: select arch timer for mt7629
Colin Ian King (2):
ALSA: pcm: Check for null pointer of pointer substream before
dereferencing it
selftests/resctrl: Fix null pointer dereference on open failed
Corentin Labbe (3):
crypto: marvell/cesa - ECB does not IV
crypto: sun8i-ss - rework handling of IV
crypto: sun8i-ss - handle zero sized sg
Corey Minyard (2):
ipmi:ssif: Check for NULL msg when handling events and messages
ipmi: Fix pr_fmt to avoid compilation issues
Cristian Marussi (1):
firmware: arm_scmi: Fix list protocols enumeration in the base
protocol
Dan Carpenter (5):
ath9k_htc: fix potential out of bounds access with invalid
rxstatus->rs_keyix
drm/msm: return an error pointer in msm_gem_prime_get_sg_table()
PCI: cadence: Fix find_first_zero_bit() limit
PCI: rockchip: Fix find_first_zero_bit() limit
OPP: call of_node_put() on error path in _bandwidth_supported()
Dan Williams (2):
nvdimm: Fix firmware activation deadlock scenarios
nvdimm: Allow overwrite in the presence of disabled dimms
Daniel Lezcano (2):
thermal/drivers/core: Use a char pointer for the cooling device name
thermal/core: Fix memory leak in the error path
Daniel Thompson (1):
irqchip/exiu: Fix acknowledgment of edge triggered interrupts
Daniel Vetter (1):
fbcon: Consistently protect deferred_takeover with console_lock()
Darrick J. Wong (1):
xfs: fix incorrect root dquot corruption error when switching
group/project quota types
Dave Airlie (1):
drm/amdgpu/cs: make commands with 0 chunks illegal behaviour.
Dave Chinner (1):
xfs: assert in xfs_btree_del_cursor should take into account error
David Howells (7):
rxrpc: Return an error to sendmsg if call failed
rxrpc, afs: Fix selection of abort codes
rxrpc: Fix listen() setting the bar too high for the prealloc rings
rxrpc: Don't try to resend the request if we're receiving the reply
rxrpc: Fix overlapping ACK accounting
rxrpc: Don't let ack.previousPacket regress
rxrpc: Fix decision on when to generate an IDLE ACK
Dennis Dalessandro (1):
RDMA/hfi1: Fix potential integer multiplication overflow errors
Dimitri John Ledkov (1):
cfg80211: declare MODULE_FIRMWARE for regulatory.db
Dinh Nguyen (1):
dt-bindings: gpio: altera: correct interrupt-cells
Dmitry Baryshkov (2):
drm/msm/dsi: fix error checks and return values for DSI xmit functions
drm/msm: add missing include to msm_drv.c
Dmitry Torokhov (1):
Input: stmfts - do not leave device disabled in stmfts_input_open
Dongliang Mu (3):
HID: bigben: fix slab-out-of-bounds Write in bigben_probe
rtlwifi: Use pr_warn instead of WARN_ONCE
media: ov7670: remove ov7670_power_off from ov7670_remove
Douglas Miller (2):
RDMA/hfi1: Prevent panic when SDMA is disabled
RDMA/hfi1: Prevent use of lock before it is initialized
Duoming Zhou (1):
NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx
Emmanuel Grumbach (1):
iwlwifi: mvm: fix assert 1F04 upon reconfig
Eric Biggers (2):
ext4: reject the 'commit' option on ext2 filesystems
ext4: only allow test_dummy_encryption when supported
Eric Dumazet (2):
net: remove two BUG() from skb_checksum_help()
sctp: read sk->sk_bound_dev_if once in sctp_rcv()
Eric W. Biederman (3):
ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP
ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
Eugenio Pérez (1):
vdpasim: allow to enable a vq repeatedly
Evan Quan (1):
drm/amd/pm: fix the compile warning
Fabio Estevam (1):
net: phy: micrel: Allow probing without .driver_data
Felix Fietkau (1):
mac80211: upgrade passive scan to active scan on DFS channels after
beacon rx
Finn Thain (1):
macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled
Francesco Dolcini (1):
PCI: imx6: Fix PERST# start-up sequence
GUO Zihua (1):
ima: remove the IMA_TEMPLATE Kconfig option
Geert Uytterhoeven (2):
m68k: atari: Make Atari ROM port I/O write macros return void
m68k: math-emu: Fix dependencies of math emulation support
Gilad Ben-Yossef (1):
crypto: ccree - use fine grained DMA mapping dir
Guenter Roeck (2):
platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls
MIPS: Loongson: Use hwmon_device_register_with_groups() to register
hwmon
Guo Ren (1):
csky: patch_text: Fixup last cpu should be master
Gustavo A. R. Silva (1):
net: stmmac: selftests: Use kcalloc() instead of kzalloc()
Hangyu Hua (3):
media: rga: fix possible memory leak in rga_probe
drm: msm: fix possible memory leak in mdp5_crtc_cursor_set()
misc: ocxl: fix possible double free in ocxl_file_register_afu
Hans Verkuil (1):
media: cec-adap.c: fix is_configuring state
Hans de Goede (1):
ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408
Haowen Bai (4):
b43legacy: Fix assigning negative value to unsigned variable
b43: Fix assigning negative value to unsigned variable
ipw2x00: Fix potential NULL dereference in libipw_xmit()
sfc: ef10: Fix assigning negative value to unsigned variable
Haren Myneni (1):
powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr
Hari Bathini (2):
powerpc/fadump: Fix fadump to work with a different endian capture
kernel
powerpc/fadump: fix PT_LOAD segment for boot memory area
Hari Chandrakanthan (1):
ath11k: disable spectral scan during spectral deinit
Heiko Carstens (1):
s390/preempt: disable __preempt_count_add() optimization for
PROFILE_ALL_BRANCHES
Helge Deller (2):
parisc/stifb: Implement fb_is_primary_device()
parisc/stifb: Keep track of hardware path of graphics card
Heming Zhao (1):
md/bitmap: don't set sb values if can't pass sanity check
Howard Chung (1):
Bluetooth: Interleave with allowlist scan
Jaegeuk Kim (1):
f2fs: don't need inode lock for system hidden quota
Jagan Teki (1):
drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H
Jakob Koschel (1):
f2fs: fix dereference of stale list iterator after loop body
Jakub Kicinski (2):
eth: tg3: silence the GCC 12 array-bounds warning
net: stmmac: fix out-of-bounds access in a selftest
James Clark (1):
perf tools: Use Python devtools for version autodetection rather than
runtime
James Smart (1):
scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp()
Jan Kara (8):
bfq: Split shared queues on move between cgroups
bfq: Update cgroup information before merging bio
ext4: verify dir block before splitting it
ext4: avoid cycles in directory h-tree
bfq: Avoid merging queues with different parents
bfq: Drop pointless unlock-lock pair
bfq: Remove pointless bfq_init_rq() calls
block: fix bio_clone_blkg_association() to associate with proper
blkcg_gq
Jan Kiszka (1):
efi: Add missing prototype for efi_capsule_setup_info
Jani Nikula (2):
drm/edid: fix invalid EDID extension block filtering
drm/i915/dsi: fix VBT send packet port selection for ICL+
Janusz Krzysztofik (1):
ARM: OMAP1: clock: Fix UART rate reporting algorithm
Jason A. Donenfeld (2):
openrisc: start CPU timer early in boot
Revert "random: use static branch for crng_ready()"
Jeffrey Mitchell (1):
xfs: set inode size after creating symlink
Jessica Zhang (2):
drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is
detected
drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is
detected
Jia-Wei Chang (1):
cpufreq: mediatek: Use module_init and add module_exit
Jiantao Zhang (1):
PCI: dwc: Fix setting error return on MSI DMA mapping failure
Jiasheng Jiang (1):
drm: mali-dp: potential dereference of null pointer
Jiri Slaby (1):
serial: pch: don't overwrite xmit->buf[0] by x_char
Joerg Roedel (1):
iommu/amd: Increase timeout waiting for GA log enablement
Johan Hovold (4):
PCI: qcom: Fix runtime PM imbalance on probe errors
PCI: qcom: Fix unbalanced PHY init on probe errors
phy: qcom-qmp: fix struct clk leak on probe errors
phy: qcom-qmp: fix reset-controller leak on probe errors
Johannes Berg (3):
nl80211: show SSID for P2P_GO interfaces
wifi: mac80211: fix use-after-free in chanctx code
um: chan_user: Fix winch_tramp() return value
Jonas Karlman (1):
media: rkvdec: h264: Fix bit depth wrap in pps packet
Jonathan Bakker (1):
ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries
Jonathan Teh (1):
HID: hid-led: fix maximum brightness for Dream Cheeky
Josh Poimboeuf (2):
x86/speculation: Add missing prototype for unpriv_ebpf_notify()
scripts/faddr2line: Fix overlapping text section failures
Junxiao Bi via Ocfs2-devel (1):
ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock
Kajol Jain (1):
powerpc/perf: Fix the threshold compare group constraint for power9
Kan Liang (1):
perf/x86/intel: Fix event constraints for ICL
Kathiravan T (1):
arm64: dts: qcom: ipq8074: fix the sleep clock frequency
Keita Suzuki (2):
drm/amd/pm: fix double free in si_parse_power_table()
tracing: Fix potential double free in create_var_ref()
Keith Busch (1):
nvme: set dma alignment to dword
Kirill A. Shutemov (1):
ACPICA: Avoid cache flush inside virtual machines
Kishon Vijay Abraham I (1):
usb: core: hcd: Add support for deferring roothub registration
Kiwoong Kim (1):
scsi: ufs: core: Exclude UECxx from SFR dump list
Konrad Dybcio (2):
arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count
regulator: qcom_smd: Fix up PM8950 regulator configuration
Krzysztof Kozlowski (6):
ARM: dts: ox820: align interrupt controller node name with dtschema
ARM: dts: s5pv210: align DMA channels with dtschema
ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM
irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value
irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value
pinctrl: mvebu: Fix irq_of_parse_and_map() return value
Kuldeep Singh (1):
spi: qcom-qspi: Add minItems to interconnect-names
Kuninori Morimoto (2):
ASoC: samsung: Use dev_err_probe() helper
i2c: rcar: fix PM ref counts in probe error paths
Kuogee Hsieh (3):
drm/msm/dpu: adjust display_v_end for eDP and DP
drm/msm/dp: stop event kernel thread when DP unbind
drm/msm/dp: fix event thread stuck in wait_event after kthread_stop()
Kuppuswamy Sathyanarayanan (1):
PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits
Kwanghoon Son (1):
media: exynos4-is: Fix compile warning
Lai Jiangshan (1):
x86/sev: Annotate stack change in the #VC handler
Len Brown (1):
tools/power turbostat: fix ICX DRAM power numbers
Leo Yan (1):
perf c2c: Use stdio interface if slang is not supported
Lin Ma (2):
ASoC: rt5645: Fix errorenous cleanup order
NFC: NULL out the dev->rfkill to prevent UAF
Liu Zixian (1):
drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes
Liviu Dudau (1):
drm/komeda: return early if drm_universal_plane_init() fails.
Luca Weiss (1):
media: venus: hfi: avoid null dereference in deinit
Lucas Stach (2):
drm/bridge: adv7511: clean up CEC adapter when probe fails
drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem
Lv Ruyi (7):
scsi: megaraid: Fix error check return value of register_chrdev()
drm: msm: fix error check return value of irq_of_parse_and_map()
powerpc/xics: fix refcount leak in icp_opal_init()
powerpc/powernv: fix missing of_node_put in uv_init()
drm/msm/dp: fix error check return value of irq_of_parse_and_map()
drm/msm/hdmi: fix error check return value of irq_of_parse_and_map()
mfd: ipaq-micro: Fix error check return value of platform_get_irq()
Maciej W. Rozycki (2):
MIPS: IP27: Remove incorrect `cpu_has_fpu' override
MIPS: IP30: Remove incorrect `cpu_has_fpu' override
Manivannan Sadhasivam (1):
scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
Mao Jinlong (1):
coresight: core: Fix coresight device probe failure issue
Marc Kleine-Budde (1):
can: xilinx_can: mark bit timing constants as const
Marek Vasut (2):
drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01
ARM: dts: stm32: Fix PHY post-reset delay on Avenger96
Mario Limonciello (1):
ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default
Marios Levogiannis (1):
ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS
Mark Bloch (1):
net/mlx5: fs, delete the FTE when there are no rules attached to it
Mark Brown (2):
ASoC: dapm: Don't fold register value changes into notifications
ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control
Mathias Nyman (1):
xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI
Matthieu Baerts (1):
x86/pm: Fix false positive kmemleak report in msr_build_context()
Max Filippov (1):
irqchip: irq-xtensa-mx: fix initial IRQ affinity
Max Krummenacher (1):
ARM: dts: imx6dl-colibri: Fix I2C pinmuxing
Maxime Ripard (3):
drm/vc4: hvs: Reset muxes at probe time
drm/vc4: txp: Don't set TXP_VSTART_AT_EOF
drm/vc4: txp: Force alpha to be 0xff if it's disabled
Miaohe Lin (1):
drivers/base/node.c: fix compaction sysfs file leak
Miaoqian Lin (20):
ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe
ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe
spi: spi-ti-qspi: Fix return value handling of
wait_for_completion_timeout
HID: elan: Fix potential double free in elan_input_configured
drm/bridge: Fix error handling in analogix_dp_probe
ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe
ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe
regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt
ASoC: samsung: Fix refcount leak in aries_audio_probe
media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe
media: st-delta: Fix PM disable depth imbalance in delta_probe
media: exynos4-is: Change clk_disable to clk_disable_unprepare
ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_*
drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init
thermal/drivers/imx_sc_thermal: Fix refcount leak in
imx_sc_thermal_probe
soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc
soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc
Input: sparcspkr - fix refcount leak in bbc_beep_probe
powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup
video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup
Michael Ellerman (1):
powerpc/64: Only WARN if __pa()/__va() called with bad addresses
Michael Rodin (1):
media: vsp1: Fix offset calculation for plane cropping
Michael Walle (1):
i2c: at91: use dma safe buffers
Mike Kravetz (1):
hugetlb: fix huge_pmd_unshare address update
Mike Travis (1):
x86/platform/uv: Update TSC sync state for UV5
Mikulas Patocka (1):
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
Miles Chen (1):
drm/mediatek: Fix mtk_cec_mask()
Minghao Chi (1):
scsi: ufs: Use pm_runtime_resume_and_get() instead of
pm_runtime_get_sync()
Monish Kumar R (1):
USB: new quirk for Dell Gen 2 devices
Muchun Song (1):
dax: fix cache flush on PMD-mapped pages
Nathan Chancellor (2):
drm/i915: Fix CFI violation with show_dynamic_id()
i2c: at91: Initialize dma_buf in at91_twi_xfer()
Nico Boehr (1):
s390/perf: obtain sie_block from the right address
Nicolas Dufresne (3):
media: rkvdec: h264: Fix dpb_valid implementation
media: coda: Fix reported H264 profile
media: coda: Add more H264 levels for CODA960
Nicolas Frattaroli (1):
ASoC: rk3328: fix disabling mclk on pclk probe failure
Niels Dossche (5):
mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue
ipv6: fix locking issues with loops over idev->addr_list
IB/rdmavt: add missing locks in rvt_ruc_loopback
ath11k: acquire ab->base_lock in unassign when finding the peer by
addr
Bluetooth: use hdev lock for accept_list and reject_list in conn req
Niklas Cassel (1):
binfmt_flat: do not stop relocating GOT entries prematurely on riscv
Noralf Trønnes (1):
dt-bindings: display: sitronix, st7735r: Fix backlight in example
Nuno Sá (1):
of: overlay: do not break notify on NOTIFY_{OK|STOP}
OGAWA Hirofumi (1):
fat: add ratelimit to fat*_ent_bread()
Padmanabha Srinivasaiah (1):
rcu-tasks: Fix race in schedule and flush work
Pali Rohár (1):
irqchip/armada-370-xp: Do not touch Performance Counter Overflow on
A375, A38x, A39x
Patrice Chotard (1):
spi: stm32-qspi: Fix wait_cmd timeout in APM mode
Paul Cercueil (1):
drm/ingenic: Reset pixclock rate when parent clock rate changes
Paul E. McKenney (2):
rcu: Make TASKS_RUDE_RCU select IRQ_WORK
scftorture: Fix distribution of short handler delays
Paul Moore (1):
lsm,selinux: pass flowi_common instead of flowi to the LSM hooks
Pavel Skripkin (1):
media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init
Peilin Ye (1):
Fonts: Make font size unsigned in font_desc
Peng Wu (3):
ARM: versatile: Add missing of_node_put in dcscb_init
ARM: hisi: Add missing of_node_put after of_find_compatible_node
powerpc/iommu: Add missing of_node_put in iommu_init_early_dart
Petr Machata (2):
mlxsw: spectrum_dcb: Do not warn about priority changes
mlxsw: Treat LLDP packets as control
Phil Auld (1):
kselftest/cgroup: fix test_stress.sh to use OUTPUT dir
Phil Elwell (3):
ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT
ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C
ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED
Philipp Zabel (1):
media: coda: limit frame interval enumeration to supported encoder
frame sizes
Pierre-Louis Bossart (2):
ASoC: max98357a: remove dependency on GPIOLIB
ASoC: rt1015p: remove dependency on GPIOLIB
Qinglang Miao (1):
cpufreq: mediatek: add missing platform_driver_unregister() on error
in mtk_cpufreq_driver_init
QintaoShen (1):
soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc
Qu Wenruo (2):
btrfs: add "0x" prefix for unsupported optional features
btrfs: repair super block num_devices automatically
Randy Dunlap (6):
x86: Fix return value of __setup handlers
x86/mm: Cleanup the control_va_addr_alignment() __setup handler
powerpc/8xx: export 'cpm_setbrg' for modules
powerpc/idle: Fix return value of __setup() handler
powerpc/4xx/cpm: Fix return value of __setup() handler
macintosh: via-pmu and via-cuda need RTC_LIB
Ravi Bangoria (2):
perf/amd/ibs: Cascade pmu init functions' return value
perf/amd/ibs: Use interrupt regs ip for stack unwinding
Rei Yamamoto (1):
mm, compaction: fast_find_migrateblock() should return pfn in the
target zone
Rex-BC Chen (1):
cpufreq: mediatek: Unregister platform device on exit
Rik van der Kemp (1):
ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop
Ronnie Sahlberg (1):
cifs: when extending a file with falloc we should make files
not-sparse
Russell King (Oracle) (1):
net: dsa: mt7530: 1G can also support 1000BASE-X link mode
Sakari Ailus (1):
ACPI: property: Release subnode properties with data nodes
Samuel Holland (1):
riscv: Fix irq_work when SMP is disabled
Sathish Narasimman (1):
Bluetooth: LL privacy allow RPA
Schspa Shi (1):
cpufreq: Fix possible race in cpufreq online error path
Sean Christopherson (3):
KVM: nVMX: Leave most VM-Exit info fields unmodified on failed
VM-Entry
KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple
fault
Kconfig: Add option for asm goto w/ tied outputs to workaround
clang-13 bug
Sebastian Andrzej Siewior (1):
crypto: cryptd - Protect per-CPU resource by disabling BH.
Shawn Lin (1):
arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399
Smith, Kyle Miller (Nimble Kernel) (1):
nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags
Song Liu (1):
ftrace: Clean up hash direct_functions on register failures
Stefan Wahren (4):
thermal/drivers/bcm2711: Don't clamp temperature at zero
ARM: dts: bcm2835-rpi-b: Fix GPIO line names
gpiolib: of: Introduce hook for missing gpio-ranges
pinctrl: bcm2835: implement hook for missing gpio-ranges
Steve French (1):
SMB3: EBADF/EIO errors in rename/open caused by race condition in
smb2_compound_op
Steven Price (1):
drm/plane: Move range check for format_count earlier
Takashi Iwai (1):
ALSA: usb-audio: Cancel pending work at closing a MIDI substream
Tali Perry (2):
i2c: npcm: Fix timeout calculation
i2c: npcm: Handle spurious interrupts
Tejas Upadhyay (1):
iommu/vt-d: Add RPLS to quirk list to skip TE disabling
Tejun Heo (1):
blk-iolatency: Fix inflight count imbalances and IO hangs on offline
Tetsuo Handa (1):
media: imon: reorganize serialization
Theodore Ts'o (1):
ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state
Thibaut VARÈNE (1):
ath9k: fix QCA9561 PA bias level
Thorsten Scherer (1):
ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec
clocks
Tokunori Ikegami (2):
mtd: cfi_cmdset_0002: Move and rename
chip_check/chip_ready/chip_good_for_write
mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N
Tong Tiangen (1):
arm64: fix types in copy_highpage()
Trond Myklebust (5):
NFS: Do not report EINTR/ERESTARTSYS as mapping errors
NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS
NFS: Do not report flush errors in nfs_write_end()
NFS: Don't report errors from nfs_pageio_complete() more than once
NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout
Tyler Hicks (1):
EDAC/dmc520: Don't print an error for each unconfigured interrupt line
Tyrone Ting (1):
i2c: npcm: Correct register access width
Tzung-Bi Shih (1):
platform/chrome: cros_ec: fix error handling in cros_ec_register()
Vasily Averin (1):
tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
Vignesh Raghavendra (1):
drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit
Vincent Mailhol (1):
can: mcp251xfd: silence clang's -Wunaligned-access warning
Vincent Whitchurch (1):
um: Fix out-of-bounds read in LDT setup
Vinod Polimera (1):
drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after
memory free during pm runtime resume
Viresh Kumar (1):
Revert "cpufreq: Fix possible race in cpufreq online error path"
Waiman Long (2):
ipc/mqueue: use get_tree_nodev() in mqueue_get_tree()
kseltest/cgroup: Make test_stress.sh work if run interactively
Wenli Looi (1):
ath9k: fix ar9003_get_eepmisc
Xiao Yang (1):
RDMA/rxe: Generate a completion for unsupported/invalid opcode
Xiaomeng Tong (11):
media: uvcvideo: Fix missing check to determine if element is found in
list
scsi: dc395x: Fix a missing check on list iterator
drm/nouveau/clk: Fix an incorrect NULL check on list iterator
drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list
iterator
md: fix an incorrect NULL check in does_sb_need_changing
md: fix an incorrect NULL check in md_reload_sb
iommu/msm: Fix an incorrect NULL check on list iterator
carl9170: tx: fix an incorrect use of list iterator
stm: ltdc: fix two incorrect NULL checks on list iterator
tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
gma500: fix an incorrect NULL check on list iterator
Xie Yongji (1):
nbd: Fix hung on disconnect request if socket is closed before
Yang Jihong (1):
perf tools: Add missing headers needed by util/data.h
Yang Yingliang (10):
pinctrl: renesas: rzn1: Fix possible null-ptr-deref in
sh_pfc_map_resources()
mtd: rawnand: cadence: fix possible null-ptr-deref in
cadence_nand_dt_probe()
drm/msm/hdmi: check return value after calling
platform_get_resource_byname()
drm/rockchip: vop: fix possible null-ptr-deref in vop_bind()
spi: spi-fsl-qspi: check return value after calling
platform_get_resource_byname()
thermal/core: Fix memory leak in __thermal_cooling_device_register()
ASoC: wm2000: fix missing clk_disable_unprepare() on error in
wm2000_anc_transition()
pinctrl: renesas: core: Fix possible null-ptr-deref in
sh_pfc_map_resources()
hwrng: omap3-rom - fix using wrong clk_disable() in
omap_rom_rng_runtime_resume()
mfd: davinci_voicecodec: Fix possible null-ptr-deref
davinci_vc_probe()
Yi Yang (1):
xtensa/simdisk: fix proc_read_simdisk()
Yicong Yang (1):
PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()
Ying Hsu (1):
Bluetooth: fix dangling sco_conn and use-after-free in
sco_sock_timeout
Yong Wu (1):
iommu/mediatek: Add list_del in mtk_iommu_remove
Yonghong Song (1):
selftests/bpf: fix btf_dump/btf_dump due to recent clang change
Yongzhi Liu (1):
hv_netvsc: Fix potential dereference of NULL pointer
Yuntao Wang (1):
bpf: Fix excessive memory allocation in stack_map_alloc()
Zev Weiss (1):
regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET
Zheng Yongjun (2):
spi: img-spfi: Fix pm_runtime_get_sync() error checking
thermal/drivers/broadcom: Fix potential NULL dereference in
sr_thermal_probe
Zheng Zengkai (1):
sched/fair: Fix kabi broken in struct cfs_rq
Zhengjun Xing (1):
perf jevents: Fix event syntax error caused by ExtSel
Zheyu Ma (3):
media: pci: cx23885: Fix the error handling in cx23885_initdev()
media: cx25821: Fix the warning when removing the module
mtd: rawnand: denali: Use managed device resources
Zhou Qingyang (1):
drm/komeda: Fix an undefined behavior bug in komeda_plane_add()
Zixuan Fu (1):
fs: jfs: fix possible NULL pointer dereference in dbFree()
Ziyang Xuan (1):
thermal/core: fix a UAF bug in __thermal_cooling_device_register()
jianghaoran (1):
ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL
liuyacan (1):
net/smc: postpone sk_refcnt increment in connect()
Documentation/conf.py | 2 +-
.../bindings/display/sitronix,st7735r.yaml | 1 +
.../devicetree/bindings/gpio/gpio-altera.txt | 5 +-
.../bindings/spi/qcom,spi-qcom-qspi.yaml | 1 +
arch/arm/boot/dts/bcm2835-rpi-b.dts | 13 +-
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 22 +-
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 2 +-
arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 4 +-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 4 +-
arch/arm/boot/dts/imx6dl-eckelmann-ci4x10.dts | 6 +-
arch/arm/boot/dts/imx6qdl-colibri.dtsi | 6 +-
arch/arm/boot/dts/ox820.dtsi | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 3 +-
arch/arm/boot/dts/s5pv210.dtsi | 12 +-
.../boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 1 +
arch/arm/boot/dts/suniv-f1c100s.dtsi | 4 +-
arch/arm/mach-hisi/platsmp.c | 4 +
arch/arm/mach-mediatek/Kconfig | 1 +
arch/arm/mach-omap1/clock.c | 2 +-
arch/arm/mach-pxa/cm-x300.c | 8 +-
arch/arm/mach-pxa/magician.c | 2 +-
arch/arm/mach-pxa/tosa.c | 4 +-
arch/arm/mach-vexpress/dcscb.c | 1 +
arch/arm64/Kconfig.platforms | 1 +
arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 +-
arch/arm64/boot/dts/qcom/msm8994.dtsi | 4 +-
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
arch/arm64/kernel/sys_compat.c | 2 +-
arch/arm64/mm/copypage.c | 4 +-
arch/csky/kernel/probes/kprobes.c | 2 +-
arch/m68k/Kconfig.cpu | 2 +-
arch/m68k/include/asm/raw_io.h | 6 +-
.../asm/mach-ip27/cpu-feature-overrides.h | 1 -
.../asm/mach-ip30/cpu-feature-overrides.h | 1 -
arch/openrisc/include/asm/timex.h | 1 +
arch/openrisc/kernel/head.S | 9 +
arch/parisc/include/asm/fb.h | 4 +
arch/powerpc/include/asm/page.h | 7 +-
arch/powerpc/include/asm/vas.h | 2 +-
arch/powerpc/kernel/fadump.c | 8 +-
arch/powerpc/kernel/idle.c | 2 +-
arch/powerpc/perf/isa207-common.c | 3 +-
arch/powerpc/platforms/4xx/cpm.c | 2 +-
arch/powerpc/platforms/8xx/cpm1.c | 1 +
arch/powerpc/platforms/powernv/opal-fadump.c | 94 ++++----
arch/powerpc/platforms/powernv/opal-fadump.h | 10 +-
arch/powerpc/platforms/powernv/ultravisor.c | 1 +
arch/powerpc/platforms/powernv/vas-fault.c | 2 +-
arch/powerpc/platforms/powernv/vas-window.c | 4 +-
arch/powerpc/platforms/powernv/vas.h | 2 +-
arch/powerpc/sysdev/dart_iommu.c | 6 +-
arch/powerpc/sysdev/fsl_rio.c | 2 +
arch/powerpc/sysdev/xics/icp-opal.c | 1 +
arch/riscv/include/asm/irq_work.h | 2 +-
arch/riscv/kernel/head.S | 1 +
arch/s390/include/asm/preempt.h | 15 +-
arch/s390/kernel/perf_event.c | 2 +-
arch/um/drivers/chan_user.c | 9 +-
arch/um/include/asm/thread_info.h | 2 +
arch/um/kernel/exec.c | 2 +-
arch/um/kernel/process.c | 2 +-
arch/um/kernel/ptrace.c | 8 +-
arch/um/kernel/signal.c | 4 +-
arch/x86/Kconfig | 4 +-
arch/x86/entry/entry_64.S | 1 +
arch/x86/entry/vdso/vma.c | 2 +-
arch/x86/events/amd/ibs.c | 55 ++++-
arch/x86/events/intel/core.c | 2 +-
arch/x86/include/asm/acenv.h | 14 +-
arch/x86/include/asm/suspend_32.h | 2 +-
arch/x86/include/asm/suspend_64.h | 12 +-
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apic/x2apic_uv_x.c | 8 +-
arch/x86/kernel/cpu/intel.c | 2 +-
arch/x86/kernel/cpu/mce/amd.c | 32 +--
arch/x86/kernel/step.c | 3 +-
arch/x86/kernel/sys_x86_64.c | 7 +-
arch/x86/kvm/vmx/nested.c | 45 +++-
arch/x86/kvm/vmx/vmcs.h | 5 +
arch/x86/lib/delay.c | 4 +-
arch/x86/mm/pat/memtype.c | 2 +-
arch/x86/um/ldt.c | 6 +-
arch/xtensa/kernel/ptrace.c | 4 +-
arch/xtensa/kernel/signal.c | 4 +-
arch/xtensa/platforms/iss/simdisk.c | 18 +-
block/bfq-cgroup.c | 36 ++-
block/bfq-iosched.c | 36 ++-
block/bfq-iosched.h | 1 +
block/blk-cgroup.c | 8 +-
block/blk-iolatency.c | 122 +++++-----
crypto/cryptd.c | 23 +-
drivers/acpi/property.c | 18 +-
drivers/acpi/sleep.c | 12 +
drivers/base/memory.c | 5 +-
drivers/base/node.c | 1 +
drivers/block/drbd/drbd_main.c | 11 +-
drivers/block/nbd.c | 13 +-
drivers/block/virtio_blk.c | 7 +-
drivers/char/hw_random/omap3-rom-rng.c | 2 +-
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_ssif.c | 23 ++
drivers/char/random.c | 12 +-
drivers/cpufreq/mediatek-cpufreq.c | 19 +-
.../allwinner/sun8i-ss/sun8i-ss-cipher.c | 115 ++++++---
.../crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 30 ++-
.../crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 10 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 14 +-
drivers/crypto/ccree/cc_buffer_mgr.c | 27 ++-
drivers/crypto/marvell/cesa/cipher.c | 1 -
drivers/crypto/nx/nx-common-powernv.c | 2 +-
drivers/devfreq/rk3399_dmc.c | 2 +
drivers/dma/idxd/cdev.c | 8 +-
drivers/dma/stm32-mdma.c | 87 ++++---
drivers/edac/dmc520_edac.c | 2 +-
drivers/firmware/arm_scmi/base.c | 2 +-
drivers/gpio/gpiolib-of.c | 5 +
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 3 +-
drivers/gpu/drm/amd/pm/powerplay/kv_dpm.c | 14 +-
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 8 +-
.../gpu/drm/arm/display/komeda/komeda_plane.c | 10 +-
drivers/gpu/drm/arm/malidp_crtc.c | 5 +-
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 +
.../drm/bridge/analogix/analogix_dp_core.c | 31 ++-
drivers/gpu/drm/drm_edid.c | 6 +-
drivers/gpu/drm/drm_plane.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 6 +
drivers/gpu/drm/gma500/psb_intel_display.c | 7 +-
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 33 ++-
drivers/gpu/drm/i915/i915_perf.c | 4 +-
drivers/gpu/drm/i915/i915_perf_types.h | 2 +-
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 61 ++++-
drivers/gpu/drm/mediatek/mtk_cec.c | 2 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 8 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 14 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 6 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.h | 4 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.h | 2 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 20 +-
drivers/gpu/drm/msm/dp/dp_display.c | 55 +++--
drivers/gpu/drm/msm/dsi/dsi_host.c | 21 +-
drivers/gpu/drm/msm/hdmi/hdmi.c | 10 +-
drivers/gpu/drm/msm/msm_drv.c | 1 +
drivers/gpu/drm/msm/msm_gem_prime.c | 2 +-
drivers/gpu/drm/nouveau/dispnv50/atom.h | 6 +-
drivers/gpu/drm/nouveau/dispnv50/crc.c | 27 ++-
.../gpu/drm/nouveau/nvkm/subdev/clk/base.c | 6 +-
drivers/gpu/drm/panel/panel-simple.c | 3 +-
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
drivers/gpu/drm/stm/ltdc.c | 16 +-
drivers/gpu/drm/tilcdc/tilcdc_external.c | 8 +-
drivers/gpu/drm/vc4/vc4_hvs.c | 26 ++-
drivers/gpu/drm/vc4/vc4_txp.c | 8 +-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +
drivers/hid/hid-bigbenff.c | 6 +
drivers/hid/hid-elan.c | 2 -
drivers/hid/hid-led.c | 2 +-
drivers/hwtracing/coresight/coresight-core.c | 33 ++-
drivers/i2c/busses/i2c-at91-master.c | 11 +
drivers/i2c/busses/i2c-npcm7xx.c | 103 +++++---
drivers/i2c/busses/i2c-rcar.c | 15 +-
drivers/infiniband/hw/hfi1/file_ops.c | 2 +
drivers/infiniband/hw/hfi1/init.c | 2 +-
drivers/infiniband/hw/hfi1/sdma.c | 12 +-
drivers/infiniband/sw/rdmavt/qp.c | 6 +-
drivers/infiniband/sw/rxe/rxe_req.c | 2 +-
drivers/input/misc/sparcspkr.c | 1 +
drivers/input/touchscreen/stmfts.c | 16 +-
drivers/iommu/amd/init.c | 2 +-
drivers/iommu/intel/iommu.c | 2 +-
drivers/iommu/msm_iommu.c | 11 +-
drivers/iommu/mtk_iommu.c | 3 +-
drivers/irqchip/irq-armada-370-xp.c | 11 +-
drivers/irqchip/irq-aspeed-i2c-ic.c | 4 +-
drivers/irqchip/irq-aspeed-scu-ic.c | 4 +-
drivers/irqchip/irq-sni-exiu.c | 25 +-
drivers/irqchip/irq-xtensa-mx.c | 18 +-
drivers/macintosh/Kconfig | 6 +
drivers/macintosh/Makefile | 3 +-
drivers/macintosh/via-pmu.c | 2 +-
drivers/mailbox/mailbox.c | 19 +-
drivers/md/md-bitmap.c | 44 ++--
drivers/md/md.c | 18 +-
drivers/media/cec/core/cec-adap.c | 6 +-
drivers/media/i2c/ov7670.c | 1 -
drivers/media/pci/cx23885/cx23885-core.c | 6 +-
drivers/media/pci/cx25821/cx25821-core.c | 2 +-
drivers/media/platform/aspeed-video.c | 4 +-
drivers/media/platform/coda/coda-common.c | 35 ++-
drivers/media/platform/exynos4-is/fimc-is.c | 6 +-
.../platform/exynos4-is/fimc-isp-video.h | 2 +-
drivers/media/platform/qcom/venus/hfi.c | 3 +
drivers/media/platform/rockchip/rga/rga.c | 6 +-
drivers/media/platform/sti/delta/delta-v4l2.c | 6 +-
drivers/media/platform/vsp1/vsp1_rpf.c | 6 +-
drivers/media/rc/imon.c | 99 ++++----
drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 7 +-
drivers/media/usb/uvc/uvc_v4l2.c | 20 +-
drivers/memory/samsung/exynos5422-dmc.c | 5 +-
drivers/mfd/davinci_voicecodec.c | 6 +-
drivers/mfd/ipaq-micro.c | 2 +-
drivers/misc/ocxl/file.c | 2 +
drivers/mmc/host/jz4740_mmc.c | 20 ++
drivers/mmc/host/sdhci_am654.c | 23 +-
drivers/mtd/chips/cfi_cmdset_0002.c | 103 ++++----
.../mtd/nand/raw/cadence-nand-controller.c | 5 +-
drivers/mtd/nand/raw/denali_pci.c | 15 +-
drivers/mtd/spi-nor/core.c | 9 +
drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 +-
drivers/net/can/xilinx_can.c | 4 +-
drivers/net/dsa/mt7530.c | 14 +-
drivers/net/ethernet/broadcom/Makefile | 5 +
.../chelsio/inline_crypto/chtls/chtls_cm.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/fs_core.c | 10 +-
.../ethernet/mellanox/mlxsw/core_thermal.c | 2 +-
.../ethernet/mellanox/mlxsw/spectrum_dcb.c | 13 --
.../ethernet/mellanox/mlxsw/spectrum_trap.c | 2 +-
drivers/net/ethernet/sfc/ef10.c | 2 +-
.../stmicro/stmmac/stmmac_selftests.c | 15 +-
drivers/net/hyperv/netvsc_drv.c | 5 +-
drivers/net/ipa/ipa_endpoint.c | 4 +-
drivers/net/phy/micrel.c | 11 +-
drivers/net/wireguard/socket.c | 4 +-
drivers/net/wireless/ath/ath10k/mac.c | 20 +-
drivers/net/wireless/ath/ath11k/mac.c | 16 +-
drivers/net/wireless/ath/ath11k/spectral.c | 17 +-
.../net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 +-
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 8 +
drivers/net/wireless/ath/carl9170/tx.c | 3 +
drivers/net/wireless/broadcom/b43/phy_n.c | 2 +-
drivers/net/wireless/broadcom/b43legacy/phy.c | 2 +-
.../net/wireless/intel/ipw2x00/libipw_tx.c | 2 +-
.../net/wireless/intel/iwlwifi/mvm/power.c | 3 +
drivers/net/wireless/marvell/mwifiex/11h.c | 2 +
.../wireless/realtek/rtl818x/rtl8180/dev.c | 8 +-
drivers/net/wireless/realtek/rtlwifi/usb.c | 2 +-
drivers/nfc/st21nfca/se.c | 17 +-
drivers/nfc/st21nfca/st21nfca.h | 1 +
drivers/nvdimm/core.c | 9 -
drivers/nvdimm/security.c | 5 -
drivers/nvme/host/core.c | 2 +-
drivers/nvme/host/pci.c | 1 +
drivers/of/overlay.c | 4 +-
drivers/opp/of.c | 2 +-
.../pci/controller/cadence/pcie-cadence-ep.c | 3 +-
drivers/pci/controller/dwc/pci-imx6.c | 23 +-
.../pci/controller/dwc/pcie-designware-host.c | 3 +-
drivers/pci/controller/dwc/pcie-qcom.c | 9 +-
drivers/pci/controller/pcie-rockchip-ep.c | 3 +-
drivers/pci/pci.c | 12 +-
drivers/pci/pcie/aer.c | 7 +-
drivers/phy/qualcomm/phy-qcom-qmp.c | 11 +-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 18 ++
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 2 +-
drivers/pinctrl/renesas/core.c | 7 +-
drivers/pinctrl/renesas/pinctrl-rzn1.c | 10 +-
drivers/platform/chrome/cros_ec.c | 16 +-
drivers/platform/chrome/cros_ec_chardev.c | 2 +-
drivers/platform/chrome/cros_ec_proto.c | 50 +++-
drivers/platform/mips/cpu_hwmon.c | 127 ++++------
drivers/regulator/core.c | 7 +-
drivers/regulator/pfuze100-regulator.c | 2 +
drivers/regulator/qcom_smd-regulator.c | 35 ++-
drivers/scsi/dc395x.c | 15 +-
drivers/scsi/lpfc/lpfc_sli.c | 6 +-
drivers/scsi/megaraid.c | 2 +-
drivers/scsi/ufs/ti-j721e-ufs.c | 6 +-
drivers/scsi/ufs/ufs-qcom.c | 14 +-
drivers/scsi/ufs/ufshcd.c | 7 +-
drivers/soc/qcom/llcc-qcom.c | 1 +
drivers/soc/qcom/smp2p.c | 1 +
drivers/soc/qcom/smsm.c | 1 +
drivers/soc/ti/ti_sci_pm_domains.c | 2 +
drivers/spi/spi-fsl-qspi.c | 4 +
drivers/spi/spi-img-spfi.c | 2 +-
drivers/spi/spi-rspi.c | 15 +-
drivers/spi/spi-stm32-qspi.c | 3 +-
drivers/spi/spi-ti-qspi.c | 5 +-
drivers/staging/media/hantro/hantro_v4l2.c | 8 +-
drivers/staging/media/rkvdec/rkvdec-h264.c | 37 ++-
drivers/staging/media/rkvdec/rkvdec.c | 4 +-
drivers/target/target_core_device.c | 1 -
drivers/thermal/broadcom/bcm2711_thermal.c | 5 +-
drivers/thermal/broadcom/sr-thermal.c | 3 +
drivers/thermal/imx_sc_thermal.c | 6 +-
drivers/thermal/thermal_core.c | 42 ++--
drivers/tty/serial/pch_uart.c | 27 +--
drivers/usb/core/hcd.c | 29 ++-
drivers/usb/core/quirks.c | 3 +
drivers/usb/dwc3/gadget.c | 6 +-
drivers/usb/host/xhci-pci.c | 2 +
drivers/usb/serial/option.c | 2 +
drivers/vdpa/vdpa_sim/vdpa_sim.c | 5 +-
drivers/video/console/sticon.c | 5 +-
drivers/video/console/sticore.c | 32 ++-
drivers/video/fbdev/amba-clcd.c | 5 +-
drivers/video/fbdev/core/fbcon.c | 5 +-
drivers/video/fbdev/sticore.h | 3 +
drivers/video/fbdev/stifb.c | 4 +-
fs/afs/rxrpc.c | 8 +-
fs/binfmt_flat.c | 27 ++-
fs/btrfs/disk-io.c | 4 +-
fs/btrfs/volumes.c | 8 +-
fs/cifs/smb2inode.c | 2 -
fs/cifs/smb2ops.c | 2 +-
fs/dax.c | 3 +-
fs/dlm/lock.c | 11 +-
fs/dlm/plock.c | 12 +-
fs/ext4/ext4.h | 6 -
fs/ext4/namei.c | 54 +++--
fs/ext4/super.c | 24 +-
fs/f2fs/f2fs.h | 19 +-
fs/f2fs/file.c | 20 +-
fs/f2fs/inline.c | 29 ++-
fs/f2fs/inode.c | 19 +-
fs/f2fs/segment.c | 42 ++--
fs/f2fs/segment.h | 33 ++-
fs/f2fs/super.c | 6 +-
fs/fat/fatent.c | 7 +-
fs/gfs2/quota.c | 32 ++-
fs/iomap/buffered-io.c | 3 +-
fs/jfs/jfs_dmap.c | 3 +-
fs/nfs/file.c | 16 +-
fs/nfs/pnfs.c | 2 +
fs/nfs/write.c | 11 +-
fs/notify/mark.c | 6 +-
fs/ocfs2/dlmfs/userdlm.c | 16 +-
fs/proc/generic.c | 3 +
fs/proc/proc_net.c | 3 +
fs/xfs/libxfs/xfs_btree.c | 35 ++-
fs/xfs/xfs_dquot.c | 39 +++-
fs/xfs/xfs_iomap.c | 3 +
fs/xfs/xfs_log.c | 28 ++-
fs/xfs/xfs_log.h | 1 +
fs/xfs/xfs_mount.c | 3 +-
fs/xfs/xfs_symlink.c | 1 +
include/linux/bpf.h | 2 +
include/linux/efi.h | 2 +
include/linux/font.h | 2 +-
include/linux/gpio/driver.h | 12 +
include/linux/lsm_hook_defs.h | 4 +-
include/linux/lsm_hooks.h | 2 +-
include/linux/mailbox_controller.h | 1 +
include/linux/mtd/cfi.h | 1 +
include/linux/nodemask.h | 13 +-
include/linux/platform_data/cros_ec_proto.h | 3 +
include/linux/ptrace.h | 7 -
include/linux/security.h | 23 +-
include/linux/thermal.h | 2 +-
include/linux/usb/hcd.h | 2 +
include/net/bluetooth/hci.h | 16 +-
include/net/bluetooth/hci_core.h | 18 +-
include/net/flow.h | 10 +
include/net/if_inet6.h | 8 +
include/net/route.h | 6 +-
include/sound/jack.h | 1 +
include/trace/events/rxrpc.h | 2 +-
include/trace/events/vmscan.h | 4 +-
init/Kconfig | 5 +
ipc/mqueue.c | 14 ++
kernel/bpf/stackmap.c | 1 -
kernel/dma/debug.c | 2 +-
kernel/ptrace.c | 5 +-
kernel/rcu/Kconfig | 1 +
kernel/rcu/tasks.h | 3 +
kernel/scftorture.c | 5 +-
kernel/sched/fair.c | 8 +-
kernel/sched/pelt.h | 4 +-
kernel/sched/sched.h | 4 +-
kernel/trace/ftrace.c | 5 +-
kernel/trace/trace_events_hist.c | 3 +
mm/compaction.c | 2 +
mm/hugetlb.c | 9 +-
net/bluetooth/hci_conn.c | 8 +-
net/bluetooth/hci_core.c | 27 ++-
net/bluetooth/hci_debugfs.c | 8 +-
net/bluetooth/hci_event.c | 91 ++++----
net/bluetooth/hci_request.c | 221 ++++++++++++++----
net/bluetooth/hci_sock.c | 12 +-
net/bluetooth/l2cap_core.c | 10 +-
net/bluetooth/mgmt.c | 14 +-
net/bluetooth/mgmt_config.c | 10 +
net/bluetooth/sco.c | 21 +-
net/bluetooth/smp.c | 6 +-
net/core/dev.c | 8 +-
net/dccp/ipv4.c | 2 +-
net/dccp/ipv6.c | 6 +-
net/ipv4/icmp.c | 4 +-
net/ipv4/inet_connection_sock.c | 4 +-
net/ipv4/ip_output.c | 2 +-
net/ipv4/ping.c | 2 +-
net/ipv4/raw.c | 2 +-
net/ipv4/syncookies.c | 2 +-
net/ipv4/udp.c | 2 +-
net/ipv6/addrconf.c | 33 ++-
net/ipv6/af_inet6.c | 2 +-
net/ipv6/datagram.c | 2 +-
net/ipv6/icmp.c | 6 +-
net/ipv6/inet6_connection_sock.c | 4 +-
net/ipv6/netfilter/nf_reject_ipv6.c | 2 +-
net/ipv6/ping.c | 2 +-
net/ipv6/raw.c | 2 +-
net/ipv6/syncookies.c | 2 +-
net/ipv6/tcp_ipv6.c | 4 +-
net/ipv6/udp.c | 2 +-
net/l2tp/l2tp_ip6.c | 2 +-
net/mac80211/chan.c | 7 +-
net/mac80211/ieee80211_i.h | 5 +
net/mac80211/scan.c | 20 ++
net/netfilter/nf_synproxy_core.c | 2 +-
net/nfc/core.c | 1 +
net/rxrpc/ar-internal.h | 13 +-
net/rxrpc/call_event.c | 7 +-
net/rxrpc/conn_object.c | 2 +-
net/rxrpc/input.c | 31 ++-
net/rxrpc/output.c | 20 +-
net/rxrpc/recvmsg.c | 8 +-
net/rxrpc/sendmsg.c | 6 +
net/rxrpc/sysctl.c | 4 +-
net/sctp/input.c | 4 +-
net/smc/af_smc.c | 2 +-
net/wireless/nl80211.c | 1 +
net/wireless/reg.c | 4 +
net/xfrm/xfrm_state.c | 6 +-
scripts/faddr2line | 150 +++++++-----
security/integrity/ima/Kconfig | 14 +-
.../platform_certs/keyring_handler.h | 8 +
security/integrity/platform_certs/load_uefi.c | 33 +++
security/security.c | 17 +-
security/selinux/hooks.c | 4 +-
security/selinux/include/xfrm.h | 2 +-
security/selinux/xfrm.c | 13 +-
sound/core/jack.c | 34 ++-
sound/core/pcm_memory.c | 3 +-
sound/pci/hda/patch_realtek.c | 11 +
sound/soc/atmel/atmel-classd.c | 1 -
sound/soc/atmel/atmel-pdmic.c | 1 -
sound/soc/codecs/Kconfig | 2 -
sound/soc/codecs/max98090.c | 6 +-
sound/soc/codecs/rk3328_codec.c | 2 +-
sound/soc/codecs/rt5514.c | 2 +-
sound/soc/codecs/rt5645.c | 7 +-
sound/soc/codecs/tscs454.c | 12 +-
sound/soc/codecs/wm2000.c | 6 +-
sound/soc/fsl/imx-sgtl5000.c | 14 +-
sound/soc/intel/boards/bytcr_rt5640.c | 12 +
sound/soc/mediatek/mt2701/mt2701-wm8960.c | 9 +-
sound/soc/mediatek/mt8173/mt8173-max98090.c | 5 +-
sound/soc/mxs/mxs-saif.c | 1 +
sound/soc/samsung/aries_wm8994.c | 17 +-
sound/soc/samsung/arndale.c | 5 +-
sound/soc/samsung/littlemill.c | 5 +-
sound/soc/samsung/lowland.c | 5 +-
sound/soc/samsung/odroid.c | 4 +-
sound/soc/samsung/smdk_wm8994.c | 4 +-
sound/soc/samsung/smdk_wm8994pcm.c | 4 +-
sound/soc/samsung/snow.c | 9 +-
sound/soc/samsung/speyside.c | 5 +-
sound/soc/samsung/tm2_wm5110.c | 3 +-
sound/soc/samsung/tobermory.c | 5 +-
sound/soc/soc-dapm.c | 2 -
sound/soc/ti/j721e-evm.c | 44 +++-
sound/usb/midi.c | 3 +
tools/lib/bpf/libbpf.c | 20 +-
tools/perf/Makefile.config | 39 +++-
tools/perf/builtin-c2c.c | 6 +-
tools/perf/pmu-events/jevents.c | 2 +-
tools/perf/util/data.h | 1 +
tools/power/x86/turbostat/turbostat.c | 1 +
.../bpf/progs/btf_dump_test_case_syntax.c | 2 +-
tools/testing/selftests/cgroup/test_stress.sh | 2 +-
tools/testing/selftests/resctrl/fill_buf.c | 4 +-
477 files changed, 3474 insertions(+), 1907 deletions(-)
--
2.20.1
1
427

[PATCH openEuler-1.0-LTS 1/3] mm: sharepool: delete redundant check in __sp_remap_get_pfn
by Yongqiang Liu 29 Sep '22
by Yongqiang Liu 29 Sep '22
29 Sep '22
From: Guo Mengqi <guomengqi3(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5QETC
CVE: NA
--------------------------------
sp_make_share_k2u only supports vmalloc address now. Therefore, delete a
backup handle case.
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/share_pool.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/mm/share_pool.c b/mm/share_pool.c
index bd021da5a930..d49c066d1229 100644
--- a/mm/share_pool.c
+++ b/mm/share_pool.c
@@ -2860,11 +2860,11 @@ static int is_vmap_hugepage(unsigned long addr)
static unsigned long __sp_remap_get_pfn(unsigned long kva)
{
- unsigned long pfn;
+ unsigned long pfn = -EINVAL;
+
+ /* sp_make_share_k2u only support vmalloc address */
if (is_vmalloc_addr((void *)kva))
pfn = vmalloc_to_pfn((void *)kva);
- else
- pfn = virt_to_pfn(kva);
return pfn;
}
--
2.25.1
1
2
您好!
Kernel SIG 邀请您参加 2022-09-30 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.openEuler-22.09内核版本总结;
2.openEuler-22.03-LTS-SP1开始内核需求收集;
会议链接:https://us06web.zoom.us/j/83050040350?pwd=eXdPa28zb1orVmRvS0J4c2lPUnhpUT09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-09-30 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.openEuler-22.09内核版本总结;
2.openEuler-22.03-LTS-SP1开始内核需求收集;
You can join the meeting at https://us06web.zoom.us/j/83050040350?pwd=eXdPa28zb1orVmRvS0J4c2lPUnhpUT09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-22.09] xfrm: Reinject transport-mode packets through workqueue
by Zheng Zengkai 29 Sep '22
by Zheng Zengkai 29 Sep '22
29 Sep '22
From: Liu Jian <liujian56(a)huawei.com>
maillist inclusion
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5K0NK
CVE: NA
Reference: https://patchwork.kernel.org/project/netdevbpf/patch/20220924080157.247678-…
--------------------------------
The following warning is displayed when the tcp6-multi-diffip11 stress
test case of the LTP test suite is tested:
watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [ns-tcpserver:48198]
CPU: 0 PID: 48198 Comm: ns-tcpserver Kdump: loaded Not tainted 6.0.0-rc6+ #39
Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : des3_ede_encrypt+0x27c/0x460 [libdes]
lr : 0x3f
sp : ffff80000ceaa1b0
x29: ffff80000ceaa1b0 x28: ffff0000df056100 x27: ffff0000e51e5280
x26: ffff80004df75030 x25: ffff0000e51e4600 x24: 000000000000003b
x23: 0000000000802080 x22: 000000000000003d x21: 0000000000000038
x20: 0000000080000020 x19: 000000000000000a x18: 0000000000000033
x17: ffff0000e51e4780 x16: ffff80004e2d1448 x15: ffff80004e2d1248
x14: ffff0000e51e4680 x13: ffff80004e2d1348 x12: ffff80004e2d1548
x11: ffff80004e2d1848 x10: ffff80004e2d1648 x9 : ffff80004e2d1748
x8 : ffff80004e2d1948 x7 : 000000000bcaf83d x6 : 000000000000001b
x5 : ffff80004e2d1048 x4 : 00000000761bf3bf x3 : 000000007f1dd0a3
x2 : ffff0000e51e4780 x1 : ffff0000e3b9a2f8 x0 : 00000000db44e872
Call trace:
des3_ede_encrypt+0x27c/0x460 [libdes]
crypto_des3_ede_encrypt+0x1c/0x30 [des_generic]
crypto_cbc_encrypt+0x148/0x190
crypto_skcipher_encrypt+0x2c/0x40
crypto_authenc_encrypt+0xc8/0xfc [authenc]
crypto_aead_encrypt+0x2c/0x40
echainiv_encrypt+0x144/0x1a0 [echainiv]
crypto_aead_encrypt+0x2c/0x40
esp6_output_tail+0x1c8/0x5d0 [esp6]
esp6_output+0x120/0x278 [esp6]
xfrm_output_one+0x458/0x4ec
xfrm_output_resume+0x6c/0x1f0
xfrm_output+0xac/0x4ac
__xfrm6_output+0x130/0x270
xfrm6_output+0x60/0xec
ip6_xmit+0x2ec/0x5bc
inet6_csk_xmit+0xbc/0x10c
__tcp_transmit_skb+0x460/0x8c0
tcp_write_xmit+0x348/0x890
__tcp_push_pending_frames+0x44/0x110
tcp_rcv_established+0x3c8/0x720
tcp_v6_do_rcv+0xdc/0x4a0
tcp_v6_rcv+0xc24/0xcb0
ip6_protocol_deliver_rcu+0xf0/0x574
ip6_input_finish+0x48/0x7c
ip6_input+0x48/0xc0
ip6_rcv_finish+0x80/0x9c
xfrm_trans_reinject+0xb0/0xf4
tasklet_action_common.constprop.0+0xf8/0x134
tasklet_action+0x30/0x3c
__do_softirq+0x128/0x368
do_softirq+0xb4/0xc0
__local_bh_enable_ip+0xb0/0xb4
put_cpu_fpsimd_context+0x40/0x70
kernel_neon_end+0x20/0x40
sha1_base_do_update.constprop.0.isra.0+0x11c/0x140 [sha1_ce]
sha1_ce_finup+0x94/0x110 [sha1_ce]
crypto_shash_finup+0x34/0xc0
hmac_finup+0x48/0xe0
crypto_shash_finup+0x34/0xc0
shash_digest_unaligned+0x74/0x90
crypto_shash_digest+0x4c/0x9c
shash_ahash_digest+0xc8/0xf0
shash_async_digest+0x28/0x34
crypto_ahash_digest+0x48/0xcc
crypto_authenc_genicv+0x88/0xcc [authenc]
crypto_authenc_encrypt+0xd8/0xfc [authenc]
crypto_aead_encrypt+0x2c/0x40
echainiv_encrypt+0x144/0x1a0 [echainiv]
crypto_aead_encrypt+0x2c/0x40
esp6_output_tail+0x1c8/0x5d0 [esp6]
esp6_output+0x120/0x278 [esp6]
xfrm_output_one+0x458/0x4ec
xfrm_output_resume+0x6c/0x1f0
xfrm_output+0xac/0x4ac
__xfrm6_output+0x130/0x270
xfrm6_output+0x60/0xec
ip6_xmit+0x2ec/0x5bc
inet6_csk_xmit+0xbc/0x10c
__tcp_transmit_skb+0x460/0x8c0
tcp_write_xmit+0x348/0x890
__tcp_push_pending_frames+0x44/0x110
tcp_push+0xb4/0x14c
tcp_sendmsg_locked+0x71c/0xb64
tcp_sendmsg+0x40/0x6c
inet6_sendmsg+0x4c/0x80
sock_sendmsg+0x5c/0x6c
__sys_sendto+0x128/0x15c
__arm64_sys_sendto+0x30/0x40
invoke_syscall+0x50/0x120
el0_svc_common.constprop.0+0x170/0x194
do_el0_svc+0x38/0x4c
el0_svc+0x28/0xe0
el0t_64_sync_handler+0xbc/0x13c
el0t_64_sync+0x180/0x184
Get softirq info by bcc tool:
./softirqs -NT 10
Tracing soft irq event time... Hit Ctrl-C to end.
15:34:34
SOFTIRQ TOTAL_nsecs
block 158990
timer 20030920
sched 46577080
net_rx 676746820
tasklet 9906067650
15:34:45
SOFTIRQ TOTAL_nsecs
block 86100
sched 38849790
net_rx 676532470
timer 1163848790
tasklet 9409019620
15:34:55
SOFTIRQ TOTAL_nsecs
sched 58078450
net_rx 475156720
timer 533832410
tasklet 9431333300
The tasklet software interrupt takes too much time. Therefore, the
xfrm_trans_reinject executor is changed from tasklet to workqueue. Add add
spin lock to protect the queue. This reduces the processing flow of the
tcp_sendmsg function in this scenario.
Fixes: acf568ee859f0 ("xfrm: Reinject transport-mode packets through tasklet")
Signed-off-by: Liu Jian <liujian56(a)huawei.com>
Signed-off-by: Steffen Klassert <steffen.klassert(a)secunet.com>
Conflicts:
net/xfrm/xfrm_input.c
Signed-off-by: Liu Jian <liujian56(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
net/xfrm/xfrm_input.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c
index 61e6220ddd5a..66e4d3395f82 100644
--- a/net/xfrm/xfrm_input.c
+++ b/net/xfrm/xfrm_input.c
@@ -24,7 +24,8 @@
#include "xfrm_inout.h"
struct xfrm_trans_tasklet {
- struct tasklet_struct tasklet;
+ struct work_struct work;
+ spinlock_t queue_lock;
struct sk_buff_head queue;
};
@@ -760,18 +761,22 @@ int xfrm_input_resume(struct sk_buff *skb, int nexthdr)
}
EXPORT_SYMBOL(xfrm_input_resume);
-static void xfrm_trans_reinject(unsigned long data)
+static void xfrm_trans_reinject(struct work_struct *work)
{
- struct xfrm_trans_tasklet *trans = (void *)data;
+ struct xfrm_trans_tasklet *trans = container_of(work, struct xfrm_trans_tasklet, work);
struct sk_buff_head queue;
struct sk_buff *skb;
__skb_queue_head_init(&queue);
+ spin_lock_bh(&trans->queue_lock);
skb_queue_splice_init(&trans->queue, &queue);
+ spin_unlock_bh(&trans->queue_lock);
+ local_bh_disable();
while ((skb = __skb_dequeue(&queue)))
XFRM_TRANS_SKB_CB(skb)->finish(XFRM_TRANS_SKB_CB(skb)->net,
NULL, skb);
+ local_bh_enable();
}
int xfrm_trans_queue_net(struct net *net, struct sk_buff *skb,
@@ -789,8 +794,10 @@ int xfrm_trans_queue_net(struct net *net, struct sk_buff *skb,
XFRM_TRANS_SKB_CB(skb)->finish = finish;
XFRM_TRANS_SKB_CB(skb)->net = net;
+ spin_lock_bh(&trans->queue_lock);
__skb_queue_tail(&trans->queue, skb);
- tasklet_schedule(&trans->tasklet);
+ spin_unlock_bh(&trans->queue_lock);
+ schedule_work(&trans->work);
return 0;
}
EXPORT_SYMBOL(xfrm_trans_queue_net);
@@ -817,8 +824,8 @@ void __init xfrm_input_init(void)
struct xfrm_trans_tasklet *trans;
trans = &per_cpu(xfrm_trans_tasklet, i);
+ spin_lock_init(&trans->queue_lock);
__skb_queue_head_init(&trans->queue);
- tasklet_init(&trans->tasklet, xfrm_trans_reinject,
- (unsigned long)trans);
+ INIT_WORK(&trans->work, xfrm_trans_reinject);
}
}
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS] Revert "cifs: fix double free race when mount fails in cifs_get_root()"
by Yongqiang Liu 29 Sep '22
by Yongqiang Liu 29 Sep '22
29 Sep '22
From: Luo Meng <luomeng12(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5TMYD
CVE: NA
--------------------------------
This reverts commit 7959a47042a6c1ec5a97966cf3c04ee972b55348.
Commit 2fe0e281f7ad (cifs: fix double free race when mount fails
in cifs_get_root()) fixes a double free. However there is no such
issue on 4.19 because it will return after cifs_cleanup_volume_info().
Since merge this patch, cifs_cleanup_volume_info() is skipped, leading
to a memory leak.
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/cifs/cifsfs.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index baa1713d6695..bc906fcf3f6d 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -779,7 +779,6 @@ cifs_smb3_do_mount(struct file_system_type *fs_type,
out_super:
deactivate_locked_super(sb);
- return root;
out:
cifs_cleanup_volume_info(volume_info);
return root;
--
2.25.1
1
0
Xingui Yang (3):
scsi: hisi_sas: Modify v3 HW ATA completion process when SATA disk is
in error status
scsi: hisi_sas: Enable force phy when SATA disk directly connected
scsi: hisi_sas: Release resource directly in hisi_sas_abort_task()
when NCQ error
drivers/scsi/hisi_sas/hisi_sas.h | 1 +
drivers/scsi/hisi_sas/hisi_sas_main.c | 20 +++++++++----
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 10 +++++--
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 41 ++++++++++++++++++++++++--
4 files changed, 61 insertions(+), 11 deletions(-)
--
2.25.1
1
3

[PATCH openEuler-1.0-LTS] sched: Fix invalid free for tsk->se.dyn_affi_stats
by Yongqiang Liu 28 Sep '22
by Yongqiang Liu 28 Sep '22
28 Sep '22
From: Hui Tang <tanghui20(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5TIOZ
CVE: NA
--------------------------------
BUG: KASAN: double-free or invalid-free in sched_prefer_cpus_free[...]
Freed by task 0:
save_stack mm/kasan/kasan.c:448 [inline]
set_track mm/kasan/kasan.c:460 [inline]
__kasan_slab_free+0x120/0x228 mm/kasan/kasan.c:521
kasan_slab_free+0x10/0x18 mm/kasan/kasan.c:528
slab_free_hook mm/slub.c:1397 [inline]
slab_free_freelist_hook mm/slub.c:1425 [inline]
slab_free mm/slub.c:3004 [inline]
kfree+0x84/0x250 mm/slub.c:3965
sched_prefer_cpus_free+0x58/0x78 kernel/sched/core.c:7219
free_task+0xb0/0xe8 kernel/fork.c:463
__delayed_free_task+0x24/0x30 kernel/fork.c:1716
__rcu_reclaim kernel/rcu/rcu.h:236 [inline]
rcu_do_batch+0x200/0x5e0 kernel/rcu/tree.c:2584
invoke_rcu_callbacks kernel/rcu/tree.c:2897 [inline]
__rcu_process_callbacks kernel/rcu/tree.c:2864 [inline]
rcu_process_callbacks+0x470/0xb60 kernel/rcu/tree.c:2881
__do_softirq+0x2d0/0xba0 kernel/softirq.c:292
Add init of 'tsk->se.dyn_affi_stats == NULL' in dup_task_struct().
Fixes: ebca52abe099c ("sched: Add statistics for scheduler dynamic affinity")
Signed-off-by: Hui Tang <tanghui20(a)huawei.com>
Reviewed-by: Zhang Qiao <zhangqiao22(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/fork.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/kernel/fork.c b/kernel/fork.c
index 4207d5e5958b..b5453a26655e 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -893,6 +893,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node)
#ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY
tsk->prefer_cpus = NULL;
+ tsk->se.dyn_affi_stats = NULL;
#endif
setup_thread_stack(tsk, orig);
--
2.25.1
1
0

28 Sep '22
From: Qi Zheng <zhengqi.arch(a)bytedance.com>
mainline inclusion
from mainline-v5.19-rc1
commit 3f913fc5f9745613088d3c569778c9813ab9c129
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5T8FD
CVE: NA
--------------------------------
We expect no warnings to be issued when we specify __GFP_NOWARN, but
currently in paths like alloc_pages() and kmalloc(), there are still some
warnings printed, fix it.
But for some warnings that report usage problems, we don't deal with them.
If such warnings are printed, then we should fix the usage problems.
Such as the following case:
WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1));
[zhengqi.arch(a)bytedance.com: v2]
Link: https://lkml.kernel.org/r/20220511061951.1114-1-zhengqi.arch@bytedance.com
Link: https://lkml.kernel.org/r/20220510113809.80626-1-zhengqi.arch@bytedance.com
Signed-off-by: Qi Zheng <zhengqi.arch(a)bytedance.com>
Cc: Akinobu Mita <akinobu.mita(a)gmail.com>
Cc: Vlastimil Babka <vbabka(a)suse.cz>
Cc: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Cc: Jiri Slaby <jirislaby(a)kernel.org>
Cc: Steven Rostedt (Google) <rostedt(a)goodmis.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
Conflict:
mm/internal.h
mm/page_alloc.c
Signed-off-by: Ye Weihua <yeweihua4(a)huawei.com>
Reviewed-by: Kuohai Xu <xukuohai(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
include/linux/fault-inject.h | 2 ++
lib/fault-inject.c | 3 +++
mm/failslab.c | 3 +++
mm/internal.h | 15 +++++++++++++++
mm/page_alloc.c | 16 +++++++++-------
5 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/include/linux/fault-inject.h b/include/linux/fault-inject.h
index 7e6c77740413..4f00068354c1 100644
--- a/include/linux/fault-inject.h
+++ b/include/linux/fault-inject.h
@@ -20,6 +20,7 @@ struct fault_attr {
atomic_t space;
unsigned long verbose;
bool task_filter;
+ bool no_warn;
unsigned long stacktrace_depth;
unsigned long require_start;
unsigned long require_end;
@@ -39,6 +40,7 @@ struct fault_attr {
.ratelimit_state = RATELIMIT_STATE_INIT_DISABLED, \
.verbose = 2, \
.dname = NULL, \
+ .no_warn = false, \
}
#define DECLARE_FAULT_ATTR(name) struct fault_attr name = FAULT_ATTR_INITIALIZER
diff --git a/lib/fault-inject.c b/lib/fault-inject.c
index cf7b129b0b2b..af8b0ae64a85 100644
--- a/lib/fault-inject.c
+++ b/lib/fault-inject.c
@@ -40,6 +40,9 @@ EXPORT_SYMBOL_GPL(setup_fault_attr);
static void fail_dump(struct fault_attr *attr)
{
+ if (attr->no_warn)
+ return;
+
if (attr->verbose > 0 && __ratelimit(&attr->ratelimit_state)) {
printk(KERN_NOTICE "FAULT_INJECTION: forcing a failure.\n"
"name %pd, interval %lu, probability %lu, "
diff --git a/mm/failslab.c b/mm/failslab.c
index 215cb1ea169d..f4d829f95454 100644
--- a/mm/failslab.c
+++ b/mm/failslab.c
@@ -30,6 +30,9 @@ bool __should_failslab(struct kmem_cache *s, gfp_t gfpflags)
if (failslab.cache_filter && !(s->flags & SLAB_FAILSLAB))
return false;
+ if (gfpflags & __GFP_NOWARN)
+ failslab.attr.no_warn = true;
+
return should_fail(&failslab.attr, s->object_size);
}
diff --git a/mm/internal.h b/mm/internal.h
index c94de10189eb..1b861446c751 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -36,6 +36,21 @@
/* Do not use these with a slab allocator */
#define GFP_SLAB_BUG_MASK (__GFP_DMA32|__GFP_HIGHMEM|~__GFP_BITS_MASK)
+/*
+ * Different from WARN_ON_ONCE(), no warning will be issued
+ * when we specify __GFP_NOWARN.
+ */
+#define WARN_ON_ONCE_GFP(cond, gfp) ({ \
+ static bool __section(".data.once") __warned; \
+ int __ret_warn_once = !!(cond); \
+ \
+ if (unlikely(!(gfp & __GFP_NOWARN) && __ret_warn_once && !__warned)) { \
+ __warned = true; \
+ WARN_ON(1); \
+ } \
+ unlikely(__ret_warn_once); \
+})
+
void page_writeback_init(void);
vm_fault_t do_swap_page(struct vm_fault *vmf);
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 44d286286dbb..cede3ebe7353 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3253,6 +3253,9 @@ static bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
(gfp_mask & __GFP_DIRECT_RECLAIM))
return false;
+ if (gfp_mask & __GFP_NOWARN)
+ fail_page_alloc.attr.no_warn = true;
+
return should_fail(&fail_page_alloc.attr, 1 << order);
}
@@ -3743,7 +3746,8 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
goto out;
/* Exhausted what can be done so it's blame time */
- if (out_of_memory(&oc) || WARN_ON_ONCE(gfp_mask & __GFP_NOFAIL)) {
+ if (out_of_memory(&oc) ||
+ WARN_ON_ONCE_GFP(gfp_mask & __GFP_NOFAIL, gfp_mask)) {
*did_some_progress = 1;
/*
@@ -4534,7 +4538,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
* All existing users of the __GFP_NOFAIL are blockable, so warn
* of any new users that actually require GFP_NOWAIT
*/
- if (WARN_ON_ONCE(!can_direct_reclaim))
+ if (WARN_ON_ONCE_GFP(!can_direct_reclaim, gfp_mask))
goto fail;
/*
@@ -4542,7 +4546,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
* because we cannot reclaim anything and only can loop waiting
* for somebody to do a work for us
*/
- WARN_ON_ONCE(current->flags & PF_MEMALLOC);
+ WARN_ON_ONCE_GFP(current->flags & PF_MEMALLOC, gfp_mask);
/*
* non failing costly orders are a hard requirement which we
@@ -4550,7 +4554,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
* so that we can identify them and convert them to something
* else.
*/
- WARN_ON_ONCE(order > PAGE_ALLOC_COSTLY_ORDER);
+ WARN_ON_ONCE_GFP(order > PAGE_ALLOC_COSTLY_ORDER, gfp_mask);
/*
* Help non-failing allocations by giving them access to memory
@@ -4732,10 +4736,8 @@ __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid,
* There are several places where we assume that the order value is sane
* so bail out early if the request is out of bound.
*/
- if (unlikely(order >= MAX_ORDER)) {
- WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN));
+ if (WARN_ON_ONCE_GFP(order >= MAX_ORDER, gfp_mask))
return NULL;
- }
prepare_before_alloc(&gfp_mask);
--
2.25.1
1
5

[PATCH openEuler-5.10-LTS 01/17] mm: Force TLB flush for PFNMAP mappings before unlink_file_vma()
by Zheng Zengkai 27 Sep '22
by Zheng Zengkai 27 Sep '22
27 Sep '22
From: Jann Horn <jannh(a)google.com>
stable inclusion
from stable-v5.10.142
commit 895428ee124ad70b9763259308354877b725c31d
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PE9S
CVE: CVE-2022-39188
Reference:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=…
--------------------------------
commit b67fbebd4cf980aecbcc750e1462128bffe8ae15 upstream.
Some drivers rely on having all VMAs through which a PFN might be
accessible listed in the rmap for correctness.
However, on X86, it was possible for a VMA with stale TLB entries
to not be listed in the rmap.
This was fixed in mainline with
commit b67fbebd4cf9 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas"),
but that commit relies on preceding refactoring in
commit 18ba064e42df3 ("mmu_gather: Let there be one tlb_{start,end}_vma()
implementation") and commit 1e9fdf21a4339 ("mmu_gather: Remove per arch
tlb_{start,end}_vma()").
This patch provides equivalent protection without needing that
refactoring, by forcing a TLB flush between removing PTEs in
unmap_vmas() and the call to unlink_file_vma() in free_pgtables().
[This is a stable-specific rewrite of the upstream commit!]
Signed-off-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: ze zuo <zuoze1(a)huawei.com>
Reviewed-by: Chen Wandun <chenwandun(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
mm/mmap.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/mm/mmap.c b/mm/mmap.c
index 5489d70db84e..7fba5d89ecde 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2962,6 +2962,18 @@ static void unmap_region(struct mm_struct *mm,
tlb_gather_mmu(&tlb, mm, start, end);
update_hiwater_rss(mm);
unmap_vmas(&tlb, vma, start, end);
+
+ /*
+ * Ensure we have no stale TLB entries by the time this mapping is
+ * removed from the rmap.
+ * Note that we don't have to worry about nested flushes here because
+ * we're holding the mm semaphore for removing the mapping - so any
+ * concurrent flush in this region has to be coming through the rmap,
+ * and we synchronize against that using the rmap lock.
+ */
+ if ((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0)
+ tlb_flush_mmu(&tlb);
+
free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
next ? next->vm_start : USER_PGTABLES_CEILING);
tlb_finish_mmu(&tlb, start, end);
--
2.20.1
1
16
Backport 5.10.121 LTS patches from upstream.
git cherry-pick v5.10.120..v5.10.121~1 -s
Already merged(-13):
94845fc422f9 inotify: show inotify mask flags in proc fdinfo
9a9dc60da79a fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according
skipped pages
dd887f83ea54 ext4: fix use-after-free in ext4_rename_dir_prepare
adf490083ca5 ext4: fix warning in ext4_handle_inode_extension
1b061af03764 ext4: fix bug_on in ext4_writepages
4fd58b5cf118 ext4: fix bug_on in __es_tree_search
46c2b5f81c9e bcache: improve multithreaded bch_btree_check()
3f686b249b1c bcache: improve multithreaded bch_sectors_dirty_init()
0cf22f234ebc bcache: remove incremental dirty sector counting for
bch_sectors_dirty_init()
59afd4f28790 bcache: avoid journal no-space deadlock by reserving 1 journal
bucket
893cf5f68a4c xfs: fix chown leaking delalloc quota blocks when fssetxattr fails
e3ffe7387c70 xfs: force log and push AIL to clear pinned inodes when aborting
mount
47c1680e51ef md: bcache: check the return value of kzalloc() in
detached_dev_do_request()
Rejected(-3):
hinic driver drops related file in the patch:
33411945c9ad net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init
dc7753d60097 net: huawei: hinic: Use devm_kcalloc() instead of devm_kzalloc()
8096e2d7c0f9 hinic: Avoid some over memory allocation
Context conflict:
643ceee253a4 xfs: sync lazy sb accounting on quiesce of read-only mounts
80b0a2b3dfea bfq: Remove pointless bfq_init_rq() calls
a67100f42665 ext4: only allow test_dummy_encryption when supported
KABI changed(-2):
147a376c1afe sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
61bbbde9b6d2 drm: fix EDID struct for old ARM OABI format
7a55a5159dae scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac()
KABI fixed(+1):
sched/fair: Fix kabi broken in struct cfs_rq
Defered(-5):
9834b13e8b96 tty: fix deadlock caused by calling printk() under tty_port->lock
70a7dea84639 bfq: Track whether bfq_group is still online
0285718e2825 bfq: Get rid of __bio_blkcg() usage
51f724bffa34 bfq: Make sure bfqg for which we are queueing requests is online
c26ccbaeb8d8 kexec_file: drop weak attribute from
arch_kexec_apply_relocations[_add]
Total patches: 449 - 13 - 3 - 2 + 1 - 5 = 427
Abhinav Kumar (1):
drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path
Abhishek Kumar (1):
ath10k: skip ath10k_halt during suspend for driver state RESTARTING
Aditya Garg (1):
efi: Do not import certificates from UEFI Secure Boot for T2 Macs
Aidan MacDonald (1):
mmc: jz4740: Apply DMA engine limits to maximum segment size
Akira Yokosawa (1):
docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0
Albert Wang (1):
usb: dwc3: gadget: Move null pinter check to proper place
Alex Elder (2):
net: ipa: fix page free in ipa_endpoint_trans_release()
net: ipa: fix page free in ipa_endpoint_replenish_one()
Alexander Aring (2):
dlm: fix plock invalid read
dlm: fix missing lkb refcount handling
Alexander Wetzel (1):
rtl818x: Prevent using not initialized queues
Alexandre Ghiti (1):
riscv: Initialize thread pointer before calling C functions
Alexandru Elisei (1):
arm64: compat: Do not treat syscall number as ESR_ELx for a bad
syscall
Alexey Dobriyan (1):
proc: fix dentry/inode overinstantiating under /proc/${pid}/net
Alexey Khoroshilov (1):
ASoC: max98090: Move check for invalid values before casting in
max98090_put_enab_tlv()
Alice Wong (1):
drm/amdgpu/ucode: Remove firmware load type check in
amdgpu_ucode_free_bo
Amadeusz Sławiński (1):
ALSA: jack: Access input_dev under mutex
Amelie Delaunay (3):
dmaengine: stm32-mdma: remove GISR1 register
dmaengine: stm32-mdma: rework interrupt handler
dmaengine: stm32-mdma: fix chan initialization in
stm32_mdma_irq_handler()
Amir Goldstein (1):
fsnotify: fix wrong lockdep annotations
Ammar Faizi (2):
x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails
x86/delay: Fix the wrong asm constraint in delay_loop()
Andre Przywara (1):
ARM: dts: suniv: F1C100: fix watchdog compatible
Andreas Gruenbacher (1):
iomap: iomap_write_failed fix
Andrii Nakryiko (2):
libbpf: Don't error out on CO-RE relos for overriden weak subprogs
libbpf: Fix logic for finding matching program for CO-RE relocation
Archie Pusaka (2):
Bluetooth: use inclusive language in HCI role comments
Bluetooth: use inclusive language when filtering devices
Arnd Bergmann (2):
drbd: fix duplicate array initializer
ARM: pxa: maybe fix gpio lookup tables
Baochen Qiang (1):
ath11k: Don't check arvif->is_started before sending management frames
Bart Van Assche (1):
scsi: ufs: qcom: Fix ufs_qcom_resume()
Bhaskar Chowdhury (1):
Bluetooth: L2CAP: Rudimentary typo fixes
Biju Das (1):
spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA
direction
Bjorn Andersson (1):
soc: qcom: llcc: Add MODULE_DEVICE_TABLE()
Bjorn Helgaas (1):
PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
Björn Ardö (1):
mailbox: forward the hrtimer if not queued and under a lock
Bob Peterson (1):
gfs2: use i_lock spin_lock for inode qadata
Borislav Petkov (1):
x86/microcode: Add explicit CPU vendor dependency
Brian Foster (3):
xfs: sync lazy sb accounting on quiesce of read-only mounts
xfs: restore shutdown check in mapped write fault path
xfs: consider shutdown in bmapbt cursor delete assert
Brian Norris (2):
PM / devfreq: rk3399_dmc: Disable edev on remove()
drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX
Cai Huoqing (1):
media: staging: media: rkvdec: Make use of the helper function
devm_platform_ioremap_resource()
Carl Yin(殷张成) (1):
USB: serial: option: add Quectel BG95 modem
Chao Yu (7):
f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count()
f2fs: fix to do sanity check on block address in f2fs_do_zero_range()
f2fs: fix to clear dirty inode in f2fs_evict_inode()
f2fs: fix deadloop in foreground GC
f2fs: fix to do sanity check on total_data_blocks
f2fs: fix fallocate to use file_modified to update permissions
consistently
f2fs: fix to do sanity check for inline inode
Charles Keepax (3):
ASoC: tscs454: Add endianness flag in snd_soc_component_driver
ASoC: atmel-pdmic: Remove endianness flag on pdmic component
ASoC: atmel-classd: Remove endianness flag on class d component
Chen-Tsung Hsieh (1):
mtd: spi-nor: core: Check written SR value in
spi_nor_write_16bit_sr_and_check()
Chen-Yu Tsai (1):
media: hantro: Empty encoder capture buffers by default
Chengming Zhou (1):
sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
Christoph Hellwig (2):
target: remove an incorrect unmap zeroes data deduction
virtio_blk: fix the discard_granularity and discard_alignment queue
limits
Christophe JAILLET (4):
media: aspeed: Fix an error handling path in aspeed_video_probe()
memory: samsung: exynos5422-dmc: Avoid some over memory allocation
drivers/base/memory: fix an unlikely reference counting issue in
__add_memory_block()
dmaengine: idxd: Fix the error handling path in idxd_cdev_register()
Christophe de Dinechin (1):
nodemask.h: fix compilation error with GCC12
Chuanhong Guo (1):
arm: mediatek: select arch timer for mt7629
Colin Ian King (2):
ALSA: pcm: Check for null pointer of pointer substream before
dereferencing it
selftests/resctrl: Fix null pointer dereference on open failed
Corentin Labbe (3):
crypto: marvell/cesa - ECB does not IV
crypto: sun8i-ss - rework handling of IV
crypto: sun8i-ss - handle zero sized sg
Corey Minyard (2):
ipmi:ssif: Check for NULL msg when handling events and messages
ipmi: Fix pr_fmt to avoid compilation issues
Cristian Marussi (1):
firmware: arm_scmi: Fix list protocols enumeration in the base
protocol
Dan Carpenter (5):
ath9k_htc: fix potential out of bounds access with invalid
rxstatus->rs_keyix
drm/msm: return an error pointer in msm_gem_prime_get_sg_table()
PCI: cadence: Fix find_first_zero_bit() limit
PCI: rockchip: Fix find_first_zero_bit() limit
OPP: call of_node_put() on error path in _bandwidth_supported()
Dan Williams (2):
nvdimm: Fix firmware activation deadlock scenarios
nvdimm: Allow overwrite in the presence of disabled dimms
Daniel Lezcano (2):
thermal/drivers/core: Use a char pointer for the cooling device name
thermal/core: Fix memory leak in the error path
Daniel Thompson (1):
irqchip/exiu: Fix acknowledgment of edge triggered interrupts
Daniel Vetter (1):
fbcon: Consistently protect deferred_takeover with console_lock()
Darrick J. Wong (1):
xfs: fix incorrect root dquot corruption error when switching
group/project quota types
Dave Airlie (1):
drm/amdgpu/cs: make commands with 0 chunks illegal behaviour.
Dave Chinner (1):
xfs: assert in xfs_btree_del_cursor should take into account error
David Howells (7):
rxrpc: Return an error to sendmsg if call failed
rxrpc, afs: Fix selection of abort codes
rxrpc: Fix listen() setting the bar too high for the prealloc rings
rxrpc: Don't try to resend the request if we're receiving the reply
rxrpc: Fix overlapping ACK accounting
rxrpc: Don't let ack.previousPacket regress
rxrpc: Fix decision on when to generate an IDLE ACK
Dennis Dalessandro (1):
RDMA/hfi1: Fix potential integer multiplication overflow errors
Dimitri John Ledkov (1):
cfg80211: declare MODULE_FIRMWARE for regulatory.db
Dinh Nguyen (1):
dt-bindings: gpio: altera: correct interrupt-cells
Dmitry Baryshkov (2):
drm/msm/dsi: fix error checks and return values for DSI xmit functions
drm/msm: add missing include to msm_drv.c
Dmitry Torokhov (1):
Input: stmfts - do not leave device disabled in stmfts_input_open
Dongliang Mu (3):
HID: bigben: fix slab-out-of-bounds Write in bigben_probe
rtlwifi: Use pr_warn instead of WARN_ONCE
media: ov7670: remove ov7670_power_off from ov7670_remove
Douglas Miller (2):
RDMA/hfi1: Prevent panic when SDMA is disabled
RDMA/hfi1: Prevent use of lock before it is initialized
Duoming Zhou (1):
NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx
Emmanuel Grumbach (1):
iwlwifi: mvm: fix assert 1F04 upon reconfig
Eric Biggers (2):
ext4: reject the 'commit' option on ext2 filesystems
ext4: only allow test_dummy_encryption when supported
Eric Dumazet (2):
net: remove two BUG() from skb_checksum_help()
sctp: read sk->sk_bound_dev_if once in sctp_rcv()
Eric W. Biederman (3):
ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP
ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
Eugenio Pérez (1):
vdpasim: allow to enable a vq repeatedly
Evan Quan (1):
drm/amd/pm: fix the compile warning
Fabio Estevam (1):
net: phy: micrel: Allow probing without .driver_data
Felix Fietkau (1):
mac80211: upgrade passive scan to active scan on DFS channels after
beacon rx
Finn Thain (1):
macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled
Francesco Dolcini (1):
PCI: imx6: Fix PERST# start-up sequence
GUO Zihua (1):
ima: remove the IMA_TEMPLATE Kconfig option
Geert Uytterhoeven (2):
m68k: atari: Make Atari ROM port I/O write macros return void
m68k: math-emu: Fix dependencies of math emulation support
Gilad Ben-Yossef (1):
crypto: ccree - use fine grained DMA mapping dir
Guenter Roeck (2):
platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls
MIPS: Loongson: Use hwmon_device_register_with_groups() to register
hwmon
Guo Ren (1):
csky: patch_text: Fixup last cpu should be master
Gustavo A. R. Silva (1):
net: stmmac: selftests: Use kcalloc() instead of kzalloc()
Hangyu Hua (3):
media: rga: fix possible memory leak in rga_probe
drm: msm: fix possible memory leak in mdp5_crtc_cursor_set()
misc: ocxl: fix possible double free in ocxl_file_register_afu
Hans Verkuil (1):
media: cec-adap.c: fix is_configuring state
Hans de Goede (1):
ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408
Haowen Bai (4):
b43legacy: Fix assigning negative value to unsigned variable
b43: Fix assigning negative value to unsigned variable
ipw2x00: Fix potential NULL dereference in libipw_xmit()
sfc: ef10: Fix assigning negative value to unsigned variable
Haren Myneni (1):
powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr
Hari Bathini (2):
powerpc/fadump: Fix fadump to work with a different endian capture
kernel
powerpc/fadump: fix PT_LOAD segment for boot memory area
Hari Chandrakanthan (1):
ath11k: disable spectral scan during spectral deinit
Heiko Carstens (1):
s390/preempt: disable __preempt_count_add() optimization for
PROFILE_ALL_BRANCHES
Helge Deller (2):
parisc/stifb: Implement fb_is_primary_device()
parisc/stifb: Keep track of hardware path of graphics card
Heming Zhao (1):
md/bitmap: don't set sb values if can't pass sanity check
Howard Chung (1):
Bluetooth: Interleave with allowlist scan
Jaegeuk Kim (1):
f2fs: don't need inode lock for system hidden quota
Jagan Teki (1):
drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H
Jakob Koschel (1):
f2fs: fix dereference of stale list iterator after loop body
Jakub Kicinski (2):
eth: tg3: silence the GCC 12 array-bounds warning
net: stmmac: fix out-of-bounds access in a selftest
James Clark (1):
perf tools: Use Python devtools for version autodetection rather than
runtime
James Smart (1):
scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp()
Jan Kara (8):
bfq: Split shared queues on move between cgroups
bfq: Update cgroup information before merging bio
ext4: verify dir block before splitting it
ext4: avoid cycles in directory h-tree
bfq: Avoid merging queues with different parents
bfq: Drop pointless unlock-lock pair
bfq: Remove pointless bfq_init_rq() calls
block: fix bio_clone_blkg_association() to associate with proper
blkcg_gq
Jan Kiszka (1):
efi: Add missing prototype for efi_capsule_setup_info
Jani Nikula (2):
drm/edid: fix invalid EDID extension block filtering
drm/i915/dsi: fix VBT send packet port selection for ICL+
Janusz Krzysztofik (1):
ARM: OMAP1: clock: Fix UART rate reporting algorithm
Jason A. Donenfeld (2):
openrisc: start CPU timer early in boot
Revert "random: use static branch for crng_ready()"
Jeffrey Mitchell (1):
xfs: set inode size after creating symlink
Jessica Zhang (2):
drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is
detected
drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is
detected
Jia-Wei Chang (1):
cpufreq: mediatek: Use module_init and add module_exit
Jiantao Zhang (1):
PCI: dwc: Fix setting error return on MSI DMA mapping failure
Jiasheng Jiang (1):
drm: mali-dp: potential dereference of null pointer
Jiri Slaby (1):
serial: pch: don't overwrite xmit->buf[0] by x_char
Joerg Roedel (1):
iommu/amd: Increase timeout waiting for GA log enablement
Johan Hovold (4):
PCI: qcom: Fix runtime PM imbalance on probe errors
PCI: qcom: Fix unbalanced PHY init on probe errors
phy: qcom-qmp: fix struct clk leak on probe errors
phy: qcom-qmp: fix reset-controller leak on probe errors
Johannes Berg (3):
nl80211: show SSID for P2P_GO interfaces
wifi: mac80211: fix use-after-free in chanctx code
um: chan_user: Fix winch_tramp() return value
Jonas Karlman (1):
media: rkvdec: h264: Fix bit depth wrap in pps packet
Jonathan Bakker (1):
ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries
Jonathan Teh (1):
HID: hid-led: fix maximum brightness for Dream Cheeky
Josh Poimboeuf (2):
x86/speculation: Add missing prototype for unpriv_ebpf_notify()
scripts/faddr2line: Fix overlapping text section failures
Junxiao Bi via Ocfs2-devel (1):
ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock
Kajol Jain (1):
powerpc/perf: Fix the threshold compare group constraint for power9
Kan Liang (1):
perf/x86/intel: Fix event constraints for ICL
Kathiravan T (1):
arm64: dts: qcom: ipq8074: fix the sleep clock frequency
Keita Suzuki (2):
drm/amd/pm: fix double free in si_parse_power_table()
tracing: Fix potential double free in create_var_ref()
Keith Busch (1):
nvme: set dma alignment to dword
Kirill A. Shutemov (1):
ACPICA: Avoid cache flush inside virtual machines
Kishon Vijay Abraham I (1):
usb: core: hcd: Add support for deferring roothub registration
Kiwoong Kim (1):
scsi: ufs: core: Exclude UECxx from SFR dump list
Konrad Dybcio (2):
arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count
regulator: qcom_smd: Fix up PM8950 regulator configuration
Krzysztof Kozlowski (6):
ARM: dts: ox820: align interrupt controller node name with dtschema
ARM: dts: s5pv210: align DMA channels with dtschema
ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM
irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value
irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value
pinctrl: mvebu: Fix irq_of_parse_and_map() return value
Kuldeep Singh (1):
spi: qcom-qspi: Add minItems to interconnect-names
Kuninori Morimoto (2):
ASoC: samsung: Use dev_err_probe() helper
i2c: rcar: fix PM ref counts in probe error paths
Kuogee Hsieh (3):
drm/msm/dpu: adjust display_v_end for eDP and DP
drm/msm/dp: stop event kernel thread when DP unbind
drm/msm/dp: fix event thread stuck in wait_event after kthread_stop()
Kuppuswamy Sathyanarayanan (1):
PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits
Kwanghoon Son (1):
media: exynos4-is: Fix compile warning
Lai Jiangshan (1):
x86/sev: Annotate stack change in the #VC handler
Len Brown (1):
tools/power turbostat: fix ICX DRAM power numbers
Leo Yan (1):
perf c2c: Use stdio interface if slang is not supported
Lin Ma (2):
ASoC: rt5645: Fix errorenous cleanup order
NFC: NULL out the dev->rfkill to prevent UAF
Liu Zixian (1):
drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes
Liviu Dudau (1):
drm/komeda: return early if drm_universal_plane_init() fails.
Luca Weiss (1):
media: venus: hfi: avoid null dereference in deinit
Lucas Stach (2):
drm/bridge: adv7511: clean up CEC adapter when probe fails
drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem
Lv Ruyi (7):
scsi: megaraid: Fix error check return value of register_chrdev()
drm: msm: fix error check return value of irq_of_parse_and_map()
powerpc/xics: fix refcount leak in icp_opal_init()
powerpc/powernv: fix missing of_node_put in uv_init()
drm/msm/dp: fix error check return value of irq_of_parse_and_map()
drm/msm/hdmi: fix error check return value of irq_of_parse_and_map()
mfd: ipaq-micro: Fix error check return value of platform_get_irq()
Maciej W. Rozycki (2):
MIPS: IP27: Remove incorrect `cpu_has_fpu' override
MIPS: IP30: Remove incorrect `cpu_has_fpu' override
Manivannan Sadhasivam (1):
scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
Mao Jinlong (1):
coresight: core: Fix coresight device probe failure issue
Marc Kleine-Budde (1):
can: xilinx_can: mark bit timing constants as const
Marek Vasut (2):
drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01
ARM: dts: stm32: Fix PHY post-reset delay on Avenger96
Mario Limonciello (1):
ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default
Marios Levogiannis (1):
ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS
Mark Bloch (1):
net/mlx5: fs, delete the FTE when there are no rules attached to it
Mark Brown (2):
ASoC: dapm: Don't fold register value changes into notifications
ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control
Mathias Nyman (1):
xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI
Matthieu Baerts (1):
x86/pm: Fix false positive kmemleak report in msr_build_context()
Max Filippov (1):
irqchip: irq-xtensa-mx: fix initial IRQ affinity
Max Krummenacher (1):
ARM: dts: imx6dl-colibri: Fix I2C pinmuxing
Maxime Ripard (3):
drm/vc4: hvs: Reset muxes at probe time
drm/vc4: txp: Don't set TXP_VSTART_AT_EOF
drm/vc4: txp: Force alpha to be 0xff if it's disabled
Miaohe Lin (1):
drivers/base/node.c: fix compaction sysfs file leak
Miaoqian Lin (20):
ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe
ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe
spi: spi-ti-qspi: Fix return value handling of
wait_for_completion_timeout
HID: elan: Fix potential double free in elan_input_configured
drm/bridge: Fix error handling in analogix_dp_probe
ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe
ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe
regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt
ASoC: samsung: Fix refcount leak in aries_audio_probe
media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe
media: st-delta: Fix PM disable depth imbalance in delta_probe
media: exynos4-is: Change clk_disable to clk_disable_unprepare
ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_*
drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init
thermal/drivers/imx_sc_thermal: Fix refcount leak in
imx_sc_thermal_probe
soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc
soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc
Input: sparcspkr - fix refcount leak in bbc_beep_probe
powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup
video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup
Michael Ellerman (1):
powerpc/64: Only WARN if __pa()/__va() called with bad addresses
Michael Rodin (1):
media: vsp1: Fix offset calculation for plane cropping
Michael Walle (1):
i2c: at91: use dma safe buffers
Mike Kravetz (1):
hugetlb: fix huge_pmd_unshare address update
Mike Travis (1):
x86/platform/uv: Update TSC sync state for UV5
Mikulas Patocka (1):
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
Miles Chen (1):
drm/mediatek: Fix mtk_cec_mask()
Minghao Chi (1):
scsi: ufs: Use pm_runtime_resume_and_get() instead of
pm_runtime_get_sync()
Monish Kumar R (1):
USB: new quirk for Dell Gen 2 devices
Muchun Song (1):
dax: fix cache flush on PMD-mapped pages
Nathan Chancellor (2):
drm/i915: Fix CFI violation with show_dynamic_id()
i2c: at91: Initialize dma_buf in at91_twi_xfer()
Nico Boehr (1):
s390/perf: obtain sie_block from the right address
Nicolas Dufresne (3):
media: rkvdec: h264: Fix dpb_valid implementation
media: coda: Fix reported H264 profile
media: coda: Add more H264 levels for CODA960
Nicolas Frattaroli (1):
ASoC: rk3328: fix disabling mclk on pclk probe failure
Niels Dossche (5):
mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue
ipv6: fix locking issues with loops over idev->addr_list
IB/rdmavt: add missing locks in rvt_ruc_loopback
ath11k: acquire ab->base_lock in unassign when finding the peer by
addr
Bluetooth: use hdev lock for accept_list and reject_list in conn req
Niklas Cassel (1):
binfmt_flat: do not stop relocating GOT entries prematurely on riscv
Noralf Trønnes (1):
dt-bindings: display: sitronix, st7735r: Fix backlight in example
Nuno Sá (1):
of: overlay: do not break notify on NOTIFY_{OK|STOP}
OGAWA Hirofumi (1):
fat: add ratelimit to fat*_ent_bread()
Padmanabha Srinivasaiah (1):
rcu-tasks: Fix race in schedule and flush work
Pali Rohár (1):
irqchip/armada-370-xp: Do not touch Performance Counter Overflow on
A375, A38x, A39x
Patrice Chotard (1):
spi: stm32-qspi: Fix wait_cmd timeout in APM mode
Paul Cercueil (1):
drm/ingenic: Reset pixclock rate when parent clock rate changes
Paul E. McKenney (2):
rcu: Make TASKS_RUDE_RCU select IRQ_WORK
scftorture: Fix distribution of short handler delays
Paul Moore (1):
lsm,selinux: pass flowi_common instead of flowi to the LSM hooks
Pavel Skripkin (1):
media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init
Peilin Ye (1):
Fonts: Make font size unsigned in font_desc
Peng Wu (3):
ARM: versatile: Add missing of_node_put in dcscb_init
ARM: hisi: Add missing of_node_put after of_find_compatible_node
powerpc/iommu: Add missing of_node_put in iommu_init_early_dart
Petr Machata (2):
mlxsw: spectrum_dcb: Do not warn about priority changes
mlxsw: Treat LLDP packets as control
Phil Auld (1):
kselftest/cgroup: fix test_stress.sh to use OUTPUT dir
Phil Elwell (3):
ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT
ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C
ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED
Philipp Zabel (1):
media: coda: limit frame interval enumeration to supported encoder
frame sizes
Pierre-Louis Bossart (2):
ASoC: max98357a: remove dependency on GPIOLIB
ASoC: rt1015p: remove dependency on GPIOLIB
Qinglang Miao (1):
cpufreq: mediatek: add missing platform_driver_unregister() on error
in mtk_cpufreq_driver_init
QintaoShen (1):
soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc
Qu Wenruo (2):
btrfs: add "0x" prefix for unsupported optional features
btrfs: repair super block num_devices automatically
Randy Dunlap (6):
x86: Fix return value of __setup handlers
x86/mm: Cleanup the control_va_addr_alignment() __setup handler
powerpc/8xx: export 'cpm_setbrg' for modules
powerpc/idle: Fix return value of __setup() handler
powerpc/4xx/cpm: Fix return value of __setup() handler
macintosh: via-pmu and via-cuda need RTC_LIB
Ravi Bangoria (2):
perf/amd/ibs: Cascade pmu init functions' return value
perf/amd/ibs: Use interrupt regs ip for stack unwinding
Rei Yamamoto (1):
mm, compaction: fast_find_migrateblock() should return pfn in the
target zone
Rex-BC Chen (1):
cpufreq: mediatek: Unregister platform device on exit
Rik van der Kemp (1):
ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop
Ronnie Sahlberg (1):
cifs: when extending a file with falloc we should make files
not-sparse
Russell King (Oracle) (1):
net: dsa: mt7530: 1G can also support 1000BASE-X link mode
Sakari Ailus (1):
ACPI: property: Release subnode properties with data nodes
Samuel Holland (1):
riscv: Fix irq_work when SMP is disabled
Sathish Narasimman (1):
Bluetooth: LL privacy allow RPA
Schspa Shi (1):
cpufreq: Fix possible race in cpufreq online error path
Sean Christopherson (3):
KVM: nVMX: Leave most VM-Exit info fields unmodified on failed
VM-Entry
KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple
fault
Kconfig: Add option for asm goto w/ tied outputs to workaround
clang-13 bug
Sebastian Andrzej Siewior (1):
crypto: cryptd - Protect per-CPU resource by disabling BH.
Shawn Lin (1):
arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399
Smith, Kyle Miller (Nimble Kernel) (1):
nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags
Song Liu (1):
ftrace: Clean up hash direct_functions on register failures
Stefan Wahren (4):
thermal/drivers/bcm2711: Don't clamp temperature at zero
ARM: dts: bcm2835-rpi-b: Fix GPIO line names
gpiolib: of: Introduce hook for missing gpio-ranges
pinctrl: bcm2835: implement hook for missing gpio-ranges
Steve French (1):
SMB3: EBADF/EIO errors in rename/open caused by race condition in
smb2_compound_op
Steven Price (1):
drm/plane: Move range check for format_count earlier
Takashi Iwai (1):
ALSA: usb-audio: Cancel pending work at closing a MIDI substream
Tali Perry (2):
i2c: npcm: Fix timeout calculation
i2c: npcm: Handle spurious interrupts
Tejas Upadhyay (1):
iommu/vt-d: Add RPLS to quirk list to skip TE disabling
Tejun Heo (1):
blk-iolatency: Fix inflight count imbalances and IO hangs on offline
Tetsuo Handa (1):
media: imon: reorganize serialization
Theodore Ts'o (1):
ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state
Thibaut VARÈNE (1):
ath9k: fix QCA9561 PA bias level
Thorsten Scherer (1):
ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec
clocks
Tokunori Ikegami (2):
mtd: cfi_cmdset_0002: Move and rename
chip_check/chip_ready/chip_good_for_write
mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N
Tong Tiangen (1):
arm64: fix types in copy_highpage()
Trond Myklebust (5):
NFS: Do not report EINTR/ERESTARTSYS as mapping errors
NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS
NFS: Do not report flush errors in nfs_write_end()
NFS: Don't report errors from nfs_pageio_complete() more than once
NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout
Tyler Hicks (1):
EDAC/dmc520: Don't print an error for each unconfigured interrupt line
Tyrone Ting (1):
i2c: npcm: Correct register access width
Tzung-Bi Shih (1):
platform/chrome: cros_ec: fix error handling in cros_ec_register()
Vasily Averin (1):
tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
Vignesh Raghavendra (1):
drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit
Vincent Mailhol (1):
can: mcp251xfd: silence clang's -Wunaligned-access warning
Vincent Whitchurch (1):
um: Fix out-of-bounds read in LDT setup
Vinod Polimera (1):
drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after
memory free during pm runtime resume
Viresh Kumar (1):
Revert "cpufreq: Fix possible race in cpufreq online error path"
Waiman Long (2):
ipc/mqueue: use get_tree_nodev() in mqueue_get_tree()
kseltest/cgroup: Make test_stress.sh work if run interactively
Wenli Looi (1):
ath9k: fix ar9003_get_eepmisc
Xiao Yang (1):
RDMA/rxe: Generate a completion for unsupported/invalid opcode
Xiaomeng Tong (11):
media: uvcvideo: Fix missing check to determine if element is found in
list
scsi: dc395x: Fix a missing check on list iterator
drm/nouveau/clk: Fix an incorrect NULL check on list iterator
drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list
iterator
md: fix an incorrect NULL check in does_sb_need_changing
md: fix an incorrect NULL check in md_reload_sb
iommu/msm: Fix an incorrect NULL check on list iterator
carl9170: tx: fix an incorrect use of list iterator
stm: ltdc: fix two incorrect NULL checks on list iterator
tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
gma500: fix an incorrect NULL check on list iterator
Xie Yongji (1):
nbd: Fix hung on disconnect request if socket is closed before
Yang Jihong (1):
perf tools: Add missing headers needed by util/data.h
Yang Yingliang (10):
pinctrl: renesas: rzn1: Fix possible null-ptr-deref in
sh_pfc_map_resources()
mtd: rawnand: cadence: fix possible null-ptr-deref in
cadence_nand_dt_probe()
drm/msm/hdmi: check return value after calling
platform_get_resource_byname()
drm/rockchip: vop: fix possible null-ptr-deref in vop_bind()
spi: spi-fsl-qspi: check return value after calling
platform_get_resource_byname()
thermal/core: Fix memory leak in __thermal_cooling_device_register()
ASoC: wm2000: fix missing clk_disable_unprepare() on error in
wm2000_anc_transition()
pinctrl: renesas: core: Fix possible null-ptr-deref in
sh_pfc_map_resources()
hwrng: omap3-rom - fix using wrong clk_disable() in
omap_rom_rng_runtime_resume()
mfd: davinci_voicecodec: Fix possible null-ptr-deref
davinci_vc_probe()
Yi Yang (1):
xtensa/simdisk: fix proc_read_simdisk()
Yicong Yang (1):
PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()
Ying Hsu (1):
Bluetooth: fix dangling sco_conn and use-after-free in
sco_sock_timeout
Yong Wu (1):
iommu/mediatek: Add list_del in mtk_iommu_remove
Yonghong Song (1):
selftests/bpf: fix btf_dump/btf_dump due to recent clang change
Yongzhi Liu (1):
hv_netvsc: Fix potential dereference of NULL pointer
Yuntao Wang (1):
bpf: Fix excessive memory allocation in stack_map_alloc()
Zev Weiss (1):
regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET
Zheng Yongjun (2):
spi: img-spfi: Fix pm_runtime_get_sync() error checking
thermal/drivers/broadcom: Fix potential NULL dereference in
sr_thermal_probe
Zheng Zengkai (1):
sched/fair: Fix kabi broken in struct cfs_rq
Zhengjun Xing (1):
perf jevents: Fix event syntax error caused by ExtSel
Zheyu Ma (3):
media: pci: cx23885: Fix the error handling in cx23885_initdev()
media: cx25821: Fix the warning when removing the module
mtd: rawnand: denali: Use managed device resources
Zhou Qingyang (1):
drm/komeda: Fix an undefined behavior bug in komeda_plane_add()
Zixuan Fu (1):
fs: jfs: fix possible NULL pointer dereference in dbFree()
Ziyang Xuan (1):
thermal/core: fix a UAF bug in __thermal_cooling_device_register()
jianghaoran (1):
ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL
liuyacan (1):
net/smc: postpone sk_refcnt increment in connect()
Documentation/conf.py | 2 +-
.../bindings/display/sitronix,st7735r.yaml | 1 +
.../devicetree/bindings/gpio/gpio-altera.txt | 5 +-
.../bindings/spi/qcom,spi-qcom-qspi.yaml | 1 +
arch/arm/boot/dts/bcm2835-rpi-b.dts | 13 +-
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 22 +-
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 2 +-
arch/arm/boot/dts/bcm2837-rpi-cm3-io3.dts | 4 +-
arch/arm/boot/dts/exynos5250-smdk5250.dts | 4 +-
arch/arm/boot/dts/imx6dl-eckelmann-ci4x10.dts | 6 +-
arch/arm/boot/dts/imx6qdl-colibri.dtsi | 6 +-
arch/arm/boot/dts/ox820.dtsi | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 3 +-
arch/arm/boot/dts/s5pv210.dtsi | 12 +-
.../boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 1 +
arch/arm/boot/dts/suniv-f1c100s.dtsi | 4 +-
arch/arm/mach-hisi/platsmp.c | 4 +
arch/arm/mach-mediatek/Kconfig | 1 +
arch/arm/mach-omap1/clock.c | 2 +-
arch/arm/mach-pxa/cm-x300.c | 8 +-
arch/arm/mach-pxa/magician.c | 2 +-
arch/arm/mach-pxa/tosa.c | 4 +-
arch/arm/mach-vexpress/dcscb.c | 1 +
arch/arm64/Kconfig.platforms | 1 +
arch/arm64/boot/dts/qcom/ipq8074.dtsi | 2 +-
arch/arm64/boot/dts/qcom/msm8994.dtsi | 4 +-
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
arch/arm64/kernel/sys_compat.c | 2 +-
arch/arm64/mm/copypage.c | 4 +-
arch/csky/kernel/probes/kprobes.c | 2 +-
arch/m68k/Kconfig.cpu | 2 +-
arch/m68k/include/asm/raw_io.h | 6 +-
.../asm/mach-ip27/cpu-feature-overrides.h | 1 -
.../asm/mach-ip30/cpu-feature-overrides.h | 1 -
arch/openrisc/include/asm/timex.h | 1 +
arch/openrisc/kernel/head.S | 9 +
arch/parisc/include/asm/fb.h | 4 +
arch/powerpc/include/asm/page.h | 7 +-
arch/powerpc/include/asm/vas.h | 2 +-
arch/powerpc/kernel/fadump.c | 8 +-
arch/powerpc/kernel/idle.c | 2 +-
arch/powerpc/perf/isa207-common.c | 3 +-
arch/powerpc/platforms/4xx/cpm.c | 2 +-
arch/powerpc/platforms/8xx/cpm1.c | 1 +
arch/powerpc/platforms/powernv/opal-fadump.c | 94 ++++----
arch/powerpc/platforms/powernv/opal-fadump.h | 10 +-
arch/powerpc/platforms/powernv/ultravisor.c | 1 +
arch/powerpc/platforms/powernv/vas-fault.c | 2 +-
arch/powerpc/platforms/powernv/vas-window.c | 4 +-
arch/powerpc/platforms/powernv/vas.h | 2 +-
arch/powerpc/sysdev/dart_iommu.c | 6 +-
arch/powerpc/sysdev/fsl_rio.c | 2 +
arch/powerpc/sysdev/xics/icp-opal.c | 1 +
arch/riscv/include/asm/irq_work.h | 2 +-
arch/riscv/kernel/head.S | 1 +
arch/s390/include/asm/preempt.h | 15 +-
arch/s390/kernel/perf_event.c | 2 +-
arch/um/drivers/chan_user.c | 9 +-
arch/um/include/asm/thread_info.h | 2 +
arch/um/kernel/exec.c | 2 +-
arch/um/kernel/process.c | 2 +-
arch/um/kernel/ptrace.c | 8 +-
arch/um/kernel/signal.c | 4 +-
arch/x86/Kconfig | 4 +-
arch/x86/entry/entry_64.S | 1 +
arch/x86/entry/vdso/vma.c | 2 +-
arch/x86/events/amd/ibs.c | 55 ++++-
arch/x86/events/intel/core.c | 2 +-
arch/x86/include/asm/acenv.h | 14 +-
arch/x86/include/asm/suspend_32.h | 2 +-
arch/x86/include/asm/suspend_64.h | 12 +-
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apic/x2apic_uv_x.c | 8 +-
arch/x86/kernel/cpu/intel.c | 2 +-
arch/x86/kernel/cpu/mce/amd.c | 32 +--
arch/x86/kernel/step.c | 3 +-
arch/x86/kernel/sys_x86_64.c | 7 +-
arch/x86/kvm/vmx/nested.c | 45 +++-
arch/x86/kvm/vmx/vmcs.h | 5 +
arch/x86/lib/delay.c | 4 +-
arch/x86/mm/pat/memtype.c | 2 +-
arch/x86/um/ldt.c | 6 +-
arch/xtensa/kernel/ptrace.c | 4 +-
arch/xtensa/kernel/signal.c | 4 +-
arch/xtensa/platforms/iss/simdisk.c | 18 +-
block/bfq-cgroup.c | 36 ++-
block/bfq-iosched.c | 36 ++-
block/bfq-iosched.h | 1 +
block/blk-cgroup.c | 8 +-
block/blk-iolatency.c | 122 +++++-----
crypto/cryptd.c | 23 +-
drivers/acpi/property.c | 18 +-
drivers/acpi/sleep.c | 12 +
drivers/base/memory.c | 5 +-
drivers/base/node.c | 1 +
drivers/block/drbd/drbd_main.c | 11 +-
drivers/block/nbd.c | 13 +-
drivers/block/virtio_blk.c | 7 +-
drivers/char/hw_random/omap3-rom-rng.c | 2 +-
drivers/char/ipmi/ipmi_msghandler.c | 4 +-
drivers/char/ipmi/ipmi_ssif.c | 23 ++
drivers/char/random.c | 12 +-
drivers/cpufreq/mediatek-cpufreq.c | 19 +-
.../allwinner/sun8i-ss/sun8i-ss-cipher.c | 115 ++++++---
.../crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 30 ++-
.../crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 10 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 14 +-
drivers/crypto/ccree/cc_buffer_mgr.c | 27 ++-
drivers/crypto/marvell/cesa/cipher.c | 1 -
drivers/crypto/nx/nx-common-powernv.c | 2 +-
drivers/devfreq/rk3399_dmc.c | 2 +
drivers/dma/idxd/cdev.c | 8 +-
drivers/dma/stm32-mdma.c | 87 ++++---
drivers/edac/dmc520_edac.c | 2 +-
drivers/firmware/arm_scmi/base.c | 2 +-
drivers/gpio/gpiolib-of.c | 5 +
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 3 +-
drivers/gpu/drm/amd/pm/powerplay/kv_dpm.c | 14 +-
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c | 8 +-
.../gpu/drm/arm/display/komeda/komeda_plane.c | 10 +-
drivers/gpu/drm/arm/malidp_crtc.c | 5 +-
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 1 +
.../drm/bridge/analogix/analogix_dp_core.c | 31 ++-
drivers/gpu/drm/drm_edid.c | 6 +-
drivers/gpu/drm/drm_plane.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 6 +
drivers/gpu/drm/gma500/psb_intel_display.c | 7 +-
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 33 ++-
drivers/gpu/drm/i915/i915_perf.c | 4 +-
drivers/gpu/drm/i915/i915_perf_types.h | 2 +-
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 61 ++++-
drivers/gpu/drm/mediatek/mtk_cec.c | 2 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 8 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 14 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 6 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_mixer.h | 4 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c | 15 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.h | 2 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 20 +-
drivers/gpu/drm/msm/dp/dp_display.c | 55 +++--
drivers/gpu/drm/msm/dsi/dsi_host.c | 21 +-
drivers/gpu/drm/msm/hdmi/hdmi.c | 10 +-
drivers/gpu/drm/msm/msm_drv.c | 1 +
drivers/gpu/drm/msm/msm_gem_prime.c | 2 +-
drivers/gpu/drm/nouveau/dispnv50/atom.h | 6 +-
drivers/gpu/drm/nouveau/dispnv50/crc.c | 27 ++-
.../gpu/drm/nouveau/nvkm/subdev/clk/base.c | 6 +-
drivers/gpu/drm/panel/panel-simple.c | 3 +-
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +-
drivers/gpu/drm/stm/ltdc.c | 16 +-
drivers/gpu/drm/tilcdc/tilcdc_external.c | 8 +-
drivers/gpu/drm/vc4/vc4_hvs.c | 26 ++-
drivers/gpu/drm/vc4/vc4_txp.c | 8 +-
drivers/gpu/drm/virtio/virtgpu_display.c | 2 +
drivers/hid/hid-bigbenff.c | 6 +
drivers/hid/hid-elan.c | 2 -
drivers/hid/hid-led.c | 2 +-
drivers/hwtracing/coresight/coresight-core.c | 33 ++-
drivers/i2c/busses/i2c-at91-master.c | 11 +
drivers/i2c/busses/i2c-npcm7xx.c | 103 +++++---
drivers/i2c/busses/i2c-rcar.c | 15 +-
drivers/infiniband/hw/hfi1/file_ops.c | 2 +
drivers/infiniband/hw/hfi1/init.c | 2 +-
drivers/infiniband/hw/hfi1/sdma.c | 12 +-
drivers/infiniband/sw/rdmavt/qp.c | 6 +-
drivers/infiniband/sw/rxe/rxe_req.c | 2 +-
drivers/input/misc/sparcspkr.c | 1 +
drivers/input/touchscreen/stmfts.c | 16 +-
drivers/iommu/amd/init.c | 2 +-
drivers/iommu/intel/iommu.c | 2 +-
drivers/iommu/msm_iommu.c | 11 +-
drivers/iommu/mtk_iommu.c | 3 +-
drivers/irqchip/irq-armada-370-xp.c | 11 +-
drivers/irqchip/irq-aspeed-i2c-ic.c | 4 +-
drivers/irqchip/irq-aspeed-scu-ic.c | 4 +-
drivers/irqchip/irq-sni-exiu.c | 25 +-
drivers/irqchip/irq-xtensa-mx.c | 18 +-
drivers/macintosh/Kconfig | 6 +
drivers/macintosh/Makefile | 3 +-
drivers/macintosh/via-pmu.c | 2 +-
drivers/mailbox/mailbox.c | 19 +-
drivers/md/md-bitmap.c | 44 ++--
drivers/md/md.c | 18 +-
drivers/media/cec/core/cec-adap.c | 6 +-
drivers/media/i2c/ov7670.c | 1 -
drivers/media/pci/cx23885/cx23885-core.c | 6 +-
drivers/media/pci/cx25821/cx25821-core.c | 2 +-
drivers/media/platform/aspeed-video.c | 4 +-
drivers/media/platform/coda/coda-common.c | 35 ++-
drivers/media/platform/exynos4-is/fimc-is.c | 6 +-
.../platform/exynos4-is/fimc-isp-video.h | 2 +-
drivers/media/platform/qcom/venus/hfi.c | 3 +
drivers/media/platform/rockchip/rga/rga.c | 6 +-
drivers/media/platform/sti/delta/delta-v4l2.c | 6 +-
drivers/media/platform/vsp1/vsp1_rpf.c | 6 +-
drivers/media/rc/imon.c | 99 ++++----
drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 7 +-
drivers/media/usb/uvc/uvc_v4l2.c | 20 +-
drivers/memory/samsung/exynos5422-dmc.c | 5 +-
drivers/mfd/davinci_voicecodec.c | 6 +-
drivers/mfd/ipaq-micro.c | 2 +-
drivers/misc/ocxl/file.c | 2 +
drivers/mmc/host/jz4740_mmc.c | 20 ++
drivers/mmc/host/sdhci_am654.c | 23 +-
drivers/mtd/chips/cfi_cmdset_0002.c | 103 ++++----
.../mtd/nand/raw/cadence-nand-controller.c | 5 +-
drivers/mtd/nand/raw/denali_pci.c | 15 +-
drivers/mtd/spi-nor/core.c | 9 +
drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 2 +-
drivers/net/can/xilinx_can.c | 4 +-
drivers/net/dsa/mt7530.c | 14 +-
drivers/net/ethernet/broadcom/Makefile | 5 +
.../chelsio/inline_crypto/chtls/chtls_cm.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/fs_core.c | 10 +-
.../ethernet/mellanox/mlxsw/core_thermal.c | 2 +-
.../ethernet/mellanox/mlxsw/spectrum_dcb.c | 13 --
.../ethernet/mellanox/mlxsw/spectrum_trap.c | 2 +-
drivers/net/ethernet/sfc/ef10.c | 2 +-
.../stmicro/stmmac/stmmac_selftests.c | 15 +-
drivers/net/hyperv/netvsc_drv.c | 5 +-
drivers/net/ipa/ipa_endpoint.c | 4 +-
drivers/net/phy/micrel.c | 11 +-
drivers/net/wireguard/socket.c | 4 +-
drivers/net/wireless/ath/ath10k/mac.c | 20 +-
drivers/net/wireless/ath/ath11k/mac.c | 16 +-
drivers/net/wireless/ath/ath11k/spectral.c | 17 +-
.../net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 +-
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 8 +
drivers/net/wireless/ath/carl9170/tx.c | 3 +
drivers/net/wireless/broadcom/b43/phy_n.c | 2 +-
drivers/net/wireless/broadcom/b43legacy/phy.c | 2 +-
.../net/wireless/intel/ipw2x00/libipw_tx.c | 2 +-
.../net/wireless/intel/iwlwifi/mvm/power.c | 3 +
drivers/net/wireless/marvell/mwifiex/11h.c | 2 +
.../wireless/realtek/rtl818x/rtl8180/dev.c | 8 +-
drivers/net/wireless/realtek/rtlwifi/usb.c | 2 +-
drivers/nfc/st21nfca/se.c | 17 +-
drivers/nfc/st21nfca/st21nfca.h | 1 +
drivers/nvdimm/core.c | 9 -
drivers/nvdimm/security.c | 5 -
drivers/nvme/host/core.c | 2 +-
drivers/nvme/host/pci.c | 1 +
drivers/of/overlay.c | 4 +-
drivers/opp/of.c | 2 +-
.../pci/controller/cadence/pcie-cadence-ep.c | 3 +-
drivers/pci/controller/dwc/pci-imx6.c | 23 +-
.../pci/controller/dwc/pcie-designware-host.c | 3 +-
drivers/pci/controller/dwc/pcie-qcom.c | 9 +-
drivers/pci/controller/pcie-rockchip-ep.c | 3 +-
drivers/pci/pci.c | 12 +-
drivers/pci/pcie/aer.c | 7 +-
drivers/phy/qualcomm/phy-qcom-qmp.c | 11 +-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 18 ++
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 2 +-
drivers/pinctrl/renesas/core.c | 7 +-
drivers/pinctrl/renesas/pinctrl-rzn1.c | 10 +-
drivers/platform/chrome/cros_ec.c | 16 +-
drivers/platform/chrome/cros_ec_chardev.c | 2 +-
drivers/platform/chrome/cros_ec_proto.c | 50 +++-
drivers/platform/mips/cpu_hwmon.c | 127 ++++------
drivers/regulator/core.c | 7 +-
drivers/regulator/pfuze100-regulator.c | 2 +
drivers/regulator/qcom_smd-regulator.c | 35 ++-
drivers/scsi/dc395x.c | 15 +-
drivers/scsi/lpfc/lpfc_sli.c | 6 +-
drivers/scsi/megaraid.c | 2 +-
drivers/scsi/ufs/ti-j721e-ufs.c | 6 +-
drivers/scsi/ufs/ufs-qcom.c | 14 +-
drivers/scsi/ufs/ufshcd.c | 7 +-
drivers/soc/qcom/llcc-qcom.c | 1 +
drivers/soc/qcom/smp2p.c | 1 +
drivers/soc/qcom/smsm.c | 1 +
drivers/soc/ti/ti_sci_pm_domains.c | 2 +
drivers/spi/spi-fsl-qspi.c | 4 +
drivers/spi/spi-img-spfi.c | 2 +-
drivers/spi/spi-rspi.c | 15 +-
drivers/spi/spi-stm32-qspi.c | 3 +-
drivers/spi/spi-ti-qspi.c | 5 +-
drivers/staging/media/hantro/hantro_v4l2.c | 8 +-
drivers/staging/media/rkvdec/rkvdec-h264.c | 37 ++-
drivers/staging/media/rkvdec/rkvdec.c | 4 +-
drivers/target/target_core_device.c | 1 -
drivers/thermal/broadcom/bcm2711_thermal.c | 5 +-
drivers/thermal/broadcom/sr-thermal.c | 3 +
drivers/thermal/imx_sc_thermal.c | 6 +-
drivers/thermal/thermal_core.c | 42 ++--
drivers/tty/serial/pch_uart.c | 27 +--
drivers/usb/core/hcd.c | 29 ++-
drivers/usb/core/quirks.c | 3 +
drivers/usb/dwc3/gadget.c | 6 +-
drivers/usb/host/xhci-pci.c | 2 +
drivers/usb/serial/option.c | 2 +
drivers/vdpa/vdpa_sim/vdpa_sim.c | 5 +-
drivers/video/console/sticon.c | 5 +-
drivers/video/console/sticore.c | 32 ++-
drivers/video/fbdev/amba-clcd.c | 5 +-
drivers/video/fbdev/core/fbcon.c | 5 +-
drivers/video/fbdev/sticore.h | 3 +
drivers/video/fbdev/stifb.c | 4 +-
fs/afs/rxrpc.c | 8 +-
fs/binfmt_flat.c | 27 ++-
fs/btrfs/disk-io.c | 4 +-
fs/btrfs/volumes.c | 8 +-
fs/cifs/smb2inode.c | 2 -
fs/cifs/smb2ops.c | 2 +-
fs/dax.c | 3 +-
fs/dlm/lock.c | 11 +-
fs/dlm/plock.c | 12 +-
fs/ext4/ext4.h | 6 -
fs/ext4/namei.c | 54 +++--
fs/ext4/super.c | 24 +-
fs/f2fs/f2fs.h | 19 +-
fs/f2fs/file.c | 20 +-
fs/f2fs/inline.c | 29 ++-
fs/f2fs/inode.c | 19 +-
fs/f2fs/segment.c | 42 ++--
fs/f2fs/segment.h | 33 ++-
fs/f2fs/super.c | 6 +-
fs/fat/fatent.c | 7 +-
fs/gfs2/quota.c | 32 ++-
fs/iomap/buffered-io.c | 3 +-
fs/jfs/jfs_dmap.c | 3 +-
fs/nfs/file.c | 16 +-
fs/nfs/pnfs.c | 2 +
fs/nfs/write.c | 11 +-
fs/notify/mark.c | 6 +-
fs/ocfs2/dlmfs/userdlm.c | 16 +-
fs/proc/generic.c | 3 +
fs/proc/proc_net.c | 3 +
fs/xfs/libxfs/xfs_btree.c | 35 ++-
fs/xfs/xfs_dquot.c | 39 +++-
fs/xfs/xfs_iomap.c | 3 +
fs/xfs/xfs_log.c | 28 ++-
fs/xfs/xfs_log.h | 1 +
fs/xfs/xfs_mount.c | 3 +-
fs/xfs/xfs_symlink.c | 1 +
include/linux/bpf.h | 2 +
include/linux/efi.h | 2 +
include/linux/font.h | 2 +-
include/linux/gpio/driver.h | 12 +
include/linux/lsm_hook_defs.h | 4 +-
include/linux/lsm_hooks.h | 2 +-
include/linux/mailbox_controller.h | 1 +
include/linux/mtd/cfi.h | 1 +
include/linux/nodemask.h | 13 +-
include/linux/platform_data/cros_ec_proto.h | 3 +
include/linux/ptrace.h | 7 -
include/linux/security.h | 23 +-
include/linux/thermal.h | 2 +-
include/linux/usb/hcd.h | 2 +
include/net/bluetooth/hci.h | 16 +-
include/net/bluetooth/hci_core.h | 18 +-
include/net/flow.h | 10 +
include/net/if_inet6.h | 8 +
include/net/route.h | 6 +-
include/sound/jack.h | 1 +
include/trace/events/rxrpc.h | 2 +-
include/trace/events/vmscan.h | 4 +-
init/Kconfig | 5 +
ipc/mqueue.c | 14 ++
kernel/bpf/stackmap.c | 1 -
kernel/dma/debug.c | 2 +-
kernel/ptrace.c | 5 +-
kernel/rcu/Kconfig | 1 +
kernel/rcu/tasks.h | 3 +
kernel/scftorture.c | 5 +-
kernel/sched/fair.c | 8 +-
kernel/sched/pelt.h | 4 +-
kernel/sched/sched.h | 4 +-
kernel/trace/ftrace.c | 5 +-
kernel/trace/trace_events_hist.c | 3 +
mm/compaction.c | 2 +
mm/hugetlb.c | 9 +-
net/bluetooth/hci_conn.c | 8 +-
net/bluetooth/hci_core.c | 27 ++-
net/bluetooth/hci_debugfs.c | 8 +-
net/bluetooth/hci_event.c | 91 ++++----
net/bluetooth/hci_request.c | 221 ++++++++++++++----
net/bluetooth/hci_sock.c | 12 +-
net/bluetooth/l2cap_core.c | 10 +-
net/bluetooth/mgmt.c | 14 +-
net/bluetooth/mgmt_config.c | 10 +
net/bluetooth/sco.c | 21 +-
net/bluetooth/smp.c | 6 +-
net/core/dev.c | 8 +-
net/dccp/ipv4.c | 2 +-
net/dccp/ipv6.c | 6 +-
net/ipv4/icmp.c | 4 +-
net/ipv4/inet_connection_sock.c | 4 +-
net/ipv4/ip_output.c | 2 +-
net/ipv4/ping.c | 2 +-
net/ipv4/raw.c | 2 +-
net/ipv4/syncookies.c | 2 +-
net/ipv4/udp.c | 2 +-
net/ipv6/addrconf.c | 33 ++-
net/ipv6/af_inet6.c | 2 +-
net/ipv6/datagram.c | 2 +-
net/ipv6/icmp.c | 6 +-
net/ipv6/inet6_connection_sock.c | 4 +-
net/ipv6/netfilter/nf_reject_ipv6.c | 2 +-
net/ipv6/ping.c | 2 +-
net/ipv6/raw.c | 2 +-
net/ipv6/syncookies.c | 2 +-
net/ipv6/tcp_ipv6.c | 4 +-
net/ipv6/udp.c | 2 +-
net/l2tp/l2tp_ip6.c | 2 +-
net/mac80211/chan.c | 7 +-
net/mac80211/ieee80211_i.h | 5 +
net/mac80211/scan.c | 20 ++
net/netfilter/nf_synproxy_core.c | 2 +-
net/nfc/core.c | 1 +
net/rxrpc/ar-internal.h | 13 +-
net/rxrpc/call_event.c | 7 +-
net/rxrpc/conn_object.c | 2 +-
net/rxrpc/input.c | 31 ++-
net/rxrpc/output.c | 20 +-
net/rxrpc/recvmsg.c | 8 +-
net/rxrpc/sendmsg.c | 6 +
net/rxrpc/sysctl.c | 4 +-
net/sctp/input.c | 4 +-
net/smc/af_smc.c | 2 +-
net/wireless/nl80211.c | 1 +
net/wireless/reg.c | 4 +
net/xfrm/xfrm_state.c | 6 +-
scripts/faddr2line | 150 +++++++-----
security/integrity/ima/Kconfig | 14 +-
.../platform_certs/keyring_handler.h | 8 +
security/integrity/platform_certs/load_uefi.c | 33 +++
security/security.c | 17 +-
security/selinux/hooks.c | 4 +-
security/selinux/include/xfrm.h | 2 +-
security/selinux/xfrm.c | 13 +-
sound/core/jack.c | 34 ++-
sound/core/pcm_memory.c | 3 +-
sound/pci/hda/patch_realtek.c | 11 +
sound/soc/atmel/atmel-classd.c | 1 -
sound/soc/atmel/atmel-pdmic.c | 1 -
sound/soc/codecs/Kconfig | 2 -
sound/soc/codecs/max98090.c | 6 +-
sound/soc/codecs/rk3328_codec.c | 2 +-
sound/soc/codecs/rt5514.c | 2 +-
sound/soc/codecs/rt5645.c | 7 +-
sound/soc/codecs/tscs454.c | 12 +-
sound/soc/codecs/wm2000.c | 6 +-
sound/soc/fsl/imx-sgtl5000.c | 14 +-
sound/soc/intel/boards/bytcr_rt5640.c | 12 +
sound/soc/mediatek/mt2701/mt2701-wm8960.c | 9 +-
sound/soc/mediatek/mt8173/mt8173-max98090.c | 5 +-
sound/soc/mxs/mxs-saif.c | 1 +
sound/soc/samsung/aries_wm8994.c | 17 +-
sound/soc/samsung/arndale.c | 5 +-
sound/soc/samsung/littlemill.c | 5 +-
sound/soc/samsung/lowland.c | 5 +-
sound/soc/samsung/odroid.c | 4 +-
sound/soc/samsung/smdk_wm8994.c | 4 +-
sound/soc/samsung/smdk_wm8994pcm.c | 4 +-
sound/soc/samsung/snow.c | 9 +-
sound/soc/samsung/speyside.c | 5 +-
sound/soc/samsung/tm2_wm5110.c | 3 +-
sound/soc/samsung/tobermory.c | 5 +-
sound/soc/soc-dapm.c | 2 -
sound/soc/ti/j721e-evm.c | 44 +++-
sound/usb/midi.c | 3 +
tools/lib/bpf/libbpf.c | 20 +-
tools/perf/Makefile.config | 39 +++-
tools/perf/builtin-c2c.c | 6 +-
tools/perf/pmu-events/jevents.c | 2 +-
tools/perf/util/data.h | 1 +
tools/power/x86/turbostat/turbostat.c | 1 +
.../bpf/progs/btf_dump_test_case_syntax.c | 2 +-
tools/testing/selftests/cgroup/test_stress.sh | 2 +-
tools/testing/selftests/resctrl/fill_buf.c | 4 +-
477 files changed, 3474 insertions(+), 1907 deletions(-)
--
2.20.1
1
427

[PATCH 1/4] perf/core: Provide a kernel-internal interface to recalibrate event period
by Laibin Qiu 27 Sep '22
by Laibin Qiu 27 Sep '22
27 Sep '22
From: Like Xu <like.xu(a)linux.intel.com>
mainline inclusion
from mainline-v5.4
commit 3ca270fc9edb258d5bfa271bcf851614e9e6e7d4
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5SDUS
CVE: NA
-------------
Currently, perf_event_period() is used by user tools via ioctl. Based on
naming convention, exporting perf_event_period() for kernel users (such
as KVM) who may recalibrate the event period for their assigned counter
according to their requirements.
The perf_event_period() is an external accessor, just like the
perf_event_{en,dis}able() and should thus use perf_event_ctx_lock().
Suggested-by: Kan Liang <kan.liang(a)linux.intel.com>
Signed-off-by: Like Xu <like.xu(a)linux.intel.com>
Acked-by: Peter Zijlstra <peterz(a)infradead.org>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
Signed-off-by: Yanan Wang <wangyanan55(a)huawei.com>
Reviewed-by: Zenghui Yu <yuzenghui(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
include/linux/perf_event.h | 5 +++++
kernel/events/core.c | 28 +++++++++++++++++++++-------
2 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 41bc1d3b311f..514962a49c62 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1336,6 +1336,7 @@ extern void perf_event_disable_local(struct perf_event *event);
extern void perf_event_disable_inatomic(struct perf_event *event);
extern void perf_event_task_tick(void);
extern int perf_event_account_interrupt(struct perf_event *event);
+extern int perf_event_period(struct perf_event *event, u64 value);
#else /* !CONFIG_PERF_EVENTS: */
static inline void *
perf_aux_output_begin(struct perf_output_handle *handle,
@@ -1408,6 +1409,10 @@ static inline void perf_event_disable(struct perf_event *event) { }
static inline int __perf_event_disable(void *info) { return -1; }
static inline void perf_event_task_tick(void) { }
static inline int perf_event_release_kernel(struct perf_event *event) { return 0; }
+static inline int perf_event_period(struct perf_event *event, u64 value)
+{
+ return -EINVAL;
+}
#endif
#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_CPU_SUP_INTEL)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 616cccf9c835..b1e4beb6931c 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -5034,16 +5034,11 @@ static int perf_event_check_period(struct perf_event *event, u64 value)
return event->pmu->check_period(event, value);
}
-static int perf_event_period(struct perf_event *event, u64 __user *arg)
+static int _perf_event_period(struct perf_event *event, u64 value)
{
- u64 value;
-
if (!is_sampling_event(event))
return -EINVAL;
- if (copy_from_user(&value, arg, sizeof(value)))
- return -EFAULT;
-
if (!value)
return -EINVAL;
@@ -5058,6 +5053,19 @@ static int perf_event_period(struct perf_event *event, u64 __user *arg)
return 0;
}
+int perf_event_period(struct perf_event *event, u64 value)
+{
+ struct perf_event_context *ctx;
+ int ret;
+
+ ctx = perf_event_ctx_lock(event);
+ ret = _perf_event_period(event, value);
+ perf_event_ctx_unlock(event, ctx);
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(perf_event_period);
+
static const struct file_operations perf_fops;
static inline int perf_fget_light(int fd, struct fd *p)
@@ -5101,8 +5109,14 @@ static long _perf_ioctl(struct perf_event *event, unsigned int cmd, unsigned lon
return _perf_event_refresh(event, arg);
case PERF_EVENT_IOC_PERIOD:
- return perf_event_period(event, (u64 __user *)arg);
+ {
+ u64 value;
+
+ if (copy_from_user(&value, (u64 __user *)arg, sizeof(value)))
+ return -EFAULT;
+ return _perf_event_period(event, value);
+ }
case PERF_EVENT_IOC_ID:
{
u64 id = primary_event_id(event);
--
2.25.1
1
3

[PATCH openEuler-1.0-LTS] media: em28xx: initialize refcount before kref_get
by Yongqiang Liu 27 Sep '22
by Yongqiang Liu 27 Sep '22
27 Sep '22
From: Dongliang Mu <mudongliangabcd(a)gmail.com>
stable inclusion
from stable-v4.19.238
commit 0113fa98a49a8e46a19b0ad80f29c904c6feec23
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5RX5X
CVE: CVE-2022-3239
---------------------------
[ Upstream commit c08eadca1bdfa099e20a32f8fa4b52b2f672236d ]
The commit 47677e51e2a4("[media] em28xx: Only deallocate struct
em28xx after finishing all extensions") adds kref_get to many init
functions (e.g., em28xx_audio_init). However, kref_init is called too
late in em28xx_usb_probe, since em28xx_init_dev before will invoke
those init functions and call kref_get function. Then refcount bug
occurs in my local syzkaller instance.
Fix it by moving kref_init before em28xx_init_dev. This issue occurs
not only in dev but also dev->dev_next.
Fixes: 47677e51e2a4 ("[media] em28xx: Only deallocate struct em28xx after finishing all extensions")
Reported-by: syzkaller <syzkaller(a)googlegroups.com>
Signed-off-by: Dongliang Mu <mudongliangabcd(a)gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco(a)xs4all.nl>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/media/usb/em28xx/em28xx-cards.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
index 3f59a98dbf9a..00a3b5768b9a 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -3816,6 +3816,8 @@ static int em28xx_usb_probe(struct usb_interface *intf,
goto err_free;
}
+ kref_init(&dev->ref);
+
dev->devno = nr;
dev->model = id->driver_info;
dev->alt = -1;
@@ -3916,6 +3918,8 @@ static int em28xx_usb_probe(struct usb_interface *intf,
}
if (dev->board.has_dual_ts && em28xx_duplicate_dev(dev) == 0) {
+ kref_init(&dev->dev_next->ref);
+
dev->dev_next->ts = SECONDARY_TS;
dev->dev_next->alt = -1;
dev->dev_next->is_audio_only = has_vendor_audio &&
@@ -3970,12 +3974,8 @@ static int em28xx_usb_probe(struct usb_interface *intf,
em28xx_write_reg(dev, 0x0b, 0x82);
mdelay(100);
}
-
- kref_init(&dev->dev_next->ref);
}
- kref_init(&dev->ref);
-
request_modules(dev);
/*
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/6] efi: capsule-loader: Fix use-after-free in efi_capsule_write
by Yongqiang Liu 26 Sep '22
by Yongqiang Liu 26 Sep '22
26 Sep '22
From: Hyunwoo Kim <imv4bel(a)gmail.com>
mainline inclusion
from mainline-v6.0-rc5
commit 9cb636b5f6a8cc6d1b50809ec8f8d33ae0c84c95
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5QI0W
CVE: CVE-2022-40307
---------------------------
A race condition may occur if the user calls close() on another thread
during a write() operation on the device node of the efi capsule.
This is a race condition that occurs between the efi_capsule_write() and
efi_capsule_flush() functions of efi_capsule_fops, which ultimately
results in UAF.
So, the page freeing process is modified to be done in
efi_capsule_release() instead of efi_capsule_flush().
Cc: <stable(a)vger.kernel.org> # v4.9+
Signed-off-by: Hyunwoo Kim <imv4bel(a)gmail.com>
Link: https://lore.kernel.org/all/20220907102920.GA88602@ubuntu/
Signed-off-by: Ard Biesheuvel <ardb(a)kernel.org>
Signed-off-by: Xia Longlong <xialonglong1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/firmware/efi/capsule-loader.c | 31 ++++++---------------------
1 file changed, 7 insertions(+), 24 deletions(-)
diff --git a/drivers/firmware/efi/capsule-loader.c b/drivers/firmware/efi/capsule-loader.c
index 96688986da56..94aae1e67c99 100644
--- a/drivers/firmware/efi/capsule-loader.c
+++ b/drivers/firmware/efi/capsule-loader.c
@@ -243,29 +243,6 @@ static ssize_t efi_capsule_write(struct file *file, const char __user *buff,
return ret;
}
-/**
- * efi_capsule_flush - called by file close or file flush
- * @file: file pointer
- * @id: not used
- *
- * If a capsule is being partially uploaded then calling this function
- * will be treated as upload termination and will free those completed
- * buffer pages and -ECANCELED will be returned.
- **/
-static int efi_capsule_flush(struct file *file, fl_owner_t id)
-{
- int ret = 0;
- struct capsule_info *cap_info = file->private_data;
-
- if (cap_info->index > 0) {
- pr_err("capsule upload not complete\n");
- efi_free_all_buff_pages(cap_info);
- ret = -ECANCELED;
- }
-
- return ret;
-}
-
/**
* efi_capsule_release - called by file close
* @inode: not used
@@ -278,6 +255,13 @@ static int efi_capsule_release(struct inode *inode, struct file *file)
{
struct capsule_info *cap_info = file->private_data;
+ if (cap_info->index > 0 &&
+ (cap_info->header.headersize == 0 ||
+ cap_info->count < cap_info->total_size)) {
+ pr_err("capsule upload not complete\n");
+ efi_free_all_buff_pages(cap_info);
+ }
+
kfree(cap_info->pages);
kfree(cap_info->phys);
kfree(file->private_data);
@@ -325,7 +309,6 @@ static const struct file_operations efi_capsule_fops = {
.owner = THIS_MODULE,
.open = efi_capsule_open,
.write = efi_capsule_write,
- .flush = efi_capsule_flush,
.release = efi_capsule_release,
.llseek = no_llseek,
};
--
2.25.1
1
5

24 Sep '22
From: Jonas Oberhauser <jonas.oberhauser(a)huawei.com>
This is the update and fixes for memory model, simplify the model by
removing redundancies, making semantics of seq-cst explicit, making ppo
a subset of po, making ppo locally computable, as well as eliminating
several spurious bugs in qspinlock and litmus tests, and ensuring
correct compilation to the official power model.
These issues were detected by Jonas Oberhauser, Viktor Vafeiadis,
and the authors of "Verifying and Optimizing Compact NUMA-Aware Locks
on Weak Memory Models", and the solutions are proposed by Jonas
Oberhauser and Viktor Vafeiadis.
Please refer to this link on the web:
https://static.sched.com/hosted_files/osseu2022/e1/oss-eu22-jonas.pdf
Signed-off-by: Jonas Oberhauser <jonas.oberhauser(a)huawei.com>
Signed-off-by: Hanjun Guo <guohanjun(a)huawei.com>
---
tools/memory-model/linux-kernel.bell | 9 ++--
tools/memory-model/linux-kernel.cat | 100 +++++++++++++++++++----------------
tools/memory-model/linux-kernel.def | 34 ++++++------
3 files changed, 77 insertions(+), 66 deletions(-)
diff --git a/tools/memory-model/linux-kernel.bell b/tools/memory-model/linux-kernel.bell
index 5be86b1..880b28b 100644
--- a/tools/memory-model/linux-kernel.bell
+++ b/tools/memory-model/linux-kernel.bell
@@ -4,6 +4,8 @@
* Copyright (C) 2016 Luc Maranget <luc.maranget(a)inria.fr> for Inria
* Copyright (C) 2017 Alan Stern <stern(a)rowland.harvard.edu>,
* Andrea Parri <parri.andrea(a)gmail.com>
+ * Copyright (C) 2022 Jonas Oberhauser <jonas.oberhauser(a)huawei.com>
+ * Viktor Vafeiadis <viktor(a)mpi-sws.org>
*
* An earlier version of this file appeared in the companion webpage for
* "Frightening small children and disconcerting grown-ups: Concurrency
@@ -16,10 +18,11 @@
enum Accesses = 'once (*READ_ONCE,WRITE_ONCE*) ||
'release (*smp_store_release*) ||
'acquire (*smp_load_acquire*) ||
+ 'seq-cst (*smp_load, xchg...*) ||
'noreturn (* R of non-return RMW *)
-instructions R[{'once,'acquire,'noreturn}]
-instructions W[{'once,'release}]
-instructions RMW[{'once,'acquire,'release}]
+instructions R[{'seq-cst, 'once,'acquire,'noreturn}]
+instructions W[{'seq-cst, 'once,'release}]
+instructions RMW[{'seq-cst, 'once,'acquire,'release}]
enum Barriers = 'wmb (*smp_wmb*) ||
'rmb (*smp_rmb*) ||
diff --git a/tools/memory-model/linux-kernel.cat b/tools/memory-model/linux-kernel.cat
index d70315f..9f14d31 100644
--- a/tools/memory-model/linux-kernel.cat
+++ b/tools/memory-model/linux-kernel.cat
@@ -4,6 +4,8 @@
* Copyright (C) 2016 Luc Maranget <luc.maranget(a)inria.fr> for Inria
* Copyright (C) 2017 Alan Stern <stern(a)rowland.harvard.edu>,
* Andrea Parri <parri.andrea(a)gmail.com>
+ * Copyright (C) 2022 Jonas Oberhauser <jonas.oberhauser(a)huawei.com>,
+ * Viktor Vafeiadis <viktor(a)mpi-sws.org>
*
* An earlier version of this file appeared in the companion webpage for
* "Frightening small children and disconcerting grown-ups: Concurrency
@@ -25,25 +27,33 @@ include "lock.cat"
(*******************)
(* Release Acquire *)
+
let acq-po = [Acquire] ; po ; [M]
let po-rel = [M] ; po ; [Release]
let po-unlock-lock-po = po ; [UL] ; (po|rf) ; [LKR] ; po
(* Fences *)
-let R4rmb = R \ Noreturn (* Reads for which rmb works *)
-let rmb = [R4rmb] ; fencerel(Rmb) ; [R4rmb]
-let wmb = [W] ; fencerel(Wmb) ; [W]
-let mb = ([M] ; fencerel(Mb) ; [M]) |
- ([M] ; fencerel(Before-atomic) ; [RMW] ; po? ; [M]) |
- ([M] ; po? ; [RMW] ; fencerel(After-atomic) ; [M]) |
- ([M] ; po? ; [LKW] ; fencerel(After-spinlock) ; [M]) |
- ([M] ; po ; [UL] ; (co | po) ; [LKW] ;
- fencerel(After-unlock-lock) ; [M])
-let gp = po ; [Sync-rcu | Sync-srcu] ; po?
-let strong-fence = mb | gp
-
+let R4rmb = R \ Noreturn
+let rmb = [R4rmb] ; po ; [Rmb] ; po ; [R4rmb]
+let wmb = [W] ; po ; [Wmb] ; po ; [W]
+
+let rmb-plain = [R \ Noreturn] ; po ; [Rmb] ; po \ ( po ; [W] ; po-loc) ; [R \ Noreturn]
+let plain-wmb = [W] ; po \ (po-loc ; [W] ; po) ; [Wmb] ; po ; [W]
+let strong-fence =
+ [M] ; po ; [Mb] ; po ; [M]
+ | [M] ; po ; [Before-atomic] ; po ; [RMW] ; po? ; [M]
+ | [M] ; po? ; [RMW] ; po ; [After-atomic] ; po ; [M]
+ | [M] ; po? ; [LKW] ; po ; [After-spinlock] ; po ; [M]
+ | [M] ; po ; [UL] ; po ; [LKR] ; po ; [After-unlock-lock] ; po ; [M]
+ | [M] ; po? ; [SC] ; po ; [M]
+ | [M] ; po ; [SC] ; po? ; [M]
+ | po ; [Sync-rcu | Sync-srcu] ; po?
+let strong-sync = strong-fence
+ | ([M] ; po-unlock-lock-po ; [After-unlock-lock] ; po ; [M])
let nonrw-fence = strong-fence | po-rel | acq-po
let fence = nonrw-fence | wmb | rmb
+
+
let barrier = fencerel(Barrier | Rmb | Wmb | Mb | Sync-rcu | Sync-srcu |
Before-atomic | After-atomic | Acquire | Release |
Rcu-lock | Rcu-unlock | Srcu-lock | Srcu-unlock) |
@@ -64,35 +74,33 @@ empty rmw & (fre ; coe) as atomic
(* Instruction execution ordering *)
(**********************************)
+
(* Preserved Program Order *)
-let dep = addr | data
-let rwdep = (dep | ctrl) ; [W]
-let overwrite = co | fr
-let to-w = rwdep | (overwrite & int) | (addr ; [Plain] ; wmb)
-let to-r = addr | (dep ; [Marked] ; rfi)
-let ppo = to-r | to-w | fence | (po-unlock-lock-po & int)
+let dop = rmb-plain? ; (addr | data | ctrl | rfi)+; plain-wmb?
+let to-w = (dop | po-loc) ; [W]
+let lrs = ([W] ; po-loc ; [R]) \ (po-loc ; [W] ; po-loc)
+let to-r = addr | ((addr | data) ; lrs)
+let ppo = to-r | to-w | fence | (po ; [UL] ; po ; [LKR] ; po)
(* Propagation: Ordering from release operations and strong fences. *)
-let A-cumul(r) = (rfe ; [Marked])? ; r
-let cumul-fence = [Marked] ; (A-cumul(strong-fence | po-rel) | wmb |
- po-unlock-lock-po) ; [Marked]
-let prop = [Marked] ; (overwrite & ext)? ; cumul-fence* ;
- [Marked] ; rfe? ; [Marked]
+let cumul-fence = [Marked] ; (rfe? ; (po-rel ; (rfe ; rmw)*) | wmb | po-unlock-lock-po) ; [Marked]
+let prop = [Marked] ; ((co | fr) & ext) ; cumul-fence* ; [Marked] ; rfe? ; [Marked]
+
(*
* Happens Before: Ordering from the passage of time.
- * No fences needed here for prop because relation confined to one process.
*)
-let hb = [Marked] ; (ppo | rfe | ((prop \ id) & int)) ; [Marked]
-acyclic hb as happens-before
+let hb = [Marked] ; (ppo | rfe | prop ; strong-sync) ; [Marked]
+acyclic hb
+
+(* No fences needed here for prop because relation confined to one process. *)
+irreflexive (prop ; ppo*)
+
+
+
+
-(****************************************)
-(* Write and fence propagation ordering *)
-(****************************************)
-(* Propagation: Each non-rf link needs a strong fence. *)
-let pb = prop ; strong-fence ; hb* ; [Marked]
-acyclic pb as propagation
(*******)
(* RCU *)
@@ -118,7 +126,7 @@ let srcu-rscsi = srcu-rscs^-1
* one but two non-rf relations, but only in conjunction with an RCU
* read-side critical section.
*)
-let rcu-link = po? ; hb* ; pb* ; prop ; po
+let rcu-link = po? ; hb* ; prop? ; po
(*
* Any sequence containing at least as many grace periods as RCU read-side
@@ -139,20 +147,20 @@ let rec rcu-order = rcu-gp | srcu-gp |
((srcu-rscsi ; rcu-link ; rcu-order ; rcu-link ; srcu-gp) & loc) |
(rcu-order ; rcu-link ; rcu-order)
let rcu-fence = po ; rcu-order ; po?
-let fence = fence | rcu-fence
-let strong-fence = strong-fence | rcu-fence
+let fence-rcu = fence | rcu-fence
+let strong-sync-rcu = strong-sync | rcu-fence
-(* rb orders instructions just as pb does *)
-let rb = prop ; rcu-fence ; hb* ; pb* ; [Marked]
+(* rb orders instructions just as hb does *)
+let rb = prop? ; rcu-fence ; hb* ; [Marked]
irreflexive rb as rcu
(*
- * The happens-before, propagation, and rcu constraints are all
+ * The happens-before and rcu constraints are all
* expressions of temporal ordering. They could be replaced by
* a single constraint on an "executes-before" relation, xb:
*
- * let xb = hb | pb | rb
+ * let xb = hb | rb
* acyclic xb as executes-before
*)
@@ -166,24 +174,24 @@ let mixed-accesses = ([Plain & W] ; (po-loc \ barrier) ; [Marked]) |
flag ~empty mixed-accesses as mixed-accesses
(* Executes-before and visibility *)
-let xbstar = (hb | pb | rb)*
+let xbstar = (hb | rb)*
let vis = cumul-fence* ; rfe? ; [Marked] ;
- ((strong-fence ; [Marked] ; xbstar) | (xbstar & int))
+ ((strong-sync-rcu ; [Marked] ; xbstar) | (xbstar & int))
(* Boundaries for lifetimes of plain accesses *)
-let w-pre-bounded = [Marked] ; (addr | fence)?
+let w-pre-bounded = [Marked] ; (addr | fence-rcu)?
let r-pre-bounded = [Marked] ; (addr | nonrw-fence |
([R4rmb] ; fencerel(Rmb) ; [~Noreturn]))?
-let w-post-bounded = fence? ; [Marked]
+let w-post-bounded = fence-rcu? ; [Marked]
let r-post-bounded = (nonrw-fence | ([~Noreturn] ; fencerel(Rmb) ; [R4rmb]))? ;
[Marked]
(* Visibility and executes-before for plain accesses *)
-let ww-vis = fence | (strong-fence ; xbstar ; w-pre-bounded) |
+let ww-vis = (strong-sync-rcu ; xbstar ; w-pre-bounded) |
(w-post-bounded ; vis ; w-pre-bounded)
-let wr-vis = fence | (strong-fence ; xbstar ; r-pre-bounded) |
+let wr-vis = (strong-sync-rcu ; xbstar ; r-pre-bounded) |
(w-post-bounded ; vis ; r-pre-bounded)
-let rw-xbstar = fence | (r-post-bounded ; xbstar ; w-pre-bounded)
+let rw-xbstar = (r-post-bounded ; xbstar ; w-pre-bounded)
(* Potential races *)
let pre-race = ext & ((Plain * M) | ((M \ IW) * Plain))
diff --git a/tools/memory-model/linux-kernel.def b/tools/memory-model/linux-kernel.def
index ef0f3c1..df239c2 100644
--- a/tools/memory-model/linux-kernel.def
+++ b/tools/memory-model/linux-kernel.def
@@ -14,7 +14,7 @@ smp_store_release(X,V) { __store{release}(*X,V); }
smp_load_acquire(X) __load{acquire}(*X)
rcu_assign_pointer(X,V) { __store{release}(X,V); }
rcu_dereference(X) __load{once}(X)
-smp_store_mb(X,V) { __store{once}(X,V); __fence{mb}; }
+smp_store_mb(X,V) { __store{seq-cst}(X,V); }
// Fences
smp_mb() { __fence{mb}; }
@@ -27,11 +27,11 @@ smp_mb__after_unlock_lock() { __fence{after-unlock-lock}; }
barrier() { __fence{barrier}; }
// Exchange
-xchg(X,V) __xchg{mb}(X,V)
+xchg(X,V) __xchg{seq-cst}(X,V)
xchg_relaxed(X,V) __xchg{once}(X,V)
xchg_release(X,V) __xchg{release}(X,V)
xchg_acquire(X,V) __xchg{acquire}(X,V)
-cmpxchg(X,V,W) __cmpxchg{mb}(X,V,W)
+cmpxchg(X,V,W) __cmpxchg{seq-cst}(X,V,W)
cmpxchg_relaxed(X,V,W) __cmpxchg{once}(X,V,W)
cmpxchg_acquire(X,V,W) __cmpxchg{acquire}(X,V,W)
cmpxchg_release(X,V,W) __cmpxchg{release}(X,V,W)
@@ -65,52 +65,52 @@ atomic_sub(V,X) { __atomic_op(X,-,V); }
atomic_inc(X) { __atomic_op(X,+,1); }
atomic_dec(X) { __atomic_op(X,-,1); }
-atomic_add_return(V,X) __atomic_op_return{mb}(X,+,V)
+atomic_add_return(V,X) __atomic_op_return{seq-cst}(X,+,V)
atomic_add_return_relaxed(V,X) __atomic_op_return{once}(X,+,V)
atomic_add_return_acquire(V,X) __atomic_op_return{acquire}(X,+,V)
atomic_add_return_release(V,X) __atomic_op_return{release}(X,+,V)
-atomic_fetch_add(V,X) __atomic_fetch_op{mb}(X,+,V)
+atomic_fetch_add(V,X) __atomic_fetch_op{seq-cst}(X,+,V)
atomic_fetch_add_relaxed(V,X) __atomic_fetch_op{once}(X,+,V)
atomic_fetch_add_acquire(V,X) __atomic_fetch_op{acquire}(X,+,V)
atomic_fetch_add_release(V,X) __atomic_fetch_op{release}(X,+,V)
-atomic_inc_return(X) __atomic_op_return{mb}(X,+,1)
+atomic_inc_return(X) __atomic_op_return{seq-cst}(X,+,1)
atomic_inc_return_relaxed(X) __atomic_op_return{once}(X,+,1)
atomic_inc_return_acquire(X) __atomic_op_return{acquire}(X,+,1)
atomic_inc_return_release(X) __atomic_op_return{release}(X,+,1)
-atomic_fetch_inc(X) __atomic_fetch_op{mb}(X,+,1)
+atomic_fetch_inc(X) __atomic_fetch_op{seq-cst}(X,+,1)
atomic_fetch_inc_relaxed(X) __atomic_fetch_op{once}(X,+,1)
atomic_fetch_inc_acquire(X) __atomic_fetch_op{acquire}(X,+,1)
atomic_fetch_inc_release(X) __atomic_fetch_op{release}(X,+,1)
-atomic_sub_return(V,X) __atomic_op_return{mb}(X,-,V)
+atomic_sub_return(V,X) __atomic_op_return{seq-cst}(X,-,V)
atomic_sub_return_relaxed(V,X) __atomic_op_return{once}(X,-,V)
atomic_sub_return_acquire(V,X) __atomic_op_return{acquire}(X,-,V)
atomic_sub_return_release(V,X) __atomic_op_return{release}(X,-,V)
-atomic_fetch_sub(V,X) __atomic_fetch_op{mb}(X,-,V)
+atomic_fetch_sub(V,X) __atomic_fetch_op{seq-cst}(X,-,V)
atomic_fetch_sub_relaxed(V,X) __atomic_fetch_op{once}(X,-,V)
atomic_fetch_sub_acquire(V,X) __atomic_fetch_op{acquire}(X,-,V)
atomic_fetch_sub_release(V,X) __atomic_fetch_op{release}(X,-,V)
-atomic_dec_return(X) __atomic_op_return{mb}(X,-,1)
+atomic_dec_return(X) __atomic_op_return{seq-cst}(X,-,1)
atomic_dec_return_relaxed(X) __atomic_op_return{once}(X,-,1)
atomic_dec_return_acquire(X) __atomic_op_return{acquire}(X,-,1)
atomic_dec_return_release(X) __atomic_op_return{release}(X,-,1)
-atomic_fetch_dec(X) __atomic_fetch_op{mb}(X,-,1)
+atomic_fetch_dec(X) __atomic_fetch_op{seq-cst}(X,-,1)
atomic_fetch_dec_relaxed(X) __atomic_fetch_op{once}(X,-,1)
atomic_fetch_dec_acquire(X) __atomic_fetch_op{acquire}(X,-,1)
atomic_fetch_dec_release(X) __atomic_fetch_op{release}(X,-,1)
-atomic_xchg(X,V) __xchg{mb}(X,V)
+atomic_xchg(X,V) __xchg{seq-cst}(X,V)
atomic_xchg_relaxed(X,V) __xchg{once}(X,V)
atomic_xchg_release(X,V) __xchg{release}(X,V)
atomic_xchg_acquire(X,V) __xchg{acquire}(X,V)
-atomic_cmpxchg(X,V,W) __cmpxchg{mb}(X,V,W)
+atomic_cmpxchg(X,V,W) __cmpxchg{seq-cst}(X,V,W)
atomic_cmpxchg_relaxed(X,V,W) __cmpxchg{once}(X,V,W)
atomic_cmpxchg_acquire(X,V,W) __cmpxchg{acquire}(X,V,W)
atomic_cmpxchg_release(X,V,W) __cmpxchg{release}(X,V,W)
-atomic_sub_and_test(V,X) __atomic_op_return{mb}(X,-,V) == 0
-atomic_dec_and_test(X) __atomic_op_return{mb}(X,-,1) == 0
-atomic_inc_and_test(X) __atomic_op_return{mb}(X,+,1) == 0
-atomic_add_negative(V,X) __atomic_op_return{mb}(X,+,V) < 0
+atomic_sub_and_test(V,X) __atomic_op_return{seq-cst}(X,-,V) == 0
+atomic_dec_and_test(X) __atomic_op_return{seq-cst}(X,-,1) == 0
+atomic_inc_and_test(X) __atomic_op_return{seq-cst}(X,+,1) == 0
+atomic_add_negative(V,X) __atomic_op_return{seq-cst}(X,+,V) < 0
--
1.7.12.4
1
0

[PATCH openEuler-1.0-LTS 1/4] mm: mem_reliable: Start fallback if no suitable zone found
by Yongqiang Liu 24 Sep '22
by Yongqiang Liu 24 Sep '22
24 Sep '22
From: Ma Wupeng <mawupeng1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I4SK3S
CVE: NA
--------------------------------
For reliable memory allocation bind to nodes which do not hvve any
reliable zones, its memory allocation will fail and then warn message
will be produced at the end of __alloc_pages_slowpath().
Though this memory allocation can fallback to movable zone in
check_after_alloc() if fallback is enabled, something should be done to
prevent this pointless warn log.
To solve this problem, fallback to movable zone if no suitable zone found.
Signed-off-by: Ma Wupeng <mawupeng1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/page_alloc.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 1e59761354e1..44d286286dbb 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -4272,6 +4272,25 @@ check_retry_cpuset(int cpuset_mems_cookie, struct alloc_context *ac)
}
#ifdef CONFIG_MEMORY_RELIABLE
+/*
+ * if fallback is enabled, fallback to movable zone if no dma/normal zone
+ * found
+ */
+static inline struct zone *mem_reliable_fallback_zone(gfp_t gfp_mask,
+ struct alloc_context *ac)
+{
+ if (!reliable_allow_fb_enabled())
+ return NULL;
+
+ if (!(gfp_mask & ___GFP_RELIABILITY))
+ return NULL;
+
+ ac->high_zoneidx = gfp_zone(gfp_mask & ~___GFP_RELIABILITY);
+ ac->preferred_zoneref = first_zones_zonelist(
+ ac->zonelist, ac->high_zoneidx, ac->nodemask);
+ return ac->preferred_zoneref->zone;
+}
+
static inline void mem_reliable_fallback_slowpath(gfp_t gfp_mask,
struct alloc_context *ac)
{
@@ -4290,6 +4309,11 @@ static inline void mem_reliable_fallback_slowpath(gfp_t gfp_mask,
}
}
#else
+static inline struct zone *mem_reliable_fallback_zone(gfp_t gfp_mask,
+ struct alloc_context *ac)
+{
+ return NULL;
+}
static inline void mem_reliable_fallback_slowpath(gfp_t gfp_mask,
struct alloc_context *ac) {}
#endif
@@ -4339,8 +4363,10 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
*/
ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
ac->high_zoneidx, ac->nodemask);
- if (!ac->preferred_zoneref->zone)
- goto nopage;
+ if (!ac->preferred_zoneref->zone) {
+ if (!mem_reliable_fallback_zone(gfp_mask, ac))
+ goto nopage;
+ }
if (gfp_mask & __GFP_KSWAPD_RECLAIM)
wake_all_kswapds(order, gfp_mask, ac);
--
2.25.1
1
3

[PATCH for openEuler 22.09] Memory model: Fix the memory model issues for Linux kernel
by Hanjun Guo 24 Sep '22
by Hanjun Guo 24 Sep '22
24 Sep '22
From: Jonas Oberhauser <jonas.oberhauser(a)huawei.com>
This the update and fixes for memory model, simplify the model by
removing redundancies, making semantics of seq-cst explicit, making ppo
a subset of po, making ppo locally computable, as well as eliminating
several spurious bugs in qspinlock and litmus tests, and ensuring
correct compilation to the official power model.
These issues were detected by Jonas Oberhauser, Viktor Vafeiadis,
and the authors of "Verifying and Optimizing Compact NUMA-Aware Locks
on Weak Memory Models", and the solutions are proposed by Jonas
Oberhauser and Viktor Vafeiadis.
Signed-off-by: Jonas Oberhauser <jonas.oberhauser(a)huawei.com>
Signed-off-by: Hanjun Guo <guohanjun(a)huawei.com>
---
tools/memory-model/linux-kernel.bell | 9 ++--
tools/memory-model/linux-kernel.cat | 100 +++++++++++++++++++----------------
2 files changed, 60 insertions(+), 49 deletions(-)
diff --git a/tools/memory-model/linux-kernel.bell b/tools/memory-model/linux-kernel.bell
index 5be86b1..880b28b 100644
--- a/tools/memory-model/linux-kernel.bell
+++ b/tools/memory-model/linux-kernel.bell
@@ -4,6 +4,8 @@
* Copyright (C) 2016 Luc Maranget <luc.maranget(a)inria.fr> for Inria
* Copyright (C) 2017 Alan Stern <stern(a)rowland.harvard.edu>,
* Andrea Parri <parri.andrea(a)gmail.com>
+ * Copyright (C) 2022 Jonas Oberhauser <jonas.oberhauser(a)huawei.com>
+ * Viktor Vafeiadis <viktor(a)mpi-sws.org>
*
* An earlier version of this file appeared in the companion webpage for
* "Frightening small children and disconcerting grown-ups: Concurrency
@@ -16,10 +18,11 @@
enum Accesses = 'once (*READ_ONCE,WRITE_ONCE*) ||
'release (*smp_store_release*) ||
'acquire (*smp_load_acquire*) ||
+ 'seq-cst (*smp_load, xchg...*) ||
'noreturn (* R of non-return RMW *)
-instructions R[{'once,'acquire,'noreturn}]
-instructions W[{'once,'release}]
-instructions RMW[{'once,'acquire,'release}]
+instructions R[{'seq-cst, 'once,'acquire,'noreturn}]
+instructions W[{'seq-cst, 'once,'release}]
+instructions RMW[{'seq-cst, 'once,'acquire,'release}]
enum Barriers = 'wmb (*smp_wmb*) ||
'rmb (*smp_rmb*) ||
diff --git a/tools/memory-model/linux-kernel.cat b/tools/memory-model/linux-kernel.cat
index d70315f..9f14d31 100644
--- a/tools/memory-model/linux-kernel.cat
+++ b/tools/memory-model/linux-kernel.cat
@@ -4,6 +4,8 @@
* Copyright (C) 2016 Luc Maranget <luc.maranget(a)inria.fr> for Inria
* Copyright (C) 2017 Alan Stern <stern(a)rowland.harvard.edu>,
* Andrea Parri <parri.andrea(a)gmail.com>
+ * Copyright (C) 2022 Jonas Oberhauser <jonas.oberhauser(a)huawei.com>,
+ * Viktor Vafeiadis <viktor(a)mpi-sws.org>
*
* An earlier version of this file appeared in the companion webpage for
* "Frightening small children and disconcerting grown-ups: Concurrency
@@ -25,25 +27,33 @@ include "lock.cat"
(*******************)
(* Release Acquire *)
+
let acq-po = [Acquire] ; po ; [M]
let po-rel = [M] ; po ; [Release]
let po-unlock-lock-po = po ; [UL] ; (po|rf) ; [LKR] ; po
(* Fences *)
-let R4rmb = R \ Noreturn (* Reads for which rmb works *)
-let rmb = [R4rmb] ; fencerel(Rmb) ; [R4rmb]
-let wmb = [W] ; fencerel(Wmb) ; [W]
-let mb = ([M] ; fencerel(Mb) ; [M]) |
- ([M] ; fencerel(Before-atomic) ; [RMW] ; po? ; [M]) |
- ([M] ; po? ; [RMW] ; fencerel(After-atomic) ; [M]) |
- ([M] ; po? ; [LKW] ; fencerel(After-spinlock) ; [M]) |
- ([M] ; po ; [UL] ; (co | po) ; [LKW] ;
- fencerel(After-unlock-lock) ; [M])
-let gp = po ; [Sync-rcu | Sync-srcu] ; po?
-let strong-fence = mb | gp
-
+let R4rmb = R \ Noreturn
+let rmb = [R4rmb] ; po ; [Rmb] ; po ; [R4rmb]
+let wmb = [W] ; po ; [Wmb] ; po ; [W]
+
+let rmb-plain = [R \ Noreturn] ; po ; [Rmb] ; po \ ( po ; [W] ; po-loc) ; [R \ Noreturn]
+let plain-wmb = [W] ; po \ (po-loc ; [W] ; po) ; [Wmb] ; po ; [W]
+let strong-fence =
+ [M] ; po ; [Mb] ; po ; [M]
+ | [M] ; po ; [Before-atomic] ; po ; [RMW] ; po? ; [M]
+ | [M] ; po? ; [RMW] ; po ; [After-atomic] ; po ; [M]
+ | [M] ; po? ; [LKW] ; po ; [After-spinlock] ; po ; [M]
+ | [M] ; po ; [UL] ; po ; [LKR] ; po ; [After-unlock-lock] ; po ; [M]
+ | [M] ; po? ; [SC] ; po ; [M]
+ | [M] ; po ; [SC] ; po? ; [M]
+ | po ; [Sync-rcu | Sync-srcu] ; po?
+let strong-sync = strong-fence
+ | ([M] ; po-unlock-lock-po ; [After-unlock-lock] ; po ; [M])
let nonrw-fence = strong-fence | po-rel | acq-po
let fence = nonrw-fence | wmb | rmb
+
+
let barrier = fencerel(Barrier | Rmb | Wmb | Mb | Sync-rcu | Sync-srcu |
Before-atomic | After-atomic | Acquire | Release |
Rcu-lock | Rcu-unlock | Srcu-lock | Srcu-unlock) |
@@ -64,35 +74,33 @@ empty rmw & (fre ; coe) as atomic
(* Instruction execution ordering *)
(**********************************)
+
(* Preserved Program Order *)
-let dep = addr | data
-let rwdep = (dep | ctrl) ; [W]
-let overwrite = co | fr
-let to-w = rwdep | (overwrite & int) | (addr ; [Plain] ; wmb)
-let to-r = addr | (dep ; [Marked] ; rfi)
-let ppo = to-r | to-w | fence | (po-unlock-lock-po & int)
+let dop = rmb-plain? ; (addr | data | ctrl | rfi)+; plain-wmb?
+let to-w = (dop | po-loc) ; [W]
+let lrs = ([W] ; po-loc ; [R]) \ (po-loc ; [W] ; po-loc)
+let to-r = addr | ((addr | data) ; lrs)
+let ppo = to-r | to-w | fence | (po ; [UL] ; po ; [LKR] ; po)
(* Propagation: Ordering from release operations and strong fences. *)
-let A-cumul(r) = (rfe ; [Marked])? ; r
-let cumul-fence = [Marked] ; (A-cumul(strong-fence | po-rel) | wmb |
- po-unlock-lock-po) ; [Marked]
-let prop = [Marked] ; (overwrite & ext)? ; cumul-fence* ;
- [Marked] ; rfe? ; [Marked]
+let cumul-fence = [Marked] ; (rfe? ; (po-rel ; (rfe ; rmw)*) | wmb | po-unlock-lock-po) ; [Marked]
+let prop = [Marked] ; ((co | fr) & ext) ; cumul-fence* ; [Marked] ; rfe? ; [Marked]
+
(*
* Happens Before: Ordering from the passage of time.
- * No fences needed here for prop because relation confined to one process.
*)
-let hb = [Marked] ; (ppo | rfe | ((prop \ id) & int)) ; [Marked]
-acyclic hb as happens-before
+let hb = [Marked] ; (ppo | rfe | prop ; strong-sync) ; [Marked]
+acyclic hb
+
+(* No fences needed here for prop because relation confined to one process. *)
+irreflexive (prop ; ppo*)
+
+
+
+
-(****************************************)
-(* Write and fence propagation ordering *)
-(****************************************)
-(* Propagation: Each non-rf link needs a strong fence. *)
-let pb = prop ; strong-fence ; hb* ; [Marked]
-acyclic pb as propagation
(*******)
(* RCU *)
@@ -118,7 +126,7 @@ let srcu-rscsi = srcu-rscs^-1
* one but two non-rf relations, but only in conjunction with an RCU
* read-side critical section.
*)
-let rcu-link = po? ; hb* ; pb* ; prop ; po
+let rcu-link = po? ; hb* ; prop? ; po
(*
* Any sequence containing at least as many grace periods as RCU read-side
@@ -139,20 +147,20 @@ let rec rcu-order = rcu-gp | srcu-gp |
((srcu-rscsi ; rcu-link ; rcu-order ; rcu-link ; srcu-gp) & loc) |
(rcu-order ; rcu-link ; rcu-order)
let rcu-fence = po ; rcu-order ; po?
-let fence = fence | rcu-fence
-let strong-fence = strong-fence | rcu-fence
+let fence-rcu = fence | rcu-fence
+let strong-sync-rcu = strong-sync | rcu-fence
-(* rb orders instructions just as pb does *)
-let rb = prop ; rcu-fence ; hb* ; pb* ; [Marked]
+(* rb orders instructions just as hb does *)
+let rb = prop? ; rcu-fence ; hb* ; [Marked]
irreflexive rb as rcu
(*
- * The happens-before, propagation, and rcu constraints are all
+ * The happens-before and rcu constraints are all
* expressions of temporal ordering. They could be replaced by
* a single constraint on an "executes-before" relation, xb:
*
- * let xb = hb | pb | rb
+ * let xb = hb | rb
* acyclic xb as executes-before
*)
@@ -166,24 +174,24 @@ let mixed-accesses = ([Plain & W] ; (po-loc \ barrier) ; [Marked]) |
flag ~empty mixed-accesses as mixed-accesses
(* Executes-before and visibility *)
-let xbstar = (hb | pb | rb)*
+let xbstar = (hb | rb)*
let vis = cumul-fence* ; rfe? ; [Marked] ;
- ((strong-fence ; [Marked] ; xbstar) | (xbstar & int))
+ ((strong-sync-rcu ; [Marked] ; xbstar) | (xbstar & int))
(* Boundaries for lifetimes of plain accesses *)
-let w-pre-bounded = [Marked] ; (addr | fence)?
+let w-pre-bounded = [Marked] ; (addr | fence-rcu)?
let r-pre-bounded = [Marked] ; (addr | nonrw-fence |
([R4rmb] ; fencerel(Rmb) ; [~Noreturn]))?
-let w-post-bounded = fence? ; [Marked]
+let w-post-bounded = fence-rcu? ; [Marked]
let r-post-bounded = (nonrw-fence | ([~Noreturn] ; fencerel(Rmb) ; [R4rmb]))? ;
[Marked]
(* Visibility and executes-before for plain accesses *)
-let ww-vis = fence | (strong-fence ; xbstar ; w-pre-bounded) |
+let ww-vis = (strong-sync-rcu ; xbstar ; w-pre-bounded) |
(w-post-bounded ; vis ; w-pre-bounded)
-let wr-vis = fence | (strong-fence ; xbstar ; r-pre-bounded) |
+let wr-vis = (strong-sync-rcu ; xbstar ; r-pre-bounded) |
(w-post-bounded ; vis ; r-pre-bounded)
-let rw-xbstar = fence | (r-post-bounded ; xbstar ; w-pre-bounded)
+let rw-xbstar = (r-post-bounded ; xbstar ; w-pre-bounded)
(* Potential races *)
let pre-race = ext & ((Plain * M) | ((M \ IW) * Plain))
--
1.7.12.4
1
0

24 Sep '22
From: Ma Wupeng <mawupeng1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I4SK3S
CVE: NA
--------------------------------
Commit bc25b3081709 ("mm: reliable: Use EINVAL in reliable_check") update
EPERM to EINVAL try to pass LTP's proc01 test, however LTP only treat
EACCESS as whitelist in the scenario.
To solve this problem, update EINVAL to EACCESS.
Fixes: bc25b3081709 ("mm: reliable: Use EINVAL in reliable_check")
Signed-off-by: Ma Wupeng <mawupeng1(a)huawei.com>
Reviewed-by: Chen Wandun <chenwandun(a)huawei.com>
---
fs/proc/base.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 0c3a2eb61726..2d1af92653bb 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1264,7 +1264,7 @@ static const struct file_operations proc_oom_score_adj_operations = {
static inline int reliable_check(struct task_struct *task, struct pid *pid)
{
if (!mem_reliable_is_enabled())
- return -EINVAL;
+ return -EACCES;
if (is_global_init(task))
return -EINVAL;
--
2.20.1
1
0

24 Sep '22
From: Ma Wupeng <mawupeng1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I4SK3S
CVE: NA
--------------------------------
LTP's proc01 test was failing be because this ret code (1):
proc01 1 TFAIL : proc01.c:400: read failed: /proc/self/task/1406366/reliable: errno=EPERM(1): Operation not permitted
To slove this problem, replace EPERM with EINVAL in reliable_check().
Signed-off-by: Ma Wupeng <mawupeng1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/proc/base.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 8ae7c2be70c2..0c3a2eb61726 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1264,14 +1264,14 @@ static const struct file_operations proc_oom_score_adj_operations = {
static inline int reliable_check(struct task_struct *task, struct pid *pid)
{
if (!mem_reliable_is_enabled())
- return -EPERM;
+ return -EINVAL;
if (is_global_init(task))
- return -EPERM;
+ return -EINVAL;
if (!task->mm || (task->flags & PF_KTHREAD) ||
(task->flags & PF_EXITING))
- return -EPERM;
+ return -EINVAL;
return 0;
}
--
2.20.1
1
0

[PATCH openEuler-22.09] Revert "net: af_key: add check for pfkey_broadcast in function pfkey_process"
by Zheng Zengkai 22 Sep '22
by Zheng Zengkai 22 Sep '22
22 Sep '22
From: Michal Kubecek <mkubecek(a)suse.cz>
stable inclusion
from stable-v5.10.122
commit 7fa8312879f78d255a63b372473a7016d4c29d67
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5L6D4
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 9c90c9b3e50e16d03c7f87d63e9db373974781e0 ]
This reverts commit 4dc2a5a8f6754492180741facf2a8787f2c415d7.
A non-zero return value from pfkey_broadcast() does not necessarily mean
an error occurred as this function returns -ESRCH when no registered
listener received the message. In particular, a call with
BROADCAST_PROMISC_ONLY flag and null one_sk argument can never return
zero so that this commit in fact prevents processing any PF_KEY message.
One visible effect is that racoon daemon fails to find encryption
algorithms like aes and refuses to start.
Excluding -ESRCH return value would fix this but it's not obvious that
we really want to bail out here and most other callers of
pfkey_broadcast() also ignore the return value. Also, as pointed out by
Steffen Klassert, PF_KEY is kind of deprecated and newer userspace code
should use netlink instead so that we should only disturb the code for
really important fixes.
v2: add a comment explaining why is the return value ignored
Signed-off-by: Michal Kubecek <mkubecek(a)suse.cz>
Signed-off-by: Steffen Klassert <steffen.klassert(a)secunet.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
net/key/af_key.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/net/key/af_key.c b/net/key/af_key.c
index dca264844be4..aa3b1e0cd311 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -2833,10 +2833,12 @@ static int pfkey_process(struct sock *sk, struct sk_buff *skb, const struct sadb
void *ext_hdrs[SADB_EXT_MAX];
int err;
- err = pfkey_broadcast(skb_clone(skb, GFP_KERNEL), GFP_KERNEL,
- BROADCAST_PROMISC_ONLY, NULL, sock_net(sk));
- if (err)
- return err;
+ /* Non-zero return value of pfkey_broadcast() does not always signal
+ * an error and even on an actual error we may still want to process
+ * the message so rather ignore the return value.
+ */
+ pfkey_broadcast(skb_clone(skb, GFP_KERNEL), GFP_KERNEL,
+ BROADCAST_PROMISC_ONLY, NULL, sock_net(sk));
memset(ext_hdrs, 0, sizeof(ext_hdrs));
err = parse_exthdrs(skb, hdr, ext_hdrs);
--
2.20.1
1
0

22 Sep '22
From: Yonglong Liu <liuyonglong(a)huawei.com>
driver inclusion
category: https://gitee.com/openeuler/kernel/issues/I5S7WZ
bugzilla: NA
CVE: NA
----------------------------
When enable lots of vf, remove the driver of vf will call keep
alive wrong resume.
Fixes: 6a804d0a6068 ("net: hns3: fix keep alive can not resume problem when system busy")
Signed-off-by: Yonglong Liu <liuyonglong(a)huawei.com>
Reviewed-by: li yongxin <liyongxin1(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 2 ++
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 1 +
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 3 ++-
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 41a12df725b3..b4b1e440fba4 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -7096,6 +7096,7 @@ int hclge_vport_start(struct hclge_vport *vport)
struct hclge_dev *hdev = vport->back;
vport->last_active_jiffies = jiffies;
+ set_bit(HCLGE_VPORT_STATE_START, &vport->state);
set_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
if (test_bit(vport->vport_id, hdev->vport_config_block)) {
@@ -7113,6 +7114,7 @@ int hclge_vport_start(struct hclge_vport *vport)
void hclge_vport_stop(struct hclge_vport *vport)
{
+ clear_bit(HCLGE_VPORT_STATE_START, &vport->state);
clear_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
}
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
index 8477dc343a40..99a55fa74cd4 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
@@ -926,6 +926,7 @@ enum HCLGE_VPORT_STATE {
HCLGE_VPORT_STATE_MAC_TBL_CHANGE,
HCLGE_VPORT_STATE_PROMISC_CHANGE,
HCLGE_VPORT_STATE_VLAN_FLTR_CHANGE,
+ HCLGE_VPORT_STATE_START,
HCLGE_VPORT_STATE_MAX
};
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
index 45f94cd33524..893f6e0ce473 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
@@ -644,7 +644,8 @@ static void hclge_vf_keep_alive(struct hclge_vport *vport)
vport->last_active_jiffies = jiffies;
- if (!test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state)) {
+ if (test_bit(HCLGE_VPORT_STATE_START, &vport->state) &&
+ !test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state)) {
set_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
dev_info(&hdev->pdev->dev, "VF %u keep alive resume!",
--
2.25.1
1
1

[PATCH 1/2] net: hns3: fix keep alive can not resume problem when system busy
by Laibin Qiu 22 Sep '22
by Laibin Qiu 22 Sep '22
22 Sep '22
From: Yonglong Liu <liuyonglong(a)huawei.com>
driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5S7WZ
CVE: NA
----------------------------
Currently, VF send keep alive to PF every 2s, and PF detect the
keep alive for 8s, some case, the work queue may schedule late,
cause keep alive lost, then the mac setting from PF may not
affect to the VF, and the keep alive can not resume, only reset
VF or reload VF driver can resume.
This patch adds keep alive resume mechanism, and adds some debug
print for this case.
When link status change between keep alive lost and resume, the
link status of VF may not the same as the PF, so adds push link
status to VF to avoid this case.
Signed-off-by: Yonglong Liu <liuyonglong(a)huawei.com>
Reviewed-by: li yongxin <liyongxin1(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
.../hisilicon/hns3/hns3pf/hclge_main.c | 9 ++++++--
.../hisilicon/hns3/hns3pf/hclge_mbx.c | 22 +++++++++++++++++++
2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 7e5e58470017..41a12df725b3 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -4046,7 +4046,12 @@ static void hclge_update_vport_alive(struct hclge_dev *hdev)
* receive a vf's alive msg for 8s, regards the vf is offline
*/
if (time_after(jiffies, vport->last_active_jiffies + 8 * HZ))
- clear_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
+ if (test_and_clear_bit(HCLGE_VPORT_STATE_ALIVE,
+ &vport->state))
+ dev_info(&hdev->pdev->dev,
+ "VF %u keep alive lost!",
+ vport->vport_id -
+ HCLGE_VF_VPORT_START_NUM);
/* If vf is not alive, set to default value */
if (!test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state))
@@ -7090,8 +7095,8 @@ int hclge_vport_start(struct hclge_vport *vport)
{
struct hclge_dev *hdev = vport->back;
- set_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
vport->last_active_jiffies = jiffies;
+ set_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
if (test_bit(vport->vport_id, hdev->vport_config_block)) {
if (vport->vport_id) {
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
index b1b59c1f5cc6..45f94cd33524 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
@@ -639,7 +639,29 @@ static int hclge_reset_vf(struct hclge_vport *vport)
static void hclge_vf_keep_alive(struct hclge_vport *vport)
{
+ struct hclge_dev *hdev = vport->back;
+ int ret;
+
vport->last_active_jiffies = jiffies;
+
+ if (!test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state)) {
+ set_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state);
+
+ dev_info(&hdev->pdev->dev, "VF %u keep alive resume!",
+ vport->vport_id - HCLGE_VF_VPORT_START_NUM);
+
+ /* if vf support push link, need to push link status after keep
+ * alive restore, because the vf will not fetch the link status
+ * of it's own.
+ */
+ ret = hclge_push_vf_link_status(vport);
+ if (ret) {
+ dev_err(&hdev->pdev->dev,
+ "failed to push link status to vf%u, ret=%d\n",
+ vport->vport_id - HCLGE_VF_VPORT_START_NUM,
+ ret);
+ }
+ }
}
static int hclge_set_vf_mtu(struct hclge_vport *vport,
--
2.25.1
1
1

[PATCH openEuler-5.10 01/16] blk-mq: fix io hung due to missing commit_rqs
by Zheng Zengkai 21 Sep '22
by Zheng Zengkai 21 Sep '22
21 Sep '22
From: Yu Kuai <yukuai3(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 186851, https://gitee.com/openeuler/kernel/issues/I5L01G
CVE: NA
--------------------------------
Currently, in virtio_scsi, if 'bd->last' is not set to true while
dispatching request, such io will stay in driver's queue, and driver
will wait for block layer to dispatch more rqs. However, if block
layer failed to dispatch more rq, it should trigger commit_rqs to
inform driver.
There is a problem in blk_mq_try_issue_list_directly() that commit_rqs
won't be called:
// assume that queue_depth is set to 1, list contains two rq
blk_mq_try_issue_list_directly
blk_mq_request_issue_directly
// dispatch first rq
// last is false
__blk_mq_try_issue_directly
blk_mq_get_dispatch_budget
// succeed to get first budget
__blk_mq_issue_directly
scsi_queue_rq
cmd->flags |= SCMD_LAST
virtscsi_queuecommand
kick = (sc->flags & SCMD_LAST) != 0
// kick is false, first rq won't issue to disk
queued++
blk_mq_request_issue_directly
// dispatch second rq
__blk_mq_try_issue_directly
blk_mq_get_dispatch_budget
// failed to get second budget
ret == BLK_STS_RESOURCE
blk_mq_request_bypass_insert
// errors is still 0
if (!list_empty(list) || errors && ...)
// won't pass, commit_rqs won't be called
In this situation, first rq relied on second rq to dispatch, while
second rq relied on first rq to complete, thus they will both hung.
Fix the problem by also treat 'BLK_STS_*RESOURCE' as 'errors' since
it means that request is not queued successfully.
Same problem exists in blk_mq_dispatch_rq_list(), 'BLK_STS_*RESOURCE'
can't be treated as 'errors' here, fix the problem by calling
commit_rqs if queue_rq return 'BLK_STS_*RESOURCE'.
Fixes: d666ba98f849 ("blk-mq: add mq_ops->commit_rqs()")
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Link: https://lore.kernel.org/all/20220726122224.1790882-1-yukuai1@huaweicloud.co…
Reviewed-by: Ming Lei <ming.lei(a)redhat.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
block/blk-mq.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 1941ffc4db85..b9827b3d3f63 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1484,7 +1484,8 @@ bool blk_mq_dispatch_rq_list(struct blk_mq_hw_ctx *hctx, struct list_head *list,
/* If we didn't flush the entire list, we could have told the driver
* there was more coming, but that turned out to be a lie.
*/
- if ((!list_empty(list) || errors) && q->mq_ops->commit_rqs && queued)
+ if ((!list_empty(list) || errors || needs_resource ||
+ ret == BLK_STS_DEV_RESOURCE) && q->mq_ops->commit_rqs && queued)
q->mq_ops->commit_rqs(hctx);
/*
* Any items that need requeuing? Stuff them into hctx->dispatch,
@@ -2224,6 +2225,7 @@ void blk_mq_try_issue_list_directly(struct blk_mq_hw_ctx *hctx,
list_del_init(&rq->queuelist);
ret = blk_mq_request_issue_directly(rq, list_empty(list));
if (ret != BLK_STS_OK) {
+ errors++;
if (ret == BLK_STS_RESOURCE ||
ret == BLK_STS_DEV_RESOURCE) {
blk_mq_request_bypass_insert(rq, false,
@@ -2231,7 +2233,6 @@ void blk_mq_try_issue_list_directly(struct blk_mq_hw_ctx *hctx,
break;
}
blk_mq_end_request(rq, ret);
- errors++;
} else
queued++;
}
--
2.20.1
1
15

[PATCH openEuler-22.09 v2] bpf:programmable: Fix build error of 'stack exceeds 512 bytes'
by Zheng Zengkai 21 Sep '22
by Zheng Zengkai 21 Sep '22
21 Sep '22
From: Hui Tang <tanghui20(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5RMFU
CVE: NA
--------------------------------
1.Change arg type of 'bpf_get_cpumask_info' to avoid
bpf program stack exceeds 512 bytes.
2.Fix back-edge error in sample 'sched_select_core'
3.Fix loop too complex in sample 'sached_select_core'
Changes in v2:
Move cpu initialization out of the for loop.
Fixes: 1bf0417b95a9 ("sched: programmable: Add helper function for cpu topo...")
Fixes: 2c1189e32bf9 ("samples:bpf: Add samples for cfs select core")
Signed-off-by: Hui Tang <tanghui20(a)huawei.com>
---
include/uapi/linux/bpf.h | 2 +-
kernel/sched/bpf_topology.c | 9 ++-
samples/bpf/sched_select_core_kern.c | 32 ++++++++---
tools/include/uapi/linux/bpf.h | 2 +-
tools/lib/bpf/libbpf_sched.h | 86 +++++++++++++++++++++-------
5 files changed, 96 insertions(+), 35 deletions(-)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index db585d960d64..7e474c6fc4a7 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -3903,7 +3903,7 @@ union bpf_attr {
* Return
* 0 on success, or a negative error in case of failure.
*
- * int bpf_get_cpumask_info(struct bpf_cpumask_info *cpus, int len)
+ * int bpf_get_cpumask_info(struct bpf_map *map, struct bpf_cpumask_info *cpus)
* Description
* Get system cpus returned in *cpus*.
* Return
diff --git a/kernel/sched/bpf_topology.c b/kernel/sched/bpf_topology.c
index 9c2eda139e2a..843b6092a64f 100644
--- a/kernel/sched/bpf_topology.c
+++ b/kernel/sched/bpf_topology.c
@@ -70,10 +70,9 @@ const struct bpf_func_proto bpf_init_cpu_topology_proto = {
.arg2_type = ARG_ANYTHING,
};
-BPF_CALL_2(bpf_get_cpumask_info, struct bpf_cpumask_info *, cpus,
- int, len)
+BPF_CALL_2(bpf_get_cpumask_info, struct bpf_map *, map, struct bpf_cpumask_info *, cpus)
{
- if (len != sizeof(*cpus))
+ if (!cpus)
return -EINVAL;
cpumask_copy(&cpus->cpu_possible_cpumask, cpu_possible_mask);
@@ -92,6 +91,6 @@ const struct bpf_func_proto bpf_get_cpumask_info_proto = {
.func = bpf_get_cpumask_info,
.gpl_only = false,
.ret_type = RET_INTEGER,
- .arg1_type = ARG_PTR_TO_UNINIT_MEM,
- .arg2_type = ARG_CONST_SIZE,
+ .arg1_type = ARG_CONST_MAP_PTR,
+ .arg2_type = ARG_PTR_TO_MAP_VALUE_OR_NULL,
};
diff --git a/samples/bpf/sched_select_core_kern.c b/samples/bpf/sched_select_core_kern.c
index 18617e89b395..30765ae65f85 100644
--- a/samples/bpf/sched_select_core_kern.c
+++ b/samples/bpf/sched_select_core_kern.c
@@ -62,7 +62,7 @@ struct tag_info {
struct tag_info tag_tbl[] = {
{TAG_NONE, ""},
- {TAG_ID(1), "0-3"},
+ {TAG_ID(1), "0-1"},
{TAG_ID(2), "4-7"},
{TAG_MAX, ""},
};
@@ -94,13 +94,17 @@ static struct cpumask *select_better_cpus(struct task_struct *p,
long min_util = INT_MIN;
struct task_group *tg;
long spare;
- int cpu;
+ int cpu, i;
if (!prefer_cpus_valid(prefer_cpus, (void *)getVal(p->cpus_ptr)))
return (void *)getVal(p->cpus_ptr);
tg = p->sched_task_group;
- libbpf_for_each_cpu(cpu, prefer_cpus) {
+ for (i = 0, cpu = -1; i < BPF_SCHED_LOOP_MAX; i++) {
+ cpu = libbpf_cpumask_next(cpu, (void *)getVal(prefer_cpus));
+ if (cpu >= libbpf_nr_cpus_ids())
+ break;
+
if (idlest_cpu && libbpf_available_idle_cpu(cpu)) {
*idlest_cpu = cpu;
} else if (idlest_cpu) {
@@ -159,9 +163,14 @@ int BPF_PROG(cfs_select_cpu_range, struct sched_migrate_ctx *h_ctx)
SEC("sched/cfs_select_rq_exit")
int BPF_PROG(cfs_select_cpu_range_exit, struct sched_migrate_ctx *h_ctx)
{
+ struct task_struct *p = getVal(h_ctx->task);
+ long tag = getVal(p->tag);
int *idlest_cpu;
int key = 0;
+ if (tag <= TAG_NONE || tag >= TAG_MAX)
+ return SELECT_RQ_EXIT_CPU_VALID;
+
idlest_cpu = bpf_map_lookup_elem(&map_idlest_cpu, &key);
if (!idlest_cpu) {
libbpf_sched_set_task_cpus_ptr(h_ctx, (void *)getVal(h_ctx->cpus_allowed));
@@ -186,7 +195,7 @@ static int find_idlest_cpu(struct task_struct *p, int parent)
int cpu;
int i;
- for (i = 0, cpu = -1; i < NR_CPUS; i++) {
+ for (i = 0, cpu = -1; i < BPF_SCHED_LOOP_MAX; i++) {
cpu = libbpf_cpumask_next(cpu, (void *)getVal(p->cpus_ptr));
if (cpu >= libbpf_nr_cpus_ids())
break;
@@ -203,17 +212,26 @@ static int find_idlest_cpu(struct task_struct *p, int parent)
static int select_idle_cpu(struct task_struct *p, int parent, int prev_cpu)
{
- int cpu;
+ int cpu, i;
if (libbpf_available_idle_cpu(prev_cpu))
return prev_cpu;
if (libbpf_available_idle_cpu(parent))
- return prev_cpu;
+ return parent;
+
+ cpu = libbpf_cpumask_next_wrap(prev_cpu - 1,
+ (void *)getVal(p->cpus_ptr),
+ prev_cpu, false);
+ for (i = 0; i < BPF_SCHED_LOOP_MAX; i++) {
+ if (cpu >= libbpf_nr_cpumask_bits())
+ break;
- libbpf_for_each_cpu_wrap(cpu, (void *)getVal(p->cpus_ptr), prev_cpu) {
if (libbpf_available_idle_cpu(cpu))
return cpu;
+
+ cpu = libbpf_cpumask_next_wrap(cpu, (void *)getVal(p->cpus_ptr),
+ prev_cpu, true);
}
return prev_cpu;
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index 57b927e99092..22f7880a0bb6 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -4613,7 +4613,7 @@ union bpf_attr {
* Return
* 0 on success, or a negative error in case of failure.
*
- * int bpf_get_cpumask_info(struct bpf_cpumask_info *cpus, int len)
+ * int bpf_get_cpumask_info(struct bpf_map *map, struct bpf_cpumask_info *cpus)
* Description
* Get system cpus returned in *cpus*.
* Return
diff --git a/tools/lib/bpf/libbpf_sched.h b/tools/lib/bpf/libbpf_sched.h
index 6cb30e8e81f8..187e854b99b3 100644
--- a/tools/lib/bpf/libbpf_sched.h
+++ b/tools/lib/bpf/libbpf_sched.h
@@ -21,6 +21,8 @@
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
+/* set bigger value may lead verifier failed */
+#define BPF_SCHED_LOOP_MAX 1024
#define INVALID_PTR ((void *)(0UL))
#define getVal(P) \
({ \
@@ -69,6 +71,13 @@ static __always_inline int libbpf_nr_cpumask_bits(void);
#endif
+struct {
+ __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
+ __type(key, u32);
+ __type(value, struct bpf_cpumask_info);
+ __uint(max_entries, 1);
+} map_cpumask_info SEC(".maps");
+
static __always_inline long libbpf_cpumask_copy(struct cpumask *dst,
struct cpumask *src)
{
@@ -228,58 +237,93 @@ static __always_inline long libbpf_cpumask_cpulist_parse(char *src1,
static __always_inline int libbpf_num_active_cpus(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nums_active_cpus);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nums_active_cpus);
}
static __always_inline int libbpf_num_possible_cpus(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nums_possible_cpus);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nums_possible_cpus);
}
static __always_inline void libbpf_possible_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_possible_cpumask);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_possible_cpumask);
}
static __always_inline void libbpf_active_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_active_cpumask);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_active_cpumask);
}
static __always_inline void libbpf_isolate_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_isolate_cpumask);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_isolate_cpumask);
}
static __always_inline int libbpf_nr_cpus_ids(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nr_cpu_ids);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nr_cpu_ids);
}
static __always_inline int libbpf_nr_cpumask_bits(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.bpf_nr_cpumask_bits);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->bpf_nr_cpumask_bits);
}
static __always_inline unsigned long libbpf_cfs_load_avg_of(int cpu)
--
2.20.1
1
0

[PATCH openEuler-5.10-LTS 01/18] x86/speculation: Add RSB VM Exit protections
by Zheng Zengkai 20 Sep '22
by Zheng Zengkai 20 Sep '22
20 Sep '22
From: Daniel Sneddon <daniel.sneddon(a)linux.intel.com>
stable inclusion
from stable-v5.10.136
commit 509c2c9fe75ea7493eebbb6bb2f711f37530ae19
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5N1SO
CVE: CVE-2022-26373
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 2b1299322016731d56807aa49254a5ea3080b6b3 upstream.
tl;dr: The Enhanced IBRS mitigation for Spectre v2 does not work as
documented for RET instructions after VM exits. Mitigate it with a new
one-entry RSB stuffing mechanism and a new LFENCE.
== Background ==
Indirect Branch Restricted Speculation (IBRS) was designed to help
mitigate Branch Target Injection and Speculative Store Bypass, i.e.
Spectre, attacks. IBRS prevents software run in less privileged modes
from affecting branch prediction in more privileged modes. IBRS requires
the MSR to be written on every privilege level change.
To overcome some of the performance issues of IBRS, Enhanced IBRS was
introduced. eIBRS is an "always on" IBRS, in other words, just turn
it on once instead of writing the MSR on every privilege level change.
When eIBRS is enabled, more privileged modes should be protected from
less privileged modes, including protecting VMMs from guests.
== Problem ==
Here's a simplification of how guests are run on Linux' KVM:
void run_kvm_guest(void)
{
// Prepare to run guest
VMRESUME();
// Clean up after guest runs
}
The execution flow for that would look something like this to the
processor:
1. Host-side: call run_kvm_guest()
2. Host-side: VMRESUME
3. Guest runs, does "CALL guest_function"
4. VM exit, host runs again
5. Host might make some "cleanup" function calls
6. Host-side: RET from run_kvm_guest()
Now, when back on the host, there are a couple of possible scenarios of
post-guest activity the host needs to do before executing host code:
* on pre-eIBRS hardware (legacy IBRS, or nothing at all), the RSB is not
touched and Linux has to do a 32-entry stuffing.
* on eIBRS hardware, VM exit with IBRS enabled, or restoring the host
IBRS=1 shortly after VM exit, has a documented side effect of flushing
the RSB except in this PBRSB situation where the software needs to stuff
the last RSB entry "by hand".
IOW, with eIBRS supported, host RET instructions should no longer be
influenced by guest behavior after the host retires a single CALL
instruction.
However, if the RET instructions are "unbalanced" with CALLs after a VM
exit as is the RET in #6, it might speculatively use the address for the
instruction after the CALL in #3 as an RSB prediction. This is a problem
since the (untrusted) guest controls this address.
Balanced CALL/RET instruction pairs such as in step #5 are not affected.
== Solution ==
The PBRSB issue affects a wide variety of Intel processors which
support eIBRS. But not all of them need mitigation. Today,
X86_FEATURE_RSB_VMEXIT triggers an RSB filling sequence that mitigates
PBRSB. Systems setting RSB_VMEXIT need no further mitigation - i.e.,
eIBRS systems which enable legacy IBRS explicitly.
However, such systems (X86_FEATURE_IBRS_ENHANCED) do not set RSB_VMEXIT
and most of them need a new mitigation.
Therefore, introduce a new feature flag X86_FEATURE_RSB_VMEXIT_LITE
which triggers a lighter-weight PBRSB mitigation versus RSB_VMEXIT.
The lighter-weight mitigation performs a CALL instruction which is
immediately followed by a speculative execution barrier (INT3). This
steers speculative execution to the barrier -- just like a retpoline
-- which ensures that speculation can never reach an unbalanced RET.
Then, ensure this CALL is retired before continuing execution with an
LFENCE.
In other words, the window of exposure is opened at VM exit where RET
behavior is troublesome. While the window is open, force RSB predictions
sampling for RET targets to a dead end at the INT3. Close the window
with the LFENCE.
There is a subset of eIBRS systems which are not vulnerable to PBRSB.
Add these systems to the cpu_vuln_whitelist[] as NO_EIBRS_PBRSB.
Future systems that aren't vulnerable will set ARCH_CAP_PBRSB_NO.
[ bp: Massage, incorporate review comments from Andy Cooper. ]
Signed-off-by: Daniel Sneddon <daniel.sneddon(a)linux.intel.com>
Co-developed-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
conflict:
arch/x86/include/asm/cpufeatures.h
Signed-off-by: Chen Jiahao <chenjiahao16(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
Documentation/admin-guide/hw-vuln/spectre.rst | 8 ++
arch/x86/include/asm/cpufeatures.h | 2 +
arch/x86/include/asm/msr-index.h | 4 +
arch/x86/include/asm/nospec-branch.h | 17 +++-
arch/x86/kernel/cpu/bugs.c | 86 ++++++++++++++-----
arch/x86/kernel/cpu/common.c | 12 ++-
arch/x86/kvm/vmx/vmenter.S | 8 +-
tools/arch/x86/include/asm/cpufeatures.h | 1 +
tools/arch/x86/include/asm/msr-index.h | 4 +
9 files changed, 113 insertions(+), 29 deletions(-)
diff --git a/Documentation/admin-guide/hw-vuln/spectre.rst b/Documentation/admin-guide/hw-vuln/spectre.rst
index 6bd97cd50d62..7e061ed449aa 100644
--- a/Documentation/admin-guide/hw-vuln/spectre.rst
+++ b/Documentation/admin-guide/hw-vuln/spectre.rst
@@ -422,6 +422,14 @@ The possible values in this file are:
'RSB filling' Protection of RSB on context switch enabled
============= ===========================================
+ - EIBRS Post-barrier Return Stack Buffer (PBRSB) protection status:
+
+ =========================== =======================================================
+ 'PBRSB-eIBRS: SW sequence' CPU is affected and protection of RSB on VMEXIT enabled
+ 'PBRSB-eIBRS: Vulnerable' CPU is vulnerable
+ 'PBRSB-eIBRS: Not affected' CPU is not affected by PBRSB
+ =========================== =======================================================
+
Full mitigation might require a microcode update from the CPU
vendor. When the necessary microcode is not available, the kernel will
report vulnerability.
diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index bf531e883e82..b5852d41d9b9 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -297,6 +297,7 @@
#define X86_FEATURE_RETPOLINE_LFENCE (11*32+13) /* "" Use LFENCE for Spectre variant 2 */
#define X86_FEATURE_RETHUNK (11*32+14) /* "" Use REturn THUNK */
#define X86_FEATURE_UNRET (11*32+15) /* "" AMD BTB untrain return */
+#define X86_FEATURE_RSB_VMEXIT_LITE (11*32+17) /* "" Fill RSB on VM exit when EIBRS is enabled */
/* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */
#define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */
@@ -428,5 +429,6 @@
#define X86_BUG_SRBDS X86_BUG(24) /* CPU may leak RNG bits if not mitigated */
#define X86_BUG_MMIO_STALE_DATA X86_BUG(25) /* CPU is affected by Processor MMIO Stale Data vulnerabilities */
#define X86_BUG_RETBLEED X86_BUG(26) /* CPU is affected by RETBleed */
+#define X86_BUG_EIBRS_PBRSB X86_BUG(27) /* EIBRS is vulnerable to Post Barrier RSB Predictions */
#endif /* _ASM_X86_CPUFEATURES_H */
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index ffc09df04d41..d9c352e76850 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -148,6 +148,10 @@
* are restricted to targets in
* kernel.
*/
+#define ARCH_CAP_PBRSB_NO BIT(24) /*
+ * Not susceptible to Post-Barrier
+ * Return Stack Buffer Predictions.
+ */
#define MSR_IA32_FLUSH_CMD 0x0000010b
#define L1D_FLUSH BIT(0) /*
diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h
index 32e25cac72b2..3c615488b740 100644
--- a/arch/x86/include/asm/nospec-branch.h
+++ b/arch/x86/include/asm/nospec-branch.h
@@ -118,13 +118,28 @@
#endif
.endm
+.macro ISSUE_UNBALANCED_RET_GUARD
+ ANNOTATE_INTRA_FUNCTION_CALL
+ call .Lunbalanced_ret_guard_\@
+ int3
+.Lunbalanced_ret_guard_\@:
+ add $(BITS_PER_LONG/8), %_ASM_SP
+ lfence
+.endm
+
/*
* A simpler FILL_RETURN_BUFFER macro. Don't make people use the CPP
* monstrosity above, manually.
*/
-.macro FILL_RETURN_BUFFER reg:req nr:req ftr:req
+.macro FILL_RETURN_BUFFER reg:req nr:req ftr:req ftr2
+.ifb \ftr2
ALTERNATIVE "jmp .Lskip_rsb_\@", "", \ftr
+.else
+ ALTERNATIVE_2 "jmp .Lskip_rsb_\@", "", \ftr, "jmp .Lunbalanced_\@", \ftr2
+.endif
__FILL_RETURN_BUFFER(\reg,\nr,%_ASM_SP)
+.Lunbalanced_\@:
+ ISSUE_UNBALANCED_RET_GUARD
.Lskip_rsb_\@:
.endm
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index bc6382f5ec27..d4cb9ff639aa 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1290,6 +1290,53 @@ static void __init spec_ctrl_disable_kernel_rrsba(void)
}
}
+static void __init spectre_v2_determine_rsb_fill_type_at_vmexit(enum spectre_v2_mitigation mode)
+{
+ /*
+ * Similar to context switches, there are two types of RSB attacks
+ * after VM exit:
+ *
+ * 1) RSB underflow
+ *
+ * 2) Poisoned RSB entry
+ *
+ * When retpoline is enabled, both are mitigated by filling/clearing
+ * the RSB.
+ *
+ * When IBRS is enabled, while #1 would be mitigated by the IBRS branch
+ * prediction isolation protections, RSB still needs to be cleared
+ * because of #2. Note that SMEP provides no protection here, unlike
+ * user-space-poisoned RSB entries.
+ *
+ * eIBRS should protect against RSB poisoning, but if the EIBRS_PBRSB
+ * bug is present then a LITE version of RSB protection is required,
+ * just a single call needs to retire before a RET is executed.
+ */
+ switch (mode) {
+ case SPECTRE_V2_NONE:
+ return;
+
+ case SPECTRE_V2_EIBRS_LFENCE:
+ case SPECTRE_V2_EIBRS:
+ if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) {
+ setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT_LITE);
+ pr_info("Spectre v2 / PBRSB-eIBRS: Retire a single CALL on VMEXIT\n");
+ }
+ return;
+
+ case SPECTRE_V2_EIBRS_RETPOLINE:
+ case SPECTRE_V2_RETPOLINE:
+ case SPECTRE_V2_LFENCE:
+ case SPECTRE_V2_IBRS:
+ setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT);
+ pr_info("Spectre v2 / SpectreRSB : Filling RSB on VMEXIT\n");
+ return;
+ }
+
+ pr_warn_once("Unknown Spectre v2 mode, disabling RSB mitigation at VM exit");
+ dump_stack();
+}
+
static void __init spectre_v2_select_mitigation(void)
{
enum spectre_v2_mitigation_cmd cmd = spectre_v2_parse_cmdline();
@@ -1438,28 +1485,7 @@ static void __init spectre_v2_select_mitigation(void)
setup_force_cpu_cap(X86_FEATURE_RSB_CTXSW);
pr_info("Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch\n");
- /*
- * Similar to context switches, there are two types of RSB attacks
- * after vmexit:
- *
- * 1) RSB underflow
- *
- * 2) Poisoned RSB entry
- *
- * When retpoline is enabled, both are mitigated by filling/clearing
- * the RSB.
- *
- * When IBRS is enabled, while #1 would be mitigated by the IBRS branch
- * prediction isolation protections, RSB still needs to be cleared
- * because of #2. Note that SMEP provides no protection here, unlike
- * user-space-poisoned RSB entries.
- *
- * eIBRS, on the other hand, has RSB-poisoning protections, so it
- * doesn't need RSB clearing after vmexit.
- */
- if (boot_cpu_has(X86_FEATURE_RETPOLINE) ||
- boot_cpu_has(X86_FEATURE_KERNEL_IBRS))
- setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT);
+ spectre_v2_determine_rsb_fill_type_at_vmexit(mode);
/*
* Retpoline protects the kernel, but doesn't protect firmware. IBRS
@@ -2202,6 +2228,19 @@ static char *ibpb_state(void)
return "";
}
+static char *pbrsb_eibrs_state(void)
+{
+ if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) {
+ if (boot_cpu_has(X86_FEATURE_RSB_VMEXIT_LITE) ||
+ boot_cpu_has(X86_FEATURE_RSB_VMEXIT))
+ return ", PBRSB-eIBRS: SW sequence";
+ else
+ return ", PBRSB-eIBRS: Vulnerable";
+ } else {
+ return ", PBRSB-eIBRS: Not affected";
+ }
+}
+
static ssize_t spectre_v2_show_state(char *buf)
{
if (spectre_v2_enabled == SPECTRE_V2_LFENCE)
@@ -2214,12 +2253,13 @@ static ssize_t spectre_v2_show_state(char *buf)
spectre_v2_enabled == SPECTRE_V2_EIBRS_LFENCE)
return sprintf(buf, "Vulnerable: eIBRS+LFENCE with unprivileged eBPF and SMT\n");
- return sprintf(buf, "%s%s%s%s%s%s\n",
+ return sprintf(buf, "%s%s%s%s%s%s%s\n",
spectre_v2_strings[spectre_v2_enabled],
ibpb_state(),
boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", IBRS_FW" : "",
stibp_state(),
boot_cpu_has(X86_FEATURE_RSB_CTXSW) ? ", RSB filling" : "",
+ pbrsb_eibrs_state(),
spectre_v2_module_string());
}
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 901352bd3b42..9fc91482e85e 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1024,6 +1024,7 @@ static void identify_cpu_without_cpuid(struct cpuinfo_x86 *c)
#define NO_SWAPGS BIT(6)
#define NO_ITLB_MULTIHIT BIT(7)
#define NO_SPECTRE_V2 BIT(8)
+#define NO_EIBRS_PBRSB BIT(9)
#define VULNWL(vendor, family, model, whitelist) \
X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, whitelist)
@@ -1064,7 +1065,7 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
VULNWL_INTEL(ATOM_GOLDMONT, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
VULNWL_INTEL(ATOM_GOLDMONT_D, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
- VULNWL_INTEL(ATOM_GOLDMONT_PLUS, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
+ VULNWL_INTEL(ATOM_GOLDMONT_PLUS, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_EIBRS_PBRSB),
/*
* Technically, swapgs isn't serializing on AMD (despite it previously
@@ -1074,7 +1075,9 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
* good enough for our purposes.
*/
- VULNWL_INTEL(ATOM_TREMONT_D, NO_ITLB_MULTIHIT),
+ VULNWL_INTEL(ATOM_TREMONT, NO_EIBRS_PBRSB),
+ VULNWL_INTEL(ATOM_TREMONT_L, NO_EIBRS_PBRSB),
+ VULNWL_INTEL(ATOM_TREMONT_D, NO_ITLB_MULTIHIT | NO_EIBRS_PBRSB),
/* AMD Family 0xf - 0x12 */
VULNWL_AMD(0x0f, NO_MELTDOWN | NO_SSB | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT),
@@ -1252,6 +1255,11 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
setup_force_cpu_bug(X86_BUG_RETBLEED);
}
+ if (cpu_has(c, X86_FEATURE_IBRS_ENHANCED) &&
+ !cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) &&
+ !(ia32_cap & ARCH_CAP_PBRSB_NO))
+ setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
+
if (cpu_matches(cpu_vuln_whitelist, NO_MELTDOWN))
return;
diff --git a/arch/x86/kvm/vmx/vmenter.S b/arch/x86/kvm/vmx/vmenter.S
index 857fa0fc49fa..982138bebb70 100644
--- a/arch/x86/kvm/vmx/vmenter.S
+++ b/arch/x86/kvm/vmx/vmenter.S
@@ -197,11 +197,13 @@ SYM_INNER_LABEL(vmx_vmexit, SYM_L_GLOBAL)
* entries and (in some cases) RSB underflow.
*
* eIBRS has its own protection against poisoned RSB, so it doesn't
- * need the RSB filling sequence. But it does need to be enabled
- * before the first unbalanced RET.
+ * need the RSB filling sequence. But it does need to be enabled, and a
+ * single call to retire, before the first unbalanced RET.
*/
- FILL_RETURN_BUFFER %_ASM_CX, RSB_CLEAR_LOOPS, X86_FEATURE_RSB_VMEXIT
+ FILL_RETURN_BUFFER %_ASM_CX, RSB_CLEAR_LOOPS, X86_FEATURE_RSB_VMEXIT,\
+ X86_FEATURE_RSB_VMEXIT_LITE
+
pop %_ASM_ARG2 /* @flags */
pop %_ASM_ARG1 /* @vmx */
diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h
index 54ba20492ad1..ec53f52a06a5 100644
--- a/tools/arch/x86/include/asm/cpufeatures.h
+++ b/tools/arch/x86/include/asm/cpufeatures.h
@@ -296,6 +296,7 @@
#define X86_FEATURE_RETPOLINE_LFENCE (11*32+13) /* "" Use LFENCE for Spectre variant 2 */
#define X86_FEATURE_RETHUNK (11*32+14) /* "" Use REturn THUNK */
#define X86_FEATURE_UNRET (11*32+15) /* "" AMD BTB untrain return */
+#define X86_FEATURE_RSB_VMEXIT_LITE (11*32+17) /* "" Fill RSB on VM-Exit when EIBRS is enabled */
/* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */
#define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */
diff --git a/tools/arch/x86/include/asm/msr-index.h b/tools/arch/x86/include/asm/msr-index.h
index 53373ca3b487..b8954262d767 100644
--- a/tools/arch/x86/include/asm/msr-index.h
+++ b/tools/arch/x86/include/asm/msr-index.h
@@ -148,6 +148,10 @@
* are restricted to targets in
* kernel.
*/
+#define ARCH_CAP_PBRSB_NO BIT(24) /*
+ * Not susceptible to Post-Barrier
+ * Return Stack Buffer Predictions.
+ */
#define MSR_IA32_FLUSH_CMD 0x0000010b
#define L1D_FLUSH BIT(0) /*
--
2.20.1
1
17
The two patches solve the crash of i40e
Ivan Vecera (1):
i40e: Fix kernel crash during module removal
Yunjian Wang (1):
i40e: Fix use-after-free in i40e_client_subtask()
drivers/net/ethernet/intel/i40e/i40e_client.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--
2.18.4
1
2

20 Sep '22
Patches for CVE-2022-29900, CVE-2022-23816 and CVE-2022-29901
Reference:
https://lore.kernel.org/all/CAODzB9qH9WhxQ0eB+mNvmsn64bHXUVppuSTMDGJekYOPCw…
https://www.amd.com/system/files/documents/technical-guidance-for-mitigatin…
https://www.intel.com/content/www/us/en/developer/articles/technical/softwa…
Alexandre Chartre (2):
x86/bugs: Report AMD retbleed vulnerability
x86/bugs: Add AMD retbleed= boot parameter
Andrew Cooper (1):
x86/cpu/amd: Enumerate BTC_NO
Arnaldo Carvalho de Melo (5):
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy'
tools arch x86: Sync the msr-index.h copy with the kernel sources
tools headers cpufeatures: Sync with the kernel sources
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy' - again
tools headers: Remove broken definition of __LITTLE_ENDIAN
Ben Hutchings (3):
x86: Add insn_decode_kernel()
Makefile: Set retpoline cflags based on CONFIG_CC_IS_{CLANG,GCC}
x86/xen: Fix initialisation in hypercall_page after rethunk
Borislav Petkov (7):
x86/insn: Rename insn_decode() to insn_decode_from_regs()
x86/insn: Add a __ignore_sync_check__ marker
x86/insn: Add an insn_decode() API
x86/alternative: Use insn_decode()
x86/alternative: Optimize single-byte NOPs at an arbitrary position
kvm/emulate: Fix SETcc emulation function offsets with SLS
tools/insn: Restore the relative include paths for cross building
Greg Kroah-Hartman (1):
x86, kvm: use proper ASM macros for kvm_vcpu_is_preempted
Joe Lawrence (1):
objtool: Make .altinstructions section entry size consistent
Josh Poimboeuf (24):
objtool: Refactor ORC section generation
objtool: Add 'alt_group' struct
objtool: Support stack layout changes in alternatives
objtool: Support retpoline jump detection for vmlinux.o
objtool: Assume only ELF functions do sibling calls
objtool: Combine UNWIND_HINT_RET_OFFSET and UNWIND_HINT_FUNC
x86/xen: Support objtool validation in xen-asm.S
x86/xen: Support objtool vmlinux.o validation in xen-head.S
objtool: Support asm jump tables
objtool: Don't make .altinstructions writable
objtool: Remove reloc symbol type checks in get_alt_entry()
x86/bugs: Do IBPB fallback check only once
x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
x86/speculation: Fix firmware entry SPEC_CTRL handling
x86/speculation: Fix SPEC_CTRL write on SMT state change
x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit
x86/speculation: Remove x86_spec_ctrl_mask
objtool: Re-add UNWIND_HINT_{SAVE_RESTORE}
KVM: VMX: Flatten __vmx_vcpu_run()
KVM: VMX: Convert launched argument to flags
KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS
KVM: VMX: Fix IBRS handling after vmexit
x86/speculation: Fill RSB on vmexit for IBRS
x86/ftrace: Add UNWIND_HINT_FUNC annotation for ftrace_stub
Juergen Gross (4):
x86/alternative: Merge include files
x86/alternative: Support not-feature
x86/alternative: Support ALTERNATIVE_TERNARY
x86/alternative: Use ALTERNATIVE_TERNARY() in _static_cpu_has()
Kim Phillips (3):
x86/sev: Avoid using __x86_return_thunk
x86/bugs: Enable STIBP for JMP2RET
x86/bugs: Remove apostrophe typo
Konrad Rzeszutek Wilk (1):
x86/kexec: Disable RET on kexec
Lin Yujun (2):
x86: Fix objtool build warning
Re-add padlen to the structure alt_instr
Linus Torvalds (2):
objtool: print out the symbol type when complaining about it
kvm: fix objtool relocation warning
Nathan Chancellor (1):
x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current
Pawan Gupta (3):
x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS
x86/bugs: Add Cannon lake to RETBleed affected CPU list
x86/speculation: Disable RRSBA behavior
Peter Zijlstra (70):
x86/alternatives: Optimize optimize_nops()
x86/retpoline: Simplify retpolines
objtool: Correctly handle retpoline thunk calls
objtool: Handle per arch retpoline naming
objtool: Rework the elf_rebuild_reloc_section() logic
objtool: Add elf_create_reloc() helper
objtool: Create reloc sections implicitly
objtool: Extract elf_strtab_concat()
objtool: Extract elf_symbol_add()
objtool: Add elf_create_undef_symbol()
objtool: Keep track of retpoline call sites
objtool: Cache instruction relocs
objtool: Skip magical retpoline .altinstr_replacement
objtool/x86: Rewrite retpoline thunk calls
objtool: Fix .symtab_shndx handling for elf_create_undef_symbol()
objtool: Only rewrite unconditional retpoline thunk calls
objtool/x86: Ignore __x86_indirect_alt_* symbols
objtool: Teach get_alt_entry() about more relocation types
objtool: Introduce CFI hash
objtool: Handle __sanitize_cov*() tail calls
objtool: Classify symbols
objtool: Explicitly avoid self modifying code in .altinstr_replacement
objtool,x86: Replace alternatives with .retpoline_sites
x86/retpoline: Remove unused replacement symbols
x86/asm: Fix register order
x86/asm: Fixup odd GEN-for-each-reg.h usage
x86/retpoline: Move the retpoline thunk declarations to
nospec-branch.h
x86/retpoline: Create a retpoline thunk array
x86/alternative: Implement .retpoline_sites support
bpf,x86: Simplify computing label offsets
bpf,x86: Respect X86_FEATURE_RETPOLINE*
x86/lib/atomic64_386_32: Rename things
x86: Prepare asm files for straight-line-speculation
x86: Prepare inline-asm for straight-line-speculation
x86/alternative: Relax text_poke_bp() constraint
objtool: Add straight-line-speculation validation
x86: Add straight-line-speculation mitigation
objtool: Default ignore INT3 for unreachable
crypto: x86/poly1305 - Fixup SLS
objtool: Fix SLS validation for kcov tail-call replacement
x86/entry: Remove skip_r11rcx
x86/kvm/vmx: Make noinstr clean
x86/cpufeatures: Move RETPOLINE flags to word 11
x86/retpoline: Cleanup some #ifdefery
x86/retpoline: Swizzle retpoline thunk
x86/retpoline: Use -mfunction-return
x86: Undo return-thunk damage
x86,objtool: Create .return_sites
x86,static_call: Use alternative RET encoding
x86/ftrace: Use alternative RET encoding
x86/bpf: Use alternative RET encoding
x86/kvm: Fix SETcc emulation for return thunks
x86/vsyscall_emu/64: Don't use RET in vsyscall emulation
x86: Use return-thunk in asm code
objtool: Treat .text.__x86.* as noinstr
x86: Add magic AMD return-thunk
x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value
x86/entry: Add kernel IBRS implementation
x86/bugs: Optimize SPEC_CTRL MSR writes
x86/bugs: Split spectre_v2_select_mitigation() and
spectre_v2_user_select_mitigation()
x86/bugs: Report Intel retbleed vulnerability
intel_idle: Disable IBRS during long idle
objtool: Update Retpoline validation
x86/xen: Rename SYS* entry points
x86/bugs: Add retbleed=ibpb
objtool: Add entry UNRET validation
x86/cpu/amd: Add Spectral Chicken
x86/common: Stamp out the stepping madness
x86/retbleed: Add fine grained Kconfig knobs
um: Add missing apply_returns()
Thadeu Lima de Souza Cascardo (5):
x86/realmode: build with -D__DISABLE_EXPORTS
objtool: skip non-text sections when adding return-thunk sites
x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported
efi/x86: use naked RET on mixed mode call wrapper
x86/kvm: fix FASTOP_SIZE when return thunks are enabled
Thomas Gleixner (1):
x86/static_call: Serialize __static_call_fixup() properly
Uros Bizjak (2):
KVM/VMX: Use TEST %REG,%REG instead of CMP $0,%REG in vmenter.S
KVM/nVMX: Use __vmx_vcpu_run in nested_vmx_check_vmentry_hw
Vasily Gorbik (1):
objtool: Fix elf_create_undef_symbol() endianness
.../admin-guide/kernel-parameters.txt | 25 +
Makefile | 20 +-
arch/um/kernel/um_arch.c | 8 +
arch/x86/Kconfig | 91 +-
arch/x86/Makefile | 8 +-
arch/x86/boot/compressed/efi_thunk_64.S | 2 +-
arch/x86/boot/compressed/head_64.S | 4 +-
arch/x86/boot/compressed/mem_encrypt.S | 4 +-
arch/x86/crypto/aegis128-aesni-asm.S | 48 +-
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 2 +-
arch/x86/crypto/aesni-intel_asm.S | 52 +-
arch/x86/crypto/aesni-intel_avx-x86_64.S | 40 +-
arch/x86/crypto/blake2s-core.S | 4 +-
arch/x86/crypto/blowfish-x86_64-asm_64.S | 12 +-
arch/x86/crypto/camellia-aesni-avx-asm_64.S | 18 +-
arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 18 +-
arch/x86/crypto/camellia-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/chacha-avx2-x86_64.S | 6 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 6 +-
arch/x86/crypto/chacha-ssse3-x86_64.S | 8 +-
arch/x86/crypto/crc32-pclmul_asm.S | 2 +-
arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 2 +-
arch/x86/crypto/crct10dif-pcl-asm_64.S | 2 +-
arch/x86/crypto/des3_ede-asm_64.S | 4 +-
arch/x86/crypto/ghash-clmulni-intel_asm.S | 6 +-
arch/x86/crypto/nh-avx2-x86_64.S | 2 +-
arch/x86/crypto/nh-sse2-x86_64.S | 2 +-
arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 38 +-
arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/serpent-avx2-asm_64.S | 16 +-
arch/x86/crypto/serpent-sse2-i586-asm_32.S | 6 +-
arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 6 +-
arch/x86/crypto/sha1_avx2_x86_64_asm.S | 2 +-
arch/x86/crypto/sha1_ni_asm.S | 2 +-
arch/x86/crypto/sha1_ssse3_asm.S | 2 +-
arch/x86/crypto/sha256-avx-asm.S | 2 +-
arch/x86/crypto/sha256-avx2-asm.S | 2 +-
arch/x86/crypto/sha256-ssse3-asm.S | 2 +-
arch/x86/crypto/sha256_ni_asm.S | 2 +-
arch/x86/crypto/sha512-avx-asm.S | 2 +-
arch/x86/crypto/sha512-avx2-asm.S | 2 +-
arch/x86/crypto/sha512-ssse3-asm.S | 2 +-
arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/twofish-i586-asm_32.S | 4 +-
arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 6 +-
arch/x86/crypto/twofish-x86_64-asm_64.S | 4 +-
arch/x86/entry/Makefile | 2 +-
arch/x86/entry/calling.h | 72 +-
arch/x86/entry/entry.S | 22 +
arch/x86/entry/entry_32.S | 6 +-
arch/x86/entry/entry_64.S | 62 +-
arch/x86/entry/entry_64_compat.S | 21 +-
arch/x86/entry/thunk_32.S | 2 +-
arch/x86/entry/thunk_64.S | 2 +-
arch/x86/entry/vdso/Makefile | 1 +
arch/x86/entry/vdso/vdso32/system_call.S | 4 +-
arch/x86/entry/vsyscall/vsyscall_emu_64.S | 3 +
arch/x86/include/asm/GEN-for-each-reg.h | 14 +-
arch/x86/include/asm/alternative-asm.h | 114 --
arch/x86/include/asm/alternative.h | 133 +-
arch/x86/include/asm/asm-prototypes.h | 17 -
arch/x86/include/asm/cpufeature.h | 41 +-
arch/x86/include/asm/cpufeatures.h | 12 +-
arch/x86/include/asm/disabled-features.h | 21 +-
arch/x86/include/asm/inat.h | 2 +-
arch/x86/include/asm/insn-eval.h | 4 +-
arch/x86/include/asm/insn.h | 28 +-
arch/x86/include/asm/linkage.h | 22 +
arch/x86/include/asm/msr-index.h | 13 +
arch/x86/include/asm/nospec-branch.h | 148 ++-
arch/x86/include/asm/paravirt.h | 2 +-
arch/x86/include/asm/qspinlock_paravirt.h | 4 +-
arch/x86/include/asm/smap.h | 5 +-
arch/x86/include/asm/static_call.h | 19 +-
arch/x86/include/asm/unwind_hints.h | 23 +-
arch/x86/kernel/acpi/wakeup_32.S | 6 +-
arch/x86/kernel/alternative.c | 356 +++++-
arch/x86/kernel/cpu/amd.c | 46 +-
arch/x86/kernel/cpu/bugs.c | 475 ++++++-
arch/x86/kernel/cpu/common.c | 61 +-
arch/x86/kernel/cpu/cpu.h | 2 +
arch/x86/kernel/cpu/hygon.c | 6 +
arch/x86/kernel/cpu/scattered.c | 1 +
arch/x86/kernel/ftrace.c | 7 +-
arch/x86/kernel/ftrace_32.S | 6 +-
arch/x86/kernel/ftrace_64.S | 13 +-
arch/x86/kernel/head_32.S | 2 +-
arch/x86/kernel/head_64.S | 5 +
arch/x86/kernel/irqflags.S | 4 +-
arch/x86/kernel/kprobes/core.c | 2 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kernel/module.c | 15 +-
arch/x86/kernel/paravirt.c | 2 +-
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/relocate_kernel_32.S | 15 +-
arch/x86/kernel/relocate_kernel_64.S | 13 +-
arch/x86/kernel/sev-es.c | 2 +-
arch/x86/kernel/sev_verify_cbit.S | 2 +-
arch/x86/kernel/static_call.c | 52 +-
arch/x86/kernel/umip.c | 2 +-
arch/x86/kernel/verify_cpu.S | 4 +-
arch/x86/kernel/vmlinux.lds.S | 23 +-
arch/x86/kvm/emulate.c | 39 +-
arch/x86/kvm/svm/vmenter.S | 11 +-
arch/x86/kvm/vmx/nested.c | 32 +-
arch/x86/kvm/vmx/run_flags.h | 8 +
arch/x86/kvm/vmx/vmenter.S | 170 +--
arch/x86/kvm/vmx/vmx.c | 78 +-
arch/x86/kvm/vmx/vmx.h | 5 +
arch/x86/kvm/x86.c | 4 +-
arch/x86/lib/atomic64_386_32.S | 88 +-
arch/x86/lib/atomic64_cx8_32.S | 18 +-
arch/x86/lib/checksum_32.S | 8 +-
arch/x86/lib/clear_page_64.S | 6 +-
arch/x86/lib/cmpxchg16b_emu.S | 4 +-
arch/x86/lib/cmpxchg8b_emu.S | 4 +-
arch/x86/lib/copy_mc_64.S | 6 +-
arch/x86/lib/copy_page_64.S | 10 +-
arch/x86/lib/copy_user_64.S | 12 +-
arch/x86/lib/csum-copy_64.S | 2 +-
arch/x86/lib/error-inject.c | 3 +-
arch/x86/lib/getuser.S | 22 +-
arch/x86/lib/hweight.S | 6 +-
arch/x86/lib/inat.c | 2 +-
arch/x86/lib/insn-eval.c | 6 +-
arch/x86/lib/insn.c | 222 +++-
arch/x86/lib/iomap_copy_64.S | 2 +-
arch/x86/lib/memcpy_64.S | 14 +-
arch/x86/lib/memmove_64.S | 11 +-
arch/x86/lib/memset_64.S | 8 +-
arch/x86/lib/msr-reg.S | 4 +-
arch/x86/lib/putuser.S | 6 +-
arch/x86/lib/retpoline.S | 118 +-
arch/x86/math-emu/div_Xsig.S | 2 +-
arch/x86/math-emu/div_small.S | 2 +-
arch/x86/math-emu/mul_Xsig.S | 6 +-
arch/x86/math-emu/polynom_Xsig.S | 2 +-
arch/x86/math-emu/reg_norm.S | 6 +-
arch/x86/math-emu/reg_round.S | 2 +-
arch/x86/math-emu/reg_u_add.S | 2 +-
arch/x86/math-emu/reg_u_div.S | 2 +-
arch/x86/math-emu/reg_u_mul.S | 2 +-
arch/x86/math-emu/reg_u_sub.S | 2 +-
arch/x86/math-emu/round_Xsig.S | 4 +-
arch/x86/math-emu/shr_Xsig.S | 8 +-
arch/x86/math-emu/wm_shrx.S | 16 +-
arch/x86/mm/mem_encrypt_boot.S | 6 +
arch/x86/net/bpf_jit_comp.c | 185 ++-
arch/x86/net/bpf_jit_comp32.c | 22 +-
arch/x86/platform/efi/efi_stub_32.S | 2 +-
arch/x86/platform/efi/efi_stub_64.S | 2 +-
arch/x86/platform/efi/efi_thunk_64.S | 5 +-
arch/x86/platform/olpc/xo1-wakeup.S | 6 +-
arch/x86/power/hibernate_asm_32.S | 4 +-
arch/x86/power/hibernate_asm_64.S | 4 +-
arch/x86/um/checksum_32.S | 4 +-
arch/x86/um/setjmp_32.S | 2 +-
arch/x86/um/setjmp_64.S | 2 +-
arch/x86/xen/Makefile | 1 -
arch/x86/xen/setup.c | 6 +-
arch/x86/xen/xen-asm.S | 43 +-
arch/x86/xen/xen-head.S | 6 +-
arch/x86/xen/xen-ops.h | 6 +-
drivers/base/cpu.c | 8 +
drivers/idle/intel_idle.c | 43 +-
include/linux/cpu.h | 2 +
include/linux/kvm_host.h | 2 +-
include/linux/objtool.h | 14 +-
samples/ftrace/ftrace-direct-modify.c | 4 +-
samples/ftrace/ftrace-direct-too.c | 2 +-
samples/ftrace/ftrace-direct.c | 2 +-
scripts/Makefile.build | 6 +
scripts/link-vmlinux.sh | 6 +
security/Kconfig | 11 -
tools/arch/x86/include/asm/cpufeatures.h | 12 +-
.../arch/x86/include/asm/disabled-features.h | 21 +-
tools/arch/x86/include/asm/inat.h | 2 +-
tools/arch/x86/include/asm/insn.h | 28 +-
tools/arch/x86/include/asm/msr-index.h | 13 +
tools/arch/x86/lib/inat.c | 2 +-
tools/arch/x86/lib/insn.c | 222 +++-
tools/arch/x86/lib/memcpy_64.S | 14 +-
tools/arch/x86/lib/memset_64.S | 8 +-
.../asm/{alternative-asm.h => alternative.h} | 0
tools/include/linux/kconfig.h | 67 +
tools/include/linux/objtool.h | 14 +-
.../Documentation/stack-validation.txt | 16 +-
tools/objtool/Makefile | 4 -
tools/objtool/arch.h | 13 +-
tools/objtool/arch/x86/decode.c | 58 +-
tools/objtool/builtin-check.c | 6 +-
tools/objtool/builtin-orc.c | 6 +-
tools/objtool/builtin.h | 3 +-
tools/objtool/cfi.h | 2 +
tools/objtool/check.c | 1131 +++++++++++++----
tools/objtool/check.h | 35 +-
tools/objtool/elf.c | 230 ++--
tools/objtool/elf.h | 20 +-
tools/objtool/objtool.c | 2 +
tools/objtool/objtool.h | 5 +-
tools/objtool/orc_gen.c | 324 ++---
tools/objtool/special.c | 22 +-
tools/objtool/sync-check.sh | 17 +-
tools/objtool/weak.c | 7 +-
tools/perf/check-headers.sh | 15 +-
207 files changed, 4322 insertions(+), 1901 deletions(-)
create mode 100644 arch/x86/entry/entry.S
delete mode 100644 arch/x86/include/asm/alternative-asm.h
create mode 100644 arch/x86/kvm/vmx/run_flags.h
rename tools/include/asm/{alternative-asm.h => alternative.h} (100%)
create mode 100644 tools/include/linux/kconfig.h
--
2.20.1
1
139

[PATCH openEuler-5.10] KVM: x86: do not report a vCPU as preempted outside instruction boundaries
by Zheng Zengkai 20 Sep '22
by Zheng Zengkai 20 Sep '22
20 Sep '22
From: Paolo Bonzini <pbonzini(a)redhat.com>
mainline inclusion
from mainline-v5.19-rc2
commit 6cd88243c7e03845a450795e134b488fc2afb736
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PJ7H
CVE: CVE-2022-39189
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
----------------------------------------
If a vCPU is outside guest mode and is scheduled out, it might be in the
process of making a memory access. A problem occurs if another vCPU uses
the PV TLB flush feature during the period when the vCPU is scheduled
out, and a virtual address has already been translated but has not yet
been accessed, because this is equivalent to using a stale TLB entry.
To avoid this, only report a vCPU as preempted if sure that the guest
is at an instruction boundary. A rescheduling request will be delivered
to the host physical CPU as an external interrupt, so for simplicity
consider any vmexit *not* instruction boundary except for external
interrupts.
It would in principle be okay to report the vCPU as preempted also
if it is sleeping in kvm_vcpu_block(): a TLB flush IPI will incur the
vmentry/vmexit overhead unnecessarily, and optimistic spinning is
also unlikely to succeed. However, leave it for later because right
now kvm_vcpu_check_block() is doing memory accesses. Even
though the TLB flush issue only applies to virtual memory address,
it's very much preferrable to be conservative.
Reported-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
conflict:
arch/x86/kvm/x86.c
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
arch/x86/include/asm/kvm_host.h | 3 +++
arch/x86/kvm/svm/svm.c | 2 ++
arch/x86/kvm/vmx/vmx.c | 1 +
arch/x86/kvm/x86.c | 24 ++++++++++++++++++++++++
4 files changed, 30 insertions(+)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 3d9da4629325..5103638cc911 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -553,6 +553,7 @@ struct kvm_vcpu_arch {
u64 ia32_misc_enable_msr;
u64 smbase;
u64 smi_count;
+ bool at_instruction_boundary;
bool tpr_access_reporting;
bool xsaves_enabled;
u64 ia32_xss;
@@ -1077,6 +1078,8 @@ struct kvm_vcpu_stat {
u64 utime;
u64 stime;
u64 gtime;
+ u64 preemption_reported;
+ u64 preemption_other;
u64 preemption_timer_exits;
};
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 2124fe54abfb..5231f40e8312 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -3992,6 +3992,8 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
static void svm_handle_exit_irqoff(struct kvm_vcpu *vcpu)
{
+ if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_INTR)
+ vcpu->arch.at_instruction_boundary = true;
}
static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 6bb07e495eca..fad74e5faade 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6605,6 +6605,7 @@ static void handle_external_interrupt_irqoff(struct kvm_vcpu *vcpu)
return;
handle_interrupt_nmi_irqoff(vcpu, gate_offset(desc));
+ vcpu->arch.at_instruction_boundary = true;
}
static void vmx_handle_exit_irqoff(struct kvm_vcpu *vcpu)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 284bf9b0c12c..c275efd0bb70 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -233,6 +233,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
VCPU_STAT("l1d_flush", l1d_flush),
VCPU_STAT("halt_poll_success_ns", halt_poll_success_ns),
VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns),
+ VCPU_STAT("preemption_reported", preemption_reported),
+ VCPU_STAT("preemption_other", preemption_other),
VM_STAT("mmu_shadow_zapped", mmu_shadow_zapped),
VM_STAT("mmu_pte_write", mmu_pte_write),
VM_STAT("mmu_pde_zapped", mmu_pde_zapped),
@@ -287,6 +289,8 @@ struct dfx_kvm_stats_debugfs_item dfx_debugfs_entries[] = {
DFX_STAT("stime", stime),
DFX_STAT("gtime", gtime),
DFX_STAT("preemption_timer_exits", preemption_timer_exits),
+ DFX_STAT("preemption_reported", preemption_reported),
+ DFX_STAT("preemption_other", preemption_other),
{ NULL }
};
@@ -4082,6 +4086,19 @@ static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu)
struct kvm_host_map map;
struct kvm_steal_time *st;
+ /*
+ * The vCPU can be marked preempted if and only if the VM-Exit was on
+ * an instruction boundary and will not trigger guest emulation of any
+ * kind (see vcpu_run). Vendor specific code controls (conservatively)
+ * when this is true, for example allowing the vCPU to be marked
+ * preempted if and only if the VM-Exit was due to a host interrupt.
+ */
+ if (!vcpu->arch.at_instruction_boundary) {
+ vcpu->stat.preemption_other++;
+ return;
+ }
+
+ vcpu->stat.preemption_reported++;
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
return;
@@ -9329,6 +9346,13 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
vcpu->arch.l1tf_flush_l1d = true;
for (;;) {
+ /*
+ * If another guest vCPU requests a PV TLB flush in the middle
+ * of instruction emulation, the rest of the emulation could
+ * use a stale page translation. Assume that any code after
+ * this point can start executing an instruction.
+ */
+ vcpu->arch.at_instruction_boundary = false;
if (kvm_vcpu_running(vcpu)) {
r = vcpu_enter_guest(vcpu);
} else {
--
2.20.1
1
0

[PATCH openEuler-5.10 01/14] block: fix the problem of io_ticks becoming smaller
by Zheng Zengkai 20 Sep '22
by Zheng Zengkai 20 Sep '22
20 Sep '22
From: Chunguang Xu <brookxu(a)tencent.com>
mainline inclusion
from mainline-v5.14-rc1
commit d80c228d44640f0b47b57a2ca4afa26ef87e16b0
category: bugfix
bugzilla: 187475, https://gitee.com/openeuler/kernel/issues/I5ME0J
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
On the IO submission path, blk_account_io_start() may interrupt
the system interruption. When the interruption returns, the value
of part->stamp may have been updated by other cores, so the time
value collected before the interruption may be less than part->
stamp. So when this happens, we should do nothing to make io_ticks
more accurate? For kernels less than 5.0, this may cause io_ticks
to become smaller, which in turn may cause abnormal ioutil values.
Signed-off-by: Chunguang Xu <brookxu(a)tencent.com>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Link: https://lore.kernel.org/r/1625521646-1069-1-git-send-email-brookxu.cn@gmail…
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
conflict:
block/blk-core.c
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
block/blk-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 109fb2750453..0b496dabc5ac 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1258,7 +1258,7 @@ void update_io_ticks(struct hd_struct *part, unsigned long now, bool end)
unsigned long stamp;
again:
stamp = READ_ONCE(part->stamp);
- if (unlikely(stamp != now)) {
+ if (unlikely(time_after(now, stamp))) {
if (likely(cmpxchg(&part->stamp, stamp, now) == stamp))
__part_stat_add(part, io_ticks, end ? now - stamp : 1);
}
--
2.20.1
1
13
From: Yu Kuai <yukuai3(a)huawei.com>
Changes in v2:
- fix the problem that if 'nr_pending' is decreased to 0 in
wait_barrier_nolock() in patch 1, 'conf->barrier' is not waked, and
raise_barrier() can hang while waiting 'nr_pending' to be 0.
- only modify hot path in patch 2.
- use node 1 as default in patch 6.
In some architecture, for example KUNPENG 920, memory access latency is
very bad across nodes compare to local node. For consequence, io
performance is rather bad while users issue io from multiple nodes if
lock contention exist in the driver.
This patchset tries to avoid memory access across nodes in driver.
Test environment: aarch64 Huawei KUNPENG 920
Raid10 initialize:
mdadm --create /dev/md0 --level 10 --bitmap none --raid-devices 4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
Test cmd:
(task set -c 0-15) fio -name=0 -ioengine=libaio -direct=1 -group_reporting=1 -randseed=2022 -rwmixread=70 -refill_buffers -filename=/dev/md0 -numjobs=16 -runtime=60s -bs=4k -iodepth=256 -rw=randread
Test result:
before this patchset: 3.2 GiB/s
bind node before this patchset: 6.9 Gib/s
after this patchset: 7.9 Gib/s
bind node after this patchset: 8.0 Gib/s
Wang ShaoBo (1):
arm64/topology: Getting preferred sibling's cpumask supported by
platform
Yu Kuai (5):
md/raid10: convert resync_lock to use seqlock
md/raid10: prevent unnecessary calls to wake_up() in fast path
block: add new fields in request_queue
block: support to dispatch bio asynchronously
md: enable dispatching bio asynchronously by default
arch/arm64/Kconfig | 8 ++
arch/arm64/include/asm/smp_plat.h | 14 ++
arch/arm64/kernel/smp.c | 9 ++
arch/arm64/kernel/topology.c | 51 +++++++
block/blk-core.c | 212 +++++++++++++++++++++++++++++-
block/blk-sysfs.c | 40 ++++++
drivers/md/md.c | 5 +
drivers/md/raid10.c | 98 +++++++++-----
drivers/md/raid10.h | 2 +-
include/linux/arch_topology.h | 7 +
include/linux/blkdev.h | 6 +
11 files changed, 420 insertions(+), 32 deletions(-)
--
2.31.1
2
11
From: Pavel Skripkin <paskripkin(a)gmail.com>
mainline inclusion
from mainline-6.0-rc4
commit 9d574f985fe33efd6911f4d752de6f485a1ea732
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5RX0N?from=project-issue
CVE: CVE-2022-3202
--------------------------------
Avoid passing inode with
JFS_SBI(inode->i_sb)->ipimap == NULL to
diFree()[1]. GFP will appear:
struct inode *ipimap = JFS_SBI(ip->i_sb)->ipimap;
struct inomap *imap = JFS_IP(ipimap)->i_imap;
JFS_IP() will return invalid pointer when ipimap == NULL
Call Trace:
diFree+0x13d/0x2dc0 fs/jfs/jfs_imap.c:853 [1]
jfs_evict_inode+0x2c9/0x370 fs/jfs/inode.c:154
evict+0x2ed/0x750 fs/inode.c:578
iput_final fs/inode.c:1654 [inline]
iput.part.0+0x3fe/0x820 fs/inode.c:1680
iput+0x58/0x70 fs/inode.c:1670
Reported-and-tested-by: syzbot+0a89a7b56db04c21a656(a)syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin(a)gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp(a)oracle.com>
Signed-off-by: ZhaoLong Wang <wangzhaolong1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
fs/jfs/inode.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
index 054cc761b426..87b41edc800d 100644
--- a/fs/jfs/inode.c
+++ b/fs/jfs/inode.c
@@ -161,7 +161,8 @@ void jfs_evict_inode(struct inode *inode)
if (test_cflag(COMMIT_Freewmap, inode))
jfs_free_zero_link(inode);
- diFree(inode);
+ if (JFS_SBI(inode->i_sb)->ipimap)
+ diFree(inode);
/*
* Free the inode from the quota allocation.
--
2.25.1
1
1

[PATCH openEuler-22.09] arm64/__mc_ex_table: fix __mc_ex_table do_sort() issue
by Zheng Zengkai 20 Sep '22
by Zheng Zengkai 20 Sep '22
20 Sep '22
From: Tong Tiangen <tongtiangen(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5GB28
CVE: NA
-------------------------------
If ARCH_HAS_MC_EXTABLE is not set then the _mc_ex_table is empty.
There is a logic error in do_sort(). _mc_ex_table is different from
_ex_table. _ex_table is always not empty, while _mc_ex_table may be empty.
If _mc_ex_table is empty, there is a issue with setting the initial value
of mc_extable_index to 0.
Fixes: 7c3d926bb083 ("[Huawei] arm64: extable: add new extable type "__mc_ex_table"")
Signed-off-by: Tong Tiangen <tongtiangen(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
scripts/sorttable.h | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/scripts/sorttable.h b/scripts/sorttable.h
index 874cbd7046b0..d67242f8c75f 100644
--- a/scripts/sorttable.h
+++ b/scripts/sorttable.h
@@ -227,7 +227,6 @@ static int do_sort(Elf_Ehdr *ehdr,
Elf_Rel *mc_relocs = NULL;
int mc_relocs_size = 0;
char *mc_extab_image = NULL;
- int mc_extab_index = 0;
shstrndx = r2(&ehdr->e_shstrndx);
if (shstrndx == SHN_XINDEX)
@@ -245,11 +244,6 @@ static int do_sort(Elf_Ehdr *ehdr,
extab_index = i;
}
- if (!strcmp(secstrings + idx, "__mc_ex_table")) {
- mc_extab_sec = s;
- mc_extab_index = i;
- }
-
if (!strcmp(secstrings + idx, ".symtab"))
symtab_sec = s;
if (!strcmp(secstrings + idx, ".strtab"))
@@ -262,11 +256,15 @@ static int do_sort(Elf_Ehdr *ehdr,
relocs_size = _r(&s->sh_size);
}
- if ((r(&s->sh_type) == SHT_REL ||
- r(&s->sh_type) == SHT_RELA) &&
- r(&s->sh_info) == mc_extab_index) {
- mc_relocs = (void *)ehdr + _r(&s->sh_offset);
- mc_relocs_size = _r(&s->sh_size);
+ if (!strcmp(secstrings + idx, "__mc_ex_table")) {
+ mc_extab_sec = s;
+
+ if ((r(&s->sh_type) == SHT_REL ||
+ r(&s->sh_type) == SHT_RELA) &&
+ r(&s->sh_info) == i) {
+ mc_relocs = (void *)ehdr + _r(&s->sh_offset);
+ mc_relocs_size = _r(&s->sh_size);
+ }
}
if (r(&s->sh_type) == SHT_SYMTAB_SHNDX)
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS] xfs: preserve default grace interval during quotacheck
by tangbin 19 Sep '22
by tangbin 19 Sep '22
19 Sep '22
From: "Darrick J. Wong" <darrick.wong(a)oracle.com>
stable inclusion
from stable-v5.10.143
commit f1101295c145e9710b1b37e9b0a13ef9af9af0c9
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5RTF5
CVE: NA
--------------------------------
commit 5885539f0af371024d07afd14974bfdc3fff84c5 upstream.
When quotacheck runs, it zeroes all the timer fields in every dquot.
Unfortunately, it also does this to the root dquot, which erases any
preconfigured grace intervals and warning limits that the administrator
may have set. Worse yet, the incore copies of those variables remain
set. This cache coherence problem manifests itself as the grace
interval mysteriously being reset back to the defaults at the /next/
mount.
Fix it by not resetting the root disk dquot's timer and warning fields.
Signed-off-by: Darrick J. Wong <darrick.wong(a)oracle.com>
Reviewed-by: Dave Chinner <dchinner(a)redhat.com>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Signed-off-by: tangbin <tangbin(a)cmss.chinamobile.com>
---
fs/xfs/xfs_qm.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
index 65b77ea9d5a9..0fb2b37b56f2 100644
--- a/fs/xfs/xfs_qm.c
+++ b/fs/xfs/xfs_qm.c
@@ -870,12 +870,20 @@ xfs_qm_reset_dqcounts(
ddq->d_bcount = 0;
ddq->d_icount = 0;
ddq->d_rtbcount = 0;
- ddq->d_btimer = 0;
- ddq->d_itimer = 0;
- ddq->d_rtbtimer = 0;
- ddq->d_bwarns = 0;
- ddq->d_iwarns = 0;
- ddq->d_rtbwarns = 0;
+
+ /*
+ * dquot id 0 stores the default grace period and the maximum
+ * warning limit that were set by the administrator, so we
+ * should not reset them.
+ */
+ if (ddq->d_id != 0) {
+ ddq->d_btimer = 0;
+ ddq->d_itimer = 0;
+ ddq->d_rtbtimer = 0;
+ ddq->d_bwarns = 0;
+ ddq->d_iwarns = 0;
+ ddq->d_rtbwarns = 0;
+ }
if (xfs_sb_version_hascrc(&mp->m_sb)) {
xfs_update_cksum((char *)&dqb[j],
--
2.18.4
1
0

[PATCH openEuler-22.09 1/2] bpf:programmable: Fix build error of 'stack exceeds 512 bytes'
by Zheng Zengkai 19 Sep '22
by Zheng Zengkai 19 Sep '22
19 Sep '22
From: Hui Tang <tanghui20(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5RMFU
CVE: NA
--------------------------------
1.Change arg type of 'bpf_get_cpumask_info' to avoid
bpf program stack exceeds 512 bytes.
2.Fix back-edge error in sample 'sched_select_core'
3.Fix loop too complex in sample 'sached_select_core'
Fixes: 1bf0417b95a9 ("sched: programmable: Add helper function for cpu topo...")
Fixes: 2c1189e32bf9 ("samples:bpf: Add samples for cfs select core")
Signed-off-by: Hui Tang <tanghui20(a)huawei.com>
---
include/uapi/linux/bpf.h | 2 +-
kernel/sched/bpf_topology.c | 9 ++-
samples/bpf/sched_select_core_kern.c | 33 ++++++++---
tools/include/uapi/linux/bpf.h | 2 +-
tools/lib/bpf/libbpf_sched.h | 86 +++++++++++++++++++++-------
5 files changed, 97 insertions(+), 35 deletions(-)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index db585d960d64..7e474c6fc4a7 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -3903,7 +3903,7 @@ union bpf_attr {
* Return
* 0 on success, or a negative error in case of failure.
*
- * int bpf_get_cpumask_info(struct bpf_cpumask_info *cpus, int len)
+ * int bpf_get_cpumask_info(struct bpf_map *map, struct bpf_cpumask_info *cpus)
* Description
* Get system cpus returned in *cpus*.
* Return
diff --git a/kernel/sched/bpf_topology.c b/kernel/sched/bpf_topology.c
index 9c2eda139e2a..843b6092a64f 100644
--- a/kernel/sched/bpf_topology.c
+++ b/kernel/sched/bpf_topology.c
@@ -70,10 +70,9 @@ const struct bpf_func_proto bpf_init_cpu_topology_proto = {
.arg2_type = ARG_ANYTHING,
};
-BPF_CALL_2(bpf_get_cpumask_info, struct bpf_cpumask_info *, cpus,
- int, len)
+BPF_CALL_2(bpf_get_cpumask_info, struct bpf_map *, map, struct bpf_cpumask_info *, cpus)
{
- if (len != sizeof(*cpus))
+ if (!cpus)
return -EINVAL;
cpumask_copy(&cpus->cpu_possible_cpumask, cpu_possible_mask);
@@ -92,6 +91,6 @@ const struct bpf_func_proto bpf_get_cpumask_info_proto = {
.func = bpf_get_cpumask_info,
.gpl_only = false,
.ret_type = RET_INTEGER,
- .arg1_type = ARG_PTR_TO_UNINIT_MEM,
- .arg2_type = ARG_CONST_SIZE,
+ .arg1_type = ARG_CONST_MAP_PTR,
+ .arg2_type = ARG_PTR_TO_MAP_VALUE_OR_NULL,
};
diff --git a/samples/bpf/sched_select_core_kern.c b/samples/bpf/sched_select_core_kern.c
index 18617e89b395..62ffb29f2725 100644
--- a/samples/bpf/sched_select_core_kern.c
+++ b/samples/bpf/sched_select_core_kern.c
@@ -62,7 +62,7 @@ struct tag_info {
struct tag_info tag_tbl[] = {
{TAG_NONE, ""},
- {TAG_ID(1), "0-3"},
+ {TAG_ID(1), "0-1"},
{TAG_ID(2), "4-7"},
{TAG_MAX, ""},
};
@@ -94,13 +94,17 @@ static struct cpumask *select_better_cpus(struct task_struct *p,
long min_util = INT_MIN;
struct task_group *tg;
long spare;
- int cpu;
+ int cpu, i;
if (!prefer_cpus_valid(prefer_cpus, (void *)getVal(p->cpus_ptr)))
return (void *)getVal(p->cpus_ptr);
tg = p->sched_task_group;
- libbpf_for_each_cpu(cpu, prefer_cpus) {
+ for (i = 0, cpu = -1; i < BPF_SCHED_LOOP_MAX; i++) {
+ cpu = libbpf_cpumask_next(cpu, (void *)getVal(prefer_cpus));
+ if (cpu >= libbpf_nr_cpus_ids())
+ break;
+
if (idlest_cpu && libbpf_available_idle_cpu(cpu)) {
*idlest_cpu = cpu;
} else if (idlest_cpu) {
@@ -159,9 +163,14 @@ int BPF_PROG(cfs_select_cpu_range, struct sched_migrate_ctx *h_ctx)
SEC("sched/cfs_select_rq_exit")
int BPF_PROG(cfs_select_cpu_range_exit, struct sched_migrate_ctx *h_ctx)
{
+ struct task_struct *p = getVal(h_ctx->task);
+ long tag = getVal(p->tag);
int *idlest_cpu;
int key = 0;
+ if (tag <= TAG_NONE || tag >= TAG_MAX)
+ return SELECT_RQ_EXIT_CPU_VALID;
+
idlest_cpu = bpf_map_lookup_elem(&map_idlest_cpu, &key);
if (!idlest_cpu) {
libbpf_sched_set_task_cpus_ptr(h_ctx, (void *)getVal(h_ctx->cpus_allowed));
@@ -186,7 +195,7 @@ static int find_idlest_cpu(struct task_struct *p, int parent)
int cpu;
int i;
- for (i = 0, cpu = -1; i < NR_CPUS; i++) {
+ for (i = 0, cpu = -1; i < BPF_SCHED_LOOP_MAX; i++) {
cpu = libbpf_cpumask_next(cpu, (void *)getVal(p->cpus_ptr));
if (cpu >= libbpf_nr_cpus_ids())
break;
@@ -203,17 +212,27 @@ static int find_idlest_cpu(struct task_struct *p, int parent)
static int select_idle_cpu(struct task_struct *p, int parent, int prev_cpu)
{
- int cpu;
+ int cpu, i;
if (libbpf_available_idle_cpu(prev_cpu))
return prev_cpu;
if (libbpf_available_idle_cpu(parent))
- return prev_cpu;
+ return parent;
+
+ for (i = 0, cpu = libbpf_cpumask_next_wrap(prev_cpu - 1,
+ (void *)getVal(p->cpus_ptr),
+ prev_cpu, false);
+ i < BPF_SCHED_LOOP_MAX; i++) {
+
+ if (cpu >= libbpf_nr_cpumask_bits())
+ break;
- libbpf_for_each_cpu_wrap(cpu, (void *)getVal(p->cpus_ptr), prev_cpu) {
if (libbpf_available_idle_cpu(cpu))
return cpu;
+
+ cpu = libbpf_cpumask_next_wrap(cpu, (void *)getVal(p->cpus_ptr),
+ prev_cpu, true);
}
return prev_cpu;
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index 57b927e99092..22f7880a0bb6 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -4613,7 +4613,7 @@ union bpf_attr {
* Return
* 0 on success, or a negative error in case of failure.
*
- * int bpf_get_cpumask_info(struct bpf_cpumask_info *cpus, int len)
+ * int bpf_get_cpumask_info(struct bpf_map *map, struct bpf_cpumask_info *cpus)
* Description
* Get system cpus returned in *cpus*.
* Return
diff --git a/tools/lib/bpf/libbpf_sched.h b/tools/lib/bpf/libbpf_sched.h
index 6cb30e8e81f8..187e854b99b3 100644
--- a/tools/lib/bpf/libbpf_sched.h
+++ b/tools/lib/bpf/libbpf_sched.h
@@ -21,6 +21,8 @@
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
+/* set bigger value may lead verifier failed */
+#define BPF_SCHED_LOOP_MAX 1024
#define INVALID_PTR ((void *)(0UL))
#define getVal(P) \
({ \
@@ -69,6 +71,13 @@ static __always_inline int libbpf_nr_cpumask_bits(void);
#endif
+struct {
+ __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
+ __type(key, u32);
+ __type(value, struct bpf_cpumask_info);
+ __uint(max_entries, 1);
+} map_cpumask_info SEC(".maps");
+
static __always_inline long libbpf_cpumask_copy(struct cpumask *dst,
struct cpumask *src)
{
@@ -228,58 +237,93 @@ static __always_inline long libbpf_cpumask_cpulist_parse(char *src1,
static __always_inline int libbpf_num_active_cpus(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nums_active_cpus);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nums_active_cpus);
}
static __always_inline int libbpf_num_possible_cpus(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nums_possible_cpus);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nums_possible_cpus);
}
static __always_inline void libbpf_possible_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_possible_cpumask);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_possible_cpumask);
}
static __always_inline void libbpf_active_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_active_cpumask);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_active_cpumask);
}
static __always_inline void libbpf_isolate_cpus_mask(struct cpumask *mask)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- libbpf_cpumask_copy(mask, &cpus.cpu_isolate_cpumask);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ libbpf_cpumask_copy(mask, &cpus->cpu_isolate_cpumask);
}
static __always_inline int libbpf_nr_cpus_ids(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.nr_cpu_ids);
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
+
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->nr_cpu_ids);
}
static __always_inline int libbpf_nr_cpumask_bits(void)
{
- struct bpf_cpumask_info cpus;
+ struct bpf_cpumask_info *cpus;
+ int key = 0;
+
+ cpus = bpf_map_lookup_elem(&map_cpumask_info, &key);
+ if (!cpus)
+ return -1;
- bpf_get_cpumask_info(&cpus, sizeof(cpus));
- return getVal(cpus.bpf_nr_cpumask_bits);
+ bpf_get_cpumask_info(&map_cpumask_info, cpus);
+ return getVal(cpus->bpf_nr_cpumask_bits);
}
static __always_inline unsigned long libbpf_cfs_load_avg_of(int cpu)
--
2.20.1
1
1

16 Sep '22
Add patches for CVE-2022-29900, CVE-2022-23816 and CVE-2022-29901.
Reference:
https://lore.kernel.org/all/CAODzB9qH9WhxQ0eB+mNvmsn64bHXUVppuSTMDGJekYOPCw…
https://www.amd.com/system/files/documents/technical-guidance-for-mitigatin…
https://www.intel.com/content/www/us/en/developer/articles/technical/softwa…
Alexandre Chartre (2):
x86/bugs: Report AMD retbleed vulnerability
x86/bugs: Add AMD retbleed= boot parameter
Andrew Cooper (1):
x86/cpu/amd: Enumerate BTC_NO
Arnaldo Carvalho de Melo (5):
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy'
tools arch x86: Sync the msr-index.h copy with the kernel sources
tools headers cpufeatures: Sync with the kernel sources
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy' - again
tools headers: Remove broken definition of __LITTLE_ENDIAN
Ben Hutchings (3):
x86: Add insn_decode_kernel()
Makefile: Set retpoline cflags based on CONFIG_CC_IS_{CLANG,GCC}
x86/xen: Fix initialisation in hypercall_page after rethunk
Borislav Petkov (7):
x86/insn: Rename insn_decode() to insn_decode_from_regs()
x86/insn: Add a __ignore_sync_check__ marker
x86/insn: Add an insn_decode() API
x86/alternative: Use insn_decode()
x86/alternative: Optimize single-byte NOPs at an arbitrary position
kvm/emulate: Fix SETcc emulation function offsets with SLS
tools/insn: Restore the relative include paths for cross building
Greg Kroah-Hartman (1):
x86, kvm: use proper ASM macros for kvm_vcpu_is_preempted
Joe Lawrence (1):
objtool: Make .altinstructions section entry size consistent
Josh Poimboeuf (24):
objtool: Refactor ORC section generation
objtool: Add 'alt_group' struct
objtool: Support stack layout changes in alternatives
objtool: Support retpoline jump detection for vmlinux.o
objtool: Assume only ELF functions do sibling calls
objtool: Combine UNWIND_HINT_RET_OFFSET and UNWIND_HINT_FUNC
x86/xen: Support objtool validation in xen-asm.S
x86/xen: Support objtool vmlinux.o validation in xen-head.S
objtool: Support asm jump tables
objtool: Don't make .altinstructions writable
objtool: Remove reloc symbol type checks in get_alt_entry()
x86/bugs: Do IBPB fallback check only once
x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
x86/speculation: Fix firmware entry SPEC_CTRL handling
x86/speculation: Fix SPEC_CTRL write on SMT state change
x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit
x86/speculation: Remove x86_spec_ctrl_mask
objtool: Re-add UNWIND_HINT_{SAVE_RESTORE}
KVM: VMX: Flatten __vmx_vcpu_run()
KVM: VMX: Convert launched argument to flags
KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS
KVM: VMX: Fix IBRS handling after vmexit
x86/speculation: Fill RSB on vmexit for IBRS
x86/ftrace: Add UNWIND_HINT_FUNC annotation for ftrace_stub
Juergen Gross (4):
x86/alternative: Merge include files
x86/alternative: Support not-feature
x86/alternative: Support ALTERNATIVE_TERNARY
x86/alternative: Use ALTERNATIVE_TERNARY() in _static_cpu_has()
Kim Phillips (3):
x86/sev: Avoid using __x86_return_thunk
x86/bugs: Enable STIBP for JMP2RET
x86/bugs: Remove apostrophe typo
Konrad Rzeszutek Wilk (1):
x86/kexec: Disable RET on kexec
Lin Yujun (2):
x86: Fix objtool build warning
Re-add padlen to the structure alt_instr
Linus Torvalds (2):
objtool: print out the symbol type when complaining about it
kvm: fix objtool relocation warning
Nathan Chancellor (1):
x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current
Pawan Gupta (3):
x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS
x86/bugs: Add Cannon lake to RETBleed affected CPU list
x86/speculation: Disable RRSBA behavior
Peter Zijlstra (70):
x86/alternatives: Optimize optimize_nops()
x86/retpoline: Simplify retpolines
objtool: Correctly handle retpoline thunk calls
objtool: Handle per arch retpoline naming
objtool: Rework the elf_rebuild_reloc_section() logic
objtool: Add elf_create_reloc() helper
objtool: Create reloc sections implicitly
objtool: Extract elf_strtab_concat()
objtool: Extract elf_symbol_add()
objtool: Add elf_create_undef_symbol()
objtool: Keep track of retpoline call sites
objtool: Cache instruction relocs
objtool: Skip magical retpoline .altinstr_replacement
objtool/x86: Rewrite retpoline thunk calls
objtool: Fix .symtab_shndx handling for elf_create_undef_symbol()
objtool: Only rewrite unconditional retpoline thunk calls
objtool/x86: Ignore __x86_indirect_alt_* symbols
objtool: Teach get_alt_entry() about more relocation types
objtool: Introduce CFI hash
objtool: Handle __sanitize_cov*() tail calls
objtool: Classify symbols
objtool: Explicitly avoid self modifying code in .altinstr_replacement
objtool,x86: Replace alternatives with .retpoline_sites
x86/retpoline: Remove unused replacement symbols
x86/asm: Fix register order
x86/asm: Fixup odd GEN-for-each-reg.h usage
x86/retpoline: Move the retpoline thunk declarations to
nospec-branch.h
x86/retpoline: Create a retpoline thunk array
x86/alternative: Implement .retpoline_sites support
bpf,x86: Simplify computing label offsets
bpf,x86: Respect X86_FEATURE_RETPOLINE*
x86/lib/atomic64_386_32: Rename things
x86: Prepare asm files for straight-line-speculation
x86: Prepare inline-asm for straight-line-speculation
x86/alternative: Relax text_poke_bp() constraint
objtool: Add straight-line-speculation validation
x86: Add straight-line-speculation mitigation
objtool: Default ignore INT3 for unreachable
crypto: x86/poly1305 - Fixup SLS
objtool: Fix SLS validation for kcov tail-call replacement
x86/entry: Remove skip_r11rcx
x86/kvm/vmx: Make noinstr clean
x86/cpufeatures: Move RETPOLINE flags to word 11
x86/retpoline: Cleanup some #ifdefery
x86/retpoline: Swizzle retpoline thunk
x86/retpoline: Use -mfunction-return
x86: Undo return-thunk damage
x86,objtool: Create .return_sites
x86,static_call: Use alternative RET encoding
x86/ftrace: Use alternative RET encoding
x86/bpf: Use alternative RET encoding
x86/kvm: Fix SETcc emulation for return thunks
x86/vsyscall_emu/64: Don't use RET in vsyscall emulation
x86: Use return-thunk in asm code
objtool: Treat .text.__x86.* as noinstr
x86: Add magic AMD return-thunk
x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value
x86/entry: Add kernel IBRS implementation
x86/bugs: Optimize SPEC_CTRL MSR writes
x86/bugs: Split spectre_v2_select_mitigation() and
spectre_v2_user_select_mitigation()
x86/bugs: Report Intel retbleed vulnerability
intel_idle: Disable IBRS during long idle
objtool: Update Retpoline validation
x86/xen: Rename SYS* entry points
x86/bugs: Add retbleed=ibpb
objtool: Add entry UNRET validation
x86/cpu/amd: Add Spectral Chicken
x86/common: Stamp out the stepping madness
x86/retbleed: Add fine grained Kconfig knobs
um: Add missing apply_returns()
Thadeu Lima de Souza Cascardo (5):
x86/realmode: build with -D__DISABLE_EXPORTS
objtool: skip non-text sections when adding return-thunk sites
x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported
efi/x86: use naked RET on mixed mode call wrapper
x86/kvm: fix FASTOP_SIZE when return thunks are enabled
Thomas Gleixner (1):
x86/static_call: Serialize __static_call_fixup() properly
Uros Bizjak (2):
KVM/VMX: Use TEST %REG,%REG instead of CMP $0,%REG in vmenter.S
KVM/nVMX: Use __vmx_vcpu_run in nested_vmx_check_vmentry_hw
Vasily Gorbik (1):
objtool: Fix elf_create_undef_symbol() endianness
.../admin-guide/kernel-parameters.txt | 25 +
Makefile | 20 +-
arch/um/kernel/um_arch.c | 8 +
arch/x86/Kconfig | 91 +-
arch/x86/Makefile | 8 +-
arch/x86/boot/compressed/efi_thunk_64.S | 2 +-
arch/x86/boot/compressed/head_64.S | 4 +-
arch/x86/boot/compressed/mem_encrypt.S | 4 +-
arch/x86/crypto/aegis128-aesni-asm.S | 48 +-
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 2 +-
arch/x86/crypto/aesni-intel_asm.S | 52 +-
arch/x86/crypto/aesni-intel_avx-x86_64.S | 40 +-
arch/x86/crypto/blake2s-core.S | 4 +-
arch/x86/crypto/blowfish-x86_64-asm_64.S | 12 +-
arch/x86/crypto/camellia-aesni-avx-asm_64.S | 18 +-
arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 18 +-
arch/x86/crypto/camellia-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/chacha-avx2-x86_64.S | 6 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 6 +-
arch/x86/crypto/chacha-ssse3-x86_64.S | 8 +-
arch/x86/crypto/crc32-pclmul_asm.S | 2 +-
arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 2 +-
arch/x86/crypto/crct10dif-pcl-asm_64.S | 2 +-
arch/x86/crypto/des3_ede-asm_64.S | 4 +-
arch/x86/crypto/ghash-clmulni-intel_asm.S | 6 +-
arch/x86/crypto/nh-avx2-x86_64.S | 2 +-
arch/x86/crypto/nh-sse2-x86_64.S | 2 +-
arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 38 +-
arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/serpent-avx2-asm_64.S | 16 +-
arch/x86/crypto/serpent-sse2-i586-asm_32.S | 6 +-
arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 6 +-
arch/x86/crypto/sha1_avx2_x86_64_asm.S | 2 +-
arch/x86/crypto/sha1_ni_asm.S | 2 +-
arch/x86/crypto/sha1_ssse3_asm.S | 2 +-
arch/x86/crypto/sha256-avx-asm.S | 2 +-
arch/x86/crypto/sha256-avx2-asm.S | 2 +-
arch/x86/crypto/sha256-ssse3-asm.S | 2 +-
arch/x86/crypto/sha256_ni_asm.S | 2 +-
arch/x86/crypto/sha512-avx-asm.S | 2 +-
arch/x86/crypto/sha512-avx2-asm.S | 2 +-
arch/x86/crypto/sha512-ssse3-asm.S | 2 +-
arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/twofish-i586-asm_32.S | 4 +-
arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 6 +-
arch/x86/crypto/twofish-x86_64-asm_64.S | 4 +-
arch/x86/entry/Makefile | 2 +-
arch/x86/entry/calling.h | 72 +-
arch/x86/entry/entry.S | 22 +
arch/x86/entry/entry_32.S | 6 +-
arch/x86/entry/entry_64.S | 62 +-
arch/x86/entry/entry_64_compat.S | 21 +-
arch/x86/entry/thunk_32.S | 2 +-
arch/x86/entry/thunk_64.S | 2 +-
arch/x86/entry/vdso/Makefile | 1 +
arch/x86/entry/vdso/vdso32/system_call.S | 4 +-
arch/x86/entry/vsyscall/vsyscall_emu_64.S | 3 +
arch/x86/include/asm/GEN-for-each-reg.h | 14 +-
arch/x86/include/asm/alternative-asm.h | 114 --
arch/x86/include/asm/alternative.h | 133 +-
arch/x86/include/asm/asm-prototypes.h | 17 -
arch/x86/include/asm/cpufeature.h | 41 +-
arch/x86/include/asm/cpufeatures.h | 12 +-
arch/x86/include/asm/disabled-features.h | 21 +-
arch/x86/include/asm/inat.h | 2 +-
arch/x86/include/asm/insn-eval.h | 4 +-
arch/x86/include/asm/insn.h | 28 +-
arch/x86/include/asm/linkage.h | 22 +
arch/x86/include/asm/msr-index.h | 13 +
arch/x86/include/asm/nospec-branch.h | 148 ++-
arch/x86/include/asm/paravirt.h | 2 +-
arch/x86/include/asm/qspinlock_paravirt.h | 4 +-
arch/x86/include/asm/smap.h | 5 +-
arch/x86/include/asm/static_call.h | 19 +-
arch/x86/include/asm/unwind_hints.h | 23 +-
arch/x86/kernel/acpi/wakeup_32.S | 6 +-
arch/x86/kernel/alternative.c | 356 +++++-
arch/x86/kernel/cpu/amd.c | 46 +-
arch/x86/kernel/cpu/bugs.c | 475 ++++++-
arch/x86/kernel/cpu/common.c | 61 +-
arch/x86/kernel/cpu/cpu.h | 2 +
arch/x86/kernel/cpu/hygon.c | 6 +
arch/x86/kernel/cpu/scattered.c | 1 +
arch/x86/kernel/ftrace.c | 7 +-
arch/x86/kernel/ftrace_32.S | 6 +-
arch/x86/kernel/ftrace_64.S | 13 +-
arch/x86/kernel/head_32.S | 2 +-
arch/x86/kernel/head_64.S | 5 +
arch/x86/kernel/irqflags.S | 4 +-
arch/x86/kernel/kprobes/core.c | 2 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kernel/module.c | 15 +-
arch/x86/kernel/paravirt.c | 2 +-
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/relocate_kernel_32.S | 15 +-
arch/x86/kernel/relocate_kernel_64.S | 13 +-
arch/x86/kernel/sev-es.c | 2 +-
arch/x86/kernel/sev_verify_cbit.S | 2 +-
arch/x86/kernel/static_call.c | 52 +-
arch/x86/kernel/umip.c | 2 +-
arch/x86/kernel/verify_cpu.S | 4 +-
arch/x86/kernel/vmlinux.lds.S | 23 +-
arch/x86/kvm/emulate.c | 39 +-
arch/x86/kvm/svm/vmenter.S | 11 +-
arch/x86/kvm/vmx/nested.c | 32 +-
arch/x86/kvm/vmx/run_flags.h | 8 +
arch/x86/kvm/vmx/vmenter.S | 170 +--
arch/x86/kvm/vmx/vmx.c | 78 +-
arch/x86/kvm/vmx/vmx.h | 5 +
arch/x86/kvm/x86.c | 4 +-
arch/x86/lib/atomic64_386_32.S | 88 +-
arch/x86/lib/atomic64_cx8_32.S | 18 +-
arch/x86/lib/checksum_32.S | 8 +-
arch/x86/lib/clear_page_64.S | 6 +-
arch/x86/lib/cmpxchg16b_emu.S | 4 +-
arch/x86/lib/cmpxchg8b_emu.S | 4 +-
arch/x86/lib/copy_mc_64.S | 6 +-
arch/x86/lib/copy_page_64.S | 10 +-
arch/x86/lib/copy_user_64.S | 14 +-
arch/x86/lib/csum-copy_64.S | 2 +-
arch/x86/lib/error-inject.c | 3 +-
arch/x86/lib/getuser.S | 22 +-
arch/x86/lib/hweight.S | 6 +-
arch/x86/lib/inat.c | 2 +-
arch/x86/lib/insn-eval.c | 6 +-
arch/x86/lib/insn.c | 222 +++-
arch/x86/lib/iomap_copy_64.S | 2 +-
arch/x86/lib/memcpy_64.S | 14 +-
arch/x86/lib/memmove_64.S | 11 +-
arch/x86/lib/memset_64.S | 8 +-
arch/x86/lib/msr-reg.S | 4 +-
arch/x86/lib/putuser.S | 6 +-
arch/x86/lib/retpoline.S | 118 +-
arch/x86/math-emu/div_Xsig.S | 2 +-
arch/x86/math-emu/div_small.S | 2 +-
arch/x86/math-emu/mul_Xsig.S | 6 +-
arch/x86/math-emu/polynom_Xsig.S | 2 +-
arch/x86/math-emu/reg_norm.S | 6 +-
arch/x86/math-emu/reg_round.S | 2 +-
arch/x86/math-emu/reg_u_add.S | 2 +-
arch/x86/math-emu/reg_u_div.S | 2 +-
arch/x86/math-emu/reg_u_mul.S | 2 +-
arch/x86/math-emu/reg_u_sub.S | 2 +-
arch/x86/math-emu/round_Xsig.S | 4 +-
arch/x86/math-emu/shr_Xsig.S | 8 +-
arch/x86/math-emu/wm_shrx.S | 16 +-
arch/x86/mm/mem_encrypt_boot.S | 6 +
arch/x86/net/bpf_jit_comp.c | 185 ++-
arch/x86/net/bpf_jit_comp32.c | 22 +-
arch/x86/platform/efi/efi_stub_32.S | 2 +-
arch/x86/platform/efi/efi_stub_64.S | 2 +-
arch/x86/platform/efi/efi_thunk_64.S | 5 +-
arch/x86/platform/olpc/xo1-wakeup.S | 6 +-
arch/x86/power/hibernate_asm_32.S | 4 +-
arch/x86/power/hibernate_asm_64.S | 4 +-
arch/x86/um/checksum_32.S | 4 +-
arch/x86/um/setjmp_32.S | 2 +-
arch/x86/um/setjmp_64.S | 2 +-
arch/x86/xen/Makefile | 1 -
arch/x86/xen/setup.c | 6 +-
arch/x86/xen/xen-asm.S | 43 +-
arch/x86/xen/xen-head.S | 6 +-
arch/x86/xen/xen-ops.h | 6 +-
drivers/base/cpu.c | 8 +
drivers/idle/intel_idle.c | 43 +-
include/linux/cpu.h | 2 +
include/linux/kvm_host.h | 2 +-
include/linux/objtool.h | 14 +-
samples/ftrace/ftrace-direct-modify.c | 4 +-
samples/ftrace/ftrace-direct-too.c | 2 +-
samples/ftrace/ftrace-direct.c | 2 +-
scripts/Makefile.build | 6 +
scripts/link-vmlinux.sh | 6 +
security/Kconfig | 11 -
tools/arch/x86/include/asm/cpufeatures.h | 12 +-
.../arch/x86/include/asm/disabled-features.h | 21 +-
tools/arch/x86/include/asm/inat.h | 2 +-
tools/arch/x86/include/asm/insn.h | 28 +-
tools/arch/x86/include/asm/msr-index.h | 13 +
tools/arch/x86/lib/inat.c | 2 +-
tools/arch/x86/lib/insn.c | 222 +++-
tools/arch/x86/lib/memcpy_64.S | 14 +-
tools/arch/x86/lib/memset_64.S | 8 +-
.../asm/{alternative-asm.h => alternative.h} | 0
tools/include/linux/kconfig.h | 67 +
tools/include/linux/objtool.h | 14 +-
.../Documentation/stack-validation.txt | 16 +-
tools/objtool/Makefile | 4 -
tools/objtool/arch.h | 13 +-
tools/objtool/arch/x86/decode.c | 58 +-
tools/objtool/builtin-check.c | 6 +-
tools/objtool/builtin-orc.c | 6 +-
tools/objtool/builtin.h | 3 +-
tools/objtool/cfi.h | 2 +
tools/objtool/check.c | 1131 +++++++++++++----
tools/objtool/check.h | 35 +-
tools/objtool/elf.c | 230 ++--
tools/objtool/elf.h | 20 +-
tools/objtool/objtool.c | 2 +
tools/objtool/objtool.h | 5 +-
tools/objtool/orc_gen.c | 324 ++---
tools/objtool/special.c | 22 +-
tools/objtool/sync-check.sh | 17 +-
tools/objtool/weak.c | 7 +-
tools/perf/check-headers.sh | 15 +-
207 files changed, 4323 insertions(+), 1902 deletions(-)
create mode 100644 arch/x86/entry/entry.S
delete mode 100644 arch/x86/include/asm/alternative-asm.h
create mode 100644 arch/x86/kvm/vmx/run_flags.h
rename tools/include/asm/{alternative-asm.h => alternative.h} (100%)
create mode 100644 tools/include/linux/kconfig.h
--
2.20.1
1
139
From: Yu Kuai <yukuai3(a)huawei.com>
Changes in v2:
- fix the problem that if 'nr_pending' is decreased to 0 in
wait_barrier_nolock() in patch 1, 'conf->barrier' is not waked, and
raise_barrier() can hang while waiting 'nr_pending' to be 0.
- only modify hot path in patch 2.
- use node 1 as default in patch 6.
In some architecture, for example KUNPENG 920, memory access latency is
very bad across nodes compare to local node. For consequence, io
performance is rather bad while users issue io from multiple nodes if
lock contention exist in the driver.
This patchset tries to avoid memory access across nodes in driver.
Test environment: aarch64 Huawei KUNPENG 920
Raid10 initialize:
mdadm --create /dev/md0 --level 10 --bitmap none --raid-devices 4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
Test cmd:
(task set -c 0-15) fio -name=0 -ioengine=libaio -direct=1 -group_reporting=1 -randseed=2022 -rwmixread=70 -refill_buffers -filename=/dev/md0 -numjobs=16 -runtime=60s -bs=4k -iodepth=256 -rw=randread
Test result:
before this patchset: 3.2 GiB/s
bind node before this patchset: 6.9 Gib/s
after this patchset: 7.9 Gib/s
bind node after this patchset: 8.0 Gib/s
Wang ShaoBo (1):
arm64/topology: Getting preferred sibling's cpumask supported by
platform
Yu Kuai (5):
md/raid10: convert resync_lock to use seqlock
md/raid10: prevent unnecessary calls to wake_up() in fast path
block: add new fields in request_queue
block: support to dispatch bio asynchronously
md: enable dispatching bio asynchronously by default
arch/arm64/Kconfig | 8 ++
arch/arm64/include/asm/smp_plat.h | 14 ++
arch/arm64/kernel/smp.c | 9 ++
arch/arm64/kernel/topology.c | 51 +++++++
block/blk-core.c | 212 +++++++++++++++++++++++++++++-
block/blk-sysfs.c | 40 ++++++
drivers/md/md.c | 5 +
drivers/md/raid10.c | 98 +++++++++-----
drivers/md/raid10.h | 2 +-
include/linux/arch_topology.h | 7 +
include/linux/blkdev.h | 6 +
11 files changed, 420 insertions(+), 32 deletions(-)
--
2.31.1
1
6
1
0
1
0

[PATCH openEuler-1.0-LTS] mm: Force TLB flush for PFNMAP mappings before unlink_file_vma()
by Yongqiang Liu 14 Sep '22
by Yongqiang Liu 14 Sep '22
14 Sep '22
From: Jann Horn <jannh(a)google.com>
stable inclusion
from stable-v4.19.257
commit c3b1e88f14e7f442e2ddcbec94527eec84ac0ca3
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PE9S
CVE: CVE-2022-39188
--------------------------------
commit b67fbebd4cf980aecbcc750e1462128bffe8ae15 upstream.
Some drivers rely on having all VMAs through which a PFN might be
accessible listed in the rmap for correctness.
However, on X86, it was possible for a VMA with stale TLB entries
to not be listed in the rmap.
This was fixed in mainline with
commit b67fbebd4cf9 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas"),
but that commit relies on preceding refactoring in
commit 18ba064e42df3 ("mmu_gather: Let there be one tlb_{start,end}_vma()
implementation") and commit 1e9fdf21a4339 ("mmu_gather: Remove per arch
tlb_{start,end}_vma()").
This patch provides equivalent protection without needing that
refactoring, by forcing a TLB flush between removing PTEs in
unmap_vmas() and the call to unlink_file_vma() in free_pgtables().
[This is a stable-specific rewrite of the upstream commit!]
Signed-off-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: zuoze <zuoze1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/mmap.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/mm/mmap.c b/mm/mmap.c
index a2699bc10f7b..3bf113a24599 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2899,6 +2899,18 @@ static void unmap_region(struct mm_struct *mm,
tlb_gather_mmu(&tlb, mm, start, end);
update_hiwater_rss(mm);
unmap_vmas(&tlb, vma, start, end);
+
+ /*
+ * Ensure we have no stale TLB entries by the time this mapping is
+ * removed from the rmap.
+ * Note that we don't have to worry about nested flushes here because
+ * we're holding the mm semaphore for removing the mapping - so any
+ * concurrent flush in this region has to be coming through the rmap,
+ * and we synchronize against that using the rmap lock.
+ */
+ if ((vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP)) != 0)
+ tlb_flush_mmu(&tlb);
+
free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
next ? next->vm_start : USER_PGTABLES_CEILING);
tlb_finish_mmu(&tlb, start, end);
--
2.25.1
1
0

[PATCH openEuler-5.10] Script: Add shell script for adding openeuler patch header
by Zheng Zengkai 14 Sep '22
by Zheng Zengkai 14 Sep '22
14 Sep '22
script for adding mainline patch header.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
add-openeuler-patch-header-mainline.sh | 56 ++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100755 add-openeuler-patch-header-mainline.sh
diff --git a/add-openeuler-patch-header-mainline.sh b/add-openeuler-patch-header-mainline.sh
new file mode 100755
index 000000000000..e9352911d242
--- /dev/null
+++ b/add-openeuler-patch-header-mainline.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+#
+# Usage:
+#
+# prerequisite:
+#
+# The patches to add header should be patches from linux mainline.
+#
+# command (run in the directory where patch files stored):
+# add-openeuler-patch-header-mainline.sh commit1..commit2 gitee_issue_url
+#
+# commit1: mainline start commit id
+# commit2: mainline end commit id
+# gitee_issue_url: for example: https://gitee.com/openeuler/kernel/issues/I4MKP4
+#
+# Example:
+# add-openeuler-patch-header-mainline.sh 2c85ebc57b3e..80e78fcce86d https://gitee.com/openeuler/kernel/issues/I5OHOB
+#
+
+for p in `ls *.patch`
+do
+ if [ $p == "0000-cover-letter.patch" ]; then
+ continue
+ fi
+
+ title=$(sed '/^Subject: \[PATCH .*\]/{N;s/\n / /g}' $p | grep -E "^Subject: \[PATCH .*\]" | cut -d ']' -f 2)
+ commit=$(git log --pretty=oneline $1 | grep -F "$title" | cut -d ' ' -f 1)
+ if [ -n "$multi" ]; then
+ echo "$p" has multi-commits
+ commit="multi"
+ continue
+ fi
+ if [ -z "$commit" ]; then
+ echo "$p" commit is null
+ commit="null"
+ continue
+ fi
+
+ # find insert line
+ i=5
+ while true
+ do
+ ln=""$i"p"
+ sub=`cat $p | sed -n "$ln"`
+ i=$(($i+1))
+ if [ -z "$sub" ]; then
+ break
+ fi
+ done
+ i=$(($i-1))
+
+ version=`git name-rev $commit | awk -F '[v~^]' '{print $2}'`
+
+ sed ""$i"a mainline inclusion\nfrom mainline-v$version\ncommit $commit\ncategory: feature\nbugzilla: $2\nCVE: NA\n\n--------------------------------\n" -i $p
+done
--
2.20.1
1
0

[PATCH openEuler-5.10-LTS 1/6] KVM: x86: do not report a vCPU as preempted outside instruction boundaries
by Zheng Zengkai 14 Sep '22
by Zheng Zengkai 14 Sep '22
14 Sep '22
From: Paolo Bonzini <pbonzini(a)redhat.com>
mainline inclusion
from mainline-v5.19-rc2
commit 6cd88243c7e03845a450795e134b488fc2afb736
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PJ7H
CVE: CVE-2022-39189
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
----------------------------------------
If a vCPU is outside guest mode and is scheduled out, it might be in the
process of making a memory access. A problem occurs if another vCPU uses
the PV TLB flush feature during the period when the vCPU is scheduled
out, and a virtual address has already been translated but has not yet
been accessed, because this is equivalent to using a stale TLB entry.
To avoid this, only report a vCPU as preempted if sure that the guest
is at an instruction boundary. A rescheduling request will be delivered
to the host physical CPU as an external interrupt, so for simplicity
consider any vmexit *not* instruction boundary except for external
interrupts.
It would in principle be okay to report the vCPU as preempted also
if it is sleeping in kvm_vcpu_block(): a TLB flush IPI will incur the
vmentry/vmexit overhead unnecessarily, and optimistic spinning is
also unlikely to succeed. However, leave it for later because right
now kvm_vcpu_check_block() is doing memory accesses. Even
though the TLB flush issue only applies to virtual memory address,
it's very much preferrable to be conservative.
Reported-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
conflict:
arch/x86/kvm/x86.c
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: yezengruan <yezengruan(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
arch/x86/include/asm/kvm_host.h | 3 +++
arch/x86/kvm/svm/svm.c | 2 ++
arch/x86/kvm/vmx/vmx.c | 1 +
arch/x86/kvm/x86.c | 24 ++++++++++++++++++++++++
4 files changed, 30 insertions(+)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index d90792da5b9e..01544554a4c2 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -551,6 +551,7 @@ struct kvm_vcpu_arch {
u64 ia32_misc_enable_msr;
u64 smbase;
u64 smi_count;
+ bool at_instruction_boundary;
bool tpr_access_reporting;
bool xsaves_enabled;
u64 ia32_xss;
@@ -1072,6 +1073,8 @@ struct kvm_vcpu_stat {
u64 utime;
u64 stime;
u64 gtime;
+ u64 preemption_reported;
+ u64 preemption_other;
u64 preemption_timer_exits;
};
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 2124fe54abfb..5231f40e8312 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -3992,6 +3992,8 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
static void svm_handle_exit_irqoff(struct kvm_vcpu *vcpu)
{
+ if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_INTR)
+ vcpu->arch.at_instruction_boundary = true;
}
static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu)
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 79889d27aa5b..96693ac066c2 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6532,6 +6532,7 @@ static void handle_external_interrupt_irqoff(struct kvm_vcpu *vcpu)
return;
handle_interrupt_nmi_irqoff(vcpu, gate_offset(desc));
+ vcpu->arch.at_instruction_boundary = true;
}
static void vmx_handle_exit_irqoff(struct kvm_vcpu *vcpu)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 24c198e70f8e..dac43d92eb81 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -232,6 +232,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
VCPU_STAT("l1d_flush", l1d_flush),
VCPU_STAT("halt_poll_success_ns", halt_poll_success_ns),
VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns),
+ VCPU_STAT("preemption_reported", preemption_reported),
+ VCPU_STAT("preemption_other", preemption_other),
VM_STAT("mmu_shadow_zapped", mmu_shadow_zapped),
VM_STAT("mmu_pte_write", mmu_pte_write),
VM_STAT("mmu_pde_zapped", mmu_pde_zapped),
@@ -286,6 +288,8 @@ struct dfx_kvm_stats_debugfs_item dfx_debugfs_entries[] = {
DFX_STAT("stime", stime),
DFX_STAT("gtime", gtime),
DFX_STAT("preemption_timer_exits", preemption_timer_exits),
+ DFX_STAT("preemption_reported", preemption_reported),
+ DFX_STAT("preemption_other", preemption_other),
{ NULL }
};
@@ -4078,6 +4082,19 @@ static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu)
struct kvm_host_map map;
struct kvm_steal_time *st;
+ /*
+ * The vCPU can be marked preempted if and only if the VM-Exit was on
+ * an instruction boundary and will not trigger guest emulation of any
+ * kind (see vcpu_run). Vendor specific code controls (conservatively)
+ * when this is true, for example allowing the vCPU to be marked
+ * preempted if and only if the VM-Exit was due to a host interrupt.
+ */
+ if (!vcpu->arch.at_instruction_boundary) {
+ vcpu->stat.preemption_other++;
+ return;
+ }
+
+ vcpu->stat.preemption_reported++;
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
return;
@@ -9306,6 +9323,13 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
vcpu->arch.l1tf_flush_l1d = true;
for (;;) {
+ /*
+ * If another guest vCPU requests a PV TLB flush in the middle
+ * of instruction emulation, the rest of the emulation could
+ * use a stale page translation. Assume that any code after
+ * this point can start executing an instruction.
+ */
+ vcpu->arch.at_instruction_boundary = false;
if (kvm_vcpu_running(vcpu)) {
r = vcpu_enter_guest(vcpu);
} else {
--
2.20.1
1
5
您好!
Kernel SIG 邀请您参加 2022-09-16 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.调度系列技术分享第三期 -- Linux调度器框架
2.openEuler开源之夏特性 -- 轻量级死锁检测实现
3.openEuler-22.09龙芯支持特性简介
会议链接:https://us06web.zoom.us/j/87690719217?pwd=cDN6V3Bhc05DU3lqTmhHYzA2L0RBQT09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-09-16 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.调度系列技术分享第三期 -- Linux调度器框架
2.openEuler开源之夏特性 -- 轻量级死锁检测实现
3.openEuler-22.09龙芯支持特性简介
You can join the meeting at https://us06web.zoom.us/j/87690719217?pwd=cDN6V3Bhc05DU3lqTmhHYzA2L0RBQT09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS] video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write
by Yongqiang Liu 14 Sep '22
by Yongqiang Liu 14 Sep '22
14 Sep '22
From: Hyunwoo Kim <imv4bel(a)gmail.com>
mainline inclusion
from mainline-v5.19-rc4
commit a09d2d00af53b43c6f11e6ab3cb58443c2cac8a7
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PRMO
CVE: CVE-2022-39842
---------------------
In pxa3xx_gcu_write, a count parameter of type size_t is passed to words of
type int. Then, copy_from_user() may cause a heap overflow because it is used
as the third argument of copy_from_user().
Signed-off-by: Hyunwoo Kim <imv4bel(a)gmail.com>
Signed-off-by: Helge Deller <deller(a)gmx.de>
Signed-off-by: Zhao Wenhui <zhaowenhui8(a)huawei.com>
Reviewed-by: Chen Hui <judy.chenhui(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/video/fbdev/pxa3xx-gcu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/pxa3xx-gcu.c b/drivers/video/fbdev/pxa3xx-gcu.c
index 69cfb337c857..6fe5573e2008 100644
--- a/drivers/video/fbdev/pxa3xx-gcu.c
+++ b/drivers/video/fbdev/pxa3xx-gcu.c
@@ -394,7 +394,7 @@ pxa3xx_gcu_write(struct file *file, const char *buff,
struct pxa3xx_gcu_batch *buffer;
struct pxa3xx_gcu_priv *priv = to_pxa3xx_gcu_priv(file);
- int words = count / 4;
+ size_t words = count / 4;
/* Does not need to be atomic. There's a lock in user space,
* but anyhow, this is just for statistics. */
--
2.25.1
1
0

[PATCH openEuler-5.10-LTS 000/137] Patches for CVE-2022-29900, CVE-2022-23816
by Zheng Zengkai 14 Sep '22
by Zheng Zengkai 14 Sep '22
14 Sep '22
Add patches for CVE-2022-29900, CVE-2022-23816 and CVE-2022-29901.
Reference:
https://lore.kernel.org/all/CAODzB9qH9WhxQ0eB+mNvmsn64bHXUVppuSTMDGJekYOPCw…
https://www.amd.com/system/files/documents/technical-guidance-for-mitigatin…
https://www.intel.com/content/www/us/en/developer/articles/technical/softwa…
Alexandre Chartre (2):
x86/bugs: Report AMD retbleed vulnerability
x86/bugs: Add AMD retbleed= boot parameter
Andrew Cooper (1):
x86/cpu/amd: Enumerate BTC_NO
Arnaldo Carvalho de Melo (5):
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy'
tools arch x86: Sync the msr-index.h copy with the kernel sources
tools headers cpufeatures: Sync with the kernel sources
tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf
bench mem memcpy' - again
tools headers: Remove broken definition of __LITTLE_ENDIAN
Ben Hutchings (3):
x86: Add insn_decode_kernel()
Makefile: Set retpoline cflags based on CONFIG_CC_IS_{CLANG,GCC}
x86/xen: Fix initialisation in hypercall_page after rethunk
Borislav Petkov (7):
x86/insn: Rename insn_decode() to insn_decode_from_regs()
x86/insn: Add a __ignore_sync_check__ marker
x86/insn: Add an insn_decode() API
x86/alternative: Use insn_decode()
x86/alternative: Optimize single-byte NOPs at an arbitrary position
kvm/emulate: Fix SETcc emulation function offsets with SLS
tools/insn: Restore the relative include paths for cross building
Greg Kroah-Hartman (1):
x86, kvm: use proper ASM macros for kvm_vcpu_is_preempted
Joe Lawrence (1):
objtool: Make .altinstructions section entry size consistent
Josh Poimboeuf (24):
objtool: Refactor ORC section generation
objtool: Add 'alt_group' struct
objtool: Support stack layout changes in alternatives
objtool: Support retpoline jump detection for vmlinux.o
objtool: Assume only ELF functions do sibling calls
objtool: Combine UNWIND_HINT_RET_OFFSET and UNWIND_HINT_FUNC
x86/xen: Support objtool validation in xen-asm.S
x86/xen: Support objtool vmlinux.o validation in xen-head.S
objtool: Support asm jump tables
objtool: Don't make .altinstructions writable
objtool: Remove reloc symbol type checks in get_alt_entry()
x86/bugs: Do IBPB fallback check only once
x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
x86/speculation: Fix firmware entry SPEC_CTRL handling
x86/speculation: Fix SPEC_CTRL write on SMT state change
x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit
x86/speculation: Remove x86_spec_ctrl_mask
objtool: Re-add UNWIND_HINT_{SAVE_RESTORE}
KVM: VMX: Flatten __vmx_vcpu_run()
KVM: VMX: Convert launched argument to flags
KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS
KVM: VMX: Fix IBRS handling after vmexit
x86/speculation: Fill RSB on vmexit for IBRS
x86/ftrace: Add UNWIND_HINT_FUNC annotation for ftrace_stub
Juergen Gross (4):
x86/alternative: Merge include files
x86/alternative: Support not-feature
x86/alternative: Support ALTERNATIVE_TERNARY
x86/alternative: Use ALTERNATIVE_TERNARY() in _static_cpu_has()
Kim Phillips (3):
x86/sev: Avoid using __x86_return_thunk
x86/bugs: Enable STIBP for JMP2RET
x86/bugs: Remove apostrophe typo
Konrad Rzeszutek Wilk (1):
x86/kexec: Disable RET on kexec
Lin Yujun (2):
x86: Fix objtool build warning
Re-add padlen to the structure alt_instr
Linus Torvalds (2):
objtool: print out the symbol type when complaining about it
kvm: fix objtool relocation warning
Nathan Chancellor (1):
x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current
Pawan Gupta (3):
x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS
x86/bugs: Add Cannon lake to RETBleed affected CPU list
x86/speculation: Disable RRSBA behavior
Peter Zijlstra (69):
x86/alternatives: Optimize optimize_nops()
x86/retpoline: Simplify retpolines
objtool: Correctly handle retpoline thunk calls
objtool: Handle per arch retpoline naming
objtool: Rework the elf_rebuild_reloc_section() logic
objtool: Add elf_create_reloc() helper
objtool: Create reloc sections implicitly
objtool: Extract elf_strtab_concat()
objtool: Extract elf_symbol_add()
objtool: Add elf_create_undef_symbol()
objtool: Keep track of retpoline call sites
objtool: Cache instruction relocs
objtool: Skip magical retpoline .altinstr_replacement
objtool/x86: Rewrite retpoline thunk calls
objtool: Fix .symtab_shndx handling for elf_create_undef_symbol()
objtool: Only rewrite unconditional retpoline thunk calls
objtool: Teach get_alt_entry() about more relocation types
objtool: Introduce CFI hash
objtool: Handle __sanitize_cov*() tail calls
objtool: Classify symbols
objtool: Explicitly avoid self modifying code in .altinstr_replacement
objtool,x86: Replace alternatives with .retpoline_sites
objtool/x86: Ignore __x86_indirect_alt_* symbols
x86/asm: Fix register order
x86/asm: Fixup odd GEN-for-each-reg.h usage
x86/retpoline: Move the retpoline thunk declarations to
nospec-branch.h
x86/retpoline: Create a retpoline thunk array
x86/alternative: Implement .retpoline_sites support
bpf,x86: Simplify computing label offsets
bpf,x86: Respect X86_FEATURE_RETPOLINE*
x86/lib/atomic64_386_32: Rename things
x86: Prepare asm files for straight-line-speculation
x86: Prepare inline-asm for straight-line-speculation
x86/alternative: Relax text_poke_bp() constraint
objtool: Add straight-line-speculation validation
x86: Add straight-line-speculation mitigation
objtool: Default ignore INT3 for unreachable
crypto: x86/poly1305 - Fixup SLS
objtool: Fix SLS validation for kcov tail-call replacement
x86/entry: Remove skip_r11rcx
x86/kvm/vmx: Make noinstr clean
x86/cpufeatures: Move RETPOLINE flags to word 11
x86/retpoline: Cleanup some #ifdefery
x86/retpoline: Swizzle retpoline thunk
x86/retpoline: Use -mfunction-return
x86: Undo return-thunk damage
x86,objtool: Create .return_sites
x86,static_call: Use alternative RET encoding
x86/ftrace: Use alternative RET encoding
x86/bpf: Use alternative RET encoding
x86/kvm: Fix SETcc emulation for return thunks
x86/vsyscall_emu/64: Don't use RET in vsyscall emulation
x86: Use return-thunk in asm code
objtool: Treat .text.__x86.* as noinstr
x86: Add magic AMD return-thunk
x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value
x86/entry: Add kernel IBRS implementation
x86/bugs: Optimize SPEC_CTRL MSR writes
x86/bugs: Split spectre_v2_select_mitigation() and
spectre_v2_user_select_mitigation()
x86/bugs: Report Intel retbleed vulnerability
intel_idle: Disable IBRS during long idle
objtool: Update Retpoline validation
x86/xen: Rename SYS* entry points
x86/bugs: Add retbleed=ibpb
objtool: Add entry UNRET validation
x86/cpu/amd: Add Spectral Chicken
x86/common: Stamp out the stepping madness
x86/retbleed: Add fine grained Kconfig knobs
um: Add missing apply_returns()
Thadeu Lima de Souza Cascardo (4):
x86/realmode: build with -D__DISABLE_EXPORTS
x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported
efi/x86: use naked RET on mixed mode call wrapper
x86/kvm: fix FASTOP_SIZE when return thunks are enabled
Thomas Gleixner (1):
x86/static_call: Serialize __static_call_fixup() properly
Uros Bizjak (2):
KVM/VMX: Use TEST %REG,%REG instead of CMP $0,%REG in vmenter.S
KVM/nVMX: Use __vmx_vcpu_run in nested_vmx_check_vmentry_hw
Vasily Gorbik (1):
objtool: Fix elf_create_undef_symbol() endianness
.../admin-guide/kernel-parameters.txt | 25 +
Makefile | 20 +-
arch/um/kernel/um_arch.c | 8 +
arch/x86/Kconfig | 91 +-
arch/x86/Makefile | 8 +-
arch/x86/boot/compressed/efi_thunk_64.S | 2 +-
arch/x86/boot/compressed/head_64.S | 4 +-
arch/x86/boot/compressed/mem_encrypt.S | 4 +-
arch/x86/crypto/aegis128-aesni-asm.S | 48 +-
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 2 +-
arch/x86/crypto/aesni-intel_asm.S | 52 +-
arch/x86/crypto/aesni-intel_avx-x86_64.S | 40 +-
arch/x86/crypto/blake2s-core.S | 4 +-
arch/x86/crypto/blowfish-x86_64-asm_64.S | 12 +-
arch/x86/crypto/camellia-aesni-avx-asm_64.S | 18 +-
arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 18 +-
arch/x86/crypto/camellia-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 12 +-
arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/chacha-avx2-x86_64.S | 6 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 6 +-
arch/x86/crypto/chacha-ssse3-x86_64.S | 8 +-
arch/x86/crypto/crc32-pclmul_asm.S | 2 +-
arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 2 +-
arch/x86/crypto/crct10dif-pcl-asm_64.S | 2 +-
arch/x86/crypto/des3_ede-asm_64.S | 4 +-
arch/x86/crypto/ghash-clmulni-intel_asm.S | 6 +-
arch/x86/crypto/nh-avx2-x86_64.S | 2 +-
arch/x86/crypto/nh-sse2-x86_64.S | 2 +-
arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 38 +-
arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/serpent-avx2-asm_64.S | 16 +-
arch/x86/crypto/serpent-sse2-i586-asm_32.S | 6 +-
arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 6 +-
arch/x86/crypto/sha1_avx2_x86_64_asm.S | 2 +-
arch/x86/crypto/sha1_ni_asm.S | 2 +-
arch/x86/crypto/sha1_ssse3_asm.S | 2 +-
arch/x86/crypto/sha256-avx-asm.S | 2 +-
arch/x86/crypto/sha256-avx2-asm.S | 2 +-
arch/x86/crypto/sha256-ssse3-asm.S | 2 +-
arch/x86/crypto/sha256_ni_asm.S | 2 +-
arch/x86/crypto/sha512-avx-asm.S | 2 +-
arch/x86/crypto/sha512-avx2-asm.S | 2 +-
arch/x86/crypto/sha512-ssse3-asm.S | 2 +-
arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 16 +-
arch/x86/crypto/twofish-i586-asm_32.S | 4 +-
arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 6 +-
arch/x86/crypto/twofish-x86_64-asm_64.S | 4 +-
arch/x86/entry/Makefile | 2 +-
arch/x86/entry/calling.h | 72 +-
arch/x86/entry/entry.S | 22 +
arch/x86/entry/entry_32.S | 6 +-
arch/x86/entry/entry_64.S | 62 +-
arch/x86/entry/entry_64_compat.S | 21 +-
arch/x86/entry/thunk_32.S | 2 +-
arch/x86/entry/thunk_64.S | 2 +-
arch/x86/entry/vdso/Makefile | 1 +
arch/x86/entry/vdso/vdso32/system_call.S | 4 +-
arch/x86/entry/vsyscall/vsyscall_emu_64.S | 3 +
arch/x86/include/asm/GEN-for-each-reg.h | 14 +-
arch/x86/include/asm/alternative-asm.h | 114 --
arch/x86/include/asm/alternative.h | 133 +-
arch/x86/include/asm/asm-prototypes.h | 17 -
arch/x86/include/asm/cpufeature.h | 41 +-
arch/x86/include/asm/cpufeatures.h | 12 +-
arch/x86/include/asm/disabled-features.h | 21 +-
arch/x86/include/asm/inat.h | 2 +-
arch/x86/include/asm/insn-eval.h | 4 +-
arch/x86/include/asm/insn.h | 28 +-
arch/x86/include/asm/linkage.h | 22 +
arch/x86/include/asm/msr-index.h | 13 +
arch/x86/include/asm/nospec-branch.h | 148 ++-
arch/x86/include/asm/paravirt.h | 2 +-
arch/x86/include/asm/qspinlock_paravirt.h | 4 +-
arch/x86/include/asm/smap.h | 5 +-
arch/x86/include/asm/static_call.h | 19 +-
arch/x86/include/asm/unwind_hints.h | 23 +-
arch/x86/kernel/acpi/wakeup_32.S | 6 +-
arch/x86/kernel/alternative.c | 356 +++++-
arch/x86/kernel/cpu/amd.c | 46 +-
arch/x86/kernel/cpu/bugs.c | 475 ++++++-
arch/x86/kernel/cpu/common.c | 61 +-
arch/x86/kernel/cpu/cpu.h | 2 +
arch/x86/kernel/cpu/hygon.c | 6 +
arch/x86/kernel/cpu/scattered.c | 1 +
arch/x86/kernel/ftrace.c | 7 +-
arch/x86/kernel/ftrace_32.S | 6 +-
arch/x86/kernel/ftrace_64.S | 13 +-
arch/x86/kernel/head_32.S | 2 +-
arch/x86/kernel/head_64.S | 5 +
arch/x86/kernel/irqflags.S | 4 +-
arch/x86/kernel/kprobes/core.c | 2 +-
arch/x86/kernel/kvm.c | 2 +-
arch/x86/kernel/module.c | 15 +-
arch/x86/kernel/paravirt.c | 2 +-
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/relocate_kernel_32.S | 15 +-
arch/x86/kernel/relocate_kernel_64.S | 13 +-
arch/x86/kernel/sev-es.c | 2 +-
arch/x86/kernel/sev_verify_cbit.S | 2 +-
arch/x86/kernel/static_call.c | 52 +-
arch/x86/kernel/umip.c | 2 +-
arch/x86/kernel/verify_cpu.S | 4 +-
arch/x86/kernel/vmlinux.lds.S | 23 +-
arch/x86/kvm/emulate.c | 39 +-
arch/x86/kvm/svm/vmenter.S | 11 +-
arch/x86/kvm/vmx/nested.c | 32 +-
arch/x86/kvm/vmx/run_flags.h | 8 +
arch/x86/kvm/vmx/vmenter.S | 170 +--
arch/x86/kvm/vmx/vmx.c | 78 +-
arch/x86/kvm/vmx/vmx.h | 5 +
arch/x86/kvm/x86.c | 4 +-
arch/x86/lib/atomic64_386_32.S | 88 +-
arch/x86/lib/atomic64_cx8_32.S | 18 +-
arch/x86/lib/checksum_32.S | 8 +-
arch/x86/lib/clear_page_64.S | 6 +-
arch/x86/lib/cmpxchg16b_emu.S | 4 +-
arch/x86/lib/cmpxchg8b_emu.S | 4 +-
arch/x86/lib/copy_mc_64.S | 6 +-
arch/x86/lib/copy_page_64.S | 10 +-
arch/x86/lib/copy_user_64.S | 14 +-
arch/x86/lib/csum-copy_64.S | 2 +-
arch/x86/lib/error-inject.c | 3 +-
arch/x86/lib/getuser.S | 22 +-
arch/x86/lib/hweight.S | 6 +-
arch/x86/lib/inat.c | 2 +-
arch/x86/lib/insn-eval.c | 6 +-
arch/x86/lib/insn.c | 222 +++-
arch/x86/lib/iomap_copy_64.S | 2 +-
arch/x86/lib/memcpy_64.S | 14 +-
arch/x86/lib/memmove_64.S | 11 +-
arch/x86/lib/memset_64.S | 8 +-
arch/x86/lib/msr-reg.S | 4 +-
arch/x86/lib/putuser.S | 6 +-
arch/x86/lib/retpoline.S | 118 +-
arch/x86/math-emu/div_Xsig.S | 2 +-
arch/x86/math-emu/div_small.S | 2 +-
arch/x86/math-emu/mul_Xsig.S | 6 +-
arch/x86/math-emu/polynom_Xsig.S | 2 +-
arch/x86/math-emu/reg_norm.S | 6 +-
arch/x86/math-emu/reg_round.S | 2 +-
arch/x86/math-emu/reg_u_add.S | 2 +-
arch/x86/math-emu/reg_u_div.S | 2 +-
arch/x86/math-emu/reg_u_mul.S | 2 +-
arch/x86/math-emu/reg_u_sub.S | 2 +-
arch/x86/math-emu/round_Xsig.S | 4 +-
arch/x86/math-emu/shr_Xsig.S | 8 +-
arch/x86/math-emu/wm_shrx.S | 16 +-
arch/x86/mm/mem_encrypt_boot.S | 6 +
arch/x86/net/bpf_jit_comp.c | 185 ++-
arch/x86/net/bpf_jit_comp32.c | 22 +-
arch/x86/platform/efi/efi_stub_32.S | 2 +-
arch/x86/platform/efi/efi_stub_64.S | 2 +-
arch/x86/platform/efi/efi_thunk_64.S | 5 +-
arch/x86/platform/olpc/xo1-wakeup.S | 6 +-
arch/x86/power/hibernate_asm_32.S | 4 +-
arch/x86/power/hibernate_asm_64.S | 4 +-
arch/x86/um/checksum_32.S | 4 +-
arch/x86/um/setjmp_32.S | 2 +-
arch/x86/um/setjmp_64.S | 2 +-
arch/x86/xen/Makefile | 1 -
arch/x86/xen/setup.c | 6 +-
arch/x86/xen/xen-asm.S | 43 +-
arch/x86/xen/xen-head.S | 6 +-
arch/x86/xen/xen-ops.h | 6 +-
drivers/base/cpu.c | 8 +
drivers/idle/intel_idle.c | 43 +-
include/linux/cpu.h | 2 +
include/linux/kvm_host.h | 2 +-
include/linux/objtool.h | 14 +-
samples/ftrace/ftrace-direct-modify.c | 4 +-
samples/ftrace/ftrace-direct-too.c | 2 +-
samples/ftrace/ftrace-direct.c | 2 +-
scripts/Makefile.build | 6 +
scripts/link-vmlinux.sh | 6 +
security/Kconfig | 11 -
tools/arch/x86/include/asm/cpufeatures.h | 12 +-
.../arch/x86/include/asm/disabled-features.h | 21 +-
tools/arch/x86/include/asm/inat.h | 2 +-
tools/arch/x86/include/asm/insn.h | 28 +-
tools/arch/x86/include/asm/msr-index.h | 13 +
tools/arch/x86/lib/inat.c | 2 +-
tools/arch/x86/lib/insn.c | 222 +++-
tools/arch/x86/lib/memcpy_64.S | 14 +-
tools/arch/x86/lib/memset_64.S | 8 +-
.../asm/{alternative-asm.h => alternative.h} | 0
tools/include/linux/kconfig.h | 67 +
tools/include/linux/objtool.h | 14 +-
.../Documentation/stack-validation.txt | 16 +-
tools/objtool/Makefile | 4 -
tools/objtool/arch.h | 13 +-
tools/objtool/arch/x86/decode.c | 58 +-
tools/objtool/builtin-check.c | 6 +-
tools/objtool/builtin-orc.c | 6 +-
tools/objtool/builtin.h | 3 +-
tools/objtool/cfi.h | 2 +
tools/objtool/check.c | 1131 +++++++++++++----
tools/objtool/check.h | 35 +-
tools/objtool/elf.c | 230 ++--
tools/objtool/elf.h | 20 +-
tools/objtool/objtool.c | 2 +
tools/objtool/objtool.h | 5 +-
tools/objtool/orc_gen.c | 324 ++---
tools/objtool/special.c | 22 +-
tools/objtool/sync-check.sh | 17 +-
tools/objtool/weak.c | 7 +-
tools/perf/check-headers.sh | 15 +-
207 files changed, 4323 insertions(+), 1902 deletions(-)
create mode 100644 arch/x86/entry/entry.S
delete mode 100644 arch/x86/include/asm/alternative-asm.h
create mode 100644 arch/x86/kvm/vmx/run_flags.h
rename tools/include/asm/{alternative-asm.h => alternative.h} (100%)
create mode 100644 tools/include/linux/kconfig.h
--
2.20.1
1
137

[PATCH openEuler-1.0-LTS] KVM: x86: do not report a vCPU as preempted outside instruction boundaries
by Yongqiang Liu 14 Sep '22
by Yongqiang Liu 14 Sep '22
14 Sep '22
From: Paolo Bonzini <pbonzini(a)redhat.com>
mainline inclusion
from mainline-v5.19-rc2
commit 6cd88243c7e03845a450795e134b488fc2afb736
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PJ7H
CVE: CVE-2022-39189
----------------------------------------
If a vCPU is outside guest mode and is scheduled out, it might be in the
process of making a memory access. A problem occurs if another vCPU uses
the PV TLB flush feature during the period when the vCPU is scheduled
out, and a virtual address has already been translated but has not yet
been accessed, because this is equivalent to using a stale TLB entry.
To avoid this, only report a vCPU as preempted if sure that the guest
is at an instruction boundary. A rescheduling request will be delivered
to the host physical CPU as an external interrupt, so for simplicity
consider any vmexit *not* instruction boundary except for external
interrupts.
It would in principle be okay to report the vCPU as preempted also
if it is sleeping in kvm_vcpu_block(): a TLB flush IPI will incur the
vmentry/vmexit overhead unnecessarily, and optimistic spinning is
also unlikely to succeed. However, leave it for later because right
now kvm_vcpu_check_block() is doing memory accesses. Even
though the TLB flush issue only applies to virtual memory address,
it's very much preferrable to be conservative.
Reported-by: Jann Horn <jannh(a)google.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
conflict:
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/x86/include/asm/kvm_host.h | 3 +++
arch/x86/kvm/svm.c | 3 +++
arch/x86/kvm/vmx.c | 1 +
arch/x86/kvm/x86.c | 25 +++++++++++++++++++++++++
4 files changed, 32 insertions(+)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 6549c20c958c..7afb2cb2d42c 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -520,6 +520,7 @@ struct kvm_vcpu_arch {
u64 ia32_misc_enable_msr;
u64 smbase;
u64 smi_count;
+ bool at_instruction_boundary;
bool tpr_access_reporting;
u64 ia32_xss;
u64 microcode_version;
@@ -935,6 +936,8 @@ struct kvm_vcpu_stat {
u64 utime;
u64 stime;
u64 gtime;
+ u64 preemption_reported;
+ u64 preemption_other;
};
struct x86_instruction_info;
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 46567343680f..f611ecdfc145 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -6205,6 +6205,9 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
static void svm_handle_external_intr(struct kvm_vcpu *vcpu)
{
+ if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_INTR)
+ vcpu->arch.at_instruction_boundary = true;
+
local_irq_enable();
/*
* We must have an instruction with interrupts enabled, so
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 7ab18b5a8e96..4164016cf105 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -10597,6 +10597,7 @@ static void vmx_handle_external_intr(struct kvm_vcpu *vcpu)
[cs]"i"(__KERNEL_CS)
);
}
+ vcpu->arch.at_instruction_boundary = true;
}
STACK_FRAME_NON_STANDARD(vmx_handle_external_intr);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 5da2811219ec..c61cab768d2a 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -186,6 +186,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
{ "halt_successful_poll", VCPU_STAT(halt_successful_poll) },
{ "halt_attempted_poll", VCPU_STAT(halt_attempted_poll) },
{ "halt_poll_invalid", VCPU_STAT(halt_poll_invalid) },
+ { "preemption_reported", VCPU_STAT(preemption_reported) },
+ { "preemption_other", VCPU_STAT(preemption_other) },
{ "halt_wakeup", VCPU_STAT(halt_wakeup) },
{ "hypercalls", VCPU_STAT(hypercalls) },
{ "request_irq", VCPU_STAT(request_irq_exits) },
@@ -231,6 +233,8 @@ struct dfx_kvm_stats_debugfs_item dfx_debugfs_entries[] = {
DFX_STAT("halt_exits", halt_exits),
DFX_STAT("halt_successful_poll", halt_successful_poll),
DFX_STAT("halt_attempted_poll", halt_attempted_poll),
+ DFX_STAT("preemption_reported", preemption_reported),
+ DFX_STAT("preemption_other", preemption_other),
DFX_STAT("halt_wakeup", halt_wakeup),
DFX_STAT("request_irq", request_irq_exits),
DFX_STAT("irq_exits", irq_exits),
@@ -3314,6 +3318,20 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu)
{
+ /*
+ * The vCPU can be marked preempted if and only if the VM-Exit was on
+ * an instruction boundary and will not trigger guest emulation of any
+ * kind (see vcpu_run). Vendor specific code controls (conservatively)
+ * when this is true, for example allowing the vCPU to be marked
+ * preempted if and only if the VM-Exit was due to a host interrupt.
+ */
+ if (!vcpu->arch.at_instruction_boundary) {
+ vcpu->stat.preemption_other++;
+ return;
+ }
+
+ vcpu->stat.preemption_reported++;
+
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
return;
@@ -7920,6 +7938,13 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
vcpu->arch.l1tf_flush_l1d = true;
for (;;) {
+ /*
+ * If another guest vCPU requests a PV TLB flush in the middle
+ * of instruction emulation, the rest of the emulation could
+ * use a stale page translation. Assume that any code after
+ * this point can start executing an instruction.
+ */
+ vcpu->arch.at_instruction_boundary = false;
if (kvm_vcpu_running(vcpu)) {
r = vcpu_enter_guest(vcpu);
} else {
--
2.25.1
1
0

[PATCH] KVM: arm64: Write arch.mdcr_el2 changes since last vcpu_load on VHE
by Laibin Qiu 14 Sep '22
by Laibin Qiu 14 Sep '22
14 Sep '22
From: Andrew Murray <andrew.murray(a)arm.com>
mainline inclusion
from mainline-v5.6
commit 4942dc6638b07b5326b6d2faa142635c559e7cd5
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5QR6C
CVE: NA
-------------
On VHE systems arch.mdcr_el2 is written to mdcr_el2 at vcpu_load time to
set options for self-hosted debug and the performance monitors
extension.
Unfortunately the value of arch.mdcr_el2 is not calculated until
kvm_arm_setup_debug() in the run loop after the vcpu has been loaded.
This means that the initial brief iterations of the run loop use a zero
value of mdcr_el2 - until the vcpu is preempted. This also results in a
delay between changes to vcpu->guest_debug taking effect.
Fix this by writing to mdcr_el2 in kvm_arm_setup_debug() on VHE systems
when a change to arch.mdcr_el2 has been detected.
Fixes: d5a21bcc2995 ("KVM: arm64: Move common VHE/non-VHE trap config in separate functions")
Cc: <stable(a)vger.kernel.org> # 4.17.x-
Suggested-by: James Morse <james.morse(a)arm.com>
Acked-by: Will Deacon <will(a)kernel.org>
Reviewed-by: Marc Zyngier <maz(a)kernel.org>
Signed-off-by: Andrew Murray <andrew.murray(a)arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas(a)arm.com>
Signed-off-by: Zengruan Ye <yezengruan(a)huawei.com>
Reviewed-by: Keqian Zhu <zhukeqian1(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
arch/arm64/kvm/debug.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/kvm/debug.c b/arch/arm64/kvm/debug.c
index 00d422336a45..4e722d73a3c3 100644
--- a/arch/arm64/kvm/debug.c
+++ b/arch/arm64/kvm/debug.c
@@ -112,7 +112,7 @@ void kvm_arm_reset_debug_ptr(struct kvm_vcpu *vcpu)
void kvm_arm_setup_debug(struct kvm_vcpu *vcpu)
{
bool trap_debug = !(vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY);
- unsigned long mdscr;
+ unsigned long mdscr, orig_mdcr_el2 = vcpu->arch.mdcr_el2;
trace_kvm_arm_setup_debug(vcpu, vcpu->guest_debug);
@@ -208,6 +208,10 @@ void kvm_arm_setup_debug(struct kvm_vcpu *vcpu)
if (vcpu_read_sys_reg(vcpu, MDSCR_EL1) & (DBG_MDSCR_KDE | DBG_MDSCR_MDE))
vcpu->arch.flags |= KVM_ARM64_DEBUG_DIRTY;
+ /* Write mdcr_el2 changes since vcpu_load on VHE systems */
+ if (has_vhe() && orig_mdcr_el2 != vcpu->arch.mdcr_el2)
+ write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
+
trace_kvm_arm_set_dreg32("MDCR_EL2", vcpu->arch.mdcr_el2);
trace_kvm_arm_set_dreg32("MDSCR_EL1", vcpu_read_sys_reg(vcpu, MDSCR_EL1));
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] perf bench futex-wake: Restore thread count default to online CPU count
by tangbin 13 Sep '22
by tangbin 13 Sep '22
13 Sep '22
From: Tommi Rantala <tommi.t.rantala(a)nokia.com>
stable inclusion
from stable-v4.19.111
commit 5e8dff99645e574122aef5dec91b8803339a6362
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5QSAP
CVE: NA
--------------------------------
commit f649bd9dd5d5004543bbc3c50b829577b49f5d75 upstream.
Since commit 3b2323c2c1c4 ("perf bench futex: Use cpumaps") the default
number of threads the benchmark uses got changed from number of online
CPUs to zero:
$ perf bench futex wake
# Running 'futex/wake' benchmark:
Run summary [PID 15930]: blocking on 0 threads (at [private] futex 0x558b8ee4bfac), waking up 1 at a time.
[Run 1]: Wokeup 0 of 0 threads in 0.0000 ms
[...]
[Run 10]: Wokeup 0 of 0 threads in 0.0000 ms
Wokeup 0 of 0 threads in 0.0004 ms (+-40.82%)
Restore the old behavior by grabbing the number of online CPUs via
cpu->nr:
$ perf bench futex wake
# Running 'futex/wake' benchmark:
Run summary [PID 18356]: blocking on 8 threads (at [private] futex 0xb3e62c), waking up 1 at a time.
[Run 1]: Wokeup 8 of 8 threads in 0.0260 ms
[...]
[Run 10]: Wokeup 8 of 8 threads in 0.0270 ms
Wokeup 8 of 8 threads in 0.0419 ms (+-24.35%)
Fixes: 3b2323c2c1c4 ("perf bench futex: Use cpumaps")
Signed-off-by: Tommi Rantala <tommi.t.rantala(a)nokia.com>
Tested-by: Arnaldo Carvalho de Melo <acme(a)redhat.com>
Cc: Alexander Shishkin <alexander.shishkin(a)linux.intel.com>
Cc: Darren Hart <dvhart(a)infradead.org>
Cc: Davidlohr Bueso <dave(a)stgolabs.net>
Cc: Jiri Olsa <jolsa(a)redhat.com>
Cc: Mark Rutland <mark.rutland(a)arm.com>
Cc: Namhyung Kim <namhyung(a)kernel.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Link: http://lore.kernel.org/lkml/20200305083714.9381-3-tommi.t.rantala@nokia.com
Signed-off-by: Arnaldo Carvalho de Melo <acme(a)redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: tangbin <tangbin(a)cmss.chinamobile.com>
---
tools/perf/bench/futex-wake.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/bench/futex-wake.c b/tools/perf/bench/futex-wake.c
index e8181ad7d088..e62006342b18 100644
--- a/tools/perf/bench/futex-wake.c
+++ b/tools/perf/bench/futex-wake.c
@@ -42,7 +42,7 @@ static bool done = false, silent = false, fshared = false;
static pthread_mutex_t thread_lock;
static pthread_cond_t thread_parent, thread_worker;
static struct stats waketime_stats, wakeup_stats;
-static unsigned int ncpus, threads_starting, nthreads = 0;
+static unsigned int threads_starting, nthreads = 0;
static int futex_flag = 0;
static const struct option options[] = {
@@ -140,7 +140,7 @@ int bench_futex_wake(int argc, const char **argv)
sigaction(SIGINT, &act, NULL);
if (!nthreads)
- nthreads = ncpus;
+ nthreads = cpu->nr;
worker = calloc(nthreads, sizeof(*worker));
if (!worker)
--
2.18.4
1
0

[PATCH openEuler-1.0-LTS] netfilter: nf_conntrack_irc: Tighten matching on DCC message
by Yongqiang Liu 13 Sep '22
by Yongqiang Liu 13 Sep '22
13 Sep '22
From: David Leadbeater <dgl(a)dgl.cx>
mainline inclusion
from mainline-v6.0-rc6
commit e8d5dfd1d8747b56077d02664a8838c71ced948e
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5OWZ7
CVE: CVE-2022-2663
---------------------------
CTCP messages should only be at the start of an IRC message, not
anywhere within it.
While the helper only decodes packes in the ORIGINAL direction, its
possible to make a client send a CTCP message back by empedding one into
a PING request. As-is, thats enough to make the helper believe that it
saw a CTCP message.
Fixes: 869f37d8e48f ("[NETFILTER]: nf_conntrack/nf_nat: add IRC helper port")
Signed-off-by: David Leadbeater <dgl(a)dgl.cx>
Signed-off-by: Florian Westphal <fw(a)strlen.de>
Signed-off-by: Liu Jian <liujian56(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/netfilter/nf_conntrack_irc.c | 34 ++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/net/netfilter/nf_conntrack_irc.c b/net/netfilter/nf_conntrack_irc.c
index 4099f4d79bae..819fc0df233f 100644
--- a/net/netfilter/nf_conntrack_irc.c
+++ b/net/netfilter/nf_conntrack_irc.c
@@ -150,15 +150,37 @@ static int help(struct sk_buff *skb, unsigned int protoff,
data = ib_ptr;
data_limit = ib_ptr + skb->len - dataoff;
- /* strlen("\1DCC SENT t AAAAAAAA P\1\n")=24
- * 5+MINMATCHLEN+strlen("t AAAAAAAA P\1\n")=14 */
- while (data < data_limit - (19 + MINMATCHLEN)) {
- if (memcmp(data, "\1DCC ", 5)) {
+ /* Skip any whitespace */
+ while (data < data_limit - 10) {
+ if (*data == ' ' || *data == '\r' || *data == '\n')
+ data++;
+ else
+ break;
+ }
+
+ /* strlen("PRIVMSG x ")=10 */
+ if (data < data_limit - 10) {
+ if (strncasecmp("PRIVMSG ", data, 8))
+ goto out;
+ data += 8;
+ }
+
+ /* strlen(" :\1DCC SENT t AAAAAAAA P\1\n")=26
+ * 7+MINMATCHLEN+strlen("t AAAAAAAA P\1\n")=26
+ */
+ while (data < data_limit - (21 + MINMATCHLEN)) {
+ /* Find first " :", the start of message */
+ if (memcmp(data, " :", 2)) {
data++;
continue;
}
+ data += 2;
+
+ /* then check that place only for the DCC command */
+ if (memcmp(data, "\1DCC ", 5))
+ goto out;
data += 5;
- /* we have at least (19+MINMATCHLEN)-5 bytes valid data left */
+ /* we have at least (21+MINMATCHLEN)-(2+5) bytes valid data left */
iph = ip_hdr(skb);
pr_debug("DCC found in master %pI4:%u %pI4:%u\n",
@@ -174,7 +196,7 @@ static int help(struct sk_buff *skb, unsigned int protoff,
pr_debug("DCC %s detected\n", dccprotos[i]);
/* we have at least
- * (19+MINMATCHLEN)-5-dccprotos[i].matchlen bytes valid
+ * (21+MINMATCHLEN)-7-dccprotos[i].matchlen bytes valid
* data left (== 14/13 bytes) */
if (parse_dcc(data, data_limit, &dcc_ip,
&dcc_port, &addr_beg_p, &addr_end_p)) {
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] selftests/bpf: Enlarge select() timeout for test_maps
by tangbin 13 Sep '22
by tangbin 13 Sep '22
13 Sep '22
From: Li Zhijian <lizhijian(a)cn.fujitsu.com>
stable inclusion
from stable-v4.19.207
commit 4c48bd3aa1a33cb3e8a0eca8330b8f100f43d895
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5QR5E
CVE: NA
--------------------------------
commit 2d82d73da35b72b53fe0d96350a2b8d929d07e42
0Day robot observed that it's easily timeout on a heavy load host.
-------------------
# selftests: bpf: test_maps
# Fork 1024 tasks to 'test_update_delete'
# Fork 1024 tasks to 'test_update_delete'
# Fork 100 tasks to 'test_hashmap'
# Fork 100 tasks to 'test_hashmap_percpu'
# Fork 100 tasks to 'test_hashmap_sizes'
# Fork 100 tasks to 'test_hashmap_walk'
# Fork 100 tasks to 'test_arraymap'
# Fork 100 tasks to 'test_arraymap_percpu'
# Failed sockmap unexpected timeout
not ok 3 selftests: bpf: test_maps # exit=1
# selftests: bpf: test_lru_map
# nr_cpus:8
-------------------
Since this test will be scheduled by 0Day to a random host that could have
only a few cpus(2-8), enlarge the timeout to avoid a false NG report.
In practice, i tried to pin it to only one cpu by 'taskset 0x01 ./test_maps',
and knew 10S is likely enough, but i still perfer to a larger value 30.
Reported-by: kernel test robot <lkp(a)intel.com>
Signed-off-by: Li Zhijian <lizhijian(a)cn.fujitsu.com>
Signed-off-by: Alexei Starovoitov <ast(a)kernel.org>
Acked-by: Song Liu <songliubraving(a)fb.com>
Link: https://lore.kernel.org/bpf/20210820015556.23276-2-lizhijian@cn.fujitsu.com
Signed-off-by: tangbin <tangbin(a)cmss.chinamobile.com>
---
tools/testing/selftests/bpf/test_maps.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/test_maps.c b/tools/testing/selftests/bpf/test_maps.c
index 9b552c0fc47d..e5e62cb57ff7 100644
--- a/tools/testing/selftests/bpf/test_maps.c
+++ b/tools/testing/selftests/bpf/test_maps.c
@@ -796,7 +796,7 @@ static void test_sockmap(int tasks, void *data)
FD_ZERO(&w);
FD_SET(sfd[3], &w);
- to.tv_sec = 1;
+ to.tv_sec = 30;
to.tv_usec = 0;
s = select(sfd[3] + 1, &w, NULL, NULL, &to);
if (s == -1) {
--
2.18.4
1
0

[PATCH openEuler-5.10 1/3] netfilter: nf_tables: do not allow SET_ID to refer to another table
by Zheng Zengkai 13 Sep '22
by Zheng Zengkai 13 Sep '22
13 Sep '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
stable inclusion
from stable-v5.10.137
commit 1a4b18b1ff11ba26f9a852019d674fde9d1d1cff
category: bugfix
bugzilla: 187457, https://gitee.com/src-openeuler/kernel/issues/I5MEZD
CVE: CVE-2022-2586
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 470ee20e069a6d05ae549f7d0ef2bdbcee6a81b2 upstream.
When doing lookups for sets on the same batch by using its ID, a set from a
different table can be used.
Then, when the table is removed, a reference to the set may be kept after
the set is freed, leading to a potential use-after-free.
When looking for sets by ID, use the table that was used for the lookup by
name, and only return sets belonging to that same table.
This fixes CVE-2022-2586, also reported as ZDI-CAN-17470.
Reported-by: Team Orca of Sea Security (@seasecresponse)
Fixes: 958bee14d071 ("netfilter: nf_tables: use new transaction infrastructure to handle sets")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
---
net/netfilter/nf_tables_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 560a93aad5b6..7b0497da2d94 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3638,6 +3638,7 @@ static struct nft_set *nft_set_lookup_byhandle(const struct nft_table *table,
}
static struct nft_set *nft_set_lookup_byid(const struct net *net,
+ const struct nft_table *table,
const struct nlattr *nla, u8 genmask)
{
struct nft_trans *trans;
@@ -3648,6 +3649,7 @@ static struct nft_set *nft_set_lookup_byid(const struct net *net,
struct nft_set *set = nft_trans_set(trans);
if (id == nft_trans_set_id(trans) &&
+ set->table == table &&
nft_active_genmask(set, genmask))
return set;
}
@@ -3668,7 +3670,7 @@ struct nft_set *nft_set_lookup_global(const struct net *net,
if (!nla_set_id)
return set;
- set = nft_set_lookup_byid(net, nla_set_id, genmask);
+ set = nft_set_lookup_byid(net, table, nla_set_id, genmask);
}
return set;
}
--
2.20.1
1
2

13 Sep '22
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
add-openeuler-head_loongarch.py | 39 +++++++++++++++++++
modify_message_loongarch.py | 62 ++++++++++++++++++++++++++++++
usage | 68 +++++++++++++++++++++++++++++++++
3 files changed, 169 insertions(+)
create mode 100755 add-openeuler-head_loongarch.py
create mode 100755 modify_message_loongarch.py
create mode 100644 usage
diff --git a/add-openeuler-head_loongarch.py b/add-openeuler-head_loongarch.py
new file mode 100755
index 000000000000..8219f6b6d8d2
--- /dev/null
+++ b/add-openeuler-head_loongarch.py
@@ -0,0 +1,39 @@
+#!/usr/local/bin/python3
+
+import argparse
+import sys
+import os
+import textwrap
+
+dir = os.path.split(os.path.realpath(__file__))[0]
+
+def parser_arg():
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ description=textwrap.dedent('''\
+ Use git rebase to add header for commits on current branch
+ Note:
+ Make sure modify_message_loonarch.py be in the same dir
+ '''))
+
+ parser.add_argument('-n', type=str, default="", help='add head to last n patch')
+ parser.add_argument('--bugzilla', type=str, help='bugzilla id', required=True)
+ return parser.parse_args()
+
+def main():
+ args = parser_arg()
+
+ if args.n == "":
+ args.n = os.popen("git log --oneline origin/openEuler-22.09..HEAD | wc -l").readline().strip("\n")
+
+ command ="git rebase --onto HEAD~" + args.n + " HEAD~" + args.n + " --exec \""
+ command += dir + "/modify_message_loongarch.py "
+ command += " --bugzilla " + args.bugzilla + " "
+ command += "\""
+ print(command)
+ os.system(command)
+
+if __name__ == "__main__":
+ # execute only if run as a script
+ main()
+
diff --git a/modify_message_loongarch.py b/modify_message_loongarch.py
new file mode 100755
index 000000000000..6853178794f7
--- /dev/null
+++ b/modify_message_loongarch.py
@@ -0,0 +1,62 @@
+#!/usr/local/bin/python3
+
+import argparse
+import sys
+import os
+import re
+
+def parser_arg():
+ parser = argparse.ArgumentParser(description='add head to last patch')
+ parser.add_argument('--bugzilla', type=str, help='bugzilla id', required=True)
+ return parser.parse_args()
+
+args = parser_arg()
+
+def add_head_loongarch(title):
+ head = [
+ "LoongArch inclusion\n",
+ "category: feature\n",
+ "bugzilla: " + args.bugzilla + "\n",
+ "\n",
+ "--------------------------------\n",
+ "\n",
+ ]
+ return head
+
+def add_head():
+ MSG = ".git/TEMP_COMMIT_MSG"
+ message = os.popen("git log -n 1 --pretty=%B").readlines()
+ find = 0
+
+ title = message[0].strip("\n");
+
+ # there is areadly a head
+ if title[0] == "[":
+ return
+
+ if find == 0:
+ head = add_head_loongarch(title)
+ if head:
+ find = 1
+
+ if message[1] == "\t\n":
+ post = 1;
+ else:
+ post = 2;
+
+ message[post:post] = head
+
+ f = open(MSG, 'w')
+ for line in message:
+ f.write(line)
+ f.close()
+
+ os.system("git commit --amend -F " + MSG)
+
+def main():
+ add_head()
+ return 0
+
+if __name__ == "__main__":
+ # execute only if run as a script
+ main()
diff --git a/usage b/usage
new file mode 100644
index 000000000000..97c9bd7e05da
--- /dev/null
+++ b/usage
@@ -0,0 +1,68 @@
+Usage:
+./add-openeuler-head_loongarch.py -n=2 --bugzilla=https://gitee.com/openeuler/kernel/issues/I5OHOB
+
+-n to specify the number of patches to add header to.
+
+before adding header:
+
+commit f0f6daca3f4677e3aa2817e204e2281d0d999614
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Thu Sep 8 14:32:38 2022 +0800
+
+ irqchip: fix phytium 2500 compile error
+
+ commit 75378552d2ee ("APCI: irq: Add support for multiple GSI domains")
+ changed the parameter type,fix it accordingly.
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+
+commit 6c3213c6068534e84e65cf1f2aff0ed18810cc4b
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Wed Sep 7 13:24:03 2022 +0800
+
+ LoongArch: defconfig: add openeuler default config
+
+ add openeuler default config for LoongArch,the difference with
+ loongson3_defconfig is following:
+ CONFIG_DEBUG_INFO=y
+ CONFIG_MODULE_SIG=y
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+
+After adding header:
+
+commit 94e56df31f6c6b8177687b7f7db6362d62183cd5 (HEAD -> openEuler-22.09)
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Thu Sep 8 14:32:38 2022 +0800
+
+ irqchip: fix phytium 2500 compile error
+
+ LoongArch inclusion
+ category: feature
+ bugzilla: https://gitee.com/openeuler/kernel/issues/I5OHOB
+
+ --------------------------------
+
+ commit 75378552d2ee ("APCI: irq: Add support for multiple GSI domains")
+ changed the parameter type,fix it accordingly.
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+
+commit 7e7e79233dce5cef575c35ab40b67982919eb1ca
+Author: Hongchen Zhang <zhanghongchen(a)loongson.cn>
+Date: Wed Sep 7 13:24:03 2022 +0800
+
+ LoongArch: defconfig: add openeuler default config
+
+ LoongArch inclusion
+ category: feature
+ bugzilla: https://gitee.com/openeuler/kernel/issues/I5OHOB
+
+ --------------------------------
+
+ add openeuler default config for LoongArch,the difference with
+ loongson3_defconfig is following:
+ CONFIG_DEBUG_INFO=y
+ CONFIG_MODULE_SIG=y
+
+ Signed-off-by: Hongchen Zhang <zhanghongchen(a)loongson.cn>
--
2.20.1
1
0

08 Sep '22
Some BPF programs compiled on s390 fail to load, because s390
arch-specific linux headers contain float and double types.
Introduce support for such types by representing them using the new
BTF_KIND_FLOAT. This series deals with libbpf, bpftool, in-kernel BTF
parser as well as selftests and documentation.
Ilya Leoshkevich (6):
tools/bpftool: Add BTF_KIND_FLOAT support
selftests/bpf: Use the 25th bit in the "invalid BTF_INFO" test
bpf: Add BTF_KIND_FLOAT support
selftest/bpf: Add BTF_KIND_FLOAT tests
selftests/bpf: Add BTF_KIND_FLOAT to the existing deduplication tests
bpf: Document BTF_KIND_FLOAT in btf.rst
Documentation/bpf/btf.rst | 17 +-
kernel/bpf/btf.c | 83 ++++++++-
tools/bpf/bpftool/btf.c | 8 +
tools/bpf/bpftool/btf_dumper.c | 1 +
tools/testing/selftests/bpf/btf_helpers.c | 4 +
tools/testing/selftests/bpf/prog_tests/btf.c | 176 +++++++++++++++++--
tools/testing/selftests/bpf/test_btf.h | 3 +
7 files changed, 275 insertions(+), 17 deletions(-)
--
2.20.1
1
6
Thadeu Lima de Souza Cascardo (3):
netfilter: nf_tables: do not allow SET_ID to refer to another table
netfilter: nf_tables: do not allow CHAIN_ID to refer to another table
netfilter: nf_tables: do not allow RULE_ID to refer to another chain
net/netfilter/nf_tables_api.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
--
2.31.1
1
3

[PATCH openEuler-5.10-LTS 1/3] netfilter: nf_tables: do not allow SET_ID to refer to another table
by Zheng Zengkai 07 Sep '22
by Zheng Zengkai 07 Sep '22
07 Sep '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
mainline inclusion
from mainline-v6.0-rc1
commit 470ee20e069a6d05ae549f7d0ef2bdbcee6a81b2
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5MEZD
CVE: CVE-2022-2586
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
When doing lookups for sets on the same batch by using its ID, a set from a
different table can be used.
Then, when the table is removed, a reference to the set may be kept after
the set is freed, leading to a potential use-after-free.
When looking for sets by ID, use the table that was used for the lookup by
name, and only return sets belonging to that same table.
This fixes CVE-2022-2586, also reported as ZDI-CAN-17470.
Reported-by: Team Orca of Sea Security (@seasecresponse)
Fixes: 958bee14d071 ("netfilter: nf_tables: use new transaction infrastructure to handle sets")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
conflict:
net/netfilter/nf_tables_api.c
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
net/netfilter/nf_tables_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 560a93aad5b6..7b0497da2d94 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3638,6 +3638,7 @@ static struct nft_set *nft_set_lookup_byhandle(const struct nft_table *table,
}
static struct nft_set *nft_set_lookup_byid(const struct net *net,
+ const struct nft_table *table,
const struct nlattr *nla, u8 genmask)
{
struct nft_trans *trans;
@@ -3648,6 +3649,7 @@ static struct nft_set *nft_set_lookup_byid(const struct net *net,
struct nft_set *set = nft_trans_set(trans);
if (id == nft_trans_set_id(trans) &&
+ set->table == table &&
nft_active_genmask(set, genmask))
return set;
}
@@ -3668,7 +3670,7 @@ struct nft_set *nft_set_lookup_global(const struct net *net,
if (!nla_set_id)
return set;
- set = nft_set_lookup_byid(net, nla_set_id, genmask);
+ set = nft_set_lookup_byid(net, table, nla_set_id, genmask);
}
return set;
}
--
2.20.1
1
2
*** BLURB HERE ***
Chen Zhongjin (2):
profiling: fix shift too large makes kernel panic
kprobes: Forbid probing on trampoline and BPF code areas
Dan Carpenter (1):
kfifo: fix kfifo_to_user() return type
David Howells (1):
vfs: Check the truncate maximum size in inode_newsize_ok()
Duoming Zhou (1):
mtd: sm_ftl: Fix deadlock caused by cancel_work_sync in sm_release
Eric Dumazet (1):
tcp: fix over estimation in sk_forced_mem_schedule()
Eric Whitney (1):
ext4: fix extent status tree race in writeback error recovery path
Hector Martin (1):
locking/atomic: Make test_and_*_bit() ordered on failure
Ilpo Järvinen (1):
serial: 8250_dw: Store LSR into lsr_saved_flags in
dw8250_tx_wait_empty()
Jason A. Donenfeld (1):
fs: check FMODE_LSEEK to control internal pipe splicing
Johan Hovold (1):
x86/pmem: Fix platform-device leak in error path
Kiselev, Oleg (1):
ext4: avoid resizing to a partial cluster size
Kuniyuki Iwashima (36):
ip: Fix data-races around sysctl_ip_fwd_use_pmtu.
ip: Fix data-races around sysctl_ip_nonlocal_bind.
ip: Fix a data-race around sysctl_fwmark_reflect.
tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept.
tcp: Fix data-races around sysctl_tcp_mtu_probing.
tcp: Fix a data-race around sysctl_tcp_probe_threshold.
tcp: Fix a data-race around sysctl_tcp_probe_interval.
igmp: Fix data-races around sysctl_igmp_llm_reports.
igmp: Fix a data-race around sysctl_igmp_max_memberships.
tcp: Fix data-races around sysctl_tcp_reordering.
tcp: Fix data-races around some timeout sysctl knobs.
tcp: Fix a data-race around sysctl_tcp_notsent_lowat.
tcp: Fix a data-race around sysctl_tcp_tw_reuse.
tcp: Fix data-races around sysctl_tcp_fastopen.
tcp: Fix a data-race around sysctl_tcp_early_retrans.
tcp: Fix data-races around sysctl_tcp_recovery.
tcp: Fix a data-race around sysctl_tcp_thin_linear_timeouts.
tcp: Fix data-races around sysctl_tcp_slow_start_after_idle.
tcp: Fix a data-race around sysctl_tcp_retrans_collapse.
tcp: Fix a data-race around sysctl_tcp_stdurg.
tcp: Fix a data-race around sysctl_tcp_rfc1337.
tcp: Fix data-races around sysctl_tcp_max_reordering.
tcp: Fix data-races around sysctl_tcp_dsack.
tcp: Fix a data-race around sysctl_tcp_app_win.
tcp: Fix a data-race around sysctl_tcp_adv_win_scale.
tcp: Fix a data-race around sysctl_tcp_frto.
tcp: Fix a data-race around sysctl_tcp_nometrics_save.
tcp: Fix a data-race around sysctl_tcp_challenge_ack_limit.
net: ping6: Fix memleak in ipv6_renew_options().
igmp: Fix data-races around sysctl_igmp_qrv.
tcp: Fix a data-race around sysctl_tcp_min_tso_segs.
tcp: Fix a data-race around sysctl_tcp_min_rtt_wlen.
tcp: Fix a data-race around sysctl_tcp_autocorking.
tcp: Fix a data-race around sysctl_tcp_invalid_ratelimit.
tcp: Fix a data-race around sysctl_tcp_comp_sack_delay_ns.
tcp: Fix a data-race around sysctl_tcp_comp_sack_nr.
Lukas Czerner (1):
ext4: make sure ext4_append() always allocates new block
Matthias May (1):
geneve: do not use RT_TOS for IPv6 flowlabel
Miaohe Lin (1):
mm/mmap.c: fix missing call to vm_unacct_memory in mmap_region
Nicolas Saenz Julienne (1):
nohz/full, sched/rt: Fix missed tick-reenabling bug in
dequeue_task_rt()
Theodore Ts'o (1):
ext4: update s_overhead_clusters in the superblock during an on-line
resize
Trond Myklebust (2):
NFSv4/pnfs: Fix a use-after-free bug in open
SUNRPC: Reinitialise the backchannel request buffers before reuse
Uwe Kleine-König (1):
mtd: st_spi_fsm: Add a clk_disable_unprepare() in .probe()'s error
path
Vincent Mailhol (1):
can: error: specify the values of data[5..7] of CAN error frames
Wang Cheng (1):
mm/mempolicy: fix uninit-value in mpol_rebind_policy()
Xiu Jianfeng (1):
selinux: Add boundary check in put_entry()
Yang Xu (1):
fs: Add missing umask strip in vfs_tmpfile
Yang Yingliang (1):
bus: hisi_lpc: fix missing platform_device_put() in
hisi_lpc_acpi_probe()
Yonglong Li (1):
tcp: make retransmitted SKB fit into the send window
Zhang Xianwei (1):
NFSv4.1: RECLAIM_COMPLETE must handle EACCES
huhai (1):
ACPI: LPSS: Fix missing check in register_device_clock()
Documentation/atomic_bitops.txt | 2 +-
arch/x86/kernel/pmem.c | 7 ++++-
drivers/acpi/acpi_lpss.c | 3 ++
drivers/bus/hisi_lpc.c | 10 +++---
drivers/mtd/devices/st_spi_fsm.c | 8 +++--
drivers/mtd/sm_ftl.c | 2 +-
drivers/net/geneve.c | 3 +-
drivers/tty/serial/8250/8250_dw.c | 3 ++
fs/attr.c | 2 ++
fs/ext4/inode.c | 7 +++++
fs/ext4/namei.c | 16 ++++++++++
fs/ext4/resize.c | 11 +++++++
fs/namei.c | 2 ++
fs/nfs/nfs4proc.c | 14 ++++++---
fs/splice.c | 10 +++---
include/asm-generic/bitops/atomic.h | 6 ----
include/linux/kfifo.h | 2 +-
include/net/inet_sock.h | 5 +--
include/net/ip.h | 4 +--
include/net/tcp.h | 11 ++++---
include/uapi/linux/can/error.h | 5 ++-
kernel/kprobes.c | 3 +-
kernel/profile.c | 7 +++++
kernel/sched/rt.c | 15 +++++----
mm/mempolicy.c | 2 +-
mm/mmap.c | 1 -
net/ipv4/af_inet.c | 2 +-
net/ipv4/igmp.c | 47 +++++++++++++++++------------
net/ipv4/route.c | 2 +-
net/ipv4/tcp.c | 12 +++++---
net/ipv4/tcp_fastopen.c | 4 +--
net/ipv4/tcp_input.c | 39 ++++++++++++++----------
net/ipv4/tcp_ipv4.c | 2 +-
net/ipv4/tcp_metrics.c | 5 +--
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/tcp_output.c | 46 +++++++++++++++++-----------
net/ipv4/tcp_recovery.c | 6 ++--
net/ipv4/tcp_timer.c | 14 ++++-----
net/ipv6/ping.c | 6 ++++
net/sctp/protocol.c | 2 +-
net/sunrpc/backchannel_rqst.c | 14 +++++++++
security/selinux/ss/policydb.h | 2 ++
42 files changed, 240 insertions(+), 126 deletions(-)
--
2.25.1
1
64

07 Sep '22
Chunguang Xu (1):
block: fix the problem of io_ticks becoming smaller
Dan Carpenter (1):
acpi/nfit: improve bounds checking for 'func'
Erik Kaneda (2):
ACPICA: Do not increment operation_region reference counts for field
units
ACPICA: Disassembler: create buffer fields in ACPI_PARSE_LOAD_PASS1
Francesco Pollicino (1):
block, bfq: save & resume weight on a queue merge/split
Jiasheng Jiang (1):
ACPI: APD: Check for NULL pointer after calling devm_ioremap()
Mark Langsdorf (2):
ACPI: custom_method: fix a possible memory leak
ACPI: custom_method: fix potential use-after-free issue
Maximilian Luz (1):
ACPICA: Fix exception code class checks
Qinglang Miao (1):
ACPI: configfs: add missing check after
configfs_register_default_group()
Robin Murphy (1):
ACPI/IORT: Check node revision for PMCG resources
Tuan Phan (1):
ACPI/IORT: Fix PMCG node single ID mapping handling
zhengbin (1):
blk-mq: Fix memory leak in blk_mq_init_allocated_queue error handling
block/bfq-iosched.c | 2 ++
block/bfq-iosched.h | 9 +++++++++
block/bio.c | 2 +-
block/blk-mq.c | 9 ++++++---
drivers/acpi/acpi_apd.c | 2 ++
drivers/acpi/acpi_configfs.c | 7 ++++++-
drivers/acpi/acpica/dsfield.c | 2 +-
drivers/acpi/acpica/dswload.c | 21 +++++++++++++++++++++
drivers/acpi/acpica/exprep.c | 4 ----
drivers/acpi/acpica/utdelete.c | 6 +-----
drivers/acpi/arm64/iort.c | 19 ++++++++++++++++---
drivers/acpi/custom_method.c | 4 +++-
drivers/acpi/nfit/core.c | 7 ++++---
drivers/acpi/nfit/nfit.h | 1 +
include/acpi/acexcep.h | 10 +++++-----
15 files changed, 78 insertions(+), 27 deletions(-)
--
2.25.1
1
13
When use openEuler-1.0-LTS kernel in euler22.03, we found it
unable to compile and boot, thus fix it.
Andy Lutomirski (1):
x86/entry/64: Don't compile ignore_sysret if 32-bit emulation is
enabled
Aristeu Rozanski (1):
EDAC: skx_common: downgrade message importance on missing PCI device
Borislav Petkov (1):
x86: Fix early boot crash on gcc-10, third try
Josh Poimboeuf (1):
objtool: Don't fail on missing symbol table
arch/x86/entry/entry_64.S | 6 ++++++
arch/x86/include/asm/stackprotector.h | 7 ++++++-
arch/x86/kernel/smpboot.c | 8 ++++++++
arch/x86/xen/smp_pv.c | 1 +
drivers/edac/skx_common.c | 2 +-
include/linux/compiler.h | 6 ++++++
init/main.c | 2 ++
tools/objtool/elf.c | 7 +++++--
8 files changed, 35 insertions(+), 4 deletions(-)
--
2.18.4
1
4

[PATCH openEuler-1.0-LTS 1/3] usb: gadget: function: printer: fix use-after-free in __lock_acquire
by Yongqiang Liu 07 Sep '22
by Yongqiang Liu 07 Sep '22
07 Sep '22
From: Zqiang <qiang.zhang(a)windriver.com>
stable inclusion
from stable-v4.19.154
commit cedb0187b8ba929c3f76f28e6bc25804d65f8a54
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5PB1E
CVE: CVE-2020-27784
---------------------------
[ Upstream commit e8d5f92b8d30bb4ade76494490c3c065e12411b1 ]
Fix this by increase object reference count.
BUG: KASAN: use-after-free in __lock_acquire+0x3fd4/0x4180
kernel/locking/lockdep.c:3831
Read of size 8 at addr ffff8880683b0018 by task syz-executor.0/3377
CPU: 1 PID: 3377 Comm: syz-executor.0 Not tainted 5.6.11 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xce/0x128 lib/dump_stack.c:118
print_address_description.constprop.4+0x21/0x3c0 mm/kasan/report.c:374
__kasan_report+0x131/0x1b0 mm/kasan/report.c:506
kasan_report+0x12/0x20 mm/kasan/common.c:641
__asan_report_load8_noabort+0x14/0x20 mm/kasan/generic_report.c:135
__lock_acquire+0x3fd4/0x4180 kernel/locking/lockdep.c:3831
lock_acquire+0x127/0x350 kernel/locking/lockdep.c:4488
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0x35/0x50 kernel/locking/spinlock.c:159
printer_ioctl+0x4a/0x110 drivers/usb/gadget/function/f_printer.c:723
vfs_ioctl fs/ioctl.c:47 [inline]
ksys_ioctl+0xfb/0x130 fs/ioctl.c:763
__do_sys_ioctl fs/ioctl.c:772 [inline]
__se_sys_ioctl fs/ioctl.c:770 [inline]
__x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:770
do_syscall_64+0x9e/0x510 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x4531a9
Code: ed 60 fc ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48
89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d
01 f0 ff ff 0f 83 bb 60 fc ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007fd14ad72c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 000000000073bfa8 RCX: 00000000004531a9
RDX: fffffffffffffff9 RSI: 000000000000009e RDI: 0000000000000003
RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004bbd61
R13: 00000000004d0a98 R14: 00007fd14ad736d4 R15: 00000000ffffffff
Allocated by task 2393:
save_stack+0x21/0x90 mm/kasan/common.c:72
set_track mm/kasan/common.c:80 [inline]
__kasan_kmalloc.constprop.3+0xa7/0xd0 mm/kasan/common.c:515
kasan_kmalloc+0x9/0x10 mm/kasan/common.c:529
kmem_cache_alloc_trace+0xfa/0x2d0 mm/slub.c:2813
kmalloc include/linux/slab.h:555 [inline]
kzalloc include/linux/slab.h:669 [inline]
gprinter_alloc+0xa1/0x870 drivers/usb/gadget/function/f_printer.c:1416
usb_get_function+0x58/0xc0 drivers/usb/gadget/functions.c:61
config_usb_cfg_link+0x1ed/0x3e0 drivers/usb/gadget/configfs.c:444
configfs_symlink+0x527/0x11d0 fs/configfs/symlink.c:202
vfs_symlink+0x33d/0x5b0 fs/namei.c:4201
do_symlinkat+0x11b/0x1d0 fs/namei.c:4228
__do_sys_symlinkat fs/namei.c:4242 [inline]
__se_sys_symlinkat fs/namei.c:4239 [inline]
__x64_sys_symlinkat+0x73/0xb0 fs/namei.c:4239
do_syscall_64+0x9e/0x510 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Freed by task 3368:
save_stack+0x21/0x90 mm/kasan/common.c:72
set_track mm/kasan/common.c:80 [inline]
kasan_set_free_info mm/kasan/common.c:337 [inline]
__kasan_slab_free+0x135/0x190 mm/kasan/common.c:476
kasan_slab_free+0xe/0x10 mm/kasan/common.c:485
slab_free_hook mm/slub.c:1444 [inline]
slab_free_freelist_hook mm/slub.c:1477 [inline]
slab_free mm/slub.c:3034 [inline]
kfree+0xf7/0x410 mm/slub.c:3995
gprinter_free+0x49/0xd0 drivers/usb/gadget/function/f_printer.c:1353
usb_put_function+0x38/0x50 drivers/usb/gadget/functions.c:87
config_usb_cfg_unlink+0x2db/0x3b0 drivers/usb/gadget/configfs.c:485
configfs_unlink+0x3b9/0x7f0 fs/configfs/symlink.c:250
vfs_unlink+0x287/0x570 fs/namei.c:4073
do_unlinkat+0x4f9/0x620 fs/namei.c:4137
__do_sys_unlink fs/namei.c:4184 [inline]
__se_sys_unlink fs/namei.c:4182 [inline]
__x64_sys_unlink+0x42/0x50 fs/namei.c:4182
do_syscall_64+0x9e/0x510 arch/x86/entry/common.c:294
entry_SYSCALL_64_after_hwframe+0x49/0xbe
The buggy address belongs to the object at ffff8880683b0000
which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 24 bytes inside of
1024-byte region [ffff8880683b0000, ffff8880683b0400)
The buggy address belongs to the page:
page:ffffea0001a0ec00 refcount:1 mapcount:0 mapping:ffff88806c00e300
index:0xffff8880683b1800 compound_mapcount: 0
flags: 0x100000000010200(slab|head)
raw: 0100000000010200 0000000000000000 0000000600000001 ffff88806c00e300
raw: ffff8880683b1800 000000008010000a 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Reported-by: Kyungtae Kim <kt0755(a)gmail.com>
Signed-off-by: Zqiang <qiang.zhang(a)windriver.com>
Signed-off-by: Felipe Balbi <balbi(a)kernel.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Wei Li <liwei391(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/usb/gadget/function/f_printer.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/gadget/function/f_printer.c b/drivers/usb/gadget/function/f_printer.c
index 9c7ed2539ff7..8ed1295d7e35 100644
--- a/drivers/usb/gadget/function/f_printer.c
+++ b/drivers/usb/gadget/function/f_printer.c
@@ -31,6 +31,7 @@
#include <linux/types.h>
#include <linux/ctype.h>
#include <linux/cdev.h>
+#include <linux/kref.h>
#include <asm/byteorder.h>
#include <linux/io.h>
@@ -64,7 +65,7 @@ struct printer_dev {
struct usb_gadget *gadget;
s8 interface;
struct usb_ep *in_ep, *out_ep;
-
+ struct kref kref;
struct list_head rx_reqs; /* List of free RX structs */
struct list_head rx_reqs_active; /* List of Active RX xfers */
struct list_head rx_buffers; /* List of completed xfers */
@@ -218,6 +219,13 @@ static inline struct usb_endpoint_descriptor *ep_desc(struct usb_gadget *gadget,
/*-------------------------------------------------------------------------*/
+static void printer_dev_free(struct kref *kref)
+{
+ struct printer_dev *dev = container_of(kref, struct printer_dev, kref);
+
+ kfree(dev);
+}
+
static struct usb_request *
printer_req_alloc(struct usb_ep *ep, unsigned len, gfp_t gfp_flags)
{
@@ -348,6 +356,7 @@ printer_open(struct inode *inode, struct file *fd)
spin_unlock_irqrestore(&dev->lock, flags);
+ kref_get(&dev->kref);
DBG(dev, "printer_open returned %x\n", ret);
return ret;
}
@@ -365,6 +374,7 @@ printer_close(struct inode *inode, struct file *fd)
dev->printer_status &= ~PRINTER_SELECTED;
spin_unlock_irqrestore(&dev->lock, flags);
+ kref_put(&dev->kref, printer_dev_free);
DBG(dev, "printer_close\n");
return 0;
@@ -1350,7 +1360,8 @@ static void gprinter_free(struct usb_function *f)
struct f_printer_opts *opts;
opts = container_of(f->fi, struct f_printer_opts, func_inst);
- kfree(dev);
+
+ kref_put(&dev->kref, printer_dev_free);
mutex_lock(&opts->lock);
--opts->refcnt;
mutex_unlock(&opts->lock);
@@ -1419,6 +1430,7 @@ static struct usb_function *gprinter_alloc(struct usb_function_instance *fi)
return ERR_PTR(-ENOMEM);
}
+ kref_init(&dev->kref);
++opts->refcnt;
dev->minor = opts->minor;
dev->pnp_string = opts->pnp_string;
--
2.25.1
1
2

[PATCH openEuler-5.10 01/14] tty: drivers/tty/, stop using tty_schedule_flip()
by Zheng Zengkai 06 Sep '22
by Zheng Zengkai 06 Sep '22
06 Sep '22
From: Jiri Slaby <jslaby(a)suse.cz>
stable inclusion
from stable-v5.10.134
commit 6a81848252869d929354a879e08807c932444929
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5Y1
CVE: CVE-2022-1462
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 5f6a85158ccacc3f09744b3aafe8b11ab3b6c6f6 upstream.
Since commit a9c3f68f3cd8d (tty: Fix low_latency BUG) in 2014,
tty_flip_buffer_push() is only a wrapper to tty_schedule_flip(). We are
going to remove the latter (as it is used less), so call the former in
drivers/tty/.
Cc: Vladimir Zapolskiy <vz(a)mleia.com>
Reviewed-by: Johan Hovold <johan(a)kernel.org>
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Link: https://lore.kernel.org/r/20211122111648.30379-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yi Yang <yiyang13(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/tty/cyclades.c | 6 +++---
drivers/tty/goldfish.c | 2 +-
drivers/tty/moxa.c | 4 ++--
drivers/tty/serial/lpc32xx_hs.c | 2 +-
drivers/tty/vt/keyboard.c | 6 +++---
drivers/tty/vt/vt.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 097266342e5e..4bcaab250676 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -556,7 +556,7 @@ static void cyy_chip_rx(struct cyclades_card *cinfo, int chip,
}
info->idle_stats.recv_idle = jiffies;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
/* end of service */
cyy_writeb(info, CyRIR, save_xir & 0x3f);
@@ -996,7 +996,7 @@ static void cyz_handle_rx(struct cyclades_port *info)
mod_timer(&info->rx_full_timer, jiffies + 1);
#endif
info->idle_stats.recv_idle = jiffies;
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
/* Update rx_get */
cy_writel(&buf_ctrl->rx_get, new_rx_get);
@@ -1172,7 +1172,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)
if (delta_count)
wake_up_interruptible(&info->port.delta_msr_wait);
if (special_count)
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
}
}
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index c8c5cdfc5e19..ed0f3a7b8fe5 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -151,7 +151,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
address = (unsigned long)(void *)buf;
goldfish_tty_rw(qtty, address, count, 0);
- tty_schedule_flip(&qtty->port);
+ tty_flip_buffer_push(&qtty->port);
return IRQ_HANDLED;
}
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index f9f14104bd2c..d6528f3bb9b9 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -1385,7 +1385,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (inited && !tty_throttled(tty) &&
MoxaPortRxQueue(p) > 0) { /* RX */
MoxaPortReadData(p);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
} else {
clear_bit(EMPTYWAIT, &p->statusflags);
@@ -1410,7 +1410,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (tty && (intr & IntrBreak) && !I_IGNBRK(tty)) { /* BREAK */
tty_insert_flip_char(&p->port, 0, TTY_BREAK);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
if (intr & IntrLine)
diff --git a/drivers/tty/serial/lpc32xx_hs.c b/drivers/tty/serial/lpc32xx_hs.c
index b5898c932036..a9802308ff60 100644
--- a/drivers/tty/serial/lpc32xx_hs.c
+++ b/drivers/tty/serial/lpc32xx_hs.c
@@ -344,7 +344,7 @@ static irqreturn_t serial_lpc32xx_interrupt(int irq, void *dev_id)
LPC32XX_HSUART_IIR(port->membase));
port->icount.overrun++;
tty_insert_flip_char(tport, 0, TTY_OVERRUN);
- tty_schedule_flip(tport);
+ tty_flip_buffer_push(tport);
}
/* Data received? */
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index 78acc270e39a..aa0026a9839c 100644
--- a/drivers/tty/vt/keyboard.c
+++ b/drivers/tty/vt/keyboard.c
@@ -311,7 +311,7 @@ int kbd_rate(struct kbd_repeat *rpt)
static void put_queue(struct vc_data *vc, int ch)
{
tty_insert_flip_char(&vc->port, ch, 0);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void puts_queue(struct vc_data *vc, char *cp)
@@ -320,7 +320,7 @@ static void puts_queue(struct vc_data *vc, char *cp)
tty_insert_flip_char(&vc->port, *cp, 0);
cp++;
}
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void applkey(struct vc_data *vc, int key, char mode)
@@ -565,7 +565,7 @@ static void fn_inc_console(struct vc_data *vc)
static void fn_send_intr(struct vc_data *vc)
{
tty_insert_flip_char(&vc->port, 0, TTY_BREAK);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void fn_scroll_forw(struct vc_data *vc)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 0a6336d54a65..30fc2a60c352 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1834,7 +1834,7 @@ static void csi_m(struct vc_data *vc)
static void respond_string(const char *p, size_t len, struct tty_port *port)
{
tty_insert_flip_string(port, p, len);
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
}
static void cursor_report(struct vc_data *vc, struct tty_struct *tty)
--
2.20.1
1
13
Backport 5.10.120 LTS patches from upstream.
git cherry-pick v5.10.119..v5.10.120~1 -s
Already merged(-8):
ea62d169b6e7 netfilter: nf_tables: disallow non-stateful expression in sets
earlier
57d01bcae704 io_uring: don't re-import iovecs from callbacks
8adb751d294e io_uring: fix using under-expanded iters
72464fd2b4b7 xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
a9e7f19a5577 xfs: fix an ABBA deadlock in xfs_renam
2728d95c6c95 xfs: Fix CIL throttle hang when CIL space used going backwards
c0aff1faf66b netfilter: nf_tables: sanitize nft_set_desc_concat_parse()
3d8fc6e28f32 KVM: x86: avoid calling x86 emulator without a decoded instruction
Skiped(-1):
45d97f70da4d xfs: show the proper user quota options
Context conflict:
630192aa4523 lib/crypto: add prompts back to crypto libraries
8df42bcd364c dm verity: set DM_TARGET_IMMUTABLE feature flag
KABI fixed(+1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Total patches: 52 - 8 - 1 + 1= 44
Akira Yokosawa (1):
docs: submitting-patches: Fix crossref to 'The canonical patch format'
Al Viro (1):
percpu_ref_init(): clean ->percpu_count_ref on failure
Alex Elder (1):
net: ipa: compute proper aggregation limit
Chuck Lever (1):
NFSD: Fix possible sleep during nfsd4_release_lockowner()
Dan Carpenter (1):
dm integrity: fix error code in dm_integrity_ctr()
Darrick J. Wong (1):
xfs: detect overflows in bmbt records
David Howells (1):
pipe: Fix missing lock in pipe_resize_ring()
Fabio Estevam (1):
crypto: caam - fix i.MX6SX entropy delay value
Florian Westphal (1):
netfilter: conntrack: re-fetch conntrack after insertion
Gustavo A. R. Silva (1):
drm/i915: Fix -Wstringop-overflow warning in call to
intel_read_wm_latency()
IotaHydrae (1):
pinctrl: sunxi: fix f1c100s uart2 function
Joel Stanley (1):
net: ftgmac100: Disable hardware checksum on AST2600
Jonathan Bakker (1):
ARM: dts: s5pv210: Correct interrupt name for bluetooth in Aries
Justin M. Forbes (1):
lib/crypto: add prompts back to crypto libraries
Kuniyuki Iwashima (1):
pipe: make poll_usage boolean and annotate its access
Lin Ma (1):
nfc: pn533: Fix buggy cleanup order
Liu Jian (1):
bpf: Enlarge offset check value to INT_MAX in
bpf_skb_{load,store}_bytes
Marek Maślanka (1):
HID: multitouch: Add support for Google Whiskers Touchpad
Mariusz Tkaczyk (1):
raid5: introduce MD_BROKEN
Mika Westerberg (1):
i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging
Mikulas Patocka (2):
dm crypt: make printing of the key constant-time
dm stats: add cond_resched when looping over entries
Miri Korenblit (1):
cfg80211: set custom regdomain after wiphy registration
Nicolai Stange (4):
crypto: drbg - prepare for more fine-grained tracking of seeding state
crypto: drbg - track whether DRBG was seeded with
!rng_is_initialized()
crypto: drbg - move dynamic ->reseed_threshold adjustments to
__drbg_seed()
crypto: drbg - make reseeding from get_random_bytes() synchronous
Paolo Bonzini (1):
x86, kvm: use correct GFP flags for preemption disabled
Piyush Malgujar (1):
drivers: i2c: thunderx: Allow driver to work with ACPI defined TWSI
controllers
Sarthak Kukreti (1):
dm verity: set DM_TARGET_IMMUTABLE feature flag
Sean Christopherson (1):
x86/kvm: Alloc dummy async #PF token outside of raw spinlock
Stefan Mahnke-Hartmann (1):
tpm: Fix buffer access in tpm2_get_tpm_pt()
Stephen Brennan (1):
assoc_array: Fix BUG_ON during garbage collect
Steven Rostedt (1):
Bluetooth: hci_qca: Use del_timer_sync() before freeing
Sultan Alsawaf (1):
zsmalloc: fix races between asynchronous zspage free and page
migration
Tadeusz Struk (1):
exfat: check if cluster num is valid
Tao Jin (1):
HID: multitouch: add quirks to enable Lenovo X12 trackpoint
Thomas Bartschies (1):
net: af_key: check encryption module availability consistency
Trond Myklebust (1):
NFS: Memory allocation failures are not server fatal errors
Vitaly Chikunov (1):
crypto: ecrdsa - Fix incorrect use of vli_cmp
Xiaomeng Tong (1):
KVM: PPC: Book3S HV: fix incorrect NULL check on list iterator
Xiu Jianfeng (1):
tpm: ibmvtpm: Correct the return value in tpm_ibmvtpm_probe()
Yuntao Wang (1):
bpf: Fix potential array overflow in bpf_trampoline_get_progs()
Zheng Zengkai (1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Documentation/process/submitting-patches.rst | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 2 +-
arch/powerpc/kvm/book3s_hv_uvmem.c | 8 +-
arch/x86/kernel/kvm.c | 41 ++++---
crypto/Kconfig | 2 -
crypto/drbg.c | 110 +++++++-----------
crypto/ecrdsa.c | 8 +-
drivers/bluetooth/hci_qca.c | 4 +-
drivers/char/random.c | 2 -
drivers/char/tpm/tpm2-cmd.c | 11 +-
drivers/char/tpm/tpm_ibmvtpm.c | 1 +
drivers/crypto/caam/ctrl.c | 18 +++
drivers/gpu/drm/i915/intel_pm.c | 2 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 9 ++
drivers/i2c/busses/i2c-ismt.c | 14 +++
drivers/i2c/busses/i2c-thunderx-pcidrv.c | 1 +
drivers/md/dm-crypt.c | 14 ++-
drivers/md/dm-integrity.c | 2 -
drivers/md/dm-stats.c | 8 ++
drivers/md/dm-verity-target.c | 1 +
drivers/md/raid5.c | 47 ++++----
drivers/net/ethernet/faraday/ftgmac100.c | 5 +
drivers/net/ipa/ipa_endpoint.c | 4 +-
drivers/nfc/pn533/pn533.c | 5 +-
drivers/pinctrl/sunxi/pinctrl-suniv-f1c100s.c | 2 +-
fs/exfat/balloc.c | 8 +-
fs/exfat/exfat_fs.h | 8 ++
fs/exfat/fatent.c | 8 --
fs/nfs/internal.h | 1 +
fs/nfsd/nfs4state.c | 12 +-
fs/pipe.c | 33 +++---
fs/xfs/libxfs/xfs_bmap.c | 5 +
include/crypto/drbg.h | 10 +-
include/linux/pipe_fs_i.h | 2 +-
include/net/netfilter/nf_conntrack_core.h | 7 +-
kernel/bpf/trampoline.c | 18 ++-
lib/Kconfig | 2 +
lib/assoc_array.c | 8 ++
lib/crypto/Kconfig | 17 ++-
lib/percpu-refcount.c | 1 +
mm/zsmalloc.c | 37 +++++-
net/core/filter.c | 4 +-
net/key/af_key.c | 6 +-
net/wireless/core.c | 8 +-
net/wireless/reg.c | 1 +
46 files changed, 328 insertions(+), 192 deletions(-)
--
2.20.1
1
44

06 Sep '22
From: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
stable inclusion
from stable-v5.10.114
commit 549209caabc89f2877ad5f62d11fca5c052e0e8f
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5O6A9
CVE: CVE-2022-2991
---------------------------
In commit 9ea9b9c48387 ("remove the lightnvm subsystem") the lightnvm
subsystem was removed as there is no hardware in the wild for it, and
the code is known to have problems. This should also be disabled for
older LTS kernels as well to prevent anyone from accidentally using it.
Cc: Christoph Hellwig <hch(a)lst.de>
Cc: Matias Bjørling <mb(a)lightnvm.io>
Cc: Javier González <javier(a)javigon.com>
Cc: Jens Axboe <axboe(a)kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Guo Mengqi <guomengqi3(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/lightnvm/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/lightnvm/Kconfig b/drivers/lightnvm/Kconfig
index 439bf90d084d..1db33cb28859 100644
--- a/drivers/lightnvm/Kconfig
+++ b/drivers/lightnvm/Kconfig
@@ -4,7 +4,7 @@
menuconfig NVM
bool "Open-Channel SSD target support"
- depends on BLOCK && PCI
+ depends on BLOCK && PCI && BROKEN
select BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/6] configfs: return -ENAMETOOLONG earlier in configfs_lookup
by Yongqiang Liu 06 Sep '22
by Yongqiang Liu 06 Sep '22
06 Sep '22
From: Christoph Hellwig <hch(a)lst.de>
mainline inclusion
from mainline-v5.15-rc1
commit 417b962ddeca2b70eb72d28c87541bdad4e234f8
category: bugfix
bugzilla: 187567, https://gitee.com/openeuler/kernel/issues/I5PK1G
CVE: NA
--------------------------------
Just like most other file systems: get the simple checks out of the
way first.
Signed-off-by: Christoph Hellwig <hch(a)lst.de>
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/configfs/dir.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
index 9b43611e1bb3..ff298a9baa0a 100644
--- a/fs/configfs/dir.c
+++ b/fs/configfs/dir.c
@@ -483,6 +483,9 @@ static struct dentry * configfs_lookup(struct inode *dir,
int found = 0;
int err;
+ if (dentry->d_name.len > NAME_MAX)
+ return ERR_PTR(-ENAMETOOLONG);
+
/*
* Fake invisibility if dir belongs to a group/default groups hierarchy
* being attached
@@ -513,8 +516,6 @@ static struct dentry * configfs_lookup(struct inode *dir,
* If it doesn't exist and it isn't a NOT_PINNED item,
* it must be negative.
*/
- if (dentry->d_name.len > NAME_MAX)
- return ERR_PTR(-ENAMETOOLONG);
d_add(dentry, NULL);
return NULL;
}
--
2.25.1
1
5

[PATCH openEuler-5.10-LTS 01/12] tty: drivers/tty/, stop using tty_schedule_flip()
by Zheng Zengkai 06 Sep '22
by Zheng Zengkai 06 Sep '22
06 Sep '22
From: Jiri Slaby <jslaby(a)suse.cz>
stable inclusion
from stable-v5.10.134
commit 6a81848252869d929354a879e08807c932444929
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5Y1
CVE: CVE-2022-1462
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 5f6a85158ccacc3f09744b3aafe8b11ab3b6c6f6 upstream.
Since commit a9c3f68f3cd8d (tty: Fix low_latency BUG) in 2014,
tty_flip_buffer_push() is only a wrapper to tty_schedule_flip(). We are
going to remove the latter (as it is used less), so call the former in
drivers/tty/.
Cc: Vladimir Zapolskiy <vz(a)mleia.com>
Reviewed-by: Johan Hovold <johan(a)kernel.org>
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Link: https://lore.kernel.org/r/20211122111648.30379-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yi Yang <yiyang13(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/tty/cyclades.c | 6 +++---
drivers/tty/goldfish.c | 2 +-
drivers/tty/moxa.c | 4 ++--
drivers/tty/serial/lpc32xx_hs.c | 2 +-
drivers/tty/vt/keyboard.c | 6 +++---
drivers/tty/vt/vt.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 097266342e5e..4bcaab250676 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -556,7 +556,7 @@ static void cyy_chip_rx(struct cyclades_card *cinfo, int chip,
}
info->idle_stats.recv_idle = jiffies;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
/* end of service */
cyy_writeb(info, CyRIR, save_xir & 0x3f);
@@ -996,7 +996,7 @@ static void cyz_handle_rx(struct cyclades_port *info)
mod_timer(&info->rx_full_timer, jiffies + 1);
#endif
info->idle_stats.recv_idle = jiffies;
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
/* Update rx_get */
cy_writel(&buf_ctrl->rx_get, new_rx_get);
@@ -1172,7 +1172,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)
if (delta_count)
wake_up_interruptible(&info->port.delta_msr_wait);
if (special_count)
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
}
}
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index c8c5cdfc5e19..ed0f3a7b8fe5 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -151,7 +151,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
address = (unsigned long)(void *)buf;
goldfish_tty_rw(qtty, address, count, 0);
- tty_schedule_flip(&qtty->port);
+ tty_flip_buffer_push(&qtty->port);
return IRQ_HANDLED;
}
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index f9f14104bd2c..d6528f3bb9b9 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -1385,7 +1385,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (inited && !tty_throttled(tty) &&
MoxaPortRxQueue(p) > 0) { /* RX */
MoxaPortReadData(p);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
} else {
clear_bit(EMPTYWAIT, &p->statusflags);
@@ -1410,7 +1410,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (tty && (intr & IntrBreak) && !I_IGNBRK(tty)) { /* BREAK */
tty_insert_flip_char(&p->port, 0, TTY_BREAK);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
if (intr & IntrLine)
diff --git a/drivers/tty/serial/lpc32xx_hs.c b/drivers/tty/serial/lpc32xx_hs.c
index b5898c932036..a9802308ff60 100644
--- a/drivers/tty/serial/lpc32xx_hs.c
+++ b/drivers/tty/serial/lpc32xx_hs.c
@@ -344,7 +344,7 @@ static irqreturn_t serial_lpc32xx_interrupt(int irq, void *dev_id)
LPC32XX_HSUART_IIR(port->membase));
port->icount.overrun++;
tty_insert_flip_char(tport, 0, TTY_OVERRUN);
- tty_schedule_flip(tport);
+ tty_flip_buffer_push(tport);
}
/* Data received? */
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index 78acc270e39a..aa0026a9839c 100644
--- a/drivers/tty/vt/keyboard.c
+++ b/drivers/tty/vt/keyboard.c
@@ -311,7 +311,7 @@ int kbd_rate(struct kbd_repeat *rpt)
static void put_queue(struct vc_data *vc, int ch)
{
tty_insert_flip_char(&vc->port, ch, 0);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void puts_queue(struct vc_data *vc, char *cp)
@@ -320,7 +320,7 @@ static void puts_queue(struct vc_data *vc, char *cp)
tty_insert_flip_char(&vc->port, *cp, 0);
cp++;
}
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void applkey(struct vc_data *vc, int key, char mode)
@@ -565,7 +565,7 @@ static void fn_inc_console(struct vc_data *vc)
static void fn_send_intr(struct vc_data *vc)
{
tty_insert_flip_char(&vc->port, 0, TTY_BREAK);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void fn_scroll_forw(struct vc_data *vc)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 0a6336d54a65..30fc2a60c352 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1834,7 +1834,7 @@ static void csi_m(struct vc_data *vc)
static void respond_string(const char *p, size_t len, struct tty_port *port)
{
tty_insert_flip_string(port, p, len);
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
}
static void cursor_report(struct vc_data *vc, struct tty_struct *tty)
--
2.20.1
1
11
Backport 5.10.120 LTS patches from upstream.
git cherry-pick v5.10.119..v5.10.120~1 -s
Already merged(-8):
ea62d169b6e7 netfilter: nf_tables: disallow non-stateful expression in sets
earlier
57d01bcae704 io_uring: don't re-import iovecs from callbacks
8adb751d294e io_uring: fix using under-expanded iters
72464fd2b4b7 xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
a9e7f19a5577 xfs: fix an ABBA deadlock in xfs_renam
2728d95c6c95 xfs: Fix CIL throttle hang when CIL space used going backwards
c0aff1faf66b netfilter: nf_tables: sanitize nft_set_desc_concat_parse()
3d8fc6e28f32 KVM: x86: avoid calling x86 emulator without a decoded instruction
Skiped(-1):
45d97f70da4d xfs: show the proper user quota options
Context conflict:
630192aa4523 lib/crypto: add prompts back to crypto libraries
8df42bcd364c dm verity: set DM_TARGET_IMMUTABLE feature flag
KABI fixed(+1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Total patches: 52 - 8 - 1 + 1= 44
Akira Yokosawa (1):
docs: submitting-patches: Fix crossref to 'The canonical patch format'
Al Viro (1):
percpu_ref_init(): clean ->percpu_count_ref on failure
Alex Elder (1):
net: ipa: compute proper aggregation limit
Chuck Lever (1):
NFSD: Fix possible sleep during nfsd4_release_lockowner()
Dan Carpenter (1):
dm integrity: fix error code in dm_integrity_ctr()
Darrick J. Wong (1):
xfs: detect overflows in bmbt records
David Howells (1):
pipe: Fix missing lock in pipe_resize_ring()
Fabio Estevam (1):
crypto: caam - fix i.MX6SX entropy delay value
Florian Westphal (1):
netfilter: conntrack: re-fetch conntrack after insertion
Gustavo A. R. Silva (1):
drm/i915: Fix -Wstringop-overflow warning in call to
intel_read_wm_latency()
IotaHydrae (1):
pinctrl: sunxi: fix f1c100s uart2 function
Joel Stanley (1):
net: ftgmac100: Disable hardware checksum on AST2600
Jonathan Bakker (1):
ARM: dts: s5pv210: Correct interrupt name for bluetooth in Aries
Justin M. Forbes (1):
lib/crypto: add prompts back to crypto libraries
Kuniyuki Iwashima (1):
pipe: make poll_usage boolean and annotate its access
Lin Ma (1):
nfc: pn533: Fix buggy cleanup order
Liu Jian (1):
bpf: Enlarge offset check value to INT_MAX in
bpf_skb_{load,store}_bytes
Marek Maślanka (1):
HID: multitouch: Add support for Google Whiskers Touchpad
Mariusz Tkaczyk (1):
raid5: introduce MD_BROKEN
Mika Westerberg (1):
i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging
Mikulas Patocka (2):
dm crypt: make printing of the key constant-time
dm stats: add cond_resched when looping over entries
Miri Korenblit (1):
cfg80211: set custom regdomain after wiphy registration
Nicolai Stange (4):
crypto: drbg - prepare for more fine-grained tracking of seeding state
crypto: drbg - track whether DRBG was seeded with
!rng_is_initialized()
crypto: drbg - move dynamic ->reseed_threshold adjustments to
__drbg_seed()
crypto: drbg - make reseeding from get_random_bytes() synchronous
Paolo Bonzini (1):
x86, kvm: use correct GFP flags for preemption disabled
Piyush Malgujar (1):
drivers: i2c: thunderx: Allow driver to work with ACPI defined TWSI
controllers
Sarthak Kukreti (1):
dm verity: set DM_TARGET_IMMUTABLE feature flag
Sean Christopherson (1):
x86/kvm: Alloc dummy async #PF token outside of raw spinlock
Stefan Mahnke-Hartmann (1):
tpm: Fix buffer access in tpm2_get_tpm_pt()
Stephen Brennan (1):
assoc_array: Fix BUG_ON during garbage collect
Steven Rostedt (1):
Bluetooth: hci_qca: Use del_timer_sync() before freeing
Sultan Alsawaf (1):
zsmalloc: fix races between asynchronous zspage free and page
migration
Tadeusz Struk (1):
exfat: check if cluster num is valid
Tao Jin (1):
HID: multitouch: add quirks to enable Lenovo X12 trackpoint
Thomas Bartschies (1):
net: af_key: check encryption module availability consistency
Trond Myklebust (1):
NFS: Memory allocation failures are not server fatal errors
Vitaly Chikunov (1):
crypto: ecrdsa - Fix incorrect use of vli_cmp
Xiaomeng Tong (1):
KVM: PPC: Book3S HV: fix incorrect NULL check on list iterator
Xiu Jianfeng (1):
tpm: ibmvtpm: Correct the return value in tpm_ibmvtpm_probe()
Yuntao Wang (1):
bpf: Fix potential array overflow in bpf_trampoline_get_progs()
Zheng Zengkai (1):
pipe: fix kabi for poll_usage in struct pipe_inode_info
Documentation/process/submitting-patches.rst | 2 +-
arch/arm/boot/dts/s5pv210-aries.dtsi | 2 +-
arch/powerpc/kvm/book3s_hv_uvmem.c | 8 +-
arch/x86/kernel/kvm.c | 41 ++++---
crypto/Kconfig | 2 -
crypto/drbg.c | 110 +++++++-----------
crypto/ecrdsa.c | 8 +-
drivers/bluetooth/hci_qca.c | 4 +-
drivers/char/random.c | 2 -
drivers/char/tpm/tpm2-cmd.c | 11 +-
drivers/char/tpm/tpm_ibmvtpm.c | 1 +
drivers/crypto/caam/ctrl.c | 18 +++
drivers/gpu/drm/i915/intel_pm.c | 2 +-
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 9 ++
drivers/i2c/busses/i2c-ismt.c | 14 +++
drivers/i2c/busses/i2c-thunderx-pcidrv.c | 1 +
drivers/md/dm-crypt.c | 14 ++-
drivers/md/dm-integrity.c | 2 -
drivers/md/dm-stats.c | 8 ++
drivers/md/dm-verity-target.c | 1 +
drivers/md/raid5.c | 47 ++++----
drivers/net/ethernet/faraday/ftgmac100.c | 5 +
drivers/net/ipa/ipa_endpoint.c | 4 +-
drivers/nfc/pn533/pn533.c | 5 +-
drivers/pinctrl/sunxi/pinctrl-suniv-f1c100s.c | 2 +-
fs/exfat/balloc.c | 8 +-
fs/exfat/exfat_fs.h | 8 ++
fs/exfat/fatent.c | 8 --
fs/nfs/internal.h | 1 +
fs/nfsd/nfs4state.c | 12 +-
fs/pipe.c | 33 +++---
fs/xfs/libxfs/xfs_bmap.c | 5 +
include/crypto/drbg.h | 10 +-
include/linux/pipe_fs_i.h | 2 +-
include/net/netfilter/nf_conntrack_core.h | 7 +-
kernel/bpf/trampoline.c | 18 ++-
lib/Kconfig | 2 +
lib/assoc_array.c | 8 ++
lib/crypto/Kconfig | 17 ++-
lib/percpu-refcount.c | 1 +
mm/zsmalloc.c | 37 +++++-
net/core/filter.c | 4 +-
net/key/af_key.c | 6 +-
net/wireless/core.c | 8 +-
net/wireless/reg.c | 1 +
46 files changed, 328 insertions(+), 192 deletions(-)
--
2.20.1
1
44

[PATCH openEuler-1.0-LTS 1/3] af_key: Do not call xfrm_probe_algs in parallel
by Yongqiang Liu 05 Sep '22
by Yongqiang Liu 05 Sep '22
05 Sep '22
From: Herbert Xu <herbert(a)gondor.apana.org.au>
mainline inclusion
from mainline-v6.0-rc3
commit ba953a9d89a00c078b85f4b190bc1dde66fe16b5
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5OPA4
CVE: CVE-2022-3028
--------------------------------
When namespace support was added to xfrm/afkey, it caused the
previously single-threaded call to xfrm_probe_algs to become
multi-threaded. This is buggy and needs to be fixed with a mutex.
Reported-by: Abhishek Shah <abhishek.shah(a)columbia.edu>
Fixes: 283bc9f35bbb ("xfrm: Namespacify xfrm state/policy locks")
Signed-off-by: Herbert Xu <herbert(a)gondor.apana.org.au>
Signed-off-by: Steffen Klassert <steffen.klassert(a)secunet.com>
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/key/af_key.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 0107cc10c4a2..23470b0d84aa 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1707,9 +1707,12 @@ static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sad
pfk->registered |= (1<<hdr->sadb_msg_satype);
}
+ mutex_lock(&pfkey_mutex);
xfrm_probe_algs();
supp_skb = compose_sadb_supported(hdr, GFP_KERNEL | __GFP_ZERO);
+ mutex_unlock(&pfkey_mutex);
+
if (!supp_skb) {
if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC)
pfk->registered &= ~(1<<hdr->sadb_msg_satype);
--
2.25.1
1
2

[PATCH openEuler-5.10 01/10] Revert "NFS: Use of mapping_set_error() results in spurious errors"
by Zheng Zengkai 01 Sep '22
by Zheng Zengkai 01 Sep '22
01 Sep '22
From: Luo Meng <luomeng12(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5KK4D
CVE: NA
--------------------------------
This reverts commit f4f117026d586db38c025cd95b6094ff8de326df.
7f3945b4aab5 (NFS: Use of mapping_set_error() results in spurious errors)
delete mappint->flags because of 67dd23f9e6fb (nfs: ensure correct writeback
errors are returned on close()). However 67dd23f9e6fb has been reverted, use
mappint->flags to return error.
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Zhang Xiaoxu <zhangxiaoxu5(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/nfs/write.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 5d07799513a6..e8f6ce88b1fb 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -310,10 +310,7 @@ static void nfs_mapping_set_error(struct page *page, int error)
struct address_space *mapping = page_file_mapping(page);
SetPageError(page);
- filemap_set_wb_err(mapping, error);
- if (mapping->host)
- errseq_set(&mapping->host->i_sb->s_wb_err,
- error == -ENOSPC ? -ENOSPC : -EIO);
+ mapping_set_error(mapping, error);
nfs_set_pageerror(mapping);
}
--
2.20.1
1
9
您好!
Kernel SIG 邀请您参加 2022-09-02 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.AMD EPYC Gen4 Genoa平台openEuler-22.09支持简介
2.申威openEuler-22.09内核特性介绍
会议链接:https://us06web.zoom.us/j/85985675927?pwd=ZXl4K3hzZWRpTUIvUWR6RkJJalpPdz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-09-02 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.AMD EPYC Gen4 Genoa平台openEuler-22.09支持简介
2.申威openEuler-22.09内核特性介绍
You can join the meeting at https://us06web.zoom.us/j/85985675927?pwd=ZXl4K3hzZWRpTUIvUWR6RkJJalpPdz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS 1/3] net: usb: ax88179_178a: fix packet alignment padding
by Yongqiang Liu 01 Sep '22
by Yongqiang Liu 01 Sep '22
01 Sep '22
From: Jeremy Kerr <jk(a)ozlabs.org>
stable inclusion
from stable-v4.19.131
commit c191f7cf369c0090fdbeff0b6782d5eaa3a179d2
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5NYS6
CVE: CVE-2022-2964
---------------------------
[ Upstream commit e869e7a17798d85829fa7d4f9bbe1eebd4b2d3f6 ]
Using a AX88179 device (0b95:1790), I see two bytes of appended data on
every RX packet. For example, this 48-byte ping, using 0xff as a
payload byte:
04:20:22.528472 IP 192.168.1.1 > 192.168.1.2: ICMP echo request, id 2447, seq 1, length 64
0x0000: 000a cd35 ea50 000a cd35 ea4f 0800 4500
0x0010: 0054 c116 4000 4001 f63e c0a8 0101 c0a8
0x0020: 0102 0800 b633 098f 0001 87ea cd5e 0000
0x0030: 0000 dcf2 0600 0000 0000 ffff ffff ffff
0x0040: ffff ffff ffff ffff ffff ffff ffff ffff
0x0050: ffff ffff ffff ffff ffff ffff ffff ffff
0x0060: ffff 961f
Those last two bytes - 96 1f - aren't part of the original packet.
In the ax88179 RX path, the usbnet rx_fixup function trims a 2-byte
'alignment pseudo header' from the start of the packet, and sets the
length from a per-packet field populated by hardware. It looks like that
length field *includes* the 2-byte header; the current driver assumes
that it's excluded.
This change trims the 2-byte alignment header after we've set the packet
length, so the resulting packet length is correct. While we're moving
the comment around, this also fixes the spelling of 'pseudo'.
Signed-off-by: Jeremy Kerr <jk(a)ozlabs.org>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
(cherry picked from commit c191f7cf369c0090fdbeff0b6782d5eaa3a179d2)
Signed-off-by: Liu Jian <liujian56(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/usb/ax88179_178a.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
index 2207f7a7d1ff..8455f72007b9 100644
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
@@ -1400,10 +1400,10 @@ static int ax88179_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
}
if (pkt_cnt == 0) {
- /* Skip IP alignment psudo header */
- skb_pull(skb, 2);
skb->len = pkt_len;
- skb_set_tail_pointer(skb, pkt_len);
+ /* Skip IP alignment pseudo header */
+ skb_pull(skb, 2);
+ skb_set_tail_pointer(skb, skb->len);
skb->truesize = pkt_len + sizeof(struct sk_buff);
ax88179_rx_checksum(skb, pkt_hdr);
return 1;
@@ -1412,8 +1412,9 @@ static int ax88179_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
ax_skb = skb_clone(skb, GFP_ATOMIC);
if (ax_skb) {
ax_skb->len = pkt_len;
- ax_skb->data = skb->data + 2;
- skb_set_tail_pointer(ax_skb, pkt_len);
+ /* Skip IP alignment pseudo header */
+ skb_pull(ax_skb, 2);
+ skb_set_tail_pointer(ax_skb, ax_skb->len);
ax_skb->truesize = pkt_len + sizeof(struct sk_buff);
ax88179_rx_checksum(ax_skb, pkt_hdr);
usbnet_skb_return(dev, ax_skb);
--
2.25.1
1
7

31 Aug '22
BMC is an in-kernel key-value cache implemented in BPF and proposed by
paper [1]. The paper discussed BMC for memcached, obtaining at least
6x performance speedup.
This patch implements a sample BMC for Redis. Paper [1] implements BMC
in XDP, bypassing the kernel network stack totally. Since Redis is based
on TCP protocol, and it's almost impossible to fully process TCP traffic
in XDP, so this patch implements BMC in sockmap, which locates at the
top of kernel network stack. Since kernel network stack is not bypassed,
the speedup is not significant. Any way, this is only a sample
implementation, and performance improvements can be continuously
optimized.
See [2] for details on how to build samples/bpf.
Output files:
samples/bpf/bmctool
samples/bpf/bmc/bpf.o
Sample usage:
bmctool prog load -p 6379 ./bmc/bpf.o # load bmc bpf prog and attach it
# to sockets with listen port 6379
bmctool stat # dump bmc status
bmctool prog unload # detach and unload bmc prog
[1] https://www.usenix.org/conference/nsdi21/presentation/ghigoff
[2] https://www.kernel.org/doc/readme/samples-bpf-README.rst
Xu Kuohai (3):
bpf: Add helper bpf_tcp_udpate_seq to synchronize tcp seq/ack
bpf: Add xdp load and store helpers
samples: bpf: Add sample BMC for Redis
include/uapi/linux/bpf.h | 27 ++
net/core/filter.c | 98 +++++
samples/bpf/Makefile | 3 +
samples/bpf/bmc/bpf.c | 485 +++++++++++++++++++++
samples/bpf/bmc/common.h | 21 +
samples/bpf/bmc/tool.c | 763 +++++++++++++++++++++++++++++++++
tools/include/uapi/linux/bpf.h | 27 ++
7 files changed, 1424 insertions(+)
create mode 100644 samples/bpf/bmc/bpf.c
create mode 100644 samples/bpf/bmc/common.h
create mode 100644 samples/bpf/bmc/tool.c
--
2.20.1
1
3

[BUG] [openEuler-1.0-LTS] "CPU features: enabling workaround for Mismatched cache type"
by Zenghui Yu 30 Aug '22
by Zenghui Yu 30 Aug '22
30 Aug '22
I've seen the following kernel log when booting openEuler-1.0-LTS
on my kunpeng-920:
"CPU features: enabling workaround for Mismatched cache type"
whilst all the CPUs in the system actually expose the *same* CTR_EL0
values, i.e., 0x0000000084448004. The following piece of code looks
quite broken because ...
|static bool
|has_mismatched_cache_type(const struct arm64_cpu_capabilities *entry,
| int scope)
|{
| u64 mask = arm64_ftr_reg_ctrel0.strict_mask;
|
| /* Skip matching the min line sizes for cache type check */
| if (entry->capability == ARM64_MISMATCHED_CACHE_TYPE)
| mask ^= arm64_ftr_reg_ctrel0.strict_mask;
... 'mask' is always set to 0 during the detection of "Mismatched cache
type" but we actually want to check the whole *strict_mask*.
If I understand it correctly, backporting upstream commit 880f7cc47265
("arm64: cpu_errata: Remove ARM64_MISMATCHED_CACHE_LINE_SIZE") is the
right thing to do here. But please have a look.
Zenghui
1
0

[PATCH openEuler-5.10-LTS 1/7] Revert "NFS: Use of mapping_set_error() results in spurious errors"
by Zheng Zengkai 30 Aug '22
by Zheng Zengkai 30 Aug '22
30 Aug '22
From: Luo Meng <luomeng12(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5KK4D
CVE: NA
--------------------------------
This reverts commit f4f117026d586db38c025cd95b6094ff8de326df.
7f3945b4aab5 (NFS: Use of mapping_set_error() results in spurious errors)
delete mappint->flags because of 67dd23f9e6fb (nfs: ensure correct writeback
errors are returned on close()). However 67dd23f9e6fb has been reverted, use
mappint->flags to return error.
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Zhang Xiaoxu <zhangxiaoxu5(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/nfs/write.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 5d07799513a6..e8f6ce88b1fb 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -310,10 +310,7 @@ static void nfs_mapping_set_error(struct page *page, int error)
struct address_space *mapping = page_file_mapping(page);
SetPageError(page);
- filemap_set_wb_err(mapping, error);
- if (mapping->host)
- errseq_set(&mapping->host->i_sb->s_wb_err,
- error == -ENOSPC ? -ENOSPC : -EIO);
+ mapping_set_error(mapping, error);
nfs_set_pageerror(mapping);
}
--
2.20.1
1
6
Backport 5.10.119 LTS patches from upstream.
git cherry-pick v5.10.118..v5.10.119~1 -s
Already merged(-4):
a8f4d63142f9 lockdown: also lock down previous kgdb use
9b4aa0d80b18 KVM: x86/mmu: fix NULL pointer dereference on guest INVPCID
33f1b4a27abc tcp: change source port randomizarion at connect() time
a5c68f457fbf secure_seq: use the 64 bits of the siphash for port offset
calculation
Context conflict:
07918ddba3ab lib/crypto: sha1: re-roll loops to reduce code size
685200b076ff random: use BLAKE2s instead of SHA1 in extraction
7d9eab78bed9 init: call time_init() before rand_initialize()
Temporarily Reverted(+1):
Revert "alinux: random: speed up the initialization of module"
KABI changed(2):
5064550d422dc random: clear fast pool, crng, and batches in cpuhp bring up
07280d2c3f33d random: make more consistent use of integer types
KABI fixes(+2):
random: Fix kabi change due to enum cpuhp_state
random: Fix kabi change of get_random_bytes()
Total patches: 163 - 4 + 1 + 2 = 162
Andy Shevchenko (1):
ACPI: sysfs: Make sparse happy about address space in use
Ard Biesheuvel (1):
random: avoid arch_get_random_seed_long() when collecting IRQ
randomness
Denis Efremov (Oracle) (1):
staging: rtl8723bs: prevent ->Ssid overflow in rtw_wx_set_scan()
Dominik Brodowski (7):
random: harmonize "crng init done" messages
random: early initialization of ChaCha constants
random: continually use hwgenerator randomness
random: access primary_pool directly rather than through pointer
random: only call crng_finalize_init() for primary_crng
random: fix locking in crng_fast_load()
random: fix locking for crng_init in crng_reseed()
Edward Matijevic (1):
ALSA: ctxfi: Add SB046x PCI ID
Eric Biggers (11):
random: remove dead code left over from blocking pool
crypto: blake2s - define shash_alg structs using macros
crypto: x86/blake2s - define shash_alg structs using macros
crypto: blake2s - remove unneeded includes
crypto: blake2s - move update and final logic to internal/blake2s.h
crypto: blake2s - share the "shash" API boilerplate code
crypto: blake2s - optimize blake2s initialization
crypto: blake2s - add comment for blake2s_state fields
crypto: blake2s - adjust include guard naming
crypto: blake2s - include <linux/bug.h> instead of <asm/bug.h>
random: remove use_input_pool parameter from crng_reseed()
Hans Verkuil (1):
media: vim2m: initialize the media device earlier
Herbert Xu (1):
crypto: lib/blake2s - Move selftest prototype into header file
Jan Varho (1):
random: do not split fast init input in add_hwgenerator_randomness()
Jann Horn (2):
random: don't reset crng_init_cnt on urandom_read()
random: check for signal_pending() outside of need_resched() check
Jason A. Donenfeld (123):
MAINTAINERS: co-maintain random.c
MAINTAINERS: add git tree for random.c
lib/crypto: blake2s: include as built-in
lib/crypto: blake2s: move hmac construction into wireguard
lib/crypto: sha1: re-roll loops to reduce code size
lib/crypto: blake2s: avoid indirect calls to compression function for
Clang CFI
random: use BLAKE2s instead of SHA1 in extraction
random: do not sign extend bytes for rotation when mixing
random: do not re-init if crng_reseed completes before primary init
random: mix bootloader randomness into pool
random: use IS_ENABLED(CONFIG_NUMA) instead of ifdefs
random: avoid superfluous call to RDRAND in CRNG extraction
random: cleanup poolinfo abstraction
random: cleanup integer types
random: remove incomplete last_data logic
random: remove unused extract_entropy() reserved argument
random: rather than entropy_store abstraction, use global
random: remove unused OUTPUT_POOL constants
random: de-duplicate INPUT_POOL constants
random: prepend remaining pool constants with POOL_
random: cleanup fractional entropy shift constants
random: access input_pool_data directly rather than through pointer
random: selectively clang-format where it makes sense
random: simplify arithmetic function flow in account()
random: use computational hash for entropy extraction
random: simplify entropy debiting
random: use linear min-entropy accumulation crediting
random: always wake up entropy writers after extraction
random: make credit_entropy_bits() always safe
random: remove batched entropy locking
random: use RDSEED instead of RDRAND in entropy extraction
random: get rid of secondary crngs
random: inline leaves of rand_initialize()
random: ensure early RDSEED goes through mixer on init
random: do not xor RDRAND when writing into /dev/random
random: absorb fast pool into input pool after fast load
random: use simpler fast key erasure flow on per-cpu keys
random: use hash function for crng_slow_load()
random: make more consistent use of integer types
random: remove outdated INT_MAX >> 6 check in urandom_read()
random: zero buffer after reading entropy from userspace
random: tie batched entropy generation to base_crng generation
random: remove ifdef'd out interrupt bench
random: remove unused tracepoints
random: add proper SPDX header
random: deobfuscate irq u32/u64 contributions
random: introduce drain_entropy() helper to declutter crng_reseed()
random: remove useless header comment
random: remove whitespace and reorder includes
random: group initialization wait functions
random: group crng functions
random: group entropy extraction functions
random: group entropy collection functions
random: group userspace read/write functions
random: group sysctl functions
random: rewrite header introductory comment
random: defer fast pool mixing to worker
random: do not take pool spinlock at boot
random: unify early init crng load accounting
random: check for crng_init == 0 in add_device_randomness()
random: pull add_hwgenerator_randomness() declaration into random.h
random: clear fast pool, crng, and batches in cpuhp bring up
random: round-robin registers as ulong, not u32
random: only wake up writers after zap if threshold was passed
random: cleanup UUID handling
random: unify cycles_t and jiffies usage and types
random: do crng pre-init loading in worker rather than irq
random: give sysctl_random_min_urandom_seed a more sensible value
random: don't let 644 read-only sysctls be written to
random: replace custom notifier chain with standard one
random: use SipHash as interrupt entropy accumulator
random: make consistent usage of crng_ready()
random: reseed more often immediately after booting
random: check for signal and try earlier when generating entropy
random: skip fast_init if hwrng provides large chunk of entropy
random: treat bootloader trust toggle the same way as cpu trust toggle
random: re-add removed comment about get_random_{u32,u64} reseeding
random: mix build-time latent entropy into pool at init
random: do not allow user to keep crng key around on stack
random: check for signals every PAGE_SIZE chunk of /dev/[u]random
random: allow partial reads if later user copies fail
random: make random_get_entropy() return an unsigned long
random: document crng_fast_key_erasure() destination possibility
random: fix sysctl documentation nits
init: call time_init() before rand_initialize()
ia64: define get_cycles macro for arch-override
s390: define get_cycles macro for arch-override
parisc: define get_cycles macro for arch-override
alpha: define get_cycles macro for arch-override
powerpc: define get_cycles macro for arch-override
timekeeping: Add raw clock fallback for random_get_entropy()
m68k: use fallback for random_get_entropy() instead of zero
riscv: use fallback for random_get_entropy() instead of zero
mips: use fallback for random_get_entropy() instead of just c0 random
arm: use fallback for random_get_entropy() instead of zero
nios2: use fallback for random_get_entropy() instead of zero
x86/tsc: Use fallback for random_get_entropy() instead of zero
um: use fallback for random_get_entropy() instead of zero
sparc: use fallback for random_get_entropy() instead of zero
xtensa: use fallback for random_get_entropy() instead of zero
random: insist on random_get_entropy() existing in order to simplify
random: do not use batches when !crng_ready()
random: use first 128 bits of input as fast init
random: do not pretend to handle premature next security model
random: order timer entropy functions below interrupt functions
random: do not use input pool from hard IRQs
random: help compiler out with fast_mix() by using simpler arguments
siphash: use one source of truth for siphash permutations
random: use symbolic constants for crng_init states
random: avoid initializing twice in credit race
random: move initialization out of reseeding hot path
random: remove ratelimiting for in-kernel unseeded randomness
random: use proper jiffies comparison macro
random: handle latent entropy and command line from random_init()
random: credit architectural init the exact amount
random: use static branch for crng_ready()
random: remove extern from functions in header
random: use proper return types on get_random_{int,long}_wait()
random: make consistent use of buf and len
random: move initialization functions out of hot pages
random: move randomize_page() into mm where it belongs
random: unify batched entropy implementations
random: check for signals after page of pool writes
Jens Axboe (3):
random: convert to using fops->read_iter()
random: convert to using fops->write_iter()
random: wire up fops->splice_{read,write}_iter()
Lorenzo Pieralisi (1):
ACPI: sysfs: Fix BERT error region memory mapping
Mark Brown (1):
random: document add_hwgenerator_randomness() with other input
functions
Sakari Ailus (1):
media: vim2m: Register video device after setting up internals
Schspa Shi (1):
random: fix typo in comments
Sebastian Andrzej Siewior (1):
random: remove unused irq_flags argument from
add_interrupt_randomness()
Vitaly Kuznetsov (1):
KVM: x86: Properly handle APF vs disabled LAPIC situation
Zheng Zengkai (3):
Revert "alinux: random: speed up the initialization of module"
random: Fix kabi change due to enum cpuhp_state
random: Fix kabi change of get_random_bytes()
.../admin-guide/kernel-parameters.txt | 6 +
Documentation/admin-guide/sysctl/kernel.rst | 22 +-
MAINTAINERS | 2 +
arch/alpha/include/asm/timex.h | 1 +
arch/arm/include/asm/timex.h | 1 +
arch/ia64/include/asm/timex.h | 1 +
arch/m68k/include/asm/timex.h | 2 +-
arch/mips/include/asm/timex.h | 17 +-
arch/nios2/include/asm/timex.h | 3 +
arch/parisc/include/asm/timex.h | 3 +-
arch/powerpc/include/asm/timex.h | 1 +
arch/riscv/include/asm/timex.h | 2 +-
arch/s390/include/asm/timex.h | 1 +
arch/sparc/include/asm/timex_32.h | 4 +-
arch/um/include/asm/timex.h | 9 +-
arch/x86/crypto/Makefile | 4 +-
arch/x86/crypto/blake2s-glue.c | 166 +-
arch/x86/crypto/blake2s-shash.c | 77 +
arch/x86/include/asm/timex.h | 9 +
arch/x86/include/asm/tsc.h | 7 +-
arch/x86/kernel/cpu/mshyperv.c | 2 +-
arch/x86/kvm/lapic.c | 6 +
arch/x86/kvm/x86.c | 2 +-
arch/xtensa/include/asm/timex.h | 6 +-
crypto/Kconfig | 3 +-
crypto/blake2s_generic.c | 158 +-
crypto/drbg.c | 17 +-
drivers/acpi/sysfs.c | 23 +-
drivers/char/Kconfig | 3 +-
drivers/char/hw_random/core.c | 1 +
drivers/char/random.c | 3036 ++++++-----------
drivers/hv/vmbus_drv.c | 2 +-
drivers/media/test-drivers/vim2m.c | 22 +-
drivers/net/Kconfig | 1 -
drivers/net/wireguard/noise.c | 45 +-
.../staging/rtl8723bs/os_dep/ioctl_linux.c | 6 +-
include/crypto/blake2s.h | 66 +-
include/crypto/chacha.h | 15 +-
include/crypto/drbg.h | 2 +-
include/crypto/internal/blake2s.h | 123 +-
include/linux/hw_random.h | 2 -
include/linux/mm.h | 1 +
include/linux/prandom.h | 23 +-
include/linux/random.h | 102 +-
include/linux/siphash.h | 28 +
include/linux/timex.h | 10 +-
include/trace/events/random.h | 330 --
init/main.c | 13 +-
kernel/irq/handle.c | 2 +-
kernel/time/timekeeping.c | 15 +
kernel/workqueue.c | 8 +
lib/Kconfig.debug | 3 +-
lib/crypto/Kconfig | 23 +-
lib/crypto/Makefile | 9 +-
lib/crypto/blake2s-generic.c | 6 +-
lib/crypto/blake2s-selftest.c | 33 +-
lib/crypto/blake2s.c | 81 +-
lib/random32.c | 16 +-
lib/sha1.c | 95 +-
lib/siphash.c | 32 +-
lib/vsprintf.c | 10 +-
mm/util.c | 32 +
sound/pci/ctxfi/ctatc.c | 2 +
sound/pci/ctxfi/cthardware.h | 3 +-
64 files changed, 1739 insertions(+), 3017 deletions(-)
create mode 100644 arch/x86/crypto/blake2s-shash.c
delete mode 100644 include/trace/events/random.h
--
2.20.1
1
162

[PATCH openEuler-1.0-LTS] rtc: Fix set RTC time delay 500ms on some Zhaoxin SOCs
by LeoLiu-oc 30 Aug '22
by LeoLiu-oc 30 Aug '22
30 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V04
CVE: NA
----------------------------------------------------------------
When the RTC divider is changed from reset to an operating time base,
the first update cycle should be 500ms later. But on some Zhaoxin SOCs,
this first update cycle is one second later.
So set RTC time on these Zhaoxin SOCs will causing 500ms delay.
Skip setup RTC divider on these SOCs in mc146818_set_time to fix it.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/rtc/rtc-mc146818-lib.c | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/drivers/rtc/rtc-mc146818-lib.c b/drivers/rtc/rtc-mc146818-lib.c
index 2f1772a358ca..1a866ebbbe62 100644
--- a/drivers/rtc/rtc-mc146818-lib.c
+++ b/drivers/rtc/rtc-mc146818-lib.c
@@ -7,6 +7,23 @@
#include <linux/acpi.h>
#endif
+#ifdef CONFIG_X86
+static inline bool follow_mc146818_divider_reset(void)
+{
+ if ((boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR ||
+ boot_cpu_data.x86_vendor == X86_VENDOR_ZHAOXIN) &&
+ (boot_cpu_data.x86 <= 7 && boot_cpu_data.x86_model <= 59)) {
+ return false;
+ }
+ return true;
+}
+#else
+static inline bool follow_mc146818_divider_reset(void)
+{
+ return true;
+}
+#endif
+
/*
* Returns true if a clock update is in progress
*/
@@ -170,8 +187,10 @@ int mc146818_set_time(struct rtc_time *time)
save_control = CMOS_READ(RTC_CONTROL);
CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL);
- save_freq_select = CMOS_READ(RTC_FREQ_SELECT);
- CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT);
+ if (follow_mc146818_divider_reset()) {
+ save_freq_select = CMOS_READ(RTC_FREQ_SELECT);
+ CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT);
+ }
#ifdef CONFIG_MACH_DECSTATION
CMOS_WRITE(real_yrs, RTC_DEC_YEAR);
@@ -189,7 +208,8 @@ int mc146818_set_time(struct rtc_time *time)
#endif
CMOS_WRITE(save_control, RTC_CONTROL);
- CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
+ if (follow_mc146818_divider_reset())
+ CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
spin_unlock_irqrestore(&rtc_lock, flags);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Driver for Zhaoxin CPU core temperature monitoring
by LeoLiu-oc 30 Aug '22
by LeoLiu-oc 30 Aug '22
30 Aug '22
zhaoxin inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5J763
CVE: NA
--------------------------------------------
Add support for the temperature sensor inside CPU.
Supported are all known variants of the Zhaoxin processors.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/hwmon/Kconfig | 9 +
drivers/hwmon/Makefile | 1 +
drivers/hwmon/via-cputemp.c | 1 -
drivers/hwmon/zhaoxin-cputemp.c | 319 ++++++++++++++++++++++++++++++++
4 files changed, 329 insertions(+), 1 deletion(-)
create mode 100644 drivers/hwmon/zhaoxin-cputemp.c
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index c7adaca2ab01..1ef7c384d652 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1720,6 +1720,15 @@ config SENSORS_VIA_CPUTEMP
sensor inside your CPU. Supported are all known variants of
the VIA C7 and Nano.
+config SENSORS_ZHAOXIN_CPUTEMP
+ tristate "Zhaoxin CPU temperature sensor"
+ depends on X86
+ select HWMON_VID
+ help
+ If you say yes here you get support for the temperature
+ sensor inside your CPU. Supported are all known variants of
+ the Zhaoxin processors.
+
config SENSORS_VIA686A
tristate "VIA686A"
depends on PCI
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 93f7f41ea4ad..4fe7d2f76f0d 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -168,6 +168,7 @@ obj-$(CONFIG_SENSORS_TMP401) += tmp401.o
obj-$(CONFIG_SENSORS_TMP421) += tmp421.o
obj-$(CONFIG_SENSORS_VEXPRESS) += vexpress-hwmon.o
obj-$(CONFIG_SENSORS_VIA_CPUTEMP)+= via-cputemp.o
+obj-$(CONFIG_SENSORS_ZHAOXIN_CPUTEMP)+= zhaoxin-cputemp.o
obj-$(CONFIG_SENSORS_VIA686A) += via686a.o
obj-$(CONFIG_SENSORS_VT1211) += vt1211.o
obj-$(CONFIG_SENSORS_VT8231) += vt8231.o
diff --git a/drivers/hwmon/via-cputemp.c b/drivers/hwmon/via-cputemp.c
index 0e81f287d305..3c960b999958 100644
--- a/drivers/hwmon/via-cputemp.c
+++ b/drivers/hwmon/via-cputemp.c
@@ -287,7 +287,6 @@ static const struct x86_cpu_id __initconst cputemp_ids[] = {
{ X86_VENDOR_CENTAUR, 6, 0xa, }, /* C7 A */
{ X86_VENDOR_CENTAUR, 6, 0xd, }, /* C7 D */
{ X86_VENDOR_CENTAUR, 6, 0xf, }, /* Nano */
- { X86_VENDOR_CENTAUR, 7, X86_MODEL_ANY, },
{}
};
MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
diff --git a/drivers/hwmon/zhaoxin-cputemp.c b/drivers/hwmon/zhaoxin-cputemp.c
new file mode 100644
index 000000000000..4bfde378b0fb
--- /dev/null
+++ b/drivers/hwmon/zhaoxin-cputemp.c
@@ -0,0 +1,319 @@
+/*
+ * zhaoxin-cputemp.c - Driver for Zhaoxin CPU core temperature monitoring
+ *
+ * based on existing coretemp.c, which is
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/hwmon.h>
+#include <linux/hwmon-vid.h>
+#include <linux/sysfs.h>
+#include <linux/hwmon-sysfs.h>
+#include <linux/err.h>
+#include <linux/mutex.h>
+#include <linux/list.h>
+#include <linux/platform_device.h>
+#include <linux/cpu.h>
+#include <asm/msr.h>
+#include <asm/processor.h>
+#include <asm/cpu_device_id.h>
+
+#define DRVNAME "zhaoxin_cputemp"
+
+enum { SHOW_TEMP, SHOW_LABEL, SHOW_NAME };
+
+/*
+ * Functions declaration
+ */
+
+struct zhaoxin_cputemp_data {
+ struct device *hwmon_dev;
+ const char *name;
+ u8 vrm;
+ u32 id;
+ u32 msr_temp;
+ u32 msr_vid;
+};
+
+/*
+ * Sysfs stuff
+ */
+
+static ssize_t show_name(struct device *dev, struct device_attribute
+ *devattr, char *buf)
+{
+ int ret;
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+
+ if (attr->index == SHOW_NAME)
+ ret = sprintf(buf, "%s\n", data->name);
+ else /* show label */
+ ret = sprintf(buf, "Core %d\n", data->id);
+ return ret;
+}
+
+static ssize_t show_temp(struct device *dev,
+ struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%lu\n", ((unsigned long)eax & 0xffffff) * 1000);
+}
+
+static ssize_t cpu0_vid_show(struct device *dev,
+ struct device_attribute *devattr, char *buf)
+{
+ struct zhaoxin_cputemp_data *data = dev_get_drvdata(dev);
+ u32 eax, edx;
+ int err;
+
+ err = rdmsr_safe_on_cpu(data->id, data->msr_vid, &eax, &edx);
+ if (err)
+ return -EAGAIN;
+
+ return sprintf(buf, "%d\n", vid_from_reg(~edx & 0x7f, data->vrm));
+}
+
+static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL,
+ SHOW_TEMP);
+static SENSOR_DEVICE_ATTR(temp1_label, S_IRUGO, show_name, NULL, SHOW_LABEL);
+static SENSOR_DEVICE_ATTR(name, S_IRUGO, show_name, NULL, SHOW_NAME);
+
+static struct attribute *zhaoxin_cputemp_attributes[] = {
+ &sensor_dev_attr_name.dev_attr.attr,
+ &sensor_dev_attr_temp1_label.dev_attr.attr,
+ &sensor_dev_attr_temp1_input.dev_attr.attr,
+ NULL
+};
+
+static const struct attribute_group zhaoxin_cputemp_group = {
+ .attrs = zhaoxin_cputemp_attributes,
+};
+
+/* Optional attributes */
+static DEVICE_ATTR_RO(cpu0_vid);
+
+static int zhaoxin_cputemp_probe(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data;
+ int err;
+ u32 eax, edx;
+
+ data = devm_kzalloc(&pdev->dev, sizeof(struct zhaoxin_cputemp_data),
+ GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+
+ data->id = pdev->id;
+ data->name = "zhaoxin_cputemp";
+
+ data->msr_temp = 0x1423;
+
+ /* test if we can access the TEMPERATURE MSR */
+ err = rdmsr_safe_on_cpu(data->id, data->msr_temp, &eax, &edx);
+ if (err) {
+ dev_err(&pdev->dev,
+ "Unable to access TEMPERATURE MSR, giving up\n");
+ return err;
+ }
+
+ platform_set_drvdata(pdev, data);
+
+ err = sysfs_create_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ if (err)
+ return err;
+
+ if (data->msr_vid)
+ data->vrm = vid_which_vrm();
+
+ if (data->vrm) {
+ err = device_create_file(&pdev->dev, &dev_attr_cpu0_vid);
+ if (err)
+ goto exit_remove;
+ }
+
+ data->hwmon_dev = hwmon_device_register(&pdev->dev);
+ if (IS_ERR(data->hwmon_dev)) {
+ err = PTR_ERR(data->hwmon_dev);
+ dev_err(&pdev->dev, "Class registration failed (%d)\n",
+ err);
+ goto exit_remove;
+ }
+
+ return 0;
+
+exit_remove:
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return err;
+}
+
+static int zhaoxin_cputemp_remove(struct platform_device *pdev)
+{
+ struct zhaoxin_cputemp_data *data = platform_get_drvdata(pdev);
+
+ hwmon_device_unregister(data->hwmon_dev);
+ if (data->vrm)
+ device_remove_file(&pdev->dev, &dev_attr_cpu0_vid);
+ sysfs_remove_group(&pdev->dev.kobj, &zhaoxin_cputemp_group);
+ return 0;
+}
+
+static struct platform_driver zhaoxin_cputemp_driver = {
+ .driver = {
+ .name = DRVNAME,
+ },
+ .probe = zhaoxin_cputemp_probe,
+ .remove = zhaoxin_cputemp_remove,
+};
+
+struct pdev_entry {
+ struct list_head list;
+ struct platform_device *pdev;
+ unsigned int cpu;
+};
+
+static LIST_HEAD(pdev_list);
+static DEFINE_MUTEX(pdev_list_mutex);
+
+static int zhaoxin_cputemp_online(unsigned int cpu)
+{
+ int err;
+ struct platform_device *pdev;
+ struct pdev_entry *pdev_entry;
+
+ pdev = platform_device_alloc(DRVNAME, cpu);
+ if (!pdev) {
+ err = -ENOMEM;
+ pr_err("Device allocation failed\n");
+ goto exit;
+ }
+
+ pdev_entry = kzalloc(sizeof(struct pdev_entry), GFP_KERNEL);
+ if (!pdev_entry) {
+ err = -ENOMEM;
+ goto exit_device_put;
+ }
+
+ err = platform_device_add(pdev);
+ if (err) {
+ pr_err("Device addition failed (%d)\n", err);
+ goto exit_device_free;
+ }
+
+ pdev_entry->pdev = pdev;
+ pdev_entry->cpu = cpu;
+ mutex_lock(&pdev_list_mutex);
+ list_add_tail(&pdev_entry->list, &pdev_list);
+ mutex_unlock(&pdev_list_mutex);
+
+ return 0;
+
+exit_device_free:
+ kfree(pdev_entry);
+exit_device_put:
+ platform_device_put(pdev);
+exit:
+ return err;
+}
+
+static int zhaoxin_cputemp_down_prep(unsigned int cpu)
+{
+ struct pdev_entry *p;
+
+ mutex_lock(&pdev_list_mutex);
+ list_for_each_entry(p, &pdev_list, list) {
+ if (p->cpu == cpu) {
+ platform_device_unregister(p->pdev);
+ list_del(&p->list);
+ mutex_unlock(&pdev_list_mutex);
+ kfree(p);
+ return 0;
+ }
+ }
+ mutex_unlock(&pdev_list_mutex);
+ return 0;
+}
+
+static const struct x86_cpu_id __initconst cputemp_ids[] = {
+ { X86_VENDOR_CENTAUR, 7, X86_MODEL_ANY, },
+ { X86_VENDOR_ZHAOXIN, 7, X86_MODEL_ANY, },
+ {}
+};
+MODULE_DEVICE_TABLE(x86cpu, cputemp_ids);
+
+static enum cpuhp_state zhaoxin_temp_online;
+
+static int __init zhaoxin_cputemp_init(void)
+{
+ int err;
+
+ if (!x86_match_cpu(cputemp_ids))
+ return -ENODEV;
+
+ err = platform_driver_register(&zhaoxin_cputemp_driver);
+ if (err)
+ goto exit;
+
+ err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "hwmon/zhaoxin:online",
+ zhaoxin_cputemp_online, zhaoxin_cputemp_down_prep);
+ if (err < 0)
+ goto exit_driver_unreg;
+ zhaoxin_temp_online = err;
+
+#ifndef CONFIG_HOTPLUG_CPU
+ if (list_empty(&pdev_list)) {
+ err = -ENODEV;
+ goto exit_hp_unreg;
+ }
+#endif
+ return 0;
+
+#ifndef CONFIG_HOTPLUG_CPU
+exit_hp_unreg:
+ cpuhp_remove_state_nocalls(zhaoxin_temp_online);
+#endif
+exit_driver_unreg:
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+exit:
+ return err;
+}
+
+static void __exit zhaoxin_cputemp_exit(void)
+{
+ cpuhp_remove_state(zhaoxin_temp_online);
+ platform_driver_unregister(&zhaoxin_cputemp_driver);
+}
+
+MODULE_DESCRIPTION("Zhaoxin CPU temperature monitor");
+MODULE_LICENSE("GPL");
+
+module_init(zhaoxin_cputemp_init)
+module_exit(zhaoxin_cputemp_exit)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] x86/tsc: Make cur->adjusted values in package#1 to be the same
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V2W
CVE: NA
----------------------------------------------------------------
When resume from S4 on Zhaoxin 2 packages platform that support X86_FEATURE_TSC_ADJUST,
the following warning messages appear:
[ 327.445302] [Firmware Bug]: TSC ADJUST differs: CPU15 45960750 --> 78394770. Restoring
[ 329.209120] [Firmware Bug]: TSC ADJUST differs: CPU14 45960750 --> 78394770. Restoring
[ 329.209128] [Firmware Bug]: TSC ADJUST differs: CPU13 45960750 --> 78394770. Restoring
[ 329.209138] [Firmware Bug]: TSC ADJUST differs: CPU12 45960750 --> 78394770. Restoring
[ 329.209151] [Firmware Bug]: TSC ADJUST differs: CPU11 45960750 --> 78394770. Restoring
[ 329.209160] [Firmware Bug]: TSC ADJUST differs: CPU10 45960750 --> 78394770. Restoring
[ 329.209169] [Firmware Bug]: TSC ADJUST differs: CPU9 45960750 --> 78394770. Restoring
The reason is:
Step 1: Bring up.
TSC is sync after bring up with following settings:
MSR 0x3b cur->adjusted
Package#0 CPU 0-7 0 0
Package#1 first CPU value1 value1
Package#1 non-first CPU value1 value1
Step 2: Suspend to S4.
Settings in Step 1 are not changed in this Step.
Step 3: Bring up caused by S4 wake up event.
TSC is sync when bring up with following settings:
MSR 0x3b cur->adjusted
Package#0 CPU 0-7 0 0
Package#1 first CPU value2 value2
Package#1 non-first CPU value2 value2
Step 4: Resume from S4.
When resuming from S4, Current TSC synchronous mechanism
cause following settings:
MSR 0x3b cur->adjusted
Package#0 CPU 0-7 0 0
Package#1 first CPU value2 value2
Package#1 non-first CPU value2 value1
In these Steps, value1 != 0 and value2 != value1.
In Step4, as function tsc_store_and_check_tsc_adjust() do, when the value
of MSR 0x3b on the non-first online CPU in package#1 is equal to the value
of cur->adjusted on the first online CPU in the same package,
the cur->adjusted value on this non-first online CPU will hold the old value1.
This cause function tsc_verify_tsc_adjust() set the value of MSR 0x3b on the
non-first online CPUs in the package#1 to the old value1 and print the
beginning warning messages.
Fix it by setting cur->adjusted value on the non-first online CPU in a package
to the value of MSR 0x3b on the same CPU when they are not equal.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
arch/x86/kernel/tsc_sync.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/x86/kernel/tsc_sync.c b/arch/x86/kernel/tsc_sync.c
index ec534f978867..e0cc4170325c 100644
--- a/arch/x86/kernel/tsc_sync.c
+++ b/arch/x86/kernel/tsc_sync.c
@@ -190,6 +190,11 @@ bool tsc_store_and_check_tsc_adjust(bool bootcpu)
if (bootval != ref->adjusted) {
cur->adjusted = ref->adjusted;
wrmsrl(MSR_IA32_TSC_ADJUST, ref->adjusted);
+ } else if (cur->adjusted != bootval) {
+ if (boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR ||
+ boot_cpu_data.x86_vendor == X86_VENDOR_ZHAOXIN) {
+ cur->adjusted = bootval;
+ }
}
/*
* We have the TSCs forced to be in sync on this package. Skip sync
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Add support for PxSCT.LPM set based on actual LPM circumstances
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V2K
CVE: NA
----------------------------------------------------------------
AHCI Spec shows that the PxSCTL.IPM field in each port must be programmed
to disallow device initiated LPM requests when HBA can not support
transitions to the LPM state. The current LPM driver has no restrictions
on LPM transitions when enabling device initiated LPM.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/ata/libata-core.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 0bcdc5261480..e685162a188e 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3975,6 +3975,9 @@ int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy,
bool spm_wakeup)
{
struct ata_eh_context *ehc = &link->eh_context;
+ struct ata_port *ap = ata_is_host_link(link) ? link->ap : NULL;
+ struct device *dev = ap ? ap->host->dev : NULL;
+ struct pci_dev *pdev = (!dev || !dev_is_pci(dev)) ? NULL : to_pci_dev(dev);
bool woken_up = false;
u32 scontrol;
int rc;
@@ -4001,10 +4004,20 @@ int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy,
case ATA_LPM_MED_POWER_WITH_DIPM:
case ATA_LPM_MIN_POWER_WITH_PARTIAL:
case ATA_LPM_MIN_POWER:
- if (ata_link_nr_enabled(link) > 0)
+ if (ata_link_nr_enabled(link) > 0) {
/* no restrictions on LPM transitions */
scontrol &= ~(0x7 << 8);
- else {
+ /*
+ * If Host does not support partial, then disallows it,
+ * the same for slumber.
+ */
+ if (pdev && pdev->vendor == PCI_VENDOR_ID_ZHAOXIN) {
+ if (!(link->ap->host->flags & ATA_HOST_PART))
+ scontrol |= (0x1 << 8);
+ if (!(link->ap->host->flags & ATA_HOST_SSC))
+ scontrol |= (0x2 << 8);
+ }
+ } else {
/* empty port, power off */
scontrol &= ~0xf;
scontrol |= (0x1 << 2);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Add support for disabling PhyRdy Change Interrupt based on actual LPM capability
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V27
CVE: NA
----------------------------------------------------------------
The ahci spec mentions that PhyRdy Change Interrupt and
Link Power Management (LPM) do not coexist.
However, before enabling LPM, the driver did not check whether
the host supports LPM, but directly disabled PhyRdy Change Interrupt.
Increase the judgment on the actual support of LPM, and disable PhyRdy
Change Interrupt only when it is supported.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/ata/ahci.c | 11 +++++++++++
drivers/ata/libata-eh.c | 7 +++++++
include/linux/libata.h | 3 +++
3 files changed, 21 insertions(+)
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index ebb2bfd4ab0a..8ed2f42b85fd 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1855,6 +1855,17 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
else
dev_info(&pdev->dev, "SSS flag set, parallel bus scan disabled\n");
+ if (pdev->vendor == PCI_VENDOR_ID_ZHAOXIN) {
+ if (hpriv->cap & HOST_CAP_PART)
+ host->flags |= ATA_HOST_PART;
+
+ if (hpriv->cap & HOST_CAP_SSC)
+ host->flags |= ATA_HOST_SSC;
+
+ if (hpriv->cap2 & HOST_CAP2_SDS)
+ host->flags |= ATA_HOST_DEVSLP;
+ }
+
if (pi.flags & ATA_FLAG_EM)
ahci_reset_em(host);
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index ccc80ff57eb2..e4e0e6d94741 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -3448,6 +3448,8 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
struct ata_device **r_failed_dev)
{
struct ata_port *ap = ata_is_host_link(link) ? link->ap : NULL;
+ struct device *device = ap->host->dev;
+ struct pci_dev *pdev = (!device || !dev_is_pci(device)) ? NULL : to_pci_dev(device);
struct ata_eh_context *ehc = &link->eh_context;
struct ata_device *dev, *link_dev = NULL, *lpm_dev = NULL;
enum ata_lpm_policy old_policy = link->lpm_policy;
@@ -3456,6 +3458,11 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
unsigned int err_mask;
int rc;
+ /* if controller does not support lpm, then sets no LPM flags */
+ if ((pdev && pdev->vendor == PCI_VENDOR_ID_ZHAOXIN) &&
+ !(ap->host->flags & (ATA_HOST_PART | ATA_HOST_SSC | ATA_HOST_DEVSLP)))
+ link->flags |= ATA_LFLAG_NO_LPM;
+
/* if the link or host doesn't do LPM, noop */
if ((link->flags & ATA_LFLAG_NO_LPM) || (ap && !ap->ops->set_lpm))
return 0;
diff --git a/include/linux/libata.h b/include/linux/libata.h
index dc164b7ebbb0..1cec68e5b104 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -276,6 +276,9 @@ enum {
ATA_HOST_STARTED = (1 << 1), /* Host started */
ATA_HOST_PARALLEL_SCAN = (1 << 2), /* Ports on this host can be scanned in parallel */
ATA_HOST_IGNORE_ATA = (1 << 3), /* Ignore ATA devices on this host. */
+ ATA_HOST_PART = (1 << 4), /* Host support partial. */
+ ATA_HOST_SSC = (1 << 5), /* Host support slumber. */
+ ATA_HOST_DEVSLP = (1 << 6), /* Host support devslp. */
/* bits 24:31 of host->flags are reserved for LLD specific flags */
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] EHCI: Clear wakeup signal locked in S0 state when device plug in
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V1P
CVE: NA
----------------------------------------------------------------
If we plug in a LS/FS device on USB2 port of EHCI, it will latch a wakeup
signal in EHCI internal. This is a bug of EHCI for Some project of
ZhaoXin. If enable EHCI runtime suspend and no device attach.
PM core will let EHCI go to D3 to save power. However, once EHCI go to D3,
it will release wakeup signal that latched on device connect to port
during S0. Which will generate a SCI interrupt and bring EHCI to D0.
But without device connect, EHCI will go to D3 again.
So, there is suspend-resume loop and generate SCI interrupt Continuously.
In order to fix this issues, we need to clear the wakeup signal latched
in EHCI when EHCI suspend function is called.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/pci/pci-driver.c | 6 +++++-
drivers/usb/host/ehci-hcd.c | 21 +++++++++++++++++++++
drivers/usb/host/ehci-pci.c | 4 ++++
drivers/usb/host/ehci.h | 1 +
4 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index 45c3a78d6004..9329f4881d42 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -513,7 +513,11 @@ static int pci_restore_standard_config(struct pci_dev *pci_dev)
}
pci_restore_state(pci_dev);
- pci_pme_restore(pci_dev);
+ if (!(pci_dev->vendor == PCI_VENDOR_ID_ZHAOXIN &&
+ pci_dev->device == 0x3104 &&
+ (pci_dev->revision & 0xf0) == 0x90 &&
+ pci_dev->class == PCI_CLASS_SERIAL_USB_EHCI))
+ pci_pme_restore(pci_dev);
return 0;
}
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 8608ac513fb7..0daa6d98f9b9 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1110,6 +1110,27 @@ int ehci_suspend(struct usb_hcd *hcd, bool do_wakeup)
return -EBUSY;
}
+ /* Clear wakeup signal locked in S0 state when device plug in */
+ if (ehci->zx_wakeup_clear == 1) {
+ u32 __iomem *reg = &ehci->regs->port_status[4];
+ u32 t1 = ehci_readl(ehci, reg);
+
+ t1 &= (u32)~0xf0000;
+ t1 |= PORT_TEST_FORCE;
+ ehci_writel(ehci, t1, reg);
+ t1 = ehci_readl(ehci, reg);
+ usleep_range(1000, 2000);
+ t1 &= (u32)~0xf0000;
+ ehci_writel(ehci, t1, reg);
+ usleep_range(1000, 2000);
+ t1 = ehci_readl(ehci, reg);
+ ehci_writel(ehci, t1 | PORT_CSC, reg);
+ udelay(500);
+ t1 = ehci_readl(ehci, &ehci->regs->status);
+ ehci_writel(ehci, t1 & STS_PCD, &ehci->regs->status);
+ ehci_readl(ehci, &ehci->regs->status);
+ }
+
return 0;
}
EXPORT_SYMBOL_GPL(ehci_suspend);
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index baae879dbddd..357dc140e914 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -216,6 +216,10 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
ehci_info(ehci, "applying MosChip frame-index workaround\n");
ehci->frame_index_bug = 1;
break;
+ case PCI_VENDOR_ID_ZHAOXIN:
+ if (pdev->device == 0x3104 && (pdev->revision & 0xf0) == 0x90)
+ ehci->zx_wakeup_clear = 1;
+ break;
}
/* optional debug port, normally in the first BAR */
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index c8e9a48e1d51..9625b6030757 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -218,6 +218,7 @@ struct ehci_hcd { /* one per controller */
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
unsigned need_oc_pp_cycle:1; /* MPC834X port power */
unsigned imx28_write_fix:1; /* For Freescale i.MX28 */
+ unsigned zx_wakeup_clear:1;
/* required for usb32 quirk */
#define OHCI_CTRL_HCFS (3 << 6)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/5] tty: drivers/tty/, stop using tty_schedule_flip()
by Yongqiang Liu 29 Aug '22
by Yongqiang Liu 29 Aug '22
29 Aug '22
From: Jiri Slaby <jslaby(a)suse.cz>
stable inclusion
from stable-v4.19.254
commit 6935c7650015e664642556a7e6c9cf23c7dc01ce
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5A5Y1
CVE: CVE-2022-1462
--------------------------------
commit 5f6a85158ccacc3f09744b3aafe8b11ab3b6c6f6 upstream.
Since commit a9c3f68f3cd8d (tty: Fix low_latency BUG) in 2014,
tty_flip_buffer_push() is only a wrapper to tty_schedule_flip(). We are
going to remove the latter (as it is used less), so call the former in
drivers/tty/.
Cc: Vladimir Zapolskiy <vz(a)mleia.com>
Reviewed-by: Johan Hovold <johan(a)kernel.org>
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Link: https://lore.kernel.org/r/20211122111648.30379-2-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yi Yang <yiyang13(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/tty/cyclades.c | 6 +++---
drivers/tty/goldfish.c | 2 +-
drivers/tty/moxa.c | 4 ++--
drivers/tty/serial/lpc32xx_hs.c | 2 +-
drivers/tty/vt/keyboard.c | 6 +++---
drivers/tty/vt/vt.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 6d3c58051ce3..db048dbe9f78 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -556,7 +556,7 @@ static void cyy_chip_rx(struct cyclades_card *cinfo, int chip,
}
info->idle_stats.recv_idle = jiffies;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
/* end of service */
cyy_writeb(info, CyRIR, save_xir & 0x3f);
@@ -996,7 +996,7 @@ static void cyz_handle_rx(struct cyclades_port *info)
mod_timer(&info->rx_full_timer, jiffies + 1);
#endif
info->idle_stats.recv_idle = jiffies;
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
/* Update rx_get */
cy_writel(&buf_ctrl->rx_get, new_rx_get);
@@ -1172,7 +1172,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo)
if (delta_count)
wake_up_interruptible(&info->port.delta_msr_wait);
if (special_count)
- tty_schedule_flip(&info->port);
+ tty_flip_buffer_push(&info->port);
}
}
diff --git a/drivers/tty/goldfish.c b/drivers/tty/goldfish.c
index c8c5cdfc5e19..ed0f3a7b8fe5 100644
--- a/drivers/tty/goldfish.c
+++ b/drivers/tty/goldfish.c
@@ -151,7 +151,7 @@ static irqreturn_t goldfish_tty_interrupt(int irq, void *dev_id)
address = (unsigned long)(void *)buf;
goldfish_tty_rw(qtty, address, count, 0);
- tty_schedule_flip(&qtty->port);
+ tty_flip_buffer_push(&qtty->port);
return IRQ_HANDLED;
}
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index 250a19f042d7..181381fa5126 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -1393,7 +1393,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (inited && !tty_throttled(tty) &&
MoxaPortRxQueue(p) > 0) { /* RX */
MoxaPortReadData(p);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
} else {
clear_bit(EMPTYWAIT, &p->statusflags);
@@ -1418,7 +1418,7 @@ static int moxa_poll_port(struct moxa_port *p, unsigned int handle,
if (tty && (intr & IntrBreak) && !I_IGNBRK(tty)) { /* BREAK */
tty_insert_flip_char(&p->port, 0, TTY_BREAK);
- tty_schedule_flip(&p->port);
+ tty_flip_buffer_push(&p->port);
}
if (intr & IntrLine)
diff --git a/drivers/tty/serial/lpc32xx_hs.c b/drivers/tty/serial/lpc32xx_hs.c
index d1d73261575b..9c145ed0dcf7 100644
--- a/drivers/tty/serial/lpc32xx_hs.c
+++ b/drivers/tty/serial/lpc32xx_hs.c
@@ -341,7 +341,7 @@ static irqreturn_t serial_lpc32xx_interrupt(int irq, void *dev_id)
LPC32XX_HSUART_IIR(port->membase));
port->icount.overrun++;
tty_insert_flip_char(tport, 0, TTY_OVERRUN);
- tty_schedule_flip(tport);
+ tty_flip_buffer_push(tport);
}
/* Data received? */
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index 94cad9f86ff9..e3aac11d770f 100644
--- a/drivers/tty/vt/keyboard.c
+++ b/drivers/tty/vt/keyboard.c
@@ -310,7 +310,7 @@ int kbd_rate(struct kbd_repeat *rpt)
static void put_queue(struct vc_data *vc, int ch)
{
tty_insert_flip_char(&vc->port, ch, 0);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void puts_queue(struct vc_data *vc, char *cp)
@@ -319,7 +319,7 @@ static void puts_queue(struct vc_data *vc, char *cp)
tty_insert_flip_char(&vc->port, *cp, 0);
cp++;
}
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void applkey(struct vc_data *vc, int key, char mode)
@@ -564,7 +564,7 @@ static void fn_inc_console(struct vc_data *vc)
static void fn_send_intr(struct vc_data *vc)
{
tty_insert_flip_char(&vc->port, 0, TTY_BREAK);
- tty_schedule_flip(&vc->port);
+ tty_flip_buffer_push(&vc->port);
}
static void fn_scroll_forw(struct vc_data *vc)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index dca627ccece5..20565603a365 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1838,7 +1838,7 @@ static void respond_string(const char *p, struct tty_port *port)
tty_insert_flip_char(port, *p, 0);
p++;
}
- tty_schedule_flip(port);
+ tty_flip_buffer_push(port);
}
static void cursor_report(struct vc_data *vc, struct tty_struct *tty)
--
2.25.1
1
4

[PATCH openEuler-1.0-LTS] XHCI:Fix some device identify fail when enable xHCI runtime suspend
by LeoLiu-oc 29 Aug '22
by LeoLiu-oc 29 Aug '22
29 Aug '22
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I54V16
CVE: NA
----------------------------------------------------------------
If plug out device form xhci with runtime suspend enabled.
On the one hand, driver will disconnect this device and send disabled
slot command to xhci.
On the other hand, without no device connect to xhci, PM core will
call xhci suspend function to let xhci go to D3 to save power.
However there is a temporal competition to get xhci lock between
disable slot command interrupt and xhci suspend.
If xhci suspend function get xhci lock first, then this function will
clear xhci command ring. It will get error command trb when driver to
handle disable slot command interrupt. This is a serious error for
driver and driver will cleanup xhci. So,any device connect to this
xhci port again will not be recognized.
In order to fix this issues, we let disable slot command interrupt ISR
to get xhci lock first. So, add a delay in xhci suspend function before
to get xhci lock.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
---
drivers/usb/host/xhci-pci.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 238a32cc311c..4c2376a4c1d6 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -223,6 +223,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
xhci->quirks |= XHCI_ZHAOXIN_HOST;
}
+ if (pdev->vendor == PCI_VENDOR_ID_ZHAOXIN)
+ xhci->quirks |= XHCI_SUSPEND_DELAY;
+
/* See https://bugzilla.kernel.org/show_bug.cgi?id=79511 */
if (pdev->vendor == PCI_VENDOR_ID_VIA &&
pdev->device == 0x3432)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] can: bcm/raw/isotp: use per module netdevice notifier
by Yongqiang Liu 27 Aug '22
by Yongqiang Liu 27 Aug '22
27 Aug '22
From: Tetsuo Handa <penguin-kernel(a)i-love.sakura.ne.jp>
stable inclusion
from stable-v4.19.196
commit d42c3ebb315618ca536ef764e3f929ce1d5c3485
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5O0T8
CVE: NA
--------------------------------
commit 8d0caedb759683041d9db82069937525999ada53 upstream.
syzbot is reporting hung task at register_netdevice_notifier() [1] and
unregister_netdevice_notifier() [2], for cleanup_net() might perform
time consuming operations while CAN driver's raw/bcm/isotp modules are
calling {register,unregister}_netdevice_notifier() on each socket.
Change raw/bcm/isotp modules to call register_netdevice_notifier() from
module's __init function and call unregister_netdevice_notifier() from
module's __exit function, as with gw/j1939 modules are doing.
Link: https://syzkaller.appspot.com/bug?id=391b9498827788b3cc6830226d4ff5be87107c… [1]
Link: https://syzkaller.appspot.com/bug?id=1724d278c83ca6e6df100a2e320c10d991cf2b… [2]
Link: https://lore.kernel.org/r/54a5f451-05ed-f977-8534-79e7aa2bcc8f@i-love.sakur…
Cc: linux-stable <stable(a)vger.kernel.org>
Reported-by: syzbot <syzbot+355f8edb2ff45d5f95fa(a)syzkaller.appspotmail.com>
Reported-by: syzbot <syzbot+0f1827363a305f74996f(a)syzkaller.appspotmail.com>
Reviewed-by: Kirill Tkhai <ktkhai(a)virtuozzo.com>
Tested-by: syzbot <syzbot+355f8edb2ff45d5f95fa(a)syzkaller.appspotmail.com>
Tested-by: Oliver Hartkopp <socketcan(a)hartkopp.net>
Signed-off-by: Tetsuo Handa <penguin-kernel(a)I-love.SAKURA.ne.jp>
Signed-off-by: Marc Kleine-Budde <mkl(a)pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/can/bcm.c | 59 +++++++++++++++++++++++++++++++++++++-----------
net/can/raw.c | 62 +++++++++++++++++++++++++++++++++++++++------------
2 files changed, 94 insertions(+), 27 deletions(-)
diff --git a/net/can/bcm.c b/net/can/bcm.c
index ffc34e911808..db987a1567ba 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -124,7 +124,7 @@ struct bcm_sock {
struct sock sk;
int bound;
int ifindex;
- struct notifier_block notifier;
+ struct list_head notifier;
struct list_head rx_ops;
struct list_head tx_ops;
unsigned long dropped_usr_msgs;
@@ -132,6 +132,10 @@ struct bcm_sock {
char procname [32]; /* inode number in decimal with \0 */
};
+static LIST_HEAD(bcm_notifier_list);
+static DEFINE_SPINLOCK(bcm_notifier_lock);
+static struct bcm_sock *bcm_busy_notifier;
+
static inline struct bcm_sock *bcm_sk(const struct sock *sk)
{
return (struct bcm_sock *)sk;
@@ -1381,20 +1385,15 @@ static int bcm_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
/*
* notification handler for netdevice status changes
*/
-static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
- void *ptr)
+static void bcm_notify(struct bcm_sock *bo, unsigned long msg,
+ struct net_device *dev)
{
- struct net_device *dev = netdev_notifier_info_to_dev(ptr);
- struct bcm_sock *bo = container_of(nb, struct bcm_sock, notifier);
struct sock *sk = &bo->sk;
struct bcm_op *op;
int notify_enodev = 0;
if (!net_eq(dev_net(dev), sock_net(sk)))
- return NOTIFY_DONE;
-
- if (dev->type != ARPHRD_CAN)
- return NOTIFY_DONE;
+ return;
switch (msg) {
@@ -1429,7 +1428,28 @@ static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
sk->sk_error_report(sk);
}
}
+}
+static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
+ void *ptr)
+{
+ struct net_device *dev = netdev_notifier_info_to_dev(ptr);
+
+ if (dev->type != ARPHRD_CAN)
+ return NOTIFY_DONE;
+ if (msg != NETDEV_UNREGISTER && msg != NETDEV_DOWN)
+ return NOTIFY_DONE;
+ if (unlikely(bcm_busy_notifier)) /* Check for reentrant bug. */
+ return NOTIFY_DONE;
+
+ spin_lock(&bcm_notifier_lock);
+ list_for_each_entry(bcm_busy_notifier, &bcm_notifier_list, notifier) {
+ spin_unlock(&bcm_notifier_lock);
+ bcm_notify(bcm_busy_notifier, msg, dev);
+ spin_lock(&bcm_notifier_lock);
+ }
+ bcm_busy_notifier = NULL;
+ spin_unlock(&bcm_notifier_lock);
return NOTIFY_DONE;
}
@@ -1449,9 +1469,9 @@ static int bcm_init(struct sock *sk)
INIT_LIST_HEAD(&bo->rx_ops);
/* set notifier */
- bo->notifier.notifier_call = bcm_notifier;
-
- register_netdevice_notifier(&bo->notifier);
+ spin_lock(&bcm_notifier_lock);
+ list_add_tail(&bo->notifier, &bcm_notifier_list);
+ spin_unlock(&bcm_notifier_lock);
return 0;
}
@@ -1474,7 +1494,14 @@ static int bcm_release(struct socket *sock)
/* remove bcm_ops, timer, rx_unregister(), etc. */
- unregister_netdevice_notifier(&bo->notifier);
+ spin_lock(&bcm_notifier_lock);
+ while (bcm_busy_notifier == bo) {
+ spin_unlock(&bcm_notifier_lock);
+ schedule_timeout_uninterruptible(1);
+ spin_lock(&bcm_notifier_lock);
+ }
+ list_del(&bo->notifier);
+ spin_unlock(&bcm_notifier_lock);
lock_sock(sk);
@@ -1693,6 +1720,10 @@ static struct pernet_operations canbcm_pernet_ops __read_mostly = {
.exit = canbcm_pernet_exit,
};
+static struct notifier_block canbcm_notifier = {
+ .notifier_call = bcm_notifier
+};
+
static int __init bcm_module_init(void)
{
int err;
@@ -1706,12 +1737,14 @@ static int __init bcm_module_init(void)
}
register_pernet_subsys(&canbcm_pernet_ops);
+ register_netdevice_notifier(&canbcm_notifier);
return 0;
}
static void __exit bcm_module_exit(void)
{
can_proto_unregister(&bcm_can_proto);
+ unregister_netdevice_notifier(&canbcm_notifier);
unregister_pernet_subsys(&canbcm_pernet_ops);
}
diff --git a/net/can/raw.c b/net/can/raw.c
index 8d9c6c64e027..6963293e59fd 100644
--- a/net/can/raw.c
+++ b/net/can/raw.c
@@ -84,7 +84,7 @@ struct raw_sock {
struct sock sk;
int bound;
int ifindex;
- struct notifier_block notifier;
+ struct list_head notifier;
int loopback;
int recv_own_msgs;
int fd_frames;
@@ -96,6 +96,10 @@ struct raw_sock {
struct uniqframe __percpu *uniq;
};
+static LIST_HEAD(raw_notifier_list);
+static DEFINE_SPINLOCK(raw_notifier_lock);
+static struct raw_sock *raw_busy_notifier;
+
/*
* Return pointer to store the extra msg flags for raw_recvmsg().
* We use the space of one unsigned int beyond the 'struct sockaddr_can'
@@ -266,21 +270,16 @@ static int raw_enable_allfilters(struct net *net, struct net_device *dev,
return err;
}
-static int raw_notifier(struct notifier_block *nb,
- unsigned long msg, void *ptr)
+static void raw_notify(struct raw_sock *ro, unsigned long msg,
+ struct net_device *dev)
{
- struct net_device *dev = netdev_notifier_info_to_dev(ptr);
- struct raw_sock *ro = container_of(nb, struct raw_sock, notifier);
struct sock *sk = &ro->sk;
if (!net_eq(dev_net(dev), sock_net(sk)))
- return NOTIFY_DONE;
-
- if (dev->type != ARPHRD_CAN)
- return NOTIFY_DONE;
+ return;
if (ro->ifindex != dev->ifindex)
- return NOTIFY_DONE;
+ return;
switch (msg) {
@@ -309,7 +308,28 @@ static int raw_notifier(struct notifier_block *nb,
sk->sk_error_report(sk);
break;
}
+}
+
+static int raw_notifier(struct notifier_block *nb, unsigned long msg,
+ void *ptr)
+{
+ struct net_device *dev = netdev_notifier_info_to_dev(ptr);
+
+ if (dev->type != ARPHRD_CAN)
+ return NOTIFY_DONE;
+ if (msg != NETDEV_UNREGISTER && msg != NETDEV_DOWN)
+ return NOTIFY_DONE;
+ if (unlikely(raw_busy_notifier)) /* Check for reentrant bug. */
+ return NOTIFY_DONE;
+ spin_lock(&raw_notifier_lock);
+ list_for_each_entry(raw_busy_notifier, &raw_notifier_list, notifier) {
+ spin_unlock(&raw_notifier_lock);
+ raw_notify(raw_busy_notifier, msg, dev);
+ spin_lock(&raw_notifier_lock);
+ }
+ raw_busy_notifier = NULL;
+ spin_unlock(&raw_notifier_lock);
return NOTIFY_DONE;
}
@@ -338,9 +358,9 @@ static int raw_init(struct sock *sk)
return -ENOMEM;
/* set notifier */
- ro->notifier.notifier_call = raw_notifier;
-
- register_netdevice_notifier(&ro->notifier);
+ spin_lock(&raw_notifier_lock);
+ list_add_tail(&ro->notifier, &raw_notifier_list);
+ spin_unlock(&raw_notifier_lock);
return 0;
}
@@ -355,7 +375,14 @@ static int raw_release(struct socket *sock)
ro = raw_sk(sk);
- unregister_netdevice_notifier(&ro->notifier);
+ spin_lock(&raw_notifier_lock);
+ while (raw_busy_notifier == ro) {
+ spin_unlock(&raw_notifier_lock);
+ schedule_timeout_uninterruptible(1);
+ spin_lock(&raw_notifier_lock);
+ }
+ list_del(&ro->notifier);
+ spin_unlock(&raw_notifier_lock);
lock_sock(sk);
@@ -886,6 +913,10 @@ static const struct can_proto raw_can_proto = {
.prot = &raw_proto,
};
+static struct notifier_block canraw_notifier = {
+ .notifier_call = raw_notifier
+};
+
static __init int raw_module_init(void)
{
int err;
@@ -895,6 +926,8 @@ static __init int raw_module_init(void)
err = can_proto_register(&raw_can_proto);
if (err < 0)
printk(KERN_ERR "can: registration of raw protocol failed\n");
+ else
+ register_netdevice_notifier(&canraw_notifier);
return err;
}
@@ -902,6 +935,7 @@ static __init int raw_module_init(void)
static __exit void raw_module_exit(void)
{
can_proto_unregister(&raw_can_proto);
+ unregister_netdevice_notifier(&canraw_notifier);
}
module_init(raw_module_init);
--
2.25.1
1
0

27 Aug '22
This PR is to add KVM support for SPR new CPU feature, which include
bus_lock_detect,bus lock debug exception, avx_vnni and avx512_fp16.
Test
Boot host with kernel that having KVM support for SPR new instructions and
launch a guest VM with kernel that also have the support for SPR new
instructions.
Then in the guest VM, we can find "bus_lock_detect" "avx_vnni" and "avx512_fp16"
in /proc/cpuinfo.
And, bus lock debug exception is an ability to notify the kernel by an #DB trap
after the instruction acquires a bus lock and is executed when CPL>0. This
allows the kernel to enforce user application throttling or mitigations.
Existence of bus lock debug exception is enumerated via
CPUID.(EAX=7,ECX=0).ECX[24]
Known Issue
N/A
Default config change
N/A
Arnaldo Carvalho de Melo (1):
tools headers UAPI: Sync KVM's kvm.h and vmx.h headers with the kernel
sources
Cathy Zhang (1):
KVM: x86: Expose AVX512_FP16 for supported CPUID
Chenyi Qiang (5):
KVM: X86: Reset the vcpu->run->flags at the beginning of vcpu_run
KVM: VMX: Enable bus lock VM exit
KVM: X86: Rename DR6_INIT to DR6_ACTIVE_LOW
KVM: X86: Add support for the emulation of DR6_BUS_LOCK bit
KVM: nVMX: Fix nested bus lock VM exit
Paolo Bonzini (1):
KVM: X86: Expose bus lock debug exception to guest
Yang Zhong (1):
KVM: Expose AVX_VNNI instruction to guset
arch/x86/include/asm/kvm_host.h | 20 +++++++--
arch/x86/include/asm/vmx.h | 1 +
arch/x86/include/asm/vmxfeatures.h | 1 +
arch/x86/include/uapi/asm/kvm.h | 1 +
arch/x86/include/uapi/asm/vmx.h | 4 +-
arch/x86/kvm/cpuid.c | 6 +--
arch/x86/kvm/emulate.c | 2 +-
arch/x86/kvm/svm/nested.c | 2 +-
arch/x86/kvm/svm/svm.c | 6 +--
arch/x86/kvm/vmx/capabilities.h | 9 ++++
arch/x86/kvm/vmx/nested.c | 10 ++++-
arch/x86/kvm/vmx/vmx.c | 44 ++++++++++++++++--
arch/x86/kvm/vmx/vmx.h | 2 +-
arch/x86/kvm/x86.c | 64 ++++++++++++++++++++-------
include/uapi/linux/kvm.h | 5 +++
tools/arch/x86/include/uapi/asm/kvm.h | 1 +
tools/arch/x86/include/uapi/asm/vmx.h | 4 +-
17 files changed, 147 insertions(+), 35 deletions(-)
--
2.20.1
1
9

[PATCH openEuler-1.0-LTS] CIFS: Fix retry mid list corruption on reconnects
by Yongqiang Liu 27 Aug '22
by Yongqiang Liu 27 Aug '22
27 Aug '22
From: Pavel Shilovsky <pshilov(a)microsoft.com>
mainline inclusion
from mainline-v5.4-rc5
commit abe57073d08c13b95a46ccf48cc9dc957d5c6fdb
category: bugfix
bugzilla: 24367, https://gitee.com/openeuler/kernel/issues/I5OE1W
CVE: NA
--------------------------------
When the client hits reconnect it iterates over the mid
pending queue marking entries for retry and moving them
to a temporary list to issue callbacks later without holding
GlobalMid_Lock. In the same time there is no guarantee that
mids can't be removed from the temporary list or even
freed completely by another thread. It may cause a temporary
list corruption:
[ 430.454897] list_del corruption. prev->next should be ffff98d3a8f316c0, but was 2e885cb266355469
[ 430.464668] ------------[ cut here ]------------
[ 430.466569] kernel BUG at lib/list_debug.c:51!
[ 430.468476] invalid opcode: 0000 [#1] SMP PTI
[ 430.470286] CPU: 0 PID: 13267 Comm: cifsd Kdump: loaded Not tainted 5.4.0-rc3+ #19
[ 430.473472] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
[ 430.475872] RIP: 0010:__list_del_entry_valid.cold+0x31/0x55
...
[ 430.510426] Call Trace:
[ 430.511500] cifs_reconnect+0x25e/0x610 [cifs]
[ 430.513350] cifs_readv_from_socket+0x220/0x250 [cifs]
[ 430.515464] cifs_read_from_socket+0x4a/0x70 [cifs]
[ 430.517452] ? try_to_wake_up+0x212/0x650
[ 430.519122] ? cifs_small_buf_get+0x16/0x30 [cifs]
[ 430.521086] ? allocate_buffers+0x66/0x120 [cifs]
[ 430.523019] cifs_demultiplex_thread+0xdc/0xc30 [cifs]
[ 430.525116] kthread+0xfb/0x130
[ 430.526421] ? cifs_handle_standard+0x190/0x190 [cifs]
[ 430.528514] ? kthread_park+0x90/0x90
[ 430.530019] ret_from_fork+0x35/0x40
Fix this by obtaining extra references for mids being retried
and marking them as MID_DELETED which indicates that such a mid
has been dequeued from the pending list.
Also move mid cleanup logic from DeleteMidQEntry to
_cifs_mid_q_entry_release which is called when the last reference
to a particular mid is put. This allows to avoid any use-after-free
of response buffers.
The patch needs to be backported to stable kernels. A stable tag
is not mentioned below because the patch doesn't apply cleanly
to any actively maintained stable kernel.
Reviewed-by: Ronnie Sahlberg <lsahlber(a)redhat.com>
Reviewed-and-tested-by: David Wysochanski <dwysocha(a)redhat.com>
Signed-off-by: Pavel Shilovsky <pshilov(a)microsoft.com>
Signed-off-by: Steve French <stfrench(a)microsoft.com>
conflicts:
fs/cifs/connect.c
fs/cifs/transport.c
Signed-off-by: ChenXiaoSong <chenxiaosong2(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/cifs/connect.c | 10 +++++++++-
fs/cifs/transport.c | 42 +++++++++++++++++++++++-------------------
2 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 36104dd8eb4d..976aae1eaf73 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -443,9 +443,11 @@ cifs_reconnect(struct TCP_Server_Info *server)
spin_lock(&GlobalMid_Lock);
list_for_each_safe(tmp, tmp2, &server->pending_mid_q) {
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
+ kref_get(&mid_entry->refcount);
if (mid_entry->mid_state == MID_REQUEST_SUBMITTED)
mid_entry->mid_state = MID_RETRY_NEEDED;
list_move(&mid_entry->qhead, &retry_list);
+ mid_entry->mid_flags |= MID_DELETED;
}
spin_unlock(&GlobalMid_Lock);
mutex_unlock(&server->srv_mutex);
@@ -455,6 +457,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
list_del_init(&mid_entry->qhead);
mid_entry->callback(mid_entry);
+ cifs_mid_q_entry_release(mid_entry);
}
do {
@@ -743,8 +746,10 @@ dequeue_mid(struct mid_q_entry *mid, bool malformed)
if (mid->mid_flags & MID_DELETED)
printk_once(KERN_WARNING
"trying to dequeue a deleted mid\n");
- else
+ else {
list_del_init(&mid->qhead);
+ mid->mid_flags |= MID_DELETED;
+ }
spin_unlock(&GlobalMid_Lock);
}
@@ -818,8 +823,10 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server)
list_for_each_safe(tmp, tmp2, &server->pending_mid_q) {
mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
cifs_dbg(FYI, "Clearing mid 0x%llx\n", mid_entry->mid);
+ kref_get(&mid_entry->refcount);
mid_entry->mid_state = MID_SHUTDOWN;
list_move(&mid_entry->qhead, &dispose_list);
+ mid_entry->mid_flags |= MID_DELETED;
}
spin_unlock(&GlobalMid_Lock);
@@ -829,6 +836,7 @@ static void clean_demultiplex_info(struct TCP_Server_Info *server)
cifs_dbg(FYI, "Callback mid 0x%llx\n", mid_entry->mid);
list_del_init(&mid_entry->qhead);
mid_entry->callback(mid_entry);
+ cifs_mid_q_entry_release(mid_entry);
}
/* 1/8th of sec is more than enough time for them to exit */
msleep(125);
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index 59643acb6d67..eb76f7a59e50 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -85,22 +85,8 @@ AllocMidQEntry(const struct smb_hdr *smb_buffer, struct TCP_Server_Info *server)
static void _cifs_mid_q_entry_release(struct kref *refcount)
{
- struct mid_q_entry *mid = container_of(refcount, struct mid_q_entry,
- refcount);
-
- mempool_free(mid, cifs_mid_poolp);
-}
-
-void cifs_mid_q_entry_release(struct mid_q_entry *midEntry)
-{
- spin_lock(&GlobalMid_Lock);
- kref_put(&midEntry->refcount, _cifs_mid_q_entry_release);
- spin_unlock(&GlobalMid_Lock);
-}
-
-void
-DeleteMidQEntry(struct mid_q_entry *midEntry)
-{
+ struct mid_q_entry *midEntry =
+ container_of(refcount, struct mid_q_entry, refcount);
#ifdef CONFIG_CIFS_STATS2
__le16 command = midEntry->server->vals->lock_cmd;
unsigned long now;
@@ -135,6 +121,19 @@ DeleteMidQEntry(struct mid_q_entry *midEntry)
}
}
#endif
+
+ mempool_free(midEntry, cifs_mid_poolp);
+}
+
+void cifs_mid_q_entry_release(struct mid_q_entry *midEntry)
+{
+ spin_lock(&GlobalMid_Lock);
+ kref_put(&midEntry->refcount, _cifs_mid_q_entry_release);
+ spin_unlock(&GlobalMid_Lock);
+}
+
+void DeleteMidQEntry(struct mid_q_entry *midEntry)
+{
cifs_mid_q_entry_release(midEntry);
}
@@ -142,8 +141,10 @@ void
cifs_delete_mid(struct mid_q_entry *mid)
{
spin_lock(&GlobalMid_Lock);
- list_del_init(&mid->qhead);
- mid->mid_flags |= MID_DELETED;
+ if (!(mid->mid_flags & MID_DELETED)) {
+ list_del_init(&mid->qhead);
+ mid->mid_flags |= MID_DELETED;
+ }
spin_unlock(&GlobalMid_Lock);
DeleteMidQEntry(mid);
@@ -711,7 +712,10 @@ cifs_sync_mid_result(struct mid_q_entry *mid, struct TCP_Server_Info *server)
rc = -EHOSTDOWN;
break;
default:
- list_del_init(&mid->qhead);
+ if (!(mid->mid_flags & MID_DELETED)) {
+ list_del_init(&mid->qhead);
+ mid->mid_flags |= MID_DELETED;
+ }
cifs_dbg(VFS, "%s: invalid mid state mid=%llu state=%d\n",
__func__, mid->mid, mid->mid_state);
rc = -EIO;
--
2.25.1
1
0

[PATCH openEuler-22.09] Add openeuler_bpf_scheduler document for openEuler-22.09
by Zheng Zengkai 27 Aug '22
by Zheng Zengkai 27 Aug '22
27 Aug '22
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
openeuler_bpf_scheduler.pdf | Bin 0 -> 1585250 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 openeuler_bpf_scheduler.pdf
diff --git a/openeuler_bpf_scheduler.pdf b/openeuler_bpf_scheduler.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2048395a0af6322c8b42885ea9cbcc719d13b3f3
GIT binary patch
literal 1585250
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⋙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�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π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	H(P|C)2pyc|z-
z8HK&y-i5Iegjl<w{!HK1yr`fO0uUt+i6hJ*%8~kIveE#Mtf#+j`5=K|%cac1UuMVb
z6P9;%TGl;|4!@?>yy+60XHp@{VrI+I6P_1O$!h4iQ9UnZ39gt)%jA;U$yV;li|3nU
zK(%YhsTh3%{Jj55t})T8xXzMQjzQ*rOE9)(E26l%ddtkJ!#omAcVDK)7p%Z*3ndrP
zD{QG<Gea>`XS>=-1pz@Y4MF+5u}h^XqgGpi@03A~K*x|hg?Uiem#3Z<+$!Prr65XN
zUmQI!cJcv51gqC|Ao(hTqdYrrCsNLj{;|_BJ|Dn`sDdJri2f>;j)m5+&A{B5*w`q@
z!RK|Gjf|uvy1^>Gb<;4?XAl+=EN?}lpd2)JM`NUzUrZ)oS^vJcsgJyMSL}WNhBPRh
zwi7qUA3hUXOZ4j}tum3Z_BHTLW;*G1>I5o%_i+obF-(A*MXQ_~Lx<gxiO%S%T}YJs
zpJCw2COccsCVQa$=RWsyuiiQd(zQN}lwESYWoL3_Zs|K~*NC`fSETY;?fAZE2deDe
zI+;_%(6v2u$cO;O+hZRtYf7%oY`OV8u1n2|!?9@7=KxMOVhK)H;tGP^-!6#>V}T^g
zpmC7hnxc05JDP{Hf#DU~Wh1|;hPdCi?%(PM&BPdXEc2)lhLEoPnimudJM@-5zrtsT
z@$$FQ=h2r^X^)()HidBn7L5?9?5?NGobiz+y>cxjTRN>@uM9E)qOsP^=-f#AvGosn
z?`aXOAH))JJpJ;vZY9yrxE~WJZbFP2R&WQvTPq-Ek-r3-_5>6R?MP!c8hSS(Tliz#
zL`1RtO1rK#xalY)bGo{aG3(*XmyL*ca2Qi7DVWDzxSPyU?MjwBHXAiSY92NBCfYh%
zeCoH|f?8*3siDmSgBV+m$u1V3p;nzJ*LT|x#W0pV*^C%jA~HYwD(%R7sVrCOT$JBR
zm_~08#jvX~cv!t<jAGxOt`N+4`F~+`r{sC-h$hJZ2OU(5>sQq@mKqybbC^{18#gRZ
zxR0yQh>6|jQ3f`}xa$C!#U`n&+otBLFMscfiRvD=fGuBWea~37#Iypw*-p60slKQ>
zZlTAC#SJ0TIDdRxft<9)a35eu_qc%L6HcYOxc`wxxxC5r7-e(pceY<pQ~G^~JE+Ue
zf@ooJaG54R@k-FrhHzK8ilg8w+!JsMqU`X(X$&xMYWL2fJni?ORLqrc<Nd72$5KQ-
z<|j#6R*-jP{j`Rpa2;E3ZTHLN0V8{0byswu1kycpbx8UiT6JBbgpafOgugz&Z*HdA
zf1WODX;Ur7^=xL<sqG-}VfdIW>uqr*bJ}Men-=7)Y0y1+J7}hJ-*MBju;40@m&=#Y
zL~r#R1;LjD)My<QZvsfkX_xhJQ=CzJ&mU@(bv8s#iNd5|Lw|LP>hK4fj*UG8oQ3md
zxexXo@73<X46aoJNYB6v2XZW=8k!EQjMGwO8f`XoW-AFg%oop78ymE`x_U|h1la5I
z3kO^lk!F)0Xyr<D`k&C-5PxI0xLPq@g_>YU=7sf(X^9*qR3nZGPvYs7JGHm#kTPD%
z`4>0u0U*;^B0dy5N9GS_YHN<bi(WA^j|Tw1OnqX8=p~fY$#@faL7AO&q~})Tq{04S
zT<@(u7sP$1b2W7r^@yXned<25fogm+m7!WZ({e4YP3mnmZdKdD`%^Wp&CuOv%hT4p
z%zQ8Pc#MP8{jim#L$O0oqO{m)j8qc|+oMUJ!<C)=FpR%S1l=0(cn{-%fw*LM_4sr2
zAGNsYpYz<N)VNw8CiJ+>NAlI;Q|r~ZdhC9mz4ZMCs_6I*^?#EY`e)MU?|6l#g0Z!k
zi7UfD7@)s15eynurk`yQnLZm|GDw<PSy;M$@<vPyA`Z3=&MJ;ZCT0wxX6{xdX37%6
z48m5fE{bN(A`W(r4)$jDu7sQnQud#52}g&&`YaNf8`-*;G5il%0!~(ze-TK2Z9;0Q
zEN??PHZi!D+hTz<Y(i7lR;rzCwbc|&RSxkf+KAcJz%<3H(^*&L@AZFyPfQApvo#wH
z7laDMk{l)O`bj=2?(~LJvps$5a}%24GR+4`dzj6mtOgGB|EHfTr$p(J=v<ILfAjYU
z8N%8-8EUGd7&JblKaT|>EW96gsRcx^BukT~M(0BR<Iu8D3T>~Clfi)|gUdmRL$y&H
zCuoj8MM1cPjIJ*cRw=kAjS67;chlnxBbn=eYCz4>&xOqxB&GO9D{mJ9V?jMXs1_)C
z6e))*{&B?Og*bqMd#3F7g+er`C34>5Mzqh=9+kKLzpX$J>Kx>GJ`_nMfqC;w*1Cbj
zZ%t|V9IB<T4C2obS3-^nQzS<1<eVv4?x9SVri4`)b;lLJf2x%Dt-@U|mt`tvxUS@E
zhfpNUMdkhy8;&@C${(-A%2q~3M&{@&F`07IEHp71`bX%)-wqUi=ie#~_xU(&P2Um>
z9VB}r4oM$HqVjqCnHLx!Vyb#~IiisJw2w-4bMSD^^KC8~?PtHFW^Hy(8NQLMd$EE$
zX+kU@!m=l7C_0z(&%E!wLbT|RVBoJ$v%XfY%Kon5fzzE><KH~nwuCIGd3cyhIh9-2
z^j*0_2hb?J_x?-*f}VfMzm45~U)F`%b|y35Pt|OV^c7P;{8JX}tBq(l#dmGtIwg1t
zCP|eBCypvc_J9EWyBw&Xr*AcM(`dxjx}5t<@-cEK$o#VqsDOQ$#BuAA)5LH;x8^SE
z;E-6mMkTVzsWL#S(wj|5cHW#FldS9v89&7i7*AFs_hLOKp{cSpnb`Q)hR&mSgQ)@n
z@=T~*<T~b^4f;qoC@r)A`|E_!gA{#Q?IPYe<BAuFV!6I062jM2t!Ng^THO&x)HW7l
z>=im(<7+?MA-W<IK62E6fV$XvB$bJh7wpEU_85G;W-@v0J8(%5)u^q#Ki9jWszQ}U
zrXPA*>5w67GnGw}Y$5C8s_{?y^=)fQ@awmiXgIQVuWH~T&G9uWIlJ6<wULIi*5A#4
zE!_MKd3FkC+Md^J#MJ3ln))Cv{f&j3XU=SyljZ0gX^{4S%02n7b5tZn)9haicgDW`
zbmbYT5}A^5szVF&?%biJq8!KLr)sTO_*T0SR8g(xefrkh4h<CO;q-q2r$AW0!ZT&e
z0Y96g{!9J}{pC)=qnKR3IQE<q0i;EK&^aijSkZF?004kbg;Y`*^C0o`MCZMl2luNV
za!@^ZW%LCEXT{>bA~-j5jkA<n#-1>%xzx;3)-Kw6=wDt10KmIQ<y6c$5jgFrKdH%%
z^vMo%^5u+U0rJb7Cpplsg|ZYqM*si-`0uNfR7UwEJI=VgR`<{rox@u@{PvUPZ@+3B
zx-jk{g0o`Df^)+NOa*5ZLvd<)<Ni{9Mc&NC?50vPDUzl+wp*&C_?ZI0N9Lqg%0!2H
zpF&mhoaE@Ek6v@n2LJ#7fOjMoS01&0ys+QNB^F1Qbv&?AXa8EA{hPFZ+u7le(|81D
z1>-&NYA!g78V6^QD1XuF=2A0h&zrMUDiA1O82|w9CMBOg_hevAUY>S@G418^sYe(;
zUWjaP12F&q_|GUUEoHOWLZML66M;`1pD$dp`0DI2=jIJQxuEBf#YP90>+SzhXa8oM
z!zae!RBZ)oE;whXb`qy$)azPV$yvR*$uqR&$C`6T+f<fv6|@cjfOmE5aq?u@L1&xa
z{WmyAEOQE(>`0$>lwl)_&+)mqKiEe=Dy_=Q75GP&-tgv}yT^98l)dktEXT{tf86uj
z{5WB8+`J;OqUQ(z9}pgock|{=S65dzH#Zj-m*C)FMb8L6X?%fr!AAGVvo70AI5&Iv
zsqd_hE$ZyB-0<+4jz^sq->gDzRw#aRN1RnViRuUE!mais9j7;ynpw))tbQXTxp|6O
z1pvUiOU~oXIv!vnyQtZPkygSJIR`M8{1rOUfi~eV%{QS?(G!Hms{e)%ilhNCrAIDj
zFWZ+o#x~w^Zj{l)Q0>vd?S}<^H6%b~c#!Ux5R=JIt>;Hi+?ZhNkap%)ZftV7Vy6xO
z3MZ9H&z(DGZ*RYT{rU|XHtgTO-`UwYEG$gX^MW@feRKb-Ve5|k=93}8d5*o$$mMs&
z&bu;Y>V;Y3&d(p_WH;r4_r(Z)so<^WR#ks5@OF3}p4rU=XK{LFO}C;w2U*ReX0myX
zg|)buJBa}Rd_;~sOr~xQ=18}9doFJ&t&m&_%3gFj#K|w?)!TwX6qbseALK9GlWa9N
zQstY#)_obREa^(5`p}j7GL-tgEb`onuGE`OUTxjqU+df8!QaP_1bv@TAo^fF7W38f
zX#6+Nzdr94{+;=L`T+b3A|oTOT)DDq*RJos|Ng;)2VZ~v^??HioSd9QB9Wq}1}!6%
zmc+%UU37`E+Y!8UMZo;;TT;REzYpKIMbiA`rJ}O(JpX{i<0qf4+ZecLNehRSSLlMp
zDgRs~gJinh4qf>AZ9|r<h}*ZH6A~)_&Bzx@<~jxs-{Lj=NB1#H?=D|+*ZuZ0UU}_B
z1k%dN;@D@Ye_x2S+Yz*6dCQj^wc}^01Q(sXljeeRhMJK$BTL?=#NlLiGpU(Lf^)}i
zf{19vt^xqyy@+R(&p1Y1)V%nw(899X|4$Y0#330tRr|vt5=$>V%$u?$L2pbj$;(QX
zG%6qu@K+l6x*~l@|K2o`pv@+SF8(FiGq|X{Lh^poTne)yA%mZg&SP<!{R=#cEl5b`
zlWvKb{FdyTFRY@*%;ZPEC@(2*VvD>YaeO+D8Zd*;DXDzzfJJ3hv`8*Js+<v3CcB8g
z!I)AOM;I@gVNzB_3no}Aw@{i}Bqfg}&HQ&0lft7%mC>Wi8PR0|oIVc<^61f{goK3M
zyLS&8Hq6e>ZuIEUPo6wEbLLEbe!ilo2CpHNN^?EEg1=kfZqe<rY3E0#ogbQ5w6Hu)
zJ9`fNTEc7M*ORccH2I8^-?w8tOf0BjP2ONwdHI-iiQ4uP87kiKD0$wJO~{TsOgcwy
zwi9!?g378{e?^aWh@NvO$n{A|Y5mBY<L(hSYp#cR*EgM;muY98kz*?Hj?lYl_J}hH
z&Y4Woq4d=G?9X*Gno7-CBsi-X@t)8Wy$Aq+_vWz2i%AZ2o1^|wSq*R6fYY2l9FZ@|
zm;IV-FgB!h9|m=Bxg~kI$pmdhCnFe53=NIrzsKp3KstPN?9in#L*_?a_ipwi|J4pD
zLl;GpZr`kk=9IiXJznuF8nPg2=;D|K_AgjPO>{VMJ&){h=(3oh3!+Zl;=Fc1=Z6Ko
zZ6Yn_#PnYl(`0(x`bXxFh0#No#Ejn%*Ybb;{;?I~S0|2NpEQ2ei<`bB@<x$ZDilct
z!b*uO&@b7SY&kR9a&C;(yr`rs+>z<SB@&4Q0zqZv>)(g@82S48`uO<l+_`hfk|i5A
zZnUwn;qiE<PoFL;D^v8;;8iNv?8r6i9+{HJY2jgF?*4}L(A3=fn-PtJb3t&3|M-bs
zW)=@kEgElizhy0C^VnVXWVFO%$Gw^wr^yXT`IvQ%Shbob5U;tL?h=+)%&Ql2c}!;b
z%2khLOMcV!k|N(L+W3hG&hMz%BhKo^lKg_QD>s>6>NS~~Nh5iw?D}o_INXb_B`Y_T
ztlCt5^;XT`e0m^hDPFm;<k)HQW%1z?#j7?IuG%C@NNPM2uJcvWnH1lLE^jG4=OS<6
zx?HOr)5BBVSV0f0X_OQeagYC%KlMA-pfT(*(~EcfB8ZA@Fuou%rg+;P@+#?*H*RL}
z&R>Pk;_Gz?2`9sH>KB=C$scDcxn%{Lb`~^xl~fU_J^0*efd7uz?DA<x86-PDh{X|y
z57d>%`TZA0w(cj3%x{sG>u2ZIy=V(}C9(?MXLj=nE&Z%FO{o{{|E%bNG1NOSQmHhr
zP?()B%&9IxZh_EpVWd)bSvPBjUqlIMA??(w9MV(JIH=D0DM6`=AE{-(C2>kbF)94#
z>7wW9LQ>Dth0#f6leffC9muY`_)XsyACtm+CVREI(gek2)Tm{A3E4|-p>W~uM5=!e
zn!%LN)NDSBngF%ynh-sBMT}BcKc((|<}<@N#Ud_GQpT5-RlF>I)9)p1KAxsz;X~H-
zSx=g0D3$O_$|WlgWqfC!`rS_{SG@{I%kb5)O5Lcbwzi^$$A6+BB|I$5cIEO7wktQ;
zuHJ0Bnmle=vue|t)v_W_R+3u(<I0`ex3jXd_wW5>@pto&IUZ?lw4$P-LkIT%ynX9!
zx9bgFa{2q*k1Li^J6cPPzmb&fD(Z1f?c>^&EBw4XpN0hQ|7Gv5yX{?FT!cb_NGRO7
z&2Gq`0goO&AmilbWS=~Cbnot;T`#!^U!LYFZh}Zw<UvH0L|pT(V@y=!{$KVS+V_j&
zZ@+{E1-#$y=d~*?YgR5N-^T5mHm1BtY{@2tg@wnDAOGp6pPZeYMIzDCrAv43-hJ=h
zz4tpYc)!Y1Qv=42_c6D4U~1-JYWCpG>#>=+@9^Obf;02>ohLned6}8Z`!pW8g)QFZ
z7SCkC`Ngs0-m*zHuI7gFF*8rUdc9oK@HZ<rK7s!2DDQVzvZt9jV*-NnyW+V&ZZbG$
z>U1tX@@J-sVP;dQIbC*XbLpw`HRJHT>AA|<1<Kl4=6x&6WOrPVN^>X7DpJ-dRMsJ(
zm^9?{|CW5oQP$>r`8A$N-lEkd$~vS<kDrmZuxBnVR@TW^*3Q&4t-0X3XwSjwZm0j2
zw}?~IS$&4*x1o9#%8KkFyRCldnSW{qFLpS|ROyr_d#OP7NS<e_o0R-{uBH!}B-tHH
z_7a(=y!gtxIU}ct+4*G2C9)Q>7nZCzvTo(dI+=z&-|No=02J)N{TE{o`Z@V!zP>B`
z>l`j+cN!nk%8IVk|J@?9EH!^-NngG%si5?|ohvNQ2OE#2QI}Nr^&hY-T7IOCFQ}Zi
zD`Bi{+_<$=ja~D6jO{b^QNi+K<*f$?3|<y9+BR1H>bNy=BUZ++OX`hGLTjg~VbrQE
z>A(J+^*og~V1CSyW$`uDe?gSi7}<b>sHJI-4eq}%s<y+@_yKcb0%E9$dch-a?8@h(
zZJ+6k525-G@K+lZJnF}o(LYiX7_ltoSt@m6c7?FgVs^MvKdOV)xL}gXr)_&N<EIp=
zcF1Z=(xZ@uhiu4qz<NnEbuzrQKZ)DreCibN>^wo6p#jtd=H2{$znVi@CTx06^&vlk
z!Tt&94G;H!A}4p;yK|?9g{i55o*5~_j^+k>76!Vc%nfyF%2;1}pmpEm#DuA1$7r`}
zH_yhVxzVz-v-<Y#uJP3uBosGzY3qiyojRzS8)}=8F%5J(Q#;Z#H|S_VN}oLHk;g8b
z3|!8i<(HTLYQM|8lcBMm&Mv#Hd93Uu^XF-*w!M1gQp$^j`Ln0%XsFJeF)bpz`u17U
z%F18uf1WmB+>EJ{W=@+lbLym7Qzp%tI%U?>sk5d{nK@;$&7=wIY*%wjOXd9w3pk7B
z&DK$Ar>D|(!pIS+$;t2W`<a%SJZjhwUDft_>MHZ5Pb(^T{Ye)@e0;o<laq&sM?gS;
ztE=nTvuC+nd`8TNi_c~Uj2+`+VgAU>?5)eo+>BN~IJ3RHyt{QH?GIn}dDv*H7Pk0W
zm_N7QMaE1ze%!a2c{Vqcx4C)nteI8yPw?PnWzmNZCrfU;Rm<y%xw-#D1m}0f^JpSC
zQ_=Vf-Sp3OnmpE=F1w9((JzM^43%rMkhGK0%5U8#UkabaXSCI)S_Y1;lKq%i!zSdA
zWUbtx!iUj#Ci%<PQJ-l=^7zXzn>YUlmTYdMF@M=wd1LW!N95hOXPv39rBe2+#U#v<
zsb*V`EZDGvY?Y<kh1s!d&6U?>*KV=e=wvE)AjKLpy<q)z*2pPY@>9(}*X6lCs_u5>
zCQCL>mSIo!^hNS2oW7{&H%CcHY5u}h`LdQQv%d17n3hAymj$HOZF}!Omye4?A}J~=
zXtD|mIU-RL$8n@mX;~RJCp$AfJ|_HWU|@hRgYHGAdHOS+1P9TgqC!(sUz8LVzUjGP
zWo4yg!>~~QCtmk&xm~(><Km6$7f6vO4<ERNhA^_TGbNHY_zRiKE#Yw3@+v6ED=5e>
zlvg2#tWNSK_gEm`2Qorh>I<?uG82D)Z?a@kfdM|@;X(0n(JU5IQ1ND05yJmSWEOX#
z1AXJ=XtCtKd3NGQN+_<{b1qB$n?Nd)zGGy5nVOgVn$(hWq~Az+h16`uQxY3VPCR=z
zSKe4sCjOixM?>#cCO%a4q*rHu5^}8=)Uj7H-|Cl4d|DfMTYn$L<<<M=cf*@QUCKR>
z8kRiwizsPj@T6uFc`0@FZPkO;symH5QqODJjl5eKdH0y{lmyr+D%YpB)_X!aC|NVA
zPg(Eg*UD73YZLG8v%+&_$KMk(`Cok#Bv01Vk#TchGD)h)lioB^t-AOgxX5g<{Lnb=
z7heZZoAjn{I-V|Xj7{PHpDfO|>dQENi<OZp7`7@#9?4q|^nVyw#LN?9<qMhlB4(bb
zjQU0RNhD`Bi{<C#>HCB#KUvX8d3pK0Y$1={UXKF<8QhYh8575KR8v_vXIAs0Wq;kL
zm!4|7t!r%?ycG8=*8AZDAFqerPagYvdHQ*J`FeWF%FFLDDXPWi(PLIt^-t6Nw%a!Y
z`gPJ&pFeHN=)nWERobpvym0KWAtrj-JGX8wE3JJ`hXiL5Q9G)u7-*{LskJvySJ6{%
zM{=vamWEcluk_VbbyeDp9X6C(T)RnTTFT_nBMmjx4YV{C&YQ#KmbUQQm6#BJ*X_pr
z+ivc6Z{5Eud%WXz|IV%Zx8>#L<#B)Cj_u|;+D0AJJ87w}U9rsL&Mo&lw@KY2b(gC9
zcW!%7b?g4Eo8F#}D=MfrZHkMF!@|Pobb4Z9qF9Ve?mt{oi6nC65A@FFp5~^W7N)h2
z=BD*pEMC*%ZDB?qSsR>rnVGbK);<<y%?;~iVd~r2jMlOW>0<GG$96Jo(h<jyuALja
z>et!KtL|j#@9v3(nNPny0#5CFJ|yafEnGl*?UG;D;?vnIaMA<>=XcaxaFz$;=038S
zvu11Kw}S=2PqV)2NTu2-^T?M4cDvcK9L>A!F7NP`!TC$Qj5gZLw)z!8)Z3d4f^#Le
zEYq+jlO);Cbp+v2RkGWyi_<cM(a+?ANGk+Pt6|iwzm>HM?Cj+o$bWa7b=z`ejX7VB
zlgj=T$%8X>#Ci4-dAHiCs;YS||1fK60;kT`>+lI<vvX?lY2zv^tarXEpU+E7c;@Zx
zar@S#JGU?0yL*My-8)zA+`dfe?j2HB<c)4OoqfDLn9TIo{sl#Tq$G8c+)c)mZ%&@n
zq-J^Da&sZ=WEYPg-C<^>w`5)A<z?>ouail--K<?s-IbE~{MtdN^E2~UBq@`j$cpaW
zb(IyhWO>OJ>w5p5t8DqMkrBZ>9zG>U!N^bTw|j|Gk1&$i_*r~F{<+U?(}$)c3y<$B
zHRlz*@~?=u`t^S0aXyKMN`3t;W>N_>DT|*YyFb{<gUR39XUy0dH-Be>@wBH({bdX3
z%P^b%bk6pKS=-{s<DBjBv+Uy5JETM>*LxeSQd%`^WsFiE28p_+Hcv^|PiFGh9!%Qw
zd+Mg6udmHVQ};S$l1M8b?Qsa#c3+as*7#Nf0>~V`7#6ttK=PJjRL`IONDGat{$uiw
zo2*uSs7Zb{*njlu*a>T&jaw5ter@ciRk3Y`1X3y3lID0RyTS68?n|QH*%;v8c4$CU
zQuU$a%a8I~$=~i6;BUDga^%Vw_0hpKSElz{6!q=u=VR9<k{Y%2`3;|zCaI5IYI5?8
zOD?ysUXhh6sasdC)|A^ddAZ)Y=IZQph6=@MZAT9sbnTL}tILIJ7oD$Pyl~C=!c}Ky
zS7&F^c<R`Z9wr8zG}We$A9vNorMRf}GI(Ea?^DNrKYjA}pMRb>^T(e~C;vSC$H~8B
z<#bY3Cr+F@b?P4{r?aR3Jpb3JOXr<7{jkDZyMvLMs;Q=?nYNaphKjyg`>{g?J01J|
zqSM*GPW}=9jQZ#S^4s$IRoBA@_BkH-ZPeg_`f4hJ`t&%sZ}0C8hwQg*?q;ZOtf6LQ
zX1eZ&6`R)DlG?cT$88(eli=J*OT$=O%Sc;u&eTbE>(*>u^W&D6MS}lk+tpjvu8EF_
zsQc|YdF-f}fnMiMdgcZlUY3r9J}F(Q40O!(I+$sylQPy+HPTQuP;YOht8Ly<*IZxM
zOkdaBK-<hf+nn_8sN2;*-&|LB>X^|5xCz)tCD;8vy^GnC&ZhOtq*05h_bZFm#f&jx
zSS7#ucU{cJb^c8ZTU}(2w0@T1-!FJ(x8?bEyXQOXs7HD2cv*E?61Us2?ogMq=6QK0
z*6kzf7Wu<6pI+U3o7tC7XH!3`o_uEQ8<N>qT^U`?-+jqs6+sinAvnLIa`#8g1?T2c
zGkea`Dq+*tg0W{UCSf^4&8Q+UG|QqNd7d+5ob+Yqw+PO8q<?2?G6;u6+A-5fW68l|
z^^Q1;L?joJVKd3x28}6mzS`j9qy<s2>7VP6oo4EGmauDoJxZ848CqtfJ-w~ID3QA6
zx;8k^TKtOd7-!|i>Uo}YYUy|Rzb-y5n&iI5k@>cpi--G-+RLCMV$zdjLy{9o8f_44
z8yD#yPtzoIR#rB9Y`3t0L#KO^TuegfYsVx-GBv62r-841SNZAF05a8^WG40B6CnAQ
zl>5D_+055`K2d&t?vp3(<eT%r<AyBGyU4d~5X0q*CGnh0%)|W}iP$;WI7wK+Leq*T
z9H#pv6exNkP%A8+-_0gWsTZ9(O8d^KdFd}N@?V*nrNXy4T~kt7HE0=iqH=31`akY@
zPeO|a&k3KiD>*TPpIao(Eflj0MF|-^GaKrVv{HZnHiP_c`4wd5iL>$qoMI8DL{!8T
z^C}vi>Tu*r_W$)~$nR#h<s|j_k7BX3m@6g;x}dZLRU#_m*N!O^Nz3_?KX0;>tY~Bo
zU1o<TGb@;R0v1Oo5LUiih_wHbDC$P#mh|DPW71hdcCk3ONR-JIMI@AIjSD8hzm*m3
z(97T~e~W=0S*rF;Aax|YFJt!3+KWu*{G3>Qo<J`eb@{WYk5b<{KanneN+#Y)#!p%q
zd4F!rc$)C3+$-#gi?gYoj-jTyu1Y(7byedI8U`9FdMa&6_%-UFp{LePNA)Wm)wX)=
z+v&Fbk|aShZ4L60Zu@q6swBp$>$Y!CHq=#VZ=j)W)IrNYlZ>Els;xy@x|kThNJyyJ
zk==&%hSWh}RXt7eNOGknb--6crIVJrp@y2FhH58Gb<$!;zSPn%)YKsPx1&lsV=Z-K
zZFLhJO;a5$6KxGLIMuGEVxXm^r=j)Fx$||`A`y$$EL)=c<ri~pCRgyOw;Y)nX#;w8
zH&CYrCmFVrri!5!*?aqr8f3BUjkMH^wA76>)r~aNI%%kpM`I0jc^PV|8EB}PckJkX
z=Wg9y965A=nxUpjPcy?|{Vj)C_og2ETYl5eYM8avP;0AU{rY^<ug`GnzTe2Jf8U|h
zOMOT?c{0?x_t5^mhgn+=>e<y?Tgy;Qb>i@0oV<E}G{T3BI`(QanbFnMr;AB*MeAxB
z*xk&xtEr!5H=0$C=89p}BV^K8d2r^&J*V~T?Az36q><j$G=7I2KO_A;E~GFh(0_oH
zUsHP|jkG>J_}SILS;FTBjr*4V$|aLm1G~wVY}K7?OI6*)zHAAw>hW~84TAGK;=M_5
zW-51JPo68~HhU8fL0ClAR~<=)&F(cMt&KKQS(|t7Va=;=7o0N<dvO1`ocXy9b@1B5
zlY8E!UT`LX*Yzf|4R!38bYQj7VH)-*T((XS5?;N)`_uxd8Z@Tf{wgb(eTQeu=EIlW
z7`*0G?F_xHtZ_3*<&B$}J8N-eQE}bv5S$xhFuX{-Z5&ZaBc1kG-iOaG_w#*7A|y$;
zug$g%;<Nkxs}bQrjrUtwSxJ((>_F|6HyxAY(~uB)bEkq!rBV`I<p;iNitLC4TiNE$
zw{MZ>ms3(+b?*_eSdz)iOifQ^=Hz7O=Cbnh*#(99Ma7(w(t;9hVQE<*x4fu~Col4x
zR6$7@r?@n?ps29;Q#s)B!K#!>?Qg}o1U5XH28tE*oY!M^I2FF$Iy;lp+?&4S*B7ro
z)-1_<Q1N(fm9VK>SHF_e9rkC|j8@kEvwxyu%iNz6l)Ctm%y`JT_6WiO=d8~MQYSOF
z?#)<tBt_o%EQPoEXsX?b^i#K34aU6c#nBxTEI+Nfl_kBVLq@J>@h>mFZ%OTavGQPY
zgEtCR?3W!Hw)R&Y6*Oae{PfLnJ5JZW8R&F3mx}7v{{J_?-{)ybXngsZo4KTdV!0%<
z>rD)yj+poGJAc16cQEsWgO*0i@7P8%^-<UA)6`>Ac<SE<ku=?^FQe~*$nhJJMy`yl
zIpW-E5Ou_P%$oQK>yy6wDaDQU30+?5ddbC1Pp6Ba{`%!hNr=-|R~a$Tdc%sPJ&X)U
zh+Z;x=8lbP?bg|DU$=I{56gO+8yje<^zYSe+xj(I*R9*UcI~!}>o>1iy=C>PQ3D4W
zku0pCYT7~FNK51EzE<|zx8>A1Xl1uyoq?Ll(0;uR{c1nhs<)Ab`pSjh*)Ch$se^`<
zh54a9yH7YAI)3=@vBQUsIUG86_~41d2md&HaLVZ6hFYpdI-15hnnv2{-AxR(+O9rz
z^vJQphY#&P@H8~E?pnkmq3z=D^}hUa&eX}}Wz-Lm!{O}PvwNrAmR;NJc5UBczkSoL
z?VEqzwpsRkD^=UJ?%KA6l)W8QySHtnit4;|m)+K#TkT?FV(RYVxZ~kYS{i109sWM^
zXKM0`#Q5i=(o&N%Qpx{mQ%FN%d|X0&Tw+{YLY(~ZxxCMdmrtnY3Grcp{-eJh)KRtF
zgyBO95S%|ACE-u$-A(<vn)r1!epz*&8wYha4IMWk<F7wUA|rU28T_ow<}0frmnA=^
zD8=DGFg2`k;|l0*lKQ*D|6(mEjt7I9+9|!838Qaqa4w+v`oC()CS;JXNn<k4{l$%m
zdgXdEE0|eAHv50EmQTtX1!odYi}xRW^?-Tvma}AOlyqi|m|Ruopx#>qXYytGR~<!h
z3AqzzbCk7nhK?`0d?UMla3=rk%kQ|e2ahG0SAKGMZX2B(l}=@ssJlv*-*&Ig)Waq;
z*kjJX(WIS8g7agas+YkzRrdZs5q0A)?NaicX`?M>)%$0L;M{;vC~&`j{g#_^<9tfO
zW^4@g4hEmkd*XHf-d)!>insL-Jzrw8a~kY7Fu;e5>2|Y;UB7lfvK7hBDai><E=nq`
z3=X0_@p31-AesGHY(#QWd}d~9Zf<r#A*Ynf<qL#DNtLAevpA)~^2+jpDlVt0FuRJK
zEX|IUriWH0(Ijz?#nE@g5!XdwmqZ~Kgn?&;{%3@YQv%u_<WW{<M1kjof#(EKH>#xg
zoO(s_e^IpWZqxrlK!Jju^WQ!@Q(2X^WN%GsZu-Aran>W=m2TxHTML8j-e_)_Y>~;d
zr%L@8pAGWgd?M}aJ+=l3y#4)K_hWbjRA+FHfI^KCfz;vV9<&jwVr%kyau#1>RM2OA
z{WV4eMJ3f<BXEyVWIQ2M$+G&gZW5eN-l+a%=o?Yi+QeJQ%;)uG>Z9D7mdvcZ2N#zo
zF|r9$>PMZYZ9XfUx@NhXpXH(``Ku9$T%#$WN_`lud(pO@Ov^78^<NUDHZ)LuaDd&(
zv<g9`%BUcv&c6B+LNeIZ|CfKB%A2_9d8?Nv(zmjt9lJ^eXVQ84ws<N{_o7)Zj*3p=
zrDO|UF!@7Q#>hW+`?JCR_vnSBF(sS2q4yho!#{Q;I2&tg4YRf?&d)!7=zxw|`=7Vl
zl@=8a?PqOnU>F%Dy8)M!dV`l+QZ#kq7;W{o^Jd$~{vY-7U0;d#^55tBb?u_3(tcQ9
z%Pxj`Bz<qTUESd3LR&X%&{J){X!Z<=NHAl<1mg}JZe73T?fKZuK!4=dUke0HeB1v%
z{imh5siB6NxlRXTZOtC$ojPf2+Kd|={WPq}wTML`+a-&2>jdZb?!*xXlJw2=b$z_5
z?@m)*UgmiC;2wMXz4rDV?(Qudr=+ORX2Muq)wUBx4B_M<N_;fZjys0-G@*AlZnA=U
zm?Z7qAucI?qcNotam36?WZNbOjG8}F`X)EVX}LW2JE1*I8}HP=yK#VZ_nP3G{M(+;
zUQKk9S6~n0<O6#p_~^8M(HjM4>So$)^+~{d#ejnFsI2ye)Q44lq04{hRrjU03(jOH
zGNv#rBI^s?%r@Eu>$j)3)2|ntWhzCY3VLAC|Fd@<U`<_b0}ojJJD4FMK*(Stdk=9d
zD$5DDsfx8#t4v4TtF6UVN7dHaT5;8ldzBHU>@BElkQqoq21!Wx&dCiSBmvP5zgFJo
zee&F#oO|v$H{o)B_g$+aYIMwCqOhUZY6Dv#lf_O+uN370t1`3`uzKzp1aw9f!3w%+
z{}0E_hL1E6aIONKO&nW7HUn)9*-ZUvx1hI$eGr^wq@}r0#_L$x;*2;mr>4Z+iBUk!
zqL^Q3$psrXZ@?I2g#a#M@JpE)Jq5^kJYFK@>7AI%eW5Wj;LRJ+h->tX>*v8y#PQTO
zFM!$JxE_5c<_egYLZh<~+?Dhd+X&j(3?a3;vnHEg`CQ?RH}6$k>uwTtE0(%hqa|W^
zOV|)<s8VYviXM*QZa{Tzg0K9IDB)%lZv%=QsX#fADCVZ&{QAPb=1cmQNM|Rw{P)OT
zQZ^KPl`IxZGUhvFec=m)QTI!$TEsC>;8!OZhso^W8Zah<!5A#@{7*_s!F#c@sPfdZ
z-KCAxer?Uw4>*@bGfyb7PNG<6G=z<*1E1La<W?m>pe~6@u1O@Hbj;*blnVuAM*)z?
z6FmmYE^RlTmjNl#nKEfr-s{?4fy|*t${--yB&`1KwWM+Ffie`~nX(f_**ysX=cB)i
z!MUiM<F~HBH>B|Gy1sDkhN1>)j|=p(=d>YCFc8}{I5%i_DRi86pt!6MC)JF)P>nK)
z9b!vavA2}U5T@ocU|uqymho$&UUPXuiv^hzSLEJH75{ZG*@CHG7ART7qilM>IVu|7
z`yIMi`-vmWer7f&Bdxe+y<VX`S+z?l|H>lT|020`{x<;5ZuXXyWiR*d-htCl*%-FI
zy1Z<RgPjRcpYq2uCWGGEN`==P1|z`FM^{5_QNTRO?rl`+_Dzvw9M%Ab4O{(rdQ!ZT
zm8q_Vs(e=MjnLw(I@#Un*uihzZLNu#8f%vaMXX&#!fHC086Q9J-I*Vb|8Vq3ZZ>?@
z4UV;U`&L6;oUxwH_VCa-o>KsoA3G4WV`GG&uC|@I>4kG=1#-DD`8@9G<w3ZS!vkme
zGP|=<NB{O~(Bi<A%N8$Rx+r+*;^3eqKvx1?x-=N-641C()F|493f_Jev~c;tz;E~N
z=JR{~sUA5Pg~w=+b+At#iM<&UV*ju<H6m$aO!f7Dzj$$gr@ghMdFHgKm=VKgj2qk1
zG-z@D*GSRY;OExlL`#yqrdyLsw?)3knB2yORCnuSD+ObMV>RBr`IoN(k%qfBGi(gx
z4+>_I;yjwu4bJ(?=BHUHUNV^8>u+}bP175czJz(_!8^q`!)(&(B$miTt5AgP%u1ql
z%~0(M4HCbmmx)jU&K*f<@;mkg&fthh$>xT|s~Q1E>zc`evp~>O7+NUg78F-$l3^9C
z;X1sRuSMCzEMWreVcM+gJ%#z07p~Tb%+1wC_CitptezO>z~!=;!K7pmoMoi6v=Gp!
zLaQ!-Qx=O^Q&XYPky}K~mveK{Yip|-8{afE)D;)!-M@EDp#>Qr@Y5$T-Fe!CS(zyc
zNgM`N!<=K#kNVNWTaO>zM$(Qwd~hQ^?omcY5;#OvRe5uBBa_Jh9MmW50B+{c1ubR#
zvLtTKRd(DV)~!&+uK~29<7nTErf$PgH;ifvMKSgo2)VM!qlA1;`}eMZeA~iMpby|>
zD$o$9^l&BG_hUIJKXQv7aC5IS?`@&&A<@H7Eg=e&6{*b2y6`uDd;h;AH#gVa-QCgA
z(ca#E+O%n{t?%q5D=%Cwch#y@wzjrlST{Gf^mN6xlD_15IX$;p>^6Vx+BG{nJ0~Y6
z@Vao}LWJwVPbefL#N6Ec;(+hj2IVi2<N~&Ze<sRm!12xqHA7o-fAO=>L;IpR^Eirm
zN~Fh8ocrDbpVjr)7G?8TWdOebjh!e67%Dp?+=zvV1WT*gZp(6%>|o=lamm|%tbFpk
z^=5p_m8UHiA2t4ZuVLAqmnbKgYFo!Et-eK!44~W0bp^Z5R1P1H<m2iAXMSf_GmY2O
z_I7Qi@tfOt($Atk-~S3gx{^b}Z}%HF{ZJt)o<$k6QVh-;j+d*tCGPyG7D+k&D7AHn
zljt<sCWIa-2NzCC4*f+%PbHUnDtF|VB+TSgmrrxV4%oKw2QI*SzZoHg%BFEsR~IDZ
z_j*b&ZG8_oXP11WS@<rUKX0syGt|RQpFGad(p+Cl&DPw|YtmQ~J)8knW1_3WZ11Tv
zr+aSOxQR)l&z?3-UqgMdzZjfzGc%VjTBNP6=4fSk=7$sD-`1Pj8h3je9W|AZ)nCXQ
zXw&*HNoW{lj8hv)M5`HNwZJO@J<1TPPQs|+HC6P{>IT|c=YBj@T~Yp7&|;kGD96#}
zm(KmdX=f~3JYPp$<#Kd180Yl&hpkPF$atL%q3i2wdquK{!Fkm1fLXrn-4^HVn>T2y
z4A<9G5k)kMR7-<|Rwrqx6GaN&YH1Kfui|aAI+%>M>L`C-A71Zx%%@KtZwwFJ91&KS
zFaDv1uKt3gsbPTD9BXG=UpLUm8o>3(qM|mf4>_{`+x7wH^d6KCECNApfcJA7QnEEs
zO5xiy8&c+U4?dmt_Ce%?`JyP<)*!`NW>_L@u`^_szlPo&G8u#W*MSK@@+@1j%t3*s
zT9eXT#NaI8a<hFWrYTx7I1gDfCrgr>4az?ztiHjyrjNwh5JGj#Ix?~q4k)0}t0drD
zSuOn$0?q(wX}i8-UXMYv{dx=%MEq88=9RtzL|omSqYMFOA)nv6`@4FyVe^VFnfD%X
z(zEGDPF0T7gL$^~%mpp*#+$lzZ<A=88oUMl%z4i9EZWJl)i_ho0@_=<ozHu~d0tRI
zXKWChWh6BvPGN}g%^T+dw}StAv47mZbu(I#v-J6<rh1vt06rs$wUM-761@|1`SHVB
zh`F%3x*SQGeeEh@Sr%u~MiPzzUaqWo&1N$Nf=;1Oz-F@myuU-;D4~FPJDj%Px^)M>
zC2|D7-u7^j6*vOLjDXvKa{&>9b_m5AMs+s7?!CK^mvaU5ln3GV2qpT@vk|8|iSV0V
zweQmF*Z>EYC^!mG;bvt%<;eSfE&obMNJ#kPlTT10!D6xX^|C*Y_YgLlJ$CF^WK1yl
z)2C10Y4;Akpt4PDq&{}+7^+*Wt*sGorcfwDhYkfT;3x{+9S7ylOJ5JTk`Q(th}~Hf
z*Bk_>xvf82Gr#f<`+`{yHH-Csg1XoNPL;~)I(DToD!S&_@3jVVM0vAq61+kS5f7GM
z?lve{#UoQ1=8<F>kZC$Ao$URb?30O~{#<ujn%ejjSfL3}r+vbi7_kRwRRhc$R$kXJ
zVuCC<S2b|AovPgSQ`Ot`$Ev-*RJSt3Kjx-ZKHm2^$|-Tgxa2EOo9AwRfpUPs&K3)@
zlJgj#+x_I$tIt~4-HF0(Cs2_}Sb(qB9V(MwIJ2Yc;H8E~X|!MN)+;&o0_Ux#D|eo%
zDyfpSDNBQMPU%N_`*#t7vo={r%hASiv=NDjQ8y#$x!745>1rEbHSI?mS(%VABZm9?
z`LWyEXHK7{r=hlVJ_P5h7ox}5*=eh)dV6{%#>XL}-MN0v(tr&5gsxpJb0BDOMyri?
zb~^a=zA-jd1hm@cp9Y1j3O3Z%ax^#jZtt!ME>3t2^*viQ@7uNAd&<NGvwh;8z!W9i
z4$jJ@3-vTqqtBf~hI)4Y-n>~pvwddl-@CV=zQ@m*&*QCL_9<@Eh`?EX5?Aeq_hNQ_
zwc+a>Tlb0d>mA$R#&#)%EwZ|I$F`kYzWVjdnf}X1R##Tqk2WJ?&_oUO9UCM5ny+L~
z{=W)<#H<-((rt;UHnN&+N2)pf{re3|&q#T0M*@SSbdQ!I*|sMaE)OVPy>x*3YE4kp
zp?w2%KWn;oGsm7ReMID-&w;v`b7~<#@oBA@lN_Gg_RLM9Id-Hs7tRir_4(%o$(<#G
z#xOw^*0^cu=Y6p=tnOs&$bY5azb6D|yam9|3RQg>aIPCO4FTad!*C5EZ5)QHABIC1
zylMGbfU!X7$A3clH!cWng5k+nPJ9y5LfyQpQ8WT*XZ#4S;oR)J>XCZQV8>y&+F`iL
z|KY&kbt15(9XyWgC8RSNrq68>6`z6yoxA&hmWG*&1WfV&>-Gy*!QfEmEa~TrHLqMR
zp6Aiif9ll#Cxp-EJ-B~eVZJW_vl;10t*tFc5@~sJ^R1f~<?Al7nC(g31&$F-h<}`r
z@FYI|ae8_Z0O5`f_LIlA@8A0!j1L9@uTLJwq@=_Z7v<H~RJOHIWjwoNMZg!(-|#Eb
zI?~Ux?tVr8(VP8rf6u2vVMq4w%t*+sG!Y$BMa+v>jb%U>d_)UV;=h#fz7Vp0nZs5D
z&a6l!=B+Tf2?^Pc_s~yFW}KdZDE-uQ`l)G9PfX+%#K`skFAIRsVZ(+=z`60S$k_tG
z*~7y_0?yB#J$sKqkpF`+;EX(tiHeFMkw_*cCKeVJWn~I3i3*1rlmQBZ*;(BP4a9w&
zw&Vhqg@49d*;&~(A!ui51GT@KaDK&Y_61WpYDO_npgNxPSvgl;gre|`yGbqRNhtsf
zwI-)zyb#Cx9K2YoME(PoY(}al+fz`0qmBN6^S6iQX=T^Mk>ipfZrf3&epw*B@QOD)
z0J$>YOv!Cm8XXJMjK5W_5<YRJly!TCXP0u6oFKG*GA79;FiUfCDpIU@<oFcpIT>jM
z41Vtn4rlK+iG!@|DM7nS<-ZZ|j>m^hPt)6w3RV(V?V3hjr=oli(?fc|Iq&61YH_|8
z9ZlB3xZ7L3Dt)nU=Qdppl@06HmcM%GVQ*)uubWDV`~6}x5v%1t8=~mU>7F_&Bj?PR
z^3BdICU`v(2J^-8<+atY1OuDZe(YeBt&t%St*NJ}9<o-};v5;Wj)2uzx*&kh?U?W9
zO~PtiyL{>CgZrlXdeg>xfWeo}4<KT+P98l1Itci@rn>4a8^bT2|CPsP1qTM|tE*l(
z53LpHsi|qnl;*~I0MzXax^(ah0Ov16;JjewOqM9d4P5Scd|s!ZQvkG6N(IuYK!lxq
zp@84X=Sv=XS5;MQ-Wa(dG-Pvl*v7E14PhZ$A|pPXA84qfP1e>j#9`;p^4k;{9uXcA
z5gxiBEObM-oQ8!&gscx+w|4!ywIS=)Mux246c)NMJT&CXHMej6UGBJp@)ruA$n44X
z8Fqx{a++yRY|qJfzhP;Ku~`lznE}(fH?r-CIRn;WM^e#}nFEB`=6g5u<c<pzEHKmE
zoKpt@s-wOxbF5{C+}zTEI*?hVMen!dLHRSnj8R~5hTx1g=&XH1jo8)z5LgjAL*uOD
zBte60{W}4jQDfs#hcm4*u<7jWs$K6B_y)A&Oe9(jUUf{lc`%T(dHtqFoGH-upU)%x
zn^%Q`w>3DEjuf$XWoKh^osCB=((Sj)U7||p0IOR9meuH*iDQ{Z>ebtgXPk|e{^<%B
z?QPq?sWWn@7zTaCAzzz1(e@q?N<}?0uib9InF4KIwx*vm))KY_nJ43?bMJrN|0@DO
zRUsE6nZe4+N-Ha0D|F;WOww_&59#!_cRJ#$S1$l5XJ#b7eqGYs+{odug~GQ-!U{Xu
z*^l-x&dh52)`Gf84L~s`5(XM~ZBgQ04VH8hFk9%~nlZwA0dHF<ioTmjJM1d&Qw><S
zBk5GH196$OeMSnsuK{|uMvmab9~N>y(rCW73ZPnv#aUBRv!bG+OLXf6;FsAg;64fo
zTb8sSmS1rHCTZb{O5oMj*4Ee8gKZZV7i7#KLx#l0#`1W)LXp(f)ydDHy1E*CR8&+1
zUf;awmE8FF@#8WUXE2lI=4NmpFjP%V4dPWOJrgi<(9+V<0!Aw?E^hD6-~m>_loDi7
zGRp*Skzi^dV7*=4G2oIuypN!$#I1Phj5P%nZ~8OkC*`w7Lw4@dXB%+bqHQl4`j2a_
zxTTnyfu2OMepVMU$_GB}@;4o}i?U#5Eyu)TS9^X%v6+nET@_2VmFW4T!GcZB6vMe0
zn@?0~&k$v(cBJ@(7oEIOKg2Fx$ufSZE9FIHk8g9u8~#W+SM7`!EEB&p<JswN*IDUS
z3$kh&#b+`xw|$6ttg=<SvSqxIaV+3;@!4~rC>j3Yzp1#Wyw_!F>#0gHI6EYc`#is&
zwck&X1?RqGdPo6$Tp$AH!q@T^=a1qM)1~NW18uE|ZjQ9J))R*h63}Y9Hg96kXcL{C
zMicd478O2uc#nY93Yg=^YNyYhHkF{EYN&(O)l_k{wmNy_d$#DxP@JC^ykrpxi#F0m
z8){<|gLCLQJXU@2eE$wMJJ8pQjMe=8;)N#<?wb+xJ;!;_>9nBv0c0%p=aWBx&Xwh5
zK>>5|>T08jgcDKw=llBLHPo(Mxy<8nXH1@GXJ!)jhXU6f2{?-^&hT1SS6lnpie+=W
zrqA>7p6BZ|*LQ}Tdd>6mhUzQUxuR`<pBeMKW&jqZ#EBnG=jP;Cni%P8X%e;21dJ9q
zCt#a|K^tN)1{f`(rUopkg+UXrXn_ADEQW;DB4W@)EZ7z+e5<7iDBA#sHPpcxU@-=0
zEwUDxgv0FGzV+|@ng`{t5ME1D_5{l;2SU2Neuk80+7mL}j62>|9<(oMjeC^qNCe}^
z4Er7}c@Bh<6>|p&&Mo(E6gUy(hstu$&+;(qK)|`SDtnA6SfI>t!AZy-Z^3OE%xm`n
zq%Ux;&>#Wq1z6e~ysn`SUvB8JJasl8<z6ESg`G_;0H_6x&BEUPv4Yk%(B3Jf$Xg`y
zHW)`BYLURKfJR4Jx}@$8JKJbTqjaV(c+mPrZbo)TVk*D5M8M%F_}zjVQyQI@Tfj|B
z<>eK^Y4`3UWOKwLxAhk#AwSQLS<1^_D)iG9IZ>Z$Yi)V;s<@wI+9EgXiz&%*H8mB0
zga%@a1OK?+!)7O-R<>@3fyva(8q_UXFm2aXZK#{n*bjDyI{|XJy9ofb4DhlyD0Rdi
zV%?6Aw<7~^X59?wbtHBxZKocskFaIL@w;uG8T-+0epQB$_mO%hDwNdJR8vz^l$3aS
zdeZ4I`fSOPCAPM<NN{m}em)>pe}8`@+}O>{t)v7N1uG~haBy${EtZy+w{G3a%ge*z
za3LWf;3Ek*4;wZN!0&_!6Gn^}F>>TcB9Ryu7blrOQ&ZFDpMS2at2=7cC>0eI@Jb*M
zwr}4q;Zud+yl~+{D=RB|dwcMD;R1|FPe@1r({OZjw6U=X4GoQtk2g0r2cv-_f<xDc
z3dB@YR7{yN1(`5-1y~J6Td-gOSQOaN)z$U&>(@X2_#+q-S+$>^ALx*km4%!Ku#1O>
zM|t@>pxnPy7Vj)owuqmxuJG;bJTFr*J3A%<V61EEFRqzieuEutteBd`k<Lo|qLTxh
zb8{QtH>^m>jxxkKas9!v4xW(16_!@9+S)rixB?{Nc=FnOk%>9MJFJkw5?BGscA%i_
z5<(7_@%X}@?lMl?VjR0pZ<G2bQ(4a+AqUP(wjjHdl{GNUeZ}JP#23$YZr7fl-|RX2
zX7|~;ZKtd3gL0q|+?j&+P2YC9a^KHYGTFL(!;4TN90t6P^LkFD_Zj^1FqI|)&R3o`
zt^4lv`a@+Qhs)O=E`xdqz7l3Whffbg<){{Hdl7P^O#CU(gRg6;13cgVZn+#CZH&XZ
zSeie&cQ<0q7X%HJRZA8<d+@-`%F<L<`_j3e4}G@}uc^LZwjY~8pEKPPfHP5B-D~Q&
zxTlZ1ME5l}u3YvUGe%ccb^5q5KOH@2YhtLYp(YQ`8$#CM(W=fiR%<_7>0oL^LaWd9
zn!a%EEV4Gn+Q?u{@G=)G3nOjp`Ja9)D#-VqI!RYe)x*Ymv_2m2rinhDpsBtrVD7HX
z8*Pn^0IRN8G=Jxo&A**JD}9J=SMA{ev&C7p%gf3f%t!01sgX6&Bv>R`gD6sh7Jyu+
zL@l^Y?5&_hPg4!7f~1YPe@E<g^|G`iaPF)*K3?;DeCGN3&hzt`=;mUmjWNKY$ylvv
z<30TSd=L%rg$n6gMB@J43gF#$$|N&_9ujKpZfiB)*L%LVukX|;Kb`vFANjTi<xdH(
zsUdfQMUJC>rlW{1q2jX~^+8L{cynH(Y!$x&O4}a~3Y-a9j`&RRnEIIxa2t8;rzK0S
zCErQEH259Bxd<Frv<f(Q_XM)Ra>kk>;LNS5%=It<Es~>1mYh4qhS&CSTqXaX39B!Q
zvj&M*0sVi398Tkc;Ksh#c^Ix~{t6-Y|Apa0IDn}9f%F-aflK=HM1|md{n~GLVy^J{
z{My>e{);SMyLt|ExP1$jNPhe{COti=uCDr>(kVlSuI5*Qme>9E=@hW20%nV>wl@oT
z;`>8>bp~zI$kyI2+4L|J<7;Ekhx7Csd8TGYDltxb^*#`vanM1=W-X&&Ou*o+;X_*Y
z7|_qm;=~>1*X4H&z;6EEmWK}?4jD2;8l1^wa&t3GsRXc8(g^svv$NC0#6;qKjpX}E
zPEMBeiHeGvIB_D_ShEItk4Rgb0li8e0&pl|1?F<OlP6C`DU#seVB`mR<j4_ua0XN>
zX*_)RFz9yk=1ob9zP>)-cj?hqu3QQF6crU|YHCUvQ&LjEq5$$s=9!U^0oY&SxDL3x
zq@?7lufCG(0%rS88N&aKLT7doXTf?&%JviqJNI?@?q+9MpKSoJJAbb3V<-5`m0udo
zjyCF#noprvCs5pnGY2^Bu<t9BMIOjQ$0P-8eeuP2ulyp5CoIo<meD5ZGkZfZ<WTzr
zzwl!4)^<rY0?uoq`n--+C<12y-6;i()WY_+Ye9Q@F|$Ji&dC2j0MP*CJ9zNdy<(rJ
zptB>zbww_(vx|>hjk?cuD}%4+n~ri4pVCj9D38+me7yWX4xE?lEKxRzRkn$j)*-eq
zuXv9yy?w$En}nWEE#l&GK8lP1m(NF=>FJO$nkINXLmbu^i#F6o1GqE9Vhpip16?#x
zM+-gTe}D%$OvdbKo&<H(N$yV7mGGe%oz}Kv>sKZOJQ<Meg86mT)o<#m-R-S))Kx<v
zIQRNn*%-2pfL0@7F+^<)U|29XSsSa5)g(h}ESjW)Ho$3_>S(WA7%;`%8H_N;%d0Ra
z=j`bpEXYKX7TN@hC26YbsHqr$Z45>q4Zv1)){Gg_hv>FA4-cH>!)%AoJX@*MlgE!8
zJ97Ak@4tt7RIDeyKhnP*J8}r<_lFM^7l}(tK(B8u7bqeE0sreATVW<KjE0k)ReoMJ
z_#Go1B;BO@1L^GKH#RnSxHu57>UtQ}eY>_IbA})N*RQ4j4dJ&m<xjH6bH-;oi8V*0
zxj@GnchtV8#hDiOsL(|}$Enw_*}ZjuErrhduU5_(AZ1V=+<4(ikRJ*xCvTjI7@TXX
z^2eFvI>{~>oP@kd7W|gMgzz6g`U2+)bs}E`&Oik1%*I)Z`eEmmFE@VJRSe1p5%7QN
z$>SIRyoyZ8(Q&b`S_Fr~zJKqU!XRj%H?IA5TT~_L`nB_S@BB_lcv4iD+tgJ5R&WL+
z3t+P&?HA^im9!{3YQ!*Z-t|AV7-1*#^fdXTULt2~Xld$5JtJ>%hKa(y87<^X8MB1K
zjwgFNHuMM1QX$eX6&O1b)fzF3c63}v)}^k_{_JA^ZF%(QkvurJw6t`|fiw7dn3<U&
zZ-)*Y3K+AiH#mEFd8w$V$b&Nw&@N4~fJ_q;6G5K~7cNK|@p$~)xpTF&v?MJzZrlKU
z02lWU&VZ~zw_CSvq576FW5$3Ti;IgjG&H2a88m`1CEyHNz)-Vi&zAIwj*gx&V+OLV
zq@?tI!P@^WNiS|6>eihQ8?f{G!ixI0+MQ+Not5koE<JAPXD{{*7uFFJ^K`%9d=kYv
zj~8~d4P@HZi?d;_Z&C3kB}a;~MI6c~b_n6=<tIHiIlkeA2snF%KrXOZECJ^}!{il$
zb5;r4YEHV9e<q@q^D-pcvMuv69hT(OA_3!agNGazmBDhLxCQ63IKs;M4rz<?y`(mA
zb!JhzY%tHDJul_P5Q{uGM;xmpO-(2HW=bpGD{c7LWbt?8mWcICC3yGrA<sz9di7B}
z;=Xh~+C)d&437&6^q=hJLef+lXK(vyV1NaYNWy5%@tL-2#nKgv7e;-vublz2Y7^Ae
zmiW&BJ3dcN3iR>T(^Pk|wmf<47~&XHRZ-z)XNyx)36U>H6}nDOebiKsG0|twOmKF<
zYpO)9|8mQwa3U7%Y;AG*{I7R^zp~ta9ucES#%V5JJilHPsPgJXv8TH$SyP>)p+3uV
z(ih8vEQtCBTAKboo?&Z0J91#Z^dWj;oM-v57=KG0XNk1a>Hfan1PxVvQSGhH{&Smj
zOG87wo1-mJOI=?}ZU4TVf9nhf<u4b08?|V<O@WJEt~1oU?$<mQy?j?Zt03$BhNUMx
zD|XY*bLk$<Sv)@Sw#Zel*cA`72)-h3Wm_bDUc2F6E%zNDIJZ8yUJ8yYbvWdRV1We_
z#Nf<td{a2tJYR0fpe4_Z&{1CUeoG#dKO@ZB_xl28UU|>c8$lbb!E;W%B6hA2CHrdI
z6ZHXCF(@BI7z`Sc-CALQb8fCUGQF&<6sgoKF)`n|5gl{;5}@fjF;^&*CnY5XEzONQ
z-rJZ_!0)Wf<0PGG|7~I0J`-yAP(Yn5k<zwn3)}z1lQ%%SX=j;oW@1J-igCbB$b}Bo
z+=7^PIdE<bMYVna;y@k0r758GDuL0-qB0ITu;t9t{Xw+Ig_{|vL_6Znug-k`h5Va^
z!C)Leeq6%NfN%jyBbi~|6`Um^56=7d@2{+^G%_-h>`tM;vhu4|t&;TFvu6)z2@DLB
zv_wV0>)WA2hu#&O0hljcx^&vKX_6K&a~h5I;>C-8z!}U6ET>Ckg_raJgOErhWZS~R
z0u1uOzN&vpe!kNPD>q4sNjXrw))!XRbNbmOF^^?Fw|Bg=ZTy~J;2lUG_cFq+imR-1
zdi`6Rp`IQpq~;A|+GAGc4R=jcpOm6AJ&o*}ZW)m2xjKLOj*_DCp8QuHtMU<2Ua|w;
z`PjU##hH@JRI-YL%xjl`8V#eB<rQTS4?nd@80wx>UMD_##g)8=DfHVE>h;)`E6<uI
ztj<R{LMu6DdYWHk(YT<TFAtQ7&requ%(-oc)YYOu=W3Tkt*NPHwTd5N$b<9CY7Qlv
zPRV76l%9}-Y}1{W=OPCk;-2_(Ohb1E_z~#O_&8#rE=Hd>z-f(hw4*jQ9^L<~zPjp;
z$Oy1K-qFcaAD@v1uLFE&E$sy0?C<NNt1>FUXT~q5PdZy$YL6Nb;Om_j*OT(Sy0X&U
z-d0CLb^YqkWgd`h2w6wKs4t!G&*g9eXL^I}tCuc3zJJdcuj@I^qm9~f>gW+0BSU=+
zjagokn?(gLGE!6hrcMD<GQwyQ(drk^pQF=SC%QQs>ERyThaS{IK`)Pe#8q2o<nRSE
zeI?-BP+y;%5TBYrNueYFO%`cNqDU$6DT(p$Rjdip+sX0quS-k&I&Y63JTQWmdNhFg
zC9`M7J$b}t_LpC-@lE~Z^U;B`{fu;Rh8Rs<)sYAG?SAKPYfwI@2-wV$S<c07y7{hR
zEf6W#c;&9w6g|*r8W~|`B^SHt6}a{cD;YfB4gYfC#FtAw#Tw+<v#qG5;?rrhUxyDc
zoUrxb^;cu?^2aR#I?<Rb0%rlOwRnbgk^ID5bzi#awZ>c+^r8Ldr7v)<R44Mwd$~Py
zHa6FLOz(@GYlh+Ir+)cRs~D6IBGpyp3JWyDl-f5hR9E$wPF}po2Z((q=F;t37XdFn
zdv-5BKeM5}j{DZ~Jp#U<sZ_{;PG8*on6^+9D-x12J*+3qH7pTzV&b1!NGGk1uBe_e
zBV37_bs6cyuSlVGC)t*^8n=ci^D9zi2W);tJLu36iE5S0#ofO$BT%%j)IYXl+7d}h
zN<vCIp+s4=o0`PA2OS+9-xZwEXtc4h@z-B}-PPMwJ2o~J{8N*VxCES+En6np_t>#x
zpk?vm#gdlIn>Tm87dRuyw-XZ+B}vZ)2+oMbS-O^%w46KlQDi2JI9ef2NF~M2-fv@P
zN-oPxnw^~}mJ2dl`mI9MRegtb4$nN%A2_!kR}xeXDD`e)E<GlJ`XsFt5MpW}GrN>k
z@uq{x>AAgWV|40zr9%R>iU0ancy}ZP&axKgo~+u6z&SaesVs7MR&q}C4lCU8Q{}hk
zo1}HePgNeD<v}lNmqgV`DV6o&=aU<Lcr)5B$9QHY$>%x2I~_?ohMX=XlUODEQ_po`
z7unPThANWH+mZ6=?w4wlVE%1@#;d-4g-lRp!qVV;_;P<0<-Ed*Bw4j(LaJrf{vVc$
z(Z7*#S`%EHTB+2d2fou&Q`xy8lHS%j&dI@oM9fWpF6qf)&;xwD@ER(k3A$zkT@nrx
zv3^ZU@9aR;l@)FdRyrCZ!`G~mInaiX^#qLC;=sAgc832<A3e0H*QD`2lP4HxV=Tyo
zxjxg$c$|@*uBnc$DPC`DWcdACw<fwc>!^;JGi~Z*S0_D9wQE-{aoDU$9&V;2LhO?#
z@@s*0oR<a3fb-qkH|)%eEyzSf%}IpO1|)L>;%G8qG>KqA*0&((TapRLr=k|9R)%CV
zg8tUX$iB|olZOv|r%eUj2%2hmbrmo|ps)9@Kc12;<t!8y<>!5~eY@va4`V%DU6qj}
zElpcf<4+gP&&hhvB+P^Ip+qR?EL%FI)LpmGO-Dvc-F03s953X&&*L^uX+e<(zDRD&
zVmF<lvHBh5rSFueaNtRJ+8$ni?V%^XmST6E7n6*52sn3eUIw_AC|dH%F}md|X7uuS
z9F%`VSbbTX)d;+@3YpIQnz}a*6W%CdXRu4HiazVcoe!~yLHRI}ot36AWA?SH=Kvkc
zq|2_auYI0IDK9H+Z)d#q!Xjj~@QNQWZ-vngIJAT)wO@r^XPgJy<)e(DH+2Mxd428s
zFGDC~UtcRfGAyQiVnSE<6ZOu<l9q`7$%8O6LW!FZt!N2t%-a!d8%MGuQGMkK>nj49
zzD1K?Hz3>Ae@qe*5~RUdQpfpS!5J_qU{xNE2cVV1;kdfGBJIk`$^e|f?h@LSfb;U@
z%O$%XJ$e+hELyZk(z0pOrmpt_=kepmgO<$9Oi66@J6W88T)K2ghMIMBbgHVVKET)W
zkITYsrQ(EC3fNf`@7%|Q1hVs-9(Go8qAc20(#GgFjIrhp>o<HqcIWovsLq17)(I5~
zx~Bww9UQK(nci7Y#(J36cKmW(^aHV1O!UJhWk<NKA<mSfJor>l0?w<ygEZPH?8<$~
z&U(RWYU^2{LU2y%24`jagp=1{BabiO@r8);MOUxQKZu?`^af||@Dh~n6O`c}P>o_G
z=XvD#lu4iEMINcSn?yy<uvciIk^{`PZ5EJG-O#Z*stjcr4@OfTmvSc&Nlnx1Ymf%#
zqrdm(2-K^NbIC_rjtYYFcxOihob@%-COA6;FIfO^(in&J_w`z_bW!lqCBZ>UmMsXd
zGch#8s2ggl6SP!E8{n5MocGzXCBd-6Vv#OdG-tL69%q2jaJRNxwqX8mXMdI)2!b=V
z2b}R}Rk99-sDmbH!!T!Ul~E2>7SX@{a^{EQP8Q|_v<Bc-eJ#y3E0$Niez{`N0?eop
zp9cDG30rS%NFr-%1uvezciUH6H$}#Gmyqrff%6y3f^egT&!6SX>;~s+moFOW>5wpJ
zK<IX+#*U-S94yR%f(=J=sP-069Y#ZSgc~MCdRQVB7S#$}^F=>TPryRro<7+avTn*)
zcLN=5tjdW0WA8k`qBz<(&Z#IWy(1k9irt`z^kxAyVv0r$c8$ae9H?k4*lU!;ij68Z
zP(j5)M-ULD*k}hF99OvBJKyXr9OVjVOuj_#|GdvVd$Y5%GgtSw^UnL48|u1#?YKQG
z^m$%x6S_Vn`Bvb{WfSa&gQiS$G>2Land#-ef7j0PS1-San=+rH(7}spodH^!$Qmfe
z|GDQQ-dR4r`MuAu_fB$}1#QyP|1PefrroS_F_S$h=*fF8JAQLpXpXvH=F}({GRoPs
z<;scH4+#pS(q9(<XN&@H7RZ2eD-?aS9^>$h>>(&gDyT*SJ88~kl|F9)WJpg>mAk+h
z3iFkgEEIlVv<;CEz$qv13_a>w(spAwf)-tpPni~`A;i67#w}sV%a6<nMX;V6{OExQ
zYO*Ov^=?E=g0fH{`0vs>#!JVM!wo1h;LHYRPgR)7LWq0Ays?(N!x&&VOER3^%t1qK
z#wklC{<#V;>?Z-|Ns}f?Z_ad{wEgG7+11q*lz<)%960dfz!`_bNh6`b3J(wehu@d~
zmweV&s7>k$&Qf;X^jdj-=bSQT$GkH*#4+dR-`-Q13S&V-g65qq6teRlYW(6|J@)y<
zJI2EBcMEq``iH%px#_icV7cR>lA*JUG{$EikW4NUDEx_wUP2+P$7j3!QV!S_e2T`m
zuW{aZ9CFnr(S=i2mVGn7JnC)-c=iC!6SA+S%BR%5m(XhCq~P4<<a6mhb;ZuAwFhc9
z9;@GUtaj|87f_cRb4D*LsY0{qthN{GP;_HI(7q$Y_}3mo9w7Bt&X@%+pav)9j9yUk
zwyt|>fG*&CLw=XwuV)u<uKYq%3_z~hriN~lp&94Mqlc{x^{kBzhFcG@HPN>-(i>)O
zI?~R1q^-5RowYqcX;ULRW8I-9`lD?v9PF%yTbqrtwH#?{B{6FUP{-2T##n!-k-m+g
z{s;@ph@HPlPXxf(%1{Re=kMqEnduIW*s*oru25?eeM@~kA7_{JN6;j)P{0dY|Erm{
zrnQOD&aI&o5>X@&tXdjiq^o77r!z!X%gR8<)>z+MSJOgY+uTS$GP2`tk`$chcLL|z
zi3!8a&8&2F{M=o0Gtx_ni;ABYyeNGB;(6hV=g+}Labcmvp2POCs4#HlQcFV}3j-Y}
z#91#msG+X*a@4uSKh7I%Yh|vlZE2wA=wLt7b*jCkskt8Xbb|e`r3-&djE})Ke`Mfg
zmHs8dpNVL2HF@uBENhj{#x*V`#HfQJF871*SuEh!FLAGRk<)CQt4ZVLAH{zUnF4Tb
za5I%XX_d1{m5;3yoN-5xa;r&d8rQm-l44JZg?!b$pnpuv<W%|KtYyKkk)P{?|Mq>8
z-9)+U+^BBUWI2XgTJaB$LZyFROeP~aDPFpA8BRf!)V_GRxTv@HPsBVXzcQVbvW<FT
z3JIwJO&^D-QMyjivXBT~K@{!$EQY*j)c~B?=|`2ELPV$()aD9M&$?J`uCTdWEa1{3
zon>Q!F+vcG%inkDC!a;xD<?rS6A5bm(8CxR1n$d3=Cu`+!(&OIgP4*rk`xm(bgy9l
zaA~;jFGrsWoE;q<rSawd>);GDZ{EDl;GCA0*7{{=^0HTQz`32BXF=?&Y^_I5X(x7e
z%<c14PQb3p9@x1tMIk%?p~ic@t;as!NGJ5QecH!fvbfkTUCrhx0(zS1zM>RQ;-PWe
z1>4>szRFRXn4{(LEbAo%7vOql+~QYoFfsp7D9H936iXf8>hO%;&ecg<?f~Zr*(Vd_
z%s5Bgk)P9ZB@{6m;?qHH&+3}nyxi$5Q457nrU|JG0h=poi>f^dimEL=F#Zw2$g2Q!
zweN)Nus=F_l2gXE^eqJJjF^<;v9_$Lk=@$q4n|j3ZDnajrQqD>>)etrcgDF3IGgKg
zty;49>7&#s<3<lPHIBV_;YDFVL2gcdUT)E|+!YJw1Eh7DI4=8X+Vf{Q1$o&L0~@*E
zu{b|3?cSZSLv74;G&ihVUYL`Ms_9rVAG&dam4Wup^S@(AW}HoR25(rsY_^Y!nZA~f
zyX(srP;3o8kGto$ZGdx!nwcEkzfT|uJR%Ya(;hy!6crU0edWx_6BF%++Zr402no6#
zbM@+_3uUDp9~c;%O<{0mNWnSY9)Pos_QLP{!DT~lUX$HBwpkiM;2hLDaE3)8wrmgD
zG}P44#>l|RK-WS~%N9yIr8m~j=Fj6tcwA-cJ5>6wh*g}8ay6=Qk#E(mMrb$VrnNKa
z53cdiwIV7>NF$3Bn~+Y0KVbOZw>G*P%WbpH&6tvS=I_8#+M}CjcN5t&*0>tgOtaxP
zxA~PZvr^F>riz9PDmS<pW7dC5e|(dVsT1}%WJ$PtmHvv9fpfLO@Sfa~(k9E%vOeCx
zKw;C!Dg1hc=|5EZJk*RqOQ)LwDZ{*+mX=&zUP30d^gf@Ikcwg5+e+PG%nwyK8w-WD
z&ib8xW|~}ZhFJTiLRW1O8BN}4P78)WwX*@-=A>@r7DUO;Vv`_4aPlt*u&)K^7mziU
z2<nR{2S>?U2dzduI;pomsv?1iSj#Pnrl0qthNvrY;RfZ@2<ukv-y4<mUnmtg%Yrj_
z5$x>jI)gL3;QC7tfH?W!+#Y9p*5)@2IAtrmvR*Mq%qxbbM<wjscXIBM-IX+!@_FY}
z_Ek$c><qxUu;;n{{MVc*iz}usf8)0Lwcp0q0XtElkxgfkNEIk{RteR2V@03Ixq#&d
zIpv+c-7y>M_DebJO|9>fzwTJg+_1NOzR6P?-4<L6764~xB{CTM*sSx(Z9v+##u<!m
za*oTIvegHxem&OE*_K394)H65)-O-WG4*{;Q*hs4?V)NIoSj#<EfTq#O|%9Fj>+yj
zKKqx0)!lA5+|Q@m%_&rK$O07awXU4l=~@f|=Sh+-jm?U_Pf+q&Nx`|_)Z7{cp~gOY
zbpvM$eVtv~w$N!*x33*X*;tj8bcq$YC1{h0j+URdCx<0}f*y~@jU8b(L{IC`?w#Fs
zg-O6U00!qdv&<#=q$~||fApVITMO|ujY>ss+GuX5H^F}Rl?&(Owohy!csWlUVP*03
zk(}Fi&>H9E5I8UBGUFU?Z!yF|NBgIF{tQO1{?vAE-)8k8;EbxNJ`;Izrl*^gkv@0<
ztqk=ijvVgswd42^LoM`mfep79vS8k~HxlA-su}11xWrrzI>4#H-LS?@p1DGgXm_JV
zccWS#^SZes>--%QS>rs1rnNKRWzp=4qIxgWT6t}P!a8>&^7#lMg#fL<0hbnVTHD^3
zQqdpXX!JCeJtGR(bZaR%ix{-JA12iIV#uiJmUaH4lnvQ`RMW<}tsm+Rs!~_6J_?+{
z<sv)pd6UVAMtKRUn$?Z5Q>P1CREfDiXH}G!q};o9CpkXpcFg_MTd!UgwzS~j7|2Q_
z=Fk8+%9e{*6y}XUSx4wLI1NGY-=qTAlnc%PGb#Iqi`nvn471__*dZ_rcNjPkZM#1I
zT^en-rF?qbj35Q86F2wiY6#hypegbWQxT<!k9x+he9Es%?{3u@VxG)xcCnaWl|fN(
zb}(N0$*CXpw*0rH0%uupK6vn;T2~nw8iK?B;kV}hBHzugyRUJU=d=A9rOeA0VrTy@
z?7Vb$l_Gv@Q=>d~{zFYr647Iy8EkP`6}!BK^`;Jr3D!*HN!_0Pg5DtPGZ7;*hx->@
zy-(_VbMbO2vEQT|#HdU)`;5M$GNB3Uk(t`Ad8IWSS2zHi2RP?}fedoad)Lrbp7oN^
z$39)nAp;m<WCl2}n<0j$tBuG2Ed&1D9i{Mw_R9TL0O!F;cb;#%T3dafO3gZbkn^+c
zXV4@Xbh>V_DKbl#ZY#_BIArx1lT}{Z(N6%*&`p3b*+xDEXo9jksM9yShNi+tW%{fy
z7k;U$^tyqwrJl~7ZChwmiu>1&4%U_xFS}&e*%rLnOh?<#+k>TG>K1_Wn2|%x^tAWw
z+|g|p0B36nI74fk=lGfG47N2j-u!DIQ4)i(30=Qo^-9pV)5P(2Zr)JTTRaZu?)3F=
z8_Os1{9Zc1`P*4iaK4ooKf>G$fV2OMX*KWP;+rwprbcX2Q@b@{G0;Xcrl}b`#bEGQ
zZ19F(Eey1J1ZO6l_9X2==%x*>Q@*k?HZay6Y-3{R<@|MM(8j#%ECLSu^wGl&fot5R
zd}V2%Z>pnZYi2yt(=}p8cz#Y6_oJdnsq}9U?Ot@Vml4X{ptjvQZ%a$+JPaC?8phKQ
zJ%7BI1OI)9v0D~4dm7ftYqrka0PJe`VGLpK8uEn*(#8E`$o5HWfBR#X68gn`tY;6E
z4}|{s1{g@U)4@Hjn`tFz?ucYUz4iy*$GBVHP#->ItfyhqQYUfma<{3ZNX(=Z`QWT+
z&aYCK7XuPt=f@e1dNybU$(?bt7Kqs@-<Z!<*;#2xx8t4{WH&cA3VQq+3VD1~9y4h(
zd6xwvYPQ@eA|i?uswq3^49Jwa(?rA~D_Y}Blmzl(-CQRYb-9fuq+uDcKhx#0Hair-
zPT9h~8OTx4AaPUo8EQqI)zB{FKwjBxYPc>f7;-Z2Y>?A+FhWq9BRgKPSj0*WlFbbb
zbq|T)Jm`Me^ChVF;5>5V$d3T$zJ2><W@i2i!MU)oP;OLh8jU6`95iSU0)c?HFI>3r
z&%ZnWyp~2t{D&2RGqB0IeMV#)j%ifhPS#5%U{$q=o!PmvXLgS6%Fcfvgm2|f!}U@l
zetco<ng8n{RBmZ^>S40Qms2S#cGvnNYvzVPwrWr9tt@(HXh1a!`hA^a>QfMTvtt^!
z4&ORAsLDUI1~O!ge~3Io)-2yudp?;&qAHwdSQb$Q$l5>TO*65r&Z3>~$9-2E|A@@w
zC}i4-8s_HXb-J$43SM{o*QexB`i;pR@oiDUlO8grIjt(|J38BW*{ibJFLwqcAvVUw
z)WCJ}S7ag)fU}jJcEI=Z5@WA8I*b@T#5nTU;rn;*+)KKBH|ch2a?+x?-wx5y^7V9A
z2F~^XoVE7tk^|1>dYX%Wm`A5l=Faf3G1fm6v5O^{xvqNmX5qYVjRp>McXZ52f1;$f
z0G!>XP9A1u{v=Hf6tt~z9;ESOCvd)*7(dM1)XG3_q`BD)=Wk|txcj=h`+`RgH;K9X
zdb#;}L60*%fw_an(L=4RjCIZRbpY4P4JC@MuRj}kYT>-OV}{z8Y7ZWwt3Aff_NTeu
zUO9KBp{~msL-4y={qF7AlfV1VoH5ec(nNERnU2=@5yO@&_%Y_nB^*{Y0sY^Tn9sv*
zoQ?C=uk-jz*669<v~XfOIJfd@USnq4fI=npaoz@aZ+(Kd0c>C!ub_l6-GF##z4A$C
z#^dW)A4Ay_HF)Yb_*!-bXEB@Ayv7sfWAGP;jPcUPtaMR<^IsJ6<{gr{Nwd0fXTzx*
z19s+DR`+nQSj@b0AFXMDS2xDW7*X9A<LHT-7l8k633&WmjW{o$Wy6+#<h}YANgxoQ
z8&GU^kKtUzLhNhS!`+laV<|y>*hq+Q$zfW8`tJFgS_K@|?M-s0U%^qV+v`CUZu$`=
z$&n$K>En~xna6mqQ+TDf0HjlXGm{J2peEz+Xzq)6YKXd$g~q)%au9-(d7QG{kg~b^
z)HX>HcAF6!Ap83%sDDo0Wg$Cc=tjXd9U=Zp%xm8bobmWJU)IjxeDdVU7cXAu=;(X|
zI0N0idl!nuG=6+Ha9+A}X*d222ndjtz?q#tAvnK%`?fPU$H&KmLFwt~bpz)+ckW1G
z8Hq%W7%>9g1}9}OdbL{cKdqe?8oH#Tk}<@XtQqUd%WHaG9{Vt#Y~Y=*CRq*)v-7e&
zl{A*pY0jqm>}abFc0S!l)b!}%1|pU$0giu6O?yryD-P~Wpa|-*{CXU}4$H%n<y_lD
z-6K6Nr11qEKPCcEE2s<|1shJDVflDcTWgB0<8sS5*U~8U%^m!kUCJqZ-LqpYjVZjF
zL&JAMWD>LW;vHhntDf_WUrT3QNGA8@?fZ<C7#9b)(%tzR3Wa>;#4%e*^y!h7W_Bh9
zwk8I{h8RPsnry8`4YhKxv9vQWveeg`?c>E!@aGGDGbcKXG&j;exW9Xn;*d@240Q(0
zpZhJ7Mq9Jw=QAfyz~y;4S$^K0=K8w+Gp4;QFIV2%76M_qm)n>TLo=SpNk=6V2-YrN
zqTN@`f3`21)%LdDO};hC&f0#6*+_HKp=KsSO@|CK9WvC+c&M3?-4GKyGgIhMYG%g3
zhFO?GQO?XvLW4I;8wWqOR0=sW<H`EKHQzW+urV_NWNl+==saOu&@XFqGPC$RWjMg$
zu+ttqShHf;<Z%w*1-CUb9%*aq>EgO`$8WDnUh?@Wl=v@+kFIW>?|}2sYw*%lU`lqi
zS+loZ^CIbtGbG0SSnM=|MsGdEjr6vJFinsAd$4kFW<I%&pQbO{6zD+XEDHg)OYRJQ
zO$F}z;aFuu?%A;3de~K}8Rx$$VKbJMoXSj2>1-@uckc`7y|^$Fi`n^w?3;HOU5$Ao
znQ=Xd5qF&)lL$S=CVsBQj7?<S>%kx63zUdW<rG9w|MVn>Y5>{=tSZfb3@zXdH(*>3
z<UYU1EsEx3pMspU57^6{8isN+?KBk<p?k<ebTK8UuM*S+EwGRXIsnxW1WP8uSR3SS
zR-+-+xi1qLr<~<Fet(29kqB05IPLHlMQfI6!3gR}XLkA#ZgC7ZKZ>2Uhjz}7x@EB3
z`Wz&Jeea9A6$2|PD@zK_KnD&SfTtUzX_tXCH8l+l4W&;%6r91X@bK`#g9pP;2Mibh
zJ4FLDme%q1_6A_v`KXH*p{y>S3Y;kvN@ZoG6qA9pw6r=8s&C)E1qIN}C3kmsxTJso
z{^{xIpkwe;K+|7Bh_D;!B*a98;0&mF=K6|CbZ=cQ1CP`oq>kTh>|8}xzTUa%0nE-U
z0L~W%ifKx{u#^gXkVXHYpr;?xRq=-&_{F+sch>8&^5X{&T|9q*!{KD6XM}GF+r53;
z?j7w0ZHG&?w}Qt#JHmHu-TLQ=6Fjc`CE-ja^TO%V$B!J&$<FMy>-Nn=<fipkE}UaC
znfZBnd>#}W0Gu@X%H^Yn4xEWRSzBG%V{ZYl-%Yw1d-XCJEhi(MP$-PKdU-2y)9J|L
z+;+6DL!siXUbz-?^;&FnLTt>n7+}%YVy+~{Tuy`@qZ6ZJWh^E!=4yQO<-FW%>5Ma%
z!+G@Z!TyNd;aiY9!?)}KuSxipGbfK%y?fj17aN*@E_+#$d_6Ha5!j7e35khuaS!j`
zC$_Zoz7duF4dT8jA}n+u&d_W0*7-QYP1C_H9@iP1f#}yGaWnM6u8(dOHsW+$%E=(*
z;LLiG*dnk07#|(X>>=I28Hn>ToABfCmgyfqWc)N8{OYMHaQ+1Ps8#JfAO1y|N)m~M
zJl^|9LVTqV|BkZ_3Xv^0-WMnYy8z?@<b+Z$g{a8}-Gb*{=^=f&CD+<p7qiaKP~@%M
z8zV{Puh~xya<YDx>myBpJEp+s3b+^ygmHZh`_`{=(@aaD9*h)1Y$SpMHWa)vU>E%l
zH!=6~pG=giii!#i4Gk$jT3cJUNUmo9eyVj6LZXiYXX$~kMvop1E;T_l6bfZxVj`^r
zNVanw5($df@JYbg!NGw@B=Y(E&IhVV)?Wi&mVz@l<jtEm(xc4H%~>qgnl)>r_2<l)
z19v+oCkKr2|MQ0Z&3f0s9q0nZkyc2}4IeP@lw1;=J-IVGFW=LX&o<^EJKCBRsm4ik
zXca08MD{sJ^_QlSN-F)!#jk%)4)LY<=@O=EW2R|IOuPM2wnVF234XdZK45G&a0X&$
z+-g~9Pw~~kP4C>AcBf{0E+Nm<rk>i|12{iTB+u08+78qdcA9qc95bN|IJZLSQ!7Xt
zyePi#kY!KZ!;8=|U7N7x8x=UKq|(1ZA{qwJDCNimDpFm9hCqfDyI2WG_Go}KX`%f&
zd1pJHg@?+cg$+~`L##K{%(}5wh<{JpE+->1v?O__8ROb2M#2g?mbiv`%31C#Hq_NW
zy#(kI+Ll3bEA*;+o7KR}MLX#vqGJ9}@8SPnTrSto&riyRHa0deIA>&J3>Yv#T0VdN
z{9(g}!Q1`%^(!hW0(J88@}w0ePMp{ooSmJW;qw0d`vdlr`bYy-y?y((^z2z#SyFbE
z3UF>=VIf@M)TvX-!TH1q$onxVDM?xaP7O*x3(^|`qehJa;M^+V>&|xx0s;cYj2R;x
zR6#+(;>C-ldqKCsA@}axla^>|YQB2)s<gB;F)^{Eq)P;$&qjP<>zIWlYG29o(EgCQ
zW>~3tWW=Pd^Vg2K{UCO(Vz8CYePSN4t_<O(2mGbMsHBogDyj5ICFb*3_b!mvOeXqj
z)BLo^ep)17E#geg-Wb(ald#xc%#pKHM1V&#&mddo+fe<qsUOm&)L65$XutQc#+m&j
zo;gcf_E@s7CT^C2u(?kDkhvUI(x2p2lSsZ$-@uT2-z%E0X3NS+DscY9VsrRaHJn@b
zc*U<|cXINca}sW`Zr%|y+iubDE2}{XFg~hYZhPRuQbeQk3W`~GA1FDkn9g9tUgum%
z;5;krv5)-fT0u#fh$=rB8R#T8^^xH9J4F@bODN>MtrQF7Pd$L~3NctArdfz1sOFcu
zNF)^0J!2#+CvP`kArXK~se7!%9O#t?07yGL7Qi6s0}+xM1R*44-!T3=8D~_nn3EI9
z2$t`Lt-MWUh#KSi8nH;gx;kI(v^5in;66JGpGBTiftdRuUN+-1+&E>AwOGL6WJfYW
z)D$^vD<OK&EDhO@as3xDr{{%%pSSRMd~|g5k|j%ATwH$s`Df`$UI3Dzp`pu`ExUX7
zE|bZ8@ZdpQTwFpz!u9LdDHIB*0BAHmJ|2{S^7Qm{se_+TD9p~z28CcRU`zsm05EpT
zmMyDRtperU&fd__aO>8s@bGXSAD=^q4gmzl;W`r0zJLE7J}G#7{J3q2-;*a#q=ldY
zC~0bHx_0fFv?rhh^zg=w8=wR5fztJK`T6-9Hf#VrNli@!gGx(FllBw54i6tbgj<e{
zjeYax4gBIHv<noXP$<wnFmQO%{Ie7?vJMJ}-IbcBL)5G+@}y9nS9IXv8Z}wRZ<w7U
zdSYkvT@fbzFOEeel~htmrB5y~hsAsGgn4m0b%#G`oilOml-?L6a0+?5e=Aqv4On3d
zhVwX<ej<>JoK6h<rkBma#t59uOgN;x+nnbQ=z)`Ek0r02LfY&uA}WhqCuTGGg%4R5
zwo<muA+2-jWv{4fCsX$>6syuveNs_Rox|!_lQhhlz30mAB`jP`9bi^B*j&)imeqoC
z@+@V58F_#iBPLOPi()b1$7RhLW@t?dK&GAd2&pu7QVMxD^wAR3HJ~(1=>yCNt2TkB
zjQE?BMQd0oX(Fba2pBEDBC#4~c-x8avE7857eLY&f*ou@IdG!)1LwXhYtXUAI(m`9
zBSb`Ux4n$$YdFJUjfO*;zVZ;WK2NX650#ip;}%6zPdZbP{UBZrf&dTzDdW6vM;!{9
zc6KJ<Tt%MAo#7F*0A*wbHFuh`)Aop23euTL*qMri{J?t*?M0HTk_H$~-eJOd21Uf>
zmEEQV$zgeVup0f?Br#v%n+rgU_x7ROh1g(dq|iY^LKUdQ&5xpN(}U)Y<(;M5QIP*O
zQjHSak9K+*zdGYnzeWE&$qk_Tua#IL*}}i?bbnLJ|7I1wVfLGnBlXsXsCixa`vzsy
zoc@BcV)y%+#x8a4WRVP^;9&BWOT+BE7qD{=+4MeCfAJmr>&t-tD<7FJ^RxYhNUZYw
zSLvS=_%RU*duigHGN^V)Bx)7)w%Ill_ZY-Mtf)<>V;{6&w)edfsX|M9VsZ0}8U~ou
zs~gn=&VAiIRVX1~EfjED-&TNbOaDRr;{sL^h?^0oF!3KX@;n@=n~40ab2;<Qef$7Z
zV9exHAr@b!V}(~Y22c!kH960u_BU-9G7^-_Hi&VaiBUHus2kHxbx#fgK5UpN-c6FQ
z-hg&{KX4NAH_$_Df0G9DQ6eghUsZ#fwSc@Wf|-;e=JDuJ(V%Zl>PG0H6II|WqBgM~
z?jrB8hB+5XWZZ557}*bYcBw7o^Ga{gPWzC;G+|DJ*9$Y-7Y>6GuuTf;19+K!={s(5
zte8pcp$B3yzoCeB-j5vI502Cgpj+ApC`Yqoei>rYAOv~8J^RsK5e>R`CuX#;4h-jo
zN-(*Tffg7@1h@32^3w|I3s}gu&UZ6j7((zq4epzWgks$dB}LegHY4Bxb{;bP6vFDz
z!PKLZm?>KY4aL3qfmKPRFHzu%z<q5wl<l{Jnw9+m=e(kgTkxXq#2k;n^2nQ*%$Kx>
z1(Y4<8-~v<R{KhEN@xi?ujrYbd%luk^IFTQIl%Z`TWY|G%Bnckm<}JgdaM9ct3Y*$
z@+1<sR-(C}oYWrBS|DmItA!e5$%KO<(}h_j)R+hOtEu?gnZ!5p@>$p8_~6*rUC#nu
z)v89Q94Cpk4Z2!^;*`~L%TN-l<#yRdaRrj!CmK@(4NbZW)lsLik>9y-Sf!QB8&6xV
zq~a4E6N=x`d2PYK+g(A#tz|WA&>+3*`-!KDLE+o_FJ(FTi+9y~qf_=IWbV3@nvjw%
zQgF3gi6I}0d%XK>^0ky~o<NjW{CZzha>S*Fd!z0jk4dY+DRWh-!w`>Lx*ZvxLS^%c
zE8g$BkaQp+ch9BN<aC+z7BXtUw(LKD9h_+A<p)uBp1^-p)#&EPq?|p`=@C&64qi$r
ztyVZSR*i1i^+!VNy)5{^{IaT3G51f!J^elY>9P1HM`E8Gi2?TLNbDo<coa6Uef56a
z{aop+7?aCCck}7)%a8X)KiYluLCA?%<nfr0<FUafV!<O4dKw>mB4PKL1QHeUPy%0~
zi`O3pACC(=b$!d(q%CJ}hn%_wEcgUe4SD)T*tuK5kqIHkqLD{0AG&yp!uZlJ>Qqum
zr4JH$@3EGzr(wSKX#)0@2TH>fPUVaq;Rs4VImT&*pblE4PFS`M24^9@EsrGa+!Yv{
znK$lqw8&!Pzh8=T^}|T4X`)+OZfHFlxTM9^j~KdB%;h#sod)<9Gs#`>t`h78a7qjc
z=RC@Q$(MTe65JjjS!QAq>)LJRwcGS_S3u2rNrR*v`<RkKu#1)Q2>f9STS)b0_GqwI
z!&Dah6-h`SHdu~sP&WdjBW;6{IDj^Z{Y_d1n1a^C94`HG9Ow^d7Crnc6*!B?4gAU{
z{OT+L>RETI%@xt*-0Og1S(57c6?fTB4l-}9V?-~aU;3VLbpbPR4eP-!UU96Tp-9Z8
zeAonuNF-=_#Y)>l`_q%W(}IK?Obk{hh72HW)urqmMmy)reiR`<<%xJ57n347miOu=
zuPnK{l_v4tKI}2_kC;W_zD(p4$8%pKbhqL-5wTPHNH7o{Q_xVzDTrdFY-J{_pkJ8}
z4LNQJGdY-@b&~(~ArvZHq;i;1Nu?fiGo9FHVz!z?=Ja37l}7{1eMKApQwai4_T*f|
z#B2kvg3&*ejF?+Iz$s6TleR27Pl4I_FWto|sNgvLT;cR{d0B0jcGe$9JN;C#;I|qn
z8U1<`<@EDw=YWcY#~t1^0%7aCE$^Kdlt-nsp%7qFrzI86i^`vtboqh0nu_~2q;j}#
zv6kyIO}A%8?)l#=D%*Ih?sZpuUUv*Si%UR7+#~3QBs{mv<%#{b);KLFKbH)xL}<kG
z$1f-u|6S?$?@Pb>slsXb8(?4qJcSFZ8lh8Xyr4NPE(g0NEvOj(LurTkzj6(H&*4EW
z!(%J2VFn&TIWBl*;F_=L@=Vt?fBd|XrMqjgUUjUWs>cbOmX(8X-OcTi^y=h|7N><3
z9=}#H<;RWw+;k-+Q_E?UhRb@5sey~Poss<u1b-4KMb+-B4;#8H3)pt{RV6fSQPW89
zU3Xa1b)AkEQp<V6>V0u!j{JX<W(sFv(4W?B%P-%{0#DB+r|Y<`AK;ACblv#NzMj*;
z7raGT&qfaNK&m@$oEvl){!Bl3R$}74Ufn5ZpyyT%mkskmPNQ)016n?NgEsftuyW5;
z_`u__4~=|+b-hA$yh9A91x;AEd+PH2Q<v>=S{~uFe6Q0|U=hwsBc?9ivHrjXe)|`Q
zz~XvujO_2cQNv@Cx@+Lb`P;nL9`OF<u-Don-fIte1|IcXd(3O~zMsR6p<AGDjj*-#
zhp@<jZW}dy!uq>yw(t#hSrOs3>X64Tpyom670|g{S04b!davI7%Yi5oLzxGQN-C+O
zQa2G+tS9z2#q>7;*x1+~%HZ6jZUj)bQQZhHnb@sUH)6!yz<s}@(PliL%esMP%`<<%
zeHQ=>Gts?4!m!Pgy;{};iP_NakC@JAuo#W&ZvtQwPVw9%nXbi1o&uw(n>73QgPP3S
z_ppP8G<(eE6cpDP*umgTznVZWcW9nAPwKwKfBg=vVTRQ(YnD9LNxBF1aDZvEq_9Q9
ztZ}#_xF+Bgy{wlE0i^}GYST_%lp6KadD`*QoUCWEYoDn{BC(Rx)%7}7f+{HC2ysIg
zC;=VD%~=SZ(k{hzfHU_?xfA|(>5~T}2Oks;O+=~_VBZRH??sd*F@WWNjqjhh>v&a8
zi7Kh|LE;O<E^Ep?R+m*O_0Y~OrM6MCl!YhdKxv?XIVzrOmYH{6xwneR`FM6t$|NF2
zW+FyqJbK<`;knD2QnjHOcHb3A!Pz6QOl?%A+NdnsIYm|Nj^#YQ$kx9|%{D#skG8NO
z&&p_h#$>4tPrs51uOWgCKbFuu#JixcL#D^d(*2il#}Wt|4%Zua<o6ku?Yy$|eSOF6
z1y67mdvKOa+c|~O+YT&_(A2L`%`ScWIp{1znt181$|c*Y7lyrcUs;M6n}rygJ$1>e
zpTgdN!X-PZaTMsN8&6vh_8DNW$EwoBTi-5%ZOhw5p>I|ntmg3AUbHGSXX=Vl&=Xy^
zXX_5u9gZPvIfWVVZBZYGEC>JM{ED`hrL>aKZ(=qWSLF3B;Skpzu2CD7(a-4_mh?s3
zSB$!wrRTY6u=iFC_ptffqPnflCvk*F6Vr#z4zl+T{{7k`I;X>r;Z<#u%jyGzU4sXC
zhYxmNzv0AnI=}m$3z;VlIe*W@ea*p`G}tHL%&iP<kC4GWziD}et=e~~$L?j9qbz1`
z8|b~gzuT5Mn@_-vJbYeiGJTWX`~xPl!w30n(RSIediNDNSB|$vR(XS!-_{lT<GGTq
z9gR-Yov~w}&(47!$Zu90EUs;-Z6?)VTB<Qb$eMt)0IO;wG!i;i%wZ@TkM)rn9$N-`
z?J$_O_4M7BB&GmI;Xp=ZW2w*vmdqwl+3=SOd~W<hPxtc(8#sOYK#$EKr|&k?`8X<9
zQlEo`jEkjk!8V@CB+yujX8Bc8NhOu!im-YUJdcdFpA1b6>)D`3eU0jGT&Hc>G|m|V
z>>D5Y*~^d{b33s%11OeQV}BF41YmN#*(f0mx^)b|8ErcOa%{F4hneDynK~VMlx{eB
z5*)oqo41j|cHv$9>UFI#?z5Ub=b#2a?Kjwr!}<LPdeS(0YK!lW+@hDQ5^!#i05~97
zRC^yVlBdlQYXQhVbW&@(>v&ry2bf|dpbZSyZuo&i0Ihc(zK}pfTaN{&1_u(B210Zr
z5HwA4Zv-u<8<Y1Q71QXjw>etksx8FgK}owYR1?rDsicxhf2&@+XaA4A^8jlq+x|9=
z0s$1uC?Jl#i-O%j1(HydV(-p4j%_Sh=!7QrUa%`x>|;ZUZBz&~6a@ikDx{K1LP85I
z@U3%B2vuYp=icxBJ-=r^d3N^M^(2tIS$nUQ_OUGoXff|(V-afpl3BSu>^wPU?Vb;1
z6<^8Dq0!<F<D)x_k9w8dWWv^4GStRIjamLy<+#k&>Al*x=&od-UFtlKEUXy7*=X5Y
zwb4}H3ra^K3Ga)4m>ko=gnILN5mu7+N#2tbuQrPM%k~^PuL6sPTwJCIjg{zG(K?Kx
zF7wM#jcf0WjG~K-5;eyyQ&EEqQ(jRsc)=UBG1Q%xkiBFubfL7WP+Bc6t`3eW{9#gb
z$B8l5o(Lqx)gozip{xc2i$~PL4&$QW{=7;m63d{xQIb}x;A8ckk1&UB#P|o1g|aea
zxo|V%(`6$TzUercy2M+#6D<8>X{Twi9gL~h!W;bWfhcDfYQ|ArEopqocLC0qA4hg0
zITNh>G>D#yy#gD9b0$NuV&~Ov)7CjS22kJSwQL)jm_2lkhc?k&%hJ0m$#vKD7xG5U
zE9>e!PT%ikvBvZ4gOYlvJ^z5(%f_p-wQpy#``SHMzc@V<oGA!6TX@ZK4#3bnBq8lb
z@}`xC9(rGUp<}*Lm*}Z$vCZ>hNXyL{QR$3+cAl&E-mC}bXFY6uwJiPBEj);h$7Pl6
z`YYoW$w`g@S|pFoB=6ocJ#W2AYr8(YZ)Urn??j{!Y<#sXw(h(BtUaUP!i5W0I|bk@
zQP<<o{k59TU;sbbFRl>?={kM5X13^YcqEla#ISVx(zQ@)uZA82^16NVA!+wk8h>>R
zIYy?666C7_2F^ltz2e&sO7A}|wU|{-jV*l`Rsxy7B5Sc@?+OJ#bdkC~TV0Q%q0gxY
zZ~$1yvr&vKQr9aDL(Yv>=QFrO2bd3cs!hI@(&EgSK;)X+A%$kPLNi<bvbA-nXD|$|
zdG*$9LA})*3ZWsLU{IO%zVY(Ko;!G`Rh`+TZ$)Z4lvJi?GIjdU(fSO7;lT1ty`f4o
zw^nZ^P&SmHi9f&u^Jaz%7cN}?Q21_yuTwoWx6iEHPIlh=m3y|^2ItYuz<ErRy-Vh7
zx6B`msE2MMTX3tY>qaeot7b&?Ij;m~T0J;lf2Op-d7Pp{g&(bGS&Zg~nw<mk)r_Nc
zEaFtY(d^JsY_?|1b<6B9D)P_`P8|Zyiox^W0G{u<%xcyHV&I+--En;Mlh~qWmsH?<
z{iz`JL&@7*WlG5@5zCZd#t~I@x1_0=L<7_}YaWwUa`(9?G)9cQ&C@@Xc0#w%J0AY@
zB2n^;CV5Vi{FPKR*CR`9Z1nd7&R0Sr0Gu_g{4^~*mU^AX-W^o{r!kq+SMBdg+_Wj+
z9=-6hzt0DT#rCt_)`jS)MfNhZb-VF0MRn=K{Rn-FO>6zH%E}w=<oWwlJzL+-)?Qu6
zZtHem{o?dg;H*xhIJhV+&LOn)9;8hhj@;%})h+QluRYC4)5@#6l~cgINJaDJjDEHr
ztLnk|NYJxh)|4(}Ujhow;?Ha^Zzcd|vSR?j(nE{vt2fj0=Bw1U>qDn=+|Q|-dumy4
z*CDz1oeycxD7bLp!qrXzIE#Q@$6H7a90xq)m`s-*I}41=9yYP~%B>Pew;w1ZMb-Iq
zz*1yObN2z2Z&MX~VGUm>*?W|WT7G56&Qvqm*#1}yoO!4>FyZRWQVjznvvz9{WVTUC
zL!Xt0Jgv&i5v|@V7;6sW<`WE5yRWg+&<w*7fYp4H>GIeFWQy>Gvbq{lMO-3_U;tRn
z96F)4s!F-{6}?nfQ&Y_oF!YCEW^v)ljbe}O5;Q?Zv}Q}braoda9yC@_+;A92{w9^x
zwLb$jE(?~g!{#s9b3|pfM$USpkE-c08zmti`RwKYrPmD?uK%-AC=@X<F~PyX;o;#7
zM(d&O{<-9G`HmesR;*Z&o}S+Fs!%9AaNvL{9&}k*Sx898<HwJmK7IP+$&*Kq9#N^(
zs;a6zd-h;)nN=z&DLHZC#OJ0h5{V8SI#gWT<Xq?N+qa{mqrcIzz8@j~uH({+$1eL8
zw&ten+;LLO3jf@yzwc)I?}4)sb=B_NOnP~5>jZs^cv=SXuJ{}{2R&83%`7(~ENuL1
zYRl2X<D@V&q!$TF%C<vC`E^Hb7K~y=)3b<=M@JbnFBt`AX0sk5-W2^XF}mY~=tq&w
z;~G4Q6#W28n-bf1M#6|$iNhU~X{0snQkb%Gd`2lWhnM3*Fz<7>ND0n)We7M=j?uM<
zGqg!Cw5B1+CPCXQ4(|W=1J0L25R0>xmAAIJ^I{6(@3gSAa?jOggJ*f_OmiJD%ll<I
zy^ZGbn%bR#A>A#V2{u037H%Ww`M!LM*rtR2qWxsEd9M3~d_j}<;mL>5UCExEtq}|L
zy4_d4IK2joGttAr<tPTup#aY0%}&Q3K>ic2gtYOL263A<(RJ`VpWyhcrp@X7Y~7kz
zoUJLHEq$~s+{li{O4|1d12|hcp41>wG_8Dk+IrlH&S<+n^g7S&tfrZ#j<tU`8_KTp
zkK3+~3l}b2e@g()z==!^J-#O57OZhbNaziT*>kW$gnTTDR&L^}BU`vjuHP+t`m*fV
zE72x54(1%}&O=p)7&rrOax@J%n)-Q-GT5nP3Bge8;)D4`FWPg2gR(G&r3kqLi4Pnr
zkD(#P?xrRf0B~%>ws4iB$kDy%m-U72+w1E6$roR~q1;eC(4<x_SDDLeYii`t@hp^%
zc@9fdy(!A&-08L|3$@sH4^k+vU>i?oqcbT$njoq1^tg?Z1Uj@|Qilr{u5T(p+VSJZ
zySlpi`};%Yx8HvIH$oLVIXTUrKOZPKKR>_aRVI_!qeqXVq$KRAR4NS!2sn7~;PmO!
zZES3Ssc+r71z2rrY6>+QH_XV$=-$11L`3WH#prZ8kx1n68n6PEHetd9UtiyEx3cd=
z{|Ysusl!OBgKK7M;h?{uka}>Ac-zDrY_qj>a9)mDW&<DdIvP>U|40+ds>iKJX%(EW
zJyC-5^gq&}tBI@LwH*D`o01<UM0Xe$6&BkBoELd#VWa$D6lu2h9Zy_2d=YAKzSJC?
zBi~9t3(ly;xx<tgyUiJE{BzfAhm?aPuk2TElqS)r)DmR*CQ(68TJsXwNJ?;?5N)$L
z-RmTM&t(B5uT%6%D^u0Re@7PQOQBR<lB<rDx0bon0^jQ~9|TK0&S{%%(Ih%UA%W;h
zT)+QALGuuqja67y_1nH1+N5n=EIqZ%JtzKl;OLX2VT;_&)*Z-TH4jm7_F<GR(OuWd
zN0;QbcF*4cXH5(D25?SD??Kw^5)h2NmBZpc4svkUCU4Uux=viaKQ5<X8v`|s-rwGB
z^}ZV_i*t7yingUMP_WUj`>(x7x%)El=3fbSUM4(x1u5~t%Y>UxqHl*s-3pI=^oqt4
zA@eUNl9M-`A`rc_$v$1JJXamKdpekU>QN+`UY~sQ`qG0Jd8~&2sOTBzvs&gJ+ExJ0
zK05-NoX*3A3m2|`C=8tGTD=+F`XhKqFrcFuI>7)+7(md5BQS6luGqjuF_S~+U4SN*
zCbGr4SvV>cI3ruTQEM_?%Rp&XCg?*6(6_{U7t}1;b%?Fi8wj*u+6=~zg8-TNwhP%q
zCqRV)!;vMoA2gn4ZAmF>=mZ35bqvcMKVkkjNUUMN8alDI67kkmTU}l7vo#ytl`Y!j
ziXd~j98zs1@}FKBaE^ywlI%L9>JY*3`YqxJIHOa7o;eywKrXtrq3mK%Y1nf}g<Cyg
zZitn+M|p;#d#dD!!c<diyGxNv<_m6eqNkaD?5loLLmKXT;A)2B~kmnthOD=L)!
zc57;CRNI@e4E9)EU9GYd1D2}tsth!Q{H$5Cf`WpYbp?-DH5QAdqoWfQ71eBRo}QjZ
zjvP_7nmTnV)P#IhRYOD`p-_lD#kxZG#V9F&!C+WgTB^VqTZ>pM#%$248LH~5W)An{
z@7=`z>x#=L9``R%vk{fJJ}rm&HEx~5Vv9PAi&h&O71<n|5i{}VWzE4EJC6*7EBtdi
zjELNFG!L;jkB(|(tM*eR$*$a)3(VWwHbGL{94!yt<fxfMb(|8D`a$_a69&!;C|UKR
z<a8JjvGLHSf%B7KK3@UOohHXTr%B2x6eZ<~5;>a6YgExtKe8({rpCeYosNHM*8Ej+
z(fJ3wo6m&Uq3rZe2sp#KPTxoV%&Qf()o3SMkLG<>XPhsFQah8~2v*+OB+8H_2aJ~Z
zb~pQD4&}<=1%8?&H!Uk)9W$rjc3t8Xx8+TRD=Bx_e6$PES<A{ti$u}3*k-(Jd))h0
zHocsC7}?8)(#_IOm+ZdgZ-KM9hlBHR?0;NXLRt^fCa06Z*ncZ{L!W#Qr%T+bMfTA$
zcP4H;NasuHn=|{{xv$xK1A8q`-+JE9o}xFyL(kSzf2K$OnNCCO+y>8d8EWThG|y|)
zJnupF?uOP*KiPWrv~(T4#OGBKvKNR`B)8mjN{8sFW96%5<<*0{dEm@V1MQsp+dK7l
z*wW8_^TdVQB9a=8;K5k)-Odoq-3Zp(b!Xt<j0+d8Z!7?3F+iow0(n#%vT2z-yD}*y
zU)!+2)VhL}MDN^(X)vrAI5#uJwhGPybv@~k(}k3s5_Ns)@v~x|Jz{lz*~tqcXKxX*
z!+9BR&hi3H1ftnv%_<V#Fi@}Ba22M(?)($t_>0h6xOOW>zM#@aVSu!VPcZAbH3d9I
z&%uyqkDgkKenBn1c)dVFA33V5sbBFfLlzh$8a`P#e6rZnADQ_oN6amD`AZ}s1AH?s
zK6iz!*|0?%VQRm<wPodO6En>17|&*&(&SxRTXOZ5(yR8ciFH_9@^9-G8W%2HjRcT5
zZQ3+8TNy9@(4j+X)~tcd-o1MlELgC7`EsCFc$%J`zHQq!KvbY<sBruC?K;#_ymIBr
z^73*HhqG$cDladuWy_Z3=H|ks=;&x@yLt2G9Xocse*IcoTYK=}!Sm<O2lCyxaU%w^
zNl8im{{C1$ojZ4Kxr5r<+xz(O<5(Vmfk-3<1_nYWK>F9NU4ugC2PR3U(*b@rZQ69_
z&K-Mud$<bKux>3ZEP$+GhO1Yv4h==V)U92+_SrMUgUzm8yRPj0<yYHnum%d#;@;v=
zq!bFJxVsgH;_gmxm*Vd3PKvvGaCdi?V8NZ@C(qvRUhn^K*7@?w%7^4$natcXbIr^(
z`dt|EzR-Ftlzy+3n7cG1D~k^>ndNe__<B9YShESG>sj=E@QD9P*!;4VZKYNyg~UE(
zKR#UGTevhdkLmbVuF+ve5AY>Tg|3{GPms`l+0v<xVQz3+Cp5^Vih!9>(^I-4MvSk!
z+78ve^GXMqf)Oi{HzxYYkPofL{N*a~s?>RJm(!A>w8(0%?3jd(VzMWyB(gn;p_Skz
z;`2=+a-wm=IM^U5MZ2-|Zku@hV^(1DHgR^soX2S{&mMjb&+eden#lV~xLw_sGH-+A
z%$I~&8>LetvVD)_$)4XO{<54dZ8?8^^|y(!f^8S>{Y9DFNTJcn@<wXiF^G0&B!u;c
zU*2j;4hYI@O?{rK+URm50D%SUVUgL?dEzI;?)>ihdstej#{0}vmKqIkV<}`^@z!l?
zx14)k?j!bU80S09jx}T!`-QF4mdMEiA5=y~Sze;s^-$E*irq5^TjL$B{#7F41zwR=
z<CUb{H}}Vs?IFt_%+gZKQVUE9<-k&l+*(b;tJa;XR{7ofohzC%aN!}u`}CD<gcL48
ze~Y^_w>Hc$Pbk8#o+CcbcE8%{tQCBWs-@=RJXl=v;6DEV{Kg_M0Psp0Cfc+v8F<Vp
zYAsJ`w8Q@b1<(V!T7E-s^c~Btq{$w<H$D1KAGvN0>8k1JMX~}lClw_NA9Z~!(I&&*
z&#GP{>^2g+qJmUf24J0RHn6gSp#$u(z~M>Vl+u&b5dK76w1l#gRDMt7Pr67Nmd#=8
z=5)QqVEQsg!9{y_=Z(&3(S{y)1sozr5A+XS3?0ukRhwukLK(qdD?@xnI<_;u5&CiP
z?MJ1nMXs6$b=d_RF!67W!z;9zKNx-{l0kJ!njqyal+-2D&?Xl()>Kn<D4OW@fiozf
zoAmLt3JQMFl;Jifu40*IBrMvE6#hdD&}n%y{%DWj2zMRKmpVqmVNI}2nJf)8B5OT8
z(zw#>?2U9*0167q-=M%Uz*LS23*oVTrx#%hZrtMPs>l1=tAgWBFT9ZYu#mR5_pA5w
zy|8zw3UucT#@|r`CO>&<*^HoUX`icIc(!UQGA>#i6k}uK5@1RS0+@)9FgYm+=HlUO
z?cw$LLFg8`jp*U-&imn<MBxV7?PB=V&zY5#HD0p8unz$xIN%O8m1&KW>Fso-p5og#
zgIZ|77!op#ti$iPhh$PwQDJRk10TR>9q>xp@OW7qBSNtNqv-o4K8*Gn6@AVo;1R4Z
z=gn1I{ixWGSGH&*0$QC8%PII*DRDC?ut(Z4k-nd?(nDF6|M^a-L_sz26lvibzCxYq
z_uN{gyOCN;su`G^96-`GF;EZ9W<gvOfuFutdK=qrE?1spNYp|$;={Rsd-b+bNw;7e
zx6jHNh6n|eRAkVMt^cg<mqhx>CX=)VaTHd*SyWUVe@(06wM!iivV^Iq_oo@J)QiBS
zU`q-L-l*t0H}|fc?V&qFqS?V$AOWB0-@*RV(N0$E`H*(fw!KRIuQ$J#?3QqgAZ7Cy
zBHuhT`<0cGojf0M8^HbM8cU^~>x21Rq?5{D<QCZSuR1a9G0>uq<W}>HA(gV%OnRL+
z7Sar^WHMzZ7@N`O(yj~No*{AG9-7=2s88k5yx)GtXI2Xe)m)zbzGcyCVr18!w`}x7
zRLl-%0Hx@ynoQkWFBE;`;#ELW)5|zG$B+xHZ4I8;y!&eFh=FAB`}((V_+5(fu_(Tc
zOa#Ns%GvyD83;6d>t)`#exbyxFVoaAZt^JbaYeOnws}iu>(axXiaTfatGkt!`$G=I
z^}>ZV6o&})1EBc^j@8Y^s*8cu%T=d)iVNHue4>rgO$d|7?}a5qOJdk}6|Bt%frDKX
z!j8}94K(OJ<!?vkawAhn&(Ndzq>3t<@H*5A`~YBJ`q!JRvleWh+-3fK$@X)CW?ck;
zzgj_8zs?)T#}blX%DB3lTT)eJR&&k!@Y!%%M_t|H(2(5SHMgD<Vc_z|ic44^QPK_j
zEthfyR}shZrd_v9RjYSyaG=SMFr=3CMNedJUc>y`iUSOE&1-q!1>rzyRV02jR^>`w
zhKc4sRJ`MD)D#iB2GzEzqN39)>>0BM9<e^aM>abcz~j>C7Bmo6e}?x%{)B?m>Hr>u
z%oRUBJ__$V-JSTm*P_5A6crW4`IkdeeP|n(cAG1Gyd>PW%_f_*Myn+hRMZcA(40Oa
zGxG};*2i`<9kgL&zo>MF69wsksCk8t_D{ImXn!!Uhev<i_dsVDnmixQy9b1xU=h$@
z?5ip&;Hri|@Ni8H4Ro}$fhbJ!8e@54kt*H^k_9JA)glNe7wfHovLl0o2!C|w@I>sG
zXn#P-2_V&7Z%>RHH}B*hri=EHY<c1&(unfSL{&3!ZelMV0sUXnR!bydzpUnd;p=QU
z9%D6Ews2QP-KcY(*yWK8o6RC!8(}K~x0DFqhYK8XecwlC>Rje+TWV-=c^2fbJ#omW
zk|=_F20!S54ZhnsN#9jic;GoaP?(fi=H-?3HN#OwZn|a==QGo*p$=wX&6#?f8a+UB
zt_<tX`p1D$b(Tw^gTYWs%_r_0vE_JNZZP5>`{S+jGRI|6FSAo?#IMwzBl`=}N(=KO
z=v<9W_1I9#GjopVe2ml7DZ8$rXwW$WM>dVL*p{f=g2<}t`;F$WKuxAdJzFN$4~s7B
z?IW1Nn}-A)<6y)|Pl^O@{I*tx5Q(FN?8cE!tpkQg8vkfT6(!YrSN*ujTN^*95=fKr
zR+q~s2rR`)s>$g!>ksw9hAo>vRweP-mM={57u;t_L5v`4>8G`}52^H%Fq7VA>&Pj3
z$9U)US(r4<mUFW{lsq6fK1;KYzS*P1jpnITGa{LL8`*naEL``h9L1@3DXP!5O*gR-
z<Voo-b=r}8RTg3p&QL7UKtEQz80o~*B8z<srnxg)-ge6=7v6lsgCd*#jg?s&XzR&f
zFzON~uIpfWVJ@{OSO~Y|1lN+temY801c+$9;-mnsTy;k0ho)5o9U($_C-+w1C|0}^
zLY9x{-U6%KWb`y}(s!$x@mU|ySB#4cD}S=qmv0rQ)yLbRW--qd5Iu=WOwB)Ni~+lT
z;VP9m{QKD-oEp-p(FapYM~kDn(n@d{q3g|TkMJb!q3|PVviStQVUoG=U_ujP>@bg=
z*}h5)(~7)XFTbR`swd&}1s5%A1!l4iOVwQjiZ?GcD?^uJw>W@5!ovD{seWl%s?>IS
zfAgk$zuuQ|a&j6z-Rjy}SXdYs*k34DuQ!|c_$g#)e0;pU9U37%wYIg11nZViVj+J$
zOQKO$2@U>`#jF#&QzV;tkGrj-tBZ~kmF*xWCwD%RFTrXbqH2&c1XHfMjm8S(wA(yh
zC|C7vf;&t|z|z)UgR-{{i-f1AuaNn^F#EjxTdLN7M}2tqRT3LmXnz06qJ2{ZUjETI
z<4Xpt9mUT3kiJmd&)_`uL|a-=_5|!BnuV27xQe3cAg1DWRd>GbJi3>$_+3`fpyR$x
zQjRG4!UrvI)Q&U(YAcT2+xOhF{$Wd4bkip<@fVYS{}_JEC3uabEIUH){)wE|Mc?@}
z=F^~u9IX**#(Py}g7Ooc+RM2J_Lhf{W}_ocQ@f_OrUku@$7e>GB=#)=ogb=SE6o#%
zuM(&oWR)vgRtR;dsy|NiUOMd5^5)(21n)S^wg*rdkI=@y-ZLS_)F7+uGwn}-DXSAA
zJ6YoH-!m9O#a$>ok2OAWwK3ea&yJI2|84P#Um~<|lITUVLr-{~ZY9kPhg5b-h}E%-
zxp?www|s)h@?8ODOxabcZ9ot|Z&c`jG#-T}1n+g9cW+A|kFTd2&UE~|pZQO-V&{h(
z<SyhK*YQ5BU$gVLJh;ez;k2oX<r$IL>H)`s$q^PAPVP6Y_4^NaLR4%UOj4VIQ=1Ca
z-&^$znM++t2GZNP{e)b<Yj}Ja|NHXzG^W>h*rKl>krn7}h24DG_ST?l4D~P2TNrLH
z%%<BcHhq-HYLL)ol!zmqe>I6UzTdyNj|wkMi<WXYc1qe_ypJh-I;ge47B?&YucEiO
zV^p!j@1lB%-ys6zQ>0ddMBHLb)=G-qnvmN1X-uojKk<pFCbWfnqq4y@HR4~(XtwbP
z<O5}}fc)%O`>~s*J%&amEqWDC3JO2%2YY{otJ#SUsreKjK@nhkjlHA$)?jr?%B9QT
zU^zYMF2fRao40mcFEE4{o3+20BjfATDJK!?$?qjdA1S}8i&XMkBR(R2)rBHVnsTw6
z&8Y{`-o-^1G=QS>-R(#AlO2X~gMUPYO_VNFg0V4}#idn)68eUTe#6F2geo=L`3C}G
zkPU8@D&FDt_BIrwS$rLXD!jiUhwXaU9qf1do|VZ-4A?_x9>kyvx;@`$i{`Wd3j>)u
zrWkpzil?1TEr+CLNW{g;(nZM+jH4n|OIPMby2qF;jY|~thv;mZln*NLXH$kBflIyz
z-)-(Ed$uIsp{7>o+U&U0bWN_&LU-4)JR9#xq-<UL_R0UKK=yut$t|<pc1qifR)H=l
zC4TX2=^F@JQqMSrL~;bXsREYg^|Fz{K?Wd0W|Ppi(8QVwq(%rH(!q=k#<_))TIvH=
zg-YlnN20{amJWPmUUNTzLCW;xX(1kpg3Apj+>nfsqYltsMf+)avOXDPDZ7>ztTEyZ
zitA|ml<j*Zps%Z~p06M}tz;V{hR834<U!>2YH@l;eI+b!E-b%m`!%-VFQCCV7L0yM
zvnr}jKkF*uISMv6QRmRsvF*GHq8gDIn=Ssb;=R$yyVPq8H5PsJ@Kzim?0;MbtH#Is
zaV1VY%n$maV-b<K=3GAm(nDhk)$tQftRI|;NyW2$FQ3+5Qx8eod7SjqC-WZXF!i!K
zp6LQo?x*y`{{xyNuyO%etr#*9_awCG9qqS^udB0l*N4?(93W{-U_g7Gz$Y|6)?Hui
zV)-5DKpGKQx)p!w!pAJ!I->&^Y&fyk2WT>LIFY8GEfMMy2cyJ_H>}?t;$>s{eaeH>
zzFA1OT0um=#G?DuZakeQuu?E8R}gJ2Wa4C1|KBrJ#S~F(!M~T}Yy9ecW;S=aN;a;j
znM%Q3h{trx_3%*yf!4xMd&qYh9QYy*`{c^1p>%6a?Hj^Krl;T!!ysm^dWp<y_D|2A
z;Q6#UP5P=|PwILEIxU^*hLb%^UsY)+DEgp)@4-ao!^IXEx8ojoXn2IZR^w$(UeJ(Z
z7aH?J3mU`%UIgWs8Yn_23x7unWm5kJ_3fl(WR!KgL%GV*co|{NYK@0T`Tj7mu{mS?
z{AyIPUaCxOoiqq-RE8Ep2Ck!fxS{>@>gxFRZGZp56cwzNMf<ZFu+P)c(+8u}H1ziV
z+P3OG_Va^j;c>q<IgP4E$$~O;0>;xmw4l2S3JM;@{icGo(r^FsSsLmy46nJa4Fc9K
z1*%V<>hsunZ$c(y&bhuHgwDhxiGERB7!)lflqgMCh?f|S{bleN%B)feaRB?epLj*x
zacK>1zdghgF1eLwPL;kMw%nzk0nAT2Z2<=5zO#%<0<SM?=K_mKK(jNp1_#Z3H>IyM
zmTJW%DgsN8lHBYE7+(1sT;ACmt=N2T_9!0frkid}Jy<j4rzux5mNnDcUyNXQNurMF
zFS7)c?r6Zn2Ez+6cNg8>XRk!~%~ukyrxhhUo0UlD=;!sb;=Q(;uKB<&nvwJ#D$OC{
z_&U$@CIGq+yN_@!D`vB*tP<AMRnT$9e6dLp^;LrYnxr+2#i(|wW}veV|1nBuo7FLQ
zDa^epkR<E&Z2fup@ztc+`}W&~dU#m1byH2h;aa$WtDZOD@z&*%kY#Poq%`&l>-{S7
zRrbI=Mr)hhwl?<a<7ka$(g1@*ZHr2IlRkmL1^b`#dts-Skcq;mj1$AU<*`4t%~x2A
zlE!$-QRKPq`S9n)2Rx5CEmz6aWL578T0Soec~22)`pjz2Yd*mO&2g>_mnVy1Cw5XT
zqo2DqYn;&w9A!nI_q4(fUT?*!l}rG8v(&^E$>+7(*gzbmLUIjP2oD)A_ytf?mhtPS
z@f~N#uaOwoTQbB0tK$Wv&w{w{iNgaK9Z*o&pYJbQxs_l@Os>Jq1$@z>q_f#9-96m5
zgPF+OO<MVmR1IAqV9g#)VINGS#14$*MzmU3E#F2Z^bkq^amd2+u9BX-Hh7)s&+2pp
zha7Pett?Dof6&~50-?3zXV7WUQdU)6*l2UpMle7@M%E03vVr09A44%SjcJo^jbYeY
zqvTv}q1%hDcMLe${F#~r!S@$sT+U-CU1oZEdRdNol@8?S2<f!l?P4=8@7oVPxAS#q
z0-Z7O0VFM@h>)xN1Lwavk-T@z4?(eHg3w_DX=&-n9DY=D9c5)G#fU21Bo1&YG=oW`
z1cuPsf=ti{&OYP`%3<4GL_$oA7VKg^UkL@eP~bkc>R>qeeTI@z_4V~3Vv?dcbwca1
zP)E^q#{Vw(HMbxlg`w?63G`fMa5w37B6~somce3Td+oO(MS({tubFOnk<<Z!0S}WX
z+9%y^geqB#xb66$EWJ-*Nk>|&R0I+0{la*FEp8RzNEWc~zgk%jBK9%jU}Od-Hng-F
z-;9<WyOE({IsLJ#;~pX7D#Wb>{yc~<m0CI7v$l1V6aK}(Vs7LrtmG=p!gpX0o*6e0
zK4sQb?1bCcSh$aCSC<~%3h$tqMGU%LZ)j*amBmZ!c|En(+)db{!&{|}O_`W9rPzY8
zvb3s)5Njdu3t&U&ITCR*M`9+7C}Jf;a8pO3e5ayDjRpX9V3y_Di*zHxYu~yu>G=Eb
z)U-a?(H+Wz>&=6!E#`lvXg$23uk=7@7$iS+SUmGc<19>-jrov^aiyrAb{`JBmx75U
zboQZ&1P<&1>fkl4eMF3Clo0}l@bF$cQqh-u<!y|u*W#8fvl%%acf%$?Hfo#VYm9P@
zuXln=D8&c9A_4m+l*dnD>c_ZWMB_9;MgJy6Msg^Au`MfWPH&)Su~1&M>!-g)r<*&Q
zosS2<xObr(RBuPI1M*@@KSVsD`jn4K-1GeG$2ySD_p^+=Co#S!m0M!@!S7xAjU(3p
zM6UpduWx=)P3rgcjR%qX-d}?<h(=-p#g3oy?j~mgsUv>yM#{t2DFil}zuB2GY6(uO
z)8iOA05wIZl0x|C1qhLh7u4p-P*6Q5g&*RK&+8&F;2LUQ5bW=TJHt{CLR0nHRM**%
z)$Im%xmeLcQgzUN+A8j7cTxQZ$E9X?t2EYM`<mUR0B3Aep4U~k9VjR$tcU(6Db4zQ
zfK{o9J#i|lP(tcg1#&t51-CeB?rB@>KJPv}n!3X~);5$C?YnCHhwSy<b^To}Qo`kE
zo44$na#;}1zE5qA9?^%}nWE3-7ew-^1rP(fD&d@b;q4jLcgbIDD0aVT&wbU0x>PFl
zy&tt9IZ*~bbm|*V9a=>D{DN2P7d#!<Z)^L-`E`v+L0m*n$uz^<@kBX(xtvLro8>>Y
ziSr-qOBl%sK2qR+B7qTf&p?PGg-u83Lq$TUQ}#zOB%iWm5CYu_!C3X190(;6F~r`~
zHxl?g3|m-pHs)2dhv+I?9q6ursb`G=1KKq0>8KF6K(F}`SO1jUu<1-wE+ukR9unLa
zP>%M66q-XYzeibKdn+nVGPE7T8KX#HzEKhihj502*XuB#w~PHNFBIbYmN){Xq0Z)Z
zIw(~xzLXdGU(s|xfL{0B=ZMGmem92(?W(;tS$6q{T?41l(W}v(wzz}Z-u)|&YY{RT
z-^H6%QPpilW0}6NAQHezz&=8IB>wRuL}Yi2_2zt_nq$8`(tRes%53nYaF@(}o}MX2
z8^%WaxkbK-VMRa(veoxnOek+oL+Jb3cg7*qV#JRyiPkb-DX6a-yW)%H*$(g7ZzA6O
zHf;mxFbHWPuVKCIPB(&AP9PNwov8VDOz$&AZl7FkI!tkkaBF+2ni&Y92~3~A{A@>{
z3cOC|M_^It9x`I<8_x}$qVFQ)YW~R=!wUWNZ*2)<`zSA*|JCiFy3kRE?qeNmdhcYm
ze&0}LQ`RK$0-eG0)TJ+;v3v)9*>|e6_YStCrG@6ZAO7G0yHNh?c}o3rR(4=tI5hPU
z<T!C=sX;6jkE3L2>0v5fwCwE}zqNUd|2dh)LKSi$^X5g_kfDA5qheRrW54ZIYraN1
zJ_F--cD0Sh(?8^nLxZnZ5iR{hiiSP&guh()S5{;e=wkW-%?1M=MIMYz2)h}XGR{9R
zeJA0$NX)<8uLie()h-68r&34-;Hzu1h{nWe(t-_G97oe)c^-=Lp9eqVucP`Tp7TGw
zFY`VajKv(cUkDNeWpgoL<;N3un?m=&8s>xxZKvV5a!lcT5(<iNhx;M=BdnX!VMM`?
zoC{F|8F94N4?3f;tWdkpl3>FG$E75MC2uU<n-nL`N@1Z#6wNj(nK2}{byF+o3vjvc
zzUM!j^!Dk>$XIm)p1&UHdERMll()rh)i#8!Y^t}P7fET{%?iv{3;1$2#q)q`hwe{l
zQ~XE(#^XFg^x4dVY4maqNou-dRk;fc>TZ&2TFzOXFVnlMdki+}n=fK!0$xknw>lH!
z6Sdm+n>DZFd$^>Xw>O^p*BNU~HiEa$WWNtFUwZ~*oZ?(;s<5dO`aHq+tZrKu4Z47A
zr`?!7H@*Ad%qF1w7)|lUb^DgkN6Pk_*(vI!yAWmHtKofUKdb&ruL<2B3;g5_`4_hl
zk*=GBDOp>u3T}_v?F+pYr@EHKGkjgIBUm!M4AqXa51#Ve=#hbEtrzzsm^`$t_ald|
zGxGfQZr9oGk5d-{C*jR6&-fRD7wAjx^RTIl6F$o;)X-KNhl`F06Ub?w@8c4$@9yoM
zLb286Q;Hi&hx=3vklT33WZM0rwfe`P%9;bmAc1idvl;9R`*;TR7@||)dpV8gxl+5z
zRnHUuJ_A|T(GG@lpXXaceR}}$;}fUr`osK*{EE*7X7!rWx$kC|&2uMI@-g!7z`a>2
zPS+(0p!0S#{`&PPevkJ0O+e}f+m+Kp$MGFx%DByL)BOPK_PzNwY0mb!JJfw*ZPQKB
zF)q=`dumI+9%t-ziqv`Ou*>;Db!+vm8t5_Bq>R~d_!|0tJH^c5y*+X98(_=#N<MT?
z#&sEjdT%Xw6M~pk3;qDm5nPF}1URO=FLd!c?44r|#cVv{`?@@+cey$bRbjhrrmycA
zd)}{KvI0(X==5FlbSWM-FZA1PdSZ2m^yS`t&f|xu<JX!y_kGWM%;t)-nl9QoiMyy7
z*e!-u{u9t(+MU#txt)Vf<DX!&)lxdpIBUmzde?z~<CM22gNE18ZX*5-UhKr~y6a9t
zq9>RzmfLY4nV0O}<(DRYgC&}^>i1&I-xv_|ME*#-wu^hR*S#qYw@sJJjjpceq`3rn
z5coEfxWlln>o^?S?QLKGqWyvr@2Me_IFqh)<9Cy%K+V~_cFr^K{NJ3Qw${c|XYu*J
z@HsoL<rU7~2fP<8TNaS5tBz+(-}{8@_dR_h&6=c><x0fZjfTUc^UT<@^^TkP!&7ao
zgQx7Fhtt<9A&&bzOKy<UQfza+bj%IEOr*uuv)k6zT@CeVMv#4RXgiqIHzsKabF=A$
z`Td}1(QWhjWUBS~*v<lZ`Tw*gJMlTNm3AZ1p$N9^Us!$7_(fXVyKXgJ753!e(y0eL
z?<DQmIrTzlQ#R-@n6c}y&DXb&W-alH=c{)j=TraQSrM3|*t%;Uxy$GBVbk|y?QN;*
zIlHsrY`#hP;$MI9+e|3GkJps1*MMxI)KD|uyQ$1t25Gy^;gsOd{f&2RyS7J~sa0OW
z+)alk5jVce&u!F0kZ+uVVEE>@$u_sQ+o|st|BCdz55oH#niq9rJxAZ5o07a9-p@U(
zU9vKbhhok)x^4^s#wOgazT3^4Rf;PQUMFpBa=yb=Bb9EO7Y)3O&jEU)G4;&<V<soS
z^;hCuUbpD+1K<0tAA<VrGQOiP<ZW14!!PG=y%67jyR4a}4$ox1W*32zJhwaY1>ZJr
zcGXFrF6=rEkL}0=z5ZOtO!EGDgMZMut31f@lq2SK9U6N3vm`J0Z_%ds+;ig{i8c75
z;{cJ@=lWK6jkM-M_5H5D<6+bDOz`w&C6vnd@tn4*9h~S}cZg5wbmX?>X1yfq<_lhH
zBYPQ!t>$^psrIG#&U+pF-sZUmYwNMRBH`=o?Nwwv<SMX>9NKKtb(ehs@i@)rJb#&y
z&+<8GI^%rX1<Mss^ZC3?cD-I#AqwmYIWA9m8arJ$^WBGIOLRWHyYe4Z+@9oOdU5f+
zZ>o2^Z8x1kw*24kQ>xZTKu5bt2BnDGJ+Td7YpAIZ7>`>j-HIPxA_AyL&l%lxf0|fG
z=Xm;b9+HQ)>n<fOE9*(ckaZn`$Vj^Gwr8(4+!*O=gLgZg&#@(99ZlRVQm*u0&-~x7
zi@<KCw%~B=X5D{?5^o1GveJT&tdEn=%A;!+lIpx3V|sLJjSWr9=b7#kd&iq^p=4bT
zh=SJFt9($Uv1@;t=9X`J#Ri^x92-Mx{O&zt7<@Nk&r_a#;rE?x-un@2n{VgX4}+TH
zf<9$dKK7SxJ{Lpb!GRaA-TwOCYEN#@WIh!qu5NDwg@}{xtMrHSo^O3Ja>T7|wCVq=
z4`u_J{SJCn*sCs96MF4-lA2!a{xLUolZTiof_rfREdQf4g9P;siWiLU7Q@4Kg0i97
ztI0)z4nA8ir4jgqKGo#Q%Kv)>52jW25o2r<gPYt(*AFLrf98;#bA=uv$JFcDXkr2d
zyZ-mc!8F+@k5XNcL0!VgzLrP%fwf@P9!&<l`aiD>ZY_uJ_W9iH2E3F1cd`o-Z1qm@
z&iT$2L^a^qZpmfcX{aiS75nh;rj5>RdgcE#d(fIhZS;eVg9OWijpzE#Zp%%a)jjo*
zJIDY3tHhAr%;aJ2<4(}z*QXpAxh@U=baEXL%iZ(+=VAZnfB*j;|Kls556!HTt*1ps
z^@Zb?wnt+!?UN<;6P&SJO=6jNO}MdGO;b8Yvp}O6c5OV=E=^1gjEP;1i1BY4KI1=)
z<5|DpL{_cTY5be;=yo*68&WdC>$x^oBaF;i`K#d^{r}U0|2ygbg>TI?y)FaEye6#l
zl$Y+H>=o`TB*m<UIiBa{Y#Hefpp&XTU_LVV>R*AtrCaAsw#P5fvs6dCrfkAq0nh7g
zv0x>&;!Nq_+!Z{&P8_u)rMpO-J<BT)ixmom7Vg{Y##@q04Hu^Btv1|Mee)lcW+~E&
zp%hD1H}Z+crRM()asi3W=22fTP<1onN0=5~{}L{IS3hFr6+S^*{&%0)K&AyKkbge`
z>S`uvOe%_I!Y*^{+$G9MQj@*^8+yR^Oz=<Ao%`FJ8z8rcU0o%x6WXmE+cpwOOLMFu
zO1G&(S30d$7CqP(1nN^yv{cB1SseT6)no-Pus0o->(ZwkTBZ`G7+rNj#a3w(a+<3u
z>su6+TQX-XB$5|R`q2_l^aV=~k<hb%x%mTKv{`EbPbF1Joh)u>Vk_`h0_FPq+k?D?
z5^n(O@Go+C<XL%-U`nh7wo8vPjB7jYa6;RRH~CosQAPaf*igF7TNB<lal_=?j7csq
z+Jc=Hg=Ad$G$lgrZbH!jkcPRAlKeNKbBw*fu!xTmGG`-k6=y=3RB#AhsOpG*>GZWY
zs}#HsN~NmL=U~gkf~N`jd-We;-}psRkt_nWaTI@ykV05KsLg4BmYyJ^<$qB?9$Fq5
zt>k&X5@1B;h2>!@6&&sNbDEJbvu?FP#=f7?y+WeJEW^vBJPW92VxUZyN?#!_yGx<>
z-xQre_;v{y3k%dZxtD-=ozJ<^a;AB~iE^&VKT&+=KZY`NV<EJ2)q}l0sjE1vcUbEj
z@m&uvm%$SXE#y~;sQy%7pSPef{i*sgLI?Og9g^&(a+hEmk+_q2>|dl?GD_^7T_jQ?
zRdov$=~sTog<vzlP4=FDSsD=Vl$@7|rGS9voCPVH62)yKNxAzi|DDPuD3H=ZMO3O*
zXu%mG4jQ5PK1&&j<gQtdszsC1cZcw-0XoJQ{b`4ynS2C8sF#b%GuiVB5q9}Ya)?Xb
z68%aha5P$85de;IK#@(~a}C=9=?tZB>UY&`R2YfZb3ou?hQ8lso*nZ{$F$^;M<3Ab
z>DEYTd3(?9bHx_<Q+%QfIwpF>RB3-r;M?Q<4(Z&H=}$CBk|+<k3!pP`$EtrjqN%!d
z{ek|cCyBVzMSZY{UfgA{{5NC<6CLO$;Flm!`&LwcLf<=vFhq#=Hy}zFqDeGiuRu~k
zq7|#<MlL%X!$!0l#wtbdC)oKfavbeQF~_=#1ts%4TLOU_GA=MNAY&_OX-TlpP35Ix
zTq+n>cEtbFVq*G7G5R1-;BLU=;d_lpiP*_vlI&6t-hga6=K}k+Qnl*{_ml?461n*h
zId^OKH0tz|Wf8B?Ck}<AW}W*CizQfozDBOeCu?`l>~k6N+y+`p*z$UPHcU%q=g3)8
zq^z%ajBMghl2?zcbmZBXc<OT)%r%^hBvDkklRXkhi$r$109$tWK)}<hrc2DMzqFl0
zlcYxz-(b<014ew%AK7J>e{8*x)c=?=?fMB-HRWT6&=pZ-PuPWm%*-n44y<FSEbi{4
zJS6Wizt&i4#?;@-uvOMf(B)lGE~Wy@GD^{&Rt3q)Dp8I94w!vo>bkAKJmRBL(kzV@
z6<fMn{6uNe|Ne<G?c_3yMo!gg_GYn!=wBe~7-2F?GdN1f{FrvQyN(zjlTV0I)MwwW
zk?FE9Zl0|yEp8OlDT_j0shmK`1SgJ{4WCo+xwjgtC-KjG-fcp`APtCoug=!k@9K;q
zT>#e8ukTB`s$YV*p#iU4_^)lkf*7acT!dV^$1c5kiFX`&I4GM+dE#ff&=b6QnQSr3
zV8KAjlG-In?5tJxJDh2xUA`~Eckwjb9tpWR^C=1;k9{Ss1IZQ$OLH>vUl}I|*e^T_
z#^Una2Qe#Yy)bYlGSlz%hB4-1unIroWyRY+m_$M1z8C!RKJ@VDWF3;7?tI{#Byf`I
zg`HFM9bhif2?iJ=O^+^2f&BC}e@>}*umx&{q`jwY%hNqhn?)o1HN+gVNyuQIrQV78
z6PZ)}^~X2#z^Svrw^RGbU;hY&o0~#}IasPu=vn4@x4W%Mre&x9#jLtp=8rV27*LcJ
zr<aq2^^{~M134@BT|~v=%Y?w`p3^b->ke#JACJ-z(&}hRonKWVgGL+KGE93ktPuR*
zhq$u=q91N;NI$dXjOQX@z<16S-LZ4Qcb=0t98iYo^jZ)YZ?gFW|1GN4Ytz0-MvOq1
z8YZth2_%Id&|h#MHO(JXwdhY@MYBhu*&}gtz6h1HHftcR5+Se*=HSH1CklE=R>ql=
z*Z3$2OJ$f8)BhY|Ig4k{XVuTG9zKjj3-9y@;VGnzrBX&ykrYo~({4Zvn4K&fi-X$O
zNz&vm=8FifN!S@X!4=1!GCdE9Vk%NyMqz@)cRZ81Lw+|zC8W7O*=2pH`v!x(Ki4Sz
z<zcd)$}?Y0bI%Sz2*6~SbC?cREpN>zV4tCWeB6l)ERCEWh9L{is>0qm{QEjfEN@a!
zKImal&2H;2?mmBy%QoBE|NT323g}xv!@(_AEKcP%7pvU@|1Muf#bTj)pywCsJ86%~
zXW_alXKL3u%e31dcdqDB`56b&POh}V88k%4V7b$FZxfLyV+P*><GG}AFSF=H_5r0E
z1o9=rBhYtUD7;2_{Ni=(u7`8Co6wpj^x2@DaP)(f;x2n6J~K74WwG?H#$2b21PSg8
zSD#4ani2{&tf}&+i5mo3F+jGt_}C6l(3t>8wqarxtVr{d6jA46u(ul%g8lgBuX{3%
z`U5V`IT^XaatoUx!~@_!N$c(SK%;QPJq&4bzJW#woVTo=LBVhf&gX1xTQTRfmOq`x
z8mdLMORIS*B}pG`+~aA(5ZBbagZZ!!D(T6jQi%yui2<&;oFv8!pXj}L%LMoyiyVL}
z<U&k!ei46*e`hPm4=L8m4fO>uY0fxtN=*<!uoql-(23cM#^8|^M{+w=_g8K{+;atr
zKDZ+%=b2{C9(C)_)fOxan$CYNtIWeS*sQ9vS-tD&EfFPkP?VZ?6V#pBV#S6_NN03H
z>_Md^EP9&QXLU|dOA%-FBWKT1Zsz9;W9XLpv&C~FOaeGlwD2G~<T+V3^u?Ly<#l>m
zGBs+a<sH1Sx>j^h&aU={<KR+9Px4|VDMPQdC^AkHX;?17DT|giNrSUYVO2Qh$fzBX
z9yuIPpoHEH*e*imr-~glDl_>3U_QOt483?>-9*9}T;h*aPb7zVNIgS@@*e*r68|-~
zqpK27ha-M*6ZK({`~7Yb7M!_}Rg0F>i)d(#+g?xwZ9Xh7qW-pTHMfsn`n?D>in4&5
zZ&?F@{Rf&DCy+WZX&3jX3DIKyHiMt@vj~8zUp{qm>={iW^LrC{_2}(xPneiUcNw8+
zzS%-M#bmCeL_JiK=c$jmz#8hq76mdo#oXmM3yC)Mj@<nkf-~ZuNI!XIvX4d*Iw_)M
zBOkqwFGZ3z8;ie68{{(`BQ2=SphN~T+a(8E#;&@k#k0_13^qooL_HF`;v`xm-|eBl
z%DM2C`p@b~wN+e)N2Q3@(}h@f$14*{FXjLl)C2tE<4lm~>kl^@W}R>SDF(5kwH$Cu
z6?ua;oURzGZK{YW=!TJbBo(bDZvPqZcL*TYb$iUbyEuMW!+_gXgun7il>Kq?85yd-
zlnvekMxx5W(?nT@uC6RjMxWV~K-QO?+;Fg;dkY&1s{oZ{=u*Sc+Ci_Bk3F(Z^kr_E
z4DNk4z1I-gAubX^H#AholJC_S?aL<|7+Gp$1Id7hzLg_!a11q9I`5<`?~a@-uWt44
zIV;!AB*Hm~_?XA;$Mu&PN;HkLwFyeIKl+2^hpfYn*M6W!;=_Fosfkqx_L-gVn6^xm
z8-?!fljT!`N}BWD^F>KieT(z0HS4%QwL<pYR^#~($X0~8NVgiYH~tTX7x|eo-lqIA
zs!??9l$-Z5_9`a4Zo2lOds?+I=Pba8Zn^<_UYquQB^I;t<9HVd)Wb=>i~3dB;wf0S
z+%Oee^8A+c^i0b}Z{UI8SeWdsD>2LjDhei#Tos%of0k{rASL^<8abU?&{V4l?=dfS
zwKU_WVAD^P`_nzO;Dzu7)8VHUjiKu7Cq4^q9lNNt$vx?)puh4h{OLr0qN7-U!63NW
z3Sr$UwStL3#H!Bm%p<A^h0als1<AqVgSwwwn5`2FjSQE1vekzx`JiT&Qm^Y)F;@OC
zhc-Ql^T4kd{`rooZ6Uq_ziTS0>Kzu12T%Vw(ZPOe#g+bNDI6PZI-b2W69pv*UTyBS
z*ftbim4$_^R}9ysXk8bAD=gk+)-x-)UzeRdKEZDAfG(rbS5VGC+!ziDmQE^m6+3_{
zT?}8-sFxFD(|y);nu#QAq}{{67>GNt1ltv?<u8JsOwyWZDMrz~hgSh%t&+KsrSD2(
zvT7!5gwBJ0kva2h0~j{1eDu*~nrIh}<Ju-wezILKJcLe$lFNGmAH@y7G{-nS-F|%s
zMQQN!`%5ZXTp-E^r2hlap%vff10%}UCX|!R^nMuF+y4y{xA`O&`@=HSvP@tcLwvA?
zGt^8%@2or*0Sv$65nKH5=gh-rY$v17{aXn<yD+j$TS6;k&%JgExPpTopUl__713t?
zTsxQ0sn_x+f6cQgC2hmHZ(SlIMRX!wA(rcqjNjYW>GV^f=jwnP0;S!0Q!xY4mV~&j
znkpHG%g=#<kB{rWj~%mM$<;|Iv55g?(j64&+{5<#>90d(S`yjj?p4lWmER4q0Spxr
z9#HWJzV;Iit;%rd9faMWa7a;W1NZ7uC73u!oU&GcI;PPF8X+~2@-l9)e+Q`D4-q<&
zYb4=Ml?HKyJtSB@W=_d$ghj3X5HK%r;MFA&xcEIpn3sl<E&`h`l@*@SbwDzLRIOL3
z{}$<@t0E05HhIf{n=KERVI5kTH9zqCrtUV!$Y)ZN=KrFsI+T6}-xcpA9PWR~e0>Ff
zi@LMqoNq)oM|C2o-)#SDr6jwC&-QTp>xbY12-3pf$b8+B4IGA%!89^#qvlv0-*9GR
zq83e=WG+mf4(!+tD4<+<5i7EgZO%$3v^!8iS(c+oBg-V|3+df0F~H0uPFsD@=SPD(
z7xORs)~%kB4R+P5x-1lr1&s^PkTL^8?ognv317N^w)lFqX)Ol-NV$c=x%q5Y=#XDw
zF($GvJ)b*&DmW?%lH4YqwSyF@(5<6cx+b}DU=?ze6fO714KD`IK(A|J4;7sypVk9+
z1fNDpk$9G}vQuCO50-1r<VpoJTQU3F1FM&m!6XcQMKGKfK<Q~h3zE?0Ct+{+ds#uI
z(B(cBrhoU+f>Wm3eA3vf8S<R+W-`wi#V{FVEKjuXkzs-H-QB;wjl~?-=c};xw~iQn
zxKi-KEhSv{fAVGLI;X<VF%3tVX+LV;t%Q846`Q0UU|cfX87ib5R9{Ju&Gq%O;8UvS
z5$bkEAw9{<+2jk0<~orhIedY+O0)-x_}Nlip|w|N(HJAQ6ed|hV+IeAFB$8nb|yGd
z5<^ObOw6jpyg?$~!61SW5I+vJG={F-BE)<VCy>EhFzS0!-e}5GZg^EJiCPki;V>E=
zPU=-P)W_}#l{OEzFEr?uZKC5R%|$1;Q)~pMFZ6F5_a!co#N3QOq1V?0g86LK+h*y|
zRI1kEsbqm}v^I4gKA*{hH!ILY&|~V$;FAKWGFSA1QcR&~h3qXdpJ^8Hb;fT(J+(;P
zEky~+1;t-o(SxS@PAK+%>8<PMI%I(l`~Br+AovyH2?i9+p|D2gGSd-wah%xIPhn+i
zb-htAl;XqDc%A3NQLKH1c_W|-!*)ZB4}cc$R<j)#o-(@wl5z|y1x70iHeEFJR@z-I
zCt_|ke&?({^?c3+2H8gcz)XD|ox+j@iA_N_5++-G8-m6*6vsbRfYuy?A~h^(Zp-|?
zgdGZvks-OTI)@d}(%7TN*7Hj2W&8Hty&z*W5%V7Ria@JpYICt^D>dYbwN5vePc3fs
zo4OYztE$g1ee=I8`8Yark=58W=9gRh5g;u7+Z^AN7#M5g(99BY(Db5+3=FRs-wPIk
zzVx^a*0~V8P4gGrrXRXy33q{syWMgDN77*V#z9VC)D9{-wWi;{#6rXe<%iHwv2Xf#
zymns?Y!eoxfhAS>so8E?iyv?9+kOrlk}J%t-!MzE0HojuNde{j)2s6iLY<x<Inuk@
z+LASbcIl!KFo~yHen5kYP5F>8`fbTqbPpnz8K&P=L*7H*hgv5&CXi904Th$64Q!W}
ze<3d*_KG=I!l3upL9+<qM(*Pf<TNXtUtrn@WFk!o2Iuj*bn_y&KDr2Lo{=f?ErM*I
z>v_#(PfMaM>&6TH5)N}DENoN^tCjyMY)3{~L|Oy(!Fujo?45>eg)#?rT5?Dk+SsAm
z8Nr7bmkhlcrFoX|fr?t<Dpn1*b)K^LKM1;T6{AKSCA&)5mZG$cWB}IOKwbQeflJvL
zheb%?fGV?#JdjU#CfWEMYfm)$0hC=ICzFc22PBxf<(f2ax}`i0bHPVrB2an44w31N
zZg3D?c2z8|$N*<u*!LSsNb-K;pjiXaFHs5Ulf8WniD-HIl2CiAq2C^WXFWq@S9h%+
zPX&#Zq%LDKq%t*}v)ZUm-CBPdW-r&Iqk1BUub^OQeS}Dv3*`aO_QP9CvK$l|b+xtT
zSHo)^dbFoeZ7Eee*C#Cx8H^k1xLzsQN|9y`v8J;=6yrue<B=S;Gl|Hn$O$+Hgwj31
zYk7YKhA1}*SPw%LckI`fIR;R_02AeR>MkoMks<EajE6u-`#(y%W3~LxOA-r=VlGe^
z#s&33leCc+spf1jOJNi(8{dOJiE|Y8j;Wa23AwH8j8_)$!}BN+leYFR4YDH=5a|I5
zV2LbG*TiM2p*aTt%nx8D?frE|)0$3=A-<$zgC=PU!zrmFy-y9v{azerqY=Mh#@e~$
zYoJWPXIzX(9&eE!TvR!qzC%ItU?yM~0s)7MWdW+#QZh<BruFkt%C8TOnqQ<*-{u$K
zPb>^p;p<($+B@}1x$^Wtd5&i$*eL$~Kz<ww6O=g1(6V%?uOQOoqn}qybL=!oY@m7)
z^+aP!<Iw+(NxiTIaZ`=ZqV0(HP`cH>zJqf%z_FElqpxA>oyF!!Hxh|tYcsNs+f1!u
zpwhR`35(ENu1It#z6;0;Bw@EijHw+#vgK#shT=^X_1;cIS3ho^P<Rk!$_`G{m(GX*
zdj3kIF59iTI5%2E6Lpe}PH&Hgg3x-h#KJAHzT?RE*Hmf8uv`8jEv&mFgbkf`pV6?J
ze{8dlshzil=27-hXPBFhlWxa1UdPJ7UiPi$&4+_2Vu24jf(1QJcw26X6U$mtLdHi4
zZ)N1AwSg3{kqsFbJb7w+DHB?;KXLP2e|D4!G<?*>RFL)fI0r9sDevHIhP78?K3WDQ
zt|=py`#BgYaGOi^dL(h-1bi;YYrE`4Wdt34BQCz-l52d7w)27=>Y0|csA|6+Wu4-y
zPbloOpGYG0Eoz56G5TCZIz*i?$+q|;e9MxDxW625c5&}}@6+m+PTjXod1D|5U8O5;
z1|ni!D+*r6$L?8NGC+8Cym;gw>ZKn!kb3B~)*aL$5Hu)k#ojl?lcVTo8%}&{aw5mi
zxH#)76P^U_oPz*7i@5;X(ApV7`B=76qp1$#Jg@>+evA_)81nrob&YbrxnxbZB*H1X
zmnXDUQ15PZsw8`=m$fv>d6Ehgax1b;@9cU^T!liyFKW8C73>px+C2aHrR>ak_S&SX
z{Rc+_U;Ug0Y6N4<K2h1CrkN1D#|?q^M1=AF!81IQS{xt(dX(fME`N-Fh?!Dx&uGAl
zxeB?O-{Dw{soalW1AkI?a#vHtZ(_af>mgnL$wc30(uo1uySJA@<^Fs=rvLWZ+{I5!
z9m`U<a@YCr$^{O_|7OS4d1hnR=C$itWaV1e3MRSu_msKm{J5V={RQ*kbvjfaX|mW;
zSKw-5?u^0r?FQ5L1q|84Ro97+ao-~Ac)M%y@n~{p)Jr_P%KDQEow_^mc6eRtyl?zd
zeT(KLr-ywJd2)1@T4gLpbfkN@iXnC3P?H93S{14C;LVmt)Yw86At!kCw;k_uC?#N~
z4}K_HJqXNCX+f=G%K2?*te5>z24ZejvRo0zp0C@Hr1y+rW5Gn)11&jUzddkD#Oirn
z4XFF<VsG(0pHAt!u9WM)9`klRPE_-~?D$?w_$CDzPN{b$#8khnE~Q}UJ5A&q@-t??
zAFFp|#AMz~%D7MQoKz$|3<3mhwmZGIpqk@Oy7b$9j`@1?ZZ>uE1Lu8))!R;~{OkJn
zRLW{Ri?>r&VC(&=m0j2I&-I78F$S4K<%}e^!^!L=J;xE;u9q=4>W+Cf#IAex0{5pm
zVCVbwm;)n!?4i^U<O!1Dm6LQ(#ORIuAbpWm<-PzWO`R<UCmmem+)}pN@c?6#Gn})N
za@<p^ZaOY1Wl1Wj{{@$Qmmezz@Rr3nwt$I$41Q9p#Kgin{8BnjNq5dBp%;@38@0M!
zU|A_XILaAa*Q-&PBkc4k1yLoK%tz_!?<AQl_5l~;EG2W~U<2D6hFGfK470?U)1#~a
zH<<8ONBvEx4YQWvixwakzp;WWhZ^R!N_s9N;D+bP@)5;_hA=zdxdK<TS|XD6lmX{7
z6dh4b#!oDWW&{#FTO1LnQ{d9_VKyx4l5@u|Ka^7PS!k#=hkZyBR+q`2=QMmg@@CDS
z(p=p6JNcjF>rX)_b5FOUP?#eLzvIVa$cRY$(};ZM!Az{)HFjd?pSMS@>LJd~t7w{u
zO_L9<#n9@1$ICth>S%SZd3a|Fz=86fT0EU6x)-ajz4)6~6@Z<WMtNV4QO~2@Naan6
zk?}+;%T1EQET_Fh;P^#m4!Zjsd*s9ZojZvD^)-t(4{(!n-L10RGEoG*4_5U+*tk1o
zx?RV`zjao)Gjh({gIm;$cuWlp9_a@r(Y=;cdTA_wK)!CCZfV)gG=lT*ItG&CYvD-<
zpndZ$X7rfRRo87iN%esotGDkCJLNd-9hYYo^A)xp<rP+QwMNLhk3Q%<YmpY;gaTi!
zp)ZJ?*U3o_p<R!e86itAnTG<LS(r=Qx64B;7xC15<b_*zv|R}?cHZ;(Y_FYe?IJ*G
zJ`o;)r#<T86Jn1+)>-d4cFe9r{zvb*N9R}Xu6rvk;B2uc31~OMx&5Zumv^84>CBG8
zTRL%*wh-uX;QhP^YFZ@q0)wsjO}w0+2(L|+<r+?I`tkXvhY98DCzpH-YrkGny?`dk
zd>kS;_%dSK*;M#IqTf>U#4-wY-%ML@Xks+3o*sc=w`NuCSHE!F)E(}8kp|!f>}n7}
z29Uc{UeeI!FFrnjy`|s&v2wNNPAj=6M1WWh#L&}eEG0KfG>V70GBDm4%Tjkeg9#Cz
zF8$MgnOd-kaC<n9WCW-mf!~ac$33VXCu4n_oo*%sa=ibynIHvq_rZ&AZ<(MzM-x-a
zD4+Ptf5qks>YB~ZeXAmrfUjgLUAMC`E`Wv^6F^WhQ6uJ#(ARA4hjk~BC@Y@uQl&4<
zg95lvn8xEpni;y~J9Wxbgg)OO{x7Wuoa!{YXYY?(O3%)GBMa&e2A99f{!;E4@(+sr
zKrl0282#kHX4y=t5&xWVS7C6)Bn-m=4A{688a#$9pvhqgqxB{X`}28XnPo#OZ#M9U
z9zi9#o6K9fICIo}F^6V>0j+tuy;Ca>!U&(ht9J`be(fVB0suZuKzCikOwZtNkeHlb
z21gd)S%Yoa+Rjd(r7ZAmMXbuOW*fnk!e&*KAu`h+3+~tn67IDTTk{o}5rYdXFs`<3
z{rVEK>|J4n2LlA~@t3j!#1-YbuP<IL@upzsl1|_p6$2bDex_E?`1CT3-N}1(fn8lb
z+U|D8YSCu1kF{c5X7={_{hM8Z@<O&}T}Iz}Nwn_n2LLtB63bt2e~*4?R<;vA6Ug!R
zQq<`n5+png6YWLWF%wqP?<pJYZ6-$IL|4xg=|KQJoq!~bMiBMjm+W-o$AqpZM>2CA
z+PKi}Ud9E|8CJfyRYX-bm#<ZN-c2!FKd64dkgi73{vL<w)F~^}LNsp>r)~R&)c}M@
z2rj&+SJLs9BB;iCt|b=%9=XOLMKJi)eCHb9V-F)UEa_+^O2-lV8YM2rd4$i-7=+8H
zC+U_-PeAjMu0C`*j6V1`D{H!uD)x5!dBNiKaa~22qJrICx+JWKVr>liI<+P4C3Vi6
zvz93%8+JSh&Z>jrr<}GQ(zOFY`jiPXICMl=w{s9RXF^z3RMrlzj${UjF9M%a>*sX8
zuo*A0;?Q4u>^fW3<stVU)A|hSs$m=CD`0BJyP#sB5c(RasH1loK^)GMC4+6_R>ge1
z;cG}sc_u+u4fh}gzrLKDOds9sMCeDCee|jPyjj!T1mMe8RCCd3fI1&+Y4oY8<9DU7
zGH`kPSQTfErJ0(+I`WKS<=P9h!hV6XU-U%z=jU`6>B#70#9GlaIZG)x<mqh*olUpf
z#SDBI(JS+6)d8?huhM@da(jfk9n|F&Q^D)Q8EdU@uH2LSbxT`7i^U)Vy9X70f!QR9
zNoVfKSCTQOwY4LTC0$&i84E+n&-P@rTBnZ#F7Y<?I@iKdwzN#sRdZ^kG!|VjY?ygO
z_AAbRwV8`f6d>OnZN#m}v})g7lT;(j87x3zALS=^xQgA7VfV#`xUCa=5Zep_@ThWx
zQHjF?;bUZDj<~>6WiDB*`Jafw{9{;Ujhy9!rHdnujtQ3ozKVVt=<U{e;huI7hZhzp
zbC?yII|p~u&LMOQV3a6$3AZMoC36)pT9u>2GfZmHXdo<?peoDS8O%47gF^s0@;$qj
zkIP%*-*zMOQ$v0_pB&+}Um#M~OgkD9q}~%F^P-!I{7|mdE`#g+f7pAgpg6iOfHQ&M
z1cC?GK!5>)yE}vX1Shz=yE_CK+}+*XgS%UBclVuq|EjHh*{yxp$DQJ(yP2MQ>~~Ig
z-@fPeao@$w8+<_pg`zOBTIT?YVxE{-rTUo}Gv6c85Y!FJ;$qbHa|(0TGd$>q#fq>y
z6<<}5uS@E4*Bczgz(V<4x^<O?Bdu>vgzu$+wq)Xk?oFg3T=v|hIa{kMj&0|51i-}m
zI{$o(i*y4V6&o|6xCoLoUH+kr$UnV5%x0py>R{#GYGT1GQ9sO8>9B3Lwi_1p!Fx<b
zo;jwC&^Lox3I*c;iv`{+q@LI;bKGcgq0-cOOSVY&!j};%e*I(mh8vR>jB%Z$WnLtT
zFQRhEGNOYkJFkg<MyEv+;i=+*hm~<L`>EY}?;wX&F4^rrozJkw1r1W^e0EAR?l>u0
zQ=W>1fltVXS<wmgc|+^)OMX)*A|K$iVHbWA5oY($acsReWIp81;TI(r;jftVwT7)}
zKvaeEK0b8yxY_8HO$`68ewqf5GDZ3P0R`@YOc<(%9j?q-rPB>vjF4ZtPG>Pisgy4v
zo6Rzbu`ly#Y>W01=gPRtbsehNZpspjQ9`&Egp5mzss-1kmJ|?zMOp$-^*zPBlgOF8
z60Oqo8LllX9uL66f$dT6<l^~#Bx)Fq7it>x{o_;lki_<<Mh9mO2Hu`HVA&JjtKz~r
zNAy}`8yftb(~PQ4Y|hQ8(t0c)pP3i0m>TlDl+d>6knGOs4KdO~oOCO^GOHW)>EjVI
zgJP9Na*h_e$0?qrLF%E6NybDg+;4Vjfn_xU4?Q{EYGd@08nZzw8=Me0z$Y5*7hD2^
zpJ>^ZbOT3K=O!+C1$`#uMWyzG$!mfh#T9Z1Vt#jlTeru%5gdhahZ8qkF0Z~(_Ukw}
z>;3-YzB${g*MxyyLiJjphT<)jlTLL)>UJ?zdlSmV_BjU!f_xMw_$bCg*jUs@Y2)dB
ze@BC$+8{*LXYHhj>#HL7x%{8<-9ngpkr(r?yGm)sQm*S{)dnx<;pF2yLr+`U7vH}(
zd6Aj{x0}KgTvZS(p`iY#IHUzLpkV(LySpvsPK*A?8n-8g1&FhK<MWnU*cmB+#)KNc
zwdHn*RvJ%r;v^YvNS3r!F2!ZD<Y`<9{{B&!(H(87P;CgA)p70;Bh5-$P@g+QFrWg<
z!f!Uxop8T`bR>b!tQNkxeXVW|4kUCO)L=JzS5!0-nn{vuBlkTyMEU@SV%ano=ESn0
zkgHA&Io>jeP9B3#fSLGbp`LFs1q~M+{0@e%ZS3H-qCDub;B}{c*fpg(B4{#()@kYj
zL1o&7$py~Cr+K9I;mLyB;r?!`HQMlR($ZkQyd}2#cSWx81sNY)0)l-3@B9GgZkWdL
zuE{UzS27K-q9vDAJqQWS%jmywuL(!sfeVDK$Xfa1s-MTi>qwQ&<k<9G?>zn(QJUxI
z9)ogeTy1*%5LNZ=-eUEP3sOGeUH>TaVP|tqX3vpS=INQ9{3_IMs}`e|7_dWRMPn(A
zBb4;<6BaEN+-bI~$fW6olphayVh~OgrEoBhQ7iKqQU5W{UJ1DgU7l}WkT%I3&Rmoh
zf%GN$XF)X4BI$!86a^?uPNFLO08et|44O<IL?svi4+Wmdnc0*>UHL1UV)Td9IjY7+
zd|cb09g`|zl%koUnt^uvG)7X|RcDs=t~I|qryrvq=1lo^)avc^?1Ze_lJV=0#ZF&Z
zTOw7&IFDB`{y<}qK(g6F6lS_2dj^W1pVzNSEkz%$;fM&=Tw=c&U8fRDRNOsrGy`(t
zk?%C8l;#D;yJfi3+Z;H?UZ$L-ovVgVkoh3c!@N<oQS`g0#efl8BmMgtbTCh}d9s#v
zBk8AZS*7BFyMfAE2TVg-0=PT6PI9bNH%K3dmt3Q#?ed@aOfJG-C8p2a5)f@?swok{
z?z+`*8n<00Oo=oLrbsmE)A=k=H0#+-C3G`dO0#uk8y*x;^{|z$vtnpFI10LOcAXhp
zAK<jGR^z=D10K4Ll0K!2F(jeO;!YkeI(TGRs&7kr7W0(O`>_J)3bnj#k{w6bvY>MX
zav29tS>CIWkFC*uYozgz#pi2jR)xs-+9>OXplAIlW)9Cbe#y(V<B&J}N?=T>x{++n
z5^GZNqExfp=6g`nSPF<B_KY=_)@>IC_bkfWq*1f=a~vh$73Ew3)&s|pEQ36Lw`A?~
z5~wr7SsYG^sG|QCYLy*xf%kuEmJSlEt5B%YFU=d^1aL*f)Q~G+2wRYd%BO1CKZd&X
zVe+HgDMXg0jNxnku=&t3c#&IQMs-Oafq>wpD%+mMIewD&nefVN)LiQ?wuDdI!@M0*
z^I~{we|FkI0jz8L0XtTZXiP*dsTNbr23P*VgEWe4btTioxVkIqA**y9WYOtTg^<*!
zdX=h+EKulTd%n5j84MQS5KXy1%6<l{!d&j<j@VYj{sCJem@0{3R#oQykPe6MhX$k5
zj6xygnZBgFc^nM$4_ux^dT1tVP^^F%F*g@1ezH`|^SDeYw36^ZRV0yx9EzYN1tyb<
zRAO>`Z1I|GxH%}wUI|f5rC7`x7(?I%3OTi2_T}_c#tVMT`MfFWl1mZh;+$@vH;<}y
z=aj%&6EAj}Xhj)D`~8!Y5jv3r0M69nXJ8zv@|dM{@EKnhLlpT`{AL?aQzb2NR{IM_
zxmk7~Wf{0ifC*gB;<)MytpR<?Re$i~K5sD{{pLqLO!QQJ1o~4{$$FPX!=9j2@4#;}
zU*zA7M7@<Rty_?#E?M<1M03k7I0M>~o(UndRj>^XKF+AzPpw`cl&U5l<Smf!XjL}D
z;L0#?#-{qY%1O{6wNLYQH|Z@t(u!M`Yssn8XK|bZ?$aIrwi<_G@%3UOq-zPz%Xh=#
zkh2cz?G|~wYE*^zeG?TNtKJ@^ET-lh*Q?(6F&y2`jHc%EMTsK!&PQs$h$WbG0Jnv{
zx<a*_1;a2_@yO#SE9(G_w#oF{PpjD=*X=^ms9GoFg7@np$2ZJnlc(9&V;6Fp(q(;(
zY&s$M(X(io>G~5PLb?T86#UOVTO@XI^&^-PL27}6@|Fd{&;s|<=wDwlV~b#`I)%
zsp=h(j`1<!ey2*(1+PnJf(n7hbjoo66Km&4#lS9$&)W#1AGOMtC)}eZWK1BfXCoSB
zd6h0W&`1(Tlj&8GV*0=FT@8Om|8s{1oRo)O%3lqM5>>(%k!Vd?l;fBo&pIR29~pzx
zeEWmF0r~9@`BnJdEC|hgz)cE(J=Zvwk(S}b@34$?r%^InzV_dXwyHvU`T$A~)_%_M
zgBD}QPyG_z$1Rm+R}N*FihMhH9kpz@KM=m0g~YeCsxtou=WrT4foNe$_0|sy1iSbA
z|0w%})2esT-Y3dw)g&)jc3@$KFUz(Bu+G5`{^5AqPyyU@8-wvJ8f>{MlP$>x<cny<
zPS?Lb=DEjYSUy13qN;ib&{~c*Npf~uCYcaSnqxpp<*?VY#I`06a(EgV*s<x!(OxCW
zPpUC4ZXuQO;S&F)d!wzjz4j=pq9^LiC!N9Dn8gz1NABN`RW$1M;Wl<<MWx}3KI0w9
z1B}+G(Lunb;WfORA?VI2al32^XZHP7%lj8da$0Q7!^ZeRYM>KSH6SCPr2E6Ahm#hw
zF7%+!k(>~yJYQHb+TKBtxsr_;))C}SV$U(|Xc}ej;`xek>fT{fQGl?$m#r>#`ZIpn
z!c@-h?We_O|Htb7?gLaHQ&}1TWszCsFXl(&R?KbbLDxS6DpGX4tIZ<CwPk}weDhM>
zC`(N=KfrocOu>FIZ9?9Un4UX1r0pPTCu=s#k0s)gN;=N_X}MwH7{57Qaif)2zb0lk
z+-w~BK(i6+l`s*hx6kf!jSI6?D4uOpBXNoc-Z;HBvS}UU8HL%(8T_2nn?_ZDn&nIr
zMd$imXD%v^ipH2!8ec^RPpn7?u68iHbizvkW)Gj6&qJ4WyzDfcel~LcX6SG1w}wAJ
z?!wonpp;syQJvMkW=MRLXSCjEY|2-a-%=n4o3zg{tSWUbzFW0XQCheiP!C5rggi^q
zh?tLQinK1R2^|%GC@pQ#;U8ZjI#)5mt4||c(&|CvDQjD~Pwz&suWyTm)I4G<Ru!ym
z$pSLT9~VoTbMCEqRN3P&&yQZ2LpKZMKYZ+H>DVntNK2QGWmZsNz^0r#F~Mt?QYV4`
z<Q!4YX4MOD1c<fDaUy2f*U#GCo$NiT3&Vsz&cbhfZfEysP(BP<DiCaKf@oF(qS?f+
zDb4f;Mnavc<s@eQEn1$mI+2zk0BU8t>_!=3!msaNwp2(+4-rpBab+rJXZ_iTACryT
zma~RyTR7v5&6=zF$O3RlF<!pZ!TFSWOx`0zU8}}4CVbl<VaOa26V4fN!pr&efK^p<
zU@kz3TcmT#b-vuT)oli<tsdSJxHO=@mSMB2mXJ(|6O3*jGyNm!A|D-6XZ$JzwxeRf
zNti@XYCD8f54KUv@TpI?3}bNL8=cZ{1WThWO}?UuwSSlczB*}<Q2395>kN~c#JzF3
zY~DW^4dFM%D4cRFdi58lQ$)`MDMeHII5A|M`g(pbTf%3LH&y_+t3DzHB<3isN=xfo
z%BY*0wAFp8+wtFyU}++;&f{*pQaW9>30rU$r`3}*Ytt_Rr8g#33Pa|w?r&ueO*UiZ
zjEgam1GL~^VQaf2P$nufYk$Irs3$GOnTC}m_yuC1Jq?#MP<`t7y3qKMHb*zrYLK%?
zratD9LJO#2p;}~=I!$1F3OB;<K{&TdBE*ZJt$0NmThKanh)y>K{5T1MC5=M!Y!=W^
ze_7t;fD>YJcvV0;Ec~c27}lg0T)#StTu=#lM(77!6olbq{6_{x=Etx=3aQiw$MgV#
zS_B((jMWs=a3r{FQ(Cr4JUtC#{D-R=7wTai|B#f!E+P%V;}{}$Zt6G+etF8`vn(#W
z<fEvz$CRReKJ4^8Y03FdNXskzD)qf`n{lK^<GQ;Tly^xBWJOwVO)DXaEHO`~T$a54
zf*fFpXGjf*yv)~ve1z8Z&3C?^b+BeHwk7Us0&SSMx<J$5_2(T}0hOyLcY^(lsNDC7
zb<Zvp#|-Ze6P=NWAxvj~wdso(CF3YfXILat3vgv-W?3X_QwmHmnA0u3U?mS@#%vN<
ze357S6B7wl(G*FW(u5_hnaKU&^ZWG`!A6>9*Vo*SxA(6vd|qEFZ3a2dpLrnD?X?e?
zXBHjZ@YfVw=nf$7{rJ8h6jD_wDMoI5Gfm5HPaWFz;I1U#{mUP7rg(p!aCVeJ?sk%N
zK&4A)OdW@#=0>Oxg*v6kzsM2&#COQ`x9!JXYqrDn_IAmQW1d^=9eIn*mvlPmMwVs=
z`~3t26HJs6okTud-PVcdY1~ZkdRFI^aAG>UiO=atyY1e_`T98U*2Oh$1)cx4t~PN1
z<c14*VatNy71{JYS5M6}?U8ftWnpUJg^Z0?n_k^*C&0lQ?J!CDzSZpNDD}lTE<F1Z
zL2X(3(o(p^Tq5(Mskj)b?|KQ*+$|fI^~^(l+QY9zqCOvU3c|sb&bbv0YQrm@_rD}v
z&nR*JLJkjVZcMPB%_-G-PHf#Q+pe;|dW|;^VFRD{z7M&<{Z_-i!M%OGFK)G-o+Q3e
zw@yX&B+%Lm>`d`+Vm1|Zw@3>_NRLXpAQy!+#g;2;bcam!PAbE+Nof2dvq~CVU`=GI
z0-%e_L-M=Ez$feU9$PP6aO6dy?D_GHSE2__Bd)aB=}!6D+56UA16$s0ymN>!hKTCK
zcKi2ukI2_Z8MZ%XnGt_0ra7EDqXKTw1r#YYxL*@07VQ@j@KX7&m8~a9?`4O$rxahF
zpr>0&Jyr8Fdr!TzsN+i3cTO-5;(4f)&&0GroQd-x+1|1AGppN!#ct-1cVi=O-UuOf
z*W!swEO1v@@&xQ=;<X+RciVd<20Tm7!D}BMUo)dt^>`<a_q09##V38OAM}rNcC;si
zwlF@Aw2$sJ$}@;Gb*pk7*T;SFP&jNINRNe`G5B6U7l7K|(?OliePDk%Z5HF)K`G90
zn7XjQ0ThScWWTb9$<MUiOAKQI0dfaV!PXMIL~;e}evi3-SH$j>>Sdx}ZXeEE@56_#
zTW42#!fmjoXA)XFkKH08?e|eXL#-iEbnqrgYfQ7cJp@s`e$~AXU$~U<BW}#Tis+Ej
zxgJlq-dwAsXDT_at4Mva=#8G<c3g2=!E5!dOGf=O&F0&QHBDW-&Uq;1`f{)Vu~@!&
z{Qbj^{N7*p-ltyi8S~oBf)khN5^iLX7hG4HffaX?)X7SD=jmF{$pO3_T+<2U2hih`
zD-jNNJFNUN_Ah72EU9a#vQo~$$L@9qJw1_X6_(R$DsP804+ugI!HEEn(EW9~^ZMn*
z#b2F;`T46#VPRoYsGLeu)a5$UI2(7oqrmeSKKd7xCf^IsH_71XX~n~dLf*!bk}xlv
zHMpmr51lvHrVQ8}<6~p_IN@)VH*+kmn7TDa$u~mvvm!G(+~2m79MA%eP0}DODW>R6
zYltOv7`zfq5P!Ia7Y<G=IBYQ5mfS_pQ9+m8<S}^JLQ@|`%3ycxI-l=-u4@0Bszz*K
z4V*?YyxxxsBYvy9rULz3cXpx;en5*Qs(hXER64w5o2G0Tv=npeO9dBfIfu&XZ}N+`
zyu>)H9$b!VLSh(;k`SL|=_Rif_Fc^^MOt<=24!mc-SA4n)^dk$c7<e8V|!H69kHVu
z9zT2NFpx5{?f7&3>2!Ibwc3qL99`$Lq|T(AL#49!#oWHQg-fVt;Zu_4kL+tawvkqf
z!ut)!{PjHzlvjeoY}0juwQsl-))LjP{-?;A+=uR!9*lf?*FT!AsJvkg9~y3UTccVk
zu7`8HD2azCD1jwYk&l{2Ox0INA`+;wDS-azjrF#_K-;M}dlo+J#qzMQumA>G*;LAx
zW5}8#pK)<d6%=}Mot&Kb+HLfVHPbHAyl<w&Wr&DATX#@<bmr&h^U|8n988UkjR~pI
zdU)?IR-2ld_Dq2GPw7_09#URwR#$tqwS^{tjc8UI%gZz#t*oq$YwqWv_A*u#Htw5j
zLR1}7gW^r7txl)tRt&4eoA-$CUVpnjZa(+CV-fpI%BZPM&xA+&+j`U#)PV6+-U@<-
z-0dCqvTv4JJDk%@b=e;$Glz)i+8G@$)3xxk9T>JT0)`O2PAg(i-Dw7Q;OUy;lE;~g
zOEk(+{}c*&H;D6Y*@a!yK;rG4Ue<66NqS3I7Vs*-_KwWMN_22OyL?58+ZbVoJw!ua
z=eQ=PqAYa1{>Ai?BVG4LIa-bS@C5H(dLWXhaix@fJYDPj>c+{+`#x9<*ygC+{E~i?
z`Jm#H*P3)=B5>b-mdzg?ulXFfooZ+-w{Uaz7G>{z<F!##QTrgxmq}(3R@XYk<oyC*
zXkl!LeH+MI?+8<f4Q%E-GQjVA2T^&|o}F_zizA6nRdYWjw-IHb|K3ybx<453NEv8O
ze^oMAs8@HV^*ZRaYL_ui*UFXOxv$(?cHQ;+srDYd<_$DhpfTciTHYe2|1tF)<XO}C
zxQ^$yzFx*ZHg@W9-Y$!ZdbqG(D2LPX>+oK#{b8%xc>~MMtYxhDegmfin``w|j?Xmd
zhv37{gAi2S*PHzbo?KMa!WH-p9Ix@fJc`YCDesO8PfH1SPr4WBC#~fL?c5dk#>6-6
zZ4GOL&hQSt>$?>>o;R2Kr6ZJu#oOPT1KRXs%Pzan{q3*L9V1B=qc6~f3wFd0k%0_e
zC&=`xr$lPZh3v8N(%OxD#Jc$-(^}g;07qJsszz)#yhFl|9l4iNT{{<vLznb%7}<}g
zJB4OCp1s@rk?#rXMG4wMf?RKtI_@hJZuosI@7i&vF{sfCOlFt(3_t4*xEi{MG8x@w
z58SLod1W=GX@|8v#hbV~vZwh(x#9VxXICP#bq+g>oTCF0>j&+R9;&+dVIX)9ydfca
zjbYZJwYoUJaoQ$|PJ>=eHX*>iN6F^LYMG6S(%3p?rla#1eCN!d{s8&-5TCo>-j(||
z9(`~4=q8YUSbod;Z~y=Q`TtS_tFj%h;N2@jFfg&t!J(?Iv9_*0lo1bv42#{a9U(h7
zy*!*VSEJeXeXj=we7z4EPsgyo1B|e5RHbo}@7<V!l?v5mGcaeSd+fG8ja+U62BShb
z-Qsuupn-dX`w6)E>@G+~e4+I_-coi;E7kALacZrJM-p{vPS!?hjH8p*T0u^y`b*79
zqc}QMCyU)Ro~=oiE9wnahD$Y~qkCh3RJLl1)jwB{`}%Aax}eSs!!<5O^M#r+Q1A3A
zprAN3zxub~tr=sfYBdW>)$D?IVha~|`6oC9k8y4eprQguNC42Pg%ua+QZpD+(_$$7
z9Inxa0ZN7@ZRvw^$iO{9j4&{O$47vxE1<bq-_A}Q%wP;^kd}601FB*JjS7<TfgmO(
z_34@Zy!`6Cf||U%5J_1hNhy6vX#+`#FSP~;BU}A|aO_Y}Q;cCZ6!`JFe>8QF$(ep6
zjZ@!f!YDM_I5hlMXe1T}MlX{&HqfCispvcSj|4cGxnD%2Dj>KvATSi+vmpY49s-I{
zGNbV5%^^Tg5a8>p4+W+E@(Ox+>3evpkxm`h+9o$TQU+5isZ+`sUEX0co1%v&;)E9#
zenmyac6P>QXJ@Ra0MOF|#>e&3($pzs4U&KO8oszNZVyyP5RNbzMI=q|{d&An0?YBC
zU0)6Yh&}tRHiPxWqKzK^LWA!&j2}1N`(Exl0q5<5SDEi2uJ>AC@AuT*bmzX8V;z8X
z=h)S}hW@%o+-@Yhy0*90DF6G=)v`IDvSavam{$Mo5*3`NV}#2pHM;RWel-mQct58m
z;piAV9_xU#T?9vU-pKYI_d$?F3`T1wYIv@ZM>5|5dxwRfw;L*OVTS(WHgW&UCMrOV
zZ|JHIL!ZbyZTG&@*!6^wvGbX5BsaR|<*rfR>lz;{PNe7hpa%{nLcc!NspWYf8G%L(
zd7P_MKkLlg?Rf56b!Qm)^BZu#N^aB#58mtr1%3Wy>wvlaw<~9=YH=l8p%kP{gU!v&
zDD^E|sGBS?{P&Q$g(b+sLcOfKUmaA9OgPMB5b_lW1b6#`0D!)v)Y_!vYGgbLqrU>+
zkI?F89jUvCotW3*I#n+l@71f0I7pr{8~g0J@1p#^UU=`DH?0TvSFM8gVP~YBy$<h(
z)fd5H(eXsAywEQQ+55p6v~ROh%#sr{-m!<Ah5MPE1UE;Mw4#-GkP8sj{Ds8M)tjRk
za2GrBvaCt!X6hG9g*wM6@Bll{GKy*HPU?5d>bl#j$m9mg<?%-&IropJXm!pP>4A5I
z%h3;3qVBjGhYwZ~?%z(cJ%aOJ6YmT=%x5xW-Fb;WnMh|{`VJuSIZR3j<suRrn2cs$
z2BV6za7{_{!_ngnnn-U86GXbOJWWabffK`{G9BF!{vKJx(sI=e9?*u|q^*+9Wr<v5
zal7tL8*swgf2@+L{V)da;g|L3w}--)FgYqzi#*2R0hRL@vPa3MGBqk%`!#dcBr5kY
zO3s@Fe|l7+mLikI6ea&LUapd5WqNdkN<SshG-^+YZR{^g>dfdkm0QYvG3?)OA64L$
z=`OZ>%@9gxU6KV=;8aMIBQLfB%&<x{TyTX|KC5uF{mp&~HY3%>Q^*%l!BCM`mPg2b
z3NxeAc2oE!rh>~bU1XH|6q#tRyrz&ph{Rt4T}+wx6q6XP%&Yi~x}2_fId3=)Cr3F^
zF>)BFTB2K=vfEEL*P?uX#gtT{UlLRNbFZIyZdzIGnklu!3bKx)pzJN@+)<lDp;ShR
zTgioMx7;oNEmRw8maK0J?7E1&oZu^rHG9!>mTW)^`g)%HgwQLJwQ*5vwrnsv-z=Ph
zT%QKTQBsk6j%*ma>a4NCM8C$5qd!I5+hcgQR<ncM6MKU!<B1Mj+mF}FGldKpJd#t2
zKYyyrrs;BeX^vL^0*FV~5O9+1UFd;@gVj-pFzx?-7+KJ%^|(z)dVL1no&I{f0)pG!
z`%jj7YuwpKDzxHNhsV<aIv%7(gDBwB6;OjEMy(_52$&9#%3f=+OkuPw2A<$IUaArt
zeYyo4&sUde(Hf26f%lBS1(b}DkwOmfbEP2Fa`c(WE=8RQMK!8|25^2sP=3o#X%#G>
z;kS|D1brGB_2CiF@NfsvlzJo#3-Ilmepq<m0kx<oATUrL5mEi>8gzBlx3gEXvr`4o
zp*LD$0-sob%K(hY$pBztje$W`USYT-@Ry{Fp`;{QTpFNHKvD`lF6mEfOjnITXi|ST
z2%AnH)FeOZ2Lrg?ul<j&6-k`->i_W-2Lopi9e)HJgWPByKq@Bne<3W0jI8fJ!d3?a
zh5bJeR^7w1UpkdCFY^D&SnTc7F{XcvP5de+hy8!gSi#YUOThL3g6TdkH`s9WEBJqu
zWz6*Gx%!W?6nnj>p#M>p@w{{5s`I@XLRtNF_vl^zcfJ2nR%4X=9R4s1!dd-wuhiZ0
zM)h?MrBQtAs<t<-5&n1Tz4`@pZO??=1hu}GZDIgJ=O~jI=E%l7{a${e`r92l7)J;5
zdZDwX?ZPhx$m9KpG;%#r%X6QWWSoh0J<1I5eydF?%rttO$yCp9lNu#{|8o`0U&ZrC
zF@hl%;`(9>-gwX0tsd-qIdcX?^U>@uO;~%6T%~SQ@mz%@1rr;&9*}}{-cxqF;re+l
zK8#d)_1nF_>Yuen@2<Op#G)|mCwKwmVpYh*^hS$6u*Jo(;owL&u1r_}cXt4@`mYIL
z{o_%h#hAJBReyE?Ovzt0G_djUvCYk~X=xdSgKLm+d-P4IjV^Stk&v+M?WH!@#$T*L
z{$KL*eRxE$GU`EUs&qg{#7*Y#c9(&@{i*KT#b^HpjAf$-N)ZiAORc*6%g@mb!poGE
z7CCkOVHyk@Nv10Wr)k!AbvTnmg6?n|Ad`*k*N}77y2Q)$sPmvYwP_+ZLkL0DRudm9
zWZbz<Z#}+bG5QX`;n6-!3X&s4(s;yVGX@V3^ASuPh>&9uH?<5f;>~p6Z<+MvPDP6e
z@%@<Qko-kSEMzK@Kb3&mz;ZXuF&b=$mv7ovF!emFEBmXJWBgh#)97Og+QTQoYnU-Y
z51Q=cKqK4~+lNmg*Jxuh9wj-+;YN&n#g1dPEE}HeuTvHh%;aOS9@BZ8@q0>q?b8-O
zW`@iVQ|$uI6uBi9{}~HeX70>`);-UXj~%oKMM7C-zBs7LKzXh15#$oCBB*S$030gi
zQu(!>k*_6YMLnA^a%!)_^^?x|Xev_5tO_uqFbQ8uDvRc~@^Mu3l@l(>BF)%JHe5Kx
z=Ll8Y+Aears!Aaoy=b-jT_RpWkzfB!B~{t=N+|wFu|&ajND2#}Qrp&)|1<GOTN_qM
zWmSb#ss2UlQo5dHZmw;#pd^*XMmt8yQ?{OqVXZi}uq1=VL;FJMRj&Pm_2(j`gCjf_
z4AMKyS)B_f{}$9Eks{hn8N^$_Z0ChjPz(N%gUhzC=a*ZNHqo4@(3Zjq*`wBhqZ`xg
zIdnXFmhr~8yE~_JS!cBWmB?OD+12RFr5$G%e<@o$9&4sdAZ;W(+si-xcX(AQfKAGz
zAOKua*~<0s=-}XRaQoD;e)GTYK5=I|qT>~HoNZ=Jcs!prT3T9`mzR6Ce}nq(_zi<l
zE=3)1W6OWYrXRA}FEXsKj&;)izUnDw5*2`5T-nNUP<Zg!L{k{~zx`(dLbL&mNt?@B
zEe;3^U!ec(^x^)fb&F)p*z4F!ruyH1*|hfbDB3{lq0#=g*<`7!N8MCh6@vBO=4wk-
z73Pb@|G6my*}NeI=)?SX^c5Ey?B@j)uKu5Z0-b(=`B@u1kQ3VgXBrxgB7)|lqR3ks
z+KuT?OgI~Ncb4c1$E~<Mtu{cXuI*EkMwnK!3(gpjQ@I5O=Ksa^6D|AjcRpv~a2#*>
zPV+?la_(@lWGs_nz5`F|K~ZE~r`KLPME!1Sbk}+S>v^Ywc5TK^#Jd@58~?)xfp`CZ
zrwD|cBI_OU;~8eG;B!tQ^^Vv4CBu7Z4VwG$7@47(TaeXuTxD8HX-bVIBc}!%C-5xU
zuJeAY8ex~!UCzW&T?aCnES)ZhN>;icf=u$KFEm<PnWi`BujF=fN@W7@H+Gpic{Dnq
zlHU=JeXxX~!Yp2qPCV>S3wFO3?k+#>EV>t>+GpJVwAchQb7|2=Awmpz^9=xiY5ew2
zZ?D764R>X0bPN;p)6!#Amkc$CG_@$0T)R9Vfs9CRUqF_`S!UtI2%7$Ws_}kYVM>ZM
z|2OgNbi?x&jt;Zhit_eKVu-rC(&3SS-Gu*iFObPyXg#v-v9rKDt@3dx%!h2nM=`a_
zuC$BnxQhor+ZF{7^N91^^E&YR3!*^>OpR%vRHo2wJkRZpX8qvwlzq6|*Of~JOo(@6
z#%Wg$s&xL9_5Y{GO86P8-fVlhV4RWHD+9rAS6NIT-DVlxVn_K<72WJfjuEJ<9j`#d
z4YI(>3*(L+b~#46#Po7rR<(ol(>D7vN4ca%xAVt_k%cSHc-3@S>mOeu06jQA(_A3F
zc=78mosp01Kb7#eS}(7>NbxsbkJTX1*CWys;%PEDxP_`rA|7`!rTSnsc%4vKHhXuB
zRtjt;7T#d}+#{H)+Z8$~*n?M)1z8;@F!s>8+Pw|b57rq+oZ_r-El12^9|!VBinU+N
z1vW%62Q@IrX`3v&m$_L3r{<wyG*H2(T-xogrG&w94F{3?D+~yY=f_l#VP$2a<9+h)
z_GwJ|D6I>Li3d)TdN^*bjU+WPR6q<|WmUR@33G0jnOlX5e20pBwPP0|{<|VBFtps;
zH^Ot2Q*LUGdj;WgD1QKSmTq~RobMpxInB_^+0NEsB|Z-Jq`fC9+3>D=8X<q=MgeHn
zvuD}#8iyuSj?#D-NaZZMW=tDqM~>)g>_6VS(!GpC+)Q1E|5CFu<+Hg;%Pz0XgpkJP
z4F(DL@rC4{>ev&0G!Za5y|@oax$6GbA3$`K4+T^$vSs~YtNKG(HAz|3HP9))rvtcW
zh<)5gimY926yT$i<D*lfb{Nx&tTi)>T8p<>%9GCaY`B(I;-FKM*3><(Irw;<C*GFG
zbI>fZ-Lh!Z(?+_zhmu^Sd(qbq9+%vcl{6Zc^iPXDbCP=K4-hr_g_GpXG-2m(Vok}A
z0iLP4y}(T;QuF$U8$xU_R1=DNAL0iqSWENcO>1tQWZIh%(FW$>9YL(&EU6VArsJ$>
z(wT5T;XVis`_F3_rdQwz;)<6mVy0ikh#%In%($BDkczApy$Its4bE>P^V~D@?!~8h
z$QqS~^BK*;YqfN1GqA0N>P-le^)@nCZ)Te`6umv)#(Jn7tCUKTm4?^GC84P(lcMF=
zQe!;s7hUHw#oBQ*YWMywsq)G;e}oJZ6Ee()(0`a)Rp-jh*4-F_w94C=0b2TvSQaEM
z!6HyMA_J<E6by)zfAsO|?2+I6;dELDo>JvUUPyaQa=&g4nWD<b5+5d)*~%z4e=BXD
z-qi-pua6igG3~}F8pMH7ZigFgG}-!SN2ZxQL)?$PEMNk&ZJmI`Ct$11mf2OhwNX~f
z7~rzNe*DMrQ2#V^zyJf9KAT?k(qbT(c;MCfE=-uK%o+k-XKc+|q`yJ`0DduZ__O|*
z;p_T@3HTYCx*!o0Tvmlh4T&NMRq7CEYHn#`<c5gO;x0wh*Guh(2McEh*-vPfol8sx
z7qHw>;?Le%PP&FhwT#>B+1kFOvG(vv9@a~5CYRqx)nCfiCZ(A&QqL^Y_Ac{U!rzYc
zWS-&nWbU1r8d(iNuVKJ7(Gl&${`f<EnMjY|EGNxEoN2&G-|eB<lT{r)mpMKPs%^(2
zR{W=5=znhTUslm<RBeAN+ElbTwF>s(S@~-=7h(5!gTC^2i*)9?96FJ<An%>A&PHEM
zX}YCS?UcV`fA*2tEw`gxW@C!9t`@dE>UC)<`}yu_so}1iieXfz_8p<qArM&8Lkonw
zE;vjZ-oAE{&bY`two1M>%Dbj{kiNz|+R9~Ozo5*#5HCm{Y6Nj#jJR_r*@r--X&;0k
ze<}*~C@mI~)!6LJfd|UO<Ie*fUa^ooU`5u}k9@)WPti7~bv-<mEGMmtM9Qt_>plei
z5sIlXh^{utWKD`h>iYYwH;)fnNqeuU8aEr7v-Nlp{7thpvV}8F4zq;3@3S}g^F)Vi
zaW#e+z;a$@Ix0iN$l5^hl4kdkKn=Y1?bSJs!sO<>lxB+0cCti&)0ierr@BJJ;iRRR
zh%;FXPS8he5gIZ_5p}e!+k&pm0-g&xXDckN`K?W!3sk(tO5eqd+e|FjHO<)Tvd>{5
zgn%T6k2jqE2%%PJdCuWdY`>&ttgWM5jsTE{sjNdPN5?Zxj_I0qhXy}^t(R<ePGEkm
zM7Q%Ko+*kyfh$jV!RqdYD=o&uYXOv8<`;Pm%oBCAk+qYog$Rt!GLXMBvos7i4mzU0
zZ3bO^0Ut5YN2%c3?frI>T*(K;D^}f$8kOqn%YUY8Z%nUOZ>NUS-lt2i*t+Z;X?Z2A
zw5wX!F{~bd>XsTU%q_NY4)O2UJzS3tT+16y(W7XgJ_vaG1m=Hu!ulrwLFA_vwq8lk
zl{;+9`HDDVdh-@*w*syzb*!J3#5Ia&ntFtq)JQb0KfarvwY(1A5W211YWm8rEW2gR
zU3g3?YBWY<6A3M(>Fxfu+)OszBhAR>T`WH)G*-*Dm94jtWObG$+DT)XG#&a-*yoFZ
zJ~sGGJ;J!qY=kc)Elpu9=iF6rUp3uozrW$6z0l+6t|LYLIT+NB8i0k2L|>JuV1T2p
zyPs*!ZkcRm7UX8P^{QPgCp+TC+wi^QEnMX}Dt)T4QF~z<QUyQ&Q-vwO9}LN@XX;w}
zzwqT6wU+Jo^dHx^L-C`fX_j8xgkJrb5m^QMQ>qYyCuw9P@;xO2dCGcd@;pTTUge#N
zGdO8JQH!tAf8{2VVy7LPAl^#gb5TsmS9_9=j_5waHL8Hbrs<y0_6ZHk_~9PC>E3uT
z_W01A?2tbtWh#=^^}{Dp|3UhiN0O`8#T<r-y4wq<+Pf{rbVg6{5$~%89;V7=#s(=2
zjml7s{EYgaxS-02B9#D@#lU!KKSV>XW~mL$=b=ZM36Es8g7OtVDkvo?WA+Mex3?U$
zeQW3sT@!E+&s!COkhF_1e@>TUYQ6d~g5G+gxOi7XTh79RLVx!nhUqy5T}8c^D`$W&
zN0w0G^b5q2s=4sx)hMO$&&JI-6_%#Q523~-2RAKrh4tR38b-_t2kA<H_UW=k+~r~j
zeT>ei{dpAOnyV+cQ=9XXnkiD7DNyXBSW;uSOjgmuFT+O%$Lk3(UO|dWIL4ostrB6(
z=kVDwtkNOTTit(5xL@h4SvBv~{c~=WwdBFb(IS_|Ey2yGJpDqzZ^VFE$^r_>^7T4l
z#!iLL74h7nSq+>39FDQI&p?vZfOHrJX-%9PLaK$;?@dQIU38xzRoLpA!xP=cfe`*Z
ze{0oUNAhm3@CZRKO`t3Yw^<6J#*h+KvDu=YV`a3tlqx(&^>VVZaU-$I8OCOO*|g>k
z<~kXZ+n^E#xlSJDi2>J+WR2K-jRD<z7JK$=kSwb+klEhQyJmu;wlOshmW%3b+VnDu
zvASl$=xvGL)Twvef7vNpoXt}jwzr`6lvwq|L4DC8vuZ}~vOzCAV4!))N;b~TDVM83
z5KF5t4MdJw*?<7zWNGSQDw<vH6xd8PW@pvdZCBn*=AHFyPSz+`T69Hq9oK2N{Sz1k
z<bVAQabJgENK9JcLvs1whCEB_4cBfC_pxpTq@%OY?<!*@Q+;e4VhbqY6)NKM#W_dH
z%%vw}w5L6#bDOtLX!UoSb9Z_wPI@XeU2RjK$ieZAD#p#8-4T40^w0E*4;CgBqmI7)
z4}sXS2w+J1(?W+s^5*)cF0HB0sCSuFjWjwq5Pg$!FSdI1a3qsS%u~+V;OIS~@$mdn
zxK-oy%^h6UD7R7|xxUq8a9stHiJIElP3o0S*#N?rDGD=_7oGjyOKaG@+b}ay1_dm8
z1@6p*VJRUQDuFfJjX&S2n{9#(&tk3EjHb5vB*(<Zw|)UWe6WGugp{Z&U$Lv9nk?%Y
z8Z9}DUpS1{pr>|Grsj?oVMR6lwO(kRn_!<ow<QO#tp|9mMTjZ}fu1h;lx<>I3YNqj
z(|m10CTY7f;r!YSZx7A*9zRa~Iy{dzXTsGi@1-lfXqm2)O%ddt3ix*tZVuw>_6v;L
z@md^4dtw(8QjhM4xoy_7PG55eagd*O+UcUdS%1x_nPC()Nn>B8vcluDp1I)6<Q~;F
zCtjf7QQs}YGgQte%aO)b1f*)4;LDR-)5$+zQWsz&MAky;CE93Z`{+8sibMawLgYu1
z0e4V)L+<tfpZ13jP0)IJ)IQvZ|3t0FjVzTtSeN+8OJ<i(<CU;>BG$U7a+IWUv?wNH
z5$Abh_FM$3;!w`h@)He|i&8lc0e_!V@P(9$L?Bb$Pc-=lQ>W|DYxXxL_!F`m*k0G%
zOM_Cc1!}FCb?{T=I4g0>LqCEgu=LDN+xQ1wq?_ll3hD+StCLFwpNIDm`1fI}7{%E%
z#c7q?Du>0}e(zqz!l;$vV5Mq5`}bdFm<kD3A$F-TSZvH;<<Lk5Uan4jkHf`}VMDVV
z#!0QlC=Oa?e56BLajx$X<Ihh!?CdX>P>{<d=zm<Q{>LRc$;yp+GY{r!Cl}>%$_fzH
zh6T<-UZ|x*QvEVx!4hN36l2LcW61ztjVc->ZY|`+W|zgQ20$1;b5Y7wgOq8Z!#5<0
zxot4;jHxXbZV?>a((lBzi!RL5FKdtd$!DA+BsMsCOrw8o(GLbhq9CzzjcOS47b=*f
z%~h9HcnmZTvo-a&i7icLk(K)J1j_lY#X~*rXqHMYsh)wr6(ggX%y3-aP`=jw?VmJs
zk4|ghM1@?NSsAOVBYxn3WJH_NN$ob5m+8j15~p>1?aePMWuZFcH{(JJWl^S8(I89y
z(ji;bIAMo!$`(aJm0Zl0y+5$6A$Tex36QtkF@7?zj5}q|)f{5o!$P_{J4(A3^J_zD
z@Cr+hIW=-6Cys(sCy6(qxVAM$z1m(sy1Q$(qCK|Kt<+gYnWH}{B_VEx>IrF{1Frp(
zU4Ep#k9PAMI73wX2$9!cqNRb2$ViEpwV^;*Pp<pOB0p%ViQ8Lp=np;`2#^ZUhX`_;
z!RKuv%e<V^ZtvdSOnlr7^QY1CgOQA89A$+9VdFBrRXtb56sc3autPg#i7J*BRdj`t
z2&DhuxMN8OtcpuISD7NNDm7AhJlqa1PJ)`ZrgQecOX9d<>pHH?AO`P*nmJO(%3oLX
zgFA#N0dy$g^W5WFxyfr5#0zC%rmAA)s-qS$!D_TZ!<fv7me5FLuTmDC*9l7YnCm0u
zlyuDZ!z}hd!jm)$KGJSGhtaw+BTIa~ZO9!Jeq^;*C?E3xNcMiBOV=h=sJ+c-q8U43
zJzA2vvo$C9wZPTKW~QHV@@t->j|DXq;!Gv77@%Jab)&x>hm%!GE)q(rxKvznDeLAL
z>ol=idf3W(*y^OQVy>kfhSD5$&ReotT^?)3O(q+0AFQVu>k+0J>WP^hPB=WRPJe?{
z;G)?*9GecieosVatlD3_G^;|Y;?u#5AWxa-sVp7WtrsQJ<KX-gyyUv)b<q_uz|vlm
zO`Op>?CnYYUA4?zEgsA7`lAq<)~bZC7`v6fipO2($=1I|sdUcbN|Vy)?uYB{Bx)}t
zaCc&L`HZ^blwuc%d5tHxdr%-KWc}xT70?hq90b$X)jz78P4+35?6DQ^v6XBunCLH5
zv#0;UW39y_)K4MM$D6BFh2(%a1;?Z0xuayPqYEa-2Pqksa$)tcsu(**iDp3EG*{iK
zlUVg==btI|XJUIPV`XcNmVM>R?04hy(e0F$tDueXm+Nr{WfCM%cfKQ+=icG-=;(8u
zqo4w2y(7c2{+i{nD%~(8H(AYhZusGjN>U$^KLr5N0Qj0*09g}>Uk#=2r-b`N&F0S^
z(dgh8uV2&T+Sb$D&zh+=*FDZT?_ap$tk&d;I}$bTIS#E7b!=;Q6JoXAl4%LI-Yn7H
z<hK8Me|_+_!o0|LJ>YVmzpP4|+=6}ckBUN5Nb;s?=jFAW$Z%KVeN7~Gu6UPm>}0A3
z?joPtm8dcH`vYxvB?<+(Gi7Z5P^=VSSWL&4&+MsF(x!eZN$UG8EBYI`7oMtT{{`>W
z+bi<nU^4KX&xy2Q$1D1iBRlyQ_)q!{@;J;;zDZx?ztDctf4Zoud{3-13j(tB)(Xt=
zCZ2WYw+O}F^)jVjCCNT2CwkNXi5@*r<}UHp_>|@t(|2MD%)GI{xW>#T4aEj4r2)0c
zQpVE~Y}6Fy5|RcpU&CxE)>u+Zv2Ia=AKq<4bW8~QSw3fHAd()#q1_5g1}RYFeyvd;
zSo#v{0ANvIh;;$Pc)j@TB}=Thte=XnwPSF}L8V#$>}Q~#<9Xfiv0&Zsc*@s5>Q9|T
z62(M4WFE)d*Hk&&(OnW*LB>igl_D9(rXDu3z*54V;)p6D&i5cQo3H-U`RZ^;Tl@E+
zrr?b4^3(ihUjdRY=WySvFd>3d{3o~>TBt~x>gF)8Sy~OHHywDpGrf9kLK17G83yF*
z#qHxvJo8B3bBH`jlCf`-t)C#})K;?{rQ|Y*J*`zfWg2oi%&R^8oBAo$Ve61~XD0O1
z@h8Jlif<zn-%3a90T>AY^!U+5sXa+4Y)Si33_~_NIi^r0UaV3x0w5=rIAavFzv`Uv
zZ)EjhSOuESpedB+leQ#<3yDeA>}a4rcVp<cvVuEL(}c|C!tv`i`gR}*x1woc%ddtK
zPuRl~6;Sjw*0*p2Khrjcq6X5`JRDIDyF+H-4UA1rSLbDz?;a2f3y=i)Ljg&@ggAdd
z)DIMp#!8>i=D1A3;WA|62{SqKNa2n?%b2hkDQvd;Ucp&H4^rN@U@f$890agF15E$y
zF{^!@A39PE9i6dgk%4-2K)-aL>8A8Ih?C{=47Aw`n@*<4pGn+Tr<$l~DKkhGs0*P=
z8l(kL&?Hk~j4Fl{42jH8_<^9h<3)dj<4^B@4O2iKBZ(~_7MqWjpN~#0CuZHpIUlnM
zWwm_uTMzZx0evqy$E-Qy<NTub@UA(-&zZ<L@m8|DRO+z85+;MV#1(4MO_nT%5z!kO
zL^>NM=*^C-Wrbnx^(baFlS|d!vyM=S`cG;j!2j%w{?E=^=}Z@ZX3#~T2G>lx&lyPC
zp4PAlYkHMaIT|WOgRl3N>sFI%jnUth?esiK?R|k$g`G#|oN0rsewzNe!P6+;(CktV
zTW*BPK0}75KUS14y-Yu@KtHZTKY?wK#uKb^L@+WUaxG$b9l(h_tyV*=F-MVM0Wr2A
zhC!%7k1B6}&euW3$ed8I-y*p`Vg-}J1naJbz8k*U?Ahvwv#C*}#oG&2irDGAq;0(N
z6rE&fIYnwK9#%-K7x=U}CRTWQGP=jT*AwbJitD@X&(P8*va9hNnPH&9_rJy|V0?lI
zJSrluOZ^FoaW{)Z6~2!<OKsJ=yj*RCKXKD8{ir|J4U<vJs-zi5aqZfKp5XSnnRum;
z&S_%yvhys-ooZ7Rzj61FFuSSV`)_epC6FR$mh?-*o#ZeV3~B%Eif8OTsPB7vM~MTa
z<@jOUQcM{=EvTAwtVa4N)i5?z6ly9>^hdP6S`KciL5cuZLXlaT2%~J?*FmL-E#(OH
zPq|;o)N2Ki4@ClMymmIC9xLmki>%L+%CLQEr8A2fD=UQorl(kI7&i;IcMA@oW-X$h
zg>3ELuY;led0){<!{B`&fg3_PS*8O47oMM=I_Z}<Ux~>TQZMk8KvfUB&e%7#weX3i
zu6&n0#?|m5D}olKJ)vNO^hv1uEpXZMnllW88%1R@e5o2q84k+g{=ByZZmxcRh9?(j
zh)cAe=C^M0k3pJ4@>1Gby4cV?i&*94?NB2?4K;8sUX(F3KTW?lBP>{i%?K@WO9FPv
z;PtEFtGb`p1A+e^5LM56_BqJmp2#f>`X6AFP!Iuu0we{T-$SsV7!}|@`Bik|VDX}>
zY4_rsnIbdL_lH;RDfC_V1QN7p5N&%DH0V?~+uF-i9vpW0$bbJ5VSV-S&(fR6g{Bkd
z8ioAO(-lGK2o2c6ur!ZTm3q2Kb}v!V2*JP}dnjIp%}_~ttGK`xGw!QO+}9dO079%S
z!PNI4gRcl@(p`N^KkOQaLTcgmt(eh`|2c^?R#7-E#8)`}3yM>p&J^w6RT^Z)SbRt=
zw+28=@9Y&;$4a3v_ROuZUv5~8t4(GVOPLu!rg7`N`fxW9PhRUcXG+YQc}E0xZE2Ni
zX+^$tra>;R`9l%I5d%L?jUh6HC9+W6ZdFEOjC?sR;2P*w`2=Xr7D}2C_U)@U#^+oF
z*eM#=>S5T;+8gqOC>V3~PpejzsR5LNB>%D!;6Eq6B=Y%Z<88sojRjil#_(^EWRimS
z_V-u8T-An1S{2N^u4Xt7NNtFJ6VCcooF_8RQ=YA(9iCUi#9z^U4^H2kxF{yZ;!2g}
zs^iO)j6k)<>9UH|(y9#-Nxy7C{Vz;YfRBC2x&xHS{c)q}A~RoeOfi=zQuGOgS;JIV
z!$@$&&~HIBPu2Fw!U;FMlKhWJ19mO288W)5Bwyl0+@IrC8jqVaiGr0TmzFr^<{(42
zM*Yv|>&*XU6=k>QC%30(;yYAL^JC<;IlCZtYiIp2GX8ZcZ35PFp<AFwf!yz9n2Z+Z
z>=c~n%^{7yLys?-VRDWdgW(&cMeR9!(QPfw*tVY_mRAjx0#nxlX5NeveylKM=w=A8
z{fd(T2~%en^pHvQD)cKvY?}rFQuHu~euU|M1;&WwA*yi^z3{^df*dW$Sf)PeFGDhZ
zPL96Q`FgAEwvn;%LPf<{aRnNbugkCh>3iM(pT2o(XgjhhD<vt$PhIx3=c@T{=W~2s
zytV(l_xZC=l&ZgO$vD2F2U(-_Cd%E@7q})))33+hakyW-oyF^=Iu|<HRNXtv8E!0W
z3|5$?SrcYkBuLaqkR(%0G)SczCS-l0u|$&#Fd!0V3Xi+vNTvKDjUGaYKyjF4iQWGl
zY(XH*5<!aZ!y!J-24DDMcWI$-+jziw9ZULU=3}<}!R~ImLFm9%Kd`(^HkZiwlfIGf
ze|e1`6B1}!sKCmbM}5KLTI0j=t=!^zAQa;MGp4+!_4F%Ea>tyR7weIiiu49k(78;|
zyG)8T?pUGUky7^sy`I~eZp)qrj+Xoa6*fH8Uu*I2n3((?Wwsgl1_NY2DSy*#<tqhr
zmqJn)AXN8vo<X-FTeQ+gXRs6dAVz+z*<dlAcxgr$30^P;^0oxkQUC_paHk7lWYb+%
zqj#E89O*j#;>jmtV;pvNXEil;HMJARHUzet`+M)3gQ?a^HcdBr&5QY2&1Q!~Ci7!v
zLc%yKVMw7OO=2?7@CoV?4i2VT=q39A3!dv+Y*{dG(8Br4V57-fe(LoLZSu#2x-7Gw
z0-t*;Q#N(FZy1c961!>FD%18f1Y6YwubYeaJpFAq2dJz}iTZEX(1!x%j0LvF+DCrC
ztHR1O$fo_mDkMwCI6>?_2@5j~i#3f6qfRxzqfM84j(3o<Oy(Gji6Hwv@LS|ny{GyQ
zj9X$vEaLf%WB|tIRS2$#b!Aug=IYfhZC#yerDpSy%uJ18ig*-(rFp8~(vHE_3G`N3
zb~QmLGZf>ipl?1TyrKRRhV%;}F)|A5#^EGlC*wwE1e#_qa<Seg)l!)GqDQsq*V4l`
zl^Y*BH-X}mcNx<wIzw%mT&*_AR&}BK4#8`HrX6){lM;(>7$U4~rSo4G7oxErTjbYy
zo$0djHTq*ra>{H#$`ncrX{A2}2-C@RGP#Cv{?#D^7B!5i248@@xFt@bIwRoSRJBKm
z*^Tfwmv<Kj=le8Hd#A%`L*1;bi3>!82$z1uaz^x>Zfr0B<g^!Y8bAA=9OMF8qYyC|
zVgI?DXTBOm88HFNHl&TP_vLC<Ni!+dkzoGlq{eK_PqPb4BLUXl&ah3Lp&JHhL)Cj)
zm228xPhe*HglUHVgQc$wi}LyY_A3(7-K8MiODqi{p`_B?olAF0w=^uB5>nDFrNolb
zxx~`l`M>==&pY36UG6<I=X~nS5UX;YS(7+&iK4r{1uMdXA|KCj(L+66joD4wit$Bj
z@S|&TM?+1i6}jRWGZ^p{2!Li(ppDtXrZG>S>d6vkLMV01mkt^6s8wu!mu09n`}ROe
zmH0vOKS*Ok0}=$~QN;7aNkKtRPw&B2)s79rkcopM<6FHb&;?9{{s#xq`Y3{cGrz+4
z>V40lLF7|IYXC~>2v${b_^Nr>%ox@WHH;qx$g|_Y<>^7@Mng9KDK`E@HvU^Rc}Ke6
zw{-{FT?zU!Ac@u6`ruji>kl^4ZD#lkYxvQN@5WSZs1GlOADZmjGo@ecn$?v1gL`P9
zMx-*lnC~dQa>o{k@x|$xQRnaHtbJ40xhg_f(`2F_;9zmUjPkIt5q%~Q!(2I;)%4e6
zw3+4B90_1L+$jP=Ep(u{u8<S<p`TK}SY5pzL#^^sd=>~47jJhkFhc^h2jOW9qIL9R
zRvCYt=8}Mhu#o<@rSOdI_Kcn(ET7~W#q}MW#??^_fs%kNy;4Mv$kS_3p+vY5?{NA!
z>nIjO9C=%v9ro*+?}K@+?~19=M|l<3S`64R5HpDB27Zs%$oL;|GUtzRaKzMn`lJ3{
zxnqlh5F)XCWI^c~dEH<BZHpiPdqt3a@=#U|H(UF%)%*Nv<p$jDFX{Q%ej?Oxq9b!-
z?>)zE4Q$*W7AP81NUZ7q5$*k_6<^QG{V=pMnZF>Au_CZ-z?6CHEL!(*8e|P$qH}pL
z*yUyWl@k=iXabyp2Q{{%gow6&lSBzx{7(d#LKH!#Szy~>urMr77%B(Fi?DwAzgC2s
z^a{ZH=@7KLyYjw}{lX~m*Y@co^A{!Xk&~1t&@uvLD!g<%)iOi#d2_y7jfUXm8)V?9
z26+nq4`#hQg-J+O;(|h92+jla<7ZHfn&{rjQkjJpB(>FLhkah<a5e%o+7{veJz>4)
zZ@XtzvphX+{@^p7D$YNwaa!{Kzsb9Q-(**Lmmo;VZtGV~X3GTD`P<`>cu!{7NX=pb
zsT3U38WU1-cfw2(oo?`;46P<B(p*gxA&DAqj)nx~(kv`4W@TmV@9mLOQ0VIFwzakz
znHw6edMeQ-lq!e0>Qv;vu8|QF39j-w+x)1is_N(W_;`OUEG&F_>G&$0s*z~A9vDW+
z&;JkI_hjuq!nlr09r;i@zry^QH)bJ)At`5nQ4;(3X?!@7SYTSJUH!XM_ca3!1*@E}
z8j?BWcJ!h#jtdi-Ay2WiQ#GQjFQi!_SggQk8!m`yx<3ZMdsDA~J;`nV$7)ZHSiOa-
zV0)uXsAd~E5i1>Rdc?*F`}yKKxZ<{p&=S~*^B|Z&c$kd~!kehP<y_olw05LJcjDb{
zid>O+`TYkvQzneN`>#mwmH$3k=5BshSz;#ixQ>=aLJAh2{P5ozIq=4?qP)C|yE|}U
zWr+CG&H2%?kNd$~iwolD@gC=3(W8501lk|P$<Dr?_<e{}dJBOF|N8Z7XlQ6ySlFMy
z(B|gm#>U2cwvN2b&!4%yy%{|Y7wRp?R%rYK1Fl|L!k{0OmH+jnn_TYymOH)b2|t1O
z`GJ>?Y1D{5g=9+oxxaq)JeWJp%gg)r?OUx|{NRRUql(}fZk|Hf>m1aPruKFoCZ^4k
zbvod+vGCOS+6~k>4BoVc21Rdg3tioN(zbLFNT<g!^-sa@US@Xo!?5KTir;#lKPPe)
z*4Cb?&-=%NdyN}^{@mQ!k}?$nLxsI2*XC*s6%`aZIy#b)fE(>>1`O9TGj*Mk^*D~#
zdx>u^4-XH$yeI>nUl0(~8~O`cSXdC_;RUt!<AL!0U(G0C2a2^xYoc$H&u4|hUvf3u
zt+$C-7;ni9{%%y#!laTyup;XP96L!gm+R%0J5DxSGWH)ZV5gbri>=3^J~LMbUb@fS
zrnQ@rxy?$nl?QlE-Y84a<T2l(;~7&ajfto%PUGw36()z?vL0)S9v<PMtsZ~Bl8B}j
z^W8Z<?h1H*;<KG$OZzYCr(Fg^s*%_284;_7Rh3?g%`kEHRH^;Y@bDn6E+ZqOqN3s)
zia|{%5Wd>m*-_KbxcV(ZLb=x+l$$5v#LYyuNOFb#tl#iS*U+%5tZb*@2(z@hyqtxC
zBCAT*EsuAOm=(2xtMNsfR?8RL`>W%TQTCo0Lv;o%&}I_V9Zw~4D#u@~E`L*dd#c7l
zpX;Nx7BAoHY!1Q*X8IK|t%in%+2EGdR=0cghHQEW%Bg~);&P+?VyoLeCMM>J9O;|-
zj*driG6)1>a=L>zwW0(?4mP-{)ULeg4UhLfA4Qq-{evIdAD#A#mG@Vj`LJe{PJ`{N
zl8;YYn@85bxwem&zE*<`mhX(V_Wa}HqiCJ~)!7-klvE)W1;24FhVSm$Fv{xY%*@Pb
z6Vg8x+x_JjYb;m%m|VbVCRB0lYe@~YQY3nRr{`&bE($+3;6?pHZyS7>G1wy9eAIrA
zB1!u{@ZERurm)3F+Vyg^cOL<yk7EIVIu>818C~XMA7B4ax!_7;{egwgQSAIZ_f*KB
zD`GPH93g0+zn;|5^L!U{^X0LkfpOB|8LHMO`mJq2V8g{{=4F=W!0v~IUHZL@S9OYS
z=NUpxGH!M=UfGXL6IA|6zPoat$GN=5X<pmj+@u!qMEhXz=UXvtOkM^pZ90S0FXA<#
zb3GO6-zb^Hl$0^CtJIP4W76#Gb7t>SdHEz;HGz-kJ%>ly8XB6CI<qGoof_z9QWrwR
z!TMbMDd2WXQ%Go0Vr!teo{`|B>~OJ3%FpcWRUPl`%WzFyDNPSqZ|}RZIAWSHgAN^v
zY7o5&*LX+4Td_?}4i4bn(hd2vV8sxP>I6rcjCA=$RF)SSo+oRGnl0y>k)W(mgEn{e
zpTF{@!fV!#Ha7nxF>Y^fN1Jt{E<8tZ-Y!PE0DHxEW?{j$>%ke17gnym0PGt9Zf+2$
z9_+gFI}D2=Khe1Bq+i&1)5>4W@?bKrg_4qT-4^MPhKedWc68gRS%rc3Uel00jPq}+
z+iInDz5C_fU!cxN)|<Swcy$a!y?|R%g@uIT?uaW5Ym9n?e~b}+F*H;zonj_L_fk+(
zSAU~yWJGJ{{Pf_Z6~=ed=9H+;balEhc)mTFCG6o~Ys>oJaSHEGs46OYmFjUYmtS*R
z;ofBPx7=fu7On3d{a+7sCP(%YFVzSj*Tb3-;VhRFQWGvP5N%gtSD4vlBe3*V;d>;4
zi||&szwW(9Sq@je-UhXMDge@BMId~jxQ%c;`>YJ%%rxnm4Nq4TPa72pi1j)mALY*4
zPL^{2&9G>hK*^&<#lv*9%e&|rrPx~DzZH<J=+q8?HOd{lc1=3oH35ofqAs_JxOSYl
z#2OLWU*zQEd5lg~0e2U>zfD3yq`1=hF#7Hik&vWfVq#7?bSg<GJam1@d^Dv@=Vz*P
zK_HN9_8jigXm2l)9iC0WcflwgR<@1hzAS$G7GFW@B6a<a%uer1^3V|E-Ql63A7y1r
zUC**7N1yvCyD9>y@XUZEqioP-(1iknwgsi7s2n0s_HRI*Y@`Bq6!`c&pG9E_UG41;
zYds-a2p-=aN=jHt@{;ex&S%TgpR<KPP_$%QLqcL4mfcqCV5Pqdye#fzI`>0`$rS<#
z89BLh^0@x$h@2aM#E+U17XMNC*i252DQ%dQgX7Q85DN!~Oj9u46m%C?i-m<{F9b)-
zGv%Zcj~1pfUFI0e4x?#*)74d;1Qfv08yr*)vzkbtWBu}O{)Ii{oss(|&>S4#4-A(E
z+zuP+=;*9<VUTcqwG*MnNd>CbU`yMW__Ob)MU)^<97zDOsLG`^Kc9vCNWt5}kSZts
zF!NoOzf5*|6stlVr=yD6Tb{irj7(1v=f}5_KxYeymP~ObmyFhGUaUx$*Q56+z2VhI
zy~RGj7C_%6iTa%rN{>T58Y1g4YT3NWt>?T8Yf&iGD{%pY8|+@@H0LLwTRr|i+|ech
zihrNTC&WUw6O_b#QoQ+-?6Qh&GI+-5ht{0uJDw1t$HO>hPft&*nv?vFD^amR1Kvto
z>LfH*m>A7bCh&GUvYTNZc6N5oY7DyE&#{q_Q<FMX<LX$}k9V<W9V6-1@aKL_cov&>
zo$K|{GVsIEw?YVzQBh6H(OUAwJR7)K4V#WA<Wx{cdTKX<Up*tA->rvd`-&OnkHo~V
z;aVauhuO2URn~|pJ}}j!_6+{mcs#qQabah-Cua5ERQ&yi00AHcxBZ!*XP|Qx6>ea8
zLnTju>D}-?LDz!5+m#NVypxktN#HfY05&G3gI%&MqtN%e68nX+@y5Bs%HmX%rg_4?
z`aPZbmw5_4K7&9hp_BCws_M?3KllK~bsc>_g2v!9!&x(tXz}W$@Do0R3KZ2G9TPcD
z?^y@pUnry;;IQ0!xgJjQO^&{KT&;^7Y~5Sy<K@-EprN5rQ&~|F-L*J9{c69Wyj<-5
z0MtD9k^Wmy(0@#1m6UC(ljGwr=GWdM4QqYI#>O^1;NarIJp+aho--E)fYx9N=rVoD
zCq>obKO0^2FGjmiQ(#!-I=KF}26OC}2{xB`LoJf#Hc$OFX*V_`UgsSc;-}mGzHb8Z
z84;@S!STz2HaU8&IJtYhrMD*;E7E%;p02qRYRc48NrNYApV#!`^;#*yj|R+}op(5H
z*I=|0d1Dvng45@->SKmT9t^@36$|EH4(oT^wJ++)Xkqk=nDC5>5BsbN^;#ZEE=`;B
zYE9#PDmprimSbWnI45FyM#b?r9J-A*e{F!%CSi7Qp+pTnnYub$m7+fIGFHH;eK6u)
z`}O_1HTt`d-$rn@RrY8v)<$-_W{c5Q$FAk8Wsg>sn_0u^G|`kw=IU;#qssNYJq~dr
zU}C4uU({o&gq<gQP~SiYOv*|*aeJ<0Y`ng{j_2TTgo;BQhN(4rYGQoMsI=46gp>7q
z|L&5~{;&ZZshuya`qvS)5h@0sVZFsDfDa@(njD|8KTv3xV7>Lwl*~Ne{1^gL>W3V3
zMV_Ox`}l;vCPMVN?RWmy7QW$KXbJ5RU}t0NcFNC|lIp#`XOw`ha~&QWaQ7~^d2l`$
zQTQ;#3VR%Nmxl2jx40-(XR>0>2nz~IWl5<kXY(}F*6O!=p2D()<v)EImtgLTG5Uoh
zuP6W!V>8{ngGALA#(X}HIi2BsbwP|BB~#d=yu)30I9Dqr3BA0yAUq=^BI@xL$`-rI
zCRTvTcGw0bWo1PJ{LK^fA4l=PX?B4egRb`)MgI`7zHE6u-SR&ge6E&n54b0?2_>YG
ztKwmA-q2gXS6RgKY66wif||D@sg76TZoZ9))*)KAL7YowH_1Hhp01qKy%lnI>Gi1b
zd)gA`BZX~5<ICv9)f|-Cvo6$Ax5Z#p7yvr`h$BF~Vp$ex(zU~Yi5CJUu>0|?l7J72
zKP0qvJr?uqVr6TK$~@5SxWlZk(nTbn$~IqTE^lSEbGX>R&K|$8umBuYEnQs-JiPCP
z^;Go~Udmtj790IE4OeLmJ-<wvdqFfjaY=pAA2=8oe*FB|UVG}`<~I7bVmB<TH1#9n
z)?Jk?#lBzI2=L9zD=K<10v?*N_@DPG`aLslc8=;T4=KpWH$yLumKhw6qboG5Sucuu
z!`O&*4Vs;uoqM)q#VBK`*nX4GbyQU?r?6@|ESCp$06n|+&A~zgs-x6x{<iqT3%4Jd
zRxVx;cPA%kSt7<6yt3NyrbHA*zzQ2Ll9m=|w7Vr{IUg0E04{Ve^a*&u!J!f`65;0N
z5op!5$2FFl76sxjFq*F;YHe-p@9*Cb*Lr30DZRb>OFH;D2cO{sbhc8vkoNfY_V$cy
zfEhMtbey<{Rort&c9G1>08?Wjif(Ii+t(OfUuuRR)%iU?UZcY?gE5a6=H}L<FXbHf
z3@mH4YWx8}aT8-amLs~@U`tY2`TaW?B|f62hD+<};zDhXiV%ChzP>&Y&?1iU|7j2$
zyF`(#DD)nvIhK4){j&`pmK-9>eEMuW)y6q|nfzx2X^)aGt|N-SlNh{v%*H>>ehT`!
z4eO}PdfxKRUhmO7hl5000LD)pnhsVKIg`vF`=RGqEQoUn#v!p(AGE9UWB9AIupy!c
zor>URR;xE^3TBxIG%L?ST))hTz=005ed6Qg1rA_pVj?$>xZdN`6i71S#CXwj7F3jw
zz~%K?@#Dw-aGMR2IPI&Z)xB3JC=HEb8cbas9aR2$LEsIkyjtW+Um6;kO5dCLgq)oJ
zj)ydn_CN6R@i{uuY@M$B_~GDl@1o_ul>MeFXXQ_+asYvZRYHSp7xk@z0RPoJKufxh
zh=iniZahVvnpPcpv+!o^YwY-iCG#1Y!M0XxNctTZ8mrUOb8~ak(;_m#dRpX{JKi!8
z^$(IAseg9<DOJ69I{>va<nx2Rbg~M^rs|=#!$CtMy%b|#*@#&loNM=DeZZzvUPl8;
zH}*?;MFL2w<uqgVptu@^iy0Rr6cgRHM6em$`yI0rWoT#!U4Zz9L5C1n4+<cOQ;#Oc
z)gLOfddx<TfVj676IDe<N}8v_RP(KO9TS@b0rV}F1Ba;+#gKoh$#*0`XKe?q70}_o
zHvbsNF30(ydI+=Y1eM++2Wx?ZKVa`$)zRlN1|r1EFxN77yoma8MkY|&?yurDXDg1b
zNKh}cX6GPTADORL5pa&be6*MdFF4D+7`20h<+{ko3>XRY=IW(J)pvD0S3I>!7jy;&
zN-Tw*zFKIuou&37QIc<CS>1>^eCgigcYi(m!@O(nzl50?Spa!sLeXdh;@)YwJlsI+
zV60rt0O2y4C~?vZ4YgnFWMyRy_<MThDNP~ZK#i{0fUfFKm3{d4FP~=)ci-(a^AvEl
zV|47ty*xaWLnC3dL96<$n-vLUB$j25vxWg3h66!J;=w8L*;mKUr=_{rB}GMX-mX)h
zpvOzrOLbeiR<Qs<gMfi2A&{_p#yDSef@om?3!qYOdJ|t?kHO0}Gc76k<|LHT@)oV{
zRe{kv^kW-q>z<*71)Y)qxMeQI6m%e)tHA`=okS%Cq%{U&i*xW8`?B%d=u7O4tr!;A
zMkVRhkB1YZgM?Z>nwUu65MQqLH0}I=+v`<I&ugX#kVW&EnVH$YB?H#@_wV0+_g6jS
zZf<V+`uc#%)7}l#1@XsSWiuW!5(EjSK~YgrH-nQoB_#)}>*=oI*AXxWh4Sy<s$%^k
z1375YzkD9Ylr5H?`rd`FYs+1;<oTTKQ2Ul!=9ibcCh$)+NGxm|4CS|N|B0?IFLZV0
zy3Jp>cmrYhvqbi-T<{)s6}nvty3ZH_>Q(bM6VtF$=JvHNr`j;qCsGQ2{*~nx7lEf5
zP~&>SJEFDu$;nBgJ~I5u|Bk6m7hWZdH-m|vx*L|ZSsNXe(Z%Ozl_8MVXw|>eEL2=5
zC>FV4(%ISi0|N}v#O#S(pI=;_p0-3Nho>YZp~7S09|utN_jj}Hti5<;vN;Wvv;i%k
zQ<ef9HQdeRJXtPm*{G+V%qAYl7h_qp>k%9`)6hxYPE2qYQg2+~SvJ4@8ZH~W_@4jd
z5zv56XJ3iU$5IGz>X+C0-MioT$BobuSZdmpUFA#30*ys>TauQ6$j-YsvHLD3zx&JF
z!vOlxZBInvz?o1?$UWOpDV?n3FbNMCTm%-i9<MnZ4XUKPB<{&l!VYVze{XMz?)U~q
z>hJIGnZwz6^U@HILHuwn)z$xMO5e%AV<bjs{~<D0sd2_3FSeUWQTfsO2!?Ee7<phQ
zLInLgwO*L*f4!kdGi-{5q8pV$8u2dV6Cwt)&kK(*vWHMqx7gTNWQgjCstTj2=|=6~
z%rD0mtgQQqbV-uQP$(3_tg!<ba4)LrAf9$SX#G1gbGXt$B5;>K$|qnqmym1tqLf_a
zn5b7uQ8L)Cf3SW~#d&UgXpdKnh(ERS&Zf4iimH<+;`}#&S0W^T4E}JD{Es9?Ie(B0
z{rc=IRSsp-1rEpTuHI+YZLBox^6w1;zN7=Wu>D-k>-O}16J-}j*j~0U;?>_k)1Qrv
zWP+j#q`bUK6MvUq!yhhZ4FRzyekAZ3EJdZDFfw4s^OF0GnwpvsxrwQ1NcC59yLZ%D
z=$iUVTHN!=9twIDr>mdm$d`mp6$!m9WTW;-zugnVAKZzOR+r0wf7aV<JYJ$-=Hj)7
zf=f$F_xJa8b##QV@JL7mm{cva0@k{NaKs-@sskSPYfT47Mn=}mz)ZI4o)s-EUbz3v
z8Ki%#X(~#icGGjgzC@K{G+OzZt;mP?vnYl&HDwrU`1%)#G+6m)zHq#l;G84eSEE%z
zEGsCo{w!m9p7=AWsk3k&$g_-JZxHC7to!?v46q7K+xy$w*p4bW`j>vHTq>0z>V~Up
zf0EL&1L?wTOyQJdWPI+od9||f)V)4GPw^!{fQ;}Xq*u_6t;u(Nf7THb8++?C3JeW?
zz;gmqiam$r=hwc^P=Nups%H$}ZdNP)Tn>U_OxXsjSq0RuO&=&X#NFdsE#ip&IR^Bw
za&&O;3dxVhf%dtKC|wNxkJkbZ-V7gMTA{pp)pPpZTu4aBFwx+pmqe{3)Z=Igu&Tbd
zQ2KMnwPU^Igq14AUhi7JGAZb$)LzM~)$Zal?(-uCsfOOha%1&f;tm&{(0%fMcT{>t
zCUb?Y+zjs0??*Am5BGVLEA_{K3>=G(<O%jTZT6FOG6M3d#!U=R22jGI>jApLMkC^>
zl3xZCk5K#P2ZXq|?+xzC+eEn=1S=<uZV=OMuEzL(%cB3kWeG-%N!hfCL57M9m<oK(
z(y5I`^>8gSDYWYCpjQ=r^Kazy2Q$pFl)C$FU3q%w=dx9o1(Fz1k<=$<XJ^O96G%R)
ze6A7aXgX=g3W*%r=B4K6A=9&1?R*4Uq*l)7ey`C?x5UJWYWCI1N%BUjl~T;fDk=g3
zjL87_*Ut9=ys7+la~FqAi)J5XWl?pzgZLJWkI%+Fn1;7QHnz*l(_FyuEU-N5Y9d5I
zK^mOR@M#W?Np^5ZWw1!NVRjc$ui)=tii$?lQ)}AwUdUhXnCSJ&uY{*-L@rJbf}<^?
zUPMI1_b1aFCnKs9JSH9A|KU{jBo4T1DrY^YSjJ5`G*0tYHU!o1P5aqGMFNdfPbVs)
zaoN?PI%d7a0TKGw_k<sA6#L04=%*<wR$^Q%Z?zll@9zN`eHrEgXwW_Da7-4g{dK#8
zy*=-(AtJ4*r6tT^fFRcRuXg&a4bP!++s;&`rV{@)vb02XG+xiy>dzRp0A6=tVzT<*
zDs=o$QjkB6MjV8d<_a>Xw%@3YQP>>mwW5Zj|LF+a9`K6=FFwv}RC@DEvB2se3-tS&
zoCovLRr<d&DC713scMadoV@pfpxtpWE*mIY)yvQ^1Wv!o(`dALZIHWB{F`e`63d70
z#^aNx5rD{A7z`fvu4pJMD99D@YIR)wFSJu%Bwmln=Agw$QClZ&Y`QAJ=-qFNkAD>H
zx(b!B`IR683^UXL@#j$=qc=nv;ClM{=a1LIv^Yh8mgsxCRlq%^Y1sMUZWSoRpZEuK
zO#!_uC@82f3IMdxjaNE$t^D+`2oFpKSe^)aP;mmdSEGiyf;v?(A9+O%S}XJra0Nr+
zD5ncp^B6GLwKK-+Anmy6k~cZxo$Pymuxu0^iN(z{$;Olyh$fe4@F6NsPPK@MswjkZ
zj){ezP!bvWEAj_|r>^DK$JCA(tkU$b>vORiXm*Bxqx<|ar>cKng6P?4&=%|irKQPB
zaYKHGrJE+0EmTxg^bK%lj=57#a`G#LYKcP7d1fX#Jn{uZh7M+y01gieLvPX3&>$wZ
z#N3`jMXmjHfpH-I1P*xKQd^XFP4g|W?G&+W7L*;p0%CmY>4Q!q>rpO3`yVpfrO1al
zVvW=85agCw^kn-VwD-+Q)T5Sa&E`!%evu_uOQ?xR<Hw#AH`JOs`>{V9@C&HURyH=}
z<-rQD4Qk2>q^bFzyR!fq;fMyRzv*aZgB3rYwhkZfOlsOQSxYk`+|JT+Ojkocn+`UX
z+cnp!o>UFS5ZiXb5yO!b#UN&5xXQ<;hfz}(#DP`&=KG~<z!jtQjY3a<BF>F#whi!r
z!&LCMA|O~~oI<zJ4#dSZJu86gi|h1MQBhG{S{fggPe4G>hK~r*f^ySf5o!Tw>(24v
zt-$ApWK#Bb2t0Ec-V6ggOB1wos9fXPiVbOtm#Fr}NE<0-khkZH7Er|b>hqHa1acY}
z7^u?2#KM9P2fSiTW<Y2Glu5uVayr`ELq`B&o72($ew+WJH|}0f2x>gFD0!rdogJIV
ztK;=UDtNokwZoe<5FcMZJf;Ve)(Mw&WU%P;u`O`YGU<RIo#U1*jgnXvdTzEnnW2<7
zqG_$v;tI<H$wCK1#1@OW?W@P_Rn6l|$L+u&u(~DohAp-vGxnt7xMI2V!H+bN4>Nnd
zdbje8R;+lLy1H|Yx(0kr$pXBF0osNab)9Rs`}>@GpKK^{_<l(_&a*$(_mW1O1B^&b
zU2=6=5Op?NQpW$*{Jh>$U7xrM0F8H-6e>)tbzgsIpA#5D7&g71d=vX_Zy<|a=l&mN
zVz7UT39+#~%-8Q31}wjKcQ0^05tC!|4~Du^);EW<+)9v1fb!2)a1p-#@Q0A-=z1fF
z#&dGtt(;@zIpB0?RB9m$pou3Xspg-N(EN7cP)Rtp|JFB;77f~_dts;(;TLmjLv`%Q
zR0~d1ku%9<eH(hr#6n1Kb3_E$UfzvvvL}Qb8T9@h-ERaFRBg3UklNfzL~iTp=&)F=
z<&aofS~58Um*0U`TU;2Sx#9uTfIyqP_5jG>P8^(^I0!(Zl?umxEHI5dzd7Al&xb-O
z!MOsCIT2}DLT)wz?pP=xw-Wzbq5PJX`KF!IG^LN2v+buG^Jg5|8`*W*9L#Kk3M~XJ
zuB8fLswlmQ1cTbJH>xm>B<rjmaE?;b$CRL6p-_jE-!+k@TK!XON$=QH=|>BnA-`Am
z_cmtjyD+*O0B;fya;_<KszoZUTQnR<wQGI}OOFZ~mzW;7wxyF@eRfgmvpZ3&jo^%6
zt7ukN*PXihvCAHyyGth|1N{zvI3Md0@jClC3>R=*86Ve@$3tk>TUc9JEp-LZZ0$yZ
zvof^vf-KG=_;<d1=<CnSTo}!2!cRMj5EZrEo!p9xgK=;;0O2O5<`%EKq&TEW;q?K<
z7qxC49&{F^rNzaUMtxqFjBjBmC_eX}p%@s^GnEs86nYIditg_Gt0K!Nz+x2wv7(+?
zq9GDe6AU(VvstOA!8S<(^Rmq2qMf5i5OQ6?7wWfg-Pf;W|Hg(TX3g3|!r)dzO?h@m
zR()h*W|m_)Rd31h@bFan#>Q}9*N2N~iHYmm+b9SW6qE!56_po{y=FY?1b`?WM<DfH
zzoW77Dqj34UBrt=Bsnb&bv`dIB5kqJURV4Y8zp3y7#u-VqHOJ8VaW6yx`(gqF_z-;
z$GmlWNO+4!pC=vqaY0aFkhg`vnk}5yD;zV`k70@<#5hZ7BL>Vk88<jQM=v)|KVgTz
z71s}9BPeFuFvrf}ZdJR9c~pwn=jG@7+jTG6wAWw?3yJNyeQu1)v7#Oo!B-TB{>InF
z<gytY18MH-Q8`62-nhz1nidzGIGKLmcGCM<b1G+gHbg9-l4{qm-LuwqmIFqPc#b@$
zOh|Ow=LgJ(ykR&X$*^iv!nHR<Y&QmCeP_V|W#IkY-NL#}<1L^y6%`kE`QAG3&m8t`
z8_7Y}ySg6g$T+Z$8SVHfS`$Yd9PqISSzqZlS*kXOzlNaP9<JgcCcnVQEz8gi-i+ri
zw~+N1K?ZzZt=WILX;m{>%9#Cv_ch}idlt_%sbr#Uo!@mTxG8Cg?C(r5*rU*RbNf;Q
zTs}s?$;r7Bd$~VLzzpzy6BCn@jQ1kE=0k*XUojsizF?wEiLcRWq>B|~EW18>E!*X)
zWxAkD0WBo!$XR{pkY$-UoFH!R)dD4(YTP*}+96l6UOufsIk6ELqVxii+W0X~myw%2
z$to4XRzH6DhOEg}kcVT(S&_X;V5PnOkC({o?IdBA)y(M!?M2><4YEm%?~|#Kld>Dd
zY#j2`ao<EJ*^MdRnY(_rc=lRY!PQ=Vk+G`e-!c2_`F^+KE>*x$SN#3h^xwa`J3Awp
z#WHM8Im@;EuJ7NQr1b;+oP=FRVZ{LhmXeav@bhQHyUAr@1fz0Juvg-SSw8Y~h32!G
zhC7L`qO2^5{enUS$Roa58nARlFUEs7VB?-;Edl+v>%Fo7n+Yx_X4k<daQW`BI#&xe
zy~8HdimKb!yk2V)oI||OhDHjmzo+$WABGa%JQ2Z@UK+@oo11TKZEb$U7zdf_2c^CN
zE>}c@0T^a-<qZrdP1(Q>_pKx(CN6*iG9CegLSXp&_wU!bPF^x_T)_J=<i3CZ9^`V<
zT&f43D3qn?5a%LQI1UNXGWO2SY+O}T9on>qlR5}G{~%LH!(@hS8_hdo3u40T4(&2c
zQAU}wx6_sCyMEPly>C*qn4_PlN-`Ie#b0L0u=e-*<`uENRbf7A9}B#))@9>Ea<%ri
zAn<1-Bfd8FA7_|~OI(a!V~l;t&r2e*VS2LYSFg{%LM&=G6ioXR3yN^`^C&_malZaO
z5M|7#5pnm(8*yjEDlLPSR_p4B4>$(3v}BNn3)<8p@}&FfTkb;y!C-y?3|k2o7ncto
zUcGzqGjl;tT3XtPOobvjRuh_!=HbF+41umwy*MC(Mq7e)?a#NX{{9`yf1;BeNd$Yu
z{jNON+??(eNcfK(hKEN9(NI&HnH8w4+Nzh(!cCa(+vL(YWiJ3{Wrcvx<Cz{WthXGy
z4qrmTRstUYK#(i8+5M&CB{Aa3LGIZFc#IL~-1S;){8_PI*7&aeY8pOf(-``mBAZe3
zTH!(o0w@EMLorC+_Y@So<&AzJrkEq@17I-lZ~k<Qp~$Gh?r}8WCSEx~=S?)|{ml*L
z(F^DI^VU-(m$GR_T<K!}{R3VMqodN*IvRJDbxK7%*`O_GwOm`tA24E4d6OGjx3f0P
z_>GM5%bL+b>12Fqja@ZYWlL>YrK&Y?<e6*%qNT6RJXO@%j=1Q>!S;4kiAMNC>9d=%
zNlVGZl8Y6GASQycRf>OEEXg8m0LvkT)`iz#NyI-!`#@`o36g}yym3B>+FOM4_0thX
zDi<356b5C*hOl?r;QK`kvg?X_@7G9Z7IJcEmL%*)W!!VP&XzTd`udLmm|X7%@VL5~
z8uNO=_Lw0qA>oJ3_1Fzeam1J*DJ7d-ADPhn=x7KJ0Yw}c$bwqjVRrge_A>nNP$~j6
zfpSC*(*@j2?@4wf9Vmd-NjUUgD(?b;obrm?XanLtvRLqS6u1{lN0$a6lkx>Q6wx-Q
z+0+A%*_HN&L}dK3WQCEwB#ir{qeE_hVzt-{z{%sTXM-pjz!480p_7gK>caGvjt=C0
zpe6TNT|G4T_3PJ8Pg`k*zib;C8{Of3kw6AVuJ#>0JuQf5XKqfbnWO#Vdpv;G$xTd6
zg}4A&sk)fncWdXJU2Ui#Jr`pCI*F#0or6-9cYQZv$a9fC%(SG^Hnnm}9R=~bNVtgm
zKy~X-a2T4=Xsxj5x^Svy4M5`x&s6D)u2H(5A?G|Sdj<mh9x;VyYA_4&$Bt$2BTRgG
zYEv{?D@WS(TBKF}2h@~5x_(`Ye3@T*+cWs5Tl-J*_RWc56N}IA5~ER)A{=Qs3TZj2
zX4+0pwGmpYN`p1I<-mL&81^E(ZiM0B>in)m%zvGPkg(FAgZuy`ma1^HSw(LnIhpmO
zg0XB3&}=0>r=+O=hGV|1H|dZ1_6`57t{q#hlNv4TeThx|yxmRQ>6Ef<Vi3L!W~^ST
ztCx%ngHAj&C8geZ%jRdTJ7Raqrc~+nVw1{LBHHE4m!Se_O2|sPR|ONs-`55m-hMYV
z8CLLvp6sM*mJd)sNI`lDqixc!HTfHYsvnL_Ld6D4&jA9Imq)lDWHuNnu4RqdxUR|?
zWMd#QGBRkLn26}F8_G)Gnmv{mM|&yWu9%qEZ<qX=vd@JH;KJhT6LJ*P(g~}C^xRyW
zjGn=D%2=>1pq4g-VN;<q_l9AGoa52S;KC~l3SOp#7zRBZQ3DMr{9i+&{<69R{rot<
z^>p++&roBRq~-pd?cTKn$r1!SfRYOJ;~(b8GEaileKOJd@JAb(Ye7&<;YL>*_1NAL
zJ^G_UXEAPDL*aD9D5sSf;pWrs^JbVYe0PKj;yzL!Tr_p~#fm?Yx5ATb*pn=J_?v7&
zzhVKs!rOPToWH3>l!b9w8U(cT#65qmw5+#UhVA807aY=c{*~sW{r)5VdOmEG`6eCZ
zzc;BYbgz-wCude3cP30bi`PI4BO~t>?K!yBv*u<Oe!-cvk&t7-KqL*_W-^+DGY`KG
zuQ1oDbSE=YCmAc*{{D(;+<C~(o~haQc4%jZl)o+d)VtZ^=FI8(NPp=4au6%58&KL3
z0ehh`#AO0Q%wMn8rIerW;0ttl>50(N6AMje12eEOgs1TJ6*aX%2iWgrG^m6T2ow2n
z_bL1r4GP0WywMx~x_5tltXkI*09f60;~I8=RsF%+%8IE-;xu0`42MR{ZBNY;$<Eq3
z=%L!6<2~H>ct!L#W-gx-H5u9K_#gUh#QGRf-O6AZUaRpF?6s8F{h`Nx;XOuA<o{MG
zXMAq*%lw_sLy~|`LG*NoYH1t2vLJPZ(*gduR!p$|FSGE?XK?X|+s8Ry{;Au&-U`lz
z9Nvb%k55lnx^w$gKN?0$FSfcwL0V!>TkVcK9no3_vjc6L+}SSX*)B!dJm$)Q;L^#e
zB<sO1MeG0!hxd<~^Z{$7!10MHDnZOsa%iXhrgIz;h8Wn%CMzKUe;Kr#c34f+VPrgV
z?$CNDYKc#Ku(Yt?(5{OSfyd|(ji8NOEHwPOyL-m^8S*6Jb2TzCK{k#5ku{M9YI_PV
zHp(`Wej5$qCh}crr}6Xkoj+h0;^gto_q#b+2f{<s(-vb#l%eREsKp%mQSW9rLwfXE
z2~n^5>S5m4&H!_10z3%*lZ<!cH)rOG*4DeB7<hMgVY*EYoNVn%IYHui{ba60ImkN%
zo=QL=m1cf<ZJ@1fZDfR2yr!adVB*4s*H7jE)JK#YjNdK(k1}r++{gYEQk3AA^2S_#
zsNCvpfa>4eto8o=%U6x<?a*%kz>$@dG#*LkPM9AViIJ1l%?6AT@x2#f)r^XnMcvW{
z2Gll4oSiNRC7*CGkeE?Q=Q0L@k52wKC&o-BR#s>T3Vu6UmdJ>RKoP)qy)E+#>M^<_
zqU=MTQY5FCuc{i$S~aM)ZuWhaHu~70IYAe1i$gi(aJ#wO;d|`09(@<(?cTdMQ}QE>
zEoeJ+oAs~VWnRH+F=>TolbP>Xl}XZPIml-}yfD)!TV41)`UFE9vSc<QT<S(9=>HT#
zOf1s+6bjKGsr=|ka};b2q`Vr(2XY<VpN0H;J#Mk5t|)5fcS**E$Fdgheu~@J+V%wg
z4uQ$#zCo_Eyxhx`IPETy009nrdxsz3e!M}N&lLVDf7|z(F{;eDR}n_1868F|$;HlI
z^%7~UuTM`&c}z}z_{A^)SZ1fEU)tsr3(4Bgh?rD6nw<h?^2Pc)O#^lH4$FAzsBH!6
z9GQaH0#zzOlcPgF7A7VzJw5M^UCs4J!wS<zfLIAQEPX8xrK6{hY0oA7i3osK^5Y=y
zy|nl6xW-*c(yZRD)@cY^0y&MOpN1qQ5yXQ99++YEi21pT67cM-Kzc?7D>HLNS=rv+
zo_k9(DTm+V9hRx7>W<92cPZNS(`)jXxw&0=+IM#Ri@ivF8A-R@K_Q%morG$jB~xSL
z2_UeToX0m*p3qWWUaomW2r#;k9iAFOlqp$SNXdlN3Eqob9;5LSLj#CGy#*F`d?p(V
zz(^s4fTQ#l`Da>P1GpKa4gJ&H(jwW~(7*?^wY4QkDJm_M8tQtwtnTda!bCaW4FYg!
zE7l##>P_S2Xj@~+^)W?OCV6ut&B<uz>1e&j@pY+a`ldebN|zSwn0N{i2K7jUS_VPy
z)p0FL2pE@$mOG`ORo~3mHr}ywL}&CzWXQ;;e{k*>)Ei(@a5k)ImK+Cn<b7_nl-Yq&
zw+?%tMbwudE~K8M$HZvMRIZzWAn;7pqGWaip5@sN`%Yx*o$m=Dm=-za^&jRpzm^Uw
z)g{UR=>6$?1{-V>d02(<_w-WBo(iKD3#HTR8vS3vJz9tn4aQWZ=ezyXZ{NPGq$0Mr
ztF&sP>O1ChH(=)x@_7Tj>fK)Jff(N_I8}0+j8a(!zeftLIGI>A$Fmt`%R-+oJZ|>j
zM@Jm(6t5vAF<@cg^Ej|eAK7wcgPUU%$X6gbCI%|(@gph<{Q(mPhoq?cr17-}6&YEB
z!*bZ}RDf2e?>ox!a-+UaD=RC(?hN6sWdwKFcPgr?`=_Q)Nw<;mKw4P>)IFGztcF9y
z;|0WQ(pVkx1Zb6kn+x@`^Rfpepj0hMST$hNS1&omJx>F^GS8F7(5_*D#KoWQF88}!
zm|0kcU@+h=gVO-v-^0TpcGt(NW5;X16X_Cw<RHc_P~3x)ySpXciYJf$`SXYIGr-O@
ztr3i{v$HdmuYb%6K06kC15%MvLmsPsvtu10KncJBO2GN4wS#qBz{DBN>eB1d<C+I~
zt<HCtxfDNDLobq$E3qLK(BB7aFvvIJG@<BoulbPmFZaRkFvo(x@iSPPQT1ag_N(hU
zj707&GK5Qq`+tb?SVBXk0i}=bST$BH**SrP&qcNj;WWsk?r}8D!NIXzl~D~&!Xj6f
zi<!j#q-1x2g~P7j`c_adv|9hY2{7dm1w6}0l+r@be%q9a>-z~QA;od-<Qy=HBZO|1
z{^kHW5E|S!<t@yL(Fqtu@`wAXX=@{&k&;n;g>|`C)#R-$pq?JggE~h&?=HRrGRjCs
z)EeO8RKLa%S7yVM4OE$)>5Ph3=HeD?x0?92J7wuGUnk1QczpvAe)rBCAU6U60+O79
zDhowL^qygB{AujEcoY<j?aDdg0S-1cLquLM+RLj$;ouOdyii{dUE0{_sHoRjQD>*W
zx3`etFhd_%JlOOmI6R#@m&a8o+iCIU#&f8U7MA><3E>JxeqJ7Jna)qa^c{fl8*u?h
zcH8vJVjn+ySti;Lr3&nflj>NP!DEl%aGEb{HaxO^L=qMOil|S2YT@>IDYNqmb8$;R
z?S8suRVnuN?;9?J(qdcZ^4kNf>k13Ny}scj$6!D)^YSAY9o=R*v{M1Oxm_ZmUZtg;
zkzxDy(!rATe|c7=syOpfP`Y}~a%7K;u)SeN^$0tr7Ir^)v9ZzErdrRun0C4}Z6_`L
zZhUid)2!gv&z~{3=OpgRP|Y8k`WuxyY!c9(FB1!ge73yf|3Ip=phoqR^}YLOT^*04
z@>YLzB9Lp8NjgNp)PXv9ae6ARs0ef>zzh*wU$Zi*A^9QfQiA{U<Tu{=<Rp((ektN3
z5s~_i3;^`s92XD~5dmS)_w`FaECg@>=-$3n$`!+k8_6O&`dL>uIX6ctq>_QrP7V0Z
z4(8@m#Kbu%DcQLJ?7&$WN|^>(!nCxt4*~IRce41THB-=~BqJlk2qKpML(EX!?VrXj
zxr&_n%gFl|uq!lr+pd(wJNzH-u2%z;6%~QB;_cZmXO97(O20vB-vWTe=47!vpb%pQ
zw-+IushkykOj?sx`tk5@GQ;EOt6gVjrwY4vE*~GC>5Z|qb!0zTNKZnKWF;3((EX)i
zSD&~FSfArKKy#%UvoB-IFKNpycIz`OB9+mo+?`T@lE|&RQ7s%CFAZ;Bbe!XGbVA_i
zW>dj2GFLATc`SoVm06dUMb`<azbbwFh&(z~!o<j9>q!`62N<=Il9GS_{tad!<b}tu
zNa|V=4ChWrfHJYL8RgSB#N9{kRyxi&W=#SOf?9O7sdQUi$#hy`Y-Ab|!(r=CD{(#S
zS6;w%(<gp~0L&;m97<uOO)0~N2O7MPB3y}SZx=}r<AON%SWi7|z~NU%%fik|&2%?=
zJf;JH^{9vTidad7iRlgM5Yk`_8ECe8m6l$QugqLRf>tDcM`@kWih<I}5ZbXYJ#9In
z^40$Zs<;P7QDY<VEpr*`&f&%G6cES^y}s>_CIL<u_ULvL7wV0Y=f(h*WGo<`oL*mt
zSH}U4ql^GXHV%8xlVP2wAXv<XR7BXx_GBksoMWz05kya4S(~T~%6l&??8Dd4qVgAr
zbk>3cwtc^Le<4*+eqjjc0^@*Tx;`2u_dzJ8&kOL2oE#h-R{<R-I3X<!Q5Ep(>+2I0
zW8*i_ULSDcd~a`vqYse0L629;;3-x<A`a=nGy|k&1)7PaNvNu-IAZBC0NPUO)T-7~
z9kZo5B;=;LQlYX^F9pqZ`GAX1Qf+9Vg9XvTdOf^wro{N1qmxX}+^z=k5dur6LyJw0
zA@WD70c(idfTz>J+o2(&aTcJr?;y^$h5?z_&dlspjvEj!SP#g7v%=P7v-ls&t2!w9
zus-t6S_*y|UKX$${h=>(b;Vd$S4Tm<5^;mz{K-t_OLKB^!pp@q_j5N5&_D81r7DCM
z#!h9iVlQdUfiTibJS8P1|EmKsa~&Sv$MK1Y`C2KLLF_6jVRswrN0e|tx4k__gf^`M
z`Rp|a@V{jI)bj^u$^c_L;h+aZwfP=nO95;v@$|xz*e(?X#N&M|zugU)8_!*IPo=g?
z-lChUYkuJ;`C&B4u!nJ<ySqC;_6@N#1ngvgeUB@<gpv|skrpdTudSgJZf@@PQ4*oR
zAd`WC!QCASV39wp<}xJzRZA8OFb*uWI9#|qDX*!kYw_eh`;$}}{4z>XRXG=XuEPh1
zw|jInc6DGkeJnVhSPMO5ml`+#U5{53zTblRaL9PffDDwdkOW2O8%UUPK@y`fF$qc2
zIRPTz={%QF*vZ{}1(+|w#?Q>m1k}<5b^!sBsKJ2&{0tzvMJr`yMn6G);~GK;Xhfcb
zViR{2x?H3qjM&&Fp}TH6D-HcK9gj^OCBHJho&MKP0EX+0oVE0bc*Xw7E+5^D0_A>R
z(2sDTC5KRV?oUUoDn;50;`tu-EH;YemMi|}uMMp8(NarNN(wSf+kgN4N2_WyG%+y&
z2+M23|1h7l){W9%6zi91U+)}O+KFg#U*K;Z9sL*H^}IWr#tC?HkEa_^M_6<P3_Tu1
zR$c}ME5L9~aB%QLbN6drF*>^Qt3x=Dcl|e15`^LSj<$&EvoJNmU~f3|?XPNVWEye*
zrIrIarr#bPs2y^hBXNYfucddNfiD3-Ca#^lJR`%^DNEQZK!aIsb))#1+!PMXspUP6
z8%b7_GE2awr&<4nYVq*q=jVepIFf?+rM3W-)Y_VCeVydtaox?0oKl2`2i?H>-Me>0
zM9Ki<ZEJ5RFW(ENq*m9^Fo8TRbq5u5At8Gz6LgM)>F7efeAR>kXjNVWokl9S{5@cV
zULDLM?G6kKd>8_X!W(Ht#j0ZmpqM_SbOY72W1y|^yutB#jMMg^g~!6^&#SI4f?Xyh
z$5@#j#>#zO(>WkL$Q9L7)|edoSipgMY|CX?wUi)6ekjJnOwGKV>yu>vAGpHE6mam6
zdwTMjq(CJ6BsU~`$5rA^`J!(5@6`mM-2vibw~RZHQrY8ej)CKU%Fb}G>|c!1iu3KX
zlTd`+$_INq{=#JY$KP<M**-vlnHG|0SRgnnGm}HF8J9X+$c+Umg??Jr0tl%Y8Tt9^
zHO9RvSRp7_lQT16b|<)rhrkhY`j_|momXD|si+zt;9nS&plApHIX*6nl44pI1^yF?
zvG4VD)eaW}Zq0^JQ|ez16Fo$2J;+Nyx0Hy7yoiBLJh+D%yW~RL=XJx;wcd3bH+iAL
z^Sb$Szc|xaV4z1i{{vJ!V7<kq=W&@A69vRYIv!NKiRG->O00_CfOL#CpSr?%c&kto
z^F5Fn#^Jb=vXIB(In?^OMjo<_jD_pt>Dhe?0MB(10f976wNIbWzpSO1?2PAsfNu=O
zzkvYnn0@%9qN3t67*S7qLT(8ViTr<pfy31F75}OE6y|gLsU>xtlDOJQ7c(M29)=Ja
z-WM7!+!@nvxQ%cLo}SR6hkYAJ{DR6E$T#eMP%f&$=~;BtvfhRic6>#Xe<*yXDZ32H
zs9spOzc*;Z0YrM*2|Wn*?s17RSGqFQM0mPnVynG?pRB};ixrU^<vS|7yYNEk$H}6c
zb8B}#<Q;<@vo~bptH4FLwwr4wYVL(VR2^6cazOkoQOs&|M<FCVaO(+1PQEBBV`57G
z_U$DCP*SchFZsB*B!)1VfwT0m5ibsS$iQ6#v1h=zo`$AolSkY}JCHGBvNADwN%s5R
zj+Kc?0-YQ-&}L)Gm45U;DkZD!cU~UtLHLro=3#j7e)(H?Z)pVN3}tj*XbS0{eV^Rx
z^t)iua`Ir(yh_zNmAQ`i4?Z#Q;&6c=+?VOow$ZCmrWgytw++Y8^q!Up?>D^{@55bW
zpnl=DUXQ9{tfyB=|2;NkH#d92_+i;dpGR}M0Am&<1n+~uOL@Oc{-()>bPqG_1VtP|
zvC$t4be}M!Ne~=VdT6w;yfRFb5RcjG-Ko-EDK9Ut_ffJkGWf9jQGr#ou2euYH&-A#
zEVs9{l`jIaJNX@^nupb0Ppv)zp*==iX#d!Pq*|AsWx}m%yW?xtHEOyOhC^OUP5abY
zH^H&Df=$3MNgUJ^d+JS+ajsHR+gsBlHro_77v7Hx4|O+*JCG7?6NWT;9O+?F{X8l(
zBnY)7DX-4+fn4^KsrzmG+?Kd=*04j@=0FpTqxfOxi~s$q#GF^Ddy^@im!*t!k#En^
zprwzy(e+H{KY?GBv&4pPDU^*}ZSQFe1kncj`)lXzJa@#OZ*fFi59Vs;u*YNefrKX>
zGb%Qvgy|>%N|)*_aXz#Assa^1=5QpLS(OQ1SzL^~3+QGlzI)T(6ACITF`0qGm{14&
z;n6Z7N=T2&zxq=!K0WEY=l-|L?_4{m{~|C8vkO0L%zpb1#n}-cX>AV)TJ-j~{)R`n
zlvgU^kFq3!)ED0xJpA4Qn7T<x;<o`j9vMUnoKggKazGjq$Sve=>W&(-uwLv6rmcqa
zWr@~k!cG4%0{zMJ?k~A{;KD@nmAl)8ix==I5=+k?ZP3@81>kF^DpzZ3=ACkYoZNj9
zH0eXTIR=pKdcI@lZ5X_TQ3)F8YHDiwNl1>P7>GVDNQR)i*6vb3Vb8oeJ$>^92(-6(
z2$N!>(7pO6|Ge|a(rIE`%GlBEKI5c5b_rS6mAmfz<IMRIVj;K{2nK;6P(ipt)5jw1
zcTW9+N--d~@8^+=;LZH=I!Xw38b4+#7g%_P*6AmQWze~}>+;xUGJnI*tLw+h<TyT<
zOEW3}wo%T-y}4@$ja}p-)@XUjUbEf4pa_=z!~DBm<y}H<+1Iy<a)slP{3glot?}o$
zj|mM8vSdi!HN`r&xc_+l#UaX<=#6>4GhE5bzGJxV1N!Y4b~{|56ZsRygyHLmr%gT;
z_)LUl&<p)gEBa6L;(Wfx7<^&PRA-`RGg3!1odM{${XL;4I}?R~&+~Y*5zpk*-R^bX
z`TTSbn2Fs|;?ED~KVe_P!Wz#pWG{Ph#0lLQ`1sVdwQm<4yQp}~&=T#>Hvc4}o12-T
zL4YyOx6ZH(Q0bz_SKvhG2LqM*)x`89ROM3U@AKYQ)uzGwm2c;NjC0t&oi{Td=M204
zDHcWy30X`~@$58e?#z7rX?n^dD+%TNm@XR(j?R+#NZm?nOQ<A{%g`b4VTslZYH(7f
z|K!|ifc;&7A``Wpuj^J7+LLBU2a&=1PR!N~q*HunF1(GHe=VcM7DS{o(ZN2v`yg55
zwgZK?Z!X+K)#GZudy3wpPsZYlOc47u6^Yp{AZ<<UsGa=2C4tFYn$YsoXtKYI4$E)R
z_0OLKzPX%vb9<$yPip#}tI*EMpn<*L-_Fc%n(nv5N1~IH)l5z4(!pO$KR9q)#<MU{
z5_x4gyo%e1=`j*}32@i2v;hG}n}wA&gX+5h_V_KoXg8KLHy)ZQh(+`EQ0wL&q3y{7
z(C%RMc-6Pv)Yo;yk>9p!;oICB3Wfc#g~ix1<JdWAqPQa&<yAC1I>JtMolT~bqkA(R
z0kIj_wY9YX?aKXYvm}WS1XB{BoO?}r0I9BxlTXB_h7<i62M%V1^aBCXl6_ta?TfZa
zi;+L%hz071&J2P@21adzH+xh+4@EJ-lDV~q0y*(5JIRM_o0BcSUXS6mcMRT_zLqrY
zOCHXD{^k?d)R;5)6Hp(0eia8}91D^;tzTh7s6iGnzNo+B!ht7H_SWu?yHIT%tgUa4
z1D-L+#+yM4mIqtIX(~iIGK$0qfU4jV{m^T{Cl9=W1IIYM69upn6RbVYOYR<Na{4c)
zL_k|2Akxyaj2z9aWf#&Pf^{5%lW~G|*xJCYH!-Hn7lo9N)EYTLaePK=N;)4dpcNDq
zeg4`P#Pu=c1+)G2JU?P=YsLEi*n11GD!Xn`beX6KC`gD%iGajfbPFOaCEXygXjs$&
z7A;D5H%KVm-O?o>Ai3xe>F&BO_~G~cXYYN^-e=$EIrlji6n$gHm}8DPa*p}xYq4(c
ziSOVLceO^z0Y9>`p`oFVu)}`*_z7ga?b!4IN^48<phx73b#!#;EFmkvqeX|wE#WKV
z(@QAz(_pKbVC@rCxtmVV{Fsh!Y`seODA@&;9PE9CA7a}2>^+{!j?yYn^JWx4-s&Ii
zl0+i>Dm}J}-dEbJ`2!}yY-<n@*CQg21mZid2qBPM08<0Kz1I)iCZd6)XTbL4Z7-d0
zLY>!dXH7{y?9uO1&~Oy++yXMGKh*<4++rIXz5SJERAORcA3Hi@*$XL3-GS9abQ4gt
zN%V~k9mWs2m)neX7!}AX$R*7>_dP_vREgq@v8xQw`{+j0VbAM~^xRxX-jK%G2=+*Z
zijhKn!NNqofg{em@;vV{5+kG(oBg7jZ|`atO1&~PTwLtW1Uw1A?$12LmM#!feERh1
zv*ZtV?|NP6Mt$>E&+=sV_U}xOjw9%E*VUT#B{n_}F==!>V^t|*+sYY#ZeML?j`KN-
za#~F3lQ;pXH{%*#eUs9@#_f??Yl>Y@aI-|sab_opZhFt$-{mm;k=EmSFzo{&4#><j
z0$lRRw7C<t&J#mJwg;QgJQ(2JV0!ta|9-718X8)lG;olPK`+_sSRl##7WQovlu`gY
zH#6wS$$!E~8%yiY2?+!cQq`0{XRXs2IQ7eveiz^K+)%F)k(sB`kI@Z$v7*E(t-gp;
z%_t@<=i9#MV59d@G%t)aC!cS^xGA!9<Y4)$$n>r5e(@%*c=mF5Z7A~%00uxky>;sr
zkXQm7VxSIa@+KxLPgcLY`i&BWZ888QzhumR%Dp3D3_KVRlNDg8GYw!%epJJo<W}@v
zA=WJdTP@Zt>-y>#;J1~~a>x!}o7=zLwJIGe5TNk<CJ+slmj~h(RTUM7>=^y3z@D;e
z!=t04Bb+{#fT0ztR^z}vD<UG2*rTr>iN`Hid$>rgi~?+I2Ha;{_!(}H&t^HPsX`C+
z-s-kONJy?NOgQeTNt&VoeoMPM=vq5beP84J_mfsm!W3Wub6n~+ETTQ^)|>f0_rj&J
zl6%AofwO*uE81?ko9B(zxxfP4XyKK{Ay$mpNxO(X<j-*3<zPV9{?rG^+OcFn=Z)i}
z)&F3`YXpqzc|+#MmFvb86u?dHS8Q-seaGhb*n?i{;m{l$LN!rOHlKp#DCxp=l6Sn4
zI1{Nrb(~&{9+GJ`tdPuu0$_)sHyhw-2aZeNrlh>n1z4yg)p>ajy09NTn%o02J^=!e
z3Vqs8P*~{2BUc9@j$Ior^dRlh)YRm60^+duf6AOsI1_W>l8VY2OI{!K(ucJH4%O_u
zRtNoHi*BZc@gC~Er;Hs9?drN*j%ueB`3ojbDnFM`K?+j<bIBomTkBo=YR_l3E$`sK
zyf+_ngGwFU`QHRSOJZps(E~U@$P*D+(cygW0!Eg#+xnqu=~C<D7D~L+G*!m-^JqCe
z>lMVnK0Y_!QN~9n1ikF)*auWqHZ9a$RgB--2In{>RlfhKH8WogLyWADnFB6St-@g-
zgED#~3fQRE3OMCByxByBg}){P#wD;lCV+^?ecRRbx-b!k)h{4T2k@2ZFjdBUYxKf;
z5e6tZ1#BK39v7NV0{MAdKR-P^f5n6kiL5AvX_Q)^v!%mKZfKY`A`1Z(`@N*b+Tn9j
zHE&CM4^S|(x2FjI_^A&8XCx~XeWLMfv>W6B`R00Dub4j?t^Q4UVH(}dW$0$Ins;Gf
z!3tMqc^ec_8IAcOrg#2zW7Mw-l4H^rTP5BM72@W*XRx(XM<vu5Hvb9Fz)yaSuV`?5
z#D&FJDh0q&AJ0H{{S=v^J!iqJn78jc74v<dGq{fvOzw_OhRLUNtV(67w{X&oCF!3$
z|7pAE<#?`@?Pm2nVw8Zx!6JUkAsc;|1!@A9T>enlU)h`R`9opKPgyEC85!+2l|A}Q
zaWB{aFW;D5`pnFXSX}xza4tb2E(zNWN;9VX>!32RReaI8p3?1=PTQYy)_#6j@!_Xp
zu(iaEJ!mcBv~YPZ!8!H?+hBixl=RB!snZAto2VLOXYC+Q9BOH~wIXkl+}0-IXiggR
z-RD8<wMVGYz&D7z)!uVyb-CrD=w)Iv)aV|8T?>P}o15*8M(JSAqe?hDzm|@Q`jl?z
zwN)Kz9337qfMdkSfi1fxu9lRK+S$x)Y$7J_fAahee5~ZH6@d{=*sVTwRc?oxlaMhD
zU7Wgu*;#(AHDJ@eEMP!6a8Ce%%O6-?AANyX<{YQ3jm`XqEnr0doS)}|0B7Mqy(iWp
zHs<C&iz%t7Y*i18k4u={e(S3be9?f?tcx}Lx@rSn>>P4-$4<Ns0fRwKIM}FzJ$IOa
z=!vvflU8j!2AaK{T}5pzaEM4oTADC<h}|1Y%R-51Zw@)+y}HM*=##v#L7%?QX68Sd
z#OGj3m40!+0wnJqBgEq(PgvMmX3QPM$uNW3S5~rpBf`UfVCiAU=H}+^g!=iRl}}Dj
zziyr~vo$u(DlV1_U-|Vb&`v=Cx9+iv(fRNLZ4fY;TV?L|x^{MUcI{aXkB-FahR0`S
zl3QlzZ|Nm>bxAx8yz$;e7O)@hc7aAc$bpYZ&6n^0fDl8-*djthZL7xtr%LSrutnL*
z%)d!X8rXCdxN&e$?ps<~y5ow0fdK?F`}+ET9cjQ`I4U+#$^p^zQsDFIgB}{d(Iz5*
z(_qot?oiC^_9Xr}y|8@^^ZV@b8t``MZiVN2HL650aC3ua>gsqO=VoR7vWdmsxuXIc
zStD0hUQ!~DYh!IKcINSl_!F)yItIq)-XA|gkAROv`JbbV7}vJ({w%OXPfk*@do93A
zFqz>wrdO*i0-@9lOeF)bt<$a!IMQf*TpfP$^{Wd90pP;qhhPT8*n7fEOaP)Ymr{_B
zl>9uscNAB43pB}gPJ1;1B*2^k9}W56`*HF=V|1((L%Rnx)v>g)fNGjtT*9;r(eBaH
zvlG)1UtDr=L1YnTP>3MR)CwX4*Rndlk+pzBFP=(hngFlpnIW$=Euj}hcwh7J3kXp2
zS{P^=%b6Nz!*rnHG7te%;KIOE529dT%4=$A@aO)#4nNdV+rq%i3T8n}&p-!sEDaGf
zu&}h^)7P{Bb}~W4H2=D$XJ7yt(6Q3DBxYw~J}=14{STlo>i!#`|8D(a3>Ogp`#=gB
zYwB5^cPL_|X>6d)YpQ1qC8mS$T53a0t%&LASlA)wjh)}nGSJgO_%zLgp$2;TR>Z6f
zY!F^+y$jfgnV9Gy;+nR<Zx|U^=`Z?K_+1ikFGCdns>Q%e2a&OYn#coHF3P-q4YO4t
zrlqH&r@!cdn1O+X?!0j|;*0l!2F6eZVCanhcIfo~m@h%NskW5?%=CPQ0QhAL?4T;d
z49qM*EBw&&2~hzGpI5l}1)fT4n(F<Vhp!E+EZ;&cWHe3805q^c_+ciR2BsHPfhrdh
zcu|LenHjj3w9tV9(+5nPu@%$;0-(|g`nxlT7}QkHN}rgKh3R~@E=kQc)~()6`Ze$k
zu&){n4<FjPq};W(0e*Zw2D`p{=i@y_I{-m+%_TDU&va4Y@H}!Zu087$j6jY%fR9h9
zN)LVAaP~JH$NR)tE46E);~nu6-Z3%Ra%)wWu9CD{qL0rgbyo`0rk8)toD#n&8^k!M
zh@h2GpE9t05mVpWhRSuV`}2$<gS8;h%P`+}8|!xoU0bGkZOQP7k1zxr*Ix~Z?v|OA
ziVhVMp>yut%+r?qUgLv|b(N<eDp_8SY5QVAXgoU2Y%GNqBl}XRl(*mXE%TD9BHCb?
zoYCl;vi5Wrbcym0YCqpa<V*%bRjUZ(i$0=8DBkkPa$xB8w_M30P@()*;-*VWr}+h2
zPcdrYd%aj8oeV8W`WDFxor0)qA>VxY8K2eh2e2|s3%k)PYTgMC$!DV!3`kA{Q{F=n
z41Q>-=zb$5MJF6gE}&fTos+=u`pqGtP3KwOVxFC6xJNy5P6V*sJ;|LMBY}T^jWaO(
zgJ#}pS^@L+n`9UuGWwe5s})%Ld@y5}g^Zb|HWZ*8YXfblw9xCz*BA7~02F~)=vb-{
zGt$w68Q6%K=~%!_^p|%`tPEf_`g4M@wE`H83b7TyIxhYJo?Q|uu<XxC5m?Rtx}MMJ
z{Bk{Cmc1hCE293N5jE34Xy*SkQUArK|COlE<<=EZUvcXH3a4iI2hIGSChEWRu74$J
z)_(wa#i_5<kN=GN!S)ZD`9Dq6=k)t;)Q^8-1HIMMgF@bFTAW(|=gN~bL>g)dgIj1r
zEdf<YQBungs%-^aiI@NdnTan}%I_O`Mi%1p--})@ba|i{U^fx}wzL3)hyJ|4Us@34
ztp!Y525O}OdCM;dk%a=sM_n}e`uBf)zyA|aBj)CY@S2*!tN`tcp79)?(tuVa4%IQx
zys#wBZ7FuZf?#H%1D^8%rWOFXB~bLYktJjSgPQ?xTv&1!HxL=Xw9_=TG&>)oHUh#Y
z^S9Oq^d+mQWeF6K0dzQRtKWFABxbl!>jB;FLa6<2`;UD453K=uMkc_V{--&Rt)K*(
zVR_($J9+lC^bM-;Psf|@i7c3e^LYbodvM0M%W_!g-*u#8;H~7YeG}dc+7H(dBx@qk
z<91@?E7+A>KCC#gI<jrCO>Hn;H67;3_GFAV?{W(r&40(v7+okb?(KBa=q*n+)M0^M
z>PlTmzkp1Y-?pUI+LJ8x%{C#Hf0D9PakN)J8gidSTTnNieV(!Nqig<Y8g?;}P<6y;
zUL`%UBst4^R_XgSKODgi6$RkJZ|2>hE`laoDDeK%QEGL?Sloq(c^x!D26g?Wx_w%f
z39Gt-H8;)Ix~ljCC+?An7_J7|1@9s)NM^j@LS@l`cU*6>GGdd(07v~D&n04?Je(jm
z@N5xToaxbzPhkP)y%d(Nn^7XwIfjT9sl~7e@rE4UARr)jE?C9L{#8?X;%hYry%qY(
zA>|IJv;cG_ktSxD#`5kugAU=lU~)c?<j3@wI}hhSzBvoyzSV}A<`lrq7ffSLxZ(OU
za#lYy#qL%*r9io&6X>N%a!b&sUSgekv!qe(?NPTLEP34rioJCMn>yR^L_s1LzgR@2
zUrbM+m#wglx&JB>Dt{VXZc^G5@tw=kTV$cj>?GRKgq^h@ghT&HkH||WH6h_+{C#Jn
z$c-+>ex5T^|Exp0K}9EfERLf(Eckd>*F%GELBH;rYYtEjVF+vAFdmC!tR<TC4U92G
zMd)OCx+@JknW_Au0ckETnC5N>tb5ZzZwwI+;PE|85jz;HO(;>F)E}V1Vs<Hgb(C_$
zgW)Ncu->D`cp{V$;fry)lgj=5V8-`oDm_~zVdBLF_rl+Rcy`|{yB(ytb-RAR|5TUQ
z_c%(sda3(`xg=eJLOQ`4vewSf+TEj%RuI*>lnn<Z+G`nnuMSXeK-meFhMP8ZdsV1|
zoMDHfja1qAq3b@el4*H<O!(45*WkO&E?JfqI%uPO@)>eAwHA)uejhFQQSZ{<YlkY_
zPV1};TPnhPkvtIAv3d<!JRO|M;YvaBKJZaZJxo2ut)Rc@@#$;3j7?8D+Xs<?zBo|)
z_nc*4%*bTg<8MA^(+TqeB~tZ>8GS8#3qO3<u-W~9GtYi(&+Jx?{3mi+ar{@wlSXLE
zU*YU|Z<KC|x5G07C|=u#JHE}hPj#eYP|V+-!(un~{#~4WTt0jeD;zHmk~H@@w-)_Q
zOJ{ld8md4`(f#1IZO*FGhRUz1WN9fcGd6A21!IMp-=esZFMlzeq0ZYTnozbv9muKq
z4r<2A>#;<~fk-qw;$_@;(iW>@o{&NwkMVHK!NO@|RIAMFt;i2In%a6BQqlVX&W!^%
zJEl=>Kg|%fX}L6<?dW<n=mmJSG?Cn60>683xaR1-UxbGes65u@>-@U1?&)KUdjpe{
z+|kd8@9Nv+sQDb{lF8BAH?Te*-g6}tGH)uWKRzCymKSDqAT@!D)WfHq_Nv|#RjT#X
zR5;kyEZbhh?o8->Tay^6UX1+pQ!8l5Hps6{WiwyVj#G&KBb$g?tRI$V!rfl~N&WdD
z=a!16f{7dJc{hp}iPGo{iMuR7y*}0)Tb#Gq(6Z7)Zy5Q6-^hg~!R{0_r-mB4S{=P2
zqZ*GTQb~HS>CZmXwR`{ZESgtf@-GZKzFp7k>rFH*c%S)FC;A?XhWY_vJ)RaeAVhsA
zQ<ikJZ{!<d-qV7De-b_U6?>t&H@YzFO-R~=1BP9~T^sOig-3T+ZZ*0JCZ+141#1nH
zYP=wDV9rEGc`G=tu!ZcaGsHtiSp0a6K%YO1Qt!Hdr@L^95FPY$!B{2s7y~0CtoPqH
z@Gr#4B`dyQ^8f0@1KdM&|7pjahz=k-46G36=b&9U!E`iDt<Kv!mnXl4p)Bk#hacdg
zx_I(0I^sp43uw-T)rD!KM*I)&-NmCzX#W@P#7jRUp9uds2<KyC_=lSkcq|JO65$uu
zG=p5i4dGV+TzG)@4R|Soums$0BBr`90FrZq5s<(CgCCOdxA0Z~hH_EhUx)HfBlE)Z
z1vpD6FME0cIMkqe27sdrLCFh9MJVt<25ts;(M--22fBZ4>YwJ|pE>&fh0pRr9lD(G
zi=qFeLH%(vUno7lJ-);Y^o;C~zZ|D549x$&W9l!TB_GVh3}$+cY&M7pp!8Un!Os1W
z#JZZsmQaX{xTd8MF!2{U-~Ys6$;L|0@~<k&@>q|AiU*E>6lQNm#^Kq7J?xE{iLvmb
z`&kCf-yI}axBWg_c8xv#-}A?VzEV3JkctG8UHsiPRwFvi4EcRSCenl%&wg4rHkkX@
zYcdgxlSmBZj@Hi)XDN7oo>X5JJmfmDB2r2aP#@)uKS{53{L?~0ss_QEc<?jS_^8)i
z9s!V4$CDY1KfMjx72w8VJohPV-I8hDxMQ&ya(a+@*=Fy-8w)Of)p!Axfxw1G77VTq
z`)e|nfUMXs`Ex}Ha9d!pAKL^F-e(7zcMhyQy?igiu@D8FrSm!7GYQ(8;FlN-OvP|N
zHojRNaoK!AWkSHS2tsVcp!jSrzQt5sVBf7-<b<>6WfO6GRz&Rfva>f>f^Y`{3t!CI
zqWoRE;>R3xc3UcFZ=B!1Ch4>u-y-sL{3-w0@v}dJ``!edJ#AnON@kvIA+|6;Lom2G
z>_h$@!JZBd0)cg~Y5k#fxT9dTYaoyU!`)#&SK<<YV!H*Ypce626CzA@N2P(i+zKKL
z(f}h*6u!$b^crzE$<CfGvj<gfiO-H0wT@XrI_w-|!e8)THlp^qBc@fQmThTyBXEm(
zHir4{H@O`XSmpcESxea@5H3QCwT%aVV85+4%0IqH5~N|v)rkLxI&#K4AYB!ke54R=
z!fB||Wfu!89LA()FUc&-A0Xz)Ew*cD0z8EOdYQ7fHqA$B6A;r1ACKOdJ}N-hz&Kdf
zaJw8qMZePyNzfn<iN)!^RI^#AC*IsQ*vZ5o#YiwZ<My=W`U7}13{uOyRGjb-5wQmy
z<Kfo*1E6VfX4YLELd^0*J$?z4AV}(mR_cie_(3Vj<;YAwQ-hyT02tTfA2)n}7(?M#
zSAVs7=D7Q(_0RSQqJx!E-Rd@*e&;El#oB6jf}a6@R=~mlrx;mnwbv*S1a<Hv=Meb5
zcm;-M6_Xp+amOEoG}}4hlppZUj-y|K)~mOqk5%3de2hF>2}b8h;4F2*dOIj$An@$$
z?`rau&Ex<Q%Q?BoEc|$9k9gqwF0Gj;LBPBnJ)=Fdrucgl4HIYGtU*XZ{`m2OGIuUj
z>OZe?D@6fhySq>E&Mt*0*uRt@;Za|I{^xZjQAg{-_w^k?lpxf#4h}n(+1iP=+SSYX
zkS-^3UgsI%mx#wY$S&30xgFHk!iO%?>Txy^bXjI_h0Z6IhisD_B`CF)^n&dWFSbn_
z^9&Pjt{6XHCpc(&^gBSv`g5BkXe)b4ldY_cca}m(neU?XWH`Y~vP}t<2BTFb&);mT
zwvO1M>DjgO8y6+7Y!Y*_i|2II`OIYgH!rSrpO?5d23=f!&1xJ7WW&6;jtm>Z#}xYA
zUm>On-?Z?><9G5}M#2PlFRs76F-G&cYWy4*S7^DSma9c{!4<A}%N19=5*8Or;Yx;H
zsTNln*Tqt}(iQ*nD)gE5+IUG!MG3LDGX3!xB%$%%Yut`0yvK%-<4D_XU!wGqk}Hk#
zinm_z)+^q6#ajUkT)8K%yf#<PtaDay<>R~ZPF^`}FNETiFFT+4c>0;i??A$ORP5==
z1hLkG-=To+Maif9r>p(XFj9Fu#ec^ExIJKJo6cp0%mf}Ex>-HBChn7Z^aafa@PGT=
zM4<H!>=eTHb?V^2jM0<p4Dq3LYBAtXT<-8`g2!><ht`d*2;SL+<Dk|K8m-5dv5oZc
zDdT(WXlN5CK@s_rGU%kKoM#nPTl>PZ4p^6EL=w_x9+>TL&F1c*qlNL#PIq<Kkp2n%
zY{55JX7l+P7Ku08p9S@C21UeQ#!Y(l7Pi;U6pUIqYa(`xZU@bfZ>I6iPRKx5A6|xM
zwhby(`Ql4af}C+;6Y%&?wg1s;Wr8B#DjG1>?odf|Qrs9%=w-|*MRIhQz-$zkklB+!
zqMMJ9+mk?}xN50o0tgXR7J6Rxf9R_wPO=t*$8Gh1-Qh@WM*$@$VVGZ{uock_amKm?
zA#^qD?j*%PU?1`3puq#+7?}nD7vi&HA6i#vHk-LG16sjJ)it+{8?)Bux`-{<a!4@n
z`QyPTLGyb~%u7Pye-9|it~Gjnjo2cVs>aFD?g#Pa_K6<<DS~9vb3*P<EcVcuGl!&G
zkB8WT+mq|1=>x=ax94R9k?h2_TVbN(aMx!M_d{#<{&S7aOJs{w3^wf*5CR7#%tQEB
z?~@XGT~<m7SY26zzMMqi?*gJ^xw_THq^SvBXDiNVm&4pXu$x1)W=?e2eJ8e9%T)SD
zU5v#dch#2|i1odKE)CC7XR=M>zo&udyE$699pNU)L<a|wf82>|y5a9Y==<u!{Hy>w
zLJJnpstw^rkHSmT_ujBS(pDnc<eD|cVh0**_9*=JH_bRYPT)%zwHgt1*v)pQ1N00K
zGnhLTUgBj-^#|YMg9i5ya5VNa#Q_g440a?x`W{eZ%bryCZ)AUn<GFuuT1is7sjXzg
z5;Wty-7h|Spo>HA{|7OdIW`{^h}=iBNQidwvtj`99qeB-CY>*AU19jsm(_B|%A-yD
z!N9Xo{?%`!^BsR^s8=pmlB5<uL9N&ER_3aLq(GN$P^RN0C6b*?jrreEkZGNGdD6^0
zTP!}y=HoEIpQ9VZIrDcLJD=7Wm<WIz@*I-X=hLiNBoQ&KQ{ys0_W$U|BtoXu0F6EN
zOQ1%r`{?j_6F$(!zsawQQ{{nwVf_wk0nR{Rhxly2(rlS;Y;#aUb=cp)(5q$Nmek{H
z9eXjmmqS8fqZ_mZoh?a)odsNy&;rK7s-YP-_`U=QMMUXS)9|3oalAKwrcH0fZ)Gy<
zg^mdtdwKO1O7jJ(4>jzq^>2Xgzm_sP%cc)2O1gc=25}=0cFrJ*3b*)$pG;X-{b?e(
zygl{Lc8Ja!7d-#J{?9)4z}{1h|6s$_KexgE_jj}iS!g1FOhO<r>pbfY_ycU>{ZH+1
z`JW`=u`>S;S$HdBNckDTN3ZJcv)-6FK3i)Jra?}kx(_#!W!OdFIBDhfjV;!m{*LPY
z6I(84B^n?QqtZ1{<7pZ7DhRZ?dYS_E&zL3zDdr>t-<49T67fa>y(=FlYfeRKq5FJD
zvAqcjUnZvKeu`U}7a22s7xWJ7tETFZLF1k`B;Rxo^sabhx9JhCLTQt=4*kcbQ0#6H
z=)((0b6MnV+`;fBwgS8gt*u~OkV{)6ZcNz_8aM~+)6zmu!?I?33l!-K&-VgusgYU=
zIFgduipJv`PeAV&2Aash?sZLaCiE#yia445csMgE10c}SP6?RBoc=yI$H2!xKcCiz
zp2qa#3CM*A>g}VZqAKB&TrgBS4+FhxL!Z&o_nFV9<;GL-?I39w4osx^8Pt^Rd>6E?
zy?h&YYZQ1*?T(|ZbO#kQS&cB;*gW0{Ze=QpY@gmK%>#iX@Q~ARQy)}qpP9s_>@zFS
zBnpSVkB_!bL!w&&2-JlrB(rcb&VQn89KmOLqIUzt^CO2A{1g+xQ&hG?ga$fRoC$8_
zDk&qUy-y2r+4`B^^cgz{@pAUt_vy--g<GIw6atSr>(ZvCqOw|NwwFMq?rR{^RefV~
zguraCUF&we%2@tw(CAQG30^bKU`o@5T`RA`=wY}mXi~%aEiQ#TKevR>Og0WOFH-&N
zI*6vN1~MSzXl8c2y$tS}*$Lcna9o^x3{ng?c~=GV8PoOYFfgy`*Q&1Ogr|99gYvkv
zHL7Zk<oAfaG<BH47Z>k>6yp=Y>f;(W3V28@UeHPqJQxmZ>g#(3%Hx-mtSqrD4A`37
zURdZ>Uha;sAyW2*Zh$~EJwI@Sw0$6{O*u5H*Ied?O9i5E0vg<wL0>mV6OPk<M)Yab
zFv5q<*c~u$fE0rhX$eavQuoz9HyPFp-UlhhR)!EQclA#1OMxbx7gc(vci_(1QF$O2
z=wqao;m5&b!F?@d)hc>y(7whIT<%${orE$7BvivpdwP;^12h_01OmP8y$-q~f(jxg
z0}vf}_23F0SLATD8m^eZ6)(J!4OgP^|8ttbcbhM6B_Nm22hRa@rHeJCX^ES*=oW~k
zBiB*6O3)x5VQOb=jB0)j)Ioo`RvUw_8FFVL7zgyVz=2PhE0>VSz2pHdD38g8Pl=1m
z-zzYs>9jl%Xz6n~kMKt@ZM=K=EkL)!h<PpCr!@goyWR=i7%nQS<axO=#Kl$&yyVwb
zszMr?t0{BEzVRuim5-?afpGNtK$c3eBmV4!q$kG8_f0mqegH+8Vr~zGHkB9ImPO(O
z2pP~9H{szzv;hM`lmX}K1Duxk>%7WhM{E;B%5g|7EZh&cpm!o)K>H^(G}Z<i`%=nP
zXFmqEm+^2bYk)4ak%0Ps#D&)#7++hrJ&5c}6*9@sL<PMw`0{A~h>aGk=Fgqdl<pXN
z1Vp`YmK~oE#J_wQf}_Wxl7<RWtiaNwTbt%OQS#}a2K-bg10E{0IU+t-+NdCx?46b+
zk|XS(elzR-A>argz3NJBV`U8X2pm`o&Is@Ts)2($!1tx-JAe?Bff<Wdk0lb|Rj!am
zGYGVAe;WR?h0jMu`yA_4J0&z=G+IDk&!KI+1zK;myXTWgv&#pl&-8w@Uzmd?^lC${
zfoQ(v+-pYd$))naGRY4BU@*|hr}pXSAgO#FR8Fg25)n6c$O;1S)DPW?$+JbMn{-TP
z6h)3q8|-j3H!YQOeh0ZUA)eN24b>r_N(4nsY-K}@O&!@VFBFiIe}sXKIb3NOsYRe_
zJgo(c-lgu#{pP%~8k!Ol`gq=_Gg{w(XY+~FU-Iy}+*Oruv{k-+@JR$WSAjr7I!!Dz
zUxJ$8Q2J6}w)oV19RX;^-`>KIQFQo1^Q9ybXwk=`oDSqNH^NeP0;b7<_<ShCTh!VF
z)cGORn>HGE0jl^?QDz^42l|S+68-L;Pj`3|HyC~MI!LiZ?WqGd&G^7A(AQ-jH4+HO
z<(cyU_CGDm-`8fAXCM>@(&GQX;{In6@nu$!n1QJgkb<La1)O?A#|8$HY#A8A^sK~8
ztju6K24Z?9dNBL>kvgwsfaF(&^Mo9TATbk!_c9fh_u}*%AkkG$TIBqfQs2tT%#s5F
z0gk5uzAOMWg~E-Y7GRi#9t3I%d2ybF`_GhE;HaH{P4W5f<q-qmo`ZamrS#9lVxZT*
zvZevJ-_iqz0-gW<PB8v2<PZO^vxS-dU(FW2NU8agEqu}TWe(7P?6v?hquKv86~|FQ
z)JT=}(KyC8=kEn*{NY`E7<ZI@tdf3z_2z}zlbH&ie9@3&XFI~){%XQf+o>Z*4i4B;
zgZj>h^{Ix=d8DKbiQ_SzQ$;1(S*+xXlt}4zP`bOi^t(4xOEU-CEtTsQ+;i(iZ7IQ6
zo4mieZRY!O=VkT}woLAD-Z*Ig`Xpw|mEkaTxh~3Merw@p-_}W=_7{THQ*_v4SLm;k
z@vbuzIg6XD_wwD8RZ;?_%Ag@<9i-#O7H6A}oNOHsXGbs|@D{7aYOS;L@gXK*jh8L?
z{RzTGoQJo>*mp7Gu|Iq2-`p{KcwObA?#)-kSq~N8dVi;I9oOod;&nrj(uS2RyUbR$
zDR{-H<qW^^iiM`PsG@n1z=`L)WWzT#A8QHneSTutDVE3i3J*0}2-D5|cD0a5sZbQD
z0`}38gI0cfyNGQ{P~m>4EvE1D5^!3xx4ZO1S;0@fS<;b;WA9RiUOh0_e&Xuc>E`z~
zbx1a-rR8}fE}S$h%(GpY+#9hx8c2oHEpGeZc~TjTN_j45cf&98v0uk0B$Mu{azC#s
z4oTFa{p**)56Z~Ie{ScvP}p16yvu^p%Fqz1C^Xg-XL#Nfl`!`ae;}V3o<`6*`b$R9
zYfk@`NeK1ziv1tHk@&fH(jQA+A9)}6I$bm^$I#YKtj?3*_FIog?HHqY`CpGX#Zziv
zhzPK<!9Z1q($5cj<$~XEYSQp-+V6Q^yT)v<pujgEVUfcX@_O4Zud|bSfM0PD_6f;a
ziH5x0`^j<bW|0EB8`-phW%_WBQIj%BA<I*yqRlzu?8#P#H}nxE?C{KDVy_Ry6iw-Z
zh7xWRJ==7uv4Pi;J}Ukg!#69Wle28{`u0fi@jQca7}TgoHAo;ZQ`ACi9CNxE8grwU
z2)_vJ)k^^^hJ1ha&`Ex5Ir!~9F(R*ke)PzX{9`S*G7He&vxK+dC#F-#A+69y>Og%l
z-tfef){ny|gw5ZqGdhg9;5bJ)sL)7|sZX%ly5sc2pF`fPbAe;GGbNaQjSwc+5)3tN
zx{A3Li<?j=r`#1c*X!Whnrt-941eyYHvgpa=4!~2-uvzEJ?*S=kK4KE<T8Ed@Nkk^
zov_*R{h7izQ0<86M37VODM!%B_|jl}K{~4GHb_shr}{>6nK`&F+l1IL{25;=sb9M+
zh2cDl3Vx|l(>UawLO5XaVW_+<g*?X-zWv3Yx?ZxEY$X1HM_W7bo=>x&;}>|smelQX
zIg+*ZSHYiNyzb3WtZIalc;9qt!_VJRHyu--AkA_nH~%`hM`+lx5T~L0WC=-J+&}XX
z`tuEL8w~F|Ir&1Bw3z5l2C+V)K_9EyZD*GCePg@ts^18iilcx}4Zn?1Ho?W{Z;9l2
zqB!3HC4KU3cN4S}HXVSIf#ruH@zX>}9kqH$zRlatB#dT;nZb*TB3od=(nB9f+v=LJ
z<p7QTBAA*+H#`~#AH^PC^7q>r(ke0St@n{Bmz*wmrigv_JxB3mwBnrLi&y3Km1upx
z$cnCIwp_z}7W1t0=KwL-C$Lv%#M7F%qFQi}WWkzs<xcr+<&w4m#GCc0Sug*36fMPT
zaVPdX>JKYv2|GxcxYNlArbB)mk<{>#J*~qkeVH>LJ90}}^u>ctsW&ssQ!np5H>FU>
zS!cLSNy~rO%^y<>X6?RqOl2o9v^;%-WYFEPNCoQOI;w&8)=_i2Sak=^C8Q4~RDTTP
zc>eQF|Gw>$L=zIr8BNiFE~)M{lKCSd`?KqBX$vL)eVKV7OD=it|I$lM&jRGk{*`yh
zex5%2?;QyC-}Fk;GcmI>UI@*<PlsEsyLKLVbO}7mT)K1b-|7WdPp&X<g@G#!Tw&k}
z16LUMzZ(NC!<ATbC4SIrpU%#l5neh<oO`#9(1Q^-q*0$w*i(C@HFdGOy?Ks#^V|K&
zf}w@gi!Dq4ccbKLbXOSo&tkyVq!bB1DKR`sS}n*BZ`X|*>?n$-=w|}AEKNIwP0$u1
zo3_jgTXS?5Ha51i%`EnVL}b5BTLj5xX8HS&XOEa|R3NuwR!sMXv2Fu>PWlY5T8o#q
zErG$&0v!CGR}~IANsqY2yIOjPl9OjnAq2_490<<Lj*An<h^CG^lq^cWkuPZl$x4mu
z$f*>cJQzD%E<WE-GI_FmdR(|tiWn0>FiN)fP}Rn#PLOZ--07b&XYmG;i?B_ZMoA`-
z_!qS=rs)S4bY|ojA6Bd&omwMDPUF>xJ){He<R-s~A2B1?6J%o{v5rBz}WUV-~Gr
z_<}nL$tp`eA_RiW>hn{_bU}1+X6d!e=K}!MxUN_$lsZb6_!Qx1Z)Pgl?IyU&9*Lzo
z;74R;NpzGLyQlq75VjgwIbCMq8`F|6mKvuCHmm}hMhwp}JtnuPb%MtR%+R&a^&zC2
z1!S1i_BXoYFZM)sk2r<M^A#<cMrnwJC?sZVZ3LDud3npp>&dB<^4Kt|*J7Bs9pn_+
zl|XE(qCX!|HAR?bOIfi$y>2xXO9^Y&rF?z7oPWMI>6m)ix-w&BCMl|Uu9K9LsFw0Z
z728dd-6-L+j8C1qoHU}+B^_3+gB4M!6ZP#?T|d0t-;N)Wgbwb;bQ3ZI4Sa<pt&|!J
zcTI2FomSwj8z!g}cP$khlw)O%H&~ZuR*D~Hgl<wMVV`c<vG5lSD5?DztECu40cx%b
zB3E+sE1>cd*_$(hOMF$(pw4NM>Wozu&W()PTx4m1hTaYt72))INTtCTxB#I_4n<mF
z0vjekpm>v#%B)4*wm=<ttmckmwC_L@2P~rmH_r~kq_#67aowz_9g^C%bTb>l@$%+<
zm22k*QA}#2PTUU)QBqa!jMtXeoB5?1MB7W1DO=>|x>D1i7|I%wW-DibcY2~5?>-+E
zZi2LD0&0EDHK;_+!C3)kIWB$XzI7CBUxx8v98E$l8JAxLk^uiFM!LDsu+l{H#@J~(
zws`5z51^Jyf@=S6M^=rRjwISpx5qD`n)bz9CA>1^N=0Xh=~2N#VTNcs3sp4T2voUq
z+5!_h8SYeT$6f!!i3@!KpcdeJ@aYI?cOs2>xHOAWf4KOdRZK$W+Og(Y3!U2r$JuGY
z(7IhhH1^NuM(99y`$|?ZCaO%yaP!d*Cw4(#!p$shge`#I1r~tp1+d(i{5k-_SJH{-
zn{^-{+M7I_IbC}?KT~`141jx%rd&;T2A(gRK}mF7RSxOFe7x;;NL2r;{(4u);!h~`
z{#u_-0XR5mA@uS2iqeoA-t|f0Ff{-$FSZxOo)BzUgghCxiZR=Rt9J))I)!O;_Q7&V
zWrb7-)Ww3A5O$>m!C&h6!<DMLBMlp{y(=<DxK*=}#to|IEobO-CVTTAw~$UUHZkin
zi0ba2?H<NCN~-?A5@SH^VCFwKRk1R{1lFAV0oRM<s;*41>SE@ci5oO6np<qqDQfMR
zZ9smO2&O!Pn36gU0N=V73sOzFc;**-|DrL$MD8XfY{Y4+?%9hNZgBJgw=DCIvXciX
z97HV&g-i}MI1x)#;}M%Xnz0Fl4@Xwq<97iJkhpzTA?qipfU}GG7skZ<Z<$*$i=t!Q
zoyUa_?rJ>O$XsBNQuoNO_JoRu7%=fOlqOW4Py5$eek5!V;aKUgY6#DlEN)-IF#P5C
z3mhNXNdt!A4x1-VH`tP!?;mc{OYGe03qP%(+q5GZ!N+Xd?e`z_;4c_7&nB5NiG(wK
z<KXg<giND$5DEf}t!q!JY+`SwDk`<3C}ZT*vgMq?90y067K$xpBJ6(jQ>o~}$Exi!
zfUnmW#tnv~m2qsVa&Un6+Jt>l-n3g!2p#L8$(_(5TgnEgo`la?2dRmvqZHS_R_k=X
z*9cYqJoljGD9e$s!BQ!uUz56FVz1?Z^4<+m@1Gi*K#&IHvL{n~!j%rzYcqFyr^>W8
zGN|90XUHnm<C{FaFdzwaVLcknpmVnyYJ9srGb}ThD<>Z?*tEm-(pl|2o|;4mA3t^M
zfRnBNfNmw~UYuZ46WQqr{fi~LgwUO9@81F)Oe#pToX~(Fgil1`0%m$DgeMB!q)LZ%
z<v5oOOIy4A@w1&{8f`ipHXgtpPVXZRJ4=i!D4i)wxtx{kZCSi?<`>AQ>hJcqG~b9Z
zEo@(mX|j|aXd;Uj6p*q>3O=70XJ7y{2y_+4n8uK_Ru9|y%A1cyoSv+OWU0edYok;9
z%EaDW%e3i%l?aSw7upqo0XdZk-iRpFsRGyAbbL9B^j~Ta1VNve+Hw2)XQDRX*1plU
zJBPfme@r)Cb|Ro&zAw!ol_|1h;y!&Q+?-y-KO{>q(*f=obw|meOm_mqnJ|Kt&vl@~
zY=9{$%ZCl-zN@sx6U;X~v6sA9UkSxA3b_TecP1}hs+7`Qo!ymCm@VOuY|1#R<Tuc?
zq5d8>gv{Z2dyL>rGUUq&tA}z|;`llx=aTWGv2T3{)i2Pa9JKGJ4nvSn717UguPYIS
zV4hQnLyl9S+I%<X-FUy5jf&O`EZn=MHkDPYy5@*cmlG|HA77dTwwO_GG+h7KlwK)5
zysf#e)K3n@8Ze9+*h-0Ro+G0|7m92;p*jl?+Lve3#1GS4?I==)!b4d_hTT!!J6Ohk
zRzKsRVAavX?qs6M(OWP#9N24X=yMpnql1Js;H!7`roI|DVL<H`AVviMa(amz1HV94
zLQnBZyaB2HJ@_O=Gc#i)Ldmfbm}%?#_gTF+ArA{jjBR%E_%v{FI~kt7mInA^VJkp?
z2U30eQ)SK*Ge|ac*6P35Rvx!fzkB}@i$;ZuMJZBFytaMu2zt7bhJB2%jSD~E$XqIM
zPF1PBrxQ1Z@v@*k$#HJ(oR6I*B`q{dZ9GaSSJLSbd2-LBv@*+(qQ??3nU^_6s`5o{
zcsl`8eP|WkJi|I}u&}I3V@{!P8~$-|gYAj;<C$~5_N{>ikV34*U5jP<y)9MgX2m5F
z)-h9eL~R_n#Mc+79oe#pHp?<fFnD6*#<U3)ux~S}<Jxr4`06R<oZ*a(1n3pDHyli%
zH1IDbYOQq$7>=wa#teVwT6q!9jQ=`Wb7<#i7U~vuhZ?~y9v@vTnM|6sWj}h3Mq7o>
z8tS7yUDpXck^LXe^<-&g>G1JUaDq&Bef1ZqD7h6BA!R_==vPp}bj=?(TW(meHhAD{
z%<LP+kLPYGZ9aHN6~iqyW%=QCr6aqZEtMvh=CMyo^m4MwkwYG?<BtT6w{9>uEOhhi
zs?~a#Q_{P_nxqEoAL%t33w8~h%x$?&7Bb0~to3&Z<Ch<_R;Xx*O$#VjxA+0Dx%7>g
z+L-sKLJH<PZ_X5OsmUn}Z*Qek#D11cOk6^gh)qxr{}ckqz?Y;wMnqP<`;1S%f6u_8
zlwewRDwgl#JjF_wRhsp;OmO=WLfT&*5xK@~v;<dO(!!ho7l_Da6_79u?j{iYSY$<}
z7*i}wAI<1H*J^moW2!eT|9GCsD`hhS2b4Rf+9%hQG+zWK9rVH@0l3y-ax5ooR9(9p
zv4v6&tX3!-ow}}5q=+%`q)p_kd11Xd*T{Uo!z<QJ(?T>G4c#66IA`Z56?jQ^27ay&
zz$WEXoHtgbC@_Bx5oA0ow8IZ8^)XJ^+@{i?u81Yy%XEmB73q;RIaA`TGMlG_)eCnC
z^~hlC#vm%%7yDS8h&ZaS#mhEHyx}a~<Wf@U)POSQ0{MhAj!-&zG*ljo7W6*kV^~RL
zVt&8v$tdTN7DLMSM>}4u)W;h&O^G7=RL+a(JE0QRrQdMd9%LWhLz}AgUw>8aItwrD
zS`?8Tr74&>U6ka!&7Gw_?Bp;tWlE%_meLP!VI7^5nr?y^K>?>;){K=>P5-HOk5>b8
zOkSIZsMZ*O9_XT>zF(FgH#SDaV=v|z%|9nnp$IE&kZ{|ZY7fxN1jK*5ECtQ$W2wTm
zo7{fwnaS;q4cS6Vi8SEcN{rT>!zSYrzHF%C5JGyKw$Nv=*n^KXdxHa`LuJ`=klW&&
z!LYju&vR(pn9yE_aqBN+{PGJA5kQ<19jz+r?Jcz_$JhX~vrnv6tCrI3Hw?pRNIfkb
z>~y0}>G#R&pQAxzwM%W5*DRAe0u;W{2CCzu6$TYDIr+PaapNRO*mHbobXDxR6^#H1
zuCs+3>;(1HI|>zV8t~Nd!KXMfCHuXqCrlfRc25L2!dDf~2>~3BmD7w7W>uKtV2_eG
z_Lgi2;IT48i-z&w!o!ytTlJ67=`$<md?JC~<M;(snNm$W8#Q`NN|gG+y^Ae3v)2=n
z`vc<uazeT3P~lYBwHO01@ywGiQK@#+>M7cONlFf`JlsH6U+V(yDu^5mh>sGg6!7eo
z0E>VxYw~Hm{0_G+yz*O@zm~j0p%s3FLI0bAL+L}u(qlR0vD{6CsjLpAO?u5{r%E)N
zaur?4_gNha4_Y}y#F)kCR2Q`fcueFY<yMf8b6#+!jBq^s2=LHU^MfC_Cr3<(0Ma^u
zgg-pZ_L;f8tgvN;6QR`a)TujCIrd;w|44jn7uu&M7ZGYA%aoagF8WB&iH%&!+`(7=
z;Dm}Om*~_IAA2fRK$^A>P$tZKQlKh7)D(Bk<~kRmIURkS65^O8Gmrw-+;(6VE+Sw~
zNtiPY5BH3I^86?wRL&pcDQc^TjUx}l79{w&Q=~N2M5eB{qi51{2LP2PxzoC|YiX@e
zhFrDyBu{*5PTOYN$ACe!eKCc0xZ%!LMNHG&oD|0HTAyY|Jp{Axo^~3N`#w218mjE^
z-fsY*I1b>&<X9`YfoFAM<Idhan<_P(892RU24!wTV0|H;a+>og=?TPx<tPMBzie}W
z*TI3B`-=+=>&4<~9Qitc!}ivS_|H?_t;mqQdfzWn=GL;Zwiz`l=X8;oG2(<7=D|^^
zDOy+Npso8ux6;Swr*6<oxDb&LpiHFVuO}RBHdDe@!@K<^8q`)55c|{iOg)Fx^;r#X
zzQ|R!yA#XdA?Ijb5(z;71-PY&tR^~js%Ybo-kvJ6VLt>gFFlsi*NLM|`%Fq&gvxsQ
zHnyA0Mo2zT=T`D%8J|SfVdps8--$r`j5vE<0f-CHhU@NI4H$&4RW$P2Hv^-wZzHPL
z6nCsfzx6d$HWlo~Xmdy4xI2%d^^BG7YGVYzb`)jtauBuOs5!9#A@^0ZQf*&$T%AWS
z3hXf&{FC;ssE6)ai`wv7_yIDcEI#)v&qNgt4>g3pB;wEy<KrC`G2K*vpL{Pch#Txn
zD^t>G!S<09+SkGx*AMFsVTg^AH^I~EGvTJEHZH}uCdbFEhznSb=>YkZ5+tec$rL1e
zewT^vn`635@zH>ATDdbqWawT4<sw*Y3Q9v=p>#jD(V*`b{cwe)eaWnnk7Hoikx6|H
zcK@4uu~-99gOUX$)qUJSd{oeB3}jRE4rraeqVs#q2~vj=o9l_t9_;k~xK#{d)2xoK
zBVEqgl_B%PiZ$g7J`uc_BSjfdWi;=;o)Xmbs!yq>15~(SjKmDUHNexDo{^@%S#iX{
z8(;gJ29Afoa}H(QN+HPIT0$IVBpy!P>7EA6zJA3oa<&{hdfj^uI__!L#D8u%DG)r`
zOX1wH@7;}|+gR(HO%LfOO&=-k2Zf6}mwrRXy{~}YaC&!w7-TD?R$EOVl<@K%X!6;|
z?xC5M<1|=EqSv7c_Xtd5;I2DrS8(Y7AvgOY67;y)fC|9wW5})CTN*n_Sz$Hk2L}V@
zd~JI+2N8ynTu7QC+JP`%+G0ci<Hx)1w}xAa7l#v>HuLD`Iz9o~RbV={#2t(rWA5x@
zfb%K!OC(QgVV<21RV=P=K5FQ&Y`2#aCmR2_?oBu?!MertVq8`MPd&A*Vqbd#e+kf>
z)`q(A?%Z+-$&6lIHr+w)Oc$bD2UR7n-`&rbr9*F#+YePMfq7jII|^8tmxQ}!a%GN$
zICQPDAOQ`7ySWh^+jUCj7`gZAcw*Nt%w4Mp3AH{g$UfXNU{IdxDC$~TosHt+DbB+e
zU?ejFhRIbx#8_P8H?zLO$8XdsdAR;o3<;}WUya~<w4L}1#$>EzJ2G2Mmzy$FTXa;`
zcR(2}*ram3T+?`~jO$}leLuj`v8_o#F5Q^(J7;Q;`h1DZZbDRmiyy9-M)l+Jm54d8
z_zNv1Iq(JiTF<wG7bU#gkC5rVTXI6KYN)TXjmKP}rn7Xs9i|~^U70v`$dTI+ttu8W
z<I>-6ES!7K2I4{NQC2sRH@3298WOrfnhmI>PAy+?4V0&-r<SHF0p6)YXI6StXk39%
zRhI}!P03pS)F3PoM!!E_lcO0VJF!bU?4c`P$mGPwA#b}EZUC<d&;pcA<Rhm#|3lDv
zPQ6A_VcPzR-A2nw!FN(jkdwfa%)v~K>qe;vgXFj@l_C=$_dH(SOJ;4Vi~rbtl$ljy
zcV8uLMW)<+G;*cVL1My`h{I`url2swZ(vOUf!AiHH>XTdj9ghPk@QYX92nb#`wtx0
z-jQ{OeTE)sJ`r+%lD&0EqGss)QL1x#lPq^T;b@|$FvD>ucipsg{~qpH%iWJtZmN1a
zr7b4+8a|U<yS@&2=ww+L_q<jO0v24_jg#59<`NJwIJUxYrcK~6V-YS0YXu>~%-}Db
zWw_fmpo55$A8bp;69F$@Aoql=?+t$Q=o;@gw-}_05MU8)FEXqwEgt*1HnN=TIaQ6H
zz2{iu-=K6<RVl!rqv!Z4N6I#&0hLaDem<bzZKAn{j7p-PJQL7`4B#7){@7nwLWfV2
zMcp<U5nGO%51OI{-6(NDwI%DBUz_w#0E*QOZ}mWN(P%SeW#X!hP4#H)Ut#E;$jh9>
zxT^r|uVLnVe!Th+yK{wsv#aDyyRQA>gh)vx-?t1de<e5M7)^nIGB%u|ZE@*NcarfT
zCDE?619n$MWMi_Ux@!OS+DH+PDrXgTUm9L-?C$%lt)8~)N*-2ONP$B@p7E^eVLOq(
z;Liu`@3_^vo|UPcT31KrSk@L@`wG$C`Y~(B#Z(?$m1tvC_JhM&qO2l%t*>+(M+3h=
zwSCu?q7Dhg!R>52Q&1k;1*9)7&l8^JtmcO5a05A~{`#+UX?f^swP*n}_W|}$WEhfk
zSCZsDC&5-qY*Tj&6S!gPB|+b>DW5GJHp{qvsc|xBh@44}l_v9u(^22aS^Iiq{bYkB
zV5&?scQ?7~?e%nWp=AbPxaF;}rDv?nn;#U}Oj!~ybt;%vbZ!GGZ{g97j@ofyQaw?!
z;-S{Hb!xAI#qZfKyOz#Zm>Ir!ZB+9Sxx!3hTR&;`=?2AcvXc^pXc?8dsf=wQtj%ep
zdt^*ECbUyu%^`*hhHv|l=+Gi!Ew*S2*X>}yBtcG170@u^o1l0rE2NdN&s($!{g3uI
z>iq!Tyu$D#*9Re;y~U9|vhLs^{Cz(6`&lpA(d&{e+k`hZq0w-5@h?(Ap=*k|c;gA{
zdGQPdHGUo}@~|_${IS)fDsKJ+bOATSj^rkphCsgi>grk_GdhS{Y`<8ipxvobJ$5X+
z{b$19L%?Arv`^qz%fTCxIc6FWx*|iJ0oY2X1K-lVAisqy8pzbH73xF{tcW1R+!i3c
zi;HPo>qksc{D3(lij`fPG-2G3)?1(k-C?2vq~;tA`zq$yB3onVYWT4JOEQ_x;LSij
zY+Ug&VRaj5pNCv#WoKW{F5riF$sOGSa|`jQ=*R$bb?OsQq6QG(*DmTJ(t`4V`<%T@
z{V<-jrJ6r>q8oiFHjDaYdzl)oGVhIM4`4QAD#{<4=4a)V^pOPae1Aq=WuSQ<w#Je`
zgpKWPB#1b{sL!54sYkWc&xc#r##78mMwp|3P^Q*4mJE)8)nP$kAbAgT);%6&R+@f8
zYX9u4cDCsVT~~vw(U5cPO~G9ed@VZbKI@u>1raQok01TY;>)*izZOWhi@zyX77_Xt
zuOSiUk&Km!#n_9mRtcbB-G^4Is}3898)&&7kxa`O`U}mKJgst5HkjFSnLkK=GiV?|
zk=~Op`$kSTkY=UKpZ@66+bK!Tgap3$k77#=sLtB4zBt3S%C|-QhlS=@!77RwXUI>F
zC&^@XL#fKF@vJRp9-VZj@Ndh^24!*W(;Q_%l@h=HxKF6)zH2LwUnBOR|1}OdE8gp6
z<`aGeDuO4xJVrFzw3AV?Lo5taJ=zPBo?K*iT!}rG>hQIzcH+aky1Z0Oryqq1Jh;jG
zfQQJS8|*z2@3^!v-W%8oT@GjQ>Q(Y6Eqk>zZ`c1Wjrnt2LY`IRJ=5HbL*MSO%zgpf
z=+$IL%KaNALq2bG^EE%2MKe+#ev(PlMipI@l?Zhg@%NwO;h|r{`bAd}r^C?wkV0#}
zt=%j2C&Vf{p9Ic+WBy61RB$TKs~`1A3PwuF?%{5ymF66uTr=3)1DhOX=x90oN={Ah
ztl(;MbE|0I>W!>E+Uwf){7U>wkX+COaohmrbtS$tt#PZv>r8%it9OI6r$D8Zad|6G
z{UI=-n>}GO8?)7gdblU`e*PJ+G@lX`TPc!xt4uR_FRH~)_UhJ|<t!^9%qH~iBsG9L
z>{R+RFq+Az(ebFMA5nWadS*vQGAx@Ak#Tq1%Af9Rtdza-UX0X%ezoMpR0)7ssn6O=
zp*9qRH;~fNw5>e}4+++bW9xTPDn>c#no)d$@#H}MslTl@;F(lY{O)DiPR&Ji&Co8t
z=yifUUeyfRFMh3}egiKOQJ?V>lJjY?|L~*~n@m!49=fubyQVZ`vSwM0d{!xRK0A$J
zlh=m*d-Gr1$XU-F8;q|GqN2p6YmhX(`=*CO(Im=EH(Pi+GiCR&(h2PwJzQ}yy*uOm
zUsOKan548{!8+xxGSqCsqkqvcyO-^-r}zHxLxdYOueUNdLS~m++9<_$Tm1R9*95&4
z8>uL&)h96dep2x1C|l=kwDx)d>ZM0%Unxx52t}b~dPcpGYL9$;XiDHp0XEdSdPK2(
zm=TL7!-cHp7&m7%OI26t>FbSJJ)T|)o2?upG<pm?2L@33s6QV}!!{<w-R)mZc(yTX
zwC~lvjG9`CP3iEGC)J08&|t=#OL-!m!bUpmo_P(Na!}FBc;l(6uVEg}bQH^t`OZ6;
zK^EA2di7-8-b7M$>yn8jw;Iy44sqm<NyLn_TJdN(9|ck7%|8>8*G()i&JH>4+PTTc
zC|o9H_4La#j$AWn0_`w`;5+K6Vw(?T+z}B20}`Xp1Re@aAXH29%!h7h;od!`r#E?+
zk*mk4p9@Qp!{tn+)^v+k1TTg#Q^)w_Az8AhCa-~3--)_kL}QX-`-2zhs<g}d;j+A0
zIIe=zBzALcLQ~hSCv}C5eM^(*WV~Tu45#Qx;~=1?IeInuDEgtiC3SryiYltS4f}R&
zn+PrEL{@{2??4ME+c8izrC!Kt!HjDPpYAv%hk{Ld*lmCAZKhU~!vDk5S4PFvbj?0Q
zAh>04NN^e4g9dlk!2*QA-JReT+}(X}cXxMpcXtx*koQ}+|IS)-R(J1RyQ+5gIrt%!
zmssKC;I+2W;1*%TrlLH+^%)ITUmd-@vGYs$xHCC4ggp6p=yc}Jrl%@>bHVjwz+21s
zjEQ$)U*CR0$u49kn!h`dO6hI=ZFb>&cFj=@Ny`Xo@hVnk*^s0pTAR|S1_50|>yi_v
zB0M7F`F#s+#Rtf$xF{9+oh-CW_{Ufz;oYhFr{Sx=TxiW(yr5;~?a-o=KmM$GuUu8!
z;jdtXZK)N|hO8fx$F{>oU}hR%nR;jW4Om?278Bwx_RAk&Vnmn9=HV{`UCkHz6>%Ph
zv{zNj)E&C!N7`P?aUkW+V)xU(r55IP#*4eXjkWdv@-)i~EXkQ=9PS!#70Ts<(|Y7-
z*4`f+^2Ka-(L6LR*+CiOnH4Zq6^)d}PX?gW-*U>50jWZd3aq&XOSa78UUkOs&V6dT
zQ>k_jSK0csun{Y^GzPk|0x_y49{9vXhX@hr@I7CLvKs7DXjD<H?!<SLgr2(P90fX9
zrYhd@Qp^Xi*B71<KW1>e|6?7wl82EuU{w@9f|lT4xCEjVFb`Yh>gUzzjKgWRnC@pN
zp%`%_f?H{V2a(`V8fZ|(62J~aYwFJ^$Z2HGJQDmsZj4Y-%Z(l+C&lU^ud3_uP3JB&
zz%0yl(4?UWZZOG4<2W;iY)T3sWG^6Qw*6i`Kq5kzDAcEb9B**={nE>}zIkqHUUs$h
z=IA;l{#JW~`59rdzd(0|)O=AuBmhN0Mai`5rBr=$DkQJptvsKxv9?4dLLD-F=w~L1
zO(pE*>Sy}~kiw`TSB%Ra<)n<jB6J+8kRS2SXw9Qxziik3O|0IIp2@IZqmkJsSL_cT
zYuA+G9Lx-LV7T<R6H0_ll><3#MR{(mRrM=W)D!26AI*?Ek@ZJ-{4sjXm^e85TY^^A
zeb{2ok}OG*wNC*|bTsL4ILP+12>zRt2aK>T`T;Wd^eXLE2Nu}Uqt<%8_z9a0j<Na%
z)@hki>X?76s~NNe2N!>4gyCm_FolMr7ylRxjtgQvp{?tZsQK1E&4HVkH)cNZ#@}J~
zC)3Ogg*SWhh7C{M#3Y2)KBKx+zh$f!aOvU*gsW4#a#xj|Y@Vn2JQwWs#O(i;5Pu!5
zfhaNVmT7T7md_&h<?$D2goUCy^xm4SIk^|9XFWw@)%dtD$wvvT3kNCEfjs@b)F8vt
zD)F87eed*myA@4LRPfu|sVJ?vC7Dp#OZ2~rVu(cuZ&sRrA;V7?y`L<kmTO%%1)1#I
zq=o_z#6%Q7@`#br(#2?rDjp&aH$r$`^noa@a3^0v-)$3E<JN-3-dSYt#&z$hvUX~@
z6I*Y}72~^q`9we%mg~Y6^zC(H!<~tflNxDNGdYWRb>6pmFivA2dQ1Vk+6h_*+#_0O
zBAiAVWNCWZ8+4y~<JdeZRUKE@eqs9Nk8b{8=X<iwF?dTnwDujz?h^H#1voeT*TCC<
z;1Dz}J{i2vlBXr%RV;ra50BCxGh7v1W%LDqQ)lQ0@0aD6mX$}X5@}49uIlr!Vt;$E
z)n`nC3hAu;!f>39uwgMP40!`s60BZd-i3$)Oj)FUhi&_PN<@p58&KAg7*I@<_nSgU
z`cJRlE;>Y>2|wK(I1NR5r<uiVDP?8ItLPvNS(dH4$62q{9yO|e`b|Uy1I+&rls_wi
zQj<KH&5S`@^uXB8-`&TI#-Fb_*@Wl}Hq{-eEI*Hi_s5JgFYbxfxk$lY?kVP2A3LJt
zcabx#5A*%5^TsY{mx7^q+iSj>&Dm?G0JRR3n1a0PD%+%osa5p*g4Xf#2^lEl`+OZE
zkfW5F{V+2WN0`UEMQ|Z*DI&OBEjKa{RXg&;V@MSDTeVq%ju2}#9*{>v)RxqmW2G94
zau7v-g+R(~)u2Ilx)4?kDTjAdV`O)6>7dHO$4}rm#+kznJ&4AoN~0W%X`%IWH(i6X
zhWR{8tRNBIP=mw|`gY=;FQXvU%S{Jy-naP;>)3bla+gU6(r1o}2aPt++OHvelpF3e
zA{j05h}0!8g`;W7vQ)T}y~5uY#D<&EQ$BEP4?naGWWZm)iIF8CdP2J}hir8k8V<Mt
z_}>ab5QVzNh-2sV6sR6ghcKd`mXMb&?QqWO5doGCa%WrrY#;wG7aXj`?iN6eQ`t%p
z`zsJ0oX+0#)e!gedp9yKpnTy<;mG%!GT*ymBIgtrpQSa)rmB0(%EbmrL19$0z`{z&
z7^IjN7*lvd=yzj8R*<513l@qO`IZ`15PDG+tj@y5LSvg$W6yZnDz+*wK{H%H=Y}Pa
zhJNc)^9(lu9%j8mW32wzoJ!|VFmF6cif)ipY+mo)mVv*Q6UY7<g-c^2*?TC7irwK2
zh$`@R3>Hf`k+*;9=p1XPFjIo~NLRj1v~4CpO*OLSBmn>3e&5UNC_Lps`BA^L^Z+I8
z-$HmL=g8i$j1K`k&-DI_+nMd#hEiR<dj@riE7Rjc<xcCS2%h*=40@k9Q7D^2CTwQ<
zo4e=C)oY^nF!->Q=AUySlobM4Q$QD3KFm8=4ZNVaG1#qWRV=CEr-vL_>NYXyM^Ram
zQz=M&^JvAaHAuwj!^FnVKfk>7l|8BwyN`E#$@Zf)S7KSoF#CbR9x=NaWCuY++(NTl
zq3o!Fm9p>NH}Z92=>ae1)GI{GAtzyQu6;a^D>$w*2?6_WMU?1Eyj4xdGS(K!*uL9b
z*0T5%WUCW)XSIJ={bO%JzARV0r<y1mZg>p=v1~QnhLF=T@nD3nNUPM6O1@CjY>q0G
z3b9-Op+m1{;z~r1yPtDW!Bxt6p+0sNJx5REozcwiiY^xmt+O8Lze~%SC+oR|;XFW(
z_#}a<s_jcR5yaPChI;{w3j&sB@fdO~-AXE?jNx2<i|#gLc6uQ>Sfq?@iOrr`a_%vw
zV`fhwPE{99eMn6RTND_9+v~Tk9}_kgxwZZW;&ZIg-YNb3-;FzFni+i1&HI#{&)%Xq
z_{#$E8-r|ZAE0&(?B2RO6~?*x`|VeK#*4(09%g~^dRzZhQU&o|2>{m0qXa)`k)#Sh
zS@o!jkW}1q(&y?*S7cwgEy^3ttIWPa^ENOix|Ch9j>}985$L#Wk0x`HkcznQD3KOV
zH7=g?Yx9GRVgxGYQ!_QH;^dXO;lrRHcOu*8(ni4MJ>Rgf4lnJ1*kV!eV_y2#rpg*{
zmUmXoP_?mnD{4R2T}#=8sHjyf1^b$W-EEn7IF33T9TlOuVE|ozLq?|?f!IvBw#KCP
zt-%|eWcY6Qc>1!RS6#Us&&_?tz?}fi!OK3g#zx&d6KC6cbjM>&<CM2F3_^96FLPB_
z9z61s;HxGn)k=a%uYTr{H`?uNNd#w6TBhEHGd`kO`_Ea2*8_RDBr4d)raVvHBYgTY
z5aK&tUD}_LJZoMa8)Nr%f)_>V#fO9PMIJ(U*C{3?gMjLMmncDvDn@{~T3C&^-_Qj<
z^wv`ySbVmoP1UgaBNkx4wY{6I-?*v*krcDje%a(sBh_iXZiwGTig>*ZuzKSQ{99zN
zR^-U#EAr4pi`!ZG1l5qXU+PwrPy$IEJ1iF-g+!uj85C`e|H;g=x7j4lvhuF=iyDiV
z6m;pa@c`$~Qb4NCLMojRFlt0bCN4R-nJ;C-`Sr6aA*;^=svv4MpnWr6{0szQ{3S^J
z^Phl(2Dn6zc&u>RlLy%`Jd3<y6Mqs6r}3@W!;;_{_kMxeNVXUe!N9?=-e&F%t21>(
zAVLhEr)qiA??Ve3EKysx%RmmEwZpK;y*LD#Yf;VhpVUQdZ<E0s-XE7T@{2Pz`>461
zC5C@)a+pYD)flJiz^Pz)s!93xCG29saKVw-Ql=)G^lf`eIM*OrCZ{EL&gW`r7r9q)
zdo;Uf%X<MN#s{9MC||6}uZEC%79e2Y;z>pChK@?CI2i(|a{@kR{gww6=6f&OiBE=T
z*Wor}L+|@SjL5luf4g;2wIUi`;r!Eb*sgDs$}J@&%{vD88G8K(vviM1u96BOKTs91
z%<;`k-;X=unTz$<Qmj9yvZljZG-1h~i^MF_jBRkZ)Xfq61s^8))JeuuwX#XJW<V-!
zEoh80>fq)oa{p*z&Hc-ox_J~d#2&Z{l{06mQDRO13=JAh4Ia7dexNm53=7_BkFz&(
zY75%#ay1F{&l{y+ueKCt{TGy8-rH`0cSJ*RRke+S)W^5_pBaw-o1+f&_);Uan~*1k
zfC8|ND`EC`_{MKB$fs-@59`}kjWL?u8b=Su>`NvaDgY&bD1Gd7xikQZ#(rkt=YR}|
zb^sqo9{Vmb+Xeg5M<tdXZ+7}_0Va9AaYp6?xyNlOYMl^4!+>!cEUPR~v+gOQmWG7t
z+982#J4RItagElaXsBOJR67~q&P~i+zOv<vMm2T^lk`AuJiLCEPyFw)^MYfntT@_-
zORJc@UFU6H2EuMIU8vp*JU5S7cS+0XF)HO}xuKb~V5>7337ygx1M}*lQLXeZo)1+4
zZ?h&EgWDZCFVotDnM3Fmr<P@bQZ;f+z^u)ekV=GxDJV(IAhEeGFD;yirISgva{VeI
z$4D#nOwhx|o>xHu>#(XkCi2+lQKA-<wctw7eqw~@$eq|-#kIvss?cC#3aglve41kj
z?nYhiLE2Ysal~=8e1O-{hX%5;zXVZ<GfitSfu@QTNI@_9W?Z7|o|+_T`{q)kCX<|*
zwb^!IC4>SekKqITi$sa$^Vd$qNtc@7%|G5|-)|6pR-yKEh42}J4!$*cMEC?umB^^{
zL3pcF9e*!2D&X<<OY1}<Oj4LZ&pjOKoQAS7y~_Zn!3wl%Em!BTq-_;hqthSTcO_22
zL+i?4k$3Tb>TUl%)2AZ<yZv#Yg3W)?(AmFv>i_E@ug2?5ECQq5uHBz0qXa}je^u)K
z6(lP`Se^^>st8vxX~67c3zeFk)U%SqnW%==4#li^q&<7cJe6j;yC=M+#uDvk-ju1-
zSYR_PMZ<I%NKqayS6VNunBbm%#?+*L4AhKs^i|Ef7L$SmqY*QYbF}f+EDd3Pa45=K
zZei32L>oc|bg*6bO;E%6LcrSW=lxAmZ}|YH!s$r$G@t%`y{arN_m=`^c-Y5%;iZiu
z6&ol0;Ly#Oc!vmP7fuq`EOxj4cFlz9n>h#OvcNDq_T1#tZqGUOrB#m_rCpS;idKY2
zBgWGFj03)n=z|^h02Ju@BuO0lK|$mdZN6X0q`PGQ9I1Thh*2s3ti)rcO0tW@wCa}M
zVUG>1cO;5tPH=7@{}~->gIu0x$CVr+4*|~V0*c`|6~~S$sa$z(*-sY}P=0!xkGVK-
z_FGcN4I)M3XWUl{va1(#(OF<!wBU(nb>hKxgCDHQRDXi~{owWk2dNV+lLq2<+*H`k
ze@<nD<Z65ynIV>zNZ$cpZdYF?XO=)+x3IAc-~Lpo3-uhn%(<XF)tcJ|0K$lEbX@x?
z(kle)f4)`KCz{C+-Ps&iGWIj+CPGn93X`-$e#JP_KOx2Q%GRVJkm<R^wLlk5hrUz!
z^sX^uFvJwx&s<`&z5QDwB;AXzOp@{j%$2n~ikbd~FPPMlMQpqbX>kBT4gR~@%~>xX
zr8)9Mm#uzHeEykRM*WJXwV9hjn|k|82@=iTqcW(uyoC&x^(x~n>pb}irU%=p)M7k#
zs>X&?REePNfx_|wzxSfq>RKm@^+e}sp@ID`VZ%R^-Dk|dY%;yXbAD}^+iyHk?>_M;
zylFkMM#79EUa+q1`pKrsc`uIn>~8-X&<AJ7QJ;-!3UKuSRgh-oM0*Ae&!rW{x~P%m
zmVqAzr{*p-zKE3i1MvC!`6{Wdt}cFkdm>LnjK_NZnnc|WS!z16-9>Vt1?8}OUJ{hV
z#zK0Kv7*`yrnG0?Fb0Avi4ZJ`e2Qv9YOA)(G5|QOMYwm2y^4o^OnI0XP|kMC7}XA0
zH8LqnuQ_q__!a-fENmFrC8cjyWPdd~ca%1pD;>g_LIp6x46;8k6@Z4-hs*b!798SN
zPD3jFl+*dPwYE6t=~{NNM<718Y9qNPf0xWOsbbwA3%cuc%MeIk<4ip00h@oD!<VNb
zeu^7dg7{Uxdz@$(mO=HwyZbWMfZWh!`x13i<>7n@>`0bf&1^Rx{(`&F8VOKI#WGSD
z4(ZPzsjV5>@1b^#*}l7w#hNAFSe)~?*6l}qIIoCuYamkBFxSo}&xxusXzx9h5p}CF
zH}zZE@c2TOhVjITV{I>iX!ejby}Uoe*sGzTP_Q9=2ru_9MZBmRc0rz3E%u^j<-9}n
zkg))@VbyLRt8v50A$J&J^XZynj8mT7VrRM9o`?f$wmn3dcH7WM?M;?FRBFYRI2-u=
zWI4&w+GG!=yw_-y)M$5jA`c9edI>%9CCvL%Wn1A{p&Zwpu-f=t&(RmnZ|(@se*w$!
z<XSTf!sg=8@kq~*r8PA$pdu0EG%UhJ?ad@@%ObvqEJR1BQ+wTjZ}b93*8fL97h+um
zr-h}?V+8t3A_}}zk2lyQ^_{CY12jrA#(EwmWJ3G_-+WcOW5I~(?9J*`+v<OjFT)O4
z=*N;=R4c6o?jo(Hr6j+yPs?#>k8lzaD7VjDaDT>iPmmR#{RgI47cOlpfkVE$#^rq_
zF)$ep%p3Fd0^lPeJ`bZKopW{$AJ=-jMS;Lai4=5l)$x??y5m;2^#9gjdt&@I_O7I1
zw}Z!vIgOfG!o7H_+BacIo2DL*TelBbkByWJ+`Eeo%Q>u4QYIsosoPO^SvWl;&GJ<$
zY2Jl&>!eJ-DejWC5B>CPw(U==pkAT@TYO9}<LXOg)6fr8Sj_il*CR*<TbpnkrA5>Q
z%PQS}8ROndS>6=X>AlK12pM8KVkfl=?&M`1185EhBi9w~y{db%BXu+r#ET&Z5Pdyo
zhb$p`Sfiyw1i5R;FRf;(y474+kdTGiX=p(A$dNQUSDb6|F8lz;XB1YyXgGHN0k=d2
zsBtIMI-_h@GOrD-*2%u;)l<>!pDk9T)r!7cwP?6Vo>wIeTNSGazZn<&Fe`&33L}ue
zLvhaKTDRg~X^OXXR4Cn<x{_|Dp!dpqffpUkHA(El8sBK!vV@lce*tR(6q^3D{h)z6
z0SnbFJ;FaNvW=bMO=!|KSz{fzR|{`+h1`3yRx~*ol1zS3`z(bh-QTx6eGj97$+FT=
z<+||`YO?8NQU+xFW`H`eoi~{5^1afBDD$8CHPjUr>Xi>l>>+e<&B|T?#Bubc1%v|X
zk9qWj@Qq^#H%5jFgIGiiGqdpf&j<0Tl5bLgV@ropLJv@1`}5@6;*-lUHV5(e1m4}v
zRt>mbeaDr<eq&xtIpEZ&1o)cr*;nH{`5VuH3QX!hXnbd*F>+dM3l{UxFJs5vHJu*T
z;x$vI6qd`@aZ<6@T-wtbsdDsuE%wQHUj{jtLoh3+siEC)Ikj*IuEYC|_S|u3FL{Nb
z^e9lRvBcylA)v|+r-dP*s{hz@{b2qoJC=M-+AU|@X&~Y-zt}Y!SOWfnKz*)dUWJr#
zZI9FL#M<UCzNx;gts9tKj|fM<njbQIiyS_E31V-fQh<bF_}BjigkZ-38f+GB<F%Z#
z4k?`h?7shF5mXnrZFM>Oc`VD1r^g-HJkm~lcUqbX!!(Fa*{$OlvA(L!GTE3Rl;p`w
zmoiM~poSfN2XGyp<;H<Gl_AO(O=eRdMTY3x0!9e(p>jzhh)HH2KAF#sV6EH@VVKrU
zlyhw!FYZVl#CB_rRO!T}Z=eubJMg5FM3rl+x@lUhG?T#_?so1c(So4w^Qg2&2%mzS
zp|7xg#X%my!wPI5i*D(O`xP~>nYhDQz8CPV*sJdcQz9*$bvQ|RRW?nrki!dU&NiwT
z=uSbzsIn5BwY7RKT>3)#j3)xeog1S%G?I--cA#r#i)*GA!A4ZGk?6e9yzlEwnJNud
z$#Q@AU4f!xEUo;);cf%p{M7`JEKGr&M<yPuBeBpV50c4*hEB*E*bzg0zC}q1)BT=P
zjvt^X>pURFUoLq`y9Q3<(Xh;yCpR>RE;L7Sw;IaYCG<|4@5WWtP9=Qc0JUtjiwpWd
zhQrO<f4vq|Sf`S>;Tmg$fb7+vD;AK8a{}FhcB3HNoaHoi$#^$yI>NZae__^j5$<b?
zrfs4-D%y(H5CU&Yq=v38Z=*aLlWP&pD$4i6s<WFo!Cjv)4jq2HS-HR>hnN4*_j79y
zX*(G4^rGEpt4Y1}78}g<dNElbv+Ru)fh(fTx~2hA+<leS!oT6mBGo^uM`6v{MA9}k
zD=NcDpYfp~0!;%9^;WDswuH~HM`Ean&6d!rM!p`Fa?YksyD=~+bCy#LK99cVnwGER
zYHt2{!k+NXKka1kM;!UQGJ?%o%}+G7j_OHSQER$81<7&5H(<bFkj+qIexcS~cR$pH
zt0LJ%oU1Bz`mmx-sVP^a2LZbTe0=;ru}ajmz6(;NSB~CT*;QCl#lz>|1CCL|D_7Rl
z$8nInsl4YXEUT`l$yRn=OKXk&!&AH7YTMlk&FngzS!4~0E$UrU7vI5I1%M`ma3;ag
zJya@!0*Im-JLiLecdyQFPRx&#j9K7NUnz4Rg-bTc%NFLyXedICc%k>-B!|7>X~p7S
z8I|W2nGtKt-o*Z}VMn5VDTq9$LdYh9bD3|sdPpgxUic$OZ<<NNHB`9lXUz&{@9=%r
zT>ryR@cy$n*Q^(@wajm8JqZWIz&^7aGO=pOr6)R}g}%!|_mOP-Qaiz8Rv}<lre5q>
zEG7+U6<(3Q67D+ZcY2FtwdT<N=ble1X8~@>hN8rHCr>5;#436UQ|YT=Q^%A<Zu$hu
zudNOV_JS?E$e=m-e9UA|!K9YA6-IVvwu%j#wZ9Jwo85HQI#qGZLa$l>lzog;?q?h9
zrNL!bBE^I0f9>EGCmk;rQbalpuckBg7r-*dBbpc<7XlWwWtyyFc?(aTXv2w_Ik_g!
z*(;q!eco7Lyv`ILj$b9>+||Hen0U3R#<unpT%Xs;!b$W3p3ADrX7>5(3Bo%a;;Y}%
zkgv+I?>Mgx7c*(F7?LlkaGZepjQfk*ybG5&;ZdkDD<L1AF5+bU*S8OeJmM?mr2F{v
z=9nmEe`YM(EN%pGmW9LEZQFkl_m+bF<)K`^7V@6{bm8KgD-n%$iP`V1KOKh~8oj-B
zHtQxJ#60lj4ZV#M2?J9^?IL%$KYXhKZLelupPM|cBD6EDGj!;Iw{zGix*2MkYgW$K
z&Q*#2TIY7{nMs9eCYFb3=}w6;kIKEqZ6`?yHAEg<v@%!<@02f<OFw>qGUIDNfEvtj
z1%BOK5Q7CpIVnT~2~xZ*5uiq`1kr}xk<gjGs<`Z3h;9sIw>-O9MR=oyn$*Qk0!rHc
zcr7h=YCjqwW@YOV;1$|f5%>1Ya<#lQ*3-pNw1{6G!YMJ)lcpR{7xv1sS?T8_MnP}i
zZf(B71N``sejT@W<&{gF<9g}>)2C<o3%GnZqVOp+qE$v;gTsnTa?&c?Kec>fOyDRg
zMh>q?F&@!MNG?HOdNYl!`F7PKpQ)tKzKk~GLkR%kH*EfY)z@xv*Ehwr5L6q`)cr{4
zblIBx`WM-FcB(oqdr3mXoK8!s%g18<B*w%h&aZeYE-gRmC&L!`W)u@KgJrS5K5YmW
zg~Mq=Nu!*2oGi|ey&$Q<){?!T{g~0BxQI0!7txz@(EvwdG|@_7G+}h;#oT;>UwSCn
z4O|hDkxOc_YKd3&pyhNz>9*Vsqa=mcFLr)6_)(v#)^B0W-dhEl^EBFVslAD=?478Z
zFZsmz7KAI}3WTHIXQq_qjq{e{O2j|g0n5VbTzk|8zJ^hGR2xN1dn$ZsFxzGVi6Hn7
zg@shB8vU{wRQ{kwh+OLk$LMCoe%50`IGSgRpM-A|!9>-;T3PcQu8t_9Eus|f)W;ui
z?jGL0<zAhUWXXZnFg2AO!q7A~q^HF4LS<^<+X&FhO#Spedib2vE5<(1r30Vfx~k^q
zDu;<S_yc!@m;|4>KJ}Um%=pm?FTt+pa6|P_X;)!IX<EY{x1(~rBHyCE=8m5r$^;gq
zNm+_}2ligYtNBJQV%Ih5G;6Vcw7Wg!*bX*AQ8?Po)2wWbwZ*g%S4DE$mCH=)$C^{c
za#w8g<_{0IVtOzfC403-ZILjd5_<|4k8$ZG-TbM^Hz%-nS5kMk&d1I-HJ=SPmB@tQ
zV8Xw4sV8sP^CPx|h#?`^Q$h!*=3IBG_n*I*C0$!9&gKoQn`2Eis(%O`!sU6J)k(Z4
zZ{xnyGo9Q-a69}+8xgTb^)wfuoTi_@P$+6f=Sf9PN0wSfSIGqKO=p-=e7sQF-WTM#
zGH3(E`jK`zJHBecmC{sZ)Owql`?EsyD^~Ei^&op`X~_gotLAJ%0K|prMDjk;{$i>W
z#a2SKj8L_HZt$zNZ~upgJT5vLQ$M|g*bcS06}1%oth8gfyh4=XecmbfVXidBomE$<
ze_=ps6j@u&Vl$j_x|41OG=1$OZW+5kaN4<4#nZ7!YuGI#c2a6n&&Xp`AW)S|iMCbJ
zaG&*i@f7<E?Vr)F_<=2eFa%w471gZ08V#uquUx@zWUUOYUKvpFISdNZ{Wkq@-*Kw|
zci3$;wrom6aYzXvPkvH|T|P@Y2n7?*h+pkJw`~B{fNUwgR|?0bG%|)`JpZMxlH-jR
zj8r_0HK~M?YI8PKi6Cd&_KY*{_{-F@O7s28qDT5J=$Q`DNL@&*x#*7;?T@gM_&$rZ
z#0$?jr2$ClNM?Jlbj%;2Z^a5c45Bs1BxUs#-u;8j(!Sp!m~i;HC8}7>IaEF#Fa?n-
zQNM1bQCg_{_{fA~8tSkps76S;)2P~EXt;1_5&k}{1QU<27?XV(K0%e$d5iK5hos8J
zaev2XNhw;AX*f;~{u<}Pt+>5I*Ph>io|QCJ0`g0QGPGyMO?L4l<g3R^@|cGu_gT#7
z?WaweM<{MX3(AMdu}f!LP<~uV5<qNgm_grDLa9+>fj72f`gBMoI>9W#Y}a&Fn|J!4
z*oXO1wpXh(Pekrjx$~%%>A5T1BOR6Ggv<pDYlR#10P`BR2D(QNvzHDBgcxoL5<*YM
zVW#E`yzUuv!1+c=BZ8r(U2QkT`Olg@(V!noQ9&Y;-6&;73HI{w83Rb%<OX4Nopak!
zID4+1D&FpvsirJIb3|YhIRTIXH6X(n+0<}Iyts^R@FqkGQ3`k#`#p@QbEOFK-D^5;
zAQK|%?3opat#kgeE)Bi4`_FW=5km>wUQ(QW?<C+hwvht&yoZnKn6`VrGH~^b02GIs
z=Aq1a7K@|svzAjZJ1GppD9GK8)eaxSxogqW%uvqSHA{Z(d!)+Fj4hv&F}w-D1`OQe
z;p;;k8a1W3uIWR8^Hg)=^th5TVogq0>u;`ByOL^@GefiaR(b*i^PL`ZEekE{jwKeb
zT8BN|0$U`)3e?+>!uSZrhgL-DI$xMh^Xz>YU}@A8ERzf^-C0_a_>69$jfe{^i#wm!
zmrS;`k3h;f+c~KEVZ4@&9jd97a@<_fgK4kL)kT&Y<|05eGP=KNn;z)3v!2V$7Y&L?
zE~8P^A)3IYE3(jDD~dJnq-UlI{A6U~fxx2EP^IF~ReIicc$;PE%$Y0&BcF%qDDC;y
zA}E8&sM!u<Enwzd`}_D?Gax=U{@IF*8p0`NW#QSlyy>i=IT>@cMAN2|LnJp9eJp`%
zvAf$(zNO~Tm+h2;v|PY`9aFdC|JjM-Ripl{h3iZ(i=2T)@(Y2eEHt@aWKz2WRA#1y
zlY||H;7uv;$C@eeJ>|<%IZyFeevOHS9r<zd9~N+Ksw`DVrGOjP<3J{xnWltuKI2nu
zvr}R*G*%@`C?5Kf0w+Y!Iq>vlFTm+rwvxk!hgomireZe<Fsbsx5M}}ji^CC*(^A=(
zx=K?apREGinme&)Vbng-Uug_zEMCeB#?Qp$DB~9&>-)DVS?2Y54#J%j=;yiQA@A2>
z%pP6~7=A3yWKNYL<1&_XrYxSm=h`LSnqhqY7fei?55H=CcR+o7E|*Rj`#f}_X4DcO
z&lIxT;%l^oF)tu?#w}g*?yg?bE%b;=U%2MkIoKf;zcU776s7;iN;o#XT$|4KzN9PN
z1XZ=v`ZAVrHx2W%3#vbR6yzb*I}S2zLT?fFAf1Y3r@4PDBD*rWM!>yI-Wr3<|DbiN
zSY{Bv4k?qx3Gxh9cBX+Sp)eSNc&&;^%716QFSAxGj^5~9mZX5E7@Uys;oK!-IHj`K
zgAI@S(>xw$$hI>Xu<y*Z`9xj(Q<aDjF;OXg2sr^vcIDdr(RaF2^%d3%<|H6tgWytw
z_VMq;$2do_>+x`d^JrvjRX?fAwJZ=+fLw5-Kw$i7wT=#2Vh7mwrN6T-%c1?v)c0?x
zX25dIjw`&R|ISh7^=(bx(tR$Lk$HajL@X|_aBOwC>EuZw_Rx>n{3KQOq4`MT&5UD<
zoy{6Me`d#;hp!#ktsB;ANV6y}5g!o#o1F?ttr)$K++hwsmguvoEVqo~lACzoT8C-1
zt(}b<bu1;Gs5+2{ma83)yKfx_3>WA1k9%thxwpPmk{84c7_URdQbG{n^{sXJr8E2F
zV8AoyL87^Hv#o=<0r!!6HxcUIlBJntzr&E;`2@;of(np7l=xklK~fi40&Wzt)Lmz5
z>DAT7wfXkdWS;THz^98JFIR!ipEulXZ1hDE48UZz5#U5iq~1O-&i*2wtJ;}0_X0b6
zF8FCGoC%MU0OhEf7R!GCsDgS?z);U<%tMz(rM+!IFSb`&m9=>dJ%qZtr-lduwh%%^
z0s0y`$1!CCg$zF~TQmZ9-W8jhdWkv<%gNCh{rr&)SMlj$`*U9-JXZ^^nPl6nh*DQ0
z@Z)$47<n57jC|RbRAk>ZNFPL%773*X3^vj2kUV#TK#Aw{hGEE^;$AYoz_VJ3KSUfy
zODXCC<K{LjMrELSKhBreV@|aJ4VYw?p4shF-u{aoh30%b9$iV+ELu13v|2eJ6Fpz#
zxJoPEGq-o;8=PhB4DY{YVol+kWO*c$l=FWl*)Io?1=TX~((EJLyaPYy528y79SX*V
z;v`3#sniruPmfh3gy>_QG%ajrpFw=(D9&g^Df`hrqLI1vAGP#&wrdt#jRZ_;V!AYF
z10ZBU`RW?U0?Z~e$XW|b`J{ux>v<y^4eHyQAZ}?}>5@%KVBqXvbo&a0A*UL~^pYM9
zQ;WfuPuv)msZTtJ&SgI3M-L@}Vg|Fzk8(65h}Zxf|DqMR!Le=p1iJAp_0SFgJp{*1
zpKMak9zU(0`sKR`A}_S}T8)%5bK~7V&bb)5?_~R{+#j-ZLKvu|f@o!`+UB)gpDS3C
zbjQ}*{n4(75vOn6W%=*XZg8E^4{n=+aWow>Nl^|Nc<z#_0Oquc)ejB9(v-ic|7``O
zIwvl@n-16Zx#_#MVk>0PdC*TL1ufE`|LaoJNWDx?;g&9IZOPHBNWBtl8`@KIFI<&^
zqty@@IxX!I`b&Q->Z-IL_r&4)^owrHVGR2cOWI;WYql3=1BZo*W6E9dP%}>ryKg?l
z5K(bVHngQ7Ri^(X&=C}<_N}DdA+y<5g(ky=nj;IH-0N1#l8d_8Imw~WFZNB0$nIbl
zCvH3_N?R8VeMUJ5*HP~OwLdCfQiPi%fH7EjA%<_FPg0>Q=yg}zur~AJFUzL*zS$-T
z#jER6PKh&s{wLCKw{o`Be+%9~i_x%Y=&2YSY*k22CTdgsl>Z3Ybp3S$A$%$+|FH(@
z(M5eG3n%(-Q<hQd>~}90&u%+7@o^9u^_12Kr%uoR^3+1UAp)l){DIt-<()U+b-c4P
z<5Dv;iaxXL)Y4TM{>Hz^ZYWz*$%;@xto3|QAxqiA=J*GFSd@#n=_zn;5DF(eiIBp4
z?pF{<*5i55Bye8ir#7x!9&-6#qjRpBW##OR*Vhb8%~q00H<ik@mF8d8=oR9QsV!+a
zG208VV1Wwmk&!>M0A~lT3~aY^6FphBduuo62(f^HUQ>v8QxW>}hs*BL_dP80!J+UB
zb+%ll_<A=@71aBtG(Fm-9-`lxi064{Dt9fPvwWbV>lLQ=64Dr~Tc+wr#%*UV53QL6
z&q+YqarDb{G>=8!Y^&tU6Q#7+pWQfUS*yhk0%pf+*rJKb8etVq=D2XrR95rAY5fJ=
zYS*t6!>W<s-uuP(Hox^;J7n1?buQvA!izC@X4hoQ?+!MfUNndBwn(}r^B&Q$zu}F~
zsB%vK$p@D|P3V<L6Bzy`@2=?p{oU3t4H<UL8BRX+Se44Yxv-9B#LQ!1lS2csP<Wp6
z%u9HxtM$TE3M?)ay*q%j7nJcITq7>pSx--_NeD9w#MtB8iailufVa`RX|K(u#O_(G
zOp`Z^SWzyMZLmp|Cux@w5D?h(`a~)2#X#r2bn1*v1flmcip;KD3Q#|xzj<yzbc5B|
z3})PuzYoK$;b~w}#kHZIn?qQCJ+#)~%B@JQ>#O)OUhal8kYu*BPSH%y!(|(zZyLW;
ze24ZB>YU(5SN+HOm|W3n0q_|*{*n_s248gTjCUbv7KgcqFmjI|hYY$#MGQ7s^SOg?
zBUKZwX>=qTl?SzCZad;?fCw9r^LK3Nya%qB_K2~q-2@xgbNF^vE89)k;zu=^0V<cO
zu|v>e=5vrog^40ip44;J8}ZqGb&dNrF5@%jHV{bA3NE==_eVFjG}r!?T5dU+0n_Jz
zqqv3hvAmYK`*2y^;Szl%ZIhgnn^phWkxmO)Yuqx{0%B}WzOKcJf9mCoqmfEj=SUU}
z5!UPE_V90rWG#qQ2xA*ZfpSm$;366tq(5J8KlYDJxaDwtmI|0FBQ36IqWnpDL&Lo(
zJtP~13rd7PoHvhf@u@PWf{qrrO6ilO6jMvj1Dte)G=V#$v*shDt$6M&ayFp(m+8CD
z#vdjArhKCxw%TrZY0w(E<EPv@ppO5H8S`1y40}5&B_}HSWQx10n!bxm!K9>ObgZ&x
z*0V71Szxga;ca*^_-)G0z@_46L8Ph1hJW2-m*r4Cqq+QNw;ShEnM8y%q1<ANPxYFb
zR1ycc%~)?;M$!D(y-&xamd$j3pm^~h8aT74B*oIgf1<rHvIx>dqA?B3M4K}Bk#6cA
z%pb0QPGLW_Zdx+&Gg&BvR7=5>%I8|1U@+uBI7!Eqay>?a(?g2%yHQh=ZcSUth7f7x
zk7+q<71(Dh6wmeM%by}3<=n4B*sdUT>s$r0XWkk{6E>T5T?~^N2bo8|RzxW*ky0Uo
z=2-Fz#iVCps<|bk=P$!4LB+(5f|_%(LF6{}w;@N(MVXnI@}xo634luJCVZ#xOq%RL
zlx7~^hVh?+>r%s^Rq?&9usYfcWe<MZ4BVXbHS)Bo_@^=WBrn^K4*du~1as77(E`t*
zMG#r}5#t{~LG@l9IS`QBU$)O&SEuj!d)eBGEASsIjKh(W1b{s{iijRc8N~QVOg^-j
zS*|Fu+$;H+kS|7$2e!NGmKorC6=gRKFsYGyAYTt{1|JG9#-=*;Xjz<iBPDi#W-wX1
zxZI8u_ylUE<*vA{(x^$lu-tQB`*S(rf#F!h=dA#$J*|nG>9fKho0sjs4ejq9y0Xiy
zi*opFh-{vYs7jlRznav%d>D?@KgC}Tz$7H|-xDSsE&aJLiGyA6YV#WoW#}RrU91Wb
zZe2HRClA3HTal^;>pljis+*C{j~wk!M0x@q|F*TN;oz^$h9}Bf8(|d_${Db#`4W7d
zmiKLlaj^&(c@|ss4H1x6oa;%7J*MM*=qJ`$f<`Szeo+;LP3s5?CBjth<g;BMcxm8w
zVp>&z8G~U0)XiTUE16G^`gp%!dW!%S)~=qKakcYY2yKgU3zaoRjqjbUq+rp27&Hv~
z0_QIOpuiJvz=~)eQx=qQ;-RKk=ZAZ^6kY~%9({sfSW|0YCdP%(_>DAveYIa}^Keg?
zKvre2&tUm$<QF-&^4~7~?N1)bku@8-j-?QVhD|)+J%8Xw3lW!-FgzdCNM0K5W74CQ
z^TXw;Uv_Cdf)CU4r%$i2T0{pUU#X?}SJfx&_c;zB*eFcP%{C$!o=PQ(SYQPMSMni^
z18+he`m)noA0ZtTn}aw4v#(O3PQHvO#_1bT6WUdN%Ru~_9xPGKc@!3ES4!zn_{MjH
zizL1_Ib3>1@2oL(lo#Re+hT!eqxjb$oa&2Qzu)rl70G&^wvn`&ySTO8h|!9yqrN@S
zxZ!1K<QGnaO#SEXwwXWijzkqW1+@(K=h&DgYSMBZviVUoI1#WY=Ib?WzsDl>oAxqS
z<LL2o197Vr)AEo+@Ocm>X%g<IeYYz92dp0s*}&R$d|!L9o53bswS<ER@yUkW+)2QY
zLdm=&psJRE!4M|(r4S-w-=mF^KUl`0_&?6fp{!qMTAS9U_^W>uX0g-bo+Ua>f%T4G
z^@n{69#02QDLIDfl}pZsKw(ZjUGP$wuB3Oo9lNnuVhm$W^hO))qk$R6ZJE_=fr34p
zSZcjPNM=r(u}3Im5z#N3j((+Kpm6f3N`v8db5w{0XJ@*V>SHuBS}|z^t-cPWQvh+T
zAFqGWfwrj$t*kzO3jj`C`M`=-WH{`^P4W}>T;96j_x~oxw4tZ4FXPZ=(?REYF0B3l
zws4AXyUqShRg`A}X90g<{Jn8hCGZT<O_(&pum18*U&7OQv*s@C4}7brK#&ATPX5}`
z^+_CX66Yw$ZR$p;Gn}`l?H@KkhOv*SYC%`Dq1*pHJU(J*7u#_K_hUH}Su!uK6%aE-
zPb6cin&byj8PH+Q4Kfql>2)9L4TTyHuf_HxO>YtF+d*j)cssHEn2T}<%=dA6peY+Y
z83U`2YMPYc=d$8`y3{-7B}-&MXI(W<7awa>20@Dogs=43HLQl>XHnVIJP3lB{?l1*
zgI9EE{uyc%NytLQj2E?8qO|V}*d31Nm_PydI3!X7mGPoU;cTleV-p0w)jW%|tJS&1
zo@5;`Zo+vm9U8H4a~+(*KNR>`aqJH+kDJ{Q-|dA=wmg32CT;?EyY+|_7yYj+gmjzK
z*?G~8^tN@ws?$RzyQEgF+9mXN>Z%t*8tP)^6v!XZoOXm#&sXkj(sn6H1WM8juCtLs
zH@EBJWqP)QbCqCSZlIq^DWu}Z-~jvCHJ46J05N5{WE)ImezgZF1_*G?NuBFW-Zp$=
zZwUcX%C=Vq)%}Ce_fhOs#RlE^#-gfB{B}Ybn~?ygB;<3WvI>8XTK}T6X6@`<Id9pD
z?vh=3yY0@rxeBKUj55hiK=KV*Cjie+HLPq=)my~01dhKUV&5+EGdD*%Ym4`EYsC74
z#3g`svD;fI`1s2_aocAc_Dxrm>AixBn3lgAu9)rp{-ORhQ<Hh>9u+HR5keCn&L4KG
zUI}S=-_Y9#f6$C(M<-DC8?Xh_^1B564wUlh6YRa|!YkJ67i1%hHY=X}j}EKt6C0*T
z(mwM#qL!iE5*q;5UNgpR9flD4>MXbH##8v#^Nw4zv>{n48xrgBO&yXaDSv%xDyo-d
zYoV-&s-@$5cxC<KGk>N+DwDF-dA`pOAja8AU5Fo!LCA+v8#5oQxpnSIOvFLg{JMCF
z6D`M!_{1-6_1ROhg|+dd{4*w}qQ>^E4%sWwLv9O{#f10;&Mt<nbvjG3QP8JApF^b!
zOF6?y?m;GGJn@riMA)P&iD&>eoz-b{%A}FnlqJi9%Fe-odkjf-C^|z|@2u!~J`%Vc
zF4$@;*I1-s?GWfL_20NXYms3LRrDVl0iky|6uplyZbdTT1hnUIsk7seIvXSUiGFL}
z6S7qt6SF##G0RJh^*&6u@>9I4L)c#8+3KdgSzxY<XwBrP5ThKqV3W8a9lIUR7~4h+
z&(AJrcVwL_yG0h$4AH6g{p|H8JEuc6=VpSeDxZ7&X8IXdt+)WqkVHXJ`5ym;&aGd6
zFnUBeQ@&la`F@{gupHfxVT5`VimPc8H&S-%lKBwgWq6UVEv17C@C@XC$OS9403mtM
zoIQuB?;%fkOtD-YtEY4L@7Z}fSKI1?52u%o!tc1l-cu>AKQtI29VI`sz11Etv7EO^
zO<fe--5;lDxfixDX~XwxC(LlOmXj4VDLRffXMVqw*?9UD6cb){wJeqe()9U(x3B=L
z?j0%mAECpa;bW^uA%PcA;^`m`W9%9}fg<(5+q{E2T`O5rQ4R=<X2Zv@+g<O~0wW)p
z>jk{8v(}r`FzG1~DuW%}{n5BU@|5Mc0CGYsn-FnKob{V>-akgQ{mJIEDf-x?P#)<l
z4z$f?81X#+APaLx1cqZ6lQAreH{>+I!QuD(Fw8ptp0=^Bt5ik{vuPMf@rD?s;ID3q
z%w^m|Cgwr8p5e!$%>s4w5~~wqaDbg*pXicIxS4QIc|@8%-~?qkqWb;PE6a2TW6&)q
znQi&`+&n;a5X|dYz!s&ViHQAB#w!?wldq;k96pc}br<>Gm<ypubQ4sj*Wf2y^PG6A
z{73T_(FBdG#86J)^}yzx0VS&kF1H@}pXgdlcA-k^CuOR5sG{P3&oK0%*Py{>Ux>_N
zr>VZZT6bI*Hw<88@l$!FyWViXFL6~iC>XjW1kSTnIIzUVJ4$MjJa_(e9!~`gSMc;F
z?7ljYgu?kx7@?~~9N8Z&6{Sa*_lv=Up@sY+3a44(6Gxb~{&Vz6BtK78`Dk^%Lj{e%
zrj)|BzwVuD;(0U*baXs;4Xm5a=gU!A9d5WWDo~2#Ei2Zkbs8{_B^|n*Uj?Ke^>!Ik
z4?UnTEc@_>?Zm{1C+1fveYcnk=nxHA9XV=9M@dhx2f&*RJyn^@nJmCHU#?ivh`wRl
zRrF#gFbN#*v9WhdJk{DN>dUxPW`J;MYG&<4zC%FF3EevRC2@1v97J-1RMZ}l^K}mL
zb+vhLDP$sSW>2n=&gi$)@TWS*T(@9Mu!3aE+<26E*1mOVwuMZ}X6OXie^CwXGpCAx
zqV6-v3E^wm$b{Tksef3$sVv#MqQ2x%B^I)WG6lU0@OGjn&1|tD&$Ict)M_kMwxqSB
z<~LdDmL>RB`G5{e-dWKFcwXwmr7ZN2yv0dW1w$GrY#_ZSIyUo-RgNi*xx*P%+?km=
ziWS#hbB5*4u0$w9Qa>zm{iyS?)LTtYk%xhLX7y(2cbI4Fs}7@?Q_cvcr%6DboII)}
z-jggzScr%F^Kxh~c_m@x&R9F{=N}B_s>Et$9EX?(=*o?kN-XwU%>i3)MF;^^`0(N9
z>Ws8b<LCUqCe|$KZ<E}%-=CxaG35B>p5{9x2|D~mx9g%k+kr5k1CsPKVVMyv3v-iQ
zb>tB)e}||Wer~z@Xl^zsV+q1L`Ve@1!9Rud;tMGB0M-VIAW`=RqDPr_6O5;!^AEnc
z9sc#TIZ0!B+Zh+ilWS5Zj6%LjhJ|efF8BY<1NN?rEjs!{Ych)Hh*xaaJSe!Wz|lIx
zhCmX)@0aOw1T%WGxee$gN4g)xs0Gv&+#Ew#qF;B^InNKmWU)oLt<w@cNkZQ1`*MDK
zU$t~lYZV)88@LdQ308csTcfw%Gu}08ERpz3j~tP%EDRumtEDxiv!J9c!L)?PGq;x@
z^^(lzCKPh4Lf6EL6pB$Gg@u{5V6GqPk)76Zu-!>}SlYg=0Y(+1ctB~_#y1@fvyijV
zP_Y}|YtMnzsIH(PkJAiTE&h{0C@V$T$6P(9@1t(MJ44Y~*Xh!_({o^$bo7Caq~F!g
zO?in<zj8tsl9ev^wgp~j_L|}4;rwz_m)QIL&^=g7Zg@byAtIyN)$wtSHg$<<Oh%c~
z(nD$8>1#(KPaA{Y{7}6-;dc7EN+y|=MVV1g#AoLVNx1(c9)5zEdg!pgoma(ALqUiy
zc0H%6%p!6CBYg^*xZRa=u$R&xnEch6LYv5DQKhm?IJo~I%=b<{bw-WjK<>YF!ryaU
zHP+eElsZ7#S=Wpx4Nf-8*xtoWR2t0>2_i6mo6U6Q%;oN81Ank{9_DAvNvIwqaRUh_
z=37Gg1gq;ESu+v3K|w`{2;KQFbD$2fjXn~sFrT$UFFV~QGjU-6g%Xej%@5<L`t@5E
zPtbL9u3AgQVRTR%Aa5eZ{3PS$4w?rqp`2-BY=kp9$nu$nO*izuo0{Xg%kh=CtHCA`
z6j2)SC%De!oMn`Jg)i*=4t(upNJG8Jx=fyYb9yKBe(HJ85ebW~7G%*0SeSd^s<LA6
zxnFrloCo<(I%@=6K)gPD!d)+ZwVH_BXWQSE<)Oow^M#wh%SsY+jh_07+Hb{dBzI9c
z(vW$yEQsN}scDC`U{K4VNVe?e=Yca{4)S)Iml4l%aH&sf4!v=WbA{t^mrw#DZzQ_y
zF+5xB-db%Z1xkN4CRmDOaYbVk90(QZw?lpa$1oNV$@Kg>Njq%O3MWjCA<QZFKjj6@
z=BYeCodeex-7(D2i)vkjOk2%Y8;Oi%PyBj}|DY4%1&qGgA7=Id&knCI^vgL*$q)4A
zS_04J5JpoE@8xi{vD{?4s-{Rm<OZwA=}sv>IvaWu_?8M^p$X%kqZSO7e^Cr5XNH4l
zijMqX?g|^<L;qM<<?=)kj9etxWGz!>TtKs=4aMkvQt7LNs=gmH)Si9sG()3{MDYuz
zEmomwvz`7fUEZ#?y&Sso4!W3I(_KA=ntf_M2yR<g?AWAHafJ1Vm5jD)uB+as3ny#s
za|Gr|rIGv!@<z(vE8Hv<m){#1GU&}#>ZxgQOSm0C>kzaOz4vyRZkdw7jSg>rv0hRp
z-hU7XX>-QBXuJQmp{+kJGdRb%hXB`R%&7L>{&RNQW>BdQX1pU(j!eZdVc;yk6%h6W
z#pCms&lyX`+yy*ek3ayOCh=mGDfik^$jX5kp$`s<-dcz!h5xLk%j^)sq}l^;m(N2R
z@h@NlF}hlD7=fzRllUbLS=6k@+scih^J9#D;eA*%_6bcELL5A9f8s!wQQ32T246*f
zN0Ph$Hx#W4*_gDzvIen`05@^Mi|{Y7vD7^rX{2+*bOUn(h0q!+uXsG?C|E4ZIU-B7
zjbL8Z!2GU=@*}zjeKUpH%#!fhT<M#TLFQx|D0Cc*`5vvEv&1bH@rT#f8DsW?#`DjW
zD=5HE!m8b2;u9|){Z~gH5O0rAN$;TBEPzlFZ@VvHgTV%8Wcay;&xI+TSmXC&nXCoi
zZ_p}&-t1KPHW8{=F}un)v`gO^eD^m#^bthXYeQ|X#ElxGN{y9GE2AzVA|cz%Ipkcp
zax6WfLXlW9sMA!nxl3o4*C><-<WX_5gnB@#RYpP-&sr*s?qzj$5i0T@s^^mn2gf)V
znLK))Gq;?(SQ{O`B7~CXNBzjP5ro^Yt?D+n5F2f{#opUO;_npJ{>aUb5V#Fu)JVm-
zlg$ya(G$#!+X=KnoD_^%q0-dcloBxrW3xK%yWB2D+5ko%Bf$Nj?#ENk7x+3DVOBh+
zb|wCv-T(Y>iKhNnpM5|EtH3$rG#Y04o6YO;!}5`z&1<<GSeH!gYgy{wdcGBjh8*LF
zCSYYhV*8(Ujmh)4FjV#{IK;%ais~+$xI=0f#tJ-XY1}L`X)ri*(*dQuTUufXI(2G7
zKSsK{8{P8Ofg7%0mreWHtKS}P=$6}pZ&<U?)q_eG+6vJ3;IsMa4}g7y#eQzqzDsD#
z7qpg1p+6QQ8zMw#E0OZhMkw*K9`40#doBvu)@U9SNA2SRPrl~30R90x21tk_ud#CG
z*=L(D51wI1g5l_w6L2J#qF1I`uUBi3my}V(idjt&X5gK2+5~k{$+!JwRA<S}?<-Up
zN8pj?rSP*PzUmDcbmj5TJ$*C1r(a2bH^n<a*OC@&`f+&S_dsW)R52uUYun&j;~sUH
z`<{%<@`+QL|Mu~J$@YzQ${}=1sTw}ee<3RPX(lFZ<Ppe)*qoV5ODW3oA&PCODcN_p
z*?C~C5}l!Ks1nNkacQzztmmftXk2m|&!oPce3&RfL^rQ>yc0ej0H@nU3G9QnmzYfy
z7K%PeiLJXv`Jpn2hg4Qzp7Bt#7{+2L+4AW}*xsTsxIb%extD&}r$FC?>VV7(kxUX_
zl_ixgiz+r$|Bs}rU}&>zmVGHwiW8)GaR}~KpcHo}I0T9Ycc-|!ySux)TXA=HZ*jTl
zcmF}2?AbXxvvYPWe}#1{mKaQg<$WsB#Ct3G8|h3YHF_y5xgWIa@2CeMH^rL<>lbQl
z18$8O1^_j08zGrAre$fmyA!%+51LL_3$yJi>MXO^n_i;22-Qfgs$==tB^4*(ldV(k
zC$|em+lkrvZs909FA`_z#DAvU{>RDwz|!ihi_AS}Ne7}O6(Bl)lm;x6QiEgSQmH$+
z2pR?Q1w@mH4#v|^j4O9u6oxz)f<AN7n0KO%%}CrWkVRV|xP4HTh_y!Sna}(zut72&
z+4Bov6ecw^a4<^af^Ikkt2G#D3e}j(%2;eF5n7Y<pWX#0tDi{GVHjrR7uC2I+Nm-E
z*czM-nSOT(A;;|@Xk*7eP#Dy5UJORsyb4lWW}vj!Fz;+{5{Wem%Z43=YNBw24}6w(
z3mWD%&ZR)Dwu8gOUECZGCgKJU23a#XbiLQ?X8wxnMW6%yj6Pt>u@P7?Ej{a~|Jki}
zce^sp&qI{-|1kT!Xn#rOhdV=C(3ONEkhlr{*glofqP>JTb4O{rSy>T$&V=X3Jp^C#
z)BPi}dd6iiSK4KJA{SiqE8~6qg1~xf5JBFue3rrEwRRFwyU}c$CTa_}{#b=T<(_JW
z+4&GqAgmEDKcielR5HXou;Yvvi%32Kv5*SEwFDvl-%n83`Y->vM8C56rXqcJvL%ll
zJcI0Vk4bwAGUHqW8TT#J56VwFAYHhLaC?a?Ey1W#6S6lA5Neds2OUYCq85nTe#2Ak
zozH^>nT8V_au85)o>E7Fw7|ZXB0R0OD#zuzjaVI450VlZBHlf5#GtKfkHG+c`_N0p
zTfZ<A@#&ZTWuX^Dq}?T3f9^qRn%@ti-=Cq~oDofY>zz6=tU#O<p{My7`tTW9!3x9L
zsXzvuceJmyHoED|X=+ga^DiF{N@X8D4f@v2KuQ3|^2mN--0hEi(F)7@ocD=4^(XZ6
z&4Q=Xv2*{TTRc8Yrym;9U+=b6;XdmXH-m3LYrOyZEO>;GMFot1<gCKJmB3%rl$k&N
zUW6?Q?5eWg4h68SnlV;N3^yQwoYtOHq;7N(HJi=yT;<DAAb50)XOjbRe@-YE{m~&L
zYlN7FGBtJ*2ppCTZyk2B-N1?t^5t3$8+1!kZ*#?gL@|!OyXJ~g78ONX^IVpm@e?Qd
ze?Umn{t-@0wY8)LFEEy=?UGhjLQIselx?O!MZPLRC-2($s|jbj$8bxmQKjzk`I3qy
zio_`9gu2GGy%Eo!z)&&W6iF>Z<tTu52y1}WcJSUrWy{m5A+_HU{=pU>*TG3BC?f$n
z1|!`XNzELg6{b%*-5}jq+eI!J&nuKOPZ&pxdDicEql$;?cS!5$Z7;?jw)LUGYoeY=
z8NmU$X+=q|ey;sPd+n+hxS@I9!O7yzZPip!|2^EWBW61<@t<a>k2aT^dLo;(3M%mF
zYha*7t@=m1npC*YMtSQjn;7XcV}mtD+?3icbu(*+ZmdQqule+>G-X9Um@1k}9we@f
zlR}U3UMtUH_MmfypiC<eklzJbs46gWvCUeQLr)S#q+M-?JW}w*D{49|3G5ACnJH`F
zu9{UgVI!^v){>2!+|T^cj4Kz}?kx&1tH)vNztta?RJ)6~*@2r@E<i66<qe3r?WfPH
z)NH1;u<R@B66lZ5vQzUwn_m#+R>&=TW$sWEz1{`Nl)&-NZv9Vi_dl0|6@zxwlHvjE
z(ty<10>tHFbuo((d~7C^9n*fEJ<sq%+5Shc8Omf!FFBeg$E=^bidH_MG|gEVY74$X
zrpyO^>!9U&GH*3Ci59JU**RvS4R=YR=uT!B>QUk}YCoN=+LBXjyXo&FMISw%5&R&`
z8-4M3pnQV;=K4mta2!s*9YHTK`V@fn>?ksqQ$7!i8(Nu`&|}Xxd?Iyk=KG<$vG+hc
z9OhS*``8QuLmdmSS)e_C^4Uw$s>M>U((7vj_GhQD2zz#dh<DQPO};H4_6$AmZUo^&
z%Y}CdDb_vCnS-VV(okyH`np~N`l4yZb)@%SAugXWEgXm$Z0-K-RJbhmdF9Aa$p<}}
zcnTg$sAg+~Vwpbr)^u^Jv4m);!MDACl1kA#5i@exdPSIHaWzV8tpl=i{3rLkbu)N&
z8j_hVGUT;ZPt_MD^CI}fpI#)iT%2?K$MlkEP<tL(12glYU^3Q3En?>MP)2ukG9wXU
zZARgg$9Fy3D-#Mxd2Y_%DvDC1Kc*@`hd8fNyI6?mU~oCMxq_((J+^xzSBU^F9?4+r
z`HfxLC~+H0!MRoyUDY}sluR|m1uNDw{^oxW_x_*k^~^6a&--|){$6#XWX0<nHTH%i
zb^=}EZf(W<+j@gahevpA7h;njJhKSc*L^C#kG{+(OgceY&i#iwzspI#WmJ5H!VT>7
zuy_J377bg|y804<sPDo`XgbaFTM_4PD%6P6Q=`<al6rZU(wKt@mdfhjgdf&hYujyp
zwp92Y-#o=XP_KlHAs^!73Ni}PN!(kJIp~R$uV*(-9YhdqV-9$b3?&nF7F4_{z~3Mo
zf8N{=oUl<0yXed=p`_Fb=#anfbZq*rs4xWJ#Lj)y(yClAk0@`RQ8)rDdoVa0Xy1zx
z$Os;9y7$w@h|BZlhK}NE7G$7n9m%H{qwwXZC<i2$q7KAz=<LXVoqY#VO(}?<Y4zZt
zaq@;~7EjS7gDJ5PguZI(`SehrrsTLTiZ&FB*VlE9S%OrS?<Qv00tWt3IZybH=W6s6
zxxJUc(-2->CzOfsOsYt`d}ILwGEWJ&P7vu5F1IM>YgA~AwUNm!@~CK|JVwyi-<lyN
zDs$eZ>ub2E#e^}Qyi8u;Uy8!Jxc}UqmgoE=(h2vl6$Gy8`(O70?0*cl^6$Mik%Skk
z*|pX;`?1y+kxeff3_tv2#4KJ`QltZ7S-YEW;x`X#?`y%pV8T2=F!e_zoQ#~$8W8g(
zC1|<&vnd}MpjfClfnxCWGUX=A)o%=#;Mvdr@|}fE4#&;fQj`gs)<1L2U2j0e<Ff<4
zm~wK{&YI<!>B<#Q*A<wz<3V=dA@S*Mwy5Puu*V9HwgrFMg|L?}FS}{rzX6kSS84L8
z^rg>A>DPY{2(v$(ymuS5JX8@C`o+y?IR%x;*&iuki7d<@zdUyeRB2mT_aMhcD@v-a
zmHEv2<lzu3uf))|Mdl@&_UA`%G}Z070h;j`;YC%pIe|YFcPrM2{qp0zWZ9j+dnKXU
zGEnHm893_ndshTQ$BX5wfuNlD0jn8Lt{HX9?h=<DI<f%QvO;NWu80PVen^I}VY7S3
z=ioj0HPcOt4NJPPVz)yxd!E?Ekvr2Q^|?O*patLLQlHSG-nvQXBk~yY;wF}cfNuDX
zh*VR*njg1SC}Q+I&oMHNq%56|?N4i_$QMkeGYMGBM}FdKMYX`e`$;o-=^eTwy;+5S
z+F=%g>ZtxY*78Ll_ggGDQcy9q+Ds+h+-c>LOH#y0E3^H)w&w@?fIjT;dG!ri+Gu6O
zy8K8JXR_mZ#{ZBJWfZe*w1^|if1MLeHJL6IV^{|q@8xk*I&f(6%~qlI1mJ1*a7k9!
zr0%@v2jy3oH|9`Hsi_sahY;+mpP}*MbfKa!QQT^(u|wS;8zsmf6D7#upj@)(an6Ii
zAyv*8P^SRpx2!!G30GB6Ci#KIZ2{g3P5@lf#l?j+z>4uS^cU1C;vGGVKu|KE;?9-G
zYu-AWcp!jTCt2g|#X2r00d?^(5`YxFE2v~y+C?Zvq$^yupKjJB?=G>S9oDQ*$#~n^
zVe{Bw&^p=%t+)}6O_2$*8nsFx!;xE$?trd#Mkt>NDTM4&=r|v|WeTm?6}9j2VIGr<
zY+(zW`+!Ud+_p->c6&d{?HMS}ECzMuQl@4_B9p~i*@`s#RIN(|JGKeW^qKV}{I}{?
z$7u8$8?h!)2LQ{crWzbwW)u}&CMM_Je1wrpiH@O&0|+znS94e#<M@ZaUHB9x4diy`
z=lPb-&WThGr!)RHVxqC`JhnP3@`?ARte}r-L$jNotH!a-=J!nQByIaEMTh6h!%dRb
z;eE<|jUwG7^H8c87rJ>G`pS(R3wepw`3Wpwf-D})7;MNgBSNtSlD!{3g?rdUvZM_b
z2rPHRfFhhXpky8>_^2V*DhT87;kOurXxi}_NLC4Qx|75WIT~kX`1$A)w3T|ICklEs
z_9IRGqprBH?ZWx$poERn@5sj;tMlO&W+DX2#JEP``vZ5Ep!NpFtR$&*S5%{l@8;dV
zWAwXAgMqGm+t=f7;*9_|$@hhw8DL6rLxuEU-7Y@W#OkP5B7KPZr6vFydqnYwR{Wn`
ziGGdQT_d44U!dvh8iA<)+}H}Ld;5s&O`nS}{p=tzZ`0-`n}m5~LBNEj?o90$Xj5XI
z?yB^lc||t3w@gAseXdbGnh09tovvePxY8mt5@4}8Lhz&@;bW<O3~m)+(FgD;!xb~u
zi@aFfPIvRYZN$3avn{C8u@cR_U$P>ig}fjCDJ#8#eyp?^DRdgwm<d$KwJX=us;O6h
zb<BQ9=8?%Vmj1d=pv(aJ?JwRXw8ZM@FoSk8ve)xZfuBY2j4TlkJ_`;%QNmTPW;@(r
z*o(q_-t~d|%%sXMq<C9%gSb(~Q_@6ef)MF(Pe9fGrR}*jRd2~gEq#r9s6Z)}dETVe
z<cV^8>O5*^{|(%J6G0}0CYQWj&Jgj7!WBjAG=S|zG7sB`#i-x=RQ)qwzZZxK^h#&A
z)REy=b_&+)LF&S#(j&c<TZ%CjuQfZ7&5k;G`ej;ihH^#r1Ckfcq4?YMbo3xG@A|fb
zDc?xx^gvZaRW+mfGE~u$dQMwUY)++0!U#p{kb}f$mAnNixoFbf=KY#7;HSg+XRCtO
zu*Gs!P@b?nbTZ$<nEjf^8%T*Yf03woo^f#o%^VA-OA(RmiZgBq`IJB26(|W0onUQw
z8o*}9AU~csa5HI4xwJc2CaRW2f^o5toBTBq(Td=ShFf}$kU|!;N?PP{SMw9%ruC}o
zCtPWuI68H4ZQjYP1E{=v#gxFmsn9q6%gXSt`g}R(j+Z=s8~be-)B$VnXkymOOh?`b
zA5WE!C`!Ji!x=zp)G@1naN@va|5r0X9BX|37bm-x(op-R8TPm8Ya1oATpZ)zl$F<j
z6Ie@8)c(>RB(10*BCki$@&t4ZJg?ThFYkrDpLHyQ`YT_?VLZHvm^*u2Da6J?aNVwc
zyKrx#Hu+)|?XIpRnJ^jz--S0Q#s96f<-*Y!kIJ2^CL+ACxLmZOe@5k5xc1<D5s9ZI
zwA7K_@T8~rA>V*`(gqrz^dcv#gGRAkFy;}P3Nos_&E|TXdW|*u9ygLyA9v!X!Ii<h
zw-jwhH<<%=8m!c9C{VO`hqIAiSbtcYansf4zq;4he`&2FCv7_^CvX9WIZO~ap6JiM
zsLvXl`;l0b%ELbglyK(Iktc1Q%Vx@%)L)r_a~l}W`<3PCISU3h1hF((S0#VWt2#}|
zqXFv5(U$BK8YFGb>jw@ENOYBgQ7YZ`B4C%n#!AEUYpo-796ljmsI4SjKAIt;BVub*
zSMO$0iTn@4P#5$6WHd4F(|onPuap8j$;C@|Ov~NyNda<~1qRX#9oe<is^{1VD$9#I
zfEVJ?{aiHnjHueFEjuUvb)~#H2ZMdU`~4vRMwBLWfF)X0?A_=JJk=j5yJN+_u(r7x
zmizN=)a&xZWcyFSfEpYGi!Ak?&}suwbU1Z5$sF?r542G71W5nlPeakTbpoG-<P(WN
zs#%TAyx*gt<V9tVzQb+@6i(D`=_s6n3wHD`ZG8$(#nv&+N1=ZBg9aH(%h01Qb14Bu
zoC6+eSsqAAeKC+egS()D=x<lbu2+LGAE}eM3#KT1$%odfKj0`<_(7ye^s(<13H+<i
zo@6nC7aelWB>&5h?T@|r=s%}dKDljVUriBOa-WYP^BI9~IhPR$viF-(o?$Hn9|w?{
z2<{mPTPe+n8kLpyIZMdEP@@N0|8*ctRWKK1L_#oq%21vx_Oxzbm~trPJnQNCq@Ir6
z3Bo9h@l&^=y7kef|IRttz((UcpSiNkbe%l?2;$ZG<SBfYh<MC>GcfqCf%R6o9#*?)
zJMmA$4B240bT4;kg#<l9Rl;T-s{nh^NI}UK+Qck8k*@H&8C!X1(Tz2MBPPoJH9Fm`
zosD3$mgX{<4isD47C(<TmR}xo050SSSL~U6#7`{PR8>Vs^DHB6*4(MdMCKx1kO<4W
zp#E!2Eu)13NN(`kiJF1oe+;ZMi0wyZOW&!gqXhne4cxJHs_t{3JK^CxqTk-^Pl8z-
z1ZB~dTHzT>M|v<B)`oYxDrBZb8_JeB&|56a@BMf&SD*}r4>Q{E%JD$rCYzx3tN3X@
zMhE(uK{T7R70)aQon`rRik!sYl3(l?th9_+5Q<zlPi%BtHP#R&AsG;XZ1bzru!hie
zw+IU9T?lK|AhF}=Q-F>m*fqBLZv>|ti5L-AR>Fnh<H*9fhmLPRQu~#PJ)fRbsxDc1
z@cBNF8B6b$MUGQ$W95TjZaD+J*|VjF7PooKf>rZ%g%M5Nx^#f*RbumSNEi!J&7Z9U
z6dnm44ryyTJ(q28BMnk>H6P5<_2Q`95_B1pl)FCD=xOg|+d20k&BF)xkmrb8TJ%Cz
z(jA1qC;$9u)<HHevUfdWk%Zov`MXiTzSM$UdFu(Dmtc1(fZBv{7jY^B-j!}DitD1Z
zQtHTr8gRpc+kXBJfdQZK)Y$wR>QYgbHbaoKG^6<$(Z=V>Z<&4T&xP<>red{G8rt_Z
z4cJfHnqHMV<zgO+%Q^Z#h}-(AU@AXrrySLnKV@HY*GG}O=+gh%x83)!ubeX!f+G?2
z>co!R95mVX$JfO);9lB2ztzwFX#25eqsw==cd>Mhbzh^Uuk#qU$8k3@C&c28lpg1R
zgAy<RK2|DAGE;;gyi3_i>Bh6&ip><h>3OWl+5YMaMK;Lf*meuvt*EC&=ga-}h+U&j
zr(B7e_d$-aatYVChWWmJPd@Hn#Qp<+!Ahm+3v<U@@k&SPnEf63)Q*H2S13?w_}FAn
z+87{@l3Hfk@o~42)*QDo9BMv^fMqD-7aF^pl_LUm5Y+zH$g1*q-R@vO&)k%&b&{8t
z-OC+!l1P2sOI`n2<x&Dtge3)S@GAw+_{3+=o8UOn+wX=%t+;j6YvE#ah=%C;n7#{Y
z2x$GQpoiwKn+SFu=%fL)yVlftsWyVm?BKp)?n2`+)njut(R6|t<34A^^N-18<kV90
zYf1dYyrh|FPUL%1dA{v^{8CGED&FMHt;#&V4EtS6uobwMG6)2}t%lCF+(r;ZlzuD2
zozT(B-xvv<MN47tw6o4G;r5VundX!kpC&Lp97UcMg<4Yv2fms%P3UCB9LPCs$lTjv
zPBXZ34R%(GpW*7&>^wNn$$ul9G_BsI>=(0ID`ZD{Js5agOyCef06$N(JJ<I_T$BQ7
ze);ucAfn9IF=L~W1?dscC)!|*X3jD*AYqM)wareg<En}5IIWnl%Vyu(wD+zRK`kk#
zWPY`7K&jcAv>bIiu19vk%JA>i>I8Iz-*@BK7v;qW3~F?P8RBUUilIt1T6fg#bSo$F
zU2D)5i{eOedj8N<d?==x(HpOkX0zvs>Ie5CWMp>|mWhD#CNx{W{BjA?Mm36W8MId?
zixCuMV&r;FY7Z2jaW{x(ci`LRUZ1)|2NW32CP~V<VYcV`hT1JZAlE4cH#n`Ne_a}g
z{kUX;g|X?BnmX7gXPJ=QF0!yN6ZuS$vL}uqqIa$M3J<jP`sw;b)GTGYkL>$D;i&UJ
zA<gmdD<g5N=<?lvt17wez_L&bEKem;`R~$hqO;H)g_S^;AyGJ`?4z=Y?EJz9ft-zD
zjy?0E@lSnzL|NiOEax5Wa3F3%LD~hiKR-m#bYh4n6JRfwPo8!3{rK+9Mf**xV2=>A
zgT1E+g3FNd@as{E=C9%^h#11NBOjms-1hp`A8&|1Cm9EO2|I6xAL;s{MGk-7@JOfW
z8$zvn;!?M`q*6CB6o=6D6PvUOVpuH6MuvT2q%Y^`x5{Zybo)N$eeeaIntddS`zO0g
ze#->9Oa1$4bNTLLcxFim{Yw};tn+QFI#F7N8s4Qe`IqQM2Mko-z`Uu%pEZ>&`-GFk
zqxIXPw3dXzgL1)bC`lagjeuNN`q$iF4z$N0HY|uRG}K9-F9P?(v=i!Af6-OMkJ}2o
z+^%f!Obe62LjOiD)=F&nCaZV8c0l1I-Ra`Y+<Nn*1XZpB{mxLM+S22L)n4m!hIXs!
zkh&wb<9ykVp!1*+ACRiT%ek;{pE2Kk2_0ppehV%R<gIo@f#>=#qK7+(U9QQjQktzh
zw8_4#qUucMCxB$2s|l?)Zb!weY-N;a0i}4S^hd?!Rp&uosc&FMW~GpmJ|9JesQ42A
z;n%;85lCd&htRtXTD6y?VHO~ASW{|zz5G4nZ&a63Km9x(T`?U#g1;4$|B?bMFju$i
z*>TwbISrJwuPS~((-tBSfQYzpPor-y6d0sTrEomj%j+h7PbYD*(mu^jG(HljtX&P*
zls4GuI`Dtz6+&|VL(6>D7Jza@7d})CVatXsY9S7X>Px^EOm9pX4C5!K<VVTKu`j1y
zewd&6z87s1g!1pW)%iMHQW2CH%v%jN9kfOnLH#ieLQ47N%TFtTqaS9ynMS7%p?;a4
zhv(@_)WomXAQ)Q2K8qX#qxs&7u)5{0@(qTq{PJKpARV?_$56T~I~{Uj%{FV<EO$$&
zi5|Y4F3(Q9lQ4HdX*uagt`ZL)7)q0eS+s>1c49j+ucOIVDk!o8hl_0tY^P%nBH(l&
zZ0+w)icrnMr~6eX9?3&@Sp{6ZIZ?=+Zf>cRCB$*@;;7hL&5<b8T}D>KYrp<1ZWz;M
zBQO11^REi-Le5{rcB$KssE1}?bEl;lYukjd0=}$01IhtO|JEvN3XN?=1AWGBc3ee%
zt~<<q@kmLuB)RlW0p2s;effgZ>V1nOryqIchD)`w|Iv4gb+NK^+P6Q93P>@Ue#zd?
zpx0<wfK)sHKW=+ZnaV?HNDj=w6CEAdX?pu^6|JtOL}d3Ry=-!*G20{gss%>0Zb)Hp
zaZD<efNu-$d1-i6$~Or0FY2S#P?IbIp=e|ekZ&d1i$nV@#5P_fWF(3vaxb8~K!JMz
zXTpy}n7rMNmW$n`Qct<U=3E2JIquGZ+<Y^Q%r)xBq@e*;zE=%&+a>_RYVpmy!s2Q@
z`0dMZ*u3iJhgz#8#};4&seK;Y7?cm0lpxFoY-=0Rhi*I|8q;{xt)XczSX}O^=bl~J
zc%iqky~eA5qN=6hLwoPIRT_eYnrj@{7k=INCe4&mwcAk?#u~&idT7T#^wTF|2`Y=J
zSmyIkrta_*&_n5^3N@B&0rtHWeb%OEdrCQ^R<na5JM)tH<4&8}=T<e5O>mmv6LC&<
z_7uSb<Eqe8JCNU*-x|XK_it>gseab8QY?`<!)ytJ>G1Y+0a?_+W5p=1lHZT7jT|2-
z?c|to?io(kRq+mDW*|vzvD=*f%dY0?TK&tNnZo>W0)x94H%s2u;5SNIIkFH>$5m>H
zWg{$RQRLWpO?&2I?Vzzr^<VExZJ7Iwwv^Bn8c8~<v6QEYE}L^k8dWCn{-)x&AC%;3
zUDK5;ji9s8zN5pYuJix7C^MpNZ<CT#Z4{EqG0j!oMj0DeS!Yga%@>NV+jvQnd+_`-
zEl$!UKr^HljbztQt@^?eNRB==ENN-vtfLHomnv>HeL=mkpGpcy_dH&v8pClbeeOf+
zFBr9(6m}>ny)k_D;=2v~WP+g>8dFx1)bM7bcNQ7;J>M6$A6&E+P)>$iS(0S#Ugr3x
z`ls*FqlL5uBSWWq&-y)EuI4M|(w@yX@KkQtK`hZFn`S^)&nBNO221R1(5?yt3>Rpv
zb?Q6D56m7546pwhGI2@Yh{*|w0wQ?i9wT1twfV;z?J+A$-2^84N~H0qNl+aV`P9}K
zd%X`sTd<t-m|}OG%gbvN&IU1a7X!+L;Q}JKYR*M`cE!uhJsSO;HMLZ72t?(A1B32W
zfPcI9y5Dpbs6&sGWNIvQjwWxgsWwp(bAHtHCeq;GS2FAbjZMjqIkB$@JRR+#g_N&#
zF-l}`>53lIE2S4$OmfwPe8a1Q?0a8O!>7=)&otP~w#9}2W?RxvVI=)J(*<BMPxsoC
zFA9m-#!hK{-xA|!Z?st&rPeDyOsVo|#--K~SrmMtSpDc)#CHtrWUMUuUA|QU-{(}$
z3wNBlmPnXMH=T9YV(x`zUUoNa=`TBkAgpxuC2M?~Q)tMUy<%?RB2aHR5_g?Ur<kY5
zfCL)WA?Kjc>!D$6t#6vb-wm#QmvZr~OfJs(bC$ijnfI1hHb5Mhv{!K0`<`=AJ(e@Q
zjQ7kHNkK>dX@x!1J?z;`3aT#YK$=VvvZIkpXl4zRoMu{*o_BeHy1<`iCq^>x?%i)l
z8R5B8N)-d{MvN$JnvP7Jw8PBpYkamW1HOlKm^Q<v3GP0oZ{E(S{fjF^yT19sV_!*j
zAD=#(Pcx*srT~(@IIeE`n3l-I+dc-G6y4~PROUJ+8)CYCr41up8~qvv&QeWok^ni=
zDzLIvv$TC_Z(`Q&rA4yy$OSGJPChpWKl@Je*8b>T(NKvAkZ7G}JU#fpZIzd`aK6lt
zDoGF#tQt4Vxp47EZoF|_k$$bjvAFd58`9O`<(SlzIEkl+^4Xm@##+a?pYgXM;$-%N
z${QUnq1@jxt}{Gu7r%Lu3)4qaP8f+D*?+SIC(W(N`cKTi*i8q5!o>RMSRCJN(ROEo
zYSgZ0?%)=3QElTYt<X^~sbjY!S9%EeKFuJ8f}c@3wo^9$%1L!cHfM0r!;Fm{epWR%
zW{H6_@`?d$1SBgo8I^x6IcN{!bsBQ6aUxlhPEe2HH!^0joW;L`W~S#iX4I83b8Ol6
zaq}4O1-WB7Ql@1LWPt*ze)k?@)bb)KiX4MBb2htu^%GkGQqW!Z;v<_KN6zRfIjB8?
z$i|>2$*7*?&FzMgVvIDQ?kF|;YCNs;>uMyBXp@emxe={~AU52ZRWqIhHw1mmS`|71
zdUqi^>(J|Nz#xNL6dXBt;7#6ivhBkXZH=}xZCIMpdTjGo)ay$m=XLL-f1VKsnnRSc
zm`GB1Fz_DO2o|>_Q3qfJEY#q|+hk#mj!il3MT3+&-E}aqPt0(#Pc^x{3@@`M8gLQ^
zclUI)QVb?K=3drX)1zwv_*v@C8hUUzrQJ^<NNM$fCW&O2Qy@I0Wv3extgzB`E7ttA
zs^o&@t&XO_lf0;Rg{zmix7!1LS$;0yc$a03d|MP?QONkF@cYOL)jBNMs!sVzUYj+q
z{lwOV4b}(C1B!|H1t%?`84CC{mchTfnI(Lct2XM<mk0?d^YgRU_jVu5K2#B1=@xt<
z<TZ29qEw8%=Ofj5u(o}6=k?SY31CcM%;VELM@$HfPe-@TX-lKm20hnvty&&`#SwCp
z(znR^F^Ze8z^vgcfiVva-5)SEZdIu&!JGX07IYuRIc4yNt28A*?h1EVMo-%cr<H@T
zFoZnS&O7~C19wjfom!G!;wZ&vauJeixq$#Nm&RSzso`TxxMId4EEk>iLWR=`*^&;g
zNbi?#+7$oMO~=i6cUoQCW`>9pBo?rY`g->+Q{|?TzQl;k<xGSP*sk+zoJnmh0pLp3
zyeIer*0htt=XSj5lyKh8DEB|!_JH3~+?N9)u^n;^bG(Ziu_Nbli?wGCS<)bul7QTo
zEjhA7O-j6e{tPv{ABzVf;VFuAJfsC2YsK|}7ReTe<q{L=ntZmB!&-j9ChH32Xm^V<
z3+j2QSSth!|ITg~m7Im<KnqMqfwj4#;{g*A`EO}%)>|_{x)p36#W-1un`KG~Y1`SG
zOO1vsOLjk7I7trNF`%Fky&gN`)~tbv0c{q}a}i=oLtbf9WY4Pkc;@+SHMg!7+iAVu
zo|EIQaX~`RJQ>hxT_I!VYCqF`{;jUcUHBu$<J$uj73jh<j;?^wHUXq+#T<GRZ}$#d
zxPV7QKg9+#hliLj+>`(B>Z20U?Hu25)eQk95X~vDxirbis!w;QUmqF;{`SF?+F9r1
zAiWa+FsV8)N#B2wT2%xPIEhpa=Z<c?ppV7Ms<hi63QN+PcDX+4m(@rbC2}}56RcYK
zcA{5Oh=cF%7mr2U#Ei895@1;N%WpPsJWag6f&E&LZ(Ad<pIi?Lny2wthM%}@nucO{
zG`(7N;2%G6?bL-V^h+{7c;lr9j56D#nmcZv0_}2p*XsAI9(8*;FOm5>rVW><mWyFM
zrSu6AyHe5`vlVs-OU7@%UD0n7-F=Jd*An0ywo~mgrKAp5GTiKvx9g1vNWYTNdvT6k
zs1B%6Rl5-1nGi4;pRkid*Q1XxVED+_tHnRH7m$^Mj*0!-T@g&;`Jy32cIrUqUvNyt
z`Ck4@BcP%zxO{$Gsx@87zKu0UXM3Iv8*huOU5llhhjMq@1)D>jl|;3&FUdU`3&^Zn
z!kWgy&t<@ir*<A;-++s2Q11vbcznCA`8jz9x_^R7BsF}nGy`0XqC>MozRL>2O=hPe
zB+lv-+;<n<;xr=6HOKrP(Gvloe!Mw0&K$TRiV_JRY#wdA@~nY;Pn#MiF3&pXg~|7e
z79R8tE{GC%a<SNYJyIQ3Mfy~1b=Aq9EO>fN$&rJ-F5O9myjn=r{t0`TV$`W&Q`Exc
z4Y8$G)ig8ZxTE~YoZRk99i$UB#mES^j(%+jhhtiiTDyZ@@@;uNnTSIKGzlT=2}#TS
zy}3OU$?`o}H5v_sJO0^QmwDvG$0JQ(1rGkBm`buG2rRJCpS7&9Jucm$2g3mD;t*7p
zJG<5Iwp(YMl;f|~SEa$*6|`C#Owh?)BBCOKW=x>7#2F`aZ~4(h(Vbg5W9fIh(x#;<
zPY-Uz9$t~yffOW87HWE+>eh;wTrfdt)k9;=-CHiB0nz4IZ|aa^CAUg!9y+#qBc_)W
zItCYGeX-36#laVSDD+&*`XFe-I^-o}@P94T_Gv$`GH5;+8SRi`HMNt{Jj;5-Jl%>!
zjz-&%%<Pv<<|1+D?u=5C3SH7haR@H`aExwE9H`-Tf<7FWX^~7i?H?d*b$-NkoAQkj
z4fa14jU#iS>OG3@Bcw)~6<pFvwbyOvHCBYmxQLYm0hswiRUYf>?wuF7Jfvkrmt>-C
zyOPkTVKI{4(Kjw!^s`q==#g`Ujd5zsJs;&o33T>LvhK%>xrM(64&s}HwDz<$>|6?`
zaM+sn=6jm|aIY(Qz4m<>e;Hq3lng`3Iv)r;6#oiR={-F2XW01UvdJUKqh6!2P}-rf
z@Cd(MYG^<oF8s$n;r@yY(}R08G(B?k6-a;bt!$fj@Keamx_5BjFNDv+*I&DK5&2c$
z!O7sI;jHWQQLyQ=_mkfjAd}4k>y||n2RG7t+vm<#)KQuOkEF4oj~dM(a`|>hxuVJJ
znz*YN0|peOQ;44{N`2JEJ7nlv7INSU>y>#$ayd0>x~9|_sKZ&2x>1A!YM)tN8tUU=
zXK>9W6}bN*&>LD@|I|?^FNsR6hkv&{&R>!TDw4t%nY?F0FExQy@yLBLwlMgx?kOuB
zgEqm@kg70dHZ5X9Cmoj(i7Ta#3v@VU7JZ@$lk3uRBPx#_ev)lmlp$Gwg9-5`Rk7aY
z80x@9pT=x!b*;})r$hY2i}Mwu7cQyQDmHe)K$mZx<HGw-USa%><#XOu5xxT25d30x
z-wCU8-tDc2%&O-UqB4qIQgc&-+}M)cIM9#8aD7!vYmTM-$QngNlU&?b^_#%JKWY*G
zuyggHxOR@eYNv;{#!;h+pna9@jfNv<M|RoISWg+SvPI#TLxvH}aPQar$Db)8t77Sj
zo~<j(S*X$`^dLOv?R*1fHMIF}e>+E)AGc?lx1MdOxNUQ<SSR21XG)7)0|l0Bv9x~o
z`lf_Y_M~|0-vg88-_L}EzP)8fY+O6^YSL{IRg<FBRuCi|?X_gdc3>rtSQ@MeCEVL=
zyai$EE?&FD$*f}qRP_<!_U_wE8#ph;5xjbTIQ+p-qj42$cTm7IChgVN!}=qS`S)_+
znHFP&fjxY!E>LVCx*%X(8Bqa$%A@GDe1p>#q6j7$FwmoKYbA=L&d9d8Sf*W{;-MF%
zu%ND8?gzuNK93C@AI$3L$UPX7&-2(bMJ$eDjj3@+;=eSbV?mnhAtjOZYY;)YwJOHS
zvt(X1A;!NLGUfL!mw8co0LlX`Nha=Fzk2p8iK|ZR{3EjywyfEs^86*lFtg(VDmvcw
zbavU(*UWVUHPNcGQ-Srh5&hs5D_`yWu!-bkSFs<qwNF9m<*8HEcFrQ8cNcqH-4$l*
zJT-Y`YugC1zc~fIR;g>rz&?X2%W^9n3ZSZ2x2i{6`Cmo6;W01@0bZ_!>V}5&6Xvvo
z{V77)Fd}3bS(3msxsrc1<TCNoN7>t063EPeS+tfV!T%B#D@&OaR0EOJEhT7=I!D=P
zIE#daJB0(>=O`)rWx0SV-+XA#hB2LT)jVnEVxW6^W<xVSQ>&WDF2RstuOO9eAu_~g
z0;%$Cd9PHIrM-yp&f2P!wD9ZciH&H>(hO1vq&d>Ii<oYiuRW{RgX_L7DRfpe<Jd^3
z@pU0S!1<$2&}aS4&{T_D7>@q+$Jn*2!%d{Vs65%11DZ86yuC7Jam2q_Y4N&$`?CIS
z?hXfJVPG9#V%@byB1CX6jj<9|?3N_$0HF)imQk?>$sdQFeu1w<@JfXAASozWxD;$E
z>I+=je@wn2Wd!m|+?NNq>@^JWUBsJIX;hAu<fz{%ar{};GMbE3{Hcqe2|^Mc!Bp-&
zMa13t41k$ck~0;4<%LLoO)&@viSSO+b|!cIQUu$!>}D=GrOohmrR?1v36NIw=AZHb
zHxgA~*C8?7v{4@X144WQXYSwWA}$KL7BRZf%n>52$e74R579f!Eo=J3Yer%juCImb
zH8K?2Id_g-hn)c<8msCY@^jC9&!<2BGninj%h|@p&(+=`pes4nWkO|1tz>+eIkz2F
z>T$I549ZQ`jF)HLTsNgsOREbFp6^au(L-(9<!Kkx^;pkyzr@n^#K1nV>&=@1#&X)2
zC9+pvz(-}a!`<sttV*4t3ztLQ*zkk?(O+k{#|R{k`cS=vy_KJ$x}~c>bE21&u8Wia
zjjZ9hbN)iBbN(bMmNiTGHEl_%4Jqsi$I`1XL~ZzX0bDjnK~C$|N<KKSP+?-~q$ci@
z9mj3mg6jvg^dp5~#WRA1P8vi>D(;eOX4?t#X=xOp$K6;v?L5uxNjdEu-8VN)jFqsb
z?2+OR+bS+0OjTPden$S@sVwUCAxMJjJ6PecXHT|Boee8AgmjcDm`Q!29Y5Pp5tZES
zV@dxL0%cd2^fDXH;fUv!E<uvoc1aq9#EcZmWL3h=D>azHjo^+OrE9yie6->d&tg<l
zI^+piOHNU5bFnAsfmmr5PQza&fCK>s41VK{=(Q#$5NF9plZ|}*!areq{x0L<GOunL
zuxiVQf@ucJuDw}C3B)$ic)!d?64ps@bxUoFy2p$6)UpwaV?RJ1Cf4emhoG2`0AEPE
zgC$GDk_A`>ABZR!Ntm>Uj@$c+EUU%4oqlCYA>^h7>-XmK-r9*qv!vVIGmNAPkwfS?
zr&}kBSUK8x0lTLN)WYLUT-59;X2&s13%BFq_o0Z`UegUc3OVwqq$;bB4@gq>N=9<?
z(Ub~t4GXr*HqOCSs(2<GhT<%btwlShUbv6bH{BSLcNbAKH?XMjw26o(j&By{0w^-a
zT8F8q7+no`1`AM9^WqIpAXeb79dh;?IGwrlvm)+Lm0(~qpuIkHF=oAhuaIibeCXUi
z)Nv~O{J*n1CdVWOvC8s$CP~TcI4aMEtxq9ccp4u=4p{2_-cEeRAb`K5)LLf`gCmeT
zwMnECutg|Iz<7FmnQEnm3==(B*o`%dR~L3O&RxZSj}f>4uGbW$fG$`2SkY*nans%&
zzQH0d4HU~=KY{?0|M)hUS9xt~^i3fOyWI05a=Ws=Rzu(;SLDtM_WTPU4jy0^svsph
z;T8r`?E^vJPzc6KNm(t9z~sk2>f(5~{ENqG==s!))kLsClCtq3jXz84D7<8)g=WMc
ze98vB@e7JbVZgPoIiejaOJCzea$^BIg}9u`EYHrg%JeTiiLTO27<xJC)&y<Ri%1$E
zf5!UWmW+aR3Y(-p2Wfms+aXPV)D)6Ck{&3GdPchwlY`#n+EGYvIm^~|+qy-V*zz2F
zFx7z)#NCTV>i9DB$u$|#Ei%fJd%%IaD^}`n=Gz4m5KQ}tuS6R2Inb5teRSi-ak4Ld
zI=%Q*EHcSQbcCFmfo?bb<<yC1Wsoh*H@)Z-cz@s~iTD{82b%Tok>_1ADm739-e45A
z;R$0$sK>ftqxojOl^cT5Q}MR6a}P@hmbHmc$J#hEif4vWL%5VZ66zX^aV@2v?2eNS
z>oF9i-bTN6*>V|G0ez#&^$`XzC~HXR-srpDFJNIb5n*NpIC3f!Vv>!O&eeX1&M8}D
ztStZZ{86b5*^>eauF&k6V>d2q6Ut*NhMq5HG?H-3oy85-c776MFKReZ@OAK&<S8GY
z8A3HfBZ0%uPG?@7_$Gx+z28-7Xfe*>;^m|Kh``huYY?@O>8dvkq@tx<8sF*6Mr-==
z(|d93$uC&zlBce5YS8F=GfvG|=a#0-Lh3u->(};j)nqit!>TEfp?H>{+xV7dvfzlO
zHgauZjC6kHUGsm36{`?Pc}YjA78#=xOaM4|XSqHVSR<=E_1WD#WjBt3T4r?=u}^!?
zABhS2tSd4VJpkYt2AHJZppY+3u|EC5Bvc+AD#l?O>qLXYcmj^<Zh_0<mfgOa3gHSC
z5Z9{b!)f$U%-U&>5}@~6aMyi8qdQx;b0tZq!F41q<mdx!hs4nEg#8JDFS4NfNcZi)
z*~E+tmp1;mvwKRLjppl&ATk*dzMe;5AjsbqDyUmuj7#FTqFRz%f$g~-S-XhjNm5N5
zRT0%c{n*b3z1IHz#=wLpYtC#@rKMwOWr|4|d+zhKL6#Tk!XjySF(Zc!pm#4NR~)SB
zjLR8IVOy-BYOL46^oM~Hfz4YwcXKcyEpfBU@98KHt%moW-OeaOKeD6LhL`qDdshZ3
zFAs|YIkv}}c2W76Ily7&RfeMXZgrbzrT*b#iACN*m6~g{bsptWp%-^&@!8BcCE32y
zt;r%8ORSKSf>h^vSO2z#(vz6z{}_Jsqj?W*ep?VYJ$%>#adLVdrE?*-Os)Zcl=%|Q
zcQY?>xm&%>3ti|w8!DZ3_>Uh_UtlXhnnMe%LP>po(|ZGQ1Ew*5uHsS2u>NOQIY*Z6
zuJOR_q3Zin+aP+NdQyaEy1|;&m9nKIo^zw0K?K~dFxq$)PrTLDczoL^wI<#)6M=O5
z*8~y<)Q+)i4vzY1W$S_SUMVZ>?o^PP-pF%5e%GrE($LI7J?|FNW*=?jl_hQM$b(nF
zgp~nSRTODdpN*rPLDi@r{RVyMy%U*ErBz%f?JVAr4VQ}81ovy5A&m)|Xjo%fE?{x2
zGLyvR7xj!5MRKv$jfMLdMrbapxf?Kb-P9eV%uZcNF;|k@GgsDs)uR_EZ+822RX$v|
zE?IT3l~*1aBgLn_HZ?@Kzg-FDYcYlc#%)#D?b*@gfMPhFDszei9$N`MY1OAs!QSxB
zu09Iam8#u)?4E+A7cO#Y8ro`&jJYaeq>=02SK;iTFrFn|!zb4+6HTYJGppgwSm6-a
zg(G+TGmfL?5AZ!c)rJTvgak{kno~rzu2@`Urd}I6q8rhj{L%*BB|1cF_YMlQY_}X>
zzW2-NDSEy0jm>v6l*M~G;I=zJ_T%m-tHIj4=UuUc0o&tav9+^SItVzL#c7<429OJD
z(5GCRa1<`aBA5Av^0K|oDh`-g?;qyK<CtHJ_deoaH$y0FGlCpNP93o)JCI+~vE0{=
z^p?}oGjF!~e<uF5-q+>W=r5MJ|C8EK#+<9QEyomwF7JukpFsQ$6x=c;8j6tKEECej
z88zTH1%H#f`pt?7JAR_g-d0;&JGLCe*|{`^h@n^@Ojt=q_adGj{KFT&ew4X+orD9o
zj3d<Xz_J{=>u*7Qoz1kLa=k|vv?NXv;Zx+I_NZ;yyXG|F69igPAm<EZ{)PnkA-QzV
zil$VTkJ;8&1CvJvsHU4zJHK|U7Y}MNM&BL?XfEWcYpDh%+YJsbicTRPVUP{MaZ)c%
zEq1KxsB?C5x;2KyVS9Nwy$+P3tco{z%Gu<KrE`03pHqbJ709HoJwNH)JEC3o2vEE8
zfL&d(FwX|}Xg*#nJW@mMwd(83=4acP$^ie$@~*GdeYq5#;m{SyZ2Q<dstuS`Kt8Mj
ztE&wbjvNzO75e+j*-;};qmad%6)PpYcD@DpOUJ#?Usb5X37=jyyP4wC#z7%)o7#}8
zic&-qYzHMBxfvl~@M@4#hw9eMY2d}Nund09kaJvYcr)GBC+Ne<E_uGLbpV?Q#-8R~
z@j#S|m;t<c=kd(DpwD*DHAdW1ZL;g}Rb9@)Em^<1W)Liz!R6K1l#s=VFsYI1_k~}c
zd+ISy$<q3vVsQxJFDef7d~0vgW@BHI*aMFGnClo%TzD<XRC`?jTH8NdPS%^_?QOfp
zReiGd{JEzee8||)8L0m-(4faIT!obADRb3~A^L*Ew1Y|Kixarqi3aeiRuv8?6f7Hm
z-Una@R@C#v?5b^9`m#1uqR%7EoRcI(=0pj2fw0>Al0yY$J)KOO+!?R7kVFiP9RK!&
z+z#J*>{!B(r{qjkBHzMiKK5w`5Cu3NTDBXBust+JrkVt{etfA^yrc(qd5i2jxB0jX
zZ2clhx3G0?%lz9{$$5CVPo`Eh`^!ZQAlTLF*R5rCcF3*ow0bUe3cLR2AT8-=6zB<F
z_&OmB;2cpqM7QvYqAtKBmP3h^QH@S2Nmm#pX&L>zVG|`B=2LHcZgnf?TpjasV{vY>
zLMG~8z~2qxpYM56WNG(C1z4W=KI)0+))rXIqipE$3}ww{9y=F6OEJ2foiZ|d4VAQ;
ze2_t3P29=}q2Q8cDY;!hWg2t>RgvzP#ji``Z>V%>_eRiHZM=;?nlTNX7|%%`VQupi
zC7pH*1n;mD!aX;gnKJ~wAl%KKuT7p%l#yoA3-)aqhApy{ck=n?VH>wOCeyhZqfA2|
zuBj&P>UpE22drjDiv2SBV_m?gEivOG{-G$gN@2O3Enp;KHJX`H0)YtU^MGcfPz~zP
zY^{NPj+)vn&^@!v9^?bZ<72`5Eg{1OkkZ<d?)rPW^t)g~G$2<e|JV=<VrXU&u)<h|
z><1vIuJrmFklg1iTvHu#7i-sD&iqoCAsS%f#ZNgPheTYU&N}?mrv3Z`Jxy0KA)d3h
z<M%tgcS78R$6(yiL;{WA^0AB^g$Pj0Hifd96{xs+g!-(0DWut&Xbs~&BjvBA5n6lS
zG^>Ap@wmk^6M^odEnqHCVD8*Jx$JsSDC%{Kxb5#9p8N7-2pr-c>4Ze)mcW^<%9#A$
zq)la7nBQg^*}ieKY?n~t&Kz7#EUDCpo29_C;nzJ+7ZLWfC9gR;|1!&R66OJCv~jS>
z4ZJ}+vmTOtx{N3Nu1g`Q8~=*!8b$HSgF!$Ts?v4X*wZL6OetPF+M<pUK&;V$DIvAm
z*Q)$0E|}je$3XuM<;Re_ti@7qPT0>_RfB$~;rXCZx#H+DQLTQnA!7|DnPz+&wVs8|
z<u3F}u{4Td;%Ir1_6mm@nBao_-Pa|>Ono)BOMr1eV0PHls%PNlCV@dz)W9tjkV@`G
z$*=BT`xV|h3+ovt(Y8_XEK*J-8Uf>@MsfF=^zIIemOHWw7UPAwww*g08O%~1Z|FRQ
zdNaP3ud~E9P3OK^+{Y4_#Tp56KL>~xc$9q7uD6FZeBvi7rXnRZVFejol*5^fUcxVy
z?9vs78M)SA3}R$IoUt?BP!3J;iO}Rgbiwx#s)gJiSpx8mo`ecNg7KPxcOkdTh3kZ?
zP)6E?xhIu+{)O`z-hLcyVbJ+9)~<Jh3Mp!1bkhGcz+`F<i|kwl@l8gqhYxaG)QiwY
z_c7nELj^W`prc8NB6_YL1%FxZNcvAmw(o>>t4Eu+@tOtTCkj{g8qstji8W*CicKDT
zlTfLJGhuC_O`Ntj^tM?|u-`QjDj`-D&1g+%yBeQq|D0yN(vZX6RLE-qUpU(FV^VC7
z+S^1~At?XAI6r`wxM9$%$6`Xc$*F0SEtn`&VW8iyOwa#*dPoo8xc7P1n@!-|9^I98
zu4q;0`(bL2JJLWF%ml1g%^c5yGN6$;ZRUq){FcT_;M_nUL$a~noNp!NvP{wx3*UCi
z-#1OW;F(@j4Z+6ednSLn)$j;GgasF&#@WO(GEA9HAIpFZq`Gz7%=zS===j>cR}<YN
zk{9i*AYKx4!TSHg5MHkOkGuN8-v4<c%Z7y!4HEaHahNZB$QvL})qb3qqqoyHq=ldi
z8;GeLmW7rz{$}9T9Qsml9?Gvo7P#ZexN#O!!S$RXndvK%gT6V~L^!l<=Q|LwSo2ta
z)gz}J-j2~QLWotm=igb8t`J@!(*4jHdSSKS3EN2Wd3$^O7nK^Do`JWE-c#trJgUW9
zPj0XFUPNq3wa#E46KRQIgX0U}-sb5mTc5zw!z@f3VqqJu0lI6R>fDSXGh_d@#|71a
zG{>mAxUUee?Quci?HA*m9^VH!Hfk20f;A$4l7QVynDy0H+vX_*uD`IFIz8H6%iOow
zv8orn)ys4nQPKbehL^G(TMl1i8Wb&5miE?Ap_;_#eBZdQU7;ywQALuXwXJZ^`VkYU
zZ4O>q))GrtX8RX_n)(wP8Q!o$F4~SUy8!2uWNpt8In&zlZn-!*;X-wv8p$@!=%!jH
z!LSMxcN-MW5LIL77eEaJ;giGjvVGlJIjsBF$8qkr+mni1E={U0(9~umpYwqDwK&Si
zssn(Srz52+f2EuBQys-C6?}LhkXb2RfAcxn%EHVBFsOp&W^4w1R`?Uhl>CDBSRFTE
zlh0j?U#;F(sxTjpP8Z^(1|`9a6T^9@Xl^{YtV<CGZBXBU?frVQcF+LXu!(M9CJ7&6
zDsy+9$j^Mvt|ZERUlCGkIp3aND95}&W^P*sZH!f2->WyIXXWrgJMaEa+VIP#z&DWz
zJHVgSrVS0uriEYShpyZpt>;S0JVnzOn_^v@9KfbFA{T<P7<MR!wph%*Zh52#3PZ)Z
z;<joweQ6@+pO0sz#xgQ)sc?}IJB5tY^|@YPK+!gnmU21UZL`>^1avJ~gpCpcJf^Vx
zs1Q+G^@1{qoX9H2n!g|{n&xAkyDeX!G$lxcn#uiZSyUGd>d-xhv5vvB3qTs}J7O<-
ztWp8)T7SU=Oxma71pTQi5!pPq%*TmO@~RzZMY(1vOEzFK%(o>Sxy1_`4;}w>Viv1R
z%h2;}Q6mZqGO3WbdBLWPateiRs&Q|dF#Jw|tsh8C17MSl5ScIesc-|6-^d6h34zo^
zt&6xLC%+~p`k{BuIU~6g)q`6eI-)Wej+F?UOvUB7-tc+XjU#n%$+iM23S$bN_Q0sa
zn2L|fTe=CliOzo4`sX<*6V5-YUcXPF%-YK^K1gmjA$I-xm|<922YKU^=gr29Zt6_g
zyf=cwL&Y>_hgDNUO)I=K@N-Ko4gu!7HbtW4ysvut!?GGVDF3Do6fosPRhFV1a4uUp
z<zC#UkB!7;E`$ow>AH+Fvr#w2oa>jJK8%7RoYGa%lE%0us1Cuo_<dPGnU|uT4E`8Q
zP#+T7k`-|ssjKs#5AvQwg5!_KfL-UfWnBwab$P7lgDLQQ91+Z!ZyueKMTA{N|0Kr0
z`RV@v^FR#0bB)$9j>m~^T!z^ewMBpavHUbtEGhPA@7v}RH4FdiFiQDNHa-f-S}P#y
zWf7vcyR%==9CZ6&sYHbfd#<d+yO@?&83t_`1?V)VIvqV}wJAe|$E`3Wj5JPbNP;*k
z+$_o}IpNw)PFOd^T8Gva%}KG7EPevJwV1?+GKY6GJE-HoZqyRAlt9}tU<4BrI+oRq
zYlt4m>f<kqVtXL8gs~b7<_3rGTk*ltIpH<EVdk+}U>}a}D#M_SyL(#f1qfPrsmWxu
zt=zFDo4A?vbguilFT-X7_VYzE=r!9|ota%Ge5&SVYQw7u8D8D2sw6J_!7lL)2`q%}
z^@Gzs%HLq7BF`vCk_KKmG2I@9ZhDKRb!ON{jMJCVO+ZQO4Oek_3w5bW4x5Qs`{QXw
zWF+$7x(hVn0D+h${(T2^%A#T^CsZcw8+FPpzpra&ZMC(#`5spMYDNryy}D`CA;VN3
zef04wgEFLF<bKw98Q5=};iFYNBENCFUDdW`lZBnKm2B;jnoyGTSzfxHn$WitDpIxm
zT>C^>Rl81_YN3%7<f_stwn47MS$)8W-+<MQEq6mCw<N-qRHHRqlVf#9c^=u!d`*5?
z9g!bw6;U6Z*AHFokrDF4P!Zg(RBX3bmwbg&FU2UbwTXL3;9ig?Ih#1mylk|IpRZw4
zgB6K7QO{+N<4DvN<1pJE%KZ@w&hKMHp=3NDxJp(Ya7B!_HREY-4&!Oppe@vYw2o(9
zik-fflrgckj(?O*0eTDL7ImAtY25@Kjl$T&KYd4c^1v>Jl}FZ)p1ZCdq#tZCCsIDi
zRG78OG<vMLyN~Q`!!ZIEm9_hVv~m{rx*~B=+CFnk>En{tkZ4inDfTd)nfj&VgjT~c
zt4y)j6W&gA$$Qw{fPozXpzPhArScfGFYL<xH1k(M)@A(Qru#{$u_iR_A?{cb<?gt_
z99tR4i$_-SAV;`9`uOgksWsb*$<@n@9@zI*udq1Z4Ht?!Wu-x;DXvNvh)2or!NEhV
z@UD4aayb-=s|Y$5r1z5&=H<SkNZs*u$2)XUSz|S82I)uxKGpfN;Z?(7cpVHE!4KxS
zHS`;<CB9hbu`g|j%Dq^rU-hcmzq3@(q11j?-yp}+hcKN+-c5^joX7@Hr2e}Klu6*9
zm;^<##O4JmsyeI`g3a5CDvu#qNZ}86cMz19gg9f$tIA|`w69J<eM~N)FQgsX(F*fr
zKWSm`pgC<wTz&M>$1jdL=V~5U`&=o*sI?$hNnF~wHc?LYP$5^dds#5PgyK!DlXiwt
z-BJ^>MsisR6)hM4HRvgBA@|d#KeN`)7P&ey$LWPtmcw<7>bKZs?~d;)?tv%89J4d~
z((z8*tsUq7i-a7Nbo=mu0z)!;Pc>Y#j*2cx55EL%eVFZL%(zpj1J^_s%)SS#xLu9+
zv^-$*yW$Lbb&IVkp<y)9q$WnFc85P#ulK>jvLve50p07wC2C%Swu1VPaIH-|_p(h?
zgxMBNLvQ@{mSN#q?2cYiPRKG#)%kfIPF;pHE$3B}D0T<jeL^7^$a>o(VP}~wmbNUc
zQvj50;#3LJafi7gQ#pw(Nvzz7Mvpp>@EPM8e8H5=Cq|5)ncGQDh^l&4{#|T}^|A<<
z{blW}PWf%qtpHFc#J6{TmO?OKv<whE(Av*m0;glADRiuV8E9&Uf?f?_WW6pg9$7Ot
zi73<89|UOk(T9%1@wCC>cIN*x@y0?)Z8bOJMA6NSmSJi`6GbHXPWW2WO>7R%hv`-f
zvQ~a(vaZ`5j-!=nQbKe><pb}h_vSrw%^+H*j@;Zi($Me<yOF1<_v6iV!o1-yOx@y(
z<;B-?CSrF$$@rXfd5t1Py}>lChO~o0u0Sw9yUA)6TPnhZZZoV-#zZXgt*R7)(Y+y8
z*=Hqaf(hW0YdN6-%S)Yt_iSZ~6&i04h+q(kwL8IUhKBHGUP!QYSR(8)TRKM{ef06&
zf!*RK<jN9+QO`IdSFcWD%eSnF4eb?wS~th332kL}T~ZSsRkaEHnRuzKoj9gzN$uB;
zG{u<#FUXZG7lr+nFUVCp-)0&%+MeD1zU#m`XQRB?Bm9@?@SXPf`R=e}-+rw<<Ya<f
zioAp<1Q};j01*bQ_p7K@C$?aUa&i=(xak+P3jh1&BxpN!&}q5f9p3*Yl?|G*Kb~-N
zvD!of(aedH3`mn0eEx;6MApijxIjnY!TgPGW5UaF<Fc+X98dy+46S(VjvM`hn?Cc>
zr^@Ml;kQpLD1jlQt+7yT-!c`21Rn5tMW#aaY@d{*5OE(WU?=V?+geoB<b;tGa}4)%
zz|=3>6P4(a{kz6Cv@wYjd(n#+kWj4Tri7$9P-mS45Y=eC(Uy2;cdStbi=k)SsAVdU
zt3jy^;$pm3<>QCSqaXS-=zaVlfd^{p#6(7#dP^^D{rOBISHneU;yqOlg4WlOkde$$
zFPtT|=c8q4s0H?8Meb@gHkZIdI$8?Sbzfj;t{F`7-4laIm}(jhGc>$HV1^NlD{1U@
zT<!-SR`21T-*oRnqjJcE>M9o~*|H4KN!|4N+>0`WJv9q%F8j9!l^<~8=M8GRIuUEv
zI4vhiAxIZ(rZAC-WiG5OmIvNj;fN2s9FM}AtD!HU?XBKye3fw|JAkpbl}$3KI*AL7
z`Yo!8KKkh6OJFi0BkQ)vRVCR=2)VL1jJo9bTSenW@4>5)Z4YC&mYUFJWA!ODp{3%l
zo|<s%Si5^+11@y0=cP4hc2>xhI=uyQb>MvWf?VO2wWC$wPLZcNBUgB1+xCDC;&}KO
z6RxN-LDtEQigQ<OwO{(!=~`et@McB7>B3(yY{>Qf!4SmHabhx$pKg~yUI)#@dH&5w
z)?pE5JM`oqrKkIqfiA*|0(%4W(mKqiZpvh>PoNg=7e?$V%!6#36aVZt^c99;QjpG6
zSMT3>Fy16?Qa+FtcorE~y44!M;WBc&WrbE=N$jltvIt$vv=kEbv49+(s7lMgP7-*!
zi2I1g)x6{Q5}4vz$O-w13Q)p`GJioR|1Nc+ojv>E_`ay}1J1C4Y4IT`F1n*w*sjjK
zRD(`lXAL0k*9vc2u9%=q-T8s_K)(fPIjN90&aN14!W^^W-vi(G@!tvd5-cdI;KUp7
zlh|&wf7FmG{5Q%hKzON!B<XvadR|-@e#{~*SdgRUIEzxj8l18}yjMB?B9mDQPpcu)
zWv&@S<JLh&_VQE8lHPEnq2ZNaTtDt%T=m1gSeXr+^ePR>%XXD#`;}r<+Ci~=zxLL~
z6&X&s>H2>DY;|>2v8an;-5+zh8l5VM(##iCM>Y<NdbUBok>90{*K$I~OioC<FixsS
z!ay@0t+PB(rSi5Kx!EmC{HuYrzBCHIRaD-E=KAQPk8g^6cR{We;T;|H&w&{x$k^(9
z6<1d0Hi`DMSJf&Kv7yz~F<VX8;GGnIacNEmJ%3J3IJFci(r50<VoQXIw$;`K?@Qw;
zSBIu-i9fvU>4IFz=_65DS}v(1vEbNA#Gai+rfv4!CpN1eaXC+mXlk5`<VLLs7C<2n
z*9oG%+4iss3vFzL!dGFAzx-BS6E@4}XS8DMd;+X+^{JO)z~f(uTlIZ4`0od17>ogQ
zlpB|GpG?5M$PWj2{M{5!M3nDv<S!Of;`RmE78O9PMD&OHtcWQ1$UK;6*IIOiEWw+3
zX=*9!t_P)hPs<lJcz>RUn^unBc+-q4N#KTz$1O@Y98Ysk@wlu!&+Br+rKOy3TFD8m
z1dRL2p8aX&qnTFs6nmwKlZf(eWs^%$;uDI+y32NZXC->#a=Ke%oh6xUzMD$ZxXcCV
z3hmyZ&4HHU5-9e07HGeB{BQJVu45m4{2au9#Ztsk-t2QXX+6Bj7B$-r7lAOKn#n&u
z$4RWNro>rV+01xpv3p^e;mk=4KY8f9fdrA=JGgGue)ltkxn>ZPl?Kq7zl?|&kPWYz
z#DFLS-Ts4xkPW?8KkR2WGvX{cq~p6%jonc^+lgoO)4!g?@}2F|Z}E#1Q;W@@ZoQar
z?udC)^RVelH}(>Wh!xx+VpWR2)WoVCZ5(+jb)bpzj<tcA$PW#XB`n+)N*GAMm*Ja^
zysa`t`a(mjBtO_NPRZGxP%Otrir7aVeRK~zt(@IYAy>AGQk5yMLaqW!>Dh+>Uqsnr
z{*NV!Qa5<F&GCn+X45e>AzN(WzqU*>RGZMkitc5?lC6h!=xT{v9e+Zutj@0xr`L^2
zEVybb139p6k>H@JoGyDJbfYSb;T??Xq}X={A_TTtV&lL1WNd}o_DvuMsmyld{yoF%
zz9tELVIO!mF4OY=mtOU#_)uP9d-U_%&xlI*S#>zt#LFNL(k*4U`Blr3i~0Xj*{}=H
z^uQhWiE)EBM{%D9-RM|ixFmu;RCOKZR!k}hJg4ki9y~9|Ez0Vd&9?`kmc1-OD^*}U
zJ7H*?c<ZbLjBQkbq(fwT_Q4{IEO(&TXNmIesg*Z7<&!02_A0$#TNLYblH09Z(<e@1
zYsLR_h|RmU+d?JR9WvEk4GbuZ6BMg!&WcEk{NhoG5&P&v2bM7#EEw3~YPbk7yj#!S
zJi(UYRb}hYey&mziX-}T6PvHE4##&w-b7|-cG3OeU6hF<12F2$NerL4V(Z|JRr{H(
zw+uCdm^*64HXTXE@^9|bJuzUhJv_4wJ6p=%JgnTQ!<K$}^)S3--<V0Yh>D+mIkji|
zEG(|VAUdU>cf;)p<ujH-YQ$T63QYUUimcV(No7vN67Q_RCN<$osU(2Rl3E!s4OmXN
zujGWLv<eaidf6pipvgJ1AFMp*Ijy0^P9)o^D-PK}?2omR?W2#sCa^1?T#zek=s++W
zHk*nE>%=-!-sSW*UR8C2cUuTZ=w2_(n;JQZZB|6=Uq+jjsR>c-MI}_6+Z(*s#fB{?
zTR47IAy;Fk6>>$Si|vrRu1jJ;Y)_;g#OB>^mE};PB3z{!T*4N(#U}b|vAi{AwpCPR
zDkOH_V>ebh(6JZ|Zc>sGvqrMQNLz(DcDucc%XbF}5BJBI6E#lBOzaau>vbJ3{0svX
z&)~0FpP(`r$%L^~K-R=bg7jgzGHH_)6`GDU_uAWZtE{Ojg<>r&CD>9zm~98l=E8ri
z;GK_4l0ov8w`zsXPB>o2=1>ML+ACGy%tlW5p`EGhjjdFMLFLUJqUN^4kUlimP%I~E
ziDI1@i<?x`so^qwNMb?753F>BDAvU*>e2Ha3iKtJ0t++$5mJ`_cmujV{@((RK$vcc
z`NL|vrI!{RnB<B%$xzIj<+LV|7JE^~jh3PL>6leKwyyd|@)8=%G9PDkiXrU^tDU9K
zGQim#ao<@?qAGK$yHm7+q^5TuDO6zQ#B3lIG_S01Lva{>_(Q{Cm_5X;J!q6bqBBVu
zcf;@s|4O1fhqDS^tJUs!5+|!$T0**a+3v1RkjPpjnj`D@hF5?lVoihV_FOv3%3^D5
z;6R0Wb`~hp^}8nUXZpY)T1C@rhG$t$sBDSJn~l->u3~WEx3)1NuB3<xH#0Yr@1u`C
z%;SShlf)`2ep$s!d(sQ-R`6zY1i7*{n^J~*bb94gW%H=l4c=MtXT_WPAbUWDUxq^W
zGCx^cY_&>FsDz43F?cs3(AJ~a)y0O^+rux&Rbv0qyq=wKu%f%xV(;@o8=s3=)|;E6
zCavfBI^pVh8P5GIdxXOYx*7va^SEBu1Y3QFN#i?XRw(=p&w{qG;$(~HYQjl+Hu7(c
z!|{ZDx*L}>FCBa~(Hd=H!WFaK_WPBam^y-NJ8={7$oiMB?%~OKg!i?gV{KxcTd;M`
z(6eCs>$o+Fbuk{dN22gFt;3u#CBov&5p1%B2{Mrru7ccrTDzzMiP2<{>5s1Ht1B*S
zs(O|#ij_C}a2eUUH%kdYx)mHuP^{Lt4OR~8AQyGs6N@ps!~4W{Ee{Jnd#Xf#<8|yO
zogCY)1_n8C9fJ&A@ec!8_>ESPa?0wrAAOhwhDuuOXHFuR&twzFt#UW(Aa4guWu$BK
zrkl9g=;>-;O|MPbt)>W!{8#0pZe(3`=I<;cn^Vf&QG}3lH@ORXqangQ!#vsiR>Hik
zrHIX-_ile2R-(v;GI0Yn$ku!daI=0eXx4zm)#nqxGQ7H)STHP9R>7+Pl)|_gwS?GQ
zuu_kSUN;(uF~&Lg($Vd5&Nb;G>Vx-r!wo?D(5?Y9#8w8Dm~nX!)Agwtv8veXY=%at
z*ICk_aOKGq%SNa|jx>C&fhC`+?mv%PU`vhYqmMprh2TyjM<G}1*qWwNm7tI-*B-<m
zj9Myy)6KAS9d(0uR{Yt0yjH0RnK$(-Qxj6PtL%QLwynK+DW>{bY-kCj)N!+R$W`6r
zeaKzcVr@o}!;I*5PgO%&?{skSFN7=i5xW~K!?08wR+jAe!zO-=aaKK0`C>=Bnu(h}
z*R0q7$KG{lx6L!l_kX|ScahZ_#okqI-q~FOqHT!+D9Oo}t35tBNlbzO2!O<JW){uC
zf09(~zqW6}@NWL#Ml^rqKmQFN4%>WzvxuEFJF>GFa!m05#HYMxOHp`~Z>B1xp!mJ}
zH)3RAsO#K<XwlLhB-e2ziiLh=e=1H;Xz5!{IlEaJ`8*{lqWL0^smFCDYEyK|qU2nl
zv9C%_Xr=Da`4FEb1R`0@k-hA28R2<bMCN(KbbK^WER?eh@?F>4Euum#030mi=(_!T
zT`Uo6HxoB$<`cw)?!l7UFez)yq$~llo>(1;|Fp^u@QD9cfsOavPoI@e(2I*JiQgD(
zGcOe))7-<-XFc{Xk|(VDL#@be-FOya`U}nJW#UI>dTMe75A)w6_kUwANG~TDL}fHT
z%H$G~><<UWmkusB`y<TN+U7(NrBHawVOV6egI3Fe^Uk2zFXnNzfM!x!^MADAm4E74
zgV$LCpjHF~ootTQ61r!!gm_h8cX5WN&aYsCm9@KORbrfFM#REzg<JL3s!!CFTqZTK
z%EYH#m=D^h%FwJB@6^-U6e}?|#j2R*q4`u+R0m>C;@PU$Unfz@M?B&YhM^3LYTRjM
zug7m9S1(Iz_EE*e8%_FhNc(K_(fO0Xduj{9qz&Gbn_Q8a&~i^#3l$eysAyMhTw03_
zCw{iJ@s_UycZ#n<uF%*;!zrs<c0w|_N@|m<mjxwB?7ZFHF$YW_rssKxKEa^6a-X!5
z>})ERpZL8Ow|?TFC&O$r^^bm5&unIeOJf`RS3y>o*QhOe00Rb#20Gk{iba^C@~H4|
zm7uS13#cJvfo}2h%obj6%ee2v*c(o~Y#!w3Z7(U&Ik;T0+2PXv6|f7_GtM{5FdsNc
zlbSVfV*F=PY_Auwo(ptQT$}*1uHV{YS;nrXr<8z`D@27&6pMVZEbF%3kpT;xZfVb6
z(Wi=yND<%2F~(RpLz%GFBJLYHu{m(@MNVjS-;-h^Zd$LFxLGCNCW1Oa;b0keNc>9n
zm6`Ihn)oySDpz(&Aj|&t!t7cG`Axtdl4WIUEmzbj3-1ABp+nFLtayFwUJ1zZ@PoEY
z-84+s4-xkxDmFw~2ARNCuhYN@Z!pfYayweazlR=*T}63^u}$6-Uiy1PfDcMAe?R{a
zcXtNONHA!2B0526R3j%gS@AY1DdBJ#U3`m1^R<=MMFlY)SmKc1F7Y$ZNLX%m;uv<$
z$w~sPc$<-1J9?m{w=p(e*ca>D>DmtK1W2`i|CodYemnB>lez7hTEcVBRt-;)E&Q1Z
zQhvjrmj1PPu$vRHss_q5Yc-0OD7T_Lqzr&2nVSv`qpGEGx~@!{VllDJaBejDR5;xV
ziK1^zs-BbJvcLT!9`T4TL54*tGoZLs+2T%LIaicq!S2~ge&b#$Mq9Szr4t74HkZaW
zd{pzM7&NoFbTc)fEqtV^t%Qn}$Pb<=<nG15(b&su;glM=T69OQ@Uo#RASHCb6m%ii
zn_T6a-7KK{NX)1O6RxfU2i}>=qDfq&$_ylv;5DUwz65!3@0MZlrZ`>r892#`i8_Cl
zXN8GSZue=q#ZAGKoOs!AmGm%R8rEAUe_r@j_MI5VkKJ_YXZi;nxCl@D%=otxFU9d_
zKF+N#bROw?nT7pjjN?%zx(j<%j6hWQuQjN7=WVZ-5H;($LCtzwP#VD)!}mT|mJH*G
z0<!QYDuDmF5(E5T^l79#-f=G?%apP@zMxpPcM#h;vDLzmz*se}1A4&Gn3AQOaHhn4
zjGLKWaZ^*jNKWY4$O*48#j4c4RZt^T!1na2zTKPtvL;YX+_Xa>I!I|A7sBiktceEX
zEtWf!j4djW))bI6a>x<xPRT5AIn3OJF9JhPeqJPlAy)9aq0^7}J0oY<it_P|2xY>+
zxW?W}g1#)L>mH@mBL-J!v&88j!YY<50iXgqs6WX!!dx0Vv7y%-mR4L&fFMJrmQG4|
z(S5xVU-vP=M^2cxcgBHitdiQssue<P0%Gkm*U<1P=fs7-IB{W19h-Eo?@9CyAIy?E
zV~2%e-Ly?<NSIQsB|LpV#U>j9a}jmw%sMHqSt42_bNKV^X%ewEt=)(<nF(NIa@FF*
zr7NIeqA89xSkLM6mNL;IJk4Ozh$+^aJs3p_8nT^FtZd{ZXe$@h95ZxCd#63(5s#4A
z3yG1CpZLu_GhlTKwO}sr5hGXZH*Ny~iA|PM+hqBc^{3Q?elCi?g{9T`RjCPewQHeb
zCwH%Tq%Ljug0$z1eu7-}*`eL)^s3>k-c9W&fgYRqnV4MFM)94tFL+Z5vyCQ4joh?z
zQ4*3&u(pm@X$s?8q$$*aJBT_@yi8x>bwQczh<ElU;1|>fPh5;c#;MZ26Q2aBUKbI5
zHFi^U4mSRNy2h>(eTDIWxx=ie8v|}APq<!!q~US`rcM1COgl&7dShs75$4$SV}psk
z_U>=WTl~SFT+!h(?0n}(*DO>Ub-vRuIPgp%{Dgrlv7}C~Fqe~{)xfVsg|G9_v!~rw
zqTOz|yW84^)5~pI+p}X-BsOc>CrrskPDp7DIalC|Wv)Py6V6n2LYt~KZMdeMg(tiO
zh8%I97}XiONjE}BR&F&qG+4%oeS(i>VEB!d`VRwgaU(ib#eEfg2C|0ik#!SCxRZeu
z23z%+m%hvbjb-6R<A1{J!OQw*<AW2zYLVazu?n-!l+<QmtS*E6iGUgpqql<u7;(Vs
zVo)Pj3qP}ZvTU~dAu+x<!=Uliu|x>oHFXn{%b}SyaI^?7P80NYO_7@T7q!?&&7gb1
z8tcfX^3s+^fVtrnF}{W_`n=s+Y!$ID*2t6YeOZy*@B3k1s~uJ<Uh9l3oxDn-wS?*E
zj2=3fV2`9LXWLco4&v56Y844KiCFEa2`e^=*CtmNp&Jc(y|S#*<XO!oTAAQcEi%bw
zG{Gp&GiW+xwud7UwXjTFMH%NCw(yVa;g5L4xxnH>@C&K!;{Ga)2%Y|E<O;jAv9FUG
zTDvwSwM|wR#UGQGY6xg*X&Ch-HDPL-ny}nar*#r465UkUWDQoS36u8A>Dpzh-zm2s
zmh!1G+QK8(7CNiy)BxL|vS-ITNQXis$Qc;VGJ=32{J98=D;?BPpf-Ca9@L8TRyTZ(
zp!ZPzKtXNzK|grO`X0vb=K|9fm%}Z<R(%%a10ITBaH`%S8ZocQjZ19I@hXlt%)i#G
zSa@Ptxg#ZGT%y{jd=EFVhO>^UJ#pHfc&QT=LAJ&zxZ{6AyHE}6a9KKftZ;uBuc9Kq
z0}T%wZM<C*<%xl;*LmpJXXyA6ytdSt3ZG|GU<dMvq|fWkHJQo+O{zpS5EX)?jaGK}
z%+aE15gF!!uf&ixEw7Xlj#r7De;1izC1Q$YtD3BMPp5TuQ_s#itXT-o)ky#Y%LFT5
z0z;)q$LcSl;0hw{mmo&gXK5kI$K~#7T17KDT~Dzun+8o@7XAlKd-!Gj1A%cBW$Vc*
zAro~L2`+;hu&pGra*JhwByXIfu-kya%20c}vs0GUf=s?cLH1jx3pAVE=#$zYi|{TZ
zNIyu+|8WiZDi;pMv=Zz1krQ7;#tb!sR0oAMwNu3m4X@BwGcWyBV_a>v=NLS{7#q}!
zu&4#+r__Q3Qmxny>l7fiRZ_uec>2>1X#f?;>fAeRy52LC)Ml=(k*@aig%y9HuE8$<
zLh^SSY@9vN5S7YmidQl)%W|dgC_>55w}!9u=rO^{%ySw_l#2KD>Lj-NVxn{S9nXEl
zBmVhVlVVG9^Th)<jqPP$AD^AFI?S?idzkpS)M08#wyZ>K=+?-UtxXmVc8Gn%sR=#%
z)P!00)P(tlt36lMwlsKmlTzDc*^;K3{_wbQ9gr(jUMDx4*vl2GhQZpC%8=L@x51+v
zm3f*Ga@8l^;8p9q2&@QFQ?BecOeV-5XLpM*r{r`>UPr0eiyunGj-J7#&_$@jppnE-
zS7yjOB|lxGo{UrdK&5^n&=9<_qwN^&UQ(isW5TsQr3jQC{3m|pL<RP_80UZX%NGV7
zZq~#*Y7FrgR1Y`k<~Sz`M5_t6sSUEoGU%$Q#E#$E8VlpRL!HGoT%a)2ExPmp_e)?5
z6STsrMk{#di$#?=QKum%46NjYxI}FRHSwLu)Kx|zDMU5t+q%$8VDYWFNu1xX8;Vu)
zL)aqzg;{e~&Yi5>O_k2^i7VEP+<P)`U*eq1-k&Blko7tXQUCm=lJM_=z7<|pQ)Bo%
z3C61gd-i(()Q`Adl$*U96@+7OCPDngyB!vKIJ|ptNuE(`_U?D$vR0pvD<VPJiW<Un
z{mf*fnVXuwr36VS`4E>uX0nvw>CARslnv0N0}1I8fnjn%U`TleS6uQeZ1=ZEJq2)k
zod)f7Ff_bEcl8%!c-4+^q3vk(FLwHBKB3-~T5#l_K$$lC_W^sh&rf-_<A3HX73_Pb
zAG?|s)uJUtotXv1R#)fkP)H<5q$YyPTGsp~*maSJrSPs~=(k;3m+UG?YGLMZh29f_
zlS0XiW>&8944R7&CCE{kn?veIn-eSMr0H{QRYi|@#6KC>%1weAH5z$FK6qc^v&VbV
z!L6vaI_El&VV$Mlcp*9d7OeQQ$#z=tqsmRzIyIryi}B4;6V9pHRxkOK3|)Nb8G5qa
z%{76qw@&`**wK#|b|bD@r|jnkWvx&4>~peb?`8~waso+E$jH^i&#v6v;E7qgZ?V1A
z^cH6C66~J6ZHf@zma)ThntMNs&`TNnETK6~TP;DWMhw(MB&qv*t)lK4n7LSmuu~4Q
zwZnQz>ZQ+!*2^p$I>|gBSPw`35g!{)L%FL7dkv^<5$0)mOEoJ>LV>l@yTYBW(Z8U;
zxY!KX(u(o}dTGmN=yO2}S6nc)DR^62aH1qg+{YEbtqjt&d1qZCCwx<KLaTiA%D>B6
zhuBa}vbDR-xf1AAx=rI+kl2;x@qtbE%S;)(TYeQfRUq*Lb+ST~yt<kn*bK>9h(S)H
zOQegF0L{l;yZ85QtR&)>MKltHWeFv0c~29(M_dy-rdmziS|RvE{%=Wm(=?aGdM8;0
zQT}9=bY6bztfLCKvYj=w7Ln1GivekFaEJNcUx)xOGF(H#Y%P^sT{5t$xKU%r6zL+M
z$t=$xCY#vHqr=-LzM<h2F8$0l>?}e&dsv|k!#Z&CuoYJIRr=<hFiS^0r(tb}b#fme
ze(d;(&V1w6TEf*CEg>Sv8&+3mT7jAfT-LjkMiBcnO~h*do+YT%3!_pdl&8)9Fi{Ry
z=i2)vu<ezMfdgZEE24#CUa-h<V6$;<x@lRRSSfvzT(nMZ_yDmU@&7U~akR(O#LunF
znk3$ZdelI!Z0&!^LN-*$m2X7*Y)0)>#mJRyjz8f|snmqlUgZR&uWpf=Ft|XYJz4FV
z?zN0VOMB$oB3Cnenp{=8#1rr9iE+OUsR1N#yPc?zatHy7?0nL`*9tXxb82iy7+g1b
z7d?nqHc2c)EkeXD_^#$BBnjN^!)!ATa@{D+C7b#gh5<IJkDXCV2&g5pN_6AENtzbx
zHKMgjmSK(;Z>G-u=*t8ymlRu6>~$V#_o@l|>fG?Qie*q=;ZARhi1HO$%F~*G+G&G#
z{G|ihj4Gke1y~z8cE073D^Pe`Xq45Kuqh`ruQtgEmCHIti}`|y;deX{E2hoE@tuJ_
zAwl(*(M3;~?~!RP*0?*0g(gJVrmsLJ6qpotpIW{L`eBKur$U(q%b0bAw_L}H^$z>}
zI=f=+_f9rhKVVmdhG1D<MFslmY2qJchBJ~Gq7KD_n)T=6aCpZ6UIZD&hET0AwpZbe
z*?L&tD3|Lj6yq%S3I-z{1mbfgYC%Jzbsd=XBgTkO4RiSYU1Wws!t{dlvhRA;0Hb=d
zz+|CIi;a-MaG{GYz<yk71}~b%$I3O`kBgSWa7A>ciQyHl_<KYcSI|liJ08~BU2(Y+
z1nIk@d!;<v-`vxNPQ~^h<fz3dnpS0|C0r}3tCnLbW(xIKayXCLxPnI_mUF@WT`oPc
z$u`IiSG9wd$upNI0qjLzTfv*XK`F+UwL|;i{YVuXTXHsVQOd2R5U_Tf@DY#rmjZ)7
z%C~)z+Ql#Ij@|)+cz?ehxq8=%#gV=AY`f<ab&OouiVbTJ+o@9%hL#vkBQ;^Pv{d||
z)eB{@H8vo`eyKL9+Ea8d-_qc{cIa9N@MYcVN-H$4K(27t7Hl&AMCciTZ{1$SDc`!X
zd6yIeouPvdZr4<SOE0*mQE??zKmvRGkTVrNH;k=(+6dlj6NI5id!M*qfbo;XIvR*e
zlc(E5JAYlE2QgsKnSy9NeMYo;+|^!EX65cDnQR!bE|Ico_bUAK9m=+OLsOk{vtJNy
z5Z;82MZ90P7WARowoIx@zI~8DkJ(&qYPB34-U$JdbEjTr4)@V3cU16+gzA`|NFK9Z
zEhjY3HD7&BYd8<=oR%rSm{_}WhQSVlp^0LllRHr6BxuD}F7dB3^7FrPc6<<BYOBkX
z>LtaERTWq-{iJOAy`%EzQsO$^e<4LvFt4$tos!H@S!R*_kx%(a{VdGLHS4jU-!=A(
zSuKP7O<`8J7jr+0^Bar(KbZPBVTUUrT%}j=E9hOzKRUGAe$k+;5Ptf5<UWl(*VyW+
z;>39(sWbFxuNb{yjiKZXyl^4RJB=OXm!2Aj!@Hqo5Z9I5h$yz*uM9oeXS=Q8vP}$#
zs4eBke#?UrtwpQJt$pm7JWsJ@Ami~fj_wKDVZE}b?fY-{?;j!qJejqy;svKRY<JUi
zeY(4}-mu-&9nZTdU#stC?bL{3doUzo(YL33E4a-pDlU#L?Vx4uRduw2XIp#2r^&A2
z(7rU&E$R~&@iEDum2^lUV07-N6aVB9kN6M8o)HWIonDr)lXOXEpk!ZE2#O*U#U8n$
zOnC~qvYmI0)5)vKma?S{-a9}*lng={mCtQc6V{}oE~yDC$tJH1-aSjSuqifF$d%nK
zYa&;3OP-qqx=v>&9CUJtujFffzCk|-ay9NGchy0JtEB8HF`eWnyng#rv#q>LU@P(|
zB1+8We!1E)HZUXl4F~vV#>$+yNFEHUJI4oaa&ZgX1l!E)i<Q<Z`NE}cOjNg@fwRa!
zINxByOF$C?S*Vf|6&<|kP6p>IJkqiHk}0+8UVgnjVo=>sEbQMYR~?sN3-1uSfSF*p
zQ|_6s(kDa937@BdPjW)jD{496tEHR}w~wWlU5u?zTaEL~?RT<LZEbaq-tLTIku_FW
zQ>UILRGI6)6bL_Xu&gOwPZPox@W8q)szY4Ie1no-6z_{kSqbj`k0sim&l3evvqnPA
zVw8iFYfR6>E*K-~k<joaAx`@<felBs6FdGHWq0}fghFxqNZ>Z|-sa?Rb<M*9rICFT
zNg6#T$Zd-vThuTY%9d4XLiCJ~wa{0FgwLHi1+6w&Rm#myCo#MTM_|<wB#jk$Z3m+o
z{e=-Em9MwYW6k?Id)VRqeZ<KV(XQS30fXn}*ol8J>&$#y;Z1VHj_$Klj_&LILF}+j
z@~rT0H`@sMbnfL@K(KZ#VOr-0Y%_JQlx`7+IZ4}Ai%cd{QzDi^#!Tgb<+dhny}4Nn
z;MNRnx@CS!^FlovE3HcQmBG;y-YO?HanTh5W<>yd#3TMIvB7(zN-WrOl5UEvJzGVw
z;4T)@i|uBA*Fdg@_AacVI}_w;=vhNRO@nvW(gTy(V!5(=vRfstOihSt4{C$=Xw~|#
z_#Rh^4XaxqS46bX*$FKj#&p!sE1PABU0CNA^)H00*G0q%q-&Rb@wRG;1PQjfk9P_t
z0<N_P^L|4ZC?u;OTVqT3(3kwdz#Y$-pfwY#vCr(R857|s`|_P{(z_&Z4>Hoqsg#1t
zFz=k%^Gjg6fx<<^_dKJLJ5M5<*hH}s`;74DaN?d#NI_|ZL{<E0K$08cPpeDE`R0{v
zrrs8jITZ~nu$PqFZ^VhR>a;Mcjjej~(6*PTi`dml5)^jWAY+w0qFAfMO19YyB5$W_
z?PP^o#r6-T@3Gw-+_=!9zn3XBvoqAz5@gmL7t)!(`RC<6gq-#e2lz#hi9GWYoVAR_
zIO_pt8OCmZNb-#n=IFX7)tPVeaKX2=1%kLHL?<Y;uIGur2(E>531=oah=hBq$T|sW
zEm&sEXR=Dn#fCW1jSAs<;kt%%8P}2|gE;r%88`rk{bruhMHwItUWGXy>?fBp9-`AV
z`>Xv(FD@h_Vbc2PVZGgJkgerOgm>xQEci8a$4=bxmWb76_03<49o@@whF97SYjj5C
zmu>c<?>mQ3k(Q7wq|TO5@mr{gsk@dXwjWj<iCARSesPDDtdH`*iv}!|eLxYnCIP*C
zwI5%JjbvVH^b8e<5^-5uY4vTeuZnNVu&X`$rjZqKZpq_%#3TONz+BbV=mR!<>#%RC
z4T~7L>aWB#t_yPYqN-s_o7um=uf(;f)9IMcquSs-wpIKIzWvNe`bL&?uPaj%a<$W1
zsA%bdKpIIbzsrtd!|F3~wFtXdOOeryDuK++I&CEgdR3A`GRsQ3d+*$Xa78kf@{=Vy
zioKO_Rx_~aOUs=@JgZNb)r?dm|LuJWZUNr7zWn?%5ZpVZdaU8BFYK&=6Jv{wL3me=
z9C{M3U$~IA$+{tsg*!!7Eu33W{H!`~s3b6k=Rxgi)n9huVqwK&f2uk`q4|mAVi6Z|
z>9Gx_L{2ZY4$+_4a20UJ>zsO%0F&CBz=k7rKE$D8EeVW^4S{uxVxgQ4=sE^75#E%a
zRp;AX@pgNvh+!{N^h1~LBi{o%z9q9+wBpaX50Hi19SbRoatPK~R(}yWY>4!eE>&1A
z(ZDcUFZ>g5)?gVef-E4|{GlJG5Oc^VTVtGzocLLh+3*)ke=G&G)4p3r5kos$6VSwf
z&)A8R>+oAjjgfEIES-2_SdcpqVo@bQU4}~wllF@6|Bal8h8V7#o85k(tlisXeG=Q<
zL5|0t7qLVf&^Y+Qf~;UJFKzuCfc_+1=g{p<gH7v_+i=iobF#wvfQ$Ybx=xU_+$t&U
z9M#IpYQwAI8!q(G@O%IM+e(wT*vabTV~a4rbluL>s?1E?Q50EAF}=!7+vrt_h?U^F
z?j<6YmIs=!wklE6N2SsR8UaN6_YbY_TN-m7npRrmZDo!F*YH=vp55?Fj&fHU*Gp~x
ze`aEO#6J+2n%Gtky;P8^ao415TSgBwa1@u;vag-+8#VM~$v!$ren17C*;b%w@NTR4
zJEkU_M}wbDP1qDF&H_tc`o^U@c*|FkMg0@!%6b{3v3H$QR>dUVsWQ3hv(<d(9RZ5c
z5Yw#)SH)((2-!VeS+e`-Eq${qzLn*6?<H%30h^drkcWTYw{=Wa3{-Rr?tYkU+@wT5
zFT#8lWD_q#6VOF(%NX@%7j&~9PLJ4IL^yHaBq#(!Vjkq!@_R{%PQbNrMbhT|NA_jP
zqpTduJ^f70Vndrd-qwP*_5|`YfUKLiy`fQK<!6Pq1on=I5@c+sP^=D$LPny*^E?<V
z?X2B#X|d!IY{z`H!Csgwl33hlmDUi?l%AFoUg8Nf1A8<De~}8$>P_`S_NvTNV!E0|
zOLdfDU&a6tHleX)0^DX`%|vg%%xbu4v`Ug2rBy=rE`nn|K{Oc`x}hUnGsG!tyh_+~
z-IoM{BPT}pVi5i?8c%T6_B5O&_D!g#6XsDSh}J*8%@MRJ$v19POx@%SBVTm|0ai}D
z3UmDSe!i3v#L&(+=y|z1#zvT~57+H6>nxuHA9;gClysVgNwJaig6Nrc80SlDcKgw?
z77QAmC^RZzYWb~}<~oA3lpgb1J=G=9145=+MHk3aSTl#q8bfQx#4trvM#8xLq2|<v
zS6;qu>y02ODRJS*Z6}hglrI)hYgP<2eY<+HZgX_ke(&L_yYr!(tQg}uy(*?kOXwtL
zwS<PI?l^47h}rOxfThHd#zZWY$B>-NP1pswI^NI+zWOW-42_>n`-Zm_{$fr)AbWO2
z{X#!vXN<_s1vWb)KVz6Kal7Wmdc-6CNYDrIZ1c8C#GZW-b+Ko!<ZF1tU%i9T&`vu(
zbwaM*-<4|<%N1=?g?=)4w^aOnaDE3djKZa3OQps&sR^4x#fib{{UzAlt46MD#fFvS
z7WBHS1qC`Aa0NQEwg`IVLbS<MH|VwEArxjCZ45QM1>p)Ua+C5+k+|O2CHuCozB{%s
zn&BCwI9+6-<))YpciMcJ2Oi33EpCvXu9smk@iN@0o<LHqKhKQ35e&5=7;4Nv6OZsH
z{evbi!d(9ozr``bRWfjlfG_;Ezl?FpJjgNlgKUjEgWBH7dF&>^IU>JOvtDK)+8*5V
zc4MYDfvmSh<i<A`#&~Mf21hI^bfTggqTBRlA3D}K3dwvp$do;MYSpf++}4<qrA9Bx
zHX`op+u&v-CyYDF32~L9DOPM}ibdRD%EL(54*v90yVE7;CBd)#;n7`zvEl8h`p`aF
z>l4wFtLyT~HcDn8t$zfvdJJUUgOMed!`lYR7fUWNU4LR?kC&7;!HTV`#CIyrH>ee=
zp*@{`A7PwexQu6h>P7{IF<u$}qppc~;lY}j;_;M}iy#|0akH`i8&kT#nU{KT@neRB
z!nT^wz@|D32;08_HDZgEHprgFwbOeyF)!9SW^IxGl9e6bK{5<74CNWSyJN<^)z0U!
z$<)Rm)b3apABFFYoPg~H>=ie>k-o6)Nc8Lz^Qka3S`ITbyu!6m$zMbFxixX2(7k>M
z-HV?H4wI<{UiMupSMCmdHoRJ$`gF3E-#Y0sUZ1>8HOA$n{+R(lOfAt8o^gGzj7{A?
z8a`KkE7tnKdHrf4R(iVTpAKezmmy1vG6E}p)GRa=w&49p6pKUubcV;1f&L#eCrU_S
z=Fdm6p-ZF(>_}V^xC;ZfRwD*ieENUHBYq}m@1RtE1idC5MND{W)RM!AZ|$#MU5{MV
z@KJ3MZ%bYx#+Nd9x6N!w-=_1Lywo8{AEzc%ia$%CqN=tC6;oTa-BIqx{36?1e=Tyw
za>c$=BUj5#66|-DTfQliD^#Pi8zIews1W=|khCi|4ts{e(8HPph4O842eb#JkW0$p
z>S)7`{&b=u`x6P%aY4K(VdnbjdJ*PhFU5U12~xchJ1!o%=`6_6CtkY7NWh6`4(<X*
z_2H(q$5Mc?jq!={u?NAma7A2q>Ssen(w<IYT(j^^L0jl#oQ1K4LjJ0!I$qb~V!I6U
ze#15EWgd#H*`1s@(GTd8XXTMK#Cn@vtA4FTg={J%nF_lBaZO*W(aPF3{Akb48a;C`
zzq3Wvp_UW+9pr>e{h||{Ft_^d5Gfn3-rSDFRf*CeDFxU;Az^m*BYR7bIY5|`q>*KS
zu0dv~mcYi`Q6BF?$GV9-R;7R}+?VIcQChfUt>5*9p9~g#Z_yk=2_$>qxE86Q+kc*y
z)vOrSPeHUMZt{j@^D{?FvK;ni;cyvGy%bHrj85_m>Wt}dC2Q!Kz)i$>!%~nI+b~_b
zak20-^yk|={L+LMTFv6QpP}YB*xb$OCV?q{>W!ROxI-8Keq7!J70k*l<<w(1ZV_bN
zFka%=Gv0z;3T-H(2pliq&&*8?XF8>A4RSW-^1^R!PA5YrC0rRKCB#y%C{mYw-L*AV
zdTF(El)A9pj^5Dl3Vk(LM8Amf6}I%-ZhydF#$lu7Ctob_Lhqf*{ZvCtt8^Nkc+64S
zL9z!wYi6YhRI@Wr$)=X@B+*O4(9~Tg92^H1#2rT>)+O((ik(ITDMB3*gC(6(4YCjX
zYi+lF@eIb4RLZ}ZjiU>CMoh8Z+_nz<9@|D{LtA4jN?2cP-x#Lr+p7^D@ra)Z%#MkF
zG`R}%jwBQ8l*i-~MdeI`F1iwWl~u^q&>p#}4Wl?i;_H$GSym0%6J#w{w^saBB!SuW
znKwm-QI?m!CN&|giYhhXU}atHBWT9P=C;5QPN$pRRqKaa7Bc9h9p*dGUH0$qZc@H3
z2)XK9NTp=6XwK6t!q1yS_wgD6Eegb_V6*oc3d7&ACArnULrk_8VNPuqo)TXo%I}r0
z@N_j~J5y}X^SFA`VoU$@mIPA$&G?TFyd2_{GAnmsPBKQ+dF-Y&Wv)iFjwV#tyWzLk
z#$u@8UaWVw#oM|!Az_RDrUU#d)|TKdHqmG@E;sSgCq}XGC;oorIIoG6POJf_ZbZuU
zR<v?8naWl+i&k*TKVr2JK4W|$VM?7WsxXxXUFC$5oe)*M=uzAZvJFwDSc7G3>uh#l
zPc4Crdh^JNiP0>?#Zzon=N81y`Wk^V9xJHE$f@aA&uqqiD>|Y8S&K$8LHq^(%t~ux
zPxCm)j1DrQpeQU09VHsWANI>S8CX?{%?{m;`pkVIFMS7vKC!m2c+Lsn8n2R>m!fId
z?|X3(-~o}X@sk!?{Ge%t`oSG+{^<Wl&*R9X*x;-nExn|4qhcB4sK&%iP?P>5dYuI)
zD}#H7-{LS_9p|DPl>DdU<hV3yPX0^GO+wAl8#l3kr>qA_*<(5xy27{2K&0b{Tupr6
zGLtFpRG$e{`12yiNe6DOz&n#wV)Ep|F=M7(p|K|4EYK|?NW|U0ShAsJ@OWe^pQ>WT
zqKV-Z8iEf0HFPmkTKXKl`aGt?C}-lg-;(b->jA&#-6Q&0Tsyjd-vVd=>YP*%V~Gsm
z*=7CQ764b*@YK1*%FxuE@J!}wozpfpYc2^BUz}uRuqi`nJsV;bAxlbrXh_xA?CS)G
z;`(K{ZZ{3#M}BVg?Yn7gWt*T-*dTJ<!F3tiAMuDA2G$(R2!dP`;?#jFRf+v0HX3eS
z4jxS%-aMNQ?IZi#f`k?4o3|RdiaksFl!n-_R{U8#+R<-1HR0-t)P%N*Kl=Qg))rfR
zd!ZsWN@ES0S=wY(S0h)vFs^$FxpF%h25u!KB})Z+%kFR!Q9dL=AtP6lu7+<qFa=g|
z*;^dV-fx&pkUq}ln~9fc*LT!>$yBSKF)qiG9oO=7j=V3FDuHyOBFNSmYf1j}*6L<~
zhT~0A=^txe*%w4hkRsgi1#O6^2mWk6m%U0i+0+;goOl({w)eIJ=0H5d_0UO#j`cDp
z4d9j3FH~}(tg-ravN`KQaMv`MYSHSm@jd9(F_p}HQ~@i#O;+x-oY0Ehq;mzboY3^S
zOwtA+L@^R&MLEMfor#)n;-kZDAL1Bh4$-JYVHZW6yma_;#xb`bs&OT|2@f@lb0V0j
zWQD;^Jv}J3L6Gb6(fp~KMzqx5amovpCA=)HF_hNfKa=8zq-}<Q-o{u$M`7k-aIPYP
zmBy=NxFmq<WqKM`y2;NoS;G-LHFjcb{Fg!I#zmMCGKQ(~cYJDKmR(W9p=6jp#t<UX
z;H^gKdb=l;u96D2bAei--0Z}z>e(K-qI?r>D(4y!s477-*!JAqAPfEWJoY6U;Kdqh
zqzmJ)-B!J_(G22&_rgaKh}3$h5VS5DUL8%{TP?rPvE++2bX$6Oy+5i2zyDS{x}Oxd
zX*(?J6;2k8|9?G$k4fws@KnoNfr+Vm#ef*IlG4c~tO?f=2P(AvqIORct7^Nd_M^o!
zGp*%^^T>1;LoP9vK3Wx1ES5>lr<$RcZPxi~5)?L>W47qoBOY<v*z6BZT#CXDe>!Ac
z(&dGR6kGYxENdBcDF-iGi))aps)~r^SR+@qj&sKxe~et&D*nnX^QI&<p=FLgPEA-G
zQxjSV6+fpYw5>Mz(g!tYX6x=%3Gk(mtEs)qRuj2;T@cvV;Z+TFs6Ew{J$tvEI9{z6
zf`H9x?$$ME1KveZlabO1qKzo<R!-@72@JBeE?g|R$kpop(gsXYY>UV?+)H1T=X~A9
zMLh8`{0iG_HU;?$wgf*L7<XtlrUACzPE<@i#XxI<TC;F~J(QohNr|4skoY6rgzI7m
zO}wM``!kzmh1rb>dngWFQKu|qD|KAr8dd|R7tF+%y|;*1s%Bjp8Mct)6E)m6eIEI#
z2D##KW#(F*YvhD{MQfLJ^6yeel&w9xQccpii@@&OieLUw=POaHifM1;X|D|4BTEy2
zFY&<zYR7m&nXcvsehJD`9~ByTlkAGvZ{9mi2Idq-H7-3|#v04QPj4R1Ft7gt&qI^I
z%{?66cl!gnt7Kx8P^$1FTrB*A%&pS@lpk#E>9BIE30m9TfzxsP?T;Z;)r<MAi7Wmz
zz;w%Q%FRaq^qI=_Jn>gy-dTQ#7etL*d6xMaDB)?COB<I#X1L_yAj}=H=W@c_<cbFc
zcJ*d~3ArmRYNU(tsGDg9{kXu9Xm2|Wl?<;Gbk<JLa)R21y#?b!?a>PI#TxtH0sk+J
z+bgx;$)tqhxPFe;q@{xAI8?=U|K^Hc*69O2DwRyIl{#f;>VBvb{9RBcR`O*huT85=
zOs-hWm<e2C@`AnDzq87cQLo&H|IqZ&ngqG|lLALhgu!KLvHrm}T%8jX*2&Zu#hQlK
zewTd2BdkKyOj;_~XJ@v~d=-!JSV4_eNf*Tyd89|$<J}s$s$?=Uf9z#xO?)EHB}ufm
zsB`>TJ(tNMSQ)&}EFGUXD`Kfr6IyXHKR%}>^fNo5V(m-M(9_t@Y&D)Ze(E2QE8Ej+
zo*Oq@=u#cFv{>j#;>XC<$X;ZsBV8ZM=`#j+%}X!m6U<+lI>GgA{7LY%LZ=Osu@wUj
zq!7I8M|KQRJhr`Ljca`Ytk74pfaG#G;II17|5wEa&o%7;Hd-Y#HohWS$((zVSZY7p
zlNgzpN2|CXsTy;o{>P*&H!g2zOwCW6?bNGrCk)+1CtbM?vPO&wDeZM0c1!h+orRcd
zz05){Ijdzj8I&tfcwCfv&*EHSAh4X!Haj8736;xwXrl_mebgs1U&8!U0s10_dN{+N
zWhZ||u{!!<Rq~O-s}0^?W>k|a7aW}Kr)6KEOfNUp6-r>%qqj#2e3Kr)9{dN$u_(XT
z>~Qson-H0&DKlIp7<E79I{t{0fk%0muBUE7Odh6MO;$;e-WcS>#9#QCu-b;ps2gEb
z0_(s)sReD3tB;1&6`E;oAcp#j%y6)X4CiK2Y@QY6>0%|ZnrW-{i}X%&&7ioZ3xKxS
zwN+aiUd>t!uka2wcH&<{_iYxo>@RTGsP(Yvx5o|sNpimxSz3Kx5Z21k{bbTWT#n^$
z?8km;F(JP!eZU#WwAj|vDOBU!uFcTYy=oX|&7z`R9JkrOi^&zPo?Uv+LB*Wf0zEa+
z9#(97E~wYg&o4S|Nzk)WSybV2=6hJwUl?3(D?22rDG40f=eOF>&bLsWT33DUf5an9
z0&@ggV3F6ouvD<KJPO0rQ8w==5EG#T0!GfdDm!7f3~?#tM@XePtEAjp()E)X_=-A+
z4Vwn<9Tb0GQWIMB-IvsaRz1(_WFgQ~2ZQ$}ay7Xgxw3@aB<Q0&o6J8kKxEql36jlb
zBsCS}>Po2~m$ue93j35V;9CD`35+W@DYciBU}7;*hVQir!mNz)%_7Wob5x@M$v`&0
z;(3^d8PTi${_om<a~$5^F=(-!Ukal2nWObGC*9>LE|Ow<?`-VNz{-G|OQfu6sC9n}
zJR{1R?YIdyNJ=r15)~dgp)(ze9sddu^a%!KJ1JE9yijnks8y%%J#d34_u?ez%_FNM
zgIZ45v&>GY<%G7Xz(}2l&bM9YYHN2+=V$BETpbmKfutAgjACJYuA)NBrk<Elc0I(3
zEhOqDc3VR6@{-&5W9z_}jPuPD(@OchKansqK|lOVdcG|u4O|2n<8?Kb#r8+x)J-uT
zi@(4%>z|Jrv+`1r2T~5fW#mQ$+3(-<LU_2)8aoe#aE0N0Q4`k^X;J4Ee4Pe?rCP9J
z;Ok9UU71UOiB98ZEU7b<86FPrQ#TPOd6Ns3o1HdGzxdQJ*9?C0U~erJtFVXxgH|yh
zhD}eoezg>cIo_KEzlQGEiO(HY<5b^%yW*sT{Zmpt96V-@*5s6<JO1s~c33Ce;F|~Z
zR%gG?vt<^+T>Vz7D~(OfTTR{fb!kK^YUcxdD4in?Za0dTK;4GEDdbgsPW(qnxXj*6
zitSz$j#gk4+vaRF5@qH8)2!#jK0zV6WqkD1GHvD~9$^(2(gc<=+|+XtjM&b2DSZqL
zk2dc#%j{o%FimDEJK@-J#z|17Jg-Ks9DAp3oIdF4Rn;_jA6ZuZgSP{{IyGS&SnA!#
zW&M~R(9SAqU*~fq=xJ#0OWzb5jxBYLl~DDPtB@-(SnID6o!_wA_sShXuLb%+Y~Ghq
z@jaWcdEn%^2pDJK3+GI{Npkb;{@@X8RU=5KC$5r~9aAb?40^lHHZ%Vd$qLPxc%*d8
z*pB=j*L{Qp#w0q~PuIB1{m)if&$Do}q70JQgx*_)B!MxOmAhq_*SbHh!|bN0DYh6>
z|47GLcAd+WN>eBp)bli4#ddnYia~WZX5;Y*`S4pg!;tGmTr<INo6NsrP`2*4mJ^QM
z#2lz(0b|xd+1E^Kh$~ukcr(Kwy2#Ll=1aAkC{}POn|Vu3Le@iRC#%kyaUF^um<m-)
zM1Q!-ZQZMIm14bHMMb}%E<|TKoV)O691GuTK5aR1k3foK2}G^teio+da<l)L%KY1b
zfr{Jh#l?74^Q<I+;1bXAJA8hkF<fk?ZXzb+lU0%y-9?C`O32o|S@?VC^=3h2k2zx$
z4Owi6VP=&@f~>0~FQI3emoU!Oq5;Huc<}{^th}Q-A>hS|VInMpOeB*Rp9?i4HM#&v
zp#lrP=6$s*9B~Jq7~?{PTMo<1E!y&n&AwU=6P#+`W#6}ckt8KtrQeYm^uU50-ErdP
z)Sgk4hA&R)pHWJRUA&N&&fOesnRTv^ik~3D`09J7-Q#t{Wew(B1g5r1?spOIsy=HE
z4IQrVJ|OUpp@~*?bi!dU%D>RkW;A$WB<r)<)LfIGuxfZ}iIVa0HRKUD3G&g+H`-Hu
z<k23a+vsBNh}}pf794fWL4diTrHgnbT!UP7Fq^8xWnG<a3js9^-UsKuDVz(YdlCHd
zB6P2xN=+!$t_|K-Nn&Z;`AKZp3AtjKWF*K{XsOVw>OIRw#FEd95p_dfn`T*WP8?+2
zEquQau7)eJ-nxF>-tFK0hDh**9rd#tDG;0S!QTqegz0C@>TMY>!aOcE*I;^&xH2%1
zFjg_<aW4iKV+}a#WfqRz)Q!uZ5dq;MtGK|Z_+KNXV00r_VWDI76dh}XrK#(lOPExz
ztOx9dVv!GFm<tj$b}f*o>Zl4NTX+;=erepov0KXtT^nHziECIDDESc0tGdA(wKBG{
zs%oXWNOXJyO9y*hg3eL+IwKUT^O{Kzs3dk|0U(OKp3X$Rh1rITzZAYSaWN)uu&{p#
zR26p(g+F1dPIgs9%EEoYbofa-ksUk0ucCb9#7`6d9GvyokC=o!QgK_+Z+)gei8hc@
zLq>N@4Own>iy#w-?2X0L*E|<U8i2Po;{161PFX~^yMs`n&~__>cPvffuhp9wai}Vu
zM>@%%iQ5(GHefp0;F1hb4i*6;YSrGQXk#r!ocd*J+E!F}u&70m?PX%jP#>~JqUEq4
zDNT&F1lkJntr)X^r`cdz)N{|eQPGLcX@IL@Ii9#wowU-b7#?9-Q93y#RFu$GSJSXf
z{ijG%se2v`tBx5Ai7s_<j~VG~gO`Md6+>RrhOc}3!4h$~W%3xAXc@{0n_$%3W|NER
zX<6UWk`Q%Gg2IZ8{aFo4Jri7^R(`}Iu)`-ibS7NAE{VZtIB~uQp$Clwg_s@P7$zAT
z4e2b09ST7SqXu$i3t|v?NmXEBdHNTF_l~IvS@E|rV5>HxnVQhnWnHSRg^IR5x?jYG
zwqWBIwP0xPzAGi@?1ZaM?`Adh>ZT$U#EnQwyW7`{FNCW_*Xhs<GzzzAxJtE15N~kF
z9rCc#z9}c3)yq6;3Ims6fg%0F=1X@9^w~f5=tOhYM^R_o6dU#y5$+~7P3x}9yJ3+1
zT2ktig0}^-(sDaixdnUksDlzv;(8Q|JW;*6CX4eg+b07{v)IDF%)-cK--qV26Bk*X
zr^X)_NCA<q>m-Ame8v2Vr0Zb;BQ~l*>qg*vkmaM73A{7HifsP{iZlxf#X<!<%LigJ
zu%MBsPzeAhWQ5o;v05|4AZxIUn@;aZaV^p7d!RrJ8;40*0%ZMWkFU9(#dr2L{2m)t
z8e*$E{0e6gFf#K<Y?wW~vsB>aq}c2*eHMN;5N#%RSC566L4sHA{rw(9l-f8dh$6*0
z!DV1==I|wIh9nW0ypa><_VY-np}&~`=Gb84=*guz(TfYiSr(*X?e4A&k_=XC!zBjt
zxWvVS6`AVt!I%%Ckwm8*TBinPx`__)=%6(XT3E6uVeY5Dm>bptn!PLgEcs`;uCoVz
z|M*_RP-1xXtsJ3Iy*j7U4r&?T@Qm9P+gOz?V#BIo!~WI^I$>F4DIYm&ouq{62#Z=F
zh!(Y@$Gd|<rQ8b+@Dl8BMJ12TQm!}gsHO4q4lSM54(*hL(HsERI>cA|B!kQk>6oBU
zl#D_i>r+p5-)BAI|6%Oe)khPqhLps4+u2|Q&m%WE+Os=JN0+v=q!}SqnukRPsYnyK
zV)l`BraaCMDEM1$#Vu(Xy!V!gt>UjvO~{JBMTgXcQ6n{>&HD*eyD3z(#EwL4D3>0r
zti^^$qFPtvs%dWDTXxJ&`2KM;xe`#QbIMmiaWyjve<7#$>o)HwGcL9hFZ<$cb!D+%
z0{w;wh=KIBjGON3_@CtO+l-*Ls8g}oqi*P7FDX}XfvV1f9Gx?E)8Q)VJ8^Fjz0B($
zPNH}E=b16a*F}W351a(&qJ){BEyCQ13lxq^V8e@U*mAb2Kiztxz_7_TBsL`OT*D2X
zEdAXSjlys5N13Q8f(;-GTl>zm-e%wyU?cxrD*=N=S5e^?6w9@TM>G<JYFJsjlf<CL
zl!BoXn_Gh864;HBypGI~QgbR%Gs)m0u-G%As^tB}@E1t}Ew`&^noi`0zjQD^Kd@|5
z{H&fQ0XDpy@pIhq7>lzqOMjh*o+Y#TTx@p-R8r>?e46+(FHJjnCR_|u7_GqFe3^v`
z%ktjl_fni)3=L;tWB%NLvj{Mm2KY}@Ea3bdKV#(eX9G`%a<h-JH9BOnN?vD2^<__i
zdqlFj^KBwy0SrjycRl?dd)J|zxUNP2|NrJq5(vE*jC-Mm`0aC!Bn$y#*^nuBw7h0z
z5*JyLi?(+e(P(TRR=A;jghb#P{LtuHChSZ0Fk4yNz6$pA6I5s7))fq5WGXlHSx~38
z*zIVkXj*sIM-K{rtTXYe$y6wDwj~UWBz|{bE-%tVsY<%6I9dIVovf;ip4d<R2e&{)
zYZJCM4Sq0%%={AflCDcQ)mQqEF}#`tSIEGIXEl$m)9O~~wt}WrFhxhSgjn-doujp8
zSfw{PJox>Rowcgt3#HCOv1+d|fzs6@{oUP%5$W+`(cC39MRR32VSRfmvO8u#spsBt
zu)iowh!Q9%tpm!LqBM+dLl}zO26Uq0ps7&nU-?g!Y<rk#hb#O$Z|B3a-ccr?vS(j5
zv}YH?BIB>_L`~qYmdKTIZPKJKTXKFIgLnE)tqr5_gB56Y5lv_dADx7XbL(n<7<aEm
zVngDew?nQ-V-mH}8>*ee>&`q9ldDBj$zj1SOW6Evt|A2=Lb$>}oavZCEThL!SxiAC
zG4&?5G>utx<}?mNLIr;1bOW7<H?Dkpz|8?QoMSq$N(alhI}cw=cJa3sG}^lp^%ij-
z3*%AcW#Xl>j92P6*fZ9|CIWfA+y=V@@9H@bwwn1F2BDvBVn(-qXa6rWCR)-7#5n6j
z&BBS}6rQJB*_{JfXu6r7w%59f!IANJAKBmiq?A#t1_^_O_?ByXb}Jo?#*}<pjUFjz
zSlsu*xLN%>XMU0s+NBeonPM&NOtA`<F&ecUX1?{q#Y{O$H?cqb3p;wXF?qw})WI`%
zqUczd5jPMyUM<^eKvw(+*!I@pBtVb_hUB>Zb42b*lwkNY7sTp99)0T_YK0RQ3$HSw
zg?i$b_|r1X!<0ZRy#M^6JlK!p5d$gCwyP+gdC6cAmA%4V$KC)h*k0<3_5HUz8HoNG
zF-ebLs}%<JLqJsQge7|fg%N;k|BgfkfML!lhh$oAbqC0|`<`}pucQ7ecxH`u_-UA0
zH8vqbt&w3p-LvW5)-_-!V<<M6ziVSv2E?k-GcvqlG;CSvWQCo)O}rmc$=hc{bgvPu
zMkjv$r=6x+Ex*{~lNOQ<uLj<g4+^K)LI3*a2IF>h3!!56)E%AR_HY!2)#%1i)Cq1?
zd?D@X<7PYH55~9ZZh)Y1fES3VVofQSR|s3Fx2omqUR=lt>s>Emy(QS%$i`(|C50{3
z;jBL2Uj`If60O-Ln%FOIPCT+a^uO{SDY&}5bYsMQ7-m6>i7+mcxMXrQSTXc!zq7LB
z@XaBE^afLAgIv8Sxu4x@Er%PPEaGi1A7W7&gZJ9`5mHXkges)ZHkxo#jwWnU?OBs*
zmu<2dXe6cPU8lK2JKAlb<%&w}Xg~Pye4Gclm|Rgc8WFb&buH{hnjH1MXuc~`Hv12B
zN>}rsdW#tQd?1>H22a-ed5{rsC!8*}OG39k#8tjQeQ<g)<5V+08@frE19pK*^%fCU
znEENM9jqTRGYS)P>;bP^hvV^4vo`DqZI1f`cAjXK7Y;h{6pVHY<Lb_-hBy&7qUy;U
z?YA<AL2Ymcz!)1Y&s?+cU-xNPmShbWkF3rtcu0ytN}|HpBo&5@92Gu4Pwwt-Q)}Ds
zvORl$5m{OP(d?{|MU{><^txmwUl)EklM_02RVCFV+i+>X&C*g54;|q?aV%hi8=A0%
z4LXF%<oB2l6$KYK8r-P=(3t4NM{$HOc_iJ|EGUHuCefq6KA7^!b81Z0>54vKS=7ag
zfD%1^6|(-x!zRwRXxr&3L496JAdeCra?0Vri6*NAwZ)Z)hC<Ko_8*V+#<#Bg=O@O)
zTJHbJ#tn0f+u<UTZY`feXX=lZ#5BWd`DR}&5PNu$!6s}gH0H#O<44$RO6CPo$jF`@
zcSUP#ztFc<p-zpLu~o_;9-C7(jKbzM69x-z4Z*txPFM#hGogf?NiBCQTxHVEcYWP)
zbfX!p=8VyrHTYCTZNn>EK@wb8Eo?-qVjV1|c`uHRslkw`R<rQRhZ15^-Ehh>+^62P
zzZMLR3Hmg-mReZwQ&n_=*u$-P8P;LJUDB;|R>%I?cs#jlz>aHIBz67DphGD-?l2zv
z_dk3SxRjQC-S1yY&E$ln&yAGJ`rKx6hcz9&;nea|{-IRW1_6b8sk1{U)})d4>R<W$
z3Mr4)J2G3Ft4P5`)XMpjo@nXzeHj~(T{FCt_LFS7N^(eH1P$J=%E*;t@5{=5<GJyf
zw{>kI?JyyDO%#7+^3ve8(EDn+RQy@a*HCS;7h~|pw%V+-Go&d}##tS@J#vLRsxjK?
z33O)vj)o~Sg_<#P)n7K;Nx_c^G2MEZhFHd4+Kd5m+98|08|`6-f&=mfEd5)B-GH}a
z?tM7~D(?h&`n|#EXgAE7F?beXj>=qxs@|F1G!L?sn#&yazok7e&IKKW_cL6QE|bJY
z48EOf6;CEqLw!<lzS}UW^{dZ-Wrmx*8?6U~Wt}vJI1${UpJ5Y?3lLpT*b4($Jw}gP
z%DC{tGxwFPdS@1TjjXXGK2K0ATQXI_?_g8Kr}FVb{pV3*i>fm@p^YA=EGI-&tr{P<
z3o*rdwPb%uN!B}|<-9Nm)~w&LlYy22_MIrU{DyK-(BN!st>{=I6%g>4YZI5b8=Zv-
zV*f$fcEDGZPmZ+1L8Xbxye!Ah;{3b)vc8t%@spTKInlJx@|fLYnt!1^ETda*6CW$!
zbjEIsaf`E9^2ZBIy2Esn<U1_5iQ%lV+lvKv+1>ub{5R*-urfBm1&)sJ<2Bl98Dw)W
zowx}qgNEwj27awRoryniqBH*3{^OVAFn&_}>kh5gVLb3vG5y+_6-e3QiopGWt-8=4
zR#~g%8q!ArMy^Jd&U@H)73J((wQ~Hl=FJ@EzVI{Qp7}{tx}PaYu5t`<zIU4r7tWA<
z;Cr*+E;1I?)(n!maCm>snub>>7|cI7IkBSSaH=?E^2HjR5yJ*vc7b@{DMMVNWis-w
z08P>Qrc+k=uUCa>*t5V&oLYGOj3o51I&(1A;f7?%b^Bs8vP7qnWsSd(u5Cd;lY8$=
zmNw%e3n@Rl{}`eu!@z>LRg@q#D>>nM|1r|uR#uZl<EBMCwAgN9PA1G@uKncct4aNB
z3x12ELo<ps51X)A{*}L@h%tM|Q9#p}e4bm)QZcj$o7GP5oB`fsbnQj4<tRMOPn$e&
zleWl}CO$EF%ocVau_0w65^`m$_&e$5=3x)_d>grO(K?!ts;z~JRzx*6+$-B;+3^!T
znP?}-RmZ;O#d)}4-(IdLrEJeWwC{IQ@Fpged6|YCCa^VD9Txl|ftpOU*}L@41H%M4
z8*Xhf5G4k26+hj|TZ;bvzC#_xtFsV816ASoizp8Sr}|r-S$Nl7%N#A)IE2(0T+1&n
zZ?h2HG4l!3!mNC||CMSQ!LpW7&S{3Kh8<3~j2=DhRm0v(UrSE!NjsAk$*mIr3QfJV
zkDV>FZMZ;TJ;!?PhE6B@`Z1l68(A<G4hsIVwy0_>Cqz}r42qE`s|c`9wxi*8Cfbsf
z3%wLf?#PRtP%N^vYBsdi+XH0_GAPuYaZF*0$vb)qCt_f+w+UrLKJfFwj<tS<?j^|E
zDq27FTeDzU7rZR?%L-;*8m61y>Pt6j%dUod%;^1ijcNFFm5i40z=_`R=777z=sL#r
zkmZGQ3VQQ!v?PQI!xFuNCc+(H{o8y%QIV9a#$^+D-|@3Ysb9q)jy$8-HOukS22$VR
z9J#{YYKs0$N%EbTJ7L@U7hs%k-?XN$&i#bE#9c`P^y|3L6Vk;3!^J&;VSUXYc0-Qz
z3?fz6p{C)Lv0=x`6@7<23>{kSeHvT@EWRz1-YUI#p~dltU9(L3tL!T%fyt&gWnJ}b
zU++HNS-!VSuK2wdlod!|QFocdH`>Z%4o<_HNh^5JvuD&Dw|27{(W@%QHV(=HM$*LH
zWfP@JqDbPqI-mTalCOKs`6D?^E$!rlMae+EZ)q?^QDUoxDS_pH!livcAyF*6j8Lpb
z`G)_>pIdO-StTc(Abwc2QyzUXSTy#O!mjToLDtY$ffQS05Tq&=G?INK>;1_o%O1Jf
zE5C7dF1D6&3PoY$%2x4rf`B-hus)D3CEGSv{Bbm)qAj7?R=|bw=wsxnfxDMRt{QG$
z@N>lYgAE$F+<fxHq*t<MZ>CxjsURU>Ot|VV<FM(qAO*w8jZZqk0bdl4;^gGp!y?Mf
z&fjK~Ko>qgtP1Uc=EaFPK|Wxt^$e|AL{ncAkoLcqs_uIVZdtgN(Gkmtq=<c7S(l&|
zVS1BQiWM-Mzzh5@X(jXx`e^QFq?FWkLv39S%zEsB0!r0X23c>@U=g+=kROHI%a&HC
z^V|}vmqLVgP3Xeh-%4j!oWy;^<BDy>-6e}EJ2_#LiwzgKtXthA!*nZ16m4h&)*X*V
zHR<&nyKM^%f^}wMX+_=C>_r8giz)mIv!`AselvfbvmJ_)p$;qT%|kDFjLo|gRL@T~
z#t@9aw`t%6ghD*^LKlsp_+^oZPh(m5d9;jI&ose%U_k{xK91=0wI)*~YvNzU*%sqI
zWIol!A~Y?t;9|yD6|xrgLx~)}_Y~>KR4WW}Q3zt`&%;&pNR<tRV&Kh|DQCSI-Fcdg
zgyT7KWt&cj9$}*`lJdp1QStrZLwwh<Rn5B)R+CE3R>|Go#|kr+F=CUuP+@(|ApVMe
z#G3fG`j%DG@JcYQAB=HToD_ylcfzYJudEj2yIYb#FT1H0G)`Ggd?lt9H}+wrR1mMF
z46~5K`PF(G0buVonuO!J+O55U+C)BAie5$TTNQmzJ7lZ*YL|E^TFIzF0PkKsA6l%}
zp|h@~_GLMt()TTDGt8Aux+wdCygG`pTs}*nS>LtxS1$(?TBRaNNn~>e?GrcH{9pNl
z3Pv(U+DK>TbyzLi(h2RrmRUwBIPo)Eg`FvQ)0p}v1gwE#>yxQR2Dw^9*4)Cw@u(zw
zf?Qb=pH5y?bI$m)oz4hviVfavGyc}QkI`eI36qA^X3)&Fl;kM9&S~fmUz{UXLsD5<
zBUd7LBn*dl;@I1xNl|iFy&noFY<ew7tuR4n9L(qhAM+I+ZH}kLJje~r2|vtPA^22{
z1I8qV$|B0kKJa3zHCV<@kO%2@{flszKcb)k@nVdzinbcLNv8xE$wG*hmkLL#*%)q9
zFgP*e9;0(7fp)J7=fvrKWC*52y^EDP1@kTAsD+CQ#e!tpcg_byg{OF!*<WHrXkR5#
zAN*i-k&?Jin_>-_uUxn0B{`v8Iw9U~!(0sECpL0IdNJ1a?C52y0Y+{cKGViV9-XG;
zTZfXvD=wDT7{$UVtjMcJ`Atn$t*o)6Vz}10_dRX5^+;V|!TlBI+vzGXPV)F+${`)!
zAo0Us4${rcOKG~Tu`FhVk<1X+&TmD{`mYs?G7MlM&JiI{Nf*&sF@52B*w_%l6=~vz
zq%fVexN682HOgPLTF{nrMT+KC^1q?`GV;iAz1~$uQZMb(z6`QDTM-!LDKM%I*o8MU
zW7U551-QOuFx%{;t=KNUYE3uH{>Ng#YQrm>3)cB@596w{8lF|1B@v>&&iLZB`qNjN
zZZr-n<F12LNAY`CQo$<&xQub#`Z^zIEn!8NAVXn9)|!P?6PC5&bP)rpTIPl|1&0~b
zc!j_OLv}kLFXj99PqTi%w)44>6Ta70AQob7pp|_K8&x2AdnOx!zsM8blKc>13dsbp
zckVT-hv#W?hd0ljlIQ!c{Hh}MRuexnd4l*kS+||5<~z<P)RtNNPTKH^nQZn3Rl^Ud
z{lihlaDUkxx#Ez%jWkhjX`S+UFkV&jCj6hW!F!u%LiDWF`{Y?P;SF(mb+xI@C6&)I
zWL&xIE*b(~1$~BVi(JX+clh)>T!&^e0`k=fmCd_I1>3M0@#t|%8HE!sZ7G<N^2vVe
zGyjxS*mWYzWb^IeNw<5FrECvgvcV~oC4mB1;m}deQn=?F{l8EshkbVl*(Hn+t=So(
zWq`qu30mLwRA=Y^9XtPrKeg@;)eF*x&A0_Oz&-`}X-~(B^Bt??Xm8_H(ttdMO<15u
zdzkrl#^bn$3j+2s_N_t&%W^{7bi#p_6S69>ZdI}2NH!e%%kWAtdiAzs?Jfy}Hr`)S
zK8p(!D{ThS3TSCGdVMEsmhMq5Xn8+5*}T6Jqc63co>v!CFx%`GL1z5krSfi+uUmX5
zsb4;hM_d@_^uZ!3%M4!`dd2VQviVz--M?+&rz&AqBQY*x5#M+j`)K_~V~HE~d=oup
zZyvVM-eT~mY(aKtw;i!;;+F|VH}}%|*7vvu->1r_z2*agXjcqIP2J=!3`q1FjUC;!
zYOk*uEQ|;HXjRQI`(QEP|5)W$JpjCjcKCC6XNPzk$ZB`39kU(f19p~4{N+Qxs0FWr
zNN6!}TpxJZ)j1<ExE9ypucB<&ew$>4-}hE`;HiU7KkQY4NI0CsjHxcq3U95(=k>|V
zu3FqGy>cQ*(cQ;r*=}nV<~47#&E$mW6%j>t1x>2CnekUw##XtNu@yx;>r}+Pn|>Wp
zbvJk7o=Zk*|E3jxbfHPaW<O)2Gh;s<km|Qp$4VNYaGWHgFlw6n%nTC(PGwi9sugT2
zg<ufuq$P5t%%-CErFBwXX>*2vEU!Cb@Gg}<*nBmk+lA&$u?wSZo@w)F!hCxmZ?Q&n
zF9I92*svLLCFbgaT#f8a^$RT#edDH+V8LcDX6a^6se+7L^_FB--<S%boK-a8O7aBT
zPX{#HDtpriQg1;B+mkW`$sB3BN1tAhtlk}x1o|mu7ykP`^1OogZOm@a&ggLxW}c}I
zgZ?7M?}Kmb1<Zg}@!IJAu;6D5>_^eV_J^YztqmP(s9d!h?v27eGzK+xo1j?O11tNe
z!3o~6xvONfZ76UY`l$YvlupQI>DbW9W(qTuj#dR)+2fG;4C@d(mPai3GzI4&SF77z
zCAZ2aS6jskaz<g}v6PE7)>t`NE$yuaz81v~)D*7{8>~IhAWMqaWQkpsapIbKY4k0m
ztb!jaIH@2})GPrObjn^ZaT8qi8Ee14p)!AcA>=UMEpSW6{eheMW#kPPkxQSS9zRnf
zRYkn+u@3Qd?9ItdqWJ*EHRTWpM%A9UcG-djk2F6~(S)OAT>m2l8f~U?3GX6HW|OJb
z046nFiE$Z<xDWlZzjqhHi3^fO=2VpzX?;iv{bG1u70((x>!&I_(W~f6G&Nf62cLcg
zz*s&IF7fvpu2z_8_E;_GCRZL19&7I2Z-fS>+k=>>-|}NOB&%EGA~G%`DiKk+DhN@i
zHtpx0NHA5>#kj&;OA6+&!j)o+tvf@)u%vo!En?N~aGYpg_n?Lkd~q%(bZT45d~yp5
znlz|Q`jWEI##SABYj-u9=GvlVY-e^S8ki&1e&qL~f8`qrO;@+<%Dzyr)xb@0uW0Xh
zj9p;LFJ|v=PBd>3YmSR(rGo{rE2ojQwIFHldMC@+8o4@hH4JhUT26fQ=5aINt8DN-
z5A1SCFQN&p=w27mgtqyBba&F&(JZ+B0i~jp#fHn;VXvlKAXg0pdb`7iNhieMX=bpd
z%(9lTAXjLRHs+`ogsUlua365vMdOr3g6|803ZD@bhYJBC@B*_E@(;Q=S?~XSl>b#l
zjPWBTXrXuB&P}w4oy9D;Zx9<|3<T*$F{X5+p!+CEY@z5_0zGwR;i@T@vS2u<jAAvo
z$&m5*ya^J;leNt&d&{GJ>g#kUcN?=jkrUeJ5RXa~NE=R97PK)A|58Wn+f-GG@n)xh
zLK_ErQ{wy##cDi|aLR6Ua<UpXvQPY4@I;`zLM{43RWT+XexWI@qn~y#HKrIrT6*&k
z*L(J4J@{EQj+E(uejK~;8%N!lr7Lh&v?eFee-DCs<;Wx}FJ7bR$dQ{{5)F(0`gn-%
zo<f;EvQBWsIzcRyu-T56h)a^-AQtY;R!IYT7%Cu!<o&sw!FzzasJ5=EDW$}*)F$42
zw<|fsPj0AHbVmkQkk)%G0!DOS^_uIgf~3%N)px}x<q8a3uX3Mw{p!sW1Fhl$6r-&l
z9Gh72=)@fiJ#zM&59MmLOfEsfgUJ1s$t=1O{E=)_>|l89qyJXSvKF-M)po$`gzeB1
z=l0{n%eK`pS5Y#4ANy4w;x%6@es}MDF(<B|5V1H9v3ewZiZwkWMf0#0zJ#Z{fNAwv
zRU4f%SReQ*WSYq*f@NZ3idCE&TiIH>lc9~~agF_2UiW948_3QfF=I=Mq<`fbim<IP
z{t1_GA}oEET-mK+?{4iG6CCCUv9=Bm(6l*;3-vJpg{UfO*kD&=y_<^3Ii(z8C$=z%
znD;8^$sWXD$0St&y}8BF%LebZia+w%OB8RaXCJZGCYta}sAz8#W5kB9_F}{09Jv~M
zO^~ayQ&!&|Z<KP-n5QwzYCLax65$FBg~>~29vP9~GuT$2OdVXsn+wbe|8?Uv`uaC_
zyZz4=T*Yy|!w9)xXT42>v1Uy?)q)K7>L}mRwXAKjdbk%oXlhRm!#Z2=g&8T0M?UT_
zV-1K6?FBEAu4RxYD@cUhqB12#^wRqG1oE#~iJZ`1gjxM-kaCnL57C4ST2ytW1&r*b
zWfxZBCmc{XBIcNXFNOSSA>pT}_P7F#yIVwsCRngL3p^qQx2L~;COH{o8KM+wi#@j|
zdVMWhCS{FOh9E8Y0sqA>zuBb<qXIqQhB=OY0cUll{@9J(C`ZRVT<`Yh7PJ^{Rp_bd
zDlrD^KUuXm_tGfcKJOC)eez!Ka9pJm<dNU<Jp>OCbp8JZ#1m_ll|W=vrZ#n_eq8D4
zbWzq@wINQVCa8{+9WRBR<k$HS`SEcSD|poHE;EfBpLpkWRt_}G6@0;h%H@<uc+V>y
zf0aDMY6mUhas3b;*X{MNH}S=~z<KaiJoE{tnn#z<4(yF!pJg(>W_X3?PEW@Uem&fW
zmiP_5>xPF1?WT2Wg@RvG#p-H)8|EUBAZrr4_e@lT_f<#qhvW8Y6R~!O<JcE)?1~uk
zYhhN^#@47RTJHq-8hF=fZ@20;4Vsu@m95=-_L9Ku;bg`&3#}<Glt&hl`V7n1(vs_6
z`JO`YPwPEK7eO%^wsMorLs%B;Jz-6TaD}HqV{i6CxcVh~_OOxaP>c0qfxrB8YdcLY
zBUfE}<Vq#wY3R(ej65hCyxS`N%2wy7Kxhe?T|^UFA%10{BKgu=&Jl3vAs-rxt=O<Q
z$DKy@M=#E?uVK^A>sw|?DU&OjaW~IwrCD}#PPl6Q#h*e&<MsO@GJfw4dt0^K?boAV
z5TY@SiI%~v(96G@^*RPQC#@eanL@R3;iI05FrNq6)Jw;!1U2vDoxzE)ba9u%)lphr
zCIOaLj%AbutMwKUHo=D2eCnr8kl|{=o^d_mC~FR@`cqUhN(7W{XMWamqBCmNf(*)@
zYG{Mef;sFNkhKsXtL+hqnwxG#$44IT3l<eN+7)VJP^<=uLi&;zaO~Zf9Kft#1a!@S
zEx8C&O0EPp-72`5ytACJGYcY{sUOC$gbem9<%C?-k|~zW_&*vR*N7@?MOQNg9b=%U
z;WBQ;hTR=zUMg@C{+-gdk_XVS&?ac!Q7KPw@H8L`Zz<%I6=pP%*QBgBc6|@hhe>zq
z7X@cU`Phv+(=#~hg)O|$;GRyM_%m*u?Fy;9H~S#jIDR%<L<ZvfIik?OxtHQk-yrcO
ziXd*koF~|w;>xxAmio02w?Ex5+lQRw(WebQW3BPJ$nk=2V=uUoG<UU-8K4#nR^vbA
zf;GiWec`8dUSN`3d8(u7?yiqsJ|!4du8fA7D2d-4n5&#fSp9T9IayW8C*yo8Jg#aY
znV-<!u%L_I-AjLUgHz$(i!&v(E#BZygKH?0v1FfKb5q3snF7RthSwknvqIOs?w3`R
ztgZ&$bz6AV4x7D*7OSx-yq}2ZuYcQsOUfy2P&h~xt8xjoWDm8iGfP?<lXf?W>pk*V
zxubxud1xV7!rb5RsjMv4%gKhQt?l%Ug2`BoC~=Cmb1qUj1q#K&5A{vJ{*~vI!|{lr
zt}NM0Y^#UBR+LnpZ3l*MwM@JgzPq1H-x_F>tFf0hLl1DFkz!8!t2dB+edSzPO}E8p
z>s=vN)-LNU4c?<%@uqNSThI(ILXD#d>2?=26e<?{4PvxvE;hVGuI$km+;vR_n(aY$
zf^ln1t{R*DvdW45va}^sd%~4mttO`MZAMzu_GnnSuta6=ggGi~{H%J6Z=}CEOC1Nt
zpu%f6I%O5F=Rr1JrGsVMorh)jty{}0XD=F5$}HH!$W6?G|H|(L=|UqjbE#^<3Oy&n
zwlkjqE<fGG>)m>L*#E})iXWl_jmTH0OwGb6qhX``Sy+|<vR+CaS(s?IhXM2Lo~SSE
z@!p+<o;_1nO4*woJKR`)%OlToSJ|`A{miNvHKyeE91Bc|#C`FaPn_@^8`GFi$H)n7
zs9yzBp~MtRRFm~Ll;bYLoPa*!K81I!gRd50eHfZkY-#FvQ6E3qD19QU|NN$d=j)y^
z0Xze;7S95*3ZCtvF=w6#43*=0XG*+2hAV!7pzq^@&>KvL=YBfC8y({(W}()e1!Ff}
z1X+-5Fl*iIKmJ_HM4T*c`{)8U%BQPj;DqJ#?M(dPB69o`L*jcPHaG=fH}}#vuEyKM
z$I;vS|9>2ht0-sNbAsUF8ngAUWxG2FRS8YREYR9a55mB6vDm`t)VxmdJR2}jhVfRX
z1;|oK+_5HpolwH1_I0oJOD`BR7nvkZzj|6>05SAnMf0%XRdUzxN-FsSm89J9n`cCh
z>t2f0UPqpQ`JE*JN*D7@Wz4=zhIqz(ISVqpy0%pzv4f#<biaB>iq=MHc)gN|hMrdG
z^`=H`R;jXuk8TrzaCAmXs3sMpDYLh?8dmMt5p&Eq#PHrt{-6^8yOsHg<(gn#Wl*o0
zGc25%vZxY;W4-IF%%`$7#VShzr<QIx1^bT)de&LQE6e$B!9X9KucH)&RyF@u9#wGR
z<0e2@godrqryfy@AM+A|Q8g#VUGxyb6-MmI<Z2$Ve!U62hO=`7LSf=oWN**gQZ4u?
z0iDZ}(U#SFY{_M-iQ-R16Dq57yI1IKN%4mtti+^JZ9%RYRGZzs($k?WyS`j=dbHY)
zL$YGlq_0UM8PO-pElJ<U$kk}o5PB`N>d@dn<5h|WZku;i4inr-3o{Nwno896f#3+{
zQ$e~Nuhb!!(?wnR%Vs^CwHM`>2&`v*hR*GlG7Zbi8%C@XVFgUUoiN8lK45YbDvmv%
z_Nf1(rlM#i40Y@ojgRKSv2a8jS1`1f8!#9CG+f3w3!DqK!nmR~{he4_7)NL;%8tZq
z!|a4*p<$gMi=TsKp#{i*MSEo7-|;Gmo92U<BBDZ(^1X6WVKc0t?29$Ew+%Pe?&SDn
zGdt6ml4px4;WWqWPi~tPsHtC`ZB+#~6H_dltSykP>1u@P^yXn=`OuMq%43>oWPpLC
zO#Y&v)2HWjtVewv5J$LS3CQX@;VOE3ikvAJu{a_chj0dsWub`#%ldv^mMIvhctT_3
zpe7i2Z|58>1N97?XtGK$LcDm58wFk{(N@2l?20ju`meW#lpX;aH_UMs!$l-9kr!5A
z<7K=IvXB!rzVn7JFAV7V*Ai^?kbF$yE7IjgCy29aMpne*kJv{;_hsa*BD+*moR@$<
z11GHSGmjx8N<H*foug4GAp=KKGSs@W!T#`JC{lMN)#9U7#~RDme5z_Y`kIDUM;12z
z7`WYuU-5p9lf{01Fv@4nMXam3%j7GahS*R`a!vpGmMAdPtzbb{JGx&b$*i@~a1mdp
zB5w~zPR%0%*sTuAlnr~8WtJrUVV$eti5FEWS+!R^lsUw3t%+Foso;rrxElF)_AG@|
z{ET{G|99~;Q)0Z3@KO3UU{o7ZEX9V>Qba2<6;H#t!cP1yE?$<mPxRMRbFnCRj#Ax!
zqgU>~vS74eFynGVmkDM?L^#YM^WCFnk$VQ3B*KsV-ih7R=B;48`<Q7Qth<QarX&-L
z_F0gd@I>2azoIpARS<%)FNYgioyaHKWC?QBz$R-g<R!AnvOaX1XhNxWmo2s$2o=jV
zSz~+PNST9a<f?&_dBUKRfzBGBrV<U%Tf{G#Io6ojh|`zTd6|Z9Wc-!4oF-t0#_aut
zJkr^Z?m@SLPuBS^qcxqohJyyncolD+lvjAG(2Qn7IeIwRk(+eBKvl0yU>mKHd5~e^
zgLcgoyXp6OB%y0IyAPa8i6NF?YX617MQ}}L77iHK;xpP}PV}2t-(&py$p$qqJHYoB
z(egPq(Ku@yjwEReWTCClZY@ayM`qNBt-4raH4D|E4+^A}qn%(XZTCdLY$e@r<e!h4
zSP_KEn39)RSX5y?(A9E6t0RUwoe-PX;TxF3{$0uxYiy~SEcoH2Jhhmc)C@18oDM$|
zLKkN1ZtcwRtL5WJiEM_B)tv<^`=sMr1r-xUmhs4XpM~xdQVYvvD_67|zm~A9&Qxg(
zzu7PAYr!oAbx7C}%JDNa4yMnq<14t9P`1#;Xtd!Xnz#uD&mzd&D95&F*f`%}nvGGE
zZ}w=?4NJWDHx~R!*1>}HG3>D|b`m5T><za&$4}8js88PsyLb$plgEt57sl<(OVEkf
z7KbKX<ga)x2}U}`&>E?VEn445rQmepY&&p55`m6AG)uD=8+zYkk9X8?8D>`V4orb0
zr>`^d?{b_>!JCZ0JN<dM-QRBtJUGym!V0T{sG}w?Y&o?Ivg%H+uNkbrW=+E@H2eEB
z_%U#C$yBsCu0ip|B4XJ2?lO)D>|8U9^0VD7s#Uf-blsbV>V{`^)hp?s$x&CWw2Bgs
zt0Hrdyw3bwGpugjz{$Oe;j-$$!LmZ|E?ufj#JUUn&_^pKEOiznfT{(tZV!T|^=oIc
zp91@Y7FGL+*4PxQIF};Yiiy}ohxuks6Hl!|TX0K8VVA-&H^1a_{NG*Z?SiOQCxu{_
z<1drP33kMoo!DFq5TQdCQLA_|dZMlO#_4_Frp%RUQd?GRDYGopumKHBJ7q<Ukt;NH
zU&|gH8>MieGX6wtD2hM3Pr&pw%2x*Ov+s;1EVM?Fg^IrAy#@802f2oxti^gQk*iNu
zS@v0FspX2+gZZOm&;B+exTzUcgWQ1g-C&u#ObNN_v+A(Tm3zSKJKbPE#+BWDoGUL0
zxYoOwpBb3wjY(_a_ocCa;;jsab0j8jc8ONKI}z%$jMi8u|7}p6mIY^lcWJadCX$OV
z#|icqQCYZWoYnhyyYNzh={S`BS7LPNDZ#Q#Rq?~fO}yms(_UP{ZnP%&g@G)V+_v%-
z{uIaWg|fy%wVS~sn8>_4p^&LCQ?_N~l2&e_oZ+n+%~({u+gMaJmJ?DsA<6m(i5j`F
z)g5)CM3=Pf+_#e=7CbpMG^)YE&H&$(kK-v@@P(_<a){>JJ-cI>utK(0d(<l#^AF2r
z@11Gj_*weoFU5joUGTCb?aqtW>+RExnCchQge?vCalZAF^)k#1n)E&k-q=O$D#rDw
z<tMjHZx)Ug5e~fwvQ<PVS!(3rzq*MEhG^U{CkhbP89%I|hryvZN8G-|v#U1`L(7+2
zQw(zTbGSk?T4g1u)KuOUW1waQuoc^$lj~YdgDl)*B@J-m#&>H-NS6o<@7bys+A>}C
zT+PJW?v1*z3TrBA8(w9bo!GE1{H$Vkc*e<UXyL0XU{cg|)6O+To}pT0Uq&6?DcRUO
zaj$9p*1Hd}TfeFV#N|Ja?jTftwi6KSmQE0->?ZfMgd`VbQd7^pW4ddAsk^>a=R~ag
z8rw{pzz@7TUR!4W29H8R)w~;F;wH4H4mW%K%ek>B)@R8~zUNXeSlvNRr|DQL8KoRJ
z1MZ!1FtNspzcH@&uPhk(n4ZkTyhODk^kzk5<44X5FzRp=!FJxrlPZhaDUbAEhz0GL
z1`Um)S+TV@)?1TC*_UPHirk9q^@e11zB0&_wN_VU{4sK6tN1(drhY**;a)`(vQW{A
z+^&7;Ljlcfr-TH2g$np;;IbviRc{d+i}(hLTAYINR2O^prfw%nHcL`LhS4yFTYT>P
zWWI;+*~IL9_6W0gDVzj%5+MpqB(7G^zLQhl`gZRn8*&aWalM3C)fWy@vcVhFcK>U>
zT>rv?A(V?{O1z%>Bt>L1`7=<fI}b;0g3bz30`z`~h=#0Gw)<t2_tAr;ip_&8d8m}N
z;CaN%S5EJwD|C}&ZGB_E*x^VUv-cNK1F71lFqFvgi7-abGCmK}x5-MGVmW~Y@u0Cq
z6^_VW^wx4h_V0=tY*?`Frbj@Z_rgG*t!4_dyh&>mi&9t8lbO|M8C%iGzLq0<SPdNI
z82?IYtn7gdRY@(Jd8q(0bO<(Hi`o(6>l6$UoZ5w7mblF?a9uym1n+?bt%pit(5|-!
zT;`}V7Bn5vsM3ueuQAQXP&CUb%JIwcf;F+eu(q%hlALoY$M5_g5*FV?D+FIg-gp@Y
zk4Q8&1y>EF3NmUmTP2NoTxd^&TsfA=_9q*Oi-Y>ajq3-V#@SX00Ntd{5eaJ08Gm)i
zUHP_*bln*#eq1YO5C!9~j=6e$!>bd<Re4fgl-F5pdpHu@#Im@HKN*77S8H*+Y!BG8
zeHL92r=R{BURU`ELe;&tXDKFg@Rr!HC}{~RatVu4;2`PpZmq-*Wu|_`6}2iKx<tgf
zGk{Syqu09|dMIT}X@;3p<|@zaYDqSG!OBp#>JY|qX=93|tljmtwlo!7#R~=lRl=bC
zmnpO*&eT|Ap}7|EgTa=+yPyl=HOT{6*BQyuTP8xadhELjo*HhvF(^~tCGuWN?i_9u
zWvSpYZb-(%O)Mmfa;4Op1x?Jdlt+3C<O(xE!ymIHJ{88RYOXT=4mMwuu<}CLd|7Aw
z>1aZw__Gx%mZJ%6g^H*)8@v-%(_bdG8qc=K)#n*<wXhF2EaYuUB!087fw8|So88A;
z@25i;U@M{sF;C)kS6gNcmTgtNrjVu}6Jsj{8TCma`1Fi*T+x{Cqlqp6t2YjXMBhdE
zcJtput7;Yjwa|cQsPQU!pGRL2E&P5NnP&XfcKkTf#}}gTG1SH=6OpofT+)v-rj`)5
zfi|JSvD~PY@iloRdFfB4LiL;|vbP;ZJA27mEY`cTFtjut*I9wSc%Iik`njCYVnecv
znGvAWwUiT@4Lj4o)?Zx%eQfP+lcgx7jAHejCSao!Y-s$Z(CjU(u?l{65Eo?{n0?|#
z`dB>z=EaLJd!Gemzjqwvsp>*0^mdwW7eUr%q^@k4HC-kCw`An~D;0&@Me?2F)9?_g
z6@EZ}v8MZBN5Ku&4f75YuDVl76>R(-vc-k0e6EOdW&47}R#znb>*1}jHa{P)QbU#*
zcG*s%&L-HoF;u@>Ni?;wYOf|f720)5DpP$4i)*?7Xw^<-#_(!bX?R5#m!^kRV2?O1
zR{O!L)w#*wc1N<c<rO{^ZiRwwebv^fyuw8?@~^O$&0mK%;!d)iLZ95^`jg0r4e{@-
z8}dm@xJoN<B>ah;wc?6hNzn<0@hrS^jhu*BA`h%smCHs)4ffo+7!lr#1Xdb(b^T91
zRaRhP>uvSL6w6{NfoZ#fp%w%~*-rd1g=7eV0H|3b>VoV9Cobk%tV|?b;X~r^{=Twj
z%xV#>`z6e(%lcEyE3LY|PC?h;0x?p!F2_)|?3yFPO#@d;1y^a<)MfXBxLexh-68y>
z!Rz1QJe{xsaz#1mT1q*!m!9FW8EUU8#}Y*;8@%@$MH3pupJ(|(zAohh+C~$i+O8HV
z_LgyE8TO=@W-|qRH9)Q~Cz2B<U#UjO6;6NRtJ5El=>ER5;?<g9!=bi$Zz&c0<Se$)
zD$$ndxFQ+`A6yi)kDqQ#QXyettoeGLZ7;oDuPM(Cr&E>$zL6(e;&Nd6lTx?-3x!0N
z`wxs3wD4q=QaZpHq80QO(ag^<&BWXIcX|brdL>@>wR_c1c6~=BA2{RQ?#Yr}P$Qh|
zs2v?kc_rzX!XUL4n}3uffjvur1&2Z(y{eGG$jSiO$O)}B#Mz-cL{3Pmz}mN$vJP>u
zh^#vFWbMv4PlIs4ttbk|ZBeYv{xH*)?5NKo%<8i^ZWUt5mUMqZc?vxAqC+=%@tQ!(
z(Mer6_fz6JKL6@Q_hEpc0%JEW%M7J296yV)?em=H{}od{jz{$PBFK7L9*FM1*bCDK
z8@bS{NVX;9hnYeXyqdOPEv~nxY(cluQ|M|TF|xM0st=yijV{bfKJE7pN{&WMyQ%|5
z6?|3p*s6Wt+_!2+Bh=Ik;=QOhS03!u09wi_Kdgx%QL!3!(w{5WuZkV=YUI{lz1qba
z>EZZE=nB(UF4n~KQ=wa5fF|??n@5ot@GI=_DOT`{q<2FqXlPou4BO5A-`(UEx977s
zxwThl2^ntM)S*|QR-(o0x%UZ0Mjkk<j5{<{^)tm*n$@#&G$vYBE>(M-frw>kqeD42
z#j2}bJZ-BFI=8gzDR@9C8WsC2HD(TAB9G0x%M*}=6G?w31^xFI41P2V#vVGC6_=No
z)iZ!Tny%vMquE3q1}D?j-(_%>E!h1`;HG()H>S;F#1i93bGMo)wpjM1(+L|QS7J7$
zkSkjj3N~k}t|nepWrOzy5Kt-(UCf)ZO+{=KP54QWqX-q>?G4^VsrRZWTedpK3*>6q
z=w^j(HozTzXr{>fU{9)dHp`Nf!!}YubOFw#Gmls&7)YLA`@81hNNg(uh>=y%DhZyJ
zA;^T%ofGE9s!LJ4@K_0Qblfj@2L6i+F3j~#akNHcBX(w`g@HQtQZFVy;qTEKlB9+F
zd{P2u7|80*LyQfKzK6UHe3FIZc37fgty+*C>As{fDD29&)B_gEw_M?11Kg2qo{X}s
z2{){d>!K@pL$aBgS;`4VMowsx`9<%yf+OLGmhvCWzEzeY^N1SUFv}=b&xzvPjtOQ8
zs%@;X#L230ysRloSEwPTm$5flCCTFqvZSEL<7``27ZPH&h`r}?XidT3iL$L@s9D+`
z>UHdomhm#oan}F7O+2dX_9W_@d#T}By<%v&vHt|i!Gd9yxu1#-u|KCfVVmbgy52GL
zw0av`XA2fgE+W>DjwY;sDd90E9IBxc)kIc}+f^OfRiUE;(Mr|gJ}IQgtEU-6i@j<{
zs`_-@kW_vz!&UWd5cdVqPR>?I#SS;S!`sCBK@!WjqMft#j*|z^niL~s<mYcokp!Nt
zZ_q6#z7jh^X73z3cvW%|=1MAfRnb;9Y`-;yiPyx5BAU}}*psz{>0K>hqUlxDs}&{H
z;a$bw$pOBePy0^eWA(Lxn4$`I>)oxw=q`%!w!&8RMTmuPIXrF8Zk<{7!K^v7h8=Wv
zR%eGccU#=GK6zJ?nkPV3M`1O)hx3bm&$2r($tqqCxjoC;z<EgR@Fa2??iHc9vWvZy
zLoQONNlTu*5{hb1^>+>qXzW#q7yD_Tc13iltO<9EKAKYyo6<r?_T-r|ay79hE^3!`
z2EHu4s>%lM4HSR5;Z5;;@EfBE2|MaCcGP8qcdIvZVktz5vegW^3R)vq<#fV{*U+?N
zFVHKSWpS!ta}m=8;Yy6z+rRmLu+nPG(1Gk3hX|izpF)JveCGstZxNMAR^wH&N;bGK
zesANDzqw!_VZgi58ht_L{O54i%+G>UL_p82hNQRSaBmvO!Vmaw`|l}IF6da(7DzJR
zqjECZYKmgfb77S<K%xqz3RK~StN4mH$gP4->}xq;P=hvLN=Z%_S}~gP?Vhj;KB84s
z3*-HzfTN@VF^@#wI-`);Tn$kyQlMvBgE+lYk2jY`nSxGVmGTPFM03C4SCZ<o-X7d2
z*ZMwM=*sfa=)0mf3T{ITKg`N!C4j|Hg9Oe(2R)DI`}Y;}9p22`Fh}c|h(k$-44;+`
zxu>v<oCJD9!kQNJm8%tFHqN%aS@^%fsx$F@%UeVtSht`4)HYf54c-q7unX6#CRyvF
z6f#)H?ds#>I9f(^WPnm1A&=qexZ8I|ikMX1(+Drp6{y~4NFbYwHF0OFSPfTb9iuIu
z?X#3O`}spwiT;*Eh`M;?!+*#8r|C8OL`*F!Vh1I%@a;ALMXaR7O^mDHPs1F{R~06B
z_)v<)3TOC&-*v@W3aeEcE@65ssL|au3yC|_M65dVP|^mn`FWiv!$N|OCAN<>dH~!&
zBfm94m{ZsvSIo*7s%+10n-WOTY1$Uvx11Um;^fRqK)rdZr#a3VZzvkZq2+y<%ru7c
zcg$>#Eaiyu-6CF(yo`<UBfXIR6fJ;GdEOfZE~_x#F@sJSzvJhS@-W-B@9uCU*DN7i
zG0uY%X|~f(9+`#`h945k+yN;YGAznZJF$N)EF)KA%L}vM*KdQrjlI-%^RmIat>RCC
zW~Yd~=Fx<<0e`C6O!rzPb_VY(Hryz&;li3}cEPzKYbhIVF|~)1Q`XF$XeWiBSN~*|
zMG=inFR@*TaD`<|mqS~^m4u3pOP1_IHwn_m&t;CR4RpdUn3b1$;*0Xw<NYg-C^RkF
z>@l+*ug=(6uVk<mFKC+iTz_W%u(ij5Or#*D+w%t*wj9Z(d&{5-yRth`*!1nCJ&KiY
z1yJ&pZ@JCpk+y|LD_LoFf^;KtLY#YjcV$ZRiSn1R$O#iGoFPoN9X=wvY1x5DsG)JA
zny%6Y>NAQk(<l}TKdrmT6ih;ms1Qvt_tS^SU9pp8n0K^67Uc;BnUzGeX2E3}2`Ovp
z|4(CCJyzCd-<zyN*&G{E8ctV9_Z-f8rNB+{fk#z0&xg(bpn|zUk`rJxUdG}yB_8a9
z1vOWkKM{>2Kg?t^a6(}Rjomo0S22_e?k9e-?hyBh{J6r@+V75xopDDRvEBO0;*Nv^
z@rKlT40+W$aFT0l_f=8{B_n<muRr(FyEk^TGU`)(85)?YHw&sydAmDwHBYSK{j<J<
z76#rAc56>=znNoiGmm_+Xm2~^&3@s<MC(NBx8)UAE1bLj)0MCi<&?!7q_2loB1Gm#
zU2Q`0if4@LYHDF|3KOhiYN2@S{?xfgZSpcPiAt(X-DxzkIPvb9h4{2<BG#$~5sP@&
zkvM3@b=EJK+%gZ<CT{JCCy5ZXKh@lZGob9*dBc(AEL-Ml;@{P?p^cf%F*z3Y)VnL$
zh;1J>Xg%#!e!{Xk3?ZW9P(zHXKjMLg4#nk$bHOZr8suf`bu4s7Ub@g(=TCh`<GRKS
zdMIowl~<UthgsW)9mZa~-i-|5iU)jS%@NHkvaQ&&OF&^W-U}NRsVbq7Z37DmzE75r
zD?6L?Ld@by(3$O5{xgGjOT`~qod=3HHU2+)*P-3Gt!@AR|B~k-$*PpZ-l=9=Z=Z7j
zh*qHpQnn|#!Q#rA%upm63pRIY?Z_uZq6uHRMibVAio|-d3yUXzV<k2m*ozG>kt<tB
z_LJwHIs$vVcd+;)=(XA#ldG}U(JadxYU<~8!c{ld!TK?C3TP_~Y&CYt+v>rF7<>Wx
zDVb<J*D$MjkYlyC`SW5sFjep#h&pH04zmcA^wY{s%2iaNuTX8Q*2ix8=BC3{Qr}*e
zG*x7Kbz<}PZ|ij8rT7(oizBS!(n~7zGY*b1#ff$tQ}x^JZd*{>wA|r}KqoxUPjJ?7
zNz|<G7JF8_w7&$h`X3p$<wcN-j_<{Zysmx-XDC+G?k%xiuuf-o6Ml|$oCUl?Z?myr
zN))!(eg%h?I$<v2zU8%*!mYw`LKQOT+30jWK1@|<xo!Jo$A}AkNYscOZduB{Y!(VY
z6r@$>ZwlnbnN|aBmX3-=d0&rrDdl#LN*cwV09l<A+?vaVowBBG`ZQBO))NT~6D;j<
z#vi^tVJu1wXR!<Y3C_Zwhszj$kBZ?&^uH4|yFU=UDom?okdIf%lV(^w(UgmqVUAh1
z{bqmuch<U2+1?5p{(%4O`S2ni+NfaMi4ItF2zC7=hL5006HAA^oZQ_*@r-KuLsXdj
z<i{Q^%r;*Na4Rr~(B1vXe<>m|)$=rHz=fpX8hO!}So6KtBoYRVL@9ByV#BMb;qgbL
zDKGttjl~-1c6hBpul~i@nlOs7k{WpV)p$V?#JSlxC@vK`=ASO_^E>jhB9Llz4Wz=%
zoH0LY7G62*k=I9Jht)u`3N%xzfe~b~3!6RI(R|?u-8FSLdrpG;e1md#+PTdV4@Z>!
z$E`EJu-jPW4Blj{T^3YEDf`@3I!9B;7(sh*Ikq0lH3V#Izusq~o9*DCD3%n--E*-N
zVv1cI&O+a!nK&={7M=Es%K@|%y^Z0<JDHzvmN9Xw25y~O#gafQXCh))r9TD1p<DcH
zLy&@ot>zD6TOCD<fmgV-iYc54;i~I__vEa;5x=b0RkH4?jl$G5{_68iS=Hp55p_qd
z(2!NEkgE<!d3_At560umiETl%vuHwF_()Y-3l*)Z&8g-3)b?V-&*Lduu$x*?e7d9p
zbc9acI3F7RdeUBDwll|+0~_@Zb)?|*5riw;3eYnqrf|eQa*tJN>^ZM+j#mo}jy*H2
z%TIrwXN4Js#^OnjiS1!I5EU~&AG_%Q7fa23t6_Vo!BYmLy4)15MTl1PG{3Xq)Yuta
z<b;Krlp!7s<qnrE-d_G#A4m}a1=(iq=aL~P8``Vz$#285&@=0}#7PCn!XMoD0htAC
za8$iGN>u1{Wz^JBEJ+x&8p4xrIoq>a0d#m~P2E(JxGV%X=+Y63`y|$|{TVS)2Ts&M
zPKd|)$rLNFhM{mSQQKiHzp@V|JIdM_4`>F6@L$(bR)1FTe4lyBWeZ1Jg~g-N2QUH1
zT&M<Qt-ptnb>z8+(}~yj|7pi{^e`q>@FNL^mxVm~wg=3~RhW<0i4n&cL~DR2qno16
zxNYVYfm;7)`8nst?&Exe2|4#O48&8-F6?y?N@J6sa)x~W_#oH{cNMO{ctt6k{mESv
z<ciCm8C(wKnp;n;Pa<<}#D3~+8C%^aceqb#clS2xKPfof^HedT+RQQIjy3nvyEHBG
zb$41Bupf<$)zoiRJED#&_LhI<NV$eRzZzcMY})?tK6IkLxRMPm+V049{x7keuN`fp
z;{`A2F~mD^iR^UwAP9=B7+zgI;!hyeHA{ACzV>^+Dw_LhhjqO<Y;{G1sC9ai7Kqoh
zHd;cHA=nIv9qT4n6eE7;sY;)&GDXDlvis{bqEBZV0eM#KzV8!CtgYbZHm1!i&C5j;
zX{CEo{_5*4&Qv`E3g0CkZLOq#xH&x*Q<5B|Sc~rlH8@K){0$b-i>Sm7I6L;ltisFo
z_V9jq@3<nskNE5S2TqMCjj_PILNnJ%g%eGJyl%8!=T?omCW2ONe(>3f6XBXf4-kt<
z!B%7`mQ;^{twecb#C=1z7vbv2(8oekm2kAq)21#tbfPZnnx4qjp=J?3x_76#EOg~+
zgLm6x!&5XN8%EhGCBH-yT7E}HwdcXf;N7a)b<$J^jif@Z+#bjk_nRPBugk=19lcR6
z1UID{()THotB%>MN2Z!Mks?RQp?cZ?;=)9)8jo~}DeRG?aJ8ruxtb08a7EB-R{dz0
zohiH!Aaioe2TVu?sp4CZ)QI7uMUbPyep*GvHm&HXfg@mIW3A24jqa_$uMZy|Lhix?
z6|4RzCjbqn!%3-bf+$`?w_cYqcEE0KQsP&6^~;}Wt`;;6UA+v8daU6qZUq5z1HNae
zh0$3>Cyy))V$j<Q4x@~QjI^k5;-<Of4O|Ka$hf-?m$9t^x^B-t!&|9M2QsF_7FA0N
zObPReVhuSf@Xdx6Ril2{r4t@&rdR^F*}feqx|#-{I$RX=vWj<I*6WE3uumwSc)T0+
zpQ2+u;!;J&<X?fTmj%`KQI2qzh0<Wl-3nLqGB)XfIQz^~Sk`adfN+8178+(1*5;FS
z@}kvqXFghQt9b5Zs6WOR^8_z~7};NW5}g&?VbFwXd&sL@lo3v~@G~@Iu(%+bIT3n$
z9ThRV4*n!Ahnb8Xo@ln!+cFM%L|vF7_Hl2lJ$#-8ok3%|@R>R_aw03mG$sK0Q*bjk
zE?Rc!{_rkJJ&aKs=$Md-FmLaUmE;@A1ib6(Ubn_-zEd5T0rhu{0d=diG`zw^_dF%H
zb{00?+zmGk^euMt;wx?09zI4KFBn}s5W{kZzaM&6^m<9PR}NYiPbJbk5?$vyN9)Lb
z@4}(VZ+yoWe5_#y9G0m>+2qD4%yC3Zc-gdiAyaoxnYuSWu!`+Lz@J%op9xUz-i0MK
z4w^7DQ?QRQX>YksG&zG>f!ONW(VQrSeYJ7lGQ}8M4JB%={Vz>GAtOS|*jlkd%xcZW
z5_9<7cPg^6Rzw56Y~#e`#Lt=a)U*w_PexvbL7!aP@b~yv?DG{LJ4dKgGN4O1)jTX#
z2_a@FX+z#S+m-hzOn%tSIT})6tD#E)k(kqudi>$CTE^w;N<|9dj-GdQxH_s#sNJ|`
za@8$HO$4ySF=OAYRVUe3wda&Q&Dyd?uEa2Er64$4i+F95Mab2x-Cf8Oi6$J-ppef}
zVtKLmi6&%?q(ZK2t9|@Jnj&SK?Hi_X*?MN2$M$vTos71~R7yx+fu&EE6!ZY*+Y3tt
z<sjYQg%4gkkKOEP5o3FE$*8~2Wh)@F(H;u4_`oI42T8nl82wib4N0ydJGuT`m=v0W
zcb=@;qvw}VF{UWJbExW>$Y#mR&sI?xFu@6rw0+ml8Q)YedvW>XOb^4dYen?14Ap+V
z0&Nk~>1|E878d^4A8!WVlo4rL$Xch|EqUcz$FiKTNWQ_Cg|b4b9s1#!Q7mi|4>!PG
z7tWDi*O^hHcu=-XR4HgI22oI~w{>F6!X*;E$9$?;h~u=ss}QD?2zq8`QAJk9fszwi
zopHA}a>8I8msWRC^sSg;;lFWfI)oG=4CfnxjKmqf!?-i`cQbTiV-eqz;DiZDlSiit
zIusD_7{-(VvW&D4t;X@0n)_Y1GLk=(+hvfGKh;-W7FOKl_DB7)E(=C{yT|>17vP>5
z7N`~OJZDU;8ZH!|>qg6XvQFlHhMsie!cVGDWZmTs7k;_fZ*~W4`@{R5CEiyzbc^hO
z4Leuc1Ad4jq{TMQH(^>~36J_L{0vnZ<5k>=uGR|m!M|cRH!d*`QGwrzVni!YXVQ@|
z!h<dfACV4o6lfRkNDMZjA0m5)Kq*PF9WIEcg#WhmS~mrQA}phso9<g$QXh|)RAP|j
zQo7&$I#*kjW7sB?5ckQ2mkAT>?k%FdX0YX+?G3NOjBMEdo_KL1I~R9@zu6b7!P^jT
zDFR_#`l~CP%DZ9_oNtwb)>UgGv5gvf*PYMhx7Z=PF=5OOx9qUcQOt2_g1L@jtImj1
zgC_APrtX{xIP&k9Asf@GHtB(%OsrzwQ7a<WC+8lD-8xqBE#Dr|e6fzle;c~utQhPI
zn`=W4sC&YXZO$l#0ty2HLnPbL7Ly@szG5rx?%3v0*};RTTVbgP;ab^dkJo8b!(+OX
z6PNR_m;@(~%HUM839g0h&0{Pp$Y*#4Mdd1~(DObXOvM%l%=y#&;SXRdqXOtv)XgXa
zv7u=`86!XJ!#5eTXPcq+q{6v4%AkAW(RD<6(N6CUnOt?L?FU0Q$}xVGP`I1@5~=QU
zMS4Sf&Y>s7Cq}MfOGC?=*w9|_XLwV~c(D5EXu_3_ChXwul~wyU_hgf0JD1XGCqEbD
z%68C6Kf;-SMy}Z5O5W_=jXnEF$t}BF5qqu-d$ViRVZZxiwL1``wmiAAKQK%XwGH#l
z)IYge4VY^6K#;t-pdsiV)L|JFZ*Ka00af8I7yRX2aH=1R*80AJCU4l73$0$`5f<cc
zcp0d9svBqZ5!Pi))=C)E`dy|L);?qt9TtNcmi4wyP`!uSM1OFG=EO?{#d>Cgte)2q
z<<^DD8tc`GyFt_F1ooIxgf3g&V=h{`S!gTnJ7G$ep72;n89AYq4VOtLe6?I%Do=O@
z+(s)q7y6@ozQL>eA{1g$&<VvlGI_vc3%;$A)bcaXS)n(anmg9ec?^lg6b#ckDh%E0
zX-3E!7MS09yHi+JnAdq(;+N&(5%3^-|3ix4TDZ?(Dx&AnR{|xCmhtN%e7XT}J$Cy)
zhNp&3G+re$FJ0o!9G6kH!Az^Rhd)8=_`zYXsF;9D7|OYqC69YsK>y=_LU~&F-H~C;
zy3WWIx?0Sg@Z0t-Th(?yWKAD_+eYDtyO0=IJx%>)oJR_}q9!oB)7vdIgGUD31Vl<2
z>(J8hs&2zx-5xu%eZjt1FZ1A1XnY1c;8mZzr`*iDc(`ECt6_ylBR{+mEND1dSJ_0{
zFOKdV?XZYC#V{A4Ls$3U_q4gjrkX$H8%5q-t9G1MviWf2yZ83W5V7uoV^RoN;tCH~
ztJvn6|Ey7}7B((17}IelJ{3oa2{f0^Lu*kL`ABmhpfJa5@425m1XCsjVSDp(Qau0j
z*A%~7Fo?JW=3()wsaCIyqhew_uy4t>vD{6xmlRI1N~)g9BV1NXqV~}N2dr=H_QrMi
zP)c4l%i`nMKXc37VHR{puC!z?71w%O_=qT5N^BUv+1q3h!IBU~lHK_|q6rs0q6tv}
z+iELcdI8Psp{Ema<@80a^pIIk8#IA<P1>G4>m)Kdig&c~Q70J9?`JN7=@jNCo!}4$
ze9-sPBgYD(dgGcx5DmxQe4o>iDd-dQFxoN?a$^W))PEC?SXF3v{(E1pf2&Y9$nKDo
zJ9Lf{785tEyHOeL6S`<A7BT3eUwZQ5hJy;s1oqTu8~!(X^vl4WGH@&7^gd)=VV}!t
zFJ4K+5h4)DOS(wa(8!su2wihOw^dk^xQ{FFhC8Os8nBy1Rb5UvwlPMo`FB~{v$JYa
zvA-~rZ4H+g1gk`0_rj1}w>3CcyK_G?ep7*c2*_E%c$u(5Y*RN)dgpZ4i=-B^X_Y#~
znD6}GZIL7zL#)}~R&;6uXJOTk_Qu~P9DZPV*RpP+PF1_KWa?DL?5U(wTU@T9qQ0TY
z^7q)VCpP>Fo6xr~f3~bT{}bejw+iNrpO8XOjICbDv@L%~uB#LiZ6F8t?YZ%$5a)_<
zq`@L=#$+zb{_wu=Ge&*_)Td?Ri1!jG=ctyS3^0YHlIYUAEhRortdOp|Eo!eB#C)5%
zsdQAcpMOikE5W$PhP@HvGP~iwS9iNi9>kmKgdr?9J8!-TE4*}i$AkFIFT{=N@+|a2
zPk2^W9&;L5qCmr|>qI<07O_YX^INMS19Q#7vSG0qvL^AamT*%ub#IoZ9aJ9TeebNJ
zB4SC7A(5ThtO^Z8*3t+5$Xy{w-78b+THZH^^riV!6H9X*k_1MI#I>@dseCfRDNL%N
zAa(XPI;?;&@r<|+%V&(m?|*^#=M+2^vE0TWvZ_(37bi@$Dj%9JEHrf|QYe#HzGJX@
zn!v<0%dD}N$6X!%F_Xz-N+V!FzU}a;&=<K9$sVI;1A7?c<W;qd*(S^Gi*vbE2JgM2
z3GEbr5=|(AyAcZ&?W%1I-ko@9;{+(>1bpG=_7YLt@zz*}^3O;1?(|2#4KjL`3UW0M
ztXXI3I3k;MPXUEVj}Yol?ir1PDV^X$qS=o8koD3E-K7<R(ag`$b>I4xAJYsS8)TbB
zm=Bg;0ILDJ(xFONZuHDy{I?bjYHhKc#}plrC)F3G){8@wycNk+eu1MUHqmZUzO9v6
z7P(guDXZ#9mpUuOcJG9_z&<z&x}wiTAuF<1ZScOf%%_lo29CAG`ZBaL9<Q5XEo?l`
z>vBTdbi!_O!hP+B%P_ZUCINk(vUaCtT3+KHJWRsHdhUT@p_kC)XO1Z({U(+e{m>Xx
z18ZT!?|P;Q@GxDW6x3O4iwux8a45Jie>B(evV8DGjozNRDLSognZ+{0s$l!qZ>__B
zrMZwxVZK@T*~?5(t;CuCu`pwaR}q4LIi}D}tzsSO<&zbEgM~t_@Mo*pLpi5xb%koI
z!u+m-x+zJ%dDhs@dy5+vE-WuD{+<vR6<we)mxZj_nfNqb#dl?l?KOj&-9dDV<eJ`i
zp+(y8Drz*m!U5&fi$;t~cKb{1c6}d79z0`4;chSu%NI9WrRUW!PVbkZIsTO*N?k$+
zJI%8qyY-7|P{JcSx{t28!AlV-VuMbQG9}q@3kPX{U#i`E8!aK5x^D!Sx+;yV7wjO&
zj}zaQs~Cr?k>4tb@4aSw?zZMaU`&ledwXqN{am&ogS3PUPS);rR>^EcFRoT2&)S<>
z3c0dWyP2kAy>b(>pVFTEv&tvG&fzLX7u7K<bpAT2((3WA1ek=Y<di2k@yX4mr<WJ*
zDz45bMCH+z&Y^5*v7>F?-@L3F0)_@nHH@~f_jv#0j5&i`*-FpEt4ffo;o4ek$Oi8c
zO=z9*SC1wfdsjHRjn)1VO=!zBt9G0S*~#Gj_-N$H)*tL>jGfu4i@~>|+gl%tO2{i-
z0t%f@;h3hNT|_m}l%z3RW<BJdfLg7S(vY2a)biv(p`}*~rUZ_UDP1>#7r+V=Cdf9$
z_P-TS$AU|BcMyvhf&@qFb3|*fjOTvtr&V6<e^PEqhK>1FNLfOcdRatHNPa$#dLQ^8
z++h2*R+j9;eqO}ll{8>MpI}fO;yckgv53bJTuXoj7v^|P2$<MCwSWBWR5~Ha39Wuu
z;2o9P%W^^+<&M!IqN-tbGr#HjNyXZov7@!UH#>#N)=;c&?(RoH!?KeGaO$PD+Q!R*
z3FA?KW@I2HFDZM1V`l}8O^Pj6l!Cu$bzzF7>(4M$=}T+AalTq+2{j9~iZafk{qJ7>
z{Y5Y<$Io81(f!*pcH`oKR4Xa;Vw02vp|E5Ur|6t(Os|^R#yGUwss%q8qIuR<SM9GX
zOxnpx`LwtE(y`IBt2SWNQDH|k3U{sAk2ab?3^5<p3ofvrdci&4VK&-JqZshWoHsh)
z_|5@OyCscK*#7-0goV2_IYGIZ6IW-m(Kx+dss%qaQED1q`J{4a1h`PJdU(CT?~-Ed
zu!7s#d3BH*TrVl_nl#mnbRBE-C-g(}a|&0Pu%6oZu9JIPu2hPvdv@_sP*0Kgq0TL3
zH6JJ6Eju}3J!H^UJ(OzPY{(=xt6SN-)@{A4x_D}tLaA8!R+NbXWKlpKdhmZ+T8Qq&
z%)x+Sa9_V-Rx84+9w`qrg_f&nHPo=x$jvasJ-^F{Zgi%7r8rfvyF7{%TfxcZ-8NkB
zbdVZyW!pe;i63gkqU}W|5Rme!vZrj-4c-^zK4u+F_`>MZh(3z_Tr?q7TMHHE_6F}*
z$Qb0xv8QZ_xq2Vuik3pTN+*2j<h3PbL(r=-%i@&7E=Fxqgm5({JW%oksa6ls@!=qD
zQW@9^?RCN;`!<%W5K7q}=|r-6X1yD#fo1;x__N^q3Yp&T-_vr3exCVx-JeP%hcjOd
z!OtvsaVNx-UPXn`{XNg4xt~AKi3PK1i5rooV=cOpCyzQvYq(Sxlw*%#eX?&kyG0RX
zXAAG(?7{@2kU<*~EJplQ<b=z(z3v-z3$m(<obX8g>VzZBg5lEI*eWeg34?(R<|gHX
zeX)$YduJ5u_|+O~;9$J^iVBYm46?2;G>%*7<j3Ce&|!EmoT&>j5bLOTxB=a*f)-)i
zu^1<6RxK`2n!E}NOy)mdY4}empDcjI#WMF&6V5nvqGgcdYI^twAWWgO*iPL<%)aJc
z)(7CF*VLpUdf1q7whr7ax?>3NwTzoR$?N5lLR3{Qp`Vm(E(`ieWN24S=#3Oy1=LH-
zCA)k7#4}gY1JMc1PnPzO)c){3(okFTO~$x*HG74j$Nu8o8b+M#v;6F+DOH!K5$Zo@
z2x}3SXSXA~9*=Km45^aLq<ZtO@Q|rb7~q-&*BQ=OMKE4;)3BX&f;od=H?0)4`mf0{
z>&PDIZG5f_Fg5b;tLkFyyM8ys@W@CY1A1+v2I*N}XnU*HzV2HiCuH2O{ey)(a0H3+
zvc%?kXEK%Qhc|mbKyf)3#hTg6uj+-IRr2jb16kNG@jRu8`}cpOK^t)`V4mZS`$h`Q
zQ?lXM&xL38O{OIz4$3womyO@q!D-#w-s;G6155s)tI)7nP-I;*3Pp7&!GcQY*Qt6~
zgOBw=oUX{#$Q9&@&8BSL1U~tmGgLoM154nmZty+}TKV$TYA(@)iP$~a=8)E-2|Y`p
zBC5UA*bzVF>;_J0Bo%UHy+S0Jq(1wbo2Hg=kVlnHsKk<jICUc;*3Gg|lekB!;9fj|
zHNG@q;bDJp373OUBEb`EwTvE_RCso-DBmu^+@uzY1H2O!QL)|Z-v9k~{6Df_wqr?4
znoThoyMVJWLw-gCL@`)NMbsSzvQUAkM>bi9)*6t8qUcyFMaRM);!fEOQquCoq{0NY
zf2@24WIP@TG0bYcMykMARDom*-~QD2;W{q4`N7=J+T)WXC-g-XNO_3upMaP%*k2@p
zQ_rHRNA3M3aeJ>0`N?;n&el<^wPj36y=({qRZdn<EREc>Fm`S(7!EADXI^UXC5&d=
z$r7QtV4$OXGxIX3|KHq%?@*96m)-t7DYmPy5PqG3vrw5a!&z~@K|lZZ6lh;mmqx{y
zjK~BV^zmmmDza~L)MxZHd*Ts%TgFk>*kvi?N*Wb(v@zu#b`W}(cvEFv-s>W?qHN*C
zRD9H@>!jsNCe9@&8Gh2{{+X4#=XNqcwKMgDx2D9yragBWl0uI)OC7OlQpXJQhGSv`
zmDkoHYUm2$O}XUOj(%&nbr@eP`CmN0MHP4^lp~BQuJHHs=$tV{^<gp<`>vlKKPXh}
z;MGsJk{CGh^Q#~F6*zVqq0;QB47=U>Xm0j-YjkTjK3B7_XkN&NMGfp~9C`{dWK?S8
zwG!@`s6i)ga_*`hf3AJq!*;&z$FFk2_PnN(td9-2ti)Ml#Vlkhwh^<1p)j%zd2tiy
zw6NFpoE1_NlsojBkh_GGg<-;IvWV?p@=T-rtla@C@>No4`k4Z(29z>T1mE0Vfvrql
z;ehFdIAj0w<=g!tI(f6Zcs1(EB0ex>$fyoc!w!d{59KA>eRIm;%6^KTAy=OLV>+pJ
zBdLJ>&+7*7){4IxZ%QKetkB?-SCxG<Ay%4e?U6pV_oY7*8`_S$g8OR7mDSJX2<uup
zAyLlk-_4ZdP@83;MMYP)ldFWQ{)-M=3%JCLUQhIlSwEY*s|D|P=n4#F9kUv)l4Vrj
z@Bg#0`UA^{ggmkZ*>LrRoi$>xG5&tm1YV&7i46D#Ad8|C0+lWJvWV6_-d<8XVzfSS
z5!iXNAH@!$hD2HUmg8Jv3okmm_O~e#%dnhKQ=8hJ5lc(XL$nSV-0D0;?WSd!7=kWh
zs?xxT8}iw26%u~pMVD23;%C)H?{lj%K`mHtyiOkC$9`szC3%84^232FF`!$=1^MtW
zko7m^Hj?Rj^3BGEmo>q&9<9c@UKnC0IE&a>@hZ$QYIxNB$zJF`T!=cmJ7A>NQ88I3
z&pJr)MOlrN=&tYk?oVL>Q6Xx?mszmxYNTKaevZ)>Row#b$M&D6x2%l*n=|r4n_C%f
zp7KL9CvA5t`!Lq-v!Ko0kL;54{&$&apL%C>?A@HitlTl&=ecpwyeFoFBoa2a5j}76
z5F6H>c$XVG(O=BtYFNw2(f;D2nZLXVVI7aFlpw5Wc+O=~8p9iUz*NT$UPVhp<#+2}
z*|1$9RJULyV~3S(Zca;KE8#@(?I9zdD`xu)X*JX|!?89O1>fX0Ze~iP@ve0XpY}Q=
zb=PZ4O5NAJB{cM*(g{<cZ?%7?!ctedsDmjMc4o$%{I+T~!@n$*C>a@XTH@!u*CU_o
z-;0|WS#@brmdF*+#+Xvk|A6S(cICimRZ{NoW;zdxq5FklHDG`aEyb1it?Rf?eq$$*
zpnHO?Fjx;^Sr9EG+YDVraGKynsE2_GUZGYsdv?E5u%Nh98Q^Gb8CY=qid^9cwl?WU
zCVdHW>}5$6uv&K24c^~e>x4TMP3Xig_H40DEt=4=j3!h<#ibG|+G0m|73m{3WZX$v
z(|1Fz>UzV@>4XHmrZjd>+Nr+tJD#Ap!-o>CXrWYWaVP^@p{vu!ISxs|Ou(eYn%dC1
zG-g#M56wt@R6+AG`gnR_+M$L~z74XCmsV)PGAb59KJ#;Q8s^p8`m~`%XPf-}*iENi
zhK|J#@pBx+PpdHBB;^*z$5}`l`44%79XY5A)kbg3{OrX!d1t+lpMMt68uJ^;(g(81
zA|R{I$ci5!Eo48s>eW$xR`VVS?^&f#tZs@z>_685g^s1?d0q*o6uvr9VuS6F4w2Yj
zq$z99c_4{_2^qv|jm^ysi#UP5I+$XiPgYSODAs7zMP5V_{(K{vMDmCCdl9J67P1s$
zxaozMU41>?rC^1K?iG5H09lwAY1y46*ig`=m;+9bzbrz7WsO*1NFH=Qo$Nr%-Z<YZ
z!(3$=YB&qqU=hu{)Qii6Xu6009YhP0Dl2z>QZD?AQ9j=QRx_76B>R5T6}-UUMC7JE
z@t<db(=Q7{3XZ_=k^eL$i}en8@=oFfS;XhY7K~8rxsH@zkbc<i%EI;jq7j}p*6!6-
z(X=p3clSpRi<Q>&UV<U{kcUMZOzf0MNJOco8(pfMteTCv%FX_n-P)N*c5^p8L~%6i
z=Evtp+i7E~%WOW91iB>pJA14fJ>Vs}g;MCe!mF5!m{~PM0eZP2ag{ezEyfP(me}y9
z1c{_2#JaU%E~VOlo$Tdr_Z|_X+0^~@nuGmW*&aT`&-~55*@SvACh+ri+CcVNSN2x;
zL(4a=-Mh*Pd}S_K`zKc)Q>?1?Ti2dvQfv>CfZ0UM=Xn$wL&+xF1KKhV%fULU!&z@$
zhF%iz2bJ$>Gv2eHr!gM{szPm-af#ljo38VQI_Idf|5H)s;w!R@**^V@ZPmNCaD;5L
zpJUE2Z1qYrycZW8wVG?ctj_lAk_>2EsyZ;HE|DwSFaG2=?khCU)@A*Q!Mn|=jqFZ?
zW>#KRA5Pb3!c(<Hs94wuJ^0jx5gXcC(>wyXdN&oIBiK7-9R+%2`0ME;IqZ0i;|8ky
zvRKf!j{6d>=xVKYOyW``sF_ce?2latpxS=AnRw*Lt<;E4ya*@;;%A(c8p<ajRPT6g
z#^l7%tfCUVfd%*wleXp<->|(n)EwCcxI8bwD{KSY=XnSANWZf^Gp2{`a>Bw*O04KH
z@i6&!M8ExW7ieS)Tx^$NQCAv1&!Y*}Q=B#SP0$=J^Dz4YWMKp`t9zaeKTpZvC{?0D
z#i;3WsJb`%D!QW=xGbgkma{#(*Z4AgRxn$9g(=y|3AMN{l)S(83t{@6>q}5zxVDiK
zVn31uYEvv*7z(!$N5T!6`_y3_{mDK#qm{CRnt5rT96($PZd{62yr}=u9$~Uyj=X>O
zlge0Eoq(+GdC|q=K1i#no8m-bx6T$-F<O^D`s+rUB5)S2L{tD{B;ZMXdtHQ+HAxOp
z?X2AW3qUQ*ZOrE=-{69pd+Crke%daKZLIK@UP8n1Gc-AZt&);NYRrgR_+)R@`)2zY
z=NlHj5d`N`fQ5BiD2z48rCZjPWKPVe7wzue5;Vi{7usg3jo+Yh$6|XZH1_WP;_HsB
z*)RRbGvrOj7dFoUjGaNxny(9Ec-4%Cp_15*gA1ElgaQ4F>0X)sl5&PD;lUvg)}{Hm
zmu>O)<Dj@)wus@?Rjw3nTr69=4l&`KydjkEs7YLmfL(7s+hLK|a30;Xx;ngn&O$<L
z8uW%o26hB)x=XLhw_?&oET-l~+^6`ovtyM@pM>sQpE#NmD<ak{SnsTuG(%MBmhb)5
zCcJ4kcq@OZ&ZbyLalGM^vhvaTEe>@ymh4Xa7+2wX!JuQld70rdrS<J~O&l$Z_&TjH
znX&fIxBF`Mj$id$5MbWo!a;M&-2vSjF-V28;9Qd+KVwzNCY3=aV0PgrxQ>486#x%%
zjJp$+uPX&xp@!?EDj#Glfd2H-jq!V*26-P^2$@_JCzGpLP~@H7C*KukNhJdY_9hbN
zYQc14i$4?sA8Dg4D-@T`t_|K_?G=A2nvfNL%TCdRg8%T7$1a)>!#C(ERIJPWSR-j|
z#OG?Q9|o?2L;I#i`a%V4scus6Mv0}gNCihs-0F5Y@U^fVyV=u%P^LGx`=Lz1EJP0*
z?H-O9_DE8=T4yXmmr?PmZP=fgD(0u0Gxey`*c41EOr$8^Vs2n?$8K7eF4nhaM<GZU
zzExCuX@y^57GW9`^z1m`JrGChM)kqC$%6w25oT9P%&v`~XNw@mYIh*$*)??Q6%*1;
zvD-Q>F=Xgu%+)_Fgb@=76~h`+gnkCgn$iTQzKNGb;V;>S_)a>t5Yw*@3L&Mci3(qx
z$hYU*N~!x|VW4fVwOHG;ljD<(Mh~l-xsemvU`iW`HB?!FL1v-B$+eu&Hl6TYC=g<b
zWdpcL!T!`z4H;FPtoZY4KUt^7K0UQ@!apklfllgltlrWpQy9o9hczH;=A~E{cUbth
zDdhUT-FrznStq1X(pVN|$Zug;QgB`jbj<J$=8Q-<&p<6qU@Y+GUbYGgT)#=NEjD}N
z`~Df91LQL|T7hnivW*)T3qM20vOk;uMLxNV@lP1{tlXjgKUsSb2?}6{TA?%3@&O82
zdR4=l-b`6$b^AtuIlm4Sb!utJQ$@Q3{24Byy8=B^P*3At)#i?BLJ21=+_BybMXH6b
zJKoEcW-z*=8BB}qlkll77*J<tZ)13cVM5#gV#Zg4D?To<xu<-w>TS799>gW^b_2p9
z$)0=Nm|fI-Y-x4=PsYz`b&c9&LJ4mHP?bi&2>-d!G~s|XSY3S*{<ab1qyer$_1K#$
zy~P=;S6dPc+gPuY@Q@*<aibZRDMlMOC5M*#7tv?Uo(tXBQlm#yZH=wXqE;s|KkRIZ
zrE=C79m24-6ie1izTHo?^lu&(oihsW7R<(K_nuTc%p6B3PZyxp8Nh`dMqY+do?r{|
zSy-HH_)Gi~cEE1fd9XG=KS!vP2GFHBgJ!Oi3Vn`=@hhv0Pa!{K8^TW*vwCI+c>K+y
zP(<9lF)>UI;BcLK>87*8)sb&IZc6rR%H%4px>Z#f7Ohm!VTUDuf1fK{Vy0&n_V2D~
zC1;O2_`{!gQxZ*RbLzU{uY*ugRh#Kvw$(n=Y^HE(Tbr!@$d!Ojf?Q4PeY&LJdM7O&
zBUcl@<3Wx*h-eN&K+5>5b3U3BHhbR;wR~@|N^txKdKRI=VZNQ=Zd0>iU&STm75?De
z5AW4zR94Xk1&5)k7v~(RdUm4GIzd%Yy@2?-I}H7vKG**di<%>UaloxFXKt8J=vIN+
zzTwg1TxV^)trJXLHz}i>7ihmrKGx-ft#weV@w$d(EeOjBdI#EGEn7;=EKO=5{^0fI
ze(!mmCAR9%Y>m}{DgAkrjKY}7RFM^#>L{_)iQ-eetrDwSfx(nsEz{>Q_qf%hAhVGZ
zexBrn>%=Oj1H(7-gv1rtu11f%RGez(^I0eJoFjvl1_~QEQDiAwI4isT`#LJba9%K<
z2b!^O8OVBDox%hsZW?Bf{1|ao)D<0<%5J^J%OZ_o`Cazl?aQ7iwVJa;3cKf7cm`^j
z#6zsCvBT6&7d`=89v%nu!D55UB(HW@n_~)X=+W?w4Na5n@}%e%^{?+A*b{4i{HomU
zQ4{nDj)p<ONTEs&mKa_-UL`{(GG0}+Dv>U7vQCykj{WgN9OPHT^`z9OcDM$`+v=Ir
zwGUIRqEQ$cY4W@)-I0(h@_46%I5xo(M}Ajyf{a;40onbv`xQoZx>liqZSIHYD$FPu
z)@G8D6wEgfB%-UEZxJ~1Ds1JWb=q@!$3$z}&hQFdH(rqq`^bqJ`W(BBv@h1#?MRXb
z&kz{Aut>b%C21-wcKG|NI8{{cMDBNK$3#eAc+)A1M2KXsbkpq$e>rKyxTIoYb=3fg
z<Qvf&3Ki<sUMG6h^4^O99;kA_W^v+CreC&YtzU*e+`Vw$wdIrw4ZO2E74(uoYF0Ue
z=2zG}o5yP(Q>>E{7aLD?z@V_AC&w_Q^~=M@WnniL(uuH?50^|_?r>go8u|fie1fO2
zF7OD#B6w<@4p=WKm6ZR*HgwevX!tZN7E!s3t94r8I5-;9x(--w{0SB&7-FJY#idaQ
zzN{#xFMgcK%qL%NY}B6!(6o?vvL468=q#er;9$5Gy3Gx;e?-MZa_EvfknM<ka>QXD
z<f_`e&w|1vB-%o7D&ub%cd*GKOAz8sk=Sq=*k$~kEB@@G3CB8`(6tmQa<pI7*(QtZ
zeD%*!^A5-r)`L?WZiqiv8RJVa(?(3LIwxZu*$4t}B}}*?0-K-qT8~hqb-Cl#Dfylg
z6`if)FAJ_*4EJcA8gyvv64mPARNGsH0@)=gFD&ZjT1Kuoc2hLj&zP{pK2twav2QA<
z|AqiMTBErMv9^d#=6vx~r;VkEGe29$1ZrW8@RL@|mjy56xvYHGCyn7NX9OhQVAz88
zE~Dak5eblmb$!y0xcI@jb%Uj{#=<(Z1O6t4OX9EfvWPl3J~?4-oZ;I)&_z!8WN%Sb
z&kD4X6H+>%$ogi1t$!D8fTZS|1y7`!v~Z!9f}vN$Csx>XL$NR;m!UG(!lKga5mR^+
zv37ZK$HHNkVcwq~Sg$RX;l}J;03~!?x3;$|2Ft4Rvak)8F<O^U635Tw7&aG?ilf8R
zavNrq(3~(Fqh<Vx$HWDW^nDxV($FD<YEFn5fm9J5Oy#cH9)9=!ECqFl^UVyeG0bEe
zETVN(G;nOJ3WdF98<8Kr%mTO5hk)Z3<jR|SnbkBCvp%6MIeyl%&+#jalrhL^!#%_E
zR?+~+tN5-gkw`ePQtjRS#DJrX+Gz$Q@(+9Bzs>kwOT(+W4SU1G6qEUdeX-EPmwSnA
zyA_0$RD1kAWeZ;PBn~33?3XX?HK(jA3dEyka9xGJj$*c-D3aB!PhiICs=>o*uSJ5>
z#=t?69I{DNb9~{ERfo(Uqdo7Y&tnI1fFHMWfI&A(Xdvp`@;xEfKN*whR@)~|q2+`m
zLbRbt)J?Ih;IAXkv31G_*ovISZ37CA{Fxp{5RB-R@kT2$*nj1+h$ooGRI3+FwHmo(
zAD2DUdxZ4w>1ODr#*-?{dnMGMZdkmGwZabdPpggw@`R3Rvn(92gX~K@-nCO!7vyRy
zR_9vwc=z6NR+LxOvWw#H1OY9rWp|&P%^}f*9fXR+G}GXZZM9Fn^qoMnI`E}jwk#(P
zI?7ajZi)CwK@$QjY_&Z*hgx=dZ~ssc0~}Deh^Id8>b=Y*HoNz_P7nv|Z}u()$3VZ~
z-~;U>FRoVckK|RMd((2~Ce_T(&t!o3->F7yieLJ2{ab}_t=$1VgW0%@im8_kmgk_>
z3!#gt6BYrZdB3&5!~z8ML^bNL+uNE9;yR<gSBpGf&=nF{_`HagcxmauW26LIT%;=%
zFF5n;wAH3oWKP9|t^o^YtbSgRxGxn`ET00l+FsH76Q<N%P8i;hR9r3S9QN<(V$ZHs
zlR*cd?<n6>G@jEL#ll4O5@lxf#6HzM5g{VMCa18%ffM6@ALs-q(FS5#C8u~@M60kU
z9+At_P&i^~kHv4@FALktJe+%3fb04@105bxaQ_tERKc?DIN!$kCQK`AXcwk|8yBmH
zHYdoIVJ?4`4Of#Fm$DIqD<cM1R_<^pG@K;ohd)l}ZHfw@jEbS7EXCedn3fMnG&Tjj
zx(sr`#Kx;6?P@28POKqU)+%F+h<HG~E#vl2fpW7SE(D26TAtB>U3U$vj!e-sc+_2_
ztG#Bh*z82-xC)!h)luAbhF2{yu0-$F(DnuhYr+tgcR^Q61*h_^fH0-@Y`+SFusZK1
z24&o?ZuvL`1!oT4PJ7=gG>K8N8!w#1f=hMaVB^G-)4i^*NGZP@ux4`Q-y=TZ0v9DC
z6S3|;N%4N-YLoVs0MW<k6hsVbd9M>ypokEsmO`PEDHhw>Te~aArE#_Dz|W`9D+Vs)
zAR{m5@0tHY%Z;ApgEJZNUN$9@d~LDC^33Sb8T9m0RBVlp(}0cHd-5wt9+hqeS}N#7
zr7hZH3hrp8Zs?5;iY@xKenPI&z#h4x=#$7GR~9I=6y;UL$Q5V&*(m-#Kk-^E2Ja)f
zhue{tPSJ!*g6yoL2?J#nwXn?CV!9W>K4g=%P9n=!nuj1)6DEvF<vYx0QY=y(YWD1%
z?qK_OEfv%Og?%nA^h}s<-`v!Q_)xKj+z>v=*lN$lR<Xv5l2ugl;^-S+&fl53!)bT<
znHX@mP8N*DP;%IRkB^Ijn*-(&mScWeEkaTtvbk1RSM!b6=`t+BY*YM3AL6NxQ_pZE
z&Z9ahD}AUIX@8(#L8U94g`-sx<<>X(dZCAos|?=phYk-Na(s%*CoKuIJwl>Qu?Ci&
z=Y^3IF6`0?v7%RULJ}}q)D~U+VjpXG{Nh4SzwKa1RY$Qf$GSn6^kFOC7{4hTu#IVR
zb3s2iSkce4%{xEB9;ma%q0n6myi{oE;`5C1G=Ja|!zbevxTqI?hB;=iEUdf7t7IJ&
zBpCbeUj5sJ+(nXV%2$UF!yG?L9y&dUaFuU}0>l<xE4-I<&G#f_L74v^!)usVw#XGB
z@GHWIUgu%j`g_6q$A`l{?a#BIjqm!AA7_U0)FysZtlH72W>Dy8qZvFhfF_Vsb7Rp!
zWq9Q@8D1S*V_ewnuNJ!<Z$nt`8p3ifAgpYA5USPX@(M3G!h^aB`;Y?hHqQzRPuA|;
zj1<f^I<@cyro`~nra8FqSPLBV8ovRdJ|iY3&F@*YlgX8@xKek$q-=>;X8*U=f)pH9
zh+%^kQHiEd_(ELiOhXHcQHH;inzDl=Pz4mO)Oou_YvC@sN~(dYBzqVL#^L^Zx?L%R
zS?vx%zU6K|Ic`n-+*6U|k31bFQc~{ZTn1&zdw<BwIipZX1zn28?DoW@PvPas=6%r#
z0h4sXK@GXGeTUR$Q;I)k`#D|%UxZxQiVejnT@2nC!?C05Fx@K?gLe`t+Khr~wWFg6
zZF-(WG{tssqI=m<Kow<+k*mQfW#G$h$cjy0<O<C<Ci4SnLZ_t%hCsaHpZGX*E%aEz
z;Al>$G76<>JypF@Fgj_q!_f?OG{iC_DSP^HH56F^Mfui=&Lx4Pb-IiS{8Po5eBV@o
ze|M2sD@<DS<k&q&v@pt3FLRR;>))RwXc^mo<6eczOo`&VdEom1UM`F!`|~_<LhCzr
zy;R!+`!%VULfh=Tqr~TFNgx@I+kE(-@1z<5o7%7u>T*Kcbi!q*<b;lmoUpD#oRe9N
z#k|5I3%?bpXS}xa{*qE`_Qpyb9o3nDhvOK3t$`B-UH$w`AqUZ7YfR&xSQd&^)?@E$
zC9`V`>C31K`w$V^7fh10+@b>F(^aQt&Ail?e9}LaoAfU$ge#g%Nye1$=dfQ&_|<|b
z=lGeJQ;k>R&E9c{aj#egxpHU^a@$7|Zm^UUIMG&Dt*a5`n`e<323gC?9LJY>-UXwM
z%q5$;NlUBtU2DxCsybC3>|yh;ZnWXm!pj<7r9SilQO^cMj&^gCzj(KX^VTch1Yw2O
zA*^DnprlK%Vkai>?Dcec-c-vBuc90~?f1S+uFnvYTDVGXrkNxa`I*12n^OFAb|Hz^
z8piScLzIsx`lo1|8yGl_VkG<byXk>7B39alh^6h;Q!(ahc@@N^!jz`16^KVB(M<vs
z6c`m2d@6R2QH`3}ujUG!Fo<UQUA->Jq-C?8v;0#7S;WZtF%y+Pwn)I@I;|#(tEMrl
zfG{gUT_3%O<K^mp5h>V;Nlj#*)$>&i6~%y#+*7Jx)^&0HPKP>iw^p4TdOvCh>4seG
z1;o(Em91&g?(}nOud3r$gLjHn>>5pIn~L})n$TW8la#yBx}(86>29>xup4q^OuC+#
z<I&;vf=9CxDazTX6YuM2pjVL!a>`+!jCCelZHxmI=LtT*T2R<l1`reM2#ddO@>D_d
zaS7lu#LTRdtX`J{kowFH`eP*+|MY@806E^L6_(GVRq`~C>I5yU{nv4css0^~>sJeg
z8kLa*L&37%@OJUIb=Kj7@(RUGUFc7d<t_BAwyeuj%&rbJA@VKv6%ID{?bc}6d8R`K
zSCk#!T26TQ;2#of;$Abky;X3XzIBolQtmd9*7O<eLP<^ugZM)mZo^qQ`C>7O)!BXu
zr(S7mtS9!F?|(}qejw=zW0O~ip?o;Lv?H!#HL0l!aUx9Jgsf<P;*&9}2KHFy&kZ$8
z`<4%#$O-Z&+f?81PWwMw#G}kJ9%bCs<5ld&<ZAWsZsuuRN>bs=ELdY9+T)Im%Zi~V
zLWEXfZY#4@k)}Ms@bmZ9VEcBj$Xb|_E$<TKcBN@oZ5~otxicY#cVA+0c@h#h_PoaQ
zz$1T8c{L93jfai%ji~&>Muj7WPZXEab<%LV-XGqF3vz3ptdjp{?>e;G#<k%8|6ew?
zC979b>`l!!-`slvh-wr;NshDoaCG)$6A}aguwXc)<^hBO#jL3Q%{2%MjUV~>o0BZg
znpdDnyvw<3x{@DK?BE5IiDZUuat-G}vl)N5YL>OvhVV5yK|J7?I+fJeu;cHImau-!
zh(&it@wINasb?Fp;bO|xt$A)s#KIVf-_-l9ghW$5Dn{$exGB+H`PgVamDPe;NdmQi
z(e{gHT<m%-CH*P%tnHoggYCzsL2gXc-`U40CX;~w#6t}|fPwSU4LX5oX<8e|c;=HZ
zt5TM$>m6>`odp}eGbZCdLez=-#$21dqw-}`w9Y6b^E4eSDDG`7W(9U}1qNX)q-UQ8
zB*@j9^4hY_nA<4`NLh8+0$&P*VS{(K@y$UB^QIL1VoUe>B*|VSn$YsB(~3~hvHWr^
z-ttOpXz$Qfo*-A23QZ~1bV5R$?70@DK(7_Etl1ql@8uccY98EGn-ugb`U+LO%@45E
z1EGWCW3dRDgn>yFv+6rBuCM5O`9J?Jrcf|F^WQKH`V<{_3}?Bq6Xi+qut1QS!hSv*
zOb-KOy;E-H!;GnM2Q+l7H_jGpJ>{??F2<KhdlU=T!hki2s01ysx<l%aK{|_|nbbw?
zSnSx8o(M%&Z8oaFo@E{)j?!ggtIjkCuShno6}&nOmdcxb?prw6n}P+Y;ZO~o_9zy8
zHAoIlR)Zx*yrrv8wcrF7mApdKk45Xl@4bra=%*M0L(1wAtnqX)c(qXUMzO^~M^0Q#
z2}EPw@o@A~pJWA(ba4IG7e!r8*62OsXZ1Sv#!kE<%JfqPmuQ6Pda#HDYnr%ma-Vf)
zzTPqCXZ12#ErU9y%EclPsNxfa#x%#!h|LmY|7Z?XlQSSrOPC2T*u?FMT){n(0lqbm
z0it6?z=#{dO&5KUBH|Y$b<M!I%sG1z4XD5SCHYoxvwE*BH0*UmZtY~Wb$v5qpLHVf
zTWdV3IfRAvqo@VXktm8C3{>pk`BcY_f-jvjyGrgE<}#64)<rp<*`RktidgdMQgE=L
zmu;`l+lYO)ZemktuwYH~-tT3Fvej*{G&>_=-Ja=&RfV&wIj?FVpp408?`~7zt32jY
zO&cG}98s+DJ8TPP_2Bqo6CpZB^0T4_-*cnHq47$#h>CZvP<|LnoLchlvO2-E6u@d0
z<ct9xgn{_qd6;7iag9Ie5&p@r6^_!;d4+wKguwS3=8(l%wi#%BAI2`s+S^AL6i}#C
zhdshb+k7tHiDA(~Nf%pGBGA*Dwy(FvaQ2^{Dk-nk?!>WF2Jfw+35D*(5qnk+T_@3m
zwgG=tq2j{Q;9ZFg7fNjCS&9wIM<7=u8>yxfwu<9n=rtF!Ed1B8|3+ZSIpHdJ1mOyI
zp?Q##4VM-Px_8^$T`cSEhnK8JJS8frg$fn<KgsH+6<lzb24S{Y5S$fN#fF_Zr5<=n
zz5c|3JNWtNNWpiyh#muE;oi843yB3}EnaeSWpS<Ck75zLqmd|F=FK~m*#1fJItfI~
z*c{5Hx7kR^2}fA&HNHc(mJ?Qut@?||_Ku3Xgt$??un~QWx4~kwHz?MimGILPOqH>&
zsxuATD1V3_d&&k`ui7B1Hz%j}XW;pp9c32|mG3(J@CTBWB~STgQB$_Nk0>Lh;cywf
zRx$xKJBxha|A<H5PcHPWVY2|TKuy07()HX=S)r*qtvd~-t0YL)&l^Pg<ehIPZXyTm
z&%=P6WA7TBINz{;)aq^QuOd4PUrLy+g@ZI$SeUezOmo6PvE$f@8w#9pg^0B~W^9vP
z&>o>P;Se|ZV0g40Hm>al%z-JxTsZOiQ^u{SKW8uc`3)VS8?u8IUfgRv5;5Y~48PzK
zB2=yI*TDTvwQb+dXgoC#7GXh-$oh^d#A~7;QQp}X5KPM{#}1DD3v6V=(VB&qrGkF8
z?JO?`8cGR8CwQHVgi0A5BG>mCQ>G1R3DcWeLZcAuUNNYzmPlJ{)eyi;!3sngFldlt
zSW5gcbDY>-{stvX3bqNfMHNo7IdKJ@BXYbJA%je&Qptw4*6w0NFYGCbfqO*sD$W|G
zKB<th1R_Ic;_umU@UL0&2wD~7TfAV7ysW#7j{qwtnFcv7Nlg2v^34uBx5WXr!oWRb
zxteeHGflX{f9GL)Z}u-X7#~&w3frj;i7{nxCx?RAY!_Rn$dzTj;fIiy77BlhEMJ&e
z@t0|XcRR&j)#`lU+OfsHD$#^3h))NhqQZ`BkSi7&zPA+{md6h5?T{;svcbOEr4yEX
zIT({GoQ{8oQV9(Z`rHEvS9rg5qQWEzcFEi7!7*?pUp`^BK|dJpcXAGQ5*#}Hk;1@F
zid_FhKco^zm2LcVjYYQ;<%=Mn`5ETJ$W6>|;Kcpqh2N0>b-YTj{hY(9Py^}-(ha6J
zD#sykclwJs1`-`Y{>)xljW~RrkkSxmN8cu&HlQqPJp!_Ni^z>0u-3*1V4#gF`#Y9n
z_Gr136BNr99wGifBJ3t=h837bFPYj<YhL?eeBS1ftK@`kWFsfkA%nKmFWppSie-C$
z#w96&yVnV+5nD_-WnZQNqNv$B`Ne|9FL7tqyr~gWP}){@C}gaWZ_r4i`0Fo1FMbM;
zWpe092{lq!76}YjX-M%H-;Ekk&g>;POU%acm-r_%jLqQxnw#gH1sCOpLS{E^m`~iK
zs~J`VSj`Bq5{U1qeqzMXF1BoM<q1%R#@wS5EX9X5E*N(rtTMF0?M*?q2%6NJ1y)zz
zdb=0Xb?lxs+mTdY?56%QS~anDCrl&C|55y?+uIu}t(zNfc6&MNkyEGLEBQNYlSD#H
zp0N{?;nk$h$qE&qo?ip^m3@w`*7o%^apPZ%t%-X-;ZBVqtS=2=G2C=i^In@)T_jTp
zQ3@NJucHa>3zZV^VvnWTW$T&=Ia#bT0SrgE){{69!EMeFwrWd6XLnOeXllFZLxsDc
z$o+cmZI%KWZ%f2V*Ly*ShK=p5st)Z|U=#*|ZO7~wT%}Gn?6#63N`o=7k43RcA;<1M
zuo9hxLRC6~vnE&?#A{4BjM^XnMuQH-@(2Bf_F%}+;NdFm9HUho?wt8IqHs7yXe`<J
zhX$;Yb!$Q2N#*2lWe8U;v7}m`6p>7_gI^X06t-DYlVOo|siLW9i93~-kSjYx_fxwz
z%_DMIw}j444BoAlX@_XSS=e)8>uADaM;2SH;3I0bpBd!G78h0SUaiE2r65<U_Q=&2
zH=xfAkQ!R7j-?V@1qYL>!tPsuDHumgn}L%ULErs^D_pI9x;8O|lq48F*pgj1v`gHp
zHC0S#T{zHB;8|flV_4Bbbfy~>iy+5D9XK&s_*!v{zxl()Z<wh1*O`T=p^H1b{u|nC
za{KqnoilWksh>Jg?kDRQ&$7)Pv-c-Q&toDbECLd{D)Z}Mpebu?`=n>_Igr&~Mqb-A
zkZQrKnEQ-HFbT@Bq>P$UMX}H}TTa)(w|wl6@MdFk3(6IyWGyE|mx{QrJF|;5G;%^5
z*NXOl#bawzEMn*40mmXZjMpl@{n7cn&>MosFxtrL%mTlyiEAl0>TF{Y4~35Pkok{p
ziL!43vP!<FaX4IDZ{$*?OxJNbGd9cmBX8F@(<I-nqI|ka-dVO;MYJ&bgGGeqp-<v`
zv)=wqAGI%*FFs}5G%z8TK{j^cDq8izh%36nkBj_U4DbcEniD6GdcHFu>f=M4-%t;0
z{Z^x;H5F3|8rEZ4QFj_djpGGNSy_7mL$SMi<HHHX3xm?+TEHDfnm1U4H)&d^aHKN<
zZ^kt$8>`{Ui*864vB5vgfU57Gs^L}56@-7nx%}cr)|?Rrw>KkSENpCud3f_9_1_s(
z)dIp&PVZu?es=U#x*@F}`AMFR(N}qp3SRuGZk((xf@3AG3OQ>p8T(gL0ylfHl#i#i
zpH~`c2^p9oN>Z-@T?#A3&QfO`-kR2HOCpw`gyH8jeq7>BP<o?hqdXEMs-q3zugNwq
z7IMJT?ZgzaMLE#n%EfCzA&k*|n&|UF^7-|Sly_%vmiWozppzh5#sy|F7J%tyhmpc`
zz5mgMA;ZzpAs7^l1u9>qYaD1A5KdL~tuntZA(kmR1jB)5KP1t<VZm9WmvHn~4O^j+
z-XlbUQqZwDaqVy=gsb+?H8Hs&Vi?!9Wbd;U_25c0lEV?jYd!$Evf5q4N3j@f`Idg;
zJEiy|<jP+0N1vw^Z)z!4=N2uePzG0dRoO-p?g(tpmBG7Zv&*X7k5Un>U;Z<rRpbCZ
zYvk(d;4n`Fr_he-CI#ajaOc11X0*N>aC8UP0%`hGRkoiJ&f7+zqN`M4FI*=<vX8qn
zV*=pxg?A@Md1DMSpc~E~@Uv120Z!b*j1rKlQ;{wnfl)IBB4M*dkh^h#y>KaErHC5v
z2*kZ~$4?MjObNSSGNW@)1L{GaV<1pDLubV18XD;A61s&x?BglyrOS|@t)$o%Kj1UX
zNfCc$WoTB3HS8^;<<mgRFV4rDtkRcCY9WT~&NbcsQ$&S<7*b8WmNwml<ZE~L!7{d8
zppmt^jySa9Q{m(>PhOeC)n8c13015i9nr&~n_sh4K9!Z6uvDg4p&@ZujhxusyiJMw
zM54=P-;qxWF|>8c;oHQ&6L-Q?S@;J!)|g%%9`p7qk%c2|L@&%SwDx&2G1MF+>j@sp
zShMT&K&)HmK4DpZDl42s&D%X1fVnz$W3=bx7||k-XH1=gf5lkfTE@n>`k1cuQ=lz0
z1k(&Bf^{Q0*$K1hDj6)I&NMhe=f)oXa_*&mTwu%Z<id$aaH`o>0$a6qjjNV?y~EH5
zB?-5Sb`ux_DqiboSZH(KpxdMN$eOK^h8O#XF{B!Majme<6feq!N!7$13vY^V&3xUB
zX7G(PgLT7!JI2I~rHkqxVVGJ?46imET=<K<#cD1kv<ma~7Y8_=Y<11H{W^qIlDU(U
zOoCHaD>Oh1ug=jelpx>YpKz>;Uw^PZ;D1dnf;M{%j!mzGn|vwu6oFvZzAj<HFxM+)
zPpzvnyrGt`JOEQ<@>4(C52#cFqErha7Re749+lR}Bu|cFz^I9hjA&mmgrAdhj-BW8
zR3`(ruy!X90PlgkJEn?%2Pdb#V2)v!;$nx9owGWx>Ya7|>oOA9cT=pgu`y;2emK+W
zPyP}=Y=aqy?YoCMPZ27GQ#k}<VsvoUSjXW?M6164V-W6Ii8c@u%nEIu_!(1uAM^Ob
z^@yqdPAPaw+=t5VSv6p7jusk|tJYHm^^80vIYfoF5K4JBa;5yntKo(=uS{f<rH&r<
zEfs&IA}=K>n$Ysl_e2wt^Ip_as908QvKTnBou$~_xKvH;vjx92=p;2PTahk4G}rEh
zi8squ@Rt<y9tPrN8sgVwE2=v$Tei2#j7|EG*Z2>-FJXa<MjAqwSXyD#fG+sXdmqjS
zEs652D`|Qd&@+(g2n$LT7PS2_BEFAL!niO2FhJ<Q1s+3q`rrYIvAe|D>MbH{fOEmZ
zpTCTJ{EYLU1ttYb;-ao#S^Xs$us_2l`h%DDMCM^2>y<&Lb|3UjAwWCZaNM3)W5u?&
zH7Qt~O;)M#*RqAea27r0QwhtcdDm4jrMYi`Dd8=F9HPeF3xPQnM>KLmG}XJ519hzk
z3?-&my@j1>vXpp{C>O}6LlUGmV!#isMC{XF2rx|V5k}F6jC4)CAz^>a<-1d9Rc&fW
zjI2YLV0T9KKRmUtS}<?@q`*Omgrl*nF7vWN!gv30+y)+zIc}Tj8vTIPeSZ-W=5`Ef
z8U9jd>i6g2$ceG#GRQFQeq3PMB>5JX8@h3`+wb=3YekdST1<6pi63^s^^Wd9V=#^5
ze1mDQiV7#l=3Y8+li@OYp9NLR`igOVfF@z$Vf#4SP}b46L_?kwQfj2@F`nj1B<MR2
z3dE#~0;>k*k`YiGwgigvjY6(aNzi~~QY{!?(cEDIG(Rae$WnM$lNTpk>HWr`gyan#
zWWofix11_%G=m$%r@FP}Dr#hSg~=>7?Db)YH}efQ`%i(YPN0t_5Z1|i+LzV?p8pdy
zcunl4YkpP<|LghTq@Xr7MJFBNwb$=J`(?$~Ukp6VoMqgpHLz-~B}5nXo0+<!XB<YQ
zI&2hnbIRHhvB+{WRYWgbNey8ow0Ww0w8&-M;?)B0Bx29b;DFU7Pu|hkccBcmY!^Nf
z`X=B{ha(Q3;S79UaE|D%LbIgM+fKa3(WgO<t{7-Ys=JK4%gZoVhySU|@sWK-x+Z=$
z3v*P0x#3lqT|eQ&j(CNQy@Nuq>rijw^dHqYHfG-%Pb&0`6St2PEEVg1+t<QF^l&?q
zD^_gnjAJ~8xWybh$`)*cT$Kt2Ve*)*?5-j<B*mYtO;)z4Mibh}?ii*%L=)Nx6}j1h
zT(uA?;_@6F*<{&`+MUSNXC>TFoYh;rQ0>H?ouz`Ed9<?3g*1h|*_pe=$kk9(hj(1K
zxG7<1-j~rKOpsR3k9j3lIaWc%)rzTB;Wuhb$R?%OVu?LorCn`4Z+>VP`VcJ?oa&E!
zN_b$YY929BXMRRpvWf|n`MqOl<|Ye1acuwn_BGY=#n-r(6ljvcvhatooA^&~7{<wZ
zaY29&16f@nsNAcxq7VnogF?-b<?E9aTzICEsh75Jd=fqw&d5sKhm%*B($pt<QsW)t
zeA~HCPDuV;Hi#c7dNklR#Jid$&_~};ggi!gP8hbbwEAM)>7C8Bggtd9;RG|hnkqP0
zMq#S}nv3O=J+h{&#F)KzrbLcPi}pF-O^U{{lD7&ki~X|bqF#URXN#KhMNWnv7(w(B
z8Y~>AkwcU%wDz2})#UekM4Tx3{kGW=V}#=lm(c__X9B76AXz8*Pa)G{)Z8#9)McnF
z*;hpEdkiAF#Z}-d`Qc#EKCiRbNIId5syrJozobXQhnPFPjlCwmRi@=bK4O>OFPrS*
zYXd8EV3YcLjC8TU@WwP~t{IGU<X?Ro8X8`e+J>DmuB*=ilI8{3FLnm2Hxn~ZRdWby
z&U~kle-2@pf4X34g%ySPSzUyfirvS%ON=J}in7vW9pd}-%)xxSmm1vUD)fgpV%{dM
zvCJwfTEcpIl>xh&n7Zd%(Lxg5b@R>tgoxGTA%!}{ajR=%>}<TPh`wd>hJf>xp6uH@
zQ(*%1-IT~n3IVgb0f~_dHJhQKkw<i(KM(pG7c}RmHL1Sf!G|%$eC`oEC{!zALt&xX
z+Bp5Zkp6vr&<Wzd6Q6;m`xe)3ycV9)8yVxYL^VaRC1zP~^Jv~G27OyWu5gF8{m%X+
zR_BgFu52;hPm}RCCzo$q#h-$JIGS)_`AKVUgo^fxzpo1TgK-Qkn~mX~_y^F;cJy)9
z#vi_g%a#Z{HF9N*_({P*m8bel4P0x_=Vhn^3TG75cn`uaqN*{$ddxVQhj*%atA)}Z
z^6jLe5bUz6Rr>twb<~fupe(#FAL1!?ECYPUP0350sK5sKUzO`|XTg-in`gpiDOf3w
z+yq_01g!(2^*Rmu%XsRgE?LBIrtP2T9<hmbqP!Yq*qu`t0owoACoiT7;Rf0uYv{z$
zeYk;mC5fdK+RXWY*0tgEh0uk17MAgOpMuX!6dBA4`a80yY9}XLCC!0QTzxn@L87d5
zh~+^wN&8~PHjD!^g`Q}BCd8!fj0K6U#vIEuV`kNF3tE~YX6#1#hc2Dn%?~`OA6F3S
zG(Z`8V4`@o&&5VaW0<a|tE4kMU|BdiR{fYf=?`!_tSKVm+wMM!4e9vejObE+TzGNe
zMmc^<&fS>%>C8*cf0$|bSNgA?IYG8kJgzmy8nxjmz9w?-$B%s)k=I!&_@^h#v@s<b
zKfp*(3gu#Co53QI$`^i1sbI;HLxWtcY%(TFF~h;_h%qJnq2Xs`%4Q9f01$s@a<|9L
zN{C^-1_o9oNBA{Fy3ppS+bCxc%@liibX5Hv2Gd?qxoQos493-|#kjB;>iNY$UlXD!
zK~;<_<;M%vYY-O7B3cWCb>3RBv>IOWY+n;dMSfPnCFE_ZjH=j={ZcyxR=S3OmAsM_
zGx<qy)#^%HX2ru=-c&_Ph;>}ue5;ze*Ix_9u?nXUWVa!vwblmq8?OiPN?~#a8-5?B
z7-FJt5mq+Ez%;($98v=La8?T?Vwli6JrURRsFf*kw%JP*qY#|X|1Csb|K+l0dEhcC
z`egj2q>C67yqU(2j(@`RaN<HxCUHT>BK^*IL_EVLxR&S2)!b|AM~%G*g3t)q(q7+M
ziqWq2cyEVXMM|<qZLswlKX_Hm!|o!s&G_4hQ@V;Kw9ELTuhlx5&{nAURf#6-a5SOS
z>jd?=rhAR-qy4b`q=H=8?*93CK(0Ei!VOEli7A(-SvYXo+p}jP6%+()5usuCT)((l
zmtk%QQKJ>5Z9W7R*mH)U!Nl<ElS1%`3EfgKrQ>|NWQXvo81R)Fz}zZAtG>a*_U|g3
zAwr;*m#ooC=)JdDa7@!8?cvl*S8;*OzSELX3N4-T&CJipj!cIbj@-n5s1}KFgDt8R
zgDgxNtT*oghe=(I=LK6!b!LH=w86d6r1yC!l0X;lpO)zuVv6-L_Lnx%dsTK5{?L3!
zT;s}R-BQ4K*m3MTmP^ijBS4>Ldzw;cn6#x;=MEGL_m;^j5rg+PvSe>V&^>C{{?m=}
zE}M`moA*{<+-eHi?1VW@Fm01HSVkDQ`wh2m7Mw_wZ7{ofeDsQCR*1h0)2BZ#{$Fku
zidHGMDr=I-Jnypr|NB^3_jbpjoD7TgZ~@+tj9`4O-k5V`RS!D>781QTapUF}8V)Mr
zyWuiwxEFy@BkE5EyKZbuR_%_^x`LY*=4QK>#*Cf#Mgrabv#;&q>+e)a-pKF@=Pnr6
zuomOOW@zEBTbrHa@#R~Bu(~!77Hi@Nr#e51c((Uf>G?9yfK=`!OLkN>s&%_EB&*ex
zJV7HiyygjCib|AmBve)78HK9m&9sCjZ4d{&>1~dxdai<)ZZ4D2R0A$8nq6`GPw4?W
zVIcZy5**}&%`a`7!Yn+PVp%QxKMi!oA$kq{yH3iUGv*8(>)j#z^Wo9$|C;i_n3WT+
z2^uvahD&m_LN`7nL$F#<A=dRq*7xqj?%iuukw=+S!I77?_KwDMb>c#D{kp7*YO#o@
zrV|cVc05KYXuoukB<1ZbKXj^~J@%@yMNtk;>GN>hILuT^HJb2!8AsRoz!yt3nh>+X
zuGxET_DtwriEZZHdi!CJt8pvjiWHg**|q3%DYy)WuCnSHQ#@;%Z|Isd7z=WRu1MM<
zV5Nz^()Lqgne~u0(T<Y}alQsP!k@jzi4e~VMg(1op~3hXAWi@)92zUx=+DuI{`P_w
zT3m5Kx<NONgur&p(ZUp31UcpsDS*DQi!oWTz8)-<d)04FFm$4akp@el`$k2Fe8QER
z`aLo(_DU+4(c}xPVfz63VosDu0=4nD#qM}o2?B<F!|Ng4=cT}VEXxUP(+Ll9!g-k5
zDC^mtop!|T4SkO*`)<VAT^njyI#(Q{Snb^1OMYxQq4L*yVT1bnv7mgjoBQc&MOPTm
z$BReaSMdlyrwuiW%%}^K`>aYE7P^zKcW#uAoFmIDP0gZw(m&+@|6ePgLVOLg{z73^
zZ)2b6dAN@}^ifW)BI$a-M|l~oW?oWnFkWBqhQ}^aWE~&aU%Z&-0{ftn<|<&^G=%B&
zHuf3@8ln$}IybP%GYbt9NNwTYuxc+gN9&&kCh+L4S2m@`O|QOI%mlXEsuKg21mdAW
z!nl@xTD#c}RsE9FxxN{Bh&iVusC@e&7F8!pm>LMnO*Udnb<U#@SN0zHrJv4fvSeqL
z)I7Ri%=o1NC}MD3x+xiw6*jx}+Q3#<bS^cJNUV8N*Pt*dQL$~JCH!JY@QqE~Z<<`;
z6=kl4hhYP)-)65Yr+T%3TeW0b7}%$kQPW3cD#|{~bi$Hj+LS4lCHz(Ld|1XRVQ}o*
zg&S52aR%bGv0En~D=N@kKRGx28_E~=3@-M$3RtXQRsmsFw1|83L2;4dDi~;ctIi_E
z(eF$>D|wos9-UDbV|-gfVXW9vLcbpKAzQ3LP{}mN59x&V$dyXUW8|s@?~5<kmXxik
z!8<AbY(_`uUR{YMTtwd)O}JOC_+dMPcN#J+HXK==b$N_jb(!X5J8g()mv8${eDK<8
zrO#E+>pYTx!g(vBHd83;D$GSmC#_0b*~gufJ;w+d*y@$3T*1=<r!fChmX)25tlk&V
z%+G>!QxKf;j3fWo3kDi5pIFz={j4u`_Z5N`{)YR1O$@hh833XA5k{?bf1O#lP~3nA
z)c-~B`*yNQM1}V@4VHJXUx>+>sF=dnNq`A#i(=8Iz*ym6-FX<>d`ch#)uh02C1kMq
zE%8gz3E3=tu#B2RF*sjz7XyIa#70g?oc~Cak90&USdwy!lJ(mp5Dco}in3ZTsSNtm
zX`4}48uw|<Yr=`#DJm>^-4q>13Xa`-g|6oX(=yIBRdpeL!)1&W@wXA8aG)?<A5pUe
zNSXLJ<yBPBN4P&>SN?A;WG#|y7Tn<`lX2|C{&NN$?=d8=9w~>b(Eb(6lrP3Q$mV@O
z0RdLof>MgjA)3(Yj^QUNmvHW-4KZHqBD5<f%x>OTh+X5Q0*>8Gsi>w0-n5!`50F&d
z`F^m<kD#_`P_OdCJi%tahpVXeGY4*o*bKjVOEHIiu?XBCqokvke=PP1!a55I-0VLt
zCKZ;NYIV_BU67x5_Y@E-D|v+%&E88*?&@8M3#8ab-hFu8(H(m-Je7FY;VBXcGRRY-
zH{{Kfj_+nJVWCakn{cbpFJd8uqu&%#eK90xWzt?12F@D$x@$Lhr3$nn<iy2JsAcc2
zg$I|E?f#R*fDAp&?ugtfnWR?*vO27b46^OR$wfc5V3uNb;mR9%S*Mb6*mbBY{PZc9
zRcV&1ST*RdLL4r+n@%i_XU6Qk@6r;u^@l&)-Au3`>cpgNQ4!{tNjXGqEuc9xgOc*N
zhJ}4l9l5Np4#1bK|A{ep?^`0(rJ;Kn>XB76;r0+sI1h5GZ*~+86}LBdKN1_-BUi+f
zV7#b3a&??e*v??BJT}Yf@(|b(_Dne;T=kX|b9ujKg~VFn4amS&<5l|Dq(W2ZURRJX
zu$o%<IwPPA<3+DB|Ca=Qd->vJX2gO`au_>>v!X?iVLp7rnpYebDIH*@fGjj-=BLSn
zjHxNwATGL^jy0mR4!iqOrKw*&Zp*XKpjft7;s@hG0;v(aV{?nsA%n^mzWJevX5c9~
zA%^uE<b-%?C@mgSn5=rK>doF;L@fqOYA`64m)HrBswFLUV>i~pg1&1%;^zf5U?FVs
z3UQ{>mDsS~S@CJ1tk@_w2a?{va752{$}$B#pKo?vTuj^qN3WWk<A3p&tEeF3tpBsK
zY>E)xxL0HHBGd5Tgpx9zr5@exKAbS?aMWXmBL(jve)GMwpxOqcYHR^kZ^=C`Zej3_
z{*lDM-YjT%2gaSSFK$=!+Zw=<xvvKq;H|k`Y<Aoa?sS#ZFPc!5VSm+kJ{l=?VusY*
z{V3FLr5I>6T|vg_Uiu4NJ@WGFixEPNocI@`aCq$YRu>?t>k!uGH3-X4t<INViH;pS
zHzqP>??e9reG4VXx7?B>yE35ca9-!=zSZzl4O2_&4dY&|^zWc0tmSl7x9nbtQ>+%8
zxP$=KCnr|VNQ8>-4IJa8Y%0F)7j4Hb7FGr3q6&0uVz31M5@OrXv$Jt7833f#E@JlB
zZ;H9q)V4}C11&8SQr0{yaBKWGVOi*NT&+>D#Ymy|y3PTx5@F_&{j8oR)!8v@HPU&7
z;>sR9!bg`lby3mL&Q!CYJ&8-%{%a*8T4;-4NI?S({6&@6Kg~~&E8B5FvkjCtx7_{2
z;2jH0s}ahCEylblTe=q>i0z{ZkA;e%WwVt=Qi~03r_cfJW4y@Lq^nf?3ght}wli2O
z1$td6ldHbN!`Jo-J11PV6EIfGCtI?QE0*lSwt6^%M9v%Q9hU07<pHyLBN=9bk;?z`
zoZBB*DB&^RIuXHHRdyCp^4tV}pFY}g@w{MSV9s>s;cx9>HKT;J2Qae8UO3+}8lzm<
zy;eC6rOvGrKn(q}w2y}0?FCR$NR-t#f?~TLur0jS*)`oU-|UDF!*asVX0;gQl80y=
zGDyZ&l7~3)SCM6c7~XFMb7T5b3;%N#ekv4;p{JI^U8>Lx9W2O%w1@byqgpn|QY<et
zb?!gX>D`o%&(BDcvi>1Ll*ia$=!E%Wt&naO`Ig~^`M3hSXgJHqS{ogLwWzI=|G&Oq
z1O>2~t`cG^NjxG)2QGX9Bp>UmRxJu{WoFm!(Q114<p22i!~|ef9nrU10Mz8~=cWH>
zllJD<^@r?8<R#C?&9lKSWDpc7Yj-coo9u$KleRU9K1Ah0rmE*Yl?-#eO^7fyTP5|^
ztjaDNxb-?jJa>At+YVaj-r<7W+A;BJE=>FrHu%N0$%q(8>I9Gx&<X!^BK@m@u!8)m
zS}@zF*ujgikMOL>tLoATrh4D#3RYtr-LGwcGZkB>ftS@dlM`09q<ZQR9vnrG8K*YB
zu&js^7q?8^tJTiJMh`(O-(>q~(DdB~hj>?*l7+<$*2V$=VqYtBoBik4B37nY<Oy%N
zLdUoZ=+r@16T9HvCm?Ewi`_gbSU{(+tS&R(R>=nQ`7e^se=&@SF7mStR^=L<I|8ic
zVS!~M_4_kl9&oXH>4vZr4O@+U%7VOq8FE6n>N&)sY&{J=7=Jhf6w-I;HjiU6EYeMy
zwUTR9k*ir?{eej(<?-%Qa#^=aOsE>Xw~Qv7g)P`(yGk_S$U2(vNT_J*OV46Mb?6pi
z!xQ8xusnKs%-ZU-O(#?)S4(AbHTGJXWl2@IlMl3@?|m8FPq<Q{qO8i4Y6s+={dkce
zxf><xkpLhDv+`1pGE#q{Fc7_sw>Y#74_&-SqvtV&&|0i^mtj5+vZ<F&_%~jqI4|=X
zx=9}oYyH3YS8Ox$GwgyLu{$ckbrI)V^gQY(!ORal|LcWBKzM!ySv5fLh3%^Fmrq?W
zl?>iG5gSui7+DVivT$CDAQM;iS55|O$1$UTn^Y{DS}F?hkRu;32Em*#x1uX!XgYif
z=%VJ!Nv%U<aUWih8=v^6q<R@Sq0N0mH<cm+BTG{(3=Q$PL<Hx=R&+Hff?^5ugcHYE
zw7%(y;ZJX&;3k|7L!b}1g-U=X^^y?1o(5!<d}WbSmJ`2_Q5F60hY=-o6yNVji|1Ne
zY%xIRa28rMz^%qlgJg}acvMW@Ur|0eem6=tPLN?}gz{tz*r%(+$6!7A8xSrW^gOYB
z7>XH5sOx<T2g!96izl2#3!WG*H;ETS4Kte?(HE=aL@<aQ8%`&Tf<bti1nprPVRqra
zH=mDagGn&FS-BS#O)xPbN(m>ehA36C2viw!d1=i&!jNJ5{bC|n&FJSFs_hqxF{`y1
zZ>y6vMGFWkDt5w#I)|`|EsnyuftOGwp>MsPF}_R-C9?3EOBE`Y4cz4F!;5{oZrHG+
zo*r92)yD{K_n&OuML<wJEMtNWo0z&|W5L<#E#*xi&UT=PTVXR~iIRvTg(*3WRX^ko
znr$_o%Fdi>v;UBjk|WyXsYx6g!%dyG#@ZJPx*Bs8T~Xy_5uD|aUUC^1IA6?@pCCKI
z7-5c~F+on;DvUU}lO3T|<T^g`Qk)K^0VfPUz16rRU9n_8W?Ma^!{}WrDmn{=HBIjz
zT$Qq#z?{F&p8bmzbH-o2o$TvQ<O+Rm<cbr^tk3e?;JrmOp_nyUf@b$b6P6XB;+uWC
zU-i%}#D-PIS39*JnWbo-u68w)>`~@cO|Hm2wB@><tb-%2$`G#ZUc%sN<(R_ABnf)S
zgMD0gY-EJi8V~kY#>cQAVxH9l57nk%n&Dzhid~RyFj9*kpLpreP2Oqd91OT_|0aju
z8z#K|Rsa6x@0FdthHgCdQ;ZA7BF?wyrS1MZo(rvuh=4Gl<JFPUu!C9ZrNJ|^#stVR
zjI6gAr3$vdF-{8ZRDQDV&XuTe?6xEo2#RGCg)4jXn>^38J$qnd|3a^e;#e*uuEt9_
zY&l(toX~F`F<(mDHp>ZZsb82sN)l*qidFI)7-<pTWR<j-Y@bT_8Hg+U+)taVMz0l2
zKl1+>i~7$)=Qp>Et}mzuWBO)*tf?=Ka1W{cq<pc_w+g2l36{0OB6RG=&(omQ7lE^c
zWu&~bDu@=^)?bA9r&W~4*#@KVF95YL3LAPnZGAkO{B-0*RUD5&ym0Oji1%#3O3DYG
z=IMI0j07VZF3H~N{)Gc(+Q^Cj8LVDL9%0D#Zy;o>hkM9K#S2>91aNe=*dkb|;j;r>
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	P;?L`nOVo|2O{Mkk4P`ucAc%0sjH=
z`)m9)6!8Ds&+!TP1Aa;ggact_r$8ra6X+7?!t55fgxUpe4BSZVu}4|^z}Uc8_CFzT
z7js2m1((vxfz6bPIujMx$t4yQ*b~@8{@~TYt0_7-JUE=07tCYc7rc-8)8JFgjlqq~
zEx|3!^5B~k9f}G?F_S_`%+8_C%qv4zGAD*6k|$IWDj{!ZV`w9J!>+K4qQWuZ7>W*i
z!(Qe^;ft7;hA(9f33IMmovcojYNc6elw@_Yx>4Bb!S(0@tC!V_?_OzL$?jKKSF!um
z*4313^|ShsY4x}Iv!8+1K=N3FtU=_puC=aZm+P(T$#30Y-9RbU2x|npylA~ht*n=<
zm&meSwqB-?^{VwMwYFZfUSqy)y-xAg8`c|?V7+O*NdfEE)~~6(Rbf@|Q<YXF``Kyj
zWbU$dvClo$9`?D{+RHxoS^KE{=TqB7nEG%{R<(UNA8CAq`Bb%iv#jT*Ii#;NwCJyD
z`&YHS<!gHxYWq=<%M6}dtv;E1vb?Tu-Q_1&pIlwHvwnB|(E9x+&AK^tC+d^xd-9o8
zzZjD3`4dM^jy<{O<U4iwCy&+T)ECybs-JaYdtGYX(z++=cH;j~bmK6*@_$!0gj=_v
zuIs7c$~QNLYfy~b)t5)ycYMF&mhrCd_uK~l;QJ%R`rhZ!Hx473m+Q^D<l_>Jrm(c+
z(PHEdZEuswPs*{dlAkyE`FHtxm+w8k-tF6seVTsH*MGnmxtGH=Ib0qov1hQU$IA-2
zhY^pO{4CxfTV;ye(Ub2j3p`FDbRtwwZY$Ty<xzE{HIkyOQPwDmu|`{?Db~uf^0<t~
zT4Twu##`gr&jf1%MOk-QcX2sRw(e$^sn%3#BX<NPmo-i9Ol%ceh5YPvYdR%bGprfp
zvmUU%$t63}n#px<mNkpri>+d=T@P6gak<a2zRfQ4ta)6==3C$6y0_3;$hBgTwFoPv
zWTPfb<r$@mVooh>tXQz0^L-POOSC?ZOK}#v?Pe~}>rCv2&;3|AG*0igT-mVWGFu=O
zft{Q~QT(>pPg4f`gv#FvzLu?C;Axq^amZ7F^qWY(f%Hcs{U*|HBK<C;KMLtLk^WXl
zzk&1{NPqOFNPjo3b?uqmWPOzDsB(>cS*E}45YmtP@HzCqGX2V;>`dL97NwZT<CL@n
zO??Wi2!{O)Ic@Lh7>YB6!TCD%lrRjr!!Zeeg}(wWF`V;qy=jA6%5>RIS(h%?@gdz^
z*cbP1PEEtT_vq(*yw~i#@jSBjaXcsAVPFl_R^j~cg7CudqVOZ(66KCmp6V{@A0V|8
zLJE<UYIUFsl)HG6-Gg7yO8s(&h`!-N;ZNvhtd}|o>!nV`ZV_@d>{!m#>#&~hx$Qj6
z>8|U0K2Kp~;d6hg{dqmL@I0Op=k=6<wU5s|4|kr|Q!CCZH*P!Ur?__1FT}dg=lmQ^
ztCzpB41DU9x(oGlOR#eExjiTIB>%ip_sjE0-TBrmgZrcNDeZGl+4;3ImHX?c`JKRJ
zm@=;;ck-4w*dF~r;~vbqPOFuaWr*VulSW;PKKW0Z{<D*>H|nzWO^&=<zr6n8h|s0W
zZB7@q4F^PoV5qS`?^x`{%B;(==d*K<tS@&*RryP&rOlpwY0j5;$gi|=#qt@hO<(2T
z`RAWVi}HV!f1jcLZA1Ra9-+CNhNb)RX53{DaVPBP=I-R3_Ks-wjw-#*l-bO^hMoLm
zK6YsKG%23^dR1>ukug7N4Re5OSH^*;L5<;eV0*Lq9sFe2?V3GhtQ*1|5Ea`PRwwG)
zOjv3MK^a<Vv!|i|ZWS5N15pdkngeQ2&hyFv(;blmpCx>G=<r?ZT${9wJ-qpH7Q^dz
zpXSc}*ny(CJKJGzHFL+vt@oZ&t!dhCT&8J2vu6~_BFtsniR8YOo%D*-2D{0x5I#O+
zdAS>NH8*O;m+;mY*GGE1ZLao8_Zg>gf8jLl-)Y`m?u5~7`=8fr-dA(!$C~o*8~@*T
zLyO!8@E<(KKN>zk9Wk>@;}ViPD5-M`pWC!-sdI;xJ0sloL|j+3;JXg;c_c!wjgZG2
zXG2=IMO=R#>5e=j(_Qx^ru$Q#@^={L9G9kiOvipW8}wc{awnW^*aJtp$z5=2na7xQ
z!X;vbR|NS;79IFXo?S#Yks*4EOfiU$F3`K+7%Fl^t{5$_vscURD2BbY{vi%wXRmc~
z-y``8>-rt)8r)%YgZo>!o+WokG8Ri}pYnQ#IDycX;_gtmVD~SCyaO(OmE?Tt2I6<R
z%EcTBpL4Kxmz-^FYZVQ5Km4fO&JKVT=*MJw3xyo%znEP*<uCY7w9F}g-XmgKK0FbR
zvkOh;BOkxAnat%p8L~;A$HyXil$KE`t)gdXJ#FN3Gi~MLEvlehd~D^Kv6c4IAs#QV
zliF!^#q!k4S)^4b_X+aU$z9kw;@YoV>K~QY^~t!F7L<i+f89~|KMEJ@=2nk-U0)93
zw=nQeb#uW?Q2OtF5_jvccT_$0o2yR;2hgeWUFaufM(9!he(dBjI^FI%JZ{$g_Oy5T
z>Emym_tR$$`;(Jr2-{83pJboha|RzWZ3j-4oMvAM-2b@vEce%+;l7Ojw$J6ROndT~
zV|HxgS?(V`^ZgUU&vHNZv)!-Tc9#1^pYi@SBma!?%R9^c#b>zx`IYQ{<K54<HWK>I
zShFm-m|Be~7&DeSk14okstAvJpkRvVeOJMqcN_C2-Z{3w*gR!S;Zz>;lF2owUrs6w
zxqj%asZ@B=umP#`#LYR(a_;r&c|?!p`A82MO1INk9vA1)YI=$L^8-{X1ltttMJI6y
zTNBs8w~yM;g>(g7PowEhDx&Yw&uA09Mt`Ay3PU7_RB??Ms(re7-0Mlh=nk4d-=z7p
zhF+#JwqK44Q~1OMVz9U#J`*U8zDB+12Fjzmc$E1bJ;V0T>+~<SaT3|CxmFB=zeJLw
zQ*X+qF*J@Q(zn=Nd6r&fOX;ulk%$t0(NPRxy9JAmuzxpMJYTz!Cec({NI#<I=xvcM
zt`ymvk5O6IaGng$y5Xi&nmagWL@I5({yNT+!#Cw*rHW)cALJRZk5bs)A3!%#0X;<D
zrytWV*kbw}{gFPP<D#_)vu%|juI3rBdP45L-IhoDEV_xu%m?WadYs3;a(ajUK!2lS
zBAV^B&Z4`xO62G#h^?$7x`_Hw4&6($cx+upYv~OhN%!#h`LSpv0^&k(spuna)K3_k
zW6AV&>QBSz8&pgsw4ANRH>r|G-NW>65hFt4YvMA|SKOqZaB<$Xql;-Eji6~fhA*Zk
zc+CDaTbKLTru>90NlRQLE@!*(X8lAI*NgVljRw&zR7elg59mpHp2zoh>3#Z;PKY)l
zNpuxGL_aa2F~5U60}fCsT|(DTF5O3S*h(nn`RH%hBB)|Z;G}Siw&LsJ3XvslkzZJ@
zy@ksljAvbJ`CduireA68Ql9tDWgCLa;M(l$!8A1IhU-&l{P3LXQfWE-gejWuUcmP1
zRWz7xW!q#r{g8e_Pth-FJH1DLqQA419LLsin&>I|v*jzFYE75XwKS6Mru*3rSwS1b
zt#G%vRfo7<WKdrkLbuTro?m~59;2VKjq@V?mUgo>Q$zJ4UZjYNMK3Wx{(nrwqBWl#
z>2kW7uA@<O4?RFjX(c_)R?!anJ^h*f!N!9}v|~%Ww-_jH6Q$$2PaD^I3-}gT3GM;+
zgNMOd@VI2G0mhCSGo>)r2Mz%Xz-8bT@FU4K1j2tCKiCfJ0(J-cfP=v7abu?4*=8h|
z2TleH!CBxua51<XTm`NJH;o&2Pkx)N;4ZKVJPaO{bhiTiU<WWA><bPBM}iZ<rQkLY
zVY&~1wd1Euy31WB85aZkz+|v9m=5*;`+!;C;PF%My(exMI2;@a=7AHyDPRFO1DplU
z0q27y6DCa^6So9h4z2)KgKH-gj2RdA0=OC623CT5!GmB8cw92x1;&G6u*0OOlM3V0
z!0upAurD}Z(zJW0#18?pIdNm+M}YIdP2dqpPdgBPJn-Wg1&#$LPMLb&J)WsxAy@<!
zgLA<J;9_to_yo8TTm!C~a__h)o(<qD;1+NjxC7h;?gI~kN5G@t2}!R3#(?qn+&O-d
z*AFIv9l$PNH-2q_Hv{YqW`cvjp<oV}3yucIgOkC0aQeM0yfeYs;5={<_$asxECpAA
z&w}g0jo{{cxz>2Mf^UHp@&(>q;9hV)cnGWpkAlY~69{Ytx<MZp2HSz1z^-6A*rQ<F
zl){8QU?I31+zK8k;9~Zrg6Uu;m<{HE`QY?v+#C32f^)$6;9_toSPHHN*McvAuS}aX
zb%JjTxDDI^?gaOMRp3GJ2v`dq1M8;UGcG^T1$x0`unU+0W`aY(TyQ*?KW$q2rHM1a
z+2A~I5%?&$99#)L3%&rp0&WGjgFC^!%<hQ?z{6k-_z`$Q(r<vVpbty}JAhrm?qF{)
z3mn3{%%211f}_Fl;AAi#oB<Yt^S}~tDOd`w2G@ZbnHl~vumY?CWy~`I1bV?Bm<)CR
zyMW!m46rwt2@Yaj9vBLa0;hm8!3E47f#u*za1FQ)+yK4;ZUMJ}JHVab9%j!#)wKJ@
zP773nN5SKgK>}NWZqNsY!FFILu<Nw@@}~vU!5&~AFbf<E4g-gSBf&gy0yt&b{nI7}
z3&7dnVsHhxzK~m7a0|E%+yU+c_kdO4LGTDz3myaOBttGR7W9HaFd6Jnl-?sF)P;F@
zs2j6KD1&)Ls5i4`D3jSMG>F+RG?bYY%3<~o<uV6^Ml%P7#xn<nCKsh&ksiutUK*Ot
z>>irQyeu@EnGu@Dygams*(3BQ^NP?iX3tP5vsY*pvtQ_0W>#oDvwvtKb3kY_b6{vI
zb5Q85qV%5Wp$g`up<T@Gp}ow@Li?E+p+n5eL)FY4p`*+zLdTgs!^G?rZpG{ub~CfW
zK4$-Lm^mQajyW*gi8(0TwJ5z;dN`eVX}AZod$<qtvTznNBRrUSd3YGJM|e2%ittEg
z&u|{IS9k)mUw8^LD_p?rAD+P+5T3;x7@or%6rNv{-Y-2|!n`!RgxNj3oOxMz1v4YO
znt6G6Ewe}X1?ClD`9InWwmd^ED3f?bGnVHx<9SXsf#*OIdCoGKZPY1jPfq1oK|b60
z1#Gz&vQ<5uE!P=5^O5Vo_#&Qbc%s37gWu1?U--1~Z7#Mdu5zE%_V|nF=XWJ%&r*-&
zS*rVUy^7}f@-UvUX7l_qhi<|><<k7sss5w*XvOX^SYhw;(1JWSx{PNum-FoY3Z9Ag
z;<@vcJg>Tn=QvmM%(x%VQv37Vb|BC4t~n3?pFSooXzJSJ`P&op<T+f){|(*5j;GMu
zLcHY+G%1eavC_{Md)2UZ<LNk}ks+E%-=bOcAQjU?JjZ{S=ilGvIrMjE9(|YQ)AzU?
zE~G{D2$j&|$k+cbPYC=Ec%i?JoytH9F=7=;8Uo6-rsQv`O)Xs!y1;L(Bkw9#{9kLj
zB!UFy!dEWc+NjwX*FyBS5HC1|!_UaX7UBQGNZE>RqfvA_jix&&uLX2Lmo`$?Laf*U
zHm})T8}5<KE#WiL#W`b9Te&~o7jm7XuNzjfb<&{DSO>SIq@WdNpg~>aZd5HMh3++)
zr$Jri-b5`XThaGvG5vs+&|~;b<7d?crJXlrSdY>V5!SL6&<%QuRv~n(Uqjs@u0JiK
z=z4m9is+m4lNM<!f>J&sTRN8n-F!y+T8L^jYOHmlR=d{gUt`5P!af0n)v*XWHxSk<
zBDHQ6R^KA5hsQmwWIp%}umHrGT7*?j2y0;xb}t~T=%rWF#+oUF)q~XT5rma{2s=QK
zTFDP9&$GQE`4Bi8RO?gE0kMMx+cA>g0kQrkVci|V&ID>rZBlD|VND>mb0o2b6WcqI
z-v<|iSci#AMiT3|5!QbqtkA04mbzA@hSehp>lb3A5o}>gDl4iKRCQMMRce)Rwf;EP
zd7)L}Vq=ss#h7U<FqRw78m}1JjlISZ<Amuplg%`<k2%yFWlk|?nhVV3=CkH2=5}+h
zdBi;7a=VgUX|6u55w1C|^{y?hO4oi@ZIlt^i|P>7Jt`|ICu(d|LDcN1#ZfDw)<<oL
zs)-IqcZu#9JvcfydSdj9=y}mgqgO|7jNTT#JNi(}zL@Hmy4KrUA8h?m?Bv*@*!i)`
zV%NlOihV0~Pi$SAv^Im<jA)bJrnpT>o6<Jx+LX1aXj9du#vSWUa(8tPa1VEncNe<n
zxc9^jh#MU@BW_;Yin#T0yW)<=$Hw=J9~D16e!C~$)6Ub)GuV^sndy1Kv%|B`Yj}O$
z4&K?`Ro*i1o`l{BLlQ<NtV<|Ms7R<vsPU06$=B7_+c(#@*>@zdQ({KqfW+a6;}Z)L
z=lFyE&i;-5ZT|iK+Q6v5^uXM}lEA9KzF;tz9?T482lImY!Qx;^ur#<XSQe}ZRt0N9
z6!L~rL+PQ+P<ALUlpiV%m4r$|>q2FricnRkCQM;(I5nIe&J1UV^TPSz;&4g0G`ucc
z7On_ag=;LbyjH4}Ze?28R-Tn_6<Z}%skP23vns4At0sw(yh*7^=}DPM*-3dx`ANk|
zB}t`8>ypZnDw3*_YT8m;Z`;(i>1{LHX1C32o8Pv$ZAshGw(HuKwXJAd)wU*?lD)~P
z$?3_N$=S(y$@$5}$tB69$?KBKk}Hy{l50{Z#ha3vlAe;8lAV&5lAltXQj$`dvM!}8
zr6Q#&rKTOV^R`QEm)<V3U3R;?cKPj!+m-0m-eU+>a&jMsKFFcxI`k0^JtsnE%RD7L
zLT^RXZY)KM2)#q5UGEsQKi~17J^YJ?IP^miI@?QWhwb+-?qq-eDS8iw|J<|a^Bnp<
zyWTDB9CS`!#!~zJ%N^y>=eR>Z;n3^s>Az}@{r**(p&Jy7U&C{XukNkoTe#!mId72K
zu>}R!%pxWGZB#Prn34lBoAW(zhL&YY4vN)slsy)MR@zg2O)I-TWV2nrF5dq9b>j
zeY#yAmgLZr9r_}N?#Sg~iyiu-4t>2{zu}Nw&z?omB%0!%z1E>`fbPh>>`hvpQ1Zrf
zEr-E(3T5)_H=Adoc|7Xo^T=4tqgM%!Fr~Db*3m{Pqis|{yQzu}Q4JmA7sd#$2#Zu5
zPMVgxmCTu|<V}6FJgVgI=}O+*Mau@gTube5M2?oaj*O^O@|NLRuF$eV%Q_`<*C}}`
zX*pWUSCkx?spWPhZ_8D3lv~R!O5Q$8$<aFgqmS83;SNWx-?7G_Z*b^)?0TLnLg(<u
zEVthuQ|Zw6+x2|M`@fNG*9+cq=rs{K$G_kh^f2|HzBGu2(FmSRPGD<lI$Jz**(zDW
zmcuGqOB-l2mD3K|Mf>O=_AcPq7U<HNHbl!KN*0zVd0!7Lr)s%X$?3^j>QbM+M9ZB@
z-tX6PgqFG#?q8*)e$R~VTI$*{LzmhEx)dMK&p)8w^MH=;0|)K7UewK=OGQJW`*~LI
z>GDN|qElP6LCJ5%Yq?0vgG$bvpyg&IztvYuoeQ&qTIyVzrE~kiL0anf6}Qv!2`xWT
z@*$nthju7ATea<o{&@CsB_EElr~Bd2(A)3~x)aa3GN=y?prJIJMzL)^ML(lk(wqTG
ze!Hud`<0x#Ov&%)mOD@P&+~NId{>v%d|h_)<>=YEsYZTpnL{si=qnuhR(l$3I*(2Z
z_S*d~Q13Ib{-&;n3v_*2n55-s_;K`|3w8M{)cL<im+zunXZ|kId9Y}ky`DYN3gJfh
zd}NrGGwuD#BP$)cBbQ3LI`nkAzSxmVj}CL_Ln3s}wI6;&(S|JzOZ1q%q&&i>)OR`b
zTIZ9G>3n%?rTraCGwe?;o$Jt#*mLVg-4Jq&E`z4FsP5`M=SO3;)b(mvfs&8w`ug}B
zEp?s$aTeYZOG(s$x>9%QO<6RAa%d#!ke<+E$&-ajmg;nsKC9$U_9?kS_f|jEEn%f@
zpDVS$l}DYW{gm#Pp2|Dr&SEXA?RoOF;mqBqb-Gs{vin?9d}_UZCQHj2C7)e=s-Nd{
zJAF>)-*X%A#>Q};+tplKSgXg&pO05^o$k|qQE=)T)=$(@+jr|v$(QG~_3-@YGnM%B
zx&)usWBdy`pMR-sfDO9UZP5MTi+ZeoX$D1`^2!%c=D726CoT0GUe-PID>^l=<|(;(
zfjzG`zv9q$J5%(UwrgJ7ZTDF=;ne&o)1~uzzLHx~QA4B1%j0q?bs=q|ZPBCW7M;Fd
zX<O)5+E&`?clJYDb^5lBx3~VS%F3|CVyo`mw(5TTjh^;?^^Fzw)?DsKS+#DAW6wt0
z5zm(oRq{<emcMyG$!#l@{I$;8x3neqo3NI9mE6wuu*(t0-)3l8rR0tU&U}Bno0elw
zxuaWkMHqKZ8}Ew2TIznILdW|ZUGv}3y~I0u)P1K`$x8j^%E|T;uYA;@Z$iGFrjA$Y
zS<UZsY<B9tbf>m_-W{c-o+IsAtK@qJ>~HyfSBIYM(5E`|N_*+<NpjBN{^-?``-7;6
z{$bx7d#}B3J?cd?O0CI?Q1`TD^u8YZ-`6$2N?Yqyy6*i++k5*Lpyi&@68^kEOKssC
z&~w7S=(rx7++3gaSKY_{O_%Hky5x>jAjYS><wM;|e5l9!YCW?2U0XDNUmTHVY-!X4
z?fS<{?D{b|Z;oly<u}F1?*ej%iO5zej77-V_-4kb$y7i^G@ItDCygyyDoatAq-DOA
z+mv+m&~ky6Y8EJ>hHI%tG|{S$ma4o&bXd#f_87*{r;TAuhL(9+7HFwTT(s`3<!UWe
zA1`93YN^UVv>BwOs`tX(MN9pjIG)9~YO0MQuE5bJins=!_VH81w>pbmAmY7Rj?i+Z
zmdbh*o=#e-epz@2YpF&Rk)V1+;Uj09d^$ILbL{!+n@`cv5vlR5cHA$6?yR}Or_0T!
z+LuU7({i$wYnp#9QT4sTAJj5O%MvXsY`rSi;ef8o!LV(#5W$f)`&9&|M|^YRBh=lY
zXWIRT`a1O9XVH5)bo)0pk<`I9?-fbo9eSQaA7xKZQm#XvYMW(<r0EX*kX>&()n0P#
z>+E{!XuJQ^&365QeYU<tbf}B4(l|aH?R}5vnC8$INBHNXW0n2=9rxS%f6;NDJwN0(
zQQPzT9lF#19=qOYuU)^;K7SDxraAO34t+wz`#3!p<~!~eI`mog^mi_C=;e03OQAjd
zi}u^YOG|d>tL*y4=?;C=sd{97U0h+;yDh><*Qj68&Hnr)Jso<MUB7g)UGHw6?}^L0
z+v`(C(4lv7=zSb|rbC}@FVBoQj{C*-{LI*3*RLqD>%IHh^{WiKeswvl!A3o6zFi+U
z%&rgi*~@pxE{A@|t`B{}u3w++(AU`YVP3m_gQGrWAGYf^raJUxc0I>YKW|#)(Dyp@
zDu-Te&;Ofh?fQrfcKy~O`}3pvI&?>V-QL}y@21GF=i>GnyS{m2gq6rov@f>R7o+_K
zTm3iMuXpI{Z0!MhM13~eAGXyGBQ?gZci3*%FD$X^U54BBuZL~%H!j|5%P(U=mR(<%
zW7n71`)}jP$##9UeS9!}G25<hT4dLMwal(>U1QgOYcEe@*A~0}{tml-Xpde0$H53Y
ziCvCI))!9y@fv%6A3x!^f6T6b;&SLghd$Y%JJRz>U4*5>E+=B`??2&o=yIi-cn)ct
z_#sUY%Mt2W@o1DcDuLuWJFVQ;#+SPX$8U`<i-&bAJ`^>gR{SfzUwnV)m&tGppAjI~
zHu5mzNUpcj%X77-zh{7Fi03-b4W4Yzjh>r5BRr!#w|mBV#(2hgCVBEb(>?clzUg_$
zGvAZx8R!}0xyCctljXVAGt|@1bG>JnXR_xTo&wJ_PoZau=RVI2&)uH8JP&vt^b~n=
zJhymqJ-2#BdWL&$^NjY~<hjEmt>RwBTH_bS2IECzqw$jQhOyuHi*eZaz&K)jY{r@%
z(=snGJD45KPG)yA)1BuY>mKJG@4nML-F?4%hWlankK9kVSGrfZpLVZy|IGc8dz1TR
z_nYor?mxP#-22^!+=tyCxR1C$bl17-<0!68+y!xRUKHdUmDX++4Q>3!&ADtu8*L1)
z5pWN3UxOT!zi`eWX$3WX37^UKy{qwWM6SlK;wG)6HMEYU+Hc3CjaWCrRBN5MZzRJ#
z*qy_?)_oImNc<r(4KJ6~-yqB553>xg{sClp{4O$B+s!PG-^1J%UqvRzYis<UAj{+T
zv)sb^pCQZR59s@U(f1GP`+xmE_Pzr=i(-3!X3oscmo4)x2mwMs1f)wh0%AliB25J3
z0-~byB2^(E(xnTCNDaML>4YAsp%>}BNk=+_9{y)1OF+f)^Lp=d`9Jr`!+FVOcfa$V
znLX#-*`4_k|8AGnK9tiwyzTj5m)Bd~(OW8LuQuvW-K;-#tNzsOddm*IWtX=_ucn*)
z(Rc9RzscBxzQkB`A>M4zAn8cMXgbo#TbqS+rPb*Nq#JEan~<Kg8Er;-(-yQP`HJ?Y
zy~)>fC>=)n)2s9<89?J{Jo%R1qxZ-_y_oMHW-x;cW;V0Q5SEN3BSTpz3njx?T9%eX
zvrH@#8P2k^>|_MX%PNqOtR-tjVp(g}nyg@LSzEG_wPzj3D%O>CC2Lp@)`P5N1KB_l
z$A+*WWF4Ep_LBABfFk#yAQU7CP#j8-hfo?yQwAepBn94*kELAH7PV=9QCHNZ1w?&O
zpB5AiMML_s_)L68BSb6FioPORi`KM|*lF~nh0S-(n)I^S!=g07cI`LW=l1*dC^pNf
z<1}K|osLc)c2_YKfPi{Iy#PU#No4|8y{KM<WGbu53dvP=l^vc_IaN+bp<YriK}wZJ
z<$+L@PvwJDs-P+esa1rEfHbO*Dg<Gwh$;eURZ&$G!d0Y-gmkKyDhBCQaaA0iS0z*l
z$e>E8Qt*PRp=v-zRY%o<Osbx$2bom^)c{^pO;i)eqME5@kX5x%Eg+j}rCLFD)mpWN
z9O`rRIpkCwRY%CBI;+m`lIo_qL2lJk^@KdCx9SafRbSN?@~N-Y*N|TgPy?WV8mI<B
zK{Z$nhL_b)H54LLw2FpT)Ce^K3aL?Q6ckot)EFqD#;I}es+yoCKv6YGO@i0d6g34R
z)igB?URN{J3@D~%s+sVHnxp1GaWzlPgMX+6Y5|l`3)Mn+Q!Q4Dp`==>mcm;qR>eXo
zwNkBw(rUF@4Q13?wHC^%b!r`yQybI<cw22!o1nbfqPD<0YMa^y71R&v2dJoas+~|t
z?N+<tUA0&3h01Eb+7JI!2h~BSqK>MgP*q)27onQEqOQPu>YBO+)zuAk1KwBh>K1$u
zEE<di@0n3e%)dA3UHXuT#N5KdSVoo&N{L#cj;JRZh)+dJ5v4Myj4HFrqOz$RDwoQw
z@~Q&rW%Y_GtX@^Gsn@;yt=>`}s@kfqs;?TWrmDGWsiIUH)j@SqT~!a&OZ8Fx)Hmu|
zHAoFn!_;s!QjJz))p#{gO;%IYboHH@t>&uvDn>0*OVn~N!{K!uhgbMUwOMUd+tm)W
zOYKqn)B$xw{iH6dtLnPC>A%_S-TP+HSNjySf__Nr@`c8OK;-YREd5NfOk8u&`(`>u
z8yW}yKjG)i0};rrGFGhh)Jv~4<g*a(T|jSztsFEzEkcXaGPDxr>squC{gk$)T`)%v
zpwV<3okr)<C3F?tNO#Z!^aMRiFVP!#<O;f;Zm0X`G2C*6-p11gFg~eS29^yoav@fX
zm0}fGHTE%Uz?!o*tP|_b`mg~coYi3USW_0oI^dRmY%m+eCZQIHVX-WZZDo7d5q6qg
zV(}~i3{VgX=}`mZfV_C*ec)h23JAw7xiD)Ng%VH>D#Hg*2O2|5Xa`-P4-AA6Fac)3
zd{_pnU_ERl;SdeuU>eMYCAeiH?0^Gs0?xxVxXT$gd2$}cGx8ifKQF?I^D?{=ug*W_
z^?2iuHUuzMEki!n*eay0#;A}lG`0?DkJu9b*Fj^;kd7K#g>=#w71CK_>yR%ITj73P
zHMR`trm<B>ca2dYJv6os>4g}D`}Nk?GUO|btwQ=}j0)+iv31DTh^=wI{u*0`e50{d
z$N-H|A>V3j9ny|4{A(AqtwMUDjSA_9wg93)UB7k6AnpHWA%lH>LwtTieSX7ye$hU^
z;XbbsKCh8JuhBlQF+Q)cKCf{;ukk*wi9WAMKCj6>uPHvSsXnjiKCc-*ukU<bGkspO
zd|m^Q#b+U-G_MJo*EG#*j?ZhZ&ugB~YrfBGfzNB9&ufw2Zi{_>OMHGyeSXV)e#?D+
zu|BWweO@blUaNdwt9@Q;d|qpPUh8~b>wR7ud|n%UUYmSgvo)_6-D)c|uQ<(Xi_dGT
z&ug2{YrD_u2cOqYpVuy**KVKJ9-r4<pVxk$*8!i`LBHJ&`TP$1{Eqnij{5wL`TUOi
zyngg~o%DH~@_C*1d7bfjZPvVYXkPnttDVri&iTB~`@Amrynga|UG#Zf_IX|Ld0q8+
zUGsTe_j%p)dByv@Zuz`!`@HV>yzcqD?)$tR_`DMQc6*q}&m@WbOq$5gWQqJt@cEt9
zye?^8H#D!iUaJvr##45>gN?@g^bXX6`p^hIfzO~7w1&^2J@kZL&>OzOY}FUF<_Y)_
zPQocT4QJpioWsm?0e*sua0xEM6}XCd>N?zjn~wK9BRk#BMnPF9k2$X{G=PTiDQ3PX
zXoK0W19XH=&>6bGmoOZ2-BQee%OMuNhZV3AGv8`h18X4;)?rrMfO&8eY=$k)%UJDt
zlU4LGYVjMW#P6UEPr!W6QG=VPz=Np2Q=s}zgW5YidjYj~R+c@O6W)T-ycVy6d9nd-
z#2fRbygC0=yewW3g~hAlHSxN5L;OR$DawkPsG;kkc5Wz|i594vTcKY5TyzkfL>JLR
z^b%i*Z^XA^h=>*=#Aq>AOc0aA6fsTA5HrPWF;~nNF=CNeB9@6*u|lj7abmsLC^n0&
z;s<e4+!A*T+stBSGjo`^%-m*PGrw8Tj4%tCMa-gRq*=@?VOFx=b6Pr4P8+8!s_smv
zwzHzj&WY+e531^dsHO{{iY|)kxfrVE5~!AIph~WX>bME2;uffeTcZl@i0Zc+s@~qH
zcE3iII}p|FP*k-eP|c1(6*~dd>l9S2Gf=J0L6y1y)#+kXrLm|+SECADhw5_^s?Kew
zHg}@R+>7e+AgaoXs3xzWiu9gzuX=RnPH&;^xR1(%q4x0ZPaUkUc>m5)p#}+O&!Y~>
zjI}lz-h@)TCa=xw^7_0X|AaT;&3Fq@P(+AAqKGIeB1JJ#T$B)H#K%dhrKxD1s9Z!F
z(Oz^Eoke%iQ}h=7#Q-r_3=_k}C^1Hi7Zb%~F;z?#--%gbj+iGFh=pRYSSpr_@5O4d
zR;&{n#3r#tY!~t3wzz9J=8I-lGrO77e96pX<}(YJFPpEJh0RyZ*UZ<=f0z~RYR+d)
zE2p*d`G2`)N=^)tkz~_Pto<jtG$+kX3(>b|Svr(3{jJ2F&4UUui$<oupE&WiNc^n^
zNql=Ozo)tIiuS&x-n)ZNO&-kzA!M2!iD~TZ!PE1s{vMtheRPjK9sdTXZyFQAQ}A@S
zUpAhNSWg_`eMYt?KEqp!If$y}IWD-tB@gfrR5=#6xx*C?a+iCfM%>F6_;KDbjK9Vs
ziOt{OZxDrlD@4-3B$$FKYSz<o#?!J>n78_~go)la=fY%|jNVKK^c`jbR&UHktML<0
zzy+ehGKFQ*>qAG7)VTj-+;8Snv(;1bA|7R+XOr+VrU2fLpocT?GiCuQ1N3wYeul?K
zzen(JpN`219h1i~S_0m;Q!^3GHvaA`+{D>jkLCvrCBsNG8BRu!k$V327&4ZOBjd>g
zJ+o>u-WyHDwwz98knhM$GK<V6bI4pWkIW|vNDNs>7Lmnd30X>(k>w<od{0)8m1GrJ
zP1caLB#x{j>&XVPk!&KH$riGeY$Myr4`c_~Np_LlWDnU(_L2SM069nwk;CK&IZBR^
z<KzVSk(?x_$Z2whoF(VTd2)gLL@ts`<TANJu99oyI=Mk^l6Z29+$ML(U2>1yCl5#h
zd5E2kVtuN}DzSH2W%f^2g;hnh{vNB&-e(`M4^gFmgxb9(tHo-wI;<{g_WG#g8?r|1
z6V{kDK?UCob$tsqhV5hf*#UNt9b$)3yB}r8*l~7({m4$TQ>f(6u(Rx3;>aGD>>|4a
z7Q4)@u&eAEyUuQ~o2c|}vD@qpyUXse`|JTrU=OjpQeXh6_XXYsNC-d(RD??Ku2%aW
z!pBe(nm`NG``w^B^nh<+7^?o+FbC$L?q39pVJmEd?eGI?{hhE2cEcXn3;SR{D*uCU
z2oA#$I10z$_@CX6zsig99egL>#dq^Pd@tX}_wxh%AV0(p^CSEyKgN&q6Z}VhlAq$I
z`5AtepX2BG1^yGi$S?8B{0hIyukq{r2EWPU`7M5%-{E)pJ$|1*;0gSpa71$XhAb}s
zAxp?NWl8y#EG0|JGP0~JC*PLk<vX&1tSBqVcV%VyPgzA)mDS{Xvbua<ejq=THRMO~
zV_8$ylC|-tF8<WVpN6uL{6sdEO=MHqOg5J-<frm8*;2NWQL?pcBR`jI@u!_^FFVMN
zvXksAyT~tPSJ_Q=mpx=p*-Q48U&%hQuk0tkmi^^7a)A6+4wQrBU^zq%mBVDT94<%5
zk#dwAEyu{Qa-1A5C&=k?hWt*>l(Xb)IY-Ww^W=QFK*q?0a*<ptm&m1ZnOrVo<@a)h
zTq#${)pCtoE92xkxn6FN8|5asS#FVA<u<up{vdbAopP7lE%(U1a-ZBU56FY^kUT7p
z$fNR@JT6bjALU7TN}iTy<XL%6o|hNoPx7L?BrnS=@~XThZ_7LKuDmDj%Lg(+J`9im
zl@sM8IayATQ{^;yUEYv4WxTv)wlP09+nQgP?acOO2eYHu$?R-)F~2msn%&Iq))!Vg
ztG(61>S%ScI$K?=FRiXtcdLi>jWxjf)*5IHvIbj2tfAI0E7}@vjj%>qqpZ=^7;CIG
z&Khq`uqIlQtjX3CYpONPnr_8d3#~=gVrz-D)LLdOw_>gDtrgZvYn8RyT4SxX;;fC<
zCToke)!Jrlw|=m8SUas<)^2N$wa+?k{b-%C&RFNH3)W@ps&(DEVcoRity|V@>yCBT
zx@X<Dr5&(CY}2-E+jeYa2kjs2llCe5w0*`tYoALRA-`l_wy)S%?Q8aR`-Xkfj<;{w
zx9vOjUHhJW-+thapi_rA;BZGch9jMT6XKYT<=BqnC@1K+PBJIC^PH2yN$G?-shreK
z8Yj$2>x4V$ob=A~P6p=%C!>?e$?Ux7WO0T&Bb<@WC}*@Y#u@93bH+OpoQcjPXR<RT
z=+)F0{SoEubUW#&$9Fri(QGsst4D3eK^Z7Z_Q2avp6r9_@IE;JHQ*z1NY}_C&>WhR
zqgdNIlVdOd29T356o!&hsECJ?)4D#L(e>%9u21K5eL4>@u#jBPwc(;yF(~DQc@dgY
zj{&C=rZDN7!WAwpsYiL=GL9Rk=>wTp7G&U!__Bc6!yLd;nIp^?mdRXUUS^Tz9gDK2
zdi1xo9`{`u%oxnbHfRM9g32O4R={GYEvoqM5K$7M$4*{lC0S|q4xVd;c?Y+8>Z2sa
zq!cMnDid!_@G2yLcNjHDouoCayAW@dCy+Lz1J*RqD_ZwM?1NQosMU=ywZWR9?K-r3
zt@UX4TN}_Gv^MMQd(p16_G^0(?I!Cm+AY>mwA-wU-aaa&cdQEaj#a7ju@Cfi8|_-<
zpk1ew-jZBzc}{Ohp|_;fTf+60blw)M!Sk^_|2;MM=N0%_tiMmMz>jP2udDEXrVe|R
z_D|kh{#z?%a#=^#lMUn-Sbw~_`6gD(a=MmP#Jbc^SIKHvA-&p|SQ+a+r6!hsYE^9a
z2lepR)o>Wr!N(Qw$?EdoRt=M?9oEI6SihgFif^F$@U%yw^6+#=1ymk)eBE&mRmXd%
zI7VsBF&Y)eUF^M8u*ZJn_0C7NlQsEy-LzdhnVsBz&Q4*cv_tJwc4|9~9cHJs!|il-
zdi!}hgZ+Y?(avONwqLZf*jeptc6K|*Q>$&ar`KC$D@Un6Rdr|ly6&pv>N%C-SJii&
zwcgsGYw+f$R^h!^hxc0tt;5#QNA*~Rs#LlrU;M4AY(4mOT~=vTxJqYN|4a4xXVuw$
z@b9kASe?sKMpI&S4x`yf3R;0yCYkh;-fXl6txIy!`m{bNKpWDAq#*r-HX$$5X0$CS
zMBC9pqy&woBS{Uq04sYf_9<&gI<P3#o^)m%Sr5{S^<o3b05+HnBcmApV6C?yIT;Tr
zAO)EQp^$@2hg^_{tblw_f~?V%eV?xE`}KX^0X~jzBbP)nk&K3mco9$2iQD2fO)u_>
zyYzVjgF`bIy^Ox}1><YuTbjifWDKP_jc8*e&0~x<=F<X3j1fmm8|#hjw7Rj!*h6a@
z`;CLNj&ayHO6z0Ye?S`<4`o5xLq^C~>2mp+e4VZiWDn$^ae-WcJal~^Umzdd9Eb=+
z&@F+&fx>iaATkh1w*`s?iqY+X;(_Ayhd{|dNxCCYI#8PK43rC$qq_o?1C{CSK-EB1
zx+hRQP@V1#d=#in_XQdT8q&idcneRDn6=E>^r%_aY(S5jjm(zxlo@44(JSV+=5Tt|
zTxfnz@0wT4+YFPt^**z$53RPWo?XqZ#=6?0?Gvn<)7Obc1>(Ka%J4pQrheA-A+6_c
ziTT-<a@ew$=yiIVK48E?m}1Yd)GQs#z_J8$K*``s!Mwpj!Cb*tf_Z|ugD(g32lE9Z
zf(3#Fotw^$V76dZ=c;qjx#oD^-I$49q}S*zdY>^SnZuH^RC*LEvp0g}y?0@kvP;`#
z?6P(_`)#|t{f=G1u4q?sHaHudEzS|=m~+B8>0J0zBQq26$Fnn0|4h{A{kGiy&HHYv
z!}!Cn=GPQqBCQA)=|p<*yvQJ45E(@#ky*SbvWToAo5(J5h@2vqcuC|Ic|=~3PvjQ`
z=uWze?xuU_Ub>I&rw8akdWasTN9a*{j2@>a=#TUyJw;E`GxRJyN6*s>^d}CSLp<Dq
z+i(Z&!acYT4<G>^{wv!!;goxC*4IRBm`r~YSGZoMCl|>>iePLa^{RGdNmcS5szy&O
zHqfgwd8@c|#H%<+UA&6Z(`<MZSI0JQNE_p|+KNWe_OuuMiuR%X@p@fASJ0I-j;^Dd
z^$7Eyto?s>RNEVQ;%_94diD25y}a2@ud#eAf|X!pP$gAG1@wv8)9hvTHv5=;&3@+B
zW`A>%IoX_QPBW*QGt52aUUR>Bz&vOkGLM?a%;V+>^GCmiJgy*Kg?LmSynOyBn|oRO
z@jcZ={kGJr?1Ln~Vtv29Lt9z<RTw?1pgpUOzP0#W-)5S#%-QB#bDlZhTwuoh%-1vK
zS@WEE!Tia*XkIce|E|Z0_3X)N_9TbIYV$;`(JV@{M*cJIVm=q5uLz0v8Z8L%?p{c7
zvyDYbMe7UuO>$5%m5xqQx71y_%6p%I#^K&Mk#jymkaq;3$h|P0xhN}20HaWXaBQP8
zL|{BB5CdaU3C~`YRV4w8O?AAh`H+1`OpH=pVxe~ZgxIKATM);5&wP(4ywmPLg5LcT
zam|rt3<)<^nwLq0c^7@Ei#nhOX@V7h25F0xdp{Y3HTNJ{ge`WMEXGzlN|s>#Jx-Ql
z`~66kVH=(z%ds8LkXUTXbL4w$&kJM)*5r$1CD!H3WEIxtt7J9S=LcjBR^uSqX6LdC
zkiGWHc2RQFj>IUOK~15^Wz+^K$Th6c>4^8H03#`gH^ZyA-y8lH$G;XwFM4GVLos88
z`;qkCNreB!^Dp;H@9mXRN&WJF(frqXXOW~_Im>(Iphuw+qxgdNZXe0(y~9VQWBhKB
zxnBIpJnuP;r^IkSRAMB=Q(}0I$62GO-#Y*L8HpYhdh+_2mDJ+@y02kRWVpZQybR+R
z_E&V1_g2<lQ7VLLJ)2yAD;vY(qRAUiTgL_ek{6X@F<J`GT#bHA8_?#o4edmG;u(k1
zF?0%@O&8&L<LG9(1N}aNKAxvnXuMXk0o24PSeU1XSuU2J6=IQEuT;Rh;tyCY)_^r-
zEm_;7x1X}(-r=ZubFqSWU6o+vSY_O=4r`2iwPRgzpMh)yo4{tU`D_VW!Q$9vwu9|s
zN7zYro?T(_>^?9EfWkYXFvtK|AQ#O+09gd-OB$=wLK;7$g*DcoMKpdyU)A_AEvm65
zeNAI68mX~1eO+T6T1;bI`i91Ow1mcnw4}zyw5-Nv^c{`SB9(_cMx@rbP^9rt-3wSA
zisu5hhsK0}qj7maX^ag7H9iQq8WRG^G(HR@_Ym)xp40exkm}EAM6(mGALP`nnG0=o
znp@wg<Uw15=0*Dv&4>15njdXVS^#Y=S`ck*>b>Johen{SOJ6}-j~4gd@uUAh`w4v$
zZDaZt+GeyA+UB%0+7`47+D~aYw9)i!v?FMFw8KRT!jNxDv<rnd7J4th2t%fLl^{=!
zc6mUcjSU!R9|R=Ygg^l8!$1gO$PN1@GQ&iRyrv<)Xyi0q<A-#H#v1fHjUUmO8b7A9
zG}fZCHP)tcG}feZHP)f?G}fi_HP#EH^ANpC?;-m2yvF5$3>sqtFKB!a$fz+PkV)gi
zKxPlo#}_rePDkm8kJhmsqhmc*$9kNO^>`iS2|CIXb=)WESWnimo}yzt)r(*tg^p25
z9ivbkqf|OZsdbFf=op3R7^T%Q3io2<zrC1Vf7hfpV(z_x>e7_xOMf~L^HSos4^#ae
zV;*{M`Dde{x__k7?V4J*Um9&2=vE)B|3AdDNqNG{qAYAp*j7D{+RK67JFnqk2XJd#
z*g>=l!VaNb8g>Nj^033+c05BU=}G@dtJ3!{dsLwf%xYNeswX}@Vy##Q){_l_XqXCf
z)qV9qC8&p(9S53&%)#ambErAYj5dd3rd(t$HkX)7&1L3tGuHebGb&S{xDv`xQUx%J
zUNx_o*UcMdym`yKZS}NzS-q{VtUgv>tDp6?)!+KgnrY3lW?OTtxz;>uzO}$QU>&lK
zSjVgr)=BHMb=Ep>{bXITu2|Qs1nZ$qY-%$bY;FtN_-i9{DnyyeQbFaaWa_rMqwcEI
zDviQ6Bw6*i5Yb~n0`EY|V)bam8ly&N$y%Z=XwTXcN57S?^jrBsJ(A<<=Q7D)4$L9R
zjakNQ@|>~ISV&SDw~SjP)Er?>AgRn1=6aIBJYt?A+08p<0?B6)tVOR_-&n&)VJpUp
zCB?1%s36K}1yN2bh_|(ZD6bX7J6b_h&<diWRuGl6f_PUeh{{?){8KB4Dq2BQwIynY
zYIaW43pKS~Xoq?s73rw;LN{c)gjD}Ct@=bO-uyqb<G-V|9<`IHV@h;PL%iozB)N`b
zS{=vCn)yqbd4y(OQ7fg&nt9d4F(Y9LN6%_1L%eaN;w1f(*T64(@^AOb#2$oaN{{`e
z3@e-Xlmpv2>0aJEX`cG!i0k9gR+Z8lef52^gi7-1(R?S4eXl+Cxq<#Zwg^7qcWM&y
z_&R=ct$I)7uqRifmFT;)vezTAKi<N<Cy;mkVAfQfVBKJYV8dXOVAEi;q#0E0g6)GH
zf}Mk1f?o!^2D=5j2YUp21$zg-`onouoswo&^$GS3)(iIh!x>iZ{J{(>7m}fhNCRmh
z9MUDtw#o`QAP?k+2zUhwLlJltio$D93`+dr9IRPMv#>VWo9tco?mw7~rRScpnRwnW
z?I_RFr1Q7-e8x|}^Cx<4pLHxd!Sg@qOb<OKcrH8>n8+w-?}0Sv%{qHAypZJ65|0)7
zbl5%tneAiVTr%&T2-~hUAsE5><V9?w#v}{2&=({J#<L@d!1n1(UcpxBO$y=Oc}dDY
z`<6(uT;A-y#5atbvQAm8`n@@PUT>tX*B5!R9E7?1pSm5Kg7}w5>i*IFhqqctDz~pY
zz#Za_a!0#k+_COBcf32vo#B4x&U9zFv)wuFTz8&3-(Bb~bJw`*^;wVmXNu4qQY4+r
ze(JgKIDOQDpB<Y4j}3d`Sn5vwQ+o~m#a@iG)%T>{43bd2-yGcLiVzV(h`YgyfV;`v
zijmpw?j(l0+ucJ<cb|Izy*=a}B0=|vdxE&`N%tg4>7I7al2G@&dx4~JFS-{=TKBSh
zm4v(T?nCl?GDzl-?8$-{&w^fCBijY|84KNoB)hxRT}E=av2HBM<*s()$V={ej8;DP
zrh8Ls3+fKi)@ubI?eNFrGtGZz?^*HMTe<RC@tWa&u}R)@(gA<w5^vp3Zv;5(8S~#;
z728|shWb~7=Xo;UbI)h0eHPm15bd+2eOB7%p!PY1_Bo~YIkomVO#7VHz2V*<>61LS
zwdW~Ffn=fRf8i(k!2*57bt3cex0ye?;{H><{M8=3K*z9*&VP(lc*66)dcMT`3cA93
zE7Fw2|5bY8y7*Vmi+V+0XMp!7dG#HLcivy_xil%yW7M@bVR{X$QuzPs<YQ9#Z}I1s
zpYqtZ%;;VE-|+3}UU}~smH(Tf^w^*OhN~myZ|-9;PxOV%PxOV~ig(PfqVoGaDCReM
z(6e}b$NcSA;^XKuJ;(9!HTC!O-e0!X-+kr&cI$R0-uE;7XZ6x!zgB8{K`V-$qzmy@
z^=<bbRuqrDS^6uV65nt9@AAo0US4}X8_MfR-yi8NPd7dry6czTFGBBQpCRvm*?R<D
z@tsij&L=DUtRDUhvfzF%diGnwTgm0wZ3%D8ORpW|dh5169%<N(mb>wUI|b3>dH9>H
zpCX274FZYd33_Yd5w5!k87^}dYrDj=zk7_gW@HLH#v94-j!MKOiTI=^7{vml0clEF
zVvX}^oqkW9jPlpgi6P4pSI;54$N_SUoF+e!YveXbpq!f2rJ>YYyC56QO$*W@v=}W(
z%h5`-8m&R=&_=X5jiT*n7uu8dqXXT(=yhMWAKHHI*J!_X`=jmeeuMTKcL3S}?zd>a
zbqAsyi1B3ZAa^j@!R`>WL)@Wghq}Yi4s)Z?M!Un&4tGbO9pR2dI}+o}yb%?&qunuR
z$GBtBj&;YO9p{cmJKmjuc7i(*?L>DH+DYzYw3FQ_Xs5VS(N1-zp`GSVM?2k}fp&)b
z9a@YrS})Gb8}C6o+r|Fqjr*XTi!I5#@gKDFvF|W<0rnk+J!q-EKV7C<FBWaAyBh6k
zcMaM#?pm~Ku}?8K4*L|to^=!LlPh8*R<XHWizU8I@PF!?kNe$G@A)xa8S4lW-8}1H
zC8aj`5?g369YrV6nKXvR(m1-6?x9EMX?lsq(*$NP#X?znmWAbJ5iF9GWaU|vzp#Qt
z7RU_|5D6urJXC=iP!F0y6m)>@&<_T~D3}B@AqHY04z|J`I0C2P62wCSH@M=VJU!3C
zbMpuu$xHI`yb7<u>+z;Mig)1Mc|SgwkK&W~Odi8yc^u!$_wXb9G{3~-d4e#65}_i!
z$Rcu!2oWhtit?h0s3Gc!rXoso5Zy&TF<4;VAu0XL;>DNh_~y{@&8g%2l8$d~jPC}L
zU+0~II`0(Hd8eq(JCQo?yrJ_>ah-SG(s`$p&O2pw-g#T+o$}a14@pIxcRtX0r#=Cm
z8hK_$%*eCx+=#h&eqIPMf*0k*5sM-Fa)@Pk1zrWQvbRbGVhvu0H$rTHF=>hTDR09&
zAhzROcu&Ocybm9M*dHS`0x_D8;gb+2@M(ND;!HlDV}{_1Fn((gSMl|HE8=FpgYQG!
z!w>Njh{rIhKOvsyS9m<)4SrV;#00^GNk9ZJ)+rE^i_{`LVz|gCvLR*>xkP@%yx0Oo
z5sQdoq9md>Bf0`&c~MzZN34eJQU|e?H$NJ&vG`Q9L5vdZL>I(P*jjxMy;;(O5eJHB
zF$Qszm>{MhP7yQ3e8jn8k%&cHCRT~{h;d@G*nzlR>=B0$4~S#pG~!8dUR*)EByNbi
zh_^+8!3h}52p9^{Hj*27S7?M9;YLQp3`Q0s7h(=0uMvS*&?sUQLyR;^7-bMk8Rd=2
zh?R_LMh(Odj9Nwm#Ck?!<5R@uMwHPGv8~a`=#JRc=xy{z>}L!#q7jE0ql^iN<BTcB
zOvD++Tmv(?5o0VfRw1r1;*8CR8;$M89>iV70pl3r5#ywB9`USk$+&@d&A4qOAl{cu
z1_($)+A=w!D??>CVwlVzvmj=cIb>eM+_Io7f>=mK$`XjhWhq%6v7D?Vt07jAAIMsW
zAIo~OF=8XxTt*?blx<}v#168n?2Xt{_LKjQy)S|Dse1o^?q|l#XU5?3x#yg_8DnM)
z#+qd+`AW!^B&noQp+XdiB&me2N<zq<EnA_aO_GG9ELpP4_La16-?C)+Kj;0q^D%>d
z4eC4mzu(uqoO`@K_n!Ma&)J^mInOzFIA4dxkBT49*KzTa<7e=7TKuf|xqO`y|5p40
zzRr(d6u*qGOXEL@XIm?Nb^K@XTlu;<en<RXzV3<NAOAgHztuYj`TAS@kzjygf)tF?
zu?)e)U?^zuRR%r1mL5zAW(3RfH8WT-n8nvB!D_*pe610z6J#qfSU=b}*o?1DgUy32
z`FcyRRj@5z?+SJZ-p|)g!EV8xeC-i@EZC2)eS%K~2k~`aaA<H8Uq=MT1t;@$VsKh;
z7GGZu&Iz&|9eg7=Ke&jm3xi98pYU~gaCPuAzOD;y4({OV_TZl2e!lJtejEImuRjKV
z3m)O?;RH&EqnL!)gv5jpUkfM51dp#yLP`Sn|Ah2}%mnWL3FQ;2Bvj)uiAQXm7Ro|e
zRnMn9hCizjq*e9Y%E%xfgMbVMG8o8UAVYu*0Wt*0b3mR0@*I$%K!ySt3S=0NVL*lf
z84hGPkl{d{2l70S=Yfm>G6Kj5AR~c{1TqrHC?KPNi~=$m$Y>y=fs6q%2FMs7V}XnX
zG8V`<Amf0H1M&ip7l6C~WIT}ZK*j@^0AvD?2|y+SnFwSekV!x$0ht73GLXqYCIfj9
z$csQ;1TqE46d+T8Oa(F($W$QHfJ_524ajsL(}7F}G6TpAATxlx1mq<kF9CTO$jd-p
z1~L=KOdvCX%mOkC$SfeUfy@Rn8^|j_UIFq7kXM1c3glHFbAZeNG6%?OKwbm#8j!g_
z<^q`u<aHpg19=_D8$jLw@&=GMfxHRiO(1Urc^k;vK;8xNE|7PDEC8|q$O0e>fh+{F
z5XcfBOMol^vJ}WtAWMOK2;@T`9|BnhWEqfUK$Zhp4rDoykAZv)<YOQ!fUE$r0?0}r
zD}k&8vI@v5Agh3^2C^E+Y9MQXtO2qH$XXz4fvg3x4#+wn>wv5WvL48KARB;e0I~td
zMj#u3Yy`3y$Yvm$fouV?1;`d4TY+o^vK7d7Alrd#2eJdm4j?;#>;$qC$W9=;fb0UY
z3&?IDyMgQmvIoc>AbWu91+o{&ULgB`>;tk7$d^FA1o9=2{Xq5u*$?DvAYTLd8pt<5
zz5((Lkneze2jn{-KLGgw$PYk%1o9)0AA$S?<R>6M0r?fkuRwkU@*9xffcysJ0FVPf
z4gfg_<RFlPKn?*p1mqBq!$1xLISk}?Aio3o9mo+NM}Qmwaumo>AV+~519A+=F(Ai*
z90#J)s^J)o=(JE4(yHNDAhAGVffN8z07wBKaX{jL!~uy15)ULENDxR6NDv6-xG?58
zq*cR-KoWr@0x1ZjAdrGUl7J)uNdi&`NFgAFfD{2z1V|AeAs`_jAs}HOVIW~3CJ+;d
z2}A%9Km-s8L;{gO6c7bO0kMEsKrA3O5F3aM!~x;}ae%l$Tp%tG4~PfE15y-7Q6NQu
zBm+qXk_@C6kYYfJ0Z9Rp0we`UaUjKk6bF(DBo#<1kTf7^K+=Gu14##x4x|K-5<p4-
z$pDf8Bm+oEASHp61X2n}DIleQlm=27NNFIMKr(@30x1Ke43IKF$^t11M5p?!<y0y}
zl_-m<Q4Q?zZ%B=)DcwLVs3o=1Q6g;Fzs>fZwwSf&M0=L?`Cip15__({Nup2K)O&X7
zQ1%%Bdfg$icGdWtyaR7>`j+n_faT96Rw0YpP+Pi}9>6IAeW*VTph57<jH8J(g=Ww!
znoDodeE%zeR_J54MOTJag;ujQx;C_4Tcd1?ZedGwXJ}Vw4_l#MhW2awGo*J^bzr`A
z=>fbUfVTv2UO{AKP_KAAMFzg2GLU~6M8nCzKOIjpiuCuM^>>~F@DmyMr@s`$T0Xo+
z^Z1u}v`~*1p?CEd!D#{Q_0VGh=i`wNBA<YKBJu^1PeQ&3(h$-xQWL2{YT-^Bc@Jq(
zq{&E&Ax%MA9CxN7pN2FYX$hok|AZFtwKQKp;A<w(GWr?Hj!4zMmq6$n{RFoVGlJ>1
z99pE?Z|DQvW;tJ4=W}^m^tYd4^$3JDthnRHDSPcrpAFS7#|rH0|KSzbH^I{umSBXI
z$*9fV{u<YRl9~X;hMr{|l|l<xe=8nZ%DPr6JXa-7OX(DDb9&XOkM9#ZpJ|=Oy)~BW
zS^s(GJ+;+HN6l5q(FS68T+8+{CSrsv7=1FbN}BWe=GaN*@aUQqE#Z$TIMdQw@VFhz
zQuL@9#^=Afd>v&`0K0gSd3LDwH@qPdnV0UDoVy12f8m&DJ?L}lEX+86M#CSMQk`o-
z*M@^x>+H*^!P1V%-NW2>_9dk=PXU&0*^?xYQ&Rf=LT7k?l7D|KpX2J7oAXNNAHDsr
zDJ`3}I#DUsfYxxX)csZEWz$!eTU~bRuZgITbEWXFD>0kKRE(k7^JVV%kevOjDN986
zpA)V1?Bh;ymV4^^U;dlke`>k9A7rA`bbmjfjyck+clyp*NFx!yU*^(4Hb&Naw5<}F
zrR@{eK6Po0NJpmYvme{~qqTn9A4eod#=19r9uh#Y{vKh1ANhPD?l}_ktoQvDfkvwJ
z(G7YA3w<4q3kSnVJV%AYX{?3CV7Ae{OV2n>@<7G^{l0kCd3n|hn_&@_tOG{)?Bny<
z>Tlrl&p6brH_qqt7N5_C=fLO59G)mY-}&^TrT(h=Tyx&mXVTwXpGoHjpP>zZX?<=u
zZ|gJsH`izQ{NOXR^Y7);FF)V;3>W>I>$B+j!DndgU)n#{p11w8$lqL_MG!G+@}K^u
zd|e{wS7*M@tMDH@@w!h@oc17vGr}dqrL?z+vd^NZ@9T4K{Vi{ec(AnGbhOcj6wwWX
zI)`|p5B(S;hpmZqG=~3Hf||F_gGiXO+imv}TE<GhRqY7v<Te%Wx2dB4-*G!458PT5
z1FzYr^N82%{fqN2So%j?;Pgl2KktI2f5Zh&e?<Q8T(I<yxWMVh$y|{r>I;(o*%vtd
zujYY%z1|k%eC&MUtl;}%!t2BP!e0_jjc`^vtF%@VUKid7-+H1(%v7&fc(>ZBcBpif
zs`h9NNZ%3O6aFdui`*r@Wi(ys^~$(-eKx5P{yzL0q?AkrS<9@3vpO45Q)*6asRK@Q
zXPwsUX+A+@_BH!a&>U<IhF+!5fDd4QW&k_Tw2s^s9yR?H8NI$5@2}wYqX9GoYo`OL
z09I4S&_tTXcTL2)=`@pdF|)V1oYTJMBIG|o{sZJ!aoW#ZjQmHymmvQ!@=K9liF@?3
zkKn0Zxc^by`55kb-29N!!FX3sa|NFL2=^=p@-goG1SRNSpFo+9<L$lhY;Vf7CTf1*
zzq=RG$0PL>bDjPoh_0`gMltus+>f1=73sv6cJ%6S<m)gL-WJ}=HS`_VfpmwtW3iJV
z5dPYG0vhrqREf05HE+)u;jd9wP0jX1?knzF<a()IDy2iiuZDFM-5bumwA}o>^Cu<6
zgqMXs4u1lUs^{V;uTN?^E;X-ZI;Og_nU3OKai6Oi{Fjrfb1gBJ+rR$Hf|mT(l$l#v
z^Z&H=KMF60tSTYSLgwkY)4yA{(GF%uzqDpKN_+QDN-L1-Hy%6u-)yg#R}3do1;Q)L
zPB}){RQ&0(7vw=E*;Yup|ChJt^r}=bGtEplOPCpENwbt$+RQY|m}Sj!W_h!MS<$@6
ztYlU;tC&^IEO(syf;--w;7)WWxs%-&-6^_Ma75rX5gf@#sf=$Ae;(cu-WlE%-p%9X
zzruU@uJ6M?gnwlIe-8f={&)D-@NfLgaQAt4ggeq5<&Jj8a0vmHa+;aNw2tF<$jB(5
zGF2&6T63f<RZi)1;+E1*bF;a{+-hz!x0|1vJItNtE_1g?6X~La$Pgt(DN$NviZY_C
zC@0E`3ZkO8NK_J)MHNw1WQmK#z2ZL6Npu$Xi!R~;(N%O44~p*MA<;uTEP9GZL@)8E
zcvcJ&gT)Z>oER#GiQ(dTF+z+Kqr_-2MvN7&h*!lN@tT+`UKekOH^p1xZ81;0Bj$^D
z#RBo3SSa2XyTu;yFR@pAA@+$c#eVUX_*#4;j)~)Jup2TUV`NB%r749hFDuB3@*-JD
zR+d#{RoP5lFK>`H%I5MW*+SkdZ;`jkj`Ci4pX?+%%UN=^d_}%0=g8OOT=}|uL%u2B
zl5fj-@*O!}zAG2V_vAwPzFZ==$gOgl+%7+tJLFFJt^7`YFMm)4Rgx;C3acV2q{7Nn
zg6Fa{p3O?AGODbq!2imqD^x92Th&ols=BJ4s;?TThUzNSNL{TOt7}vfb*<{F`l)}a
z{_08flzLhXP|v7=>RB~N4OT<cb84s>rk+=$)MzzPP4X&w7kQPuD&8etb+4vZhikUD
zx!T;sGvOYS+mE<JG@#<*F)@%Ti*aH$)e?)uC)7-QD}JKeWUP#*JEfFGsh!M{ms4li
zQnsRp<^8fRJth~)MKn|{m7mZso|pecW8{zWAdOd2*)&~csFF03+fXLWM(cS+Ra7-;
zj%un}(Fba{8cyrf2sM({t1)UUZSYEZrD>B_*{e)jy{cYS+U8yAT}s=%e|Z0(&%G<W
zD`*F|!0I$cB#A<zuqYxzA}mZHgcM3x!WNEjg(r%NWKm3{h~gqu+#+rjEyZo(c5#Pj
zC0dI%;!bgwxLdRp?L>QVkLVyeij88E*ete)tzw(lE<P7K#7?nG92AGdVez{-B96)=
zSx6R^MP!C7DND)HGE<h3Wo0?pP+lb)$*W~!d5vr$ua!;Zb+WB&C)>+=WCuA)j+SHO
zSUFC<AjiuIa-y6hC(9S*6ggE+lhfr4`I3BD&XkMgI=NncCO629a+BOF_sg&3*YX<`
zP%$c26;N?1UIkTxN>s_Jm`YK_)dQ-l>ZTr4-PJ>?hk97`RF9}$>QVKWdR+BZPpCd>
zyqe&Z^U8Y_yo<fdyvx1XT4O|w6KY(cmP@0StDu&vp_Xf)mg}OHo1m7jM=iHQEw@K4
zcSbFDMJ@M2ZT3bDK8G3{hPoSpx*LhQ8-=<Xt@X7Sta7U4NIjYd%!B43^RW55dBi+w
z9y5;%5{3wf7!fN9h&T~1f+9gAih`n{xJon<SBu8t8qq{tE1HVyL^E-{xIx?~nv0u6
z3vshpAy$f2Vzu~GtPyL)I<a1SCN_wl#V_LD;#cvTI3R;EK_<$AGFcXrDYCdsm1#0v
zmXI~&6|$DBE$hfDWnEcM)|U-rYuQHLDesbZ%YO2ovcG&%J|&-)1LQMupnO&il7r<C
z`J5aohsojcc{xIklpn|ya;01)SIbZ38o5^Pm0!qx@=JM09+tn$Bl4&`CXXvphH{jv
zzEDL~Yt=^GsqRvDtG240YOn559aKkkuewilQk~WPs*4(@Uhp!#GG19P%d6(q@M@hG
z^_b(7N9K7Q&w-IM9!p_1)L#?GQan4Go7DnNx2X3x-Rj)U8h@O6ANV5R9{_Kwaev)?
zAmSE7$P2Tx*_Fqs2hAQ-fOXqPD1r6d$EYCdseP%C+20&MVRNAQELqU!9dm>^hFo);
zIi6C?iRL6qGpCqSsf0P*oIxecIp%9r+I+)&lggNHoAaog`7Z0o6};Bo-Bi<S=XIhh
zb?Y>@Mfr-*<V5wJ_fGSBWJh!4bg_ln8sYhIH=YY{YgkLfeS0&-L5E7up+mioId`+U
zl{wsQ?#A!2x>U7EZN~qGQY3ma60NW(-y{++*MjGq)afXO;jo3W&(t`d=+luCv3`pz
zpX-+Z&NvO=oYMeK@(JjZV%!p3$~KoVwZScod?xZGkuQaO8RX0AJY|2$;C{b0xg}E(
zo>#f%c`kjQB+u)q)SPGbbh?RW!m`wYXZLIA4xabMQXig~C({5mRn4Ji)!S+@jaF;8
z)TvgIC26L8#EGFd+!AgUEpS`7gJ?BIP3gDC#=cIi-@BMoeNLmc*lvnxf$uo>)L)he
zf5<lTdbXN3hqq{pJN%Vd*ev3F=q!U>v=t>fr|eE%;{VFpbF?l8bAE*R5~Xr|tfDNI
zekaz$BTstKw!aiL(bGiv=IW?~JYPbm{;pR~hM<jS-;sZPezhLa#N(nj*I!@Jj{>5<
z7(lV&1u=mV#1t`|lEh15CWXXo){z8jps$f+&GQ|yS?hd{in7l6KBcgRQ;~|RN~$uY
zsw`E5(pj6kg34)qj>@w(cMVl!4W|lS3d_&pzoF<w|D6)Z-GV;M)j~F((t=L?J#uFI
zD2$aS?uoSD{F0*{eV&G1qqQ2X(-^GHXk8|O^%$+UYOPi4tQKplT31aGsX26nh=y=N
z_lszL*?K~I))2IIpml?69q?h+{<P+&^*+`YwC-osw(408tcKRrR%7cL>ssqNtC@AZ
z)!e$-y2WZ~-Dcfx-C?z{+FI?cd#rn{`>amZ{ni6kSF4-#kk!+A#Cp_v%zE7FZS}RD
zw4SyGSkGF6tijfE)-Y?h^}IF88f%TS##<AtiPj`vKZ$6YHCWfI<<<7;dG);pUPJFH
zuaS4P*VwxTehEGHreNQ}@c-4<d0$_VT_Sp~#8dc^Q2x#DkHTxI{hkx~8iXFNZL)rB
zV@33^0PBrIea$idD2+9jIuASVIPd-el?G1P(&xJL&sTZ=u^c0NhO%|kW%)#7fQm(Q
zDOrFm8p%`^B%A3hLY@puLB(WuIg?W5T)BjrGv%A9J?l?vsk`0Y{+)U_9i7fblGDZM
zW`v#Y&O@x|JnZx|Y^Rs=xZyf|oc=~J=PBoDBi(t%dB(_ahB_mRlFle+j8WDZ=e%H4
za3(sFjEkHXohe3TXSy@PsOrpgW*HYduQ;z7mpXHu#l~e`XRoW#$a~Q1rN7<~)uW!u
zXUPf8J(1>~3TW;rL32+9HTP6Vb5CK-Jz1K2ay0kkYVIjTb5CiSdn%#1r;?g`Dy_Mv
zGMalTr@801GWYye=APfG+f7S<tf=L;9%Vjk_A(zg`<eeVpD_oSW6cTXWb;LHn)#AB
z*L>Z4%Y4V2Z>}^~d2RXbB-Y{And{9B=0<Z<)Q)B=TKjm#IMytPHH&L0!!5^JaeZhI
zP4V7ZIoj(-XZYR#rNN3Oaj$rkwV!cpOJ|7PY)fA+j>#Ch3$}CzSzcD92UI~Ns3%j=
ziu$U)ti`{j{cH58`j^^EYt`3QL0a#Sb0_`kJm@@V-0bvldKkAjk2sGQw>rI@CybWP
zlg^XI?alyafN_U2(iv&Aa>hDijn>Y1XM)kjne0q9?sBF&Q;oZwmz<Z4w$5y4w$a|1
z<Gg0v<1BHO8XdhVUKQg$uclYi=;YP$t~5G(-Mnr_mmKY{)>%n{?`EodFtto6(>Z|Y
z8>{JJs-|jcm=>l(Q{i=k+#C8fNS(8MpJ7gh9lc9_n}hnu4y)x+O;6j%7zxn7rGIDh
zsLrT&8KlA^z0LeQ;y328Y@(bdXUR9@e0bJ2!56zj^@F$cnG?QI^}br9K2VEc3w`02
zT@!XmrD*9%IlPUE=lNKk$F<i@pC(xVzUa5PWfY2*5!rQWVr{VnN(`F^w0BDov;|MK
zR_)Y1Is81V1855_+R87d4Az;O;QTT}tPmSeN^CaO`W;39c6Wek7!kYelRUo1pw_4L
zo~A@Sr6>HPzK7KJern%m#NXN2_i>JrFGPKs(|j-HCb=Inip$}#d>~t5Iee5_=lRUq
zU~RNES(~jb)>dnqwcYyM+Gl-bePexR{b2oQ{bc=Y{bC)k4qAt;Bi2#tn04GHJI0Rv
z18JQkBdp};78;4F)T__2Y}pJDL&az=A)ZT^$vuBI+b$v4E@>z&9i>%4f3Cx$%|(bQ
zjMbiMc*jn)TUY*1dp!@e*Hf+Q|JBp^SWl4?o3m%|RnVf>n4g(j%^liL$79+7t}h<f
zcq}AA-17s1ZAno;1Sw7=iX=+ZqZk$9QA|-0VT)qipNorBvN1-uEW^Wext1Z-WckHV
zZ7n~l1AU?%kCLsa9n0}<)*;)ecGQu_%m?URmST76&ZAZj((5aIc;+9cCQx6il{JZ;
z)ZEd>nmbwnU1XK!k3MA%uc5X6OcFwD$jivr&mNmkTHVlV8&8NnJTCo{N2X`QKru<Y
zC@+zh%FE<GWDR*a)+Mg=*Cg(iPs*p|Gja%496pu%n77EPf*$Q7ZK2)iR}s{9^#$rA
z%hMV{Ok}h^Y0T7=>OE)U&qJC6RDiXvVLawPub!u{rkYI9Em;$)gY|oZCg*5NtItCo
zVo#m7(0=Or(oc_SHlJ$U2YM+%|I}y!>k96{+<U!xr`*5hl>1p?RxPU*kyXd4ONLe7
zYDBSC6YCC2(EX6IW6M&bW#}CQ1u$n9S7}P`jt=k}?;zrK-GI{k`?D|umd6w8I8D?e
zsJYl&Vt%A84Yq&hI}4$~jd66mRHeu|UqtVahj<iggY_<G1zi3O+@~J2p0Gw(FIrQq
zsn$Gev9-+l$kz|Pis%4#0o$`n+5fN`*e#u)6LMT9)hXjtcB(tIeYzGfT_Ga~%Q`u{
zHLO=wSTocsHs<FPWA0=<GESt4iz$J%osN{k`r=rsBsPj~=n8R=_5B-J*Adj3b)9l_
z4{JM(sf%nPn^1SzR5quFWDD7X9@7y4^f>E49q0+xf!?S7+?O`cE3EtMq`7jx{DIzu
z_kW2hqbkr+)-o5<$IxF_sU2!Jed?BW%hGzUqF0G@56t-EHX3bbf6~g(!fKtSH!qCV
z?fU;(sa)W#gZquv($z`v4Lrl~Y!-<Pc)*|Yd;A}f0JZ<m*74bYtyE(CIj^DbIZWV^
zQ`s(9A$E}xKZ~POjz_FSx|GZ7L$&mibR9oifv#t*=5lJzdQEM7zb(MlAdl_ZMvs11
zHY+OO4SGC|cpKnVFs&pWSv@D#$)rwRT^?VD{b?B+^Hhd`d4+P!=NaHEM)s3z@mT3r
zY09*!TGgmxo@Q0(0#O<^@iW258aHY(k!x}%RY4urLcKLqYq{PU+r8|;bPejQ^&h<b
z1cePFvX|ZENdKO6tAbU9GVS*EBUI6?=hkCutgYLYu5^35y{WFd*j-HZ+)eH#eET9V
zx`C#@m#-V>mEf?yUfWyrCdryWU#{=|;wiFNBN#xg7%wJ}C#H&Nl#G?H6s&xuiTBuI
zOozo-LcPoUW>|%-!c^W0Ss|+6-0HMsdP^|Zl`ykcI|sfZwx*5&Sek?G{P8O$L|3;5
zvb4s5d#yn?fDG=z%5@j#7UsSuR<0if_k+)g`-lyvV+@x4SMs0TJL;f!1i8O)50Z1a
z*GcrQbhm-qfG%;{yY1;xw~yP0s<}(urF5CQ#oa>H^Vl!y=g^tAoYi}n!jod3az(UR
zm8~k)<yKAm9=n5muieRh!0u{yw;!^5*bm!1?MLiK?Z@oib|1UH{iHp>e#RbXKWh)N
z2ix!1^X&!pLVK~j#9n59WG}Zrwm-2~*sJW-_8NPgz0uxeZ?(7C+wITo9rn%>{lyrP
zgP;6qFXhYwdLEI<JTI1&HRW|wUAE@=uL;>FAZf8*0nia3Xb5jw(vMS)1uY{a|HI
zQ~T7H^s-gdN~2j;8LKS4u4PDXT9@1H=xr@WV-HL6USlsyvy<_KmZ-6hW%`J*UrW>Y
zp5@uw_>pDW$M{Lh)%ckuJJ|TQmZ@==rMkd4!jfHR9M#e_j<I}K1V~FZ5XZ7z69}?=
z*98)^j01@*<(+{f*1N9?m`)q#&cF?<TU7`&XRGGoKufQhcUj<eZRH1AX*)R3hUcPI
zfxFJCE#>I-#?b%O;ssla`mCKyIuWhEHJ2BatwYyzh1OOuS5kC_9v;14M>?)C*KnPG
zW`4#R=~k05bBDQuV%T<n0^Z!dtPkngI!+7`LnvMh6+<Z~MvKv`$7%m=BK*4^X6tgW
zy30d5s-fOf?@?p*f%<^1QD0k0)C9A57tG=hV3n!sY5cxTa_A6S{aIlXW`*ATu708)
z6=EIYX)4UK!U7&^7pjFMSwAa43Uh<a+?FEm4E)bor}aPU(=4mxkZd7;4MfM}BO;%5
zuytyK6X(RAB==Tqao4hHTXo<8Y|7U6jn++83-|zUg$J;e)!J%f-3jks7q-m1TRp6Y
z;s5Ie@81(vAFHp`51zlFY_*THMq6Xx`+Grq{@7BFv*YccEo^05Y_%7)i`gl5aXZyc
zvoq|HY{i$hGwm{VmVJqRDO>b4?3(r!b}hTMUB|9x*JlgAp?#Iz$iC6O$!=k{v~RQT
zuv^)!?KbwEc3bW_kr5(`4)X|+nP(Za&Jk;TTqMXt@^|=D+o-lYcNgN?FT!;nw#;+o
zA3ls})^uxzHPd?2nrF?o-nSNMpT;?Jey*)11=hrg)@yL<U621KaF5b!BSZA+2+O0e
z6*}qpNbgMbpWYVr6s4%*&hpdPmiq2yxOY3hDbXKC^+;J3V`L4Ck+*YeoJ4JSOv<DW
z^=L%<^aw=X!k_v*{HZ^}F47h!Ijx=6QJX}c&=sP7xvaL0+G>NnmI`~V4D7Y)c&-Ml
zw##9))q>Sl`^1xYM&X$hJaZA(^CYT_XPV)e8}UqY?`oz=+k3%?t%h}B6M9xrXjtVT
zg^IA@D(SUaE=6lwRig0~O(;8l^K+kqi+u{pf`Y1`pe`t=&lFUmcA(%sP|yh!bUr8A
zV_@GB>{|=ciR|*yROzqq4FYvL{F*C>nltzvtyLF(hh9m%h-<DlRYuKq<(ex?!@1^a
z&`7SiS~QAlt`UtsCmI9rI}mJs<=1%=Xv74%V1vRRkqArFg(X^>TV)Bl7Jh`Atk3LN
zYRUbo9X;z^@7+YNc(;44aGu-Q(sd!Xz1+3C^DpR^XU{?WpFF8+s~KwRCV%uQMS86$
zGXCu1G=}xR#bzX~*pFz!9uU2sNALPLC=U5gX6ATucdjR6^pnmw&b7?mjS^iSkL)?Y
zx_C5FO79%eE8&qHBa!v+$WD>Snz$cH#d_g>c)A^KjVXWP@1Ay&$9q#QpLYYE2imjF
zHN>7`&$CxXecz3oW?F}Hmis*Fm4IZQ$32kAV~&ndFiic`vVc5f&5MrW*}FpjrGM97
zkD@rUula&G-u%d1ZbrVo>gBKs_eNywJcH{;&O*K;j^B0(zqJlk#QECUGw~OA=c7m;
zLplOajdpM%qd2HjxdQ2a(qD+nT}t*B;?As`?30-Ts=0a^v8JW4S6HuY=(QD(%CpWy
zDCcpcYbkp#hasLlsVqb3FUQ8I>$v8+s(xHMzkpKx9ojlfXIYFyv6R8Ir@(i0g4VMw
zU6;{;vb}8kI4zskc$z#%?zHu~o$}`FFVLl+f5n(<xoxi?eQIht%PfZLr5f`b!%}Qa
zH>f54UW(Lcu0k}I?)Bl^I{j-jS0S29S4;J(BR?6rR`9R7-A48kd1$ARw}<$D8GJ3p
z@4v+B8!fkQwA{YYa+mq#F7wM>=9jBmarXY15s>Pa`4|~`ObB^Y#bL}mb?nyunerIH
zD_{h_2qSo9jNnx;f>+JO&v@{&Ki~KXida!lxFS^^Rxvz3lsiYh=J|XL$XCAftQ6rv
zQ*VO$5}-Z<)RzMFnV`Fj?nz>mSR*!zZQ?g^Bv<`R&gc3`6gP{GvbZcQYs&`mYI&W!
zTXx8!KQNnz#o*zqeB;3r@gi9sS3!T3??jACWL@W!_!j6Ue@*`y+`WZY9L=})8$2Yz
z-Q6v?LvV-SF2M=zHn{8HF2Nmw``~WD83^v~Zg-yNch7mxJ^#Ub*VI(kuBl-yrmMSa
zSJnQ0KCN|4cH!Eh(M0A@u*f;zmf2rTIs2vv{Ko8HGkBbhMtK|>OOHW;x-47r%5Y0I
zys?hVh-km!LALa=mb|UCXXQspoV~tqd6UT7FMj0z^U?u0gwB8T{v#j?0uaw;@#{Pz
zG%!G|QrlOIJb|A)?xdFLWCCry(2Tvm!r%Q07S#H3XC$!{muw`a5rUNNs<@r+>sM8p
z^E!)nXLXvaRYp+<9{fAtbv&~B3c%idB}aDf4C_~J`l>ig<CHVb;<)#h!ZERcq|m
zEzn;uah^|VJ+z!ku{lNuZ>T8oU{BxUr;7EKS;_9DM7?&+@FI%@w<5M|XFgU^bbuQn
zHs&mYR_!<2mh7hiqqxQs#fJRN2@+|Xq9>yryERoBeMGxWDvS}PPGZc^#VKREpJ>eA
z1=H#^ADnPoF0<2+$6k1jdhlFgfR|FRE01oWJosan&S?~O@(XVP8#zCMFO6+HwqOAb
z#p_%6*?oD-jE1^RwZ(mTr|A}*<LGnjmQP!77V-86MNR%%9T&!Rb7`@|1#E|fmP7Hi
z0t5RtVg}@EEohwzmfWCT++qhTAc!ct$OR#F_Vd2YF3=pEA~Kv@KB{=-!z%Z~-z@so
z?MK?xLIIik2RQOoO2f83B}mL-S9UfleWjA$XjHJsZV2g*tWJBqE$csz44WUQGQ%eN
z1iGwrkQ|d+BKOaA2dcD`v_)!-3znqe`lq%mA~6sKL?Tl~@Ctv)C&(m`CYrHPjebcN
zfioijhbEZvgJW;rR(#d8ViO8V!(YBJ7su(5X~vbk>Qe3)w5D3*ygCWf?OqI9S>>{|
z@=Q@``{aR)6zp2-vm(XZ%Hs4jqbJ&!999VwCa>GNP>V9G1?M(WMlrE}cyY63BTVNQ
zVx6-pdBrq+bOHStd2>J6V&|Aj@=x4!%KALSXMMNI^wNI&K0Ds`l2W0?_m)|hBFg5x
z9@@H4fiiA&_X&0~{pv+sXD_OCd5BQL{FuhG$v1<S&Yzb*7|ciLV}bFWUAxT8Tj4G_
zxfyY3;X$;S9;&K(YgJZ%z@!6tG+8txyG;u<G5MM6AE%*NQ{t2Lu_eT~P|TKEn&QpJ
zWJnSffTou$%{jR3c-;|~#7F};`<Wu&ZA%0ja&4>qbA6|lofzNw$FVS^Y9+fr;)fuO
z@a8g47UAMaY8RjbWp`ufvou)C9d#y3N30YIm`hw^B(u2KGMtv@EGMm;3#dw%Vz{!J
zSeKob*ADuvXbK2QR-<#W?l`=hmsbv^to%$!OJHL1!UNg9<QPVyMMtv@I`gfi^}a8@
z7hiVaol*Uz&vnvu;2UKsF$vc%R%CQxF)xhsrt|H@>oN#^VH(zydehh$+b$dRI3nrR
zg|7L~@#zA;+aAUM%|m@76{d^mL880fe-YLf;esK~J_NwDqf22(@W?g1DDtMbQzQPy
zymL(M$9;7hXCDQC*;%1jCw#OUUJrf=8a51pY^|x0d^6ao5dmRbDa4&ezcdc70|D$i
z?WF5iheo6d@dm&f$-<a8w|>Ex_%4>A*V}l564e`)SIz}I9!_hrC#?VgfxAgIvLb@u
zKHu}O!yUiWa1W2B2+(j+WS{iiO>JuE%=zp)JyNIWd+x=%%Ellx_tVQV-UjuV(&z*V
zaNw|YdQQstn8GAG79GM=b|2yVi_5)+)P`s$qS=;m+>)a^uHZV0T2rjFGa6eB%rP)M
zuy=xesNTOxoAkLX40omocymVE&q(n4E2r2GWEmHccxz}RB`-mYpOrx6)yL}i8$Nuv
zf=aZA9Y1^TA0_4F;7E=Pn1-7OE7s3tM2#?dWcSXrP=fdyYo{2tawdSY+eME_VEAzs
zhxw2JjYQda4WEi1Zezu^t1jts5!RL~$+vMi_x_G((T+2o{^MAwjx)96Pwhksi)i(O
z_~PRk;c3a?X}74XnbF~3O!4tza$_#RR5e9$cAU3dJ;k3)%iH>+sj?z`oYYIdP=QU&
zEljH`s~UC$_sq>zE0d=iZZ7<-_wD+BtL>UC*KskK!sOn714uZ9)PJ|ne?6l)g9U+@
z@4|Nw^lj+T`@6;7WVWz(Gr0YJGMktEjq*`C6R0LFeI+cDKq<2uL@AR1fV|)C(Gq}^
zWt1}LQH_uF5xae7#<fdSQ7_=%5>YefS&M@0XUsE0G>4bZcWFaHQ?1wgS?m@D*E#p&
zlN~7Q_f0mdWUS8yIr;<(zuly^H!7nfdw(?TS-CahPFAB&g-L}PhJ(^a)@jTe+1i!b
zXW!qd{;V&Hx+$dM_cvTDuGje7olHxS^H1Hk58atQ3qDhLX9%t;)~cQk+%4XH@-FHe
zeFJtb8<<#tt*4$>M!Kr}3hck0TL_-K?h&8eFxY>6f4`o*vKQJe0!%w!Mz_m>u$kYO
z8>q-7u6d>fL|uj)XvCZ7Vy$NxUUDxaE8^!zy?XGiJ8cz$etPO5)liPQX~W$!VDw3L
zxOS^$n`(Alj5aNjMNVpnPtgf*{+xW&0I@?R9RWMzKQ!Tj2B$y7l;9{QQvV@UC?vx#
z#*X=($(N*(>eWEVq{Q$i^2S&v!a$T^R?Z6RiCZVxK(b=f$EmM#>@{p9Tc3#-;%}q0
z16y7%C>=h&`;`F<$7|m^PHKU?DP6C)Z@I$07X0*;B_zB)C$w&Fq#4p>!%7yBPcBWq
zeEX%}E#~*xyMCZd{o*U;eS6_35O-yBOyhiuc*N}r_Wc10M&r83?Zp;1Ay#)!utaKJ
zqvX1tW=}6kwm+rTWcBt*nrn*H9g-okYaVGFcXFp%l<*Swit`$WR-(F1zkN;PFvfoP
z>_k!DJ5tD6-+wKGVHYE#Y7R_|+q+})#<L1wk=A8fuV6TQF<e<<KQ-g*i2B37_je}B
z<nn8m1uMv8>vBQXFzmrcIyC$Z%UgkOn{zjsi5AO8rR@M3RMkqOH}M4Z&d;z)eI3|1
z@`>mp5#r*<MPwF4KP<=w0W2ZQk%h*E+XbS9)dimgiiJGsj(hH!K{{K-76*H>&`*7u
z+EU~Z@!k~om-~BbNCw-g%Qzhl_F^H(A=WuFIsKnY+8uN}N;K!&6Fj*OcL-V=|0<r*
zy2rPV3hoLy`FZ{pkSC_=q6el7jV11uUCBcv8j@#sTzKWyX!l1SubQviuTZX7b5CY{
zil?qTL9(EqAbb!XC=^r-(f~DqVnNKHYETXc1cCzffPR4DL7I?BQVc*MfaJma!Tfpe
z8T&EiQR8vp(FxEB0<0St=G6?}Cz3O?p{p?tsM6D^Cm)T@%jy^9&1hMbH7GALWG6i*
z5zCU8`Ll`R<#m)ts|?a%B-4#@m=&{0$tYvfjU}nerqn5qs9z<&j-rez`3{hrqdeLA
zdHR|8arz<oG5P8HiTSDeG5G2FA^2JNY5KAFk@)$&8@+#hk9t#nyL^**D|<V9(|&t=
zlX%;G`|>X7S1r8WwdnW9uisCe>W!kje6WHnxg2Yr{%3+$qmGhoA(y6Z#pzt^Pm4wd
z6QxGrvLR6+vbt0$OGUvn4ov>*FU9XP6{_=xM~o0swEFCv3#Zs>shw(<I!d|35u(Dh
z%fuYx#4Np)dgGA}Q&qr%nsrs<BA@kYgMp5)E$Z<qVM)=J4wvBvnF9S@=x>*9}t
zyV7;b+V}A~3t|iPg%O;qPYEuAErdQ*3L3<o(A!R5dfFAHO!Q(GFAER!`Hj6zQ|c#p
z6%$w`huSO!Fr(+<w;?n9RGFP#xJ)H^?l2>L&V{EZ)n3f6c;m3n;MZHdolo72ikc?(
zdp1bT<a<>^0x+IQ8}Qvcm5t0gITca1`BtG7#?>)Zcck_|Mwlye8PgE2G$<)FKiF-G
zGbBhbBuqz|Hjv|0NlX4)gjjPqj5_g<6s<v7fHh(%QD-?In$h#qApGx?jnFgG-o8_Q
zQ%I>TnP31f-@@pCPT3M47B9%P9CFYtF+Nta$&Rd2t%cZ6a!uz6&s0u$M$EdSd&Y<4
zjQYWP@WZLhy(%O6<9m$71U*DqrPi!o&a6#_qKi&-j|uItT~XbH4g@KO!#IHm+K16L
zRhDg>8Fg<_#TjW`G0DwIwzZgzEE1=3%FiluAk4;+ygQD$oX~X%BjgsOF_)dsA_m?W
zrGg4`In+OuFd9oDmb;8~D+|4Q2;=VWG%foyZxAlN>e}OtRrPvR{9dE4Y#v8)GVV09
z5d^<x+|~dw1fMzgFva)3c^b~T8b2Zy5*)gd@0zg;EsPB;jIoxG@*(K{zXrq}SYY@o
zo8^Mjf-(-fSUaOZ>JI%E>8ytf-_mGO`2u%O&77*f?)&VgIokHaQZgdW!h%qjIf$;?
zOnjf$zjiw{Zhuz62J84HXJHinj094JW2NS{R?Xl!`B#L$p=NwnA*8|!6$7;fOtH5=
zA)iH=bm9-`xGnxV;iUCO^2G_@C0+Oiw*G#HpVTS&KN7qdyWEaoNPS9?^2#34W{SwT
z0=9D^t9uAHN86P2BTjBIE0-k+Tillc0%43{Ot$QCYC2QIx75y%6LJKZcyUVoPqJ#|
zwCc$}rCkdpRpiQI=0uLjZ{wb}CO!z6V~AuOe%O*vwP>8Y{-UuW&=y<tNiMxD-&s#=
zT-%*Zvm@FL)hb0ACH$sE`rZ=&-1GixJZWJzRC~H#U^D)MN^-xFKb^r~a5T19n_Q4|
zW}AF<NCm9#pMm}7OMDKhm5VTT(#a5XgMpjs1%pIoF8P8I+HpxzWp3c@`&H1}RgkZ+
zFs)bBq(A4lKSDx)9@OybuP;kcUp50wyJ1HB)rY&)1!0J#;RWLUsoKELCHqh5pATIp
zAYXyl@;&l#&Ey#jA6iM0A~Z}RHB9rd(k&&Zb>blwq?nI2z07Xqh;REptF$jn>*BT-
zSmZp|v|G&0^O_jvQs6RkL!9b^Y3i|cYb0XrJ2h-NA*F!@>)KnLe~VbUH9;ly$gN-E
zy!noUNg9ad7AaDpu8NLBNRlS@O#3iKLTM6W+Ulk=!Arg{)uaRtaA5!c(W8Cgz@(7c
zek{|VmOvX+%{Zi9jLloSLglMv?)<x$QXh(+>%q(1d3OpA`mlTcE5GHXK&U&7_UQkg
zbj{Y(6SX8+;JLQKYbl2Ol1ca=lBsRSzpxT}+ho!?(b8r==#{yNU>iVFFX6$a`}Lo`
zKDq*}WFB>4+Vt^12jk-^NJ>*h%?_$+{*Uo*uIEA5dZFU9S+tXn;|$5k|JQ}!z(S=7
zY0@h<B8KEyN`}I@lNTy57Z*mj@E_avJFyr2f7R0b9LC^0>8@Q1FzJN(ANPY7t#i~N
z2=i@$zrS{kEcO<86JfXD1dx;s{O89C=lt#_G&(5-e#}1sD7%4Z`3;k@Szdm9*}OFU
z2&91_Rw_=*q}ww$wyVAfx_bL6Oe^vrf=K22J@6t3UH0WyF#3OLdQoIi|5F)ElJu>G
z1QXNu`|o~~PoIQowYCu8<X(RLx(EvF{kMYlU!z3_`xo^Y0@cU=`6oSeRsMI^mFwch
z_L-%>DFN75-VhiAFr(?u6x~zXS6&xZx6fSfTc1~<@A>cjz5fXAV7INe3%7)=Qk((p
z;=Sht_lVv7oc!FBTDm;?69vH6o{{_a%$M}uFB5E#snxX+S-%ON7(M#6QW<*B0?7!U
z61?-%NfRcL$o<=d_Qd4xFKZg#1&%+b>h$Jb-%CVH7cJneCn9HAxri^Y1LNFol%LQK
zrKP6tM@(+Sns%=(C!P<I$=9d>?G*JsY7RF1g93gHzV}ySXPP?#=QzjHs(18P{HX?R
zxhK~?m1&{(Idz(M=LWvuSEtEq-+@~8I{)mDFq5fn)w@~V^V{TAd#{{(T@38QxM%iy
zmLocE`6&|xv-^3$sb~Bt8@stJY&L6e*afVn+oVpncYnV3lSSBb%^JjA=3&mfzn)#x
zNnIZngRk}<Grn&I>S54l-CK(e2oG@PZISpYv^+o?VlcnK)F39maV!SQ`hCx4McXfw
zYk2~%{v?xAZ*G0|Z(r8$J1f5aQGqp+vl`Sy_Tv5Zv&I^a$ulv%)q1w2p>Tsete5jA
zUc921p$|!n#OzXaD^WV5i9b(#E9xv&cMY}qpIp5ik6Eau(Hg1puX(xwSt8Amy7N_g
z5M&2IB3~gD`I^LvU(@u0XSRD{;`GjyjN^-dfsWb2=+A-a_d@!vwx&U^Dum->#X^$f
zzO}*!0!c*t7m_E|zX@5<&dm|*Du{aIM^*Aae{*S2-)iYfVCo#&=kL|qlTfpdIIyMY
zDNxsU`R+)t1%IKeNknArDkh)QU0t{E%V&M*<qlx)K1stSPsnW~Vfx}P*J}PqVEdA)
zs@~v5YNgQj`}K6-?WmRloW)^mq1l{f=mWm8v{w@Z6LiU)QXh&@*RBx{ygem~m=fak
zII$$=FbXGCX>PmoU0JHOpxV--m=83tcwyEEG$x--<R`moMJ1$>CobVl<65|(^Y>ZT
z0pzCHQwI)q{3@8nli0$nLjCHwvJNfaF*)$?BllX$eU*r+gv2T|bHr9M>lYS{Bg+QV
z=HtKk$9jp#OcO3@)Mk_qlpfw&i@AtL9;7~~z^+JXBwzkw!5K3($BL0wG<7zWGqtAV
zPQU?UgNZk%Wsv?|%pY9-aoYT;^1Kozo-Y5(+f4z00~FEU`Ec;Dwo>4Ua+rdo{74T(
zX&Q>&pPZ;W!<X+y9QEgX<(yw$dTXyAfS&3>d+BZ5YTxos9jn<>;a~boWf&Gi7Bp?8
z<upE3^hKymFc%+<Sa45I?vj0sF#DmU4QaBKkT|>1<EJbo+VhQ`EcpR=ONd(Kc3n#p
zI(9)bKe&z62T*M`$1p#%uOl181~GOy1d4#~&j}vZqqX%OU-2X*w~ik!x1JxgDbouR
zI1*x6=A*h)aMp|DF45n&$_TGf7B{@f0PN^?SiXEOvL2!yq3Q!aEmwi|8z_?W64lY;
zQRBcu$%SPg|84eStKne?7+eoO4qFdFxtTkBwrEM-|0;AUfophaGl)1mwb4-Sk0j_e
zsdFF1@Th?;TaSEYOOgD*7the+3Gg))N{cMA_FVJLnk_>CO)l)@B#qj9L$4pYT~huz
zF!ktA;$ZPM(e>Qe9`eweEihETc*;1FOg<4?e74Bw`si1oH7Yn}8Lj<xqZi8<dEp-S
zh|_*);JFZGAChx5ibi$AksbEXNzb_dIwNxU+eQ9K;%*FzmsZMDshUyqy79*S*8Tea
z;{N9T`u-l}D?@tn1iiU>eMY*e2Dfz@=Y;k6@?PVftGUm$*ERgLWPJp<w`1rf47>{H
zKC!)Hea?8DfZF@!91h_c*$LT$j6gP^pKoJ;K0*_a70B#u1+W4b0xUuVYSv%=ybQlA
zz4T{UO|n^JI**$=gIfPUbSqeA$Ny2SSk*JD=3*abbk0t<wc~Ie*ZWtx$JE#UDqK%w
zE7j|vZ_n{I*cWDnq00q0r=MQ&R>{o>R@L_Uz8Y;v_tFgX4mo0xdT>T9%6G!MnapkY
z&AI#Jw4Y|kJ<_?fASE5Ir&`UlXeO8W+p~GJd4y=EeP_~%yEXMMceTl1Rhvhvk`}}w
z8V%XQva>SPzxgv56}LC4iEOIQ3r#b#RV9j!QgTW*hLd06-qgK}pY^=jj$KrZ6b~bA
zRSwHO7bkYLC#Mq|sn)P7`Y3S^Seq3yjLJ8T$}gto^b_ZIPNOefc8NlqzR1;%x%gvL
z8IU3<_AoEtum8hNv6E{4aMg}RKTC7+3c9)-O*2IXpaeiOy{qU%V?2C6d>_Zt+Wt2i
zb|-8nOuFNx^o6#S_N=<4Jsgjl((a>7xVMlUCgNZx5qDS;P?yl%e=dR_J5Kt(J27B?
zq%S}@;L!BDk)06+9>x;kl6(S;E{yI-$2S8~;5dp6iVe+YXntsZX;~u+BN}boC88w-
z6&P=5@8Q${p8y|I<zJ-VzhNUF!y?B~1&9TRnObc;cTZ6=832_?t+y(M48^$m7h~<e
zU2PEza#OTVc+65FjK^8Ui`HjpL!q6g!6{ifjJmwisrJ=jH1|2$_rGSwwX`}KqEnn1
z>7jv4)qfNfZn*6@R(-rm+b=g{x;!wh)OJwKr>NA{BRA{nl6K)85YQWWg)czQ8rhqo
z6u|ZssIQ1g;|6DV#{M-q83YW0TF_ZDaRF33^bh6^#uwQeg&XZXBR%(lB(SQ1RyN0)
z%x#g5m=DxEXaIyPSkPxh_;ncJ531c9lEht;!S3s!kB`|G?>lSbFeJkrE1TpR>7L6P
z@+iJ<{0*jj51wERnadsRLv^bL4ucFzA5w)>bD0s9@+9gaIXso728k!hCygh?ClNks
z4DICY-8lK(NGB}b2<<vP`RAD36eogKLDdHzCzRIaze>ckDDh!qETc7JCcB6pnzo?=
zx;ZQ?38^C$vTGVE3?xawVc}#i-Kz4Mw)3Bcs|ok>d=GrvkQ+DX4I~1}1EGOZeF^~E
z01O{hz$}2>#~DBeq5|!L<~>YoGwpG%#U2PC7)pr<)xgNABu#pT`6PT<rlOn~X{+i6
zjb%EbWM*0JqSP5pykB25Lg^@yHIt`DJ>Hs9){V-^PH4YU!R^EEClqc38hvUdPs5j|
z@<U-pVy55>91CI?p6^NSnJ?7%O3{)shg6MXo(SI)(?dA(wS}rB<S*_xlCKy(!gbJN
zp@f6xh3*Vn3wI0fFCpVc>^R*(gupQA%#F<rmYpVX!!3zIXJb)gbWi_b-|hSip2@75
zz?y)Xpm%7g0DJ#}9@Y)53k3(l2W%eV7j7OX072GA5R4-9Ivh>Vd4Ov7eGf`EN>AB_
z)CR|ei38sQA`i?9W)`9^{3Nt6f<=&_KZKWQ^eOEVGu&)<4FneI1mP^A>%qMt=pmW=
zryF6nVC$in2NCorK-^Whak%Sl+YPr1g0CbHk|ul?+<oA4H}u5^4^#nIVtAmxaG=Bn
z#EbMGd_jD{6M%Z_O+SFa`h!yb3;u|-Aqf`&zT4x1{43O#zzCy{UxKi4p=|#^(H#U5
zYauhDXnbG@#0g67mg^qfC^Evjus2e_VEc{l!JF1UVzX<O=Ph<0a)#oH^hz<uG$%Mm
zar3RzqSW@F>3jR1)4aPpeo-P(_fWpjGy3#JIv4j+XO|rQzSp_zL*KngCt-JscEc9u
zhxZ}b)f!AnVzhe(ED4_pF(y$aG42qZ5If{X<W=;a7;T&`wxxClZQnb;zkUz;bDI~M
zM<5y_ySIw_lkg{c_CDy`cf<EU(N)-~q?M$7c2&u@QAmhu!fcD)<?cCe%X9iU|DYqG
zoub24O+xnR_Vu$M=1=6N54wTe0ae|ZJqsI5Mg$ic7dpS0J&3eWDp9yT)F2Q9a{I@0
z6Z8xkVJP1FT)<q2InY0#@gTk6W+D4JK|NIf?S-{I_#zO0KnV=%7QOJkfXoM2Y(XBI
zEm;43J{%CzQ1W-gld{4SR=K;UH*g&oAr~+*;4>l0Rqc5`MYeb@^CNmHRkgId#Tc=?
z-ry3yBiweMjUwH7<hlfow`RPWuREc3FI`6|zDKNgIgP9A+}<$!+ky$KeIDE1Rl=jL
z+k)(y5H-bd!N;{|({ZRrJ`a?|(Oy37msQ0#@fbD!A_EOWOOtTmS|?RQwlGFiWl3kZ
zen+F-$H(lA=CmMwpSL}VOlM4iLD?VP#M(I8z!K~9yaU0!kP=UgN@2Xs_tWo70=%pU
z_mSa81QXAw^QcOM>W{QnfVnlq9rGvDQw5S@p96{;<z=9d<n#4|p}-Rkk$i5x*uks|
zu1^Yb$<#EO05q;oL~OqOpJ|sbL~=vZ%?BRD?@?0kTeV#tJ1oTaQBtq@^#}VdT(5zX
zdCpdB*;4zna2z4bg=IH#ZQ;ztavf3~Ajm?Y@Hy+bqrLxqF!!J567FH|83I7hT7HEL
zd6(x7v5=k8PID~6&TTlc%tHHTM@oc{lug?C!P=DwmQIW*;*x->Y>&HA=1Pu4+Hgr{
z?#|R>XbQyGPhD6QxYYsugtP%Q6BJ9~wRBNkUoGS$<M*f>aWj?_PR-q%+e21oAX`w(
z*7eMj27lXv(N>y>GMB4Q!Mi6{ZgB1SKDGKIp#Ewb!=IY9@8+6~EcF%O)Rn4J-4m|6
zDz}8y1<-_@#d_>V6e43|0hgw8k*qL=lOqH68eU1&RO#!4C3L4H9F5+$-}no?UOdc%
zAB8c92k&lpn`&4>43WDCe5cAy^sV(R=9}@g7IkAP396_y*ehD+dynh{?K_P+O*`#k
zY6o?!EA<yx7jkLDfs#_(o3G0Z#TJh|Gy;4BDZ`48ZA-11W7femC%(~hYC&^7^=iV$
zHRhG}I^GlEQy?<du<RhA_H=1`Y^!6-BZ>WMk6SEh&6%(-<P=)DN|dw1gmuA{)V!uR
zbd)rOJR>Rea-4-;D$Zrua}q~XNO7UH`~{aM)t1<PgCnuZ6rzwJpDd+Yv<_Ox?OA8P
z(d$BB()O6ALg|D(ckBpv#0YoH2sdz~Ieer!dSo3l(H<+&9wV`flX{(t+D}&=q%Z$=
zmj-xFdm&<dL}q>DH@PA*xpE)a;UCyJj~#K39a+anJV#ILx;I^mI>b0P&AnKvR9|up
z?Fta|Uu6LrExy*C;QD?u|6PzKn^L=-rr-pQe~BghF{F|#@5T|e-eWf$YkA4P<WmUs
z($<6N!a^p0%`{BKivN>xhCpIjt589FxgmNXBdQ@pS~v2BI=+dolloLwd|9%vIkKTj
z+8)D-KYopQ=8n8mtdL0Dt3;YV@`gFy4gGMH95Sl)7GIVqyieiN1mrB$9H1F>t_Oin
zT@nT+lkJBM+?ogzP2E7jl)!9OnVI>MEGx!FV+#eEG6sJ8Cz+t7^y_?%$ZY<^BC8oj
zD^P>DY-(L0;UR%ljT$Xcq8YCu@+R0R0nn(YwD+D|iboXl72h6?0`ct$H?T+wHJV8H
zce!dVkW7osZe#a`UI(})4ag%Y@W!S`Kb*G2kHtBZAm=P7qe_u7jd#PcLWvh5of#5;
z3YJEQ%<0S<k8f8h1V-K9#m8bDdXs09&)iF7FwRhs>r>CvNVF*y9!q2}%?Oge8WbA8
z+t$9v8W!eAS41{|q(kb6@(9bLIA~QM;$Pxkt<p8<R)X=8Q?wm$+UV+~nX9X3KZK3$
z8%P?w!6@L))38&aJBo15xhdcAGhn!wQhz_8*C=uCHnJyEXQsg0dpx}bNF`a%cG9V;
z$F(@#Qrj^rXa5B4?)pyp8SYu)nd;f>8S7d7ne*9I{M@sT*cK@ACD)Nv89=>!ejzQi
zHeq0Wj=ffwkfx`Y7P|TyhZ%>Nq#6~(qer(DRf@)xFZC3`+Ue2pi^hZ;{&KqWVc0;^
zW1h81(-l4TB<3XQ1c)gPiXsdrj3$i4lmr1^P<aV?(H~h=FnRHLv3buN-(_QC`vR9%
zruWM~Kl(ADqJ{m|BT*SUjQE(2!rPf0mMt_%p=h|T+&_A9E?_`!uxBJb4p_!J64?IY
zoZ}kGKSk!YC%qrC^pJkHeu{sW?55Da-Z2T;^wvyp!ISl(UBj6L%$pQQ9FyjJ#&2hC
z4;?#+tqQ510G|Q2PaLkYvnQD?ny;(shrq`t&UgH9lgE=?S;~_Hla?0I><gZ=kf@5?
zX!o~Md51MOYQA%x#4PvhkxB2$4jnh!_E?`PeeNa$8ay;X93Hw!QJVS38SNcLNt-E-
z{fecB9FM*uJa^9b$Oznp4?^^aIy&j6)ANP+`AG8)nXMDjCe2|hK^%@@ZDKO2?h)<5
z9M0S=1WVcB<7Z;W{Hj^^*(g~k*=3VblN|dd7H!uN?0t`O>4$*5aVH^nbACe}=d9LA
zcL;g>m-8^43&`Eq0hwPaizJ(Tztnl0_pDO1W13SjH1W`s*E-vE(o39p^}r@FM(C)?
zg~TP-b@Af7VDd+_mq-4j(&W@6;yw;K|FY|x6qQ;&+im<(ysT+iI3W{WbMg?^7Hg+a
zQ^`v15(J`nnto?-$N22*-SiqFIF#ePY^l-emeV=0X6I*e{`>kg`;OVW`IV`D<ND<B
z4w`?!z_Nr~Wri4n-<w*q$5~pB7}ktRPd5Bn0ygYfU}@G|I%H+-XFHMaAAIT&vLO)(
zt}K8!ksk6%j3e=AFsxh|X`B7LP&8|;!>rk`GzXM?WHcvQ;jDW+bB<_Ml>qt5+R@3P
zqOBMzUQM3)>@I%JEQaiiN%hJ3Nlrzk60ZEXdDm*^BQk98E$j4f29JWA1Z6we>h$kc
zgQK16GG8<AY1T^i-6WABLjPsk*x}CK7)t|v<1J5D=Qav+@GeJ$fk?${*DU^xtWKi-
zN_Fw#ADsrSDzTa(*F)D69nD;>UyHM$H}K2hYtjU>)D3jDl9~S?sX9ljw^xrEZ|&}v
zz1=;UJ&8Kp*0K$x&Y5cx-J2J|?L)^~tH-NSZ};&D`-zJ0A^3`dcNT(mMaI9foq>@#
z2i;zI9#d03(feI@kMF%gIKnIig&vf4ypCcAoDM4B5<BCL(<M$^R_OZ?3pk7jd6NE?
z`RV&_ibCh~{3@J==h_#xwMhGmkm0Tb_-;Ct2ZQ@}5eutRS2s{+2(qTAQb08p&oA1C
z=k2fLPr-X?wgHSr_giqiN-tMSTy^I(a)*04Uc5U2Z3wxY&u6aUeMt(H?gMxB977fp
zq1*Y>=qKXL>z{)pX4tH-+QpV=cV!<>h&O+^h(ATFQXSOM>7EGXCFrSFPo7~OjUw$9
zJ2A9Y{S`UWLnkna6Hp^2>tX~Z42@vy(p_<Q77Iuz#-|RC?at#IX=@&!y-9eKvOLf(
zp#Z)B2njz3K_SB;1Skb61&DR$ZLn{Az0h`meGuS52S5SP0C)g6021M65MnIMI`mKw
zMt5^h#0KSszQd;np$9S^tbbhr_^uE8fg>BxU*YsV76%#zMs*KtK+x}L@V;=&FkSGe
zK@8n44pb%X!b?~$2unyO$U-0PU`b%T15g4wd%}8z>;}3xeE1ZuJy7yM8wEzf7pxbK
z4j&$1c~A*qg%E|{kfFi?r~Lc6Eqc&4t~aDF;4UOC%r3AlIRDQuRq?|*JWXI?w|fuW
z#`8wl1|(AJ0gs2^1zKFM6?LmE1lyl(L-Z@w3%VXGxuUiuVtDC~JdO(n2fPQ)7D7F!
z;vfdz&gY)$4dHG(Blioa-!u=TOP>KBPmqMZ+-<Tlyv^KLoiu#nuj*B-_&rPi|AV5R
z)f0s9n`cGze`od%IU$_3-)7-C{;$klz??p0gO(<)*sOQ(B=FDvK!0H1Yxhw1+s20r
z#EaYwQirb(m^`omd_s7k&&UY5FjD>$JviN|-O3vT8<q}Vc(4f(Kya}LH2(HM|MdF%
zZn}SZ{XahXzaBcAFY@F+mnFnMH+3N9A<_F#?Ekq(?Ly80tp!)y#R$dc_!e%ukJxKT
z48<E5bnpX3@B|5VdW!f7?2W$D`I=g+RA6<MuIyojX@GwU(>qms@taP-<`YWh9m3`h
zRga~cTv7oWKHT6ih0PzcB_a<Cm>^CfWFdtAYWalD^9cY$h!hL8X#r`DNz4`UPt$*j
zAkGkbg>@K+@$a`@A)e~w2VppifZU*qRyu$kA42fH!lvh}=LP`PfF}e;aWh2KV-xfL
z6p5b}`UIoHi0}UV^AG%Y@$84dO?{Z}odeA_(%bd(EROUnK1Y?v|CO1}$hE_pdLbdQ
zl$y{T--HW`WJZrl#0^#B2qs(1IHfb{qN8Wo`FCJkE@jb9=VrNzYZ-ky#XLFK#tx>8
zPSW~pcrqqO#Zah;^_gIFbT~z_?%E`aBcf`+S+yu#g>8i|`Td@Ykc0~n5uq>nfq*)m
z$9Pj173+c|9RFcmOyT8x6aVEr0QfblJ9p<IC8*U1swE^*s-xdmy}v_XoIP$m7Vsgu
zPp5Ud&Lc_3215aDH*un|cAj{Li4jb7G>Llr%J@`GK0`=+h<RvWql$QZ*4yDDkU?D|
zRwyt^M*@>o6R><>H@;4hLV|V38lSTfFFg(Y5<7UZW972mQF6(EUr`TVD=jvIdH&Iz
zTwg|M2EmaubgQb?a%XbOWPCkU3(H_CwkPz0t2*vNmbfb!E#9Z^FT!5e0#?a%s|!pT
z9PtNW&@*nmvS<@68G){O6ndQmA{bJnGA#(UNs610-C+H(C5>Jta})<}BdinOR0wk@
z-<H?79_D9SC5Zo){s68KC1yywgdIL+!o0<9)7zKOG6>#<WRxj5tut`mna?P~Q=-D5
zv32e9+nXQ!3K+<1uTS2F3r+;K?XMOt$~^&?oA3rOZaJJ+_?Op=E?=e$ftT0OtT>Dx
z9@}4r9y|wA+1h*dcYovrytwVa7!fXv#-t2Pu|R&$cM|XYHw<1k8ZT9{;6t)6+jLqh
z>bp+rt$Hkr&#%71&`iNPA04fNKazcs``Gt2m@F8z7xEHCC1VtUMN6RyC+)2Z{tc<D
zD`km76$y{hVQj{6)E4z>{YchN-rsq5IC;GG0#z~G1(>WoUMd+SSy8X9@c|iC{xrA4
z);i+;HHlD@1v>NISLb&#L^vJz1v`XCJJrJmYw7)I?=?kxze30$S?Z*j7l5!Fu(q@v
zeR_I({QlV1;jNxecj7o$eL8<ru^r81=)-l#WAad9vh{Yz9(|&p?ssxGB{+ssH%9YA
z2G%;YQ|=(UpC8e@X41DLoR<N!>l$uPV8VN!-AMTL%TkbV-`e!l1!~-Crf^>lIQ<E&
zv<qr@$!w)71KMJE>i2ueSMd*UMsI%pZI}&kCiY#|H=OPtl%P<cz&SaA|4FXGaDsw9
ztFx+q{&$+y-1c~Hm1cNHdZT#Dd{MfdeH?#`%N+%M4wdqUXi-}kDdMLk4#uJ*=TMlj
z8$7?|n%ub)FHvarr?N^_L%ML9`xH)~>qju_0GRLDGyQ7O{~hBZj*3S`=1&T&?Z~3-
zzsG;F#cS5^4;G7(4oY_1a|lS#?<daO5Vdk&?ENe&a8GRfct;zu;MXz6ug=Bk?wQba
zSE4UdSHhn!A9J@gzooy(`eFswrMr@mWooDTpobX_#&%7zm{?n~U7w{{6`Ssp1bEu}
zKXnCoeKMlAbcNOF{G8&OS`|>V?$deGZe(?#1h4we{ap!49<D0Z;QrG3ceP=c!QSEq
zryG3)>$lhGdwD_CCN}IP-kR8O;b^Sau+!S9q@h1_Y1im&#!aK==Q{9jpq{mu!FQqe
zAyocyaei+hvxh(`kCM~ju0Xz7;VvTi^}s{5?_JOxrsrMWoP1og@3-nB#4EpE=8hjv
zbPz;Pf@+R_g^B#>BR%+m`d^Jry>S7neH+Kb@P_waAKJotG`Cyc!9MSPmr9TClkZ6H
zSyKS#E2Zuncj&to45QsI<Ge7=lS`FQem5M*&e3N18_!q3GnZjZi#nzI@Fn}Lan*|>
zl9cXl&+j*euTP=vnowJ3>Kp%^?ySxXLNE_ljt$_bZnz%&w%iwQ&ALcJ_E4tkfdLiy
zxgFP^_sYX3tY5G_awvj)+F<mG#{I3M@Gj2BzdY1fgud#JeofT2gXi_&gsYY}PdoNa
zd55`Z{*{b6=MJR=_0Fwjhv11g$ZPHMI?nm5I{`CDK4wzQCYx^9AoGVH-QK*|tk?pS
zoF4z^MxFJDyl3KT?UT`|V>UwEDgQ`PQ@nIPnB-k!=>36eI09zWc~28uLgw~j`0)Px
zzUlrB?r1B=4WZ7%yOVhx2eNe`ilmcR_~Ja7?%lI>A(;8gYueY}7uGHIre~kf7(eKC
z8^W9gXsUjDT~8O{7dhoNIxG3G{=xYT;{tj7NA=2*Yi*ZVy3_vc%>4=G!YBE+5kXLw
zw+6X0>W%Qn1<vr_6d!Oz=}SW&U4?t=FPnswFC)Ts0+fz~TH{p`oUY4q)aYGzV*<IE
ziCsG)x?1B>GTojIQ*J76(wmL#iOe`Uvfu7tPlE2(%Qj0cq}XiJSG2LTQT#al50(UB
zTg`ku#Ypd^(Q#e1pms?^q!CqO)yNv9VP>Km$g-tTW`JMF3Wi}JPdl=x;ZJq3zqOI>
z<HdGxdBvFHtap$@(kk9LFeTA2rDW7%@V^rriHKQ3Pe@!(lQ&>ieXE$}Ye2IVS(#>T
zz#;k;HqGjSo-MLJ{SQg?Tk{|Nn-7AbN`IVh&^txWS&363i%bBt2)1JU)5HxVM50pD
zh%WfqVmQ-SE<~&1?tgr4Pz5EY{(Qc{@9ZOGgp=zt`qJYN-9MKGRsVx{&<T2M;Hs9q
z60@Sayp|6ldegI9%Up>=&>dRKYJ;BHvsX)HgSFD#^jrVr1AnjLZ|4*A_MS610g-Z2
z{cap1Xwh$omH{#ws1LsgZSXVuuxqhwh*tXDe*2uD@()h_{tN-oVSEe36v_C2O$x2|
z?b94|P&f6(N72AwQq4FPTJ)q(^sw`Rd?E$EB>pfTpx=CghwTew?I|>p{K}$*Uipa&
zRyR<;CtyR`ft&|N?~@(uy=cx?^)%+4&#Yu*g~1JfC|y4K^oD=cO`~B%#r`}Nocul3
z$k2h72RjRq8Fn#{pNvu-tr+nK8F_z5;ddsEkG7(~uaxp1okJdb$$ymn7S&>^#Nhg*
z8+_W!{G-O<8xJEPhT<oS;Okzh&2k5^7OKBk#2<mdG`)~*QWugQEL#yO5{KlVj~Hm=
zvf@$l<YB`!k>Pa`p83$qwWacEbmeICQ5oV@`N+!6r6{9lBKerg86UC9$o0e{=g5PG
zsjnbZ$zWQ|Bo=z~<Vbq)`FuX*f>Mb&<|FjmNO<wSeAekgOGyqE9rUV5E^*y_{po-M
zX%})n9Q{Z;@p~Q=rGZ&Tq1a7W#Z3;oUZNHh;0D-(*uWoW+suQ?AZT%0!GmEfz<t~2
zfmA3ExUKrY2=ZqU<88s`-r)Kh6m|id6ScoB;X!8*pt<epL9rIt3=x245%NdbHhG{F
z3YyxMd!Ppe*l)H!K=}seZtOo$`39{=d2XpWwxzKQ_6Mh-&q9=^AhKc<TQ-h45D`#D
zW(>_p>;Bs<YR8HevA;}b5FInA{_QQg%SsOs2#OR#7{fm5zJF?frN88RERUfcB{P<0
zc*TJ0mZW1;i~e7#Gc1(wumO`TnagMogAPgqEc@{0{`M`H%lHRz05b@4J^UPzI9|38
z0{~6&F_7G{SDfb~2^v{lgh0MOE%j))Y<_4dO-8sze$WB+Q@Dt6FfL7TxVCYC7WG27
zML$=qlmLwZYDvG`R%8nmG37{tRKge9FiW!K2<H4$T++}8R^x;;vb_i@<K!jMrf~f&
ze;#thaObUr7P2!c0hw}2{oYg~bWu?m%LtjRxCcr!nI=jl6;isCBpG@t&IB)+#6tBM
zGRR#+2A+x{!Eq$XRHKemJEc-4N2ZC&J7GToCqZ>YZX|g}<BC)vMJT~sy1r1fOszcW
zs1UpC^Ju)htU2X%0@X;lsaPEqIGIp7mXapHd8BAZ(urkPMz!cr1%#Q1t|BWdr=Sux
zM-wAmU*tIhZB^SKuR~WAzaW=cST%!e)!d-OM@tkRD_2rjKLdAI=c4c=-^R3>D3l6{
z%aJvdtto7tLC~%{iDwi`p~4s~WGj-VsUOy>^Jk>?X7na!NJ<_a%_BUlzWL@wDHxw4
z$5O;S<Bg{TS$;^pG)s$)Q)bgKPvA8b(iTr)8cW0)jx;l?lhux?G+3atPIet`GxMnv
z0f*b@aZzO^GYzMhS=U+A*@AOUT2Dew)b3Q=sM?bu(VsgMY(eAXA%#h534Al6ZNne%
zC`b~OhDGaw8EGnpb?O3as8=8$ON7z*)kFcdWO<rLN=bA|iJ8I(mpCCdQS(GkQz&iu
zl=x&*ByA<G_$mmPQ{gT?2!i5NRE)3Rfo_$rj-MK~bpiq)N@hwUsXJJnazew2yTBd1
zE5_FE%*hN85i^Oi1cV*dN0Ubk&%6$C1Lm59#ZiKti7PJ8k`Adg7Lo+uD9z6774IW?
z5=F^Q!(U2wh#XfqWaXWPB@Sn7Y$y2&-?OtrW{v(l&VB58C+G_8u>~M2#9$c5GPbxg
zwX<?1_~`uj`LXP!2r}$p@cWfeCZz_SEP+TzS5)Yd6yl@|MK38>obx?I4N+ZDUAa*W
zW?sHgIa>{7UI|ILU=Eg3VL~}-?o*?ptqT8~kgGJ27_S<!`Zp|9Gc_u8v3XSmH3kR;
zT-9felv6ZDRdtTB@f(w>^&C3{TV9Z(%2KL&MCB^6s)7<}IzS;2N-jsHCXFQ<qWD9(
z1rtg_{!;5wT)C81If<bhvoR80qCQ_?y6iyth9MNQAQEw)!C0}jR7<&%feVX2(q|xV
zOUtpi<+~okSyCLEL^}K~Z3bplB(g+vz7lIGu5vU(F=l-v+(4bN!lis|)sm`!X2<s|
zdIS1u%;rc0v%0HzHnH>~O!^|(B9)Q`TK!RfwqigfAfHh!g?21ieN@LRs7@PP4Cx}Y
z&>=%Dcf%I=m%%YSpxh$(f@>yP&J@o|OWs2DCNF?)1{h`Le1#^x`2E(#bkz-@(5K
zcUzofc`Nk3GcznEO(m^B0xO(%KSN?EimqfmD*)fADu~P2)U@gIWXn~`UFf4mi$0Ya
zmk*WGl#8lIl<TP%m8)}>W~keiE2;y_4LJ+()fGyM)t$>F<|BXVH<m3cpH?74^h?<1
zLymM@OG4-9jyO0gCFfc))GFrT8x>BK!{!iOtN9G|3z<Wl)K<y`=bh(2&zBt)9m%>@
zctIi)NXppfw14L5lxsjZ^HIx1$fYJnLq{}6qOK8bdiq7x>fEK7^R`EduD~`!!9rqn
zrP7jl=Oc;RNH6`)vNh%N3Y7VwBlg>nCmo-X01mng4x~yEj+W55Qcn07h3)BJ4n&1&
zYD3jRx_LFra!%I_Nrk9l{aLu(Qu}$74ATh;g-~iaiaBXc*%(EW=@t$s1^H{OYjM?5
zy6GhAa*oCfc!m06h1s&h=^N`%j)Dxti3W4U`cm!bN^34o{tTaqyge=FV#uB=>od!6
z#k^U|G)c=WYRI(JFWZJN<Y`2{)X9>l1C_SG>f+-A$+i%?lJ)}wFMs0Vp#vGO(3~(Q
zOS-B;*M<<cX(&EP;o{ssAufpeikj1nE-<U|&C}T~D62{+(*+PLyu#FU)Xk?(Mf(~4
z8zCQQl39xzI3I;|D>B<iE``t5XiU{qjX$eItY^I%$ZSP3D<&4Pt>hZ9mVer2Hz}{=
z+b+6Uc{jp9_7<kOsqhzMFEU$cHWDl|omSs{^M>8EB(cu5{M<;j>|~qVq_OhLcA?3N
zzfo}6_cYE;jXy7YVbThxkzv{OwAf9my+&}3*m|k~XW9BR8+oSaV8-P)^7JO3O34DA
z3s<%j4uodk+6K^%uU6B{t5}#n#CK(CbJI_)*5v+0un==d?aJQfxtd_7-ki5Gb9#jA
zBGrbm+6qzZD`;Q5zA5`2TP?C!X+7(D<mK|(Mg|F15#_GRoMk%Fa5-*MSdFzabT8#!
z$UbCtS#0AMEL55<Is74*KXhAYP{n;<>je}lR620JeS9MKDFcZbR@KaMAL-tlJ~8{$
z_<j?vB$-t@vbec^qIxa&73(TmpC^GZ`DmV;UyI%({p>gJRFDqgK~U_d@T1=d<iE%I
zstM=iE=(Qb+%i15z83pRb=3&ZksMFm;5=EsW<#+R;?8{e4aK?vKl6(V_X}6h5Gotx
zm)1~#SbW~x_aCKPb9nejOrdUKsd<ZEjc~c5@u-p5Lp}Qve$4;=vBY+QkNia{6r-<o
zbH>4>h5IVHY|w>bJsb~_!mKccx}fiXT{0RxC}0v$i#y6{gYWj`IaI8#c5~d}M+?_q
zJTj9=)`^b<XcTsoF+U4>EZM!H$xM3FtjD>r@#JE#27j7l*G?}P+i<(#dB?yE{@6})
zoZ&Ia;%3Ivj3F3g+OEFr_AnJ-%^_fk;U4tHm`eI7%YB*t*|=9c-7;}x=j)?9nrai>
zl$sGeS8_VN0%x(8YGT>^9MmpuO^iGBaFVesdk=MgaHe$Pvguc_JhAF<(%0RLD+P&S
z71fZkWi^YR9F1wq3i`zcv;I~~9OfAu6KQ)2a>eSip;luJ)_h-y(iP?Ri{)lx4%f!n
zOEP9B0PN<}<4NgUnd8XyQ-rJ*nb+fRd&bV`tuuNi)!f|w=uGX|Ip=!*5ilm^R!X<X
zBV@Oup7>ecW5ez}PUhU3Wj)D_lP))bwfECGyLI}nu^qR2y7vUk-jC}v&lv%e9B!6$
z%?W}%rt9j*Zh)x}Yi=gX1oxiz=c$CBGR+rEX(7MAV=o)m@h}R>^(WYl)MIKzGMS~w
z%Ec6|&6rv>x@fgA`J{-9g`53lGfQt|)JkEpPO(U_9n0C}O)`<ua$<T+A(tyF>Q%8V
ztLM<sVLVM?ma8%AX0ySom)9|8yiTDSD>v(_GXpmgYQ-|rq&SZi?G8HG?`o@79cqBE
z>d`euWpx!a!sabvwCbxo7oh)9YSOW)s$I~{tgKo<wr+-ye=Uh>V|7a^>lfgT>s%+E
z#@lRH>xG&@zjJg9b!sY`7Z7yWl1!@VxpZ_ZPZyZ2Yh1heY>4U=bu22c7pNep;J!Aq
z)kb11U?t6h^KsGbpqKqNSjF~`3xrgU#x*LrBF_~zVG*@dXY1Jnty^0)u3=SCJHL`)
zQ`Lm5+gvrpWl2yQvr=qR-vqZ(XFG8>-ekK{FWB7qJA2t+x!R_=3BkMWHD0hU#|&q=
z$gM~pVRtFi)}%>hCE9ka$yB$|cB#pxy$NO|{<PoCuDxM(>FiX%yIgQ}vf0F~R}pO0
zK63W^`2@|oNpQ-*h@~kN%y7zi=jEN)IluPfyy+f{a7uCK_?+ak05XCwjKR4OaIyE@
z{vFPp>a*N)^6SFehP0c2lPOOfp=j7#p34CtcGwu2Lq8#qNQp4yd#q0%$ZWllWC?ge
zbLaeA^g8H!zQL<PbchUsaYjWR72%gh4(r<w=cyy|jD?n}Ef`lmEOngY&mgRdMV4wV
zm|{J^b&TdOCajNz8>%yzxE!xNU2+z1?{LWCGvKQxglzk<sJo75?@Qms<SSAvQr&Oh
z(Vz5Z-}^^;o6#kOXDnNNQpX~w9t?)x<zXh`j`gOQN<Wf!zsgQabWl-TwsPXj60+z|
zKOJ|*=84KSo0PSPsb2%{*toj!v}gN3;;_S=|MKo;xia&lW?N5MOxo_}T(@3_T+cnu
zc<y$%3biEY1NHE#8B_mIxzg$Lr4H;m!RfIsnk-^K?#BJ<XXQ@wZTNZ<)m)k-6+`pq
z_)alx)OxeuV?R5iF^@{L%QJ_K?MJrM>3dc~Yt~kbs~?s-&bMdiRaGNvHdjn>9^gC1
zv={5uSHmsVSx?-KH=Zs#3%YkYWVac#RqHiZBe>T+$Mg4P?_#$V*%j&TH?`=W`Sb7j
zp7?GtyQH>^t*W2txCga^SNG0b?pvN$#m<!PgT0pp_YGWXS{7F`&xr1YlD1=8>Q_C_
zpxtZR$Mp}Z9T(d(|5lwLyEnH_2_6tT0^3Xe)}O&apkNcP<DI8#&cg0p4!LcHZ8d+J
z&k&UA_Ty>#5_i$O3W<xP_G>-#a{OubJWo8g=x&lcMg`S#bd-Whz_WXYH#Z(nf?_$!
zQ^6L??EBg`l^zR%nK?vLp#4A2C%o5s9@T>G1|LT+=RA%C6>>C`!b(<V_wjC`Jq86;
zbF`-dEx`4Ao_pZC6VDuP0}n+(7D3G%-KijM@bhry=ET*fPL-OOiff$?X8Ue}YoR-#
zOKdN>j@>nS`>N)il@r@*H!tsw*EO>9Quki|)9h<zFU^kQHHGt7_jT_B!Mhw!mX5_W
zev%!z%c4gklC3_ULM5bK4}?yNHOKQL_l5Qi{kv+<T+ilC@3s9k9Eci|+<Ef-!t;jQ
zo#2((Lmfagcdq2-5P+RKhI26h0Qx8aLO|$-tu>>X$JQ5|&&z;p5V2vG{V?}Y=7qxZ
z9v}*Ywcchw+q}JUPxKV)V*&cS-grKV@~HY^<+}uYa1=h&d`5zR=eJQFG2Zn2Ag4+9
zTJYNT`3^AU!vZJ)rGgmNtIm6JPyBYKE-W5He9H_E7a^$nRN)QaBgu2_!{=A3Hz&X3
zu7&jt`@7~x{#U^_-}gAbIpNLRyQxQ<SB5v&_u~JDy0?z1V_Viog9H*>0t62p+}%QO
zmk`{Y;6a1CYk=VH!QEN7OMu|+?#=?%YxX{O{O&vdym!wz_r1LtjHXu2uV+`!S)&)T
z>#JE_eV`M;OJeZY1J08LMEeCoF6;!f?Tgo|P%N1!Z=vhFsn8I}p&NZ3J}73gDWDgk
z{C<fCL$44C$%71f9eBMWhbMZ;0<8|E{{c?{&H+lg9qSdWflr?gl~3mf$xJ>4tU_cq
z*kl+hpV1HUnSxAj-XhDu=EK<g^t4Oq@mJu^zCMIUf$8(9ZWmqUvBmNCrS7PCM<C+s
z5{>lJFEEpS_jMq^O|@ncRC_~*tO8r?=LqmJr7QSnu?~?@V1xV&J0#yzC1SmS%M&tI
zz^Q@N?)boj?M~p1L5K7McF6B@$Go0!1@|oWA<{K0*iX1)d{qR9=iz7}mBG&VrF5jN
zdY&@55bz=Dz?S<tle~|^kV5PrA@>jJkLEFYHTN-H;eFhzt-y0((X0st(Lx?&oG(bV
z{`11xS<AmZm~pXTCnJscZwpIjP5lxxqpd;Q@`uh++qK)3EM!u~ph5i{@I@FoYg<9H
zko7m_J}Pp6m@sD6-Y+dP<{AtQRI5OzkKnAXUv|564(LrNO95H7Qe5;%K`~53lwJE3
zB$kM7omsY|sraL)I04dKSZn*X+6~OWM!u-d0d8F|Yip-!E-ZYQ>8OkWs$KYNrKi@n
z@7&)Ayv_(>?BZN=drzf>Rff#zpVDQuHfk&1AjtQI2wC30pv!)(=TyptzXf;s^+^zF
zSKnIospu__JB|-2bxh4G0wGct|L{Vxz+n3I5P#AT32Smer8m?O$|66>9AkPVq;vTv
zu=XO5L;}eSV+Q(Vj0CFQs7F|e)R8vF`1LDpl7A&?3||yE&S^3G!p1)sWuQnZCBz-`
z)URN~#)6&{IV_4zMjLb0Z(>AMMa&&eAU;Zp6LZk7{U$VDWHQ_KO~|?;%g;!>?7BiK
zyim&Q#_<O;#TqsZ^wP*_QT!bG@oO{H8crTG!pKNbsvOqwyImy*_9pbD&|@*wZ1M5f
z-EWsHu9&S+X9h);mv03FdxGC$<rwBC0(;Sm8q8Jly{Brz(2lYebIt~jckS9;(z&9y
zMlSbcs!7q&!}UeKB_cE2Pb4u3`(}`(M*0JPC<?1b$`Gq^UroD&c^bna%CX1Q5T<f%
zR?U)y12ZLxzDLCnA6REvAHH*X!yA&;$6&}=3Fcx<$CHn`*icIi{$$5v9m>1j=0XlU
z>B4Zj!#0f123=%Z1eRg9x<?IgfKZV(L1;nu<hm_E$c7zDStR~?T>}+SDAju7*@KH>
z3!4sldE`tF{s#TowTo&CrvMspWK<8;2J6|~t&%%?8~RG<NiXWU_*v}jw+9waOpyF3
zMp4Kmte_7?Fl>A#X1+h!nzRVUTu6(EP&Sw1k3yN><olSiA=4t_*}UTkZ)L*Cd)IDe
zXUVjNdWqI<<^Z7&5KsZl0|m$RE6$2a@mt|%p{i26AtZvoQ&-<G>Qof~E_MPy6`;v0
z4NzNI9>x%k!9Kk@)&tr(pW6q3_NZr}2N0~EfhiIERU3uvD?ac*|HF}<51gm(@ZJ39
z#-l)})j7nd9bM18kOdI(20SCny!&ZUpGf#ddx`X&VD~|ObCm^i@99v}{Y`;xA8srU
z(bG+VtI0oqVg)Y12pD<01E_UO05v0Uk(Os8bpf?YJYXcqz%Yu5*ZLgqLH-%^e6C<M
z(B=nR&9JV*unD+ZCoP;?P}kw?aLOqN_;^?iAZZN^qh@!2?o<F%D#w6R4z)S1gFgfP
z9+m?aR{`#@k`X|cBuDTY=o%SDsUhRLZ6bYz<MvAx8hvLP&DxLq|NX~R-9RCRa;StE
z?;(r!E%w!OJlk)`4J~k5IxznuwI3w;8*((`2fj^23HGipn_)<x;NMIoLd%A?MCSrs
zH!(bcj{WdRf*<yAr^%3!@S{<2J%ino))HbU17#&xyG%BVkwBp}OqN1zy{8ru_+1>E
zWP!vaM@S1XHcSt26CD*Wdq%S%?!%{so0>?VfJ^2>;kKdEW(mPA&rLTZP!JLm!3Q{8
z6w(#bTMwh)H8hrC+qZX6UBvHlki=t%SsqBv>yaSXxTai@55a3u(UO6&{ZY72Z<9>8
zB8Hh#g*-b?srm`JxHpO4KEbez*%IARcV&<wBH=`5FhAf{_1mJ~i3dW0>6o=XdXAp%
z^s{ssZ{i?%`IIne33(2jCiK&Eecn_>@(L(n*6K>M3Tq9TVkzlKqz`Y6V%B_H+yzJ;
z-X0-q2}~x4hRAQL11eD~#R4PVR;N`m8V)=4CRda*Js|X2T9qXI|KbP#-T%CB;Yf%?
zKH6mM?P{9A-Cv&!$y}BzyuqrNdo^1E`%AMQB1FRW`Vsb?nhnbX#shOJNBzC8LE$S3
zh1Zj$FEN;8J|YUG6$$aNg{nMw?qiw}l#1ZSqP;ZEL^dP4H?Dd8h%g^smsz?yGwyVW
zZ$>pA;EDLiG2c})_5l$HCB3B=k{)NNAt?Q@B3k^5F_Ybl{$Ai7YVc4J4Z79GGuRXB
z5pO=w)88p`MMO}nImvkC0|ft``|?7@%PT@9M^|J;_#m;dOF<4J)t`J#(&#(SK(vwc
zIeEZ$49P~xJ4sQ=JV`9cDM?4k2uXU$BS~$^R!JDiE=fblSV>mN3rT6oVo7{SP040S
zcu8?dD#;zm1W8WG8$Ke&_=M4o3nrqD92d5+Zu?XBmRF1^34OGySQmpX@hx~d{N*7t
zg9odQ7xylHE$GW!HldtDnyd5|(=KB!3&T|3;5|{FUihvuc0~N55*m%-{7@Igxu$YU
zwmWGHzxc8hxysq7W5ovqLvs3p4>s$Ri4S`19aRvl(MGfnAHmmXA7QAkHiaLik&z$l
zZ*||%U#lNpM5DUl6#H~qiebDlW&Qr54OI>P7HT!&1^x>`SW8$-=m&&VRVd9DnouB=
zS-4wtJ@{2lC|)Q*xI^eexCf3^=NIrVAaJ&5r(kbk?=Ek_7X(lQFCR!&xmH)8o?h8v
z*kYfaK<z+zA>6XIi?(OLFu*)P+rB(a@GkZSL2JQ0P_;X@d%-QfcmN$PJ+ih$wXU2U
z3?0v7Ii~VQj&03boRqaTUq5-?%r{${I1BhO_r5g@XC@^jT@MZ}3=S;}CNm(wQnc$n
z!xH~2Dyl33{1D{)d<H3ge*SSRn{Hd!lTUhj2_D+0zQA2MVLaLC)0%1VoL%wZT|Md0
zK1H>w9P^D|-D#&ey;#L*$2$$vqrau7KzU$MgIH(p2~M!x-<;)llzT_4s&<t7jI7Rd
zU{_#0z}?DL5FWk&y>#+jfotwK@#bH3?$D_~eIUB^uzmXg#RdI@M)0z)o!Dn%753K9
z7UAK|1CWQs;4Szvp*_P#5MH%i*V_V^O2<>xRk&LVTg(UKhL=y+i*R1>$KD`#=MKT{
z9sxuZ-wc@I_Ax)*7Z&Y|zO}0f?L4PLdXLQ^`4F{9B({+cf6IdmFs}E99TA+!o-Zw7
zK?t76mT(}HI`7g|&UPE$BR%+A`U=bkj#*?+_(LcV;<c~G>P`EJU)L&XJNjwR>U%D@
zr&k2<RPDrmpH>T2<=b&>p&qCkV4sj4xEr9K0Kf8jUFHXZ=4{vXOIfvPr$4P<<+$aw
zg@530Kzt%O23N!5r1LkN9(DwnqB8Kg*{;p`A&wDgxm>Sy{&N$+>KV`f_KOWQd0S|b
z&ny{U_9D}qh;790Z>DVJ)DDl9VDEHiNi~v~mt&CkG`XsdKXjC1-Vw-4p<QRVIR7?N
zbd)i0KkN>?=6WDzD<~+ChrE8I>chSA8oZmdYx4s^OsBkhjZh$sYh(4*gVpJRm!O$M
z*p;K8c4shk%pxj2ah>3y2iJq``PxI*RL}w{Dsj4COP1t&99eNzMWpylDdivy1%$lu
zSIK_ZnLTE>8X?n}S7w;=p-!1gX2d+fk(nF2Z+OBOGKY5YnnI2<!Mo_Lp*oo}yM*__
zZJ9D0w7gf35dyUMW0X|`mcn)P3u%P?k;Xg5IBg*P1Q1AlrVXUXX<ARxxJ!TUEs$d~
zCwX#myLV!9I}2`ZWzkHq8pyBOJCtyea}sho1M_~{0;f27I8B1VZhc@)XWeVPYl&-@
zYvpUp>yOu8uQjesuH~*huNAM&uSKsNueGlYucbNsDl3%fV1_zv!`mf>z2}%XvD*#Q
zh*W~(^|sWoRKnQxM%3`9L$355XVEx9W%VW{7=DE4C&GR*;2HK+d>bKJK~VC7ws){X
zssygMFS$ac1m>XkzCy?n7QZjQLfsNdvv;~e))Ic9FS6p(A#`)^afSHdOG8*XfO{Yu
zP0{|+-}}v5SPmaeG@t<SH{Xv!A(>hV6opu9uaaL{`N|1JW$H4Kzr~VymH*P-SF|Hk
zPrHI*7K`9rBeVt@`sOPH*dAXNp}b5n1x7QB8U!9#pqfcXrk)5BLn6j70ygZBFMCJ6
zo_GZ#7e*?=A5?;loK?~GRXRSbvG!_P0xDaK=csxF{OQ~DAe?my7jB(^nRR3r*5yFw
zb$%B?0sp9V%v&~rAjWmtTb{OnlXdu8X3s#~b<SJ<Cw~xWqYJVQ@TFDi0>2z_v*vgE
zN+42xt@;+aExdd!<rbwaig>Ny_N8aU%39Pd;^-^&PG$W-Ch1_r*Cf=>EQWffcj2!u
z`~x~M^cyRr)MzcyI1m^7(>jUtLADZHG^uEEh&%paomgv4w$cr>d}u_7WBv)9_-n1F
zlD9M;MF<p=gBd@HlEx4WV4)z0`)_noua(#eHPC5cS|d37gFDIAicUYe(6?X;An5vs
z2UAF483$L1Gz6o?JkuDyhCyd1zL!^iPlFyG_EV%b8&0vhP!@=hp<jgsisWR!9<MQz
zt9cKsB*W@NnzLcXD|clasDY(pSh`5Lfygj=LCBqfG9AWH4_>9@A(~qc$(gvFz;{{=
zOsh~Q5pXsc5S9GsK;MMPAF3k~o=72wWg1-F-H?bDYv4Ca=@bUDp2#Jy^_~GeA*{H&
zb{)>Hx<Pi4`WXEtET}tY{q<Rmi(JclU@;f=Cz+t~Rt89ZMqdfb=q|?)>5R#hyv0x^
z{oYT3_Z-%Dp&%I$mu$<GP@*Y{R+io;kNA#FuIf(ThA9}T+a2ytAsKHZQAOV1A03V1
z*G*|B4gEb4U;(_Rj){~0NnZOMPO>^zc7l2@=2AM4Jm>rCff^&Zs`u(KCDL`|&EH`L
zDmP`mQa8pdN~e>TD~Sxo<V)TuDbsu(%)@)8Z@T7@?1=*@Xc8JUrO_(V2e}aw*yhbO
z((|;0(J0b=xv>&uY{JPDJ$e3dad^2LMVffgy}92eKAMNrXlYQC#&bxd<XKI~nMc*=
z@{kk8%SjaE*-wb>g*s?AQ7pw1NkrwDPDt-XT<YADdr+YH3g@D`LsN+Or~X2t>=bed
zK|70irm!ew`xa8}2a9C~m{Bza>lk>yrR)usGzd(j`Vsv3dCae)wK`>CgWtx8zrmmo
z;Z_v=je#t}Ixgmb!7n1nEE0}^+0Di*PKQC;%~L6QhymZtY$v9L!P(7!Cekv9hAaMq
za$`s#NrE!L+=wzscsoA8h}ih9id4O*<RefjB9?tn!|14rLA~7a0|y;`tn8qP(FMSW
z`1!}PEtYUl&S<BKcCPeL=sJ9J@TXC26`Xo?iR?7>LCn=qpixfM>$w_Bxw`k7F{MLw
zM$J_)bCriOPSnjYOGD{K<zGccV+scDzA7_(9|DSONghYLZIRrGe`{-z(4i@hRvkLn
zj5x>s*4!e!OiLV%I@Grrdyae8;x5@nvl4AHbh8<Bj(OMkM?61TaA@U?BtjXfc1%(G
z8w_&Q|IQi61`6ddtb9KiMBVH=XT8gN5Ch8KeFxE?y%dkhU!_$DkRVYtdqWu@y!P4u
z4KdbTD5+>s_D99i!cS~88gGt58AQtsJ}{TO{Uk$U^5!CxqUWc9@N-<9fJW}kPAF|p
z>ADcWtNBDp-8krAoR9HIDo!d-&RkJRN&{DM`(0xwR!@_GbY(G@0s-yln}kq&pva))
z*-w!;0^{WG<s$K<d0It^$#E!os<=v?%G<PIae0FX#<f*)bA^_Qb+pZKt%Fco6<=kz
zi+~(A+Jv}bAUCJ(tNgb@KE-s}^0@jz_^s-5+4$V`pA(;xXk;i9sXz0?i;5PReHMw&
zp;5pp9#oG1iTAnn=j(ybIy5$MH-l7L#R!Ua%H}j}2%kfgzs8FhD{(99e3rOUj4!8A
zivLNYJoS_3a}E%5FWXnT`U$7p^^<uj_lp>NxrS2dPmVvL>RJ0Dj%7_sOFxN}$9{6M
zglvA_GolQM!BCRimq3(^VZ$Y{?}x5Rq$8spz^h8PB-I>1sY*E{gC9WuN-#h%DIpN@
zom5Hg3s98tU8_;>gT!{Ms1dcgkV>qh5!u|wx>#)^M(z(Nv4)%E+`^-=(wj7mLe{Zv
zn<U>prpKyo(%*d$h_%@#XID)t8&x*^5~5KwT}1yyO17A6pTN<lNliPyOnIj8U`lph
z#WAQ!bE$v`sCd^m^=V)I%GXuBHGf(8<Xz*Jp!s5yBEg>*Q=<DyjsZ;?+6C6i^@R&l
z+WR_J-mYo@Aw+qsaA!(-|MOL#t7dC~fO1CR*p%wN=9S;Q`eVN2gf07CvJ5hiq8W#m
z)|;KhRzsORF#g6Yl-)R4N;U$BL*|-KIRJa_c_a&s1e<8F<|R$hnf+k5NR}OmG|{!s
z<(|?qD`R&~7AIHzlvOnS+Z>ObJ{j2cG+&i96L&h?oRXb2`P;~MU@w=fIiS!f3OiM@
z{Yd<_%0=e4=@#?Y8ZE0Pj!$9c6dHLd1+`|>^raDI_BAi(4Xl#tlr(cnXE@9?YYFGA
ztumYxc(Vy-<jhTL5$BDMlAS&^=Pb<-nakJy5mUcb1ZNvN&}si<5KhSJiqWzvcly9v
zLO3b+#kA&Pp5o}IlW=qC(j?Ir`I?=1+N08IA#jPuB*k7slY@3X%A}-&RGOUWxFU}R
z&iK|Yf<sRe3qYh0Q!TfcsNLsrSZWej%Cr{YEK8Xf*~fMmYGPl?w-&E2=bcE~|0AZp
zlyfZFx2t}y>=7s+9d+=UzvwxxUN4XtMbZd7Eq_`I0~^~;67I`6>@?9Xl^zS-l(<b&
z?KR#zc;pjJN?%F=B!%%$t{TMSJG+RNJ@+ggd2M34<u()b`@EM+_X3ZZo+5%}853js
zIG02B?Ei?WPh{*fUe4U}KIS}$j=fb2R2B{-8S=(|1!K<i))KCsL@yZk94R0WL%1<(
zP{G3N!`G{wd)mj+Cm~3Q7b`h#L!g6jJ`}42l9b=59<u`6JR0-nTLh$@Ko;S=tX>5h
zGnN`W9;Br}fv!ybZYJwQmSH?>q@h6eu6+Hz3L7q#R6GWxnLysIoVA|zx9YvhhJnmO
z!T7Jq%-P;riPbafh2vg?2lQeXHdYR*Sy(c0;4g%y^%5C^?E1MvH}M*K9Srl)S*60I
zaz@RVmBi-XGH<^{4Dab>G0dy%RkN{Vsl($9U+NXu$h7O`vQA|g#ls07>Sf=^x9e-L
z;bTe1V+^0^<=x0R>*-Ha%UAvsNIm4A@(R<OCDD?yo?0(7>0BlNc$PI54JuoFVPa32
zmr2Vf`UEoXXZw=OB%87g>`0C^*<_A5z^*P67s4Sb!<`TPsj_HT*&KLQq$JCf=A(S7
zFB)Sr!()y}$(O0le>quYK2l>o&wP{;DN~S-I9a<ldTHj$%xv<5dn#3blx4%DQzjYN
zBxTMDCDCx3&pxZMTg$qPWhNPacx0QyzM!#h(T0d6Dw%3{a+~`i`&&<o^)kyzGU{;O
zHtR*+U9Wr8X7bQ*{5GC_YvaJ;mt!X96fjVF68)m#+aRBX4ijU_%y7y!;YHhBzx$Uq
zCf$^i;izpKRzrPtC3@T+bcog@bh$lxmFkN>yeUk8NW6v=-4?*LE6wYeur#lB&~T-D
z{6R8QXxs^Kj;rZ3ROk)>+FjXJ`&UcuYAp?Gx|<(VL&aE?UrWq^z`E#H`lTNNLz%|i
zEY?X?!y4FhLqFJu@{RkdY`CjZH5lk-e((<EZ1r@isRJ9J2C@%@YQCm5XIHaQsb|-V
zP`@Y%0N%7W)(&b|SXFRnE|jEA6Ip;9`+2^kRmf@Xl!Q%V9W*%(HCgai5NVE;BuwKU
zv|bI|e-XAM&`gf75w;>tS<J6YvP4Ol!T$KQ6mi=4AlY%U$#AKjNL{`ZXWHT*?P~nq
zz}S*b^Cx}R592N?|A-n~OOBKU?1~=CZ*?CvLrND_jEig8XOpe0>f|(|N>@0H@M~pf
z^R4XbL>EG>mg<ZbY6)i}txW5r7b1?9uZ`Sl$($njM@H*&oMN=CXJ%!cf|e{$=LF|3
zjzq7O+ya2@nS(ax<*ab(EEdv^#;*+w59xp~JP@|;JMvGf!9V0^ULdOIJNyO|)Cp-_
z)G;ov<(y49vbvUY175ob7!lXX&lVinUyFi6J(m6vQa>`imIg;WE<YK0Ile=QBpc~)
z&P0h3KK{k^98^De#Vx>dPAD3wBp#46uef98P{TD(s2!=(=WY0Qz_Eg$C=yBh2aGcs
z%7nh{EP=InJG%WQHv%C=<X7?doaymZGp8DE9zy;|&%S8G-^^=?PQ%>TgtU>4eLoCm
z>{hv)Qn~+#r}xEfOoec9kFrs%gz$*UHGbM)<0h0VXWe|*9d^d%mQKSO{bHI{JwCT?
z>FmVqmIgDbzmsS`!M%~{%)qUhhA&Yzxmv@$^c=JYV(>iDsavBorlr*#bBC7pPCRa@
zkE0|&dUz+0_H56<qndg!O21Qf(f;j_&t8YeCiP~NYKJyJfq*7r{nLAj?9I497Dbdn
z>43s0WdYz{03|GC_Rr$%O7zOSQ=(T&Fu$3A>X%BazxirKN|o?`bJU6xDpCFB2H1(D
zjsK72N5$sfP>wQbiV44w9p(8I%Ne?R?D86K8GciI9ni*07}&D?rcE*<uG&`I|9StX
z?dRrwt%x#g)#l=%sRKM)<mO(j*fQLi7K?$}{drrf=4-8>GR&FAgF(jwS6lw(<wZ&B
zGTx=Mkj*9@ZT>RPnP`jO>}$zRBaPVFv}KMnKP+Y(S9zS$8X2@X%iLyS52hj-xR2R5
zS0b83ts6BrI2sA9%Xv4Sc1N9YfO=0@Kn<s~=JBO<YiH+1w<VZk{hLI$3I2_AXU0a=
zCH!Nnn{@Cmk97fO-A0=w)ML||6sm!)t6Vo0{zUP0MOO!+u%L6G4vgDq>#mMnd2{_@
z^D)d#C3x6lugz|yIb*S$sJrVd_uDPeZ?f}#e!QrGjZ+tXk}+}lwu1go`$eb9Zu@)@
z>Dcnk1w)euxTi>Ny?n9hxMMA*1J(O;r<QKld_n1$V~sn5_6Ofi`P`OUBz4L-ms0k6
zS}^{M;>RUii?whsL)%o=4{Pp~3Vj8V_gTmCc6#kkzMZ$YqBHiTY;U<KmiN=%d}*O9
z?>e{&Y$0yFTPC$Bs_)c1D!t%v)oeLhX0R!DZs$EDypVG>ZMj&cIQi+^)qJ#cLF6jm
zva?KkQhL(?KJ>VtxNB&0(9K7^kaU;I7&Sdp6qv_3+qy+??`dPv%`5L!J+U~iz2|XX
zY7<y__x(WFoj^A^>O|OsG-I*gEXf@uV+QBk<8lie>Ymqzpj%r$I<sqWRts)&Z*7BG
zsjwO5+)Ftd0sn9>ZbM$Fvl(;V<vmLSm$}!s!LL-GM95_~I`E`P8rJx$Oz_Nq{KO_J
zzDv;L&5%E|E7cTOR*<r*(&TrX58f4W^(QJQ*j0D+(aE2Q*3uA8F@rzK6TTGZ$zaHq
z-a}|gF3Z8+!){7D&UV{_a!n-4q1wZBP1ng*-9vUwS<XS-!@N&z%eL8rzfbbKpt@^(
za`4J0zL0*90*%_7ee#?qKHIrPeCT;%@yY}B>Ymt~*WdF#EIkQ8GQGM5k2B84?r|Q5
zp4k7v8#vFnXMC8EC<FED?w6mcf)5@dp0K@|K|?DC#HXm>zK7T+Tu6)80BC>Z)CPR>
z5cGrzY5apXa4HC1ftG}_e#ak;+YbHRn<W!b4O-b7MFg7L$M=I>CY=Iq;p^Y<$<U=f
zksq8h8JXU`eH{*;4_)mO(Ee4A{!ijSBy@pKSi9pY1F*x@YbGHTCiX<1O}Kd&ZJ*`#
z4|-fo*ojEPu-h=wK2z;tdb|}lTu7;~qcEyI3+=+I+^5(w2w(m7I)>k2$HB%6Y5&5=
z^>tvv7=Dcn8|G)+F{me7Au#*K64?nBsEXFn0c3md0m=Eu46q4)79At2a<+mlZ}^b^
z;0<*2tx89~uKZY(6|SK23KgA%<(WHRP0q=MnTpErQWe;(>u6O6AR1usq3XP}@k8y{
zS=D?`-Hn_V#3HOFfuR)WKq4KCFrFpxo=O>w1|>d#MwmV8Ug1+A`)~Apl&b(ZVX~~V
zU&>}2HE0?rr2!nmyjhRG6nEMFqzw=WGm=maBNPO(cB<?1$@mXEQwN&6d~E4baTt&i
z{D-<eOIYtRIbiUhY6n;gqh{^=(&VBZMlJ|q?NU?2Pys4TNhcyqu1RoFX`wNoBm~fQ
zv9I0RerjM}L_bEk34re+TRS^dcHwA2(?KZ@;OydEdpuRVWphVwLs<zR?qbxZ><rBn
zV<A;X=ldwqA53Bp)<EVXLH8YpIy_EfknD5Jyo7Kr_XPG{_@&5w%;KpgIdx}5t~d*s
znh1uXm;<`Bf9S6m334hWH0sDWQ5rJ#n0tv&x$G0@dy$u-aAagLXZ^}X993xQktL!W
zWV|tt0L_5yD|%z(q9_p=BRb_^XucS0wz?vpl*m9K$(OLE93L~fWE}eNA0k6JpU3CT
zglo9xv5&&9MZh`2<Kw#`4m?2iN_g43Mnz*~oLZ5h_k<B5_SrAT*Ui*xSTrz8qc}u0
za|p+e&2$}@crXZ~<U~z#5P|>hH5^z0@@y25sC*92_`$CBCG$Oou|bL27do;ZSY3u9
z;o-Ojb&0&#!951wDm&FAOZZf<iX+&&lMSsZN7dv@1UcT|N62>P8`@X)%t~4E*I_M0
z5OzlznpR3b>2@a&c?!Glt$9(jU7q4^NTWiE&+>vGwYL*pHj#|{59NITKpFtl_a+cM
zajpY^6acV7r0aT1_>3$CkSE~)(&icI{M;24(3RUWviTW_4<J3Bk*xp{;t2py0pt@Z
z0PrFQkX~;AKn?&9#0CVxP@t<b0GSaC2*l4w<>x-}p4&nIRT9vq``niCY>*Pr2BCZI
z<=G(G=gWjW1Hu4+?lZvk89)O7{xE$80Dy1-B<Q)TXVW280N~m5r;}%co=x{61^~~d
zLxOH6{5&|?F7@Ki^5DT*?t2|S0nqi`vzi1@vp=g10QDDO;I8uk^;Ay+(cuuFE{<a4
z4?(14NNmts_x-C0kR9KCDhZU2??ff2m3)-R93{vmd~3+GB^X(}k;n}D$$|V7GU<LA
zAQOemt)JwpZz`E;KmEBkADK-Cxku+C`D5&`JQMlrJ96-fJ^`%I_hratn_I-$^5e~{
z>2fO+1jYr?3qoA^+xeuT#u<X?-WD_l!F7KDL40^1bAKv7WtBg@19j|}o`U=sS0OKS
zJ0P#OeY{X1#Bfgw5G)+wia2LMpD{^2mVRH5X`dI-MhjT-I~bF04|3sw3Pex~Byl8X
zB%LLrBpD@TSZKM~xyiU`apft$4*=;y^mA!I`Vhqq1rB8bc><Lx#SA4UIVV*;g)`+1
z`3)5+MHHnxxjfYv1tVoSc{!C0#R(-bIWbiRg)Zd^`3jXF1*i%QJ1D+)y;|W%FomhP
z8s!haE#m++V)eTcQWa{TUgyY9L-r~SwWAUS6-EnSFLyjc*(wvYixP@y8VkSLk$FSH
zDmk^C6546{1D~s5S3|1G#zO}uN_<1<S*f~6EB#NF$%Ohl6^OGvhb%x&P@wjhwLyIq
z@9ff{!1X&ffBsRRa$FV8?9d_mHKkin>zIH+Mit}i%pvbJ88~3XRxMRo4vs3!&;Aw4
z0JE(n0Vh>^h}}6?Kq`hDcR}c<A@fx>`+2UkR3bS+(_q%Yq*WRFZLY9XtWh4*u<9Z1
zRRa4_t^|PK#lI7Bk?fmmt2Ci>OKleVUNk*hk~xn{sf9W#E{gh&T9i7E8jE_0+L1bf
znx6WITAR9+8iu-y+K@Vynw9#3TAI3;8lQTB+KoDhnu>adT9vw<8kKsC+GdfQAt7aS
zWYa+Fwd%l>9lchlv_07(fi+ZpqGoUD=CtiWqwJ!JHGF-_LLcE~q-|g0r$u#u37XX0
zyR><1d($Ys_z9qXCcE`{Y_{3r5`_T;eOHZJA#S(B5HL~n3EAPziiB5~#Ije=1EGPi
z#W?5#!gzV6S4do@-)=#_>Uc(`X20_<KTGJlH*H00TaPO)@aK4tM?A*wD=+@<@kI!l
z<x3D$ozDvFLWdWullKZVZ-<Sa_Nw6jiQt|xb_krh=?VV#C@zHh&wwKYFZG2NlANy>
zjGRw~@8omf@zkc{<!Qkx=`CXi#i{8k%dNfb%Lmm}np;F$<OhldlqZD67hcHLz96Xj
z_7&fS)suF@)0<U>TX<X42j1J(Sl{Vh&?MUvZYc~1Y1&T#8UZ=;*9+hv`!3G=<LmeT
z$^pgK>m`a01lAuz;XPEq|BC~hg4v4zxL@k089w%_g77;XUQi#Y-aGjIj}F$4D`CXm
z5IjCu2(k<8ljiBISGDuWnp6ChPoMpc_KC)U$I2BYRQO_xcb#`C?0da~@W^bgkHw^u
zVb?{A#tnF+bt<$bCADd;^(-0|=2qgG#f0sVrSoAL;sMj!VjnSHk!*T`UNm;4UP#uM
z_sN+)ol<-G^X;Ux-e{PfI8M)lodr<GE(FFY?!6hNjGMHGe+M}P2$axXp=;+w?SIkE
zv2aW)n?Y_;<lHk^%GPvDv7RAp`sBQ4c;6t9)$AB`Jmt}(i@Gc1p_GAlz}ma#0u)bn
z{4O_5z3+a{nH_mnzE5xwURdfhZ!u9K3SY|exnR$MUnOdC;|iBYIHQPaH^lXOdP%`<
z_2t|>$s<!AVV7N>?IJUQGg4o~6<({#O76^_m&zxDKx*c$xI}%aVI~TbTMy>0l0<!#
zVJ2FWL@d_fP+XH9q-uje_5Y)8dHmJv(93(NdYR@5R>UW)9S1c=K;ysUK(Kr>`@TX^
zFQ;A1=dY}Y7`e2a{cD@}PlJh~efEt<7iagQcJ9rAfp#|Pu99~C(3Oyfgz9crlM?ax
z=ljC4Y4#?SnLXE~Onk>!>uLI?&-HswOIf^*2?F_12bfKoH@iAZ1>h@hqTf`G!~faa
zM_KsS=Y5pwPuGc@-z|(thvWD%Td1EC7=icq63i@<IfJZzS15LgA>*@K{;h=ZELs8i
zodam?!mvwE?GourDD9s^4vhkZsCx(=YO4EWO;W^DQ%zzs`#jp^_zpSN6C+Kc_4^!4
zWxNgr#}j>*b{-#{4~UkE!44pzUw-$wk#qm~Dde{Nx16Fs$>`7X|I5unE#J(&uTnJ1
z=@*NMAjKEu_zNr8IQlm9|Jo-0(_r#A^z7`pYiA-l#w?eIIfe*iN;@Vo%)nofXlJ1w
zNO_2;?&UOT%<Ka3w*yB%>)*0X>h-%SOZf|qLC3$f?-K>e<ae!?a@-s<j%Q$86*7J^
z|7UNX&+=cNckZA+U5D>WP7a4F-fW?9&W{KUjxTe6FQM}FGEtr4kQhCFt>y2kzn2hH
zcFUJmj_8oZFadU~WEh8cC}No0y3Z8IrM=YGE{fWv@laMhz|$^1aA>vu711Qgd4Rq2
zbHSnc_*Yt!H1TBL)$65FH;3}$$w$`@sQa-zCja><ysr4SoPx|W>d*7}|I5t`b0Q;n
zIQC}?|5iff+!A4(VxJfxzN6*u%D<QJzu;#7@hLp6__v&bY$xK+^YN?4QOyZ;t0EaS
z`#9D9@taV(K|6i+`QSFx(S3@i?F*r9ZKO>_WVuG4YRN|N^cmJ4Ej>JK286nmk>zU7
zYTyLqKhEi0CfP6vZw>2h<`<&cCy$aRTJY+P8z-vWP~>epTA7XH=e<6htu`F{dkK*v
zX-^e|Zcc}Dm8N~^e=mXWKmN7+zc7VCNB@>n@EHE-RFC73a;M*7@-X-m98#8Xv+pYv
z4RX50LLxB!$_l)cnZ1g?wu%2Vn1oI17Y=O<zXF;hPG)+VM2LUoHOV9#_}xdB{R(o-
z6UZ*URMalDa40RCylN8S+^1YB(R3)bo;+$2cHU?3kRhI-a;QHZZ*7vlIe_9Xl;2PM
z&)z=p?ej0sdn)apt^>T|P{ij)wv3y5U#)18Gc1-A!GdqhG5A+jm{}_Abp5qW{HMWm
z*bN<<yleV^vrpQpi*tbC@gZTKMY{}jU%2Tb@pSxsaM^^oV{O@ZZIj&00o+nyibJ*a
zcxjVt{Q=5SQS&9UhgQa~r6%#4eSxKN_{&UzBKe5;|KvQOF8q_h{{wdz#rV@-qW<xg
zgT_*Mwy;7`Kc`bHAOZm&i{me>VB^Rc(*J9l_)mlRzp(uLkIoSAGUH#KcW%KyU5EQ0
z>jE>q9G?g{4!qgFmr%LKM^HE3E(U{-Y{^#f_Y(dW)&>9ZDO{`gx155^H1N;!x&CYU
zS*2*4Gbk1xL4*I9<EN$aT;X3=F+QtR7G(98Hu0YZbN3fkM!|)n55sR!R}jPWzaKH`
z`_InMRmHzP@0+O=f7~swfTYgR%~9RHJ<3t_d}v_0kMAW)x*r&qOZGfzknC$KW5~F!
zH*}LrWva{byy<_;FRfdt@0Cryzc)W9XgkT^>l3Z>FkNJx{1KVLb(OuRo8h!_`6+U7
zqhV6at4|L1#&_=~B8A8CtY&0`QV!DF5aRe$1J3u<-={4o%~*cgXf+h%u)2UudOC+&
z3!cAsa*f!LgIqUUhN}|ZkD61-Xxbk3iA5Q&UsmTYb6R!mvO+FOoe3JR;Q3Y%BO%ib
zMS{C``_7MXE0AS~A&A%W)Kk2zcXy22_}*g@Vtv0N4>`W{a_NN^*R{K}XY!c4#4?=u
zGB4#OpL9+!Lq=%F8->q#f0G4C7p%)a|A}wibbWe+v*@~e?S<F;_<b%x*RGeEG09^?
z)-?5eLO0o?3%8(UeLtmqW-ceq<7)RPtgOx8^13HstZ@%wW7Eg9Y!~jCcH5leCC}?1
zLAA`xa?>3pWA1s$kJD=EEclf8+If`!Y$*qINkISMHt9%$)%bkReBB>6wl6|UfFfPM
z_#yYqek_H_b0RGvvc+UGoQ#Nj?MA-o(ceyRZA?C**<i7B!<xvstD(4W1o!dY+0aWY
z-LX4XHrZ+Qe5dV+RaeVv^rds_`8qXt$NgxaeA(jxD2xNLG&;_;2_H_oZRDkrdn>5l
z`MX*i^=#RBnCJQk^wsuU1m68b0`izcDERHNVR@g4N{7RI@b~KkZ65pmekLa>nFv9T
zyHcB`<9v&qMfb^JmhZhpd?x$M<*oNW@on1nekM^xq%vJgr1Cs|KPXG}xG3e+W!;HO
zSmp!&NHNtF*l8L+ahdKPFkGOL<9{Nq2OT%zmkV4>a3`#|3{jVR?n#Tu@swrU8Is|I
zr*dAj*pCU`EN0-hx;>#gi!VElp>Flx$2eKK@j6aW2wv^ajJhxP7X=-sJ4{NKH*d+R
zjtOiTC+N5g1|&RfB95gvJ`Ih!?{V+6Jq#!4+OByee%tT2M|l*XdT7tsohUY4aaxL3
zjT$C|9FmQl-VSU~juK|{MF<d44HF7_F2Y;iDc|1-wrqrXwSlWMKqrS|g6BAQ+~tjX
z(-mt}H|ehXK_IuDG53pwllxd0=W-3mweEs_?;xR#$4=S~f!E?okmmq<M(S-S`<Pmr
zYoFUqy4P54tk(t1q-Xx(RR^M{(@7c37--dW#baUdfJ*oFdqSFB?;?I(8$aRgvGjbs
zyAcE#$7}z)o51bqQNhvUma|qhI2Hs+y~(J37)f~SAf|8mx-2f=3cgHZyx)&nsr%9y
zZk6HHC3<jte|w_CbaYtmv6`1qlELY99G@V2-&Gp6eA5QG3j{sv?mRtNdAW`^5vO_G
z(+@54*5B=!+B}Tfg;8c)#~<k~UkxW@+{6r!W$1$27S7$Sbs<{=#KeMj)=z%C1zNTP
zyn>!X8QP9BFn2A~#n#~NLH(Ig)W>zV-i(WmsJ8nh5R?A;?#}L{eII9zsnL0VNKV0J
zH{0H<<Yd`g>#Bc7itEWRGG@ASS6|s<cjy@3#j#s!kevHy?uK||tH-?k=v?(>EhC7+
z`rFyl!u5*%J><5x@n$n-CgRBUJXcywhy8qzSJ!SQ;N;t0%Jy*MR)A@m<JKX*j_t-x
z*(73F%Uy4^b>mZ0rTAEr@%4ym>((H5efrho5SJ5{cK5jR7NVFl?p+eK{-q!Hw{zx=
zKKUk>O~FX5%T_QM=JEw*knU=!jmH71t52~hL^u80X#elZ4Sq)@P7KgZ9A=jw_=6mQ
zTf(C4&L^A18);qjs$;}YDxO>2v?e-`ZW~?jT<MuCBhQtywU>Is?#Ywca!)bQ(_)mY
z$HC}IvwfmnXPa)@Y7gVxBF+#08PG;|`EvahZpPgz=LGU3Wcv<uv3|2+e^B1KPNnNH
z2o}7&IGH=^38@yiS`>wN4pPaxJuRx1@tJP;#@~4D)t|J1Zymi{M*=o*T9}qE@=NPw
z(;Tl56I%A=mmBT_P+Kpo7AWZj!G!XJH+L4+?h7l69_qLKti%uZrYEi=@somAOHoh#
z0XQcfYZ;5DZB(P0PY=AD1pzZ48*p`b)BQQbaVBb%=ctj`<t77iySJiV_w>Wh>tV>|
z?mP)c&}L6{`Si(A_hEOmc~l(|Ab-Mhqg@QS&v$slH-)SX2DPznF(!B(R&nY;wmJDv
zFf-b2LkHY;0Ma#KRK#!^i>E`l6_-Ky<58gQ%0-=Xt83S%-q{tRZ`1SR%-6Jnar$Qu
zF_S1ByYd2G!Jkz#zV12BEVJF082TN?sgtpqCY$U;qzc+^m&A+<?hquKKwO-SMp3tJ
zQEW1987(2I1><gB8)F&Z2t$F>kOiPRlF#I_i{7={*zC=0!HLUBpUzXB{K^d?$a5NT
z%(Fw1_`b)(29guI6A7uVU*g;-#ys)3%eV1#zj>0RI)0eC{atNy-<melwwp4>>p5~E
z@991vuKRUsTO7pq$XPG**xg7w3fgkygxqeA>CT3?oLhKZ`NTvy-z;6HE!96wSK6dO
zbV29iHUYZ)#zT@B{LXzTpti504XTg5zVL!I=4XrocWoXSUK?(@mkC~W=Qw2z8|9$8
z<7R=|fF3W``_7poLFc&@&|Q~>yz7^XlycBX+FBhq?T`h7MvdWOJ!8}DWM69Ywkg=p
z2C`W{^R$=)y1!kQ-;7;>tf+#(4dwK0H_q||kWxP!50m|%v9=9$oRRs9E8xM<&<xq1
zaDxoV3ZCCPTk%5j7o0teFMc~s-sF!T<(O_B1@(>;8E$NYK}n1#8z6{enoD;>lg$~{
z$x{%gPQ_V~1?Va8<;v6GPTOTf5yWb<)-WYVGN*bMRfqZOnjl2hezd=&vN^UOUEts_
zCMKy`4s`wyV_(K~vp+P(x8qAY%6*ZlZkpk>eP;@pEnzL^fh;D?XbD(MH|}WJZwcc1
z;4C>zC9BHoaNR^j@t(ApLgpeeT5sqvJr8t=d<1PjF1Zht=CAH97+-qu-7^q*z(lor
zdFj)cMy5J%_uq-FZi$Dt4~dD@e(iqMa;od$b0XUT(N0YY5}rG@bH@h1!fnA&?`7$B
zG0Bzax2|H$vSfCGlN>hF7gPUEH)o7XA?dV^JQom0k>wwJi2gk{HS6NX<O25&zgOx(
z+Cj2KI@q%e+?cVGv~mN!dprgU%B&$W*(`ApAT8(myvWShM4}Kbq<)73$^7Q0Puux!
zDEOBk=z2?X<f7>&<2rdHrKai2xPXl-A7@>RC9X}gCW^XvF_c%@N2Fq>LHv^B00MF4
z_oT0AZhdQSGGpxqR9$%AZZs>oO!+KYmWiX*&<P$2qQ#&a+Z8Hi)GHLG9SyulqE~gQ
z{7}d)b<06*AQJAp7{aLay4D<Js`v(Jw0rnRycB-2`XrXUj@4Gz=Tv>qNt}0sG%=Ym
zey>%e6j=K1$vQ#U)%;B?9qs17TOj1~O3U<XqoqtYu(>nfeBUIzh!vj0E6J^VK8>00
zRcDUr2J{vN52Y8-jTP%R^7_<vhSug~9dUk-E<WW688#d$lte}kKl>Fkx??nPCMrLa
zjqx&+^lF!RB%w`Q6;a848$*md9q32GS!2QpSQHn!&yGd%ZE9fT1nLnE#HFOM><V5t
zFV@QbR;WCpXTRb2XlfVlrd%OjIJT5@IEE|C=W&jYV&y^+7;@3kb2r6FoO&R`)QqKf
zmZ&|{CT^?0A%Tf^t*9|T0*;=c7T!X*GV_yB>+TA}E{;kSK7yN!P1YzExSqf(748|q
zDaVGo<>ow0+k*v7;|1oIBM>8u5@gddA1qF4UXhgX$2n8?BU{>fG49Fiu}YI{bzv`(
z>7S&gRB%s}i;%vtYT8CA>^uG3#{`av$4-XJea{wcF`t1Q_%7`i9S!Vm5t`a9926xl
zLjugg@)+12!J^r!KqkC0du=9xoUq-kA@jGH$O)7uI6<!Wq(ch1>v6^X(`}Fqp4&IY
zkyyN@GPyD?UR`mh`06$W9f7j8ZhCuo6e#!?xNKr7aM1<Hyl|~caZq*1Ub-lcD-ZmB
z>xz6Vg@m+r%Y?P2H719$_EqSeOpraa`ZlJ6=HpcBC3oEqdN*{B_LDAhmWw)5v%ciC
zA1*2SJ@&Omw7B>W#IciedrncF`dB)%%%y2ZTfXD(P<Gv#P+r+6?W0p3#T?+Jg==#J
zXp8=2Q_rw=({er*Z<}DFM%YXK@FlzZIN&V-rwLJzl&4czBpjb`g8U2f0~|1hbO9_T
zW7$=E0xpfrX|FNfIPQF=p@v*@Pj}ied8A+t8R5{q1GQ;AHar>k#>9hNr>ZSN21%DO
z8h$3XE_3*=k}uy`M&2)qD+qy|b0gow>K4oj4c<9n*|^KlLkVI{FfTobEX=-p0q$D4
zD6}Dm*LytXs(BH2U)?q4m85Mw$4N|!jLiP@@dXD@uNR9CX3G=|w1nhJOVS(UXi`5e
zwc{9hLUv5)R5TwOiEx&r?u@q}(T=4mFer#BDI#%9l>0|gTDe=VK>$(YS6C#F5EP;U
zcU;krB8=>ZnTz$40*^vgYxO%0G#Td?LioR6e*=Gxy#_++(}j-~K0^!yWISdpLsaof
zGxy<x@`uhJ;WIEIF57$FuT1`MF>zU*4BE-2QEWX_S3SFq-;VCPhqmq7%<|4L-2NPZ
zP2G~?z8dZJ**`D1jQizjb7hdCOigLbykQt+sxaKQ%8l3<>oLFmm0tRBN!>uXK8aU|
z-@J5|-cph0IC<m}UzBZ6%QtV2Zer?6#(>u7rYyTz3~lm;<KK{E@`;W4-Tn3v*bY)z
zJb|%DJ5yO~8HOb`*Q;u-o7KHrDDf20t3LEhNvW-#!qNM=<0|V8y8?Ce8CIND`qV~-
zfR3M$`?~<a-O@m|vXtxj<W@8aS#=TH30IWcc~fg~_k8mr)b%=|deJ)k?!&jkg*P{A
zcLQM+;@>}~eaXYj*k*_WH9GdG)+vGR*nG8rqdIlp?(fAWe<7I4%M*1SEyewrA|%q0
z=^)o`E)~BNSir6=Q6X*R3UQbUbqX>%c|j?ms{B!N_IfjXuJdSZv*x->hn<{Rw`u9*
z0oLNvz?DJ%P1w?#E^1FF<McPTNAt}ZVTU@pWqN#4ZIN$lbwq2pr*h8%s(3%V$wQDA
z`5cKT7l%{3G59LKrj_P>mz$mFoPW#2uzxilqk-_6X+SQs^IJYv`ts1<CJb6%a1K+J
zOn?12M*-iH&5qL&IAu-MUX||1$gO{>xuuk@&YSXH)){PXa%f`N=SpzHf7r(HmLYx-
zZGHs#0441(#(|J2m;jYq0SUu0e6gDHt_KqO&Py5AjD};A$-Cr%(~MxzI@_modqt-*
zn#9Wl-YAR^jfS@{c}P?1Mt?(e3)N+rqI!?erNUw5Ba^UWxj*<)va31X;VU28EWA&|
zFgOsUvAzPe9eWG!`(CKVR)!z<ub*R`&gg_68GF+(uHVb_Ehjov?%_(ZQ|o`Xq;rpH
z2EFsHtPori0aFvrn^S?P!z<r6Um6kl>6;e023&o>L~!L8GrnW?ysN+pun@iIu;31I
zOGl~lUr6FoDKZr=FK@-oU%6TgO^m?GSiEAwJccmI*{xlqJW|cwUJXa9LkX16p{nXx
z!ENtM8Tjg^(sJWe-2^BB;qD?^KWRScH+z^H;|NMGS+Ga2q;#3bq_RSLC;}?K;<!!t
zk_+yp^t>7jWgB$kflcOX=tu^^+wGkV!k9^HiZApqY|IziWlcHywvpB?_JauxB)DV9
z?+oF2$8h?vPf5RiP1`=aT@s6#Wm~9VMn5q1<&o-@-P#`P{MB>(LV9l}m~(l$L@fC!
z&mwbt-wmzmNRQCed}MifgD3X<&9pgeU2?P1V@t1#M~-~EMTX>BjK;|3b^x5tMaODC
zH$Po;th1HTC`*p5VPU^{i9n2lb(@WjDF$sijQH|s<0`@Bbtr#Foya}l>Bz+zUgYPG
zd~N8s6u6F;(L#^A##g75VoTf0mh9#$w^8X9uuzDS4Od0CZzy1rq#46HJ@MscbS2;a
zoF2ZE*#EYK<8;N#yHj+S`t<V2v;88$aUlH!hU*>MFgWo8WoGp|w`e?xE#1a@s`n=)
zF7CM~!oSA9fb4(mM~!aseRL-4M14U8>aenSJ@xJr<0mRuups@tf}`|j`p+dRVHlbp
zda?cHdQ(SGhH+s6y`NBqi=NnrAA=6S(7EBIDL9!V6wtX`-fu1*DY7zOP`_1pGUR!c
zD7_7eS4YulVEs*H-?MOsX18prz|iKhx_g88!5aq51nvG#JDRK?*9iXn#hh<Ty=uI+
z5Eoj^JP*uy-nC6B(?*f5{64yr_lasi;)Rlg(}cw*Qq=u9@A7H|8an-(_Y55B>}wxU
zW4N1^$FV7jYNmH5BT%326~2WQX=ka>-fUMLyem_Y;NTsfKU2C4cqQAl0W(~=<L2Vv
zk`PrW_SPB8!_F&5Bnm^`qqu>yxjuDFP|nkGK1)_R2F+V7P`82b2%n(wT<uLZ^|)<7
z>AngBz5Ra6P!l4Jz^9MuolDSR8>S9dd`WRkL@i1<wIz*SF2Y&GVon{Oa`mzmEZZ#1
zlJb~vlM-|LvR`Q$ygJ#i>9&oc=aA;Fm0|1}WUXalui3<riEDYgiNrcl5#5!Fz44k(
z2VE2Y2Or&Pvhr8b#hyvpg3kK0_w-9v6|hPnB}g;&zEko09&aNMHm}xOGGjJ4?UXyu
zOmb=~JtWA8kM#`tfy%(O6bw?Kv%9f}-DS?xT=ASgE;&EO?>_7`?S+n=+w;{_)9SiU
zRV8e%1rL&8Z#L_T?=^OR4*lHuqA)63-QIwkIYm)Cg`PVYgh;-um6}{yvIdf`%cG*D
zC42Y5Oq(}d@T3}>bXWLZqtq=xZhiJp9eQkWILnB%e$+&lx^wGrq4O#tSY7Q`c=5+I
zI41cVH!Gt}IwG8$*))@U8wGqL1`(3O-dAvRg-lqqUTu?hLrv)zKfZX*%jjz6$kozM
zjeVz<Sa?Ka&S`^-a<*U<fLX!PyM>j_r-trlyLqR_^dS_|+;MfV)lQs3mXw=Me{pAu
z#`<x5nAcgS(D^LqrEv8N-m$OH!Nf4;zmzS)z9j9byN&&N)vwIXolxM<v_nS+jlvtq
zlr!>TQYPdbxrB|Tnt*bMmDMtr;uiS}mOKP2X@}9@p1k`ph`|!*$QV!cgB%pDZrtG6
zZ_Q{gJq=iqagh)NwxUgP(F49TBxz~%Ym#pt$@aNcc9D^GgsF{0{d!tGYn!p2bs~|I
z|M+_<<c)U0%@ymBt6wVNdH!tlW21hSo>0it#nj^~Dq0V%{_gph?zU#UZ=Iv^oWV2^
zd)0gJ<hScmt_aM7%<JR!#?A${i*cS=GR_ld*;EV)%6F|gM^$c|b4}G+DhM>u#W_QH
z9o?&e;Pp_N3NIFJPGL8{&o=|Maw>V9OV(5Mu~+Hpd^k7cOKUbW3iHE0=CbMqWv`fO
z;Bs_?ju|fq+)(RnWkm2eMn>Sq(vo!aOoSN12QQ4YGi2%CDB6YE9lkDoCpwKbTPo=i
z<LyVglpx<7_^BU_oSh&2>5O<hYXD8|%gpi7ua@h2taZ?``2u?E^oyI(X#dAqX4p?u
z5YIsDk)~E#cQpDiAsY|5Cu&mT!5diuAT7K`G8<RJ1NVm1+HdVno?=p^gli7vWy^gP
z15P~g30(2@i9!$bE32>$CEDVsf{bs4^<<_AxoO8u^TU-OLL1Wyjn=#5){*4q_1>~E
zs_Q~JDdJ<TUBVhrt8ctrGnE3D@s<gG(acof*EpW}Y!ln}OyzXTCKn+EGL!!oYwsLf
z+0*rl2a{yt<ixgZClh00+qP|EqKR$WwkEc1+x}&~&-32*`Q2M@-G6SKt~#H+da2jy
z-Mea^)4d`Fuo+9?U(8Ee>`D8hF@_E1D(ziw@~9`K)G%6Mq5;*^E{HpA?OQ{bSol1i
zLfZn8^ez$tKLZY0G0YZYA&}yFgX_wyg=2GzjGR;nj7LL2bY9Z+0S3FTH!}nHXM|}p
zxrOuQ@;)5F(-X#;5$EbFCFwALbvts)&6^Cki`wO*A0XNfMq4qT^33^?F+(N*gSS5f
zwmsQkckng5^9!(0M%IQ7j`l`+R{ua7eREhS4h9x{di;N&20pz8J_|jY7Ct_c20kMr
zD?SS=)7J$9+ZUOM<u93C1D~0d9-o!*FBAJ;Iz9Ur;`l4b#P}C6e{rz<BSrs3WM=;h
z8Cm|yu`&FGYz$wljP&@-jDHm}vNQg3`443MV&Y)_3pu_ZBL~M9WMck;U;O_-j=x_0
z)xyO3*9`N&;FlNwrm}sx&Bnp-U;OO<nEHo_<E!W2TK?*0V*YEK`LBme?0<*C%<va7
z{<X-=^mkbQSY&4Y>o@b)c>nQ*ndPrlhObB9KbF~9{`&KeCicI>V4`RJ5@%=s%f#^&
z6)pV#j56zgNBM7L>Hmk%my-XX=YN;@%FW-b{G0pVS@}O?zw+}B?JFmLlktD_|CiRU
z?ED?{-?aSen}hjp2EO?JQorK+g}#RU5BhhAzk2>9L;p9Pe*^h9g8!2KSIqu9SpOLb
zwl7ux%r|asIuSEVM<aVW5lcNsBOxOL8$%;HNh50$N7Jupvhni5LjBitbxqfbl``+6
zM+kc43`#sERF#ie_hrbJ2Gza`Y31=Hid5jIfnHX7dPoovS0}9AHrN>B-Y|5kvnfw8
zd$<st@0Ij0Xb3Um_5i#4PG$g!rijI&^ZnEO2zyw-p-qwrCh}ZVK9TwL`+(U4wAT5Z
zYaqn$4ma41B_u7cd8@65vo&}aU6T<pB{^6x^t+jsMQfl`z17y~9P0xk9QP08tO!ub
z7&pc|5!kp><fn;D-+1cw@WhZSN)YAEd7~4~hm*G3;*D=C2L4L1dvN06V(F0i=|pyk
zrg29cvHdhjZf~6L=D}!;Bd)Pz_aC{^_iqz0bPwXr-6+v4^08x<vo9cvHu;i`r$Vbg
z{KL4XkpP<?O{jUHXl?uD6B{9+*X7AplJly~S{sqH&I6ZdTfo^G|HJM6cRu{z!~d0W
zCI*gwCxZc>m4Stgo%#QtkTWj`UB&r@i<QH%{3LNP0bMcU-WXX@1a*Am;TUiNc>zXx
zNE!mLm?=nn7Jpw6{*H&J4qr|TS$~v{B@~Y?%J4;dumSfD@;$HD^5q!W_NT5-o=vaM
z@;$E2rbTU!46g?ck1QU9?~sHN-917mZX`iO?mmcGQaMD<2qfo!CWooKs!J|A@?qDc
z=C*6z((4>_xZLl}XBel*4Ie|>-~4&#+UugnED{mHyg2pOmVP%BL?Rk)(5Kvyk^LgK
zJH)OHGWyNBA>=+8Wbl*mW#ehiH$Z6TCvkCcsse|P(*0vzsPU(m;YXqQu>Nc1^QAFh
z{Q+wvdSN1q!Q@`_<wq`97NRhxi6U*P%<vw5#Uep{(^xTA(?eYel6~lf87boR!C30Z
ziH=CtsqhEq9DFjQ=$==`-m|r6%jg(KL{boZ*_mj5BynnkmGgLSOJl!x4>26R&)Dx)
zH>CtFx~xaWun=02TSy1Wr1485aV+15$(#-^>G7SB(*<ia0d+gjk;BP~bOndm?X1FB
zcFvUI$K2;zR2u7=8SuMHB@8|vz413^CQcW8b%UPcE>eyK{s2BT*YyrGnF!n$B&Y8L
zX3?G<HzdQC$h0`Gr`trZIS>N2(oiIkOH;I=QNNdv8uu6bLYe|`=@}bp;a2m9RsyUE
zplOJh)YZuYSOEiY-EK~EC!|Hq$Sed07USr^v18?35?IVo1T-t<W~t(fl38+9iR*Jl
zLDQg1M}W2rO`)#TX80a9Gc#uZO|A5%S=4V83A@7L-44X6ExT5*$7A@^lJv%uo8p^z
zCkRuG)7lTC)th6<uIR=TBGVc1XK$_zZKe#hO4jo>J1nn}l2!1IfZGRlr;KOI(ig$Q
z6Ho5wVTWG!HBlnzd6Ccb+|~3truA3R35;|}llRys*251(nN2+AxG?K!oqUd>^0FR>
zbxt3_)f=-{hA3->ih|a-8=5a0*iY}8#nE!=SO=4@+)dLD8Ld{b2ooO5C8v^)^5-dc
zS}7mQhYT!o72a2YcIZEYiYygGGFH+Zkk&m154i*=`1?$^#6OZueLFAqUP~u)+gbOU
zOm9*$PgOr(W*c4{DfyJNuDB`TUl0&9qnE;24_^}s(}y|g!QwF;aSDRlg-Z%6rWRlC
zWhHpx9{7JwP)qN}UGwL#i(U*L#yAxQ40-jelPhfsrjYG(ZmYj{S|p&_%)a<6;`O6n
z7aF$yc+1<TfmB<tv4}fdQD}fIEws?cy3Fr1%y`MnVBN_2sh#v7u-fhpg_2bo`TWu7
zeeNw`7I*6)!7$%+pK-Gm%FvV-zeUKsdHMe8iV@(geSNtTf6OLt;&40sD61o}exFuy
zEB<kz=-jHg!a6ehA?>t+9w2Hy&Md$!u2o-F67qmDA4XY<?4Z6O+#)Smz&ZP^-`g60
z(=>#2$HdlV1o3s4VAb?=xX|b4@rwCLp%s1_YmEKG-O7go>?BKAhmSKI2x_%2*e|Iz
z?ZAx2N`JUU+Fd4P_^;EiK56eljSI`hv5qMBZN@)QW>@2;cu7~qy;K8TzT2)icQw3~
zNxfmK!&CDq^Jb9(-KR!OKqP*)vA?sm9^W12*7f7IicRK6OuUUqr<f4(W+`uZT|BQh
zr<KV2q!+$x|2l?BE$sM{Wpxj#Xlbut@{V%_q+anF)%9uD8QcBt%>!Bu%F=DQwRFg*
zKs!FgDhENdNk}={B$vvI^u8qSa4#@oI^Sg1P1=<S2Lo=5?$w!6nAzyFKGE#cAv4c+
zHYyUX!=B}g2fN6dt#~fYO@uc~e9m~{QOW>_mIvE<-ZU#)7gO6IJ29xI$<JIN51)l9
zu2PolXei%(En$kXFsI;r*WzL7`>@XMDf@UbN%sXi^Jz`Vd^7NQu%n#y&Xrz4t5<{1
zweJXJwQvDN%S#WrAzq=r$R8J3<9(829p~5Lu>u)saCvuHoE56@gQ^cRoY^(aoo;%I
z<I4l1)&+)E?fxhD|AHT%tj`#;TXavixi9HvM?SY4v!Nx2U1$keY>|_xACoD5lga;^
z$iJn1GQ(y+;ywOT*?;H-c{ogF&C>Vt^UeS#23_}s^S$rd$8KPTNj_OL@YDXm5Cf5Z
z^O?zEP2=+Ea!2sLyY-)%{?3&D<#$}g{x)A51TgecmgUz^(@$*TW_p8{p@c}C18lax
z$k0+KP$_?NDp1~M^D@T-%MwHqu}S5d)%z>YqP9ji&eBecVkO6C&QX=f$Q#dW<>!cV
zJjk{UZ1iLrPu5K~(KTe5Y?^MSzsyt>qV6_{5ENy!%Bn~dc{3*mD<DpgIVjJR#@Rne
zpCmCOaD+4rw=8vzbWU_aazJtjkID?uo=qDpCg)@E0nf@8@Km53^^w;VY%XGH_~4wi
z`n-IkzrR2DH2U;?zzV%CUg~_-yj6(4tu_p1s}u}=?lEPQnlV(WsDqxf@5*hQ9sV>L
zx|4gEe_1c&e^Gid_loRPb2)`}iq<Z|n}R<<x`#x6L;vMUcp;w3z>2{fA1sHvZ{SIq
zi>ELhks^RJ-Al+BZa6LV3u#|JJelOApIeUZ>m=G80lU~{RZYsuuR6o){}c^YZqKip
zUp!Vxb&L}~V@i?Y@1<}LLnQo(EEn^%e6&4D_94O$&+>VRH+%FLse!o&(TlQk)Fo1^
ztP(cU^tC^o>)qoWA}_4{WY_uTULg$;p9NetV%3>nC(8OQNd(-Afz`xQ^ph@C+jwj$
z?tRERDWwFfu072pQ)LePfc;%2b$5?)v)cPQHwgM*GL5Uq`hla)c%rzXB$L<bBz`z<
zWR&}2=J)l$?qC##m-BRSZ!8hi&8@vda9eFi28-jLEq*mn2t(t$lavh_nudtHIvNJr
zK>!X0E-EGf+mQ7*HT%v}ls{-aO?jK8fI}qejAArOf}K)>gR<SZ8ER$F^&CYcxx*?S
zI<|pKsFi)jiCSLuOwi19($S-{@4|~?QqKl;e*pJL$}Nhq?J+w?6l*2k7@1H`Oq?Iu
z!+U3pyG=!L>9zyxr!nh+${vA^f~#sJQ4?vo2`5WXkYKQ&TN}p#TbOlUAVIzLb3ht1
zR9Jk`{YlAl!u*EaK;|2_g@i=PcAh3t5*zs<mgQdU<ZrLSh%>3<HY_^p#;H3f6QPE@
zR{PqaGL>Apyv)s|=4q_mJ7<?Yw>G*@YQ!YXT`8BneUA({Vk%6Zvv0i?(hclqk$i}p
zm+Y?D6-6_bkP;1VLh>U&xmhKPRZ^$e?hqD}eiOdh%hg2`=51M#KiDoy&sOl-8?leJ
zs|S@YSD5dt*B0{6V_Rr%i^VokcJ+RC7#im`>9uy4aEfd`Ne{4{oNMz`=)2EL4kxfg
zMzwR}HpxdXCO~YL-sxC)D_p|#t0->~8V~D{Ke#es-*(tVVZ-_M(O&kH1EQz<H^;D&
zP7A^*eW+|iyfe>|c)Dr`qq)c(IKp|_igiXi3qPDsAH3(XMhyAdAzPX$%$_4NPt>a_
zdetKj>lQ9*3SG5~&^sAJiV7t+NJ0iyz3`-y^wXzJgDkiR)WJrn;H6<}JebS0NiR{c
zA3(6NIRxeOdd?ZcZ=w!h8ax6M6wxPkqGL*>aFOrk)?#ZVlB66&)fGnMm%NL9D*I%O
zm2AW)w@}++pCV-))@$vWF6Uf4yrs4)<5<Scon2=0t(Lr&4A)#`q0<QLonx1j-YJf0
zJ~8JrXx`A0u5>U@T-eRAk6^n7YwmL2tn8^`JvJ5h%PDGJFkCc#Qczea?7UFZx>115
zmuBzpU{Kqt&s(vK5dFHT+4+N13a!*2_)u0;(;9ZC_)M;m7DzDGf|lSm#5sz+aV#ww
zer7UxSBMZUMp5x+K$E81{*b)baVtS(N_BZ{hQ6a_c;7rdONYUM{y;b{uex<wZU@7h
zg_CciZlqN+lPfV?NX`sS-YkB04*?CCt)(A~WIt02mGBj;05^-Yel0w`wve{?_N;an
zOxKm=I6+#idenc688--lXrpyBNF__of)QJ!rBp3u8(NN+UuhikmD)3xc~^+`47n^-
zN^@6!n)FFvX|a2H{cW0{xaLo42qYbVk#adz46d4L><r2-sFko@3|5d*i`Nxb#IiX1
z9Fb67H7&-WecKupRw{?~l$L1L)yEK&u%K!?8J;IeuL7{`>A8KetFlG=Xc>*a#}*a(
zCpNf<-i|brpk3zXeE#NHLyfhrCRef&H{RC-WwVzGyYEjKM{v#%KjH?xs8kf&S}f7~
z@=VtF2mUeqU>qIbn{}h6BNi35YAAyNw;>AmqGQU;#@dYhiMZRcdo?wfgBhdj#dR>}
zwLMc&l)&2eFsNoxSFBP>BfdZ9u~q>J&}Ad^bV>q&$nJu%1an!yh+raE9Gg?cP?PEf
zeKEEM$EM`Bi5&alJar?#p3Sdk#D;WjWHAq!i-wVm;#mecUoa!!58PExM8tEBuo7IC
z41^KMsCN0GqJB)4VHcN{R^Kwo`?rkIMbJ}um{%X9&6vXks=X%=)BTizjfS}meh?7w
z{E4&ivy$UrZmX8@qFrv~2)?_8X2bT5ykcJV1xwdaR*C%8|1$EZ6vj)wkixp~I?70u
z)2Jv?vZwe#q!3kk=X~(IZ`;nWWRSof5$5r5sc%EqZ66Wcg&K04#)V@-%FIZWYj0JC
z*T--@C``gAl8m!GE}dsqQ2I^;^I~u?=8po~)-_ZZ_h7KX&x+qRVAY;mzYfPU>2wmJ
z<fK;6i+Xyu2Ib(|`Rf%SEgc;tvyeTUQho^}4PjU;n*|7!;XkLc{$^7TF8+O$^kmHH
zZc<M(!L3Xk(``)OfObh>OJQFzP-h=CuMt9~5cG#j-=<yzI{@cKml>Bp&M(c;Qhn=s
zNP&z@N-$xa2?w4FfU3xh$~;12u2kT&^k#B1;nXM|=0<RJg&*6FZPUl@A)L|yqM;yn
zCN5s1&+32PuvElJxnHJ>tuxtdZ%`(`Opa&QD_t;l0y`K{(pWnf>(3UdQu%}Xr8b)M
zv!1}hATMv)Vr&)U8<7`gp;ivD=cEfKrNtg<tMWy*#ji%Nqe=!&#x#~qzZOl<CWb_G
zc51KL{hU%c>!~6|b_M`LWKHA)f268^(bl=1L|Lk=pGtx!(Q>4QmYFbQfGqh>Be8zJ
zoD#;EBHy!dY?Imet+`#?U60JT0Ks47N6W6!F6mGV2XV;I>Dm=usFeEy5!d^;4bsQ8
ztq6Umy$VJN73bO&bGuzUBCi6=bEVekYym^AAy0>kHBFK3@KTNXk}{`5qx^W<xjaQY
zf@+4dnfJFL@dX_+*5^D|Tw5;hZ>&!=S7}>p-BkfPpnSmI*l*}ha-PYoW_Yqb*~nAT
zCFWbsTT<PUb+O{I>?_dWvzfWv*_f&@n!w43uk0t*q9Xjx=WjSUVfx6{N1R`0S=nU*
zU?s}s^cw(W@v0^LP$Y>|c9nq9c-7K=0Le*$YI#2)2`V{*PMDj-n38@Jz)50Ec?X-s
zn1Vqe3`1g$QZ7%Z0iYxysgf%n21Qax!JrgIAt9-({~NF`5l^u#r=JTzinpbbD-{X@
z>?V*a>!$+@643MdO-Uw{bH&2sB#<c?<iijpkjZ1Kgfamw5_{wfnvh9=WeFIC9cq$b
zN(P~@9tjwE!k=M&5-_ra3Sl1-cM7>x0I&F?3ZY;?NBmKVP%A*1#GQOvE6iHLQHfA0
zOp&COd|NiR4nQHXlu%6(TQ2k)kP%-^IV~3kCqYa(tsVA_WG5k1AvXh1BhgQ;Cr79r
zMovPQ5GqTk8AeYcknmlOP&EvnWK1GCekx%q9zh~TClr+=iqcLfY%~5zDXdT8?Pr)y
z{8JHtkLo%Oz(;u<0NA9u&H#kOKPiXV#IqOo1Cw+r@8C&z7W5}cc;@sUO1x=>O~x-(
z^%qHa=JxZF@G9>Rk?<<+*hqM0_rFTC7xlMEwCDA&O0*aBr%ANu^q)$!7xtG)wCDC~
zlV~gNkdSCA?tqbGs_bx(WGd}okYp<BM+1D6b|^?P74@3{GUV6IfM|;AVn8(cbv2+Z
z-c(t?2mnuUoekiMU#bk02_q$Gm*CFsf0tM*>SrZsq_nF7Jd)cr0bD5TiU2O;c5Q$r
z3cE5u6M2nrSXx4}co<efGk@4=LbG(3MMASkSXn}|L>N^<vq0Er!cznwiNdY~kVIai
z7A7U3S>7)!!AxnF13>%Q0vh%;qf`W}JOWo9zBimBny(VgHHsEnMa!<@<}~vBUphjA
zB#PgoWnb}f9{2>#eF9fLzc+j$ntu|_eTe?Q?D${qoI3}uoPTdvMKo_BnzI%yUXPM(
z!^v^x5;%7jx^SjQZMgLs?z3ECdi}l2Z_(nIN#{mi?Dx|mS^4!h(T}p``rl??v-X7!
zUgCZHqn_d|*#(k6lTTW#8In*LXbcZQbmZYod1tu`Td)~JN}|jfs}y*TunW~BnNp1D
z=U+JY{mh#c#}x;dGfIA!_?uzQDq6Dz{ftW?Wk_I3U~o$&Wt7sjXG&m9ppP`6G{zia
zPBep=H7%@52~QSzE)U8UD2(MjC7=3U2$I$CJ^r#T6L!R4#Asx@b$e}MAb$Kjm?2|;
zIi4tl9`@iMAh|XfoDo)cWY6$D<;5<sQ_?Hh-JuqyP<ySCOo1~lt^`8CrO;YZi^B<1
zf%5RIcTe|ZtVALCY;9sNek{I!E^K&YZhFxUrWo|=4%}6h^(g%2JjgUqQ-`BKtpKyA
zmYlncF@QXb+~c$@sVAAEiPnoehP-!54`=w`L=K*k?C5N+36M05G1cQV4-6&Je2F|(
zDeTjHq@#WBy^|@-O7XrSN%Z%=BT4l2-kN!o++@JnX|-v&gPr9s1l4?GndMu0Mwv~L
z)S>s9An-YyG0|L^ERadz)ms^I!ejF4pMX#K7`y|XeZ{`PP1-PWA6oP#JhIYxh0JbB
z-Y`7GlB{Ct7`&qlY45F1%AjNF=)WVJg~q<&o^?3$OgzRYEJ}Hxe@`IF+L?)yY)i@9
zY8^_!H8{+ZjHc%qtB)v2A#$-lCMbkRai+I=Bry!|><kpoCMBht1(kecS|6&9G^3jB
z==@f`xPv=k&o-;2=|VP(BiY2XKIlj_OCza~Y<*zJW|xSSV!hRRno?=dns|(9ZOf8W
zso(nh7^<=@z3wgOn6a`g{uod=E}520d+;ZsdG3!R!7P|0RtoFW4i*2Y*Yzy_AydWe
zz@q;GW5!{GO8}<lwd$_{Or1BNDf2?5HBXWzjh^~7G#yyZq%=AM^^y9(l1wv(SwiWK
zm^3=w)XRt}knvqZ2M&8U1)N#SLWg8yyS5Zbre>3dwf5kWRHCxvLMA0fC3-1?)DbkE
zAP?3QGk}gGM-lBV(${pfcOkn9TT3s9F9|f`R;Zzy0K+_th%-SyjfjhWMAup4oHEtX
zl$lz_mhWdCK@0KnBj1}5D?~h_z8a_i-+$d<^}q47v-r`{*$gflMb`+#oId<DO_|5g
zA|Bh=BYp~cF&JeNNCtQ@+)ShQ$L~jA0An6ST>FAQ>5uTIXf9@zWYLl0%q0=MKI!iT
z-9HTcX-Vmsi%5IiW6EdZ;824vyhty{Qcx*mE>zU{g<U`^2{*Bv;!tSI$YoN)K;qCw
zTqrH6To@&Z<C#d2EtF+MS==$n2pivxJc&Fs7e$eX)o%+5&6Ssun@pHO_*G7TsBZ~l
z1o`hg?vFK&Vy;mznMwYJ)S{kSv`QQ$qOu$%q_XNA@PWb(^9J3iv-L`L#dL*qMfAo8
zw3&Co6%P-*39<<UvCRkM8QJQS{f2Tyas_tfHV3o1nP<Gh3;F<>1(Ma>1pmfxg?L3U
z;sfdf)DGVc(T>Hj`XFtHx4OF3M0jdxBT~4$0i+$`O*3QWf#M3b6!DU@?LlE5buN5_
zmYo&iO?!jAS{GYqIVm(z&x6C!*9c+t8SW_qECW)RxX#WC%niqlTGRbt+Apw5gcxB7
zFG}5b4wCAZamDwIJG2$2coi-S-V~(08+7|{<pN&Ex{c1Wz)ItZa&_TqzR|<a!?(?^
z&6mrMtJh=28e$WCEu6K<w<&P4aUI4B=`OMxc50Dm(dmy9jlCA==6ttOcS1Kx_kOp|
z)CJ>S8?)uF^WW7qjpKSumTA2g)mqrjNmd=1=3F|HwG~KejSUyzk8T=RYZhx|Yh_K9
z_90b(?XvQ+aODcs2B&$5GR+!(J*xH5b*e^Mm#kCm6YWN)l2<(|(0TJyEy4AljSFp3
z_jdOYr}ucL0}Jl4Ds=9P(2*xJ_Ydwo`ZXRo9@7g!*6QrmdVK<y0<#F0y<X5P>g2tt
z8qPL4rc$&(ZOXL2>XE5!Cmkj?IVX9VoTFZ`9c`5tU>?URnARH9<}Xq!<}XUik1s~b
zp&skYDK1Jhikitx657bDXk3zv+}4l~`3TD9&NtLgXoo4Cqc_#haMM@@dB8uW)r2qV
znowIrjUpY<tZ|NUW0kfhh6WVKev)~RtrK$57b3X}D96sOp448{;nt@9Icd0PJgJ$+
zvBGJ%n8p#hSc22n4q?HeJ<b*->-=5Z0%$8j6Ke7)cpp0Nva&HhG~et{0VYueoI$#`
zw>Jh(7l47A95Or(Ggr<hZi!KaMxjk#H@eb%uDaIvIqISL2ZH5?;2Vd8HlZ9vLp~Gv
z83T6YDV<PRLZ+SwZT>WiYuov;H3;Eq4eW1ZL$~kIX6=~)^c_;JnIJdVp9M)o+};bN
z;^P(eq$sbS?r1cA+mD2|!^*d523yCbBFG=4w-$TH&hBzX=syf#hfnWjRk!O;=jI7J
zI{vIb2p2ib%d?bA<*pYxt}NySh0Z0iiv4?a0$C~Mx_9psiLRoKfMX54xVF4)(8r?U
z>TK;t)oya>A6Mzn)-KIk=WwlvT}Z2b#@s1KiF99k6tDf<VahOaQ?@}Kck2?__hS~d
z2bJn@XVd2Xvo(yb4fOMQkZ+i&U6?DYw85!ceTzFASQWG!Tp5_k52f3FOH&u48d()&
z4m83~xEn;5mmWSDdJOo)ce$IRn_8EY9<&(D+}AuCDj7}@1f`o<my#YV8AcLh#E-EX
zRPq}skaadPIq)FpKsUQCH9a^wY&tA5aGtM#E-^g_Ina$CH$K`Q;9yW%d@OYEbTAmO
zV4wg${vW9H2<SkDAn$(OKXkI;r?CD2xdZd~Id((d0kwX;dae9{83W}AjQzs|AFLXb
z6(2(kgcDdfn`jDH?Ar<`<PUBHh<Z?cKlE-8AyBy=#0bEFpn5;Z5kS6y^7~@Y!`k%7
zK`{RS5}F6$wL@kHc>{lg!Uq2Udjokxdct^ud_sHze!_i%WB=v}?Fowg4Gu^L^b@EP
zr1M)R5HG|BoG17h1TPpb@B=U&C>}5#hz}?)&<4Z?=myvZ@CNt>$i}y?RR}^GR2xhi
z_yL3tln$5<gbrvDbP{+HWD-aQ)Z?qV=if!A&5z7?$ZyD3)KAnm#82x7Q#F$7cUOcZ
zU`q(kA4pqZxIh;W7od&68h-z=w)n34t@>*CY53A~k9SLTf2}Ir_g`f~8@gG#|6@t<
z9rgX`_tSU0n{-Qmi!d9p8KD_y>ANM+g2Me3xZg7!{U_K#SN9uQ@+Zixj_wEan9u)A
z91sAq@a@LLuLl2K4h-`D6#kd(7CQPzu!GL-HMHbc5C<LI3+OQ~zrV!KGp8rMwULiA
zxVI228udAI15z5h)Hk|}02@M1cega3Nyey&9N{_ND%kok+9I+e&{XNu?8*WfN3wN6
z?XNROi(Dq2bpE9K;qWYShY;RnAPb#`s>3y5bGwsGSw@-fw_q1IlfK%?L=^0&A$e|M
zceD@K*K?33_Wo*&T{*q_z>liO9;8CsPXw+lw+f76Rrf^moSlY<+HmScM^@mF${l77
zqAZ?yYT{=yLlrS*ou9@|wTM5+wFZxBARqQw4BQ`>8p=DE_S7YyDRfu&uX>(}cq373
z>Ly>DmG`8{b1>tm$WEvq@zFGQRn9eTk<$h*FJx(EI-FJ)q%fZ3<jh*wt^9hEd(^v0
zqva~eG9&EBaB*wgx>xV6kTz5B)cWhg|8N_s^><~i#g(R}3|snE$I6wCDBJY7tFhsF
z!qu83x!Nl^k0AWa`yCLE;V&Z;kw{UY$e$Gq!M6<HRCYn9>i5Y*Hpey7>X8;niwj3x
zGe%ccR`dE{KG;TkoI>`fo$!pKrAQ(>@|vKhyDI$!RFS8A7gju!U584$c7kQGEgR(G
zPPvbcFO;o_OjoGb`^6GYRLo^*u<I*6vo%XJBG0T}^$@x{nnz{BmmSFNv>e$E9y;n1
z8n;iItt*l*i(Y?m9Tt$@OgpdmaXllP=NtEZdN>u`*gU>^4RN;}>A8QC`LkP(MK!MQ
zB%e97<<Wb&Zt&FnhWw6VgfUQHa->!+OE(p92j~!x$*W&v=M9-DyW{NOzYG;CUOb}0
zj-Dzzm?RGm-rfD|LqEharTp}H{45$<i`_B%IZ8+KQ^R{&RK9|I0NftyVg{}iJ!|O@
zHyW80ipfjDu0C(y#EY?cHTH3wDSBh&h9;%PoOVWMh_Xn59yWKHIk@tn(#0LOK<rE&
zU|Q{Z)$`Qe9+TM<Z2*xQi{p`u03cjMv6>-taXw2vUrNEK7muc}MCEZYgs|zo;C}rh
zD*9lI{d}Z*mi;S$aJNr}_oe@4eIuD4<DJ*-HjcNWqOv(Emg{tidA6pGRsnuRv1rI}
z^r3R9)iMdSy#!7iP?v%8$oXi@{>T|SxZEa_5-J|XfPhv21~CN2!TC7D*j5O8v{-dX
zPgCcUn&%L2{PY5k&MtYm$fh>C8*h?KIx67v-em7}7K?AyK;$97=U_i{)cgm(Zh?ZK
z@o-A<=Wza9PRDQm`z`!+Y`~h8uJmDU>)XU7#1QcS8Sy}HU_U8IKiR-HyytFgrza1G
zxvG}JR-LM;fMCgqi(DNf)Z7$*|I|1nt~>PK^6Uhy83V{06M#4b05%rVG>y$oEbMiL
zVU+asb^7TaQ<$Q>{c5uYjwntA%y+4%SK5=AoBgQo5$vneXJ}^QG$GD`f`L?s;M*tU
zN~K?g2O<pu?HrwuN@_WIG=E*}i2ZzLAmk>jarjL{El-?GNZt#`;n{NSy$%<25n?CQ
zj~g6n9k(8tn25q*CMPl&iBEnA(8o7;QG<JkJYFnnvX#E>de4w9qr#vdlJ_aM$f$G5
z6iPT!#U!iUIw&9|{)XXFUY40FdK@)jW(Eol)hTrzfa4xs!YiaIZ`C;GoKxr~%F8DT
zZ*h3^Rg{rNAaD|SIme>5Lv)CI7V5gj^`!ipMZ7qC)OQrYC|*2F40A?NH6+Q-t6~H#
z_%OIlM?<j81FIW8f^LTlN$HVXpOG3Tr+O0ge$zA(bzDL_v0vRiQL(>$ZZA$27&d}l
zT+vQ;cl&0IY+GTZlX{LB*|orn_<q4p&(*&2n@XI9yw>ByZV9gDy<?kQO|BBbeAs(5
z8;<XUuK_x_G@&n-?uU52{M*od7IfCS)B@SSlH?zHEDZ)>02m6q48iS}Y0{|n;Or1J
ziAdz-23eJS3j{&J2TO7$6mW@Zo=#!`VR2T>=){MTn(@Q2GaNKbg`d9O6zHd}9B#jz
zrn{03Z2SMD%w9AzLuxE6m4XF{UfOJSczDD%K82TdLQZV+Fp?d*aJlCjC_j^LX0Ba>
za{dy>VQ6!`+$P9eW3D+W$Jh<I4{dT{sW><PNvFlzs&X7!zEnMS?Z6Ui=WJY*r+_Uu
zi2H0?ZBl%0s$Ar^yWf>kX~|(2PETgg!LX2eo?#j~%NH*FN$wB-NA8;sk?8a>p77zW
zI$wEh7-4`sxm5n^N<uO&A`f|-dxW-B4pQ|~yPK?l;gzl0#zp|5g@m{zD#q%m{7L~!
z#2t>)xdfxsc<#_c>)6!B4PC~`6achoh=KrbvAH-~nMzc)-G?OBLef*SmQ?g7Z)@TA
zacsb0YGbbLeMHhP+Ln_B7PZ58G*!W|RtjQn;?m0{Fat8nQru)Ur{nzTi11fYh!C)2
zE}F0!IlJ{X^`ADM7lRt!9=i7J9U&~GT0=|C(&qwg#*X8gS9>EU(G?h(iLt22ac^B>
zuc%L~rDc<DX2$s#;!K!4B9}!ZqqQ^|_Gf?ShNE<@iK5Q?;Rq&1odtC9A)|wTVD?g3
z`Js~gp-O19TABT9s~11(k3l`M_MI7OI<tOpT9x;fY73&Sps2@VCa9@>+`t&FMSAIZ
z6z<A$<Vp1~x#0M8nD|Wh5cTUy2deSp>#ha6HP8_fdoT`Y{&r2l?<t{-PcaPAPdxlX
zWCk)+W~@MBu0VXQV0-3o6Q6VPM_}NIA@}KL-pd@w3vr@Eg$8gdb+0$SRzrryW+_Vw
za=IQM3Kwll1!2~FH<yI0zQB7w;F3Am6se|seMq5$AD=t-JlT4Lzw|hHfw^94n)Go{
z1)Ex0oaAmbIH=r!)<5;b1I_nMiF@rHqpB&|ZijEv$CTDzDgW<Q7nnSITHuQe6z4F$
zV>#i9AKry9pcA<>O@1C2VKbP6{=_bcW@Y2~c(1!6zSr|@9Gt*C*Az$^IJ7P<yJ<SC
zUl%)f8%Pw{z2}V83VRVqNK@Z+JG(hw{2~uV#QB4O99<vF!qAEHDzWIAi2BMR9=Bcv
zk==q>b{(}TNGYgaeN8z+!|+z+6fD}%4pOo+5oLX<w$tSr)E+iQ1*Q#YI3kwWO+2-o
zSW5dhDV=y+(ziVpgFAg*I#6Rr#oy_7)Y{(6%zJ@7{1JP@ar%WqlmKog5#Yn%t>IZH
zPOLy*{r*nFi6CFi7^oKTv8-Xx0eao2;tYcd;3VwY+8=~kM@QnrprosP->uX3Q15Sj
z^nd-5hS(@B%As%9-B8i?Olws`>#kk8RD8X19b>GA$5;u0d2h1Z(t{pT3SOeupB%dS
zL5;SGO=Ms!CGoe7zb3O>8Z6`+22Y|8pI&k5f(IYVlE+!{_+bG>Fm7EFr65vW(S*e1
zAxL$DhLuh+>v)@cz8OxZ2p$J*p${RmhgPC6M^m=`(nF1wp-PD*#y$@Hjjg2T#7K}R
z;TVfoYJ)&9mYpSFkD4>2bES#w#58aN)8)CFaa!eeg0wuL(aALLd0P8MA(wxL@9!N}
zrvZ~V2&+M6f%iPRC_2=|^!VcvM<Ih2v_bAh!m^&T^(6Dq`NCtn60Qnu6Du4Dth#)w
zW{*T=4(s>x^<{^{Q4PFz^#Dp#n*b(A$-M70aSdBGX<=Q1Yw}|MsKw4c3&IWNcQ>ha
zZpB|ih}+o*?8O{#=1~EuyV)kYx-d?<99ZAmIUqYB2{)qmyC0K5X{G(>whkGtGV=7%
zzYUF~KZD`=Bn&+dXhI~vXre;M-6Jc8fuDfI;kn>dpdZYCKn;SH9VXdg8y+qD7Z6D%
z^=iPvv)YzV<tx`MWS>E)E<fjG?*}57R1hp<)YtX{f$*5N_|^h7x+R)seA)!D-lqvz
ze1Q7X*0Y%Hp8D2XEuoU1@2U-D@4mtTX1_(5febPG8KibINNp|Ebw6U!cG_b98OMhq
z+6Ky@W`D~&!cV@=4MQyqtfG<>vVrDIFKFtr9Zgl?guY;m#QCv6u^_-y?uRMWt2~vx
zUd7+06X4the(nvs@{WoB!&SqQ-4tQ1uNTB&9MvCXN(%&_RC$LTnLsN^h#9$^B$qfS
zYNedoW7n3!J*p~rVOx+fEShKz^GQL&?oX@oL;qLe+xHJT!d<_MG*p=WqJu|No;m*m
zZ%M;@Zo%Vj;Ji@=AG;5Rq<rCKUVN;i(jF7~G)ky6(*JH)p7s#4X(3j1t^&|{t~Y4H
zQLb~`l6_U-J!W>YlsibA+q?*-cei9X*E?t0LG`VZCy96Xd)!*dea}_L!qKHNoWQw~
zOb=CJS-l4fS`~pcg@dt@n59O`EU$<q5Q;@~@}sxlrq}=7Lg7J$$hTHF$O0|$y+h-0
z2J<yFq+Ulu-YlTOGa7t7iD19U>W<-`B81a0%>I@v(qm<U`#m`tML-8r`~5@@o0JOQ
zs;4i)A8kbAidhH-K%Ajl;ax;TUL(XSWzSkQe^6&H)QJU=cpeWdNx7~9W=>d(yP4Mq
zZ%^wp=T@;ya}AAJ_x?sO*d2qs6^dWuS?~Hb9RB^1(nSZIDC<s%ougx~!OYvaOS)gZ
znhY@{DrH<*>g;H?+zWI1kW2RL>q42>IV-1?6Ko*!_xKfTdNROu38W~0ivr|8gV(Z{
zb%>no*BOF=n279Hk{Cxya9Eg`IE31%Tuce2gs!(<+qyG`-;0<ir@Ft4dDrv-BWtt%
zb~TNUQueqY!Z)gCqh%XCDy_ba<V~ub$c-1pieI3a#LpQIzCq`W{)%b0h5G%MOj(vE
zZuyVBn-Sp8if(_lLSGMk<k@Q6xH+EI`FA*C#6e02n66x~XeZ=M9Qh?dU`|HOCrpDF
zYXwZz3C0@*Qmqn{7z!O;fRqDpfSwCwkUC}h+GX+(cq0X#n73c0eZLL*ascbmM+fGd
zpNOE%o?qv};<0ie63|B<_5O)>%8NL57PkVeIsbhY$T|BubsEC^IqJdX4&UK@^r4V-
zo*t(4JfPLq*-U|}^%->P!q-@n?z%UM2KTik`R1Jr_kHU%O{DAj@lx|K&qJl6<+A_b
zRHxZRcl@1Cs0HF`oeosvQP=LQEL1_n)T*?eRY{%6=5I@*gyr8u=#cf*CjU{@jdkr!
zH<r_3i^WZv$iE{v%bkqtGRNAV6eESAUqGE6Y%)o{<%q@Yqt1_$cr$(_|64qPm~d~j
zh3E7BAmmPd3i4eu2)aoL=B&Aqk9U@tRr`6Ku3}{ag#d5m=E-UN`6L$@<PUw+S#XCz
zfXZUZ!DNDqOtF0qJARUTIp`~*K)6gXDwZmJ6FB=KIP)Sn`y+U0BDinjuAQn*sEIH+
z{S<%&I6M_dSjsn-^arAK?xP|!{xf?cRmh=z6e|5?%2te^g9o{ZA6UT86EF<?YNC0L
zrLRX5PC)e`gYYTTc&#cCIeQzrnv^ynPg|d;ISXirVbiYDv?{aupA+^K%<C3^<){^d
zGIOn2M?wBd{Lwh`RZTCp^6;QlHbW36rTqmgDNFB8g9fHF@2gcDq;v1BCskeN?)|xi
zNTa^nF4_^SYIhtnP2N@q;njy8kur+u_EOf*q0prEHlL7yoZI)F!uf7cXPtB+GT(~I
z{?YkA%g)zh^=jR(tIT$dX8P8%Z#rqD3yo^Ij7ehq#8ewuBVkWJh*89^tuY>)`mT0S
zzdeDsHs_qIO#&L|!Ev034(@v8iXP0A_@Yw?Aot5;wiwER^FgMu$-ptMg0Y8o-wD@r
zjC?D=YxwKg`r=E*D<Yzo{LCyG;pbS$defO=(a{dReg6PcHka#CwS|J6w_PkF^fx4M
z*W}L|+^!x%VXlOO({x11b`ijG?=h1FE6P!pE<1*&aG2Wb59iUrvRUO=*xUMn*^@d`
z=JH63r-LXCd)a(Zy6rd{1+hpx2%bukN+_0U&}=y5YVdx-sbao&a$1QizPqUT+!7Yg
zgYbLw&ABQFG9knZwrm!*EY*Cr!onFIZk<)#$oYjtI-Vp#bjG7s+eXSm?Y;CsvDL_s
z&9K>c%f}n+j5^<bXxAR@z@9MvmD#W!ZyAH1kU-m04}1l~%5S(r<(7@&hufy`ju!(#
zdLSdOfCmkE-aRU}q&Y!`*48W7V}#gTm29JT@egGFpQ8uEZL+k{wM(};6uF*MRPMy$
z6<`5wykLZr+TEZ?OTSWktSfs#r#!x8vqAn)1;?j?`XSU?)Zn0RhWkzS*D{OT(toxr
zl5c-r^cuf4IUd~Ueiw99MR%st1(1lU3rP@5$opfs5>kIs`%-IQMx!<tpoU50K5tBb
z*0E{b2E5~#N72<J5V2L9wV9Fo<)g;mJ)LH`9{lh)-7xU@W6Lj(_R;vUg`$*jdVx-a
zQ_vy<t((&Y0k9an;D;e!`Bh|0mpNYHJE#mEKhi7W2B1Tlie=;`?i1k-90gt~E*&T{
zzbgH%jWUQ8OcmV6f~}TH46^YXj0yZx7g5ur#o?gf5LFCLpF_A+3{`#F)XNJ}i`s1Y
zoH?&84!~`f#kb8M_v{h|FBV6I`(4?6%<zK(6D<$eM@auW_pe=Lc^jHrH-BZGup!8`
zpEL4Hr_j*NwB`VU07R+1&-NJV`jSgdP10~fskP@gMIsaMi9{BML!I1InCuFs7Hs@*
z$nMq;I+OuIRgOk12|JOmo#(}NiQNwFqRc>14stP0EWnKDG`GtA6TRH7BlZawlr+)7
zMsRB>@iH0U)`P$8AiET>Vql@NA@I1$sPCrjO;jgU>&X$I86(iZ$m_{}d;}8&nbNBo
z8x7ZZe$}NGLyTs#Bvkc;7#L;9VxrbyPkbZ3_VV<o!<k4rxOebbxTP*(a<klvNDm{h
z0}yMS`LzRos9!I3uP&DOHqutZGNhWmeB;;0J|H_2)!X(-GzGrh*R0{2TVOP@`5t%t
zn0#Jv|Ey5Nzgut1Sx{*_KltGrer;q!-b)<kEdy-glh4TQw#>-=>?G6ba4w|r(WOCz
zNTuCr_GwyxTmnx9&Y07+Qp%au#S~{o)x^?*CBm8M;iV?J5>a$2!lgjagGJnhco)n`
zx}uL0sYKeSKfw7`V{7oWAh)-ba%?7<RwdqUR+FjcylZ+~<J?G>f@=h8ffm>b4eHkk
zSxj`VPLg$~(QU(y@1P=#G$NXSHn21ZS?yDIp3&EVCN2#fPGRBW7U{aZCog{esXe?n
zfFH4G9$=E74xZ^F1dNlYxPUfa#9Lk~y)oQ+q8!CWE^2*x!fUH29(B*!a)-~M-)!p4
zz39{@Yh>>@Ig(hDXiqeL@`uhnpfX$Z<YSD=W$oj3@*XNPn+m(WS!e<8n#Iz`(DRfi
z&P-=XG~gTR7H;kq$PeK1;-=Em3_z@(utRU^?CHKkq4*=m`U41qN)nA*oToH{)XCZ*
z^7_Mo5Vz-ZE1R3%J`dmXnOnZdbtc~C@^!#XLzX<Qr|xPG6(!`S7a!kJp?Udj<>4dz
zW>d#??`ngBj&G~qqY22PN>~NeTt`o&+C4A@zMlIcpDx&IxgDc(qINgQpO5)g7J&j}
zr*}dAf|I&%yWil-VoAO?28zW}$bHkdHoY7OsKEy0S8Q>czidp{n>WB$qIWhyYO+p%
zW{l^a>HSyr?NXQDCNX+Q!leC%ec}+)O^wm`@Hc>&pbg5V#~caMQwI9%tjBg2GLVEJ
zoOtPvo6YT(TfSbO6>}B&I)Kc%fn_v=e$0NBuULK^a+h}NajnG+Pu4U04511cj6(%I
z=P+SO>VpNjSESZMp{BXDu~>a#sCHAtZ-cPWW`AvUV?`OXU#&&H^W<ra!FwN`kY*CL
z&(T+V<spsZI*-0(z!$k%-i-^lcs9lS%_&bE<|?N8Tl#ML_9OCK4&p<yGG^0!H?L@X
zDh`+y|H*@1(B>5gu-`KCcrihduKM08r-)37#cS0$UWds~t-gMf;L@i45BVvA&S6}H
z{;d<1yz5o%7MuMo(5ki8otFk!Wl*=QJycbjl&0sCkgBDZKMzLESQnrt0hC7VA8
zqpF&KMW4-|O=}Ny@GvWH-osVLs8iYGiTw*i>%neMrqx8fJ$TtY*eD8!NBDP1fe4DS
zVkMZo>I?&-ihTBFOHb_g$~P+Iu%>LfMmM~Q0g$~XTC&dI<<uV#gP1WH{8*>t61xSS
z202n66`{9~Z=*qttb*<EV^hJxbLpU<OibSuOlf~K*@7HZ!PBHXpj-&UUjnWDyoUSJ
zHESLb+@(n4Ph~Z=E+te`<foAvRvhYW^|HhDq|$RgTGJYI>LImFf$?Iz4%Yxxydml;
zK}G~$zA8r!WKN!ocKsRT@mgx}TxhK#wFYese&xo~r@oGuRJEoDwBz3(jar4<VXZ{c
zm%^@Xn|#h2yFD(#FcVMYt<~;^0+9vg(t^EOykV5Q#I2=dq?73#WeO~rNmQPU!-Rmu
zL1avq1!b3OB0;^wUqJ_XStw1W7cU$v?><8^uPIjhp~iw1sE!TM^H5ig?Ceemmq*+6
z2@pEVAAj&YgA#X-`Ezu;+50#}Ej0pjg+fd{6mjcgL?@@{jq#yi8y_fYHbHFvjCJF_
zV90FBoBqTS<F7fD@U6m^K^ho|4X3aXjj~ZzWsm|2mnT<t6)n8s&d9u>zY5G@!zPk?
zjctsClc-xTmXB_2A!rq2y5fYN4b1c0{>;1{Rl%$*99T?q>{xIxKc|#Z(Zts$Ox1MR
zFd>7eV_N)D$-gjEzktqYxW1c2PB)9NlxlD6rwpB<Owxihi}T~8d69FPb$BcYoJn^t
z!m~$-ZOgd9blkHj<RHM7^Bt9xlImk5yL@ODIddnYr`aTpsaBW8gLZA;7O0%L<+9f#
zTvP`ROn2I`GwLa<s&@cP0POP)Zb}SkA^J^W3ItE@QI@6dX%YyT=UzcG2vh{c-h%>}
zWiozOqDv=G022VzP-&*LxRp4jT)T>MY;Mn=vd2ZR2>VeS!>7QD-e(75A{4Fl(7Swr
zw5}XGPPPE@8~$S&HCpf?+|h%43m%}kY4D!2(YZ18=1|~ZG+rAM4dZ3i?0LR2ZU4rj
zsG+BqDWtnf+bQMbTMTBA%454RX`q}7$&P~O8j>J(i+J03MQy$CCK`K{eUs;=&R`R;
zFX}KI>zRLJAi8SB*S?>)+r-+0_q0vJHhwmW1NpGgZoR(IX`2o2xiN!B?CJ6r4WZ)X
zc~S)N__^b!gae_|>a#8=;b46zD5%0~Z>8{B8A2cfirI#VzXZMXLYYuDOXmBC&@;{k
znh;j==*Zc5=Cw-fqhxkm-HqzVfS~KtUUB9HmT_~50<G5)K~Z5BtFkDy#^+SLMVrfL
z4de0+vuZ3Ts<CP1_rs)5ftgW7+|%qI92L@A_{7pc<EOjQl8wxYT<N5)h0Up=6MfKo
z?kQo6#2!{6xE%OUxu*!i<TmgRs7&;!TS#)t*G8kOfE_<+>C!j;eK>O~8_aYQ8T|XD
zrt7P@JSc9JiA+T^(Bzzn(q%lY)+Ax4P@w4Q)FvUb$yrkAH7*A9a6I(p{iluG3u>eL
z93!@-6v^jLt+^eED>n-t(|~c4GV9@BoY*Lt&$F$MEMO_`ll?a3HTUrsF{iXhTB4T)
zoK{rR``a=$PkuA&&HI?b`5`~$SzmFf($480ONACefvONbh9oP2VmZrk2%Dzn_J$iF
ztVQkx0^rV^U=Gz|UAb4f;>=+-<XdAu4!nf99&bn{mW(9Q2Q0^ch2($7#zxmQGDdTm
zGR5Q_h)HRDJ^Y}6v>dHEUq>)6Yd_Rol+<LKd%NETlxLGXo*XL5<fX%aCqn1an!A)7
ziM5`42r0c$??l=fn|d^*w)|OIZaxp~0aYPsNE2_f6U1*)X9;MVq_jYucX}=*_GV<%
zOw+BV8N<*%3gAq@Dn?_+OcjUiRE}X*-ChwxAo7tyV%=3(vA}tIFrnb*egXpW&)wTF
zCl-o~VG9mWC$v2uq9~9z-wb-%WlDwn;=<r}p+EDr#WYP<9$I4W3O|fM@`%27XS9@7
z(u^y;!+r=YzFgn0qc~wb+$+LV6|>}A-v8p=U`&tNr`#X8xW`&_QQ4{4z=EKnv5xMB
zWbHX=IO))<;@LosY$6_|oXOBwvFCE%^<OtT5K@cz;eB}1YH4I<liR?loO!bJ{k<Jx
zs|;m}%9n*O%TEqSTJ+pl0*K+E*ki^vLHU8}`68lvMYLrbZ5HaqIA=xF$F-(v-f|>s
zLBn4<X>;U222Gw|2WF1td9`*ch$~!ub21zs%RT}o?_&Cya)dCqJ8yq(jOmA1H`XfT
z=`R9K63G@cO}oaeaFZ>x>Z8W3AU^ZyNYA$Y)+)>OyQc{eAf08D_$AxJLP=u-(U=5~
z+C@5sCj&Nby`h`CxxOaEHYjBMk82tQoE+JqeolQ8$U10{;ZE=ip1}K@RNw=kspnJ4
zKZx|~miQ<m80;Y~BbBr0HDKRl6|v-@1&b*i+n+jqNt4s0($FOIfMD3+7}*NF=Rl<t
z-RR^}I1q2aYhVCm5PcDkDhR6BO!LvRTHj~;<LFk_Me2F(dKdq|f)ka0YdPQAz@qj3
z!L+rJR?|`3TPlO;THaC^EHl1yxd$`eF36e~)aPlMSbZpzVv}5&TngF8xG7KzQsx<i
z!4X$IK>}^Q`n$$-&(y4IGy!6GG#;X$K0g7X0X3cH9^A+=;Z*=Kg~&%HGuO3c4Nt7u
zm;3`hKqD7eM^^uj57CD}ZDRH!QZ4<S+FLX+6@N+cclEgNZX~?1Q`cJnBnB<FaFnfx
z>s)cyl~#jP${HMgg?sjKh;RMOk`$!`QNR6IPy&+bM2vl*0_|0=<ke87Auh^y;a~7V
zd7kr%@kwtA@)Q{^q_g5lFhIWaG2*3`^0FmfW+C$O4b^(=gVbl}w1`Q0Ipiei?dy{2
zJKjEX)>H3cyB|V!3)Q1K)&x?nMjz4b6Y{tZ!It3bRpW0IBly6L*etV}AJG-G%f&>%
za=m=VwtJU`dh1i<qfeJtSvlr}_>0eEnzWuo<>WJ@Ni12wwSG#oShDl=8uv4B0-XAL
zT32kvgpA+@Ntur_!}Uhtw8{K8>tl4=Z#iJdU6krS#6RpI@naC#@8$n&e;Z88I>2yX
z-lM8JE`jdv0tWr=Az(y`6T+8H_k!)o$55;+$WN&d&^2PuES!=t1;t7KiyE|(q4MBp
zQWvCVU$q-bTNU{OCY``HJ>OvlLD>6yAqB-AwT#6+$q@snwClnz5b0TArK&(cQv3;5
zM8g*q>q;1FZq5@%mc|xqOZm_y<{g;|{hDttz#r)U13f^(zd0+R@DfjxteMXT3Cv{f
zw73P<?+cpk4!1=7A_(`OF^t)2jGJvXr!-$1g3M~e#W^xd{uFVF_mO=E%<ca6WIM^}
z9d$g957famlsdS4QYXNrzPefbA2|~ii<vQ;$KWap)~Kx%HflR38nqP@_=%Pl8)peN
zXB8bUVs%0t(ey$cj@99Hb=7SZvp6vQS3`IxM0ww;?rnLEAE2;gVP7fQ3^=}f<9K12
z|72q0ct+b}ngV`f<G4F#<Q#aN<3$CI7eWKt6)c3?DKKWW_bsKmmv4DZf#b@_lHI0g
zZ{WC^htSYWmMtqGeCcHx$<vNdC@3&$#J0mS5}6e|ZkONG^x#nU4MSC}H-3A^K6~w|
zOv{#)wLHt~DaPGCx~*=@r`JTk@!5{acK;Qt+jh3dJWta+zdqYl*0rsze^+l=SKaDm
zZV;_m!D)7SU16_Oxpx1Wla8uvylbSr1L){cprc>vc4HM-3w8{xHUMvG2-a)sQ}x<<
zRlO#4_&1Vz{VaYq=e8x_){8^{?h1!mOu*H#gn%}S6Na1~vl;4_1t}e%Il5!fUU!$!
zp8?Iox&ahQfg&84;?9)?$&b5_tNo&|V@|KAU3IW8fc1bHY=N{LnUaVbvt1f`RqtKM
zgc#9oM>O)6>4^u%6DzyAVywk&vwAEv$ag{VZeh#&dV0#Y-aA(Qw5@J57ii6O#ya+`
zXkFLf#NWK>#9dutv@w1it5z#n-SR?GH~**j^02V#&L7;=dB<dnrJ_BRe{^K5dE!>c
zF4hAX2gp~jW!O&;_wk^WYIQH*@3lREXQtt1s>^JpetYp2>WgowTdN5!XH1%Klk-h~
z&S32EM`m$iTIwbLTnkrW^~N5!G(aEL4?y;rm_u*Hjjt!Q?Hf7X?|f5H2aw<h#}%o!
zmi)5<2bqC`=;0_w6#aloL(z)C<u~KgD(R#bEf@p{9ph~7TbJDO$kej7-H%?880uIi
z>uJJbG{>6PHtxACm>X}-jAj!&+-LP)M5kzUmU%6?TaVs!_w%<j39gWAl4MKFA1n_Z
ze|qfBb%{tK%t~HWs`PJlH)A(pr%=|mebdm@@OPwZ8ip{>EPn22EVjvd0zZebfU$Eq
z*QUhW&hBjEU?Wk}pX(<Y`y2bavu9G1J>6i6Im7w^%tMCyP5n+NH?kK26b8PzY+Bt3
zFg~v3;jjdjdi~U?)1tbj7TB4XQ+9Tn8~u$0)-UuEJc&l1%$`xe`0LRHc%^s+(usr$
zu7Pk2FOtZn)ja{gdyK2uyc%&z3l~Vf%))_aR3rJ+<;8DXq$Il|8r9TA+Nhhm@9$fG
zYhOrj0r`{P$~bDeYg=#aWKr2iV!5!nWo)@SQiXJ7EXxdKG+nLDRv=wL%{KLoA<gEL
z&#kgmN)Bu7w#RnFJL^M6vc7L+%eK#KnSYJtpoMTOVIJ7n5m~o({@%h7>VFZ0zrH7)
z9jGyhE-~i!Mf|Fc!$`+A!D->0WgdivyMA<YhG9G_D%-DLQ>$Y*lTouQdIn%%5B3{`
zfzegDD<B5^(VYFp=ZF|Kh4BCZc5EA=9NT3FuT_Q<#1NqNwEz<SRa2bqnw74(josP!
zV4SFF$~6)3rg&3*^_k#E4{&kx%*p|=U)PV)+)^B5wcP)-_FRJSZtC|!2_(wU$QxaA
z%EoSU+#e^fCZP%70*yXWeMSM}uY?ykrf63{$?;+oWYwC%<tnQG3Dqy%QcKS;)}Y%R
zmQ8g2t|j^pB^UI6)9oKa|M*(Q;ta`7K=4fF{ImE@-heh2k&ID~|1ED^ih<>8lm8J6
zT=*US34>8jk_@NkWg-7;zD%^KxX?YX+llR0pWvIu_UsrWAuxIx2I2EE=W<-SB|QjU
zd#us*(3#rzWQPZbiJHmWBr!ZWJh^G?&E9=Io1o?DuOCRubEcLa;8m!Zs(}@AY!@oZ
z0YIcmVS$Q4>Z5jP;dDxP>C|cAq=@j~G7tNQ32aiB1Ry};?;Cql0av&lUBak<YqZF7
z3b;xYybOqWRRipbIR#t_)%O50Qj75ceMC{MfWv7zg|!rW2@EK$@T>8?BKP>n*dZG1
z*6J(o7#aEGaN-TfJw)M+hAv0MV`FtJO)@4=EamQ=$ock|EtKBK>~U7L$IIKRoxU2q
zj<E2?vgJkRQE>F7VF7?=(3T*l-5rVcox|1Dqqnc!$cQc}63F{@Z_*p|I+JYig^Wgy
zDeJpoEB-+sBDqASw|T6=?MZc2EFVglEY4Ess3F2y8cYCmmeY`vZU(XVaox386w6>g
zM4Z&0ZNfQs1~SnM+|84LJIykX!(<?($-oeTVM#SoC$#{b)B<!;W2Z?iKqn#X0m)1k
zmx;M4Qw1a}axb8@)KSv_@*{JI^kkPj$)&QMoT1QBhCQbhxz_~yPAjN0EQ27@v#6$D
z$}EAUFBBPyJ_2dBfqa}1Jy!U{Yxkp9PTV(Ep4$50rolUNjMWdBkN(LOpX|s2o&$JK
zTd*b96>}D7&YpqMfjbXxz463d-JL54uCQ-+z7sH<t^0BvcT54sv!WJAcN|FfQNZ{U
zSRM8jl5Rz^K3l)Do|GU*lmhT^Cn;D7_wiLi>8g)$BJK~E#<`h}#5WQIeBf{fa>zPL
zBS@6SgV5g``c%n31?3$KR=#|IdVnHcpzv2IoT5C**P^}hTboV0OoU1QmS;dK!7V&b
zrc%w{B~(I$p5;Ue2vL<UE1y7PM3b)p-f5EGQZSQXBFv=8qkl{Bs7wewX#)F=7gxDI
z)Plg@v3jHnhI};UoIm30+BKA$T$$t<jwT7<yXr@G=XQSU`o`wnPfT3>@aC!~$-R48
zHnfHaf`|qCZXT_+xonKdX)#J>o^#4l>n*dl-1yAxogFuPX`OV(q3Zsr1{e*?E`C59
z1ktb=`!uQq*#$^25wUb@Jl<X4?{1CYyEWjt;g2rYRFutLd^Kl*Pw<o(=IXm$(YczQ
zK)=v~0$>XApTx=ZyDEoF!)+!xvEDGJfHP~NbBcB@3T3J6C2QoRE~>a7wcwZ36>{Pr
z1>6c_^Tpj|bpg{WET`95%&)-0m<$5bZE8Y#Te#=i-f(*a76;6d!=%%5dO1DRxK;HW
z7yeubFr-a&7vmd0H5xaXdC3jEKpEf-jX+XU*v;zRzUhhzTO<itW5%#y7yO?}hHSRX
zHW(Q=tfMt!*u855rMm`ZBi1dwqg}qa-tOwgxsIN?{z#9|e`9G<g9KH`ZBC{UUre7)
zsf%@RlfiLyv@K{jmjcJ@_01_@#E!-}r7))M#>LqV66rrndT9FNN!p?DfDcKM=tkfm
zV3O2X&RU@35E)8O>(e#0j@H%H;xlR}cxI_$D#i|uyOyWp4ikwpV!#Ezi}&`djBUMV
zto(a+m{hg2b;efg>u6oK{BlVZ^&&|E<vHty8$MK<o5v5XjZ+N67+3>u`1dj}q;K{n
z-CoRsJ%PQ0^nK{i&L^OrXZCH{)O*DQZ0(eGW)mDF2m0PX?@sXAhs_e6oPXKD1N)xn
zd3^4^u3Z!R<_`9JqJKyK6+NB(S<aB4YD`c~jRQLHal8hk+#_?&ZUh9))2oO`sVmEA
zjWHsEkU{V2MjCDVN#Kc|`yQWD;FS*Un^TrvtI>qQLgPRUyj+e`;02u{a|*a5LWve1
zRJf$H9R^Djix&Z~Bu%z`Y)l0|6kh5k^&-8nF+VA&KDq+s)2{RN5Grl}6}yQ-3(Ej0
z<p?Pt{Z1q7b#})X2`1<Wdj^0#JHVdhS>O~X(fn)ydwFFk3L`z&bXT_948T7ajI1qC
z?&@vEPc1<P5!y0-_o#{^{UtcsT12K^E#c{@msDgf8)}%i6q%QzbS)g+tfzp}kpf=e
zp|<TB)BH5`0zl&y>>$EocXwzc0{w3_Z-?;nuL)T~7A%vlX6M#-kMs=AWxK-m<XomF
z-tXz>ku%mH1wHb~^hpS*G+GqbaO7Ff&MB~Oc5qICy)(%<rPyCyz(=+azY2=_PiZ;0
zaF}`l3f>O{-|~v;Dqi`R>N->gjwV*v0H-8%Lcqg90se;tzh&W=rURM=5#U<vaioKE
zx&dwiIXAuD=UV}tz>#aK8o<Y~f$kMk5-hFKIonmeo4R6iBi#)v<_3CN`m1`JT5h=D
z^I=-}i?q5F3RR*$Sv(DfxC)KoQs5vXu{i|{15yd4WFR^F|5^JI=s2!2-CDYOU#hq2
zec$&*YfG}aWy#&uQcJRAJC=zhJF%SvyKGCboj_~?Ss)1v1SfV(9xyYU!vp3FGqD}V
zHVM4pon!LIfO7&90%4ov%sdF>^n*O!Ou}OM-FvI57pY}C$yk<J-Kx4(^>6q8@Bjbb
zZ8h_4v0sPi|2>;~VPQck<+)&zF^$+CG3C8l`O2dc+m6<JwrfQE@71*PiwOeX<Rzdx
zC;3&Ma}Phf>%?woy%#ra8lKz=XYgGocXcBxKCB+z1-=#&aIMnix##fW3HGz~kCk_C
zU98{3?yb$&CRvNUPz%+vfHfEF<N9)?PKm}FrUBM6-K!0^`vm*3&(=9O_&tktu6=kr
z93NO~cm=9b=ctCY7B13at5=%l>n{WSm)U3^vE0EVR~{YTc5K2YH}DIj)^s&Hd~^&5
z1Z=HDE<vjAeVOGG5^E<jd;<$ez#c0V@7Eqf@8D15c_33pYztpSdS(Om9B}|sVjf@z
zw#;~;G?{y|$r*OCK2-50>%BUvmkrl!NcmsBOxHyjc|HG&w_bkzMJN%>3_CPg=fLs3
z$vUSiiDy79f7yOHk#DR2Ys3oV4KS{4z10jWP08~LCgOHQEJ~#%;&MkAh2a`psC;mY
zNd_HCse}Nm(Az`K4FiPCZj*f98HOW-oz9R=p|FMioVyl1`PoyhP^xIF-s_afWxzf=
ztUN`jw-7~-VP}z^Zrqsq5TxU|<b09?Zq>o_$|U$Ic%Z30wmpUBz0q}r53xFm8a-U!
zRoTwY)vM){w@@EtyJ{k_8}lA8td~WSi>q)iBE95IZYcnUDuJ<f9j<e5wCY@)gX4`B
z>Re;QwwVx|Xuo{JJh=vYBpv3&)jXr#QdnAfW<fkdTD83IdOGA0RVZddQ)L;jG!+0W
zr3j@)X0U}F8wLSO?KjNQwbVtkY7*_t@#V(_9l9NR0_o6JL5Fg{IN$E~-@Ypkd2D6Z
z4`)pu+y&Xp?x;^y^22qO?XLkFEjeSG=523YV6VQbi|6oVU}}M0JrDWn;7<pvWv6!3
zIWPh{T<72zHaN&x4vfNE*SyG5FwWXs6)I<V-}rrNoo)DzX;UodR8b@$kt(GMTg>B1
zxpePG3;*<&?T0s|!AS}gP16PkEmJ6sscMxRdRIER{J5Z#k7D0JI(h&73!m8m^>3da
z@aiDo)eLx(PtQU|c^_RESs2M5Ik<0Q*YVG=pR6A(@0i_JKcb_KuzPBAwFyA$3;ok+
zHr|YP1X~CdRAAj@(KChIYjID}m`6WZ=isPE_96SokJ}Fi26H7G+7@q(Yy`6jb+t1?
zsWsT7?^t5}UQ~It%3jex)w3ppHpEAbOm72xM5+fxfr;{>K+1q9=qx_FE9KU`3+)yr
z$dwZDQfDszrN)YaqBH2Aph#s>ASpfM#&@miyst&Q4t(T;Jf6Y1v9ZiB`#<nMVw*8D
z5yqrg5O`aeeHqzBf;+FzfUnJgi^OcnX<L}v++W{aVK>(o*s0nu8?Q-&YIjXt#mZs@
zN@GE(;aDNJ>aG0iEn>2}zs`YS7B<(p)dN|ZBZ;d`oghORQ7!(yd}ne7vI*ujtbUu-
z&%nIKH}FNZQf@@q6P<MV<03N&xlEPq$uigXpnD>M2Td)(Pyh164*3j4$Hd9IcclgI
z*$HgG6WFVKrOC$$?wLn->=@iP1bt{Wkzhh-6>N|jeEd1U;|DPn^rV>&GlSrZRYLZL
zu-O{>po;or_1?0lerIJLdwYGZJd|PUv+Vj>Pc6ji8(~pnx-J%l(5UG}16H^D(R^b;
zL>T%`Po0B<&)r_<;PA6-ool-QA1*a!@8UJmW$)QV?mU&ZxaTW`P41K%{r09fpxGRV
zgF3^D!wvh$D=Yx-m-j>%9Vz<d_-2@51EOeFYPCQV52{t2Q*7^P)uPQ706|*mpLdj0
zUc$&P1DmlCy93z_k0(%8!Z~K6EdZw#Q=uy}Q8w0#l>on>VPh%Lv1|CyFE=cJd7@l2
z);VyrxPXC<w>ARhwix-nhQ#ET--qU+*w^+x^b$1%@YeQUfo|T-V|tVnn>J-L9*+vq
z?U|jK%+P+cE^+scEF`3>TpGF)5c0Ol4)*4Ht(*-E)yr&et%agZ<!g|YUz7mE)eBy-
z_s;TdfWUB++Rb$ij#D10b1frT+qLZ75d6LC74@&8@{qjpnBS-J0ER_df?C^up>}jw
zMC4a0ekb`l$}v2S{Nd6#T!v8Z2?Vh2J$uyUxh@P^T836nL6670W3t3{u>%84s_v|e
zW9mA?N>Rcv&%49LB0pOKK3;-sG>8qDXLg_g>|A36XR6M@F&K57L!(#)2J*us+N&Eo
zu%<O>BQoc@DQ0}{sw7Qi|9GhER?A3IDyQTonA7R<>hLGzu<FEXkpBt-G8lBf?q!*f
z(<}oANffj@mSHNpOD;0KMjD4Fe{0s~6%jA!6(Mu1oEJ04E<deRNJA5crU)(173r^m
zmVFlcKC(~4!}ckd`+6p_eY=L!!U)wqZU68CP{rb!{Te&?ihLByB_bbYIrh+@+->zO
zl_{33_mv-TXe0F;>#Lb+55ed~CKk2jn;~kEUpZ>23Rt~#6ck3@a$B8)WA}lH4vn6R
z)H!~9*+VF@ku@sc^39M{>}r&}%Lug-kKY~ZrN36t9>A>f?vndjJ}u1EMaJAfDce$e
z_=#WzCh-CqC?5)`%;Z9U0P+D_LE#9n-heXDze4h10`ei1+}z60YwPN4M`78zF#pij
zm{u!%3{F5F?^;`iAVxtCh;JVuzl#lHQ`ioiK^EF<NL65+Kt-+wKfJUNuT{E=7q7kp
z6RSm`LIAwJb{_tzD4PbqmNYs8UYmAEbXl@XCWHBG8f9U>UDAMGQe85KL)Mj&z|3u_
z8>VjO;3ej~G&pT89xAE8Ye<)sk^SR8Rd0I3Y~I;V{$_}cd)L3(KYsJ8-f5w=xyXZE
zzQU&=6J3{K%GLs;5aQ10!H4wa1o)p2e<0TjjjJC2DW^7@H@(5Z!H3A-aB%qk^{;aM
z<KCNJ<-F5kBXp53bfuqfBqf1>h#q%1A_b8cV-e7b#6YbN)~xjQiIppi1w?3gceqjf
z3Sk$*k%*QQ-jR<Ob@v6F`T37c_3d&PEF-;djxNroyZ3!%Y5$YACTU;Jo6F=wo?!R(
z`)aX@2dDM=<>fu|*-FN;=jI%nv25Bg^BZr>s(A3Oi9N#(@^HWt+?tvC(59q|F{Isr
zG@&GX>$VLJFK)?&O53`9!~I=0TP?Y6XE-#!e)68pDTUm({MPo{z5Uhbw%a^??3IOq
zA|bb>Vo~$Rs4F{+>Pmooe1ZIDY#s1?9zxmoyn7?GCYV->m0^{FChEdw`>Xlkjc!R`
z1nv}>8V9j1`Anc@eUswZ#%Bys?ELyAWFt`Zkf!C#6g>4Dml_YilS>LNP@}AGa+JUn
zKL5wZ$DvMfZ%<o8I$>$3`09F*KJH6gZr7$>lN_#Pz=huG2ggdctoO#oE0u^?LK3TN
zsKmq!@v0({(EcZPCRGNrMn{{}Fpp=n8SU%#)b_**LEYp7Pu+Ux*#|26&|qx8f^XPS
zEWeG)N{Soq-#uiAjppE7`Xulw|CU<9@;n0ExnegSZ^GmXB@He3xdNUpm~Sm^9;y_9
zmLj}TRBWPxe^c@(rS3RN?_5ZY2g{9w4$vSxBfxI*g~<gTg4C8mc^n1TIGlGz4cAH6
ztX$A1|F&&K{n!{kCmLm9C35An)el@dozhx<EM`au?BiGegwIeJ%#8W4ukr|_f$6}(
z0Lcgy^ljKfM)dmH3XCEilju2O33FoRwZJX~vYP=Z&nrC;p&f2cd(K8z5e;9dCxkj1
zp~i`atG2;|p5geT0O_7jWIHwG8=-p$Ed?+U`0z^F7?Xno3HaTh4*8&rr-cm94#Z;x
z@XgB&2++RSf(?Mbb51GTpok41+(>6^fK``nxgro&k_2K4=ZA-Z{+|L=uVP!UTX-q`
z1~yJCp4}MTei6Lf<Q@ieLe>B!r&Pci>>73l#;Q9uL8@(=Ojiplt-&jK5ELQE{-!~A
z`E{CyK2bFWn1myo=im^5LPw+Ud_Ex#bUnMUs%@>WNsJbrP%XccpX$EjukXk$Oy?{z
zf{;*3sUo&v_gHcJI=6pAc|5%B?uuKS(M^f<8AoB=SVVLIuY4EqF`gJ4j1yz<Cw#{n
z4ZTUP)0(t;2QV5IWHfFK^#=8Ww>>;bbcwXT@^1q>MuYlTF-sg4KWj*U_>B=)f3*BK
zz8ml-h-I;-P_6KE9`4G3%IU%D|An$063fcqb`4O-Ly&a|H6|R_g4N5*egm`@vQ%la
zVfi%FgEZjB(@{^=1l>ZOnLrzOE~45gUL&ABoCD`X(?})236u%>c>>>_Pw@Pr+92YX
z_Flp^MVWDzc2~S9t3ra4GKEYUu=p}=t>}*#MM~>-AKjdgD>Zt9211onrW9Kx|9-Us
zVK}1O4A7t;-x+yE4IlM9c+zm&;|UT9afi^K+8^Ww9^*Q<e(gIJW{6{8hUmtgM!uQ4
z*o((<c&=o?Cvz9CzJ%D76Uqs5ke_PwipmLd&k+&KkEsQ&u8oBaCJj52N@0-6{N%y-
zRaCU<EH{?C&@$I0FkNJ5R412zO|*UUKxbQzwhD*eFldGVfqbmF#Pr}w>x6HX3w75D
z4XnF9py|9Q)SNmxFXV`}6HwHQ%`|YV4<a1v&bZZ0oj^9WEZW#6Zgu&+8QSK(@^?kO
z1pKUxxEt}=VSs4WXpe<3!jy|3K)J<Pyu2DupU0kT!QKCD!%uL#8Hfz)&ht3O2=N$!
z9V2%Eu3%l*2oe1@4zJ$UfFE|%_6N`5?*NB|#-(Q`#)GKJdt`jLoa(QpYPJ?>X$6`s
z2xy@oG8Ewbpx1%+=yjZ#fR4vGZen}{ji%+=hZDs~K!doJE3%evVivj_1%abp;$0MA
zwUcA%!XZ>40@q}i<Y>BZxZ$xtI1I)`%W98S`?rl{>D0_bCAjsjs;B9@1PUvBm(`y%
z=hM5lOxrUf(cD<v2%MUl=>Gw(=dp{3>pGt6@Q2_EuH@_*J1W4YHMfeUMUM~x+P7fY
z<L_J$oI>Q~DO2NdTd*p!3r1B9uTaFn6*%NL!#jp5uH_s)MR8qzw3B~r*RVn8Q<K+m
z4cmwbh`1AahOiIqmw<{8b>sy^M`tmHM-6yPkB2pQSdE9}cvyzV5tv~I^yJq%q9?=P
z#+^~($`)8=Z#yjWvxE|&wO-I+lZ$|zwu?A^RyQ8Fh!aB9EbL7a$eL+@EzgVpc-RyC
z9H$$HuqQ;LD)vTTPsm>m9Qubl5B~Q9y@f+xKLlR;{?ReKcN&B;K1XryG`n}qi~sKf
z-}uDD`g_ma30}v+>#^$nw-&m0+&?*f|1E{?h5I4(o?Jdb{s>SHc1oTRJ0*R+9dPk^
zJJ<xshhd1BZ<0jqk_gq7@0aY@C0V7X*X)wKc9SGH^LkB^9mH<!CdtPZqGKbaV2k{j
z%npMrR-2qj!Ft|*G<TsU$#P`up3&iLeRljecYX7L3hnO>EDwuTTk;z*wEJ*;IA*Rr
z_|%aN_w61sg4k~PzipZu+I<Yg&nHm)45@p8x9ott9#sOWX+o(M8%&WoPQadwIM&4r
zV#_X1zZG_Q5_f+RcX?8ll;%)XwJzb2&}m2?`*=U>$)G2p`_j25Lu|<q&$Fjd?X7*B
z?nf;d=-jrJj3)HMjmOvusOcV)tWhGJ-*tRPw7j7bhx?M5I)&8B=S0flmt%#1PVCKS
zkD~vBZ_eOLUK>#~@m181&DWhS_TXWiAhylzR0Q$W339E2;%jJuw1skv*@0AtN{YmI
zSZDTD%{5Gz%8=`mXvWKD66ioB*F4fH%u*}513KA5B$!g-tAtb`ms?yxvn|^*5Ljsq
zLn8wPm&O-#sU;*%-paW33WY*$O4s_XoL+4YALt#6=t#Lzsn9|^u9>TK;zdA{Do*o$
zV`ic_F+K6oiKiy07SQVd6u_#HppC%xUE>NcYXoAA|Gebkk*g7AH56L`xEi)tK+EWO
z7XMGQd4dwUkm?e0E5X|^7_X>)N=>NKzvxrGso$vIsbAESJV5o&Ad2)j^9FAa8qm}N
zF!ely18xDPZi%)_p}zDlIKA>s4%5?mub$MB0yy>05Hj^R#k?V!iUuq->}`23$kfD(
zT?_Y5Ww&m~GD-<Vo=y~R>W`1*9g)(;Ei<J^Z1(7EkR6DbWh9B}A^g47OuQ5`M@zF?
zHkBf{b^`~b#9}iAJx1W<JG>4<pf?omj(Yrw;hTnfZmA~K1~aYJF*L-lWNeHvkab3S
zqF#S|XfwuhliE)m#2&-`z@uvQ<3GptVA}!BN3ccwwR6Fk@#x24ur{Ex>GqH888PZ~
z#*sae$@{R$qpYWXq};!KZ+YU)*^RS1XBTJ5^lW-|Yu5|mz2jToC{KP|SGTc`z^F&T
z&sweRe>7ZhEuduE%a;uNN~?h{@uz<Y;jegbjqaoD5l@}tFEl#=I5SJndS?M=(6#n<
zy}*I1mAAgZf$Q0Hb<V~r9znsBLYVW~`v4Pq-sfv=%I?_hN37(R`I`J~=^0&P`JdWP
zNMveH6lH7NM|B2>tbLCyy*?Hl&DsMlIgH~J{+{txCSO}bQXBUT+Y$!GlHLBm=GkML
z<G+G9-C}}BNC4;=y-KAMQvj{qfVpz4H171eJ4naCwPkDImJMO4)XIj}ADn4xL2M=g
zAkxn7i2ag(zy`2Kko}Bd`anvs2`Rx=qy$@$5+<RPU{_Np`Df9j>H*fJsax1wGi6l2
z3=L<O&<S|?5^Bu{L)STQtfgep)Hw?)%eAI}5_bA>u?@R-Rf=Z~t`Ym?v^SQvly{e0
z_wqdZh!}GH8fLr!wficTpwlF$6jXb<g{Sp35+#U6l0Q=)!ggaPkdHJwGLqlj1s~ov
z<qYSsydQjN=B9SD3k%Y&@Kk+{?St7%B|Dj{Ia#JItq4vJ%%j2d7NE=}A$xXN=x{)3
zGo3KR+*F;LWBE}u96yYdsdLhb=mEiW85{}PwDv@oFdeUvyS{cCtw>~YAi(ag`bS|e
z8cK5}vM7u70-xLbXK}h(PPCA9Z61&pnyqRmZDmlc(b(3S<n-y+WD-O!1zaJ2M`egG
z{xuB4WJHMgYq$w5`uyiWqDS~@jkB2%8b<F4w>zPOR#Hv&Bt}>|Q6KDK;fl`Fp-Bbb
z#CjRnK0Jd;Z{eyW;)n(u+LNergQXreWI|37IvzPmsNxybXtnM#bK_M0nwt@u)0Z<h
zNJ)qNFQ?u;y#y)#f#fG(>iCL47cHR6*~HWws#Dgi*Eqo!)|1$bO|c{F;GmbyvIIM)
zP1Ji>160(|<n|T?hq8QWo=*o~f~osPkGMcO8$S%j(k!7O*`7HqBqSiCK_H`Sdz<=0
zk)~l6YNz}!v#JlZ6GfY_y!uXdLh=K-p3lS=-OD2_1Sd$D&K>Pca{Qmf1v}I!ZqWX^
zx6;V$-|X_yTBShs7G~&8dW}Z27CUfU++bk&YG->R+X?K=XRsF$r*1tw3OTiKUj!!K
z)*o3<+ab%s;rqig>wCfs6Yg0*Lt%F;96fOKz#Yo^!<GBk!|Z6pzEHmdB7sQG&P~EH
z;%9~?8-1@l|MGlR2yhNsBz}HxN$HE6w4;F^R@S-3(044<xjWdo3S#Bl<PaSHJSSX$
z$9+ifDgB}VFMT7Ovz=Avh83!X{f+FuY^Q`$NM&Y}hxh0jy|)G*pV?2ga8suDMLI}_
zoc3K;Ht?5WML=l8uepBr?ixyagSy-*Jjkq~w7*~xrJImNJjYu^iV!WLbOdPrUVa_<
ztY>%{8N$8!z1qF=^Lw?VV+vMbt<S-A&a)xMCOGd{c2BakVK&Dm65jr7KhZypIqD%+
z0!@Hfa1{juP~_)&XgQG#A>l#0PwqxTxw+<8SU=ql%t3!>8Vfn<T!=MGkQFeCo?z1k
zG^%>uJ@;?GAme*lS*-W0VR4%*CPrNrRKW$YzB4Ui(=;k%dW|ZbYcX+ci{4u11Ne9X
z;yjSwY^)f1iru&>0;94BjLIT#Q>X}9Oo-5E5f}gCc|N}N2%elr@Z`YjJ18QCzdVgL
zrWQhEj}Z5HP`8;eRgI`9TQztQr<!07ts5aW!ZdzmK_Q%=4WfmGCd9)EB<%*m!-~{g
zZ!<GTenDn%nJq58bn*$bG$^LqEEzUCd~}1%<blaHMPtSA?k!V8w?A?#;cw*8{@?VD
z(a_u$;z%>AiDUk&e<F_pDkgD_fEs@FostDEuzS!>E+G%@=6`YHj6e;u@M>x<yQ5b_
zV+XCPzc2N{?YH!JSdT|&JWApIDEMHV9}oI*AN;lG!-GEDi$3+@K`$QB;dl9PAA~1R
z=*_Ip3*u$)?v0WHIN3gkD*@j@e)-_|YPf}EwCYpYtE!p^_lIbYCFaq}VuJsV!}Ud;
zJ8&<VgyR{^htm|gkP2L=F$Rwdm;mY~7-v~y8^V^A9uWc2O^`=%f+UtNBdkbw)TWgz
zzbK*Les~sFz^ITcOUOSHN~6zVaqDH|-$)cnwd^l{2eBa~a;=iwsx~M{Aom3Lp}1mK
ztBGGhyhB2+f_&+@`X}l^z?Thpj^|6|>bFbl01^6ODN?K-?}M+QG#>WhVJ{x`;9)l&
zcHt2x9+luR5+4}E2M6%M6h4&1X|EZdq=g~?_*zl|@u$6D1X?G23|~uXxEusO){Rur
zaggjqdYV2+f0UNcB?H6KUDZ%^;Im0Q3ICRaD;u<tVQ){~og_AZPc1d%KmG{PeEw3g
zcp1=~=S+rQv%t{aK8=-M#FCP0q^hGmG`y5V&0nX4F0?U;ljtG_aFKAbH%SmcR3-dn
z0LOj=fpQW%;FW;?xiHVK(n%Yv6LBng(9aHBZ26UXP(m%gO=>Jrw<m5>liwnUr$~)G
z=JrIuyX8Lu+Xnnoryn?;uM))nA`}Loa~^}7_%VUMLMV(ryVV6bEi>twd?r4vP+U3G
z<hsrzQ>XybWg5VAg#s`g7RSN8O0D8MLaqc75CfVy0VE)UeVLbl9H4?8BG5p~mWDQM
zFpXP*E}VzxidNhrST9EWh`|+5Q{pgp2hSP8@csbatHM=Ym>z+AR;hB?ST&&1yQ=y|
z3Zzif8*m;l1%s@Dio@#;+~c+N@HXgB5%`+y2prl18#*dCMm+9-Sta?&k0mOz-{}hJ
zaRqK&ep`+kBVJd)q?BBKNutzy9IlXoP%Qs3sWqx85@KxbS^hkP_odWEEq($2s@ABH
zkW!^=`3ycSh5LA_OuFR-XxElckjGF~dx@u>15ly|+9U@abKq8#PPF1-ZLgMyC~!Mm
zrW>&1wth%f8}6yvl*X!ZLNbj_2x&aHD^-FwC(x`wXuZ~hgyb9~g^%PZ(PxBP-iEsy
z@VZ964b3DYx;`Y$<?UWQAw8y`$>o2N(?Pe}Z&FY=PQD}6`@PPfUb_4Yt*6u`Enbiq
zl;n1^RZEd_o#slKc*Urq;G768#WoBheoS7#5<Ir~H!vDJDFgRG45Qr;GvJtR#h8Ln
zg!C72;%OVJi=ed3L<3}W{_;HB!Pjv%WP^u1!+~R{2%m<Tc$WyHZi4u+RIZg@dByC2
z5|4j+`J=QE?sZE@RC=`xeztrB|B4*M17!#*>h$@w3}d5-y}l3xY?f*ny;p0s*y$@z
z$Y=*fU}MC0h!W+%QrH0YSIB3RnFlW7H=V;^rS(O8Tgjyho%DJg=HuQpo=un1L^`c>
zoQy8@J+3@V9un67(e~4NgjL^KdKdDBPIBPnwD~xPrRntV)1;aN=SLkUx#*Iz?{N-|
zA>;uB^v~wrH~uw|Kbwndt-zl|$>H|dL-Pa4iC#~1f*ake@pOelLn*ghW6%!nUN<&h
zuzzAUIv6(OlgVO`_&2p$rOAe3OtKhHZ%8o#N8G6~nDqgt(d4$edM7g<Q!`#B5(!2C
ztvEodFG`JA80*8fBU&jv+2`=BFeQk8vZTk19;G&U+P`GmuRYXthB_=Jpb7;6!XFU@
z9_3G-=J?~Nt}`4sQcO1$R>0G&^j&y)mkC)=GoNfCz6kNbocVOh>hRNymXgwTlgUm~
z`E6aL5A@qVqw(Z}p>if#i3Rc=ntZ#wv@xM%0@fk529_q0P70!zgCEN;q(YgEd&fd!
zJ>FRFx6&z3_b9~J1y63JY*-eX6?WDNT?9|8Q<_h?{GZb;kxwS0UyvP!Kv8I?cySx8
z65}$T;#@la=Q!O`l6;a&%A#N3WQW@}&_a8OH8|R`FfQfUik_IT5)zsJ1B0LVWMblu
zVN)U+wy2~eG*2>RwCJnUCdLyZVU<h<BJ6IBL8G+#p7`|ip^2bWrPnL92Cd3uP)dB3
zoww|~*%eUeVNWLup6VW{9@w!S9y|D~!q)Q~J_kaX6#htw)_eBb6lC-?vy}h5x<%Ft
zJc_x<O?VI!J<Tyo>ip+9b*n%Ni7jcHBYI7!F(AbE*nE0MC(Yb4wEpIT-8-_Qn468t
zbcmzUhohBf5JZ=1cRn1frip*&IXIHZWu`wkR6aDF2#4`BC6|z3PNbGMrPJQ-(Lk`=
z<4g3wJZuF#^8ujmAuNp@Lp4ch5EVUi&Y{;k!WZ$aB@5;-p3rI)>Em7q<YkRL=3P>p
zv>q0B<ysQ9q!8DxAPqcP;|UI&BS`}_m*5T(oac=_#(9^lij$o6aATV;sNb!7TQyL>
z7;~EtG%>%319s!`aYJl<E?ms}luEhQpUCxjPo9j7?;9(FK<FXKhOt0*&`3xyyDhRV
z&Zu;1qupuKsuk2@C(BDy@o0IWS6`m6M7!P4rU!}d;m=B)STA-HT8B0mFfDTtpDXF(
zVZZ!|>;eBN=2ZNk^N{u+TED3CjU#X6FYyfrrmXx4E_)#EKgGov@Xa5I79v_x>W#Hg
zrc)nPZ?l&Gf0mF)Nom3YqrD?)twwdXRO>LA0kfx6z&=e`a^rbR&a9va>R+@5C81F}
z;;w$H(`8*Q0@h0)|MCB6bvdoQeX~7wxk9cnVI&sE-zN3|ogKnz*v;6l_>9gBK88gx
z13n9;v<>*C3%LaN3OUwY#5bLlVUy69Ik3(6O{Hi^a-wiBI&-3A-e@Mw>~URMM)m@?
zMy>Xij`uEkx8hrmm%O+a0_Mt9toJUgn3%6G@iGE}^ZG0E^@0HT`tr{qvL_Gq`8q-j
zFXal76CAjJdFBL%nQ3qdwVFN7p{u-xuF_jN&cW*dk@DgivgJZn6i5gNa^O-4`uX`p
zp@GG7?Hc;tRVDP`TeiA{UMdyd5qmU>34_)*d{d97-=Nfly^p7B-OfPu-~@Zyh&vf^
zdINUG<{#eL<;<ARt5n|_=ySvznt^U-!l6m`WF87wC&m&30iEP$HpZB+rrEq*qgGmI
zgO!jH=5W71I@;}G!ad&Th+C7f2L>%nA(3Ib98${qH`zYDD`Lua)2`t1UbmZ&I3i5I
ztFwC1{%yqfh<m||B-rIMQ3K?l6H@_k)?rS4)S^9;Sn}_;9HI`1h1rGH?PS0a3GErK
zag11vU1&?lL+V_s8k@KmI1?r#m~i^~18j`qXCJ9J3#C7h9hk{8#J@MBwV$nIQp+dB
z_pS3!JQ^I{Q~;Lh7NDmD^=DLxUE-ye!G8)K4g-$}!A0!nZ1f^}u3t8H_<;q|_Vb*r
zg#H8`$NnOe3*)ML?`x_2{0~ZJH;Z>{w(BU3Kb!XX(^+5ho(Zc|E+q)?<3il+j>SE0
zjJWy}{B2wf?$Hmd>4XsD<3BwcQ)6%%v4F_mem?A4G(Ab(1??xg&rAG`hLabeXUv65
zu0_i9Bu62+7H+qhJnrRli@lw19LEePwwFmW;Qmx{sX}Mghk`Pl!w4Tn?ayR<fpo@4
zypWyhbxUP3wUKsONQz7qi0)NS!%NdGK$^O-ZSYw}R9FuG6x`hm5S#%I_6+b6mH0)t
z#~G}|Ty*Z&i*hB16~D_Fs;_Q6qNP@|;o6WL#Hp`Yt0^-w3~`Ih;A9x5UP1kErA(cZ
zC=GU0PNUF%`FkpPi*Tiu|D}Uq`CpYPr6hb}xyf*P`Avh4e`4$p;E7u*+_#=n()-a<
zi52eq`6uWoMSoa%U(NeyUR%&q^0#2#En^3eruGKFWP3I}q=$my#L8giH7T`cMwYy1
z3QI%1vHW7}kfnvXLY-sg^#b@032YewdONaI@Sfq?PgqgOcnvLH`5sCXUq;6?dV7Bh
z9t=rScaL{8D%IJIW`|Ce@A0p1sJSf=u;dqV)h$*>S0-Z}n97;fR`r$d39B0XTi=!L
z%Q(X}RdC&GzaWW60kx9C9$7(s)2?YTr}lJYDQNL7iUi^-3!zm*q|rvSr@59RTIvX|
zL5=3qLyLA4GSmnjwYNV|iHbz91$?&r&aT1PT$?qk!bdu>>XFdH086$3_*`ECPh$jL
zm#{ah34a9cR|dRHh0^wfZYl6NK3Ztmn^k9f0yxc7;B#VlaQ$+<UgAr!={wo!#i~D2
zJ2EwXpc?wLF0?KkUl%pO*QqV!+oOxKsYq>qW%S@oGB&Zl8m;uWo!ymWyxi?tfOpH`
z?+{-EcMGGOTlrP|tP+ynjG`P9W`-e-GMn*8D90jwq!H-AI<9(apu_M{PV>;#SO*^6
z`a~;B>l(aR9qSYq*4dNss6`Y&O3ToGd)F;P%~*#`Ma$7(7mRf(OVbI3(Pdh`Lcv|E
zq`;4=L-hnK%4IXt`%tWt=>AqJ4PzY;6@cfzM|ge|^`CXA`uM0IgFjp{8dZG}mqZ&_
zjGwkHb$?!am^#7-21Qh8*a!?5@i=SzG-qAXc7L8j$MUg3vAwWRYzALZ^v0NFD}w{x
z&;S*j>nUyPxBEtR4%<@6v{R~M^gbIO9{98>5ck6HKqo#kE(d{~5Fwz*k0-&`+v5YI
zdH4^|dO#WVdHC&^4u%D4yYf<G$*(iJ7tM#7^=fZj;t|_55#=SW`S%;BQsdQ)-x?eL
z0SN9Wxe82QI^az)t(L_a4+o4|A0q?N$Pe{at&EaVDr?lW{Izy{t9YUoxkN72!o7ah
z6W_t>;3<kcmhU&P0>1efZ_=Ao+b-f;N-j(tKmJ<o_c<ch`<Sgjg_e}ZzpZ~sPw1J)
zsKc#0j?K4kIaUhg;>S6D^XO3TV;nkHuRM+l#DKNbQ_N$6g!3TBXydW@&h=ouJ>8AB
zlD4Q9P^2C#ZtL+5rafvYNy#KiSF|^j8jcTFi!pCuChzWw*i{tx3ngWO8BZRB9^=J0
zd3R!c%Bs@o)E2YGsHSLx&L465ES6}gCo+^^6l#qU{6(*(G_)pWcL%IY2<@C50Q7o_
z`VyAsW1^?AfF}aEP8)S9&%wwko9dMDVB$#`Z=)_FNQ6soedk9g#y5Ko8Y8DTo3Uh6
zo#KoKWr-(+5FZuVh&XL1yjvOlv_(iT*oU9tPf3-G+o#*Pc}k^HsVAjE?E5M3PW35o
z+#Z%nq!dBYj1@RNlI;t47)C!Iq2!cA0)Bi1#YX=pm)A*D1|-wpA?~G2z(?bEXjTMx
zb#}qoL?2L)u|><G_jDt~Z){J%Z+|5mp!S|_3GN&2OnYqKl4N4qa!ka%wt&H+p|X3r
z24`}N6!^;~8!hcC_}G{@)ii?nJeoT2nv_>w>GF3g)l3TK#P{HtJjC}wbZ5dM!oFn&
zA8>phK4<jFeZaH$KuIO@`g|JuqUI2`$WM{DEn~OBsJ*doS>x~g1SvoO0q09x)hEN@
z_C<ZdV{+)^q~uvrY4SUr0ke{Pj-nK_)5JIpQu49?Pu!Qlw^dzvzxy^x?>$Lxk@TMS
z)mkh|@-8p2EjxA`J9fMzb`r<VN>)Tx0t9GCN@3Vq7`Arc>y&Lup=HTN+)`R*N};8M
z??(qHEzp+XgLXQTX(`YQkjUS?_eqZJBow~s@At*ApWdqb&b{aS&$;K^b4cns(kQwa
z8`QG|tGQq?qU;4m-U$9INP>|e@!PCc6mYM>$Wrh<D##b8AHnySPh5uA$pnH`j!edu
zf-jTfgEqO@W;C?4*xJxcq-3zw@5r>+D0h5^dw1#0^s=tgCCqTyvQiB*RL>0e;oSRX
z)_0xz(y{Zu|BR2+J~$)|6#W2YRDv#d&~75P0dfOnvY|a2N8LwL2FYbpJ(7XkOOlrW
zgXpx|ofekbPm;TUQPRo8TP-ulv_TLGcb_4eMdYW6CJ5kOeE=BQ!USL3L);sO+R_N5
zVTRbPYZoDKgwTixL~B!8gFl4I3zOicBMv^pbCcj0v<(AcKCvUrGu|E2v=W8M_~RLa
zWZGuO8vV@cXE-N-qX^(JgYKKC%_^~Ik!)&Fr8gMJK?aBcm*!K9<Yix=Oi;6T1w{6d
z`&nQOxSU?eNL{>}GFshsm)}aV-yr|PBp7HCvh&Y=2E`l>%LYQhXod$_1M}1mXf(%V
zFq=L>+yG9J8zBXPr5a!ac;c|p$f=Xy`lCTdz~rz^f*W%J=kV;Xo2)xbyQoWwisS5Z
ze!7(BW?ZFByB><gf3sQYjOS%W#kR#%vRw6A0p0(G0a$!44caaA?c}v2D|t1|X9Wyt
zHS@I5%pD{hR+~VR27xc^A;Fgo9Aqh85ebZ3FM$sj3*_s;qQ?Qe_Jq#{e~8c|_+^ea
z1*Ly*ZnuW-Vs=5GdK&(pRmd!72|A^J$ipj`@LhR$4HUyq!~Z1&n)Wa#;b{*8#9=i4
zvFQB(Rmm>gV1+}IGn{yvw_pu-wJ34cKYWDCfEukfv%z84IIC6UL7&TQf%~%RR6MrA
z5yosoIwV0I!>g!yLLlO$y52jFuqF!SU;g!R-LyJlqH;K&vg_B!&&>GihAkK>EmAH#
zMjtOOsVp2s&!z)l5p&J#XJ3k+eZib(UvQphFREy4C{H#vBnwBGvTQPuZGg{yh9Chq
z^%w94vkI!Z38D-~U@~Ryei5ZzdlRK4eS#^=;e9l*@aBs%6*ww7y`*%uiVmKFR;=Cb
zkqr_s+QS}q*lx6#oN>QDp_xot!takeO<+%HRRZ-rK^7Pmipx(LgGo2fyOY6S%E|N2
z6r${jsT1HadNpoggU;;^@&Y12*vZBxc(EL|cMAa<D?U@QB%VMAb8b{)(}j-DGQw-m
z*XTP8kP{tlkp&W~L_F@0VlbH;5w9nznoMfc<Bd2>pbk|dq2M2KN)S1Q;jO}{fH$V`
zycY9%<4%rq#^IPQFZ>$pCVoq}2`|PfUiA>-%P42YVLk^xLuu_gUUY#O47%*iD$`Bb
z4Rt!{dd93c6-ng)eGRWgT+WEf-|VkVr<^Y$_CZcwpzL=CkR={KT72O*;LFq<(B{hM
zbUGNZJxLBgt)3vSILi5xm5i0h9EZ)obV9i?kD`N6G-??aI(`moOFDN0zl?e_5J$Zk
z51`&;&8l=AW0svVZt&HD8gXi{!BiknfqJwe5K5tK>U2MTg%^yRfyM$(ntlcN4o^;<
zEWSgGsMhPg+9t^>j&Z)QvyZVtPCDLp9EU@pZbrv)R?JTD@OfH4tB=oW_uT!n+Zzw+
z2jGx&34$vHd-tobmD^zN@<c*!BRe_u^b-Q;haA~Qpav%Y8FjTONA=;x>4p8yu;aE&
z>%27jy{J2r?t;H4Bfy<gC+R;CzlKj$i7?Tr&;M!Um4uHF$SVjL(&x%!EJR(m6@5!h
z&GG7LJU@cD{}?=x!)G*j$_3BO`BLUQpTU;Qyrwkz1wTroPtDCK@J#7genBSPd5&K+
z#;HAEH**;r<L=@Z?}qPQ9OB)j_XeMHgfmfpO(vziXb^B5g9#{CxdJlF$^jIGS5EyL
ze&;JBORXd(U>iW;cNE9`0Llgx_k_q0IM^F~&~R9!TKwwbqG-dnXtT|0cLrseB`0XJ
z;<GygGR?eawi;=JSuwL$n5`!G#Wq|o%s*929;RRU9M6B6;^FhPfJ9T^PY~if@Vg|6
zc^DP3Wsw~+fXmrJiHDxw1&)wuvW0-!iC%Zgz@MNA<ZMEOJVNs)@~BeewD(BwH0%~n
z%Ti&L4F7@qjAm%<eiZZhqfs9#xgedo$WHj&<D`Mw1-1TL2r%_g;WnC>(g-tAfu%fQ
z;QpOPOY!xu%JBpza->ReIeGy1T`6#B#<x0XLX=LmNU|(ZKN6+FtKonz917ui`D+Rf
zg7=vl;mEDla~)AAq=Z6Cm?#`LK-vBLHAEW<hQ)z9?n7u_Ys0atEHw9Jb-G+^n!<ps
zlN9`M^~CCx46t~evP%)D`r!tTzj3$*KqcIvdPI_0_tV0PSAS6$`<Wo|3{)_gjW50S
z=FXjO{PO3UXqKf|4(l10!xsJywlGM{*D+Mq<Id#biVU<pidrh8a*HVBg>Z3ti<8yG
zCZhwzCZlm(icG1O>uSkq4bUNj-+3B_>M22S$u6%MFypIMt)fZMquM=^k=(S0bnblf
zwU;(BMwVoFNq8PS_={J;gFiKi9BeI1A1@5R_Kp^QKz1_wi2=PrZO+`*=KYDH7;9gT
z_P%a}gCwIDQg6XNI;E{m@%|(a&qr%t&qs~Dujh?u<Ye>$>MheD!bP(U1s0U(Twh;T
z@(fiMm;D&9E6;{&s@w5Y3_3-2(k6kG-OBvYYFP?rV@P2|T-w{C)Qof}P8n*aG;J~)
z6I#g5i;2$K+RlW?*@J4i$zq}lQ=)1%(jYmqf9s2#OWR^lBebYi(P3pt<5gGQyJi1q
z643CFD5(gCt43Gc+Oui6ndh39Z0!BP^3f_8uvQiI<{n6$4UjrRCF&#+{m(LtSo?a1
z?{)Dk>Le0O|Fd~`z5`OHL-f6#7tci<*rWE6C#{4VS)A<z(Fu|Z$74*NDo&ju`e5>G
zK%iXS5VqK=N81&b4eqflq)`&(f0g20H8ovv2~i`?TRECBnN5;Q=@_k65G|1=L}o>Y
z#Q^A<!SxF<HAu>6E>c6Tgw*K0_=1HzS22Hi?+;dt=+ux!)nX{ov@7joj8>eF;Y(9i
z@GN}<a%82BB_g<oU<nue3*m;O4nc+_P;mNtufFvvcF@3mU8t4#(RNOL{O7*jz8>1_
z(`2W@QxzR4hnDUrC!y(Qht>d1f93wdw;nrK`1U_>62~CRW$AYwJ3Kyd<neDWW#DjO
zIFwiKa@e}>;nr2_+~@~iIApgHPm(f(ItK1oT^w#6Y@DdK4<67me}(yc6!@N6(NRJ2
zP#1Ce%z*CgS=dKYR<8=JS0h>8k=DRl<A)#n4r~l$KiI|x!05rp!1DV|7LK84*xYYF
zegw+UYo=%@(S8rHW*;#D_b-S0zr*`i;r-DmH{{PZ;r<u#{vNo$0q<XpvFRVl|3xih
zu7lcG7LQPiFYb?JRD)GyIX;X?53O-*zsxzI;WOCIWDP7EizyBS*IC8DMq|-vHXB24
zU9YNC6alz_%GNue>@*mt9t*TTy}~OVDv(YGD9_7+PgQ~Cz4t6YRei$CrQ@#%UR5P6
z?@<r3;aFTY-Cg+DDne1s-ffcOu`qk#Rzo-zlTCL4Muh(gpWFqHN5h7#Xk4|BpHKja
zKz6@BqAwz{x~Jm%L<TBD1fhU!Il)t19sIMU`~$|}fJj-B5l_5)qB=7@!*8vwwgms2
zw=hik2YGaf2Cqqq&m^mHuVN@=^~v9ol+q()^reRS<T&*&WNN{9W#xkUL|G_O?ha*q
z=1{=qv@+4o)eV{M`tnFHQtm<7V1fa~1v!T{cW&$o+rt&<xL@{GwuWV%hWdrOYfE>;
z9!jF4u1qc}@+fu|zTu73M$pLYfvB%*HjG%(Y?z!lOS94Kpps_-gbY?qmYo)ZikMu3
zDjA@zonCzXzj0y}6Uz2UqVFK@!rw7%ce$h8=!@EpW961{=kPwVyN*|%`}<}eaoEYL
zSy7c`&C05r4K=`K0)@Yub*wTvw?*hvp=$Oq5hLcZDW1BUd7oIVM?D_vAMW?|dqcyM
zz<6v~8PnESGXyPk;SfY!Xjs&oXggjrz1CR76Q!o&Ej8$#9G5TN#h}}c<Rw1GVB4c6
zso$C`-a1!r%%+*ylgN0@X}07%HTVp3*Q!!?x9qs@0ta9$PMhi$8B(nr&ZX=|8tO{s
z%7I;jU%9P*#m+rDm)EDqZ<?^d>omIq3NMGRy)i98DTU&!_{yF&>0`yR$2HUAk*U
z7Hk{5dQ}7SOO`j#jKOStja3|)J>+wE6@xeI+p(s3pfOQiKe&78{EL@m+2>i_NI}3f
z{)DnBs%U|Ipm;>1%ja@sI%4w%8{)~@!QD`DtbufXfO#LV)Pp91@O+n8JN5KoE7`vm
zts94$3ECdA68$I|og$XQtA7Q1Wr!FjHt7|jze_A5EjcdU*w?>qJ;OGzlVDel6H~+E
z;gH0l3<kS$LPK0^=;&w=<Fqz0NlG~vp>=z^z3cmiKbRoah5N_j%ZyB8O=>u_9`?>*
z*r`k5s7EDBVc)2YC#ofVEz`@zg(xWhy4qO$g9|O_k4p`Ike~BF20ig8?(e0TeNb^y
z{M4lW)KBSfRngI>W_n)jOmD|1DDI2CA{CV_i%}>M#jm=q{{CeUkgP6;!)>8Jd3j$;
z(qUpCcMHMn(zeloFN~%ecRzM%6c|Le!{LJ0#NAC*WflWNQU++u`cmzci^pzURaqG6
z+0^b+Qhkk}N2^<&8(Oq`AOW^7`MWi>;5CC@=Zk%dkranL<ahWKqvH0Oz)!X2;VoUA
zSFLG$j@9!kurD#9qFBtbCZb7HQF9s#6W*@TJo$2<zB?Xj$Rw1)+GuNS+Fls-)%Qd0
zTRYWA)zhyNtMrwzKO~kwXv`2SxP%aiI&f)DXvv5zot-UWhIW-rl5);LxO%)j-q7NA
zmXtBA4Ye19PQqT?gnMx&Z_et&(qyL--&(u)oqX|TCUg?_*rsBS&1BKD`^zvRaASsQ
znJs!W4Rcb(q7L&hRDI2w>qlh3m>r7UWubvowxB7&!(M=zeEIxUZ3iybvSS?!cP>sO
z2KNq%z!8QW$^fZrl^5p-X1PReMMGV0rNddbw54+Cf`+IKWV^NxrkTgkTrq9njE~Zy
z-Ny5hCPo7;pL3)qP*VXRwYF=lrE$ZeO6CE9N0;5lMVv0D1aX9Q`keM?ttV6!58152
zSf;TP+2^Zae~iKYKzz4>_?IHzffG5doLRrFzpt5Xf_!%g<U1)+Ha?tT#mY%=Sx#sw
z7n?ddn#6M2H8BbPnDY}Zf49FI^4;5zP0ISm%ORUI*JU<D*1rq8YxC!0x{&^?%<$X!
zIZtEOzl-~C^JnBZ!(5Kbp5ZuV7RRAntJ4fuUr&uSY`Se+BN?-%D6khvHL<8EW`?~8
z>B<U$+Qm&(trredWLDiYp#nxw70qJ-Ky4p&urxrkuSQ?0xh&PUdoWSByk=3AQz~nz
z09LuYqbj|552)_iHkhU!!JYsEXZj8;%8DRZ?G_Z5A!|++Y?RX-<L!+b7iYjdXweuA
zx$ZtbELp6Is6gZs?GC2!eKosajBFwu(HgI}qAXx3JmAeF!ct+9UWyQT_0$Qvj;_IT
zPYZR9vylr>%mVz&5l-MZWE~Gr0>?pS^{l`JoNUN(BySx@$%Y(<^6>m;O*TZ=&AZ~s
zeP29wNfvDnOkR>b6zRKcN&oJFc%<*rCH)r<#7X6%=e{;JeA{z-@@RYOb5||<>W<vJ
z3vXSv?9QEVdmHj*PJK+WbR62Y^YA={%1@H6!-OR8lc3|UXC<==>J_Jtqj7|ki^D?B
zgU%eu<5S4JH$5GxJN2O6sfP<@%ZeaNvYb7jIs$h7W3&R3VtErNrv(XG0e;!wG~xLg
zo}*UW&Li7Ea!LaGLy{o@nk~h-HVOr5FQo4nakI`lHDpiDJU9{`?1&Ez#ycpBcaq$4
zjIbyzN{iMo3A7xyXe2!q3NeeuwMpPS$gI`VnLx8noGZyBS!akR@ZF2>?dJSQC_R<O
z4`9#}VArfI<}QI&-?S(@XMRi6QD@@tOGiS}-N_bLJdy^xkD~TA?|OK9*Y0Hvf&tnP
zaH#UN!`r($)^~;~mhA1jT(FvGXqWLjI=1x0Ty=wW&FgxrIXLoZk~Z3#M=oj`yKXEM
zXkFRVwrxpf-_VVl=Q;d--fZ_d6ey5_(Lktmw5EP}TgV`~?21!l!)+_-6Fv3*a3ah=
z46`~Ui>)lIrkCzn(6VK?K_Hpx;cakKho(5XnvN3XM7kK;kq(NJBzq)A(?n{LWR5wK
zVsK^J9h(H|QE`G>Lr)OJQUEBW?OVrj1pqW^j_DVQ=*lPZ#Y?qfuK!{>TQ(e?4m_<3
zmQpyEG7?H?zA+4fbhRSCU_?s}gNotwBrls;RD=fnH)9K?{NXB}<prywu$e5Rz$@LM
zvR9!U%|P@vyvm9m)#mqjM5^6{rqPU6)2W-nRN1M5p3Q}zw$cHjmB{NOEDL^dG+rIA
z7Tl9$_aQ<EOakI?Qxj7^37QX8j5*E>s$z)ujKGJ3P3Y>Qd3bpRy8cMMVvKRj97LtK
z?y_^|MVVf=Ar+_WkWmvX29Q!)yT0(qrpAp!bvBMciA~BnHuSb#IFJf0x@^>+iA5BT
z=J%35lZ9t&N?~4bVPyM#TWXG8c>neWt6j6jf}&G2X&yDuxuvIVqSZ$+PzfN#K)|SY
zlt{dA2Tj$ly$;E>eN!i(z8D~?i3P+aEFBUplVs-+!Q~QaCdsa2gpi(UXka4nbq^^k
zIwpa=B;n2wr4;vWYJdy{FILdiNAk)F23>zf<V}aVPm_eMnUf~oFeiOjDec;?>b5<&
zbNI@Mwy30J2KIh)Tdc1=BN+iJn7C-;;+j?0jwUHr$KvIcTW?(%dt7T6>nQ8%ZgT~5
zt8?vZT7BT2k*{CY6YtI6@W84i5C7who93A;vgCEi(CoK}mj3<U8n^m1YvYC+*R-te
z2%A;Ey#LXysj9&Z`U**o+6TvuU!QsZE+LYe53{T)O_IHb36+s1!Mww+F@6oMuuxnK
zfX2xo#)Zxu$>Wo_aKfwwpLpe(&I$T3p!QLWi7iyI7A@=!Mn%Aa-=Dt2WHm81nf#;0
z&a>33ve)IZd~zI#4Fg(~*2^g#IabEX9@L`?VUIpH7pb~1QgvaZQgx(K&xurO38~c2
zg;dmYRryEu9eC)1MCC<~?A!m)hQ#Aq%a)<u&Fx-o9^U#$IbTGoi=IVD^^<+ezq-Ax
zY3psvi(5$NN1-b94LSj((U4B(1nJ6IC7;B@A3{^)@X7?Fr|lp+fftm$2|=rr&IS89
z6gdYkVbL{*^6Z4Zp3L>;G<=nWPEGI}AciwnP~TuVv*Gl(LEu>yiV<L$g=n%SYXO=4
zgVADQI#KQ)C~_6qC7H<oz|f{jn#8kDm!R#`l_trBM$jgRZ@0o;Szf}oDzZ0cUc4l_
zI2T>KIGUp@Pzr5@_|_~nOOASsZ#_#YrUC(`XWa3b@eSYIQ?KLOl0d~&9zS5VXgVLh
z)&D=j+pVn^KYU^P&gD&3BTHG#rn)8DJ3B7u3?-NB?Y{!znt|mlrkxnvYKQ8Y*7j9%
zXk8`67%WXoch4WYZY2b_vF7>P2UA~Ke#@q;-RHAfY+ifB?T`9Hts^z{E6zY$D7PY;
zSXl25L1?qO9g->wmPo{X2HFg@Ll+`G2tc0ww<5N!I)iO$5!=9r5Zk!m%9uNiMm>!X
z3vzGGIiU?-hb(3FXkNb(vU1JmMmFl-Z1Sx}C5X}+m`=aILnR1hwE`z-TOj2RR{E{C
zijKlPpfC^ocn-4pRGZJGnW;X5fLHe#PhCHaY#Si5-HDOy^4Z9Sbf$$zq0Xde^-qFk
zqJn6GpanIaim^E=6B<#OSqOIo-h`p;P(IWI#rd&3zVB>J2`y0kG&L#2o)_lsT(JLO
zeqMfQoruEMjJ$y>@7}U-{*Iw^Z0O3-mgP|lb1g<I2c=)Z8}6yx{>|-;hc@54y-9Xz
zX0zmyWVd957MZ_eb8qYFHoq_%<`}YW?G11&TnJ_2QxN59iG{?o#cb+RPv=xC*}tY2
zB=@v|jcs6l8>npqkv7maNzTvN1dm6!ybf%w1B>cFQyoawfjW5Ni5&z8K%%3i>{dNt
z@iF)qqEZ0D<kZJG4(<p|Q<arWRENyYvmi4$@p3XbG4U2&laA37f2u}{ej$ifHcjQ>
z?Mk!+qMe@sMA^>*qEFT4zqxbh%JG&mQBDtB`ps=+eYpw?R5O8rH}TQ>{u)$EigLC0
zk5+BDWkvK+wI0G~Zx@8owpDGpRjpod|HwD?&W2H|%$u!>1p}#M>D&KM5lF9J)3mxH
zf`IhEqgzsyLmME`)<d3r431RqY#g;i9Nl!7uro5kQSF>Ks>v8fwNJ&-X$L6v7>3a_
zV^t%rP*fsW@Q2g4DGCJ9Kc5Fg<B=$aP?FdLN6Q;?5j2YtG>Z|`a>%+7LZsy&v*m0A
zwLk>jh!E5Q`)tc+N6<GKp^<RW{rS449S`q7+ehQw>zX<@%n!x7*EORpsU3LnmcI5c
z{p_X#FW%gj`_c=yU;Ono@usbJj>B!DdF!1h8Sd1_;0-zkZM~*xTTeM0#I|1hVb2CM
zgV1*RSwvbS+71cG)N6;P-Ud7s(3X7mJeFQ*Iu*RZLDgLK+l~K6v<uLj;fx>git3g%
zzhuyix?|o*tvSGvX0Ix#l0e^WFzG>iXazZ>Z5hVFt4lc8a25{ca*h%Zegr}AZG>SP
z9Utk`{&WP)Ig1eZ5rV(BG5l?093PdsVm9`H|1tKJHRbPGn_bmYWrb`c@O*j4L`&0(
zc|NFlFW7~Y1e!A&^R>&`LP~i@re=9p3Z)&SpkXIw7q6{beCbfaSJ#)Cx27Wk$`@WT
zoDx+RO4eozIH6c`Wjf;JU1=w4aoS|3g>hAOB?8%m<_ftOi&L@MMYGlCv4!WaYpouc
zpW-N{yki9%!O^Kx)HQSj3jE5VT~`^jPJ*c;F@_;Bli;D8)e&=7o}^PjQRIRfxXn0(
zJtH?F{F?=SIT0dX<;nbvOSRIq$?EFT8pBUVKOc$V?;6?qb%V|CK-ql?6`U32S>O!d
zde-Jo`a)@+`Rm9hTKEQ8_!`&>nuDRYN&!`GF``$KJ(_AEhj<I8C$YHHAUesx)4wI~
zeCQu34N8^{z2-KGaR25s1~%y!2+e*mCsee)0|!OL1=@`9bRPJ_H;DN_>pOXT3!}{%
zM@8fV=S05f*#;icKc!+m7p-geU89ww^Hb2c#k|4A8V74S*5v#*UF(X6{i14fxxjxK
zvBz966?U3cmscLYWqlnOU3SfQhL>y{FS!)t-jy6upkW}jW{hGe%@4loaT~Exs+bD@
z2`B)P13TcD*f#ZF)MmOGT6&$j1$;2kJW1M0mYyxA5JLUC>9oT5{kh0VWn=CyMe$ZF
z@HfZUQ`7bD=8Kmrk&}64Ba{2fw8Sgk^O?=P=q#YxT)qD0@t&Pan!=)#T(ITl)xP$o
zq-Z2r&d3F;I?5Ms?+%mp?EK!?@~ehp53k+iZE3Ex`?5o|wTr7Yu(a<>tFytju^rd;
zc7NrIJC;-$c&q5tP=Glna7}CXbqWrN%M4#UIKIgwIV|h18487(7o%~MnfjQr%tom8
zB0{wwgo2hu-C^wle)BmH3Y~)pg-)Iep=xI%lm(@CEbO5zj<7QrlNj(%r%y_fERwgN
zKo#m&vd5_kryk*PK#<5&TcVK&n$1DF?I7&S0oa$wKiFD|daQ>C6(H?7li)rnZ7lom
zIpCBNB=^a@w2>+M?{nZ1eO_D|C?CIlYuC1=Em0}4^7aci|NU6v5m)_CecND0cGnGM
z+lJB-DPQsYEdx+V*n8XPl|Q{@p!de-Z`gg$`gCjlj%9G0YRTULY5Qep-BmzrN)rPm
z>rOuAlb~V8D-hjtPlPulqz~Cm*tA3Qk<VZ;gr+2wTo_%E<MQwtR{Ai{ZYt&qah+}3
z)tuM1t6)q#d-{6}k4gjb%x~V7>;jEO6)-YTgON3#%>K{-&$i1>tHEG(%Cb{5kbn82
z30VEA<goJ0{S-~1g`$R2yP^1*nj+RgL`y?NW2u)+sBfC!2+E&5rv^%P#{*dQrcctz
z&nA1*Q1&MO2eMbUJo1Y5fJq6enqM&#+ISJIo;R`JN>=t&_>njKfZ1M{BnuCMm7qKr
ze5vTYGQ7lCJ(|s{IRtVYFX_VQ^p*g*==3Yds)bTFHB;&~L#bO{TV9K#Zi6m$o3PYP
zx4sSShx7&7hks4#rkixB8)|(!k8feL4?nZiJ=eS%7Q01@Bh`G-U2Es9UQo`X#27Rb
zyP<h2+nXjjBEF7|3;k7zFcQ2PiRzc&VlahqS7&_HEvqZR($Q;HW-K<FNswGNtHW%t
zL4i^`)R0+F>7;4O5df1=@IsL+xn)z~zeqAUxC4!cwMAY<au;VwIhcfUmpX#%3n+Jq
zoRtt7-btsK=!a0|zFXwlv*oRlZg>aETWA-2h-K}&(_H*nEP~l<2d8;Ewd&?Iy*q{*
zf>tp$fAcMC%et~rfn@+390o(6uDfFKw(bB`e(mVWEBXQt*iyaqUAxQO^+R>p#Z?Zl
z6cscGx2@cHb<g}8uHH3LV-&1BXI2EoWo3CY-?(o7LT7nq<l@0}Ppv2BTzBnoq-<V4
zlC!HIm$c8GQOgx))LM%(YITQQ=ajQ9UCz2bRnE?sQEP`U!xVNiW+-SwF_8rioPH1X
zEG=2cubL%pTGW1<7Ys#F%PDSI7q&&u4-+J8M4af=Wv!jeKw0Z2GlvMyH3_&w)+G_R
zImnC_CGInN*zG|pIt%TAC20PXgZ9AadF=uF+0LJ~eNTPi%A=PwwCwx-RbPPHL*)Y(
z_b$JzH<%dQy=d8Gi-P2VJ3jc%>d}Wz-utzakF6ek_~bppEzcil?!W%2oyBd*`@^Wv
zBB;?R9VDfkNtJkk_Y5;5D3t#=t^|wbj|4u458`<KzlqaFFwqNc=PALb%Gl`xbrgV-
zb?f=nslAZ0Gv>r<&$0!^X3UB4cuwqnq|+~Pz}+IjKkJ+rug{6SkBx#QXikiu?vlT?
zU9h)t=eKvZ?^xC-85zoK;cExCEhssB_Lk<vwof~J*7nwzi*|uhw`_a+%InWKe8ASB
z8#XoDd;yEu=5vJI{<;1ht09zIo<;tiP$GyH2bxvcDhDI(%+iayTeb`}@+4EeRQLCM
zOw)`FW7Ebn*kmqY(<g@=cs>jgx`;W$+{k(1>99U0#^?C_jH}OuP%|=up4aO`+vMks
zHas_GJpJyp*XMc07EJrXResC!ih{g8E5U={K-^#W4dP)Mt#b&nqE}V?9=Ak(2o+}C
z@$<_d`ReIK#Zk7Eu|SNvq+}U9GmTNz)0RO+&XjI_9|6vgHhXBD2d3~n0)(meF-#4i
znX%d9>2o6$d&WM%9-y|Z0~reniiG^a#piG6{uCdO<PVf-$O{DSzwrL;jiRdZg5t4>
zPSL1(w9x#my{)TS{4{n1S%U$SjAzL1BuN13)?Eknn4%|$WT~f#Vpd3MAEet12|ZGj
z&~->cLwziD*fqqDoI^sRb5KH~lYbMR2mOrfbvrGeyeNn$P##U!m=uo^jn4FWKuMwy
zNx<WHO6QzHL}jHyL@AWuu?$W8rNE35L#SSt4drsR1yHt84Sjl&Od*w8PrV-~27(8Q
zbzuU<gsyP=d$hVEf^z?msho)mK%+ZHP^ffI&IIqsa047k;9R3tTmp<lvxZOOnL>gi
zxKxE($B?oa7=p4QHlpIXC>f&o*2K&jQAwN~@Jux$cL`+5{u;<YjG<>>3{5?kx#;l&
zmp`~MS($%){}piixW%2E*IzlZwZ-9U->|S@q$RGI$Q$nX%fYqF9y)o??I-c}J8SQ{
zWF+exyy^S-zyI0(rpWwNyRIQh{u_ujX&~TUh(vrK;sp^82)jYV1tLy>5+SM}fqO?r
zxgjfYwPMsEm4HCRClbYK2Z<ud6U7|5i6Y4p#pII-6sTtLY3L@6M}K*#I4ujeFQXti
z2?fcCc)xV~Y4ix3Hr531xJLpKGCtZ4hldm5BrqIgmrmOs#Z<1xlg}h;aQVIDk1_3u
z<e8kJ6D8xM?Pwl8f<@0blxLTo-#q!7yPl}m?%;ISlZXJ8rU8mO`{ZWidIESh^Hzki
zpj+qTF-UI@qW2i6GD6x^AqJ?z%P^`C5vw4B=Qsqzi!}xG=TKhUD7++!lCVxAvr#P7
zpuu;#(VgyM$3WOl9mQ!t30wmcj&n<~11!ZpwV+;CU{6?@QTfB>98MqE45VUIql7sG
z9sC^NkCTVu{I4%3OEqk;E`W;QA$6d{JSd$=GvKMus~Vii*Zcp)V+PGmrD<e)Zl=c!
z>{@a2#;o1zw_ul<Cr}2pgOTd&^4tvVU_~~LqCw)=WoA_+ixLTI>7{#$+JT{N@Ioj>
zE1|^yS6w>*IO;gpgp&TIK&%2pVjvO)WgZZ9gD_^~G7XfeAnE{7JBZo<6x(o+L>LgE
zLDCH{SIatAryLsm;0TDt>cDzc;NKoYRf9e0v^Y6+D(8h)h)5ixNOSlH<qSsRSVRkj
z#3xCKh!M2T(=-&Nh=*yMTo|6F>B`Kft1ZPGv&mvrlw`GpDwxA9=H?k0f@g5`-%`1u
z{uMd?Y<lUA(|-^|GlSL>gP${sufi9s@`<-f_QJioa<d~CE&QpJS{sP0=+hLRQ#DgE
zS_HyC4d>LeVe;QkH|f5=6V#m$rCW(p`bw8r7R2iRFMD4C-bQupKZ{1YG>f*;F3VcH
zO0p#H^1d&LO=1$qj*~!~6_JqO1RO|0!uBX-X(_Y~?bj`BDLg`xU@%J|0YORwuWTih
z<pHIoK%25WUg6PNdgoqAw(M-}|9jv6`~SaZ|B|DbJ9lR8J@?*o&Ye4R4i3FXla1(8
zCDaCuWMxLCRw8%fDi~Ik4+BpNppgn7wE&I50&QP-b9i@{4%<;f*il2+@!+<j!EJw-
ziVy@`C8NJ4aMV)WBnrfb;$`c^3TzRT)O_Z0lW4JUjv+OYwxo(l?v>2wOpLso9;oSN
zK<zNS?pV^u$K5rb#R)fzQ+%~k3@jX4>RdL~xmO=6*nejAk^KJpA8xMU&7xM#TLd00
zKiVy>)^*d%k2A(qX893ptIYZ%*jB&7w$*AFY4>5<>eIAL=0V0P`8=|h=hE8h{frRA
zijU7YBZuEFaE~9u&d#~X>{%R_cD9Yr;xcF9!z$!YeH({{r!?bAJullU^3W<KR*&%e
z>itMu8#4MaCoVU>Cj7oV0q5WcptH=rw1UJfSe)^Fo^^qqnX8}E5}fhud!}VOMyXY#
z7w%>(K~|Bm1Pj0v)+vxB2%PSu64YzVA1RrH0bArwNXe&;liQfzLy9z$(gb;y;XLw8
zikCW0O)zgkiXxNJ26+aU*C0iiNg0NeefTU@CM67Kt-^WKnUqyjH@RAR38V;_ltD;Y
zj#G3f1>35H)N52PUR|8_esvgozdD4xUp>i==Re6@d5ZU|C*$lmlmBEK4rR?d?>W{K
zsn`6Ab}l*pihf_gdFZ##f14%PS`uz6(pf{T#o^Xs;nC&a*jQb@?)H^Kw{NVeSa<uH
z#hY8~{?7GH@N4sRuE*YRQXz61)s=mJ^dTaTJa9jLfG|nw4%;qguE@MUntq6od4E)Q
ze;gm0et(oX+p6L=xnM<3ZDhA=1toemDSMb!u|`gB)<`C03I=qaLPm}C%P1v!nNg!;
zHj@&HL|<e<37deY%Ydf~v#W}w<cp1(_AXC*m8ZSkQ$=gdljMIiS_o}-QKQk)S#;m?
zj<+3@!@-1(HjNvf$gmp=sp9I>tSVZ&9Yy!W2?yt(j5M6q6gnDj8fT18OgBeH9_7Se
zmd<|ZJ=Z*_$XOqnwhg4nG@zCh_g&f^?5%X6rvXZ})D><i>|G?5b%r|8SMd^=Qr5P3
zFjnVjD9Z!GkfIrNNo}XEex%O6a6v&^)Mls}jJec2FH^B5!Dtioe5}$Qba7Ixk<;qc
z(&pMgh0dfC?HWO&P@D8xTePFNbCjcKds!p&Pj4zjO;D|Ko?nyqWS<f2MbEFrz|o9W
zyj*$3*`8mET;OOtC+i#q`j5RiLr16ywPw4V!(Bw0ycd1bOffPkX@{2em~91S^>&pu
z`5yJ<-%S?Vx3hkMzAb_Jv1Wr_Nj@l*p%=tKxD>d^JCk^}(gwX|fNB8Uxjg&c%%1F;
zA^AchOK9DXq4z;glwKwto#`TTTwv*H+>fF6Kuar5#7i$@#G|=gqB!)=y&047@kR}l
zF21xqzp31(mPlyiGf`$PYzX?B0;0aSBjSr%1XgDxF9jPyqSYi{*9FA(^=<C5#tU2W
z<yu~;)EZcjjWSlyvhIokSIDWA3r2E*NiWx$w07716zQxzAI+SHfd~6w<OE>Kik}D_
z^jA)jKfhloipt<5d0(Rmrl?UaN_`w9qX&wL821r=Job1FH%7M1c}`svJrIYCy!%L;
zA7^5ZpMf9LY1ac!`<$BE=jo1j4s2?)svXh3OL|PfB9~f@B!b-R3E8XqA|mM;s%>8x
zv)rO}MSZ0U96C>>*I({t1C=W~3MyCsOMht11?M+;8M#_*H1GxuBbUp(O-sx4c2DE7
zI(K=#PSm#zRhW$42=t6FjDc0qGn{EptH|rjr|DHd@-q}+mljS~E>m4G_sK`2g0=`J
z;`q?nRsb{Fj#@?2a!K-S8aW!UxmcPEByZBFX{l05egqnip(I*^AgHFkDOX5ABx>Z;
zn9~MAQO;<PSGQHk`^eSQZ?a#>qHlP2;cs}aLf`O`_Z&7jRo4&=iJ6ah51|CHA(8gp
zgM0yJofXagh<8<OO{_{nszd{8U=>t;c|I?AqIslTW8wv~nx-Dy{^j1Q|2B@SR7%1~
z>UZtAy0!J1J-ZtykknvHLFopebjxw+qS<eFcj0e%$$RlPyjLA&Ey{H9&_}#j&mBT3
z>GFAJzT%CdZ_uN@+^=|-3;E@4TEQB%MiHiQ)z!5Wr51I(Q7a|g<sRJ=tyk~aRSzYj
zkP*G(zpmN)<#rV02gD`SuzSxn(DSQOpHOS4J7)B7qo5}oO3qB0?_+m6^U3`Cn7z=;
zx4=I#c=Y9?89jVooZZdj-xr62|LD6t)EamDMV(#io1J;B7j^Yr)M)uCmsjD<kLGbY
zs7FD>sUbTS>{=EMEZy1Pb>&dBVt7Ya)zTWft!i;q>u|ZjQM(v8T9*2fyqfwt=;5lY
z9=@+pi52nRZM&I0v$QZwo<R-&J&q5Y^&5_99elN%w;E8G1f+u{BnZ$)BnpjzGniS1
zM~($4<ooE0g)&;9=OJAw*+fz#2^|3G;8Nfx2mCyb_*zy6A8yoiF7R~Lcse^hH8k=y
z_?t!-p)M~k<U(ZV?iObuS$LO|W%W)c)3V#CC-wJaSdMi>kUO~r{$-!O&Uw!VuF?{^
zJMJvJE1taqqrWHHEa?l(c{x#XmKpnuN}e-c2c66nbgr#;H$=UxRH2aDieg3iWlmP`
z*OxTQlxe4nOQYJ0TME|q}dCTT|Lsc7+4EvmHY@*|Fdx<cbarQK1xLd$bzi&bEG
zEoaW-!OGR3s2i+KC5e>g2RR)pQR}oSRxMZRc#XNZ&T9`B+T{{U0rpm}Pkl+%Q8!`T
zJUXMBugmJ@-Hn3LZ*>O9z}*?0yGyxeMm=vi?fUZF@tnN>pnlfn=w}+~=Q_2jC*$;5
zmi!%hG*3!o(m&H$Q@&{Po0UCE&7Y}b&rDiuThKZO`Z{lm1V$`p6gVZhQ6fvb<xGy5
z$hPE*1eU>{P&(>*qADFt@*$#(+&$qb@sy~olhCt7LhS^V^iwd#IOrb-3U@k<r19?Q
zA&XSgmN}Z*5&dZ#@)rgV#0z&a#=ED-@L9jr@Xb=x##wq=SJ<<mv8X9vgMq<Fr3#a;
zrqmhr89TcI)h3?R>B#|=My*c%moCV~Mw;9&L>JdM6&j7wBqDb*YF4eW7TLp5Ijbiv
zI$pHftv8aSIn+tu=P{p9r7)sOh*+8j2fYzwh$)RmB{cRuzyl>3NIxkkU^o})`YDL5
zDzfTlr{lr2b}k70Bo6sm*H4igtNPg)c#xH4r`OKDT;*KqZeAH{T~%jybnO_{7yImL
zw2XzU*+NTMOOcLrE-bBE6fxZxj5(WZtfSOsFScrbQ@XgpTiid^wcy$ds~MR}1v6j0
zS|XE49nm(Qpm&ycmz7uR*l>5yB)Ez*@xv$<dc@4TIpj+jt^7)(nlLb&Kne%MohsDj
zp|j7@%#0`;h~s0kG&7y`(39&uhovYv^Es`8d8H+fqa-AgJf_lUROAE>nY37==LKa_
zjYJ~)f}2cP><*Du8DPFwMO{v<VeBy9Lyq6Bhm<mE4|z3Xh7?04r4;gTIFBilqNnyy
zb&MWT#7s&U^5_^Spv0U>2|-FJKFg9xal=_G&VybGx}G3YJ*hY7O-wmq$Z7~(>Ie=l
zhaS_Q3BFE_p4`BUUyhv>k;utO@hq1`)1EWPtS3J=qt)B=MyraJ)7LOsgVkWLs%g1g
zp^(vX<W^N7S4nA^R<A<y@6;R2B~SuC)SrVg!7r^sF%cyN<dyKt5X)1)W89KP{O(d6
zXp1$(P3c)MLH-DAO%?g$2MkJpYf+Pu{4p}lA-$6*0%|0p<c}J8*V6q9F4*6)p?beH
zxS#W`g_<-ZPQDEGXgbo$JLvx`UyYUpOZUeYw6t8XKi;yzTD?DR^?HN*<M><=PDWlP
z8W2I#)KeJ1oI|~zOZ}6>Qp7=%T>~8Km$C*sa8pCcrXI~}UenSuS}W!?kG6EJuCv@M
z<ds-l0h^YGQIcN@BdH^=WwfPtbxd@@Z`WwddMgiE@=9%5&RJs5FSV&Dm=@A9HLsKy
z(A$zyHLv)hd0nTksB3Mkd3~q9pnH8oMO%T^Skh8b)?CPofyN})xIQ<-y2gq&Kbw<*
zAUI+zF(et5EF@$EOPIhC_9I^<L<7-5^bt#mmBcz?GjSQQo9xB5)29CQ@qu{N<yXe8
zEVyK>WX!c{)H5pY>{a&?jjfVaE)>;A<5!N2_9CZ0y`y7S#$~p_<)W>7>-L4)n|JJL
z-xc1tsbZ65XoX{iuxN>K2~|@stydNWw1MrrHmz7v9|+VhS+Qx?cA0POg>D}ad@lGL
zp9!0qiROHELZUN-f94F-ajO2$%Gc<_o-6*zB4U}8?=Fu<!v4&!F7s>3{AQ2K=Iqb?
zoqJqnoW1XzbN%f7=$Av$Xy_Y=d>$!_lzGrrvN8;R_eRRfBGe*8rz|Lex_UbA)PYbm
z9QKf9(P$ZY3>{1^NAz=)`x|JBz9Wnbin2)ZL?lx77VMDUgpDQWYF7Xue-RFrPj$l9
z?V(VVa%D0lWw7x+I_<a7P&5D=AY*LQbJWYs2b5HPm_X0`Zl<26zQ_C?_9yVu)gkIB
z>H+3sB9e(iO^7}eor%-*m8~p$tBkgmS<4FZ62c^P-QmK7d@S>lE40)I89bQ|)TCp}
zoMqoDqc!Q=LS7<{@=wSM6LI-i_8r%pB_V0%TluW7EF(4)+{h<SPAC=Z@xVwu00vS~
zLx0J_tA-=dk-ZC>#)>$FR;940ECaD%e@)&cYwVRlubML`RBC#_Wmn5gCO$HH+sX^?
zj90t!wQjx3!O1w6w{v6Ljn^qOoJ^@Urg`xK^$F(1gG6?J5bsZ7-rNklYhr#+STnw#
z84dCztkx?CJ(JLAcu7K>q^>>4W6#f-haCxS3iCv*VG?o3BT5qSY%Z~(VO9jA9QW0^
zMibSf<ddJIIE{u&Is86{#X^qqO6D%R^KE0E-JN_@tJ7(zC!KmblzE6sP;W9HLzy4W
z)ZsbmIo#flWcNuC??0N^f0mkLK7{?prt92<_aD#f|C)Xa`DT(I!TUGC_1?$(NAdm;
z^-J2y`~~)(%;Y~#?ZP~J3hyt4{c*hiH0EJD^sgG`Bcd%GyW$}tMh;GR$~<Kn%OrVy
zqlVD15jJ9~J{Yqwg{YI6G9dwSeQczIKcB?T;&JxE>Vxsj2@{NIIxxUouNtUJp~*Vx
zV-9+@Lyfe9IpBY`-$~Q1G-#@(sB2AaY{aG&6tqcYQLCK(kiE9k<cnB6owXis^H7Dg
zJm66&<wmthrLQloC^z}THcxkrmp)v*tj=jgpUE2e7G5UfSY>V0;&)ioysx~cBHCYJ
zle0Rd(x`9MGAety&*F2M;aEjC@J<4}TZDOcEW^vEr~|m|eu?+p)Nx6W`6KK<Lm-<s
zGqwpg;Z0k44|)>$cC}itLx(#oO#5brDay(8EZ38W&&eQWbKqV%?KjY$H`}%W&d6Zq
z@^1{Oa)_dhlS-PC@5LxNZxcnQieyM7rGN>s(ZMUJfwlie{Z-2;D3Xy$4<AIn`Di(>
zq281!Borl4O7|syP0(3ML^z0In73dL-iIxOFY*|<lu!{)@&>SaN<b8836;f{cs@*q
z!*XweMJ10U<XdMRLZfHUV9mh5<FOYo!4mc*;zXD<(r^mvO~lbj6Y>a1qphbrfX3eC
zv!gF(B1_{ruOS`NX?m0To-RKe>nM4VHCwckog;NFt);;1swxm4)mTgNm#%abSTq5_
zQ&F&fm!sINqYrxO!#;~fCsL1zI%}jSXp0o*tI(5bvfAJl)z1pfqU0}Z#dh``t-TPn
zYDOv%0@xAFX=_hMegzubLM}V3FefyK1D1qzYi890s*YZ>(wITspn6IziMVv@?B^}H
z^}`ldK96hjNp$UPYwprot=jw7-m<FfW^2u0>+o>X(praP-P&)j2}7}eA?nIUZ(3ft
zy0c*F9e3M$EElnygt=DwDX7Jd<RYhV=?H}-@w|`p`J|b0`m^Q4Ed`T|X#vUmpqzvc
z8VPdG6y85m_)H_^dY_*CqOu{|T+ldpE;5Lx#h0;AAM#p8!JyA(ndEQ3#6G}*d`Xrt
zX!5LLjapf{ZZg)yu|`(*v|KG}IZ-QpPsW+BUc_=0Y&iV=$6=d|6(`A|Lqq|K^rJe;
zFiJ7ub_bP-Y9zMwiQsgYJM<qbN3?{Cy|qDRx0r}S_G)D!j!u{e>J#zcOmsW+Kj-OK
zZrqOY{G8{YC}6lGcg{(@iDEp+-PQe-HOm{_-lpLSN6hlCN+k^gk5oxntyJTws;zUN
z?_sLfeQmI`ufB+rG6O0>Eiu_lMcwOaTh?`YwAx9xo7JnNj8f1fpW#Kp$jYlXe0_Mu
zw=RltMzhD8(TJd3z`9L;6_c+<JTZAxlO&i9rXpy<Mn!(&c@%{06e%=<LO;AbmFWNv
z5k-($qt1t3poU&>I;n)iVB|hCL_yNCn=@h5X96WWmkxEv%91ZhIjc@^Ab-dXL5F-%
zmu8PqZzJc4Xf=%NP2Qi~rv94UO1?yvX1CLIMj8~PQBij8H3V}n4s?1Z)YC~^olHVH
z+7o$7F-dW5iDt?%b8mb<tf9do>&<+PrhJ54h9c+yck+~+6>*8nb-W)uiJwqCbZU-V
zSNmyw=<}1OVPW<W6>{YcN&xP!u~@7gfl2<2NiQVH<g8T>rDi^ts`WOL$)c9XRZ}GL
zOZg5XN1rxI$<@j4W=9(J`7}2lB)d=o?xmb2`E>GnR!wB22v{D3CH>6%po~P-<Om}a
zo=j-4*np}%hie9j6B-hPL|QhW`tUP?08569KV%bWV6qR$Zf337VlyYEE`^cJXGZ?(
znd0GcV2g*SO|Re`EH$IfoF7u+KAm5V#8SYdq8$Zj%W>&U+%gn90#r|!JDFyG`RQ`b
ziWV`=`ROPT`8jdH((>7)i=gJf?LohV0zc@iTG<Dr0>l(&)GEj~NK(d$1{C$fp=&p}
z%$)QY`X!lQFbmyEomxS?3zdUEV0z=!qcnP9Ln4*H_LI};uUHIl34ZERN+VcUDWm2!
z=$oUotw+=m1DF%4$RxSsP+fuk5%PRc(^b$gY{2YBy~{kO|Gk`H!6|v>_P}gx3_psr
z$e&tw2W^V@qBC8SdS3x{m`|{ZBKrd8(UHi}EsSGPD|7HwdaFUN`T=XRn0YWZSc`!}
z<NNREqc9oo6v=<Fx0XcDD@YD!gPKyWiUz6HtV_ONgULl{q{T`8YqrmV?#)=YFpJO6
z>Rv9Rdv81}Hz1vM-C<{9I^I@R_ZqPJ0$bFXI5px{Hdy2-UyE5whprzw^ixC++;fXQ
z)L$Fx4;yr$zF6$MutBnV<+nE0Jom)N9YCLot?el)U9hIIZXNnvi|qt#c@s9GFw<Th
zDH=gMVFv}JBzR9kDh2UsK(h~Z?i}T0c8($idl2#%Kn7=X&6=a2_L|#9l3e>?m$&1>
zwgI^oML=X_7XEH)sHr1pzS&+}YFyasi?{{JRQ>8UfAXX0uJ@{0FVXs{y34&0QI`C>
z!5f9TWM&OS1<{(0x^y_uKvaUFJzQvO;E{D9+5!y;f+tb1Bp3fS|1r<-ys19nLOm@T
z%PkX28Vo|vGB2OZ*n{=}-vCNx*0~BA&UV!&;xp%q>FAY6>1-*U6>bn_45#qHm<bFD
zmZAx!5p)z!A~HtexI}FfIJ;FN?N*xXMYbxWdJMoJD|?TlkPUX0iM+QeU+=Vunsx>A
zwA-(Cm^&8bmAP2zt#o%(${)6c@^#6_rWyCTDA1(bUEW&gZwPtRa;qogxYsB^Ta>A2
z`ehzjk7RZZ0ds<ytVexv*@VbTg@k>kBZSFdVhTyt38`I3#O*naA3jaXPum;V%36dR
zgFnacNU-wEuVGX{dF2wyi@k9Fgf+3UscqB6z7Z@emKQ++b0YGDnx5035VAN<q>^w!
zpDiYgKvjf~x)$lt!`93YYse0<N3w?|80+*9YnXO*J1clnW-VeygdCuX7H;WiiuaaC
zIh#QMZD1;{_4#WHO$=|*>1|p${U4o|^!dHrn>)!5v*I8bi!O*-EaBcT`OLJ4Ku^}w
zvoIn?EI>7Qgs6m)fh{u;%2&~Ij2;mC4Y>4Y$RlPm&C~=`LQV*wY^<2bbO52qbkrDn
zh*s(BMuS7AqHd-3QcA&YGC5)Ac?ron%w{_nJ^SceD5(~tq{vFC@6dP94C^o<PwF)F
zo<fOMDU}K`nWVDY)T?OXMoAR1sbf?X@<o7NFPeIailNwdw46g8r)U1~o9o!MuXWk7
z5SqORq@Nm*T!L4Mv5yDp_~AIq<Uc|kC*lM{y+||^Bk6L^W#AE4$CmT@H?=vP?OPW0
zZ*Fs5VJK-Ti8T3GV@WgodbQMZEAQM~R~7%x>Q#4cj#XXsor{+5?$0k<vb}wHcfY4>
z$z`auD#;3}N)iY4Wx8KuveK$_L1<i%a4>>OGVPcjeGH2O{H7m0;T1coN~21)D_O1T
zz=K9ksXi{ZnDdNxs5InivtDnu7^qe2)q1DNAln62zH+L@0C)9~c~qBVE73*74wc19
zFcVtc7Wi${#aXx09dxgBZ+0_oHxpwSeU>>d;4&d0R$Pq+;<N-ptIyM~NBQ!zfzalB
z90LW%eIxtoG}TqQczbtYN0nEmWCXc8(q6ja!j0P&t9VY;U(^<{aqe=TuQ}q8s}wS=
zqOhj3@bVqzk_K;CUxl3#tA-mr8l7Gy*V{^UqOQNGW1-F>>WuzMx24prH=2!t#bi{<
zje7063;ZqR9yuk+i?pF$;2=w>#gYx6n_PtFutiY0P}LQ2+HO>-WJcK}Vt+7a@s!k~
zrBnPAtUTQq&~Vu{fDw^LEjIT%>~>4?h>DdfNR8ZAR9e_?ew|8^1Z6DUkCvSF3wcft
zPrlA;IPKKm$s@@|9N~&|Q5}*Iu%`<T2EjBwJ`oQF8E-Le6fa}QWqvTD`(`n|B8T(2
ztD6S>%-Uv0>A+>(fzF6iDwoNW3R|EhxMI_qF>lN%a0Y?A)@)8riZ%AGO<i6p(!93a
ztJ1O(MzrxpmS@i!?(I_uW^$q4P*(O1MY-#i0uRkFl9s?oDh7M3@Swj8m)!4XcqcA7
z&s5JIQ?pB+eqm_((dt>>7+R9wadFSUrbe^c5$WID9b2H%$P_B6(Od3m7_73;o{O8?
zR#uxY<$blq)ywmZFb+!_3IwXUdUa26&H7u;k6g57u-PZb<U9(?pp=KsyQtRa^)?RH
zduxk~4pU#e+2#l}pw_UGMbv=gLc&BC4$*ornvNfe>off!-Q}e+94u?Lml`8Apim}{
z%Um9lMMX)-uH=QRTB{+y)bWy_#jT%O&#Uo^ulLwQ(Td|p)f4xD2;GP!kqabIlM=Iw
zrCuc%^r9<f-77@eR6D0Q@>^?HwlojdSS+<8t<57fmUV)s!dq0~)CitRZ*hfFMQQr>
zEDr~l?OEKn7ya&C*1NIUQP8=%rgsDSy%2rLOFT@;=rtgXtOwPmN$SL*9EtQBH2NDr
zB6-gtkz^`)@@opUT5;>Q1dU8}m(--U3s=fjZyR_)554WbmZ$_#FG$x*By#!GAp!Bd
zkGO|2(iageMC4GT1?=<V55z4NCRkJS7`}ZCW{Vy*2g^(%zC?gA5&S*JKOl%IPA`XW
z<W<V(ZM(4ET^n?O-N4Fh#WmiA=M7%as$ezBruIRNt;FT5EQW(}sY;d~isg;2UC^*-
zguE=!Q(;%JJecw(FQ?<0D{7lqqn>N2Hu`LwU=UcNpp#2=ylQD*^PrZJ4??R4hzY8a
zUX3M>4@n+0S{}>_o`<OugbXpd;q0<Umn(ZBRHbpiWU(5OudB2&`4@7RzaVeGc%1yp
zN91<j4RWPYegkVWJGA6iv?@>*i^(gK*I+N2#NCvhUQUFF;K6_ekKaIm@f4;x?t!wL
z%JI|4pR<aeFzOI`Z~N*xe{GQkX1-dP=&SNC9A12ZGa|BDfhAiEhUCZkkT|}ByruH|
zT8BcTrWu{drPiujdK;Q#tbv4%Q&{vcwE>NrRv0&VFm4KoY9esZTZ+r=^)jq|)(9$}
zHG)nNKGd0o&#V_B^6a(4_3gtI2C->uB-A2T%H#@0=O}iRcLz+QW4N+<VaTwmwlmmk
z7rYf7Z+RX|em%Ij&J$X)y`%BEi`zJ<l;y$XRLBZimz4=lM@3hpuG1nkFRK*A!YFEo
z4&o5yq*oAnLOewCs$bxe^V3~nw%9>JCo6NDGI=s3wK)7*ImsvQf-Xev=d^UxXyd1T
zt5xz^s;XFT<k3Bd)Mb)S2{WN4_=9Td5$b8Ug_=4-AmL&tN3Deyy(I6l3Waa!sx{FY
zerV<`H0!eR1ev;vxk<t?pMnLfJt$QH#}CG(1m<Yw9U8RYNPnh<zrQ_ivoW6<Y<5#w
z6wZ8Db_*4f{U<>aaunbW88mdBA+Md<KJ^vZf35`^?eR3o_?bY}P%qAa?#tkhr$Vxt
zDVWAv2-5HwaYTAVX34=D^6O`y;Ld>WASg%DQ1#~^k%oHY3`m^~n#<3KDeV<GIGzSu
zbsF5k`KIwrjA!TI1Oi_KxEJu383@~jPiCO&I|ClnJ*cnIA4|iqF$WK&0b}ZP*k)2s
zW1s1ZEX2_?%oS(E`<B~gV7=Y;1N#B{0mn!hPTOg4(Dk#tkKKpzZ}v=jFE|yxp;O^6
z_7@kl7M2#RDEeC(#qX9JKq&oH;I%A*H)IiVV*L0NycT+`?Cx-Tcwcy5qy^*V8ANX=
zFPVkor$@z(iXD|Dl@Fv*_1zg%KbuC)iZp5qYs*i;(byezhw2`ii~1inw4Dx(e3LMZ
zgU!Bad@~m<r7d^28d`5@<Jzui-`@WFj*5=&b{ac-I)B&I)%E>uSNHdNsGfbjir!0m
zPb?T;@a4jl3!nJEj*t5s^O(o~05;FUGimhG{cHLs``<mU7O)Ml^Q^e{yf?F0q*x@(
zLURVUE&3C};vEC3fuVtWFb)qqg7M_Q@$)NZ;jZ&vTT*fkyuIY}rGJ`@!NbdbG#f+Y
z(Bh%R!`k6%mb1%$xcm!*ktHKfjy$>I$`zli+`FoM)weM|zn}x~<%O57maP8f>JJe{
z+eUv5m|PQBb7XDL+V3N*Bi1cgw_v?={Z$+E8*Cf4B5bU<h`5M|8{!{b{KUn-+H@Jl
zRhw=Ae0|fMoAz(Ichdtoczn|@H|K5Mx_Rp*;w3k2VYlqta&iV+V_Uzv^$(Xu0q>11
zAA57#nr#na9NG2^;KgmPZ~OhWliU7^u)Xq}=-l3UnQb2buj29z=fsxF$1nf<^3=F&
zeA)N~;~U1e0LI7njNdT+wefF{{{Zl_9Su7=cJu+3&SM_)n8!Tk@xK-i?0DdcX25M%
zGJsomDt9&m9@zQiuHCx{z!JctS6y(`!9BvB+vYKkdCX%T^O(mx{=dc#<}r_X%wrz&
zn8!Tk@jrwQ_Id#O_kMVF`_%`pe(&74CUnikfOoF-U%U6(KV4^^Mhs)wJmxWvdCX%T
z^O(mx<}r_X%wrz&_$RP&9`pF$3;gXrNf7*2f~4M46NG{pB_xE9`UI#S)1K4^Ku1%n
zfUZxy4RkE^b3#JyOFawpNa{79$5JN<34K1n0v#mOK!;O@fNq5=@Ps7wXP~30=Yfu;
z-Y0mn0Hu({m<BMd!n6a^9!&RPdIZy_(RJW1uuY$zLLSxpslNd2!E}^R5(1=u4s@7U
zMu>37-vJ$kl8bQ1PYDr@J_B?R${<1>ny^8h4}l6$9vfT@(H^LsjaUJ9v5{2j-+^*)
zFB@rrtJz3L>UE$6sUtv(F%4i^g=q(-J(%vqId8;g?L$|FT09T*D8A+~v<;m31L1=*
z+yqpBTKI5{e7HtFD8svi56bWiP*esVl;O`n9dJz_Tpy*}h*NG&y-E0>c2S^%sRp2^
zc0M|udYteB2mT6l3^?P5GQ11)DAd{y{QMN?F}PX`?tTcUAKEkqcmE#H6;Os4wDr3{
z$DqtH%#9e7<W-=S)LTFiH)6nzKLRbrG=OOprX85}V7eB#8Y8!1x*gM<_}m-t_Ko;z
zU&Y(EqWc2JUIRLTQ;wwW1bQ^}1E9xJ_Yg7Q+rJa_Q05PT`cp3e?Mb}^bTqXQ==#*l
zK*v&FA?l%Q9{?@JG=OOprX85}V2bWl4|h2P^k`}l=&{s6q8@rO4|F(nG0_8U^a0RO
zXp0`W@`pqZaPKpq&jN3Ifb-7-9RyDH0O!@jQpmpn=qT`fDe&!Opj_%VKrK-6rNFln
zKnqY#vKZ3<rd61BVA_M}PMq^beAcbNjiuy1oPG>ZxGx2CF!?v2!$b&ZJoOErTT@RG
zL%2r`0e?;cMWbm5+Vl@VNAdO;ItnFu1L)4wD?pE=-UE6R+F}Se02D^Cl2`$C`2^@F
z^p+KH7HmV#4}cy`eFXFvwC@Vw5*&s5eh%YM0#afW?*0l;f9ffqJ*lUGt^i(*0&K)6
z@C5PzPx^pbfWxCul5U{=z_(H8Eqj1&!*n~QJMqyQ@b-;3|5x$$oV{~+Bwz488XKEr
zW81bp;l|w9PByk}CmVZX+fF97ZQH*2e1Ew2@B2J6-RJ2(U481Us?$9^UG-L$Itx)=
zKgQ4d<Vq;Jf_w8kpnan&2=;1iNy`k^0SBU!(1v|HJCF2jc8A<ByMmtPHGkV+rOMFT
zZn27CR8#(a_du+`BtlT}4;uu_Aamq@B>*FZ)KEW%Y2Tq-hD0I!QrO&&Qaw<e3~7*!
zkP{bKR}t9ZTn6(uK;~Du+uP!N;C}-^F~4D^`m#4fkX8b5lCu1HtWSgB^miI;BfTxM
zFgMf}s^NbD{mJR62TrK2dHB}lIO!!nyCWK=G3Ku-`AfDx6l;}1cD2yPJbi$yNH5Yj
zK{g>TG0k3J_U9T)kYA|^3?0m)Lu1YHu8xi(rnt^V_yt9aX(v_wgH?0|kq0CV+%MvZ
zm9M*wqj6bjgPG3Ft&OefBR2W1*dy=FqZdKKEABKloiQi=xsOA~+&EYsgDx1J5mM#D
z*aH$tH_(O%3&c5|e^zN#W<0iC2yI(@aOp>n5OY#@p}ETI*&M#qfkJzb(;K-mL@(~s
zH2>IT&;C}Kv}K?8+>t9Jv<8_l_>b%P$)$BeXL0z_(h}b>nNNFx-Q(S@<;slvLRRjt
z{J+OoWVpjPHNTJ@S9Z9pd*QG#jtWr*!8=Jm3%N7q@`JUl;6ZIrKnW`!HVfJPs0m^(
zHT+ekkw~*x81et3$zgtLG)?rr2K6f&TnB7?%{YS#+=;VeJw(UcOYquSl${sXDdQL<
zI-H_4nbeF{Vp1(8vl5S6i`${eVc+@yxH1}F|9^K_5na$>o8SZr2!bP~#|CB_2|%?C
zyh9z^-dW`~-vYT7hluV>rX|MBj1e%r6-_l0>8uh=e$`b-rLd3GQD`objinp^?~NfE
zeLrNd3}Hp-48q6}YJ-SVm<CY)&&GCUpPx>BnUGmQsjf!v<kJ?<=A2$PXsxNNCX8mI
zx|2zrnbe-#%8w5J&JSc)#?tCi3p^Ml9{%qR+u&j^2f{yZpx;J-yT^;V0=Jb9Y_j)k
zesP@EYK>MVU_<`86m57GrvCjX+|2PkTTa^;;+n(7b0FE|fL9v+?r(@W`Tg%K?UK_M
zF<l}ksy=&f`i?VKxyBXGLxAx~v|rC3DlHrQ^JDs&Gq)Y3=q(R7`keDi=W_Vc>f3NZ
z<3<b0xeYY(Q}nqqf7L|p_~iKW|BuU1uVjaQvs>65sP6T!#@0_kr(=Rn!~Rp2Ek==X
z-~Iu$VQmYw0hmIZ-fwpROMk~<gW*P--gloSm!*xjN1F~Z|38kpI+R&B0>PH|$Tj!j
zwwa~>iy}81+9_gfF3cbH5eUI1%vVeCeWVmO>@OcM9JX#~kC+$lY4XEvze|9wyof+_
z6sZ~|@fPGOj8k?{kc^P>A?LwQvUe~x7|&v&9nEQSAvd_DXQA@Hi%gY9Z7C-n|7<!e
zIjh@}sSoyk7Vr!<$=1><<EblKkNva`547cQ4X`aRBQ?Jb%KTR>JWbR*<u5+>JzVm9
za~ws9h7b$<xklL~R-3?m3v&^x|I`mFu~?R=cPHZeHC2+UJU`SGso3r0aXIV=gcfE!
zbY2CBZ6vM&_&m3@2dqKvo$iKnF<Az&5m&7q1Cjnt1)7c*HeursK>dI0)f8SY^pvp$
zJ&~aYk;U|d@*f&~#Wq7-OaA}H*Ya`%1mQh++`cK*7z3)zR%tOT*8CP+rgO2u`G;lw
z7z|cT{|Q&45KIf)!A_UFu$ZT;iORa(m36LnC97ZTJ+`=`9h0t4X2=K1F=erJ!}CBI
zf78u%&wek)ggG;O!`rGe^kz!bzQhWC|8jzz<G3@!S+LCCJB)4k`*{0apDQt;nmc?L
z8_>mqEO((g2g$?vMLWHBnEYGT6}9-1L~cVgvn`d&nb7{!XLlZaTXyCS#2kGN=by9e
z5{u3h+msV3f$U6sc2npnnYoH~X=laYA#wl#r&&WPaiaOb`y9?=rZ2&L%S(XE&pk2P
z3EBoDtQ-)2B-t2)O!K0XIbDNK^#=7I_<L1Hf_ttXp5jllFl@sx&lZKK>D_RjW<q*H
z&*eS)$hpIRyDSMHvsjOWr25L+65afuOr4RH32%;lb`8?1MUGM%xcMC0gks@fJrK&7
z?9y|GC(IhTH^lei{Ol!rxE5#Kidt28k-Ue5^*D0C_-Q`D?y*RYS{~s@9=Wuf@P6Y%
z@iPRh+M7el0U;=j1C*aoDYZQC+WeJ~namE}&73KTD|lfIHpEL#8AMc{ek8Po#?5yI
z5l}sX1z)tKPJ=(pz-X4e!7wWjL3u<`{{V+H%xxHz2=i|<Px%4<fPzd6CGGGYgi56V
z1}U8@B=v+QolAg2nIz<&KtN<H<c~lV2MWoOTWI6=-`eAQ>5M{241P*3*F+)&^aI20
zM8&?bnl3QKJZ5$TKc>B7^y{+Z2$-Dsg1T>6DOV>U?SYN#flb>M1Nfn_^oB=)P~M*(
zT(x(s*$aH62G2V|xQp#w4JA3s?|otCYWpr*TJ7S$a#l3y_U-*de^pjnQ)Rit5PhXp
zTO-{(ST}0y?E4d|VUx2b<iEvO<szux2)?UxsadY0c6qz(krG+nWAw2pdBR;jYbmoM
z(7tHN8`Mr>*2u1?ctc!XnR?A7p1X_ozl74#d`?<=4ropOHf`)A(YT3PcpPa0>(*0I
z?XdoqN^i$MWtrOA*sN>XI5x=JTR{A~L*dfNY}S%CQ&nrHVinG8VNu5I=VaLh4YoR0
zc~hTeBl=`n<sUVh;QIgiv{!WWwXA=)1nCj%nKu;~QJu|gekjh6Dv=P+KA-mUmJq8I
zB%@0GGl=?r_!EgUJ|Br?E81XGL1@>6U6HQ~;VaR@53veA$x@3{X&WUrfb^$9<TnHh
z&!C(wc0P83tB7riYgFFCR65qPw4WK};;JVWWR}$+`Mu{FT<24S<)$D4tkgBmGG~;x
zBp`O#_C_~&69izv0sk=z>B+-PV1jE{T`o_!ryr(z>}nJO=#T0X!A;H#GAZqCH)dYz
ze_TDj>{<O8YuvjqR)UR1xLu2w56gqXqo|8%rmcSc3gaj?K=c@O{lp)JlLFwV?%lI^
zwD{S!yh*z%e1~n0GC0bnpfRy1wvu4p8^hEERV!jqat?b(5OQ!vMV2tn^enk3ckhy$
zY#>-@pvSq&yhuH$5!b0W?E_Cu&fd>a%D-o=h-`&(q%(V7Oz|j92%sXUkJ3*+0MO})
ztxyDurx%bQmKxCNju=T<t#6wAa4?LLpPglii5K2f9g$^K5=S&2CR@vQ=pRx$A=oR)
zlf<eaNo~M^u)}&YYr!<rTeGiZQf{Xb9HMVWjk4i%#9(J=3{${8bRIpuI9~d5nc{IL
zlEMK*bzwo$q?M7mX)0i}6=zwgeoxpnuQ6il>-q=$g;Al%^QgsVabMM3Xr>>0JFU<w
zV-SNf>embDvXWd3ogU==MPT)XQ^oLcPMhv-)A{=or@Xp}WH{!1jOf5nC1xr19^q<b
zEMBtRn(;aJZ(4O_;)j|xCH(r&*3mutYY8rw&#if_t<s3Mt$({5qKO2GBbrU~>6`<<
zV<I4|QhI+qShi|}w5Qe<B?nfAXXDTwrsQ=d8kOV}gn8AY6&M^>F*Oy@q%kl0vmG1R
zd^0!K$zc>&#N3gsRVmag#j7`86O_%K8yBLpqy;qF*tRp=Ycyumb)+*Bbrqtc7di8c
zv<y|g<`#-o_$-%=pj1&QHYr#vO?WKp3d|T`TLnkt%v%9o;W$*fOQmz=f^~=3jIso1
z1Q)s%g1zM$gj8qnqm+@4=0=#-3^Z{LWFzh6O2>Wa9~%H!bjjO#ZA1a`3_2&*#fDnx
zgr`oN6?feI*=L%6<g(3$Z&dgctI^4sg;J=r=H~)*XqAI0V|4{Q_p~MYs;x>RI<Est
zlpcr-6it#X&A9bcyiX4t=`0s8$V0h|v_JF&0jlV+TG`an&8%d<Z&jFk9vCclWK}z(
z&P)dCdVTt86m_u{7S7X{nmvO*yqpcQc$v{?<V)aDs^)l~!%0RrDXT-60Wc4N{n=Wk
zBj1%(S6k;tHw_!91Q3^3-<gZ&GWZaq1}TB&O(s}&jAD1rSjs+i1pxl6fePh9tPMM-
zz7@rn*J3>Ps>(R-lLRxA13Pp`6e~v6+P##m@|D9R=hx*a^wZXot=oG1VVbIh#k-hQ
z;@+tZgQmHdq#CO1Tgt_H!9YehnBWzcK6=ZAS6y0l&kC~(uCw1Brhpd<zKL3kljqki
z@phvfZe%+~`reY}eZ)LA!p#OgMX&POR(aixGWil)jz`L>m>VtOdx&<M&WI`f!3yeZ
zu_om5;13sooq>y>5-PEj&sT(f2VzoYjr5uABDrCf%1QvEj8*vU4$Ih{#bknpFf?y9
z=Fn`0MB{ysx>`y$8@y3l*Z|Uy{k8mkfj5rv%Y_m#8ud(WD)oitzyZ&n`=m_#G|rOY
zvfHOR$j9(zFJW|bc_YzvffZ%f%qf_+Bx-NL`l;~5g{0u}S#8>+>Nfgzd7r}&z2Sn=
zfCr11SuPoM&HGi(EkSm$^E;a?^ZgaITBy!nT=Z-1g|J3YW#+u5Re);H0z|CVA9(nS
z@4@G#zr2tt!M6Ycdr46)(-`;7f1<TW5iXVO_@A|iA{RL#CORZY3!RzFc*i#VW=!8V
z%x`8Q7O+;r1R9qd&{f_V^^-k9&Fdz`iYzFHq632A8!dP7Z6-K!myll0DpovzwubJ7
zf*0K(YxI!(OB(5mtN^k!<EjwA#CpL@^m99+7k-B?|5`<ZjREeWzV6B_5NCRlJ*6@t
z_PTX7otQA*XQCxiZGjc)Oe2HDr~JkhmyPnpig|5>QjAuOqoxQyO1B^wTXSu^GhcO7
zxqJmjB$>%v$P>J45u?V+tjx)RF}~?X`!7DdeWk|*Ehl!;rBVKa=!Nw&W4#&c#)C1J
zro90jPJ1#A7Il8Db;YnacDzn$PhOq{f=crAk`G{WQQNYjO^0v{74_pgU~H~>Fj%45
zOjfcwrf;&E61(-qVsCdf@-zx@CR>Fh>v#;S9Ie!t1btEr?FOen0E2b4-~&9ZVTM3T
zLP<1!Gri6^{!+y_bS6D&fY+6R6yWG)Mv}p782)J<JCi7RDLVrfNVcSFs4e8%*}Q6w
zJe&YN)b^)?a;6@?K%E?Fcc{(UF8%QYFYI5mMrmf3*r*2jMU1#-A9MdI3LmVsWg*&%
ziu?ePvultt3MuYYbYaxE(7^Kayak(tC&`VIad3Q$SQJp-wXm6U)@oqBWCmC2sW4xP
zCHCn!+PH5<qs`Qr3*$mg+#<Gy`LCbQIa*9HF**7L>uX=&%(9%31RJY<Vf{v$#(*Sw
zjUC%2a#2ruID(-`2PR12ZoEp{kohQ<cl;lUjEKT$6$mvk*5v|99h*Yv{+>q4OtFj<
z1XH6lb5xSOm0n4>%oE8F$iir28c@5qrZ|E~au+Ockfksrihh1<QXEc}Aa=HX)Mcz;
z-Ee^d-qopq1wb0`4^(8q8Yz2-$ziaC5fk2)#l7*4QW0k_CN!{=$y!Q$F36mW&)hh%
z0g>#{hz!4z;5-ci0f!{94+@W|<S~Ey1RJI}SA$G-j^Jc!sIOE+o4&bOSMKIIyBrjy
zb-OM-l2H@Hn*#kZ8X-h^Z3M~1f|%va-z_1;6O~DjAiB^hy`DdL=U&NeMk7O-j0HSR
zmZj5crEXJ9zRh%6S2GZDjD<Hb{8NRCyT(zo1=k)>u^naN*>}<<hUXVp-lEBqAv=^0
zgO^^;+(cF<WL+FD4r4;4Ve!}R*x!mZ-m-u*U5>;rSv0Yf%G9$5wRg*)g*gEy%9Q2D
zQfFdiT|bHfu`Mcf`-}vyO8276fUsQ?rSh*GuAs(+hM`T6&lTn$7uZxY*3cZ$L!O43
z13rpxVtDaN*g9pi`9b)oo03||;$hCu{8>`so+?7CxPS0g>(rRQk`>PbGINy@^2bkp
zorevh?ra7h2cxTm(ftK~QY6ig%7?oL0A+Wv!v+%IQN(pb&S_j6B$MupiB|C^6ufE9
zf=0bzM=_LE0@_xOk&5%INOVhnHlfi}YJ?3~xrjAOB*t%=w@}2N>H#`UwmTNfsAYC^
zk>DpmQ5|nd-0F58_#+F_xUz}<R?GBI1VFX^6g4nv!Ay|~a1hR;qqQPED&%(8=OhZ#
zM+d_N-mBqyQ~%_bMj<m4w5EviN9T(;0OaEiGRWlywJNOHKOR;R1^1me<x}GPdlt&h
zGah6$P?axWCQ_C{#niBJ(nx*{FRD;vR2Mx6O}w?wD%wf-^L+;z-OyZYq&QHznqgct
zFBOc>6%OpPEIXJHc;)T$Bdcek;_rclpV`oq-eg1ktq2C6+I#I3B<)0kt&0BOtf~qd
zORqYsAz6>g3xyhJr%zfW%z+-tf`T!fA%tk6Qx$n{d=5f8#2nDgIU3%q9n3YltWdb$
z6a7svz*6>CqLNK5-tbou^fBLY3>|R&Pk0{nsz8=7llV@4-^d*RM4_wFijC*@l9O$j
zogG^`PgK+6VtED*4sI0u8Siv=&Fb>}d~21nQ88%D<7>(!J>U$dpvxq(wyU%#Z`FK#
zeQ|Sn#-O1I_ZRMJdIk>j;(T43yOF5!*l#2B#m0tRZ95SP5p%P0Vcg&O={UTS%OOLL
z3un`ndJFUG^Q}dz8guh2A}mYa)MPViTbnBl9!8Gd?K4faot2FRC~KTT)-uXt=`QE9
zEqS#?XcD&YLs3KJGt4}T3!I#HY7e-1-n?hcZH+cEo^z|tSwn4$hamujD$5|#hw^mX
z1vMs1XGib35X*u*AJLChfbIeu^~JcUMYDwtDY8Mg$Ghgn%KWN`X@#xLiM2#Cj#`r|
zMvATFsd)v*=~@O4OdR_~<q!EkhT^pFy=^G~^59$!3^xe6`K{#{jrpRy+Ai!m9&>wY
z$6qU@v5<1!bk`F4o~K6sf?LC20-rn&Gd;dju~11*a^8G@PWSwk36V2j-L?lTeNIUO
zf(cQUk27EYZqE-x6bn#1e_a}Z?f-jih7$RUzKdaBClk;QKhzA<Y!M;eXYdi!6_@;M
zsnAWki^!m(hXNyc&1Gnp(p?et+!(q=_mwX`Q2n(taSI(da8>46|6ZK+{XV^pUCLJ!
zYftrAD*P)ZJkQ<P^Y5v9wjQ50E(w*~8hVV>2>9(7_?;5VT14nuKaKENk6<i+Uc1o5
z%l<O?eiJ=ZtwG@%pBt{xx2YcSug&)oC!n7;*;I<~3zB<`Hbp8h`Ti=)B;!0u%S1z$
zbdQBbkjm(`pN04;Uh^dvFCizf{XqRd_hsr<?S;Qp{!=?f<`pxOaYO=7=@1{3dxuL)
zj)&$TX%ChA0>(m}d(jFPKclf6UuTtKIJaqqxx&W&e5Q#T(D>IVC&gjCSm(-3Xl>6;
zvc31l#AblGbYtI5seR%`=E8RPZdC%G(c+0K#tPX&?xJ}$ZPjtreHH$9w2PQl-iMr4
zac7Cmyic{Wl|*BZi!AOU<C1OAmz`Evp36~A*iN9vgS-ASqW-guz8e;n0AdxUe;zEt
z6hz1oSidWHKaYM36jm29mM%PkQO~u9{xfld02~4#M2H?ph#quEENDNa-wpy(p)Wr#
z?GrDXJ{ClX9e4;PNdFU9ziLknI+iVD2zU<@EW)=eW_>qYrVe<lO=tu`aD;9U1VYIF
z1oZb@YwB~AZ&Y$O#9HcJ5L~e7Kdb3$z#?pcBdCM+tLZ<h_b|aBg!=9L>bWNExhBwm
zObf<ptETF`w$^`^(|3bqs(=ou?77C#Z^6g9ga{!73;8}<H)x37VA-(W4zk}4qyJ81
zKISfzaVrow*mI4l??%pK4H}~5Z}1b#)PIM{!xs^Oum{-R^9Kw|ASNvbydTqlr(^x>
zdPED~F8S?;-Cm50zX1$Z6G(q$PYv>aC*cI|Z}-~))qm#Jf2Lx}gb3LJ4-o_lVePqI
z>bX|E@c3ov$=2)w{s(8K%x_5gg2M)!X&nNg`ad+TzdscEZqQ8c5KQlMOz${M?-)$)
z#7tf|SY03pvBb{udSQ9pl@R^SVExki&$|Daz_xI!1`J`Y=MMzdCMW_jNdFXQ|8UJ|
zXwNka6WidMzfQFmFH;3n2(6z1CDS=rh?IT{Jk}+6$hR53flKw@`N`ykiX{M!pqHW<
zDuV>tyb<FH)*tEjpHg7`Ha#_j{{a#GKLCR;y(9cLs!XsDL5Tk}`gV|rCdj`wb6&q?
zc|~O`t{_5Gd#*|Jmq8FXK}*m4c5L;zpb&=rcfQg7)(u794F*d96d?yJq<c<xKKRko
zJKjY_FCTwyt4Oa(4+=pG)3D_jjU1~B5laoUAN~H##czk>KjUqJAzVR+<Uog@^<202
zTsIqbIz|4v^{Q3XMflGZT=bWJbxVO`ZNei6!Xk7-ARvSFUxD}Qf%Ib@sD+B^?s16%
z@Q=o@cIkG^Awtx_`!9O_U}0?{AY4I(<ou7zenB8~gCqEYA>=@Y3?C#NCeE#Lud1#F
zmuNVzF8t=7wwU9vS_0|U)#rlw&*60S-FTTgaIt)Fuzc{bd@!*DqT@+>{;0J}q^^p#
z$-mM6@sO()ZqUiYpV4aAI{6;Ey?zTc)+Q9f6L`NoXn%MxR`!Z&z|NY#0V0z&G6J;U
zj-39pf&O!I&-IW0ZIIXqfI9_K$NxB&mH!Td{xgdHv%UT^`~SovID**$cUUcX44h{8
z@5RFs@Q`0Ue{h-bAVR();kz%jewfGcGY8W<3e!6xlb33Ym2RsZua-c*4%OYN=YG&4
z9c3ed{xj(RgdQ^1CqI)I1L+k9=~a{Y7Zk$D7V4Lr%!%!VN2lysK~CvLF5?2gZ|avv
zs7r=G?nb3qL+t6dm(%zB!Nc-F#qxp0lKY={CBG0amU-*Ev%V;)SK>YFQ0ZRBM(uM)
z<nMM{e?~)4Q{y<t!M@=t8s=ve@G-WwK8JDE9;wBvsx2HQ=g%fJDrjLUFglcE2o-FF
z%)+Z*VBdFmisqQNhlW2iPnM95&8}y_;OFom^40h9ih|&(3@0Usy?;g`cqglh^^StX
z<GJ4sblqsQBXkXsc)>9RttcX&n8><ePB}cqnF@~Dc1s<m=Bv^a)oJ39_S18FFBmGZ
zS3NG9e*1&VO?u=Yo%$AL=4Ktm`A0N|8TD+oXe^EFBZ2Rd7=ww~*TI@275DMDuV5)8
zCg>O}ag3c$U^7{U28;M)XV^SkM3~CRJN;w^!JstNY{HRS<e=vntVNsP<ktH{%hUcQ
zMLMOCmtl7FK&_1hkD*y<de7cswrGlqx~4CA{J<)Z)mEp)xyYJ6lK9dST3c?%Att)9
z5j$jzR(rE{UBi}i^!cS_0nc=Gh)=vpA&leCWNv&0^^E2|TWA~(fFEgRR^*;3EJj8;
zHKjmKZg<vUHk#cvU`e#Yr}&zOKU;sAXrwiBKJI{ZmRxoza|(2aO;Vj|K*w@gTmj4{
zFnylW3ui(pvN-D})R5>%C<3&KD<WTofjXiC+ch^b9@q9<(UQrsBHC_^fibq0QyWrE
ztZ5~-{On$>sioE0>X2EWFuEmP@1m?uSigj`=}MV`q?z)adE5{yamxlN-{xieB@UO>
z$t=5FTy&T&r->SanaSeUg0)i)A8zODUJmfrK0%K+rfo!6u;xh$ft^l241=|z<iMAR
z8q_8cZKvFc^O5x2Y|(52C0}qyVR+RIDO(;q<L#|+xCOjt*7w86w3DK1;7aL9@~l?R
zWp`4BiW<RWPF#kzl*o6|(Go6MarxiOszfrg(nVic7Y}OQ&M!@uSNu3zGfLFhHy01X
z<=7`v9dc6261{>K1&a_5c<fU(?9)b;`7vziNw{6MQ#g`t5j^cd1o7g(d3;7@R6PHy
znIspCP=rk@nuWBphk(e<zB6|RWgCmhjf3GD(S9wogK2iS8Lvg(q5FOl#%iC4d^(7T
z$FG}u?;&|kN8+(~2CzGz2{BoaK6N*fpw<E~NpMUYs?=e4*3$)ZS!~#lk}mT6W|KEI
z0J-%kpz$6CNJWfgr$4+Fa>fli`yPKzXL()qUpz=w+wFe7T`jji9cI|=ZjP#Q&IVUX
z;+5<EnCxU$!BvaThQZRV)^gjp6F#FU0VemHrEaoF?;~rKdMU;ztz0D8I!rR{t{f!@
zAUC<){}>?jNcuNFH>8nJ?4&bw-ap?JwMM?-bUSt6(C*cC%?<y82Ufh+8R_*Gy#E?3
zZ93Jz&VdJWTGo!aG=4FRnh+fXo;N3{i==|PS-lNh@8_KM-TXv^Mx9L&V4-R8IZvY0
zLt$waU#-RYq-mB<!iGjur*|76nWET6ihj(<p6RcCJ{|zI-MjC?4u(BwGr8c6jc=>W
zLbj<f`bAm;rGxHEGVb;+OrFQfg&Z1+%N>vBAbm+V)HlpgAW1Z$-GH6kdy=>a+$I#4
z_NqhK6$IIk+7Y%}W(l*fYd(wB?d7lQRI0`75u3Eb);5Y|3A{3>PTf+)J@Nt+FxovG
zkw%Ye1XCM?4YRN8iSTk^2dNB%8$VKKuVplIHnzX^hhJVCdYl^mcD5>Xl%~~W0Szc*
zU3-3=!$w;zckJ*adlFb|BT}OfI{0CxkyRdUnZKU;f)J+9k!%eu*WMj$j$qW1W*Ky6
zU&dXq9C8*R5984t93hQJEycQDS<g|p)@w&5AnDCf0J%+lp0?+-I=9NsHVEw+Fs}4t
zY9&}drl3Iq(_wtv%C7qcU`1ca>iz)BJf07@DDX~dyX@P~oMQAgd8zWkJU#R0jpB`~
zAmpI3(4<;`RweS%J-O2}NHf%Xa0@rQF;1bufTUHV2S`Y0*gIfIb0|Ev22UwdVfF^>
zmYv5j92A6jKc*%jB%8f5><4d=e<W=dvG?07AY{+U>$1J?^S}wVTedJahq7>n4p->F
z4}KP#^vfIkrCmhqPWnV0|B?+3l*K>n5xhNO!1Fn|UJKrft-#ZzBM(&MeYex*<ulwg
zO0k;NQ{pW#y;i7on>KD`NPauNMJc1FjCJ^^feVWtE=br4gcBi$piC@&oAhqGz)t!h
zm>TDhiXfD{qbOz)TosFi3k6;Kpew~-&*Mc<pdenMsYAFJp4E;X%+t4_qflb(VgiIC
zTcB4-h|@v?-9U}PtO1FTiktLbqNnu9xqbuNb?Tbx#~<B@3v|lec9rQ)w$xU9C%8`y
zLXXS4Mm>EqwNqp_*-z0#vM-}nQ>1=O+ke+RdCH+}b07wdja*C4)K<UL?o}Q<=8z%z
z7yz180^p`dNE>8oH}#iTPV|zhf$DfAd<xuMwqE$j7a9DVo&dfM839+2C$7udb*f90
zbxxWMjL2+A$P$8&!M*_hoPTg|3VNzUYCWQpNDCf7VV~yf)cM?P*rwz~jzwpPbato(
z9Vux-n2-SCGhP%bDalqpEvSw%x9NhZJPFK>lA8+frCWBkcGK1eX@CiAy_}e^PAx;c
z7XM%$TiqGN4k>9_7v>+TIaxgm8<ty8xa)*nHk>#Xh0}t}VMhJ~y%Bkw0&>pop_L3e
zx8gfYvlf8;RufdnO-7b#p~GT-vxj8y>lIwEX|jbgovIB8)^+xo|8vNwG~eIUu7{OI
z>CPl2XOY_5)H>4Cb7&W1Ra*`seE&Yus{jx2EwVo$6-&4s=aSH!s}X3lYCUBdpt>rT
z7@*Dl21|71#@rVPjgpC=l)lBi44TA&!!0ID6$-ZTF}17H0cDM0b-JpRvvufhHY;$;
zCbZlC>KcLcV;uxOu`mlKNYD%PG0q3%Yl=R0Hft^Dt9R>!1i|F}9RV_8+vBWTGt*3#
z`Pw%fWjaXT8Lu?D;_i1CNYfYx<rNxT#%W_TdOqFP&<T09>$*1v>nj~o*Vx6lN4O6!
zetHn^2l?6^(N~cUm<MgQoZI1n1Uz5_-^9JY<m3p_Gx*%DxA(PsBK;l3S(eCe$z3r4
zljxv12oQ&Zz3XBOdJez#kq!?bi%0k#j@+EOxR|P+-CkN-jU`92>rz|~5?>r0`81O(
zQf%Xpxqj%tLrGo*CeF=;#^MR^@pHS!aoi;_jYE%`5OLMJncl=F$Ep*?;K%SU^6`6{
zZ_RfF`Uiq;T2uIveYt%yU0SRswsfZn{>=f=XHjsediH~i_jWxHjDv=NV;YjS5b>J`
zm$Hw$k`lIA$N(}!(7xTir0onIFf85w=^+Kvt<QJM(s#LmJF5EWFV6C3HOQ*Z`8p-r
zoB!?g-`hV%UaynG<bL!<^v3t9W~<qQRaWkotUQ)jy1SXS90A9;Dl?xlU5_^njV<Zy
zr9YL&M=zh~_d~E76qGwzm&qm!5ObqdRaGktXK>T+h%nJ3IxqYhwMPT=NCb3_Ko<TS
z%=}zu1<tX|#zv8OjOsKNX}t8Tp!OKN?Ck9C_fNGq{q7lFPsXb)DKXdIe`_zxcalBX
zx7(TI8egX6l;vK(!aeq?`4n^U8QBR}&-8}^G5x*!??Fyz(zS-`D!oCFytVwhjuuIe
zyAYlX*Eb#B^FU5ZkGq?nHf0EP-3#-}^Wm#;b*Fl}x{}dp-(HcR<hq)`Tr2g-55dsU
z8(~UXSwagc$g2DcloOFC???9H)jei*W3SyoB>pZ*nZtu+PO{$P354Z75B9M%Ub8h*
zxwdQjgSeCuK~J0Op3a`|kaQYuS{(+c@XWU)2kPiF@&W13@?Uagl3Fp!Z8y_3#{*f{
zt6)?#bX`2f(wYs+H4SVlr;o`Y#OF1y>(Oow(*DsN#~*YFZATD{Mv&Y7%2-#`8nZBQ
zUv#nUQRnnpo<vK8cKKzQZdD{xAfD-VU>ME?528o(I)GD{mF5WBmgb4f?UFk93tR^4
zeq<Nw-yumZ79}5I3U4BEJu_A1fiV$6HY|j3E}un|z5NEQl1R=CRA=v8z!9V<>nSDO
zc}{o9KxzRe##QqwyTw9R`szdJAJ<039Gob1+;Z1{h6_Whl7_r<Kh0?ZI6lsbEep6a
z!@um;EBxi}vN~m2`ZTB+V2p|?j(eqBI|$crhrzd9l7@ROT9Q7^;@KZALRu_E?=VD-
zd4A&{+}uQ8<R*&zrP$2e;G*3m|5U0tB2<ytRcKXzm%mZHnc8jNHQQa<b-xMtIXkjm
zyl3NCTha%vRe$^g<p$Kg{Q2*5%QH@)xBPp?b9B<IiM_|*ns{T2lJ$?Q_rT$|0iPS#
zn^;3>K4Kq+&sZl(PRDEtuj`9;amj|T=y%>v0g}&9E+PW7Elk$kW;dK`rY-C~#z}N`
zHwGK@EAZKSqv+=Fw}Fq{vt6xSsT=qkJdv%j9BEWv5LyQG@&Sq)brRagu(iRha8g6H
zS1|=HwMG{#lKGjg2%qz~mMt*jF`+5ZDE6?Y$g=??zO*f30cru-PvQ5(=cebpXV;s2
zH*qLBpI7`GGdR%>i3*IRuo5g(&M^C%+~=t0{O6Eo%p35Vq~|OyiVuu#aLPN)U9TJ6
z8LBGuwZWPelq;efR9{AdUTki9q)5Gptw?nf&E9}!m|t|LW|7@LoWouiK0)tLZkBfK
z29E|(2ZEl}Z%A(%o&*0T9`q=1*aYOzx)m{O5~qX<-}o(fQo<=|zau^_rLV3ohL^8u
zabo4S*L!z@+M!LYY{MBoK<<**w`$OGMAo$Eu9FD_H5Y~s^zV-CX6*9r4)0>$Bycfc
z-r!WXD9~Y^4PeaB3s3<DH&}ps=zSxCISSMa7_?%E%cFu&Z8Gb0Ljw|n#e+wK1zc=j
z&ClV_$!?nCV{>$f+V6?%GK1uXMJ>|PR~4J|w!##fq@StJ0nZU!WCWOk=u;72L|589
zWhIMW-KL%On&<rWOXH@buH#YC{5q2H<9r0{w|~>p;?vTGe@Y?7|4<l#$Jv}1zfQm;
zBV}b}{r-xH4&bKkY|KYRb(ln?j^8&w@|GJmWy`rwz6gGOU432i<y?JEe(12)Z@MCS
zZu7O~Lr}-w+wzrgmIJaybg!A?h`{41SSp_8sImPY;&kG<f#N_L0UlK{iQU`DSKwOQ
z4N$E!hhTnqg<u7C1#$&{1%3rHEn@t5!&B(H2sSr1H@K#sc9eGXdeC|_UqHpp40@of
z*rUilVhOUMd(R<ul(f)s2?h}ci7G&qXbLH9T(VRtICRS+2{LgkQ7oxEDI*c%TS=*;
zx<mJTF*_P|K$OU$1c#)YZ(FkqbRBjbVjXxLd>v(-APYEmzMf?_f(@So91AixuI9Ae
zbk9#4Vux_9>*B@(APwQe4`W_q4%E~cdu(s=IxNlfgmiA9t)TUg_3-srzNiX7w%8&O
z<3EJ+tX&EqNMQ_uNC@#6v7PXyf0QVPL=(<5Wob@3eH}Op$_nC&@;TW?R+OypKhjVl
z2_naMw0PxsRwy|8DRBm&Z*{~mh}DT@;!J?_;B$#e8*B0H@zAqgbLDXo@x^gRaj9PW
zKe5C1f%?V}bp*E<`!>L#lTKw8H&$aD2aGxh%`67F5R~8!#1*g=&=vf&09it^OLij|
z7HDn^ZpgII%xG<<5<SbhTA0?KnnBvZbiygb%|y+}IMcin%h7yMd@+1S1yXSg#@D&R
zwXSK-@ytK~P{Ww7j=YY(j`SNZXco<y+HW%nnUXrj8O0~Yy8~N+BKxS{xetx{X!So^
zVOtSf(OL=JvD|;U<G9aAAd9!f2?y9`!x)nqI~sc$a~k^^<FLSUBXHwz6L5>ylu{yV
zhS7<nkkCTz@v8<*@C|$0eR?pwVu{6pO5$S&A&4%D4<U@o;{N=uun`$0(InI)+$8EE
zMuCLGS7N8|pEwQ&5(k%%7K%U&(o|w~B6ZRw;<0#ip!B}(KJh-vzWu(%e(?G7b4%`6
zz^~3S{f;Gax8|jv)`y5F9mBZf%d1*?HPOxf+uobJ5NI9t0Z*P8@J$a*qcNSli)(7v
z40h1HLz|NUzdCdv_d56?GCUF?_BuZxuO9!wa@?81ZtmezEU)tZu8DT-_?AH(0K3W8
z`_@?xx#j_1XOuDMfeE*HphL2}{7w22?pmau*{o4h+N{E~*)DZ$d&SXfx|tR5<n{#L
z^hkhVy;q6RG3BYm)T>46*8P;Pzowsn?<sHn$8TGww@rU<o2Zwf*C4>Y*BLScY8Yk+
zniI8ymrJci^H0Y%e=j|R7IZU;HQKt|b=P)G0Bmn~z!S79nl<h^D{qst^`E+LA=F*c
zS}G2`OL-{yA;%1s^#u8wr{Rpi`=KS3gqxzjKKVnQYV#`K*W{^eievvGEsg$ZFqSNO
zbXVMr-FDNxZD}x^=MY>q#w_xv{ZIr%q`z;y6^8x3oQezgXviu#UyW20g;v~oYcl!O
z`dD0^>Kf)TxASK8W+--JrX7Z*yv_gsb=}niJbpMIaw+-`N0zmvm1t!|dejGFjWzt-
zi%~Nyygo|(+LOr7uNMd`u`&yfpC<e&3}arh>)4@btB#C)M-q-gVPiIZnetT{fVp~F
zK2Z;eP@L6gzQv{)!kCIg>HWjZfJ;53SuoIY2+16PMOt-gZ<w_0*}{##cH%pR6M;qj
zs_~S=blkQK<xV*3A-L~z{#Ek6g+G7z)42aP8E~>C>8i0*FEgv^EdQtt%Nw2dlVRd)
z`wQ8f*pCm;7B@V|^$E-T`T5i-@_9?^y)+knY}+yV!4kdv??zCZ$XTo#-(@35<R($X
zR4*}Uo|021l*ah-DlP%b;m)~)<f_do@%0n!%Gn$wO^hNDb42Bx|Ec>5-D~tk;#kWO
z&K-7X{0-Sn`Y;h}cdXNQSUrSwB=f8#|0n8a@pDd$2r=>(L-d)UoiS=1G7I(#LLFlr
zVV&TurZJoY2n#y*kF*dkq_h~kpzjzZsgDbc7mX8*UjZJ)_s8|elg5#L&%}zr86aj{
zE07sj3$zE`0AYdQKq=q|5Hnsmj*+;SL=PZW{;*>Cbppf&rU5l2X*snz1D#DYpYHjL
z1snwGgj$nb^7$=rCi0XmKy?5z#~dDE*<fH4^MM-XkXgBug~CX(!C)Ft<TZ#$z0?au
z9Lk9cbj}q#qB<p23S;wGrzj7Zq&+CRErTdm=4Z#dKtv7H8XkR_o=?9$(A2+^`O7vH
zkY_z@^*=f2nE3xVZL^uln>9J+-_=F7pSE58X>@XSdiYb+_ODf1+fzq^T@`-Ouz`zS
zSY|$<0fAn9Y$?TZaMiZ*cY7}MsewmXmzLng;)dd-o2!<q@6%7$F3-rfpRPCAUZ8rD
zOE(|yEe1FjQM!OO=6((H3MSF<L(}{;OSQky<B8c2^7)h_i8~_?`|c?o5&Y=FD8gBR
z4gqRV$<P-_Wk_w?i1#7xn4ap8t}vGbndp2R&no!pSz$cUr)<@Ux@PuSvpmVpWvBB&
zCB(hN%*6J@u*BiSQpDKAt;Fuc!NlUkMa0R(s>JMhmgaxVWzDtCMa&J&mCOO=w&uF#
z2Ih+97Um}As^-7`;$YxmpkZL9{7At{`I&-}f}4V=hNbpX4Mz=I4P6bbDg-)oIA}PS
zGKeySGT1EWDC8&@GXyg@HAFo`J$Om11f>^+8O0t279|`-3I!Xb6~!GT7)2bV2qhUs
z6@@+C()f?Dtg*JSh_Ruuk}<&8)>zlrz*y1P!q~)E)%aHu4mut>8aih3k7TUmpUEi6
zxXGBRSgJo&aa6zmfmTJU1VBp+iw%oYictb6#m&Ty07v4O08H^zfI2{3d}&_w3~DJF
z#Rz)K8C|l5C35}hDE9dU-se-Bz8cQAEd`l~?6<XE>46<h{oCKx#|JyPTD$HUj`lB^
zGVeF_7rgF+Z*tJ?jY~VL?W6k7Ak5({t}TJ?5rp>c)HnC~6wHUwPGO%r-rVB+bi_Im
zYem}=z4l!^bl)6hbz|+!Ri&o>Egr2^%c`PEd0nfMHyoJ@T6Vp%E!DUm#<48K{g-Ql
zuP;t-uNQFVT^}m#zD#RV$ai;?AMezHzN=G9%ihpiH?-aOdZ8RXUHl&1izm~Hrz)jI
zO2~V&GlmtLa#57+s9U~L@@Q#P62_6G`4WshTdI|0<b|2mr0pZbO3~eSq|&*DGzQZA
zty!otgwnMQMnUs7DFS?(vvLfj<@DZSuM%xi$z%Ku1GAIbmUZ)%GKA5o>1597Md7eY
zcZJza_qB3LwDcFV%BS|<^tCk&R+ut5aq7otx6kdrnsS0EKYo9Vr1*4o=Ey(X)mysP
zeiR#C+~r6=-f6nz>^6TT(X`87>>N2-x!b>&CeDP$yUivvpp$kp7}6!tm8H@t8bqP1
z_8`QUdUs3d2uDa^mlE-gfI0+aHpFnKW>?OGryz~jve5%hDP(dAl-i|rOfA~@&Q78W
zM?E>b<L3)fkP^%c6dX$(1OrFuCgRj3Lint(Z|O{d53C11EC)BHrfXXKj#-__EXaAt
z6t3^RF11Z01rwHx&i+M#XEGBh9y7DVb%MBc8?$+J=phVEY+6mfAI(cW>AiIUH}4KI
zp(6x#%VIL2W9Fex36>jcjjwAcwMs{;dj$44oq+rStWyqDiQjP$v;Jfe%nqpWuJ<tR
zl+o)p7IL*k1$A`z-k~b)M_oj3TiWinLqJD%K-20nieb*=Ru$0R_4$SCJ9Xx$ebuPO
zJ>Gk$cqNt4?gIIm7fNxFIVyE&?zu=wevie+`v}6_hXVMRLo{_2wD)<ztJu^#aQS#<
zy=%R0dqIw@#WT|IM4OoY;@+*6u5x}PbKw)AN89PNJVjV?AYR_d7tdrFxpM#~Q|w&c
zSUC0cbZ7Ljlu5C6kZk(s-JxWw$I93@b+oKSYlm;kt&knKbt!IDb?$gOsmY_GtIi5W
zmnBsgB9*-KUXj&;i5X7xAVoU+myOa!(sMS=iS*Vdjoxtt&mGSZ<2O%pa?#x^{X}Y~
zYF7u^;n-Wf5Q93?=9e`l(5Eza$am7}7RS@3q4O8U__f^zB+F%=!6P{)l%BT^<GRI3
zMr#U#rTqg-<i7W7igkDMH^{ylms%gy&Ws)8cL%%hDP8n$4X$8SoBh10bULfTr>Ylq
z4U(rPTfBQ$qpZ(W<2Pf*yxo*meh0TzS`2T!PbO7gLX-$zIRTbgj+ym_MJn!?K2)B^
z$R=#GR&+Y5Q=5zBJTEUlzrxf;+79=Az9kUqb+mb_jn&_U(=@_VD?s~L0iPt$P1Xll
zJTb<e7lFUcqbrgZ>29w=7lF@<+BI7r<Z8(Vyb-7??a4r&4&%s9Jsn)T?u;ddKF5Ri
z2ds>b-@Lo8R>+!da)-C_p&GweWy`GB9_kWkwG2-}*kr~AOT-^|ha9-&mj4=@{PXy{
z=(5O~cl>nZ7;E>qL(ROCkM+Fsk!c3{7)A13(w7&Gewvn#w`mPaCwp#stoRJk;yk~^
zELVN)<5Wu~(Ogwe8SAzE(yd*S(|mm~mT7LTy^kb*>{P*cd!cFH68`Y2`#8VUI28n}
z>6o8ne|9ZZ`)E1Z{q0=ZT*Ih_4>7xFrs+$kq%G)VdAdqe|McPZ?e2K&N_yi{K)zZp
zzYGd=Xs}m!Tn=?Att<XKy={E0s4ns$ojPy69ap8?LD6eWwM+x;PJH<+8K;vl5qCUK
z`E5f%6KxcE@hMB%UY!QO@=5trx<Dye-ke%_Y`_1mnWpIz&9{(Km}t$C4$R)JtEglc
zlfJ3Ld(e*OA5Fegs)Sp3!ex~ymTtTh7C)g~z`3Am=u|n|R3Tb)34+`I=p|Lj)h=^h
zqP6s!rz=&{qK&~&sua+L%~fibYILaRTa|2l)g-T}nuiR6e0O1|nFQ$;P_!Q<&w6|>
z<udz<Y!kA_kZuH^M~o$<lP;XvpwnxXEhJKTG^vzJsI0qx4iA`ET{C&U-L?hQ{+_wU
z@VP^qdDCl!OFfD{lBSRMSWzlCXk22QEo4ZsT!4zeCS@O4ERS$Bnrxh}A4sA98T)Y(
zg1TS!5H)@@_U=`*b-VWAHQ0Tv_5Mzw^oE_JR6NdcsVYM9?iH5PEU2R>(vlNf8_kjw
zxAyMUwGleBJf&?Mzaas+mKr-+^LEUqrI$ZXU#40VzE|2lX!mK*-kqmYc`!JI$a?<P
zZIDv=rEUwXZyrW;{8-F6IQmG<v3z>?_wpk8__4%$euTXI5v|zxNV(g3gVFsG{qB{?
z|M_b3@y^s9Yhk?gIZ=PU*6!TC!Fhan6ua!*pIh#I@o34lc!^7{|L<)=ePzkcX?ALj
zmgnHn!^JoB^r-w|X)fzq72W@?S2^`>%WLOHtWB+3?{1!+L;se&6E)iHej7basI7i<
z_SfLNFEm@5JXNZ;cUQ0b_^io2-o3bNG0a>N!d&0+e|V*B2p+rgJ5ycX@m_r9$+>LJ
zT)ld=wCCg;9+^GAh<LsUb^tGVi<du)Y9Aj6t83q?d@dFmS1)t^idYKbt7mJNKb0$4
zsfHUy1KrjhL`apbmjt8F&yEspp1@y!FR@0`)#wni)h%D1#WcO)uC01Uja}N6*5C`;
za7`@gI;}&t=ln2#nmhmC%u=4Zgui(4@0uIGR3}^hNSAZbo1MGlT%Dra5E!_8I#~5y
zP-z!rZdS`8`<Gen-5K^gMc>f;)Oz4^m-_mm>a!`}QFwIrJt4bIVlI?94J6%>KYrxs
z9UVo6UsVz&->dygG&W(dZA?u#V!|h2rVN8PM!sh0#AiGp$CEG}g*`}e_{}}0b@w*S
zd1Dg_rMUGb1=^wtxgJ1lNZ9o{^;BHx>wZf6D1*IFB6W6b^U%G=Av}I1>m`rt>&d|<
ztI}~=-OaA(>n(>+7)M7j7Q{d<Zk#-wT=+K$PDf%?D)<v7&x5zKejEI?AmGBC9n><S
z;0viSiV*#`#IsR}i5F#F-vtKUo+sqk3o+Pki}Z_niOGA-v~!<t^zWha{dc?lcT$JX
z=0&d$VZIO~Hw5ID7~!ihWr88<tm_hv9o^<_UD`j@Ykx*vGL=p;NDObiL*?x8hTp>D
zmIhv)6&nW44G;&3NRwg6)Ay+mlb{BkQjOaanWZCG{G!yMXuwCr4!Fq!WtAvs&_-lN
z=?+v`R9}Q&{AHCVsgHoPqw=HjWK&OryewHz(;zH?rz(`JrJ)``Ivf#EU^!a?AYtX6
z!UHW$6n8enm?63-3&@u)%qqo<FAJTBn*OVP<Tp=d4AGf6!vuMe6CS?A;v8SP#OSds
zPoi~huoEUVH0K`&*j=I+?GTPQp{gG6Yd;YKf^lV`2?af66$v{DyQ12H*n-&Eft#p3
zZ1TyOsTp~TQ>=Zg!U0|u{It=HnBJIPY1Uy((7j|&?bx<#wJz7_xt|Ahwx>^Xd9R5c
z0^Unm`<L=lEfQ^%bCH?1LNNQBx46CAoHrRg`<!<fz5R9v%_2YSfVcsvU%_9H0WTNt
zE+zd}`>rA|-H}_6d3-U$!dS6KH$NsbZcKmlX51bA7}2`M_%Wz;oAP5q>qbo>wRy*8
z8!Ed8EtkM<c&#_O1NsW|!5vjTAj6GCJ_Kts^(i>x1w;VEb_e`Ls3lo&I42N_FVRdy
zRNyai2*8Vq5YBgp^hL5II(D~U+eIKG)}Qy;O@QEXAMHgf?11qWbBEy*)fX1$&f+`A
zcE_C$dG{GX06hIx(+gwZZpDjZed6f0bvo+k&Z{L9^BT;267w4J&v%*Y;OPLyefXVf
zFBClp`WM44tk0p;Yx3y`#sir=cHh`;Xq)G^ckh;1-yT6fh)?3LAD2gjH?g_&Uw?fO
ze2)e@uvTvxz3BOR1P^jVJiD^1L!n=wx<GlZqrFJ^1~~5~rsM4nv~~<WvA+;_Zl+$2
zu3^3cd_l8bkh;JL4%(j?B=<d^3EZNt_TF;g1%b$Yd+!i}pgJ$qK5*IF#V;1eLso8x
zd?QmgchegscJrYGLl;9A*T{QvdveDX>n7`v^0>dE{!NdW8@!{xV%bD-Tt~(0lL_e+
zRL)?$Vqbix5p0>;HH4Z)#{eWGnR&3Y^!;X5juA=$-;`zG(F_1gN!B(TogMCij2Xn)
z=u3brmhnB4hfv7O+%aq#fUyA67+VT}iolT&ZH#4j&;Ht{P|!U?SQq`16f&DrDOv@~
zv=G~ZX<d?Y)*vX}z_>?}bPO1PXB5T^0l;1Xa71y0VE1oB8U-<fIYi@;LJwgTM9(lS
z0@)o5GMN{#;P()3z|o?@hs6Gx%X0qfCo}rTj7EW5jZ@thIizjGAj^Ck?d3K?#RR8c
zR@<Wi!iXCTAeLptz=7XEH;S)?xs4(pLj7w?$DY!MV3byiV2U#qeZVwE#S*ctY7|@x
zW{OK2oy;_>VNwy$I%H|YKF%5uZ3yI)j(T9)S~gbc!To1QQ?m?#wr!(KhM-}{lGw}p
zZ_cStNtu=1ZOJLaR>KtMALvyY!5sM5uj-TFrwJZYd@2^v35Dk#1kQegU~CIOU#MxR
zCLHYqOFe=B%h-g2hKVf;XYcSKh9i6h2kkiA^T4{PZJ?oJdn^9p-(*wrq`$lqSv8C6
zHkTpJhq{i8UY3`fPokynJ$xW%6QYO2RIJDup$37PCTha1?gM;axD%H3I2>sb69qLZ
ze6|Fk^oLS+WY+BRX~nsH1s*ET<7nHkem2=c@<d*j_U_s>8wH+D&wc&;cr@Zd6zA6v
z?g9G6l*?!c?R>=9Kb9|G?}B;><bx=|9zF8;6l<oGmy|IdJ#8P?5%fH4AJ*ZZ`4IV|
zxAn!0#b}?U@2}(|D?HR%OSJQlXa#3se&=xbxy0zkkV(`PRFiJR?*Mln+`I|;?RF5|
zNPTd-1BY)ZI;gudw)(FQd=Gr@OiVsqKYw0Lyj`2Q!O0(3@CBOP5PLyP?X-H~<@8YA
zQNNpf!sSew-G2YF6^NZWs=irz!F~VriQ${k-Jg1M&=FR>P5VOg8O|sZxvoM{H&4+O
ztbT3d#aq44`(oRbO1M4z^7Ibv6Oxm>we!e7Qxb|j_B6hb$5(W(D2VXPU2||H_R{l}
zs0h$cs(w2qEYj=g`Xax1>GHq)QA-|C_WuBaKz+ZfT=A6%igS?D_l?RZrM}WgX{<C?
z+9>Un&Z6e%rSw<Qm273Ss57Q1vy}zPVr99qN?E6DQno95mBUK4a#E=gYnCYG$~I-U
za!5=$rCbo34HWGYM(fcAqN->{ThVs36YWZS(!Ml}4xu@8ES*fJkto`OCeu`!MMsD!
zQ|JtuPZ!dqbOkM@Wwe6sqzC8`dXk=_mmvT+gg{-0fkqH3*1QBN=nxE1V#;lz@@N4G
z&;b&mJ0w90WWX@Ug~^ZybD<EHKoP8lbx;l!BnoE30$2>oVU?J&3AV#tI1ESOG+b1v
z>QaN$2(`Z2NNub(SKFxV)y`@+wWpe_rZ|TX5N(y=9EzIh%tp;}K94%sIb3Ll_%s4F
z!#NT))0u;s<s5}N*!hCcOtD-pYKC(RYNm56YL;^x>R{&tp;=<NiKrRQNvN65$*5V*
z7f}a0UlKZ4EH@Q3!}&65rgIu<mh%<V!OmfXin*f&Go9lFvz$`|2Ro<Z@egv&knzow
z@y(L)y(;6IE#sRb<C-hunkVC$FXJkZalIzvS|H<kUB>l>jBBBc>rENgA{p0PGOo8}
zTuWqJ@5s28%DCQ@apj39208OFu0o7!F~;?tjBB}!>wOtlk&NpD8P|t0u9fn<eI(;s
zCFA>8#<yC=_lb<JSjM$R#<f<)wNA$Msf?>s#<gC?wL!*JF5}uL<Ju(S+AQN*hH<UH
zvsQv}m0?_4Wn2|9uFqs#+hkmy%ecOfaaGE=cF4GP%D8sPxc11n_R6^S$@8{f#`mR+
z?|_W&pp5U3jPENM*Vi(xDjC-|GOi;su5V>rTQIKe7}st*Ylkte?_^v@Wn9N(T*qZx
zCuCgT%eYR-xPFjvotAN(k#U`sah;QKotJT4ka7Je<N8U)bxFqcvyAJqJa1R5_<a8{
z$QPeWvEp-4D?S&<_^L6klNeVG#&ywm)<hrMl{8eg)A^!*dKi-78R!qs!XU_m!7vnt
zgQ)vpB1{s!)r(@hbQr#dD)<JDz_(Bh--({-7#xQaa1y?UQ@;N)0cW5F&bocS&u^$~
zqxtY4bQFDFALtAHAYJr)SujNOej{Kc<iIEx4KKhP(bs(}dcaSh7}h`utQ9@qr%(#(
zp$s;NUU8%72RFkO*y?VI<NU_Hydd^^mJl4NhLK<1_#&hbp8=%!mQd@ex5_1a8MA?0
z;teqmL?4_&h#IU$i{%=q4Tx524c|T*)Y^ydZ4^WFyk6Cz2B=I8RGp$H)>K_}t6Viy
zQ}sQsP<=6p-TBs`>R;8CL|0p@tqB+Nnvrl=2#Z8d|L(Qox>gH@e=OEx@CLjgw)rN!
zDURlCc$-jI3ZjP*E%vF{<6$^Pc=)RDRiX_ji6>!V`8UOKORw3Y*En~?_cyl}!a}i+
zMX*ThV+kw~`*;^b?<J0OtJsGx9{gU(mEG7Thp|n5Yok?SDbYrbR9bY^+kMu1GQYg*
zF^#-J^2l^DgUrPDJZF<RWG<OU^6@Q}*F??sx;TGtkcH$;vWUDz7L&Kh67mjNO5P>Q
z$a`ctd7l)K56BAgAz4X2BCE*9WHtGO6q7Zigsdg&$fu-~tS4n;11TpP$tJRyY$01o
z1^J9@BcGG)<O@<sc95N97uikrkiBFd*-ySC2gpHkh<rs3ldnk?`Gy=J-;!$b9XU#l
zk>liq?{EB&Q{)G7nw%ju<SaQy&XWt|M{<$;L@tq^$z^gyTyzS3gm$Kn(nR_g?Lr?H
z^~4jj8-0>?r%#DG;vb^Ac$)U2y=fBdBdUsLM6J<}_NUL%6goiE7z0J+@f<CnyXhXf
zm+qtc>6fCqI7koCujpa=HLarGh+5-YT1~&BN9i$o99;ASJqa59o}QvV(9`q`t)XW{
zEpnb-pg+=!^e1|W{!A~^E20BXfC7k$#3AYw27%y&N1!u2iuK4-&=a190q~rtNXEce
z7zeMwtD-Jh2JgZ9qB2<tA3+6t2HW6sQH^{7m9PVL!Y<eidqi!r5B9^CZ~zX%A^1wY
zS8btgSHDmz)g9_ib(gwZ-J|YR_o@5UFVzF;LG_UOm3mnHTCGyQQIDwKs@3Xu>QVKW
zdR#rBo>aeAPpLnsr`0oRje1r+r=C|Ys6VO~)t}T$>d)$B^@_vo2x6^S8+IQ{VE41O
z?C-1{dw{iP53&yIA=Z&S%sR10SZDSqOJt9+F6?pEl|8|_u_sw~_7v;E{=s^(r&%x7
zTm1A9KhKDteyl%xmZh)(ER_vpY3w<c&IYjzmdUc%U^aveW!d6q7#q$;u#qf>jbfwO
z3oMt7VPn}iHl9sj6WJs-nZ3xSu$S0W_A;BsUSWA`I-9{}vRUj^Hk-|1bJ;wW&*rlN
z_8MEjUT1~uZMKBH!<Mpl*)sMXTh88RMeGB%f_=zVvX9s*_Ay({K4Had4J%=5**f+q
zD`o3h8QZ|h*+#aBZDw28R#w42W82v0Y&-jcRk9syC)>q#vpsAt+sF2^FWCWhkR4)Q
zvBT_ZR>i(yN7%QlntjKPvSaKxJHbw}@7XE#13S$wupik)_7l6rerA{1l|T}xus7I3
z_9k1z-eQZ{8CJv2vUBXbYlv&8E8F$FYnW@eYlLg0E5|j;HQM!pE7vu~HCB6G8>S7{
zMrb3o9Bq^~T6;mu)y8V$wDH;mZK5_wo2<R4P0?P`rfRdbIoe!po|do8*9x@Pv<2Gh
zTA}uaworRhTco|EE!N)F-qDt7?`q4m_q65O`&yCqfwo2~(bj6~v`@8CZM{~eZPGSt
zTeS-9Gi{spxwc*VLaWqvXgjst+E?1w+Be#_+IQM9?R)J9?Tl8Voz>21=d}ykkJ?4;
zC+(7US-YYWUD2ryx~e<$0R3ydO8-VbqJOJb>)+`|^<(;R{e*r}|6V_(|Dd1N&*(M!
zS^b=TUcaFKs9)57(l6;h>zDN_ZsJzl)D3Rc?QjRUnLE(!bi3S|TX(zN+-<l`x5pji
z_PT@Jb=)EDP<NO++#TVLbVs?P-F4kJxa+xZbk}#^<c@LQ?7qc4$353Q&z<j{?=En^
z=3d}_-CgK@!@bb`rhAd-cW<<w#^O`ak#s&4Jt#iwd=1*egJcIh1RcpP=mt-cJ<tRG
zLH1$B`x4S1jT{h}Y7{vL(_k9;8fL*PQYCWm9P$ljn<JQQzQt@)joIcqSOFiBquBEw
zSMO1qD+HgJQisdoQeqvZ!&L6Vr=pDmz6v;^RI^wXr<}wmq-R{?TyrROz2RCzLtPtP
z7ieRAPTC8fkS@gR?Id@IoE}eFkp$93e)B{jP8^%vOWV>1=)<m8Tpzl8-<$G%%c!l0
zy&e9ONZ&U~x{yFo!So<WVy!g!{NDF29*`kqgvduA{CJUrK;)unWR^CDP`*)Hg4`gu
zODh-Lqiq!2r)|OMy9C#2dyxACH)~%CZq*J7ex{x9EyL^h*5x6-b$KYR`!h~=3a;la
z!3|u)DF#k4af%10gyEEMoD$)iBJ$^Ay8XYDKkeD`e|PTuKa)Lu`SFkD#Q$bK3}Q(v
zne}DQi|pddiua3r*a0)uBO>ce!5r9C<Ue2Lv+`b_KbY}`{fk_8b*6h&<hb9mTkXv8
ze_N*eHIs>)H%sK^+8M94s4RSSg;iDfYKl&xs`ydX6hDcI;t5er<YPTCUsMwp#Z}uy
zT&e%?U6;S)MLNKq6LnMf=s~(y57z7GA$q7DribehdZZquN9%R<8}xemje33kCOt;K
zS-(ZURd1j-)Eiwhla9G|F6B<{;@Tg|s7tQSsodZu_gs}(H)!SBM$E5Uu9;zXi5$B}
z+oyf09sDKN@(>=1`S!#=&A2~bopX5@59blrm3eJ>SO57xk$KHe|3&V7SfNTCF$9WG
z8jxV$|8ylc;qO2jC_R)u<S)uI$}^;i(og9};*@8V0i>xiP{}6ElwrzrlAz31=8+!C
z2g+xp7fq)bWH`;D!$}SuNk@_K^aVPOOrjI$i~qyknZQR;WRJh9uj%v*p{J^P=m`)3
zLx7M3au7m*5W@{2LO2cgeJsk2h=PhNq6>%!h>=UcaEgc!4k3Ud;<2pjfr^NTh&LYV
zDx$#e)tgBOUW<w={Qvuz5AQYKbl1FkRbBO}y1ItUR_;;eka_qt^8sbP0`0xBSXoRK
zt3H*HC8|&bDO3Y$99gNxt98f@HA!toc4L433iju(;@Iq<woLm6`AGNce(LI9>tEBL
zeo8+@qx94IX<E?$htW#LUB*mW*|^8Jk5)7084G9)qrg~1Ya2_9HMEYg&e%j78b!uF
z+RWH*yhuA62aSWYm+^-2Chcv!WxP%MLC=4N4m8d|&p*YJ=4nW`dK!D0&|<Te8Atb+
z@n#+Rl$m5E(PzvwGmY*y8<-8~vu385NuM*b%q;r6nQdm%7t9uB3;K7nwb_~;Fmuct
z`VX^{*@?brb~U@wf13GbK7GmTZT6=xn?uc^^z{fBjMF!)epY{a$Qo!3p@*$u)>wMf
z8gGrKA4A;mApHblhh6mF*5}qKde*CWyDJ`VPwzyfuWyO(m~v~mw&mI?PnDZlu0Yv~
z>mn5xajwUi^`3N4m=u*Eaz4Qz)nNQ9SAK_AM$_6fk*3p@v@Kl#=Rb_|3=hLqDju)L
z|LqL_ZzufkE%+$V*Y?$;^on{Vy|NyyU!_;ktLoMCtMwSYx*n_7&}-_o^f<k?9<L|p
ziFzHquAZbP>nZeQ`U-uO9;C0)*XbMd5Pg##rf<<B^lf^SzC(}Ecj<BZ9z8+drytM{
z=|}Wq`iZ7$n)<c+je1J`Rz0nLr+%-VQO~O9eh<@#Mm4#<w=cwGe(;M+D&a00@uUvP
z0N-Td&tJDCU2&%r8Kn)uohszsK)1quRG!*!A4Suea3AG^cZbs9aJP)3<LM-N7yTQZ
zL1)7qvzhLud+0v;41ED-jxKV(=wfH9<ZO+0P3cV0?C?yHj7}RXNlKd1Olbr0NmqzI
z{$fqH?y~N-W>_<=S=K$)Y^%^(X|1-_SZl3y)<Nqv>kaFW^`>>$dfPf`y<;7--VL|n
z=i6}EMwhhEvPCUvPh~rLe#G)Au5D?k^eDBfIBeHSke$%324Goxv@9QN8}*B}t+yVv
zHdq_2$E{7)W~=A|Ti>@nus*atwmz{wwN6@}{i4O89;Ix5QZ^5v_P$JOkGW{A3=2QI
z$_VF$5ZRI%5aW*`M2-|lwj5284st~W>FB-L*PI-HUac~H0M1K<+$O<jCrwEs6ms1F
z(rlzOA}Zv+8PTA0+7KN)(H>IFQ}T!hJkphz;FWwBNAy&B5)1q@ka!_x{0s3xv^a{C
zv#ztQBatwIolMHZC}j?@t-02Nq!Nr(ib#yL)!IeUV8rqn$+W((PLYAoAKyu?hn{yf
znFu}YIx+?N(amHY^qX&xMNoQgk*!dIZ<B4%8@@xfLs`B{o`CXvkL-XleV^=va{Z7L
zL)m^zc0mvMDcKFZ<Y#0L^pszaC!x1IL!N@Z(I5vPUU11lh!LuiBM=wFkrUtxFF6T4
zwV!+e{bdwH(<SvHBU~^3=h5HqQR&HS@Q(;TVO@o*%GCdP_IG=>#HZP%we^3Vy>xZ9
zW@)>+T0Y;vd7+R;tD-OKN@^{%Rsh{??I#h|w_bV051)?w+N<SNb<5l@t4mAu*Q8Q%
zece(ketjwmw1ZK<B`%VyDSk^N0@wM##sFDBWEv`5Sx}ykEOLk(BOl>z_zJZsgH$hm
z?ZSR~0CI2$tUW<Lp<hynSQSmN6k7=>mE?L3B~eLLGL$T(g^~lcyqnTX8K4YPM#3oK
z7G;VuU71B{DGb+s#3{*eW;Vty`AR=HYqT;E&beEeqZBC1lr_pmWvf!G>{XsqUQ`Y$
zhm~W>2g*t1E9JCGR6~w4R5!Gy0q(cMG!FAvo+hBqr|GDB(gvt|(G1kRX+zX~Xd~2p
zX=Bv=XeR3Zv<d0~Gz;}WdJXD9v>EE5v<2$nv@Plp^xBYb^$JpJMY@Z6iyo9Z@;lQj
zwa!hS)W!<49O|8BB<f<bJnA#1jry$VM}5v@Qo{&@qi#|@REEQ7Eh1|}ZICr-Jji^S
zh>?FCki96>KgeSe$UZa~WM7&BvL8(a*`L+}Ie?~t97yYf97MC_3LV-M<X>oWki%(9
zkRxa-kRxepkfUfDkfUi1$O769<U*PY@<Ck?1@h~F+@i~w#_vppD3DXQGa#QD$epGR
zve-00o-sWj&zdI4b7lllAa5{sF`Ljekh22F&05qw={nTC=p(3m)AgwP&__}CqZ?57
zr;nlTOE;n(Kp#gvkZwXf$gC_i*b^-^SacQYon{r(#b#C1XUuA-&ze`GK4->A4c1jh
z-GnYiUoSx~FGVjugkD~TUS5v=U4j067(HHyUS5e_UWHy>Eq!MS^p1nx37~f>pm$vK
zP7u8lh2E)%-l-(LQ=VXJBUhr!_XcB$e2ZFx*1!R4X2TsW+a|fHEIPcptQrkqt*C&d
z>0+q`Q4Ybfo-dCH#c?CU_nwug?ok8rUDlGcDn*R~+B0f2$egG#AoHTef$S7DR&q$e
zC3n%zv@5-icB5VB5UU&XRQaJNF3LD%GTiC&)B<(2x-s(m$TN{=BhNvbxX4;;EwPqb
z4_V8s<<<&lANN>KT2EPft*5Ph)-%@r$ZsN*NHtQ6)FX{ZPo!ymYn`^fv%a^^SZA$s
zUgD+Rd%bhK_j%`f=XvLQ@Aoe7KHx3#Zt-sQZu4&UKH=Tr-RUj%9`YXc9`PRa9`hde
zp74I){mA=?_oVl8@0UK0&-6w3ET7ls^Of^O`pWxi`{I2GzC>RgUtM34FWHykOZC<B
zrTOan(tQnl8NP<TM!v?rOkWdUmhT#0wy&wLnXh@IFS1-@WF(8^ks|U`<hPNhBP&K$
zimVJCjl~%kg0n0-j4awhZ$C^K4n6!>Wi0gSlaxuM9Igb9#JQ95I3r@?Qw_iRnEDuD
z#-qjt!i_D)7UCG+7~hb9oF^a^<U9eXVjZ#GBempg0ZH;shkic8`v~;#O}%eG51-?G
z)B7fAhy8pm_Vd?bKi?kv`3~66=V3qJ5&QX0*w1&ye!dI#^Ifr@@8&%VJ^Xb(8+!GA
z*sD*%Uj4R62YU58AfMYw{>7B&Z!5t+q?}4h$U<)t^kxM5k)a<eq90>0=LwkeG|YJi
z%y}n_XS#;wTXah=hi{d%A<u%$CedZ<{|{^N&)3IL-I4b$)RZ<#+t5=3DB;r4xpmxn
z?}xLP=VvgXGy?MJ4%+0^BTH>6dEZ2XS~m%5+uZOuKD~SyyIm4-{vIy5Pvx^MsKXr~
z66i=f$+`$N@f$e1E^#jQse=8KeB&mx_Cn5ILAw%quSQx(ZMh?sX73@2J@O~HS}qm-
z5{llMl}3*8jo}J*j9tr4wCmYvc6~eDZeVBFjqRp(GrPIn!ft7|vRm72?6!8U-O=uD
z_r_Ewgi}hxJc!b?d_S2MT!&ZXTySj_xHhWHwbahKsIwA&aF#+Q;!NEtd<#gPw-%VK
zN9YlR*nOl2?0)t@@XTO)7%}YO_VvWFN7$pl+A;PRQr;eC-$ZQtX8UI1*puvANx;6{
zo<f55RC_9^Xiu}JlS=kXdp^0!F0faST6Q7$GgYqDf!yZ6cjVf+K=bU5B+l+^cP8<6
zzTJ}~*uBA9N%jnT21!P1<59{|P{}Ruk^5<_39n|lQmmG{$z3T{D{x-tQtLG`89p0{
z+z~|Xj1YB&*)Mm7l{?7N@ZBIS_lGT)HdC}&N1G$iW-r<ti8hx<n+4kJpv^AY9ECPl
zwEt%RjYOAPz8o!IOH%Ad!2Skh>Ol_Pakmk<_s{wZ?zsP!Ex)w}=b#VUVEd<#_GK*p
zt?7l@R~1`*`M(xK?i%l2vUEf7Cyad{KCMe)!s-6-%)HWe9=wj$MB%<Pt>8GH^dX%t
zi9J93mh-m7fOXM7W7|(#C0B9eULr4@x94)WJKA01I@YdCU5F`D7k<v)?SAByU#>yz
zex?RpiT8KAOMWMw_r8K}sGPs2E=}$IVQF3JJNM^HSMH%S@xL4|owutS$|)F8Oea&w
zEFyPF|L;Z==dH>6kxil1W0#jrGV&@SS4!kn*7lOPOU8{?M%?v7>$igS#aEE^Kde1E
z-0`<T+`EbF4!7!+uE1Pq;aYU%mxSC);>s-vIS+#SdD!yZobxjca;IU<o=LQFsbH~;
zfkMwpqA&(gL-PqpLs!`LwUEP(c6*c^r2NHe<i2eJu8}ht@~V*T5YlBW0WYSIA>;-!
z7Wz2Z*WoH)vN*h(M-kZ(+P{OmLJpCm<OKPId`V7`vs9xNwP}FLH&1KQM4C!7Xclcj
zb7&szMtji#bQm2;$J1Nr6gr*GqI2ySusX)B4zju(3o_QO0kVc&6J$-h7RXw59LPAk
zHptrGPsNV66F?@|i69g0Iw0%VbwSp(lRzff$sm*M6p$%4l$o6hepcj+3dl6OKFIoZ
zI>>YzVkJ4l0y4vH2(qEw2xKF>G04VtCdf>?3CJdP7RW678j#o6*&ws+rXZWz5T!~V
zgOq+&<a`gvmUb(Ut?bqyTSG}Ia{dQoTc|sVodb18ff|&D<I|2<dYwUbw(~*e+ucES
zw|ju>0d-2TdqSO3pk~bgIit+`%%NUP-pQfoe!s46p09WEeKrH`j9x_1|0-oU=t-%M
z+yNytpDw0_bUiJi#dIG%Ko8O*^aMRgzousuLy1%ZO0*KIBr0i2rqV*mRl59!_kUy6
zL^Vy#R9mRIY8SPaI!L`i9j{JSr>V2l`RZb|P+hMUsm1C(^?-U%J))jaPpV(5XEj5M
z)B;+x7ON#{X<DY%Ld(^<XuY&S+6~%xZL&5^o2AXy7HfstdaXz+*7j)!w1e6a?Sytx
z`&v7z8+xQ3(4+NOJyB27GxZjFuHHrOr4Q0?(8ueO^=bMneZIaJyyJvh7U^G#{*6Qb
z)<*v(pnns=zkNtDwmYfV?xbV8(+Jz0Ol)_q!FDGb+ntu!?zF;or!BTS?Xca+g%X-i
zI$*og1KS;lIW-sZ83VeSR#Qs^9j_&8>7diJMp`!LEXX~K&$TvMd#wxTPVyaR(7m()
z+Az>Vz$artkJct=lR@92P0^-<o~F&v=763Jo>~aHKwGL6f?lDm(KdiyuWiz{gWd}M
z+Y9<hZNGK^^b6Wc+UuYXYKOIBppSxAKLP!b_PO>o=&!WXIstuF*K~`hx(U7(pqcLK
z(V#2o)%2R6WA%7F8FXDJfkvP+^envv=w^Bw9a<<TkxqI(=x$Ih13>rFhv+we9<Gnp
zCx9NW-=agmpx*|i1^0%2w?12+4|=X%pf3fzSYM&90li9JuWtgqQQxW;gWjP(sqY89
zPk%vw3G|ElLH#i3L;6wu1nA@XNBZZWPwHRkr$L|6&l(z04aG2xNYFlm889j|0!AgH
z8t5uUtPu}7&Zujoflf6tj4aTZMl+)g=vGFq(Ft^((aq=ux`)xv7y^2bG29ppdZaPl
zxCQh?<2GX&=&8ot#%$2DjJZYu=mo}NV+H7C#wuey=yk?MV=L$)V~6o1=-tLX;|0*q
z87~?KLBC=gGLC{iVjMR<0{ww;()bGWm&PgMEa>k&ipM0X$ME<(47BYDcq)O8@>KD}
zf{yXTdFp~r^rU(+K&N{$J<UL8ds=yNLFah#Jl#Nd@$~TY1Kr0n$TJ-DFwaQOc+g`#
z6Fs+qp6r?Gxf}F!&n(Ye&~rQsJc~gu^epqN0$u1?=h+B)gQv)|1N3&!ZqGi@dp*y2
zUIcx>^NQyX=+`|*JjX#F^L*er3HlTH_7&)_J>Q!OQB7hR@>#ZNnYI}KEzBtSMAeKo
zW6U_vHO)jb6?C$hZf1gRWM-Q%N;F%TIc6T{_GTBe2k3mWk2whR0CSi*67&t`SaTxi
z3Fc&TD(ETZbaNKy8Ri^w0qFVWLUS4DrDmbI4)hvxgINT6leyj84Z7IeYd!~hzj?rX
z1@uei>*f*Ahs|T=2cS=wpO{~Q{@nc9{2uh_2ohlsHA0K9B5cr+5h5ZAv>Oo}0r!7I
zwTPM#aQ{cdM<hq2Lz@IGwv^>kQKrcL6x#3@Nl>Q9z7<GyB-N3`B8f#3i=+mU8c1p&
zsfnZ}lA1_rA*qF=7Lqt5aY*8j)J9SpNo^$YNaB&iBS}D#fFuD)B9cTTiAd@ose_~r
zlDbIhBB_fc2}u%?BqYg5l941MNkNi=Bn3$-l2jzANa`V}hol~oG$d(A(vZ|gQXffu
zB<V=fk)$JOfTRJE21qiHWFW~v(hx~QBn^=?LedCHBP5NHG)B@GNhXp^B$-H>AZdc6
z36d-%SxB;wT!Z8qB-bFxMv{#r8%a|nO_4N3(hNy6B+ZaCN75Wgb0jU0v_R4VNlPRx
zk+ek83P~#@t&p@v(i%x?ByEtiLDB|ETO@6fv_+DGBnL?jl3XOYNOF<nA<09MhomEt
zjz~Hp>5QZ^lFmr-k>n%EN75ZhcO>1B^gz-BNe?7Fk@Q5;6G?9*y^-`r(g#T&Bz=(d
zL(&gPKP3H;^heSk$p9n+kPJXF5XnF!1Cb0yG8oBVBtwu4K{5o%P$WZ<3`H^w$uK0t
zkPJsM9LaDb*CV+e$@NG^AQ^#V1d@?RMj{!BWE7H7NJb$UgJcYnF-XQC8HZ#XlJQ8!
zBN>n6MkF^Pxe>_(BomNKKynk3n~>au<Ypu{Be@yLBqWoNOhPgl$z&vxk=%;pRwTC~
zxgE*vNNz_m1<4d7Q;<wWG8M^GB-4;gLoyA?ok;FPawn4MNTws1j${Us8AxUznTcd3
zl9@<mA(@3_7Lt3A+=JvEB(sssMlu`8y-4mwaxaoONai4!gXBIW_aV6t$y_9Jk<3Lh
z56L_v^N`F(G9Sr&Bn3zckQ5+!5Xpl`9z?Pb$wDLxkt{;82+1NOi;*lwvKYw{BukJi
zL9!IdQY1@}JcQ&SBo853hGZF%Wk{AIS&n2mk`+i+AX$N=5J@4DLL@7ZtVFUB$tonP
zkgP(o8p&!TtC6fhvIfZ-Bx{kZMY0yjIwb3mtV8k$l1Gp{f@D3C^+?tuc@)W`NFGJ9
z0m%j=8<0GP<S`_VA=!vzBa)3s9!K&xlE;y3Lb3_TCM27YY(}yfNfDAFBt=NJAlZUs
z3zDr!wj$YzWE+xgNVXx_j$}KM?MR+L@&uA6knBLR1IZ2~JCW=}vJ*)$l42yqNOmFF
zg=80!-AHyL*^Oiml08VIl>47nA>~M2l1kD^BYcCp70Ds(Nhi{c^dNoYDiIjj=fZeT
zj+o`liJV!MyR)Q|(AyYtw|==lnp|%ocjOPfVJ)9Kgq~gH{I1!7b|Bk@=Lm4*4=E;-
z0O>~tk>O-CzN0;bOe1%bSvW7VkSrxD$SSgqY$Qcwd-#{R0(Ku5i}tq%*aKlSI>a6(
zN24$n9SI}R@%D}OO)v_bY~L!!pSFDR2R#F(uHZK)_$>;)4IX+jD4%#tClr6#09r2i
zZux5q^51+SfBRJa=BfOxQw8UVDE^ag13{FJvqn%m<lLidFJSEaAj*X}>#+!r7vu2~
zJYI^&58?4LJYJ5+g(z2|T!nHq%5^9o!86z6@na}AqI?|XCX|~|7U7v&@OUfAZ78>+
z+(}fsD`*%e+TB3!Lb_XCLrPXC%DEQ>JO@`m4PhZB>oQyk^%t(&iO0qA_=4G%!8pse
zLYB0g2|Ra>lstQryXH(S^91&h|MC;q9L&>5dwtlJWmuZGg`aW#H?2{?LopDe61yYB
zZ&%sfA=avbGgnvtq@^pM&dH}vQ^Ip%m$R*faJOnu&his=*;|`VVAO`KPl=@}v}+}^
zj25<#-qI^WPf5#O-v!!36-uQ&wxOXEe%^v#n|e2Bx8(}tD3XWm^QBH-uCmZcCH!>4
z*8fs}Luh4QwQ$N8mVo?UL1{V29lQeA<NPNZem<29C<R#>F7{f#J)K72?U3K2u<!fr
zDOH0!Dd63>A9$dwr{w=u{L1r}htJOn=QsoV=8LuS=f3^Yq*h{EcBvN|Vbt(@t-Dm|
zmDtw|YF$a~&%{+Bzt_S`mtu*HRj>^$=`Sx_A5!){YY!fg_s{v-`rFr?luh@?-+#>?
z^!-0hSKbFTG1Y3}cfim$dIX-?6lF`4lP`!st`9%&S%Wd^S{Zp_YHf)0vD_7JP`I^z
zl>E|)<WO7JHk^kDv{?QIYeabE^Z9kpp*7F_L6*meRK}yjWe*1Z*CKm~y&U?eRrXeh
z!c^>S<lQBEoZO4B;+MbA12Hf3n)YgYjlC9Pz)(J?g!9?w56I_#%AvGuQ8=IZ;e59G
z9r^rW4$r6m=jU_qB`wdvmu-12|AWhO`DK#N;g_^LhhMhkx#|xt&sCR6KF9yT`5b?l
z<a6U6oX?GyNj`^M())ABWqW@X{=wy0h$}`JeB`g^HX{V%t6%?~SLDxJ(I#w>A!m^6
zC+r>ePC45|<U9Q`mTVD@=QjKy-x`|1l75q`jpT2n%Gl79N4VaoM|h2q3!{mbNCA9a
zKx-bm3|7MYwzuuFux9iR*Q#;$c&Jm0!*y!o|8u!bxQN^ah>Ejj3ofI)mb|~%;fl3C
z;R?4u<o|20So;&MaQj34Z-2$wpKyiS-yCJfE7tyISGfHxF2a8KyiIlcxP4vu`{b&B
zn17OAKB<JL#_jLQcunyS^<R&3>y{+`Ex}Fx3C<{IoY*F|I5)`%NS@)p$v@qHx42Q<
zA-0HZPD2@wdE^e1)c;riO!QJE;)N(P9d~4GL)w!rWDpsK`(;B+%lynGghjE6#ALB7
z7UL?p!?uF&XDavxnv9VL;f$L6eGU11)f0Y#JC)o`X5+Kd8AQjYsRd*yDTK3@;&anN
z2C*2cz<Ps>VqNjLFCKTp;{hNmvg`1;7xH{O?t{nO@wh*pBd=w6702@hp6TE@0oDU#
zEPj`t^}}m>;W@pL^uaUxVhZxFE~Xj4Z|8Vz1#-bNQPwT|-5g~gR9<Qa`D+QXywo=8
za5eNcb|N|d8ziz^L%*9r{G<IhLkUfVG7!PIU^2eRp!jc(axp?q!(VL|7kM4^-!99_
z|GxhmA;IRsb|e_w65K+nVT7NK&sF5z@cUD{Fh7s~hm=%*Pk$eOU(8X)1v$FdE2SL=
z{3pPUM!{xaM^UgSoU2CgDVwX`o1zBwUw%?CO1?B{Ug)h&|FQIY`Fo?U>f$;JaZ%U(
z^mofTN|_Q)Ew4;!oBu;<`UQW3wj=zv3c*dmO}Imm;_t`wGA(Qs{K&M6F2W}zqmXLh
z&&6FQpGsBsZ}o5UZ}&gp-{IfsFZS>9@AmKUKk0wUzt{h?f1m#u|9=0o{^$J92UCKn
z!Fs{8VEtfvut6{**bq~dIU<-_3v(pGsgCxK@sIV7^N;u6=$`=X<wXC@aMoY_)BJZr
z{_pbN?f;v9hJPkpQ#%+ROb8|h>jditlY;VDr2;lR54NVjcZg6cAa;qJLcV>bibuqg
z;whrgz2t2+f{kRO*l0F}jb-E5cy=S3z_zk&Y&&~`?O;1uG26v<vpwud_7vO8o@V>l
zGi*P5mOaOwXD@J-Yh33B_i&R(aEp7nkC)?-ygawLpEJ(6;4!>9kL5LZO<s$~@!C9|
zC-6jGhu7svJefD=EqF`binr!%cw3&s+woj}EpN{|@I2m;cjBFS7e0aC#3%Bb`7L}B
zpUiLNxAEKg6h4p7=lAmk`~hCTSMpVSHDAM@;(Phid>?;?@8{3*=lF;GBmOb}gn!CU
z^3V9^{0si2P=qQpp$kJa70pC*(L%Hotwd|lMzj?<qMgVU*NXO{gUAydMJLf&bP@St
zq!=Yei!oxX7$?R<pEXtdRZJ7h#B#AhJS+;uO0i0;7Hgm{+Y0^McClOR5qsg^ZgEh&
zCSDhBh(qE{aag=1j)=F#QSpvACf*gt#e3p}6XjHNDmj&%Xy+=Yic{68=3MQ>IMtn4
zr-oD0spZ5u@lGA5u2bJh4?Z2-7kno8Z1C^Fe+FL-z5ykB6&uKIfS&Ls2K9&iogE=p
zafe?`l6VSlMzVNU-k0R@JNR_clRwB8lm2`y-$(}Y=lLsS1pgQRhTJ4PB8p5FT}4+i
zM|2l`$$ii-Pb3B6PH_)eEY^zkWTkjQ>>z8Q4(%eL+Ou9fEnX!X#QWkKvd5|I)Fv-E
z2~Hw;*-3Je$*aK~!D8}SaDQ+=ITU;@_#AmNcp!Ly91gw|e2KgjJQzGkjzA5}AO&nW
zTfrV?g={5T#a6R5Y%N>I9%1X*qih3vjBR9(vrTL>D`H#N7wk*+FZLDtH~X4>!%nep
z*=hD2`<|U)XW2PUIOPhzp5MSn@R58JAI-<`v3wjK&u`@S@Y(!cK8N4O=kn!z1%H?q
z@+bHXzLOX8U3@p+!=L1D^P~J7evH4%kMsBV3I0C+fS=)K`8h!Z6?H^iktC8uibxgp
zM4G5C(nSN2AsUKCqOr&nO+=QsMr4cY#85Fz{6!2G*NYp(2yv^pP24V~hzCT0cu*`9
zi^O8FL@X5#iO0nzu~`&35su|}9iLOqiFC?4w&Qo0!yVx`PQa<)xK7Zi=cEOn3_cay
z8+;-7V(^uq{9P*tOPpYdJ6Os!u#}Url+&@48(}Fo!&1)0QtpVQJQz!P2$u2)Eafp+
z%C}%?-i9T3FP7kaSa$QV?C!_1TYzQvfQ;8veEUs29xlgO>>f6o-OJ{%``BDIkIiTI
zvjyw{R=^%)3)v#Jm@Q#T*+Xm@dz&3)@33R+U3Q$k$4;>K*$3=H_7VG-eZoFvC)sE0
zbKZ~l=L7gaK8O$IL-<fWjQ@oX=XdeD`QP{qK9kSlOZZa$5MRb0=bQLuUc|TXt$Z8b
z&R^vR`D^@j{suq9-{gn+Tl@$=#lPjJ`FH$#QBhP9l|{6;N>mY5MKy7?h!NFAtf(Ps
zidrI0)E4m~K_rT9qMzt528e-TkQgk6h?~VNVv?9FW{Z2p9C4qRE9Qy$;(oC}JSsLg
zw}_46l=xPh7T<~Q#Tju{oO6gn9mP={&Cwmh@i?ZF;-m(51$PJc1fLK7BlvRgwacO$
z%k26Gc^(RVU}(?3SnLhup7E(p9`xHIoQ@zzIuK*CQ5C)?N`*yE7vx=$cSC+g^6+!_
z8MtoI#$(P5W<frEtUS>nwq+y&;#`M#Ax@1V<yd7_mH64!EQSOyo_ARSOCmv*!s?M|
zR-dJls;nVvM6PC;tO=>kTC!H825ZZ5NG+Djt|hfu9>mBA!BfHSNoMeDluqy&JR4n_
zuaHe{Y235rC;lFKqdBy@m|QbSp?{o!*C|jNh7bbx_6TBN3{|a647E+30q2f_9FAcV
z@b8*T)w#hLf&ZIBLaR4Js};8YX&zD75X^H~>*Okixi}Uo*;C_kvae*POIai1FZhcr
zO&J?TlNh4lPCkm<DaHls*=Y9(qBz6dVm#i3$2;(NCm!#{<2~}2l<X-yGF+PSmki58
zzX~M}eQ6gWpkLoYx<JpqjdX>ca1ZGQz55B$8~VLuG6j0(2IOw1k<*gQbaI{R$OFz`
zNcCZ7xwDq6t#Dt30<y{7?mka;xSs{9lLOdlt_|16oN!Dnzjp^nxp$u&v2|6u;cwhc
zl)oR~?*U`xVK8bQ;U6hS-2U7A5Bm$<9&S$@7mdOcAN|qW$veY;h3L7oEMws~fn|{@
zP#yzFYVZ{JJuiG^RB7EW#**+eOrH%b^-xsULqGnze0nk)>v+i-f8ISmP_}41z$-xc
zMe&M6;gxw+qVZIoMk07ao=JQ>i)Ry?H-i|7Lj>B22#7q}lL`=Zb|Mua=IlbEA;Ni@
zTqT|n`$-k?ym*;ZgJ|v`sV(C<5)aYbagqoT&a<RGj{E}fnS*!H|DPVXum<hApoWb2
zQ4RX>-=zmD;hfl<GUtTq@1NyI+4|gtagB^>WK6RFq8S;>EQL5m#;r1Hl`-oh5Ut8s
zbu-&iCPoNF2<KzJP~=w<C!B)_K}H8MHYkY!ZHWG4<R{}kh!<q+=e+J5c8)l2JI9=N
zo#W04=L6?M=OgD+=X2)^=U>iO&cB_noo}5p&N--pYCsF<0Z$+zU<JH^$bdh<0wUl9
z0)YyFs6cd}N}y^WCQv;P8>ktG3)Bw82kHcp11W)efwVyVKzcYn2}PSPL#+8)@b%!~
z;9J2X!MB4)gYN{71>X%G$9W0a_D17-2Xp^dUYC7&h29d8?@CO^-;4S4`geh|mU7;+
zK4=r;co>sGWL_s6hba&@&Iw13f1afp>+afadpGZAtfaWhmfY86+MnvrpZ8<vouQH#
zb@!iSqe3c&W2uEOq7h)_GU#Pi@In&BSMfEZvM49Ap?_&D@*&3R2l4d~h@Xa#@qu#{
z=8y@l;u_TFny#1n-EwXub)Z!Iw1Ugs01di9w=%8lUgcJy)m-?{7`K+2K&!iT+$0+3
zrnspz!L9G6(>iX3+mI%?nQjxB;%2)|X+5{O+k)12Tf5iM22n<oMcYLAqPX0>zch}T
z{wI5m%iI$pb5C@cdlDgYPrNesq@2t>@ypzkfXqE{W$sB(=AJ~$+>@#@_vC7sds1EI
zp45=JC$(hmNo|>Xk|1+WGG*@JTV=iJ5pFB8!nMa?HsdV7DzZwf8mrEdSsH7=GFW4l
z#agpAtQ~95I<Wq1Kv4dEk`H3|p==l%&aP)Sl#Zie6fNg?c?v`p1R{$QB*uLbqT&`9
zLA1y3%_>u0_x#H5Rlvh?6iv9w1w=n7FqV$t6JRXek<a4=WB`t(hw-QQb7ZtwCf1ON
zV8u7&4krqt_#!#KM*iVUbZ#d9bZ&Q+k(VpnU*R<Qx9f9#^g6e^Tb|~-%w@E@Tfuc{
z4>#J4roG&%ZdKabO>`4!A2-=erhVOdZW`_9HgFrz|6}h<;G-zA|Eqg?CLt4>ndv*Q
zEJl8S5fKp)5s*t{U6ybKxsM3BfRJzm<PwqPaFI(u7r6upEFvOuDT=7bdW*{Ch2VW4
zr$RuE|Eq6ThDibvE`$Fy{mHj$s_S_5s_NCNs@K&$>^gQGsi$4vZXl)DjqS!#nti9;
zR7$ry*d3)_&Ku4fQXgllvsKD;K5{;m`o{U={8DyA`>TIJoS@J|b!noOC?z_tCi<##
zx`?VeoEoBq=-^bu`N8+5Vh+;q0`rqXw_+YWNPi%LdiM>hSHhYepCdyOpnvNkWZSUL
z_$py}tVs6@4RF_uNtWHB*VP;8f7e@LWi1nHu>*}VSS^h|y*6sJHSRXr(d>(;F@}k>
z>tS9}Eu4C6#A@SG8s{IQah$KZ1?ia=YthZAWjqm1!+q;CguTUfNHG|ih}Eq}pe;P3
z=jkU67O~DlIsl)+g<JU+R)KWpuW^2vq$O*;k&2Q}HP1tmG4GaH9m$=yZ7gO!66=1(
z)zeksmD1Der1>kP?&>FB`*hbkzZ7enH|RCOYnpY%DrTmBALmh64|-N#iPcJQEMkq4
zbRM&p+1u=6W}1D?EHm5eXZAM-n8VGH<|uQtImR4ojx)!b51JFrN#+#uVRM=}-JD@Q
zV$L)lI}5i8@d!IPyoI_}m9O#VG_$!{yH?}h*NLJO8dA@1Ommk2<}OzwwRogf9sRi>
zNt;cuDOC7MHCD%p&RaMAsl8r-+H29-^`G^0CDxOBVsrio{$FU(si9t>?9f2IPDe6r
zBGnhkHR9qUp+}g9?+;LzS)sYi7kWIjfW>erMs>F|w3L+&Eeow=0lxP`8Y7nx4)Jgb
ztIK)F>Jk5DvId-gtReJ?J4j0Au~g#Yah9f^)K9WrBr{8~-o(YLSPn_8((GQ6Tn-yT
zT&zhW{}Hnm8_P?_-r%KUZ$TG%hnJ7NM<x7<y)Q<R0Bl2+z}+NYHW%96csw*;vo(k0
zQdyEr@!B<7Ev>fpj`ps$S^GfyP}_oiiI2se#BsfxUS5yaD`CeWMITOOb9WWEw0GOW
z$usXF82yc5sFSyx?Tqi}LRuG+nVeGo&e@zRkY<^AN$W}=O`wWVg#|g)ECjlB(u6+3
z{=LNJN3^BaufQ@WMaM0)pT>gw@nOw|e_KU{Udo_<a$m2pje0QkUgy&y;omG0o^x!w
zv7I>fk?{#>C!ZO+skXm14zp6cAF?tm|BEB}X}rbrz%JuzeXY({^kvHNFk{rNce1NR
z_!<}is~`rqy^i4$G}J!SA=HJ>G-&?Y(oTW~ccaZM46BKKKIk1J)Ba6z>jd%3)e5#5
zKT@BHHEr{Hv$lDgS;tH?+nb%uE<!&TDRh8Y<}>Dt<_G3Z^N=;yT4XJ^)>s>?*RA)h
z9fGbGh^~MXjhS`XV0Mu2tdM5NcWgofNN(hi9_b6M4ZTe=|A0oah4jVhteVzG8^vzd
zCXv3MM7qur)}3^nS6Dh}J72PF?Q898mZN>E{lo@o`?P&*1h)ua_h~0|iQP{+P+K;J
z`ciMUjC7wIwu1DZF>D=H|6kQN=o{Ha(lXn#H=w`1V+=F~v-j-v_RH);=QZcQjQ7O~
zXK$n7c6N?dh8DK{483`MxNhJ1pXJIQy>%>rmcF!*eFKefG@8LSfHZ7(%rE^LmH<0`
zvvs`tKg$)581tHnmBUh$@*0w%$=V=hXydhM>^hQIkF#4SJ%`ojF<DEByOFgft!4{r
zOM1-?eA7#&*&xYwK1UCKH?&5W!|!2F&0THas|q1w0ZG<4>oMykmg#&#^7Y|!rm?wL
zX-F7XSj2c<0VVV3WptYH7|$8&S!Lr*<2_cjSfeU*fiMm4Q=Djbj~g`^Lp7Phs-q6;
zqu!btX;g2`EX}IO{(*YyewN%%Q`pqyy?&KmRfLH*HX3iR%H}C6#H!k#+Mm*F?1X)S
zHF7M+VvU{lPJ4ETlj&sQ+ZV;r4LJS7gl_Nw#R-ZvMk18yqzS}Peg8%KD>F$WxSBcI
z&00+sr`6Hwva;CuDu<n~tF<;XV~od)@fxEQmA8Vi&{)W-7>kTW?0V~<b%^MFo=RN}
zBYUljD3?3e<Td~sBj_%fb;VNQ-R*0LTU?8|1{(C8;6XZeuCuKJRQe&<xgL(vPr9hm
zyK^{hW3cIevi$kIqak`nH1#)f>3^eMr=xep+dJ)@tfqa+KE-Zv=#SNMIyxQMtxlGc
z#cCI`Uo?r(nLoUse2BtAwoe5t+KktYH;gUDR*PAZ<*~e0DJ#ah%2KV;R=^5cAxpOm
z%OVE+#VTiAZN*#HSQV`QvnpCGtd>@5E6Hkab+9^HU97HFH><mqZ1u2uTB%mL)yK-T
zvaNnre`|m>(8@X8U!=(q<tdr=avkX}d>na}#>E6}tM(nMt>w}9*Btv5?ewAgD3(In
z@Z&5~e_CI`M(TMqzKq5!GuIeyj9^QQ6~<b&)YxFW%%0^uWUGuV=1I1O^HKVOIO&nT
zB5r!6uQ^AhZ-}QM={wF%X)p29lJ*l%9q9n)t8|b!TT%L%^He%UTx~5KC(b5GCpdSd
zlf>U-nQ_j_KH_bv98LU9mrHRT%Q3{|966Ts?p<=oI%*x0+mLRxQEp4Knz!Xn&U?;g
zxeK4=%iZ`qSWc#~=!o3og4$9<ua~C&S&M(zTI6T#RA#5G^|usQMWxxH{U3V?*H$oA
zvhWB!EgYU(I;MtFsm^<adXYw&9m=LT<-pKD=ApT}jn&*Z=EZ33(<*6|Sd@0Hb}ft6
zs%h0&DXj0tV0||ZqxE%|bytCQRL5vzv|-JRc1An)595Ag0c(y?JR75UKkPE~Kf}6j
z^9UVcix?F$F)CP;R~fAgyNYy(@=T>sp*6|cBqND9_Lwz`85kQZD(#Cb?mX6?-#X*^
zGe6C;dIV>$5_=%rCLb30q=Tg!y{*~SoI-r>Ml<g1#t!2ntN?yXv+q5|USl8D01sjX
z@Q9IT95s$%^)H%c=2w}e%>dT_G_3yFrensLWw7#hEzR1in$^r3vG!Mkul&(WeYQEr
zoNF#Imzqz}tbK*K(p+V(HrJSI&2{DrG>czvzGQAN-!k7Z-=!J-hvrsuo4MWGVSZ$O
zYJNsD{Ljr@=5BM3x!2rh9x{J651U8KJoBh|%sfFo$CVH@*fEk2m5a@T?h&@eGeYyI
z&rZdf>QVg!jonXB?dMY6FE;*j(dFlB7<J8h=Iv%fvzeJ_wlv$CcVkWCVoQFpt)?7i
z6Q^6RM6EXize`b%;(H^N`0fbtV<Gi|g7MwnSzg568eS<{rLVTTo?&juL$^ZMZIn}t
zD@P$I6Cfk&Kt^^kwwbk9GRdTu*lS!Gv2VBpVtcTjx)<xI`!O%#GfrmZS$W|(2|uAL
zz(yCCwe{h%Hq6(`W4?AR=4-VPuMTEybunwJk6BxT(=idpK%8=ja|6|LEp{W~v_hOD
z#A)k%K{WCCUbH(`!@h6`dR7@|SXID<s+hx7<9oG~3fH!(hwUqxvwZu_?Sg{01qBJ9
z;3iPe7!))i3jWJdK|vo-kO>O<UKH&f%x@Xyw<fsbzU9TK;$PvL2<mo-nwyWBdz3hv
zXGBvTd?)b+syU0@h??t9HTN=`Mm6^#dxUCkJA0IBZa4e)MbRi@-GO1wZ-_c?4vm<B
zF3dr(9ub3?sDqhk18SAevqY>T+->$UA7h=UU!7zRIX^gi*)r!B=Lp`0yHL9R$ZfA+
z?S6C#`sIa}AnF`3d2O{qZQU)TS4Hd<x$@^@zK22jU;9u;7HQGM-vQz8^YFJmCTWvJ
z%*qilKPeE?!(-a~jOk9{w^8!<$K7{MurHo(DTOyj_)fU{#)!Kg?!GDF?uiRaD$)z@
z!%Fwl)EZZvW4*g>p%w4U0&CtoX&g93I#(s@HY?G(C%pE(+xnjCaCTQwM!pkJR+RBm
z@WimWje->7UoDgM$!20$is!!-`Wb)DzaGVWp}0_u(9NMPp{^nK>#K1Qv%;M&k8SsD
z%r15kh44{sH7VDItSZje&L4?CN1i&+0A7z+)oh%|s7>OiCj;+e{0ngfQ_25A-1()G
ze=@VI|74Vht!YKPE6n#c_})q!t3o;xLpmlfjpe_~A!!u~r6uX>c#8UW`cbO2GE_Sc
zf>Qn++J;1D0wj^bDiH1Euy%Et)(cIYr;)+(SJ`$ECKT76rnr_n&WSjGk(~3tKvxd^
z%M(h|wi2!U)YN$5nTP777M0mUTx`bL7#-YqDfBgA*T%5xxj2Vh>HKNfwK42^&gh6;
z$2H=<QQY|nQSSRhyv4~P_W=E>K=+E2f6chKaJq5fbmPM5b{6S&7U^~t>GD>b|NhJj
zaCLVHT82&!Ezzgxv$@PXgY4$(Gq6iy*F%Ee01190BzSd5@S6&hXAa8qMTwOsI`mj*
zerS1UjXp)6N#nyS7g?^gqFfJ_Xt}t4jWU4x5U9Tf)K>uY6+wMv(0wiMNm>srRqLzu
z(;m_uE>J)7OSpbwLi;sYTdl3vc4#}bFSPHp<GNJL^}zfxyn-@(Sz={~3(W~VtIyEq
zy1RT4HZJbIP7(VS=q8t@e@#W%zbZi+?b)Ff7g?5#1^U$2CAV^Zfn^{rI2)W-&mbR4
zt}N##A7m{>%RWQ9Dk=JTyZS!#Ycb^jr?*~MANvN{Rf1lx7_m#v3cVoB--6~Udi_5T
z&EJ9M>-7d#FwF(6wZBKZS_0jsc)Q6wZWF})0lUcyLJO%UETZ|K2lGK4^TEGhK3ElV
z$ZD8F-h?@1jf;|tJpcM(J^RP=?9+TD>K<;9O>@jaq_-AMZ_fp!_n<bB(wnSJW8Mh<
zxaZ0I#0tMhe*Qe(3m#7lO(q^s4b3MW^R*luYdL?xT2580-&Di;%}rRpsc~NUR7O7g
z__`9!nm?y}Xw-cLS6t1~Zh{knyE_DTharM%aF^iD;4;7<!9BPKhv4q+?iOHhcXzn+
zo^$WH=O=vMTD5w&&CFi2yLWY0S3M6z?kekBD)aGVSlTb0!<Wgjl^P=8Wj}nL!@E|!
zViCnw?=PT0@eB>3y4e0NVOu@r=($=xWHS%KS%lmZNy$BK@|s%h)|;8U&Y9PwU&j)6
zgnB%A+9+pODI&8t(wr1iI#Ve35`vy~JK2(B%lRvk?K(t1O4t2eFKl9f-$dgHs>U#~
z6u%Vmf6n{?uMuIIUheAI@TsC#LP~nCOuk;_WRD<xW{Y{ANC?e36jryS0_#h5@TcQ1
z(;D?c)#VCg(gS-ka$FZb9lte+p%m)CtlElMhB@9@AUnE!scHmWqj#^u`?t(cHG)ce
z8;_>&uV%8s`ZkQg7-(C^-o*uzzhx79IGKo3u~NS_Icn!mmQS)yd!YrP8Hv)SFldvP
zp<h{T)m?Dg$xYM6va)NWjpWq9|Am>>%ACtI<@hUTOL_$*D$8Y77b?y$(Ks-@=9HVW
zpR_m3zj5^h;Z4TfnBZ+5>B!9lAAYl}ZCC7wCVZTs5s+^$7$r$JSDq&@`$#QcUb33-
zg4@c34!LNvCbacC)VJ~pTzDamErGxL2By6Zatwt4#P(>8D|x2=#y~pnEM&j!q2OqN
zMaOmc*|?Yj<2I<q1F183M4g2&Q#*J(cpMm$_?_8B={I{}Hai6wAEb`~-=%wmFcgnQ
zZp>HowDnmT=YWi{LfT2WQ_aE&z2O`}zEgq(<26l#S2S5kx>A{&BxKP98%=?GbNoCB
zS&7Z@WoE>SX*MWN$tO7}J7m+fmy6QUu||2mCNie^?#0!rYJVu_5)Y+O^XZhiiW6ql
z4}ljXm5hF{X-mA*^$k^uOZePdn?%*&An8Ko{Wk)&h-iji%;K_t^5SGC#mgO);TgXC
zkx(uUQ_ZMsRt>LA6yq|^spt4%e8Ae>l85(`C9nRcZN9?Kj69QW6NX53`C*#Tcmxcz
zm>>+aSP87C_<oG2SUL=an1b#PGQTXmV$EVEa;HhU1*WmD)815;WAT>HzLz|g$UinX
z1iXA`psatBO*ZL}e_X=8ZE<fVSLEyQes_Ae0YJJd3Aqt8@_zUB?R*XCjc@&p@);cT
zW_=FEe$`ojLwV-wdSkh_4}AM^Zy)f4w6eT09sojIk=%GiIyDA@Ki*XU!7z6YjiP~1
za4SL^0Qft_m6Q7o2#Oo?O3QlU`YVhb`ieo<N#K)pqc;!?>xQ$k)<ZhBs_?Or%JCWR
z9u|lW<oh}taznc!BX&RGyXGMFwrOCj7ok!!pBtUQ$k9}?_>1MoDCs!O6X5BG*|%}M
ziJc^op-i!ff{TmA;$z(r#xE7?9fUp_VwQ68K{|LWyZNz;0@Ey^xZzw$K`Li|=L2j)
zn}wNdCo0LS$m`7iIvqFN3WM5T@?PR!YF{GSruB`ty!g@w6YTZK0c}Y3CL^~p!4rWD
zazDbILXSc_lKKP+w^a^l3r_|XB)=<h+OiNO&U{Rq$^RkXjXnGeZscIR5=ua~<18q{
z!JUIsc+$!DoITQIxkr!Eh{wE_YCp4Yc~+|^pwP%NhLf+cm|)~UDs9|;;$o9L{Ob?(
zR;hZ+ihcuWsa|uJegnCUzN6vQ<)>p8^Dcciv||^1qUF&z8_b5}1l}GaUbt{AQoI_6
z%48Ol@Fhp+1wDM}9!6KdcC7SuDCuiiV1>H|j_yTu4sRD0%Hq>8>@DRJ{!@te?CTuh
zN0u{<q-(1}JT~;~@D;e0OrQ{~{JMG^v{$n`yM<oEyr{d26KAA<i-+SXCbl#(y%_V=
zxn*zt+EKBaQp<SSLMcch)bX!D-DSBcT?2iAuJozSK-pEp2Nu>q?gCjCs!z|hPk#}|
zy&sXrL|Ge7F3QYoYucAOZA|KU<3?Sf-iv7|HW1@mc2FvVS#yfRQdwO1fWd;l2f71)
z`69{bIWgYo+uI^De#?NY0rL0*QU_`WOZuDs{vJO=Y8LjGVh99Z&^ONZa-uG_mQ35g
zwxwQ&t-_#UVUqaw+@%vw=1_wb>$JZtu3!({n`-2b{*nF?jn5;efhx`j>(}WQ;)-KU
zD=ce&j8?7Y8eYHTb_*XlShv@8dUk7D>}ZFV_RWJ!q4uVE<s$~`l$+YR70-U{A0pOe
zwdz_WWjyoRM*>G4))_bcH#v0>PvqO}{NtBfjwk*|ywMB(uq`K<AGAQYHMWEn@!6M}
zz#~8oYq&u$cz#X5Dv*EmZq!^->CIunCyf8$ptKN>5w3{u#W*W4Vve8t)7;W!cK81A
zU>8^tmm)rW|6`iN?59}_0v{VUx=^5y^xqxJ0j=+Bxf-T)2m6-Hezhf-#}dC5;+Do}
zY6`1Ub?s_&q#Vgj8xHBOu_JU~*2e9q50+!*=#f_<cqkas2Z?^s*bNamSdJ3K3ENGi
z#>kzHp7s*w$xGh}4hv>9M2P4xF!kVNyNRuZjf;i{UuU|yM~7xLr~^qhuVPfEV5s`@
zYN8p;^M7|9#3`#HYg<QsY|DE?0hz;FhOu&_UQZ@Ze#>6?YHxi~r|=iUwvku;sR3&D
z5?{_GosHTDc&E2_dUSb|A&uqBOnz|i+IM-O^se&J6zyIZ%dq9HVUaVCL)QKliSp8b
zB=Y*p+D%*1Hu);2CbTw<ZwcR#t0`ec;gpJg#L}@q_%j(@^sj*->>bNXIgj>MO?}pi
zgoP2}9ljm(ZPH7H2c`!hkBa9SuTg4Hj>sR$yIzlB5F_Z1r<LcS2NCG>vi7|8%K3r@
zG%c)^NixAc@o9p8LTutA)TLKgvD`exJb%w)0%3w~VmXr~Gg?GQ#K6PnoaB1jBZ{dS
zs|*fDFH~ii2{(aJ#w9;dS<$kHTP>BzHXcoek5+t0)iEA(n7}lLQ_Vv)C096`St*gJ
zBmqAjb(n6)b_dopxLV~wW-0f%l;n;PqG{i0?K$GP)t1nv*2dFX*Lu?$+2-b<<G$=E
z<Pq0K2$4H`cgBA9=_~+J3`v1_K>8s05M0P!8*ys|h!5oE?&jHX`MSP(CUPvYYYgcD
zWU<ZTUoN#fwtr}cGjK7mHSmT;N^u!583-BB8*u(eWt-va<m=^|=IiI{;zMm6ba+@#
z+etgqIo3JU+0Z%CIa}Tb%`_}E^fZjzW!QJHO}KH&goZ^a=Ux{z7F{ag=Kc|z3;BaR
z$Nxu5HLXZNNhF6e=TRJ$@^qYPd<XL+JXb;@(zvi=p=-^I^IR_q4hqVERFXa7Nn)MH
zH@#e~aL+24n3=y<`Q@H<0BMmovd>L`&NzSH!MOP1qs|Z1YAA!yy~F_CoiL79@s{x(
z>7L$g=oO$nv1V?mA21*|ZAT|Gc4FDdO)(alu?vhuD1hB#M@Ror(Om)Q^yuvBeCQm&
z{F5YQUmmgrQ8`&U_x`|-bx)J|QSx5Q&+@Z^IF)X$--};*nAjI_sv;>k+|b`tn5s1X
z|0+8w;;7PmV8r@=P5xoLu8cb?2<4XBiXDM(pVx)g4cDF5b$=3te3uT%fWwc@pfRGS
zbjA8l@+)LDahO%Wc0&dpEw6ApywGjyU=^4T^DxtLq3ZZIR#8ZZm>-TGJsDy9VtJXc
z(*vhjL^sZNsq;%`Q|CozRlFc&pyL^AuXlap1m@kBczwjMsrL*npHE3+K#1Fr_f2kM
zr=+nU$ws>OHGToUPJUZ{!go<r|1ECQz;u%*A4A?4rxt9BeUmp7e!p%Px&;v=H|Ux$
z0GM$i-U)tBkKs!B>dEh4qqokbeP7yLp})D{yz=z-4aY6hRipQm(a0@u!eXQ5Lx*Rm
z!Hk2Ou^Vnx%aXNkk6*5@<!1<Wa~BUOKMX$>KO#RmKOsN-JxRWtC1s)Appt7db@1t6
zwvgj~6v;nXVAF=gJ4qOP82tD2u!ZkD&{oC&5fP<@e`F&SZWI9xW*j~W@v`}p;jp=|
z=qNL%92C}k8rqzgfs>cvU#qhIPp4+eU6=t_kG~95CpfXLVNyck|FlVC^&RZjJ)<q*
znFEI?ys!i9sk~bHwCqwG_Uyg-x0ZjW*sv2Lhi7RWBiF~5nXpxAR3^PJJO!PYdth0H
zDu1rdcT^TH{-dh$hm9v8Rn|72RXHpke&pTj7+sK4!3)26GxN^h?i9(Ux=PTLUbavj
z>jszN{dE{{M|1?|&e?&S`c$RQJHAJDc6tM=hBp6&zt29jRxit=yHMjN)0<X7V`2Cc
zfkPJKY3@F&P+5!$laSg<VR(y9l=_BaEzC{z3{i)6_<5Q5{XCV|5%7K<>8+6Lx{%EI
z;F`j%R3VUC?jNz{W+xro5&tv!SvlJ;?<-@Tk*Z=K!mkggG-?(U#ROX_&;lcOj4HGc
zQ(g@11ufIDqYf4W_5MBDxxa`L6-mM3TK=X&Rn7AY<Ngwu21?BUyA}VZ5}9#2dnm7`
zFW;bf(gdn_3aA^Lw-eD)vZ9=40_o!X772kDi-c6J2u9`<|4Bj?+kPKh`!nGV@?_|L
zML&!zY=aK{%fhxmve{s-M?>y?Sou8k%R^YZ+b_>@5fmu|UpW8!kz>-RKr4;lhH$8*
z3ZQL)bkj*j*WxnXu^@wO2!7L@_^H;Q2uhQA7Y}kWDhXUV3JLmllX>V$jo7Ic)g5yz
zC~+{OkON7(mtxt)$<90=$Y!5!X)@q3)|$N=Rid#AX#qVKB>M9RQKU$eJLUCj+yQ#l
zRJS><&ka^b!Pco2=Sv_R*SjjjkVV-4o(QXpuwuu4lgbERWeJg3Oeq@qF+_|gbZ7ji
zeX0GNe6M`t{8W5(WeGpk#`}Gh9r}VMFi43guuTz6vK<4PL~I8KqybU_F@c=G4^YAs
zYR5rLfsbGG(4pdIjm1vPkHnA9Pd0eu8B%manNuDd(o9Bm=ovB@5JYv7Ed~1Y&nw|G
zU$5@EJB1>sNb0|2GC(=7KaP<*Q`JJ)vYSu-zM#wP_hf*h51+^<jr}i8KmK#!D@EM-
z@bA)B^kH1j@8!^LgbM+9$RZZd^F3{v>)+x({(tuCzia+=p@3*>Q_`3J=kx#m()7gn
z`#J5O_AK2EcpEywJq;4~{;tO5`D(|wmVD}yUn9Wqx&B<Egr^a}Qzr?*JE7ck#Pq3g
z(F_h~q;NVH#AEUyiL1+FFlArPkxob@y?DH5oZGyatH-0)WA>qeYsO<VWvA37)5(nb
zrs1S5-c!7gszpL`mgXmmRlHQ1+2RRcZ@W)xJzh+86m8iSzE^uq4L<YS<&`;aAD}j2
zMSmi?ynq?X1(+X>s^8KQdeUw|JF;KMO*Z~A_7zAQJ=3dLk)wVdaz$`huh;vS>p3*T
zrdvLp)TG-xMU~I!9jd~nThM7*QL-`qA})j5xP5@ns&USl#1!PYZE+ZgO$9QHbwpqT
z`2>!THjnN^VPRR4NT+FyA5+ny>Gh|7NK%8If=AM(9LcO)(AbjuI|tgZC|jMl4PMER
zV_&b4U`JpPVn>Vs=#pvK>5`K?<SJ!M<SJR8k_`<ojs0I*qLCGlqmjqY`00A}IE=rp
zoW+~>hB_$|LLM#a1v5_pPh3xVGc(c-L6dUHBUXWR*#Z_${cDIbDIkQcrTw^`>s8dp
zN56KCb-MPy^a_?+dt*|9qS)U#eQ=uMO%p8JaoH>wpNO+p8<ww%-%y-7idd>Fe9+k6
z#(%es`%L)^`Do>>#LSt<J8WjizBRSikIx7VDrC{|#qVTg4XA|EGcxUEz0xN<jZG@`
z*5PcrAkIg-FQ)Bu^nA)j)&EHDV3ftb$BNR3@NCI;8ELK-+V8HOW`SEcDFen8$P#Mr
zPpp};K`0sDodJv9QV@3`)C}3E_g3`r@0HEdGDd@f)>zLk&<wMXKCH$)lf4^9%xL8q
zUdf4k<21lgMK>GM#AmdJ`hgdu+H@bPoE>6bFokEftU$g0BV}V-hB=pnH*ZxR$vcB8
zC6@>s<qa*j$)q>_=o2Ye{+1?2_rl}Omz)gNp5?>MpML%NT`TUB%x}Du&muXLo~|%A
z=T_TxjQmbFmgBl6c0_gYbF*gmLe{y(FU;RiQlojdo83#A<4=nAw2Bnk-~CO)xZx@4
zoBgdm7q#=7)buxP6Dy?tQb)y0%(~f`yU`#IxYnEWv6t_ZA@7R;b><Kat}GOhRW!GQ
zqm#g5n;;;ftG_Lx<4jnJymYMueTsZi^5|`LfS@6iyYW_UUSv&db9&_EEAxaX+;(Bg
zqgT3&KqGrHlY|1Rv~}3ZTl9#^1la^z1pE_xaCP!}<9dLc8&>+^sH3_dlLKQBjxN$D
zYDX?~Ebrm}LU?Ny={V%_@f-~-*rXjg)_-nkc46fw^%1mwolBP9Jf1<34)v>f5H?fp
zGb)G)|9eQIT!h=Tg(9Ep`ku_dg3;x}#r@ZrVvU~zds$e81s`uVf7sv<2RCe)huv*y
zRMy#uEDu6@(+(f(i^K1x^EE^70y*=@3)a0U?=oUnQ;XFm?WRvB=Ph;Wgj-=n)eUm(
zIkgE`B5A05B6vhA?{!+q%#q{1F?4bp3bLatqA!v+E^GChj5#M_sRJ{qT9HqMe2;u}
zGU$=7_z#DK6QgFYtAxwjgMz2{9Jrx=q`9>0p`tvTjmr`6KAls4#3-BScBlzsK3_KS
z&Q0sJP6VU<M7wZ%g%VPM86V!8r(AKbqBps*XstXox_zh{)f#sz*?;{wB5IsikvY=8
ziqP;S%1oEqJ8`-QZ#n~44mrgYC4KEEVEdT$B*`Z>O1jXb;y4MmnsQ+1!qHSw#lE^B
zn6EEw_hgTBeN1Vj<iZNRE=OBS{(DK0+MLy){NdOk%VF7}t(D%5Yn|U;sWz39Qb_Kt
zs>&S1svtEV?Yq-#*CCQio}e~qNt6bC5%wIzVb7uS4d%_-q4A-OOZj7C^Jl#xR^_)`
zKrtYnRYRkQX>RUN`^Mu&+$G>KtXXL_uf4pzxV@~s#7<rGdqdIkEa~9@6j?92SyALS
znKJmtbG&0k{N~)Ofj51weW9{P{<yNDY2=xha~n|FlwtJ_*{7`&3~E&07jj9i2>7%U
zFJp1GvYYXBxM3)R%I8IX{P&`04YecBgIN=vh^?4UsH1FC*^2%t&0P%Fc4@LJN6*0n
zVMTH<ihjIISBd%*lbL*1xTDC`T+!s*PYWh@TD&%+TPOu8vw73=)(3snU4M-yF1^>n
z5Bk0N{u=nYh2XnS&iT^`4v9=ha!GF{T}-^+_Z>gzUBI&`0h09dKGzwjwJWv97O?W{
zq{{uWPq5FQ|1MeHBkXA0#G$g?vfYxbVMp0u2!L)5!^DT&M%-#FngUk*5`GDdWN1aK
zsGJTxJF+$5hbPqR*tn|6Jtg1DMG|6i`6omX5_2WM8x`~k_Ye0oM`(>P_LfF^gw92H
zP@9pL;5$*!Mc-Vb-$a{wKX1LnEn&RLy(#k!cZ_y~$=`KszlDt5f_L8{%5K1?Z|Nd?
zYbR@CnRnoWw_jyf;FGu1w)MC9Hx|&;TiY9`9`cs^CVBhojs8v1CIFlTCI>BnJHftf
zo1)vIUHUg!VK-H7#sO8l%Xq~2Af9DHkh~4dlLSlt<C1<|Es+VLs!n8&hmCGd1EXUd
zlcNiRW2|me3hou0F$b}czInb;)Z+!I$02P4<~$4?)+HoZr5`q6gB6ue6nAy+CeWoF
z$pe4z12gs|E8RKwiyfZkxYE6Yx58y2l`4$eueXedtVD9zUk!kRw6V|L_|t4$QfJ%7
zxYA>v13T;d{`jTA^1wF0S;5<(&Z5nt)}lG*E#j6p$DV5&s;!T8rgrN1*7-KTSi>H{
z=)ekLU1FcA?!S#$(oMb>8gG-9B$s<Uvv5dF@swaBf<JABi|2-cs3kKpB#KbT#}`O*
z<$EZX*Q#n$mL<%~66f>fk4^I)s2rdi2w7HK*Eq|WRVzj%e5+<jienl?Rt@JV26M-!
z4Ug^c&Z0CAF*w>cWeIDNQAQ_{$J38+ZEIDU>CjcgXC?6srfoO$+}el^KJD~eUclVi
z;EJdT&xzD^<JsDZWEl1(91yM(ZW104Zl$cJ9D2-h4P5;+4>fNxuiJy4V9Hz&IqNR4
zP1+-#R&A7DmKIksiuW~QG)-{NuU1wo&W4(KndIZmWSH_Zro|7kO+IPKL~+Uy=0~W|
zG0xz$huOQ!DwX_DMVb8tGX~3TjZ*ue)@%X(7mW1r<LBVd=IT6?Jd=@X=ro9))kJ=?
zpAkxM_euAA4&fdVs<qlazkLSJQ?RoG*{lf&hzN#HKYm1C8AwGqMUOB7qeq}cn7tuI
zAV(OF!D7R3X^wP`c4C*RQ1G2|%9>U;%&N_OpCEZd*TmFB)+BUiVSn#VTKVDJ6Z))B
zJFPm2{pS4m-dn%3N0^6$z?8zb;%XAR6IY^DvR0CvyBc~M!Ww=vq&75OC+(!`6!Mez
z1H(e#pM@$3D+MZXD|y(F7vC>pE+Q`yF5)htCVy;&#sDs2Cx4KGEr8|nZS(W?_4d>1
zv@ry)e>Ow|VgT9C_1C|z1J{w(y*r<vJI7o<V_##xEnjS3^!M~I^#9rr7Q&DtD8MQp
zj=vj+10bZsr=zCBrlX`IdXeyxH@>@vW5;hqY9zQPU&mUH>&)*g^d0e4giV6YdSCty
zfTD}63$Kf+3#*Ibg?29tBt3^;5AVF`O!6i6Wpkp@(qeGucc)3l7bX(Md**Q$cBgXZ
zbZ5M`J#SgR>mv6TMYw|le>g=wML9)(B1IzmNapyGE|g9;o}r+!XFsktzLsG&E_#oq
z?MFDazy8fgLPcTwP77#$ezjh{e!7m|#TH-y-+|_X?ZtPm4|F<zSx4+b576<~30U@D
z?(q@wCx;hxeMuKo&@0SzYEfCUT<3Ns5{LwIiN4;X${67Y-bFC1O=Ji(`D{F3AOB*M
zLhjIOk0E*f*ob{E0K^CKoujNLbyoNqz;?WENAW^$B)kWl!>$K+vUHYp+IF6Fl6FS>
zk~=vczB__BdT)<7kI4Iu7mgQ(m-W5R)G_`&HjoWS4ir6qcTRDRac;iOMiTJi`{D=d
z3+pEUwK#Njg8aVueuF-bEkATeXDr`^_a*Nt5Y^!!?@AF`F$X6q9XkRy%SAo>GXhrq
zR}TnLTwlS*8DK9Q^R_edq!<JumBrPErVjAfYwAlIu@eX1EtR+&yM!EdWQYI>Yh=7c
z9*z^nG>&l|CgsqQBPLhP3=RjCL>`Ax7y%|V6_o^9B)2>Rl~G;@rW1yWFjv+`XB|+*
zo~J=YNd@SE`s|FWriQD9>&)CWbBJqAawDS2<-=9HfPG`L^72wcMfo7&+%4BbjLZom
zqrXra*n{>4-y>rPq0WFN)aTC!a*c)3+a8sBEnpfaxi`J^^=Gvr)_~0B527f41bz`1
z;cdKypZwXf^d3ET@Mjk`vrs)tjkP8qZPa?H9Zgb#zybUO8u5SMMyl@C29OSG&&pXu
z$5^2#*%u8oj1H*u2+n9YR?y2Es8rA=csw?dOIly@tUP@72>R=q-cFxV@kTv-Xkn%&
z2A^wg#_lmHN0-H5XvR^K0-F2y!^(%fe=wQgS2jW71_77xk5a2BcBltXG6l8~9Nnl`
z3IVnT*U#dIuGwQlD?4@`uH;nw2oH3XaaH#4lsnFZ(Whj_-Ir0UU06AuD+-k!uNbXi
z;ocpmJ0ScDvmLL-U|S^9=IPch&`AK+{JG_(CLD7c>}o?Eas2JoT=JulK^oxKFr=(M
zHr@K3JxZC#&5mzF>%0jp5*JW?z0#3+C$6P~85``ygI$}-BZzK{iV#tyYpja6>qA0U
zBwHe2S3AXIFB(wZIxWrI8dtnQ@<1gZ(=HYj%NDmcq%nwMPc+~_{($Q!`k+>w^i1U8
z`z+`Y;}vyG-SOo%ZjA;#c8v;gaBrw*yJ3iW+imd6CH}VfWzsh7Wy^NO;K+8xki)jG
zI}bfd@7d7NAe=+|GnvqE`_GGcm)>rnC3=AUqV2tZ_6P+L&A0jUi0tJ-0<E1i?fA1p
z&gMwkevf`~Vnsql;^0V8u1t=0LlTZmt|%e{&M3k{Io`OQZO#Wde+C<E)4w){-*5M3
z{*v|G(=S#ur;C(C{mj{|aF1B&^$8|50r$51g3h@(5><YF>R+8t8Ga>FyB%X&R5C*F
za6KJJ5abUancIYCc{LKOp1GQfxK%fTpZaV=qn+T*iun}cv-!y(j9*fhiY`Q_c}Y-a
zZ(7{>${EE))_KIG#D&;dCq8k?E?<p1L-rZ|65juN)O2{5B3o<)hQ}}@gT{>E$rfr(
zW2z|8>7F<HB|5>7HNw!5tm4B^D4eL`BT(oCD14Stct{f1krmi6*okM`iw9?@kWDbW
z(G_~p7Cu`kJV2#EV8>cuXKg2*-f_5Ng24dVOj#)W;F&VEM1OqrBsK;)RPr&O1^gwB
zzjZ9RZ0S%D2m*!b?|dSo42s`!Pb5%@+Ez1C7D#+(rrNQ9oaXBlkW4MN)e<`s&#s~N
z{g(Fso=#4kE`ZkdyAPA)RX2RE_I@)>7bG2StnH;0zE^iYtRp0?KfB3R=Pn)IF}-QZ
z@~R!arTrX<S7C9X#-cyBX<z3qAKo#u`4bOZ(RZZ%9Dql^_FcoQ^6y<L0A?6ske}Y5
zh|wdX*Yr7pscxr0p<)(4AWFqb?t9Yr!%;82CS_|Y7p8d68ifX>VgcJ`h5S?JquT?t
zLj-3@7kcNOW~XM9W{1_Erv>^IS!KGD#co*vk3W4f^<O%~<%laV2({Sf*WWzjyZE9w
zl7+h08;XCp#CHi%qo7R>9Ar&X_kQfTJ+L=h%<gk#0hIKKXg_Z{b6ZxV0V?`LtuA<2
zAk(+&HY|9S7XX$_@0r-Ay8|g)tJo<c&G4(*do-3rs|#;!FR5_y`AtU_Ku#ZzwwG%7
zn6}MK&g~1s$&-qn_H#2{M_Jzw7ArHAQ~_u8aD(a1_bfgt;Q`vh<$YOJ4$TtTS=%SA
z-?p;`87_G)@gB^>emlo!rheH`;wttsp-vSaD>xNb$jM1B6{8DN<-)FFtJz!9z%dqn
zyE6DA)WHkhX+Y@UVv_?`3#E85$0t-Pxek93V8Gug5ROmUWFWtMf-A<Lr5I7<rk_wu
zWmI>1sl;D2sKmb*vNJz9<nbB<cAmTReCcrt0(|S(NGn*So1#gn-e$I)W#h?>p`<U2
z5qwP&yj@Vb1rfZ+QbcUWZR1_4n4mmZRwq1vY)bG7v!NE1wWAi5w4-;6IWa+88p>3e
zu$iH*qY!F%uTj0G{#N0aF7Q*?ib8odEB2d;;>7Q({S;?_H@cp$P3qlrp#5NxrI><z
zSb=4bnPn9344%nC?M&3l$FyxIhTS&C1FXruu>5O02_3k=>`?XWHFfmx)6sCk5N5Yx
zCIvX>Ip`<>Z@J|_aWe9{W0LqlaXM{(%o+OyZdFcH+CE!UykQdXR}pcaf;0zSP)>6H
z6KU?2v%kVLgP=VAjD4Z({@d3HmH9jBOPUAcOPq(em6PeSZ{riR*NFR8k6)UDUMbpe
zmPAFx*ha?Qg#k1_KCR8|rH5!0G!$<ouE#aU+h2d{j`kA6G>a#s-Q}v_sK7ikN?85O
zY)EcIPDN%&yoiubo1^hJ`|S7Hm!#>p1lHU&={3bSK2N|4tLOWdcWp5~d~G2<=z0no
zli>$<(+Ssw2kMVp*XoZ9&5^InZIQ1eZ5fa+4Kt+9^e+>GQq5sL$>oKjG8F~n*$WhW
z2Lt<cO%Kv3Nm~9pi)x41s^Feaw=)_!Z!+flg_d=agGXCG6gw_O_w}y#4pzlZHR(K8
zQ8%OABwW>M$cwc)c2&-D@V=veM=5qw2`{?)zM~3Xm+Z-=_K^5cPFBeKJ?l47F*uu7
zIV+D>DXp095P9dLzIa=f_E&G;KLuoBtode#(pD%p41WS2YZHmBiyady@&RHjJx#CF
zs-!oH0$TlK1&6UBM>WvkY$yJ=1{G3Oa|N<8z1h9kaAv->WI2&<E-DkspdvP9P%)d5
z$ZS%v_pC-tU}@4Lk;}WL!OW2%iCY${byUKkc3IN=c1hCQc12Vr(ce)jqInA6MROFW
z6qgi>W@Z&*%Z}v~+N+&r!|eyPT>T#5U1A?;T|ysmT~Z!-cobfOn!mP%$r&sZttnv-
z-rWSJM;L%}3Sw@oV_sRk<6p_VBVGX_VsD=xY@aB-{a-P?f4y>ehrJ?uYd@3`7l0+Q
zvfm;BvK^nJCq)Y<rr4%)uVt?ZUO2roUuZ$0FStVEuR(3y`ep{E;4ytu@QA)K7#djF
zVO~)KHl$wy)4xs(D3eiGz46)Hj~Kr#MBCUU)^>PATY)y!Oxadmcfn7eCfz!&-q6<`
zZeKVN?ucfqns1zlKMLR9@~yedNNkVmeWmQ*_j%F(k~+x+CsChy%5eGkQqC7`TE;ry
z$8aLTm=r+%{s{8?K#(-tggRWp8hGf^C1=C)JiiR;aUb@a!41&bux1>hnk@hI$lkd6
z`_}f9ic!C#@J~3yNx5>q+HU~4PFXF=VSN1pQNHP9k@a-lC))tmRRz7IX~F%eo5RQW
z+pgbsQf|tYlo9*=&iDzu-8`##b~2W<IQ!w(bom+UlUJT!EE(eWN3Kz>cODtNBYl=K
zjtPlx#vavQc)bgKlJuv~rp{)_C-08XkD?Ewj}%|pPF)Bu=gj+2?|k9cnSs2TNbRW1
zFlVrP{s@zBzbH^SDNr1L<JS7QPQDlX!ngn4gZ-lflqCap%MeS>&+`1l5cwXh5{DUf
z4Y{3I7f#(byi4ZXdmZZ>){y6(LKD^pL-zv!Zr-09CdrQ+;a`7ICm2R!9r=ZLoxCe;
zJ*$)99Pi#df#m(+XAyqbQCM@v)}w13fegPHLjM1iNfY$;1zEZ+F%`mr+COKg((yKG
zkqX86|7TaZW%$Sz)&K=j{&yz-x_wiAmL5w&g%O~3&<tmK;zsSq!vE1#59F%{9Rr{2
zhI!pEtk5wNJl5sd$(i4o`_*)Tx*Gh%*GYh^7I5+u$jblBLBd*J^+`0r&-euI0t}IG
zI@t-}jSWeltL=a0AV0bnq9#H+b~-wAC;LtpsU49Sk*Tw99rVv^G{n940V3bOuO#xq
zD19%A#0noPn%vXAbNaq2Sm5{v8Yr0w?q9i60LD{FkI(MM-^~qYf-ma-t48oYlkM$%
zVFpZJNXyUCWr?gH3)J?X!AehDuZ8=cU3D=20z|v(xl0jqads`pJdpI#3>7qDiKV;6
zcnX0P6Xg^o1NX%JiR+DLJyYoTp-;c>o@0<iHO}ZH>w?0bd8M3hH+wYyCzqTFJT@#i
zept_VW1OU*o~SG<(hS@DZMY@6=&g-M*!n)l5%-0*hi{IIuD~1#`xW*_ADDvbe(l@G
zH;~jO7@c7!?yS!{yUl7|F)%uSW!?C9o_B@4p%v_>fJj5W`;Up9x;h%_AVu|Md`06^
zjV`luCU?`C`sbd%j)W{euoqiatg5~ARkM6uW62HTV-2CU!ezD(mJwLxtQ>81bffn3
z`t}P(!FXBfP6?aXhMs~Y^i=J{l0U2j)69ReW19BDTw|8gs$<-U!E%ao=PoQd+f6JF
zXr8cLO!V`>{jg#8`O4GV_;u|34@MI>@{p%e@MbWBU!>vv^QXlRuKqeWfG{56KV=(A
ztyfC6sL@u|?l}J?s#*c5JZ8L@G)7_^N`Jhf9dp8pC=)T6E-aTLmJ<}0?M5-U5{e6F
zZMr{XA<Ufs@@?-J%#ylE-Mta@*ZdaTEGo{v>%W0+c3(RTChCd*CV0+U?yG~GQ=mTa
zGpN;{i_NVRAxKZ8>ZIoP=EoE9p0_YhFo#-*x@Vt7j{aLZAHHS$eK%}Ky@(13$R}Hv
zPnd&nk;aZ`hZ?}Abych<jQzbtw;nOAU5w_}n-Hw^ocH^eWY2ObEe93ZYCZ7qIU9x^
zl=1xVsk!xR!4s<el#^MU^=?L6<Y*H5i-%eRY1O;!7laaZ8fK?e-X(=E9IvfWGXk@@
z;pyMmi1pQ@CYXZO7_x5fByNPu_|gaT`74M@fn4_l_uQZSq60XKNc3DhZ2ypr`WwKa
z`?IV!R5DjP5z}!4KH4FW!)77So;!R;m}8N*&`Iq~q^rzFwy}iyzuC|Oxi$NnEcIL)
zul_~b731d|B>{4xnxZN#7wZoRJj7Xj>E;}JT0GJGnbh(aw8L7bkuJBl4&NuRz5Czq
z2s<pg$2Ur*c%mJ-D~t)2CpsXwqgjI$Tr@U}f0vql?yR0LUfQcO%^LVurt0|0VuFo^
z1PTkAqj<`j6So++RRM6zC3{;jcj!-`)tO@+9xfRO(HRCkCI~zwD5ga_fRMLPw@|xH
zS}naIDI&qV2T1Cqprpzo<Fh}Cn*?t~W)^&}nE7m<vJ_I(a|Cbrp@aW7l3CU4mgXTI
z#2bb7X0@T#ZLPb-f&SYM>QDY!%r}kok)EX``XEISeU(DzVa#<WAM<&pDlLHzhv^4I
z7oNNa3wHxrwE7gRKgMy5zAiDjd9rMcS}TEaQ;Z58ek!GKmh7nnX1y~7iWJ$bnMhb7
zCc|gJi00mQq>X1qHtL7x;L)=Dv5quCQ7U5&IQrs(q7?7yt98!sef6vA^8XiS!I>wW
zTh2w3zcyB!JZYKS3?1nOihp()Mtu+M2e6Z`;C6+xM~A$LB#Vs;VDH;T4-O0u>C<p-
zi#vL^%~~HHh1#RI4A(?GpLXpG;5Y3I0$aRsPjA&4mo+xZXWX6`LwetIym6m<byu<)
zSIZ3?=uyUwCTiSD%BZ%!8rM0hl}34ak!S8D=K@y!O0E!R>jS&Z&WYFYJ70#M$P57m
z@^b;vzNqVX=K|-s>t>a>XQ1SVc)`A@zg!E4b=nNo32F>w5rSWBy+=7+(lU9xr)n3j
zX;q>RMhd)-I~X){L9_FJWOPeTlqAQxX8G7}LU?busU*g}cqunAs&L65BpfyHt$`c8
zC(N4FD6vJvDjxFyL$SR66r?6G$<iP4K96>3YC6pUimh}sH_U)2n&<$SFhlHY>XT1A
z0a%{`P7D!?YL{nSiWjP7yfi^~9e-3vBB>vO0PPJ~2^6`DJ~&5Vj7Q2`=!hW*JBRwy
z_(zIknmk+Tknxn*ly46sSM+B~`knYBDQa9thsX0E+q+wQbv%7f9TiNqS<qVdQ~$0_
zvJSUfg`*F@wGI1D8clVwuy|RH-INgFjX)~lDB8|&TIW8E;5O|oChn-RnLy1it+7&5
zUiP$PmQi)Hmg-(R3A0<yr<8zE%3UO<2!XD2vvJPcQTSa>r-Y{Q6%%CMEEbc5nRnL4
zA~rFRRed%LLRosf>eX}q!2FaOEmR&YO4K8#lr1l1*x)aZ-Bz~QkPCI9Rew8{c1<Sz
zF|ZhZ%nyppFe&60(dfi=pv&=x0*jkA)DXJzG1Y*UUXH)qVt{^%^k*6>)|f9T-NJxU
z+J^Pb?H%EgCU6~xi$iK0$XEya8jZ^1(<WFp8Jn!i6HB(#9jqH&bg375>wvbpLJe_8
zo6SvR<w-|d2#sItLWG7;ov2p`++vCM${pfX;<fBq+3{24&Bl+}ugtpA*^`n-LO$4u
zy2S|fLb;zD=o@ENwCv(rI`wwT9T%F?%(~O<S-FWvBbLl=lLK~>n-+DgGVS$E%DFYt
z{)zlk+vVAH*_CjLYwCkimhzo(yQQ>@i9k6@v!LXp7G#`R-2a678AGF`9j<t;@;ruf
zpiz}!%ycN`4w~-ahSHic%%+L(iH@=f`Tf<S)!oX9s>u_nl4JOzNn;vg3uAmNKWW#L
zEjTm@!pAnN;8-|htMX?#*Qy7VEsN`CwGWv~n5~(Qm?IPEWW%8caCS?U2i49xp3H5D
zfDvEQNlp_1OTzjH&3<NlmaRnVMCp-uHG7syJS}<k@x#hX^{&*)M9q;>6exKBqjjW9
zic4S}<gcNg{i=m+eZ6*rmQd&irXOPsc-jeBNF`&3RS0Dq)>U=0f@{r#|Kd;4J}NCK
zwJtp>jhv^m4zC;gYqx57Qthe(Ds7tw9QnFT3Yv&mlGaCQ4wT}TZOvQHOCQC{+cQ<-
zF3ItZ?^a&$b|qFOEDqbC*zD9Z>O|V6*antC<_&f1mo2R8>;Bd+3EH;U{IZR<%{uWd
zTXRh=s)V=Y(5Wh$<z1^ERJSatpZj}gQ(|Lnb7T`)Pp1=JHa2g!Y<X1evg~QoRu5SA
zwVmWO5waw%k6i4x!MEM2x2~67j@PqitAw)txsIP!Ub%K<LP_67j!}+xZW%$5-YMRJ
zZ4ii|fjyK0xW3_U!;;WR%keMoXz#2S-?lZMMW0!p6`x_BexGq4h)-xyrN*-LiOa3p
zEzhmXtpq5ptq)>m-*8szw$ySWa;p!@^6ms!kXL8bqAyDx8{dZCIy~__<#`WhyW#MM
zk<cOT0r}m7*QNMnNKB*PqZ}m@a{H@BtGboWEP$nMHqP8a+N8@Q8Buy@LsbJ+6AqnI
zXZ*+fhy17fJN#Sxd;DjO+l`yaz!l(%<F0_Y&>jYE6rE&v?%34n;=#V7vydlATNGfx
z*Lad+oBx2oHG;pN1fO&($~sDVAYSE+8Hgt!uP}Z9yj18)0VeW~Ko9SB#u?2col=|v
zYamPOx@Rl<Hm>!84FW<LE$P3UqMfp?d~4P`7CmM?Ry>A1`aQ-yARa>=eF7V;8?8IT
zPGhcP4oa-yBRiKZRORv3WJ(*y4!43&>9FHp_F}H`oE8N(Nu2bZql791=rdGU+e$js
zwmF;llY07E;553`HW{5*fC(*sba~26%W=y+H3F>LtaD42<_`bv9y*^mN|%e2dzZtO
z`z-ueP+D+UU|1kr5Lob7pk2US_<0m`lqfVIvMe$n-^5~<w0suTsB-FY`m~C&8onyK
zBD*@W$`txxq0+jSXSaEu$W6~lzPVt<)6K7C(ALq(E;!8%<@9GuuO5`!jnz$~$$DjE
zg=yvH6yeVEPQtCGWv*>(^#HPyxB^;vT0vZSIqf;kJ>5E0IpsQaI=woTJ!LvYzC*oZ
zQOq>2H;)Rw)D&ioUc<h~6TT9@1L1k%ffC&lJrhCdp6Z}^PhNLkk9zld&w6a!Q-)}W
z$~wbkvT*vq#)gPL{RYEDya%59u!veF(FEtj2gSC+t{O<q)XcHvjm?#_r>h4I)Qbo(
z@m{fGuX3+wuW>JaFJdo!uXXR&UYL2eQ;*X~+Fr&<##VkSUd71KokT0cnef>QBoOL=
zP78HG-+?4R<{)(tRERu;1yTk%fke19XxyIOoZgXLlTk6YwrZTywbDX3&tUAE8isYY
z^mg?&%I<jG7eIWTX>DZ?TZqCLYsL2J*6N<f`pF%X9pr}WF7q<;BJ(QqPXAK>Lc!hM
z-TuPk*~SM=@d6Lh_w<02wYhh3cZKrM_l)HOT{svFRqQTY65q=|<M}XkWK5j5c%-b2
zob91s2H#UZbG*WVQ$<IjFY!Y@w1-t}BwaAwd$#)-KvCe*9@Kq^*M`nEX?@T;qD4FJ
zu7V$OpB-Ltz(G*<^F6i;4Jh^-0(c~8FYP34E7uDzYh>?E+>2pNc<rS<u)VLHwmrXn
zr#+#4uDz}uwOziQ1?quw(jH;opm=+7b8<&|O?pXsL3)*Oo^hLT6Zyz`&-zsUSpH=9
zhzxG;h$%X^z2<q+_FneNXx9S_H4HRNxOFa^2^|X^3Y`k=2yF@N37tVbTQ<|qSI<{3
z_a4lj_U;)v`pzz&UNFJKq7&c_a5lIK911Q5H-YoPb>K2^05}dD4lV(=h;FT&B)x!M
zo?Z}Nf}bUy2cGGl3t!A%a$iwiM_x-_k6zQ>Q^k;f`bYpH*NJxy=kKTaJGtom?BeW-
z{QT|-{VDn}`bqI&;(p>`;)(5{;-3DQ@3{fS!*9t?;60-uawE*^XPTG~qbMunngp68
znpm1dnq-=UnxvY<ix`VIi&%?9i)4dvu87;6kj_`=8FO}LY-d$xXy-xaQm4iG*LBBr
zt98$HvlygZM3jIa3hY{VkuF1aJZ7{+ggr!jc&324uD^z)N|^k({Mb-0S@K4lMyzC{
z6{M99yYS|SdvL|SY4<-o2E-aN^0T>vfj@u_Kxv>Q&;w`+bOG7|zX4T%vOsGfh#h-{
zG(G?n@DzX;5bQ7MKj2UAUl?E>klTgQHPThmb<~wcNfl4d_>u6d+#ufNPycMqB7Rk(
zRB~;cKOfbCt-iTrt7Y?KyJYu&S1F>Ml~9GVhqDj7{95zP>8t7>mSf;^w$vxwRQzVq
zTJ~E0TAEt!TH#vGTESZ0TFP36TH0EkT9J6<6SSf1w(OVefb4JC)Y-<_*x57LHQ7^>
zfs;FvbCWld@_rbXfnU2Q*!|_tk-kvU;h^Mqd;N(0&Y+4?_cfzZMw7Y}n<$VjTigQs
zZ(zpPq)C=*q_(f*N|cRo9T=F(-NG9_Ke8(|HK~|!6H%A~=eo6j1XM~dQrY0vqY(aR
zpg;iyzI1=thyjZ6)1_l5pqK|LZTJJV8X0x*?SevqK8@_9+>hP$mGmSZ2fF(<rq7?x
zbAYCeg1W@zC>0+nkSkF5g3`KKHtK;Ock@Q36;kN?Dd?#icBAY3`@M-fzc3aVHDh;p
zk8HPW&qxnbPf3q;4{>)|w@$ZC&vH-7`DrBygcw2&AOPS1umE@fOaLi>m<-hb$pFm&
z)c}1h0weZW>W7%6yMzs<A`L;Pco=nl>_e=0?68ze9<MUK7Ooby7QST!x41TyZS3vf
zxRgeo&@}cz<h3{gRX}X^;Lsq@goYEZiGVO#H(XAlAm`EIy%OdU#uCmF))LVY*^rp4
z<n|zB@O7|jFncg|uxc=L@L+Ih&|>@Rw&S+dw&%84e8{dOO0LWnpH;YLPL~C<HVI4Q
zcr<I6x<pBC-Bk1bpZ(PRW+>bQ!(S}h@Onu%iI$wzsZ0y|S~fup(g-whMTy{C>Zz*z
zzJ2#=ZD&qF+?jz7M&cYQ5#a(xUUDI{Az?)%tHi71A_O8hB3L4LBA6niBE+PTP?o4D
z{Yd?2NCalpv*r&uOWy$-4n<~y@V+qP{Hlj4@hT|hTPd$Pz7DPqwhq2^1W%u~k!{uO
z;<%<psn9(3QRGb@f>A(K_TtbY(1wN=uZ4g(S}$C_zhLvx{Y&d7yD%pQ$@FNH3$a!j
zeLMpUwrGt$>&=mnu*J~DgT<vqi{r1yj>lHVp2ueCA$tQTTS5HT4SgaPhQfGkQAz!K
z1NePRTXPqG-SxcGyyU&~S~(y%_Mr`Z%UeQQdKaheimiMQeDV<V{@_jet)7e6d(CGf
zFJT`R0AZHQJ~n)4&QFFeS`uUcB@I^SFEK5nFHqk5gd%BX*;1)ldLpbNY+~%OQ1u)t
z9}yp}FEp3ffym$dr5CX>#n>@rap+~Rudu_h5<(BfY;#zv7^~>2Sf`RLWNK;tVx5F$
zgqDlB<<L*1?aO|oLBReN8W+0JD`mv&z`>E(n3yalM|(5mZ=y6Ezx^wUCJX0RsEKqn
za}$MDW~t0PO%kmJ%~2fc(9KZf(5{KKqfRwf6B7gN9nBprItH$^&UD;II^&^D6H7-Q
zN2O{`t&CFnd0GwH1)2p~;yC%CL=&BAktVLCgkyzU8c>|~kl(hU<0lVJfpik-C|WkU
zfw+ZVaYM!N0JRuKnG|K+;n+=;uZ*#b(h2!^dBZAd#i_H^vtg><e<<q!bsTf)R`Ry8
zE(Nand9#_b?X!NW;6vb{#i9G5>Y>~riBha~{2w{BLMs)QVzpwPVwd86XsinDT%wiY
ziJVJ*vx-PDMAg8Gf+v|sCPNOjP(s<bIK22`wr<wMim^-)KQDZ`fIG=G@1ZtEAy0PN
z^Z@?g(pjyUu8p~kN-xV!szT9Tj;~N>W_dc}K+lq)jlPY|n_@K!kPb)%WC9WZaeyR1
zR(pK=uS}^msWrxNYR2iK>BxfuXW3?!)l5jrsf=48Xu9p7{ra;fyGT4Bg-jtjZ(tgK
zX6wNEVCY)4s=e`dW6`4OD6UZ0gHblWlCH9@dh74T*2Y88#g>I6{#zHtbyK#a<sH{1
z-8$WZKh2No-X-m78fz^jXLo=@2hfULgV4a%b_iT71(uk<6b3RB3slNQf@V=1n7+<W
zD9IW1-z_0<7bYYF4lN?5#XkD!8c*m1Xg9mW*n%|0XY{T<fQ>tMowgH*f_+27!txpE
zH5y2=Z3`lO7Vp+Cbd+(&>Y3D50&zJja9eIUTD>FljBYE0IGrWj&1)Q%oU1)qdFMr6
zP5}^#@7mAXuiG!%Z`&{0Z`!Zg?|jaEu6-_jZhbC%ZhWrvJ?*_X4Vo&3HMXd|tg^by
zZv?!340@9;=N?kM%GzBG3M-Zuj*jk7AA`Je+a1>O?1%Zb(r(6{@VrOb)z+HrXBtkH
zZ%&@jya(D<)|$?S-HzC9H111Y>U^dZA1p<;+@1u$qgfYx_h~P-Qf+5#X8~uqXK`mW
zXW?fhXK82CZd*wYBQI*NM4}rSPpCd6YX^5v)UWX!<7?aYHw{lhFRQQm&{f2w=rQ?C
z^b`Gy$}8bpDHzhRZ*W`jxbTwpYWr3WUIXuo-ex^cylA{Ge}+a5eJ3qKjd{=b88O*c
zs1x4EPwqG6B#8xzGh8!_h+li>XTwkI{<BXV4{R@d@3nplf5$CC#(3}2iBXA={vJ$$
zB?W&7Bkwo=8T6ZLl5`*S8W91u$8W0B-H?+VHyL>pVHY;sZ>Q7BP^6M@5$zb^7B<*#
ztJ88_7>L`rBh&PuJhfy;Dr(arYGZ|Dps(@cLMM-ttuEq1-wn`v<sDydB+z&TZop|K
zy>rX~MM^{xXf@ucB|yKoN2ME9vX$DXUY>EZ-Q1*Ko<+PJ)TCsWp0-`kNNAUswujeb
zYL}q1$J=BJUGVRrH5s4A3+<IRE*n}_QfZQwqW=2AD215vTWAp8xJ#~*a*@Oa#TBl_
zU!<#j{WI_rKNbm!0^Gy8^LM0iczl1^u7q`MAax_|3i2uCO_ypV>mrT~YCWP*z-kx7
z5DaAJCm}(NLZlB+=}K9*0RkEcbkWKY76Q_`PS)*!qV5F3XqgBT0UBM)-z|%%R7wA!
z#!@nh1t&vI3xP)2az&K0BvvRcKbyabWVcU#w)n)2MT8>%^M2A<3TZ45@2hNf!lbqZ
zbuI2+<dZ<OuaenulUn;!&ZH7CkKgT~Ay5QFXpuqv-{P{1C*>@7xyiLZvIMJtJIWrL
zbhY5CB^Ufi8m#bbFS}&Ywvk&Gvm9+9XowxRphs?zbho<-NVkGvht?1%)UCIX2{dr0
z5XK=xjt->n_Hq|w{<+tUvXOr-<Id8G3HfmL^R63lBlleTp4khtJ&Gc>TFMkI(h$>B
z44;GgW~2CA&Yf47T>m3mutv|(#@M;5J6|g~;3IjkV$a@2$+>MFw=!mN)U3oH5^grN
z9Mq~pRV76?jbRy8D=tW-7n><%U_!x(Ll_z%PDkZsB1k2+ONA1fKPY3uQjNJ3b}V*F
zg&3PVD80?>h}jfHHC1h4iW6z1WU7kKBe_(>M-)bv(*)J%@Ws)klDyQ*v8#hV+w6`c
z0+H#G<x~w*(-z{jg4)EixvKF|oJwx-;r%%&7T;<G{^Fg4xQc^vyr=y3zdO?i;$?(f
zP8}3sWQ4PdCFL+p)$L0-Gc{wchLed!L$y=QzWB9ZQ17r&0ta_cUp$B2D2cH#MDtT(
z$c|BDRpR36V%y@&V!&e0V(y}G9>9}GBwAnG9;*Ap{?Ypq{Y3<%#zv<E_~Ct=RY96g
zr7ZK9M`1U;k4CUioiAm>%!|2YJi|fBi?0*H(x+}@T@|^gZbM&>FBC%Br(k4W6~5>~
z5}E{6;ua*~Ok2&30^|K{7vF_3C;EuDST0&FKo?IJh!?>Zk{1IP^cRH}<`;Vx_!mhR
z8dBb^ybArr{G{far~LTQeOwno?oO>N5X`f%J1DX@>_zsylovAqb8l<Lff9gk5W?1{
zv1xq~d9Ut8-;OUDLf)siX?_uY?*bzoPs@mH0VDefyZNU;7hP-UcdFPyS|V(g(3Vh8
z=u;?SXmF@x=s+laXkn;%=w2v(Xi}&~=t3x8XhW!5=v^p!XtdP-;qEP?+UmAO;it+|
zrNy06tPrHQLt9)^+)2?CFJ8PYEfg>Aq_{i56H2k-#ez$*5VSxD5D47OIp>~x$Nlr2
zd%io~@jho{j5+3-Yp%KGo^00Md#x${j}w2e(2xv-*2yUXMvl9D<_D87hgNmSeE_Sm
zf9x=^V5*8YP%dQ^CNU1p=rCJ)<PtBcoX*NaGNH_3m{_Wot;|)Vwh_C=l7?lI?UCb8
za!{*d*=5^h-DPKFVPs=uWn_o3z}R4{Fm?zFgbl(9VP9ZbU|V2aV3%Q$VUuB%VQ*z=
zWou>SjT2GwuV$Z0qEouhsu*k86UqWh*SOu&xbni4qcPS*)rqA(R-y;7@_he^cdVqU
z8B2w>QZbiq$_s4+m6VaZeh%SP^-o%%Iy~dacFJ?=bE<P-DJ3a2DHSOVDP<{jDOD*j
zLJ6UUP(f%Qlo9F(RRq{y$zRQ1#b3i;*<amX)imE}q}tuPiPJQWZDgbNN)dRk2owJ$
zRh2t8Q43TAA5*Xc!Q-Y?>2ssB*nxs;@*CojxqTxEwt|s)3AU!w={BSD?oTq5(7;nX
z5j%%PU<ueDY&$jwyNr#)j$&)D2iS0IAGQR$iA}@KV4Jb0*br<twg8L9CSfPA^*}9W
zHs-!~XfeMK_2ZmDDt=Ui!19nBf03GL{;eW#MV`orF(w0RhJWNAFRcvA;~klxX3<V8
z>i<g3mD9h@zjilm&*nvn99xoYf34My&5rdBl);L@hQXQvnrW43lWCm^HM26aF|#&<
z&Rfmf%v;YxrLClGq^+f)NGqfb(wav=#L%!#(m0{4hs4kW^#yK|VHhYJt8Tqntv-cv
z@U0V=$=DviL5X7U{mN@xZZVC6kEf~~tSJU846XH&grHNUBDB41)r}68b*w-TJ+H6K
z>7&!9r%z5rPgza{Pq|JdPamK1pK_jxpR%0_pYi|+N0?6ePB~7+PFaDSH*R1@xu?f<
zwXxVlJ?cl1TX4D%y8py2#)MNp$-Wo9Htm+txMSj6E+djmI~cjv1?=k<&8j(3aDxUJ
zh8M`7(XYK-aG%d#rb}g$cTO=I83Kq51whulB<ozZD1p{q;6c`F^-GcwK=KN!Q6vKd
zXts#@a?L|OkQ8Q%`pSjZ^MEujhZTp{DC%efeA7!?568)&(Vf0JFR$5M&bYMQeb<in
z?+BMs3t{qoQ&>&+5<N#}v-Tx|06q0i$O;fN07iGx7RtWf+rcc6=>;ncI{<>$fO%_?
zz*MxCNELtt>H~}efa3U5U@k`vK(fr`McH4fddV<z$@$iKANI5Pk}Dbj(`LY!3*gcy
zb{#n8F<O_1$MfB+&gPU0>TRw;hP@I%)`c4&0s>t7F$55CmM`kt;S5~YSp^{BJurow
zvI|b>2hg?DytEbbgnN)7bQkC^dj8+!*A~clPsR6MF5>2h*)`jW_q7wxrtKeX3w^=S
zDE(iN&n_A#{)l7ZR}1!MU-L33O3s@+vIvMy2sI2&2sex(JX#|*_>@dO>D+n7jmt@v
zvCy^9Gat9mvy=%x5x|8fx4sgxK)q@WI|1o|Y`BBNLoGihUuUD#j*0<t=D$$8kx!!i
zsi;%OGCrBihGg_(N~fSD1s`{^t{TXObToLXv(~aSnQQIA==;VFcXKDcxn!^!;~M2?
zw2OtS!OQ+f6hQoxd}oBkEk05Mt$vn73V}%Lj{aAH>}w0=9u_F`LkpDUJqzJifxK%A
zmXQ|17OkWQUIuZ=>XR~`Plyd_k_RStJI|z0k8SSYi1;qv!NaD)2%7ye7LFEm=7A&!
z;E%@+q5MlC7U#haU{5tQK7*5w-(O<Sb;1mlFIzE}E%`H+HGnle)b54fV8_sPPBxX#
z;Iw0TyO;k>e!mwKgFfFKW|A?#xRus^E`ZxuK$?Ctvkafqa-n_h0(yTOhMo-U$gi|@
zxCwf76-RQ)I~mw{PK#Tp5}CZ{(Cg5TXL99Jtqgo0-5K4nuz3Ynae+hZRt`-<T&k2i
z-svpMEXn*DKOPbdyZCSsw$R3B5*62Qdt#BSy!~)#v!p7p?VJ+VT6GabfNTMSDg!&6
z_DD>E1EVi)@^*vXXp($jl3CP!d(SL<S@b>V4QqK9d})Yq<uusTQe>$jWO3nF-dpPP
zpyM3gFL;vL>mbd<b(MZrhtPT!o!BQm34)2W@w42G`mU`j&wJWq6<MQIGvg(>z4i86
zR^)s7V)a=oROjPcxV`oFkt?!2-LYU+m?|>fkNZT=)zFnWuBX>px0;5UNxSbZe@Q>b
zLEq!*_)-lNi+uvTPuzO0+RU)k;iWJaZ9-%po3(Z|^;D^YS=|%k#IjzLby~IK9(ezb
zQLx^lKaE1qKl%|%$OOD|WNek+{d#?$x%in75Wj-Rp%D6d^SZ2K;k7nR%8lpom2tAy
zW<+Z%Lu83*MI$PG+pimoaJ?3o4xRiBI=dOVSl@A^RNWAB{gkmYlI6?l7nx^z&-7lL
z|7m#Rgmh)-%M+`6D-~b79`PyB#lF*d#>u4n#ZKv7E`=76?Yr9N{9inkC`PVeKDf*J
zJo5h%@Z*uypZr&;KlQ&@d$h?!`-qk)kZ9`eiSG}JA2QGCUYtLyzPAtl;>C3Fu$q1!
z_DJH<#kCcwAA!MJTx<b1PM|;Rf3!ZEe>VT(9G-mrs^L|RptJkcWc$8+tfPT_g2egW
zPX~f*8PpD5r4o%wCa<;q_a>?4U*uyXlLv$TlAy&3@0`l>4s$j6FA0<Y<J(?QyYtHE
zkI}2i6yIw9$iMNF``v$U(gXGS$AYemjojWmmR7s1o5wrV?n}PyNA}ib*3edJZv8~w
zi=W5sE}hE@sB@f$b^iWA^fg^wT{ju|fa#JQLgN;idMw=O!u29)CKcVv--@i*E=05l
zyeDf_(3;&2`Q{{ZO)C&RmvQ7JJ$v#NJ(@A(g`7R{LC<9LNr)Ki*|X{z+*5dE*Z<Ct
zkA1ECvBB+<_S8zfQu@t~rYf^iM%s?xDoqEvG_s*(fk`f5-psM2DqRQqnU1<DQ@~}R
zBdSV!i>{eus6TJXu+d18DQ>AJwTpT-((Uctp~ZV|1?Gdj7ERw0&xa5%$|_0WbR|U~
z79vX=&2)p~AKzvQFY3*Pp6>mb`F#^ONF#Udme_M@q1^2z+A{|#8g;YparoVYb)xs=
z{iq?G6MO1FeVxvuJ=rrVna-ikR`z;14&Z4?3cs%W^1Axdk7<jasepP#pKY=u*B>=~
zX2_1FdKCQmp+!XUqqi2R4?c_KW)?F2`9huQPtY%xGr5mS4?W~ahgE7xGvq{uRk5T&
z9Z&gGB1q#p$oORYNe((5SE-efY<93!sc(^-b}+f9rIVmL$X!6Z3Hm=uR^hH%8a=jR
z%wBzB-fEdKKrrsA<Nkf`q!z__cE&HnJ&G%q`?th+VTpJ4#ZEr>DI*_4;+%ifuSh5%
zBp-u&Hdoa5^}L%~wCA~jt+zfRAc9x(q`^;1niUo^)QesX-?u&~_A^CtEF|vs9<7G#
zTb>l1nFO%5va0snu1+mwRgQgZ8_P7uqS*E0?$k5kI7cArL>~9Wf8`G`xu`FeE7yDC
zMsuGH#@tyUX?#&0L%TxJD7zCwwDQpVMP>};ijWrAGY(-TBc^meE@wql3@8mQu)-w<
z=85fF;cV1!ik(^EX#_LGcCT=FYna8<hiS=w$~Mw0c|;!nLGS79`VZP2WYqFO*@naU
zz%BuY51D`1mCi4KPhWoW%im$PpS~t*b3I8U1BD5723x3B<xFbRJ&7V?4-@G8v}6?e
zq%S@}WluXnt7werFig2K-a>(|Bw3$}Gm*R`%%d~k!nmqrQlE}9io77qtutXs&#<`k
zr5?yWAvacQL`4Ck=h~ahp94HMK{N66y*$>@)nKu&bXrkQy5mVz%*4vb;@x_0tj4;^
zH|Ed2bmH)e_wBv58nZ9wo!|1(tmJ`iO0gDeK$8xKu6TlBXK_pM7tXBSBAOVV)nZpu
z;5$Zdhw~^Qq}Ot_Xy3#;uSGYZm{VuG*oeF+Tc<Wmvr#vlGrzZxMrWW{SU03tbv$Q7
z`(9zN4s$Wz_{T7P^^)tre)n^Du90S0k+6<&G5vVv#xo!Rf@Ve$kIsahoN0c!PB^T3
zTm`P-s8?fGA)c#I=(eHY5soj%XX26g_xLRQL#+yNy^P{PUHxKXkD{g*re)>2ads-|
zCDd@^fg;O|h^FUrrB2#jh0SA9e=9PsB$dse4KDOPtTlQ$R75$Zx<P)J>LZKDo7dbe
zA|6xRAU#aMzwj@6E@+*q5_w#grD^9*QxiP?R)|UcMck;MospoI(2?Mg5V0V!P_$sQ
z5LghXtsyuh#4E@f<D(AG*ORq-a<9x>(CJ=5s4ai$P4$|5_0cTM2=+Bz@LDR<z-JpZ
zfvjIbqcqP23Jia8+3E?}r`{V#v{9@n5c^4It04$Yy)z*6>7}&}>nAO$yj=JA6blYs
z@@x{FD7##v|MNNu#soIR4nO!PBeKo3oeS&7BsQcDuM`!Caw=FC-YibB%MmZ+DGu4l
zxe3(I`bd+*_9Qbk|GHh2(bvR6a=XasuXTm=cG2QrqY6m@TYW8uf38zAE+Su$gR7Kj
z*rTeADui>@U%O2!IELfOahW(I?maFG7lW(9h2n~EDL@tSPq;i>0uBz8do9Cd;1IYV
zTn;V{R|7bvl;F~EBt;XRw!XFg(^s~?c*;rSXZ+lswk`XbG0O8gsTMRXv>oiJ+MF{t
z%J4e6mVH`a`xDM6WWCotL3}ULq+kr=ZbM&ku<@elBTs?-7<_$aV+XUd$*|6_!GK}d
z%v{gh$i!rBnys5{m|@H|=hx>q<}ve|((BS2(irJY<T`Q#iQ(}O@kv3NK=LYvNqvO0
zD$;)LHQ8o-O&jH2PXzYogyw>sRO@qQM(Nk1+}WE1=05EhMFSBj2|hZ}m;|4U`BLbi
znZFY3CmI`xry!UTqzL|mYXn&WGr^KTO3)?<5ZnlN2&x1S!Ja@%FeXR<=j}uUMFKl;
z&Q3|tCx{U8&buB7#M2hv6}tKTt1#7Fy`a%W5xKh@vh-RNkl_l92-X-+Psluf7MLqD
z48!nZCvJAUv?(OJXbh%~znRhI@amqK?2j)`SMEjzQ?#45OSSvAUu&0bXKuG_CvDem
z7if2DztgS?9Jm6<t?kC`679b2MD2?0?CsEY%69#Bk@mb_T~7oOX-gu66uuV<(?say
zjIN6)L~vMURP{{SIf!`DG)E%30&?fySc&qbQ}f)NQ0OqQDHY6C=r0u9h_GR{$I{4l
zedL2W2-Z>U((F?2(lSyp(lAmp(!!`<G%#uyErbd}1EGe{E>JDdEKo1d%23JB$WY7B
zwo<jyv{Lg%iquB%6qKyfq<$T*eP1`CF%4E+Co@$P87^~|m{ax|MYzjIDG`t6U`3^r
z!NUSdQl`o|f(js8ddGajY1NSR>lrz;7z#X(e>4&-^ObQVdc7M<isv9i1ZcE=g^X0J
zPhe^B+=QqAaNt*&5!m_=mJ$ylL?UyY)%dj=i+Xh|AFJ8LwOI*?sRw9x#Pg4*q^gzW
zdukUH&5YS^h}=sJR?o?I8O^or6|_th8c3s1@5|R6ZL%dT67g1N(*7PVAe3sP=B0k5
zcBD?MMywvK7Of6e1FH|I4XN|0@v2v-Rj50wIjirg?W!}XF{;DVVCoPxi28zBQa)`>
zzll>h|3vbwnrVlp#seBP3v_%1{T^#<ZY4lUf7>15qtw%Zpfz(KfB&qcZ6^OvGIZcz
zP5z+Td%VSIUeGzsYv6QE_Mqxy%r9yzZ8v2%jWL-ql`(}e4VDZ`g{8pKAjyzaND3rv
zA$cKnA!Q*=CRrv`CPgN#HMuplHHCLTgd!zxR?E7m>H!73^Hr5mIz=n1g|guWmwKX}
zYIEM`h$9A$HNMH+o~YT^U_HWbol@0rw8kBtXx&!~e0<qX)omH!xI+>x`-)a)U9B78
ziAJE(ag-4#bj&!@DAO?0*v!Dp$js2pc-~;%Xx?z%SlU3^NZL@^7-@hsLK^aLi|D1m
zXN|1Osz~(U<FDXG8G5Zk7V3tZz<H{keKUM?+Ho6>GbSo)M`><0c#Mc!XH*Ruq07Qi
z)|<s1b4|8$bvs5!Wg#fb&7#9uA8Q0WVVcunyv~T$HpihhvZ~QBo!h4G(IH9%RgdyQ
z9ifO((I_x#2*r!4KslpSHzU<;K=ry)b`Bra9R(&!g$o9pflu!`apSnMag@_$E#Tni
zNT_>0Q|UM+?37lkK4s$o)Tx=tcAToSGp=`>t^+d5`p;x-PkP!()SFH@rD)}UD6+Am
z2IBTp&8bA%`S{q{1)mP6(T=vc^GT^OYB`@eoLZdPo!T_l&OPPNPcO2tqxzsJaI>pd
zlv;+=TuY69w4;`PTaA5m0LxG4e<aW!!N1(kBGB3Yw5DIO<_DKRNxwLd7fYbIU)t>l
zoj^gqm|N%UwCXlFP~NyKqgLB<dT?^ibC971x^)j{<C}(PpSRwv`roQE4$c(B`1m#g
z9<P?{TXxNDPH>6s0N;+x>WQhetumaaZvkRv-hQ{9csgV|2k;{Vya=T&Vep|D%I!X!
z?rD?%DAI8OzB@y_-Hp>eZ6x#t^d(l4I|v!~#d39yaJ4rXMnzUp*S&YNnVGy_7rt$N
zI(fzO^QBwvtwd;n;rk3r%1KtwPr&}c7avp)e(KLOi%p=caDpRLV#=v5X&Xv3W$qbI
z4`rX?@C?qdMo-CmrkGk!0DhEdbJj;wvbba^>!B$S4yCzK_(n&<jy^ZY_2>PrU!HHG
zl9`uZzY&y}rlXJIQH;(R;#;J0z4S#Sy+6;l{eaFb>PC00WoOkI;0qz<N#`4NtvhD9
z!zFl3Vwyf9%1N;zXMt}W@Lm+}qK}K>=#H>N@$DM8b4lpYZ$_zi*I7<f?TWh7Nodfc
zqd?tdHDiXqN<C5H%IvGT84;t~E9rdDuBk=9k5Nn_-E@!v3Um7=wnFC;CB~lK;x^48
zicY^X$cheg8)*DB>$)R)luk6rj1E2M_x{!5$yCm-pQkEG!F)KViEeNk5nD}n85Bon
zgb!Myi{0iLF|(dK;zt=FgO=!`gIVv@7LSA`PLuI+BT7uRNo}}GqiH&5t+#>3WT0GF
zKcu8@e0js|UPG`6b2;C{$8az8=Iayb_HFPLBbTy9VH4wW`iacVZyqb+E*XtHCKFD8
zH)6SaxT0JANSRyOT<Of_{YFwHg#9pl%gCdwS=e-@+;jrD`O{-d+#{p8+@yX-%j;9~
zwCN_>Tzs0RfKz>%TlXxrS5WiR+}h3?uSVZl|D7vGUwk{H)-vB5?AX>XX1eh<B+Y_$
zgpPuJ`+)OwH^zqOS@s=)qfe*PL2r8{6Bx#VyyF=%y0^@w%)me5ey>PIW>O594oMC9
z4_(WhN9;<wGd6?g&^w@`vVt+~Uq!evA0^_|EUAd@?O&37;I7d{TU@QTxTI+&0~iMV
zCa^-i7vaq&*#ezre!C`lCzEw33_4KrYifV%El!dslX)l<-S76R5%+kW-#L%+(84TF
zA1&l-STRAn&(<R5oKwGgQRP*^r<b^$)lDg|$&xo#zK@p{m@!hB>zGjI$aBvaD$shP
zU6&WXucbP5{cqLjT;%A8=rov@K8p_eBjx4f<Z?TxEbj6JQ^`g!bv>{Q<-2TV#g7ae
zglt8h&S(%Sk!PkUcVB02?(b2SCo2Pw3=LjY;Gv;h0Y1t*9Sy={Vc%GJil;K9A%*;n
z@i=TQ))Z5Op~m<%r8*VtDlep&eL?af1QCxB;s_oDA3_Wvgb=uN(cm7H_J8Wn;x9=s
z$1el%;6tO3{8o*?v~y{KB_54UP-7t-is;Mbf4&ygpOMlmFv^cn<I^7M@9*#F@8jy{
z8szFL?Jw;q9Rdz>1cFks`rp{F<OrM!gzzg0u=BGs*9d3}2mpyPghmHv;~GV39=Snm
zY;ELiJZwyDEN$Fu>}{YnU>k^njo;d<HKnz;Ywi8rDPRE@6xr{WaUy)+zt-J9lmePk
z63(PgQnwD;qMwqe@q!juk4{<CWoD#g#APIzCYz?4CYq+0#+kx^wFgR6BRlnLOGyuU
z1SPhPwgFp#ZNS!G=#bTr&5-pFlvmCMN@=y*$1_m=qkOQu&#B*O&}jfjVBNFR*IPQo
z(9h7rFcgqX5IwcU9c(2{Rn#olv<{so6U2O3DSJBImR*ZXzBDs?L3eg$YfZ%U`^Vh`
z+}vCbT<^GryY;z(-0WR}a)yoPv#*?<h@{i@U}n!}vu1~9LuY$ti)JyiDYH|vjk71S
zpJqE}^Jd5W^rcf6VXy}&88hiKsWT}vaWhGAK$^p3iCBru)2Bx+JEODcMqW1v8adz(
zJLNla+fk8@jYfB`YM(p`R6HL%n>(>RaYrUsprLE%74$0Q8YMbuRex<_WdeP=PdI5i
zdl?`q6FYH2IFUWcIUzlXJJCKFJrOvmIdMBVIJt8YexiC(@~Qkq^;6{2te?io2FWJL
zTFGWVD0*Y2PJ&LDPnJ)J4;axh1A&<r{1+ZTz0{)<#se921=-_IZ_Q1ZbpO2VMYh8=
zYnrU5L>czU$K1wT!`#f=+}y?7(A?Tw-P}K`;wOZP>n?fl9p)RRlMqoIQ6o`JQA1H(
zQBzTEQDaekQAoqf27?Bj2BR%bw(#X}(lA74XlG9+M<=G!p~}R80!ogiKvPnZCy^y7
z+E607{7jGQe*6FG{yy{x)TzX0MyIbv9<)T?DG}~PSwKG8X;EdCZkVo}u5V&sVq&6a
zVrZgm0@(uLD2c*lJAW-HX;L0h5|c+$fXToVU~(|!5ZMsL5cv=#FBvZdFL^~`lS<FX
z@yJIlXIl$fS6dZZ9}Z*Aq|`jayvDqfJo!A<ywyD2Jb2!{JoUWyBe;>BA6r_vWW14}
zJeB8|sF94kX4O#@j8>HnFHjGSV*td>#m&PFD&s2SDC0d$z^ex3WsSVC&COLkRSi*5
zRApCTS1nK}P=%^MRnaPFRZ0~~)g%@DKGRhzZ$IxBjrEdMl8usil8AKfq`rau(*4=}
zv;FM-*!}(e;{ECU;QjplXWqWvUf#~$wGMqmy&-+wy^L};NxM8?P(fd(D?+kHvOuz;
zrLv`=rL?8GCBFqZtG~lboEXyEz8X`_v&+lK$;b_R0^@>l!gydDFm4zK#tV4@;ev2N
z%G`Bh6ZR5rCCvAB^se;A_hMD*w8{lRHJoms15h}pDrX<4gwq~G%bCV`Enz!hE&-7+
z99BkGNLNl*;`j2Ta9??~rk66If^$I!8Qx#sU&2+&RnApXT3T9ET7lKYgMt#Wdf!;*
zW`j;aA)JaJc20Is0cQaS$_WLbInf|WPD)S`r+$g)xRr;W#|wD9c$Ijgc%C>SwJZ^c
z0x8{?-8kFG-iY1U-zeUg-U!~v2X+E{J-j@eJ!<Vrh>Al>x{DcgWQqf{2&H)W!;%e=
z@!et>oxozVa<dY7drSLz1sna-V#0Xa#!HU|ajo%j!no{s&N%6K+_?7m=(xam&A8k6
z!T6o=@Nw1g5_q{$wJ=gR3uT;UkY<vmm1fq5>V?}l>Nz?&1~_UuDm!{R>N+|)$~tO0
zeyu~)HP_V(8`Z$C!Q0`MaAG?~ASBCQ?=%~yyPY=e1!uIA8RwZOAI~|gIyBy_A9t<*
z7cc0-j9{8WiZ&CtiTmSGD2*`<l*YKm#NgN<YH)mTf@h2e#WP-xYToF<ALBpzIQv`p
zy8;LMK2pZK6KRKrhmD6Phw_K4hpUIWhw#IDhw6v#@i_brejfjN4n;ghJP|!EQy8do
zk$Y}P2*>LmI&UnD2NquFw3@V{J_~mVJ2}px8W4O%F8Y>smI}-Zg~HR3zBEU|6oNbU
zT#^0dup(F)tOQm8DTI_liXo2fLa~v1k+&k}yE?j7y5hUA3U!)Jg0wX>ZnOuq;WVl=
zeY7Ps_O!G#X*Aa&w<G5w5s|~ej&!f-oapTRejXR@DKFP_QASqKEC?d)&wd^kxiq?z
zQ9DLC&QG_LdHcF)9h9$)twq=%4IS&!js$ldd0x*?m`s}to6MO^%udeE&Q8x#r_41>
zZ`rY>EvJ#DA_hVSdVqgC%z#79tb;IA2rY~jp%h9IOcK!-nh+Kd6cHjyok?p>^G(Z9
zpOO42IV*`e`+A~z5Vr;$;7x@Hwb}+uoMoM8AGjVEfu?C@n&2MBn>bW1%CxMgjJnLP
zWZJHN$98VU=x0*}ycV7fZ-SS@tKf}rIJ^d40Iy&*MtW3w<a$W*Hw!fi<q07Y921NO
zP^G9@)EO!p6^q(O6{Dt6!Ki%HGkafqFMDVET5Dq>qY&e6BgR^3JO2@U>7o2)2}-1F
z*GQ%|z|Pdk)LwDMa;Cn{*?wUj@b4^<f=lIOIP1@B<D|BIXYNcN!ISFrYxV0V;39P*
z_4RdLbw{;FaO;_R;=1VC=z1B4z}fR!g7;}3ZerV6d++y1oXW?fOdb9fY_8KSUa6w0
zUwQ08JU}Zz1OQzjNtt82pDqD_>2LxhHh_Js;=3w%V*+3$zZ?vHi%~ud2FQ$;fF2+p
zDqf1=1K7_+F98bxcJ2b=doDW*E<1%T>0AKFzZ4I<oCtC$Is#A$-v@x+OVPpr!)<_F
z_j0f+Fpuu#%$L*K*#ND9`vBSZvZVpE2<iZsqc!u<3cLgdm#n*&odK7f{s7?q6W|ZL
z1fMPynE|FTA_G`2r~q(usff%aSh~~!ec4H3=HtTy=$09HhgV8U9}qUwdf6=bl~;f^
zdW*rF4E-J%r3Ea9umn1t^#Rg0pcG>Gk_?Q=xaG+<neqzy;lCRq!bU|+nnIpJmO^Pr
zWk_d8VMq<Q#xr8Vv5GgDWn+H*P?A%`Dc+ZlQqYjoP|%RqP#lySR2Y;WROFH4QQ(m;
zkHXNz(Fp|ff8?8BC#N2*sY1hl9JX#AwuWu`7b}`ML!y!M1sFE`UC6?0PWjOkgByb2
z7Z5dc&Hc_??~%+9`Z*Fx3#&iyCIU8ZhMDkJ=jerx^`&=z9eIaBB-9`~)QEY6U%;oG
zoQnO!hsX=~CjDqa>-q0<Mw#8L&G7PyCL{)5z8O*uYvS=T-Hh^#-bTVt>vm?E**zA3
z)SSKwUdZO@xgBJ|>HN-(xg!tWZL?uSldtJf*UrG4akH1_E@pm$yV?J!ZHIZTyIE%I
zyy0|oXQ;V#>%8f7W@ooKaO=GBR7H>^Qn6cJd-#!$B6e_nZrFC%y_Tv>5vqWeL(5Yt
zP%0+L>nlviO(>pb6NcM>9ePo5lJQ}}u<UToFzImIu=eoiu)uK5u-ov#@SWlCVb$T1
zs&WH<VQFC|6m1$+8eJMm8be=KZ<URMo`aJ^fP<!kvV*sSu7jh4tb?}0qdKWNi8`Qg
zYE9L(s`e_&Dq;)9PU%p8iqpq9-L14quPR0hnNFVW^3I&Ssy*Z7`cCI)aM%Jlu&4HL
zsJmp(^DOfiv3FzdbV+p?v{bUZxkS61wrmXe-1{z_F7fXy6D=z)buTk^$wURxTu7c<
zpKTu3@9i$jbOlC1l;ueFIvV6SAF}Ky&89R+@NvgzkdYpC^mn9pv~+y$Sn8<m=<P`D
zz{^3hW%!b*RPM4Xkcd~wxIA$Ybb0K;@51RK?!x9G?84(B?ZV{3=fdG4G?k#n*3Hfi
zxVn?Z#l>mIj>b({iA|{ustl?Rf_YSUlzG7AD&^`<N=_>GS?bxn*pJv0<Al8*d5d~;
zojl*qSz+%PiiNPWsszNH@tnx+7p$zVz>Tx(BM_@7W2ffx-S*wH1=uxyF_PwUg<=IZ
zv%nDGY4vB<^}Qd6=lscJh7Zozo+vQf>uqypHvVuL6c{QRpw+&b*@tM2GP$)-@k=3}
zL=ed2Wr-2RH@iy`q<laG|J3ZjXY4;A!!zp@w$FTD^Aen~p7;>#eY~RkV}hl4==m)~
z+_{%{$~i}d%0+}mPM}7?XzN#jb;yX|z)!A$VM*?vkGY5W%YJeaK;m)dLK*VVQQ!58
zT(|XwpN-hSVPDL`h&Oh3-4B1{euY5P^yNH}C;LKaH|Ii*ax^d>$QqWf>b)Cr)ABpa
zmL}kSlWlz0le7nw*RDtapl$c1Fw-m2tN#u-zK2LVCl>!yed`J!?_U6apYnMm$~H*Y
zHoT6*m!y*Y%Kr^$b9UA^3usE0ey0DE2&003U@Fg;UxHzFzvmxco)<mrfpuxhlzuMq
zlO3agC)>^ekE&y-n^L4zPcd%p@0_xXF$eBnoN{I`_nYE&vSqP1n$nO;M?aI+pZcfl
z<W>Ci$Lfl|faHi|7JQB6EH27Q6yLyXy36<nF?@9%3Bq#wd`7Ahk9w^?#Pdk0EaY^r
zpJGJ`NtIGw!wZWInsg#z%L*>DPonOeGGb{6fX~N6@!<W$^;PcSKI819dO2R_P_uL2
z;lAeVBrkd1-7vFxazqQr$6Ft}U%tL-`oB8nWg4pT5TxrB>yFq7dRh+$EX0ZVedKjv
zl1Zgke=X#@S5t%SUrXhGn%PP1zu;!e!FFjU=xD0ngO6!~AqA%xTI?VGaSXZ6!?IXM
zpJb$L^iMC0CZ0h`VWFVg_BCM24t3gF4lI>1-xRL?TZkn1@1wIVbD|;xt_a6YDp@dx
zMzZ|1kSBg=eQAF!mH%nx^{$THf<DYO_Z$9S%5#Z_b+P76snRbdekx*&@KmOXj0Kw*
zQuk~Au}-<*VQIYJoE$7G4O3GKlU5{Jr)Wx$1`}a~n=*F3N?>@z<se_1G2!mS{-O6r
zlQ3rZ+jEMLJZ7wrxXKO0o&)*#*h^LVL##&=4Edb+rwHabo<d4)AwL8of&J4zi6L)y
z*b?jSlOB9&%K6%u4h0fgWe1k3e+TJ^`^RVr;f=|4%2&*vBFTicCY8+pTFCdKh9=v;
zmdgJ$^MB2frSnqRS<?JpUa~$#j;YgfIOJBwd{?;rZy}Phe;-}^k0onlQpu7zGEz|Z
zFNHku3))QkYpMKCGyhjDSqVDBv_n(>;*tgY^%rVmx)f+=Z5?u}{vD)awEgd+|L2kw
z6nR&efAYsG=D!s3-K)OQ_OGS#Kh6AKwq%iyW4lJ{{<XKPpvZo8T51QY%9u8VoBtLf
zDf0KxY_-D|1sBo0>4Vx*zufUY-y0>>MTVirc;Lv=ZV31BU;};N=Ev~WcwG;9;Vn(P
zFEw-Ak})K)uF({Jf0%N8r?Rbe-<!B~NcC*m9PbKlkoP?~yL`s4ZZi8_*iXz<S$0QV
zjC<Bj4qGUO({ul|5I(=%$+W+g%KtR;-ha_s+~2+q5PSXq%3Iu}Dd%e~kB1JNv9}3c
zJ_+YU2!#uQEe{E!t=CmKolzA30wT%xciy@Kv>iPy;i|(*WlX!meOj@<7NU8K^b~RY
zYwA868M**Y8YKeq%RDkwX3Q>GZ+92+|5%<CJp#w_HAP8lOpLOx-^8=bDZ#S+v9?X2
z(y}6>P+J-QsQW*;-9i4D_eUH7-?ryoBc|@3k<YwFDKQLq68e1JQ3RH}DH^GwxNh$r
zf19%?JC()`6Un~&|GCj|@6wdbw#*@sbi%HaKg|Cf<TLcs-$#2mj8zTuep6te^>$dP
zis}AqA)lP>0!RN^D*w~WbIHd9cQOBW<zI<`1pZ7-VbW^)ql)V^_$Q{Sj5(X@%kEPC
zADq5|M<THt(~7YCv~>Y@0slnYD0=;mxfk^#Xw0KIg}<fvpOX(+zvC|AAG4FiJ8X{U
zpF0hllsGyrEOy(iK;TSV=Q^xn)!3Lis2)D<qWYqGJ@UZ==0_jjJ$T4+{r#JV%r_$b
ze8~JtPDife^XJco_VVhQ4>>AUU#f6~OaO&%A9rUf4r}FpCew`h?u~QiePzRroUTVl
zpPNsxFF>Vgcx#}$@XSMcdx^!GSJ#f|8c6&YOl~0mD8C80KJkwCy?tBKbM*P0mmh9B
zT!mbL+<;t5Yl8)Cew%0micYs3E*dZ1{O$OL`E|1<^K7B!-{3>1u|GxZKGF((kEHpf
z5cwuYq2aRg-ynZC{qR4f$TSXvov_Y}3Rj(2{zHJ(#Otg%rEihfXa6%mI=l3h^glJO
zmVE13Bzwatdas2x{r>zly`ZBH0^eZo1=<W39ezt!-fUq^zb5_1;0^S9_+rqa-*2YM
z`+ig=fACzVd>{Spa4~1m;x`|VI$ZSl`Y}rbncr=bo6`4qh+tRr-wl1Zx9GO0^4t3j
z`SH~T8o!4o*O1rCZ$NI+K1XvXy?n2}2wE&zw0|XV?DmHKSp4|rF<S$J-<{b%koTOf
zJBpCJVg7$(@Hc_~xCNKkMese5=l5onzDKhBhk&gOE;y}nL(Iqj5OC1J{*JUw`4zb+
zb^29}8wKyZf=1hXzuEmZdvo(x;0>GTo%DP2M5uR1L2loOzBMjNR#NyqNGApgNW3Qw
zy7TSR;^W^BD;fOAOzukG<hjB~1p5PaJ?R7Zec!i&w$(*}#oNCPE3f$7H@PKETz(bu
zhkg+62m5bH-{6aVub7`aLmNJ+yybVpkKFH`!_C0^<<}rY3x6zJp9pe(Py4ODE%NKO
z0*MpL{}Y2h+`0RYTkw2E0a!0v-_vq5#C-S<0j5a_p3FBywBGz@0N2dp>u(;5-YUHc
z<PG{(v?%!7>5ceXVuO40cLx6myg7LNvLeIjH=5r8Z|)!eAxfD}g!(}I;h-(#oA__@
zH&+@Sm|T~>iVBMU5Z>1PjdgK(k#sR`QR_Fy8|q`h20Fi+CRe2I2)`S84{AfV=`P+`
zwEHdp=H4+$1BD;8!}S|ao})tr-&ee=_)zhFU~#C;V{vnlb}?<y=QsD8YsbP356?cS
zH^huM<t{4R{{IUa*#Ge-`*cAMi$329gMZ0vY0F+8s)i_Us9{;6^IC^UORm+=_@>Uz
z$BIh(wSFT^Itw1KWd7N&+Iwpu@tCP@uIKDMreE#sskhbF$G<&~88}*Vg;3r5u^<Dj
zk+E;G{c1b~QtUT5WASVOWXY5UZhWeZoWFlYPxD6Cg#^Yb{$>#Cu}mgEn-t^6418k|
zUzq8?>i{nPQ!QJdxqj`Fv*W6tciS*m5&VEPs=J`&jYBwL-)MpNOlsW?9}9}@X4Pkl
z1|vb+w|%;)y5e?~&r=AcS8FQkhoB3p%dtuA_{a!NE3PO$ezVkJhsTI7{dbu=l`Lof
zq^2)i7;Z?w2SpYXwa$K>vMqg@S#Zu7)P>wj+`DlYO$*^46*W)KJ=gEz*a&p=QzeXc
zd5y_frstiDIX#VY+hOX)xiTISB!lr)l0Z$^mV1Y!$E;)El`9+U2Ra+0OG<<X;DUgg
zt?~G&GyV<qZ&2aFd#~I8o}s++gfo>5uceH_K=Rfwym!lc{Lmh{ur;<K_x#|@d!vHi
z*&=vqp(Q272FT1qz0!g8?g>BDYK0xK+4!9Lc5AhMmk7n{&ifWZwlm}jQ}f~*GF$%1
z_&Y7eg%_aRio#Z*u$?E=YpW58@aW9`h;@!(?PO{xAu~Q^BnL7yWv`;+A`EZ594JfJ
z)-$#-NTHYmZQ5_r2~1ZCV{4~>f9y++`4aauKINA6E$cDH#HSJXcG6(&i@J{w#~4$d
z#^P6RdA$sD|NeR-TA50gAVJEIcfRzob1aZ+Sk<jp5ogO51!i~=4Ub==2Q$bD^eZu_
zS_ZR6s}iE9i=bLV!x1*meXuJ<QYqA1<XiIoGcN}g3l~kt>ZQi-I;q%$6BcjNnBPnv
zSL;)6hFtKvZbKro!KtWtoH*iKfhMxDHqzFUFcXgxI&^Fnl5KnWg*vPD<!4THA0I{E
zu1&rlQ@pRq=(~?kZZo56rEDVHsJP7{;tV3bT#tyfiU@nqB`d6OHB$G$#wQ=AUGhlJ
z2Nde%jlpAl2jnE%?3V8C-d$4LRU>d^mvR9$&*kgn(N(To#VUHfB~n#E^5|MuZW>cP
z_VBKR1nBC+gEBu0Xn1j^N0|qARoZyuWc$YRmcgc|$-Zpg*K@Dtp0x}&#Y}c@$hP!k
zS3&2@=bqC+BblS>3l)q=OK){>pvaa4?P*+^gfc|ivrFJMM(%KwgT1gzxlodU{W!@c
z7fmGUg+0^W!*IK5_@t4Vi3K;4w5^n~U$0NtajpEpgin`G@NwxO*Phs>*wO*Tfc55$
z%^OSMsPK-Y(xlJ4#yT8a=C`t|*L#dA3@RQ#YRs6+YfujtD(4@S*P}>93}`>omI0@&
zD7GcuG6+e%fuLe(8A@+S*q+v<8J^M5KK*>wcAEuhk5HYp-hRAO=Sg~G;QQIP4AJ3_
zl3oh1m)U#g@$T(UaV1GRde#7QO+pp27RhoxhnLs`ZGs~FPQ3z_f0rO{h2Fx>^`Gc2
z<aV%ZNVIOG0f|uvI%l!YJ{C6*XO_HtYe;K~cF&x4S3{GuTcrXJN1SIW&d)8bAV#QL
zhh~JTK!+I%=<OH-C4cmhw=XL$8+mZrB9E1Ns&^s1I}pk`<`n?*dbRWn5I!U!>hkBI
z>K>?R`SoDeh+3{VeeUib{iL}SZCt@fsV*%U9;)uMw&Snz1mQN}G4P*eF9;p49v{Yi
z;1~nnyIBOIa8M=mzhXO_xlvOXX!~1h13Fs&68yXR6_Gf!dr^06=+4^kran<cR>1Sh
zcleAT)51W<O3-2Rjb`mu#Y&>XJ3$kgt?atDWX3~i3n64JF?d9fe<6g9D?ec2mCVKh
z*%p|P7Q|cx(Mae33$0wi%enQ4=L8-6IQMG<oSEleT|3DTd40i|34jZ2?;u?3y`6j0
zW;Qn=Of&m8C*q*qLC)IbfN%5Lp4`E2$>(hrqk~IFAN;eZ)@}hY&M7ivlq%T)@9d($
z6G>D#-yywcmL=VKl^T{M1say&U32<UpSWR9&v)$Vd|w<M_iP1)E`y4vsyHm6Y643J
zHxIDQRf6FjG@`GpC^n_tU%F6$81z)=`X?LR`c*-1Xg0r<TbstDaixATP@Ic4$8hN%
zSz=7|Hv;JF`^2+0ro;*!43SXn`fvW^N))TD6+tl8y?t#=i;7ys^qXx8OzDaXV3N5!
z4?i7HZN=X4Cx**;a`YA0KXpPzN<V+rs!!5~Lj2Jjk@xgqtu5%ZCVj-1$foM7dc?ST
z@(_R5EV18pQV5@_J-J%?%z3X$2bJl8N`WOtf($4<4;nB>8Y03U(%KvsHQtCc5TE^V
z_ICex!?w#jO_G@Iy2iDncg^1ri&uU#{}%ZD<n7h7o09gU*mr!dzK>On#|@BGG8)_(
zB+?Hu2AIr$N2n7=9map?dv*(XZ6{OQd&6po>G$=wUHKD4Z10$!()QoD^X)~Yh{4sw
zd0*!M5ofWgW-lZ4fC-*?@g?}YkA?m&X@}GNYRAreLI=aVPzNm{c5-G$ZEM*S%!PA$
zj5~B<!W}qO^z0_?`X{}O^dheM)(o4R^8GT|>HGO@+0o}r+Kaoqd3z~}%)BrK#Ve6P
zJX9BR241Kj^6E_kuqQihALpc~UQbs|^W=5cUggp-bsOzT9pT8if&5X!($6&w(I*r2
zPz8qzbj8rCqjw5-^g<4ozfZb?(>MezeTPe%-ji3+8aksw$ZL?LjLo5kP}VI9;dl3}
zf+ov!G=nR(#;!tlQ8@fWozX>fS^Ws^N%3tq8)USN2ibUa;5OXTU5Y}t@_MmasE+ql
z9Zju5&+A1t!G*#$FX{Vp5!J8dthI%DvuH*$?Uad%zczZp&mf}h7dYsCb=uSuPa@iZ
zu9r3&TOmHU`l`u5CWR_~;fQ<C`l^QxEFft8sQs|RYfuG^V6~&(yX9{xZzSJRivFKp
zv3FtQ<6E^ZVW;c9`b@mPR$Ia*e*4USOFL#m#xX9jt4C8mZ5|aVP08c{lBWC55BVh^
z<&gsCv+Iq+s@eMTB8tvY^W^?d@dj!ZYMyGX$&Emf_qy(_@WYOq7H$^J9TeS(oqAn^
zpUc8cDSY_{!}=mN875?$<Yqe>#$7g->N@DdB&c^oi96685Js6N0UBrcV@Ew_d$N;*
zhnwzc$->vBxom5S2f99%-y)C{lhm1zc=hzFQkYbWS4q0qF3opXhC<`2<8H_LuqUwT
zvgoo8fQ?dXnJ~{rrk;6zg?#0#WcjV|3bN?#s^<DcOr-H?BTJ)XBWEL9qjV!vBZs&4
z{@}{B9>rL2K}YUKEm!T^+A3PT+QnLSS{vFlTB%yXd0T2?UtC#M-R;!uo(PG+pTb$-
zl5kEq8;}o|3C`i6y)ig;tw>P|Ok}yf`I1LW_ZGF5ZY7%mm}iV^mTZ<<@_{6YWCleX
zMYglSCtFtARa;$KA=^XSdsu><_Vi%wHCx3IjS!0$SudRmpX!is66=1ldvTZ*{8Ib1
z_G{?+vvs9)cONyMCsHDarwA5=B!UychLA=uAvpZC@q^fF7{w7Vw8QEnzpKD)0TupU
zfnt6;{tW>d{#1Tp>#cs#FD@+0?lZ}CS#^z$cV-f6xt)#2>u$PzJ3-&qnHizfX1I}a
z>!*pJLz1%0Vn@=ngv)YRrR5LvY+uE-yc;nmKXYP$5|WP(498=<2NYvY(r;4GlPB^v
zf*hKosUv+KA53hgkVU2>eg+B8&u(_8dt;ki_S9O<=u@1VrMU`PFC=c9bT*r})@gNn
zWgPQFOLjM({E*UF)hdjId)1xo(6R%GQnt#L9k%Fm$G3cn7lU5!MCVgWMGjcGO<k?~
z$PFzqV79lRowTXT*tR&Ge2$}*$d4``*4${A3vES<+h9ahy6xyiBwW1GqkK+x$i;Wu
zmKd*!Ct@1Z6cPU5?5H3Qlk8<4c4UFfwlDDd=OOO&y<jkZyg0tt<i>chonHG|jZa;?
zP^D05D56ccs?33Xru}|p^wdMo55=S+77=pHR#vo)3hy;vV}(^BwEPwPiEubzjzjw6
zWeWD4QT--oWE6YGae*W~<@#|9=@E3Z@Mt0MN9gV*`UE+DL1@>ItVD%g=>F;;#_ln4
zc`U)C#0OC>^`yjW8-+t&FJZgwSHzLOI-;?Mfr7H#1dX%Z9dY6Hx5BQ10d$mN*%ygH
zlJ}VfDiSo&TX_|0&d~I?TesK)vSbL96Ptw<YvKAHv-!)m><qj=tK_<;6Av&A(zrf9
zdUgxO(;40SCuWqc%@)AzVB`fvtGnTbm)BJZ((HN?d%FY=$&HRU{7#^5;qp!P%n>kV
z^Ey3cy)d*D1-(#^sc}BsT-a%!pQsWmjRJy~Cspba5xuAyuSsDX&rF~6tB^@e&)5t;
zNrm)>Px&M0a^i+N*KNsYuSM`%#%tQD@!3$hMTlEgRrMR#mI|2(p=fuhW+J?RNPeO&
zrsYDH5z%%j$ta??H-~;@yrrCvqjZzv(b!Bm%{adf<<B^de$1XZ4*Q*cz#=yAM6R9M
zD_sJd=qoNdEHN7@jUIHp@L^XF^Ga8gIQZE8)?IS3!vN~H-{8aEr7u3r>1jcWZoRj7
zOPW4oZ-CdOm>uk{@BrNVbGV33^5tfS6;%2lUX=bwoNv77`|LS7*;8#Zclj23u&@~4
zTuQ5Cd!utpSpckV@Xuc<yP{QdB=pgue5#CrMdv0{8lP5@FsE-)kb`tkhu?k88|!1_
z^JWXJAS`<GYrU7~W=E7p-df{e|B`;9V!!b`hk(WW{+XS=8M;?rq4d4vMP%i6JcKl&
z|Bi}LzudfG^!q`dyY8MDIS1#7-R`!i;iBlXX_~EN)>h)!cCS|__``8=aS+jNF$_8}
zFFxo*Xecjn9~(j#M?}es4@R^Q&*{mVxz*E`^*hWnt13$Q_^gA6m(zX}yqqLu`?X^A
z;FDLdWBoy>`3&axdvRsD_W5(G08=Nc`DQkL-uc1ooObDfKlaI;elnnUmA&v?Q!u1{
z)X$lWrd}cq_oYWtVa^^XFKM}<E-k3XqU>QQZT^sqpY}(NVNgBhM8LvyB_Wc_eb>9W
zrg~p<j(NAOFrnPfYXwT<5hj0X<UQhb-JNSpGy1y(3iFo6#^+a<0#re|q{^#NfgK?n
z@QxG>6{|9Lo8&X=g7sMp^O>XHZof6qn1RU9h&9c-qCzX1E1yFSgM(u94{&R!t~p-x
z#(HU-Uro7Fnm(K#k0D$z&x9Hu9y*{k&bCD~W~HR|59ofJKP-{BaQ0V}@hpu9%(h1}
znYzi0+jl~n)(EW66-`NrHyh9NP5Y#If9@G{%w<h^xkr*-prYlwgXg+i2Nce)O`M3B
zT1I0U1JowQc(G5U%O}d0LFvbN<s6WW)U#EnhU6YFLRzU?->_C@%T9x>X+NbwoY6n*
zftVc+=#`IJ=2!_@AFq*a=e{)26c#AZ9lBr>ut1G0`{@!*+Byn5j6fz`G-!7tVwiUw
zoR5A;l<2S3+<D0yuxOS!&hW-FB+7?g8j300-D|X?r^FO)?lzWvX3H24)sW|lY<xIj
zOH)y2z^rB&5;f?XDycFNLN*~JVNB}5g>pegZF;!hofEWl=NfUj8IGgsk3K@YjvB1<
zq0c}=eUhV2#Kpm#*bVTn?PyTMEngo5ub;jP4p4?w9GSE1!j9+np!=GGyt+U^PY-@d
zXnZIzi6!=uf(jVHn0#pJSn3)wQAi0fMV*ZXo$dkg4f}{&m`QLqM!bB?r8&yyV)APg
z!XrI<`8NH+_;8A|jY(n@YgzfWO*%5k1<%msI5zBZOF;TcH#}Y5ro~b_Kd+);z=EAk
zG-s}b<#~5!d6<>ieiiBHKC@(-8YIY&jL%7cPEl}X13KlYm~5$;Y1_E3QSSE+1Y7D&
zYS{NEpFKg-Je-Ixswm1}px<t)pDi#giV_kpx3y-JqL>yF8tJb#+KEdju}q0_GoDh6
zPT-Q#tB$IlMQf>c?}+QwR)fo;DmEHg6a29ay@SIpZ~FYJ4?q7vO(Y<468zoio4CGO
zYJN0KPSRCa+n!J;-Cp}q`oquN(kcM`{)gXI&kw&@)Q=W^8GhIU(iAYwYOj~#nl`_Q
zx4)IN$1|${FLkScA^eZCdCM3#OPf593|Y!hafD<5D(go}zV!F(fzyd#YNojbZ@y$-
z%7f;|2Pd5mdF-Uq=~H<7Klf91Htq|=05P)WyWoj~AFrt}M`+!0$uo%%AP3m$VYy!s
z$obD2rru52@|JoKZ2i(ChvjF_tj?dft!|s1{Go5Q-K+ocBqqbzWi^EP2$H_o+uXE2
zT;4L6Akw%$7jxviSM=kI4?Ov{>fnh!!@;$gi>cY8_T6qI?@?`k5}CqUw7xvUg<KE_
zvfP_ya^j<pq_%PYbq02b?1!njuLhZ%@aqRW**{a2XxR7DH(T!wH$C~PL}VoXJ;6C@
z_M(VRf4(Qd%Vkx{v~iOFyIm2jGnC00-mh<^AiWU0X}o5BL9f#1_XWhb+FQ`DPot0g
zkx=nwRlVFV4zz&jC2rVnFF(_<I#2ITATsfe0_`pV6L_b9D%@8EOuREdkhR{4Cg76&
z(m)H#y)v$=-6kg~Km4pCK*UY^xbj&K89kimYF_y)Zi$NKgnsgsQ3Y43+X40RiQm(-
z?umVws`0ghwF8F=XfRqHr?~5jln<sB5VR@X3s3%36<o#4!&J_@OX}r2%NYRiv-Tsu
zus&-!?(|FREPI0N#!ur@TZbZ!@8MdFS7s<*6J)%{nuvTt;O9-N@DY`3aLVbccA&zt
zth#I4I^l^){jsFl8XKNC3)RRMv~zZ8$<uyW^cqqw$Qym`CAN9o`E`QWfzHIij9~8a
z#LO@A=Px$nU8LX^wP7fuH!fY+h#QW?A#hU9zJ5FSs&!Pu&td^6<h8wfTv?q>?V-3r
zT~KN*q?xYv!@+=9lj)FW&@{JQJ$x>O3pO_k9SXBA6N3(^^l*-pVJ&JFSnWR!^atS<
ztkvoDO<t?hPnf<o_LzCT{i>V35&Y8FV|58M;XeD^WR_#I80T&JQ{_NdYsSNa9*#fD
zKKq5$kC)j<#Z9DF83$-SFZ?P45BtDzV>}~h>~>RWE^5|#8D5Zq63UrrWAOMyxE+0D
zqT*;>k%AD$O?%0HaLS@}b$ar|NY2rFIBWisKj&~1IW#MQl6R9f$M{{fYgo{idmFy&
z@MPp6A!?qi$###M)@kbLSM;}S|0pqEZMu~$k4+WdR^zmr6Zg&d->yDb_#$4r#w76*
zcTY@kMbHIeOJp~Zw8JYUT8sW^I;N56n2$&e@t{E!)n2RmxuXf9(c^dMs0{L?-J#A5
zN4dSdML4806K=71OYO)@johpIJ`?6NBfEY4xv>@&QfJ=xnb6*+fMXC_#H~rVDmYV#
z_?rwgG!>C+i)d_$J9eCimIW9Q=57h(4-{rJI<G0#@I%Q5I8$_mODs^NHK_h+Vf%?v
zLXC8qhpT7**0-&#sgoM70qFqPF0$<?66uWhk34cLx;5@zWN1{Aw}vHb?p`=(bfu4o
zCAe*%OZ^|My<Z|i_0#j!{}0-}0ywT6?K0+=?U*^XV`hpWW{jDcnVF&On3-c{W@cvQ
zn3<WG?d`lbGyj_(c4ud6t4^Ih_xM(~tEIk@K7Epm&X$@|_RrGY-LzI(%dgG$Ewg`3
z);S4UDxQWd?bel;H*g=gRv!C?;%i)Qd_zo6CSd8X@mzdSyuRl_bt}BeQbas0uQ{?i
z8a_6fxAa=Lwi)W7!e49nY{hqdKU2&b>V_(7iGI?yaKcf&aniS^5Otp9{)=myXg`?g
zmwFk;K9#geXel17J?+;P4r=Pgh16!9`N^3=Cw5C|8N9PKXC%O<0?6g)BTF-;*?IXP
z>Rp4+=lo;20AEAAhU_;;&;r^yDL{hRseU25`z&b<taGGRojJqZsg?D>@e{%?SFoG%
zZ-r(xyw0gKbd^49>^kS6j@e#R#{v{<=UW^$x+Iko)74MMO9W`Lmt;p~UJo8=4HLf7
zZ2?aO<I4PQ_}u%hi*-XqJW>Gr^c+o;BG4si%j3r*m(5_g@R6Uep(n(&+}jby=;$=m
z+1SSCiek&jH6a}3=Io?}2<U!_GfGDmE}E9A@{YUXT_$$LCex2krt^+&{%el9qVbVh
zstJoL_J@^HSZL!M0pHD)_CBf=Q8MOhs{n3_Ka~y@Ha3E?=ls%Iu5|WqgThORV_04D
zQ8uA_zSWWZeE#x%ELCzjgeiY{ASY6pt~_Uxst7=%!ZJ~jf}uQq=-^oH$f%b$I(@9q
zGAFFTWl4~=p0?)o-M;@e$^5{L=&T(uf8yR+N$$~~-Z3yPQG1@xB*$SjMwz$ICq3Pc
zk~EfOebEZItAS3LrK;XKs5wGImri(s6=y`GrM69eMQ}Q49QUMjn!qx3(onJ6-C7|_
z<uUdj0f3gssnjU589VkoJ-jbg<_FZpyDv~#x=d4@`OjT_EUkT4=uvygS$;%&eolUt
zT0HIMc;kYndXBWJ3@2DzafXWcG^Yk!m?W-JGthRO``$EnHOk}R$WzXKzvz@;Fjrt_
zV`=M}*<#7%bZkHBnJ1lR$uSrKUtWjz-8x4YvTmiGbYHPl!kJ@?doLcoUbQO=@)i%A
zry9>p##SjqzdkK$EVTi%#dXjcCJ?U{zJI*-@MZ>ps45fv3ZoGifs>CDW{kKJbl0a8
zIabQH1YF6Csu<d=>wi%WXlB`t<5+HvVnL*;J&suu4j;7~io&bU+H4fCVKKX?)x2O|
zny;@3ZU36vbe`5oynENyXc=iw_N1_NJ&E>BS#1eqzkdBN3P8KxTHds<6&w)h+e$0d
z-#8V}UZ*Lvjt;vBPo1#(ohD<oJD}S9!Wtf<I{JimE>_YYR25piJ9%N%0%ciZ5#3C>
zI?aMWefUn^-TO5OFsxM5F^LryZIxTYC7f@I=01U`180zd*??_$BA>H@*~iV=kEy@F
zpkFFG)J~s|IlZtRo`FTRK#}9EHmD*>v#KIQ(<37sJ2khU_p)XpvaSppR^p1WHb%bT
z-#U3PT(QrJx#~ioWpT6d>cX?lv6iu}ce4Zb$eR;{xG4~h^Jv4}O}^J~y&RtMfXUr|
zFhTX`vTeleElqE=8T-Jj|Dj@!DO`>_g^t;3JMv;64En{keI>D5`NB9H>jwVOQJ>T+
z_PxJwyJPn`%=p3cEtv2@`*FWN<ptJrWua60q9Q!}Mg1+UDk+00>5?ioCI8ZV+PWX7
zgJC%_xWC1y6ArUw43){?rK@#j^y^&```&K9=QT`Cj&0|OftKORV(U`t(!*qHKQ%o!
zV@slDc;p!WHOIDmO@eFNB?fQ{D#kanyRYszBBOdW3lA%}CTnK6EF+`H{TN0~?Bi^v
zQVa#y#$#so=*D}v_6YY$zzvU9tZ7*@Hf4=!7Dx3*Z};5r&D$;8$F@hc6Fc@U_h_%B
zIZZq*JjZLs<oDRuhPH22T1&__4m(3RfuWZN`U$uRe(n|dbJtL1*RO70uXoeeT|Fl<
z?oTc~hLznB+{Z6(*D$T&yykKC!?!!GNnKDLY0ur)fSZ}L61ebeJ-21J@N9bBdG5W2
z5!~S4y~TMQyso&XzBk<a-Gje}-cy~=zf|6<pEtbNpF6LeKggc*cxb(`W~>`u%D01S
zgYq1U-;i9}w`bB#GXoNyI8qqe%>nbtmVi|c)}*9%bwJN(3BdVbFGUmJ*bcErzE0dO
zGRDw80EkRMYbOJUkJ+{t0Hjm40TT~O$<B{T&q^us9(0ddj0I0xcWo9@*KJ$w)2+)5
zUH1{}%l8EBWqX|KPV3fVfgbON&pD5k=hE%3dvfa_>mc??=b7gM*QV>*9wMX09@<ai
zi4%{&jo!M??~Rir-|pUM_r7`|deL2Tc|~^&uAHB5cMN%~Yi|)4;NKu#A~Nt?0uTKe
z6?ofx+uSR7vwO$9W_oAy%5$CJ8R8k@+{-x0u=L!lxSU{l->kUhIoN!Ic=N}P>{xp*
z9N70->F7q;wZ33=`2^h7kcvz6P4Nwb6Xad(T}?XV9qs-7GWW^r^j%sS>Yd=_nN#`s
zeZ;HVzU)2sz1BGMJ?uTTfVvo<;64#lh#=dP9xdxCtL!c;<QROkg@rduTs+A{TD<>$
zVYRm@t8m!Cv#MBB?x0+Co;mr0oHE-dd&`G|v9S-W&#+cV0~-z5Krw#uBV~%u=fN<X
z!bb0<?Cf8V!JxW<4xgsQzVlB@szZx@cMPdaeHMLZ<nH)(-!#$ozVbXUa8zDw|J1sE
z{@h+b*>j*=6nP+ULwJ<)ME^?a_|r4gGxW(XJ!d_iyJ$TRQCZ~p{_wtN;vn)!x={bd
z_;!Eh@(Fk-7l&*{zO+2qA=9nukpZCmE#%3ETRNjcY98Y-bSCLZ4^Wj{LN~2kTyqn7
z!*Vq8RPa=ARPv+-DC3Z>n2s#Ec2sYe^>5Dkc9d-qeJZCtqEw^kXj@OVTtYkawfbAJ
zwUP7qS!wz3Su!BMnWII-3DGh9p7#9pXkhIJYo_NR-Y#CA=PuwEjzZ5`L92ApaodE;
zK;gQ}fZIUvx+|F*Suswle4G62c^jRZaUqY(z8jCc*VUeDL$R&(%yWy{Dc44LiRrnm
zHpXpjMZ$SqDL(MH%KK{cr}j&s>b1MmyIDhkflHW_>T>vX7*6$@$&(kJ0eioEzY5JV
zrZHzl9WyC*Y~9y>1^wc=HJ2$D(PN!f3+kPz3zlt`Qw#m7%K)c{s!<o^Zxb%-F4`?K
zDwZDk@Qia<+U5db*5L%TS^dKLIZic~v6rz<p}?Ici&xD~=<iH>!ufM#+$YHy#cI7U
z^MsSo>4(FyPi?moH%(B&g|~C>vTc`8m*A!?o9k5b&CJvWXC&oQ^y?YFnOu)a8If5A
zFZP|}x9O&v-p#EsKPLie8^*Bq;7;+F<~>B+=RFoRG66d6R<u*xED6aYwRL+i_WpPN
zO}{jX0H$vv9@5Xl8it;^faUJhZ2vp`(62NcX3J_0mbL-)EkXjJ!j>768m`p}O^R=Y
za2Pak$lWsiLuw>MkX7e9LtGxA#@wpIHm=_rAFO?CuGcMxKQ@Ux^cGy@4knOkf=tcb
z1~pEz$T>K1QNEnulxa!_&#kaWeXEd7kLQ8LxK@CPbB8~(9BTs}0n2pV*Hn@$==R-V
z+l{UqasLTR<GfG9m?0r!ib{0?WOI93xwN6~is(3zw8OAXnLO@FayP0`CO9-S&W}x+
zo#>vjDBp{v|HM79jla;tj*3_+Lx;the%gpZwbo$50zx^cU5`F2#=TGff-Nio`m(hY
z14V~O!e@wH2ve_kg-q)QhAy^5AkwyRk2pQlUiZiaOe@T_4z~r;e3gJU87_AQB*jxR
zc;ki>!-6B!3bb?ADiUf#lPB70Fk9gYak&CMQu7r(CykbpQ4mv{#*_ebFw?B_4)-l^
z8|%B^_9IVnKXOz)hM%3*GB6AecyCC68nvM|RjA$eQXc<k!^<WZvmI_4@s-@$T{hmE
zS=!x)+LaP6F#QeH#Lp;8g1k8Jmdv$N`JhWC$GtkIun*|iy*d+3*)98=E-E*-;5uJ8
zp|*8kM*TE+i6_i2I9kEZgO52g>`Hyi3cb||eIa=TUS%;MBD=t+xYUEX7EcB5CC>0k
zE83EzMQqymYRSxd3@j5Zjs@y9#p}n2md}Wmg<~vPV=M(4-B}*(yzL@23RkEKV)zoG
zSjCeFGX-}7#YkMyF+%JTaXE?b2X__;&z>}E-%2R)KfS&$zw{(}5nZo$zW6pid+vGq
zHgy=zeAv_KU!h7m7ujnOsnv<k8MXVVs>U#~ILa8H`otveWyBt-I&KsPm3WA2gxyDt
z!PJv1k-Pj*E9IaUk&(Dfw#PPbTltdi`ouKRGs+a@dZw3duEE!o()834KXQ)w2zFgG
z${HQVHJ)mzsv5MoM}bzIK8r>!T6`OHP>`EURnJnBK2pkOgx6cjN^fp$#2L7F$7IJ7
z=S(GwfYH8(U>_p&YerQmD5|#C!UcM-Q^N&I%Uf9&e>4#EFzB=r%&D7p0p4AQ?!@<1
z=A$gRH%~4qR3;n(Kf3~N-U=-OAMTNX1a8jwaaRB{^A7>%Z{xSZY#?NtsHsLYa%!|7
z<r2!J3TI?J_&-JB0@)yUWF0eVXa0C6A3bvK^-NT~i*GL=qKAbdpCP<_AQWZbMY15x
zvJfKpxGK?anZGx2m4vUHVG-d?z}uj#z_BxKHl=LaG-ezlb_!fn)^dViLQC78vPW!h
zxN=JatF`|*on7h>1IFHkEA57_G4jAXTRVdI!wV#}zu^Vxbw|(R{bOtLM8=gXUWV5P
z&Z~`Rs7OwionX<!N4$$cUlDxHD_jE!c7+f4t`UQYWDs7TLLn6GA`7r1?8*X~%(D=V
z9wVI7nFk=-x1-<4!+ZuVM#j`-TSmw8g8X;RZ0s6M?}xXR_dQyItyyDsABU}M(`{_O
z(!2>9^$(6>CSegX=^Ge@jfO=hF)%XyX*!b)G6zc7|AmM`!$e~lOc_Zf`*R=LI6dj|
zUjz&&B0Ik`9>}VS&h-u^W2&MMo9h`!hLr|KvoKVX3jc@6mefDQER}D|5D?0cD!#1-
zH?P+i*I&de)n`KzfWx5REVIhz2sMib6tnz_utL-1$--02l>IUc;UNqPVOe_A@>O}=
zzVY*NLmcks!gp)8!}xbgZNQU3zhVL81sfASjxas74>m}790#=5Bxb3E>15p0NIxx-
zy`IE+-ih)&=VkzYO>iF?|6xDoi7!&Q*C^lR8^IPW@|)F1CDRlbS(?q||BddZzs^{s
zCWp({*qVKn8ry1UOaj<{c2tu}i<d3foiR;fl)I6|_b=$PxSKjV$yr?#X{mO8TKx8U
zlID3Q#p7O((KbD?c4&NlQ}Y+Q4zmD#dqyu+jXL+v!mK<hnJRa0>%`Xcj*aIzCF6B$
zqJ6JGY3sz&^R9kvMlAJpO!^HY=G}kCi||qV`&&Zn`|eJM<lFLzm*v9yQq;SxU3*k&
z!_Xs}duGP##Khaa@%uIFZcC}aF-Q6Y`f!4c4(4lXswX!HS-@s5lt!9#{d(rfwrH_T
zx>B~DL4O;jbAp{R^tU~J_B3l^td_{CXZCM?Rj^ns{#C3D^-;F>&}B^#XS?I%&ggdg
zl1cj|`KgcOOw;-r9RbHJjat38U86TJ${jlS$B9Khl4wU)-qrWmFM0PmOgA0tP**kY
zd!{eoIAQfS*)gFedP+`i$~0ZOca)77o(=XE<AJ?sWd{XMqy+Mmiw^!9z4`Xgg5Iwu
zE1E81CwX5E;Y3vULhQXl#1|$8h9tudI++Y7^10G3r9*KRyUxh=36NMR5e?JZtx#!H
zRF#$H;^G_)4K-E&vy48)WDodFq)fjIa)-XhMw1dt3MYp#W0^AkHU_!FT7#kin69!$
zxn19Vqalgmg|Wk!F-_@z=>Ux!*PYJ2Xt3ZN5L?=e@i7zJaZY09OeHvf>%eatQjM@@
z=vwKkt(+~cu1?oiCwsfD!y~co=_VtI%PASmS4{YEq5Sjg)!nlg<Nnth9tThuyk3n+
zv_7G_AK?7NH{>wE6S{V7Am9S1HYppi%e@J0Xn;pW_N;F}V#0U@>e>*mfV1|{*ih|s
zT3(=+`gwIPUm&!?o_9T0!YK7XT@ZSJn{VhpfOGp#Y}l*79&f-td}{Zh_kcfkRU6rE
z6pe583>b?-?C7jWT_?&ZFRO%y(fM`~6{z`57vp3PddqW72|vbtM%yLk0j<7MX#o<V
z63?kq3QN(s%L;4EjE1UuiO>Du16~%2Lp<6NkqU@OW*ZHnIl*wwl1L>acYySU`MCAo
z;B@{SY{vayVSUE4_(N(uS~}B)!~p_VCtakQ8$aCvyfGgE)@>^M{-B(+_Gb*v9UrK5
zE{toyhk3}6o^&eqHHye1E7dHjOn!8e4G_HQE?92*PCxX?Pii2SN0ym1NDWde9Ja^3
zWhg-5hH(J1`s4PvRNMHK<9Pmc62*<rnho};GCy=z7w|!YHs=YAKG9x4hx`Q(f3H0n
zmtcPhW##@0xGuBA#u9TP0+S9Y_0|jJ*?Z9Q{Gi;ce!CZ_V``0|P(5rAOG{ap5sHYD
zyDM7@6#I=2tfNNZHa{N5QKQU&KL_oMEkpMoFIizFaT1Mc0yrkHr<q(1KO!cfIRr4$
zRVVz;Cc$3*{vUNN+8|gj0yZ_+5XS>OZ9r}UVK<2yF(Es78^LM)`E0N>5R^N08b6i$
zlx$*Sg3fn4+Hk$VTm8toaK?mW?UuA*S^;g~M_7Su7!fG{v$6$jmOkS*VhDEv=p~h!
z@_XPCp_}Mo`RQ@AeAwwRv>?}5H7bT6=Z`Bf<2!LGQRBN(F3`E`NM2C>afXLtB{ugD
zL~p#wx<86f{sE3Vu#UIFamrj%yIUD4pn@<`s~!4pwFZ3wW;ydieUFz@^yU?E^UcRQ
z?|6qdszoTZU#}Ip=I4rsE|hrEdD}$}oN*Bazb+Lx(!~bk|HE{oIVb;1o!tDUnrHRn
zd=u&c`71xTrw``>I8Tq!U|?Fe46wfG8q}e$l{$4N%;IzKiU2oN_m@tgE2)L}^$Y#d
z6)PiQ#IN3m3mTDe^+dBAIrI)>UZti#nPskYDzDD*D(Vixqpyyh*|EvG@m+n~a^va#
z0&Lw2e6FZ!T;hJY`yRC1a=+2n{&&3(;Od^dyIyWxHU&Z`l`0-SNlJBi$t7d@Q`l~r
zP|d^WbY1^+ofE2y@zkFHHv0=vr1g-lgVX#<u4?>LCh%znz6DGU-sO|<<49T)Nt1YP
zyac)~;{o=WbQ--)q3j4BoKz88j=dZ;bq}mIr_p2xVVN&}AS`Y`5Mb)?!<s;sWwHP_
zo1c_&xxJeN;ov7bfYZ#RasZnvs*y@_JSvsH7mz-HXxpS_Q&&3Nzl?C=zVU^97?1Vw
zM9z3$4TidU{PWq-YYVZ`y|3<lukre|f0g$7_IE{*{(68|Gd|FC&eOtt-okO-^7JLK
zANzN88G5a_Sf269H>cZfOm$W6RImKRt=G<SaZdY2v40`cfaT8r)d1F&e7UbChPKS&
zX7tX^V(hWLd(gqjsqiEs^%y+O+cR~w?C?BBGH&ffgC!g$+$ep@^X>Qrb6k4p1uyT=
zwM5OJDR2lXPJP!XU8+seYk5m8j%^)~CD8=c{kah`V5sd3XV>X|%!W#Ow`Uh5oz`>z
zaLf7pW7DcT&uARQ`QLl{)F0M%TSGTkT=39)KDmI!cQd-6#P`6sz$$g~Y-(S81$L{u
z-7mOHeP$UAQ_1A{b@NQ`KduE2Tq1BK-Y%D}J82Vc|K^EHG}SZDIOhZ?L7pdNp0ky+
zHu3&8=N_($&zzJaZ8@8!m|*&wu8CBZdNsjgq+e4OEdE^qU>&ksAG3j7fnm47SwV0f
zw9{+2w27kb&%!$ki?lP}qYGRO2Ef}^*z$ayZx-odx(FE+@NLb%x7O1ZI57_bz*kie
z-f`+p5dVX&rQ*%o<ToG&{S$W7=HdpLuT+%rkB9X&T}!DV9e1nBIc;eWz->PdE>QyM
z341Wpjj=G@F}^D1lagFE9FJy27@K8HOCsBJ#%f=0+S}Oq!=r&R*P`OYk(i1mbP1KN
zBS~qw-)!851d_228%l4|=W%db(jX?jROqdL#{wlGm+|>e#KdRIMF}oL_yc1ZNCe9(
zJ-t|h83H%#V_w#2^Do>0T1p3Ae~`jS5Hv{U_qYe{)};XD<qI<$ElYuL+?heXzt9IW
za2ets*dQ|>Glf5}fEFV2hW|U3oeVJ)%YP!!ZUNdElq$a73Y1GhA}ayE>0q0fgD~O8
zgV@NgLMHNl2$qwX@X85DUfh@aD1Q?2B?hwB->E8sXim15BSb|6`IuY}PpC8}$PrbR
zitlmC>!!tRY61YoWd#m?XrFUvE8R8Sxl;PDq1|SM&7~i(a^}vL??Ko7X9Km<P5rU!
z_rT{v+mwj)%@hvcMwsBgNDRP@5CLFHMEhpyAJQTkUh87&I+??rvc@R|J5qkz){Ha4
zO7i>=(AXTg6fWOlYsM;d+F!KFX5OIMGPYznX9c{mZn<>T==AHqZ&@Fy67N_Swt@Mx
zzRuPp6H%gIpvWd3qiI-ohQ~JAeqxofv&OnVS~<><YZY_@iQ6Jsf=zyhyrDu!>&=Q4
z#3CK0mkkJJl=!Ke4ToZwNZ#}RV4)`<iGH-M-x^bLmT~CGC=<LON3%(V`HnJVL3FtA
zl8_W3>6Jtn!<zDz?C-38X+^bW+1FC$(hyh3FNj7|j3nzHL@B61m<@xh81(;O&0Gda
z;Asn^wxqnX7G#yWL6^LVJp?(EU7mfJOY5CYPh7G$q_{l!lAhLE6YJviX+kQiiEQIo
z&~=4N6yIrrln#B+?EY7NN3DH5Fiw!~ANr1u0cavVO_vas@Lps*N+))>*ASja5WQ#A
zZB7_LIYYbhi`-Wym}qGKTmK7@OBeN?6Ed;~<>Gh$hZ91&hlw6C-M{JrH_Z3)f>Yv0
zFg-MB4{9Q%w856CL0;UMDI*_s;EMHNj@8;t@9UYZ!Lv(Z=i-ncJA~07*I7~&Y>iI6
z$$2{Qd=rN4y7^V+v!e=}xK7gwuLq8YRZ~yF4;a-<ZzzXBNV<p44=8H9;wBJfS@5;~
zPLqFY)U#k6;$}@$!UO(^PFwiTF5&;jPH-4e#K4BF3uwCE=dgf+4O17${>~bD^mJca
zdi?Z2XnJJQE`vl+`CZ7Y7<MQbTOP{zmV_ZSJJb47VrlH&)5eVrA78L=w#lEmyC-a>
zPN~e!xw4CVhJkpbV+gTEfuc1%xr@5LPUuZ%oMqPe08qDh|F@z8`4&g^pJ{RT*NL5}
zQxkKGMzSXD7;S=4f_TkHp6ooICX^%IjHArIF3hZm7FQKQrzaga7P-`Gc~8Y=%6U(7
z^r*2#CfWG&$(rn`)ReOw^V})d3x<fpiixjj7}tq@Q+J^J15#JuNA8(sjA0rDUIsK7
z2?$hqkiMB;2yQ(UE~tGu<oH4t<US(EoFN;s;E_Zws9iZ9|6NOrv$!|spD34~nzA?h
z|4iN6AMr&l*n9?%IU_b~!6S)XaJ#n2@kK7#LIz|xBerZ&BXeAE`~C%sD9G0qH*9-@
z;pGhrBXUcFV*EAOewIx+{11AEeDm^mM?X_Nb4^wMF&(<I&z9KR^#y^{mOj{5kxfNB
z-J-XTQG>ci2o{4zqt<4s`wtPet%r-T-H18R$41+4%McN2tMRW|axAop+y4T^_=}^{
zsx}&I{zJ%N(Z+558<f<Dl<=$Z=eWYQSCdR6Y+a*FD3~d(iJNt?(5l)@**{1!#|qnV
zx-dm}mH8-NmNmTDbmm{Rq-c(2vj3Sv><{6{fGF||eO)<D7eT!aCaQ7crt{rBxu;ra
zXt`3DhadmJl=bcA1J8}0?8-GJCxUcmY$wVWHP%c=uz!hy$fh`g=R}n(s`NrBzso{U
z6n_>%%Vm6eZvmZr^&0X>-&mFOT6|bHcK^f^^AOz|`Ni|gC2=r;=*#ylk$=&Gph2yb
zndIk#{ksS?`z{MlQA{Yrl3N&nIvbUZEvFz5^52<9@4&yY{p`*{MaZ)u_ZOhR72A}7
z3H(1>hIbFiqwg@T6k4h-hEtZ*&62pMG_}^h7WnmH!)ci7C;zWRBZY7%CXHTg&=k@C
zEUs8~yTKDb#{Tdi{(aL_h?d3s1dBla*ocB#a(eO`&+NyEGZa_h-Lao$Ood;=&8P}~
zEy<f|MPDn6Bz0PG!slOWai^@i3C%?<vaFoSq_CWf--b1R@Si5vcwbLXHXA&{u5Jl9
zDJN_(A3RHbmtM^eI4L1~HXCfmuCDmIOnxtr7Lv54LJ+fjJZ{U=A|Knw)!-lu$gu=j
zLf_CvdsED^oKBIXkTS@!1_huby)^`#TVF&}{v^xWO;smEIY{Q62X7{wWbrPCc96_8
z2WdwC_laFmNJ=qUUU5eO?Ju&KY?90S4BA0D(;ajb<shB+9{gXj{3<BM|IsuV66IW8
z?upq5s^7a!b+rYPjb{vvjM?S8hiYtd_uB{1U^GRJaKWU>9}X;=do@X6k#Bpwn(w*`
zQtfK#GQX#E=OV|p*jTV!m-}ZF{TQpBOq0%k2UUL<E5mIV0cH+bH~YV+{nSVPB2@qU
zG0yBdEM-r$5Cq$>jA)0i4~)ZM@3f<%RDm{T;3qKhq(L-2tfQ(6o@>ZS>WnQ7!qx2(
zzpaABln&<Ra|t?Nidz6SF)93Ufgv1%R}nk3vE9%9hI?DGoi5Oealp)V<stELz6;|j
z@sh-&uZe!0)#eMSKH~meH#hm7J9O{E%QxJec1qVtHc0rZ%ta}sl+!G*3n!B+CzHFq
z7n7#xouoAb%{>iOYuc!R(Y#7fr6Dt0`I_Rqhn-9_hGL~GGqmD#!C8SqHJ{?XLN_?Y
zP}w?6mgz#(z+^{q)xenF1Z)$ggoSX>EKy7OyW~)*g}d}nsfB(MU)QJKD&}3L5*4CE
zrV{2ifkTMP{{1pkwgTq1SY|?)3um`jW>lB~r_bVNwd}BP5#`Tffg+CohPI6I#AJ(M
z^8R)o$JF#|ut!&$mZ!HIvfTwZ3?PWos~K^SY_JCUjQ9$#`WfGuOL}QwcXns7B82D~
zO_Ejtjy=F4lJYcH`;Zo2c|2w!_K_<NcE_=>KIDWzY`jdNJbpUPd>3r&oufpeNx8iw
zEGj21b7kS?JR#`F-R&2tQ}9@&&|4QBet#s`i(aZWTX!kTs7hCuNKszb%rC`OWKSRc
zlpQT$mf4XAiSRFdNnvXPgO*{Oy-QoAV*_yhNp6_ruvkr^R{Ar#!hoKj`Y`hS`(ei0
z5p~D>fEM|J*M~K2e4QCSr6juX&ovQ-!h5l*9i2*yM&ELrqZR!*g@oDBhXf1;2&=b|
zl5B%U$;p_8heGVCw=h+0!%EqNh1m@J1b`&Sp0p7KjgVyXaUWrGg+aso=tXqO=hmdu
zgQephy5kwI%IZg1HL|9c$V4N9YJO5j#N%;d$GA$@eS=}L>yh7Zp_>wS1TvbW>qP7Y
z*-gxCZ?)>#rp0Jm0{5@nO^_u1hPF}l(bhga@Q&u77GpX2xFm~5DXH!G0)}dI5^UM*
zXe>%u{%k>jz2<C=U|Wk|xnVzjQtg0cG?$hM8G$^<hA=R+)VAZ2$C^s=t}x!U-#&?W
zKdIRia6E7Hc6udLx<_PI@yYR6wjq6~L~zp$HJ+Ths7*{EG2quH67;NIqMs^)uZr1D
z#Ad9&N&KiH=BY&RR#?GWu*{TPJ5p~tY~oPRd=rX&ZE(Nw_dL}Dyx1mUd7Le^aRdze
z8tRoYlXy7`%f*k3bAS#r9;GsEHYAm8&6EZy)hMejdn?3yjJbbgSSc|Mm5tkn)qT`I
zQI44XOIr4@pzuas;g(_wo+r6gA_oA!G*2&<BQpCd$LvtHu2)O?<Q7OPEWMfnKvEMZ
zWw}XEdlIK<%Zp!=6SpoR=`cT}sVl7mF8rIMGCM@8y9rTCNYEZ70gK=C#6P3!f9*R9
zXT$cEv<v-~p?Qh1K%^WELALVDrv2S2ZV>uxeJAovE~xAL0tz?Ee$^0{Dl>*1(Kbu~
zG=?a_0=h-s;|+zHu_8pD1vhScl|^P`pM#Cm_a>jq;p`KKGc=k9B9~dhGx)qzH$~GF
zAUVeX!^s;b`6)rH-tba2N7{8)qHn-hfIIfkn1;RHXKoU5X{gKKn7-N(bCDyg%`xJa
zkd$1rT^Wu8#yy2+1XmUYR|T*b2^5|#UM<)H&w-&<?hM4&o!gs1kpt?CZ8h5R-7PiR
zMNg_%;G`+VJ)F<T4)v~G1TgB#F3=RSt!PvC0;R|xfz`clzRO0roxbPA@XU_JDB7g$
zAcyahxgzQHI{I;#tKS5ZN?L}5tT3uiVGz3dO9J%}iMU<3M)`zK!X}yv+FmF^Kd8#b
z&_*wcePGDdLmPoA(U@d?eeWT{qu&KlsmqLg;DJ|4k2OWtqx)WZlj%VNA+I=~x@YV&
znEg<vMmpkN<;WO)dwfmU?FIb3<;Du)$~|!gE5G0MqsMypW7(*BXVYorpV3R*^0rFE
zJ9{sN`}j_44JwFc*2OgOSp*h@L4u-{tdne}!ZlrmbD5kN`<+Za1nfX>PUaXJ!9A><
zEIxc}^eEqcS>PNr2QOak<H=xnzpcs6HO1$BIJ<~)`spv{5?A92JHqn2i6mr`B&0wj
za;(=J;%j||k`&lWBCXx97dPp9{9Q11?P=7y1$00#d}GumJ3IU%eCf;7*zj%M{YS?7
z`4Bq?^{PoeyTDmiH!$}q+c$WgR4c{Ba@_Z^@`t(j&KF9a1SyuEe}XnjyaC&++#ubn
z>dZOO9__kf@A>!a#+LzD9!))5&8?Bq@fUj|o_Bw#sLU-4*~RzF>UsIP<H9A&lcuj|
z&nRf>qKapE*sz7&;R>6c#b=O|$ApxocxW|0LLU7?L}f_Ci(+0C`20@Zf1GrLpG*)x
zr@UprB*a{{^nHJt9Vp#law-L!IiAQJA40F&T7kWcayKNIKUN2wsrHV?iA)sh?W;}T
ztMr*gR=SrN->XT#tBnnNWl7`d?zS8VJ(f26dCK#36zS|jKRFUo@rX^(<{G~vZjFO;
zhEN`_H?%aj#GL5`Rt8a5LtFh=4iay-O|->D6B5Fc=|$cJ<KyG=$LzFSM_Ty^y5)nZ
z5Kl;1-9+dk{#l$%fg_ZVFzU>K5)_zAbaL%gVuCA!>&Tt4k2qoOsJL3}e%5rKe*Mk0
z66H&}N5m~v5X5g(Rzp)&)UzNiQVlfve|Jx5m4<ZBfQuIZa+~VdS}CdTZY57b4Nu8p
z#>k%-(qZrK;k^F{j1h=)%W`EDrcVHGOWBPYvkSU-6nyZw+q0`)d_Ec5J;_5WeMT$2
zMk_s}fBf>D8@k%6XXoc<bCyw#*Hp)*pMRnb)2J-2YHnD?+_1Ea-kfT*nNnXfuBx1y
z3<E+{J|lK>%~+C#tY<fh{YsTUT$Mm~P6P|a4&``*_yN_wUXi<Zx@8DqvD7~_cuz?1
znrN<P-lYz;!f11rdahTE$Qe3)RXCTnyJq>~<m;R;nz=sW6kCExsyOqwVR-5=b`jZd
zKu|T|oEXS)uFqhysKMBmYNKkStDt-cLD|^BByqt}QX-@6+f^3;>)M(m_$Vo;5ei66
z@Q+2oP7BVKl)?nbnGw=ohA2}K*(yQg=tLn&f>l6Ciah$o2MwtUCP)cFumov}LeK#Q
zIgMYiKq6b7bc!POK!H~Q204!Zvhb%UGYoRLM7At#O-=ZqoS*@PUVJ@+z;X~RiD1Gf
zqVLdC*+C|<f(GP7jHt+1A&EuQMwFpR!$g!nkwE@-m8RV*VX41wT(e!Xc)57;VBzHP
z^&58zUdE8sgh4~#!YQGXd(dk7kQHLpa%f^7wUaAyOKXs(Rxd4GHfgya-g5I3@Caw)
znvoNZV+1D!>~ECec(+*BoGF^qgRQjsT1<)aa8BZWt~AD4%8Uh6Nz-vBL6A;-VD=0t
zO^IU&COX_kHCs3;yQZaA%u24<KwELGlhRrzuApjoT4gN!!JNcXZOF{3SDETkk-eSL
zSdn$B!cNJK_-&|@2kU_h?EPm=GL9<nMshF$!;Or%(ltmWYiz29Xa-~Y{;?}Ks`_+f
zi>;Fn_47l^rDLCF{iE?VN`0dJu~ZYI0Rx4M!C=V3@k4`*Rc9aO4D~cg=kPk4B}zGd
z2tienhY9IY!|0EJl(PR|(Jh76mn2nMsIyRUEGXb`qs%OTaVyR&5c4pZFI2rz61P^p
zi5IeV{7t}15o^^4J)ZUj=?X{SE7$y#Jp`BXq&)=CId{C#5;;e^(c(K-y|J1PM4S0Y
z(mMiH?JIkpxv%C%O%z{7ymj_vYw5O2jcn`5L=mSVi|Fz_@DT14l4apigTgtaQT`}(
zu}(8~Tg3XM=rvWy)r<RlJrMirRIMzhN09B)r5`9=@(dKm%}y&Fb^N)DNH7!AVlC~L
z(1ova#qF*7u+H4QUeB)cZfYm&a_iq7g^{%#zJKT_HCE`s8Y_FS<?*EMiX?fMDz6Z~
zSogG0iG)|L)P?<O(UmYTw@Su4pL2AcUVA>KbuwbhaGGE<R^Fr;wkU^JWliw)v?rg^
zqB!Ioya4jJXF<_dlVw5H7msB@MqnMd2%G?Lp0iH*RF(~-lI#x3r{b&(z>RF4+w~oM
z*c+^H`)MILPVWTO!C@wf;_G+^s_Pf-1c)%t)>k^W2tfkj)^IJ>$zw>jRhyMTeUaq!
z+L{~*?Fgq{6^Ug6kuX8BP<&n}W;yle#Cc>!_P2^}PLtQ`X<iH*m@VQaP4TKDxwL}=
zZ;_Y3igSp9(y$~r>k^ylug~yX>oBcpj5rCd=L%ew#f%tGPU9n?Ft)q;Mh!@{G)5!n
z7m-Psl7}9+jg%9^s{9z@>H9w!v7o@mM?#K>Sns}*+a-?Lk=CR>3hW#VeRCVp>wja|
zrqzvSN;|Lx)uQV?_8*rfJ_;fVuf{4Vx%41JSJtn3WlA+`)eLHYt*XX`ExEKK)S~Sj
z@poxLqQltQ<>%D+E<Nkgh;)v=waVYB9^?$WsOTuTDqz5)gh*8?#jRvjy+Qa>F6WmF
zu{!(mz@pY{EK?|UJ_tZBOPZR|kSnP=T|$-M9ZMH{><W*g-8&3}a9U{4;ntwp?Zypk
zk=94pnpauH<O;G{oolfy{X{A9%!=2UHEQu_$l~?@A#@a-&t1hJ*^N<>YcWrYBxVGs
z$^f}(naFs#*$S~uZFB<%2q^{8FU#|0r@>zeM1LatnWD{(E0qP&&v2R{y(SL#xI10r
zKO2|B-+jca+I#^g)N2?(IbD=C76+R@%^3dWvp=i=HGVQR&-kP!tbH8j@kLFyb_b8;
zN=;bnIE*7y|LYDfAu33YzCm4BX?*l-G5$?G-uv9<dfJ2Y{!|=0K;$qFbbW400D?>5
zMJBw$)^khQ+xqz8RLVo$S;D_P)_(etB2&I-dpYe!%iG!+U$cw~gSbMztq$G8j80re
z9Nlb)pGI}z2IMQ?N5hefgf43A>vWyji-JF6b)vVC(FPt6M}ze<(RUpYwTjZ1vnc)L
zh%&6YGm@B&D8j3LvP`-&5}5AXyhDDn4Cugj$^Mu_-c24tZ$?z=Q2L0$MUXiF>Bh-x
z9e#7i(grAVvvtPsTn-I~SWw{|@x9E@eRmHS7hX)8XnrI1RH1ag+$8jHIS5o$>#2hq
zpSNB4@oQ=L@<4TYs0mucs3P%eUM*d$kG>HDbVb}&om{I@NP*a;0)>+o&U=yq1wKU|
zah^*Ks`byUaJg355LU5EVTyF}K9oF{EL6ImTmEvbGR4jG<9hunqnM#s`tbU2jQtw@
zi6fZyvc-4BBZiz!g~K0<8M{?NWaIB(Mh&T(!bmVkuyk>o!iW=WQJDht`lCiL?XU#O
zuf1gNepxBCDI{Z4!OmFPd|M%|D8^!x&g%q=f?>+i_%&ly_~W(K^k>r%5;Gr@2c5kp
znRt8&58My=4FxuMsX!*3&u~6nHl(Q##y#vdv@amzzJxa18Xqvag`(iz!MyxJH>K%O
z-{8Ew#WyN!C|=-ceMdH7Fd>z@U1q0lgFQ~36y}<_ea9}?ExgOBhw9+l{VF!h7k5;N
zt~o2Z&7+1MofbgCW>LVRo7U#4JC~JywH8{?Q7(rL-#Ph7O=5`|rn8Erm_11CJwElY
z)61eikanfnU`WI&1MWdR@42W{+o>0Ka<-<Phe_KAQmM^v-{>*NcV0j-DNLWpF=^~?
zA1hJC*w-NpJ5vvJT@@pF;qT4ZdC2WiR$}6Sa}%u_U_bRh#TW>YUywe4{bh#2Cfz~|
z6O{G((J7*ay}ge?bB=UIREg+Z%p#DxU9>Llv=|TRRRQX|PsAjmRKOek2PyB74ZB9r
zfUY<jG`K)u4o4%x8-l(eGL`e6$WNvWon>ysIP-nh4aluYo>m<@EZuWZvTxoOT|9Gz
zNe?jALEwb7*Tv@qW=FwZ5VeAfyPPSyNd8K?6<SNHUR4M0yP)}L2S6NXL)!IZ@ffH(
zH*A@J;`ri2z`<vH00sczdAI;8AzpPxAFyXjpSb+g2rb+*Mh{6kOr$ja4@fADOAu_|
zGH5BuxOHpRThDL~$xU=!Ux2oLr0ZgIf&B#>b;4_R&0oM9bOXyqH42_R3YKpW3}x65
zo<a8yY>GR60H!}8@N+Q_Q*QPC2c+{1T)UCHDT6>~g9m)D9}w=kJTvt!XMA2Y-~^Sb
z*5?j-LDSkQYUUm9n#Z~41BVix>TpFmzb}RPOjV0@_+A&$!vnvcO%NAUe6YKeh)4&I
z+-+h!f~pLq!wP$iVOz8T_#XrgFPYm=cs!N!bALg*K?R^lnGe;>r9S@n!57dl?AUx&
z_;nbTdy)|3Qx_r#eI`V$A0ee^8lpalKTCQywzO`zw0^j>&R-xi?b-vE)XS0a59H#@
zmCf{AeB^|Q?ApEn=Y$4M)K*G4${%NG7}4i2B~D?D9>9*8a4;p0hvhTn9FCeaS9^^Z
z<m57z6pflu)+7&?<~M7_bI$XtfLC;WazWGbo!^94fw2arFZ}scpLezZgI?W~D)8?<
zEKwlmqUr9LX1n;gF)PNl5&<1zA<uG60{|?zeUDbogY?fRtInN*NkK*}5;!FCQ<e#)
ztoEst+NRTA)JNpBXw>WG?PS|r6@W>d6>;Lt^*A(gSyFR%HY?^{tVjctvvW*}b(a#p
z?wj0=1i%E4@7_?K(TuvORfuAPFn)uRy*Q2x!zT*ru@Xgs{09;$KQb!Vn?YSc^^$xr
z3&q;kn1SL9zOba7GC9vJahOXI{|CmQ<=mwQW*y7NCH`**5U++Y)*lA=Z1Tm3@+Gd)
zM)rea_+P#gdgdbW$OREh{{fUB0u+x@l65#8nn(2S>F0*~@0k<R(tcLJyqV6=n52g%
zwOD^Z0T5!Aw+>&k$(IOq-PG>4ZC;GiLZRptIFVQT`zM{Ozu($9?&_TuJ3cNtU!s_8
z#Rq?C-Zb%~50!UxTdc_MJ|uqdL39%N_YVY=j90mH4%|ZW4?2J*;{)cR0XCG@SkSF}
z6~>LbsfWZJMAP3Pn+AA3$r)yQp;uZ1Q{#D_`zP8jYktdjCVHrJ|E5lt*MIzAJihxv
zTrg7m2~}chfxK*c{jGe9)ga_HK)(AY(ZgO?eprWmgFZR`@cgaw4WY6FYyqot{DTu@
zCDV^IkP|o^;}75dw7x=CGW-Y!v4GRj|9}IwfY~X$jXGOwNc2F+>tSR5ZGmD}koY<F
zb(I)z^&WW)E<1^jnJLH!a%%K#RS~jk@N+WO_&P96Zb|GT1QI`ppUekBRNnt0gFH@w
zkO4*h$qP<`#0M?--$+8S2;x5=|4tQ;jfk>=0Gt^BCKAB{Cx;tx&Y~{`XNLX>(^-Ol
zg*?yHj5PBtisY-{f0k=BMCa(y&Y^=XLOZKOS60Zb4c`}e&c6rlUVJT;PYZ5M8|pxR
zoF{r$+tChvF^~45xvCI)s~h~QiCk8I^al#tW~$?m0zNA6p%!=j?QxSNZJ;guS14pi
z{RI*EtW!6n$!mhsDJE_xlGfRWlFV(v{~yf5W-*ecfSy?!cnw%O@hAz@FDMX0f_#j!
z|GvzPAIywj_)b$5t)@p@*DGum96s|2>#r!c{<$6py{sE}725|_oydpIv?6fwE)ut$
z!S<$T6g?II1pA`JPr+4vUCzbR!qUC;FS3lw{s#5X2KBH*7AS>%8M9~6XiJcf63^f3
zX1Gb7Pczde@}(ve@rLY>t5fq&bK7}R4_ghI*T$VCgd4Sl_L7R>s#E#mnFj43RmVS%
zU>UIcQX5C@{=*dG@QI1Y%q1p2{P;h~tt7g5GI;dPkxC@=E<G2B_(2)Q{ogn$hx-%N
zg&EXGWT8((*`EKsbjbG~uboUn=a}X<Ry&Y@O*746qWLE?og>)ocZ<bKjO#;c0(l3X
z<jU~}aFf`-8>REV8q2*W&3KXCW{CbF6`%=={g4#-{U`|qAqkFFY0%^NgTx30NeM(q
z3HJL)>Apr!1;$Ll7Y9VK_BRFX%5Q+OnhbxQ#!)~eqzpkq6AB6;65L}Qe1VJ;3K}Nb
zITl++$-<a_vRT6js#Cxs{MjY*(|Z$V5HR=oC=*Xn<fA`5s=tnmt6w1}zXCoXWh7FZ
zNYF5`pB-l4-?2{|@f4K9y;XRQp9nK;z-guj1S1fXdgQmI!7(4RzxcE(r&=3`U6lpg
zr&=3|U0H4>l3*2vWkxpTp0NOKDWUt21#Q7)arsb1qSV-Yf5U~i?m`&#dz70C@vTjO
zXZw{rim?oa$_xa$qqmTzjw}XhmR!8-ABLGBjG1AGXO7@)icYOW0e9t1u!oWKp>ww;
zJy!n3c#F5K>^D@|Zz?kg=yksS-IqBwFEdE!EPi=BqR$1X)@ZddT%JeJp>EyT>6L|K
z)C!Xh3Q+`TGfB<e{Lqpj(2qql)Ml`uOWoP^m4&}0tUoiv-yyU<)<UI&h;;0z$5m{~
z{Rgm$O|i^OIm}F9%>EQZ(q-0i$0;*Uq;>70|C%f;|6EKJbOe*#?DMb5M0(7Walh*?
z#JV3>Mq8|RJ*a^>x%QU01MmKq^dM(3A7N;M_+hgreV}Vx_f*R}gq9r^6Dw0EtOe2%
zgT+X)HhhA^XsXf-zBtKvzO%@kb)c8~;uv5KTP3~&cfp{OeRufoO)PfK$ISy8NdeYp
zocREUn&G|0B;x@YGQoR^Mb7<in*Hx0ea5&s4;+Q;cHZW-&D|`*n%m7ntLIOFPc_F%
zj^5^_&1<j9j=t`#%~Cjo80M^l1a-I7z$ZcZ<nWGot*(3c$AZ&nSG7Eg+3q878vZs#
z5-3Gy7P5NPHe&W8`=QNKjJ^)|JKQx-7;7H?hWAMGR@^TQN|Ug&xQdG(vH0mQevL3&
z=2%RA?GmXfybErXj#w@NkgC^?F$S&?<nKe4@!$P=Mso9tUt@9e@?T>u0k>?So~^D7
z7SkGuR<F}gEr4*P)P@-f={uNl-hs7v_KEi*bG9nD^-wD?VXwk0)6Tig+nKs|-QrGn
zS$wn_V5<BYXW>b-_$+siW^i@MxCSWrwPKwU%R0idqE0fVnLX|_A0541qO^o{m0vH5
zWpK!Z+0}7iN_AV9zbj+DH{@<$N@pF(ko`G{gCxDE&PB4Ap}I{iQC6r?i)6O^I8J1a
zg6@Gg5d1qh4|wN~-%092kh9nU-?KOf@MC6=bX~yl{r{G%1k6-Q^hKN(tyiO4q-{WL
z1||Swcw`EI0{icvlc4{RKK|w4V_GJYgD)_7+^t)564p(C-~je@gOb7t{*Pe=x|}ZQ
zsL$fX=NA-wpTJFIU|-pHK(`#Vaj(n%g0uAlUAH*BHp~i`Vcj$J_khi-tY>KGri`CR
zB_7~4pA6GjYWkI!P-N#8;!3NGPIXG<N{mIAgUVU@kLm=f_{&5+)a)%P?%KYXGn9uq
z+_~t-;b&-^ObOk8={@2KuHui>_DJWos2GSckcKU9$X!)X-A{tN?*`cLNCaX<fg<u!
zj{2!yG^4t${m8o@rS@(3j2GYY$1(*f9TH%2?ggC+7}f=TD<Xkdl`&pvAbce<ur^#U
zcz|Yf8&_g+2jZ%p4*7rH;p095M}hea?k@x0SG~0S<=6we(i5PyxM4n0g?HlvLjQ66
zC;xgAZbrP`x_DGS`}R%Ska7REJ}38YYFE@yhd2KWHrLHjUh(@gDpvzf+bbSkSUh_6
zB^D6AeI{@c^QP-<Ym<R^*5SeZ0bGaYMlq-UJD1xsGZytAEekgFgXShR#mt01MYUQ7
zj!};<Jz{*Pc}!VHPnDJu*-h-0pL{O;rb7f6JAyCO<BK!J_r|zq{mri~KF6jS+8^k8
z_+6lqb3e<9+Uns%oKy(jDe7SyQ2M{Alk8-CK-rW^gp>DvJu~ijUOe}_YsvUSW_Yt-
zP>({K-17W=40uiWmxd8D=UveSUMrAQr>GR+MUwxYhMcI6^cNp;yCo7Kfc@nMGEQ*B
z9^wn~zvcV=ne6ww_j-ZLiAdKOdhuyAkXhw30d~RQQGD=~t~d|)j=(OVaw+MRNG+!$
zhi#K;TcOb)f83u%Dhw^l6IhrbFf&1Tw2yRKBlKz^%cDLsf&Twr#=p{Nl+#t(mk1WA
z=FF7Jn$3~3nE&Kp4hN!{Dd7*yw<%Djc@eliXycvQ&5zJlCyAn~7oN(j4khFnR2CF%
zqRaKr<OZmJhsVeZ2$kzuyp<1nq7ZyV%{HnoOrka;4NV^Uo6Pl};e#!bN0*DG&J9rc
z4zDXqELa3jee{FekynA>GvO=h{xe&SiI@6F;N&7<t>Z@;Tz;^?$qw|VdH#2`18vw>
z^DHl#n+pH8y8n$?Av{$gdsFN$98M~+y;}4568~Ces+Yw|b7RC@#r1p$DJr0!pG9Fm
z^|ML1SOJ?!H(sIMgsw%+;l~%?Qko6E@(#k5pDCqRw61t~1!c<nrZ_W_O9MyLrzo?~
z@8z@H0-}~mueGOUnC<w&n&(0c8iJPVO0dOU53lM!1y~)Vu#`t;KiqWF-|%af$-VmD
zd!oOq-cj7#6txOG@27Dq+gpPc>-m}u)zPsp>w3}cN_U9QvuKeJygxfs86&l9gSxe)
zdbm)0#cgK{vQV9v4IPTd8H`8X{}xj6Gc<ifQF)x!&NF`@x*ky3^`;5#K4V(TmR5sD
znS@-wuf^JL=5@RbA5$c$C{X#%G~s{1!m3<vd&g2XBx%x(Js!fIQmAI*6jWnboN-lX
zunR$O5cMH=Bk%(z@HzQw`{OJhPH;aCJPOt{q{9Z;!KgIJGLs^Sdwy4&4Z#ZHv@T@s
zAK@+Cc(MF=>3pL<AS|5^1gUiXn^gXtRQ{Tjljpk-FeFC9g~k-ZwKOoA`?@T_9fv5>
zpcn?A<W`N;Ofl&*!E%S4or}wJYpR~*<z&L<c@f1CEs-_*`E}_rqDgj1@Nwo%iRe^|
zVp>aX-{g9>=|-Pn8X&_+#kF75l}>2(c?~<S`BISei9K{Nwb*S^zHYT+T0ZpQoMo|i
zb#R(>$`futolVNn-%u0;n>~cv%3)5rU2KCw^6_NdkN^0K8tD{cbUZqZnL-RDSx9!4
z0z~tnm0R`xjn<Hmvq;jdlHiKPK7h}NKC-~2pe(4(GA{|c{SP!HVgDUV4N2T0-}7F*
zI4}D_PEc1})zfE+BL;3<i5bk{B=jugWw*W=5X{ZeBZQ*Od$%9En8Ch69yDxXJi|{~
zC%v|)x~Qu^-Cp%`tYPkk*R?W4H=Kq>W+wr@`jp(=L#zeG5P&(`8y6pq#s;gLY!CTz
zE{?|1RFW9Ehm)l&pzR)gs>7kojE)0*OwPn=C*ugqv}@vnG-LflV<pFGuFtmCZTqQi
zVs*j3qBV=Fv)M)T)%(^41b-rXfN*?eXHc)8A#<l@e@T89H>4uE3xDl2*t^hkt^Vi}
z;0rKnRGh(05YJDs-;xPeDPOUvMl;~MVC40#4<FCMxF<}F)7gkqW$|JAth@0vC>l6$
z4|A-jm#=eDS`|)z2qSa47Q{$j7(>x?*+Q(f3LkS%jY}YwTv+XlZAmNe89yh%6!pqc
z8OmW_8@0ujt&&I+>@6Yee+Ujs3l6gka>hwpFVvsV4pPEaHcJdd_Gs=}#JOwOBr(0O
zEIuP%KkYgbbAt=rEp3oXUmmmfTubjvSzUoH8aFFFk#FcawLz@m@p;4z*38kxrkb|W
z9H(6LEx6Z{PkdtRRxcim#VC#d#zZG@{LL2kQ~n%)1FLvzgW-!aXi_VCZ;HSYSC|<#
zLr2*E;_EGd;_9Mq!6XC;P7>TgaCdiicXtmE+#v+_5Zv7wm&O}+mqr_RZ@hy)zW>d<
znyH$as$F-TyU#lNR$Z$)wzfBeHTIbmB5xrjy7qQqt=|rKo4Bs#(_=<$4Xu#RqxC3d
zM{!7Vi}%>OA3rAakG<t%nwK^>a=QsVmb>DS{-ga5_y0bCZS5-C4Au~u`%pPG{`XMv
zyo%2c$@tRG4IN%yJgj5Uso`H5)_dpdFK(z7j<gnziYw>FfX$X9<_{UDGq76DT}DWT
z9Jt@x4$0mv;y{d5P#&x@RdJC)aO_aU1WR#=aj6W0f>n$Ic@U`pWB&g$y71%ibM3K-
z-&)Jg$>7;|@>x&qse1rH-RJhy0e#9hGi{a}>zP#k*86vCGz|};z^J2mrY%>ct>~bA
z%*(6QqnC--(4yCuOfdD<S9Qw9qn|<FKA_5Rq~h{ph6oy!moojh_*j&Z0<pcvJy=$5
z&74U7QT;F5n(++tnR6={N*PbUzAvjGloLBc7q7=AHD<9r+rLEO6RBFfV5X~Kzq=$+
zGf_F-r_42HA9LJ@6J40|F)pAI>F4uBW(K|}afRb|cL$KmWeUOi=N-mgLb~iu|IvXt
zP66T_+pUq&7PMyv;emZKaeQUi_K{eQP#Lk=(8>aLLtK~jz`*pU?;Gaw_)aGS5M*zN
zsB*!_Y*qL)YjI$STHM7xw9Ym(TXJB6kg&E;Cz_U9nRD8+t`t63IVHy<dI??cv{)FT
zPNsLdm)(>q*0ICi@g~t?cDHlgKi9<~tfX&kWb=q}-GlcUe=Q>L9Q#5&`ZO6}9V5Ks
zbTH}sT&d^twzx?d@${tVDTk@!>|@SRloe0H)LP48wlB4F4flb6%VMhU^DrWb@@K)U
z?llskM;7X^QbB7lW=`DAMkt9=9`&Q)TFZL&iD2t`=81pHq;DF0J8<p#(<P3F@?HCi
zS!!lGb`C|gTZj^X@D5mP2@gFD^LIRTz19dVMTGhG${IiwGldLJ#ts5vK$K3jgIc~J
zj>^_Q&I&p%o0pVv&ASA}noDtEKCaM<ImbZ=3198q-`dtM(6e40C6l}M*~Q4amX?j|
zN5PiB&oE!tDh$}8OBd;m`PXqp#P!Vn`M7D>t2(kU&rt!x^sz7auG}kbrHUBmu#iNX
zxo9qs?OZC?^YD*50sJ^){_?veQ{T$>{43_t@Ay%NnyH=FA(tj_T#Z9vzXa*!TnE=F
z&ky<*AnS8k&ZGeaRE|J>;DgiR$M%KZKw&-H(>r#J=#4fmFT1?iKu7<d&GB|H-zuzi
z54yq^=EYCSxs@wV#*4^Kyi+7I&<3Nl$eJwgr<#SBL_)o%1@|3^+eBb+9ZP~6Dpo1I
z>KXExN@ZBtoplv24%tHtCE)fO0PWJt-1Pe~UV*B1!3uUxzYdz}*;I}QgO~+@yvB*B
z2I00XDSw2tQXl#ArA(kQ^(6mTxmOXT7FsX8|D_zMGIzCSsUgP7O-LdSRI+`&@kG46
zv+-mIAY0_ZUe@}T^AYy&L+ebX{Y<qDq>3FVLjObb4CoTjJnge+<KAf>^ALT4bDMNR
zO5{}RLP{3hcv2==oq9_XFFEN1IC&-2b8yyM?t-%|b-f*4J|>-9)wm*U6-t<&q<(CM
zB-1wMB2^?gJ7-paM*!gu*)PLBw5fu2c^X%(7cGot^(tDI%~CnLr*!xO?E3#S@Vks@
zv0mEg13WIMry!o>YGWIL8*}k<Q}4aDaL*Kj6o(9G^TR3HQ*)oi9g7U#x8WjgpAeR(
zCnu5G?<C9+l}<SoX)uiJqFKgxK$(~S(Z5h!ETnEbZ7`}Xf5*OTcoseaAxG`$=l}lO
zRW9MjEpjVx9B`V-m&mtYox=SDae11`;PZnidaL7K^bx%r9@&-s!GzLmfya~%E10&`
zJrB+g>J6`Sg)51Z<}V)u^^H=sd4$kMT-p>8%l-I9<E5phN)MHD;zn@mQ?YMC{bGs7
zgU>+bxexhg++CZ<p?_5X#n-k<Pf-Ky?D3Toh1!x&a*X5~@lce#cUZ01sgq_n0f&Zw
zEPMdp>;v_bH03x+L!8%YwPCjT%#1_8$hlYhG^@4xn@ZE&$$C$&sM6y<xy0;o<KL%G
zp*bh<E0AC?X+ZvM`(H<>&Hc7E#O?Ij_jKO0W;u6t<Plq$oy{A3f725WYk1nx7MLPP
zfMvC4noU8Rp2^3uZQ6*sUT&0oYkb6GD?JPLYYcFQy!&2^y8v<5ZUVh>lYzH4b_ZSj
zXTz86ue{gVH(dumnG&fMW`Z_WgD**;cfl3eMsXG$hT*S+P*34W_UC&@cGq)!or~^M
z%g)8d>&4qtju0t~siG+EPy^<Q@I|=7k`${FysUl)aQs;<3|&2^${m*e+{pegC9vTK
zJ}A|&-hRD3mh%noufa|v<a*-3dA(4WQ_Vg2>#bKVKaVF=6Jtz2<hv}Ks~LX-tvrMm
z$d$Qi<tG_AJF&M&p0zle5_;XyJd_lS-FaZYe1urgzr4}~+|B*-KP;P4zH+m653NsD
zad}#y(j6kydiwF&9v>(;7_)q-8aBp)Pp>_w&wM{}{Ynu9qNS&h|1E9kQIQE2KeiQ`
zP@P(N1?YmtMh(js3edUB;=v}jp8}^;Gc`N;w6V*O-P2c2T*?Uz%%@9WE#d7oTIy?s
ztA$|DdEGe#?0^30T-L4);+9D_Z+OV0&Ayg=E_a*8zg?{s-)_IUQBJ*vxORJN>zUXt
zJK-E%0&d9Ap92dhE`B)nu4-Q}EVkvg<1U9^!8^kNPG1KdzyX&Mcd%}wnyZ?t9tL5Z
zQ2*p3$nK+z0}T5iN+U(tufXL-_$al^;MwVc#qwDDs86#lpems1L90ut%P9Gn{5DfF
zJ)lBJOY?Z=_L8n(BY&d?aD)HwT6oUCSwu72ya70`2Beqg#MVX{x}bkf`BsaJT$cCy
zeq495GUAhHKT_0Z4G~F9Q9;QWcKV#M@S__Ans0wqu_P&iKR@^$XD_>BC3!u(`UG4%
zy1N&rm-`%h1KKt~IROjYhoX&|8vrO~QTP#-*iri}9@ZS}<WVw=q+%#aK~O0kSJ$T?
zhr;E?LQqp<=5+xY?em}x(&L!7cc<_nnEJSFVXk11WmPE~#jcn#f_0EaN2Pqj6<U(f
z(w&q>ux+Le0b{48!;J@RBfB>7Y8%)(vIh@vzKP6)A6l2B(QdbSb$JQT2(JqZsi4Xj
zq~b9lPzotk;uJcROyH`YCEm%ht})fo4?sL(*J!Mkj8CmDi`NMLrV);+M8W5i($%qW
zn9`(#q?>BiF^pqe4~*8bR8nb$QkoLiaaH0je97!Z>_zO~zv%h-d+D<hDrq7czC2Zt
zl9ufLh?k4`74DIizm;=5)~Y#$&o~WD)Qp?(!wnqAC)W7Q;v-d`4-H_88|r~)*?eJ8
zm@16<2EYRY@c7I>M!aJ9D}8$Sz#M7B^`-JbJ_E&rGako0hEX)PLRQ`uTk6TK!)}IP
zMFeO|ZsdMwy&~prOYdWW0~<CwPauKGj0w&bNE=C{Uzy#=k3F*yKD&@;CSULQjV7S%
zejiPY-ZL9bm7g}Qa1LbLe#w}61|q{2#m;MZ+5TcR5+4eKvu`LE&;h?YE3gLRmEnz0
zpLtRrov|J+X*H(!u|cguKG*n2xsgJKxsPtF4>tmzU;JJP4_BR@i;JG1PuMD>!uR&&
z{l*71;VbK#P9?`LI5#hCtB>|BQ0D!0<8e?|nr|Sh&udRoMf)LB(zKzw_LVz#O!&K<
ze10>ZLy`zy15zbD(){>uh4KA7<+0AQDBkhCHj$S$vL=m0%K1X?&8Z?;UD@WrrHAUY
z;%{1Mg>4URF$D}HlDYy>AEjnOhusr8QEizP{V`obJAW6QSJX%_Y9CdoT+QRzeu`;4
z`BTw#9{=yX&%0UU_&VIHr7w8C&14fMf*)_!tD)WVrapLPVJBO|oMQ1J8SS?;{V@xL
zGk;lqP|a9`XwL_!NAXLC$QHc>NiM(KN+hw%DvOPd_^_GffYtxNY@azg!>w<w|5+JL
z*W_i_9BW@@E6l6U00K{%XI4CK9%-)CV{^*8rVkT+QgVW4J7-bK!i>sNH~H`N0>j%<
zj-cf!FQUvt-1mh>qV6}!57gimwHm3+#bcmMt5Qwh{H>4RHuoW#&4|=9`{=9W>+iqZ
zM~XDw4eJWLKGEyHSDKHjh6#^`pAiMVsMLvn(aHP7F#Qq7<^u{x5PU}W2St-0s#=jR
zpG6WOCWx6m6vQQepe&&weP8RllU{1!w&7^!$WXjRQqnEHG<<HLRq#vKQA|g-9CoD<
zhZjkwOfv6kGFGpC9t;rAe_jZX*E~~e|Ek^9u%X&%XqBqU`3QQ(+QRmLpMA9m6w65V
zpq#C&v&S^DUsTOEbXp{zKxoIZ4XEqdJf><-|Ljo_OC#(y%Qv)zTS@v*EBdwwjmC<G
zIVRK@@R_RjquL5fkzF^CsDC$1vwS+AP!qllyB8;P{!a--rBbVDY%RiQIsSrJi-!*3
z(MgCqCc+&V$x?V4VxM!FrQbhH7eyrMyxqtxillp)e|VbCHZnQl;-hXhGU+0ffh99P
zd5lO3P2X`41z*5*i^e;vyob+~@InTmJ|gEgzen2;`NwFIC+!4>D7d+aD>9zmtsQT*
zV~K|-IM_oM6Re4kxDylX9TR*X6AT{{92yg>Wl{8E?0PKBRr()vag@F&H#{m&h>R4<
zu*nVn`g_pLm!!ZVH;6}>7!%p*(rTcj8xy=76U^%py()$u^D8|EdY^=L%8oPy;<5Cm
z_NG?lgj#eicAFZrnj5=AIiMW<xsxzb9wG)SqRR8^z3j7>aBl*{)W3)y4dfA)n$x#q
zd_rS<G~KD!KJ7F#oX5=g{t=20800C$ct3dG-9m!I?{<y1_O(#I^Ss>m`(S=%Y5dGk
zH%UdjxLmliP@%r2R5MSZKH2mcYW)L)KhEj$!;d0i?OYUyJ}k^##v1Qv+qUSW;_>^w
z+_!AA81^^4LB^}Qx#vHfL`MkUvwB+yZxxaFi`Zk_NXQKhFy_S*PL%v{&4`Zir35pj
zKnXq++r)SHgPmehg7K<Tix?knJ2;L7i%7-1e&@WC@YNBHxk3N$=Jv|*9I~PlY;IN{
zmDWNzpQ(CZ7jnD#PT9LVd6D?R6}@HJ$*RngWvN4DsZ(Xz-DTRtW!AR@AcR(;J59^e
zG3!%$1@jFnldK^;>sXfG9bfeZY9fv0>;Ac4o|qu^BdUBC!dyy<z=*;S8)v-Kry1m-
z{6hW(mSE980u=sW&vr)Fo>7l)%!aS)62w4=xo#6!f@(6V72_ICtDBGOlk}crCdq<m
z#ENJH{<j7BDJBK=ILh^(K~rf*9U>g^P9Fk(yMmA5#LF?n=`qB*F~rN=afqt>|9%R%
zD56q-f2PQj;wlWISavDa_jY(Z>v1UKe?EhGy}Xi2-xxNIgXXMJJd4^_`7mm3&m5PH
z+p(Fn)}1cywfEfXpDC(@Qu&`p^xTvhdGy-Oq9!L#7>)CznIO+N=MeJa_j^Y#FV%PJ
zOhcY3E70@%HU&xEu|Qv(DznVEa4myqClBYw574M&kenPxv)VbY3}@zQn>2~o5%!>q
z`!hB1Wz>R3_2O(K5v(sx3%3B;Y@8XbB^_PB>}=U?7$GP)sy)&y=(<C_RzY8dn|Ed;
z>2(i%9-aAprp*bPuiGKc%HGfTs<_#e>CO2h2=h1*pV>hI<tnMKH>@HV;rbhpbm`yv
zP58TA)*LuuGh}Gf4rF(b>@JMr{yemAEMXHX?%FVX_V=FmxtyFkdkM<XDqpqnZ^VZh
zuj*+xT4uThHZtD^p8iW5dSW7)Spp5O+9U2UmLMDkQ~IhNlaiuE)Xi_vnjfQMnDjA0
z$<Ch*E;Fy1Y&G}lnxpS?V~yf-WT6<lQago<ydII6YxGm=zWt<DaD=#QfjXnBAv5C>
zvNK{&*;z`!-!RBaFbv|wxaP5!kx=<-bkVBRoXJc0;VZN*;*4Y>LTK~flsdz2&qn3d
z=M=}qD@#b$B@w}MgW5R!O#k7wO@#hl{DVfnhsf%f<Elf~iHzfv`y*%?TF8B&yMNlA
zptnxCDuD2j{vZ^p?i1MLLilS8+n3xi-jbT~)zcX0tc>9&PxeZ@b(h)PzQUc+skj2(
z@J?GxX(6dcy!GGm5xi!6$uU5>hV<SvBM@ej`uBIi5UxB}!b8D+?QGg6L{Dk!hF8Cc
z_S%&Q)wE#&0gvvaK9J{8mz3=m+$o6h4$zGMy!BV>0lE~w)V0uHH8F8lPXj*0aN`M*
z=JvG5A6NROdbV*!&gaC<UUXiEN3_-(7-;s<YZ8R@Abn#-*S|P=j}P_SPW7?G(1ZQB
zVZ*!*y;;6F{Nw^d1nu^E!SM!}%>{klWB5m%2Sv2ak~zzzY^J|nI}EkaYa2K4Oo`h-
zATF?h>5tvNZE|9!pBx2_eaEF+Os1upjJWGOAuacnnBB4FB)=+GWfsbma^!}xb<{}N
zcyS=OuFW5*(XBy#JDJ#loiOx#tvJ5<@U-FOH?sgp<9yhKRwI`WP5q|k3hHJySesvV
z@7~=ff(R5NN#y3UayXF-n*-GMXKko7EbVris*#Glt#4e9K_@ZZne~fTUNtTBHW1yY
zgCpd<v2jnb4VcP(T(lKrz3$4I7;?USMXVrv-a+{k+0_1eJjK(bS%0oCNov%<{<Lds
zolCp6#!GjN5ra@#Z?y%5p1NrlJq17^go1dt@s4p)uK&z$V4u#F(r*Nkwxdr94lV=y
zp~qW)GfK}bmMhp&BsR>bcJHyej+zg{v9tJZE2Qarc(u+W-k*CI`gXU{@4bAxttenb
zM|{l`(*Hvue5Cctx#KM@?PlcWc%ygoT~>$?(-6K<h<pI4AhjTthmgRK<cxG4AudHq
zTlxShX-NB`V_vh8IaribQq{8Yv$shbwuhy-f@s;Y&d(ltyx9zSe(>{mzFDqmxG?t3
z<1{uMzs#V1s8x@`mZKbSbG|j~2s|*F7k(7+g#rXzdTNZG=^@vTh*J8-L)mJcZBp95
zi2dVcQroy<&$MUgXGUf)L&79o)t!BH7TbL{*4HYX9rhkOUZ5n{M4q?n8-}fgzH6|(
z1heqXjSZ6p2qHZWf4lTO#`U>bd{oXp@R{_kqeM=+M~K!k75!&E$f|lK!hhy(HaJ0w
zuNDF_O5Kp|nw_-M{b2PdOhWs3{_aG#eX2A46l62hi3bhb4(QLhk-EqkD9<{g<{w>@
z6x#L=i+^FcraWq#It>5?-qlf0iTuzWgr0{ziINyqdD2VLQfBGRlrN#gy(S3l1J^#Z
zrGd{E$L?X9v^6%gQ^Z|D@>-o#%@r$5qT#0jRe?vU?#k@vFOy$d+X+@X-9qc*OX{Do
z{&mc)MZDT0dcC%71X>lSwZ*<ZHl422*(0@<Hawu`Ca>5U`XTnzOrc-JNlH#dL0Qzj
z^_sObW0eNe9#P^PT78i@^Kv|XH*|ct#;t@&R@|BDM$>=_I{K*N2(HwX91)*)hz-_s
zm(O_tl6$;k;vKzRG{ovg)`-<7+-Cqc4@iw=O7nnV4bZS+Rb7{Hm1!cU?9S%Ljm?eS
zfUC*TAM=k#oD=c%D>G*8cS3ECw+@Mc80TN3gmw%gUp2C>1w}S9?NU7-JhqNN8|A*?
zQ&dojspby5Ju8>N4?>x7b*W-u|41+8b5z+5e;N83xgy@fc3;Br&%NaXYLv4Z6l*eG
zS^0{D<$(@R?zed~Z2wVcT@s>F8v`h_k%hCQwZ^dak#TM0K<2DgQ|)91e`bEhe1_+a
zP{mnU8BFfu!7ZQja=>D>IJi+mz0y`_xCf5gcG}iD^TV}P#^{u$iXES^yNI0Mlx`^G
z?fS0TNaXA|)ne!-kSiQc!otqS=>y4@o-6Pz@LY}JHE#FKtUpK|f@($kNa0Ec7n~ol
zqvs>u?Oznm^p{~g^yt(AwOOy*zA{TOOH7qoJ2dkdCudyeTyxGy5~a40Ium)_2A{)z
z8hxfa|FB}kNb}J8Wc#va2lb!XnYM$KP6=(d4Y5rI_HP71{Qar)2tgyC)RfOkp)4}6
z?S*#Z6Jz%$<($Fw&J@YLh~yQ|mx?&S<<ef}XL3zF_p*yWwe+sa=&g^Qaa%t*=|b-+
zd%U~epZp86PW*0%?H`17Y;;|4Kl6ge3>uLt_ZF;DXXR7Rpkwxb`QcM4rZ(_pj_7rl
z)DOM0`TKFWHxuXszI&X~P`k7n$(}?xZ_8@<;Jc1?DdK{if}2FN8Q&R$PW|54B`7O3
zquj~jAo!Q{<Y3luyf(MTYW1fXiKQX>Nn>|C$4q|uI7LLIlEQLgpoK82`@P)W6v@Ve
zZqia)koD+d0ZQS)DiMw$>DsOs&F!57KyeMuV~eB_R&c21_acAa|IH0+XJ1i3Juqs+
z<!Aw%c*9(${pTvUYxywB4Zl6_(nAMUpIy4lH09Ds-hKJ;TyZtCbZ7No><;5TZY)`p
zc*aMT{ZAq7BxEiK9Kp9UpXHP1)SS0-^szrj;(%;#<4B56K}I!n5{t5c){q<>S9;oH
zMx98$IXbbwoWmfCd9u{EUvm3%o3;V1V=1dy8J?ng|MPZ$k7f+Exh(*XdT_>m+xhb2
zvwR1wP>F4Q>km=V5w+zop@cI_-wZO0B*fW+E0g8W&OhNJBpmX03EI;{-mx7i`=eV|
zjv36<BeIP;LR6*GpYIF&A_M-^3~L`s-)Hz`YYiV=Ip|Stq(bKi?v3xUs*-bum2E*;
zWY*JCyy}xhxq>I5H_@p_mUC9ji(|#Z701}fS9U%?iOu=TW2Ccr7y<GQ@Io&tWO2}*
zT&xDPC`tihgT6~Ra=+q>{81CVD7owP)-i}Sc<T+gsm=@1Q(rxIzBm+2cdZ4Aa$Fl<
z8RJslzupStSi@g_W12+!VKU$?YW0WG2eDN&h(|aL%a4``Z66`JU$f`0N#r5vo3IZ(
z!p9Bxu{X6(j2<~>@mf9|Mn|*-_{@HX9vtk5_9QJ?Ry|9A0;`c_1>H7Ta*bR+g{C_2
zbE2mGyk1B33P8M{V_uz@T1d4Npg+LCDX~TtN>CCeYaFXWZkczk36rams;HYS3kOT2
zYs8mHTQp@<<|OhSOWtNwmXwq?TR7at`Dia_Lo1f+^D_$fho9&DfFe!W^79z=g?hzY
zW0M(;Nzyh|_QOVPIZVm8htKZm9See_)HU3*GQ86?g?ngJrk}5*5>46m6sZ<>NA(pt
zY5z25n5i=$W@eP65SbmP`&^;Vb#wd`S7dL<C9={>!*L0r<t%n7THa_(^~{VbQCPR<
zOP_RU<ORE>!qWRDwp=QCXK#`)GR()FT{?JYvS>)T4${|M3R=MiOr)&-ipKXCb5l2o
z@tN<fe);vTnm8sUPGGW2D6xu9sN6T=TZN5TkIS&D3E4}fBksEHvtDD|N2ULu8Y|!D
zy>9cH=rFY!hK(z*%TIC|XVmQau}?81M~|~LNHKArjPtej{NNzmlln3c^2ED8<k!ku
zV(#2ZX=U!66M@|?*TJGiuGKddIUmJ&;bI<ZKG9L2Go~Y7<5THg3DhQE;9BUZz^9KU
z-kpzjk95Dx=x-Z9zs(qI8}jj*FqiK4@nJNl?tj?_#u<J-*#X8bMl4?P4aP_2?z+e2
zVhQ*0GX&^A$=3Kj#s2eMx4dNDb_Ln*T<>gn1#b&eBZJ5y&A(XtCa$Ubu7mrdBNst|
z`VQ<J7!Kx;`N!UzAFt<Cjkqgg9aT;7XD5$$biT1Q4#JSBc*x5gj<6{rr2UD`qlNff
zyMg>nFrbdulJv@cDg3N2z?^?X=`M4r^z1sI+<!#r76J)e4!lQPvGvH<80oa#xaNmo
zoLRq^-nl-uZj4PfHar)e618^=FEG_dKPUDEZHc@l{Z#Ra4z%Op>6jCyC&F4kdll^9
zCfYN`TgP2LFwRPn-7)^#I8qd7$;O|4Vw}hzhx52d$xXriZ_!#M>;m!c*XST0S(;AN
zQ3_FAFYlyS@1;_|@wN9>w`~zM;i)ALY4B*A@83G{;l#rqFtVx7;g+OZ#m6bgtq?G;
zy>|KD*D!4Em(yHw@MZGN@ODp6c25hLplffsW8N0qmmwQQYik}$FBa|xi7fejt1SM2
z6-9x4^`%$x`<FDx*ED@nRx}AXJ0^lCsR$<qf;U-M9fNM2)ekzWUz%_+Tj??HzxL-M
z8#s=%tp0Uw#s1kUyp0$EDbqm330B?5{N|4J#|ICH)i(eFYsGx9Yc>Hp_LQytR&D21
zd2|lRedocA=+PB>ze#+F?v4qK!YC{JhiPLpXu}k=UtC)ibQHxZn8<3#R$|Roa==zX
zI-b@^YVN~7cw^UnGgRK@Cnh91;8O1wWj9JIa<3P21;pF4f465G{ES=M8B*7YZtl-o
z`_ffQ`u@`X-KB8Q^Vb&R-v2Se7N_!R+z-zutPk8KH#HbHQ>9XGI^QC(AhDW1Z7u2V
zOvgWhG1*1^mk^A^cYFOr6j%Lz8JvOcYKc40TlDsmdq_5ke{rM{ny_+z8x*wnM-sO8
zrx7-OL*qA8Uqid@7vbyf>gkI8XcfJcv=x6LJ@fKn6NtL^4|cy(1`=M+74d%Qdr{Ze
zRK7IM6C0;tR+WFXe08UDzeaX<yGGXKuIaWyNC)!{BiEOOW*U}JTBS~npmZX2<`ML~
zrMkBK*zj9-7qKCjnYO!<9hdd`w|7K3={Pkp0}{@kPdErD<#M$&Iuf6_sZ|g6DT<z$
z{>9b*w(MaW9UQ-bi!|}RAh$EXdXnJn88xBYYi&j5tVUT-4X72;QMT*}Gl5%aVqJ>3
zdm?&@xnS;LMsh;tnt9)oVuB*K4xrehQNDNkg{&d+fjx^#0cTXD%#2P6pDzFNE^P(F
zUWH1iM#*2gNRBl4wbwOG-r>v&z&EE(I*|u4O^Ibd2A$LhCE%mCJs_hNsKJ<|qCYS7
zzz0B|UDQPT)0uB4;|)l#3;8z)V7&)K+KI`|YjBF+KbAlLX>PTPo7F4Bk(pBiN~~)E
zuywh23aXm`jN6d%JDFuscacxTn$*Y|*7Ml3?d6U|^JK@Ejjg48$hjvr?nI-)n%O}s
zQySL!DGl@9G^NdLfB4Fy!Np)*!;*)BLHc=3w?A!q?*+j?0I8<tV)@DR%FD5jUrNw1
zLK3?Sn%F090HJEH;xUz6S?2si*&dEN%Iqq@QIgT*oyIQSJ5EG6JkesiA_CbeB8<Eb
z7r$m&_@rX<#oTj0pqC+n;lQe~n&y`d!bK#%v-3zwQtS#cB5pR3X-w-gP#=rLm^IbG
zUw8fW1jP;Kh3AD;uNsbd4g6I>5gp9sshF?zKG?LSfW<#989s2@8yZfkge)<hn6K47
zsTo1m9q~7>s;{Esh{te6Pb&T~Nx5ap(>coX)-vqk6Cx<W+QxYk?DGnC0IPCcu-1fD
zLjo=leCvM2J&kve-Y*0Bd9|dw><5ygKo#L{&vZa^+l7kTe_UK;Xf_ZjU^+5Ue7@Eu
zD_O5>wq!A%{((xu<h(an>fpo<tc80*0RF&GD&!7Ea}(!N;GT^w4|Xib{8m!F9zW{l
zx<*9VIL-K{zSuF6qsoomfN_30Zd2+}-G0reS=x};4Y3GX#=mWs&LnO)S^Dc|R-_)^
z<VTeM50eOuV^>YsQK;Qi0E3;WLVD863U?GV-c5odGtwtZ*j<8n$q>dr*>-1{^kkLA
znk#{E#y`n*-*AD-QJ;>~Mp;tR#}W`2kiB~fFfnjKlep6eRVKf&BW)2*#6}<%iurbz
z{Rv3Jmnybu!H+X|%NCE^VfWQcitvVyeNf=nh50@!_!i?DgKwObvHzE?>MARv4$J>#
zOO{sH#5P))^JSK?y1_2pZDp<IhDg#>F0aItQeaLhv){->aE0GlSkUav!t{oIs$A;`
z;7BhG{;kDl9q)QeQcDGlv>d3%O8hdGA6K`k!vu`djMU7p*O}KL*+wyg*C3#e!B(5o
zQLRMUva7QzE9TLPsi3U;-2V$ghUyre@(a@Q`~S~WSDpF!Fjvp<Mq@|`g;O-1TK+jB
zk&+6NY<=0L{`S=TPd4c!jnvFBTKPMEAjJzs?`9xU@GBYGKhoK!EKG_oY^pMd{5Uda
zYMq2cC=^FJ-xzehosQgD&^47Vsh5Qb&gaPK-f{R6Xf~HZ=E|D{`*K8qr|EYJSEssn
z1|d@o2W0+E5JKA*$JaOx+!Yk8&S4`3_fyKd&qb|Zqc9HtAEXAL-n-(@EMpZ|fw3Tj
z%gxl<=eOK&@9%s7R){NvWhKNGP7<S;r;0M(4Ip?<^d`@5R%IX*%HZIFlmrio)3rO2
zB795f!U^+Jyd>9L5a|};DV&V(LY(A3(Z_G2MAk!F$6ow7$B^(-aqu*&w%xmZzDNRy
z^eH)bK*)|%`roI=kFyF*iO#pSj~u7$ce&txA^Y5c`GeEzmWRLo=>*H#rxg+DcBS7D
z{BUvnaPJf!apr-qO>+tR4v*;b4bT<Oge$>E61)59fS5GpQ)`+pKk)XZ8re;)mzQPO
zhXO(?T+a-W*rz6?y@CuyicLnMRaVT}(~kM86(~1Hxz&IdB^Ooz?Dfyv`X8J~6cl^O
z$T};2+VCU+!ac)0zgtQ0{3QtY4EI#W9V*3w6H-(p$}KS%DwX9ELPPn_6kFqz)#X{*
zmBvfkS#wjyi_|+>vsn29vMd6!ioRURv9Sv!r8|3C4K9zzU|3rjB&R!*u<!U;4Z<fs
z!9JdL4b{Hp{CfVcL_PW9`{8cm%bVlR|8|(X3ci1Yj{LuXH|803^XB0_?K(iZ+i<0L
zgdUB&`1;hn=7_P}e)Mvs5!*k62kU)}68mX01cn5a!;0?42ja1YBEMikTf7jRb9gXN
zALX1WPc;ijy<7uXu9{4CgUeA3{E&J*Bl!QUv;OBOEdSE-Pv;mF=SAQYWgDJPrh}$r
z3t+xQ&4MDFrt5`kwPo1To0&Mouv*dIC3pc1P7fqScv%b9ZMkOIZ3xe2xMN8gAPEE1
zz7_WmrCFsnjL{RC=ia--bi~IgvbztB5ssDa&4E=qQH_i;@x2YLc5n9(ui!46h6e0M
zr*^F)UOzmwQ~5H|r5KNTo9v?Oe$YASDf{H>ZcovbvhmHT+yME+uRXcex{&Wmy7hzU
z!A4n*0i`ziX$KMKpUhpWknEbmW0#7UvJgR%`Ku6WERTTrWA7l`Z>Jrk^JY+K_l}TM
z5e0;$K=%D-#&lRJ8&r6O{t7_0UiWHc<WT$i+~H&LI+6Cw4I}W5#dO@}406~47HFw_
zaKLgr02Y?4zf8kT=wLKn@QGn?T%+HhOWZ4AaF|p6B%%-6(fvd;B)93c@NTX9MOyW9
zM<9_U`_7d0pmBdpSN7|7yg)>jmm`h+uCqWHL{=zNZG>9ATPU4viCP`~(c*YOE{~r+
zX!10-9PuRRZW@kVrVe4cCw2N=6z4B1v_BSiHR;a>h{lM<!Fz#(43aTB&r$e+B<wHe
z<Nq4cFAvyvn2{C`>`jSFp@UgQ?4?syN*l4fAPwZVlg!2OeUvnyr+H^}dbu^bI<tw#
zdaQS=l~K-AM+adGk6Vo$f>d={v^6^}G{tJG81VH7QpP3o_TF$?ZP89vrCZzYFNCu-
zpHHsxWwzdKjaOB$HBXv5W>2lQ{aSVnA^?Q_R$nha|Cs4^+A7GtA7__D5b8CQrq6DE
zUO8CqyqOS3->ixeOz&w?ZP0Jfsvro+c^ChtP-D=~aF4e?WO?j;E8xPLvKpp)#cDFb
zOb(^r9F-hThOlZgslRH?srEvS9f~{+TG1MIzgvx*rBSA`%AXeq!O5QwGqkcd>~f9&
z9ZRG1G)q}c)^)MxRG#S59Ew*TZvpC6YkeQQ-0>KXhp-C^NjYfh_oxuFpAV0>ppNrk
zm<~nqvr?Z|+8?*MVY2TqjmIdPSoyJBZ%&Q}E1Qt4hI;=@aIApz@*%7y<Nw6<&lAG5
z<cl}MKb2=NF@6I{hG0+x{2NRf^~YH-o4xnNLb;iFumPX@MZ&+4-fC}6n9X=kB`a}#
zvFP6zp>O0j&ws?FXdMJ!tg-Ul|A{iN{6DAvao#G&-Z-L^|EKt$$MpX+e!FgE?O)uw
zU!VxfTHHFL|3bc+ic-FszJJ6(Sq{`ec!Q-tof^59z7Kb#DLwyBz^Q$$MZF{a5BlCX
z7;p7`FMV-u0i^3+YjaM8D{&t&=q>&y*2!DTxVIvR?*4xQlD);vGj%Bw{3>sFJpQoz
zO??9#&Shgl@au$|E4Dn_)+|HJiGzItb7Pf5`6Pv_q}W!{P#4t5>Y%`{Q)=3lhF$_U
z>P)czZEk|-gKybU&@4K)^tXwGeHl9kAF+|7bfbM6nvgH!pIVM@6sTR>c!|$=$Ff2V
zXq97>w%mexTi?0!h9+{PW(v_9AiKi57}{1B1y9WH+x4Tez+KX2P1;Valtc(}H<^ac
z&8%9U|90mqr9a7v+c$zsGRd9`!&XYicN!$ODoBr5$zD0?wLAED-QxYBHEW-iT{*q<
z&%W(7>Zz-W&?oi{hM;GJ4C<bY1Iz^h#B`t)qnt-ZDQMY(Yio{oBGF{R71cgxveKKc
ze#N%Wu2irho2w2Jxs?2?5{|oB=v*lFWKZSKHnA;@P~_3*J#x$UUzPY5xFjpB(SPTZ
z$LkS@PEq7p%b7y@SNc*!`zUn!DDq5wdiieun*3)jNZ_$L+kx%I(TzNDC9?q+xu>uF
zS;WGb=n=-4UGMG+{z=xR_A>{87y|HryrnzSIf!P8_Mfq=V{W56jjl$1EEqF0cGIo&
z6IkGqri}Uww0V_)^{cvxY-dRb^Q8#R-&cD0(PRy(U@7%+SfR~L=b)ge&*eBVzf<>Y
zE2g4P8B}3N{qC0zA{yPI^TjsH(kgd&+tW{G^@|uOdHY7zaDh5jH<u$ssFj%2Q>2)~
zB3W$%y`k^V`cdNGoe@8>wzPOII9#X|qnOuUE%jDbE*)%TIXkXY`^AKMC9+m2J*l3J
zcSQ)@a`waMu57=sWvPm*78RpTdZU@88nWdTky%bNvx@p-fj<_lab3-~x46%z_S4i8
zrzdyr2H9`zvN&aF?f({@1)d_dJmfzkT`HwF*0Z0Y7P(~<fdgz0zP-@f{MDMKxK>&5
zqe=X%MKy6I){c40=Rf=Rb|k<f5`M@W`b%+%)Rz1aWEh8cKwFz)XsZ4F^a*~!JTM5j
zWNh-~4p%4o8D7geu!zzldhNrBA0k&>0z8}r#&36#@t$|f@h0wfih8~4AETGKZ9hGJ
ztsD}9&#ZNtl`>@;7wNcW)?pt1<chh|fy!mV96aCmREw#dUDHE#YF|t8NbsY(6X7HT
z*sIraEP%dX9v=)`+A+z#_<ivKFd|pUl(h6s%j^(i%VEnw#U?nv^SJ)OZlLYN=CIlq
ziv&9^f4{O*FBBFIBR>_uT`->t9XM^R{p8E^qdN!Xr0zhBbY*z<dGjB4u!HRA7y1FZ
z?{!L*)U*LunZvjVUyCfhVGn$}W2Cew881-LO3<Vg#~J<3@}gJIwKt4VPsY(5d?h-1
zjed&`*L;FQBo-=~yNL|I>A>%hrIhU`^Qo7*LINb5CJThdDdgmIgeob;$tV>PCPFDw
z=Y$jK|DNPGQiz(@8YfY_jXl&K>d1+F%7K@3M_&^yoz8Z{T|>3x4t5OX)BhOTB++l1
zQmdk!FpQ}gg6RnB<B_Di>X$8OE~A>nZH|&Mt8I}cq8p4r%x^HlB#ll4m3EZ&Yi@$I
zqbi;Wp9lwlFD9?(GaIB^@tEAdj5nwef{c~FatG@QlZXA%?fM?}F!y9@#*=p2ZuSuh
zUWc<16puk@FrqoX?z&Bltb0*@QQjuII6*V}y|ZYh_UFrP#87uhb5!6j$O2Yw#RH&I
z2c>#Np%M=EgPE%pXpB`JtciP6;dqQRy^(YLHC@9R;A+9?o^woY|I62iITJv3%(Se9
zrfqJSPEbRVytbAB5YSUpB^@>gOCOVa^YX0ySeBm9blr2e%h#iM46gBKM&v1>LM-RB
ztLng3aHt?cjUpb!+O*W%^~x@_AB)^HtJ-64Yv`2e%&(ay-*fS=>0E3u!8ZqCR+>ho
z?g%jXdOuJ;*J~?w0XA;rh}18RgUHA4<Zg+cs}|8aOoA7&UH>(#*I6l6mNe6}(zcFF
zJq0HD`RjmT$<U4`D~m|y$UOpN_P%kJ@yAEh>&cGfZ=XpQy<%?(7F8C1g8Ex3>yp%%
zITu>MdKHz<jI8}9z?6EMa!v-d#xS5wIb}bmL{+}Qwi;7izrBu`H|n~pP}j`vo%i|m
zTh2=uJN1EQ=YenM!K23{S>!J4vuqC!5CT3|YnOIV`mXvZKA;%z<6$DdDIz24O@BB&
zBQYaaFGTOJ9xt#Mtfiu_=s*la1KX9&%UJ;UI3n!`GZcWqdS7OI%Zc+A#Lkd_J7B)D
z?1BZwGa?`gJ|V&jbC)>2p#p~W!)g&%nA7L^kHGR65L~)(MxkBCN~J_WO2pH6jY5?~
zBH%z>U&d{nJZFgmjQU-1XB51Ex{+-gq!6ttuU?VY6tglKb4oBQ57q<&B!$bl1+Q9Z
z+TmS3y9)xP?D)&ia2&LuV=<m8Srrc~z(Vi}+lI1LXYOPp$#!<>g7S5%!r5qHtI6cC
zJy@!2t$<7R3>}DX2ct}?R396C8xMMd<#$k}>UI7byIPHZy`S-9<Rs_h=VS(A0{<O!
zby#Jv*(JYDb+JucF;`+wC^kf`=sAO4y8@=3mzmF;CVZTUPK!}VcLM4hikj}PjZd3h
z)1SGd?i?rs;DBf8&qF>Q{x22F;#Im{1>d?v^i3FQalL}bOtNY#^Zx$y?xE`i!k>KN
z#`!_Dsy8h%3~ItXrCU;;HuzbV2i(*V^%b=i)fROUCB2v>_o>~aBMStnvgolG{cPWK
z>=6`8z;RZhEUVXin`0Eg&L?RkY1G}LxT*LaBCE-}r8bYO$>mc;Wgwk}1|ZO^0w@7v
ze})4hf7TqoBfHkukk%N|BnGGh9D7{>D1i6#f9!PJ)j3Nt-YLB={bW7wW;ZW)>(?84
zEFc!UB4VT2enfw(h6rYL*E7sFDlsZIDy&x1{^F?Sq`C-4IL|-dKK}?toDcsL4}c)0
zyR!A+UN*K#`x~v*bXIm2be52KhcxPcN*7M=;XlT|^^a9Zgf|dLL*X+nq~x$W4KY%T
zV5z3{4N1<}%h1dKX541PW=v#MWgtv=OfV_J+0UJh{LJ7CCn0my;~e5R%TQ8GEx}!a
zMOeL1PUP(a_QR|+*p-HF9D3U&Hs;2$kwce5dAlX!Z8Y<9rVS1$Zg8cL5<~Yw<WaPL
z85z>#LEC!KLODZ$q3)p&WY4c$*ysKsh)DX#@n1=(+X^o<Og*<+dr^LfZ@v3@NM^`m
z;Fb8Z@@K(Mz|XdycVu>ydX!s!XJQUHT7{hNszkU=MF`0i?CFtGZM8pF&uC$3*>hvL
z)G)62I23x6dNh0F-sRoZ-jy{e`l|V6)Jpr347+vRvAsRZ0#FID>Y}}qE%hg;jdUYB
zen(B>QN0_ATWhzU7^4lNP2r@{;e064P8(aV+?tCaj!)Hh1Np4mw%E3bwyHLS-m^Bt
z5MQ^6ka6K6`+4Fy;0d3*VF;*AXpM3$?;LO*=BUAq-htL3@1@LL+MbVlvmC<vAQ?gj
z%9*b8oYg)qhMkZ<6m=SOX>^Ho>AkH)4yu(huBd@?oP$ntAHj|>4)u}Z597bEm6E?b
z&!kTMK&3!Y;k@eUwFL}8iRaoEDzeL4bNsAn<)hNKjj5mWuE-2Ix@^cyjS|A9RV*mo
zaN&{6C2f173M?h*qZhtvVsqeX;yTc+sA(93bs7_a*k_YJ@34s}1W+v|X9}7M5+zHc
zeWE7e9!Y1$yA0fl5A|kbW~vHg#Y&)GC%&$652Naa!G{@$cUA|@<oQbwqIrnbkV)Wi
zCt+z3q<pDntE4n=T9O&|=O%0-AV7tnwWIo?PK1evEeQ9Shk1xM1cc_#O<Nvv-rzIg
zBcN#qag)pxhB@~_!rH@p!&=R@$Z)K24=|bNw6IU2CkB-Aa#=p`=^7}tG<v~r9dEmb
z5JuS}*+-uswJtVo6Avg3_(o%VZT?D1D`d2)>IZ0P|3|b1zxnQGnOEAMu5|_y`W%{^
z?^y_Jg7!&x$%FTUp@Ra2gEsH<USm86;X+u=GirNVVty7oqmjV?Y+8ie_|14Hv9W{M
zgKL9t?_=!S$3y@@QYKLTa)&oHNAui0Hb_5cKZv!%xKnf)=ZxT$J3~QE#A=C8t%#z~
z8gfs?m_K7--FcZZVvn4@-A~J|nURvImA;U%kja(7^~I5s6Vs9VjLnTT<1Q^jF<hal
z#Jt4gFO<U_i-i6514K4{7`JZ9ZG^+7&92Q<BST7YC!{&ZQxS#~>6F2avVZ!)JZzGc
znXO{nrvd-aFC@S<gvFML+Q808v}L6u?q_goSnYy=^}5x%sUsVd(~y&tr5Vq6TzZ^Q
zf|R>Cjeoo}CUM{Knzt84WIL^6|NZqJ?<K!EfjjHrr%%^O-WeQIdK5UtmYtUQlv4$D
zcu46@pW7nQb<6~q<q335b*W}kl2bTCG*j$)6;l{PZd0Usvs2bW9vKinmDku#x-7YX
zXRUZ`c^!`GvYKyR@r{}c$U3a>>sIR(^v-px7+}%QF<Q&wjaIt2nEQIyReBXOcGNc?
z#20u>(}A;XS>~Tl=uY(Lhv>c%>Tv6E>o)`HtI!tCLfR{R`*BxS#-Vw)e}MBo3jP}_
zj%P)<iALY;Q-O;sLp6VIKZ8_m7IYA+w5zx|xGM{_d~W}B=s4*^^`O`%-Wz%cKYlYp
z(yYho7{6;Q-)xgKq<i~2C}nO8R-~KDXK0=x>bE+SJHS8oH)UY51FISwzE#%E>skF9
zsGDDITK1Se5$Eoz8fjYe5J|PPuOlWCa6G|;T0>|%_kOH3xi+D==_@TE+|2n+ErtE)
zYs&OHSQ<n+qN-C|D)})NCf}sn-v2Ywvvb5=d*uLvyK;R>(B9(+Y(IPNJD$^|y_CAF
zjpMewxKx4c2&p*BJk^&e$*~|f<3DRZdpt!v3qO-SbGS>qo4X@<^!Dv~t_L*z41Sg~
zt$NPz?++Lgvh6a@r9G|PU_SL2Cen?AKMs(tCO7sU60M8sJFLZpx_c3mNw2Ezm$@<E
z?w}3P4e7llsg^<<NFh??Y2qUwf)KY8`4UZZAjgSg7<))p?BLaA*UlM14_$8f9*9zj
zg5xUU2;)?TT6UUts&{hCCuw;avUw*Zm6Fw&2O9ybd`8>@JaRE=SxTi{dAc!#*;v+p
zYgb#73V2osC$R}?T!F5kuGy}^4THKTm9CDi=Rdi4VSE_1MaK~hlJi>v+XCmOnB>jB
zV<*+&rL3E;iDE<X=DmA(^G3Dov%~?JlcooX1cK*8>KmR)Jf%pb*$o*8sr|)Zj;~aP
z*C_CdV%jA6gO;_q8rd$on#4@a^qWzwv(?DbxW3)Mao{XaY8CR}P)(-|eCV`Kw2$5o
zt5}~uTsc}fTRGsPkxHxXt1hhOT9jS1)yBw0S@hQKI$@JM`dZOm9dX#UPk=@KbFqqf
zli~tBemmp+y64!cF5n03gJ(5hAsf1&_EixJ2svzO2jTO5jJdvdNwpM^y{v8j+>%x0
zQsYwNUgKHw*>+P3W(Cu__4W+*<saz#irwzn3Tw$6z+3V^L|FpZmUz|l_>ZqCEsYGT
zR<z4Yc-FKl$7rmjt_Gi1WGKPVU^HZxk?iN4j8at#JySFOsmh>7lAlTv@tY$hI!WKv
zl;f-uq$Lxm2Z~8RL#NI-9==aGGN#SGtBFN|yl1qfJc$bf4H^<t$WwMxZQHt22tN6T
zR$O#~oH=?v+}48b5>D5r7aaJ$0>1Z>7ep70UU6P=nR<f6IqEr%Q@m5~Q@^Z-*-u-K
z@UIoTO8VOkJ3x%rf^#{#HT@Mu5U*MOjdqoePatoj*u_nt&)QplbSuD32?%@Lay{7$
z)udy`P`u`y5x!G$@%9$sS=F86mE+}tFCmB@<mCW*>_9{_^t1QI$V~N#_rdUm#2`Rr
z=d_@<b3RV-unz8Tons}cPF<=;pi@w9T?kCCZk>M{G~m?c`Ilqka#sHo1TEBF>gY)w
zfTlVH>F$l)?h#V^>*dby*e)M52>a3c85s}b!jkXlV&&o}vxqzQIyK{%a<ZMOoIp;6
zUULK$ewqIIvdY0u?UrF11{+KpBy(uS>|N@e;+<L>tj6s%bBlW?x3~99_Xx{QofXrr
zecZ={u(i9j+qJpIE8_FaF$w;VrYlsT7(1$`4~4^*)^M&%2(RDsMr&Z1vHDL+T^lWP
zq@o;R36WK+xi_iNjka+KJ~R58#-q*Ef#rdrfj~U%e~XrXtW4P-x&PV!uu8C^7|{#N
zww>;p=nDRh97X@6_yT%?Gy7^v|4Q`CTcR2m-8vB1uUymB)fXt|cX@P6cH{Xtb<Z48
z(-GJ$yi3Z3@#yq$v}P^jO!cI`O%Kg|`7n9Kule2d=HQoB$~d#Gj1xC#lhT_q<1-ux
zd=r<dBfm=deyr-Rj%-G4fdxKja`12R4Nl^e{KC5miK!%w)F1V`$v<ezn{SdhQcfGk
zlTMkIwJVu<bzE9@ZDjRFM*hxG3Q``(KgctszWwsG*a|lET`DZpAX+Y^7E*@BF2dhX
zERt_N;w0T5y1?DPcj(5ewTFCI7oow#NP?$>8-uI(VDFxJ%Ncb0(AGWJz2B|1W|AlB
zNnR^hOJ7SpO~mun28{@%5s~lqOAynuTORi`Zp&9ZR0FhCq!@%jxMud{p5*Sef`o2R
zw}A?h7490w{zqJRO;P`8A~!p0RFLRvACCaur#IQ}p5h*Ci5m236i1|mkM_atJq|s@
zJtdp#n?WY>7cv)Kwd7uOOT+@W9hgK&=#ltkjvPD+ytr({tfffnsB!Sr{S3@JmeZe=
z5Upts3Yvu|XxT!N$RbUdID{Knl5l53P|56viGR#GSjrmO)8yG>42T`6P)*I+iH(u$
zH<-oY>qU0BB)Q;@{u8q&i8I<o*Tnj+jjS0?<21U<liX$)wmO|+GCN;*f;yl0GB`as
zeLmee-BXZ#8Z^B%J)@F|S8=EnsuZSlQYtQ(e;p>D|1!NdojeVkmN`sG!w91i_Y`B#
ze>BzQiQdV&`2Ew7C)dSpw6aexkM#$JFRgtE>Ix`}l}L<h4T*2EFl0;uRXdE9AH9Yx
z>4+<QF>FzNQvTk_%iPP=%RbEUo#TNQZ3q31?5I(nFPn^3Xl7q{Z`GDn0s;w2b2$I)
zL9gMK(Wnt^I2tUJITUdqhSTpB#jDW9*sIY--b=tQ^MZ-|AdRauV#{}nm$fDaDdAK`
zY369SAOdj6aUEG0pEf|mzWwy!fj25z;+HHI`CdYC60h0|o-URyv99#;cgutXw1f<q
zs(gAi+-0d2@>z?PugiqIm<$K*k&W--5B120`UuI16VxTi6V8Wu#a(yBEPhdhfA3rA
z7@io`vH0zZcqzEuUePj87Na0pLf)V%tAU?wEP!Kpcp9-U$@%0Vfu?E?o{(|-Mi5<6
zh&^K&LQlGtVWZi|*GAh$sYmKiWW+y^#ni^$#^1*5!{Wo^!?A)Rh%ZQd7MT-&Cw=|z
z#e!o(l3BXOtL?ri#t1GhO-ywZT97!yKa+m=oW_u1$%mtFay95;e$VPKj@K~M(T%y0
zSl5!K&pJ42mRz@2r)idhtxu>=3c-UAK?qvD+DACVpGBQTat@&n=$Q{8LCmx3m^#_b
zLEW88#Y-lqbX#aUDN8m#1X{>E_&vB=ME%swU}mnxVzwT(N=F51n&q8fgJXu<R4KW{
z;=O8;PD#OrVtILO8_53x(m*Z0N>`VzE8S39Q(9YESGuiqM`@GgWa(Z@Pw9cu7E4>{
zk<#Nur^OeFv9!aQORpi(rKfy1#K_Hcvb4MOT<L|<fzqMk<E6u;H%rG#CrYPEr%Pue
z6VWwsNwhkyjL(nmi!Y4l#Wit5+!}Ys1Myfq9j}Nl)9;P1jB4U*zNjr;6|atOif@V6
z#~b52<GbVg;s@i0<45Cd@ssh>@t*kkcz^tI{7U><d?bD=J{i9gpNZd3$P!s4{fPyM
zT*CZ>Hohi<#)Q3CpYSF^iFl$cQ5oBqSe{swSesa%*qGRy*qUfaY)|Y;>`62y4kcO>
z#}e&{&O{flZ=yHRXPHb~N(?5hCT_$l5~KRPiSfkk#9eXi6892wNg<h?%(0(LE=sDB
z`lLDOB=jdE$z-xTxiq;VxjMPdYcS^|H<(q)nq)0uU2<D;N3tooH+dl0k~~6qJT{)}
zNS;b|d)6h-B`>J!lLN`2<Z$w4ax6KKoJvmXvXZkYNlKZTpIVs8OKDPulr`lx54n0$
zfmAGdI+adUq?RS8QY&>?sWqvpRJAxtYEx=Usy@}2+Ue*@?N04W9V{M;R~1jC4yTT$
z+Dv_^lcvGc=~PeZe5yZnIdvs<Ej5z5m6}YHrEZxAQg_V5shQOMw9J~D&a!IL3(~pi
z{IoW0Oxx4mbSNE9m!&Jy%cGmpt32I|>9u0kpI)EdnBJV;nr=vM=jbK9i=&kE9<HLK
zo5d5yF^2kNrc&{LoDSCTd1WAdDBYSq7Om&^J>AYZc)F8!W4cSM4)Oh9noIXaHKZSr
zSh_EL$ygOlrw5Hynd%MdD(S1m9qAjT7t*8YaWU&p-%j66-{ZBmnI+P>=Y+2iu2H;9
z_!#JH&>qkprX@S&|4Ot^s37z!w&Lr0eEmnzdkDRXpMkCbEo$(9UXH#lLMQlsVKek_
zUoS>kEBF`{&#~l#pU{XBMFXMy!LPwNL6|F~85LhAJcV9wvL&B^{_HHQ+5!HHpnafy
zp#2!vm%#?$-$90Se)c~E8{w$<m1+9=9PES#F#0mZV~olu+x+0i;9G!Agl@=q*mA<7
zu(<)Wh<U*M;ER1v!arg7@V~%I8}Su<`89B|AR~cQKLO_@jNSnYp9cRgK_{T+8~FMG
z^n3vO{}OYjub;icKL6|;MJqT8^bMeIHQNu`4caS2z^?%vfM)Q4K794!YfxZs1QjpB
z&Ilx#_Q~%;MqGtG(AEpvFfZ&7pW;o(GrEK}NVdT<n4J&;u7KnQjMas)XpLmguqE=>
z8D-Brs9{uoM4Z286l|ccGZMcGoG#GqpxZ$=fo=jl1$v6<d3oHIQTEJSifF&0N+MNE
zGRplJ%K>_TQRV>WRYfgn2s6rF6*;hE32;6vc~$vOETjBSOtWTL9cvI?fSx+^S`Yaj
zKt6#{eul3Jd`)0p+kj^v^LPf^!D$EG1iA_I6lk8;lRUcoXBa(!dHn-4UsG(M5!)DL
z*D%Tj*iaA6o$$<C&~Od*zXc7gu)mT0FT9CWXhh#e^j(g=N0_fzhp$KYt5n9c6ssnc
zi5!-cu7&(JfKP)X!+O2ONHou@mXT<l*A_;i*{X6zqRBStai9#gErD%DjJ^b8y#`vx
zD47Nao|OFph`lWoLdJ`^c%esvo%S^N67VJPKkTHhKP0+|Q6_;`tJ$l{7qNELkbh0_
zH>CM(M%im32VVL`1~F5Nb)5IMa1lHFI3$llW`a>sj1hZ)$GI1Ax<I#sZU@~2x(W0Y
z=qb=;L|YhT$LB7QZRZsvqx>c8Jdd%S06mIb@kEA0H<J9KViD{KF$eZM1{<DWo2Bow
zwen~AHjus#uf7le90C3fR`aKj`~<r_hf(?oBtL-+<fWgmjF5}b_hT)74xjIbCHpb%
zH-TLkeLv217d)^Z=ei3X*pGAF1rO}U?)@e_u%Az~@J--ZaDEG)KZUV=gt4CDvE)Bs
zdR~D7w8-HR=c$#v)`wv8p$xwr{MFPq7kU;!Pp&vS?40|+i?Cb}X9{Zt>}Pme-T|MC
zqSq+&zYEDxoY@XOanf1gH$+!4N@pQC%m0n5tc6j&ADCd2&MH1(4kOX;fqoD4S<q+E
zSC3wL(3R+0$uxX2B>akYi-}P-1pmvJmN$ZflPg;xTqVw1jItFX2R59CRc_GV0Uc4i
z&ytE)iMB$&7urUkO$EvOkSqtM9JBivGK(3dAB!AFE&x7_nZ66Wh&euuIbOsZpT-<7
zVvbK^j=zHqi`fS0$2g}xj8!cVU(hnj#M4?0{Zp`~n)}kbpy&ICH3&A$q8hV^@mdIa
zMp+DfW9a)n`YyxQ7NMSL{wkTl+BGpsW<(C`$6RDffcWp0B{RHsvR#Zs)4XK=k&)=L
zpwFT&TNP#`KG`PyA){mlwmpvBat5P64)0ZB^l^-SUF2ZIjj-WQkpCrQ{)Df8!kImb
z*<A<!Ecj>9>pFU!#qGC<QF<0$m1E}|!`jK=lO^zj59knQ%JUK&nBx*y`z%%=AFJ>z
zdOgdMLK*NC^m-P(UO}&C*&9T^2l_1Nv*@LVydJa~v>GxhqW^(W_UzmYzvHm;UF@z8
zVeNNC8gm?jH);eU)1p0m`$<2<`X0vIr-2{BOKq_HkBrhbXlR3E7?xviOZP$Y1jeet
zSSKKP0+MmaoPbP+KyR`9Ta3~UjJ_D&vtTV2iyU~y2K|fS85=ya7@o1gGmGIF8$7cZ
zXJHDSS&Z{O#Yi-J>8tQk9Y%kEvGTCu4{*y_nO2s;CsvVz|GK_RafN9fi|FqVeOBCK
zm{%X<JHY7^Ihg6oz)sA!4=1-1C-*IQrUIUM3-WJ4ay=y9!uhSh`Ta=vTfVOtr5{1^
zBgJLr0Jkwpr-2_S-T>zf(6yjzK|c@rdC<QC{VUM7q31T!*w0V$D9UV%_#`~PRPirF
zzsb3SY$-;+$8oj1oKbpD<iL`@h7F^@$qc^2k_s2|vGbLRUlQj-MwycPDvA{siOyH_
z5&vVw+e|~}9BgR9tmi}yM)@Id82aZh$6?HI4s#sF9Op2{Va#z3HVngtIjs14#Q=?R
zfl->5+5ePf$om<kV{=wUjM9%$#-Obq+Qy)*AKJzgJ$#NB$$s|I5%!W)j`v!pxImnr
zBF@y|_WOwYO7}8KKFV-d|9@qaX@I4`Z}19Au!1rzqXa7`3o{b^F41<jM}k$8d?b90
zH3LUs;WseWD9=Um@1T!j+<zB28TkeH$|IJ;l5xyp8)h*MU%ktc@}IM$^xcfjBqM#5
zQS#BeIQ9J|@HDTZ+{^2wn8MnLQDr{pbByFA_UZ>1F_OVIz<GneVuxJhbrGJ1yb67<
ziZryTpkahjD1ZhP_a*ub(6yjzK|c@rdC<QCjrW(=OE6*8R6+;Gz>K7ya!+{!_WzGD
zZUfH#d!ps+H~D+)8TobW$rr%CCDO3u7JRr5xF25!@f8uBbU!SA3}3flrYgm6uxEH5
zzKlJ&olzp5sV9X8yb~CuUllq0{{)fa{|qAiHZ=SlWb&~_*MWyI%5~Ud5d9AiUl%=$
z^Ku>j$;WxQ4*%q1hhK+(@^L2|W+a+@rDK%71O46DIqyL8O{NuZGs<p?93EHkHdh;n
zt_96!vlo3E(YF_K83N}FI72vbL$Le|{4)eQ&!F#X!dlWc!zg_%lh?3hE+pT~;43V{
zr&2b+K9t{3aJ1>2TPESGwuNyX<~~m&;e3!ekArgtoX0t?rpyuf7xSg#Kp7;Di^v>d
z0`kWdzo6Nj#j5Sc*Zug~#a|U4V@*F{K1IJ>h<;h~Cy)_XhVEPb`jN5}Ck{6TICJ0(
zGl%Z3H$dYyV7~MnMhW`LR3butgyn@nVLSFJ^Yg*Kj{m!jg!$yvH{ex%9ft7r3`Uv7
zxU<SuM8!*qz6j1)aGnO|=ZLZYN{rB$FTKG?(N_y%3?OqTh9P-HzQA|XV(=G(Zv+1;
z!teMUg#JG0>_pt&hp{?YMs^B$lbEgF!oD(s69>l#juzR+V~Sj+!SNukm*BqjWGWJ7
z8u81@XNdkbG#rJ7KcK#$6KS0B50H;cBRBb`NJB$2pLfb+`R!}Q-upLXf4z*-e}l~9
z=(Qic^5@bLt{d>UyLnvUC&>M?75|y=kDymV&zF!lJqFH~m?MOcH|=Cpwum(NzYz0i
z)=Y0DkNzZ1)_I)blbBaO=5iAD*wMEe`t5W4X1xasn_=O5V(kdMUP7-3Y;J>3Y~Zws
z87SB2gf3te?1bOswZL9T&J&U4mB`?-&N3>IzbL=QXERH}sQd=rdejya|A@6agV|N_
z$rZ#m`ZK-<l(2jr>JQ47pvTT%mA_$B46ux>2|42ga{ozWzHP`i-x4bupi9KM0kUjJ
zN-v|=2{F@r@H)miMHc=T6^w4tX5l2;EWFAz{BR93>V-dRP_OuB)GL(iH$kk)Jfpmd
z9nQHSkZuyDU&z#In0^^D6PfCSNHhNl<m``uUkv_Zz%DV1&(K$~_eB5yoH*ad?3!Uu
zH|%M~I?l`F;AcqwQ@jz+Ag6vERV>ttgp0_pKSA9<5bJ@83GB29rnzz}dlj7j4$iC0
zq3oVHTN$OFfFs_tc)6te#C`SIT|$TQ8u15|yO_oeP=|3}fDLsbXHEvx5<Uq`03S!+
z{pfoE7QO`w8=>J%XlR6nMpPBPj~Ym$Se;`HbYruga>#gr5)n}+Y=Slk%gC#-vKvw5
zsAm1j7g@i&7V@uQ#J4fxYa$1lpMXC{!7pZ7whXt~``|wd-@XsdgLxJFzAI<=o}bsj
z^t?6jJZsJoR{=Wr&$R-XehTl!k5K1%iuK5U!1D77VA~I1NiH-jf(^OwgAWza`;a++
z9X<`o5{}b^Y(`lLPTWF{v?+$?JK3ek#~VQ$Ssvmp8D2C*#fsaw{T3pIndaRkeK!*y
zas;S_&V0m*xPj?KDBui8afxa1-bNht0b(H|_UD^S3m<~>CS=|eBOK`eD)NGMMj?#2
zVgvZ6`Sq7CMhtKowq4;{WnKm1jVsVI1bgcEeo&ZkSG<S2<tlEBC?cXPL=I1K%%jX!
zJWd?kRI*&e|MwVWxrjzCi}}U85F&&SUfUGj+2`?cUB)ZMGb$5p;Co|U1?)V+@ek!z
zJ;<#@6f=<?<S!y3dPfvm$tXcyCbJ<D8-dISdc6Rdj}e2t0GV5vXpK327;!B;(>Iso
z6@kqkz~*_#wmxN)9)~B9gU||cyrcqs71_ZMqQNtmT^;82b*$0X(d!LH`4ZNn7)1<>
z3bT9(qGiPV@+I)wJ%Q#fKgCG7A>R`Fp#krgRE>D=C{PXgG*<i&Ec}RX59xjETP5y?
ze4L0Zoa;GYxAIfs{0k%HU(X{K;|Mk+?ndU*iTe~Wk`_^194i=yh8Dz8Tq_7O%Ds4-
z9_RHUn)l2U$B=UI-pGf4&M}8h&1H=83bFvs{*J+iw?Kan=Y2mogW&8JBOIj(F+b<~
z`<35kn*W+ck^EmtILrHt=&wQYYnW+1?g1q%e+SW8H=?z7V9!lh_%@>4E9lh=dm1rf
zFJk5<#LPqBpMm82*sDK*Jnk{+N~MkXzXaaoIG=R3px15mLR^ZweH-rffRbam?aFVH
z_wL}lgt%%U<Z#7C7Q)&86xEDtsNsB?;jo6+g<_5*1@`tjVF$^tfIsVDTNHX0K+h`z
zzk@X*jotNKXgd$hDv{1qV!3)27j_coSHdvg*ur<17AsMZcd)!<4m-ITBVwflHCG5F
zs0vE|$h1_fHvBKpw@||w5NX)(W#%XbnIr!)Mz0Vnd#E&?MGWu?TO#{4&r#vT9DfbT
zFJpH90W(5h=?rXJg1O9aY$lI@9tQuINJFv%b)gQ}zZ!a)pl3BSm%|1dtoj(%c0+?1
zy%5Pr{{YT6!MQB(z5SBFclBk&IeM-#&AW)YmL8mTrn8oT(~g&-2BX{q=72NEafRYV
z+^gTgJq%AOUxJtLcR=M91-)GJl!)0hu=Z=HYpvzFoWg|aocKD_ij`P=9T01th}Ozb
z(|$p$gFQG*day(0UF5ka7l_t!ER?m3<21z_>VzKbiZFJ?gSqdKhK-q;IoAL~sFaqW
zHvS=MgNH%ygKu-iIxRHBu$oI)gLF*jC&_<el=g!&i@IDDs^ZV0LY|KrT_0@j6#v$s
z;2NV2ci=3dsTB$%eH|C~KW@bniYGZ1h0F<X4&(0&IV>YxC;q(y(Uc4$He$s2xCg|X
zR0IA9__>*AhwqJdMZ{MJzV3w2W3W~aP7Lxf)J}6zJB^7Ie(p;-9U?I?2L%2Evs;AO
zoki><XOAh4q9Q71&5C2JSuTg>B^b+xv6hG&^!l+_LxyeNh2K6!CBIF9dNMd|7_lGG
zT38uij&dCI0r-vk)<E(EBu~KF$lN9g=bJqD2dEE!8F}RcL{L`lr7VMmTJ#!+p0m(1
zj;ibsZs|VoJHYS8&Mbz_m(lAjMj;m`?gV;$3uxuqGU>mEJHHY;f$3T0R}jq-N+<D3
zb|IRY#QMI0I_gtG0n_087M%YE&Tk)liT_fA_c0$4Q72yW-$BD?kpB$PR2^RGY;b;t
zQN9Y9pWz033SZTb)QB`BwRnYp4b-C6H^%?2g>1RNHHs$~Wy>Ks$kjhNYB<tCyyFx6
zZ^F>cv!3b9UAG?h|9Yk&qeWbCDO2riBRUCf--4c(@m{MCNxlqz3pfsNTEO`sIIW06
z^AuclX+<33VGYVGRFIJA%RS(Wf4|O06lB5IPZ2{}Afx5mPw`VmxmYpyHENYL0{@ld
zb;QYgk?Fq<`#(Y7&9L?b*z<eXvl$lt9$)u}Us+x<EJirM#qeGmqXd5)kOi5hdzhoO
z^@!Fk!((s4hn0xBH=z1=0c)`toWBR>52*2W;w`=k#J|rVox~e0fFoq$=WOcrec%eV
zjoyf_;hm)sh38O7i^3i&{Bs9it(jG3j<`C5xZ8J%wLboLS|}3Oino<z{uccI`M^gs
zbjn|XwOP=!4^{<W)c`#I*WzCa@RsdH#@dFAbvNWE1(rD@JjoSWti^KVCV$}EL{@|m
zQQwvoW%db2St;zUJTWVQCl|w$?}Bp{y<GBMoSm1jEBK}US3W_?HSorE%n>I`xfPs?
zkU_MpYyjue2a8Eh9cL)Q5#a>Wn9(BSN^#8kDDr~$SVr*`$h?P>8|ANxdPP0ckSWI=
zdk!ZQfAf`1fwL0pG9^Y$sEwdbLUa}Gs4C2YM^vyjDZC+nnNOvxm-{ND(16OS+>e+%
z2Pge6usUb(^)E8(&N4q@l-a=1L*@o#^kM}`cn+ugIi_LNMaX!tZ!d!L&%%rF`HM`8
ze;1f5;WPff+57(RD6cC2_vd7OzM0ItGnpA8i!2)>vY4ibh&(C96eC5Xh?u5XijmEx
zm_^JYBJ!mXSr*yIQbfuZQ^c4>Oc5z&5rHDIG)5YcjVvOvS!8)4rkGNsJc#M=J?C@o
zgds^E@Y#R9&!f-F=e~#Yo_p@EbI-jqx#u0On<js+??64DhqZK|Zn+o{e44ZIY0ki>
zIb*U_$A6Wxl1$6@Y^djUwhCh|pIEaR%vYI){9N<5#Ch7}m1VQ_2+_TK{>s>lQcBt0
zJl}vXErqr=Ya!7e<CJU+e@!sH$~33?X|!%VT6bFQovP5o%=xwANS||Cz6QR0dVLpW
zSqS!7Vp(VfrN;koYJXp7)T)Gc1@_~dlBc4!=<uKBACTs7>WK@D62FN$%s^S+1g9Q7
zb`hL<nQQR#mo5HQZ~>?K9^{Ha2HyvoN8po-z`qU+MX33+sQGVD^Jl@C1(|)2`7}Q1
zzXp%@X<4l>uSa2CFU20L2t7FsD@&=+(6b1fC&5{SPkFzF&DWu}pM|#b;7kPPDf|`V
zB)$jumfCf5{V%drn4O&J7ul=ptNC1<@iR{K)#@*IK9cz-k;f`93U5wN;@c|ud*ua;
zS{3T{_h|LU&}w|UXjFqU1DtAbX3AeG;bRj>pFuho^ZkqHfuDkN80lBkUpBW8eGct<
zl>Hd3yaia1+55c!nQz0N-$t%O=<Nd3{17~RP@^?YTa5R_=IB@T*Y#WaZ6oZw$Kmh%
z3yl{3Jpp5{@q+OpzoXRnsqr7i&y3T?S>wNrU-6qqjaT`tq9*OaOxyIBL4G$VzYWwZ
z;&=X=Q_NCxs`;?z`QX>_TSavW^$N=e=t6CQRzuI~iML8yqpjCAYFo4>ty$Zp?a|t_
zgW6H8UF+1kw6j{bc1i2iu4*^5e%;W$x}&>#N*|>c>f`hh?S?*S;9ROYUCXB<joI*U
z*X6r*ImaZYpYWY1&V|wLfH?)8?@~VnLE}4qa}AzOLSCE_lFx|xQS4;#cYCAE6VTK-
z3tHJ&<|H^j1bxjq3oGNNw~@D3c2$z%oAtNL-hoeX%HJX7FJQDDGN%>vOR#Z#n?)Y$
z?=<z-P8!Jwai}MV)_r8Z+DgsR@`#(z3aEGArj66ysZG|VXr)@2_K5bV_EGI|tx}t>
zE!1kYf6$g{pVd}qPitSGet$-L7Vik&sXb49|9$O{_M-Oh+HviKc7}TY7utVm|D*j{
zyQck4yQ%$NOVb#bx<yNZN6*pydPvXJ!!#Zv^}nDod8_`HdXYYxfA2`2uRp0T(5v+t
z{VBap|D^tDeVP7$^i}%PdV~IXeYL(;U#EXj|7X2X->7fX|4rYoe@{Q4AJmWPKh)dx
zAL&2VU)DQ4&wC5KZ{zp0d&hep@RoQdcqe;Hy$|#I3%v`xAM<{k&o$G(mDCX)J*Y?Y
z1l47XK2|T*C+bruou-%Tv-G(@CDo{gp4I8~`f{qv8ht&LzC~}+oAq7#9=#3ax9gpH
zmws071}^EnG*@ou{f1$94aacrx>Cj{qtF;<lnh*xj8db_n2~kOHs%>sMm2G3@46Nf
zN{yw)3ZsGUnQN`lXl$aCudT**(%3?BtwilL_8W(dV@3z*tTj&3%sgjYpvG4k^y$y2
z;9Z$H)_RI9*!l*gN0~PItk*O?fkvr$&DyE)H*zGYo##}qMXqvA?N&}L57P10O00BG
zVW0V9{(KD${ruE37rEvjoq*loO{89n_f+T1&#|90`Fz40ri}(GOlcjb<`T0T+DKCC
z;8Y(ixxne-)VjhcwSv=T^Gn<c=qbZ0+%9_Xw1QK6H8k8r+KqHQ(tRfXC98;2b1bLE
zVY3RW4Ey<;;6&_7)Rw<L4>CvVVp==TDakY4!SePL=otl_N07JJ<Zsan&8_TZ%x2Vc
zH~$?9dG{fmjP#PK1Jf1AyWL#DD+2hXD&5UHZKa`^dkMAL&$NC4H3@2Q%`h}$yk=;+
zv)0+DX@7oy+@H+*<7kBmFV(d03PJ;6Eum5IHW9WGwi8;IXXS-ghF6Ez-2*JMA-p-f
zExaSVGrT*zZxEPwAbcczoNyw13OEx!AHH}Gu*~IfU-)|XR-SeT_`fGFm=_@=@<!&3
z$s3zjd=Ie9#Jnka)AGvmW)bG*RRRn0YVzs`^?A!dugY7Kw?1!U-j=+kyym=Jd3&<J
z|8L7Xn0GX<J+Jc~=*l~r*PVAMuQ%^1a3iljVnn<VM}cT=Tg1Hs{67^L6)7a76vjnL
zB9ra|ELR#Si_D13j?5c`sz~*K-fYxH7Dtw5VMV0jzOXjZ7}*rr8rdFc85XUPy}<s+
zVc=M#<Gye*ayoJ@a$yL1B3FQGk(-fp)Vd!;{n2nV9xVVyM~i^*(Fwrh=v3UNM`uRo
zL@T26qYI;pqDzKgS#)J|b#&c5u_3w{I<`f306U|*qx+%<?!uAi@gX=7J#`n(M9<$h
zE=Dg$`=Zx};Fhbo9yd4y5jT+ywEI5bj&#SkW8GqRV&3v$!Oy0+)7)}*7U;Qd<$Ym+
zTjSQb^+UiqmJ?RFYuxqj#{0q+x5;gGcMV{V+cp4xevoj~Z3o@ycDZNWZugSgi?Rme
zs(S<X{+Mwu#Jn*l=EhRl`D3GEg?C|GtYk2dcT%i0Ru-EPn;n~ndsVD@*!sK)Vzsfw
zv8AyUL(mXg8*7Yh8iK8{?RTLi);i$ZvwZP@uT(xRwl}sv<AY*{W5=@n$bgMxk85U3
zGJVt$J2_D2)3I~ebz)x<yFmVg=6<Y4d_e4qn!hx!V%MVUc->%okKH7s<5tF=<9@nR
zIs7~xj>qE#@zL?3`1tsQ$W2~f;*;Z3na^#DPmj-x&xu#Ce~r(NFJwO%Uld;wUlw1<
zYe0N;d>wo{wVCZbz9GIj<DcW(;ydCy<GZ=t@qO_F+!yg9@#E|}StoEJeky(@em;IN
zemUM3zaGDpujPC4gZYvC1otocl=_nUFn=VilWIN7A4BVp>gW8i@rwN7{E4gs&!*&0
z%P-HL#p}+%I-5O4N+<MY))ciCaGiK<%%7WI$#u(LkYAG-XUNmoVeDyL<~5JomS2}&
z&%FHQw1#g};Pv{zAe@nPnb#|<$Giq-)?$wW*$>(_c#T~k$X}J$#K0PxSyvVE*W_Jg
zWY$O^vo>a}m3OU?nRQYje?6^(ycY7>N9$q!#z-{-d3c?x6%6<+LjIQgCfu9zcjfQN
zZv&tFNB+V5qxtRmo%vn)XY;%BFTsv!4)gkfc}w$%=Tm-f{?+^&`TgvR5=O#{d6Ah1
z8NW!j#d_G!B^>fiYL4)DvEM>|<pYPzt-<q3`Ik)np@aNp!cC-j%oC#$g#-Cnp5|L(
zT%sf~DFMHeC`-&p%udW>9}d4nZAerlsuQ(|#mILrAEfG)SgQPZhQB;ZM%5W@9qf-Y
z?O{Kh!JGNIH}R*573$tV<4|@7L;Pg6uVnw2@sU~nkY%BVW#}3AL1JyJG|`yYl-Qcs
z&fvWbk2mjW5-o{V@W^K+_9pfx4kwOf_AiN!#L2|z#5wpe+IJ)_Bzmx)AfJ}FlDL+*
znMh~$1W7CDXMcwEpZ5*q>yqJQoY&}NL2`7mC^<ekAvrlYH90*wGdU+&k({4gm|T=x
zl3bQtnOu$inDUpL7ke|cZ^E8O?NOjh>ELI{b;%9vFS%X=`?}0NEPclZ1DQRH+Iz4r
z-j5|WC%5r_C%GfJGn1d?xjpzl^%wS8)VAdA<Ua6t-<UyWpO}rod%?`!FB_^~hwSSz
z;JsJ|gZFfqJ=!pPv*ZE6J@;n3_sZUX(VlBy-<7q;;<_R)$z=Lu$lRj&mpqa@K6qXw
zPb5!e_E^a?$@9sJ$;<4EGIGhj<aM^|<gJv(_B7zfScc~u*&p9io>VXuNhLs!OpQs6
zO%*e;=UZxGY6|;^)U;GN+h=N4YVMGI3?WsSTEKuk60nyczm=*<)!|;BTArDMJSS4C
zQfpG{QyT~7AI+=OmQ)kZw^Va#S87kHEp;$;l-HgNxV`)ti~EV&oN7;Xrn*vRSvUKS
zRCfwKI3u6xO<hghNcE2}MtDa!BV6`HS?_3`G@^7w8Lxi~_(|FmjF^G<G*_`d9#K7_
zmhF_+!V!z{wr0GinfojAu4ew6z;9&ce&Y8uv;2r-BRcS|=5r%1@E(x;f5tZtytSD@
z`gomT+vc~!alfl~Hy5y-6^t$@;(p|DEEr!f0na8EOl2Jf(+g&@FE5x=P*E^H>z&Q~
z#%6wBvwBlA_b<P#8Gek~&+lx;{Y1ejwugatH}@4>=QlQI?1%T@y#L_$H}l(@`Q6Rn
zE1%16apw0ovwof@+3#^4u+_}xfXo_2^jm7)Qipdv*S}>s^Z3hEJ|m-P)>TeDF6du@
z4&kj50nqOT|2yFPQq!%kds;Y6^WQnYo>Qmko)OIPi~y$+Pb)!}fi4r8C9NyqTmk0_
zIJd#M%^dSG)8=KN`KkGBaK6nPJIJ&h6dHN^k+&b(`k7--h0Iju7#7opB{bwWL4FfB
zU&7Nb35};kcv^(g{|4p$jnJq`wWQ!I!P6xucRq5>XWH{~^uy0l!?CEzSfNq39B^{L
znF)HP(0KYGa6SY*uR_nO&_5dbM?<n2GN^-90e*$h(pN}(P`4h`vj>`?!4?gp(bDzE
zyPi2YBbm+_DKwtG4Nu<&4L^Xk9|#To*TK0CZB@`*g*u?OE%dheGGtx`|8K$nThN~Y
z{TawKK&AooY|yhIvl=q1K`#fr9Q1RbpJQ5w73pF{ussX5XOv=0OQG|}(D`HVFMxjm
zH2TLt{}@+6UxoaCLjFI|{~q+e2l}6Z{%1hffUW`E3c3~aLC^=G=OyTQ3H%qpe*yg8
zg8y647;6(_Z9WeAamd3aE!d>_2KaBFK4_Om+SLhuC+IJL{sQQyKtBcfcS8Q1&^ZA*
zCqM@FV>L>Or;9)@!qY!M!ynKypF+=k3jE{X9~W(~koO_i`!E(~FcxPZc@&aI!S4mX
z7yNI4{|%964MqX<7l4CubtxCEHl)=H(TasAw;3figPsI>66h(Qr$8P(<3Z0DC!ps9
zN`EU#e=Ev*4Q0IsnLUu%0~&2K&_?4h=)=eht21GB_5oP?0q|kTrdaaVKz|MN+d;n_
zG`y1u?__UA-p!!fLARs+J5c`}pu0eKA@6m}wFXXg@sq7c;i>ExG{nRP!2clfeh_-#
z11<PKOGaEg#&gKK3VBzdCVvI`ub>A#W}?Sz2a*nY19Q{B+%yV77s6Ng;5U5Gd<mso
zf}ZE0=XvlS0{<cCgdSVw_%!gRfp$QnEbsGNt`~W|XrmWx^q3e~6MEhcJ?}>yzK1$|
z53~!~h5QKd=jg)|(D@Z;`wArC=X2oat<xy|G&GNa<}qjmJg^B5Y+~$8jGa}9_3r1;
zuY9TaOqBIqNPZWR#n4=g`e43zFkg&^(T5L1a~tH_AdeNnk`)2--In=Y3z=Hf9IH|e
zRwWPowr8ZwFVx{D(C`y*pv{Cf<BKTqizww4$h-m#UxtP+gT~6}k(CklW59mQdg!Sa
zpMW;L74vrwEb}##3twT0ujqq(AIka}_&)>P0=fk<Sba>aKIZR0{|@>~P;Lq81KI=H
zM%`@G&3X`e9z@<JkoO7Dumls9U~UAx5j5IpqK)QO&|A@yC()B9VQC+MZF~e}VfSKV
z_hO?zZS<$-r>M_QkryM9gAwr{uLpT8lx0a-@UbR*toa_$?-9?BKKv>;UqvZcziin%
zy$c%N1^T_9-wXON(2qgGDdatc9{V+V?AM@w5Bm3zUkmxQsNu&^!;gdiVemhUa$&1B
zY}K9!dLr~}fSwJYF;5N5Qv;)BVAQN-(6bCQdcZ;tn5d^I^~C6#7=05S)fA6<2=pQ3
z{RHxU0yO5eg?VizA(KS?KZ*K(5;SJ32eUN?GC7d3U_}<J$X<cAtbjarj2`S5EqHqi
z-rmAmX<@B2v3{9YzwBJ(&4o+^G7->Nqb;n_CVZL+pJt+NChBHj*JQ}933~<;dj=b2
z*(l3e3O!3fe+%@tK<@&*3-a(zw(LT|H^DbyfhH`_{t;w;1b#R8-Dod-sRzE)#2&!J
z9>BPUx?MwA@WU4Tunieo_6ZmlOUC6z&@V!dAA0=I-vs?lkb&>A#CIJ5eFXAzAU_9m
z3UmrI`qo6>n%FCv*eiP0LFYQu6Mbb!UtyM6m}S;4LH`moR%%OjBk+M1e4viKoQ}Pm
z=V|DC8fASBWql6%Z$bYp@Ue3+v2(CiLeEOjXF;EZJiLt|-Uc>r!sg|aj&@zU#iw*a
zt(1Q99;b9>Y9G`-bk|v(r?f>{-F=_fd0Fe!PTqBH=d$)2?UlPu?^pvTc18`H)p>Hr
z8J*7$Ih*tSfs;9%)_Uuot!J&R)&cAL)=O5qb=mrj^}2O~Kl^Dt)XE<13YB@2%CmGo
zl@`|v^wE?S>ErbYa%oq9$@)}%y1HiSbMy**zP?ajq%WbGtkhTQ>+}u!W~##ueW$)#
z-=`nYkEm-2a9ls3pHkNu{k(orzpVG^*Y#V5W_XOC5g{sJj5Nj=V~Hv@CK^+WX-4_L
zr5Uq~xkjb2z^GAIol$QrC%ILqC)Epb^aQ0+In>Hu8o$su3W3kOZ09%snWH#T+}w)u
zH3oBx-+;e?`EsU)kJsXSG4rc9wYxaA#)EUsI*Ai&tY-=MV{pFaGSi-V$kZS$hyFfj
zyN+`%73$2(7>&=cbaSo1`A2mwX1u0O(`c{b#LbL5=Vi28I6>p$G|g_LHGIlOZ((i5
zDLI29d`NBqZ9qdG(q%|@nHw<v8tSltPyOKZ%3MBQW3=Ps%LLF9%<r)V$lu19m#8{@
zL#g&Fma$8q;U=f%9ONy-`I^bh(W6!q_XBdpabBhfGTYVpn%x7lZ-v&tv(I=3r6n}`
zA~f^fMzgL2vySInW~MFDK0&kV8Jbx;X;!^}S;ccIGn0O!_0sGK)4Z9D8M6R0W(j6Y
zW}bXcKY%`{BmH+yHx51D*ml<$$DyYjjk``dj>2h2PRHpblupu1^)kLRJ-z8RpYED{
z`y_uB0bRi(V4PxFe*|<To|b`r5%gI|t_1A`JsD5`9l36S|9`<B1OC5)KN0j;JoSM7
zJJA0m8kp990m)uGT`n}9Mx<`wTuk$Mrg4yoKtnOoYCJt7DW0a7R;L~N4Fe<j*MC0m
z<oQ!M??iLSJJ!ncjvaCpdnbCQc&80q<@{ULxaJPID!mK%m#cBrdF$y~PMpElD(@Qa
zdb&2!wFOrb(q{hMX?5-KwheO~ME*AKQFXPetJB*>*I7dMFxMq-ulMS}bpx_;^~>cm
zhFo5s<8ytffoqhnP+jAOTqV9qnX-JPzA|5#_l9rMkZXo-wr`$q9?Gl2Rqd;#bTQ{p
z*V19MkMpfS{&AU}^);w#t*?=;O@!IQTwA?ezU`Tda<vRxt#S?RDc@e-eyY>qf$NyB
z1J}u{p2%FMedov)G8fnDg0E-Lb%k)vcN16Im-bu2_xt@}O5+2zQsX`9FYu2Z<|^`!
z_fPOo_D{t%-9J-ZbNm(b|M_$+^v}=IGjRDA`5O2ay46+TUzWL4?^pR|uzmYi!g3e*
zSNqqojrlilPxv>pefYN#wF9l~@$dBSMvZnuyJ#Xy@$bVJP4XY`A7RRWoO|DY0zG}j
ze~RYL6yHgjH?#a_y#4<3)XTO0i=^SQzmIHrqyIWtdz=53uO*<7C3gorfuJu<<@S-K
zwEJoUkw79a(ziV@CNMToOf_cv?+#2vD>u@J?e(??rUXWMYXZ{(<)n+}ELsFfnJYZH
z?cVypEdOZVQt#NnT;g|;+%%eXU4crXrucUR7I<d`Y65kE`oQwQs=yk|<$AdS>jOMn
zHwLx@n&@f{?4sG)EHgH+C(wq{sHDI_stx94pq(@~1v&#=fwO_`0L{TbubO{61N#G4
z1D#}RwXnAidV0e@-j@#a`#OR~&>M98GlMRTE{&GIFPI9B3Kmk&_4r3qoqB!ygX4lF
zzI1RBU8TO8!4xczEf{0Pa&(c!a4!YR2s5bVqrBb0*~DKKoENMLmIkYXRCaK2aA|Nw
zupzjX#$|V~k?lRWDY!MbJ=hX#g^kz9m<RWgtu3Td_Xj$Ihv_;N?C{6=qGu<Ajlt7o
ztK<Ds>B%{&{ROsDO6LcAf>(mqf;R(ef@xnv$nq}<`T1Aoxox3vC?0I2b}sQR<MxFL
zd~RrTsEB%{Ff`sfjjS|9HNNQW4owJ6CO^|3no53RT;N7%dT3^7jxQCe2)2gihZgd@
z_V;mbg%*XDgq8)pp_QT4WTE6a$RZusKtK7a5|JQ{>p~ky7kfKcFeKq+V8MO9ve0I4
zZ)ls(2<@OJEhLws`ZR`i66FT>hj#l4{VRiwp?#qPp(CN=>;*HPEOf%Ri9KC#lYgIo
zU+7fm4Eedm;_E`^Ll?O;E-7@GdZdrN8KsS(zR>m1Ek|=aPSD#G+%KLBzN^)L!ij{=
z`)4`{u8A{}#))i){y)YU%l0FezmMuY&M9V}<V*~fI#c|Uy*17>va22{r6)9<yhW2!
z?vFdOoVoO*(pf;3vDm3`JfVtEg;VDr?``r=^)-6ioO)liv)ow~+UKmHQDo0Pj@E><
zZ-uko*XV3?wgk(ZCYn86p(3Z*UqN<RMI&~>Swl0pmVDNHZ<n*n+2geNI-G;fQK#MM
z^d9xKI$h3LhkDAn<n%gMeYMUF(pu~E=Ni6wq`4}z&RO8A4OQfNbDdl_H<ddow~*>M
ziFCJ;udmG=ms^rM$=j7%>Km6^Msumg*ONPg^7PR7q;qHcIzrQP=g}BdlZ{OG_c>F1
zRl$<ns@&?_dDIUrxwW~AbC(9k<*vwW$X%P;n7b)=YwimFc)D*7&dzPgZ6)cwRNJw+
z`*RQbm*pPI?Z`cud)jIDZSvEnuJoMS^!d{&<b9)6n0}5v6Fh`H<UWm~{?37JNFU-)
z3CuBb@k!<3^f&oa2<TFzY5EjSpT?jk%&GnW%NSRgrqA*$vlZI@8&6w!H*0r6UdPjB
zF2yvM_Phn0-H`V}{zZPOUkAN0jhF$*%t^n%J7K16`4qJQ=~$#|gu^wlRzce`v}-fy
z$!J$KIJ>|(jCQ?(Twg|uR-nYuXv=oAr2~?6;Mbxi>ruL2KEtt2y97^<A>D?Ww}74j
z`E#hxB5)2!xyTy_|2Q}p5&aDMq+FGlg#K@G43o4S_343R0yX@XG<}NIj&N#@g3O59
z{5{HQE?0XU^;`^X=TzI7vjlq1L#BsQvlR4s@OR*I#~zfj3Z-0<Q9wEo@++8c_JcDQ
zZ7fdrBc`sO`wi)OPW4`-7r-fiOb_S?_y@pw1)Nz(Cxd^CQ}cc3fe9F|cGPV-O0Pk=
z7hpLST2v(VbNeF$pV9WARuQJXaZYn8#8$blJPG9LVcMP!nIJfoV!fQ#Di959Z~9v3
ztVnZQO&#jF3$#D|QMR!(N2)}T&O)ws^x-3*t65UNj$Fl{Z$Ppg8a9G%1pf@$-U)so
zIKRWwXTUiJZO?%75F}sals@Cb9?%2jsQFB^;#a7{1s-<~tkKxa?X|9OO8s*PZ8?Pb
z{!P@7<<rnGUXAG?XlTY?2zmax7?BU)>13prU^!jTc}n$|^aIzq46V3;UW$VsLRtaI
zI#psntg#<feGL{OlH6k>nI`XX4Ss-S<|Ew*&PO4cLRl$Do<y#8$ZS(K#!qj;iW)f8
z)5_N+!N;7%=ueS3E?$mpNj{;gPuYF+DVk?4r8xz#DEJWbGV(4&3cqLVMgL#ra?M@o
z|H53jhPlADG*|heYp`?aXRi4vv_-6LJ$j}WGT#Be4y`B${V4b?Xx$mmyTPBHK8;as
z2E7D5e~rH*M~SnP=PBWD+AwNu82z7sj}{p}K;FX`>%}tSEJL#faaL%Ze5bKpY=HYv
z+rl#Bg$_X{OUA_~E5DsYOAn!?tg{V$<udIVjb2@bQkqb=CTN(W=05AGf(4F2x&U>!
zqI@`~70}-)zA?QOBU^&CU<+ze0(lLq2J2iyvRtc$m?;Z+1aCh^^gN7pFJzX8Z$~{F
zrT2`NF_#a)O1WJ}Wvztd)8NlV8#lv;&jDvNRtM?lT}ZunItuNbhL(0C-GH<on#(Zy
zQ<09wNM+*LA{@^aIu?3K`*S?opU(F?w8n)iG(9|@?qsjwMOI#Tet6-1VG&^oVcDBt
zrNU~3b@z!4gw4ZXo5Bvl&ilk}!ajuq3P%)<tNRJUDZ&}T`C)L8aQQyaN4QS7CCH;5
z&GXz1v~3Xbf`btGBak4B90p^C(aRV+2*vk_iG(SHX>WpZg;@%7?-P}T1;e05p^i|0
zpIA;<rLaa}y~0Ly-$H02G!u3WgFS?{`@lh^<ETPAp>q(rhQZlE=>8*ciO@R?t`cqx
zgZ@Eix<5n=f>+ItVZhHK4#8D)>OL`wP&f>{3gZYR_lZe_(kzr^AtN(G-DeZ#5vsDv
z%0{)i*WL#f6P6CjzhV#?h5_eYOK2o)QunQIQlB@&c0$WAXeI0&2Kxu$aF*}R_O}^d
zsr*>vSa`s{L^{HE`;Ux`WRGj6zcYPwGONy~@2=B;Kgsq1nfa^c7Oxo@n~$8k+ori3
zejd3%=pkGYAHnNO<eKogO_7^~wD{Mk6^5UT`UzoK1EO)|+qu1D@6m$rfPapTCKO3~
zqvNF?q7%aKm#mW!olKZYm`<2Um_w)_WcpY2C+EdFnOVaQWc4%aStvUAS(N0WOH{oE
zkJF$r8dy^@<CK=QF}h6EZDm&e%hDG7f0?X#XxnPVTaty9!(i~byloil%vxWw*Vqis
zWMT07nprRZH|t~~eD_*7CVXcN%v$dTd=??PPThITH!D8*k0|#e?J=U%rs!_PZ;<r^
z^Y*aJrzq_yq6fqmMUSX?k(mb>zi5aa__?yIIg%E?h5X6~4w+kn=T*kPWad^{)&IB}
z^AlP5Yh}JgX<rjPBlV6_Uq>%0AKswaK(-O>Q~B=Ye+K*U;bby(9?l<UP?d!@E9+kV
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%0Afu#Es
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�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%0Alti@+Bf_x-ifuB$l
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%0DBM1R2=v@^QHL~Y`zbi1
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�nre_)2J7je6-n0qd_l@lsIMte;gy
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
literal 0
HcmV?d00001
--
2.20.1
1
0

[PATCH] KVM: arm64: vgic-its: Change default outer cacheability for {PEND, PROP}BASER
by Laibin Qiu 26 Aug '22
by Laibin Qiu 26 Aug '22
26 Aug '22
From: Alexander Graf <graf(a)amazon.com>
mainline inclusion
from mainline-v5.9
commit 731532176716e2775a5d21115bb9c5c61e0cb704
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5O7IH
CVE: NA
-------------
PENDBASER and PROPBASER define the outer caching mode for LPI tables.
The memory backing them may not be outer sharable, so we mark them as nC
by default. This however, breaks Windows on ARM which only accepts
SameAsInner or RaWaWb as values for outer cachability.
We do today already allow the outer mode to be set to SameAsInner
explicitly, so the easy fix is to default to that instead of nC for
situations when an OS asks for a not fulfillable cachability request.
This fixes booting Windows in KVM with vgicv3 and ITS enabled for me.
Signed-off-by: Alexander Graf <graf(a)amazon.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
Link: https://lore.kernel.org/r/20200701140206.8664-1-graf@amazon.com
Signed-off-by: Zengruan Ye <yezengruan(a)huawei.com>
Reviewed-by: Zenghui Yu <yuzenghui(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
virt/kvm/arm/vgic/vgic-mmio-v3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt/kvm/arm/vgic/vgic-mmio-v3.c b/virt/kvm/arm/vgic/vgic-mmio-v3.c
index 11ba1b036b82..795ebd385dcf 100644
--- a/virt/kvm/arm/vgic/vgic-mmio-v3.c
+++ b/virt/kvm/arm/vgic/vgic-mmio-v3.c
@@ -337,7 +337,7 @@ u64 vgic_sanitise_outer_cacheability(u64 field)
case GIC_BASER_CACHE_nC:
return field;
default:
- return GIC_BASER_CACHE_nC;
+ return GIC_BASER_CACHE_SameAsInner;
}
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] dm verity: set DM_TARGET_IMMUTABLE feature flag
by Yongqiang Liu 25 Aug '22
by Yongqiang Liu 25 Aug '22
25 Aug '22
From: Sarthak Kukreti <sarthakkukreti(a)google.com>
stable inclusion
from stable-4.19.246
commit 6bff6107d1364c95109609c3fd680e6c8d7fa503
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5M4ZO
CVE: CVE-2022-2503
--------------------------------
commit 4caae58406f8ceb741603eee460d79bacca9b1b5 upstream.
The device-mapper framework provides a mechanism to mark targets as
immutable (and hence fail table reloads that try to change the target
type). Add the DM_TARGET_IMMUTABLE flag to the dm-verity target's
feature flags to prevent switching the verity target with a different
target type.
Fixes: a4ffc152198e ("dm: add verity target")
Cc: stable(a)vger.kernel.org
Signed-off-by: Sarthak Kukreti <sarthakkukreti(a)google.com>
Reviewed-by: Kees Cook <keescook(a)chromium.org>
Signed-off-by: Mike Snitzer <snitzer(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Conflicts:
drivers/md/dm-verity-target.c
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Zhang Xiaoxu <zhangxiaoxu5(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/dm-verity-target.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index f4221c4e8d3d..e6dd19d14cde 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -1242,6 +1242,7 @@ static int verity_ctr(struct dm_target *ti, unsigned argc, char **argv)
static struct target_type verity_target = {
.name = "verity",
+ .features = DM_TARGET_IMMUTABLE,
.version = {1, 5, 0},
.module = THIS_MODULE,
.ctr = verity_ctr,
--
2.25.1
1
0

25 Aug '22
From: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
zhaoxin inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I40QDN
CVE: NA
----------------------------------------------------------------
Fix a logic issue when display Zhaoxin XHCI root hub speed.
Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
drivers/usb/host/xhci.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 8fabb8757fdc..fe042cf13bf8 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -5132,10 +5132,10 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
if (XHCI_EXT_PORT_PSIV(xhci->port_caps[j].psi[i]) >= 5)
minor_rev = 1;
}
- if (minor_rev != 1) {
- hcd->speed = HCD_USB3;
- hcd->self.root_hub->speed = USB_SPEED_SUPER;
- }
+ }
+ if (minor_rev != 1) {
+ hcd->speed = HCD_USB3;
+ hcd->self.root_hub->speed = USB_SPEED_SUPER;
}
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/2] Revert "scsi: hisi_sas: Modify v3 HW I/O processing when SATA_DISK_ERR bit is set and NCQ Error occurs"
by Yongqiang Liu 25 Aug '22
by Yongqiang Liu 25 Aug '22
25 Aug '22
From: Xingui Yang <yangxingui(a)huawei.com>
driver inclusion
category: bugfix
buzialla: https://gitee.com/openeuler/kernel/issues/I5NIU1
-----------------------------
This reverts commit fc8110704ff013b290836780cb25c9c399648e13.
After an error occurs in the NCQ scenario, the policy similar to the ahci
driver is used to handle NCQ exceptions. The libata interface
ata_link_abort is invoked to process all I/Os on the link. Compared with
the current solution, the code modification amount is small, and the
possibility of NCQ being disabled decreases. That is, the probability of
performance deterioration is low. So revert it.
Signed-off-by: Xingui Yang <yangxingui(a)huawei.com>
Reviewed-by: kang fenglong <kangfenglong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/scsi/hisi_sas/hisi_sas.h | 4 +-
drivers/scsi/hisi_sas/hisi_sas_main.c | 81 ++-------------------
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 2 +-
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 2 +-
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 97 +++++---------------------
5 files changed, 24 insertions(+), 162 deletions(-)
diff --git a/drivers/scsi/hisi_sas/hisi_sas.h b/drivers/scsi/hisi_sas/hisi_sas.h
index 8628dfea9703..a791401be7b3 100644
--- a/drivers/scsi/hisi_sas/hisi_sas.h
+++ b/drivers/scsi/hisi_sas/hisi_sas.h
@@ -600,8 +600,7 @@ extern void hisi_sas_phy_enable(struct hisi_hba *hisi_hba, int phy_no,
extern void hisi_sas_phy_down(struct hisi_hba *hisi_hba, int phy_no, int rdy);
extern void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba,
struct sas_task *task,
- struct hisi_sas_slot *slot,
- bool need_lock);
+ struct hisi_sas_slot *slot);
extern void hisi_sas_init_mem(struct hisi_hba *hisi_hba);
extern void hisi_sas_rst_work_handler(struct work_struct *work);
extern void hisi_sas_sync_rst_work_handler(struct work_struct *work);
@@ -612,7 +611,6 @@ extern void hisi_sas_release_tasks(struct hisi_hba *hisi_hba);
extern u8 hisi_sas_get_prog_phy_linkrate_mask(enum sas_linkrate max);
extern void hisi_sas_controller_reset_prepare(struct hisi_hba *hisi_hba);
extern void hisi_sas_controller_reset_done(struct hisi_hba *hisi_hba);
-extern void hisi_sas_complete_disk_io(struct hisi_sas_device *sas_dev);
extern void hisi_sas_debugfs_init(struct hisi_hba *hisi_hba);
extern void hisi_sas_debugfs_exit(struct hisi_hba *hisi_hba);
extern void hisi_sas_snapshot_regs(struct hisi_hba *hisi_hba);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 5de1e8ba5c6a..93df1c6b94c7 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -229,7 +229,7 @@ static void hisi_sas_slot_index_init(struct hisi_hba *hisi_hba)
}
void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
- struct hisi_sas_slot *slot, bool need_lock)
+ struct hisi_sas_slot *slot)
{
unsigned long flags;
int device_id = slot->device_id;
@@ -260,13 +260,9 @@ void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
}
}
- if (need_lock) {
- spin_lock_irqsave(&sas_dev->lock, flags);
- list_del_init(&slot->entry);
- spin_unlock_irqrestore(&sas_dev->lock, flags);
- } else {
- list_del_init(&slot->entry);
- }
+ spin_lock_irqsave(&sas_dev->lock, flags);
+ list_del_init(&slot->entry);
+ spin_unlock_irqrestore(&sas_dev->lock, flags);
memset(slot, 0, offsetof(struct hisi_sas_slot, buf));
@@ -1015,7 +1011,7 @@ static void hisi_sas_do_release_task(struct hisi_hba *hisi_hba, struct sas_task
task->task_done(task);
}
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
}
static void hisi_sas_release_task(struct hisi_hba *hisi_hba,
@@ -3751,73 +3747,6 @@ int hisi_sas_remove(struct platform_device *pdev)
}
EXPORT_SYMBOL_GPL(hisi_sas_remove);
-void hisi_sas_complete_disk_io(struct hisi_sas_device *sas_dev)
-{
- struct hisi_hba *hisi_hba;
- struct device *dev;
- struct domain_device *device;
- struct hisi_sas_slot *slot, *slot2;
- struct sas_task *task;
- struct task_status_struct *ts;
- struct sas_ha_struct *ha;
- bool is_internal;
- unsigned long flags;
-
- if (!sas_dev)
- return;
-
- hisi_hba = sas_dev->hisi_hba;
- dev = hisi_hba->dev;
- device = sas_dev->sas_device;
- spin_lock_irqsave(&sas_dev->lock, flags);
- hisi_sas_dereg_device(hisi_hba, device);
- list_for_each_entry_safe(slot, slot2, &sas_dev->list, entry) {
- task = slot->task;
- if (unlikely(!task || !task->lldd_task || !task->dev))
- continue;
-
- spin_lock_irqsave(&task->task_state_lock, flags);
- if ((task->task_state_flags & SAS_TASK_STATE_ABORTED) ||
- (task->task_state_flags & SAS_TASK_STATE_DONE)) {
- spin_unlock_irqrestore(&task->task_state_lock, flags);
- dev_info(dev, "slot complete: iptt=%d task(%pK) already finished.\n",
- slot->idx, task);
- continue;
- }
-
- task->task_state_flags |= SAS_TASK_STATE_DONE;
- spin_unlock_irqrestore(&task->task_state_lock, flags);
-
- is_internal = slot->is_internal;
- ts = &task->task_status;
- device = task->dev;
- ha = device->port->ha;
-
- memset(ts, 0, sizeof(*ts));
- ts->stat = SAS_ABORTED_TASK;
- ts->resp = SAS_TASK_COMPLETE;
-
- hisi_sas_slot_task_free(hisi_hba, task, slot, false);
-
- if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) {
- spin_lock_irqsave(&device->done_lock, flags);
- if (test_bit(SAS_HA_FROZEN, &ha->state)) {
- spin_unlock_irqrestore(&device->done_lock,
- flags);
- dev_info(dev, "slot complete: task(%pK) ignored\n ",
- task);
- continue;
- }
- spin_unlock_irqrestore(&device->done_lock, flags);
- }
-
- if (task->task_done)
- task->task_done(task);
- }
- spin_unlock_irqrestore(&sas_dev->lock, flags);
-}
-EXPORT_SYMBOL_GPL(hisi_sas_complete_disk_io);
-
bool hisi_sas_debugfs_enable = true;
EXPORT_SYMBOL_GPL(hisi_sas_debugfs_enable);
module_param_named(debugfs_enable, hisi_sas_debugfs_enable, bool, 0444);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
index 6485e2b6456c..452665c641a6 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
@@ -1320,7 +1320,7 @@ static int slot_complete_v1_hw(struct hisi_hba *hisi_hba,
}
out:
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
sts = ts->stat;
if (task->task_done)
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index bd0639fd5162..1c452f16b6e2 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -2480,7 +2480,7 @@ slot_complete_v2_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
}
task->task_state_flags |= SAS_TASK_STATE_DONE;
spin_unlock_irqrestore(&task->task_state_lock, flags);
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) {
spin_lock_irqsave(&device->done_lock, flags);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index e84246c2331a..79026e887ee8 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -402,17 +402,6 @@
#define CMPLT_HDR_ERX_MSK (0x1 << CMPLT_HDR_ERX_OFF)
#define CMPLT_HDR_ABORT_STAT_OFF 13
#define CMPLT_HDR_ABORT_STAT_MSK (0x7 << CMPLT_HDR_ABORT_STAT_OFF)
-/* bit[9:2] Error Phase */
-#define ERR_PHASE_DQ_ENTRY_PARSING BIT(2)
-#define ERR_PHASE_FRAME_LINK_STAGE BIT(3)
-#define ERR_PHASE_CMD_TM_FRAME_SEND_STAGE BIT(4)
-#define ERR_PHASE_DATA_FRAME_SEND_STAGE BIT(5)
-#define ERR_PHASE_DATA_FRAME_REV_STAGE BIT(6)
-#define ERR_PHASE_XFERDY_FRAME_REV_STAGE BIT(7)
-#define ERR_PHASE_RESPONSE_FRAME_REV_STAGE BIT(8)
-#define ERR_PHASE_DPH_SCHEDULING BIT(9)
-#define ERR_PHASE_FRAME_REV_STAGE (ERR_PHASE_DATA_FRAME_REV_STAGE | \
- ERR_PHASE_XFERDY_FRAME_REV_STAGE | ERR_PHASE_RESPONSE_FRAME_REV_STAGE)
/* abort_stat */
#define STAT_IO_NOT_VALID 0x1
#define STAT_IO_NO_DEVICE 0x2
@@ -424,19 +413,8 @@
#define CMPLT_HDR_DEV_ID_OFF 16
#define CMPLT_HDR_DEV_ID_MSK (0xffff << CMPLT_HDR_DEV_ID_OFF)
/* dw3 */
-#define COMLT_HDR_SATA_DISK_ERR_OFF 16
-#define CMPLT_HDR_SATA_DISK_ERR_MSK (0x1 << COMLT_HDR_SATA_DISK_ERR_OFF)
#define CMPLT_HDR_IO_IN_TARGET_OFF 17
#define CMPLT_HDR_IO_IN_TARGET_MSK (0x1 << CMPLT_HDR_IO_IN_TARGET_OFF)
-/* bit[31:24] ERR_FIS_TYPE */
-#define CQ_PIO_DATA_FIS_TYPE BIT(24)
-#define CQ_PIO_SETUP_FIS_TYPE BIT(25)
-#define CQ_D2H_FIS_TYPE BIT(26)
-#define CQ_WT_PIO_SETUP_FIS_TYPE BIT(27)
-#define CQ_WT_DMA_SETUP_FIS_TYPE BIT(28)
-#define CQ_RD_DMA_SETUP_FIS_TYPE BIT(29)
-#define CQ_DMA_ACTIVE_FIS_TYPE BIT(30)
-#define CQ_SDB_FIS_TYPE BIT(31)
/* ITCT header */
/* qw0 */
@@ -2255,26 +2233,6 @@ static void hisi_sas_set_sense_data(struct sas_task *task,
}
}
-static bool is_err_fis(u32 dw0)
-{
- /* 0x3 means abnormal completion */
- return ((dw0 & CMPLT_HDR_CMPLT_MSK) == 0x3) &&
- (dw0 & ERR_PHASE_FRAME_REV_STAGE);
-}
-
-static bool is_ncq_err(struct hisi_sas_complete_v3_hdr *complete_hdr)
-{
- u32 dw0, dw3;
-
- dw0 = le32_to_cpu(complete_hdr->dw0);
- dw3 = le32_to_cpu(complete_hdr->dw3);
-
- if (!is_err_fis(dw0) || !(dw3 & CMPLT_HDR_SATA_DISK_ERR_MSK))
- return false;
-
- return dw3 & CQ_SDB_FIS_TYPE;
-}
-
static void
slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
struct hisi_sas_slot *slot)
@@ -2378,24 +2336,16 @@ slot_complete_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
if (unlikely(!task || !task->lldd_task || !task->dev))
return -EINVAL;
- spin_lock_irqsave(&task->task_state_lock, flags);
- if (task->task_state_flags & SAS_TASK_STATE_ABORTED ||
- task->task_state_flags & SAS_TASK_STATE_DONE) {
- spin_unlock_irqrestore(&task->task_state_lock, flags);
- dev_info(dev, "slot complete: iptt=%d task(%pK) already finished.\n",
- slot->idx, task);
- return SAS_ABORTED_TASK;
- }
- task->task_state_flags &=
- ~(SAS_TASK_STATE_PENDING | SAS_TASK_AT_INITIATOR);
- task->task_state_flags |= SAS_TASK_STATE_DONE;
- spin_unlock_irqrestore(&task->task_state_lock, flags);
-
ts = &task->task_status;
device = task->dev;
ha = device->port->ha;
sas_dev = device->lldd_dev;
+ spin_lock_irqsave(&task->task_state_lock, flags);
+ task->task_state_flags &=
+ ~(SAS_TASK_STATE_PENDING | SAS_TASK_AT_INITIATOR);
+ spin_unlock_irqrestore(&task->task_state_lock, flags);
+
memset(ts, 0, sizeof(*ts));
ts->resp = SAS_TASK_COMPLETE;
@@ -2486,9 +2436,6 @@ slot_complete_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
iu->resp_data[0]);
}
if (unlikely(slot->abort)) {
- spin_lock_irqsave(&task->task_state_lock, flags);
- task->task_state_flags &= ~SAS_TASK_STATE_DONE;
- spin_unlock_irqrestore(&task->task_state_lock, flags);
sas_task_abort(task);
return ts->stat;
}
@@ -2552,7 +2499,15 @@ slot_complete_v3_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot)
out:
sts = ts->stat;
- hisi_sas_slot_task_free(hisi_hba, task, slot, true);
+ spin_lock_irqsave(&task->task_state_lock, flags);
+ if (task->task_state_flags & SAS_TASK_STATE_ABORTED) {
+ spin_unlock_irqrestore(&task->task_state_lock, flags);
+ dev_info(dev, "slot complete: task(%pK) aborted\n", task);
+ return SAS_ABORTED_TASK;
+ }
+ task->task_state_flags |= SAS_TASK_STATE_DONE;
+ spin_unlock_irqrestore(&task->task_state_lock, flags);
+ hisi_sas_slot_task_free(hisi_hba, task, slot);
if (!is_internal && (task->task_proto != SAS_PROTOCOL_SMP)) {
spin_lock_irqsave(&device->done_lock, flags);
@@ -2588,32 +2543,12 @@ static void cq_tasklet_v3_hw(unsigned long val)
while (rd_point != wr_point) {
struct hisi_sas_complete_v3_hdr *complete_hdr;
struct device *dev = hisi_hba->dev;
- u32 dw0, dw1, dw3;
int iptt;
complete_hdr = &complete_queue[rd_point];
- dw0 = le32_to_cpu(complete_hdr->dw0);
- dw1 = le32_to_cpu(complete_hdr->dw1);
- dw3 = le32_to_cpu(complete_hdr->dw3);
- iptt = dw1 & CMPLT_HDR_IPTT_MSK;
- /*
- * check for NCQ error and current iptt is invalid, all NCQ
- * commands should be aborted
- */
- if (unlikely(is_ncq_err(complete_hdr))) {
- int device_id = (dw1 & CMPLT_HDR_DEV_ID_MSK) >>
- CMPLT_HDR_DEV_ID_OFF;
- struct hisi_sas_device *sas_dev =
- &hisi_hba->devices[device_id];
- struct hisi_sas_itct *itct =
- &hisi_hba->itct[device_id];
-
- dev_err(dev, "erroneous completion ncq err dev id=%d sas_addr=0x%llx CQ hdr: 0x%x 0x%x 0x%x 0x%x\n",
- device_id, itct->sas_addr, dw0, dw1,
- complete_hdr->act, dw3);
- hisi_sas_complete_disk_io(sas_dev);
- } else if (likely(iptt < HISI_SAS_COMMAND_ENTRIES_V3_HW)) {
+ iptt = (complete_hdr->dw1) & CMPLT_HDR_IPTT_MSK;
+ if (likely(iptt < HISI_SAS_COMMAND_ENTRIES_V3_HW)) {
slot = &hisi_hba->slot_info[iptt];
slot->cmplt_queue_slot = rd_point;
slot->cmplt_queue = queue;
--
2.25.1
1
1
This set introduces CO-RE support in the kernel.
There are several reasons to add such support:
1.It's a step toward signed BPF programs.
2.It allows golang like languages that struggle to adopt libbpf
to take advantage of CO-RE powers.
3.Currently the field accessed by 'ldx [R1 + 10]' insn is recognized
by the verifier purely based on +10 offset. If R1 points to a union
the verifier picks one of the fields at this offset.
With CO-RE the kernel can disambiguate the field access.
Alan Maguire (5):
libbpf: bpf__find_by_name[_kind] should use btf__get_nr_types()
libbpf: BTF dumper support for typed data
libbpf: Clarify/fix unaligned data issues for btf typed dump
libbpf: Avoid use of __int128 in typed dump display
libbpf: Propagate errors when retrieving enum value for typed data
display
Alexei Starovoitov (55):
bpf: Optimize program stats
bpf: Run sleepable programs with migration disabled
bpf: Compute program stats for sleepable programs
bpf: Add per-program recursion prevention mechanism
selftest/bpf: Add a recursion test
bpf: Count the number of times recursion was prevented
selftests/bpf: Improve recursion selftest
bpf: Allows per-cpu maps and map-in-map in sleepable programs
selftests/bpf: Add a test for map-in-map and per-cpu maps in sleepable
progs
bpf: Clear per_cpu pointers during bpf_prog_realloc
bpf: Dont allow vmlinux BTF to be used in map_create and prog_load.
libbpf: Remove unused field.
bpf: Introduce bpf_sys_bpf() helper and program type.
bpf: Introduce bpfptr_t user/kernel pointer.
bpf: Prepare bpf syscall to be used from kernel and user space.
libbpf: Support for syscall program type
bpf: Make btf_load command to be bpfptr_t compatible.
bpf: Introduce fd_idx
bpf: Add bpf_btf_find_by_name_kind() helper.
bpf: Add bpf_sys_close() helper.
libbpf: Change the order of data and text relocations.
libbpf: Add bpf_object pointer to kernel_supports().
libbpf: Preliminary support for fd_idx
libbpf: Generate loader program out of BPF ELF file.
libbpf: Cleanup temp FDs when intermediate sys_bpf fails.
libbpf: Introduce bpf_map__initial_value().
bpftool: Use syscall/loader program in "prog load" and "gen skeleton"
command.
selftests/bpf: Convert few tests to light skeleton.
selftests/bpf: Convert atomics test to light skeleton.
selftests/bpf: Convert test printk to use rodata.
selftests/bpf: Convert test trace_printk to lskel.
bpf: Add cmd alias BPF_PROG_RUN
bpf: Prepare bpf_prog_put() to be called from irq context.
bpf: Factor out bpf_spin_lock into helpers.
libbpf: Cleanup the layering between CORE and bpf_program.
libbpf: Split bpf_core_apply_relo() into bpf_program independent
helper.
libbpf: Move CO-RE types into relo_core.h.
libbpf: Split CO-RE logic into relo_core.c.
libbpf: Make gen_loader data aligned.
libbpf: Replace btf__type_by_id() with btf_type_by_id().
bpf: Rename btf_member accessors.
bpf: Prepare relo_core.c for kernel duty.
bpf: Define enum bpf_core_relo_kind as uapi.
bpf: Pass a set of bpf_core_relo-s to prog_load command.
bpf: Add bpf_core_add_cands() and wire it into
bpf_core_apply_relo_insn().
libbpf: Use CO-RE in the kernel in light skeleton.
libbpf: Support init of inner maps in light skeleton.
libbpf: Clean gen_loader's attach kind.
selftests/bpf: Improve inner_map test coverage.
selftests/bpf: Convert map_ptr_kern test to use light skeleton.
selftests/bpf: Additional test for CO-RE in the kernel.
selftests/bpf: Add CO-RE relocations to verifier scale test.
libbpf: Reduce bpf_core_apply_relo_insn() stack usage.
bpf: Silence purge_cand_cache build warning.
libbpf: Fix gen_loader assumption on number of programs.
Andrei Matei (1):
libbpf: Fail early when loading programs with unspecified type
Andrew Delgadillo (1):
selftests/bpf: Drop the need for LLVM's llc
Andrii Nakryiko (148):
libbpf: Factor out common operations in BTF writing APIs
selftest/bpf: Relax btf_dedup test checks
libbpf: Unify and speed up BTF string deduplication
libbpf: Implement basic split BTF support
selftests/bpf: Add split BTF basic test
selftests/bpf: Add checking of raw type dump in BTF writer APIs
selftests
libbpf: Support BTF dedup of split BTFs
libbpf: Accomodate DWARF/compiler bug with duplicated identical arrays
selftests/bpf: Add split BTF dedup selftests
tools/bpftool: Add bpftool support for split BTF
bpf: Add in-kernel split BTF support
bpf: Assign ID to vmlinux BTF and return extra info for BTF in
GET_OBJ_INFO
kbuild: Build kernel module BTFs if BTF is enabled and pahole supports
it
bpf: Load and verify kernel module BTFs
tools/bpftool: Add support for in-kernel and named BTF in `btf show`
bpf: Compile out btf_parse_module() if module BTF is not enabled
bpf: Sanitize BTF data pointer after module is loaded
tools/bpftool: Emit name <anon> for anonymous BTFs
libbpf: Add base BTF accessor
tools/bpftool: Auto-detect split BTFs in common cases
bpf: Keep module's btf_data_size intact after load
libbpf: Add internal helper to load BTF data by FD
libbpf: Refactor CO-RE relocs to not assume a single BTF object
libbpf: Add kernel module BTF support for CO-RE relocations
selftests/bpf: Add bpf_testmod kernel module for testing
selftests/bpf: Add support for marking sub-tests as skipped
selftests/bpf: Add CO-RE relocs selftest relying on kernel module BTF
bpf: Remove hard-coded btf_vmlinux assumption from BPF verifier
bpf: Allow to specify kernel module BTFs when attaching BPF programs
libbpf: Factor out low-level BPF program loading helper
libbpf: Support attachment of BPF tracing programs to kernel modules
selftests/bpf: Add tp_btf CO-RE reloc test for modules
kbuild: Skip module BTF generation for out-of-tree external modules
selftests/bpf: fix bpf_testmod.ko recompilation logic
libbpf: Support modules in bpf_program__set_attach_target() API
bpf: Allow empty module BTFs
libbpf: Add user-space variants of BPF_CORE_READ() family of macros
libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family
selftests/bpf: Add tests for user- and non-CO-RE BPF_CORE_READ()
variants
libbpf: Clarify kernel type use with USER variants of CORE reading
macros
selftests/bpf: Sync RCU before unloading bpf_testmod
bpf: Support BPF ksym variables in kernel modules
libbpf: Support kernel module ksym externs
selftests/bpf: Test kernel module ksym externs
selftests/bpf: Don't exit on failed bpf_testmod unload
libbpf: Stop using feature-detection Makefiles
libbpf: provide NULL and KERNEL_VERSION macros in bpf_helpers.h
libbpf: Expose btf_type_by_id() internally
libbpf: Generalize BTF and BTF.ext type ID and strings iteration
libbpf: Rename internal memory-management helpers
libbpf: Extract internal set-of-strings datastructure APIs
libbpf: Add generic BTF type shallow copy API
libbpf: Add BPF static linker APIs
libbpf: Add BPF static linker BTF and BTF.ext support
bpftool: Add ability to specify custom skeleton object name
bpftool: Add `gen object` command to perform BPF static linking
selftests/bpf: Pass all BPF .o's through BPF static linker
selftests/bpf: Add multi-file statically linked BPF object file test
libbpf: Skip BTF fixup if object file has no BTF
libbpf: Constify few bpf_program getters
libbpf: Preserve empty DATASEC BTFs during static linking
libbpf: Fix memory leak when emitting final btf_ext
libbpf: Add bpf_map__inner_map API
libbpf: Suppress compiler warning when using SEC() macro with externs
libbpf: Mark BPF subprogs with hidden visibility as static for BPF
verifier
libbpf: Allow gaps in BPF program sections to support overriden weak
functions
libbpf: Refactor BTF map definition parsing
libbpf: Factor out symtab and relos sanity checks
libbpf: Make few internal helpers available outside of libbpf.c
libbpf: Extend sanity checking ELF symbols with externs validation
libbpf: Tighten BTF type ID rewriting with error checking
libbpf: Add linker extern resolution support for functions and global
variables
libbpf: Support extern resolution for BTF-defined maps in .maps
section
libbpf: Support BTF_KIND_FLOAT during type compatibility checks in
CO-RE
bpftool: Strip const/volatile/restrict modifiers from .bss and .data
vars
libbpf: Add per-file linker opts
selftests/bpf: Stop using static variables for passing data to/from
user-space
bpftool: Stop emitting static variables in BPF skeleton
libbpf: Fix ELF symbol visibility update logic
libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions
libbpf: Reject static maps
libbpf: Reject static entry-point BPF programs
libbpf: Add libbpf_set_strict_mode() API to turn on libbpf 1.0
behaviors
libbpf: Streamline error reporting for low-level APIs
libbpf: Streamline error reporting for high-level APIs
bpftool: Set errno on skeleton failures and propagate errors
libbpf: Move few APIs from 0.4 to 0.5 version
libbpf: Refactor header installation portions of Makefile
libbpf: Install skel_internal.h header used from light skeletons
selftests/bpf: Add remaining ASSERT_xxx() variants
libbpf: Fix build with latest gcc/binutils with LTO
libbpf: Make libbpf_version.h non-auto-generated
selftests/bpf: Update selftests to always provide "struct_ops" SEC
libbpf: Ensure BPF prog types are set before relocations
libbpf: Simplify BPF program auto-attach code
libbpf: Minimize explicit iterator of section definition array
libbpf: Use pre-setup sec_def in libbpf_find_attach_btf_id()
selftests/bpf: Stop using relaxed_core_relocs which has no effect
libbpf: Deprecated bpf_object_open_opts.relaxed_core_relocs
libbpf: Allow skipping attach_func_name in
bpf_program__set_attach_target()
libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7
libbpf: Constify all high-level program attach APIs
selftests/bpf: Turn on libbpf 1.0 mode and fix all IS_ERR checks
selftests/bpf: Switch fexit_bpf2bpf selftest to set_attach_target()
API
libbpf: Add "tc" SEC_DEF which is a better name for "classifier"
libbpf: Refactor internal sec_def handling to enable pluggability
libbpf: Reduce reliance of attach_fns on sec_def internals
libbpf: Add API that copies all BTF types from one BTF object to
another
libbpf: Deprecate btf__finalize_data() and move it into libbpf.c
libbpf: Extract ELF processing state into separate struct
libbpf: Use Elf64-specific types explicitly for dealing with ELF
libbpf: Remove assumptions about uniqueness of .rodata/.data/.bss maps
bpftool: Support multiple .rodata/.data internal maps in skeleton
bpftool: Improve skeleton generation for data maps without DATASEC
type
libbpf: Support multiple .rodata.* and .data.* BPF maps
selftests/bpf: Demonstrate use of custom .rodata/.data sections
libbpf: Simplify look up by name of internal maps
selftests/bpf: Switch to ".bss"/".rodata"/".data" lookups for internal
maps
libbpf: Fix off-by-one bug in bpf_core_apply_relo()
libbpf: Add ability to fetch bpf_program's underlying instructions
libbpf: Deprecate multi-instance bpf_program APIs
libbpf: Deprecate ambiguously-named bpf_program__size() API
libbpf: Detect corrupted ELF symbols section
libbpf: Improve sanity checking during BTF fix up
libbpf: Validate that .BTF and .BTF.ext sections contain data
libbpf: Fix section counting logic
libbpf: Improve ELF relo sanitization
libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
selftests/bpf: Pass sanitizer flags to linker through LDFLAGS
libbpf: Free up resources used by inner map definition
selftests/bpf: Fix memory leaks in btf_type_c_dump() helper
selftests/bpf: Free per-cpu values array in bpf_iter selftest
selftests/bpf: Free inner strings index in btf selftest
selftests/bpf: Avoid duplicate btf__parse() call
libbpf: Load global data maps lazily on legacy kernels
libbpf: Fix potential misaligned memory access in btf_ext__new()
libbpf: Don't call libc APIs with NULL pointers
libbpf: Fix glob_syms memory leak in bpf_linker
libbpf: Fix using invalidated memory in bpf_linker
selftests/bpf: Fix possible NULL passed to memcpy() with zero size
selftests/bpf: Prevent misaligned memory access in get_stack_raw_tp
test
selftests/bpf: Fix misaligned memory access in queue_stack_map test
selftests/bpf: Prevent out-of-bounds stack access in test_bpffs
selftests/bpf: Fix misaligned accesses in xdp and xdp_bpf2bpf tests
libbpf: Cleanup struct bpf_core_cand.
libbpf: Fix non-C89 loop variable declaration in gen_loader.c
selftests/bpf: Fix GCC11 compiler warnings in -O2 mode
libbpf: Fix logic for finding matching program for CO-RE relocation
Arnaldo Carvalho de Melo (1):
libbpf: Provide GELF_ST_VISIBILITY() define for older libelf
Brendan Jackman (15):
tools/resolve_btfids: Fix some error messages
bpf: Fix cold build of test_progs-no_alu32
bpf: Clarify return value of probe str helpers
bpf: x86: Factor out emission of ModR/M for *(reg + off)
bpf: x86: Factor out emission of REX byte
bpf: x86: Factor out a lookup table for some ALU opcodes
bpf: Rename BPF_XADD and prepare to encode other atomics in .imm
bpf: Move BPF_STX reserved field check into BPF_STX verifier code
bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
bpf: Add instructions for atomic_[cmp]xchg
bpf: Pull out a macro for interpreting atomic ALU operations
bpf: Add bitwise atomic instructions
bpf: Add tests for new BPF atomic operations
bpf: Document new atomic instructions
bpf: Rename fixup_bpf_calls and add some comments
Cong Wang (1):
bpf: Clear percpu pointers in bpf_prog_clone_free()
Daniel Xu (1):
libbpf: Do not close un-owned FD 0 on errors
Dave Marchevsky (1):
bpf: Add verified_insns to bpf_prog_info and fdinfo
Dmitrii Banshchikov (7):
bpf: Rename bpf_reg_state variables
bpf: Extract nullable reg type conversion into a helper function
bpf: Support pointers in global func args
selftests/bpf: Add unit tests for pointers in global functions
bpf: Drop imprecise log message
selftests/bpf: Fix a compiler warning in global func test
bpf: Use MAX_BPF_FUNC_REG_ARGS macro
Florent Revest (6):
selftests/bpf: Fix the ASSERT_ERR_PTR macro
bpf: Factorize bpf_trace_printk and bpf_seq_printf
bpf: Add a ARG_PTR_TO_CONST_STR argument type
bpf: Add a bpf_snprintf helper
libbpf: Introduce a BPF_SNPRINTF helper macro
libbpf: Move BPF_SEQ_PRINTF and BPF_SNPRINTF to bpf_helpers.h
Florian Lehner (2):
selftests/bpf: Print reason when a tester could not run a program
selftests/bpf: Avoid errno clobbering
Gary Lin (3):
bpf,x64: Pad NOPs to make images converge more easily
test_bpf: Remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier tests for x64 jit jump padding
Hao Luo (1):
libbpf: Support weak typed ksyms.
Hengqi Chen (5):
libbpf: Fix KERNEL_VERSION macro
tools/resolve_btfids: Emit warnings and patch zero id for missing
symbols
libbpf: Add btf__load_vmlinux_btf/btf__load_module_btf
libbpf: Support uniform BTF-defined key/value specification across all
BPF maps
libbpf: Support static initialization of BPF_MAP_TYPE_PROG_ARRAY
Ian Rogers (3):
bpf, libbpf: Avoid unused function warning on bpf_tail_call_static
tools/bpftool: Add -Wall when building BPF programs
libbpf: Add NULL check to add_dummy_ksym_var
Ilya Leoshkevich (6):
selftests/bpf: Copy extras in out-of-srctree builds
bpf: Add BTF_KIND_FLOAT to uapi
libbpf: Fix whitespace in btf_add_composite() comment
libbpf: Add BTF_KIND_FLOAT support
bpf: Generate BTF_KIND_FLOAT when linking vmlinux
libbpf: Use __BYTE_ORDER__
Jason Wang (1):
libbpf: Fix comment typo
Jean-Philippe Brucker (12):
tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
tools/runqslower: Use Makefile.include
tools/runqslower: Enable out-of-tree build
tools/runqslower: Build bpftool using HOSTCC
tools/bpftool: Fix build slowdown
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
tools/bpftool: Fix cross-build
tools/runqslower: Fix cross-build
Jiri Olsa (5):
tools/resolve_btfids: Warn when having multiple IDs for single type
libbpf: Use string table index from index table if needed
perf build: Move feature cleanup under tools/build
selftests/bpf: Add re-attach test to fentry_test
selftests/bpf: Add re-attach test to fexit_test
Joe Stringer (1):
tools: Sync uapi bpf.h header with latest changes
Jonathan Edwards (1):
libbpf: Add extra BPF_PROG_TYPE check to bpf_object__probe_loading
Kumar Kartikeya Dwivedi (22):
libbpf: Add various netlink helpers
libbpf: Add low level TC-BPF management API
libbpf: Remove unneeded check for flags during tc detach
libbpf: Set NLM_F_EXCL when creating qdisc
libbpf: Fix segfault in static linker for objects without BTF
libbpf: Fix segfault in light skeleton for objects without BTF
bpf: Introduce BPF support for kernel module function calls
bpf: Be conservative while processing invalid kfunc calls
bpf: btf: Introduce helpers for dynamic BTF set registration
tools: Allow specifying base BTF file in resolve_btfids
libbpf: Support kernel module function calls
libbpf: Resolve invalid weak kfunc calls with imm = 0, off = 0
libbpf: Update gen_loader to emit BTF_KIND_FUNC relocations
bpf: selftests: Add selftests for module kfunc support
bpf: Add bpf_kallsyms_lookup_name helper
libbpf: Add typeless ksym support to gen_loader
libbpf: Add weak ksym support to gen_loader
selftests/bpf: Add weak/typeless ksym test for light skeleton
libbpf: Perform map fd cleanup for gen_loader in case of error
bpf: Change bpf_kallsyms_lookup_name size type to
ARG_CONST_SIZE_OR_ZERO
libbpf: Avoid double stores for success/failure case of ksym
relocations
libbpf: Avoid reload of imm for weak, unresolved, repeating ksym
Lorenz Bauer (2):
bpf: Consolidate shared test timing code
bpf: Add PROG_TEST_RUN support for sk_lookup programs
Martin KaFai Lau (10):
bpf: Simplify freeing logic in linfo and jited_linfo
bpf: Refactor btf_check_func_arg_match
bpf: Support bpf program calling kernel function
bpf: Support kernel function call in x86-32
libbpf: Refactor bpf_object__resolve_ksyms_btf_id
libbpf: Refactor codes for finding btf id of a kernel symbol
libbpf: Rename RELO_EXTERN to RELO_EXTERN_VAR
libbpf: Record extern sym relocation first
libbpf: Support extern kernel function
bpf: selftests: Add kfunc_call test
Martynas Pumputis (1):
selftests/bpf: Check inner map deletion
Matt Smith (3):
libbpf: Change bpf_object_skeleton data field to const pointer
bpftool: Provide a helper method for accessing skeleton's embedded ELF
data
selftests/bpf: Add checks for X__elf_bytes() skeleton helper
Mauricio Vásquez (1):
libbpf: Fix memory leak in btf__dedup()
Michal Suchanek (1):
libbpf: Fix pr_warn type warnings on 32bit
Pedro Tammela (2):
libbpf: Avoid inline hint definition from 'linux/stddef.h'
libbpf: Clarify flags in ringbuf helpers
Quentin Monnet (17):
libbpf: Return non-null error on failures in libbpf_find_prog_btf_id()
libbpf: Rename btf__load() as btf__load_into_kernel()
libbpf: Rename btf__get_from_id() as btf__load_from_kernel_by_id()
tools: Free BTF objects at various locations
tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id()
libbpf: Add split BTF support for btf__load_from_kernel_by_id()
tools: bpftool: Support dumping split BTF by id
libbpf: Add LIBBPF_DEPRECATED_SINCE macro for scheduling API
deprecations
libbpf: Skip re-installing headers file if source is older than target
bpftool: Remove unused includes to <bpf/bpf_gen_internal.h>
bpftool: Install libbpf headers instead of including the dir
tools/resolve_btfids: Install libbpf headers when building
tools/runqslower: Install libbpf headers when building
bpf: preload: Install libbpf headers when building
bpf: iterators: Install libbpf headers when building
selftests/bpf: Better clean up for runqslower in test_bpftool_build.sh
bpftool: Add install-bin target to install binary only
Rafael David Tinoco (1):
libbpf: Add bpf object kern_version attribute setter
Sedat Dilek (1):
tools: Factor Clang, LLC and LLVM utils definitions
Shuyi Cheng (2):
libbpf: Introduce 'btf_custom_path' to 'bpf_obj_open_opts'
libbpf: Add "bool skipped" to struct bpf_map
Song Liu (3):
bpftool: Add Makefile target bootstrap
perf build: Support build BPF skeletons with perf
perf stat: Enable counting events for BPF programs
Stanislav Fomichev (2):
libbpf: Cap retries in sys_bpf_prog_load
libbpf: Skip bpf_object__probe_loading for light skeleton
Toke Høiland-Jørgensen (5):
bpf: Return target info when a tracing bpf_link is queried
libbpf: Restore errno return for functions that were already returning
it
libbpf: Don't crash on object files with no symbol tables
libbpf: Ignore STT_SECTION symbols in 'maps' section
libbpf: Properly ignore STT_SECTION symbols in legacy map definitions
Wang Hai (1):
libbpf: Simplify the return expression of bpf_object__init_maps
function
Wang Qing (1):
bpf, btf: Remove the duplicate btf_ids.h include
Wedson Almeida Filho (1):
bpf: Refactor check_cfg to use a structured loop.
Yauheni Kaliuta (7):
selftests/bpf: test_progs/sockopt_sk: Remove version
selftests/bpf: test_progs/sockopt_sk: Convert to use BPF skeleton
selftests/bpf: Pass page size from userspace in sockopt_sk
selftests/bpf: Pass page size from userspace in map_ptr
selftests/bpf: mmap: Use runtime page size
selftests/bpf: ringbuf: Use runtime page size
selftests/bpf: ringbuf_multi: Use runtime page size
Yonghong Song (26):
bpf: Permit size-0 datasec
bpf: Refactor BPF_PSEUDO_CALL checking as a helper function
bpf: Factor out visit_func_call_insn() in check_cfg()
bpf: Factor out verbose_invalid_scalar()
bpf: Refactor check_func_call() to allow callback function
bpf: Change return value of verifier function add_subprog()
bpf: Add bpf_for_each_map_elem() helper
libbpf: Move function is_ldimm64() earlier in libbpf.c
libbpf: Support subprog address relocation
selftests/bpf: Fix test_cpp compilation failure with clang
bpftool: Fix a clang compilation warning
libbpf: Add support for new llvm bpf relocations
bpf: Emit better log message if bpf_iter ctx arg btf_id == 0
btf: Change BTF_KIND_* macros to enums
bpf: Support for new btf kind BTF_KIND_TAG
libbpf: Rename btf_{hash,equal}_int to btf_{hash,equal}_int_tag
libbpf: Add support for BTF_KIND_TAG
bpftool: Add support for BTF_KIND_TAG
bpf: Rename BTF_KIND_TAG to BTF_KIND_DECL_TAG
bpf: Add BTF_KIND_DECL_TAG typedef support
docs/bpf: Update documentation for BTF_KIND_DECL_TAG typedef support
bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
libbpf: Support BTF_KIND_TYPE_TAG
bpftool: Support BTF_KIND_TYPE_TAG
docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support
libbpf: Fix a couple of missed btf_type_tag handling in btf.c
Documentation/ABI/testing/sysfs-kernel-btf | 8 +
Documentation/bpf/btf.rst | 40 +-
Documentation/networking/filter.rst | 61 +-
arch/arm/net/bpf_jit_32.c | 7 +-
arch/arm64/net/bpf_jit_comp.c | 16 +-
arch/mips/net/ebpf_jit.c | 11 +-
arch/powerpc/net/bpf_jit_comp64.c | 25 +-
arch/riscv/net/bpf_jit_comp32.c | 20 +-
arch/riscv/net/bpf_jit_comp64.c | 16 +-
arch/s390/net/bpf_jit_comp.c | 27 +-
arch/sparc/net/bpf_jit_comp_64.c | 17 +-
arch/x86/net/bpf_jit_comp.c | 408 +-
arch/x86/net/bpf_jit_comp32.c | 204 +-
drivers/net/ethernet/netronome/nfp/bpf/fw.h | 4 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c | 14 +-
drivers/net/ethernet/netronome/nfp/bpf/main.h | 4 +-
.../net/ethernet/netronome/nfp/bpf/verifier.c | 15 +-
include/linux/bpf.h | 153 +-
include/linux/bpf_types.h | 2 +
include/linux/bpf_verifier.h | 48 +-
include/linux/bpfptr.h | 76 +
include/linux/btf.h | 143 +-
include/linux/filter.h | 45 +-
include/linux/module.h | 4 +
include/uapi/linux/bpf.h | 256 +-
include/uapi/linux/btf.h | 57 +-
kernel/bpf/Makefile | 4 +
kernel/bpf/bpf_iter.c | 29 +-
kernel/bpf/bpf_struct_ops.c | 6 +-
kernel/bpf/btf.c | 1457 ++++-
kernel/bpf/core.c | 157 +-
kernel/bpf/disasm.c | 56 +-
kernel/bpf/hashtab.c | 4 +-
kernel/bpf/helpers.c | 326 +-
kernel/bpf/preload/Makefile | 25 +-
kernel/bpf/preload/iterators/Makefile | 38 +-
kernel/bpf/preload/iterators/iterators.bpf.c | 1 -
kernel/bpf/syscall.c | 363 +-
kernel/bpf/sysfs_btf.c | 2 +-
kernel/bpf/trampoline.c | 77 +-
kernel/bpf/verifier.c | 1676 +++++-
kernel/module.c | 36 +
kernel/trace/bpf_trace.c | 375 +-
lib/Kconfig.debug | 9 +
lib/test_bpf.c | 21 +-
net/bpf/test_run.c | 321 +-
net/core/filter.c | 2 +
net/ipv4/bpf_tcp_ca.c | 7 +-
samples/bpf/bpf_insn.h | 4 +-
samples/bpf/cookie_uid_helper_example.c | 8 +-
samples/bpf/sock_example.c | 2 +-
samples/bpf/test_cgrp2_attach.c | 5 +-
scripts/Makefile.modfinal | 25 +-
scripts/link-vmlinux.sh | 7 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 78 +-
tools/bpf/bpftool/Makefile | 55 +-
tools/bpf/bpftool/bash-completion/bpftool | 17 +-
tools/bpf/bpftool/btf.c | 80 +-
tools/bpf/bpftool/btf_dumper.c | 6 +-
tools/bpf/bpftool/gen.c | 651 +-
tools/bpf/bpftool/main.c | 20 +-
tools/bpf/bpftool/main.h | 2 +
tools/bpf/bpftool/map.c | 14 +-
tools/bpf/bpftool/net.c | 2 +-
tools/bpf/bpftool/prog.c | 139 +-
tools/bpf/bpftool/xlated_dumper.c | 3 +
tools/bpf/resolve_btfids/Makefile | 19 +-
tools/bpf/resolve_btfids/main.c | 66 +-
tools/bpf/runqslower/Makefile | 71 +-
tools/build/Makefile | 8 +-
tools/build/Makefile.feature | 4 +-
tools/build/feature/Makefile | 4 +-
tools/include/linux/filter.h | 24 +-
tools/include/uapi/linux/bpf.h | 968 ++-
tools/include/uapi/linux/btf.h | 57 +-
tools/lib/bpf/.gitignore | 2 -
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/Makefile | 104 +-
tools/lib/bpf/bpf.c | 273 +-
tools/lib/bpf/bpf.h | 1 +
tools/lib/bpf/bpf_core_read.h | 169 +-
tools/lib/bpf/bpf_gen_internal.h | 65 +
tools/lib/bpf/bpf_helpers.h | 108 +-
tools/lib/bpf/bpf_prog_linfo.c | 18 +-
tools/lib/bpf/bpf_tracing.h | 44 +-
tools/lib/bpf/btf.c | 2097 ++++---
tools/lib/bpf/btf.h | 99 +-
tools/lib/bpf/btf_dump.c | 910 ++-
tools/lib/bpf/gen_loader.c | 1126 ++++
tools/lib/bpf/libbpf.c | 5335 +++++++++--------
tools/lib/bpf/libbpf.h | 172 +-
tools/lib/bpf/libbpf.map | 50 +
tools/lib/bpf/libbpf_common.h | 26 +-
tools/lib/bpf/libbpf_errno.c | 7 +-
tools/lib/bpf/libbpf_internal.h | 302 +-
tools/lib/bpf/libbpf_legacy.h | 60 +
tools/lib/bpf/libbpf_version.h | 9 +
tools/lib/bpf/linker.c | 2901 +++++++++
tools/lib/bpf/netlink.c | 593 +-
tools/lib/bpf/nlattr.h | 48 +
tools/lib/bpf/relo_core.c | 1322 ++++
tools/lib/bpf/relo_core.h | 57 +
tools/lib/bpf/ringbuf.c | 26 +-
tools/lib/bpf/skel_internal.h | 123 +
tools/lib/bpf/strset.c | 176 +
tools/lib/bpf/strset.h | 21 +
tools/lib/bpf/xsk.c | 4 +-
tools/perf/Documentation/perf-stat.txt | 18 +
tools/perf/Makefile.config | 9 +
tools/perf/Makefile.perf | 58 +-
tools/perf/builtin-stat.c | 82 +-
tools/perf/util/Build | 1 +
tools/perf/util/bpf-event.c | 11 +-
tools/perf/util/bpf_counter.c | 320 +
tools/perf/util/bpf_counter.h | 72 +
tools/perf/util/bpf_skel/.gitignore | 3 +
.../util/bpf_skel/bpf_prog_profiler.bpf.c | 93 +
tools/perf/util/evsel.c | 5 +
tools/perf/util/evsel.h | 5 +
tools/perf/util/python.c | 21 +
tools/perf/util/stat-display.c | 4 +-
tools/perf/util/stat.c | 2 +-
tools/perf/util/target.c | 34 +-
tools/perf/util/target.h | 10 +
tools/scripts/Makefile.include | 18 +
tools/testing/selftests/bpf/.gitignore | 2 +
tools/testing/selftests/bpf/Makefile | 200 +-
tools/testing/selftests/bpf/bench.c | 1 +
.../selftests/bpf/benchs/bench_rename.c | 2 +-
.../selftests/bpf/benchs/bench_ringbufs.c | 6 +-
.../selftests/bpf/benchs/bench_trigger.c | 2 +-
.../selftests/bpf/bpf_testmod/.gitignore | 6 +
.../selftests/bpf/bpf_testmod/Makefile | 20 +
.../bpf/bpf_testmod/bpf_testmod-events.h | 36 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 76 +
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 14 +
tools/testing/selftests/bpf/btf_helpers.c | 264 +
tools/testing/selftests/bpf/btf_helpers.h | 19 +
.../selftests/bpf/prog_tests/atomics.c | 246 +
.../selftests/bpf/prog_tests/attach_probe.c | 12 +-
.../selftests/bpf/prog_tests/bpf_iter.c | 34 +-
.../selftests/bpf/prog_tests/bpf_tcp_ca.c | 8 +-
tools/testing/selftests/bpf/prog_tests/btf.c | 166 +-
.../bpf/prog_tests/btf_dedup_split.c | 325 +
.../selftests/bpf/prog_tests/btf_dump.c | 10 +-
.../selftests/bpf/prog_tests/btf_endian.c | 4 +-
.../selftests/bpf/prog_tests/btf_map_in_map.c | 33 -
.../selftests/bpf/prog_tests/btf_split.c | 99 +
.../selftests/bpf/prog_tests/btf_write.c | 47 +-
.../bpf/prog_tests/cg_storage_multi.c | 84 +-
.../bpf/prog_tests/cgroup_attach_multi.c | 6 +-
.../selftests/bpf/prog_tests/cgroup_link.c | 16 +-
.../bpf/prog_tests/cgroup_skb_sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/core_autosize.c | 2 +-
.../selftests/bpf/prog_tests/core_kern.c | 14 +
.../bpf/prog_tests/core_read_macros.c | 64 +
.../selftests/bpf/prog_tests/core_reloc.c | 105 +-
.../selftests/bpf/prog_tests/fentry_fexit.c | 22 +-
.../selftests/bpf/prog_tests/fentry_test.c | 58 +-
.../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 68 +-
.../selftests/bpf/prog_tests/fexit_stress.c | 4 +-
.../selftests/bpf/prog_tests/fexit_test.c | 58 +-
.../selftests/bpf/prog_tests/flow_dissector.c | 2 +-
.../bpf/prog_tests/flow_dissector_reattach.c | 10 +-
.../bpf/prog_tests/get_stack_raw_tp.c | 24 +-
.../prog_tests/get_stackid_cannot_attach.c | 9 +-
.../selftests/bpf/prog_tests/global_data.c | 11 +-
.../bpf/prog_tests/global_data_init.c | 2 +-
.../bpf/prog_tests/global_func_args.c | 60 +
.../selftests/bpf/prog_tests/hashmap.c | 9 +-
.../selftests/bpf/prog_tests/kfree_skb.c | 23 +-
.../selftests/bpf/prog_tests/kfunc_call.c | 59 +
.../selftests/bpf/prog_tests/ksyms_btf.c | 65 +-
.../selftests/bpf/prog_tests/ksyms_module.c | 62 +
.../selftests/bpf/prog_tests/link_pinning.c | 7 +-
.../selftests/bpf/prog_tests/map_ptr.c | 21 +-
tools/testing/selftests/bpf/prog_tests/mmap.c | 24 +-
.../selftests/bpf/prog_tests/obj_name.c | 8 +-
.../selftests/bpf/prog_tests/perf_branches.c | 4 +-
.../selftests/bpf/prog_tests/perf_buffer.c | 2 +-
.../bpf/prog_tests/perf_event_stackmap.c | 3 +-
.../selftests/bpf/prog_tests/probe_user.c | 7 +-
.../selftests/bpf/prog_tests/prog_run_xattr.c | 2 +-
.../bpf/prog_tests/queue_stack_map.c | 12 +-
.../bpf/prog_tests/raw_tp_test_run.c | 4 +-
.../selftests/bpf/prog_tests/rdonly_maps.c | 9 +-
.../selftests/bpf/prog_tests/recursion.c | 41 +
.../bpf/prog_tests/reference_tracking.c | 2 +-
.../selftests/bpf/prog_tests/resolve_btfids.c | 9 +-
.../selftests/bpf/prog_tests/ringbuf.c | 27 +-
.../selftests/bpf/prog_tests/ringbuf_multi.c | 23 +-
.../bpf/prog_tests/select_reuseport.c | 53 +-
.../selftests/bpf/prog_tests/send_signal.c | 5 +-
.../selftests/bpf/prog_tests/sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/skeleton.c | 41 +-
.../selftests/bpf/prog_tests/snprintf_btf.c | 4 +-
.../selftests/bpf/prog_tests/sock_fields.c | 14 +-
.../selftests/bpf/prog_tests/sockmap_basic.c | 6 +-
.../selftests/bpf/prog_tests/sockmap_ktls.c | 2 +-
.../selftests/bpf/prog_tests/sockmap_listen.c | 10 +-
.../selftests/bpf/prog_tests/sockopt_sk.c | 66 +-
.../bpf/prog_tests/stacktrace_build_id_nmi.c | 3 +-
.../selftests/bpf/prog_tests/stacktrace_map.c | 2 +-
.../bpf/prog_tests/stacktrace_map_raw_tp.c | 5 +-
.../selftests/bpf/prog_tests/static_linked.c | 35 +
.../bpf/prog_tests/tcp_hdr_options.c | 15 +-
.../selftests/bpf/prog_tests/test_bpffs.c | 4 +-
.../bpf/prog_tests/test_global_funcs.c | 8 +
.../selftests/bpf/prog_tests/test_overhead.c | 12 +-
.../selftests/bpf/prog_tests/trace_printk.c | 25 +-
.../bpf/prog_tests/trampoline_count.c | 18 +-
.../selftests/bpf/prog_tests/udp_limit.c | 7 +-
tools/testing/selftests/bpf/prog_tests/xdp.c | 11 +-
.../selftests/bpf/prog_tests/xdp_bpf2bpf.c | 8 +-
.../selftests/bpf/prog_tests/xdp_link.c | 8 +-
tools/testing/selftests/bpf/progs/atomics.c | 154 +
tools/testing/selftests/bpf/progs/bpf_cubic.c | 6 +-
.../bpf/progs/bpf_iter_bpf_hash_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_bpf_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_ipv6_route.c | 1 -
.../selftests/bpf/progs/bpf_iter_netlink.c | 1 -
.../selftests/bpf/progs/bpf_iter_task.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_btf.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_file.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_stack.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp6.c | 1 -
.../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +-
.../selftests/bpf/progs/bpf_iter_udp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_udp6.c | 1 -
tools/testing/selftests/bpf/progs/core_kern.c | 104 +
.../selftests/bpf/progs/core_reloc_types.h | 17 +
tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +-
.../selftests/bpf/progs/kfunc_call_test.c | 47 +
.../bpf/progs/kfunc_call_test_subprog.c | 42 +
tools/testing/selftests/bpf/progs/lsm.c | 69 +
.../selftests/bpf/progs/map_ptr_kern.c | 20 +-
tools/testing/selftests/bpf/progs/recursion.c | 46 +
.../testing/selftests/bpf/progs/sockopt_sk.c | 11 +-
tools/testing/selftests/bpf/progs/tailcall3.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall4.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall5.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +-
.../selftests/bpf/progs/test_cls_redirect.c | 4 +-
.../bpf/progs/test_core_read_macros.c | 50 +
.../bpf/progs/test_core_reloc_module.c | 96 +
.../selftests/bpf/progs/test_global_func10.c | 29 +
.../selftests/bpf/progs/test_global_func11.c | 19 +
.../selftests/bpf/progs/test_global_func12.c | 21 +
.../selftests/bpf/progs/test_global_func13.c | 24 +
.../selftests/bpf/progs/test_global_func14.c | 21 +
.../selftests/bpf/progs/test_global_func15.c | 22 +
.../selftests/bpf/progs/test_global_func16.c | 22 +
.../selftests/bpf/progs/test_global_func9.c | 132 +
.../bpf/progs/test_global_func_args.c | 91 +
.../selftests/bpf/progs/test_ksyms_module.c | 50 +
.../selftests/bpf/progs/test_ksyms_weak.c | 56 +
.../bpf/progs/test_map_in_map_invalid.c | 26 +
tools/testing/selftests/bpf/progs/test_mmap.c | 2 -
.../selftests/bpf/progs/test_rdonly_maps.c | 6 +-
.../selftests/bpf/progs/test_ringbuf.c | 5 +-
.../selftests/bpf/progs/test_ringbuf_multi.c | 1 -
.../selftests/bpf/progs/test_skeleton.c | 20 +-
.../selftests/bpf/progs/test_sockmap_listen.c | 2 +-
.../selftests/bpf/progs/test_static_linked1.c | 30 +
.../selftests/bpf/progs/test_static_linked2.c | 31 +
.../selftests/bpf/progs/test_subprogs.c | 13 +
.../selftests/bpf/progs/test_verif_scale2.c | 4 +-
.../selftests/bpf/progs/trace_printk.c | 6 +-
.../selftests/bpf/test_bpftool_build.sh | 4 +
.../selftests/bpf/test_cgroup_storage.c | 2 +-
tools/testing/selftests/bpf/test_maps.c | 231 +-
tools/testing/selftests/bpf/test_progs.c | 79 +-
tools/testing/selftests/bpf/test_progs.h | 83 +-
.../selftests/bpf/test_tcpnotify_user.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 103 +-
.../selftests/bpf/verifier/atomic_and.c | 77 +
.../selftests/bpf/verifier/atomic_cmpxchg.c | 96 +
.../selftests/bpf/verifier/atomic_fetch_add.c | 106 +
.../selftests/bpf/verifier/atomic_or.c | 77 +
.../selftests/bpf/verifier/atomic_xchg.c | 46 +
.../selftests/bpf/verifier/atomic_xor.c | 77 +
tools/testing/selftests/bpf/verifier/calls.c | 35 +-
tools/testing/selftests/bpf/verifier/ctx.c | 7 +-
.../selftests/bpf/verifier/dead_code.c | 10 +-
.../bpf/verifier/direct_packet_access.c | 4 +-
tools/testing/selftests/bpf/verifier/jit.c | 24 +
.../testing/selftests/bpf/verifier/leak_ptr.c | 10 +-
.../selftests/bpf/verifier/meta_access.c | 4 +-
tools/testing/selftests/bpf/verifier/unpriv.c | 3 +-
.../bpf/verifier/value_illegal_alu.c | 2 +-
tools/testing/selftests/bpf/verifier/xadd.c | 18 +-
tools/testing/selftests/tc-testing/Makefile | 3 +-
294 files changed, 25168 insertions(+), 6337 deletions(-)
create mode 100644 include/linux/bpfptr.h
create mode 100644 tools/lib/bpf/bpf_gen_internal.h
create mode 100644 tools/lib/bpf/gen_loader.c
create mode 100644 tools/lib/bpf/libbpf_legacy.h
create mode 100644 tools/lib/bpf/libbpf_version.h
create mode 100644 tools/lib/bpf/linker.c
create mode 100644 tools/lib/bpf/relo_core.c
create mode 100644 tools/lib/bpf/relo_core.h
create mode 100644 tools/lib/bpf/skel_internal.h
create mode 100644 tools/lib/bpf/strset.c
create mode 100644 tools/lib/bpf/strset.h
create mode 100644 tools/perf/util/bpf_counter.c
create mode 100644 tools/perf/util/bpf_counter.h
create mode 100644 tools/perf/util/bpf_skel/.gitignore
create mode 100644 tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/.gitignore
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/Makefile
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h
create mode 100644 tools/testing/selftests/bpf/btf_helpers.c
create mode 100644 tools/testing/selftests/bpf/btf_helpers.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/atomics.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_dedup_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_kern.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_args.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/kfunc_call.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/recursion.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/static_linked.c
create mode 100644 tools/testing/selftests/bpf/progs/atomics.c
create mode 100644 tools/testing/selftests/bpf/progs/core_kern.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c
create mode 100644 tools/testing/selftests/bpf/progs/recursion.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_reloc_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func10.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func11.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func12.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func13.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func14.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func15.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func16.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func9.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func_args.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_weak.c
create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked1.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked2.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_and.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_cmpxchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_fetch_add.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_or.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xor.c
--
2.20.1
1
391

[PATCH openEuler-1.0-LTS 1/2] netfilter: nf_tables: do not allow SET_ID to refer to another table
by Yongqiang Liu 23 Aug '22
by Yongqiang Liu 23 Aug '22
23 Aug '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
mainline inclusion
from mainline-v6.0-rc1
commit 470ee20e069a6d05ae549f7d0ef2bdbcee6a81b2
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5MEZD
CVE: CVE-2022-2586
--------------------------------
When doing lookups for sets on the same batch by using its ID, a set from a
different table can be used.
Then, when the table is removed, a reference to the set may be kept after
the set is freed, leading to a potential use-after-free.
When looking for sets by ID, use the table that was used for the lookup by
name, and only return sets belonging to that same table.
This fixes CVE-2022-2586, also reported as ZDI-CAN-17470.
Reported-by: Team Orca of Sea Security (@seasecresponse)
Fixes: 958bee14d071 ("netfilter: nf_tables: use new transaction infrastructure to handle sets")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
conflict:
net/netfilter/nf_tables_api.c
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/netfilter/nf_tables_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index c857c77bd727..ea9039ee8098 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3039,6 +3039,7 @@ static struct nft_set *nft_set_lookup_byhandle(const struct nft_table *table,
}
static struct nft_set *nft_set_lookup_byid(const struct net *net,
+ const struct nft_table *table,
const struct nlattr *nla, u8 genmask)
{
struct nft_trans *trans;
@@ -3049,6 +3050,7 @@ static struct nft_set *nft_set_lookup_byid(const struct net *net,
struct nft_set *set = nft_trans_set(trans);
if (id == nft_trans_set_id(trans) &&
+ set->table == table &&
nft_active_genmask(set, genmask))
return set;
}
@@ -3069,7 +3071,7 @@ struct nft_set *nft_set_lookup_global(const struct net *net,
if (!nla_set_id)
return set;
- set = nft_set_lookup_byid(net, nla_set_id, genmask);
+ set = nft_set_lookup_byid(net, table, nla_set_id, genmask);
}
return set;
}
--
2.25.1
1
1

[PATCH openEuler-22.09 v4 00/21] scheduler BPF: preempt, pick next task, select core and samples
by Zheng Zengkai 22 Aug '22
by Zheng Zengkai 22 Aug '22
22 Aug '22
This patchset aims to introduce tag mechanism, that is,
the tag field is added to struct task_struct and struct task_group.
Users can use the file system interface to mark different tags for specific workloads.
Other kernel subsystem can use the helper function to set different tags for workloads.
The sched bpf prog obtains the tags to detect different workloads.
It also aims to add new BPF hooks to the schduler in select_task_rq_fair()
and entity_before() which use to impact the "select rq" and "pick next task" process.
The helper functions is also added to obtanin kernel state like cpu statistics
and cpu topology. In addition to that, there are cpumask ops helpers collection,
a lib for sched bpf prog, and the samples.
Chen Hui (11):
sched: programmable: Add a tag for the task group
sched: programmable: Add user interface of task group tag
sched: programmable: Add a tag for the task
sched: programmable: Add user interface of task tag
sched: programmable: add bpf_sched_task_tag_of helper function
sched: programmable: Add convenient helper functions to convert sched
entity
samples/bpf: Update bpf loader for sched section names
bpf: sched: Add four helper functions to get cpu stat
bpf:programmable: Add cpumask ops collection
sched: programmable: Add lib for sched programmable
sched: programmable: Add three hooks in select_task_rq_fair()
Guan Jing (2):
sched: programmable: Add hook for pick next task
samples: bpf: Add bpf sched pick task sample
Hui Tang (3):
bpf:programmable: Add helper func to check cpu share cache
bpf:programmable: Add helper func to set cpus_ptr in task
samples:bpf: Add samples for cfs select core
Ren Zhijie (5):
sched: programmable: Fix sched bpf hook cfs_check_preempt_tick
sched: programmable: add bpf_sched_tg_tag_of helper function
samples: bpf: Add bpf sched preempt sample program
sched: programmable: Add helpers to set tag of task or task_group
sched: programmable: Add helper function for cpu topology.
fs/proc/base.c | 65 ++++
include/linux/bpf_topology.h | 46 +++
include/linux/sched.h | 85 +++++
include/linux/sched_hook_defs.h | 5 +
include/uapi/linux/bpf.h | 151 +++++++++
init/init_task.c | 3 +
kernel/bpf/helpers.c | 12 +
kernel/bpf/verifier.c | 4 +-
kernel/sched/Makefile | 3 +-
kernel/sched/bpf_sched.c | 436 ++++++++++++++++++++++++
kernel/sched/bpf_topology.c | 97 ++++++
kernel/sched/core.c | 103 ++++++
kernel/sched/fair.c | 64 +++-
kernel/sched/sched.h | 8 +
samples/bpf/Makefile | 9 +
samples/bpf/bpf_load.c | 8 +-
samples/bpf/sched_pick_task_kern.c | 56 ++++
samples/bpf/sched_pick_task_user.c | 94 ++++++
samples/bpf/sched_preempt_kern.c | 147 +++++++++
samples/bpf/sched_preempt_user.c | 140 ++++++++
samples/bpf/sched_select_core_kern.c | 259 +++++++++++++++
samples/bpf/sched_select_core_user.c | 125 +++++++
scripts/bpf_helpers_doc.py | 20 ++
tools/include/uapi/linux/bpf.h | 151 +++++++++
tools/lib/bpf/libbpf_sched.h | 473 +++++++++++++++++++++++++++
25 files changed, 2558 insertions(+), 6 deletions(-)
create mode 100644 include/linux/bpf_topology.h
create mode 100644 kernel/sched/bpf_topology.c
create mode 100644 samples/bpf/sched_pick_task_kern.c
create mode 100644 samples/bpf/sched_pick_task_user.c
create mode 100644 samples/bpf/sched_preempt_kern.c
create mode 100644 samples/bpf/sched_preempt_user.c
create mode 100644 samples/bpf/sched_select_core_kern.c
create mode 100644 samples/bpf/sched_select_core_user.c
create mode 100644 tools/lib/bpf/libbpf_sched.h
--
2.33.0
1
21

[PATCH openEuler-1.0-LTS 1/2] x86/speculation: Add RSB VM Exit protections
by Yongqiang Liu 19 Aug '22
by Yongqiang Liu 19 Aug '22
19 Aug '22
From: Daniel Sneddon <daniel.sneddon(a)linux.intel.com>
stable inclusion
from stable-v4.19.255
commit b6c5011934a15762cd694e36fe74f2f2f93eac9b
category: bugfix
bugzilla: 187492, https://gitee.com/src-openeuler/kernel/issues/I5N1SO
CVE: CVE-2022-26373
--------------------------------
commit 2b1299322016731d56807aa49254a5ea3080b6b3 upstream.
tl;dr: The Enhanced IBRS mitigation for Spectre v2 does not work as
documented for RET instructions after VM exits. Mitigate it with a new
one-entry RSB stuffing mechanism and a new LFENCE.
== Background ==
Indirect Branch Restricted Speculation (IBRS) was designed to help
mitigate Branch Target Injection and Speculative Store Bypass, i.e.
Spectre, attacks. IBRS prevents software run in less privileged modes
from affecting branch prediction in more privileged modes. IBRS requires
the MSR to be written on every privilege level change.
To overcome some of the performance issues of IBRS, Enhanced IBRS was
introduced. eIBRS is an "always on" IBRS, in other words, just turn
it on once instead of writing the MSR on every privilege level change.
When eIBRS is enabled, more privileged modes should be protected from
less privileged modes, including protecting VMMs from guests.
== Problem ==
Here's a simplification of how guests are run on Linux' KVM:
void run_kvm_guest(void)
{
// Prepare to run guest
VMRESUME();
// Clean up after guest runs
}
The execution flow for that would look something like this to the
processor:
1. Host-side: call run_kvm_guest()
2. Host-side: VMRESUME
3. Guest runs, does "CALL guest_function"
4. VM exit, host runs again
5. Host might make some "cleanup" function calls
6. Host-side: RET from run_kvm_guest()
Now, when back on the host, there are a couple of possible scenarios of
post-guest activity the host needs to do before executing host code:
* on pre-eIBRS hardware (legacy IBRS, or nothing at all), the RSB is not
touched and Linux has to do a 32-entry stuffing.
* on eIBRS hardware, VM exit with IBRS enabled, or restoring the host
IBRS=1 shortly after VM exit, has a documented side effect of flushing
the RSB except in this PBRSB situation where the software needs to stuff
the last RSB entry "by hand".
IOW, with eIBRS supported, host RET instructions should no longer be
influenced by guest behavior after the host retires a single CALL
instruction.
However, if the RET instructions are "unbalanced" with CALLs after a VM
exit as is the RET in #6, it might speculatively use the address for the
instruction after the CALL in #3 as an RSB prediction. This is a problem
since the (untrusted) guest controls this address.
Balanced CALL/RET instruction pairs such as in step #5 are not affected.
== Solution ==
The PBRSB issue affects a wide variety of Intel processors which
support eIBRS. But not all of them need mitigation. Today,
X86_FEATURE_RETPOLINE triggers an RSB filling sequence that mitigates
PBRSB. Systems setting RETPOLINE need no further mitigation - i.e.,
eIBRS systems which enable retpoline explicitly.
However, such systems (X86_FEATURE_IBRS_ENHANCED) do not set RETPOLINE
and most of them need a new mitigation.
Therefore, introduce a new feature flag X86_FEATURE_RSB_VMEXIT_LITE
which triggers a lighter-weight PBRSB mitigation versus RSB Filling at
vmexit.
The lighter-weight mitigation performs a CALL instruction which is
immediately followed by a speculative execution barrier (INT3). This
steers speculative execution to the barrier -- just like a retpoline
-- which ensures that speculation can never reach an unbalanced RET.
Then, ensure this CALL is retired before continuing execution with an
LFENCE.
In other words, the window of exposure is opened at VM exit where RET
behavior is troublesome. While the window is open, force RSB predictions
sampling for RET targets to a dead end at the INT3. Close the window
with the LFENCE.
There is a subset of eIBRS systems which are not vulnerable to PBRSB.
Add these systems to the cpu_vuln_whitelist[] as NO_EIBRS_PBRSB.
Future systems that aren't vulnerable will set ARCH_CAP_PBRSB_NO.
[ bp: Massage, incorporate review comments from Andy Cooper. ]
[ Pawan: Update commit message to replace RSB_VMEXIT with RETPOLINE ]
Signed-off-by: Daniel Sneddon <daniel.sneddon(a)linux.intel.com>
Co-developed-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Pawan Gupta <pawan.kumar.gupta(a)linux.intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
conflict:
arch/x86/include/asm/cpufeatures.h
arch/x86/kernel/cpu/common.c
Signed-off-by: Chen Jiahao <chenjiahao16(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Reviewed-by: Liao Chang <liaochang1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
Documentation/admin-guide/hw-vuln/spectre.rst | 8 +++
arch/x86/include/asm/cpufeatures.h | 2 +
arch/x86/include/asm/msr-index.h | 4 ++
arch/x86/include/asm/nospec-branch.h | 15 +++++
arch/x86/kernel/cpu/bugs.c | 61 ++++++++++++++++++-
arch/x86/kernel/cpu/common.c | 12 +++-
arch/x86/kvm/vmx.c | 6 +-
7 files changed, 102 insertions(+), 6 deletions(-)
diff --git a/Documentation/admin-guide/hw-vuln/spectre.rst b/Documentation/admin-guide/hw-vuln/spectre.rst
index 3a6e1fcad3c0..a4cb79d0dd57 100644
--- a/Documentation/admin-guide/hw-vuln/spectre.rst
+++ b/Documentation/admin-guide/hw-vuln/spectre.rst
@@ -422,6 +422,14 @@ The possible values in this file are:
'RSB filling' Protection of RSB on context switch enabled
============= ===========================================
+ - EIBRS Post-barrier Return Stack Buffer (PBRSB) protection status:
+
+ =========================== =======================================================
+ 'PBRSB-eIBRS: SW sequence' CPU is affected and protection of RSB on VMEXIT enabled
+ 'PBRSB-eIBRS: Vulnerable' CPU is vulnerable
+ 'PBRSB-eIBRS: Not affected' CPU is not affected by PBRSB
+ =========================== =======================================================
+
Full mitigation might require a microcode update from the CPU
vendor. When the necessary microcode is not available, the kernel will
report vulnerability.
diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 249cd7a5ade5..46f860f8ea25 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -304,6 +304,7 @@
#define X86_FEATURE_CQM_MBM_LOCAL (11*32+ 3) /* LLC Local MBM monitoring */
#define X86_FEATURE_FENCE_SWAPGS_USER (11*32+ 4) /* "" LFENCE in user entry SWAPGS path */
#define X86_FEATURE_FENCE_SWAPGS_KERNEL (11*32+ 5) /* "" LFENCE in kernel entry SWAPGS path */
+#define X86_FEATURE_RSB_VMEXIT_LITE (11*32+ 6) /* "" Fill RSB on VM exit when EIBRS is enabled */
/* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */
#define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */
@@ -421,5 +422,6 @@
#define X86_BUG_ITLB_MULTIHIT X86_BUG(23) /* CPU may incur MCE during certain page attribute changes */
#define X86_BUG_SRBDS X86_BUG(24) /* CPU may leak RNG bits if not mitigated */
#define X86_BUG_MMIO_STALE_DATA X86_BUG(25) /* CPU is affected by Processor MMIO Stale Data vulnerabilities */
+#define X86_BUG_EIBRS_PBRSB X86_BUG(26) /* EIBRS is vulnerable to Post Barrier RSB Predictions */
#endif /* _ASM_X86_CPUFEATURES_H */
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index a29505c3d14d..8688bd4a5e89 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -120,6 +120,10 @@
* bit available to control VERW
* behavior.
*/
+#define ARCH_CAP_PBRSB_NO BIT(24) /*
+ * Not susceptible to Post-Barrier
+ * Return Stack Buffer Predictions.
+ */
#define MSR_IA32_FLUSH_CMD 0x0000010b
#define L1D_FLUSH BIT(0) /*
diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h
index 0a8214895698..1f2a6f183d18 100644
--- a/arch/x86/include/asm/nospec-branch.h
+++ b/arch/x86/include/asm/nospec-branch.h
@@ -54,6 +54,14 @@
jnz 771b; \
add $(BITS_PER_LONG/8) * nr, sp;
+/* Sequence to mitigate PBRSB on eIBRS CPUs */
+#define __ISSUE_UNBALANCED_RET_GUARD(sp) \
+ call 881f; \
+ int3; \
+881: \
+ add $(BITS_PER_LONG/8), sp; \
+ lfence;
+
#ifdef __ASSEMBLY__
/*
@@ -269,6 +277,13 @@ static inline void vmexit_fill_RSB(void)
: "=r" (loops), ASM_CALL_CONSTRAINT
: : "memory" );
#endif
+ asm volatile (ANNOTATE_NOSPEC_ALTERNATIVE
+ ALTERNATIVE("jmp 920f",
+ __stringify(__ISSUE_UNBALANCED_RET_GUARD(%0)),
+ X86_FEATURE_RSB_VMEXIT_LITE)
+ "920:"
+ : ASM_CALL_CONSTRAINT
+ : : "memory" );
}
static __always_inline
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 32cd95cc8eab..3ba948bbd77d 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1043,6 +1043,49 @@ static enum spectre_v2_mitigation __init spectre_v2_select_retpoline(void)
return SPECTRE_V2_RETPOLINE;
}
+static void __init spectre_v2_determine_rsb_fill_type_at_vmexit(enum spectre_v2_mitigation mode)
+{
+ /*
+ * Similar to context switches, there are two types of RSB attacks
+ * after VM exit:
+ *
+ * 1) RSB underflow
+ *
+ * 2) Poisoned RSB entry
+ *
+ * When retpoline is enabled, both are mitigated by filling/clearing
+ * the RSB.
+ *
+ * When IBRS is enabled, while #1 would be mitigated by the IBRS branch
+ * prediction isolation protections, RSB still needs to be cleared
+ * because of #2. Note that SMEP provides no protection here, unlike
+ * user-space-poisoned RSB entries.
+ *
+ * eIBRS should protect against RSB poisoning, but if the EIBRS_PBRSB
+ * bug is present then a LITE version of RSB protection is required,
+ * just a single call needs to retire before a RET is executed.
+ */
+ switch (mode) {
+ case SPECTRE_V2_NONE:
+ /* These modes already fill RSB at vmexit */
+ case SPECTRE_V2_LFENCE:
+ case SPECTRE_V2_RETPOLINE:
+ case SPECTRE_V2_EIBRS_RETPOLINE:
+ return;
+
+ case SPECTRE_V2_EIBRS_LFENCE:
+ case SPECTRE_V2_EIBRS:
+ if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) {
+ setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT_LITE);
+ pr_info("Spectre v2 / PBRSB-eIBRS: Retire a single CALL on VMEXIT\n");
+ }
+ return;
+ }
+
+ pr_warn_once("Unknown Spectre v2 mode, disabling RSB mitigation at VM exit");
+ dump_stack();
+}
+
static void __init spectre_v2_select_mitigation(void)
{
enum spectre_v2_mitigation_cmd cmd = spectre_v2_parse_cmdline();
@@ -1135,6 +1178,8 @@ static void __init spectre_v2_select_mitigation(void)
setup_force_cpu_cap(X86_FEATURE_RSB_CTXSW);
pr_info("Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch\n");
+ spectre_v2_determine_rsb_fill_type_at_vmexit(mode);
+
/*
* Retpoline means the kernel is safe because it has no indirect
* branches. Enhanced IBRS protects firmware too, so, enable restricted
@@ -1854,6 +1899,19 @@ static char *ibpb_state(void)
return "";
}
+static char *pbrsb_eibrs_state(void)
+{
+ if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) {
+ if (boot_cpu_has(X86_FEATURE_RSB_VMEXIT_LITE) ||
+ boot_cpu_has(X86_FEATURE_RETPOLINE))
+ return ", PBRSB-eIBRS: SW sequence";
+ else
+ return ", PBRSB-eIBRS: Vulnerable";
+ } else {
+ return ", PBRSB-eIBRS: Not affected";
+ }
+}
+
static ssize_t spectre_v2_show_state(char *buf)
{
if (spectre_v2_enabled == SPECTRE_V2_LFENCE)
@@ -1866,12 +1924,13 @@ static ssize_t spectre_v2_show_state(char *buf)
spectre_v2_enabled == SPECTRE_V2_EIBRS_LFENCE)
return sprintf(buf, "Vulnerable: eIBRS+LFENCE with unprivileged eBPF and SMT\n");
- return sprintf(buf, "%s%s%s%s%s%s\n",
+ return sprintf(buf, "%s%s%s%s%s%s%s\n",
spectre_v2_strings[spectre_v2_enabled],
ibpb_state(),
boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", IBRS_FW" : "",
stibp_state(),
boot_cpu_has(X86_FEATURE_RSB_CTXSW) ? ", RSB filling" : "",
+ pbrsb_eibrs_state(),
spectre_v2_module_string());
}
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index a6099acc9a94..d457c46ac0a4 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1032,6 +1032,7 @@ static void identify_cpu_without_cpuid(struct cpuinfo_x86 *c)
#define NO_SWAPGS BIT(6)
#define NO_ITLB_MULTIHIT BIT(7)
#define NO_SPECTRE_V2 BIT(8)
+#define NO_EIBRS_PBRSB BIT(9)
#define VULNWL(_vendor, _family, _model, _whitelist) \
{ X86_VENDOR_##_vendor, _family, _model, X86_FEATURE_ANY, _whitelist }
@@ -1071,7 +1072,7 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
VULNWL_INTEL(ATOM_GOLDMONT, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
VULNWL_INTEL(ATOM_GOLDMONT_X, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
- VULNWL_INTEL(ATOM_GOLDMONT_PLUS, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT),
+ VULNWL_INTEL(ATOM_GOLDMONT_PLUS, NO_MDS | NO_L1TF | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_EIBRS_PBRSB),
/*
* Technically, swapgs isn't serializing on AMD (despite it previously
@@ -1081,7 +1082,9 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
* good enough for our purposes.
*/
- VULNWL_INTEL(ATOM_TREMONT_X, NO_ITLB_MULTIHIT),
+ VULNWL_INTEL(ATOM_TREMONT, NO_EIBRS_PBRSB),
+ VULNWL_INTEL(ATOM_TREMONT_L, NO_EIBRS_PBRSB),
+ VULNWL_INTEL(ATOM_TREMONT_X, NO_ITLB_MULTIHIT | NO_EIBRS_PBRSB),
/* AMD Family 0xf - 0x12 */
VULNWL_AMD(0x0f, NO_MELTDOWN | NO_SSB | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT),
@@ -1242,6 +1245,11 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
!arch_cap_mmio_immune(ia32_cap))
setup_force_cpu_bug(X86_BUG_MMIO_STALE_DATA);
+ if (cpu_has(c, X86_FEATURE_IBRS_ENHANCED) &&
+ !cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) &&
+ !(ia32_cap & ARCH_CAP_PBRSB_NO))
+ setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
+
if (cpu_matches(cpu_vuln_whitelist, NO_MELTDOWN))
return;
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 1869d1c4dcd0..7ab18b5a8e96 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -11008,6 +11008,9 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
#endif
);
+ /* Eliminate branch target predictions from guest mode */
+ vmexit_fill_RSB();
+
vmx_enable_fb_clear(vmx);
/*
@@ -11030,9 +11033,6 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
x86_spec_ctrl_restore_host(vmx->spec_ctrl, 0);
- /* Eliminate branch target predictions from guest mode */
- vmexit_fill_RSB();
-
/* All fields are clean at this point */
if (static_branch_unlikely(&enable_evmcs))
current_evmcs->hv_clean_fields |=
--
2.25.1
1
1
BMC is an in-kernel key-value cache implemented in BPF and proposed by
paper [1]. The paper discussed BMC for memcached, obtaining at least
6x performance speedup.
This patchset implements a sample BMC for Redis.
[1] https://www.usenix.org/conference/nsdi21/presentation/ghigoff
v4:
- Rebase
v3:
- Fix build warning
v2:
- Reimplement in XDP
Xu Kuohai (3):
bpf: Add helper bpf_tcp_udpate_seq to synchronize tcp seq/ack
bpf: Add xdp load and store helpers
samples: bpf: Add sample BMC for Redis
include/uapi/linux/bpf.h | 27 ++
net/core/filter.c | 98 +++++
samples/bpf/Makefile | 3 +
samples/bpf/bmc/bpf.c | 485 +++++++++++++++++++++
samples/bpf/bmc/common.h | 21 +
samples/bpf/bmc/tool.c | 763 +++++++++++++++++++++++++++++++++
tools/include/uapi/linux/bpf.h | 27 ++
7 files changed, 1424 insertions(+)
create mode 100644 samples/bpf/bmc/bpf.c
create mode 100644 samples/bpf/bmc/common.h
create mode 100644 samples/bpf/bmc/tool.c
--
2.20.1
1
3

18 Aug '22
您好
Intel 第十代Core I CPU i7-10700 集成核心显卡Intel® UHD Graphics 630 安装openeuler 20.03 LTS SP3,图形界面安装UKUI,OS内核 linux 4.19.90-2206.3.0.0155.oel.x86_64 。外接DELL, ASUS, LG等多个不同厂商主流商用显示器,发现显示器型号不能识别,显示分辨率无法调节,安装OpenEuler21.09 图形界面UKUI,kernel版本5.10可以正常识别显示器型号,可以调整显示分辨率。请问openeuler 20.03 LTS SP3是否支持Intel® UHD Graphics 630显卡,是否有解决方案,盼复,谢谢!
1
0
您好!
Kernel SIG 邀请您参加 2022-08-19 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.arm64: add machine check safe support特性回合评审,PR78;
2.Add memory reliable feature特性回合评审,PR79;
会议链接:https://us06web.zoom.us/j/88345524477?pwd=WHAvcmcza0JnY1JhekNVdUJzUE04UT09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-08-19 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.arm64: add machine check safe support特性回合评审,PR78;
2.Add memory reliable feature特性回合评审,PR79;
You can join the meeting at https://us06web.zoom.us/j/88345524477?pwd=WHAvcmcza0JnY1JhekNVdUJzUE04UT09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0
This patch list and descript typical openEuler kernel header format.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
openeuler_patch_header.lg | 178 ++++++++++++++++++++++++++++++++++++++
1 file changed, 178 insertions(+)
create mode 100644 openeuler_patch_header.lg
diff --git a/openeuler_patch_header.lg b/openeuler_patch_header.lg
new file mode 100644
index 000000000000..a874d140cd1c
--- /dev/null
+++ b/openeuler_patch_header.lg
@@ -0,0 +1,178 @@
+Patch format definition
+
+[M] stands for “mandatory”
+[O] stands for “option”
+$category can be: bug preparation, bugfix, perf, feature, doc, other…
+
+If category is feature, then we also need to add feature name like below:
+category: feature
+feature: YYY (the feature name)
+
+If the patch is related to gitee issue, then we need add the corresponding tag
+like below.
+for example:
+bugzilla: https://gitee.com/openeuler/kernel/issues/I4OM1C
+
+Additional changelog should include at least one of the flollwing:
+1) Why we should apply this patch
+2) What real problem in product does this patch resolved
+3) How could we reproduce this bug or how to test
+4) Other useful information for help to understand this patch or problem
+
+The detail information is very useful for porting patch to another kenrel
+branch.
+
+stable patch header format:
+
+origin patch title
+
+stable inclusion [M]
+from $stable-version [M]
+commit $id [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [M]
+CVE: $cve-id or NA [O]
+
+Reference: patch URLs
+
+additional changelog [O]
+
+------------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+($stable-version would be stable-4.19.110, stable-4.19.111, etc…
+$id would be stable commit)
+
+mainline patch header format:
+
+origin patch title
+
+mainline inclusion [M]
+from $mainline-version [M]
+commit $id [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [M]
+CVE: $cve-id or NA [M]
+
+Reference: patch URLs
+
+additional changelog [O]
+
+-------------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+($mainline-version could be mainline-5.5, mainline-5.6, etc…)
+
+HULK patch header format:
+
+origin patch title
+
+hulk inclusion [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [M]
+CVE: $cve-id or NA [M]
+
+------------------------------------------
+
+changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+distribution patch header format:
+
+origin patch title
+
+dist inclusion [M]
+from $dist-version [M]
+commit $id [O]
+category: $category [O]
+bugzilla: $gitee-issue-url [O]
+
+additional changelog [O]
+
+-----------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+($dist-version could be centos-7.5, centos-7.7, etc…)
+
+EulerOS patch header format:
+
+origin patch title
+
+euleros inclusion [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [O]
+
+----------------------------------------
+
+changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+Driver patch header format:
+
+origin patch title
+
+driver inclusion [M]
+category: $category [M]
+bugzilla: $gitee-issue-url [O]
+
+additional changelog [O]
+
+---------------------------------------
+
+original changelog
+
+Signed-off-by: $author $name(a)huawei.com [M]
+
+========
+
+Examples
+
+mm: introduce memmap_alloc() to unify memory map allocation
+
+mainline inclusion
+from mainline-v5.15-rc1
+commit c803b3c8b3b70f306ee6300bf8acdd70ffd1441a
+category: bugfix
+bugzilla: 186414, https://gitee.com/openeuler/kernel/issues/I5K7IY
+CVE: NA
+
+Reference:
+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c803b3c8b3b70f306ee6300bf8acdd70ffd1441a
+
+--------------------------------
+
+There are several places that allocate memory for the memory map:
+alloc_node_mem_map() for FLATMEM, sparse_buffer_init() and
+__populate_section_memmap() for SPARSEMEM.
+
+The memory allocated in the FLATMEM case is zeroed and it is never
+poisoned, regardless of CONFIG_PAGE_POISON setting.
+
+The memory allocated in the SPARSEMEM cases is not zeroed and it is
+implicitly poisoned inside memblock if CONFIG_PAGE_POISON is set.
+
+Introduce memmap_alloc() wrapper for memblock allocators that will be used
+for both FLATMEM and SPARSEMEM cases and will makei memory map zeroing and
+poisoning consistent for different memory models.
+
+Link: https://lkml.kernel.org/r/20210714123739.16493-4-rppt@kernel.org
+Signed-off-by: Mike Rapoport <rppt(a)linux.ibm.com>
+Cc: Michal Simek <monstr(a)monstr.eu>
+Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org>
+Conflicts:
+ mm/page_alloc.c
+Signed-off-by: Liu Shixin <liushixin2(a)huawei.com>
+Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
+Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS] Revert "blk-mq: fix null pointer dereference in blk_mq_queue_tag_busy_ite"
by Yongqiang Liu 18 Aug '22
by Yongqiang Liu 18 Aug '22
18 Aug '22
From: Li Nan <linan122(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187497, https://gitee.com/openeuler/kernel/issues/I5MT95
CVE: NA
--------------------------------
This reverts commit 64ba823fd4272f7d624bbfb4bd6e3c89aa6f423c.
Commit fea9f92f1748 introduce the bug. It is a patch for performance
optimization and this version doesn't have to backport it.
blk_mq_queue_tag_busy_iter() won't access q->tag_set->flags or reference
other fields in q that is uninitialized at present. 64ba823fd427 will
make io hang for special scsi drivers(e.x. ata_piix). Revert it.
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
block/blk-mq-tag.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index c24802fe6ab2..bee92ab06a5e 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -374,13 +374,6 @@ void blk_mq_queue_tag_busy_iter(struct request_queue *q, busy_iter_fn *fn,
struct blk_mq_hw_ctx *hctx;
int i;
- /*
- * For dm, it can run here after register_disk, but the queue has not
- * been initialized yet. Check QUEUE_FLAG_REGISTERED prevent null point
- * access.
- */
- if (!test_bit(QUEUE_FLAG_REGISTERED, &q->queue_flags))
- return;
/*
* __blk_mq_update_nr_hw_queues will update the nr_hw_queues and
* queue_hw_ctx after freeze the queue, so we use q_usage_counter
--
2.25.1
1
0

18 Aug '22
Memory reliable feature is a memory tiering mechanism. It is based on
kernel mirror feature, which splits memory into two sperate regions,
mirrored(reliable) region and non-mirrored (non-reliable) region.
for kernel mirror feature:
allocate kernel memory from mirrored region by default
allocate user memory from non-mirrored region by default
non-mirrored region will be arranged into ZONE_MOVABLE.
for kernel reliable feature, it has additional features below:
normal user tasks never alloc memory from mirrored region with userspace
apis(malloc, mmap, etc.)
special user tasks will allocate memory from mirrored region by default
tmpfs/pagecache allocate memory from mirrored region by default
upper limit of mirrored region allcated for user tasks, tmpfs and
pagecache
Support Reliable fallback mechanism which allows special user tasks, tmpfs
and pagecache can fallback to alloc non-mirrored region, it's the default
setting.
In order to fulfil the goal
___GFP_RELIABILITY flag added for alloc memory from mirrored region.
the high_zoneidx for special user tasks/tmpfs/pagecache is set to
ZONE_NORMAL.
normal user tasks could only alloc from ZONE_MOVABLE.
This patch is just the main framework, memory reliable support for special
user tasks, pagecache and tmpfs has own patches.
To enable this function, mirrored(reliable) memory is needed and
"kernelcore=reliable" should be added to kernel parameters.
Chen Wandun (4):
mm: Add cmdline for the reliable memory usage of page cache
proc/meminfo: Add "FileCache" item in /proc/meminfo
mm: add "ReliableFileCache" item in /proc/meminfo
mm: Add support for limiting the usage of reliable memory in pagecache
Ma Wupeng (17):
mm: Drop shmem reliable related log during startup
mm: Export static key mem_reliable
mm: Export mem_reliable_status() for checking memory reliable status
mm: Refactor code in reliable_report_meminfo()
mm: Count reliable memory info based on zone info
mm: Disable memory reliable when kdump is in progress
mm: Clear GFP_RELIABLE if the conditions are not met
mm: thp: Add memory reliable support for hugepaged collapse
mm: Add reliable memory use limit for user tasks
mm: Introduce fallback mechanism for memory reliable
mm: Introduce shmem mirrored memory limit for memory reliable
mm: Introduce reliable_debug=S to control shmem use mirrored memory
mm: Introduce proc interface to disable memory reliable features
mm: Show debug info about memory reliable if oom occurs
mm: Update reliable flag in memory allocaion for reliable task only in
task context
mm/memblock: Introduce ability to alloc memory from specify memory
reigon
mm/hugetlb: Hugetlb use non-mirrored memory if memory reliable is
enabled
Peng Wu (3):
mm: Add kernel param for memory reliable
mm: Add reliable_nr_page for accounting reliable memory
proc: Count reliable memory usage of reliable tasks
Yu Liao (1):
mm: Add sysctl to clear free list pages
Zhou Guanghui (1):
shmem: Count and show reliable shmem info
.../admin-guide/kernel-parameters.txt | 13 +
Documentation/admin-guide/sysctl/vm.rst | 13 +
Documentation/filesystems/proc.rst | 8 +
fs/proc/task_mmu.c | 1 +
include/linux/mem_reliable.h | 124 ++++-
include/linux/memblock.h | 5 +
include/linux/mm.h | 6 +-
include/linux/mm_inline.h | 4 +
include/linux/mm_types.h | 3 +-
include/linux/mmzone.h | 5 +
kernel/events/uprobes.c | 2 +
lib/show_mem.c | 1 +
mm/Kconfig | 13 +
mm/Makefile | 2 +
mm/clear_freelist_page.c | 187 +++++++
mm/filemap.c | 9 +-
mm/huge_memory.c | 8 +
mm/hugetlb.c | 17 +-
mm/khugepaged.c | 34 +-
mm/ksm.c | 2 +
mm/mem_reliable.c | 507 ++++++++++++++++--
mm/memblock.c | 107 ++++
mm/memory.c | 12 +
mm/migrate.c | 10 +
mm/mmap.c | 1 +
mm/page_alloc.c | 135 ++++-
mm/rmap.c | 5 +
mm/shmem.c | 21 +-
mm/swapfile.c | 2 +
mm/userfaultfd.c | 1 +
mm/vmscan.c | 2 +
31 files changed, 1183 insertions(+), 77 deletions(-)
create mode 100644 mm/clear_freelist_page.c
--
2.20.1
1
26
This set introduces CO-RE support in the kernel.
There are several reasons to add such support:
1.It's a step toward signed BPF programs.
2.It allows golang like languages that struggle to adopt libbpf to take advantage of CO-RE powers.
3.Currently the field accessed by 'ldx [R1 + 10]' insn is recognized by the verifier purely based on +10 offset.
If R1 points to a union the verifier picks one of the fields at this offset.
With CO-RE the kernel can disambiguate the field access.
Alan Maguire (5):
libbpf: bpf__find_by_name[_kind] should use btf__get_nr_types()
libbpf: BTF dumper support for typed data
libbpf: Clarify/fix unaligned data issues for btf typed dump
libbpf: Avoid use of __int128 in typed dump display
libbpf: Propagate errors when retrieving enum value for typed data
display
Alexei Starovoitov (55):
bpf: Optimize program stats
bpf: Run sleepable programs with migration disabled
bpf: Compute program stats for sleepable programs
bpf: Add per-program recursion prevention mechanism
selftest/bpf: Add a recursion test
bpf: Count the number of times recursion was prevented
selftests/bpf: Improve recursion selftest
bpf: Allows per-cpu maps and map-in-map in sleepable programs
selftests/bpf: Add a test for map-in-map and per-cpu maps in sleepable
progs
bpf: Clear per_cpu pointers during bpf_prog_realloc
bpf: Dont allow vmlinux BTF to be used in map_create and prog_load.
libbpf: Remove unused field.
bpf: Introduce bpf_sys_bpf() helper and program type.
bpf: Introduce bpfptr_t user/kernel pointer.
bpf: Prepare bpf syscall to be used from kernel and user space.
libbpf: Support for syscall program type
bpf: Make btf_load command to be bpfptr_t compatible.
bpf: Introduce fd_idx
bpf: Add bpf_btf_find_by_name_kind() helper.
bpf: Add bpf_sys_close() helper.
libbpf: Change the order of data and text relocations.
libbpf: Add bpf_object pointer to kernel_supports().
libbpf: Preliminary support for fd_idx
libbpf: Generate loader program out of BPF ELF file.
libbpf: Cleanup temp FDs when intermediate sys_bpf fails.
libbpf: Introduce bpf_map__initial_value().
bpftool: Use syscall/loader program in "prog load" and "gen skeleton"
command.
selftests/bpf: Convert few tests to light skeleton.
selftests/bpf: Convert atomics test to light skeleton.
selftests/bpf: Convert test printk to use rodata.
selftests/bpf: Convert test trace_printk to lskel.
bpf: Add cmd alias BPF_PROG_RUN
bpf: Prepare bpf_prog_put() to be called from irq context.
bpf: Factor out bpf_spin_lock into helpers.
libbpf: Cleanup the layering between CORE and bpf_program.
libbpf: Split bpf_core_apply_relo() into bpf_program independent
helper.
libbpf: Move CO-RE types into relo_core.h.
libbpf: Split CO-RE logic into relo_core.c.
libbpf: Make gen_loader data aligned.
libbpf: Replace btf__type_by_id() with btf_type_by_id().
bpf: Rename btf_member accessors.
bpf: Prepare relo_core.c for kernel duty.
bpf: Define enum bpf_core_relo_kind as uapi.
bpf: Pass a set of bpf_core_relo-s to prog_load command.
bpf: Add bpf_core_add_cands() and wire it into
bpf_core_apply_relo_insn().
libbpf: Use CO-RE in the kernel in light skeleton.
libbpf: Support init of inner maps in light skeleton.
libbpf: Clean gen_loader's attach kind.
selftests/bpf: Improve inner_map test coverage.
selftests/bpf: Convert map_ptr_kern test to use light skeleton.
selftests/bpf: Additional test for CO-RE in the kernel.
selftests/bpf: Add CO-RE relocations to verifier scale test.
libbpf: Reduce bpf_core_apply_relo_insn() stack usage.
bpf: Silence purge_cand_cache build warning.
libbpf: Fix gen_loader assumption on number of programs.
Andrei Matei (1):
libbpf: Fail early when loading programs with unspecified type
Andrew Delgadillo (1):
selftests/bpf: Drop the need for LLVM's llc
Andrii Nakryiko (148):
libbpf: Factor out common operations in BTF writing APIs
selftest/bpf: Relax btf_dedup test checks
libbpf: Unify and speed up BTF string deduplication
libbpf: Implement basic split BTF support
selftests/bpf: Add split BTF basic test
selftests/bpf: Add checking of raw type dump in BTF writer APIs
selftests
libbpf: Support BTF dedup of split BTFs
libbpf: Accomodate DWARF/compiler bug with duplicated identical arrays
selftests/bpf: Add split BTF dedup selftests
tools/bpftool: Add bpftool support for split BTF
bpf: Add in-kernel split BTF support
bpf: Assign ID to vmlinux BTF and return extra info for BTF in
GET_OBJ_INFO
kbuild: Build kernel module BTFs if BTF is enabled and pahole supports
it
bpf: Load and verify kernel module BTFs
tools/bpftool: Add support for in-kernel and named BTF in `btf show`
bpf: Compile out btf_parse_module() if module BTF is not enabled
bpf: Sanitize BTF data pointer after module is loaded
tools/bpftool: Emit name <anon> for anonymous BTFs
libbpf: Add base BTF accessor
tools/bpftool: Auto-detect split BTFs in common cases
bpf: Keep module's btf_data_size intact after load
libbpf: Add internal helper to load BTF data by FD
libbpf: Refactor CO-RE relocs to not assume a single BTF object
libbpf: Add kernel module BTF support for CO-RE relocations
selftests/bpf: Add bpf_testmod kernel module for testing
selftests/bpf: Add support for marking sub-tests as skipped
selftests/bpf: Add CO-RE relocs selftest relying on kernel module BTF
bpf: Remove hard-coded btf_vmlinux assumption from BPF verifier
bpf: Allow to specify kernel module BTFs when attaching BPF programs
libbpf: Factor out low-level BPF program loading helper
libbpf: Support attachment of BPF tracing programs to kernel modules
selftests/bpf: Add tp_btf CO-RE reloc test for modules
kbuild: Skip module BTF generation for out-of-tree external modules
selftests/bpf: fix bpf_testmod.ko recompilation logic
libbpf: Support modules in bpf_program__set_attach_target() API
bpf: Allow empty module BTFs
libbpf: Add user-space variants of BPF_CORE_READ() family of macros
libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family
selftests/bpf: Add tests for user- and non-CO-RE BPF_CORE_READ()
variants
libbpf: Clarify kernel type use with USER variants of CORE reading
macros
selftests/bpf: Sync RCU before unloading bpf_testmod
bpf: Support BPF ksym variables in kernel modules
libbpf: Support kernel module ksym externs
selftests/bpf: Test kernel module ksym externs
selftests/bpf: Don't exit on failed bpf_testmod unload
libbpf: Stop using feature-detection Makefiles
libbpf: provide NULL and KERNEL_VERSION macros in bpf_helpers.h
libbpf: Expose btf_type_by_id() internally
libbpf: Generalize BTF and BTF.ext type ID and strings iteration
libbpf: Rename internal memory-management helpers
libbpf: Extract internal set-of-strings datastructure APIs
libbpf: Add generic BTF type shallow copy API
libbpf: Add BPF static linker APIs
libbpf: Add BPF static linker BTF and BTF.ext support
bpftool: Add ability to specify custom skeleton object name
bpftool: Add `gen object` command to perform BPF static linking
selftests/bpf: Pass all BPF .o's through BPF static linker
selftests/bpf: Add multi-file statically linked BPF object file test
libbpf: Skip BTF fixup if object file has no BTF
libbpf: Constify few bpf_program getters
libbpf: Preserve empty DATASEC BTFs during static linking
libbpf: Fix memory leak when emitting final btf_ext
libbpf: Add bpf_map__inner_map API
libbpf: Suppress compiler warning when using SEC() macro with externs
libbpf: Mark BPF subprogs with hidden visibility as static for BPF
verifier
libbpf: Allow gaps in BPF program sections to support overriden weak
functions
libbpf: Refactor BTF map definition parsing
libbpf: Factor out symtab and relos sanity checks
libbpf: Make few internal helpers available outside of libbpf.c
libbpf: Extend sanity checking ELF symbols with externs validation
libbpf: Tighten BTF type ID rewriting with error checking
libbpf: Add linker extern resolution support for functions and global
variables
libbpf: Support extern resolution for BTF-defined maps in .maps
section
libbpf: Support BTF_KIND_FLOAT during type compatibility checks in
CO-RE
bpftool: Strip const/volatile/restrict modifiers from .bss and .data
vars
libbpf: Add per-file linker opts
selftests/bpf: Stop using static variables for passing data to/from
user-space
bpftool: Stop emitting static variables in BPF skeleton
libbpf: Fix ELF symbol visibility update logic
libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions
libbpf: Reject static maps
libbpf: Reject static entry-point BPF programs
libbpf: Add libbpf_set_strict_mode() API to turn on libbpf 1.0
behaviors
libbpf: Streamline error reporting for low-level APIs
libbpf: Streamline error reporting for high-level APIs
bpftool: Set errno on skeleton failures and propagate errors
libbpf: Move few APIs from 0.4 to 0.5 version
libbpf: Refactor header installation portions of Makefile
libbpf: Install skel_internal.h header used from light skeletons
selftests/bpf: Add remaining ASSERT_xxx() variants
libbpf: Fix build with latest gcc/binutils with LTO
libbpf: Make libbpf_version.h non-auto-generated
selftests/bpf: Update selftests to always provide "struct_ops" SEC
libbpf: Ensure BPF prog types are set before relocations
libbpf: Simplify BPF program auto-attach code
libbpf: Minimize explicit iterator of section definition array
libbpf: Use pre-setup sec_def in libbpf_find_attach_btf_id()
selftests/bpf: Stop using relaxed_core_relocs which has no effect
libbpf: Deprecated bpf_object_open_opts.relaxed_core_relocs
libbpf: Allow skipping attach_func_name in
bpf_program__set_attach_target()
libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7
libbpf: Constify all high-level program attach APIs
selftests/bpf: Turn on libbpf 1.0 mode and fix all IS_ERR checks
selftests/bpf: Switch fexit_bpf2bpf selftest to set_attach_target()
API
libbpf: Add "tc" SEC_DEF which is a better name for "classifier"
libbpf: Refactor internal sec_def handling to enable pluggability
libbpf: Reduce reliance of attach_fns on sec_def internals
libbpf: Add API that copies all BTF types from one BTF object to
another
libbpf: Deprecate btf__finalize_data() and move it into libbpf.c
libbpf: Extract ELF processing state into separate struct
libbpf: Use Elf64-specific types explicitly for dealing with ELF
libbpf: Remove assumptions about uniqueness of .rodata/.data/.bss maps
bpftool: Support multiple .rodata/.data internal maps in skeleton
bpftool: Improve skeleton generation for data maps without DATASEC
type
libbpf: Support multiple .rodata.* and .data.* BPF maps
selftests/bpf: Demonstrate use of custom .rodata/.data sections
libbpf: Simplify look up by name of internal maps
selftests/bpf: Switch to ".bss"/".rodata"/".data" lookups for internal
maps
libbpf: Fix off-by-one bug in bpf_core_apply_relo()
libbpf: Add ability to fetch bpf_program's underlying instructions
libbpf: Deprecate multi-instance bpf_program APIs
libbpf: Deprecate ambiguously-named bpf_program__size() API
libbpf: Detect corrupted ELF symbols section
libbpf: Improve sanity checking during BTF fix up
libbpf: Validate that .BTF and .BTF.ext sections contain data
libbpf: Fix section counting logic
libbpf: Improve ELF relo sanitization
libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
selftests/bpf: Pass sanitizer flags to linker through LDFLAGS
libbpf: Free up resources used by inner map definition
selftests/bpf: Fix memory leaks in btf_type_c_dump() helper
selftests/bpf: Free per-cpu values array in bpf_iter selftest
selftests/bpf: Free inner strings index in btf selftest
selftests/bpf: Avoid duplicate btf__parse() call
libbpf: Load global data maps lazily on legacy kernels
libbpf: Fix potential misaligned memory access in btf_ext__new()
libbpf: Don't call libc APIs with NULL pointers
libbpf: Fix glob_syms memory leak in bpf_linker
libbpf: Fix using invalidated memory in bpf_linker
selftests/bpf: Fix possible NULL passed to memcpy() with zero size
selftests/bpf: Prevent misaligned memory access in get_stack_raw_tp
test
selftests/bpf: Fix misaligned memory access in queue_stack_map test
selftests/bpf: Prevent out-of-bounds stack access in test_bpffs
selftests/bpf: Fix misaligned accesses in xdp and xdp_bpf2bpf tests
libbpf: Cleanup struct bpf_core_cand.
libbpf: Fix non-C89 loop variable declaration in gen_loader.c
selftests/bpf: Fix GCC11 compiler warnings in -O2 mode
libbpf: Fix logic for finding matching program for CO-RE relocation
Arnaldo Carvalho de Melo (1):
libbpf: Provide GELF_ST_VISIBILITY() define for older libelf
Brendan Jackman (15):
tools/resolve_btfids: Fix some error messages
bpf: Fix cold build of test_progs-no_alu32
bpf: Clarify return value of probe str helpers
bpf: x86: Factor out emission of ModR/M for *(reg + off)
bpf: x86: Factor out emission of REX byte
bpf: x86: Factor out a lookup table for some ALU opcodes
bpf: Rename BPF_XADD and prepare to encode other atomics in .imm
bpf: Move BPF_STX reserved field check into BPF_STX verifier code
bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
bpf: Add instructions for atomic_[cmp]xchg
bpf: Pull out a macro for interpreting atomic ALU operations
bpf: Add bitwise atomic instructions
bpf: Add tests for new BPF atomic operations
bpf: Document new atomic instructions
bpf: Rename fixup_bpf_calls and add some comments
Cong Wang (1):
bpf: Clear percpu pointers in bpf_prog_clone_free()
Daniel Xu (1):
libbpf: Do not close un-owned FD 0 on errors
Dave Marchevsky (1):
bpf: Add verified_insns to bpf_prog_info and fdinfo
Dmitrii Banshchikov (7):
bpf: Rename bpf_reg_state variables
bpf: Extract nullable reg type conversion into a helper function
bpf: Support pointers in global func args
selftests/bpf: Add unit tests for pointers in global functions
bpf: Drop imprecise log message
selftests/bpf: Fix a compiler warning in global func test
bpf: Use MAX_BPF_FUNC_REG_ARGS macro
Florent Revest (6):
selftests/bpf: Fix the ASSERT_ERR_PTR macro
bpf: Factorize bpf_trace_printk and bpf_seq_printf
bpf: Add a ARG_PTR_TO_CONST_STR argument type
bpf: Add a bpf_snprintf helper
libbpf: Introduce a BPF_SNPRINTF helper macro
libbpf: Move BPF_SEQ_PRINTF and BPF_SNPRINTF to bpf_helpers.h
Florian Lehner (2):
selftests/bpf: Print reason when a tester could not run a program
selftests/bpf: Avoid errno clobbering
Gary Lin (3):
bpf,x64: Pad NOPs to make images converge more easily
test_bpf: Remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier tests for x64 jit jump padding
Hao Luo (1):
libbpf: Support weak typed ksyms.
Hengqi Chen (5):
libbpf: Fix KERNEL_VERSION macro
tools/resolve_btfids: Emit warnings and patch zero id for missing
symbols
libbpf: Add btf__load_vmlinux_btf/btf__load_module_btf
libbpf: Support uniform BTF-defined key/value specification across all
BPF maps
libbpf: Support static initialization of BPF_MAP_TYPE_PROG_ARRAY
Ian Rogers (3):
bpf, libbpf: Avoid unused function warning on bpf_tail_call_static
tools/bpftool: Add -Wall when building BPF programs
libbpf: Add NULL check to add_dummy_ksym_var
Ilya Leoshkevich (6):
selftests/bpf: Copy extras in out-of-srctree builds
bpf: Add BTF_KIND_FLOAT to uapi
libbpf: Fix whitespace in btf_add_composite() comment
libbpf: Add BTF_KIND_FLOAT support
bpf: Generate BTF_KIND_FLOAT when linking vmlinux
libbpf: Use __BYTE_ORDER__
Jason Wang (1):
libbpf: Fix comment typo
Jean-Philippe Brucker (12):
tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
tools/runqslower: Use Makefile.include
tools/runqslower: Enable out-of-tree build
tools/runqslower: Build bpftool using HOSTCC
tools/bpftool: Fix build slowdown
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
tools/bpftool: Fix cross-build
tools/runqslower: Fix cross-build
Jiri Olsa (5):
tools/resolve_btfids: Warn when having multiple IDs for single type
libbpf: Use string table index from index table if needed
perf build: Move feature cleanup under tools/build
selftests/bpf: Add re-attach test to fentry_test
selftests/bpf: Add re-attach test to fexit_test
Joe Stringer (1):
tools: Sync uapi bpf.h header with latest changes
Jonathan Edwards (1):
libbpf: Add extra BPF_PROG_TYPE check to bpf_object__probe_loading
Kumar Kartikeya Dwivedi (22):
libbpf: Add various netlink helpers
libbpf: Add low level TC-BPF management API
libbpf: Remove unneeded check for flags during tc detach
libbpf: Set NLM_F_EXCL when creating qdisc
libbpf: Fix segfault in static linker for objects without BTF
libbpf: Fix segfault in light skeleton for objects without BTF
bpf: Introduce BPF support for kernel module function calls
bpf: Be conservative while processing invalid kfunc calls
bpf: btf: Introduce helpers for dynamic BTF set registration
tools: Allow specifying base BTF file in resolve_btfids
libbpf: Support kernel module function calls
libbpf: Resolve invalid weak kfunc calls with imm = 0, off = 0
libbpf: Update gen_loader to emit BTF_KIND_FUNC relocations
bpf: selftests: Add selftests for module kfunc support
bpf: Add bpf_kallsyms_lookup_name helper
libbpf: Add typeless ksym support to gen_loader
libbpf: Add weak ksym support to gen_loader
selftests/bpf: Add weak/typeless ksym test for light skeleton
libbpf: Perform map fd cleanup for gen_loader in case of error
bpf: Change bpf_kallsyms_lookup_name size type to
ARG_CONST_SIZE_OR_ZERO
libbpf: Avoid double stores for success/failure case of ksym
relocations
libbpf: Avoid reload of imm for weak, unresolved, repeating ksym
Lorenz Bauer (2):
bpf: Consolidate shared test timing code
bpf: Add PROG_TEST_RUN support for sk_lookup programs
Martin KaFai Lau (10):
bpf: Simplify freeing logic in linfo and jited_linfo
bpf: Refactor btf_check_func_arg_match
bpf: Support bpf program calling kernel function
bpf: Support kernel function call in x86-32
libbpf: Refactor bpf_object__resolve_ksyms_btf_id
libbpf: Refactor codes for finding btf id of a kernel symbol
libbpf: Rename RELO_EXTERN to RELO_EXTERN_VAR
libbpf: Record extern sym relocation first
libbpf: Support extern kernel function
bpf: selftests: Add kfunc_call test
Martynas Pumputis (1):
selftests/bpf: Check inner map deletion
Matt Smith (3):
libbpf: Change bpf_object_skeleton data field to const pointer
bpftool: Provide a helper method for accessing skeleton's embedded ELF
data
selftests/bpf: Add checks for X__elf_bytes() skeleton helper
Mauricio Vásquez (1):
libbpf: Fix memory leak in btf__dedup()
Michal Suchanek (1):
libbpf: Fix pr_warn type warnings on 32bit
Pedro Tammela (2):
libbpf: Avoid inline hint definition from 'linux/stddef.h'
libbpf: Clarify flags in ringbuf helpers
Quentin Monnet (17):
libbpf: Return non-null error on failures in libbpf_find_prog_btf_id()
libbpf: Rename btf__load() as btf__load_into_kernel()
libbpf: Rename btf__get_from_id() as btf__load_from_kernel_by_id()
tools: Free BTF objects at various locations
tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id()
libbpf: Add split BTF support for btf__load_from_kernel_by_id()
tools: bpftool: Support dumping split BTF by id
libbpf: Add LIBBPF_DEPRECATED_SINCE macro for scheduling API
deprecations
libbpf: Skip re-installing headers file if source is older than target
bpftool: Remove unused includes to <bpf/bpf_gen_internal.h>
bpftool: Install libbpf headers instead of including the dir
tools/resolve_btfids: Install libbpf headers when building
tools/runqslower: Install libbpf headers when building
bpf: preload: Install libbpf headers when building
bpf: iterators: Install libbpf headers when building
selftests/bpf: Better clean up for runqslower in test_bpftool_build.sh
bpftool: Add install-bin target to install binary only
Rafael David Tinoco (1):
libbpf: Add bpf object kern_version attribute setter
Sedat Dilek (1):
tools: Factor Clang, LLC and LLVM utils definitions
Shuyi Cheng (2):
libbpf: Introduce 'btf_custom_path' to 'bpf_obj_open_opts'
libbpf: Add "bool skipped" to struct bpf_map
Song Liu (3):
bpftool: Add Makefile target bootstrap
perf build: Support build BPF skeletons with perf
perf stat: Enable counting events for BPF programs
Stanislav Fomichev (2):
libbpf: Cap retries in sys_bpf_prog_load
libbpf: Skip bpf_object__probe_loading for light skeleton
Toke Høiland-Jørgensen (5):
bpf: Return target info when a tracing bpf_link is queried
libbpf: Restore errno return for functions that were already returning
it
libbpf: Don't crash on object files with no symbol tables
libbpf: Ignore STT_SECTION symbols in 'maps' section
libbpf: Properly ignore STT_SECTION symbols in legacy map definitions
Wang Hai (1):
libbpf: Simplify the return expression of bpf_object__init_maps
function
Wang Qing (1):
bpf, btf: Remove the duplicate btf_ids.h include
Wedson Almeida Filho (1):
bpf: Refactor check_cfg to use a structured loop.
Yauheni Kaliuta (7):
selftests/bpf: test_progs/sockopt_sk: Remove version
selftests/bpf: test_progs/sockopt_sk: Convert to use BPF skeleton
selftests/bpf: Pass page size from userspace in sockopt_sk
selftests/bpf: Pass page size from userspace in map_ptr
selftests/bpf: mmap: Use runtime page size
selftests/bpf: ringbuf: Use runtime page size
selftests/bpf: ringbuf_multi: Use runtime page size
Yonghong Song (26):
bpf: Permit size-0 datasec
bpf: Refactor BPF_PSEUDO_CALL checking as a helper function
bpf: Factor out visit_func_call_insn() in check_cfg()
bpf: Factor out verbose_invalid_scalar()
bpf: Refactor check_func_call() to allow callback function
bpf: Change return value of verifier function add_subprog()
bpf: Add bpf_for_each_map_elem() helper
libbpf: Move function is_ldimm64() earlier in libbpf.c
libbpf: Support subprog address relocation
selftests/bpf: Fix test_cpp compilation failure with clang
bpftool: Fix a clang compilation warning
libbpf: Add support for new llvm bpf relocations
bpf: Emit better log message if bpf_iter ctx arg btf_id == 0
btf: Change BTF_KIND_* macros to enums
bpf: Support for new btf kind BTF_KIND_TAG
libbpf: Rename btf_{hash,equal}_int to btf_{hash,equal}_int_tag
libbpf: Add support for BTF_KIND_TAG
bpftool: Add support for BTF_KIND_TAG
bpf: Rename BTF_KIND_TAG to BTF_KIND_DECL_TAG
bpf: Add BTF_KIND_DECL_TAG typedef support
docs/bpf: Update documentation for BTF_KIND_DECL_TAG typedef support
bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
libbpf: Support BTF_KIND_TYPE_TAG
bpftool: Support BTF_KIND_TYPE_TAG
docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support
libbpf: Fix a couple of missed btf_type_tag handling in btf.c
Documentation/ABI/testing/sysfs-kernel-btf | 8 +
Documentation/bpf/btf.rst | 40 +-
Documentation/networking/filter.rst | 61 +-
arch/arm/net/bpf_jit_32.c | 7 +-
arch/arm64/net/bpf_jit_comp.c | 16 +-
arch/mips/net/ebpf_jit.c | 11 +-
arch/powerpc/net/bpf_jit_comp64.c | 25 +-
arch/riscv/net/bpf_jit_comp32.c | 20 +-
arch/riscv/net/bpf_jit_comp64.c | 16 +-
arch/s390/net/bpf_jit_comp.c | 27 +-
arch/sparc/net/bpf_jit_comp_64.c | 17 +-
arch/x86/net/bpf_jit_comp.c | 408 +-
arch/x86/net/bpf_jit_comp32.c | 204 +-
drivers/net/ethernet/netronome/nfp/bpf/fw.h | 4 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c | 14 +-
drivers/net/ethernet/netronome/nfp/bpf/main.h | 4 +-
.../net/ethernet/netronome/nfp/bpf/verifier.c | 15 +-
include/linux/bpf.h | 153 +-
include/linux/bpf_types.h | 2 +
include/linux/bpf_verifier.h | 48 +-
include/linux/bpfptr.h | 76 +
include/linux/btf.h | 143 +-
include/linux/filter.h | 45 +-
include/linux/module.h | 4 +
include/uapi/linux/bpf.h | 257 +-
include/uapi/linux/btf.h | 57 +-
kernel/bpf/Makefile | 4 +
kernel/bpf/bpf_iter.c | 29 +-
kernel/bpf/bpf_struct_ops.c | 6 +-
kernel/bpf/btf.c | 1457 ++++-
kernel/bpf/core.c | 157 +-
kernel/bpf/disasm.c | 56 +-
kernel/bpf/hashtab.c | 4 +-
kernel/bpf/helpers.c | 326 +-
kernel/bpf/preload/Makefile | 25 +-
kernel/bpf/preload/iterators/Makefile | 38 +-
kernel/bpf/preload/iterators/iterators.bpf.c | 1 -
kernel/bpf/syscall.c | 363 +-
kernel/bpf/sysfs_btf.c | 2 +-
kernel/bpf/trampoline.c | 77 +-
kernel/bpf/verifier.c | 1676 +++++-
kernel/module.c | 36 +
kernel/trace/bpf_trace.c | 375 +-
lib/Kconfig.debug | 9 +
lib/test_bpf.c | 21 +-
net/bpf/test_run.c | 321 +-
net/core/filter.c | 2 +
net/ipv4/bpf_tcp_ca.c | 7 +-
samples/bpf/bpf_insn.h | 4 +-
samples/bpf/cookie_uid_helper_example.c | 8 +-
samples/bpf/sock_example.c | 2 +-
samples/bpf/test_cgrp2_attach.c | 5 +-
scripts/Makefile.modfinal | 25 +-
scripts/link-vmlinux.sh | 7 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 78 +-
tools/bpf/bpftool/Makefile | 55 +-
tools/bpf/bpftool/bash-completion/bpftool | 17 +-
tools/bpf/bpftool/btf.c | 80 +-
tools/bpf/bpftool/btf_dumper.c | 6 +-
tools/bpf/bpftool/gen.c | 651 +-
tools/bpf/bpftool/main.c | 20 +-
tools/bpf/bpftool/main.h | 2 +
tools/bpf/bpftool/map.c | 14 +-
tools/bpf/bpftool/net.c | 2 +-
tools/bpf/bpftool/prog.c | 139 +-
tools/bpf/bpftool/xlated_dumper.c | 3 +
tools/bpf/resolve_btfids/Makefile | 19 +-
tools/bpf/resolve_btfids/main.c | 66 +-
tools/bpf/runqslower/Makefile | 71 +-
tools/build/Makefile | 8 +-
tools/build/Makefile.feature | 4 +-
tools/build/feature/Makefile | 4 +-
tools/include/linux/filter.h | 24 +-
tools/include/uapi/linux/bpf.h | 969 ++-
tools/include/uapi/linux/btf.h | 57 +-
tools/lib/bpf/.gitignore | 2 -
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/Makefile | 104 +-
tools/lib/bpf/bpf.c | 273 +-
tools/lib/bpf/bpf.h | 1 +
tools/lib/bpf/bpf_core_read.h | 169 +-
tools/lib/bpf/bpf_gen_internal.h | 65 +
tools/lib/bpf/bpf_helpers.h | 108 +-
tools/lib/bpf/bpf_prog_linfo.c | 18 +-
tools/lib/bpf/bpf_tracing.h | 44 +-
tools/lib/bpf/btf.c | 2097 ++++---
tools/lib/bpf/btf.h | 99 +-
tools/lib/bpf/btf_dump.c | 910 ++-
tools/lib/bpf/gen_loader.c | 1126 ++++
tools/lib/bpf/libbpf.c | 5335 +++++++++--------
tools/lib/bpf/libbpf.h | 172 +-
tools/lib/bpf/libbpf.map | 50 +
tools/lib/bpf/libbpf_common.h | 26 +-
tools/lib/bpf/libbpf_errno.c | 7 +-
tools/lib/bpf/libbpf_internal.h | 302 +-
tools/lib/bpf/libbpf_legacy.h | 60 +
tools/lib/bpf/libbpf_version.h | 9 +
tools/lib/bpf/linker.c | 2901 +++++++++
tools/lib/bpf/netlink.c | 593 +-
tools/lib/bpf/nlattr.h | 48 +
tools/lib/bpf/relo_core.c | 1322 ++++
tools/lib/bpf/relo_core.h | 57 +
tools/lib/bpf/ringbuf.c | 26 +-
tools/lib/bpf/skel_internal.h | 123 +
tools/lib/bpf/strset.c | 176 +
tools/lib/bpf/strset.h | 21 +
tools/lib/bpf/xsk.c | 4 +-
tools/perf/Documentation/perf-stat.txt | 18 +
tools/perf/Makefile.config | 9 +
tools/perf/Makefile.perf | 58 +-
tools/perf/builtin-stat.c | 82 +-
tools/perf/util/Build | 1 +
tools/perf/util/bpf-event.c | 11 +-
tools/perf/util/bpf_counter.c | 320 +
tools/perf/util/bpf_counter.h | 72 +
tools/perf/util/bpf_skel/.gitignore | 3 +
.../util/bpf_skel/bpf_prog_profiler.bpf.c | 93 +
tools/perf/util/evsel.c | 5 +
tools/perf/util/evsel.h | 5 +
tools/perf/util/python.c | 21 +
tools/perf/util/stat-display.c | 4 +-
tools/perf/util/stat.c | 2 +-
tools/perf/util/target.c | 34 +-
tools/perf/util/target.h | 10 +
tools/scripts/Makefile.include | 18 +
tools/testing/selftests/bpf/.gitignore | 2 +
tools/testing/selftests/bpf/Makefile | 200 +-
tools/testing/selftests/bpf/bench.c | 1 +
.../selftests/bpf/benchs/bench_rename.c | 2 +-
.../selftests/bpf/benchs/bench_ringbufs.c | 6 +-
.../selftests/bpf/benchs/bench_trigger.c | 2 +-
.../selftests/bpf/bpf_testmod/.gitignore | 6 +
.../selftests/bpf/bpf_testmod/Makefile | 20 +
.../bpf/bpf_testmod/bpf_testmod-events.h | 36 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 76 +
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 14 +
tools/testing/selftests/bpf/btf_helpers.c | 264 +
tools/testing/selftests/bpf/btf_helpers.h | 19 +
.../selftests/bpf/prog_tests/atomics.c | 246 +
.../selftests/bpf/prog_tests/attach_probe.c | 12 +-
.../selftests/bpf/prog_tests/bpf_iter.c | 34 +-
.../selftests/bpf/prog_tests/bpf_tcp_ca.c | 8 +-
tools/testing/selftests/bpf/prog_tests/btf.c | 166 +-
.../bpf/prog_tests/btf_dedup_split.c | 325 +
.../selftests/bpf/prog_tests/btf_dump.c | 10 +-
.../selftests/bpf/prog_tests/btf_endian.c | 4 +-
.../selftests/bpf/prog_tests/btf_map_in_map.c | 33 -
.../selftests/bpf/prog_tests/btf_split.c | 99 +
.../selftests/bpf/prog_tests/btf_write.c | 47 +-
.../bpf/prog_tests/cg_storage_multi.c | 84 +-
.../bpf/prog_tests/cgroup_attach_multi.c | 6 +-
.../selftests/bpf/prog_tests/cgroup_link.c | 16 +-
.../bpf/prog_tests/cgroup_skb_sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/core_autosize.c | 2 +-
.../selftests/bpf/prog_tests/core_kern.c | 14 +
.../bpf/prog_tests/core_read_macros.c | 64 +
.../selftests/bpf/prog_tests/core_reloc.c | 105 +-
.../selftests/bpf/prog_tests/fentry_fexit.c | 22 +-
.../selftests/bpf/prog_tests/fentry_test.c | 58 +-
.../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 68 +-
.../selftests/bpf/prog_tests/fexit_stress.c | 4 +-
.../selftests/bpf/prog_tests/fexit_test.c | 58 +-
.../selftests/bpf/prog_tests/flow_dissector.c | 2 +-
.../bpf/prog_tests/flow_dissector_reattach.c | 10 +-
.../bpf/prog_tests/get_stack_raw_tp.c | 24 +-
.../prog_tests/get_stackid_cannot_attach.c | 9 +-
.../selftests/bpf/prog_tests/global_data.c | 11 +-
.../bpf/prog_tests/global_data_init.c | 2 +-
.../bpf/prog_tests/global_func_args.c | 60 +
.../selftests/bpf/prog_tests/hashmap.c | 9 +-
.../selftests/bpf/prog_tests/kfree_skb.c | 23 +-
.../selftests/bpf/prog_tests/kfunc_call.c | 59 +
.../selftests/bpf/prog_tests/ksyms_btf.c | 65 +-
.../selftests/bpf/prog_tests/ksyms_module.c | 62 +
.../selftests/bpf/prog_tests/link_pinning.c | 7 +-
.../selftests/bpf/prog_tests/map_ptr.c | 21 +-
tools/testing/selftests/bpf/prog_tests/mmap.c | 24 +-
.../selftests/bpf/prog_tests/obj_name.c | 8 +-
.../selftests/bpf/prog_tests/perf_branches.c | 4 +-
.../selftests/bpf/prog_tests/perf_buffer.c | 2 +-
.../bpf/prog_tests/perf_event_stackmap.c | 3 +-
.../selftests/bpf/prog_tests/probe_user.c | 7 +-
.../selftests/bpf/prog_tests/prog_run_xattr.c | 2 +-
.../bpf/prog_tests/queue_stack_map.c | 12 +-
.../bpf/prog_tests/raw_tp_test_run.c | 4 +-
.../selftests/bpf/prog_tests/rdonly_maps.c | 9 +-
.../selftests/bpf/prog_tests/recursion.c | 41 +
.../bpf/prog_tests/reference_tracking.c | 2 +-
.../selftests/bpf/prog_tests/resolve_btfids.c | 9 +-
.../selftests/bpf/prog_tests/ringbuf.c | 27 +-
.../selftests/bpf/prog_tests/ringbuf_multi.c | 23 +-
.../bpf/prog_tests/select_reuseport.c | 53 +-
.../selftests/bpf/prog_tests/send_signal.c | 5 +-
.../selftests/bpf/prog_tests/sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/skeleton.c | 41 +-
.../selftests/bpf/prog_tests/snprintf_btf.c | 4 +-
.../selftests/bpf/prog_tests/sock_fields.c | 14 +-
.../selftests/bpf/prog_tests/sockmap_basic.c | 6 +-
.../selftests/bpf/prog_tests/sockmap_ktls.c | 2 +-
.../selftests/bpf/prog_tests/sockmap_listen.c | 10 +-
.../selftests/bpf/prog_tests/sockopt_sk.c | 66 +-
.../bpf/prog_tests/stacktrace_build_id_nmi.c | 3 +-
.../selftests/bpf/prog_tests/stacktrace_map.c | 2 +-
.../bpf/prog_tests/stacktrace_map_raw_tp.c | 5 +-
.../selftests/bpf/prog_tests/static_linked.c | 35 +
.../bpf/prog_tests/tcp_hdr_options.c | 15 +-
.../selftests/bpf/prog_tests/test_bpffs.c | 4 +-
.../bpf/prog_tests/test_global_funcs.c | 8 +
.../selftests/bpf/prog_tests/test_overhead.c | 12 +-
.../selftests/bpf/prog_tests/trace_printk.c | 25 +-
.../bpf/prog_tests/trampoline_count.c | 18 +-
.../selftests/bpf/prog_tests/udp_limit.c | 7 +-
tools/testing/selftests/bpf/prog_tests/xdp.c | 11 +-
.../selftests/bpf/prog_tests/xdp_bpf2bpf.c | 8 +-
.../selftests/bpf/prog_tests/xdp_link.c | 8 +-
tools/testing/selftests/bpf/progs/atomics.c | 154 +
tools/testing/selftests/bpf/progs/bpf_cubic.c | 6 +-
.../bpf/progs/bpf_iter_bpf_hash_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_bpf_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_ipv6_route.c | 1 -
.../selftests/bpf/progs/bpf_iter_netlink.c | 1 -
.../selftests/bpf/progs/bpf_iter_task.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_btf.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_file.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_stack.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp6.c | 1 -
.../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +-
.../selftests/bpf/progs/bpf_iter_udp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_udp6.c | 1 -
tools/testing/selftests/bpf/progs/core_kern.c | 104 +
.../selftests/bpf/progs/core_reloc_types.h | 17 +
tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +-
.../selftests/bpf/progs/kfunc_call_test.c | 47 +
.../bpf/progs/kfunc_call_test_subprog.c | 42 +
tools/testing/selftests/bpf/progs/lsm.c | 69 +
.../selftests/bpf/progs/map_ptr_kern.c | 20 +-
tools/testing/selftests/bpf/progs/recursion.c | 46 +
.../testing/selftests/bpf/progs/sockopt_sk.c | 11 +-
tools/testing/selftests/bpf/progs/tailcall3.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall4.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall5.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +-
.../selftests/bpf/progs/test_cls_redirect.c | 4 +-
.../bpf/progs/test_core_read_macros.c | 50 +
.../bpf/progs/test_core_reloc_module.c | 96 +
.../selftests/bpf/progs/test_global_func10.c | 29 +
.../selftests/bpf/progs/test_global_func11.c | 19 +
.../selftests/bpf/progs/test_global_func12.c | 21 +
.../selftests/bpf/progs/test_global_func13.c | 24 +
.../selftests/bpf/progs/test_global_func14.c | 21 +
.../selftests/bpf/progs/test_global_func15.c | 22 +
.../selftests/bpf/progs/test_global_func16.c | 22 +
.../selftests/bpf/progs/test_global_func9.c | 132 +
.../bpf/progs/test_global_func_args.c | 91 +
.../selftests/bpf/progs/test_ksyms_module.c | 50 +
.../selftests/bpf/progs/test_ksyms_weak.c | 56 +
.../bpf/progs/test_map_in_map_invalid.c | 26 +
tools/testing/selftests/bpf/progs/test_mmap.c | 2 -
.../selftests/bpf/progs/test_rdonly_maps.c | 6 +-
.../selftests/bpf/progs/test_ringbuf.c | 5 +-
.../selftests/bpf/progs/test_ringbuf_multi.c | 1 -
.../selftests/bpf/progs/test_skeleton.c | 20 +-
.../selftests/bpf/progs/test_sockmap_listen.c | 2 +-
.../selftests/bpf/progs/test_static_linked1.c | 30 +
.../selftests/bpf/progs/test_static_linked2.c | 31 +
.../selftests/bpf/progs/test_subprogs.c | 13 +
.../selftests/bpf/progs/test_verif_scale2.c | 4 +-
.../selftests/bpf/progs/trace_printk.c | 6 +-
.../selftests/bpf/test_bpftool_build.sh | 4 +
.../selftests/bpf/test_cgroup_storage.c | 2 +-
tools/testing/selftests/bpf/test_maps.c | 231 +-
tools/testing/selftests/bpf/test_progs.c | 79 +-
tools/testing/selftests/bpf/test_progs.h | 83 +-
.../selftests/bpf/test_tcpnotify_user.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 103 +-
.../selftests/bpf/verifier/atomic_and.c | 77 +
.../selftests/bpf/verifier/atomic_cmpxchg.c | 96 +
.../selftests/bpf/verifier/atomic_fetch_add.c | 106 +
.../selftests/bpf/verifier/atomic_or.c | 77 +
.../selftests/bpf/verifier/atomic_xchg.c | 46 +
.../selftests/bpf/verifier/atomic_xor.c | 77 +
tools/testing/selftests/bpf/verifier/calls.c | 35 +-
tools/testing/selftests/bpf/verifier/ctx.c | 7 +-
.../selftests/bpf/verifier/dead_code.c | 10 +-
.../bpf/verifier/direct_packet_access.c | 4 +-
tools/testing/selftests/bpf/verifier/jit.c | 24 +
.../testing/selftests/bpf/verifier/leak_ptr.c | 10 +-
.../selftests/bpf/verifier/meta_access.c | 4 +-
tools/testing/selftests/bpf/verifier/unpriv.c | 3 +-
.../bpf/verifier/value_illegal_alu.c | 2 +-
tools/testing/selftests/bpf/verifier/xadd.c | 18 +-
tools/testing/selftests/tc-testing/Makefile | 3 +-
294 files changed, 25170 insertions(+), 6337 deletions(-)
create mode 100644 include/linux/bpfptr.h
create mode 100644 tools/lib/bpf/bpf_gen_internal.h
create mode 100644 tools/lib/bpf/gen_loader.c
create mode 100644 tools/lib/bpf/libbpf_legacy.h
create mode 100644 tools/lib/bpf/libbpf_version.h
create mode 100644 tools/lib/bpf/linker.c
create mode 100644 tools/lib/bpf/relo_core.c
create mode 100644 tools/lib/bpf/relo_core.h
create mode 100644 tools/lib/bpf/skel_internal.h
create mode 100644 tools/lib/bpf/strset.c
create mode 100644 tools/lib/bpf/strset.h
create mode 100644 tools/perf/util/bpf_counter.c
create mode 100644 tools/perf/util/bpf_counter.h
create mode 100644 tools/perf/util/bpf_skel/.gitignore
create mode 100644 tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/.gitignore
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/Makefile
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h
create mode 100644 tools/testing/selftests/bpf/btf_helpers.c
create mode 100644 tools/testing/selftests/bpf/btf_helpers.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/atomics.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_dedup_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_kern.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_args.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/kfunc_call.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/recursion.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/static_linked.c
create mode 100644 tools/testing/selftests/bpf/progs/atomics.c
create mode 100644 tools/testing/selftests/bpf/progs/core_kern.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test.c
create mode 100644 tools/testing/selftests/bpf/progs/kfunc_call_test_subprog.c
create mode 100644 tools/testing/selftests/bpf/progs/recursion.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_reloc_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func10.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func11.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func12.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func13.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func14.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func15.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func16.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func9.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func_args.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_weak.c
create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked1.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked2.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_and.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_cmpxchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_fetch_add.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_or.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xor.c
--
2.20.1
1
391

17 Aug '22
With the increase of memory capacity and density, the probability of
memory error increases. The increasing size and density of server RAM
in the data center and cloud have shown increased uncorrectable memory
errors.
Currently, the kernel has a mechanism to recover from hardware memory
errors. This patchset provides an new recovery mechanism.
For arm64, the hardware memory error handling is do_sea() which divided
into two cases:
1. The user state consumed the memory errors, the solution is kill the
user process and isolate the error page.
2. The kernel state consumed the memory errors, the solution is panic.
For case 2, Undifferentiated panic maybe not the optimal choice, it can be
handled better, in some scenarios, we can avoid panic, such as uaccess, if
the uaccess fails due to memory error, only the user process will be affected,
kill the user process and isolate the user page with hardware memory errors
is a better choice.
Tong Tiangen (13):
Revert "arm64: ras: copy_from_user scenario support uce kernel
recovery"
Revert "arm64: config: enable CONFIG_ARM64_UCE_KERNEL_RECOVERY"
uaccess: add generic fallback version of copy_mc_to_user()
arm64: extable: add new extable type "__mc_ex_table"
arm64: add support for machine check error safe
arm64: copy_form/to_user support machine check safe
arm64: get/put_user support machine check safe
arm64: add cow to machine check safe
arm64: introduce copy_mc_to_kernel() implementation
arm64: add dump_user_range() to machine check safe
arm64: add machine check safe sysctl interface
arm64/__mc_ex_table: search_module_mc_extables should not use
num_exentries
arm64/__mc_ex_table: fix compile error when CONFIG_ARCH_HAS_COPY_MC=n
Documentation/admin-guide/sysctl/kernel.rst | 38 ++--
arch/arm64/Kconfig | 14 +-
arch/arm64/configs/openeuler_defconfig | 1 -
arch/arm64/include/asm/asm-uaccess.h | 5 +
arch/arm64/include/asm/assembler.h | 26 ++-
arch/arm64/include/asm/exception.h | 13 --
arch/arm64/include/asm/extable.h | 1 +
arch/arm64/include/asm/mte.h | 4 +
arch/arm64/include/asm/page.h | 10 +
arch/arm64/include/asm/processor.h | 2 +
arch/arm64/include/asm/string.h | 5 +
arch/arm64/include/asm/uaccess.h | 70 +++++--
arch/arm64/lib/Makefile | 10 +-
arch/arm64/lib/copy_from_user.S | 19 +-
arch/arm64/lib/copy_page_mc.S | 80 ++++++++
arch/arm64/lib/copy_to_user.S | 10 +-
arch/arm64/lib/memcpy_mc.S | 73 ++++++++
arch/arm64/lib/mte.S | 19 ++
arch/arm64/mm/Makefile | 2 -
arch/arm64/mm/copypage.c | 43 ++++-
arch/arm64/mm/extable.c | 12 ++
arch/arm64/mm/fault.c | 36 +++-
arch/arm64/mm/uce_kernel_recovery.c | 198 --------------------
arch/powerpc/include/asm/uaccess.h | 1 +
arch/x86/include/asm/uaccess.h | 1 +
fs/coredump.c | 2 +
include/asm-generic/vmlinux.lds.h | 19 +-
include/linux/extable.h | 23 +++
include/linux/highmem.h | 8 +
include/linux/module.h | 11 ++
include/linux/sched.h | 1 +
include/linux/uaccess.h | 9 +
kernel/extable.c | 29 +++
kernel/module.c | 38 ++++
kernel/sysctl.c | 11 ++
lib/iov_iter.c | 12 +-
mm/memory.c | 2 +-
scripts/sorttable.h | 29 +++
38 files changed, 589 insertions(+), 298 deletions(-)
create mode 100644 arch/arm64/lib/copy_page_mc.S
create mode 100644 arch/arm64/lib/memcpy_mc.S
delete mode 100644 arch/arm64/mm/uce_kernel_recovery.c
--
2.20.1
1
13

17 Aug '22
sched: programmable: Fix sched bpf hook cfs_check_preempt_tick
Chen Hui (11):
sched: programmable: Add a tag for the task group
sched: programmable: Add user interface of task group tag
sched: programmable: Add a tag for the task
sched: programmable: Add user interface of task tag
sched: programmable: add bpf_sched_task_tag_of helper function
sched: programmable: Add convenient helper functions to convert sched
entity
samples/bpf: Update bpf loader for sched section names
bpf: sched: Add four helper functions to get cpu stat
bpf:programmable: Add cpumask ops collection
sched: programmable: Add lib for sched programmable
sched: programmable: Add three hooks in select_task_rq_fair()
Guan Jing (2):
sched: programmable: Add hook for pick next task
samples: bpf: Add bpf sched pick task sample
Hui Tang (3):
bpf:programmable: Add helper func to check cpu share cache
bpf:programmable: Add helper func to set cpus_ptr in task
samples:bpf: Add samples for cfs select core
Ren Zhijie (5):
sched: programmable: Fix sched bpf hook cfs_check_preempt_tick
sched: programmable: add bpf_sched_tg_tag_of helper function
samples: bpf: Add bpf sched preempt sample program
sched: programmable: Add helpers to set tag of task or task_group
sched: programmable: Add helper function for cpu topology.
fs/proc/base.c | 65 ++++
include/linux/bpf_topology.h | 46 +++
include/linux/sched.h | 85 +++++
include/linux/sched_hook_defs.h | 5 +
include/uapi/linux/bpf.h | 151 +++++++++
init/init_task.c | 3 +
kernel/bpf/helpers.c | 12 +
kernel/bpf/verifier.c | 4 +-
kernel/sched/Makefile | 3 +-
kernel/sched/bpf_sched.c | 433 ++++++++++++++++++++++++
kernel/sched/bpf_topology.c | 97 ++++++
kernel/sched/core.c | 103 ++++++
kernel/sched/fair.c | 64 +++-
kernel/sched/sched.h | 8 +
samples/bpf/Makefile | 9 +
samples/bpf/bpf_load.c | 8 +-
samples/bpf/sched_pick_task_kern.c | 56 ++++
samples/bpf/sched_pick_task_user.c | 94 ++++++
samples/bpf/sched_preempt_kern.c | 147 +++++++++
samples/bpf/sched_preempt_user.c | 140 ++++++++
samples/bpf/sched_select_core_kern.c | 259 +++++++++++++++
samples/bpf/sched_select_core_user.c | 125 +++++++
scripts/bpf_helpers_doc.py | 20 ++
tools/include/uapi/linux/bpf.h | 151 +++++++++
tools/lib/bpf/libbpf_sched.h | 473 +++++++++++++++++++++++++++
25 files changed, 2555 insertions(+), 6 deletions(-)
create mode 100644 include/linux/bpf_topology.h
create mode 100644 kernel/sched/bpf_topology.c
create mode 100644 samples/bpf/sched_pick_task_kern.c
create mode 100644 samples/bpf/sched_pick_task_user.c
create mode 100644 samples/bpf/sched_preempt_kern.c
create mode 100644 samples/bpf/sched_preempt_user.c
create mode 100644 samples/bpf/sched_select_core_kern.c
create mode 100644 samples/bpf/sched_select_core_user.c
create mode 100644 tools/lib/bpf/libbpf_sched.h
--
2.20.1
1
21

[PATCH openEuler-5.10 01/31] io_uring:drop identity before creating a private one
by Zheng Zengkai 17 Aug '22
by Zheng Zengkai 17 Aug '22
17 Aug '22
From: Li Lingfeng <lilingfeng3(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187387, https://gitee.com/openeuler/kernel/issues/I5KTEM
CVE: NA
--------------------------------
When we need to create a private copy of io_identity, we will
get the use of current task's private structs, whitch means we
should increase their reference counts. If we have grabed some
other structs before, we should drop them and clear related
flags. Otherwise, leak of old structs and uaf of new structs
may occur.
Signed-off-by: Li Lingfeng <lilingfeng3(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
fs/io_uring.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index faa81d48c812..257e4af176e6 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -1364,6 +1364,47 @@ static bool io_identity_cow(struct io_kiocb *req)
return true;
}
+static void io_drop_identity(struct io_kiocb *req)
+{
+ struct io_identity *id = req->work.identity;
+
+ if (req->work.flags & IO_WQ_WORK_MM) {
+ mmdrop(id->mm);
+ req->work.flags &= ~IO_WQ_WORK_MM;
+ }
+#ifdef CONFIG_BLK_CGROUP
+ if (req->work.flags & IO_WQ_WORK_BLKCG) {
+ css_put(id->blkcg_css);
+ req->work.flags &= ~IO_WQ_WORK_BLKCG;
+ }
+#endif
+ if (req->work.flags & IO_WQ_WORK_CREDS) {
+ put_cred(id->creds);
+ req->work.flags &= ~IO_WQ_WORK_CREDS;
+ }
+ if (req->work.flags & IO_WQ_WORK_FILES) {
+ put_files_struct(req->work.identity->files);
+ put_nsproxy(req->work.identity->nsproxy);
+ req->work.flags &= ~IO_WQ_WORK_FILES;
+ }
+ if (req->work.flags & IO_WQ_WORK_CANCEL)
+ req->work.flags &= ~IO_WQ_WORK_CANCEL;
+ if (req->work.flags & IO_WQ_WORK_FS) {
+ struct fs_struct *fs = id->fs;
+
+ spin_lock(&id->fs->lock);
+ if (--fs->users)
+ fs = NULL;
+ spin_unlock(&id->fs->lock);
+
+ if (fs)
+ free_fs_struct(fs);
+ req->work.flags &= ~IO_WQ_WORK_FS;
+ }
+ if (req->work.flags & IO_WQ_WORK_FSIZE)
+ req->work.flags &= ~IO_WQ_WORK_FSIZE;
+}
+
static bool io_grab_identity(struct io_kiocb *req)
{
const struct io_op_def *def = &io_op_defs[req->opcode];
@@ -1469,6 +1510,7 @@ static void io_prep_async_work(struct io_kiocb *req)
if (io_grab_identity(req))
return;
+ io_drop_identity(req);
if (!io_identity_cow(req))
return;
--
2.20.1
1
30
各位好,
我是移动丁强,目前在中国通信标准化协会(CCSA)中牵头做操作系统相关的行业规范,目前涉及到kernel的SYSCALL特性部分,想和各位学习交流一下,方便的话可以加我微信详谈,我的手机13575459962(微信同号),感谢大家!
丁强
中国移动通信集团浙江有限公司 云计算支撑中心
Mobile: 13575459962
E-mail: 13575459962(a)139.xn--com()-jt2hu4k
dingqiang5(a)zj.chinamobile.com
1
0
Backport 5.10.118 LTS patches from upstream.
git cherry-pick v5.10.117..v5.10.118~1 -s
Already merged(5):
911b36267855 floppy: use a statically allocated error counter
55c820c1b2b6 Revert "drm/i915/opregion: check port number bounds for SWSCI
display power state"
aca18bacdb71 ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in
unwind_frame()
f3f2247ac31c Reinstate some of "swiotlb: rework "fix info leak with
DMA_FROM_DEVICE""
3ee8e109c3c3 perf: Fix sys_perf_event_open() race against self
Context conflict:
00d8b06a4ed4 rtc: mc146818-lib: Fix the AltCentury for AMD platforms
Skiped(1):
e2cfa7b0935c Revert "swiotlb: fix info leak with DMA_FROM_DEVICE"
KABI changed(8):
633be494c3ca include/uapi/linux/xfrm.h: Fix XFRM_MSG_MAPPING ABI breakage
47f04f95edb1 xfrm: fix "disable_policy" flag use when arriving from different
devices
0d2e9d8000ef xfrm: rework default policy structure
57c1bbe7098b xfrm: fix dflt policy check when there is no policy configured
9856c3a129dd xfrm: notify default policy on update
20fd28df4049 xfrm: make user policy API complete
ab610ee1d1a1 net: xfrm: fix shift-out-of-bounce
5b7f84b1f9f4 xfrm: Add possibility to set the default to block if we have no
policy
Total patches: 96 - 5 - 1 - 8 = 82
Al Viro (1):
Fix double fget() in vhost_net_set_backend()
Alex Elder (1):
net: ipa: record proper RX transaction count
Andre Przywara (1):
rtc: sun6i: Fix time overflow handling
Andreas Gruenbacher (1):
gfs2: Disable page faults during lockless buffered reads
Andrew Lunn (1):
net: bridge: Clear offload_fwd_mark when passing frame up bridge
interface.
Anton Eidelman (1):
nvme-multipath: fix hang when disk goes live over reconnect
Ard Biesheuvel (2):
ARM: 9196/1: spectre-bhb: enable for Cortex-A15
ARM: 9197/1: spectre-bhb: fix loop8 sequence for Thumb2
Catalin Marinas (1):
arm64: mte: Ensure the cleared tags are visible before setting the PTE
Christophe JAILLET (2):
net: systemport: Fix an error handling path in bcm_sysport_probe()
net/qla3xxx: Fix a test in ql_reset_work()
Codrin Ciubotariu (1):
clk: at91: generated: consider range when calculating best rate
David Gow (1):
um: Cleanup syscall_handler_t definition/cast, fix warning
David Howells (1):
afs: Fix afs_getattr() to refetch file status if callback break
occurred
Duoming Zhou (1):
NFC: nci: fix sleep in atomic context bugs caused by nci_skb_alloc
Felix Fietkau (1):
mac80211: fix rx reordering with non explicit / psmp ack policy
Gleb Chesnokov (1):
scsi: qla2xxx: Fix missed DMA unmap for aborted commands
Grant Grundler (4):
net: atlantic: fix "frag[0] not initialized"
net: atlantic: reduce scope of is_rsc_complete
net: atlantic: add check for MAX_SKB_FRAGS
net: atlantic: verify hw_head_ lies within TX buffer ring
Guo Xuenan (1):
fs: fix an infinite loop in iomap_fiemap
Haibo Chen (1):
gpio: gpio-vf610: do not touch other bits when set the target bit
Hangyu Hua (1):
drm/dp/mst: fix a possible memory leak in fetch_monitor_name()
Harini Katakam (1):
net: macb: Increment rx bd head after allocating skb and buffer
Hugo Villeneuve (1):
rtc: pcf2127: fix bug when reading alarm registers
Ilya Dryomov (1):
libceph: fix potential use-after-free on linger ping and resends
Jae Hyun Yoo (4):
ARM: dts: aspeed-g6: remove FWQSPID group in pinctrl dtsi
pinctrl: pinctrl-aspeed-g6: remove FWQSPID group in pinctrl
ARM: dts: aspeed-g6: fix SPI1/SPI2 quad pin group
dt-bindings: pinctrl: aspeed-g6: remove FWQSPID group
Jakob Koschel (1):
drbd: remove usage of list iterator variable after loop
Jeff LaBundy (1):
Input: add bounds checking to input_set_capability()
Jens Axboe (1):
io_uring: always grab file table for deferred statx
Jessica Yu (2):
module: treat exit sections the same as init sections when
!CONFIG_MODULE_UNLOAD
module: check for exit sections in layout_sections() instead of
module_init_section()
Jiasheng Jiang (1):
net: af_key: add check for pfkey_broadcast in function pfkey_process
Johannes Berg (1):
nl80211: fix locking in nl80211_set_tx_bitrate_mask()
Jérôme Pouiller (1):
dma-buf: fix use of DMA_BUF_SET_NAME_{A,B} in userspace
Kai-Heng Feng (1):
ALSA: hda/realtek: Enable headset mic on Lenovo P360
Kevin Mitchell (1):
igb: skip phy status check where unavailable
Kieran Frewen (1):
nl80211: validate S1G channel width
Krzysztof Kozlowski (1):
riscv: dts: sifive: fu540-c000: align dma node name with dtschema
Marek Vasut (1):
Input: ili210x - fix reset timing
Mario Limonciello (1):
rtc: mc146818-lib: Fix the AltCentury for AMD platforms
Maxim Mikityanskiy (1):
net/mlx5e: Properly block LRO when XDP is enabled
Michael S. Tsirkin (1):
tools/virtio: compile with -pthread
Monish Kumar R (1):
nvme-pci: add quirks for Samsung X5 SSDs
Nicolas Dichtel (1):
selftests: add ping test with ping_group_range tuned
Niklas Schnelle (1):
s390/pci: improve zpci_dev reference counting
Ondrej Mosnacek (2):
selinux: fix bad cleanup on error in hashtab_duplicate()
crypto: qcom-rng - fix infinite loop on requests not multiple of
WORD_SZ
Paolo Abeni (1):
net/sched: act_pedit: sanitize shift argument before usage
Paul Greenwalt (1):
ice: fix possible under reporting of ethtool Tx and Rx statistics
Peter Zijlstra (1):
crypto: x86/chacha20 - Avoid spurious jumps to other functions
Prakruthi Deepak Heragu (1):
arm64: paravirt: Use RCU read locks to guard stolen_time
Rafael J. Wysocki (1):
PCI/PM: Avoid putting Elo i2 PCIe Ports in D3cold
Ryusuke Konishi (2):
nilfs2: fix lockdep warnings in page operations for btree nodes
nilfs2: fix lockdep warnings during disk space reclamation
Sasha Neftin (3):
igc: Remove _I_PHY_ID checking
igc: Remove phy->type checking
igc: Update I226_K device ID
Schspa Shi (1):
usb: gadget: fix race when gadget driver register via ioctl
Sean Christopherson (1):
KVM: x86/mmu: Update number of zapped pages even if page list is
stable
Shreyas K K (1):
arm64: Enable repeat tlbi workaround on KRYO4XX gold CPUs
Takashi Iwai (2):
ALSA: usb-audio: Restore Rane SL-1 quirk
ALSA: wavefront: Proper check of get_user() error
Thomas Richter (1):
perf bench numa: Address compiler error on s390
Tzung-Bi Shih (1):
platform/chrome: cros_ec_debugfs: detach log reader wq from devm
Uwe Kleine-König (1):
gpio: mvebu/pwm: Refuse requests with inverted polarity
Vincent Bernat (1):
net: evaluate net.ipvX.conf.all.disable_policy and disable_xfrm
Vincent Whitchurch (1):
rtc: fix use-after-free on device removal
Werner Sembach (1):
ALSA: hda/realtek: Add quirk for TongFang devices with pop noise
Xiaoke Wang (1):
MIPS: lantiq: check the return value of kzalloc()
Yang Yingliang (3):
ethernet: tulip: fix missing pci_disable_device() on error in
tulip_init_one()
net: stmmac: fix missing pci_disable_device() on error in
stmmac_pci_probe()
i2c: mt7621: fix missing clk_disable_unprepare() on error in
mtk_i2c_probe()
Zheng Yongjun (2):
Input: stmfts - fix reference leak in stmfts_input_open
crypto: stm32 - fix reference leak in stm32_crc_remove
Zhu Lingshan (1):
vhost_vdpa: don't setup irq offloading when irq_num < 0
Zixuan Fu (2):
net: vmxnet3: fix possible use-after-free bugs in
vmxnet3_rq_alloc_rx_buf()
net: vmxnet3: fix possible NULL pointer dereference in
vmxnet3_rq_cleanup()
Documentation/arm64/silicon-errata.rst | 3 +
.../pinctrl/aspeed,ast2600-pinctrl.yaml | 2 +-
arch/arm/boot/dts/aspeed-g6-pinctrl.dtsi | 9 +-
arch/arm/kernel/entry-armv.S | 2 +-
arch/arm/mm/proc-v7-bugs.c | 1 +
arch/arm64/kernel/cpu_errata.c | 2 +
arch/arm64/kernel/mte.c | 3 +
arch/arm64/kernel/paravirt.c | 29 +-
arch/mips/lantiq/falcon/sysctrl.c | 2 +
arch/mips/lantiq/xway/gptu.c | 2 +
arch/mips/lantiq/xway/sysctrl.c | 46 ++-
arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 2 +-
arch/s390/pci/pci.c | 1 +
arch/s390/pci/pci_bus.h | 3 +-
arch/s390/pci/pci_clp.c | 9 +-
arch/s390/pci/pci_event.c | 7 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 4 +-
arch/x86/kvm/mmu/mmu.c | 10 +-
arch/x86/um/shared/sysdep/syscalls_64.h | 5 +-
drivers/block/drbd/drbd_main.c | 7 +-
drivers/clk/at91/clk-generated.c | 4 +
drivers/crypto/qcom-rng.c | 1 +
drivers/crypto/stm32/stm32-crc32.c | 4 +-
drivers/gpio/gpio-mvebu.c | 3 +
drivers/gpio/gpio-vf610.c | 8 +-
drivers/gpu/drm/drm_dp_mst_topology.c | 1 +
drivers/i2c/busses/i2c-mt7621.c | 10 +-
drivers/input/input.c | 19 ++
drivers/input/touchscreen/ili210x.c | 4 +-
drivers/input/touchscreen/stmfts.c | 8 +-
.../net/ethernet/aquantia/atlantic/aq_ring.c | 20 +-
.../aquantia/atlantic/hw_atl/hw_atl_b0.c | 7 +
drivers/net/ethernet/broadcom/bcmsysport.c | 6 +-
drivers/net/ethernet/cadence/macb_main.c | 2 +-
drivers/net/ethernet/dec/tulip/tulip_core.c | 5 +-
drivers/net/ethernet/intel/ice/ice_main.c | 7 +-
drivers/net/ethernet/intel/igb/igb_main.c | 3 +-
drivers/net/ethernet/intel/igc/igc_base.c | 10 +-
drivers/net/ethernet/intel/igc/igc_hw.h | 1 +
drivers/net/ethernet/intel/igc/igc_main.c | 18 +-
drivers/net/ethernet/intel/igc/igc_phy.c | 6 +-
.../net/ethernet/mellanox/mlx5/core/en_main.c | 7 +
drivers/net/ethernet/qlogic/qla3xxx.c | 3 +-
.../net/ethernet/stmicro/stmmac/stmmac_pci.c | 4 +-
drivers/net/ipa/gsi.c | 6 +-
drivers/net/vmxnet3/vmxnet3_drv.c | 6 +
drivers/nvme/host/core.c | 1 +
drivers/nvme/host/multipath.c | 25 +-
drivers/nvme/host/nvme.h | 4 +
drivers/nvme/host/pci.c | 5 +-
drivers/pci/pci.c | 10 +
drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c | 14 +-
drivers/platform/chrome/cros_ec_debugfs.c | 12 +-
drivers/rtc/class.c | 9 +
drivers/rtc/rtc-mc146818-lib.c | 16 +-
drivers/rtc/rtc-pcf2127.c | 3 +-
drivers/rtc/rtc-sun6i.c | 14 +-
drivers/scsi/qla2xxx/qla_target.c | 3 +
drivers/usb/gadget/legacy/raw_gadget.c | 2 +
drivers/vhost/net.c | 15 +-
drivers/vhost/vdpa.c | 5 +-
fs/afs/inode.c | 14 +-
fs/gfs2/file.c | 4 +-
fs/io_uring.c | 6 +-
fs/ioctl.c | 2 +-
fs/nilfs2/btnode.c | 23 +-
fs/nilfs2/btnode.h | 1 +
fs/nilfs2/btree.c | 27 +-
fs/nilfs2/dat.c | 4 +-
fs/nilfs2/gcinode.c | 7 +-
fs/nilfs2/inode.c | 159 ++++++++-
fs/nilfs2/mdt.c | 43 ++-
fs/nilfs2/mdt.h | 6 +-
fs/nilfs2/nilfs.h | 16 +-
fs/nilfs2/page.c | 7 +-
fs/nilfs2/segment.c | 9 +-
fs/nilfs2/super.c | 5 +-
include/linux/ceph/osd_client.h | 3 +
include/linux/mc146818rtc.h | 2 +
include/uapi/linux/dma-buf.h | 4 +-
kernel/module.c | 18 +-
net/bridge/br_input.c | 7 +
net/ceph/osd_client.c | 302 +++++++-----------
net/ipv4/route.c | 12 +-
net/key/af_key.c | 6 +-
net/mac80211/rx.c | 3 +-
net/nfc/nci/data.c | 2 +-
net/nfc/nci/hci.c | 4 +-
net/sched/act_pedit.c | 4 +
net/wireless/nl80211.c | 18 +-
security/selinux/ss/hashtab.c | 3 +-
sound/isa/wavefront/wavefront_synth.c | 3 +-
sound/pci/hda/patch_realtek.c | 9 +
sound/usb/quirks-table.h | 9 +
tools/perf/bench/numa.c | 2 +-
tools/testing/selftests/net/fcnal-test.sh | 12 +
tools/virtio/Makefile | 3 +-
97 files changed, 786 insertions(+), 433 deletions(-)
--
2.20.1
1
82
Backport 5.10.117 LTS patches from upstream.
git cherry-pick v5.10.116..v5.10.117~1 -s
Complicts:
Already merged(2):
e68b60ae29de1 SUNRPC: Ensure we flush any closed sockets before xs_xprt_free()
29f077d07051 io_uring: always use original task when preparing req identity
Context conflict:
7e849dbe604d cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in
cpuset_init_smp()
Total patches: 68 - 2 = 66
Alexandra Winter (3):
s390/ctcm: fix variable dereferenced before check
s390/ctcm: fix potential memory leak
s390/lcs: fix variable dereferenced before check
Andreas Gruenbacher (1):
gfs2: Fix filesystem block deallocation for short writes
AngeloGioacchino Del Regno (2):
serial: 8250_mtk: Fix UART_EFR register address
serial: 8250_mtk: Fix register address for XON/XOFF character
Camel Guo (1):
hwmon: (tmp401) Add OF device ID table
ChiYuan Huang (1):
usb: typec: tcpci_mt6360: Update for BMC PHY setting
Christophe JAILLET (1):
drm/nouveau: Fix a potential theorical leak in
nouveau_get_backlight_name()
Dan Aloni (1):
nfs: fix broken handling of the softreval mount option
Dan Vacura (1):
usb: gadget: uvc: allow for application to cleanly shutdown
Daniel Starke (1):
tty: n_gsm: fix mux activation issues in gsm_config()
Eric Dumazet (2):
netlink: do not reset transport header in netlink_recvmsg()
tcp: resalt the secret every 10 seconds
Ethan Yang (1):
USB: serial: qcserial: add support for Sierra Wireless EM7590
Florian Fainelli (2):
net: bcmgenet: Check for Wake-on-LAN interrupt probe deferral
net: dsa: bcm_sf2: Fix Wake-on-LAN with mac_link_down()
Francesco Dolcini (1):
net: phy: Fix race condition on link status change
Guangguan Wang (1):
net/smc: non blocking recvmsg() return -EAGAIN when no data and
signal_pending
Guenter Roeck (1):
iwlwifi: iwl-dbg: Use del_timer_sync() before freeing
Gustavo A. R. Silva (1):
SUNRPC: Fix fall-through warnings for Clang
Jeff Layton (1):
ceph: fix setting of xattrs on async created inodes
Jesse Brandeburg (1):
dim: initialize all struct fields
Ji-Ze Hong (Peter Hong) (1):
hwmon: (f71882fg) Fix negative temperature
Jiapeng Chong (1):
sfc: Use swap() instead of open coding it
Joel Savitz (1):
selftests: vm: Makefile: rename TARGETS to VMTARGETS
Johannes Berg (1):
mac80211_hwsim: call ieee80211_tx_prepare_skb under RCU protection
Lokesh Dhoundiyal (1):
ipv4: drop dst in multicast routing path
Manikanta Pubbisetty (1):
mac80211: Reset MBSSID parameters upon connection
Manuel Ullmann (1):
net: atlantic: always deep reset on pm op, fixing up my null deref
regression
Mark Brown (3):
ASoC: max98090: Reject invalid values in custom control put()
ASoC: max98090: Generate notifications on changes for custom control
ASoC: ops: Validate input values in snd_soc_put_volsw_range()
Matthew Hagan (1):
net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT
Maxim Mikityanskiy (1):
tls: Fix context leak on tls_device_down
Miaoqian Lin (1):
slimbus: qcom: Fix IRQ check in qcom_slim_probe
Michael Tretter (1):
usb: gadget: uvc: rename function to be more consistent
Mike Rapoport (1):
arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear
map
Nicolas Dichtel (1):
ping: fix address binding wrt vrf
Paolo Abeni (1):
net/sched: act_pedit: really ensure the skb is writable
Randy Dunlap (1):
hwmon: (ltq-cputemp) restrict it to SOC_XWAY
Robin Murphy (1):
drm/nouveau/tegra: Stop using iommu_present()
Scott Chen (1):
USB: serial: pl2303: add device id for HP LM930 Display
Sergey Ryazanov (1):
usb: cdc-wdm: fix reading stuck on device close
Shravya Kumbham (1):
net: emaclite: Don't advertise 1000BASE-T and do auto negotiation
Sven Eckelmann (1):
batman-adv: Don't skb_split skbuffs with frag_list
Sven Schnelle (1):
s390: disable -Warray-bounds
Sven Schwermer (2):
USB: serial: option: add Fibocom L610 modem
USB: serial: option: add Fibocom MA510 modem
Taehee Yoo (2):
net: sfc: fix memory leak due to ptp channel
net: sfc: ef10: fix memory leak in efx_ef10_mtd_probe()
Tariq Toukan (1):
net: Fix features skip in for_each_netdev_feature()
Thiébaud Weksteen (1):
firmware_loader: use kernel credentials when reading firmware
Trond Myklebust (3):
SUNRPC: Clean up scheduling of autoclose
SUNRPC: Prevent immediate close+reconnect
SUNRPC: Don't call connect() more than once on a TCP socket
Uwe Kleine-König (1):
usb: typec: tcpci: Don't skip cleanup in .remove() on error
Vladimir Oltean (4):
net: mscc: ocelot: fix last VCAP IS1/IS2 filter persisting in hardware
when deleted
net: mscc: ocelot: fix VCAP IS2 filters matching on both lookups
net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0
net: mscc: ocelot: avoid corrupting hardware counters when moving VCAP
filters
Waiman Long (1):
cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in
cpuset_init_smp()
Xiaomeng Tong (1):
i40e: i40e_main: fix a missing check on list iterator
Yang Yingliang (2):
ionic: fix missing pci_release_regions() on error in ionic_probe()
tty/serial: digicolor: fix possible null-ptr-deref in
digicolor_uart_probe()
Zack Rusin (1):
drm/vmwgfx: Initialize drm_mode_fb_cmd2
arch/arm/include/asm/io.h | 3 ++
arch/arm/mm/ioremap.c | 8 ++++
arch/arm64/include/asm/io.h | 4 ++
arch/arm64/mm/ioremap.c | 9 ++++
arch/s390/Makefile | 10 +++++
drivers/base/firmware_loader/main.c | 17 +++++++
drivers/gpu/drm/nouveau/nouveau_backlight.c | 9 ++--
.../drm/nouveau/nvkm/engine/device/tegra.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 2 +-
drivers/hwmon/Kconfig | 2 +-
drivers/hwmon/f71882fg.c | 5 ++-
drivers/hwmon/tmp401.c | 11 +++++
drivers/net/dsa/bcm_sf2.c | 3 ++
.../ethernet/aquantia/atlantic/aq_pci_func.c | 4 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 4 ++
drivers/net/ethernet/intel/i40e/i40e_main.c | 27 +++++------
drivers/net/ethernet/mscc/ocelot_flower.c | 5 ++-
drivers/net/ethernet/mscc/ocelot_vcap.c | 9 +++-
.../ethernet/pensando/ionic/ionic_bus_pci.c | 3 +-
drivers/net/ethernet/sfc/ef10.c | 5 +++
drivers/net/ethernet/sfc/efx_channels.c | 21 +++++----
drivers/net/ethernet/sfc/ptp.c | 14 +++++-
drivers/net/ethernet/sfc/ptp.h | 1 +
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 15 -------
drivers/net/phy/phy.c | 45 ++++++++++++++++---
drivers/net/phy/sfp.c | 12 ++++-
.../net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 2 +-
drivers/net/wireless/mac80211_hwsim.c | 3 ++
drivers/s390/net/ctcm_mpc.c | 6 +--
drivers/s390/net/ctcm_sysfs.c | 5 ++-
drivers/s390/net/lcs.c | 7 +--
drivers/slimbus/qcom-ctrl.c | 4 +-
drivers/tty/n_gsm.c | 12 +++--
drivers/tty/serial/8250/8250_mtk.c | 22 +++++----
drivers/tty/serial/digicolor-usart.c | 5 +--
drivers/usb/class/cdc-wdm.c | 1 +
drivers/usb/gadget/function/f_uvc.c | 32 +++++++++++--
drivers/usb/gadget/function/uvc.h | 2 +
drivers/usb/gadget/function/uvc_v4l2.c | 3 +-
drivers/usb/serial/option.c | 4 ++
drivers/usb/serial/pl2303.c | 1 +
drivers/usb/serial/pl2303.h | 1 +
drivers/usb/serial/qcserial.c | 2 +
drivers/usb/typec/tcpm/tcpci.c | 2 +-
drivers/usb/typec/tcpm/tcpci_mt6360.c | 26 +++++++++++
fs/ceph/file.c | 16 +++++--
fs/gfs2/bmap.c | 11 +++--
fs/nfs/fs_context.c | 2 +-
include/linux/netdev_features.h | 4 +-
include/linux/sunrpc/xprtsock.h | 1 +
include/net/tc_act/tc_pedit.h | 1 +
kernel/cgroup/cpuset.c | 7 ++-
lib/dim/net_dim.c | 44 +++++++++---------
net/batman-adv/fragmentation.c | 11 +++++
net/core/secure_seq.c | 12 +++--
net/ipv4/ping.c | 15 ++++++-
net/ipv4/route.c | 1 +
net/mac80211/mlme.c | 6 +++
net/netlink/af_netlink.c | 1 -
net/sched/act_pedit.c | 26 +++++++++--
net/smc/smc_rx.c | 4 +-
net/sunrpc/rpc_pipe.c | 1 +
net/sunrpc/xprt.c | 29 +++++++-----
net/sunrpc/xprtsock.c | 21 +++++----
net/tls/tls_device.c | 3 ++
sound/soc/codecs/max98090.c | 5 ++-
sound/soc/soc-ops.c | 18 +++++++-
tools/testing/selftests/vm/Makefile | 10 ++---
68 files changed, 468 insertions(+), 171 deletions(-)
--
2.20.1
1
66

[PATCH openEuler-5.10-LTS 01/22] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU
by Zheng Zengkai 16 Aug '22
by Zheng Zengkai 16 Aug '22
16 Aug '22
From: Qi Liu <liuqi115(a)huawei.com>
mainline inclusion
from mainline-v5.17-rc1
commit 8404b0fbc7fb
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5AZ87
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------------------------------------------------
PCIe PMU Root Complex Integrated End Point(RCiEP) device is supported
to sample bandwidth, latency, buffer occupation etc.
Each PMU RCiEP device monitors multiple Root Ports, and each RCiEP is
registered as a PMU in /sys/bus/event_source/devices, so users can
select target PMU, and use filter to do further sets.
Filtering options contains:
event - select the event.
port - select target Root Ports. Information of Root Ports are
shown under sysfs.
bdf - select requester_id of target EP device.
trig_len - set trigger condition for starting event statistics.
trig_mode - set trigger mode. 0 means starting to statistic when bigger
than trigger condition, and 1 means smaller.
thr_len - set threshold for statistics.
thr_mode - set threshold mode. 0 means count when bigger than threshold,
and 1 means smaller.
Acked-by: Krzysztof Wilczyński <kw(a)linux.com>
Reviewed-by: John Garry <john.garry(a)huawei.com>
Signed-off-by: Qi Liu <liuqi115(a)huawei.com>
Reviewed-by: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
Link: https://lore.kernel.org/r/20211202080633.2919-3-liuqi115@huawei.com
Signed-off-by: Will Deacon <will(a)kernel.org>
Signed-off-by: Wangming Shao <shaowangming(a)h-partners.com>
Reviewed-by: Junhao He <hejunhao3(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
MAINTAINERS | 2 +
drivers/perf/hisilicon/Kconfig | 9 +
drivers/perf/hisilicon/Makefile | 2 +
drivers/perf/hisilicon/hisi_pcie_pmu.c | 951 +++++++++++++++++++++++++
include/linux/cpuhotplug.h | 3 +
5 files changed, 967 insertions(+)
create mode 100644 drivers/perf/hisilicon/hisi_pcie_pmu.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 23a23bd94c00..d3d6cad63b94 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7976,8 +7976,10 @@ F: Documentation/devicetree/bindings/misc/hisilicon-hikey-usb.yaml
HISILICON PMU DRIVER
M: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
+M: Qi Liu <liuqi115(a)huawei.com>
S: Supported
W: http://www.hisilicon.com
+F: Documentation/admin-guide/perf/hisi-pcie-pmu.rst
F: Documentation/admin-guide/perf/hisi-pmu.rst
F: drivers/perf/hisilicon
diff --git a/drivers/perf/hisilicon/Kconfig b/drivers/perf/hisilicon/Kconfig
index c5d1b7019fff..5546218b5598 100644
--- a/drivers/perf/hisilicon/Kconfig
+++ b/drivers/perf/hisilicon/Kconfig
@@ -5,3 +5,12 @@ config HISI_PMU
help
Support for HiSilicon SoC L3 Cache performance monitor, Hydra Home
Agent performance monitor and DDR Controller performance monitor.
+
+config HISI_PCIE_PMU
+ tristate "HiSilicon PCIE PERF PMU"
+ depends on PCI && ARM64
+ help
+ Provide support for HiSilicon PCIe performance monitoring unit (PMU)
+ RCiEP devices.
+ Adds the PCIe PMU into perf events system for monitoring latency,
+ bandwidth etc.
diff --git a/drivers/perf/hisilicon/Makefile b/drivers/perf/hisilicon/Makefile
index 7643c9f93e36..506ed39e3266 100644
--- a/drivers/perf/hisilicon/Makefile
+++ b/drivers/perf/hisilicon/Makefile
@@ -2,3 +2,5 @@
obj-$(CONFIG_HISI_PMU) += hisi_uncore_pmu.o hisi_uncore_l3c_pmu.o \
hisi_uncore_hha_pmu.o hisi_uncore_ddrc_pmu.o hisi_uncore_sllc_pmu.o \
hisi_uncore_pa_pmu.o
+
+obj-$(CONFIG_HISI_PCIE_PMU) += hisi_pcie_pmu.o
diff --git a/drivers/perf/hisilicon/hisi_pcie_pmu.c b/drivers/perf/hisilicon/hisi_pcie_pmu.c
new file mode 100644
index 000000000000..2f18838754ec
--- /dev/null
+++ b/drivers/perf/hisilicon/hisi_pcie_pmu.c
@@ -0,0 +1,951 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * This driver adds support for PCIe PMU RCiEP device. Related
+ * perf events are bandwidth, latency etc.
+ *
+ * Copyright (C) 2021 HiSilicon Limited
+ * Author: Qi Liu <liuqi115(a)huawei.com>
+ */
+#include <linux/bitfield.h>
+#include <linux/bitmap.h>
+#include <linux/bug.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+#include <linux/perf_event.h>
+
+#define DRV_NAME "hisi_pcie_pmu"
+/* Define registers */
+#define HISI_PCIE_GLOBAL_CTRL 0x00
+#define HISI_PCIE_EVENT_CTRL 0x010
+#define HISI_PCIE_CNT 0x090
+#define HISI_PCIE_EXT_CNT 0x110
+#define HISI_PCIE_INT_STAT 0x150
+#define HISI_PCIE_INT_MASK 0x154
+#define HISI_PCIE_REG_BDF 0xfe0
+#define HISI_PCIE_REG_VERSION 0xfe4
+#define HISI_PCIE_REG_INFO 0xfe8
+
+/* Define command in HISI_PCIE_GLOBAL_CTRL */
+#define HISI_PCIE_GLOBAL_EN 0x01
+#define HISI_PCIE_GLOBAL_NONE 0
+
+/* Define command in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_EN BIT_ULL(20)
+#define HISI_PCIE_RESET_CNT BIT_ULL(22)
+#define HISI_PCIE_INIT_SET BIT_ULL(34)
+#define HISI_PCIE_THR_EN BIT_ULL(26)
+#define HISI_PCIE_TARGET_EN BIT_ULL(32)
+#define HISI_PCIE_TRIG_EN BIT_ULL(52)
+
+/* Define offsets in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_M GENMASK_ULL(15, 0)
+#define HISI_PCIE_THR_MODE_M GENMASK_ULL(27, 27)
+#define HISI_PCIE_THR_M GENMASK_ULL(31, 28)
+#define HISI_PCIE_TARGET_M GENMASK_ULL(52, 36)
+#define HISI_PCIE_TRIG_MODE_M GENMASK_ULL(53, 53)
+#define HISI_PCIE_TRIG_M GENMASK_ULL(59, 56)
+
+#define HISI_PCIE_MAX_COUNTERS 8
+#define HISI_PCIE_REG_STEP 8
+#define HISI_PCIE_THR_MAX_VAL 10
+#define HISI_PCIE_TRIG_MAX_VAL 10
+#define HISI_PCIE_MAX_PERIOD (GENMASK_ULL(63, 0))
+#define HISI_PCIE_INIT_VAL BIT_ULL(63)
+
+struct hisi_pcie_pmu {
+ struct perf_event *hw_events[HISI_PCIE_MAX_COUNTERS];
+ struct hlist_node node;
+ struct pci_dev *pdev;
+ struct pmu pmu;
+ void __iomem *base;
+ int irq;
+ u32 identifier;
+ /* Minimum and maximum BDF of root ports monitored by PMU */
+ u16 bdf_min;
+ u16 bdf_max;
+ int on_cpu;
+};
+
+struct hisi_pcie_reg_pair {
+ u16 lo;
+ u16 hi;
+};
+
+#define to_pcie_pmu(p) (container_of((p), struct hisi_pcie_pmu, pmu))
+#define GET_PCI_DEVFN(bdf) ((bdf) & 0xff)
+
+#define HISI_PCIE_PMU_FILTER_ATTR(_name, _config, _hi, _lo) \
+ static u64 hisi_pcie_get_##_name(struct perf_event *event) \
+ { \
+ return FIELD_GET(GENMASK(_hi, _lo), event->attr._config); \
+ } \
+
+HISI_PCIE_PMU_FILTER_ATTR(event, config, 16, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_len, config1, 3, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_mode, config1, 4, 4);
+HISI_PCIE_PMU_FILTER_ATTR(trig_len, config1, 8, 5);
+HISI_PCIE_PMU_FILTER_ATTR(trig_mode, config1, 9, 9);
+HISI_PCIE_PMU_FILTER_ATTR(port, config2, 15, 0);
+HISI_PCIE_PMU_FILTER_ATTR(bdf, config2, 31, 16);
+
+static ssize_t hisi_pcie_format_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct dev_ext_attribute *eattr;
+
+ eattr = container_of(attr, struct dev_ext_attribute, attr);
+
+ return sysfs_emit(buf, "%s\n", (char *)eattr->var);
+}
+
+static ssize_t hisi_pcie_event_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct perf_pmu_events_attr *pmu_attr =
+ container_of(attr, struct perf_pmu_events_attr, attr);
+
+ return sysfs_emit(buf, "config=0x%llx\n", pmu_attr->id);
+}
+
+#define HISI_PCIE_PMU_FORMAT_ATTR(_name, _format) \
+ (&((struct dev_ext_attribute[]){ \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_format_sysfs_show, \
+ NULL), \
+ .var = (void *)_format } \
+ })[0].attr.attr)
+
+#define HISI_PCIE_PMU_EVENT_ATTR(_name, _id) \
+ (&((struct perf_pmu_events_attr[]) { \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_event_sysfs_show, NULL), \
+ .id = _id, } \
+ })[0].attr.attr)
+
+static ssize_t cpumask_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return cpumap_print_to_pagebuf(true, buf, cpumask_of(pcie_pmu->on_cpu));
+}
+static DEVICE_ATTR_RO(cpumask);
+
+static ssize_t identifier_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#x\n", pcie_pmu->identifier);
+}
+static DEVICE_ATTR_RO(identifier);
+
+static ssize_t bus_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#04x\n", PCI_BUS_NUM(pcie_pmu->bdf_min));
+}
+static DEVICE_ATTR_RO(bus);
+
+static struct hisi_pcie_reg_pair
+hisi_pcie_parse_reg_value(struct hisi_pcie_pmu *pcie_pmu, u32 reg_off)
+{
+ u32 val = readl_relaxed(pcie_pmu->base + reg_off);
+ struct hisi_pcie_reg_pair regs = {
+ .lo = val,
+ .hi = val >> 16,
+ };
+
+ return regs;
+}
+
+/*
+ * Hardware counter and ext_counter work together for bandwidth, latency, bus
+ * utilization and buffer occupancy events. For example, RX memory write latency
+ * events(index = 0x0010), counter counts total delay cycles and ext_counter
+ * counts RX memory write PCIe packets number.
+ *
+ * As we don't want PMU driver to process these two data, "delay cycles" can
+ * be treated as an independent event(index = 0x0010), "RX memory write packets
+ * number" as another(index = 0x10010). BIT 16 is used to distinguish and 0-15
+ * bits are "real" event index, which can be used to set HISI_PCIE_EVENT_CTRL.
+ */
+#define EXT_COUNTER_IS_USED(idx) ((idx) & BIT(16))
+
+static u32 hisi_pcie_get_real_event(struct perf_event *event)
+{
+ return hisi_pcie_get_event(event) & GENMASK(15, 0);
+}
+
+static u32 hisi_pcie_pmu_get_offset(u32 offset, u32 idx)
+{
+ return offset + HISI_PCIE_REG_STEP * idx;
+}
+
+static u32 hisi_pcie_pmu_readl(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset,
+ u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readl_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writel(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u32 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writel_relaxed(val, pcie_pmu->base + offset);
+}
+
+static u64 hisi_pcie_pmu_readq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readq_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writeq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u64 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writeq_relaxed(val, pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_config_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ u64 reg = HISI_PCIE_INIT_SET;
+ u64 port, trig_len, thr_len;
+
+ /* Config HISI_PCIE_EVENT_CTRL according to event. */
+ reg |= FIELD_PREP(HISI_PCIE_EVENT_M, hisi_pcie_get_real_event(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to root port or EP device. */
+ port = hisi_pcie_get_port(event);
+ if (port)
+ reg |= FIELD_PREP(HISI_PCIE_TARGET_M, port);
+ else
+ reg |= HISI_PCIE_TARGET_EN |
+ FIELD_PREP(HISI_PCIE_TARGET_M, hisi_pcie_get_bdf(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to trigger condition. */
+ trig_len = hisi_pcie_get_trig_len(event);
+ if (trig_len) {
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_M, trig_len);
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_MODE_M, hisi_pcie_get_trig_mode(event));
+ reg |= HISI_PCIE_TRIG_EN;
+ }
+
+ /* Config HISI_PCIE_EVENT_CTRL according to threshold condition. */
+ thr_len = hisi_pcie_get_thr_len(event);
+ if (thr_len) {
+ reg |= FIELD_PREP(HISI_PCIE_THR_M, thr_len);
+ reg |= FIELD_PREP(HISI_PCIE_THR_MODE_M, hisi_pcie_get_thr_mode(event));
+ reg |= HISI_PCIE_THR_EN;
+ }
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, reg);
+}
+
+static void hisi_pcie_pmu_clear_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, HISI_PCIE_INIT_SET);
+}
+
+static bool hisi_pcie_pmu_valid_requester_id(struct hisi_pcie_pmu *pcie_pmu, u32 bdf)
+{
+ struct pci_dev *root_port, *pdev;
+ u16 rp_bdf;
+
+ pdev = pci_get_domain_bus_and_slot(pci_domain_nr(pcie_pmu->pdev->bus), PCI_BUS_NUM(bdf),
+ GET_PCI_DEVFN(bdf));
+ if (!pdev)
+ return false;
+
+ root_port = pcie_find_root_port(pdev);
+ if (!root_port) {
+ pci_dev_put(pdev);
+ return false;
+ }
+
+ pci_dev_put(pdev);
+ rp_bdf = pci_dev_id(root_port);
+ return rp_bdf >= pcie_pmu->bdf_min && rp_bdf <= pcie_pmu->bdf_max;
+}
+
+static bool hisi_pcie_pmu_valid_filter(struct perf_event *event,
+ struct hisi_pcie_pmu *pcie_pmu)
+{
+ u32 requester_id = hisi_pcie_get_bdf(event);
+
+ if (hisi_pcie_get_thr_len(event) > HISI_PCIE_THR_MAX_VAL)
+ return false;
+
+ if (hisi_pcie_get_trig_len(event) > HISI_PCIE_TRIG_MAX_VAL)
+ return false;
+
+ if (requester_id) {
+ if (!hisi_pcie_pmu_valid_requester_id(pcie_pmu, requester_id))
+ return false;
+ }
+
+ return true;
+}
+
+static bool hisi_pcie_pmu_cmp_event(struct perf_event *target,
+ struct perf_event *event)
+{
+ return hisi_pcie_get_real_event(target) == hisi_pcie_get_real_event(event);
+}
+
+static bool hisi_pcie_pmu_validate_event_group(struct perf_event *event)
+{
+ struct perf_event *sibling, *leader = event->group_leader;
+ struct perf_event *event_group[HISI_PCIE_MAX_COUNTERS];
+ int counters = 1;
+ int num;
+
+ event_group[0] = leader;
+ if (!is_software_event(leader)) {
+ if (leader->pmu != event->pmu)
+ return false;
+
+ if (leader != event && !hisi_pcie_pmu_cmp_event(leader, event))
+ event_group[counters++] = event;
+ }
+
+ for_each_sibling_event(sibling, event->group_leader) {
+ if (is_software_event(sibling))
+ continue;
+
+ if (sibling->pmu != event->pmu)
+ return false;
+
+ for (num = 0; num < counters; num++) {
+ if (hisi_pcie_pmu_cmp_event(event_group[num], sibling))
+ break;
+ }
+
+ if (num == counters)
+ event_group[counters++] = sibling;
+ }
+
+ return counters <= HISI_PCIE_MAX_COUNTERS;
+}
+
+static int hisi_pcie_pmu_event_init(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ event->cpu = pcie_pmu->on_cpu;
+
+ if (EXT_COUNTER_IS_USED(hisi_pcie_get_event(event)))
+ hwc->event_base = HISI_PCIE_EXT_CNT;
+ else
+ hwc->event_base = HISI_PCIE_CNT;
+
+ if (event->attr.type != event->pmu->type)
+ return -ENOENT;
+
+ /* Sampling is not supported. */
+ if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK)
+ return -EOPNOTSUPP;
+
+ if (!hisi_pcie_pmu_valid_filter(event, pcie_pmu))
+ return -EINVAL;
+
+ if (!hisi_pcie_pmu_validate_event_group(event))
+ return -EINVAL;
+
+ return 0;
+}
+
+static u64 hisi_pcie_pmu_read_counter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ u32 idx = event->hw.idx;
+
+ return hisi_pcie_pmu_readq(pcie_pmu, event->hw.event_base, idx);
+}
+
+static int hisi_pcie_pmu_find_related_event(struct hisi_pcie_pmu *pcie_pmu,
+ struct perf_event *event)
+{
+ struct perf_event *sibling;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ sibling = pcie_pmu->hw_events[idx];
+ if (!sibling)
+ continue;
+
+ if (!hisi_pcie_pmu_cmp_event(sibling, event))
+ continue;
+
+ /* Related events must be used in group */
+ if (sibling->group_leader == event->group_leader)
+ return idx;
+ else
+ return -EINVAL;
+ }
+
+ return idx;
+}
+
+static int hisi_pcie_pmu_get_event_idx(struct hisi_pcie_pmu *pcie_pmu)
+{
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ if (!pcie_pmu->hw_events[idx])
+ return idx;
+ }
+
+ return -EINVAL;
+}
+
+static void hisi_pcie_pmu_event_update(struct perf_event *event)
+{
+ struct hw_perf_event *hwc = &event->hw;
+ u64 new_cnt, prev_cnt, delta;
+
+ do {
+ prev_cnt = local64_read(&hwc->prev_count);
+ new_cnt = hisi_pcie_pmu_read_counter(event);
+ } while (local64_cmpxchg(&hwc->prev_count, prev_cnt,
+ new_cnt) != prev_cnt);
+
+ delta = (new_cnt - prev_cnt) & HISI_PCIE_MAX_PERIOD;
+ local64_add(delta, &event->count);
+}
+
+static void hisi_pcie_pmu_read(struct perf_event *event)
+{
+ hisi_pcie_pmu_event_update(event);
+}
+
+static void hisi_pcie_pmu_set_period(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+
+ local64_set(&hwc->prev_count, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_CNT, idx, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EXT_CNT, idx, HISI_PCIE_INIT_VAL);
+}
+
+static void hisi_pcie_pmu_enable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val |= HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_disable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val &= ~HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_enable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 0);
+}
+
+static void hisi_pcie_pmu_disable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 1);
+}
+
+static void hisi_pcie_pmu_reset_counter(struct hisi_pcie_pmu *pcie_pmu, int idx)
+{
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_RESET_CNT);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_INIT_SET);
+}
+
+static void hisi_pcie_pmu_start(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+ u64 prev_cnt;
+
+ if (WARN_ON_ONCE(!(hwc->state & PERF_HES_STOPPED)))
+ return;
+
+ WARN_ON_ONCE(!(hwc->state & PERF_HES_UPTODATE));
+ hwc->state = 0;
+
+ hisi_pcie_pmu_config_filter(event);
+ hisi_pcie_pmu_enable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_enable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_set_period(event);
+
+ if (flags & PERF_EF_RELOAD) {
+ prev_cnt = local64_read(&hwc->prev_count);
+ hisi_pcie_pmu_writeq(pcie_pmu, hwc->event_base, idx, prev_cnt);
+ }
+
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_stop(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_disable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_disable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_clear_filter(event);
+ WARN_ON_ONCE(hwc->state & PERF_HES_STOPPED);
+ hwc->state |= PERF_HES_STOPPED;
+
+ if (hwc->state & PERF_HES_UPTODATE)
+ return;
+
+ hwc->state |= PERF_HES_UPTODATE;
+}
+
+static int hisi_pcie_pmu_add(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx;
+
+ hwc->state = PERF_HES_STOPPED | PERF_HES_UPTODATE;
+
+ /* Check all working events to find a related event. */
+ idx = hisi_pcie_pmu_find_related_event(pcie_pmu, event);
+ if (idx < 0)
+ return idx;
+
+ /* Current event shares an enabled counter with the related event */
+ if (idx < HISI_PCIE_MAX_COUNTERS) {
+ hwc->idx = idx;
+ goto start_count;
+ }
+
+ idx = hisi_pcie_pmu_get_event_idx(pcie_pmu);
+ if (idx < 0)
+ return idx;
+
+ hwc->idx = idx;
+ pcie_pmu->hw_events[idx] = event;
+ /* Reset Counter to avoid previous statistic interference. */
+ hisi_pcie_pmu_reset_counter(pcie_pmu, idx);
+
+start_count:
+ if (flags & PERF_EF_START)
+ hisi_pcie_pmu_start(event, PERF_EF_RELOAD);
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_del(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_stop(event, PERF_EF_UPDATE);
+ pcie_pmu->hw_events[hwc->idx] = NULL;
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_enable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+ int num;
+
+ for (num = 0; num < HISI_PCIE_MAX_COUNTERS; num++) {
+ if (pcie_pmu->hw_events[num])
+ break;
+ }
+
+ if (num == HISI_PCIE_MAX_COUNTERS)
+ return;
+
+ writel(HISI_PCIE_GLOBAL_EN, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static void hisi_pcie_pmu_disable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+
+ writel(HISI_PCIE_GLOBAL_NONE, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static irqreturn_t hisi_pcie_pmu_irq(int irq, void *data)
+{
+ struct hisi_pcie_pmu *pcie_pmu = data;
+ irqreturn_t ret = IRQ_NONE;
+ struct perf_event *event;
+ u32 overflown;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ overflown = hisi_pcie_pmu_readl(pcie_pmu, HISI_PCIE_INT_STAT, idx);
+ if (!overflown)
+ continue;
+
+ /* Clear status of interrupt. */
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_STAT, idx, 1);
+ event = pcie_pmu->hw_events[idx];
+ if (!event)
+ continue;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_set_period(event);
+ ret = IRQ_HANDLED;
+ }
+
+ return ret;
+}
+
+static int hisi_pcie_pmu_irq_register(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int irq, ret;
+
+ ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to enable MSI vectors: %d\n", ret);
+ return ret;
+ }
+
+ irq = pci_irq_vector(pdev, 0);
+ ret = request_irq(irq, hisi_pcie_pmu_irq, IRQF_NOBALANCING | IRQF_NO_THREAD, DRV_NAME,
+ pcie_pmu);
+ if (ret) {
+ pci_err(pdev, "Failed to register IRQ: %d\n", ret);
+ pci_free_irq_vectors(pdev);
+ return ret;
+ }
+
+ pcie_pmu->irq = irq;
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_irq_unregister(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ free_irq(pcie_pmu->irq, pcie_pmu);
+ pci_free_irq_vectors(pdev);
+}
+
+static int hisi_pcie_pmu_online_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+
+ if (pcie_pmu->on_cpu == -1) {
+ pcie_pmu->on_cpu = cpu;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(cpu)));
+ }
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_offline_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+ unsigned int target;
+
+ /* Nothing to do if this CPU doesn't own the PMU */
+ if (pcie_pmu->on_cpu != cpu)
+ return 0;
+
+ pcie_pmu->on_cpu = -1;
+ /* Choose a new CPU from all online cpus. */
+ target = cpumask_first(cpu_online_mask);
+ if (target >= nr_cpu_ids) {
+ pci_err(pcie_pmu->pdev, "There is no CPU to set\n");
+ return 0;
+ }
+
+ perf_pmu_migrate_context(&pcie_pmu->pmu, cpu, target);
+ /* Use this CPU for event counting */
+ pcie_pmu->on_cpu = target;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(target)));
+
+ return 0;
+}
+
+static struct attribute *hisi_pcie_pmu_events_attr[] = {
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_latency, 0x0010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_cnt, 0x10010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_latency, 0x0210),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_cnt, 0x10210),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_latency, 0x0011),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_cnt, 0x10011),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_flux, 0x1005),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_time, 0x11005),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_flux, 0x2004),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_time, 0x12004),
+ NULL
+};
+
+static struct attribute_group hisi_pcie_pmu_events_group = {
+ .name = "events",
+ .attrs = hisi_pcie_pmu_events_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_format_attr[] = {
+ HISI_PCIE_PMU_FORMAT_ATTR(event, "config:0-16"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_len, "config1:0-3"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_mode, "config1:4"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_len, "config1:5-8"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_mode, "config1:9"),
+ HISI_PCIE_PMU_FORMAT_ATTR(port, "config2:0-15"),
+ HISI_PCIE_PMU_FORMAT_ATTR(bdf, "config2:16-31"),
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_format_group = {
+ .name = "format",
+ .attrs = hisi_pcie_pmu_format_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_bus_attrs[] = {
+ &dev_attr_bus.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_bus_attr_group = {
+ .attrs = hisi_pcie_pmu_bus_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_cpumask_attrs[] = {
+ &dev_attr_cpumask.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_cpumask_attr_group = {
+ .attrs = hisi_pcie_pmu_cpumask_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_identifier_attrs[] = {
+ &dev_attr_identifier.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_identifier_attr_group = {
+ .attrs = hisi_pcie_pmu_identifier_attrs,
+};
+
+static const struct attribute_group *hisi_pcie_pmu_attr_groups[] = {
+ &hisi_pcie_pmu_events_group,
+ &hisi_pcie_pmu_format_group,
+ &hisi_pcie_pmu_bus_attr_group,
+ &hisi_pcie_pmu_cpumask_attr_group,
+ &hisi_pcie_pmu_identifier_attr_group,
+ NULL
+};
+
+static int hisi_pcie_alloc_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ struct hisi_pcie_reg_pair regs;
+ u16 sicl_id, core_id;
+ char *name;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_BDF);
+ pcie_pmu->bdf_min = regs.lo;
+ pcie_pmu->bdf_max = regs.hi;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_INFO);
+ sicl_id = regs.hi;
+ core_id = regs.lo;
+
+ name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "hisi_pcie%u_core%u", sicl_id, core_id);
+ if (!name)
+ return -ENOMEM;
+
+ pcie_pmu->pdev = pdev;
+ pcie_pmu->on_cpu = -1;
+ pcie_pmu->identifier = readl(pcie_pmu->base + HISI_PCIE_REG_VERSION);
+ pcie_pmu->pmu = (struct pmu) {
+ .name = name,
+ .module = THIS_MODULE,
+ .event_init = hisi_pcie_pmu_event_init,
+ .pmu_enable = hisi_pcie_pmu_enable,
+ .pmu_disable = hisi_pcie_pmu_disable,
+ .add = hisi_pcie_pmu_add,
+ .del = hisi_pcie_pmu_del,
+ .start = hisi_pcie_pmu_start,
+ .stop = hisi_pcie_pmu_stop,
+ .read = hisi_pcie_pmu_read,
+ .task_ctx_nr = perf_invalid_context,
+ .attr_groups = hisi_pcie_pmu_attr_groups,
+ .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
+ };
+
+ return 0;
+}
+
+static int hisi_pcie_init_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int ret;
+
+ pcie_pmu->base = pci_ioremap_bar(pdev, 2);
+ if (!pcie_pmu->base) {
+ pci_err(pdev, "Ioremap failed for pcie_pmu resource\n");
+ return -ENOMEM;
+ }
+
+ ret = hisi_pcie_alloc_pmu(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = hisi_pcie_pmu_irq_register(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = cpuhp_state_add_instance(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ if (ret) {
+ pci_err(pdev, "Failed to register hotplug: %d\n", ret);
+ goto err_irq_unregister;
+ }
+
+ ret = perf_pmu_register(&pcie_pmu->pmu, pcie_pmu->pmu.name, -1);
+ if (ret) {
+ pci_err(pdev, "Failed to register PCIe PMU: %d\n", ret);
+ goto err_hotplug_unregister;
+ }
+
+ return ret;
+
+err_hotplug_unregister:
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+
+err_irq_unregister:
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+
+err_iounmap:
+ iounmap(pcie_pmu->base);
+
+ return ret;
+}
+
+static void hisi_pcie_uninit_pmu(struct pci_dev *pdev)
+{
+ struct hisi_pcie_pmu *pcie_pmu = pci_get_drvdata(pdev);
+
+ perf_pmu_unregister(&pcie_pmu->pmu);
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+ iounmap(pcie_pmu->base);
+}
+
+static int hisi_pcie_init_dev(struct pci_dev *pdev)
+{
+ int ret;
+
+ ret = pcim_enable_device(pdev);
+ if (ret) {
+ pci_err(pdev, "Failed to enable PCI device: %d\n", ret);
+ return ret;
+ }
+
+ ret = pcim_iomap_regions(pdev, BIT(2), DRV_NAME);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to request PCI mem regions: %d\n", ret);
+ return ret;
+ }
+
+ pci_set_master(pdev);
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+ struct hisi_pcie_pmu *pcie_pmu;
+ int ret;
+
+ pcie_pmu = devm_kzalloc(&pdev->dev, sizeof(*pcie_pmu), GFP_KERNEL);
+ if (!pcie_pmu)
+ return -ENOMEM;
+
+ ret = hisi_pcie_init_dev(pdev);
+ if (ret)
+ return ret;
+
+ ret = hisi_pcie_init_pmu(pdev, pcie_pmu);
+ if (ret)
+ return ret;
+
+ pci_set_drvdata(pdev, pcie_pmu);
+
+ return ret;
+}
+
+static void hisi_pcie_pmu_remove(struct pci_dev *pdev)
+{
+ hisi_pcie_uninit_pmu(pdev);
+ pci_set_drvdata(pdev, NULL);
+}
+
+static const struct pci_device_id hisi_pcie_pmu_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_HUAWEI, 0xa12d) },
+ { 0, }
+};
+MODULE_DEVICE_TABLE(pci, hisi_pcie_pmu_ids);
+
+static struct pci_driver hisi_pcie_pmu_driver = {
+ .name = DRV_NAME,
+ .id_table = hisi_pcie_pmu_ids,
+ .probe = hisi_pcie_pmu_probe,
+ .remove = hisi_pcie_pmu_remove,
+};
+
+static int __init hisi_pcie_module_init(void)
+{
+ int ret;
+
+ ret = cpuhp_setup_state_multi(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ "AP_PERF_ARM_HISI_PCIE_PMU_ONLINE",
+ hisi_pcie_pmu_online_cpu,
+ hisi_pcie_pmu_offline_cpu);
+ if (ret) {
+ pr_err("Failed to setup PCIe PMU hotplug: %d\n", ret);
+ return ret;
+ }
+
+ ret = pci_register_driver(&hisi_pcie_pmu_driver);
+ if (ret)
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+
+ return ret;
+}
+module_init(hisi_pcie_module_init);
+
+static void __exit hisi_pcie_module_exit(void)
+{
+ pci_unregister_driver(&hisi_pcie_pmu_driver);
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+}
+module_exit(hisi_pcie_module_exit);
+
+MODULE_DESCRIPTION("HiSilicon PCIe PMU driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Qi Liu <liuqi115(a)huawei.com>");
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index b98b9eb7d5f8..24e7be132046 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -178,6 +178,9 @@ enum cpuhp_state {
CPUHP_AP_PERF_ARM_HISI_L3_ONLINE,
CPUHP_AP_PERF_ARM_HISI_PA_ONLINE,
CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE,
+ #ifndef __GENKSYMS__
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ #endif
CPUHP_AP_PERF_ARM_L2X0_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,
--
2.20.1
1
21

[PATCH openEuler-1.0-LTS] blk-mq: fix null pointer dereference in blk_mq_queue_tag_busy_ite
by Yongqiang Liu 16 Aug '22
by Yongqiang Liu 16 Aug '22
16 Aug '22
From: Li Nan <linan122(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187489, https://gitee.com/openeuler/kernel/issues/I5MKPP
CVE: NA
--------------------------------
The q->tag_set can be NULL in blk_mq_queue_tag_busy_ite() while queue
has not been initialized:
CPU0 CPU1
dm_mq_init_request_queue
md->tag_set = kzalloc_node
blk_mq_init_allocated_queue
q->mq_ops = set->ops;
diskstats_show
part_get_stat_info
if(q->mq_ops)
blk_mq_in_flight_with_stat
blk_mq_queue_tag_busy_ite
if (blk_mq_is_shared_tags(q->tag_set->flags))
//q->tag_set is null here
q->tag_set = set
blk_register_queue
blk_queue_flag_set(QUEUE_FLAG_REGISTERED, q)
There is same bug when cat /sys/block/[device]/inflight. Fix it by checking
the flag 'QUEUE_FLAG_REGISTERED'. Althrough this may cause some io not to
be counted temporarily, it doesn't hurt in real user case.
Signed-off-by: Li Nan <linan122(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
block/blk-mq-tag.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index bee92ab06a5e..c24802fe6ab2 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -374,6 +374,13 @@ void blk_mq_queue_tag_busy_iter(struct request_queue *q, busy_iter_fn *fn,
struct blk_mq_hw_ctx *hctx;
int i;
+ /*
+ * For dm, it can run here after register_disk, but the queue has not
+ * been initialized yet. Check QUEUE_FLAG_REGISTERED prevent null point
+ * access.
+ */
+ if (!test_bit(QUEUE_FLAG_REGISTERED, &q->queue_flags))
+ return;
/*
* __blk_mq_update_nr_hw_queues will update the nr_hw_queues and
* queue_hw_ctx after freeze the queue, so we use q_usage_counter
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] arm64: Avoid premature usercopy failure for __arch_copy_to_user_generic_read
by Yongqiang Liu 16 Aug '22
by Yongqiang Liu 16 Aug '22
16 Aug '22
From: Tong Tiangen <tongtiangen(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5MJU8
CVE: NA
---------------------------------
Commit 1b1b4dede457 ("arm64: Avoid premature usercopy failure") fixes an
usercopy failure issues, it introduced a variable srcin and used it in
fixup routine, but the variable is not initialized in
__arch_copy_to_user_generic_read(), this will cause an illegal pointer
issue in fixup.
Fixes: 1b1b4dede457 ("arm64: Avoid premature usercopy failure")
Signed-off-by: Tong Tiangen <tongtiangen(a)huawei.com>
Tested-by: yongqiang Liu <liuyongqiang13(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/arm64/lib/copy_to_user.S | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/lib/copy_to_user.S b/arch/arm64/lib/copy_to_user.S
index 84b7a16e82b5..6214e4972141 100644
--- a/arch/arm64/lib/copy_to_user.S
+++ b/arch/arm64/lib/copy_to_user.S
@@ -77,6 +77,7 @@ ENDPROC(__arch_copy_to_user)
ENTRY(__arch_copy_to_user_generic_read)
uaccess_enable_not_uao x3, x4, x5
add end, x0, x2
+ mov srcin, x1
#include "copy_template_generic_read.S"
uaccess_disable_not_uao x3, x4
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] net_sched: cls_route: remove from list when handle is 0
by Yongqiang Liu 16 Aug '22
by Yongqiang Liu 16 Aug '22
16 Aug '22
From: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
mainline inclusion
from mainline-v6.0-rc1
commit 9ad36309e2719a884f946678e0296be10f0bb4c1
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5LJLR
CVE: CVE-2022-2588
--------------------------------
When a route filter is replaced and the old filter has a 0 handle, the old
one won't be removed from the hashtable, while it will still be freed.
The test was there since before commit 1109c00547fc ("net: sched: RCU
cls_route"), when a new filter was not allocated when there was an old one.
The old filter was reused and the reinserting would only be necessary if an
old filter was replaced. That was still wrong for the same case where the
old handle was 0.
Remove the old filter from the list independently from its handle value.
This fixes CVE-2022-2588, also reported as ZDI-CAN-17440.
Reported-by: Zhenpeng Lin <zplin(a)u.northwestern.edu>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo(a)canonical.com>
Reviewed-by: Kamal Mostafa <kamal(a)canonical.com>
Cc: <stable(a)vger.kernel.org>
Acked-by: Jamal Hadi Salim <jhs(a)mojatatu.com>
Link: https://lore.kernel.org/r/20220809170518.164662-1-cascardo@canonical.com
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/sched/cls_route.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c
index 0a0a22a0666d..c13903441ac1 100644
--- a/net/sched/cls_route.c
+++ b/net/sched/cls_route.c
@@ -528,7 +528,7 @@ static int route4_change(struct net *net, struct sk_buff *in_skb,
rcu_assign_pointer(f->next, f1);
rcu_assign_pointer(*fp, f);
- if (fold && fold->handle && f->handle != fold->handle) {
+ if (fold) {
th = to_hash(fold->handle);
h = from_hash(fold->handle >> 16);
b = rtnl_dereference(head->table[th]);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Revert "x86/unwind/orc: Change REG_SP_INDIRECT"
by Yongqiang Liu 15 Aug '22
by Yongqiang Liu 15 Aug '22
15 Aug '22
From: Yipeng Zou <zouyipeng(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5MC71
CVE: NA
---------------------------------
This reverts commit 657a6bec17a04e9223a099608084ab5adc2582df.
This patch was backport from mainline and intend to fix REG_SP_INDIRECT
type in orc unwinder.The patch was fix an objtools problem on mainline,
which The upstream commit havn't been merged in hulk-4.19,and it led to
parse the sp value form orc data was wrong. So we need revert this patch.
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/x86/kernel/unwind_orc.c | 5 +----
tools/objtool/orc_dump.c | 2 +-
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/unwind_orc.c b/arch/x86/kernel/unwind_orc.c
index 3ff76f88e220..6c5d3b22ac61 100644
--- a/arch/x86/kernel/unwind_orc.c
+++ b/arch/x86/kernel/unwind_orc.c
@@ -450,7 +450,7 @@ bool unwind_next_frame(struct unwind_state *state)
break;
case ORC_REG_SP_INDIRECT:
- sp = state->sp;
+ sp = state->sp + orc->sp_offset;
indirect = true;
break;
@@ -500,9 +500,6 @@ bool unwind_next_frame(struct unwind_state *state)
if (indirect) {
if (!deref_stack_reg(state, sp, &sp))
goto err;
-
- if (orc->sp_reg == ORC_REG_SP_INDIRECT)
- sp += orc->sp_offset;
}
/* Find IP, SP and possibly regs: */
diff --git a/tools/objtool/orc_dump.c b/tools/objtool/orc_dump.c
index ba28830aace2..faa444270ee3 100644
--- a/tools/objtool/orc_dump.c
+++ b/tools/objtool/orc_dump.c
@@ -64,7 +64,7 @@ static void print_reg(unsigned int reg, int offset)
if (reg == ORC_REG_BP_INDIRECT)
printf("(bp%+d)", offset);
else if (reg == ORC_REG_SP_INDIRECT)
- printf("(sp)%+d", offset);
+ printf("(sp%+d)", offset);
else if (reg == ORC_REG_UNDEFINED)
printf("(und)");
else
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS 1/3] scsi: iscsi: Add helper functions to manage iscsi_cls_conn
by Yongqiang Liu 15 Aug '22
by Yongqiang Liu 15 Aug '22
15 Aug '22
From: Wenchao Hao <haowenchao(a)huawei.com>
mainline inclusion
from mainline-v5.18-rc1
commit ad515cada7dac3cdf5e1ad77a0ed696f5f34e0ab
category: bugfix
bugzilla: 187381, https://gitee.com/openeuler/kernel/issues/I5LBFL
CVE: NA
--------------------------------
- iscsi_alloc_conn(): Allocate and initialize iscsi_cls_conn
- iscsi_add_conn(): Expose iscsi_cls_conn to userspace via sysfs
- iscsi_remove_conn(): Remove iscsi_cls_conn from sysfs
Link: https://lore.kernel.org/r/20220310015759.3296841-2-haowenchao@huawei.com
Reviewed-by: Mike Christie <michael.christie(a)oracle.com>
Signed-off-by: Wenchao Hao <haowenchao(a)huawei.com>
Signed-off-by: Wu Bo <wubo40(a)huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen(a)oracle.com>
Conflict: drivers/scsi/scsi_transport_iscsi.c
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/scsi/scsi_transport_iscsi.c | 89 +++++++++++++++++++++++++++++
include/scsi/scsi_transport_iscsi.h | 4 ++
2 files changed, 93 insertions(+)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index bd699906828f..eba74ac58735 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -2201,6 +2201,95 @@ void iscsi_free_session(struct iscsi_cls_session *session)
}
EXPORT_SYMBOL_GPL(iscsi_free_session);
+/**
+ * iscsi_alloc_conn - alloc iscsi class connection
+ * @session: iscsi cls session
+ * @dd_size: private driver data size
+ * @cid: connection id
+ */
+struct iscsi_cls_conn *
+iscsi_alloc_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)
+{
+ struct iscsi_transport *transport = session->transport;
+ struct iscsi_cls_conn *conn;
+
+ conn = kzalloc(sizeof(*conn) + dd_size, GFP_KERNEL);
+ if (!conn)
+ return NULL;
+ if (dd_size)
+ conn->dd_data = &conn[1];
+
+ mutex_init(&conn->ep_mutex);
+ INIT_LIST_HEAD(&conn->conn_list);
+ conn->transport = transport;
+ conn->cid = cid;
+
+ /* this is released in the dev's release function */
+ if (!get_device(&session->dev))
+ goto free_conn;
+
+ dev_set_name(&conn->dev, "connection%d:%u", session->sid, cid);
+ device_initialize(&conn->dev);
+ conn->dev.parent = &session->dev;
+ conn->dev.release = iscsi_conn_release;
+
+ return conn;
+
+free_conn:
+ kfree(conn);
+ return NULL;
+}
+EXPORT_SYMBOL_GPL(iscsi_alloc_conn);
+
+/**
+ * iscsi_add_conn - add iscsi class connection
+ * @conn: iscsi cls connection
+ *
+ * This will expose iscsi_cls_conn to sysfs so make sure the related
+ * resources for sysfs attributes are initialized before calling this.
+ */
+int iscsi_add_conn(struct iscsi_cls_conn *conn)
+{
+ int err;
+ unsigned long flags;
+ struct iscsi_cls_session *session = iscsi_dev_to_session(conn->dev.parent);
+
+ err = device_add(&conn->dev);
+ if (err) {
+ iscsi_cls_session_printk(KERN_ERR, session,
+ "could not register connection's dev\n");
+ return err;
+ }
+ transport_register_device(&conn->dev);
+
+ spin_lock_irqsave(&connlock, flags);
+ list_add(&conn->conn_list, &connlist);
+ spin_unlock_irqrestore(&connlock, flags);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(iscsi_add_conn);
+
+/**
+ * iscsi_remove_conn - remove iscsi class connection from sysfs
+ * @conn: iscsi cls connection
+ *
+ * Remove iscsi_cls_conn from sysfs, and wait for previous
+ * read/write of iscsi_cls_conn's attributes in sysfs to finish.
+ */
+void iscsi_remove_conn(struct iscsi_cls_conn *conn)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&connlock, flags);
+ list_del(&conn->conn_list);
+ spin_unlock_irqrestore(&connlock, flags);
+
+ transport_unregister_device(&conn->dev);
+ device_del(&conn->dev);
+}
+EXPORT_SYMBOL_GPL(iscsi_remove_conn);
+
/**
* iscsi_create_conn - create iscsi class connection
* @session: iscsi cls session
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
index 848ba2822a21..105458b20cd8 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -446,6 +446,10 @@ extern struct iscsi_cls_session *iscsi_create_session(struct Scsi_Host *shost,
unsigned int target_id);
extern void iscsi_remove_session(struct iscsi_cls_session *session);
extern void iscsi_free_session(struct iscsi_cls_session *session);
+extern struct iscsi_cls_conn *iscsi_alloc_conn(struct iscsi_cls_session *sess,
+ int dd_size, uint32_t cid);
+extern int iscsi_add_conn(struct iscsi_cls_conn *conn);
+extern void iscsi_remove_conn(struct iscsi_cls_conn *conn);
extern struct iscsi_cls_conn *iscsi_create_conn(struct iscsi_cls_session *sess,
int dd_size, uint32_t cid);
extern void iscsi_put_conn(struct iscsi_cls_conn *conn);
--
2.25.1
1
2
From: Zheng Zengkai <zhengzengkai(a)huawei.com>
phytium inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I41AUQ
--------------------------------------
Use CONFIG_ARCH_PHYTIUM to control phytium ACS quirks.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Reviewed-by: Hanjun Guo <guohanjun(a)huawei.com>
Reviewed-by: Xiongfeng Wang <wangxiongfeng2(a)huawei.com>
Signed-off-by: Laibin Qiu <qiulaibin(a)huawei.com>
---
drivers/pci/quirks.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 99657b9bc82e..c389cef5c7bd 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4646,10 +4646,12 @@ static const struct pci_dev_acs_enabled {
{ PCI_VENDOR_ID_ZHAOXIN, 0x9083, pci_quirk_mf_endpoint_acs },
/* Zhaoxin Root/Downstream Ports */
{ PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs },
+#ifdef CONFIG_ARCH_PHYTIUM
/* because PLX switch Vendor id is 0x10b5 on phytium cpu */
{ 0x10b5, PCI_ANY_ID, pci_quirk_xgene_acs },
/* because rootcomplex Vendor id is 0x17cd on phytium cpu */
{ 0x17cd, PCI_ANY_ID, pci_quirk_xgene_acs },
+#endif
{ 0 }
};
--
2.25.1
1
1

[PATCH openEuler-1.0-LTS 1/2] sched: Fix null-ptr-deref in free_fair_sched_group
by Yongqiang Liu 15 Aug '22
by Yongqiang Liu 15 Aug '22
15 Aug '22
From: Hui Tang <tanghui20(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187419, https://gitee.com/openeuler/kernel/issues/I5LIPL
CVE: NA
-------------------------------
do_el0_svc+0x50/0x11c arch/arm64/kernel/syscall.c:217
el0_svc+0x20/0x30 arch/arm64/kernel/entry-common.c:353
el0_sync_handler+0xe4/0x1e0 arch/arm64/kernel/entry-common.c:369
el0_sync+0x148/0x180 arch/arm64/kernel/entry.S:683
==================================================================
BUG: KASAN: null-ptr-deref in rq_of kernel/sched/sched.h:1118 [inline]
BUG: KASAN: null-ptr-deref in unthrottle_qos_sched_group kernel/sched/fair.c:7619 [inline]
BUG: KASAN: null-ptr-deref in free_fair_sched_group+0x124/0x320 kernel/sched/fair.c:12131
Read of size 8 at addr 0000000000000130 by task syz-executor100/223
CPU: 3 PID: 223 Comm: syz-executor100 Not tainted 5.10.0 #6
Hardware name: linux,dummy-virt (DT)
Call trace:
dump_backtrace+0x0/0x40c arch/arm64/kernel/stacktrace.c:132
show_stack+0x30/0x40 arch/arm64/kernel/stacktrace.c:196
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x1b4/0x248 lib/dump_stack.c:118
__kasan_report mm/kasan/report.c:551 [inline]
kasan_report+0x18c/0x210 mm/kasan/report.c:564
check_memory_region_inline mm/kasan/generic.c:187 [inline]
__asan_load8+0x98/0xc0 mm/kasan/generic.c:253
rq_of kernel/sched/sched.h:1118 [inline]
unthrottle_qos_sched_group kernel/sched/fair.c:7619 [inline]
free_fair_sched_group+0x124/0x320 kernel/sched/fair.c:12131
sched_free_group kernel/sched/core.c:7767 [inline]
sched_create_group+0x48/0xc0 kernel/sched/core.c:7798
cpu_cgroup_css_alloc+0x18/0x40 kernel/sched/core.c:7930
css_create+0x7c/0x4a0 kernel/cgroup/cgroup.c:5328
cgroup_apply_control_enable+0x288/0x340 kernel/cgroup/cgroup.c:3135
cgroup_apply_control kernel/cgroup/cgroup.c:3217 [inline]
cgroup_subtree_control_write+0x668/0x8b0 kernel/cgroup/cgroup.c:3375
cgroup_file_write+0x1a8/0x37c kernel/cgroup/cgroup.c:3909
kernfs_fop_write_iter+0x220/0x2f4 fs/kernfs/file.c:296
call_write_iter include/linux/fs.h:1960 [inline]
new_sync_write+0x260/0x370 fs/read_write.c:515
vfs_write+0x3dc/0x4ac fs/read_write.c:602
ksys_write+0xfc/0x200 fs/read_write.c:655
__do_sys_write fs/read_write.c:667 [inline]
__se_sys_write fs/read_write.c:664 [inline]
__arm64_sys_write+0x50/0x60 fs/read_write.c:664
__invoke_syscall arch/arm64/kernel/syscall.c:36 [inline]
invoke_syscall arch/arm64/kernel/syscall.c:48 [inline]
el0_svc_common.constprop.0+0xf4/0x414 arch/arm64/kernel/syscall.c:155
do_el0_svc+0x50/0x11c arch/arm64/kernel/syscall.c:217
el0_svc+0x20/0x30 arch/arm64/kernel/entry-common.c:353
el0_sync_handler+0xe4/0x1e0 arch/arm64/kernel/entry-common.c:369
el0_sync+0x148/0x180 arch/arm64/kernel/entry.S:683
So add check for tg->cfs_rq[i] before unthrottle_qos_sched_group() called.
Signed-off-by: Hui Tang <tanghui20(a)huawei.com>
Reviewed-by: Zhang Qiao <zhangqiao22(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/sched/fair.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index bcc72537b6fa..a34ca843bf0a 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -10878,7 +10878,7 @@ void free_fair_sched_group(struct task_group *tg)
for_each_possible_cpu(i) {
#ifdef CONFIG_QOS_SCHED
- if (tg->cfs_rq)
+ if (tg->cfs_rq && tg->cfs_rq[i])
unthrottle_qos_sched_group(tg->cfs_rq[i]);
#endif
if (tg->cfs_rq)
--
2.25.1
1
1
Backport BPF CO-RE support patches for openEuler-22.09
Alan Maguire (5):
libbpf: bpf__find_by_name[_kind] should use btf__get_nr_types()
libbpf: BTF dumper support for typed data
libbpf: Clarify/fix unaligned data issues for btf typed dump
libbpf: Avoid use of __int128 in typed dump display
libbpf: Propagate errors when retrieving enum value for typed data
display
Alexei Starovoitov (47):
bpf: Optimize program stats
bpf: Run sleepable programs with migration disabled
bpf: Compute program stats for sleepable programs
bpf: Add per-program recursion prevention mechanism
selftest/bpf: Add a recursion test
bpf: Count the number of times recursion was prevented
selftests/bpf: Improve recursion selftest
bpf: Allows per-cpu maps and map-in-map in sleepable programs
selftests/bpf: Add a test for map-in-map and per-cpu maps in sleepable
progs
bpf: Clear per_cpu pointers during bpf_prog_realloc
bpf: Dont allow vmlinux BTF to be used in map_create and prog_load.
libbpf: Remove unused field.
bpf: Introduce bpf_sys_bpf() helper and program type.
bpf: Introduce bpfptr_t user/kernel pointer.
bpf: Prepare bpf syscall to be used from kernel and user space.
libbpf: Support for syscall program type
bpf: Make btf_load command to be bpfptr_t compatible.
bpf: Introduce fd_idx
bpf: Add bpf_btf_find_by_name_kind() helper.
bpf: Add bpf_sys_close() helper.
libbpf: Change the order of data and text relocations.
libbpf: Add bpf_object pointer to kernel_supports().
libbpf: Preliminary support for fd_idx
libbpf: Generate loader program out of BPF ELF file.
libbpf: Cleanup temp FDs when intermediate sys_bpf fails.
libbpf: Introduce bpf_map__initial_value().
bpftool: Use syscall/loader program in "prog load" and "gen skeleton"
command.
bpf: Add cmd alias BPF_PROG_RUN
bpf: Prepare bpf_prog_put() to be called from irq context.
bpf: Factor out bpf_spin_lock into helpers.
libbpf: Cleanup the layering between CORE and bpf_program.
libbpf: Split bpf_core_apply_relo() into bpf_program independent
helper.
libbpf: Move CO-RE types into relo_core.h.
libbpf: Split CO-RE logic into relo_core.c.
libbpf: Make gen_loader data aligned.
libbpf: Replace btf__type_by_id() with btf_type_by_id().
bpf: Rename btf_member accessors.
bpf: Prepare relo_core.c for kernel duty.
bpf: Define enum bpf_core_relo_kind as uapi.
bpf: Pass a set of bpf_core_relo-s to prog_load command.
bpf: Add bpf_core_add_cands() and wire it into
bpf_core_apply_relo_insn().
libbpf: Use CO-RE in the kernel in light skeleton.
libbpf: Support init of inner maps in light skeleton.
libbpf: Clean gen_loader's attach kind.
libbpf: Reduce bpf_core_apply_relo_insn() stack usage.
bpf: Silence purge_cand_cache build warning.
libbpf: Fix gen_loader assumption on number of programs.
Andrei Matei (1):
libbpf: Fail early when loading programs with unspecified type
Andrew Delgadillo (1):
selftests/bpf: Drop the need for LLVM's llc
Andrii Nakryiko (149):
libbpf: Factor out common operations in BTF writing APIs
selftest/bpf: Relax btf_dedup test checks
libbpf: Unify and speed up BTF string deduplication
libbpf: Implement basic split BTF support
selftests/bpf: Add split BTF basic test
selftests/bpf: Add checking of raw type dump in BTF writer APIs
selftests
libbpf: Support BTF dedup of split BTFs
libbpf: Accomodate DWARF/compiler bug with duplicated identical arrays
selftests/bpf: Add split BTF dedup selftests
tools/bpftool: Add bpftool support for split BTF
bpf: Add in-kernel split BTF support
bpf: Assign ID to vmlinux BTF and return extra info for BTF in
GET_OBJ_INFO
kbuild: Build kernel module BTFs if BTF is enabled and pahole supports
it
bpf: Load and verify kernel module BTFs
tools/bpftool: Add support for in-kernel and named BTF in `btf show`
bpf: Compile out btf_parse_module() if module BTF is not enabled
bpf: Sanitize BTF data pointer after module is loaded
tools/bpftool: Emit name <anon> for anonymous BTFs
libbpf: Add base BTF accessor
tools/bpftool: Auto-detect split BTFs in common cases
bpf: Keep module's btf_data_size intact after load
libbpf: Add internal helper to load BTF data by FD
libbpf: Refactor CO-RE relocs to not assume a single BTF object
libbpf: Add kernel module BTF support for CO-RE relocations
selftests/bpf: Add bpf_testmod kernel module for testing
selftests/bpf: Add support for marking sub-tests as skipped
selftests/bpf: Add CO-RE relocs selftest relying on kernel module BTF
bpf: Remove hard-coded btf_vmlinux assumption from BPF verifier
bpf: Allow to specify kernel module BTFs when attaching BPF programs
libbpf: Factor out low-level BPF program loading helper
libbpf: Support attachment of BPF tracing programs to kernel modules
selftests/bpf: Add tp_btf CO-RE reloc test for modules
selftests/bpf: Add fentry/fexit/fmod_ret selftest for kernel module
kbuild: Skip module BTF generation for out-of-tree external modules
selftests/bpf: fix bpf_testmod.ko recompilation logic
libbpf: Support modules in bpf_program__set_attach_target() API
selftests/bpf: Work-around EBUSY errors from hashmap update/delete
bpf: Allow empty module BTFs
libbpf: Add user-space variants of BPF_CORE_READ() family of macros
libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family
selftests/bpf: Add tests for user- and non-CO-RE BPF_CORE_READ()
variants
libbpf: Clarify kernel type use with USER variants of CORE reading
macros
selftests/bpf: Sync RCU before unloading bpf_testmod
bpf: Support BPF ksym variables in kernel modules
libbpf: Support kernel module ksym externs
selftests/bpf: Test kernel module ksym externs
selftests/bpf: Don't exit on failed bpf_testmod unload
libbpf: Stop using feature-detection Makefiles
libbpf: provide NULL and KERNEL_VERSION macros in bpf_helpers.h
libbpf: Expose btf_type_by_id() internally
libbpf: Generalize BTF and BTF.ext type ID and strings iteration
libbpf: Rename internal memory-management helpers
libbpf: Extract internal set-of-strings datastructure APIs
libbpf: Add generic BTF type shallow copy API
libbpf: Add BPF static linker APIs
libbpf: Add BPF static linker BTF and BTF.ext support
bpftool: Add ability to specify custom skeleton object name
bpftool: Add `gen object` command to perform BPF static linking
selftests/bpf: Pass all BPF .o's through BPF static linker
selftests/bpf: Add multi-file statically linked BPF object file test
libbpf: Skip BTF fixup if object file has no BTF
libbpf: Constify few bpf_program getters
libbpf: Preserve empty DATASEC BTFs during static linking
libbpf: Fix memory leak when emitting final btf_ext
libbpf: Add bpf_map__inner_map API
libbpf: Suppress compiler warning when using SEC() macro with externs
libbpf: Mark BPF subprogs with hidden visibility as static for BPF
verifier
libbpf: Allow gaps in BPF program sections to support overriden weak
functions
libbpf: Refactor BTF map definition parsing
libbpf: Factor out symtab and relos sanity checks
libbpf: Make few internal helpers available outside of libbpf.c
libbpf: Extend sanity checking ELF symbols with externs validation
libbpf: Tighten BTF type ID rewriting with error checking
libbpf: Add linker extern resolution support for functions and global
variables
libbpf: Support extern resolution for BTF-defined maps in .maps
section
libbpf: Support BTF_KIND_FLOAT during type compatibility checks in
CO-RE
bpftool: Strip const/volatile/restrict modifiers from .bss and .data
vars
libbpf: Add per-file linker opts
selftests/bpf: Stop using static variables for passing data to/from
user-space
bpftool: Stop emitting static variables in BPF skeleton
libbpf: Fix ELF symbol visibility update logic
libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions
libbpf: Reject static maps
libbpf: Reject static entry-point BPF programs
libbpf: Add libbpf_set_strict_mode() API to turn on libbpf 1.0
behaviors
libbpf: Streamline error reporting for low-level APIs
libbpf: Streamline error reporting for high-level APIs
bpftool: Set errno on skeleton failures and propagate errors
libbpf: Move few APIs from 0.4 to 0.5 version
libbpf: Refactor header installation portions of Makefile
libbpf: Install skel_internal.h header used from light skeletons
selftests/bpf: Add remaining ASSERT_xxx() variants
libbpf: Fix build with latest gcc/binutils with LTO
libbpf: Make libbpf_version.h non-auto-generated
selftests/bpf: Update selftests to always provide "struct_ops" SEC
libbpf: Ensure BPF prog types are set before relocations
libbpf: Simplify BPF program auto-attach code
libbpf: Minimize explicit iterator of section definition array
libbpf: Use pre-setup sec_def in libbpf_find_attach_btf_id()
selftests/bpf: Stop using relaxed_core_relocs which has no effect
libbpf: Deprecated bpf_object_open_opts.relaxed_core_relocs
libbpf: Allow skipping attach_func_name in
bpf_program__set_attach_target()
libbpf: Schedule open_opts.attach_prog_fd deprecation since v0.7
libbpf: Constify all high-level program attach APIs
selftests/bpf: Turn on libbpf 1.0 mode and fix all IS_ERR checks
selftests/bpf: Switch fexit_bpf2bpf selftest to set_attach_target()
API
libbpf: Add "tc" SEC_DEF which is a better name for "classifier"
libbpf: Add API that copies all BTF types from one BTF object to
another
libbpf: Deprecate btf__finalize_data() and move it into libbpf.c
libbpf: Extract ELF processing state into separate struct
libbpf: Refactor internal sec_def handling to enable pluggability
libbpf: Reduce reliance of attach_fns on sec_def internals
libbpf: Use Elf64-specific types explicitly for dealing with ELF
libbpf: Remove assumptions about uniqueness of .rodata/.data/.bss maps
bpftool: Support multiple .rodata/.data internal maps in skeleton
bpftool: Improve skeleton generation for data maps without DATASEC
type
libbpf: Support multiple .rodata.* and .data.* BPF maps
selftests/bpf: Demonstrate use of custom .rodata/.data sections
libbpf: Simplify look up by name of internal maps
selftests/bpf: Switch to ".bss"/".rodata"/".data" lookups for internal
maps
libbpf: Fix off-by-one bug in bpf_core_apply_relo()
libbpf: Add ability to fetch bpf_program's underlying instructions
libbpf: Deprecate multi-instance bpf_program APIs
libbpf: Deprecate ambiguously-named bpf_program__size() API
libbpf: Detect corrupted ELF symbols section
libbpf: Improve sanity checking during BTF fix up
libbpf: Validate that .BTF and .BTF.ext sections contain data
libbpf: Fix section counting logic
libbpf: Improve ELF relo sanitization
libbpf: Deprecate bpf_program__load() API
libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
selftests/bpf: Pass sanitizer flags to linker through LDFLAGS
libbpf: Free up resources used by inner map definition
selftests/bpf: Fix memory leaks in btf_type_c_dump() helper
selftests/bpf: Free per-cpu values array in bpf_iter selftest
selftests/bpf: Free inner strings index in btf selftest
selftests/bpf: Avoid duplicate btf__parse() call
libbpf: Load global data maps lazily on legacy kernels
libbpf: Fix potential misaligned memory access in btf_ext__new()
libbpf: Don't call libc APIs with NULL pointers
libbpf: Fix glob_syms memory leak in bpf_linker
libbpf: Fix using invalidated memory in bpf_linker
selftests/bpf: Fix possible NULL passed to memcpy() with zero size
selftests/bpf: Prevent misaligned memory access in get_stack_raw_tp
test
selftests/bpf: Fix misaligned memory access in queue_stack_map test
selftests/bpf: Prevent out-of-bounds stack access in test_bpffs
selftests/bpf: Fix misaligned accesses in xdp and xdp_bpf2bpf tests
libbpf: Cleanup struct bpf_core_cand.
libbpf: Fix non-C89 loop variable declaration in gen_loader.c
Arnaldo Carvalho de Melo (1):
libbpf: Provide GELF_ST_VISIBILITY() define for older libelf
Brendan Jackman (15):
tools/resolve_btfids: Fix some error messages
bpf: Fix cold build of test_progs-no_alu32
bpf: Clarify return value of probe str helpers
bpf: x86: Factor out emission of ModR/M for *(reg + off)
bpf: x86: Factor out emission of REX byte
bpf: x86: Factor out a lookup table for some ALU opcodes
bpf: Rename BPF_XADD and prepare to encode other atomics in .imm
bpf: Move BPF_STX reserved field check into BPF_STX verifier code
bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
bpf: Add instructions for atomic_[cmp]xchg
bpf: Pull out a macro for interpreting atomic ALU operations
bpf: Add bitwise atomic instructions
bpf: Add tests for new BPF atomic operations
bpf: Document new atomic instructions
bpf: Rename fixup_bpf_calls and add some comments
Cong Wang (1):
bpf: Clear percpu pointers in bpf_prog_clone_free()
Daniel Xu (1):
libbpf: Do not close un-owned FD 0 on errors
Dave Marchevsky (1):
bpf: Add verified_insns to bpf_prog_info and fdinfo
Dmitrii Banshchikov (7):
bpf: Rename bpf_reg_state variables
bpf: Extract nullable reg type conversion into a helper function
bpf: Support pointers in global func args
selftests/bpf: Add unit tests for pointers in global functions
bpf: Drop imprecise log message
selftests/bpf: Fix a compiler warning in global func test
bpf: Use MAX_BPF_FUNC_REG_ARGS macro
Florent Revest (7):
bpf: Be less specific about socket cookies guarantees
selftests/bpf: Fix the ASSERT_ERR_PTR macro
bpf: Factorize bpf_trace_printk and bpf_seq_printf
bpf: Add a ARG_PTR_TO_CONST_STR argument type
bpf: Add a bpf_snprintf helper
libbpf: Introduce a BPF_SNPRINTF helper macro
libbpf: Move BPF_SEQ_PRINTF and BPF_SNPRINTF to bpf_helpers.h
Florian Lehner (2):
selftests/bpf: Print reason when a tester could not run a program
selftests/bpf: Avoid errno clobbering
Gary Lin (3):
bpf,x64: Pad NOPs to make images converge more easily
test_bpf: Remove EXPECTED_FAIL flag from bpf_fill_maxinsns11
selftests/bpf: Add verifier tests for x64 jit jump padding
Hao Luo (1):
libbpf: Support weak typed ksyms.
Hengqi Chen (8):
libbpf: Fix KERNEL_VERSION macro
tools/resolve_btfids: Emit warnings and patch zero id for missing
symbols
libbpf: Add btf__load_vmlinux_btf/btf__load_module_btf
libbpf: Support uniform BTF-defined key/value specification across all
BPF maps
libbpf: Deprecate bpf_object__unload() API since v0.6
libbpf: Deprecate bpf_{map,program}__{prev,next} APIs since v0.7
selftests/bpf: Switch to new bpf_object__next_{map,program} APIs
libbpf: Support static initialization of BPF_MAP_TYPE_PROG_ARRAY
Ian Rogers (3):
bpf, libbpf: Avoid unused function warning on bpf_tail_call_static
tools/bpftool: Add -Wall when building BPF programs
libbpf: Add NULL check to add_dummy_ksym_var
Ilya Leoshkevich (5):
selftests/bpf: Copy extras in out-of-srctree builds
bpf: Add BTF_KIND_FLOAT to uapi
libbpf: Fix whitespace in btf_add_composite() comment
libbpf: Add BTF_KIND_FLOAT support
bpf: Generate BTF_KIND_FLOAT when linking vmlinux
Jason Wang (1):
libbpf: Fix comment typo
Jean-Philippe Brucker (12):
tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
tools/runqslower: Use Makefile.include
tools/runqslower: Enable out-of-tree build
tools/runqslower: Build bpftool using HOSTCC
tools/bpftool: Fix build slowdown
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
tools/bpftool: Fix cross-build
tools/runqslower: Fix cross-build
Jiri Olsa (3):
tools/resolve_btfids: Warn when having multiple IDs for single type
libbpf: Use string table index from index table if needed
perf build: Move feature cleanup under tools/build
Joe Stringer (1):
tools: Sync uapi bpf.h header with latest changes
Jonathan Edwards (1):
libbpf: Add extra BPF_PROG_TYPE check to bpf_object__probe_loading
Kumar Kartikeya Dwivedi (14):
libbpf: Add various netlink helpers
libbpf: Add low level TC-BPF management API
libbpf: Remove unneeded check for flags during tc detach
libbpf: Set NLM_F_EXCL when creating qdisc
libbpf: Fix segfault in static linker for objects without BTF
libbpf: Fix segfault in light skeleton for objects without BTF
libbpf: Update gen_loader to emit BTF_KIND_FUNC relocations
bpf: Add bpf_kallsyms_lookup_name helper
libbpf: Add typeless ksym support to gen_loader
libbpf: Add weak ksym support to gen_loader
libbpf: Perform map fd cleanup for gen_loader in case of error
bpf: Change bpf_kallsyms_lookup_name size type to
ARG_CONST_SIZE_OR_ZERO
libbpf: Avoid double stores for success/failure case of ksym
relocations
libbpf: Avoid reload of imm for weak, unresolved, repeating ksym
Lorenz Bauer (2):
bpf: Consolidate shared test timing code
bpf: Add PROG_TEST_RUN support for sk_lookup programs
Martin KaFai Lau (9):
bpf: Simplify freeing logic in linfo and jited_linfo
bpf: Refactor btf_check_func_arg_match
bpf: Support bpf program calling kernel function
bpf: Support kernel function call in x86-32
libbpf: Refactor bpf_object__resolve_ksyms_btf_id
libbpf: Refactor codes for finding btf id of a kernel symbol
libbpf: Rename RELO_EXTERN to RELO_EXTERN_VAR
libbpf: Record extern sym relocation first
libbpf: Support extern kernel function
Martynas Pumputis (1):
selftests/bpf: Check inner map deletion
Matt Smith (3):
libbpf: Change bpf_object_skeleton data field to const pointer
bpftool: Provide a helper method for accessing skeleton's embedded ELF
data
selftests/bpf: Add checks for X__elf_bytes() skeleton helper
Mauricio Vásquez (1):
libbpf: Fix memory leak in btf__dedup()
Michal Suchanek (1):
libbpf: Fix pr_warn type warnings on 32bit
Pedro Tammela (2):
libbpf: Avoid inline hint definition from 'linux/stddef.h'
libbpf: Clarify flags in ringbuf helpers
Quentin Monnet (17):
libbpf: Return non-null error on failures in libbpf_find_prog_btf_id()
libbpf: Rename btf__load() as btf__load_into_kernel()
libbpf: Rename btf__get_from_id() as btf__load_from_kernel_by_id()
tools: Free BTF objects at various locations
tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id()
libbpf: Add split BTF support for btf__load_from_kernel_by_id()
tools: bpftool: Support dumping split BTF by id
libbpf: Add LIBBPF_DEPRECATED_SINCE macro for scheduling API
deprecations
libbpf: Skip re-installing headers file if source is older than target
bpftool: Remove unused includes to <bpf/bpf_gen_internal.h>
bpftool: Install libbpf headers instead of including the dir
tools/resolve_btfids: Install libbpf headers when building
tools/runqslower: Install libbpf headers when building
bpf: preload: Install libbpf headers when building
bpf: iterators: Install libbpf headers when building
selftests/bpf: Better clean up for runqslower in test_bpftool_build.sh
bpftool: Add install-bin target to install binary only
Rafael David Tinoco (1):
libbpf: Add bpf object kern_version attribute setter
Sedat Dilek (1):
tools: Factor Clang, LLC and LLVM utils definitions
Shuyi Cheng (2):
libbpf: Introduce 'btf_custom_path' to 'bpf_obj_open_opts'
libbpf: Add "bool skipped" to struct bpf_map
Song Liu (5):
bpf: Use separate lockdep class for each hashtab
bpf: Avoid hashtab deadlock with map_locked
bpftool: Add Makefile target bootstrap
perf build: Support build BPF skeletons with perf
perf stat: Enable counting events for BPF programs
Stanislav Fomichev (2):
libbpf: Cap retries in sys_bpf_prog_load
libbpf: Skip bpf_object__probe_loading for light skeleton
Toke Høiland-Jørgensen (5):
bpf: Return target info when a tracing bpf_link is queried
libbpf: Restore errno return for functions that were already returning
it
libbpf: Don't crash on object files with no symbol tables
libbpf: Ignore STT_SECTION symbols in 'maps' section
libbpf: Properly ignore STT_SECTION symbols in legacy map definitions
Wang Hai (1):
libbpf: Simplify the return expression of bpf_object__init_maps
function
Wang Qing (1):
bpf, btf: Remove the duplicate btf_ids.h include
Wedson Almeida Filho (1):
bpf: Refactor check_cfg to use a structured loop.
Yauheni Kaliuta (7):
selftests/bpf: test_progs/sockopt_sk: Remove version
selftests/bpf: test_progs/sockopt_sk: Convert to use BPF skeleton
selftests/bpf: Pass page size from userspace in sockopt_sk
selftests/bpf: Pass page size from userspace in map_ptr
selftests/bpf: mmap: Use runtime page size
selftests/bpf: ringbuf: Use runtime page size
selftests/bpf: ringbuf_multi: Use runtime page size
Yonghong Song (27):
bpf: Permit cond_resched for some iterators
bpf: Permit size-0 datasec
bpf: Refactor BPF_PSEUDO_CALL checking as a helper function
bpf: Factor out visit_func_call_insn() in check_cfg()
bpf: Factor out verbose_invalid_scalar()
bpf: Refactor check_func_call() to allow callback function
bpf: Change return value of verifier function add_subprog()
bpf: Add bpf_for_each_map_elem() helper
libbpf: Move function is_ldimm64() earlier in libbpf.c
libbpf: Support subprog address relocation
selftests/bpf: Fix test_cpp compilation failure with clang
bpftool: Fix a clang compilation warning
libbpf: Add support for new llvm bpf relocations
bpf: Emit better log message if bpf_iter ctx arg btf_id == 0
btf: Change BTF_KIND_* macros to enums
bpf: Support for new btf kind BTF_KIND_TAG
libbpf: Rename btf_{hash,equal}_int to btf_{hash,equal}_int_tag
libbpf: Add support for BTF_KIND_TAG
bpftool: Add support for BTF_KIND_TAG
bpf: Add BTF_KIND_DECL_TAG typedef support
docs/bpf: Update documentation for BTF_KIND_DECL_TAG typedef support
bpf: Rename BTF_KIND_TAG to BTF_KIND_DECL_TAG
bpf: Support BTF_KIND_TYPE_TAG for btf_type_tag attributes
libbpf: Support BTF_KIND_TYPE_TAG
bpftool: Support BTF_KIND_TYPE_TAG
docs/bpf: Update documentation for BTF_KIND_TYPE_TAG support
libbpf: Fix a couple of missed btf_type_tag handling in btf.c
Documentation/ABI/testing/sysfs-kernel-btf | 8 +
Documentation/bpf/btf.rst | 40 +-
Documentation/networking/filter.rst | 61 +-
arch/arm/net/bpf_jit_32.c | 7 +-
arch/arm64/net/bpf_jit_comp.c | 16 +-
arch/mips/net/ebpf_jit.c | 11 +-
arch/powerpc/net/bpf_jit_comp64.c | 25 +-
arch/riscv/net/bpf_jit_comp32.c | 20 +-
arch/riscv/net/bpf_jit_comp64.c | 16 +-
arch/s390/net/bpf_jit_comp.c | 27 +-
arch/sparc/net/bpf_jit_comp_64.c | 17 +-
arch/x86/net/bpf_jit_comp.c | 408 +-
arch/x86/net/bpf_jit_comp32.c | 204 +-
drivers/net/ethernet/netronome/nfp/bpf/fw.h | 4 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c | 14 +-
drivers/net/ethernet/netronome/nfp/bpf/main.h | 4 +-
.../net/ethernet/netronome/nfp/bpf/verifier.c | 15 +-
include/linux/bpf.h | 150 +-
include/linux/bpf_types.h | 2 +
include/linux/bpf_verifier.h | 46 +-
include/linux/bpfptr.h | 75 +
include/linux/btf.h | 106 +-
include/linux/filter.h | 45 +-
include/linux/module.h | 4 +
include/uapi/linux/bpf.h | 265 +-
include/uapi/linux/btf.h | 57 +-
kernel/bpf/Makefile | 4 +
kernel/bpf/bpf_iter.c | 43 +-
kernel/bpf/bpf_struct_ops.c | 6 +-
kernel/bpf/btf.c | 1403 ++++-
kernel/bpf/core.c | 153 +-
kernel/bpf/disasm.c | 56 +-
kernel/bpf/hashtab.c | 130 +-
kernel/bpf/helpers.c | 326 +-
kernel/bpf/preload/Makefile | 25 +-
kernel/bpf/preload/iterators/Makefile | 38 +-
kernel/bpf/preload/iterators/iterators.bpf.c | 1 -
kernel/bpf/syscall.c | 363 +-
kernel/bpf/sysfs_btf.c | 2 +-
kernel/bpf/task_iter.c | 2 +
kernel/bpf/trampoline.c | 77 +-
kernel/bpf/verifier.c | 1508 ++++-
kernel/module.c | 36 +
kernel/trace/bpf_trace.c | 375 +-
lib/Kconfig.debug | 9 +
lib/test_bpf.c | 21 +-
net/bpf/test_run.c | 290 +-
net/core/filter.c | 1 +
net/ipv4/bpf_tcp_ca.c | 7 +-
samples/bpf/bpf_insn.h | 4 +-
samples/bpf/cookie_uid_helper_example.c | 8 +-
samples/bpf/sock_example.c | 2 +-
samples/bpf/test_cgrp2_attach.c | 5 +-
samples/bpf/xdp1_user.c | 2 +-
samples/bpf/xdp_sample_pkts_user.c | 2 +-
scripts/Makefile.modfinal | 25 +-
scripts/link-vmlinux.sh | 7 +-
.../bpf/bpftool/Documentation/bpftool-gen.rst | 78 +-
tools/bpf/bpftool/Makefile | 55 +-
tools/bpf/bpftool/bash-completion/bpftool | 17 +-
tools/bpf/bpftool/btf.c | 80 +-
tools/bpf/bpftool/btf_dumper.c | 6 +-
tools/bpf/bpftool/gen.c | 651 +-
tools/bpf/bpftool/iter.c | 2 +-
tools/bpf/bpftool/main.c | 20 +-
tools/bpf/bpftool/main.h | 2 +
tools/bpf/bpftool/map.c | 14 +-
tools/bpf/bpftool/net.c | 2 +-
tools/bpf/bpftool/prog.c | 141 +-
tools/bpf/bpftool/xlated_dumper.c | 3 +
tools/bpf/resolve_btfids/Makefile | 19 +-
tools/bpf/resolve_btfids/main.c | 38 +-
tools/bpf/runqslower/Makefile | 71 +-
tools/build/Makefile | 8 +-
tools/build/Makefile.feature | 4 +-
tools/build/feature/Makefile | 4 +-
tools/include/linux/filter.h | 24 +-
tools/include/uapi/linux/bpf.h | 977 ++-
tools/include/uapi/linux/btf.h | 57 +-
tools/lib/bpf/.gitignore | 2 -
tools/lib/bpf/Build | 2 +-
tools/lib/bpf/Makefile | 104 +-
tools/lib/bpf/bpf.c | 272 +-
tools/lib/bpf/bpf.h | 1 +
tools/lib/bpf/bpf_core_read.h | 169 +-
tools/lib/bpf/bpf_gen_internal.h | 65 +
tools/lib/bpf/bpf_helpers.h | 108 +-
tools/lib/bpf/bpf_prog_linfo.c | 18 +-
tools/lib/bpf/bpf_tracing.h | 44 +-
tools/lib/bpf/btf.c | 2085 ++++---
tools/lib/bpf/btf.h | 99 +-
tools/lib/bpf/btf_dump.c | 910 ++-
tools/lib/bpf/gen_loader.c | 1126 ++++
tools/lib/bpf/libbpf.c | 5436 +++++++++--------
tools/lib/bpf/libbpf.h | 212 +-
tools/lib/bpf/libbpf.map | 54 +
tools/lib/bpf/libbpf_common.h | 26 +-
tools/lib/bpf/libbpf_errno.c | 7 +-
tools/lib/bpf/libbpf_internal.h | 299 +-
tools/lib/bpf/libbpf_legacy.h | 60 +
tools/lib/bpf/libbpf_version.h | 9 +
tools/lib/bpf/linker.c | 2901 +++++++++
tools/lib/bpf/netlink.c | 593 +-
tools/lib/bpf/nlattr.h | 48 +
tools/lib/bpf/relo_core.c | 1322 ++++
tools/lib/bpf/relo_core.h | 57 +
tools/lib/bpf/ringbuf.c | 26 +-
tools/lib/bpf/skel_internal.h | 123 +
tools/lib/bpf/strset.c | 176 +
tools/lib/bpf/strset.h | 21 +
tools/lib/bpf/xsk.c | 4 +-
tools/perf/Documentation/perf-stat.txt | 18 +
tools/perf/Makefile.config | 9 +
tools/perf/Makefile.perf | 58 +-
tools/perf/builtin-stat.c | 82 +-
tools/perf/util/Build | 1 +
tools/perf/util/bpf-event.c | 11 +-
tools/perf/util/bpf_counter.c | 320 +
tools/perf/util/bpf_counter.h | 72 +
tools/perf/util/bpf_skel/.gitignore | 3 +
.../util/bpf_skel/bpf_prog_profiler.bpf.c | 93 +
tools/perf/util/evsel.c | 5 +
tools/perf/util/evsel.h | 5 +
tools/perf/util/python.c | 21 +
tools/perf/util/stat-display.c | 4 +-
tools/perf/util/stat.c | 2 +-
tools/perf/util/target.c | 34 +-
tools/perf/util/target.h | 10 +
tools/scripts/Makefile.include | 18 +
tools/testing/selftests/bpf/.gitignore | 1 +
tools/testing/selftests/bpf/Makefile | 183 +-
tools/testing/selftests/bpf/bench.c | 1 +
.../selftests/bpf/benchs/bench_rename.c | 2 +-
.../selftests/bpf/benchs/bench_ringbufs.c | 6 +-
.../selftests/bpf/benchs/bench_trigger.c | 2 +-
.../selftests/bpf/bpf_testmod/.gitignore | 6 +
.../selftests/bpf/bpf_testmod/Makefile | 20 +
.../bpf/bpf_testmod/bpf_testmod-events.h | 36 +
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 55 +
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 14 +
tools/testing/selftests/bpf/btf_helpers.c | 264 +
tools/testing/selftests/bpf/btf_helpers.h | 19 +
.../selftests/bpf/prog_tests/atomics.c | 246 +
.../selftests/bpf/prog_tests/attach_probe.c | 12 +-
.../selftests/bpf/prog_tests/bpf_iter.c | 34 +-
.../selftests/bpf/prog_tests/bpf_tcp_ca.c | 8 +-
tools/testing/selftests/bpf/prog_tests/btf.c | 166 +-
.../bpf/prog_tests/btf_dedup_split.c | 325 +
.../selftests/bpf/prog_tests/btf_dump.c | 10 +-
.../selftests/bpf/prog_tests/btf_endian.c | 4 +-
.../selftests/bpf/prog_tests/btf_map_in_map.c | 33 -
.../selftests/bpf/prog_tests/btf_split.c | 99 +
.../selftests/bpf/prog_tests/btf_write.c | 47 +-
.../bpf/prog_tests/cg_storage_multi.c | 84 +-
.../bpf/prog_tests/cgroup_attach_multi.c | 6 +-
.../selftests/bpf/prog_tests/cgroup_link.c | 16 +-
.../bpf/prog_tests/cgroup_skb_sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/core_autosize.c | 2 +-
.../bpf/prog_tests/core_read_macros.c | 64 +
.../selftests/bpf/prog_tests/core_reloc.c | 105 +-
.../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 68 +-
.../selftests/bpf/prog_tests/fexit_stress.c | 4 +-
.../selftests/bpf/prog_tests/flow_dissector.c | 2 +-
.../bpf/prog_tests/flow_dissector_reattach.c | 10 +-
.../bpf/prog_tests/get_stack_raw_tp.c | 24 +-
.../prog_tests/get_stackid_cannot_attach.c | 9 +-
.../selftests/bpf/prog_tests/global_data.c | 11 +-
.../bpf/prog_tests/global_data_init.c | 2 +-
.../bpf/prog_tests/global_func_args.c | 60 +
.../selftests/bpf/prog_tests/hashmap.c | 9 +-
.../selftests/bpf/prog_tests/kfree_skb.c | 23 +-
.../selftests/bpf/prog_tests/ksyms_btf.c | 34 +-
.../selftests/bpf/prog_tests/ksyms_module.c | 31 +
.../selftests/bpf/prog_tests/link_pinning.c | 7 +-
.../selftests/bpf/prog_tests/map_ptr.c | 15 +-
tools/testing/selftests/bpf/prog_tests/mmap.c | 24 +-
.../selftests/bpf/prog_tests/module_attach.c | 53 +
.../selftests/bpf/prog_tests/obj_name.c | 8 +-
.../selftests/bpf/prog_tests/perf_branches.c | 4 +-
.../selftests/bpf/prog_tests/perf_buffer.c | 2 +-
.../bpf/prog_tests/perf_event_stackmap.c | 3 +-
.../selftests/bpf/prog_tests/probe_user.c | 7 +-
.../selftests/bpf/prog_tests/prog_run_xattr.c | 2 +-
.../bpf/prog_tests/queue_stack_map.c | 12 +-
.../bpf/prog_tests/raw_tp_test_run.c | 4 +-
.../selftests/bpf/prog_tests/rdonly_maps.c | 9 +-
.../selftests/bpf/prog_tests/recursion.c | 41 +
.../bpf/prog_tests/reference_tracking.c | 2 +-
.../selftests/bpf/prog_tests/resolve_btfids.c | 9 +-
.../selftests/bpf/prog_tests/ringbuf.c | 17 +-
.../selftests/bpf/prog_tests/ringbuf_multi.c | 23 +-
.../bpf/prog_tests/select_reuseport.c | 55 +-
.../selftests/bpf/prog_tests/send_signal.c | 5 +-
.../selftests/bpf/prog_tests/sk_lookup.c | 2 +-
.../selftests/bpf/prog_tests/skeleton.c | 41 +-
.../selftests/bpf/prog_tests/snprintf_btf.c | 4 +-
.../selftests/bpf/prog_tests/sock_fields.c | 14 +-
.../selftests/bpf/prog_tests/sockmap_basic.c | 6 +-
.../selftests/bpf/prog_tests/sockmap_ktls.c | 2 +-
.../selftests/bpf/prog_tests/sockmap_listen.c | 10 +-
.../selftests/bpf/prog_tests/sockopt_sk.c | 66 +-
.../bpf/prog_tests/stacktrace_build_id_nmi.c | 3 +-
.../selftests/bpf/prog_tests/stacktrace_map.c | 2 +-
.../bpf/prog_tests/stacktrace_map_raw_tp.c | 5 +-
.../selftests/bpf/prog_tests/static_linked.c | 35 +
.../bpf/prog_tests/tcp_hdr_options.c | 15 +-
.../selftests/bpf/prog_tests/tcp_rtt.c | 2 +-
.../selftests/bpf/prog_tests/test_bpffs.c | 4 +-
.../bpf/prog_tests/test_global_funcs.c | 8 +
.../selftests/bpf/prog_tests/test_overhead.c | 12 +-
.../bpf/prog_tests/trampoline_count.c | 18 +-
.../selftests/bpf/prog_tests/udp_limit.c | 7 +-
tools/testing/selftests/bpf/prog_tests/xdp.c | 11 +-
.../selftests/bpf/prog_tests/xdp_bpf2bpf.c | 8 +-
.../selftests/bpf/prog_tests/xdp_link.c | 8 +-
tools/testing/selftests/bpf/progs/atomics.c | 154 +
tools/testing/selftests/bpf/progs/bpf_cubic.c | 6 +-
.../bpf/progs/bpf_iter_bpf_hash_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_bpf_map.c | 1 -
.../selftests/bpf/progs/bpf_iter_ipv6_route.c | 1 -
.../selftests/bpf/progs/bpf_iter_netlink.c | 1 -
.../selftests/bpf/progs/bpf_iter_task.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_btf.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_file.c | 1 -
.../selftests/bpf/progs/bpf_iter_task_stack.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_tcp6.c | 1 -
.../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +-
.../selftests/bpf/progs/bpf_iter_udp4.c | 1 -
.../selftests/bpf/progs/bpf_iter_udp6.c | 1 -
.../selftests/bpf/progs/core_reloc_types.h | 17 +
tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +-
tools/testing/selftests/bpf/progs/lsm.c | 69 +
.../selftests/bpf/progs/map_ptr_kern.c | 4 +-
tools/testing/selftests/bpf/progs/recursion.c | 46 +
.../testing/selftests/bpf/progs/sockopt_sk.c | 11 +-
tools/testing/selftests/bpf/progs/tailcall3.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall4.c | 2 +-
tools/testing/selftests/bpf/progs/tailcall5.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +-
.../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +-
.../selftests/bpf/progs/test_cls_redirect.c | 4 +-
.../bpf/progs/test_core_read_macros.c | 50 +
.../bpf/progs/test_core_reloc_module.c | 96 +
.../selftests/bpf/progs/test_global_func10.c | 29 +
.../selftests/bpf/progs/test_global_func11.c | 19 +
.../selftests/bpf/progs/test_global_func12.c | 21 +
.../selftests/bpf/progs/test_global_func13.c | 24 +
.../selftests/bpf/progs/test_global_func14.c | 21 +
.../selftests/bpf/progs/test_global_func15.c | 22 +
.../selftests/bpf/progs/test_global_func16.c | 22 +
.../selftests/bpf/progs/test_global_func9.c | 132 +
.../bpf/progs/test_global_func_args.c | 91 +
.../selftests/bpf/progs/test_ksyms_module.c | 26 +
.../selftests/bpf/progs/test_ksyms_weak.c | 56 +
.../bpf/progs/test_map_in_map_invalid.c | 26 +
tools/testing/selftests/bpf/progs/test_mmap.c | 2 -
.../selftests/bpf/progs/test_module_attach.c | 66 +
.../selftests/bpf/progs/test_rdonly_maps.c | 6 +-
.../selftests/bpf/progs/test_ringbuf.c | 1 -
.../selftests/bpf/progs/test_ringbuf_multi.c | 1 -
.../selftests/bpf/progs/test_skeleton.c | 20 +-
.../selftests/bpf/progs/test_sockmap_listen.c | 2 +-
.../selftests/bpf/progs/test_static_linked1.c | 30 +
.../selftests/bpf/progs/test_static_linked2.c | 31 +
.../selftests/bpf/progs/test_subprogs.c | 13 +
.../selftests/bpf/test_bpftool_build.sh | 4 +
tools/testing/selftests/bpf/test_btf.h | 3 +
.../selftests/bpf/test_cgroup_storage.c | 2 +-
tools/testing/selftests/bpf/test_maps.c | 279 +-
tools/testing/selftests/bpf/test_progs.c | 79 +-
tools/testing/selftests/bpf/test_progs.h | 72 +-
.../selftests/bpf/test_tcpnotify_user.c | 7 +-
tools/testing/selftests/bpf/test_verifier.c | 103 +-
.../selftests/bpf/verifier/atomic_and.c | 77 +
.../selftests/bpf/verifier/atomic_cmpxchg.c | 96 +
.../selftests/bpf/verifier/atomic_fetch_add.c | 106 +
.../selftests/bpf/verifier/atomic_or.c | 77 +
.../selftests/bpf/verifier/atomic_xchg.c | 46 +
.../selftests/bpf/verifier/atomic_xor.c | 77 +
tools/testing/selftests/bpf/verifier/calls.c | 12 +-
tools/testing/selftests/bpf/verifier/ctx.c | 7 +-
.../selftests/bpf/verifier/dead_code.c | 10 +-
.../bpf/verifier/direct_packet_access.c | 4 +-
tools/testing/selftests/bpf/verifier/jit.c | 24 +
.../testing/selftests/bpf/verifier/leak_ptr.c | 10 +-
.../selftests/bpf/verifier/meta_access.c | 4 +-
tools/testing/selftests/bpf/verifier/unpriv.c | 3 +-
.../bpf/verifier/value_illegal_alu.c | 2 +-
tools/testing/selftests/bpf/verifier/xadd.c | 18 +-
tools/testing/selftests/bpf/xdping.c | 2 +-
tools/testing/selftests/tc-testing/Makefile | 3 +-
292 files changed, 24645 insertions(+), 6370 deletions(-)
create mode 100644 include/linux/bpfptr.h
create mode 100644 tools/lib/bpf/bpf_gen_internal.h
create mode 100644 tools/lib/bpf/gen_loader.c
create mode 100644 tools/lib/bpf/libbpf_legacy.h
create mode 100644 tools/lib/bpf/libbpf_version.h
create mode 100644 tools/lib/bpf/linker.c
create mode 100644 tools/lib/bpf/relo_core.c
create mode 100644 tools/lib/bpf/relo_core.h
create mode 100644 tools/lib/bpf/skel_internal.h
create mode 100644 tools/lib/bpf/strset.c
create mode 100644 tools/lib/bpf/strset.h
create mode 100644 tools/perf/util/bpf_counter.c
create mode 100644 tools/perf/util/bpf_counter.h
create mode 100644 tools/perf/util/bpf_skel/.gitignore
create mode 100644 tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/.gitignore
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/Makefile
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod-events.h
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c
create mode 100644 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.h
create mode 100644 tools/testing/selftests/bpf/btf_helpers.c
create mode 100644 tools/testing/selftests/bpf/btf_helpers.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/atomics.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_dedup_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_split.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/global_func_args.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/module_attach.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/recursion.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/static_linked.c
create mode 100644 tools/testing/selftests/bpf/progs/atomics.c
create mode 100644 tools/testing/selftests/bpf/progs/recursion.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_reloc_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func10.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func11.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func12.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func13.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func14.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func15.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func16.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func9.c
create mode 100644 tools/testing/selftests/bpf/progs/test_global_func_args.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_weak.c
create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c
create mode 100644 tools/testing/selftests/bpf/progs/test_module_attach.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked1.c
create mode 100644 tools/testing/selftests/bpf/progs/test_static_linked2.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_and.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_cmpxchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_fetch_add.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_or.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xor.c
--
2.20.1
1
379

12 Aug '22
From: Xu Kuohai <xukuohai(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5M05G
CVE: NA
-------------------------------------------------------
BMC is an in-kernel key-value cache implemented in BPF and proposed by
paper [1]. The paper discussed BMC for memcached, obtaining at least
6x performance speedup.
This patch implements a sample BMC for Redis. Paper [1] implements BMC
in XDP, bypassing the kernel network stack totally. Since Redis is based
on TCP protocol, and it's almost impossible to fully process TCP traffic
in XDP, so this patch implements BMC in sockmap, which locates at the
top of kernel network stack. Since kernel network stack is not bypassed,
the speedup is not significant. Any way, this is only a sample
implementation, and performance improvements can be continuously
optimized.
See [2] for details on how to build samples/bpf.
Output files:
samples/bpf/bmctool
samples/bpf/bmc/bpf.o
Sample usage:
bmctool prog load -p 6379 ./bmc/bpf.o # load bmc bpf prog and attach it
# to sockets with listen port 6379
bmctool stat # dump bmc status
bmctool prog unload # detach and unload bmc prog
[1] https://www.usenix.org/conference/nsdi21/presentation/ghigoff
[2] https://www.kernel.org/doc/readme/samples-bpf-README.rst
Signed-off-by: Xu Kuohai <xukuohai(a)huawei.com>
Reviewed-by: Yang Jihong <yangjihong1(a)huawei.com>
---
samples/bpf/Makefile | 3 +
samples/bpf/bmc/bpf.c | 144 ++++++++
samples/bpf/bmc/common.h | 21 ++
samples/bpf/bmc/redis.h | 648 ++++++++++++++++++++++++++++++++++
samples/bpf/bmc/tool.c | 733 +++++++++++++++++++++++++++++++++++++++
5 files changed, 1549 insertions(+)
create mode 100644 samples/bpf/bmc/bpf.c
create mode 100644 samples/bpf/bmc/common.h
create mode 100644 samples/bpf/bmc/redis.h
create mode 100644 samples/bpf/bmc/tool.c
diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile
index aeebf5d12f32..f9bb6bdad6ce 100644
--- a/samples/bpf/Makefile
+++ b/samples/bpf/Makefile
@@ -54,6 +54,7 @@ tprogs-y += task_fd_query
tprogs-y += xdp_sample_pkts
tprogs-y += ibumad
tprogs-y += hbm
+tprogs-y += bmctool
# Libbpf dependencies
LIBBPF = $(TOOLS_PATH)/lib/bpf/libbpf.a
@@ -111,6 +112,7 @@ task_fd_query-objs := bpf_load.o task_fd_query_user.o $(TRACE_HELPERS)
xdp_sample_pkts-objs := xdp_sample_pkts_user.o $(TRACE_HELPERS)
ibumad-objs := bpf_load.o ibumad_user.o $(TRACE_HELPERS)
hbm-objs := bpf_load.o hbm.o $(CGROUP_HELPERS)
+bmctool-objs := bmc/tool.o
# Tell kbuild to always build the programs
always-y := $(tprogs-y)
@@ -172,6 +174,7 @@ always-y += ibumad_kern.o
always-y += hbm_out_kern.o
always-y += hbm_edt_kern.o
always-y += xdpsock_kern.o
+always-y += bmc/bpf.o
ifeq ($(ARCH), arm)
# Strip all except -D__LINUX_ARM_ARCH__ option needed to handle linux
diff --git a/samples/bpf/bmc/bpf.c b/samples/bpf/bmc/bpf.c
new file mode 100644
index 000000000000..127260c611f8
--- /dev/null
+++ b/samples/bpf/bmc/bpf.c
@@ -0,0 +1,144 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ *
+ * Description: BPF program to accelerate Redis. The idea is to add a kernel
+ * cache for Redis data. When new Redis request is received, the kernel cache
+ * is checked, and if the requested data is found in the cache, a Redis reply
+ * message is constructed and sent back directly.
+ */
+
+#include <uapi/linux/in.h>
+#include <uapi/linux/if_ether.h>
+#include <uapi/linux/ip.h>
+#include <uapi/linux/tcp.h>
+#include <uapi/linux/bpf.h>
+#include <uapi/linux/pkt_cls.h>
+
+#include <bpf/bpf_helpers.h>
+
+#define debug(fmt, ...) \
+do { \
+ char ___fmt[] = fmt; \
+ bpf_trace_printk(___fmt, sizeof(___fmt), ##__VA_ARGS__); \
+} while (0)
+
+struct tcp_key {
+ __u32 family;
+ __be32 local_ip4;
+ __be32 remote_ip4;
+ __be32 local_port;
+ __be32 remote_port;
+};
+
+struct {
+ __uint(type, BPF_MAP_TYPE_SOCKHASH);
+ __uint(key_size, sizeof(struct tcp_key));
+ __uint(value_size, sizeof(u64));
+ __uint(max_entries, 1024);
+} bmc_socks SEC(".maps");
+
+struct {
+ __uint(type, BPF_MAP_TYPE_HASH);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(u32));
+ __uint(max_entries, 16);
+} bmc_ports SEC(".maps");
+
+SEC("bmc/sock_parser")
+int sock_parser(struct __sk_buff *skb)
+{
+ return skb->len;
+}
+
+static void init_tcp_key(struct tcp_key *key, struct bpf_sock *sk)
+{
+ if (sk != NULL) {
+ key->family = sk->family;
+ key->local_ip4 = sk->src_ip4;
+ key->remote_ip4 = sk->dst_ip4;
+ key->local_port = htonl(sk->src_port);
+ key->remote_port = htonl((u32)ntohs(sk->dst_port));
+ }
+}
+
+static int sock_redirect(struct __sk_buff *skb)
+{
+ struct tcp_key key;
+ struct bpf_sock *sk;
+
+ sk = skb->sk;
+ if (sk == NULL)
+ return SK_PASS;
+
+ init_tcp_key(&key, sk);
+ return bpf_sk_redirect_hash(skb, &bmc_socks, &key, 0);
+}
+
+#include "redis.h"
+
+SEC("bmc/sock_verdict")
+int sock_verdict(struct __sk_buff *skb)
+{
+ return bmc_process(skb);
+}
+
+static bool is_bmc_port(u32 port)
+{
+ u32 *val = bpf_map_lookup_elem(&bmc_ports, &port);
+
+ return val != NULL && *val != 0;
+}
+
+static void add_bmc_sock(struct bpf_sock_ops *skops, struct bpf_sock *sk)
+{
+ struct tcp_key key;
+
+ init_tcp_key(&key, sk);
+ bpf_sock_hash_update(skops, &bmc_socks, &key, BPF_ANY);
+}
+
+static void delete_bmc_sock(struct bpf_sock_ops *skops, struct bpf_sock *sk)
+{
+ struct tcp_key key;
+
+ init_tcp_key(&key, sk);
+ bpf_map_delete_elem(&bmc_socks, &key);
+}
+
+SEC("bmc/sock_ops")
+int sock_ops(struct bpf_sock_ops *skops)
+{
+ int op;
+ u16 local_port;
+ struct tcp_key key;
+ struct bpf_sock *sk;
+
+ sk = skops->sk;
+ if (skops->family != AF_INET || sk == NULL)
+ return 0;
+
+ local_port = ntohs((u16)sk->src_port);
+
+ switch ((int)skops->op) {
+ case BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB:
+ case BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB:
+ if (is_bmc_port(local_port)) {
+ bpf_sock_ops_cb_flags_set(skops, BPF_SOCK_OPS_STATE_CB_FLAG);
+ add_bmc_sock(skops, sk);
+ }
+ break;
+
+ case BPF_SOCK_OPS_STATE_CB:
+ if ((int)skops->args[1] == BPF_TCP_CLOSE)
+ delete_bmc_sock(skops, sk);
+ break;
+
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+char _license[] SEC("license") = "GPL";
diff --git a/samples/bpf/bmc/common.h b/samples/bpf/bmc/common.h
new file mode 100644
index 000000000000..51c8623ab4f8
--- /dev/null
+++ b/samples/bpf/bmc/common.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0
+ *
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ * Description: common header for both user prog and bpf kernel prog
+ */
+#ifndef __REDIS_BMC_COMMON_H__
+#define __REDIS_BMC_COMMON_H__
+
+#define REDIS_GET_PROG_INDEX 0
+#define REDIS_SET_PROG_INDEX 1
+
+struct redis_bmc_stat {
+ __u64 total_get_requests;
+ __u64 hit_get_requests;
+ __u64 drop_get_requests;
+ __u64 total_set_requests;
+ __u64 hit_set_requests;
+ __u64 drop_set_requests;
+};
+
+#endif
diff --git a/samples/bpf/bmc/redis.h b/samples/bpf/bmc/redis.h
new file mode 100644
index 000000000000..6e739ce3d81a
--- /dev/null
+++ b/samples/bpf/bmc/redis.h
@@ -0,0 +1,648 @@
+/* SPDX-License-Identifier: GPL-2.0
+ *
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ *
+ * Description: This file parses REDIS commands. When SET command is received,
+ * the KEY and VALUE fields are extracted from the message and are stored to
+ * bmc_storage. When GET command is received, we lookup bmc_storage with the
+ * KEY received, and if success we fill the reply message with the found VALUE
+ * and send it back to the client.
+ *
+ * Here is a sample redis SET and GET session:
+ * (C: is the client, S: the server)
+ *
+ * C: "*3\r\n$3\r\nset\r\n$5\r\nkey01\r\n$5\r\nval01\r\n"
+ * S: "+OK\r\n"
+ * C: "*2\r\n$3\r\nget\r\n$5\r\nkey01\r\n"
+ * S: "$5\r\nval01\r\n"
+ *
+ * See [0] for RESP protocol details.
+ * [0] https://redis.io/docs/reference/protocol-spec/
+ */
+
+#include "common.h"
+
+#define BMC_MAX_REDIS_KEY_LEN 448 /* total key size should be less than 512 */
+#define BMC_MAX_REDIS_VALUE_LEN 2048
+#define BMC_MAX_CPUS 512 // NR_CPUS
+
+struct redis_key {
+ u32 len;
+ u8 data[BMC_MAX_REDIS_KEY_LEN];
+};
+
+struct redis_value {
+ u32 len;
+ u8 data[BMC_MAX_REDIS_VALUE_LEN];
+};
+
+struct {
+ __uint(type, BPF_MAP_TYPE_LRU_HASH);
+ __uint(key_size, sizeof(struct redis_key));
+ __uint(value_size, sizeof(struct redis_value));
+ __uint(max_entries, 10000);
+} bmc_storage SEC(".maps");
+
+struct {
+ __uint(type, BPF_MAP_TYPE_PROG_ARRAY);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(u32));
+ __uint(max_entries, 2);
+} bmc_jump_table SEC(".maps");
+
+struct redis_ctx {
+ struct redis_key key;
+ struct redis_value value;
+ u32 offset;
+};
+
+struct {
+ __uint(type, BPF_MAP_TYPE_ARRAY);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(struct redis_ctx));
+ __uint(max_entries, BMC_MAX_CPUS);
+} ctxmap SEC(".maps");
+
+struct {
+ __uint(type, BPF_MAP_TYPE_ARRAY);
+ __uint(key_size, sizeof(u32));
+ __uint(value_size, sizeof(struct redis_bmc_stat));
+ __uint(max_entries, BMC_MAX_CPUS);
+} bmc_stats SEC(".maps");
+
+static int bmc_copy_from_skb(void *dst, void *dend,
+ struct __sk_buff *skb,
+ u32 skb_off, u32 len)
+{
+ u32 i;
+ u32 off = 0;
+ void *data = (void *)(long)skb->data;
+ void *data_end = (void *)(long)skb->data_end;
+
+ if (len > 2047)
+ return -1;
+
+ if (len >= 1024 && dst + off + 1024 < dend &&
+ data + skb_off + off + 1024 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 1024))
+ return -1;
+ off += 1024;
+ len -= 1024;
+ }
+ if (len >= 512 && dst + off + 512 < dend &&
+ data + skb_off + off + 512 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 512))
+ return -1;
+ off += 512;
+ len -= 512;
+ }
+ if (len >= 256 && dst + off + 256 < dend &&
+ data + skb_off + off + 256 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 256))
+ return -1;
+ off += 256;
+ len -= 256;
+ }
+ if (len >= 128 && dst + off + 128 < dend &&
+ data + skb_off + off + 128 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 128))
+ return -1;
+ off += 128;
+ len -= 128;
+ }
+ if (len >= 64 && dst + off + 64 < dend &&
+ data + skb_off + off + 64 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 64))
+ return -1;
+ off += 64;
+ len -= 64;
+ }
+ if (len >= 32 && dst + off + 32 < dend &&
+ data + skb_off + off + 32 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 32))
+ return -1;
+ off += 32;
+ len -= 32;
+ }
+ if (len >= 16 && dst + off + 16 < dend &&
+ data + skb_off + off + 16 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 16))
+ return -1;
+ off += 16;
+ len -= 16;
+ }
+
+ if (len >= 8 && dst + off + 8 < dend &&
+ data + skb_off + off + 8 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 8))
+ return -1;
+ off += 8;
+ len -= 8;
+ }
+
+ if (len >= 4 && dst + off + 4 < dend &&
+ data + skb_off + off + 4 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 4))
+ return -1;
+ off += 4;
+ len -= 4;
+ }
+
+ if (len >= 2 && dst + off + 2 < dend &&
+ data + skb_off + off + 2 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 2))
+ return -1;
+ off += 2;
+ len -= 2;
+ }
+
+ if (len >= 1 && dst + off + 1 < dend &&
+ data + skb_off + off + 1 < data_end) {
+ if (bpf_skb_load_bytes(skb, skb_off + off, dst + off, 1))
+ return -1;
+ off += 1;
+ len -= 1;
+ }
+
+ return len == 0 ? 0 : -1;
+}
+
+static int bmc_copy_to_skb(struct __sk_buff *skb, u32 skb_off,
+ void *dst, void *dend, u32 len)
+{
+ u32 i;
+ u32 off = 0;
+ void *data = (void *)(long)skb->data;
+ void *data_end = (void *)(long)skb->data_end;
+
+ if (len > 2047)
+ return -1;
+
+ if (len >= 1024 && dst + off + 1024 < dend &&
+ data + skb_off + off + 1024 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 1024, 0))
+ return -1;
+ off += 1024;
+ len -= 1024;
+ }
+ if (len >= 512 && dst + off + 512 < dend &&
+ data + skb_off + off + 512 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 512, 0))
+ return -1;
+ off += 512;
+ len -= 512;
+ }
+ if (len >= 256 && dst + off + 256 < dend &&
+ data + skb_off + off + 256 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 256, 0))
+ return -1;
+ off += 256;
+ len -= 256;
+ }
+ if (len >= 128 && dst + off + 128 < dend &&
+ data + skb_off + off + 128 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 128, 0))
+ return -1;
+ off += 128;
+ len -= 128;
+ }
+ if (len >= 64 && dst + off + 64 < dend &&
+ data + skb_off + off + 64 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 64, 0))
+ return -1;
+ off += 64;
+ len -= 64;
+ }
+ if (len >= 32 && dst + off + 32 < dend &&
+ data + skb_off + off + 32 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 32, 0))
+ return -1;
+ off += 32;
+ len -= 32;
+ }
+ if (len >= 16 && dst + off + 16 < dend &&
+ data + skb_off + off + 16 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 16, 0))
+ return -1;
+ off += 16;
+ len -= 16;
+ }
+
+ if (len >= 8 && dst + off + 8 < dend &&
+ data + skb_off + off + 8 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 8, 0))
+ return -1;
+ off += 8;
+ len -= 8;
+ }
+
+ if (len >= 4 && dst + off + 4 < dend &&
+ data + skb_off + off + 4 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 4, 0))
+ return -1;
+ off += 4;
+ len -= 4;
+ }
+
+ if (len >= 2 && dst + off + 2 < dend &&
+ data + skb_off + off + 2 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 2, 0))
+ return -1;
+ off += 2;
+ len -= 2;
+ }
+
+ if (len >= 1 && dst + off + 1 < dend &&
+ data + skb_off + off + 1 < data_end) {
+ if (bpf_skb_store_bytes(skb, skb_off + off, dst + off, 1, 0))
+ return -1;
+ off += 1;
+ len -= 1;
+ }
+
+ return len == 0 ? 0 : -1;
+}
+
+static inline struct redis_ctx *get_ctx(void)
+{
+ u32 cpu = bpf_get_smp_processor_id();
+
+ if (cpu >= BMC_MAX_CPUS)
+ return NULL;
+ return bpf_map_lookup_elem(&ctxmap, &cpu);
+}
+
+static inline struct redis_bmc_stat *get_stat(void)
+{
+ u32 cpu = bpf_get_smp_processor_id();
+
+ if (cpu >= BMC_MAX_CPUS)
+ return NULL;
+ return bpf_map_lookup_elem(&bmc_stats, &cpu);
+}
+
+static int do_redis_get_handler(struct __sk_buff *skb, struct redis_ctx *ctx)
+{
+ int i;
+ u32 n;
+ int err;
+ char *p;
+ char *data;
+ char *data_end;
+ char buf[5];
+ struct redis_value *val;
+
+ ctx = get_ctx();
+ if (!ctx)
+ return BPF_OK;
+
+ val = bpf_map_lookup_elem(&bmc_storage, &ctx->key);
+ if (val == NULL || val->len == 0 || val->len > sizeof(val->data))
+ return BPF_OK;
+
+ n = val->len;
+
+ i = 0;
+ while (i < 5) {
+ buf[i] = '0' + n % 10;
+ n = n / 10;
+ i++;
+ if (n == 0)
+ break;
+ }
+
+ if (i >= 5)
+ return BPF_OK;
+
+ /* $ LEN \r \n VALUE \r \n */
+ n = 1 + i + 2 + val->len + 2;
+
+ if (n > skb->len)
+ /* extend head space */
+ err = bpf_skb_change_head(skb, n - skb->len, 0);
+ else if (n < skb->len)
+ /* shrink head space */
+ err = bpf_skb_adjust_room(skb, -(skb->len - n), 0, 0);
+
+ if (err)
+ return BPF_DROP;
+
+ data = (char *)(long)skb->data;
+ data_end = (char *)(long)skb->data_end;
+ p = data;
+ /* 3 is '$' and "\r\n"*/
+ if (p + i + 3 > data_end)
+ return BPF_DROP;
+
+ *p++ = '$';
+ while (p < data_end && --i >= 0)
+ *p++ = buf[i];
+ *p++ = '\r';
+ *p++ = '\n';
+
+ n = val->len;
+ if (n == 0 || n > sizeof(val->data) || p + n + 2 > data_end)
+ return BPF_DROP;
+
+ if (bmc_copy_to_skb(skb, p - data, val->data,
+ val->data + sizeof(val->data), n))
+ return BPF_DROP;
+
+ p += n;
+ char end_mark[] = { '\r', '\n'};
+
+ bpf_skb_store_bytes(skb, p - data, end_mark, sizeof(end_mark), 0);
+
+ return BPF_REDIRECT;
+}
+
+static int do_redis_set_handler(struct __sk_buff *skb, struct redis_ctx *ctx)
+{
+ int err;
+ u32 off = 0;
+ u32 value_len;
+ char *data = (char *)(long)skb->data;
+ char *data_end = (char *)(long)skb->data_end;
+
+ if (data + 1 > data_end || data[0] != '$')
+ return BPF_OK;
+ off++;
+ data++;
+
+ value_len = 0;
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ value_len = value_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+
+ if (data + 2 > data_end || data[0] != '\r' || data[1] != '\n')
+ return BPF_OK;
+ off += 2;
+ data += 2;
+
+ if (data > data_end)
+ return BPF_OK;
+
+ /* format error */
+ if (value_len <= 0 || value_len > sizeof(ctx->value.data) ||
+ value_len >= data_end - data) {
+ return BPF_OK;
+ }
+
+ if (bmc_copy_from_skb(ctx->value.data,
+ ctx->value.data + sizeof(ctx->value.data),
+ skb, off, value_len))
+ return BPF_OK;
+
+ ctx->value.len = value_len;
+
+ if (bpf_map_update_elem(&bmc_storage, &ctx->key, &ctx->value, BPF_ANY)) {
+ bpf_map_delete_elem(&bmc_storage, &ctx->key);
+ return BPF_OK;
+ }
+
+ char reply[] = { '+', 'O', 'K', '\r', '\n'};
+
+ if (skb->len < sizeof(reply))
+ /* extend head space */
+ err = bpf_skb_change_head(skb, sizeof(reply) - skb->len, 0);
+ else
+ /* shrink head space */
+ err = bpf_skb_adjust_room(skb, -(skb->len - sizeof(reply)), 0, 0);
+
+ if (err)
+ return BPF_OK;
+
+ bpf_skb_store_bytes(skb, 0, reply, sizeof(reply), 0);
+
+ return BPF_REDIRECT;
+}
+
+SEC("bmc/redis_get_handler")
+int redis_get_handler(struct __sk_buff *skb)
+{
+ int err;
+ struct redis_bmc_stat *stat;
+ struct redis_ctx *ctx;
+
+ stat = get_stat();
+ if (!stat)
+ return SK_PASS;
+
+ stat->total_get_requests++;
+
+ ctx = get_ctx();
+ if (!ctx)
+ return SK_PASS;
+
+ err = do_redis_get_handler(skb, ctx);
+ if (err == BPF_REDIRECT) {
+ stat->hit_get_requests++;
+ return sock_redirect(skb);
+ }
+
+ if (err == BPF_DROP) {
+ stat->drop_get_requests++;
+ return SK_DROP;
+ }
+
+ return SK_PASS;
+}
+
+SEC("bmc/redis_set_handler")
+int redis_set_handler(struct __sk_buff *skb)
+{
+ int err;
+ struct redis_bmc_stat *stat;
+ struct redis_ctx *ctx;
+
+ stat = get_stat();
+ if (!stat)
+ return SK_PASS;
+
+ stat->total_set_requests++;
+
+ ctx = get_ctx();
+ if (!ctx)
+ return SK_PASS;
+
+ err = do_redis_set_handler(skb, ctx);
+ if (err == BPF_REDIRECT) {
+ stat->hit_set_requests++;
+ return sock_redirect(skb);
+ }
+
+ if (err == BPF_DROP) {
+ stat->drop_set_requests++;
+ return SK_DROP;
+ }
+
+ err = bpf_skb_adjust_room(skb, ctx->offset, 0, 0);
+ if (!err)
+ return SK_PASS;
+
+ stat->drop_set_requests++;
+ return SK_DROP;
+}
+
+static inline int bmc_process(struct __sk_buff *skb)
+{
+ u32 off;
+ int err;
+ u32 key_len;
+ char *data;
+ char *data_end;
+ int expect_get = 0;
+ int is_get = 0;
+ struct redis_ctx *ctx;
+
+ ctx = get_ctx();
+ if (ctx == NULL)
+ return SK_PASS;
+
+ err = bpf_skb_pull_data(skb, skb->len);
+ if (err)
+ return SK_PASS;
+
+ off = 0;
+ data = (char *)(long)skb->data;
+ data_end = (char *)(long)skb->data_end;
+
+ /*
+ * SET message format:
+ * "*3\r\n" // this is an array with 3 elements
+ * "$3\r\n" // the first element is a string with 3 characters
+ * "set\r\n" // the string is "set"
+ * "$5\r\n" // the second element is a string with 5 characters
+ * "key01\r\n" // the string is "key01"
+ * "$5\r\n" // the third element is a string with 5 characters
+ * "val01\r\n" // the string is "valu01"
+ *
+ * GET message format:
+ * "*2\r\n" // this is an array with 3 elements
+ * "$3\r\n" // the first element is a string with 3 characters
+ * "get\r\n" // the string is "get"
+ * "$5\r\n" // the second element is a string with 5 characters
+ * "key01\r\n" // the string is "key01"
+ */
+ if (data + 4 > data_end)
+ return SK_PASS;
+
+ /* Not GET, Not SET */
+ if (data[0] != '*' || (data[1] != '2' && data[1] != '3') ||
+ data[2] != '\r' || data[3] != '\n')
+ return SK_PASS;
+
+ expect_get = (data[1] == '2');
+ off += 4;
+ data += 4;
+
+ if (data + 4 > data_end)
+ return SK_PASS;
+
+ if (data[0] != '$' || data[1] != '3' || data[2] != '\r' ||
+ data[3] != '\n')
+ return SK_PASS;
+
+ off += 4;
+ data += 4;
+
+ if (data + 5 > data_end)
+ return SK_PASS;
+
+ switch (data[0]) {
+ case 'g':
+ is_get = 1;
+ case 's':
+ if (data[1] != 'e' || data[2] != 't' ||
+ data[3] != '\r' || data[4] != '\n')
+ return SK_PASS;
+ break;
+ case 'G':
+ is_get = 1;
+ case 'S':
+ if (data[1] != 'E' || data[2] != 'T' ||
+ data[3] != '\r' || data[4] != '\n')
+ return SK_PASS;
+ break;
+ default:
+ return SK_PASS;
+ }
+ off += 5;
+ data += 5;
+
+ if (expect_get != is_get)
+ return SK_PASS;
+
+ if (data + 1 > data_end || data[0] != '$')
+ return SK_PASS;
+ off++;
+ data++;
+
+ key_len = 0;
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data < data_end && data[0] >= '0' && data[0] <= '9') {
+ key_len = key_len * 10 + data[0] - '0';
+ off++;
+ data++;
+ }
+ if (data + 2 > data_end || data[0] != '\r' || data[1] != '\n')
+ return SK_PASS;
+ off += 2;
+ data += 2;
+
+ if (data > data_end)
+ return SK_PASS;
+
+ if (key_len == 0 || key_len > sizeof(ctx->key.data) ||
+ key_len >= data_end - data)
+ return SK_PASS;
+
+ ctx->offset = off + key_len + 2;
+ ctx->key.len = key_len;
+
+ if (bmc_copy_from_skb(ctx->key.data,
+ ctx->key.data + sizeof(ctx->key.data),
+ skb, off, key_len))
+ return SK_PASS;
+
+ if (is_get) {
+ bpf_tail_call(skb, &bmc_jump_table, REDIS_GET_PROG_INDEX);
+ } else {
+ err = bpf_skb_adjust_room(skb, -ctx->offset, 0, 0);
+ if (err)
+ return SK_PASS;
+ bpf_tail_call(skb, &bmc_jump_table, REDIS_SET_PROG_INDEX);
+ }
+ return SK_PASS;
+}
diff --git a/samples/bpf/bmc/tool.c b/samples/bpf/bmc/tool.c
new file mode 100644
index 000000000000..e45be64a2819
--- /dev/null
+++ b/samples/bpf/bmc/tool.c
@@ -0,0 +1,733 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include <errno.h>
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/select.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <fcntl.h>
+
+#include <bpf/bpf.h>
+#include <bpf/libbpf.h>
+
+#include "common.h"
+
+#define DEFAULT_CGROUP_PATH "/sys/fs/cgroup"
+#define DEFAULT_REDIS_PORT 6379
+
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#endif
+
+struct {
+ char *cgroup_path;
+ char *bpf_path;
+ int cgroup_fd;
+ int map_socks_fd;
+ int map_ports_fd;
+ int map_storage_fd;
+ int map_jump_table_fd;
+ int map_stats_fd;
+ int sock_parser_prog_fd;
+ int sock_verdict_prog_fd;
+ int sock_ops_prog_fd;
+ int redis_get_prog_fd;
+ int redis_set_prog_fd;
+ uint16_t listen_port;
+} bmc;
+
+struct bmc_prog_info {
+ const char *sec_name;
+ enum bpf_prog_type prog_type;
+ enum bpf_attach_type attach_type;
+ int *p_prog_fd;
+ int *p_attach_fd;
+ unsigned int attach_flags;
+ const char *pin_path;
+ struct bpf_program *prog;
+};
+
+struct bmc_map_info {
+ const char *map_name;
+ int *p_map_fd;
+ char *pin_path;
+ struct bpf_map *map;
+ bool is_stat_map;
+};
+
+static struct bmc_prog_info prog_infos[] = {
+ {
+ .sec_name = "bmc/sock_parser",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .attach_type = BPF_SK_SKB_STREAM_PARSER,
+ .p_prog_fd = &bmc.sock_parser_prog_fd,
+ .p_attach_fd = &bmc.map_socks_fd,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_sock_parser"
+ },
+ {
+ .sec_name = "bmc/sock_verdict",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .attach_type = BPF_SK_SKB_STREAM_VERDICT,
+ .p_prog_fd = &bmc.sock_verdict_prog_fd,
+ .p_attach_fd = &bmc.map_socks_fd,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_sock_verdict"
+ },
+ {
+ .sec_name = "bmc/sock_ops",
+ .prog_type = BPF_PROG_TYPE_SOCK_OPS,
+ .attach_type = BPF_CGROUP_SOCK_OPS,
+ .p_prog_fd = &bmc.sock_ops_prog_fd,
+ .p_attach_fd = &bmc.cgroup_fd,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_sock_ops"
+ },
+ {
+ .sec_name = "bmc/redis_get_handler",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .p_prog_fd = &bmc.redis_get_prog_fd,
+ .p_attach_fd = NULL,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_redis_get_handler"
+
+ },
+ {
+ .sec_name = "bmc/redis_set_handler",
+ .prog_type = BPF_PROG_TYPE_SK_SKB,
+ .p_prog_fd = &bmc.redis_set_prog_fd,
+ .p_attach_fd = NULL,
+ .attach_flags = 0,
+ .pin_path = "/sys/fs/bpf/bmc/prog_redis_set_handler"
+
+ }
+};
+
+static struct bmc_map_info map_infos[] = {
+ {
+ .map_name = "bmc_socks",
+ .p_map_fd = &bmc.map_socks_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_socks"
+ },
+ {
+ .map_name = "bmc_ports",
+ .p_map_fd = &bmc.map_ports_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_ports"
+ },
+ {
+ .map_name = "bmc_storage",
+ .p_map_fd = &bmc.map_storage_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_storage"
+ },
+ {
+ .map_name = "bmc_jump_table",
+ .p_map_fd = &bmc.map_jump_table_fd,
+ .pin_path = "/sys/fs/bpf/bmc/map_jump_table"
+ },
+ {
+ .map_name = "bmc_stats",
+ .p_map_fd = &bmc.map_stats_fd,
+ .pin_path = "/sys/fs/bpf/bmc/stats",
+ .is_stat_map = true,
+ },
+};
+
+static int find_type_by_sec_name(const char *sec_name,
+ enum bpf_prog_type *p_prog_type,
+ enum bpf_attach_type *p_attach_type)
+{
+ int i;
+
+ if (sec_name == NULL) {
+ fprintf(stderr, "sec_name is NULL\n");
+ return -1;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ if (!strcmp(prog_infos[i].sec_name, sec_name)) {
+ *p_prog_type = prog_infos[i].prog_type;
+ *p_attach_type = prog_infos[i].attach_type;
+ return 0;
+ }
+ }
+
+ fprintf(stderr, "unknown prog %s\n", sec_name);
+
+ return -1;
+}
+
+static int set_prog_type(struct bpf_object *obj)
+{
+ const char *sec_name;
+ struct bpf_program *prog;
+ enum bpf_prog_type prog_type;
+ enum bpf_attach_type attach_type;
+
+ bpf_object__for_each_program(prog, obj) {
+ sec_name = bpf_program__section_name(prog);
+ if (find_type_by_sec_name(sec_name, &prog_type, &attach_type))
+ return -1;
+ bpf_program__set_type(prog, prog_type);
+ bpf_program__set_expected_attach_type(prog, attach_type);
+ }
+
+ return 0;
+}
+
+static struct bpf_object *load_bpf_file(const char *bpf_file)
+{
+ int err;
+ char err_buf[256];
+ struct bpf_object *obj;
+
+ obj = bpf_object__open(bpf_file);
+ err = libbpf_get_error(obj);
+ if (err) {
+ libbpf_strerror(err, err_buf, sizeof(err_buf));
+ fprintf(stderr, "unable to open bpf file %s : %s\n", bpf_file,
+ err_buf);
+ return NULL;
+ }
+
+ if (set_prog_type(obj)) {
+ bpf_object__close(obj);
+ return NULL;
+ }
+
+ err = bpf_object__load(obj);
+ if (err) {
+ fprintf(stderr, "load bpf object failed\n");
+ bpf_object__close(obj);
+ return NULL;
+ }
+
+ return obj;
+}
+
+static int find_prog(struct bpf_object *obj, const char *sec_name,
+ struct bpf_program **p_prog, int *p_prog_fd)
+{
+ int fd;
+ struct bpf_program *prog;
+
+ prog = bpf_object__find_program_by_title(obj, sec_name);
+ if (!prog) {
+ fprintf(stderr, "failed to find prog %s\n", sec_name);
+ return -1;
+ }
+
+ fd = bpf_program__fd(prog);
+ if (fd < 0) {
+ fprintf(stderr, "failed to get fd of prog %s\n", sec_name);
+ return -1;
+ }
+
+
+ *p_prog = prog;
+ *p_prog_fd = fd;
+
+ return 0;
+}
+
+static void unpin_progs(int n)
+{
+ int i;
+
+ for (i = 0; i < n; i++)
+ bpf_program__unpin(prog_infos[i].prog, prog_infos[i].pin_path);
+}
+
+static int find_progs(struct bpf_object *obj)
+{
+ int i;
+ struct bmc_prog_info *info;
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ info = &prog_infos[i];
+
+ if (find_prog(obj, info->sec_name, &info->prog, info->p_prog_fd))
+ goto error_find_prog;
+
+ if (bpf_program__pin(info->prog, info->pin_path))
+ goto error_find_prog;
+ }
+
+ return 0;
+
+error_find_prog:
+ unpin_progs(i);
+ return -1;
+}
+
+static int find_map(struct bpf_object *obj, const char *map_name,
+ struct bpf_map **p_map, int *p_map_fd)
+{
+ int fd;
+ struct bpf_map *map;
+
+ map = bpf_object__find_map_by_name(obj, map_name);
+ if (!map) {
+ fprintf(stderr, "failed to find map %s\n", map_name);
+ return -1;
+ }
+
+ fd = bpf_map__fd(map);
+ if (fd < 0) {
+ fprintf(stderr, "failed to get fd of map %s\n", map_name);
+ return -1;
+ }
+
+
+ *p_map = map;
+ *p_map_fd = fd;
+
+ return 0;
+}
+
+static void unpin_maps(int n)
+{
+ int i;
+
+ for (i = 0; i < n; i++)
+ bpf_map__unpin(map_infos[i].map, map_infos[i].pin_path);
+}
+
+static int find_maps(struct bpf_object *obj)
+{
+ int i;
+ struct bmc_map_info *info;
+
+ for (i = 0; i < ARRAY_SIZE(map_infos); i++) {
+ info = &map_infos[i];
+
+ if (find_map(obj, info->map_name, &info->map, info->p_map_fd))
+ goto error_find_map;
+
+ if (bpf_map__pin(info->map, info->pin_path)) {
+ fprintf(stderr, "failed to pin map %s to path %s\n",
+ info->map_name, info->pin_path);
+ goto error_find_map;
+ }
+ }
+
+ return 0;
+
+error_find_map:
+ unpin_maps(i);
+ return -1;
+}
+
+static void detach_progs(int n)
+{
+ int i;
+ struct bmc_prog_info *info;
+
+ for (i = 0; i < n; i++) {
+ info = &prog_infos[i];
+ bpf_prog_detach(*info->p_prog_fd, info->attach_type);
+ }
+}
+
+static int attach_progs(struct bpf_object *obj)
+{
+ int i;
+ int prog_fd;
+ int attach_fd;
+ unsigned int flags;
+ enum bpf_attach_type type;
+ struct bmc_prog_info *info;
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ info = &prog_infos[i];
+ if (!info->p_attach_fd)
+ continue;
+ prog_fd = *info->p_prog_fd;
+ attach_fd = *info->p_attach_fd;
+ type = info->attach_type;
+ flags = info->attach_flags;
+
+ if (bpf_prog_attach(prog_fd, attach_fd, type, flags)) {
+ fprintf(stderr, "attach prog %s failed!\n",
+ info->sec_name);
+ goto error_attach_prog;
+ }
+ }
+
+ return 0;
+
+error_attach_prog:
+ detach_progs(i);
+
+ return -1;
+}
+
+static int add_bmc_port(void)
+{
+ int ret;
+ int map_fd = bmc.map_ports_fd;
+ uint16_t port = htons(bmc.listen_port);
+ uint32_t key = (uint32_t)port;
+ uint32_t value = 1;
+
+ ret = bpf_map_update_elem(map_fd, &key, &value, 0);
+ if (ret)
+ fprintf(stderr, "failed to add port %u\n", port);
+
+ return ret;
+}
+
+static int add_tail_call(void)
+{
+ int ret;
+ int map_fd = bmc.map_jump_table_fd;
+ __u32 key;
+ __u32 value;
+
+ key = REDIS_GET_PROG_INDEX;
+ value = bmc.redis_get_prog_fd;
+ ret = bpf_map_update_elem(map_fd, &key, &value, 0);
+ if (ret) {
+ fprintf(stderr, "failed to add redis get tail call prog\n");
+ return -1;
+ }
+
+ key = REDIS_SET_PROG_INDEX;
+ value = bmc.redis_set_prog_fd;
+ ret = bpf_map_update_elem(map_fd, &key, &value, 0);
+ if (ret) {
+ fprintf(stderr, "failed to add redis set tail call prog\n");
+ key = REDIS_GET_PROG_INDEX;
+ bpf_map_delete_elem(map_fd, &key);
+ }
+
+ return ret;
+}
+
+static int setup_bpf(void)
+{
+ struct bpf_object *obj;
+
+ bmc.cgroup_fd = open(bmc.cgroup_path, O_DIRECTORY, O_RDONLY);
+ if (bmc.cgroup_fd < 0) {
+ fprintf(stderr, "failed to open cgroup %s: %s\n",
+ bmc.cgroup_path, strerror(errno));
+ return -1;
+ }
+
+ obj = load_bpf_file(bmc.bpf_path);
+ if (!obj)
+ goto error_load_object;
+
+ if (find_progs(obj))
+ goto error_load_object;
+
+ if (find_maps(obj))
+ goto error_find_maps;
+
+ if (attach_progs(obj))
+ goto error_attach_progs;
+
+ if (add_bmc_port())
+ goto error_add_port;
+
+ if (add_tail_call())
+ goto error_attach_progs;
+
+ return 0;
+
+error_add_port:
+ detach_progs(ARRAY_SIZE(prog_infos));
+error_attach_progs:
+ unpin_maps(ARRAY_SIZE(map_infos));
+error_find_maps:
+ unpin_progs(ARRAY_SIZE(prog_infos));
+error_load_object:
+ bpf_object__close(obj);
+ close(bmc.cgroup_fd);
+ return -1;
+}
+
+static int parse_load_args(int argc, char *argv[])
+{
+ int opt;
+ int port;
+
+ bmc.cgroup_path = DEFAULT_CGROUP_PATH;
+ bmc.listen_port = DEFAULT_REDIS_PORT;
+
+ while ((opt = getopt(argc, argv, "c:p:")) != -1) {
+ switch (opt) {
+ case 'c':
+ bmc.cgroup_path = optarg;
+ break;
+ case 'p':
+ port = atoi(optarg);
+ if (port <= 0 || port >= USHRT_MAX) {
+ fprintf(stderr, "invalid port: %s\n", optarg);
+ return -1;
+ }
+ bmc.listen_port = port;
+ break;
+ default:
+ fprintf(stderr, "unknown option %c\n", opt);
+ return -1;
+ }
+ }
+
+ if (optind >= argc) {
+ fprintf(stderr, "no bpf prog file found\n");
+ return -1;
+ }
+
+ bmc.bpf_path = argv[optind];
+
+ printf("bpf file: %s\n", bmc.bpf_path);
+ printf("cgroup path: %s\n", bmc.cgroup_path);
+ printf("listen port: %d\n", bmc.listen_port);
+
+ return 0;
+}
+
+struct cmd {
+ const char *name;
+ int (*func)(int argc, char *argv[]);
+};
+
+static int do_prog(int argc, char *argv[]);
+static int do_stat(int argc, char *argv[]);
+
+static int do_prog_load(int argc, char *argv[]);
+static int do_prog_unload(int argc, char *argv[]);
+
+static struct cmd main_cmds[] = {
+ { "prog", do_prog },
+ { "stat", do_stat },
+};
+
+static struct cmd prog_cmds[] = {
+ { "load", do_prog_load },
+ { "unload", do_prog_unload },
+};
+
+static char *elf_name;
+
+static int dispatch_cmd(struct cmd cmds[], int ncmd, int argc,
+ char *argv[], void (*help)(void))
+{
+ int i;
+ int ret;
+
+ if (argc <= 0) {
+ help();
+ return -1;
+ }
+
+ for (i = 0; i < ncmd; i++) {
+ if (!strcmp(argv[0], cmds[i].name)) {
+ ret = cmds[i].func(argc - 1, argv + 1);
+ if (ret == -2) {
+ help();
+ ret = -1;
+ }
+ return ret;
+ }
+ }
+
+ help();
+
+ return -1;
+}
+
+static int do_prog_load(int argc, char *argv[])
+{
+ if (parse_load_args(argc + 1, argv - 1) < 0)
+ return -2;
+
+ if (setup_bpf())
+ return -1;
+
+ return 0;
+}
+
+static int do_prog_unload(int argc, char *argv[])
+{
+ int i;
+ int prog_fd;
+ int cgroup_fd;
+ char *cgroup_path = DEFAULT_CGROUP_PATH;
+
+ if (argc > 1)
+ cgroup_path = argv[0];
+
+ cgroup_fd = open(cgroup_path, O_DIRECTORY, O_RDONLY);
+ if (cgroup_fd < 0) {
+ fprintf(stderr, "failed to open cgroup path: %s\n",
+ cgroup_path);
+ return -1;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(prog_infos); i++) {
+ if (prog_infos[i].attach_type == BPF_CGROUP_SOCK_OPS) {
+ prog_fd = bpf_obj_get(prog_infos[i].pin_path);
+ if (prog_fd >= 0)
+ bpf_prog_detach2(prog_fd, cgroup_fd,
+ BPF_CGROUP_SOCK_OPS);
+ }
+ unlink(prog_infos[i].pin_path);
+ }
+
+ for (i = 0; i < ARRAY_SIZE(map_infos); i++)
+ unlink(map_infos[i].pin_path);
+
+ return 0;
+}
+
+static void do_prog_help(void)
+{
+ fprintf(stderr,
+ "Usage: %s prog load [-c CGROUP_PATH] [-p LISTEN_PORT] {BPF_FILE}\n"
+ " %s prog unload [CGROUP_PATH]\n",
+ elf_name, elf_name);
+}
+
+static int do_prog(int argc, char *argv[])
+{
+ return dispatch_cmd(prog_cmds, ARRAY_SIZE(prog_cmds),
+ argc, argv, do_prog_help);
+}
+
+static int do_stat(int argc, char *argv[])
+{
+ int i;
+ int fd;
+ int err;
+ int ncpu;
+ bool found = false;
+ struct bmc_map_info *info;
+ struct bpf_map_info map = {};
+ struct redis_bmc_stat stat = {};
+ __u32 len = sizeof(map);
+
+ ncpu = sysconf(_SC_NPROCESSORS_ONLN);
+ if (ncpu < 0) {
+ fprintf(stderr, "sysconf failed: %s\n", strerror(errno));
+ return -1;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(map_infos); i++) {
+ info = &map_infos[i];
+ if (info->is_stat_map) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ fprintf(stderr, "no stats map found\n");
+ return -1;
+ }
+
+ fd = bpf_obj_get(info->pin_path);
+ if (fd < 0) {
+ fprintf(stderr, "failed to open %s\n",
+ info->pin_path);
+ return -1;
+ }
+
+ err = bpf_obj_get_info_by_fd(fd, &map, &len);
+ if (err) {
+ fprintf(stderr, "failed to get map info\n");
+ goto error;
+ }
+
+ if (map.type != BPF_MAP_TYPE_ARRAY) {
+ fprintf(stderr, "unexpected map type: %d\n", map.type);
+ goto error;
+ }
+
+ if (map.key_size != sizeof(__u32)) {
+ fprintf(stderr, "unexpected map key_size: %u\n", map.key_size);
+ goto error;
+ }
+
+ if (map.value_size != sizeof(struct redis_bmc_stat)) {
+ fprintf(stderr, "unexpected map key_size: %u\n", map.key_size);
+ goto error;
+ }
+
+ for (int i = 0; i < ncpu; i++) {
+ __u32 key = i;
+ struct redis_bmc_stat value;
+
+ err = bpf_map_lookup_elem(fd, &key, &value);
+ if (err) {
+ fprintf(stderr, "lookup cpu stat failed, cpu=%u\n", i);
+ goto error;
+ }
+ stat.total_get_requests += value.total_get_requests;
+ stat.hit_get_requests += value.hit_get_requests;
+ stat.drop_get_requests += value.drop_get_requests;
+ stat.total_set_requests += value.total_set_requests;
+ stat.hit_set_requests += value.hit_set_requests;
+ stat.drop_set_requests += value.drop_set_requests;
+ }
+
+ printf("Total GET Requests: %llu\n", stat.total_get_requests);
+ printf("Hit GET Requests: %llu (%.2f%%)\n", stat.hit_get_requests,
+ stat.total_get_requests == 0 ? 0 :
+ (double)stat.hit_get_requests /
+ (double)stat.total_get_requests *
+ 100);
+ printf("Dropped GET Requests: %llu (%.2lf%%)\n", stat.drop_get_requests,
+ stat.total_get_requests == 0 ? 0 :
+ (double)stat.drop_get_requests /
+ (double)stat.total_get_requests *
+ 100);
+
+ printf("Total SET Requests: %llu\n", stat.total_set_requests);
+ printf("Hit SET Requests: %llu (%.2f%%)\n", stat.hit_set_requests,
+ stat.total_set_requests == 0 ? 0 :
+ (double)stat.hit_set_requests /
+ (double)stat.total_set_requests *
+ 100);
+ printf("Dropped SET Requests: %llu (%.2lf%%)\n", stat.drop_set_requests,
+ stat.total_set_requests == 0 ? 0 :
+ (double)stat.drop_set_requests /
+ (double)stat.total_set_requests *
+ 100);
+
+ close(fd);
+
+ return 0;
+
+error:
+ close(fd);
+ return -1;
+}
+
+static void do_main_help(void)
+{
+ fprintf(stderr,
+ "Usage: %s OBJECT { COMMAND | help }\n"
+ " OBJECT := { prog | stat }\n",
+ elf_name);
+}
+
+int main(int argc, char *argv[])
+{
+ elf_name = argv[0];
+
+ return dispatch_cmd(main_cmds, ARRAY_SIZE(main_cmds),
+ argc - 1, argv + 1, do_main_help);
+}
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS 1/2] mm/slub: add missing TID updates on slab deactivation
by Yongqiang Liu 12 Aug '22
by Yongqiang Liu 12 Aug '22
12 Aug '22
From: Jann Horn <jannh(a)google.com>
stable inclusion
from stable-4.19.252
commit e2b2f0e2e34d71ae6c2a1114fd3c525930e84bc7
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5LJH1
CVE: NA
--------------------------------
commit eeaa345e128515135ccb864c04482180c08e3259 upstream.
The fastpath in slab_alloc_node() assumes that c->slab is stable as long as
the TID stays the same. However, two places in __slab_alloc() currently
don't update the TID when deactivating the CPU slab.
If multiple operations race the right way, this could lead to an object
getting lost; or, in an even more unlikely situation, it could even lead to
an object being freed onto the wrong slab's freelist, messing up the
`inuse` counter and eventually causing a page to be freed to the page
allocator while it still contains slab objects.
(I haven't actually tested these cases though, this is just based on
looking at the code. Writing testcases for this stuff seems like it'd be
a pain...)
The race leading to state inconsistency is (all operations on the same CPU
and kmem_cache):
- task A: begin do_slab_free():
- read TID
- read pcpu freelist (==NULL)
- check `slab == c->slab` (true)
- [PREEMPT A->B]
- task B: begin slab_alloc_node():
- fastpath fails (`c->freelist` is NULL)
- enter __slab_alloc()
- slub_get_cpu_ptr() (disables preemption)
- enter ___slab_alloc()
- take local_lock_irqsave()
- read c->freelist as NULL
- get_freelist() returns NULL
- write `c->slab = NULL`
- drop local_unlock_irqrestore()
- goto new_slab
- slub_percpu_partial() is NULL
- get_partial() returns NULL
- slub_put_cpu_ptr() (enables preemption)
- [PREEMPT B->A]
- task A: finish do_slab_free():
- this_cpu_cmpxchg_double() succeeds()
- [CORRUPT STATE: c->slab==NULL, c->freelist!=NULL]
From there, the object on c->freelist will get lost if task B is allowed to
continue from here: It will proceed to the retry_load_slab label,
set c->slab, then jump to load_freelist, which clobbers c->freelist.
But if we instead continue as follows, we get worse corruption:
- task A: run __slab_free() on object from other struct slab:
- CPU_PARTIAL_FREE case (slab was on no list, is now on pcpu partial)
- task A: run slab_alloc_node() with NUMA node constraint:
- fastpath fails (c->slab is NULL)
- call __slab_alloc()
- slub_get_cpu_ptr() (disables preemption)
- enter ___slab_alloc()
- c->slab is NULL: goto new_slab
- slub_percpu_partial() is non-NULL
- set c->slab to slub_percpu_partial(c)
- [CORRUPT STATE: c->slab points to slab-1, c->freelist has objects
from slab-2]
- goto redo
- node_match() fails
- goto deactivate_slab
- existing c->freelist is passed into deactivate_slab()
- inuse count of slab-1 is decremented to account for object from
slab-2
At this point, the inuse count of slab-1 is 1 lower than it should be.
This means that if we free all allocated objects in slab-1 except for one,
SLUB will think that slab-1 is completely unused, and may free its page,
leading to use-after-free.
Fixes: c17dda40a6a4e ("slub: Separate out kmem_cache_cpu processing from deactivate_slab")
Fixes: 03e404af26dc2 ("slub: fast release on full slab")
Cc: stable(a)vger.kernel.org
Signed-off-by: Jann Horn <jannh(a)google.com>
Acked-by: Christoph Lameter <cl(a)linux.com>
Acked-by: David Rientjes <rientjes(a)google.com>
Reviewed-by: Muchun Song <songmuchun(a)bytedance.com>
Tested-by: Hyeonggon Yoo <42.hyeyoo(a)gmail.com>
Signed-off-by: Vlastimil Babka <vbabka(a)suse.cz>
Link: https://lore.kernel.org/r/20220608182205.2945720-1-jannh@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/slub.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/slub.c b/mm/slub.c
index 7b5630ca9274..4bc29bcd0d5d 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2168,6 +2168,7 @@ static void deactivate_slab(struct kmem_cache *s, struct page *page,
c->page = NULL;
c->freelist = NULL;
+ c->tid = next_tid(c->tid);
}
/*
@@ -2301,8 +2302,6 @@ static inline void flush_slab(struct kmem_cache *s, struct kmem_cache_cpu *c)
{
stat(s, CPUSLAB_FLUSH);
deactivate_slab(s, c->page, c->freelist, c);
-
- c->tid = next_tid(c->tid);
}
/*
@@ -2589,6 +2588,7 @@ static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
if (!freelist) {
c->page = NULL;
+ c->tid = next_tid(c->tid);
stat(s, DEACTIVATE_BYPASS);
goto new_slab;
}
--
2.25.1
1
1
您好!
Kernel SIG 邀请您参加 2022-08-12 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler Kernel SIG例会
会议内容:
1.英特尔Sapphire Rapids平台PMU新特性介绍
2.基于BPF内核缓存的Redis加速特性评审
3.BPF CO-RE(Compile Once-Run Everywhere)特性评审
会议链接:https://us06web.zoom.us/j/89836175849?pwd=ODlUNVhldkdndnN0b21VRUIxNkg0dz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-08-12 14:00,
The subject of the conference is openEuler Kernel SIG例会,
Summary:
1.英特尔Sapphire Rapids平台PMU新特性介绍
2.基于BPF内核缓存的Redis加速特性评审
3.BPF CO-RE(Compile Once-Run Everywhere)特性评审
You can join the meeting at https://us06web.zoom.us/j/89836175849?pwd=ODlUNVhldkdndnN0b21VRUIxNkg0dz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

10 Aug '22
From: Juergen Gross <jgross(a)suse.com>
stable inclusion
from stable-v5.10.132
commit 136d7987fcfdeca73ee3c6a29e48f99fdd0f4d87
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5JTYM
CVE: CVE-2022-36123
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 38fa5479b41376dc9d7f57e71c83514285a25ca0 ]
The .brk section has the same properties as .bss: it is an alloc-only
section and should be cleared before being used.
Not doing so is especially a problem for Xen PV guests, as the
hypervisor will validate page tables (check for writable page tables
and hypervisor private bits) before accepting them to be used.
Make sure .brk is initially zero by letting clear_bss() clear the brk
area, too.
Signed-off-by: Juergen Gross <jgross(a)suse.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Link: https://lore.kernel.org/r/20220630071441.28576-3-jgross@suse.com
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: GONG, Ruiqi <gongruiqi1(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
arch/x86/kernel/head64.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 05e117137b45..efe13ab366f4 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -419,6 +419,8 @@ static void __init clear_bss(void)
{
memset(__bss_start, 0,
(unsigned long) __bss_stop - (unsigned long) __bss_start);
+ memset(__brk_base, 0,
+ (unsigned long) __brk_limit - (unsigned long) __brk_base);
}
static unsigned long get_cmd_line_ptr(void)
--
2.20.1
1
0

[PATCH openEuler-5.10 01/15] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU
by Zheng Zengkai 09 Aug '22
by Zheng Zengkai 09 Aug '22
09 Aug '22
From: Qi Liu <liuqi115(a)huawei.com>
mainline inclusion
from mainline-v5.17-rc1
commit 8404b0fbc7fb
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5AZ87
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------------------------------------------------
PCIe PMU Root Complex Integrated End Point(RCiEP) device is supported
to sample bandwidth, latency, buffer occupation etc.
Each PMU RCiEP device monitors multiple Root Ports, and each RCiEP is
registered as a PMU in /sys/bus/event_source/devices, so users can
select target PMU, and use filter to do further sets.
Filtering options contains:
event - select the event.
port - select target Root Ports. Information of Root Ports are
shown under sysfs.
bdf - select requester_id of target EP device.
trig_len - set trigger condition for starting event statistics.
trig_mode - set trigger mode. 0 means starting to statistic when bigger
than trigger condition, and 1 means smaller.
thr_len - set threshold for statistics.
thr_mode - set threshold mode. 0 means count when bigger than threshold,
and 1 means smaller.
Acked-by: Krzysztof Wilczyński <kw(a)linux.com>
Reviewed-by: John Garry <john.garry(a)huawei.com>
Signed-off-by: Qi Liu <liuqi115(a)huawei.com>
Reviewed-by: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
Link: https://lore.kernel.org/r/20211202080633.2919-3-liuqi115@huawei.com
Signed-off-by: Will Deacon <will(a)kernel.org>
Signed-off-by: Wangming Shao <shaowangming(a)h-partners.com>
Reviewed-by: Junhao He <hejunhao3(a)huawei.com>
Reviewed-by: Yang Jihong <yangjihong1(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
MAINTAINERS | 2 +
drivers/perf/hisilicon/Kconfig | 9 +
drivers/perf/hisilicon/Makefile | 2 +
drivers/perf/hisilicon/hisi_pcie_pmu.c | 951 +++++++++++++++++++++++++
include/linux/cpuhotplug.h | 3 +
5 files changed, 967 insertions(+)
create mode 100644 drivers/perf/hisilicon/hisi_pcie_pmu.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 466b1c599848..9908e5442110 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7976,8 +7976,10 @@ F: Documentation/devicetree/bindings/misc/hisilicon-hikey-usb.yaml
HISILICON PMU DRIVER
M: Shaokun Zhang <zhangshaokun(a)hisilicon.com>
+M: Qi Liu <liuqi115(a)huawei.com>
S: Supported
W: http://www.hisilicon.com
+F: Documentation/admin-guide/perf/hisi-pcie-pmu.rst
F: Documentation/admin-guide/perf/hisi-pmu.rst
F: drivers/perf/hisilicon
diff --git a/drivers/perf/hisilicon/Kconfig b/drivers/perf/hisilicon/Kconfig
index c5d1b7019fff..5546218b5598 100644
--- a/drivers/perf/hisilicon/Kconfig
+++ b/drivers/perf/hisilicon/Kconfig
@@ -5,3 +5,12 @@ config HISI_PMU
help
Support for HiSilicon SoC L3 Cache performance monitor, Hydra Home
Agent performance monitor and DDR Controller performance monitor.
+
+config HISI_PCIE_PMU
+ tristate "HiSilicon PCIE PERF PMU"
+ depends on PCI && ARM64
+ help
+ Provide support for HiSilicon PCIe performance monitoring unit (PMU)
+ RCiEP devices.
+ Adds the PCIe PMU into perf events system for monitoring latency,
+ bandwidth etc.
diff --git a/drivers/perf/hisilicon/Makefile b/drivers/perf/hisilicon/Makefile
index 22e384cdfd53..ad0e8110f373 100644
--- a/drivers/perf/hisilicon/Makefile
+++ b/drivers/perf/hisilicon/Makefile
@@ -4,3 +4,5 @@ obj-$(CONFIG_HISI_PMU) += hisi_uncore_pmu.o hisi_uncore_l3c_pmu.o \
hisi_uncore_pa_pmu.o \
hisi_uncore_l3t_pmu.o \
hisi_uncore_lpddrc_pmu.o
+
+obj-$(CONFIG_HISI_PCIE_PMU) += hisi_pcie_pmu.o
diff --git a/drivers/perf/hisilicon/hisi_pcie_pmu.c b/drivers/perf/hisilicon/hisi_pcie_pmu.c
new file mode 100644
index 000000000000..2f18838754ec
--- /dev/null
+++ b/drivers/perf/hisilicon/hisi_pcie_pmu.c
@@ -0,0 +1,951 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * This driver adds support for PCIe PMU RCiEP device. Related
+ * perf events are bandwidth, latency etc.
+ *
+ * Copyright (C) 2021 HiSilicon Limited
+ * Author: Qi Liu <liuqi115(a)huawei.com>
+ */
+#include <linux/bitfield.h>
+#include <linux/bitmap.h>
+#include <linux/bug.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+#include <linux/perf_event.h>
+
+#define DRV_NAME "hisi_pcie_pmu"
+/* Define registers */
+#define HISI_PCIE_GLOBAL_CTRL 0x00
+#define HISI_PCIE_EVENT_CTRL 0x010
+#define HISI_PCIE_CNT 0x090
+#define HISI_PCIE_EXT_CNT 0x110
+#define HISI_PCIE_INT_STAT 0x150
+#define HISI_PCIE_INT_MASK 0x154
+#define HISI_PCIE_REG_BDF 0xfe0
+#define HISI_PCIE_REG_VERSION 0xfe4
+#define HISI_PCIE_REG_INFO 0xfe8
+
+/* Define command in HISI_PCIE_GLOBAL_CTRL */
+#define HISI_PCIE_GLOBAL_EN 0x01
+#define HISI_PCIE_GLOBAL_NONE 0
+
+/* Define command in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_EN BIT_ULL(20)
+#define HISI_PCIE_RESET_CNT BIT_ULL(22)
+#define HISI_PCIE_INIT_SET BIT_ULL(34)
+#define HISI_PCIE_THR_EN BIT_ULL(26)
+#define HISI_PCIE_TARGET_EN BIT_ULL(32)
+#define HISI_PCIE_TRIG_EN BIT_ULL(52)
+
+/* Define offsets in HISI_PCIE_EVENT_CTRL */
+#define HISI_PCIE_EVENT_M GENMASK_ULL(15, 0)
+#define HISI_PCIE_THR_MODE_M GENMASK_ULL(27, 27)
+#define HISI_PCIE_THR_M GENMASK_ULL(31, 28)
+#define HISI_PCIE_TARGET_M GENMASK_ULL(52, 36)
+#define HISI_PCIE_TRIG_MODE_M GENMASK_ULL(53, 53)
+#define HISI_PCIE_TRIG_M GENMASK_ULL(59, 56)
+
+#define HISI_PCIE_MAX_COUNTERS 8
+#define HISI_PCIE_REG_STEP 8
+#define HISI_PCIE_THR_MAX_VAL 10
+#define HISI_PCIE_TRIG_MAX_VAL 10
+#define HISI_PCIE_MAX_PERIOD (GENMASK_ULL(63, 0))
+#define HISI_PCIE_INIT_VAL BIT_ULL(63)
+
+struct hisi_pcie_pmu {
+ struct perf_event *hw_events[HISI_PCIE_MAX_COUNTERS];
+ struct hlist_node node;
+ struct pci_dev *pdev;
+ struct pmu pmu;
+ void __iomem *base;
+ int irq;
+ u32 identifier;
+ /* Minimum and maximum BDF of root ports monitored by PMU */
+ u16 bdf_min;
+ u16 bdf_max;
+ int on_cpu;
+};
+
+struct hisi_pcie_reg_pair {
+ u16 lo;
+ u16 hi;
+};
+
+#define to_pcie_pmu(p) (container_of((p), struct hisi_pcie_pmu, pmu))
+#define GET_PCI_DEVFN(bdf) ((bdf) & 0xff)
+
+#define HISI_PCIE_PMU_FILTER_ATTR(_name, _config, _hi, _lo) \
+ static u64 hisi_pcie_get_##_name(struct perf_event *event) \
+ { \
+ return FIELD_GET(GENMASK(_hi, _lo), event->attr._config); \
+ } \
+
+HISI_PCIE_PMU_FILTER_ATTR(event, config, 16, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_len, config1, 3, 0);
+HISI_PCIE_PMU_FILTER_ATTR(thr_mode, config1, 4, 4);
+HISI_PCIE_PMU_FILTER_ATTR(trig_len, config1, 8, 5);
+HISI_PCIE_PMU_FILTER_ATTR(trig_mode, config1, 9, 9);
+HISI_PCIE_PMU_FILTER_ATTR(port, config2, 15, 0);
+HISI_PCIE_PMU_FILTER_ATTR(bdf, config2, 31, 16);
+
+static ssize_t hisi_pcie_format_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct dev_ext_attribute *eattr;
+
+ eattr = container_of(attr, struct dev_ext_attribute, attr);
+
+ return sysfs_emit(buf, "%s\n", (char *)eattr->var);
+}
+
+static ssize_t hisi_pcie_event_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct perf_pmu_events_attr *pmu_attr =
+ container_of(attr, struct perf_pmu_events_attr, attr);
+
+ return sysfs_emit(buf, "config=0x%llx\n", pmu_attr->id);
+}
+
+#define HISI_PCIE_PMU_FORMAT_ATTR(_name, _format) \
+ (&((struct dev_ext_attribute[]){ \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_format_sysfs_show, \
+ NULL), \
+ .var = (void *)_format } \
+ })[0].attr.attr)
+
+#define HISI_PCIE_PMU_EVENT_ATTR(_name, _id) \
+ (&((struct perf_pmu_events_attr[]) { \
+ { .attr = __ATTR(_name, 0444, hisi_pcie_event_sysfs_show, NULL), \
+ .id = _id, } \
+ })[0].attr.attr)
+
+static ssize_t cpumask_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return cpumap_print_to_pagebuf(true, buf, cpumask_of(pcie_pmu->on_cpu));
+}
+static DEVICE_ATTR_RO(cpumask);
+
+static ssize_t identifier_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#x\n", pcie_pmu->identifier);
+}
+static DEVICE_ATTR_RO(identifier);
+
+static ssize_t bus_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(dev_get_drvdata(dev));
+
+ return sysfs_emit(buf, "%#04x\n", PCI_BUS_NUM(pcie_pmu->bdf_min));
+}
+static DEVICE_ATTR_RO(bus);
+
+static struct hisi_pcie_reg_pair
+hisi_pcie_parse_reg_value(struct hisi_pcie_pmu *pcie_pmu, u32 reg_off)
+{
+ u32 val = readl_relaxed(pcie_pmu->base + reg_off);
+ struct hisi_pcie_reg_pair regs = {
+ .lo = val,
+ .hi = val >> 16,
+ };
+
+ return regs;
+}
+
+/*
+ * Hardware counter and ext_counter work together for bandwidth, latency, bus
+ * utilization and buffer occupancy events. For example, RX memory write latency
+ * events(index = 0x0010), counter counts total delay cycles and ext_counter
+ * counts RX memory write PCIe packets number.
+ *
+ * As we don't want PMU driver to process these two data, "delay cycles" can
+ * be treated as an independent event(index = 0x0010), "RX memory write packets
+ * number" as another(index = 0x10010). BIT 16 is used to distinguish and 0-15
+ * bits are "real" event index, which can be used to set HISI_PCIE_EVENT_CTRL.
+ */
+#define EXT_COUNTER_IS_USED(idx) ((idx) & BIT(16))
+
+static u32 hisi_pcie_get_real_event(struct perf_event *event)
+{
+ return hisi_pcie_get_event(event) & GENMASK(15, 0);
+}
+
+static u32 hisi_pcie_pmu_get_offset(u32 offset, u32 idx)
+{
+ return offset + HISI_PCIE_REG_STEP * idx;
+}
+
+static u32 hisi_pcie_pmu_readl(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset,
+ u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readl_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writel(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u32 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writel_relaxed(val, pcie_pmu->base + offset);
+}
+
+static u64 hisi_pcie_pmu_readq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ return readq_relaxed(pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_writeq(struct hisi_pcie_pmu *pcie_pmu, u32 reg_offset, u32 idx, u64 val)
+{
+ u32 offset = hisi_pcie_pmu_get_offset(reg_offset, idx);
+
+ writeq_relaxed(val, pcie_pmu->base + offset);
+}
+
+static void hisi_pcie_pmu_config_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ u64 reg = HISI_PCIE_INIT_SET;
+ u64 port, trig_len, thr_len;
+
+ /* Config HISI_PCIE_EVENT_CTRL according to event. */
+ reg |= FIELD_PREP(HISI_PCIE_EVENT_M, hisi_pcie_get_real_event(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to root port or EP device. */
+ port = hisi_pcie_get_port(event);
+ if (port)
+ reg |= FIELD_PREP(HISI_PCIE_TARGET_M, port);
+ else
+ reg |= HISI_PCIE_TARGET_EN |
+ FIELD_PREP(HISI_PCIE_TARGET_M, hisi_pcie_get_bdf(event));
+
+ /* Config HISI_PCIE_EVENT_CTRL according to trigger condition. */
+ trig_len = hisi_pcie_get_trig_len(event);
+ if (trig_len) {
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_M, trig_len);
+ reg |= FIELD_PREP(HISI_PCIE_TRIG_MODE_M, hisi_pcie_get_trig_mode(event));
+ reg |= HISI_PCIE_TRIG_EN;
+ }
+
+ /* Config HISI_PCIE_EVENT_CTRL according to threshold condition. */
+ thr_len = hisi_pcie_get_thr_len(event);
+ if (thr_len) {
+ reg |= FIELD_PREP(HISI_PCIE_THR_M, thr_len);
+ reg |= FIELD_PREP(HISI_PCIE_THR_MODE_M, hisi_pcie_get_thr_mode(event));
+ reg |= HISI_PCIE_THR_EN;
+ }
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, reg);
+}
+
+static void hisi_pcie_pmu_clear_filter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, hwc->idx, HISI_PCIE_INIT_SET);
+}
+
+static bool hisi_pcie_pmu_valid_requester_id(struct hisi_pcie_pmu *pcie_pmu, u32 bdf)
+{
+ struct pci_dev *root_port, *pdev;
+ u16 rp_bdf;
+
+ pdev = pci_get_domain_bus_and_slot(pci_domain_nr(pcie_pmu->pdev->bus), PCI_BUS_NUM(bdf),
+ GET_PCI_DEVFN(bdf));
+ if (!pdev)
+ return false;
+
+ root_port = pcie_find_root_port(pdev);
+ if (!root_port) {
+ pci_dev_put(pdev);
+ return false;
+ }
+
+ pci_dev_put(pdev);
+ rp_bdf = pci_dev_id(root_port);
+ return rp_bdf >= pcie_pmu->bdf_min && rp_bdf <= pcie_pmu->bdf_max;
+}
+
+static bool hisi_pcie_pmu_valid_filter(struct perf_event *event,
+ struct hisi_pcie_pmu *pcie_pmu)
+{
+ u32 requester_id = hisi_pcie_get_bdf(event);
+
+ if (hisi_pcie_get_thr_len(event) > HISI_PCIE_THR_MAX_VAL)
+ return false;
+
+ if (hisi_pcie_get_trig_len(event) > HISI_PCIE_TRIG_MAX_VAL)
+ return false;
+
+ if (requester_id) {
+ if (!hisi_pcie_pmu_valid_requester_id(pcie_pmu, requester_id))
+ return false;
+ }
+
+ return true;
+}
+
+static bool hisi_pcie_pmu_cmp_event(struct perf_event *target,
+ struct perf_event *event)
+{
+ return hisi_pcie_get_real_event(target) == hisi_pcie_get_real_event(event);
+}
+
+static bool hisi_pcie_pmu_validate_event_group(struct perf_event *event)
+{
+ struct perf_event *sibling, *leader = event->group_leader;
+ struct perf_event *event_group[HISI_PCIE_MAX_COUNTERS];
+ int counters = 1;
+ int num;
+
+ event_group[0] = leader;
+ if (!is_software_event(leader)) {
+ if (leader->pmu != event->pmu)
+ return false;
+
+ if (leader != event && !hisi_pcie_pmu_cmp_event(leader, event))
+ event_group[counters++] = event;
+ }
+
+ for_each_sibling_event(sibling, event->group_leader) {
+ if (is_software_event(sibling))
+ continue;
+
+ if (sibling->pmu != event->pmu)
+ return false;
+
+ for (num = 0; num < counters; num++) {
+ if (hisi_pcie_pmu_cmp_event(event_group[num], sibling))
+ break;
+ }
+
+ if (num == counters)
+ event_group[counters++] = sibling;
+ }
+
+ return counters <= HISI_PCIE_MAX_COUNTERS;
+}
+
+static int hisi_pcie_pmu_event_init(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ event->cpu = pcie_pmu->on_cpu;
+
+ if (EXT_COUNTER_IS_USED(hisi_pcie_get_event(event)))
+ hwc->event_base = HISI_PCIE_EXT_CNT;
+ else
+ hwc->event_base = HISI_PCIE_CNT;
+
+ if (event->attr.type != event->pmu->type)
+ return -ENOENT;
+
+ /* Sampling is not supported. */
+ if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK)
+ return -EOPNOTSUPP;
+
+ if (!hisi_pcie_pmu_valid_filter(event, pcie_pmu))
+ return -EINVAL;
+
+ if (!hisi_pcie_pmu_validate_event_group(event))
+ return -EINVAL;
+
+ return 0;
+}
+
+static u64 hisi_pcie_pmu_read_counter(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ u32 idx = event->hw.idx;
+
+ return hisi_pcie_pmu_readq(pcie_pmu, event->hw.event_base, idx);
+}
+
+static int hisi_pcie_pmu_find_related_event(struct hisi_pcie_pmu *pcie_pmu,
+ struct perf_event *event)
+{
+ struct perf_event *sibling;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ sibling = pcie_pmu->hw_events[idx];
+ if (!sibling)
+ continue;
+
+ if (!hisi_pcie_pmu_cmp_event(sibling, event))
+ continue;
+
+ /* Related events must be used in group */
+ if (sibling->group_leader == event->group_leader)
+ return idx;
+ else
+ return -EINVAL;
+ }
+
+ return idx;
+}
+
+static int hisi_pcie_pmu_get_event_idx(struct hisi_pcie_pmu *pcie_pmu)
+{
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ if (!pcie_pmu->hw_events[idx])
+ return idx;
+ }
+
+ return -EINVAL;
+}
+
+static void hisi_pcie_pmu_event_update(struct perf_event *event)
+{
+ struct hw_perf_event *hwc = &event->hw;
+ u64 new_cnt, prev_cnt, delta;
+
+ do {
+ prev_cnt = local64_read(&hwc->prev_count);
+ new_cnt = hisi_pcie_pmu_read_counter(event);
+ } while (local64_cmpxchg(&hwc->prev_count, prev_cnt,
+ new_cnt) != prev_cnt);
+
+ delta = (new_cnt - prev_cnt) & HISI_PCIE_MAX_PERIOD;
+ local64_add(delta, &event->count);
+}
+
+static void hisi_pcie_pmu_read(struct perf_event *event)
+{
+ hisi_pcie_pmu_event_update(event);
+}
+
+static void hisi_pcie_pmu_set_period(struct perf_event *event)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+
+ local64_set(&hwc->prev_count, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_CNT, idx, HISI_PCIE_INIT_VAL);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EXT_CNT, idx, HISI_PCIE_INIT_VAL);
+}
+
+static void hisi_pcie_pmu_enable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val |= HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_disable_counter(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+ u64 val;
+
+ val = hisi_pcie_pmu_readq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx);
+ val &= ~HISI_PCIE_EVENT_EN;
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, val);
+}
+
+static void hisi_pcie_pmu_enable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 0);
+}
+
+static void hisi_pcie_pmu_disable_int(struct hisi_pcie_pmu *pcie_pmu, struct hw_perf_event *hwc)
+{
+ u32 idx = hwc->idx;
+
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_MASK, idx, 1);
+}
+
+static void hisi_pcie_pmu_reset_counter(struct hisi_pcie_pmu *pcie_pmu, int idx)
+{
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_RESET_CNT);
+ hisi_pcie_pmu_writeq(pcie_pmu, HISI_PCIE_EVENT_CTRL, idx, HISI_PCIE_INIT_SET);
+}
+
+static void hisi_pcie_pmu_start(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx = hwc->idx;
+ u64 prev_cnt;
+
+ if (WARN_ON_ONCE(!(hwc->state & PERF_HES_STOPPED)))
+ return;
+
+ WARN_ON_ONCE(!(hwc->state & PERF_HES_UPTODATE));
+ hwc->state = 0;
+
+ hisi_pcie_pmu_config_filter(event);
+ hisi_pcie_pmu_enable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_enable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_set_period(event);
+
+ if (flags & PERF_EF_RELOAD) {
+ prev_cnt = local64_read(&hwc->prev_count);
+ hisi_pcie_pmu_writeq(pcie_pmu, hwc->event_base, idx, prev_cnt);
+ }
+
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_stop(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_disable_int(pcie_pmu, hwc);
+ hisi_pcie_pmu_disable_counter(pcie_pmu, hwc);
+ hisi_pcie_pmu_clear_filter(event);
+ WARN_ON_ONCE(hwc->state & PERF_HES_STOPPED);
+ hwc->state |= PERF_HES_STOPPED;
+
+ if (hwc->state & PERF_HES_UPTODATE)
+ return;
+
+ hwc->state |= PERF_HES_UPTODATE;
+}
+
+static int hisi_pcie_pmu_add(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+ int idx;
+
+ hwc->state = PERF_HES_STOPPED | PERF_HES_UPTODATE;
+
+ /* Check all working events to find a related event. */
+ idx = hisi_pcie_pmu_find_related_event(pcie_pmu, event);
+ if (idx < 0)
+ return idx;
+
+ /* Current event shares an enabled counter with the related event */
+ if (idx < HISI_PCIE_MAX_COUNTERS) {
+ hwc->idx = idx;
+ goto start_count;
+ }
+
+ idx = hisi_pcie_pmu_get_event_idx(pcie_pmu);
+ if (idx < 0)
+ return idx;
+
+ hwc->idx = idx;
+ pcie_pmu->hw_events[idx] = event;
+ /* Reset Counter to avoid previous statistic interference. */
+ hisi_pcie_pmu_reset_counter(pcie_pmu, idx);
+
+start_count:
+ if (flags & PERF_EF_START)
+ hisi_pcie_pmu_start(event, PERF_EF_RELOAD);
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_del(struct perf_event *event, int flags)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(event->pmu);
+ struct hw_perf_event *hwc = &event->hw;
+
+ hisi_pcie_pmu_stop(event, PERF_EF_UPDATE);
+ pcie_pmu->hw_events[hwc->idx] = NULL;
+ perf_event_update_userpage(event);
+}
+
+static void hisi_pcie_pmu_enable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+ int num;
+
+ for (num = 0; num < HISI_PCIE_MAX_COUNTERS; num++) {
+ if (pcie_pmu->hw_events[num])
+ break;
+ }
+
+ if (num == HISI_PCIE_MAX_COUNTERS)
+ return;
+
+ writel(HISI_PCIE_GLOBAL_EN, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static void hisi_pcie_pmu_disable(struct pmu *pmu)
+{
+ struct hisi_pcie_pmu *pcie_pmu = to_pcie_pmu(pmu);
+
+ writel(HISI_PCIE_GLOBAL_NONE, pcie_pmu->base + HISI_PCIE_GLOBAL_CTRL);
+}
+
+static irqreturn_t hisi_pcie_pmu_irq(int irq, void *data)
+{
+ struct hisi_pcie_pmu *pcie_pmu = data;
+ irqreturn_t ret = IRQ_NONE;
+ struct perf_event *event;
+ u32 overflown;
+ int idx;
+
+ for (idx = 0; idx < HISI_PCIE_MAX_COUNTERS; idx++) {
+ overflown = hisi_pcie_pmu_readl(pcie_pmu, HISI_PCIE_INT_STAT, idx);
+ if (!overflown)
+ continue;
+
+ /* Clear status of interrupt. */
+ hisi_pcie_pmu_writel(pcie_pmu, HISI_PCIE_INT_STAT, idx, 1);
+ event = pcie_pmu->hw_events[idx];
+ if (!event)
+ continue;
+
+ hisi_pcie_pmu_event_update(event);
+ hisi_pcie_pmu_set_period(event);
+ ret = IRQ_HANDLED;
+ }
+
+ return ret;
+}
+
+static int hisi_pcie_pmu_irq_register(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int irq, ret;
+
+ ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to enable MSI vectors: %d\n", ret);
+ return ret;
+ }
+
+ irq = pci_irq_vector(pdev, 0);
+ ret = request_irq(irq, hisi_pcie_pmu_irq, IRQF_NOBALANCING | IRQF_NO_THREAD, DRV_NAME,
+ pcie_pmu);
+ if (ret) {
+ pci_err(pdev, "Failed to register IRQ: %d\n", ret);
+ pci_free_irq_vectors(pdev);
+ return ret;
+ }
+
+ pcie_pmu->irq = irq;
+
+ return 0;
+}
+
+static void hisi_pcie_pmu_irq_unregister(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ free_irq(pcie_pmu->irq, pcie_pmu);
+ pci_free_irq_vectors(pdev);
+}
+
+static int hisi_pcie_pmu_online_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+
+ if (pcie_pmu->on_cpu == -1) {
+ pcie_pmu->on_cpu = cpu;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(cpu)));
+ }
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_offline_cpu(unsigned int cpu, struct hlist_node *node)
+{
+ struct hisi_pcie_pmu *pcie_pmu = hlist_entry_safe(node, struct hisi_pcie_pmu, node);
+ unsigned int target;
+
+ /* Nothing to do if this CPU doesn't own the PMU */
+ if (pcie_pmu->on_cpu != cpu)
+ return 0;
+
+ pcie_pmu->on_cpu = -1;
+ /* Choose a new CPU from all online cpus. */
+ target = cpumask_first(cpu_online_mask);
+ if (target >= nr_cpu_ids) {
+ pci_err(pcie_pmu->pdev, "There is no CPU to set\n");
+ return 0;
+ }
+
+ perf_pmu_migrate_context(&pcie_pmu->pmu, cpu, target);
+ /* Use this CPU for event counting */
+ pcie_pmu->on_cpu = target;
+ WARN_ON(irq_set_affinity(pcie_pmu->irq, cpumask_of(target)));
+
+ return 0;
+}
+
+static struct attribute *hisi_pcie_pmu_events_attr[] = {
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_latency, 0x0010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mwr_cnt, 0x10010),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_latency, 0x0210),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_cnt, 0x10210),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_latency, 0x0011),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_cnt, 0x10011),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_flux, 0x1005),
+ HISI_PCIE_PMU_EVENT_ATTR(rx_mrd_time, 0x11005),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_flux, 0x2004),
+ HISI_PCIE_PMU_EVENT_ATTR(tx_mrd_time, 0x12004),
+ NULL
+};
+
+static struct attribute_group hisi_pcie_pmu_events_group = {
+ .name = "events",
+ .attrs = hisi_pcie_pmu_events_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_format_attr[] = {
+ HISI_PCIE_PMU_FORMAT_ATTR(event, "config:0-16"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_len, "config1:0-3"),
+ HISI_PCIE_PMU_FORMAT_ATTR(thr_mode, "config1:4"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_len, "config1:5-8"),
+ HISI_PCIE_PMU_FORMAT_ATTR(trig_mode, "config1:9"),
+ HISI_PCIE_PMU_FORMAT_ATTR(port, "config2:0-15"),
+ HISI_PCIE_PMU_FORMAT_ATTR(bdf, "config2:16-31"),
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_format_group = {
+ .name = "format",
+ .attrs = hisi_pcie_pmu_format_attr,
+};
+
+static struct attribute *hisi_pcie_pmu_bus_attrs[] = {
+ &dev_attr_bus.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_bus_attr_group = {
+ .attrs = hisi_pcie_pmu_bus_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_cpumask_attrs[] = {
+ &dev_attr_cpumask.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_cpumask_attr_group = {
+ .attrs = hisi_pcie_pmu_cpumask_attrs,
+};
+
+static struct attribute *hisi_pcie_pmu_identifier_attrs[] = {
+ &dev_attr_identifier.attr,
+ NULL
+};
+
+static const struct attribute_group hisi_pcie_pmu_identifier_attr_group = {
+ .attrs = hisi_pcie_pmu_identifier_attrs,
+};
+
+static const struct attribute_group *hisi_pcie_pmu_attr_groups[] = {
+ &hisi_pcie_pmu_events_group,
+ &hisi_pcie_pmu_format_group,
+ &hisi_pcie_pmu_bus_attr_group,
+ &hisi_pcie_pmu_cpumask_attr_group,
+ &hisi_pcie_pmu_identifier_attr_group,
+ NULL
+};
+
+static int hisi_pcie_alloc_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ struct hisi_pcie_reg_pair regs;
+ u16 sicl_id, core_id;
+ char *name;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_BDF);
+ pcie_pmu->bdf_min = regs.lo;
+ pcie_pmu->bdf_max = regs.hi;
+
+ regs = hisi_pcie_parse_reg_value(pcie_pmu, HISI_PCIE_REG_INFO);
+ sicl_id = regs.hi;
+ core_id = regs.lo;
+
+ name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "hisi_pcie%u_core%u", sicl_id, core_id);
+ if (!name)
+ return -ENOMEM;
+
+ pcie_pmu->pdev = pdev;
+ pcie_pmu->on_cpu = -1;
+ pcie_pmu->identifier = readl(pcie_pmu->base + HISI_PCIE_REG_VERSION);
+ pcie_pmu->pmu = (struct pmu) {
+ .name = name,
+ .module = THIS_MODULE,
+ .event_init = hisi_pcie_pmu_event_init,
+ .pmu_enable = hisi_pcie_pmu_enable,
+ .pmu_disable = hisi_pcie_pmu_disable,
+ .add = hisi_pcie_pmu_add,
+ .del = hisi_pcie_pmu_del,
+ .start = hisi_pcie_pmu_start,
+ .stop = hisi_pcie_pmu_stop,
+ .read = hisi_pcie_pmu_read,
+ .task_ctx_nr = perf_invalid_context,
+ .attr_groups = hisi_pcie_pmu_attr_groups,
+ .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
+ };
+
+ return 0;
+}
+
+static int hisi_pcie_init_pmu(struct pci_dev *pdev, struct hisi_pcie_pmu *pcie_pmu)
+{
+ int ret;
+
+ pcie_pmu->base = pci_ioremap_bar(pdev, 2);
+ if (!pcie_pmu->base) {
+ pci_err(pdev, "Ioremap failed for pcie_pmu resource\n");
+ return -ENOMEM;
+ }
+
+ ret = hisi_pcie_alloc_pmu(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = hisi_pcie_pmu_irq_register(pdev, pcie_pmu);
+ if (ret)
+ goto err_iounmap;
+
+ ret = cpuhp_state_add_instance(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ if (ret) {
+ pci_err(pdev, "Failed to register hotplug: %d\n", ret);
+ goto err_irq_unregister;
+ }
+
+ ret = perf_pmu_register(&pcie_pmu->pmu, pcie_pmu->pmu.name, -1);
+ if (ret) {
+ pci_err(pdev, "Failed to register PCIe PMU: %d\n", ret);
+ goto err_hotplug_unregister;
+ }
+
+ return ret;
+
+err_hotplug_unregister:
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+
+err_irq_unregister:
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+
+err_iounmap:
+ iounmap(pcie_pmu->base);
+
+ return ret;
+}
+
+static void hisi_pcie_uninit_pmu(struct pci_dev *pdev)
+{
+ struct hisi_pcie_pmu *pcie_pmu = pci_get_drvdata(pdev);
+
+ perf_pmu_unregister(&pcie_pmu->pmu);
+ cpuhp_state_remove_instance_nocalls(
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE, &pcie_pmu->node);
+ hisi_pcie_pmu_irq_unregister(pdev, pcie_pmu);
+ iounmap(pcie_pmu->base);
+}
+
+static int hisi_pcie_init_dev(struct pci_dev *pdev)
+{
+ int ret;
+
+ ret = pcim_enable_device(pdev);
+ if (ret) {
+ pci_err(pdev, "Failed to enable PCI device: %d\n", ret);
+ return ret;
+ }
+
+ ret = pcim_iomap_regions(pdev, BIT(2), DRV_NAME);
+ if (ret < 0) {
+ pci_err(pdev, "Failed to request PCI mem regions: %d\n", ret);
+ return ret;
+ }
+
+ pci_set_master(pdev);
+
+ return 0;
+}
+
+static int hisi_pcie_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+ struct hisi_pcie_pmu *pcie_pmu;
+ int ret;
+
+ pcie_pmu = devm_kzalloc(&pdev->dev, sizeof(*pcie_pmu), GFP_KERNEL);
+ if (!pcie_pmu)
+ return -ENOMEM;
+
+ ret = hisi_pcie_init_dev(pdev);
+ if (ret)
+ return ret;
+
+ ret = hisi_pcie_init_pmu(pdev, pcie_pmu);
+ if (ret)
+ return ret;
+
+ pci_set_drvdata(pdev, pcie_pmu);
+
+ return ret;
+}
+
+static void hisi_pcie_pmu_remove(struct pci_dev *pdev)
+{
+ hisi_pcie_uninit_pmu(pdev);
+ pci_set_drvdata(pdev, NULL);
+}
+
+static const struct pci_device_id hisi_pcie_pmu_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_HUAWEI, 0xa12d) },
+ { 0, }
+};
+MODULE_DEVICE_TABLE(pci, hisi_pcie_pmu_ids);
+
+static struct pci_driver hisi_pcie_pmu_driver = {
+ .name = DRV_NAME,
+ .id_table = hisi_pcie_pmu_ids,
+ .probe = hisi_pcie_pmu_probe,
+ .remove = hisi_pcie_pmu_remove,
+};
+
+static int __init hisi_pcie_module_init(void)
+{
+ int ret;
+
+ ret = cpuhp_setup_state_multi(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ "AP_PERF_ARM_HISI_PCIE_PMU_ONLINE",
+ hisi_pcie_pmu_online_cpu,
+ hisi_pcie_pmu_offline_cpu);
+ if (ret) {
+ pr_err("Failed to setup PCIe PMU hotplug: %d\n", ret);
+ return ret;
+ }
+
+ ret = pci_register_driver(&hisi_pcie_pmu_driver);
+ if (ret)
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+
+ return ret;
+}
+module_init(hisi_pcie_module_init);
+
+static void __exit hisi_pcie_module_exit(void)
+{
+ pci_unregister_driver(&hisi_pcie_pmu_driver);
+ cpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE);
+}
+module_exit(hisi_pcie_module_exit);
+
+MODULE_DESCRIPTION("HiSilicon PCIe PMU driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Qi Liu <liuqi115(a)huawei.com>");
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index b98b9eb7d5f8..24e7be132046 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -178,6 +178,9 @@ enum cpuhp_state {
CPUHP_AP_PERF_ARM_HISI_L3_ONLINE,
CPUHP_AP_PERF_ARM_HISI_PA_ONLINE,
CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE,
+ #ifndef __GENKSYMS__
+ CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,
+ #endif
CPUHP_AP_PERF_ARM_L2X0_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE,
CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,
--
2.20.1
1
14
d1ac096f8869 mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and
_mcopy_atomic()
c6cbf5431a62 mm: hugetlb: fix missing cache flush in copy_huge_page_from_user()
308ff6a6e768 mm: fix missing cache flush for all tail pages of compound page
185fa5984d7a Bluetooth: Fix the creation of hdev->name
9ff4a6b80642 arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
dfb55dcf9d39 nfp: bpf: silence bitwise vs. logical OR warning
f89f76f4b0e7 drm/amd/display/dc/gpio/gpio_service: Pass around correct
dce{version, environment} types
efd1429fa99b block: drbd: drbd_nl: Make conversion to 'enum drbd_ret_code'
explicit
a71658c7db0b regulator: consumer: Add missing stubs to regulator/consumer.h
7648f42d1a62 MIPS: Use address-of operator on section symbols
Total patches: 10
Dmitry Osipenko (1):
regulator: consumer: Add missing stubs to regulator/consumer.h
Itay Iellin (1):
Bluetooth: Fix the creation of hdev->name
Lee Jones (2):
block: drbd: drbd_nl: Make conversion to 'enum drbd_ret_code' explicit
drm/amd/display/dc/gpio/gpio_service: Pass around correct
dce_{version, environment} types
Mike Rapoport (1):
arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
Muchun Song (3):
mm: fix missing cache flush for all tail pages of compound page
mm: hugetlb: fix missing cache flush in copy_huge_page_from_user()
mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and
__mcopy_atomic()
Nathan Chancellor (2):
MIPS: Use address-of operator on section symbols
nfp: bpf: silence bitwise vs. logical OR warning
Documentation/vm/memory-model.rst | 3 +-
arch/arm/Kconfig | 8 ++---
arch/arm/mach-bcm/Kconfig | 1 -
arch/arm/mach-davinci/Kconfig | 1 -
arch/arm/mach-exynos/Kconfig | 1 -
arch/arm/mach-highbank/Kconfig | 1 -
arch/arm/mach-omap2/Kconfig | 1 -
arch/arm/mach-s5pv210/Kconfig | 1 -
arch/arm/mach-tango/Kconfig | 1 -
arch/mips/bmips/setup.c | 2 +-
arch/mips/lantiq/prom.c | 2 +-
arch/mips/pic32/pic32mzda/init.c | 2 +-
arch/mips/ralink/of.c | 2 +-
drivers/block/drbd/drbd_nl.c | 13 +++++---
.../drm/amd/display/dc/gpio/gpio_service.c | 12 +++----
.../display/include/gpio_service_interface.h | 4 +--
drivers/net/ethernet/netronome/nfp/nfp_asm.c | 4 +--
fs/proc/kcore.c | 2 --
include/linux/mmzone.h | 31 -------------------
include/linux/regulator/consumer.h | 30 ++++++++++++++++++
include/net/bluetooth/hci_core.h | 3 ++
mm/memory.c | 2 ++
mm/migrate.c | 7 +++--
mm/mmzone.c | 14 ---------
mm/userfaultfd.c | 3 ++
mm/vmstat.c | 4 ---
net/bluetooth/hci_core.c | 6 ++--
27 files changed, 71 insertions(+), 90 deletions(-)
--
2.20.1
1
10

[PATCH openEuler-5.10-LTS 1/6] coresight: etm4x: Workaround CPU hung bug on HiSilicon ETM
by Zheng Zengkai 09 Aug '22
by Zheng Zengkai 09 Aug '22
09 Aug '22
From: Junhao He <hejunhao3(a)huawei.com>
driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EZY2
------------------------------------------------------------------
In FIFO mode, when the state of sink buffer is full, the sink device will
continuously backpressures the ETM, so that the ETM cannot switch to the
idle state. In this case, the WFx instruction cannot be executed because
the CPU detects that the ETM is not in the idle state which that will
cause CPU hung.
We workaround this issue on HiSilicon ETM by setting bit 13 of TRCAUXCTLR
which is used to indicate that the ETM is in the idle state.
The call trace is shown below:
rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
rcu: 10-...0: (1 ticks this GP) idle=5b6/1/0x4000000000000000 softirq=12309/12318 fqs=114196
(detected by 67, t=330041 jiffies, g=309253, q=453663)
Task dump for CPU 10:
task:ksoftirqd/10 state:R running task stack: 0 pid: 64 ppid: 2 flags:0x0000000a
Call trace:
__switch_to+0xbc/0xfc
irqtime_account_irq+0x58/0xc4
__do_softirq+0x6c/0x358
run_ksoftirqd+0x68/0x90
smpboot_thread_fn+0x15c/0x1a0
kthread+0x108/0x13c
ret_from_fork+0x10/0x18
watchdog: BUG: soft lockup - CPU#35 stuck for 22s! [bash:133345]
...
Call trace:
smp_call_function_single+0x178/0x190
etm4_disable_sysfs+0x74/0xfc [coresight_etm4x]
etm4_disable+0x6c/0x70 [coresight_etm4x]
coresight_disable_source+0x7c/0xa0 [coresight]
coresight_disable+0x6c/0x13c [coresight]
enable_source_store+0x88/0xa0 [coresight]
dev_attr_store+0x20/0x34
sysfs_kf_write+0x4c/0x5c
kernfs_fop_write_iter+0x130/0x1c0
new_sync_write+0xec/0x18c
vfs_write+0x214/0x2ac
ksys_write+0x70/0xfc
__arm64_sys_write+0x24/0x30
el0_svc_common.constprop.0+0x7c/0x1bc
do_el0_svc+0x2c/0x94
el0_svc+0x20/0x30
el0_sync_handler+0xb0/0xb4
el0_sync+0x160/0x180
Signed-off-by: Qi Liu <liuqi115(a)huawei.com>
Signed-off-by: Junhao He <hejunhao3(a)huawei.com>
Reviewed-by: Jay Fang <f.fangjian(a)huawei.com>
Acked-by: Xie XiuQi <xiexiuqi(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
.../coresight/coresight-etm4x-core.c | 37 +++++++++++++++----
drivers/hwtracing/coresight/coresight-etm4x.h | 1 +
2 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
index d4d9c8bb88ca..881da29cbd5a 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -116,8 +116,10 @@ struct etm4_enable_arg {
#define HISI_HIP08_CORE_COMMIT_LVL_1 0b01
#define HISI_HIP08_CORE_COMMIT_REG sys_reg(3, 1, 15, 2, 5)
+#define HISI_HIP08_AUXCTRL_CHICKEN_BIT BIT(13)
+
struct etm4_arch_features {
- void (*arch_callback)(bool enable);
+ void (*arch_callback)(void *info);
};
static bool etm4_hisi_match_pid(unsigned int id)
@@ -125,8 +127,9 @@ static bool etm4_hisi_match_pid(unsigned int id)
return (id & ETM4_AMBA_MASK) == HISI_HIP08_AMBA_ID;
}
-static void etm4_hisi_config_core_commit(bool enable)
+static void etm4_hisi_config_core_commit(void *info)
{
+ bool enable = *(bool *)info;
u8 commit = enable ? HISI_HIP08_CORE_COMMIT_LVL_1 :
HISI_HIP08_CORE_COMMIT_FULL;
u64 val;
@@ -143,48 +146,67 @@ static void etm4_hisi_config_core_commit(bool enable)
write_sysreg_s(val, HISI_HIP08_CORE_COMMIT_REG);
}
+static void etm4_hisi_config_auxctrlr(void *info)
+{
+ struct etmv4_drvdata *drvdata = info;
+
+ /* Switch the ETM to idle state */
+ writel_relaxed(HISI_HIP08_AUXCTRL_CHICKEN_BIT, drvdata->base + TRCAUXCTLR);
+}
+
static struct etm4_arch_features etm4_features[] = {
[ETM4_IMPDEF_HISI_CORE_COMMIT] = {
.arch_callback = etm4_hisi_config_core_commit,
},
+ [ETM4_IMPDEF_HISI_SET_AUXCTRLR] = {
+ .arch_callback = etm4_hisi_config_auxctrlr,
+ },
{},
};
static void etm4_enable_arch_specific(struct etmv4_drvdata *drvdata)
{
struct etm4_arch_features *ftr;
+ bool enable = true;
int bit;
for_each_set_bit(bit, drvdata->arch_features, ETM4_IMPDEF_FEATURE_MAX) {
ftr = &etm4_features[bit];
- if (ftr->arch_callback)
- ftr->arch_callback(true);
+ if (bit == ETM4_IMPDEF_HISI_CORE_COMMIT && ftr->arch_callback)
+ ftr->arch_callback(&enable);
+
+ if (bit == ETM4_IMPDEF_HISI_SET_AUXCTRLR && ftr->arch_callback)
+ ftr->arch_callback(drvdata);
}
}
static void etm4_disable_arch_specific(struct etmv4_drvdata *drvdata)
{
struct etm4_arch_features *ftr;
+ bool enable = false;
int bit;
for_each_set_bit(bit, drvdata->arch_features, ETM4_IMPDEF_FEATURE_MAX) {
ftr = &etm4_features[bit];
- if (ftr->arch_callback)
- ftr->arch_callback(false);
+ if (bit == ETM4_IMPDEF_HISI_CORE_COMMIT && ftr->arch_callback)
+ ftr->arch_callback(&enable);
}
}
static void etm4_check_arch_features(struct etmv4_drvdata *drvdata,
unsigned int id)
{
- if (etm4_hisi_match_pid(id))
+ if (etm4_hisi_match_pid(id)) {
set_bit(ETM4_IMPDEF_HISI_CORE_COMMIT, drvdata->arch_features);
+ set_bit(ETM4_IMPDEF_HISI_SET_AUXCTRLR, drvdata->arch_features);
+ }
}
#else
static void etm4_enable_arch_specific(struct etmv4_drvdata *drvdata)
{
+ writel_relaxed(0x0, drvdata->base + TRCAUXCTLR);
}
static void etm4_disable_arch_specific(struct etmv4_drvdata *drvdata)
@@ -223,7 +245,6 @@ static int etm4_enable_hw(struct etmv4_drvdata *drvdata)
writel_relaxed(config->pe_sel, drvdata->base + TRCPROCSELR);
writel_relaxed(config->cfg, drvdata->base + TRCCONFIGR);
/* nothing specific implemented */
- writel_relaxed(0x0, drvdata->base + TRCAUXCTLR);
writel_relaxed(config->eventctrl0, drvdata->base + TRCEVENTCTL0R);
writel_relaxed(config->eventctrl1, drvdata->base + TRCEVENTCTL1R);
if (drvdata->stallctl)
diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h
index 3dd3e0633328..ef9d7365c2da 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x.h
+++ b/drivers/hwtracing/coresight/coresight-etm4x.h
@@ -206,6 +206,7 @@
enum etm_impdef_type {
ETM4_IMPDEF_HISI_CORE_COMMIT,
+ ETM4_IMPDEF_HISI_SET_AUXCTRLR,
ETM4_IMPDEF_FEATURE_MAX,
};
--
2.20.1
1
5

09 Aug '22
From: Peter Zijlstra <peterz(a)infradead.org>
mainline inclusion
from mainline-v5.12-rc1
commit 87ccc826bf1c9e5ab4c2f649b404e02c63e47622
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5LCHG
CVE: NA
--------------------------------
Currently REG_SP_INDIRECT is unused but means (%rsp + offset),
change it to mean (%rsp) + offset.
The reason is that we're going to swizzle stack in the middle of a C
function with non-trivial stack footprint. This means that when the
unwinder finds the ToS, it needs to dereference it (%rsp) and then add
the offset to the next frame, resulting in: (%rsp) + offset
This is somewhat unfortunate, since REG_BP_INDIRECT is used (by DRAP)
and thus needs to retain the current (%rbp + offset).
Signed-off-by: Peter Zijlstra (Intel) <peterz(a)infradead.org>
Reviewed-by: Miroslav Benes <mbenes(a)suse.cz>
Acked-by: Josh Poimboeuf <jpoimboe(a)redhat.com>
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Reviewed-by: Zhang Jianhua <chris.zjh(a)huawei.com>
Reviewed-by: Liao Chang <liaochang1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
arch/x86/kernel/unwind_orc.c | 5 ++++-
tools/objtool/orc_dump.c | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/unwind_orc.c b/arch/x86/kernel/unwind_orc.c
index bafe953f5d7f..eea8ec5eca3b 100644
--- a/arch/x86/kernel/unwind_orc.c
+++ b/arch/x86/kernel/unwind_orc.c
@@ -450,7 +450,7 @@ bool unwind_next_frame(struct unwind_state *state)
break;
case ORC_REG_SP_INDIRECT:
- sp = state->sp + orc->sp_offset;
+ sp = state->sp;
indirect = true;
break;
@@ -500,6 +500,9 @@ bool unwind_next_frame(struct unwind_state *state)
if (indirect) {
if (!deref_stack_reg(state, sp, &sp))
goto err;
+
+ if (orc->sp_reg == ORC_REG_SP_INDIRECT)
+ sp += orc->sp_offset;
}
/* Find IP, SP and possibly regs: */
diff --git a/tools/objtool/orc_dump.c b/tools/objtool/orc_dump.c
index faa444270ee3..ba28830aace2 100644
--- a/tools/objtool/orc_dump.c
+++ b/tools/objtool/orc_dump.c
@@ -64,7 +64,7 @@ static void print_reg(unsigned int reg, int offset)
if (reg == ORC_REG_BP_INDIRECT)
printf("(bp%+d)", offset);
else if (reg == ORC_REG_SP_INDIRECT)
- printf("(sp%+d)", offset);
+ printf("(sp)%+d", offset);
else if (reg == ORC_REG_UNDEFINED)
printf("(und)");
else
--
2.25.1
1
6

[PATCH openEuler-1.0-LTS] netfilter: nf_queue: do not allow packet truncation below transport header offset
by Yongqiang Liu 09 Aug '22
by Yongqiang Liu 09 Aug '22
09 Aug '22
From: Florian Westphal <fw(a)strlen.de>
mainline inclusion
from mainline-v5.19-rc3
commit 99a63d36cb3ed5ca3aa6fcb64cffbeaf3b0fb164
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5J9R4
CVE: CVE-2022-36946
--------------------------------
Domingo Dirutigliano and Nicola Guerrera report kernel panic when
sending nf_queue verdict with 1-byte nfta_payload attribute.
The IP/IPv6 stack pulls the IP(v6) header from the packet after the
input hook.
If user truncates the packet below the header size, this skb_pull() will
result in a malformed skb (skb->len < 0).
Fixes: 7af4cc3fa158 ("[NETFILTER]: Add "nfnetlink_queue" netfilter queue handler over nfnetlink")
Reported-by: Domingo Dirutigliano <pwnzer0tt1(a)proton.me>
Signed-off-by: Florian Westphal <fw(a)strlen.de>
Reviewed-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/netfilter/nfnetlink_queue.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index a5aff2834bd6..cd496b074a71 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -850,11 +850,16 @@ nfqnl_enqueue_packet(struct nf_queue_entry *entry, unsigned int queuenum)
}
static int
-nfqnl_mangle(void *data, int data_len, struct nf_queue_entry *e, int diff)
+nfqnl_mangle(void *data, unsigned int data_len, struct nf_queue_entry *e, int diff)
{
struct sk_buff *nskb;
if (diff < 0) {
+ unsigned int min_len = skb_transport_offset(e->skb);
+
+ if (data_len < min_len)
+ return -EINVAL;
+
if (pskb_trim(e->skb, data_len))
return -ENOMEM;
} else if (diff > 0) {
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] openvswitch: fix OOB access in reserve_sfa_size()
by Yongqiang Liu 08 Aug '22
by Yongqiang Liu 08 Aug '22
08 Aug '22
From: Paolo Valerio <pvalerio(a)redhat.com>
stable inclusion
from stable-v4.19.240
commit bbbf059337f9a74285c1cf088ff85ee92d149e64
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5KKF2
CVE: CVE-2022-2639
-------------------------------------------------
commit cefa91b2332d7009bc0be5d951d6cbbf349f90f8 upstream.
Given a sufficiently large number of actions, while copying and
reserving memory for a new action of a new flow, if next_offset is
greater than MAX_ACTIONS_BUFSIZE, the function reserve_sfa_size() does
not return -EMSGSIZE as expected, but it allocates MAX_ACTIONS_BUFSIZE
bytes increasing actions_len by req_size. This can then lead to an OOB
write access, especially when further actions need to be copied.
Fix it by rearranging the flow action size check.
KASAN splat below:
==================================================================
BUG: KASAN: slab-out-of-bounds in reserve_sfa_size+0x1ba/0x380 [openvswitch]
Write of size 65360 at addr ffff888147e4001c by task handler15/836
CPU: 1 PID: 836 Comm: handler15 Not tainted 5.18.0-rc1+ #27
...
Call Trace:
<TASK>
dump_stack_lvl+0x45/0x5a
print_report.cold+0x5e/0x5db
? __lock_text_start+0x8/0x8
? reserve_sfa_size+0x1ba/0x380 [openvswitch]
kasan_report+0xb5/0x130
? reserve_sfa_size+0x1ba/0x380 [openvswitch]
kasan_check_range+0xf5/0x1d0
memcpy+0x39/0x60
reserve_sfa_size+0x1ba/0x380 [openvswitch]
__add_action+0x24/0x120 [openvswitch]
ovs_nla_add_action+0xe/0x20 [openvswitch]
ovs_ct_copy_action+0x29d/0x1130 [openvswitch]
? __kernel_text_address+0xe/0x30
? unwind_get_return_address+0x56/0xa0
? create_prof_cpu_mask+0x20/0x20
? ovs_ct_verify+0xf0/0xf0 [openvswitch]
? prep_compound_page+0x198/0x2a0
? __kasan_check_byte+0x10/0x40
? kasan_unpoison+0x40/0x70
? ksize+0x44/0x60
? reserve_sfa_size+0x75/0x380 [openvswitch]
__ovs_nla_copy_actions+0xc26/0x2070 [openvswitch]
? __zone_watermark_ok+0x420/0x420
? validate_set.constprop.0+0xc90/0xc90 [openvswitch]
? __alloc_pages+0x1a9/0x3e0
? __alloc_pages_slowpath.constprop.0+0x1da0/0x1da0
? unwind_next_frame+0x991/0x1e40
? __mod_node_page_state+0x99/0x120
? __mod_lruvec_page_state+0x2e3/0x470
? __kasan_kmalloc_large+0x90/0xe0
ovs_nla_copy_actions+0x1b4/0x2c0 [openvswitch]
ovs_flow_cmd_new+0x3cd/0xb10 [openvswitch]
...
Cc: stable(a)vger.kernel.org
Fixes: f28cd2af22a0 ("openvswitch: fix flow actions reallocation")
Signed-off-by: Paolo Valerio <pvalerio(a)redhat.com>
Acked-by: Eelco Chaudron <echaudro(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/openvswitch/flow_netlink.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c
index eab5e8eaddaa..217c64fbc659 100644
--- a/net/openvswitch/flow_netlink.c
+++ b/net/openvswitch/flow_netlink.c
@@ -2316,7 +2316,7 @@ static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa,
new_acts_size = max(next_offset + req_size, ksize(*sfa) * 2);
if (new_acts_size > MAX_ACTIONS_BUFSIZE) {
- if ((MAX_ACTIONS_BUFSIZE - next_offset) < req_size) {
+ if ((next_offset + req_size) > MAX_ACTIONS_BUFSIZE) {
OVS_NLERR(log, "Flow action size exceeds max %u",
MAX_ACTIONS_BUFSIZE);
return ERR_PTR(-EMSGSIZE);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] dm thin: use refcount_t for thin_c reference counting
by Yongqiang Liu 08 Aug '22
by Yongqiang Liu 08 Aug '22
08 Aug '22
From: John Pittman <jpittman(a)redhat.com>
mainline inclusion
from mainline-v4.20-rc1
commit 22d4c291f58752d14efb8a185b772a3fc3e947d2
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5KSEX
CVE: NA
--------------------------------
The API surrounding refcount_t should be used in place of atomic_t
when variables are being used as reference counters. It can
potentially prevent reference counter overflows and use-after-free
conditions. In the dm thin layer, one such example is tc->refcount.
Change this from the atomic_t API to the refcount_t API to prevent
mentioned conditions.
Signed-off-by: John Pittman <jpittman(a)redhat.com>
Signed-off-by: Mike Snitzer <snitzer(a)redhat.com>
Signed-off-by: Luo Meng <luomeng12(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/md/dm-thin.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
index 2b6dd7a275eb..e352aa3fdfb0 100644
--- a/drivers/md/dm-thin.c
+++ b/drivers/md/dm-thin.c
@@ -355,7 +355,7 @@ struct thin_c {
* Ensures the thin is not destroyed until the worker has finished
* iterating the active_thins list.
*/
- atomic_t refcount;
+ refcount_t refcount;
struct completion can_destroy;
};
@@ -4100,12 +4100,12 @@ static struct target_type pool_target = {
*--------------------------------------------------------------*/
static void thin_get(struct thin_c *tc)
{
- atomic_inc(&tc->refcount);
+ refcount_inc(&tc->refcount);
}
static void thin_put(struct thin_c *tc)
{
- if (atomic_dec_and_test(&tc->refcount))
+ if (refcount_dec_and_test(&tc->refcount))
complete(&tc->can_destroy);
}
@@ -4255,7 +4255,7 @@ static int thin_ctr(struct dm_target *ti, unsigned argc, char **argv)
r = -EINVAL;
goto bad;
}
- atomic_set(&tc->refcount, 1);
+ refcount_set(&tc->refcount, 1);
init_completion(&tc->can_destroy);
list_add_tail_rcu(&tc->list, &tc->pool->active_thins);
spin_unlock_irqrestore(&tc->pool->lock, flags);
--
2.25.1
1
0
议题:英特尔Sapphire Rapids平台PMU新特性
简介:主要介绍一下英特尔的新一代Sapphire Rapids平台上的PMU新特性,
以及Linux的支持情况。
1
0

[PATCH openEuler-1.0-LTS 01/29] ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
by Yongqiang Liu 08 Aug '22
by Yongqiang Liu 08 Aug '22
08 Aug '22
From: Sergey Shtylyov <s.shtylyov(a)omp.ru>
stable inclusion
from stable-4.19.249
commit a810bd5af06977a847d1f202b22d7defd5c62497
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5I4FP
CVE: NA
--------------------------------
[ Upstream commit bf476fe22aa1851bab4728e0c49025a6a0bea307 ]
In an unlikely (and probably wrong?) case that the 'ppi' parameter of
ata_host_alloc_pinfo() points to an array starting with a NULL pointer,
there's going to be a kernel oops as the 'pi' local variable won't get
reassigned from the initial value of NULL. Initialize 'pi' instead to
'&ata_dummy_port_info' to fix the possible kernel oops for good...
Found by Linux Verification Center (linuxtesting.org) with the SVACE static
analysis tool.
Signed-off-by: Sergey Shtylyov <s.shtylyov(a)omp.ru>
Signed-off-by: Damien Le Moal <damien.lemoal(a)opensource.wdc.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/ata/libata-core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 290ff99bf1d8..0bcdc5261480 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -6240,7 +6240,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
const struct ata_port_info * const * ppi,
int n_ports)
{
- const struct ata_port_info *pi;
+ const struct ata_port_info *pi = &ata_dummy_port_info;
struct ata_host *host;
int i, j;
@@ -6248,7 +6248,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
if (!host)
return NULL;
- for (i = 0, j = 0, pi = NULL; i < host->n_ports; i++) {
+ for (i = 0, j = 0; i < host->n_ports; i++) {
struct ata_port *ap = host->ports[i];
if (ppi[j])
--
2.25.1
1
28

[PATCH openEuler-1.0-LTS] ipv6/addrconf: fix a null-ptr-deref bug for ip6_ptr
by Yongqiang Liu 05 Aug '22
by Yongqiang Liu 05 Aug '22
05 Aug '22
From: Ziyang Xuan <william.xuanziyang(a)huawei.com>
mainline inclusion
from mainline-v5.19
commit 85f0173df35e5462d89947135a6a5599c6c3ef6f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5JW9C
CVE: NA
-------------------------------
Change net device's MTU to smaller than IPV6_MIN_MTU or unregister
device while matching route. That may trigger null-ptr-deref bug
for ip6_ptr probability as following.
=========================================================
BUG: KASAN: null-ptr-deref in find_match.part.0+0x70/0x134
Read of size 4 at addr 0000000000000308 by task ping6/263
CPU: 2 PID: 263 Comm: ping6 Not tainted 5.19.0-rc7+ #14
Call trace:
dump_backtrace+0x1a8/0x230
show_stack+0x20/0x70
dump_stack_lvl+0x68/0x84
print_report+0xc4/0x120
kasan_report+0x84/0x120
__asan_load4+0x94/0xd0
find_match.part.0+0x70/0x134
__find_rr_leaf+0x408/0x470
fib6_table_lookup+0x264/0x540
ip6_pol_route+0xf4/0x260
ip6_pol_route_output+0x58/0x70
fib6_rule_lookup+0x1a8/0x330
ip6_route_output_flags_noref+0xd8/0x1a0
ip6_route_output_flags+0x58/0x160
ip6_dst_lookup_tail+0x5b4/0x85c
ip6_dst_lookup_flow+0x98/0x120
rawv6_sendmsg+0x49c/0xc70
inet_sendmsg+0x68/0x94
Reproducer as following:
Firstly, prepare conditions:
$ip netns add ns1
$ip netns add ns2
$ip link add veth1 type veth peer name veth2
$ip link set veth1 netns ns1
$ip link set veth2 netns ns2
$ip netns exec ns1 ip -6 addr add 2001:0db8:0:f101::1/64 dev veth1
$ip netns exec ns2 ip -6 addr add 2001:0db8:0:f101::2/64 dev veth2
$ip netns exec ns1 ifconfig veth1 up
$ip netns exec ns2 ifconfig veth2 up
$ip netns exec ns1 ip -6 route add 2000::/64 dev veth1 metric 1
$ip netns exec ns2 ip -6 route add 2001::/64 dev veth2 metric 1
Secondly, execute the following two commands in two ssh windows
respectively:
$ip netns exec ns1 sh
$while true; do ip -6 addr add 2001:0db8:0:f101::1/64 dev veth1; ip -6 route add 2000::/64 dev veth1 metric 1; ping6 2000::2; done
$ip netns exec ns1 sh
$while true; do ip link set veth1 mtu 1000; ip link set veth1 mtu 1500; sleep 5; done
It is because ip6_ptr has been assigned to NULL in addrconf_ifdown() firstly,
then ip6_ignore_linkdown() accesses ip6_ptr directly without NULL check.
cpu0 cpu1
fib6_table_lookup
__find_rr_leaf
addrconf_notify [ NETDEV_CHANGEMTU ]
addrconf_ifdown
RCU_INIT_POINTER(dev->ip6_ptr, NULL)
find_match
ip6_ignore_linkdown
So we can add NULL check for ip6_ptr before using in ip6_ignore_linkdown() to
fix the null-ptr-deref bug.
Fixes: dcd1f572954f ("net/ipv6: Remove fib6_idev")
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: David Ahern <dsahern(a)kernel.org>
Link: https://lore.kernel.org/r/20220728013307.656257-1-william.xuanziyang@huawei…
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Conflicts:
include/net/addrconf.h
net/ipv6/route.c
Signed-off-by: Ziyang Xuan <william.xuanziyang(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/ipv6/route.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 8efb03cc6f24..31c285d0f8c3 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -655,6 +655,9 @@ static inline bool fib6_ignore_linkdown(const struct fib6_info *f6i)
if (dev) {
const struct inet6_dev *idev = __in6_dev_get(dev);
+ if (unlikely(!idev))
+ return true;
+
rc = !!idev->cnf.ignore_routes_with_linkdown;
}
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] io_uring: add missing item types for various requests
by Yongqiang Liu 05 Aug '22
by Yongqiang Liu 05 Aug '22
05 Aug '22
From: Jens Axboe <axboe(a)kernel.dk>
stable inclusion
from stable-v5.10.125
commit df3f3bb5059d20ef094d6b2f0256c4bf4127a859
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5IM3T
CVE: CVE-2022-2327
--------------------------------
Any read/write should grab current->nsproxy, denoted by IO_WQ_WORK_FILES
as it refers to current->files as well, and connect and recv/recvmsg,
send/sendmsg should grab current->fs which is denoted by IO_WQ_WORK_FS.
No upstream commit exists for this issue.
Reported-by: Bing-Jhong Billy Jheng <billy(a)starlabs.sg>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Conflicts:
1. read/write already grab current->nsproxy, thus don't modified
read/write related ops.
2. 'work_flags' doesn't exist, io_op_def is using field 'needs_fs' to
decide if 'current->fs' should be grabbed.
Signed-off-by: Yu Kuai <yukuai3(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/io_uring.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 8a96b7df4112..d4e430b51098 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -816,6 +816,7 @@ static const struct io_op_def io_op_defs[] = {
.async_ctx = 1,
.needs_mm = 1,
.needs_file = 1,
+ .needs_fs = 1,
.unbound_nonreg_file = 1,
.pollout = 1,
},
@@ -864,12 +865,14 @@ static const struct io_op_def io_op_defs[] = {
[IORING_OP_SEND] = {
.needs_mm = 1,
.needs_file = 1,
+ .needs_fs = 1,
.unbound_nonreg_file = 1,
.pollout = 1,
},
[IORING_OP_RECV] = {
.needs_mm = 1,
.needs_file = 1,
+ .needs_fs = 1,
.unbound_nonreg_file = 1,
.pollin = 1,
.buffer_select = 1,
--
2.25.1
1
0

05 Aug '22
Add programmable schedule feature for openEuler-22.09.
Chen Hui (12):
sched: programmable: Add a tag for the task group
sched: programmable: Add user interface of task group tag
sched: programmable: Add a tag for the task
sched: programmable: Add user interface of task tag
sched: programmable: add bpf_sched_task_tag_of helper function
sched: programmable: Add convenient helper functions to convert sched
entity
bpf: BPF samples support SCHED program type
samples: bpf: Add bpf sched preempt sample program
bpf:programmable: Add four helper functions to get cpu stat
bpf:programmable: Add cpumask ops collection
sched: programmable: Add lib for sched programmable
sched: programmable: Add hook for select_task_rq_fair
Guan Jing (2):
sched: programmable: Add hook for entity_before
samples: bpf: Add bpf sched pick task sample
Hui Tang (3):
bpf:programmable: Add helper func to check cpu share cache
bpf:programmable: Add helper func to set cpus_ptr in task
samples:bpf: Add samples for cfs select core
Ren Zhijie (3):
sched: programmable: add bpf_sched_tg_tag_of helper function
sched: programmable: Add helpers to set tag of task or task_group
sched: programmable: Add helper function for cpu topology.
fs/proc/base.c | 65 ++++
include/linux/bpf_topology.h | 46 +++
include/linux/sched.h | 85 ++++++
include/linux/sched_hook_defs.h | 7 +-
include/uapi/linux/bpf.h | 112 +++++++
init/init_task.c | 3 +
kernel/bpf/helpers.c | 12 +
kernel/bpf/verifier.c | 4 +-
kernel/sched/Makefile | 3 +-
kernel/sched/bpf_sched.c | 409 +++++++++++++++++++++++++
kernel/sched/bpf_topology.c | 99 ++++++
kernel/sched/core.c | 103 +++++++
kernel/sched/fair.c | 58 ++++
kernel/sched/sched.h | 8 +
samples/bpf/Makefile | 9 +
samples/bpf/bpf_load.c | 8 +-
samples/bpf/sched_pick_task_kern.c | 62 ++++
samples/bpf/sched_pick_task_user.c | 92 ++++++
samples/bpf/sched_preempt_kern.c | 151 ++++++++++
samples/bpf/sched_preempt_user.c | 139 +++++++++
samples/bpf/sched_select_core_kern.c | 239 +++++++++++++++
samples/bpf/sched_select_core_user.c | 114 +++++++
scripts/bpf_helpers_doc.py | 20 ++
tools/include/uapi/linux/bpf.h | 112 +++++++
tools/lib/bpf/libbpf_sched.h | 435 +++++++++++++++++++++++++++
25 files changed, 2389 insertions(+), 6 deletions(-)
create mode 100644 include/linux/bpf_topology.h
create mode 100644 kernel/sched/bpf_topology.c
create mode 100644 samples/bpf/sched_pick_task_kern.c
create mode 100644 samples/bpf/sched_pick_task_user.c
create mode 100644 samples/bpf/sched_preempt_kern.c
create mode 100644 samples/bpf/sched_preempt_user.c
create mode 100644 samples/bpf/sched_select_core_kern.c
create mode 100644 samples/bpf/sched_select_core_user.c
create mode 100644 tools/lib/bpf/libbpf_sched.h
--
2.20.1
1
20

[PATCH openEuler-1.0-LTS 1/3] net: sched: sch_teql: fix null-pointer dereference
by Yongqiang Liu 05 Aug '22
by Yongqiang Liu 05 Aug '22
05 Aug '22
From: Pavel Tikhomirov <ptikhomirov(a)virtuozzo.com>
stable inclusion
from stable-v4.19.187
commit a9a7488979a7d0abfd30bc32f370b8e0c124db33
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5JPWC
CVE: NA
--------------------------------
commit 1ffbc7ea91606e4abd10eb60de5367f1c86daf5e upstream.
Reproduce:
modprobe sch_teql
tc qdisc add dev teql0 root teql0
This leads to (for instance in Centos 7 VM) OOPS:
[ 532.366633] BUG: unable to handle kernel NULL pointer dereference at 00000000000000a8
[ 532.366733] IP: [<ffffffffc06124a8>] teql_destroy+0x18/0x100 [sch_teql]
[ 532.366825] PGD 80000001376d5067 PUD 137e37067 PMD 0
[ 532.366906] Oops: 0000 [#1] SMP
[ 532.366987] Modules linked in: sch_teql ...
[ 532.367945] CPU: 1 PID: 3026 Comm: tc Kdump: loaded Tainted: G ------------ T 3.10.0-1062.7.1.el7.x86_64 #1
[ 532.368041] Hardware name: Virtuozzo KVM, BIOS 1.11.0-2.vz7.2 04/01/2014
[ 532.368125] task: ffff8b7d37d31070 ti: ffff8b7c9fdbc000 task.ti: ffff8b7c9fdbc000
[ 532.368224] RIP: 0010:[<ffffffffc06124a8>] [<ffffffffc06124a8>] teql_destroy+0x18/0x100 [sch_teql]
[ 532.368320] RSP: 0018:ffff8b7c9fdbf8e0 EFLAGS: 00010286
[ 532.368394] RAX: ffffffffc0612490 RBX: ffff8b7cb1565e00 RCX: ffff8b7d35ba2000
[ 532.368476] RDX: ffff8b7d35ba2000 RSI: 0000000000000000 RDI: ffff8b7cb1565e00
[ 532.368557] RBP: ffff8b7c9fdbf8f8 R08: ffff8b7d3fd1f140 R09: ffff8b7d3b001600
[ 532.368638] R10: ffff8b7d3b001600 R11: ffffffff84c7d65b R12: 00000000ffffffd8
[ 532.368719] R13: 0000000000008000 R14: ffff8b7d35ba2000 R15: ffff8b7c9fdbf9a8
[ 532.368800] FS: 00007f6a4e872740(0000) GS:ffff8b7d3fd00000(0000) knlGS:0000000000000000
[ 532.368885] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 532.368961] CR2: 00000000000000a8 CR3: 00000001396ee000 CR4: 00000000000206e0
[ 532.369046] Call Trace:
[ 532.369159] [<ffffffff84c8192e>] qdisc_create+0x36e/0x450
[ 532.369268] [<ffffffff846a9b49>] ? ns_capable+0x29/0x50
[ 532.369366] [<ffffffff849afde2>] ? nla_parse+0x32/0x120
[ 532.369442] [<ffffffff84c81b4c>] tc_modify_qdisc+0x13c/0x610
[ 532.371508] [<ffffffff84c693e7>] rtnetlink_rcv_msg+0xa7/0x260
[ 532.372668] [<ffffffff84907b65>] ? sock_has_perm+0x75/0x90
[ 532.373790] [<ffffffff84c69340>] ? rtnl_newlink+0x890/0x890
[ 532.374914] [<ffffffff84c8da7b>] netlink_rcv_skb+0xab/0xc0
[ 532.376055] [<ffffffff84c63708>] rtnetlink_rcv+0x28/0x30
[ 532.377204] [<ffffffff84c8d400>] netlink_unicast+0x170/0x210
[ 532.378333] [<ffffffff84c8d7a8>] netlink_sendmsg+0x308/0x420
[ 532.379465] [<ffffffff84c2f3a6>] sock_sendmsg+0xb6/0xf0
[ 532.380710] [<ffffffffc034a56e>] ? __xfs_filemap_fault+0x8e/0x1d0 [xfs]
[ 532.381868] [<ffffffffc034a75c>] ? xfs_filemap_fault+0x2c/0x30 [xfs]
[ 532.383037] [<ffffffff847ec23a>] ? __do_fault.isra.61+0x8a/0x100
[ 532.384144] [<ffffffff84c30269>] ___sys_sendmsg+0x3e9/0x400
[ 532.385268] [<ffffffff847f3fad>] ? handle_mm_fault+0x39d/0x9b0
[ 532.386387] [<ffffffff84d88678>] ? __do_page_fault+0x238/0x500
[ 532.387472] [<ffffffff84c31921>] __sys_sendmsg+0x51/0x90
[ 532.388560] [<ffffffff84c31972>] SyS_sendmsg+0x12/0x20
[ 532.389636] [<ffffffff84d8dede>] system_call_fastpath+0x25/0x2a
[ 532.390704] [<ffffffff84d8de21>] ? system_call_after_swapgs+0xae/0x146
[ 532.391753] Code: 00 00 00 00 00 00 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 90 55 48 89 e5 41 55 41 54 53 48 8b b7 48 01 00 00 48 89 fb <48> 8b 8e a8 00 00 00 48 85 c9 74 43 48 89 ca eb 0f 0f 1f 80 00
[ 532.394036] RIP [<ffffffffc06124a8>] teql_destroy+0x18/0x100 [sch_teql]
[ 532.395127] RSP <ffff8b7c9fdbf8e0>
[ 532.396179] CR2: 00000000000000a8
Null pointer dereference happens on master->slaves dereference in
teql_destroy() as master is null-pointer.
When qdisc_create() calls teql_qdisc_init() it imediately fails after
check "if (m->dev == dev)" because both devices are teql0, and it does
not set qdisc_priv(sch)->m leaving it zero on error path, then
qdisc_create() imediately calls teql_destroy() which does not expect
zero master pointer and we get OOPS.
Fixes: 87b60cfacf9f ("net_sched: fix error recovery at qdisc creation")
Signed-off-by: Pavel Tikhomirov <ptikhomirov(a)virtuozzo.com>
Reviewed-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Lu Wei <luwei32(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/sched/sch_teql.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c
index 7ed53124069c..163364124691 100644
--- a/net/sched/sch_teql.c
+++ b/net/sched/sch_teql.c
@@ -138,6 +138,9 @@ teql_destroy(struct Qdisc *sch)
struct teql_sched_data *dat = qdisc_priv(sch);
struct teql_master *master = dat->m;
+ if (!master)
+ return;
+
prev = master->slaves;
if (prev) {
do {
--
2.25.1
1
2
Some applications has large code and data segment, and this causes high
TLB miss when page size is 4K. Mapping these apps into hugetlbfs will
boost their performance. A userspace tool libhugetlbfs can do this but
it seems to stopped development since 2020, and it does not support
debugging.
Tmpfs supports transparent hugepage, but it will be split into small
pages during copy-on-write. Userspace hotpatch will do mprotect on code
segment and trigger pmd split, and some users think performance
degradation after hotpatch is unacceptable.
This patch set implements hugetlb support in exec, and solved the
debugging issue.
---
v5: mark new Kconfigs default n and add sysctl knob
v4: rebase to 5.10.0-107.0.0
v3: add MAP_FILE_HUGETLB
v2: fix kabi
Liu Zixian (4):
hugetlb: support private file map
elf: support hugetlb map
enable elf huge map by default
fs: add sysctl knob for exec_hugetlb
arch/arm64/configs/openeuler_defconfig | 2 +
arch/x86/configs/openeuler_defconfig | 2 +
fs/Kconfig | 24 ++++++
fs/binfmt_elf.c | 115 +++++++++++++++++++++++++
fs/exec.c | 4 +
fs/proc/task_mmu.c | 5 ++
include/linux/elf.h | 4 +
include/linux/mm_types.h | 4 +
include/uapi/asm-generic/mman-common.h | 1 +
include/uapi/linux/elf.h | 1 +
kernel/events/core.c | 7 ++
kernel/fork.c | 5 ++
kernel/sysctl.c | 11 +++
mm/hugetlb.c | 25 ++++++
mm/mmap.c | 20 +++++
mm/util.c | 40 +++++++++
16 files changed, 270 insertions(+)
--
2.20.1
1
4

04 Aug '22
From: Guoqing Jiang <jgq516(a)gmail.com>
mainline inclusion
from mainline-v5.14-rc1
commit 10764815ff4728d2c57da677cd5d3dd6f446cf5f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I587H6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
-------------------------------
We introduce a new bioset (io_acct_set) for raid0 and raid5 since they
don't own clone infrastructure to accounting io. And the bioset is added
to mddev instead of to raid0 and raid5 layer, because with this way, we
can put common functions to md.h and reuse them in raid0 and raid5.
Also struct md_io_acct is added accordingly which includes io start_time,
the origin bio and cloned bio. Then we can call bio_{start,end}_io_acct
to get related io status.
Signed-off-by: Guoqing Jiang <jiangguoqing(a)kylinos.cn>
Signed-off-by: Song Liu <song(a)kernel.org>
Conflict:
drivers/md/md.c
drivers/md/md.h
Signed-off-by: Zhang Wensheng <zhangwensheng5(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/md/md.c | 52 ++++++++++++++++++++++++++++++++++++++++++----
drivers/md/md.h | 8 +++++++
drivers/md/raid0.c | 3 +++
drivers/md/raid5.c | 9 ++++++++
4 files changed, 68 insertions(+), 4 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index a299fda5b0e9..10d9a8bed604 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2361,7 +2361,8 @@ int md_integrity_register(struct mddev *mddev)
bdev_get_integrity(reference->bdev));
pr_debug("md: data integrity enabled on %s\n", mdname(mddev));
- if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE)) {
+ if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE) ||
+ bioset_integrity_create(&mddev->io_acct_set, BIO_POOL_SIZE)) {
pr_err("md: failed to create integrity pool for %s\n",
mdname(mddev));
return -EINVAL;
@@ -5597,6 +5598,7 @@ static void md_free(struct kobject *ko)
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
kfree(mddev);
}
@@ -5885,7 +5887,13 @@ int md_run(struct mddev *mddev)
if (!bioset_initialized(&mddev->sync_set)) {
err = bioset_init(&mddev->sync_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
if (err)
- return err;
+ goto exit_bio_set;
+ }
+ if (!bioset_initialized(&mddev->io_acct_set)) {
+ err = bioset_init(&mddev->io_acct_set, BIO_POOL_SIZE,
+ offsetof(struct md_io_acct, bio_clone), 0);
+ if (err)
+ goto exit_sync_set;
}
spin_lock(&pers_lock);
@@ -6013,6 +6021,7 @@ int md_run(struct mddev *mddev)
blk_queue_flag_set(QUEUE_FLAG_NONROT, mddev->queue);
else
blk_queue_flag_clear(QUEUE_FLAG_NONROT, mddev->queue);
+ blk_queue_flag_set(QUEUE_FLAG_IO_STAT, mddev->queue);
}
if (pers->sync_request) {
if (mddev->kobj.sd &&
@@ -6062,8 +6071,11 @@ int md_run(struct mddev *mddev)
module_put(pers->owner);
md_bitmap_destroy(mddev);
abort:
- bioset_exit(&mddev->bio_set);
+ bioset_exit(&mddev->io_acct_set);
+exit_sync_set:
bioset_exit(&mddev->sync_set);
+exit_bio_set:
+ bioset_exit(&mddev->bio_set);
return err;
}
EXPORT_SYMBOL_GPL(md_run);
@@ -6288,6 +6300,7 @@ void md_stop(struct mddev *mddev)
__md_stop(mddev);
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
}
EXPORT_SYMBOL_GPL(md_stop);
@@ -8571,9 +8584,40 @@ void md_write_end(struct mddev *mddev)
roundup(jiffies, mddev->safemode_delay) +
mddev->safemode_delay);
}
-
EXPORT_SYMBOL(md_write_end);
+static void md_end_io_acct(struct bio *bio)
+{
+ struct md_io_acct *md_io_acct = bio->bi_private;
+ struct bio *orig_bio = md_io_acct->orig_bio;
+
+ orig_bio->bi_status = bio->bi_status;
+
+ bio_end_io_acct(orig_bio, md_io_acct->start_time);
+ bio_put(bio);
+ bio_endio(orig_bio);
+}
+
+/* used by personalities (raid0 and raid5) to account io stats */
+void md_account_bio(struct mddev *mddev, struct bio **bio)
+{
+ struct md_io_acct *md_io_acct;
+ struct bio *clone;
+
+ if (!blk_queue_io_stat((*bio)->bi_disk->queue))
+ return;
+
+ clone = bio_clone_fast(*bio, GFP_NOIO, &mddev->io_acct_set);
+ md_io_acct = container_of(clone, struct md_io_acct, bio_clone);
+ md_io_acct->orig_bio = *bio;
+ md_io_acct->start_time = bio_start_io_acct(*bio);
+
+ clone->bi_end_io = md_end_io_acct;
+ clone->bi_private = md_io_acct;
+ *bio = clone;
+}
+EXPORT_SYMBOL_GPL(md_account_bio);
+
/* md_allow_write(mddev)
* Calling this ensures that the array is marked 'active' so that writes
* may proceed without blocking. It is important to call this before
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 85177d068322..20c16cfdd6bb 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -491,6 +491,7 @@ struct mddev {
struct bio_set sync_set; /* for sync operations like
* metadata and bitmap writes
*/
+ struct bio_set io_acct_set; /* for raid0 and raid5 io accounting */
/* Generic flush handling.
* The last to finish preflush schedules a worker to submit
@@ -687,6 +688,12 @@ struct md_thread {
void *private;
};
+struct md_io_acct {
+ struct bio *orig_bio;
+ unsigned long start_time;
+ struct bio bio_clone;
+};
+
#define THREAD_WAKEUP 0
static inline void safe_put_page(struct page *p)
@@ -716,6 +723,7 @@ extern void md_write_end(struct mddev *mddev);
extern void md_done_sync(struct mddev *mddev, int blocks, int ok);
extern void md_error(struct mddev *mddev, struct md_rdev *rdev);
extern void md_finish_reshape(struct mddev *mddev);
+void md_account_bio(struct mddev *mddev, struct bio **bio);
extern bool __must_check md_flush_request(struct mddev *mddev, struct bio *bio);
extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 35843df15b5e..0312b192106a 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -556,6 +556,9 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
bio = split;
}
+ if (bio->bi_pool != &mddev->bio_set)
+ md_account_bio(mddev, &bio);
+
orig_sector = sector;
zone = find_zone(mddev->private, §or);
switch (conf->layout) {
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index c82953a3299e..35dacc6e754f 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5487,6 +5487,7 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
sector_t sector = raid_bio->bi_iter.bi_sector;
unsigned chunk_sects = mddev->chunk_sectors;
unsigned sectors = chunk_sects - (sector & (chunk_sects-1));
+ struct r5conf *conf = mddev->private;
if (sectors < bio_sectors(raid_bio)) {
struct r5conf *conf = mddev->private;
@@ -5496,6 +5497,9 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
raid_bio = split;
}
+ if (raid_bio->bi_pool != &conf->bio_split)
+ md_account_bio(mddev, &raid_bio);
+
if (!raid5_read_one_chunk(mddev, raid_bio))
return raid_bio;
@@ -5775,6 +5779,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
DEFINE_WAIT(w);
bool do_prepare;
bool do_flush = false;
+ bool do_clone = false;
if (unlikely(bi->bi_opf & REQ_PREFLUSH)) {
int ret = log_handle_flush_request(conf, bi);
@@ -5803,6 +5808,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
if (rw == READ && mddev->degraded == 0 &&
mddev->reshape_position == MaxSector) {
bi = chunk_aligned_read(mddev, bi);
+ do_clone = true;
if (!bi)
return true;
}
@@ -5817,6 +5823,9 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
last_sector = bio_end_sector(bi);
bi->bi_next = NULL;
+ if (!do_clone)
+ md_account_bio(mddev, &bi);
+
prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE);
for (; logical_sector < last_sector; logical_sector += RAID5_STRIPE_SECTORS(conf)) {
int previous;
--
2.20.1
1
19
Backport 5.10.115 LTS patches from upstream.
git cherry-pick v5.10.114..v5.10.115~1 -s
Complicts:
Already merged(4):
8a9e7c64f4a0 nfc: replace improper check device_is_registered() in netlink
related functions
1961c5a688ed nfc: nfcmrvl: main: reorder destructive operations in
nfcmrvl_nci_unregister_dev to avoid bugs
879b075a9a36 NFC: netlink: fix sleep in atomic bug when firmware download
timeout
a439819f4797 block-map: add __GFP_ZERO flag for alloc_page in function
bio_copy_kern
Rejected(2):
hinic driver drops related file in the patch:
475237e807a2 hinic: fix bug of wq out of bound access
build failed due to reject of patch "845f44ce3d9f1 net/sched: flower: fix parsing of ethertype following VLAN header":
d8338a7a0957 net/mlx5e: Don't match double-vlan packets if cvlan is not set
Total patches: 70 - 4 - 2 = 64
Andreas Larsson (2):
can: grcan: grcan_probe(): fix broken system id check for errata
workaround needs
can: grcan: only use the NAPI poll budget for RX
Andrei Lalaev (1):
gpiolib: of: fix bounds check for 'gpio-reserved-ranges'
Armin Wolf (1):
hwmon: (adt7470) Fix warning on module removal
Aya Levin (1):
net/mlx5: Fix slab-out-of-bounds while reading resource dump menu
Brian Norris (1):
mmc: core: Set HS clock speed before sending HS CMD13
Cheng Xu (1):
RDMA/siw: Fix a condition race issue in MPA request processing
Chengfeng Ye (1):
firewire: fix potential uaf in outbound_phy_packet_callback()
Codrin Ciubotariu (1):
ASoC: dmaengine: Restore NULL prepare_slave_config() callback
Daniel Hellstrom (1):
can: grcan: use ofdev->dev when allocating DMA memory
David Stevens (1):
iommu/vt-d: Calculate mask for non-aligned flushes
Duoming Zhou (1):
can: grcan: grcan_close(): fix deadlock
Eric Dumazet (1):
net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter()
Filipe Manana (1):
btrfs: always log symlinks in full mode
Frederic Weisbecker (2):
rcu: Fix callbacks processing time limit retaining cond_resched()
rcu: Apply callbacks processing time limit only on softirq
Harry Wentland (1):
drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT
Helge Deller (1):
parisc: Merge model and model name into one line in /proc/cpuinfo
Ido Schimmel (1):
selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface
is operational
Jakob Koschel (1):
firewire: remove check of list iterator against head past the loop
body
Jan Höppner (2):
s390/dasd: Fix read for ESE with blksize < 4k
s390/dasd: Fix read inconsistency for ESE DASD devices
Jann Horn (1):
selftests/seccomp: Don't call read() on TTY from background pgrp
Kyle Huey (1):
KVM: x86/svm: Account for family 17h event renumberings in
amd_pmc_perf_hw_id
Maciej W. Rozycki (1):
MIPS: Fix CP0 counter erratum detection for R4k CPUs
Mark Brown (5):
ASoC: da7219: Fix change notifications for tone generator frequency
ASoC: wm8958: Fix change notifications for DSP controls
ASoC: meson: Fix event generation for AUI ACODEC mux
ASoC: meson: Fix event generation for G12A tohdmi mux
ASoC: meson: Fix event generation for AUI CODEC mux
Mark Zhang (1):
net/mlx5e: Fix the calling of update_buffer_lossy() API
Michael Chan (1):
bnxt_en: Fix unnecessary dropping of RX packets
Mike Snitzer (1):
dm: interlock pending dm_io and dm_wait_for_bios_completion
Moshe Shemesh (1):
net/mlx5: Avoid double clear or set of sync reset requested
Moshe Tal (1):
net/mlx5e: Fix trust state reset in reload
Niels Dossche (1):
firewire: core: extend card->lock in fw_core_handle_bus_reset
Oliver Hartkopp (1):
can: isotp: remove re-binding of bound socket
Pali Rohár (2):
PCI: aardvark: Clear all MSIs at setup
PCI: aardvark: Fix reading MSI interrupt number
Paolo Bonzini (2):
KVM: x86: Do not change ICR on write to APIC_SELF_IPI
KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs
Paul Blakey (1):
net/mlx5e: CT: Fix queued up restore put() executing after relevant ft
release
Puyou Lu (1):
gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask
not set)
Ricky WU (1):
mmc: rtsx: add 74 Clocks in power on flow
Sandipan Das (1):
kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural
PMU
Sergey Shtylyov (1):
smsc911x: allow using IRQ0
Shaik Sajida Bhanu (1):
mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC
Shravya Kumbham (1):
net: emaclite: Add error handling for of_address_to_resource()
Somnath Kotur (1):
bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag
Stefan Haberland (2):
s390/dasd: fix data corruption for ESE devices
s390/dasd: prevent double format of tracks for ESE devices
Takashi Sakamoto (1):
ALSA: fireworks: fix wrong return count shorter than expected by 4
bytes
Tan Tee Min (1):
net: stmmac: disable Split Header (SPH) for Intel platforms
Thomas Pfaff (1):
genirq: Synchronize interrupt thread startup
Trond Myklebust (2):
Revert "SUNRPC: attempt AF_LOCAL connect on setup"
NFSv4: Don't invalidate inode attributes on delegation return
Vladimir Oltean (1):
selftests: ocelot: tc_flower_chains: specify conform-exceed action for
policer
Wanpeng Li (2):
x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume
KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is
advertised
Yang Yingliang (4):
net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init()
net: dsa: mt7530: add missing of_node_put() in mt7530_setup()
net: stmmac: dwmac-sun8i: add missing of_node_put() in
sun8i_dwmac_register_mdio_mux()
net: cpsw: add missing of_node_put() in cpsw_probe_dt()
Zihao Wang (1):
ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers
arch/mips/include/asm/timex.h | 8 ++--
arch/mips/kernel/time.c | 11 ++---
arch/parisc/kernel/processor.c | 3 +-
arch/x86/kernel/kvm.c | 13 ++++++
arch/x86/kvm/cpuid.c | 5 ++
arch/x86/kvm/lapic.c | 10 ++--
arch/x86/kvm/mmu/mmu.c | 2 +
arch/x86/kvm/svm/pmu.c | 28 +++++++++--
drivers/firewire/core-card.c | 3 ++
drivers/firewire/core-cdev.c | 4 +-
drivers/firewire/core-topology.c | 9 ++--
drivers/firewire/core-transaction.c | 30 ++++++------
drivers/firewire/sbp2.c | 13 +++---
drivers/gpio/gpio-pca953x.c | 4 +-
drivers/gpio/gpiolib-of.c | 2 +-
.../gpu/drm/amd/display/dc/core/dc_link_dp.c | 2 +-
drivers/hwmon/adt7470.c | 4 +-
drivers/infiniband/sw/siw/siw_cm.c | 7 +--
drivers/iommu/intel/iommu.c | 27 +++++++++--
drivers/md/dm.c | 8 +++-
drivers/mmc/core/mmc.c | 23 ++++++++--
drivers/mmc/host/rtsx_pci_sdmmc.c | 31 +++++++++----
drivers/mmc/host/sdhci-msm.c | 42 +++++++++++++++++
drivers/net/can/grcan.c | 46 ++++++++++---------
drivers/net/dsa/mt7530.c | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 13 ++++--
drivers/net/ethernet/mediatek/mtk_sgmii.c | 1 +
.../mellanox/mlx5/core/diag/rsc_dump.c | 31 ++++++++++---
.../mellanox/mlx5/core/en/port_buffer.c | 4 +-
.../ethernet/mellanox/mlx5/core/en/tc_ct.c | 4 ++
.../ethernet/mellanox/mlx5/core/en_dcbnl.c | 10 ++++
.../ethernet/mellanox/mlx5/core/fw_reset.c | 28 +++++++----
drivers/net/ethernet/smsc/smsc911x.c | 2 +-
.../net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 +
.../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 1 +
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
drivers/net/ethernet/ti/cpsw_new.c | 5 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 15 ++++--
drivers/pci/controller/pci-aardvark.c | 16 +++----
drivers/s390/block/dasd.c | 18 ++++++--
drivers/s390/block/dasd_eckd.c | 28 ++++++++---
drivers/s390/block/dasd_int.h | 14 ++++++
fs/btrfs/tree-log.c | 14 +++++-
fs/nfs/nfs4proc.c | 12 ++++-
include/linux/stmmac.h | 1 +
kernel/irq/internals.h | 2 +
kernel/irq/irqdesc.c | 2 +
kernel/irq/manage.c | 39 ++++++++++++----
kernel/rcu/tree.c | 32 +++++++------
net/can/isotp.c | 22 ++-------
net/ipv4/igmp.c | 9 ++--
net/sunrpc/xprtsock.c | 3 --
sound/firewire/fireworks/fireworks_hwdep.c | 1 +
sound/pci/hda/patch_realtek.c | 1 +
sound/soc/codecs/da7219.c | 14 ++++--
sound/soc/codecs/wm8958-dsp2.c | 8 ++--
sound/soc/meson/aiu-acodec-ctrl.c | 2 +-
sound/soc/meson/aiu-codec-ctrl.c | 2 +-
sound/soc/meson/g12a-tohdmitx.c | 2 +-
sound/soc/soc-generic-dmaengine-pcm.c | 6 +--
.../drivers/net/ocelot/tc_flower_chains.sh | 2 +-
.../net/forwarding/mirror_gre_bridge_1q.sh | 3 ++
tools/testing/selftests/seccomp/seccomp_bpf.c | 10 ++--
63 files changed, 501 insertions(+), 215 deletions(-)
--
2.20.1
1
64
Backport 5.10.114 LTS patches from upstream.
git cherry-pick v5.10.113..v5.10.114~1 -s
Complicts:
Already merged(5):
54c028cfc496 floppy: disable FDRAWCMD by default
e3ec78d82d48 net: hns3: modify the return code of hclge_get_ring_chain_from_mbx
929c30c02de4 net: hns3: add validity check for message data length
9eb25e00f59b net: hns3: add return value for mailbox handling in PF
1781beb87935 tls: Skip tls_append_frag on zero copy size
Implementation changed(already merged, use mainline version b98535d09179, 1):
585ef03c9e79 ext4: fix bug_on in start_this_handle during umount filesystem
Defered(3, kabi changed):
3c464db03c12 tcp: ensure to use the most recently sent skb when filling the rate
sample
6f2bf9c5ddfe mtd: fix 'part' field data corruption in mtd_info
616d354fb9e8 hex2bin: make the function hex_to_bin constant-time
Total patches: 129 - 5 - 1 - 3 = 120
Adam Ford (2):
ARM: dts: am3517-evm: Fix misc pinmuxing
ARM: dts: logicpd-som-lv: Fix wrong pinmuxing on OMAP35
Alexey Kardashevskiy (1):
powerpc/perf: Fix 32bit compile
Baruch Siach (1):
net: phy: marvell10g: fix return value on error
Borislav Petkov (1):
x86/cpu: Load microcode during restore_processor_state()
Bruno Thomsen (1):
USB: serial: cp210x: add PIDs for Kamstrup USB Meter Reader
Chao Song (1):
ASoC: Intel: soc-acpi: correct device endpoints for max98373
Christian Hewitt (2):
arm64: dts: meson: remove CPU opps below 1GHz for G12B boards
arm64: dts: meson: remove CPU opps below 1GHz for SM1 boards
Christophe JAILLET (1):
bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create()
Chuanhong Guo (1):
mtd: rawnand: fix ecc parameters for mt7622
Claudiu Beznea (1):
ARM: dts: at91: sama5d4_xplained: fix pinctrl phandle name
Damien Le Moal (2):
zonefs: Fix management of open zones
zonefs: Clear inode information flags on inode creation
Dan Vacura (1):
usb: gadget: uvc: Fix crash when encoding data for usb request
Daniel Starke (13):
tty: n_gsm: fix restart handling via CLD command
tty: n_gsm: fix decoupled mux resource
tty: n_gsm: fix mux cleanup after unregister tty device
tty: n_gsm: fix wrong signal octet encoding in convergence layer type
2
tty: n_gsm: fix malformed counter for out of frame data
tty: n_gsm: fix insufficient txframe size
tty: n_gsm: fix wrong DLCI release order
tty: n_gsm: fix missing explicit ldisc flush
tty: n_gsm: fix wrong command retry handling
tty: n_gsm: fix wrong command frame length field encoding
tty: n_gsm: fix reset fifo race condition
tty: n_gsm: fix incorrect UA handling
tty: n_gsm: fix software flow control handling
Daniele Palmas (1):
USB: serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions
Dany Madden (1):
Revert "ibmvnic: Add ethtool private flag for driver-defined queue
limits"
David Yat Sin (1):
drm/amdkfd: Fix GWS queue count
Dinh Nguyen (1):
net: ethernet: stmmac: fix write to sgmii_adapter_base
Duoming Zhou (1):
drivers: net: hippi: Fix deadlock in rr_close()
Eric Dumazet (2):
tcp: fix potential xmit stalls caused by TCP_NOTSENT_LOWAT
tcp: make sure treq->af_specific is initialized
Evan Green (1):
xhci: Enable runtime PM on second Alderlake controller
Eyal Birger (1):
bpf, lwt: Fix crash when using bpf_skb_set_tunnel_key() from bpf_xmit
lwt hook
Fabio Estevam (2):
ARM: dts: imx6qdl-apalis: Fix sgtl5000 detection issue
arm64: dts: imx8mn-ddr4-evk: Describe the 32.768 kHz PMIC clock
Fawzi Khaber (1):
iio: imu: inv_icm42600: Fix I2C init possible nack
Florian Westphal (1):
netfilter: nft_socket: only do sk lookups when indev is available
Francesco Ruggeri (1):
tcp: md5: incorrect tcp_header_len for incoming connections
Geert Uytterhoeven (1):
memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode
Greg Kroah-Hartman (1):
lightnvm: disable the subsystem
Guo Ren (1):
riscv: patch_text: Fixup last cpu should be master
H. Nikolaus Schaller (1):
ARM: dts: Fix mmc order for omap3-gta04
Hangyu Hua (1):
usb: misc: fix improper handling of refcount in uss720_probe()
Heikki Krogerus (2):
usb: typec: ucsi: Fix reuse of completion structure
usb: typec: ucsi: Fix role swapping
Henry Lin (1):
xhci: stop polling roothubs after shutdown
Imre Deak (1):
drm/i915: Fix SEL_FETCH_PLANE_*(PIPE_B+) register addresses
Johan Hovold (1):
serial: imx: fix overrun interrupts in DMA mode
Jonathan Lemon (1):
net: bcmgenet: hide status block before TX timestamping
Kees Cook (2):
USB: serial: whiteheat: fix heap overflow in WHITEHEAT_GET_DTR_RTS
thermal: int340x: Fix attr.show callback prototype
Krzysztof Kozlowski (2):
pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config
phy: samsung: exynos5250-sata: fix missing device put in probe error
paths
Leon Romanovsky (1):
ixgbe: ensure IPsec VF<->PF compatibility
Lijun Pan (1):
ibmvnic: fix miscellaneous checks
Luca Ceresoli (1):
pinctrl: rockchip: fix RK3308 pinmux bits
Lv Ruyi (1):
pinctrl: pistachio: fix use of irq_of_parse_and_map()
Maciej W. Rozycki (2):
serial: 8250: Also set sticky MCR bits in console restoration
serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device
Macpaul Lin (1):
usb: mtu3: fix USB 3.0 dual-role-switch from device to host
Manish Chopra (1):
bnx2x: fix napi API usage sequence
Marek Vasut (2):
pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs
in EOI
pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ
requested
Mark Brown (1):
ARM: dts: at91: Map MCLK for wm8731 on at91sam9g20ek
Martin Blumenstingl (1):
net: dsa: lantiq_gswip: Don't set GSWIP_MII_CFG_RMII_CLK
Mathias Nyman (1):
xhci: increase usb U3 -> U0 link resume timeout from 100ms to 500ms
Max Krummenacher (1):
ARM: dts: imx6ull-colibri: fix vqmmc regulator
Miaoqian Lin (8):
phy: samsung: Fix missing of_node_put() in exynos_sata_phy_probe
ARM: OMAP2+: Fix refcount leak in omap_gic_of_init
phy: ti: omap-usb2: Fix error handling in omap_usb2_enable_clocks
phy: mapphone-mdm6600: Fix PM error handling in phy_mdm6600_probe
phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe
mtd: rawnand: Fix return value check of wait_for_completion_timeout
net: dsa: Add missing of_node_put() in dsa_port_link_register_of
drm/amd/display: Fix memory leak in dcn21_clock_source_create
Michael Hennerich (1):
iio: dac: ad5446: Fix read_raw not returning set value
Mikulas Patocka (2):
hex2bin: fix access beyond string end
x86: __memcpy_flushcache: fix wrong alignment if size > 2^32
Namhyung Kim (3):
perf symbol: Pass is_kallsyms to symbols__fixup_end()
perf symbol: Update symbols__fixup_end()
perf symbol: Remove arch__symbols__fixup_end()
Nikolay Aleksandrov (1):
wireguard: device: check for metadata_dst with skb_valid_dst()
Oliver Neukum (2):
USB: quirks: add a Realtek card reader
USB: quirks: add STRING quirk for VCOM device
Pablo Neira Ayuso (1):
netfilter: nft_set_rbtree: overlap detection with element re-addition
after deletion
Pavel Skripkin (1):
video: fbdev: udlfb: properly check endpoint type
Pawel Laszczak (1):
usb: cdns3: Fix issue for clear halt endpoint
Peilin Ye (3):
ip_gre: Make o_seqno start from 0 in native mode
ip6_gre: Make o_seqno start from 0 in native mode
ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode
Pengcheng Yang (2):
ipvs: correctly print the memory size of ip_vs_conn_tab
tcp: fix F-RTO may not work correctly when receiving DSACK
Ronnie Sahlberg (1):
cifs: destage any unwritten data to the server before calling
copychunk_write
Sean Anderson (1):
usb: phy: generic: Get the vbus supply
Slark Xiao (1):
USB: serial: option: add support for Cinterion MV32-WA/MV32-WB
Sven Peter (1):
usb: dwc3: Try usb-role-switch first in dwc3_drd_init
Tejun Heo (1):
iocost: don't reset the inuse weight of under-weighted debtors
Thinh Nguyen (3):
usb: dwc3: core: Fix tx/rx threshold settings
usb: dwc3: core: Only handle soft-reset in DCTL
usb: dwc3: gadget: Return proper request status
Thomas Gleixner (1):
x86/pci/xen: Disable PCI/MSI[-X] masking for XEN_HVM guests
Tong Zhang (1):
iio:imu:bmi160: disable regulator in error path
Tony Lindgren (1):
bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific
Vijayavardhan Vennapusa (1):
usb: gadget: configfs: clear deactivation flag in
configfs_composite_unbind()
Wang Qing (1):
arch_topology: Do not set llc_sibling if llc_id is invalid
Weitao Wang (1):
USB: Fix xhci event ring dequeue pointer ERDP update issue
Xiaobing Luo (1):
cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe
Xin Long (1):
sctp: check asoc strreset_chunk in sctp_generate_reconf_event
Yang Yingliang (2):
clk: sunxi: sun9i-mmc: check return value after calling
platform_get_resource()
net: fec: add missing of_node_put() in fec_enet_init_stop_mode()
YueHaibing (1):
pinctrl: mediatek: moore: Fix build error
Zheyu Ma (2):
iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on()
ASoC: wm8731: Disable the regulator when probing fails
Zizhuang Deng (1):
iio: dac: ad5592r: Fix the missing return value.
Zqiang (1):
kasan: prevent cpu_quarantine corruption when CPU offline and cache
shrink occur at same time
liuyacan (1):
net/smc: sync err code when tcp connection was refused
arch/arm/boot/dts/am3517-evm.dts | 45 +++-
arch/arm/boot/dts/am3517-som.dtsi | 9 +
arch/arm/boot/dts/at91-sama5d4_xplained.dts | 4 +-
arch/arm/boot/dts/at91sam9g20ek_common.dtsi | 6 +
arch/arm/boot/dts/imx6qdl-apalis.dtsi | 10 +-
arch/arm/boot/dts/imx6ull-colibri.dtsi | 2 +-
.../boot/dts/logicpd-som-lv-35xx-devkit.dts | 15 ++
.../boot/dts/logicpd-som-lv-37xx-devkit.dts | 15 ++
arch/arm/boot/dts/logicpd-som-lv.dtsi | 15 --
arch/arm/boot/dts/omap3-gta04.dtsi | 2 +
arch/arm/mach-exynos/Kconfig | 1 -
arch/arm/mach-omap2/omap4-common.c | 2 +
.../boot/dts/amlogic/meson-g12b-a311d.dtsi | 40 ----
.../boot/dts/amlogic/meson-g12b-s922x.dtsi | 40 ----
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 20 --
.../boot/dts/freescale/imx8mn-ddr4-evk.dts | 4 +
arch/powerpc/perf/Makefile | 4 +-
arch/riscv/kernel/patch.c | 2 +-
arch/x86/include/asm/microcode.h | 2 +
arch/x86/kernel/cpu/microcode/core.c | 6 +-
arch/x86/lib/usercopy_64.c | 2 +-
arch/x86/pci/xen.c | 6 +-
arch/x86/power/cpu.c | 10 +-
block/blk-iocost.c | 12 +-
drivers/base/arch_topology.c | 2 +-
drivers/bus/sunxi-rsb.c | 2 +
drivers/bus/ti-sysc.c | 16 +-
drivers/clk/sunxi/clk-sun9i-mmc.c | 2 +
drivers/cpufreq/sun50i-cpufreq-nvmem.c | 4 +-
.../drm/amd/amdkfd/kfd_device_queue_manager.c | 83 ++++----
.../drm/amd/display/dc/dcn21/dcn21_resource.c | 1 +
drivers/gpu/drm/i915/i915_reg.h | 2 +-
drivers/iio/dac/ad5446.c | 2 +-
drivers/iio/dac/ad5592r-base.c | 2 +-
drivers/iio/imu/bmi160/bmi160_core.c | 20 +-
.../iio/imu/inv_icm42600/inv_icm42600_i2c.c | 15 +-
drivers/iio/magnetometer/ak8975.c | 1 +
drivers/lightnvm/Kconfig | 2 +-
drivers/memory/renesas-rpc-if.c | 60 ++++--
drivers/mtd/nand/raw/mtk_ecc.c | 12 +-
drivers/mtd/nand/raw/sh_flctl.c | 14 +-
drivers/net/dsa/lantiq_gswip.c | 3 -
.../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 7 +
drivers/net/ethernet/freescale/fec_main.c | 2 +-
drivers/net/ethernet/ibm/ibmvnic.c | 144 ++++---------
drivers/net/ethernet/ibm/ibmvnic.h | 6 -
.../net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 3 +-
.../ethernet/stmicro/stmmac/dwmac-socfpga.c | 12 +-
drivers/net/hippi/rrunner.c | 2 +
drivers/net/phy/marvell10g.c | 2 +-
drivers/net/wireguard/device.c | 3 +-
drivers/phy/motorola/phy-mapphone-mdm6600.c | 3 +-
drivers/phy/samsung/phy-exynos5250-sata.c | 21 +-
drivers/phy/ti/phy-am654-serdes.c | 2 +-
drivers/phy/ti/phy-omap-usb2.c | 2 +-
drivers/pinctrl/mediatek/Kconfig | 1 +
drivers/pinctrl/pinctrl-pistachio.c | 6 +-
drivers/pinctrl/pinctrl-rockchip.c | 45 ++--
drivers/pinctrl/samsung/Kconfig | 11 +-
drivers/pinctrl/stm32/pinctrl-stm32.c | 23 ++-
.../intel/int340x_thermal/int3400_thermal.c | 4 +-
drivers/tty/n_gsm.c | 194 ++++++++++--------
drivers/tty/serial/8250/8250_pci.c | 8 +-
drivers/tty/serial/8250/8250_port.c | 2 +-
drivers/tty/serial/imx.c | 2 +-
drivers/usb/cdns3/gadget.c | 7 +-
drivers/usb/core/quirks.c | 6 +
drivers/usb/dwc3/core.c | 11 +-
drivers/usb/dwc3/drd.c | 11 +-
drivers/usb/dwc3/gadget.c | 31 ++-
drivers/usb/gadget/configfs.c | 2 +
drivers/usb/gadget/function/uvc_queue.c | 2 +
drivers/usb/host/xhci-hub.c | 2 +-
drivers/usb/host/xhci-pci.c | 4 +-
drivers/usb/host/xhci-ring.c | 2 +
drivers/usb/host/xhci.c | 11 +
drivers/usb/misc/uss720.c | 3 +-
drivers/usb/mtu3/mtu3_dr.c | 6 +-
drivers/usb/phy/phy-generic.c | 7 +
drivers/usb/serial/cp210x.c | 2 +
drivers/usb/serial/option.c | 12 ++
drivers/usb/serial/whiteheat.c | 5 +-
drivers/usb/typec/ucsi/ucsi.c | 24 ++-
drivers/video/fbdev/udlfb.c | 14 +-
fs/cifs/smb2ops.c | 8 +
fs/zonefs/super.c | 46 ++++-
include/memory/renesas-rpc-if.h | 1 +
include/net/ip6_tunnel.h | 2 +-
include/net/ip_tunnels.h | 2 +-
include/net/tcp.h | 2 +
lib/hexdump.c | 9 +-
mm/kasan/quarantine.c | 7 +
net/core/lwt_bpf.c | 7 +-
net/dsa/port.c | 2 +
net/ipv4/ip_gre.c | 12 +-
net/ipv4/syncookies.c | 8 +-
net/ipv4/tcp_input.c | 15 +-
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/tcp_output.c | 1 +
net/ipv6/ip6_gre.c | 16 +-
net/ipv6/syncookies.c | 3 +-
net/netfilter/ipvs/ip_vs_conn.c | 2 +-
net/netfilter/nft_set_rbtree.c | 6 +-
net/netfilter/nft_socket.c | 52 +++--
net/sctp/sm_sideeffect.c | 4 +
net/smc/af_smc.c | 2 +
sound/soc/codecs/wm8731.c | 19 +-
.../intel/common/soc-acpi-intel-tgl-match.c | 4 +-
tools/perf/arch/arm64/util/Build | 1 -
tools/perf/arch/arm64/util/machine.c | 27 ---
tools/perf/arch/s390/util/machine.c | 16 --
tools/perf/util/symbol-elf.c | 2 +-
tools/perf/util/symbol.c | 37 +++-
tools/perf/util/symbol.h | 3 +-
115 files changed, 879 insertions(+), 632 deletions(-)
delete mode 100644 tools/perf/arch/arm64/util/machine.c
--
2.20.1
1
120

[PATCH openEuler-1.0-LTS] rcu: Set a maximum limit for back-to-back callback invocation
by Yongqiang Liu 04 Aug '22
by Yongqiang Liu 04 Aug '22
04 Aug '22
From: "Paul E. McKenney" <paulmck(a)linux.ibm.com>
mainline inclusion
from mainline-v5.3-rc1
commit d5a9a8c3bc8068f2e5dfba30150ac09b596b461a
category: bugfix
bugzilla: 187356, https://gitee.com/openeuler/kernel/issues/I5KOZ5
CVE: NA
---------------------------
Currently, if a CPU has more than 10,000 callbacks pending, it will
increase rdp->blimit to LONG_MAX. If you are lucky, LONG_MAX is only
about two billion, but this is still a bit too many callbacks to invoke
back-to-back while otherwise ignoring the world.
This commit therefore sets a maximum limit of DEFAULT_MAX_RCU_BLIMIT,
which is set to 10,000, for rdp->blimit.
Reported-by: Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
Signed-off-by: Paul E. McKenney <paulmck(a)linux.ibm.com>
Conflicts:
kernel/rcu/tree.c
Signed-off-by: Zhen Lei <thunder.leizhen(a)huawei.com>
Reviewed-by: Cheng Jian <cj.chengjian(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
kernel/rcu/tree.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index ea05c59096a2..a0dc5385bcbc 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -490,7 +490,8 @@ void rcu_all_qs(void)
}
EXPORT_SYMBOL_GPL(rcu_all_qs);
-#define DEFAULT_RCU_BLIMIT 10 /* Maximum callbacks per rcu_do_batch. */
+#define DEFAULT_RCU_BLIMIT 10 /* Maximum callbacks per rcu_do_batch ... */
+#define DEFAULT_MAX_RCU_BLIMIT 10000 /* ... even during callback flood. */
static long blimit = DEFAULT_RCU_BLIMIT;
#define DEFAULT_RCU_QHIMARK 10000 /* If this many pending, ignore blimit. */
static long qhimark = DEFAULT_RCU_QHIMARK;
@@ -2604,7 +2605,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
/* Reinstate batch limit if we have worked down the excess. */
count = rcu_segcblist_n_cbs(&rdp->cblist);
- if (rdp->blimit == LONG_MAX && count <= qlowmark)
+ if (rdp->blimit >= DEFAULT_MAX_RCU_BLIMIT && count <= qlowmark)
rdp->blimit = blimit;
/* Reset ->qlen_last_fqs_check trigger if enough CBs have drained. */
@@ -2940,7 +2941,7 @@ static void __call_rcu_core(struct rcu_state *rsp, struct rcu_data *rdp,
rcu_accelerate_cbs_unlocked(rsp, rdp->mynode, rdp);
} else {
/* Give the grace period a kick. */
- rdp->blimit = LONG_MAX;
+ rdp->blimit = DEFAULT_MAX_RCU_BLIMIT;
if (rsp->n_force_qs == rdp->n_force_qs_snap &&
rcu_segcblist_first_pend_cb(&rdp->cblist) != head)
force_quiescent_state(rsp);
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] mm: Fix page counter mismatch in shmem_mfill_atomic_pte
by Yongqiang Liu 04 Aug '22
by Yongqiang Liu 04 Aug '22
04 Aug '22
From: Ma Wupeng <mawupeng1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5JT6V
CVE: NA
--------------------------------
shmem_mfill_atomic_pte() wrongly called mem_cgroup_cancel_charge() in
"success" path, it should mem_cgroup_uncharge() to dec memory counter
instead.
mem_cgroup_cancel_charge() should only be used if this transaction is
unsuccessful and mem_cgroup_uncharge() is used to do this if this
transaction succeed.
This will lead to page->memcg not null and will uncharge one more in
put_page(). The page counter will underflow to maximum value and trigger
oom to kill all process include sshd and leave system unaccessible.
page->memcg is set in the following path:
mem_cgroup_commit_charge
commit_charge
page->mem_cgroup = memcg;
extra uncharge will be done in the following path:
put_page
__put_page
__put_single_page
mem_cgroup_uncharge
if (!page->mem_cgroup) <-- should return
return
uncharge_page
uncharge_batch
To fix this, call mem_cgroup_commit_charge() at the end of this transaction
to make sure this transaction is really finished.
Fixes: 4c27fe4c4c84 ("userfaultfd: shmem: add shmem_mcopy_atomic_pte for userfaultfd support")
Signed-off-by: Ma Wupeng <mawupeng1(a)huawei.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
mm/shmem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/shmem.c b/mm/shmem.c
index 34981c7aad14..e300395fe308 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2464,8 +2464,6 @@ static int shmem_mfill_atomic_pte(struct mm_struct *dst_mm,
if (ret)
goto out_release_uncharge;
- mem_cgroup_commit_charge(page, memcg, false, false);
-
_dst_pte = mk_pte(page, dst_vma->vm_page_prot);
if (dst_vma->vm_flags & VM_WRITE)
_dst_pte = pte_mkwrite(pte_mkdirty(_dst_pte));
@@ -2491,6 +2489,8 @@ static int shmem_mfill_atomic_pte(struct mm_struct *dst_mm,
if (!pte_none(*dst_pte))
goto out_release_uncharge_unlock;
+ mem_cgroup_commit_charge(page, memcg, false, false);
+
lru_cache_add_anon(page);
spin_lock_irq(&info->lock);
--
2.25.1
1
0

04 Aug '22
From: Damien Le Moal <damien.lemoal(a)wdc.com>
mainline inclusion
from mainline-v5.8-rc5
commit cb551b8dc079d2ef189145782627c99cb68c0255
category: bugfix
bugzilla: 187287, https://gitee.com/openeuler/kernel/issues/I5JQML
CVE: NA
--------------------------------
In BRM_status_show(), if the condition "!ioc->is_warpdrive" tested on entry
to the function is true, a "goto out" is called. This results in unlocking
ioc->pci_access_mutex without this mutex lock being taken. This generates
the following splat:
[ 1148.539883] mpt3sas_cm2: BRM_status_show: BRM attribute is only for warpdrive
[ 1148.547184]
[ 1148.548708] =====================================
[ 1148.553501] WARNING: bad unlock balance detected!
[ 1148.558277] 5.8.0-rc3+ #827 Not tainted
[ 1148.562183] -------------------------------------
[ 1148.566959] cat/5008 is trying to release lock (&ioc->pci_access_mutex) at:
[ 1148.574035] [<ffffffffc070b7a3>] BRM_status_show+0xd3/0x100 [mpt3sas]
[ 1148.580574] but there are no more locks to release!
[ 1148.585524]
[ 1148.585524] other info that might help us debug this:
[ 1148.599624] 3 locks held by cat/5008:
[ 1148.607085] #0: ffff92aea3e392c0 (&p->lock){+.+.}-{3:3}, at: seq_read+0x34/0x480
[ 1148.618509] #1: ffff922ef14c4888 (&of->mutex){+.+.}-{3:3}, at: kernfs_seq_start+0x2a/0xb0
[ 1148.630729] #2: ffff92aedb5d7310 (kn->active#224){.+.+}-{0:0}, at: kernfs_seq_start+0x32/0xb0
[ 1148.643347]
[ 1148.643347] stack backtrace:
[ 1148.655259] CPU: 73 PID: 5008 Comm: cat Not tainted 5.8.0-rc3+ #827
[ 1148.665309] Hardware name: HGST H4060-S/S2600STB, BIOS SE5C620.86B.02.01.0008.031920191559 03/19/2019
[ 1148.678394] Call Trace:
[ 1148.684750] dump_stack+0x78/0xa0
[ 1148.691802] lock_release.cold+0x45/0x4a
[ 1148.699451] __mutex_unlock_slowpath+0x35/0x270
[ 1148.707675] BRM_status_show+0xd3/0x100 [mpt3sas]
[ 1148.716092] dev_attr_show+0x19/0x40
[ 1148.723664] sysfs_kf_seq_show+0x87/0x100
[ 1148.731193] seq_read+0xbc/0x480
[ 1148.737882] vfs_read+0xa0/0x160
[ 1148.744514] ksys_read+0x58/0xd0
[ 1148.751129] do_syscall_64+0x4c/0xa0
[ 1148.757941] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 1148.766240] RIP: 0033:0x7f1230566542
[ 1148.772957] Code: Bad RIP value.
[ 1148.779206] RSP: 002b:00007ffeac1bcac8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
[ 1148.790063] RAX: ffffffffffffffda RBX: 0000000000020000 RCX: 00007f1230566542
[ 1148.800284] RDX: 0000000000020000 RSI: 00007f1223460000 RDI: 0000000000000003
[ 1148.810474] RBP: 00007f1223460000 R08: 00007f122345f010 R09: 0000000000000000
[ 1148.820641] R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000000000
[ 1148.830728] R13: 0000000000000003 R14: 0000000000020000 R15: 0000000000020000
Fix this by returning immediately instead of jumping to the out label.
Link: https://lore.kernel.org/r/20200701085254.51740-1-damien.lemoal@wdc.com
Reviewed-by: Johannes Thumshirn <johannes.thumshirn(a)wdc.com>
Acked-by: Sreekanth Reddy <sreekanth.reddy(a)broadcom.com>
Signed-off-by: Damien Le Moal <damien.lemoal(a)wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen(a)oracle.com>
Conflict:
drivers/scsi/mpt3sas/mpt3sas_ctl.c
Signed-off-by: Zhang Wensheng <zhangwensheng5(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/scsi/mpt3sas/mpt3sas_ctl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
index 772d78d92d44..90060af097cc 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
@@ -2965,7 +2965,7 @@ _ctl_BRM_status_show(struct device *cdev, struct device_attribute *attr,
if (!ioc->is_warpdrive) {
pr_err(MPT3SAS_FMT "%s: BRM attribute is only for"
" warpdrive\n", ioc->name, __func__);
- goto out;
+ return 0;
}
/* pci_access_mutex lock acquired by sysfs show path */
mutex_lock(&ioc->pci_access_mutex);
--
2.25.1
1
0
您好!
Kernel SIG 邀请您参加 2022-08-05 14:00 召开的Zoom会议(自动录制)
会议主题:openEuler kernel SIG例会
会议内容:
1、arm64:support SME(Scalable Matrix Extension)特性回合评审
2、rust for openEuler特性回合评审
会议链接:https://us06web.zoom.us/j/89651338599?pwd=RUMzN1B6WStiMXVwcEdZZVYxTWRmdz09
会议纪要:https://etherpad.openeuler.org/p/Kernel-meetings
温馨提醒:建议接入会议后修改参会人的姓名,也可以使用您在gitee.com的ID
更多资讯尽在:https://openeuler.org/zh/
Hello!
openEuler Kernel SIG invites you to attend the Zoom conference(auto recording) will be held at 2022-08-05 14:00,
The subject of the conference is openEuler kernel SIG例会,
Summary:
1、arm64:support SME(Scalable Matrix Extension)特性回合评审
2、rust for openEuler特性回合评审
You can join the meeting at https://us06web.zoom.us/j/89651338599?pwd=RUMzN1B6WStiMXVwcEdZZVYxTWRmdz09.
Add topics at https://etherpad.openeuler.org/p/Kernel-meetings.
Note: You are advised to change the participant name after joining the conference or use your ID at gitee.com.
More information: https://openeuler.org/en/
1
0

[PATCH openEuler-1.0-LTS] io-wq: Switch io_wqe_worker's fs before releasing request
by Yongqiang Liu 04 Aug '22
by Yongqiang Liu 04 Aug '22
04 Aug '22
From: Zhihao Cheng <chengzhihao1(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187369, https://gitee.com/openeuler/kernel/issues/I5K66O
CVE: NA
--------------------------------
Following process triggers an use-after-free problem while iterating
every process's fs:
main
fd = setup_iouring
fork => main' // task->fs->users = 1
submit(fd, STATX, async)
id->fs = current->fs
req->work.identity = id
io_submit_sqes
...
io_grab_identity
id = req->work.identity
id->fs->users++ // fs->users = 2
io_wqe_worker
current->fs = work->identity->fs
io_req_clean_work
fs = req->work.identity->fs
--fs->users // fs->user = 1
main' exit
exit_fs
--fs->users // fs->user = 0
free_fs_struct(fs) // FREE fs
pivot_root
chroot_fs_refs
do_each_thread(g, p) {
fs = p->fs // io_wqe_worker->fs
if (fs)
spin_lock(&fs->lock) // UAF!
}
io_wqe_worker
io_worker_exit
__io_worker_unuse
if (current->fs != worker->restore_fs)
current->fs = worker->restore_fs
Task's fs_struct is used in do_work() and destroyed in free_work(),
this problem can be fixed by switching io_wqe_worker's fs before
releasing request.
Signed-off-by: Zhihao Cheng <chengzhihao1(a)huawei.com>
Reviewed-by: Zhang Yi <yi.zhang(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
fs/io-wq.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fs/io-wq.c b/fs/io-wq.c
index b6e311e57b47..67d157bcf2fb 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -534,6 +534,8 @@ static void io_worker_handle_work(struct io_worker *worker)
linked = NULL;
}
io_assign_current_work(worker, work);
+ if (current->fs != worker->restore_fs)
+ current->fs = worker->restore_fs;
wq->free_work(old_work);
if (linked)
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] ath9k: fix use-after-free in ath9k_hif_usb_rx_cb
by Yongqiang Liu 03 Aug '22
by Yongqiang Liu 03 Aug '22
03 Aug '22
From: Pavel Skripkin <paskripkin(a)gmail.com>
mainline inclusion
from linux-next
commit 0ac4827f78c7ffe8eef074bc010e7e34bc22f533
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I58DFB
CVE: CVE-2022-1679
--------------------------------
Syzbot reported use-after-free Read in ath9k_hif_usb_rx_cb() [0]. The
problem was in incorrect htc_handle->drv_priv initialization.
Probable call trace which can trigger use-after-free:
ath9k_htc_probe_device()
/* htc_handle->drv_priv = priv; */
ath9k_htc_wait_for_target() <--- Failed
ieee80211_free_hw() <--- priv pointer is freed
<IRQ>
...
ath9k_hif_usb_rx_cb()
ath9k_hif_usb_rx_stream()
RX_STAT_INC() <--- htc_handle->drv_priv access
In order to not add fancy protection for drv_priv we can move
htc_handle->drv_priv initialization at the end of the
ath9k_htc_probe_device() and add helper macro to make
all *_STAT_* macros NULL safe, since syzbot has reported related NULL
deref in that macros [1]
Link: https://syzkaller.appspot.com/bug?id=6ead44e37afb6866ac0c7dd121b4ce07cb665f… [0]
Link: https://syzkaller.appspot.com/bug?id=b8101ffcec107c0567a0cd8acbbacec91e9ee8… [1]
Fixes: fb9987d0f748 ("ath9k_htc: Support for AR9271 chipset.")
Reported-and-tested-by: syzbot+03110230a11411024147(a)syzkaller.appspotmail.com
Reported-and-tested-by: syzbot+c6dde1f690b60e0b9fbe(a)syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin(a)gmail.com>
Acked-by: Toke Høiland-Jørgensen <toke(a)toke.dk>
Signed-off-by: Kalle Valo <quic_kvalo(a)quicinc.com>
Link: https://lore.kernel.org/r/d57bbedc857950659bfacac0ab48790c1eda00c8.16551457…
Signed-off-by: Xu Jia <xujia39(a)huawei.com>
Reviewed-by: Yue Haibing <yuehaibing(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Reviewed-by: Wang Weiyang <wangweiyang2(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/net/wireless/ath/ath9k/htc.h | 10 +++++-----
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 3 ++-
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h
index 9f64e32381f9..81107100e368 100644
--- a/drivers/net/wireless/ath/ath9k/htc.h
+++ b/drivers/net/wireless/ath/ath9k/htc.h
@@ -325,11 +325,11 @@ static inline struct ath9k_htc_tx_ctl *HTC_SKB_CB(struct sk_buff *skb)
}
#ifdef CONFIG_ATH9K_HTC_DEBUGFS
-
-#define TX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c++)
-#define TX_STAT_ADD(c, a) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c += a)
-#define RX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c++)
-#define RX_STAT_ADD(c, a) (hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c += a)
+#define __STAT_SAFE(expr) (hif_dev->htc_handle->drv_priv ? (expr) : 0)
+#define TX_STAT_INC(c) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.tx_stats.c++)
+#define TX_STAT_ADD(c, a) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.tx_stats.c += a)
+#define RX_STAT_INC(c) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c++)
+#define RX_STAT_ADD(c, a) __STAT_SAFE(hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c += a)
#define CAB_STAT_INC priv->debug.tx_stats.cab_queued++
#define TX_QSTAT_INC(q) (priv->debug.tx_stats.queue_stats[q]++)
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
index 214c68269a69..e3a6f48dbd8c 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
@@ -945,7 +945,6 @@ int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
priv->hw = hw;
priv->htc = htc_handle;
priv->dev = dev;
- htc_handle->drv_priv = priv;
SET_IEEE80211_DEV(hw, priv->dev);
ret = ath9k_htc_wait_for_target(priv);
@@ -966,6 +965,8 @@ int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
if (ret)
goto err_init;
+ htc_handle->drv_priv = priv;
+
return 0;
err_init:
--
2.25.1
1
0

[PATCH openEuler-1.0-LTS] Revert "iommu/vt-d: Fix potential memory leak in intel_setup_irq_remapping()"
by Yongqiang Liu 03 Aug '22
by Yongqiang Liu 03 Aug '22
03 Aug '22
From: Zhang Zekun <zhangzekun11(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 187358, https://gitee.com/openeuler/kernel/issues/I5KD2A
CVE: NA
---------------------------------
This reverts commit 75624b5bc0485778aef9f46ebbf5e5df3c0d054c.
This patch could cause double-free problem, when 'irqdomain' is
failed to add, in which case, irq_domain_free_fwnode(fn) will be
called twice.
Signed-off-by: Zhang Zekun <zhangzekun11(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/iommu/intel_irq_remapping.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
index 276005451914..967450bd421a 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -539,7 +539,7 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
irq_domain_free_fwnode(fn);
if (!iommu->ir_domain) {
pr_err("IR%d: failed to allocate irqdomain\n", iommu->seq_id);
- goto out_free_fwnode;
+ goto out_free_bitmap;
}
iommu->ir_msi_domain =
arch_create_remap_msi_irq_domain(iommu->ir_domain,
@@ -563,7 +563,7 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
if (dmar_enable_qi(iommu)) {
pr_err("Failed to enable queued invalidation\n");
- goto out_free_ir_domain;
+ goto out_free_bitmap;
}
}
@@ -587,14 +587,6 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
return 0;
-out_free_ir_domain:
- if (iommu->ir_msi_domain)
- irq_domain_remove(iommu->ir_msi_domain);
- iommu->ir_msi_domain = NULL;
- irq_domain_remove(iommu->ir_domain);
- iommu->ir_domain = NULL;
-out_free_fwnode:
- irq_domain_free_fwnode(fn);
out_free_bitmap:
kfree(bitmap);
out_free_pages:
--
2.25.1
1
0

[PATCH openEuler-5.10-LTS 01/20] md: add io accounting for raid0 and raid5
by Zheng Zengkai 02 Aug '22
by Zheng Zengkai 02 Aug '22
02 Aug '22
From: Guoqing Jiang <jgq516(a)gmail.com>
mainline inclusion
from mainline-v5.14-rc1
commit 10764815ff4728d2c57da677cd5d3dd6f446cf5f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I587H6
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
-------------------------------
We introduce a new bioset (io_acct_set) for raid0 and raid5 since they
don't own clone infrastructure to accounting io. And the bioset is added
to mddev instead of to raid0 and raid5 layer, because with this way, we
can put common functions to md.h and reuse them in raid0 and raid5.
Also struct md_io_acct is added accordingly which includes io start_time,
the origin bio and cloned bio. Then we can call bio_{start,end}_io_acct
to get related io status.
Signed-off-by: Guoqing Jiang <jiangguoqing(a)kylinos.cn>
Signed-off-by: Song Liu <song(a)kernel.org>
Conflict:
drivers/md/md.c
drivers/md/md.h
Signed-off-by: Zhang Wensheng <zhangwensheng5(a)huawei.com>
Reviewed-by: Jason Yan <yanaijie(a)huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
---
drivers/md/md.c | 52 ++++++++++++++++++++++++++++++++++++++++++----
drivers/md/md.h | 8 +++++++
drivers/md/raid0.c | 3 +++
drivers/md/raid5.c | 9 ++++++++
4 files changed, 68 insertions(+), 4 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index a299fda5b0e9..10d9a8bed604 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2361,7 +2361,8 @@ int md_integrity_register(struct mddev *mddev)
bdev_get_integrity(reference->bdev));
pr_debug("md: data integrity enabled on %s\n", mdname(mddev));
- if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE)) {
+ if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE) ||
+ bioset_integrity_create(&mddev->io_acct_set, BIO_POOL_SIZE)) {
pr_err("md: failed to create integrity pool for %s\n",
mdname(mddev));
return -EINVAL;
@@ -5597,6 +5598,7 @@ static void md_free(struct kobject *ko)
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
kfree(mddev);
}
@@ -5885,7 +5887,13 @@ int md_run(struct mddev *mddev)
if (!bioset_initialized(&mddev->sync_set)) {
err = bioset_init(&mddev->sync_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
if (err)
- return err;
+ goto exit_bio_set;
+ }
+ if (!bioset_initialized(&mddev->io_acct_set)) {
+ err = bioset_init(&mddev->io_acct_set, BIO_POOL_SIZE,
+ offsetof(struct md_io_acct, bio_clone), 0);
+ if (err)
+ goto exit_sync_set;
}
spin_lock(&pers_lock);
@@ -6013,6 +6021,7 @@ int md_run(struct mddev *mddev)
blk_queue_flag_set(QUEUE_FLAG_NONROT, mddev->queue);
else
blk_queue_flag_clear(QUEUE_FLAG_NONROT, mddev->queue);
+ blk_queue_flag_set(QUEUE_FLAG_IO_STAT, mddev->queue);
}
if (pers->sync_request) {
if (mddev->kobj.sd &&
@@ -6062,8 +6071,11 @@ int md_run(struct mddev *mddev)
module_put(pers->owner);
md_bitmap_destroy(mddev);
abort:
- bioset_exit(&mddev->bio_set);
+ bioset_exit(&mddev->io_acct_set);
+exit_sync_set:
bioset_exit(&mddev->sync_set);
+exit_bio_set:
+ bioset_exit(&mddev->bio_set);
return err;
}
EXPORT_SYMBOL_GPL(md_run);
@@ -6288,6 +6300,7 @@ void md_stop(struct mddev *mddev)
__md_stop(mddev);
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
+ bioset_exit(&mddev->io_acct_set);
}
EXPORT_SYMBOL_GPL(md_stop);
@@ -8571,9 +8584,40 @@ void md_write_end(struct mddev *mddev)
roundup(jiffies, mddev->safemode_delay) +
mddev->safemode_delay);
}
-
EXPORT_SYMBOL(md_write_end);
+static void md_end_io_acct(struct bio *bio)
+{
+ struct md_io_acct *md_io_acct = bio->bi_private;
+ struct bio *orig_bio = md_io_acct->orig_bio;
+
+ orig_bio->bi_status = bio->bi_status;
+
+ bio_end_io_acct(orig_bio, md_io_acct->start_time);
+ bio_put(bio);
+ bio_endio(orig_bio);
+}
+
+/* used by personalities (raid0 and raid5) to account io stats */
+void md_account_bio(struct mddev *mddev, struct bio **bio)
+{
+ struct md_io_acct *md_io_acct;
+ struct bio *clone;
+
+ if (!blk_queue_io_stat((*bio)->bi_disk->queue))
+ return;
+
+ clone = bio_clone_fast(*bio, GFP_NOIO, &mddev->io_acct_set);
+ md_io_acct = container_of(clone, struct md_io_acct, bio_clone);
+ md_io_acct->orig_bio = *bio;
+ md_io_acct->start_time = bio_start_io_acct(*bio);
+
+ clone->bi_end_io = md_end_io_acct;
+ clone->bi_private = md_io_acct;
+ *bio = clone;
+}
+EXPORT_SYMBOL_GPL(md_account_bio);
+
/* md_allow_write(mddev)
* Calling this ensures that the array is marked 'active' so that writes
* may proceed without blocking. It is important to call this before
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 85177d068322..20c16cfdd6bb 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -491,6 +491,7 @@ struct mddev {
struct bio_set sync_set; /* for sync operations like
* metadata and bitmap writes
*/
+ struct bio_set io_acct_set; /* for raid0 and raid5 io accounting */
/* Generic flush handling.
* The last to finish preflush schedules a worker to submit
@@ -687,6 +688,12 @@ struct md_thread {
void *private;
};
+struct md_io_acct {
+ struct bio *orig_bio;
+ unsigned long start_time;
+ struct bio bio_clone;
+};
+
#define THREAD_WAKEUP 0
static inline void safe_put_page(struct page *p)
@@ -716,6 +723,7 @@ extern void md_write_end(struct mddev *mddev);
extern void md_done_sync(struct mddev *mddev, int blocks, int ok);
extern void md_error(struct mddev *mddev, struct md_rdev *rdev);
extern void md_finish_reshape(struct mddev *mddev);
+void md_account_bio(struct mddev *mddev, struct bio **bio);
extern bool __must_check md_flush_request(struct mddev *mddev, struct bio *bio);
extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 35843df15b5e..0312b192106a 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -556,6 +556,9 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
bio = split;
}
+ if (bio->bi_pool != &mddev->bio_set)
+ md_account_bio(mddev, &bio);
+
orig_sector = sector;
zone = find_zone(mddev->private, §or);
switch (conf->layout) {
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index c82953a3299e..35dacc6e754f 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5487,6 +5487,7 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
sector_t sector = raid_bio->bi_iter.bi_sector;
unsigned chunk_sects = mddev->chunk_sectors;
unsigned sectors = chunk_sects - (sector & (chunk_sects-1));
+ struct r5conf *conf = mddev->private;
if (sectors < bio_sectors(raid_bio)) {
struct r5conf *conf = mddev->private;
@@ -5496,6 +5497,9 @@ static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
raid_bio = split;
}
+ if (raid_bio->bi_pool != &conf->bio_split)
+ md_account_bio(mddev, &raid_bio);
+
if (!raid5_read_one_chunk(mddev, raid_bio))
return raid_bio;
@@ -5775,6 +5779,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
DEFINE_WAIT(w);
bool do_prepare;
bool do_flush = false;
+ bool do_clone = false;
if (unlikely(bi->bi_opf & REQ_PREFLUSH)) {
int ret = log_handle_flush_request(conf, bi);
@@ -5803,6 +5808,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
if (rw == READ && mddev->degraded == 0 &&
mddev->reshape_position == MaxSector) {
bi = chunk_aligned_read(mddev, bi);
+ do_clone = true;
if (!bi)
return true;
}
@@ -5817,6 +5823,9 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
last_sector = bio_end_sector(bi);
bi->bi_next = NULL;
+ if (!do_clone)
+ md_account_bio(mddev, &bi);
+
prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE);
for (; logical_sector < last_sector; logical_sector += RAID5_STRIPE_SECTORS(conf)) {
int previous;
--
2.20.1
1
19
Backport 5.10.115 LTS patches from upstream.
git cherry-pick v5.10.114..v5.10.115~1 -s
Complicts:
Already merged(4):
8a9e7c64f4a0 nfc: replace improper check device_is_registered() in netlink
related functions
1961c5a688ed nfc: nfcmrvl: main: reorder destructive operations in
nfcmrvl_nci_unregister_dev to avoid bugs
879b075a9a36 NFC: netlink: fix sleep in atomic bug when firmware download
timeout
a439819f4797 block-map: add __GFP_ZERO flag for alloc_page in function
bio_copy_kern
Rejected(2):
hinic driver drops related file in the patch:
475237e807a2 hinic: fix bug of wq out of bound access
build failed due to reject of patch "845f44ce3d9f1 net/sched: flower: fix
parsing of ethertype following VLAN header":
d8338a7a0957 net/mlx5e: Don't match double-vlan packets if cvlan is not set
Total patches: 70 - 4 - 2 = 64
Andreas Larsson (2):
can: grcan: grcan_probe(): fix broken system id check for errata
workaround needs
can: grcan: only use the NAPI poll budget for RX
Andrei Lalaev (1):
gpiolib: of: fix bounds check for 'gpio-reserved-ranges'
Armin Wolf (1):
hwmon: (adt7470) Fix warning on module removal
Aya Levin (1):
net/mlx5: Fix slab-out-of-bounds while reading resource dump menu
Brian Norris (1):
mmc: core: Set HS clock speed before sending HS CMD13
Cheng Xu (1):
RDMA/siw: Fix a condition race issue in MPA request processing
Chengfeng Ye (1):
firewire: fix potential uaf in outbound_phy_packet_callback()
Codrin Ciubotariu (1):
ASoC: dmaengine: Restore NULL prepare_slave_config() callback
Daniel Hellstrom (1):
can: grcan: use ofdev->dev when allocating DMA memory
David Stevens (1):
iommu/vt-d: Calculate mask for non-aligned flushes
Duoming Zhou (1):
can: grcan: grcan_close(): fix deadlock
Eric Dumazet (1):
net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter()
Filipe Manana (1):
btrfs: always log symlinks in full mode
Frederic Weisbecker (2):
rcu: Fix callbacks processing time limit retaining cond_resched()
rcu: Apply callbacks processing time limit only on softirq
Harry Wentland (1):
drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT
Helge Deller (1):
parisc: Merge model and model name into one line in /proc/cpuinfo
Ido Schimmel (1):
selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface
is operational
Jakob Koschel (1):
firewire: remove check of list iterator against head past the loop
body
Jan Höppner (2):
s390/dasd: Fix read for ESE with blksize < 4k
s390/dasd: Fix read inconsistency for ESE DASD devices
Jann Horn (1):
selftests/seccomp: Don't call read() on TTY from background pgrp
Kyle Huey (1):
KVM: x86/svm: Account for family 17h event renumberings in
amd_pmc_perf_hw_id
Maciej W. Rozycki (1):
MIPS: Fix CP0 counter erratum detection for R4k CPUs
Mark Brown (5):
ASoC: da7219: Fix change notifications for tone generator frequency
ASoC: wm8958: Fix change notifications for DSP controls
ASoC: meson: Fix event generation for AUI ACODEC mux
ASoC: meson: Fix event generation for G12A tohdmi mux
ASoC: meson: Fix event generation for AUI CODEC mux
Mark Zhang (1):
net/mlx5e: Fix the calling of update_buffer_lossy() API
Michael Chan (1):
bnxt_en: Fix unnecessary dropping of RX packets
Mike Snitzer (1):
dm: interlock pending dm_io and dm_wait_for_bios_completion
Moshe Shemesh (1):
net/mlx5: Avoid double clear or set of sync reset requested
Moshe Tal (1):
net/mlx5e: Fix trust state reset in reload
Niels Dossche (1):
firewire: core: extend card->lock in fw_core_handle_bus_reset
Oliver Hartkopp (1):
can: isotp: remove re-binding of bound socket
Pali Rohár (2):
PCI: aardvark: Clear all MSIs at setup
PCI: aardvark: Fix reading MSI interrupt number
Paolo Bonzini (2):
KVM: x86: Do not change ICR on write to APIC_SELF_IPI
KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs
Paul Blakey (1):
net/mlx5e: CT: Fix queued up restore put() executing after relevant ft
release
Puyou Lu (1):
gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask
not set)
Ricky WU (1):
mmc: rtsx: add 74 Clocks in power on flow
Sandipan Das (1):
kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural
PMU
Sergey Shtylyov (1):
smsc911x: allow using IRQ0
Shaik Sajida Bhanu (1):
mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC
Shravya Kumbham (1):
net: emaclite: Add error handling for of_address_to_resource()
Somnath Kotur (1):
bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag
Stefan Haberland (2):
s390/dasd: fix data corruption for ESE devices
s390/dasd: prevent double format of tracks for ESE devices
Takashi Sakamoto (1):
ALSA: fireworks: fix wrong return count shorter than expected by 4
bytes
Tan Tee Min (1):
net: stmmac: disable Split Header (SPH) for Intel platforms
Thomas Pfaff (1):
genirq: Synchronize interrupt thread startup
Trond Myklebust (2):
Revert "SUNRPC: attempt AF_LOCAL connect on setup"
NFSv4: Don't invalidate inode attributes on delegation return
Vladimir Oltean (1):
selftests: ocelot: tc_flower_chains: specify conform-exceed action for
policer
Wanpeng Li (2):
x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume
KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is
advertised
Yang Yingliang (4):
net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init()
net: dsa: mt7530: add missing of_node_put() in mt7530_setup()
net: stmmac: dwmac-sun8i: add missing of_node_put() in
sun8i_dwmac_register_mdio_mux()
net: cpsw: add missing of_node_put() in cpsw_probe_dt()
Zihao Wang (1):
ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers
arch/mips/include/asm/timex.h | 8 ++--
arch/mips/kernel/time.c | 11 ++---
arch/parisc/kernel/processor.c | 3 +-
arch/x86/kernel/kvm.c | 13 ++++++
arch/x86/kvm/cpuid.c | 5 ++
arch/x86/kvm/lapic.c | 10 ++--
arch/x86/kvm/mmu/mmu.c | 2 +
arch/x86/kvm/svm/pmu.c | 28 +++++++++--
drivers/firewire/core-card.c | 3 ++
drivers/firewire/core-cdev.c | 4 +-
drivers/firewire/core-topology.c | 9 ++--
drivers/firewire/core-transaction.c | 30 ++++++------
drivers/firewire/sbp2.c | 13 +++---
drivers/gpio/gpio-pca953x.c | 4 +-
drivers/gpio/gpiolib-of.c | 2 +-
.../gpu/drm/amd/display/dc/core/dc_link_dp.c | 2 +-
drivers/hwmon/adt7470.c | 4 +-
drivers/infiniband/sw/siw/siw_cm.c | 7 +--
drivers/iommu/intel/iommu.c | 27 +++++++++--
drivers/md/dm.c | 8 +++-
drivers/mmc/core/mmc.c | 23 ++++++++--
drivers/mmc/host/rtsx_pci_sdmmc.c | 31 +++++++++----
drivers/mmc/host/sdhci-msm.c | 42 +++++++++++++++++
drivers/net/can/grcan.c | 46 ++++++++++---------
drivers/net/dsa/mt7530.c | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 13 ++++--
drivers/net/ethernet/mediatek/mtk_sgmii.c | 1 +
.../mellanox/mlx5/core/diag/rsc_dump.c | 31 ++++++++++---
.../mellanox/mlx5/core/en/port_buffer.c | 4 +-
.../ethernet/mellanox/mlx5/core/en/tc_ct.c | 4 ++
.../ethernet/mellanox/mlx5/core/en_dcbnl.c | 10 ++++
.../ethernet/mellanox/mlx5/core/fw_reset.c | 28 +++++++----
drivers/net/ethernet/smsc/smsc911x.c | 2 +-
.../net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 +
.../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 1 +
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
drivers/net/ethernet/ti/cpsw_new.c | 5 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 15 ++++--
drivers/pci/controller/pci-aardvark.c | 16 +++----
drivers/s390/block/dasd.c | 18 ++++++--
drivers/s390/block/dasd_eckd.c | 28 ++++++++---
drivers/s390/block/dasd_int.h | 14 ++++++
fs/btrfs/tree-log.c | 14 +++++-
fs/nfs/nfs4proc.c | 12 ++++-
include/linux/stmmac.h | 1 +
kernel/irq/internals.h | 2 +
kernel/irq/irqdesc.c | 2 +
kernel/irq/manage.c | 39 ++++++++++++----
kernel/rcu/tree.c | 32 +++++++------
net/can/isotp.c | 22 ++-------
net/ipv4/igmp.c | 9 ++--
net/sunrpc/xprtsock.c | 3 --
sound/firewire/fireworks/fireworks_hwdep.c | 1 +
sound/pci/hda/patch_realtek.c | 1 +
sound/soc/codecs/da7219.c | 14 ++++--
sound/soc/codecs/wm8958-dsp2.c | 8 ++--
sound/soc/meson/aiu-acodec-ctrl.c | 2 +-
sound/soc/meson/aiu-codec-ctrl.c | 2 +-
sound/soc/meson/g12a-tohdmitx.c | 2 +-
sound/soc/soc-generic-dmaengine-pcm.c | 6 +--
.../drivers/net/ocelot/tc_flower_chains.sh | 2 +-
.../net/forwarding/mirror_gre_bridge_1q.sh | 3 ++
tools/testing/selftests/seccomp/seccomp_bpf.c | 10 ++--
63 files changed, 501 insertions(+), 215 deletions(-)
--
2.20.1
1
64
Backport 5.10.114 LTS patches from upstream.
git cherry-pick v5.10.113..v5.10.114~1 -s
Complicts:
Already merged(4):
54c028cfc496 floppy: disable FDRAWCMD by default
e3ec78d82d48 net: hns3: modify the return code of hclge_get_ring_chain_from_mbx
929c30c02de4 net: hns3: add validity check for message data length
9eb25e00f59b net: hns3: add return value for mailbox handling in PF
Implementation changed(already merged, use mainline version b98535d09179, 1):
585ef03c9e79 ext4: fix bug_on in start_this_handle during umount filesystem
Defered(3, kabi changed):
3c464db03c12 tcp: ensure to use the most recently sent skb when filling the rate
sample
6f2bf9c5ddfe mtd: fix 'part' field data corruption in mtd_info
616d354fb9e8 hex2bin: make the function hex_to_bin constant-time
Total patches: 129 - 4 - 1 - 3 = 121
Adam Ford (2):
ARM: dts: am3517-evm: Fix misc pinmuxing
ARM: dts: logicpd-som-lv: Fix wrong pinmuxing on OMAP35
Alexey Kardashevskiy (1):
powerpc/perf: Fix 32bit compile
Baruch Siach (1):
net: phy: marvell10g: fix return value on error
Borislav Petkov (1):
x86/cpu: Load microcode during restore_processor_state()
Bruno Thomsen (1):
USB: serial: cp210x: add PIDs for Kamstrup USB Meter Reader
Chao Song (1):
ASoC: Intel: soc-acpi: correct device endpoints for max98373
Christian Hewitt (2):
arm64: dts: meson: remove CPU opps below 1GHz for G12B boards
arm64: dts: meson: remove CPU opps below 1GHz for SM1 boards
Christophe JAILLET (1):
bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create()
Chuanhong Guo (1):
mtd: rawnand: fix ecc parameters for mt7622
Claudiu Beznea (1):
ARM: dts: at91: sama5d4_xplained: fix pinctrl phandle name
Damien Le Moal (2):
zonefs: Fix management of open zones
zonefs: Clear inode information flags on inode creation
Dan Vacura (1):
usb: gadget: uvc: Fix crash when encoding data for usb request
Daniel Starke (13):
tty: n_gsm: fix restart handling via CLD command
tty: n_gsm: fix decoupled mux resource
tty: n_gsm: fix mux cleanup after unregister tty device
tty: n_gsm: fix wrong signal octet encoding in convergence layer type
2
tty: n_gsm: fix malformed counter for out of frame data
tty: n_gsm: fix insufficient txframe size
tty: n_gsm: fix wrong DLCI release order
tty: n_gsm: fix missing explicit ldisc flush
tty: n_gsm: fix wrong command retry handling
tty: n_gsm: fix wrong command frame length field encoding
tty: n_gsm: fix reset fifo race condition
tty: n_gsm: fix incorrect UA handling
tty: n_gsm: fix software flow control handling
Daniele Palmas (1):
USB: serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions
Dany Madden (1):
Revert "ibmvnic: Add ethtool private flag for driver-defined queue
limits"
David Yat Sin (1):
drm/amdkfd: Fix GWS queue count
Dinh Nguyen (1):
net: ethernet: stmmac: fix write to sgmii_adapter_base
Duoming Zhou (1):
drivers: net: hippi: Fix deadlock in rr_close()
Eric Dumazet (2):
tcp: fix potential xmit stalls caused by TCP_NOTSENT_LOWAT
tcp: make sure treq->af_specific is initialized
Evan Green (1):
xhci: Enable runtime PM on second Alderlake controller
Eyal Birger (1):
bpf, lwt: Fix crash when using bpf_skb_set_tunnel_key() from bpf_xmit
lwt hook
Fabio Estevam (2):
ARM: dts: imx6qdl-apalis: Fix sgtl5000 detection issue
arm64: dts: imx8mn-ddr4-evk: Describe the 32.768 kHz PMIC clock
Fawzi Khaber (1):
iio: imu: inv_icm42600: Fix I2C init possible nack
Florian Westphal (1):
netfilter: nft_socket: only do sk lookups when indev is available
Francesco Ruggeri (1):
tcp: md5: incorrect tcp_header_len for incoming connections
Geert Uytterhoeven (1):
memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode
Greg Kroah-Hartman (1):
lightnvm: disable the subsystem
Guo Ren (1):
riscv: patch_text: Fixup last cpu should be master
H. Nikolaus Schaller (1):
ARM: dts: Fix mmc order for omap3-gta04
Hangyu Hua (1):
usb: misc: fix improper handling of refcount in uss720_probe()
Heikki Krogerus (2):
usb: typec: ucsi: Fix reuse of completion structure
usb: typec: ucsi: Fix role swapping
Henry Lin (1):
xhci: stop polling roothubs after shutdown
Imre Deak (1):
drm/i915: Fix SEL_FETCH_PLANE_*(PIPE_B+) register addresses
Johan Hovold (1):
serial: imx: fix overrun interrupts in DMA mode
Jonathan Lemon (1):
net: bcmgenet: hide status block before TX timestamping
Kees Cook (2):
USB: serial: whiteheat: fix heap overflow in WHITEHEAT_GET_DTR_RTS
thermal: int340x: Fix attr.show callback prototype
Krzysztof Kozlowski (2):
pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config
phy: samsung: exynos5250-sata: fix missing device put in probe error
paths
Leon Romanovsky (1):
ixgbe: ensure IPsec VF<->PF compatibility
Lijun Pan (1):
ibmvnic: fix miscellaneous checks
Luca Ceresoli (1):
pinctrl: rockchip: fix RK3308 pinmux bits
Lv Ruyi (1):
pinctrl: pistachio: fix use of irq_of_parse_and_map()
Maciej W. Rozycki (2):
serial: 8250: Also set sticky MCR bits in console restoration
serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device
Macpaul Lin (1):
usb: mtu3: fix USB 3.0 dual-role-switch from device to host
Manish Chopra (1):
bnx2x: fix napi API usage sequence
Marek Vasut (2):
pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs
in EOI
pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ
requested
Mark Brown (1):
ARM: dts: at91: Map MCLK for wm8731 on at91sam9g20ek
Martin Blumenstingl (1):
net: dsa: lantiq_gswip: Don't set GSWIP_MII_CFG_RMII_CLK
Mathias Nyman (1):
xhci: increase usb U3 -> U0 link resume timeout from 100ms to 500ms
Max Krummenacher (1):
ARM: dts: imx6ull-colibri: fix vqmmc regulator
Maxim Mikityanskiy (1):
tls: Skip tls_append_frag on zero copy size
Miaoqian Lin (8):
phy: samsung: Fix missing of_node_put() in exynos_sata_phy_probe
ARM: OMAP2+: Fix refcount leak in omap_gic_of_init
phy: ti: omap-usb2: Fix error handling in omap_usb2_enable_clocks
phy: mapphone-mdm6600: Fix PM error handling in phy_mdm6600_probe
phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe
mtd: rawnand: Fix return value check of wait_for_completion_timeout
net: dsa: Add missing of_node_put() in dsa_port_link_register_of
drm/amd/display: Fix memory leak in dcn21_clock_source_create
Michael Hennerich (1):
iio: dac: ad5446: Fix read_raw not returning set value
Mikulas Patocka (2):
hex2bin: fix access beyond string end
x86: __memcpy_flushcache: fix wrong alignment if size > 2^32
Namhyung Kim (3):
perf symbol: Pass is_kallsyms to symbols__fixup_end()
perf symbol: Update symbols__fixup_end()
perf symbol: Remove arch__symbols__fixup_end()
Nikolay Aleksandrov (1):
wireguard: device: check for metadata_dst with skb_valid_dst()
Oliver Neukum (2):
USB: quirks: add a Realtek card reader
USB: quirks: add STRING quirk for VCOM device
Pablo Neira Ayuso (1):
netfilter: nft_set_rbtree: overlap detection with element re-addition
after deletion
Pavel Skripkin (1):
video: fbdev: udlfb: properly check endpoint type
Pawel Laszczak (1):
usb: cdns3: Fix issue for clear halt endpoint
Peilin Ye (3):
ip_gre: Make o_seqno start from 0 in native mode
ip6_gre: Make o_seqno start from 0 in native mode
ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode
Pengcheng Yang (2):
ipvs: correctly print the memory size of ip_vs_conn_tab
tcp: fix F-RTO may not work correctly when receiving DSACK
Ronnie Sahlberg (1):
cifs: destage any unwritten data to the server before calling
copychunk_write
Sean Anderson (1):
usb: phy: generic: Get the vbus supply
Slark Xiao (1):
USB: serial: option: add support for Cinterion MV32-WA/MV32-WB
Sven Peter (1):
usb: dwc3: Try usb-role-switch first in dwc3_drd_init
Tejun Heo (1):
iocost: don't reset the inuse weight of under-weighted debtors
Thinh Nguyen (3):
usb: dwc3: core: Fix tx/rx threshold settings
usb: dwc3: core: Only handle soft-reset in DCTL
usb: dwc3: gadget: Return proper request status
Thomas Gleixner (1):
x86/pci/xen: Disable PCI/MSI[-X] masking for XEN_HVM guests
Tong Zhang (1):
iio:imu:bmi160: disable regulator in error path
Tony Lindgren (1):
bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific
Vijayavardhan Vennapusa (1):
usb: gadget: configfs: clear deactivation flag in
configfs_composite_unbind()
Wang Qing (1):
arch_topology: Do not set llc_sibling if llc_id is invalid
Weitao Wang (1):
USB: Fix xhci event ring dequeue pointer ERDP update issue
Xiaobing Luo (1):
cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe
Xin Long (1):
sctp: check asoc strreset_chunk in sctp_generate_reconf_event
Yang Yingliang (2):
clk: sunxi: sun9i-mmc: check return value after calling
platform_get_resource()
net: fec: add missing of_node_put() in fec_enet_init_stop_mode()
YueHaibing (1):
pinctrl: mediatek: moore: Fix build error
Zheyu Ma (2):
iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on()
ASoC: wm8731: Disable the regulator when probing fails
Zizhuang Deng (1):
iio: dac: ad5592r: Fix the missing return value.
Zqiang (1):
kasan: prevent cpu_quarantine corruption when CPU offline and cache
shrink occur at same time
liuyacan (1):
net/smc: sync err code when tcp connection was refused
arch/arm/boot/dts/am3517-evm.dts | 45 +++-
arch/arm/boot/dts/am3517-som.dtsi | 9 +
arch/arm/boot/dts/at91-sama5d4_xplained.dts | 4 +-
arch/arm/boot/dts/at91sam9g20ek_common.dtsi | 6 +
arch/arm/boot/dts/imx6qdl-apalis.dtsi | 10 +-
arch/arm/boot/dts/imx6ull-colibri.dtsi | 2 +-
.../boot/dts/logicpd-som-lv-35xx-devkit.dts | 15 ++
.../boot/dts/logicpd-som-lv-37xx-devkit.dts | 15 ++
arch/arm/boot/dts/logicpd-som-lv.dtsi | 15 --
arch/arm/boot/dts/omap3-gta04.dtsi | 2 +
arch/arm/mach-exynos/Kconfig | 1 -
arch/arm/mach-omap2/omap4-common.c | 2 +
.../boot/dts/amlogic/meson-g12b-a311d.dtsi | 40 ----
.../boot/dts/amlogic/meson-g12b-s922x.dtsi | 40 ----
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 20 --
.../boot/dts/freescale/imx8mn-ddr4-evk.dts | 4 +
arch/powerpc/perf/Makefile | 4 +-
arch/riscv/kernel/patch.c | 2 +-
arch/x86/include/asm/microcode.h | 2 +
arch/x86/kernel/cpu/microcode/core.c | 6 +-
arch/x86/lib/usercopy_64.c | 2 +-
arch/x86/pci/xen.c | 6 +-
arch/x86/power/cpu.c | 10 +-
block/blk-iocost.c | 12 +-
drivers/base/arch_topology.c | 2 +-
drivers/bus/sunxi-rsb.c | 2 +
drivers/bus/ti-sysc.c | 16 +-
drivers/clk/sunxi/clk-sun9i-mmc.c | 2 +
drivers/cpufreq/sun50i-cpufreq-nvmem.c | 4 +-
.../drm/amd/amdkfd/kfd_device_queue_manager.c | 83 ++++----
.../drm/amd/display/dc/dcn21/dcn21_resource.c | 1 +
drivers/gpu/drm/i915/i915_reg.h | 2 +-
drivers/iio/dac/ad5446.c | 2 +-
drivers/iio/dac/ad5592r-base.c | 2 +-
drivers/iio/imu/bmi160/bmi160_core.c | 20 +-
.../iio/imu/inv_icm42600/inv_icm42600_i2c.c | 15 +-
drivers/iio/magnetometer/ak8975.c | 1 +
drivers/lightnvm/Kconfig | 2 +-
drivers/memory/renesas-rpc-if.c | 60 ++++--
drivers/mtd/nand/raw/mtk_ecc.c | 12 +-
drivers/mtd/nand/raw/sh_flctl.c | 14 +-
drivers/net/dsa/lantiq_gswip.c | 3 -
.../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 7 +
drivers/net/ethernet/freescale/fec_main.c | 2 +-
drivers/net/ethernet/ibm/ibmvnic.c | 144 ++++---------
drivers/net/ethernet/ibm/ibmvnic.h | 6 -
.../net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 3 +-
.../ethernet/stmicro/stmmac/dwmac-socfpga.c | 12 +-
drivers/net/hippi/rrunner.c | 2 +
drivers/net/phy/marvell10g.c | 2 +-
drivers/net/wireguard/device.c | 3 +-
drivers/phy/motorola/phy-mapphone-mdm6600.c | 3 +-
drivers/phy/samsung/phy-exynos5250-sata.c | 21 +-
drivers/phy/ti/phy-am654-serdes.c | 2 +-
drivers/phy/ti/phy-omap-usb2.c | 2 +-
drivers/pinctrl/mediatek/Kconfig | 1 +
drivers/pinctrl/pinctrl-pistachio.c | 6 +-
drivers/pinctrl/pinctrl-rockchip.c | 45 ++--
drivers/pinctrl/samsung/Kconfig | 11 +-
drivers/pinctrl/stm32/pinctrl-stm32.c | 23 ++-
.../intel/int340x_thermal/int3400_thermal.c | 4 +-
drivers/tty/n_gsm.c | 194 ++++++++++--------
drivers/tty/serial/8250/8250_pci.c | 8 +-
drivers/tty/serial/8250/8250_port.c | 2 +-
drivers/tty/serial/imx.c | 2 +-
drivers/usb/cdns3/gadget.c | 7 +-
drivers/usb/core/quirks.c | 6 +
drivers/usb/dwc3/core.c | 11 +-
drivers/usb/dwc3/drd.c | 11 +-
drivers/usb/dwc3/gadget.c | 31 ++-
drivers/usb/gadget/configfs.c | 2 +
drivers/usb/gadget/function/uvc_queue.c | 2 +
drivers/usb/host/xhci-hub.c | 2 +-
drivers/usb/host/xhci-pci.c | 4 +-
drivers/usb/host/xhci-ring.c | 2 +
drivers/usb/host/xhci.c | 11 +
drivers/usb/misc/uss720.c | 3 +-
drivers/usb/mtu3/mtu3_dr.c | 6 +-
drivers/usb/phy/phy-generic.c | 7 +
drivers/usb/serial/cp210x.c | 2 +
drivers/usb/serial/option.c | 12 ++
drivers/usb/serial/whiteheat.c | 5 +-
drivers/usb/typec/ucsi/ucsi.c | 24 ++-
drivers/video/fbdev/udlfb.c | 14 +-
fs/cifs/smb2ops.c | 8 +
fs/zonefs/super.c | 46 ++++-
include/memory/renesas-rpc-if.h | 1 +
include/net/ip6_tunnel.h | 2 +-
include/net/ip_tunnels.h | 2 +-
include/net/tcp.h | 2 +
lib/hexdump.c | 9 +-
mm/kasan/quarantine.c | 7 +
net/core/lwt_bpf.c | 7 +-
net/dsa/port.c | 2 +
net/ipv4/ip_gre.c | 12 +-
net/ipv4/syncookies.c | 8 +-
net/ipv4/tcp_input.c | 15 +-
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/tcp_output.c | 1 +
net/ipv6/ip6_gre.c | 16 +-
net/ipv6/syncookies.c | 3 +-
net/netfilter/ipvs/ip_vs_conn.c | 2 +-
net/netfilter/nft_set_rbtree.c | 6 +-
net/netfilter/nft_socket.c | 52 +++--
net/sctp/sm_sideeffect.c | 4 +
net/smc/af_smc.c | 2 +
net/tls/tls_device.c | 12 +-
sound/soc/codecs/wm8731.c | 19 +-
.../intel/common/soc-acpi-intel-tgl-match.c | 4 +-
tools/perf/arch/arm64/util/Build | 1 -
tools/perf/arch/arm64/util/machine.c | 27 ---
tools/perf/arch/s390/util/machine.c | 16 --
tools/perf/util/symbol-elf.c | 2 +-
tools/perf/util/symbol.c | 37 +++-
tools/perf/util/symbol.h | 3 +-
116 files changed, 886 insertions(+), 637 deletions(-)
delete mode 100644 tools/perf/arch/arm64/util/machine.c
--
2.20.1
1
121

【会议通知】 SPR: Add core PMU support for SPR KABI问题讨论,时间:2022-08-02 15:30-17:00(UTC+08:00),
by Meeting Book 02 Aug '22
by Meeting Book 02 Aug '22
02 Aug '22
会议主题 Subject
Intel SPR: Add core PMU support for SPR KABI问题讨论
会议时间 Time
2022-08-02 15:30-17:00 (UTC+08:00)Beijing
会议地点 Location
Welink视频会议 Welink Video Meeting
加入会议(External)<https://meeting.huaweicloud.com:36443/#/j/98677767>
会议ID Meeting ID
98677767
召集人 Convener
郑增凯
提示 Tips
请点击会议链接加入会议,首次使用请在入会界面根据提示下载并安装客户端后输入ID入会。
Click the meeting link to join the meeting. For the first time, download and install the client as prompted and enter the ID to join the meeting
1
0

[PATCH openEuler-22.09] openeuler_defconfig: enable CONFIG_BPF_SCHED for x86
by Zheng Zengkai 02 Aug '22
by Zheng Zengkai 02 Aug '22
02 Aug '22
From: Ren Zhijie <renzhijie2(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5F6X6
CVE: NA
--------------------------------
Enable CONFIG_BPF_SCHED for x86 by default.
Signed-off-by: Ren Zhijie <renzhijie2(a)huawei.com>
---
arch/x86/configs/openeuler_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig
index f013c7b95881..bc9d7ee3812c 100644
--- a/arch/x86/configs/openeuler_defconfig
+++ b/arch/x86/configs/openeuler_defconfig
@@ -235,6 +235,7 @@ CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
CONFIG_KALLSYMS_BASE_RELATIVE=y
# CONFIG_BPF_LSM is not set
+CONFIG_BPF_SCHED=y
CONFIG_BPF_SYSCALL=y
CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y
CONFIG_BPF_JIT_ALWAYS_ON=y
--
2.20.1
1
0

[PATCH openEuler-1.0-LTS 1/3] fbmem: Check virtual screen sizes in fb_set_var()
by Yongqiang Liu 01 Aug '22
by Yongqiang Liu 01 Aug '22
01 Aug '22
From: Helge Deller <deller(a)gmx.de>
mainline inclusion
from mainline-v5.19-rc6
commit 6c11df58fd1ac0aefcb3b227f72769272b939e56
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5IQ4M
CVE: CVE-2021-33655
--------------------------------
Verify that the fbdev or drm driver correctly adjusted the virtual
screen sizes. On failure report the failing driver and reject the screen
size change.
Signed-off-by: Helge Deller <deller(a)gmx.de>
Reviewed-by: Geert Uytterhoeven <geert(a)linux-m68k.org>
Cc: stable(a)vger.kernel.org # v5.4+
Signed-off-by: Chen Jun <chenjun102(a)huawei.com>
Conflicts:
drivers/video/fbdev/core/fbmem.c
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Weilong Chen <chenweilong(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
drivers/video/fbdev/core/fbmem.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index c48f083d522a..43a446416843 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -996,6 +996,16 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
if (ret)
goto done;
+ /* verify that virtual resolution >= physical resolution */
+ if (var->xres_virtual < var->xres ||
+ var->yres_virtual < var->yres) {
+ pr_warn("WARNING: fbcon: Driver '%s' missed to adjust virtual screen size (%ux%u vs. %ux%u)\n",
+ info->fix.id,
+ var->xres_virtual, var->yres_virtual,
+ var->xres, var->yres);
+ return -EINVAL;
+ }
+
if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) {
struct fb_var_screeninfo old_var;
struct fb_videomode mode;
--
2.25.1
1
2

[PATCH openEuler-1.0-LTS] xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in xfrm_bundle_lookup()
by Yongqiang Liu 01 Aug '22
by Yongqiang Liu 01 Aug '22
01 Aug '22
From: Hangyu Hua <hbh25y(a)gmail.com>
stable inclusion
from stable-v4.19.254
commit fdb4fba1ba8512fa579a9d091dcb6c410f82f96a
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I5JMHA
CVE: CVE-2022-36879
--------------------------------
[ Upstream commit f85daf0e725358be78dfd208dea5fd665d8cb901 ]
xfrm_policy_lookup() will call xfrm_pol_hold_rcu() to get a refcount of
pols[0]. This refcount can be dropped in xfrm_expand_policies() when
xfrm_expand_policies() return error. pols[0]'s refcount is balanced in
here. But xfrm_bundle_lookup() will also call xfrm_pols_put() with
num_pols == 1 to drop this refcount when xfrm_expand_policies() return
error.
This patch also fix an illegal address access. pols[0] will save a error
point when xfrm_policy_lookup fails. This lead to xfrm_pols_put to resolve
an illegal address in xfrm_bundle_lookup's error path.
Fix these by setting num_pols = 0 in xfrm_expand_policies()'s error path.
Fixes: 80c802f3073e ("xfrm: cache bundles instead of policies for outgoing flows")
Signed-off-by: Hangyu Hua <hbh25y(a)gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert(a)secunet.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Zhengchao Shao <shaozhengchao(a)huawei.com>
Reviewed-by: Xiu Jianfeng <xiujianfeng(a)huawei.com>
Reviewed-by: Wei Yongjun <weiyongjun1(a)huawei.com>
Signed-off-by: Yongqiang Liu <liuyongqiang13(a)huawei.com>
---
net/xfrm/xfrm_policy.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index e9aea82f370d..408e3f34d16c 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1703,8 +1703,10 @@ static int xfrm_expand_policies(const struct flowi *fl, u16 family,
*num_xfrms = 0;
return 0;
}
- if (IS_ERR(pols[0]))
+ if (IS_ERR(pols[0])) {
+ *num_pols = 0;
return PTR_ERR(pols[0]);
+ }
*num_xfrms = pols[0]->xfrm_nr;
@@ -1719,6 +1721,7 @@ static int xfrm_expand_policies(const struct flowi *fl, u16 family,
if (pols[1]) {
if (IS_ERR(pols[1])) {
xfrm_pols_put(pols, *num_pols);
+ *num_pols = 0;
return PTR_ERR(pols[1]);
}
(*num_pols)++;
--
2.25.1
1
0